{"version":3,"file":"tom-select.complete.js","sources":["../../src/contrib/microevent.ts","../../src/contrib/microplugin.ts","../../node_modules/@orchidjs/unicode-variants/dist/esm/regex.js","../../node_modules/@orchidjs/unicode-variants/dist/esm/strings.js","../../node_modules/@orchidjs/unicode-variants/dist/esm/index.js","../../node_modules/@orchidjs/sifter/dist/esm/utils.js","../../node_modules/@orchidjs/sifter/dist/esm/sifter.js","../../src/utils.ts","../../src/vanilla.ts","../../src/contrib/highlight.ts","../../src/constants.ts","../../src/defaults.ts","../../src/getSettings.ts","../../src/tom-select.ts","../../src/plugins/change_listener/plugin.ts","../../src/plugins/checkbox_options/plugin.ts","../../src/plugins/clear_button/plugin.ts","../../src/plugins/drag_drop/plugin.ts","../../src/plugins/dropdown_header/plugin.ts","../../src/plugins/caret_position/plugin.ts","../../src/plugins/dropdown_input/plugin.ts","../../src/plugins/input_autogrow/plugin.ts","../../src/plugins/no_backspace_delete/plugin.ts","../../src/plugins/no_active_items/plugin.ts","../../src/plugins/optgroup_columns/plugin.ts","../../src/plugins/remove_button/plugin.ts","../../src/plugins/restore_on_backspace/plugin.ts","../../src/plugins/virtual_scroll/plugin.ts","../../src/tom-select.complete.ts"],"sourcesContent":["/**\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 */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = this._events[event] || [];\n\t\t\tevent_array.push(fct);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1){\n\t\t\t\tdelete this._events[event];\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst event_array = this._events[event];\n\t\t\tif( event_array === undefined ) return;\n\n\t\t\tevent_array.splice(event_array.indexOf(fct), 1);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = self._events[event];\n\t\t\tif( event_array === undefined ) return;\n\t\t\tevent_array.forEach(fct => {\n\t\t\t\tfct.apply(self, args );\n\t\t\t});\n\n\t\t});\n\t}\n};\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 */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames     : [],\n\t\t\tsettings  : {},\n\t\t\trequested : {},\n\t\t\tloaded    : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn'   : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t *   ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t *   [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t *   {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self  = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self    = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin  = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' +  name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n","/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nexport const arrayToPattern = (chars) => {\n    chars = chars.filter(Boolean);\n    if (chars.length < 2) {\n        return chars[0] || '';\n    }\n    return (maxValueLength(chars) == 1) ? '[' + chars.join('') + ']' : '(?:' + chars.join('|') + ')';\n};\nexport const sequencePattern = (array) => {\n    if (!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};\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n */\nexport const setToPattern = (chars) => {\n    let array = Array.from(chars);\n    return arrayToPattern(array);\n};\n/**\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n */\nexport const hasDuplicates = (array) => {\n    return (new Set(array)).size !== array.length;\n};\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n */\nexport const escape_regex = (str) => {\n    return (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n/**\n * Return the max length of array values\n */\nexport const maxValueLength = (array) => {\n    return array.reduce((longest, value) => Math.max(longest, unicodeLength(value)), 0);\n};\nexport const unicodeLength = (str) => {\n    return Array.from(str).length;\n};\n//# sourceMappingURL=regex.js.map","/**\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 */\nexport const allSubstrings = (input) => {\n    if (input.length === 1)\n        return [[input]];\n    let result = [];\n    const start = input.substring(1);\n    const suba = 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};\n//# sourceMappingURL=strings.js.map","import { setToPattern, arrayToPattern, escape_regex, sequencePattern } from \"./regex.js\";\nimport { allSubstrings } from \"./strings.js\";\nexport const code_points = [[0, 65535]];\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\nexport let unicode_map;\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 */\nexport const initialize = (_code_points) => {\n    if (unicode_map !== undefined)\n        return;\n    unicode_map = generateMap(_code_points || code_points);\n};\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n */\nexport const normalize = (str, form = 'NFKD') => str.normalize(form);\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 */\nexport const asciifold = (str) => {\n    return Array.from(str).reduce(\n    /**\n     * @param {string} result\n     * @param {string} char\n     */\n    (result, char) => {\n        return result + _asciifold(char);\n    }, '');\n};\nexport const _asciifold = (str) => {\n    str = normalize(str)\n        .toLowerCase()\n        .replace(convert_pat, (/** @type {string} */ char) => {\n        return latin_convert[char] || '';\n    });\n    //return str;\n    return normalize(str, 'NFC');\n};\n/**\n * Generate a list of unicode variants from the list of code points\n */\nexport function* 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 = 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 */\nexport const 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('^' + setToPattern(folded_set) + '$', 'iu');\n        if (to_add.match(patt)) {\n            return;\n        }\n        folded_set.add(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};\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|Æ|Ǽ|Ǣ)|(?:A|Ⓐ|Ａ...)(?:E|ɛ|Ⓔ...))\n */\nexport const generateMap = (code_points) => {\n    const unicode_sets = 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] = setToPattern(set);\n        }\n        if (folded.length > 1) {\n            multi_char.push(escape_regex(folded));\n        }\n    }\n    multi_char.sort((a, b) => b.length - a.length);\n    const multi_char_patt = arrayToPattern(multi_char);\n    multi_char_reg = new RegExp('^' + multi_char_patt, 'u');\n    return unicode_map;\n};\n/**\n * Map each element of an array from its folded value to all possible unicode matches\n */\nexport const mapSequence = (strings, min_replacement = 1) => {\n    let chars_replaced = 0;\n    strings = strings.map((str) => {\n        if (unicode_map[str]) {\n            chars_replaced += str.length;\n        }\n        return unicode_map[str] || str;\n    });\n    if (chars_replaced >= min_replacement) {\n        return sequencePattern(strings);\n    }\n    return '';\n};\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 */\nexport const substringsToPattern = (str, min_replacement = 1) => {\n    min_replacement = Math.max(min_replacement, str.length - 1);\n    return arrayToPattern(allSubstrings(str).map((sub_pat) => {\n        return mapSequence(sub_pat, min_replacement);\n    }));\n};\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 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(substringsToPattern(sequence.substrs[j] || '', min_replacement));\n        }\n        return 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ⒶＡÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ/\n *\n * Issue:\n *  ﺊﺋ [ 'ﺊ = \\\\u{fe8a}', 'ﺋ = \\\\u{fe8b}' ]\n *\tbecomes:\tئئ [ 'ي = \\\\u{64a}', 'ٔ = \\\\u{654}', 'ي = \\\\u{64a}', 'ٔ = \\\\u{654}' ]\n *\n *\tİĲ = IIJ = ⅡJ\n *\n * \t1/2/4\n */\nexport const getPattern = (str) => {\n    initialize();\n    str = 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};\nexport { escape_regex };\n//# sourceMappingURL=index.js.map","import { asciifold } from '@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 */\nexport const getAttr = (obj, name) => {\n    if (!obj)\n        return;\n    return obj[name];\n};\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 */\nexport const 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};\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const 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};\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const 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};\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 */\nexport const 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};\nexport const cmp = (a, b) => {\n    if (typeof a === 'number' && typeof b === 'number') {\n        return a > b ? 1 : (a < b ? -1 : 0);\n    }\n    a = asciifold(a + '').toLowerCase();\n    b = asciifold(b + '').toLowerCase();\n    if (a > b)\n        return 1;\n    if (b > a)\n        return -1;\n    return 0;\n};\n//# sourceMappingURL=utils.js.map","/**\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 */\nimport { scoreValue, getAttr, getAttrNesting, propToArray, iterate, cmp } from \"./utils.js\";\nimport { getPattern, escape_regex } from '@orchidjs/unicode-variants';\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(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 = getPattern(word) || null;\n                }\n                else {\n                    regex = 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 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 += scoreValue(value, token, 1);\n                    }\n                }\n                else {\n                    iterate(weights, (weight, field) => {\n                        sum += 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                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 * 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        propToArray(options, 'sort');\n        propToArray(options, 'sort_empty');\n        // convert fields to new format\n        if (options.fields) {\n            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) ? getAttrNesting : 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            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            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}\nexport { Sifter, scoreValue, getAttr, getAttrNesting, propToArray, iterate, cmp, getPattern };\nexport * from \"./types.js\";\n//# sourceMappingURL=sifter.js.map","\nimport type TomSelect from './tom-select.ts';\nimport { TomLoadCallback } from './types/index.ts';\n\n\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 */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * use setTimeout if timeout > 0 \n */\nexport const timeout = (fn:()=>void,timeout:number): number | null => {\n\tif( timeout > 0 ){\n\t\treturn window.setTimeout(fn,timeout);\n\t}\n\n\tfn.call(null);\n\treturn null;\n}\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\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 */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\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 */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\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 */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n\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 */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n","\nimport { iterate } from './utils.ts';\n\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 */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\t\\n\\f\\r\\s]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\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 */\n\nimport {replaceNode} from '../vanilla.ts';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer  ->  <span class=\"highlight\">Soc</span>cer  for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0]!.length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tArray.from(node.childNodes).forEach(element => {\n\t\t\t\thighlightRecursive(element);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n","export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n","\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\tclearAfterSelect: false,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\trefreshThrottle: 300,\n\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload                 : null, // function(query, callback) { ... }\n\tscore                : null, // function(search) { ... }\n\tonInitialize         : null, // function() { ... }\n\tonChange             : null, // function(value) { ... }\n\tonItemAdd            : null, // function(value, $item) { ... }\n\tonItemRemove         : null, // function(value) { ... }\n\tonClear              : null, // function() { ... }\n\tonOptionAdd          : null, // function(value, data) { ... }\n\tonOptionRemove       : null, // function(value) { ... }\n\tonOptionClear        : null, // function() { ... }\n\tonOptionGroupAdd     : null, // function(id, data) { ... }\n\tonOptionGroupRemove  : null, // function(id) { ... }\n\tonOptionGroupClear   : null, // function() { ... }\n\tonDropdownOpen       : null, // function(dropdown) { ... }\n\tonDropdownClose      : null, // function(dropdown) { ... }\n\tonType               : null, // function(str) { ... }\n\tonDelete             : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n","import defaults from './defaults.ts';\nimport { hash_key, iterate } from './utils.ts';\nimport { TomOption, TomSettings, RecursivePartial } from './types/index.ts';\nimport { TomInput } from './types/index.ts';\n\n\nexport default function getSettings( input:TomInput, settings_user:RecursivePartial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\t\tlet $order = 0;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data             = readData(option);\n\t\t\t\toption_data[field_label]    = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value]    = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\t\t\t\toption_data.$order\t\t\t= option_data.$order || ++$order;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\toptgroup_data.$order\t\t\t\t\t= optgroup_data.$order || ++$order;\n\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input?.value?.trim() ?? '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n","\nimport MicroEvent from './contrib/microevent.ts';\nimport MicroPlugin from './contrib/microplugin.ts';\nimport { Sifter } from '@orchidjs/sifter';\nimport { escape_regex } from '@orchidjs/unicode-variants';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter, RecursivePartial } from './types/index.ts';\nimport {highlight, removeHighlight} from './contrib/highlight.ts';\nimport * as constants from './constants.ts';\nimport getSettings from './getSettings.ts';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\ttimeout,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend,\n\titerate\n} from './utils.ts';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla.ts';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isReadOnly\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true;\n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic isDropdownContentStale\t: boolean = true;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreHover\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\tprivate refreshTimeout\t\t\t: null|number = null;\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:RecursivePartial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\t\tinput.tomselect\t\t\t= this;\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input: string) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = (value: string) => {\n\t\t\t\t\treturn this.settings.duplicates || !this.options[value];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\n\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete','spellcheck','aria-label'];\n\t\t\titerate(attrs,(attr:string) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t// dom element\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n        wrapper.style.minWidth = input.style.minWidth;\n        wrapper.style.maxWidth = input.style.maxWidth;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!settings.splitOn && settings.delimiter) {\n\t\t\tsettings.splitOn = new RegExp('\\\\s*' + escape_regex(settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\taddEvent(dropdown,'mousemove', () => {\n\t\t\tself.ignoreHover = false;\n\t\t});\n\n\t\taddEvent(dropdown,'mouseenter', (e) => {\n\n\t\t\tvar target_match = parentMatch(e.target as HTMLElement, '[data-selectable]', dropdown);\n\t\t\tif( target_match ) self.onOptionHover( e as MouseEvent, target_match );\n\n\t\t}, {capture:true});\n\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\n\t\t};\n\n\t\tconst win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\t\tconst input_invalid = () => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t}\n\n\t\taddEvent(input,'invalid', input_invalid);\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tinput.removeEventListener('invalid',input_invalid);\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('scroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup:TomOption) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize'      : 'onInitialize',\n\t\t\t'change'          : 'onChange',\n\t\t\t'item_add'        : 'onItemAdd',\n\t\t\t'item_remove'     : 'onItemRemove',\n\t\t\t'item_select'     : 'onItemSelect',\n\t\t\t'clear'           : 'onClear',\n\t\t\t'option_add'      : 'onOptionAdd',\n\t\t\t'option_remove'   : 'onOptionRemove',\n\t\t\t'option_clear'    : 'onOptionClear',\n\t\t\t'optgroup_add'    : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear'  : 'onOptionGroupClear',\n\t\t\t'dropdown_open'   : 'onDropdownOpen',\n\t\t\t'dropdown_close'  : 'onDropdownClose',\n\t\t\t'type'            : 'onType',\n\t\t\t'load'            : 'onLoad',\n\t\t\t'focus'           : 'onFocus',\n\t\t\t'blur'            : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter,allowEmptyOption:self.settings.allowEmptyOption} as RecursivePartial<TomSettings> ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items||[],true); // silent prevents recursion\n\n\t\tif( self.input.disabled ){\n\t\t\tself.disable();\n\t\t}else if( self.input.readOnly ){\n\t\t\tself.setReadOnly(true);\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif( !self.settings.splitOn ){\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for pasted text to be recognized in value\n\t\tsetTimeout(() => {\n\t\t\tvar pastedText = self.inputValue();\n\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\titerate( splitInput, (piece:string) => {\n\n\t\t\t\tconst hash = hash_key(piece);\n\t\t\t\tif( hash ){\n\t\t\t\t\tif( this.options[piece] ){\n\t\t\t\t\t\tself.addItem(piece);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself.createItem(piece);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 0);\n\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tself.ignoreHover = true;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// don't submit form when searching for a value\n\t\t\t\t}else if( document.activeElement == self.control_input && self.isOpen ){\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\telse if(self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\n\t\tif( this.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = this.inputValue();\n\t\tif( this.lastValue === value ) return;\n\t\tthis.lastValue = value;\n\n\t\tif( value == '' ){\n\t\t\tthis._onInput();\n\t\t\treturn;\n\t\t}\n\n\t\tif( this.refreshTimeout ){\n\t\t\twindow.clearTimeout(this.refreshTimeout);\n\t\t}\n\n\t\tthis.refreshTimeout = timeout(()=> {\n\t\t\tthis.refreshTimeout = null;\n\t\t\tthis._onInput();\n\t\t}, this.settings.refreshThrottle);\n\t}\n\n\t_onInput():void {\n\t\tconst value = this.lastValue;\n\n\t\tif( this.settings.shouldLoad.call(this,value) ){\n\t\t\tthis.load(value);\n\t\t}\n\n\t\tthis.refreshOptions();\n\t\tthis.trigger('type', value);\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ):void{\n\t\tif( this.ignoreHover ) return;\n\t\tthis.setActiveOption(option, false);\n\t}\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif( self.isDisabled || self.isReadOnly ){\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.inputState();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t} else if(self.settings.clearAfterSelect) {\n\t\t\t\t\tself.setTextboxValue();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.isDropdownContentStale = self.settings.hideSelected;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t} else if(self.settings.clearAfterSelect) {\n\t\t\t\t\tself.setTextboxValue();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.isDropdownContentStale = true;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.inputState();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap  = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend   = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.inputState();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement,scroll:boolean=true ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tif( scroll ) this.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\t\tconst self = this;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\tconst activeItems = self.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\n\t\tself.inputState();\n\t\tself.close();\n\n\t\tself.activeItems = activeItems;\n\t\titerate( activeItems, (item:TomItem) => {\n\t\t\tself.setActiveItemClass(item);\n\t\t});\n\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\n\t\t}else{\n\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif( self.isDisabled || self.isReadOnly) return;\n\n\t\tself.ignoreFocus = true;\n\n\t\tconst focusTarget = this.control_input.offsetWidth ? this.control_input : this.focus_node;\n    \tfocusTarget.focus();\n\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\t// Fix https://github.com/orchidjs/tom-select/issues/806\n\t\t\t// Only proceed if this instance's element is still the active element. If Edge autofill\n\t\t\t// (or anything else) has moved focus to a different element in the interim, calling\n\t\t\t// onFocus() here would steal focus back and restart the cascade loop.\n\t\t\tconst root = focusTarget.getRootNode() as Document | ShadowRoot;\n\t\t\tif (root.activeElement !== focusTarget) {\n        \t\treturn;\n      \t\t}\n\n\t\t\tthis.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields      : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort        : sort,\n\t\t\tnesting     : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar result, calculateScore;\n\t\tvar self     = this;\n\t\tvar options  = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (self.isDropdownContentStale || query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\t// temp fix for https://github.com/orchidjs/tom-select/issues/987\n\t\t\t// UI crashed when more than 30 same chars in a row, prevent search and return empt result\n\t\t\tif (/(.)\\1{15,}/.test(query)) {\n\t\t\t\tquery \t\t\t\t= '';\n\t\t\t}\n\t\t\tresult \t\t\t\t\t= self.sifter.search(query, Object.assign(options, { score: calculateScore }));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tresult.items = result.items.filter((item) => {\n\t\t\t\tlet hashed = hash_key(item.id);\n\t\t\t\treturn !(hashed !== null && self.items.indexOf(hashed) !== -1 );\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_group;\n\t\tvar create;\n\n\t\ttype Group = {fragment:DocumentFragment,order:number,optgroup:string}\n\t\tconst groups: {[key:string]:number} = {};\n\t\tconst groups_order:Group[]\t= [];\n\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tconst same_query\t\t\t= query === self.lastQuery || (query == '' && self.lastQuery == null);\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option:HTMLElement|null = null;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\n\t\tif( same_query ){\n\t\t\tactive_option\t\t\t= self.activeOption;\n\n\t\t\tif( active_option ){\n\t\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t\t}\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// get fragment for group and the position of the group in group_order\n\t\tconst getGroupFragment = (optgroup:string,order:number):[number,DocumentFragment] => {\n\n\t\t\tlet group_order_i = groups[optgroup];\n\n\t\t\tif( group_order_i !== undefined ){\n\t\t\t\tlet order_group = groups_order[group_order_i];\n\t\t\t\tif( order_group !== undefined ){\n\t\t\t\t\treturn [group_order_i,order_group.fragment];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet group_fragment = document.createDocumentFragment();\n\t\t\tgroup_order_i = groups_order.length;\n\t\t\tgroups_order.push({fragment:group_fragment,order,optgroup});\n\n\t\t\treturn [group_order_i,group_fragment]\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet item\t\t\t= results.items[i];\n\t\t\tif( !item ) continue;\n\n\t\t\tlet opt_value\t\t= item.id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\n\t\t\tif( option === undefined ) continue;\n\n\t\t\tlet opt_hash\t\t= get_hash(opt_value);\n\t\t\tlet option_el\t\t= self.getOption(opt_hash,true) as HTMLElement;\n\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_hash) );\n\t\t\t}\n\n\t\t\toptgroup    = option[self.settings.optgroupField] || '';\n\t\t\toptgroups   = Array.isArray(optgroup) ? optgroup : [optgroup];\n\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\n\t\t\t\tlet order = option.$order;\n\t\t\t\tlet self_optgroup = self.optgroups[optgroup];\n\t\t\t\tif (self_optgroup === undefined && typeof self.settings.optionGroupRegister === 'function') {\n\t          \t\tvar regGroup;\n\t\t\t\t\tif (regGroup = self.settings.optionGroupRegister.apply(self, [optgroup])) {\n\t\t\t\t\t\tself.registerOptionGroup(regGroup);\n\t\t\t\t\t}\n\t        \t}\n\t\t\t\tself_optgroup = self.optgroups[optgroup];\n\t\t\t\tif( self_optgroup === undefined ){\t\t\t\t\t\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}else{\n\t\t\t\t\torder = self_optgroup.$order;\n\t\t\t\t}\n\n\t\t\t\tconst [group_order_i,group_fragment] = getGroupFragment(optgroup,order);\n\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\n\n\t\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\t\tif( self.activeOption && self.activeOption.dataset.value == opt_value ){\n\t\t\t\t\t\tif( active_group && active_group.dataset.group === optgroup.toString() ){\n\t\t\t\t\t\t\tactive_option = option_el;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_fragment.appendChild(option_el);\n\t\t\t\tif( optgroup != '' ){\n\t\t\t\t\tgroups[optgroup] = group_order_i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif( self.settings.lockOptgroupOrder ){\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\treturn a.order - b.order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (group_order:Group) => {\n\n\t\t\tlet group_fragment = group_order.fragment;\n\t\t\tlet optgroup = group_order.optgroup\n\n\t\t\tif( !group_fragment || !group_fragment.children.length ) return;\n\n\t\t\tlet group_heading = self.optgroups[optgroup];\n\n\t\t\tif( group_heading !== undefined ){\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', group_heading);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, group_fragment );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:group_heading,options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, group_fragment );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\t\tself.isDropdownContentStale = false;\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !active_option && self.settings.mode === 'single' && self.items[0] != undefined ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option)  ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t *   this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\tself.updateOption(data[self.settings.valueField], data);\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t\t\t= data;\n\t\tself.isDropdownContentStale\t= true;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat:TomOption) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\n\t\tconst data_old\t\t= self.options[value_old];\n\n\t\tif( data_old == undefined ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || data_old.$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// we might have updated the sortField\n\t\tself.isDropdownContentStale = true;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.isDropdownContentStale = true;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions(filter?:TomClearFilter ) {\n\n\t\tconst boundFilter = (filter || this.clearFilter).bind(this);\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\n\t\tconst selected:TomOptions\t= {};\n\t\titerate(this.options,(option:TomOption,key:string)=>{\n\t\t\tif( boundFilter(option,key as string) ){\n\t\t\t\tselected[key] = option;\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.isDropdownContentStale = true;\n\t\tthis.trigger('option_clear');\n\t}\n\n\t/**\n\t * Used by clearOptions() to decide whether or not an option should be removed\n\t * Return true to keep an option, false to remove\n\t *\n\t */\n\tclearFilter(option:TomOption,value:string){\n\t\tif( this.items.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:undefined|null|boolean|string|number, create:boolean=false):null|HTMLElement {\n\n\t\tconst hashed = hash_key(value);\n\t\tif( hashed === null ) return null;\n\n\t\tconst option = this.options[hashed];\n\t\tif( option != undefined ){\n\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tconst last_item = items[items.length - 1];\n\t\titems.forEach(item => {\n\t\t\tself.isPending = (item !== last_item);\n\t\t\tself.addItem(item, silent);\n\t\t});\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//remove input value when enabled\n\t\t\t\tif(self.settings.clearAfterSelect) {\n\t\t\t\t\tself.setTextboxValue();\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.isDropdownContentStale = true;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, callback:TomCreateCallback = ()=>{} ):boolean{\n\n\t\t// triggerDropdown parameter @deprecated 2.1.1\n\t\tif( arguments.length === 3 ){\n\t\t\tcallback = arguments[2];\n\t\t}\n\t\tif( typeof callback != 'function' ){\n\t\t\tcallback = () => {};\n\t\t}\n\n\t\tvar self  = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tconst hash = hash_key(input);\n\t\t\t\tif( hash ){\n\t\t\t\t\tif( this.options[input] ){\n\t\t\t\t\t\tself.addItem(input);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.isDropdownContentStale = true;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self     = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\n\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('readonly', self.isReadOnly)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\t}\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.validity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.validity.valid;\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\t\t\tconst has_selected:number\t\t\t\t= self.input.querySelectorAll('option:checked').length;\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\t// marking empty option as selected can break validation\n\t\t\t\t// fixes https://github.com/orchidjs/tom-select/issues/303\n\t\t\t\tif( option_el != empty_option || has_selected > 0 ){\n\t\t\t\t\toption_el.selected = true;\n\t\t\t\t}\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value]!;\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.inputState();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top  + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop   : top + 'px',\n\t\t\tleft  : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item:TomItem)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.inputState();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret] || null);\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item:TomItem) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tlet rm_item;\n\t\t\tif( direction < 0 && selection.start === 0 && selection.length === 0 ){\n\t\t\t\trm_item = items[self.caretPos - 1];\n\n\t\t\t}else if( direction > 0 && selection.start === self.inputValue().length ){\n\t\t\t\trm_item = items[self.caretPos];\n\t\t\t}\n\n\t\t\tif( rm_item !== undefined ){\n\t\t\t\trm_items.push( rm_item );\n\t\t\t}\n\t\t}\n\n\t\tif( !self.shouldDelete(rm_items,e) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.inputState();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return true if the items should be deleted\n\t */\n\tshouldDelete(items:TomItem[],evt:MouseEvent|KeyboardEvent){\n\n\t\tconst values = items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif( !values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete.call(this,values,evt) === false) ){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.setLocked(true);\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.setLocked(false);\n\t}\n\n\t/**\n\t * Disable or enable user input on the control\n\t */\n\tsetLocked( lock:boolean = this.isReadOnly || this.isDisabled ){\n\t\tthis.isLocked = lock;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tthis.setDisabled(true);\n\t\tthis.close();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tthis.setDisabled(false);\n\t}\n\n\tsetDisabled(disabled:boolean){\n\t\tthis.focus_node.tabIndex\t\t= disabled ? -1 : this.tabIndex;\n\t\tthis.isDisabled\t\t\t\t\t= disabled;\n\t\tthis.input.disabled\t\t\t\t= disabled;\n\t\tthis.control_input.disabled\t\t= disabled;\n\t\tthis.setLocked();\n\t}\n\n\tsetReadOnly(isReadOnly:boolean){\n\t\tthis.isReadOnly\t\t\t\t\t= isReadOnly;\n\t\tthis.input.readOnly\t\t\t\t= isReadOnly;\n\t\tthis.control_input.readOnly\t\t= isReadOnly;\n\t\tthis.setLocked();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\t\tvar id, html;\n\t\tconst self = this;\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn null;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tconst value\t= get_hash(data[self.settings.valueField]);\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tdata.$div = html;\n\t\t\t\tself.options[value] = data;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\n\t}\n\n\n\t/**\n\t * Type guarded rendering\n\t *\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tconst html = this.render(templateName, data);\n\n\t\tif( html == null ){\n\t\t\tthrow 'HTMLElement expected';\n\t\t}\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option:TomOption)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n","/**\n * Plugin: \"change_listener\" (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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { addEvent } from '../../utils.ts';\n\nexport default function(this:TomSelect) {\n\taddEvent(this.input,'change',()=>{\n\t\tthis.sync();\n\t});\n};\n","/**\n * Plugin: \"checkbox_options\" (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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { TomTemplate } from '../../types/index.ts';\nimport { preventDefault, hash_key } from '../../utils.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { CBOptions } from './types.ts';\n\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tvar self = this;\n\tvar orig_onOptionSelect = self.onOptionSelect;\n\n\tself.settings.hideSelected = false;\n\n\tconst cbOptions : CBOptions = Object.assign({\n\t\t// so that the user may add different ones as well\n\t\tclassName             : \"tomselect-checkbox\",\n\n\t\t// the following default to the historic plugin's values\n\t\tcheckedClassNames     : undefined,\n\t\tuncheckedClassNames   : undefined,\n\t}, userOptions);\n\n\n\tvar UpdateChecked = function(checkbox:HTMLInputElement, toCheck : boolean) {\n\t\tif( toCheck ){\n\t\t\tcheckbox.checked = true;\n\t\t\tif (cbOptions.uncheckedClassNames) {\n\t\t\t\tcheckbox.classList.remove(...cbOptions.uncheckedClassNames);\n\t\t\t}\n\t\t\tif (cbOptions.checkedClassNames) {\n\t\t\t\tcheckbox.classList.add(...cbOptions.checkedClassNames);\n\t\t\t}\n\t\t}else{\n\t\t\tcheckbox.checked = false;\n\t\t\tif (cbOptions.checkedClassNames) {\n\t\t\t\tcheckbox.classList.remove(...cbOptions.checkedClassNames);\n\t\t\t}\n\t\t\tif (cbOptions.uncheckedClassNames) {\n\t\t\t\tcheckbox.classList.add(...cbOptions.uncheckedClassNames);\n\t\t\t}\n\t\t}\n\t}\n\n\t// update the checkbox for an option\n\tvar UpdateCheckbox = function(option:HTMLElement){\n\t\tsetTimeout(()=>{\n\t\t\tvar checkbox = option.querySelector('input.' + cbOptions.className);\n\t\t\tif( checkbox instanceof HTMLInputElement ){\n\t\t\t\tUpdateChecked(checkbox, option.classList.contains('selected'));\n\t\t\t}\n\t\t},1);\n\t};\n\n\t// add checkbox to option template\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_option = self.settings.render.option;\n\n\t\tself.settings.render.option = ((data, escape_html) => {\n\t\t\tvar rendered = getDom(orig_render_option.call(self, data, escape_html));\n\t\t\tvar checkbox = document.createElement('input');\n\t\t\tif (cbOptions.className) {\n\t\t\t\tcheckbox.classList.add(cbOptions.className);\n\t\t\t}\n\t\t\tcheckbox.addEventListener('click',function(evt){\n\t\t\t\tpreventDefault(evt);\n\t\t\t});\n\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tconst hashed = hash_key(data[self.settings.valueField]);\n\n\t\t\tUpdateChecked(checkbox, !!(hashed && self.items.indexOf(hashed) > -1) );\n\n\t\t\trendered.prepend(checkbox);\n\t\t\treturn rendered;\n\t\t}) satisfies TomTemplate;\n\t});\n\n\t// uncheck when item removed\n\tself.on('item_remove',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\toption.classList.remove('selected'); // selected class won't be removed yet\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\t// check when item added\n\tself.on('item_add',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\n\t// remove items when selected option is clicked\n\tself.hook('instead','onOptionSelect',( evt:KeyboardEvent, option:HTMLElement )=>{\n\n\t\tif( option.classList.contains('selected') ){\n\t\t\toption.classList.remove('selected')\n\t\t\tself.removeItem(option.dataset.value);\n\t\t\tself.refreshOptions();\n\t\t\tpreventDefault(evt,true);\n\t\t\treturn;\n        }\n\n\t\torig_onOptionSelect.call(self, evt, option);\n\n\t\tUpdateCheckbox(option);\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_header\" (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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { CBOptions } from './types.ts';\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\tclassName: 'clear-button',\n\t\ttitle: 'Clear All',\n\t\trole: 'button',\n\t\ttabindex: 0,\n\t\thtml: (data:CBOptions) => {\n\n\t\treturn `<div class=\"${data.className}\" title=\"${data.title}\" role=\"${data.role}\" tabindex=\"${data.tabindex}\">&times;</div>`;\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar button = getDom(options.html(options));\n\t\tbutton.addEventListener('click',(evt)=>{\n\n\t\t\tif( self.isLocked ) return;\n\n\t\t\tself.clear();\n\n\t\t\tif( self.settings.mode === 'single' && self.settings.allowEmptyOption ){\n\t\t\t\tself.addItem('');\n\t\t\t}\n\t\t\t\n\t\t\tself.refreshOptions(false);\n\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation();\n\t\t});\n\t\tself.control.appendChild(button);\n\t});\n\n};\n","/**\n * Plugin: \"drag_drop\" (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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { TomOption, TomItem } from '../../types/index.ts';\nimport { escape_html, preventDefault, addEvent } from '../../utils.ts';\nimport { getDom, setAttr } from '../../vanilla.ts';\n\n\nconst insertAfter = (referenceNode:Element, newNode:Element) => {\n\treferenceNode.parentNode?.insertBefore(newNode, referenceNode.nextSibling);\n}\n\nconst insertBefore = (referenceNode:Element, newNode:Element) => {\n\treferenceNode.parentNode?.insertBefore(newNode, referenceNode);\n}\n\nconst isBefore = (referenceNode:Element|undefined|null, newNode:Element|undefined|null) =>{\n\t\n\tdo{\n\t\tnewNode = newNode?.previousElementSibling;\n\n\t\tif( referenceNode == newNode ){\n\t\t\treturn true;\n\t\t}\n\n\t}while( newNode && newNode.previousElementSibling );\n\n\treturn false;\n}\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tif (self.settings.mode !== 'multi') return;\n\n\tvar orig_lock\t\t= self.lock;\n\tvar orig_unlock\t\t= self.unlock;\n\tlet sortable = true;\n\t\tlet drag_item:TomItem|undefined;\n\n\n\t/**\n\t * Add draggable attribute to item\n\t */\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\t\t\tconst item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\t\t\tsetAttr(item,{'draggable':'true'});\n\n\n\t\t\t// prevent doc_mousedown (see tom-select.ts)\n\t\t\tconst mousedown = (evt:Event) => {\n\t\t\t\tif( !sortable ) preventDefault(evt);\n\t\t\t\tevt.stopPropagation();\n\t\t\t}\n\n\t\t\tconst dragStart = (evt:Event) => {\n\t\t\t\tdrag_item = item;\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\titem.classList.add('ts-dragging');\n\t\t\t\t}, 0);\n\t\t\t\t\n\t\t\t}\n\n\t\t\tconst dragOver = (evt:Event) =>{\n\t\t\t\tevt.preventDefault();\n\t\t\t\titem.classList.add('ts-drag-over');\n\t\t\t\tmoveitem(item,drag_item);\n\t\t\t}\n\n\t\t\tconst dragLeave = () => {\n\t\t\t\titem.classList.remove('ts-drag-over');\n\t\t\t}\n\n\t\t\tconst moveitem = (targetitem:TomItem, dragitem:TomItem|undefined) => {\n\t\t\t\tif( dragitem === undefined ) return;\n\t\t\t\t\n\t\t\t\tif( isBefore(dragitem,item) ){\n\t\t\t\t\tinsertAfter(targetitem,dragitem);\n\t\t\t\t}else{\n\t\t\t\t\tinsertBefore(targetitem,dragitem);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst dragend = () => {\n\t\t\t\tdocument.querySelectorAll('.ts-drag-over').forEach(el=> el.classList.remove('ts-drag-over'));\n\t\t\t\tdrag_item?.classList.remove('ts-dragging');\n\t\t\t\tdrag_item = undefined;\n\n\t\t\t\tvar values:string[] = [];\n\t\t\t\tself.control.querySelectorAll(`[data-value]`).forEach((el:Element)=> {\n\t\t\t\t\tif( (<HTMLOptionElement>el).dataset.value ){\n\t\t\t\t\t\tlet value = (<HTMLOptionElement>el).dataset.value;\n\t\t\t\t\t\tif( value ){\n\t\t\t\t\t\t\tvalues.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tself.setValue(values);\n\t\t\t}\t\n\n\n\t\t\taddEvent(item,'mousedown', mousedown);\n\t\t\taddEvent(item,'dragstart', dragStart);\n\t\t\taddEvent(item,'dragenter', dragOver)\n\t\t\taddEvent(item,'dragover', dragOver);\n\t\t\taddEvent(item,'dragleave', dragLeave);\n\t\t\taddEvent(item,'dragend', dragend);\n\t\t\t\t\n\t\t\treturn item;\n\t\t}\t\n\t});\n\n\n\n\tself.hook('instead','lock',()=>{\n\t\tsortable = false;\n\t\treturn orig_lock.call(self);\n\t});\n\n\tself.hook('instead','unlock',()=>{\n\t\tsortable = true;\n\t\treturn orig_unlock.call(self);\n\t});\n\n};\n","/**\n * Plugin: \"dropdown_header\" (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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { preventDefault } from '../../utils.ts';\nimport { DHOptions } from './types.ts';\n\nexport default function(this:TomSelect, userOptions:DHOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttitle         : 'Untitled',\n\t\theaderClass   : 'dropdown-header',\n\t\ttitleRowClass : 'dropdown-header-title',\n\t\tlabelClass    : 'dropdown-header-label',\n\t\tcloseClass    : 'dropdown-header-close',\n\n\t\thtml: (data:DHOptions) => {\n\t\t\treturn (\n\t\t\t\t'<div class=\"' + data.headerClass + '\">' +\n\t\t\t\t\t'<div class=\"' + data.titleRowClass + '\">' +\n\t\t\t\t\t\t'<span class=\"' + data.labelClass + '\">' + data.title + '</span>' +\n\t\t\t\t\t\t'<a class=\"' + data.closeClass + '\">&times;</a>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t\t);\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar header = getDom(options.html(options));\n\n\t\tvar close_link = header.querySelector('.'+options.closeClass);\n\t\tif( close_link ){\n\t\t\tclose_link.addEventListener('click',(evt)=>{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\tself.close();\n\t\t\t});\n\t\t}\n\n\t\tself.dropdown.insertBefore(header, self.dropdown.firstChild);\n\t});\n\n};\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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { nodeIndex, removeClasses } from '../../vanilla.ts';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\t\t\tremoveClasses(last_active as HTMLElement,'last-active');\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport * as constants from '../../constants.ts';\nimport { getDom, addClasses } from '../../vanilla.ts';\nimport { addEvent, preventDefault } from '../../utils.ts';\n\n\nexport default function(this:TomSelect) {\n\tconst self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\n\t\t// set a placeholder in the select control\n\t\tconst placeholder = getDom('<input class=\"items-placeholder\" tabindex=\"-1\" />') as HTMLInputElement;\n\t\tplaceholder.placeholder = self.settings.placeholder ||'';\n\t\tself.control.append(placeholder);\n\t\t/**\n\t\t * TomSelect renders a custom control with a focusable <input class=\"items-placeholder\">.\n\t\t * The source <select>'s aria-label is not automatically propagated to that input,\n\t\t * which triggers \"Missing form label\" accessibility warnings.\n\t\t * This helper copies the label from the <select> onto the generated input.\n\t\t */\n\t\tconst label = self.input?.getAttribute('aria-label');\n\t\tif (!label) return;\n\t\tplaceholder.setAttribute('aria-label', label);\n\t});\n\n\tself.on('initialize',()=>{\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus({preventScroll: true});\n\t\t});\n\n\t});\n};\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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { addEvent } from '../../utils.ts';\n\nexport default function(this:TomSelect) {\n\tvar self\t\t\t\t\t= this;\n\n\tself.on('initialize',()=>{\n\n\n\t\tvar test_input\t\t\t\t= document.createElement('span');\n\t\tvar control\t\t\t\t\t= self.control_input;\n\t\ttest_input.style.cssText\t= 'position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ';\n\n\t\tself.wrapper.appendChild(test_input);\n\n\n\t\tvar transfer_styles\t\t\t= [ 'letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform' ];\n\n\t\tfor( const style_name of transfer_styles ){\n\t\t\t// @ts-ignore TS7015 https://stackoverflow.com/a/50506154/697576\n\t\t\ttest_input.style[style_name] = control.style[style_name];\n\t\t}\n\n\n\t\t/**\n\t\t * Set the control width\n\t\t *\n\t\t */\n\t\tvar resize = ()=>{\n\t\t\ttest_input.textContent\t= control.value;\n\t\t\tcontrol.style.width\t\t= test_input.clientWidth+'px';\n\t\t};\n\n\t\tresize();\n\t\tself.on('update item_add item_remove',resize);\n\t\taddEvent(control,'input', resize );\n\t\taddEvent(control,'keyup', resize );\n\t\taddEvent(control,'blur', resize );\n\t\taddEvent(control,'update', resize );\n\t});\n\n};\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 */\n\nimport type TomSelect from '../../tom-select.ts';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n","/**\n * Plugin: \"no_active_items\" (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 */\n\nimport type TomSelect from '../../tom-select.ts';\n\nexport default function(this:TomSelect) {\n\tthis.hook('instead','setActiveItem',() => {});\n\tthis.hook('instead','selectAll',() => {});\n};\n","/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport * as constants from '../../constants.ts';\nimport { parentMatch, nodeIndex } from '../../vanilla.ts';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tvar orig_keydown = self.onKeyDown;\n\n\tself.hook('instead','onKeyDown',(evt:KeyboardEvent)=>{\n\t\tvar index, option, options, optgroup;\n\n\t\tif( !self.isOpen || !(evt.keyCode === constants.KEY_LEFT || evt.keyCode === constants.KEY_RIGHT)) {\n\t\t\treturn orig_keydown.call(self,evt);\n\t\t}\n\n\t\tself.ignoreHover\t= true;\n\t\toptgroup\t\t\t= parentMatch(self.activeOption,'[data-group]');\n\t\tindex\t\t\t\t= nodeIndex(self.activeOption,'[data-selectable]');\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( evt.keyCode === constants.KEY_LEFT ){\n\t\t\toptgroup = optgroup.previousSibling;\n\t\t} else {\n\t\t\toptgroup = optgroup.nextSibling;\n\t\t}\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\toptions\t\t\t\t= (<HTMLOptGroupElement>optgroup).querySelectorAll('[data-selectable]');\n\t\toption\t\t\t\t= options[ Math.min(options.length - 1, index) ] as HTMLElement;\n\n\t\tif( option ){\n\t\t\tself.setActiveOption(option);\n\t\t}\n\n\t});\n\n};\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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { getDom } from '../../vanilla.ts';\nimport { escape_html, preventDefault, addEvent } from '../../utils.ts';\nimport { TomOption, TomItem } from '../../types/index.ts';\nimport { RBOptions } from './types.ts';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel     : '&times;',\n\t\t\ttitle     : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend    : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\n\t\t\tvar close_button = getDom(html);\n\t\t\titem.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\tif( self.isLocked ) return;\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif( self.isLocked ) return;\n\t\t\t\tif( !self.shouldDelete([item],evt as MouseEvent) ) return;\n\n\t\t\t\tself.removeItem(item);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t\tself.inputState();\n\t\t\t});\n\n\t\t\treturn item;\n\t\t};\n\n\t});\n\n\n};\n","/**\n * Plugin: \"restore_on_backspace\" (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 */\nimport type TomSelect from '../../tom-select.ts';\nimport { TomOption } from '../../types/index.ts';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( !self.isFocused ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n","/**\n * Plugin: \"virtual_scroll\" (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 */\n\nimport type TomSelect from '../../tom-select.ts';\nimport { TomOption } from '../../types/index.ts';\nimport { addClasses } from '../../vanilla.ts';\n\nexport default function(this:TomSelect) {\n\tconst self\t\t\t\t\t\t\t= this;\n\tconst orig_canLoad\t\t\t\t\t= self.canLoad;\n\tconst orig_clearActiveOption\t\t= self.clearActiveOption;\n\tconst orig_loadCallback\t\t\t\t= self.loadCallback;\n\n\tvar pagination:{[key:string]:any}\t= {};\n\tvar dropdown_content:HTMLElement;\n\tvar loading_more\t\t\t\t\t= false;\n\tvar load_more_opt:HTMLElement;\n\tvar default_values: string[]\t\t= [];\n\tvar default_values_loaded\t\t\t= false;\n\tvar default_pagination:any;\n\n\tif( !self.settings.shouldLoadMore ){\n\n\t\t// return true if additional results should be loaded\n\t\tself.settings.shouldLoadMore = ():boolean=>{\n\n\t\t\tconst scroll_percent = dropdown_content.clientHeight / (dropdown_content.scrollHeight - dropdown_content.scrollTop);\n\t\t\tif( scroll_percent > 0.9 ){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif( self.activeOption ){\n\t\t\t\tvar selectable\t= self.selectable();\n\t\t\t\tvar index\t\t= Array.from(selectable).indexOf(self.activeOption);\n\t\t\t\tif( index >= (selectable.length-2) ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\n\tif( !self.settings.firstUrl ){\n\t\tthrow 'virtual_scroll plugin requires a firstUrl() method';\n\t}\n\n\n\t// in order for virtual scrolling to work,\n\t// options need to be ordered the same way they're returned from the remote data source\n\tself.settings.sortField\t\t\t= [{field:'$order'},{field:'$score'}];\n\n\n\t// can we load more results for given query?\n\tconst canLoadMore = (query:string):boolean => {\n\n\t\tif( typeof self.settings.maxOptions === 'number' && dropdown_content.children.length >= self.settings.maxOptions ){\n\t\t\treturn false;\n\t\t}\n\n\t\tif( (query in pagination) && pagination[query] ){\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tconst clearFilter = (option:TomOption, value:string):boolean => {\n\t\tif( self.items.indexOf(value) >= 0 || default_values.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\n\t// set the next url that will be\n\tself.setNextUrl = (value:string,next_url:any):void => {\n\t\tpagination[value] = next_url;\n\t};\n\n\t// getUrl() to be used in settings.load()\n\tself.getUrl = (query:string):any =>{\n\n\t\tif( query in pagination ){\n\t\t\tconst next_url = pagination[query];\n\t\t\tpagination[query] = false;\n\t\t\treturn next_url;\n\t\t}\n\n\t\t// if the user goes back to a previous query\n\t\t// we need to load the first page again\n\t\tself.clearPagination();\n\n\t\treturn self.settings.firstUrl.call(self,query);\n\t};\n\n\t// clear pagination\n\tself.clearPagination = ():void =>{\n\t\tpagination = {};\n\t};\n\n\t// don't clear the active option (and cause unwanted dropdown scroll)\n\t// while loading more results\n\tself.hook('instead','clearActiveOption',()=>{\n\n\t\tif( loading_more ){\n\t\t\treturn;\n\t\t}\n\n\t\treturn orig_clearActiveOption.call(self);\n\t});\n\n\t// override the canLoad method\n\tself.hook('instead','canLoad',(query:string)=>{\n\n\t\t// first time the query has been seen\n\t\tif( !(query in pagination) ){\n\t\t\treturn orig_canLoad.call(self,query);\n\t\t}\n\n\t\treturn canLoadMore(query);\n\t});\n\n\n\t// wrap the load\n\tself.hook('instead','loadCallback',( options:TomOption[], optgroups:TomOption[])=>{\n\n\t\tif( !loading_more ){\n\t\t\tself.clearOptions(clearFilter);\n\t\t}else if( load_more_opt ){\n\t\t\tconst first_option = options[0];\n\t\t\tif( first_option !== undefined ){\n\t\t\t\tload_more_opt.dataset.value\t\t= first_option[self.settings.valueField];\n\t\t\t}\n\t\t}\n\n\t\torig_loadCallback.call( self, options, optgroups);\n\n\t\t// After the initial preload (empty query), update default_values to include\n\t\t// preloaded options, not just the HTML <option> elements captured on initialize\n\t\tif( !loading_more && !default_values_loaded ){\n\t\t\tdefault_values_loaded = true;\n\t\t\tif( self.lastValue === '' ){\n\t\t\t\tdefault_values = Object.keys(self.options);\n\t\t\t\tdefault_pagination = pagination[''];\n\t\t\t}\n\t\t}\n\n\t\tloading_more = false;\n\t});\n\n\n\t// as the “loading_more” element will be removed from the dropdown,\n\t// we activate the previous option if needed\n\t// to avoid the dropdown being scrolled back to the first one\n\tself.hook('before','refreshOptions',()=>{\n\n\t\tif (self.activeOption && \"option\" !== self.activeOption.getAttribute(\"role\")) {\n\t\t\tself.setActiveOption(self.activeOption.previousElementSibling as HTMLElement);\n\t\t}\n\n\t});\n\n\n\t// add templates to dropdown\n\t//\tloading_more if we have another url in the queue\n\t//\tno_more_results if we don't have another url in the queue\n\tself.hook('after','refreshOptions',()=>{\n\n\t\tconst query\t\t= self.lastValue;\n\t\tvar option;\n\n\t\tif( canLoadMore(query) ){\n\n\t\t\toption = self.render('loading_more',{query:query});\n\t\t\tif( option ){\n\t\t\t\toption.setAttribute('data-selectable',''); // so that navigating dropdown with [down] keypresses can navigate to this node\n\t\t\t\tload_more_opt = option;\n\t\t\t}\n\n\t\t}else if( (query in pagination) && !dropdown_content.querySelector('.no-results') ){\n\t\t\toption = self.render('no_more_results',{query:query});\n\t\t}\n\n\t\tif( option ){\n\t\t\taddClasses(option,self.settings.optionClass);\n\t\t\tdropdown_content.append( option );\n\t\t}\n\n\t});\n\n\n\t// Restore preloaded options and pagination when clearing search\n\tconst restoreDefaults = ():void => {\n\t\tif( !default_values_loaded ) {\n\t\t\treturn;\n\t\t}\n\t\tself.clearOptions(clearFilter);\n\t\tif( default_pagination ) {\n\t\t\tpagination[''] = default_pagination;\n\t\t}\n\t};\n\n\tself.on('type',(query:string) => {\n\t\tif( query === '' ){\n\t\t\trestoreDefaults();\n\t\t\tself.refreshOptions(false);\n\t\t}\n\t});\n\n\tself.on('dropdown_close', restoreDefaults);\n\n\t// add scroll listener and default templates\n\tself.on('initialize',()=>{\n\t\tdefault_values = Object.keys(self.options);\n\t\tdropdown_content = self.dropdown_content;\n\n\t\t// default templates\n\t\tself.settings.render = Object.assign({}, {\n\t\t\tloading_more:() => {\n\t\t\t\treturn `<div class=\"loading-more-results\">Loading more results ... </div>`;\n\t\t\t},\n\t\t\tno_more_results:() =>{\n\t\t\t\treturn `<div class=\"no-more-results\">No more results</div>`;\n\t\t\t}\n\t\t},self.settings.render);\n\n\n\t\t// watch dropdown content scroll position\n\t\tdropdown_content.addEventListener('scroll',()=>{\n\n\t\t\tif( !self.settings.shouldLoadMore.call(self) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// !important: this will get checked again in load() but we still need to check here otherwise loading_more will be set to true\n\t\t\tif( !canLoadMore(self.lastValue) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// don't call load() too much\n\t\t\tif( loading_more ) return;\n\n\n\t\t\tloading_more = true;\n\t\t\tself.load.call(self,self.lastValue);\n\t\t});\n\t});\n\n};\n","import TomSelect from './tom-select.ts';\n\nimport change_listener from './plugins/change_listener/plugin.ts';\nimport checkbox_options from './plugins/checkbox_options/plugin.ts';\nimport clear_button from './plugins/clear_button/plugin.ts';\nimport drag_drop from './plugins/drag_drop/plugin.ts';\nimport dropdown_header from './plugins/dropdown_header/plugin.ts';\nimport caret_position from './plugins/caret_position/plugin.ts';\nimport dropdown_input from './plugins/dropdown_input/plugin.ts';\nimport input_autogrow from './plugins/input_autogrow/plugin.ts';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin.ts';\nimport no_active_items from './plugins/no_active_items/plugin.ts';\nimport optgroup_columns from './plugins/optgroup_columns/plugin.ts';\nimport remove_button from './plugins/remove_button/plugin.ts';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin.ts';\nimport virtual_scroll from './plugins/virtual_scroll/plugin.ts';\n\nTomSelect.define('change_listener', change_listener);\nTomSelect.define('checkbox_options', checkbox_options);\nTomSelect.define('clear_button', clear_button);\nTomSelect.define('drag_drop', drag_drop);\nTomSelect.define('dropdown_header', dropdown_header);\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('input_autogrow', input_autogrow);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('no_active_items', no_active_items);\nTomSelect.define('optgroup_columns', optgroup_columns);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\nTomSelect.define('virtual_scroll', virtual_scroll);\n\nexport default TomSelect;\n"],"names":["forEvents","events","callback","split","forEach","event","MicroEvent","constructor","_events","on","fct","event_array","push","off","n","arguments","length","undefined","splice","indexOf","trigger","args","self","apply","MicroPlugin","Interface","plugins","names","settings","requested","loaded","define","name","fn","initializePlugins","key","queue","Array","isArray","plugin","options","hasOwnProperty","shift","require","loadPlugin","Error","iterate","hash_key","value","get_hash","escape_html","str","replace","timeout","window","setTimeout","call","loadDebounce","delay","loading","Math","max","clearTimeout","loadedSearches","debounce_events","types","type","event_args","getSelection","input","start","selectionStart","selectionEnd","preventDefault","evt","stop","stopPropagation","addEvent","target","addEventListener","isKeyDown","key_name","count","altKey","ctrlKey","shiftKey","metaKey","getId","el","id","existing_id","getAttribute","setAttribute","addSlashes","append","parent","node","object","getDom","query","jquery","HTMLElement","isHtmlString","tpl","document","createElement","innerHTML","trim","content","firstChild","querySelector","arg","escapeQuery","triggerEvent","dom_el","event_name","createEvent","initEvent","dispatchEvent","applyCSS","css","Object","assign","style","addClasses","elmts","classes","norm_classes","classesArray","castAsArray","map","cls","classList","add","removeClasses","remove","_classes","concat","filter","Boolean","parentMatch","selector","wrapper","contains","matches","parentNode","getTail","list","direction","isEmptyObject","obj","keys","nodeIndex","amongst","nodeName","i","previousElementSibling","setAttr","attrs","val","attr","removeAttribute","replaceNode","existing","replacement","replaceChild","highlight","element","regex","RegExp","highlightText","match","data","spannode","className","middlebit","splitText","index","middleclone","cloneNode","appendChild","highlightChildren","nodeType","childNodes","test","tagName","from","highlightRecursive","removeHighlight","elements","querySelectorAll","prototype","normalize","KEY_A","KEY_RETURN","KEY_ESC","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_BACKSPACE","KEY_DELETE","KEY_TAB","IS_MAC","navigator","userAgent","KEY_SHORTCUT","optgroups","delimiter","splitOn","persist","diacritics","create","createOnBlur","createFilter","clearAfterSelect","openOnFocus","shouldOpen","maxOptions","maxItems","hideSelected","duplicates","addPrecedence","selectOnTab","preload","allowEmptyOption","refreshThrottle","loadThrottle","loadingClass","dataAttr","optgroupField","valueField","labelField","disabledField","optgroupLabelField","optgroupValueField","lockOptgroupOrder","sortField","searchField","searchConjunction","mode","wrapperClass","controlClass","dropdownClass","dropdownContentClass","itemClass","optionClass","dropdownParent","controlInput","copyClassesToDropdown","placeholder","hidePlaceholder","shouldLoad","render","getSettings","settings_user","defaults","attr_data","field_label","field_value","field_disabled","field_optgroup","field_optgroup_label","field_optgroup_value","tag_name","toLowerCase","option","textContent","settings_element","items","init_select","optionsMap","group_count","$order","readData","dataset","json","JSON","parse","addOption","group","arr","option_data","disabled","$option","selected","addGroup","optgroup","optgroup_data","children","hasAttribute","child","init_textbox","data_raw","_input$value$trim","_input$value","values","opt","instance_i","TomSelect","input_arg","user_settings","order","isOpen","isDisabled","isReadOnly","isInvalid","isValid","isLocked","isFocused","isInputHidden","isSetup","isDropdownContentStale","ignoreFocus","ignoreHover","hasOptions","lastValue","caretPos","activeOption","activeItems","userOptions","refreshTimeout","dir","tomselect","computedStyle","getComputedStyle","getPropertyValue","tabIndex","is_select_tag","rtl","inputId","isRequired","required","sifter","Sifter","setupCallbacks","setupTemplates","control","dropdown","_render","dropdown_content","inputMode","control_input","focus_node","setup","passive_event","passive","listboxId","role","control_id","label","label_click","focus","bind","for","label_id","width","minWidth","maxWidth","classes_plugins","join","multiple","escape_regex","load","e","target_match","onOptionHover","capture","onOptionSelect","onItemSelect","onClick","onKeyDown","onKeyPress","onInput","onBlur","onFocus","onPaste","doc_mousedown","composedPath","blur","inputState","win_scroll","positionDropdown","input_invalid","refreshState","_destroy","removeEventListener","revertSettings","insertAdjacentElement","sync","refreshItems","close","onChange","setupOptions","addOptions","registerOptionGroup","templates","optgroup_header","escape","item","option_create","no_results","not_loading","callbacks","get_settings","setValue","disable","readOnly","setReadOnly","enable","lastQuery","clearActiveItems","onMouseDown","pastedText","inputValue","splitInput","piece","hash","addItem","createItem","character","String","fromCharCode","keyCode","which","constants","selectAll","open","next","getAdjacent","setActiveOption","prev","canSelect","activeElement","advanceSelection","deleteSelection","_onInput","refreshOptions","wasFocused","hasFocus","deactivate","setActiveItem","setCaret","parentElement","closeAfterSelect","setTextboxValue","canLoad","loadCallback","clearActiveOption","changed","getValue","silent","clear","addItems","setMaxItems","eventName","begin","end","swap","last","getLastActive","setActiveItemClass","removeActiveItem","last_active","idx","scroll","scrollToOption","behavior","height_menu","clientHeight","scrollTop","height_item","offsetHeight","y","getBoundingClientRect","top","scrollBehavior","controlChildren","toggle","focusTarget","offsetWidth","root","getRootNode","getScoreFunction","getSearchOptions","sort","field","fields","conjunction","nesting","search","result","calculateScore","score","currentResults","hashed","triggerDropdown","j","k","html","has_create_option","active_group","groups","groups_order","same_query","results","active_option","show_dropdown","closest","min","getGroupFragment","group_order_i","order_group","fragment","group_fragment","createDocumentFragment","opt_value","opt_hash","option_el","getOption","includes","self_optgroup","optionGroupRegister","regGroup","$id","toString","a","b","group_order","group_heading","group_options","header","group_html","tokens","tok","add_template","template","insertBefore","canCreate","active_index","selectable","user_created","updateOption","dat","registerOption","addOptionGroup","hashed_id","removeOptionGroup","clearCache","clearOptionGroups","item_new","index_item","value_old","value_new","data_old","getItem","uncacheValue","option_new","removeOption","removeItem","clearOptions","boundFilter","clearFilter","$div","all","x","last_item","isPending","wasFull","isFull","insertAtCaret","updateOriginalInput","caret","output","lock","created","unlock","refreshValidityState","wrap_classList","validity","valid","opts","empty_option","has_selected","AddSelected","reuse_opt","visibility","display","context","rect","scrollY","left","scrollX","selection","tail","rm_items","rm_item","shouldDelete","pop","onDelete","adjacent","nextElementSibling","moveCaret","new_pos","setLocked","setDisabled","destroy","templateName","hook","when","method","new_fn","orig_method","result_new","orig_onOptionSelect","cbOptions","checkedClassNames","uncheckedClassNames","UpdateChecked","checkbox","toCheck","checked","UpdateCheckbox","HTMLInputElement","orig_render_option","rendered","prepend","title","tabindex","button","insertAfter","referenceNode","newNode","_referenceNode$parent","nextSibling","_referenceNode$parent2","isBefore","_newNode","orig_lock","orig_unlock","sortable","drag_item","orig_render_item","mousedown","dragStart","dragOver","moveitem","dragLeave","targetitem","dragitem","dragend","_drag_item","headerClass","titleRowClass","labelClass","closeClass","close_link","_self$input","div","orig_onBlur","relatedTarget","preventScroll","test_input","cssText","transfer_styles","style_name","resize","clientWidth","orig_deleteSelection","orig_keydown","previousSibling","close_button","text","orig_canLoad","orig_clearActiveOption","orig_loadCallback","pagination","loading_more","load_more_opt","default_values","default_values_loaded","default_pagination","shouldLoadMore","scroll_percent","scrollHeight","firstUrl","canLoadMore","setNextUrl","next_url","getUrl","clearPagination","first_option","restoreDefaults","no_more_results","change_listener","checkbox_options","clear_button","drag_drop","dropdown_header","caret_position","dropdown_input","input_autogrow","no_backspace_delete","no_active_items","optgroup_columns","remove_button","restore_on_backspace","virtual_scroll"],"mappings":"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","x_google_ignoreList":[2,3,4,5,6]}