├── !Penting.txt ├── assets ├── css │ └── chat.css ├── dist │ ├── emojionearea.css │ ├── emojionearea.js │ ├── emojionearea.min.css │ └── emojionearea.min.js ├── image │ └── profile │ │ ├── kuliahKoding.png │ │ ├── roni.jpg │ │ └── shadiq.jpg ├── js │ ├── chat.js │ └── login.js └── php │ ├── cariTemanObrolan.php │ ├── cekLogin.php │ ├── daftarObrolan.php │ ├── historiObrolan.php │ ├── kirimPesan.php │ ├── koneksi.php │ └── monitoringObrolan.php ├── index.html ├── pages ├── chat.html └── tes.php ├── readme.md └── sql.sql /!Penting.txt: -------------------------------------------------------------------------------- 1 | # contoh aplikasi web chat ini bersifat open source dan untuk belajar 2 | # Di buat dan di kembangkan oleh shadiq al mughni 3 | 4 | # Info aplikasi 5 | 6 | - Web chat ini berjalan secara realtime untuk melakukan kirim pesan dan update pesan baru 7 | - Web chat ini based on jquery dan native php tanpa memakai plugin 8 | 9 | # fitur 10 | 11 | - Menggunakan emoji 12 | - Realtime kirim pesan 13 | - Realtime updating database 14 | - Realtime pencarian teman 15 | 16 | # Info 17 | 18 | - Anda bisa mengembangkan script ini sesuai kreatifitas anda 19 | 20 | # Paling penting 21 | 22 | - Jika ada pertanyaan, atau mau belajar" bareng bisa langsung tanyakan ke email ini 23 | shadiqalmughni12@gmail.com 24 | ataupun WA : 082216540312 25 | Pantengin terus di facebook ya : https://www.facebook.com/kuliahkoding -------------------------------------------------------------------------------- /assets/css/chat.css: -------------------------------------------------------------------------------- 1 | .container { 2 | max-width: 1170px; 3 | margin: auto; 4 | } 5 | 6 | img { 7 | max-width: 100%; 8 | } 9 | 10 | .inbox_people { 11 | background: #f8f8f8 none repeat scroll 0 0; 12 | float: left; 13 | overflow: hidden; 14 | width: 40%; 15 | border-right: 1px solid #c4c4c4; 16 | } 17 | 18 | .inbox_msg { 19 | border: 1px solid #c4c4c4; 20 | clear: both; 21 | overflow: hidden; 22 | } 23 | 24 | .top_spac { 25 | margin: 20px 0 0; 26 | } 27 | 28 | 29 | .recent_heading { 30 | float: left; 31 | width: 40%; 32 | } 33 | 34 | .srch_bar { 35 | display: inline-block; 36 | text-align: right; 37 | width: 60%; 38 | } 39 | 40 | .headind_srch { 41 | padding: 10px 29px 10px 20px; 42 | overflow: hidden; 43 | border-bottom: 1px solid #c4c4c4; 44 | } 45 | 46 | .recent_heading h4 { 47 | color: #05728f; 48 | font-size: 21px; 49 | margin: auto; 50 | } 51 | 52 | .srch_bar input { 53 | border: 1px solid #cdcdcd; 54 | border-width: 0 0 1px 0; 55 | width: 80%; 56 | padding: 2px 0 4px 6px; 57 | background: none; 58 | } 59 | 60 | .srch_bar .input-group-addon button { 61 | background: rgba(0, 0, 0, 0) none repeat scroll 0 0; 62 | border: medium none; 63 | padding: 0; 64 | color: #707070; 65 | font-size: 18px; 66 | } 67 | 68 | .srch_bar .input-group-addon { 69 | margin: 0 0 0 -27px; 70 | } 71 | 72 | .chat_ib h5 { 73 | font-size: 15px; 74 | color: #464646; 75 | margin: 0 0 8px 0; 76 | } 77 | 78 | .chat_ib h5 span { 79 | font-size: 13px; 80 | float: right; 81 | } 82 | 83 | .chat_ib p { 84 | font-size: 14px; 85 | color: #989898; 86 | margin: auto 87 | } 88 | 89 | .chat_img { 90 | float: left; 91 | width: 11%; 92 | } 93 | 94 | .chat_ib { 95 | float: left; 96 | padding: 0 0 0 15px; 97 | width: 88%; 98 | } 99 | 100 | .chat_people { 101 | overflow: hidden; 102 | clear: both; 103 | } 104 | 105 | .chat_list { 106 | border-bottom: 1px solid #c4c4c4; 107 | margin: 0; 108 | padding: 18px 16px 10px; 109 | } 110 | 111 | .inbox_chat { 112 | height: 550px; 113 | overflow-y: scroll; 114 | } 115 | 116 | .active_chat { 117 | background: #ebebeb; 118 | } 119 | 120 | .incoming_msg_img { 121 | display: inline-block; 122 | width: 6%; 123 | } 124 | 125 | .received_msg { 126 | display: inline-block; 127 | padding: 0 0 0 10px; 128 | vertical-align: top; 129 | width: 92%; 130 | } 131 | 132 | .received_withd_msg p { 133 | background: #ebebeb none repeat scroll 0 0; 134 | border-radius: 3px; 135 | color: #646464; 136 | font-size: 14px; 137 | margin: 0; 138 | padding: 5px 10px 5px 12px; 139 | width: 100%; 140 | } 141 | 142 | .time_date { 143 | color: #747474; 144 | display: block; 145 | font-size: 12px; 146 | margin: 8px 0 0; 147 | } 148 | 149 | .received_withd_msg { 150 | width: 57%; 151 | } 152 | 153 | .mesgs { 154 | float: left; 155 | padding: 30px 15px 0 25px; 156 | width: 60%; 157 | } 158 | 159 | .sent_msg p { 160 | background: #05728f none repeat scroll 0 0; 161 | border-radius: 3px; 162 | font-size: 14px; 163 | margin: 0; 164 | color: #fff; 165 | padding: 5px 10px 5px 12px; 166 | width: 100%; 167 | } 168 | 169 | .outgoing_msg { 170 | overflow: hidden; 171 | margin: 26px 0 26px; 172 | } 173 | 174 | .sent_msg { 175 | float: right; 176 | width: 46%; 177 | } 178 | 179 | .input_msg_write input { 180 | background: rgba(0, 0, 0, 0) none repeat scroll 0 0; 181 | border: medium none; 182 | color: #4c4c4c; 183 | font-size: 15px; 184 | min-height: 48px; 185 | width: 100%; 186 | } 187 | 188 | .type_msg { 189 | width: 40%; 190 | height: 120px; 191 | position: absolute; 192 | bottom: 0px; 193 | } 194 | 195 | .custom-upload { 196 | background-color: #008000; 197 | border: 1px solid #006400; 198 | border-radius: 30px; 199 | cursor: pointer; 200 | color: #fff; 201 | padding: 4px 10px; 202 | } 203 | 204 | .custom-upload input { 205 | left: -9999px; 206 | position: absolute; 207 | } 208 | 209 | .msg_file_btn { 210 | background: #05728f none repeat scroll 0 0; 211 | border: medium none; 212 | border-radius: 50%; 213 | color: #fff; 214 | cursor: pointer; 215 | font-size: 17px; 216 | height: 33px; 217 | position: absolute; 218 | right: 40px; 219 | top: 11px; 220 | width: 33px; 221 | } 222 | 223 | .msg_send_btn { 224 | background: #05728f none repeat scroll 0 0; 225 | border: medium none; 226 | border-radius: 50%; 227 | color: #fff; 228 | cursor: pointer; 229 | font-size: 17px; 230 | height: 33px; 231 | position: absolute; 232 | right: 0; 233 | top: 11px; 234 | width: 33px; 235 | } 236 | 237 | .messaging { 238 | padding: 0 0 50px 0; 239 | } 240 | 241 | .msg_history { 242 | height: 516px; 243 | overflow-y: auto; 244 | } -------------------------------------------------------------------------------- /assets/dist/emojionearea.css: -------------------------------------------------------------------------------- 1 | .dropdown-menu.textcomplete-dropdown[data-strategy="emojionearea"] { 2 | position: absolute; 3 | z-index: 1000; 4 | min-width: 160px; 5 | padding: 5px 0; 6 | margin: 2px 0 0; 7 | font-size: 14px; 8 | text-align: left; 9 | list-style: none; 10 | background-color: #fff; 11 | -webkit-background-clip: padding-box; 12 | background-clip: padding-box; 13 | border: 1px solid #ccc; 14 | border: 1px solid rgba(0, 0, 0, 0.15); 15 | -moz-border-radius: 4px; 16 | -webkit-border-radius: 4px; 17 | border-radius: 4px; 18 | -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); 19 | -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); 20 | box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); } 21 | .dropdown-menu.textcomplete-dropdown[data-strategy="emojionearea"] li.textcomplete-item { 22 | font-size: 14px; 23 | padding: 1px 3px; 24 | border: 0; } 25 | .dropdown-menu.textcomplete-dropdown[data-strategy="emojionearea"] li.textcomplete-item a { 26 | text-decoration: none; 27 | display: block; 28 | height: 100%; 29 | line-height: 1.8em; 30 | padding: 0 1.54em 0 .615em; 31 | color: #4f4f4f; } 32 | .dropdown-menu.textcomplete-dropdown[data-strategy="emojionearea"] li.textcomplete-item:hover, .dropdown-menu.textcomplete-dropdown[data-strategy="emojionearea"] li.textcomplete-item.active { 33 | background-color: #e4e4e4; } 34 | .dropdown-menu.textcomplete-dropdown[data-strategy="emojionearea"] li.textcomplete-item:hover a, .dropdown-menu.textcomplete-dropdown[data-strategy="emojionearea"] li.textcomplete-item.active a { 35 | color: #333; } 36 | .dropdown-menu.textcomplete-dropdown[data-strategy="emojionearea"] li.textcomplete-item .emojioneemoji { 37 | font-size: inherit; 38 | height: 2ex; 39 | width: 2.1ex; 40 | min-height: 20px; 41 | min-width: 20px; 42 | display: inline-block; 43 | margin: 0 5px .2ex 0; 44 | line-height: normal; 45 | vertical-align: middle; 46 | max-width: 100%; 47 | top: 0; } 48 | 49 | .emojionearea-text [class*=emojione-], .emojionearea-text .emojioneemoji { 50 | font-size: inherit; 51 | height: 2ex; 52 | width: 2.1ex; 53 | min-height: 20px; 54 | min-width: 20px; 55 | display: inline-block; 56 | margin: -.2ex .15em .2ex; 57 | line-height: normal; 58 | vertical-align: middle; 59 | max-width: 100%; 60 | top: 0; } 61 | 62 | .emojionearea, .emojionearea * { 63 | -moz-box-sizing: border-box; 64 | -webkit-box-sizing: border-box; 65 | box-sizing: border-box; } 66 | .emojionearea.emojionearea-disable { 67 | position: relative; 68 | background-color: #eee; 69 | -moz-user-select: -moz-none; 70 | -ms-user-select: none; 71 | -webkit-user-select: none; 72 | user-select: none; } 73 | .emojionearea.emojionearea-disable:before { 74 | content: ""; 75 | display: block; 76 | top: 0; 77 | left: 0; 78 | right: 0; 79 | bottom: 0; 80 | z-index: 1; 81 | opacity: 0.3; 82 | position: absolute; 83 | background-color: #eee; } 84 | .emojionearea, .emojionearea.form-control { 85 | display: block; 86 | position: relative !important; 87 | width: 100%; 88 | height: auto; 89 | padding: 0; 90 | font-size: 14px; 91 | border: 0; 92 | background-color: #FFFFFF; 93 | border: 1px solid #CCCCCC; 94 | -moz-border-radius: 3px; 95 | -webkit-border-radius: 3px; 96 | border-radius: 3px; 97 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 98 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 99 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 100 | -moz-transition: border-color 0.15s ease-in-out, -moz-box-shadow 0.15s ease-in-out; 101 | -o-transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; 102 | -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; 103 | transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } 104 | .emojionearea.focused { 105 | border-color: #66AFE9; 106 | outline: 0; 107 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); 108 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); 109 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); } 110 | .emojionearea .emojionearea-editor { 111 | display: block; 112 | height: auto; 113 | min-height: 8em; 114 | max-height: 15em; 115 | overflow: auto; 116 | padding: 6px 24px 6px 12px; 117 | line-height: 1.42857143; 118 | font-size: inherit; 119 | color: #555555; 120 | background-color: transparent; 121 | border: 0; 122 | cursor: text; 123 | margin-right: 1px; 124 | -moz-border-radius: 0; 125 | -webkit-border-radius: 0; 126 | border-radius: 0; 127 | -moz-box-shadow: none; 128 | -webkit-box-shadow: none; 129 | box-shadow: none; } 130 | .emojionearea .emojionearea-editor:empty:before { 131 | content: attr(placeholder); 132 | display: block; 133 | color: #BBBBBB; } 134 | .emojionearea .emojionearea-editor:focus { 135 | border: 0; 136 | outline: 0; 137 | -moz-box-shadow: none; 138 | -webkit-box-shadow: none; 139 | box-shadow: none; } 140 | .emojionearea .emojionearea-editor [class*=emojione-], .emojionearea .emojionearea-editor .emojioneemoji { 141 | font-size: inherit; 142 | height: 2ex; 143 | width: 2.1ex; 144 | min-height: 20px; 145 | min-width: 20px; 146 | display: inline-block; 147 | margin: -.2ex .15em .2ex; 148 | line-height: normal; 149 | vertical-align: middle; 150 | max-width: 100%; 151 | top: 0; } 152 | .emojionearea.emojionearea-inline { 153 | height: 34px; } 154 | .emojionearea.emojionearea-inline > .emojionearea-editor { 155 | height: 32px; 156 | min-height: 20px; 157 | overflow: hidden; 158 | white-space: nowrap; 159 | position: absolute; 160 | top: 0; 161 | left: 12px; 162 | right: 24px; 163 | padding: 6px 0; } 164 | .emojionearea.emojionearea-inline > .emojionearea-button { 165 | top: 4px; } 166 | .emojionearea .emojionearea-button { 167 | z-index: 5; 168 | position: absolute; 169 | right: 3px; 170 | top: 3px; 171 | width: 24px; 172 | height: 24px; 173 | opacity: 0.6; 174 | cursor: pointer; 175 | -moz-transition: opacity 300ms ease-in-out; 176 | -o-transition: opacity 300ms ease-in-out; 177 | -webkit-transition: opacity 300ms ease-in-out; 178 | transition: opacity 300ms ease-in-out; } 179 | .emojionearea .emojionearea-button:hover { 180 | opacity: 1; } 181 | .emojionearea .emojionearea-button > div { 182 | display: block; 183 | width: 24px; 184 | height: 24px; 185 | position: absolute; 186 | -moz-transition: all 400ms ease-in-out; 187 | -o-transition: all 400ms ease-in-out; 188 | -webkit-transition: all 400ms ease-in-out; 189 | transition: all 400ms ease-in-out; } 190 | .emojionearea .emojionearea-button > div.emojionearea-button-open { 191 | background-position: 0 -24px; 192 | filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); 193 | opacity: 1; } 194 | .emojionearea .emojionearea-button > div.emojionearea-button-close { 195 | background-position: 0 0; 196 | -webkit-transform: rotate(-45deg); 197 | -o-transform: rotate(-45deg); 198 | transform: rotate(-45deg); 199 | filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); 200 | opacity: 0; } 201 | .emojionearea .emojionearea-button.active > div.emojionearea-button-open { 202 | -webkit-transform: rotate(45deg); 203 | -o-transform: rotate(45deg); 204 | transform: rotate(45deg); 205 | filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); 206 | opacity: 0; } 207 | .emojionearea .emojionearea-button.active > div.emojionearea-button-close { 208 | -webkit-transform: rotate(0deg); 209 | -o-transform: rotate(0deg); 210 | transform: rotate(0deg); 211 | filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); 212 | opacity: 1; } 213 | .emojionearea .emojionearea-picker { 214 | background: #FFFFFF; 215 | position: absolute; 216 | -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.32); 217 | -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.32); 218 | box-shadow: 0 1px 5px rgba(0, 0, 0, 0.32); 219 | -moz-border-radius: 5px; 220 | -webkit-border-radius: 5px; 221 | border-radius: 5px; 222 | height: 276px; 223 | width: 316px; 224 | top: -15px; 225 | right: -15px; 226 | z-index: 90; 227 | -moz-transition: all 0.25s ease-in-out; 228 | -o-transition: all 0.25s ease-in-out; 229 | -webkit-transition: all 0.25s ease-in-out; 230 | transition: all 0.25s ease-in-out; 231 | filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); 232 | opacity: 0; 233 | -moz-user-select: -moz-none; 234 | -ms-user-select: none; 235 | -webkit-user-select: none; 236 | user-select: none; } 237 | .emojionearea .emojionearea-picker.hidden { 238 | display: none; } 239 | .emojionearea .emojionearea-picker .emojionearea-wrapper { 240 | position: relative; 241 | height: 276px; 242 | width: 316px; } 243 | .emojionearea .emojionearea-picker .emojionearea-wrapper:after { 244 | content: ""; 245 | display: block; 246 | position: absolute; 247 | background-repeat: no-repeat; 248 | z-index: 91; } 249 | .emojionearea .emojionearea-picker .emojionearea-filters { 250 | width: 100%; 251 | position: absolute; 252 | z-index: 95; } 253 | .emojionearea .emojionearea-picker .emojionearea-filters { 254 | background: #F5F7F9; 255 | padding: 0 0 0 7px; 256 | height: 40px; } 257 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter { 258 | display: block; 259 | float: left; 260 | height: 40px; 261 | width: 32px; 262 | filter: inherit; 263 | padding: 7px 1px 0; 264 | cursor: pointer; 265 | -webkit-filter: grayscale(1); 266 | filter: grayscale(1); } 267 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active { 268 | background: #fff; } 269 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active, .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter:hover { 270 | -webkit-filter: grayscale(0); 271 | filter: grayscale(0); } 272 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter > i { 273 | width: 24px; 274 | height: 24px; 275 | top: 0; } 276 | .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter > img { 277 | width: 24px; 278 | height: 24px; 279 | margin: 0 3px; } 280 | .emojionearea .emojionearea-picker .emojionearea-search-panel { 281 | height: 30px; 282 | position: absolute; 283 | z-index: 95; 284 | top: 40px; 285 | left: 0; 286 | right: 0; 287 | padding: 5px 0 5px 8px; } 288 | .emojionearea .emojionearea-picker .emojionearea-search-panel .emojionearea-tones { 289 | float: right; 290 | margin-right: 10px; 291 | margin-top: -1px; } 292 | .emojionearea .emojionearea-picker .emojionearea-tones-panel .emojionearea-tones { 293 | position: absolute; 294 | top: 4px; 295 | left: 171px; } 296 | .emojionearea .emojionearea-picker .emojionearea-search { 297 | float: left; 298 | padding: 0; 299 | height: 20px; 300 | width: 160px; } 301 | .emojionearea .emojionearea-picker .emojionearea-search > input { 302 | outline: none; 303 | width: 160px; 304 | min-width: 160px; 305 | height: 20px; } 306 | .emojionearea .emojionearea-picker .emojionearea-tones { 307 | padding: 0; 308 | width: 120px; 309 | height: 20px; } 310 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone { 311 | display: inline-block; 312 | padding: 0; 313 | border: 0; 314 | vertical-align: middle; 315 | outline: none; 316 | background: transparent; 317 | cursor: pointer; 318 | position: relative; } 319 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-0, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-0:after { 320 | background-color: #ffcf3e; } 321 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-1, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-1:after { 322 | background-color: #fae3c5; } 323 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-2, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-2:after { 324 | background-color: #e2cfa5; } 325 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-3, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-3:after { 326 | background-color: #daa478; } 327 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-4, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-4:after { 328 | background-color: #a78058; } 329 | .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-5, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-5:after { 330 | background-color: #5e4d43; } 331 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone { 332 | width: 20px; 333 | height: 20px; 334 | margin: 0; 335 | background-color: transparent; } 336 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone:after { 337 | content: ""; 338 | position: absolute; 339 | display: block; 340 | top: 4px; 341 | left: 4px; 342 | width: 12px; 343 | height: 12px; } 344 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone.active:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone.active:after { 345 | top: 0; 346 | left: 0; 347 | width: 20px; 348 | height: 20px; } 349 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone { 350 | width: 16px; 351 | height: 16px; 352 | margin: 0px 2px; } 353 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone.active:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone.active:after { 354 | content: ""; 355 | position: absolute; 356 | display: block; 357 | background-color: transparent; 358 | border: 2px solid #fff; 359 | width: 8px; 360 | height: 8px; 361 | top: 2px; 362 | left: 2px; 363 | box-sizing: initial; } 364 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone:after { 365 | -moz-border-radius: 100%; 366 | -webkit-border-radius: 100%; 367 | border-radius: 100%; } 368 | .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone:after { 369 | -moz-border-radius: 1px; 370 | -webkit-border-radius: 1px; 371 | border-radius: 1px; } 372 | .emojionearea .emojionearea-picker .emojionearea-scroll-area { 373 | height: 236px; } 374 | .emojionearea .emojionearea-picker .emojionearea-search-panel + .emojionearea-scroll-area { 375 | height: 206px; } 376 | .emojionearea .emojionearea-picker .emojionearea-scroll-area { 377 | overflow: auto; 378 | overflow-x: hidden; 379 | width: 100%; 380 | position: absolute; 381 | padding: 0 0 5px; } 382 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-emojis-list { 383 | z-index: 1; } 384 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title { 385 | display: block; 386 | font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; 387 | font-size: 13px; 388 | font-weight: normal; 389 | color: #b2b2b2; 390 | background: #FFFFFF; 391 | line-height: 20px; 392 | margin: 0; 393 | padding: 7px 0 5px 6px; } 394 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title:after, .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title:before { 395 | content: " "; 396 | display: block; 397 | clear: both; } 398 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block { 399 | padding: 0 0 0 7px; } 400 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block > .emojionearea-category { 401 | padding: 0 !important; } 402 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block > .emojionearea-category:after, .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block > .emojionearea-category:before { 403 | content: " "; 404 | display: block; 405 | clear: both; } 406 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block:after, .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block:before { 407 | content: " "; 408 | display: block; 409 | clear: both; } 410 | .emojionearea .emojionearea-picker .emojionearea-scroll-area [class*=emojione-] { 411 | -moz-box-sizing: content-box; 412 | -webkit-box-sizing: content-box; 413 | box-sizing: content-box; 414 | margin: 0; 415 | width: 24px; 416 | height: 24px; 417 | top: 0; } 418 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn { 419 | -moz-box-sizing: content-box; 420 | -webkit-box-sizing: content-box; 421 | box-sizing: content-box; 422 | width: 24px; 423 | height: 24px; 424 | float: left; 425 | display: block; 426 | margin: 1px; 427 | padding: 3px; } 428 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn:hover { 429 | -moz-border-radius: 4px; 430 | -webkit-border-radius: 4px; 431 | border-radius: 4px; 432 | background-color: #e4e4e4; 433 | cursor: pointer; } 434 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn i, .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img { 435 | float: left; 436 | display: block; 437 | width: 24px; 438 | height: 24px; } 439 | .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img.lazy-emoji { 440 | filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); 441 | opacity: 0; } 442 | .emojionearea .emojionearea-picker.emojionearea-filters-position-top .emojionearea-filters { 443 | top: 0; 444 | -moz-border-radius-topleft: 5px; 445 | -webkit-border-top-left-radius: 5px; 446 | border-top-left-radius: 5px; 447 | -moz-border-radius-topright: 5px; 448 | -webkit-border-top-right-radius: 5px; 449 | border-top-right-radius: 5px; } 450 | .emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-top .emojionearea-scroll-area { 451 | bottom: 0; } 452 | .emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-bottom .emojionearea-scroll-area { 453 | top: 40px; } 454 | .emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-bottom .emojionearea-search-panel { 455 | top: initial; 456 | bottom: 0; } 457 | .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom .emojionearea-filters { 458 | bottom: 0; 459 | -moz-border-radius-bottomleft: 5px; 460 | -webkit-border-bottom-left-radius: 5px; 461 | border-bottom-left-radius: 5px; 462 | -moz-border-radius-bottomright: 5px; 463 | -webkit-border-bottom-right-radius: 5px; 464 | border-bottom-right-radius: 5px; } 465 | .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-bottom .emojionearea-scroll-area { 466 | top: 0; } 467 | .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-bottom .emojionearea-search-panel { 468 | top: initial; 469 | bottom: 40px; } 470 | .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-top .emojionearea-scroll-area { 471 | top: initial; 472 | bottom: 40px; } 473 | .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-top .emojionearea-search-panel { 474 | top: 0; } 475 | .emojionearea .emojionearea-picker.emojionearea-picker-position-top { 476 | margin-top: -286px; 477 | right: -14px; } 478 | .emojionearea .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after { 479 | width: 19px; 480 | height: 10px; 481 | background-position: -2px -49px; 482 | bottom: -10px; 483 | right: 20px; } 484 | .emojionearea .emojionearea-picker.emojionearea-picker-position-top.emojionearea-filters-position-bottom .emojionearea-wrapper:after { 485 | background-position: -2px -80px; } 486 | .emojionearea .emojionearea-picker.emojionearea-picker-position-left, .emojionearea .emojionearea-picker.emojionearea-picker-position-right { 487 | margin-right: -326px; 488 | top: -8px; } 489 | .emojionearea .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after, .emojionearea .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after { 490 | width: 10px; 491 | height: 19px; 492 | background-position: 0px -60px; 493 | top: 13px; 494 | left: -10px; } 495 | .emojionearea .emojionearea-picker.emojionearea-picker-position-left.emojionearea-filters-position-bottom .emojionearea-wrapper:after, .emojionearea .emojionearea-picker.emojionearea-picker-position-right.emojionearea-filters-position-bottom .emojionearea-wrapper:after { 496 | background-position: right -60px; } 497 | .emojionearea .emojionearea-picker.emojionearea-picker-position-bottom { 498 | margin-top: 10px; 499 | right: -14px; 500 | top: 47px; } 501 | .emojionearea .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after { 502 | width: 19px; 503 | height: 10px; 504 | background-position: -2px -100px; 505 | top: -10px; 506 | right: 20px; } 507 | .emojionearea .emojionearea-picker.emojionearea-picker-position-bottom.emojionearea-filters-position-bottom .emojionearea-wrapper:after { 508 | background-position: -2px -90px; } 509 | .emojionearea .emojionearea-button.active + .emojionearea-picker { 510 | filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); 511 | opacity: 1; } 512 | .emojionearea .emojionearea-button.active + .emojionearea-picker-position-top { 513 | margin-top: -269px; } 514 | .emojionearea .emojionearea-button.active + .emojionearea-picker-position-left, 515 | .emojionearea .emojionearea-button.active + .emojionearea-picker-position-right { 516 | margin-right: -309px; } 517 | .emojionearea .emojionearea-button.active + .emojionearea-picker-position-bottom { 518 | margin-top: -7px; } 519 | .emojionearea.emojionearea-standalone { 520 | display: inline-block; 521 | width: auto; 522 | box-shadow: none; } 523 | .emojionearea.emojionearea-standalone .emojionearea-editor { 524 | min-height: 33px; 525 | position: relative; 526 | padding: 6px 42px 6px 6px; } 527 | .emojionearea.emojionearea-standalone .emojionearea-editor::before { 528 | content: ""; 529 | position: absolute; 530 | top: 4px; 531 | left: 50%; 532 | bottom: 4px; 533 | border-left: 1px solid #e6e6e6; } 534 | .emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder { 535 | background-repeat: no-repeat; 536 | background-position: 20px 4px; } 537 | .emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder .emojioneemoji { 538 | opacity: 0.4; } 539 | .emojionearea.emojionearea-standalone .emojionearea-button { 540 | top: 0; 541 | right: 0; 542 | bottom: 0; 543 | left: 0; 544 | width: auto; 545 | height: auto; } 546 | .emojionearea.emojionearea-standalone .emojionearea-button > div { 547 | right: 6px; 548 | top: 5px; } 549 | .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after, .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after { 550 | right: 23px; } 551 | .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after, .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after { 552 | top: 15px; } 553 | 554 | .emojionearea .emojionearea-button > div, .emojionearea .emojionearea-picker .emojionearea-wrapper:after { 555 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAABuCAYAAADMB4ipAAAHfElEQVRo3u1XS1NT2Rb+9uOcQF4YlAJzLymFUHaLrdxKULvEUNpdTnRqD532f+AHMLMc94gqR1Zbt8rBnUh3YXipPGKwRDoWgXvrYiFUlEdIkPPYZ/dAkwox5yQCVt/bzRrBPnt9e+211/etFeDQDu3ArL+/X37OeqmRWoH7+vpItfWawStF1tfXR+zW9xW5ne0p8loOcAKuCdwpRft60C8a+X5zTvebCqcAvmidf1GGHtqhHdpf1qqKzsrKipyensbi4iKWl5cBAMFgEG1tbYhGo2hpadlbmxseHpaDg4MAgI6ODng8HgBAPp/H/Pw8AODatWvo7e2tvUHrui7v3r2L+fl5XL58GVeuXIHH49m1N5/Py0ePHmF0dBQdHR24desWVFXdtYdXAn/48CHm5+dx8+ZNRKPRigEUDpuenpb3799H4YaOnWh5eVmOj48jFoshGo0STdPkwMCAXF5elqV7BgYGpKZpMhqNklgshrGxMbx580Y6gicSCTDGEIvFAADpdBqpVArJZLK4J5lMIpVKIZ1OAwBisRgYY0gkEs6Rp1IphMNh+Hw+AgCGYQAANE0r7in8Xfjm8/lIOBzGq1evnMHX19fR1NRU/D8UCoFzjnA4XFwLh8PgnCMUChXXmpqakM1mUfVBS62xsZHk83lZWi1nz579ZA0AhBDO4A0NDchkMsWSJIRAURRiVy26rktVVUkmk0EgEHAGP3XqFKamppDP56Vpmrhz5w5u374t/X4/OP+w3TRNZLNZ6LoO0zSRz+dlf38/Ll686Jzz8+fPQwiBeDwOt9tNrl+/jkwmU6yaQpVkMhncuHEDbrebxONxCCEQiUScIw8Gg+TBgwdyZGQEyWRSdnV1kVQqJYeGhrC6ugrGGEKhEHp7e3Hy5EmSTCblvXv30NPTg2AwSA6M/vF4HCMjI7b0/yzh8vv9AIBsNrt34aokuQsLC7skt729varkHtqftUFf++FHsrq0QN3eBvp68Tfvf9Mv12oFCYU7G//e9nVuO7dpNbe2W4M//yQr0p8yRvyBo1Zr++lwLcCt7afD/sBRizJGavrB1dDYYh47Htrq+Kb7jBNwxzfdZ44dD201NLaYVUkU7ozQpuAJBkARwnRZpunN5zaa5hJjiXLH05GeiMd7JEM5zzHGNQBGZvk/Iv0yYVWMvK0zKk1Dl6ahW5RQobjqdjy+wEZn9PKF0n2d0csXPL7AhuKq26GECtPQLdPQZVtn1LlB69p7yRVVSEiDEGJwRd12e4+8PR3piRQidnuPvOWKuk0IMSSkwRVV6Np7WVVbSqvGsgSnlKkAFNPQXdrOtuKqcxtcUTUAhmUJnVJmlleJo3CVHmAaOlPUOmYJkxFKibQsSRkXhr4juKIKO2BHVSwcoLrqCVdUYho6K3YYRRWmoUtdey/tgKtK7rUffiQAsLq08MnbNLe2WwBgB/zHzueFyD8nwlIfbvdx8eU0WV1aKD1cVAMs9+F2j9gUPEEKemEJIe3AnXy4XfkBoNKSZHNthWfX31EA69VKttyHVyIOY1wRwmS6tqNsrr31vXo5k/bUu4gT2cp9lhbm0rzCJpeUUrE0vS63+c7/6uXMbDUWl/ssLczNFrVFddUT09AZpUy1LKvO0DVfPrfR9HxqfNbuEe185l9MFX3o6tIC5YpKFLWOfdQQ93Zu49j0+FDCDtjOp1yaOQCYhs4Y40wI05XfWj8yPT40Ua2ey33mEmMTtp2IUEq0nW3FKeJPGPjRp1Iz2QUuLUu66txG9NLVSK3gBZ+C1lcE54oqKOOCK6rm8QU2unu+u1ANuNynvFsBAG1ubbdMQ5eGviMAFDuP0w3sfMpvQEtb24fOQncU1bXl8R7JnOu+ZNv97XxKJwY6+PNPsrm13drObVqUMlMIU5OWpVHOc96Go5lTnV2fzC/VfAozD7HTCa6olBBa1Imlhbmq2lLuQ5xaW6nCPfnln0Yt7bDUhzhps8cfKH5//uTXmvS81OeLdqI/ZoROzSZrHqG/OvOPzxuhK5VgJTvV2bW3EdqJRABwrvvS/kfoSkoZvXT1YEbociHr7vnuYEfogpBFL109HKH/h0fomnXg3Lff79r7/MmvVbWG7gX4QObzc99+Tz7mHKah05KcW6ahQ9feS6cbMCdgt7eBWJagjCuUAC5tZzuouuo0Spm0hElc9R4cbf4bVl8v1p6WUmCuqEwIs34ruxaeeTy4uJVd67As08UVlVmWoG5vA7FLG3WMmHEupVTyW+vh2cn4DADMTsaTuc21LiGEhzHOnQ6gNtMrJSBMCKHkNt999WLi0S7hejEZH81n174WpukiIMw0dKq66p3Bw50RwhUVXFGJKUy28Xal48VkfKrSlWenhsc23q2cEB9SR7iiItwZIbbgHn8AlDFCCMW7laXjqZnHjkNpaubJzNuVpWZCKChjxOMPVH/QlaW0f/G3ZLqWWl6ce/bvlddp7yFD/w8Z+njoX1+GoZMjgzMAMDkyeLAMnRh+uKveJ0YGD4ahEyODFRk6OfrL/hj67GnckaHPng7vjaGzyYmaGDr77KktQ38H8tqx8Wja+WIAAAAASUVORK5CYII=') !important; } 556 | 557 | .emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder { 558 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAAC/v79T5hyIAAAAAXRSTlMAQObYZgAAABNJREFUCNdjYGNgQEb/P4AQqiAASiUEG6Vit44AAAAASUVORK5CYII=') !important; } 559 | 560 | /*# sourceMappingURL=emojionearea.css.map */ 561 | -------------------------------------------------------------------------------- /assets/dist/emojionearea.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * EmojioneArea v3.4.1 3 | * https://github.com/mervick/emojionearea 4 | * Copyright Andrey Izman and other contributors 5 | * Released under the MIT license 6 | * Date: 2018-04-27T09:03Z 7 | */ 8 | window = ( typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {} ); 9 | document = window.document || {}; 10 | 11 | ; ( function ( factory, global ) { 12 | if ( typeof require === "function" && typeof exports === "object" && typeof module === "object" ) { 13 | 14 | // CommonJS 15 | factory( require( "jquery" ) ); 16 | } else if ( typeof define === "function" && define.amd ) { 17 | 18 | // AMD 19 | define( [ "jquery" ], factory ); 20 | } else { 21 | 22 | // Normal script tag 23 | factory( global.jQuery ); 24 | } 25 | }( function ( $ ) { 26 | "use strict"; 27 | 28 | var unique = 0; 29 | var eventStorage = {}; 30 | var possibleEvents = {}; 31 | var emojione = window.emojione; 32 | var readyCallbacks = []; 33 | function emojioneReady (fn) { 34 | if (emojione) { 35 | fn(); 36 | } else { 37 | readyCallbacks.push(fn); 38 | } 39 | }; 40 | var blankImg = 'data:image/gif;base64,R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw=='; 41 | var slice = [].slice; 42 | var css_class = "emojionearea"; 43 | var emojioneSupportMode = 0; 44 | var invisibleChar = ''; 45 | function trigger(self, event, args) { 46 | var result = true, j = 1; 47 | if (event) { 48 | event = event.toLowerCase(); 49 | do { 50 | var _event = j==1 ? '@' + event : event; 51 | if (eventStorage[self.id][_event] && eventStorage[self.id][_event].length) { 52 | $.each(eventStorage[self.id][_event], function (i, fn) { 53 | return result = fn.apply(self, args|| []) !== false; 54 | }); 55 | } 56 | } while (result && !!j--); 57 | } 58 | return result; 59 | } 60 | function attach(self, element, events, target) { 61 | target = target || function (event, callerEvent) { return $(callerEvent.currentTarget) }; 62 | $.each(events, function(event, link) { 63 | event = $.isArray(events) ? link : event; 64 | (possibleEvents[self.id][link] || (possibleEvents[self.id][link] = [])) 65 | .push([element, event, target]); 66 | }); 67 | } 68 | function getTemplate(template, unicode, shortname) { 69 | var imageType = emojione.imageType, imagePath; 70 | if (imageType=='svg'){ 71 | imagePath = emojione.imagePathSVG; 72 | } else { 73 | imagePath = emojione.imagePathPNG; 74 | } 75 | var friendlyName = ''; 76 | if (shortname) { 77 | friendlyName = shortname.substr(1, shortname.length - 2).replace(/_/g, ' ').replace(/\w\S*/g, function(txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 78 | } 79 | var fname = ''; 80 | if (unicode.uc_base && emojioneSupportMode > 4) { 81 | fname = unicode.uc_base; 82 | unicode = unicode.uc_output.toUpperCase(); 83 | } else { 84 | fname = unicode; 85 | } 86 | template = template.replace('{name}', shortname || '') 87 | .replace('{friendlyName}', friendlyName) 88 | .replace('{img}', imagePath + (emojioneSupportMode < 2 ? fname.toUpperCase() : fname) + '.' + imageType) 89 | .replace('{uni}', unicode); 90 | 91 | if(shortname) { 92 | template = template.replace('{alt}', emojione.shortnameToUnicode(shortname)); 93 | } else { 94 | template = template.replace('{alt}', emojione.convert(unicode)); 95 | } 96 | 97 | return template; 98 | }; 99 | function shortnameTo(str, template, clear) { 100 | return str.replace(/:?\+?[\w_\-]+:?/g, function(shortname) { 101 | shortname = ":" + shortname.replace(/:$/,'').replace(/^:/,'') + ":"; 102 | var unicode = emojione.emojioneList[shortname]; 103 | if (unicode) { 104 | if (emojioneSupportMode > 4) { 105 | return getTemplate(template, unicode, shortname); 106 | } else { 107 | if (emojioneSupportMode > 3) unicode = unicode.unicode; 108 | return getTemplate(template, unicode[unicode.length-1], shortname); 109 | } 110 | } 111 | return clear ? '' : shortname; 112 | }); 113 | }; 114 | function pasteHtmlAtCaret(html) { 115 | var sel, range; 116 | if (window.getSelection) { 117 | sel = window.getSelection(); 118 | if (sel.getRangeAt && sel.rangeCount) { 119 | range = sel.getRangeAt(0); 120 | range.deleteContents(); 121 | var el = document.createElement("div"); 122 | el.innerHTML = html; 123 | var frag = document.createDocumentFragment(), node, lastNode; 124 | while ( (node = el.firstChild) ) { 125 | lastNode = frag.appendChild(node); 126 | } 127 | range.insertNode(frag); 128 | if (lastNode) { 129 | range = range.cloneRange(); 130 | range.setStartAfter(lastNode); 131 | range.collapse(true); 132 | sel.removeAllRanges(); 133 | sel.addRange(range); 134 | } 135 | } 136 | } else if (document.selection && document.selection.type != "Control") { 137 | document.selection.createRange().pasteHTML(html); 138 | } 139 | } 140 | function getEmojioneVersion() { 141 | return window.emojioneVersion || '3.1.2'; 142 | }; 143 | function isObject(variable) { 144 | return typeof variable === 'object'; 145 | }; 146 | function detectVersion(emojione) { 147 | var version; 148 | if (emojione.cacheBustParam) { 149 | version = emojione.cacheBustParam; 150 | if (!isObject(emojione['jsEscapeMap'])) return '1.5.2'; 151 | if (version === "?v=1.2.4") return '2.0.0'; 152 | if (version === "?v=2.0.1") return '2.1.0'; // v2.0.1 || v2.1.0 153 | if (version === "?v=2.1.1") return '2.1.1'; 154 | if (version === "?v=2.1.2") return '2.1.2'; 155 | if (version === "?v=2.1.3") return '2.1.3'; 156 | if (version === "?v=2.1.4") return '2.1.4'; 157 | if (version === "?v=2.2.7") return '2.2.7'; 158 | return '2.2.7'; 159 | } else { 160 | return emojione.emojiVersion; 161 | } 162 | }; 163 | function getSupportMode(version) { 164 | switch (version) { 165 | case '1.5.2': return 0; 166 | case '2.0.0': return 1; 167 | case '2.1.0': 168 | case '2.1.1': return 2; 169 | case '2.1.2': return 3; 170 | case '2.1.3': 171 | case '2.1.4': 172 | case '2.2.7': return 4; 173 | case '3.0.1': 174 | case '3.0.2': 175 | case '3.0.3': 176 | case '3.0': return 5; 177 | case '3.1.0': 178 | case '3.1.1': 179 | case '3.1.2': 180 | case '3.1': 181 | default: return 6; 182 | } 183 | }; 184 | function getDefaultOptions () { 185 | if ($.fn.emojioneArea && $.fn.emojioneArea.defaults) { 186 | return $.fn.emojioneArea.defaults; 187 | } 188 | 189 | var defaultOptions = { 190 | attributes: { 191 | dir : "ltr", 192 | spellcheck : false, 193 | autocomplete : "off", 194 | autocorrect : "off", 195 | autocapitalize : "off", 196 | }, 197 | search : true, 198 | placeholder : null, 199 | emojiPlaceholder : ":smiley:", 200 | searchPlaceholder : "SEARCH", 201 | container : null, 202 | hideSource : true, 203 | shortnames : true, 204 | sprite : true, 205 | pickerPosition : "top", // top | bottom | right 206 | filtersPosition : "top", // top | bottom 207 | searchPosition : "top", // top | bottom 208 | hidePickerOnBlur : true, 209 | buttonTitle : "Use the TAB key to insert emoji faster", 210 | tones : true, 211 | tonesStyle : "bullet", // bullet | radio | square | checkbox 212 | inline : null, // null - auto 213 | saveEmojisAs : "unicode", // unicode | shortname | image 214 | shortcuts : true, 215 | autocomplete : true, 216 | autocompleteTones : false, 217 | standalone : false, 218 | useInternalCDN : true, // Use the self loading mechanism 219 | imageType : "png", // Default image type used by internal CDN 220 | recentEmojis : true, 221 | textcomplete: { 222 | maxCount : 15, 223 | placement : null // null - default | top | absleft | absright 224 | } 225 | }; 226 | 227 | var supportMode = !emojione ? getSupportMode(getEmojioneVersion()) : getSupportMode(detectVersion(emojione)); 228 | 229 | if (supportMode > 4) { 230 | defaultOptions.filters = { 231 | tones: { 232 | title: "Diversity", 233 | emoji: "open_hands raised_hands palms_up_together clap pray thumbsup thumbsdown punch fist left_facing_fist right_facing_fist " + 234 | "fingers_crossed v metal love_you_gesture ok_hand point_left point_right point_up_2 point_down point_up raised_hand " + 235 | "raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ear " + 236 | "nose baby boy girl man woman blond-haired_woman blond-haired_man older_man older_woman " + 237 | "man_with_chinese_cap woman_wearing_turban man_wearing_turban woman_police_officer " + 238 | "man_police_officer woman_construction_worker man_construction_worker " + 239 | "woman_guard man_guard woman_detective man_detective woman_health_worker man_health_worker " + 240 | "woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher " + 241 | "man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker " + 242 | "man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist " + 243 | "woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge " + 244 | "man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman " + 245 | "breast_feeding woman_bowing man_bowing man_tipping_hand woman_tipping_hand " + 246 | "man_gesturing_no woman_gesturing_no man_gesturing_ok woman_gesturing_ok " + 247 | "man_raising_hand woman_raising_hand woman_facepalming man_facepalming " + 248 | "woman_shrugging man_shrugging man_pouting woman_pouting " + 249 | "man_frowning woman_frowning man_getting_haircut woman_getting_haircut " + 250 | "man_getting_face_massage woman_getting_face_massage man_in_business_suit_levitating dancer man_dancing " + 251 | "woman_walking man_walking woman_running man_running adult child older_adult " + 252 | "bearded_person woman_with_headscarf woman_mage man_mage " + 253 | "woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf " + 254 | "snowboarder woman_lifting_weights man_lifting_weights woman_cartwheeling " + 255 | "man_cartwheeling woman_bouncing_ball man_bouncing_ball " + 256 | "woman_playing_handball man_playing_handball woman_golfing man_golfing " + 257 | "woman_surfing man_surfing woman_swimming man_swimming woman_playing_water_polo " + 258 | "man_playing_water_polo woman_rowing_boat man_rowing_boat " + 259 | "horse_racing woman_biking man_biking woman_mountain_biking " + 260 | "man_mountain_biking woman_juggling man_juggling " + 261 | "woman_in_steamy_room man_in_steamy_room woman_climbing " + 262 | "man_climbing woman_in_lotus_position man_in_lotus_position bath person_in_bed" 263 | }, 264 | 265 | recent: { 266 | icon: "clock3", 267 | title: "Recent", 268 | emoji: "" 269 | }, 270 | 271 | smileys_people: { 272 | icon: "yum", 273 | title: "Smileys & People", 274 | emoji: "grinning smiley smile grin laughing sweat_smile joy rofl relaxed blush innocent slight_smile upside_down " + 275 | "wink relieved crazy_face star_struck heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes yum " + 276 | "stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth hugging nerd sunglasses " + 277 | "cowboy smirk unamused disappointed pensive worried face_with_raised_eyebrow face_with_monocle confused slight_frown " + 278 | "frowning2 persevere confounded tired_face weary triumph angry rage face_with_symbols_over_mouth " + 279 | "no_mouth neutral_face expressionless hushed frowning anguished open_mouth astonished dizzy_face exploding_head flushed scream " + 280 | "fearful cold_sweat cry disappointed_relieved drooling_face sob sweat sleepy sleeping rolling_eyes thinking " + 281 | "shushing_face face_with_hand_over_mouth lying_face grimacing zipper_mouth face_vomiting nauseated_face sneezing_face mask thermometer_face " + 282 | "head_bandage smiling_imp imp japanese_ogre japanese_goblin poop ghost skull skull_crossbones alien space_invader " + 283 | "robot jack_o_lantern clown smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face " + 284 | "pouting_cat open_hands raised_hands palms_up_together clap pray handshake thumbsup thumbsdown punch fist left_facing_fist " + 285 | "right_facing_fist fingers_crossed v metal love_you_gesture ok_hand point_left point_right point_up_2 point_down point_up " + 286 | "raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie " + 287 | "nail_care ring lipstick kiss lips tongue ear nose footprints eye eyes speaking_head bust_in_silhouette " + 288 | "busts_in_silhouette baby boy girl man woman blond-haired_woman blond_haired_man older_man older_woman " + 289 | "man_with_chinese_cap woman_wearing_turban man_wearing_turban woman_police_officer police_officer " + 290 | "woman_construction_worker construction_worker woman_guard guard woman_detective detective woman_health_worker " + 291 | "man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer " + 292 | "woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist " + 293 | "woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist " + 294 | "man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge " + 295 | "man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman breast_feeding woman_bowing " + 296 | "man_bowing woman_tipping_hand man_tipping_hand woman_gesturing_no man_gesturing_no woman_gesturing_ok " + 297 | "man_gesturing_ok woman_raising_hand man_raising_hand woman_facepalming man_facepalming woman_shrugging " + 298 | "man_shrugging woman_pouting man_pouting woman_frowning man_frowning woman_getting_haircut man_getting_haircut " + 299 | "woman_getting_face_massage man_getting_face_massage man_in_business_suit_levitating dancer man_dancing women_with_bunny_ears_partying " + 300 | "men_with_bunny_ears_partying woman_walking man_walking woman_running man_running couple two_women_holding_hands " + 301 | "two_men_holding_hands couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb " + 302 | "family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb " + 303 | "family_mmbb family_mmgg family_woman_boy family_woman_girl family_woman_girl_boy family_woman_boy_boy " + 304 | "family_woman_girl_girl family_man_boy family_man_girl family_man_girl_boy family_man_boy_boy family_man_girl_girl " + 305 | "bearded_person woman_with_headscarf woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire " + 306 | "mermaid merman woman_elf man_elf woman_genie man_genie woman_zombie man_zombie " + 307 | "womans_clothes shirt jeans necktie dress bikini kimono high_heel sandal boot mans_shoe athletic_shoe womans_hat " + 308 | "tophat mortar_board crown helmet_with_cross school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses " + 309 | "closed_umbrella umbrella2 brain billed_cap scarf gloves coat socks " 310 | }, 311 | 312 | animals_nature: { 313 | icon: "hamster", 314 | title: "Animals & Nature", 315 | emoji: "dog cat mouse hamster rabbit fox bear panda_face koala tiger lion_face cow pig pig_nose frog monkey_face see_no_evil " + 316 | "hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick duck eagle owl bat wolf boar " + 317 | "horse unicorn bee bug butterfly snail shell beetle ant spider spider_web turtle snake lizard scorpion crab squid octopus shrimp " + 318 | "tropical_fish fish blowfish dolphin shark whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 deer dromedary_camel camel " + 319 | "elephant rhino gorilla racehorse pig2 goat ram sheep dog2 poodle cat2 rooster turkey dove rabbit2 mouse2 rat chipmunk dragon " + 320 | "giraffe zebra hedgehog sauropod t_rex cricket dragon_face feet cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover " + 321 | "bamboo tanabata_tree leaves fallen_leaf maple_leaf mushroom ear_of_rice bouquet tulip rose wilted_rose sunflower blossom " + 322 | "cherry_blossom hibiscus earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon " + 323 | "waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face " + 324 | "full_moon_with_face sun_with_face first_quarter_moon_with_face last_quarter_moon_with_face crescent_moon dizzy star star2 " + 325 | "sparkles zap fire boom comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud rainbow cloud " + 326 | "cloud_rain thunder_cloud_rain cloud_lightning cloud_snow snowman2 snowman snowflake wind_blowing_face dash cloud_tornado " + 327 | "fog ocean droplet sweat_drops umbrella " 328 | }, 329 | 330 | food_drink: { 331 | icon: "pizza", 332 | title: "Food & Drink", 333 | emoji: "green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple kiwi " + 334 | "avocado tomato eggplant cucumber carrot corn hot_pepper potato sweet_potato chestnut peanuts honey_pot croissant " + 335 | "bread french_bread cheese egg cooking bacon pancakes fried_shrimp poultry_leg meat_on_bone pizza hotdog hamburger " + 336 | "fries stuffed_flatbread taco burrito salad shallow_pan_of_food spaghetti ramen stew fish_cake sushi bento curry " + 337 | "rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard lollipop candy " + 338 | "chocolate_bar popcorn doughnut cookie milk baby_bottle coffee tea sake beer beers champagne_glass wine_glass " + 339 | "tumbler_glass cocktail tropical_drink champagne spoon fork_and_knife fork_knife_plate dumpling fortune_cookie " + 340 | "takeout_box chopsticks bowl_with_spoon cup_with_straw coconut broccoli pie pretzel cut_of_meat sandwich canned_food" 341 | }, 342 | 343 | activity: { 344 | icon: "basketball", 345 | title: "Activity", 346 | emoji: "soccer basketball football baseball tennis volleyball rugby_football 8ball ping_pong badminton goal hockey field_hockey " + 347 | "cricket_game golf bow_and_arrow fishing_pole_and_fish boxing_glove martial_arts_uniform ice_skate ski skier snowboarder " + 348 | "woman_lifting_weights man_lifting_weights person_fencing women_wrestling men_wrestling woman_cartwheeling " + 349 | "man_cartwheeling woman_bouncing_ball man_bouncing_ball woman_playing_handball man_playing_handball woman_golfing " + 350 | "man_golfing woman_surfing man_surfing woman_swimming man_swimming woman_playing_water_polo " + 351 | "man_playing_water_polo woman_rowing_boat man_rowing_boat horse_racing woman_biking man_biking woman_mountain_biking man_mountain_biking " + 352 | "woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position " + 353 | "running_shirt_with_sash medal military_medal first_place second_place " + 354 | "third_place trophy rosette reminder_ribbon ticket tickets circus_tent woman_juggling man_juggling performing_arts art " + 355 | "clapper microphone headphones musical_score musical_keyboard drum saxophone trumpet guitar violin game_die dart bowling " + 356 | "video_game slot_machine sled curling_stone " 357 | }, 358 | 359 | travel_places: { 360 | icon: "rocket", 361 | title: "Travel & Places", 362 | emoji: "red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor " + 363 | "scooter bike motor_scooter motorcycle rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi " + 364 | "aerial_tramway mountain_cableway suspension_railway railway_car train mountain_railway monorail bullettrain_side " + 365 | "bullettrain_front light_rail steam_locomotive train2 metro tram station helicopter airplane_small airplane " + 366 | "airplane_departure airplane_arriving rocket satellite_orbital seat canoe sailboat motorboat speedboat cruise_ship " + 367 | "ferry ship anchor construction fuelpump busstop vertical_traffic_light traffic_light map moyai statue_of_liberty " + 368 | "fountain tokyo_tower european_castle japanese_castle stadium ferris_wheel roller_coaster carousel_horse beach_umbrella " + 369 | "beach island mountain mountain_snow mount_fuji volcano desert camping tent railway_track motorway construction_site " + 370 | "factory house house_with_garden homes house_abandoned office department_store post_office european_post_office hospital " + 371 | "bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine " + 372 | "japan rice_scene park sunrise sunrise_over_mountains stars sparkler fireworks city_sunset city_dusk cityscape " + 373 | "night_with_stars milky_way bridge_at_night foggy flying_saucer" 374 | }, 375 | 376 | objects: { 377 | icon: "bulb", 378 | title: "Objects", 379 | emoji: "watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc " + 380 | "floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver " + 381 | "telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass " + 382 | "hourglass_flowing_sand satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings " + 383 | "dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear " + 384 | "chains gun bomb knife dagger crossed_swords shield smoking coffin urn amphora crystal_ball prayer_beads barber " + 385 | "alembic telescope microscope hole pill syringe thermometer toilet potable_water shower bathtub bath bellhop key " + 386 | "key2 door couch bed sleeping_accommodation frame_photo shopping_bags shopping_cart gift balloon flags ribbon " + 387 | "confetti_ball tada dolls izakaya_lantern wind_chime envelope envelope_with_arrow incoming_envelope e-mail " + 388 | "love_letter inbox_tray outbox_tray package label mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail " + 389 | "postbox postal_horn scroll page_with_curl page_facing_up bookmark_tabs bar_chart chart_with_upwards_trend " + 390 | "chart_with_downwards_trend notepad_spiral calendar_spiral calendar date card_index card_box ballot_box " + 391 | "file_cabinet clipboard file_folder open_file_folder dividers newspaper2 newspaper notebook " + 392 | "notebook_with_decorative_cover ledger closed_book green_book blue_book orange_book books book bookmark link " + 393 | "paperclip paperclips triangular_ruler straight_ruler pushpin round_pushpin scissors pen_ballpoint pen_fountain " + 394 | "black_nib paintbrush crayon pencil pencil2 mag mag_right lock_with_ink_pen closed_lock_with_key lock unlock" 395 | }, 396 | 397 | symbols: { 398 | icon: "heartpulse", 399 | title: "Symbols", 400 | emoji: "heart orange_heart yellow_heart green_heart blue_heart purple_heart black_heart broken_heart heart_exclamation two_hearts " + 401 | "revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent " + 402 | "om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus " + 403 | "aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom accept radioactive " + 404 | "biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs white_flower " + 405 | "ideograph_advantage secret congratulations u5408 u6e80 u5272 u7981 a b ab cl o2 sos x o octagonal_sign no_entry " + 406 | "name_badge no_entry_sign 100 anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage " + 407 | "no_mobile_phones no_smoking exclamation grey_exclamation question grey_question bangbang interrobang low_brightness " + 408 | "high_brightness part_alternation_mark warning children_crossing trident fleur-de-lis beginner recycle " + 409 | "white_check_mark u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark globe_with_meridians " + 410 | "diamond_shape_with_a_dot_inside m cyclone zzz atm wc wheelchair parking u7a7a sa passport_control customs " + 411 | "baggage_claim left_luggage mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko " + 412 | "symbols information_source abc abcd capital_abcd ng ok up cool new free zero one two three four five six seven " + 413 | "eight nine keycap_ten 1234 hash asterisk arrow_forward pause_button play_pause stop_button record_button eject " + 414 | "track_next track_previous fast_forward rewind arrow_double_up arrow_double_down arrow_backward arrow_up_small " + 415 | "arrow_down_small arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left " + 416 | "arrow_upper_left arrow_up_down left_right_arrow arrow_right_hook leftwards_arrow_with_hook arrow_heading_up " + 417 | "arrow_heading_down twisted_rightwards_arrows repeat repeat_one arrows_counterclockwise arrows_clockwise " + 418 | "musical_note notes heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign " + 419 | "currency_exchange tm copyright registered wavy_dash curly_loop loop end back on top soon heavy_check_mark " + 420 | "ballot_box_with_check radio_button white_circle black_circle red_circle blue_circle small_red_triangle " + 421 | "small_red_triangle_down small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond " + 422 | "white_square_button black_square_button black_small_square white_small_square black_medium_small_square " + 423 | "white_medium_small_square black_medium_square white_medium_square black_large_square white_large_square speaker " + 424 | "mute sound loud_sound bell no_bell mega loudspeaker speech_left eye_in_speech_bubble speech_balloon thought_balloon " + 425 | "anger_right spades clubs hearts diamonds black_joker flower_playing_cards mahjong clock1 clock2 clock3 clock4 clock5 " + 426 | "clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 " + 427 | "clock730 clock830 clock930 clock1030 clock1130 clock1230" 428 | }, 429 | 430 | flags: { 431 | icon: "flag_gb", 432 | title: "Flags", 433 | emoji: "flag_white flag_black checkered_flag triangular_flag_on_post rainbow_flag flag_af flag_ax flag_al flag_dz flag_as " + 434 | "flag_ad flag_ao flag_ai flag_aq flag_ag flag_ar flag_am flag_aw flag_au flag_at flag_az flag_bs flag_bh flag_bd flag_bb " + 435 | "flag_by flag_be flag_bz flag_bj flag_bm flag_bt flag_bo flag_ba flag_bw flag_br flag_io flag_vg flag_bn flag_bg flag_bf " + 436 | "flag_bi flag_kh flag_cm flag_ca flag_ic flag_cv flag_bq flag_ky flag_cf flag_td flag_cl flag_cn flag_cx flag_cc flag_co " + 437 | "flag_km flag_cg flag_cd flag_ck flag_cr flag_ci flag_hr flag_cu flag_cw flag_cy flag_cz flag_dk flag_dj flag_dm flag_do " + 438 | "flag_ec flag_eg flag_sv flag_gq flag_er flag_ee flag_et flag_eu flag_fk flag_fo flag_fj flag_fi flag_fr flag_gf flag_pf " + 439 | "flag_tf flag_ga flag_gm flag_ge flag_de flag_gh flag_gi flag_gr flag_gl flag_gd flag_gp flag_gu flag_gt flag_gg flag_gn " + 440 | "flag_gw flag_gy flag_ht flag_hn flag_hk flag_hu flag_is flag_in flag_id flag_ir flag_iq flag_ie flag_im flag_il flag_it " + 441 | "flag_jm flag_jp crossed_flags flag_je flag_jo flag_kz flag_ke flag_ki flag_xk flag_kw flag_kg flag_la flag_lv flag_lb " + 442 | "flag_ls flag_lr flag_ly flag_li flag_lt flag_lu flag_mo flag_mk flag_mg flag_mw flag_my flag_mv flag_ml flag_mt flag_mh " + 443 | "flag_mq flag_mr flag_mu flag_yt flag_mx flag_fm flag_md flag_mc flag_mn flag_me flag_ms flag_ma flag_mz flag_mm flag_na " + 444 | "flag_nr flag_np flag_nl flag_nc flag_nz flag_ni flag_ne flag_ng flag_nu flag_nf flag_kp flag_mp flag_no flag_om flag_pk " + 445 | "flag_pw flag_ps flag_pa flag_pg flag_py flag_pe flag_ph flag_pn flag_pl flag_pt flag_pr flag_qa flag_re flag_ro flag_ru " + 446 | "flag_rw flag_ws flag_sm flag_st flag_sa flag_sn flag_rs flag_sc flag_sl flag_sg flag_sx flag_sk flag_si flag_gs flag_sb " + 447 | "flag_so flag_za flag_kr flag_ss flag_es flag_lk flag_bl flag_sh flag_kn flag_lc flag_pm flag_vc flag_sd flag_sr flag_sz " + 448 | "flag_se flag_ch flag_sy flag_tw flag_tj flag_tz flag_th flag_tl flag_tg flag_tk flag_to flag_tt flag_tn flag_tr flag_tm " + 449 | "flag_tc flag_tv flag_vi flag_ug flag_ua flag_ae flag_gb flag_us flag_uy flag_uz flag_vu flag_va flag_ve flag_vn flag_wf " + 450 | "flag_eh flag_ye flag_zm flag_zw flag_ac flag_ta flag_bv flag_hm flag_sj flag_um flag_ea flag_cp flag_dg flag_mf " + 451 | "united_nations england scotland wales" 452 | } 453 | }; 454 | } else { 455 | defaultOptions.filters = { 456 | tones: { 457 | title: "Diversity", 458 | emoji: "santa runner surfer swimmer lifter ear nose point_up_2 point_down point_left point_right punch " + 459 | "wave ok_hand thumbsup thumbsdown clap open_hands boy girl man woman cop bride_with_veil person_with_blond_hair " + 460 | "man_with_gua_pi_mao man_with_turban older_man grandma baby construction_worker princess angel " + 461 | "information_desk_person guardsman dancer nail_care massage haircut muscle spy hand_splayed middle_finger " + 462 | "vulcan no_good ok_woman bow raising_hand raised_hands person_frowning person_with_pouting_face pray rowboat " + 463 | "bicyclist mountain_bicyclist walking bath metal point_up basketball_player fist raised_hand v writing_hand" 464 | }, 465 | 466 | recent: { 467 | icon: "clock3", 468 | title: "Recent", 469 | emoji: "" 470 | }, 471 | 472 | smileys_people: { 473 | icon: "yum", 474 | title: "Smileys & People", 475 | emoji: "grinning grimacing grin joy smiley smile sweat_smile laughing innocent wink blush slight_smile " + 476 | "upside_down relaxed yum relieved heart_eyes kissing_heart kissing kissing_smiling_eyes " + 477 | "kissing_closed_eyes stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue " + 478 | "money_mouth nerd sunglasses hugging smirk no_mouth neutral_face expressionless unamused rolling_eyes " + 479 | "thinking flushed disappointed worried angry rage pensive confused slight_frown frowning2 persevere " + 480 | "confounded tired_face weary triumph open_mouth scream fearful cold_sweat hushed frowning anguished " + 481 | "cry disappointed_relieved sleepy sweat sob dizzy_face astonished zipper_mouth mask thermometer_face " + 482 | "head_bandage sleeping zzz poop smiling_imp imp japanese_ogre japanese_goblin skull ghost alien robot " + 483 | "smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face " + 484 | "pouting_cat raised_hands clap wave thumbsup thumbsdown punch fist v ok_hand raised_hand open_hands " + 485 | "muscle pray point_up point_up_2 point_down point_left point_right middle_finger hand_splayed metal " + 486 | "vulcan writing_hand nail_care lips tongue ear nose eye eyes bust_in_silhouette busts_in_silhouette " + 487 | "speaking_head baby boy girl man woman person_with_blond_hair older_man older_woman man_with_gua_pi_mao " + 488 | "man_with_turban cop construction_worker guardsman spy santa angel princess bride_with_veil walking " + 489 | "runner dancer dancers couple two_men_holding_hands two_women_holding_hands bow information_desk_person " + 490 | "no_good ok_woman raising_hand person_with_pouting_face person_frowning haircut massage couple_with_heart " + 491 | "couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg " + 492 | "family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb " + 493 | "family_mmgg womans_clothes shirt jeans necktie dress bikini kimono lipstick kiss footprints high_heel " + 494 | "sandal boot mans_shoe athletic_shoe womans_hat tophat helmet_with_cross mortar_board crown school_satchel " + 495 | "pouch purse handbag briefcase eyeglasses dark_sunglasses ring closed_umbrella" 496 | }, 497 | 498 | animals_nature: { 499 | icon: "hamster", 500 | title: "Animals & Nature", 501 | emoji: "dog cat mouse hamster rabbit bear panda_face koala tiger lion_face cow pig pig_nose frog " + 502 | "octopus monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick " + 503 | "hatching_chick hatched_chick wolf boar horse unicorn bee bug snail beetle ant spider scorpion crab " + 504 | "snake turtle tropical_fish fish blowfish dolphin whale whale2 crocodile leopard tiger2 water_buffalo " + 505 | "ox cow2 dromedary_camel camel elephant goat ram sheep racehorse pig2 rat mouse2 rooster turkey dove " + 506 | "dog2 poodle cat2 rabbit2 chipmunk feet dragon dragon_face cactus christmas_tree evergreen_tree " + 507 | "deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves " + 508 | "fallen_leaf maple_leaf ear_of_rice hibiscus sunflower rose tulip blossom cherry_blossom bouquet " + 509 | "mushroom chestnut jack_o_lantern shell spider_web earth_americas earth_africa earth_asia full_moon " + 510 | "waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon " + 511 | "first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face first_quarter_moon_with_face " + 512 | "last_quarter_moon_with_face sun_with_face crescent_moon star star2 dizzy sparkles comet sunny " + 513 | "white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud cloud cloud_rain " + 514 | "thunder_cloud_rain cloud_lightning zap fire boom snowflake cloud_snow snowman2 snowman wind_blowing_face " + 515 | "dash cloud_tornado fog umbrella2 umbrella droplet sweat_drops ocean" 516 | }, 517 | 518 | food_drink: { 519 | icon: "pizza", 520 | title: "Food & Drink", 521 | emoji: "green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach " + 522 | "pineapple tomato eggplant hot_pepper corn sweet_potato honey_pot bread cheese poultry_leg meat_on_bone " + 523 | "fried_shrimp egg hamburger fries hotdog pizza spaghetti taco burrito ramen stew fish_cake sushi bento " + 524 | "curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard candy " + 525 | "lollipop chocolate_bar popcorn doughnut cookie beer beers wine_glass cocktail tropical_drink champagne " + 526 | "sake tea coffee baby_bottle fork_and_knife fork_knife_plate" 527 | }, 528 | 529 | activity: { 530 | icon: "basketball", 531 | title: "Activity", 532 | emoji: "soccer basketball football baseball tennis volleyball rugby_football 8ball golf golfer ping_pong " + 533 | "badminton hockey field_hockey cricket ski skier snowboarder ice_skate bow_and_arrow fishing_pole_and_fish " + 534 | "rowboat swimmer surfer bath basketball_player lifter bicyclist mountain_bicyclist horse_racing levitate " + 535 | "trophy running_shirt_with_sash medal military_medal reminder_ribbon rosette ticket tickets performing_arts " + 536 | "art circus_tent microphone headphones musical_score musical_keyboard saxophone trumpet guitar violin " + 537 | "clapper video_game space_invader dart game_die slot_machine bowling" 538 | }, 539 | 540 | travel_places: { 541 | icon: "rocket", 542 | title: "Travel & Places", 543 | emoji: "red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck " + 544 | "articulated_lorry tractor motorcycle bike rotating_light oncoming_police_car oncoming_bus " + 545 | "oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car " + 546 | "train monorail bullettrain_side bullettrain_front light_rail mountain_railway steam_locomotive train2 " + 547 | "metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving sailboat " + 548 | "motorboat speedboat ferry cruise_ship rocket satellite_orbital seat anchor construction fuelpump busstop " + 549 | "vertical_traffic_light traffic_light checkered_flag ship ferris_wheel roller_coaster carousel_horse " + 550 | "construction_site foggy tokyo_tower factory fountain rice_scene mountain mountain_snow mount_fuji volcano " + 551 | "japan camping tent park motorway railway_track sunrise sunrise_over_mountains desert beach island " + 552 | "city_sunset city_dusk cityscape night_with_stars bridge_at_night milky_way stars sparkler fireworks " + 553 | "rainbow homes european_castle japanese_castle stadium statue_of_liberty house house_with_garden " + 554 | "house_abandoned office department_store post_office european_post_office hospital bank hotel " + 555 | "convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine" 556 | }, 557 | 558 | objects: { 559 | icon: "bulb", 560 | title: "Objects", 561 | emoji: "watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick " + 562 | "compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector " + 563 | "film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs " + 564 | "stopwatch timer alarm_clock clock hourglass_flowing_sand hourglass satellite battery electric_plug bulb " + 565 | "flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales " + 566 | "wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield " + 567 | "smoking skull_crossbones coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope " + 568 | "hole pill syringe thermometer label bookmark toilet shower bathtub key key2 couch sleeping_accommodation " + 569 | "bed door bellhop frame_photo map beach_umbrella moyai shopping_bags balloon flags ribbon gift confetti_ball " + 570 | "tada dolls wind_chime crossed_flags izakaya_lantern envelope envelope_with_arrow incoming_envelope e-mail " + 571 | "love_letter postbox mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail package postal_horn " + 572 | "inbox_tray outbox_tray scroll page_with_curl bookmark_tabs bar_chart chart_with_upwards_trend " + 573 | "chart_with_downwards_trend page_facing_up date calendar calendar_spiral card_index card_box ballot_box " + 574 | "file_cabinet clipboard notepad_spiral file_folder open_file_folder dividers newspaper2 newspaper notebook " + 575 | "closed_book green_book blue_book orange_book notebook_with_decorative_cover ledger books book link " + 576 | "paperclip paperclips scissors triangular_ruler straight_ruler pushpin round_pushpin triangular_flag_on_post " + 577 | "flag_white flag_black closed_lock_with_key lock unlock lock_with_ink_pen pen_ballpoint pen_fountain " + 578 | "black_nib pencil pencil2 crayon paintbrush mag mag_right" 579 | }, 580 | 581 | symbols: { 582 | icon: "heartpulse", 583 | title: "Symbols", 584 | emoji: "heart yellow_heart green_heart blue_heart purple_heart broken_heart heart_exclamation two_hearts " + 585 | "revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross " + 586 | "star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross " + 587 | "place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn " + 588 | "aquarius pisces id atom u7a7a u5272 radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 " + 589 | "u7533 u55b6 u6708 eight_pointed_black_star vs accept white_flower ideograph_advantage secret congratulations " + 590 | "u5408 u6e80 u7981 a b ab cl o2 sos no_entry name_badge no_entry_sign x o anger hotsprings no_pedestrians " + 591 | "do_not_litter no_bicycles non-potable_water underage no_mobile_phones exclamation grey_exclamation question " + 592 | "grey_question bangbang interrobang 100 low_brightness high_brightness trident fleur-de-lis part_alternation_mark " + 593 | "warning children_crossing beginner recycle u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark " + 594 | "white_check_mark diamond_shape_with_a_dot_inside cyclone loop globe_with_meridians m atm sa passport_control " + 595 | "customs baggage_claim left_luggage wheelchair no_smoking wc parking potable_water mens womens baby_symbol " + 596 | "restroom put_litter_in_its_place cinema signal_strength koko ng ok up cool new free zero one two three four " + 597 | "five six seven eight nine ten 1234 arrow_forward pause_button play_pause stop_button record_button track_next " + 598 | "track_previous fast_forward rewind twisted_rightwards_arrows repeat repeat_one arrow_backward arrow_up_small " + 599 | "arrow_down_small arrow_double_up arrow_double_down arrow_right arrow_left arrow_up arrow_down arrow_upper_right " + 600 | "arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrows_counterclockwise " + 601 | "arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down hash asterisk information_source " + 602 | "abc abcd capital_abcd symbols musical_note notes wavy_dash curly_loop heavy_check_mark arrows_clockwise " + 603 | "heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange " + 604 | "copyright registered tm end back on top soon ballot_box_with_check radio_button white_circle black_circle " + 605 | "red_circle large_blue_circle small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond " + 606 | "small_red_triangle black_small_square white_small_square black_large_square white_large_square small_red_triangle_down " + 607 | "black_medium_square white_medium_square black_medium_small_square white_medium_small_square black_square_button " + 608 | "white_square_button speaker sound loud_sound mute mega loudspeaker bell no_bell black_joker mahjong spades " + 609 | "clubs hearts diamonds flower_playing_cards thought_balloon anger_right speech_balloon clock1 clock2 clock3 " + 610 | "clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 " + 611 | "clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230 eye_in_speech_bubble" 612 | }, 613 | 614 | flags: { 615 | icon: "flag_gb", 616 | title: "Flags", 617 | emoji: "ac af al dz ad ao ai ag ar am aw au at az bs bh bd bb by be bz bj bm bt bo ba bw br bn bg bf bi " + 618 | "cv kh cm ca ky cf td flag_cl cn co km cg flag_cd cr hr cu cy cz dk dj dm do ec eg sv gq er ee et fk fo " + 619 | "fj fi fr pf ga gm ge de gh gi gr gl gd gu gt gn gw gy ht hn hk hu is in flag_id ir iq ie il it ci jm jp " + 620 | "je jo kz ke ki xk kw kg la lv lb ls lr ly li lt lu mo mk mg mw my mv ml mt mh mr mu mx fm md mc mn me " + 621 | "ms ma mz mm na nr np nl nc nz ni ne flag_ng nu kp no om pk pw ps pa pg py pe ph pl pt pr qa ro ru rw " + 622 | "sh kn lc vc ws sm st flag_sa sn rs sc sl sg sk si sb so za kr es lk sd sr sz se ch sy tw tj tz th tl " + 623 | "tg to tt tn tr flag_tm flag_tm ug ua ae gb us vi uy uz vu va ve vn wf eh ye zm zw re ax ta io bq cx " + 624 | "cc gg im yt nf pn bl pm gs tk bv hm sj um ic ea cp dg as aq vg ck cw eu gf tf gp mq mp sx ss tc " 625 | } 626 | }; 627 | }; 628 | 629 | return defaultOptions; 630 | }; 631 | function getOptions(options) { 632 | var default_options = getDefaultOptions(); 633 | if (options && options['filters']) { 634 | var filters = default_options.filters; 635 | $.each(options['filters'], function(filter, data) { 636 | if (!isObject(data) || $.isEmptyObject(data)) { 637 | delete filters[filter]; 638 | return; 639 | } 640 | $.each(data, function(key, val) { 641 | filters[filter][key] = val; 642 | }); 643 | }); 644 | options['filters'] = filters; 645 | } 646 | return $.extend({}, default_options, options); 647 | }; 648 | 649 | var saveSelection, restoreSelection; 650 | if (window.getSelection && document.createRange) { 651 | saveSelection = function(el) { 652 | var sel = window.getSelection && window.getSelection(); 653 | if (sel && sel.rangeCount > 0) { 654 | return sel.getRangeAt(0); 655 | } 656 | }; 657 | 658 | restoreSelection = function(el, sel) { 659 | var range = document.createRange(); 660 | range.setStart(sel.startContainer, sel.startOffset); 661 | range.setEnd(sel.endContainer, sel.endOffset) 662 | 663 | sel = window.getSelection(); 664 | sel.removeAllRanges(); 665 | sel.addRange(range); 666 | } 667 | } else if (document.selection && document.body.createTextRange) { 668 | saveSelection = function(el) { 669 | return document.selection.createRange(); 670 | }; 671 | 672 | restoreSelection = function(el, sel) { 673 | var textRange = document.body.createTextRange(); 674 | textRange.moveToElementText(el); 675 | textRange.setStart(sel.startContanier, sel.startOffset); 676 | textRange.setEnd(sel.endContainer, sel.endOffset); 677 | textRange.select(); 678 | }; 679 | } 680 | 681 | 682 | var uniRegexp; 683 | function unicodeTo(str, template) { 684 | return str.replace(uniRegexp, function(unicodeChar) { 685 | var map = emojione[(emojioneSupportMode === 0 ? 'jsecapeMap' : 'jsEscapeMap')]; 686 | if (typeof unicodeChar !== 'undefined' && unicodeChar in map) { 687 | return getTemplate(template, map[unicodeChar], emojione.toShort(unicodeChar)); 688 | } 689 | return unicodeChar; 690 | }); 691 | } 692 | function htmlFromText(str, self) { 693 | str = str 694 | .replace(/&/g, '&') 695 | .replace(//g, '>') 697 | .replace(/"/g, '"') 698 | .replace(/'/g, ''') 699 | .replace(/`/g, '`') 700 | .replace(/(?:\r\n|\r|\n)/g, '\n') 701 | .replace(/(\n+)/g, '
'.$chat.'
43 | '.$chatTime.''.$chat.'
50 | '.$chatTime.''.$chat.'
38 | '.$waktu.' 39 |'.$chat.'
50 | '.$waktu.' 51 |Sign in
52 | 53 | 54 |