View file externals/selectize/js/selectize.js

File size: 46.31Kb
!function(b,a){"function"==typeof define&&define.amd?define("sifter",a):"object"==typeof exports?module.exports=a():b.Sifter=a()}(this,function(){var a=function(a,b){this.items=a,this.settings=b||{diacritics:!0}};a.prototype.tokenize=function(b){if(!(b=e(String(b||"").toLowerCase()))||!b.length)return[];var a,i,c,d,j=[],g=b.split(/ +/);for(a=0,i=g.length;a<i;a++){if(c=f(g[a]),this.settings.diacritics)for(d in h)h.hasOwnProperty(d)&&(c=c.replace(new RegExp(d,"g"),h[d]));j.push({string:g[a],regex:new RegExp(c,"i")})}return j},a.prototype.iterator=function(a,b){(g(a)?Array.prototype.forEach||function(b){for(var a=0,c=this.length;a<c;a++)b(this[a],a,this)}:function(b){for(var a in this)this.hasOwnProperty(a)&&b(this[a],a,this)}).apply(a,[b])},a.prototype.getScoreFunction=function(a,e){g=this,h=(a=g.prepareSearch(a,e)).tokens,f=a.options.fields,b=h.length,i=a.options.nesting;var g,f,h,b,i,c,j=function(a,c){var b,d;return a&& -1!==(d=(a=String(a||"")).search(c.regex))?(b=c.string.length/a.length,0===d&&(b+=.5),b):0},k=(c=f.length)?1===c?function(a,b){return j(d(b,f[0],i),a)}:function(e,g){for(var a=0,b=0;a<c;a++)b+=j(d(g,f[a],i),e);return b/c}:function(){return 0};return b?1===b?function(a){return k(h[0],a)}:"and"===a.options.conjunction?function(e){for(var c,a=0,d=0;a<b;a++){if((c=k(h[a],e))<=0)return 0;d+=c}return d/b}:function(d){for(var a=0,c=0;a<b;a++)c+=k(h[a],d);return c/b}:function(){return 0}},a.prototype.getSortFunction=function(g,h){var a,e,k,m,c,l,n,i,o,j,f;if(k=this,f=!(g=k.prepareSearch(g,h)).query&&h.sort_empty||h.sort,o=function(a,b){return"$score"===a?b.score:d(k.items[b.id],a,h.nesting)},c=[],f)for(a=0,e=f.length;a<e;a++)(g.query||"$score"!==f[a].field)&&c.push(f[a]);if(g.query){for(a=0,j=!0,e=c.length;a<e;a++)if("$score"===c[a].field){j=!1;break}j&&c.unshift({field:"$score",direction:"desc"})}else for(a=0,e=c.length;a<e;a++)if("$score"===c[a].field){c.splice(a,1);break}for(a=0,i=[],e=c.length;a<e;a++)i.push("desc"===c[a].direction?-1:1);return(l=c.length)?1===l?(m=c[0].field,n=i[0],function(a,c){return n*b(o(m,a),o(m,c))}):function(f,g){var a,e,d;for(a=0;a<l;a++)if(d=c[a].field,e=i[a]*b(o(d,f),o(d,g)))return e;return 0}:null},a.prototype.prepareSearch=function(b,a){if("object"==typeof b)return b;var d=(a=c({},a)).fields,e=a.sort,f=a.sort_empty;return d&&!g(d)&&(a.fields=[d]),e&&!g(e)&&(a.sort=[e]),f&&!g(f)&&(a.sort_empty=[f]),{options:a,query:String(b||"").toLowerCase(),tokens:this.tokenize(b),total:0,items:[]}},a.prototype.search=function(c,b){var d,e,f,a;return b=(a=this.prepareSearch(c,b)).options,c=a.query,e=b.score||this.getScoreFunction(a),c.length?this.iterator(this.items,function(c,d){f=e(c),(!1===b.filter||f>0)&&a.items.push({score:f,id:d})}):this.iterator(this.items,function(c,b){a.items.push({score:1,id:b})}),d=this.getSortFunction(a,b),d&&a.items.sort(d),a.total=a.items.length,"number"==typeof b.limit&&(a.items=a.items.slice(0,b.limit)),a};var b=function(a,b){return"number"==typeof a&&"number"==typeof b?a>b?1:a<b?-1:0:(a=i(String(a||"")),b=i(String(b||"")),a>b)?1:b>a?-1:0},c=function(d,f){var a,e,b,c;for(a=1,e=arguments.length;a<e;a++)if(c=arguments[a])for(b in c)c.hasOwnProperty(b)&&(d[b]=c[b]);return d},d=function(a,b,d){if(a&&b){if(!d)return a[b];for(var c=b.split(".");c.length&&(a=a[c.shift()]););return a}},e=function(a){return(a+"").replace(/^\s+|\s+$|/g,"")},f=function(a){return(a+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")},g=Array.isArray||"undefined"!=typeof $&&$.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},h={a:"[a\u1E00\u1E01\u0102\u0103\xc2\xe2\u01CD\u01CE\u023A\u2C65\u0226\u0227\u1EA0\u1EA1\xc4\xe4\xc0\xe0\xc1\xe1\u0100\u0101\xc3\xe3\xc5\xe5\u0105\u0104\xc3\u0105\u0104]",b:"[b\u2422\u03B2\u0392B\u0E3F\u{10301}\u16D2]",c:"[c\u0106\u0107\u0108\u0109\u010C\u010D\u010A\u010BC\u0304c\u0304\xc7\xe7\u1E08\u1E09\u023B\u023C\u0187\u0188\u0255\u1D04\uFF23\uFF43]",d:"[d\u010E\u010F\u1E0A\u1E0B\u1E10\u1E11\u1E0C\u1E0D\u1E12\u1E13\u1E0E\u1E0F\u0110\u0111D\u0326d\u0326\u0189\u0256\u018A\u0257\u018B\u018C\u1D6D\u1D81\u1D91\u0221\u1D05\uFF24\uFF44\xf0]",e:"[e\xc9\xe9\xc8\xe8\xca\xea\u1E18\u1E19\u011A\u011B\u0114\u0115\u1EBC\u1EBD\u1E1A\u1E1B\u1EBA\u1EBB\u0116\u0117\xcb\xeb\u0112\u0113\u0228\u0229\u0118\u0119\u1D92\u0246\u0247\u0204\u0205\u1EBE\u1EBF\u1EC0\u1EC1\u1EC4\u1EC5\u1EC2\u1EC3\u1E1C\u1E1D\u1E16\u1E17\u1E14\u1E15\u0206\u0207\u1EB8\u1EB9\u1EC6\u1EC7\u2C78\u1D07\uFF25\uFF45\u0258\u01DD\u018F\u0190\u03B5]",f:"[f\u0191\u0192\u1E1E\u1E1F]",g:"[g\u0262\u20B2\u01E4\u01E5\u011C\u011D\u011E\u011F\u0122\u0123\u0193\u0260\u0120\u0121]",h:"[h\u0124\u0125\u0126\u0127\u1E28\u1E29\u1E96\u1E96\u1E24\u1E25\u1E22\u1E23\u0266\u02B0\u01F6\u0195]",i:"[i\xcd\xed\xcc\xec\u012C\u012D\xce\xee\u01CF\u01D0\xcf\xef\u1E2E\u1E2F\u0128\u0129\u012E\u012F\u012A\u012B\u1EC8\u1EC9\u0208\u0209\u020A\u020B\u1ECA\u1ECB\u1E2C\u1E2D\u0197\u0268\u0268\u0306\u1D7B\u1D96\u0130iI\u0131\u026A\uFF29\uFF49]",j:"[j\u0237\u0134\u0135\u0248\u0249\u029D\u025F\u02B2]",k:"[k\u0198\u0199\uA740\uA741\u1E30\u1E31\u01E8\u01E9\u1E32\u1E33\u1E34\u1E35\u03BA\u03F0\u20AD]",l:"[l\u0141\u0142\u013D\u013E\u013B\u013C\u0139\u013A\u1E36\u1E37\u1E38\u1E39\u1E3C\u1E3D\u1E3A\u1E3B\u013F\u0140\u023D\u019A\u2C60\u2C61\u2C62\u026B\u026C\u1D85\u026D\u0234\u029F\uFF2C\uFF4C]",n:"[n\u0143\u0144\u01F8\u01F9\u0147\u0148\xd1\xf1\u1E44\u1E45\u0145\u0146\u1E46\u1E47\u1E4A\u1E4B\u1E48\u1E49N\u0308n\u0308\u019D\u0272\u0220\u019E\u1D70\u1D87\u0273\u0235\u0274\uFF2E\uFF4E\u014A\u014B]",o:"[o\xd8\xf8\xd6\xf6\xd3\xf3\xd2\xf2\xd4\xf4\u01D1\u01D2\u0150\u0151\u014E\u014F\u022E\u022F\u1ECC\u1ECD\u019F\u0275\u01A0\u01A1\u1ECE\u1ECF\u014C\u014D\xd5\xf5\u01EA\u01EB\u020C\u020D\u0555\u0585]",p:"[p\u1E54\u1E55\u1E56\u1E57\u2C63\u1D7D\u01A4\u01A5\u1D71]",q:"[q\uA756\uA757\u02A0\u024A\u024B\uA758\uA759q\u0303]",r:"[r\u0154\u0155\u024C\u024D\u0158\u0159\u0156\u0157\u1E58\u1E59\u0210\u0211\u0212\u0213\u1E5A\u1E5B\u2C64\u027D]",s:"[s\u015A\u015B\u1E60\u1E61\u1E62\u1E63\uA7A8\uA7A9\u015C\u015D\u0160\u0161\u015E\u015F\u0218\u0219S\u0308s\u0308]",t:"[t\u0164\u0165\u1E6A\u1E6B\u0162\u0163\u1E6C\u1E6D\u01AE\u0288\u021A\u021B\u1E70\u1E71\u1E6E\u1E6F\u01AC\u01AD]",u:"[u\u016C\u016D\u0244\u0289\u1EE4\u1EE5\xdc\xfc\xda\xfa\xd9\xf9\xdb\xfb\u01D3\u01D4\u0170\u0171\u016C\u016D\u01AF\u01B0\u1EE6\u1EE7\u016A\u016B\u0168\u0169\u0172\u0173\u0214\u0215\u222A]",v:"[v\u1E7C\u1E7D\u1E7E\u1E7F\u01B2\u028B\uA75E\uA75F\u2C71\u028B]",w:"[w\u1E82\u1E83\u1E80\u1E81\u0174\u0175\u1E84\u1E85\u1E86\u1E87\u1E88\u1E89]",x:"[x\u1E8C\u1E8D\u1E8A\u1E8B\u03C7]",y:"[y\xdd\xfd\u1EF2\u1EF3\u0176\u0177\u0178\xff\u1EF8\u1EF9\u1E8E\u1E8F\u1EF4\u1EF5\u024E\u024F\u01B3\u01B4]",z:"[z\u0179\u017A\u1E90\u1E91\u017D\u017E\u017B\u017C\u1E92\u1E93\u1E94\u1E95\u01B5\u01B6]"},i=function(){var b,d,a,c,e="",f={};for(a in h)if(h.hasOwnProperty(a))for(e+=c=h[a].substring(2,h[a].length-1),b=0,d=c.length;b<d;b++)f[c.charAt(b)]=a;var g=new RegExp("["+e+"]","g");return function(a){return a.replace(g,function(a){return f[a]}).toLowerCase()}}();return a}),function(b,a){"function"==typeof define&&define.amd?define("microplugin",a):"object"==typeof exports?module.exports=a():b.MicroPlugin=a()}(this,function(){var a={};a.mixin=function(a){a.plugins={},a.prototype.initializePlugins=function(a){var c,g,d,f=this,e=[];if(f.plugins={names:[],settings:{},requested:{},loaded:{}},b.isArray(a))for(c=0,g=a.length;c<g;c++)"string"==typeof a[c]?e.push(a[c]):(f.plugins.settings[a[c].name]=a[c].options,e.push(a[c].name));else if(a)for(d in a)a.hasOwnProperty(d)&&(f.plugins.settings[d]=a[d],e.push(d));for(;e.length;)f.require(e.shift())},a.prototype.loadPlugin=function(b){var c=this.plugins,d=a.plugins[b];if(!a.plugins.hasOwnProperty(b))throw new Error('Unable to find "'+b+'" plugin');c.requested[b]=!0,c.loaded[b]=d.fn.apply(this,[this.plugins.settings[b]||{}]),c.names.push(b)},a.prototype.require=function(a){var b=this.plugins;if(!this.plugins.loaded.hasOwnProperty(a)){if(b.requested[a])throw new Error('Plugin has circular dependency ("'+a+'")');this.loadPlugin(a)}return b.loaded[a]},a.define=function(b,c){a.plugins[b]={name:b,fn:c}}};var b={isArray:Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)}};return a}),function(a,b){"function"==typeof define&&define.amd?define("selectize",["jquery","sifter","microplugin"],b):"object"==typeof exports?module.exports=b(require("jquery"),require("sifter"),require("microplugin")):a.Selectize=b(scriptJquery,a.Sifter,a.MicroPlugin)}(this,function($,i,d){"use strict";var e,b,j=function(b,a){if("string"!=typeof a||a.length){var c="string"==typeof a?new RegExp(a,"i"):a,d=function(a){var g=0;if(3===a.nodeType){var h=a.data.search(c);if(h>=0&&a.data.length>0){var i=a.data.match(c),f=document.createElement("span");f.className="highlight";var b=a.splitText(h);b.splitText(i[0].length);var j=b.cloneNode(!0);f.appendChild(j),b.parentNode.replaceChild(f,b),g=1}}else if(1===a.nodeType&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&("highlight"!==a.className||"SPAN"!==a.tagName))for(var e=0;e<a.childNodes.length;++e)e+=d(a.childNodes[e]);return g};return b.each(function(){d(this)})}};$.fn.removeHighlight=function(){return this.find("span.highlight").each(function(){this.parentNode.firstChild.nodeName;var a=this.parentNode;a.replaceChild(this.firstChild,this),a.normalize()}).end()};var c=function(){};c.prototype={on:function(a,b){this._events=this._events||{},this._events[a]=this._events[a]||[],this._events[a].push(b)},off:function(a,c){var b=arguments.length;return 0===b?delete this._events:1===b?delete this._events[a]:void(this._events=this._events||{},a in this._events!= !1&&this._events[a].splice(this._events[a].indexOf(c),1))},trigger:function(a){if(this._events=this._events||{},a in this._events!= !1)for(var b=0;b<this._events[a].length;b++)this._events[a][b].apply(this,Array.prototype.slice.call(arguments,1))}},c.mixin=function(d){for(var b=["on","off","trigger"],a=0;a<b.length;a++)d.prototype[b[a]]=c.prototype[b[a]]};var f=/Mac/.test(navigator.userAgent),k=f?91:17,l=f?18:17,h=!/android/i.test(window.navigator.userAgent)&&!!document.createElement("input").validity,m=function(a){return void 0!==a},n=function(a){return null==a?null:"boolean"==typeof a?a?"1":"0":a+""},o=function(a){return(a+"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},g={};g.before=function(a,b,c){var d=a[b];a[b]=function(){return c.apply(a,arguments),d.apply(a,arguments)}},g.after=function(a,b,c){var d=a[b];a[b]=function(){var b=d.apply(a,arguments);return c.apply(a,arguments),b}};var p=function(a){var b=!1;return function(){b||(b=!0,a.apply(this,arguments))}},q=function(a,b){var c;return function(){var d=this,e=arguments;window.clearTimeout(c),c=window.setTimeout(function(){a.apply(d,e)},b)}},r=function(a,f,e){var b,d=a.trigger,c={};for(b in a.trigger=function(){var b=arguments[0];if(-1===f.indexOf(b))return d.apply(a,arguments);c[b]=arguments},e.apply(a,[]),a.trigger=d,c)c.hasOwnProperty(b)&&d.apply(a,c[b])},s=function(a,b,c,d){a.on(b,c,function(c){for(var b=c.target;b&&b.parentNode!==a[0];)b=b.parentNode;return c.currentTarget=b,d.apply(this,[c])})},t=function(b){var a={};if("selectionStart"in b)a.start=b.selectionStart,a.length=b.selectionEnd-a.start;else if(document.selection){b.focus();var c=document.selection.createRange(),d=document.selection.createRange().text.length;c.moveStart("character",-b.value.length),a.start=c.text.length-d,a.length=d}return a},u=function(d,f,b){var a,e,c={};if(b)for(a=0,e=b.length;a<e;a++)c[b[a]]=d.css(b[a]);else c=d.css();f.css(c)},v=function(c){var d=null,b=function(g,i){var b,e,m,j,k,n,h,f,l,o;g=g||window.event||{},i=i||{},g.metaKey||g.altKey||(i.force|| !1!==c.data("grow"))&&(b=c.val(),g.type&&"keydown"===g.type.toLowerCase()&&(m=(e=g.keyCode)>=48&&e<=57||e>=65&&e<=90||e>=96&&e<=111||e>=186&&e<=222||32===e,46===e||8===e?(f=t(c[0])).length?b=b.substring(0,f.start)+b.substring(f.start+f.length):8===e&&f.start?b=b.substring(0,f.start-1)+b.substring(f.start+1):46===e&& void 0!==f.start&&(b=b.substring(0,f.start)+b.substring(f.start+1)):m&&(n=g.shiftKey,h=String.fromCharCode(g.keyCode),b+=h=n?h.toUpperCase():h.toLowerCase())),j=c.attr("placeholder"),!b&&j&&(b=j),(k=(l=b,o=c,(l?(a.$testInput||(a.$testInput=$("<span />").css({position:"absolute",top:-99999,left:-99999,width:"auto",padding:0,whiteSpace:"pre"}).appendTo("body")),a.$testInput.text(l),u(o,a.$testInput,["letterSpacing","fontSize","fontFamily","fontWeight","textTransform"]),a.$testInput.width()):0)+4))!==d&&(d=k,c.width(k),c.triggerHandler("resize")))};c.on("keydown keyup update blur",b),b()},w=function(b){var a=document.createElement("div");return a.appendChild(b.cloneNode(!0)),a.innerHTML},a=function(d,f){var c,g,h,e,b=this;(e=d[0]).selectize=b;var j=window.getComputedStyle&&window.getComputedStyle(e,null);if(h=(h=j?j.getPropertyValue("direction"):e.currentStyle&&e.currentStyle.direction)||d.parents("[dir]:first").attr("dir")||"",$.extend(b,{order:0,settings:f,$input:d,tabIndex:d.attr("tabindex")||"",tagType:"select"===e.tagName.toLowerCase()?1:2,rtl:/rtl/i.test(h),eventNS:".selectize"+ ++a.count,highlightedValue:null,isBlurring:!1,isOpen:!1,isDisabled:!1,isRequired:d.is("[required]"),isInvalid:!1,isLocked:!1,isFocused:!1,isInputHidden:!1,isSetup:!1,isShiftDown:!1,isCmdDown:!1,isCtrlDown:!1,ignoreFocus:!1,ignoreBlur:!1,ignoreHover:!1,hasOptions:!1,currentResults:null,lastValue:"",caretPos:0,loading:0,loadedSearches:{},$activeOption:null,$activeItems:[],optgroups:{},options:{},userOptions:{},items:[],renderCache:{},onSearchChange:null===f.loadThrottle?b.onSearchChange:q(b.onSearchChange,f.loadThrottle)}),b.sifter=new i(this.options,{diacritics:f.diacritics}),b.settings.options){for(c=0,g=b.settings.options.length;c<g;c++)b.registerOption(b.settings.options[c]);delete b.settings.options}if(b.settings.optgroups){for(c=0,g=b.settings.optgroups.length;c<g;c++)b.registerOptionGroup(b.settings.optgroups[c]);delete b.settings.optgroups}b.settings.mode=b.settings.mode||(1===b.settings.maxItems?"single":"multi"),"boolean"!=typeof b.settings.hideSelected&&(b.settings.hideSelected="multi"===b.settings.mode),b.initializePlugins(b.settings.plugins),b.setupCallbacks(),b.setupTemplates(),b.setup()};return(c.mixin(a),void 0!==d)?d.mixin(a):(e="Dependency MicroPlugin is missing",b={explanation:'Make sure you either: (1) are using the "standalone" version of Selectize, or (2) require MicroPlugin before you load Selectize.'},console.error("Selectize: "+e),b.explanation&&(console.group&&console.group(),console.error(b.explanation),console.group&&console.groupEnd())),$.extend(a.prototype,{setup:function(){var i,j,d,e,r,t,n,o,p,m,a=this,c=a.settings,g=a.eventNS,u=$(window),q=$(document),b=a.$input;if(n=a.settings.mode,o=b.attr("class")||"",i=$("<div>").addClass(c.wrapperClass).addClass(o).addClass(n),j=$("<div>").addClass(c.inputClass).addClass("items").appendTo(i),d=$('<input type="text" autocomplete="off" />').appendTo(j).attr("tabindex",b.is(":disabled")?"-1":a.tabIndex),t=$(c.dropdownParent||i),e=$("<div>").addClass(c.dropdownClass).addClass(n).hide().appendTo(t),r=$("<div>").addClass(c.dropdownContentClass).appendTo(e),(m=b.attr("id"))&&(d.attr("id",m+"-selectized"),$("label[for='"+m+"']").attr("for",m+"-selectized")),a.settings.copyClassesToDropdown&&e.addClass(o),i.css({width:b[0].style.width}),a.plugins.names.length&&(p="plugin-"+a.plugins.names.join(" plugin-"),i.addClass(p),e.addClass(p)),(null===c.maxItems||c.maxItems>1)&&1===a.tagType&&b.attr("multiple","multiple"),a.settings.placeholder&&d.attr("placeholder",c.placeholder),!a.settings.splitOn&&a.settings.delimiter){var w=a.settings.delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");a.settings.splitOn=new RegExp("\\s*"+w+"+\\s*")}b.attr("autocorrect")&&d.attr("autocorrect",b.attr("autocorrect")),b.attr("autocapitalize")&&d.attr("autocapitalize",b.attr("autocapitalize")),d[0].type=b[0].type,a.$wrapper=i,a.$control=j,a.$control_input=d,a.$dropdown=e,a.$dropdown_content=r,e.on("mouseenter mousedown click","[data-disabled]>[data-selectable]",function(a){a.stopImmediatePropagation()}),e.on("mouseenter","[data-selectable]",function(){return a.onOptionHover.apply(a,arguments)}),e.on("mousedown click","[data-selectable]",function(){return a.onOptionSelect.apply(a,arguments)}),s(j,"mousedown","*:not(input)",function(){return a.onItemSelect.apply(a,arguments)}),v(d),j.on({mousedown:function(){return a.onMouseDown.apply(a,arguments)},click:function(){return a.onClick.apply(a,arguments)}}),d.on({mousedown:function(a){a.stopPropagation()},keydown:function(){return a.onKeyDown.apply(a,arguments)},keyup:function(){return a.onKeyUp.apply(a,arguments)},keypress:function(){return a.onKeyPress.apply(a,arguments)},resize:function(){a.positionDropdown.apply(a,[])},blur:function(){return a.onBlur.apply(a,arguments)},focus:function(){return a.ignoreBlur=!1,a.onFocus.apply(a,arguments)},paste:function(){return a.onPaste.apply(a,arguments)}}),q.on("keydown"+g,function(b){a.isCmdDown=b[f?"metaKey":"ctrlKey"],a.isCtrlDown=b[f?"altKey":"ctrlKey"],a.isShiftDown=b.shiftKey}),q.on("keyup"+g,function(b){b.keyCode===l&&(a.isCtrlDown=!1),16===b.keyCode&&(a.isShiftDown=!1),b.keyCode===k&&(a.isCmdDown=!1)}),q.on("mousedown"+g,function(b){if(a.isFocused){if(b.target===a.$dropdown[0]||b.target.parentNode===a.$dropdown[0])return!1;a.$control.has(b.target).length||b.target===a.$control[0]||a.blur(b.target)}}),u.on(["scroll"+g,"resize"+g].join(" "),function(){a.isOpen&&a.positionDropdown.apply(a,arguments)}),u.on("mousemove"+g,function(){a.ignoreHover=!1}),this.revertSettings={$children:b.children().detach(),tabindex:b.attr("tabindex")},b.attr("tabindex",-1).hide().after(a.$wrapper),$.isArray(c.items)&&(a.setValue(c.items),delete c.items),h&&b.on("invalid"+g,function(b){b.preventDefault(),a.isInvalid=!0,a.refreshState()}),a.updateOriginalInput(),a.refreshItems(),a.refreshState(),a.updatePlaceholder(),a.isSetup=!0,b.is(":disabled")&&a.disable(),a.on("change",this.onChange),b.data("selectize",a),b.addClass("selectized"),a.trigger("initialize"),!0===c.preload&&a.onSearchChange("")},setupTemplates:function(){var a=this,b=a.settings.labelField,c=a.settings.optgroupLabelField;a.settings.render=$.extend({},{optgroup:function(a){return'<div class="optgroup">'+a.html+"</div>"},optgroup_header:function(a,b){return'<div class="optgroup-header">'+b(a[c])+"</div>"},option:function(a,c){return'<div class="option">'+c(a[b])+"</div>"},item:function(a,c){return'<div class="item">'+c(a[b])+"</div>"},option_create:function(a,b){return'<div class="create">Add <strong>'+b(a.input)+"</strong>&hellip;</div>"}},a.settings.render)},setupCallbacks:function(){var a,c,b={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",clear:"onClear",option_add:"onOptionAdd",option_remove:"onOptionRemove",option_clear:"onOptionClear",optgroup_add:"onOptionGroupAdd",optgroup_remove:"onOptionGroupRemove",optgroup_clear:"onOptionGroupClear",dropdown_open:"onDropdownOpen",dropdown_close:"onDropdownClose",type:"onType",load:"onLoad",focus:"onFocus",blur:"onBlur"};for(a in b)b.hasOwnProperty(a)&&(c=this.settings[b[a]])&&this.on(a,c)},onClick:function(a){this.isFocused&&this.isOpen||(this.focus(),a.preventDefault())},onMouseDown:function(b){var a=this,c=b.isDefaultPrevented();if($(b.target),a.isFocused){if(b.target!==a.$control_input[0])return"single"===a.settings.mode?a.isOpen?a.close():a.open():c||a.setActiveItem(null),!1}else c||window.setTimeout(function(){a.focus()},0)},onChange:function(){this.$input.trigger("change")},onPaste:function(b){var a=this;if(a.isFull()||a.isInputHidden||a.isLocked){b.preventDefault();return}a.settings.splitOn&&setTimeout(function(){var c=a.$control_input.val();if(c.match(a.settings.splitOn))for(var d=$.trim(c).split(a.settings.splitOn),b=0,e=d.length;b<e;b++)a.createItem(d[b])},0)},onKeyPress:function(a){if(this.isLocked)return a&&a.preventDefault();var b=String.fromCharCode(a.keyCode||a.which);if(this.settings.create&&"multi"===this.settings.mode&&b===this.settings.delimiter)return this.createItem(),a.preventDefault(),!1},onKeyDown:function(b){b.target,this.$control_input[0];var a=this;if(a.isLocked){9!==b.keyCode&&b.preventDefault();return}switch(b.keyCode){case 65:if(a.isCmdDown){a.selectAll();return}break;case 27:a.isOpen&&(b.preventDefault(),b.stopPropagation(),a.close());return;case 78:if(!b.ctrlKey||b.altKey)break;case 40:if(!a.isOpen&&a.hasOptions)a.open();else if(a.$activeOption){a.ignoreHover=!0;var c=a.getAdjacentOption(a.$activeOption,1);c.length&&a.setActiveOption(c,!0,!0)}b.preventDefault();return;case 80:if(!b.ctrlKey||b.altKey)break;case 38:if(a.$activeOption){a.ignoreHover=!0;var d=a.getAdjacentOption(a.$activeOption,-1);d.length&&a.setActiveOption(d,!0,!0)}b.preventDefault();return;case 13:a.isOpen&&a.$activeOption&&(a.onOptionSelect({currentTarget:a.$activeOption}),b.preventDefault());return;case 37:a.advanceSelection(-1,b);return;case 39:a.advanceSelection(1,b);return;case 9:a.settings.selectOnTab&&a.isOpen&&a.$activeOption&&(a.onOptionSelect({currentTarget:a.$activeOption}),a.isFull()||b.preventDefault()),a.settings.create&&a.createItem()&&b.preventDefault();return;case 8:case 46:a.deleteSelection(b);return}if((a.isFull()||a.isInputHidden)&&!(f?b.metaKey:b.ctrlKey)){b.preventDefault();return}},onKeyUp:function(c){var a=this;if(a.isLocked)return c&&c.preventDefault();var b=a.$control_input.val()||"";a.lastValue!==b&&(a.lastValue=b,a.onSearchChange(b),a.refreshOptions(),a.trigger("type",b))},onSearchChange:function(b){var a=this,c=a.settings.load;c&&(a.loadedSearches.hasOwnProperty(b)||(a.loadedSearches[b]=!0,a.load(function(d){c.apply(a,[b,d])})))},onFocus:function(b){var a=this,c=a.isFocused;if(a.isDisabled)return a.blur(),b&&b.preventDefault(),!1;a.ignoreFocus||(a.isFocused=!0,"focus"===a.settings.preload&&a.onSearchChange(""),c||a.trigger("focus"),a.$activeItems.length||(a.showInput(),a.setActiveItem(null),a.refreshOptions(!!a.settings.openOnFocus)),a.refreshState())},onBlur:function(c,d){var a=this;if(a.isFocused){if(a.isFocused=!1,a.ignoreFocus)return;if(!a.ignoreBlur&&document.activeElement===a.$dropdown_content[0]){a.ignoreBlur=!0,a.onFocus(c);return}var b=function(){a.close(),a.setTextboxValue(""),a.setActiveItem(null),a.setActiveOption(null),a.setCaret(a.items.length),a.refreshState(),d&&d.focus&&d.focus(),a.isBlurring=!1,a.ignoreFocus=!1,a.trigger("blur")};a.isBlurring=!0,a.ignoreFocus=!0,a.settings.create&&a.settings.createOnBlur?a.createItem(null,!1,b):b()}},onOptionHover:function(a){this.ignoreHover||this.setActiveOption(a.currentTarget,!1)},onOptionSelect:function(b){var c,d,a=this;b.preventDefault&&(b.preventDefault(),b.stopPropagation()),(d=$(b.currentTarget)).hasClass("create")?a.createItem(null,function(){a.settings.closeAfterSelect&&a.close()}):void 0!==(c=d.attr("data-value"))&&(a.lastQuery=null,a.setTextboxValue(""),a.addItem(c),a.settings.closeAfterSelect?a.close():!a.settings.hideSelected&&b.type&&/mouse/.test(b.type)&&a.setActiveOption(a.getOption(c)))},onItemSelect:function(a){this.isLocked||"multi"===this.settings.mode&&(a.preventDefault(),this.setActiveItem(a.currentTarget,a))},load:function(b){var a=this,c=a.$wrapper.addClass(a.settings.loadingClass);a.loading++,b.apply(a,[function(b){a.loading=Math.max(a.loading-1,0),b&&b.length&&(a.addOption(b),a.refreshOptions(a.isFocused&&!a.isInputHidden)),a.loading||c.removeClass(a.settings.loadingClass),a.trigger("load",b)}])},setTextboxValue:function(a){var b=this.$control_input;b.val()!==a&&(b.val(a).triggerHandler("update"),this.lastValue=a)},getValue:function(){return 1===this.tagType&&this.$input.attr("multiple")?this.items:this.items.join(this.settings.delimiter)},setValue:function(b,a){r(this,a?[]:["change"],function(){this.clear(a),this.addItems(b,a)})},setActiveItem:function(b,g){var h,e,i,c,d,f,j,k,a=this;if("single"!==a.settings.mode){if(!(b=$(b)).length){$(a.$activeItems).removeClass("active"),a.$activeItems=[],a.isFocused&&a.showInput();return}if("mousedown"===(h=g&&g.type.toLowerCase())&&a.isShiftDown&&a.$activeItems.length){for(k=a.$control.children(".active:last"),c=Array.prototype.indexOf.apply(a.$control[0].childNodes,[k[0]]),d=Array.prototype.indexOf.apply(a.$control[0].childNodes,[b[0]]),c>d&&(j=c,c=d,d=j),e=c;e<=d;e++)f=a.$control[0].childNodes[e],-1===a.$activeItems.indexOf(f)&&($(f).addClass("active"),a.$activeItems.push(f));g.preventDefault()}else"mousedown"===h&&a.isCtrlDown||"keydown"===h&&this.isShiftDown?b.hasClass("active")?(i=a.$activeItems.indexOf(b[0]),a.$activeItems.splice(i,1),b.removeClass("active")):a.$activeItems.push(b.addClass("active")[0]):($(a.$activeItems).removeClass("active"),a.$activeItems=[b.addClass("active")[0]]);a.hideInput(),this.isFocused||a.focus()}},setActiveOption:function(d,b,g){var e,f,c,h,i,a=this;a.$activeOption&&a.$activeOption.removeClass("active"),a.$activeOption=null,(d=$(d)).length&&(a.$activeOption=d.addClass("active"),(b||!m(b))&&(e=a.$dropdown_content.height(),f=a.$activeOption.outerHeight(!0),b=a.$dropdown_content.scrollTop()||0,c=a.$activeOption.offset().top-a.$dropdown_content.offset().top+b,h=c,i=c-e+f,c+f>e+b?a.$dropdown_content.stop().animate({scrollTop:i},g?a.settings.scrollDuration:0):c<b&&a.$dropdown_content.stop().animate({scrollTop:h},g?a.settings.scrollDuration:0)))},selectAll:function(){var a=this;"single"!==a.settings.mode&&(a.$activeItems=Array.prototype.slice.apply(a.$control.children(":not(input)").addClass("active")),a.$activeItems.length&&(a.hideInput(),a.close()),a.focus())},hideInput:function(){var a=this;a.setTextboxValue(""),a.$control_input.css({opacity:0,position:"absolute",left:a.rtl?1e4:-1e4}),a.isInputHidden=!0},showInput:function(){this.$control_input.css({opacity:1,position:"relative",left:0}),this.isInputHidden=!1},focus:function(){var a=this;a.isDisabled||(a.ignoreFocus=!0,a.$control_input[0].focus(),window.setTimeout(function(){a.ignoreFocus=!1,a.onFocus()},0))},blur:function(a){this.$control_input[0].blur(),this.onBlur(null,a)},getScoreFunction:function(a){return this.sifter.getScoreFunction(a,this.getSearchOptions())},getSearchOptions:function(){var a=this.settings,b=a.sortField;return"string"==typeof b&&(b=[{field:b}]),{fields:a.searchField,conjunction:a.searchConjunction,sort:b,nesting:a.nesting}},search:function(d){var c,b,e,a=this,f=a.settings,g=this.getSearchOptions();if(f.score&&"function"!=typeof(e=a.settings.score.apply(this,[d])))throw new Error('Selectize "score" setting must be a function that returns a function');if(d!==a.lastQuery?(a.lastQuery=d,b=a.sifter.search(d,$.extend(g,{score:e})),a.currentResults=b):b=$.extend(!0,{},a.currentResults),f.hideSelected)for(c=b.items.length-1;c>=0;c--)-1!==a.items.indexOf(n(b.items[c].id))&&b.items.splice(c,1);return b},refreshOptions:function(k){void 0===k&&(k=!0);var c,l,u,d,f,i,r,v,b,m,o,p,x,g,s,q,a=this,t=$.trim(a.$control_input.val()),e=a.search(t),h=a.$dropdown_content,y=a.$activeOption&&n(a.$activeOption.attr("data-value"));for(d=e.items.length,"number"==typeof a.settings.maxOptions&&(d=Math.min(d,a.settings.maxOptions)),f={},i=[],c=0;c<d;c++)for(l=0,r=a.options[e.items[c].id],v=a.render("option",r),b=r[a.settings.optgroupField]||"",m=$.isArray(b)?b:[b],u=m&&m.length;l<u;l++)b=m[l],a.optgroups.hasOwnProperty(b)||(b=""),f.hasOwnProperty(b)||(f[b]=document.createDocumentFragment(),i.push(b)),f[b].appendChild(v);for(this.settings.lockOptgroupOrder&&i.sort(function(b,c){var d=a.optgroups[b].$order||0,e=a.optgroups[c].$order||0;return d-e}),o=document.createDocumentFragment(),c=0,d=i.length;c<d;c++)b=i[c],a.optgroups.hasOwnProperty(b)&&f[b].childNodes.length?((p=document.createDocumentFragment()).appendChild(a.render("optgroup_header",a.optgroups[b])),p.appendChild(f[b]),o.appendChild(a.render("optgroup",$.extend({},a.optgroups[b],{html:w(p),dom:p})))):o.appendChild(f[b]);if(h.html(o),a.settings.highlight&&(h.removeHighlight(),e.query.length&&e.tokens.length))for(c=0,d=e.tokens.length;c<d;c++)j(h,e.tokens[c].regex);if(!a.settings.hideSelected)for(c=0,d=a.items.length;c<d;c++)a.getOption(a.items[c]).addClass("selected");(x=a.canCreate(t))&&(h.prepend(a.render("option_create",{input:t})),q=$(h[0].childNodes[0])),a.hasOptions=e.items.length>0||x,a.hasOptions?(e.items.length>0?((s=y&&a.getOption(y))&&s.length?g=s:"single"===a.settings.mode&&a.items.length&&(g=a.getOption(a.items[0])),g&&g.length||(g=q&&!a.settings.addPrecedence?a.getAdjacentOption(q,1):h.find("[data-selectable]:first"))):g=q,a.setActiveOption(g),k&&!a.isOpen&&a.open()):(a.setActiveOption(null),k&&a.isOpen&&a.close())},addOption:function(a){var c,e,d,b=this;if($.isArray(a)){for(c=0,e=a.length;c<e;c++)b.addOption(a[c]);return}(d=b.registerOption(a))&&(b.userOptions[d]=!0,b.lastQuery=null,b.trigger("option_add",d,a))},registerOption:function(a){var b=n(a[this.settings.valueField]);return!(null==b||this.options.hasOwnProperty(b))&&(a.$order=a.$order|| ++this.order,this.options[b]=a,b)},registerOptionGroup:function(a){var b=n(a[this.settings.optgroupValueField]);return!!b&&(a.$order=a.$order|| ++this.order,this.optgroups[b]=a,b)},addOptionGroup:function(a,b){b[this.settings.optgroupValueField]=a,(a=this.registerOptionGroup(b))&&this.trigger("optgroup_add",a,b)},removeOptionGroup:function(a){this.optgroups.hasOwnProperty(a)&&(delete this.optgroups[a],this.renderCache={},this.trigger("optgroup_remove",a))},clearOptionGroups:function(){this.optgroups={},this.renderCache={},this.trigger("optgroup_clear")},updateOption:function(b,d){var g,h,c,i,e,f,j,a=this;if(b=n(b),c=n(d[a.settings.valueField]),null!==b&&a.options.hasOwnProperty(b)){if("string"!=typeof c)throw new Error("Value must be set in option data");j=a.options[b].$order,c!==b&&(delete a.options[b],-1!==(i=a.items.indexOf(b))&&a.items.splice(i,1,c)),d.$order=d.$order||j,a.options[c]=d,e=a.renderCache.item,f=a.renderCache.option,e&&(delete e[b],delete e[c]),f&&(delete f[b],delete f[c]),-1!==a.items.indexOf(c)&&(g=a.getItem(b),h=$(a.render("item",d)),g.hasClass("active")&&h.addClass("active"),g.replaceWith(h)),a.lastQuery=null,a.isOpen&&a.refreshOptions(!1)}},removeOption:function(a,e){var b=this;a=n(a);var c=b.renderCache.item,d=b.renderCache.option;c&&delete c[a],d&&delete d[a],delete b.userOptions[a],delete b.options[a],b.lastQuery=null,b.trigger("option_remove",a),b.removeItem(a,e)},clearOptions:function(){var a=this;a.loadedSearches={},a.userOptions={},a.renderCache={};var b=a.options;$.each(a.options,function(c,d){-1==a.items.indexOf(c)&&delete b[c]}),a.options=a.sifter.items=b,a.lastQuery=null,a.trigger("option_clear")},getOption:function(a){return this.getElementWithValue(a,this.$dropdown_content.find("[data-selectable]"))},getAdjacentOption:function(c,d){var a=this.$dropdown.find("[data-selectable]"),b=a.index(c)+d;return b>=0&&b<a.length?a.eq(b):$()},getElementWithValue:function(b,c){if(null!=(b=n(b))){for(var a=0,d=c.length;a<d;a++)if(c[a].getAttribute("data-value")===b)return $(c[a])}return $()},getItem:function(a){return this.getElementWithValue(a,this.$control.children())},addItems:function(b,g){this.buffer=document.createDocumentFragment();for(var c=this.$control[0].childNodes,a=0;a<c.length;a++)this.buffer.appendChild(c[a]);for(var d=$.isArray(b)?b:[b],a=0,e=d.length;a<e;a++)this.isPending=a<e-1,this.addItem(d[a],g);var f=this.$control[0];f.insertBefore(this.buffer,f.firstChild),this.buffer=null},addItem:function(b,a){r(this,a?[]:["change"],function(){var d,f,g,e,h,c=this.settings.mode;if(b=n(b),-1!==this.items.indexOf(b)){"single"===c&&this.close();return}this.options.hasOwnProperty(b)&&("single"===c&&this.clear(a),"multi"===c&&this.isFull()||(d=$(this.render("item",this.options[b])),h=this.isFull(),this.items.splice(this.caretPos,0,b),this.insertAtCaret(d),(!this.isPending|| !h&&this.isFull())&&this.refreshState(),this.isSetup&&(g=this.$dropdown_content.find("[data-selectable]"),!this.isPending&&(f=this.getOption(b),e=this.getAdjacentOption(f,1).attr("data-value"),this.refreshOptions(this.isFocused&&"single"!==c),e&&this.setActiveOption(this.getOption(e))),!g.length||this.isFull()?this.close():this.isPending||this.positionDropdown(),this.updatePlaceholder(),this.trigger("item_add",b,d),this.isPending||this.updateOriginalInput({silent:a}))))})},removeItem:function(b,e){var c,d,f,a=this;b=n((c=b instanceof $?b:a.getItem(b)).attr("data-value")),d=a.items.indexOf(b),-1!==d&&(c.remove(),c.hasClass("active")&&(f=a.$activeItems.indexOf(c[0]),a.$activeItems.splice(f,1)),a.items.splice(d,1),a.lastQuery=null,!a.settings.persist&&a.userOptions.hasOwnProperty(b)&&a.removeOption(b,e),d<a.caretPos&&a.setCaret(a.caretPos-1),a.refreshState(),a.updatePlaceholder(),a.updateOriginalInput({silent:e}),a.positionDropdown(),a.trigger("item_remove",b,c))},createItem:function(b,d){var a=this,h=a.caretPos;b=b||$.trim(a.$control_input.val()||"");var c=arguments[arguments.length-1];if("function"!=typeof c&&(c=function(){}),"boolean"!=typeof d&&(d=!0),!a.canCreate(b))return c(),!1;a.lock();var g="function"==typeof a.settings.create?this.settings.create:function(c){var b={};return b[a.settings.labelField]=c,b[a.settings.valueField]=c,b},e=p(function(b){if(a.unlock(),!b||"object"!=typeof b)return c();var e=n(b[a.settings.valueField]);if("string"!=typeof e)return c();a.setTextboxValue(""),a.addOption(b),a.setCaret(h),a.addItem(e),a.refreshOptions(d&&"single"!==a.settings.mode),c(b)}),f=g.apply(this,[b,e]);return void 0!==f&&e(f),!0},refreshItems:function(){this.lastQuery=null,this.isSetup&&this.addItem(this.items),this.refreshState(),this.updateOriginalInput()},refreshState:function(){this.refreshValidityState(),this.refreshClasses()},refreshValidityState:function(){if(!this.isRequired)return!1;var a=!this.items.length;this.isInvalid=a,this.$control_input.prop("required",a),this.$input.prop("required",!a)},refreshClasses:function(){var a=this.isFull(),b=this.isLocked;this.$wrapper.toggleClass("rtl",this.rtl),this.$control.toggleClass("focus",this.isFocused).toggleClass("disabled",this.isDisabled).toggleClass("required",this.isRequired).toggleClass("invalid",this.isInvalid).toggleClass("locked",b).toggleClass("full",a).toggleClass("not-full",!a).toggleClass("input-active",this.isFocused&&!this.isInputHidden).toggleClass("dropdown-active",this.isOpen).toggleClass("has-options",!$.isEmptyObject(this.options)).toggleClass("has-items",this.items.length>0),this.$control_input.data("grow",!a&&!b)},isFull:function(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems},updateOriginalInput:function(c){var a,d,b,e;if(c=c||{},1===this.tagType){for(a=0,b=[],d=this.items.length;a<d;a++)e=this.options[this.items[a]][this.settings.labelField]||"",b.push('<option value="'+o(this.items[a])+'" selected="selected">'+o(e)+"</option>");b.length||this.$input.attr("multiple")||b.push('<option value="" selected="selected"></option>'),this.$input.html(b.join(""))}else this.$input.val(this.getValue()),this.$input.attr("value",this.$input.val());this.isSetup&&(c.silent||this.trigger("change",this.$input.val()))},updatePlaceholder:function(){if(this.settings.placeholder){var a=this.$control_input;this.items.length?a.removeAttr("placeholder"):a.attr("placeholder",this.settings.placeholder),a.triggerHandler("update",{force:!0})}},open:function(){var a=this;a.isLocked||a.isOpen||"multi"===a.settings.mode&&a.isFull()||(a.focus(),a.isOpen=!0,a.refreshState(),a.$dropdown.css({visibility:"hidden",display:"block"}),a.positionDropdown(),a.$dropdown.css({visibility:"visible"}),a.trigger("dropdown_open",a.$dropdown))},close:function(){var a=this,b=a.isOpen;"single"===a.settings.mode&&a.items.length&&(a.hideInput(),a.isBlurring||a.$control_input.blur()),a.isOpen=!1,a.$dropdown.hide(),a.setActiveOption(null),a.refreshState(),b&&a.trigger("dropdown_close",a.$dropdown)},positionDropdown:function(){var a=this.$control,b="body"===this.settings.dropdownParent?a.offset():a.position();b.top+=a.outerHeight(!0),this.$dropdown.css({width:a[0].getBoundingClientRect().width,top:b.top,left:b.left})},clear:function(b){var a=this;a.items.length&&(a.$control.children(":not(input)").remove(),a.items=[],a.lastQuery=null,a.setCaret(0),a.setActiveItem(null),a.updatePlaceholder(),a.updateOriginalInput({silent:b}),a.refreshState(),a.showInput(),a.trigger("clear"))},insertAtCaret:function(d){var b=Math.min(this.caretPos,this.items.length),c=d[0],a=this.buffer||this.$control[0];0===b?a.insertBefore(c,a.firstChild):a.insertBefore(c,a.childNodes[b]),this.setCaret(b+1)},deleteSelection:function(b){var d,h,c,e,a,f,g,i,j;if(c=b&&8===b.keyCode?-1:1,e=t(this.$control_input[0]),this.$activeOption&&!this.settings.hideSelected&&(g=this.getAdjacentOption(this.$activeOption,-1).attr("data-value")),a=[],this.$activeItems.length){for(j=this.$control.children(".active:"+(c>0?"last":"first")),f=this.$control.children(":not(input)").index(j),c>0&&f++,d=0,h=this.$activeItems.length;d<h;d++)a.push($(this.$activeItems[d]).attr("data-value"));b&&(b.preventDefault(),b.stopPropagation())}else(this.isFocused||"single"===this.settings.mode)&&this.items.length&&(c<0&&0===e.start&&0===e.length?a.push(this.items[this.caretPos-1]):c>0&&e.start===this.$control_input.val().length&&a.push(this.items[this.caretPos]));if(!a.length||"function"==typeof this.settings.onDelete&& !1===this.settings.onDelete.apply(this,[a]))return!1;for(void 0!==f&&this.setCaret(f);a.length;)this.removeItem(a.pop());return this.showInput(),this.positionDropdown(),this.refreshOptions(!0),g&&(i=this.getOption(g)).length&&this.setActiveOption(i),!0},advanceSelection:function(a,g){var e,b,c,d,f;0!==a&&(this.rtl&&(a*=-1),e=a>0?"last":"first",b=t(this.$control_input[0]),this.isFocused&&!this.isInputHidden?(d=this.$control_input.val().length,(a<0?0!==b.start||0!==b.length:b.start!==d)||d||this.advanceCaret(a,g)):(f=this.$control.children(".active:"+e)).length&&(c=this.$control.children(":not(input)").index(f),this.setActiveItem(null),this.setCaret(a>0?c+1:c)))},advanceCaret:function(a,b){var c,d;0!==a&&(c=a>0?"next":"prev",this.isShiftDown?(d=this.$control_input[c]()).length&&(this.hideInput(),this.setActiveItem(d),b&&b.preventDefault()):this.setCaret(this.caretPos+a))},setCaret:function(c){var b,e,f,d,a=this;if(c="single"===a.settings.mode?a.items.length:Math.max(0,Math.min(a.items.length,c)),!a.isPending)for(b=0,e=(f=a.$control.children(":not(input)")).length;b<e;b++)d=$(f[b]).detach(),b<c?a.$control_input.before(d):a.$control.append(d);a.caretPos=c},lock:function(){this.close(),this.isLocked=!0,this.refreshState()},unlock:function(){this.isLocked=!1,this.refreshState()},disable:function(){var a=this;a.$input.prop("disabled",!0),a.$control_input.prop("disabled",!0).prop("tabindex",-1),a.isDisabled=!0,a.lock()},enable:function(){var a=this;a.$input.prop("disabled",!1),a.$control_input.prop("disabled",!1).prop("tabindex",a.tabIndex),a.isDisabled=!1,a.unlock()},destroy:function(){var b=this.eventNS,c=this.revertSettings;this.trigger("destroy"),this.off(),this.$wrapper.remove(),this.$dropdown.remove(),this.$input.html("").append(c.$children).removeAttr("tabindex").removeClass("selectized").attr({tabindex:c.tabindex}).show(),this.$control_input.removeData("grow"),this.$input.removeData("selectize"),0== --a.count&&a.$testInput&&(a.$testInput.remove(),a.$testInput=void 0),$(window).off(b),$(document).off(b),$(document.body).off(b),delete this.$input[0].selectize},render:function(a,d){var e,g,c="",f=!1,b=this;return(("option"===a||"item"===a)&&(f=!!(e=n(d[b.settings.valueField]))),f&&(m(b.renderCache[a])||(b.renderCache[a]={}),b.renderCache[a].hasOwnProperty(e)))?b.renderCache[a][e]:(c=$(b.settings.render[a].apply(this,[d,o])),"option"===a||"option_create"===a?d[b.settings.disabledField]||c.attr("data-selectable",""):"optgroup"===a&&(g=d[b.settings.optgroupValueField]||"",c.attr("data-group",g),d[b.settings.disabledField]&&c.attr("data-disabled","")),("option"===a||"item"===a)&&c.attr("data-value",e||""),f&&(b.renderCache[a][e]=c[0]),c[0])},clearCache:function(a){var b=this;void 0===a?b.renderCache={}:delete b.renderCache[a]},canCreate:function(b){if(!this.settings.create)return!1;var a=this.settings.createFilter;return b.length&&("function"!=typeof a||a.apply(this,[b]))&&("string"!=typeof a||new RegExp(a).test(b))&&(!(a instanceof RegExp)||a.test(b))}}),a.count=0,a.defaults={options:[],optgroups:[],plugins:[],delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:!1,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,maxOptions:1e3,maxItems:null,hideSelected:null,addPrecedence:!1,selectOnTab:!1,preload:!1,allowEmptyOption:!1,closeAfterSelect:!1,scrollDuration:60,loadThrottle:300,loadingClass:"loading",dataAttr:"data-data",optgroupField:"optgroup",valueField:"value",labelField:"text",disabledField:"disabled",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"selectize-control",inputClass:"selectize-input",dropdownClass:"selectize-dropdown",dropdownContentClass:"selectize-dropdown-content",dropdownParent:null,copyClassesToDropdown:!0,render:{}},$.fn.selectize=function(c){var d=$.fn.selectize.defaults,b=$.extend({},d,c),e=b.dataAttr,f=b.labelField,g=b.valueField,h=b.disabledField,i=b.optgroupField,j=b.optgroupLabelField,k=b.optgroupValueField,l=function(j,c){var a,d,h,i,k=j.attr(e);if(k)for(a=0,c.options=JSON.parse(k),d=c.options.length;a<d;a++)c.items.push(c.options[a][g]);else{var l=$.trim(j.val()||"");if(!b.allowEmptyOption&&!l.length)return;for(a=0,d=(h=l.split(b.delimiter)).length;a<d;a++)(i={})[f]=h[a],i[g]=h[a],c.options.push(i);c.items=h}},m=function(d,l){var a,m,o,c,q=l.options,r={},s=function(b){var a=e&&b.attr(e);return"string"==typeof a&&a.length?JSON.parse(a):null},p=function(d,e){d=$(d);var c=n(d.val());if(c||b.allowEmptyOption){if(r.hasOwnProperty(c)){if(e){var j=r[c][i];j?$.isArray(j)?j.push(e):r[c][i]=[j,e]:r[c][i]=e}return}var a=s(d)||{};a[f]=a[f]||d.text(),a[g]=a[g]||c,a[h]=a[h]||d.prop("disabled"),a[i]=a[i]||e,r[c]=a,q.push(a),d.is(":selected")&&l.items.push(c)}};for(a=0,l.maxItems=d.attr("multiple")?null:1,m=(c=d.children()).length;a<m;a++)"optgroup"===(o=c[a].tagName.toLowerCase())?function(a){var b,f,c,d,e;for((c=(a=$(a)).attr("label"))&&((d=s(a)||{})[j]=c,d[k]=c,d[h]=a.prop("disabled"),l.optgroups.push(d)),e=$("option",a),b=0,f=e.length;b<f;b++)p(e[b],c)}(c[a]):"option"===o&&p(c[a])};return this.each(function(){if(!this.selectize){var e=$(this),h=this.tagName.toLowerCase(),f=e.attr("placeholder")||e.attr("data-placeholder");f||b.allowEmptyOption||(f=e.children('option[value=""]').text());var g={placeholder:f,options:[],optgroups:[],items:[]};"select"===h?m(e,g):l(e,g),new a(e,$.extend(!0,{},d,g,c))}})},$.fn.selectize.defaults=a.defaults,$.fn.selectize.support={validity:h},a.define("drag_drop",function(e){if(!$.fn.sortable)throw new Error('The "drag_drop" plugin requires jQuery UI "sortable".');if("multi"===this.settings.mode){var b,c,d,a=this;a.lock=(b=a.lock,function(){var c=a.$control.data("sortable");return c&&c.disable(),b.apply(a,arguments)}),a.unlock=(c=a.unlock,function(){var b=a.$control.data("sortable");return b&&b.enable(),c.apply(a,arguments)}),a.setup=(d=a.setup,function(){d.apply(this,arguments);var b=a.$control.sortable({items:"[data-value]",forcePlaceholderSize:!0,disabled:a.isLocked,start:function(c,a){a.placeholder.css("width",a.helper.css("width")),b.css({overflow:"visible"})},stop:function(){b.css({overflow:"hidden"});var c=a.$activeItems?a.$activeItems.slice():null,d=[];b.children("[data-value]").each(function(){d.push($(this).attr("data-value"))}),a.setValue(d),a.setActiveItem(c)}})})}}),a.define("dropdown_header",function(a){var c,b=this;a=$.extend({title:"Untitled",headerClass:"selectize-dropdown-header",titleRowClass:"selectize-dropdown-header-title",labelClass:"selectize-dropdown-header-label",closeClass:"selectize-dropdown-header-close",html:function(a){return'<div class="'+a.headerClass+'"><div class="'+a.titleRowClass+'"><span class="'+a.labelClass+'">'+a.title+'</span><a href="javascript:void(0)" class="'+a.closeClass+'">&times;</a></div></div>'}},a),b.setup=(c=b.setup,function(){c.apply(b,arguments),b.$dropdown_header=$(a.html(a)),b.$dropdown.prepend(b.$dropdown_header)})}),a.define("optgroup_columns",function(a){var c,d=this;a=$.extend({equalizeWidth:!0,equalizeHeight:!0},a),this.getAdjacentOption=function(c,d){var a=c.closest("[data-group]").find("[data-selectable]"),b=a.index(c)+d;return b>=0&&b<a.length?a.eq(b):$()},this.onKeyDown=(c=d.onKeyDown,function(b){var e,f,g,a;if(this.isOpen&&(37===b.keyCode||39===b.keyCode)){d.ignoreHover=!0,e=(a=this.$activeOption.closest("[data-group]")).find("[data-selectable]").index(this.$activeOption),(f=(g=(a=37===b.keyCode?a.prev("[data-group]"):a.next("[data-group]")).find("[data-selectable]")).eq(Math.min(g.length-1,e))).length&&this.setActiveOption(f);return}return c.apply(this,arguments)});var e=function(){var a,b=e.width,c=document;return void 0===b&&((a=c.createElement("div")).innerHTML='<div style="width:50px;height:50px;position:absolute;left:-50px;top:-50px;overflow:auto;"><div style="width:1px;height:100px;"></div></div>',a=a.firstChild,c.body.appendChild(a),b=e.width=a.offsetWidth-a.clientWidth,c.body.removeChild(a)),b},b=function(){var f,b,g,h,i,j,c;if((b=(c=$("[data-group]",d.$dropdown_content)).length)&&d.$dropdown_content.width()){if(a.equalizeHeight){for(f=0,g=0;f<b;f++)g=Math.max(g,c.eq(f).height());c.css({height:g})}a.equalizeWidth&&(h=Math.round((j=d.$dropdown_content.innerWidth()-e())/b),c.css({width:h}),b>1&&(i=j-h*(b-1),c.eq(b-1).css({width:i})))}};(a.equalizeHeight||a.equalizeWidth)&&(g.after(this,"positionDropdown",b),g.after(this,"refreshOptions",b))}),a.define("remove_button",function(a){var d,b,f,h,i,e,c,g,j,k,l;if(a=$.extend({label:"&times;",title:"Remove",className:"remove",append:!0},a),"single"===this.settings.mode){d=this,(b=a).className="remove-single",f=d,h='<a href="javascript:void(0)" class="'+b.className+'" tabindex="-1" title="'+o(b.title)+'">'+b.label+"</a>",d.setup=(i=f.setup,function(){if(b.append){var a=$(f.$input.context).attr("id");$("#"+a);var c=f.settings.render.item;f.settings.render.item=function(e){var a,b;return a=c.apply(d,arguments),b=h,$("<span>").append(a).append(b)}}i.apply(d,arguments),d.$control.on("click","."+b.className,function(a){a.preventDefault(),f.isLocked||f.clear()})});return}e=this,c=a,g=e,j='<a href="javascript:void(0)" class="'+c.className+'" tabindex="-1" title="'+o(c.title)+'">'+c.label+"</a>",k=function(a,c){var b=a.search(/(<\/[^>]+>\s*)$/);return a.substring(0,b)+c+a.substring(b)},e.setup=(l=g.setup,function(){if(c.append){var a=g.settings.render.item;g.settings.render.item=function(b){return k(a.apply(e,arguments),j)}}l.apply(e,arguments),e.$control.on("click","."+c.className,function(a){if(a.preventDefault(),!g.isLocked){var b=$(a.currentTarget).parent();g.setActiveItem(b),g.deleteSelection()&&g.setCaret(g.items.length)}})})}),a.define("restore_on_backspace",function(a){var b;a.text=a.text||function(a){return a[this.settings.labelField]},this.onKeyDown=(b=this.onKeyDown,function(c){var d,e;if(8===c.keyCode&&""===this.$control_input.val()&&!this.$activeItems.length&&(d=this.caretPos-1)>=0&&d<this.items.length){e=this.options[this.items[d]],this.deleteSelection(c)&&(this.setTextboxValue(a.text.apply(this,[e])),this.refreshOptions(!0)),c.preventDefault();return}return b.apply(this,arguments)})}),a})