{"version":3,"sources":["selectize.js"],"names":["root","factory","define","amd","exports","module","Sifter","this","items","settings","diacritics","prototype","tokenize","query","trim","String","toLowerCase","length","i","n","regex","letter","tokens","words","split","escape_regex","DIACRITICS","hasOwnProperty","replace","RegExp","push","string","iterator","object","callback","is_array","Array","forEach","key","apply","getScoreFunction","search","options","fields","token_count","prepareSearch","field_count","scoreValue","value","token","score","pos","scoreObject","data","sum","conjunction","getSortFunction","self","field","fields_count","multiplier","multipliers","get_field","implicit_score","sort","sort_empty","name","result","id","unshift","direction","splice","a","b","cmp","option_fields","extend","option_sort","option_sort_empty","total","fn_sort","fn_score","item","filter","limit","slice","asciifold","k","arguments","str","isArray","$","Object","toString","call","c","d","e","l","o","r","s","t","u","y","z","chunk","foreignletters","lookup","substring","charAt","regexp","foreignletter","MicroPlugin","Interface","plugins","initializePlugins","queue","names","requested","loaded","utils","require","shift","loadPlugin","plugin","Error","fn","vArg","Selectize","jQuery","highlight","$element","pattern","node","skip","nodeType","match","spannode","document","createElement","className","middlebit","splitText","middleclone","cloneNode","appendChild","parentNode","replaceChild","childNodes","test","tagName","each","MicroEvent","on","event","fct","_events","off","indexOf","trigger","mixin","destObject","props","IS_MAC","navigator","userAgent","KEY_CMD","KEY_CTRL","SUPPORTS_VALIDITY_API","window","validity","isset","hash_key","escape_html","escape_replace","hook","method","original","once","called","debounce_events","types","type","event_args","getSelection","input","start","selectionStart","selectionEnd","selection","focus","sel","createRange","selLen","text","moveStart","autoGrow","$input","currentWidth","update","keyCode","printable","placeholder","width","character","metaKey","altKey","force","val","shiftKey","fromCharCode","toUpperCase","attr","$parent","$test","css","position","top","left","padding","whiteSpace","appendTo","$from","$to","properties","styles","transferStyles","remove","measureString","triggerHandler","dir","selectize","delay","timeout","computedStyle","getComputedStyle","getPropertyValue","currentStyle","parents","order","tabIndex","tagType","rtl","eventNS","count","highlightedValue","isOpen","isDisabled","isRequired","is","isInvalid","isLocked","isFocused","isInputHidden","isSetup","isShiftDown","isCmdDown","isCtrlDown","ignoreFocus","ignoreBlur","ignoreHover","hasOptions","currentResults","lastValue","caretPos","loading","loadedSearches","$activeOption","$activeItems","optgroups","userOptions","renderCache","onSearchChange","loadThrottle","args","clearTimeout","setTimeout","sifter","registerOption","registerOptionGroup","mode","maxItems","hideSelected","setupCallbacks","setupTemplates","setup","$wrapper","$control","$control_input","$dropdown","$dropdown_content","$dropdown_parent","inputMode","classes","classes_plugins","selector","$window","$document","addClass","wrapperClass","inputClass","dropdownParent","dropdownClass","hide","dropdownContentClass","copyClassesToDropdown","style","join","splitOn","delimiter","delimiterEscaped","onOptionHover","onOptionSelect","onItemSelect","child","target","currentTarget","mousedown","onMouseDown","click","onClick","stopPropagation","keydown","onKeyDown","keyup","onKeyUp","keypress","onKeyPress","resize","positionDropdown","blur","onBlur","onFocus","paste","onPaste","has","revertSettings","$children","children","detach","tabindex","after","setValue","preventDefault","refreshState","updateOriginalInput","refreshItems","updatePlaceholder","disable","onChange","preload","field_label","labelField","field_optgroup","optgroupLabelField","templates","optgroup","html","optgroup_header","escape","option","option_create","render","callbacks","initialize","change","item_add","item_remove","clear","option_add","option_remove","option_clear","optgroup_add","optgroup_remove","optgroup_clear","dropdown_open","dropdown_close","load","defaultPrevented","isDefaultPrevented","close","open","setActiveItem","isFull","splitInput","createItem","which","create","selectAll","ctrlKey","$next","getAdjacentOption","setActiveOption","$prev","advanceSelection","selectOnTab","deleteSelection","refreshOptions","wasFocused","showInput","openOnFocus","dest","activeElement","deactivate","setTextboxValue","setCaret","body","createOnBlur","$target","hasClass","closeAfterSelect","lastQuery","addItem","getOption","loadingClass","results","Math","max","addOption","removeClass","getValue","silent","addItems","$item","eventName","idx","begin","end","swap","$last","hideInput","$option","scroll","animate","height_menu","height_item","scroll_top","scroll_bottom","height","outerHeight","scrollTop","offset","stop","scrollDuration","opacity","getSearchOptions","sortField","searchField","searchConjunction","calculateScore","triggerDropdown","j","groups","groups_order","option_html","html_children","has_create_option","$active","$active_before","$create","active_before","maxOptions","min","optgroupField","lockOptgroupOrder","$order","canCreate","prepend","addPrecedence","find","valueField","optgroupValueField","addOptionGroup","removeOptionGroup","clearOptionGroups","updateOption","$item_new","value_new","index_item","cache_items","cache_options","order_old","getItem","replaceWith","removeOption","removeItem","clearOptions","getElementWithValue","$options","index","eq","$els","getAttribute","values","isPending","value_next","wasFull","insertAtCaret","persist","caret","lock","unlock","output","prop","invalid","refreshClasses","toggleClass","isEmptyObject","opts","label","removeAttr","visibility","display","outerWidth","$el","before","option_select","$option_select","$tail","onDelete","pop","tail","valueLength","advanceCaret","$adj","$child","append","enable","destroy","show","removeData","templateName","cache","regex_tag","optDisabled","clearCache","createFilter","defaults","allowEmptyOption","dataAttr","settings_user","attr_data","field_value","field_optgroup_label","field_optgroup_value","field_disabled","tag_name","settings_element","optionsMap","readData","JSON","parse","group","arr","addGroup","$optgroup","init_select","data_raw","init_textbox","support","sortable","forcePlaceholderSize","disabled","ui","helper","overflow","active","title","headerClass","titleRowClass","labelClass","closeClass","$dropdown_header","equalizeWidth","equalizeHeight","closest","prev","next","getScrollbarWidth","div","doc","innerHTML","firstChild","offsetWidth","clientWidth","removeChild","equalizeSizes","height_max","width_last","width_parent","$optgroups","innerWidth","round","html_container","html_element","render_item","parent"],"mappings":"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","file":"selectize-bundle.js","sourcesContent":["/**\r\n * sifter.js\r\n * Copyright (c) 2013 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define('sifter', factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory();\r\n } else {\r\n root.Sifter = factory();\r\n }\r\n}(this, function () {\r\n\r\n /**\r\n * Textually searches arrays and hashes of objects\r\n * by property (or multiple properties). Designed\r\n * specifically for autocomplete.\r\n *\r\n * @constructor\r\n * @param {array|object} items\r\n * @param {object} items\r\n */\r\n var Sifter = function (items, settings) {\r\n this.items = items;\r\n this.settings = settings || { diacritics: true };\r\n };\r\n\r\n /**\r\n * Splits a search string into an array of individual\r\n * regexps to be used to match results.\r\n *\r\n * @param {string} query\r\n * @returns {array}\r\n */\r\n Sifter.prototype.tokenize = function (query) {\r\n query = trim(String(query || '').toLowerCase());\r\n if (!query || !query.length) return [];\r\n\r\n var i, n, regex, letter;\r\n var tokens = [];\r\n var words = query.split(/ +/);\r\n\r\n for (i = 0, n = words.length; i < n; i++) {\r\n regex = escape_regex(words[i]);\r\n if (this.settings.diacritics) {\r\n for (letter in DIACRITICS) {\r\n if (DIACRITICS.hasOwnProperty(letter)) {\r\n regex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]);\r\n }\r\n }\r\n }\r\n tokens.push({\r\n string: words[i],\r\n regex: new RegExp(regex, 'i')\r\n });\r\n }\r\n\r\n return tokens;\r\n };\r\n\r\n /**\r\n * Iterates over arrays and hashes.\r\n *\r\n * ```\r\n * this.iterator(this.items, function(item, id) {\r\n * // invoked for each item\r\n * });\r\n * ```\r\n *\r\n * @param {array|object} object\r\n */\r\n Sifter.prototype.iterator = function (object, callback) {\r\n var iterator;\r\n if (is_array(object)) {\r\n iterator = Array.prototype.forEach || function (callback) {\r\n for (var i = 0, n = this.length; i < n; i++) {\r\n callback(this[i], i, this);\r\n }\r\n };\r\n } else {\r\n iterator = function (callback) {\r\n for (var key in this) {\r\n if (this.hasOwnProperty(key)) {\r\n callback(this[key], key, this);\r\n }\r\n }\r\n };\r\n }\r\n\r\n iterator.apply(object, [callback]);\r\n };\r\n\r\n /**\r\n * Returns a function to be used to score individual results.\r\n *\r\n * Good matches will have a higher score than poor matches.\r\n * If an item is not a match, 0 will be returned by the function.\r\n *\r\n * @param {object|string} search\r\n * @param {object} options (optional)\r\n * @returns {function}\r\n */\r\n Sifter.prototype.getScoreFunction = function (search, options) {\r\n var self, fields, tokens, token_count;\r\n\r\n self = this;\r\n search = self.prepareSearch(search, options);\r\n tokens = search.tokens;\r\n fields = search.options.fields;\r\n token_count = tokens.length;\r\n\r\n /**\r\n * Calculates how close of a match the\r\n * given value is against a search token.\r\n *\r\n * @param {mixed} value\r\n * @param {object} token\r\n * @return {number}\r\n */\r\n var scoreValue = function (value, token) {\r\n var score, pos;\r\n\r\n if (!value) return 0;\r\n value = String(value || '');\r\n pos = value.search(token.regex);\r\n if (pos === -1) return 0;\r\n score = token.string.length / value.length;\r\n if (pos === 0) score += 0.5;\r\n return score;\r\n };\r\n\r\n /**\r\n * Calculates the score of an object\r\n * against the search query.\r\n *\r\n * @param {object} token\r\n * @param {object} data\r\n * @return {number}\r\n */\r\n var scoreObject = (function () {\r\n var field_count = fields.length;\r\n if (!field_count) {\r\n return function () { return 0; };\r\n }\r\n if (field_count === 1) {\r\n return function (token, data) {\r\n return scoreValue(data[fields[0]], token);\r\n };\r\n }\r\n return function (token, data) {\r\n for (var i = 0, sum = 0; i < field_count; i++) {\r\n sum += scoreValue(data[fields[i]], token);\r\n }\r\n return sum / field_count;\r\n };\r\n })();\r\n\r\n if (!token_count) {\r\n return function () { return 0; };\r\n }\r\n if (token_count === 1) {\r\n return function (data) {\r\n return scoreObject(tokens[0], data);\r\n };\r\n }\r\n\r\n if (search.options.conjunction === 'and') {\r\n return function (data) {\r\n var score;\r\n for (var i = 0, sum = 0; i < token_count; i++) {\r\n score = scoreObject(tokens[i], data);\r\n if (score <= 0) return 0;\r\n sum += score;\r\n }\r\n return sum / token_count;\r\n };\r\n } else {\r\n return function (data) {\r\n for (var i = 0, sum = 0; i < token_count; i++) {\r\n sum += scoreObject(tokens[i], data);\r\n }\r\n return sum / token_count;\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Returns a function that can be used to compare two\r\n * results, for sorting purposes. If no sorting should\r\n * be performed, `null` will be returned.\r\n *\r\n * @param {string|object} search\r\n * @param {object} options\r\n * @return function(a,b)\r\n */\r\n Sifter.prototype.getSortFunction = function (search, options) {\r\n var i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort;\r\n\r\n self = this;\r\n search = self.prepareSearch(search, options);\r\n sort = (!search.query && options.sort_empty) || options.sort;\r\n\r\n /**\r\n * Fetches the specified sort field value\r\n * from a search result item.\r\n *\r\n * @param {string} name\r\n * @param {object} result\r\n * @return {mixed}\r\n */\r\n get_field = function (name, result) {\r\n if (name === '$score') return result.score;\r\n return self.items[result.id][name];\r\n };\r\n\r\n // parse options\r\n fields = [];\r\n if (sort) {\r\n for (i = 0, n = sort.length; i < n; i++) {\r\n if (search.query || sort[i].field !== '$score') {\r\n fields.push(sort[i]);\r\n }\r\n }\r\n }\r\n\r\n // the \"$score\" field is implied to be the primary\r\n // sort field, unless it's manually specified\r\n if (search.query) {\r\n implicit_score = true;\r\n for (i = 0, n = fields.length; i < n; i++) {\r\n if (fields[i].field === '$score') {\r\n implicit_score = false;\r\n break;\r\n }\r\n }\r\n if (implicit_score) {\r\n fields.unshift({ field: '$score', direction: 'desc' });\r\n }\r\n } else {\r\n for (i = 0, n = fields.length; i < n; i++) {\r\n if (fields[i].field === '$score') {\r\n fields.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n multipliers = [];\r\n for (i = 0, n = fields.length; i < n; i++) {\r\n multipliers.push(fields[i].direction === 'desc' ? -1 : 1);\r\n }\r\n\r\n // build function\r\n fields_count = fields.length;\r\n if (!fields_count) {\r\n return null;\r\n } else if (fields_count === 1) {\r\n field = fields[0].field;\r\n multiplier = multipliers[0];\r\n return function (a, b) {\r\n return multiplier * cmp(\r\n get_field(field, a),\r\n get_field(field, b)\r\n );\r\n };\r\n } else {\r\n return function (a, b) {\r\n var i, result, a_value, b_value, field;\r\n for (i = 0; i < fields_count; i++) {\r\n field = fields[i].field;\r\n result = multipliers[i] * cmp(\r\n get_field(field, a),\r\n get_field(field, b)\r\n );\r\n if (result) return result;\r\n }\r\n return 0;\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Parses a search query and returns an object\r\n * with tokens and fields ready to be populated\r\n * with results.\r\n *\r\n * @param {string} query\r\n * @param {object} options\r\n * @returns {object}\r\n */\r\n Sifter.prototype.prepareSearch = function (query, options) {\r\n if (typeof query === 'object') return query;\r\n\r\n options = extend({}, options);\r\n\r\n var option_fields = options.fields;\r\n var option_sort = options.sort;\r\n var option_sort_empty = options.sort_empty;\r\n\r\n if (option_fields && !is_array(option_fields)) options.fields = [option_fields];\r\n if (option_sort && !is_array(option_sort)) options.sort = [option_sort];\r\n if (option_sort_empty && !is_array(option_sort_empty)) options.sort_empty = [option_sort_empty];\r\n\r\n return {\r\n options: options,\r\n query: String(query || '').toLowerCase(),\r\n tokens: this.tokenize(query),\r\n total: 0,\r\n items: []\r\n };\r\n };\r\n\r\n /**\r\n * Searches through all items and returns a sorted array of matches.\r\n *\r\n * The `options` parameter can contain:\r\n *\r\n * - fields {string|array}\r\n * - sort {array}\r\n * - score {function}\r\n * - filter {bool}\r\n * - limit {integer}\r\n *\r\n * Returns an object containing:\r\n *\r\n * - options {object}\r\n * - query {string}\r\n * - tokens {array}\r\n * - total {int}\r\n * - items {array}\r\n *\r\n * @param {string} query\r\n * @param {object} options\r\n * @returns {object}\r\n */\r\n Sifter.prototype.search = function (query, options) {\r\n var self = this, value, score, search, calculateScore;\r\n var fn_sort;\r\n var fn_score;\r\n\r\n search = this.prepareSearch(query, options);\r\n options = search.options;\r\n query = search.query;\r\n\r\n // generate result scoring function\r\n fn_score = options.score || self.getScoreFunction(search);\r\n\r\n // perform search and sort\r\n if (query.length) {\r\n self.iterator(self.items, function (item, id) {\r\n score = fn_score(item);\r\n if (options.filter === false || score > 0) {\r\n search.items.push({ 'score': score, 'id': id });\r\n }\r\n });\r\n } else {\r\n self.iterator(self.items, function (item, id) {\r\n search.items.push({ 'score': 1, 'id': id });\r\n });\r\n }\r\n\r\n fn_sort = self.getSortFunction(search, options);\r\n if (fn_sort) search.items.sort(fn_sort);\r\n\r\n // apply limits\r\n search.total = search.items.length;\r\n if (typeof options.limit === 'number') {\r\n search.items = search.items.slice(0, options.limit);\r\n }\r\n\r\n return search;\r\n };\r\n\r\n // utilities\r\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n var cmp = function (a, b) {\r\n if (typeof a === 'number' && typeof b === 'number') {\r\n return a > b ? 1 : (a < b ? -1 : 0);\r\n }\r\n a = asciifold(String(a || ''));\r\n b = asciifold(String(b || ''));\r\n if (a > b) return 1;\r\n if (b > a) return -1;\r\n return 0;\r\n };\r\n\r\n var extend = function (a, b) {\r\n var i, n, k, object;\r\n for (i = 1, n = arguments.length; i < n; i++) {\r\n object = arguments[i];\r\n if (!object) continue;\r\n for (k in object) {\r\n if (object.hasOwnProperty(k)) {\r\n a[k] = object[k];\r\n }\r\n }\r\n }\r\n return a;\r\n };\r\n\r\n var trim = function (str) {\r\n return (str + '').replace(/^\\s+|\\s+$|/g, '');\r\n };\r\n\r\n var escape_regex = function (str) {\r\n return (str + '').replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\r\n };\r\n\r\n var is_array = Array.isArray || ($ && $.isArray) || function (object) {\r\n return Object.prototype.toString.call(object) === '[object Array]';\r\n };\r\n\r\n var DIACRITICS = {\r\n 'a': '[aÀÁÂÃÄÅàáâãäåĀāąĄ]',\r\n 'c': '[cÇçćĆčČ]',\r\n 'd': '[dđĐďĎ]',\r\n 'e': '[eÈÉÊËèéêëěĚĒēęĘ]',\r\n 'i': '[iÌÍÎÏìíîïĪī]',\r\n 'l': '[lłŁ]',\r\n 'n': '[nÑñňŇńŃ]',\r\n 'o': '[oÒÓÔÕÕÖØòóôõöøŌō]',\r\n 'r': '[rřŘ]',\r\n 's': '[sŠšśŚ]',\r\n 't': '[tťŤ]',\r\n 'u': '[uÙÚÛÜùúûüůŮŪū]',\r\n 'y': '[yŸÿýÝ]',\r\n 'z': '[zŽžżŻźŹ]'\r\n };\r\n\r\n var asciifold = (function () {\r\n var i, n, k, chunk;\r\n var foreignletters = '';\r\n var lookup = {};\r\n for (k in DIACRITICS) {\r\n if (DIACRITICS.hasOwnProperty(k)) {\r\n chunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1);\r\n foreignletters += chunk;\r\n for (i = 0, n = chunk.length; i < n; i++) {\r\n lookup[chunk.charAt(i)] = k;\r\n }\r\n }\r\n }\r\n var regexp = new RegExp('[' + foreignletters + ']', 'g');\r\n return function (str) {\r\n return str.replace(regexp, function (foreignletter) {\r\n return lookup[foreignletter];\r\n }).toLowerCase();\r\n };\r\n })();\r\n\r\n\r\n // export\r\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n return Sifter;\r\n}));\r\n\r\n\r\n\r\n/**\r\n * microplugin.js\r\n * Copyright (c) 2013 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define('microplugin', factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory();\r\n } else {\r\n root.MicroPlugin = factory();\r\n }\r\n}(this, function () {\r\n var MicroPlugin = {};\r\n\r\n MicroPlugin.mixin = function (Interface) {\r\n Interface.plugins = {};\r\n\r\n /**\r\n * Initializes the listed plugins (with options).\r\n * Acceptable formats:\r\n *\r\n * List (without options):\r\n * ['a', 'b', 'c']\r\n *\r\n * List (with options):\r\n * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\r\n *\r\n * Hash (with options):\r\n * {'a': { ... }, 'b': { ... }, 'c': { ... }}\r\n *\r\n * @param {mixed} plugins\r\n */\r\n Interface.prototype.initializePlugins = function (plugins) {\r\n var i, n, key;\r\n var self = this;\r\n var queue = [];\r\n\r\n self.plugins = {\r\n names: [],\r\n settings: {},\r\n requested: {},\r\n loaded: {}\r\n };\r\n\r\n if (utils.isArray(plugins)) {\r\n for (i = 0, n = plugins.length; i < n; i++) {\r\n if (typeof plugins[i] === 'string') {\r\n queue.push(plugins[i]);\r\n } else {\r\n self.plugins.settings[plugins[i].name] = plugins[i].options;\r\n queue.push(plugins[i].name);\r\n }\r\n }\r\n } else if (plugins) {\r\n for (key in plugins) {\r\n if (plugins.hasOwnProperty(key)) {\r\n self.plugins.settings[key] = plugins[key];\r\n queue.push(key);\r\n }\r\n }\r\n }\r\n\r\n while (queue.length) {\r\n self.require(queue.shift());\r\n }\r\n };\r\n\r\n Interface.prototype.loadPlugin = function (name) {\r\n var self = this;\r\n var plugins = self.plugins;\r\n var plugin = Interface.plugins[name];\r\n\r\n if (!Interface.plugins.hasOwnProperty(name)) {\r\n throw new Error('Unable to find \"' + name + '\" plugin');\r\n }\r\n\r\n plugins.requested[name] = true;\r\n plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\r\n plugins.names.push(name);\r\n };\r\n\r\n /**\r\n * Initializes a plugin.\r\n *\r\n * @param {string} name\r\n */\r\n Interface.prototype.require = function (name) {\r\n var self = this;\r\n var plugins = self.plugins;\r\n\r\n if (!self.plugins.loaded.hasOwnProperty(name)) {\r\n if (plugins.requested[name]) {\r\n throw new Error('Plugin has circular dependency (\"' + name + '\")');\r\n }\r\n self.loadPlugin(name);\r\n }\r\n\r\n return plugins.loaded[name];\r\n };\r\n\r\n /**\r\n * Registers a plugin.\r\n *\r\n * @param {string} name\r\n * @param {function} fn\r\n */\r\n Interface.define = function (name, fn) {\r\n Interface.plugins[name] = {\r\n 'name': name,\r\n 'fn': fn\r\n };\r\n };\r\n };\r\n\r\n var utils = {\r\n isArray: Array.isArray || function (vArg) {\r\n return Object.prototype.toString.call(vArg) === '[object Array]';\r\n }\r\n };\r\n\r\n return MicroPlugin;\r\n}));\r\n\r\n/**\r\n * selectize.js (v0.12.1)\r\n * Copyright (c) 2013–2015 Brian Reavis & contributors\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\r\n * file except in compliance with the License. You may obtain a copy of the License at:\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under\r\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\r\n * ANY KIND, either express or implied. See the License for the specific language\r\n * governing permissions and limitations under the License.\r\n *\r\n * @author Brian Reavis \r\n */\r\n\r\n/*jshint curly:false */\r\n/*jshint browser:true */\r\n\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define('selectize', ['jquery', 'sifter', 'microplugin'], factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory(require('jquery'), require('sifter'), require('microplugin'));\r\n } else {\r\n root.Selectize = factory(root.jQuery, root.Sifter, root.MicroPlugin);\r\n }\r\n}(this, function ($, Sifter, MicroPlugin) {\r\n 'use strict';\r\n\r\n var highlight = function ($element, pattern) {\r\n if (typeof pattern === 'string' && !pattern.length) return;\r\n var regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern;\r\n\r\n var highlight = function (node) {\r\n var skip = 0;\r\n if (node.nodeType === 3) {\r\n var pos = node.data.search(regex);\r\n if (pos >= 0 && node.data.length > 0) {\r\n var match = node.data.match(regex);\r\n var spannode = document.createElement('span');\r\n spannode.className = 'highlight';\r\n var middlebit = node.splitText(pos);\r\n var endbit = middlebit.splitText(match[0].length);\r\n var middleclone = middlebit.cloneNode(true);\r\n spannode.appendChild(middleclone);\r\n middlebit.parentNode.replaceChild(spannode, middlebit);\r\n skip = 1;\r\n }\r\n } else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {\r\n for (var i = 0; i < node.childNodes.length; ++i) {\r\n i += highlight(node.childNodes[i]);\r\n }\r\n }\r\n return skip;\r\n };\r\n\r\n return $element.each(function () {\r\n highlight(this);\r\n });\r\n };\r\n\r\n var MicroEvent = function () { };\r\n MicroEvent.prototype = {\r\n on: function (event, fct) {\r\n this._events = this._events || {};\r\n this._events[event] = this._events[event] || [];\r\n this._events[event].push(fct);\r\n },\r\n off: function (event, fct) {\r\n var n = arguments.length;\r\n if (n === 0) return delete this._events;\r\n if (n === 1) return delete this._events[event];\r\n\r\n this._events = this._events || {};\r\n if (event in this._events === false) return;\r\n this._events[event].splice(this._events[event].indexOf(fct), 1);\r\n },\r\n trigger: function (event /* , args... */) {\r\n this._events = this._events || {};\r\n if (event in this._events === false) return;\r\n for (var i = 0; i < this._events[event].length; i++) {\r\n this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Mixin will delegate all MicroEvent.js function in the destination object.\r\n *\r\n * - MicroEvent.mixin(Foobar) will make Foobar able to use MicroEvent\r\n *\r\n * @param {object} the object which will support MicroEvent\r\n */\r\n MicroEvent.mixin = function (destObject) {\r\n var props = ['on', 'off', 'trigger'];\r\n for (var i = 0; i < props.length; i++) {\r\n destObject.prototype[props[i]] = MicroEvent.prototype[props[i]];\r\n }\r\n };\r\n\r\n var IS_MAC = /Mac/.test(navigator.userAgent);\r\n\r\n var KEY_A = 65;\r\n var KEY_COMMA = 188;\r\n var KEY_RETURN = 13;\r\n var KEY_ESC = 27;\r\n var KEY_LEFT = 37;\r\n var KEY_UP = 38;\r\n var KEY_P = 80;\r\n var KEY_RIGHT = 39;\r\n var KEY_DOWN = 40;\r\n var KEY_N = 78;\r\n var KEY_BACKSPACE = 8;\r\n var KEY_DELETE = 46;\r\n var KEY_SHIFT = 16;\r\n var KEY_CMD = IS_MAC ? 91 : 17;\r\n var KEY_CTRL = IS_MAC ? 18 : 17;\r\n var KEY_TAB = 9;\r\n\r\n var TAG_SELECT = 1;\r\n var TAG_INPUT = 2;\r\n\r\n // for now, android support in general is too spotty to support validity\r\n var SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('form').validity;\r\n\r\n var isset = function (object) {\r\n return typeof object !== 'undefined';\r\n };\r\n\r\n /**\r\n * Converts a scalar to its best string representation\r\n * for hash keys and HTML attribute values.\r\n *\r\n * Transformations:\r\n * 'str' -> 'str'\r\n * null -> ''\r\n * undefined -> ''\r\n * true -> '1'\r\n * false -> '0'\r\n * 0 -> '0'\r\n * 1 -> '1'\r\n *\r\n * @param {string} value\r\n * @returns {string|null}\r\n */\r\n var hash_key = function (value) {\r\n if (typeof value === 'undefined' || value === null) return null;\r\n if (typeof value === 'boolean') return value ? '1' : '0';\r\n return value + '';\r\n };\r\n\r\n /**\r\n * Escapes a string for use within HTML.\r\n *\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\n var escape_html = function (str) {\r\n return (str + '')\r\n .replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"');\r\n };\r\n\r\n /**\r\n * Escapes \"$\" characters in replacement strings.\r\n *\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\n var escape_replace = function (str) {\r\n return (str + '').replace(/\\$/g, '$$$$');\r\n };\r\n\r\n var hook = {};\r\n\r\n /**\r\n * Wraps `method` on `self` so that `fn`\r\n * is invoked before the original method.\r\n *\r\n * @param {object} self\r\n * @param {string} method\r\n * @param {function} fn\r\n */\r\n hook.before = function (self, method, fn) {\r\n var original = self[method];\r\n self[method] = function () {\r\n fn.apply(self, arguments);\r\n return original.apply(self, arguments);\r\n };\r\n };\r\n\r\n /**\r\n * Wraps `method` on `self` so that `fn`\r\n * is invoked after the original method.\r\n *\r\n * @param {object} self\r\n * @param {string} method\r\n * @param {function} fn\r\n */\r\n hook.after = function (self, method, fn) {\r\n var original = self[method];\r\n self[method] = function () {\r\n var result = original.apply(self, arguments);\r\n fn.apply(self, arguments);\r\n return result;\r\n };\r\n };\r\n\r\n /**\r\n * Wraps `fn` so that it can only be invoked once.\r\n *\r\n * @param {function} fn\r\n * @returns {function}\r\n */\r\n var once = function (fn) {\r\n var called = false;\r\n return function () {\r\n if (called) return;\r\n called = true;\r\n fn.apply(this, arguments);\r\n };\r\n };\r\n\r\n /**\r\n * Wraps `fn` so that it can only be called once\r\n * every `delay` milliseconds (invoked on the falling edge).\r\n *\r\n * @param {function} fn\r\n * @param {int} delay\r\n * @returns {function}\r\n */\r\n var debounce = function (fn, delay) {\r\n var timeout;\r\n return function () {\r\n var self = this;\r\n var args = arguments;\r\n window.clearTimeout(timeout);\r\n timeout = window.setTimeout(function () {\r\n fn.apply(self, args);\r\n }, delay);\r\n };\r\n };\r\n\r\n /**\r\n * Debounce all fired events types listed in `types`\r\n * while executing the provided `fn`.\r\n *\r\n * @param {object} self\r\n * @param {array} types\r\n * @param {function} fn\r\n */\r\n var debounce_events = function (self, types, fn) {\r\n var type;\r\n var trigger = self.trigger;\r\n var event_args = {};\r\n\r\n // override trigger method\r\n self.trigger = function () {\r\n var type = arguments[0];\r\n if (types.indexOf(type) !== -1) {\r\n event_args[type] = arguments;\r\n } else {\r\n return trigger.apply(self, arguments);\r\n }\r\n };\r\n\r\n // invoke provided function\r\n fn.apply(self, []);\r\n self.trigger = trigger;\r\n\r\n // trigger queued events\r\n for (type in event_args) {\r\n if (event_args.hasOwnProperty(type)) {\r\n trigger.apply(self, event_args[type]);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * A workaround for http://bugs.jquery.com/ticket/6696\r\n *\r\n * @param {object} $parent - Parent element to listen on.\r\n * @param {string} event - Event name.\r\n * @param {string} selector - Descendant selector to filter by.\r\n * @param {function} fn - Event handler.\r\n */\r\n var watchChildEvent = function ($parent, event, selector, fn) {\r\n $parent.on(event, selector, function (e) {\r\n var child = e.target;\r\n while (child && child.parentNode !== $parent[0]) {\r\n child = child.parentNode;\r\n }\r\n e.currentTarget = child;\r\n return fn.apply(this, [e]);\r\n });\r\n };\r\n\r\n /**\r\n * Determines the current selection within a text input control.\r\n * Returns an object containing:\r\n * - start\r\n * - length\r\n *\r\n * @param {object} input\r\n * @returns {object}\r\n */\r\n var getSelection = function (input) {\r\n var result = {};\r\n if ('selectionStart' in input) {\r\n result.start = input.selectionStart;\r\n result.length = input.selectionEnd - result.start;\r\n } else if (document.selection) {\r\n input.focus();\r\n var sel = document.selection.createRange();\r\n var selLen = document.selection.createRange().text.length;\r\n sel.moveStart('character', -input.value.length);\r\n result.start = sel.text.length - selLen;\r\n result.length = selLen;\r\n }\r\n return result;\r\n };\r\n\r\n /**\r\n * Copies CSS properties from one element to another.\r\n *\r\n * @param {object} $from\r\n * @param {object} $to\r\n * @param {array} properties\r\n */\r\n var transferStyles = function ($from, $to, properties) {\r\n var i, n, styles = {};\r\n if (properties) {\r\n for (i = 0, n = properties.length; i < n; i++) {\r\n styles[properties[i]] = $from.css(properties[i]);\r\n }\r\n } else {\r\n styles = $from.css();\r\n }\r\n $to.css(styles);\r\n };\r\n\r\n /**\r\n * Measures the width of a string within a\r\n * parent element (in pixels).\r\n *\r\n * @param {string} str\r\n * @param {object} $parent\r\n * @returns {int}\r\n */\r\n var measureString = function (str, $parent) {\r\n if (!str) {\r\n return 0;\r\n }\r\n\r\n var $test = $('').css({\r\n position: 'absolute',\r\n top: -99999,\r\n left: -99999,\r\n width: 'auto',\r\n padding: 0,\r\n whiteSpace: 'pre'\r\n }).text(str).appendTo('body');\r\n\r\n transferStyles($parent, $test, [\r\n 'letterSpacing',\r\n 'fontSize',\r\n 'fontFamily',\r\n 'fontWeight',\r\n 'textTransform'\r\n ]);\r\n\r\n var width = $test.width();\r\n $test.remove();\r\n\r\n return width;\r\n };\r\n\r\n /**\r\n * Sets up an input to grow horizontally as the user\r\n * types. If the value is changed manually, you can\r\n * trigger the \"update\" handler to resize:\r\n *\r\n * $input.trigger('update');\r\n *\r\n * @param {object} $input\r\n */\r\n var autoGrow = function ($input) {\r\n var currentWidth = null;\r\n\r\n var update = function (e, options) {\r\n var value, keyCode, printable, placeholder, width;\r\n var shift, character, selection;\r\n e = e || window.event || {};\r\n options = options || {};\r\n\r\n if (e.metaKey || e.altKey) return;\r\n if (!options.force && $input.data('grow') === false) return;\r\n\r\n value = $input.val();\r\n if (e.type && e.type.toLowerCase() === 'keydown') {\r\n keyCode = e.keyCode;\r\n printable = (\r\n (keyCode >= 97 && keyCode <= 122) || // a-z\r\n (keyCode >= 65 && keyCode <= 90) || // A-Z\r\n (keyCode >= 48 && keyCode <= 57) || // 0-9\r\n keyCode === 32 // space\r\n );\r\n\r\n if (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) {\r\n selection = getSelection($input[0]);\r\n if (selection.length) {\r\n value = value.substring(0, selection.start) + value.substring(selection.start + selection.length);\r\n } else if (keyCode === KEY_BACKSPACE && selection.start) {\r\n value = value.substring(0, selection.start - 1) + value.substring(selection.start + 1);\r\n } else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') {\r\n value = value.substring(0, selection.start) + value.substring(selection.start + 1);\r\n }\r\n } else if (printable) {\r\n shift = e.shiftKey;\r\n character = String.fromCharCode(e.keyCode);\r\n if (shift) character = character.toUpperCase();\r\n else character = character.toLowerCase();\r\n value += character;\r\n }\r\n }\r\n\r\n placeholder = $input.attr('placeholder');\r\n if (!value && placeholder) {\r\n value = placeholder;\r\n }\r\n\r\n width = measureString(value, $input) + 4;\r\n if (width !== currentWidth) {\r\n currentWidth = width;\r\n $input.width(width);\r\n $input.triggerHandler('resize');\r\n }\r\n };\r\n\r\n $input.on('keydown keyup update blur', update);\r\n update();\r\n };\r\n\r\n var Selectize = function ($input, settings) {\r\n var key, i, n, dir, input, self = this;\r\n input = $input[0];\r\n input.selectize = self;\r\n\r\n // detect rtl environment\r\n var computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);\r\n dir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction;\r\n dir = dir || $input.parents('[dir]:first').attr('dir') || '';\r\n\r\n // setup default state\r\n $.extend(self, {\r\n order: 0,\r\n settings: settings,\r\n $input: $input,\r\n tabIndex: $input.attr('tabindex') || '',\r\n tagType: input.tagName.toLowerCase() === 'select' ? TAG_SELECT : TAG_INPUT,\r\n rtl: /rtl/i.test(dir),\r\n\r\n eventNS: '.selectize' + (++Selectize.count),\r\n highlightedValue: null,\r\n isOpen: false,\r\n isDisabled: false,\r\n isRequired: $input.is('[required]'),\r\n isInvalid: false,\r\n isLocked: false,\r\n isFocused: false,\r\n isInputHidden: false,\r\n isSetup: false,\r\n isShiftDown: false,\r\n isCmdDown: false,\r\n isCtrlDown: false,\r\n ignoreFocus: false,\r\n ignoreBlur: false,\r\n ignoreHover: false,\r\n hasOptions: false,\r\n currentResults: null,\r\n lastValue: '',\r\n caretPos: 0,\r\n loading: 0,\r\n loadedSearches: {},\r\n\r\n $activeOption: null,\r\n $activeItems: [],\r\n\r\n optgroups: {},\r\n options: {},\r\n userOptions: {},\r\n items: [],\r\n renderCache: {},\r\n onSearchChange: settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)\r\n });\r\n\r\n // search system\r\n self.sifter = new Sifter(this.options, { diacritics: settings.diacritics });\r\n\r\n // build options table\r\n if (self.settings.options) {\r\n for (i = 0, n = self.settings.options.length; i < n; i++) {\r\n self.registerOption(self.settings.options[i]);\r\n }\r\n delete self.settings.options;\r\n }\r\n\r\n // build optgroup table\r\n if (self.settings.optgroups) {\r\n for (i = 0, n = self.settings.optgroups.length; i < n; i++) {\r\n self.registerOptionGroup(self.settings.optgroups[i]);\r\n }\r\n delete self.settings.optgroups;\r\n }\r\n\r\n // option-dependent defaults\r\n self.settings.mode = self.settings.mode || (self.settings.maxItems === 1 ? 'single' : 'multi');\r\n if (typeof self.settings.hideSelected !== 'boolean') {\r\n self.settings.hideSelected = self.settings.mode === 'multi';\r\n }\r\n\r\n self.initializePlugins(self.settings.plugins);\r\n self.setupCallbacks();\r\n self.setupTemplates();\r\n self.setup();\r\n };\r\n\r\n // mixins\r\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n MicroEvent.mixin(Selectize);\r\n MicroPlugin.mixin(Selectize);\r\n\r\n // methods\r\n // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\n $.extend(Selectize.prototype, {\r\n\r\n /**\r\n * Creates all elements and sets up event bindings.\r\n */\r\n setup: function () {\r\n var self = this;\r\n var settings = self.settings;\r\n var eventNS = self.eventNS;\r\n var $window = $(window);\r\n var $document = $(document);\r\n var $input = self.$input;\r\n\r\n var $wrapper;\r\n var $control;\r\n var $control_input;\r\n var $dropdown;\r\n var $dropdown_content;\r\n var $dropdown_parent;\r\n var inputMode;\r\n var timeout_blur;\r\n var timeout_focus;\r\n var classes;\r\n var classes_plugins;\r\n\r\n inputMode = self.settings.mode;\r\n classes = $input.attr('class') || '';\r\n\r\n $wrapper = $('
').addClass(settings.wrapperClass).addClass(classes).addClass(inputMode);\r\n $control = $('
').addClass(settings.inputClass).addClass('items').appendTo($wrapper);\r\n $control_input = $('').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex);\r\n $dropdown_parent = $(settings.dropdownParent || $wrapper);\r\n $dropdown = $('
').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent);\r\n $dropdown_content = $('
').addClass(settings.dropdownContentClass).appendTo($dropdown);\r\n\r\n if (self.settings.copyClassesToDropdown) {\r\n $dropdown.addClass(classes);\r\n }\r\n\r\n $wrapper.css({\r\n width: $input[0].style.width\r\n });\r\n\r\n if (self.plugins.names.length) {\r\n classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\r\n $wrapper.addClass(classes_plugins);\r\n $dropdown.addClass(classes_plugins);\r\n }\r\n\r\n if ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) {\r\n $input.attr('multiple', 'multiple');\r\n }\r\n\r\n if (self.settings.placeholder) {\r\n $control_input.attr('placeholder', settings.placeholder);\r\n }\r\n\r\n // if splitOn was not passed in, construct it from the delimiter to allow pasting universally\r\n if (!self.settings.splitOn && self.settings.delimiter) {\r\n var delimiterEscaped = self.settings.delimiter.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n self.settings.splitOn = new RegExp('\\\\s*' + delimiterEscaped + '+\\\\s*');\r\n }\r\n\r\n if ($input.attr('autocorrect')) {\r\n $control_input.attr('autocorrect', $input.attr('autocorrect'));\r\n }\r\n\r\n if ($input.attr('autocapitalize')) {\r\n $control_input.attr('autocapitalize', $input.attr('autocapitalize'));\r\n }\r\n\r\n self.$wrapper = $wrapper;\r\n self.$control = $control;\r\n self.$control_input = $control_input;\r\n self.$dropdown = $dropdown;\r\n self.$dropdown_content = $dropdown_content;\r\n\r\n $dropdown.on('mouseenter', '[data-selectable]', function () { return self.onOptionHover.apply(self, arguments); });\r\n $dropdown.on('mousedown click', '[data-selectable]', function () { return self.onOptionSelect.apply(self, arguments); });\r\n watchChildEvent($control, 'mousedown', '*:not(input)', function () { return self.onItemSelect.apply(self, arguments); });\r\n autoGrow($control_input);\r\n\r\n $control.on({\r\n mousedown: function () { return self.onMouseDown.apply(self, arguments); },\r\n click: function () { return self.onClick.apply(self, arguments); }\r\n });\r\n\r\n $control_input.on({\r\n mousedown: function (e) { e.stopPropagation(); },\r\n keydown: function () { return self.onKeyDown.apply(self, arguments); },\r\n keyup: function () { return self.onKeyUp.apply(self, arguments); },\r\n keypress: function () { return self.onKeyPress.apply(self, arguments); },\r\n resize: function () { self.positionDropdown.apply(self, []); },\r\n blur: function () { return self.onBlur.apply(self, arguments); },\r\n focus: function () { self.ignoreBlur = false; return self.onFocus.apply(self, arguments); },\r\n paste: function () { return self.onPaste.apply(self, arguments); }\r\n });\r\n\r\n $document.on('keydown' + eventNS, function (e) {\r\n self.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey'];\r\n self.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey'];\r\n self.isShiftDown = e.shiftKey;\r\n });\r\n\r\n $document.on('keyup' + eventNS, function (e) {\r\n if (e.keyCode === KEY_CTRL) self.isCtrlDown = false;\r\n if (e.keyCode === KEY_SHIFT) self.isShiftDown = false;\r\n if (e.keyCode === KEY_CMD) self.isCmdDown = false;\r\n });\r\n\r\n $document.on('mousedown' + eventNS, function (e) {\r\n if (self.isFocused) {\r\n // prevent events on the dropdown scrollbar from causing the control to blur\r\n if (e.target === self.$dropdown[0] || e.target.parentNode === self.$dropdown[0]) {\r\n return false;\r\n }\r\n // blur on click outside\r\n if (!self.$control.has(e.target).length && e.target !== self.$control[0]) {\r\n self.blur(e.target);\r\n }\r\n }\r\n });\r\n\r\n $window.on(['scroll' + eventNS, 'resize' + eventNS].join(' '), function () {\r\n if (self.isOpen) {\r\n self.positionDropdown.apply(self, arguments);\r\n }\r\n });\r\n $window.on('mousemove' + eventNS, function () {\r\n self.ignoreHover = false;\r\n });\r\n\r\n // store original children and tab index so that they can be\r\n // restored when the destroy() method is called.\r\n this.revertSettings = {\r\n $children: $input.children().detach(),\r\n tabindex: $input.attr('tabindex')\r\n };\r\n\r\n $input.attr('tabindex', -1).hide().after(self.$wrapper);\r\n\r\n if ($.isArray(settings.items)) {\r\n self.setValue(settings.items);\r\n delete settings.items;\r\n }\r\n\r\n // feature detect for the validation API\r\n if (SUPPORTS_VALIDITY_API) {\r\n $input.on('invalid' + eventNS, function (e) {\r\n e.preventDefault();\r\n self.isInvalid = true;\r\n self.refreshState();\r\n });\r\n }\r\n\r\n self.updateOriginalInput();\r\n self.refreshItems();\r\n self.refreshState();\r\n self.updatePlaceholder();\r\n self.isSetup = true;\r\n\r\n if ($input.is(':disabled')) {\r\n self.disable();\r\n }\r\n\r\n self.on('change', this.onChange);\r\n\r\n $input.data('selectize', self);\r\n $input.addClass('selectized');\r\n self.trigger('initialize');\r\n\r\n // preload options\r\n if (settings.preload === true) {\r\n self.onSearchChange('');\r\n }\r\n\r\n },\r\n\r\n /**\r\n * Sets up default rendering functions.\r\n */\r\n setupTemplates: function () {\r\n var self = this;\r\n var field_label = self.settings.labelField;\r\n var field_optgroup = self.settings.optgroupLabelField;\r\n\r\n var templates = {\r\n 'optgroup': function (data) {\r\n return '
' + data.html + '
';\r\n },\r\n 'optgroup_header': function (data, escape) {\r\n return '
' + escape(data[field_optgroup]) + '
';\r\n },\r\n 'option': function (data, escape) {\r\n return '
' + escape(data[field_label]) + '
';\r\n },\r\n 'item': function (data, escape) {\r\n return '
' + escape(data[field_label]) + '
';\r\n },\r\n 'option_create': function (data, escape) {\r\n return '
Add ' + escape(data.input) + '
';\r\n }\r\n };\r\n\r\n self.settings.render = $.extend({}, templates, self.settings.render);\r\n },\r\n\r\n /**\r\n * Maps fired events to callbacks provided\r\n * in the settings used when creating the control.\r\n */\r\n setupCallbacks: function () {\r\n var key, fn, callbacks = {\r\n 'initialize': 'onInitialize',\r\n 'change': 'onChange',\r\n 'item_add': 'onItemAdd',\r\n 'item_remove': 'onItemRemove',\r\n 'clear': 'onClear',\r\n 'option_add': 'onOptionAdd',\r\n 'option_remove': 'onOptionRemove',\r\n 'option_clear': 'onOptionClear',\r\n 'optgroup_add': 'onOptionGroupAdd',\r\n 'optgroup_remove': 'onOptionGroupRemove',\r\n 'optgroup_clear': 'onOptionGroupClear',\r\n 'dropdown_open': 'onDropdownOpen',\r\n 'dropdown_close': 'onDropdownClose',\r\n 'type': 'onType',\r\n 'load': 'onLoad',\r\n 'focus': 'onFocus',\r\n 'blur': 'onBlur'\r\n };\r\n\r\n for (key in callbacks) {\r\n if (callbacks.hasOwnProperty(key)) {\r\n fn = this.settings[callbacks[key]];\r\n if (fn) this.on(key, fn);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the main control element\r\n * has a click event.\r\n *\r\n * @param {object} e\r\n * @return {boolean}\r\n */\r\n onClick: function (e) {\r\n var self = this;\r\n\r\n // necessary for mobile webkit devices (manual focus triggering\r\n // is ignored unless invoked within a click event)\r\n if (!self.isFocused) {\r\n self.focus();\r\n e.preventDefault();\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the main control element\r\n * has a mouse down event.\r\n *\r\n * @param {object} e\r\n * @return {boolean}\r\n */\r\n onMouseDown: function (e) {\r\n var self = this;\r\n var defaultPrevented = e.isDefaultPrevented();\r\n var $target = $(e.target);\r\n\r\n if (self.isFocused) {\r\n // retain focus by preventing native handling. if the\r\n // event target is the input it should not be modified.\r\n // otherwise, text selection within the input won't work.\r\n if (e.target !== self.$control_input[0]) {\r\n if (self.settings.mode === 'single') {\r\n // toggle dropdown\r\n self.isOpen ? self.close() : self.open();\r\n } else if (!defaultPrevented) {\r\n self.setActiveItem(null);\r\n }\r\n return false;\r\n }\r\n } else {\r\n // give control focus\r\n if (!defaultPrevented) {\r\n window.setTimeout(function () {\r\n self.focus();\r\n }, 0);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the value of the control has been changed.\r\n * This should propagate the event to the original DOM\r\n * input / select element.\r\n */\r\n onChange: function () {\r\n this.$input.trigger('change');\r\n },\r\n\r\n /**\r\n * Triggered on paste.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onPaste: function (e) {\r\n var self = this;\r\n if (self.isFull() || self.isInputHidden || self.isLocked) {\r\n e.preventDefault();\r\n } else {\r\n // If a regex or string is included, this will split the pasted\r\n // input and create Items for each separate value\r\n if (self.settings.splitOn) {\r\n setTimeout(function () {\r\n var splitInput = $.trim(self.$control_input.val() || '').split(self.settings.splitOn);\r\n for (var i = 0, n = splitInput.length; i < n; i++) {\r\n self.createItem(splitInput[i]);\r\n }\r\n }, 0);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Triggered on keypress.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onKeyPress: function (e) {\r\n if (this.isLocked) return e && e.preventDefault();\r\n var character = String.fromCharCode(e.keyCode || e.which);\r\n if (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) {\r\n this.createItem();\r\n e.preventDefault();\r\n return false;\r\n }\r\n },\r\n\r\n /**\r\n * Triggered on keydown.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onKeyDown: function (e) {\r\n var isInput = e.target === this.$control_input[0];\r\n var self = this;\r\n\r\n if (self.isLocked) {\r\n if (e.keyCode !== KEY_TAB) {\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n\r\n switch (e.keyCode) {\r\n case KEY_A:\r\n if (self.isCmdDown) {\r\n self.selectAll();\r\n return;\r\n }\r\n break;\r\n case KEY_ESC:\r\n if (self.isOpen) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n self.close();\r\n }\r\n return;\r\n case KEY_N:\r\n if (!e.ctrlKey || e.altKey) break;\r\n case KEY_DOWN:\r\n if (!self.isOpen && self.hasOptions) {\r\n self.open();\r\n } else if (self.$activeOption) {\r\n self.ignoreHover = true;\r\n var $next = self.getAdjacentOption(self.$activeOption, 1);\r\n if ($next.length) self.setActiveOption($next, true, true);\r\n }\r\n e.preventDefault();\r\n return;\r\n case KEY_P:\r\n if (!e.ctrlKey || e.altKey) break;\r\n case KEY_UP:\r\n if (self.$activeOption) {\r\n self.ignoreHover = true;\r\n var $prev = self.getAdjacentOption(self.$activeOption, -1);\r\n if ($prev.length) self.setActiveOption($prev, true, true);\r\n }\r\n e.preventDefault();\r\n return;\r\n case KEY_RETURN:\r\n if (self.isOpen && self.$activeOption) {\r\n self.onOptionSelect({ currentTarget: self.$activeOption });\r\n e.preventDefault();\r\n }\r\n return;\r\n case KEY_LEFT:\r\n self.advanceSelection(-1, e);\r\n return;\r\n case KEY_RIGHT:\r\n self.advanceSelection(1, e);\r\n return;\r\n case KEY_TAB:\r\n if (self.settings.selectOnTab && self.isOpen && self.$activeOption) {\r\n self.onOptionSelect({ currentTarget: self.$activeOption });\r\n\r\n // Default behaviour is to jump to the next field, we only want this\r\n // if the current field doesn't accept any more entries\r\n if (!self.isFull()) {\r\n e.preventDefault();\r\n }\r\n }\r\n if (self.settings.create && self.createItem()) {\r\n e.preventDefault();\r\n }\r\n return;\r\n case KEY_BACKSPACE:\r\n case KEY_DELETE:\r\n self.deleteSelection(e);\r\n return;\r\n }\r\n\r\n if ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n },\r\n\r\n /**\r\n * Triggered on keyup.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onKeyUp: function (e) {\r\n var self = this;\r\n\r\n if (self.isLocked) return e && e.preventDefault();\r\n var value = self.$control_input.val() || '';\r\n if (self.lastValue !== value) {\r\n self.lastValue = value;\r\n self.onSearchChange(value);\r\n self.refreshOptions();\r\n self.trigger('type', value);\r\n }\r\n },\r\n\r\n /**\r\n * Invokes the user-provide option provider / loader.\r\n *\r\n * Note: this function is debounced in the Selectize\r\n * constructor (by `settings.loadDelay` milliseconds)\r\n *\r\n * @param {string} value\r\n */\r\n onSearchChange: function (value) {\r\n var self = this;\r\n var fn = self.settings.load;\r\n if (!fn) return;\r\n if (self.loadedSearches.hasOwnProperty(value)) return;\r\n self.loadedSearches[value] = true;\r\n self.load(function (callback) {\r\n fn.apply(self, [value, callback]);\r\n });\r\n },\r\n\r\n /**\r\n * Triggered on focus.\r\n *\r\n * @param {object} e (optional)\r\n * @returns {boolean}\r\n */\r\n onFocus: function (e) {\r\n var self = this;\r\n var wasFocused = self.isFocused;\r\n\r\n if (self.isDisabled) {\r\n self.blur();\r\n e && e.preventDefault();\r\n return false;\r\n }\r\n\r\n if (self.ignoreFocus) return;\r\n self.isFocused = true;\r\n if (self.settings.preload === 'focus') self.onSearchChange('');\r\n\r\n if (!wasFocused) self.trigger('focus');\r\n\r\n if (!self.$activeItems.length) {\r\n self.showInput();\r\n self.setActiveItem(null);\r\n self.refreshOptions(!!self.settings.openOnFocus);\r\n }\r\n\r\n self.refreshState();\r\n },\r\n\r\n /**\r\n * Triggered on blur.\r\n *\r\n * @param {object} e\r\n * @param {Element} dest\r\n */\r\n onBlur: function (e, dest) {\r\n var self = this;\r\n if (!self.isFocused) return;\r\n self.isFocused = false;\r\n\r\n if (self.ignoreFocus) {\r\n return;\r\n } else if (!self.ignoreBlur && document.activeElement === self.$dropdown_content[0]) {\r\n // necessary to prevent IE closing the dropdown when the scrollbar is clicked\r\n self.ignoreBlur = true;\r\n self.onFocus(e);\r\n return;\r\n }\r\n\r\n var deactivate = function () {\r\n self.close();\r\n self.setTextboxValue('');\r\n self.setActiveItem(null);\r\n self.setActiveOption(null);\r\n self.setCaret(self.items.length);\r\n self.refreshState();\r\n\r\n // IE11 bug: element still marked as active\r\n (dest || document.body).focus();\r\n\r\n self.ignoreFocus = false;\r\n self.trigger('blur');\r\n };\r\n\r\n self.ignoreFocus = true;\r\n if (self.settings.create && self.settings.createOnBlur) {\r\n self.createItem(null, false, deactivate);\r\n } else {\r\n deactivate();\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the user rolls over\r\n * an option in the autocomplete dropdown menu.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onOptionHover: function (e) {\r\n if (this.ignoreHover) return;\r\n this.setActiveOption(e.currentTarget, false);\r\n },\r\n\r\n /**\r\n * Triggered when the user clicks on an option\r\n * in the autocomplete dropdown menu.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onOptionSelect: function (e) {\r\n var value, $target, $option, self = this;\r\n\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n $target = $(e.currentTarget);\r\n if ($target.hasClass('create')) {\r\n self.createItem(null, function () {\r\n if (self.settings.closeAfterSelect) {\r\n self.close();\r\n }\r\n });\r\n } else {\r\n value = $target.attr('data-value');\r\n if (typeof value !== 'undefined') {\r\n self.lastQuery = null;\r\n self.setTextboxValue('');\r\n self.addItem(value);\r\n if (self.settings.closeAfterSelect) {\r\n self.close();\r\n } else if (!self.settings.hideSelected && e.type && /mouse/.test(e.type)) {\r\n self.setActiveOption(self.getOption(value));\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the user clicks on an item\r\n * that has been selected.\r\n *\r\n * @param {object} e\r\n * @returns {boolean}\r\n */\r\n onItemSelect: function (e) {\r\n var self = this;\r\n\r\n if (self.isLocked) return;\r\n if (self.settings.mode === 'multi') {\r\n e.preventDefault();\r\n self.setActiveItem(e.currentTarget, e);\r\n }\r\n },\r\n\r\n /**\r\n * Invokes the provided method that provides\r\n * results to a callback---which are then added\r\n * as options to the control.\r\n *\r\n * @param {function} fn\r\n */\r\n load: function (fn) {\r\n var self = this;\r\n var $wrapper = self.$wrapper.addClass(self.settings.loadingClass);\r\n\r\n self.loading++;\r\n fn.apply(self, [function (results) {\r\n self.loading = Math.max(self.loading - 1, 0);\r\n if (results && results.length) {\r\n self.addOption(results);\r\n self.refreshOptions(self.isFocused && !self.isInputHidden);\r\n }\r\n if (!self.loading) {\r\n $wrapper.removeClass(self.settings.loadingClass);\r\n }\r\n self.trigger('load', results);\r\n }]);\r\n },\r\n\r\n /**\r\n * Sets the input field of the control to the specified value.\r\n *\r\n * @param {string} value\r\n */\r\n setTextboxValue: function (value) {\r\n var $input = this.$control_input;\r\n var changed = $input.val() !== value;\r\n if (changed) {\r\n $input.val(value).triggerHandler('update');\r\n this.lastValue = value;\r\n }\r\n },\r\n\r\n /**\r\n * Returns the value of the control. If multiple items\r\n * can be selected (e.g. or \r\n * element to reflect the current state.\r\n */\r\n updateOriginalInput: function (opts) {\r\n var i, n, options, label, self = this;\r\n opts = opts || {};\r\n\r\n if (self.tagType === TAG_SELECT) {\r\n options = [];\r\n for (i = 0, n = self.items.length; i < n; i++) {\r\n label = self.options[self.items[i]][self.settings.labelField] || '';\r\n options.push('');\r\n }\r\n if (!options.length && !this.$input.attr('multiple')) {\r\n options.push('');\r\n }\r\n self.$input.html(options.join(''));\r\n } else {\r\n self.$input.val(self.getValue());\r\n self.$input.attr('value', self.$input.val());\r\n }\r\n\r\n if (self.isSetup) {\r\n if (!opts.silent) {\r\n self.trigger('change', self.$input.val());\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Shows/hide the input placeholder depending\r\n * on if there items in the list already.\r\n */\r\n updatePlaceholder: function () {\r\n if (!this.settings.placeholder) return;\r\n var $input = this.$control_input;\r\n\r\n if (this.items.length) {\r\n $input.removeAttr('placeholder');\r\n } else {\r\n $input.attr('placeholder', this.settings.placeholder);\r\n }\r\n $input.triggerHandler('update', { force: true });\r\n },\r\n\r\n /**\r\n * Shows the autocomplete dropdown containing\r\n * the available options.\r\n */\r\n open: function () {\r\n var self = this;\r\n\r\n if (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\r\n self.focus();\r\n self.isOpen = true;\r\n self.refreshState();\r\n self.$dropdown.css({ visibility: 'hidden', display: 'block' });\r\n self.positionDropdown();\r\n self.$dropdown.css({ visibility: 'visible' });\r\n self.trigger('dropdown_open', self.$dropdown);\r\n },\r\n\r\n /**\r\n * Closes the autocomplete dropdown menu.\r\n */\r\n close: function () {\r\n var self = this;\r\n var trigger = self.isOpen;\r\n\r\n if (self.settings.mode === 'single' && self.items.length) {\r\n self.hideInput();\r\n }\r\n\r\n self.isOpen = false;\r\n self.$dropdown.hide();\r\n self.setActiveOption(null);\r\n self.refreshState();\r\n\r\n if (trigger) self.trigger('dropdown_close', self.$dropdown);\r\n },\r\n\r\n /**\r\n * Calculates and applies the appropriate\r\n * position of the dropdown.\r\n */\r\n positionDropdown: function () {\r\n var $control = this.$control;\r\n var offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\r\n offset.top += $control.outerHeight(true);\r\n\r\n this.$dropdown.css({\r\n width: $control.outerWidth(),\r\n top: offset.top,\r\n left: offset.left\r\n });\r\n },\r\n\r\n /**\r\n * Resets / clears all selected items\r\n * from the control.\r\n *\r\n * @param {boolean} silent\r\n */\r\n clear: function (silent) {\r\n var self = this;\r\n\r\n if (!self.items.length) return;\r\n self.$control.children(':not(input)').remove();\r\n self.items = [];\r\n self.lastQuery = null;\r\n self.setCaret(0);\r\n self.setActiveItem(null);\r\n self.updatePlaceholder();\r\n self.updateOriginalInput({ silent: silent });\r\n self.refreshState();\r\n self.showInput();\r\n self.trigger('clear');\r\n },\r\n\r\n /**\r\n * A helper method for inserting an element\r\n * at the current caret position.\r\n *\r\n * @param {object} $el\r\n */\r\n insertAtCaret: function ($el) {\r\n var caret = Math.min(this.caretPos, this.items.length);\r\n if (caret === 0) {\r\n this.$control.prepend($el);\r\n } else {\r\n $(this.$control[0].childNodes[caret]).before($el);\r\n }\r\n this.setCaret(caret + 1);\r\n },\r\n\r\n /**\r\n * Removes the current selected item(s).\r\n *\r\n * @param {object} e (optional)\r\n * @returns {boolean}\r\n */\r\n deleteSelection: function (e) {\r\n var i, n, direction, selection, values, caret, option_select, $option_select, $tail;\r\n var self = this;\r\n\r\n direction = (e && e.keyCode === KEY_BACKSPACE) ? -1 : 1;\r\n selection = getSelection(self.$control_input[0]);\r\n\r\n if (self.$activeOption && !self.settings.hideSelected) {\r\n option_select = self.getAdjacentOption(self.$activeOption, -1).attr('data-value');\r\n }\r\n\r\n // determine items that will be removed\r\n values = [];\r\n\r\n if (self.$activeItems.length) {\r\n $tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first'));\r\n caret = self.$control.children(':not(input)').index($tail);\r\n if (direction > 0) { caret++; }\r\n\r\n for (i = 0, n = self.$activeItems.length; i < n; i++) {\r\n values.push($(self.$activeItems[i]).attr('data-value'));\r\n }\r\n if (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n } else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\r\n if (direction < 0 && selection.start === 0 && selection.length === 0) {\r\n values.push(self.items[self.caretPos - 1]);\r\n } else if (direction > 0 && selection.start === self.$control_input.val().length) {\r\n values.push(self.items[self.caretPos]);\r\n }\r\n }\r\n\r\n // allow the callback to abort\r\n if (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false)) {\r\n return false;\r\n }\r\n\r\n // perform removal\r\n if (typeof caret !== 'undefined') {\r\n self.setCaret(caret);\r\n }\r\n while (values.length) {\r\n self.removeItem(values.pop());\r\n }\r\n\r\n self.showInput();\r\n self.positionDropdown();\r\n self.refreshOptions(true);\r\n\r\n // select previous option\r\n if (option_select) {\r\n $option_select = self.getOption(option_select);\r\n if ($option_select.length) {\r\n self.setActiveOption($option_select);\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n /**\r\n * Selects the previous / next item (depending\r\n * on the `direction` argument).\r\n *\r\n * > 0 - right\r\n * < 0 - left\r\n *\r\n * @param {int} direction\r\n * @param {object} e (optional)\r\n */\r\n advanceSelection: function (direction, e) {\r\n var tail, selection, idx, valueLength, cursorAtEdge, $tail;\r\n var self = this;\r\n\r\n if (direction === 0) return;\r\n if (self.rtl) direction *= -1;\r\n\r\n tail = direction > 0 ? 'last' : 'first';\r\n selection = getSelection(self.$control_input[0]);\r\n\r\n if (self.isFocused && !self.isInputHidden) {\r\n valueLength = self.$control_input.val().length;\r\n cursorAtEdge = direction < 0\r\n ? selection.start === 0 && selection.length === 0\r\n : selection.start === valueLength;\r\n\r\n if (cursorAtEdge && !valueLength) {\r\n self.advanceCaret(direction, e);\r\n }\r\n } else {\r\n $tail = self.$control.children('.active:' + tail);\r\n if ($tail.length) {\r\n idx = self.$control.children(':not(input)').index($tail);\r\n self.setActiveItem(null);\r\n self.setCaret(direction > 0 ? idx + 1 : idx);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Moves the caret left / right.\r\n *\r\n * @param {int} direction\r\n * @param {object} e (optional)\r\n */\r\n advanceCaret: function (direction, e) {\r\n var self = this, fn, $adj;\r\n\r\n if (direction === 0) return;\r\n\r\n fn = direction > 0 ? 'next' : 'prev';\r\n if (self.isShiftDown) {\r\n $adj = self.$control_input[fn]();\r\n if ($adj.length) {\r\n self.hideInput();\r\n self.setActiveItem($adj);\r\n e && e.preventDefault();\r\n }\r\n } else {\r\n self.setCaret(self.caretPos + direction);\r\n }\r\n },\r\n\r\n /**\r\n * Moves the caret to the specified index.\r\n *\r\n * @param {int} i\r\n */\r\n setCaret: function (i) {\r\n var self = this;\r\n\r\n if (self.settings.mode === 'single') {\r\n i = self.items.length;\r\n } else {\r\n i = Math.max(0, Math.min(self.items.length, i));\r\n }\r\n\r\n if (!self.isPending) {\r\n // the input must be moved by leaving it in place and moving the\r\n // siblings, due to the fact that focus cannot be restored once lost\r\n // on mobile webkit devices\r\n var j, n, fn, $children, $child;\r\n $children = self.$control.children(':not(input)');\r\n for (j = 0, n = $children.length; j < n; j++) {\r\n $child = $($children[j]).detach();\r\n if (j < i) {\r\n self.$control_input.before($child);\r\n } else {\r\n self.$control.append($child);\r\n }\r\n }\r\n }\r\n\r\n self.caretPos = i;\r\n },\r\n\r\n /**\r\n * Disables user input on the control. Used while\r\n * items are being asynchronously created.\r\n */\r\n lock: function () {\r\n this.close();\r\n this.isLocked = true;\r\n this.refreshState();\r\n },\r\n\r\n /**\r\n * Re-enables user input on the control.\r\n */\r\n unlock: function () {\r\n this.isLocked = false;\r\n this.refreshState();\r\n },\r\n\r\n /**\r\n * Disables user input on the control completely.\r\n * While disabled, it cannot receive focus.\r\n */\r\n disable: function () {\r\n var self = this;\r\n self.$input.prop('disabled', true);\r\n self.$control_input.prop('disabled', true).prop('tabindex', -1);\r\n self.isDisabled = true;\r\n self.lock();\r\n },\r\n\r\n /**\r\n * Enables the control so that it can respond\r\n * to focus and user input.\r\n */\r\n enable: function () {\r\n var self = this;\r\n self.$input.prop('disabled', false);\r\n self.$control_input.prop('disabled', false).prop('tabindex', self.tabIndex);\r\n self.isDisabled = false;\r\n self.unlock();\r\n },\r\n\r\n /**\r\n * Completely destroys the control and\r\n * unbinds all event listeners so that it can\r\n * be garbage collected.\r\n */\r\n destroy: function () {\r\n var self = this;\r\n var eventNS = self.eventNS;\r\n var revertSettings = self.revertSettings;\r\n\r\n self.trigger('destroy');\r\n self.off();\r\n self.$wrapper.remove();\r\n self.$dropdown.remove();\r\n\r\n self.$input\r\n .html('')\r\n .append(revertSettings.$children)\r\n .removeAttr('tabindex')\r\n .removeClass('selectized')\r\n .attr({ tabindex: revertSettings.tabindex })\r\n .show();\r\n\r\n self.$control_input.removeData('grow');\r\n self.$input.removeData('selectize');\r\n\r\n $(window).off(eventNS);\r\n $(document).off(eventNS);\r\n $(document.body).off(eventNS);\r\n\r\n delete self.$input[0].selectize;\r\n },\r\n\r\n /**\r\n * A helper method for rendering \"item\" and\r\n * \"option\" templates, given the data.\r\n *\r\n * @param {string} templateName\r\n * @param {object} data\r\n * @returns {string}\r\n */\r\n render: function (templateName, data) {\r\n var value, id, label;\r\n var html = '';\r\n var cache = false;\r\n var self = this;\r\n var regex_tag = /^[\\t \\r\\n]*<([a-z][a-z0-9\\-_]*(?:\\:[a-z][a-z0-9\\-_]*)?)/i;\r\n\r\n if (templateName === 'option' || templateName === 'item') {\r\n value = hash_key(data[self.settings.valueField]);\r\n cache = !!value;\r\n }\r\n\r\n // pull markup from cache if it exists\r\n if (cache) {\r\n if (!isset(self.renderCache[templateName])) {\r\n self.renderCache[templateName] = {};\r\n }\r\n if (self.renderCache[templateName].hasOwnProperty(value)) {\r\n return self.renderCache[templateName][value];\r\n }\r\n }\r\n\r\n // render markup\r\n html = self.settings.render[templateName].apply(this, [data, escape_html]);\r\n\r\n // add mandatory attributes\r\n if (templateName === 'option' || templateName === 'option_create') {\r\n if (data[self.settings.optDisabled]) {\r\n html = html.replace(regex_tag, '<$1 data-disabled');\r\n } else {\r\n html = html.replace(regex_tag, '<$1 data-selectable');\r\n }\r\n }\r\n if (templateName === 'optgroup') {\r\n id = data[self.settings.optgroupValueField] || '';\r\n html = html.replace(regex_tag, '<$1 data-group=\"' + escape_replace(escape_html(id)) + '\"');\r\n }\r\n if (templateName === 'option' || templateName === 'item') {\r\n html = html.replace(regex_tag, '<$1 data-value=\"' + escape_replace(escape_html(value || '')) + '\"');\r\n }\r\n\r\n // update cache\r\n if (cache) {\r\n self.renderCache[templateName][value] = html;\r\n }\r\n\r\n return html;\r\n },\r\n\r\n /**\r\n * Clears the render cache for a template. If\r\n * no template is given, clears all render\r\n * caches.\r\n *\r\n * @param {string} templateName\r\n */\r\n clearCache: function (templateName) {\r\n var self = this;\r\n if (typeof templateName === 'undefined') {\r\n self.renderCache = {};\r\n } else {\r\n delete self.renderCache[templateName];\r\n }\r\n },\r\n\r\n /**\r\n * Determines whether or not to display the\r\n * create item prompt, given a user input.\r\n *\r\n * @param {string} input\r\n * @return {boolean}\r\n */\r\n canCreate: function (input) {\r\n var self = this;\r\n if (!self.settings.create) return false;\r\n var filter = self.settings.createFilter;\r\n return input.length\r\n && (typeof filter !== 'function' || filter.apply(self, [input]))\r\n && (typeof filter !== 'string' || new RegExp(filter).test(input))\r\n && (!(filter instanceof RegExp) || filter.test(input));\r\n }\r\n\r\n });\r\n\r\n\r\n Selectize.count = 0;\r\n Selectize.defaults = {\r\n options: [],\r\n optgroups: [],\r\n\r\n plugins: [],\r\n delimiter: ',',\r\n splitOn: null, // regexp or string for splitting up values from a paste command\r\n persist: true,\r\n diacritics: true,\r\n create: false,\r\n createOnBlur: false,\r\n createFilter: null,\r\n highlight: true,\r\n openOnFocus: true,\r\n maxOptions: 1000,\r\n maxItems: null,\r\n hideSelected: null,\r\n addPrecedence: false,\r\n selectOnTab: false,\r\n preload: false,\r\n allowEmptyOption: false,\r\n closeAfterSelect: false,\r\n\r\n scrollDuration: 60,\r\n loadThrottle: 300,\r\n loadingClass: 'loading',\r\n\r\n dataAttr: 'data-data',\r\n optgroupField: 'optgroup',\r\n valueField: 'value',\r\n labelField: 'text',\r\n optgroupLabelField: 'label',\r\n optgroupValueField: 'value',\r\n lockOptgroupOrder: false,\r\n optDisabled: 'disabled',\r\n\r\n sortField: '$order',\r\n searchField: ['text'],\r\n searchConjunction: 'and',\r\n\r\n mode: null,\r\n wrapperClass: 'selectize-control',\r\n inputClass: 'selectize-input',\r\n dropdownClass: 'selectize-dropdown',\r\n dropdownContentClass: 'selectize-dropdown-content',\r\n\r\n dropdownParent: null,\r\n\r\n copyClassesToDropdown: true,\r\n\r\n /*\r\n load : null, // function(query, callback) { ... }\r\n score : null, // function(search) { ... }\r\n onInitialize : null, // function() { ... }\r\n onChange : null, // function(value) { ... }\r\n onItemAdd : null, // function(value, $item) { ... }\r\n onItemRemove : null, // function(value) { ... }\r\n onClear : null, // function() { ... }\r\n onOptionAdd : null, // function(value, data) { ... }\r\n onOptionRemove : null, // function(value) { ... }\r\n onOptionClear : null, // function() { ... }\r\n onOptionGroupAdd : null, // function(id, data) { ... }\r\n onOptionGroupRemove : null, // function(id) { ... }\r\n onOptionGroupClear : null, // function() { ... }\r\n onDropdownOpen : null, // function($dropdown) { ... }\r\n onDropdownClose : null, // function($dropdown) { ... }\r\n onType : null, // function(str) { ... }\r\n onDelete : null, // function(values) { ... }\r\n */\r\n\r\n render: {\r\n /*\r\n item: null,\r\n optgroup: null,\r\n optgroup_header: null,\r\n option: null,\r\n option_create: null\r\n */\r\n }\r\n };\r\n\r\n\r\n $.fn.selectize = function (settings_user) {\r\n var defaults = $.fn.selectize.defaults;\r\n var settings = $.extend({}, defaults, settings_user);\r\n var attr_data = settings.dataAttr;\r\n var field_label = settings.labelField;\r\n var field_value = settings.valueField;\r\n var field_optgroup = settings.optgroupField;\r\n var field_optgroup_label = settings.optgroupLabelField;\r\n var field_optgroup_value = settings.optgroupValueField;\r\n var field_disabled = settings.optDisabled;\r\n\r\n /**\r\n * Initializes selectize from a element.\r\n *\r\n * @param {object} $input\r\n * @param {object} settings_element\r\n */\r\n var init_textbox = function ($input, settings_element) {\r\n var i, n, values, option;\r\n\r\n var data_raw = $input.attr(attr_data);\r\n\r\n if (!data_raw) {\r\n var value = $.trim($input.val() || '');\r\n if (!settings.allowEmptyOption && !value.length) return;\r\n values = value.split(settings.delimiter);\r\n for (i = 0, n = values.length; i < n; i++) {\r\n option = {};\r\n option[field_label] = values[i];\r\n option[field_value] = values[i];\r\n settings_element.options.push(option);\r\n }\r\n settings_element.items = values;\r\n } else {\r\n settings_element.options = JSON.parse(data_raw);\r\n for (i = 0, n = settings_element.options.length; i < n; i++) {\r\n settings_element.items.push(settings_element.options[i][field_value]);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Initializes selectize from a