{"version":3,"file":"selectize.js","mappings":"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","sources":["webpack:///../../../../../node_modules/@selectize/selectize/dist/js/selectize.js","webpack:///../../../../../node_modules/@selectize/selectize/dist/css/selectize.css?59e3","webpack:///../../../../../node_modules/vue-style-loader/lib/listToStyles.js","webpack:///../../../../../node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///external var \"jQuery\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand"],"sourcesContent":["/**\n * Selectize (v0.15.2)\n * https://selectize.dev\n *\n * Copyright (c) 2013-2015 Brian Reavis & contributors\n * Copyright (c) 2020-2023 Selectize Team & 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 * @author Ris Adams \n */\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = factory(require('jquery'));\n } else {\n root.Selectize = factory(root.jQuery);\n }\n}(this, function ($) {\n 'use strict';\nvar highlight = function ($element, pattern) {\n if (typeof pattern === 'string' && !pattern.length) return;\n var regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern;\n\n var highlight = function (node) {\n var skip = 0;\n if (node.nodeType === 3) {\n var pos = node.data.search(regex);\n if (pos >= 0 && node.data.length > 0) {\n var match = node.data.match(regex);\n var spannode = document.createElement('span');\n spannode.className = 'highlight';\n var middlebit = node.splitText(pos);\n var endbit = middlebit.splitText(match[0].length);\n var middleclone = middlebit.cloneNode(true);\n spannode.appendChild(middleclone);\n middlebit.parentNode.replaceChild(spannode, middlebit);\n skip = 1;\n }\n }\n else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && (node.className !== 'highlight' || node.tagName !== 'SPAN')) {\n for (var i = 0; i < node.childNodes.length; ++i) {\n i += highlight(node.childNodes[i]);\n }\n }\n return skip;\n };\n\n return $element.each(function () {\n highlight(this);\n });\n};\n\n$.fn.removeHighlight = function () {\n return this.find(\"span.highlight\").each(function () {\n this.parentNode.firstChild.nodeName;\n var parent = this.parentNode;\n parent.replaceChild(this.firstChild, this);\n parent.normalize();\n }).end();\n};\n\nvar MicroEvent = function () { };\nMicroEvent.prototype = {\n on: function (event, fct) {\n this._events = this._events || {};\n this._events[event] = this._events[event] || [];\n this._events[event].push(fct);\n },\n off: function (event, fct) {\n var n = arguments.length;\n if (n === 0) return delete this._events;\n if (n === 1) return delete this._events[event];\n\n this._events = this._events || {};\n if (event in this._events === false) return;\n this._events[event].splice(this._events[event].indexOf(fct), 1);\n },\n trigger: function (event ) {\n const events = this._events = this._events || {};\n if (event in events === false) return;\n for (var i = 0; i < events[event].length; i++) {\n events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\n }\n }\n};\n\nMicroEvent.mixin = function (destObject) {\n var props = ['on', 'off', 'trigger'];\n for (var i = 0; i < props.length; i++) {\n destObject.prototype[props[i]] = MicroEvent.prototype[props[i]];\n }\n};\n\nvar MicroPlugin = {};\nMicroPlugin.mixin = function (Interface) {\n\n Interface.plugins = {};\n\n Interface.prototype.initializePlugins = function (plugins) {\n var i, n, key;\n var self = this;\n var queue = [];\n\n self.plugins = {\n names: [],\n settings: {},\n requested: {},\n loaded: {}\n };\n\n if (isArray(plugins)) {\n for (i = 0, n = plugins.length; i < n; i++) {\n if (typeof plugins[i] === 'string') {\n queue.push(plugins[i]);\n } else {\n self.plugins.settings[plugins[i].name] = plugins[i].options;\n queue.push(plugins[i].name);\n }\n }\n } else if (plugins) {\n for (key in plugins) {\n if (plugins.hasOwnProperty(key)) {\n self.plugins.settings[key] = plugins[key];\n queue.push(key);\n }\n }\n }\n\n while (queue.length) {\n self.require(queue.shift());\n }\n };\n\n\n Interface.prototype.loadPlugin = function (name) {\n var self = this;\n var plugins = self.plugins;\n var plugin = Interface.plugins[name];\n\n if (!Interface.plugins.hasOwnProperty(name)) {\n throw new Error('Unable to find \"' + name + '\" plugin');\n }\n\n plugins.requested[name] = true;\n plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n plugins.names.push(name);\n };\n\n Interface.prototype.require = function (name) {\n var self = this;\n var plugins = self.plugins;\n\n if (!self.plugins.loaded.hasOwnProperty(name)) {\n if (plugins.requested[name]) {\n throw new Error('Plugin has circular dependency (\"' + name + '\")');\n }\n self.loadPlugin(name);\n }\n\n return plugins.loaded[name];\n };\n\n Interface.define = function (name, fn) {\n Interface.plugins[name] = {\n 'name': name,\n 'fn': fn\n };\n };\n};\n\nconst nanoid = (t = 21) => crypto.getRandomValues(new Uint8Array(t))\n .reduce(((t, e) =>\n t += (e &= 63) < 36 ? e.toString(36) :\n e < 62 ? (e - 26).toString(36).toUpperCase()\n : e > 62 ? \"-\" : \"_\"), \"\");\n\n\nvar Sifter = function (items, settings) {\n this.items = items;\n this.settings = settings || { diacritics: true };\n};\n\nSifter.prototype.tokenize = function (query, respect_word_boundaries) {\n query = trim(String(query || '').toLowerCase());\n if (!query || !query.length) return [];\n\n var i, n, regex, letter;\n var tokens = [];\n var words = query.split(/ +/);\n\n for (i = 0, n = words.length; i < n; i++) {\n regex = escape_regex(words[i]);\n if (this.settings.diacritics) {\n for (letter in DIACRITICS) {\n if (DIACRITICS.hasOwnProperty(letter)) {\n regex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]);\n }\n }\n }\n if (respect_word_boundaries) regex = \"\\\\b\" + regex\n tokens.push({\n string: words[i],\n regex: new RegExp(regex, 'i')\n });\n }\n\n return tokens;\n};\n\nSifter.prototype.iterator = function (object, callback) {\n var iterator;\n if (is_array(object)) {\n iterator = Array.prototype.forEach || function (callback) {\n for (var i = 0, n = this.length; i < n; i++) {\n callback(this[i], i, this);\n }\n };\n } else {\n iterator = function (callback) {\n for (var key in this) {\n if (this.hasOwnProperty(key)) {\n callback(this[key], key, this);\n }\n }\n };\n }\n\n iterator.apply(object, [callback]);\n};\n\nSifter.prototype.getScoreFunction = function (search, options) {\n var self, fields, tokens, token_count, nesting;\n\n self = this;\n search = self.prepareSearch(search, options);\n tokens = search.tokens;\n fields = search.options.fields;\n token_count = tokens.length;\n nesting = search.options.nesting;\n\n var scoreValue = function (value, token) {\n var score, pos;\n\n if (!value) return 0;\n value = String(value || '');\n pos = value.search(token.regex);\n if (pos === -1) return 0;\n score = token.string.length / value.length;\n if (pos === 0) score += 0.5;\n return score;\n };\n\n var scoreObject = (function () {\n var field_count = fields.length;\n if (!field_count) {\n return function () { return 0; };\n }\n if (field_count === 1) {\n return function (token, data) {\n return scoreValue(getattr(data, fields[0], nesting), token);\n };\n }\n return function (token, data) {\n for (var i = 0, sum = 0; i < field_count; i++) {\n sum += scoreValue(getattr(data, fields[i], nesting), token);\n }\n return sum / field_count;\n };\n })();\n\n if (!token_count) {\n return function () { return 0; };\n }\n if (token_count === 1) {\n return function (data) {\n return scoreObject(tokens[0], data);\n };\n }\n\n if (search.options.conjunction === 'and') {\n return function (data) {\n var score;\n for (var i = 0, sum = 0; i < token_count; i++) {\n score = scoreObject(tokens[i], data);\n if (score <= 0) return 0;\n sum += score;\n }\n return sum / token_count;\n };\n } else {\n return function (data) {\n for (var i = 0, sum = 0; i < token_count; i++) {\n sum += scoreObject(tokens[i], data);\n }\n return sum / token_count;\n };\n }\n};\n\nSifter.prototype.getSortFunction = function (search, options) {\n var i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort;\n\n self = this;\n search = self.prepareSearch(search, options);\n sort = (!search.query && options.sort_empty) || options.sort;\n\n get_field = function (name, result) {\n if (name === '$score') return result.score;\n return getattr(self.items[result.id], name, options.nesting);\n };\n\n fields = [];\n if (sort) {\n for (i = 0, n = sort.length; i < n; i++) {\n if (search.query || sort[i].field !== '$score') {\n fields.push(sort[i]);\n }\n }\n }\n\n if (search.query) {\n implicit_score = true;\n for (i = 0, n = fields.length; i < n; i++) {\n if (fields[i].field === '$score') {\n implicit_score = false;\n break;\n }\n }\n if (implicit_score) {\n fields.unshift({ field: '$score', direction: 'desc' });\n }\n } else {\n for (i = 0, n = fields.length; i < n; i++) {\n if (fields[i].field === '$score') {\n fields.splice(i, 1);\n break;\n }\n }\n }\n\n multipliers = [];\n for (i = 0, n = fields.length; i < n; i++) {\n multipliers.push(fields[i].direction === 'desc' ? -1 : 1);\n }\n\n fields_count = fields.length;\n if (!fields_count) {\n return null;\n } else if (fields_count === 1) {\n field = fields[0].field;\n multiplier = multipliers[0];\n return function (a, b) {\n return multiplier * cmp(\n get_field(field, a),\n get_field(field, b)\n );\n };\n } else {\n return function (a, b) {\n var i, result, a_value, b_value, field;\n for (i = 0; i < fields_count; i++) {\n field = fields[i].field;\n result = multipliers[i] * cmp(\n get_field(field, a),\n get_field(field, b)\n );\n if (result) return result;\n }\n return 0;\n };\n }\n};\n\nSifter.prototype.prepareSearch = function (query, options) {\n if (typeof query === 'object') return query;\n\n options = extend({}, options);\n\n var option_fields = options.fields;\n var option_sort = options.sort;\n var option_sort_empty = options.sort_empty;\n\n if (option_fields && !is_array(option_fields)) options.fields = [option_fields];\n if (option_sort && !is_array(option_sort)) options.sort = [option_sort];\n if (option_sort_empty && !is_array(option_sort_empty)) options.sort_empty = [option_sort_empty];\n\n return {\n options: options,\n query: String(query || '').toLowerCase(),\n tokens: this.tokenize(query, options.respect_word_boundaries),\n total: 0,\n items: []\n };\n};\n\nSifter.prototype.search = function (query, options) {\n var self = this, value, score, search, calculateScore;\n var fn_sort;\n var fn_score;\n\n search = this.prepareSearch(query, options);\n options = search.options;\n query = search.query;\n\n fn_score = options.score || self.getScoreFunction(search);\n\n if (query.length) {\n self.iterator(self.items, function (item, id) {\n score = fn_score(item);\n if (options.filter === false || score > 0) {\n search.items.push({ 'score': score, 'id': id });\n }\n });\n } else {\n self.iterator(self.items, function (item, id) {\n search.items.push({ 'score': 1, 'id': id });\n });\n }\n\n fn_sort = self.getSortFunction(search, options);\n if (fn_sort) search.items.sort(fn_sort);\n\n search.total = search.items.length;\n if (typeof options.limit === 'number') {\n search.items = search.items.slice(0, options.limit);\n }\n\n return search;\n};\n\nvar cmp = function (a, b) {\n if (typeof a === 'number' && typeof b === 'number') {\n return a > b ? 1 : (a < b ? -1 : 0);\n }\n a = asciifold(String(a || ''));\n b = asciifold(String(b || ''));\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n};\n\nvar extend = function (a, b) {\n var i, n, k, object;\n for (i = 1, n = arguments.length; i < n; i++) {\n object = arguments[i];\n if (!object) continue;\n for (k in object) {\n if (object.hasOwnProperty(k)) {\n a[k] = object[k];\n }\n }\n }\n return a;\n};\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 trim = function (str) {\n return (str + '').replace(/^\\s+|\\s+$|/g, '');\n};\n\nvar escape_regex = function (str) {\n return (str + '').replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n};\n\nvar is_array = Array.isArray || function (object) {\n return Object.prototype.toString.call(object) === '[object Array]';\n};\n\nvar DIACRITICS = {\n 'a': '[aḀḁĂăÂâǍǎȺⱥȦȧẠạÄäÀàÁáĀāÃãÅåąĄÃąĄ]',\n 'b': '[b␢βΒB฿𐌁ᛒ]',\n 'c': '[cĆćĈĉČčĊċC̄c̄ÇçḈḉȻȼƇƈɕᴄCc]',\n 'd': '[dĎďḊḋḐḑḌḍḒḓḎḏĐđD̦d̦ƉɖƊɗƋƌᵭᶁᶑȡᴅDdð]',\n 'e': '[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀềỄễỂểḜḝḖḗḔḕȆȇẸẹỆệⱸᴇEeɘǝƏƐε]',\n 'f': '[fƑƒḞḟ]',\n 'g': '[gɢ₲ǤǥĜĝĞğĢģƓɠĠġ]',\n 'h': '[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]',\n 'i': '[iÍíÌìĬĭÎîǏǐÏïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬḭƗɨɨ̆ᵻᶖİiIıɪIi]',\n 'j': '[jȷĴĵɈɉʝɟʲ]',\n 'k': '[kƘƙꝀꝁḰḱǨǩḲḳḴḵκϰ₭]',\n 'l': '[lŁłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅɭȴʟLl]',\n 'n': '[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ƝɲȠƞᵰᶇɳȵɴNnŊŋ]',\n 'o': '[oØøÖöÓóÒòÔôǑǒŐőŎŏȮȯỌọƟɵƠơỎỏŌōÕõǪǫȌȍՕօ]',\n 'p': '[pṔṕṖṗⱣᵽƤƥᵱ]',\n 'q': '[qꝖꝗʠɊɋꝘꝙq̃]',\n 'r': '[rŔŕɌɍŘřŖŗṘṙȐȑȒȓṚṛⱤɽ]',\n 's': '[sŚśṠṡṢṣꞨꞩŜŝŠšŞşȘșS̈s̈]',\n 't': '[tŤťṪṫŢţṬṭƮʈȚțṰṱṮṯƬƭ]',\n 'u': '[uŬŭɄʉỤụÜüÚúÙùÛûǓǔŰűŬŭƯưỦủŪūŨũŲųȔȕ∪]',\n 'v': '[vṼṽṾṿƲʋꝞꝟⱱʋ]',\n 'w': '[wẂẃẀẁŴŵẄẅẆẇẈẉ]',\n 'x': '[xẌẍẊẋχ]',\n 'y': '[yÝýỲỳŶŷŸÿỸỹẎẏỴỵɎɏƳƴ]',\n 'z': '[zŹźẐẑŽžŻżẒẓẔẕƵƶ]'\n};\n\nvar asciifold = (function () {\n var i, n, k, chunk;\n var i18nChars = '';\n var lookup = {};\n for (k in DIACRITICS) {\n if (DIACRITICS.hasOwnProperty(k)) {\n chunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1);\n i18nChars += chunk;\n for (i = 0, n = chunk.length; i < n; i++) {\n lookup[chunk.charAt(i)] = k;\n }\n }\n }\n var regexp = new RegExp('[' + i18nChars + ']', 'g');\n return function (str) {\n return str.replace(regexp, function (i18nChar) {\n return lookup[i18nChar];\n }).toLowerCase();\n };\n})();\n\nvar IS_MAC = uaDetect(\"macOS\", /Mac/);\nvar KEY_A = 65;\nvar KEY_COMMA = 188;\nvar KEY_RETURN = 13;\nvar KEY_ESC = 27;\nvar KEY_LEFT = 37;\nvar KEY_UP = 38;\nvar KEY_P = 80;\nvar KEY_RIGHT = 39;\nvar KEY_DOWN = 40;\nvar KEY_N = 78;\nvar KEY_BACKSPACE = 8;\nvar KEY_DELETE = 46;\nvar KEY_SHIFT = 16;\nvar KEY_CMD = IS_MAC ? 91 : 17;\nvar KEY_CTRL = IS_MAC ? 18 : 17;\nvar KEY_TAB = 9;\nvar TAG_SELECT = 1;\nvar TAG_INPUT = 2;\n\nvar SUPPORTS_VALIDITY_API = !uaDetect(\"Android\", /android/i) && !!document.createElement('input').validity;\n\nvar isset = function (object) {\n return typeof object !== 'undefined';\n};\n\nvar isArray = Array.isArray || function (vArg) {\n return Object.prototype.toString.call(vArg) === '[object Array]';\n}\n\nvar hash_key = function (value) {\n if (typeof value === 'undefined' || value === null) return null;\n if (typeof value === 'boolean') return value ? '1' : '0';\n return value + '';\n};\n\nvar escape_html = function (str) {\n return (str + '')\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"');\n};\n\nvar escape_replace = function (str) {\n return (str + '').replace(/\\$/g, '$$$$');\n};\n\nvar hook = {};\n\nhook.before = function (self, method, fn) {\n var original = self[method];\n self[method] = function () {\n fn.apply(self, arguments);\n return original.apply(self, arguments);\n };\n};\n\nhook.after = function (self, method, fn) {\n var original = self[method];\n self[method] = function () {\n var result = original.apply(self, arguments);\n fn.apply(self, arguments);\n return result;\n };\n};\n\nvar once = function (fn) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n fn.apply(this, arguments);\n };\n};\n\nvar debounce = function (fn, delay) {\n var timeout;\n return function () {\n var self = this;\n var args = arguments;\n window.clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n fn.apply(self, args);\n }, delay);\n };\n};\n\nvar debounce_events = function (self, types, fn) {\n var type;\n var trigger = self.trigger;\n var event_args = {};\n\n self.trigger = function () {\n var type = arguments[0];\n if (types.indexOf(type) !== -1) {\n event_args[type] = arguments;\n } else {\n return trigger.apply(self, arguments);\n }\n };\n\n fn.apply(self, []);\n self.trigger = trigger;\n\n for (type in event_args) {\n if (event_args.hasOwnProperty(type)) {\n trigger.apply(self, event_args[type]);\n }\n }\n};\n\nvar watchChildEvent = function ($parent, event, selector, fn) {\n $parent.on(event, selector, function (e) {\n var child = e.target;\n while (child && child.parentNode !== $parent[0]) {\n child = child.parentNode;\n }\n e.currentTarget = child;\n return fn.apply(this, [e]);\n });\n};\n\nvar getInputSelection = function (input) {\n var result = {};\n if (input === undefined) {\n console.warn('WARN getInputSelection cannot locate input control');\n return result;\n }\n if ('selectionStart' in input) {\n result.start = input.selectionStart;\n result.length = input.selectionEnd - result.start;\n } else if (document.selection) {\n input.focus();\n var sel = document.selection.createRange();\n var selLen = document.selection.createRange().text.length;\n sel.moveStart('character', -input.value.length);\n result.start = sel.text.length - selLen;\n result.length = selLen;\n }\n return result;\n};\n\nvar transferStyles = function ($from, $to, properties) {\n var i, n, styles = {};\n if (properties) {\n for (i = 0, n = properties.length; i < n; i++) {\n styles[properties[i]] = $from.css(properties[i]);\n }\n } else {\n styles = $from.css();\n }\n $to.css(styles);\n};\n\nvar measureString = function (str, $parent) {\n if (!str) {\n return 0;\n }\n\n if (!Selectize.$testInput) {\n Selectize.$testInput = $('').css({\n position: 'absolute',\n width: 'auto',\n padding: 0,\n whiteSpace: 'pre'\n });\n\n $('
').css({\n position: 'absolute',\n width: 0,\n height: 0,\n overflow: 'hidden'\n }).attr({\n 'aria-hidden': true\n }).append(Selectize.$testInput).appendTo('body');\n }\n\n Selectize.$testInput.text(str);\n\n transferStyles($parent, Selectize.$testInput, [\n 'letterSpacing',\n 'fontSize',\n 'fontFamily',\n 'fontWeight',\n 'textTransform'\n ]);\n\n return Selectize.$testInput.width();\n};\n\nvar autoGrow = function ($input) {\n var currentWidth = null;\n\n var update = function (e, options) {\n var value, keyCode, printable, width;\n var placeholder, placeholderWidth;\n var shift, character, selection;\n e = e || window.event || {};\n options = options || {};\n\n if (e.metaKey || e.altKey) return;\n if (!options.force && $input.data('grow') === false) return;\n\n value = $input.val();\n if (e.type && e.type.toLowerCase() === 'keydown') {\n keyCode = e.keyCode;\n printable = (\n (keyCode >= 48 && keyCode <= 57) || \n (keyCode >= 65 && keyCode <= 90) || \n (keyCode >= 96 && keyCode <= 111) || \n (keyCode >= 186 && keyCode <= 222) || \n keyCode === 32 \n );\n\n if (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) {\n selection = getInputSelection($input[0]);\n if (selection.length) {\n value = value.substring(0, selection.start) + value.substring(selection.start + selection.length);\n } else if (keyCode === KEY_BACKSPACE && selection.start) {\n value = value.substring(0, selection.start - 1) + value.substring(selection.start + 1);\n } else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') {\n value = value.substring(0, selection.start) + value.substring(selection.start + 1);\n }\n } else if (printable) {\n shift = e.shiftKey;\n character = String.fromCharCode(e.keyCode);\n if (shift) character = character.toUpperCase();\n else character = character.toLowerCase();\n value += character;\n }\n }\n\n var width = $input.attr('readonly') ? 0 : 4;\n placeholder = $input.attr('placeholder');\n if (placeholder) {\n placeholderWidth = measureString(placeholder, $input) + width;\n } else {\n placeholderWidth = 0;\n }\n\n width = Math.max(measureString(value, $input), placeholderWidth) + width;\n if (width !== currentWidth) {\n currentWidth = width;\n $input.width(width);\n $input.triggerHandler('resize');\n }\n };\n\n $input.on('keydown keyup update blur', update);\n update();\n};\n\nvar domToString = function (d) {\n var tmp = document.createElement('div');\n\n tmp.appendChild(d.cloneNode(true));\n\n return tmp.innerHTML;\n};\n\nvar logError = function (message, options) {\n if (!options) options = {};\n var component = \"Selectize\";\n\n console.error(component + \": \" + message)\n\n if (options.explanation) {\n if (console.group) console.group();\n console.error(options.explanation);\n if (console.group) console.groupEnd();\n }\n};\n\nvar isJSON = function (data) {\n try {\n JSON.parse(data);\n } catch (e) {\n return false;\n }\n return true;\n};\n\nfunction uaDetect(platform, re) {\n if (navigator.userAgentData) {\n return platform === navigator.userAgentData.platform;\n }\n\n return re.test(navigator.userAgent);\n}\n\nvar Selectize = function($input, settings) {\n\tvar key, i, n, dir, input, self = this;\n\tinput = $input[0];\n\tinput.selectize = self;\n\n\tvar computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);\n\tdir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction;\n dir = dir || $input.parents('[dir]:first').attr('dir') || '';\n\n self.settings = {};\n\n\t$.extend(self, {\n\t\torder : 0,\n\t\tsettings : settings,\n\t\t$input : $input,\n\t\ttabIndex : $input.attr('tabindex') || '',\n\t\ttagType : input.tagName.toLowerCase() === 'select' ? TAG_SELECT : TAG_INPUT,\n\t\trtl : /rtl/i.test(dir),\n\n\t\teventNS : '.selectize' + (++Selectize.count),\n\t\thighlightedValue : null,\n\t\tisBlurring : false,\n\t\tisOpen : false,\n\t\tisDisabled : false,\n\t\tisRequired : $input.is('[required]'),\n\t\tisInvalid : false,\n\t\tisLocked : false,\n\t\tisFocused : false,\n\t\tisInputHidden : false,\n\t\tisSetup : false,\n\t\tisShiftDown : false,\n\t\tisCmdDown : false,\n\t\tisCtrlDown : false,\n\t\tignoreFocus : false,\n\t\tignoreBlur : false,\n\t\tignoreHover : false,\n\t\thasOptions : false,\n\t\tcurrentResults : null,\n\t\tlastValue : '',\n\t\tlastValidValue : '',\n\t\tlastOpenTarget : false,\n\t\tcaretPos : 0,\n\t\tloading : 0,\n\t\tloadedSearches : {},\n isDropdownClosing: false,\n\n\t\t$activeOption : null,\n\t\t$activeItems : [],\n\n\t\toptgroups : {},\n\t\toptions : {},\n\t\tuserOptions : {},\n\t\titems : [],\n\t\trenderCache : {},\n\t\tonSearchChange : settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)\n\t});\n\n\tself.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\tif (self.settings.options) {\n\t\tfor (i = 0, n = self.settings.options.length; i < n; i++) {\n\t\t\tself.registerOption(self.settings.options[i]);\n\t\t}\n\t\tdelete self.settings.options;\n }\n\n\tif (self.settings.optgroups) {\n\t\tfor (i = 0, n = self.settings.optgroups.length; i < n; i++) {\n\t\t\tself.registerOptionGroup(self.settings.optgroups[i]);\n\t\t}\n\t\tdelete self.settings.optgroups;\n\t}\n\n\tself.settings.mode = self.settings.mode || (self.settings.maxItems === 1 ? 'single' : 'multi');\n\tif (typeof self.settings.hideSelected !== 'boolean') {\n\t\tself.settings.hideSelected = self.settings.mode === 'multi';\n\t}\n\n\tself.initializePlugins(self.settings.plugins);\n\tself.setupCallbacks();\n\tself.setupTemplates();\n\tself.setup();\n};\n\nMicroEvent.mixin(Selectize);\nMicroPlugin.mixin(Selectize);\n\n$.extend(Selectize.prototype, {\n\n\tsetup: function() {\n\t\tvar self = this;\n\t\tvar settings = self.settings;\n\t\tvar eventNS = self.eventNS;\n\t\tvar $window = $(window);\n\t\tvar $document = $(document);\n\t\tvar $input = self.$input;\n\n\t\tvar $wrapper;\n\t\tvar $control;\n\t\tvar $control_input;\n\t\tvar $dropdown;\n\t\tvar $dropdown_content;\n\t\tvar $dropdown_parent;\n\t\tvar inputMode;\n\t\tvar timeout_blur;\n\t\tvar timeout_focus;\n\t\tvar classes;\n\t\tvar classes_plugins;\n\t\tvar inputId;\n var noArrowClass;\n\n\t\tinputMode = self.settings.mode;\n classes = $input.attr('class') || '';\n noArrowClass = settings.showArrow ? '' : ' no-arrow';\n\n $wrapper = $('
').addClass(settings.wrapperClass).addClass(classes + ' selectize-control').addClass(inputMode);\n\t\t$control = $('
').addClass(settings.inputClass + noArrowClass + ' selectize-input items').appendTo($wrapper);\n\t\t$control_input = $('').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex);\n\t\t$dropdown_parent = $(settings.dropdownParent || $wrapper);\n\t\t$dropdown = $('
').addClass(settings.dropdownClass).addClass(inputMode + ' selectize-dropdown').hide().appendTo($dropdown_parent);\n\t\t$dropdown_content = $('
').addClass(settings.dropdownContentClass + ' selectize-dropdown-content').attr('tabindex', '-1').appendTo($dropdown);\n\n\t\tif(inputId = $input.attr('id')) {\n\t\t\t$control_input.attr('id', inputId + '-selectized');\n\t\t\t$(\"label[for='\"+inputId+\"']\").attr('for', inputId + '-selectized');\n\t\t}\n\n\t\tif(self.settings.copyClassesToDropdown) {\n\t\t\t$dropdown.addClass(classes);\n\t\t}\n\n\t\t$wrapper.css({\n\t\t\twidth: $input[0].style.width\n\t\t});\n\n\t\tif (self.plugins.names.length) {\n\t\t\tclasses_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\t$wrapper.addClass(classes_plugins);\n\t\t\t$dropdown.addClass(classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) {\n\t\t\t$input.attr('multiple', 'multiple');\n\t\t}\n\n\t\tif (self.settings.placeholder) {\n\t\t\t$control_input.attr('placeholder', settings.placeholder);\n\t\t}\n\n if (!self.settings.search) {\n $control_input.attr('readonly', true);\n\t $control_input.attr('inputmode', 'none');\n $control.css('cursor', 'pointer');\n }\n\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\t\tif ($input.attr('autocorrect')) {\n\t\t\t$control_input.attr('autocorrect', $input.attr('autocorrect'));\n\t\t}\n\n\t\tif ($input.attr('autocapitalize')) {\n\t\t\t$control_input.attr('autocapitalize', $input.attr('autocapitalize'));\n\t\t}\n\t\tif ($input.is('input')) {\n\t\t\t$control_input[0].type = $input[0].type;\n\t\t}\n\n\t\tself.$wrapper = $wrapper;\n\t\tself.$control = $control;\n\t\tself.$control_input = $control_input;\n\t\tself.$dropdown = $dropdown;\n\t\tself.$dropdown_content = $dropdown_content;\n\n\t\t$dropdown.on('mouseenter mousedown mouseup click', '[data-disabled]>[data-selectable]', function(e) { e.stopImmediatePropagation(); });\n\t\t$dropdown.on('mouseenter', '[data-selectable]', function() { return self.onOptionHover.apply(self, arguments); });\n\t\t$dropdown.on('mouseup click', '[data-selectable]', function() { return self.onOptionSelect.apply(self, arguments); });\n\t\twatchChildEvent($control, 'mouseup', '*:not(input)', function() { return self.onItemSelect.apply(self, arguments); });\n\t\tautoGrow($control_input);\n\n\t\t$control.on({\n\t\t\tmousedown : function() { return self.onMouseDown.apply(self, arguments); },\n\t\t\tclick : function() { return self.onClick.apply(self, arguments); }\n\t\t});\n\n\t\t$control_input.on({\n\t\t\tmousedown : function(e) {\n\t\t\t\tif (self.$control_input.val() !== '' || self.settings.openOnFocus) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeydown : function() { return self.onKeyDown.apply(self, arguments); },\n\t\t\tkeypress : function() { return self.onKeyPress.apply(self, arguments); },\n\t\t\tinput : function() { return self.onInput.apply(self, arguments); },\n\t\t\tresize : function() { self.positionDropdown.apply(self, []); },\n\t\t\tblur : function() { return self.onBlur.apply(self, arguments); },\n\t\t\tfocus : function() { return self.onFocus.apply(self, arguments); },\n\t\t\tpaste : function() { return self.onPaste.apply(self, arguments); }\n\t\t});\n\n\t\t$document.on('keydown' + eventNS, function(e) {\n\t\t\tself.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey'];\n\t\t\tself.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey'];\n\t\t\tself.isShiftDown = e.shiftKey;\n\t\t});\n\n\t\t$document.on('keyup' + eventNS, function(e) {\n\t\t\tif (e.keyCode === KEY_CTRL) self.isCtrlDown = false;\n\t\t\tif (e.keyCode === KEY_SHIFT) self.isShiftDown = false;\n\t\t\tif (e.keyCode === KEY_CMD) self.isCmdDown = false;\n\t\t});\n\n\t\t$document.on('mousedown' + eventNS, function(e) {\n\t\t\tif (self.isFocused) {\n\t\t\t\tif (\n\t\t\t\t\te.target === self.$dropdown[0] ||\n\t\t\t\t\tself.$dropdown.has(e.target).length)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (e.target !== self.$control[0]) {\n\t\t\t\t\tself.blur(e.target);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t$window.on(['scroll' + eventNS, 'resize' + eventNS].join(' '), function() {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown.apply(self, arguments);\n\t\t\t}\n\t\t});\n\t\t$window.on('mousemove' + eventNS, function() {\n self.ignoreHover = self.settings.ignoreHover;\n\t\t});\n\n var inputPlaceholder = $('
');\n\t\tvar inputChildren = $input.children().detach();\n\n $input.replaceWith(inputPlaceholder);\n inputPlaceholder.replaceWith($input);\n\n this.revertSettings = {\n\t\t\t$children : inputChildren,\n\t\t\ttabindex : $input.attr('tabindex')\n\t\t};\n\n\t\t$input.attr('tabindex', -1).hide().after(self.$wrapper);\n\n\t\tif (Array.isArray(settings.items)) {\n\t\t\tself.lastValidValue = settings.items;\n\t\t\tself.setValue(settings.items);\n\t\t\tdelete settings.items;\n\t\t}\n\n\t\tif (SUPPORTS_VALIDITY_API) {\n\t\t\t$input.on('invalid' + eventNS, function(e) {\n\t\t\t\te.preventDefault();\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.updatePlaceholder();\n\t\tself.isSetup = true;\n\n\t\tif ($input.is(':disabled')) {\n\t\t\tself.disable();\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\t$input.data('selectize', self);\n\t\t$input.addClass('selectized');\n\t\tself.trigger('initialize');\n\n\t\tif (settings.preload === true) {\n\t\t\tself.onSearchChange('');\n\t\t}\n\n\t},\n\n\tsetupTemplates: function() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_value = self.settings.valueField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': function(data) {\n\t\t\t\treturn '
' + data.html + '
';\n\t\t\t},\n\t\t\t'optgroup_header': function(data, escape) {\n\t\t\t\treturn '
' + escape(data[field_optgroup]) + '
';\n\t\t\t},\n\t\t\t'option': function(data, escape) {\n var classes = data.classes ? ' ' + data.classes : '';\n classes += data[field_value] === '' ? ' selectize-dropdown-emptyoptionlabel' : '';\n\n var styles = data.styles ? ' style=\"' + data.styles + '\"': '';\n\t\t\t\treturn '' + escape(data[field_label]) + '
';\n\t\t\t},\n\t\t\t'item': function(data, escape) {\n\t\t\t\treturn '
' + escape(data[field_label]) + '
';\n\t\t\t},\n\t\t\t'option_create': function(data, escape) {\n\t\t\t\treturn '
Add ' + escape(data.input) + '
';\n\t\t\t}\n\t\t};\n\n\t\tself.settings.render = $.extend({}, templates, self.settings.render);\n\t},\n\n\tsetupCallbacks: function() {\n\t\tvar key, fn, callbacks = {\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\t'dropdown_item_activate' : 'onDropdownItemActivate',\n\t\t\t'dropdown_item_deactivate' : 'onDropdownItemDeactivate'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\t\t\tif (callbacks.hasOwnProperty(key)) {\n\t\t\t\tfn = this.settings[callbacks[key]];\n\t\t\t\tif (fn) this.on(key, fn);\n\t\t\t}\n\t\t}\n\t},\n\n\tonClick: function(e) {\n\t\tvar self = this;\n\n if (self.isDropdownClosing) {\n return;\n }\n\n\t\tif (!self.isFocused || !self.isOpen) {\n\t\t\tself.focus();\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\n\tonMouseDown: function(e) {\n\t\tvar self = this;\n\t\tvar defaultPrevented = e.isDefaultPrevented();\n\t\tvar $target = $(e.target);\n\n\t\tif (!self.isFocused) {\n\t\t\tif (!defaultPrevented) {\n window.setTimeout(function () {\n if (!self.isOpen) {\n self.focus();\n }\n }, 0);\n\t\t\t}\n\t\t}\n\t\tif ($target !== self.$control_input[0] || self.$control_input.val() === '') {\n\t\t\tif (self.settings.mode === 'single') {\n\t\t\t\tself.isOpen ? self.close() : self.open();\n\t\t\t} else {\n\t\t\t\tif (!defaultPrevented) {\n\t\t\t\t\t\tself.setActiveItem(null);\n\t\t\t\t}\n\t\t\t\tif (!self.settings.openOnFocus) {\n\t\t\t\t\tif (self.isOpen && $target === self.lastOpenTarget) {\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t\tself.lastOpenTarget = false;\n\t\t\t\t\t} else if (!self.isOpen) {\n\t\t\t\t\t\tself.refreshOptions();\n\t\t\t\t\t\tself.open();\n\t\t\t\t\t\tself.lastOpenTarget = $target;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.lastOpenTarget = $target;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t},\n\n\tonChange: function() {\n\t\tvar self = this;\n\t\tif (self.getValue() !== \"\") {\n\t\t\tself.lastValidValue = self.getValue();\n\t\t}\n\t\tthis.$input.trigger('input');\n\t\tthis.$input.trigger('change');\n\t},\n\n\tonPaste: function(e) {\n\t\tvar self = this;\n\n\t\tif (self.isFull() || self.isInputHidden || self.isLocked) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.settings.splitOn) {\n\n\t\t\tsetTimeout(function() {\n\t\t\t\tvar pastedText = self.$control_input.val();\n\t\t\t\tif(!pastedText.match(self.settings.splitOn)){ return }\n\n\t\t\t\tvar splitInput = pastedText\n\t\t\t\t\t.trim()\n\t\t\t\t\t.split(self.settings.splitOn);\n\t\t\t\tfor (var i = 0, n = splitInput.length; i < n; i++) {\n\t\t\t\t\tself.createItem(splitInput[i]);\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\tonKeyPress: function(e) {\n\t\tif (this.isLocked) return e && e.preventDefault();\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) {\n\t\t\tthis.createItem();\n\t\t\te.preventDefault();\n\t\t\treturn false;\n\t\t}\n\t},\n\n\tonKeyDown: function(e) {\n\t\tvar isInput = e.target === this.$control_input[0];\n\t\tvar self = this;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== KEY_TAB) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\t\t\tcase KEY_A:\n\t\t\t\tif (self.isCmdDown) {\n\t\t\t\t\tself.selectAll();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase KEY_N:\n\t\t\t\tif (!e.ctrlKey || e.altKey) break;\n\t\t\tcase 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\tself.ignoreHover = true;\n\t\t\t\t\tvar $next = self.getAdjacentOption(self.$activeOption, 1);\n\t\t\t\t\tif ($next.length) self.setActiveOption($next, true, true);\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t\treturn;\n\t\t\tcase KEY_P:\n\t\t\t\tif (!e.ctrlKey || e.altKey) break;\n\t\t\tcase KEY_UP:\n\t\t\t\tif (self.$activeOption) {\n\t\t\t\t\tself.ignoreHover = true;\n\t\t\t\t\tvar $prev = self.getAdjacentOption(self.$activeOption, -1);\n\t\t\t\t\tif ($prev.length) self.setActiveOption($prev, true, true);\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t\treturn;\n\t\t\tcase KEY_RETURN:\n\t\t\t\tif (self.isOpen && self.$activeOption) {\n\t\t\t\t\tself.onOptionSelect({currentTarget: self.$activeOption});\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\t\t\tcase KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\t\t\tcase KEY_TAB:\n\t\t\t\tif (self.settings.selectOnTab && self.isOpen && self.$activeOption) {\n\t\t\t\t\tself.onOptionSelect({currentTarget: self.$activeOption});\n\n\t\t\t\t\tif (!self.isFull()) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (self.settings.create && self.createItem() && self.settings.showAddOptionOnCreate) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase KEY_BACKSPACE:\n\t\t\tcase KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\tif ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\t},\n\n\tonInput: function(e) {\n\t\tvar self = this;\n\n\t\tvar value = self.$control_input.val() || '';\n\t\tif (self.lastValue !== value) {\n\t\t\tself.lastValue = value;\n\t\t\tself.onSearchChange(value);\n\t\t\tself.refreshOptions();\n\t\t\tself.trigger('type', value);\n\t\t}\n\t},\n\n\tonSearchChange: function(value) {\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\t\tself.loadedSearches[value] = true;\n\t\tself.load(function(callback) {\n\t\t\tfn.apply(self, [value, callback]);\n\t\t});\n\t},\n\n\tonFocus: function(e) {\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\te && e.preventDefault();\n\t\t\treturn false;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif (self.settings.preload === 'focus') self.onSearchChange('');\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(null);\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t},\n\n\tonBlur: function(e, dest) {\n\t\tvar self = this;\n\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\n\t\tif (self.ignoreFocus) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar deactivate = function() {\n\t\t\tself.close();\n\t\t\tself.setTextboxValue('');\n\t\t\tself.setActiveItem(null);\n\t\t\tself.setActiveOption(null);\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.refreshState();\n\n\t\t\tdest && dest.focus && dest.focus();\n\n\t\t\tself.isBlurring = false;\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tself.isBlurring = true;\n\t\tself.ignoreFocus = true;\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\tonOptionHover: function(e) {\n\t\tif (this.ignoreHover) return;\n\t\tthis.setActiveOption(e.currentTarget, false);\n\t},\n\n\tonOptionSelect: function(e) {\n\t\tvar value, $target, $option, self = this;\n\n\t\tif (e.preventDefault) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t$target = $(e.currentTarget);\n\t\tif ($target.hasClass('create')) {\n\t\t\tself.createItem(null, function() {\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 = $target.attr('data-value');\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.setTextboxValue('');\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 && e.type && /mouse/.test(e.type)) {\n\t\t\t\t\tself.setActiveOption(self.getOption(value));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tonItemSelect: function(e) {\n\t\tvar self = this;\n\n\t\tif (self.isLocked) return;\n\t\tif (self.settings.mode === 'multi') {\n\t\t\te.preventDefault();\n\t\t\tself.setActiveItem(e.currentTarget, e);\n\t\t}\n\t},\n\n\tload: function(fn) {\n\t\tvar self = this;\n\t\tvar $wrapper = self.$wrapper.addClass(self.settings.loadingClass);\n\n\t\tself.loading++;\n\t\tfn.apply(self, [function(results) {\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tif (results && results.length) {\n\t\t\t\tself.addOption(results);\n\t\t\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\t\t\t}\n\t\t\tif (!self.loading) {\n\t\t\t\t$wrapper.removeClass(self.settings.loadingClass);\n\t\t\t}\n\t\t\tself.trigger('load', results);\n\t\t}]);\n\t},\n\n\tgetTextboxValue: function() {\n\t\tvar $input = this.$control_input;\n\t\treturn $input.val();\n\t},\n\n\tsetTextboxValue: function(value) {\n\t\tvar $input = this.$control_input;\n\t\tvar changed = $input.val() !== value;\n\t\tif (changed) {\n\t\t\t$input.val(value).triggerHandler('update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t},\n\n\tgetValue: function() {\n\t\tif (this.tagType === TAG_SELECT && this.$input.attr('multiple')) {\n\t\t\treturn this.items;\n\t\t} else {\n\t\t\treturn this.items.join(this.settings.delimiter);\n\t\t}\n\t},\n\n\tsetValue: function(value, silent) {\n\t\tconst items = Array.isArray(value) ? value : [value];\n\t\tif (items.join('') === this.items.join('')) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events, function() {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t},\n\n\tsetMaxItems: function(value){\n\t\tif(value === 0) value = null; \n\t\tthis.settings.maxItems = value;\n\t\tthis.settings.mode = this.settings.mode || (this.settings.maxItems === 1 ? 'single' : 'multi');\n\t\tthis.refreshState();\n\t},\n\n\tsetActiveItem: function($item, e) {\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, idx, begin, end, item, swap;\n\t\tvar $last;\n\n\t\tif (self.settings.mode === 'single') return;\n\t\t$item = $($item);\n\n\t\tif (!$item.length) {\n\t\t\t$(self.$activeItems).removeClass('active');\n\t\t\tself.$activeItems = [];\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.showInput();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'mousedown' && self.isShiftDown && self.$activeItems.length) {\n\t\t\t$last = self.$control.children('.active:last');\n\t\t\tbegin = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$last[0]]);\n\t\t\tend = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$item[0]]);\n\t\t\tif (begin > end) {\n\t\t\t\tswap = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.$control[0].childNodes[i];\n\t\t\t\tif (self.$activeItems.indexOf(item) === -1) {\n\t\t\t\t\t$(item).addClass('active');\n\t\t\t\t\tself.$activeItems.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\te.preventDefault();\n\t\t} else if ((eventName === 'mousedown' && self.isCtrlDown) || (eventName === 'keydown' && this.isShiftDown)) {\n\t\t\tif ($item.hasClass('active')) {\n\t\t\t\tidx = self.$activeItems.indexOf($item[0]);\n\t\t\t\tself.$activeItems.splice(idx, 1);\n\t\t\t\t$item.removeClass('active');\n\t\t\t} else {\n\t\t\t\tself.$activeItems.push($item.addClass('active')[0]);\n\t\t\t}\n\t\t} else {\n\t\t\t$(self.$activeItems).removeClass('active');\n\t\t\tself.$activeItems = [$item.addClass('active')[0]];\n\t\t}\n\n\t\tself.hideInput();\n\t\tif (!this.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t},\n\n\tsetActiveOption: function($option, scroll, animate) {\n\t\tvar height_menu, height_item, y;\n\t\tvar scroll_top, scroll_bottom;\n\t\tvar self = this;\n\n\t\tif (self.$activeOption) {\n\t\t\tself.$activeOption.removeClass('active');\n\t\t\tself.trigger('dropdown_item_deactivate', self.$activeOption.attr('data-value'));\n\t\t}\n\t\tself.$activeOption = null;\n\n\t\t$option = $($option);\n\t\tif (!$option.length) return;\n\n\t\tself.$activeOption = $option.addClass('active');\n\t\tif (self.isOpen) self.trigger('dropdown_item_activate', self.$activeOption.attr('data-value'));\n\n\t\tif (scroll || !isset(scroll)) {\n\n\t\t\theight_menu = self.$dropdown_content.height();\n\t\t\theight_item = self.$activeOption.outerHeight(true);\n\t\t\tscroll = self.$dropdown_content.scrollTop() || 0;\n\t\t\ty = self.$activeOption.offset().top - self.$dropdown_content.offset().top + scroll;\n\t\t\tscroll_top = y;\n\t\t\tscroll_bottom = y - height_menu + height_item;\n\n\t\t\tif (y + height_item > height_menu + scroll) {\n\t\t\t\tself.$dropdown_content.stop().animate({scrollTop: scroll_bottom}, animate ? self.settings.scrollDuration : 0);\n\t\t\t} else if (y < scroll) {\n\t\t\t\tself.$dropdown_content.stop().animate({scrollTop: scroll_top}, animate ? self.settings.scrollDuration : 0);\n\t\t\t}\n\n\t\t}\n\t},\n\n\tselectAll: function() {\n\t\tvar self = this;\n\t\tif (self.settings.mode === 'single') return;\n\n\t\tself.$activeItems = Array.prototype.slice.apply(self.$control.children(':not(input)').addClass('active'));\n\t\tif (self.$activeItems.length) {\n\t\t\tself.hideInput();\n\t\t\tself.close();\n\t\t}\n\t\tself.focus();\n\t},\n\n\thideInput: function() {\n\t\tvar self = this;\n\n\t\tself.setTextboxValue('');\n\t\tself.$control_input.css({opacity: 0, position: 'absolute', left: self.rtl ? 10000 : 0});\n\t\tself.isInputHidden = true;\n\t},\n\n\tshowInput: function() {\n\t\tthis.$control_input.css({opacity: 1, position: 'relative', left: 0});\n\t\tthis.isInputHidden = false;\n\t},\n\n\tfocus: function() {\n\t\tvar self = this;\n\t\tif (self.isDisabled) return self;\n\n\t\tself.ignoreFocus = true;\n\t\tself.$control_input[0].focus();\n\t\twindow.setTimeout(function() {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t\treturn self;\n\t},\n\n\tblur: function(dest) {\n\t\tthis.$control_input[0].blur();\n\t\tthis.onBlur(null, dest);\n\t\treturn this;\n\t},\n\n\tgetScoreFunction: function(query) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t},\n\n\tgetSearchOptions: function() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof sort === 'string') {\n\t\t\tsort = [{field: sort}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort : sort,\n\t\t\tnesting : settings.nesting,\n filter : settings.filter,\n respect_word_boundaries : settings.respect_word_boundaries\n\t\t};\n\t},\n\n\tsearch: function(query) {\n\t\tvar i, value, score, result, calculateScore;\n\t\tvar self = this;\n\t\tvar settings = self.settings;\n\t\tvar options = this.getSearchOptions();\n\n\t\tif (settings.score) {\n\t\t\tcalculateScore = self.settings.score.apply(this, [query]);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Selectize \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n if (query !== self.lastQuery) {\n if (settings.normalize) query = query.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n\t\t\tself.lastQuery = query;\n\t\t\tresult = self.sifter.search(query, $.extend(options, {score: calculateScore}));\n\t\t\tself.currentResults = result;\n\t\t} else {\n\t\t\tresult = $.extend(true, {}, self.currentResults);\n\t\t}\n\n\t\tif (settings.hideSelected) {\n\t\t\tfor (i = result.items.length - 1; i >= 0; i--) {\n\t\t\t\tif (self.items.indexOf(hash_key(result.items[i].id)) !== -1) {\n\t\t\t\t\tresult.items.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t},\n\n\trefreshOptions: function(triggerDropdown) {\n\t\tvar i, j, k, n, groups, groups_order, option, option_html, optgroup, optgroups, html, html_children, has_create_option;\n\t\tvar $active, $active_before, $create;\n\n\t\tif (typeof triggerDropdown === 'undefined') {\n\t\t\ttriggerDropdown = true;\n\t\t}\n\n\t\tvar self = this;\n\t\tvar query = (self.$control_input.val()).trim();\n\t\tvar results = self.search(query);\n\t\tvar $dropdown_content = self.$dropdown_content;\n\t\tvar active_before = self.$activeOption && hash_key(self.$activeOption.attr('data-value'));\n\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tgroups = {};\n\t\tgroups_order = [];\n\n\t\tfor (i = 0; i < n; i++) {\n\t\t\toption = self.options[results.items[i].id];\n\t\t\toption_html = self.render('option', option);\n\t\t\toptgroup = option[self.settings.optgroupField] || '';\n\t\t\toptgroups = Array.isArray(optgroup) ? optgroup : [optgroup];\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\t\t\t\tif (!self.optgroups.hasOwnProperty(optgroup) && typeof self.settings.optionGroupRegister === 'function') {\n\t\t\t\t\tvar regGroup;\n\t\t\t\t\tif (regGroup = self.settings.optionGroupRegister.apply(self, [optgroup])) {\n\t\t\t\t\t\tself.registerOptionGroup(regGroup);\n\t\t\t\t\t}\n\t\t\t\t}\n if (!self.optgroups.hasOwnProperty(optgroup)) {\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}\n\t\t\t\tif (!groups.hasOwnProperty(optgroup)) {\n\t\t\t\t\tgroups[optgroup] = document.createDocumentFragment();\n\t\t\t\t\tgroups_order.push(optgroup);\n\t\t\t\t}\n\t\t\t\tgroups[optgroup].appendChild(option_html);\n\t\t\t}\n\t\t}\n\n\t\tif (this.settings.lockOptgroupOrder) {\n\t\t\tgroups_order.sort(function(a, b) {\n\t\t\t\tvar a_order = self.optgroups[a] && self.optgroups[a].$order || 0;\n\t\t\t\tvar b_order = self.optgroups[b] && self.optgroups[b].$order || 0;\n\t\t\t\treturn a_order - b_order;\n\t\t\t});\n\t\t}\n\n\t\thtml = document.createDocumentFragment();\n\t\tfor (i = 0, n = groups_order.length; i < n; i++) {\n\t\t\toptgroup = groups_order[i];\n\t\t\tif (self.optgroups.hasOwnProperty(optgroup) && groups[optgroup].childNodes.length) {\n\t\t\t\thtml_children = document.createDocumentFragment();\n\t\t\t\thtml_children.appendChild(self.render('optgroup_header', self.optgroups[optgroup]));\n\t\t\t\thtml_children.appendChild(groups[optgroup]);\n\n\t\t\t\thtml.appendChild(self.render('optgroup', $.extend({}, self.optgroups[optgroup], {\n\t\t\t\t\thtml: domToString(html_children),\n\t\t\t\t\tdom: html_children\n\t\t\t\t})));\n\t\t\t} else {\n\t\t\t\thtml.appendChild(groups[optgroup]);\n\t\t\t}\n\t\t}\n\n\t\t$dropdown_content.html(html);\n\n\t\tif (self.settings.highlight) {\n\t\t\t$dropdown_content.removeHighlight();\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\tfor (i = 0, n = results.tokens.length; i < n; i++) {\n\t\t\t\t\thighlight($dropdown_content, results.tokens[i].regex);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!self.settings.hideSelected) {\n\t\t\tself.$dropdown.find('.selected').removeClass('selected');\n\n\t\t\tfor (i = 0, n = self.items.length; i < n; i++) {\n\t\t\t\tself.getOption(self.items[i]).addClass('selected');\n\t\t\t}\n\t\t}\n\n\t\tif (self.settings.dropdownSize.sizeType !== 'auto' && self.isOpen) {\n\t\t\tself.setupDropdownHeight();\n\t\t}\n\n\t\tself.positionDropdown();\n\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tif(self.settings.showAddOptionOnCreate) {\n\t\t\t\t$dropdown_content.prepend(self.render('option_create', {input: query}));\n\t\t\t\t$create = $($dropdown_content[0].childNodes[0]);\n\t\t\t}\n\t\t}\n\n\t\tself.hasOptions = results.items.length > 0 || ( has_create_option && self.settings.showAddOptionOnCreate ) || self.settings.setFirstOptionActive;\n\n\t\tif (self.hasOptions) {\n \t\tif (results.items.length > 0) {\n\t\t\t$active_before = active_before && self.getOption(active_before);\n\t\t\tif (results.query !== \"\" && self.settings.setFirstOptionActive) {\n\t\t\t$active = $dropdown_content.find('[data-selectable]:first')\n\t\t\t} else if (results.query !== \"\" && $active_before && $active_before.length) {\n\t\t\t$active = $active_before;\n\t\t\t} else if (self.settings.mode === 'single' && self.items.length) {\n\t\t\t$active = self.getOption(self.items[0]);\n\t\t\t}\n\t\t\tif (!$active || !$active.length) {\n\t\t\tif ($create && !self.settings.addPrecedence) {\n\t\t\t\t$active = self.getAdjacentOption($create, 1);\n\t\t\t} else {\n\t\t\t\t$active = $dropdown_content.find('[data-selectable]:first');\n\t\t\t}\n\t\t\t}\n\t\t\t} else {\n\t\t\t\t$active = $create;\n\t\t\t}\n\t\t\tself.setActiveOption($active);\n\t\t\tif (triggerDropdown && !self.isOpen) { self.open(); }\n\t\t} else {\n\t\t\tself.setActiveOption(null);\n\t\t\tif (triggerDropdown && self.isOpen) { self.close(); }\n\t\t}\n\t},\n\n\taddOption: function(data) {\n\t\tvar i, n, value, self = this;\n\n\t\tif (Array.isArray(data)) {\n\t\t\tfor (i = 0, n = data.length; i < n; i++) {\n\t\t\t\tself.addOption(data[i]);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (value = self.registerOption(data)) {\n\t\t\tself.userOptions[value] = true;\n\t\t\tself.lastQuery = null;\n\t\t\tself.trigger('option_add', value, data);\n\t\t}\n\t},\n\n\tregisterOption: function(data) {\n\t\tvar key = hash_key(data[this.settings.valueField]);\n\t\tif (typeof key === 'undefined' || key === null || this.options.hasOwnProperty(key)) return false;\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.options[key] = data;\n\t\treturn key;\n\t},\n\n\tregisterOptionGroup: function(data) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\t\tif (!key) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t},\n\n\taddOptionGroup: function(id, data) {\n\t\tdata[this.settings.optgroupValueField] = id;\n\t\tif (id = this.registerOptionGroup(data)) {\n\t\t\tthis.trigger('optgroup_add', id, data);\n\t\t}\n\t},\n\n\tremoveOptionGroup: function(id) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.renderCache = {};\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t},\n\n\tclearOptionGroups: function() {\n\t\tthis.optgroups = {};\n\t\tthis.renderCache = {};\n\t\tthis.trigger('optgroup_clear');\n\t},\n\n\tupdateOption: function(value, data) {\n\t\tvar self = this;\n\t\tvar $item, $item_new;\n\t\tvar value_new, index_item, cache_items, cache_options, order_old;\n\n\t\tvalue = hash_key(value);\n\t\tvalue_new = hash_key(data[self.settings.valueField]);\n\n\t\tif (value === null) return;\n\t\tif (!self.options.hasOwnProperty(value)) return;\n\t\tif (typeof value_new !== 'string') throw new Error('Value must be set in option data');\n\n\t\torder_old = self.options[value].$order;\n\n\t\tif (value_new !== value) {\n\t\t\tdelete self.options[value];\n\t\t\tindex_item = self.items.indexOf(value);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\t\t}\n\t\tdata.$order = data.$order || order_old;\n\t\tself.options[value_new] = data;\n\n\t\tcache_items = self.renderCache['item'];\n\t\tcache_options = self.renderCache['option'];\n\n\t\tif (cache_items) {\n\t\t\tdelete cache_items[value];\n\t\t\tdelete cache_items[value_new];\n\t\t}\n\t\tif (cache_options) {\n\t\t\tdelete cache_options[value];\n\t\t\tdelete cache_options[value_new];\n\t\t}\n\n\t\tif (self.items.indexOf(value_new) !== -1) {\n\t\t\t$item = self.getItem(value);\n\t\t\t$item_new = $(self.render('item', data));\n\t\t\tif ($item.hasClass('active')) $item_new.addClass('active');\n\t\t\t$item.replaceWith($item_new);\n\t\t}\n\n\t\tself.lastQuery = null;\n\n\t\tif (self.isOpen) {\n\t\t\tself.refreshOptions(false);\n\t\t}\n\t},\n\n\tremoveOption: function(value, silent) {\n\t\tvar self = this;\n\t\tvalue = hash_key(value);\n\n\t\tvar cache_items = self.renderCache['item'];\n\t\tvar cache_options = self.renderCache['option'];\n\t\tif (cache_items) delete cache_items[value];\n\t\tif (cache_options) delete cache_options[value];\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t},\n\n\tclearOptions: function(silent) {\n\t\tvar self = this;\n\n\t\tself.loadedSearches = {};\n\t\tself.userOptions = {};\n\t\tself.renderCache = {};\n\t\tvar options = self.options;\n\t\t$.each(self.options, function(key, value) {\n\t\t\tif(self.items.indexOf(key) == -1) {\n\t\t\t\tdelete options[key];\n\t\t\t}\n\t\t});\n\t\tself.options = self.sifter.items = options;\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_clear');\n\t\tself.clear(silent);\n\t},\n\n\tgetOption: function(value) {\n\t\treturn this.getElementWithValue(value, this.$dropdown_content.find('[data-selectable]'));\n\t},\n\n\tgetFirstOption: function() {\n\t\tvar $options = this.$dropdown.find('[data-selectable]');\n\t\treturn $options.length > 0 ? $options.eq(0) : $();\n\t},\n\n\tgetAdjacentOption: function($option, direction) {\n\t\tvar $options = this.$dropdown.find('[data-selectable]');\n\t\tvar index = $options.index($option) + direction;\n\n\t\treturn index >= 0 && index < $options.length ? $options.eq(index) : $();\n\t},\n\n\tgetElementWithValue: function(value, $els) {\n\t\tvalue = hash_key(value);\n\n\t\tif (typeof value !== 'undefined' && value !== null) {\n\t\t\tfor (var i = 0, n = $els.length; i < n; i++) {\n\t\t\t\tif ($els[i].getAttribute('data-value') === value) {\n\t\t\t\t\treturn $($els[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn $();\n\t},\n\n\tgetElementWithTextContent: function(textContent, ignoreCase ,$els) {\n\t\ttextContent = hash_key(textContent);\n\n\t\tif (typeof textContent !== 'undefined' && textContent !== null) {\n\t\t\tfor (var i = 0, n = $els.length; i < n; i++) {\n\t\t\t\tvar eleTextContent = $els[i].textContent\n\t\t\t\tif (ignoreCase == true) {\n\t\t\t\t\teleTextContent = (eleTextContent !== null) ? eleTextContent.toLowerCase() : null;\n\t\t\t\t\ttextContent = textContent.toLowerCase();\n\t\t\t\t}\n\t\t\t\tif (eleTextContent === textContent) {\n\t\t\t\t\treturn $($els[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn $();\n\t},\n\n\tgetItem: function(value) {\n\t\treturn this.getElementWithValue(value, this.$control.children());\n\t},\n\n\tgetFirstItemMatchedByTextContent: function(textContent, ignoreCase) {\n\t\tignoreCase = (ignoreCase !== null && ignoreCase === true) ? true : false;\n\t\treturn this.getElementWithTextContent(textContent, ignoreCase, this.$dropdown_content.find('[data-selectable]'));\n\t},\n\n\taddItems: function(values, silent) {\n\t\tthis.buffer = document.createDocumentFragment();\n\n\t\tvar childNodes = this.$control[0].childNodes;\n\t\tfor (var i = 0; i < childNodes.length; i++) {\n\t\t\tthis.buffer.appendChild(childNodes[i]);\n\t\t}\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\tfor (var i = 0, n = items.length; i < n; i++) {\n\t\t\tthis.isPending = (i < n - 1);\n\t\t\tthis.addItem(items[i], silent);\n\t\t}\n\n\t\tvar control = this.$control[0];\n\t\tcontrol.insertBefore(this.buffer, control.firstChild);\n\n\t\tthis.buffer = null;\n\t},\n\n\taddItem: function(value, silent) {\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events, function() {\n\t\t\tvar $item, $option, $options;\n\t\t\tvar self = this;\n\t\t\tvar inputMode = self.settings.mode;\n\t\t\tvar i, active, value_next, wasFull;\n\t\t\tvalue = hash_key(value);\n\n\t\t\tif (self.items.indexOf(value) !== -1) {\n\t\t\t\tif (inputMode === 'single') self.close();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!self.options.hasOwnProperty(value)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n $item = $(self.render('item', self.options[value]));\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, value);\n self.insertAtCaret($item);\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t\tif (self.isSetup) {\n\t\t\t\t$options = self.$dropdown_content.find('[data-selectable]');\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\t$option = self.getOption(value);\n\t\t\t\t\tvalue_next = self.getAdjacentOption($option, 1).attr('data-value');\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t\tif (value_next) {\n\t\t\t\t\t\tself.setActiveOption(self.getOption(value_next));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!$options.length || self.isFull()) {\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.updatePlaceholder();\n\t\t\t\tself.trigger('item_add', value, $item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tremoveItem: function(value, silent) {\n\t\tvar self = this;\n\t\tvar $item, i, idx;\n\n\t\t$item = (value instanceof $) ? value : self.getItem(value);\n\t\tvalue = hash_key($item.attr('data-value'));\n\t\ti = self.items.indexOf(value);\n\n\t\tif (i !== -1) {\n\t\t\tself.trigger('item_before_remove', value, $item);\n\t\t\t$item.remove();\n if ($item.hasClass('active')) {\n $item.removeClass('active');\n\t\t\t\tidx = self.$activeItems.indexOf($item[0]);\n\t\t\t\tself.$activeItems.splice(idx, 1);\n\t\t\t\t$item.removeClass('active');\n\t\t\t}\n\n\t\t\tself.items.splice(i, 1);\n\t\t\tself.lastQuery = null;\n\t\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\t\tself.removeOption(value, silent);\n\t\t\t}\n\n\t\t\tif (i < self.caretPos) {\n\t\t\t\tself.setCaret(self.caretPos - 1);\n\t\t\t}\n\n\t\t\tself.refreshState();\n\t\t\tself.updatePlaceholder();\n\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\tself.positionDropdown();\n\t\t\tself.trigger('item_remove', value, $item);\n\t\t}\n\t},\n\n\tcreateItem: function(input, triggerDropdown) {\n\t\tvar self = this;\n\t\tvar caret = self.caretPos;\n\t\tinput = input || (self.$control_input.val() || '').trim();\n\n\t\tvar callback = arguments[arguments.length - 1];\n\t\tif (typeof callback !== 'function') callback = function() {};\n\n\t\tif (typeof triggerDropdown !== 'boolean') {\n\t\t\ttriggerDropdown = true;\n\t\t}\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar setup = (typeof self.settings.create === 'function') ? this.settings.create : function(input) {\n\t\t\tvar data = {};\n\t\t\tdata[self.settings.labelField] = input;\n\t\t\tvar key = input;\n\t\t\tif ( self.settings.formatValueToKey && typeof self.settings.formatValueToKey === 'function' ) {\n\t\t\t\tkey = self.settings.formatValueToKey.apply(this, [key]);\n\t\t\t\tif (key === null || typeof key === 'undefined' || typeof key === 'object' || typeof key === 'function') {\n\t\t\t\t\tthrow new Error('Selectize \"formatValueToKey\" setting must be a function that returns a value other than object or function.');\n\t\t\t\t}\n\t\t\t}\n\t\t\tdata[self.settings.valueField] = key;\n\t\t\treturn data;\n\t\t};\n\n\t\tvar create = once(function(data) {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif (typeof value !== 'string') return callback();\n\n\t\t\tself.setTextboxValue('');\n\t\t\tself.addOption(data);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tself.refreshOptions(triggerDropdown && self.settings.mode !== 'single');\n\t\t\tcallback(data);\n\t\t});\n\n\t\tvar output = setup.apply(this, [input, create]);\n\t\tif (typeof output !== 'undefined') {\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t},\n\n\trefreshItems: function(silent) {\n\t\tthis.lastQuery = null;\n\n\t\tif (this.isSetup) {\n\t\t\tthis.addItem(this.items, silent);\n\t\t}\n\n\t\tthis.refreshState();\n\t\tthis.updateOriginalInput({silent: silent});\n\t},\n\n\trefreshState: function() {\n\t\tthis.refreshValidityState();\n\t\tthis.refreshClasses();\n\t},\n\n\trefreshValidityState: function() {\n\t\tif (!this.isRequired) return false;\n\n\t\tvar invalid = !this.items.length;\n\n\t\tthis.isInvalid = invalid;\n\t\tthis.$control_input.prop('required', invalid);\n\t\tthis.$input.prop('required', !invalid);\n\t},\n\n\trefreshClasses: function() {\n\t\tvar self = this;\n\t\tvar isFull = self.isFull();\n\t\tvar isLocked = self.isLocked;\n\n\t\tself.$wrapper\n\t\t\t.toggleClass('rtl', self.rtl);\n\n\t\tself.$control\n\t\t\t.toggleClass('focus', self.isFocused)\n\t\t\t.toggleClass('disabled', self.isDisabled)\n\t\t\t.toggleClass('required', self.isRequired)\n\t\t\t.toggleClass('invalid', self.isInvalid)\n\t\t\t.toggleClass('locked', isLocked)\n\t\t\t.toggleClass('full', isFull).toggleClass('not-full', !isFull)\n\t\t\t.toggleClass('input-active', self.isFocused && !self.isInputHidden)\n\t\t\t.toggleClass('dropdown-active', self.isOpen)\n\t\t\t.toggleClass('has-options', !$.isEmptyObject(self.options))\n\t\t\t.toggleClass('has-items', self.items.length > 0);\n\n\t\tself.$control_input.data('grow', !isFull && !isLocked);\n\t},\n\n\tisFull: function() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t},\n\n\tupdateOriginalInput: function(opts) {\n\t\tvar i, n, existing, fresh, old, $options, label, value, values, self = this;\n\t\topts = opts || {};\n\n\t\tif (self.tagType === TAG_SELECT) {\n\t\t\t$options = self.$input.find('option');\n\t\t\texisting = [];\n\t\t\tfresh = [];\n\t\t\told = [];\n\t\t\tvalues = [];\n\n\t\t\t$options.get().forEach(function(option) {\n\t\t\t\texisting.push(option.value);\n\t\t\t});\n\n\t\t\tself.items.forEach(function(item) {\n\t\t\t\tlabel = self.options[item][self.settings.labelField] || '';\n\n\t\t\t\tvalues.push(item);\n\n\t\t\t\tif (existing.indexOf(item) != -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfresh.push('');\n\t\t\t});\n\n\t\t\told = existing.filter(function(value) {\n\t\t\t\treturn values.indexOf(value) < 0;\n\t\t\t}).map(function(value) {\n\t\t\t\treturn 'option[value=\"' + escape_html(value) + '\"]';\n\t\t\t});\n\n\t\t\tif (existing.length - old.length + fresh.length === 0 && !self.$input.attr('multiple')) {\n\t\t\t\tfresh.push('');\n\t\t\t}\n\n\t\t\tself.$input.find(old.join(', ')).remove();\n\t\t\tself.$input.append(fresh.join(''));\n\t\t} else {\n\t\t\tself.$input.val(self.getValue());\n\t\t\tself.$input.attr('value',self.$input.val());\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.$input.val());\n\t\t\t}\n\t\t}\n\t},\n\n\tupdatePlaceholder: function() {\n\t\tif (!this.settings.placeholder) return;\n\t\tvar $input = this.$control_input;\n\n\t\tif (this.items.length) {\n\t\t\t$input.removeAttr('placeholder');\n\t\t} else {\n\t\t\t$input.attr('placeholder', this.settings.placeholder);\n\t\t}\n\t\t$input.triggerHandler('update', {force: true});\n\t},\n\n\topen: function() {\n\t\tvar self = this;\n\n\t\tif (\n self.isLocked ||\n self.isOpen ||\n (self.settings.mode === \"multi\" && self.isFull())\n )\n return;\n\t\tself.focus();\n\t\tself.isOpen = true;\n\t\tself.refreshState();\n\t\tself.$dropdown.css({ visibility: 'hidden', display: 'block' });\n\t\tself.setupDropdownHeight();\n self.positionDropdown();\n\t\tself.$dropdown.css({visibility: 'visible'});\n\t\tself.trigger('dropdown_open', self.$dropdown);\n\t},\n\n\tclose: function() {\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\tif (self.isBlurring) {\n\t\t\t\tself.$control_input[0].blur(); \n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tself.$dropdown.hide();\n\t\tself.setActiveOption(null);\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.$dropdown);\n\t},\n\n\tpositionDropdown: function() {\n\t\tvar $control = this.$control;\n\t\tvar offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\n\t\toffset.top += $control.outerHeight(true);\n\t\tvar w = this.$wrapper[0].style.width !== 'fit-content' ? this.settings.dropdownParent === 'body' ? 'max-content' : '100%' : 'max-content';\n\t\tif (this.settings.minWidth && this.settings.minWidth > w)\n\t\t{\n\t\t\tw = this.settings.minWidth;\n\t\t}\n\n if (this.settings.dropdownParent !== 'body' && w === 'max-content' && $control.outerWidth(true) >= this.$dropdown.outerWidth(true)) {\n w = '100%';\n }\n\n this.$dropdown.css({\n\t\t\twidth : w,\n minWidth : $control.outerWidth(true),\n\t\t\ttop : offset.top,\n\t\t\tleft : offset.left\n\t\t});\n\t},\n\n setupDropdownHeight: function () {\n if (typeof this.settings.dropdownSize === 'object' && this.settings.dropdownSize.sizeType !== 'auto') {\n var height = this.settings.dropdownSize.sizeValue;\n\n if (this.settings.dropdownSize.sizeType === 'numberItems') {\n var $items = this.$dropdown_content.find('*').not('.optgroup, .highlight').not(this.settings.ignoreOnDropwdownHeight);\n var totalHeight = 0;\n var marginTop = 0;\n var marginBottom = 0;\n var separatorHeight = 0;\n\n\n for (var i = 0; i < height; i++) {\n var $item = $($items[i]);\n\n if ($item.length === 0) {\n break;\n }\n\n totalHeight += $item.outerHeight(true);\n if (typeof $item.data('selectable') == 'undefined') {\n if ($item.hasClass('optgroup-header')) {\n var styles = window.getComputedStyle($item.parent()[0], ':before');\n\n if (styles) {\n marginTop = styles.marginTop ? Number(styles.marginTop.replace(/\\W*(\\w)\\w*/g, '$1')) : 0;\n marginBottom = styles.marginBottom ? Number(styles.marginBottom.replace(/\\W*(\\w)\\w*/g, '$1')) : 0;\n separatorHeight = styles.borderTopWidth ? Number(styles.borderTopWidth.replace(/\\W*(\\w)\\w*/g, '$1')) : 0;\n }\n }\n height++;\n }\n\n }\n\n var paddingTop = this.$dropdown_content.css('padding-top') ? Number(this.$dropdown_content.css('padding-top').replace(/\\W*(\\w)\\w*/g, '$1')) : 0;\n var paddingBottom = this.$dropdown_content.css('padding-bottom') ? Number(this.$dropdown_content.css('padding-bottom').replace(/\\W*(\\w)\\w*/g, '$1')) : 0;\n\n height = (totalHeight + paddingTop + paddingBottom + marginTop + marginBottom + separatorHeight) + 'px';\n } else if (this.settings.dropdownSize.sizeType !== 'fixedHeight') {\n console.warn('Selectize.js - Value of \"sizeType\" must be \"fixedHeight\" or \"numberItems');\n return;\n }\n\n this.$dropdown_content.css({ height: height, maxHeight: 'none' });\n }\n },\n\n\tclear: function(silent) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\t\tself.$control.children(':not(input)').remove();\n\t\tself.items = [];\n\t\tself.lastQuery = null;\n\t\tself.setCaret(0);\n\t\tself.setActiveItem(null);\n\t\tself.updatePlaceholder();\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.showInput();\n\t\tself.trigger('clear');\n\t},\n\n\tinsertAtCaret: function($el) {\n\t\tvar caret = Math.min(this.caretPos, this.items.length);\n var el = $el[0];\n\t\tvar target = this.buffer || this.$control[0];\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.childNodes[caret]);\n\t\t}\n\n\t\tthis.setCaret(caret + 1);\n\t},\n\n\tdeleteSelection: function(e) {\n\t\tvar i, n, direction, selection, values, caret, option_select, $option_select, $tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getInputSelection(self.$control_input[0]);\n\n\t\tif (self.$activeOption && !self.settings.hideSelected) {\n\t\t\tif (typeof self.settings.deselectBehavior === 'string' && self.settings.deselectBehavior === 'top') {\n\t\t\t\toption_select = self.getFirstOption().attr('data-value');\n\t\t\t} else {\n\t\t\t\toption_select = self.getAdjacentOption(self.$activeOption, -1).attr('data-value');\n\t\t\t}\n\t\t}\n\n\t\tvalues = [];\n\n\t\tif (self.$activeItems.length) {\n\t\t\t$tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first'));\n\t\t\tcaret = self.$control.children(':not(input)').index($tail);\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\tfor (i = 0, n = self.$activeItems.length; i < n; i++) {\n\t\t\t\tvalues.push($(self.$activeItems[i]).attr('data-value'));\n\t\t\t}\n\t\t\tif (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\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.$control_input.val().length) {\n\t\t\t\tvalues.push(self.items[self.caretPos]);\n\t\t\t}\n\t\t}\n\n\t\tif (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false)) {\n\t\t\treturn false;\n\t\t}\n\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(true);\n\n\t\tif (option_select) {\n\t\t\t$option_select = self.getOption(option_select);\n\t\t\tif ($option_select.length) {\n\t\t\t\tself.setActiveOption($option_select);\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\tadvanceSelection: function(direction, e) {\n\t\tvar tail, selection, idx, valueLength, cursorAtEdge, $tail;\n\t\tvar self = this;\n\n\t\tif (direction === 0) return;\n\t\tif (self.rtl) direction *= -1;\n\n\t\ttail = direction > 0 ? 'last' : 'first';\n\t\tselection = getInputSelection(self.$control_input[0]);\n\n\t\tif (self.isFocused && !self.isInputHidden) {\n\t\t\tvalueLength = self.$control_input.val().length;\n\t\t\tcursorAtEdge = direction < 0\n\t\t\t\t? selection.start === 0 && selection.length === 0\n\t\t\t\t: selection.start === valueLength;\n\n\t\t\tif (cursorAtEdge && !valueLength) {\n\t\t\t\tself.advanceCaret(direction, e);\n\t\t\t}\n\t\t} else {\n\t\t\t$tail = self.$control.children('.active:' + tail);\n\t\t\tif ($tail.length) {\n\t\t\t\tidx = self.$control.children(':not(input)').index($tail);\n\t\t\t\tself.setActiveItem(null);\n\t\t\t\tself.setCaret(direction > 0 ? idx + 1 : idx);\n\t\t\t}\n\t\t}\n\t},\n\n\tadvanceCaret: function(direction, e) {\n\t\tvar self = this, fn, $adj;\n\n\t\tif (direction === 0) return;\n\n\t\tfn = direction > 0 ? 'next' : 'prev';\n\t\tif (self.isShiftDown) {\n\t\t\t$adj = self.$control_input[fn]();\n\t\t\tif ($adj.length) {\n\t\t\t\tself.hideInput();\n\t\t\t\tself.setActiveItem($adj);\n\t\t\t\te && e.preventDefault();\n\t\t\t}\n\t\t} else {\n\t\t\tself.setCaret(self.caretPos + direction);\n\t\t}\n\t},\n\n\tsetCaret: function(i) {\n\t\tvar self = this;\n\n\t\tif (self.settings.mode === 'single') {\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\t\t}\n\n\t\tif(!self.isPending) {\n\t\t\tvar j, n, fn, $children, $child;\n\t\t\t$children = self.$control.children(':not(input)');\n\t\t\tfor (j = 0, n = $children.length; j < n; j++) {\n\t\t\t\t$child = $($children[j]).detach();\n\t\t\t\tif (j < i) {\n\t\t\t\t\tself.$control_input.before($child);\n\t\t\t\t} else {\n\t\t\t\t\tself.$control.append($child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = i;\n\t},\n\n\tlock: function() {\n\t\tthis.close();\n\t\tthis.isLocked = true;\n\t\tthis.refreshState();\n\t},\n\n\tunlock: function() {\n\t\tthis.isLocked = false;\n\t\tthis.refreshState();\n\t},\n\n\tdisable: function() {\n\t\tvar self = this;\n\t\tself.$input.prop('disabled', true);\n\t\tself.$control_input.prop('disabled', true).prop('tabindex', -1);\n\t\tself.isDisabled = true;\n\t\tself.lock();\n\t},\n\n\tenable: function() {\n\t\tvar self = this;\n\t\tself.$input.prop('disabled', false);\n\t\tself.$control_input.prop('disabled', false).prop('tabindex', self.tabIndex);\n\t\tself.isDisabled = false;\n\t\tself.unlock();\n\t},\n\n\tdestroy: function() {\n\t\tvar self = this;\n\t\tvar eventNS = self.eventNS;\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\n\t\t\t.html('')\n\t\t\t.append(revertSettings.$children)\n\t\t\t.removeAttr('tabindex')\n\t\t\t.removeClass('selectized')\n\t\t\t.attr({tabindex: revertSettings.tabindex})\n\t\t\t.show();\n\n\t\tself.$control_input.removeData('grow');\n\t\tself.$input.removeData('selectize');\n\n\t\tif (--Selectize.count == 0 && Selectize.$testInput) {\n\t\t\tSelectize.$testInput.remove();\n\t\t\tSelectize.$testInput = undefined;\n\t\t}\n\n\t\t$(window).off(eventNS);\n\t\t$(document).off(eventNS);\n\t\t$(document.body).off(eventNS);\n\n\t\tdelete self.$input[0].selectize;\n\t},\n\n\trender: function(templateName, data) {\n\t\tvar value, id, label;\n\t\tvar html = '';\n\t\tvar cache = false;\n\t\tvar self = this;\n\t\tvar regex_tag = /^[\\t \\r\\n]*<([a-z][a-z0-9\\-_]*(?:\\:[a-z][a-z0-9\\-_]*)?)/i;\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tvalue = hash_key(data[self.settings.valueField]);\n\t\t\tcache = !!value;\n\t\t}\n\n\t\tif (cache) {\n\t\t\tif (!isset(self.renderCache[templateName])) {\n\t\t\t\tself.renderCache[templateName] = {};\n\t\t\t}\n\t\t\tif (self.renderCache[templateName].hasOwnProperty(value)) {\n\t\t\t\treturn self.renderCache[templateName][value];\n\t\t\t}\n\t\t}\n\n\t\thtml = $(self.settings.render[templateName].apply(this, [data, escape_html]));\n\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\t\t\tif (!data[self.settings.disabledField]) {\n\t\t\t\thtml.attr('data-selectable', '');\n\t\t\t}\n\t\t}\n\t\telse if (templateName === 'optgroup') {\n\t\t\tid = data[self.settings.optgroupValueField] || '';\n\t\t\thtml.attr('data-group', id);\n\t\t\tif(data[self.settings.disabledField]) {\n\t\t\t\thtml.attr('data-disabled', '');\n\t\t\t}\n\t\t}\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\thtml.attr('data-value', value || '');\n\t\t}\n\n\t\tif (cache) {\n\t\t\tself.renderCache[templateName][value] = html[0];\n\t\t}\n\n\t\treturn html[0];\n\t},\n\n\tclearCache: function(templateName) {\n\t\tvar self = this;\n\t\tif (typeof templateName === 'undefined') {\n\t\t\tself.renderCache = {};\n\t\t} else {\n\t\t\tdelete self.renderCache[templateName];\n\t\t}\n\t},\n\n\tcanCreate: function(input) {\n\t\tvar self = this;\n\t\tif (!self.settings.create) return false;\n\t\tvar filter = self.settings.createFilter;\n\t\treturn input.length\n\t\t\t&& (typeof filter !== 'function' || filter.apply(self, [input]))\n\t\t\t&& (typeof filter !== 'string' || new RegExp(filter).test(input))\n\t\t\t&& (!(filter instanceof RegExp) || filter.test(input));\n\t}\n});\n\nSelectize.count = 0;\nSelectize.defaults = {\n options: [],\n optgroups: [],\n\n plugins: [],\n delimiter: ',',\n splitOn: null, \n persist: true,\n diacritics: true,\n create: false,\n showAddOptionOnCreate: true,\n createOnBlur: false,\n createFilter: null,\n highlight: true,\n openOnFocus: true,\n maxOptions: 1000,\n maxItems: null,\n hideSelected: null,\n addPrecedence: false,\n selectOnTab: true,\n preload: false,\n allowEmptyOption: false,\n showEmptyOptionInDropdown: false,\n emptyOptionLabel: '--',\n setFirstOptionActive: false,\n closeAfterSelect: false,\n closeDropdownThreshold: 250, \n\n scrollDuration: 60,\n deselectBehavior: 'previous', \n loadThrottle: 300,\n loadingClass: 'loading',\n\n dataAttr: 'data-data',\n optgroupField: 'optgroup',\n valueField: 'value',\n labelField: 'text',\n disabledField: 'disabled',\n optgroupLabelField: 'label',\n optgroupValueField: 'value',\n lockOptgroupOrder: false,\n\n sortField: '$order',\n searchField: ['text'],\n searchConjunction: 'and',\n respect_word_boundaries: false, \n normalize: true,\n\n mode: null,\n wrapperClass: '',\n inputClass: '',\n dropdownClass: '',\n dropdownContentClass: '',\n\n dropdownParent: null,\n\n copyClassesToDropdown: true,\n dropdownSize: {\n sizeType: 'auto',\n sizeValue: 'auto',\n },\n\n ignoreOnDropwdownHeight: 'img, i',\n search: true,\n showArrow: true,\n\n render: {\n }\n};\n\n$.fn.selectize = function (settings_user) {\n var defaults = $.fn.selectize.defaults;\n var settings = $.extend({}, defaults, settings_user);\n var attr_data = settings.dataAttr;\n var field_label = settings.labelField;\n var field_value = settings.valueField;\n var field_disabled = settings.disabledField;\n var field_optgroup = settings.optgroupField;\n var field_optgroup_label = settings.optgroupLabelField;\n var field_optgroup_value = settings.optgroupValueField;\n\n var init_textbox = function ($input, settings_element) {\n var i, n, values, option;\n\n var data_raw = $input.attr(attr_data);\n\n if (!data_raw) {\n var value = ($input.val() || '').trim();\n if (!settings.allowEmptyOption && !value.length) return;\n values = value.split(settings.delimiter);\n for (i = 0, n = values.length; i < n; i++) {\n option = {};\n option[field_label] = values[i];\n option[field_value] = values[i];\n settings_element.options.push(option);\n }\n settings_element.items = values;\n } else {\n settings_element.options = JSON.parse(data_raw);\n for (i = 0, n = settings_element.options.length; i < n; i++) {\n settings_element.items.push(settings_element.options[i][field_value]);\n }\n }\n };\n\n var init_select = function ($input, settings_element) {\n var i, n, tagName, $children, order = 0;\n var options = settings_element.options;\n var optionsMap = {};\n\n var readData = function ($el) {\n var data = attr_data && $el.attr(attr_data);\n var allData = $el.data();\n var obj = {};\n\n if (typeof data === 'string' && data.length) {\n if (isJSON(data)) {\n Object.assign(obj, JSON.parse(data))\n } else {\n obj[data] = data;\n }\n }\n\n\n Object.assign(obj, allData);\n\n return obj || null;\n };\n\n var addOption = function ($option, group) {\n $option = $($option);\n\n var value = hash_key($option.val());\n if (!value && !settings.allowEmptyOption) return;\n\n if (optionsMap.hasOwnProperty(value)) {\n if (group) {\n var arr = optionsMap[value][field_optgroup];\n if (!arr) {\n optionsMap[value][field_optgroup] = group;\n } else if (!Array.isArray(arr)) {\n optionsMap[value][field_optgroup] = [arr, group];\n } else {\n arr.push(group);\n }\n }\n return;\n }\n\n var option = readData($option) || {};\n option[field_label] = option[field_label] || $option.text();\n option[field_value] = option[field_value] || value;\n option[field_disabled] = option[field_disabled] || $option.prop('disabled');\n option[field_optgroup] = option[field_optgroup] || group;\n option.styles = $option.attr('style') || '';\n option.classes = $option.attr('class') || '';\n\n optionsMap[value] = option;\n options.push(option);\n\n if ($option.is(':selected')) {\n settings_element.items.push(value);\n }\n };\n\n var addGroup = function ($optgroup) {\n var i, n, id, optgroup, $options;\n\n $optgroup = $($optgroup);\n id = $optgroup.attr('label');\n\n if (id) {\n optgroup = readData($optgroup) || {};\n optgroup[field_optgroup_label] = id;\n optgroup[field_optgroup_value] = id;\n optgroup[field_disabled] = $optgroup.prop('disabled');\n settings_element.optgroups.push(optgroup);\n }\n\n $options = $('option', $optgroup);\n for (i = 0, n = $options.length; i < n; i++) {\n addOption($options[i], id);\n }\n };\n\n settings_element.maxItems = $input.attr('multiple') ? null : 1;\n\n $children = $input.children();\n for (i = 0, n = $children.length; i < n; i++) {\n tagName = $children[i].tagName.toLowerCase();\n if (tagName === 'optgroup') {\n addGroup($children[i]);\n } else if (tagName === 'option') {\n addOption($children[i]);\n }\n }\n };\n\n return this.each(function () {\n if (this.selectize) return;\n\n var instance;\n var $input = $(this);\n var tag_name = this.tagName.toLowerCase();\n var placeholder = $input.attr('placeholder') || $input.attr('data-placeholder');\n if (!placeholder && !settings.allowEmptyOption) {\n placeholder = $input.children('option[value=\"\"]').text();\n }\n if (settings.allowEmptyOption && settings.showEmptyOptionInDropdown && !$input.children('option[value=\"\"]').length) {\n var input_html = $input.html();\n var label = escape_html(settings.emptyOptionLabel || '--');\n $input.html('' + input_html);\n }\n\n var settings_element = {\n 'placeholder': placeholder,\n 'options': [],\n 'optgroups': [],\n 'items': []\n };\n\n if (tag_name === 'select') {\n init_select($input, settings_element);\n } else {\n init_textbox($input, settings_element);\n }\n\n instance = new Selectize($input, $.extend(true, {}, defaults, settings_element, settings_user));\n instance.settings_user = settings_user;\n });\n};\n\n$.fn.selectize.defaults = Selectize.defaults;\n$.fn.selectize.support = {\n validity: SUPPORTS_VALIDITY_API\n};\n\nSelectize.define(\"auto_position\", function () {\n var self = this;\n\n const POSITION = {\n top: 'top',\n bottom: 'bottom',\n };\n\n self.positionDropdown = (function () {\n return function () {\n const $control = this.$control;\n const offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\n offset.top += $control.outerHeight(true);\n\n const dropdownHeight = this.$dropdown.prop('scrollHeight') + 5; \n const controlPosTop = this.$control.get(0).getBoundingClientRect().top;\n const wrapperHeight = this.$wrapper.height();\n const controlPosBottom = self.$control.get(0).getBoundingClientRect().bottom\n const position =\n controlPosTop + dropdownHeight + wrapperHeight > window.innerHeight &&\n controlPosBottom - dropdownHeight - wrapperHeight >= 0 ?\n POSITION.top :\n POSITION.bottom;\n let w = this.$wrapper[0].style.width !== 'fit-content' ? this.settings.dropdownParent === 'body' ? 'max-content' : '100%' : 'max-content';\n const styles = {\n width: w,\n minWidth : $control.outerWidth(true),\n left: offset.left\n };\n\n if (position === POSITION.top) {\n const styleToAdd = { bottom: offset.top, top: 'unset' };\n\n if (this.settings.dropdownParent === 'body') {\n styleToAdd.top = offset.top - this.$dropdown.outerHeight(true) - $control.outerHeight(true);\n styleToAdd.bottom = 'unset';\n }\n Object.assign(styles, styleToAdd);\n this.$dropdown.addClass('selectize-position-top');\n this.$control.addClass('selectize-position-top');\n } else {\n Object.assign(styles, { top: offset.top, bottom: 'unset' });\n this.$dropdown.removeClass('selectize-position-top');\n this.$control.removeClass('selectize-position-top');\n }\n\n if (this.settings.dropdownParent !== 'body' && w === 'max-content' && $control.outerWidth(true) >= this.$dropdown.outerWidth(true)) {\n w = '100%';\n }\n\n this.$dropdown.css(styles);\n };\n }());\n});\n\nSelectize.define('auto_select_on_type', function(options) {\n\tvar self = this;\n\n\tself.onBlur = (function() {\n\t\tvar originalBlur = self.onBlur;\n\t\treturn function(e) {\n\t\t\tvar $matchedItem = self.getFirstItemMatchedByTextContent(self.lastValue, true);\n\t\t\tif (typeof $matchedItem.attr('data-value') !== 'undefined' && self.getValue() !== $matchedItem.attr('data-value'))\n\t\t\t{\n\t\t\t\tself.setValue($matchedItem.attr('data-value'));\n\t\t\t}\n\t\t\treturn originalBlur.apply(this, arguments);\n\t\t}\n\t}());\n});\n\nSelectize.define(\"autofill_disable\", function (options) {\n var self = this;\n\n self.setup = (function () {\n var original = self.setup;\n return function () {\n original.apply(self, arguments);\n\n self.$control_input.attr({ name: nanoid(21), autocomplete: nanoid(21) });\n };\n })();\n});\n\nSelectize.define(\"clear_button\", function (options) {\n var self = this;\n\n options = $.extend(\n {\n title: \"Clear\",\n className: \"clear\",\n label: \"×\",\n html: function (data) {\n return (\n ' ' + data.label + ''\n );\n },\n },\n options\n );\n\n self.setup = (function () {\n var original = self.setup;\n return function () {\n original.apply(self, arguments);\n self.$button_clear = $(options.html(options));\n\n if (self.settings.mode === \"single\") self.$wrapper.addClass(\"single\");\n\n self.$wrapper.append(self.$button_clear);\n\n if (self.getValue() === \"\" || self.getValue().length === 0) {\n self.$wrapper.find(\".\" + options.className).css(\"display\", \"none\");\n }\n\n self.on(\"change\", function () {\n if (self.getValue() === \"\" || self.getValue().length === 0) {\n self.$wrapper.find(\".\" + options.className).css(\"display\", \"none\");\n } else {\n self.$wrapper.find(\".\" + options.className).css(\"display\", \"\");\n }\n });\n\n self.$wrapper.on(\"click\", \".\" + options.className, function (e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n e.stopPropagation();\n\n if (self.isLocked) return;\n\n self.clear();\n self.$wrapper.find(\".\" + options.className).css(\"display\", \"none\");\n });\n };\n })();\n});\n\nSelectize.define('drag_drop', function(options) {\n\tif (!$.fn.sortable) throw new Error('The \"drag_drop\" plugin requires jQuery UI \"sortable\".');\n\tif (this.settings.mode !== 'multi') return;\n\tvar self = this;\n\n\tself.lock = (function() {\n\t\tvar original = self.lock;\n\t\treturn function() {\n\t\t\tvar sortable = self.$control.data('sortable');\n\t\t\tif (sortable) sortable.disable();\n\t\t\treturn original.apply(self, arguments);\n\t\t};\n\t})();\n\n\tself.unlock = (function() {\n\t\tvar original = self.unlock;\n\t\treturn function() {\n\t\t\tvar sortable = self.$control.data('sortable');\n\t\t\tif (sortable) sortable.enable();\n\t\t\treturn original.apply(self, arguments);\n\t\t};\n\t})();\n\n\tself.setup = (function() {\n\t\tvar original = self.setup;\n\t\treturn function() {\n\t\t\toriginal.apply(this, arguments);\n\n\t\t\tvar $control = self.$control.sortable({\n\t\t\t\titems: '[data-value]',\n\t\t\t\tforcePlaceholderSize: true,\n\t\t\t\tdisabled: self.isLocked,\n\t\t\t\tstart: function(e, ui) {\n\t\t\t\t\tui.placeholder.css('width', ui.helper.css('width'));\n\t\t\t\t\t$control.addClass('dragging');\n\t\t\t\t},\n\t\t\t\tstop: function() {\n\t\t\t\t\t$control.removeClass('dragging');\n\t\t\t\t\tvar active = self.$activeItems ? self.$activeItems.slice() : null;\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$control.children('[data-value]').each(function() {\n\t\t\t\t\t\tvalues.push($(this).attr('data-value'));\n\t\t\t\t\t});\n\t\t\t\t\tself.isFocused = false;\n\t\t\t\t\tself.setValue(values);\n\t\t\t\t\tself.isFocused = true;\n\t\t\t\t\tself.setActiveItem(active);\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t})();\n\n});\n\nSelectize.define('dropdown_header', function(options) {\n\tvar self = this;\n\n\toptions = $.extend({\n\t\ttitle : 'Untitled',\n\t\theaderClass : 'selectize-dropdown-header',\n\t\ttitleRowClass : 'selectize-dropdown-header-title',\n\t\tlabelClass : 'selectize-dropdown-header-label',\n\t\tcloseClass : 'selectize-dropdown-header-close',\n\n\t\thtml: function(data) {\n\t\t\treturn (\n\t\t\t\t'
' +\n\t\t\t\t\t'
' +\n\t\t\t\t\t\t'' + data.title + '' +\n\t\t\t\t\t\t'×' +\n\t\t\t\t\t'
' +\n\t\t\t\t'
'\n\t\t\t);\n\t\t}\n\t}, options);\n\n\tself.setup = (function() {\n\t\tvar original = self.setup;\n\t\treturn function() {\n\t\t\toriginal.apply(self, arguments);\n\t\t\tself.$dropdown_header = $(options.html(options));\n self.$dropdown.prepend(self.$dropdown_header);\n self.$dropdown_header.find('.' + options.closeClass).on('click', function () {\n self.close();\n });\n\t\t};\n\t})();\n\n});\n\nSelectize.define('optgroup_columns', function(options) {\n\tvar self = this;\n\n\toptions = $.extend({\n\t\tequalizeWidth : true,\n\t\tequalizeHeight : true\n\t}, options);\n\n\tthis.getAdjacentOption = function($option, direction) {\n\t\tvar $options = $option.closest('[data-group]').find('[data-selectable]');\n\t\tvar index = $options.index($option) + direction;\n\n\t\treturn index >= 0 && index < $options.length ? $options.eq(index) : $();\n\t};\n\n\tthis.onKeyDown = (function() {\n\t\tvar original = self.onKeyDown;\n\t\treturn function(e) {\n\t\t\tvar index, $option, $options, $optgroup;\n\n\t\t\tif (this.isOpen && (e.keyCode === KEY_LEFT || e.keyCode === KEY_RIGHT)) {\n\t\t\t\tself.ignoreHover = true;\n\t\t\t\t$optgroup = this.$activeOption.closest('[data-group]');\n\t\t\t\tindex = $optgroup.find('[data-selectable]').index(this.$activeOption);\n\n\t\t\t\tif(e.keyCode === KEY_LEFT) {\n\t\t\t\t\t$optgroup = $optgroup.prev('[data-group]');\n\t\t\t\t} else {\n\t\t\t\t\t$optgroup = $optgroup.next('[data-group]');\n\t\t\t\t}\n\n\t\t\t\t$options = $optgroup.find('[data-selectable]');\n\t\t\t\t$option = $options.eq(Math.min($options.length - 1, index));\n\t\t\t\tif ($option.length) {\n\t\t\t\t\tthis.setActiveOption($option);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn original.apply(this, arguments);\n\t\t};\n\t})();\n\n\tvar getScrollbarWidth = function() {\n\t\tvar div;\n\t\tvar width = getScrollbarWidth.width;\n\t\tvar doc = document;\n\n\t\tif (typeof width === 'undefined') {\n\t\t\tdiv = doc.createElement('div');\n\t\t\tdiv.innerHTML = '
';\n\t\t\tdiv = div.firstChild;\n\t\t\tdoc.body.appendChild(div);\n\t\t\twidth = getScrollbarWidth.width = div.offsetWidth - div.clientWidth;\n\t\t\tdoc.body.removeChild(div);\n\t\t}\n\t\treturn width;\n\t};\n\n\tvar equalizeSizes = function() {\n\t\tvar i, n, height_max, width, width_last, width_parent, $optgroups;\n\n\t\t$optgroups = $('[data-group]', self.$dropdown_content);\n\t\tn = $optgroups.length;\n\t\tif (!n || !self.$dropdown_content.width()) return;\n\n\t\tif (options.equalizeHeight) {\n\t\t\theight_max = 0;\n\t\t\tfor (i = 0; i < n; i++) {\n\t\t\t\theight_max = Math.max(height_max, $optgroups.eq(i).height());\n\t\t\t}\n\t\t\t$optgroups.css({height: height_max});\n\t\t}\n\n\t\tif (options.equalizeWidth) {\n\t\t\twidth_parent = self.$dropdown_content.innerWidth() - getScrollbarWidth();\n\t\t\twidth = Math.round(width_parent / n);\n\t\t\t$optgroups.css({width: width});\n\t\t\tif (n > 1) {\n\t\t\t\twidth_last = width_parent - width * (n - 1);\n\t\t\t\t$optgroups.eq(n - 1).css({width: width_last});\n\t\t\t}\n\t\t}\n\t};\n\n\tif (options.equalizeHeight || options.equalizeWidth) {\n\t\thook.after(this, 'positionDropdown', equalizeSizes);\n\t\thook.after(this, 'refreshOptions', equalizeSizes);\n\t}\n\n\n});\n\nSelectize.define('read-only', function(options){\n\tvar self = this;\n\tthis.setup = (function() {\n\t\tvar original = self.setup;\n\t\treturn function() {\n\t\t\toriginal.apply(this, arguments);\n\t\t\tif(this.$dropdown.hasClass(\"read-only\"))this.$control_input.attr('readonly', 'readonly');\n\t\t};\n\t})();\n\tthis.readonly = (function() {\n\t\treturn function(state) {\n\t\t\tif(state){\n\t\t\t\tthis.$control_input.attr('readonly', 'readonly');\n\t\t\t\tthis.$dropdown.addClass(\"read-only\")\n\t\t\t}\n\t\t\telse{\n\t\t\t\tthis.$control_input.removeAttr('readonly');\n\t\t\t\tthis.$dropdown.removeClass(\"read-only\")\n\t\t\t}\n\t\t};\n\t})();\n});\n\nSelectize.define('remove_button', function (options) {\n if (this.settings.mode === 'single') return;\n\n\toptions = $.extend({\n\t\t\tlabel : '×',\n\t\t\ttitle : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend : true\n\t\t}, options);\n\n\t\tvar multiClose = function(thisRef, options) {\n\n\t\t\tvar self = thisRef;\n\t\t\tvar html = '' + options.label + '';\n\n\t\t\tvar append = function(html_container, html_element) {\n\t\t\t\tvar pos = html_container.search(/(<\\/[^>]+>\\s*)$/);\n\t\t\t\treturn html_container.substring(0, pos) + html_element + html_container.substring(pos);\n\t\t\t};\n\n\t\t\tthisRef.setup = (function() {\n\t\t\t\tvar original = self.setup;\n\t\t\t\treturn function() {\n\t\t\t\t\tif (options.append) {\n\t\t\t\t\t\tvar render_item = self.settings.render.item;\n\t\t\t\t\t\tself.settings.render.item = function(data) {\n\t\t\t\t\t\t\treturn append(render_item.apply(thisRef, arguments), html);\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\toriginal.apply(thisRef, arguments);\n\n\t\t\t\t\tthisRef.$control.on('click', '.' + options.className, function(e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif (self.isLocked) return;\n\n\t\t\t\t\t\tvar $item = $(e.currentTarget).parent();\n\t\t\t\t\t\tself.setActiveItem($item);\n\t\t\t\t\t\tif (self.deleteSelection()) {\n\t\t\t\t\t\t\tself.setCaret(self.items.length);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\n\t\t\t\t};\n\t\t\t})();\n\t\t};\n\n multiClose(this, options);\n});\n\nSelectize.define('restore_on_backspace', function(options) {\n\tvar self = this;\n\n\toptions.text = options.text || function(option) {\n\t\treturn option[this.settings.labelField];\n\t};\n\n\tthis.onKeyDown = (function() {\n\t\tvar original = self.onKeyDown;\n\t\treturn function(e) {\n\t\t\tvar index, option;\n\t\t\tif (e.keyCode === KEY_BACKSPACE && this.$control_input.val() === '' && !this.$activeItems.length) {\n\t\t\t\tindex = this.caretPos - 1;\n\t\t\t\tif (index >= 0 && index < this.items.length) {\n\t\t\t\t\toption = this.options[this.items[index]];\n\t\t\t\t\tif (this.deleteSelection(e)) {\n\t\t\t\t\t\tthis.setTextboxValue(options.text.apply(this, [option]));\n\t\t\t\t\t\tthis.refreshOptions(true);\n\t\t\t\t\t}\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn original.apply(this, arguments);\n\t\t};\n\t})();\n});\n\nSelectize.define('select_on_focus', function(options) {\n\tvar self = this;\n\n\tself.on('focus', function() {\n\t\tvar originalFocus = self.onFocus;\n\t\treturn function(e) {\n\t\t\tvar value = self.getItem(self.getValue()).text();\n\t\t\tself.clear();\n\t\t\tself.setTextboxValue(value);\n\t\t\tself.$control_input.select();\n\t\t\tsetTimeout( function () {\n\t\t\t\tif (self.settings.selectOnTab) {\n\t\t\t\t\tself.setActiveOption(self.getFirstItemMatchedByTextContent(value));\n\t\t\t\t}\n\t\t\t\tself.settings.score = null;\n\t\t\t},0);\n\t\t\treturn originalFocus.apply(this, arguments);\n\t\t};\n\t}());\n\n\tself.onBlur = (function() {\n\t\tvar originalBlur = self.onBlur;\n\t\treturn function(e) {\n\t\t\tif (self.getValue() === \"\" && self.lastValidValue !== self.getValue()) {\n\t\t\t\tself.setValue(self.lastValidValue);\n\t\t\t}\n\t\t\tsetTimeout( function () {\n\t\t\t\tself.settings.score = function() {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}, 0 );\n\t\t\treturn originalBlur.apply(this, arguments);\n\t\t}\n\t}());\n\tself.settings.score = function() {\n\t\treturn function() { return 1; };\n\t};\n\n});\n\nSelectize.define('tag_limit', function (options) {\n const self = this\n options.tagLimit = options.tagLimit\n this.onBlur = (function (e) {\n const original = self.onBlur\n\n return function (e) {\n original.apply(this, e);\n if (!e)\n return\n const $control = this.$control\n const $items = $control.find('.item')\n const limit = options.tagLimit\n if (limit === undefined || $items.length <= limit)\n return\n\n $items.toArray().forEach(function(item, index) {\n if (index < limit)\n return\n $(item).hide()\n });\n\n $control.append('' + ($items.length - limit) + '')\n };\n })()\n\n this.onFocus = (function (e) {\n const original = self.onFocus\n\n return function (e) {\n original.apply(this, e);\n if (!e)\n return\n const $control = this.$control\n const $items = $control.find('.item')\n $items.show()\n $control.find('span').remove()\n\n };\n })()\n});\n\n return Selectize;\n}));\n","// style-loader: Adds some css to the DOM by adding a