{"version":3,"file":"NcEmojiPicker-DG3qO_fi-C6ID1-jK.chunk.mjs","sources":["../node_modules/emoji-mart-vue-fast/src/utils/store.js","../node_modules/emoji-mart-vue-fast/src/utils/data.js","../node_modules/emoji-mart-vue-fast/src/utils/frequently.js","../node_modules/emoji-mart-vue-fast/src/svgs/index.js","../node_modules/emoji-mart-vue-fast/src/components/anchors.vue","../node_modules/emoji-mart-vue-fast/src/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart-vue-fast/src/utils/index.js","../node_modules/emoji-mart-vue-fast/src/utils/emoji-data.js","../node_modules/emoji-mart-vue-fast/src/utils/shared-props.js","../node_modules/emoji-mart-vue-fast/src/components/Emoji.vue","../node_modules/emoji-mart-vue-fast/src/components/category.vue","../node_modules/emoji-mart-vue-fast/src/components/skins.vue","../node_modules/emoji-mart-vue-fast/src/components/preview.vue","../node_modules/emoji-mart-vue-fast/src/components/search.vue","../node_modules/emoji-mart-vue-fast/src/vendor/raf-polyfill.js","../node_modules/emoji-mart-vue-fast/src/utils/picker.js","../node_modules/emoji-mart-vue-fast/src/components/Picker.vue","../node_modules/@nextcloud/vue/dist/chunks/NcEmojiPicker-DG3qO_fi.mjs"],"sourcesContent":["var NAMESPACE = 'emoji-mart'\n\nconst _JSON = JSON\n\nvar isLocalStorageSupported =\n  typeof window !== 'undefined' && 'localStorage' in window\n\nlet getter\nlet setter\n\nfunction setHandlers(handlers) {\n  handlers || (handlers = {})\n\n  getter = handlers.getter\n  setter = handlers.setter\n}\n\nfunction setNamespace(namespace) {\n  NAMESPACE = namespace\n}\n\nfunction update(state) {\n  for (let key in state) {\n    let value = state[key]\n    set(key, value)\n  }\n}\n\nfunction set(key, value) {\n  if (setter) {\n    setter(key, value)\n  } else {\n    if (!isLocalStorageSupported) return\n    try {\n      window.localStorage[`${NAMESPACE}.${key}`] = _JSON.stringify(value)\n    } catch (e) {}\n  }\n}\n\nfunction get(key) {\n  if (getter) {\n    return getter(key)\n  } else {\n    if (!isLocalStorageSupported) return\n    try {\n      var value = window.localStorage[`${NAMESPACE}.${key}`]\n    } catch (e) {\n      return\n    }\n\n    if (value) {\n      return JSON.parse(value)\n    }\n  }\n}\n\nexport default { update, set, get, setNamespace, setHandlers }\n","const mapping = {\n  name: 'a',\n  unified: 'b',\n  non_qualified: 'c',\n  has_img_apple: 'd',\n  has_img_google: 'e',\n  has_img_twitter: 'f',\n  has_img_facebook: 'h',\n  keywords: 'j',\n  sheet: 'k',\n  emoticons: 'l',\n  text: 'm',\n  short_names: 'n',\n  added_in: 'o',\n}\n\nconst buildSearch = (emoji) => {\n  const search = []\n\n  var addToSearch = (strings, split) => {\n    if (!strings) {\n      return\n    }\n\n    ;(Array.isArray(strings) ? strings : [strings]).forEach((string) => {\n      ;(split ? string.split(/[-|_|\\s]+/) : [string]).forEach((s) => {\n        s = s.toLowerCase()\n\n        if (search.indexOf(s) == -1) {\n          search.push(s)\n        }\n      })\n    })\n  }\n\n  addToSearch(emoji.short_names, true)\n  addToSearch(emoji.name, true)\n  addToSearch(emoji.keywords, false)\n  addToSearch(emoji.emoticons, false)\n\n  return search.join(',')\n}\n\nfunction deepFreeze(object) {\n  // Retrieve the property names defined on object\n  var propNames = Object.getOwnPropertyNames(object)\n\n  // Freeze properties before freezing self\n  for (let name of propNames) {\n    let value = object[name]\n    object[name] =\n      value && typeof value === 'object' ? deepFreeze(value) : value\n  }\n  return Object.freeze(object)\n}\n\nconst uncompress = (data) => {\n  if (!data.compressed) {\n    return data\n  }\n  data.compressed = false\n\n  for (let id in data.emojis) {\n    let emoji = data.emojis[id]\n\n    for (let key in mapping) {\n      emoji[key] = emoji[mapping[key]]\n      delete emoji[mapping[key]]\n    }\n\n    if (!emoji.short_names) emoji.short_names = []\n    emoji.short_names.unshift(id)\n\n    emoji.sheet_x = emoji.sheet[0]\n    emoji.sheet_y = emoji.sheet[1]\n    delete emoji.sheet\n\n    if (!emoji.text) emoji.text = ''\n\n    if (!emoji.added_in) emoji.added_in = 6\n    emoji.added_in = emoji.added_in.toFixed(1)\n\n    emoji.search = buildSearch(emoji)\n  }\n  data = deepFreeze(data)\n  return data\n}\n\nexport { buildSearch, uncompress }\n","import store from './store'\n\nconst DEFAULTS = [\n  '+1',\n  'grinning',\n  'kissing_heart',\n  'heart_eyes',\n  'laughing',\n  'stuck_out_tongue_winking_eye',\n  'sweat_smile',\n  'joy',\n  'scream',\n  'disappointed',\n  'unamused',\n  'weary',\n  'sob',\n  'sunglasses',\n  'heart',\n  'hankey',\n]\n\nlet frequently, initialized\nlet defaults = {}\n\nfunction init() {\n  initialized = true\n  frequently = store.get('frequently')\n}\n\nfunction add(emoji) {\n  if (!initialized) init()\n  var { id } = emoji\n\n  frequently || (frequently = defaults)\n  frequently[id] || (frequently[id] = 0)\n  frequently[id] += 1\n\n  store.set('last', id)\n  store.set('frequently', frequently)\n}\n\nfunction get(maxNumber) {\n  if (!initialized) init()\n  if (!frequently) {\n    defaults = {}\n\n    const result = []\n\n    let defaultLength = Math.min(maxNumber, DEFAULTS.length)\n    for (let i = 0; i < defaultLength; i++) {\n      defaults[DEFAULTS[i]] = parseInt((defaultLength - i) / 4, 10) + 1\n      result.push(DEFAULTS[i])\n    }\n\n    return result\n  }\n\n  const quantity = maxNumber\n  const frequentlyKeys = []\n\n  for (let key in frequently) {\n    if (frequently.hasOwnProperty(key)) {\n      frequentlyKeys.push(key)\n    }\n  }\n\n  const sorted = frequentlyKeys\n    .sort((a, b) => frequently[a] - frequently[b])\n    .reverse()\n  const sliced = sorted.slice(0, quantity)\n\n  const last = store.get('last')\n\n  if (last && sliced.indexOf(last) == -1) {\n    sliced.pop()\n    sliced.push(last)\n  }\n\n  return sliced\n}\n\nexport default { add, get }\n","const SVGs = {\n  activity: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"/></svg>`,\n\n  custom: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><g transform=\"translate(2.000000, 1.000000)\"><rect id=\"Rectangle\" x=\"8\" y=\"0\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect></g></svg>`,\n\n  flags: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"/></svg>`,\n\n  foods: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"/></svg>`,\n\n  nature: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"/><path d=\"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"/></svg>`,\n\n  objects: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"/><path d=\"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"/></svg>`,\n\n  smileys: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/><path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"/></svg>`,\n\n  people: `<svg xmlns:svg=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\" viewBox=\"0 0 24 24\"> <path id=\"path3814\" d=\"m 3.3591089,21.17726 c 0.172036,0.09385 4.265994,2.29837 8.8144451,2.29837 4.927767,0 8.670894,-2.211883 8.82782,-2.306019 0.113079,-0.06785 0.182268,-0.190051 0.182267,-0.321923 0,-3.03119 -0.929494,-5.804936 -2.617196,-7.810712 -1.180603,-1.403134 -2.661918,-2.359516 -4.295699,-2.799791 4.699118,-2.236258 3.102306,-9.28617162 -2.097191,-9.28617162 -5.1994978,0 -6.7963103,7.04991362 -2.097192,9.28617162 -1.6337821,0.440275 -3.1150971,1.396798 -4.2956991,2.799791 -1.687703,2.005776 -2.617196,4.779522 -2.617196,7.810712 1.2e-6,0.137378 0.075039,0.263785 0.195641,0.329572 z M 8.0439319,5.8308783 C 8.0439309,2.151521 12.492107,0.30955811 15.093491,2.9109411 17.694874,5.5123241 15.852911,9.9605006 12.173554,9.9605 9.8938991,9.9579135 8.0465186,8.1105332 8.0439319,5.8308783 Z m -1.688782,7.6894977 c 1.524535,-1.811449 3.5906601,-2.809035 5.8184041,-2.809035 2.227744,0 4.293869,0.997586 5.818404,2.809035 1.533639,1.822571 2.395932,4.339858 2.439152,7.108301 -0.803352,0.434877 -4.141636,2.096112 -8.257556,2.096112 -3.8062921,0 -7.3910861,-1.671043 -8.2573681,-2.104981 0.04505,-2.765017 0.906968,-5.278785 2.438964,-7.099432 z\" /> <path id=\"path3816\" d=\"M 12.173828 0.38867188 C 9.3198513 0.38867187 7.3770988 2.3672285 6.8652344 4.6308594 C 6.4218608 6.5916015 7.1153562 8.7676117 8.9648438 10.126953 C 7.6141249 10.677376 6.3550511 11.480944 5.3496094 12.675781 C 3.5629317 14.799185 2.6015625 17.701475 2.6015625 20.847656 C 2.6015654 21.189861 2.7894276 21.508002 3.0898438 21.671875 C 3.3044068 21.788925 7.4436239 24.039062 12.173828 24.039062 C 17.269918 24.039062 21.083568 21.776786 21.291016 21.652344 C 21.57281 21.483266 21.746097 21.176282 21.746094 20.847656 C 21.746094 17.701475 20.78277 14.799185 18.996094 12.675781 C 17.990455 11.480591 16.733818 10.675362 15.382812 10.125 C 17.231132 8.7655552 17.925675 6.5910701 17.482422 4.6308594 C 16.970557 2.3672285 15.027805 0.38867188 12.173828 0.38867188 z M 12.792969 2.3007812 C 13.466253 2.4161792 14.125113 2.7383941 14.695312 3.3085938 C 15.835712 4.4489931 15.985604 5.9473549 15.46875 7.1953125 C 14.951896 8.4432701 13.786828 9.3984378 12.173828 9.3984375 C 10.197719 9.3961954 8.607711 7.806187 8.6054688 5.8300781 C 8.6054683 4.2170785 9.5606362 3.0520102 10.808594 2.5351562 C 11.432573 2.2767293 12.119685 2.1853833 12.792969 2.3007812 z M 12.173828 11.273438 C 14.233647 11.273438 16.133674 12.185084 17.5625 13.882812 C 18.93069 15.508765 19.698347 17.776969 19.808594 20.283203 C 18.807395 20.800235 15.886157 22.162109 12.173828 22.162109 C 8.7614632 22.162109 5.6245754 20.787069 4.5390625 20.265625 C 4.6525896 17.766717 5.4203315 15.504791 6.7851562 13.882812 C 8.2139827 12.185084 10.11401 11.273438 12.173828 11.273438 z \" /> </svg>`,\n\n  places: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"/><path d=\"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"/></svg>`,\n\n  recent: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"/><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/></svg>`,\n\n  symbols: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"/></svg>`,\n}\n\nexport default SVGs\n","<template>\n  <div role=\"tablist\" class=\"emoji-mart-anchors\">\n    <button\n      v-for=\"category in categories\"\n      role=\"tab\"\n      type=\"button\"\n      :aria-label=\"category.name\"\n      :aria-selected=\"category.id == activeCategory.id\"\n      :key=\"category.id\"\n      :class=\"{\n        'emoji-mart-anchor': true,\n        'emoji-mart-anchor-selected': category.id == activeCategory.id,\n      }\"\n      :style=\"{ color: category.id == activeCategory.id ? color : '' }\"\n      :data-title=\"i18n.categories[category.id]\"\n      @click=\"$emit('click', category)\"\n    >\n      <div aria-hidden=\"true\" v-html=\"svgs[category.id]\" />\n      <span\n        aria-hidden=\"true\"\n        class=\"emoji-mart-anchor-bar\"\n        :style=\"{ backgroundColor: color }\"\n      ></span>\n    </button>\n  </div>\n</template>\n\n<script>\nimport svgs from '../svgs'\n\nexport default {\n  props: {\n    i18n: {\n      type: Object,\n      required: true,\n    },\n    color: {\n      type: String,\n    },\n    categories: {\n      type: Array,\n      required: true,\n    },\n    activeCategory: {\n      type: Object,\n      default() {\n        return {}\n      },\n    },\n  },\n  emits: ['click'],\n  created() {\n    this.svgs = svgs\n  },\n}\n</script>\n","const _String = String\n\nexport default _String.fromCodePoint ||\n  function stringFromCodePoint() {\n    var MAX_SIZE = 0x4000\n    var codeUnits = []\n    var highSurrogate\n    var lowSurrogate\n    var index = -1\n    var length = arguments.length\n    if (!length) {\n      return ''\n    }\n    var result = ''\n    while (++index < length) {\n      var codePoint = Number(arguments[index])\n      if (\n        !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n        codePoint < 0 || // not a valid Unicode code point\n        codePoint > 0x10ffff || // not a valid Unicode code point\n        Math.floor(codePoint) != codePoint // not an integer\n      ) {\n        throw RangeError('Invalid code point: ' + codePoint)\n      }\n      if (codePoint <= 0xffff) {\n        // BMP code point\n        codeUnits.push(codePoint)\n      } else {\n        // Astral code point; split in surrogate halves\n        // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        codePoint -= 0x10000\n        highSurrogate = (codePoint >> 10) + 0xd800\n        lowSurrogate = (codePoint % 0x400) + 0xdc00\n        codeUnits.push(highSurrogate, lowSurrogate)\n      }\n      if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n        result += String.fromCharCode.apply(null, codeUnits)\n        codeUnits.length = 0\n      }\n    }\n    return result\n  }\n","import stringFromCodePoint from '../polyfills/stringFromCodePoint'\n\nfunction unifiedToNative(unified) {\n  var unicodes = unified.split('-'),\n    codePoints = unicodes.map((u) => `0x${u}`)\n\n  return stringFromCodePoint.apply(null, codePoints)\n}\n\nfunction uniq(arr) {\n  return arr.reduce((acc, item) => {\n    if (acc.indexOf(item) === -1) {\n      acc.push(item)\n    }\n    return acc\n  }, [])\n}\n\nfunction intersect(a, b) {\n  const uniqA = uniq(a)\n  const uniqB = uniq(b)\n\n  return uniqA.filter((item) => uniqB.indexOf(item) >= 0)\n}\n\nfunction deepMerge(a, b) {\n  var o = {}\n\n  for (let key in a) {\n    let originalValue = a[key],\n      value = originalValue\n\n    if (Object.prototype.hasOwnProperty.call(b, key)) {\n      value = b[key]\n    }\n\n    if (typeof value === 'object') {\n      value = deepMerge(originalValue, value)\n    }\n\n    o[key] = value\n  }\n\n  return o\n}\n\n// https://github.com/sonicdoe/measure-scrollbar\nfunction measureScrollbar() {\n  if (typeof document == 'undefined') return 0\n  const div = document.createElement('div')\n\n  div.style.width = '100px'\n  div.style.height = '100px'\n  div.style.overflow = 'scroll'\n  div.style.position = 'absolute'\n  div.style.top = '-9999px'\n\n  document.body.appendChild(div)\n  const scrollbarWidth = div.offsetWidth - div.clientWidth\n  document.body.removeChild(div)\n\n  return scrollbarWidth\n}\n\nexport { uniq, intersect, deepMerge, unifiedToNative, measureScrollbar }\n","import { intersect, unifiedToNative } from './index'\nimport { uncompress, buildSearch } from './data'\nimport frequently from './frequently'\n\nconst SHEET_COLUMNS = 61\nconst COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/\n// Skin tones\nconst SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF']\n\n/**\n * Emoji data structure:\n * {\n *    \"compressed\": false,\n *    \"aliases\": {\n *      collision: \"boom\"\n *      cooking: \"fried_egg\"\n *      envelope: \"email\"\n *      face_with_finger_covering_closed_lips: \"shushing_face\"\n *      ...\n *    },\n *    \"categories\": [ {\n *      id: \"people\",\n *      name: \"Smileys & Emotion\",\n *      emojis: [ \"grinning\", \"grin\", \"joy\", ... ]\n *    }, {\n *      id: \"nature\",\n *      name: \"Animals & Nature\",\n *      emojis: [ \"monkey_face\", \"money\", \"gorilla\", ... ]\n *    },\n *    ...\n *    ],\n *    \"emojis\": [\n *      smiley: {\n *        added_in: \"6.0\",\n *        emoticons: [\"=)\", \"=-)\"],\n *        has_img_apple: true,\n *        has_img_facebook: true,\n *        has_img_google: true,\n *        has_img_twitter: true,\n *        keywords: [\"face\", \"happy\", \"joy\", \"haha\", \":D\", \":)\", \"smile\", \"funny\"],\n *        name: \"Smiling Face with Open Mouth\",\n *        non_qualified: undefined,\n *        search: \"smiley,smiling,face,with,open,mouth,happy,joy,haha,:d,:),smile,funny,=),=-)\",\n *        sheet_x: 30,\n *        sheet_y: 27,\n *        short_names: [\"smiley\"],\n *        text: \":)\",\n *        unified: \"1F603\",\n *      }, {\n *      +1: {    // emoji with skin_variations\n *          ..., // all the regular fields are present\n *          name: \"Thumbs Up Sign\",\n *          short_names: (2) [\"+1\", \"thumbsup\"],\n *          skin_variations: {\n *            1F3FB:             // each variation has additional set of fields:\n *              added_in: \"8.0\",\n *              has_img_apple: true,\n *              has_img_facebook: true,\n *              has_img_google: true,\n *              has_img_twitter: true,\n *              image: \"1f44d-1f3fb.png\",\n *              non_qualified: null,\n *              sheet_x: 14,\n *              sheet_y: 50,\n *              unified: \"1F44D-1F3FB\",\n *            1F3FB: {…},\n *            1F3FC: {…},\n *            1F3FD: {…},\n *            1F3FE: {…},\n *            1F3FF: {…}\n *            },\n *          ...\n *      },\n *      a: {  // emoji with non_qualified field set\n *        added_in: \"6.0\",\n *        emoticons: undefined,\n *        has_img_apple: true,\n *        ...\n *        non_qualified: \"1F170\",\n *        unified: \"1F170-FE0F\",\n *     },\n *     ...\n *   ]\n * }\n */\n\n/**\n * Wraps raw jason emoji data, serves as data source for\n * emoji picker components.\n *\n * Usage:\n *\n *   import data from '../data/all.json'\n *   let index = new EmojiIndex(data)\n *\n */\nexport class EmojiIndex {\n  /**\n   * Constructor.\n   *\n   * @param {object} data - Raw json data, see the structure above.\n   * @param {object} options - additional options, as an object:\n   * @param {Function} emojisToShowFilter - optional, function to filter out\n   *   some emojis, function(emoji) { return true|false }\n   *   where `emoji` is an raw emoji object, see data.emojis above.\n   * @param {Array} include - optional, a list of category ids to include.\n   * @param {Array} exclude - optional, a list of category ids to exclude.\n   * @param {Array} custom - optional, a list custom emojis, each emoji is\n   *   an object, see data.emojis above for examples.\n   */\n  constructor(\n    data,\n    {\n      emojisToShowFilter,\n      include,\n      exclude,\n      custom,\n      recent,\n      recentLength = 20,\n    } = {},\n  ) {\n    this._data = uncompress(data)\n    // Callback to exclude specific emojis\n    this._emojisFilter = emojisToShowFilter || null\n    // Categories to include / exclude\n    this._include = include || null\n    this._exclude = exclude || null\n    // Custom emojis\n    this._custom = custom || []\n    // Recent emojis\n    // TODO: make parameter configurable\n    this._recent = recent || frequently.get(recentLength)\n\n    this._emojis = {}\n    this._nativeEmojis = {}\n    this._emoticons = {}\n\n    this._categories = []\n    this._recentCategory = { id: 'recent', name: 'Recent', emojis: [] }\n    this._customCategory = { id: 'custom', name: 'Custom', emojis: [] }\n    this._searchIndex = {}\n    this.buildIndex()\n    Object.freeze(this)\n  }\n\n  buildIndex() {\n    let allCategories = this._data.categories\n\n    if (this._include) {\n      // Remove categories that are not in the include list.\n      allCategories = allCategories.filter((item) => {\n        return this._include.includes(item.id)\n      })\n      // Sort categories according to the include list.\n      allCategories = allCategories.sort((a, b) => {\n        const indexA = this._include.indexOf(a.id)\n        const indexB = this._include.indexOf(b.id)\n        if (indexA < indexB) {\n          return -1\n        }\n        if (indexA > indexB) {\n          return 1\n        }\n        return 0\n      })\n    }\n\n    allCategories.forEach((categoryData) => {\n      if (!this.isCategoryNeeded(categoryData.id)) {\n        return\n      }\n      let category = {\n        id: categoryData.id,\n        name: categoryData.name,\n        emojis: [],\n      }\n      categoryData.emojis.forEach((emojiId) => {\n        let emoji = this.addEmoji(emojiId)\n        if (emoji) {\n          category.emojis.push(emoji)\n        }\n      })\n      if (category.emojis.length) {\n        this._categories.push(category)\n      }\n    })\n\n    if (this.isCategoryNeeded('custom')) {\n      if (this._custom.length > 0) {\n        for (let customEmoji of this._custom) {\n          this.addCustomEmoji(customEmoji)\n        }\n      }\n      if (this._customCategory.emojis.length) {\n        this._categories.push(this._customCategory)\n      }\n    }\n\n    if (this.isCategoryNeeded('recent')) {\n      if (this._recent.length) {\n        this._recent.map((id) => {\n          for (let customEmoji of this._customCategory.emojis) {\n            if (customEmoji.id === id) {\n              this._recentCategory.emojis.push(customEmoji)\n              return\n            }\n          }\n          if (this.hasEmoji(id)) {\n            this._recentCategory.emojis.push(this.emoji(id))\n          }\n          return\n        })\n      }\n      // Add recent category to the top\n      if (this._recentCategory.emojis.length) {\n        this._categories.unshift(this._recentCategory)\n      }\n    }\n  }\n\n  /**\n   * Find the emoji from the string\n   */\n  findEmoji(emoji, skin) {\n    // 1. Parse as :emoji_name:skin-tone-xx:\n    let matches = emoji.match(COLONS_REGEX)\n\n    if (matches) {\n      emoji = matches[1]\n      if (matches[2]) {\n        skin = parseInt(matches[2], 10)\n      }\n    }\n\n    // 2. Check if the specified emoji is an alias\n    if (this._data.aliases.hasOwnProperty(emoji)) {\n      emoji = this._data.aliases[emoji]\n    }\n\n    // 3. Check if we have the specified emoji\n    if (this._emojis.hasOwnProperty(emoji)) {\n      let emojiObject = this._emojis[emoji]\n      if (skin) {\n        return emojiObject.getSkin(skin)\n      }\n      return emojiObject\n    }\n\n    // 4. Check if we have the specified native emoji\n    if (this._nativeEmojis.hasOwnProperty(emoji)) {\n      return this._nativeEmojis[emoji]\n    }\n    return null\n  }\n\n  categories() {\n    return this._categories\n  }\n\n  emoji(emojiId) {\n    if (this._data.aliases.hasOwnProperty(emojiId)) {\n      emojiId = this._data.aliases[emojiId]\n    }\n    let emoji = this._emojis[emojiId]\n    if (!emoji) {\n      throw new Error('Can not find emoji by id: ' + emojiId)\n    }\n    return emoji\n  }\n\n  firstEmoji() {\n    let emoji = this._emojis[Object.keys(this._emojis)[0]]\n    if (!emoji) {\n      throw new Error('Can not get first emoji')\n    }\n    return emoji\n  }\n\n  hasEmoji(emojiId) {\n    if (this._data.aliases.hasOwnProperty(emojiId)) {\n      emojiId = this._data.aliases[emojiId]\n    }\n    if (this._emojis[emojiId]) {\n      return true\n    }\n    return false\n  }\n\n  nativeEmoji(unicodeEmoji) {\n    if (this._nativeEmojis.hasOwnProperty(unicodeEmoji)) {\n      return this._nativeEmojis[unicodeEmoji]\n    }\n    return null\n  }\n\n  search(value, maxResults) {\n    maxResults || (maxResults = 75)\n    if (!value.length) {\n      return null\n    }\n    if (value == '-' || value == '-1') {\n      return [this.emoji('-1')]\n    }\n\n    let values = value.toLowerCase().split(/[\\s|,|\\-|_]+/)\n    let allResults = []\n\n    if (values.length > 2) {\n      values = [values[0], values[1]]\n    }\n\n    allResults = values\n      .map((value) => {\n        // Start searchin in the global list of emojis\n        let emojis = this._emojis\n        let currentIndex = this._searchIndex\n        let length = 0\n\n        for (let charIndex = 0; charIndex < value.length; charIndex++) {\n          const char = value[charIndex]\n          length++\n\n          currentIndex[char] || (currentIndex[char] = {})\n          currentIndex = currentIndex[char]\n\n          if (!currentIndex.results) {\n            let scores = {}\n            currentIndex.results = []\n            currentIndex.emojis = {}\n\n            for (let emojiId in emojis) {\n              let emoji = emojis[emojiId]\n              // search is a comma-separated string with words, related\n              // to the emoji, for example:\n              // search: \"smiley,smiling,face,joy,haha,:d,:),smile,funny,=),=-)\",\n              let search = emoji._data.search\n              let sub = value.substr(0, length)\n              let subIndex = search.indexOf(sub)\n              if (subIndex != -1) {\n                let score = subIndex + 1\n                if (sub == emojiId) score = 0\n\n                currentIndex.results.push(emoji)\n                currentIndex.emojis[emojiId] = emoji\n\n                scores[emojiId] = score\n              }\n            }\n            currentIndex.results.sort((a, b) => {\n              var aScore = scores[a.id],\n                bScore = scores[b.id]\n              return aScore - bScore\n            })\n          }\n\n          // continue search in the reduced set of emojis\n          emojis = currentIndex.emojis\n        }\n        return currentIndex.results\n        // The \"filter\" call removes undefined values from allResults\n        // array, for example, if we have \"test \" (with trailing space),\n        // we will get \"[Array, undefined]\" for allResults and after\n        // the \"filter\" call it will turn into \"[Array]\"\n      })\n      .filter((a) => a)\n\n    var results = null\n    if (allResults.length > 1) {\n      results = intersect.apply(null, allResults)\n    } else if (allResults.length) {\n      results = allResults[0]\n    } else {\n      results = []\n    }\n    if (results && results.length > maxResults) {\n      results = results.slice(0, maxResults)\n    }\n    return results\n  }\n\n  addCustomEmoji(customEmoji) {\n    let emojiData = Object.assign({}, customEmoji, {\n      id: customEmoji.short_names[0],\n      custom: true,\n    })\n    if (!emojiData.search) {\n      emojiData.search = buildSearch(emojiData)\n    }\n    let emoji = new EmojiData(emojiData)\n    this._emojis[emoji.id] = emoji\n    this._customCategory.emojis.push(emoji)\n    return emoji\n  }\n\n  addEmoji(emojiId) {\n    // We expect the correct emoji id that is present in the emojis data.\n    let data = this._data.emojis[emojiId]\n\n    if (!this.isEmojiNeeded(data)) {\n      return false\n    }\n\n    let emoji = new EmojiData(data)\n    this._emojis[emojiId] = emoji\n    if (emoji.native) {\n      this._nativeEmojis[emoji.native] = emoji\n    }\n    if (emoji._skins) {\n      for (let idx in emoji._skins) {\n        let skin = emoji._skins[idx]\n        if (skin.native) {\n          this._nativeEmojis[skin.native] = skin\n        }\n      }\n    }\n\n    if (emoji.emoticons) {\n      emoji.emoticons.forEach((emoticon) => {\n        if (this._emoticons[emoticon]) {\n          return\n        }\n        this._emoticons[emoticon] = emojiId\n      })\n    }\n    return emoji\n  }\n\n  /**\n   * Check if we need to include given category.\n   *\n   * @param {string} category_id - The category id.\n   * @return {boolean} - Whether to include the emoji.\n   */\n  isCategoryNeeded(category_id) {\n    let isIncluded =\n      this._include && this._include.length\n        ? this._include.indexOf(category_id) > -1\n        : true\n    let isExcluded =\n      this._exclude && this._exclude.length\n        ? this._exclude.indexOf(category_id) > -1\n        : false\n    if (!isIncluded || isExcluded) {\n      return false\n    }\n    return true\n  }\n\n  /**\n   * Check if we need to include given emoji.\n   *\n   * @param {object} emoji - The raw emoji object.\n   * @return {boolean} - Whether to include the emoji.\n   */\n  isEmojiNeeded(emoji) {\n    if (this._emojisFilter) {\n      return this._emojisFilter(emoji)\n    }\n    return true\n  }\n}\n\nexport class EmojiData {\n  constructor(data) {\n    this._data = Object.assign({}, data)\n    this._skins = null\n    if (this._data.skin_variations) {\n      this._skins = []\n      for (var skinIdx in SKINS) {\n        let skinKey = SKINS[skinIdx]\n        let variationData = this._data.skin_variations[skinKey]\n        let skinData = Object.assign({}, data)\n        for (let k in variationData) {\n          skinData[k] = variationData[k]\n        }\n        delete skinData.skin_variations\n        skinData['skin_tone'] = parseInt(skinIdx) + 1\n        this._skins.push(new EmojiData(skinData))\n      }\n    }\n    this._sanitized = sanitize(this._data)\n    for (let key in this._sanitized) {\n      this[key] = this._sanitized[key]\n    }\n    this.short_names = this._data.short_names\n    this.short_name = this._data.short_names[0]\n    Object.freeze(this)\n  }\n\n  getSkin(skinIdx) {\n    if (skinIdx && skinIdx != 'native' && this._skins) {\n      return this._skins[skinIdx - 1]\n    }\n    return this\n  }\n\n  getPosition() {\n    let adjustedColumns = SHEET_COLUMNS - 1,\n      x = +((100 / adjustedColumns) * this._data.sheet_x).toFixed(2),\n      y = +((100 / adjustedColumns) * this._data.sheet_y).toFixed(2)\n    return `${x}% ${y}%`\n  }\n\n  ariaLabel() {\n    return [this.native].concat(this.short_names).filter(Boolean).join(', ')\n  }\n}\n\nexport class EmojiView {\n  /**\n   * emoji - Emoji to display\n   * set - string, emoji set name\n   * native - boolean, whether to render native emoji\n   * fallback - fallback function to render missing emoji, optional\n   * emojiTooltip - wether we need to show the emoji tooltip, optional\n   * emojiSize - emoji size in pixels, optional\n   */\n  constructor(emoji, skin, set, native, fallback, emojiTooltip, emojiSize) {\n    this._emoji = emoji\n    this._native = native\n    this._skin = skin\n    this._set = set\n    this._fallback = fallback\n\n    this.canRender = this._canRender()\n    this.cssClass = this._cssClass()\n    this.cssStyle = this._cssStyle(emojiSize)\n    this.content = this._content()\n    this.title = emojiTooltip === true ? emoji.short_name : null\n    this.ariaLabel = emoji.ariaLabel()\n\n    Object.freeze(this)\n  }\n\n  getEmoji() {\n    return this._emoji.getSkin(this._skin)\n  }\n\n  _canRender() {\n    return (\n      this._isCustom() || this._isNative() || this._hasEmoji() || this._fallback\n    )\n  }\n\n  _cssClass() {\n    return ['emoji-set-' + this._set, 'emoji-type-' + this._emojiType()]\n  }\n\n  _cssStyle(emojiSize) {\n    let cssStyle = {}\n    if (this._isCustom()) {\n      cssStyle = {\n        backgroundImage: 'url(' + this.getEmoji()._data.imageUrl + ')',\n        backgroundSize: '100%',\n        width: emojiSize + 'px',\n        height: emojiSize + 'px',\n      }\n    } else if (this._hasEmoji() && !this._isNative()) {\n      cssStyle = {\n        backgroundPosition: this.getEmoji().getPosition(),\n      }\n    }\n    if (emojiSize) {\n      if (this._isNative()) {\n        // Set font-size for native emoji.\n        cssStyle = Object.assign(cssStyle, {\n          // font-size is used for native emoji which we need\n          // to scale with 0.95 factor to have them look approximately\n          // the same size as image-based emoji.\n          fontSize: Math.round(emojiSize * 0.95 * 10) / 10 + 'px',\n        })\n      } else {\n        // Set width/height for image emoji.\n        cssStyle = Object.assign(cssStyle, {\n          width: emojiSize + 'px',\n          height: emojiSize + 'px',\n        })\n      }\n    }\n    return cssStyle\n  }\n\n  _content() {\n    if (this._isCustom()) {\n      return ''\n    }\n    if (this._isNative()) {\n      return this.getEmoji().native\n    }\n    if (this._hasEmoji()) {\n      return ''\n    }\n    return this._fallback ? this._fallback(this.getEmoji()) : null\n  }\n\n  _isNative() {\n    return this._native\n  }\n\n  _isCustom() {\n    return this.getEmoji().custom\n  }\n\n  _hasEmoji() {\n    if (!this.getEmoji()._data) {\n      // Return false if we have no data.\n      return false\n    }\n    const hasImage = this.getEmoji()._data['has_img_' + this._set]\n    if (hasImage === undefined) {\n      // If there is no has_img_xxx in the data, we are working with\n      // specific data file, like facebook.json, so we assume all\n      // emojis are available (the :set setting for picker should\n      // match the data file).\n      return true\n    }\n    // Otherwise, we are using all.json and can switch between different\n    // sets - in this case the `has_img_{set_name}` is a boolean that\n    // indicates if there is such image or not for a given set.\n    return hasImage\n  }\n\n  _emojiType() {\n    if (this._isCustom()) {\n      return 'custom'\n    }\n    if (this._isNative()) {\n      return 'native'\n    }\n    if (this._hasEmoji()) {\n      return 'image'\n    }\n    return 'fallback'\n  }\n}\n\nexport function sanitize(emoji) {\n  var {\n      name,\n      short_names,\n      skin_tone,\n      skin_variations,\n      emoticons,\n      unified,\n      custom,\n      imageUrl,\n    } = emoji,\n    id = emoji.id || short_names[0],\n    colons = `:${id}:`\n\n  if (custom) {\n    return {\n      id,\n      name,\n      colons,\n      emoticons,\n      custom,\n      imageUrl,\n    }\n  }\n\n  if (skin_tone) {\n    colons += `:skin-tone-${skin_tone}:`\n  }\n\n  return {\n    id,\n    name,\n    colons,\n    emoticons,\n    unified: unified.toLowerCase(),\n    skin: skin_tone || (skin_variations ? 1 : null),\n    native: unifiedToNative(unified),\n  }\n}\n","const EmojiProps = {\n  native: {\n    type: Boolean,\n    default: false,\n  },\n  tooltip: {\n    type: Boolean,\n    default: false,\n  },\n  fallback: {\n    type: Function,\n  },\n  skin: {\n    type: Number,\n    default: 1,\n  },\n  set: {\n    type: String,\n    default: 'apple',\n  },\n  emoji: {\n    type: [String, Object],\n    required: true,\n  },\n  size: {\n    type: Number,\n    default: null,\n  },\n  tag: {\n    type: String,\n    default: 'span',\n  },\n}\n\nconst PickerProps = {\n  perLine: {\n    type: Number,\n    default: 9,\n  },\n  maxSearchResults: {\n    type: Number,\n    default: 75,\n  },\n  emojiSize: {\n    type: Number,\n    default: 24,\n  },\n  title: {\n    type: String,\n    default: 'Emoji Mart™',\n  },\n  emoji: {\n    type: String,\n    default: 'department_store',\n  },\n  color: {\n    type: String,\n    default: '#ae65c5',\n  },\n  set: {\n    type: String,\n    default: 'apple',\n  },\n  skin: {\n    type: Number,\n    default: null,\n  },\n  defaultSkin: {\n    type: Number,\n    default: 1,\n  },\n  native: {\n    type: Boolean,\n    default: false,\n  },\n  emojiTooltip: {\n    type: Boolean,\n    default: false,\n  },\n  autoFocus: {\n    type: Boolean,\n    default: false,\n  },\n  i18n: {\n    type: Object,\n    default() {\n      return {}\n    },\n  },\n  showPreview: {\n    type: Boolean,\n    default: true,\n  },\n  showSearch: {\n    type: Boolean,\n    default: true,\n  },\n  showCategories: {\n    type: Boolean,\n    default: true,\n  },\n  showSkinTones: {\n    type: Boolean,\n    default: true,\n  },\n  infiniteScroll: {\n    type: Boolean,\n    default: true,\n  },\n  pickerStyles: {\n    type: Object,\n    default() {\n      return {}\n    },\n  },\n}\n\nexport { EmojiProps, PickerProps }\n","<template>\n  <component\n    :is=\"tag\"\n    v-if=\"view.canRender\"\n    :title=\"view.title\"\n    :aria-label=\"view.ariaLabel\"\n    :data-title=\"title\"\n    class=\"emoji-mart-emoji\"\n    @mouseenter=\"onMouseEnter\"\n    @mouseleave=\"onMouseLeave\"\n    @click=\"onClick\"\n  >\n    <span :class=\"view.cssClass\" :style=\"view.cssStyle\">{{\n      view.content\n    }}</span>\n  </component>\n</template>\n\n<script>\nimport { EmojiProps } from '../utils/shared-props'\nimport { EmojiView } from '../utils/emoji-data'\n\nexport default {\n  props: {\n    ...EmojiProps,\n    data: {\n      type: Object,\n      required: true,\n    },\n  },\n  emits: [\"click\", \"mouseenter\", \"mouseleave\"],\n  computed: {\n    view() {\n      return new EmojiView(\n        this.emojiObject,\n        this.skin,\n        this.set,\n        this.native,\n        this.fallback,\n        this.tooltip,\n        this.size,\n      )\n    },\n    sanitizedData() {\n      return this.emojiObject._sanitized\n    },\n    title() {\n      return this.tooltip ? this.emojiObject.short_name : null\n    },\n    emojiObject() {\n      if (typeof this.emoji == 'string') {\n        return this.data.findEmoji(this.emoji)\n      } else {\n        return this.emoji\n      }\n    },\n  },\n  created() {},\n  methods: {\n    onClick() {\n      this.$emit('click', this.emojiObject)\n    },\n    onMouseEnter() {\n      this.$emit('mouseenter', this.emojiObject)\n    },\n    onMouseLeave() {\n      this.$emit('mouseleave', this.emojiObject)\n    },\n  },\n}\n</script>\n","<template>\n  <section\n    :class=\"{\n      'emoji-mart-category': true,\n      'emoji-mart-no-results': !hasResults,\n    }\"\n    :aria-label=\"i18n.categories[id]\"\n    v-if=\"isVisible && (isSearch || hasResults)\"\n  >\n    <div class=\"emoji-mart-category-label\">\n      <h3 class=\"emoji-mart-category-label\">{{ i18n.categories[id] }}</h3>\n    </div>\n\n    <template v-for=\"{ emojiObject, emojiView } in emojiObjects\">\n      <button\n        v-if=\"emojiView.canRender\"\n        :aria-label=\"emojiView.ariaLabel\"\n        role=\"option\"\n        aria-selected=\"false\"\n        aria-posinset=\"1\"\n        aria-setsize=\"1812\"\n        type=\"button\"\n        :data-title=\"emojiObject.short_name\"\n        :key=\"emojiObject.id\"\n        :title=\"emojiView.title\"\n        class=\"emoji-mart-emoji\"\n        :class=\"activeClass(emojiObject)\"\n        @mouseenter=\"emojiProps.onEnter(emojiView.getEmoji())\"\n        @mouseleave=\"emojiProps.onLeave(emojiView.getEmoji())\"\n        @click=\"emojiProps.onClick(emojiView.getEmoji())\"\n      >\n        <span :class=\"emojiView.cssClass\" :style=\"emojiView.cssStyle\">{{\n          emojiView.content\n        }}</span>\n      </button>\n    </template>\n\n    <div v-if=\"!hasResults\">\n      <emoji\n        :data=\"data\"\n        emoji=\"sleuth_or_spy\"\n        :native=\"emojiProps.native\"\n        :skin=\"emojiProps.skin\"\n        :set=\"emojiProps.set\"\n      />\n      <div class=\"emoji-mart-no-results-label\">{{ i18n.notfound }}</div>\n    </div>\n  </section>\n</template>\n\n<script>\nimport { EmojiView } from '../utils/emoji-data'\nimport Emoji from './Emoji.vue'\n\nexport default {\n  props: {\n    data: {\n      type: Object,\n      required: true,\n    },\n    i18n: {\n      type: Object,\n      required: true,\n    },\n    id: {\n      type: String,\n      required: true,\n    },\n    name: {\n      type: String,\n      required: true,\n    },\n    emojis: {\n      type: Array,\n    },\n    emojiProps: {\n      type: Object,\n      required: true,\n    },\n  },\n  methods: {\n    activeClass: function(emojiObject) {\n      if (!this.emojiProps.selectedEmoji) {\n        return ''\n      }\n      if (!this.emojiProps.selectedEmojiCategory) {\n        return ''\n      }\n      if (\n        this.emojiProps.selectedEmoji.id == emojiObject.id &&\n        this.emojiProps.selectedEmojiCategory.id == this.id\n      ) {\n        return 'emoji-mart-emoji-selected'\n      }\n      return ''\n    },\n  },\n  computed: {\n    isVisible() {\n      return !!this.emojis\n    },\n    isSearch() {\n      return this.name == 'Search'\n    },\n    hasResults() {\n      return this.emojis.length > 0\n    },\n    emojiObjects() {\n      return this.emojis.map((emoji) => {\n        let emojiObject = emoji\n        let emojiView = new EmojiView(\n          emoji,\n          this.emojiProps.skin,\n          this.emojiProps.set,\n          this.emojiProps.native,\n          this.emojiProps.fallback,\n          this.emojiProps.emojiTooltip,\n          this.emojiProps.emojiSize,\n        )\n        return { emojiObject, emojiView }\n      })\n    },\n  },\n  components: {\n    Emoji,\n  },\n}\n</script>\n","<template>\n\n<div :class=\"{ 'emoji-mart-skin-swatches': true, 'emoji-mart-skin-swatches-opened': opened }\">\n  <span v-for=\"skinTone in 6\" :key=\"skinTone\" :class=\"{ 'emoji-mart-skin-swatch': true, 'emoji-mart-skin-swatch-selected': skin == skinTone }\">\n    <span :class=\"'emoji-mart-skin emoji-mart-skin-tone-' + skinTone\" @click=\"onClick(skinTone)\"></span>\n  </span>\n</div>\n\n</template>\n\n<script>\n\nexport default {\n  props: {\n    skin: {\n      type: Number,\n      required: true\n    }\n  },\n  emits: ['change'],\n  data() {\n    return {\n      opened: false\n    }\n  },\n  methods: {\n    onClick(skinTone) {\n      if (this.opened) {\n        if (skinTone != this.skin) {\n          this.$emit('change', skinTone)\n        }\n      }\n\n      this.opened = !this.opened\n    }\n  }\n}\n\n</script>\n","<template>\n\n<div class=\"emoji-mart-preview\">\n  <template v-if=\"emoji\">\n      <div class=\"emoji-mart-preview-emoji\">\n        <emoji\n          :data=\"data\"\n          :emoji=\"emoji\"\n          :native=\"emojiProps.native\"\n          :skin=\"emojiProps.skin\"\n          :set=\"emojiProps.set\"\n        />\n      </div>\n\n      <div class=\"emoji-mart-preview-data\">\n        <div class=\"emoji-mart-preview-name\">{{ emoji.name }}</div>\n        <div class=\"emoji-mart-preview-shortnames\">\n          <span v-for=\"shortName in emojiShortNames\" :key=\"shortName\" class=\"emoji-mart-preview-shortname\">:{{ shortName }}:</span>\n        </div>\n        <div class=\"emoji-mart-preview-emoticons\">\n          <span v-for=\"emoticon in emojiEmoticons\" :key=\"emoticon\" class=\"emoji-mart-preview-emoticon\">{{ emoticon }}</span>\n        </div>\n      </div>\n  </template>\n\n  <template v-else>\n    <div class=\"emoji-mart-preview-emoji\">\n      <emoji\n        :data=\"data\"\n        :emoji=\"idleEmoji\"\n        :native=\"emojiProps.native\"\n        :skin=\"emojiProps.skin\"\n        :set=\"emojiProps.set\"\n      />\n    </div>\n\n    <div class=\"emoji-mart-preview-data\">\n      <span class=\"emoji-mart-title-label\">{{ title }}</span>\n    </div>\n\n    <div v-if=\"showSkinTones\" class=\"emoji-mart-preview-skins\">\n      <skins :skin=\"skinProps.skin\" @change=\"onSkinChange($event)\" />\n    </div>\n  </template>\n</div>\n\n</template>\n\n<script>\n\nimport Emoji from './Emoji.vue'\nimport Skins from './skins.vue'\n\nexport default {\n  props: {\n    data: {\n      type: Object,\n      required: true\n    },\n    title: {\n      type: String,\n      required: true\n    },\n    emoji: {\n      type: [String, Object]\n    },\n    idleEmoji: {\n      type: [String, Object],\n      required: true\n    },\n    showSkinTones: {\n      type: Boolean,\n      default: true\n    },\n    emojiProps: {\n      type: Object,\n      required: true\n    },\n    skinProps: {\n      type: Object,\n      required: true\n    },\n    onSkinChange: {\n      type: Function,\n      required: true\n    }\n  },\n  computed: {\n    emojiData() {\n      if (this.emoji) {\n        return this.emoji\n      } else {\n        return {}\n      }\n    },\n    emojiShortNames() {\n      return this.emojiData.short_names\n    },\n    emojiEmoticons() {\n      return this.emojiData.emoticons\n    }\n  },\n  components: {\n    Emoji,\n    Skins\n  }\n}\n\n</script>\n","<template>\n  <div class=\"emoji-mart-search\">\n    <input\n      type=\"text\"\n      :placeholder=\"i18n.search\"\n      role=\"textbox\"\n      aria-autocomplete=\"list\"\n      aria-owns=\"emoji-mart-list\"\n      aria-label=\"Search for an emoji\"\n      aria-describedby=\"emoji-mart-search-description\"\n      @keydown.left=\"($event) => $emit('arrowLeft', $event)\"\n      @keydown.right=\"() => $emit('arrowRight')\"\n      @keydown.down=\"() => $emit('arrowDown')\"\n      @keydown.up=\"($event) => $emit('arrowUp', $event)\"\n      @keydown.enter=\"() => $emit('enter')\"\n      v-model=\"value\"\n    />\n    <span class=\"hidden\" id=\"emoji-picker-search-description\"\n      >Use the left, right, up and down arrow keys to navigate the emoji search\n      results.</span\n    >\n  </div>\n</template>\n\n<script>\nexport default {\n  props: {\n    data: {\n      type: Object,\n      required: true,\n    },\n    i18n: {\n      type: Object,\n      required: true,\n    },\n    autoFocus: {\n      type: Boolean,\n      default: false,\n    },\n    onSearch: {\n      type: Function,\n      required: true,\n    },\n    onArrowLeft: {\n      type: Function,\n      required: false,\n    },\n    onArrowRight: {\n      type: Function,\n      required: false,\n    },\n    onArrowDown: {\n      type: Function,\n      required: false,\n    },\n    onArrowUp: {\n      type: Function,\n      required: false,\n    },\n    onEnter: {\n      type: Function,\n      required: false,\n    },\n  },\n  emits: ['search', 'enter', 'arrowUp', 'arrowDown', 'arrowRight', 'arrowLeft'],\n  data() {\n    return {\n      value: '',\n    }\n  },\n  computed: {\n    emojiIndex() {\n      return this.data\n    },\n  },\n  watch: {\n    value() {\n      this.$emit('search', this.value)\n    },\n  },\n  methods: {\n    clear() {\n      this.value = ''\n    },\n  },\n  mounted() {\n    let $input = this.$el.querySelector('input')\n\n    if (this.autoFocus) {\n      $input.focus()\n    }\n  },\n}\n</script>\n","// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel\n\n// MIT license\n\nvar isWindowAvailable = typeof window !== 'undefined'\n\nisWindowAvailable &&\n  (function () {\n    var lastTime = 0\n    var vendors = ['ms', 'moz', 'webkit', 'o']\n\n    for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n      window.requestAnimationFrame =\n        window[vendors[x] + 'RequestAnimationFrame']\n      window.cancelAnimationFrame =\n        window[vendors[x] + 'CancelAnimationFrame'] ||\n        window[vendors[x] + 'CancelRequestAnimationFrame']\n    }\n\n    if (!window.requestAnimationFrame)\n      window.requestAnimationFrame = function (callback, element) {\n        var currTime = new Date().getTime()\n        var timeToCall = Math.max(0, 16 - (currTime - lastTime))\n        var id = window.setTimeout(function () {\n          callback(currTime + timeToCall)\n        }, timeToCall)\n\n        lastTime = currTime + timeToCall\n        return id\n      }\n\n    if (!window.cancelAnimationFrame)\n      window.cancelAnimationFrame = function (id) {\n        clearTimeout(id)\n      }\n  })()\n","export class PickerView {\n  constructor(pickerComponent) {\n    this._vm = pickerComponent\n    this._data = pickerComponent.data\n    this._perLine = pickerComponent.perLine\n\n    this._categories = []\n    this._categories.push(...this._data.categories())\n    this._categories = this._categories.filter((category) => {\n      return category.emojis.length > 0\n    })\n\n    this._categories[0].first = true\n    Object.freeze(this._categories)\n\n    this.activeCategory = this._categories[0]\n    this.searchEmojis = null\n\n    // Preview emoji, shown on mouse over or when we move\n    // with arrow keys.\n    this.previewEmoji = null\n    // Indexes are used to keep the position when moving\n    // with arrows: current category and current emoji\n    // inside the category.\n    this.previewEmojiCategoryIdx = 0\n    this.previewEmojiIdx = -1\n  }\n\n  onScroll() {\n    const scrollElement = this._vm.$refs.scroll\n\n    if (!scrollElement) {\n      // Reported in https://github.com/serebrov/emoji-mart-vue/issues/305\n      // Would be good to understand how it can happen, but at least\n      // exiting early we prevent the error.\n      return\n    }\n\n    const scrollTop = scrollElement.scrollTop\n\n    let activeCategory = this.filteredCategories[0]\n    for (let i = 0, l = this.filteredCategories.length; i < l; i++) {\n      let category = this.filteredCategories[i]\n      let component = this._vm.getCategoryComponent(i)\n      // The `-50` offset switches active category (selected in the\n      // anchors bar) a bit eariler, before it actually reaches the top.\n      if (component && component.$el.offsetTop - 50 > scrollTop) {\n        break\n      }\n      activeCategory = category\n    }\n    this.activeCategory = activeCategory\n  }\n\n  get allCategories() {\n    return this._categories\n  }\n\n  get filteredCategories() {\n    if (this.searchEmojis) {\n      return [\n        {\n          id: 'search',\n          name: 'Search',\n          emojis: this.searchEmojis,\n        },\n      ]\n    }\n    return this._categories.filter((category) => {\n      let hasEmojis = category.emojis.length > 0\n      return hasEmojis\n    })\n  }\n\n  get previewEmojiCategory() {\n    if (this.previewEmojiCategoryIdx >= 0) {\n      return this.filteredCategories[this.previewEmojiCategoryIdx]\n    }\n    return null\n  }\n\n  onAnchorClick(category) {\n    if (this.searchEmojis) {\n      // No categories are shown when search is active.\n      return\n    }\n    let i = this.filteredCategories.indexOf(category)\n    let component = this._vm.getCategoryComponent(i)\n    let scrollToComponent = () => {\n      if (component) {\n        let top = component.$el.offsetTop\n        if (category.first) {\n          top = 0\n        }\n        this._vm.$refs.scroll.scrollTop = top\n      }\n    }\n    if (this._vm.infiniteScroll) {\n      scrollToComponent()\n    } else {\n      this.activeCategory = this.filteredCategories[i]\n    }\n  }\n\n  onSearch(value) {\n    let emojis = this._data.search(value, this.maxSearchResults)\n    this.searchEmojis = emojis\n\n    this.previewEmojiCategoryIdx = 0\n    this.previewEmojiIdx = 0\n    this.updatePreviewEmoji()\n  }\n\n  onEmojiEnter(emoji) {\n    this.previewEmoji = emoji\n    this.previewEmojiIdx = -1\n    this.previewEmojiCategoryIdx = -1\n  }\n\n  onEmojiLeave(emoji) {\n    this.previewEmoji = null\n  }\n\n  onArrowLeft() {\n    // Moving left, decrease emoji index.\n    if (this.previewEmojiIdx > 0) {\n      this.previewEmojiIdx -= 1\n    } else {\n      // If emoji index is zero, go to the previous category.\n      this.previewEmojiCategoryIdx -= 1\n      if (this.previewEmojiCategoryIdx < 0) {\n        // If we reached first category, keep it.\n        this.previewEmojiCategoryIdx = 0\n      } else {\n        // Update emoji index - we moved to the previous category,\n        // get the last emoji in it.\n        this.previewEmojiIdx =\n          this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length -\n          1\n      }\n    }\n    this.updatePreviewEmoji()\n  }\n\n  onArrowRight() {\n    if (\n      this.previewEmojiIdx <\n      this.emojisLength(this.previewEmojiCategoryIdx) - 1\n    ) {\n      // Moving right within category, increase emoji index.\n      this.previewEmojiIdx += 1\n    } else {\n      // Go to the next category.\n      this.previewEmojiCategoryIdx += 1\n      if (this.previewEmojiCategoryIdx >= this.filteredCategories.length) {\n        // If we reached the last category - keep it.\n        this.previewEmojiCategoryIdx = this.filteredCategories.length - 1\n      } else {\n        // If we moved to the next category, update emoji index to the\n        // first emoji in the new category.\n        this.previewEmojiIdx = 0\n      }\n    }\n    this.updatePreviewEmoji()\n  }\n\n  onArrowDown() {\n    // If we are out of the emoji control (index is -1), select the first\n    // emoji in the first category by calling `onArrowRight`.\n    if (this.previewEmojiIdx == -1) {\n      return this.onArrowRight()\n    }\n\n    const categoryLength =\n      this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length\n\n    // When moving down, we can move `_perLine` icons right to\n    // jump to the same position in the next row.\n    let diff = this._perLine\n\n    // TODO: previewCategory should match activeCategory\n    // (so it would be both highlighted in UI and used\n    // when we start moving with arrows after clicking\n    // the category).\n\n    // Note: probably we can alwasy take current row length\n    // as a `diff` - it will fit both case of any row and\n    // special case of the last row.\n    // Note: it can be also easier to update indexes\n    // directly here instead of calling onArrowRight.\n    // Same is true for `onArrowUp`.\n\n    // Unless if we are on the last row of the category and\n    // there are less then `_perLine` emojis in it.\n    // In this case we use the last row length as diff\n    // so we go straight down, for example:\n    //\n    //   1 2 3 4 5 6\n    //   7 8 9\n    //   A B C D E F\n    //\n    // If we go down from `8`, we need to move 3 emojis right\n    // to lend at `B` (and 3 is the length of the last row of\n    // this category).\n    // And if we used 6 instead (row length, `_perLine`), we would\n    // lend up at `E`.\n    if (this.previewEmojiIdx + diff > categoryLength) {\n      // Calculate the last row length.\n      diff = categoryLength % this._perLine\n    }\n    for (let i = 0; i < diff; i++) {\n      this.onArrowRight()\n    }\n    this.updatePreviewEmoji()\n  }\n\n  onArrowUp() {\n    // Similar to `onArrowDown`, to move up we can move left\n    // by `_perLine` number of emojis.\n    let diff = this._perLine\n\n    if (this.previewEmojiIdx - diff < 0) {\n      if (this.previewEmojiCategoryIdx > 0) {\n        // Unless if we are on the first line of the category and\n        // the last line in the previous category is shorter than\n        // `_perLine`.\n        // In this case we use the last row length as diff, so\n        // we go straight up, for example:\n        //\n        //   1 2 3 4 5\n        //   6 7 8\n        //   9 A B C D\n        //\n        // If we go up from `A`, we need to move 3 emojis left to get\n        // to `7` (and 3 is the length of the last row of the previous\n        // category).\n        const prevCategoryLastRowLength =\n          this.filteredCategories[this.previewEmojiCategoryIdx - 1].emojis\n            .length % this._perLine\n        // diff = this.previewEmojiIdx + prevCategoryLastRowLength\n        diff = prevCategoryLastRowLength\n      } else {\n        diff = 0\n      }\n    }\n    for (let i = 0; i < diff; i++) {\n      this.onArrowLeft()\n    }\n    this.updatePreviewEmoji()\n  }\n\n  updatePreviewEmoji() {\n    this.previewEmoji =\n      this.filteredCategories[this.previewEmojiCategoryIdx].emojis[\n        this.previewEmojiIdx\n      ]\n\n    this._vm.$nextTick(() => {\n      // Scroll the view if the `previewEmoji` goes out of the visible area.\n      const scrollEl = this._vm.$refs.scroll\n\n      // Note: it would be more Vue-ish to mark all emojis with `ref`s\n      // and then do something similar here to what we do in the\n      // `getCategories` instead of using `querySelector` directly,\n      // but I am not sure if having many refs would affect the performance\n      // (it might, so I use `querySelector` for now).\n      const emojiEl = scrollEl.querySelector('.emoji-mart-emoji-selected')\n\n      const scrollHeight = scrollEl.offsetTop - scrollEl.offsetHeight\n      if (\n        emojiEl &&\n        emojiEl.offsetTop + emojiEl.offsetHeight >\n          scrollHeight + scrollEl.scrollTop\n      ) {\n        scrollEl.scrollTop += emojiEl.offsetHeight\n      }\n      if (emojiEl && emojiEl.offsetTop < scrollEl.scrollTop) {\n        scrollEl.scrollTop -= emojiEl.offsetHeight\n      }\n    })\n  }\n\n  emojisLength(categoryIdx) {\n    if (categoryIdx == -1) {\n      return 0\n    }\n    return this.filteredCategories[categoryIdx].emojis.length\n  }\n}\n","<template>\n  <section class=\"emoji-mart emoji-mart-static\" :style=\"customStyles\">\n    <div class=\"emoji-mart-bar emoji-mart-bar-anchors\" v-if=\"showCategories\">\n      <anchors\n        :data=\"data\"\n        :i18n=\"mergedI18n\"\n        :color=\"color\"\n        :categories=\"view.allCategories\"\n        :active-category=\"view.activeCategory\"\n        @click=\"onAnchorClick\"\n      />\n    </div>\n\n    <slot\n      name=\"searchTemplate\"\n      :data=\"data\"\n      :i18n=\"i18n\"\n      :auto-focus=\"autoFocus\"\n      :on-search=\"onSearch\"\n    >\n      <search\n        v-if=\"showSearch\"\n        ref=\"search\"\n        :data=\"data\"\n        :i18n=\"mergedI18n\"\n        :auto-focus=\"autoFocus\"\n        :on-search=\"onSearch\"\n        @search=\"onSearch\"\n        @arrowLeft=\"onArrowLeft\"\n        @arrowRight=\"onArrowRight\"\n        @arrowDown=\"onArrowDown\"\n        @arrowUp=\"onArrowUp\"\n        @enter=\"onEnter\"\n        @select=\"onTextSelect\"\n      />\n    </slot>\n\n    <div\n      role=\"tabpanel\"\n      class=\"emoji-mart-scroll\"\n      ref=\"scroll\"\n      @scroll=\"onScroll\"\n    >\n      <div\n        id=\"emoji-mart-list\"\n        ref=\"scrollContent\"\n        role=\"listbox\"\n        aria-expanded=\"true\"\n      >\n        <slot name=\"customCategory\"> </slot>\n\n        <category\n          v-for=\"(category, idx) in view.filteredCategories\"\n          v-show=\"infiniteScroll || category == view.activeCategory || isSearching\"\n          :ref=\"'categories_' + idx\"\n          :key=\"category.id\"\n          :data=\"data\"\n          :i18n=\"mergedI18n\"\n          :id=\"category.id\"\n          :name=\"category.name\"\n          :emojis=\"category.emojis\"\n          :emoji-props=\"emojiProps\"\n        />\n      </div>\n    </div>\n\n    <slot\n      name=\"previewTemplate\"\n      :data=\"data\"\n      :title=\"title\"\n      :emoji=\"view.previewEmoji\"\n      :idle-emoji=\"idleEmoji\"\n      :show-skin-tones=\"showSkinTones\"\n      :emoji-props=\"emojiProps\"\n      :skin-props=\"skinProps\"\n      :on-skin-change=\"onSkinChange\"\n    >\n      <div class=\"emoji-mart-bar emoji-mart-bar-preview\" v-if=\"showPreview\">\n        <preview\n          :data=\"data\"\n          :title=\"title\"\n          :emoji=\"view.previewEmoji\"\n          :idle-emoji=\"idleEmoji\"\n          :show-skin-tones=\"showSkinTones\"\n          :emoji-props=\"emojiProps\"\n          :skin-props=\"skinProps\"\n          :on-skin-change=\"onSkinChange\"\n        />\n      </div>\n    </slot>\n  </section>\n</template>\n\n<script>\nimport '../vendor/raf-polyfill'\nimport store from '../utils/store'\nimport frequently from '../utils/frequently'\nimport { deepMerge, measureScrollbar } from '../utils'\nimport { PickerProps } from '../utils/shared-props'\nimport { PickerView } from '../utils/picker'\nimport Anchors from './anchors.vue'\nimport Category from './category.vue'\nimport Preview from './preview.vue'\nimport Search from './search.vue'\n\nconst I18N = {\n  search: 'Search',\n  notfound: 'No Emoji Found',\n  categories: {\n    search: 'Search Results',\n    recent: 'Frequently Used',\n    smileys: 'Smileys & Emotion',\n    people: 'People & Body',\n    nature: 'Animals & Nature',\n    foods: 'Food & Drink',\n    activity: 'Activity',\n    places: 'Travel & Places',\n    objects: 'Objects',\n    symbols: 'Symbols',\n    flags: 'Flags',\n    custom: 'Custom',\n  },\n}\n\nexport default {\n  props: {\n    ...PickerProps,\n    data: {\n      type: Object,\n      required: true,\n    },\n  },\n  emits: ['select', 'skin-change'],\n  data() {\n    return {\n      activeSkin: this.skin || store.get('skin') || this.defaultSkin,\n      view: new PickerView(this),\n    }\n  },\n  computed: {\n    customStyles() {\n      return {\n        width: this.calculateWidth + 'px',\n        ...this.pickerStyles,\n      }\n    },\n    emojiProps() {\n      return {\n        native: this.native,\n        skin: this.activeSkin,\n        set: this.set,\n        emojiTooltip: this.emojiTooltip,\n        emojiSize: this.emojiSize,\n        selectedEmoji: this.view.previewEmoji,\n        selectedEmojiCategory: this.view.previewEmojiCategory,\n        onEnter: this.onEmojiEnter.bind(this),\n        onLeave: this.onEmojiLeave.bind(this),\n        onClick: this.onEmojiClick.bind(this),\n      }\n    },\n    skinProps() {\n      return {\n        skin: this.activeSkin,\n      }\n    },\n    calculateWidth() {\n      return this.perLine * (this.emojiSize + 12) + 12 + 2 + measureScrollbar()\n    },\n    // emojisPerRow() {\n    //   const listEl = this.$refs.scrollContent\n    //   const emojiEl = listEl.querySelector('.emoji-mart-emoji')\n    //   return Math.floor(listEl.offsetWidth / emojiEl.offsetWidth)\n    // },\n    filteredCategories() {\n      return this.view.filteredCategories\n    },\n    mergedI18n() {\n      return Object.freeze(deepMerge(I18N, this.i18n))\n    },\n    idleEmoji() {\n      try {\n        return this.data.emoji(this.emoji)\n      } catch (e) {\n        console.error(\n          'Default preview emoji `' +\n            this.emoji +\n            '` is not available, check the Picker `emoji` property',\n        )\n        console.error(e)\n        return this.data.firstEmoji()\n      }\n    },\n    isSearching() {\n      return this.view.searchEmojis != null;\n    },\n  },\n  watch: {\n    skin() {\n      this.onSkinChange(this.skin)\n    },\n  },\n  methods: {\n    onScroll() {\n      if (this.infiniteScroll && !this.waitingForPaint) {\n        this.waitingForPaint = true\n        window.requestAnimationFrame(this.onScrollPaint.bind(this))\n      }\n    },\n    onScrollPaint() {\n      this.waitingForPaint = false\n      this.view.onScroll()\n    },\n    onAnchorClick(category) {\n      this.view.onAnchorClick(category)\n    },\n    onSearch(value) {\n      this.view.onSearch(value)\n    },\n    onEmojiEnter(emoji) {\n      this.view.onEmojiEnter(emoji)\n    },\n    onEmojiLeave(emoji) {\n      this.view.onEmojiLeave(emoji)\n    },\n    onArrowLeft($event) {\n      const oldIdx = this.view.previewEmojiIdx\n      this.view.onArrowLeft()\n      if ($event && this.view.previewEmojiIdx !== oldIdx) {\n        // Prevent cursor movement inside the input\n        $event.preventDefault()\n      }\n    },\n    onArrowRight() {\n      this.view.onArrowRight()\n    },\n    onArrowDown() {\n      this.view.onArrowDown()\n    },\n    onArrowUp($event) {\n      this.view.onArrowUp()\n      // Prevent cursor movement inside the input\n      $event.preventDefault()\n    },\n    onEnter() {\n      if (!this.view.previewEmoji) {\n        // We may press \"Enter\" when nothing is selected,\n        // for example, if we search for \"asdf\".\n        return\n      }\n      this.$emit('select', this.view.previewEmoji)\n      frequently.add(this.view.previewEmoji)\n    },\n    onEmojiClick(emoji) {\n      this.$emit('select', emoji)\n      frequently.add(emoji)\n    },\n    onTextSelect($event) {\n      // Prevent default text select event.\n      // In Vue 3 it goes through the component and triggers the `select`\n      // event that is supposed to be emmited only with emoji.\n      // (there is no such problem in Vue 2).\n      $event.stopPropagation()\n    },\n    onSkinChange(skin) {\n      this.activeSkin = skin\n      store.update({ skin })\n\n      this.$emit('skin-change', skin)\n    },\n    getCategoryComponent(index) {\n      let component = this.$refs['categories_' + index]\n      if (component && '0' in component) {\n        // Vue 2 has $refs under v-for as an array.\n        return component['0']\n      }\n      // Vue 3 does not support $refs as array.\n      return component\n    },\n  },\n  components: {\n    Anchors,\n    Category,\n    Preview,\n    Search,\n  },\n}\n</script>\n","import '../assets/NcEmojiPicker-vNKR9S87.css';\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport { Picker, Emoji, EmojiIndex } from \"emoji-mart-vue-fast/src/index.js\";\nimport { isFocusable } from \"tabbable\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, withCtx, createVNode, withKeys, withModifiers, createSlots, normalizeStyle, renderSlot, normalizeProps, guardReactiveProps } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcColorPicker } from \"./NcColorPicker-DUIppkpO.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { s as setCurrentSkinTone, g as getCurrentSkinTone } from \"./emoji-C8k9NUlo.mjs\";\nimport { r as register, q as t43, s as t37, u as t16, v as t5, a as t } from \"./_l10n-BCg4udFv.mjs\";\nimport { C as Color } from \"./colors-2YFh1g7z.mjs\";\nimport { N as NcButton } from \"./NcButton-CdQzGSB6.mjs\";\nimport { N as NcPopover } from \"./NcPopover-CtdLAkEU.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcTextField.vue_vue_type_script_setup_true_lang-DgvCZDmR.mjs\";\nconst _sfc_main$1 = {\n  name: \"CircleIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n  return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n    \"aria-hidden\": $props.title ? null : \"true\",\n    \"aria-label\": $props.title,\n    class: \"material-design-icon circle-icon\",\n    role: \"img\",\n    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n  }), [\n    (openBlock(), createElementBlock(\"svg\", {\n      fill: $props.fillColor,\n      class: \"material-design-icon__svg\",\n      width: $props.size,\n      height: $props.size,\n      viewBox: \"0 0 24 24\"\n    }, [\n      createElementVNode(\"path\", _hoisted_3$1, [\n        $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n      ])\n    ], 8, _hoisted_2$1))\n  ], 16, _hoisted_1$1);\n}\nconst IconCircle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nregister(t5, t16, t37, t43);\nlet emojiIndex;\nconst i18n = {\n  search: t(\"Search emoji\"),\n  notfound: t(\"No emoji found\"),\n  categories: {\n    search: t(\"Search results\"),\n    recent: t(\"Frequently used\"),\n    smileys: t(\"Smileys & Emotion\"),\n    people: t(\"People & Body\"),\n    nature: t(\"Animals & Nature\"),\n    foods: t(\"Food & Drink\"),\n    activity: t(\"Activities\"),\n    places: t(\"Travel & Places\"),\n    objects: t(\"Objects\"),\n    symbols: t(\"Symbols\"),\n    flags: t(\"Flags\"),\n    custom: t(\"Custom\")\n  }\n};\nconst skinTonePalette = [\n  new Color(255, 222, 52, t(\"Neutral skin color\")),\n  new Color(228, 205, 166, t(\"Light skin tone\")),\n  new Color(250, 221, 192, t(\"Medium light skin tone\")),\n  new Color(174, 129, 87, t(\"Medium skin tone\")),\n  new Color(158, 113, 88, t(\"Medium dark skin tone\")),\n  new Color(96, 79, 69, t(\"Dark skin tone\"))\n];\nconst _sfc_main = {\n  name: \"NcEmojiPicker\",\n  components: {\n    IconCircle,\n    NcButton,\n    NcColorPicker,\n    NcPopover,\n    NcTextField: _sfc_main$2,\n    Emoji,\n    Picker\n  },\n  props: {\n    /**\n     * The emoji-set\n     */\n    activeSet: {\n      type: String,\n      default: \"native\"\n    },\n    /**\n     * Show preview section when hovering emoji\n     */\n    showPreview: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Allow unselecting the selected emoji\n     */\n    allowUnselect: {\n      type: Boolean,\n      default: false\n    },\n    /**\n     * Selected emoji to allow unselecting\n     */\n    selectedEmoji: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * The fallback emoji in the preview section\n     */\n    previewFallbackEmoji: {\n      type: String,\n      default: \"grinning\"\n    },\n    /**\n     * The fallback text in the preview section\n     */\n    previewFallbackName: {\n      type: String,\n      default: t(\"Pick an emoji\")\n    },\n    /**\n     * Whether to close the emoji picker after picking one\n     */\n    closeOnSelect: {\n      type: Boolean,\n      default: true\n    },\n    /**\n     * Selector for the popover container\n     */\n    container: {\n      type: [Boolean, String, Object, Element],\n      default: \"body\"\n    }\n  },\n  emits: [\n    \"select\",\n    \"selectData\",\n    \"unselect\"\n  ],\n  setup() {\n    if (!emojiIndex) {\n      emojiIndex = new EmojiIndex(data);\n    }\n    return {\n      // Non-reactive constants\n      emojiIndex,\n      skinTonePalette,\n      i18n\n    };\n  },\n  data() {\n    const currentSkinTone = getCurrentSkinTone();\n    return {\n      /**\n       * The current active color from the skin tone palette\n       */\n      currentColor: skinTonePalette[currentSkinTone - 1],\n      /**\n       * The current active skin tone\n       *\n       * @type {1|2|3|4|5|6}\n       */\n      currentSkinTone,\n      search: \"\",\n      open: false\n    };\n  },\n  computed: {\n    native() {\n      return this.activeSet === \"native\";\n    }\n  },\n  created() {\n    useTrapStackControl(() => this.open);\n  },\n  methods: {\n    t,\n    clearSearch() {\n      this.search = \"\";\n      this.$refs.search.focus();\n    },\n    /**\n     * Update the current skin tone by the result of the color picker\n     *\n     * @param {string} color Color set\n     */\n    onChangeSkinTone(color) {\n      const index = this.skinTonePalette.findIndex((tone) => tone.color.toLowerCase() === color.toLowerCase());\n      if (index > -1) {\n        this.currentSkinTone = index + 1;\n        this.currentColor = this.skinTonePalette[index];\n        setCurrentSkinTone(this.currentSkinTone);\n      }\n    },\n    select(emojiObject) {\n      this.$emit(\"select\", emojiObject.native);\n      this.$emit(\"selectData\", emojiObject);\n      if (this.closeOnSelect) {\n        this.open = false;\n      }\n    },\n    unselect() {\n      this.$emit(\"unselect\");\n    },\n    afterShow() {\n      this.$refs.search.focus();\n    },\n    afterHide() {\n      if (!document.activeElement || this.$refs.picker.$el.contains(document.activeElement) || !isFocusable(document.activeElement)) {\n        this.$refs.popover.$el.querySelector('button, [role=\"button\"]')?.focus();\n      }\n    },\n    /**\n     * Manually handle Tab navigation skipping emoji buttons.\n     * Navigation over emojis is handled by Arrow keys.\n     *\n     * @param {KeyboardEvent} event - Keyboard event\n     */\n    handleTabNavigationSkippingEmojis(event) {\n      const current = event.target;\n      const focusable = Array.from(this.$refs.picker.$el.querySelectorAll(\"button:not(.emoji-mart-emoji), input\"));\n      if (!event.shiftKey) {\n        const nextNode = focusable.find((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_FOLLOWING) || focusable[0];\n        nextNode.focus();\n      } else {\n        const prevNode = focusable.findLast((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_PRECEDING) || focusable.at(-1);\n        prevNode.focus();\n      }\n    },\n    /**\n     * Handle arrow navigation via <Picker>'s handlers with scroll bug fix\n     *\n     * @param {'onArrowLeft' | 'onArrowRight' | 'onArrowDown' | 'onArrowUp'} originalHandlerName - Picker's arrow keydown handler name\n     * @param {KeyboardEvent} event - Keyboard event\n     */\n    async callPickerArrowHandlerWithScrollFix(originalHandlerName, event) {\n      this.$refs.picker[originalHandlerName](event);\n      await this.$nextTick();\n      const selectedEmoji = this.$refs.picker.$el.querySelector(\".emoji-mart-emoji-selected\");\n      selectedEmoji?.scrollIntoView({\n        block: \"center\",\n        inline: \"center\"\n      });\n    }\n  }\n};\nconst _hoisted_1 = { class: \"nc-emoji-picker-container\" };\nconst _hoisted_2 = { class: \"search__wrapper\" };\nconst _hoisted_3 = { class: \"emoji-mart-category-label\" };\nconst _hoisted_4 = { class: \"emoji-mart-category-label\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_NcTextField = resolveComponent(\"NcTextField\");\n  const _component_IconCircle = resolveComponent(\"IconCircle\");\n  const _component_NcButton = resolveComponent(\"NcButton\");\n  const _component_NcColorPicker = resolveComponent(\"NcColorPicker\");\n  const _component_Emoji = resolveComponent(\"Emoji\");\n  const _component_Picker = resolveComponent(\"Picker\");\n  const _component_NcPopover = resolveComponent(\"NcPopover\");\n  return openBlock(), createBlock(_component_NcPopover, {\n    ref: \"popover\",\n    shown: $data.open,\n    \"onUpdate:shown\": _cache[6] || (_cache[6] = ($event) => $data.open = $event),\n    container: $props.container,\n    popupRole: \"dialog\",\n    noFocusTrap: true,\n    onAfterShow: $options.afterShow,\n    onAfterHide: $options.afterHide\n  }, {\n    trigger: withCtx((slotProps) => [\n      renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(slotProps)), void 0, true)\n    ]),\n    default: withCtx(() => [\n      createElementVNode(\"div\", _hoisted_1, [\n        createVNode(_component_Picker, mergeProps({\n          ref: \"picker\",\n          color: \"var(--color-primary-element)\",\n          data: $setup.emojiIndex,\n          emoji: $props.previewFallbackEmoji,\n          i18n: $setup.i18n,\n          native: $options.native,\n          emojiSize: 20,\n          perLine: 8,\n          pickerStyles: { width: \"320px\" },\n          showPreview: $props.showPreview,\n          skin: $data.currentSkinTone,\n          showSkinTones: false,\n          title: $props.previewFallbackName,\n          role: \"dialog\",\n          \"aria-modal\": \"true\",\n          \"aria-label\": $options.t(\"Emoji picker\")\n        }, _ctx.$attrs, {\n          onKeydown: withKeys(withModifiers($options.handleTabNavigationSkippingEmojis, [\"prevent\"]), [\"tab\"]),\n          onSelect: $options.select\n        }), createSlots({\n          searchTemplate: withCtx(({ onSearch }) => [\n            createElementVNode(\"div\", _hoisted_2, [\n              createVNode(_component_NcTextField, {\n                ref: \"search\",\n                modelValue: $data.search,\n                \"onUpdate:modelValue\": [\n                  _cache[0] || (_cache[0] = ($event) => $data.search = $event),\n                  ($event) => onSearch($data.search)\n                ],\n                class: \"search\",\n                label: $options.t(\"Search\"),\n                labelVisible: true,\n                placeholder: $setup.i18n.search,\n                trailingButtonIcon: \"close\",\n                trailingButtonLabel: $options.t(\"Clear search\"),\n                showTrailingButton: $data.search !== \"\",\n                onKeydown: [\n                  _cache[1] || (_cache[1] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowLeft\", $event), [\"left\"])),\n                  _cache[2] || (_cache[2] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowRight\", $event), [\"right\"])),\n                  _cache[3] || (_cache[3] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowDown\", $event), [\"down\"])),\n                  _cache[4] || (_cache[4] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowUp\", $event), [\"up\"])),\n                  _cache[5] || (_cache[5] = withKeys(($event) => _ctx.$refs.picker.onEnter($event), [\"enter\"]))\n                ],\n                onTrailingButtonClick: ($event) => {\n                  $options.clearSearch();\n                  onSearch(\"\");\n                }\n              }, null, 8, [\"modelValue\", \"label\", \"placeholder\", \"trailingButtonLabel\", \"showTrailingButton\", \"onTrailingButtonClick\", \"onUpdate:modelValue\"]),\n              createVNode(_component_NcColorPicker, {\n                paletteOnly: \"\",\n                container: $props.container,\n                palette: $setup.skinTonePalette,\n                modelValue: $data.currentColor.color,\n                \"onUpdate:modelValue\": $options.onChangeSkinTone\n              }, {\n                default: withCtx(() => [\n                  createVNode(_component_NcButton, {\n                    \"aria-label\": $options.t(\"Skin tone\"),\n                    variant: \"tertiary-no-background\"\n                  }, {\n                    icon: withCtx(() => [\n                      createVNode(_component_IconCircle, {\n                        style: normalizeStyle({ color: $data.currentColor.color }),\n                        title: $data.currentColor.name,\n                        size: 20\n                      }, null, 8, [\"style\", \"title\"])\n                    ]),\n                    _: 1\n                  }, 8, [\"aria-label\"])\n                ]),\n                _: 1\n              }, 8, [\"container\", \"palette\", \"modelValue\", \"onUpdate:modelValue\"])\n            ])\n          ]),\n          _: 2\n        }, [\n          $props.allowUnselect && $props.selectedEmoji ? {\n            name: \"customCategory\",\n            fn: withCtx(() => [\n              createElementVNode(\"div\", _hoisted_3, [\n                createElementVNode(\"h3\", _hoisted_4, toDisplayString($options.t(\"Selected\")), 1)\n              ]),\n              createVNode(_component_Emoji, {\n                class: \"emoji-selected\",\n                data: $setup.emojiIndex,\n                emoji: $props.selectedEmoji,\n                native: \"\",\n                size: 32,\n                onClick: $options.unselect\n              }, null, 8, [\"data\", \"emoji\", \"onClick\"]),\n              createVNode(_component_Emoji, {\n                class: \"emoji-delete\",\n                data: $setup.emojiIndex,\n                emoji: \":x:\",\n                native: \"\",\n                size: 10,\n                onClick: $options.unselect\n              }, null, 8, [\"data\", \"onClick\"])\n            ]),\n            key: \"0\"\n          } : void 0\n        ]), 1040, [\"data\", \"emoji\", \"i18n\", \"native\", \"showPreview\", \"skin\", \"title\", \"aria-label\", \"onKeydown\", \"onSelect\"])\n      ])\n    ]),\n    _: 3\n  }, 8, [\"shown\", \"container\", \"onAfterShow\", \"onAfterHide\"]);\n}\nconst NcEmojiPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-11acdb77\"]]);\nexport {\n  NcEmojiPicker as N\n};\n//# sourceMappingURL=NcEmojiPicker-DG3qO_fi.mjs.map\n"],"names":["NAMESPACE","_JSON","isLocalStorageSupported","getter","setter","setHandlers","handlers","setNamespace","namespace","update","state","key","value","set","get","store","mapping","buildSearch","emoji","search","addToSearch","strings","split","string","s","deepFreeze","object","propNames","name","uncompress","data","id","DEFAULTS","frequently","initialized","defaults","init","add","maxNumber","result","defaultLength","i","quantity","frequentlyKeys","sliced","a","b","last","frequently$1","SVGs","_sfc_main","svgs","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","$props","category","_normalizeClass","_normalizeStyle","$event","_ctx","_createElementVNode","_String","stringFromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","index","length","codePoint","unifiedToNative","unified","unicodes","codePoints","u","uniq","arr","acc","item","intersect","uniqA","uniqB","deepMerge","o","originalValue","measureScrollbar","div","scrollbarWidth","SHEET_COLUMNS","COLONS_REGEX","SKINS","EmojiIndex","emojisToShowFilter","include","exclude","custom","recent","recentLength","allCategories","indexA","indexB","categoryData","emojiId","customEmoji","skin","matches","emojiObject","unicodeEmoji","maxResults","values","allResults","emojis","currentIndex","charIndex","char","scores","sub","subIndex","score","aScore","bScore","results","emojiData","EmojiData","idx","emoticon","category_id","isIncluded","isExcluded","skinIdx","skinKey","variationData","skinData","k","sanitize","adjustedColumns","x","y","EmojiView","native","fallback","emojiTooltip","emojiSize","cssStyle","hasImage","short_names","skin_tone","skin_variations","emoticons","imageUrl","colons","EmojiProps","PickerProps","$options","_createBlock","_resolveDynamicComponent","_toDisplayString","emojiView","Emoji","_hoisted_2","_hoisted_3","_hoisted_6","_hoisted_5","_createVNode","_component_emoji","skinTone","$data","Skins","_hoisted_4","_hoisted_7","_hoisted_8","_hoisted_9","shortName","_hoisted_10","_component_skins","_cache","$input","isWindowAvailable","lastTime","vendors","callback","element","currTime","timeToCall","PickerView","pickerComponent","scrollElement","scrollTop","activeCategory","l","component","scrollToComponent","top","categoryLength","diff","scrollEl","emojiEl","scrollHeight","categoryIdx","I18N","e","oldIdx","Anchors","Category","Preview","Search","_component_anchors","_renderSlot","_component_search","args","_component_category","_vShow","_component_preview","_sfc_main$1","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render$1","$setup","openBlock","createElementBlock","mergeProps","createElementVNode","toDisplayString","createCommentVNode","IconCircle","_export_sfc","register","t5","t16","t37","t43","emojiIndex","i18n","t","skinTonePalette","Color","NcButton","NcColorPicker","NcPopover","_sfc_main$2","Picker","currentSkinTone","getCurrentSkinTone","useTrapStackControl","color","tone","setCurrentSkinTone","isFocusable","event","current","focusable","node","originalHandlerName","_sfc_render","_component_NcTextField","resolveComponent","_component_IconCircle","_component_NcButton","_component_NcColorPicker","_component_Emoji","_component_Picker","_component_NcPopover","createBlock","withCtx","slotProps","renderSlot","normalizeProps","guardReactiveProps","createVNode","withKeys","withModifiers","createSlots","onSearch","normalizeStyle","NcEmojiPicker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]}