MediaWiki:EmojiVE.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
mw.loader.using(['ext.visualEditor.desktopArticleTarget.init']).then(() => {
const EmojiButton = window.EmojiButton;
if (!EmojiButton) { console.error('EmojiButton global missing'); return; }
function openPicker(surface, anchor) {
const picker = new EmojiButton({ showSearch: true, showRecents: true });
picker.on('emoji', sel => {
const frag = surface.getModel().getFragment();
frag.insertContent(sel.emoji);
surface.getView().focus();
});
picker.togglePicker(anchor);
}
function registerTool() {
function EmojiTool() { EmojiTool.super.apply(this, arguments); }
OO.inheritClass(EmojiTool, ve.ui.Tool);
EmojiTool.static.name = 'emojiButton';
EmojiTool.static.group = 'insert';
EmojiTool.static.icon = 'smiley';
EmojiTool.static.title = 'Insert emoji';
EmojiTool.prototype.onSelect = function () {
const surface = this.toolbar.getSurface();
openPicker(surface, this.$element[0]);
this.setActive(false);
};
EmojiTool.prototype.onUpdateState = function () {};
ve.ui.toolFactory.register(EmojiTool);
}
mw.hook('ve.activationComplete').add(registerTool);
});