{"version":3,"sources":["node_modules/nodebb-plugin-emoji/build/public/lib/emoji.js"],"names":["define","require","exports","Object","defineProperty","value","base","window","config","relative_path","buster","buildEmoji","emoji","defer","whole","name","deferClass","image","pack","character","strategy","match","search","term","callback","toLowerCase","replace","slice","index","template","cache","initialized","init","setTimeout","Promise","all","resolve_1","reject_1","resolve_2","reject_2","resolve_3","reject_3","$","getJSON","then","_a","fuzzy","leven","formatting","tableData","table","keys","map","aliases","keywords","fuzzyFind","arr","l","length","i","fuzzySearch","score","weight","weighted","startsWith","filter","obj","aliasMatch","keywordMatch","sort","a","b","aPrefixed","bPrefixed","addButtonDispatch","textarea","start","end","event","resolve_4","reject_4","toggleForInsert","catch","err","e","Error","console","error","app","alertError"],"mappings":"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","file":"node_modules/nodebb-plugin-emoji/build/public/lib/emoji.js","sourcesContent":["// eslint-disable-next-line spaced-comment\n/// \ndefine(\"emoji\", [\"require\", \"exports\"], function (require, exports) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n var base = window.config.relative_path + \"/plugins/nodebb-plugin-emoji\";\n exports.base = base;\n var buster = window.config['cache-buster'];\n exports.buster = buster;\n function buildEmoji(emoji, defer) {\n var whole = \":\" + emoji.name + \":\";\n var deferClass = defer ? ' defer' : '';\n if (emoji.image) {\n return \"\";\n }\n return \"\" + emoji.character + \"\";\n }\n exports.buildEmoji = buildEmoji;\n exports.strategy = {\n match: /\\B:([^\\s\\n:]+)$/,\n search: function (term, callback) {\n callback(exports.search(term.toLowerCase().replace(/[_-]/g, '')).slice(0, 10));\n },\n index: 1,\n replace: function (emoji) { return \":\" + emoji.name + \": \"; },\n template: function (emoji) { return buildEmoji(emoji) + \" \" + emoji.name; },\n cache: true,\n };\n var initialized = false;\n function init(callback) {\n if (initialized) {\n if (callback) {\n setTimeout(callback, 0);\n }\n return;\n }\n initialized = true;\n Promise.all([\n new Promise(function (resolve_1, reject_1) { require(['fuzzysearch'], resolve_1, reject_1); }),\n new Promise(function (resolve_2, reject_2) { require(['leven'], resolve_2, reject_2); }),\n new Promise(function (resolve_3, reject_3) { require(['composer/formatting'], resolve_3, reject_3); }),\n $.getJSON(base + \"/emoji/table.json?\" + buster),\n ]).then(function (_a) {\n var fuzzy = _a[0], leven = _a[1], formatting = _a[2], tableData = _a[3];\n exports.table = tableData;\n var all = Object.keys(exports.table).map(function (name) {\n var emoji = exports.table[name];\n return {\n name: name,\n aliases: emoji.aliases,\n keywords: emoji.keywords,\n character: emoji.character,\n image: emoji.image,\n pack: emoji.pack,\n };\n });\n function fuzzyFind(term, arr) {\n var l = arr.length;\n for (var i = 0; i < l; i += 1) {\n if (fuzzy(term, arr[i])) {\n return arr[i];\n }\n }\n return null;\n }\n function fuzzySearch(term) {\n function score(match, weight) {\n var weighted = weight * (1 + leven(term, match));\n return match.startsWith(term) ? weighted - 2 : weighted;\n }\n return all.filter(function (obj) {\n if (fuzzy(term, obj.name)) {\n obj.score = score(obj.name, 1);\n return true;\n }\n var aliasMatch = fuzzyFind(term, obj.aliases);\n if (aliasMatch) {\n obj.score = score(aliasMatch, 3);\n return true;\n }\n var keywordMatch = fuzzyFind(term, obj.keywords);\n if (keywordMatch) {\n obj.score = score(keywordMatch, 7);\n return true;\n }\n return false;\n }).sort(function (a, b) { return a.score - b.score; }).sort(function (a, b) {\n var aPrefixed = +a.name.startsWith(term);\n var bPrefixed = +b.name.startsWith(term);\n return bPrefixed - aPrefixed;\n });\n }\n exports.search = fuzzySearch;\n formatting.addButtonDispatch('emoji-add-emoji', function (textarea, start, end, event) {\n new Promise(function (resolve_4, reject_4) { require(['emoji-dialog'], resolve_4, reject_4); }).then(function (_a) {\n var toggleForInsert = _a.toggleForInsert;\n return toggleForInsert(textarea, start, end, event);\n });\n });\n if (callback) {\n setTimeout(callback, 0);\n }\n }).catch(function (err) {\n var e = Error('[[emoji:meta-load-failed]]');\n console.error(e);\n window.app.alertError(e);\n throw err;\n });\n }\n exports.init = init;\n});\n//# sourceMappingURL=emoji.js.map"]}