selectize-min.js
44.7 KB
!function(e,t){"function"==typeof define&&define.amd?define("sifter",t):"object"==typeof exports?module.exports=t():e.Sifter=t()}(this,(function(){var e=function(e,t){this.items=e,this.settings=t||{diacritics:!0}};e.prototype.tokenize=function(e){if(!(e=o(String(e||"").toLowerCase()))||!e.length)return[];var t,n,i,s,l=[],p=e.split(/ +/);for(t=0,n=p.length;t<n;t++){if(i=r(p[t]),this.settings.diacritics)for(s in a)a.hasOwnProperty(s)&&(i=i.replace(new RegExp(s,"g"),a[s]));l.push({string:p[t],regex:new RegExp(i,"i")})}return l},e.prototype.iterator=function(e,t){var n;n=s(e)?Array.prototype.forEach||function(e){for(var t=0,n=this.length;t<n;t++)e(this[t],t,this)}:function(e){for(var t in this)this.hasOwnProperty(t)&&e(this[t],t,this)},n.apply(e,[t])},e.prototype.getScoreFunction=function(e,t){var n,o,r,s,a;e=(n=this).prepareSearch(e,t),r=e.tokens,o=e.options.fields,s=r.length,a=e.options.nesting;var l=function(e,t){var n,i;return e?-1===(i=(e=String(e||"")).search(t.regex))?0:(n=t.string.length/e.length,0===i&&(n+=.5),n):0},p=(u=o.length)?1===u?function(e,t){return l(i(t,o[0],a),e)}:function(e,t){for(var n=0,r=0;n<u;n++)r+=l(i(t,o[n],a),e);return r/u}:function(){return 0},u;return s?1===s?function(e){return p(r[0],e)}:"and"===e.options.conjunction?function(e){for(var t,n=0,i=0;n<s;n++){if((t=p(r[n],e))<=0)return 0;i+=t}return i/s}:function(e){for(var t=0,n=0;t<s;t++)n+=p(r[t],e);return n/s}:function(){return 0}},e.prototype.getSortFunction=function(e,n){var o,r,s,a,l,p,u,c,d,h,g;if(g=!(e=(s=this).prepareSearch(e,n)).query&&n.sort_empty||n.sort,d=function(e,t){return"$score"===e?t.score:i(s.items[t.id],e,n.nesting)},l=[],g)for(o=0,r=g.length;o<r;o++)(e.query||"$score"!==g[o].field)&&l.push(g[o]);if(e.query){for(h=!0,o=0,r=l.length;o<r;o++)if("$score"===l[o].field){h=!1;break}h&&l.unshift({field:"$score",direction:"desc"})}else for(o=0,r=l.length;o<r;o++)if("$score"===l[o].field){l.splice(o,1);break}for(c=[],o=0,r=l.length;o<r;o++)c.push("desc"===l[o].direction?-1:1);return(p=l.length)?1===p?(a=l[0].field,u=c[0],function(e,n){return u*t(d(a,e),d(a,n))}):function(e,n){var i,o,r,s,a;for(i=0;i<p;i++)if(a=l[i].field,o=c[i]*t(d(a,e),d(a,n)))return o;return 0}:null},e.prototype.prepareSearch=function(e,t){if("object"==typeof e)return e;var i=(t=n({},t)).fields,o=t.sort,r=t.sort_empty;return i&&!s(i)&&(t.fields=[i]),o&&!s(o)&&(t.sort=[o]),r&&!s(r)&&(t.sort_empty=[r]),{options:t,query:String(e||"").toLowerCase(),tokens:this.tokenize(e),total:0,items:[]}},e.prototype.search=function(e,t){var n=this,i,o,r,s,a,l;return r=this.prepareSearch(e,t),t=r.options,e=r.query,l=t.score||n.getScoreFunction(r),e.length?n.iterator(n.items,(function(e,n){o=l(e),(!1===t.filter||o>0)&&r.items.push({score:o,id:n})})):n.iterator(n.items,(function(e,t){r.items.push({score:1,id:t})})),(a=n.getSortFunction(r,t))&&r.items.sort(a),r.total=r.items.length,"number"==typeof t.limit&&(r.items=r.items.slice(0,t.limit)),r};var t=function(e,t){return"number"==typeof e&&"number"==typeof t?e>t?1:e<t?-1:0:(e=l(String(e||"")))>(t=l(String(t||"")))?1:t>e?-1:0},n=function(e,t){var n,i,o,r;for(n=1,i=arguments.length;n<i;n++)if(r=arguments[n])for(o in r)r.hasOwnProperty(o)&&(e[o]=r[o]);return e},i=function(e,t,n){if(e&&t){if(!n)return e[t];for(var i=t.split(".");i.length&&(e=e[i.shift()]););return e}},o=function(e){return(e+"").replace(/^\s+|\s+$|/g,"")},r=function(e){return(e+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")},s=Array.isArray||"undefined"!=typeof $&&$.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},a={a:"[aḀḁĂăÂâǍǎȺⱥȦȧẠạÄäÀàÁáĀāÃãÅåąĄÃąĄ]",b:"[b␢βΒB฿𐌁ᛒ]",c:"[cĆćĈĉČčĊċC̄c̄ÇçḈḉȻȼƇƈɕᴄCc]",d:"[dĎďḊḋḐḑḌḍḒḓḎḏĐđD̦d̦ƉɖƊɗƋƌᵭᶁᶑȡᴅDdð]",e:"[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀềỄễỂểḜḝḖḗḔḕȆȇẸẹỆệⱸᴇEeɘǝƏƐε]",f:"[fƑƒḞḟ]",g:"[gɢ₲ǤǥĜĝĞğĢģƓɠĠġ]",h:"[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]",i:"[iÍíÌìĬĭÎîǏǐÏïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬḭƗɨɨ̆ᵻᶖİiIıɪIi]",j:"[jȷĴĵɈɉʝɟʲ]",k:"[kƘƙꝀꝁḰḱǨǩḲḳḴḵκϰ₭]",l:"[lŁłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅɭȴʟLl]",n:"[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ƝɲȠƞᵰᶇɳȵɴNnŊŋ]",o:"[oØøÖöÓóÒòÔôǑǒŐőŎŏȮȯỌọƟɵƠơỎỏŌōÕõǪǫȌȍՕօ]",p:"[pṔṕṖṗⱣᵽƤƥᵱ]",q:"[qꝖꝗʠɊɋꝘꝙq̃]",r:"[rŔŕɌɍŘřŖŗṘṙȐȑȒȓṚṛⱤɽ]",s:"[sŚśṠṡṢṣꞨꞩŜŝŠšŞşȘșS̈s̈]",t:"[tŤťṪṫŢţṬṭƮʈȚțṰṱṮṯƬƭ]",u:"[uŬŭɄʉỤụÜüÚúÙùÛûǓǔŰűŬŭƯưỦủŪūŨũŲųȔȕ∪]",v:"[vṼṽṾṿƲʋꝞꝟⱱʋ]",w:"[wẂẃẀẁŴŵẄẅẆẇẈẉ]",x:"[xẌẍẊẋχ]",y:"[yÝýỲỳŶŷŸÿỸỹẎẏỴỵɎɏƳƴ]",z:"[zŹźẐẑŽžŻżẒẓẔẕƵƶ]"},l=function(){var e,t,n,i,o="",r={};for(n in a)if(a.hasOwnProperty(n))for(o+=i=a[n].substring(2,a[n].length-1),e=0,t=i.length;e<t;e++)r[i.charAt(e)]=n;var s=new RegExp("["+o+"]","g");return function(e){return e.replace(s,(function(e){return r[e]})).toLowerCase()}}();return e})),function(e,t){"function"==typeof define&&define.amd?define("microplugin",t):"object"==typeof exports?module.exports=t():e.MicroPlugin=t()}(this,(function(){var e={mixin:function(e){e.plugins={},e.prototype.initializePlugins=function(e){var n,i,o,r=this,s=[];if(r.plugins={names:[],settings:{},requested:{},loaded:{}},t.isArray(e))for(n=0,i=e.length;n<i;n++)"string"==typeof e[n]?s.push(e[n]):(r.plugins.settings[e[n].name]=e[n].options,s.push(e[n].name));else if(e)for(o in e)e.hasOwnProperty(o)&&(r.plugins.settings[o]=e[o],s.push(o));for(;s.length;)r.require(s.shift())},e.prototype.loadPlugin=function(t){var n=this,i=n.plugins,o=e.plugins[t];if(!e.plugins.hasOwnProperty(t))throw new Error('Unable to find "'+t+'" plugin');i.requested[t]=!0,i.loaded[t]=o.fn.apply(n,[n.plugins.settings[t]||{}]),i.names.push(t)},e.prototype.require=function(e){var t=this,n=t.plugins;if(!t.plugins.loaded.hasOwnProperty(e)){if(n.requested[e])throw new Error('Plugin has circular dependency ("'+e+'")');t.loadPlugin(e)}return n.loaded[e]},e.define=function(t,n){e.plugins[t]={name:t,fn:n}}}},t={isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}};return e})),function(e,t){"function"==typeof define&&define.amd?define("selectize",["jquery","sifter","microplugin"],t):"object"==typeof exports?module.exports=t(require("jquery"),require("sifter"),require("microplugin")):e.Selectize=t(e.jQuery,e.Sifter,e.MicroPlugin)}(this,(function($,e,t){"use strict";var n=function(e,t){if("string"!=typeof t||t.length){var n="string"==typeof t?new RegExp(t,"i"):t,i=function(e){var t=0;if(3===e.nodeType){var o=e.data.search(n);if(o>=0&&e.data.length>0){var r=e.data.match(n),s=document.createElement("span");s.className="highlight";var a=e.splitText(o),l=a.splitText(r[0].length),p=a.cloneNode(!0);s.appendChild(p),a.parentNode.replaceChild(s,a),t=1}}else if(1===e.nodeType&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&("highlight"!==e.className||"SPAN"!==e.tagName))for(var u=0;u<e.childNodes.length;++u)u+=i(e.childNodes[u]);return t};return e.each((function(){i(this)}))}};$.fn.removeHighlight=function(){return this.find("span.highlight").each((function(){this.parentNode.firstChild.nodeName;var e=this.parentNode;e.replaceChild(this.firstChild,this),e.normalize()})).end()};var i=function(){};i.prototype={on:function(e,t){this._events=this._events||{},this._events[e]=this._events[e]||[],this._events[e].push(t)},off:function(e,t){var n=arguments.length;return 0===n?delete this._events:1===n?delete this._events[e]:(this._events=this._events||{},void(e in this._events!=!1&&this._events[e].splice(this._events[e].indexOf(t),1)))},trigger:function(e){if(this._events=this._events||{},e in this._events!=!1)for(var t=0;t<this._events[e].length;t++)this._events[e][t].apply(this,Array.prototype.slice.call(arguments,1))}},i.mixin=function(e){for(var t=["on","off","trigger"],n=0;n<t.length;n++)e.prototype[t[n]]=i.prototype[t[n]]};var o=/Mac/.test(navigator.userAgent),r=65,s=188,a=13,l=27,p=37,u=38,c=80,d=39,h=40,g=78,f=8,v=46,m=16,y=o?91:17,w=o?18:17,O=9,C=1,b=2,x=!/android/i.test(window.navigator.userAgent)&&!!document.createElement("input").validity,S=function(e){return void 0!==e},I=function(e){return null==e?null:"boolean"==typeof e?e?"1":"0":e+""},_=function(e){return(e+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},F=function(e){return(e+"").replace(/\$/g,"$$$$")},D={before:function(e,t,n){var i=e[t];e[t]=function(){return n.apply(e,arguments),i.apply(e,arguments)}},after:function(e,t,n){var i=e[t];e[t]=function(){var t=i.apply(e,arguments);return n.apply(e,arguments),t}}},k=function(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}},P=function(e,t){var n;return function(){var i=this,o=arguments;window.clearTimeout(n),n=window.setTimeout((function(){e.apply(i,o)}),t)}},A=function(e,t,n){var i,o=e.trigger,r={};for(i in e.trigger=function(n){var i=n;if(-1===t.indexOf(i))return o.apply(e,arguments);r[i]=arguments},n.apply(e,[]),e.trigger=o,r)r.hasOwnProperty(i)&&o.apply(e,r[i])},z=function(e,t,n,i){e.on(t,n,(function(t){for(var n=t.target;n&&n.parentNode!==e[0];)n=n.parentNode;return t.currentTarget=n,i.apply(this,[t])}))},T=function(e){var t={};if("selectionStart"in e)t.start=e.selectionStart,t.length=e.selectionEnd-t.start;else if(document.selection){e.focus();var n=document.selection.createRange(),i=document.selection.createRange().text.length;n.moveStart("character",-e.value.length),t.start=n.text.length-i,t.length=i}return t},q=function(e,t,n){var i,o,r={};if(n)for(i=0,o=n.length;i<o;i++)r[n[i]]=e.css(n[i]);else r=e.css();t.css(r)},N=function(e,t){return e?(L.$testInput||(L.$testInput=$("<span />").css({position:"absolute",top:-99999,left:-99999,width:"auto",padding:0,whiteSpace:"pre"}).appendTo("body")),L.$testInput.text(e),q(t,L.$testInput,["letterSpacing","fontSize","fontFamily","fontWeight","textTransform"]),L.$testInput.width()):0},j=function(e){var t=null,n=function(n,i){var o,r,s,a,l,p,u,c;i=i||{},(n=n||window.event||{}).metaKey||n.altKey||(i.force||!1!==e.data("grow"))&&(o=e.val(),n.type&&"keydown"===n.type.toLowerCase()&&(s=(r=n.keyCode)>=48&&r<=57||r>=65&&r<=90||r>=96&&r<=111||r>=186&&r<=222||32===r,r===v||8===r?(c=T(e[0])).length?o=o.substring(0,c.start)+o.substring(c.start+c.length):8===r&&c.start?o=o.substring(0,c.start-1)+o.substring(c.start+1):r===v&&void 0!==c.start&&(o=o.substring(0,c.start)+o.substring(c.start+1)):s&&(p=n.shiftKey,u=String.fromCharCode(n.keyCode),o+=u=p?u.toUpperCase():u.toLowerCase())),a=e.attr("placeholder"),!o&&a&&(o=a),(l=N(o,e)+4)!==t&&(t=l,e.width(l),e.triggerHandler("resize")))};e.on("keydown keyup update blur",n),n()},E=function(e){var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML},H=function(e,t){t||(t={});var n="Selectize";console.error("Selectize: "+e),t.explanation&&(console.group&&console.group(),console.error(t.explanation),console.group&&console.groupEnd())},L=function(t,n){var i,o,r,s,a,l=this;(a=t[0]).selectize=l;var p=window.getComputedStyle&&window.getComputedStyle(a,null);if(s=(s=p?p.getPropertyValue("direction"):a.currentStyle&&a.currentStyle.direction)||t.parents("[dir]:first").attr("dir")||"",$.extend(l,{order:0,settings:n,$input:t,tabIndex:t.attr("tabindex")||"",tagType:"select"===a.tagName.toLowerCase()?1:2,rtl:/rtl/i.test(s),eventNS:".selectize"+ ++L.count,highlightedValue:null,isBlurring:!1,isOpen:!1,isDisabled:!1,isRequired:t.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===n.loadThrottle?l.onSearchChange:P(l.onSearchChange,n.loadThrottle)}),l.sifter=new e(this.options,{diacritics:n.diacritics}),l.settings.options){for(o=0,r=l.settings.options.length;o<r;o++)l.registerOption(l.settings.options[o]);delete l.settings.options}if(l.settings.optgroups){for(o=0,r=l.settings.optgroups.length;o<r;o++)l.registerOptionGroup(l.settings.optgroups[o]);delete l.settings.optgroups}l.settings.mode=l.settings.mode||(1===l.settings.maxItems?"single":"multi"),"boolean"!=typeof l.settings.hideSelected&&(l.settings.hideSelected="multi"===l.settings.mode),l.initializePlugins(l.settings.plugins),l.setupCallbacks(),l.setupTemplates(),l.setup()};return i.mixin(L),void 0!==t?t.mixin(L):H("Dependency MicroPlugin is missing",{explanation:'Make sure you either: (1) are using the "standalone" version of Selectize, or (2) require MicroPlugin before you load Selectize.'}),$.extend(L.prototype,{setup:function(){var e=this,t=e.settings,n=e.eventNS,i=$(window),r=$(document),s=e.$input,a,l,p,u,c,d,h,g,f,v,O,C;if(h=e.settings.mode,v=s.attr("class")||"",a=$("<div>").addClass(t.wrapperClass).addClass(v).addClass(h),l=$("<div>").addClass(t.inputClass).addClass("items").appendTo(a),p=$('<input type="text" autocomplete="off" />').appendTo(l).attr("tabindex",s.is(":disabled")?"-1":e.tabIndex),d=$(t.dropdownParent||a),u=$("<div>").addClass(t.dropdownClass).addClass(h).hide().appendTo(d),c=$("<div>").addClass(t.dropdownContentClass).appendTo(u),(C=s.attr("id"))&&(p.attr("id",C+"-selectized"),$("label[for='"+C+"']").attr("for",C+"-selectized")),e.settings.copyClassesToDropdown&&u.addClass(v),a.css({width:s[0].style.width}),e.plugins.names.length&&(O="plugin-"+e.plugins.names.join(" plugin-"),a.addClass(O),u.addClass(O)),(null===t.maxItems||t.maxItems>1)&&1===e.tagType&&s.attr("multiple","multiple"),e.settings.placeholder&&p.attr("placeholder",t.placeholder),!e.settings.splitOn&&e.settings.delimiter){var b=e.settings.delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");e.settings.splitOn=new RegExp("\\s*"+b+"+\\s*")}s.attr("autocorrect")&&p.attr("autocorrect",s.attr("autocorrect")),s.attr("autocapitalize")&&p.attr("autocapitalize",s.attr("autocapitalize")),p[0].type=s[0].type,e.$wrapper=a,e.$control=l,e.$control_input=p,e.$dropdown=u,e.$dropdown_content=c,u.on("mouseenter mousedown click","[data-disabled]>[data-selectable]",(function(e){e.stopImmediatePropagation()})),u.on("mouseenter","[data-selectable]",(function(){return e.onOptionHover.apply(e,arguments)})),u.on("mousedown click","[data-selectable]",(function(){return e.onOptionSelect.apply(e,arguments)})),z(l,"mousedown","*:not(input)",(function(){return e.onItemSelect.apply(e,arguments)})),j(p),l.on({mousedown:function(){return e.onMouseDown.apply(e,arguments)},click:function(){return e.onClick.apply(e,arguments)}}),p.on({mousedown:function(e){e.stopPropagation()},keydown:function(){return e.onKeyDown.apply(e,arguments)},keyup:function(){return e.onKeyUp.apply(e,arguments)},keypress:function(){return e.onKeyPress.apply(e,arguments)},resize:function(){e.positionDropdown.apply(e,[])},blur:function(){return e.onBlur.apply(e,arguments)},focus:function(){return e.ignoreBlur=!1,e.onFocus.apply(e,arguments)},paste:function(){return e.onPaste.apply(e,arguments)}}),r.on("keydown"+n,(function(t){e.isCmdDown=t[o?"metaKey":"ctrlKey"],e.isCtrlDown=t[o?"altKey":"ctrlKey"],e.isShiftDown=t.shiftKey})),r.on("keyup"+n,(function(t){t.keyCode===w&&(e.isCtrlDown=!1),t.keyCode===m&&(e.isShiftDown=!1),t.keyCode===y&&(e.isCmdDown=!1)})),r.on("mousedown"+n,(function(t){if(e.isFocused){if(t.target===e.$dropdown[0]||t.target.parentNode===e.$dropdown[0])return!1;e.$control.has(t.target).length||t.target===e.$control[0]||e.blur(t.target)}})),i.on(["scroll"+n,"resize"+n].join(" "),(function(){e.isOpen&&e.positionDropdown.apply(e,arguments)})),i.on("mousemove"+n,(function(){e.ignoreHover=!1})),this.revertSettings={$children:s.children().detach(),tabindex:s.attr("tabindex")},s.attr("tabindex",-1).hide().after(e.$wrapper),$.isArray(t.items)&&(e.setValue(t.items),delete t.items),x&&s.on("invalid"+n,(function(t){t.preventDefault(),e.isInvalid=!0,e.refreshState()})),e.updateOriginalInput(),e.refreshItems(),e.refreshState(),e.updatePlaceholder(),e.isSetup=!0,s.is(":disabled")&&e.disable(),e.on("change",this.onChange),s.data("selectize",e),s.addClass("selectized"),e.trigger("initialize"),!0===t.preload&&e.onSearchChange("")},setupTemplates:function(){var e=this,t=e.settings.labelField,n=e.settings.optgroupLabelField,i={optgroup:function(e){return'<div class="optgroup">'+e.html+"</div>"},optgroup_header:function(e,t){return'<div class="optgroup-header">'+t(e[n])+"</div>"},option:function(e,n){return'<div class="option">'+n(e[t])+"</div>"},item:function(e,n){return'<div class="item">'+n(e[t])+"</div>"},option_create:function(e,t){return'<div class="create">Add <strong>'+t(e.input)+"</strong>…</div>"}};e.settings.render=$.extend({},i,e.settings.render)},setupCallbacks:function(){var e,t,n={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(e in n)n.hasOwnProperty(e)&&(t=this.settings[n[e]])&&this.on(e,t)},onClick:function(e){var t=this;t.isFocused&&t.isOpen||(t.focus(),e.preventDefault())},onMouseDown:function(e){var t=this,n=e.isDefaultPrevented(),i=$(e.target);if(t.isFocused){if(e.target!==t.$control_input[0])return"single"===t.settings.mode?t.isOpen?t.close():t.open():n||t.setActiveItem(null),!1}else n||window.setTimeout((function(){t.focus()}),0)},onChange:function(){this.$input.trigger("change")},onPaste:function(e){var t=this;t.isFull()||t.isInputHidden||t.isLocked?e.preventDefault():t.settings.splitOn&&setTimeout((function(){var e=t.$control_input.val();if(e.match(t.settings.splitOn))for(var n=$.trim(e).split(t.settings.splitOn),i=0,o=n.length;i<o;i++)t.createItem(n[i])}),0)},onKeyPress:function(e){if(this.isLocked)return e&&e.preventDefault();var t=String.fromCharCode(e.keyCode||e.which);return this.settings.create&&"multi"===this.settings.mode&&t===this.settings.delimiter?(this.createItem(),e.preventDefault(),!1):void 0},onKeyDown:function(e){var t=e.target===this.$control_input[0],n=this;if(n.isLocked)9!==e.keyCode&&e.preventDefault();else{switch(e.keyCode){case r:if(n.isCmdDown)return void n.selectAll();break;case l:return void(n.isOpen&&(e.preventDefault(),e.stopPropagation(),n.close()));case g:if(!e.ctrlKey||e.altKey)break;case h:if(!n.isOpen&&n.hasOptions)n.open();else if(n.$activeOption){n.ignoreHover=!0;var i=n.getAdjacentOption(n.$activeOption,1);i.length&&n.setActiveOption(i,!0,!0)}return void e.preventDefault();case c:if(!e.ctrlKey||e.altKey)break;case u:if(n.$activeOption){n.ignoreHover=!0;var s=n.getAdjacentOption(n.$activeOption,-1);s.length&&n.setActiveOption(s,!0,!0)}return void e.preventDefault();case a:return void(n.isOpen&&n.$activeOption&&(n.onOptionSelect({currentTarget:n.$activeOption}),e.preventDefault()));case p:return void n.advanceSelection(-1,e);case d:return void n.advanceSelection(1,e);case 9:return n.settings.selectOnTab&&n.isOpen&&n.$activeOption&&(n.onOptionSelect({currentTarget:n.$activeOption}),n.isFull()||e.preventDefault()),void(n.settings.create&&n.createItem()&&e.preventDefault());case 8:case v:return void n.deleteSelection(e)}!n.isFull()&&!n.isInputHidden||(o?e.metaKey:e.ctrlKey)||e.preventDefault()}},onKeyUp:function(e){var t=this;if(t.isLocked)return e&&e.preventDefault();var n=t.$control_input.val()||"";t.lastValue!==n&&(t.lastValue=n,t.onSearchChange(n),t.refreshOptions(),t.trigger("type",n))},onSearchChange:function(e){var t=this,n=t.settings.load;n&&(t.loadedSearches.hasOwnProperty(e)||(t.loadedSearches[e]=!0,t.load((function(i){n.apply(t,[e,i])}))))},onFocus:function(e){var t=this,n=t.isFocused;if(t.isDisabled)return t.blur(),e&&e.preventDefault(),!1;t.ignoreFocus||(t.isFocused=!0,"focus"===t.settings.preload&&t.onSearchChange(""),n||t.trigger("focus"),t.$activeItems.length||(t.showInput(),t.setActiveItem(null),t.refreshOptions(!!t.settings.openOnFocus)),t.refreshState())},onBlur:function(e,t){var n=this;if(n.isFocused&&(n.isFocused=!1,!n.ignoreFocus)){if(!n.ignoreBlur&&document.activeElement===n.$dropdown_content[0])return n.ignoreBlur=!0,void n.onFocus(e);var i=function(){n.close(),n.setTextboxValue(""),n.setActiveItem(null),n.setActiveOption(null),n.setCaret(n.items.length),n.refreshState(),t&&t.focus&&t.focus(),n.isBlurring=!1,n.ignoreFocus=!1,n.trigger("blur")};n.isBlurring=!0,n.ignoreFocus=!0,n.settings.create&&n.settings.createOnBlur?n.createItem(null,!1,i):i()}},onOptionHover:function(e){this.ignoreHover||this.setActiveOption(e.currentTarget,!1)},onOptionSelect:function(e){var t,n,i,o=this;e.preventDefault&&(e.preventDefault(),e.stopPropagation()),(n=$(e.currentTarget)).hasClass("create")?o.createItem(null,(function(){o.settings.closeAfterSelect&&o.close()})):void 0!==(t=n.attr("data-value"))&&(o.lastQuery=null,o.setTextboxValue(""),o.addItem(t),o.settings.closeAfterSelect?o.close():!o.settings.hideSelected&&e.type&&/mouse/.test(e.type)&&o.setActiveOption(o.getOption(t)))},onItemSelect:function(e){var t=this;t.isLocked||"multi"===t.settings.mode&&(e.preventDefault(),t.setActiveItem(e.currentTarget,e))},load:function(e){var t=this,n=t.$wrapper.addClass(t.settings.loadingClass);t.loading++,e.apply(t,[function(e){t.loading=Math.max(t.loading-1,0),e&&e.length&&(t.addOption(e),t.refreshOptions(t.isFocused&&!t.isInputHidden)),t.loading||n.removeClass(t.settings.loadingClass),t.trigger("load",e)}])},setTextboxValue:function(e){var t=this.$control_input,n;t.val()!==e&&(t.val(e).triggerHandler("update"),this.lastValue=e)},getValue:function(){return 1===this.tagType&&this.$input.attr("multiple")?this.items:this.items.join(this.settings.delimiter)},setValue:function(e,t){var n;A(this,t?[]:["change"],(function(){this.clear(t),this.addItems(e,t)}))},setActiveItem:function(e,t){var n=this,i,o,r,s,a,l,p,u;if("single"!==n.settings.mode){if(!(e=$(e)).length)return $(n.$activeItems).removeClass("active"),n.$activeItems=[],void(n.isFocused&&n.showInput());if("mousedown"===(i=t&&t.type.toLowerCase())&&n.isShiftDown&&n.$activeItems.length){for(u=n.$control.children(".active:last"),(s=Array.prototype.indexOf.apply(n.$control[0].childNodes,[u[0]]))>(a=Array.prototype.indexOf.apply(n.$control[0].childNodes,[e[0]]))&&(p=s,s=a,a=p),o=s;o<=a;o++)l=n.$control[0].childNodes[o],-1===n.$activeItems.indexOf(l)&&($(l).addClass("active"),n.$activeItems.push(l));t.preventDefault()}else"mousedown"===i&&n.isCtrlDown||"keydown"===i&&this.isShiftDown?e.hasClass("active")?(r=n.$activeItems.indexOf(e[0]),n.$activeItems.splice(r,1),e.removeClass("active")):n.$activeItems.push(e.addClass("active")[0]):($(n.$activeItems).removeClass("active"),n.$activeItems=[e.addClass("active")[0]]);n.hideInput(),this.isFocused||n.focus()}},setActiveOption:function(e,t,n){var i,o,r,s,a,l=this;l.$activeOption&&l.$activeOption.removeClass("active"),l.$activeOption=null,(e=$(e)).length&&(l.$activeOption=e.addClass("active"),!t&&S(t)||(i=l.$dropdown_content.height(),o=l.$activeOption.outerHeight(!0),t=l.$dropdown_content.scrollTop()||0,s=r=l.$activeOption.offset().top-l.$dropdown_content.offset().top+t,a=r-i+o,r+o>i+t?l.$dropdown_content.stop().animate({scrollTop:a},n?l.settings.scrollDuration:0):r<t&&l.$dropdown_content.stop().animate({scrollTop:s},n?l.settings.scrollDuration:0)))},selectAll:function(){var e=this;"single"!==e.settings.mode&&(e.$activeItems=Array.prototype.slice.apply(e.$control.children(":not(input)").addClass("active")),e.$activeItems.length&&(e.hideInput(),e.close()),e.focus())},hideInput:function(){var e=this;e.setTextboxValue(""),e.$control_input.css({opacity:0,position:"absolute",left:e.rtl?1e4:-1e4}),e.isInputHidden=!0},showInput:function(){this.$control_input.css({opacity:1,position:"relative",left:0}),this.isInputHidden=!1},focus:function(){var e=this;e.isDisabled||(e.ignoreFocus=!0,e.$control_input[0].focus(),window.setTimeout((function(){e.ignoreFocus=!1,e.onFocus()}),0))},blur:function(e){this.$control_input[0].blur(),this.onBlur(null,e)},getScoreFunction:function(e){return this.sifter.getScoreFunction(e,this.getSearchOptions())},getSearchOptions:function(){var e=this.settings,t=e.sortField;return"string"==typeof t&&(t=[{field:t}]),{fields:e.searchField,conjunction:e.searchConjunction,sort:t,nesting:e.nesting}},search:function(e){var t,n,i,o,r,s=this,a=s.settings,l=this.getSearchOptions();if(a.score&&"function"!=typeof(r=s.settings.score.apply(this,[e])))throw new Error('Selectize "score" setting must be a function that returns a function');if(e!==s.lastQuery?(s.lastQuery=e,o=s.sifter.search(e,$.extend(l,{score:r})),s.currentResults=o):o=$.extend(!0,{},s.currentResults),a.hideSelected)for(t=o.items.length-1;t>=0;t--)-1!==s.items.indexOf(I(o.items[t].id))&&o.items.splice(t,1);return o},refreshOptions:function(e){var t,i,o,r,s,a,l,p,u,c,d,h,g,f,v,m;void 0===e&&(e=!0);var y=this,w=$.trim(y.$control_input.val()),O=y.search(w),C=y.$dropdown_content,b=y.$activeOption&&I(y.$activeOption.attr("data-value"));for(r=O.items.length,"number"==typeof y.settings.maxOptions&&(r=Math.min(r,y.settings.maxOptions)),s={},a=[],t=0;t<r;t++)for(l=y.options[O.items[t].id],p=y.render("option",l),u=l[y.settings.optgroupField]||"",i=0,o=(c=$.isArray(u)?u:[u])&&c.length;i<o;i++)u=c[i],y.optgroups.hasOwnProperty(u)||(u=""),s.hasOwnProperty(u)||(s[u]=document.createDocumentFragment(),a.push(u)),s[u].appendChild(p);for(this.settings.lockOptgroupOrder&&a.sort((function(e,t){var n,i;return(y.optgroups[e].$order||0)-(y.optgroups[t].$order||0)})),d=document.createDocumentFragment(),t=0,r=a.length;t<r;t++)u=a[t],y.optgroups.hasOwnProperty(u)&&s[u].childNodes.length?((h=document.createDocumentFragment()).appendChild(y.render("optgroup_header",y.optgroups[u])),h.appendChild(s[u]),d.appendChild(y.render("optgroup",$.extend({},y.optgroups[u],{html:E(h),dom:h})))):d.appendChild(s[u]);if(C.html(d),y.settings.highlight&&(C.removeHighlight(),O.query.length&&O.tokens.length))for(t=0,r=O.tokens.length;t<r;t++)n(C,O.tokens[t].regex);if(!y.settings.hideSelected)for(t=0,r=y.items.length;t<r;t++)y.getOption(y.items[t]).addClass("selected");(g=y.canCreate(w))&&(C.prepend(y.render("option_create",{input:w})),m=$(C[0].childNodes[0])),y.hasOptions=O.items.length>0||g,y.hasOptions?(O.items.length>0?((v=b&&y.getOption(b))&&v.length?f=v:"single"===y.settings.mode&&y.items.length&&(f=y.getOption(y.items[0])),f&&f.length||(f=m&&!y.settings.addPrecedence?y.getAdjacentOption(m,1):C.find("[data-selectable]:first"))):f=m,y.setActiveOption(f),e&&!y.isOpen&&y.open()):(y.setActiveOption(null),e&&y.isOpen&&y.close())},addOption:function(e){var t,n,i,o=this;if($.isArray(e))for(t=0,n=e.length;t<n;t++)o.addOption(e[t]);else(i=o.registerOption(e))&&(o.userOptions[i]=!0,o.lastQuery=null,o.trigger("option_add",i,e))},registerOption:function(e){var t=I(e[this.settings.valueField]);return null!=t&&!this.options.hasOwnProperty(t)&&(e.$order=e.$order||++this.order,this.options[t]=e,t)},registerOptionGroup:function(e){var t=I(e[this.settings.optgroupValueField]);return!!t&&(e.$order=e.$order||++this.order,this.optgroups[t]=e,t)},addOptionGroup:function(e,t){t[this.settings.optgroupValueField]=e,(e=this.registerOptionGroup(t))&&this.trigger("optgroup_add",e,t)},removeOptionGroup:function(e){this.optgroups.hasOwnProperty(e)&&(delete this.optgroups[e],this.renderCache={},this.trigger("optgroup_remove",e))},clearOptionGroups:function(){this.optgroups={},this.renderCache={},this.trigger("optgroup_clear")},updateOption:function(e,t){var n=this,i,o,r,s,a,l,p;if(e=I(e),r=I(t[n.settings.valueField]),null!==e&&n.options.hasOwnProperty(e)){if("string"!=typeof r)throw new Error("Value must be set in option data");p=n.options[e].$order,r!==e&&(delete n.options[e],-1!==(s=n.items.indexOf(e))&&n.items.splice(s,1,r)),t.$order=t.$order||p,n.options[r]=t,a=n.renderCache.item,l=n.renderCache.option,a&&(delete a[e],delete a[r]),l&&(delete l[e],delete l[r]),-1!==n.items.indexOf(r)&&(i=n.getItem(e),o=$(n.render("item",t)),i.hasClass("active")&&o.addClass("active"),i.replaceWith(o)),n.lastQuery=null,n.isOpen&&n.refreshOptions(!1)}},removeOption:function(e,t){var n=this;e=I(e);var i=n.renderCache.item,o=n.renderCache.option;i&&delete i[e],o&&delete o[e],delete n.userOptions[e],delete n.options[e],n.lastQuery=null,n.trigger("option_remove",e),n.removeItem(e,t)},clearOptions:function(){var e=this;e.loadedSearches={},e.userOptions={},e.renderCache={};var t=e.options;$.each(e.options,(function(n,i){-1==e.items.indexOf(n)&&delete t[n]})),e.options=e.sifter.items=t,e.lastQuery=null,e.trigger("option_clear")},getOption:function(e){return this.getElementWithValue(e,this.$dropdown_content.find("[data-selectable]"))},getAdjacentOption:function(e,t){var n=this.$dropdown.find("[data-selectable]"),i=n.index(e)+t;return i>=0&&i<n.length?n.eq(i):$()},getElementWithValue:function(e,t){if(null!=(e=I(e)))for(var n=0,i=t.length;n<i;n++)if(t[n].getAttribute("data-value")===e)return $(t[n]);return $()},getItem:function(e){return this.getElementWithValue(e,this.$control.children())},addItems:function(e,t){this.buffer=document.createDocumentFragment();for(var n=this.$control[0].childNodes,i=0;i<n.length;i++)this.buffer.appendChild(n[i]);for(var o=$.isArray(e)?e:[e],i=0,r=o.length;i<r;i++)this.isPending=i<r-1,this.addItem(o[i],t);var s=this.$control[0];s.insertBefore(this.buffer,s.firstChild),this.buffer=null},addItem:function(e,t){var n;A(this,t?[]:["change"],(function(){var n,i,o,r=this,s=r.settings.mode,a,l,p,u;e=I(e),-1===r.items.indexOf(e)?r.options.hasOwnProperty(e)&&("single"===s&&r.clear(t),"multi"===s&&r.isFull()||(n=$(r.render("item",r.options[e])),u=r.isFull(),r.items.splice(r.caretPos,0,e),r.insertAtCaret(n),(!r.isPending||!u&&r.isFull())&&r.refreshState(),r.isSetup&&(o=r.$dropdown_content.find("[data-selectable]"),r.isPending||(i=r.getOption(e),p=r.getAdjacentOption(i,1).attr("data-value"),r.refreshOptions(r.isFocused&&"single"!==s),p&&r.setActiveOption(r.getOption(p))),!o.length||r.isFull()?r.close():r.isPending||r.positionDropdown(),r.updatePlaceholder(),r.trigger("item_add",e,n),r.isPending||r.updateOriginalInput({silent:t})))):"single"===s&&r.close()}))},removeItem:function(e,t){var n=this,i,o,r;i=e instanceof $?e:n.getItem(e),e=I(i.attr("data-value")),-1!==(o=n.items.indexOf(e))&&(i.remove(),i.hasClass("active")&&(r=n.$activeItems.indexOf(i[0]),n.$activeItems.splice(r,1)),n.items.splice(o,1),n.lastQuery=null,!n.settings.persist&&n.userOptions.hasOwnProperty(e)&&n.removeOption(e,t),o<n.caretPos&&n.setCaret(n.caretPos-1),n.refreshState(),n.updatePlaceholder(),n.updateOriginalInput({silent:t}),n.positionDropdown(),n.trigger("item_remove",e,i))},createItem:function(e,t){var n=this,i=n.caretPos;e=e||$.trim(n.$control_input.val()||"");var o=arguments[arguments.length-1];if("function"!=typeof o&&(o=function(){}),"boolean"!=typeof t&&(t=!0),!n.canCreate(e))return o(),!1;n.lock();var r="function"==typeof n.settings.create?this.settings.create:function(e){var t={};return t[n.settings.labelField]=e,t[n.settings.valueField]=e,t},s=k((function(e){if(n.unlock(),!e||"object"!=typeof e)return o();var r=I(e[n.settings.valueField]);if("string"!=typeof r)return o();n.setTextboxValue(""),n.addOption(e),n.setCaret(i),n.addItem(r),n.refreshOptions(t&&"single"!==n.settings.mode),o(e)})),a=r.apply(this,[e,s]);return void 0!==a&&s(a),!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 e=!this.items.length;this.isInvalid=e,this.$control_input.prop("required",e),this.$input.prop("required",!e)},refreshClasses:function(){var e=this,t=e.isFull(),n=e.isLocked;e.$wrapper.toggleClass("rtl",e.rtl),
e.$control.toggleClass("focus",e.isFocused).toggleClass("disabled",e.isDisabled).toggleClass("required",e.isRequired).toggleClass("invalid",e.isInvalid).toggleClass("locked",n).toggleClass("full",t).toggleClass("not-full",!t).toggleClass("input-active",e.isFocused&&!e.isInputHidden).toggleClass("dropdown-active",e.isOpen).toggleClass("has-options",!$.isEmptyObject(e.options)).toggleClass("has-items",e.items.length>0),e.$control_input.data("grow",!t&&!n)},isFull:function(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems},updateOriginalInput:function(e){var t,n,i,o,r=this;if(e=e||{},1===r.tagType){for(i=[],t=0,n=r.items.length;t<n;t++)o=r.options[r.items[t]][r.settings.labelField]||"",i.push('<option value="'+_(r.items[t])+'" selected="selected">'+_(o)+"</option>");i.length||this.$input.attr("multiple")||i.push('<option value="" selected="selected"></option>'),r.$input.html(i.join(""))}else r.$input.val(r.getValue()),r.$input.attr("value",r.$input.val());r.isSetup&&(e.silent||r.trigger("change",r.$input.val()))},updatePlaceholder:function(){if(this.settings.placeholder){var e=this.$control_input;this.items.length?e.removeAttr("placeholder"):e.attr("placeholder",this.settings.placeholder),e.triggerHandler("update",{force:!0})}},open:function(){var e=this;e.isLocked||e.isOpen||"multi"===e.settings.mode&&e.isFull()||(e.focus(),e.isOpen=!0,e.refreshState(),e.$dropdown.css({visibility:"hidden",display:"block"}),e.positionDropdown(),e.$dropdown.css({visibility:"visible"}),e.trigger("dropdown_open",e.$dropdown))},close:function(){var e=this,t=e.isOpen;"single"===e.settings.mode&&e.items.length&&(e.hideInput(),e.isBlurring||e.$control_input.blur()),e.isOpen=!1,e.$dropdown.hide(),e.setActiveOption(null),e.refreshState(),t&&e.trigger("dropdown_close",e.$dropdown)},positionDropdown:function(){var e=this.$control,t="body"===this.settings.dropdownParent?e.offset():e.position();t.top+=e.outerHeight(!0),this.$dropdown.css({width:e[0].getBoundingClientRect().width,top:t.top,left:t.left})},clear:function(e){var t=this;t.items.length&&(t.$control.children(":not(input)").remove(),t.items=[],t.lastQuery=null,t.setCaret(0),t.setActiveItem(null),t.updatePlaceholder(),t.updateOriginalInput({silent:e}),t.refreshState(),t.showInput(),t.trigger("clear"))},insertAtCaret:function(e){var t=Math.min(this.caretPos,this.items.length),n=e[0],i=this.buffer||this.$control[0];0===t?i.insertBefore(n,i.firstChild):i.insertBefore(n,i.childNodes[t]),this.setCaret(t+1)},deleteSelection:function(e){var t,n,i,o,r,s,a,l,p,u=this;if(i=e&&8===e.keyCode?-1:1,o=T(u.$control_input[0]),u.$activeOption&&!u.settings.hideSelected&&(a=u.getAdjacentOption(u.$activeOption,-1).attr("data-value")),r=[],u.$activeItems.length){for(p=u.$control.children(".active:"+(i>0?"last":"first")),s=u.$control.children(":not(input)").index(p),i>0&&s++,t=0,n=u.$activeItems.length;t<n;t++)r.push($(u.$activeItems[t]).attr("data-value"));e&&(e.preventDefault(),e.stopPropagation())}else(u.isFocused||"single"===u.settings.mode)&&u.items.length&&(i<0&&0===o.start&&0===o.length?r.push(u.items[u.caretPos-1]):i>0&&o.start===u.$control_input.val().length&&r.push(u.items[u.caretPos]));if(!r.length||"function"==typeof u.settings.onDelete&&!1===u.settings.onDelete.apply(u,[r]))return!1;for(void 0!==s&&u.setCaret(s);r.length;)u.removeItem(r.pop());return u.showInput(),u.positionDropdown(),u.refreshOptions(!0),a&&(l=u.getOption(a)).length&&u.setActiveOption(l),!0},advanceSelection:function(e,t){var n,i,o,r,s,a,l=this;0!==e&&(l.rtl&&(e*=-1),n=e>0?"last":"first",i=T(l.$control_input[0]),l.isFocused&&!l.isInputHidden?(r=l.$control_input.val().length,(s=e<0?0===i.start&&0===i.length:i.start===r)&&!r&&l.advanceCaret(e,t)):(a=l.$control.children(".active:"+n)).length&&(o=l.$control.children(":not(input)").index(a),l.setActiveItem(null),l.setCaret(e>0?o+1:o)))},advanceCaret:function(e,t){var n=this,i,o;0!==e&&(i=e>0?"next":"prev",n.isShiftDown?(o=n.$control_input[i]()).length&&(n.hideInput(),n.setActiveItem(o),t&&t.preventDefault()):n.setCaret(n.caretPos+e))},setCaret:function(e){var t=this,n,i,o,r,s;if(e="single"===t.settings.mode?t.items.length:Math.max(0,Math.min(t.items.length,e)),!t.isPending)for(n=0,i=(r=t.$control.children(":not(input)")).length;n<i;n++)s=$(r[n]).detach(),n<e?t.$control_input.before(s):t.$control.append(s);t.caretPos=e},lock:function(){this.close(),this.isLocked=!0,this.refreshState()},unlock:function(){this.isLocked=!1,this.refreshState()},disable:function(){var e=this;e.$input.prop("disabled",!0),e.$control_input.prop("disabled",!0).prop("tabindex",-1),e.isDisabled=!0,e.lock()},enable:function(){var e=this;e.$input.prop("disabled",!1),e.$control_input.prop("disabled",!1).prop("tabindex",e.tabIndex),e.isDisabled=!1,e.unlock()},destroy:function(){var e=this,t=e.eventNS,n=e.revertSettings;e.trigger("destroy"),e.off(),e.$wrapper.remove(),e.$dropdown.remove(),e.$input.html("").append(n.$children).removeAttr("tabindex").removeClass("selectized").attr({tabindex:n.tabindex}).show(),e.$control_input.removeData("grow"),e.$input.removeData("selectize"),0==--L.count&&L.$testInput&&(L.$testInput.remove(),L.$testInput=void 0),$(window).off(t),$(document).off(t),$(document.body).off(t),delete e.$input[0].selectize},render:function(e,t){var n,i,o,r="",s=!1,a=this,l=/^[\t \r\n]*<([a-z][a-z0-9\-_]*(?:\:[a-z][a-z0-9\-_]*)?)/i;return"option"!==e&&"item"!==e||(s=!!(n=I(t[a.settings.valueField]))),s&&(S(a.renderCache[e])||(a.renderCache[e]={}),a.renderCache[e].hasOwnProperty(n))?a.renderCache[e][n]:(r=$(a.settings.render[e].apply(this,[t,_])),"option"===e||"option_create"===e?t[a.settings.disabledField]||r.attr("data-selectable",""):"optgroup"===e&&(i=t[a.settings.optgroupValueField]||"",r.attr("data-group",i),t[a.settings.disabledField]&&r.attr("data-disabled","")),"option"!==e&&"item"!==e||r.attr("data-value",n||""),s&&(a.renderCache[e][n]=r[0]),r[0])},clearCache:function(e){var t=this;void 0===e?t.renderCache={}:delete t.renderCache[e]},canCreate:function(e){var t=this;if(!t.settings.create)return!1;var n=t.settings.createFilter;return e.length&&("function"!=typeof n||n.apply(t,[e]))&&("string"!=typeof n||new RegExp(n).test(e))&&(!(n instanceof RegExp)||n.test(e))}}),L.count=0,L.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(e){var t=$.fn.selectize.defaults,n=$.extend({},t,e),i=n.dataAttr,o=n.labelField,r=n.valueField,s=n.disabledField,a=n.optgroupField,l=n.optgroupLabelField,p=n.optgroupValueField,u=function(e,t){var s,a,l,p,u=e.attr(i);if(u)for(t.options=JSON.parse(u),s=0,a=t.options.length;s<a;s++)t.items.push(t.options[s][r]);else{var c=$.trim(e.val()||"");if(!n.allowEmptyOption&&!c.length)return;for(s=0,a=(l=c.split(n.delimiter)).length;s<a;s++)(p={})[o]=l[s],p[r]=l[s],t.options.push(p);t.items=l}},c=function(e,t){var u,c,d,h,g=0,f=t.options,v={},m=function(e){var t=i&&e.attr(i);return"string"==typeof t&&t.length?JSON.parse(t):null},y=function(e,i){e=$(e);var l=I(e.val());if(l||n.allowEmptyOption)if(v.hasOwnProperty(l)){if(i){var p=v[l][a];p?$.isArray(p)?p.push(i):v[l][a]=[p,i]:v[l][a]=i}}else{var u=m(e)||{};u[o]=u[o]||e.text(),u[r]=u[r]||l,u[s]=u[s]||e.prop("disabled"),u[a]=u[a]||i,v[l]=u,f.push(u),e.is(":selected")&&t.items.push(l)}},w=function(e){var n,i,o,r,a;for((o=(e=$(e)).attr("label"))&&((r=m(e)||{})[l]=o,r[p]=o,r[s]=e.prop("disabled"),t.optgroups.push(r)),n=0,i=(a=$("option",e)).length;n<i;n++)y(a[n],o)};for(t.maxItems=e.attr("multiple")?null:1,u=0,c=(h=e.children()).length;u<c;u++)"optgroup"===(d=h[u].tagName.toLowerCase())?w(h[u]):"option"===d&&y(h[u])};return this.each((function(){if(!this.selectize){var i,o=$(this),r=this.tagName.toLowerCase(),s=o.attr("placeholder")||o.attr("data-placeholder");s||n.allowEmptyOption||(s=o.children('option[value=""]').text());var a={placeholder:s,options:[],optgroups:[],items:[]};"select"===r?c(o,a):u(o,a),i=new L(o,$.extend(!0,{},t,a,e))}}))},$.fn.selectize.defaults=L.defaults,$.fn.selectize.support={validity:x},L.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 t=this,n;t.lock=(n=t.lock,function(){var e=t.$control.data("sortable");return e&&e.disable(),n.apply(t,arguments)}),t.unlock=function(){var e=t.unlock;return function(){var n=t.$control.data("sortable");return n&&n.enable(),e.apply(t,arguments)}}(),t.setup=function(){var e=t.setup;return function(){e.apply(this,arguments);var n=t.$control.sortable({items:"[data-value]",forcePlaceholderSize:!0,disabled:t.isLocked,start:function(e,t){t.placeholder.css("width",t.helper.css("width")),n.css({overflow:"visible"})},stop:function(){n.css({overflow:"hidden"});var e=t.$activeItems?t.$activeItems.slice():null,i=[];n.children("[data-value]").each((function(){i.push($(this).attr("data-value"))})),t.setValue(i),t.setActiveItem(e)}})}}()}})),L.define("dropdown_header",(function(e){var t=this,n;e=$.extend({title:"Untitled",headerClass:"selectize-dropdown-header",titleRowClass:"selectize-dropdown-header-title",labelClass:"selectize-dropdown-header-label",closeClass:"selectize-dropdown-header-close",html:function(e){return'<div class="'+e.headerClass+'"><div class="'+e.titleRowClass+'"><span class="'+e.labelClass+'">'+e.title+'</span><a href="javascript:void(0)" class="'+e.closeClass+'">×</a></div></div>'}},e),t.setup=(n=t.setup,function(){n.apply(t,arguments),t.$dropdown_header=$(e.html(e)),t.$dropdown.prepend(t.$dropdown_header)})})),L.define("optgroup_columns",(function(e){var t=this,n;e=$.extend({equalizeWidth:!0,equalizeHeight:!0},e),this.getAdjacentOption=function(e,t){var n=e.closest("[data-group]").find("[data-selectable]"),i=n.index(e)+t;return i>=0&&i<n.length?n.eq(i):$()},this.onKeyDown=(n=t.onKeyDown,function(e){var i,o,r,s;return!this.isOpen||e.keyCode!==p&&e.keyCode!==d?n.apply(this,arguments):(t.ignoreHover=!0,i=(s=this.$activeOption.closest("[data-group]")).find("[data-selectable]").index(this.$activeOption),void((o=(r=(s=e.keyCode===p?s.prev("[data-group]"):s.next("[data-group]")).find("[data-selectable]")).eq(Math.min(r.length-1,i))).length&&this.setActiveOption(o)))});var i=function(){var e,t=i.width,n=document;return void 0===t&&((e=n.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>',e=e.firstChild,n.body.appendChild(e),t=i.width=e.offsetWidth-e.clientWidth,n.body.removeChild(e)),t},o=function(){var n,o,r,s,a,l,p;if((o=(p=$("[data-group]",t.$dropdown_content)).length)&&t.$dropdown_content.width()){if(e.equalizeHeight){for(r=0,n=0;n<o;n++)r=Math.max(r,p.eq(n).height());p.css({height:r})}e.equalizeWidth&&(l=t.$dropdown_content.innerWidth()-i(),s=Math.round(l/o),p.css({width:s}),o>1&&(a=l-s*(o-1),p.eq(o-1).css({width:a})))}};(e.equalizeHeight||e.equalizeWidth)&&(D.after(this,"positionDropdown",o),D.after(this,"refreshOptions",o))})),L.define("remove_button",(function(e){e=$.extend({label:"×",title:"Remove",className:"remove",append:!0},e);var t=function(e,t){t.className="remove-single";var n=e,i='<a href="javascript:void(0)" class="'+t.className+'" tabindex="-1" title="'+_(t.title)+'">'+t.label+"</a>",o=function(e,t){return $("<span>").append(e).append(t)},r;e.setup=(r=n.setup,function(){if(t.append){var s=$(n.$input.context).attr("id"),a=$("#"+s),l=n.settings.render.item;n.settings.render.item=function(t){return o(l.apply(e,arguments),i)}}r.apply(e,arguments),e.$control.on("click","."+t.className,(function(e){e.preventDefault(),n.isLocked||n.clear()}))})},n=function(e,t){var n=e,i='<a href="javascript:void(0)" class="'+t.className+'" tabindex="-1" title="'+_(t.title)+'">'+t.label+"</a>",o=function(e,t){var n=e.search(/(<\/[^>]+>\s*)$/);return e.substring(0,n)+t+e.substring(n)},r;e.setup=(r=n.setup,function(){if(t.append){var s=n.settings.render.item;n.settings.render.item=function(t){return o(s.apply(e,arguments),i)}}r.apply(e,arguments),e.$control.on("click","."+t.className,(function(e){if(e.preventDefault(),!n.isLocked){var t=$(e.currentTarget).parent();n.setActiveItem(t),n.deleteSelection()&&n.setCaret(n.items.length)}}))})};"single"!==this.settings.mode?n(this,e):t(this,e)})),L.define("restore_on_backspace",(function(e){var t=this,n;e.text=e.text||function(e){return e[this.settings.labelField]},this.onKeyDown=(n=t.onKeyDown,function(t){var i,o;return 8===t.keyCode&&""===this.$control_input.val()&&!this.$activeItems.length&&(i=this.caretPos-1)>=0&&i<this.items.length?(o=this.options[this.items[i]],this.deleteSelection(t)&&(this.setTextboxValue(e.text.apply(this,[o])),this.refreshOptions(!0)),void t.preventDefault()):n.apply(this,arguments)})})),L}));