/**
* Tom Select v0.0.8
* Licensed under the Apache License, Version 2.0 (the "License");
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).TomSelect=e()}(this,(function(){"use strict"
function t(t,e){t.split(/\s+/).forEach((t=>{e(t)}))}class e{constructor(){this._events=void 0,this._events={}}on(e,s){t(e,(t=>{const e=this._events[t]||[]
e.push(s),this._events[t]=e}))}off(e,s){const i=arguments.length
0!==i?t(e,(t=>{if(1===i)return void delete this._events[t]
const e=this._events[t]
void 0!==e&&(e.splice(e.indexOf(s),1),this._events[t]=e)})):this._events={}}trigger(e,...s){const i=this
t(e,(t=>{const e=i._events[t]
void 0!==e&&e.forEach((t=>{t.apply(i,s)}))}))}}const s=t=>(t=t.filter(Boolean)).length<2?t[0]||"":1==l(t)?"["+t.join("")+"]":"(?:"+t.join("|")+")",i=t=>{if(!o(t))return t.join("")
let e="",s=0
const i=()=>{s>1&&(e+="{"+s+"}")}
return t.forEach(((n,o)=>{n!==t[o-1]?(i(),e+=n,s=1):s++})),i(),e},n=t=>{let e=c(t)
return s(e)},o=t=>new Set(t).size!==t.length,r=t=>(t+"").replace(/([\$\(\)\*\+\.\?\[\]\^\{\|\}\\])/gu,"\\$1"),l=t=>t.reduce(((t,e)=>Math.max(t,a(e))),0),a=t=>c(t).length,c=t=>Array.from(t),d=t=>{if(1===t.length)return[[t]]
let e=[]
const s=t.substring(1)
return d(s).forEach((function(s){let i=s.slice(0)
i[0]=t.charAt(0)+i[0],e.push(i),i=s.slice(0),i.unshift(t.charAt(0)),e.push(i)})),e},u=[[0,65535]]
let p,h
const g={},f={"/":"⁄∕",0:"߀",a:"ⱥɐɑ",aa:"ꜳ",ae:"æǽǣ",ao:"ꜵ",au:"ꜷ",av:"ꜹꜻ",ay:"ꜽ",b:"ƀɓƃ",c:"ꜿƈȼↄ",d:"đɗɖᴅƌꮷԁɦ",e:"ɛǝᴇɇ",f:"ꝼƒ",g:"ǥɠꞡᵹꝿɢ",h:"ħⱨⱶɥ",i:"ɨı",j:"ɉȷ",k:"ƙⱪꝁꝃꝅꞣ",l:"łƚɫⱡꝉꝇꞁɭ",m:"ɱɯϻ",n:"ꞥƞɲꞑᴎлԉ",o:"øǿɔɵꝋꝍᴑ",oe:"œ",oi:"ƣ",oo:"ꝏ",ou:"ȣ",p:"ƥᵽꝑꝓꝕρ",q:"ꝗꝙɋ",r:"ɍɽꝛꞧꞃ",s:"ßȿꞩꞅʂ",t:"ŧƭʈⱦꞇ",th:"þ",tz:"ꜩ",u:"ʉ",v:"ʋꝟʌ",vy:"ꝡ",w:"ⱳ",y:"ƴɏỿ",z:"ƶȥɀⱬꝣ",hv:"ƕ"}
for(let t in f){let e=f[t]||""
for(let s=0;s<e.length;s++){let i=e.substring(s,s+1)
g[i]=t}}const m=new RegExp(Object.keys(g).join("|")+"|[̀-ͯ·ʾʼ]","gu"),v=(t,e="NFKD")=>t.normalize(e),b=t=>c(t).reduce(((t,e)=>t+y(e)),""),y=t=>(t=v(t).toLowerCase().replace(m,(t=>g[t]||"")),v(t,"NFC"))
const O=t=>{const e={},s=(t,s)=>{const i=e[t]||new Set,o=new RegExp("^"+n(i)+"$","iu")
s.match(o)||(i.add(r(s)),e[t]=i)}
for(let e of function*(t){for(const[e,s]of t)for(let t=e;t<=s;t++){let e=String.fromCharCode(t),s=b(e)
s!=e.toLowerCase()&&(s.length>3||0!=s.length&&(yield{folded:s,composed:e,code_point:t}))}}(t))s(e.folded,e.folded),s(e.folded,e.composed)
return e},w=t=>{const e=O(t),i={}
let o=[]
for(let t in e){let s=e[t]
s&&(i[t]=n(s)),t.length>1&&o.push(r(t))}o.sort(((t,e)=>e.length-t.length))
const l=s(o)
return h=new RegExp("^"+l,"u"),i},_=(t,e=1)=>(e=Math.max(e,t.length-1),s(d(t).map((t=>((t,e=1)=>{let s=0
return t=t.map((t=>(p[t]&&(s+=t.length),p[t]||t))),s>=e?i(t):""})(t,e))))),I=(t,e=!0)=>{let n=t.length>1?1:0
return s(t.map((t=>{let s=[]
const o=e?t.length():t.length()-1
for(let e=0;e<o;e++)s.push(_(t.substrs[e]||"",n))
return i(s)})))},S=(t,e)=>{for(const s of e){if(s.start!=t.start||s.end!=t.end)continue
if(s.substrs.join("")!==t.substrs.join(""))continue
let e=t.parts
const i=t=>{for(const s of e){if(s.start===t.start&&s.substr===t.substr)return!1
if(1!=t.length&&1!=s.length){if(t.start<s.start&&t.end>s.start)return!0
if(s.start<t.start&&s.end>t.start)return!0}}return!1}
if(!(s.parts.filter(i).length>0))return!0}return!1}
class C{constructor(){this.parts=[],this.substrs=[],this.start=0,this.end=0}add(t){t&&(this.parts.push(t),this.substrs.push(t.substr),this.start=Math.min(t.start,this.start),this.end=Math.max(t.end,this.end))}last(){return this.parts[this.parts.length-1]}length(){return this.parts.length}clone(t,e){let s=new C,i=JSON.parse(JSON.stringify(this.parts)),n=i.pop()
for(const t of i)s.add(t)
let o=e.substr.substring(0,t-n.start),r=o.length
return s.add({start:n.start,end:n.start+r,length:r,substr:o}),s}}const A=t=>{var e
void 0===p&&(p=w(e||u)),t=b(t)
let s="",i=[new C]
for(let e=0;e<t.length;e++){let n=t.substring(e).match(h)
const o=t.substring(e,e+1),r=n?n[0]:null
let l=[],a=new Set
for(const t of i){const s=t.last()
if(!s||1==s.length||s.end<=e)if(r){const s=r.length
t.add({start:e,end:e+s,length:s,substr:r}),a.add("1")}else t.add({start:e,end:e+1,length:1,substr:o}),a.add("2")
else if(r){let i=t.clone(e,s)
const n=r.length
i.add({start:e,end:e+n,length:n,substr:r}),l.push(i)}else a.add("3")}if(l.length>0){l=l.sort(((t,e)=>t.length()-e.length()))
for(let t of l)S(t,i)||i.push(t)}else if(e>0&&1==a.size&&!a.has("3")){s+=I(i,!1)
let t=new C
const e=i[0]
e&&t.add(e.last()),i=[t]}}return s+=I(i,!0),s},x=(t,e)=>{if(t)return t[e]},F=(t,e)=>{if(t){for(var s,i=e.split(".");(s=i.shift())&&(t=t[s]););return t}},k=(t,e,s)=>{var i,n
return t?(t+="",null==e.regex||-1===(n=t.search(e.regex))?0:(i=e.string.length/t.length,0===n&&(i+=.5),i*s)):0},L=(t,e)=>{var s=t[e]
if("function"==typeof s)return s
s&&!Array.isArray(s)&&(t[e]=[s])},E=(t,e)=>{if(Array.isArray(t))t.forEach(e)
else for(var s in t)t.hasOwnProperty(s)&&e(t[s],s)},P=(t,e)=>"number"==typeof t&&"number"==typeof e?t>e?1:t<e?-1:0:(t=b(t+"").toLowerCase())>(e=b(e+"").toLowerCase())?1:e>t?-1:0
class T{constructor(t,e){this.items=void 0,this.settings=void 0,this.items=t,this.settings=e||{diacritics:!0}}tokenize(t,e,s){if(!t||!t.length)return[]
const i=[],n=t.split(/\s+/)
var o
return s&&(o=new RegExp("^("+Object.keys(s).map(r).join("|")+"):(.*)$")),n.forEach((t=>{let s,n=null,l=null
o&&(s=t.match(o))&&(n=s[1],t=s[2]),t.length>0&&(l=this.settings.diacritics?A(t)||null:r(t),l&&e&&(l="\\b"+l)),i.push({string:t,regex:l?new RegExp(l,"iu"):null,field:n})})),i}getScoreFunction(t,e){var s=this.prepareSearch(t,e)
return this._getScoreFunction(s)}_getScoreFunction(t){const e=t.tokens,s=e.length
if(!s)return function(){return 0}
const i=t.options.fields,n=t.weights,o=i.length,r=t.getAttrFn
if(!o)return function(){return 1}
const l=1===o?function(t,e){const s=i[0].field
return k(r(e,s),t,n[s]||1)}:function(t,e){var s=0
if(t.field){const i=r(e,t.field)
!t.regex&&i?s+=1/o:s+=k(i,t,1)}else E(n,((i,n)=>{s+=k(r(e,n),t,i)}))
return s/o}
return 1===s?function(t){return l(e[0],t)}:"and"===t.options.conjunction?function(t){var i,n=0
for(let s of e){if((i=l(s,t))<=0)return 0
n+=i}return n/s}:function(t){var i=0
return E(e,(e=>{i+=l(e,t)})),i/s}}getSortFunction(t,e){var s=this.prepareSearch(t,e)
return this._getSortFunction(s)}_getSortFunction(t){var e,s=[]
const i=this,n=t.options,o=!t.query&&n.sort_empty?n.sort_empty:n.sort
if("function"==typeof o)return o.bind(this)
const r=function(e,s){return"$score"===e?s.score:t.getAttrFn(i.items[s.id],e)}
if(o)for(let e of o)(t.query||"$score"!==e.field)&&s.push(e)
if(t.query){e=!0
for(let t of s)if("$score"===t.field){e=!1
break}e&&s.unshift({field:"$score",direction:"desc"})}else s=s.filter((t=>"$score"!==t.field))
return s.length?function(t,e){var i,n
for(let o of s){if(n=o.field,i=("desc"===o.direction?-1:1)*P(r(n,t),r(n,e)))return i}return 0}:null}prepareSearch(t,e){const s={}
var i=Object.assign({},e)
if(L(i,"sort"),L(i,"sort_empty"),i.fields){L(i,"fields")
const t=[]
i.fields.forEach((e=>{"string"==typeof e&&(e={field:e,weight:1}),t.push(e),s[e.field]="weight"in e?e.weight:1})),i.fields=t}return{options:i,query:t.toLowerCase().trim(),tokens:this.tokenize(t,i.respect_word_boundaries,s),total:0,items:[],weights:s,getAttrFn:i.nesting?F:x}}search(t,e){var s,i,n=this
i=this.prepareSearch(t,e),e=i.options,t=i.query
const o=e.score||n._getScoreFunction(i)
t.length?E(n.items,((t,n)=>{s=o(t),(!1===e.filter||s>0)&&i.items.push({score:s,id:n})})):E(n.items,((t,e)=>{i.items.push({score:1,id:e})}))
const r=n._getSortFunction(i)
return r&&i.items.sort(r),i.total=i.items.length,"number"==typeof e.limit&&(i.items=i.items.slice(0,e.limit)),i}}const $=(t,e)=>{if(Array.isArray(t))t.forEach(e)
else for(var s in t)t.hasOwnProperty(s)&&e(t[s],s)},j=t=>{if(t.jquery)return t[0]
if(t instanceof HTMLElement)return t
if(V(t)){const e=document.createElement("template")
return e.innerHTML=t.trim(),e.content.firstChild}return document.querySelector(t)},V=t=>"string"==typeof t&&t.indexOf("<")>-1,q=(t,e)=>{const s=document.createEvent("HTMLEvents")
s.initEvent(e,!0,!1),t.dispatchEvent(s)},D=(t,e)=>{Object.assign(t.style,e)},N=(t,...e)=>{const s=M(e);(t=B(t)).forEach((t=>{s.forEach((e=>{t.classList.add(e)}))}))},H=(t,...e)=>{const s=M(e);(t=B(t)).forEach((t=>{s.forEach((e=>{t.classList.remove(e)}))}))},M=t=>{let e=[]
return $(t,(t=>{"string"==typeof t&&(t=t.trim().split(/[\11\12\14\15\40]/)),Array.isArray(t)&&(e=e.concat(t))})),e.filter(Boolean)},B=t=>(Array.isArray(t)||(t=[t]),t),z=(t,e,s)=>{if(!s||s.contains(t))for(;t&&t.matches;){if(t.matches(e))return t
t=t.parentNode}},R=(t,e=0)=>e>0?t[t.length-1]:t[0],K=(t,e)=>{if(!t)return-1
e=e||t.nodeName
let s=0
for(;t=t.previousElementSibling;)t.matches(e)&&s++
return s},Q=(t,e)=>{$(e,((e,s)=>{null==e?t.removeAttribute(s):t.setAttribute(s,""+e)}))},G=(t,e)=>{t.parentNode&&t.parentNode.replaceChild(e,t)},U=(t,e)=>{if(null===e)return
if("string"==typeof e){if(!e.length)return
e=new RegExp(e,"i")}const s=t=>3===t.nodeType?(t=>{const s=t.data.match(e)
if(s&&t.data.length>0){const e=document.createElement("span")
e.className="highlight"
const i=t.splitText(s.index)
i.splitText(s[0].length)
const n=i.cloneNode(!0)
return e.appendChild(n),G(i,e),1}return 0})(t):((t=>{1!==t.nodeType||!t.childNodes||/(script|style)/i.test(t.tagName)||"highlight"===t.className&&"SPAN"===t.tagName||Array.from(t.childNodes).forEach((t=>{s(t)}))})(t),0)
s(t)},J="undefined"!=typeof navigator&&/Mac/.test(navigator.userAgent)?"metaKey":"ctrlKey"
var W={options:[],optgroups:[],plugins:[],delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:null,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,shouldOpen:null,maxOptions:50,maxItems:null,hideSelected:null,duplicates:!1,addPrecedence:!1,selectOnTab:!1,preload:null,allowEmptyOption:!1,loadThrottle:300,loadingClass:"loading",dataAttr:null,optgroupField:"optgroup",valueField:"value",labelField:"text",disabledField:"disabled",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"ts-wrapper",controlClass:"ts-control",dropdownClass:"ts-dropdown",dropdownContentClass:"ts-dropdown-content",itemClass:"item",optionClass:"option",dropdownParent:null,controlInput:'<input type="text" autocomplete="off" size="1" />',copyClassesToDropdown:!1,placeholder:null,hidePlaceholder:null,shouldLoad:t=>t.length>0,render:{}}
const X=t=>null==t?null:Y(t),Y=t=>"boolean"==typeof t?t?"1":"0":t+"",Z=t=>(t+"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),tt=(t,e)=>{let s
return function(i,n){const o=this
s&&(o.loading=Math.max(o.loading-1,0),clearTimeout(s)),s=setTimeout((function(){s=null,o.loadedSearches[i]=!0,t.call(o,i,n)}),e)}},et=(t,e,s)=>{let i
const n=t.trigger,o={}
for(i of(t.trigger=function(){const s=arguments[0]
if(-1===e.indexOf(s))return n.apply(t,arguments)
o[s]=arguments},s.apply(t,[]),t.trigger=n,e))i in o&&n.apply(t,o[i])},st=(t,e=!1)=>{t&&(t.preventDefault(),e&&t.stopPropagation())},it=(t,e,s,i)=>{t.addEventListener(e,s,i)},nt=(t,e)=>{if(!e)return!1
if(!e[t])return!1
return 1===(e.altKey?1:0)+(e.ctrlKey?1:0)+(e.shiftKey?1:0)+(e.metaKey?1:0)},ot=(t,e)=>{const s=t.getAttribute("id")
return s||(t.setAttribute("id",e),e)},rt=t=>t.replace(/[\\"']/g,"\\$&"),lt=(t,e)=>{e&&t.append(e)}
function at(t,e){const s=Object.assign({},W,e),i=s.dataAttr,n=s.labelField,o=s.valueField,r=s.disabledField,l=s.optgroupField,a=s.optgroupLabelField,c=s.optgroupValueField,d=t.tagName.toLowerCase()
let u=t.getAttribute("placeholder")||t.getAttribute("data-placeholder")
if(!u&&!s.allowEmptyOption){const e=t.querySelector('option[value=""]')
e&&(u=e.textContent)}const p={placeholder:u,options:[],optgroups:[],items:[],maxItems:null}
return"select"===d?(()=>{let e
const d=p.options,u={}
let h=1
const g=t=>{let e=Object.assign({},t.dataset)
const s=i&&e[i]
return"string"==typeof s&&s.length&&(e=Object.assign(e,JSON.parse(s))),e},f=(t,e)=>{const i=X(t.value)
if(null!=i&&(i||s.allowEmptyOption)){if(u.hasOwnProperty(i)){if(e){const t=u[i][l]
t?Array.isArray(t)?t.push(e):u[i][l]=[t,e]:u[i][l]=e}}else{const s=g(t)
s[n]=s[n]||t.textContent,s[o]=s[o]||i,s[r]=s[r]||t.disabled,s[l]=s[l]||e,s.$option=t,u[i]=s,d.push(s)}t.selected&&p.items.push(i)}}
p.maxItems=t.hasAttribute("multiple")?null:1,$(t.children,(t=>{e=t.tagName.toLowerCase(),"optgroup"===e?(t=>{const e=g(t)
e[a]=e[a]||t.getAttribute("label")||"",e[c]=e[c]||h++,e[r]=e[r]||t.disabled,p.optgroups.push(e)
const s=e[c]
$(t.children,(t=>{f(t,s)}))})(t):"option"===e&&f(t)}))})():(()=>{const e=t.getAttribute(i)
if(e)p.options=JSON.parse(e),$(p.options,(t=>{p.items.push(t[o])}))
else{const e=t.value.trim()||""
if(!s.allowEmptyOption&&!e.length)return
const i=e.split(s.delimiter)
$(i,(t=>{const e={}
e[n]=t,e[o]=t,p.options.push(e)})),p.items=i}})(),Object.assign({},W,p,e)}let ct=0
class dt extends(function(t){return t.plugins={},class extends t{constructor(...t){super(...t),this.plugins={names:[],settings:{},requested:{},loaded:{}}}static define(e,s){t.plugins[e]={name:e,fn:s}}initializePlugins(t){let e,s
const i=this,n=[]
if(Array.isArray(t))t.forEach((t=>{"string"==typeof t?n.push(t):(i.plugins.settings[t.name]=t.options,n.push(t.name))}))
else if(t)for(e in t)t.hasOwnProperty(e)&&(i.plugins.settings[e]=t[e],n.push(e))
for(;s=n.shift();)i.require(s)}loadPlugin(e){const s=this,i=s.plugins,n=t.plugins[e]
if(!t.plugins.hasOwnProperty(e))throw new Error('Unable to find "'+e+'" plugin')
i.requested[e]=!0,i.loaded[e]=n.fn.apply(s,[s.plugins.settings[e]||{}]),i.names.push(e)}require(t){const e=this,s=e.plugins
if(!e.plugins.loaded.hasOwnProperty(t)){if(s.requested[t])throw new Error('Plugin has circular dependency ("'+t+'")')
e.loadPlugin(t)}return s.loaded[t]}}}(e)){constructor(t,e){super(),this.control_input=void 0,this.wrapper=void 0,this.dropdown=void 0,this.control=void 0,this.dropdown_content=void 0,this.focus_node=void 0,this.mutationObserver=void 0,this.order=0,this.settings=void 0,this.input=void 0,this.tabIndex=void 0,this.is_select_tag=void 0,this.rtl=void 0,this.inputId=void 0,this._destroy=void 0,this.sifter=void 0,this.isOpen=!1,this.isDisabled=!1,this.isRequired=void 0,this.isInvalid=!1,this.isValid=!0,this.isLocked=!1,this.isFocused=!1,this.isInputHidden=!1,this.isSetup=!1,this.ignoreFocus=!1,this.ignoreHover=!1,this.hasOptions=!1,this.currentResults=void 0,this.lastValue="",this.caretPos=0,this.loading=0,this.loadedSearches={},this.activeOption=null,this.activeItems=[],this.optgroups={},this.options={},this.userOptions={},this.items=[],ct++
const s=j(t)
if(s.tomselect)throw new Error("Tom Select already initialized on this element")
s.tomselect=this
const i=(window.getComputedStyle&&window.getComputedStyle(s,null)).getPropertyValue("direction"),n=at(s,e)
this.settings=n,this.input=s,this.tabIndex=s.tabIndex||0,this.is_select_tag="select"===s.tagName.toLowerCase(),this.rtl=/rtl/i.test(i),this.inputId=ot(s,"tomselect-"+ct),this.isRequired=s.required,this.sifter=new T(this.options,{diacritics:n.diacritics}),n.mode=n.mode||(1===n.maxItems?"single":"multi"),"boolean"!=typeof n.hideSelected&&(n.hideSelected="multi"===n.mode),"boolean"!=typeof n.hidePlaceholder&&(n.hidePlaceholder="multi"!==n.mode)
let o=n.createFilter
"function"!=typeof o&&("string"==typeof o&&(o=new RegExp(o)),o instanceof RegExp?n.createFilter=t=>o.test(t):n.createFilter=t=>this.settings.duplicates||!this.options[t]),this.initializePlugins(n.plugins),this.setupCallbacks(),this.setupTemplates()
const r=j("<div>"),l=j("<div>"),a=this._render("dropdown"),c=j('<div role="listbox" tabindex="-1">'),d=this.input.getAttribute("class")||"",u=n.mode
let p
if(N(r,n.wrapperClass,d,u),N(l,n.controlClass),lt(r,l),N(a,n.dropdownClass,u),n.copyClassesToDropdown&&N(a,d),N(c,n.dropdownContentClass),lt(a,c),j(n.dropdownParent||r).appendChild(a),V(n.controlInput)){p=j(n.controlInput)
E(["autocorrect","autocapitalize","autocomplete"],(t=>{s.getAttribute(t)&&Q(p,{[t]:s.getAttribute(t)})})),p.tabIndex=-1,l.appendChild(p),this.focus_node=p}else n.controlInput?(p=j(n.controlInput),this.focus_node=p):(p=j("<input/>"),this.focus_node=l)
this.wrapper=r,this.dropdown=a,this.dropdown_content=c,this.control=l,this.control_input=p,this.setup()}setup(){const t=this,e=t.settings,s=t.control_input,i=t.dropdown,n=t.dropdown_content,o=t.wrapper,l=t.control,a=t.input,c=t.focus_node,d={passive:!0},u=t.inputId+"-ts-dropdown"
Q(n,{id:u}),Q(c,{role:"combobox","aria-haspopup":"listbox","aria-expanded":"false","aria-controls":u})
const p=ot(c,t.inputId+"-ts-control"),h="label[for='"+(t=>t.replace(/['"\\]/g,"\\$&"))(t.inputId)+"']",g=document.querySelector(h),f=t.focus.bind(t)
if(g){it(g,"click",f),Q(g,{for:p})
const e=ot(g,t.inputId+"-ts-label")
Q(c,{"aria-labelledby":e}),Q(n,{"aria-labelledby":e})}if(o.style.width=a.style.width,t.plugins.names.length){const e="plugin-"+t.plugins.names.join(" plugin-")
N([o,i],e)}(null===e.maxItems||e.maxItems>1)&&t.is_select_tag&&Q(a,{multiple:"multiple"}),e.placeholder&&Q(s,{placeholder:e.placeholder}),!e.splitOn&&e.delimiter&&(e.splitOn=new RegExp("\\s*"+r(e.delimiter)+"+\\s*")),e.load&&e.loadThrottle&&(e.load=tt(e.load,e.loadThrottle)),t.control_input.type=a.type,it(i,"mousemove",(()=>{t.ignoreHover=!1})),it(i,"mouseenter",(e=>{const s=z(e.target,"[data-selectable]",i)
s&&t.onOptionHover(e,s)}),{capture:!0}),it(i,"click",(e=>{const s=z(e.target,"[data-selectable]")
s&&(t.onOptionSelect(e,s),st(e,!0))})),it(l,"click",(e=>{const i=z(e.target,"[data-ts-item]",l)
i&&t.onItemSelect(e,i)?st(e,!0):""===s.value&&(t.onClick(),st(e,!0))})),it(c,"keydown",(e=>t.onKeyDown(e))),it(s,"keypress",(e=>t.onKeyPress(e))),it(s,"input",(e=>t.onInput(e))),it(c,"blur",(e=>t.onBlur(e))),it(c,"focus",(e=>t.onFocus(e))),it(s,"paste",(e=>t.onPaste(e)))
const m=e=>{const n=e.composedPath()[0]
if(!o.contains(n)&&!i.contains(n))return t.isFocused&&t.blur(),void t.inputState()
n==s&&t.isOpen?e.stopPropagation():st(e,!0)},v=()=>{t.isOpen&&t.positionDropdown()}
it(document,"mousedown",m),it(window,"scroll",v,d),it(window,"resize",v,d),this._destroy=()=>{document.removeEventListener("mousedown",m),window.removeEventListener("scroll",v),window.removeEventListener("resize",v),g&&g.removeEventListener("click",f)},this.revertSettings={innerHTML:a.innerHTML,tabIndex:a.tabIndex},a.tabIndex=-1,a.insertAdjacentElement("afterend",t.wrapper),t.sync(!1),e.items=[],delete e.optgroups,delete e.options,it(a,"invalid",(()=>{t.isValid&&(t.isValid=!1,t.isInvalid=!0,t.refreshState())})),t.updateOriginalInput(),t.refreshItems(),t.close(!1),t.inputState(),t.isSetup=!0,a.disabled?t.disable():t.enable(),t.on("change",this.onChange),N(a,"tomselected","ts-hidden-accessible"),t.trigger("initialize"),!0===e.preload&&t.preload(),this.setupMutationObserver(this.input)}setupMutationObserver(t){this.mutationObserver=new MutationObserver(((t,e)=>{E(this.options,(t=>{this.updateOption(t[this.settings.valueField],t)})),this.input.disabled!==this.isDisabled&&(this.input.disabled?this.disable():this.enable())})),this.mutationObserver.observe(t,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["disabled"]})}setupOptions(t=[],e=[]){this.addOptions(t),E(e,(t=>{this.registerOptionGroup(t)}))}setupTemplates(){const t=this,e=t.settings.labelField,s=t.settings.optgroupLabelField,i={optgroup:t=>{const e=document.createElement("div")
return e.className="optgroup",e.appendChild(t.options),e},optgroup_header:(t,e)=>'<div class="optgroup-header">'+e(t[s])+"</div>",option:(t,s)=>"<div>"+s(t[e])+"</div>",item:(t,s)=>"<div>"+s(t[e])+"</div>",option_create:(t,e)=>'<div class="create">Add <strong>'+e(t.input)+"</strong>&hellip;</div>",no_results:()=>'<div class="no-results">No results found</div>',loading:()=>'<div class="spinner"></div>',not_loading:()=>{},dropdown:()=>"<div></div>"}
t.settings.render=Object.assign({},i,t.settings.render)}setupCallbacks(){let t,e
const s={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",item_select:"onItemSelect",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 s)e=this.settings[s[t]],e&&this.on(t,e)}sync(t=!0){const e=this,s=t?at(e.input,{delimiter:e.settings.delimiter}):e.settings
e.setupOptions(s.options,s.optgroups),e.setValue(s.items||[],!0),e.lastQuery=null}onClick(){const t=this
if(t.activeItems.length>0)return t.clearActiveItems(),void t.focus()
t.isFocused&&t.isOpen?t.blur():t.focus()}onMouseDown(){}onChange(){q(this.input,"input"),q(this.input,"change")}onPaste(t){const e=this
e.isInputHidden||e.isLocked?st(t):e.settings.splitOn&&setTimeout((()=>{const t=e.inputValue()
if(!t.match(e.settings.splitOn))return
const s=t.trim().split(e.settings.splitOn)
E(s,(t=>{X(t)&&(this.options[t]?e.addItem(t):e.createItem(t))}))}),0)}onKeyPress(t){const e=this
if(e.isLocked)return void st(t)
const s=String.fromCharCode(t.keyCode||t.which)
e.settings.create&&"multi"===e.settings.mode&&s===e.settings.delimiter&&(e.createItem(),st(t))}onKeyDown(t){const e=this
if(e.ignoreHover=!0,e.isLocked)9!==t.keyCode&&st(t)
else{switch(t.keyCode){case 65:if(nt(J,t)&&""==e.control_input.value)return st(t),void e.selectAll()
break
case 27:return e.isOpen&&(st(t,!0),e.close()),void e.clearActiveItems()
case 40:if(!e.isOpen&&e.hasOptions)e.open()
else if(e.activeOption){const t=e.getAdjacent(e.activeOption,1)
t&&e.setActiveOption(t)}return void st(t)
case 38:if(e.activeOption){const t=e.getAdjacent(e.activeOption,-1)
t&&e.setActiveOption(t)}return void st(t)
case 13:return void(e.canSelect(e.activeOption)?(e.onOptionSelect(t,e.activeOption),st(t)):(e.settings.create&&e.createItem()||document.activeElement==e.control_input&&e.isOpen)&&st(t))
case 37:return void e.advanceSelection(-1,t)
case 39:return void e.advanceSelection(1,t)
case 9:return void(e.settings.selectOnTab&&(e.canSelect(e.activeOption)&&(e.onOptionSelect(t,e.activeOption),st(t)),e.settings.create&&e.createItem()&&st(t)))
case 8:case 46:return void e.deleteSelection(t)}e.isInputHidden&&!nt(J,t)&&st(t)}}onInput(t){const e=this
if(e.isLocked)return
const s=e.inputValue()
e.lastValue!==s&&(e.lastValue=s,e.settings.shouldLoad.call(e,s)&&e.load(s),e.refreshOptions(),e.trigger("type",s))}onOptionHover(t,e){this.ignoreHover||this.setActiveOption(e,!1)}onFocus(t){const e=this,s=e.isFocused
if(e.isDisabled)return e.blur(),void st(t)
e.ignoreFocus||(e.isFocused=!0,"focus"===e.settings.preload&&e.preload(),s||e.trigger("focus"),e.activeItems.length||(e.showInput(),e.refreshOptions(!!e.settings.openOnFocus)),e.refreshState())}onBlur(t){if(!1===document.hasFocus())return
const e=this
if(!e.isFocused)return
e.isFocused=!1,e.ignoreFocus=!1
const s=()=>{e.close(),e.setActiveItem(),e.setCaret(e.items.length),e.trigger("blur")}
e.settings.create&&e.settings.createOnBlur?e.createItem(null,s):s()}onOptionSelect(t,e){const s=this
let i
e.parentElement&&e.parentElement.matches("[data-disabled]")||(e.classList.contains("create")?s.createItem(null,(()=>{s.settings.closeAfterSelect&&s.close()})):(i=e.dataset.value,void 0!==i&&(s.lastQuery=null,s.addItem(i),s.settings.closeAfterSelect&&s.close(),!s.settings.hideSelected&&t.type&&/click/.test(t.type)&&s.setActiveOption(e))))}canSelect(t){return!!(this.isOpen&&t&&this.dropdown_content.contains(t))}onItemSelect(t,e){const s=this
return!s.isLocked&&"multi"===s.settings.mode&&(st(t),s.setActiveItem(e,t),!0)}canLoad(t){return!!this.settings.load&&!this.loadedSearches.hasOwnProperty(t)}load(t){const e=this
if(!e.canLoad(t))return
N(e.wrapper,e.settings.loadingClass),e.loading++
const s=e.loadCallback.bind(e)
e.settings.load.call(e,t,s)}loadCallback(t,e){const s=this
s.loading=Math.max(s.loading-1,0),s.lastQuery=null,s.clearActiveOption(),s.setupOptions(t,e),s.refreshOptions(s.isFocused&&!s.isInputHidden),s.loading||H(s.wrapper,s.settings.loadingClass),E(t,(t=>{if(!t.$option){const e=j('<option value="'+Z(t[this.settings.valueField])+'">'+Z(t[this.settings.labelField])+"</option>")
t.$option=e,s.input.append(e)}})),s.trigger("load",t,e)}preload(){const t=this.wrapper.classList
t.contains("preloaded")||(t.add("preloaded"),this.load(""))}setTextboxValue(t=""){const e=this.control_input
e.value!==t&&(e.value=t,q(e,"update"),this.lastValue=t)}getValue(){return this.is_select_tag&&this.input.hasAttribute("multiple")?this.items:this.items.join(this.settings.delimiter)}setValue(t,e){et(this,e?[]:["change"],(()=>{this.clear(e),this.addItems(t,e)}))}setMaxItems(t){0===t&&(t=null),this.settings.maxItems=t,this.refreshState()}setActiveItem(t,e){const s=this
if("single"===s.settings.mode)return
if(!t)return s.clearActiveItems(),void(s.isFocused&&s.showInput())
const i=e&&e.type.toLowerCase()
if("click"===i&&nt("shiftKey",e)&&s.activeItems.length){const i=s.getLastActive()
let n=Array.prototype.indexOf.call(s.control.children,i),o=Array.prototype.indexOf.call(s.control.children,t)
if(n>o){const t=n
n=o,o=t}for(let t=n;t<=o;t++){const e=s.control.children[t]
s.activeItems.includes(e.id)||s.setActiveItemClass(e)}st(e)}else"click"===i&&nt(J,e)||"keydown"===i&&nt("shiftKey",e)?t.classList.contains("active")?s.removeActiveItem(t):s.setActiveItemClass(t):(s.clearActiveItems(),s.setActiveItemClass(t))
s.hideInput(),s.isFocused||s.focus()}getItemById(t){return document.getElementById(t)}setActiveItemClass(t){const e=this,s=e.control.querySelector(".last-active")
s&&H(s,"last-active"),N(t,"active last-active"),e.trigger("item_select",t),e.activeItems.includes(t.id)||e.activeItems.push(t.id)}removeActiveItem(t){const e=this.activeItems.indexOf(t.id)
this.activeItems.splice(e,1),H(t,"active")}clearActiveItems(){const t=this.activeItems.map((t=>this.getItemById(t))).filter(Boolean)
H(t,"active"),this.activeItems=[]}setActiveOption(t,e=!0){t!==this.activeOption&&(this.clearActiveOption(),t&&(this.activeOption=t,Q(this.focus_node,{"aria-activedescendant":t.getAttribute("id")}),Q(t,{"aria-selected":"true"}),N(t,"active"),e&&this.scrollToOption(t)))}scrollToOption(t,e){if(!t)return
const s=this.dropdown_content,i=s.clientHeight,n=s.scrollTop||0,o=t.offsetHeight,r=t.getBoundingClientRect().top-s.getBoundingClientRect().top+n
r+o>i+n?this.scroll(r-i+o,e):r<n&&this.scroll(r,e)}scroll(t,e){const s=this.dropdown_content
e&&(s.style.scrollBehavior=e),s.scrollTop=t,s.style.scrollBehavior=""}clearActiveOption(){this.activeOption&&(H(this.activeOption,"active"),Q(this.activeOption,{"aria-selected":null})),this.activeOption=null,Q(this.focus_node,{"aria-activedescendant":null})}selectAll(){const t=this
if("single"===t.settings.mode)return
const e=t.controlChildren()
e.length&&(t.hideInput(),t.close(),t.activeItems=e.map((t=>t.id)),E(e,(e=>{t.setActiveItemClass(e)})))}inputState(){const t=this
t.control.contains(t.control_input)&&(Q(t.control_input,{placeholder:t.settings.placeholder}),t.activeItems.length>0||!t.isFocused&&t.settings.hidePlaceholder&&t.items.length>0?(t.setTextboxValue(),t.isInputHidden=!0):(t.settings.hidePlaceholder&&t.items.length>0&&Q(t.control_input,{placeholder:""}),t.isInputHidden=!1),t.wrapper.classList.toggle("input-hidden",t.isInputHidden))}hideInput(){this.inputState()}showInput(){this.inputState()}inputValue(){return this.control_input.value.trim()}focus(){const t=this
t.isDisabled||(t.ignoreFocus=!0,t.control_input.offsetWidth?t.control_input.focus():t.focus_node.focus(),setTimeout((()=>{t.ignoreFocus=!1,t.onFocus()}),0))}blur(){this.focus_node.blur(),this.onBlur()}getScoreFunction(t){return this.sifter.getScoreFunction(t,this.getSearchOptions())}getSearchOptions(){const t=this.settings
let e=t.sortField
return"string"==typeof t.sortField&&(e=[{field:t.sortField}]),{fields:t.searchField,conjunction:t.searchConjunction,sort:e,nesting:t.nesting}}search(t){let e,s
const i=this,n=this.getSearchOptions()
if(i.settings.score&&(s=i.settings.score.call(i,t),"function"!=typeof s))throw new Error('Tom Select "score" setting must be a function that returns a function')
return t!==i.lastQuery?(i.lastQuery=t,e=i.sifter.search(t,Object.assign(n,{score:s})),i.currentResults=e):e=Object.assign({},i.currentResults),i.settings.hideSelected&&(e.items=e.items.filter((t=>{const e=X(t.id)
return!(e&&-1!==i.items.indexOf(e))}))),e}refreshOptions(t=!0){let e,s,i,n,o,r,l,a
const c={},d=[],u=this,p=u.inputValue(),h=p===u.lastQuery||""==p&&null==u.lastQuery,g=u.search(p)
let f=null,m=u.settings.shouldOpen||!1
const v=u.dropdown_content
for(h&&(f=u.activeOption,f&&(l=f.closest("[data-group]"))),n=g.items.length,"number"==typeof u.settings.maxOptions&&(n=Math.min(n,u.settings.maxOptions)),n>0&&(m=!0),e=0;e<n;e++){const t=g.items[e]
if(!t)continue
const n=t.id,a=u.options[n]
if(void 0===a)continue
const p=Y(n)
let h=u.getOption(p,!0)
for(u.settings.hideSelected||h.classList.toggle("selected",u.items.includes(p)),o=a[u.settings.optgroupField]||"",r=Array.isArray(o)?o:[o],s=0,i=r&&r.length;s<i;s++){o=r[s],u.optgroups.hasOwnProperty(o)||(o="")
let t=c[o]
void 0===t&&(t=document.createDocumentFragment(),d.push(o)),s>0&&(h=h.cloneNode(!0),Q(h,{id:a.$id+"-clone-"+s,"aria-selected":null}),h.classList.add("ts-cloned"),H(h,"active"),u.activeOption&&u.activeOption.dataset.value==n&&l&&l.dataset.group===o.toString()&&(f=h)),t.appendChild(h),c[o]=t}}u.settings.lockOptgroupOrder&&d.sort(((t,e)=>{const s=u.optgroups[t],i=u.optgroups[e]
return(s&&s.$order||0)-(i&&i.$order||0)}))
const b=document.createDocumentFragment()
E(d,(t=>{const e=c[t]
if(!e||!e.children.length)return
const s=u.optgroups[t]
if(void 0!==s){const t=document.createDocumentFragment(),i=u.render("optgroup_header",s)
lt(t,i),lt(t,e)
const n=u.render("optgroup",{group:s,options:t})
lt(b,n)}else lt(b,e)})),v.innerHTML="",lt(v,b),u.settings.highlight&&((t=>{const e=t.querySelectorAll("span.highlight")
Array.prototype.forEach.call(e,(function(t){const e=t.parentNode
e.replaceChild(t.firstChild,t),e.normalize()}))})(v),g.query.length&&g.tokens.length&&E(g.tokens,(t=>{U(v,t.regex)})))
const y=t=>{const e=u.render(t,{input:p})
return e&&(m=!0,v.insertBefore(e,v.firstChild)),e}
u.loading?y("loading"):u.settings.shouldLoad.call(u,p)?0===g.items.length&&y("no_results"):y("not_loading")
const O=u.canCreate(p)
if(O&&(a=y("option_create")),u.hasOptions=g.items.length>0||O,m){if(g.items.length>0){if(f||"single"!==u.settings.mode||null==u.items[0]||(f=u.getOption(u.items[0])),!v.contains(f)){let t=0
a&&!u.settings.addPrecedence&&(t=1),f=u.selectable()[t]}}else a&&(f=a)
t&&!u.isOpen&&(u.open(),u.scrollToOption(f,"auto")),u.setActiveOption(f)}else u.clearActiveOption(),t&&u.isOpen&&u.close(!1)}selectable(){return this.dropdown_content.querySelectorAll("[data-selectable]")}addOption(t,e=!1){const s=this
if(Array.isArray(t))return s.addOptions(t,e),!1
const i=X(t[s.settings.valueField])
return null!==i&&!s.options.hasOwnProperty(i)&&(t.$order=t.$order||++s.order,t.$id=s.inputId+"-opt-"+t.$order,s.options[i]=t,s.lastQuery=null,e&&(s.userOptions[i]=e,s.trigger("option_add",i,t)),i)}addOptions(t,e=!1){E(t,(t=>{this.addOption(t,e)}))}registerOption(t){return this.addOption(t)}registerOptionGroup(t){const e=X(t[this.settings.optgroupValueField])
return null!==e&&(t.$order=t.$order||++this.order,this.optgroups[e]=t,e)}addOptionGroup(t,e){let s
e[this.settings.optgroupValueField]=t,(s=this.registerOptionGroup(e))&&this.trigger("optgroup_add",s,e)}removeOptionGroup(t){this.optgroups.hasOwnProperty(t)&&(delete this.optgroups[t],this.clearCache(),this.trigger("optgroup_remove",t))}clearOptionGroups(){this.optgroups={},this.clearCache(),this.trigger("optgroup_clear")}updateOption(t,e){var s
const i=this
let n,o
const r=X(t),l=X(e[i.settings.valueField])
if(null===r)return
const a=i.options[r]
if(null==a)return
if("string"!=typeof l)throw new Error("Value must be set in option data")
const c=i.getOption(r),d=i.getItem(r)
if(e.$order=e.$order||a.$order,delete i.options[r],i.uncacheValue(l),e.disabled=Boolean(null==e||null==(s=e.$option)?void 0:s.disabled),i.options[l]=e,c){if(i.dropdown_content.contains(c)){const t=i._render("option",e)
i.items.includes(l)&&t.classList.add("selected"),G(c,t),i.activeOption===c&&i.setActiveOption(t)}c.remove()}d&&(o=i.items.indexOf(r),-1!==o&&i.items.splice(o,1,l),n=i._render("item",e),d.classList.contains("active")&&N(n,"active"),G(d,n)),i.lastQuery=null}removeOption(t,e){const s=this
t=Y(t),s.uncacheValue(t),delete s.userOptions[t],delete s.options[t],s.lastQuery=null,s.trigger("option_remove",t),s.removeItem(t,e)}clearOptions(t){const e=(t||this.clearFilter).bind(this)
this.loadedSearches={},this.userOptions={},this.clearCache()
const s={}
E(this.options,((t,i)=>{e(t,i)&&(s[i]=t)})),this.options=this.sifter.items=s,this.lastQuery=null,this.trigger("option_clear")}clearFilter(t,e){return this.items.indexOf(e)>=0}getOption(t,e=!1){const s=X(t)
if(null===s)return null
const i=this.options[s]
if(null!=i){if(i.$div)return i.$div
if(e)return this._render("option",i)}return null}getAdjacent(t,e,s="option"){const i=this
let n
if(!t)return null
n="item"==s?i.controlChildren():i.dropdown_content.querySelectorAll("[data-selectable]")
for(let s=0;s<n.length;s++)if(n[s]==t)return e>0?n[s+1]:n[s-1]
return null}getItemOld(t){if("object"==typeof t)return t
const e=X(t)
return null!==e?this.control.querySelector(`[data-value="${rt(e)}"]`):null}getItem(t){if("object"==typeof t)return t
const e=X(t)
if(!e)return null
const s=this.options[e]
if(!s)return null
const i=document.getElementById(`${s.$id}-item`)
return i||null}addItems(t,e){const s=this
let i=Array.isArray(t)?t:[t]
i=i.filter((t=>-1===s.items.indexOf(t)))
const n=i[i.length-1]
i.forEach((t=>{s.isPending=t!==n,s.addItem(t,e)}))}addItem(t,e){et(this,e?[]:["change","dropdown_close"],(()=>{let s
const i=this,n=i.settings.mode,o=X(t)
if(o&&-1!==i.items.indexOf(o)&&("single"===n&&i.close(),"single"===n||!i.settings.duplicates))return
if(null===o||!i.options.hasOwnProperty(o))return
if("single"===n&&i.clear(e),"multi"===n&&i.isFull())return
s=i._render("item",i.options[o]),i.control.contains(s)&&(s=s.cloneNode(!0))
const r=i.isFull()
if(i.items.splice(i.caretPos,0,o),i.insertAtCaret(s),i.isSetup){if(!i.isPending&&i.settings.hideSelected){const t=i.getOption(o),e=i.getAdjacent(t,1)
e&&i.setActiveOption(e)}i.isPending||i.settings.closeAfterSelect||i.refreshOptions(i.isFocused&&"single"!==n),0!=i.settings.closeAfterSelect&&i.isFull()?i.close():i.isPending||i.positionDropdown(),i.trigger("item_add",o,s),i.isPending||i.updateOriginalInput({silent:e})}(!i.isPending||!r&&i.isFull())&&(i.inputState(),i.refreshState())}))}removeItem(t=null,e){const s=this
if(!(t=s.getItem(t)))return
let i
const n=t.dataset.value,o=K(t)
t.remove(),t.classList.contains("active")&&(i=s.activeItems.indexOf(t.id),s.activeItems.splice(i,1),H(t,"active")),s.items.splice(o,1),s.lastQuery=null,!s.settings.persist&&s.userOptions.hasOwnProperty(n)&&s.removeOption(n,e),o<s.caretPos&&s.setCaret(s.caretPos-1),s.updateOriginalInput({silent:e}),s.refreshState(),s.positionDropdown(),s.trigger("item_remove",n,t)}createItem(t=null,e=(()=>{})){3===arguments.length&&(e=arguments[2]),"function"!=typeof e&&(e=()=>{})
const s=this,i=s.caretPos
let n
if(t=t||s.inputValue(),!s.canCreate(t))return e(),!1
s.lock()
let o=!1
const r=t=>{if(s.unlock(),!t||"object"!=typeof t)return e()
const n=X(t[s.settings.valueField])
if("string"!=typeof n)return e()
s.setTextboxValue(),s.addOption(t,!0),s.setCaret(i),s.addItem(n),e(t),o=!0}
return n="function"==typeof s.settings.create?s.settings.create.call(this,t,r):{[s.settings.labelField]:t,[s.settings.valueField]:t},o||r(n),!0}refreshItems(){const t=this
t.lastQuery=null,t.isSetup&&t.addItems(t.items),t.updateOriginalInput(),t.refreshState()}refreshState(){const t=this
t.refreshValidityState()
const e=t.isFull(),s=t.isLocked
t.wrapper.classList.toggle("rtl",t.rtl)
const i=t.wrapper.classList
var n
i.toggle("focus",t.isFocused),i.toggle("disabled",t.isDisabled),i.toggle("required",t.isRequired),i.toggle("invalid",!t.isValid),i.toggle("locked",s),i.toggle("full",e),i.toggle("input-active",t.isFocused&&!t.isInputHidden),i.toggle("dropdown-active",t.isOpen),i.toggle("has-options",(n=t.options,0===Object.keys(n).length)),i.toggle("has-items",t.items.length>0)}refreshValidityState(){const t=this
t.input.validity&&(t.isValid=t.input.validity.valid,t.isInvalid=!t.isValid)}isFull(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems}updateOriginalInput(t={}){const e=this
let s,i
const n=e.input.querySelector('option[value=""]')
if(e.is_select_tag){const o=[],r=e.input.querySelectorAll("option:checked").length
function l(t,s,i){return t||(t=j('<option value="'+Z(s)+'">'+Z(i)+"</option>")),t!=n&&e.input.append(t),o.push(t),(t!=n||r>0)&&(t.selected=!0),t}e.input.querySelectorAll("option:checked").forEach((t=>{t.selected=!1})),0==e.items.length&&"single"==e.settings.mode?l(n,"",""):e.items.forEach((t=>{if(s=e.options[t],i=s[e.settings.labelField]||"",o.includes(s.$option)){l(e.input.querySelector(`option[value="${rt(t)}"]:not(:checked)`),t,i)}else s.$option=l(s.$option,t,i)}))}else e.input.value=e.getValue()
e.isSetup&&(t.silent||e.trigger("change",e.getValue()))}open(){const t=this
t.isLocked||t.isOpen||"multi"===t.settings.mode&&t.isFull()||(t.isOpen=!0,Q(t.focus_node,{"aria-expanded":"true"}),t.refreshState(),D(t.dropdown,{visibility:"hidden",display:"block"}),t.positionDropdown(),D(t.dropdown,{visibility:"visible",display:"block"}),t.focus(),t.trigger("dropdown_open",t.dropdown))}close(t=!0){const e=this,s=e.isOpen
t&&(e.setTextboxValue(),"single"===e.settings.mode&&e.items.length&&e.hideInput()),e.isOpen=!1,Q(e.focus_node,{"aria-expanded":"false"}),D(e.dropdown,{display:"none"}),e.settings.hideSelected&&e.clearActiveOption(),e.refreshState(),s&&e.trigger("dropdown_close",e.dropdown)}positionDropdown(){if("body"!==this.settings.dropdownParent)return
const t=this.control,e=t.getBoundingClientRect(),s=t.offsetHeight+e.top+window.scrollY,i=e.left+window.scrollX
D(this.dropdown,{width:e.width+"px",top:s+"px",left:i+"px"})}clear(t){const e=this
if(!e.items.length)return
const s=e.controlChildren()
E(s,(t=>{e.removeItem(t,!0)})),e.showInput(),t||e.updateOriginalInput(),e.trigger("clear")}insertAtCaret(t){const e=this,s=e.caretPos,i=e.control
i.insertBefore(t,i.children[s]||null),e.setCaret(s+1)}deleteSelection(t){let e,s
const i=this,n=t&&8===t.keyCode?-1:1,o={start:(r=i.control_input).selectionStart||0,length:(r.selectionEnd||0)-(r.selectionStart||0)}
var r
const l=[]
if(i.activeItems.length)s=i.getItemById(R(i.activeItems,n)),e=K(s),n>0&&e++,E(i.activeItems.map((t=>this.getItemById(t))),(t=>l.push(t)))
else if((i.isFocused||"single"===i.settings.mode)&&i.items.length){const t=i.controlChildren()
let e
n<0&&0===o.start&&0===o.length?e=t[i.caretPos-1]:n>0&&o.start===i.inputValue().length&&(e=t[i.caretPos]),void 0!==e&&l.push(e)}if(!i.shouldDelete(l,t))return!1
for(st(t,!0),void 0!==e&&i.setCaret(e);l.length;)i.removeItem(l.pop())
return i.showInput(),i.positionDropdown(),i.refreshOptions(!1),!0}shouldDelete(t,e){const s=t.map((t=>t.dataset.value))
return!(!s.length||"function"==typeof this.settings.onDelete&&!1===this.settings.onDelete(s,e))}advanceSelection(t,e){const s=this
let i,n
s.rtl&&(t*=-1),s.inputValue().length||(nt(J,e)||nt("shiftKey",e)?(i=s.getLastActive(t),n=i?i.classList.contains("active")?s.getAdjacent(i,t,"item"):i:t>0?s.control_input.nextElementSibling:s.control_input.previousElementSibling,n&&(n.classList.contains("active")&&s.removeActiveItem(i),s.setActiveItemClass(n))):s.moveCaret(t))}moveCaret(t){}getLastActive(t){const e=this.control.querySelector(".last-active")
if(e)return e
const s=this.control.querySelectorAll(".active")
return s?R(s,t):void 0}setCaret(t){this.caretPos=this.items.length}controlChildren(){return Array.from(this.control.querySelectorAll("[data-ts-item]"))}lock(){this.isLocked=!0,this.refreshState()}unlock(){this.isLocked=!1,this.refreshState()}disable(){const t=this
t.input.disabled=!0,t.control_input.disabled=!0,t.focus_node.tabIndex=-1,t.isDisabled=!0,this.close(),t.lock()}enable(){const t=this
t.input.disabled=!1,t.control_input.disabled=!1,t.focus_node.tabIndex=t.tabIndex,t.isDisabled=!1,t.unlock()}destroy(){const t=this,e=t.revertSettings
t.trigger("destroy"),t.off(),t.wrapper.remove(),t.dropdown.remove(),t.input.innerHTML=e.innerHTML,t.input.tabIndex=e.tabIndex,H(t.input,"tomselected","ts-hidden-accessible"),t._destroy(),delete t.input.tomselect}render(t,e){let s,i
const n=this
if("function"!=typeof this.settings.render[t])return null
if(i=n.settings.render[t].call(this,e,Z),!i)return null
if(i=j(i),"option"===t||"option_create"===t?e[n.settings.disabledField]?Q(i,{"aria-disabled":"true"}):Q(i,{"data-selectable":""}):"optgroup"===t&&(s=e.group[n.settings.optgroupValueField],Q(i,{"data-group":s}),e.group[n.settings.disabledField]&&Q(i,{"data-disabled":""})),"option"===t||"item"===t){const s=Y(e[n.settings.valueField])
Q(i,{"data-value":s}),"item"===t?(N(i,n.settings.itemClass),Q(i,{"data-ts-item":"",id:`${e.$id}-item`})):(N(i,n.settings.optionClass),Q(i,{role:"option",id:e.$id}),e.$div=i,n.options[s]=e)}return i}_render(t,e){const s=this.render(t,e)
if(null==s)throw"HTMLElement expected"
return s}clearCache(){E(this.options,(t=>{t.$div&&(t.$div.remove(),delete t.$div)}))}uncacheValue(t){const e=this.getOption(t)
e&&e.remove()}canCreate(t){return this.settings.create&&t.length>0&&this.settings.createFilter.call(this,t)}hook(t,e,s){const i=this,n=i[e]
i[e]=function(){let e
"after"===t&&(e=n.apply(i,arguments))
const o=s.apply(i,arguments)
return"instead"===t?o:("before"===t&&(e=n.apply(i,arguments)),e)}}}const ut=window.jQuery
return dt.define("change_listener",(function(){it(this.input,"change",(()=>{this.sync()}))})),dt.define("checkbox_options",(function(){const t=this,e=t.onOptionSelect
t.settings.hideSelected=!1
const s=function(t){setTimeout((()=>{const e=t.querySelector("input")
e instanceof HTMLInputElement&&(t.classList.contains("selected")?e.checked=!0:e.checked=!1)}),1)}
t.hook("after","setupTemplates",(()=>{const e=t.settings.render.option
t.settings.render.option=(s,i)=>{const n=j(e.call(t,s,i)),o=document.createElement("input")
o.addEventListener("click",(function(t){st(t)})),o.type="checkbox"
const r=X(s[t.settings.valueField])
return r&&t.items.indexOf(r)>-1&&(o.checked=!0),n.prepend(o),n}})),t.on("item_remove",(e=>{const i=t.getOption(e)
i&&(i.classList.remove("selected"),s(i))})),t.on("item_add",(e=>{const i=t.getOption(e)
i&&s(i)})),t.hook("instead","onOptionSelect",((i,n)=>{if(n.classList.contains("selected"))return n.classList.remove("selected"),t.removeItem(n.dataset.value),t.refreshOptions(),void st(i,!0)
e.call(t,i,n),s(n)}))})),dt.define("clear_button",(function(t){const e=this,s=Object.assign({className:"clear-button",title:"Clear All",html:t=>`<div class="${t.className}" title="${t.title}">&#10799;</div>`},t)
e.on("initialize",(()=>{const t=j(s.html(s))
t.addEventListener("click",(t=>{e.isDisabled||(e.clear(),"single"===e.settings.mode&&e.settings.allowEmptyOption&&e.addItem(""),t.preventDefault(),t.stopPropagation())})),e.control.appendChild(t)}))})),dt.define("drag_drop",(function(){const t=this
if(!ut.fn.sortable)throw new Error('The "drag_drop" plugin requires jQuery UI "sortable".')
if("multi"!==t.settings.mode)return
const e=t.lock,s=t.unlock
t.hook("instead","lock",(()=>{const s=ut(t.control).data("sortable")
return s&&s.disable(),e.call(t)})),t.hook("instead","unlock",(()=>{const e=ut(t.control).data("sortable")
return e&&e.enable(),s.call(t)})),t.on("initialize",(()=>{const e=ut(t.control).sortable({items:"[data-value]",forcePlaceholderSize:!0,disabled:t.isLocked,start:(t,s)=>{s.placeholder.css("width",s.helper.css("width")),e.css({overflow:"visible"})},stop:()=>{e.css({overflow:"hidden"})
const s=[]
e.children("[data-value]").each((function(){this.dataset.value&&s.push(this.dataset.value)})),t.setValue(s)}})}))})),dt.define("dropdown_header",(function(t){const e=this,s=Object.assign({title:"Untitled",headerClass:"dropdown-header",titleRowClass:"dropdown-header-title",labelClass:"dropdown-header-label",closeClass:"dropdown-header-close",html:t=>'<div class="'+t.headerClass+'"><div class="'+t.titleRowClass+'"><span class="'+t.labelClass+'">'+t.title+'</span><a class="'+t.closeClass+'">&times;</a></div></div>'},t)
e.on("initialize",(()=>{const t=j(s.html(s)),i=t.querySelector("."+s.closeClass)
i&&i.addEventListener("click",(t=>{st(t,!0),e.close()})),e.dropdown.insertBefore(t,e.dropdown.firstChild)}))})),dt.define("caret_position",(function(){const t=this
t.hook("instead","setCaret",(e=>{"single"!==t.settings.mode&&t.control.contains(t.control_input)?(e=Math.max(0,Math.min(t.items.length,e)))==t.caretPos||t.isPending||t.controlChildren().forEach(((s,i)=>{i<e?t.control_input.insertAdjacentElement("beforebegin",s):t.control.appendChild(s)})):e=t.items.length,t.caretPos=e})),t.hook("instead","moveCaret",(e=>{if(!t.isFocused)return
const s=t.getLastActive(e)
if(s){const i=K(s)
t.setCaret(e>0?i+1:i),t.setActiveItem(),H(s,"last-active")}else t.setCaret(t.caretPos+e)}))})),dt.define("dropdown_input",(function(){const t=this
t.settings.shouldOpen=!0,t.hook("before","setup",(()=>{t.focus_node=t.control,N(t.control_input,"dropdown-input")
const e=j('<div class="dropdown-input-wrap">')
e.append(t.control_input),t.dropdown.insertBefore(e,t.dropdown.firstChild)
const s=j('<input class="items-placeholder" tabindex="-1" />')
s.placeholder=t.settings.placeholder||"",t.control.append(s)})),t.on("initialize",(()=>{t.control_input.addEventListener("keydown",(e=>{switch(e.keyCode){case 27:return t.isOpen&&(st(e,!0),t.close()),void t.clearActiveItems()
case 9:t.focus_node.tabIndex=-1}return t.onKeyDown.call(t,e)})),t.on("blur",(()=>{t.focus_node.tabIndex=t.isDisabled?-1:t.tabIndex})),t.on("dropdown_open",(()=>{t.control_input.focus()}))
const e=t.onBlur
t.hook("instead","onBlur",(s=>{if(!s||s.relatedTarget!=t.control_input)return e.call(t)})),it(t.control_input,"blur",(()=>t.onBlur())),t.hook("before","close",(()=>{t.isOpen&&t.focus_node.focus({preventScroll:!0})}))}))})),dt.define("input_autogrow",(function(){const t=this
t.on("initialize",(()=>{const e=document.createElement("span"),s=t.control_input
e.style.cssText="position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ",t.wrapper.appendChild(e)
const i=["letterSpacing","fontSize","fontFamily","fontWeight","textTransform"]
for(const t of i)e.style[t]=s.style[t]
const n=()=>{e.textContent=s.value,s.style.width=e.clientWidth+"px"}
n(),t.on("update item_add item_remove",n),it(s,"input",n),it(s,"keyup",n),it(s,"blur",n),it(s,"update",n)}))})),dt.define("no_backspace_delete",(function(){const t=this,e=t.deleteSelection
this.hook("instead","deleteSelection",(s=>!!t.activeItems.length&&e.call(t,s)))})),dt.define("no_active_items",(function(){this.hook("instead","setActiveItem",(()=>{})),this.hook("instead","selectAll",(()=>{}))})),dt.define("optgroup_columns",(function(){const t=this,e=t.onKeyDown
t.hook("instead","onKeyDown",(s=>{let i
if(!t.isOpen||37!==s.keyCode&&39!==s.keyCode)return e.call(t,s)
t.ignoreHover=!0,i=z(t.activeOption,"[data-group]")
const n=K(t.activeOption,"[data-selectable]")
if(!i)return
if(i=37===s.keyCode?i.previousSibling:i.nextSibling,!i)return
const o=i.querySelectorAll("[data-selectable]"),r=o[Math.min(o.length-1,n)]
r&&t.setActiveOption(r)}))})),dt.define("remove_button",(function(t){const e=Object.assign({label:"&times;",title:"Remove",className:"remove",append:!0,tabindex:"0"},t),s=this
if(!e.append)return
const i='<a href="javascript:void(0)" class="'+e.className+'" tabindex="'+e.tabindex+'" title="'+Z(e.title)+'">'+e.label+"</a>"
s.hook("after","setupTemplates",(()=>{const t=s.settings.render.item
s.settings.render.item=(e,n)=>{const o=j(t.call(s,e,n)),r=j(i)
return o.appendChild(r),it(r,"mousedown",(t=>{st(t,!0)})),it(r,"click",(t=>{st(t,!0),s.isLocked||s.shouldDelete([o],t)&&(s.removeItem(o),s.refreshOptions(!1),s.inputState())})),o}}))})),dt.define("restore_on_backspace",(function(t){const e=this,s=Object.assign({text:t=>t[e.settings.labelField]},t)
e.on("item_remove",(function(t){if(e.isFocused&&""===e.control_input.value.trim()){const i=e.options[t]
i&&e.setTextboxValue(s.text.call(e,i))}}))})),dt.define("virtual_scroll",(function(){const t=this,e=t.canLoad,s=t.clearActiveOption,i=t.loadCallback
let n,o,r={},l=!1,a=[]
if(t.settings.shouldLoadMore||(t.settings.shouldLoadMore=()=>{if(n.clientHeight/(n.scrollHeight-n.scrollTop)>.9)return!0
if(t.activeOption){const e=t.selectable()
if(Array.from(e).indexOf(t.activeOption)>=e.length-2)return!0}return!1}),!t.settings.firstUrl)throw"virtual_scroll plugin requires a firstUrl() method"
t.settings.sortField=[{field:"$order"},{field:"$score"}]
const c=e=>!("number"==typeof t.settings.maxOptions&&n.children.length>=t.settings.maxOptions)&&!(!(e in r)||!r[e]),d=(e,s)=>t.items.indexOf(s)>=0||a.indexOf(s)>=0
t.setNextUrl=(t,e)=>{r[t]=e},t.getUrl=e=>{if(e in r){const t=r[e]
return r[e]=!1,t}return r={},t.settings.firstUrl.call(t,e)},t.hook("instead","clearActiveOption",(()=>{if(!l)return s.call(t)})),t.hook("instead","canLoad",(s=>s in r?c(s):e.call(t,s))),t.hook("instead","loadCallback",((e,s)=>{if(l){if(o){const s=e[0]
void 0!==s&&(o.dataset.value=s[t.settings.valueField])}}else t.clearOptions(d)
i.call(t,e,s),l=!1})),t.hook("after","refreshOptions",(()=>{const e=t.lastValue
let s
c(e)?(s=t.render("loading_more",{query:e}),s&&(s.setAttribute("data-selectable",""),o=s)):e in r&&!n.querySelector(".no-results")&&(s=t.render("no_more_results",{query:e})),s&&(N(s,t.settings.optionClass),n.append(s))})),t.on("initialize",(()=>{a=Object.keys(t.options),n=t.dropdown_content,t.settings.render=Object.assign({},{loading_more:()=>'<div class="loading-more-results">Loading more results ... </div>',no_more_results:()=>'<div class="no-more-results">No more results</div>'},t.settings.render),n.addEventListener("scroll",(()=>{if(!t.settings.shouldLoadMore.call(t))return
if(!c(t.lastValue))return
if(l)return
const e=n.scrollTop
l=!0,t.load.call(t,t.lastValue)
const s=new MutationObserver((()=>{n.scrollTop=e+10,s.disconnect()}))
s.observe(n,{childList:!0,subtree:!0})}))}))})),dt}))
var tomSelect=function(t,e){return new TomSelect(t,e)}
//# sourceMappingURL=tom-select.complete.min.js.map
