{"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, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;');\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Ⓐ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>&hellip;</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: '&times;',\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":""}