From 22cb96ea3afc040a4d098e8395350093d23eea02 Mon Sep 17 00:00:00 2001 From: Josh Schmidt Date: Thu, 25 Mar 2021 15:44:55 -0600 Subject: [PATCH] v1.4.3 Release --- dist/css/tom-select.bootstrap3.css | 2 +- dist/css/tom-select.bootstrap4.css | 2 +- dist/css/tom-select.bootstrap5.css | 2 +- dist/css/tom-select.css | 2 +- dist/css/tom-select.default.css | 2 +- dist/esm/constants.js | 2 +- dist/esm/contrib/highlight.js | 2 +- dist/esm/contrib/microevent.js | 2 +- dist/esm/contrib/microplugin.js | 2 +- dist/esm/contrib/sifter.js | 2 +- dist/esm/defaults.js | 2 +- dist/esm/getSettings.js | 2 +- dist/esm/plugins/change_listener/plugin.js | 2 +- dist/esm/plugins/checkbox_options/plugin.js | 2 +- dist/esm/plugins/clear_button/plugin.js | 2 +- dist/esm/plugins/drag_drop/plugin.js | 2 +- dist/esm/plugins/dropdown_header/plugin.js | 2 +- dist/esm/plugins/dropdown_input/plugin.js | 2 +- dist/esm/plugins/input_autogrow/plugin.js | 2 +- dist/esm/plugins/no_active_items/plugin.js | 2 +- .../esm/plugins/no_backspace_delete/plugin.js | 2 +- dist/esm/plugins/optgroup_columns/plugin.js | 2 +- dist/esm/plugins/remove_button/plugin.js | 2 +- .../plugins/restore_on_backspace/plugin.js | 2 +- dist/esm/tom-select.complete.js | 2 +- dist/esm/tom-select.js | 25 ++- dist/esm/tom-select.js.map | 2 +- dist/esm/utils.js | 2 +- dist/esm/vanilla.js | 2 +- dist/js/plugins/change_listener.js | 2 +- dist/js/plugins/checkbox_options.js | 2 +- dist/js/plugins/clear_button.js | 2 +- dist/js/plugins/drag_drop.js | 2 +- dist/js/plugins/dropdown_header.js | 2 +- dist/js/plugins/dropdown_input.js | 2 +- dist/js/plugins/input_autogrow.js | 2 +- dist/js/plugins/no_active_items.js | 2 +- dist/js/plugins/no_backspace_delete.js | 2 +- dist/js/plugins/optgroup_columns.js | 2 +- dist/js/plugins/remove_button.js | 2 +- dist/js/plugins/restore_on_backspace.js | 2 +- dist/js/tom-select.base.js | 25 ++- dist/js/tom-select.base.js.map | 2 +- dist/js/tom-select.base.min.js | 154 +++++++++--------- dist/js/tom-select.base.min.js.map | 2 +- dist/js/tom-select.complete.js | 25 ++- dist/js/tom-select.complete.js.map | 2 +- dist/js/tom-select.complete.min.js | 6 +- dist/js/tom-select.complete.min.js.map | 2 +- dist/js/tom-select.popular.js | 25 ++- dist/js/tom-select.popular.js.map | 2 +- dist/js/tom-select.popular.min.js | 6 +- dist/js/tom-select.popular.min.js.map | 2 +- dist/scss/tom-select.scss | 2 +- dist/types/tom-select.d.ts | 2 +- package.json | 2 +- 56 files changed, 173 insertions(+), 191 deletions(-) diff --git a/dist/css/tom-select.bootstrap3.css b/dist/css/tom-select.bootstrap3.css index 1ecfd2ca..b20c94b2 100644 --- a/dist/css/tom-select.bootstrap3.css +++ b/dist/css/tom-select.bootstrap3.css @@ -1,5 +1,5 @@ /** - * tom-select.css (v1.4.2) + * tom-select.css (v1.4.3) * Copyright (c) contributors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this diff --git a/dist/css/tom-select.bootstrap4.css b/dist/css/tom-select.bootstrap4.css index 0dd03354..ccca8db9 100644 --- a/dist/css/tom-select.bootstrap4.css +++ b/dist/css/tom-select.bootstrap4.css @@ -2,7 +2,7 @@ * Tom Select bootstrap 4 */ /** - * tom-select.css (v1.4.2) + * tom-select.css (v1.4.3) * Copyright (c) contributors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this diff --git a/dist/css/tom-select.bootstrap5.css b/dist/css/tom-select.bootstrap5.css index 15d6cb3d..507ac3e2 100644 --- a/dist/css/tom-select.bootstrap5.css +++ b/dist/css/tom-select.bootstrap5.css @@ -2,7 +2,7 @@ * Tom Select bootstrap 5 */ /** - * tom-select.css (v1.4.2) + * tom-select.css (v1.4.3) * Copyright (c) contributors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this diff --git a/dist/css/tom-select.css b/dist/css/tom-select.css index 7900534f..6ba45003 100644 --- a/dist/css/tom-select.css +++ b/dist/css/tom-select.css @@ -1,5 +1,5 @@ /** - * tom-select.css (v1.4.2) + * tom-select.css (v1.4.3) * Copyright (c) contributors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this diff --git a/dist/css/tom-select.default.css b/dist/css/tom-select.default.css index b3c39519..b9e0af8a 100644 --- a/dist/css/tom-select.default.css +++ b/dist/css/tom-select.default.css @@ -1,5 +1,5 @@ /** - * tom-select.css (v1.4.2) + * tom-select.css (v1.4.3) * Copyright (c) contributors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this diff --git a/dist/esm/constants.js b/dist/esm/constants.js index c8ceed89..4b5e5f72 100644 --- a/dist/esm/constants.js +++ b/dist/esm/constants.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/contrib/highlight.js b/dist/esm/contrib/highlight.js index 2bed01f7..486c1c19 100644 --- a/dist/esm/contrib/highlight.js +++ b/dist/esm/contrib/highlight.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/contrib/microevent.js b/dist/esm/contrib/microevent.js index 6258696a..93999be4 100644 --- a/dist/esm/contrib/microevent.js +++ b/dist/esm/contrib/microevent.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/contrib/microplugin.js b/dist/esm/contrib/microplugin.js index fb86c3e0..8afc5b9f 100644 --- a/dist/esm/contrib/microplugin.js +++ b/dist/esm/contrib/microplugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/contrib/sifter.js b/dist/esm/contrib/sifter.js index 3dc1d96b..b7a63a22 100644 --- a/dist/esm/contrib/sifter.js +++ b/dist/esm/contrib/sifter.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/defaults.js b/dist/esm/defaults.js index a6685c92..8d878aca 100644 --- a/dist/esm/defaults.js +++ b/dist/esm/defaults.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/getSettings.js b/dist/esm/getSettings.js index 5ac10093..6af4ae7c 100644 --- a/dist/esm/getSettings.js +++ b/dist/esm/getSettings.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/change_listener/plugin.js b/dist/esm/plugins/change_listener/plugin.js index 97fe76d2..2244b1ee 100644 --- a/dist/esm/plugins/change_listener/plugin.js +++ b/dist/esm/plugins/change_listener/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/checkbox_options/plugin.js b/dist/esm/plugins/checkbox_options/plugin.js index 24a6b611..4827f8b2 100644 --- a/dist/esm/plugins/checkbox_options/plugin.js +++ b/dist/esm/plugins/checkbox_options/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/clear_button/plugin.js b/dist/esm/plugins/clear_button/plugin.js index 0f1b5cda..abdd14cd 100644 --- a/dist/esm/plugins/clear_button/plugin.js +++ b/dist/esm/plugins/clear_button/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/drag_drop/plugin.js b/dist/esm/plugins/drag_drop/plugin.js index 093b02db..0f33a1f0 100644 --- a/dist/esm/plugins/drag_drop/plugin.js +++ b/dist/esm/plugins/drag_drop/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/dropdown_header/plugin.js b/dist/esm/plugins/dropdown_header/plugin.js index b1a7321e..abea8e70 100644 --- a/dist/esm/plugins/dropdown_header/plugin.js +++ b/dist/esm/plugins/dropdown_header/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/dropdown_input/plugin.js b/dist/esm/plugins/dropdown_input/plugin.js index e8a1848a..0d88abff 100644 --- a/dist/esm/plugins/dropdown_input/plugin.js +++ b/dist/esm/plugins/dropdown_input/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/input_autogrow/plugin.js b/dist/esm/plugins/input_autogrow/plugin.js index f63c8ea5..3a65b219 100644 --- a/dist/esm/plugins/input_autogrow/plugin.js +++ b/dist/esm/plugins/input_autogrow/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/no_active_items/plugin.js b/dist/esm/plugins/no_active_items/plugin.js index 0500affc..a20c24fe 100644 --- a/dist/esm/plugins/no_active_items/plugin.js +++ b/dist/esm/plugins/no_active_items/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/no_backspace_delete/plugin.js b/dist/esm/plugins/no_backspace_delete/plugin.js index 3dcfc309..6dbd1ac5 100644 --- a/dist/esm/plugins/no_backspace_delete/plugin.js +++ b/dist/esm/plugins/no_backspace_delete/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/optgroup_columns/plugin.js b/dist/esm/plugins/optgroup_columns/plugin.js index d1e3d4b0..f458496e 100644 --- a/dist/esm/plugins/optgroup_columns/plugin.js +++ b/dist/esm/plugins/optgroup_columns/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/remove_button/plugin.js b/dist/esm/plugins/remove_button/plugin.js index b68112ee..2570117b 100644 --- a/dist/esm/plugins/remove_button/plugin.js +++ b/dist/esm/plugins/remove_button/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/plugins/restore_on_backspace/plugin.js b/dist/esm/plugins/restore_on_backspace/plugin.js index 58a1e348..13e96919 100644 --- a/dist/esm/plugins/restore_on_backspace/plugin.js +++ b/dist/esm/plugins/restore_on_backspace/plugin.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/tom-select.complete.js b/dist/esm/tom-select.complete.js index 968864b7..dbef6862 100644 --- a/dist/esm/tom-select.complete.js +++ b/dist/esm/tom-select.complete.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/tom-select.js b/dist/esm/tom-select.js index 136572d1..2086cf31 100644 --- a/dist/esm/tom-select.js +++ b/dist/esm/tom-select.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ @@ -2277,29 +2277,26 @@ class TomSelect extends MicroPlugin(MicroEvent) { */ - setCaret(i) { + setCaret(new_pos) { var self = this; if (self.settings.mode === 'single' || self.settings.controlInput) { - i = self.items.length; + new_pos = self.items.length; } else { - i = Math.max(0, Math.min(self.items.length, i)); + new_pos = Math.max(0, Math.min(self.items.length, new_pos)); - if (i != self.caretPos && !self.isPending) { - var j, - children = self.controlChildren(); - - for (j in children) { - if (j < i) { - self.control_input.insertAdjacentElement('beforebegin', children[j]); + if (new_pos != self.caretPos && !self.isPending) { + self.controlChildren().forEach((child, j) => { + if (j < new_pos) { + self.control_input.insertAdjacentElement('beforebegin', child); } else { - self.control.appendChild(children[j]); + self.control.appendChild(child); } - } + }); } } - self.caretPos = i; + self.caretPos = new_pos; } /** * Return list of item dom elements diff --git a/dist/esm/tom-select.js.map b/dist/esm/tom-select.js.map index b2948bab..8ed1f006 100644 --- a/dist/esm/tom-select.js.map +++ b/dist/esm/tom-select.js.map @@ -1 +1 @@ -{"version":3,"file":"tom-select.js","sources":["../../src/tom-select.ts"],"sourcesContent":["\nimport MicroEvent from './contrib/microevent.js';\nimport MicroPlugin from './contrib/microplugin.js';\nimport Sifter from './contrib/sifter.js';\nimport { TomSettings } from './types/settings';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback } from './types/index';\nimport {highlight, removeHighlight} from './contrib/highlight.js';\nimport * as constants from './constants.js';\nimport getSettings from './getSettings.js';\nimport {\n\thash_key,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\tisKeyDown,\n\tgetId\n} from './utils';\n\nimport {\n\tgetDom,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr\n} from './vanilla';\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\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 tab_key\t\t\t\t\t: boolean = false;\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false;\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 ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreBlur\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t: ReturnType = null;\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: HTMLElement = null;\n\tpublic activeItems\t\t\t\t: HTMLElement[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tprivate options_i\t\t\t\t: number = 0;\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\tpublic renderCache\t\t\t\t: {'item':{[key:string]:HTMLElement},'option':{[key:string]:HTMLElement}} = {'item':{},'option':{}};\n\n\n\n\tconstructor( input_arg: string|TomInput, settings: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\n\t\tinput.tomselect\t\t\t= this;\n\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\tthis.settings\t\t\t= getSettings( input, 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// debounce user defined load() if loadThrottle > 0\n\t\tif( this.settings.load && this.settings.loadThrottle ){\n\t\t\tthis.settings.load = loadDebounce(this.settings.load,this.settings.loadThrottle)\n\t\t}\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: this.settings.diacritics});\n\n\t\tthis.setupOptions(this.settings.options,this.settings.optgroups);\n\t\tdelete this.settings.optgroups;\n\t\tdelete this.settings.options;\n\n\n\t\t// option-dependent defaults\n\t\tthis.settings.mode = this.settings.mode || (this.settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof this.settings.hideSelected !== 'boolean') {\n\t\t\tthis.settings.hideSelected = this.settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof this.settings.hidePlaceholder !== 'boolean' ){\n\t\t\tthis.settings.hidePlaceholder = this.settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = this.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\tthis.settings.createFilter = (input) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tthis.settings.createFilter = () => true;\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(this.settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\t\tthis.setup();\n\t}\n\n\n\t// methods\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n\t/**\n\t * Creates all elements and sets up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\n\t\tvar self = this;\n\t\tvar settings:TomSettings = self.settings;\n\t\tvar wrapper: HTMLElement;\n\t\tvar control: HTMLElement;\n\t\tvar control_input: HTMLInputElement;\n\t\tvar dropdown: HTMLElement;\n\t\tvar dropdown_content: HTMLElement;\n\t\tvar inputMode: string;\n\t\tvar classes;\n\t\tvar classes_plugins;\n\t\tvar input\t\t\t\t\t= self.input;\n\t\tvar control_id: string;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId: string\t\t= self.inputId +'-ts-dropdown';\n\n\n\n\t\tinputMode\t\t\t= self.settings.mode;\n\t\tclasses\t\t\t\t= input.getAttribute('class') || '';\n\n\t\twrapper\t\t\t\t= getDom('
');\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\tcontrol\t\t\t\t= getDom('
');\n\t\taddClasses(control,settings.inputClass);\n\t\twrapper.append(control);\n\n\n\t\tdropdown\t\t\t= self.render('dropdown');\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\n\t\tdropdown_content\t= getDom(`
`);\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tdropdown.append(dropdown_content);\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\t\tif( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('' ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete'];\n\t\t\tfor( const attr of attrs ){\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\t\t}\n\n\t\tif( !settings.controlInput ){\n\t\t\tcontrol_input.tabIndex = input.disabled ? -1 : self.tabIndex;\n\t\t\tcontrol.appendChild( control_input );\n\t\t}\n\n\n\t\tsetAttr(control_input,{\n\t\t\trole:'combobox',\n\t\t\thaspopup:'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tcontrol_id = getId(control_input,self.inputId + '-tomselected');\n\n\t\tlet query = \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tlet label = document.querySelector(query);\n\t\tif( label ){\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tlet label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\n\t\tif(self.settings.copyClassesToDropdown) {\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tclasses_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 (self.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 (!self.settings.splitOn && self.settings.delimiter) {\n\t\t\tvar delimiterEscaped = self.settings.delimiter.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tself.settings.splitOn = new RegExp('\\\\s*' + delimiterEscaped + '+\\\\s*');\n\t\t}\n\n\n\n\t\tself.control\t\t\t= control;\n\t\tself.control_input\t\t= control_input;\n\t\tself.wrapper\t\t\t= wrapper;\n\t\tself.dropdown\t\t\t= dropdown;\n\t\tself.dropdown_content\t= dropdown_content;\n\n\t\tself.control_input.type\t= input.type;\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 ){\n\t\t\t\treturn self.onOptionHover( e as MouseEvent, target_match );\n\t\t\t}\n\t\t}, {capture:true});\n\n\t\taddEvent(control,'mousedown', (evt) => {\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\tif (evt.target == control_input) {\n\t\t\t\tself.clearActiveItems();\n\t\t\t\tevt.stopPropagation();\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '.'+self.settings.itemClass, control);\n\t\t\tif( target_match ){\n\t\t\t\treturn self.onItemSelect(evt as MouseEvent, target_match);\n\t\t\t}\n\t\t\treturn self.onMouseDown(evt as MouseEvent);\n\t\t});\n\n\t\taddEvent(control,'click', (e) => self.onClick(e as KeyboardEvent) );\n\n\n\t\taddEvent(control_input,'keydown',\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\t\taddEvent(control_input,'keyup',\t\t(e) => self.onKeyUp(e as KeyboardEvent) );\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'resize',\t() => self.positionDropdown(), passive_event);\n\t\taddEvent(control_input,'blur',\t\t(e) => self.onBlur(e as MouseEvent) );\n\t\taddEvent(control_input,'focus',\t\t(e) => { self.ignoreBlur = false; self.onFocus(e as MouseEvent) });\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\t// clicking anywhere in the control should not close the dropdown\n\t\t// clicking on an option should selectit\n\t\tvar doc_mousedown = (e:MouseEvent) => {\n\n\t\t\t// if dropdownParent is set, options may not be within self.wrapper\n\t\t\tvar option = parentMatch(e.target as HTMLElement, '[data-selectable]',self.dropdown);\n\n\t\t\t// outside of this instance\n\t\t\tif( !option && !self.wrapper.contains(e.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\t\t\tpreventDefault(e,true);\n\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( e, option );\n\t\t\t}\n\t\t};\n\n\t\tvar win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown',doc_mousedown);\n\t\taddEvent(window,'sroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tself._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('sroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\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\tsetAttr(input,{\thidden:'hidden'});\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\n\t\tself.setValue(settings.items);\n\t\tdelete settings.items;\n\n\t\taddEvent(input,'invalid', (e) => {\n\t\t\tpreventDefault(e);\n\t\t\tif( !self.isInvalid ){\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.refreshState();\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.load('');\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\tfor( const option of options ){\n\t\t\tthis.registerOption(option);\n\t\t}\n\n\n\t\t// build optgroup table\n\t\tfor( const optgroup of optgroups ){\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, escape:typeof escape_html) => {\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 '
' + escape(data[field_optgroup]) + '
';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '
' + escape(data[field_label]) + '
';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '
' + escape(data[field_label]) + '
';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '
Add ' + escape(data.input) + '
';\n\t\t\t},\n\t\t\t'no_results':(data:TomOption,escape:typeof escape_html) => {\n\t\t\t\treturn '
No results found
';\n\t\t\t},\n\t\t\t'loading':(data:TomOption,escape:typeof escape_html) => {\n\t\t\t\treturn '
';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '
';\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'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 * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick(e:MouseEvent|KeyboardEvent) {\n\t\tvar self = this;\n\n\t\t// necessary for mobile webkit devices (manual focus triggering\n\t\t// is ignored unless invoked within a click event)\n\t\t// also necessary to reopen a dropdown that has been closed by\n\t\t// closeAfterSelect\n\t\tif (!self.isFocused || !self.isOpen) {\n\t\t\tself.focus();\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a mouse down event.\n\t *\n\t */\n\tonMouseDown(e:MouseEvent|KeyboardEvent):boolean {\n\t\tvar self = this;\n\n\n\t\tif (self.isFocused) {\n\t\t\tif (self.settings.mode !== 'single') {\n\t\t\t\tself.setActiveItem();\n\t\t\t}\n\t\t\tself.open();\n\t\t\treturn false;\n\t\t} else {\n\t\t\t// give control focus\n\t\t\tsetTimeout(() => self.focus(), 0);\n\t\t}\n\t}\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 paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif (self.isFull() || 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\n\t\t\t// Wait for pasted text to be recognized in value\n\t\t\tsetTimeout(() => {\n\t\t\t\tvar pastedText = self.inputValue();\n\t\t\t\tif(!pastedText.match(self.settings.splitOn)){ return }\n\n\t\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\t\tfor( const piece of splitInput ){\n\t\t\t\t\tself.createItem(piece);\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on 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 keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\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\tself.selectAll();\n\t\t\t\t\treturn;\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// doc_src select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif (self.isOpen && self.activeOption) {\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption);\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\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\t\t\t\tif (self.settings.selectOnTab && self.isOpen && self.activeOption) {\n\t\t\t\t\tself.tab_key = true;\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption);\n\n\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\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\tpreventDefault(e);\n\t\t\t\t\tself.tab_key = false;\n\t\t\t\t}\n\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\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 keyup.\n\t *\n\t */\n\tonKeyUp(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif (self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tvar value = self.inputValue();\n\t\tif (self.lastValue !== value) {\n\t\t\tself.lastValue = value;\n\n\t\t\tif( self.settings.shouldLoad.call(self,value) ){\n\t\t\t\tself.load(value);\n\t\t\t}\n\n\t\t\tself.refreshOptions();\n\t\t\tself.trigger('type', value);\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered on 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) {\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.load('');\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.showInput();\n\t\t\tself.setActiveItem();\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 blur.\n\t *\n\t */\n\tonBlur(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\n\t\tif (!self.ignoreBlur && document.activeElement === self.dropdown_content) {\n\t\t\t// necessary to prevent IE closing the dropdown when the scrollbar is clicked\n\t\t\tself.ignoreBlur = true;\n\t\t\tself.onFocus(e);\n\t\t\treturn;\n\t\t}\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, false, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t * @deprecated v1.3\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){}\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\t\tif( !option ){\n\t\t\treturn;\n\t\t}\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, true, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\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.lastQuery = null;\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.hideSelected && evt.type && /mouse/.test(evt.type)) {\n\t\t\t\t\tself.setActiveOption(self.getOption(value));\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\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?:HTMLElement ):boolean{\n\t\tvar self = this;\n\n\t\tif (self.isLocked) return;\n\t\tif (self.settings.mode === 'multi') {\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t}\n\t}\n\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\n\t\tvar self = this;\n\t\tvar fn = self.settings.load;\n\t\tif (!fn) return;\n\t\tif (self.loadedSearches.hasOwnProperty(value)) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\n\t\tfn.call(self, value, function(options:TomOption[], optgroups:TomOption[]){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tself.lastQuery = null;\n\n\t\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\t\tself.setupOptions(options,optgroups);\n\n\t\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\t\tif (!self.loading) {\n\t\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t\t}\n\n\t\t\tself.trigger('load', options, optgroups);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.1\n\t *\n\t */\n\tonSearchChange(value:string):void {\n\t\tthis.load(value);\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. or \n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tvar i, value, option, self = this;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\t// remove selected attribute from options whose values are not in self.items\n\t\t\tself.input.querySelectorAll('option[selected]').forEach((option:HTMLOptionElement) => {\n\t\t\t\tif( self.items.indexOf(option.value) == -1 ){\n\t\t\t\t\toption.removeAttribute('selected');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// order selected ');\n\t\t\t\t\tself.options[value].$option = option;\n\t\t\t\t}\n\n\t\t\t\tsetAttr(option,{selected:'true'});\n\t\t\t\tself.input.prepend(option);\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.control_input,{'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() {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\tself.hideInput();\n\n\t\t\t// Do not trigger blur while inside a blur event,\n\t\t\t// this fixes some weird tabbing behavior in FF and IE.\n\t\t\t// See #selectize.js#1164\n\t\t\tif( !self.tab_key ){\n\t\t\t\tself.blur(); // close keyboard on iOS\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.control_input,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tself.clearActiveOption();\n\t\tself.refreshState();\n\t\tself.setTextboxValue();\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\tfor( const item of items ){\n\t\t\titem.remove();\n\t\t}\n\n\t\tself.items = [];\n\t\tself.lastQuery = null;\n\t\tself.setCaret(0);\n\t\tself.setActiveItem();\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.showInput();\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\tvar self = this;\n\t\tvar caret\t= Math.min(self.caretPos, self.items.length);\n\t\tvar target\t= self.buffer || self.control;\n\n\t\tif (caret === 0) {\n\t\t\ttarget.insertBefore(el, target.firstChild);\n\t\t} else {\n\t\t\ttarget.insertBefore(el, target.children[caret]);\n\t\t}\n\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, values, 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\tvalues = [];\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\tfor( const item of self.activeItems ){\n\t\t\t\tvalues.push( item.dataset.value );\n\t\t\t}\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tif (direction < 0 && selection.start === 0 && selection.length === 0) {\n\t\t\t\tvalues.push(self.items[self.caretPos - 1]);\n\t\t\t} else if (direction > 0 && selection.start === self.inputValue().length) {\n\t\t\t\tvalues.push(self.items[self.caretPos]);\n\t\t\t}\n\t\t}\n\n\t\t// allow the callback to abort\n\t\tif (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.call(self,values,e) === false)) {\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\t\twhile (values.length) {\n\t\t\tself.removeItem(values.pop());\n\t\t}\n\n\t\tself.showInput();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\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 idx, 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 if( self.isFocused && !self.activeItems.length ){\n\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t// move caret before or after selected items\n\t\t}else{\n\n\t\t\tlast_active\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\t\t\t\tidx = nodeIndex(last_active);\n\t\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\t\tself.setActiveItem();\n\t\t\t}\n\t\t}\n\n\t}\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(i:number) {\n\t\tvar self = this;\n\n\t\tif( self.settings.mode === 'single' || self.settings.controlInput ) {\n\t\t\ti = self.items.length;\n\t\t} else {\n\t\t\ti = Math.max(0, Math.min(self.items.length, i));\n\n\t\t\tif( i != self.caretPos && !self.isPending ){\n\t\t\t\tvar j, children = self.controlChildren();\n\n\t\t\t\tfor( j in children ){\n\t\t\t\t\tif( j < i ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', children[j] );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( children[j] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = i;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():HTMLElement[]{\n\t\treturn Array.from( this.control.getElementsByClassName(this.settings.itemClass) ) as HTMLElement[];\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.close();\n\t\tthis.isLocked = true;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.isLocked = false;\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\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= true;\n\t\tself.control_input.disabled\t\t= true;\n\t\tself.control_input.tabIndex\t\t= -1;\n\t\tself.isDisabled\t\t\t\t\t= true;\n\t\tself.lock();\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\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= false;\n\t\tself.control_input.disabled\t\t= false;\n\t\tself.control_input.tabIndex\t\t= self.tabIndex;\n\t\tself.isDisabled\t\t\t\t\t= false;\n\t\tself.unlock();\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');\n\t\tself.input.removeAttribute('hidden');\n\t\tself.input.required = this.isRequired;\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:string, data?:any ):null|HTMLElement{\n\t\tvar value, id, html;\n\t\tvar self = this;\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tvalue = hash_key(data[self.settings.valueField]);\n\n\t\t\t// pull markup from cache if it exists\n\t\t\tif( self.renderCache[templateName].hasOwnProperty(value) ){\n\t\t\t\treturn self.renderCache[templateName][value];\n\t\t\t}\n\n\t\t}\n\n\t\tvar template = self.settings.render[templateName];\n\t\tif( typeof template !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = template.call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn html;\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\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}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\t\t\t}\n\n\t\t\t// update cache\n\t\t\tself.renderCache[templateName][value] = html;\n\n\t\t}\n\n\t\treturn html;\n\t}\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( templateName?:'item'|'option' ){\n\t\tvar self = this;\n\n\t\tif (templateName === void 0) {\n\t\t\tself.renderCache = {'item':{},'option':{}};\n\t\t} else {\n\t\t\tself.renderCache[templateName] = {};\n\t\t}\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 && (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"],"names":["instance_i","TomSelect","MicroPlugin","MicroEvent","constructor","input_arg","settings","control_input","wrapper","dropdown","control","dropdown_content","order","input","tabIndex","is_select_tag","rtl","inputId","_destroy","sifter","tab_key","isOpen","isDisabled","isRequired","isInvalid","isLocked","isFocused","isInputHidden","isSetup","ignoreFocus","ignoreBlur","hasOptions","currentResults","lastValue","caretPos","loading","loadedSearches","activeOption","activeItems","optgroups","options","options_i","userOptions","items","renderCache","dir","getDom","tomselect","Error","computedStyle","window","getComputedStyle","getPropertyValue","getSettings","tagName","toLowerCase","test","getId","required","load","loadThrottle","loadDebounce","Sifter","diacritics","setupOptions","mode","maxItems","hideSelected","hidePlaceholder","filter","createFilter","RegExp","initializePlugins","plugins","setupCallbacks","setupTemplates","setup","self","inputMode","classes","classes_plugins","control_id","passive_event","passive","listboxId","getAttribute","addClasses","wrapperClass","inputClass","append","render","dropdownClass","dropdownContentClass","dropdownParent","appendChild","controlInput","attrs","attr","setAttr","disabled","role","haspopup","query","escapeQuery","label","document","querySelector","for","label_id","copyClassesToDropdown","style","width","names","length","join","multiple","placeholder","splitOn","delimiter","delimiterEscaped","replace","type","addEvent","e","target_match","parentMatch","target","onOptionHover","capture","evt","clearActiveItems","stopPropagation","inputState","itemClass","onItemSelect","onMouseDown","onClick","onKeyDown","onKeyUp","onKeyPress","positionDropdown","onBlur","onFocus","onPaste","doc_mousedown","option","contains","blur","preventDefault","onOptionSelect","win_scroll","removeEventListener","revertSettings","innerHTML","hidden","insertAdjacentElement","setValue","refreshState","updateOriginalInput","refreshItems","disable","on","onChange","trigger","preload","registerOption","optgroup","registerOptionGroup","field_label","labelField","field_optgroup","optgroupLabelField","templates","data","escape","createElement","className","Object","assign","key","fn","callbacks","focus","setActiveItem","open","setTimeout","triggerEvent","isFull","pastedText","inputValue","match","splitInput","trim","split","piece","createItem","character","String","fromCharCode","keyCode","which","create","constants","isKeyDown","selectAll","close","next","getAdjacent","setActiveOption","prev","advanceSelection","selectOnTab","deleteSelection","value","shouldLoad","call","refreshOptions","wasFocused","showInput","openOnFocus","activeElement","deactivate","setCaret","createOnBlur","parentElement","matches","classList","closeAfterSelect","dataset","lastQuery","addItem","getOption","item","hasOwnProperty","loadingClass","Math","max","clearActiveOption","removeClasses","onSearchChange","setTextboxValue","changed","getValue","hasAttribute","silent","events","debounce_events","clear","addItems","setMaxItems","eventName","i","begin","end","swap","last","getLastActive","Array","prototype","indexOf","children","setActiveItemClass","removeActiveItem","hideInput","last_active","push","idx","splice","height_menu","height_item","y","clientHeight","scrollTop","offsetHeight","getBoundingClientRect","top","removeAttribute","controlChildren","getScoreFunction","getSearchOptions","sort","sortField","field","fields","searchField","conjunction","searchConjunction","nesting","search","result","calculateScore","score","hash_key","id","triggerDropdown","j","k","n","groups_order","html","has_create_option","active","groups","results","active_before_hash","show_dropdown","shouldOpen","maxOptions","min","opt_value","valueField","option_el","toggle","includes","optgroupField","isArray","createDocumentFragment","cloneNode","lockOptgroupOrder","a","b","a_order","$order","b_order","group_options","group_html","group","highlight","removeHighlight","tokens","tok","regex","add_template","template","content","insertBefore","firstChild","canCreate","active_index","addPrecedence","selectable","querySelectorAll","addOption","dat","$id","optgroupValueField","addOptionGroup","hashed_id","removeOptionGroup","clearCache","clearOptionGroups","updateOption","item_new","value_new","index_item","cache_items","cache_options","order_old","getItem","parentNode","remove","removeOption","removeItem","clearOptions","selected","getElementWithValue","direction","all","els","node","el","values","buffer","child","x","isPending","wasFull","duplicates","insertAtCaret","persist","callback","caret","output","lock","created","unlock","refreshValidityState","isEmptyObject","checkValidity","invalid","opts","forEach","$option","escape_html","prepend","applyCSS","visibility","display","context","rect","scrollY","left","scrollX","selection","tail","getSelection","getTail","nodeIndex","start","onDelete","pop","adjacent","nextElementSibling","previousElementSibling","from","getElementsByClassName","enable","destroy","off","templateName","disabledField","optionClass","hook","when","method","new_fn","orig_method","result_new","apply","arguments"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tom-select.js","sources":["../../src/tom-select.ts"],"sourcesContent":["\nimport MicroEvent from './contrib/microevent.js';\nimport MicroPlugin from './contrib/microplugin.js';\nimport Sifter from './contrib/sifter.js';\nimport { TomSettings } from './types/settings';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback } from './types/index';\nimport {highlight, removeHighlight} from './contrib/highlight.js';\nimport * as constants from './constants.js';\nimport getSettings from './getSettings.js';\nimport {\n\thash_key,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\tisKeyDown,\n\tgetId\n} from './utils';\n\nimport {\n\tgetDom,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr\n} from './vanilla';\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\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 tab_key\t\t\t\t\t: boolean = false;\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false;\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 ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreBlur\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t: ReturnType = null;\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: HTMLElement = null;\n\tpublic activeItems\t\t\t\t: HTMLElement[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tprivate options_i\t\t\t\t: number = 0;\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\tpublic renderCache\t\t\t\t: {'item':{[key:string]:HTMLElement},'option':{[key:string]:HTMLElement}} = {'item':{},'option':{}};\n\n\n\n\tconstructor( input_arg: string|TomInput, settings: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\n\t\tinput.tomselect\t\t\t= this;\n\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\tthis.settings\t\t\t= getSettings( input, 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// debounce user defined load() if loadThrottle > 0\n\t\tif( this.settings.load && this.settings.loadThrottle ){\n\t\t\tthis.settings.load = loadDebounce(this.settings.load,this.settings.loadThrottle)\n\t\t}\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: this.settings.diacritics});\n\n\t\tthis.setupOptions(this.settings.options,this.settings.optgroups);\n\t\tdelete this.settings.optgroups;\n\t\tdelete this.settings.options;\n\n\n\t\t// option-dependent defaults\n\t\tthis.settings.mode = this.settings.mode || (this.settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof this.settings.hideSelected !== 'boolean') {\n\t\t\tthis.settings.hideSelected = this.settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof this.settings.hidePlaceholder !== 'boolean' ){\n\t\t\tthis.settings.hidePlaceholder = this.settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = this.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\tthis.settings.createFilter = (input) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tthis.settings.createFilter = () => true;\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(this.settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\t\tthis.setup();\n\t}\n\n\n\t// methods\n\t// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n\t/**\n\t * Creates all elements and sets up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\n\t\tvar self = this;\n\t\tvar settings:TomSettings = self.settings;\n\t\tvar wrapper: HTMLElement;\n\t\tvar control: HTMLElement;\n\t\tvar control_input: HTMLInputElement;\n\t\tvar dropdown: HTMLElement;\n\t\tvar dropdown_content: HTMLElement;\n\t\tvar inputMode: string;\n\t\tvar classes;\n\t\tvar classes_plugins;\n\t\tvar input\t\t\t\t\t= self.input;\n\t\tvar control_id: string;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId: string\t\t= self.inputId +'-ts-dropdown';\n\n\n\n\t\tinputMode\t\t\t= self.settings.mode;\n\t\tclasses\t\t\t\t= input.getAttribute('class') || '';\n\n\t\twrapper\t\t\t\t= getDom('
');\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\tcontrol\t\t\t\t= getDom('
');\n\t\taddClasses(control,settings.inputClass);\n\t\twrapper.append(control);\n\n\n\t\tdropdown\t\t\t= self.render('dropdown');\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\n\t\tdropdown_content\t= getDom(`
`);\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tdropdown.append(dropdown_content);\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\t\tif( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('' ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete'];\n\t\t\tfor( const attr of attrs ){\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\t\t}\n\n\t\tif( !settings.controlInput ){\n\t\t\tcontrol_input.tabIndex = input.disabled ? -1 : self.tabIndex;\n\t\t\tcontrol.appendChild( control_input );\n\t\t}\n\n\n\t\tsetAttr(control_input,{\n\t\t\trole:'combobox',\n\t\t\thaspopup:'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tcontrol_id = getId(control_input,self.inputId + '-tomselected');\n\n\t\tlet query = \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tlet label = document.querySelector(query);\n\t\tif( label ){\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tlet label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\n\t\tif(self.settings.copyClassesToDropdown) {\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tclasses_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 (self.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 (!self.settings.splitOn && self.settings.delimiter) {\n\t\t\tvar delimiterEscaped = self.settings.delimiter.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tself.settings.splitOn = new RegExp('\\\\s*' + delimiterEscaped + '+\\\\s*');\n\t\t}\n\n\n\n\t\tself.control\t\t\t= control;\n\t\tself.control_input\t\t= control_input;\n\t\tself.wrapper\t\t\t= wrapper;\n\t\tself.dropdown\t\t\t= dropdown;\n\t\tself.dropdown_content\t= dropdown_content;\n\n\t\tself.control_input.type\t= input.type;\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 ){\n\t\t\t\treturn self.onOptionHover( e as MouseEvent, target_match );\n\t\t\t}\n\t\t}, {capture:true});\n\n\t\taddEvent(control,'mousedown', (evt) => {\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\tif (evt.target == control_input) {\n\t\t\t\tself.clearActiveItems();\n\t\t\t\tevt.stopPropagation();\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '.'+self.settings.itemClass, control);\n\t\t\tif( target_match ){\n\t\t\t\treturn self.onItemSelect(evt as MouseEvent, target_match);\n\t\t\t}\n\t\t\treturn self.onMouseDown(evt as MouseEvent);\n\t\t});\n\n\t\taddEvent(control,'click', (e) => self.onClick(e as KeyboardEvent) );\n\n\n\t\taddEvent(control_input,'keydown',\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\t\taddEvent(control_input,'keyup',\t\t(e) => self.onKeyUp(e as KeyboardEvent) );\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'resize',\t() => self.positionDropdown(), passive_event);\n\t\taddEvent(control_input,'blur',\t\t(e) => self.onBlur(e as MouseEvent) );\n\t\taddEvent(control_input,'focus',\t\t(e) => { self.ignoreBlur = false; self.onFocus(e as MouseEvent) });\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\t// clicking anywhere in the control should not close the dropdown\n\t\t// clicking on an option should selectit\n\t\tvar doc_mousedown = (e:MouseEvent) => {\n\n\t\t\t// if dropdownParent is set, options may not be within self.wrapper\n\t\t\tvar option = parentMatch(e.target as HTMLElement, '[data-selectable]',self.dropdown);\n\n\t\t\t// outside of this instance\n\t\t\tif( !option && !self.wrapper.contains(e.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\t\t\tpreventDefault(e,true);\n\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( e, option );\n\t\t\t}\n\t\t};\n\n\t\tvar win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown',doc_mousedown);\n\t\taddEvent(window,'sroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tself._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('sroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\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\tsetAttr(input,{\thidden:'hidden'});\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\n\t\tself.setValue(settings.items);\n\t\tdelete settings.items;\n\n\t\taddEvent(input,'invalid', (e) => {\n\t\t\tpreventDefault(e);\n\t\t\tif( !self.isInvalid ){\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.refreshState();\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.load('');\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\tfor( const option of options ){\n\t\t\tthis.registerOption(option);\n\t\t}\n\n\n\t\t// build optgroup table\n\t\tfor( const optgroup of optgroups ){\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, escape:typeof escape_html) => {\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 '
' + escape(data[field_optgroup]) + '
';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '
' + escape(data[field_label]) + '
';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '
' + escape(data[field_label]) + '
';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '
Add ' + escape(data.input) + '
';\n\t\t\t},\n\t\t\t'no_results':(data:TomOption,escape:typeof escape_html) => {\n\t\t\t\treturn '
No results found
';\n\t\t\t},\n\t\t\t'loading':(data:TomOption,escape:typeof escape_html) => {\n\t\t\t\treturn '
';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '
';\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'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 * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick(e:MouseEvent|KeyboardEvent) {\n\t\tvar self = this;\n\n\t\t// necessary for mobile webkit devices (manual focus triggering\n\t\t// is ignored unless invoked within a click event)\n\t\t// also necessary to reopen a dropdown that has been closed by\n\t\t// closeAfterSelect\n\t\tif (!self.isFocused || !self.isOpen) {\n\t\t\tself.focus();\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a mouse down event.\n\t *\n\t */\n\tonMouseDown(e:MouseEvent|KeyboardEvent):boolean {\n\t\tvar self = this;\n\n\n\t\tif (self.isFocused) {\n\t\t\tif (self.settings.mode !== 'single') {\n\t\t\t\tself.setActiveItem();\n\t\t\t}\n\t\t\tself.open();\n\t\t\treturn false;\n\t\t} else {\n\t\t\t// give control focus\n\t\t\tsetTimeout(() => self.focus(), 0);\n\t\t}\n\t}\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 paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif (self.isFull() || 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\n\t\t\t// Wait for pasted text to be recognized in value\n\t\t\tsetTimeout(() => {\n\t\t\t\tvar pastedText = self.inputValue();\n\t\t\t\tif(!pastedText.match(self.settings.splitOn)){ return }\n\n\t\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\t\tfor( const piece of splitInput ){\n\t\t\t\t\tself.createItem(piece);\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on 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 keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\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\tself.selectAll();\n\t\t\t\t\treturn;\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// doc_src select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif (self.isOpen && self.activeOption) {\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption);\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\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\t\t\t\tif (self.settings.selectOnTab && self.isOpen && self.activeOption) {\n\t\t\t\t\tself.tab_key = true;\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption);\n\n\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\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\tpreventDefault(e);\n\t\t\t\t\tself.tab_key = false;\n\t\t\t\t}\n\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\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 keyup.\n\t *\n\t */\n\tonKeyUp(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif (self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tvar value = self.inputValue();\n\t\tif (self.lastValue !== value) {\n\t\t\tself.lastValue = value;\n\n\t\t\tif( self.settings.shouldLoad.call(self,value) ){\n\t\t\t\tself.load(value);\n\t\t\t}\n\n\t\t\tself.refreshOptions();\n\t\t\tself.trigger('type', value);\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered on 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) {\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.load('');\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.showInput();\n\t\t\tself.setActiveItem();\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 blur.\n\t *\n\t */\n\tonBlur(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\n\t\tif (!self.ignoreBlur && document.activeElement === self.dropdown_content) {\n\t\t\t// necessary to prevent IE closing the dropdown when the scrollbar is clicked\n\t\t\tself.ignoreBlur = true;\n\t\t\tself.onFocus(e);\n\t\t\treturn;\n\t\t}\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, false, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t * @deprecated v1.3\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){}\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\t\tif( !option ){\n\t\t\treturn;\n\t\t}\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, true, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\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.lastQuery = null;\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.hideSelected && evt.type && /mouse/.test(evt.type)) {\n\t\t\t\t\tself.setActiveOption(self.getOption(value));\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\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?:HTMLElement ):boolean{\n\t\tvar self = this;\n\n\t\tif (self.isLocked) return;\n\t\tif (self.settings.mode === 'multi') {\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t}\n\t}\n\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\n\t\tvar self = this;\n\t\tvar fn = self.settings.load;\n\t\tif (!fn) return;\n\t\tif (self.loadedSearches.hasOwnProperty(value)) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\n\t\tfn.call(self, value, function(options:TomOption[], optgroups:TomOption[]){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tself.lastQuery = null;\n\n\t\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\t\tself.setupOptions(options,optgroups);\n\n\t\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\t\tif (!self.loading) {\n\t\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t\t}\n\n\t\t\tself.trigger('load', options, optgroups);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.1\n\t *\n\t */\n\tonSearchChange(value:string):void {\n\t\tthis.load(value);\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. or \n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tvar i, value, option, self = this;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\t// remove selected attribute from options whose values are not in self.items\n\t\t\tself.input.querySelectorAll('option[selected]').forEach((option:HTMLOptionElement) => {\n\t\t\t\tif( self.items.indexOf(option.value) == -1 ){\n\t\t\t\t\toption.removeAttribute('selected');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// order selected ');\n\t\t\t\t\tself.options[value].$option = option;\n\t\t\t\t}\n\n\t\t\t\tsetAttr(option,{selected:'true'});\n\t\t\t\tself.input.prepend(option);\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.control_input,{'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() {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\tself.hideInput();\n\n\t\t\t// Do not trigger blur while inside a blur event,\n\t\t\t// this fixes some weird tabbing behavior in FF and IE.\n\t\t\t// See #selectize.js#1164\n\t\t\tif( !self.tab_key ){\n\t\t\t\tself.blur(); // close keyboard on iOS\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.control_input,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tself.clearActiveOption();\n\t\tself.refreshState();\n\t\tself.setTextboxValue();\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\tfor( const item of items ){\n\t\t\titem.remove();\n\t\t}\n\n\t\tself.items = [];\n\t\tself.lastQuery = null;\n\t\tself.setCaret(0);\n\t\tself.setActiveItem();\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.showInput();\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\tvar self = this;\n\t\tvar caret\t= Math.min(self.caretPos, self.items.length);\n\t\tvar target\t= self.buffer || self.control;\n\n\t\tif (caret === 0) {\n\t\t\ttarget.insertBefore(el, target.firstChild);\n\t\t} else {\n\t\t\ttarget.insertBefore(el, target.children[caret]);\n\t\t}\n\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, values, 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\tvalues = [];\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\tfor( const item of self.activeItems ){\n\t\t\t\tvalues.push( item.dataset.value );\n\t\t\t}\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tif (direction < 0 && selection.start === 0 && selection.length === 0) {\n\t\t\t\tvalues.push(self.items[self.caretPos - 1]);\n\t\t\t} else if (direction > 0 && selection.start === self.inputValue().length) {\n\t\t\t\tvalues.push(self.items[self.caretPos]);\n\t\t\t}\n\t\t}\n\n\t\t// allow the callback to abort\n\t\tif (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.call(self,values,e) === false)) {\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\t\twhile (values.length) {\n\t\t\tself.removeItem(values.pop());\n\t\t}\n\n\t\tself.showInput();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\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 idx, 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 if( self.isFocused && !self.activeItems.length ){\n\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t// move caret before or after selected items\n\t\t}else{\n\n\t\t\tlast_active\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\t\t\t\tidx = nodeIndex(last_active);\n\t\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\t\tself.setActiveItem();\n\t\t\t}\n\t\t}\n\n\t}\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\tvar self = this;\n\n\t\tif( self.settings.mode === 'single' || self.settings.controlInput ) {\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\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():HTMLElement[]{\n\t\treturn Array.from( this.control.getElementsByClassName(this.settings.itemClass) ) as HTMLElement[];\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.close();\n\t\tthis.isLocked = true;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.isLocked = false;\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\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= true;\n\t\tself.control_input.disabled\t\t= true;\n\t\tself.control_input.tabIndex\t\t= -1;\n\t\tself.isDisabled\t\t\t\t\t= true;\n\t\tself.lock();\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\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= false;\n\t\tself.control_input.disabled\t\t= false;\n\t\tself.control_input.tabIndex\t\t= self.tabIndex;\n\t\tself.isDisabled\t\t\t\t\t= false;\n\t\tself.unlock();\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');\n\t\tself.input.removeAttribute('hidden');\n\t\tself.input.required = this.isRequired;\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:string, data?:any ):null|HTMLElement{\n\t\tvar value, id, html;\n\t\tvar self = this;\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tvalue = hash_key(data[self.settings.valueField]);\n\n\t\t\t// pull markup from cache if it exists\n\t\t\tif( self.renderCache[templateName].hasOwnProperty(value) ){\n\t\t\t\treturn self.renderCache[templateName][value];\n\t\t\t}\n\n\t\t}\n\n\t\tvar template = self.settings.render[templateName];\n\t\tif( typeof template !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = template.call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn html;\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\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}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\t\t\t}\n\n\t\t\t// update cache\n\t\t\tself.renderCache[templateName][value] = html;\n\n\t\t}\n\n\t\treturn html;\n\t}\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( templateName?:'item'|'option' ){\n\t\tvar self = this;\n\n\t\tif (templateName === void 0) {\n\t\t\tself.renderCache = {'item':{},'option':{}};\n\t\t} else {\n\t\t\tself.renderCache[templateName] = {};\n\t\t}\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 && (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"],"names":["instance_i","TomSelect","MicroPlugin","MicroEvent","constructor","input_arg","settings","control_input","wrapper","dropdown","control","dropdown_content","order","input","tabIndex","is_select_tag","rtl","inputId","_destroy","sifter","tab_key","isOpen","isDisabled","isRequired","isInvalid","isLocked","isFocused","isInputHidden","isSetup","ignoreFocus","ignoreBlur","hasOptions","currentResults","lastValue","caretPos","loading","loadedSearches","activeOption","activeItems","optgroups","options","options_i","userOptions","items","renderCache","dir","getDom","tomselect","Error","computedStyle","window","getComputedStyle","getPropertyValue","getSettings","tagName","toLowerCase","test","getId","required","load","loadThrottle","loadDebounce","Sifter","diacritics","setupOptions","mode","maxItems","hideSelected","hidePlaceholder","filter","createFilter","RegExp","initializePlugins","plugins","setupCallbacks","setupTemplates","setup","self","inputMode","classes","classes_plugins","control_id","passive_event","passive","listboxId","getAttribute","addClasses","wrapperClass","inputClass","append","render","dropdownClass","dropdownContentClass","dropdownParent","appendChild","controlInput","attrs","attr","setAttr","disabled","role","haspopup","query","escapeQuery","label","document","querySelector","for","label_id","copyClassesToDropdown","style","width","names","length","join","multiple","placeholder","splitOn","delimiter","delimiterEscaped","replace","type","addEvent","e","target_match","parentMatch","target","onOptionHover","capture","evt","clearActiveItems","stopPropagation","inputState","itemClass","onItemSelect","onMouseDown","onClick","onKeyDown","onKeyUp","onKeyPress","positionDropdown","onBlur","onFocus","onPaste","doc_mousedown","option","contains","blur","preventDefault","onOptionSelect","win_scroll","removeEventListener","revertSettings","innerHTML","hidden","insertAdjacentElement","setValue","refreshState","updateOriginalInput","refreshItems","disable","on","onChange","trigger","preload","registerOption","optgroup","registerOptionGroup","field_label","labelField","field_optgroup","optgroupLabelField","templates","data","escape","createElement","className","Object","assign","key","fn","callbacks","focus","setActiveItem","open","setTimeout","triggerEvent","isFull","pastedText","inputValue","match","splitInput","trim","split","piece","createItem","character","String","fromCharCode","keyCode","which","create","constants","isKeyDown","selectAll","close","next","getAdjacent","setActiveOption","prev","advanceSelection","selectOnTab","deleteSelection","value","shouldLoad","call","refreshOptions","wasFocused","showInput","openOnFocus","activeElement","deactivate","setCaret","createOnBlur","parentElement","matches","classList","closeAfterSelect","dataset","lastQuery","addItem","getOption","item","hasOwnProperty","loadingClass","Math","max","clearActiveOption","removeClasses","onSearchChange","setTextboxValue","changed","getValue","hasAttribute","silent","events","debounce_events","clear","addItems","setMaxItems","eventName","i","begin","end","swap","last","getLastActive","Array","prototype","indexOf","children","setActiveItemClass","removeActiveItem","hideInput","last_active","push","idx","splice","height_menu","height_item","y","clientHeight","scrollTop","offsetHeight","getBoundingClientRect","top","removeAttribute","controlChildren","getScoreFunction","getSearchOptions","sort","sortField","field","fields","searchField","conjunction","searchConjunction","nesting","search","result","calculateScore","score","hash_key","id","triggerDropdown","j","k","n","groups_order","html","has_create_option","active","groups","results","active_before_hash","show_dropdown","shouldOpen","maxOptions","min","opt_value","valueField","option_el","toggle","includes","optgroupField","isArray","createDocumentFragment","cloneNode","lockOptgroupOrder","a","b","a_order","$order","b_order","group_options","group_html","group","highlight","removeHighlight","tokens","tok","regex","add_template","template","content","insertBefore","firstChild","canCreate","active_index","addPrecedence","selectable","querySelectorAll","addOption","dat","$id","optgroupValueField","addOptionGroup","hashed_id","removeOptionGroup","clearCache","clearOptionGroups","updateOption","item_new","value_new","index_item","cache_items","cache_options","order_old","getItem","parentNode","remove","removeOption","removeItem","clearOptions","selected","getElementWithValue","direction","all","els","node","el","values","buffer","child","x","isPending","wasFull","duplicates","insertAtCaret","persist","callback","caret","output","lock","created","unlock","refreshValidityState","isEmptyObject","checkValidity","invalid","opts","forEach","$option","escape_html","prepend","applyCSS","visibility","display","context","rect","scrollY","left","scrollX","selection","tail","getSelection","getTail","nodeIndex","start","onDelete","pop","adjacent","nextElementSibling","previousElementSibling","new_pos","from","getElementsByClassName","enable","destroy","off","templateName","disabledField","optionClass","hook","when","method","new_fn","orig_method","result_new","apply","arguments"],"mappings":"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"} \ No newline at end of file diff --git a/dist/esm/utils.js b/dist/esm/utils.js index ef28c70c..6a036274 100644 --- a/dist/esm/utils.js +++ b/dist/esm/utils.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/esm/vanilla.js b/dist/esm/vanilla.js index cc498d84..7145de82 100644 --- a/dist/esm/vanilla.js +++ b/dist/esm/vanilla.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/change_listener.js b/dist/js/plugins/change_listener.js index e96af686..94cc6c65 100644 --- a/dist/js/plugins/change_listener.js +++ b/dist/js/plugins/change_listener.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/checkbox_options.js b/dist/js/plugins/checkbox_options.js index 5b4f2f0c..aa134512 100644 --- a/dist/js/plugins/checkbox_options.js +++ b/dist/js/plugins/checkbox_options.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/clear_button.js b/dist/js/plugins/clear_button.js index e8da819c..db184c03 100644 --- a/dist/js/plugins/clear_button.js +++ b/dist/js/plugins/clear_button.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/drag_drop.js b/dist/js/plugins/drag_drop.js index 5171cc04..ec78d04c 100644 --- a/dist/js/plugins/drag_drop.js +++ b/dist/js/plugins/drag_drop.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/dropdown_header.js b/dist/js/plugins/dropdown_header.js index 802e1d95..60c973a9 100644 --- a/dist/js/plugins/dropdown_header.js +++ b/dist/js/plugins/dropdown_header.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/dropdown_input.js b/dist/js/plugins/dropdown_input.js index 0ec3655d..babef428 100644 --- a/dist/js/plugins/dropdown_input.js +++ b/dist/js/plugins/dropdown_input.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/input_autogrow.js b/dist/js/plugins/input_autogrow.js index 6160c20c..2c1056e3 100644 --- a/dist/js/plugins/input_autogrow.js +++ b/dist/js/plugins/input_autogrow.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/no_active_items.js b/dist/js/plugins/no_active_items.js index 86b5a65b..44f03b2b 100644 --- a/dist/js/plugins/no_active_items.js +++ b/dist/js/plugins/no_active_items.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/no_backspace_delete.js b/dist/js/plugins/no_backspace_delete.js index c19b5b00..7aeb248d 100644 --- a/dist/js/plugins/no_backspace_delete.js +++ b/dist/js/plugins/no_backspace_delete.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/optgroup_columns.js b/dist/js/plugins/optgroup_columns.js index 9e7c680a..ab6bf9b3 100644 --- a/dist/js/plugins/optgroup_columns.js +++ b/dist/js/plugins/optgroup_columns.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/remove_button.js b/dist/js/plugins/remove_button.js index f5992cfd..4ade2b67 100644 --- a/dist/js/plugins/remove_button.js +++ b/dist/js/plugins/remove_button.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/plugins/restore_on_backspace.js b/dist/js/plugins/restore_on_backspace.js index c6a49a47..e18eb26a 100644 --- a/dist/js/plugins/restore_on_backspace.js +++ b/dist/js/plugins/restore_on_backspace.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ diff --git a/dist/js/tom-select.base.js b/dist/js/tom-select.base.js index ac13734a..41457603 100644 --- a/dist/js/tom-select.base.js +++ b/dist/js/tom-select.base.js @@ -1,5 +1,5 @@ /** -* Tom Select v1.4.2 +* Tom Select v1.4.3 * Licensed under the Apache License, Version 2.0 (the "License"); */ @@ -3558,29 +3558,26 @@ */ - setCaret(i) { + setCaret(new_pos) { var self = this; if (self.settings.mode === 'single' || self.settings.controlInput) { - i = self.items.length; + new_pos = self.items.length; } else { - i = Math.max(0, Math.min(self.items.length, i)); + new_pos = Math.max(0, Math.min(self.items.length, new_pos)); - if (i != self.caretPos && !self.isPending) { - var j, - children = self.controlChildren(); - - for (j in children) { - if (j < i) { - self.control_input.insertAdjacentElement('beforebegin', children[j]); + if (new_pos != self.caretPos && !self.isPending) { + self.controlChildren().forEach((child, j) => { + if (j < new_pos) { + self.control_input.insertAdjacentElement('beforebegin', child); } else { - self.control.appendChild(children[j]); + self.control.appendChild(child); } - } + }); } } - self.caretPos = i; + self.caretPos = new_pos; } /** * Return list of item dom elements diff --git a/dist/js/tom-select.base.js.map b/dist/js/tom-select.base.js.map index d0658162..7122f27d 100644 --- a/dist/js/tom-select.base.js.map +++ b/dist/js/tom-select.base.js.map @@ -1 +1 @@ -{"version":3,"file":"tom-select.base.js","sources":["../../src/contrib/microevent.js","../../src/contrib/microplugin.js","../../src/contrib/sifter.ts","../../src/contrib/highlight.js","../../src/constants.ts","../../src/defaults.ts","../../src/utils.ts","../../src/getSettings.ts","../../src/vanilla.ts","../../src/tom-select.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\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events,callback){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events, fct){\n\t\tforEvents(events,(event) => {\n\t\t\tthis._events[event] = this._events[event] || [];\n\t\t\tthis._events[event].push(fct);\n\t\t});\n\t}\n\n\toff(events, fct){\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) return delete this._events[event];\n\n\t\t\tif (event in this._events === false) return;\n\t\t\tthis._events[event].splice(this._events[event].indexOf(fct), 1);\n\t\t});\n\t}\n\n\ttrigger(events, ...args){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tif(event in self._events === false) return;\n\t\t\tfor( let fct of self._events[event] ){\n\t\t\t\tfct.apply(self,args );\n\t\t\t}\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 \n */\n\nexport default function MicroPlugin(Interface){\n\n\tInterface.plugins = {};\n\n\n\treturn class mixin extends Interface{\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {string} name\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name, fn){\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\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) {\n\t\t\tvar i, n, key;\n\t\t\tvar self = this;\n\t\t\tvar queue = [];\n\n\t\t\tself.plugins = {\n\t\t\t\tnames : [],\n\t\t\t\tsettings : {},\n\t\t\t\trequested : {},\n\t\t\t\tloaded : {}\n\t\t\t};\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tfor (i = 0, n = plugins.length; i < n; i++) {\n\t\t\t\t\tif (typeof plugins[i] === 'string') {\n\t\t\t\t\t\tqueue.push(plugins[i]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugins[i].name] = plugins[i].options;\n\t\t\t\t\t\tqueue.push(plugins[i].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 (queue.length) {\n\t\t\t\tself.require(queue.shift());\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name) {\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 * @param {string} name\n\t\t */\n\t\trequire(name) {\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 * 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 \n */\n\ntype TOptions = {\n \tfields: string|string[],\n \tsort: any[],\n \tscore?: ()=>any,\n \tfilter?: boolean,\n \tlimit?: number,\n \tsort_empty?: any,\n \tnesting?: boolean,\n\trespect_word_boundaries?: boolean,\n\tconjunction?: string,\n }\n\n\ntype TPrepareObj = {\n\toptions: TOptions,\n\tquery: string,\n\ttokens: any,\n\ttotal: number,\n\titems: any[]\n}\n\n\n\n// utilities\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nvar cmp = function(a, b) {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(String(a || ''));\n\tb = asciifold(String(b || ''));\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\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 * @param {Boolean} nesting Handle nesting or not\n * @return {Object} The resolved property value\n */\nvar getattr = function(obj, name, nesting) {\n if (!obj || !name) return;\n if (!nesting) return obj[name];\n var names = name.split(\".\");\n while(names.length && (obj = obj[names.shift()]));\n return obj;\n};\n\nvar escape_regex = function(str) {\n\treturn (str + '').replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n};\n\nvar DIACRITICS = {\n\t'a': '[aḀḁĂăÂâǍǎȺⱥȦȧẠạÄäÀàÁáĀāÃãÅåąĄÃąĄ]',\n\t'b': '[b␢βΒB฿𐌁ᛒ]',\n\t'c': '[cĆćĈĉČčĊċC̄c̄ÇçḈḉȻȼƇƈɕᴄCc]',\n\t'd': '[dĎďḊḋḐḑḌḍḒḓḎḏĐđD̦d̦ƉɖƊɗƋƌᵭᶁᶑȡᴅDdð]',\n\t'e': '[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀềỄễỂểḜḝḖḗḔḕȆȇẸẹỆệⱸᴇEeɘǝƏƐε]',\n\t'f': '[fƑƒḞḟ]',\n\t'g': '[gɢ₲ǤǥĜĝĞğĢģƓɠĠġ]',\n\t'h': '[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]',\n\t'i': '[iÍíÌìĬĭÎîǏǐÏïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬḭƗɨɨ̆ᵻᶖİiIıɪIi]',\n\t'j': '[jȷĴĵɈɉʝɟʲ]',\n\t'k': '[kƘƙꝀꝁḰḱǨǩḲḳḴḵκϰ₭]',\n\t'l': '[lŁłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅɭȴʟLl]',\n\t'n': '[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ƝɲȠƞᵰᶇɳȵɴNnŊŋ]',\n\t'o': '[oØøÖöÓóÒòÔôǑǒŐőŎŏȮȯỌọƟɵƠơỎỏŌōÕõǪǫȌȍՕօ]',\n\t'p': '[pṔṕṖṗⱣᵽƤƥᵱ]',\n\t'q': '[qꝖꝗʠɊɋꝘꝙq̃]',\n\t'r': '[rŔŕɌɍŘřŖŗṘṙȐȑȒȓṚṛⱤɽ]',\n\t's': '[sŚśṠṡṢṣꞨꞩŜŝŠšŞşȘșS̈s̈]',\n\t't': '[tŤťṪṫŢţṬṭƮʈȚțṰṱṮṯƬƭ]',\n\t'u': '[uŬŭɄʉỤụÜüÚúÙùÛûǓǔŰűŬŭƯưỦủŪūŨũŲųȔȕ∪]',\n\t'v': '[vṼṽṾṿƲʋꝞꝟⱱʋ]',\n\t'w': '[wẂẃẀẁŴŵẄẅẆẇẈẉ]',\n\t'x': '[xẌẍẊẋχ]',\n\t'y': '[yÝýỲỳŶŷŸÿỸỹẎẏỴỵɎɏƳƴ]',\n\t'z': '[zŹźẐẑŽžŻżẒẓẔẕƵƶ]'\n};\n\nvar asciifold = (function() {\n\tvar i, n, k, chunk;\n\tvar foreignletters = '';\n\tvar lookup = {};\n\tfor (k in DIACRITICS) {\n\t\tif (DIACRITICS.hasOwnProperty(k)) {\n\t\t\tchunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1);\n\t\t\tforeignletters += chunk;\n\t\t\tfor (i = 0, n = chunk.length; i < n; i++) {\n\t\t\t\tlookup[chunk.charAt(i)] = k;\n\t\t\t}\n\t\t}\n\t}\n\tvar regexp = new RegExp('[' + foreignletters + ']', 'g');\n\treturn function(str) {\n\t\treturn str.replace(regexp, function(foreignletter) {\n\t\t\treturn lookup[foreignletter];\n\t\t}).toLowerCase();\n\t};\n})();\n\n\nexport default class Sifter{\n\n\tpublic items: []|{};\n\tpublic settings: {diacritics:boolean};\n\n\t/**\n\t * Textually searches arrays and hashes of objects\n\t * by property (or multiple properties). Designed\n\t * specifically for autocomplete.\n\t *\n\t * @constructor\n\t * @param {array|object} items\n\t * @param {object} items\n\t */\n\tconstructor(items, settings) {\n\t\tthis.items = items;\n\t\tthis.settings = settings || {diacritics: true};\n\t};\n\n\t/**\n\t * Splits a search string into an array of individual\n\t * regexps to be used to match results.\n\t *\n\t * @param {string} query\n\t * @returns {array}\n\t */\n\ttokenize(query, respect_word_boundaries) {\n\t\tquery = String(query || '').toLowerCase().trim();\n\t\tif (!query || !query.length) return [];\n\n\t\tvar i, n, regex, letter;\n\t\tvar tokens = [];\n\t\tvar words = query.split(/ +/);\n\n\t\tfor (i = 0, n = words.length; i < n; i++) {\n\t\t\tregex = escape_regex(words[i]);\n\t\t\tif (this.settings.diacritics) {\n\t\t\t\tfor (letter in DIACRITICS) {\n\t\t\t\t\tif (DIACRITICS.hasOwnProperty(letter)) {\n\t\t\t\t\t\tregex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (respect_word_boundaries) regex = \"\\\\b\"+regex\n\t\t\ttokens.push({\n\t\t\t\tstring : words[i],\n\t\t\t\tregex : new RegExp(regex, 'i')\n\t\t\t});\n\t\t}\n\n\t\treturn tokens;\n\t};\n\n\t/**\n\t * Iterates over arrays and hashes.\n\t *\n\t * ```\n\t * this.iterator(this.items, function(item, id) {\n\t * // invoked for each item\n\t * });\n\t * ```\n\t *\n\t * @param {array|object} object\n\t */\n\titerator(object, callback) {\n\t\tvar iterator;\n\t\tif (Array.isArray(object)) {\n\t\t\titerator = Array.prototype.forEach || function(callback) {\n\t\t\t\tfor (var i = 0, n = this.length; i < n; i++) {\n\t\t\t\t\tcallback(this[i], i, this);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\titerator = function(callback) {\n\t\t\t\tfor (var key in this) {\n\t\t\t\t\tif (this.hasOwnProperty(key)) {\n\t\t\t\t\t\tcallback(this[key], key, this);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\titerator.apply(object, [callback]);\n\t};\n\n\t/**\n\t * Returns a function to be used to score individual results.\n\t *\n\t * Good matches will have a higher score than poor matches.\n\t * If an item is not a match, 0 will be returned by the function.\n\t *\n\t * @returns {function}\n\t */\n\tgetScoreFunction(query:string, options?:TOptions ){\n\t\tvar self, fields, tokens, token_count, nesting, search;\n\n\t\tself = this;\n\t\tsearch = self.prepareSearch(query, options);\n\t\ttokens = search.tokens;\n\t\tfields = search.options.fields;\n\t\ttoken_count = tokens.length;\n\t\tnesting = search.options.nesting;\n\n\t\t/**\n\t\t * Calculates how close of a match the\n\t\t * given value is against a search token.\n\t\t *\n\t\t * @param {string} value\n\t\t * @param {object} token\n\t\t * @return {number}\n\t\t */\n\t\tvar scoreValue = function(value, token) {\n\t\t\tvar score, pos;\n\n\t\t\tif (!value) return 0;\n\t\t\tvalue = String(value || '');\n\t\t\tpos = value.search(token.regex);\n\t\t\tif (pos === -1) return 0;\n\t\t\tscore = token.string.length / value.length;\n\t\t\tif (pos === 0) score += 0.5;\n\t\t\treturn score;\n\t\t};\n\n\t\t/**\n\t\t * Calculates the score of an object\n\t\t * against the search query.\n\t\t *\n\t\t * @param {object} token\n\t\t * @param {object} data\n\t\t * @return {number}\n\t\t */\n\t\tvar scoreObject = (function() {\n\t\t\tvar field_count = fields.length;\n\t\t\tif (!field_count) {\n\t\t\t\treturn function() { return 0; };\n\t\t\t}\n\t\t\tif (field_count === 1) {\n\t\t\t\treturn function(token, data) {\n\t\t\t\t\treturn scoreValue(getattr(data, fields[0], nesting), token);\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn function(token, data) {\n\t\t\t\tfor (var i = 0, sum = 0; i < field_count; i++) {\n\t\t\t\t\tsum += scoreValue(getattr(data, fields[i], nesting), token);\n\t\t\t\t}\n\t\t\t\treturn sum / field_count;\n\t\t\t};\n\t\t})();\n\n\t\tif (!token_count) {\n\t\t\treturn function() { return 0; };\n\t\t}\n\t\tif (token_count === 1) {\n\t\t\treturn function(data) {\n\t\t\t\treturn scoreObject(tokens[0], data);\n\t\t\t};\n\t\t}\n\n\t\tif (search.options.conjunction === 'and') {\n\t\t\treturn function(data) {\n\t\t\t\tvar score;\n\t\t\t\tfor (var i = 0, sum = 0; i < token_count; i++) {\n\t\t\t\t\tscore = scoreObject(tokens[i], data);\n\t\t\t\t\tif (score <= 0) return 0;\n\t\t\t\t\tsum += score;\n\t\t\t\t}\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(data) {\n\t\t\t\tfor (var i = 0, sum = 0; i < token_count; i++) {\n\t\t\t\t\tsum += scoreObject(tokens[i], data);\n\t\t\t\t}\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * Returns a function that can be used to compare two\n\t * results, for sorting purposes. If no sorting should\n\t * be performed, `null` will be returned.\n\t *\n\t * @param {string|object} search\n\t * @return function(a,b)\n\t */\n\tgetSortFunction(search, options:TOptions) {\n\t\tvar i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort;\n\n\t\tself = this;\n\t\tsearch = self.prepareSearch(search, options);\n\t\tsort = (!search.query && options.sort_empty) || options.sort;\n\n\t\t/**\n\t\t * Fetches the specified sort field value\n\t\t * from a search result item.\n\t\t *\n\t\t * @param {string} name\n\t\t * @param {object} result\n\t\t * @return {string}\n\t\t */\n\t\tget_field = function(name, result) {\n\t\t\tif (name === '$score') return result.score;\n\t\t\treturn getattr(self.items[result.id], name, options.nesting);\n\t\t};\n\n\t\t// parse options\n\t\tfields = [];\n\t\tif (sort) {\n\t\t\tfor (i = 0, n = sort.length; i < n; i++) {\n\t\t\t\tif (search.query || sort[i].field !== '$score') {\n\t\t\t\t\tfields.push(sort[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// the \"$score\" field is implied to be the primary\n\t\t// sort field, unless it's manually specified\n\t\tif (search.query) {\n\t\t\timplicit_score = true;\n\t\t\tfor (i = 0, n = fields.length; i < n; i++) {\n\t\t\t\tif (fields[i].field === '$score') {\n\t\t\t\t\timplicit_score = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (implicit_score) {\n\t\t\t\tfields.unshift({field: '$score', direction: 'desc'});\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0, n = fields.length; i < n; i++) {\n\t\t\t\tif (fields[i].field === '$score') {\n\t\t\t\t\tfields.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tmultipliers = [];\n\t\tfor (i = 0, n = fields.length; i < n; i++) {\n\t\t\tmultipliers.push(fields[i].direction === 'desc' ? -1 : 1);\n\t\t}\n\n\t\t// build function\n\t\tfields_count = fields.length;\n\t\tif (!fields_count) {\n\t\t\treturn null;\n\t\t} else if (fields_count === 1) {\n\t\t\tfield = fields[0].field;\n\t\t\tmultiplier = multipliers[0];\n\t\t\treturn function(a, b) {\n\t\t\t\treturn multiplier * cmp(\n\t\t\t\t\tget_field(field, a),\n\t\t\t\t\tget_field(field, b)\n\t\t\t\t);\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(a, b) {\n\t\t\t\tvar i, result, field;\n\t\t\t\tfor (i = 0; i < fields_count; i++) {\n\t\t\t\t\tfield = fields[i].field;\n\t\t\t\t\tresult = multipliers[i] * cmp(\n\t\t\t\t\t\tget_field(field, a),\n\t\t\t\t\t\tget_field(field, b)\n\t\t\t\t\t);\n\t\t\t\t\tif (result) return result;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * Parses a search query and returns an object\n\t * with tokens and fields ready to be populated\n\t * with results.\n\t *\n\t */\n\tprepareSearch(query:string|TPrepareObj, options:TOptions):TPrepareObj {\n\t\tif (typeof query === 'object') return query;\n\n\t\toptions = Object.assign({},options);\n\n\t\tvar option_fields = options.fields;\n\t\tvar option_sort = options.sort;\n\t\tvar option_sort_empty = options.sort_empty;\n\n\t\tif (option_fields && !Array.isArray(option_fields)) options.fields = [option_fields];\n\t\tif (option_sort && !Array.isArray(option_sort)) options.sort = [option_sort];\n\t\tif (option_sort_empty && !Array.isArray(option_sort_empty)) options.sort_empty = [option_sort_empty];\n\n\t\treturn {\n\t\t\toptions : options,\n\t\t\tquery : String(query || '').toLowerCase(),\n\t\t\ttokens : this.tokenize(query, options.respect_word_boundaries),\n\t\t\ttotal : 0,\n\t\t\titems : []\n\t\t};\n\t};\n\n\t/**\n\t * Searches through all items and returns a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string, options:TOptions) : TPrepareObj {\n\t\tvar self = this, score, search;\n\t\tvar fn_sort;\n\t\tvar fn_score;\n\n\t\tsearch = this.prepareSearch(query, options);\n\t\toptions = search.options;\n\t\tquery = search.query;\n\n\t\t// generate result scoring function\n\t\tfn_score = options.score || self.getScoreFunction(search);\n\n\t\t// perform search and sort\n\t\tif (query.length) {\n\t\t\tself.iterator(self.items, function(item, id) {\n\t\t\t\tscore = fn_score(item);\n\t\t\t\tif (options.filter === false || score > 0) {\n\t\t\t\t\tsearch.items.push({'score': score, 'id': id});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tself.iterator(self.items, function(item, id) {\n\t\t\t\tsearch.items.push({'score': 1, 'id': id});\n\t\t\t});\n\t\t}\n\n\t\tfn_sort = self.getSortFunction(search, options);\n\t\tif (fn_sort) search.items.sort(fn_sort);\n\n\t\t// apply limits\n\t\tsearch.total = search.items.length;\n\t\tif (typeof options.limit === 'number') {\n\t\t\tsearch.items = search.items.slice(0, options.limit);\n\t\t}\n\n\t\treturn search;\n\t};\n}\n","/**\n * highlight v3 | MIT license | Johann Burkard \n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal 2011-6-24 (added regex)\n * - Modified by Brian Reavis 2012-8-27 (cleanup)\n */\n\nexport function highlight(element, pattern) {\n\tif (typeof pattern === 'string' && !pattern.length) return;\n\tvar regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern;\n\n\tvar highlight = function(node) {\n\t\tvar skip = 0;\n\t\t// Wrap matching part of text node with highlighting , e.g.\n\t\t// Soccer -> Soccer for regex = /soc/i\n\t\tif (node.nodeType === 3) {\n\t\t\tvar pos = node.data.search(regex);\n\t\t\tif (pos >= 0 && node.data.length > 0) {\n\t\t\t\tvar match = node.data.match(regex);\n\t\t\t\tvar spannode = document.createElement('span');\n\t\t\t\tspannode.className = 'highlight';\n\t\t\t\tvar middlebit = node.splitText(pos);\n\t\t\t\tmiddlebit.splitText(match[0].length);\n\t\t\t\tvar middleclone = middlebit.cloneNode(true);\n\t\t\t\tspannode.appendChild(middleclone);\n\t\t\t\tmiddlebit.parentNode.replaceChild(spannode, middlebit);\n\t\t\t\tskip = 1;\n\n\t\t\t}\n\t\t}\n\t\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t\t// is childless,