User:Alexis Jazz/Factotum/modules/Emoji-inator.js

if ( typeof window.FTTModules == 'undefined' ) { window.FTTModules=[]; } /*globals $:false,mw:false,OO:false*/ window.FTTModules.push({'load':['afterOpenForm','processComment'],'afterOpenFormFunc':function(emoInt){	FTT.MD.emoji = {};	FTT.MD.emoji.div = document.createElement('div');	FTT.MD.emoji.div.id = 'FTTEmojiContainer';	FTT.MD.emoji.divAll = document.createElement('div');	FTT.MD.emoji.divAll.id = 'FTTEmojiButtons';	FTT.MD.emoji.emojis = [ //descriptions copied from Emoticons (Unicode block) (CC BY-SA 3.0) which is partially based on https://unicode.org/Public/UNIDATA/emoji/emoji-data.txt (https://www.unicode.org/license.txt)		['😀',new RegExp(':\\-D','g'),'grinning face'],		['😁',null,'grinning face with smiling eyes'],		['😂',null,'face with tears of joy'],		['😃',new RegExp(':-\\)','g'),'smiling face with open mouth (c.f. ☺)'], ['😄',null,'smiling face with open mouth and smiling eyes'], ['😅',null,'smiling face with open mouth and cold sweat'], ['😆',null,'smiling face with open mouth and tightly-closed eyes'], ['😇',null,'smiling face with halo '], ['😈',null,'smiling face with horns (c.f. 👿 "imp")'], ['😉',new RegExp(';-\\)','g'),'winking face'],		['😊',null,'smiling face with smiling eyes'],		['😋',null,'face savouring delicious food'],		['😌',null,'relieved face'],		['😍',null,'smiling face with heart-shaped eyes'],		['😎',null,'smiling face with sunglasses'],		['😏',null,'smirking face'],		['😐',null,'neutral face (also used for "west wind" 西 in some Mahjong annotation)'],		['😑',null,'expressionless face'],		['😒',null,'unamused face'],		['😓',null,'face with cold sweat'],		['😔',null,'pensive face'],		['😕',null,'confused face'],		['😖',null,'confounded face'],		['😗',null,'kissing face'],		['😘',null,'face throwing a kiss'],		['😙',null,'kissing face with smiling eyes'],		['😚',null,'kissing face with closed eyes'],		['😛',null,'face with stuck-out tongue'],		['😜',null,'face with stuck-out tongue and winking eye'],		['😝',null,'face with stuck-out tongue and tightly-closed eyes'], ['😞',null,'disappointed face'], ['😟',null,'worried face'], ['😠',null,'angry face'], ['😡',null,'pouting face'], ['😢',null,'crying face'], ['😣',null,'persevering face'], ['😤',null,'Unicode: face with look of triumph, Apple: huffing with anger face'], ['😥',null,'disappointed but relieved face'], ['😦',null,'frowning face with open mouth'], ['😧',null,'anguished face'], ['😨',null,'fearful face'], ['😩',null,'weary face'], ['😪',null,'sleepy face'], ['😫',null,'tired face'], ['😬',null,'grimacing face'], ['😭',null,'loudly crying face'], ['😮',null,'face with open mouth'], ['😯',null,'hushed face'], ['😰',null,'face with open mouth and cold sweat'], ['😱',null,'face screaming in fear'], ['😲',null,'astonished face'], ['😳',null,'flushed face'], ['😴',null,'sleeping face'], ['😵',null,'dizzy face'], ['😶',null,'face without mouth (c.f. ⚇ "white circle with two dots")'], ['😷',null,'face with medical mask'], ['😸',null,'grinning cat face with smiling eyes'], ['😹',null,'cat face with tears of joy'], ['😺',null,'smiling cat face with open mouth'], ['😻',null,'smiling cat face with heart-shape eyes'], ['😼',null,'cat face with wry smile'], ['😽',null,'kissing cat face with closed eyes'], ['😾',null,'pouting cat face'], ['😿',null,'crying cat face '], ['🙀',null,'weary cat face'], ['🙁',null,'slightly frowning face'], ['🙂',null,'slightly smiling face'], ['🙃',null,'upside-down face'], ['🙄',null,'face with rolling eyes'], ['🙅',null,'face with "no good" gesture, with lower arms crossed, derived from the japanese gesture for "no". Intended as gender-neutral but represented as a woman on most platforms (Apple name: "Woman Gesturing No").'], ['🙆',null,'face with "ok" gesture, described as a person with arms raised above the head forming a "circle", interpreted as "OK sign" (derived from the japanese gesture for "OK"). Intended as gender-neutral but represented as a woman on most platforms (Apple name: "Woman Gesturing OK").'], ['🙇',null,'person bowing (dogeza), depicted as a man on most platforms (Apple name: "Man Bowing")'], ['🙈',null,'see-no-evil monkey'], ['🙉',null,'hear-no-evil monkey'], ['🙊',null,'speak-no-evil monkey'], ['🙋',null,'happy person raising one hand, a person raising one hand as if to answer a question, intended as gender-neutral but represented as a woman on most platforms (Apple name: "Happy Woman Raising One Hand")'], ['🙌',null,'person raising both hands in celebration, on many platforms depicted as just the raised hands (Apple name: "Hands Raised in Celebration")'], ['🙍',null,'person frowning'], ['🙎',null,'person with pouting face'], ['🙏',null,'person with folded hands (to indicate variously sorrow, regret, pleading, praying, bowing, thanking). In most platforms depicted as just the hand, pressed together but not folded (Apple name: "Hands Pressed Together").'] ];	FTT.MD.emoji.buttons = []; FTT.MD.emoji.makeButton = function(int,emoji,desc){ FTT.MD.emoji.buttons[int] = new OO.ui.ButtonWidget({label:emoji,title:desc,framed:false}); FTT.MD.emoji.buttons[int].$button.attr('aria-label',desc); FTT.MD.emoji.buttons[int].on('click',function{ console.log(this);FTT.insertMarkup('cI',,emoji+' ',,FTT.focusNode,FTT.focusOffset,FTT.anchorNode,FTT.anchorOffset);}); };	for(emoInt=0;emoInt<FTT.MD.emoji.emojis.length;emoInt++) { FTT.MD.emoji.makeButton(emoInt,FTT.MD.emoji.emojis[emoInt][0],FTT.MD.emoji.emojis[emoInt][1]); }	FTT.MD.emoji.horizontalLayout = new OO.ui.HorizontalLayout({items:FTT.MD.emoji.buttons}); FTT.MD.emoji.divAll.append(FTT.MD.emoji.horizontalLayout.$element[0]); FTT.insertAfter($('#FTTCustomInserts')[0],FTT.MD.emoji.divAll); if ( ! FTT.MD.emoji.addedCSS ) { mw.util.addCSS('#FTTEmojiButtons .oo-ui-buttonElement-frameless.oo-ui-labelElement:first-child{margin-left:unset !important} #FTTEmojiButtons .oo-ui-buttonElement-button:active{border:none !important} #FTTEmojiButtons .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button{border-width:0 !important}'); FTT.MD.emoji.addedCSS = 1; }	},processCommentFunc:function(text1,emoInt2){ if ( ! text1 || ! FTT.MD.emoji ) { return text1; }		for(emoInt2=0;emoInt2<FTT.MD.emoji.emojis.length;emoInt2++) { if ( FTT.MD.emoji.emojis[emoInt2][1] ) { text1 = text1.replace(FTT.MD.emoji.emojis[emoInt2][1],FTT.MD.emoji.emojis[emoInt2][0]); }		}		return text1; } });