/* ===========================================================
* trumbowyg.emoji.js v0.1
* Emoji picker plugin for Trumbowyg
* http://alex-d.github.com/Trumbowyg
* ===========================================================
* Author : Nicolas Pion
* Twitter : @nicolas_pion
*/
(function ($) {
'use strict';
var defaultOptions = {
emojiList: [
'⁉',
'™',
'ℹ',
'↔',
'↕',
'↖',
'↗',
'↘',
'↙',
'⌨',
'☀',
'☁',
'☂',
'☃',
'☄',
'☑',
'☔',
'☕',
'☘',
'☠',
'☢',
'☣',
'☦',
'☸',
'☹',
'♀',
'♂',
'♈',
'♉',
'♐',
'♑',
'♒',
'♓',
'♠',
'♣',
'♥',
'♦',
'♨',
'⚒',
'⚓',
'⚔',
'⚕',
'⚖',
'⚗',
'⚙',
'✂',
'✅',
'✈',
'✉',
'✒',
'✔',
'✖',
'✡',
'✨',
'✳',
'✴',
'❄',
'❇',
'❓',
'❔',
'❕',
'❗',
'❣',
'❤',
'➕',
'➖',
'➗',
'⤴',
'⤵',
'〰',
'㊗',
'㊙',
'🧡',
'💛',
'💚',
'💙',
'💜',
'🖤',
'💔',
'💕',
'💞',
'💓',
'💗',
'💖',
'💘',
'💝',
'💟',
'☮',
'✝',
'☪',
'🕉',
'🔯',
'🕎',
'☯',
'🛐',
'⛎',
'♊',
'♋',
'♌',
'♍',
'♎',
'♏',
'🆔',
'⚛',
'♾',
'🉑',
'📴',
'📳',
'🈶',
'🈚',
'🈸',
'🈺',
'🈷',
'🆚',
'💮',
'🉐',
'🈴',
'🈵',
'🈹',
'🈲',
'🅰',
'🅱',
'🆎',
'🆑',
'🅾',
'🆘',
'❌',
'⭕',
'🛑',
'⛔',
'📛',
'🚫',
'💯',
'💢',
'🚷',
'🚯',
'🚳',
'🚱',
'🔞',
'📵',
'🚭',
'‼',
'🔅',
'🔆',
'〽',
'⚠',
'🚸',
'🔱',
'⚜',
'🔰',
'♻',
'🈯',
'💹',
'❎',
'🌐',
'💠',
'Ⓜ',
'🌀',
'💤',
'🏧',
'🚾',
'♿',
'🅿',
'🈳',
'🈂',
'🛂',
'🛃',
'🛄',
'🛅',
'🚹',
'🚺',
'🚼',
'🚻',
'🚮',
'🎦',
'📶',
'🈁',
'🔣',
'🔤',
'🔡',
'🔠',
'🆖',
'🆗',
'🆙',
'🆒',
'🆕',
'🆓',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'🔟',
'🔢',
'#',
'*',
'⏏',
'▶',
'⏸',
'⏯',
'⏹',
'⏺',
'⏭',
'⏮',
'⏩',
'⏪',
'⏫',
'⏬',
'◀',
'🔼',
'🔽',
'➡',
'⬅',
'⬆',
'⬇',
'↪',
'↩',
'🔀',
'🔁',
'🔂',
'🔄',
'🔃',
'🎵',
'🎶',
'💲',
'💱',
'©',
'®',
'➰',
'➿',
'🔚',
'🔙',
'🔛',
'🔝',
'🔜',
'🔘',
'⚪',
'⚫',
'🔴',
'🔵',
'🔺',
'🔻',
'🔸',
'🔹',
'🔶',
'🔷',
'🔳',
'🔲',
'▪',
'▫',
'◾',
'◽',
'◼',
'◻',
'⬛',
'⬜',
'🔈',
'🔇',
'🔉',
'🔊',
'🔔',
'🔕',
'📣',
'📢',
'🗨',
'👁',
'💬',
'💭',
'🗯',
'🃏',
'🎴',
'🀄',
'🕐',
'🕑',
'🕒',
'🕓',
'🕔',
'🕕',
'🕖',
'🕗',
'🕘',
'🕙',
'🕚',
'🕛',
'🕜',
'🕝',
'🕞',
'🕟',
'🕠',
'🕡',
'🕢',
'🕣',
'🕤',
'🕥',
'🕦',
'🕧',
'⚽',
'🏀',
'🏈',
'⚾',
'🥎',
'🎾',
'🏐',
'🏉',
'🎱',
'🏓',
'🏸',
'🥅',
'🏒',
'🏑',
'🏏',
'🥍',
'⛳',
'🥏',
'🏹',
'🎣',
'🥊',
'🥋',
'🎽',
'🛹',
'⛸',
'🥌',
'🛷',
'🎿',
'⛷',
'🏂',
'🏋',
'🤼',
'🤸',
'⛹',
'🤺',
'🤾',
'🏌',
'🏇',
'🧘',
'🏄',
'🏊',
'🤽',
'🚣',
'🧗',
'🚵',
'🚴',
'🏆',
'🥇',
'🥈',
'🥉',
'🏅',
'🎖',
'🏵',
'🎗',
'🎫',
'🎟',
'🎪',
'🤹',
'🎭',
'🎨',
'🎬',
'🎤',
'🎧',
'🎼',
'🎹',
'🥁',
'🎷',
'🎺',
'🎸',
'🎻',
'🎲',
'🎯',
'🎳',
'🎮',
'🎰',
'⌚',
'📱',
'📲',
'💻',
'🖥',
'🖨',
'🖱',
'🖲',
'🕹',
'♟',
'🧩',
'🗜',
'💽',
'💾',
'💿',
'📀',
'📼',
'📷',
'📸',
'📹',
'🎥',
'📽',
'🎞',
'📞',
'☎',
'📟',
'📠',
'📺',
'📻',
'🎙',
'🎚',
'🎛',
'⏱',
'⏲',
'⏰',
'🕰',
'⌛',
'⏳',
'📡',
'🧭',
'🔋',
'🔌',
'🧲',
'💡',
'🔦',
'🕯',
'🧯',
'🗑',
'🛢',
'💸',
'💵',
'💴',
'💶',
'💷',
'💰',
'💳',
'💎',
'🧿',
'🧱',
'🧰',
'🔧',
'🔨',
'🛠',
'⛏',
'🔩',
'⛓',
'🔫',
'💣',
'🔪',
'🗡',
'🛡',
'🚬',
'⚰',
'⚱',
'🏺',
'🔮',
'📿',
'💈',
'🧪',
'🧫',
'🧬',
'🧮',
'🔭',
'🔬',
'🕳',
'💊',
'💉',
'🌡',
'🚽',
'🚰',
'🚿',
'🛁',
'🛀',
'🧹',
'🧺',
'🧻',
'🧼',
'🧽',
'🧴',
'🧵',
'🧶',
'🛎',
'🔑',
'🗝',
'🚪',
'🛋',
'🛏',
'🛌',
'🧸',
'🖼',
'🛍',
'🛒',
'🎁',
'🎈',
'🎏',
'🎀',
'🎊',
'🎉',
'🎎',
'🏮',
'🎐',
'🧧',
'📩',
'📨',
'📧',
'💌',
'📥',
'📤',
'📦',
'🏷',
'📪',
'📫',
'📬',
'📭',
'📮',
'📯',
'📜',
'📃',
'📄',
'🧾',
'📑',
'📊',
'📈',
'📉',
'🗒',
'🗓',
'📆',
'📅',
'📇',
'🗃',
'🗳',
'🗄',
'📋',
'📁',
'📂',
'🗂',
'🗞',
'📰',
'📓',
'📔',
'📒',
'📕',
'📗',
'📘',
'📙',
'📚',
'📖',
'🔖',
'🔗',
'📎',
'🖇',
'📐',
'📏',
'🧷',
'📌',
'📍',
'🖊',
'🖋',
'🖌',
'🖍',
'📝',
'✏',
'🔍',
'🔎',
'🔏',
'🔐',
'🐶',
'🐱',
'🐭',
'🐹',
'🐰',
'🦊',
'🦝',
'🐻',
'🐼',
'🦘',
'🦡',
'🐨',
'🐯',
'🦁',
'🐮',
'🐷',
'🐽',
'🐸',
'🐵',
'🙈',
'🙉',
'🙊',
'🐒',
'🐔',
'🐧',
'🐦',
'🐤',
'🐣',
'🐥',
'🦆',
'🦢',
'🦅',
'🦉',
'🦜',
'🦚',
'🦇',
'🐺',
'🐗',
'🐴',
'🦄',
'🐝',
'🐛',
'🦋',
'🐌',
'🐚',
'🐞',
'🐜',
'🦗',
'🕷',
'🕸',
'🦂',
'🦟',
'🦠',
'🐢',
'🐍',
'🦎',
'🦖',
'🦕',
'🐙',
'🦑',
'🦐',
'🦀',
'🦞',
'🐡',
'🐠',
'🐟',
'🐬',
'🐳',
'🐋',
'🦈',
'🐊',
'🐅',
'🐆',
'🦓',
'🦍',
'🐘',
'🦏',
'🦛',
'🐪',
'🐫',
'🦒',
'🦙',
'🐃',
'🐂',
'🐄',
'🐎',
'🐖',
'🐏',
'🐑',
'🐐',
'🦌',
'🐕',
'🐩',
'🐈',
'🐓',
'🦃',
'🕊',
'🐇',
'🐁',
'🐀',
'🐿',
'🦔',
'🐾',
'🐉',
'🐲',
'🌵',
'🎄',
'🌲',
'🌳',
'🌴',
'🌱',
'🌿',
'🍀',
'🎍',
'🎋',
'🍃',
'🍂',
'🍁',
'🍄',
'🌾',
'💐',
'🌷',
'🌹',
'🥀',
'🌺',
'🌸',
'🌼',
'🌻',
'🌞',
'🌝',
'🌛',
'🌜',
'🌚',
'🌕',
'🌖',
'🌗',
'🌘',
'🌑',
'🌒',
'🌓',
'🌔',
'🌙',
'🌎',
'🌍',
'🌏',
'💫',
'⭐',
'🌟',
'⚡',
'💥',
'🔥',
'🌪',
'🌈',
'🌤',
'⛅',
'🌥',
'🌦',
'🌧',
'⛈',
'🌩',
'🌨',
'⛄',
'🌬',
'💨',
'💧',
'💦',
'🌊',
'🌫',
'🍏',
'🍎',
'🍐',
'🍊',
'🍋',
'🍌',
'🍉',
'🍇',
'🍓',
'🍈',
'🍒',
'🍑',
'🥭',
'🍍',
'🥥',
'🥝',
'🍅',
'🍆',
'🥑',
'🥦',
'🥬',
'🥒',
'🌶',
'🌽',
'🥕',
'🥔',
'🍠',
'🥐',
'🍞',
'🥖',
'🥨',
'🥯',
'🧀',
'🥚',
'🍳',
'🥞',
'🥓',
'🥩',
'🍗',
'🍖',
'🌭',
'🍔',
'🍟',
'🍕',
'🥪',
'🥙',
'🌮',
'🌯',
'🥗',
'🥘',
'🥫',
'🍝',
'🍜',
'🍲',
'🍛',
'🍣',
'🍱',
'🍤',
'🍙',
'🍚',
'🍘',
'🍥',
'🥠',
'🍢',
'🍡',
'🍧',
'🍨',
'🍦',
'🥧',
'🍰',
'🎂',
'🥮',
'🧁',
'🍮',
'🍭',
'🍬',
'🍫',
'🍿',
'🧂',
'🍩',
'🥟',
'🍪',
'🌰',
'🥜',
'🍯',
'🥛',
'🍼',
'🍵',
'🥤',
'🍶',
'🍺',
'🍻',
'🥂',
'🍷',
'🥃',
'🍸',
'🍹',
'🍾',
'🥄',
'🍴',
'🍽',
'🥣',
'🥡',
'🥢',
'😀',
'😃',
'😄',
'😁',
'😆',
'😅',
'😂',
'🤣',
'☺',
'😊',
'😇',
'🙂',
'🙃',
'😉',
'😌',
'😍',
'😘',
'🥰',
'😗',
'😙',
'😚',
'😋',
'😛',
'😝',
'😜',
'🤪',
'🤨',
'🧐',
'🤓',
'😎',
'🤩',
'🥳',
'😏',
'😒',
'😞',
'😔',
'😟',
'😕',
'🙁',
'😣',
'😖',
'😫',
'😩',
'😢',
'😭',
'😤',
'😠',
'😡',
'🤬',
'🤯',
'😳',
'😱',
'😨',
'😰',
'🥵',
'🥶',
'🥺',
'😥',
'😓',
'🤗',
'🤔',
'🤭',
'🤫',
'🤥',
'😶',
'😐',
'😑',
'😬',
'🙄',
'😯',
'😦',
'😧',
'😮',
'😲',
'😴',
'🤤',
'😪',
'😵',
'🤐',
'🥴',
'🤢',
'🤮',
'🤧',
'😷',
'🤒',
'🤕',
'🤑',
'🤠',
'😈',
'👿',
'👹',
'👺',
'🤡',
'💩',
'👻',
'💀',
'👽',
'👾',
'🤖',
'🎃',
'😺',
'😸',
'😹',
'😻',
'😼',
'😽',
'🙀',
'😿',
'😾',
'🤲',
'👐',
'🙌',
'👏',
'🤝',
'👍',
'👎',
'👊',
'✊',
'🤛',
'🤜',
'🤞',
'✌',
'🤟',
'🤘',
'👌',
'👈',
'👉',
'👆',
'👇',
'☝',
'✋',
'🤚',
'🖐',
'🖖',
'👋',
'🤙',
'💪',
'🦵',
'🦶',
'🖕',
'✍',
'🙏',
'💍',
'💄',
'💋',
'👄',
'👅',
'👂',
'👃',
'👣',
'👀',
'🧠',
'🦴',
'🦷',
'🗣',
'👤',
'👥',
'👶',
'👧',
'🧒',
'👦',
'👩',
'🧑',
'👨',
'👱',
'🧔',
'👵',
'🧓',
'👴',
'👲',
'👳',
'🧕',
'👮',
'👷',
'💂',
'🕵',
'👰',
'🤵',
'👸',
'🤴',
'🤶',
'🎅',
'🦸',
'🦹',
'🧙',
'🧝',
'🧛',
'🧟',
'🧞',
'🧜',
'🧚',
'👼',
'🤰',
'🤱',
'🙇',
'💁',
'🙅',
'🙆',
'🙋',
'🤦',
'🤷',
'🙎',
'🙍',
'💇',
'💆',
'🧖',
'💅',
'🤳',
'💃',
'🕺',
'👯',
'🕴',
'🚶',
'🏃',
'👫',
'👭',
'👬',
'💑',
'💏',
'👪',
'🧥',
'👚',
'👕',
'👖',
'👔',
'👗',
'👙',
'👘',
'🥼',
'👠',
'👡',
'👢',
'👞',
'👟',
'🥾',
'🥿',
'🧦',
'🧤',
'🧣',
'🎩',
'🧢',
'👒',
'🎓',
'⛑',
'👑',
'👝',
'👛',
'👜',
'💼',
'🎒',
'👓',
'🕶',
'🥽',
'🌂',
'🦰',
'🦱',
'🦳',
'🦲',
'🇿',
'🇾',
'🇽',
'🇼',
'🇻',
'🇺',
'🇹',
'🇸',
'🇷',
'🇶',
'🇵',
'🇴',
'🇳',
'🇲',
'🇱',
'🇰',
'🇯',
'🇮',
'🇭',
'🇬',
'🇫',
'🇪',
'🇩',
'🇨',
'🇧',
'🇦',
'🚗',
'🚕',
'🚙',
'🚌',
'🚎',
'🏎',
'🚓',
'🚑',
'🚒',
'🚐',
'🚚',
'🚛',
'🚜',
'🛴',
'🚲',
'🛵',
'🏍',
'🚨',
'🚔',
'🚍',
'🚘',
'🚖',
'🚡',
'🚠',
'🚟',
'🚃',
'🚋',
'🚞',
'🚝',
'🚄',
'🚅',
'🚈',
'🚂',
'🚆',
'🚇',
'🚊',
'🚉',
'🛫',
'🛬',
'🛩',
'💺',
'🧳',
'🛰',
'🚀',
'🛸',
'🚁',
'🛶',
'⛵',
'🚤',
'🛥',
'🛳',
'⛴',
'🚢',
'⛽',
'🚧',
'🚦',
'🚥',
'🚏',
'🗺',
'🗿',
'🗽',
'🗼',
'🏰',
'🏯',
'🏟',
'🎡',
'🎢',
'🎠',
'⛲',
'⛱',
'🏖',
'🏝',
'🏜',
'🌋',
'⛰',
'🏔',
'🗻',
'🏕',
'⛺',
'🏠',
'🏡',
'🏘',
'🏚',
'🏗',
'🏭',
'🏢',
'🏬',
'🏣',
'🏤',
'🏥',
'🏦',
'🏨',
'🏪',
'🏫',
'🏩',
'💒',
'🏛',
'⛪',
'🕌',
'🕍',
'🕋',
'⛩',
'🛤',
'🛣',
'🗾',
'🎑',
'🏞',
'🌅',
'🌄',
'🌠',
'🎇',
'🎆',
'🧨',
'🌇',
'🌆',
'🏙',
'🌃',
'🌌',
'🌉',
'🔒',
'🔓',
'🌁',
'🏳',
'🏴',
'🏁',
'🚩',
'🎌',
'🏻',
'🏼',
'🏽',
'🏾',
'🏿'
]
};
// Add all emoji in a dropdown
$.extend(true, $.trumbowyg, {
langs: {
// jshint camelcase:false
en: {
emoji: 'Add an emoji'
},
da: {
emoji: 'Tilføj et humørikon'
},
de: {
emoji: 'Emoticon einfügen'
},
fr: {
emoji: 'Ajouter un emoji'
},
zh_cn: {
emoji: '添加表情'
},
ru: {
emoji: 'Вставить emoji'
},
ja: {
emoji: '絵文字の挿入'
},
tr: {
emoji: 'Emoji ekle'
},
ko: {
emoji: '이모지 넣기'
},
},
// jshint camelcase:true
plugins: {
emoji: {
init: function (trumbowyg) {
trumbowyg.o.plugins.emoji = trumbowyg.o.plugins.emoji || defaultOptions;
var emojiBtnDef = {
dropdown: buildDropdown(trumbowyg)
};
trumbowyg.addBtnDef('emoji', emojiBtnDef);
}
}
}
});
function buildDropdown(trumbowyg) {
var dropdown = [];
$.each(trumbowyg.o.plugins.emoji.emojiList, function (i, emoji) {
if ($.isArray(emoji)) { // Custom emoji behaviour
var emojiCode = emoji[0],
emojiUrl = emoji[1],
emojiHtml = '<img src="' + emojiUrl + '" alt="' + emojiCode + '">',
customEmojiBtnName = 'emoji-' + emojiCode.replace(/:/g, ''),
customEmojiBtnDef = {
hasIcon: false,
text: emojiHtml,
fn: function () {
trumbowyg.execCmd('insertImage', emojiUrl, false, true);
return true;
}
};
trumbowyg.addBtnDef(customEmojiBtnName, customEmojiBtnDef);
dropdown.push(customEmojiBtnName);
} else { // Default behaviour
var btn = emoji.replace(/:/g, ''),
defaultEmojiBtnName = 'emoji-' + btn,
defaultEmojiBtnDef = {
text: emoji,
fn: function () {
var encodedEmoji = String.fromCodePoint(emoji.replace('&#', '0'));
trumbowyg.execCmd('insertText', encodedEmoji);
return true;
}
};
trumbowyg.addBtnDef(defaultEmojiBtnName, defaultEmojiBtnDef);
dropdown.push(defaultEmojiBtnName);
}
});
return dropdown;
}
})(jQuery);