From 8c2152fc45f17b8fe22c47f6d613a7da0928a7fd Mon Sep 17 00:00:00 2001 From: Justin Zobel Date: Wed, 6 May 2026 09:49:42 +0930 Subject: [PATCH] Spelling fixes --- apps/dav/lib/Migration/DisableSystemAddressBook.php | 4 ++-- apps/files_external/lib/Lib/Storage/FtpConnection.php | 2 +- apps/files_trashbin/src/files_views/columns.spec.ts | 2 +- dist/NcEmojiPicker-DGgqTnHp-BL4_K0PB.chunk.mjs.map | 2 +- lib/private/Lock/DBLockingProvider.php | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/dav/lib/Migration/DisableSystemAddressBook.php b/apps/dav/lib/Migration/DisableSystemAddressBook.php index 57743bf4934d6..df1c1c0eedaa0 100644 --- a/apps/dav/lib/Migration/DisableSystemAddressBook.php +++ b/apps/dav/lib/Migration/DisableSystemAddressBook.php @@ -50,11 +50,11 @@ public function run(IOutput $output) { // We use count seen because getting a user count from the backend can be very slow $limit = $this->appConfig->getAppValueInt('system_addressbook_limit', 5000); if ($this->userManager->countSeenUsers() <= $limit) { - $output->info("Skipping repair step system address book has less then the threshold $limit of contacts no need to disable"); + $output->info("Skipping repair step system address book has less than the threshold $limit of contacts no need to disable"); return; } $this->appConfig->setAppValueBool(ConfigLexicon::SYSTEM_ADDRESSBOOK_EXPOSED, false); - $output->warning("System address book disabled because it has more then the threshold of $limit contacts this can be re-enabled later"); + $output->warning("System address book disabled because it has more than the threshold of $limit contacts this can be re-enabled later"); // Notify all admin users about the system address book being disabled foreach ($this->groupManager->get('admin')->getUsers() as $user) { $notification = $this->notificationManager->createNotification(); diff --git a/apps/files_external/lib/Lib/Storage/FtpConnection.php b/apps/files_external/lib/Lib/Storage/FtpConnection.php index a064bf9b100a3..3a7ca7528040b 100644 --- a/apps/files_external/lib/Lib/Storage/FtpConnection.php +++ b/apps/files_external/lib/Lib/Storage/FtpConnection.php @@ -153,7 +153,7 @@ private function parseUnixItem(string $item, string $directory): array { $tomorrow = (new \DateTime())->add(new \DateInterval('P1D')); // since the provided date doesn't include the year, we either set it to the correct year - // or when the date would otherwise be in the future (by more then 1 day to account for timezone errors) + // or when the date would otherwise be in the future (by more than 1 day to account for timezone errors) // we use last year if ($parsedDate > $tomorrow) { $parsedDate = $parsedDate->sub(new \DateInterval('P1Y')); diff --git a/apps/files_trashbin/src/files_views/columns.spec.ts b/apps/files_trashbin/src/files_views/columns.spec.ts index 413b493e8a56e..fbed70761c653 100644 --- a/apps/files_trashbin/src/files_views/columns.spec.ts +++ b/apps/files_trashbin/src/files_views/columns.spec.ts @@ -312,7 +312,7 @@ describe('files_trashbin: file list columns', () => { }) expect(deletedBy.sort).toBeTypeOf('function') - // aaa is less then "Unknown" + // aaa is less than "Unknown" expect(deletedBy.sort!(nodeA, nodeC)).toBeLessThan(0) // zzz is greater than "Unknown" expect(deletedBy.sort!(nodeB, nodeC)).toBeGreaterThan(0) diff --git a/dist/NcEmojiPicker-DGgqTnHp-BL4_K0PB.chunk.mjs.map b/dist/NcEmojiPicker-DGgqTnHp-BL4_K0PB.chunk.mjs.map index 2ad117316cb13..2f24e58226a77 100644 --- a/dist/NcEmojiPicker-DGgqTnHp-BL4_K0PB.chunk.mjs.map +++ b/dist/NcEmojiPicker-DGgqTnHp-BL4_K0PB.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcEmojiPicker-DGgqTnHp-BL4_K0PB.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-DGgqTnHp.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: ``,\n\n custom: ``,\n\n flags: ``,\n\n foods: ``,\n\n nature: ``,\n\n objects: ``,\n\n smileys: ``,\n\n people: ` `,\n\n places: ``,\n\n recent: ``,\n\n symbols: ``,\n}\n\nexport default SVGs\n","\n\n\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","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n\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","\n\n\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-D07Se8Xb.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { s as setCurrentSkinTone, g as getCurrentSkinTone } from \"./emoji-V9hqFgPs.mjs\";\nimport { r as register, q as t43, s as t37, u as t16, v as t5, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { C as Color } from \"./colors-BfjxNgsx.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { N as NcPopover } from \"./NcPopover-CtdLAkEU.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH.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 '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-DGgqTnHp.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]} \ No newline at end of file +{"version":3,"file":"NcEmojiPicker-DGgqTnHp-BL4_K0PB.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-DGgqTnHp.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: ``,\n\n custom: ``,\n\n flags: ``,\n\n foods: ``,\n\n nature: ``,\n\n objects: ``,\n\n smileys: ``,\n\n people: ` `,\n\n places: ``,\n\n recent: ``,\n\n symbols: ``,\n}\n\nexport default SVGs\n","\n\n\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","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n\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 than `_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","\n\n\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-D07Se8Xb.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { s as setCurrentSkinTone, g as getCurrentSkinTone } from \"./emoji-V9hqFgPs.mjs\";\nimport { r as register, q as t43, s as t37, u as t16, v as t5, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { C as Color } from \"./colors-BfjxNgsx.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { N as NcPopover } from \"./NcPopover-CtdLAkEU.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH.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 '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-DGgqTnHp.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]} diff --git a/lib/private/Lock/DBLockingProvider.php b/lib/private/Lock/DBLockingProvider.php index ec5d84a5384fb..0ddc7ded15cab 100644 --- a/lib/private/Lock/DBLockingProvider.php +++ b/lib/private/Lock/DBLockingProvider.php @@ -182,7 +182,7 @@ public function changeLock(string $path, int $targetType): void { $qb->expr()->eq('lock', $qb->createNamedParameter(-1, IQueryBuilder::PARAM_INT)) ))->executeStatement(); } else { - // since we only keep one shared lock in the db we need to check if we have more then one shared lock locally manually + // since we only keep one shared lock in the db we need to check if we have more than one shared lock locally manually if (isset($this->acquiredLocks['shared'][$path]) && $this->acquiredLocks['shared'][$path] > 1) { throw new LockedException($path); }