834 lines
44 KiB
TypeScript
834 lines
44 KiB
TypeScript
|
|
declare let twemoji: any;
|
|
|
|
interface Window {
|
|
setup_lsx_emoji_picker: (options: JSXEmojiPickerSetupOptions) => Promise<void>;
|
|
}
|
|
|
|
interface JSXEmojiPickerSetupOptions {
|
|
twemoji: boolean
|
|
}
|
|
|
|
if(typeof jQuery !== 'undefined'){
|
|
(function ($, win) {
|
|
'use strict';
|
|
|
|
let setup_options: JSXEmojiPickerSetupOptions;
|
|
let open_pickers: { tag: JQuery, close: () => any}[] = [];
|
|
|
|
const emoji = {
|
|
'people': [
|
|
{'name': 'smile', 'value': '😄'},
|
|
{'name': 'smiley', 'value': '😃'},
|
|
{'name': 'grinning', 'value': '😀'},
|
|
{'name': 'blush', 'value': '😊'},
|
|
{'name': 'wink', 'value': '😉'},
|
|
{'name': 'heart-eyes', 'value': '😍'},
|
|
{'name': 'kissing-heart', 'value': '😘'},
|
|
{'name': 'kissing-closed-eyes', 'value': '😚'},
|
|
{'name': 'kissing', 'value': '😗'},
|
|
{'name': 'kissing-smiling-eyes', 'value': '😙'},
|
|
{'name': 'stuck-out-tongue-winking-eye', 'value': '😜'},
|
|
{'name': 'stuck-out-tongue-closed-eyes', 'value': '😝'},
|
|
{'name': 'stuck-out-tongue', 'value': '😛'},
|
|
{'name': 'flushed', 'value': '😳'},
|
|
{'name': 'grin', 'value': '😁'},
|
|
{'name': 'pensive', 'value': '😔'},
|
|
{'name': 'satisfied', 'value': '😌'},
|
|
{'name': 'unamused', 'value': '😒'},
|
|
{'name': 'disappointed', 'value': '😞'},
|
|
{'name': 'persevere', 'value': '😣'},
|
|
{'name': 'cry', 'value': '😢'},
|
|
{'name': 'joy', 'value': '😂'},
|
|
{'name': 'sob', 'value': '😭'},
|
|
{'name': 'sleepy', 'value': '😪'},
|
|
{'name': 'relieved', 'value': '😥'},
|
|
{'name': 'cold-sweat', 'value': '😰'},
|
|
{'name': 'sweat-smile', 'value': '😅'},
|
|
{'name': 'sweat', 'value': '😓'},
|
|
{'name': 'weary', 'value': '😩'},
|
|
{'name': 'tired-face', 'value': '😫'},
|
|
{'name': 'fearful', 'value': '😨'},
|
|
{'name': 'scream', 'value': '😱'},
|
|
{'name': 'angry', 'value': '😠'},
|
|
{'name': 'rage', 'value': '😡'},
|
|
{'name': 'triumph', 'value': '😤'},
|
|
{'name': 'confounded', 'value': '😖'},
|
|
{'name': 'laughing', 'value': '😆'},
|
|
{'name': 'yum', 'value': '😋'},
|
|
{'name': 'mask', 'value': '😷'},
|
|
{'name': 'sunglasses', 'value': '😎'},
|
|
{'name': 'sleeping', 'value': '😴'},
|
|
{'name': 'dizzy-face', 'value': '😵'},
|
|
{'name': 'astonished', 'value': '😲'},
|
|
{'name': 'worried', 'value': '😟'},
|
|
{'name': 'frowning', 'value': '😦'},
|
|
{'name': 'anguished', 'value': '😧'},
|
|
{'name': 'smiling-imp', 'value': '😈'},
|
|
{'name': 'imp', 'value': '👿'},
|
|
{'name': 'open-mouth', 'value': '😮'},
|
|
{'name': 'grimacing', 'value': '😬'},
|
|
{'name': 'neutral-face', 'value': '😐'},
|
|
{'name': 'confused', 'value': '😕'},
|
|
{'name': 'hushed', 'value': '😯'},
|
|
{'name': 'no-mouth', 'value': '😶'},
|
|
{'name': 'innocent', 'value': '😇'},
|
|
{'name': 'smirk', 'value': '😏'},
|
|
{'name': 'expressionless', 'value': '😑'},
|
|
{'name': 'man-with-gua-pi-mao', 'value': '👲'},
|
|
{'name': 'man-with-turban', 'value': '👳'},
|
|
{'name': 'cop', 'value': '👮'},
|
|
{'name': 'construction-worker', 'value': '👷'},
|
|
{'name': 'guardsman', 'value': '💂'},
|
|
{'name': 'baby', 'value': '👶'},
|
|
{'name': 'boy', 'value': '👦'},
|
|
{'name': 'girl', 'value': '👧'},
|
|
{'name': 'man', 'value': '👨'},
|
|
{'name': 'woman', 'value': '👩'},
|
|
{'name': 'older-man', 'value': '👴'},
|
|
{'name': 'older-woman', 'value': '👵'},
|
|
{'name': 'person-with-blond-hair', 'value': '👱'},
|
|
{'name': 'angel', 'value': '👼'},
|
|
{'name': 'princess', 'value': '👸'},
|
|
{'name': 'smiley-cat', 'value': '😺'},
|
|
{'name': 'smile-cat', 'value': '😸'},
|
|
{'name': 'heart-eyes-cat', 'value': '😻'},
|
|
{'name': 'kissing-cat', 'value': '😽'},
|
|
{'name': 'smirk-cat', 'value': '😼'},
|
|
{'name': 'scream-cat', 'value': '🙀'},
|
|
{'name': 'crying-cat-face', 'value': '😿'},
|
|
{'name': 'joy-cat', 'value': '😹'},
|
|
{'name': 'pouting-cat', 'value': '😾'},
|
|
{'name': 'japanese-ogre', 'value': '👹'},
|
|
{'name': 'japanese-goblin', 'value': '👺'},
|
|
{'name': 'see-no-evil', 'value': '🙈'},
|
|
{'name': 'hear-no-evil', 'value': '🙉'},
|
|
{'name': 'speak-no-evil', 'value': '🙊'},
|
|
{'name': 'skull', 'value': '💀'},
|
|
{'name': 'alien', 'value': '👽'},
|
|
{'name': 'poop', 'value': '💩'},
|
|
{'name': 'fire', 'value': '🔥'},
|
|
{'name': 'sparkles', 'value': '✨'},
|
|
{'name': 'star2', 'value': '🌟'},
|
|
{'name': 'dizzy', 'value': '💫'},
|
|
{'name': 'boom', 'value': '💥'},
|
|
{'name': 'anger', 'value': '💢'},
|
|
{'name': 'sweat-drops', 'value': '💦'},
|
|
{'name': 'droplet', 'value': '💧'},
|
|
{'name': 'zzz', 'value': '💤'},
|
|
{'name': 'dash', 'value': '💨'},
|
|
{'name': 'ear', 'value': '👂'},
|
|
{'name': 'eyes', 'value': '👀'},
|
|
{'name': 'nose', 'value': '👃'},
|
|
{'name': 'tongue', 'value': '👅'},
|
|
{'name': 'lips', 'value': '👄'},
|
|
{'name': 'thumbsup', 'value': '👍'},
|
|
{'name': 'thumbsdown', 'value': '👎'},
|
|
{'name': 'ok-hand', 'value': '👌'},
|
|
{'name': 'punch', 'value': '👊'},
|
|
{'name': 'fist', 'value': '✊'},
|
|
{'name': 'v', 'value': '✌'},
|
|
{'name': 'wave', 'value': '👋'},
|
|
{'name': 'hand', 'value': '✋'},
|
|
{'name': 'open-hands', 'value': '👐'},
|
|
{'name': 'point-up-2', 'value': '👆'},
|
|
{'name': 'point-down', 'value': '👇'},
|
|
{'name': 'point-right', 'value': '👉'},
|
|
{'name': 'point-left', 'value': '👈'},
|
|
{'name': 'raised-hands', 'value': '🙌'},
|
|
{'name': 'pray', 'value': '🙏'},
|
|
{'name': 'point-up', 'value': '☝'},
|
|
{'name': 'clap', 'value': '👏'},
|
|
{'name': 'muscle', 'value': '💪'},
|
|
{'name': 'walking', 'value': '🚶'},
|
|
{'name': 'runner', 'value': '🏃'},
|
|
{'name': 'dancer', 'value': '💃'},
|
|
{'name': 'couple', 'value': '👫'},
|
|
{'name': 'family', 'value': '👪'},
|
|
{'name': 'two-men-holding-hands', 'value': '👬'},
|
|
{'name': 'two-women-holding-hands', 'value': '👭'},
|
|
{'name': 'couplekiss', 'value': '💏'},
|
|
{'name': 'couple-with-heart', 'value': '💑'},
|
|
{'name': 'dancers', 'value': '👯'},
|
|
{'name': 'ok-woman', 'value': '🙆'},
|
|
{'name': 'no-good', 'value': '🙅'},
|
|
{'name': 'information-desk-person', 'value': '💁'},
|
|
{'name': 'raised-hand', 'value': '🙋'},
|
|
{'name': 'massage', 'value': '💆'},
|
|
{'name': 'haircut', 'value': '💇'},
|
|
{'name': 'nail-care', 'value': '💅'},
|
|
{'name': 'bride-with-veil', 'value': '👰'},
|
|
{'name': 'person-with-pouting-face', 'value': '🙎'},
|
|
{'name': 'person-frowning', 'value': '🙍'},
|
|
{'name': 'bow', 'value': '🙇'},
|
|
{'name': 'tophat', 'value': '🎩'},
|
|
{'name': 'crown', 'value': '👑'},
|
|
{'name': 'womans-hat', 'value': '👒'},
|
|
{'name': 'athletic-shoe', 'value': '👟'},
|
|
{'name': 'mans-shoe', 'value': '👞'},
|
|
{'name': 'sandal', 'value': '👡'},
|
|
{'name': 'high-heel', 'value': '👠'},
|
|
{'name': 'boot', 'value': '👢'},
|
|
{'name': 'shirt', 'value': '👕'},
|
|
{'name': 'necktie', 'value': '👔'},
|
|
{'name': 'womans-clothes', 'value': '👚'},
|
|
{'name': 'dress', 'value': '👗'},
|
|
{'name': 'running-shirt-with-sash', 'value': '🎽'},
|
|
{'name': 'jeans', 'value': '👖'},
|
|
{'name': 'kimono', 'value': '👘'},
|
|
{'name': 'bikini', 'value': '👙'},
|
|
{'name': 'briefcase', 'value': '💼'},
|
|
{'name': 'handbag', 'value': '👜'},
|
|
{'name': 'pouch', 'value': '👝'},
|
|
{'name': 'purse', 'value': '👛'},
|
|
{'name': 'eyeglasses', 'value': '👓'},
|
|
{'name': 'ribbon', 'value': '🎀'},
|
|
{'name': 'closed-umbrella', 'value': '🌂'},
|
|
{'name': 'lipstick', 'value': '💄'},
|
|
{'name': 'yellow-heart', 'value': '💛'},
|
|
{'name': 'blue-heart', 'value': '💙'},
|
|
{'name': 'purple-heart', 'value': '💜'},
|
|
{'name': 'green-heart', 'value': '💚'},
|
|
{'name': 'heart', 'value': '❤'},
|
|
{'name': 'broken-heart', 'value': '💔'},
|
|
{'name': 'heartpulse', 'value': '💗'},
|
|
{'name': 'heartbeat', 'value': '💓'},
|
|
{'name': 'two-hearts', 'value': '💕'},
|
|
{'name': 'sparkling-heart', 'value': '💖'},
|
|
{'name': 'revolving-hearts', 'value': '💞'},
|
|
{'name': 'love-letter', 'value': '💌'},
|
|
{'name': 'cupid', 'value': '💘'},
|
|
{'name': 'kiss', 'value': '💋'},
|
|
{'name': 'ring', 'value': '💍'},
|
|
{'name': 'gem', 'value': '💎'},
|
|
{'name': 'bust-in-silhouette', 'value': '👤'},
|
|
{'name': 'busts-in-silhouette', 'value': '👥'},
|
|
{'name': 'speech-balloon', 'value': '💬'},
|
|
{'name': 'feet', 'value': '👣'},
|
|
{'name': 'thought-balloon', 'value': '💭'}
|
|
],
|
|
'nature': [
|
|
{'name': 'dog', 'value': '🐶'},
|
|
{'name': 'wolf', 'value': '🐺'},
|
|
{'name': 'cat', 'value': '🐱'},
|
|
{'name': 'mouse', 'value': '🐭'},
|
|
{'name': 'hamster', 'value': '🐹'},
|
|
{'name': 'rabbit', 'value': '🐰'},
|
|
{'name': 'frog', 'value': '🐸'},
|
|
{'name': 'tiger', 'value': '🐯'},
|
|
{'name': 'koala', 'value': '🐨'},
|
|
{'name': 'bear', 'value': '🐻'},
|
|
{'name': 'pig', 'value': '🐷'},
|
|
{'name': 'pig-nose', 'value': '🐽'},
|
|
{'name': 'cow', 'value': '🐮'},
|
|
{'name': 'boar', 'value': '🐗'},
|
|
{'name': 'monkey-face', 'value': '🐵'},
|
|
{'name': 'monkey', 'value': '🐒'},
|
|
{'name': 'horse', 'value': '🐴'},
|
|
{'name': 'sheep', 'value': '🐑'},
|
|
{'name': 'elephant', 'value': '🐘'},
|
|
{'name': 'panda-face', 'value': '🐼'},
|
|
{'name': 'penguin', 'value': '🐧'},
|
|
{'name': 'bird', 'value': '🐦'},
|
|
{'name': 'baby-chick', 'value': '🐤'},
|
|
{'name': 'hatched-chick', 'value': '🐥'},
|
|
{'name': 'hatching-chick', 'value': '🐣'},
|
|
{'name': 'chicken', 'value': '🐔'},
|
|
{'name': 'snake', 'value': '🐍'},
|
|
{'name': 'turtle', 'value': '🐢'},
|
|
{'name': 'bug', 'value': '🐛'},
|
|
{'name': 'honeybee', 'value': '🐝'},
|
|
{'name': 'ant', 'value': '🐜'},
|
|
{'name': 'beetle', 'value': '🐞'},
|
|
{'name': 'snail', 'value': '🐌'},
|
|
{'name': 'octopus', 'value': '🐙'},
|
|
{'name': 'shell', 'value': '🐚'},
|
|
{'name': 'tropical-fish', 'value': '🐠'},
|
|
{'name': 'fish', 'value': '🐟'},
|
|
{'name': 'dolphin', 'value': '🐬'},
|
|
{'name': 'whale', 'value': '🐳'},
|
|
{'name': 'whale2', 'value': '🐋'},
|
|
{'name': 'cow2', 'value': '🐄'},
|
|
{'name': 'ram', 'value': '🐏'},
|
|
{'name': 'rat', 'value': '🐀'},
|
|
{'name': 'water-buffalo', 'value': '🐃'},
|
|
{'name': 'tiger2', 'value': '🐅'},
|
|
{'name': 'rabbit2', 'value': '🐇'},
|
|
{'name': 'dragon', 'value': '🐉'},
|
|
{'name': 'racehorse', 'value': '🐎'},
|
|
{'name': 'goat', 'value': '🐐'},
|
|
{'name': 'rooster', 'value': '🐓'},
|
|
{'name': 'dog2', 'value': '🐕'},
|
|
{'name': 'pig2', 'value': '🐖'},
|
|
{'name': 'mouse2', 'value': '🐁'},
|
|
{'name': 'ox', 'value': '🐂'},
|
|
{'name': 'dragon-face', 'value': '🐲'},
|
|
{'name': 'blowfish', 'value': '🐡'},
|
|
{'name': 'crocodile', 'value': '🐊'},
|
|
{'name': 'camel', 'value': '🐫'},
|
|
{'name': 'dromedary-camel', 'value': '🐪'},
|
|
{'name': 'leopard', 'value': '🐆'},
|
|
{'name': 'cat2', 'value': '🐈'},
|
|
{'name': 'poodle', 'value': '🐩'},
|
|
{'name': 'paw-prints', 'value': '🐾'},
|
|
{'name': 'bouquet', 'value': '💐'},
|
|
{'name': 'cherry-blossom', 'value': '🌸'},
|
|
{'name': 'tulip', 'value': '🌷'},
|
|
{'name': 'four-leaf-clover', 'value': '🍀'},
|
|
{'name': 'rose', 'value': '🌹'},
|
|
{'name': 'sunflower', 'value': '🌻'},
|
|
{'name': 'hibiscus', 'value': '🌺'},
|
|
{'name': 'maple-leaf', 'value': '🍁'},
|
|
{'name': 'leaves', 'value': '🍃'},
|
|
{'name': 'fallen-leaf', 'value': '🍂'},
|
|
{'name': 'herb', 'value': '🌿'},
|
|
{'name': 'ear-of-rice', 'value': '🌾'},
|
|
{'name': 'mushroom', 'value': '🍄'},
|
|
{'name': 'cactus', 'value': '🌵'},
|
|
{'name': 'palm-tree', 'value': '🌴'},
|
|
{'name': 'evergreen-tree', 'value': '🌲'},
|
|
{'name': 'deciduous-tree', 'value': '🌳'},
|
|
{'name': 'chestnut', 'value': '🌰'},
|
|
{'name': 'seedling', 'value': '🌱'},
|
|
{'name': 'blossom', 'value': '🌼'},
|
|
{'name': 'globe-with-meridians', 'value': '🌐'},
|
|
{'name': 'sun-with-face', 'value': '🌞'},
|
|
{'name': 'full-moon-with-face', 'value': '🌝'},
|
|
{'name': 'new-moon-with-face', 'value': '🌚'},
|
|
{'name': 'new-moon', 'value': '🌑'},
|
|
{'name': 'waxing-crescent-moon', 'value': '🌒'},
|
|
{'name': 'first-quarter-moon', 'value': '🌓'},
|
|
{'name': 'waxing-gibbous-moon', 'value': '🌔'},
|
|
{'name': 'full-moon', 'value': '🌕'},
|
|
{'name': 'waning-gibbous-moon', 'value': '🌖'},
|
|
{'name': 'last-quarter-moon', 'value': '🌗'},
|
|
{'name': 'waning-crescent-moon', 'value': '🌘'},
|
|
{'name': 'last-quarter-moon-with-face', 'value': '🌜'},
|
|
{'name': 'first-quarter-moon-with-face', 'value': '🌛'},
|
|
{'name': 'moon', 'value': '🌙'},
|
|
{'name': 'earth-africa', 'value': '🌍'},
|
|
{'name': 'earth-americas', 'value': '🌎'},
|
|
{'name': 'earth-asia', 'value': '🌏'},
|
|
{'name': 'volcano', 'value': '🌋'},
|
|
{'name': 'milky-way', 'value': '🌌'},
|
|
{'name': 'shooting-star', 'value': '🌠'},
|
|
{'name': 'star', 'value': '⭐'},
|
|
{'name': 'sunny', 'value': '☀'},
|
|
{'name': 'partly-sunny', 'value': '⛅'},
|
|
{'name': 'cloud', 'value': '☁'},
|
|
{'name': 'zap', 'value': '⚡'},
|
|
{'name': 'umbrella', 'value': '☔'},
|
|
{'name': 'snowflake', 'value': '❄'},
|
|
{'name': 'snowman', 'value': '⛄'},
|
|
{'name': 'cyclone', 'value': '🌀'},
|
|
{'name': 'foggy', 'value': '🌁'},
|
|
{'name': 'rainbow', 'value': '🌈'},
|
|
{'name': 'ocean', 'value': '🌊'}
|
|
],
|
|
'object': [
|
|
{'name': 'bamboo', 'value': '🎍'},
|
|
{'name': 'gift-heart', 'value': '💝'},
|
|
{'name': 'dolls', 'value': '🎎'},
|
|
{'name': 'school-satchel', 'value': '🎒'},
|
|
{'name': 'mortar-board', 'value': '🎓'},
|
|
{'name': 'flags', 'value': '🎏'},
|
|
{'name': 'fireworks', 'value': '🎆'},
|
|
{'name': 'sparkler', 'value': '🎇'},
|
|
{'name': 'wind-chime', 'value': '🎐'},
|
|
{'name': 'rice-scene', 'value': '🎑'},
|
|
{'name': 'jack-o-lantern', 'value': '🎃'},
|
|
{'name': 'ghost', 'value': '👻'},
|
|
{'name': 'santa', 'value': '🎅'},
|
|
{'name': 'christmas-tree', 'value': '🎄'},
|
|
{'name': 'gift', 'value': '🎁'},
|
|
{'name': 'tanabata-tree', 'value': '🎋'},
|
|
{'name': 'tada', 'value': '🎉'},
|
|
{'name': 'confetti-ball', 'value': '🎊'},
|
|
{'name': 'balloon', 'value': '🎈'},
|
|
{'name': 'crossed-flags', 'value': '🎌'},
|
|
{'name': 'crystal-ball', 'value': '🔮'},
|
|
{'name': 'movie-camera', 'value': '🎥'},
|
|
{'name': 'camera', 'value': '📷'},
|
|
{'name': 'video-camera', 'value': '📹'},
|
|
{'name': 'vhs', 'value': '📼'},
|
|
{'name': 'cd', 'value': '💿'},
|
|
{'name': 'dvd', 'value': '📀'},
|
|
{'name': 'minidisc', 'value': '💽'},
|
|
{'name': 'floppy-disk', 'value': '💾'},
|
|
{'name': 'computer', 'value': '💻'},
|
|
{'name': 'iphone', 'value': '📱'},
|
|
{'name': 'phone', 'value': '☎'},
|
|
{'name': 'telephone-receiver', 'value': '📞'},
|
|
{'name': 'pager', 'value': '📟'},
|
|
{'name': 'fax', 'value': '📠'},
|
|
{'name': 'satellite', 'value': '📡'},
|
|
{'name': 'tv', 'value': '📺'},
|
|
{'name': 'radio', 'value': '📻'},
|
|
{'name': 'speaker-waves', 'value': '🔊'},
|
|
{'name': 'sound', 'value': '🔉'},
|
|
{'name': 'speaker', 'value': '🔈'},
|
|
{'name': 'mute', 'value': '🔇'},
|
|
{'name': 'bell', 'value': '🔔'},
|
|
{'name': 'no-bell', 'value': '🔕'},
|
|
{'name': 'loudspeaker', 'value': '📢'},
|
|
{'name': 'mega', 'value': '📣'},
|
|
{'name': 'hourglass-flowing-sand', 'value': '⏳'},
|
|
{'name': 'hourglass', 'value': '⌛'},
|
|
{'name': 'alarm-clock', 'value': '⏰'},
|
|
{'name': 'watch', 'value': '⌚'},
|
|
{'name': 'unlock', 'value': '🔓'},
|
|
{'name': 'lock', 'value': '🔒'},
|
|
{'name': 'lock-with-ink-pen', 'value': '🔏'},
|
|
{'name': 'closed-lock-with-key', 'value': '🔐'},
|
|
{'name': 'key', 'value': '🔑'},
|
|
{'name': 'mag-right', 'value': '🔎'},
|
|
{'name': 'bulb', 'value': '💡'},
|
|
{'name': 'flashlight', 'value': '🔦'},
|
|
{'name': 'high-brightness', 'value': '🔆'},
|
|
{'name': 'low-brightness', 'value': '🔅'},
|
|
{'name': 'electric-plug', 'value': '🔌'},
|
|
{'name': 'battery', 'value': '🔋'},
|
|
{'name': 'mag', 'value': '🔍'},
|
|
{'name': 'bathtub', 'value': '🛁'},
|
|
{'name': 'bath', 'value': '🛀'},
|
|
{'name': 'shower', 'value': '🚿'},
|
|
{'name': 'toilet', 'value': '🚽'},
|
|
{'name': 'wrench', 'value': '🔧'},
|
|
{'name': 'nut-and-bolt', 'value': '🔩'},
|
|
{'name': 'hammer', 'value': '🔨'},
|
|
{'name': 'door', 'value': '🚪'},
|
|
{'name': 'smoking', 'value': '🚬'},
|
|
{'name': 'bomb', 'value': '💣'},
|
|
{'name': 'gun', 'value': '🔫'},
|
|
{'name': 'hocho', 'value': '🔪'},
|
|
{'name': 'pill', 'value': '💊'},
|
|
{'name': 'syringe', 'value': '💉'},
|
|
{'name': 'moneybag', 'value': '💰'},
|
|
{'name': 'yen', 'value': '💴'},
|
|
{'name': 'dollar', 'value': '💵'},
|
|
{'name': 'pound', 'value': '💷'},
|
|
{'name': 'euro', 'value': '💶'},
|
|
{'name': 'credit-card', 'value': '💳'},
|
|
{'name': 'money-with-wings', 'value': '💸'},
|
|
{'name': 'calling', 'value': '📲'},
|
|
{'name': 'e-mail', 'value': '📧'},
|
|
{'name': 'inbox-tray', 'value': '📥'},
|
|
{'name': 'outbox-tray', 'value': '📤'},
|
|
{'name': 'email', 'value': '✉'},
|
|
{'name': 'enveloppe', 'value': '📩'},
|
|
{'name': 'incoming-envelope', 'value': '📨'},
|
|
{'name': 'postal-horn', 'value': '📯'},
|
|
{'name': 'mailbox', 'value': '📫'},
|
|
{'name': 'mailbox-closed', 'value': '📪'},
|
|
{'name': 'mailbox-with-mail', 'value': '📬'},
|
|
{'name': 'mailbox-with-no-mail', 'value': '📭'},
|
|
{'name': 'postbox', 'value': '📮'},
|
|
{'name': 'package', 'value': '📦'},
|
|
{'name': 'memo', 'value': '📝'},
|
|
{'name': 'page-facing-up', 'value': '📄'},
|
|
{'name': 'page-with-curl', 'value': '📃'},
|
|
{'name': 'bookmark-tabs', 'value': '📑'},
|
|
{'name': 'bar-chart', 'value': '📊'},
|
|
{'name': 'chart-with-upwards-trend', 'value': '📈'},
|
|
{'name': 'chart-with-downwards-trend', 'value': '📉'},
|
|
{'name': 'scroll', 'value': '📜'},
|
|
{'name': 'clipboard', 'value': '📋'},
|
|
{'name': 'date', 'value': '📅'},
|
|
{'name': 'calendar', 'value': '📆'},
|
|
{'name': 'card-index', 'value': '📇'},
|
|
{'name': 'file-folder', 'value': '📁'},
|
|
{'name': 'open-file-folder', 'value': '📂'},
|
|
{'name': 'scissors', 'value': '✂'},
|
|
{'name': 'pushpin', 'value': '📌'},
|
|
{'name': 'paperclip', 'value': '📎'},
|
|
{'name': 'black-nib', 'value': '✒'},
|
|
{'name': 'pencil2', 'value': '✏'},
|
|
{'name': 'straight-ruler', 'value': '📏'},
|
|
{'name': 'triangular-ruler', 'value': '📐'},
|
|
{'name': 'closed-book', 'value': '📕'},
|
|
{'name': 'green-book', 'value': '📗'},
|
|
{'name': 'blue-book', 'value': '📘'},
|
|
{'name': 'orange-book', 'value': '📙'},
|
|
{'name': 'notebook', 'value': '📓'},
|
|
{'name': 'notebook-with-decorative-cover', 'value': '📔'},
|
|
{'name': 'ledger', 'value': '📒'},
|
|
{'name': 'books', 'value': '📚'},
|
|
{'name': 'open-book', 'value': '📖'},
|
|
{'name': 'bookmark', 'value': '🔖'},
|
|
{'name': 'name-badge', 'value': '📛'},
|
|
{'name': 'microscope', 'value': '🔬'},
|
|
{'name': 'telescope', 'value': '🔭'},
|
|
{'name': 'newspaper', 'value': '📰'},
|
|
{'name': 'art', 'value': '🎨'},
|
|
{'name': 'clapper', 'value': '🎬'},
|
|
{'name': 'microphone', 'value': '🎤'},
|
|
{'name': 'headphones', 'value': '🎧'},
|
|
{'name': 'musical-score', 'value': '🎼'},
|
|
{'name': 'musical-note', 'value': '🎵'},
|
|
{'name': 'notes', 'value': '🎶'},
|
|
{'name': 'musical-keyboard', 'value': '🎹'},
|
|
{'name': 'violin', 'value': '🎻'},
|
|
{'name': 'trumpet', 'value': '🎺'},
|
|
{'name': 'saxophone', 'value': '🎷'},
|
|
{'name': 'guitar', 'value': '🎸'},
|
|
{'name': 'space-invader', 'value': '👾'},
|
|
{'name': 'video-game', 'value': '🎮'},
|
|
{'name': 'black-joker', 'value': '🃏'},
|
|
{'name': 'flower-playing-cards', 'value': '🎴'},
|
|
{'name': 'mahjong', 'value': '🀄'},
|
|
{'name': 'game-die', 'value': '🎲'},
|
|
{'name': 'dart', 'value': '🎯'},
|
|
{'name': 'football', 'value': '🏈'},
|
|
{'name': 'basketball', 'value': '🏀'},
|
|
{'name': 'soccer', 'value': '⚽'},
|
|
{'name': 'baseball', 'value': '⚾'},
|
|
{'name': 'tennis', 'value': '🎾'},
|
|
{'name': '8ball', 'value': '🎱'},
|
|
{'name': 'rugby-football', 'value': '🏉'},
|
|
{'name': 'bowling', 'value': '🎳'},
|
|
{'name': 'golf', 'value': '⛳'},
|
|
{'name': 'mountain-bicyclist', 'value': '🚵'},
|
|
{'name': 'bicyclist', 'value': '🚴'},
|
|
{'name': 'checkered-flag', 'value': '🏁'},
|
|
{'name': 'horse-racing', 'value': '🏇'},
|
|
{'name': 'trophy', 'value': '🏆'},
|
|
{'name': 'ski', 'value': '🎿'},
|
|
{'name': 'snowboarder', 'value': '🏂'},
|
|
{'name': 'swimmer', 'value': '🏊'},
|
|
{'name': 'surfer', 'value': '🏄'},
|
|
{'name': 'fishing-pole-and-fish', 'value': '🎣'},
|
|
{'name': 'coffee', 'value': '☕'},
|
|
{'name': 'tea', 'value': '🍵'},
|
|
{'name': 'sake', 'value': '🍶'},
|
|
{'name': 'baby-bottle', 'value': '🍼'},
|
|
{'name': 'beer', 'value': '🍺'},
|
|
{'name': 'beers', 'value': '🍻'},
|
|
{'name': 'cocktail', 'value': '🍸'},
|
|
{'name': 'tropical-drink', 'value': '🍹'},
|
|
{'name': 'wine-glass', 'value': '🍷'},
|
|
{'name': 'fork-and-knife', 'value': '🍴'},
|
|
{'name': 'pizza', 'value': '🍕'},
|
|
{'name': 'hamburger', 'value': '🍔'},
|
|
{'name': 'fries', 'value': '🍟'},
|
|
{'name': 'poultry-leg', 'value': '🍗'},
|
|
{'name': 'meat-on-bone', 'value': '🍖'},
|
|
{'name': 'spaghetti', 'value': '🍝'},
|
|
{'name': 'curry', 'value': '🍛'},
|
|
{'name': 'fried-shrimp', 'value': '🍤'},
|
|
{'name': 'bento', 'value': '🍱'},
|
|
{'name': 'sushi', 'value': '🍣'},
|
|
{'name': 'fish-cake', 'value': '🍥'},
|
|
{'name': 'rice-ball', 'value': '🍙'},
|
|
{'name': 'rice-cracker', 'value': '🍘'},
|
|
{'name': 'rice', 'value': '🍚'},
|
|
{'name': 'ramen', 'value': '🍜'},
|
|
{'name': 'stew', 'value': '🍲'},
|
|
{'name': 'oden', 'value': '🍢'},
|
|
{'name': 'dango', 'value': '🍡'},
|
|
{'name': 'egg', 'value': '🍳'},
|
|
{'name': 'bread', 'value': '🍞'},
|
|
{'name': 'doughnut', 'value': '🍩'},
|
|
{'name': 'custard', 'value': '🍮'},
|
|
{'name': 'icecream', 'value': '🍦'},
|
|
{'name': 'ice-cream', 'value': '🍨'},
|
|
{'name': 'shaved-ice', 'value': '🍧'},
|
|
{'name': 'birthday', 'value': '🎂'},
|
|
{'name': 'cake', 'value': '🍰'},
|
|
{'name': 'cookie', 'value': '🍪'},
|
|
{'name': 'chocolate-bar', 'value': '🍫'},
|
|
{'name': 'candy', 'value': '🍬'},
|
|
{'name': 'lollipop', 'value': '🍭'},
|
|
{'name': 'honey-pot', 'value': '🍯'},
|
|
{'name': 'apple', 'value': '🍎'},
|
|
{'name': 'green-apple', 'value': '🍏'},
|
|
{'name': 'tangerine', 'value': '🍊'},
|
|
{'name': 'lemon', 'value': '🍋'},
|
|
{'name': 'cherries', 'value': '🍒'},
|
|
{'name': 'grapes', 'value': '🍇'},
|
|
{'name': 'watermelon', 'value': '🍉'},
|
|
{'name': 'strawberry', 'value': '🍓'},
|
|
{'name': 'peach', 'value': '🍑'},
|
|
{'name': 'melon', 'value': '🍈'},
|
|
{'name': 'banana', 'value': '🍌'},
|
|
{'name': 'pear', 'value': '🍐'},
|
|
{'name': 'pineapple', 'value': '🍍'},
|
|
{'name': 'sweet-potato', 'value': '🍠'},
|
|
{'name': 'eggplant', 'value': '🍆'},
|
|
{'name': 'tomato', 'value': '🍅'},
|
|
{'name': 'corn', 'value': '🌽'}
|
|
],
|
|
'place': [
|
|
{'name': 'house', 'value': '🏠'},
|
|
{'name': 'house-with-garden', 'value': '🏡'},
|
|
{'name': 'school', 'value': '🏫'},
|
|
{'name': 'office', 'value': '🏢'},
|
|
{'name': 'post-office', 'value': '🏣'},
|
|
{'name': 'hospital', 'value': '🏥'},
|
|
{'name': 'bank', 'value': '🏦'},
|
|
{'name': 'convenience-store', 'value': '🏪'},
|
|
{'name': 'love-hotel', 'value': '🏩'},
|
|
{'name': 'hotel', 'value': '🏨'},
|
|
{'name': 'wedding', 'value': '💒'},
|
|
{'name': 'church', 'value': '⛪'},
|
|
{'name': 'department-store', 'value': '🏬'},
|
|
{'name': 'european-post-office', 'value': '🏤'},
|
|
{'name': 'private-use', 'value': ''},
|
|
{'name': 'city-sunrise', 'value': '🌇'},
|
|
{'name': 'city-sunset', 'value': '🌆'},
|
|
{'name': 'japanese-castle', 'value': '🏯'},
|
|
{'name': 'european-castle', 'value': '🏰'},
|
|
{'name': 'tent', 'value': '⛺'},
|
|
{'name': 'factory', 'value': '🏭'},
|
|
{'name': 'tokyo-tower', 'value': '🗼'},
|
|
{'name': 'japan', 'value': '🗾'},
|
|
{'name': 'mount-fuji', 'value': '🗻'},
|
|
{'name': 'sunrise-over-mountains', 'value': '🌄'},
|
|
{'name': 'sunrise', 'value': '🌅'},
|
|
{'name': 'stars', 'value': '🌃'},
|
|
{'name': 'statue-of-liberty', 'value': '🗽'},
|
|
{'name': 'bridge-at-night', 'value': '🌉'},
|
|
{'name': 'carousel-horse', 'value': '🎠'},
|
|
{'name': 'ferris-wheel', 'value': '🎡'},
|
|
{'name': 'fountain', 'value': '⛲'},
|
|
{'name': 'roller-coaster', 'value': '🎢'},
|
|
{'name': 'ship', 'value': '🚢'},
|
|
{'name': 'boat', 'value': '⛵'},
|
|
{'name': 'speedboat', 'value': '🚤'},
|
|
{'name': 'rowboat', 'value': '🚣'},
|
|
{'name': 'anchor', 'value': '⚓'},
|
|
{'name': 'rocket', 'value': '🚀'},
|
|
{'name': 'airplane', 'value': '✈'},
|
|
{'name': 'seat', 'value': '💺'},
|
|
{'name': 'helicopter', 'value': '🚁'},
|
|
{'name': 'steam-locomotive', 'value': '🚂'},
|
|
{'name': 'tram', 'value': '🚊'},
|
|
{'name': 'station', 'value': '🚉'},
|
|
{'name': 'mountain-railway', 'value': '🚞'},
|
|
{'name': 'train2', 'value': '🚆'},
|
|
{'name': 'bullettrain-side', 'value': '🚄'},
|
|
{'name': 'bullettrain-front', 'value': '🚅'},
|
|
{'name': 'light-rail', 'value': '🚈'},
|
|
{'name': 'metro', 'value': '🚇'},
|
|
{'name': 'monorail', 'value': '🚝'},
|
|
{'name': 'tram-car', 'value': '🚋'},
|
|
{'name': 'railway-car', 'value': '🚃'},
|
|
{'name': 'trolleybus', 'value': '🚎'},
|
|
{'name': 'bus', 'value': '🚌'},
|
|
{'name': 'oncoming-bus', 'value': '🚍'},
|
|
{'name': 'blue-car', 'value': '🚙'},
|
|
{'name': 'oncoming-automobile', 'value': '🚘'},
|
|
{'name': 'car', 'value': '🚗'},
|
|
{'name': 'taxi', 'value': '🚕'},
|
|
{'name': 'oncoming-taxi', 'value': '🚖'},
|
|
{'name': 'articulated-lorry', 'value': '🚛'},
|
|
{'name': 'truck', 'value': '🚚'},
|
|
{'name': 'rotating-light', 'value': '🚨'},
|
|
{'name': 'police-car', 'value': '🚓'},
|
|
{'name': 'oncoming-police-car', 'value': '🚔'},
|
|
{'name': 'fire-engine', 'value': '🚒'},
|
|
{'name': 'ambulance', 'value': '🚑'},
|
|
{'name': 'minibus', 'value': '🚐'},
|
|
{'name': 'bike', 'value': '🚲'},
|
|
{'name': 'aerial-tramway', 'value': '🚡'},
|
|
{'name': 'suspension-railway', 'value': '🚟'},
|
|
{'name': 'mountain-cableway', 'value': '🚠'},
|
|
{'name': 'tractor', 'value': '🚜'},
|
|
{'name': 'barber', 'value': '💈'},
|
|
{'name': 'busstop', 'value': '🚏'},
|
|
{'name': 'ticket', 'value': '🎫'},
|
|
{'name': 'vertical-traffic-light', 'value': '🚦'},
|
|
{'name': 'traffic-light', 'value': '🚥'},
|
|
{'name': 'warning', 'value': '⚠'},
|
|
{'name': 'construction', 'value': '🚧'},
|
|
{'name': 'beginner', 'value': '🔰'},
|
|
{'name': 'fuelpump', 'value': '⛽'},
|
|
{'name': 'izakaya-lantern', 'value': '🏮'},
|
|
{'name': 'slot-machine', 'value': '🎰'},
|
|
{'name': 'hotsprings', 'value': '♨'},
|
|
{'name': 'moyai', 'value': '🗿'},
|
|
{'name': 'circus-tent', 'value': '🎪'},
|
|
{'name': 'performing-arts', 'value': '🎭'},
|
|
{'name': 'round-pushpin', 'value': '📍'},
|
|
{'name': 'triangular-flag-on-post', 'value': '🚩'},
|
|
{'name': 'cn', 'value': '🇨🇳'},
|
|
{'name': 'de', 'value': '🇩🇪'},
|
|
{'name': 'es', 'value': '🇪🇸'},
|
|
{'name': 'fr', 'value': '🇫🇷'},
|
|
{'name': 'gb', 'value': '🇬🇧'},
|
|
{'name': 'it', 'value': '🇮🇹'},
|
|
{'name': 'jp', 'value': '🇯🇵'},
|
|
{'name': 'kr', 'value': '🇰🇷'},
|
|
{'name': 'ru', 'value': '🇷🇺'},
|
|
{'name': 'us', 'value': '🇺🇸'}
|
|
]
|
|
};
|
|
|
|
/* preprocess */
|
|
/* ~10ms in total, each section about 2ms so we're not really blocking the side totally */
|
|
window.setup_lsx_emoji_picker = options => {
|
|
setup_options = options;
|
|
|
|
window.addEventListener('click', event => {
|
|
const close_tags = open_pickers.filter(e => !e.tag[0].contains(event.target as Node));
|
|
for(const c of close_tags) {
|
|
c.close();
|
|
const idx = open_pickers.indexOf(c);
|
|
idx >= 0 && open_pickers.splice(idx, 1);
|
|
}
|
|
});
|
|
|
|
if(options.twemoji) {
|
|
const generator = function*() {
|
|
for(const category_name of Object.keys(emoji)) {
|
|
for(const entry of emoji[category_name]) {
|
|
entry["str"] = entry.value.replace(/&#x([0-9a-f]{1,6});?/g, (match, $1) => {
|
|
return twemoji.convert.fromCodePoint($1);
|
|
});
|
|
|
|
entry["img"] = twemoji.parse(entry.str, {
|
|
folder: 'svg',
|
|
ext: '.svg'
|
|
});
|
|
}
|
|
yield category_name;
|
|
}
|
|
}();
|
|
|
|
return new Promise(resolve => {
|
|
const _loop = () => {
|
|
if(generator.next().done)
|
|
resolve();
|
|
else
|
|
setTimeout(_loop, 0);
|
|
};
|
|
_loop();
|
|
});
|
|
}
|
|
return Promise.resolve();
|
|
};
|
|
|
|
(<any>$.fn).lsxEmojiPicker = function (options) {
|
|
if(typeof(setup_options) === "undefined")
|
|
throw "lsx emoji picker hasn't been initialized";
|
|
// Overriding default options
|
|
let settings = $.extend({
|
|
width: 220,
|
|
height: 200,
|
|
twemoji: false,
|
|
closeOnSelect: true,
|
|
onSelect: function(em){}
|
|
}, options);
|
|
|
|
if(settings.twemoji && !setup_options.twemoji)
|
|
throw "lsx emoji picker hasn't been initialized with twenmoji support"
|
|
|
|
var appender = $('<div></div>')
|
|
.addClass('lsx-emojipicker-appender');
|
|
var container = $('<div></div>')
|
|
.addClass('lsx-emojipicker-container')
|
|
.css({
|
|
'top': "-" + (settings.height + 37 + 15) + "px" //37 is the bottom and 15 the select thing
|
|
});
|
|
var wrapper = $('<div></div>')
|
|
.addClass('lsx-emojipicker-wrapper');
|
|
|
|
var spinnerContainer = $('<div></div>')
|
|
.addClass('spinner-container');
|
|
var spinner = $('<div></div>')
|
|
.addClass('loader');
|
|
spinnerContainer.append(spinner);
|
|
|
|
var tabs = $('<ul></ul>')
|
|
.addClass('lsx-emojipicker-tabs');
|
|
|
|
const create_category_li = (icon, name, selected) => $(document.createElement("li"))
|
|
.html(settings.twemoji ? icon.img : icon.value)
|
|
.click(event => {
|
|
event.preventDefault();
|
|
|
|
tabs.find("li.selected").removeClass("selected");
|
|
$(event.target).parent("li").addClass("selected");
|
|
|
|
wrapper.find("> .lsx-emoji-tab").addClass("hidden");
|
|
wrapper.find("> .lsx-emoji-tab.lsx-emoji-" + name).removeClass("hidden");
|
|
}).toggleClass("selected", selected);
|
|
|
|
tabs.append(create_category_li(emoji['people'][1], "people", true))
|
|
.append(create_category_li(emoji['nature'][0], "nature", false))
|
|
.append(create_category_li(emoji['place'][38], "place", false))
|
|
.append(create_category_li(emoji['object'][4], "object", false));
|
|
|
|
|
|
(async () => {
|
|
const _tab = (name: string, hidden: boolean) => {
|
|
let tab_html = '<div ' +
|
|
'class="lsx-emojipicker-emoji lsx-emoji-tab lsx-emoji-' + name + (hidden ? " hidden" : "") + '"' +
|
|
' style="width: ' + settings.width + 'px; height: ' + settings.height + 'px;"' +
|
|
'>';
|
|
|
|
if(settings.twemoji) {
|
|
for(const e of emoji[name])
|
|
tab_html += e.img;
|
|
} else {
|
|
for(const e of emoji[name])
|
|
tab_html += "<span value='" + e.value + "' title='" + e.name + "'>" + e.value + "</span>";
|
|
}
|
|
|
|
return tab_html + "</div>";
|
|
};
|
|
|
|
//wrapper.append(spinnerContainer);
|
|
wrapper[0].innerHTML =
|
|
_tab("people", false) +
|
|
_tab("nature", true) +
|
|
_tab("place", true) +
|
|
_tab("object", true);
|
|
|
|
wrapper.find("img, span").on('click', event => {
|
|
const target = $(event.target);
|
|
|
|
settings.onSelect({
|
|
name: target.attr("title"),
|
|
value: target.attr("alt") || target.attr("value")
|
|
});
|
|
if(settings.closeOnSelect){
|
|
wrapper.hide();
|
|
}
|
|
});
|
|
wrapper.append(tabs);
|
|
container.append(wrapper);
|
|
appender.append(container);
|
|
})();
|
|
this.append(appender);
|
|
|
|
const picker = {
|
|
tag: this,
|
|
close: () => {
|
|
container.hide();
|
|
const idx = open_pickers.indexOf(picker);
|
|
idx >= 0 && open_pickers.splice(idx, 1);
|
|
}
|
|
};
|
|
this.click(e => {
|
|
if(this.hasClass("disabled"))
|
|
return;
|
|
|
|
e.preventDefault();
|
|
|
|
if(!$(e.target).parent().hasClass('lsx-emojipicker-tabs')
|
|
&& !$(e.target).parent().parent().hasClass('lsx-emojipicker-tabs')
|
|
&& !$(e.target).parent().hasClass('lsx-emoji-tab')
|
|
&& !$(e.target).parent().parent().hasClass('lsx-emoji-tab')){
|
|
if(container.is(':visible')){
|
|
picker.close();
|
|
} else {
|
|
open_pickers.push(picker);
|
|
container.fadeIn();
|
|
}
|
|
}
|
|
});
|
|
|
|
return this;
|
|
};
|
|
}(jQuery, window));
|
|
}
|