{"version":3,"file":"js/decidim_proposals-649a4a4b0d69e1517e22.js","mappings":"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","sources":["webpack://app/./node_modules/@orchidjs/sifter/dist/cjs/sifter.js","webpack://app/./node_modules/@orchidjs/unicode-variants/dist/cjs/regex.js","webpack://app/./node_modules/tom-select/dist/cjs/utils.js","webpack://app/./node_modules/tom-select/dist/cjs/contrib/highlight.js","webpack://app/./node_modules/tom-select/dist/cjs/contrib/microevent.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f58e736411fc/decidim-proposals/app/packs/images/ sync ^\\.\\/.*$","webpack://app/./node_modules/tom-select/dist/cjs/plugins/caret_position/plugin.js","webpack://app/./node_modules/tom-select/dist/cjs/constants.js","webpack://app/./node_modules/tom-select/dist/cjs/vanilla.js","webpack://app/./node_modules/@orchidjs/unicode-variants/dist/cjs/index.js","webpack://app/./node_modules/tom-select/dist/cjs/tom-select.js","webpack://app/./node_modules/@orchidjs/sifter/dist/cjs/types.js","webpack://app/./node_modules/@orchidjs/unicode-variants/dist/cjs/strings.js","webpack://app/./node_modules/tom-select/dist/cjs/tom-select.popular.js","webpack://app/./node_modules/tom-select/dist/cjs/plugins/dropdown_input/plugin.js","webpack://app/./node_modules/tom-select/dist/cjs/defaults.js","webpack://app/./node_modules/tom-select/dist/cjs/plugins/restore_on_backspace/plugin.js","webpack://app/./node_modules/tom-select/dist/cjs/contrib/microplugin.js","webpack://app/./node_modules/tom-select/dist/cjs/plugins/no_backspace_delete/plugin.js","webpack://app/./node_modules/tom-select/dist/cjs/getSettings.js","webpack://app/./node_modules/@orchidjs/sifter/dist/cjs/utils.js","webpack://app/./node_modules/tom-select/dist/cjs/plugins/remove_button/plugin.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f58e736411fc/decidim-proposals/app/packs/documents/ sync ^\\.\\/.*$","webpack://app/../usr/local/bundle/bundler/gems/decidim-f58e736411fc/decidim-proposals/app/packs/src/decidim/proposals/utils.js","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/publicPath","webpack://app/../usr/local/bundle/bundler/gems/decidim-f58e736411fc/decidim-core/app/packs/src/decidim/geocoding/coordinate_input.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f58e736411fc/decidim-core/app/packs/src/decidim/geocoding/attach_input.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f58e736411fc/decidim-proposals/app/packs/src/decidim/proposals/add_proposal.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f58e736411fc/decidim-proposals/app/packs/src/decidim/proposals/choose_proposals.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f58e736411fc/decidim-proposals/app/packs/entrypoints/decidim_proposals.js"],"sourcesContent":["\"use strict\";\n/**\n * sifter.js\n * Copyright (c) 2013–2020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPattern = exports.cmp = exports.iterate = exports.propToArray = exports.getAttrNesting = exports.getAttr = exports.scoreValue = exports.Sifter = void 0;\nconst utils_ts_1 = require(\"./utils.js\");\nObject.defineProperty(exports, \"scoreValue\", { enumerable: true, get: function () { return utils_ts_1.scoreValue; } });\nObject.defineProperty(exports, \"getAttr\", { enumerable: true, get: function () { return utils_ts_1.getAttr; } });\nObject.defineProperty(exports, \"getAttrNesting\", { enumerable: true, get: function () { return utils_ts_1.getAttrNesting; } });\nObject.defineProperty(exports, \"propToArray\", { enumerable: true, get: function () { return utils_ts_1.propToArray; } });\nObject.defineProperty(exports, \"iterate\", { enumerable: true, get: function () { return utils_ts_1.iterate; } });\nObject.defineProperty(exports, \"cmp\", { enumerable: true, get: function () { return utils_ts_1.cmp; } });\nconst unicode_variants_1 = require(\"@orchidjs/unicode-variants\");\nObject.defineProperty(exports, \"getPattern\", { enumerable: true, get: function () { return unicode_variants_1.getPattern; } });\nclass Sifter {\n items; // []|{};\n settings;\n /**\n * Textually searches arrays and hashes of objects\n * by property (or multiple properties). Designed\n * specifically for autocomplete.\n *\n */\n constructor(items, settings) {\n this.items = items;\n this.settings = settings || { diacritics: true };\n }\n ;\n /**\n * Splits a search string into an array of individual\n * regexps to be used to match results.\n *\n */\n tokenize(query, respect_word_boundaries, weights) {\n if (!query || !query.length)\n return [];\n const tokens = [];\n const words = query.split(/\\s+/);\n var field_regex;\n if (weights) {\n field_regex = new RegExp('^(' + Object.keys(weights).map(unicode_variants_1.escape_regex).join('|') + ')\\:(.*)$');\n }\n words.forEach((word) => {\n let field_match;\n let field = null;\n let regex = null;\n // look for \"field:query\" tokens\n if (field_regex && (field_match = word.match(field_regex))) {\n field = field_match[1];\n word = field_match[2];\n }\n if (word.length > 0) {\n if (this.settings.diacritics) {\n regex = (0, unicode_variants_1.getPattern)(word) || null;\n }\n else {\n regex = (0, unicode_variants_1.escape_regex)(word);\n }\n if (regex && respect_word_boundaries)\n regex = \"\\\\b\" + regex;\n }\n tokens.push({\n string: word,\n regex: regex ? new RegExp(regex, 'iu') : null,\n field: field,\n });\n });\n return tokens;\n }\n ;\n /**\n * Returns a function to be used to score individual results.\n *\n * Good matches will have a higher score than poor matches.\n * If an item is not a match, 0 will be returned by the function.\n *\n * @returns {T.ScoreFn}\n */\n getScoreFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getScoreFunction(search);\n }\n /**\n * @returns {T.ScoreFn}\n *\n */\n _getScoreFunction(search) {\n const tokens = search.tokens, token_count = tokens.length;\n if (!token_count) {\n return function () { return 0; };\n }\n const fields = search.options.fields, weights = search.weights, field_count = fields.length, getAttrFn = search.getAttrFn;\n if (!field_count) {\n return function () { return 1; };\n }\n /**\n * Calculates the score of an object\n * against the search query.\n *\n */\n const scoreObject = (function () {\n if (field_count === 1) {\n return function (token, data) {\n const field = fields[0].field;\n return (0, utils_ts_1.scoreValue)(getAttrFn(data, field), token, weights[field] || 1);\n };\n }\n return function (token, data) {\n var sum = 0;\n // is the token specific to a field?\n if (token.field) {\n const value = getAttrFn(data, token.field);\n if (!token.regex && value) {\n sum += (1 / field_count);\n }\n else {\n sum += (0, utils_ts_1.scoreValue)(value, token, 1);\n }\n }\n else {\n (0, utils_ts_1.iterate)(weights, (weight, field) => {\n sum += (0, utils_ts_1.scoreValue)(getAttrFn(data, field), token, weight);\n });\n }\n return sum / field_count;\n };\n })();\n if (token_count === 1) {\n return function (data) {\n return scoreObject(tokens[0], data);\n };\n }\n if (search.options.conjunction === 'and') {\n return function (data) {\n var score, sum = 0;\n for (let token of tokens) {\n score = scoreObject(token, data);\n if (score <= 0)\n return 0;\n sum += score;\n }\n return sum / token_count;\n };\n }\n else {\n return function (data) {\n var sum = 0;\n (0, utils_ts_1.iterate)(tokens, (token) => {\n sum += scoreObject(token, data);\n });\n return sum / token_count;\n };\n }\n }\n ;\n /**\n * Returns a function that can be used to compare two\n * results, for sorting purposes. If no sorting should\n * be performed, `null` will be returned.\n *\n * @return function(a,b)\n */\n getSortFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getSortFunction(search);\n }\n _getSortFunction(search) {\n var implicit_score, sort_flds = [];\n const self = this, options = search.options, sort = (!search.query && options.sort_empty) ? options.sort_empty : options.sort;\n if (typeof sort == 'function') {\n return sort.bind(this);\n }\n /**\n * Fetches the specified sort field value\n * from a search result item.\n *\n */\n const get_field = function (name, result) {\n if (name === '$score')\n return result.score;\n return search.getAttrFn(self.items[result.id], name);\n };\n // parse options\n if (sort) {\n for (let s of sort) {\n if (search.query || s.field !== '$score') {\n sort_flds.push(s);\n }\n }\n }\n // the \"$score\" field is implied to be the primary\n // sort field, unless it's manually specified\n if (search.query) {\n implicit_score = true;\n for (let fld of sort_flds) {\n if (fld.field === '$score') {\n implicit_score = false;\n break;\n }\n }\n if (implicit_score) {\n sort_flds.unshift({ field: '$score', direction: 'desc' });\n }\n // without a search.query, all items will have the same score\n }\n else {\n sort_flds = sort_flds.filter((fld) => fld.field !== '$score');\n }\n // build function\n const sort_flds_count = sort_flds.length;\n if (!sort_flds_count) {\n return null;\n }\n return function (a, b) {\n var result, field;\n for (let sort_fld of sort_flds) {\n field = sort_fld.field;\n let multiplier = sort_fld.direction === 'desc' ? -1 : 1;\n result = multiplier * (0, utils_ts_1.cmp)(get_field(field, a), get_field(field, b));\n if (result)\n return result;\n }\n return 0;\n };\n }\n ;\n /**\n * Parses a search query and returns an object\n * with tokens and fields ready to be populated\n * with results.\n *\n */\n prepareSearch(query, optsUser) {\n const weights = {};\n var options = Object.assign({}, optsUser);\n (0, utils_ts_1.propToArray)(options, 'sort');\n (0, utils_ts_1.propToArray)(options, 'sort_empty');\n // convert fields to new format\n if (options.fields) {\n (0, utils_ts_1.propToArray)(options, 'fields');\n const fields = [];\n options.fields.forEach((field) => {\n if (typeof field == 'string') {\n field = { field: field, weight: 1 };\n }\n fields.push(field);\n weights[field.field] = ('weight' in field) ? field.weight : 1;\n });\n options.fields = fields;\n }\n return {\n options: options,\n query: query.toLowerCase().trim(),\n tokens: this.tokenize(query, options.respect_word_boundaries, weights),\n total: 0,\n items: [],\n weights: weights,\n getAttrFn: (options.nesting) ? utils_ts_1.getAttrNesting : utils_ts_1.getAttr,\n };\n }\n ;\n /**\n * Searches through all items and returns a sorted array of matches.\n *\n */\n search(query, options) {\n var self = this, score, search;\n search = this.prepareSearch(query, options);\n options = search.options;\n query = search.query;\n // generate result scoring function\n const fn_score = options.score || self._getScoreFunction(search);\n // perform search and sort\n if (query.length) {\n (0, utils_ts_1.iterate)(self.items, (item, id) => {\n score = fn_score(item);\n if (options.filter === false || score > 0) {\n search.items.push({ 'score': score, 'id': id });\n }\n });\n }\n else {\n (0, utils_ts_1.iterate)(self.items, (_, id) => {\n search.items.push({ 'score': 1, 'id': id });\n });\n }\n const fn_sort = self._getSortFunction(search);\n if (fn_sort)\n search.items.sort(fn_sort);\n // apply limits\n search.total = search.items.length;\n if (typeof options.limit === 'number') {\n search.items = search.items.slice(0, options.limit);\n }\n return search;\n }\n ;\n}\nexports.Sifter = Sifter;\n__exportStar(require(\"./types.js\"), exports);\n//# sourceMappingURL=sifter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unicodeLength = exports.maxValueLength = exports.escape_regex = exports.hasDuplicates = exports.setToPattern = exports.sequencePattern = exports.arrayToPattern = void 0;\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nconst arrayToPattern = (chars) => {\n chars = chars.filter(Boolean);\n if (chars.length < 2) {\n return chars[0] || '';\n }\n return ((0, exports.maxValueLength)(chars) == 1) ? '[' + chars.join('') + ']' : '(?:' + chars.join('|') + ')';\n};\nexports.arrayToPattern = arrayToPattern;\nconst sequencePattern = (array) => {\n if (!(0, exports.hasDuplicates)(array)) {\n return array.join('');\n }\n let pattern = '';\n let prev_char_count = 0;\n const prev_pattern = () => {\n if (prev_char_count > 1) {\n pattern += '{' + prev_char_count + '}';\n }\n };\n array.forEach((char, i) => {\n if (char === array[i - 1]) {\n prev_char_count++;\n return;\n }\n prev_pattern();\n pattern += char;\n prev_char_count = 1;\n });\n prev_pattern();\n return pattern;\n};\nexports.sequencePattern = sequencePattern;\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nconst setToPattern = (chars) => {\n let array = Array.from(chars);\n return (0, exports.arrayToPattern)(array);\n};\nexports.setToPattern = setToPattern;\n/**\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n */\nconst hasDuplicates = (array) => {\n return (new Set(array)).size !== array.length;\n};\nexports.hasDuplicates = hasDuplicates;\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n */\nconst escape_regex = (str) => {\n return (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\nexports.escape_regex = escape_regex;\n/**\n * Return the max length of array values\n */\nconst maxValueLength = (array) => {\n return array.reduce((longest, value) => Math.max(longest, (0, exports.unicodeLength)(value)), 0);\n};\nexports.maxValueLength = maxValueLength;\nconst unicodeLength = (str) => {\n return Array.from(str).length;\n};\nexports.unicodeLength = unicodeLength;\n//# sourceMappingURL=regex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iterate = exports.append = exports.addSlashes = exports.getId = exports.isKeyDown = exports.addEvent = exports.preventDefault = exports.getSelection = exports.debounce_events = exports.loadDebounce = exports.timeout = exports.escape_html = exports.get_hash = exports.hash_key = void 0;\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n * 'str' -> 'str'\n * null -> ''\n * undefined -> ''\n * true -> '1'\n * false -> '0'\n * 0 -> '0'\n * 1 -> '1'\n *\n */\nconst hash_key = (value) => {\n if (typeof value === 'undefined' || value === null)\n return null;\n return (0, exports.get_hash)(value);\n};\nexports.hash_key = hash_key;\nconst get_hash = (value) => {\n if (typeof value === 'boolean')\n return value ? '1' : '0';\n return value + '';\n};\nexports.get_hash = get_hash;\n/**\n * Escapes a string for use within HTML.\n *\n */\nconst escape_html = (str) => {\n return (str + '')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"');\n};\nexports.escape_html = escape_html;\n/**\n * use setTimeout if timeout > 0\n */\nconst timeout = (fn, timeout) => {\n if (timeout > 0) {\n return window.setTimeout(fn, timeout);\n }\n fn.call(null);\n return null;\n};\nexports.timeout = timeout;\n/**\n * Debounce the user provided load function\n *\n */\nconst loadDebounce = (fn, delay) => {\n var timeout;\n return function (value, callback) {\n var self = this;\n if (timeout) {\n self.loading = Math.max(self.loading - 1, 0);\n clearTimeout(timeout);\n }\n timeout = setTimeout(function () {\n timeout = null;\n self.loadedSearches[value] = true;\n fn.call(self, value, callback);\n }, delay);\n };\n};\nexports.loadDebounce = loadDebounce;\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nconst debounce_events = (self, types, fn) => {\n var type;\n var trigger = self.trigger;\n var event_args = {};\n // override trigger method\n self.trigger = function () {\n var type = arguments[0];\n if (types.indexOf(type) !== -1) {\n event_args[type] = arguments;\n }\n else {\n return trigger.apply(self, arguments);\n }\n };\n // invoke provided function\n fn.apply(self, []);\n self.trigger = trigger;\n // trigger queued events\n for (type of types) {\n if (type in event_args) {\n trigger.apply(self, event_args[type]);\n }\n }\n};\nexports.debounce_events = debounce_events;\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n * - start\n * - length\n *\n * Note: \"selectionStart, selectionEnd ... apply only to inputs of types text, search, URL, tel and password\"\n * \t- https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n */\nconst getSelection = (input) => {\n return {\n start: input.selectionStart || 0,\n length: (input.selectionEnd || 0) - (input.selectionStart || 0),\n };\n};\nexports.getSelection = getSelection;\n/**\n * Prevent default\n *\n */\nconst preventDefault = (evt, stop = false) => {\n if (evt) {\n evt.preventDefault();\n if (stop) {\n evt.stopPropagation();\n }\n }\n};\nexports.preventDefault = preventDefault;\n/**\n * Add event helper\n *\n */\nconst addEvent = (target, type, callback, options) => {\n target.addEventListener(type, callback, options);\n};\nexports.addEvent = addEvent;\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nconst isKeyDown = (key_name, evt) => {\n if (!evt) {\n return false;\n }\n if (!evt[key_name]) {\n return false;\n }\n var count = (evt.altKey ? 1 : 0) + (evt.ctrlKey ? 1 : 0) + (evt.shiftKey ? 1 : 0) + (evt.metaKey ? 1 : 0);\n if (count === 1) {\n return true;\n }\n return false;\n};\nexports.isKeyDown = isKeyDown;\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nconst getId = (el, id) => {\n const existing_id = el.getAttribute('id');\n if (existing_id) {\n return existing_id;\n }\n el.setAttribute('id', id);\n return id;\n};\nexports.getId = getId;\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nconst addSlashes = (str) => {\n return str.replace(/[\\\\\"']/g, '\\\\$&');\n};\nexports.addSlashes = addSlashes;\n/**\n *\n */\nconst append = (parent, node) => {\n if (node)\n parent.append(node);\n};\nexports.append = append;\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nconst iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n }\n else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\nexports.iterate = iterate;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeHighlight = exports.highlight = void 0;\nconst vanilla_ts_1 = require(\"../vanilla.js\");\nconst highlight = (element, regex) => {\n if (regex === null)\n return;\n // convet string to regex\n if (typeof regex === 'string') {\n if (!regex.length)\n return;\n regex = new RegExp(regex, 'i');\n }\n // Wrap matching part of text node with highlighting <span>, e.g.\n // Soccer -> <span class=\"highlight\">Soc</span>cer for regex = /soc/i\n const highlightText = (node) => {\n var match = node.data.match(regex);\n if (match && node.data.length > 0) {\n var spannode = document.createElement('span');\n spannode.className = 'highlight';\n var middlebit = node.splitText(match.index);\n middlebit.splitText(match[0].length);\n var middleclone = middlebit.cloneNode(true);\n spannode.appendChild(middleclone);\n (0, vanilla_ts_1.replaceNode)(middlebit, spannode);\n return 1;\n }\n return 0;\n };\n // Recurse element node, looking for child text nodes to highlight, unless element\n // is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n const highlightChildren = (node) => {\n if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && (node.className !== 'highlight' || node.tagName !== 'SPAN')) {\n Array.from(node.childNodes).forEach(element => {\n highlightRecursive(element);\n });\n }\n };\n const highlightRecursive = (node) => {\n if (node.nodeType === 3) {\n return highlightText(node);\n }\n highlightChildren(node);\n return 0;\n };\n highlightRecursive(element);\n};\nexports.highlight = highlight;\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nconst removeHighlight = (el) => {\n var elements = el.querySelectorAll(\"span.highlight\");\n Array.prototype.forEach.call(elements, function (el) {\n var parent = el.parentNode;\n parent.replaceChild(el.firstChild, el);\n parent.normalize();\n });\n};\nexports.removeHighlight = removeHighlight;\n//# sourceMappingURL=highlight.js.map","\"use strict\";\n/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events, callback) {\n events.split(/\\s+/).forEach((event) => {\n callback(event);\n });\n}\nclass MicroEvent {\n constructor() {\n this._events = {};\n }\n on(events, fct) {\n forEvents(events, (event) => {\n const event_array = this._events[event] || [];\n event_array.push(fct);\n this._events[event] = event_array;\n });\n }\n off(events, fct) {\n var n = arguments.length;\n if (n === 0) {\n this._events = {};\n return;\n }\n forEvents(events, (event) => {\n if (n === 1) {\n delete this._events[event];\n return;\n }\n const event_array = this._events[event];\n if (event_array === undefined)\n return;\n event_array.splice(event_array.indexOf(fct), 1);\n this._events[event] = event_array;\n });\n }\n trigger(events, ...args) {\n var self = this;\n forEvents(events, (event) => {\n const event_array = self._events[event];\n if (event_array === undefined)\n return;\n event_array.forEach(fct => {\n fct.apply(self, args);\n });\n });\n }\n}\nexports.default = MicroEvent;\n;\n//# sourceMappingURL=microevent.js.map","var map = {\n\t\"./decidim/gamification/badges/decidim_gamification_badges_accepted_proposals.svg\": 15906,\n\t\"./decidim/gamification/badges/decidim_gamification_badges_proposal_votes.svg\": 89613,\n\t\"./decidim/gamification/badges/decidim_gamification_badges_proposals.svg\": 12666,\n\t\"./decidim/proposals/decidim_proposals.svg\": 20774,\n\t\"./decidim/proposals/proposal-placeholder-card-g.svg\": 38022\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 43171;","\"use strict\";\n/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst vanilla_ts_1 = require(\"../../vanilla.js\");\nfunction default_1() {\n var self = this;\n /**\n * Moves the caret to the specified index.\n *\n * The input must be moved by leaving it in place and moving the\n * siblings, due to the fact that focus cannot be restored once lost\n * on mobile webkit devices\n *\n */\n self.hook('instead', 'setCaret', (new_pos) => {\n if (self.settings.mode === 'single' || !self.control.contains(self.control_input)) {\n new_pos = self.items.length;\n }\n else {\n new_pos = Math.max(0, Math.min(self.items.length, new_pos));\n if (new_pos != self.caretPos && !self.isPending) {\n self.controlChildren().forEach((child, j) => {\n if (j < new_pos) {\n self.control_input.insertAdjacentElement('beforebegin', child);\n }\n else {\n self.control.appendChild(child);\n }\n });\n }\n }\n self.caretPos = new_pos;\n });\n self.hook('instead', 'moveCaret', (direction) => {\n if (!self.isFocused)\n return;\n // move caret before or after selected items\n const last_active = self.getLastActive(direction);\n if (last_active) {\n const idx = (0, vanilla_ts_1.nodeIndex)(last_active);\n self.setCaret(direction > 0 ? idx + 1 : idx);\n self.setActiveItem();\n (0, vanilla_ts_1.removeClasses)(last_active, 'last-active');\n // move caret left or right of current position\n }\n else {\n self.setCaret(self.caretPos + direction);\n }\n });\n}\n;\n//# sourceMappingURL=plugin.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KEY_SHORTCUT = exports.IS_MAC = exports.KEY_TAB = exports.KEY_DELETE = exports.KEY_BACKSPACE = exports.KEY_DOWN = exports.KEY_RIGHT = exports.KEY_UP = exports.KEY_LEFT = exports.KEY_ESC = exports.KEY_RETURN = exports.KEY_A = void 0;\nexports.KEY_A = 65;\nexports.KEY_RETURN = 13;\nexports.KEY_ESC = 27;\nexports.KEY_LEFT = 37;\nexports.KEY_UP = 38;\nexports.KEY_RIGHT = 39;\nexports.KEY_DOWN = 40;\nexports.KEY_BACKSPACE = 8;\nexports.KEY_DELETE = 46;\nexports.KEY_TAB = 9;\nexports.IS_MAC = typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexports.KEY_SHORTCUT = exports.IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n//# sourceMappingURL=constants.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceNode = exports.setAttr = exports.nodeIndex = exports.isEmptyObject = exports.getTail = exports.parentMatch = exports.castAsArray = exports.classesArray = exports.removeClasses = exports.addClasses = exports.applyCSS = exports.triggerEvent = exports.escapeQuery = exports.isHtmlString = exports.getDom = void 0;\nconst utils_ts_1 = require(\"./utils.js\");\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nconst getDom = (query) => {\n if (query.jquery) {\n return query[0];\n }\n if (query instanceof HTMLElement) {\n return query;\n }\n if ((0, exports.isHtmlString)(query)) {\n var tpl = document.createElement('template');\n tpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n return tpl.content.firstChild;\n }\n return document.querySelector(query);\n};\nexports.getDom = getDom;\nconst isHtmlString = (arg) => {\n if (typeof arg === 'string' && arg.indexOf('<') > -1) {\n return true;\n }\n return false;\n};\nexports.isHtmlString = isHtmlString;\nconst escapeQuery = (query) => {\n return query.replace(/['\"\\\\]/g, '\\\\$&');\n};\nexports.escapeQuery = escapeQuery;\n/**\n * Dispatch an event\n *\n */\nconst triggerEvent = (dom_el, event_name) => {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(event_name, true, false);\n dom_el.dispatchEvent(event);\n};\nexports.triggerEvent = triggerEvent;\n/**\n * Apply CSS rules to a dom element\n *\n */\nconst applyCSS = (dom_el, css) => {\n Object.assign(dom_el.style, css);\n};\nexports.applyCSS = applyCSS;\n/**\n * Add css classes\n *\n */\nconst addClasses = (elmts, ...classes) => {\n var norm_classes = (0, exports.classesArray)(classes);\n elmts = (0, exports.castAsArray)(elmts);\n elmts.map(el => {\n norm_classes.map(cls => {\n el.classList.add(cls);\n });\n });\n};\nexports.addClasses = addClasses;\n/**\n * Remove css classes\n *\n */\nconst removeClasses = (elmts, ...classes) => {\n var norm_classes = (0, exports.classesArray)(classes);\n elmts = (0, exports.castAsArray)(elmts);\n elmts.map(el => {\n norm_classes.map(cls => {\n el.classList.remove(cls);\n });\n });\n};\nexports.removeClasses = removeClasses;\n/**\n * Return arguments\n *\n */\nconst classesArray = (args) => {\n var classes = [];\n (0, utils_ts_1.iterate)(args, (_classes) => {\n if (typeof _classes === 'string') {\n _classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n }\n if (Array.isArray(_classes)) {\n classes = classes.concat(_classes);\n }\n });\n return classes.filter(Boolean);\n};\nexports.classesArray = classesArray;\n/**\n * Create an array from arg if it's not already an array\n *\n */\nconst castAsArray = (arg) => {\n if (!Array.isArray(arg)) {\n arg = [arg];\n }\n return arg;\n};\nexports.castAsArray = castAsArray;\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nconst parentMatch = (target, selector, wrapper) => {\n if (wrapper && !wrapper.contains(target)) {\n return;\n }\n while (target && target.matches) {\n if (target.matches(selector)) {\n return target;\n }\n target = target.parentNode;\n }\n};\nexports.parentMatch = parentMatch;\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nconst getTail = (list, direction = 0) => {\n if (direction > 0) {\n return list[list.length - 1];\n }\n return list[0];\n};\nexports.getTail = getTail;\n/**\n * Return true if an object is empty\n *\n */\nconst isEmptyObject = (obj) => {\n return (Object.keys(obj).length === 0);\n};\nexports.isEmptyObject = isEmptyObject;\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nconst nodeIndex = (el, amongst) => {\n if (!el)\n return -1;\n amongst = amongst || el.nodeName;\n var i = 0;\n while (el = el.previousElementSibling) {\n if (el.matches(amongst)) {\n i++;\n }\n }\n return i;\n};\nexports.nodeIndex = nodeIndex;\n/**\n * Set attributes of an element\n *\n */\nconst setAttr = (el, attrs) => {\n (0, utils_ts_1.iterate)(attrs, (val, attr) => {\n if (val == null) {\n el.removeAttribute(attr);\n }\n else {\n el.setAttribute(attr, '' + val);\n }\n });\n};\nexports.setAttr = setAttr;\n/**\n * Replace a node\n */\nconst replaceNode = (existing, replacement) => {\n if (existing.parentNode)\n existing.parentNode.replaceChild(replacement, existing);\n};\nexports.replaceNode = replaceNode;\n//# sourceMappingURL=vanilla.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escape_regex = exports.getPattern = exports.substringsToPattern = exports.mapSequence = exports.generateMap = exports.generateSets = exports._asciifold = exports.asciifold = exports.normalize = exports.initialize = exports.unicode_map = exports.code_points = void 0;\nexports.generator = generator;\nconst regex_ts_1 = require(\"./regex.js\");\nObject.defineProperty(exports, \"escape_regex\", { enumerable: true, get: function () { return regex_ts_1.escape_regex; } });\nconst strings_ts_1 = require(\"./strings.js\");\nexports.code_points = [[0, 65535]];\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\nlet multi_char_reg;\nconst max_char_length = 3;\nconst latin_convert = {};\nconst latin_condensed = {\n '/': 'â„∕',\n '0': '߀',\n \"a\": \"â±¥ÉÉ‘\",\n \"aa\": \"ꜳ\",\n \"ae\": \"æǽǣ\",\n \"ao\": \"ꜵ\",\n \"au\": \"ꜷ\",\n \"av\": \"ꜹꜻ\",\n \"ay\": \"ꜽ\",\n \"b\": \"ƀɓƃ\",\n \"c\": \"ꜿƈȼↄ\",\n \"d\": \"đɗɖᴅƌꮷÔɦ\",\n \"e\": \"É›Çᴇɇ\",\n \"f\": \"ê¼Æ’\",\n \"g\": \"Ç¥É êž¡áµ¹ê¿É¢\",\n \"h\": \"ħⱨⱶɥ\",\n \"i\": \"ɨı\",\n \"j\": \"ɉȷ\",\n \"k\": \"ƙⱪêêƒê…ꞣ\",\n \"l\": \"łƚɫⱡê‰ê‡êžÉ\",\n \"m\": \"ɱɯϻ\",\n \"n\": \"ꞥƞɲꞑᴎлԉ\",\n \"o\": \"øǿɔɵê‹êá´‘\",\n \"oe\": \"Å“\",\n \"oi\": \"Æ£\",\n \"oo\": \"ê\",\n \"ou\": \"È£\",\n \"p\": \"ƥᵽê‘ê“ê•Ï\",\n \"q\": \"ê—ê™É‹\",\n \"r\": \"Éɽê›êž§êžƒ\",\n \"s\": \"ßȿꞩꞅʂ\",\n \"t\": \"ŧÆʈⱦꞇ\",\n \"th\": \"þ\",\n \"tz\": \"ꜩ\",\n \"u\": \"ʉ\",\n \"v\": \"Ê‹êŸÊŒ\",\n \"vy\": \"ê¡\",\n \"w\": \"â±³\",\n \"y\": \"Æ´Éỿ\",\n \"z\": \"ƶȥɀⱬê£\",\n \"hv\": \"Æ•\"\n};\nfor (let latin in latin_condensed) {\n let unicode = latin_condensed[latin] || '';\n for (let i = 0; i < unicode.length; i++) {\n let char = unicode.substring(i, i + 1);\n latin_convert[char] = latin;\n }\n}\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|') + '|' + accent_pat, 'gu');\n/**\n * Initialize the unicode_map from the give code point ranges\n */\nconst initialize = (_code_points) => {\n if (exports.unicode_map !== undefined)\n return;\n exports.unicode_map = (0, exports.generateMap)(_code_points || exports.code_points);\n};\nexports.initialize = initialize;\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n */\nconst normalize = (str, form = 'NFKD') => str.normalize(form);\nexports.normalize = normalize;\n/**\n * Remove accents without reordering string\n * calling str.normalize('NFKD') on \\u{594}\\u{595}\\u{596} becomes \\u{596}\\u{594}\\u{595}\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n */\nconst asciifold = (str) => {\n return Array.from(str).reduce(\n /**\n * @param {string} result\n * @param {string} char\n */\n (result, char) => {\n return result + (0, exports._asciifold)(char);\n }, '');\n};\nexports.asciifold = asciifold;\nconst _asciifold = (str) => {\n str = (0, exports.normalize)(str)\n .toLowerCase()\n .replace(convert_pat, (/** @type {string} */ char) => {\n return latin_convert[char] || '';\n });\n //return str;\n return (0, exports.normalize)(str, 'NFC');\n};\nexports._asciifold = _asciifold;\n/**\n * Generate a list of unicode variants from the list of code points\n */\nfunction* generator(code_points) {\n for (const [code_point_min, code_point_max] of code_points) {\n for (let i = code_point_min; i <= code_point_max; i++) {\n let composed = String.fromCharCode(i);\n let folded = (0, exports.asciifold)(composed);\n if (folded == composed.toLowerCase()) {\n continue;\n }\n // skip when folded is a string longer than 3 characters long\n // bc the resulting regex patterns will be long\n // eg:\n // folded صلى الله عليه وسلم length 18 code point 65018\n // folded جل جلاله length 8 code point 65019\n if (folded.length > max_char_length) {\n continue;\n }\n if (folded.length == 0) {\n continue;\n }\n yield { folded: folded, composed: composed, code_point: i };\n }\n }\n}\n/**\n * Generate a unicode map from the list of code points\n */\nconst generateSets = (code_points) => {\n const unicode_sets = {};\n const addMatching = (folded, to_add) => {\n /** @type {Set<string>} */\n const folded_set = unicode_sets[folded] || new Set();\n const patt = new RegExp('^' + (0, regex_ts_1.setToPattern)(folded_set) + '$', 'iu');\n if (to_add.match(patt)) {\n return;\n }\n folded_set.add((0, regex_ts_1.escape_regex)(to_add));\n unicode_sets[folded] = folded_set;\n };\n for (let value of generator(code_points)) {\n addMatching(value.folded, value.folded);\n addMatching(value.folded, value.composed);\n }\n return unicode_sets;\n};\nexports.generateSets = generateSets;\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|Æ|Ǽ|Ç¢)|(?:A|â’¶|A...)(?:E|É›|â’º...))\n */\nconst generateMap = (code_points) => {\n const unicode_sets = (0, exports.generateSets)(code_points);\n const unicode_map = {};\n let multi_char = [];\n for (let folded in unicode_sets) {\n let set = unicode_sets[folded];\n if (set) {\n unicode_map[folded] = (0, regex_ts_1.setToPattern)(set);\n }\n if (folded.length > 1) {\n multi_char.push((0, regex_ts_1.escape_regex)(folded));\n }\n }\n multi_char.sort((a, b) => b.length - a.length);\n const multi_char_patt = (0, regex_ts_1.arrayToPattern)(multi_char);\n multi_char_reg = new RegExp('^' + multi_char_patt, 'u');\n return unicode_map;\n};\nexports.generateMap = generateMap;\n/**\n * Map each element of an array from its folded value to all possible unicode matches\n */\nconst mapSequence = (strings, min_replacement = 1) => {\n let chars_replaced = 0;\n strings = strings.map((str) => {\n if (exports.unicode_map[str]) {\n chars_replaced += str.length;\n }\n return exports.unicode_map[str] || str;\n });\n if (chars_replaced >= min_replacement) {\n return (0, regex_ts_1.sequencePattern)(strings);\n }\n return '';\n};\nexports.mapSequence = mapSequence;\n/**\n * Convert a short string and split it into all possible patterns\n * Keep a pattern only if min_replacement is met\n *\n * 'abc'\n * \t\t=> [['abc'],['ab','c'],['a','bc'],['a','b','c']]\n *\t\t=> ['abc-pattern','ab-c-pattern'...]\n */\nconst substringsToPattern = (str, min_replacement = 1) => {\n min_replacement = Math.max(min_replacement, str.length - 1);\n return (0, regex_ts_1.arrayToPattern)((0, strings_ts_1.allSubstrings)(str).map((sub_pat) => {\n return (0, exports.mapSequence)(sub_pat, min_replacement);\n }));\n};\nexports.substringsToPattern = substringsToPattern;\n/**\n * Convert an array of sequences into a pattern\n * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...)\n */\nconst sequencesToPattern = (sequences, all = true) => {\n let min_replacement = sequences.length > 1 ? 1 : 0;\n return (0, regex_ts_1.arrayToPattern)(sequences.map((sequence) => {\n let seq = [];\n const len = all ? sequence.length() : sequence.length() - 1;\n for (let j = 0; j < len; j++) {\n seq.push((0, exports.substringsToPattern)(sequence.substrs[j] || '', min_replacement));\n }\n return (0, regex_ts_1.sequencePattern)(seq);\n }));\n};\n/**\n * Return true if the sequence is already in the sequences\n */\nconst inSequences = (needle_seq, sequences) => {\n for (const seq of sequences) {\n if (seq.start != needle_seq.start || seq.end != needle_seq.end) {\n continue;\n }\n if (seq.substrs.join('') !== needle_seq.substrs.join('')) {\n continue;\n }\n let needle_parts = needle_seq.parts;\n const filter = (part) => {\n for (const needle_part of needle_parts) {\n if (needle_part.start === part.start && needle_part.substr === part.substr) {\n return false;\n }\n if (part.length == 1 || needle_part.length == 1) {\n continue;\n }\n // check for overlapping parts\n // a = ['::=','==']\n // b = ['::','===']\n // a = ['r','sm']\n // b = ['rs','m']\n if (part.start < needle_part.start && part.end > needle_part.start) {\n return true;\n }\n if (needle_part.start < part.start && needle_part.end > part.start) {\n return true;\n }\n }\n return false;\n };\n let filtered = seq.parts.filter(filter);\n if (filtered.length > 0) {\n continue;\n }\n return true;\n }\n return false;\n};\nclass Sequence {\n parts;\n substrs;\n start;\n end;\n constructor() {\n this.parts = [];\n this.substrs = [];\n this.start = 0;\n this.end = 0;\n }\n add(part) {\n if (part) {\n this.parts.push(part);\n this.substrs.push(part.substr);\n this.start = Math.min(part.start, this.start);\n this.end = Math.max(part.end, this.end);\n }\n }\n last() {\n return this.parts[this.parts.length - 1];\n }\n length() {\n return this.parts.length;\n }\n clone(position, last_piece) {\n let clone = new Sequence();\n let parts = JSON.parse(JSON.stringify(this.parts));\n let last_part = parts.pop();\n for (const part of parts) {\n clone.add(part);\n }\n let last_substr = last_piece.substr.substring(0, position - last_part.start);\n let clone_last_len = last_substr.length;\n clone.add({ start: last_part.start, end: last_part.start + clone_last_len, length: clone_last_len, substr: last_substr });\n return clone;\n }\n}\n/**\n * Expand a regular expression pattern to include unicode variants\n * \teg /a/ becomes /aâ“ï½áºšÃ áâầấẫẩãÄăằắẵẳȧǡäǟảåǻǎÈȃạáºáº·á¸Ä…â±¥ÉÉ‘AⒶAÀÃÃ‚áº¦áº¤áºªáº¨ÃƒÄ€Ä‚áº°áº®áº´áº²È¦Ç Ã„Çžáº¢Ã…ÇºÇȀȂẠẬẶḀĄȺⱯ/\n *\n * Issue:\n * ﺊﺋ [ 'ﺊ = \\\\u{fe8a}', 'ﺋ = \\\\u{fe8b}' ]\n *\tbecomes:\tÙŠÙ”ÙŠÙ” [ 'ÙŠ = \\\\u{64a}', 'Ù” = \\\\u{654}', 'ÙŠ = \\\\u{64a}', 'Ù” = \\\\u{654}' ]\n *\n *\tİIJ = IIJ = â…¡J\n *\n * \t1/2/4\n */\nconst getPattern = (str) => {\n (0, exports.initialize)();\n str = (0, exports.asciifold)(str);\n let pattern = '';\n let sequences = [new Sequence()];\n for (let i = 0; i < str.length; i++) {\n let substr = str.substring(i);\n let match = substr.match(multi_char_reg);\n const char = str.substring(i, i + 1);\n const match_str = match ? match[0] : null;\n // loop through sequences\n // add either the char or multi_match\n let overlapping = [];\n let added_types = new Set();\n for (const sequence of sequences) {\n const last_piece = sequence.last();\n if (!last_piece || last_piece.length == 1 || last_piece.end <= i) {\n // if we have a multi match\n if (match_str) {\n const len = match_str.length;\n sequence.add({ start: i, end: i + len, length: len, substr: match_str });\n added_types.add('1');\n }\n else {\n sequence.add({ start: i, end: i + 1, length: 1, substr: char });\n added_types.add('2');\n }\n }\n else if (match_str) {\n let clone = sequence.clone(i, last_piece);\n const len = match_str.length;\n clone.add({ start: i, end: i + len, length: len, substr: match_str });\n overlapping.push(clone);\n }\n else {\n // don't add char\n // adding would create invalid patterns: 234 => [2,34,4]\n added_types.add('3');\n }\n }\n // if we have overlapping\n if (overlapping.length > 0) {\n // ['ii','iii'] before ['i','i','iii']\n overlapping = overlapping.sort((a, b) => {\n return a.length() - b.length();\n });\n for (let clone of overlapping) {\n // don't add if we already have an equivalent sequence\n if (inSequences(clone, sequences)) {\n continue;\n }\n sequences.push(clone);\n }\n continue;\n }\n // if we haven't done anything unique\n // clean up the patterns\n // helps keep patterns smaller\n // if str = 'r₨㎧aarss', pattern will be 446 instead of 655\n if (i > 0 && added_types.size == 1 && !added_types.has('3')) {\n pattern += sequencesToPattern(sequences, false);\n let new_seq = new Sequence();\n const old_seq = sequences[0];\n if (old_seq) {\n new_seq.add(old_seq.last());\n }\n sequences = [new_seq];\n }\n }\n pattern += sequencesToPattern(sequences, true);\n return pattern;\n};\nexports.getPattern = getPattern;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst microevent_ts_1 = require(\"./contrib/microevent.js\");\nconst microplugin_ts_1 = require(\"./contrib/microplugin.js\");\nconst sifter_1 = require(\"@orchidjs/sifter\");\nconst unicode_variants_1 = require(\"@orchidjs/unicode-variants\");\nconst highlight_ts_1 = require(\"./contrib/highlight.js\");\nconst constants = require(\"./constants.js\");\nconst getSettings_ts_1 = require(\"./getSettings.js\");\nconst utils_ts_1 = require(\"./utils.js\");\nconst vanilla_ts_1 = require(\"./vanilla.js\");\nvar instance_i = 0;\nclass TomSelect extends (0, microplugin_ts_1.default)(microevent_ts_1.default) {\n constructor(input_arg, user_settings) {\n super();\n this.order = 0;\n this.isOpen = false;\n this.isDisabled = false;\n this.isReadOnly = false;\n this.isInvalid = false; // @deprecated 1.8\n this.isValid = true;\n this.isLocked = false;\n this.isFocused = false;\n this.isInputHidden = false;\n this.isSetup = false;\n this.ignoreFocus = false;\n this.ignoreHover = false;\n this.hasOptions = false;\n this.lastValue = '';\n this.caretPos = 0;\n this.loading = 0;\n this.loadedSearches = {};\n this.activeOption = null;\n this.activeItems = [];\n this.optgroups = {};\n this.options = {};\n this.userOptions = {};\n this.items = [];\n this.refreshTimeout = null;\n instance_i++;\n var dir;\n var input = (0, vanilla_ts_1.getDom)(input_arg);\n if (input.tomselect) {\n throw new Error('Tom Select already initialized on this element');\n }\n input.tomselect = this;\n // detect rtl environment\n var computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);\n dir = computedStyle.getPropertyValue('direction');\n // setup default state\n const settings = (0, getSettings_ts_1.default)(input, user_settings);\n this.settings = settings;\n this.input = input;\n this.tabIndex = input.tabIndex || 0;\n this.is_select_tag = input.tagName.toLowerCase() === 'select';\n this.rtl = /rtl/i.test(dir);\n this.inputId = (0, utils_ts_1.getId)(input, 'tomselect-' + instance_i);\n this.isRequired = input.required;\n // search system\n this.sifter = new sifter_1.Sifter(this.options, { diacritics: settings.diacritics });\n // option-dependent defaults\n settings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n if (typeof settings.hideSelected !== 'boolean') {\n settings.hideSelected = settings.mode === 'multi';\n }\n if (typeof settings.hidePlaceholder !== 'boolean') {\n settings.hidePlaceholder = settings.mode !== 'multi';\n }\n // set up createFilter callback\n var filter = settings.createFilter;\n if (typeof filter !== 'function') {\n if (typeof filter === 'string') {\n filter = new RegExp(filter);\n }\n if (filter instanceof RegExp) {\n settings.createFilter = (input) => filter.test(input);\n }\n else {\n settings.createFilter = (value) => {\n return this.settings.duplicates || !this.options[value];\n };\n }\n }\n this.initializePlugins(settings.plugins);\n this.setupCallbacks();\n this.setupTemplates();\n // Create all elements\n const wrapper = (0, vanilla_ts_1.getDom)('<div>');\n const control = (0, vanilla_ts_1.getDom)('<div>');\n const dropdown = this._render('dropdown');\n const dropdown_content = (0, vanilla_ts_1.getDom)(`<div role=\"listbox\" tabindex=\"-1\">`);\n const classes = this.input.getAttribute('class') || '';\n const inputMode = settings.mode;\n var control_input;\n (0, vanilla_ts_1.addClasses)(wrapper, settings.wrapperClass, classes, inputMode);\n (0, vanilla_ts_1.addClasses)(control, settings.controlClass);\n (0, utils_ts_1.append)(wrapper, control);\n (0, vanilla_ts_1.addClasses)(dropdown, settings.dropdownClass, inputMode);\n if (settings.copyClassesToDropdown) {\n (0, vanilla_ts_1.addClasses)(dropdown, classes);\n }\n (0, vanilla_ts_1.addClasses)(dropdown_content, settings.dropdownContentClass);\n (0, utils_ts_1.append)(dropdown, dropdown_content);\n (0, vanilla_ts_1.getDom)(settings.dropdownParent || wrapper).appendChild(dropdown);\n // default controlInput\n if ((0, vanilla_ts_1.isHtmlString)(settings.controlInput)) {\n control_input = (0, vanilla_ts_1.getDom)(settings.controlInput);\n // set attributes\n var attrs = ['autocorrect', 'autocapitalize', 'autocomplete', 'spellcheck'];\n (0, utils_ts_1.iterate)(attrs, (attr) => {\n if (input.getAttribute(attr)) {\n (0, vanilla_ts_1.setAttr)(control_input, { [attr]: input.getAttribute(attr) });\n }\n });\n control_input.tabIndex = -1;\n control.appendChild(control_input);\n this.focus_node = control_input;\n // dom element\n }\n else if (settings.controlInput) {\n control_input = (0, vanilla_ts_1.getDom)(settings.controlInput);\n this.focus_node = control_input;\n }\n else {\n control_input = (0, vanilla_ts_1.getDom)('<input/>');\n this.focus_node = control;\n }\n this.wrapper = wrapper;\n this.dropdown = dropdown;\n this.dropdown_content = dropdown_content;\n this.control = control;\n this.control_input = control_input;\n this.setup();\n }\n /**\n * set up event bindings.\n *\n */\n setup() {\n const self = this;\n const settings = self.settings;\n const control_input = self.control_input;\n const dropdown = self.dropdown;\n const dropdown_content = self.dropdown_content;\n const wrapper = self.wrapper;\n const control = self.control;\n const input = self.input;\n const focus_node = self.focus_node;\n const passive_event = { passive: true };\n const listboxId = self.inputId + '-ts-dropdown';\n (0, vanilla_ts_1.setAttr)(dropdown_content, {\n id: listboxId\n });\n (0, vanilla_ts_1.setAttr)(focus_node, {\n role: 'combobox',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': 'false',\n 'aria-controls': listboxId\n });\n const control_id = (0, utils_ts_1.getId)(focus_node, self.inputId + '-ts-control');\n const query = \"label[for='\" + (0, vanilla_ts_1.escapeQuery)(self.inputId) + \"']\";\n const label = document.querySelector(query);\n const label_click = self.focus.bind(self);\n if (label) {\n (0, utils_ts_1.addEvent)(label, 'click', label_click);\n (0, vanilla_ts_1.setAttr)(label, { for: control_id });\n const label_id = (0, utils_ts_1.getId)(label, self.inputId + '-ts-label');\n (0, vanilla_ts_1.setAttr)(focus_node, { 'aria-labelledby': label_id });\n (0, vanilla_ts_1.setAttr)(dropdown_content, { 'aria-labelledby': label_id });\n }\n wrapper.style.width = input.style.width;\n if (self.plugins.names.length) {\n const classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n (0, vanilla_ts_1.addClasses)([wrapper, dropdown], classes_plugins);\n }\n if ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag) {\n (0, vanilla_ts_1.setAttr)(input, { multiple: 'multiple' });\n }\n if (settings.placeholder) {\n (0, vanilla_ts_1.setAttr)(control_input, { placeholder: settings.placeholder });\n }\n // if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n if (!settings.splitOn && settings.delimiter) {\n settings.splitOn = new RegExp('\\\\s*' + (0, unicode_variants_1.escape_regex)(settings.delimiter) + '+\\\\s*');\n }\n // debounce user defined load() if loadThrottle > 0\n // after initializePlugins() so plugins can create/modify user defined loaders\n if (settings.load && settings.loadThrottle) {\n settings.load = (0, utils_ts_1.loadDebounce)(settings.load, settings.loadThrottle);\n }\n (0, utils_ts_1.addEvent)(dropdown, 'mousemove', () => {\n self.ignoreHover = false;\n });\n (0, utils_ts_1.addEvent)(dropdown, 'mouseenter', (e) => {\n var target_match = (0, vanilla_ts_1.parentMatch)(e.target, '[data-selectable]', dropdown);\n if (target_match)\n self.onOptionHover(e, target_match);\n }, { capture: true });\n // clicking on an option should select it\n (0, utils_ts_1.addEvent)(dropdown, 'click', (evt) => {\n const option = (0, vanilla_ts_1.parentMatch)(evt.target, '[data-selectable]');\n if (option) {\n self.onOptionSelect(evt, option);\n (0, utils_ts_1.preventDefault)(evt, true);\n }\n });\n (0, utils_ts_1.addEvent)(control, 'click', (evt) => {\n var target_match = (0, vanilla_ts_1.parentMatch)(evt.target, '[data-ts-item]', control);\n if (target_match && self.onItemSelect(evt, target_match)) {\n (0, utils_ts_1.preventDefault)(evt, true);\n return;\n }\n // retain focus (see control_input mousedown)\n if (control_input.value != '') {\n return;\n }\n self.onClick();\n (0, utils_ts_1.preventDefault)(evt, true);\n });\n // keydown on focus_node for arrow_down/arrow_up\n (0, utils_ts_1.addEvent)(focus_node, 'keydown', (e) => self.onKeyDown(e));\n // keypress and input/keyup\n (0, utils_ts_1.addEvent)(control_input, 'keypress', (e) => self.onKeyPress(e));\n (0, utils_ts_1.addEvent)(control_input, 'input', (e) => self.onInput(e));\n (0, utils_ts_1.addEvent)(focus_node, 'blur', (e) => self.onBlur(e));\n (0, utils_ts_1.addEvent)(focus_node, 'focus', (e) => self.onFocus(e));\n (0, utils_ts_1.addEvent)(control_input, 'paste', (e) => self.onPaste(e));\n const doc_mousedown = (evt) => {\n // blur if target is outside of this instance\n // dropdown is not always inside wrapper\n const target = evt.composedPath()[0];\n if (!wrapper.contains(target) && !dropdown.contains(target)) {\n if (self.isFocused) {\n self.blur();\n }\n self.inputState();\n return;\n }\n // retain focus by preventing native handling. if the\n // event target is the input it should not be modified.\n // otherwise, text selection within the input won't work.\n // Fixes bug #212 which is no covered by tests\n if (target == control_input && self.isOpen) {\n evt.stopPropagation();\n // clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n }\n else {\n (0, utils_ts_1.preventDefault)(evt, true);\n }\n };\n const win_scroll = () => {\n if (self.isOpen) {\n self.positionDropdown();\n }\n };\n (0, utils_ts_1.addEvent)(document, 'mousedown', doc_mousedown);\n (0, utils_ts_1.addEvent)(window, 'scroll', win_scroll, passive_event);\n (0, utils_ts_1.addEvent)(window, 'resize', win_scroll, passive_event);\n this._destroy = () => {\n document.removeEventListener('mousedown', doc_mousedown);\n window.removeEventListener('scroll', win_scroll);\n window.removeEventListener('resize', win_scroll);\n if (label)\n label.removeEventListener('click', label_click);\n };\n // store original html and tab index so that they can be\n // restored when the destroy() method is called.\n this.revertSettings = {\n innerHTML: input.innerHTML,\n tabIndex: input.tabIndex\n };\n input.tabIndex = -1;\n input.insertAdjacentElement('afterend', self.wrapper);\n self.sync(false);\n settings.items = [];\n delete settings.optgroups;\n delete settings.options;\n (0, utils_ts_1.addEvent)(input, 'invalid', () => {\n if (self.isValid) {\n self.isValid = false;\n self.isInvalid = true;\n self.refreshState();\n }\n });\n self.updateOriginalInput();\n self.refreshItems();\n self.close(false);\n self.inputState();\n self.isSetup = true;\n if (input.disabled) {\n self.disable();\n }\n else if (input.readOnly) {\n self.setReadOnly(true);\n }\n else {\n self.enable(); //sets tabIndex\n }\n self.on('change', this.onChange);\n (0, vanilla_ts_1.addClasses)(input, 'tomselected', 'ts-hidden-accessible');\n self.trigger('initialize');\n // preload options\n if (settings.preload === true) {\n self.preload();\n }\n }\n /**\n * Register options and optgroups\n *\n */\n setupOptions(options = [], optgroups = []) {\n // build options table\n this.addOptions(options);\n // build optgroup table\n (0, utils_ts_1.iterate)(optgroups, (optgroup) => {\n this.registerOptionGroup(optgroup);\n });\n }\n /**\n * Sets up default rendering functions.\n */\n setupTemplates() {\n var self = this;\n var field_label = self.settings.labelField;\n var field_optgroup = self.settings.optgroupLabelField;\n var templates = {\n 'optgroup': (data) => {\n let optgroup = document.createElement('div');\n optgroup.className = 'optgroup';\n optgroup.appendChild(data.options);\n return optgroup;\n },\n 'optgroup_header': (data, escape) => {\n return '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n },\n 'option': (data, escape) => {\n return '<div>' + escape(data[field_label]) + '</div>';\n },\n 'item': (data, escape) => {\n return '<div>' + escape(data[field_label]) + '</div>';\n },\n 'option_create': (data, escape) => {\n return '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>…</div>';\n },\n 'no_results': () => {\n return '<div class=\"no-results\">No results found</div>';\n },\n 'loading': () => {\n return '<div class=\"spinner\"></div>';\n },\n 'not_loading': () => { },\n 'dropdown': () => {\n return '<div></div>';\n }\n };\n self.settings.render = Object.assign({}, templates, self.settings.render);\n }\n /**\n * Maps fired events to callbacks provided\n * in the settings used when creating the control.\n */\n setupCallbacks() {\n var key, fn;\n var callbacks = {\n 'initialize': 'onInitialize',\n 'change': 'onChange',\n 'item_add': 'onItemAdd',\n 'item_remove': 'onItemRemove',\n 'item_select': 'onItemSelect',\n 'clear': 'onClear',\n 'option_add': 'onOptionAdd',\n 'option_remove': 'onOptionRemove',\n 'option_clear': 'onOptionClear',\n 'optgroup_add': 'onOptionGroupAdd',\n 'optgroup_remove': 'onOptionGroupRemove',\n 'optgroup_clear': 'onOptionGroupClear',\n 'dropdown_open': 'onDropdownOpen',\n 'dropdown_close': 'onDropdownClose',\n 'type': 'onType',\n 'load': 'onLoad',\n 'focus': 'onFocus',\n 'blur': 'onBlur'\n };\n for (key in callbacks) {\n fn = this.settings[callbacks[key]];\n if (fn)\n this.on(key, fn);\n }\n }\n /**\n * Sync the Tom Select instance with the original input or select\n *\n */\n sync(get_settings = true) {\n const self = this;\n const settings = get_settings ? (0, getSettings_ts_1.default)(self.input, { delimiter: self.settings.delimiter }) : self.settings;\n self.setupOptions(settings.options, settings.optgroups);\n self.setValue(settings.items || [], true); // silent prevents recursion\n self.lastQuery = null; // so updated options will be displayed in dropdown\n }\n /**\n * Triggered when the main control element\n * has a click event.\n *\n */\n onClick() {\n var self = this;\n if (self.activeItems.length > 0) {\n self.clearActiveItems();\n self.focus();\n return;\n }\n if (self.isFocused && self.isOpen) {\n self.blur();\n }\n else {\n self.focus();\n }\n }\n /**\n * @deprecated v1.7\n *\n */\n onMouseDown() { }\n /**\n * Triggered when the value of the control has been changed.\n * This should propagate the event to the original DOM\n * input / select element.\n */\n onChange() {\n (0, vanilla_ts_1.triggerEvent)(this.input, 'input');\n (0, vanilla_ts_1.triggerEvent)(this.input, 'change');\n }\n /**\n * Triggered on <input> paste.\n *\n */\n onPaste(e) {\n var self = this;\n if (self.isInputHidden || self.isLocked) {\n (0, utils_ts_1.preventDefault)(e);\n return;\n }\n // If a regex or string is included, this will split the pasted\n // input and create Items for each separate value\n if (!self.settings.splitOn) {\n return;\n }\n // Wait for pasted text to be recognized in value\n setTimeout(() => {\n var pastedText = self.inputValue();\n if (!pastedText.match(self.settings.splitOn)) {\n return;\n }\n var splitInput = pastedText.trim().split(self.settings.splitOn);\n (0, utils_ts_1.iterate)(splitInput, (piece) => {\n const hash = (0, utils_ts_1.hash_key)(piece);\n if (hash) {\n if (this.options[piece]) {\n self.addItem(piece);\n }\n else {\n self.createItem(piece);\n }\n }\n });\n }, 0);\n }\n /**\n * Triggered on <input> keypress.\n *\n */\n onKeyPress(e) {\n var self = this;\n if (self.isLocked) {\n (0, utils_ts_1.preventDefault)(e);\n return;\n }\n var character = String.fromCharCode(e.keyCode || e.which);\n if (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n self.createItem();\n (0, utils_ts_1.preventDefault)(e);\n return;\n }\n }\n /**\n * Triggered on <input> keydown.\n *\n */\n onKeyDown(e) {\n var self = this;\n self.ignoreHover = true;\n if (self.isLocked) {\n if (e.keyCode !== constants.KEY_TAB) {\n (0, utils_ts_1.preventDefault)(e);\n }\n return;\n }\n switch (e.keyCode) {\n // ctrl+A: select all\n case constants.KEY_A:\n if ((0, utils_ts_1.isKeyDown)(constants.KEY_SHORTCUT, e)) {\n if (self.control_input.value == '') {\n (0, utils_ts_1.preventDefault)(e);\n self.selectAll();\n return;\n }\n }\n break;\n // esc: close dropdown\n case constants.KEY_ESC:\n if (self.isOpen) {\n (0, utils_ts_1.preventDefault)(e, true);\n self.close();\n }\n self.clearActiveItems();\n return;\n // down: open dropdown or move selection down\n case constants.KEY_DOWN:\n if (!self.isOpen && self.hasOptions) {\n self.open();\n }\n else if (self.activeOption) {\n let next = self.getAdjacent(self.activeOption, 1);\n if (next)\n self.setActiveOption(next);\n }\n (0, utils_ts_1.preventDefault)(e);\n return;\n // up: move selection up\n case constants.KEY_UP:\n if (self.activeOption) {\n let prev = self.getAdjacent(self.activeOption, -1);\n if (prev)\n self.setActiveOption(prev);\n }\n (0, utils_ts_1.preventDefault)(e);\n return;\n // return: select active option\n case constants.KEY_RETURN:\n if (self.canSelect(self.activeOption)) {\n self.onOptionSelect(e, self.activeOption);\n (0, utils_ts_1.preventDefault)(e);\n // if the option_create=null, the dropdown might be closed\n }\n else if (self.settings.create && self.createItem()) {\n (0, utils_ts_1.preventDefault)(e);\n // don't submit form when searching for a value\n }\n else if (document.activeElement == self.control_input && self.isOpen) {\n (0, utils_ts_1.preventDefault)(e);\n }\n return;\n // left: modifiy item selection to the left\n case constants.KEY_LEFT:\n self.advanceSelection(-1, e);\n return;\n // right: modifiy item selection to the right\n case constants.KEY_RIGHT:\n self.advanceSelection(1, e);\n return;\n // tab: select active option and/or create item\n case constants.KEY_TAB:\n if (self.settings.selectOnTab) {\n if (self.canSelect(self.activeOption)) {\n self.onOptionSelect(e, self.activeOption);\n // prevent default [tab] behaviour of jump to the next field\n // if select isFull, then the dropdown won't be open and [tab] will work normally\n (0, utils_ts_1.preventDefault)(e);\n }\n if (self.settings.create && self.createItem()) {\n (0, utils_ts_1.preventDefault)(e);\n }\n }\n return;\n // delete|backspace: delete items\n case constants.KEY_BACKSPACE:\n case constants.KEY_DELETE:\n self.deleteSelection(e);\n return;\n }\n // don't enter text in the control_input when active items are selected\n if (self.isInputHidden && !(0, utils_ts_1.isKeyDown)(constants.KEY_SHORTCUT, e)) {\n (0, utils_ts_1.preventDefault)(e);\n }\n }\n /**\n * Triggered on <input> keyup.\n *\n */\n onInput(e) {\n if (this.isLocked) {\n return;\n }\n const value = this.inputValue();\n if (this.lastValue === value)\n return;\n this.lastValue = value;\n if (value == '') {\n this._onInput();\n return;\n }\n if (this.refreshTimeout) {\n window.clearTimeout(this.refreshTimeout);\n }\n this.refreshTimeout = (0, utils_ts_1.timeout)(() => {\n this.refreshTimeout = null;\n this._onInput();\n }, this.settings.refreshThrottle);\n }\n _onInput() {\n const value = this.lastValue;\n if (this.settings.shouldLoad.call(this, value)) {\n this.load(value);\n }\n this.refreshOptions();\n this.trigger('type', value);\n }\n /**\n * Triggered when the user rolls over\n * an option in the autocomplete dropdown menu.\n *\n */\n onOptionHover(evt, option) {\n if (this.ignoreHover)\n return;\n this.setActiveOption(option, false);\n }\n /**\n * Triggered on <input> focus.\n *\n */\n onFocus(e) {\n var self = this;\n var wasFocused = self.isFocused;\n if (self.isDisabled || self.isReadOnly) {\n self.blur();\n (0, utils_ts_1.preventDefault)(e);\n return;\n }\n if (self.ignoreFocus)\n return;\n self.isFocused = true;\n if (self.settings.preload === 'focus')\n self.preload();\n if (!wasFocused)\n self.trigger('focus');\n if (!self.activeItems.length) {\n self.inputState();\n self.refreshOptions(!!self.settings.openOnFocus);\n }\n self.refreshState();\n }\n /**\n * Triggered on <input> blur.\n *\n */\n onBlur(e) {\n if (document.hasFocus() === false)\n return;\n var self = this;\n if (!self.isFocused)\n return;\n self.isFocused = false;\n self.ignoreFocus = false;\n var deactivate = () => {\n self.close();\n self.setActiveItem();\n self.setCaret(self.items.length);\n self.trigger('blur');\n };\n if (self.settings.create && self.settings.createOnBlur) {\n self.createItem(null, deactivate);\n }\n else {\n deactivate();\n }\n }\n /**\n * Triggered when the user clicks on an option\n * in the autocomplete dropdown menu.\n *\n */\n onOptionSelect(evt, option) {\n var value, self = this;\n // should not be possible to trigger a option under a disabled optgroup\n if (option.parentElement && option.parentElement.matches('[data-disabled]')) {\n return;\n }\n if (option.classList.contains('create')) {\n self.createItem(null, () => {\n if (self.settings.closeAfterSelect) {\n self.close();\n }\n });\n }\n else {\n value = option.dataset.value;\n if (typeof value !== 'undefined') {\n self.lastQuery = null;\n self.addItem(value);\n if (self.settings.closeAfterSelect) {\n self.close();\n }\n if (!self.settings.hideSelected && evt.type && /click/.test(evt.type)) {\n self.setActiveOption(option);\n }\n }\n }\n }\n /**\n * Return true if the given option can be selected\n *\n */\n canSelect(option) {\n if (this.isOpen && option && this.dropdown_content.contains(option)) {\n return true;\n }\n return false;\n }\n /**\n * Triggered when the user clicks on an item\n * that has been selected.\n *\n */\n onItemSelect(evt, item) {\n var self = this;\n if (!self.isLocked && self.settings.mode === 'multi') {\n (0, utils_ts_1.preventDefault)(evt);\n self.setActiveItem(item, evt);\n return true;\n }\n return false;\n }\n /**\n * Determines whether or not to invoke\n * the user-provided option provider / loader\n *\n * Note, there is a subtle difference between\n * this.canLoad() and this.settings.shouldLoad();\n *\n *\t- settings.shouldLoad() is a user-input validator.\n *\tWhen false is returned, the not_loading template\n *\twill be added to the dropdown\n *\n *\t- canLoad() is lower level validator that checks\n * \tthe Tom Select instance. There is no inherent user\n *\tfeedback when canLoad returns false\n *\n */\n canLoad(value) {\n if (!this.settings.load)\n return false;\n if (this.loadedSearches.hasOwnProperty(value))\n return false;\n return true;\n }\n /**\n * Invokes the user-provided option provider / loader.\n *\n */\n load(value) {\n const self = this;\n if (!self.canLoad(value))\n return;\n (0, vanilla_ts_1.addClasses)(self.wrapper, self.settings.loadingClass);\n self.loading++;\n const callback = self.loadCallback.bind(self);\n self.settings.load.call(self, value, callback);\n }\n /**\n * Invoked by the user-provided option provider\n *\n */\n loadCallback(options, optgroups) {\n const self = this;\n self.loading = Math.max(self.loading - 1, 0);\n self.lastQuery = null;\n self.clearActiveOption(); // when new results load, focus should be on first option\n self.setupOptions(options, optgroups);\n self.refreshOptions(self.isFocused && !self.isInputHidden);\n if (!self.loading) {\n (0, vanilla_ts_1.removeClasses)(self.wrapper, self.settings.loadingClass);\n }\n self.trigger('load', options, optgroups);\n }\n preload() {\n var classList = this.wrapper.classList;\n if (classList.contains('preloaded'))\n return;\n classList.add('preloaded');\n this.load('');\n }\n /**\n * Sets the input field of the control to the specified value.\n *\n */\n setTextboxValue(value = '') {\n var input = this.control_input;\n var changed = input.value !== value;\n if (changed) {\n input.value = value;\n (0, vanilla_ts_1.triggerEvent)(input, 'update');\n this.lastValue = value;\n }\n }\n /**\n * Returns the value of the control. If multiple items\n * can be selected (e.g. <select multiple>), this returns\n * an array. If only one item can be selected, this\n * returns a string.\n *\n */\n getValue() {\n if (this.is_select_tag && this.input.hasAttribute('multiple')) {\n return this.items;\n }\n return this.items.join(this.settings.delimiter);\n }\n /**\n * Resets the selected items to the given value.\n *\n */\n setValue(value, silent) {\n var events = silent ? [] : ['change'];\n (0, utils_ts_1.debounce_events)(this, events, () => {\n this.clear(silent);\n this.addItems(value, silent);\n });\n }\n /**\n * Resets the number of max items to the given value\n *\n */\n setMaxItems(value) {\n if (value === 0)\n value = null; //reset to unlimited items.\n this.settings.maxItems = value;\n this.refreshState();\n }\n /**\n * Sets the selected item.\n *\n */\n setActiveItem(item, e) {\n var self = this;\n var eventName;\n var i, begin, end, swap;\n var last;\n if (self.settings.mode === 'single')\n return;\n // clear the active selection\n if (!item) {\n self.clearActiveItems();\n if (self.isFocused) {\n self.inputState();\n }\n return;\n }\n // modify selection\n eventName = e && e.type.toLowerCase();\n if (eventName === 'click' && (0, utils_ts_1.isKeyDown)('shiftKey', e) && self.activeItems.length) {\n last = self.getLastActive();\n begin = Array.prototype.indexOf.call(self.control.children, last);\n end = Array.prototype.indexOf.call(self.control.children, item);\n if (begin > end) {\n swap = begin;\n begin = end;\n end = swap;\n }\n for (i = begin; i <= end; i++) {\n item = self.control.children[i];\n if (self.activeItems.indexOf(item) === -1) {\n self.setActiveItemClass(item);\n }\n }\n (0, utils_ts_1.preventDefault)(e);\n }\n else if ((eventName === 'click' && (0, utils_ts_1.isKeyDown)(constants.KEY_SHORTCUT, e)) || (eventName === 'keydown' && (0, utils_ts_1.isKeyDown)('shiftKey', e))) {\n if (item.classList.contains('active')) {\n self.removeActiveItem(item);\n }\n else {\n self.setActiveItemClass(item);\n }\n }\n else {\n self.clearActiveItems();\n self.setActiveItemClass(item);\n }\n // ensure control has focus\n self.inputState();\n if (!self.isFocused) {\n self.focus();\n }\n }\n /**\n * Set the active and last-active classes\n *\n */\n setActiveItemClass(item) {\n const self = this;\n const last_active = self.control.querySelector('.last-active');\n if (last_active)\n (0, vanilla_ts_1.removeClasses)(last_active, 'last-active');\n (0, vanilla_ts_1.addClasses)(item, 'active last-active');\n self.trigger('item_select', item);\n if (self.activeItems.indexOf(item) == -1) {\n self.activeItems.push(item);\n }\n }\n /**\n * Remove active item\n *\n */\n removeActiveItem(item) {\n var idx = this.activeItems.indexOf(item);\n this.activeItems.splice(idx, 1);\n (0, vanilla_ts_1.removeClasses)(item, 'active');\n }\n /**\n * Clears all the active items\n *\n */\n clearActiveItems() {\n (0, vanilla_ts_1.removeClasses)(this.activeItems, 'active');\n this.activeItems = [];\n }\n /**\n * Sets the selected item in the dropdown menu\n * of available options.\n *\n */\n setActiveOption(option, scroll = true) {\n if (option === this.activeOption) {\n return;\n }\n this.clearActiveOption();\n if (!option)\n return;\n this.activeOption = option;\n (0, vanilla_ts_1.setAttr)(this.focus_node, { 'aria-activedescendant': option.getAttribute('id') });\n (0, vanilla_ts_1.setAttr)(option, { 'aria-selected': 'true' });\n (0, vanilla_ts_1.addClasses)(option, 'active');\n if (scroll)\n this.scrollToOption(option);\n }\n /**\n * Sets the dropdown_content scrollTop to display the option\n *\n */\n scrollToOption(option, behavior) {\n if (!option)\n return;\n const content = this.dropdown_content;\n const height_menu = content.clientHeight;\n const scrollTop = content.scrollTop || 0;\n const height_item = option.offsetHeight;\n const y = option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n if (y + height_item > height_menu + scrollTop) {\n this.scroll(y - height_menu + height_item, behavior);\n }\n else if (y < scrollTop) {\n this.scroll(y, behavior);\n }\n }\n /**\n * Scroll the dropdown to the given position\n *\n */\n scroll(scrollTop, behavior) {\n const content = this.dropdown_content;\n if (behavior) {\n content.style.scrollBehavior = behavior;\n }\n content.scrollTop = scrollTop;\n content.style.scrollBehavior = '';\n }\n /**\n * Clears the active option\n *\n */\n clearActiveOption() {\n if (this.activeOption) {\n (0, vanilla_ts_1.removeClasses)(this.activeOption, 'active');\n (0, vanilla_ts_1.setAttr)(this.activeOption, { 'aria-selected': null });\n }\n this.activeOption = null;\n (0, vanilla_ts_1.setAttr)(this.focus_node, { 'aria-activedescendant': null });\n }\n /**\n * Selects all items (CTRL + A).\n */\n selectAll() {\n const self = this;\n if (self.settings.mode === 'single')\n return;\n const activeItems = self.controlChildren();\n if (!activeItems.length)\n return;\n self.inputState();\n self.close();\n self.activeItems = activeItems;\n (0, utils_ts_1.iterate)(activeItems, (item) => {\n self.setActiveItemClass(item);\n });\n }\n /**\n * Determines if the control_input should be in a hidden or visible state\n *\n */\n inputState() {\n var self = this;\n if (!self.control.contains(self.control_input))\n return;\n (0, vanilla_ts_1.setAttr)(self.control_input, { placeholder: self.settings.placeholder });\n if (self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0)) {\n self.setTextboxValue();\n self.isInputHidden = true;\n }\n else {\n if (self.settings.hidePlaceholder && self.items.length > 0) {\n (0, vanilla_ts_1.setAttr)(self.control_input, { placeholder: '' });\n }\n self.isInputHidden = false;\n }\n self.wrapper.classList.toggle('input-hidden', self.isInputHidden);\n }\n /**\n * Get the input value\n */\n inputValue() {\n return this.control_input.value.trim();\n }\n /**\n * Gives the control focus.\n */\n focus() {\n var self = this;\n if (self.isDisabled || self.isReadOnly)\n return;\n self.ignoreFocus = true;\n if (self.control_input.offsetWidth) {\n self.control_input.focus();\n }\n else {\n self.focus_node.focus();\n }\n setTimeout(() => {\n self.ignoreFocus = false;\n self.onFocus();\n }, 0);\n }\n /**\n * Forces the control out of focus.\n *\n */\n blur() {\n this.focus_node.blur();\n this.onBlur();\n }\n /**\n * Returns a function that scores an object\n * to show how good of a match it is to the\n * provided query.\n *\n * @return {function}\n */\n getScoreFunction(query) {\n return this.sifter.getScoreFunction(query, this.getSearchOptions());\n }\n /**\n * Returns search options for sifter (the system\n * for scoring and sorting results).\n *\n * @see https://github.com/orchidjs/sifter.js\n * @return {object}\n */\n getSearchOptions() {\n var settings = this.settings;\n var sort = settings.sortField;\n if (typeof settings.sortField === 'string') {\n sort = [{ field: settings.sortField }];\n }\n return {\n fields: settings.searchField,\n conjunction: settings.searchConjunction,\n sort: sort,\n nesting: settings.nesting\n };\n }\n /**\n * Searches through available options and returns\n * a sorted array of matches.\n *\n */\n search(query) {\n var result, calculateScore;\n var self = this;\n var options = this.getSearchOptions();\n // validate user-provided result scoring function\n if (self.settings.score) {\n calculateScore = self.settings.score.call(self, query);\n if (typeof calculateScore !== 'function') {\n throw new Error('Tom Select \"score\" setting must be a function that returns a function');\n }\n }\n // perform search\n if (query !== self.lastQuery) {\n self.lastQuery = query;\n result = self.sifter.search(query, Object.assign(options, { score: calculateScore }));\n self.currentResults = result;\n }\n else {\n result = Object.assign({}, self.currentResults);\n }\n // filter out selected items\n if (self.settings.hideSelected) {\n result.items = result.items.filter((item) => {\n let hashed = (0, utils_ts_1.hash_key)(item.id);\n return !(hashed && self.items.indexOf(hashed) !== -1);\n });\n }\n return result;\n }\n /**\n * Refreshes the list of available options shown\n * in the autocomplete dropdown menu.\n *\n */\n refreshOptions(triggerDropdown = true) {\n var i, j, k, n, optgroup, optgroups, html, has_create_option, active_group;\n var create;\n const groups = {};\n const groups_order = [];\n var self = this;\n var query = self.inputValue();\n const same_query = query === self.lastQuery || (query == '' && self.lastQuery == null);\n var results = self.search(query);\n var active_option = null;\n var show_dropdown = self.settings.shouldOpen || false;\n var dropdown_content = self.dropdown_content;\n if (same_query) {\n active_option = self.activeOption;\n if (active_option) {\n active_group = active_option.closest('[data-group]');\n }\n }\n // build markup\n n = results.items.length;\n if (typeof self.settings.maxOptions === 'number') {\n n = Math.min(n, self.settings.maxOptions);\n }\n if (n > 0) {\n show_dropdown = true;\n }\n // get fragment for group and the position of the group in group_order\n const getGroupFragment = (optgroup, order) => {\n let group_order_i = groups[optgroup];\n if (group_order_i !== undefined) {\n let order_group = groups_order[group_order_i];\n if (order_group !== undefined) {\n return [group_order_i, order_group.fragment];\n }\n }\n let group_fragment = document.createDocumentFragment();\n group_order_i = groups_order.length;\n groups_order.push({ fragment: group_fragment, order, optgroup });\n return [group_order_i, group_fragment];\n };\n // render and group available options individually\n for (i = 0; i < n; i++) {\n // get option dom element\n let item = results.items[i];\n if (!item)\n continue;\n let opt_value = item.id;\n let option = self.options[opt_value];\n if (option === undefined)\n continue;\n let opt_hash = (0, utils_ts_1.get_hash)(opt_value);\n let option_el = self.getOption(opt_hash, true);\n // toggle 'selected' class\n if (!self.settings.hideSelected) {\n option_el.classList.toggle('selected', self.items.includes(opt_hash));\n }\n optgroup = option[self.settings.optgroupField] || '';\n optgroups = Array.isArray(optgroup) ? optgroup : [optgroup];\n for (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n optgroup = optgroups[j];\n let order = option.$order;\n let self_optgroup = self.optgroups[optgroup];\n if (self_optgroup === undefined) {\n optgroup = '';\n }\n else {\n order = self_optgroup.$order;\n }\n const [group_order_i, group_fragment] = getGroupFragment(optgroup, order);\n // nodes can only have one parent, so if the option is in mutple groups, we need a clone\n if (j > 0) {\n option_el = option_el.cloneNode(true);\n (0, vanilla_ts_1.setAttr)(option_el, { id: option.$id + '-clone-' + j, 'aria-selected': null });\n option_el.classList.add('ts-cloned');\n (0, vanilla_ts_1.removeClasses)(option_el, 'active');\n // make sure we keep the activeOption in the same group\n if (self.activeOption && self.activeOption.dataset.value == opt_value) {\n if (active_group && active_group.dataset.group === optgroup.toString()) {\n active_option = option_el;\n }\n }\n }\n group_fragment.appendChild(option_el);\n if (optgroup != '') {\n groups[optgroup] = group_order_i;\n }\n }\n }\n // sort optgroups\n if (self.settings.lockOptgroupOrder) {\n groups_order.sort((a, b) => {\n return a.order - b.order;\n });\n }\n // render optgroup headers & join groups\n html = document.createDocumentFragment();\n (0, utils_ts_1.iterate)(groups_order, (group_order) => {\n let group_fragment = group_order.fragment;\n let optgroup = group_order.optgroup;\n if (!group_fragment || !group_fragment.children.length)\n return;\n let group_heading = self.optgroups[optgroup];\n if (group_heading !== undefined) {\n let group_options = document.createDocumentFragment();\n let header = self.render('optgroup_header', group_heading);\n (0, utils_ts_1.append)(group_options, header);\n (0, utils_ts_1.append)(group_options, group_fragment);\n let group_html = self.render('optgroup', { group: group_heading, options: group_options });\n (0, utils_ts_1.append)(html, group_html);\n }\n else {\n (0, utils_ts_1.append)(html, group_fragment);\n }\n });\n dropdown_content.innerHTML = '';\n (0, utils_ts_1.append)(dropdown_content, html);\n // highlight matching terms inline\n if (self.settings.highlight) {\n (0, highlight_ts_1.removeHighlight)(dropdown_content);\n if (results.query.length && results.tokens.length) {\n (0, utils_ts_1.iterate)(results.tokens, (tok) => {\n (0, highlight_ts_1.highlight)(dropdown_content, tok.regex);\n });\n }\n }\n // helper method for adding templates to dropdown\n var add_template = (template) => {\n let content = self.render(template, { input: query });\n if (content) {\n show_dropdown = true;\n dropdown_content.insertBefore(content, dropdown_content.firstChild);\n }\n return content;\n };\n // add loading message\n if (self.loading) {\n add_template('loading');\n // invalid query\n }\n else if (!self.settings.shouldLoad.call(self, query)) {\n add_template('not_loading');\n // add no_results message\n }\n else if (results.items.length === 0) {\n add_template('no_results');\n }\n // add create option\n has_create_option = self.canCreate(query);\n if (has_create_option) {\n create = add_template('option_create');\n }\n // activate\n self.hasOptions = results.items.length > 0 || has_create_option;\n if (show_dropdown) {\n if (results.items.length > 0) {\n if (!active_option && self.settings.mode === 'single' && self.items[0] != undefined) {\n active_option = self.getOption(self.items[0]);\n }\n if (!dropdown_content.contains(active_option)) {\n let active_index = 0;\n if (create && !self.settings.addPrecedence) {\n active_index = 1;\n }\n active_option = self.selectable()[active_index];\n }\n }\n else if (create) {\n active_option = create;\n }\n if (triggerDropdown && !self.isOpen) {\n self.open();\n self.scrollToOption(active_option, 'auto');\n }\n self.setActiveOption(active_option);\n }\n else {\n self.clearActiveOption();\n if (triggerDropdown && self.isOpen) {\n self.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n }\n }\n }\n /**\n * Return list of selectable options\n *\n */\n selectable() {\n return this.dropdown_content.querySelectorAll('[data-selectable]');\n }\n /**\n * Adds an available option. If it already exists,\n * nothing will happen. Note: this does not refresh\n * the options list dropdown (use `refreshOptions`\n * for that).\n *\n * Usage:\n *\n * this.addOption(data)\n *\n */\n addOption(data, user_created = false) {\n const self = this;\n // @deprecated 1.7.7\n // use addOptions( array, user_created ) for adding multiple options\n if (Array.isArray(data)) {\n self.addOptions(data, user_created);\n return false;\n }\n const key = (0, utils_ts_1.hash_key)(data[self.settings.valueField]);\n if (key === null || self.options.hasOwnProperty(key)) {\n return false;\n }\n data.$order = data.$order || ++self.order;\n data.$id = self.inputId + '-opt-' + data.$order;\n self.options[key] = data;\n self.lastQuery = null;\n if (user_created) {\n self.userOptions[key] = user_created;\n self.trigger('option_add', key, data);\n }\n return key;\n }\n /**\n * Add multiple options\n *\n */\n addOptions(data, user_created = false) {\n (0, utils_ts_1.iterate)(data, (dat) => {\n this.addOption(dat, user_created);\n });\n }\n /**\n * @deprecated 1.7.7\n */\n registerOption(data) {\n return this.addOption(data);\n }\n /**\n * Registers an option group to the pool of option groups.\n *\n * @return {boolean|string}\n */\n registerOptionGroup(data) {\n var key = (0, utils_ts_1.hash_key)(data[this.settings.optgroupValueField]);\n if (key === null)\n return false;\n data.$order = data.$order || ++this.order;\n this.optgroups[key] = data;\n return key;\n }\n /**\n * Registers a new optgroup for options\n * to be bucketed into.\n *\n */\n addOptionGroup(id, data) {\n var hashed_id;\n data[this.settings.optgroupValueField] = id;\n if (hashed_id = this.registerOptionGroup(data)) {\n this.trigger('optgroup_add', hashed_id, data);\n }\n }\n /**\n * Removes an existing option group.\n *\n */\n removeOptionGroup(id) {\n if (this.optgroups.hasOwnProperty(id)) {\n delete this.optgroups[id];\n this.clearCache();\n this.trigger('optgroup_remove', id);\n }\n }\n /**\n * Clears all existing option groups.\n */\n clearOptionGroups() {\n this.optgroups = {};\n this.clearCache();\n this.trigger('optgroup_clear');\n }\n /**\n * Updates an option available for selection. If\n * it is visible in the selected items or options\n * dropdown, it will be re-rendered automatically.\n *\n */\n updateOption(value, data) {\n const self = this;\n var item_new;\n var index_item;\n const value_old = (0, utils_ts_1.hash_key)(value);\n const value_new = (0, utils_ts_1.hash_key)(data[self.settings.valueField]);\n // sanity checks\n if (value_old === null)\n return;\n const data_old = self.options[value_old];\n if (data_old == undefined)\n return;\n if (typeof value_new !== 'string')\n throw new Error('Value must be set in option data');\n const option = self.getOption(value_old);\n const item = self.getItem(value_old);\n data.$order = data.$order || data_old.$order;\n delete self.options[value_old];\n // invalidate render cache\n // don't remove existing node yet, we'll remove it after replacing it\n self.uncacheValue(value_new);\n self.options[value_new] = data;\n // update the option if it's in the dropdown\n if (option) {\n if (self.dropdown_content.contains(option)) {\n const option_new = self._render('option', data);\n (0, vanilla_ts_1.replaceNode)(option, option_new);\n if (self.activeOption === option) {\n self.setActiveOption(option_new);\n }\n }\n option.remove();\n }\n // update the item if we have one\n if (item) {\n index_item = self.items.indexOf(value_old);\n if (index_item !== -1) {\n self.items.splice(index_item, 1, value_new);\n }\n item_new = self._render('item', data);\n if (item.classList.contains('active'))\n (0, vanilla_ts_1.addClasses)(item_new, 'active');\n (0, vanilla_ts_1.replaceNode)(item, item_new);\n }\n // invalidate last query because we might have updated the sortField\n self.lastQuery = null;\n }\n /**\n * Removes a single option.\n *\n */\n removeOption(value, silent) {\n const self = this;\n value = (0, utils_ts_1.get_hash)(value);\n self.uncacheValue(value);\n delete self.userOptions[value];\n delete self.options[value];\n self.lastQuery = null;\n self.trigger('option_remove', value);\n self.removeItem(value, silent);\n }\n /**\n * Clears all options.\n */\n clearOptions(filter) {\n const boundFilter = (filter || this.clearFilter).bind(this);\n this.loadedSearches = {};\n this.userOptions = {};\n this.clearCache();\n const selected = {};\n (0, utils_ts_1.iterate)(this.options, (option, key) => {\n if (boundFilter(option, key)) {\n selected[key] = option;\n }\n });\n this.options = this.sifter.items = selected;\n this.lastQuery = null;\n this.trigger('option_clear');\n }\n /**\n * Used by clearOptions() to decide whether or not an option should be removed\n * Return true to keep an option, false to remove\n *\n */\n clearFilter(option, value) {\n if (this.items.indexOf(value) >= 0) {\n return true;\n }\n return false;\n }\n /**\n * Returns the dom element of the option\n * matching the given value.\n *\n */\n getOption(value, create = false) {\n const hashed = (0, utils_ts_1.hash_key)(value);\n if (hashed === null)\n return null;\n const option = this.options[hashed];\n if (option != undefined) {\n if (option.$div) {\n return option.$div;\n }\n if (create) {\n return this._render('option', option);\n }\n }\n return null;\n }\n /**\n * Returns the dom element of the next or previous dom element of the same type\n * Note: adjacent options may not be adjacent DOM elements (optgroups)\n *\n */\n getAdjacent(option, direction, type = 'option') {\n var self = this, all;\n if (!option) {\n return null;\n }\n if (type == 'item') {\n all = self.controlChildren();\n }\n else {\n all = self.dropdown_content.querySelectorAll('[data-selectable]');\n }\n for (let i = 0; i < all.length; i++) {\n if (all[i] != option) {\n continue;\n }\n if (direction > 0) {\n return all[i + 1];\n }\n return all[i - 1];\n }\n return null;\n }\n /**\n * Returns the dom element of the item\n * matching the given value.\n *\n */\n getItem(item) {\n if (typeof item == 'object') {\n return item;\n }\n var value = (0, utils_ts_1.hash_key)(item);\n return value !== null\n ? this.control.querySelector(`[data-value=\"${(0, utils_ts_1.addSlashes)(value)}\"]`)\n : null;\n }\n /**\n * \"Selects\" multiple items at once. Adds them to the list\n * at the current caret position.\n *\n */\n addItems(values, silent) {\n var self = this;\n var items = Array.isArray(values) ? values : [values];\n items = items.filter(x => self.items.indexOf(x) === -1);\n const last_item = items[items.length - 1];\n items.forEach(item => {\n self.isPending = (item !== last_item);\n self.addItem(item, silent);\n });\n }\n /**\n * \"Selects\" an item. Adds it to the list\n * at the current caret position.\n *\n */\n addItem(value, silent) {\n var events = silent ? [] : ['change', 'dropdown_close'];\n (0, utils_ts_1.debounce_events)(this, events, () => {\n var item, wasFull;\n const self = this;\n const inputMode = self.settings.mode;\n const hashed = (0, utils_ts_1.hash_key)(value);\n if (hashed && self.items.indexOf(hashed) !== -1) {\n if (inputMode === 'single') {\n self.close();\n }\n if (inputMode === 'single' || !self.settings.duplicates) {\n return;\n }\n }\n if (hashed === null || !self.options.hasOwnProperty(hashed))\n return;\n if (inputMode === 'single')\n self.clear(silent);\n if (inputMode === 'multi' && self.isFull())\n return;\n item = self._render('item', self.options[hashed]);\n if (self.control.contains(item)) { // duplicates\n item = item.cloneNode(true);\n }\n wasFull = self.isFull();\n self.items.splice(self.caretPos, 0, hashed);\n self.insertAtCaret(item);\n if (self.isSetup) {\n // update menu / remove the option (if this is not one item being added as part of series)\n if (!self.isPending && self.settings.hideSelected) {\n let option = self.getOption(hashed);\n let next = self.getAdjacent(option, 1);\n if (next) {\n self.setActiveOption(next);\n }\n }\n // refreshOptions after setActiveOption(),\n // otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n if (!self.isPending && !self.settings.closeAfterSelect) {\n self.refreshOptions(self.isFocused && inputMode !== 'single');\n }\n // hide the menu if the maximum number of items have been selected or no options are left\n if (self.settings.closeAfterSelect != false && self.isFull()) {\n self.close();\n }\n else if (!self.isPending) {\n self.positionDropdown();\n }\n self.trigger('item_add', hashed, item);\n if (!self.isPending) {\n self.updateOriginalInput({ silent: silent });\n }\n }\n if (!self.isPending || (!wasFull && self.isFull())) {\n self.inputState();\n self.refreshState();\n }\n });\n }\n /**\n * Removes the selected item matching\n * the provided value.\n *\n */\n removeItem(item = null, silent) {\n const self = this;\n item = self.getItem(item);\n if (!item)\n return;\n var i, idx;\n const value = item.dataset.value;\n i = (0, vanilla_ts_1.nodeIndex)(item);\n item.remove();\n if (item.classList.contains('active')) {\n idx = self.activeItems.indexOf(item);\n self.activeItems.splice(idx, 1);\n (0, vanilla_ts_1.removeClasses)(item, 'active');\n }\n self.items.splice(i, 1);\n self.lastQuery = null;\n if (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n self.removeOption(value, silent);\n }\n if (i < self.caretPos) {\n self.setCaret(self.caretPos - 1);\n }\n self.updateOriginalInput({ silent: silent });\n self.refreshState();\n self.positionDropdown();\n self.trigger('item_remove', value, item);\n }\n /**\n * Invokes the `create` method provided in the\n * TomSelect options that should provide the data\n * for the new item, given the user input.\n *\n * Once this completes, it will be added\n * to the item list.\n *\n */\n createItem(input = null, callback = () => { }) {\n // triggerDropdown parameter @deprecated 2.1.1\n if (arguments.length === 3) {\n callback = arguments[2];\n }\n if (typeof callback != 'function') {\n callback = () => { };\n }\n var self = this;\n var caret = self.caretPos;\n var output;\n input = input || self.inputValue();\n if (!self.canCreate(input)) {\n callback();\n return false;\n }\n self.lock();\n var created = false;\n var create = (data) => {\n self.unlock();\n if (!data || typeof data !== 'object')\n return callback();\n var value = (0, utils_ts_1.hash_key)(data[self.settings.valueField]);\n if (typeof value !== 'string') {\n return callback();\n }\n self.setTextboxValue();\n self.addOption(data, true);\n self.setCaret(caret);\n self.addItem(value);\n callback(data);\n created = true;\n };\n if (typeof self.settings.create === 'function') {\n output = self.settings.create.call(this, input, create);\n }\n else {\n output = {\n [self.settings.labelField]: input,\n [self.settings.valueField]: input,\n };\n }\n if (!created) {\n create(output);\n }\n return true;\n }\n /**\n * Re-renders the selected item lists.\n */\n refreshItems() {\n var self = this;\n self.lastQuery = null;\n if (self.isSetup) {\n self.addItems(self.items);\n }\n self.updateOriginalInput();\n self.refreshState();\n }\n /**\n * Updates all state-dependent attributes\n * and CSS classes.\n */\n refreshState() {\n const self = this;\n self.refreshValidityState();\n const isFull = self.isFull();\n const isLocked = self.isLocked;\n self.wrapper.classList.toggle('rtl', self.rtl);\n const wrap_classList = self.wrapper.classList;\n wrap_classList.toggle('focus', self.isFocused);\n wrap_classList.toggle('disabled', self.isDisabled);\n wrap_classList.toggle('readonly', self.isReadOnly);\n wrap_classList.toggle('required', self.isRequired);\n wrap_classList.toggle('invalid', !self.isValid);\n wrap_classList.toggle('locked', isLocked);\n wrap_classList.toggle('full', isFull);\n wrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden);\n wrap_classList.toggle('dropdown-active', self.isOpen);\n wrap_classList.toggle('has-options', (0, vanilla_ts_1.isEmptyObject)(self.options));\n wrap_classList.toggle('has-items', self.items.length > 0);\n }\n /**\n * Update the `required` attribute of both input and control input.\n *\n * The `required` property needs to be activated on the control input\n * for the error to be displayed at the right place. `required` also\n * needs to be temporarily deactivated on the input since the input is\n * hidden and can't show errors.\n */\n refreshValidityState() {\n var self = this;\n if (!self.input.validity) {\n return;\n }\n self.isValid = self.input.validity.valid;\n self.isInvalid = !self.isValid;\n }\n /**\n * Determines whether or not more items can be added\n * to the control without exceeding the user-defined maximum.\n *\n * @returns {boolean}\n */\n isFull() {\n return this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n }\n /**\n * Refreshes the original <select> or <input>\n * element to reflect the current state.\n *\n */\n updateOriginalInput(opts = {}) {\n const self = this;\n var option, label;\n const empty_option = self.input.querySelector('option[value=\"\"]');\n if (self.is_select_tag) {\n const selected = [];\n const has_selected = self.input.querySelectorAll('option:checked').length;\n function AddSelected(option_el, value, label) {\n if (!option_el) {\n option_el = (0, vanilla_ts_1.getDom)('<option value=\"' + (0, utils_ts_1.escape_html)(value) + '\">' + (0, utils_ts_1.escape_html)(label) + '</option>');\n }\n // don't move empty option from top of list\n // fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n if (option_el != empty_option) {\n self.input.append(option_el);\n }\n selected.push(option_el);\n // marking empty option as selected can break validation\n // fixes https://github.com/orchidjs/tom-select/issues/303\n if (option_el != empty_option || has_selected > 0) {\n option_el.selected = true;\n }\n return option_el;\n }\n // unselect all selected options\n self.input.querySelectorAll('option:checked').forEach((option_el) => {\n option_el.selected = false;\n });\n // nothing selected?\n if (self.items.length == 0 && self.settings.mode == 'single') {\n AddSelected(empty_option, \"\", \"\");\n // order selected <option> tags for values in self.items\n }\n else {\n self.items.forEach((value) => {\n option = self.options[value];\n label = option[self.settings.labelField] || '';\n if (selected.includes(option.$option)) {\n const reuse_opt = self.input.querySelector(`option[value=\"${(0, utils_ts_1.addSlashes)(value)}\"]:not(:checked)`);\n AddSelected(reuse_opt, value, label);\n }\n else {\n option.$option = AddSelected(option.$option, value, label);\n }\n });\n }\n }\n else {\n self.input.value = self.getValue();\n }\n if (self.isSetup) {\n if (!opts.silent) {\n self.trigger('change', self.getValue());\n }\n }\n }\n /**\n * Shows the autocomplete dropdown containing\n * the available options.\n */\n open() {\n var self = this;\n if (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull()))\n return;\n self.isOpen = true;\n (0, vanilla_ts_1.setAttr)(self.focus_node, { 'aria-expanded': 'true' });\n self.refreshState();\n (0, vanilla_ts_1.applyCSS)(self.dropdown, { visibility: 'hidden', display: 'block' });\n self.positionDropdown();\n (0, vanilla_ts_1.applyCSS)(self.dropdown, { visibility: 'visible', display: 'block' });\n self.focus();\n self.trigger('dropdown_open', self.dropdown);\n }\n /**\n * Closes the autocomplete dropdown menu.\n */\n close(setTextboxValue = true) {\n var self = this;\n var trigger = self.isOpen;\n if (setTextboxValue) {\n // before blur() to prevent form onchange event\n self.setTextboxValue();\n if (self.settings.mode === 'single' && self.items.length) {\n self.inputState();\n }\n }\n self.isOpen = false;\n (0, vanilla_ts_1.setAttr)(self.focus_node, { 'aria-expanded': 'false' });\n (0, vanilla_ts_1.applyCSS)(self.dropdown, { display: 'none' });\n if (self.settings.hideSelected) {\n self.clearActiveOption();\n }\n self.refreshState();\n if (trigger)\n self.trigger('dropdown_close', self.dropdown);\n }\n /**\n * Calculates and applies the appropriate\n * position of the dropdown if dropdownParent = 'body'.\n * Otherwise, position is determined by css\n */\n positionDropdown() {\n if (this.settings.dropdownParent !== 'body') {\n return;\n }\n var context = this.control;\n var rect = context.getBoundingClientRect();\n var top = context.offsetHeight + rect.top + window.scrollY;\n var left = rect.left + window.scrollX;\n (0, vanilla_ts_1.applyCSS)(this.dropdown, {\n width: rect.width + 'px',\n top: top + 'px',\n left: left + 'px'\n });\n }\n /**\n * Resets / clears all selected items\n * from the control.\n *\n */\n clear(silent) {\n var self = this;\n if (!self.items.length)\n return;\n var items = self.controlChildren();\n (0, utils_ts_1.iterate)(items, (item) => {\n self.removeItem(item, true);\n });\n self.inputState();\n if (!silent)\n self.updateOriginalInput();\n self.trigger('clear');\n }\n /**\n * A helper method for inserting an element\n * at the current caret position.\n *\n */\n insertAtCaret(el) {\n const self = this;\n const caret = self.caretPos;\n const target = self.control;\n target.insertBefore(el, target.children[caret] || null);\n self.setCaret(caret + 1);\n }\n /**\n * Removes the current selected item(s).\n *\n */\n deleteSelection(e) {\n var direction, selection, caret, tail;\n var self = this;\n direction = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n selection = (0, utils_ts_1.getSelection)(self.control_input);\n // determine items that will be removed\n const rm_items = [];\n if (self.activeItems.length) {\n tail = (0, vanilla_ts_1.getTail)(self.activeItems, direction);\n caret = (0, vanilla_ts_1.nodeIndex)(tail);\n if (direction > 0) {\n caret++;\n }\n (0, utils_ts_1.iterate)(self.activeItems, (item) => rm_items.push(item));\n }\n else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n const items = self.controlChildren();\n let rm_item;\n if (direction < 0 && selection.start === 0 && selection.length === 0) {\n rm_item = items[self.caretPos - 1];\n }\n else if (direction > 0 && selection.start === self.inputValue().length) {\n rm_item = items[self.caretPos];\n }\n if (rm_item !== undefined) {\n rm_items.push(rm_item);\n }\n }\n if (!self.shouldDelete(rm_items, e)) {\n return false;\n }\n (0, utils_ts_1.preventDefault)(e, true);\n // perform removal\n if (typeof caret !== 'undefined') {\n self.setCaret(caret);\n }\n while (rm_items.length) {\n self.removeItem(rm_items.pop());\n }\n self.inputState();\n self.positionDropdown();\n self.refreshOptions(false);\n return true;\n }\n /**\n * Return true if the items should be deleted\n */\n shouldDelete(items, evt) {\n const values = items.map(item => item.dataset.value);\n // allow the callback to abort\n if (!values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values, evt) === false)) {\n return false;\n }\n return true;\n }\n /**\n * Selects the previous / next item (depending on the `direction` argument).\n *\n * > 0 - right\n * < 0 - left\n *\n */\n advanceSelection(direction, e) {\n var last_active, adjacent, self = this;\n if (self.rtl)\n direction *= -1;\n if (self.inputValue().length)\n return;\n // add or remove to active items\n if ((0, utils_ts_1.isKeyDown)(constants.KEY_SHORTCUT, e) || (0, utils_ts_1.isKeyDown)('shiftKey', e)) {\n last_active = self.getLastActive(direction);\n if (last_active) {\n if (!last_active.classList.contains('active')) {\n adjacent = last_active;\n }\n else {\n adjacent = self.getAdjacent(last_active, direction, 'item');\n }\n // if no active item, get items adjacent to the control input\n }\n else if (direction > 0) {\n adjacent = self.control_input.nextElementSibling;\n }\n else {\n adjacent = self.control_input.previousElementSibling;\n }\n if (adjacent) {\n if (adjacent.classList.contains('active')) {\n self.removeActiveItem(last_active);\n }\n self.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n }\n // move caret to the left or right\n }\n else {\n self.moveCaret(direction);\n }\n }\n moveCaret(direction) { }\n /**\n * Get the last active item\n *\n */\n getLastActive(direction) {\n let last_active = this.control.querySelector('.last-active');\n if (last_active) {\n return last_active;\n }\n var result = this.control.querySelectorAll('.active');\n if (result) {\n return (0, vanilla_ts_1.getTail)(result, direction);\n }\n }\n /**\n * Moves the caret to the specified index.\n *\n * The input must be moved by leaving it in place and moving the\n * siblings, due to the fact that focus cannot be restored once lost\n * on mobile webkit devices\n *\n */\n setCaret(new_pos) {\n this.caretPos = this.items.length;\n }\n /**\n * Return list of item dom elements\n *\n */\n controlChildren() {\n return Array.from(this.control.querySelectorAll('[data-ts-item]'));\n }\n /**\n * Disables user input on the control. Used while\n * items are being asynchronously created.\n */\n lock() {\n this.setLocked(true);\n }\n /**\n * Re-enables user input on the control.\n */\n unlock() {\n this.setLocked(false);\n }\n /**\n * Disable or enable user input on the control\n */\n setLocked(lock = this.isReadOnly || this.isDisabled) {\n this.isLocked = lock;\n this.refreshState();\n }\n /**\n * Disables user input on the control completely.\n * While disabled, it cannot receive focus.\n */\n disable() {\n this.setDisabled(true);\n this.close();\n }\n /**\n * Enables the control so that it can respond\n * to focus and user input.\n */\n enable() {\n this.setDisabled(false);\n }\n setDisabled(disabled) {\n this.focus_node.tabIndex = disabled ? -1 : this.tabIndex;\n this.isDisabled = disabled;\n this.input.disabled = disabled;\n this.control_input.disabled = disabled;\n this.setLocked();\n }\n setReadOnly(isReadOnly) {\n this.isReadOnly = isReadOnly;\n this.input.readOnly = isReadOnly;\n this.control_input.readOnly = isReadOnly;\n this.setLocked();\n }\n /**\n * Completely destroys the control and\n * unbinds all event listeners so that it can\n * be garbage collected.\n */\n destroy() {\n var self = this;\n var revertSettings = self.revertSettings;\n self.trigger('destroy');\n self.off();\n self.wrapper.remove();\n self.dropdown.remove();\n self.input.innerHTML = revertSettings.innerHTML;\n self.input.tabIndex = revertSettings.tabIndex;\n (0, vanilla_ts_1.removeClasses)(self.input, 'tomselected', 'ts-hidden-accessible');\n self._destroy();\n delete self.input.tomselect;\n }\n /**\n * A helper method for rendering \"item\" and\n * \"option\" templates, given the data.\n *\n */\n render(templateName, data) {\n var id, html;\n const self = this;\n if (typeof this.settings.render[templateName] !== 'function') {\n return null;\n }\n // render markup\n html = self.settings.render[templateName].call(this, data, utils_ts_1.escape_html);\n if (!html) {\n return null;\n }\n html = (0, vanilla_ts_1.getDom)(html);\n // add mandatory attributes\n if (templateName === 'option' || templateName === 'option_create') {\n if (data[self.settings.disabledField]) {\n (0, vanilla_ts_1.setAttr)(html, { 'aria-disabled': 'true' });\n }\n else {\n (0, vanilla_ts_1.setAttr)(html, { 'data-selectable': '' });\n }\n }\n else if (templateName === 'optgroup') {\n id = data.group[self.settings.optgroupValueField];\n (0, vanilla_ts_1.setAttr)(html, { 'data-group': id });\n if (data.group[self.settings.disabledField]) {\n (0, vanilla_ts_1.setAttr)(html, { 'data-disabled': '' });\n }\n }\n if (templateName === 'option' || templateName === 'item') {\n const value = (0, utils_ts_1.get_hash)(data[self.settings.valueField]);\n (0, vanilla_ts_1.setAttr)(html, { 'data-value': value });\n // make sure we have some classes if a template is overwritten\n if (templateName === 'item') {\n (0, vanilla_ts_1.addClasses)(html, self.settings.itemClass);\n (0, vanilla_ts_1.setAttr)(html, { 'data-ts-item': '' });\n }\n else {\n (0, vanilla_ts_1.addClasses)(html, self.settings.optionClass);\n (0, vanilla_ts_1.setAttr)(html, {\n role: 'option',\n id: data.$id\n });\n // update cache\n data.$div = html;\n self.options[value] = data;\n }\n }\n return html;\n }\n /**\n * Type guarded rendering\n *\n */\n _render(templateName, data) {\n const html = this.render(templateName, data);\n if (html == null) {\n throw 'HTMLElement expected';\n }\n return html;\n }\n /**\n * Clears the render cache for a template. If\n * no template is given, clears all render\n * caches.\n *\n */\n clearCache() {\n (0, utils_ts_1.iterate)(this.options, (option) => {\n if (option.$div) {\n option.$div.remove();\n delete option.$div;\n }\n });\n }\n /**\n * Removes a value from item and option caches\n *\n */\n uncacheValue(value) {\n const option_el = this.getOption(value);\n if (option_el)\n option_el.remove();\n }\n /**\n * Determines whether or not to display the\n * create item prompt, given a user input.\n *\n */\n canCreate(input) {\n return this.settings.create && (input.length > 0) && this.settings.createFilter.call(this, input);\n }\n /**\n * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n *\n * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n *\n * });\n */\n hook(when, method, new_fn) {\n var self = this;\n var orig_method = self[method];\n self[method] = function () {\n var result, result_new;\n if (when === 'after') {\n result = orig_method.apply(self, arguments);\n }\n result_new = new_fn.apply(self, arguments);\n if (when === 'instead') {\n return result_new;\n }\n if (when === 'before') {\n result = orig_method.apply(self, arguments);\n }\n return result;\n };\n }\n}\nexports.default = TomSelect;\n;\n//# sourceMappingURL=tom-select.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.allSubstrings = void 0;\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n */\nconst allSubstrings = (input) => {\n if (input.length === 1)\n return [[input]];\n let result = [];\n const start = input.substring(1);\n const suba = (0, exports.allSubstrings)(start);\n suba.forEach(function (subresult) {\n let tmp = subresult.slice(0);\n tmp[0] = input.charAt(0) + tmp[0];\n result.push(tmp);\n tmp = subresult.slice(0);\n tmp.unshift(input.charAt(0));\n result.push(tmp);\n });\n return result;\n};\nexports.allSubstrings = allSubstrings;\n//# sourceMappingURL=strings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tom_select_ts_1 = require(\"./tom-select.js\");\nconst plugin_ts_1 = require(\"./plugins/caret_position/plugin.js\");\nconst plugin_ts_2 = require(\"./plugins/dropdown_input/plugin.js\");\nconst plugin_ts_3 = require(\"./plugins/no_backspace_delete/plugin.js\");\nconst plugin_ts_4 = require(\"./plugins/remove_button/plugin.js\");\nconst plugin_ts_5 = require(\"./plugins/restore_on_backspace/plugin.js\");\ntom_select_ts_1.default.define('caret_position', plugin_ts_1.default);\ntom_select_ts_1.default.define('dropdown_input', plugin_ts_2.default);\ntom_select_ts_1.default.define('no_backspace_delete', plugin_ts_3.default);\ntom_select_ts_1.default.define('remove_button', plugin_ts_4.default);\ntom_select_ts_1.default.define('restore_on_backspace', plugin_ts_5.default);\nexports.default = tom_select_ts_1.default;\n//# sourceMappingURL=tom-select.popular.js.map","\"use strict\";\n/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst constants = require(\"../../constants.js\");\nconst vanilla_ts_1 = require(\"../../vanilla.js\");\nconst utils_ts_1 = require(\"../../utils.js\");\nfunction default_1() {\n const self = this;\n self.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n self.hook('before', 'setup', () => {\n self.focus_node = self.control;\n (0, vanilla_ts_1.addClasses)(self.control_input, 'dropdown-input');\n const div = (0, vanilla_ts_1.getDom)('<div class=\"dropdown-input-wrap\">');\n div.append(self.control_input);\n self.dropdown.insertBefore(div, self.dropdown.firstChild);\n // set a placeholder in the select control\n const placeholder = (0, vanilla_ts_1.getDom)('<input class=\"items-placeholder\" tabindex=\"-1\" />');\n placeholder.placeholder = self.settings.placeholder || '';\n self.control.append(placeholder);\n });\n self.on('initialize', () => {\n // set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n self.control_input.addEventListener('keydown', (evt) => {\n //addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n switch (evt.keyCode) {\n case constants.KEY_ESC:\n if (self.isOpen) {\n (0, utils_ts_1.preventDefault)(evt, true);\n self.close();\n }\n self.clearActiveItems();\n return;\n case constants.KEY_TAB:\n self.focus_node.tabIndex = -1;\n break;\n }\n return self.onKeyDown.call(self, evt);\n });\n self.on('blur', () => {\n self.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n });\n // give the control_input focus when the dropdown is open\n self.on('dropdown_open', () => {\n self.control_input.focus();\n });\n // prevent onBlur from closing when focus is on the control_input\n const orig_onBlur = self.onBlur;\n self.hook('instead', 'onBlur', (evt) => {\n if (evt && evt.relatedTarget == self.control_input)\n return;\n return orig_onBlur.call(self);\n });\n (0, utils_ts_1.addEvent)(self.control_input, 'blur', () => self.onBlur());\n // return focus to control to allow further keyboard input\n self.hook('before', 'close', () => {\n if (!self.isOpen)\n return;\n self.focus_node.focus({ preventScroll: true });\n });\n });\n}\n;\n//# sourceMappingURL=plugin.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = {\n options: [],\n optgroups: [],\n plugins: [],\n delimiter: ',',\n splitOn: null, // regexp or string for splitting up values from a paste command\n persist: true,\n diacritics: true,\n create: null,\n createOnBlur: false,\n createFilter: null,\n highlight: true,\n openOnFocus: true,\n shouldOpen: null,\n maxOptions: 50,\n maxItems: null,\n hideSelected: null,\n duplicates: false,\n addPrecedence: false,\n selectOnTab: false,\n preload: null,\n allowEmptyOption: false,\n //closeAfterSelect: false,\n refreshThrottle: 300,\n loadThrottle: 300,\n loadingClass: 'loading',\n dataAttr: null, //'data-data',\n optgroupField: 'optgroup',\n valueField: 'value',\n labelField: 'text',\n disabledField: 'disabled',\n optgroupLabelField: 'label',\n optgroupValueField: 'value',\n lockOptgroupOrder: false,\n sortField: '$order',\n searchField: ['text'],\n searchConjunction: 'and',\n mode: null,\n wrapperClass: 'ts-wrapper',\n controlClass: 'ts-control',\n dropdownClass: 'ts-dropdown',\n dropdownContentClass: 'ts-dropdown-content',\n itemClass: 'item',\n optionClass: 'option',\n dropdownParent: null,\n controlInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n copyClassesToDropdown: false,\n placeholder: null,\n hidePlaceholder: null,\n shouldLoad: function (query) {\n return query.length > 0;\n },\n /*\n load : null, // function(query, callback) { ... }\n score : null, // function(search) { ... }\n onInitialize : null, // function() { ... }\n onChange : null, // function(value) { ... }\n onItemAdd : null, // function(value, $item) { ... }\n onItemRemove : null, // function(value) { ... }\n onClear : null, // function() { ... }\n onOptionAdd : null, // function(value, data) { ... }\n onOptionRemove : null, // function(value) { ... }\n onOptionClear : null, // function() { ... }\n onOptionGroupAdd : null, // function(id, data) { ... }\n onOptionGroupRemove : null, // function(id) { ... }\n onOptionGroupClear : null, // function() { ... }\n onDropdownOpen : null, // function(dropdown) { ... }\n onDropdownClose : null, // function(dropdown) { ... }\n onType : null, // function(str) { ... }\n onDelete : null, // function(values) { ... }\n */\n render: {\n /*\n item: null,\n optgroup: null,\n optgroup_header: null,\n option: null,\n option_create: null\n */\n }\n};\n//# sourceMappingURL=defaults.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nfunction default_1(userOptions) {\n const self = this;\n const options = Object.assign({\n text: (option) => {\n return option[self.settings.labelField];\n }\n }, userOptions);\n self.on('item_remove', function (value) {\n if (!self.isFocused) {\n return;\n }\n if (self.control_input.value.trim() === '') {\n var option = self.options[value];\n if (option) {\n self.setTextboxValue(options.text.call(self, option));\n }\n }\n });\n}\n;\n//# sourceMappingURL=plugin.js.map","\"use strict\";\n/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = MicroPlugin;\nfunction MicroPlugin(Interface) {\n Interface.plugins = {};\n return class extends Interface {\n constructor() {\n super(...arguments);\n this.plugins = {\n names: [],\n settings: {},\n requested: {},\n loaded: {}\n };\n }\n /**\n * Registers a plugin.\n *\n * @param {function} fn\n */\n static define(name, fn) {\n Interface.plugins[name] = {\n 'name': name,\n 'fn': fn\n };\n }\n /**\n * Initializes the listed plugins (with options).\n * Acceptable formats:\n *\n * List (without options):\n * ['a', 'b', 'c']\n *\n * List (with options):\n * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n *\n * Hash (with options):\n * {'a': { ... }, 'b': { ... }, 'c': { ... }}\n *\n * @param {array|object} plugins\n */\n initializePlugins(plugins) {\n var key, name;\n const self = this;\n const queue = [];\n if (Array.isArray(plugins)) {\n plugins.forEach((plugin) => {\n if (typeof plugin === 'string') {\n queue.push(plugin);\n }\n else {\n self.plugins.settings[plugin.name] = plugin.options;\n queue.push(plugin.name);\n }\n });\n }\n else if (plugins) {\n for (key in plugins) {\n if (plugins.hasOwnProperty(key)) {\n self.plugins.settings[key] = plugins[key];\n queue.push(key);\n }\n }\n }\n while (name = queue.shift()) {\n self.require(name);\n }\n }\n loadPlugin(name) {\n var self = this;\n var plugins = self.plugins;\n var plugin = Interface.plugins[name];\n if (!Interface.plugins.hasOwnProperty(name)) {\n throw new Error('Unable to find \"' + name + '\" plugin');\n }\n plugins.requested[name] = true;\n plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n plugins.names.push(name);\n }\n /**\n * Initializes a plugin.\n *\n */\n require(name) {\n var self = this;\n var plugins = self.plugins;\n if (!self.plugins.loaded.hasOwnProperty(name)) {\n if (plugins.requested[name]) {\n throw new Error('Plugin has circular dependency (\"' + name + '\")');\n }\n self.loadPlugin(name);\n }\n return plugins.loaded[name];\n }\n };\n}\n//# sourceMappingURL=microplugin.js.map","\"use strict\";\n/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nfunction default_1() {\n var self = this;\n var orig_deleteSelection = self.deleteSelection;\n this.hook('instead', 'deleteSelection', (evt) => {\n if (self.activeItems.length) {\n return orig_deleteSelection.call(self, evt);\n }\n return false;\n });\n}\n;\n//# sourceMappingURL=plugin.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = getSettings;\nconst defaults_ts_1 = require(\"./defaults.js\");\nconst utils_ts_1 = require(\"./utils.js\");\nfunction getSettings(input, settings_user) {\n var settings = Object.assign({}, defaults_ts_1.default, settings_user);\n var attr_data = settings.dataAttr;\n var field_label = settings.labelField;\n var field_value = settings.valueField;\n var field_disabled = settings.disabledField;\n var field_optgroup = settings.optgroupField;\n var field_optgroup_label = settings.optgroupLabelField;\n var field_optgroup_value = settings.optgroupValueField;\n var tag_name = input.tagName.toLowerCase();\n var placeholder = input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n if (!placeholder && !settings.allowEmptyOption) {\n let option = input.querySelector('option[value=\"\"]');\n if (option) {\n placeholder = option.textContent;\n }\n }\n var settings_element = {\n placeholder: placeholder,\n options: [],\n optgroups: [],\n items: [],\n maxItems: null,\n };\n /**\n * Initialize from a <select> element.\n *\n */\n var init_select = () => {\n var tagName;\n var options = settings_element.options;\n var optionsMap = {};\n var group_count = 1;\n let $order = 0;\n var readData = (el) => {\n var data = Object.assign({}, el.dataset); // get plain object from DOMStringMap\n var json = attr_data && data[attr_data];\n if (typeof json === 'string' && json.length) {\n data = Object.assign(data, JSON.parse(json));\n }\n return data;\n };\n var addOption = (option, group) => {\n var value = (0, utils_ts_1.hash_key)(option.value);\n if (value == null)\n return;\n if (!value && !settings.allowEmptyOption)\n return;\n // if the option already exists, it's probably been\n // duplicated in another optgroup. in this case, push\n // the current group to the \"optgroup\" property on the\n // existing option so that it's rendered in both places.\n if (optionsMap.hasOwnProperty(value)) {\n if (group) {\n var arr = optionsMap[value][field_optgroup];\n if (!arr) {\n optionsMap[value][field_optgroup] = group;\n }\n else if (!Array.isArray(arr)) {\n optionsMap[value][field_optgroup] = [arr, group];\n }\n else {\n arr.push(group);\n }\n }\n }\n else {\n var option_data = readData(option);\n option_data[field_label] = option_data[field_label] || option.textContent;\n option_data[field_value] = option_data[field_value] || value;\n option_data[field_disabled] = option_data[field_disabled] || option.disabled;\n option_data[field_optgroup] = option_data[field_optgroup] || group;\n option_data.$option = option;\n option_data.$order = option_data.$order || ++$order;\n optionsMap[value] = option_data;\n options.push(option_data);\n }\n if (option.selected) {\n settings_element.items.push(value);\n }\n };\n var addGroup = (optgroup) => {\n var id, optgroup_data;\n optgroup_data = readData(optgroup);\n optgroup_data[field_optgroup_label] = optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n optgroup_data[field_optgroup_value] = optgroup_data[field_optgroup_value] || group_count++;\n optgroup_data[field_disabled] = optgroup_data[field_disabled] || optgroup.disabled;\n optgroup_data.$order = optgroup_data.$order || ++$order;\n settings_element.optgroups.push(optgroup_data);\n id = optgroup_data[field_optgroup_value];\n (0, utils_ts_1.iterate)(optgroup.children, (option) => {\n addOption(option, id);\n });\n };\n settings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n (0, utils_ts_1.iterate)(input.children, (child) => {\n tagName = child.tagName.toLowerCase();\n if (tagName === 'optgroup') {\n addGroup(child);\n }\n else if (tagName === 'option') {\n addOption(child);\n }\n });\n };\n /**\n * Initialize from a <input type=\"text\"> element.\n *\n */\n var init_textbox = () => {\n const data_raw = input.getAttribute(attr_data);\n if (!data_raw) {\n var value = input.value.trim() || '';\n if (!settings.allowEmptyOption && !value.length)\n return;\n const values = value.split(settings.delimiter);\n (0, utils_ts_1.iterate)(values, (value) => {\n const option = {};\n option[field_label] = value;\n option[field_value] = value;\n settings_element.options.push(option);\n });\n settings_element.items = values;\n }\n else {\n settings_element.options = JSON.parse(data_raw);\n (0, utils_ts_1.iterate)(settings_element.options, (opt) => {\n settings_element.items.push(opt[field_value]);\n });\n }\n };\n if (tag_name === 'select') {\n init_select();\n }\n else {\n init_textbox();\n }\n return Object.assign({}, defaults_ts_1.default, settings_element, settings_user);\n}\n;\n//# sourceMappingURL=getSettings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cmp = exports.iterate = exports.propToArray = exports.scoreValue = exports.getAttrNesting = exports.getAttr = void 0;\nconst unicode_variants_1 = require(\"@orchidjs/unicode-variants\");\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nconst getAttr = (obj, name) => {\n if (!obj)\n return;\n return obj[name];\n};\nexports.getAttr = getAttr;\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nconst getAttrNesting = (obj, name) => {\n if (!obj)\n return;\n var part, names = name.split(\".\");\n while ((part = names.shift()) && (obj = obj[part]))\n ;\n return obj;\n};\nexports.getAttrNesting = getAttrNesting;\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nconst scoreValue = (value, token, weight) => {\n var score, pos;\n if (!value)\n return 0;\n value = value + '';\n if (token.regex == null)\n return 0;\n pos = value.search(token.regex);\n if (pos === -1)\n return 0;\n score = token.string.length / value.length;\n if (pos === 0)\n score += 0.5;\n return score * weight;\n};\nexports.scoreValue = scoreValue;\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nconst propToArray = (obj, key) => {\n var value = obj[key];\n if (typeof value == 'function')\n return value;\n if (value && !Array.isArray(value)) {\n obj[key] = [value];\n }\n};\nexports.propToArray = propToArray;\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nconst iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n }\n else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n};\nexports.iterate = iterate;\nconst cmp = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a > b ? 1 : (a < b ? -1 : 0);\n }\n a = (0, unicode_variants_1.asciifold)(a + '').toLowerCase();\n b = (0, unicode_variants_1.asciifold)(b + '').toLowerCase();\n if (a > b)\n return 1;\n if (b > a)\n return -1;\n return 0;\n};\nexports.cmp = cmp;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nconst vanilla_ts_1 = require(\"../../vanilla.js\");\nconst utils_ts_1 = require(\"../../utils.js\");\nfunction default_1(userOptions) {\n const options = Object.assign({\n label: '×',\n title: 'Remove',\n className: 'remove',\n append: true\n }, userOptions);\n //options.className = 'remove-single';\n var self = this;\n // override the render method to add remove button to each item\n if (!options.append) {\n return;\n }\n var html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + (0, utils_ts_1.escape_html)(options.title) + '\">' + options.label + '</a>';\n self.hook('after', 'setupTemplates', () => {\n var orig_render_item = self.settings.render.item;\n self.settings.render.item = (data, escape) => {\n var item = (0, vanilla_ts_1.getDom)(orig_render_item.call(self, data, escape));\n var close_button = (0, vanilla_ts_1.getDom)(html);\n item.appendChild(close_button);\n (0, utils_ts_1.addEvent)(close_button, 'mousedown', (evt) => {\n (0, utils_ts_1.preventDefault)(evt, true);\n });\n (0, utils_ts_1.addEvent)(close_button, 'click', (evt) => {\n if (self.isLocked)\n return;\n // propagating will trigger the dropdown to show for single mode\n (0, utils_ts_1.preventDefault)(evt, true);\n if (self.isLocked)\n return;\n if (!self.shouldDelete([item], evt))\n return;\n self.removeItem(item);\n self.refreshOptions(false);\n self.inputState();\n });\n return item;\n };\n });\n}\n;\n//# sourceMappingURL=plugin.js.map","var map = {\n\t\"./decidim/proposals/participatory_texts/participatory_text.md\": 15348,\n\t\"./decidim/proposals/participatory_texts/participatory_text.odt\": 74162\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93505;","$(() => {\n $(\"#vote_button\").mouseover(function() {\n $(this).text($(this).data(\"replace\"));\n });\n $(\"#vote_button\").mouseout(function() {\n $(this).text($(this).data(\"original\"));\n });\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.p = \"/decidim-packs/\";","export default function getCoordinateInputName(coordinate, $input, options) {\n const key = `${coordinate}Name`;\n if (options[key]) {\n return options[key];\n }\n const inputName = $input.attr(\"name\");\n const subNameMatch = /\\[[^\\]]+\\]$/;\n if (inputName.match(subNameMatch)) {\n return inputName.replace(subNameMatch, `[${coordinate}]`);\n }\n return coordinate;\n}\n","import getCoordinateInputName from \"src/decidim/geocoding/coordinate_input\";\nexport default function attachGeocoding($input, options, callback) {\n const attachOptions = $.extend({}, options);\n const inputIdParts = $input.attr(\"id\").split(\"_\");\n inputIdParts.pop();\n const idPrefix = `${inputIdParts.join(\"_\")}`;\n let latitudeName = \"latitude\";\n let longitudeName = \"longitude\";\n if ($input.length > 0) {\n latitudeName = getCoordinateInputName(\"latitude\", $input, attachOptions);\n longitudeName = getCoordinateInputName(\"longitude\", $input, attachOptions);\n }\n const config = $.extend({\n latitudeId: `${idPrefix}_latitude`,\n longitudeId: `${idPrefix}_longitude`,\n latitudeName,\n longitudeName\n }, options);\n let geocoded = false;\n const createCoordinateFields = () => {\n let $latitude = $(`#${config.latitudeId}`);\n if ($latitude.length < 1) {\n $latitude = $(`<input type=\"hidden\" name=\"${config.latitudeName}\" id=\"${config.latitudeId}\" />`);\n $input.after($latitude);\n }\n let $longitude = $(`#${config.longitudeId}`);\n if ($longitude.length < 1) {\n $longitude = $(`<input type=\"hidden\" name=\"${config.longitudeName}\" id=\"${config.longitudeId}\" />`);\n $input.after($longitude);\n }\n };\n const clearCoordinateFields = () => {\n if (geocoded) {\n return;\n }\n $(`#${config.latitudeId}`).val(\"\").removeAttr(\"value\");\n $(`#${config.longitudeId}`).val(\"\").removeAttr(\"value\");\n };\n const setCoordinates = (coordinates2) => {\n createCoordinateFields();\n $(`#${config.latitudeId}`).val(coordinates2[0]).attr(\"value\", coordinates2[0]);\n $(`#${config.longitudeId}`).val(coordinates2[1]).attr(\"value\", coordinates2[1]);\n };\n $input.on(\"change.decidim\", () => {\n clearCoordinateFields();\n });\n $input.on(\"geocoder-suggest-coordinates.decidim\", (_ev, coordinates2) => {\n setCoordinates(coordinates2);\n geocoded = true;\n if (typeof callback === \"function\") {\n callback(coordinates2);\n return;\n }\n });\n const coordinates = `${$input.data(\"coordinates\")}`.split(\",\").map(parseFloat);\n if (Array.isArray(coordinates) && coordinates.length === 2) {\n setCoordinates(coordinates);\n }\n}\n","import attachGeocoding from \"src/decidim/geocoding/attach_input\";\nimport getCoordinateInputName from \"src/decidim/geocoding/coordinate_input\";\n$(() => {\n const $map = $(\"#address_map\");\n const $addressInputField = $(\"[data-decidim-geocoding]\");\n if ($map.length) {\n if (!$addressInputField.data(\"coordinates\")) {\n $map.hide();\n }\n $addressInputField.on(\"geocoder-suggest-coordinates.decidim\", () => $map.show());\n const markerAddedAnnouncement = $addressInputField.data(\"screen-reader-announcement\");\n let latFieldName = \"latitude\";\n let longFieldName = \"longitude\";\n if ($addressInputField.length > 0) {\n latFieldName = getCoordinateInputName(\"latitude\", $addressInputField, {});\n longFieldName = getCoordinateInputName(\"longitude\", $addressInputField, {});\n }\n $(\"[data-decidim-map]\").on(\"ready.decidim\", (event) => {\n const ctrl = $(event.target).data(\"map-controller\");\n ctrl.setEventHandler(\"coordinates\", (ev) => {\n $(`input[name='${latFieldName}']`).val(ev.lat);\n $(`input[name='${longFieldName}']`).val(ev.lng);\n });\n attachGeocoding($addressInputField, null, (coordinates) => {\n ctrl.removeMarker();\n ctrl.addMarker({\n latitude: coordinates[0],\n longitude: coordinates[1],\n address: $addressInputField.val()\n });\n window.Decidim.announceForScreenReader(markerAddedAnnouncement);\n });\n });\n }\n});\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nimport TomSelect from \"tom-select/dist/cjs/tom-select.popular\";\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const tagContainers = document.querySelectorAll(\"#proposals_list\");\n tagContainers.forEach((container) => {\n const { tmName, tmItems, tmNoResults } = container.dataset;\n const config = {\n plugins: [\"remove_button\", \"dropdown_input\"],\n allowEmptyOption: true,\n items: JSON.parse(tmItems),\n render: __spreadValues({\n item: (data, escape) => `<div>${escape(data.text)}<input type=\"hidden\" name=\"${tmName}[]\" value=\"${data.value}\" /></div>`\n }, tmNoResults && { no_results: () => `<div class=\"no-results\">${tmNoResults}</div>` })\n };\n return new TomSelect(container, config);\n });\n});\n","import \"src/decidim/proposals/utils\";\nimport \"src/decidim/proposals/add_proposal\";\nimport \"src/decidim/proposals/choose_proposals\";\nrequire.context(\"../images\", true);\nrequire.context(\"../documents\", true);\nimport \"stylesheets/decidim/proposals/proposals.scss\";\n"],"names":["__createBinding","o","m","k","k2","desc","__exportStar","exports","p","utils_ts_1","unicode_variants_1","Sifter","items","settings","query","respect_word_boundaries","weights","tokens","words","field_regex","word","field_match","field","regex","options","search","token_count","fields","field_count","getAttrFn","scoreObject","token","data","sum","value","weight","score","implicit_score","sort_flds","self","sort","get_field","name","result","fld","a","b","sort_fld","optsUser","fn_score","item","id","_","fn_sort","arrayToPattern","chars","sequencePattern","array","pattern","prev_char_count","prev_pattern","char","i","setToPattern","hasDuplicates","escape_regex","str","maxValueLength","longest","unicodeLength","hash_key","get_hash","escape_html","timeout","fn","loadDebounce","delay","callback","debounce_events","types","type","trigger","event_args","getSelection","input","preventDefault","evt","stop","addEvent","target","isKeyDown","key_name","count","getId","el","existing_id","addSlashes","append","parent","node","iterate","object","key","vanilla_ts_1","highlight","element","highlightText","match","spannode","middlebit","middleclone","highlightChildren","highlightRecursive","removeHighlight","elements","forEvents","events","event","MicroEvent","fct","event_array","n","args","map","webpackContext","req","webpackContextResolve","__webpack_require__","e","module","default_1","new_pos","child","j","direction","last_active","idx","getDom","tpl","isHtmlString","arg","escapeQuery","triggerEvent","dom_el","event_name","applyCSS","css","addClasses","elmts","classes","norm_classes","cls","removeClasses","classesArray","_classes","castAsArray","parentMatch","selector","wrapper","getTail","list","isEmptyObject","obj","nodeIndex","amongst","setAttr","attrs","val","attr","replaceNode","existing","replacement","generator","regex_ts_1","strings_ts_1","accent_pat","multi_char_reg","max_char_length","latin_convert","latin_condensed","latin","unicode","convert_pat","initialize","_code_points","normalize","form","asciifold","_asciifold","code_points","code_point_min","code_point_max","composed","folded","generateSets","unicode_sets","addMatching","to_add","folded_set","patt","generateMap","unicode_map","multi_char","set","multi_char_patt","mapSequence","strings","min_replacement","chars_replaced","substringsToPattern","sub_pat","sequencesToPattern","sequences","all","sequence","seq","len","inSequences","needle_seq","needle_parts","filter","part","needle_part","Sequence","position","last_piece","clone","parts","last_part","last_substr","clone_last_len","getPattern","match_str","overlapping","added_types","new_seq","old_seq","microevent_ts_1","microplugin_ts_1","sifter_1","highlight_ts_1","constants","getSettings_ts_1","instance_i","TomSelect","input_arg","user_settings","dir","computedStyle","control","dropdown","dropdown_content","inputMode","control_input","focus_node","passive_event","listboxId","control_id","label","label_click","label_id","classes_plugins","target_match","option","doc_mousedown","win_scroll","optgroups","optgroup","field_label","field_optgroup","templates","escape","callbacks","get_settings","pastedText","splitInput","piece","character","next","prev","wasFocused","deactivate","classList","changed","silent","eventName","begin","end","swap","last","scroll","behavior","content","height_menu","scrollTop","height_item","y","activeItems","calculateScore","hashed","triggerDropdown","html","has_create_option","active_group","create","groups","groups_order","same_query","results","active_option","show_dropdown","getGroupFragment","order","group_order_i","order_group","group_fragment","opt_value","opt_hash","option_el","self_optgroup","group_order","group_heading","group_options","header","group_html","tok","add_template","template","active_index","user_created","dat","hashed_id","item_new","index_item","value_old","value_new","data_old","option_new","boundFilter","selected","values","x","last_item","wasFull","caret","output","created","isFull","isLocked","wrap_classList","opts","empty_option","AddSelected","has_selected","reuse_opt","setTextboxValue","context","rect","top","left","selection","tail","rm_items","rm_item","adjacent","lock","disabled","isReadOnly","revertSettings","templateName","when","method","new_fn","orig_method","result_new","allSubstrings","start","subresult","tmp","tom_select_ts_1","plugin_ts_1","plugin_ts_2","plugin_ts_3","plugin_ts_4","plugin_ts_5","div","placeholder","orig_onBlur","userOptions","MicroPlugin","Interface","plugins","queue","plugin","orig_deleteSelection","getSettings","defaults_ts_1","settings_user","attr_data","field_value","field_disabled","field_optgroup_label","field_optgroup_value","tag_name","settings_element","init_select","tagName","optionsMap","group_count","$order","readData","json","addOption","group","arr","option_data","addGroup","optgroup_data","init_textbox","data_raw","opt","getAttr","getAttrNesting","names","scoreValue","pos","propToArray","cmp","orig_render_item","close_button","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","prop","getCoordinateInputName","coordinate","$input","inputName","subNameMatch","attachGeocoding","attachOptions","inputIdParts","idPrefix","latitudeName","longitudeName","config","geocoded","createCoordinateFields","$latitude","$longitude","clearCoordinateFields","setCoordinates","coordinates2","_ev","coordinates","$map","$addressInputField","markerAddedAnnouncement","latFieldName","longFieldName","ctrl","ev","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","container","tmName","tmItems","tmNoResults"],"sourceRoot":""}