Jump to content

MediaWiki: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.
mw.loader.using([]).then(() => {
  const $box = $('#wpTextbox1');
  if (!$box.length) return;

  // Use the globally provided EmojiButton from EmojiLib
  const EmojiButton = window.EmojiButton;
  if (!EmojiButton) { console.error('EmojiButton global missing'); return; }

  const $trigger = $('<button type="button" id="emoji-trigger" class="mw-ui-button">😀 Emoji</button>');
  const $tools = $('#wikiEditor-ui-toolbar, .editOptions').first();
  ($tools.length ? $tools : $box.before($('<div class="emoji-trigger-wrap">')).prev()).prepend($trigger);

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

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

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