Jump to content

MediaWiki:Gadget-EmojiPicker.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-EmojiPicker.js (ES5) */
mw.loader.using([]).done(function () {
  var $box = $('#wpTextbox1');
  if (!$box.length) return;

  var EmojiButton = window.EmojiButton;
  if (!EmojiButton) { mw.log.error('EmojiButton global missing (enable EmojiLib or include the UMD build)'); return; }

  var $trigger = $('<button type="button" id="emoji-trigger" class="mw-ui-button">😀 Emoji</button>');
  var $tools = $('#wikiEditor-ui-toolbar, .editOptions').first();
  if ($tools.length) {
    $tools.prepend($trigger);
  } else {
    $box.before($('<div class="emoji-trigger-wrap">').append($trigger));
  }

  var picker = new EmojiButton({ showSearch: true, showRecents: true, autoHide: true, emojisPerRow: 8 });

  picker.on('emoji', function (sel) {
    var ta = $box.get(0);
    var s = ta.selectionStart;
    var e = ta.selectionEnd;
    var val = ta.value;
    ta.value = val.slice(0, s) + sel.emoji + val.slice(e);
    var pos = s + sel.emoji.length;
    ta.focus();
    ta.setSelectionRange(pos, pos);
  });

  $('#emoji-trigger').on('click', function () { picker.togglePicker(this); });
});