Jump to content

MediaWiki:Gadget-EmojiVE.js

From Continuum Universes Wiki

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.
/* MediaWiki:Gadget-EmojiVE.js (ES5) */
mw.loader.using(['ext.visualEditor.desktopArticleTarget.init']).done(function () {
  var EmojiButton = window.EmojiButton;
  if (!EmojiButton) { mw.log.error('EmojiButton global missing (enable EmojiLib or include the UMD build)'); return; }

  function openPicker(surface, anchor) {
    var picker = new EmojiButton({ showSearch: true, showRecents: true });
    picker.on('emoji', function (sel) {
      var fragment = surface.getModel().getFragment();
      fragment.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 () {
      var 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(function () { registerTool(); });
});