!function(t,e){"function"==typeof define&&define.amd?define("sifter",e):"object"==typeof exports?module.exports=e():t.Sifter=e()}(this,(function(){var t=function(t,e){this.items=t,this.settings=e||{diacritics:!0}};t.prototype.tokenize=function(t){if(!(t=s(String(t||"").toLowerCase()))||!t.length)return[];var e,i,n,r,l=[],h=t.split(/ +/);for(e=0,i=h.length;e0)&&n.items.push({score:i,id:s})})):this.iterator(this.items,(function(t,e){n.items.push({score:1,id:e})})),(s=this.getSortFunction(n,e))&&n.items.sort(s),n.total=n.items.length,"number"==typeof e.limit&&(n.items=n.items.slice(0,e.limit)),n};var e=function(t,e){return"number"==typeof t&&"number"==typeof e?t>e?1:t(e=l(String(e||"")))?1:e>t?-1:0},i=function(t,e){var i,n,s,o;for(i=1,n=arguments.length;i=0&&t.data.length>0){var o=t.data.match(i),r=document.createElement("span");r.className="highlight";var a=t.splitText(s),l=(a.splitText(o[0].length),a.cloneNode(!0));r.appendChild(l),a.parentNode.replaceChild(r,a),e=1}}else if(1===t.nodeType&&t.childNodes&&!/(script|style)/i.test(t.tagName)&&("highlight"!==t.className||"SPAN"!==t.tagName))for(var h=0;h/g,">").replace(/"/g,""")},c={before:function(t,e,i){var n=t[e];t[e]=function(){return i.apply(t,arguments),n.apply(t,arguments)}},after:function(t,e,i){var n=t[e];t[e]=function(){var e=n.apply(t,arguments);return i.apply(t,arguments),e}}},d=function(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}},g=function(t,e,i){var n,s=t.trigger,o={};for(n in t.trigger=function(){var i=arguments[0];if(-1===e.indexOf(i))return s.apply(t,arguments);o[i]=arguments},i.apply(t,[]),t.trigger=s,o)o.hasOwnProperty(n)&&s.apply(t,o[n])},f=function(t){var e={};if("selectionStart"in t)e.start=t.selectionStart,e.length=t.selectionEnd-e.start;else if(document.selection){t.focus();var i=document.selection.createRange(),n=document.selection.createRange().text.length;i.moveStart("character",-t.value.length),e.start=i.text.length-n,e.length=n}return e},v=function(e){var i=null,n=function(n,s){var o,r,a,l,h,p,u,c,d,g;(s=s||{},(n=n||window.event||{}).metaKey||n.altKey)||(s.force||!1!==e.data("grow"))&&(o=e.val(),n.type&&"keydown"===n.type.toLowerCase()&&(a=(r=n.keyCode)>=48&&r<=57||r>=65&&r<=90||r>=96&&r<=111||r>=186&&r<=222||32===r,46===r||8===r?(c=f(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):46===r&&void 0!==c.start&&(o=o.substring(0,c.start)+o.substring(c.start+1)):a&&(p=n.shiftKey,u=String.fromCharCode(n.keyCode),o+=u=p?u.toUpperCase():u.toLowerCase())),l=e.attr("placeholder"),!o&&l&&(o=l),g=e,(h=((d=o)?(m.$testInput||(m.$testInput=t("").css({position:"absolute",top:-99999,left:-99999,width:"auto",padding:0,whiteSpace:"pre"}).appendTo("body")),m.$testInput.text(d),function(t,e,i){var n,s,o={};if(i)for(n=0,s=i.length;n").addClass($.wrapperClass).addClass(c).addClass(u),i=t("
").addClass($.inputClass).addClass("items").appendTo(e),n=t('').appendTo(i).attr("tabindex",S.is(":disabled")?"-1":O.tabIndex),p=t($.dropdownParent||e),s=t("
").addClass($.dropdownClass).addClass(u).hide().appendTo(p),h=t("
").addClass($.dropdownContentClass).appendTo(s),(g=S.attr("id"))&&(n.attr("id",g+"-selectized"),t("label[for='"+g+"']").attr("for",g+"-selectized")),O.settings.copyClassesToDropdown&&s.addClass(c),e.css({width:S[0].style.width}),O.plugins.names.length&&(d="plugin-"+O.plugins.names.join(" plugin-"),e.addClass(d),s.addClass(d)),(null===$.maxItems||$.maxItems>1)&&1===O.tagType&&S.attr("multiple","multiple"),O.settings.placeholder&&n.attr("placeholder",$.placeholder),!O.settings.splitOn&&O.settings.delimiter){var I=O.settings.delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");O.settings.splitOn=new RegExp("\\s*"+I+"+\\s*")}S.attr("autocorrect")&&n.attr("autocorrect",S.attr("autocorrect")),S.attr("autocapitalize")&&n.attr("autocapitalize",S.attr("autocapitalize")),n[0].type=S[0].type,O.$wrapper=e,O.$control=i,O.$control_input=n,O.$dropdown=s,O.$dropdown_content=h,s.on("mouseenter mousedown click","[data-disabled]>[data-selectable]",(function(t){t.stopImmediatePropagation()})),s.on("mouseenter","[data-selectable]",(function(){return O.onOptionHover.apply(O,arguments)})),s.on("mousedown click","[data-selectable]",(function(){return O.onOptionSelect.apply(O,arguments)})),m="mousedown",y="*:not(input)",w=function(){return O.onItemSelect.apply(O,arguments)},(f=i).on(m,y,(function(t){for(var e=t.target;e&&e.parentNode!==f[0];)e=e.parentNode;return t.currentTarget=e,w.apply(this,[t])})),v(n),i.on({mousedown:function(){return O.onMouseDown.apply(O,arguments)},click:function(){return O.onClick.apply(O,arguments)}}),n.on({mousedown:function(t){t.stopPropagation()},keydown:function(){return O.onKeyDown.apply(O,arguments)},keyup:function(){return O.onKeyUp.apply(O,arguments)},keypress:function(){return O.onKeyPress.apply(O,arguments)},resize:function(){O.positionDropdown.apply(O,[])},blur:function(){return O.onBlur.apply(O,arguments)},focus:function(){return O.ignoreBlur=!1,O.onFocus.apply(O,arguments)},paste:function(){return O.onPaste.apply(O,arguments)}}),x.on("keydown"+C,(function(t){O.isCmdDown=t[o?"metaKey":"ctrlKey"],O.isCtrlDown=t[o?"altKey":"ctrlKey"],O.isShiftDown=t.shiftKey})),x.on("keyup"+C,(function(t){t.keyCode===a&&(O.isCtrlDown=!1),16===t.keyCode&&(O.isShiftDown=!1),t.keyCode===r&&(O.isCmdDown=!1)})),x.on("mousedown"+C,(function(t){if(O.isFocused){if(t.target===O.$dropdown[0]||t.target.parentNode===O.$dropdown[0])return!1;O.$control.has(t.target).length||t.target===O.$control[0]||O.blur(t.target)}})),b.on(["scroll"+C,"resize"+C].join(" "),(function(){O.isOpen&&O.positionDropdown.apply(O,arguments)})),b.on("mousemove"+C,(function(){O.ignoreHover=!1})),this.revertSettings={$children:S.children().detach(),tabindex:S.attr("tabindex")},S.attr("tabindex",-1).hide().after(O.$wrapper),Array.isArray($.items)&&(O.setValue($.items),delete $.items),l&&S.on("invalid"+C,(function(t){t.preventDefault(),O.isInvalid=!0,O.refreshState()})),O.updateOriginalInput(),O.refreshItems(),O.refreshState(),O.updatePlaceholder(),O.isSetup=!0,S.is(":disabled")&&O.disable(),O.on("change",this.onChange),S.data("selectize",O),S.addClass("selectized"),O.trigger("initialize"),!0===$.preload&&O.onSearchChange("")},setupTemplates:function(){var e=this.settings.labelField,i=this.settings.optgroupLabelField,n={optgroup:function(t){return'
'+t.html+"
"},optgroup_header:function(t,e){return'
'+e(t[i])+"
"},option:function(t,i){return'
'+i(t[e])+"
"},item:function(t,i){return'
'+i(t[e])+"
"},option_create:function(t,e){return'
Add '+e(t.input)+"
"}};this.settings.render=t.extend({},n,this.settings.render)},setupCallbacks:function(){var t,e,i={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(t in i)i.hasOwnProperty(t)&&(e=this.settings[i[t]])&&this.on(t,e)},onClick:function(t){this.isFocused&&this.isOpen||(this.focus(),t.preventDefault())},onMouseDown:function(e){var i=this,n=e.isDefaultPrevented();t(e.target);if(i.isFocused){if(e.target!==i.$control_input[0])return"single"===i.settings.mode?i.isOpen?i.close():i.open():n||i.setActiveItem(null),!1}else n||window.setTimeout((function(){i.focus()}),0)},onChange:function(){this.$input.trigger("change")},onPaste:function(e){var i=this;i.isFull()||i.isInputHidden||i.isLocked?e.preventDefault():i.settings.splitOn&&setTimeout((function(){var e=i.$control_input.val();if(e.match(i.settings.splitOn))for(var n=t.trim(e).split(i.settings.splitOn),s=0,o=n.length;s(a=Array.prototype.indexOf.apply(this.$control[0].childNodes,[e[0]]))&&(h=r,r=a,a=h),s=r;s<=a;s++)l=this.$control[0].childNodes[s],-1===this.$activeItems.indexOf(l)&&(t(l).addClass("active"),this.$activeItems.push(l));i.preventDefault()}else"mousedown"===n&&this.isCtrlDown||"keydown"===n&&this.isShiftDown?e.hasClass("active")?(o=this.$activeItems.indexOf(e[0]),this.$activeItems.splice(o,1),e.removeClass("active")):this.$activeItems.push(e.addClass("active")[0]):(t(this.$activeItems).removeClass("active"),this.$activeItems=[e.addClass("active")[0]]);this.hideInput(),this.isFocused||this.focus()}},setActiveOption:function(e,i,n){var s,o,r,a,l;this.$activeOption&&this.$activeOption.removeClass("active"),this.$activeOption=null,(e=t(e)).length&&(this.$activeOption=e.addClass("active"),!i&&h(i)||(s=this.$dropdown_content.height(),o=this.$activeOption.outerHeight(!0),i=this.$dropdown_content.scrollTop()||0,a=r=this.$activeOption.offset().top-this.$dropdown_content.offset().top+i,l=r-s+o,r+o>s+i?this.$dropdown_content.stop().animate({scrollTop:l},n?this.settings.scrollDuration:0):r=0;i--)-1!==this.items.indexOf(p(n.items[i].id))&&n.items.splice(i,1);return n},refreshOptions:function(e){var i,s,o,r,a,l,h,u,c,d,g,f,v,m,y,w;void 0===e&&(e=!0);var O,$,C=this,b=t.trim(C.$control_input.val()),x=C.search(b),S=C.$dropdown_content,I=C.$activeOption&&p(C.$activeOption.attr("data-value"));for(r=x.items.length,"number"==typeof C.settings.maxOptions&&(r=Math.min(r,C.settings.maxOptions)),a={},l=[],i=0;i0||v,C.hasOptions?(x.items.length>0?((y=I&&C.getOption(I))&&y.length?m=y:"single"===C.settings.mode&&C.items.length&&(m=C.getOption(C.items[0])),m&&m.length||(m=w&&!C.settings.addPrecedence?C.getAdjacentOption(w,1):S.find("[data-selectable]:first"))):m=w,C.setActiveOption(m),e&&!C.isOpen&&C.open()):(C.setActiveOption(null),e&&C.isOpen&&C.close())},addOption:function(t){var e,i,n;if(Array.isArray(t))for(e=0,i=t.length;e=0&&s0),this.$control_input.data("grow",!e&&!i)},isFull:function(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems},updateOriginalInput:function(t){var e,i,n,s;if(t=t||{},1===this.tagType){for(n=[],e=0,i=this.items.length;e'+u(s)+"");n.length||this.$input.attr("multiple")||n.push(''),this.$input.html(n.join(""))}else this.$input.val(this.getValue()),this.$input.attr("value",this.$input.val());this.isSetup&&(t.silent||this.trigger("change",this.$input.val()))},updatePlaceholder:function(){if(this.settings.placeholder){var t=this.$control_input;this.items.length?t.removeAttr("placeholder"):t.attr("placeholder",this.settings.placeholder),t.triggerHandler("update",{force:!0})}},open:function(){this.isLocked||this.isOpen||"multi"===this.settings.mode&&this.isFull()||(this.focus(),this.isOpen=!0,this.refreshState(),this.$dropdown.css({visibility:"hidden",display:"block"}),this.positionDropdown(),this.$dropdown.css({visibility:"visible"}),this.trigger("dropdown_open",this.$dropdown))},close:function(){var t=this.isOpen;"single"===this.settings.mode&&this.items.length&&(this.hideInput(),this.isBlurring||this.$control_input.blur()),this.isOpen=!1,this.$dropdown.hide(),this.setActiveOption(null),this.refreshState(),t&&this.trigger("dropdown_close",this.$dropdown)},positionDropdown:function(){var t=this.$control,e="body"===this.settings.dropdownParent?t.offset():t.position();e.top+=t.outerHeight(!0),this.$dropdown.css({width:t[0].getBoundingClientRect().width,top:e.top,left:e.left})},clear:function(t){this.items.length&&(this.$control.children(":not(input)").remove(),this.items=[],this.lastQuery=null,this.setCaret(0),this.setActiveItem(null),this.updatePlaceholder(),this.updateOriginalInput({silent:t}),this.refreshState(),this.showInput(),this.trigger("clear"))},insertAtCaret:function(t){var e=Math.min(this.caretPos,this.items.length),i=t[0],n=this.buffer||this.$control[0];0===e?n.insertBefore(i,n.firstChild):n.insertBefore(i,n.childNodes[e]),this.setCaret(e+1)},deleteSelection:function(e){var i,n,s,o,r,a,l,h,p;if(s=e&&8===e.keyCode?-1:1,o=f(this.$control_input[0]),this.$activeOption&&!this.settings.hideSelected&&(l=this.getAdjacentOption(this.$activeOption,-1).attr("data-value")),r=[],this.$activeItems.length){for(p=this.$control.children(".active:"+(s>0?"last":"first")),a=this.$control.children(":not(input)").index(p),s>0&&a++,i=0,n=this.$activeItems.length;i0&&o.start===this.$control_input.val().length&&r.push(this.items[this.caretPos]));if(!r.length||"function"==typeof this.settings.onDelete&&!1===this.settings.onDelete.apply(this,[r]))return!1;for(void 0!==a&&this.setCaret(a);r.length;)this.removeItem(r.pop());return this.showInput(),this.positionDropdown(),this.refreshOptions(!0),l&&(h=this.getOption(l)).length&&this.setActiveOption(h),!0},advanceSelection:function(t,e){var i,n,s,o,r;0!==t&&(this.rtl&&(t*=-1),i=t>0?"last":"first",n=f(this.$control_input[0]),this.isFocused&&!this.isInputHidden?(o=this.$control_input.val().length,(t<0?0===n.start&&0===n.length:n.start===o)&&!o&&this.advanceCaret(t,e)):(r=this.$control.children(".active:"+i)).length&&(s=this.$control.children(":not(input)").index(r),this.setActiveItem(null),this.setCaret(t>0?s+1:s)))},advanceCaret:function(t,e){var i,n;0!==t&&(i=t>0?"next":"prev",this.isShiftDown?(n=this.$control_input[i]()).length&&(this.hideInput(),this.setActiveItem(n),e&&e.preventDefault()):this.setCaret(this.caretPos+t))},setCaret:function(e){var i,n,s,o;if(e="single"===this.settings.mode?this.items.length:Math.max(0,Math.min(this.items.length,e)),!this.isPending)for(i=0,n=(s=this.$control.children(":not(input)")).length;i
'+t.title+'×
'}},e),n.setup=(i=n.setup,function(){i.apply(n,arguments),n.$dropdown_header=t(e.html(e)),n.$dropdown.prepend(n.$dropdown_header)})})),m.define("optgroup_columns",(function(e){var i,n=this;e=t.extend({equalizeWidth:!0,equalizeHeight:!0},e),this.getAdjacentOption=function(e,i){var n=e.closest("[data-group]").find("[data-selectable]"),s=n.index(e)+i;return s>=0&&s
',t=t.firstChild,i.body.appendChild(t),e=s.width=t.offsetWidth-t.clientWidth,i.body.removeChild(t)),e},o=function(){var i,o,r,a,l,h,p;if((o=(p=t("[data-group]",n.$dropdown_content)).length)&&n.$dropdown_content.width()){if(e.equalizeHeight){for(r=0,i=0;i1&&(l=h-a*(o-1),p.eq(o-1).css({width:l})))}};(e.equalizeHeight||e.equalizeWidth)&&(c.after(this,"positionDropdown",o),c.after(this,"refreshOptions",o))})),m.define("remove_button",(function(e){e=t.extend({label:"×",title:"Remove",className:"remove",append:!0},e);"single"!==this.settings.mode?function(e,i){var n,s=e,o=''+i.label+"",r=function(t,e){var i=t.search(/(<\/[^>]+>\s*)$/);return t.substring(0,i)+e+t.substring(i)};e.setup=(n=s.setup,function(){if(i.append){var a=s.settings.render.item;s.settings.render.item=function(t){return r(a.apply(e,arguments),o)}}n.apply(e,arguments),e.$control.on("click","."+i.className,(function(e){if(e.preventDefault(),!s.isLocked){var i=t(e.currentTarget).parent();s.setActiveItem(i),s.deleteSelection()&&s.setCaret(s.items.length)}}))})}(this,e):function(e,i){i.className="remove-single";var n,s=e,o=''+i.label+"",r=function(e,i){return t("").append(e).append(i)};e.setup=(n=s.setup,function(){if(i.append){var a=t(s.$input.context).attr("id"),l=(t("#"+a),s.settings.render.item);s.settings.render.item=function(t){return r(l.apply(e,arguments),o)}}n.apply(e,arguments),e.$control.on("click","."+i.className,(function(t){t.preventDefault(),s.isLocked||s.clear()}))})}(this,e)})),m.define("restore_on_backspace",(function(t){var e,i=this;t.text=t.text||function(t){return t[this.settings.labelField]},this.onKeyDown=(e=i.onKeyDown,function(i){var n,s;return 8===i.keyCode&&""===this.$control_input.val()&&!this.$activeItems.length&&(n=this.caretPos-1)>=0&&n