From 84924923c077da5069f140d4cb39158404d71d08 Mon Sep 17 00:00:00 2001 From: Ruben Fileti Date: Wed, 26 Jun 2024 14:41:10 +0200 Subject: [PATCH] Fixes for API backcompatibility --- dist/index.d.ts | 2 +- dist/slimselect.cjs.js | 24 +- dist/slimselect.es.js | 24 +- dist/slimselect.global.js | 24 +- dist/slimselect.js | 24 +- dist/slimselect.min.js | 2 +- dist/slimselect.umd.js | 24 +- dist/slimselect.umd.min.js | 2 +- docs/assets/index.js | 2 +- src/slim-select/index.ts | 22 +- src/vue/dist/slim-select/helpers.d.ts | 14 +- src/vue/dist/slim-select/index.d.ts | 80 +-- src/vue/dist/slim-select/render.d.ts | 220 ++++---- src/vue/dist/slim-select/select.d.ts | 54 +- src/vue/dist/slim-select/settings.d.ts | 62 +-- src/vue/dist/slim-select/store.d.ts | 141 +++-- src/vue/dist/slimselectvue.es.js | 24 +- src/vue/dist/slimselectvue.global.js | 24 +- src/vue/dist/slimselectvue.ssr.js | 24 +- src/vue/dist/vue/hello.d.ts | 4 +- src/vue/dist/vue/slimselect.vue.d.ts | 683 ++++++++++++------------- 21 files changed, 765 insertions(+), 715 deletions(-) diff --git a/dist/index.d.ts b/dist/index.d.ts index 4296bbe5..4e3fcedf 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -33,7 +33,7 @@ export default class SlimSelect { getData(): DataArray; setData(data: DataArrayPartial): void; getSelected(): string[]; - setSelected(id: string | string[], runAfterChange?: boolean): void; + setSelected(values: string | string[], runAfterChange?: boolean): void; addOption(option: OptionOptional): void; open(): void; close(eventType?: string | null): void; diff --git a/dist/slimselect.cjs.js b/dist/slimselect.cjs.js index 67ac8a6c..00e1ef5f 100644 --- a/dist/slimselect.cjs.js +++ b/dist/slimselect.cjs.js @@ -185,7 +185,7 @@ class Store { } } getSelected() { - return this.getSelectedOptions().map(option => option.id); + return this.getSelectedOptions().map((option) => option.id); } getSelectedOptions() { return this.filter((opt) => { @@ -1399,7 +1399,7 @@ class Select { return options; } getSelectedValues() { - return this.getSelectedOptions().map(option => option.value); + return this.getSelectedOptions().map((option) => option.value); } setSelected(ids) { this.changeListen(false); @@ -1636,7 +1636,7 @@ class SlimSelect { this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class); this.select.hideUI(); this.select.onValueChange = (options) => { - this.setSelected(options.map(option => option.id)); + this.setSelected(options.map((option) => option.id)); }; this.select.onClassChange = (classes) => { this.settings.class = classes; @@ -1726,11 +1726,23 @@ class SlimSelect { } } getSelected() { - return this.store.getSelected(); + return this.store.getSelectedOptions().map((option) => option.value); } - setSelected(id, runAfterChange = true) { + setSelected(values, runAfterChange = true) { const selected = this.store.getSelected(); - this.store.setSelectedBy('id', Array.isArray(id) ? id : [id]); + const options = this.store.getDataOptions(); + values = Array.isArray(values) ? values : [values]; + const ids = []; + for (const value of values) { + if (options.find((option) => option.id == value)) { + ids.push(value); + continue; + } + for (const option of options.filter((option) => option.value == value)) { + ids.push(option.id); + } + } + this.store.setSelectedBy('id', ids); const data = this.store.getData(); this.select.updateOptions(data); this.render.renderValues(); diff --git a/dist/slimselect.es.js b/dist/slimselect.es.js index 8ad9e3eb..9258dd49 100644 --- a/dist/slimselect.es.js +++ b/dist/slimselect.es.js @@ -183,7 +183,7 @@ class Store { } } getSelected() { - return this.getSelectedOptions().map(option => option.id); + return this.getSelectedOptions().map((option) => option.id); } getSelectedOptions() { return this.filter((opt) => { @@ -1397,7 +1397,7 @@ class Select { return options; } getSelectedValues() { - return this.getSelectedOptions().map(option => option.value); + return this.getSelectedOptions().map((option) => option.value); } setSelected(ids) { this.changeListen(false); @@ -1634,7 +1634,7 @@ class SlimSelect { this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class); this.select.hideUI(); this.select.onValueChange = (options) => { - this.setSelected(options.map(option => option.id)); + this.setSelected(options.map((option) => option.id)); }; this.select.onClassChange = (classes) => { this.settings.class = classes; @@ -1724,11 +1724,23 @@ class SlimSelect { } } getSelected() { - return this.store.getSelected(); + return this.store.getSelectedOptions().map((option) => option.value); } - setSelected(id, runAfterChange = true) { + setSelected(values, runAfterChange = true) { const selected = this.store.getSelected(); - this.store.setSelectedBy('id', Array.isArray(id) ? id : [id]); + const options = this.store.getDataOptions(); + values = Array.isArray(values) ? values : [values]; + const ids = []; + for (const value of values) { + if (options.find((option) => option.id == value)) { + ids.push(value); + continue; + } + for (const option of options.filter((option) => option.value == value)) { + ids.push(option.id); + } + } + this.store.setSelectedBy('id', ids); const data = this.store.getData(); this.select.updateOptions(data); this.render.renderValues(); diff --git a/dist/slimselect.global.js b/dist/slimselect.global.js index a2bc1a77..4139b6d3 100644 --- a/dist/slimselect.global.js +++ b/dist/slimselect.global.js @@ -186,7 +186,7 @@ var SlimSelect = (function () { } } getSelected() { - return this.getSelectedOptions().map(option => option.id); + return this.getSelectedOptions().map((option) => option.id); } getSelectedOptions() { return this.filter((opt) => { @@ -1400,7 +1400,7 @@ var SlimSelect = (function () { return options; } getSelectedValues() { - return this.getSelectedOptions().map(option => option.value); + return this.getSelectedOptions().map((option) => option.value); } setSelected(ids) { this.changeListen(false); @@ -1637,7 +1637,7 @@ var SlimSelect = (function () { this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class); this.select.hideUI(); this.select.onValueChange = (options) => { - this.setSelected(options.map(option => option.id)); + this.setSelected(options.map((option) => option.id)); }; this.select.onClassChange = (classes) => { this.settings.class = classes; @@ -1727,11 +1727,23 @@ var SlimSelect = (function () { } } getSelected() { - return this.store.getSelected(); + return this.store.getSelectedOptions().map((option) => option.value); } - setSelected(id, runAfterChange = true) { + setSelected(values, runAfterChange = true) { const selected = this.store.getSelected(); - this.store.setSelectedBy('id', Array.isArray(id) ? id : [id]); + const options = this.store.getDataOptions(); + values = Array.isArray(values) ? values : [values]; + const ids = []; + for (const value of values) { + if (options.find((option) => option.id == value)) { + ids.push(value); + continue; + } + for (const option of options.filter((option) => option.value == value)) { + ids.push(option.id); + } + } + this.store.setSelectedBy('id', ids); const data = this.store.getData(); this.select.updateOptions(data); this.render.renderValues(); diff --git a/dist/slimselect.js b/dist/slimselect.js index 0e8ad964..1f31de2e 100644 --- a/dist/slimselect.js +++ b/dist/slimselect.js @@ -189,7 +189,7 @@ } } getSelected() { - return this.getSelectedOptions().map(option => option.id); + return this.getSelectedOptions().map((option) => option.id); } getSelectedOptions() { return this.filter((opt) => { @@ -1403,7 +1403,7 @@ return options; } getSelectedValues() { - return this.getSelectedOptions().map(option => option.value); + return this.getSelectedOptions().map((option) => option.value); } setSelected(ids) { this.changeListen(false); @@ -1640,7 +1640,7 @@ this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class); this.select.hideUI(); this.select.onValueChange = (options) => { - this.setSelected(options.map(option => option.id)); + this.setSelected(options.map((option) => option.id)); }; this.select.onClassChange = (classes) => { this.settings.class = classes; @@ -1730,11 +1730,23 @@ } } getSelected() { - return this.store.getSelected(); + return this.store.getSelectedOptions().map((option) => option.value); } - setSelected(id, runAfterChange = true) { + setSelected(values, runAfterChange = true) { const selected = this.store.getSelected(); - this.store.setSelectedBy('id', Array.isArray(id) ? id : [id]); + const options = this.store.getDataOptions(); + values = Array.isArray(values) ? values : [values]; + const ids = []; + for (const value of values) { + if (options.find((option) => option.id == value)) { + ids.push(value); + continue; + } + for (const option of options.filter((option) => option.value == value)) { + ids.push(option.id); + } + } + this.store.setSelectedBy('id', ids); const data = this.store.getData(); this.select.updateOptions(data); this.render.renderValues(); diff --git a/dist/slimselect.min.js b/dist/slimselect.min.js index 8fde4b4e..b8ae4226 100644 --- a/dist/slimselect.min.js +++ b/dist/slimselect.min.js @@ -1 +1 @@ -!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).SlimSelect=e()}(this,(function(){"use strict";function t(){return Math.random().toString(36).substring(2,10)}function e(t,e=50,s=!1){let i;return function(...n){const a=self,l=s&&!i;clearTimeout(i),i=setTimeout((()=>{i=null,s||t.apply(a,n)}),e),l&&t.apply(a,n)}}function s(t,e){return JSON.stringify(t)===JSON.stringify(e)}class i{constructor(e){if(this.id=e.id&&""!==e.id?e.id:t(),this.label=e.label||"",this.selectAll=void 0!==e.selectAll&&e.selectAll,this.selectAllText=e.selectAllText||"Select All",this.closable=e.closable||"off",this.options=[],e.options)for(const t of e.options)this.options.push(new n(t))}}class n{constructor(e){this.id=e.id&&""!==e.id?e.id:t(),this.value=void 0===e.value?e.text:e.value,this.text=e.text||"",this.html=e.html||"",this.selected=void 0!==e.selected&&e.selected,this.display=void 0===e.display||e.display,this.disabled=void 0!==e.disabled&&e.disabled,this.mandatory=void 0!==e.mandatory&&e.mandatory,this.placeholder=void 0!==e.placeholder&&e.placeholder,this.class=e.class||"",this.style=e.style||"",this.data=e.data||{}}}class a{constructor(t,e){this.selectType="single",this.data=[],this.selectType=t,this.setData(e)}validateDataArray(t){if(!Array.isArray(t))return new Error("Data must be an array");for(let e of t){if(!(e instanceof i||"label"in e))return e instanceof n||"text"in e?this.validateOption(e):new Error("Data object must be a valid optgroup or option");if(!("label"in e))return new Error("Optgroup must have a label");if("options"in e&&e.options)for(let t of e.options)return this.validateOption(t)}return null}validateOption(t){return"text"in t?null:new Error("Option must have a text")}partialToFullData(t){let e=[];return t.forEach((t=>{if(t instanceof i||"label"in t){let s=[];"options"in t&&t.options&&t.options.forEach((t=>{s.push(new n(t))})),s.length>0&&e.push(new i(t))}(t instanceof n||"text"in t)&&e.push(new n(t))})),e}setData(t){this.data=this.partialToFullData(t),"single"===this.selectType&&this.setSelectedBy("id",this.getSelected())}getData(){return this.filter(null,!0)}getDataOptions(){return this.filter(null,!1)}addOption(t){this.setData(this.getData().concat(new n(t)))}setSelectedBy(t,e){let s=null,a=!1;for(let l of this.data){if(l instanceof i)for(let i of l.options)s||(s=i),i.selected=!a&&e.includes(i[t]),i.selected&&"single"===this.selectType&&(a=!0);l instanceof n&&(s||(s=l),l.selected=!a&&e.includes(l[t]),l.selected&&"single"===this.selectType&&(a=!0))}"single"===this.selectType&&s&&!a&&(s.selected=!0)}getSelected(){return this.getSelectedOptions().map((t=>t.id))}getSelectedOptions(){return this.filter((t=>t.selected),!1)}getOptgroupByID(t){for(let e of this.data)if(e instanceof i&&e.id===t)return e;return null}getOptionByID(t){let e=this.filter((e=>e.id===t),!1);return e.length?e[0]:null}getSelectType(){return this.selectType}getFirstOption(){let t=null;for(let e of this.data)if(e instanceof i?t=e.options[0]:e instanceof n&&(t=e),t)break;return t}search(t,e){return""===(t=t.trim())?this.getData():this.filter((s=>e(s,t)),!0)}filter(t,e){const s=[];return this.data.forEach((a=>{if(a instanceof i){let l=[];if(a.options.forEach((i=>{t&&!t(i)||(e?l.push(new n(i)):s.push(new n(i)))})),l.length>0){let t=new i(a);t.options=l,s.push(t)}}a instanceof n&&(t&&!t(a)||s.push(new n(a)))})),s}}class l{constructor(t,e,s){this.classes={main:"ss-main",placeholder:"ss-placeholder",values:"ss-values",single:"ss-single",max:"ss-max",value:"ss-value",valueText:"ss-value-text",valueDelete:"ss-value-delete",valueOut:"ss-value-out",deselect:"ss-deselect",deselectPath:"M10,10 L90,90 M10,90 L90,10",arrow:"ss-arrow",arrowClose:"M10,30 L50,70 L90,30",arrowOpen:"M10,70 L50,30 L90,70",content:"ss-content",openAbove:"ss-open-above",openBelow:"ss-open-below",search:"ss-search",searchHighlighter:"ss-search-highlight",searching:"ss-searching",addable:"ss-addable",addablePath:"M50,10 L50,90 M10,50 L90,50",list:"ss-list",optgroup:"ss-optgroup",optgroupLabel:"ss-optgroup-label",optgroupLabelText:"ss-optgroup-label-text",optgroupActions:"ss-optgroup-actions",optgroupSelectAll:"ss-selectall",optgroupSelectAllBox:"M60,10 L10,10 L10,90 L90,90 L90,50",optgroupSelectAllCheck:"M30,45 L50,70 L90,10",optgroupClosable:"ss-closable",option:"ss-option",optionDelete:"M10,10 L90,90 M10,90 L90,10",highlighted:"ss-highlighted",open:"ss-open",close:"ss-close",selected:"ss-selected",error:"ss-error",disabled:"ss-disabled",hide:"ss-hide"},this.store=e,this.settings=t,this.callbacks=s,this.main=this.mainDiv(),this.content=this.contentDiv(),this.updateClassStyles(),this.updateAriaAttributes(),this.settings.contentLocation.appendChild(this.content.main)}enable(){this.main.main.classList.remove(this.classes.disabled),this.content.search.input.disabled=!1}disable(){this.main.main.classList.add(this.classes.disabled),this.content.search.input.disabled=!0}open(){this.main.arrow.path.setAttribute("d",this.classes.arrowOpen),this.main.main.classList.add("up"===this.settings.openPosition?this.classes.openAbove:this.classes.openBelow),this.main.main.setAttribute("aria-expanded","true"),this.moveContent();const t=this.store.getSelectedOptions();if(t.length){const e=t[t.length-1].id,s=this.content.list.querySelector('[data-id="'+e+'"]');s&&this.ensureElementInView(this.content.list,s)}}close(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.remove(this.classes.openBelow),this.main.main.setAttribute("aria-expanded","false"),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.main.arrow.path.setAttribute("d",this.classes.arrowClose)}updateClassStyles(){if(this.main.main.className="",this.main.main.removeAttribute("style"),this.content.main.className="",this.content.main.removeAttribute("style"),this.main.main.classList.add(this.classes.main),this.content.main.classList.add(this.classes.content),""!==this.settings.style&&(this.main.main.style.cssText=this.settings.style,this.content.main.style.cssText=this.settings.style),this.settings.class.length)for(const t of this.settings.class)""!==t.trim()&&(this.main.main.classList.add(t.trim()),this.content.main.classList.add(t.trim()));"relative"===this.settings.contentPosition&&this.content.main.classList.add("ss-"+this.settings.contentPosition)}updateAriaAttributes(){this.main.main.role="combobox",this.main.main.setAttribute("aria-haspopup","listbox"),this.main.main.setAttribute("aria-controls",this.content.main.id),this.main.main.setAttribute("aria-expanded","false"),this.content.main.setAttribute("role","listbox")}mainDiv(){var t;const e=document.createElement("div");e.dataset.id=this.settings.id,e.setAttribute("aria-label",this.settings.ariaLabel),e.tabIndex=0,e.onkeydown=t=>{switch(t.key){case"ArrowUp":case"ArrowDown":return this.callbacks.open(),"ArrowDown"===t.key?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Enter":case" ":this.callbacks.open();const e=this.content.list.querySelector("."+this.classes.highlighted);return e&&e.click(),!1;case"Escape":return this.callbacks.close(),!1}return!1},e.onclick=t=>{this.settings.disabled||(this.settings.isOpen?this.callbacks.close():this.callbacks.open())};const s=document.createElement("div");s.classList.add(this.classes.values),e.appendChild(s);const i=document.createElement("div");i.classList.add(this.classes.deselect);const n=null===(t=this.store)||void 0===t?void 0:t.getSelectedOptions();!this.settings.allowDeselect||this.settings.isMultiple&&n&&n.length<=0?i.classList.add(this.classes.hide):i.classList.remove(this.classes.hide),i.onclick=t=>{if(t.stopPropagation(),this.settings.disabled)return;let e=!0;const s=this.store.getSelectedOptions(),i=[];if(this.callbacks.beforeChange&&(e=!0===this.callbacks.beforeChange(i,s)),e){if(this.settings.isMultiple)this.callbacks.setSelected([],!1),this.updateDeselectAll();else{const t=this.store.getFirstOption(),e=t?t.id:"";this.callbacks.setSelected(e,!1)}this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(this.store.getSelectedOptions())}};const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100");const l=document.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("d",this.classes.deselectPath),a.appendChild(l),i.appendChild(a),e.appendChild(i);const o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.classList.add(this.classes.arrow),o.setAttribute("viewBox","0 0 100 100");const c=document.createElementNS("http://www.w3.org/2000/svg","path");return c.setAttribute("d",this.classes.arrowClose),this.settings.alwaysOpen&&o.classList.add(this.classes.hide),o.appendChild(c),e.appendChild(o),{main:e,values:s,deselect:{main:i,svg:a,path:l},arrow:{main:o,path:c}}}mainFocus(t){"click"!==t&&this.main.main.focus({preventScroll:!0})}placeholder(){const t=this.store.filter((t=>t.placeholder),!1);let e=this.settings.placeholderText;t.length&&(""!==t[0].html?e=t[0].html:""!==t[0].text&&(e=t[0].text));const s=document.createElement("div");return s.classList.add(this.classes.placeholder),s.innerHTML=e,s}renderValues(){this.settings.isMultiple?(this.renderMultipleValues(),this.updateDeselectAll()):this.renderSingleValue()}renderSingleValue(){const t=this.store.filter((t=>t.selected&&!t.placeholder),!1),e=t.length>0?t[0]:null;if(e){const t=document.createElement("div");t.classList.add(this.classes.single),e.html?t.innerHTML=e.html:t.innerText=e.text,this.main.values.innerHTML=t.outerHTML}else this.main.values.innerHTML=this.placeholder().outerHTML;this.settings.allowDeselect&&t.length?this.main.deselect.main.classList.remove(this.classes.hide):this.main.deselect.main.classList.add(this.classes.hide)}renderMultipleValues(){let t=this.main.values.childNodes,e=this.store.filter((t=>t.selected&&t.display),!1);if(0===e.length)return void(this.main.values.innerHTML=this.placeholder().outerHTML);{const t=this.main.values.querySelector("."+this.classes.placeholder);t&&t.remove()}if(e.length>this.settings.maxValuesShown){const t=document.createElement("div");return t.classList.add(this.classes.max),t.textContent=this.settings.maxValuesMessage.replace("{number}",e.length.toString()),void(this.main.values.innerHTML=t.outerHTML)}{const t=this.main.values.querySelector("."+this.classes.max);t&&t.remove()}let s=[];for(let i=0;it.id===a),!1).length||s.push(n)}}for(const t of s)t.classList.add(this.classes.valueOut),setTimeout((()=>{this.main.values.hasChildNodes()&&this.main.values.contains(t)&&this.main.values.removeChild(t)}),100);t=this.main.values.childNodes;for(let s=0;s{if(e.preventDefault(),e.stopPropagation(),this.settings.disabled)return;let s=!0;const a=this.store.getSelectedOptions(),l=a.filter((e=>e.selected&&e.id!==t.id),!0);if(!(this.settings.minSelected&&l.length{this.callbacks.search(t.target.value)}),100),s.onkeydown=t=>{switch(t.key){case"ArrowUp":case"ArrowDown":return"ArrowDown"===t.key?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Escape":return this.callbacks.close(),!1;case"Enter":case" ":if(this.callbacks.addable&&t.ctrlKey)return i.click(),!1;{const t=this.content.list.querySelector("."+this.classes.highlighted);if(t)return t.click(),!1}return!0}return!0},t.appendChild(s),this.callbacks.addable){i.classList.add(this.classes.addable);const e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttribute("viewBox","0 0 100 100");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("d",this.classes.addablePath),e.appendChild(s),i.appendChild(e),i.onclick=t=>{if(t.preventDefault(),t.stopPropagation(),!this.callbacks.addable)return;const e=this.content.search.input.value.trim();if(""===e)return void this.content.search.input.focus();const s=t=>{let e=new n(t);if(this.callbacks.addOption(e),this.settings.isMultiple){let t=this.store.getSelected();t.push(e.id),this.callbacks.setSelected(t,!0)}else this.callbacks.setSelected([e.id],!0);this.callbacks.search(""),this.settings.closeOnSelect&&setTimeout((()=>{this.callbacks.close()}),100)},i=this.callbacks.addable(e);!1!==i&&null!=i&&(i instanceof Promise?i.then((t=>{s("string"==typeof t?{text:t,value:t}:t)})):s("string"==typeof i?{text:i,value:i}:i))},t.appendChild(i),a.addable={main:i,svg:e,path:s}}return a}searchFocus(){this.content.search.input.focus()}getOptions(t=!1,e=!1,s=!1){let i="."+this.classes.option;return t&&(i+=":not(."+this.classes.placeholder+")"),e&&(i+=":not(."+this.classes.disabled+")"),s&&(i+=":not(."+this.classes.hide+")"),Array.from(this.content.list.querySelectorAll(i))}highlight(t){const e=this.getOptions(!0,!0,!0);if(0===e.length)return;if(1===e.length&&!e[0].classList.contains(this.classes.highlighted))return void e[0].classList.add(this.classes.highlighted);let s=!1;for(const t of e)t.classList.contains(this.classes.highlighted)&&(s=!0);if(!s)for(const t of e)if(t.classList.contains(this.classes.selected)){t.classList.add(this.classes.highlighted);break}for(let s=0;s=0?s-1:e.length-1];a.classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,a);const l=a.parentElement;if(l&&l.classList.contains(this.classes.close)){const t=l.querySelector("."+this.classes.optgroupLabel);t&&t.click()}return}e["down"===t?0:e.length-1].classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,e["down"===t?0:e.length-1])}listDiv(){const t=document.createElement("div");return t.classList.add(this.classes.list),t}renderError(t){this.content.list.innerHTML="";const e=document.createElement("div");e.classList.add(this.classes.error),e.textContent=t,this.content.list.appendChild(e)}renderSearching(){this.content.list.innerHTML="";const t=document.createElement("div");t.classList.add(this.classes.searching),t.textContent=this.settings.searchingText,this.content.list.appendChild(t)}renderOptions(t){if(this.content.list.innerHTML="",0===t.length){const t=document.createElement("div");return t.classList.add(this.classes.search),t.innerHTML=this.settings.searchText,void this.content.list.appendChild(t)}for(const e of t){if(e instanceof i){const t=document.createElement("div");t.classList.add(this.classes.optgroup);const s=document.createElement("div");s.classList.add(this.classes.optgroupLabel),t.appendChild(s);const i=document.createElement("div");i.classList.add(this.classes.optgroupLabelText),i.textContent=e.label,s.appendChild(i);const n=document.createElement("div");if(n.classList.add(this.classes.optgroupActions),s.appendChild(n),this.settings.isMultiple&&e.selectAll){const t=document.createElement("div");t.classList.add(this.classes.optgroupSelectAll);let s=!0;for(const t of e.options)if(!t.selected){s=!1;break}s&&t.classList.add(this.classes.selected);const i=document.createElement("span");i.textContent=e.selectAllText,t.appendChild(i);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),t.appendChild(a);const l=document.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("d",this.classes.optgroupSelectAllBox),a.appendChild(l);const o=document.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d",this.classes.optgroupSelectAllCheck),a.appendChild(o),t.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation();const i=this.store.getSelected();if(s){const t=i.filter((t=>{for(const s of e.options)if(t===s.id)return!1;return!0}));this.callbacks.setSelected(t,!0)}else{const t=i.concat(e.options.map((t=>t.id)));for(const t of e.options)this.store.getOptionByID(t.id)||this.callbacks.addOption(t);this.callbacks.setSelected(t,!0)}})),n.appendChild(t)}if("off"!==e.closable){const i=document.createElement("div");i.classList.add(this.classes.optgroupClosable);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),a.classList.add(this.classes.arrow),i.appendChild(a);const l=document.createElementNS("http://www.w3.org/2000/svg","path");a.appendChild(l),e.options.some((t=>t.selected))||""!==this.content.search.input.value.trim()?(i.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):"open"===e.closable?(t.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):"close"===e.closable&&(t.classList.add(this.classes.close),l.setAttribute("d",this.classes.arrowClose)),s.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation(),t.classList.contains(this.classes.close)?(t.classList.remove(this.classes.close),t.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):(t.classList.remove(this.classes.open),t.classList.add(this.classes.close),l.setAttribute("d",this.classes.arrowClose))})),n.appendChild(i)}t.appendChild(s);for(const s of e.options)t.appendChild(this.option(s));this.content.list.appendChild(t)}e instanceof n&&this.content.list.appendChild(this.option(e))}}option(t){if(t.placeholder){const t=document.createElement("div");return t.classList.add(this.classes.option),t.classList.add(this.classes.hide),t}const e=document.createElement("div");return e.dataset.id=t.id,e.id=t.id,e.classList.add(this.classes.option),e.setAttribute("role","option"),t.class&&t.class.split(" ").forEach((t=>{e.classList.add(t)})),t.style&&(e.style.cssText=t.style),this.settings.searchHighlight&&""!==this.content.search.input.value.trim()?e.innerHTML=this.highlightText(""!==t.html?t.html:t.text,this.content.search.input.value,this.classes.searchHighlighter):""!==t.html?e.innerHTML=t.html:e.textContent=t.text,this.settings.showOptionTooltips&&e.textContent&&e.setAttribute("title",e.textContent),t.display||e.classList.add(this.classes.hide),t.disabled&&e.classList.add(this.classes.disabled),t.selected&&this.settings.hideSelected&&e.classList.add(this.classes.hide),t.selected?(e.classList.add(this.classes.selected),e.setAttribute("aria-selected","true"),this.main.main.setAttribute("aria-activedescendant",e.id)):(e.classList.remove(this.classes.selected),e.setAttribute("aria-selected","false")),e.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation();const s=this.store.getSelected(),i=e.currentTarget,n=String(i.dataset.id);if(t.disabled||t.selected&&!this.settings.allowDeselect)return;if(this.settings.isMultiple&&this.settings.maxSelected<=s.length&&!t.selected||this.settings.isMultiple&&this.settings.minSelected>=s.length&&t.selected)return;let a=!1;const l=this.store.getSelectedOptions();let o=[];this.settings.isMultiple&&(o=t.selected?l.filter((t=>t.id!==n)):l.concat(t)),this.settings.isMultiple||(o=t.selected?[]:[t]),this.callbacks.beforeChange||(a=!0),this.callbacks.beforeChange&&(a=!1!==this.callbacks.beforeChange(o,l)),a&&(this.store.getOptionByID(n)||this.callbacks.addOption(t),this.callbacks.setSelected(o.map((t=>t.id)),!1),this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(o))})),e}destroy(){this.main.main.remove(),this.content.main.remove()}highlightText(t,e,s){let i=t;const n=new RegExp("("+e.trim()+")(?![^<]*>[^<>]*${o}`),i}moveContentAbove(){const t=this.main.main.offsetHeight,e=this.content.main.offsetHeight;this.main.main.classList.remove(this.classes.openBelow),this.main.main.classList.add(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.content.main.classList.add(this.classes.openAbove);const s=this.main.main.getBoundingClientRect();this.content.main.style.margin="-"+(t+e-1)+"px 0px 0px 0px",this.content.main.style.top=s.top+s.height+window.scrollY+"px",this.content.main.style.left=s.left+window.scrollX+"px",this.content.main.style.width=s.width+"px"}moveContentBelow(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.add(this.classes.openBelow),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.add(this.classes.openBelow);const t=this.main.main.getBoundingClientRect();this.content.main.style.margin="-1px 0px 0px 0px","relative"!==this.settings.contentPosition&&(this.content.main.style.top=t.top+t.height+window.scrollY+"px",this.content.main.style.left=t.left+window.scrollX+"px",this.content.main.style.width=t.width+"px")}ensureElementInView(t,e){const s=t.scrollTop+t.offsetTop,i=s+t.clientHeight,n=e.offsetTop,a=n+e.clientHeight;ni&&(t.scrollTop+=a-i)}putContent(){const t=this.main.main.offsetHeight,e=this.main.main.getBoundingClientRect(),s=this.content.main.offsetHeight;return window.innerHeight-(e.top+t)<=s&&e.top>s?"up":"down"}updateDeselectAll(){if(!this.store||!this.settings)return;const t=this.store.getSelectedOptions(),e=t&&t.length>0,s=this.settings.isMultiple,i=this.settings.allowDeselect,n=this.main.deselect.main,a=this.classes.hide;!i||s&&!e?n.classList.add(a):n.classList.remove(a)}}class o{constructor(t){this.listen=!1,this.observer=null,this.select=t,this.valueChange=this.valueChange.bind(this),this.select.addEventListener("change",this.valueChange,{passive:!0}),this.observer=new MutationObserver(this.observeCall.bind(this)),this.changeListen(!0)}enable(){this.select.disabled=!1}disable(){this.select.disabled=!0}hideUI(){this.select.tabIndex=-1,this.select.style.display="none",this.select.setAttribute("aria-hidden","true")}showUI(){this.select.removeAttribute("tabindex"),this.select.style.display="",this.select.removeAttribute("aria-hidden")}changeListen(t){this.listen=t,t&&this.observer&&this.observer.observe(this.select,{subtree:!0,childList:!0,attributes:!0}),t||this.observer&&this.observer.disconnect()}valueChange(t){return this.listen&&this.onValueChange&&this.onValueChange(this.getSelectedOptions()),!0}observeCall(t){if(!this.listen)return;let e=!1,s=!1,i=!1;for(const n of t)n.target===this.select&&("disabled"===n.attributeName&&(s=!0),"class"===n.attributeName&&(e=!0)),"OPTGROUP"!==n.target.nodeName&&"OPTION"!==n.target.nodeName||(i=!0);e&&this.onClassChange&&this.onClassChange(this.select.className.split(" ")),s&&this.onDisabledChange&&(this.changeListen(!1),this.onDisabledChange(this.select.disabled),this.changeListen(!0)),i&&this.onOptionsChange&&(this.changeListen(!1),this.onOptionsChange(this.getData()),this.changeListen(!0))}getData(){let t=[];const e=this.select.childNodes;for(const s of e)"OPTGROUP"===s.nodeName&&t.push(this.getDataFromOptgroup(s)),"OPTION"===s.nodeName&&t.push(this.getDataFromOption(s));return t}getDataFromOptgroup(t){let e={id:t.id,label:t.label,selectAll:!!t.dataset&&"true"===t.dataset.selectall,selectAllText:t.dataset?t.dataset.selectalltext:"Select all",closable:t.dataset?t.dataset.closable:"off",options:[]};const s=t.childNodes;for(const t of s)"OPTION"===t.nodeName&&e.options.push(this.getDataFromOption(t));return e}getDataFromOption(t){return{id:t.id,value:t.value,text:t.text,html:t.dataset&&t.dataset.html?t.dataset.html:"",selected:t.selected,display:"none"!==t.style.display,disabled:t.disabled,mandatory:!!t.dataset&&"true"===t.dataset.mandatory,placeholder:"true"===t.dataset.placeholder,class:t.className,style:t.style.cssText,data:t.dataset}}getSelectedOptions(){let t=[];const e=this.select.childNodes;for(const s of e){if("OPTGROUP"===s.nodeName){const e=s.childNodes;for(const s of e)if("OPTION"===s.nodeName){const e=s;e.selected&&t.push(this.getDataFromOption(e))}}if("OPTION"===s.nodeName){const e=s;e.selected&&t.push(this.getDataFromOption(e))}}return t}getSelectedValues(){return this.getSelectedOptions().map((t=>t.value))}setSelected(t){this.changeListen(!1);const e=this.select.childNodes;for(const s of e){if("OPTGROUP"===s.nodeName){const e=s.childNodes;for(const s of e)if("OPTION"===s.nodeName){const e=s;e.selected=t.includes(e.id)}}if("OPTION"===s.nodeName){const e=s;e.selected=t.includes(e.id)}}this.changeListen(!0)}updateSelect(t,e,s){this.changeListen(!1),t&&(this.select.dataset.id=t),e&&(this.select.style.cssText=e),s&&(this.select.className="",s.forEach((t=>{""!==t.trim()&&this.select.classList.add(t.trim())}))),this.changeListen(!0)}updateOptions(t){this.changeListen(!1),this.select.innerHTML="";for(const e of t)e instanceof i&&this.select.appendChild(this.createOptgroup(e)),e instanceof n&&this.select.appendChild(this.createOption(e));this.select.dispatchEvent(new Event("change")),this.changeListen(!0)}createOptgroup(t){const e=document.createElement("optgroup");if(e.id=t.id,e.label=t.label,t.selectAll&&(e.dataset.selectAll="true"),"off"!==t.closable&&(e.dataset.closable=t.closable),t.options)for(const s of t.options)e.appendChild(this.createOption(s));return e}createOption(t){const e=document.createElement("option");return e.id=t.id,e.value=t.value,e.innerHTML=t.text,""!==t.html&&e.setAttribute("data-html",t.html),t.selected&&(e.selected=t.selected),t.disabled&&(e.disabled=!0),!1===t.display&&(e.style.display="none"),t.placeholder&&e.setAttribute("data-placeholder","true"),t.mandatory&&e.setAttribute("data-mandatory","true"),t.class&&t.class.split(" ").forEach((t=>{e.classList.add(t)})),t.data&&"object"==typeof t.data&&Object.keys(t.data).forEach((s=>{e.setAttribute("data-"+function(t){const e=t.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(t=>"-"+t.toLowerCase()));return t[0]===t[0].toUpperCase()?e.substring(1):e}(s),t.data[s])})),e}destroy(){this.changeListen(!1),this.select.removeEventListener("change",this.valueChange),this.observer&&(this.observer.disconnect(),this.observer=null),delete this.select.dataset.id,this.showUI()}}class c{constructor(e){this.id="",this.style="",this.class=[],this.isMultiple=!1,this.isOpen=!1,this.isFullOpen=!1,this.intervalMove=null,e||(e={}),this.id="ss-"+t(),this.style=e.style||"",this.class=e.class||[],this.disabled=void 0!==e.disabled&&e.disabled,this.alwaysOpen=void 0!==e.alwaysOpen&&e.alwaysOpen,this.showSearch=void 0===e.showSearch||e.showSearch,this.ariaLabel=e.ariaLabel||"Combobox",this.searchPlaceholder=e.searchPlaceholder||"Search",this.searchText=e.searchText||"No Results",this.searchingText=e.searchingText||"Searching...",this.searchHighlight=void 0!==e.searchHighlight&&e.searchHighlight,this.closeOnSelect=void 0===e.closeOnSelect||e.closeOnSelect,this.contentLocation=e.contentLocation||document.body,this.contentPosition=e.contentPosition||"absolute",this.openPosition=e.openPosition||"auto",this.placeholderText=void 0!==e.placeholderText?e.placeholderText:"Select Value",this.allowDeselect=void 0!==e.allowDeselect&&e.allowDeselect,this.hideSelected=void 0!==e.hideSelected&&e.hideSelected,this.keepOrder=void 0!==e.keepOrder&&e.keepOrder,this.showOptionTooltips=void 0!==e.showOptionTooltips&&e.showOptionTooltips,this.minSelected=e.minSelected||0,this.maxSelected=e.maxSelected||1e3,this.timeoutDelay=e.timeoutDelay||200,this.maxValuesShown=e.maxValuesShown||20,this.maxValuesMessage=e.maxValuesMessage||"{number} selected"}}return class{constructor(t){var s;if(this.events={search:void 0,searchFilter:(t,e)=>-1!==t.text.toLowerCase().indexOf(e.toLowerCase()),addable:void 0,beforeChange:void 0,afterChange:void 0,beforeOpen:void 0,afterOpen:void 0,beforeClose:void 0,afterClose:void 0},this.windowResize=e((()=>{(this.settings.isOpen||this.settings.isFullOpen)&&this.render.moveContent()})),this.windowScroll=e((()=>{(this.settings.isOpen||this.settings.isFullOpen)&&this.render.moveContent()})),this.documentClick=t=>{this.settings.isOpen&&t.target&&!function(t,e){function s(t,s){return s&&t&&t.classList&&t.classList.contains(s)||s&&t&&t.dataset&&t.dataset.id&&t.dataset.id===e?t:null}return s(t,e)||function t(e,i){return e&&e!==document?s(e,i)?e:t(e.parentNode,i):null}(t,e)}(t.target,this.settings.id)&&this.close(t.type)},this.windowVisibilityChange=()=>{document.hidden&&this.close()},this.selectEl="string"==typeof t.select?document.querySelector(t.select):t.select,!this.selectEl)return void(t.events&&t.events.error&&t.events.error(new Error("Could not find select element")));if("SELECT"!==this.selectEl.tagName)return void(t.events&&t.events.error&&t.events.error(new Error("Element isnt of type select")));this.selectEl.dataset.ssid&&this.destroy(),this.settings=new c(t.settings);const i=["afterChange","beforeOpen","afterOpen","beforeClose","afterClose"];for(const s in t.events)t.events.hasOwnProperty(s)&&(-1!==i.indexOf(s)?this.events[s]=e(t.events[s],100):this.events[s]=t.events[s]);this.settings.disabled=(null===(s=t.settings)||void 0===s?void 0:s.disabled)?t.settings.disabled:this.selectEl.disabled,this.settings.isMultiple=this.selectEl.multiple,this.settings.style=this.selectEl.style.cssText,this.settings.class=this.selectEl.className.split(" "),this.select=new o(this.selectEl),this.select.updateSelect(this.settings.id,this.settings.style,this.settings.class),this.select.hideUI(),this.select.onValueChange=t=>{this.setSelected(t.map((t=>t.id)))},this.select.onClassChange=t=>{this.settings.class=t,this.render.updateClassStyles()},this.select.onDisabledChange=t=>{t?this.disable():this.enable()},this.select.onOptionsChange=t=>{this.setData(t)},this.store=new a(this.settings.isMultiple?"multiple":"single",t.data?t.data:this.select.getData()),t.data&&this.select.updateOptions(this.store.getData());const n={open:this.open.bind(this),close:this.close.bind(this),addable:this.events.addable?this.events.addable:void 0,setSelected:this.setSelected.bind(this),addOption:this.addOption.bind(this),search:this.search.bind(this),beforeChange:this.events.beforeChange,afterChange:this.events.afterChange};this.render=new l(this.settings,this.store,n),this.render.renderValues(),this.render.renderOptions(this.store.getData());const h=this.selectEl.getAttribute("aria-label"),r=this.selectEl.getAttribute("aria-labelledby");h?this.render.main.main.setAttribute("aria-label",h):r&&this.render.main.main.setAttribute("aria-labelledby",r),this.selectEl.parentNode&&this.selectEl.parentNode.insertBefore(this.render.main.main,this.selectEl.nextSibling),window.addEventListener("resize",this.windowResize,!1),"auto"===this.settings.openPosition&&window.addEventListener("scroll",this.windowScroll,!1),document.addEventListener("visibilitychange",this.windowVisibilityChange),this.settings.disabled&&this.disable(),this.settings.alwaysOpen&&this.open(),this.selectEl.slim=this}enable(){this.settings.disabled=!1,this.select.enable(),this.render.enable()}disable(){this.settings.disabled=!0,this.select.disable(),this.render.disable()}getData(){return this.store.getData()}setData(t){const e=this.store.getSelected(),i=this.store.validateDataArray(t);if(i)return void(this.events.error&&this.events.error(i));this.store.setData(t);const n=this.store.getData();this.select.updateOptions(n),this.render.renderValues(),this.render.renderOptions(n),this.events.afterChange&&!s(e,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}getSelected(){return this.store.getSelected()}setSelected(t,e=!0){const i=this.store.getSelected();this.store.setSelectedBy("id",Array.isArray(t)?t:[t]);const n=this.store.getData();this.select.updateOptions(n),this.render.renderValues(),""!==this.render.content.search.input.value?this.search(this.render.content.search.input.value):this.render.renderOptions(n),e&&this.events.afterChange&&!s(i,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}addOption(t){const e=this.store.getSelected();this.store.getDataOptions().some((e=>{var s;return e.value===(null!==(s=t.value)&&void 0!==s?s:t.text)}))||this.store.addOption(t);const i=this.store.getData();this.select.updateOptions(i),this.render.renderValues(),this.render.renderOptions(i),this.events.afterChange&&!s(e,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}open(){this.settings.disabled||this.settings.isOpen||(this.events.beforeOpen&&this.events.beforeOpen(),this.render.open(),this.settings.showSearch&&this.render.searchFocus(),this.settings.isOpen=!0,setTimeout((()=>{this.events.afterOpen&&this.events.afterOpen(),this.settings.isOpen&&(this.settings.isFullOpen=!0),document.addEventListener("click",this.documentClick)}),this.settings.timeoutDelay),"absolute"===this.settings.contentPosition&&(this.settings.intervalMove&&clearInterval(this.settings.intervalMove),this.settings.intervalMove=setInterval(this.render.moveContent.bind(this.render),500)))}close(t=null){this.settings.isOpen&&!this.settings.alwaysOpen&&(this.events.beforeClose&&this.events.beforeClose(),this.render.close(),""!==this.render.content.search.input.value&&this.search(""),this.render.mainFocus(t),this.settings.isOpen=!1,this.settings.isFullOpen=!1,setTimeout((()=>{this.events.afterClose&&this.events.afterClose(),document.removeEventListener("click",this.documentClick)}),this.settings.timeoutDelay),this.settings.intervalMove&&clearInterval(this.settings.intervalMove))}search(t){if(this.render.content.search.input.value!==t&&(this.render.content.search.input.value=t),!this.events.search)return void this.render.renderOptions(""===t?this.store.getData():this.store.search(t,this.events.searchFilter));this.render.renderSearching();const e=this.events.search(t,this.store.getSelectedOptions());e instanceof Promise?e.then((t=>{this.render.renderOptions(this.store.partialToFullData(t))})).catch((t=>{this.render.renderError("string"==typeof t?t:t.message)})):Array.isArray(e)?this.render.renderOptions(this.store.partialToFullData(e)):this.render.renderError("Search event must return a promise or an array of data")}destroy(){document.removeEventListener("click",this.documentClick),window.removeEventListener("resize",this.windowResize,!1),"auto"===this.settings.openPosition&&window.removeEventListener("scroll",this.windowScroll,!1),document.removeEventListener("visibilitychange",this.windowVisibilityChange),this.store.setData([]),this.render.destroy(),this.select.destroy()}}})); +!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).SlimSelect=e()}(this,(function(){"use strict";function t(){return Math.random().toString(36).substring(2,10)}function e(t,e=50,s=!1){let i;return function(...n){const a=self,l=s&&!i;clearTimeout(i),i=setTimeout((()=>{i=null,s||t.apply(a,n)}),e),l&&t.apply(a,n)}}function s(t,e){return JSON.stringify(t)===JSON.stringify(e)}class i{constructor(e){if(this.id=e.id&&""!==e.id?e.id:t(),this.label=e.label||"",this.selectAll=void 0!==e.selectAll&&e.selectAll,this.selectAllText=e.selectAllText||"Select All",this.closable=e.closable||"off",this.options=[],e.options)for(const t of e.options)this.options.push(new n(t))}}class n{constructor(e){this.id=e.id&&""!==e.id?e.id:t(),this.value=void 0===e.value?e.text:e.value,this.text=e.text||"",this.html=e.html||"",this.selected=void 0!==e.selected&&e.selected,this.display=void 0===e.display||e.display,this.disabled=void 0!==e.disabled&&e.disabled,this.mandatory=void 0!==e.mandatory&&e.mandatory,this.placeholder=void 0!==e.placeholder&&e.placeholder,this.class=e.class||"",this.style=e.style||"",this.data=e.data||{}}}class a{constructor(t,e){this.selectType="single",this.data=[],this.selectType=t,this.setData(e)}validateDataArray(t){if(!Array.isArray(t))return new Error("Data must be an array");for(let e of t){if(!(e instanceof i||"label"in e))return e instanceof n||"text"in e?this.validateOption(e):new Error("Data object must be a valid optgroup or option");if(!("label"in e))return new Error("Optgroup must have a label");if("options"in e&&e.options)for(let t of e.options)return this.validateOption(t)}return null}validateOption(t){return"text"in t?null:new Error("Option must have a text")}partialToFullData(t){let e=[];return t.forEach((t=>{if(t instanceof i||"label"in t){let s=[];"options"in t&&t.options&&t.options.forEach((t=>{s.push(new n(t))})),s.length>0&&e.push(new i(t))}(t instanceof n||"text"in t)&&e.push(new n(t))})),e}setData(t){this.data=this.partialToFullData(t),"single"===this.selectType&&this.setSelectedBy("id",this.getSelected())}getData(){return this.filter(null,!0)}getDataOptions(){return this.filter(null,!1)}addOption(t){this.setData(this.getData().concat(new n(t)))}setSelectedBy(t,e){let s=null,a=!1;for(let l of this.data){if(l instanceof i)for(let i of l.options)s||(s=i),i.selected=!a&&e.includes(i[t]),i.selected&&"single"===this.selectType&&(a=!0);l instanceof n&&(s||(s=l),l.selected=!a&&e.includes(l[t]),l.selected&&"single"===this.selectType&&(a=!0))}"single"===this.selectType&&s&&!a&&(s.selected=!0)}getSelected(){return this.getSelectedOptions().map((t=>t.id))}getSelectedOptions(){return this.filter((t=>t.selected),!1)}getOptgroupByID(t){for(let e of this.data)if(e instanceof i&&e.id===t)return e;return null}getOptionByID(t){let e=this.filter((e=>e.id===t),!1);return e.length?e[0]:null}getSelectType(){return this.selectType}getFirstOption(){let t=null;for(let e of this.data)if(e instanceof i?t=e.options[0]:e instanceof n&&(t=e),t)break;return t}search(t,e){return""===(t=t.trim())?this.getData():this.filter((s=>e(s,t)),!0)}filter(t,e){const s=[];return this.data.forEach((a=>{if(a instanceof i){let l=[];if(a.options.forEach((i=>{t&&!t(i)||(e?l.push(new n(i)):s.push(new n(i)))})),l.length>0){let t=new i(a);t.options=l,s.push(t)}}a instanceof n&&(t&&!t(a)||s.push(new n(a)))})),s}}class l{constructor(t,e,s){this.classes={main:"ss-main",placeholder:"ss-placeholder",values:"ss-values",single:"ss-single",max:"ss-max",value:"ss-value",valueText:"ss-value-text",valueDelete:"ss-value-delete",valueOut:"ss-value-out",deselect:"ss-deselect",deselectPath:"M10,10 L90,90 M10,90 L90,10",arrow:"ss-arrow",arrowClose:"M10,30 L50,70 L90,30",arrowOpen:"M10,70 L50,30 L90,70",content:"ss-content",openAbove:"ss-open-above",openBelow:"ss-open-below",search:"ss-search",searchHighlighter:"ss-search-highlight",searching:"ss-searching",addable:"ss-addable",addablePath:"M50,10 L50,90 M10,50 L90,50",list:"ss-list",optgroup:"ss-optgroup",optgroupLabel:"ss-optgroup-label",optgroupLabelText:"ss-optgroup-label-text",optgroupActions:"ss-optgroup-actions",optgroupSelectAll:"ss-selectall",optgroupSelectAllBox:"M60,10 L10,10 L10,90 L90,90 L90,50",optgroupSelectAllCheck:"M30,45 L50,70 L90,10",optgroupClosable:"ss-closable",option:"ss-option",optionDelete:"M10,10 L90,90 M10,90 L90,10",highlighted:"ss-highlighted",open:"ss-open",close:"ss-close",selected:"ss-selected",error:"ss-error",disabled:"ss-disabled",hide:"ss-hide"},this.store=e,this.settings=t,this.callbacks=s,this.main=this.mainDiv(),this.content=this.contentDiv(),this.updateClassStyles(),this.updateAriaAttributes(),this.settings.contentLocation.appendChild(this.content.main)}enable(){this.main.main.classList.remove(this.classes.disabled),this.content.search.input.disabled=!1}disable(){this.main.main.classList.add(this.classes.disabled),this.content.search.input.disabled=!0}open(){this.main.arrow.path.setAttribute("d",this.classes.arrowOpen),this.main.main.classList.add("up"===this.settings.openPosition?this.classes.openAbove:this.classes.openBelow),this.main.main.setAttribute("aria-expanded","true"),this.moveContent();const t=this.store.getSelectedOptions();if(t.length){const e=t[t.length-1].id,s=this.content.list.querySelector('[data-id="'+e+'"]');s&&this.ensureElementInView(this.content.list,s)}}close(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.remove(this.classes.openBelow),this.main.main.setAttribute("aria-expanded","false"),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.main.arrow.path.setAttribute("d",this.classes.arrowClose)}updateClassStyles(){if(this.main.main.className="",this.main.main.removeAttribute("style"),this.content.main.className="",this.content.main.removeAttribute("style"),this.main.main.classList.add(this.classes.main),this.content.main.classList.add(this.classes.content),""!==this.settings.style&&(this.main.main.style.cssText=this.settings.style,this.content.main.style.cssText=this.settings.style),this.settings.class.length)for(const t of this.settings.class)""!==t.trim()&&(this.main.main.classList.add(t.trim()),this.content.main.classList.add(t.trim()));"relative"===this.settings.contentPosition&&this.content.main.classList.add("ss-"+this.settings.contentPosition)}updateAriaAttributes(){this.main.main.role="combobox",this.main.main.setAttribute("aria-haspopup","listbox"),this.main.main.setAttribute("aria-controls",this.content.main.id),this.main.main.setAttribute("aria-expanded","false"),this.content.main.setAttribute("role","listbox")}mainDiv(){var t;const e=document.createElement("div");e.dataset.id=this.settings.id,e.setAttribute("aria-label",this.settings.ariaLabel),e.tabIndex=0,e.onkeydown=t=>{switch(t.key){case"ArrowUp":case"ArrowDown":return this.callbacks.open(),"ArrowDown"===t.key?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Enter":case" ":this.callbacks.open();const e=this.content.list.querySelector("."+this.classes.highlighted);return e&&e.click(),!1;case"Escape":return this.callbacks.close(),!1}return!1},e.onclick=t=>{this.settings.disabled||(this.settings.isOpen?this.callbacks.close():this.callbacks.open())};const s=document.createElement("div");s.classList.add(this.classes.values),e.appendChild(s);const i=document.createElement("div");i.classList.add(this.classes.deselect);const n=null===(t=this.store)||void 0===t?void 0:t.getSelectedOptions();!this.settings.allowDeselect||this.settings.isMultiple&&n&&n.length<=0?i.classList.add(this.classes.hide):i.classList.remove(this.classes.hide),i.onclick=t=>{if(t.stopPropagation(),this.settings.disabled)return;let e=!0;const s=this.store.getSelectedOptions(),i=[];if(this.callbacks.beforeChange&&(e=!0===this.callbacks.beforeChange(i,s)),e){if(this.settings.isMultiple)this.callbacks.setSelected([],!1),this.updateDeselectAll();else{const t=this.store.getFirstOption(),e=t?t.id:"";this.callbacks.setSelected(e,!1)}this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(this.store.getSelectedOptions())}};const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100");const l=document.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("d",this.classes.deselectPath),a.appendChild(l),i.appendChild(a),e.appendChild(i);const o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.classList.add(this.classes.arrow),o.setAttribute("viewBox","0 0 100 100");const c=document.createElementNS("http://www.w3.org/2000/svg","path");return c.setAttribute("d",this.classes.arrowClose),this.settings.alwaysOpen&&o.classList.add(this.classes.hide),o.appendChild(c),e.appendChild(o),{main:e,values:s,deselect:{main:i,svg:a,path:l},arrow:{main:o,path:c}}}mainFocus(t){"click"!==t&&this.main.main.focus({preventScroll:!0})}placeholder(){const t=this.store.filter((t=>t.placeholder),!1);let e=this.settings.placeholderText;t.length&&(""!==t[0].html?e=t[0].html:""!==t[0].text&&(e=t[0].text));const s=document.createElement("div");return s.classList.add(this.classes.placeholder),s.innerHTML=e,s}renderValues(){this.settings.isMultiple?(this.renderMultipleValues(),this.updateDeselectAll()):this.renderSingleValue()}renderSingleValue(){const t=this.store.filter((t=>t.selected&&!t.placeholder),!1),e=t.length>0?t[0]:null;if(e){const t=document.createElement("div");t.classList.add(this.classes.single),e.html?t.innerHTML=e.html:t.innerText=e.text,this.main.values.innerHTML=t.outerHTML}else this.main.values.innerHTML=this.placeholder().outerHTML;this.settings.allowDeselect&&t.length?this.main.deselect.main.classList.remove(this.classes.hide):this.main.deselect.main.classList.add(this.classes.hide)}renderMultipleValues(){let t=this.main.values.childNodes,e=this.store.filter((t=>t.selected&&t.display),!1);if(0===e.length)return void(this.main.values.innerHTML=this.placeholder().outerHTML);{const t=this.main.values.querySelector("."+this.classes.placeholder);t&&t.remove()}if(e.length>this.settings.maxValuesShown){const t=document.createElement("div");return t.classList.add(this.classes.max),t.textContent=this.settings.maxValuesMessage.replace("{number}",e.length.toString()),void(this.main.values.innerHTML=t.outerHTML)}{const t=this.main.values.querySelector("."+this.classes.max);t&&t.remove()}let s=[];for(let i=0;it.id===a),!1).length||s.push(n)}}for(const t of s)t.classList.add(this.classes.valueOut),setTimeout((()=>{this.main.values.hasChildNodes()&&this.main.values.contains(t)&&this.main.values.removeChild(t)}),100);t=this.main.values.childNodes;for(let s=0;s{if(e.preventDefault(),e.stopPropagation(),this.settings.disabled)return;let s=!0;const a=this.store.getSelectedOptions(),l=a.filter((e=>e.selected&&e.id!==t.id),!0);if(!(this.settings.minSelected&&l.length{this.callbacks.search(t.target.value)}),100),s.onkeydown=t=>{switch(t.key){case"ArrowUp":case"ArrowDown":return"ArrowDown"===t.key?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Escape":return this.callbacks.close(),!1;case"Enter":case" ":if(this.callbacks.addable&&t.ctrlKey)return i.click(),!1;{const t=this.content.list.querySelector("."+this.classes.highlighted);if(t)return t.click(),!1}return!0}return!0},t.appendChild(s),this.callbacks.addable){i.classList.add(this.classes.addable);const e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttribute("viewBox","0 0 100 100");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("d",this.classes.addablePath),e.appendChild(s),i.appendChild(e),i.onclick=t=>{if(t.preventDefault(),t.stopPropagation(),!this.callbacks.addable)return;const e=this.content.search.input.value.trim();if(""===e)return void this.content.search.input.focus();const s=t=>{let e=new n(t);if(this.callbacks.addOption(e),this.settings.isMultiple){let t=this.store.getSelected();t.push(e.id),this.callbacks.setSelected(t,!0)}else this.callbacks.setSelected([e.id],!0);this.callbacks.search(""),this.settings.closeOnSelect&&setTimeout((()=>{this.callbacks.close()}),100)},i=this.callbacks.addable(e);!1!==i&&null!=i&&(i instanceof Promise?i.then((t=>{s("string"==typeof t?{text:t,value:t}:t)})):s("string"==typeof i?{text:i,value:i}:i))},t.appendChild(i),a.addable={main:i,svg:e,path:s}}return a}searchFocus(){this.content.search.input.focus()}getOptions(t=!1,e=!1,s=!1){let i="."+this.classes.option;return t&&(i+=":not(."+this.classes.placeholder+")"),e&&(i+=":not(."+this.classes.disabled+")"),s&&(i+=":not(."+this.classes.hide+")"),Array.from(this.content.list.querySelectorAll(i))}highlight(t){const e=this.getOptions(!0,!0,!0);if(0===e.length)return;if(1===e.length&&!e[0].classList.contains(this.classes.highlighted))return void e[0].classList.add(this.classes.highlighted);let s=!1;for(const t of e)t.classList.contains(this.classes.highlighted)&&(s=!0);if(!s)for(const t of e)if(t.classList.contains(this.classes.selected)){t.classList.add(this.classes.highlighted);break}for(let s=0;s=0?s-1:e.length-1];a.classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,a);const l=a.parentElement;if(l&&l.classList.contains(this.classes.close)){const t=l.querySelector("."+this.classes.optgroupLabel);t&&t.click()}return}e["down"===t?0:e.length-1].classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,e["down"===t?0:e.length-1])}listDiv(){const t=document.createElement("div");return t.classList.add(this.classes.list),t}renderError(t){this.content.list.innerHTML="";const e=document.createElement("div");e.classList.add(this.classes.error),e.textContent=t,this.content.list.appendChild(e)}renderSearching(){this.content.list.innerHTML="";const t=document.createElement("div");t.classList.add(this.classes.searching),t.textContent=this.settings.searchingText,this.content.list.appendChild(t)}renderOptions(t){if(this.content.list.innerHTML="",0===t.length){const t=document.createElement("div");return t.classList.add(this.classes.search),t.innerHTML=this.settings.searchText,void this.content.list.appendChild(t)}for(const e of t){if(e instanceof i){const t=document.createElement("div");t.classList.add(this.classes.optgroup);const s=document.createElement("div");s.classList.add(this.classes.optgroupLabel),t.appendChild(s);const i=document.createElement("div");i.classList.add(this.classes.optgroupLabelText),i.textContent=e.label,s.appendChild(i);const n=document.createElement("div");if(n.classList.add(this.classes.optgroupActions),s.appendChild(n),this.settings.isMultiple&&e.selectAll){const t=document.createElement("div");t.classList.add(this.classes.optgroupSelectAll);let s=!0;for(const t of e.options)if(!t.selected){s=!1;break}s&&t.classList.add(this.classes.selected);const i=document.createElement("span");i.textContent=e.selectAllText,t.appendChild(i);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),t.appendChild(a);const l=document.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("d",this.classes.optgroupSelectAllBox),a.appendChild(l);const o=document.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d",this.classes.optgroupSelectAllCheck),a.appendChild(o),t.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation();const i=this.store.getSelected();if(s){const t=i.filter((t=>{for(const s of e.options)if(t===s.id)return!1;return!0}));this.callbacks.setSelected(t,!0)}else{const t=i.concat(e.options.map((t=>t.id)));for(const t of e.options)this.store.getOptionByID(t.id)||this.callbacks.addOption(t);this.callbacks.setSelected(t,!0)}})),n.appendChild(t)}if("off"!==e.closable){const i=document.createElement("div");i.classList.add(this.classes.optgroupClosable);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),a.classList.add(this.classes.arrow),i.appendChild(a);const l=document.createElementNS("http://www.w3.org/2000/svg","path");a.appendChild(l),e.options.some((t=>t.selected))||""!==this.content.search.input.value.trim()?(i.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):"open"===e.closable?(t.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):"close"===e.closable&&(t.classList.add(this.classes.close),l.setAttribute("d",this.classes.arrowClose)),s.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation(),t.classList.contains(this.classes.close)?(t.classList.remove(this.classes.close),t.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):(t.classList.remove(this.classes.open),t.classList.add(this.classes.close),l.setAttribute("d",this.classes.arrowClose))})),n.appendChild(i)}t.appendChild(s);for(const s of e.options)t.appendChild(this.option(s));this.content.list.appendChild(t)}e instanceof n&&this.content.list.appendChild(this.option(e))}}option(t){if(t.placeholder){const t=document.createElement("div");return t.classList.add(this.classes.option),t.classList.add(this.classes.hide),t}const e=document.createElement("div");return e.dataset.id=t.id,e.id=t.id,e.classList.add(this.classes.option),e.setAttribute("role","option"),t.class&&t.class.split(" ").forEach((t=>{e.classList.add(t)})),t.style&&(e.style.cssText=t.style),this.settings.searchHighlight&&""!==this.content.search.input.value.trim()?e.innerHTML=this.highlightText(""!==t.html?t.html:t.text,this.content.search.input.value,this.classes.searchHighlighter):""!==t.html?e.innerHTML=t.html:e.textContent=t.text,this.settings.showOptionTooltips&&e.textContent&&e.setAttribute("title",e.textContent),t.display||e.classList.add(this.classes.hide),t.disabled&&e.classList.add(this.classes.disabled),t.selected&&this.settings.hideSelected&&e.classList.add(this.classes.hide),t.selected?(e.classList.add(this.classes.selected),e.setAttribute("aria-selected","true"),this.main.main.setAttribute("aria-activedescendant",e.id)):(e.classList.remove(this.classes.selected),e.setAttribute("aria-selected","false")),e.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation();const s=this.store.getSelected(),i=e.currentTarget,n=String(i.dataset.id);if(t.disabled||t.selected&&!this.settings.allowDeselect)return;if(this.settings.isMultiple&&this.settings.maxSelected<=s.length&&!t.selected||this.settings.isMultiple&&this.settings.minSelected>=s.length&&t.selected)return;let a=!1;const l=this.store.getSelectedOptions();let o=[];this.settings.isMultiple&&(o=t.selected?l.filter((t=>t.id!==n)):l.concat(t)),this.settings.isMultiple||(o=t.selected?[]:[t]),this.callbacks.beforeChange||(a=!0),this.callbacks.beforeChange&&(a=!1!==this.callbacks.beforeChange(o,l)),a&&(this.store.getOptionByID(n)||this.callbacks.addOption(t),this.callbacks.setSelected(o.map((t=>t.id)),!1),this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(o))})),e}destroy(){this.main.main.remove(),this.content.main.remove()}highlightText(t,e,s){let i=t;const n=new RegExp("("+e.trim()+")(?![^<]*>[^<>]*${o}`),i}moveContentAbove(){const t=this.main.main.offsetHeight,e=this.content.main.offsetHeight;this.main.main.classList.remove(this.classes.openBelow),this.main.main.classList.add(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.content.main.classList.add(this.classes.openAbove);const s=this.main.main.getBoundingClientRect();this.content.main.style.margin="-"+(t+e-1)+"px 0px 0px 0px",this.content.main.style.top=s.top+s.height+window.scrollY+"px",this.content.main.style.left=s.left+window.scrollX+"px",this.content.main.style.width=s.width+"px"}moveContentBelow(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.add(this.classes.openBelow),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.add(this.classes.openBelow);const t=this.main.main.getBoundingClientRect();this.content.main.style.margin="-1px 0px 0px 0px","relative"!==this.settings.contentPosition&&(this.content.main.style.top=t.top+t.height+window.scrollY+"px",this.content.main.style.left=t.left+window.scrollX+"px",this.content.main.style.width=t.width+"px")}ensureElementInView(t,e){const s=t.scrollTop+t.offsetTop,i=s+t.clientHeight,n=e.offsetTop,a=n+e.clientHeight;ni&&(t.scrollTop+=a-i)}putContent(){const t=this.main.main.offsetHeight,e=this.main.main.getBoundingClientRect(),s=this.content.main.offsetHeight;return window.innerHeight-(e.top+t)<=s&&e.top>s?"up":"down"}updateDeselectAll(){if(!this.store||!this.settings)return;const t=this.store.getSelectedOptions(),e=t&&t.length>0,s=this.settings.isMultiple,i=this.settings.allowDeselect,n=this.main.deselect.main,a=this.classes.hide;!i||s&&!e?n.classList.add(a):n.classList.remove(a)}}class o{constructor(t){this.listen=!1,this.observer=null,this.select=t,this.valueChange=this.valueChange.bind(this),this.select.addEventListener("change",this.valueChange,{passive:!0}),this.observer=new MutationObserver(this.observeCall.bind(this)),this.changeListen(!0)}enable(){this.select.disabled=!1}disable(){this.select.disabled=!0}hideUI(){this.select.tabIndex=-1,this.select.style.display="none",this.select.setAttribute("aria-hidden","true")}showUI(){this.select.removeAttribute("tabindex"),this.select.style.display="",this.select.removeAttribute("aria-hidden")}changeListen(t){this.listen=t,t&&this.observer&&this.observer.observe(this.select,{subtree:!0,childList:!0,attributes:!0}),t||this.observer&&this.observer.disconnect()}valueChange(t){return this.listen&&this.onValueChange&&this.onValueChange(this.getSelectedOptions()),!0}observeCall(t){if(!this.listen)return;let e=!1,s=!1,i=!1;for(const n of t)n.target===this.select&&("disabled"===n.attributeName&&(s=!0),"class"===n.attributeName&&(e=!0)),"OPTGROUP"!==n.target.nodeName&&"OPTION"!==n.target.nodeName||(i=!0);e&&this.onClassChange&&this.onClassChange(this.select.className.split(" ")),s&&this.onDisabledChange&&(this.changeListen(!1),this.onDisabledChange(this.select.disabled),this.changeListen(!0)),i&&this.onOptionsChange&&(this.changeListen(!1),this.onOptionsChange(this.getData()),this.changeListen(!0))}getData(){let t=[];const e=this.select.childNodes;for(const s of e)"OPTGROUP"===s.nodeName&&t.push(this.getDataFromOptgroup(s)),"OPTION"===s.nodeName&&t.push(this.getDataFromOption(s));return t}getDataFromOptgroup(t){let e={id:t.id,label:t.label,selectAll:!!t.dataset&&"true"===t.dataset.selectall,selectAllText:t.dataset?t.dataset.selectalltext:"Select all",closable:t.dataset?t.dataset.closable:"off",options:[]};const s=t.childNodes;for(const t of s)"OPTION"===t.nodeName&&e.options.push(this.getDataFromOption(t));return e}getDataFromOption(t){return{id:t.id,value:t.value,text:t.text,html:t.dataset&&t.dataset.html?t.dataset.html:"",selected:t.selected,display:"none"!==t.style.display,disabled:t.disabled,mandatory:!!t.dataset&&"true"===t.dataset.mandatory,placeholder:"true"===t.dataset.placeholder,class:t.className,style:t.style.cssText,data:t.dataset}}getSelectedOptions(){let t=[];const e=this.select.childNodes;for(const s of e){if("OPTGROUP"===s.nodeName){const e=s.childNodes;for(const s of e)if("OPTION"===s.nodeName){const e=s;e.selected&&t.push(this.getDataFromOption(e))}}if("OPTION"===s.nodeName){const e=s;e.selected&&t.push(this.getDataFromOption(e))}}return t}getSelectedValues(){return this.getSelectedOptions().map((t=>t.value))}setSelected(t){this.changeListen(!1);const e=this.select.childNodes;for(const s of e){if("OPTGROUP"===s.nodeName){const e=s.childNodes;for(const s of e)if("OPTION"===s.nodeName){const e=s;e.selected=t.includes(e.id)}}if("OPTION"===s.nodeName){const e=s;e.selected=t.includes(e.id)}}this.changeListen(!0)}updateSelect(t,e,s){this.changeListen(!1),t&&(this.select.dataset.id=t),e&&(this.select.style.cssText=e),s&&(this.select.className="",s.forEach((t=>{""!==t.trim()&&this.select.classList.add(t.trim())}))),this.changeListen(!0)}updateOptions(t){this.changeListen(!1),this.select.innerHTML="";for(const e of t)e instanceof i&&this.select.appendChild(this.createOptgroup(e)),e instanceof n&&this.select.appendChild(this.createOption(e));this.select.dispatchEvent(new Event("change")),this.changeListen(!0)}createOptgroup(t){const e=document.createElement("optgroup");if(e.id=t.id,e.label=t.label,t.selectAll&&(e.dataset.selectAll="true"),"off"!==t.closable&&(e.dataset.closable=t.closable),t.options)for(const s of t.options)e.appendChild(this.createOption(s));return e}createOption(t){const e=document.createElement("option");return e.id=t.id,e.value=t.value,e.innerHTML=t.text,""!==t.html&&e.setAttribute("data-html",t.html),t.selected&&(e.selected=t.selected),t.disabled&&(e.disabled=!0),!1===t.display&&(e.style.display="none"),t.placeholder&&e.setAttribute("data-placeholder","true"),t.mandatory&&e.setAttribute("data-mandatory","true"),t.class&&t.class.split(" ").forEach((t=>{e.classList.add(t)})),t.data&&"object"==typeof t.data&&Object.keys(t.data).forEach((s=>{e.setAttribute("data-"+function(t){const e=t.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(t=>"-"+t.toLowerCase()));return t[0]===t[0].toUpperCase()?e.substring(1):e}(s),t.data[s])})),e}destroy(){this.changeListen(!1),this.select.removeEventListener("change",this.valueChange),this.observer&&(this.observer.disconnect(),this.observer=null),delete this.select.dataset.id,this.showUI()}}class c{constructor(e){this.id="",this.style="",this.class=[],this.isMultiple=!1,this.isOpen=!1,this.isFullOpen=!1,this.intervalMove=null,e||(e={}),this.id="ss-"+t(),this.style=e.style||"",this.class=e.class||[],this.disabled=void 0!==e.disabled&&e.disabled,this.alwaysOpen=void 0!==e.alwaysOpen&&e.alwaysOpen,this.showSearch=void 0===e.showSearch||e.showSearch,this.ariaLabel=e.ariaLabel||"Combobox",this.searchPlaceholder=e.searchPlaceholder||"Search",this.searchText=e.searchText||"No Results",this.searchingText=e.searchingText||"Searching...",this.searchHighlight=void 0!==e.searchHighlight&&e.searchHighlight,this.closeOnSelect=void 0===e.closeOnSelect||e.closeOnSelect,this.contentLocation=e.contentLocation||document.body,this.contentPosition=e.contentPosition||"absolute",this.openPosition=e.openPosition||"auto",this.placeholderText=void 0!==e.placeholderText?e.placeholderText:"Select Value",this.allowDeselect=void 0!==e.allowDeselect&&e.allowDeselect,this.hideSelected=void 0!==e.hideSelected&&e.hideSelected,this.keepOrder=void 0!==e.keepOrder&&e.keepOrder,this.showOptionTooltips=void 0!==e.showOptionTooltips&&e.showOptionTooltips,this.minSelected=e.minSelected||0,this.maxSelected=e.maxSelected||1e3,this.timeoutDelay=e.timeoutDelay||200,this.maxValuesShown=e.maxValuesShown||20,this.maxValuesMessage=e.maxValuesMessage||"{number} selected"}}return class{constructor(t){var s;if(this.events={search:void 0,searchFilter:(t,e)=>-1!==t.text.toLowerCase().indexOf(e.toLowerCase()),addable:void 0,beforeChange:void 0,afterChange:void 0,beforeOpen:void 0,afterOpen:void 0,beforeClose:void 0,afterClose:void 0},this.windowResize=e((()=>{(this.settings.isOpen||this.settings.isFullOpen)&&this.render.moveContent()})),this.windowScroll=e((()=>{(this.settings.isOpen||this.settings.isFullOpen)&&this.render.moveContent()})),this.documentClick=t=>{this.settings.isOpen&&t.target&&!function(t,e){function s(t,s){return s&&t&&t.classList&&t.classList.contains(s)||s&&t&&t.dataset&&t.dataset.id&&t.dataset.id===e?t:null}return s(t,e)||function t(e,i){return e&&e!==document?s(e,i)?e:t(e.parentNode,i):null}(t,e)}(t.target,this.settings.id)&&this.close(t.type)},this.windowVisibilityChange=()=>{document.hidden&&this.close()},this.selectEl="string"==typeof t.select?document.querySelector(t.select):t.select,!this.selectEl)return void(t.events&&t.events.error&&t.events.error(new Error("Could not find select element")));if("SELECT"!==this.selectEl.tagName)return void(t.events&&t.events.error&&t.events.error(new Error("Element isnt of type select")));this.selectEl.dataset.ssid&&this.destroy(),this.settings=new c(t.settings);const i=["afterChange","beforeOpen","afterOpen","beforeClose","afterClose"];for(const s in t.events)t.events.hasOwnProperty(s)&&(-1!==i.indexOf(s)?this.events[s]=e(t.events[s],100):this.events[s]=t.events[s]);this.settings.disabled=(null===(s=t.settings)||void 0===s?void 0:s.disabled)?t.settings.disabled:this.selectEl.disabled,this.settings.isMultiple=this.selectEl.multiple,this.settings.style=this.selectEl.style.cssText,this.settings.class=this.selectEl.className.split(" "),this.select=new o(this.selectEl),this.select.updateSelect(this.settings.id,this.settings.style,this.settings.class),this.select.hideUI(),this.select.onValueChange=t=>{this.setSelected(t.map((t=>t.id)))},this.select.onClassChange=t=>{this.settings.class=t,this.render.updateClassStyles()},this.select.onDisabledChange=t=>{t?this.disable():this.enable()},this.select.onOptionsChange=t=>{this.setData(t)},this.store=new a(this.settings.isMultiple?"multiple":"single",t.data?t.data:this.select.getData()),t.data&&this.select.updateOptions(this.store.getData());const n={open:this.open.bind(this),close:this.close.bind(this),addable:this.events.addable?this.events.addable:void 0,setSelected:this.setSelected.bind(this),addOption:this.addOption.bind(this),search:this.search.bind(this),beforeChange:this.events.beforeChange,afterChange:this.events.afterChange};this.render=new l(this.settings,this.store,n),this.render.renderValues(),this.render.renderOptions(this.store.getData());const h=this.selectEl.getAttribute("aria-label"),r=this.selectEl.getAttribute("aria-labelledby");h?this.render.main.main.setAttribute("aria-label",h):r&&this.render.main.main.setAttribute("aria-labelledby",r),this.selectEl.parentNode&&this.selectEl.parentNode.insertBefore(this.render.main.main,this.selectEl.nextSibling),window.addEventListener("resize",this.windowResize,!1),"auto"===this.settings.openPosition&&window.addEventListener("scroll",this.windowScroll,!1),document.addEventListener("visibilitychange",this.windowVisibilityChange),this.settings.disabled&&this.disable(),this.settings.alwaysOpen&&this.open(),this.selectEl.slim=this}enable(){this.settings.disabled=!1,this.select.enable(),this.render.enable()}disable(){this.settings.disabled=!0,this.select.disable(),this.render.disable()}getData(){return this.store.getData()}setData(t){const e=this.store.getSelected(),i=this.store.validateDataArray(t);if(i)return void(this.events.error&&this.events.error(i));this.store.setData(t);const n=this.store.getData();this.select.updateOptions(n),this.render.renderValues(),this.render.renderOptions(n),this.events.afterChange&&!s(e,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}getSelected(){return this.store.getSelectedOptions().map((t=>t.value))}setSelected(t,e=!0){const i=this.store.getSelected(),n=this.store.getDataOptions();t=Array.isArray(t)?t:[t];const a=[];for(const e of t)if(n.find((t=>t.id==e)))a.push(e);else for(const t of n.filter((t=>t.value==e)))a.push(t.id);this.store.setSelectedBy("id",a);const l=this.store.getData();this.select.updateOptions(l),this.render.renderValues(),""!==this.render.content.search.input.value?this.search(this.render.content.search.input.value):this.render.renderOptions(l),e&&this.events.afterChange&&!s(i,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}addOption(t){const e=this.store.getSelected();this.store.getDataOptions().some((e=>{var s;return e.value===(null!==(s=t.value)&&void 0!==s?s:t.text)}))||this.store.addOption(t);const i=this.store.getData();this.select.updateOptions(i),this.render.renderValues(),this.render.renderOptions(i),this.events.afterChange&&!s(e,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}open(){this.settings.disabled||this.settings.isOpen||(this.events.beforeOpen&&this.events.beforeOpen(),this.render.open(),this.settings.showSearch&&this.render.searchFocus(),this.settings.isOpen=!0,setTimeout((()=>{this.events.afterOpen&&this.events.afterOpen(),this.settings.isOpen&&(this.settings.isFullOpen=!0),document.addEventListener("click",this.documentClick)}),this.settings.timeoutDelay),"absolute"===this.settings.contentPosition&&(this.settings.intervalMove&&clearInterval(this.settings.intervalMove),this.settings.intervalMove=setInterval(this.render.moveContent.bind(this.render),500)))}close(t=null){this.settings.isOpen&&!this.settings.alwaysOpen&&(this.events.beforeClose&&this.events.beforeClose(),this.render.close(),""!==this.render.content.search.input.value&&this.search(""),this.render.mainFocus(t),this.settings.isOpen=!1,this.settings.isFullOpen=!1,setTimeout((()=>{this.events.afterClose&&this.events.afterClose(),document.removeEventListener("click",this.documentClick)}),this.settings.timeoutDelay),this.settings.intervalMove&&clearInterval(this.settings.intervalMove))}search(t){if(this.render.content.search.input.value!==t&&(this.render.content.search.input.value=t),!this.events.search)return void this.render.renderOptions(""===t?this.store.getData():this.store.search(t,this.events.searchFilter));this.render.renderSearching();const e=this.events.search(t,this.store.getSelectedOptions());e instanceof Promise?e.then((t=>{this.render.renderOptions(this.store.partialToFullData(t))})).catch((t=>{this.render.renderError("string"==typeof t?t:t.message)})):Array.isArray(e)?this.render.renderOptions(this.store.partialToFullData(e)):this.render.renderError("Search event must return a promise or an array of data")}destroy(){document.removeEventListener("click",this.documentClick),window.removeEventListener("resize",this.windowResize,!1),"auto"===this.settings.openPosition&&window.removeEventListener("scroll",this.windowScroll,!1),document.removeEventListener("visibilitychange",this.windowVisibilityChange),this.store.setData([]),this.render.destroy(),this.select.destroy()}}})); diff --git a/dist/slimselect.umd.js b/dist/slimselect.umd.js index 0e8ad964..1f31de2e 100644 --- a/dist/slimselect.umd.js +++ b/dist/slimselect.umd.js @@ -189,7 +189,7 @@ } } getSelected() { - return this.getSelectedOptions().map(option => option.id); + return this.getSelectedOptions().map((option) => option.id); } getSelectedOptions() { return this.filter((opt) => { @@ -1403,7 +1403,7 @@ return options; } getSelectedValues() { - return this.getSelectedOptions().map(option => option.value); + return this.getSelectedOptions().map((option) => option.value); } setSelected(ids) { this.changeListen(false); @@ -1640,7 +1640,7 @@ this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class); this.select.hideUI(); this.select.onValueChange = (options) => { - this.setSelected(options.map(option => option.id)); + this.setSelected(options.map((option) => option.id)); }; this.select.onClassChange = (classes) => { this.settings.class = classes; @@ -1730,11 +1730,23 @@ } } getSelected() { - return this.store.getSelected(); + return this.store.getSelectedOptions().map((option) => option.value); } - setSelected(id, runAfterChange = true) { + setSelected(values, runAfterChange = true) { const selected = this.store.getSelected(); - this.store.setSelectedBy('id', Array.isArray(id) ? id : [id]); + const options = this.store.getDataOptions(); + values = Array.isArray(values) ? values : [values]; + const ids = []; + for (const value of values) { + if (options.find((option) => option.id == value)) { + ids.push(value); + continue; + } + for (const option of options.filter((option) => option.value == value)) { + ids.push(option.id); + } + } + this.store.setSelectedBy('id', ids); const data = this.store.getData(); this.select.updateOptions(data); this.render.renderValues(); diff --git a/dist/slimselect.umd.min.js b/dist/slimselect.umd.min.js index 8fde4b4e..b8ae4226 100644 --- a/dist/slimselect.umd.min.js +++ b/dist/slimselect.umd.min.js @@ -1 +1 @@ -!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).SlimSelect=e()}(this,(function(){"use strict";function t(){return Math.random().toString(36).substring(2,10)}function e(t,e=50,s=!1){let i;return function(...n){const a=self,l=s&&!i;clearTimeout(i),i=setTimeout((()=>{i=null,s||t.apply(a,n)}),e),l&&t.apply(a,n)}}function s(t,e){return JSON.stringify(t)===JSON.stringify(e)}class i{constructor(e){if(this.id=e.id&&""!==e.id?e.id:t(),this.label=e.label||"",this.selectAll=void 0!==e.selectAll&&e.selectAll,this.selectAllText=e.selectAllText||"Select All",this.closable=e.closable||"off",this.options=[],e.options)for(const t of e.options)this.options.push(new n(t))}}class n{constructor(e){this.id=e.id&&""!==e.id?e.id:t(),this.value=void 0===e.value?e.text:e.value,this.text=e.text||"",this.html=e.html||"",this.selected=void 0!==e.selected&&e.selected,this.display=void 0===e.display||e.display,this.disabled=void 0!==e.disabled&&e.disabled,this.mandatory=void 0!==e.mandatory&&e.mandatory,this.placeholder=void 0!==e.placeholder&&e.placeholder,this.class=e.class||"",this.style=e.style||"",this.data=e.data||{}}}class a{constructor(t,e){this.selectType="single",this.data=[],this.selectType=t,this.setData(e)}validateDataArray(t){if(!Array.isArray(t))return new Error("Data must be an array");for(let e of t){if(!(e instanceof i||"label"in e))return e instanceof n||"text"in e?this.validateOption(e):new Error("Data object must be a valid optgroup or option");if(!("label"in e))return new Error("Optgroup must have a label");if("options"in e&&e.options)for(let t of e.options)return this.validateOption(t)}return null}validateOption(t){return"text"in t?null:new Error("Option must have a text")}partialToFullData(t){let e=[];return t.forEach((t=>{if(t instanceof i||"label"in t){let s=[];"options"in t&&t.options&&t.options.forEach((t=>{s.push(new n(t))})),s.length>0&&e.push(new i(t))}(t instanceof n||"text"in t)&&e.push(new n(t))})),e}setData(t){this.data=this.partialToFullData(t),"single"===this.selectType&&this.setSelectedBy("id",this.getSelected())}getData(){return this.filter(null,!0)}getDataOptions(){return this.filter(null,!1)}addOption(t){this.setData(this.getData().concat(new n(t)))}setSelectedBy(t,e){let s=null,a=!1;for(let l of this.data){if(l instanceof i)for(let i of l.options)s||(s=i),i.selected=!a&&e.includes(i[t]),i.selected&&"single"===this.selectType&&(a=!0);l instanceof n&&(s||(s=l),l.selected=!a&&e.includes(l[t]),l.selected&&"single"===this.selectType&&(a=!0))}"single"===this.selectType&&s&&!a&&(s.selected=!0)}getSelected(){return this.getSelectedOptions().map((t=>t.id))}getSelectedOptions(){return this.filter((t=>t.selected),!1)}getOptgroupByID(t){for(let e of this.data)if(e instanceof i&&e.id===t)return e;return null}getOptionByID(t){let e=this.filter((e=>e.id===t),!1);return e.length?e[0]:null}getSelectType(){return this.selectType}getFirstOption(){let t=null;for(let e of this.data)if(e instanceof i?t=e.options[0]:e instanceof n&&(t=e),t)break;return t}search(t,e){return""===(t=t.trim())?this.getData():this.filter((s=>e(s,t)),!0)}filter(t,e){const s=[];return this.data.forEach((a=>{if(a instanceof i){let l=[];if(a.options.forEach((i=>{t&&!t(i)||(e?l.push(new n(i)):s.push(new n(i)))})),l.length>0){let t=new i(a);t.options=l,s.push(t)}}a instanceof n&&(t&&!t(a)||s.push(new n(a)))})),s}}class l{constructor(t,e,s){this.classes={main:"ss-main",placeholder:"ss-placeholder",values:"ss-values",single:"ss-single",max:"ss-max",value:"ss-value",valueText:"ss-value-text",valueDelete:"ss-value-delete",valueOut:"ss-value-out",deselect:"ss-deselect",deselectPath:"M10,10 L90,90 M10,90 L90,10",arrow:"ss-arrow",arrowClose:"M10,30 L50,70 L90,30",arrowOpen:"M10,70 L50,30 L90,70",content:"ss-content",openAbove:"ss-open-above",openBelow:"ss-open-below",search:"ss-search",searchHighlighter:"ss-search-highlight",searching:"ss-searching",addable:"ss-addable",addablePath:"M50,10 L50,90 M10,50 L90,50",list:"ss-list",optgroup:"ss-optgroup",optgroupLabel:"ss-optgroup-label",optgroupLabelText:"ss-optgroup-label-text",optgroupActions:"ss-optgroup-actions",optgroupSelectAll:"ss-selectall",optgroupSelectAllBox:"M60,10 L10,10 L10,90 L90,90 L90,50",optgroupSelectAllCheck:"M30,45 L50,70 L90,10",optgroupClosable:"ss-closable",option:"ss-option",optionDelete:"M10,10 L90,90 M10,90 L90,10",highlighted:"ss-highlighted",open:"ss-open",close:"ss-close",selected:"ss-selected",error:"ss-error",disabled:"ss-disabled",hide:"ss-hide"},this.store=e,this.settings=t,this.callbacks=s,this.main=this.mainDiv(),this.content=this.contentDiv(),this.updateClassStyles(),this.updateAriaAttributes(),this.settings.contentLocation.appendChild(this.content.main)}enable(){this.main.main.classList.remove(this.classes.disabled),this.content.search.input.disabled=!1}disable(){this.main.main.classList.add(this.classes.disabled),this.content.search.input.disabled=!0}open(){this.main.arrow.path.setAttribute("d",this.classes.arrowOpen),this.main.main.classList.add("up"===this.settings.openPosition?this.classes.openAbove:this.classes.openBelow),this.main.main.setAttribute("aria-expanded","true"),this.moveContent();const t=this.store.getSelectedOptions();if(t.length){const e=t[t.length-1].id,s=this.content.list.querySelector('[data-id="'+e+'"]');s&&this.ensureElementInView(this.content.list,s)}}close(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.remove(this.classes.openBelow),this.main.main.setAttribute("aria-expanded","false"),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.main.arrow.path.setAttribute("d",this.classes.arrowClose)}updateClassStyles(){if(this.main.main.className="",this.main.main.removeAttribute("style"),this.content.main.className="",this.content.main.removeAttribute("style"),this.main.main.classList.add(this.classes.main),this.content.main.classList.add(this.classes.content),""!==this.settings.style&&(this.main.main.style.cssText=this.settings.style,this.content.main.style.cssText=this.settings.style),this.settings.class.length)for(const t of this.settings.class)""!==t.trim()&&(this.main.main.classList.add(t.trim()),this.content.main.classList.add(t.trim()));"relative"===this.settings.contentPosition&&this.content.main.classList.add("ss-"+this.settings.contentPosition)}updateAriaAttributes(){this.main.main.role="combobox",this.main.main.setAttribute("aria-haspopup","listbox"),this.main.main.setAttribute("aria-controls",this.content.main.id),this.main.main.setAttribute("aria-expanded","false"),this.content.main.setAttribute("role","listbox")}mainDiv(){var t;const e=document.createElement("div");e.dataset.id=this.settings.id,e.setAttribute("aria-label",this.settings.ariaLabel),e.tabIndex=0,e.onkeydown=t=>{switch(t.key){case"ArrowUp":case"ArrowDown":return this.callbacks.open(),"ArrowDown"===t.key?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Enter":case" ":this.callbacks.open();const e=this.content.list.querySelector("."+this.classes.highlighted);return e&&e.click(),!1;case"Escape":return this.callbacks.close(),!1}return!1},e.onclick=t=>{this.settings.disabled||(this.settings.isOpen?this.callbacks.close():this.callbacks.open())};const s=document.createElement("div");s.classList.add(this.classes.values),e.appendChild(s);const i=document.createElement("div");i.classList.add(this.classes.deselect);const n=null===(t=this.store)||void 0===t?void 0:t.getSelectedOptions();!this.settings.allowDeselect||this.settings.isMultiple&&n&&n.length<=0?i.classList.add(this.classes.hide):i.classList.remove(this.classes.hide),i.onclick=t=>{if(t.stopPropagation(),this.settings.disabled)return;let e=!0;const s=this.store.getSelectedOptions(),i=[];if(this.callbacks.beforeChange&&(e=!0===this.callbacks.beforeChange(i,s)),e){if(this.settings.isMultiple)this.callbacks.setSelected([],!1),this.updateDeselectAll();else{const t=this.store.getFirstOption(),e=t?t.id:"";this.callbacks.setSelected(e,!1)}this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(this.store.getSelectedOptions())}};const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100");const l=document.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("d",this.classes.deselectPath),a.appendChild(l),i.appendChild(a),e.appendChild(i);const o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.classList.add(this.classes.arrow),o.setAttribute("viewBox","0 0 100 100");const c=document.createElementNS("http://www.w3.org/2000/svg","path");return c.setAttribute("d",this.classes.arrowClose),this.settings.alwaysOpen&&o.classList.add(this.classes.hide),o.appendChild(c),e.appendChild(o),{main:e,values:s,deselect:{main:i,svg:a,path:l},arrow:{main:o,path:c}}}mainFocus(t){"click"!==t&&this.main.main.focus({preventScroll:!0})}placeholder(){const t=this.store.filter((t=>t.placeholder),!1);let e=this.settings.placeholderText;t.length&&(""!==t[0].html?e=t[0].html:""!==t[0].text&&(e=t[0].text));const s=document.createElement("div");return s.classList.add(this.classes.placeholder),s.innerHTML=e,s}renderValues(){this.settings.isMultiple?(this.renderMultipleValues(),this.updateDeselectAll()):this.renderSingleValue()}renderSingleValue(){const t=this.store.filter((t=>t.selected&&!t.placeholder),!1),e=t.length>0?t[0]:null;if(e){const t=document.createElement("div");t.classList.add(this.classes.single),e.html?t.innerHTML=e.html:t.innerText=e.text,this.main.values.innerHTML=t.outerHTML}else this.main.values.innerHTML=this.placeholder().outerHTML;this.settings.allowDeselect&&t.length?this.main.deselect.main.classList.remove(this.classes.hide):this.main.deselect.main.classList.add(this.classes.hide)}renderMultipleValues(){let t=this.main.values.childNodes,e=this.store.filter((t=>t.selected&&t.display),!1);if(0===e.length)return void(this.main.values.innerHTML=this.placeholder().outerHTML);{const t=this.main.values.querySelector("."+this.classes.placeholder);t&&t.remove()}if(e.length>this.settings.maxValuesShown){const t=document.createElement("div");return t.classList.add(this.classes.max),t.textContent=this.settings.maxValuesMessage.replace("{number}",e.length.toString()),void(this.main.values.innerHTML=t.outerHTML)}{const t=this.main.values.querySelector("."+this.classes.max);t&&t.remove()}let s=[];for(let i=0;it.id===a),!1).length||s.push(n)}}for(const t of s)t.classList.add(this.classes.valueOut),setTimeout((()=>{this.main.values.hasChildNodes()&&this.main.values.contains(t)&&this.main.values.removeChild(t)}),100);t=this.main.values.childNodes;for(let s=0;s{if(e.preventDefault(),e.stopPropagation(),this.settings.disabled)return;let s=!0;const a=this.store.getSelectedOptions(),l=a.filter((e=>e.selected&&e.id!==t.id),!0);if(!(this.settings.minSelected&&l.length{this.callbacks.search(t.target.value)}),100),s.onkeydown=t=>{switch(t.key){case"ArrowUp":case"ArrowDown":return"ArrowDown"===t.key?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Escape":return this.callbacks.close(),!1;case"Enter":case" ":if(this.callbacks.addable&&t.ctrlKey)return i.click(),!1;{const t=this.content.list.querySelector("."+this.classes.highlighted);if(t)return t.click(),!1}return!0}return!0},t.appendChild(s),this.callbacks.addable){i.classList.add(this.classes.addable);const e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttribute("viewBox","0 0 100 100");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("d",this.classes.addablePath),e.appendChild(s),i.appendChild(e),i.onclick=t=>{if(t.preventDefault(),t.stopPropagation(),!this.callbacks.addable)return;const e=this.content.search.input.value.trim();if(""===e)return void this.content.search.input.focus();const s=t=>{let e=new n(t);if(this.callbacks.addOption(e),this.settings.isMultiple){let t=this.store.getSelected();t.push(e.id),this.callbacks.setSelected(t,!0)}else this.callbacks.setSelected([e.id],!0);this.callbacks.search(""),this.settings.closeOnSelect&&setTimeout((()=>{this.callbacks.close()}),100)},i=this.callbacks.addable(e);!1!==i&&null!=i&&(i instanceof Promise?i.then((t=>{s("string"==typeof t?{text:t,value:t}:t)})):s("string"==typeof i?{text:i,value:i}:i))},t.appendChild(i),a.addable={main:i,svg:e,path:s}}return a}searchFocus(){this.content.search.input.focus()}getOptions(t=!1,e=!1,s=!1){let i="."+this.classes.option;return t&&(i+=":not(."+this.classes.placeholder+")"),e&&(i+=":not(."+this.classes.disabled+")"),s&&(i+=":not(."+this.classes.hide+")"),Array.from(this.content.list.querySelectorAll(i))}highlight(t){const e=this.getOptions(!0,!0,!0);if(0===e.length)return;if(1===e.length&&!e[0].classList.contains(this.classes.highlighted))return void e[0].classList.add(this.classes.highlighted);let s=!1;for(const t of e)t.classList.contains(this.classes.highlighted)&&(s=!0);if(!s)for(const t of e)if(t.classList.contains(this.classes.selected)){t.classList.add(this.classes.highlighted);break}for(let s=0;s=0?s-1:e.length-1];a.classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,a);const l=a.parentElement;if(l&&l.classList.contains(this.classes.close)){const t=l.querySelector("."+this.classes.optgroupLabel);t&&t.click()}return}e["down"===t?0:e.length-1].classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,e["down"===t?0:e.length-1])}listDiv(){const t=document.createElement("div");return t.classList.add(this.classes.list),t}renderError(t){this.content.list.innerHTML="";const e=document.createElement("div");e.classList.add(this.classes.error),e.textContent=t,this.content.list.appendChild(e)}renderSearching(){this.content.list.innerHTML="";const t=document.createElement("div");t.classList.add(this.classes.searching),t.textContent=this.settings.searchingText,this.content.list.appendChild(t)}renderOptions(t){if(this.content.list.innerHTML="",0===t.length){const t=document.createElement("div");return t.classList.add(this.classes.search),t.innerHTML=this.settings.searchText,void this.content.list.appendChild(t)}for(const e of t){if(e instanceof i){const t=document.createElement("div");t.classList.add(this.classes.optgroup);const s=document.createElement("div");s.classList.add(this.classes.optgroupLabel),t.appendChild(s);const i=document.createElement("div");i.classList.add(this.classes.optgroupLabelText),i.textContent=e.label,s.appendChild(i);const n=document.createElement("div");if(n.classList.add(this.classes.optgroupActions),s.appendChild(n),this.settings.isMultiple&&e.selectAll){const t=document.createElement("div");t.classList.add(this.classes.optgroupSelectAll);let s=!0;for(const t of e.options)if(!t.selected){s=!1;break}s&&t.classList.add(this.classes.selected);const i=document.createElement("span");i.textContent=e.selectAllText,t.appendChild(i);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),t.appendChild(a);const l=document.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("d",this.classes.optgroupSelectAllBox),a.appendChild(l);const o=document.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d",this.classes.optgroupSelectAllCheck),a.appendChild(o),t.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation();const i=this.store.getSelected();if(s){const t=i.filter((t=>{for(const s of e.options)if(t===s.id)return!1;return!0}));this.callbacks.setSelected(t,!0)}else{const t=i.concat(e.options.map((t=>t.id)));for(const t of e.options)this.store.getOptionByID(t.id)||this.callbacks.addOption(t);this.callbacks.setSelected(t,!0)}})),n.appendChild(t)}if("off"!==e.closable){const i=document.createElement("div");i.classList.add(this.classes.optgroupClosable);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),a.classList.add(this.classes.arrow),i.appendChild(a);const l=document.createElementNS("http://www.w3.org/2000/svg","path");a.appendChild(l),e.options.some((t=>t.selected))||""!==this.content.search.input.value.trim()?(i.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):"open"===e.closable?(t.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):"close"===e.closable&&(t.classList.add(this.classes.close),l.setAttribute("d",this.classes.arrowClose)),s.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation(),t.classList.contains(this.classes.close)?(t.classList.remove(this.classes.close),t.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):(t.classList.remove(this.classes.open),t.classList.add(this.classes.close),l.setAttribute("d",this.classes.arrowClose))})),n.appendChild(i)}t.appendChild(s);for(const s of e.options)t.appendChild(this.option(s));this.content.list.appendChild(t)}e instanceof n&&this.content.list.appendChild(this.option(e))}}option(t){if(t.placeholder){const t=document.createElement("div");return t.classList.add(this.classes.option),t.classList.add(this.classes.hide),t}const e=document.createElement("div");return e.dataset.id=t.id,e.id=t.id,e.classList.add(this.classes.option),e.setAttribute("role","option"),t.class&&t.class.split(" ").forEach((t=>{e.classList.add(t)})),t.style&&(e.style.cssText=t.style),this.settings.searchHighlight&&""!==this.content.search.input.value.trim()?e.innerHTML=this.highlightText(""!==t.html?t.html:t.text,this.content.search.input.value,this.classes.searchHighlighter):""!==t.html?e.innerHTML=t.html:e.textContent=t.text,this.settings.showOptionTooltips&&e.textContent&&e.setAttribute("title",e.textContent),t.display||e.classList.add(this.classes.hide),t.disabled&&e.classList.add(this.classes.disabled),t.selected&&this.settings.hideSelected&&e.classList.add(this.classes.hide),t.selected?(e.classList.add(this.classes.selected),e.setAttribute("aria-selected","true"),this.main.main.setAttribute("aria-activedescendant",e.id)):(e.classList.remove(this.classes.selected),e.setAttribute("aria-selected","false")),e.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation();const s=this.store.getSelected(),i=e.currentTarget,n=String(i.dataset.id);if(t.disabled||t.selected&&!this.settings.allowDeselect)return;if(this.settings.isMultiple&&this.settings.maxSelected<=s.length&&!t.selected||this.settings.isMultiple&&this.settings.minSelected>=s.length&&t.selected)return;let a=!1;const l=this.store.getSelectedOptions();let o=[];this.settings.isMultiple&&(o=t.selected?l.filter((t=>t.id!==n)):l.concat(t)),this.settings.isMultiple||(o=t.selected?[]:[t]),this.callbacks.beforeChange||(a=!0),this.callbacks.beforeChange&&(a=!1!==this.callbacks.beforeChange(o,l)),a&&(this.store.getOptionByID(n)||this.callbacks.addOption(t),this.callbacks.setSelected(o.map((t=>t.id)),!1),this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(o))})),e}destroy(){this.main.main.remove(),this.content.main.remove()}highlightText(t,e,s){let i=t;const n=new RegExp("("+e.trim()+")(?![^<]*>[^<>]*${o}`),i}moveContentAbove(){const t=this.main.main.offsetHeight,e=this.content.main.offsetHeight;this.main.main.classList.remove(this.classes.openBelow),this.main.main.classList.add(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.content.main.classList.add(this.classes.openAbove);const s=this.main.main.getBoundingClientRect();this.content.main.style.margin="-"+(t+e-1)+"px 0px 0px 0px",this.content.main.style.top=s.top+s.height+window.scrollY+"px",this.content.main.style.left=s.left+window.scrollX+"px",this.content.main.style.width=s.width+"px"}moveContentBelow(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.add(this.classes.openBelow),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.add(this.classes.openBelow);const t=this.main.main.getBoundingClientRect();this.content.main.style.margin="-1px 0px 0px 0px","relative"!==this.settings.contentPosition&&(this.content.main.style.top=t.top+t.height+window.scrollY+"px",this.content.main.style.left=t.left+window.scrollX+"px",this.content.main.style.width=t.width+"px")}ensureElementInView(t,e){const s=t.scrollTop+t.offsetTop,i=s+t.clientHeight,n=e.offsetTop,a=n+e.clientHeight;ni&&(t.scrollTop+=a-i)}putContent(){const t=this.main.main.offsetHeight,e=this.main.main.getBoundingClientRect(),s=this.content.main.offsetHeight;return window.innerHeight-(e.top+t)<=s&&e.top>s?"up":"down"}updateDeselectAll(){if(!this.store||!this.settings)return;const t=this.store.getSelectedOptions(),e=t&&t.length>0,s=this.settings.isMultiple,i=this.settings.allowDeselect,n=this.main.deselect.main,a=this.classes.hide;!i||s&&!e?n.classList.add(a):n.classList.remove(a)}}class o{constructor(t){this.listen=!1,this.observer=null,this.select=t,this.valueChange=this.valueChange.bind(this),this.select.addEventListener("change",this.valueChange,{passive:!0}),this.observer=new MutationObserver(this.observeCall.bind(this)),this.changeListen(!0)}enable(){this.select.disabled=!1}disable(){this.select.disabled=!0}hideUI(){this.select.tabIndex=-1,this.select.style.display="none",this.select.setAttribute("aria-hidden","true")}showUI(){this.select.removeAttribute("tabindex"),this.select.style.display="",this.select.removeAttribute("aria-hidden")}changeListen(t){this.listen=t,t&&this.observer&&this.observer.observe(this.select,{subtree:!0,childList:!0,attributes:!0}),t||this.observer&&this.observer.disconnect()}valueChange(t){return this.listen&&this.onValueChange&&this.onValueChange(this.getSelectedOptions()),!0}observeCall(t){if(!this.listen)return;let e=!1,s=!1,i=!1;for(const n of t)n.target===this.select&&("disabled"===n.attributeName&&(s=!0),"class"===n.attributeName&&(e=!0)),"OPTGROUP"!==n.target.nodeName&&"OPTION"!==n.target.nodeName||(i=!0);e&&this.onClassChange&&this.onClassChange(this.select.className.split(" ")),s&&this.onDisabledChange&&(this.changeListen(!1),this.onDisabledChange(this.select.disabled),this.changeListen(!0)),i&&this.onOptionsChange&&(this.changeListen(!1),this.onOptionsChange(this.getData()),this.changeListen(!0))}getData(){let t=[];const e=this.select.childNodes;for(const s of e)"OPTGROUP"===s.nodeName&&t.push(this.getDataFromOptgroup(s)),"OPTION"===s.nodeName&&t.push(this.getDataFromOption(s));return t}getDataFromOptgroup(t){let e={id:t.id,label:t.label,selectAll:!!t.dataset&&"true"===t.dataset.selectall,selectAllText:t.dataset?t.dataset.selectalltext:"Select all",closable:t.dataset?t.dataset.closable:"off",options:[]};const s=t.childNodes;for(const t of s)"OPTION"===t.nodeName&&e.options.push(this.getDataFromOption(t));return e}getDataFromOption(t){return{id:t.id,value:t.value,text:t.text,html:t.dataset&&t.dataset.html?t.dataset.html:"",selected:t.selected,display:"none"!==t.style.display,disabled:t.disabled,mandatory:!!t.dataset&&"true"===t.dataset.mandatory,placeholder:"true"===t.dataset.placeholder,class:t.className,style:t.style.cssText,data:t.dataset}}getSelectedOptions(){let t=[];const e=this.select.childNodes;for(const s of e){if("OPTGROUP"===s.nodeName){const e=s.childNodes;for(const s of e)if("OPTION"===s.nodeName){const e=s;e.selected&&t.push(this.getDataFromOption(e))}}if("OPTION"===s.nodeName){const e=s;e.selected&&t.push(this.getDataFromOption(e))}}return t}getSelectedValues(){return this.getSelectedOptions().map((t=>t.value))}setSelected(t){this.changeListen(!1);const e=this.select.childNodes;for(const s of e){if("OPTGROUP"===s.nodeName){const e=s.childNodes;for(const s of e)if("OPTION"===s.nodeName){const e=s;e.selected=t.includes(e.id)}}if("OPTION"===s.nodeName){const e=s;e.selected=t.includes(e.id)}}this.changeListen(!0)}updateSelect(t,e,s){this.changeListen(!1),t&&(this.select.dataset.id=t),e&&(this.select.style.cssText=e),s&&(this.select.className="",s.forEach((t=>{""!==t.trim()&&this.select.classList.add(t.trim())}))),this.changeListen(!0)}updateOptions(t){this.changeListen(!1),this.select.innerHTML="";for(const e of t)e instanceof i&&this.select.appendChild(this.createOptgroup(e)),e instanceof n&&this.select.appendChild(this.createOption(e));this.select.dispatchEvent(new Event("change")),this.changeListen(!0)}createOptgroup(t){const e=document.createElement("optgroup");if(e.id=t.id,e.label=t.label,t.selectAll&&(e.dataset.selectAll="true"),"off"!==t.closable&&(e.dataset.closable=t.closable),t.options)for(const s of t.options)e.appendChild(this.createOption(s));return e}createOption(t){const e=document.createElement("option");return e.id=t.id,e.value=t.value,e.innerHTML=t.text,""!==t.html&&e.setAttribute("data-html",t.html),t.selected&&(e.selected=t.selected),t.disabled&&(e.disabled=!0),!1===t.display&&(e.style.display="none"),t.placeholder&&e.setAttribute("data-placeholder","true"),t.mandatory&&e.setAttribute("data-mandatory","true"),t.class&&t.class.split(" ").forEach((t=>{e.classList.add(t)})),t.data&&"object"==typeof t.data&&Object.keys(t.data).forEach((s=>{e.setAttribute("data-"+function(t){const e=t.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(t=>"-"+t.toLowerCase()));return t[0]===t[0].toUpperCase()?e.substring(1):e}(s),t.data[s])})),e}destroy(){this.changeListen(!1),this.select.removeEventListener("change",this.valueChange),this.observer&&(this.observer.disconnect(),this.observer=null),delete this.select.dataset.id,this.showUI()}}class c{constructor(e){this.id="",this.style="",this.class=[],this.isMultiple=!1,this.isOpen=!1,this.isFullOpen=!1,this.intervalMove=null,e||(e={}),this.id="ss-"+t(),this.style=e.style||"",this.class=e.class||[],this.disabled=void 0!==e.disabled&&e.disabled,this.alwaysOpen=void 0!==e.alwaysOpen&&e.alwaysOpen,this.showSearch=void 0===e.showSearch||e.showSearch,this.ariaLabel=e.ariaLabel||"Combobox",this.searchPlaceholder=e.searchPlaceholder||"Search",this.searchText=e.searchText||"No Results",this.searchingText=e.searchingText||"Searching...",this.searchHighlight=void 0!==e.searchHighlight&&e.searchHighlight,this.closeOnSelect=void 0===e.closeOnSelect||e.closeOnSelect,this.contentLocation=e.contentLocation||document.body,this.contentPosition=e.contentPosition||"absolute",this.openPosition=e.openPosition||"auto",this.placeholderText=void 0!==e.placeholderText?e.placeholderText:"Select Value",this.allowDeselect=void 0!==e.allowDeselect&&e.allowDeselect,this.hideSelected=void 0!==e.hideSelected&&e.hideSelected,this.keepOrder=void 0!==e.keepOrder&&e.keepOrder,this.showOptionTooltips=void 0!==e.showOptionTooltips&&e.showOptionTooltips,this.minSelected=e.minSelected||0,this.maxSelected=e.maxSelected||1e3,this.timeoutDelay=e.timeoutDelay||200,this.maxValuesShown=e.maxValuesShown||20,this.maxValuesMessage=e.maxValuesMessage||"{number} selected"}}return class{constructor(t){var s;if(this.events={search:void 0,searchFilter:(t,e)=>-1!==t.text.toLowerCase().indexOf(e.toLowerCase()),addable:void 0,beforeChange:void 0,afterChange:void 0,beforeOpen:void 0,afterOpen:void 0,beforeClose:void 0,afterClose:void 0},this.windowResize=e((()=>{(this.settings.isOpen||this.settings.isFullOpen)&&this.render.moveContent()})),this.windowScroll=e((()=>{(this.settings.isOpen||this.settings.isFullOpen)&&this.render.moveContent()})),this.documentClick=t=>{this.settings.isOpen&&t.target&&!function(t,e){function s(t,s){return s&&t&&t.classList&&t.classList.contains(s)||s&&t&&t.dataset&&t.dataset.id&&t.dataset.id===e?t:null}return s(t,e)||function t(e,i){return e&&e!==document?s(e,i)?e:t(e.parentNode,i):null}(t,e)}(t.target,this.settings.id)&&this.close(t.type)},this.windowVisibilityChange=()=>{document.hidden&&this.close()},this.selectEl="string"==typeof t.select?document.querySelector(t.select):t.select,!this.selectEl)return void(t.events&&t.events.error&&t.events.error(new Error("Could not find select element")));if("SELECT"!==this.selectEl.tagName)return void(t.events&&t.events.error&&t.events.error(new Error("Element isnt of type select")));this.selectEl.dataset.ssid&&this.destroy(),this.settings=new c(t.settings);const i=["afterChange","beforeOpen","afterOpen","beforeClose","afterClose"];for(const s in t.events)t.events.hasOwnProperty(s)&&(-1!==i.indexOf(s)?this.events[s]=e(t.events[s],100):this.events[s]=t.events[s]);this.settings.disabled=(null===(s=t.settings)||void 0===s?void 0:s.disabled)?t.settings.disabled:this.selectEl.disabled,this.settings.isMultiple=this.selectEl.multiple,this.settings.style=this.selectEl.style.cssText,this.settings.class=this.selectEl.className.split(" "),this.select=new o(this.selectEl),this.select.updateSelect(this.settings.id,this.settings.style,this.settings.class),this.select.hideUI(),this.select.onValueChange=t=>{this.setSelected(t.map((t=>t.id)))},this.select.onClassChange=t=>{this.settings.class=t,this.render.updateClassStyles()},this.select.onDisabledChange=t=>{t?this.disable():this.enable()},this.select.onOptionsChange=t=>{this.setData(t)},this.store=new a(this.settings.isMultiple?"multiple":"single",t.data?t.data:this.select.getData()),t.data&&this.select.updateOptions(this.store.getData());const n={open:this.open.bind(this),close:this.close.bind(this),addable:this.events.addable?this.events.addable:void 0,setSelected:this.setSelected.bind(this),addOption:this.addOption.bind(this),search:this.search.bind(this),beforeChange:this.events.beforeChange,afterChange:this.events.afterChange};this.render=new l(this.settings,this.store,n),this.render.renderValues(),this.render.renderOptions(this.store.getData());const h=this.selectEl.getAttribute("aria-label"),r=this.selectEl.getAttribute("aria-labelledby");h?this.render.main.main.setAttribute("aria-label",h):r&&this.render.main.main.setAttribute("aria-labelledby",r),this.selectEl.parentNode&&this.selectEl.parentNode.insertBefore(this.render.main.main,this.selectEl.nextSibling),window.addEventListener("resize",this.windowResize,!1),"auto"===this.settings.openPosition&&window.addEventListener("scroll",this.windowScroll,!1),document.addEventListener("visibilitychange",this.windowVisibilityChange),this.settings.disabled&&this.disable(),this.settings.alwaysOpen&&this.open(),this.selectEl.slim=this}enable(){this.settings.disabled=!1,this.select.enable(),this.render.enable()}disable(){this.settings.disabled=!0,this.select.disable(),this.render.disable()}getData(){return this.store.getData()}setData(t){const e=this.store.getSelected(),i=this.store.validateDataArray(t);if(i)return void(this.events.error&&this.events.error(i));this.store.setData(t);const n=this.store.getData();this.select.updateOptions(n),this.render.renderValues(),this.render.renderOptions(n),this.events.afterChange&&!s(e,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}getSelected(){return this.store.getSelected()}setSelected(t,e=!0){const i=this.store.getSelected();this.store.setSelectedBy("id",Array.isArray(t)?t:[t]);const n=this.store.getData();this.select.updateOptions(n),this.render.renderValues(),""!==this.render.content.search.input.value?this.search(this.render.content.search.input.value):this.render.renderOptions(n),e&&this.events.afterChange&&!s(i,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}addOption(t){const e=this.store.getSelected();this.store.getDataOptions().some((e=>{var s;return e.value===(null!==(s=t.value)&&void 0!==s?s:t.text)}))||this.store.addOption(t);const i=this.store.getData();this.select.updateOptions(i),this.render.renderValues(),this.render.renderOptions(i),this.events.afterChange&&!s(e,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}open(){this.settings.disabled||this.settings.isOpen||(this.events.beforeOpen&&this.events.beforeOpen(),this.render.open(),this.settings.showSearch&&this.render.searchFocus(),this.settings.isOpen=!0,setTimeout((()=>{this.events.afterOpen&&this.events.afterOpen(),this.settings.isOpen&&(this.settings.isFullOpen=!0),document.addEventListener("click",this.documentClick)}),this.settings.timeoutDelay),"absolute"===this.settings.contentPosition&&(this.settings.intervalMove&&clearInterval(this.settings.intervalMove),this.settings.intervalMove=setInterval(this.render.moveContent.bind(this.render),500)))}close(t=null){this.settings.isOpen&&!this.settings.alwaysOpen&&(this.events.beforeClose&&this.events.beforeClose(),this.render.close(),""!==this.render.content.search.input.value&&this.search(""),this.render.mainFocus(t),this.settings.isOpen=!1,this.settings.isFullOpen=!1,setTimeout((()=>{this.events.afterClose&&this.events.afterClose(),document.removeEventListener("click",this.documentClick)}),this.settings.timeoutDelay),this.settings.intervalMove&&clearInterval(this.settings.intervalMove))}search(t){if(this.render.content.search.input.value!==t&&(this.render.content.search.input.value=t),!this.events.search)return void this.render.renderOptions(""===t?this.store.getData():this.store.search(t,this.events.searchFilter));this.render.renderSearching();const e=this.events.search(t,this.store.getSelectedOptions());e instanceof Promise?e.then((t=>{this.render.renderOptions(this.store.partialToFullData(t))})).catch((t=>{this.render.renderError("string"==typeof t?t:t.message)})):Array.isArray(e)?this.render.renderOptions(this.store.partialToFullData(e)):this.render.renderError("Search event must return a promise or an array of data")}destroy(){document.removeEventListener("click",this.documentClick),window.removeEventListener("resize",this.windowResize,!1),"auto"===this.settings.openPosition&&window.removeEventListener("scroll",this.windowScroll,!1),document.removeEventListener("visibilitychange",this.windowVisibilityChange),this.store.setData([]),this.render.destroy(),this.select.destroy()}}})); +!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).SlimSelect=e()}(this,(function(){"use strict";function t(){return Math.random().toString(36).substring(2,10)}function e(t,e=50,s=!1){let i;return function(...n){const a=self,l=s&&!i;clearTimeout(i),i=setTimeout((()=>{i=null,s||t.apply(a,n)}),e),l&&t.apply(a,n)}}function s(t,e){return JSON.stringify(t)===JSON.stringify(e)}class i{constructor(e){if(this.id=e.id&&""!==e.id?e.id:t(),this.label=e.label||"",this.selectAll=void 0!==e.selectAll&&e.selectAll,this.selectAllText=e.selectAllText||"Select All",this.closable=e.closable||"off",this.options=[],e.options)for(const t of e.options)this.options.push(new n(t))}}class n{constructor(e){this.id=e.id&&""!==e.id?e.id:t(),this.value=void 0===e.value?e.text:e.value,this.text=e.text||"",this.html=e.html||"",this.selected=void 0!==e.selected&&e.selected,this.display=void 0===e.display||e.display,this.disabled=void 0!==e.disabled&&e.disabled,this.mandatory=void 0!==e.mandatory&&e.mandatory,this.placeholder=void 0!==e.placeholder&&e.placeholder,this.class=e.class||"",this.style=e.style||"",this.data=e.data||{}}}class a{constructor(t,e){this.selectType="single",this.data=[],this.selectType=t,this.setData(e)}validateDataArray(t){if(!Array.isArray(t))return new Error("Data must be an array");for(let e of t){if(!(e instanceof i||"label"in e))return e instanceof n||"text"in e?this.validateOption(e):new Error("Data object must be a valid optgroup or option");if(!("label"in e))return new Error("Optgroup must have a label");if("options"in e&&e.options)for(let t of e.options)return this.validateOption(t)}return null}validateOption(t){return"text"in t?null:new Error("Option must have a text")}partialToFullData(t){let e=[];return t.forEach((t=>{if(t instanceof i||"label"in t){let s=[];"options"in t&&t.options&&t.options.forEach((t=>{s.push(new n(t))})),s.length>0&&e.push(new i(t))}(t instanceof n||"text"in t)&&e.push(new n(t))})),e}setData(t){this.data=this.partialToFullData(t),"single"===this.selectType&&this.setSelectedBy("id",this.getSelected())}getData(){return this.filter(null,!0)}getDataOptions(){return this.filter(null,!1)}addOption(t){this.setData(this.getData().concat(new n(t)))}setSelectedBy(t,e){let s=null,a=!1;for(let l of this.data){if(l instanceof i)for(let i of l.options)s||(s=i),i.selected=!a&&e.includes(i[t]),i.selected&&"single"===this.selectType&&(a=!0);l instanceof n&&(s||(s=l),l.selected=!a&&e.includes(l[t]),l.selected&&"single"===this.selectType&&(a=!0))}"single"===this.selectType&&s&&!a&&(s.selected=!0)}getSelected(){return this.getSelectedOptions().map((t=>t.id))}getSelectedOptions(){return this.filter((t=>t.selected),!1)}getOptgroupByID(t){for(let e of this.data)if(e instanceof i&&e.id===t)return e;return null}getOptionByID(t){let e=this.filter((e=>e.id===t),!1);return e.length?e[0]:null}getSelectType(){return this.selectType}getFirstOption(){let t=null;for(let e of this.data)if(e instanceof i?t=e.options[0]:e instanceof n&&(t=e),t)break;return t}search(t,e){return""===(t=t.trim())?this.getData():this.filter((s=>e(s,t)),!0)}filter(t,e){const s=[];return this.data.forEach((a=>{if(a instanceof i){let l=[];if(a.options.forEach((i=>{t&&!t(i)||(e?l.push(new n(i)):s.push(new n(i)))})),l.length>0){let t=new i(a);t.options=l,s.push(t)}}a instanceof n&&(t&&!t(a)||s.push(new n(a)))})),s}}class l{constructor(t,e,s){this.classes={main:"ss-main",placeholder:"ss-placeholder",values:"ss-values",single:"ss-single",max:"ss-max",value:"ss-value",valueText:"ss-value-text",valueDelete:"ss-value-delete",valueOut:"ss-value-out",deselect:"ss-deselect",deselectPath:"M10,10 L90,90 M10,90 L90,10",arrow:"ss-arrow",arrowClose:"M10,30 L50,70 L90,30",arrowOpen:"M10,70 L50,30 L90,70",content:"ss-content",openAbove:"ss-open-above",openBelow:"ss-open-below",search:"ss-search",searchHighlighter:"ss-search-highlight",searching:"ss-searching",addable:"ss-addable",addablePath:"M50,10 L50,90 M10,50 L90,50",list:"ss-list",optgroup:"ss-optgroup",optgroupLabel:"ss-optgroup-label",optgroupLabelText:"ss-optgroup-label-text",optgroupActions:"ss-optgroup-actions",optgroupSelectAll:"ss-selectall",optgroupSelectAllBox:"M60,10 L10,10 L10,90 L90,90 L90,50",optgroupSelectAllCheck:"M30,45 L50,70 L90,10",optgroupClosable:"ss-closable",option:"ss-option",optionDelete:"M10,10 L90,90 M10,90 L90,10",highlighted:"ss-highlighted",open:"ss-open",close:"ss-close",selected:"ss-selected",error:"ss-error",disabled:"ss-disabled",hide:"ss-hide"},this.store=e,this.settings=t,this.callbacks=s,this.main=this.mainDiv(),this.content=this.contentDiv(),this.updateClassStyles(),this.updateAriaAttributes(),this.settings.contentLocation.appendChild(this.content.main)}enable(){this.main.main.classList.remove(this.classes.disabled),this.content.search.input.disabled=!1}disable(){this.main.main.classList.add(this.classes.disabled),this.content.search.input.disabled=!0}open(){this.main.arrow.path.setAttribute("d",this.classes.arrowOpen),this.main.main.classList.add("up"===this.settings.openPosition?this.classes.openAbove:this.classes.openBelow),this.main.main.setAttribute("aria-expanded","true"),this.moveContent();const t=this.store.getSelectedOptions();if(t.length){const e=t[t.length-1].id,s=this.content.list.querySelector('[data-id="'+e+'"]');s&&this.ensureElementInView(this.content.list,s)}}close(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.remove(this.classes.openBelow),this.main.main.setAttribute("aria-expanded","false"),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.main.arrow.path.setAttribute("d",this.classes.arrowClose)}updateClassStyles(){if(this.main.main.className="",this.main.main.removeAttribute("style"),this.content.main.className="",this.content.main.removeAttribute("style"),this.main.main.classList.add(this.classes.main),this.content.main.classList.add(this.classes.content),""!==this.settings.style&&(this.main.main.style.cssText=this.settings.style,this.content.main.style.cssText=this.settings.style),this.settings.class.length)for(const t of this.settings.class)""!==t.trim()&&(this.main.main.classList.add(t.trim()),this.content.main.classList.add(t.trim()));"relative"===this.settings.contentPosition&&this.content.main.classList.add("ss-"+this.settings.contentPosition)}updateAriaAttributes(){this.main.main.role="combobox",this.main.main.setAttribute("aria-haspopup","listbox"),this.main.main.setAttribute("aria-controls",this.content.main.id),this.main.main.setAttribute("aria-expanded","false"),this.content.main.setAttribute("role","listbox")}mainDiv(){var t;const e=document.createElement("div");e.dataset.id=this.settings.id,e.setAttribute("aria-label",this.settings.ariaLabel),e.tabIndex=0,e.onkeydown=t=>{switch(t.key){case"ArrowUp":case"ArrowDown":return this.callbacks.open(),"ArrowDown"===t.key?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Enter":case" ":this.callbacks.open();const e=this.content.list.querySelector("."+this.classes.highlighted);return e&&e.click(),!1;case"Escape":return this.callbacks.close(),!1}return!1},e.onclick=t=>{this.settings.disabled||(this.settings.isOpen?this.callbacks.close():this.callbacks.open())};const s=document.createElement("div");s.classList.add(this.classes.values),e.appendChild(s);const i=document.createElement("div");i.classList.add(this.classes.deselect);const n=null===(t=this.store)||void 0===t?void 0:t.getSelectedOptions();!this.settings.allowDeselect||this.settings.isMultiple&&n&&n.length<=0?i.classList.add(this.classes.hide):i.classList.remove(this.classes.hide),i.onclick=t=>{if(t.stopPropagation(),this.settings.disabled)return;let e=!0;const s=this.store.getSelectedOptions(),i=[];if(this.callbacks.beforeChange&&(e=!0===this.callbacks.beforeChange(i,s)),e){if(this.settings.isMultiple)this.callbacks.setSelected([],!1),this.updateDeselectAll();else{const t=this.store.getFirstOption(),e=t?t.id:"";this.callbacks.setSelected(e,!1)}this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(this.store.getSelectedOptions())}};const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100");const l=document.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("d",this.classes.deselectPath),a.appendChild(l),i.appendChild(a),e.appendChild(i);const o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.classList.add(this.classes.arrow),o.setAttribute("viewBox","0 0 100 100");const c=document.createElementNS("http://www.w3.org/2000/svg","path");return c.setAttribute("d",this.classes.arrowClose),this.settings.alwaysOpen&&o.classList.add(this.classes.hide),o.appendChild(c),e.appendChild(o),{main:e,values:s,deselect:{main:i,svg:a,path:l},arrow:{main:o,path:c}}}mainFocus(t){"click"!==t&&this.main.main.focus({preventScroll:!0})}placeholder(){const t=this.store.filter((t=>t.placeholder),!1);let e=this.settings.placeholderText;t.length&&(""!==t[0].html?e=t[0].html:""!==t[0].text&&(e=t[0].text));const s=document.createElement("div");return s.classList.add(this.classes.placeholder),s.innerHTML=e,s}renderValues(){this.settings.isMultiple?(this.renderMultipleValues(),this.updateDeselectAll()):this.renderSingleValue()}renderSingleValue(){const t=this.store.filter((t=>t.selected&&!t.placeholder),!1),e=t.length>0?t[0]:null;if(e){const t=document.createElement("div");t.classList.add(this.classes.single),e.html?t.innerHTML=e.html:t.innerText=e.text,this.main.values.innerHTML=t.outerHTML}else this.main.values.innerHTML=this.placeholder().outerHTML;this.settings.allowDeselect&&t.length?this.main.deselect.main.classList.remove(this.classes.hide):this.main.deselect.main.classList.add(this.classes.hide)}renderMultipleValues(){let t=this.main.values.childNodes,e=this.store.filter((t=>t.selected&&t.display),!1);if(0===e.length)return void(this.main.values.innerHTML=this.placeholder().outerHTML);{const t=this.main.values.querySelector("."+this.classes.placeholder);t&&t.remove()}if(e.length>this.settings.maxValuesShown){const t=document.createElement("div");return t.classList.add(this.classes.max),t.textContent=this.settings.maxValuesMessage.replace("{number}",e.length.toString()),void(this.main.values.innerHTML=t.outerHTML)}{const t=this.main.values.querySelector("."+this.classes.max);t&&t.remove()}let s=[];for(let i=0;it.id===a),!1).length||s.push(n)}}for(const t of s)t.classList.add(this.classes.valueOut),setTimeout((()=>{this.main.values.hasChildNodes()&&this.main.values.contains(t)&&this.main.values.removeChild(t)}),100);t=this.main.values.childNodes;for(let s=0;s{if(e.preventDefault(),e.stopPropagation(),this.settings.disabled)return;let s=!0;const a=this.store.getSelectedOptions(),l=a.filter((e=>e.selected&&e.id!==t.id),!0);if(!(this.settings.minSelected&&l.length{this.callbacks.search(t.target.value)}),100),s.onkeydown=t=>{switch(t.key){case"ArrowUp":case"ArrowDown":return"ArrowDown"===t.key?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Escape":return this.callbacks.close(),!1;case"Enter":case" ":if(this.callbacks.addable&&t.ctrlKey)return i.click(),!1;{const t=this.content.list.querySelector("."+this.classes.highlighted);if(t)return t.click(),!1}return!0}return!0},t.appendChild(s),this.callbacks.addable){i.classList.add(this.classes.addable);const e=document.createElementNS("http://www.w3.org/2000/svg","svg");e.setAttribute("viewBox","0 0 100 100");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttribute("d",this.classes.addablePath),e.appendChild(s),i.appendChild(e),i.onclick=t=>{if(t.preventDefault(),t.stopPropagation(),!this.callbacks.addable)return;const e=this.content.search.input.value.trim();if(""===e)return void this.content.search.input.focus();const s=t=>{let e=new n(t);if(this.callbacks.addOption(e),this.settings.isMultiple){let t=this.store.getSelected();t.push(e.id),this.callbacks.setSelected(t,!0)}else this.callbacks.setSelected([e.id],!0);this.callbacks.search(""),this.settings.closeOnSelect&&setTimeout((()=>{this.callbacks.close()}),100)},i=this.callbacks.addable(e);!1!==i&&null!=i&&(i instanceof Promise?i.then((t=>{s("string"==typeof t?{text:t,value:t}:t)})):s("string"==typeof i?{text:i,value:i}:i))},t.appendChild(i),a.addable={main:i,svg:e,path:s}}return a}searchFocus(){this.content.search.input.focus()}getOptions(t=!1,e=!1,s=!1){let i="."+this.classes.option;return t&&(i+=":not(."+this.classes.placeholder+")"),e&&(i+=":not(."+this.classes.disabled+")"),s&&(i+=":not(."+this.classes.hide+")"),Array.from(this.content.list.querySelectorAll(i))}highlight(t){const e=this.getOptions(!0,!0,!0);if(0===e.length)return;if(1===e.length&&!e[0].classList.contains(this.classes.highlighted))return void e[0].classList.add(this.classes.highlighted);let s=!1;for(const t of e)t.classList.contains(this.classes.highlighted)&&(s=!0);if(!s)for(const t of e)if(t.classList.contains(this.classes.selected)){t.classList.add(this.classes.highlighted);break}for(let s=0;s=0?s-1:e.length-1];a.classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,a);const l=a.parentElement;if(l&&l.classList.contains(this.classes.close)){const t=l.querySelector("."+this.classes.optgroupLabel);t&&t.click()}return}e["down"===t?0:e.length-1].classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,e["down"===t?0:e.length-1])}listDiv(){const t=document.createElement("div");return t.classList.add(this.classes.list),t}renderError(t){this.content.list.innerHTML="";const e=document.createElement("div");e.classList.add(this.classes.error),e.textContent=t,this.content.list.appendChild(e)}renderSearching(){this.content.list.innerHTML="";const t=document.createElement("div");t.classList.add(this.classes.searching),t.textContent=this.settings.searchingText,this.content.list.appendChild(t)}renderOptions(t){if(this.content.list.innerHTML="",0===t.length){const t=document.createElement("div");return t.classList.add(this.classes.search),t.innerHTML=this.settings.searchText,void this.content.list.appendChild(t)}for(const e of t){if(e instanceof i){const t=document.createElement("div");t.classList.add(this.classes.optgroup);const s=document.createElement("div");s.classList.add(this.classes.optgroupLabel),t.appendChild(s);const i=document.createElement("div");i.classList.add(this.classes.optgroupLabelText),i.textContent=e.label,s.appendChild(i);const n=document.createElement("div");if(n.classList.add(this.classes.optgroupActions),s.appendChild(n),this.settings.isMultiple&&e.selectAll){const t=document.createElement("div");t.classList.add(this.classes.optgroupSelectAll);let s=!0;for(const t of e.options)if(!t.selected){s=!1;break}s&&t.classList.add(this.classes.selected);const i=document.createElement("span");i.textContent=e.selectAllText,t.appendChild(i);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),t.appendChild(a);const l=document.createElementNS("http://www.w3.org/2000/svg","path");l.setAttribute("d",this.classes.optgroupSelectAllBox),a.appendChild(l);const o=document.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d",this.classes.optgroupSelectAllCheck),a.appendChild(o),t.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation();const i=this.store.getSelected();if(s){const t=i.filter((t=>{for(const s of e.options)if(t===s.id)return!1;return!0}));this.callbacks.setSelected(t,!0)}else{const t=i.concat(e.options.map((t=>t.id)));for(const t of e.options)this.store.getOptionByID(t.id)||this.callbacks.addOption(t);this.callbacks.setSelected(t,!0)}})),n.appendChild(t)}if("off"!==e.closable){const i=document.createElement("div");i.classList.add(this.classes.optgroupClosable);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),a.classList.add(this.classes.arrow),i.appendChild(a);const l=document.createElementNS("http://www.w3.org/2000/svg","path");a.appendChild(l),e.options.some((t=>t.selected))||""!==this.content.search.input.value.trim()?(i.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):"open"===e.closable?(t.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):"close"===e.closable&&(t.classList.add(this.classes.close),l.setAttribute("d",this.classes.arrowClose)),s.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation(),t.classList.contains(this.classes.close)?(t.classList.remove(this.classes.close),t.classList.add(this.classes.open),l.setAttribute("d",this.classes.arrowOpen)):(t.classList.remove(this.classes.open),t.classList.add(this.classes.close),l.setAttribute("d",this.classes.arrowClose))})),n.appendChild(i)}t.appendChild(s);for(const s of e.options)t.appendChild(this.option(s));this.content.list.appendChild(t)}e instanceof n&&this.content.list.appendChild(this.option(e))}}option(t){if(t.placeholder){const t=document.createElement("div");return t.classList.add(this.classes.option),t.classList.add(this.classes.hide),t}const e=document.createElement("div");return e.dataset.id=t.id,e.id=t.id,e.classList.add(this.classes.option),e.setAttribute("role","option"),t.class&&t.class.split(" ").forEach((t=>{e.classList.add(t)})),t.style&&(e.style.cssText=t.style),this.settings.searchHighlight&&""!==this.content.search.input.value.trim()?e.innerHTML=this.highlightText(""!==t.html?t.html:t.text,this.content.search.input.value,this.classes.searchHighlighter):""!==t.html?e.innerHTML=t.html:e.textContent=t.text,this.settings.showOptionTooltips&&e.textContent&&e.setAttribute("title",e.textContent),t.display||e.classList.add(this.classes.hide),t.disabled&&e.classList.add(this.classes.disabled),t.selected&&this.settings.hideSelected&&e.classList.add(this.classes.hide),t.selected?(e.classList.add(this.classes.selected),e.setAttribute("aria-selected","true"),this.main.main.setAttribute("aria-activedescendant",e.id)):(e.classList.remove(this.classes.selected),e.setAttribute("aria-selected","false")),e.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation();const s=this.store.getSelected(),i=e.currentTarget,n=String(i.dataset.id);if(t.disabled||t.selected&&!this.settings.allowDeselect)return;if(this.settings.isMultiple&&this.settings.maxSelected<=s.length&&!t.selected||this.settings.isMultiple&&this.settings.minSelected>=s.length&&t.selected)return;let a=!1;const l=this.store.getSelectedOptions();let o=[];this.settings.isMultiple&&(o=t.selected?l.filter((t=>t.id!==n)):l.concat(t)),this.settings.isMultiple||(o=t.selected?[]:[t]),this.callbacks.beforeChange||(a=!0),this.callbacks.beforeChange&&(a=!1!==this.callbacks.beforeChange(o,l)),a&&(this.store.getOptionByID(n)||this.callbacks.addOption(t),this.callbacks.setSelected(o.map((t=>t.id)),!1),this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(o))})),e}destroy(){this.main.main.remove(),this.content.main.remove()}highlightText(t,e,s){let i=t;const n=new RegExp("("+e.trim()+")(?![^<]*>[^<>]*${o}`),i}moveContentAbove(){const t=this.main.main.offsetHeight,e=this.content.main.offsetHeight;this.main.main.classList.remove(this.classes.openBelow),this.main.main.classList.add(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.content.main.classList.add(this.classes.openAbove);const s=this.main.main.getBoundingClientRect();this.content.main.style.margin="-"+(t+e-1)+"px 0px 0px 0px",this.content.main.style.top=s.top+s.height+window.scrollY+"px",this.content.main.style.left=s.left+window.scrollX+"px",this.content.main.style.width=s.width+"px"}moveContentBelow(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.add(this.classes.openBelow),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.add(this.classes.openBelow);const t=this.main.main.getBoundingClientRect();this.content.main.style.margin="-1px 0px 0px 0px","relative"!==this.settings.contentPosition&&(this.content.main.style.top=t.top+t.height+window.scrollY+"px",this.content.main.style.left=t.left+window.scrollX+"px",this.content.main.style.width=t.width+"px")}ensureElementInView(t,e){const s=t.scrollTop+t.offsetTop,i=s+t.clientHeight,n=e.offsetTop,a=n+e.clientHeight;ni&&(t.scrollTop+=a-i)}putContent(){const t=this.main.main.offsetHeight,e=this.main.main.getBoundingClientRect(),s=this.content.main.offsetHeight;return window.innerHeight-(e.top+t)<=s&&e.top>s?"up":"down"}updateDeselectAll(){if(!this.store||!this.settings)return;const t=this.store.getSelectedOptions(),e=t&&t.length>0,s=this.settings.isMultiple,i=this.settings.allowDeselect,n=this.main.deselect.main,a=this.classes.hide;!i||s&&!e?n.classList.add(a):n.classList.remove(a)}}class o{constructor(t){this.listen=!1,this.observer=null,this.select=t,this.valueChange=this.valueChange.bind(this),this.select.addEventListener("change",this.valueChange,{passive:!0}),this.observer=new MutationObserver(this.observeCall.bind(this)),this.changeListen(!0)}enable(){this.select.disabled=!1}disable(){this.select.disabled=!0}hideUI(){this.select.tabIndex=-1,this.select.style.display="none",this.select.setAttribute("aria-hidden","true")}showUI(){this.select.removeAttribute("tabindex"),this.select.style.display="",this.select.removeAttribute("aria-hidden")}changeListen(t){this.listen=t,t&&this.observer&&this.observer.observe(this.select,{subtree:!0,childList:!0,attributes:!0}),t||this.observer&&this.observer.disconnect()}valueChange(t){return this.listen&&this.onValueChange&&this.onValueChange(this.getSelectedOptions()),!0}observeCall(t){if(!this.listen)return;let e=!1,s=!1,i=!1;for(const n of t)n.target===this.select&&("disabled"===n.attributeName&&(s=!0),"class"===n.attributeName&&(e=!0)),"OPTGROUP"!==n.target.nodeName&&"OPTION"!==n.target.nodeName||(i=!0);e&&this.onClassChange&&this.onClassChange(this.select.className.split(" ")),s&&this.onDisabledChange&&(this.changeListen(!1),this.onDisabledChange(this.select.disabled),this.changeListen(!0)),i&&this.onOptionsChange&&(this.changeListen(!1),this.onOptionsChange(this.getData()),this.changeListen(!0))}getData(){let t=[];const e=this.select.childNodes;for(const s of e)"OPTGROUP"===s.nodeName&&t.push(this.getDataFromOptgroup(s)),"OPTION"===s.nodeName&&t.push(this.getDataFromOption(s));return t}getDataFromOptgroup(t){let e={id:t.id,label:t.label,selectAll:!!t.dataset&&"true"===t.dataset.selectall,selectAllText:t.dataset?t.dataset.selectalltext:"Select all",closable:t.dataset?t.dataset.closable:"off",options:[]};const s=t.childNodes;for(const t of s)"OPTION"===t.nodeName&&e.options.push(this.getDataFromOption(t));return e}getDataFromOption(t){return{id:t.id,value:t.value,text:t.text,html:t.dataset&&t.dataset.html?t.dataset.html:"",selected:t.selected,display:"none"!==t.style.display,disabled:t.disabled,mandatory:!!t.dataset&&"true"===t.dataset.mandatory,placeholder:"true"===t.dataset.placeholder,class:t.className,style:t.style.cssText,data:t.dataset}}getSelectedOptions(){let t=[];const e=this.select.childNodes;for(const s of e){if("OPTGROUP"===s.nodeName){const e=s.childNodes;for(const s of e)if("OPTION"===s.nodeName){const e=s;e.selected&&t.push(this.getDataFromOption(e))}}if("OPTION"===s.nodeName){const e=s;e.selected&&t.push(this.getDataFromOption(e))}}return t}getSelectedValues(){return this.getSelectedOptions().map((t=>t.value))}setSelected(t){this.changeListen(!1);const e=this.select.childNodes;for(const s of e){if("OPTGROUP"===s.nodeName){const e=s.childNodes;for(const s of e)if("OPTION"===s.nodeName){const e=s;e.selected=t.includes(e.id)}}if("OPTION"===s.nodeName){const e=s;e.selected=t.includes(e.id)}}this.changeListen(!0)}updateSelect(t,e,s){this.changeListen(!1),t&&(this.select.dataset.id=t),e&&(this.select.style.cssText=e),s&&(this.select.className="",s.forEach((t=>{""!==t.trim()&&this.select.classList.add(t.trim())}))),this.changeListen(!0)}updateOptions(t){this.changeListen(!1),this.select.innerHTML="";for(const e of t)e instanceof i&&this.select.appendChild(this.createOptgroup(e)),e instanceof n&&this.select.appendChild(this.createOption(e));this.select.dispatchEvent(new Event("change")),this.changeListen(!0)}createOptgroup(t){const e=document.createElement("optgroup");if(e.id=t.id,e.label=t.label,t.selectAll&&(e.dataset.selectAll="true"),"off"!==t.closable&&(e.dataset.closable=t.closable),t.options)for(const s of t.options)e.appendChild(this.createOption(s));return e}createOption(t){const e=document.createElement("option");return e.id=t.id,e.value=t.value,e.innerHTML=t.text,""!==t.html&&e.setAttribute("data-html",t.html),t.selected&&(e.selected=t.selected),t.disabled&&(e.disabled=!0),!1===t.display&&(e.style.display="none"),t.placeholder&&e.setAttribute("data-placeholder","true"),t.mandatory&&e.setAttribute("data-mandatory","true"),t.class&&t.class.split(" ").forEach((t=>{e.classList.add(t)})),t.data&&"object"==typeof t.data&&Object.keys(t.data).forEach((s=>{e.setAttribute("data-"+function(t){const e=t.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(t=>"-"+t.toLowerCase()));return t[0]===t[0].toUpperCase()?e.substring(1):e}(s),t.data[s])})),e}destroy(){this.changeListen(!1),this.select.removeEventListener("change",this.valueChange),this.observer&&(this.observer.disconnect(),this.observer=null),delete this.select.dataset.id,this.showUI()}}class c{constructor(e){this.id="",this.style="",this.class=[],this.isMultiple=!1,this.isOpen=!1,this.isFullOpen=!1,this.intervalMove=null,e||(e={}),this.id="ss-"+t(),this.style=e.style||"",this.class=e.class||[],this.disabled=void 0!==e.disabled&&e.disabled,this.alwaysOpen=void 0!==e.alwaysOpen&&e.alwaysOpen,this.showSearch=void 0===e.showSearch||e.showSearch,this.ariaLabel=e.ariaLabel||"Combobox",this.searchPlaceholder=e.searchPlaceholder||"Search",this.searchText=e.searchText||"No Results",this.searchingText=e.searchingText||"Searching...",this.searchHighlight=void 0!==e.searchHighlight&&e.searchHighlight,this.closeOnSelect=void 0===e.closeOnSelect||e.closeOnSelect,this.contentLocation=e.contentLocation||document.body,this.contentPosition=e.contentPosition||"absolute",this.openPosition=e.openPosition||"auto",this.placeholderText=void 0!==e.placeholderText?e.placeholderText:"Select Value",this.allowDeselect=void 0!==e.allowDeselect&&e.allowDeselect,this.hideSelected=void 0!==e.hideSelected&&e.hideSelected,this.keepOrder=void 0!==e.keepOrder&&e.keepOrder,this.showOptionTooltips=void 0!==e.showOptionTooltips&&e.showOptionTooltips,this.minSelected=e.minSelected||0,this.maxSelected=e.maxSelected||1e3,this.timeoutDelay=e.timeoutDelay||200,this.maxValuesShown=e.maxValuesShown||20,this.maxValuesMessage=e.maxValuesMessage||"{number} selected"}}return class{constructor(t){var s;if(this.events={search:void 0,searchFilter:(t,e)=>-1!==t.text.toLowerCase().indexOf(e.toLowerCase()),addable:void 0,beforeChange:void 0,afterChange:void 0,beforeOpen:void 0,afterOpen:void 0,beforeClose:void 0,afterClose:void 0},this.windowResize=e((()=>{(this.settings.isOpen||this.settings.isFullOpen)&&this.render.moveContent()})),this.windowScroll=e((()=>{(this.settings.isOpen||this.settings.isFullOpen)&&this.render.moveContent()})),this.documentClick=t=>{this.settings.isOpen&&t.target&&!function(t,e){function s(t,s){return s&&t&&t.classList&&t.classList.contains(s)||s&&t&&t.dataset&&t.dataset.id&&t.dataset.id===e?t:null}return s(t,e)||function t(e,i){return e&&e!==document?s(e,i)?e:t(e.parentNode,i):null}(t,e)}(t.target,this.settings.id)&&this.close(t.type)},this.windowVisibilityChange=()=>{document.hidden&&this.close()},this.selectEl="string"==typeof t.select?document.querySelector(t.select):t.select,!this.selectEl)return void(t.events&&t.events.error&&t.events.error(new Error("Could not find select element")));if("SELECT"!==this.selectEl.tagName)return void(t.events&&t.events.error&&t.events.error(new Error("Element isnt of type select")));this.selectEl.dataset.ssid&&this.destroy(),this.settings=new c(t.settings);const i=["afterChange","beforeOpen","afterOpen","beforeClose","afterClose"];for(const s in t.events)t.events.hasOwnProperty(s)&&(-1!==i.indexOf(s)?this.events[s]=e(t.events[s],100):this.events[s]=t.events[s]);this.settings.disabled=(null===(s=t.settings)||void 0===s?void 0:s.disabled)?t.settings.disabled:this.selectEl.disabled,this.settings.isMultiple=this.selectEl.multiple,this.settings.style=this.selectEl.style.cssText,this.settings.class=this.selectEl.className.split(" "),this.select=new o(this.selectEl),this.select.updateSelect(this.settings.id,this.settings.style,this.settings.class),this.select.hideUI(),this.select.onValueChange=t=>{this.setSelected(t.map((t=>t.id)))},this.select.onClassChange=t=>{this.settings.class=t,this.render.updateClassStyles()},this.select.onDisabledChange=t=>{t?this.disable():this.enable()},this.select.onOptionsChange=t=>{this.setData(t)},this.store=new a(this.settings.isMultiple?"multiple":"single",t.data?t.data:this.select.getData()),t.data&&this.select.updateOptions(this.store.getData());const n={open:this.open.bind(this),close:this.close.bind(this),addable:this.events.addable?this.events.addable:void 0,setSelected:this.setSelected.bind(this),addOption:this.addOption.bind(this),search:this.search.bind(this),beforeChange:this.events.beforeChange,afterChange:this.events.afterChange};this.render=new l(this.settings,this.store,n),this.render.renderValues(),this.render.renderOptions(this.store.getData());const h=this.selectEl.getAttribute("aria-label"),r=this.selectEl.getAttribute("aria-labelledby");h?this.render.main.main.setAttribute("aria-label",h):r&&this.render.main.main.setAttribute("aria-labelledby",r),this.selectEl.parentNode&&this.selectEl.parentNode.insertBefore(this.render.main.main,this.selectEl.nextSibling),window.addEventListener("resize",this.windowResize,!1),"auto"===this.settings.openPosition&&window.addEventListener("scroll",this.windowScroll,!1),document.addEventListener("visibilitychange",this.windowVisibilityChange),this.settings.disabled&&this.disable(),this.settings.alwaysOpen&&this.open(),this.selectEl.slim=this}enable(){this.settings.disabled=!1,this.select.enable(),this.render.enable()}disable(){this.settings.disabled=!0,this.select.disable(),this.render.disable()}getData(){return this.store.getData()}setData(t){const e=this.store.getSelected(),i=this.store.validateDataArray(t);if(i)return void(this.events.error&&this.events.error(i));this.store.setData(t);const n=this.store.getData();this.select.updateOptions(n),this.render.renderValues(),this.render.renderOptions(n),this.events.afterChange&&!s(e,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}getSelected(){return this.store.getSelectedOptions().map((t=>t.value))}setSelected(t,e=!0){const i=this.store.getSelected(),n=this.store.getDataOptions();t=Array.isArray(t)?t:[t];const a=[];for(const e of t)if(n.find((t=>t.id==e)))a.push(e);else for(const t of n.filter((t=>t.value==e)))a.push(t.id);this.store.setSelectedBy("id",a);const l=this.store.getData();this.select.updateOptions(l),this.render.renderValues(),""!==this.render.content.search.input.value?this.search(this.render.content.search.input.value):this.render.renderOptions(l),e&&this.events.afterChange&&!s(i,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}addOption(t){const e=this.store.getSelected();this.store.getDataOptions().some((e=>{var s;return e.value===(null!==(s=t.value)&&void 0!==s?s:t.text)}))||this.store.addOption(t);const i=this.store.getData();this.select.updateOptions(i),this.render.renderValues(),this.render.renderOptions(i),this.events.afterChange&&!s(e,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}open(){this.settings.disabled||this.settings.isOpen||(this.events.beforeOpen&&this.events.beforeOpen(),this.render.open(),this.settings.showSearch&&this.render.searchFocus(),this.settings.isOpen=!0,setTimeout((()=>{this.events.afterOpen&&this.events.afterOpen(),this.settings.isOpen&&(this.settings.isFullOpen=!0),document.addEventListener("click",this.documentClick)}),this.settings.timeoutDelay),"absolute"===this.settings.contentPosition&&(this.settings.intervalMove&&clearInterval(this.settings.intervalMove),this.settings.intervalMove=setInterval(this.render.moveContent.bind(this.render),500)))}close(t=null){this.settings.isOpen&&!this.settings.alwaysOpen&&(this.events.beforeClose&&this.events.beforeClose(),this.render.close(),""!==this.render.content.search.input.value&&this.search(""),this.render.mainFocus(t),this.settings.isOpen=!1,this.settings.isFullOpen=!1,setTimeout((()=>{this.events.afterClose&&this.events.afterClose(),document.removeEventListener("click",this.documentClick)}),this.settings.timeoutDelay),this.settings.intervalMove&&clearInterval(this.settings.intervalMove))}search(t){if(this.render.content.search.input.value!==t&&(this.render.content.search.input.value=t),!this.events.search)return void this.render.renderOptions(""===t?this.store.getData():this.store.search(t,this.events.searchFilter));this.render.renderSearching();const e=this.events.search(t,this.store.getSelectedOptions());e instanceof Promise?e.then((t=>{this.render.renderOptions(this.store.partialToFullData(t))})).catch((t=>{this.render.renderError("string"==typeof t?t:t.message)})):Array.isArray(e)?this.render.renderOptions(this.store.partialToFullData(e)):this.render.renderError("Search event must return a promise or an array of data")}destroy(){document.removeEventListener("click",this.documentClick),window.removeEventListener("resize",this.windowResize,!1),"auto"===this.settings.openPosition&&window.removeEventListener("scroll",this.windowScroll,!1),document.removeEventListener("visibilitychange",this.windowVisibilityChange),this.store.setData([]),this.render.destroy(),this.select.destroy()}}})); diff --git a/docs/assets/index.js b/docs/assets/index.js index bb13c721..db047fd8 100644 --- a/docs/assets/index.js +++ b/docs/assets/index.js @@ -2,7 +2,7 @@ * vue-router v4.2.5 * (c) 2023 Eduardo San Martin Morote * @license MIT - */const mr=typeof window<"u";function x0(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ce=Object.assign;function co(e,t){const n={};for(const r in t){const s=t[r];n[r]=jt(s)?s.map(e):e(s)}return n}const Es=()=>{},jt=Array.isArray,E0=/\/$/,_0=e=>e.replace(E0,"");function fo(e,t,n="/"){let r,s={},l="",i="";const o=t.indexOf("#");let a=t.indexOf("?");return o=0&&(a=-1),a>-1&&(r=t.slice(0,a),l=t.slice(a+1,o>-1?o:t.length),s=e(l)),o>-1&&(r=r||t.slice(0,o),i=t.slice(o,t.length)),r=O0(r??t,n),{fullPath:r+(l&&"?")+l+i,path:r,query:s,hash:i}}function C0(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Jc(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function k0(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&Hr(t.matched[r],n.matched[s])&&Ph(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Hr(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ph(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!A0(e[n],t[n]))return!1;return!0}function A0(e,t){return jt(e)?Xc(e,t):jt(t)?Xc(t,e):e===t}function Xc(e,t){return jt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function O0(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let l=n.length-1,i,o;for(i=0;i1&&l--;else break;return n.slice(0,l).join("/")+"/"+r.slice(i-(i===r.length?1:0)).join("/")}var js;(function(e){e.pop="pop",e.push="push"})(js||(js={}));var _s;(function(e){e.back="back",e.forward="forward",e.unknown=""})(_s||(_s={}));function P0(e){if(!e)if(mr){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),_0(e)}const L0=/^[^#]+#/;function T0(e,t){return e.replace(L0,"#")+t}function R0(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const zi=()=>({left:window.pageXOffset,top:window.pageYOffset});function N0(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=R0(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function qc(e,t){return(history.state?history.state.position-t:-1)+e}const ta=new Map;function M0(e,t){ta.set(e,t)}function F0(e){const t=ta.get(e);return ta.delete(e),t}let I0=()=>location.protocol+"//"+location.host;function Lh(e,t){const{pathname:n,search:r,hash:s}=t,l=e.indexOf("#");if(l>-1){let o=s.includes(e.slice(l))?e.slice(l).length:1,a=s.slice(o);return a[0]!=="/"&&(a="/"+a),Jc(a,"")}return Jc(n,e)+r+s}function D0(e,t,n,r){let s=[],l=[],i=null;const o=({state:p})=>{const w=Lh(e,location),x=n.value,_=t.value;let L=0;if(p){if(n.value=w,t.value=p,i&&i===x){i=null;return}L=_?p.position-_.position:0}else r(w);s.forEach(m=>{m(n.value,x,{delta:L,type:js.pop,direction:L?L>0?_s.forward:_s.back:_s.unknown})})};function a(){i=n.value}function u(p){s.push(p);const w=()=>{const x=s.indexOf(p);x>-1&&s.splice(x,1)};return l.push(w),w}function c(){const{history:p}=window;p.state&&p.replaceState(ce({},p.state,{scroll:zi()}),"")}function d(){for(const p of l)p();l=[],window.removeEventListener("popstate",o),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",o),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:a,listen:u,destroy:d}}function ef(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?zi():null}}function b0(e){const{history:t,location:n}=window,r={value:Lh(e,n)},s={value:t.state};s.value||l(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(a,u,c){const d=e.indexOf("#"),p=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+a:I0()+e+a;try{t[c?"replaceState":"pushState"](u,"",p),s.value=u}catch(w){console.error(w),n[c?"replace":"assign"](p)}}function i(a,u){const c=ce({},t.state,ef(s.value.back,a,s.value.forward,!0),u,{position:s.value.position});l(a,c,!0),r.value=a}function o(a,u){const c=ce({},s.value,t.state,{forward:a,scroll:zi()});l(c.current,c,!0);const d=ce({},ef(r.value,a,null),{position:c.position+1},u);l(a,d,!1),r.value=a}return{location:r,state:s,push:o,replace:i}}function j0(e){e=P0(e);const t=b0(e),n=D0(e,t.state,t.location,t.replace);function r(l,i=!0){i||n.pauseListeners(),history.go(l)}const s=ce({location:"",base:e,go:r,createHref:T0.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function z0(e){return typeof e=="string"||e&&typeof e=="object"}function Th(e){return typeof e=="string"||typeof e=="symbol"}const vn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Rh=Symbol("");var tf;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(tf||(tf={}));function $r(e,t){return ce(new Error,{type:e,[Rh]:!0},t)}function qt(e,t){return e instanceof Error&&Rh in e&&(t==null||!!(e.type&t))}const nf="[^/]+?",B0={sensitive:!1,strict:!1,start:!0,end:!0},U0=/[.+*?^${}()[\]/\\]/g;function V0(e,t){const n=ce({},B0,t),r=[];let s=n.start?"^":"";const l=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let d=0;dt.length?t.length===1&&t[0]===80?1:-1:0}function $0(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const W0={type:0,value:""},Q0=/[a-zA-Z0-9_]/;function K0(e){if(!e)return[[]];if(e==="/")return[[W0]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(w){throw new Error(`ERR (${n})/"${u}": ${w}`)}let n=0,r=n;const s=[];let l;function i(){l&&s.push(l),l=[]}let o=0,a,u="",c="";function d(){u&&(n===0?l.push({type:0,value:u}):n===1||n===2||n===3?(l.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),l.push({type:1,value:u,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=a}for(;o{i(f)}:Es}function i(c){if(Th(c)){const d=r.get(c);d&&(r.delete(c),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(c);d>-1&&(n.splice(d,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function o(){return n}function a(c){let d=0;for(;d=0&&(c.record.path!==n[d].record.path||!Nh(c,n[d]));)d++;n.splice(d,0,c),c.record.name&&!lf(c)&&r.set(c.record.name,c)}function u(c,d){let p,w={},x,_;if("name"in c&&c.name){if(p=r.get(c.name),!p)throw $r(1,{location:c});_=p.record.name,w=ce(sf(d.params,p.keys.filter(f=>!f.optional).map(f=>f.name)),c.params&&sf(c.params,p.keys.map(f=>f.name))),x=p.stringify(w)}else if("path"in c)x=c.path,p=n.find(f=>f.re.test(x)),p&&(w=p.parse(x),_=p.record.name);else{if(p=d.name?r.get(d.name):n.find(f=>f.re.test(d.path)),!p)throw $r(1,{location:c,currentLocation:d});_=p.record.name,w=ce({},d.params,c.params),x=p.stringify(w)}const L=[];let m=p;for(;m;)L.unshift(m.record),m=m.parent;return{name:_,path:x,params:w,matched:L,meta:X0(L)}}return e.forEach(c=>l(c)),{addRoute:l,resolve:u,removeRoute:i,getRoutes:o,getRecordMatcher:s}}function sf(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Z0(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:J0(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function J0(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function lf(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function X0(e){return e.reduce((t,n)=>ce(t,n.meta),{})}function of(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Nh(e,t){return t.children.some(n=>n===e||Nh(e,n))}const Mh=/#/g,q0=/&/g,ey=/\//g,ty=/=/g,ny=/\?/g,Fh=/\+/g,ry=/%5B/g,sy=/%5D/g,Ih=/%5E/g,ly=/%60/g,Dh=/%7B/g,iy=/%7C/g,bh=/%7D/g,oy=/%20/g;function vu(e){return encodeURI(""+e).replace(iy,"|").replace(ry,"[").replace(sy,"]")}function ay(e){return vu(e).replace(Dh,"{").replace(bh,"}").replace(Ih,"^")}function na(e){return vu(e).replace(Fh,"%2B").replace(oy,"+").replace(Mh,"%23").replace(q0,"%26").replace(ly,"`").replace(Dh,"{").replace(bh,"}").replace(Ih,"^")}function uy(e){return na(e).replace(ty,"%3D")}function cy(e){return vu(e).replace(Mh,"%23").replace(ny,"%3F")}function fy(e){return e==null?"":cy(e).replace(ey,"%2F")}function ei(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function dy(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sl&&na(l)):[r&&na(r)]).forEach(l=>{l!==void 0&&(t+=(t.length?"&":"")+n,l!=null&&(t+="="+l))})}return t}function hy(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=jt(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const py=Symbol(""),uf=Symbol(""),yu=Symbol(""),jh=Symbol(""),ra=Symbol("");function ls(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function xn(e,t,n,r,s){const l=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((i,o)=>{const a=d=>{d===!1?o($r(4,{from:n,to:t})):d instanceof Error?o(d):z0(d)?o($r(2,{from:t,to:d})):(l&&r.enterCallbacks[s]===l&&typeof d=="function"&&l.push(d),i())},u=e.call(r&&r.instances[s],t,n,a);let c=Promise.resolve(u);e.length<3&&(c=c.then(a)),c.catch(d=>o(d))})}function ho(e,t,n,r){const s=[];for(const l of e)for(const i in l.components){let o=l.components[i];if(!(t!=="beforeRouteEnter"&&!l.instances[i]))if(my(o)){const u=(o.__vccOpts||o)[t];u&&s.push(xn(u,n,r,l,i))}else{let a=o();s.push(()=>a.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${i}" at "${l.path}"`));const c=x0(u)?u.default:u;l.components[i]=c;const p=(c.__vccOpts||c)[t];return p&&xn(p,n,r,l,i)()}))}}return s}function my(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function cf(e){const t=an(yu),n=an(jh),r=Mt(()=>t.resolve(Nr(e.to))),s=Mt(()=>{const{matched:a}=r.value,{length:u}=a,c=a[u-1],d=n.matched;if(!c||!d.length)return-1;const p=d.findIndex(Hr.bind(null,c));if(p>-1)return p;const w=ff(a[u-2]);return u>1&&ff(c)===w&&d[d.length-1].path!==w?d.findIndex(Hr.bind(null,a[u-2])):p}),l=Mt(()=>s.value>-1&&wy(n.params,r.value.params)),i=Mt(()=>s.value>-1&&s.value===n.matched.length-1&&Ph(n.params,r.value.params));function o(a={}){return yy(a)?t[Nr(e.replace)?"replace":"push"](Nr(e.to)).catch(Es):Promise.resolve()}return{route:r,href:Mt(()=>r.value.href),isActive:l,isExactActive:i,navigate:o}}const gy=Mi({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:cf,setup(e,{slots:t}){const n=Ti(cf(e)),{options:r}=an(yu),s=Mt(()=>({[df(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[df(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&t.default(n);return e.custom?l:Oh("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},l)}}}),vy=gy;function yy(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function wy(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!jt(s)||s.length!==r.length||r.some((l,i)=>l!==s[i]))return!1}return!0}function ff(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const df=(e,t,n)=>e??t??n,Sy=Mi({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=an(ra),s=Mt(()=>e.route||r.value),l=an(uf,0),i=Mt(()=>{let u=Nr(l);const{matched:c}=s.value;let d;for(;(d=c[u])&&!d.components;)u++;return u}),o=Mt(()=>s.value.matched[i.value]);Nl(uf,Mt(()=>i.value+1)),Nl(py,o),Nl(ra,s);const a=Gd();return Rl(()=>[a.value,o.value,e.name],([u,c,d],[p,w,x])=>{c&&(c.instances[d]=u,w&&w!==c&&u&&u===p&&(c.leaveGuards.size||(c.leaveGuards=w.leaveGuards),c.updateGuards.size||(c.updateGuards=w.updateGuards))),u&&c&&(!w||!Hr(c,w)||!p)&&(c.enterCallbacks[d]||[]).forEach(_=>_(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,d=o.value,p=d&&d.components[c];if(!p)return hf(n.default,{Component:p,route:u});const w=d.props[c],x=w?w===!0?u.params:typeof w=="function"?w(u):w:null,L=Oh(p,ce({},x,t,{onVnodeUnmounted:m=>{m.component.isUnmounted&&(d.instances[c]=null)},ref:a}));return hf(n.default,{Component:L,route:u})||L}}});function hf(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const xy=Sy;function Ey(e){const t=Y0(e.routes,e),n=e.parseQuery||dy,r=e.stringifyQuery||af,s=e.history,l=ls(),i=ls(),o=ls(),a=Dg(vn);let u=vn;mr&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=co.bind(null,A=>""+A),d=co.bind(null,fy),p=co.bind(null,ei);function w(A,V){let b,Q;return Th(A)?(b=t.getRecordMatcher(A),Q=V):Q=A,t.addRoute(Q,b)}function x(A){const V=t.getRecordMatcher(A);V&&t.removeRoute(V)}function _(){return t.getRoutes().map(A=>A.record)}function L(A){return!!t.getRecordMatcher(A)}function m(A,V){if(V=ce({},V||a.value),typeof A=="string"){const E=fo(n,A,V.path),O=t.resolve({path:E.path},V),T=s.createHref(E.fullPath);return ce(E,O,{params:p(O.params),hash:ei(E.hash),redirectedFrom:void 0,href:T})}let b;if("path"in A)b=ce({},A,{path:fo(n,A.path,V.path).path});else{const E=ce({},A.params);for(const O in E)E[O]==null&&delete E[O];b=ce({},A,{params:d(E)}),V.params=d(V.params)}const Q=t.resolve(b,V),le=A.hash||"";Q.params=c(p(Q.params));const g=C0(r,ce({},A,{hash:ay(le),path:Q.path})),v=s.createHref(g);return ce({fullPath:g,hash:le,query:r===af?hy(A.query):A.query||{}},Q,{redirectedFrom:void 0,href:v})}function f(A){return typeof A=="string"?fo(n,A,a.value.path):ce({},A)}function h(A,V){if(u!==A)return $r(8,{from:V,to:A})}function y(A){return k(A)}function S(A){return y(ce(f(A),{replace:!0}))}function C(A){const V=A.matched[A.matched.length-1];if(V&&V.redirect){const{redirect:b}=V;let Q=typeof b=="function"?b(A):b;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=f(Q):{path:Q},Q.params={}),ce({query:A.query,hash:A.hash,params:"path"in Q?{}:A.params},Q)}}function k(A,V){const b=u=m(A),Q=a.value,le=A.state,g=A.force,v=A.replace===!0,E=C(b);if(E)return k(ce(f(E),{state:typeof E=="object"?ce({},le,E.state):le,force:g,replace:v}),V||b);const O=b;O.redirectedFrom=V;let T;return!g&&k0(r,Q,b)&&(T=$r(16,{to:O,from:Q}),te(Q,Q,!0,!1)),(T?Promise.resolve(T):U(O,Q)).catch(N=>qt(N)?qt(N,2)?N:K(N):P(N,O,Q)).then(N=>{if(N){if(qt(N,2))return k(ce({replace:v},f(N.to),{state:typeof N.to=="object"?ce({},le,N.to.state):le,force:g}),V||O)}else N=ke(O,Q,!0,v,le);return ee(O,Q,N),N})}function R(A,V){const b=h(A,V);return b?Promise.reject(b):Promise.resolve()}function D(A){const V=xe.values().next().value;return V&&typeof V.runWithContext=="function"?V.runWithContext(A):A()}function U(A,V){let b;const[Q,le,g]=_y(A,V);b=ho(Q.reverse(),"beforeRouteLeave",A,V);for(const E of Q)E.leaveGuards.forEach(O=>{b.push(xn(O,A,V))});const v=R.bind(null,A,V);return b.push(v),ue(b).then(()=>{b=[];for(const E of l.list())b.push(xn(E,A,V));return b.push(v),ue(b)}).then(()=>{b=ho(le,"beforeRouteUpdate",A,V);for(const E of le)E.updateGuards.forEach(O=>{b.push(xn(O,A,V))});return b.push(v),ue(b)}).then(()=>{b=[];for(const E of g)if(E.beforeEnter)if(jt(E.beforeEnter))for(const O of E.beforeEnter)b.push(xn(O,A,V));else b.push(xn(E.beforeEnter,A,V));return b.push(v),ue(b)}).then(()=>(A.matched.forEach(E=>E.enterCallbacks={}),b=ho(g,"beforeRouteEnter",A,V),b.push(v),ue(b))).then(()=>{b=[];for(const E of i.list())b.push(xn(E,A,V));return b.push(v),ue(b)}).catch(E=>qt(E,8)?E:Promise.reject(E))}function ee(A,V,b){o.list().forEach(Q=>D(()=>Q(A,V,b)))}function ke(A,V,b,Q,le){const g=h(A,V);if(g)return g;const v=V===vn,E=mr?history.state:{};b&&(Q||v?s.replace(A.fullPath,ce({scroll:v&&E&&E.scroll},le)):s.push(A.fullPath,le)),a.value=A,te(A,V,b,v),K()}let Le;function At(){Le||(Le=s.listen((A,V,b)=>{if(!et.listening)return;const Q=m(A),le=C(Q);if(le){k(ce(le,{replace:!0}),Q).catch(Es);return}u=Q;const g=a.value;mr&&M0(qc(g.fullPath,b.delta),zi()),U(Q,g).catch(v=>qt(v,12)?v:qt(v,2)?(k(v.to,Q).then(E=>{qt(E,20)&&!b.delta&&b.type===js.pop&&s.go(-1,!1)}).catch(Es),Promise.reject()):(b.delta&&s.go(-b.delta,!1),P(v,Q,g))).then(v=>{v=v||ke(Q,g,!1),v&&(b.delta&&!qt(v,8)?s.go(-b.delta,!1):b.type===js.pop&&qt(v,20)&&s.go(-1,!1)),ee(Q,g,v)}).catch(Es)}))}let Bt=ls(),ge=ls(),se;function P(A,V,b){K(A);const Q=ge.list();return Q.length?Q.forEach(le=>le(A,V,b)):console.error(A),Promise.reject(A)}function W(){return se&&a.value!==vn?Promise.resolve():new Promise((A,V)=>{Bt.add([A,V])})}function K(A){return se||(se=!A,At(),Bt.list().forEach(([V,b])=>A?b(A):V()),Bt.reset()),A}function te(A,V,b,Q){const{scrollBehavior:le}=e;if(!mr||!le)return Promise.resolve();const g=!b&&F0(qc(A.fullPath,0))||(Q||!b)&&history.state&&history.state.scroll||null;return Xd().then(()=>le(A,V,g)).then(v=>v&&N0(v)).catch(v=>P(v,A,V))}const Z=A=>s.go(A);let ct;const xe=new Set,et={currentRoute:a,listening:!0,addRoute:w,removeRoute:x,hasRoute:L,getRoutes:_,resolve:m,options:e,push:y,replace:S,go:Z,back:()=>Z(-1),forward:()=>Z(1),beforeEach:l.add,beforeResolve:i.add,afterEach:o.add,onError:ge.add,isReady:W,install(A){const V=this;A.component("RouterLink",vy),A.component("RouterView",xy),A.config.globalProperties.$router=V,Object.defineProperty(A.config.globalProperties,"$route",{enumerable:!0,get:()=>Nr(a)}),mr&&!ct&&a.value===vn&&(ct=!0,y(s.location).catch(le=>{}));const b={};for(const le in vn)Object.defineProperty(b,le,{get:()=>a.value[le],enumerable:!0});A.provide(yu,V),A.provide(jh,Vd(b)),A.provide(ra,a);const Q=A.unmount;xe.add(A),A.unmount=function(){xe.delete(A),xe.size<1&&(u=vn,Le&&Le(),Le=null,a.value=vn,ct=!1,se=!1),Q()}}};function ue(A){return A.reduce((V,b)=>V.then(()=>D(b)),Promise.resolve())}return et}function _y(e,t){const n=[],r=[],s=[],l=Math.max(t.matched.length,e.matched.length);for(let i=0;iHr(u,o))?r.push(o):n.push(o));const a=e.matched[i];a&&(t.matched.find(u=>Hr(u,a))||s.push(a))}return[n,r,s]}const Cy=Ey({history:j0(),linkActiveClass:"active",routes:[{path:"/",name:"Home",component:()=>Xt(()=>import("./home.js"),__vite__mapDeps([0,1]))},{path:"/install",name:"Install",component:()=>Xt(()=>import("./install.js"),__vite__mapDeps([]))},{path:"/selects",name:"Selects",component:()=>Xt(()=>import("./selects.js"),__vite__mapDeps([]))},{path:"/data",name:"Data",component:()=>Xt(()=>import("./data.js"),__vite__mapDeps([]))},{path:"/settings",name:"Settings",component:()=>Xt(()=>import("./index2.js"),__vite__mapDeps([2,3]))},{path:"/events",name:"Events",component:()=>Xt(()=>import("./index3.js"),__vite__mapDeps([]))},{path:"/methods",name:"Methods",component:()=>Xt(()=>import("./index4.js"),__vite__mapDeps([]))},{path:"/vue",name:"Vue",component:()=>Xt(()=>import("./vue.js"),__vite__mapDeps([]))},{path:"/react",name:"React",component:()=>Xt(()=>import("./react.js"),__vite__mapDeps([]))}]});function wu(){return Math.random().toString(36).substring(2,10)}function ky(e,t){function n(s,l){return l&&s&&s.classList&&s.classList.contains(l)||l&&s&&s.dataset&&s.dataset.id&&s.dataset.id===t?s:null}function r(s,l){return!s||s===document?null:n(s,l)?s:r(s.parentNode,l)}return n(e,t)||r(e,t)}function Cs(e,t=50,n=!1){let r;return function(...s){const l=self,i=()=>{r=null,n||e.apply(l,s)},o=n&&!r;clearTimeout(r),r=setTimeout(i,t),o&&e.apply(l,s)}}function po(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Ay(e){const t=e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,n=>"-"+n.toLowerCase());return e[0]===e[0].toUpperCase()?t.substring(1):t}class Lt{constructor(t){if(this.id=!t.id||t.id===""?wu():t.id,this.label=t.label||"",this.selectAll=t.selectAll===void 0?!1:t.selectAll,this.selectAllText=t.selectAllText||"Select All",this.closable=t.closable||"off",this.options=[],t.options)for(const n of t.options)this.options.push(new He(n))}}class He{constructor(t){this.id=!t.id||t.id===""?wu():t.id,this.value=t.value===void 0?t.text:t.value,this.text=t.text||"",this.html=t.html||"",this.selected=t.selected!==void 0?t.selected:!1,this.display=t.display!==void 0?t.display:!0,this.disabled=t.disabled!==void 0?t.disabled:!1,this.mandatory=t.mandatory!==void 0?t.mandatory:!1,this.placeholder=t.placeholder!==void 0?t.placeholder:!1,this.class=t.class||"",this.style=t.style||"",this.data=t.data||{}}}class Oy{constructor(t,n){this.selectType="single",this.data=[],this.selectType=t,this.setData(n)}validateDataArray(t){if(!Array.isArray(t))return new Error("Data must be an array");for(let n of t)if(n instanceof Lt||"label"in n){if(!("label"in n))return new Error("Optgroup must have a label");if("options"in n&&n.options)for(let r of n.options)return this.validateOption(r)}else return n instanceof He||"text"in n?this.validateOption(n):new Error("Data object must be a valid optgroup or option");return null}validateOption(t){return"text"in t?null:new Error("Option must have a text")}partialToFullData(t){let n=[];return t.forEach(r=>{if(r instanceof Lt||"label"in r){let s=[];"options"in r&&r.options&&r.options.forEach(l=>{s.push(new He(l))}),s.length>0&&n.push(new Lt(r))}(r instanceof He||"text"in r)&&n.push(new He(r))}),n}setData(t){this.data=this.partialToFullData(t),this.selectType==="single"&&this.setSelectedBy("id",this.getSelected())}getData(){return this.filter(null,!0)}getDataOptions(){return this.filter(null,!1)}addOption(t){this.setData(this.getData().concat(new He(t)))}setSelectedBy(t,n){let r=null,s=!1;for(let l of this.data){if(l instanceof Lt)for(let i of l.options)r||(r=i),i.selected=s?!1:n.includes(i[t]),i.selected&&this.selectType==="single"&&(s=!0);l instanceof He&&(r||(r=l),l.selected=s?!1:n.includes(l[t]),l.selected&&this.selectType==="single"&&(s=!0))}this.selectType==="single"&&r&&!s&&(r.selected=!0)}getSelected(){return this.getSelectedOptions().map(t=>t.id)}getSelectedOptions(){return this.filter(t=>t.selected,!1)}getOptgroupByID(t){for(let n of this.data)if(n instanceof Lt&&n.id===t)return n;return null}getOptionByID(t){let n=this.filter(r=>r.id===t,!1);return n.length?n[0]:null}getSelectType(){return this.selectType}getFirstOption(){let t=null;for(let n of this.data)if(n instanceof Lt?t=n.options[0]:n instanceof He&&(t=n),t)break;return t}search(t,n){return t=t.trim(),t===""?this.getData():this.filter(r=>n(r,t),!0)}filter(t,n){const r=[];return this.data.forEach(s=>{if(s instanceof Lt){let l=[];if(s.options.forEach(i=>{(!t||t(i))&&(n?l.push(new He(i)):r.push(new He(i)))}),l.length>0){let i=new Lt(s);i.options=l,r.push(i)}}s instanceof He&&(!t||t(s))&&r.push(new He(s))}),r}}class Py{constructor(t,n,r){this.classes={main:"ss-main",placeholder:"ss-placeholder",values:"ss-values",single:"ss-single",max:"ss-max",value:"ss-value",valueText:"ss-value-text",valueDelete:"ss-value-delete",valueOut:"ss-value-out",deselect:"ss-deselect",deselectPath:"M10,10 L90,90 M10,90 L90,10",arrow:"ss-arrow",arrowClose:"M10,30 L50,70 L90,30",arrowOpen:"M10,70 L50,30 L90,70",content:"ss-content",openAbove:"ss-open-above",openBelow:"ss-open-below",search:"ss-search",searchHighlighter:"ss-search-highlight",searching:"ss-searching",addable:"ss-addable",addablePath:"M50,10 L50,90 M10,50 L90,50",list:"ss-list",optgroup:"ss-optgroup",optgroupLabel:"ss-optgroup-label",optgroupLabelText:"ss-optgroup-label-text",optgroupActions:"ss-optgroup-actions",optgroupSelectAll:"ss-selectall",optgroupSelectAllBox:"M60,10 L10,10 L10,90 L90,90 L90,50",optgroupSelectAllCheck:"M30,45 L50,70 L90,10",optgroupClosable:"ss-closable",option:"ss-option",optionDelete:"M10,10 L90,90 M10,90 L90,10",highlighted:"ss-highlighted",open:"ss-open",close:"ss-close",selected:"ss-selected",error:"ss-error",disabled:"ss-disabled",hide:"ss-hide"},this.store=n,this.settings=t,this.callbacks=r,this.main=this.mainDiv(),this.content=this.contentDiv(),this.updateClassStyles(),this.updateAriaAttributes(),this.settings.contentLocation.appendChild(this.content.main)}enable(){this.main.main.classList.remove(this.classes.disabled),this.content.search.input.disabled=!1}disable(){this.main.main.classList.add(this.classes.disabled),this.content.search.input.disabled=!0}open(){this.main.arrow.path.setAttribute("d",this.classes.arrowOpen),this.main.main.classList.add(this.settings.openPosition==="up"?this.classes.openAbove:this.classes.openBelow),this.main.main.setAttribute("aria-expanded","true"),this.moveContent();const t=this.store.getSelectedOptions();if(t.length){const n=t[t.length-1].id,r=this.content.list.querySelector('[data-id="'+n+'"]');r&&this.ensureElementInView(this.content.list,r)}}close(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.remove(this.classes.openBelow),this.main.main.setAttribute("aria-expanded","false"),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.main.arrow.path.setAttribute("d",this.classes.arrowClose)}updateClassStyles(){if(this.main.main.className="",this.main.main.removeAttribute("style"),this.content.main.className="",this.content.main.removeAttribute("style"),this.main.main.classList.add(this.classes.main),this.content.main.classList.add(this.classes.content),this.settings.style!==""&&(this.main.main.style.cssText=this.settings.style,this.content.main.style.cssText=this.settings.style),this.settings.class.length)for(const t of this.settings.class)t.trim()!==""&&(this.main.main.classList.add(t.trim()),this.content.main.classList.add(t.trim()));this.settings.contentPosition==="relative"&&this.content.main.classList.add("ss-"+this.settings.contentPosition)}updateAriaAttributes(){this.main.main.role="combobox",this.main.main.setAttribute("aria-haspopup","listbox"),this.main.main.setAttribute("aria-controls",this.content.main.id),this.main.main.setAttribute("aria-expanded","false"),this.content.main.setAttribute("role","listbox")}mainDiv(){var u;const t=document.createElement("div");t.dataset.id=this.settings.id,t.setAttribute("aria-label",this.settings.ariaLabel),t.tabIndex=0,t.onkeydown=c=>{switch(c.key){case"ArrowUp":case"ArrowDown":return this.callbacks.open(),c.key==="ArrowDown"?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Enter":case" ":this.callbacks.open();const d=this.content.list.querySelector("."+this.classes.highlighted);return d&&d.click(),!1;case"Escape":return this.callbacks.close(),!1}return!1},t.onclick=c=>{this.settings.disabled||(this.settings.isOpen?this.callbacks.close():this.callbacks.open())};const n=document.createElement("div");n.classList.add(this.classes.values),t.appendChild(n);const r=document.createElement("div");r.classList.add(this.classes.deselect);const s=(u=this.store)==null?void 0:u.getSelectedOptions();!this.settings.allowDeselect||this.settings.isMultiple&&s&&s.length<=0?r.classList.add(this.classes.hide):r.classList.remove(this.classes.hide),r.onclick=c=>{if(c.stopPropagation(),this.settings.disabled)return;let d=!0;const p=this.store.getSelectedOptions(),w=[];if(this.callbacks.beforeChange&&(d=this.callbacks.beforeChange(w,p)===!0),d){if(this.settings.isMultiple)this.callbacks.setSelected([],!1),this.updateDeselectAll();else{const x=this.store.getFirstOption(),_=x?x.id:"";this.callbacks.setSelected(_,!1)}this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(this.store.getSelectedOptions())}};const l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("viewBox","0 0 100 100");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d",this.classes.deselectPath),l.appendChild(i),r.appendChild(l),t.appendChild(r);const o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.classList.add(this.classes.arrow),o.setAttribute("viewBox","0 0 100 100");const a=document.createElementNS("http://www.w3.org/2000/svg","path");return a.setAttribute("d",this.classes.arrowClose),this.settings.alwaysOpen&&o.classList.add(this.classes.hide),o.appendChild(a),t.appendChild(o),{main:t,values:n,deselect:{main:r,svg:l,path:i},arrow:{main:o,path:a}}}mainFocus(t){t!=="click"&&this.main.main.focus({preventScroll:!0})}placeholder(){const t=this.store.filter(s=>s.placeholder,!1);let n=this.settings.placeholderText;t.length&&(t[0].html!==""?n=t[0].html:t[0].text!==""&&(n=t[0].text));const r=document.createElement("div");return r.classList.add(this.classes.placeholder),r.innerHTML=n,r}renderValues(){if(!this.settings.isMultiple){this.renderSingleValue();return}this.renderMultipleValues(),this.updateDeselectAll()}renderSingleValue(){const t=this.store.filter(r=>r.selected&&!r.placeholder,!1),n=t.length>0?t[0]:null;if(!n)this.main.values.innerHTML=this.placeholder().outerHTML;else{const r=document.createElement("div");r.classList.add(this.classes.single),n.html?r.innerHTML=n.html:r.innerText=n.text,this.main.values.innerHTML=r.outerHTML}!this.settings.allowDeselect||!t.length?this.main.deselect.main.classList.add(this.classes.hide):this.main.deselect.main.classList.remove(this.classes.hide)}renderMultipleValues(){let t=this.main.values.childNodes,n=this.store.filter(s=>s.selected&&s.display,!1);if(n.length===0){this.main.values.innerHTML=this.placeholder().outerHTML;return}else{const s=this.main.values.querySelector("."+this.classes.placeholder);s&&s.remove()}if(n.length>this.settings.maxValuesShown){const s=document.createElement("div");s.classList.add(this.classes.max),s.textContent=this.settings.maxValuesMessage.replace("{number}",n.length.toString()),this.main.values.innerHTML=s.outerHTML;return}else{const s=this.main.values.querySelector("."+this.classes.max);s&&s.remove()}let r=[];for(let s=0;sa.id===i,!1).length||r.push(l))}for(const s of r)s.classList.add(this.classes.valueOut),setTimeout(()=>{this.main.values.hasChildNodes()&&this.main.values.contains(s)&&this.main.values.removeChild(s)},100);t=this.main.values.childNodes;for(let s=0;s{if(o.preventDefault(),o.stopPropagation(),this.settings.disabled)return;let a=!0;const u=this.store.getSelectedOptions(),c=u.filter(d=>d.selected&&d.id!==t.id,!0);if(!(this.settings.minSelected&&c.length{this.callbacks.search(l.target.value)},100),n.onkeydown=l=>{switch(l.key){case"ArrowUp":case"ArrowDown":return l.key==="ArrowDown"?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Escape":return this.callbacks.close(),!1;case"Enter":case" ":if(this.callbacks.addable&&l.ctrlKey)return r.click(),!1;{const i=this.content.list.querySelector("."+this.classes.highlighted);if(i)return i.click(),!1}return!0}return!0},t.appendChild(n),this.callbacks.addable){r.classList.add(this.classes.addable);const l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("viewBox","0 0 100 100");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d",this.classes.addablePath),l.appendChild(i),r.appendChild(l),r.onclick=o=>{if(o.preventDefault(),o.stopPropagation(),!this.callbacks.addable)return;const a=this.content.search.input.value.trim();if(a===""){this.content.search.input.focus();return}const u=d=>{let p=new He(d);if(this.callbacks.addOption(p),this.settings.isMultiple){let w=this.store.getSelected();w.push(p.id),this.callbacks.setSelected(w,!0)}else this.callbacks.setSelected([p.id],!0);this.callbacks.search(""),this.settings.closeOnSelect&&setTimeout(()=>{this.callbacks.close()},100)},c=this.callbacks.addable(a);c===!1||c===void 0||c===null||(c instanceof Promise?c.then(d=>{u(typeof d=="string"?{text:d,value:d}:d)}):u(typeof c=="string"?{text:c,value:c}:c))},t.appendChild(r),s.addable={main:r,svg:l,path:i}}return s}searchFocus(){this.content.search.input.focus()}getOptions(t=!1,n=!1,r=!1){let s="."+this.classes.option;return t&&(s+=":not(."+this.classes.placeholder+")"),n&&(s+=":not(."+this.classes.disabled+")"),r&&(s+=":not(."+this.classes.hide+")"),Array.from(this.content.list.querySelectorAll(s))}highlight(t){const n=this.getOptions(!0,!0,!0);if(n.length===0)return;if(n.length===1&&!n[0].classList.contains(this.classes.highlighted)){n[0].classList.add(this.classes.highlighted);return}let r=!1;for(const s of n)s.classList.contains(this.classes.highlighted)&&(r=!0);if(!r){for(const s of n)if(s.classList.contains(this.classes.selected)){s.classList.add(this.classes.highlighted);break}}for(let s=0;s=0?s-1:n.length-1];o.classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,o);const a=o.parentElement;if(a&&a.classList.contains(this.classes.close)){const u=a.querySelector("."+this.classes.optgroupLabel);u&&u.click()}return}n[t==="down"?0:n.length-1].classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,n[t==="down"?0:n.length-1])}listDiv(){const t=document.createElement("div");return t.classList.add(this.classes.list),t}renderError(t){this.content.list.innerHTML="";const n=document.createElement("div");n.classList.add(this.classes.error),n.textContent=t,this.content.list.appendChild(n)}renderSearching(){this.content.list.innerHTML="";const t=document.createElement("div");t.classList.add(this.classes.searching),t.textContent=this.settings.searchingText,this.content.list.appendChild(t)}renderOptions(t){if(this.content.list.innerHTML="",t.length===0){const n=document.createElement("div");n.classList.add(this.classes.search),n.innerHTML=this.settings.searchText,this.content.list.appendChild(n);return}for(const n of t){if(n instanceof Lt){const r=document.createElement("div");r.classList.add(this.classes.optgroup);const s=document.createElement("div");s.classList.add(this.classes.optgroupLabel),r.appendChild(s);const l=document.createElement("div");l.classList.add(this.classes.optgroupLabelText),l.textContent=n.label,s.appendChild(l);const i=document.createElement("div");if(i.classList.add(this.classes.optgroupActions),s.appendChild(i),this.settings.isMultiple&&n.selectAll){const o=document.createElement("div");o.classList.add(this.classes.optgroupSelectAll);let a=!0;for(const w of n.options)if(!w.selected){a=!1;break}a&&o.classList.add(this.classes.selected);const u=document.createElement("span");u.textContent=n.selectAllText,o.appendChild(u);const c=document.createElementNS("http://www.w3.org/2000/svg","svg");c.setAttribute("viewBox","0 0 100 100"),o.appendChild(c);const d=document.createElementNS("http://www.w3.org/2000/svg","path");d.setAttribute("d",this.classes.optgroupSelectAllBox),c.appendChild(d);const p=document.createElementNS("http://www.w3.org/2000/svg","path");p.setAttribute("d",this.classes.optgroupSelectAllCheck),c.appendChild(p),o.addEventListener("click",w=>{w.preventDefault(),w.stopPropagation();const x=this.store.getSelected();if(a){const _=x.filter(L=>{for(const m of n.options)if(L===m.id)return!1;return!0});this.callbacks.setSelected(_,!0);return}else{const _=x.concat(n.options.map(L=>L.id));for(const L of n.options)this.store.getOptionByID(L.id)||this.callbacks.addOption(L);this.callbacks.setSelected(_,!0);return}}),i.appendChild(o)}if(n.closable!=="off"){const o=document.createElement("div");o.classList.add(this.classes.optgroupClosable);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),a.classList.add(this.classes.arrow),o.appendChild(a);const u=document.createElementNS("http://www.w3.org/2000/svg","path");a.appendChild(u),n.options.some(c=>c.selected)||this.content.search.input.value.trim()!==""?(o.classList.add(this.classes.open),u.setAttribute("d",this.classes.arrowOpen)):n.closable==="open"?(r.classList.add(this.classes.open),u.setAttribute("d",this.classes.arrowOpen)):n.closable==="close"&&(r.classList.add(this.classes.close),u.setAttribute("d",this.classes.arrowClose)),s.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation(),r.classList.contains(this.classes.close)?(r.classList.remove(this.classes.close),r.classList.add(this.classes.open),u.setAttribute("d",this.classes.arrowOpen)):(r.classList.remove(this.classes.open),r.classList.add(this.classes.close),u.setAttribute("d",this.classes.arrowClose))}),i.appendChild(o)}r.appendChild(s);for(const o of n.options)r.appendChild(this.option(o));this.content.list.appendChild(r)}n instanceof He&&this.content.list.appendChild(this.option(n))}}option(t){if(t.placeholder){const r=document.createElement("div");return r.classList.add(this.classes.option),r.classList.add(this.classes.hide),r}const n=document.createElement("div");return n.dataset.id=t.id,n.id=t.id,n.classList.add(this.classes.option),n.setAttribute("role","option"),t.class&&t.class.split(" ").forEach(r=>{n.classList.add(r)}),t.style&&(n.style.cssText=t.style),this.settings.searchHighlight&&this.content.search.input.value.trim()!==""?n.innerHTML=this.highlightText(t.html!==""?t.html:t.text,this.content.search.input.value,this.classes.searchHighlighter):t.html!==""?n.innerHTML=t.html:n.textContent=t.text,this.settings.showOptionTooltips&&n.textContent&&n.setAttribute("title",n.textContent),t.display||n.classList.add(this.classes.hide),t.disabled&&n.classList.add(this.classes.disabled),t.selected&&this.settings.hideSelected&&n.classList.add(this.classes.hide),t.selected?(n.classList.add(this.classes.selected),n.setAttribute("aria-selected","true"),this.main.main.setAttribute("aria-activedescendant",n.id)):(n.classList.remove(this.classes.selected),n.setAttribute("aria-selected","false")),n.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation();const s=this.store.getSelected(),l=r.currentTarget,i=String(l.dataset.id);if(t.disabled||t.selected&&!this.settings.allowDeselect||this.settings.isMultiple&&this.settings.maxSelected<=s.length&&!t.selected||this.settings.isMultiple&&this.settings.minSelected>=s.length&&t.selected)return;let o=!1;const a=this.store.getSelectedOptions();let u=[];this.settings.isMultiple&&(t.selected?u=a.filter(c=>c.id!==i):u=a.concat(t)),this.settings.isMultiple||(t.selected?u=[]:u=[t]),this.callbacks.beforeChange||(o=!0),this.callbacks.beforeChange&&(this.callbacks.beforeChange(u,a)===!1?o=!1:o=!0),o&&(this.store.getOptionByID(i)||this.callbacks.addOption(t),this.callbacks.setSelected(u.map(c=>c.id),!1),this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(u))}),n}destroy(){this.main.main.remove(),this.content.main.remove()}highlightText(t,n,r){let s=t;const l=new RegExp("("+n.trim()+")(?![^<]*>[^<>]*${a}`),s}moveContentAbove(){const t=this.main.main.offsetHeight,n=this.content.main.offsetHeight;this.main.main.classList.remove(this.classes.openBelow),this.main.main.classList.add(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.content.main.classList.add(this.classes.openAbove);const r=this.main.main.getBoundingClientRect();this.content.main.style.margin="-"+(t+n-1)+"px 0px 0px 0px",this.content.main.style.top=r.top+r.height+window.scrollY+"px",this.content.main.style.left=r.left+window.scrollX+"px",this.content.main.style.width=r.width+"px"}moveContentBelow(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.add(this.classes.openBelow),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.add(this.classes.openBelow);const t=this.main.main.getBoundingClientRect();this.content.main.style.margin="-1px 0px 0px 0px",this.settings.contentPosition!=="relative"&&(this.content.main.style.top=t.top+t.height+window.scrollY+"px",this.content.main.style.left=t.left+window.scrollX+"px",this.content.main.style.width=t.width+"px")}ensureElementInView(t,n){const r=t.scrollTop+t.offsetTop,s=r+t.clientHeight,l=n.offsetTop,i=l+n.clientHeight;ls&&(t.scrollTop+=i-s)}putContent(){const t=this.main.main.offsetHeight,n=this.main.main.getBoundingClientRect(),r=this.content.main.offsetHeight;return window.innerHeight-(n.top+t)<=r&&n.top>r?"up":"down"}updateDeselectAll(){if(!this.store||!this.settings)return;const t=this.store.getSelectedOptions(),n=t&&t.length>0,r=this.settings.isMultiple,s=this.settings.allowDeselect,l=this.main.deselect.main,i=this.classes.hide;s&&!(r&&!n)?l.classList.remove(i):l.classList.add(i)}}class Ly{constructor(t){this.listen=!1,this.observer=null,this.select=t,this.valueChange=this.valueChange.bind(this),this.select.addEventListener("change",this.valueChange,{passive:!0}),this.observer=new MutationObserver(this.observeCall.bind(this)),this.changeListen(!0)}enable(){this.select.disabled=!1}disable(){this.select.disabled=!0}hideUI(){this.select.tabIndex=-1,this.select.style.display="none",this.select.setAttribute("aria-hidden","true")}showUI(){this.select.removeAttribute("tabindex"),this.select.style.display="",this.select.removeAttribute("aria-hidden")}changeListen(t){this.listen=t,t&&this.observer&&this.observer.observe(this.select,{subtree:!0,childList:!0,attributes:!0}),t||this.observer&&this.observer.disconnect()}valueChange(t){return this.listen&&this.onValueChange&&this.onValueChange(this.getSelectedOptions()),!0}observeCall(t){if(!this.listen)return;let n=!1,r=!1,s=!1;for(const l of t)l.target===this.select&&(l.attributeName==="disabled"&&(r=!0),l.attributeName==="class"&&(n=!0)),(l.target.nodeName==="OPTGROUP"||l.target.nodeName==="OPTION")&&(s=!0);n&&this.onClassChange&&this.onClassChange(this.select.className.split(" ")),r&&this.onDisabledChange&&(this.changeListen(!1),this.onDisabledChange(this.select.disabled),this.changeListen(!0)),s&&this.onOptionsChange&&(this.changeListen(!1),this.onOptionsChange(this.getData()),this.changeListen(!0))}getData(){let t=[];const n=this.select.childNodes;for(const r of n)r.nodeName==="OPTGROUP"&&t.push(this.getDataFromOptgroup(r)),r.nodeName==="OPTION"&&t.push(this.getDataFromOption(r));return t}getDataFromOptgroup(t){let n={id:t.id,label:t.label,selectAll:t.dataset?t.dataset.selectall==="true":!1,selectAllText:t.dataset?t.dataset.selectalltext:"Select all",closable:t.dataset?t.dataset.closable:"off",options:[]};const r=t.childNodes;for(const s of r)s.nodeName==="OPTION"&&n.options.push(this.getDataFromOption(s));return n}getDataFromOption(t){return{id:t.id,value:t.value,text:t.text,html:t.dataset&&t.dataset.html?t.dataset.html:"",selected:t.selected,display:t.style.display!=="none",disabled:t.disabled,mandatory:t.dataset?t.dataset.mandatory==="true":!1,placeholder:t.dataset.placeholder==="true",class:t.className,style:t.style.cssText,data:t.dataset}}getSelectedOptions(){let t=[];const n=this.select.childNodes;for(const r of n){if(r.nodeName==="OPTGROUP"){const s=r.childNodes;for(const l of s)if(l.nodeName==="OPTION"){const i=l;i.selected&&t.push(this.getDataFromOption(i))}}if(r.nodeName==="OPTION"){const s=r;s.selected&&t.push(this.getDataFromOption(s))}}return t}getSelectedValues(){return this.getSelectedOptions().map(t=>t.value)}setSelected(t){this.changeListen(!1);const n=this.select.childNodes;for(const r of n){if(r.nodeName==="OPTGROUP"){const l=r.childNodes;for(const i of l)if(i.nodeName==="OPTION"){const o=i;o.selected=t.includes(o.id)}}if(r.nodeName==="OPTION"){const s=r;s.selected=t.includes(s.id)}}this.changeListen(!0)}updateSelect(t,n,r){this.changeListen(!1),t&&(this.select.dataset.id=t),n&&(this.select.style.cssText=n),r&&(this.select.className="",r.forEach(s=>{s.trim()!==""&&this.select.classList.add(s.trim())})),this.changeListen(!0)}updateOptions(t){this.changeListen(!1),this.select.innerHTML="";for(const n of t)n instanceof Lt&&this.select.appendChild(this.createOptgroup(n)),n instanceof He&&this.select.appendChild(this.createOption(n));this.select.dispatchEvent(new Event("change")),this.changeListen(!0)}createOptgroup(t){const n=document.createElement("optgroup");if(n.id=t.id,n.label=t.label,t.selectAll&&(n.dataset.selectAll="true"),t.closable!=="off"&&(n.dataset.closable=t.closable),t.options)for(const r of t.options)n.appendChild(this.createOption(r));return n}createOption(t){const n=document.createElement("option");return n.id=t.id,n.value=t.value,n.innerHTML=t.text,t.html!==""&&n.setAttribute("data-html",t.html),t.selected&&(n.selected=t.selected),t.disabled&&(n.disabled=!0),t.display===!1&&(n.style.display="none"),t.placeholder&&n.setAttribute("data-placeholder","true"),t.mandatory&&n.setAttribute("data-mandatory","true"),t.class&&t.class.split(" ").forEach(r=>{n.classList.add(r)}),t.data&&typeof t.data=="object"&&Object.keys(t.data).forEach(r=>{n.setAttribute("data-"+Ay(r),t.data[r])}),n}destroy(){this.changeListen(!1),this.select.removeEventListener("change",this.valueChange),this.observer&&(this.observer.disconnect(),this.observer=null),delete this.select.dataset.id,this.showUI()}}class Ty{constructor(t){this.id="",this.style="",this.class=[],this.isMultiple=!1,this.isOpen=!1,this.isFullOpen=!1,this.intervalMove=null,t||(t={}),this.id="ss-"+wu(),this.style=t.style||"",this.class=t.class||[],this.disabled=t.disabled!==void 0?t.disabled:!1,this.alwaysOpen=t.alwaysOpen!==void 0?t.alwaysOpen:!1,this.showSearch=t.showSearch!==void 0?t.showSearch:!0,this.ariaLabel=t.ariaLabel||"Combobox",this.searchPlaceholder=t.searchPlaceholder||"Search",this.searchText=t.searchText||"No Results",this.searchingText=t.searchingText||"Searching...",this.searchHighlight=t.searchHighlight!==void 0?t.searchHighlight:!1,this.closeOnSelect=t.closeOnSelect!==void 0?t.closeOnSelect:!0,this.contentLocation=t.contentLocation||document.body,this.contentPosition=t.contentPosition||"absolute",this.openPosition=t.openPosition||"auto",this.placeholderText=t.placeholderText!==void 0?t.placeholderText:"Select Value",this.allowDeselect=t.allowDeselect!==void 0?t.allowDeselect:!1,this.hideSelected=t.hideSelected!==void 0?t.hideSelected:!1,this.keepOrder=t.keepOrder!==void 0?t.keepOrder:!1,this.showOptionTooltips=t.showOptionTooltips!==void 0?t.showOptionTooltips:!1,this.minSelected=t.minSelected||0,this.maxSelected=t.maxSelected||1e3,this.timeoutDelay=t.timeoutDelay||200,this.maxValuesShown=t.maxValuesShown||20,this.maxValuesMessage=t.maxValuesMessage||"{number} selected"}}let zh=class{constructor(t){var i;if(this.events={search:void 0,searchFilter:(o,a)=>o.text.toLowerCase().indexOf(a.toLowerCase())!==-1,addable:void 0,beforeChange:void 0,afterChange:void 0,beforeOpen:void 0,afterOpen:void 0,beforeClose:void 0,afterClose:void 0},this.windowResize=Cs(()=>{!this.settings.isOpen&&!this.settings.isFullOpen||this.render.moveContent()}),this.windowScroll=Cs(()=>{!this.settings.isOpen&&!this.settings.isFullOpen||this.render.moveContent()}),this.documentClick=o=>{this.settings.isOpen&&o.target&&!ky(o.target,this.settings.id)&&this.close(o.type)},this.windowVisibilityChange=()=>{document.hidden&&this.close()},this.selectEl=typeof t.select=="string"?document.querySelector(t.select):t.select,!this.selectEl){t.events&&t.events.error&&t.events.error(new Error("Could not find select element"));return}if(this.selectEl.tagName!=="SELECT"){t.events&&t.events.error&&t.events.error(new Error("Element isnt of type select"));return}this.selectEl.dataset.ssid&&this.destroy(),this.settings=new Ty(t.settings);const n=["afterChange","beforeOpen","afterOpen","beforeClose","afterClose"];for(const o in t.events)t.events.hasOwnProperty(o)&&(n.indexOf(o)!==-1?this.events[o]=Cs(t.events[o],100):this.events[o]=t.events[o]);this.settings.disabled=(i=t.settings)!=null&&i.disabled?t.settings.disabled:this.selectEl.disabled,this.settings.isMultiple=this.selectEl.multiple,this.settings.style=this.selectEl.style.cssText,this.settings.class=this.selectEl.className.split(" "),this.select=new Ly(this.selectEl),this.select.updateSelect(this.settings.id,this.settings.style,this.settings.class),this.select.hideUI(),this.select.onValueChange=o=>{this.setSelected(o.map(a=>a.id))},this.select.onClassChange=o=>{this.settings.class=o,this.render.updateClassStyles()},this.select.onDisabledChange=o=>{o?this.disable():this.enable()},this.select.onOptionsChange=o=>{this.setData(o)},this.store=new Oy(this.settings.isMultiple?"multiple":"single",t.data?t.data:this.select.getData()),t.data&&this.select.updateOptions(this.store.getData());const r={open:this.open.bind(this),close:this.close.bind(this),addable:this.events.addable?this.events.addable:void 0,setSelected:this.setSelected.bind(this),addOption:this.addOption.bind(this),search:this.search.bind(this),beforeChange:this.events.beforeChange,afterChange:this.events.afterChange};this.render=new Py(this.settings,this.store,r),this.render.renderValues(),this.render.renderOptions(this.store.getData());const s=this.selectEl.getAttribute("aria-label"),l=this.selectEl.getAttribute("aria-labelledby");s?this.render.main.main.setAttribute("aria-label",s):l&&this.render.main.main.setAttribute("aria-labelledby",l),this.selectEl.parentNode&&this.selectEl.parentNode.insertBefore(this.render.main.main,this.selectEl.nextSibling),window.addEventListener("resize",this.windowResize,!1),this.settings.openPosition==="auto"&&window.addEventListener("scroll",this.windowScroll,!1),document.addEventListener("visibilitychange",this.windowVisibilityChange),this.settings.disabled&&this.disable(),this.settings.alwaysOpen&&this.open(),this.selectEl.slim=this}enable(){this.settings.disabled=!1,this.select.enable(),this.render.enable()}disable(){this.settings.disabled=!0,this.select.disable(),this.render.disable()}getData(){return this.store.getData()}setData(t){const n=this.store.getSelected(),r=this.store.validateDataArray(t);if(r){this.events.error&&this.events.error(r);return}this.store.setData(t);const s=this.store.getData();this.select.updateOptions(s),this.render.renderValues(),this.render.renderOptions(s),this.events.afterChange&&!po(n,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}getSelected(){return this.store.getSelected()}setSelected(t,n=!0){const r=this.store.getSelected();this.store.setSelectedBy("id",Array.isArray(t)?t:[t]);const s=this.store.getData();this.select.updateOptions(s),this.render.renderValues(),this.render.content.search.input.value!==""?this.search(this.render.content.search.input.value):this.render.renderOptions(s),n&&this.events.afterChange&&!po(r,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}addOption(t){const n=this.store.getSelected();this.store.getDataOptions().some(s=>s.value===(t.value??t.text))||this.store.addOption(t);const r=this.store.getData();this.select.updateOptions(r),this.render.renderValues(),this.render.renderOptions(r),this.events.afterChange&&!po(n,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}open(){this.settings.disabled||this.settings.isOpen||(this.events.beforeOpen&&this.events.beforeOpen(),this.render.open(),this.settings.showSearch&&this.render.searchFocus(),this.settings.isOpen=!0,setTimeout(()=>{this.events.afterOpen&&this.events.afterOpen(),this.settings.isOpen&&(this.settings.isFullOpen=!0),document.addEventListener("click",this.documentClick)},this.settings.timeoutDelay),this.settings.contentPosition==="absolute"&&(this.settings.intervalMove&&clearInterval(this.settings.intervalMove),this.settings.intervalMove=setInterval(this.render.moveContent.bind(this.render),500)))}close(t=null){!this.settings.isOpen||this.settings.alwaysOpen||(this.events.beforeClose&&this.events.beforeClose(),this.render.close(),this.render.content.search.input.value!==""&&this.search(""),this.render.mainFocus(t),this.settings.isOpen=!1,this.settings.isFullOpen=!1,setTimeout(()=>{this.events.afterClose&&this.events.afterClose(),document.removeEventListener("click",this.documentClick)},this.settings.timeoutDelay),this.settings.intervalMove&&clearInterval(this.settings.intervalMove))}search(t){if(this.render.content.search.input.value!==t&&(this.render.content.search.input.value=t),!this.events.search){this.render.renderOptions(t===""?this.store.getData():this.store.search(t,this.events.searchFilter));return}this.render.renderSearching();const n=this.events.search(t,this.store.getSelectedOptions());if(n instanceof Promise){n.then(r=>{this.render.renderOptions(this.store.partialToFullData(r))}).catch(r=>{this.render.renderError(typeof r=="string"?r:r.message)});return}else Array.isArray(n)?this.render.renderOptions(this.store.partialToFullData(n)):this.render.renderError("Search event must return a promise or an array of data")}destroy(){document.removeEventListener("click",this.documentClick),window.removeEventListener("resize",this.windowResize,!1),this.settings.openPosition==="auto"&&window.removeEventListener("scroll",this.windowScroll,!1),document.removeEventListener("visibilitychange",this.windowVisibilityChange),this.store.setData([]),this.render.destroy(),this.select.destroy()}};const Ry="CWYDT23U",Ny="slimselectjscom",My=Mi({__name:"carbonad",setup(e){const t=Gd(null);let n=!1;return uh(()=>{if(!n){n=!0;const r=document.createElement("script");r.id="_carbonads_js",r.src=`//cdn.carbonads.com/carbon.js?serve=${Ry}&placement=${Ny}`,r.async=!0,t.value&&t.value.appendChild(r)}}),(r,s)=>(Di(),Eh("div",{class:"carbon-container",ref_key:"container",ref:t},null,512))}}),Fy=Mi({name:"App",components:{CarbonAd:My},data(){return{nav:null,navDebounce:Cs(()=>{this.setDemensions()},100),year:new Date().getFullYear(),width:0,height:0,navData:[{text:"Home",value:"/",class:"label"},{label:"Install",closable:"close",options:[{text:"npm",value:"install#npm"},{text:"cdn",value:"install#cdn"},{text:"download",value:"install#download"}]},{label:"Selects",closable:"close",options:[{text:"single",value:"selects#single"},{text:"multiple",value:"selects#multiple"}]},{label:"Data",closable:"close",options:[{text:"types",value:"data#types"},{text:"field",value:"data#field"}]},{label:"Settings",closable:"close",options:[{text:"select",value:"settings#select"},{text:"alwaysOpen",value:"settings#alwaysOpen"},{text:"contentLocation",value:"settings#contentLocation"},{text:"contentPosition",value:"settings#contentPosition"},{text:"openPosition",value:"settings#openPosition"},{text:"placeholder",value:"settings#placeholder"},{text:"selectAll",value:"settings#selectAll"},{text:"allowDeselect",value:"settings#allowDeselect"},{text:"display",value:"settings#display"},{text:"disabled",value:"settings#disabled"},{text:"mandatory",value:"settings#mandatory"},{text:"minmax",value:"settings#minmax"},{text:"dataAttributes",value:"settings#dataAttributes"},{text:"cssClass",value:"settings#cssClass"},{text:"inlineStyles",value:"settings#inlineStyles"},{text:"html",value:"settings#html"},{text:"keepOrder",value:"settings#keepOrder"},{text:"search",value:"settings#search"},{text:"closeOnSelect",value:"settings#closeOnSelect"},{text:"showOptionTooltips",value:"settings#showOptionTooltips"},{text:"closable",value:"settings#closable"},{text:"hideSelected",value:"settings#hideSelected"},{text:"maxValuesShown",value:"settings#maxValuesShown"}]},{label:"Events",closable:"close",options:[{text:"error",value:"events#error"},{text:"beforeChange",value:"events#beforeChange"},{text:"afterChange",value:"events#afterChange"},{text:"open",value:"events#open"},{text:"search",value:"events#search"},{text:"searchFilter",value:"events#searchFilter"},{text:"addable",value:"events#addable"}]},{label:"Methods",closable:"close",options:[{text:"getSelected",value:"methods#getSelected"},{text:"setSelected",value:"methods#setSelected"},{text:"getData",value:"methods#getData"},{text:"setData",value:"methods#setData"},{text:"enableDisable",value:"methods#enableDisable"},{text:"openClose",value:"methods#openClose"},{text:"search",value:"methods#search"},{text:"destroy",value:"methods#destroy"}]},{label:"Frameworks",closable:"close",options:[{text:"vue",value:"vue"},{text:"react",value:"react"}]}]}},mounted(){this.runNav(),this.$router.isReady().then(()=>{this.nav&&this.nav.setSelected(this.$router.currentRoute.value.fullPath.replace("/",""))}),this.$router.afterEach(()=>{if(this.$route.query.p){setTimeout(()=>{this.$route.query.p&&this.$router.push({path:this.$route.query.p.toString(),hash:this.$route.hash})},200);return}setTimeout(()=>{const e=this.$route.hash;if(e===""&&window.scroll({top:0,behavior:"smooth"}),e){const t=document.querySelector(e);if(t){const n=document.querySelector("header"),r=document.querySelector("nav"),s=n?n.clientHeight+(window.innerWidth<700?r.clientHeight:0)+8:0;window.scroll({top:t.offsetTop-s,behavior:"smooth"})}}},200)}),this.setDemensions(),window.addEventListener("resize",this.navDebounce)},unmounted(){var e;window.removeEventListener("resize",this.navDebounce),(e=this.nav)==null||e.destroy()},watch:{width(){this.runNav()}},methods:{setDemensions(){this.width=document.documentElement.clientWidth,this.height=document.documentElement.clientHeight},runNav(){this.nav&&(this.nav.destroy(),this.nav=null);let e={searchHighlight:!0,openContent:"below"};this.width>700&&(e.alwaysOpen=!0,e.contentPosition="relative",e.contentLocation=this.$refs.navContent),this.nav=new zh({select:this.$refs.nav,data:this.navData,settings:e,events:{afterChange:t=>{const r=t[0].value.split("#"),s=r[0],l=r[1]?"#"+r[1]:void 0;this.$router.push({path:s,hash:l})}}})}}}),Iy="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNTE3OEEyRTk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNTE3OEEyRjk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTJDOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTJEOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FYrpWAAABrNJREFUeNrkW2lsVFUUvjMWirYUkS5BXApUa2vd6gL+wAWjoP5RiW2EUBajAiqSuPADQ0w1UUQTrcFAUUSJEKriEuMWFKuJIElFSS24YNpQK6WoBbuAktbva880M8O8vnfevJm+CSf5cme599xzvnfffffce17AJFjycnLzUVwDXAgUAucBY4BMIEOqdQIdwJ/Az4J64OvWtoONibQvkACHgyiuBe4CbgLOjVNlE/AZsAmoBSE9viQAjueieBCYC5yVoAvWDKwHqkBEmy8IgON09lHgXmCESY4cBaqBlSCieUgIgOPDUCwBngBOM0MjXdL/CyDiv6QRAOcvR7EBKDL+kD3AbJBQl1AC4DjrLwaeBYYbf8m/ciu+BCJ6PScAzp+K4nXgTuNveQuYAxK6PSMAzo9C8TFwtUkN2Q7cDBIOx02AOP8FUGpSSzgf3GBHQsDGec7unwOTTWrKDiGhS02ATHjvALeb1JZ3gRlWE+MpVq0yMzIekRk/1YWP6o7Ors5vHI8AXH1Odl8BaTbKrwd4j10MTAduS8JqkKvA94BPgN0A56htNm2OMyDDKNhuSwCcT5dIrMBG6S4oLI1qezqKBcBjwGiPHW8HVgCr0W97VL/fobjMpv2vQAnaHgv/MdYVXurAeSNPhggRw56BQatRVgL3A0H5+xDwI8Dw9g/5Hlq+clmdDYwF8iV0zpb/GP2tApZHOx4m2xwQUCC+VVqOABg+AUUDkO6AgHkwaL2DJXORxPVNylUnw+gpXObaLXFRlxHoaw7U8uoXQ99vViNgqUPnKQfsKojhdW7GuxDW5JUtIuni432hH4JhLJ7Dq6qwcZiPZnpNXDJPfI0kQEJbjVM5PiIgW3nhlkQQILH9LGWnV/iIAK0ts8TngREwDchVKrnKRwRobckVnwcIKFcq4ONrkY8IWBT2SHUq5eEE3Khs/CRm6Z1+8V5sqVQ26/M5gHuhSJ79TqUFmIhOj/ppwQ8/Rshqb5yiWXFQFhsaWeU352UU0KaXlc2mBI1+Y3OzjyO/Gm2kSAIKFQ2awfQ+v3oP23gL/K5oUhh0GPiEZG8KxP97FHULgsqwtTUFCDioqHsGCRipaHA8BQjQrAcyg4roj5KVAgSMUtRNDyqVj0wBAlQ2koBuRf3xKUBAvqJuN1eCrYpAiHNAltNjpyFYDfL47oix38wdmDA5AvYr+kjzWRgcLVcqnKfsJwGNyk5u9TEBtyjrNwaVgRClTPKA/Db8aVOZslkDG2nD2vEuOkqGlLmYpHcGJLlJu8LjtvJFgx06Jvnq8xC33gUBeUE4waWjduua5wdVPrr6VS6cr6PvoXv5Ixed3g3mH/fB1V9OW1w07fM5IEouUEZR4bIWWJzsTRJ55r8I3ONSRRFs3hsIU8hkgkkulf0CPAx8qElQcuk4beYp9Epgoks138LOvqSPgfyAzIwMZlnFSobgIegc4H3gH6AkxmKDub9Mjb0DeoYDrZ1dne0eO14AvfPx8RXgAYaycahbBvt+GLgFpIM0md3PjqrMTMxpYKxB6p1v+s/n7bbSuMCqldmZyc+fRh9ND+IsAxrmG3C3qtj0J1uP84hLrnwnwJbjEQRIxzw0XB2jER93C9Bog9TjsRgzLpzuJr0BzHV6e8gwf9XoziqdCv1YE/oSTQBHwfem/3w+5syPxuukLtfdO0zk+WIs+YuPKLQ7ohzyWTIix3joPPMTLg1d/Yg5gIL7ogf32U/4WGGhYDr+34J6bUALPpPA62w6XYMOP9BaCv3HoD/PeJubODN6U/eEq4cKTIurttpBAZ4L+87TmKdtOt0ah8FbPXS+WnyLEKskqUy5FaweM5dA2e6w+pNkZuajhfMD3/zYBfDKb3Y6+cWwgytOL7bh98nQ73BEgHReIvd4Roy/a6Cs3CRYJOnq7zjV8HWcybC33mpLLKZIA84FPRYhcSokUNL2Civnjd0MjoZbUCy0+PtNkDDD5wQsFB8sxWm2+GJZd8eSt4HnZXnZ66Nb4CHYYxuxat4XmI1inbHeczskq77DMrK4z8AgK3+Q/L5EEMBn/PzQos0zAsQgvg5XY3TpNKOTSAD3NsrQX63TBqq9PVHM9NgvfXi/06ZSjfNqAoQEHj9Pled+pw8cpw2co6aKbSoJxDlJnYniKdP/sqSVrrEw7IBL/TnG+rSXEy7fYVoG/S1uffDkzVEYypB1qewJRCdb5rp9yxN6mQDZFmOS2wisCIXo8Yin7w7LiKiQEcFYfhOMnBmnzo1CLIO09Qyt47niJxDQ29trTmY56Qn4X4ABAFR7IoDmVT5NAAAAAElFTkSuQmCC",Dy="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAQMAAAD58POIAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZQTFRFyzg3////IltC9QAAAAFiS0dEAf8CLd4AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAkSURBVEjHY2AYBYMV/IeDUQG4AJgeFRgVGBUYFSBNYBQMPgAARjtdvxo6xaMAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTEtMDUtMzBUMjM6MTA6NDQtMDc6MDCm4GvfAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEwLTEyLTA2VDEyOjIwOjEyLTA4OjAwpIGEmQAAADJ0RVh0UE5HOmNIUk0AY2h1bmsgd2FzIGZvdW5kIChzZWUgQ2hyb21hdGljaXR5LCBhYm92ZSkH0UjaAAAAKXRFWHRQTkc6Z0FNQQBnYW1tYT0wLjQ1NDU1IChTZWUgR2FtbWEsIGFib3ZlKRISLKcAAAAUdEVYdFBORzpJSERSLmJpdF9kZXB0aAA4KYV+UAAAABV0RVh0UE5HOklIRFIuY29sb3JfdHlwZQA2BkqnKwAAABt0RVh0UE5HOklIRFIuaW50ZXJsYWNlX21ldGhvZAAw+zsHjAAAABx0RVh0UE5HOklIRFIud2lkdGgsaGVpZ2h0ADE2LCAxNjjVBg0AAAAodEVYdFBORzpwSFlzAHhfcmVzPTI4MzUsIHlfcmVzPTI4MzUsIHVuaXRzPTGCKXI+AAAAKHRFWHRQTkc6c1JHQgBpbnRlbnQ9MCAoU2VlIFJlbmRlcmluZyBpbnRlbnQp8hEU9QAAAABJRU5ErkJggg==",by=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},jy=Iv('

Slim Select 2.0

Advanced select dropdown
',1),zy={ref:"nav"},By={class:"nav-content",ref:"navContent"},Uy=rn("a",{href:"http://webiswhatido.com",style:{color:"#ffffff"},target:"_blank"},"Brian Voelker",-1),Vy=rn("br",null,null,-1);function Hy(e,t,n,r,s,l){const i=Lc("CarbonAd"),o=Lc("router-view");return Di(),Eh(yt,null,[jy,rn("nav",null,[rn("select",zy,null,512),rn("div",By,null,512),be(i)]),rn("main",null,[be(o),rn("footer",null,[Il(" © "+hg(e.year)+" ",1),Uy,Il(". "),Vy,Il(" Slim Select is under the MIT license. ")])])],64)}const $y=by(Fy,[["render",Hy]]);var pf=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Su(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Bh={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** + */const mr=typeof window<"u";function x0(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ce=Object.assign;function co(e,t){const n={};for(const r in t){const s=t[r];n[r]=jt(s)?s.map(e):e(s)}return n}const Es=()=>{},jt=Array.isArray,E0=/\/$/,_0=e=>e.replace(E0,"");function fo(e,t,n="/"){let r,s={},l="",i="";const o=t.indexOf("#");let a=t.indexOf("?");return o=0&&(a=-1),a>-1&&(r=t.slice(0,a),l=t.slice(a+1,o>-1?o:t.length),s=e(l)),o>-1&&(r=r||t.slice(0,o),i=t.slice(o,t.length)),r=O0(r??t,n),{fullPath:r+(l&&"?")+l+i,path:r,query:s,hash:i}}function C0(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Jc(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function k0(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&Hr(t.matched[r],n.matched[s])&&Ph(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Hr(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ph(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!A0(e[n],t[n]))return!1;return!0}function A0(e,t){return jt(e)?Xc(e,t):jt(t)?Xc(t,e):e===t}function Xc(e,t){return jt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function O0(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let l=n.length-1,i,o;for(i=0;i1&&l--;else break;return n.slice(0,l).join("/")+"/"+r.slice(i-(i===r.length?1:0)).join("/")}var js;(function(e){e.pop="pop",e.push="push"})(js||(js={}));var _s;(function(e){e.back="back",e.forward="forward",e.unknown=""})(_s||(_s={}));function P0(e){if(!e)if(mr){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),_0(e)}const L0=/^[^#]+#/;function T0(e,t){return e.replace(L0,"#")+t}function R0(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const zi=()=>({left:window.pageXOffset,top:window.pageYOffset});function N0(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=R0(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function qc(e,t){return(history.state?history.state.position-t:-1)+e}const ta=new Map;function M0(e,t){ta.set(e,t)}function F0(e){const t=ta.get(e);return ta.delete(e),t}let I0=()=>location.protocol+"//"+location.host;function Lh(e,t){const{pathname:n,search:r,hash:s}=t,l=e.indexOf("#");if(l>-1){let o=s.includes(e.slice(l))?e.slice(l).length:1,a=s.slice(o);return a[0]!=="/"&&(a="/"+a),Jc(a,"")}return Jc(n,e)+r+s}function D0(e,t,n,r){let s=[],l=[],i=null;const o=({state:p})=>{const w=Lh(e,location),x=n.value,_=t.value;let L=0;if(p){if(n.value=w,t.value=p,i&&i===x){i=null;return}L=_?p.position-_.position:0}else r(w);s.forEach(m=>{m(n.value,x,{delta:L,type:js.pop,direction:L?L>0?_s.forward:_s.back:_s.unknown})})};function a(){i=n.value}function u(p){s.push(p);const w=()=>{const x=s.indexOf(p);x>-1&&s.splice(x,1)};return l.push(w),w}function c(){const{history:p}=window;p.state&&p.replaceState(ce({},p.state,{scroll:zi()}),"")}function d(){for(const p of l)p();l=[],window.removeEventListener("popstate",o),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",o),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:a,listen:u,destroy:d}}function ef(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?zi():null}}function b0(e){const{history:t,location:n}=window,r={value:Lh(e,n)},s={value:t.state};s.value||l(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(a,u,c){const d=e.indexOf("#"),p=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+a:I0()+e+a;try{t[c?"replaceState":"pushState"](u,"",p),s.value=u}catch(w){console.error(w),n[c?"replace":"assign"](p)}}function i(a,u){const c=ce({},t.state,ef(s.value.back,a,s.value.forward,!0),u,{position:s.value.position});l(a,c,!0),r.value=a}function o(a,u){const c=ce({},s.value,t.state,{forward:a,scroll:zi()});l(c.current,c,!0);const d=ce({},ef(r.value,a,null),{position:c.position+1},u);l(a,d,!1),r.value=a}return{location:r,state:s,push:o,replace:i}}function j0(e){e=P0(e);const t=b0(e),n=D0(e,t.state,t.location,t.replace);function r(l,i=!0){i||n.pauseListeners(),history.go(l)}const s=ce({location:"",base:e,go:r,createHref:T0.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function z0(e){return typeof e=="string"||e&&typeof e=="object"}function Th(e){return typeof e=="string"||typeof e=="symbol"}const vn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Rh=Symbol("");var tf;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(tf||(tf={}));function $r(e,t){return ce(new Error,{type:e,[Rh]:!0},t)}function qt(e,t){return e instanceof Error&&Rh in e&&(t==null||!!(e.type&t))}const nf="[^/]+?",B0={sensitive:!1,strict:!1,start:!0,end:!0},U0=/[.+*?^${}()[\]/\\]/g;function V0(e,t){const n=ce({},B0,t),r=[];let s=n.start?"^":"";const l=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let d=0;dt.length?t.length===1&&t[0]===80?1:-1:0}function $0(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const W0={type:0,value:""},Q0=/[a-zA-Z0-9_]/;function K0(e){if(!e)return[[]];if(e==="/")return[[W0]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(w){throw new Error(`ERR (${n})/"${u}": ${w}`)}let n=0,r=n;const s=[];let l;function i(){l&&s.push(l),l=[]}let o=0,a,u="",c="";function d(){u&&(n===0?l.push({type:0,value:u}):n===1||n===2||n===3?(l.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),l.push({type:1,value:u,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=a}for(;o{i(f)}:Es}function i(c){if(Th(c)){const d=r.get(c);d&&(r.delete(c),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(c);d>-1&&(n.splice(d,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function o(){return n}function a(c){let d=0;for(;d=0&&(c.record.path!==n[d].record.path||!Nh(c,n[d]));)d++;n.splice(d,0,c),c.record.name&&!lf(c)&&r.set(c.record.name,c)}function u(c,d){let p,w={},x,_;if("name"in c&&c.name){if(p=r.get(c.name),!p)throw $r(1,{location:c});_=p.record.name,w=ce(sf(d.params,p.keys.filter(f=>!f.optional).map(f=>f.name)),c.params&&sf(c.params,p.keys.map(f=>f.name))),x=p.stringify(w)}else if("path"in c)x=c.path,p=n.find(f=>f.re.test(x)),p&&(w=p.parse(x),_=p.record.name);else{if(p=d.name?r.get(d.name):n.find(f=>f.re.test(d.path)),!p)throw $r(1,{location:c,currentLocation:d});_=p.record.name,w=ce({},d.params,c.params),x=p.stringify(w)}const L=[];let m=p;for(;m;)L.unshift(m.record),m=m.parent;return{name:_,path:x,params:w,matched:L,meta:X0(L)}}return e.forEach(c=>l(c)),{addRoute:l,resolve:u,removeRoute:i,getRoutes:o,getRecordMatcher:s}}function sf(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Z0(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:J0(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function J0(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function lf(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function X0(e){return e.reduce((t,n)=>ce(t,n.meta),{})}function of(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Nh(e,t){return t.children.some(n=>n===e||Nh(e,n))}const Mh=/#/g,q0=/&/g,ey=/\//g,ty=/=/g,ny=/\?/g,Fh=/\+/g,ry=/%5B/g,sy=/%5D/g,Ih=/%5E/g,ly=/%60/g,Dh=/%7B/g,iy=/%7C/g,bh=/%7D/g,oy=/%20/g;function vu(e){return encodeURI(""+e).replace(iy,"|").replace(ry,"[").replace(sy,"]")}function ay(e){return vu(e).replace(Dh,"{").replace(bh,"}").replace(Ih,"^")}function na(e){return vu(e).replace(Fh,"%2B").replace(oy,"+").replace(Mh,"%23").replace(q0,"%26").replace(ly,"`").replace(Dh,"{").replace(bh,"}").replace(Ih,"^")}function uy(e){return na(e).replace(ty,"%3D")}function cy(e){return vu(e).replace(Mh,"%23").replace(ny,"%3F")}function fy(e){return e==null?"":cy(e).replace(ey,"%2F")}function ei(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function dy(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sl&&na(l)):[r&&na(r)]).forEach(l=>{l!==void 0&&(t+=(t.length?"&":"")+n,l!=null&&(t+="="+l))})}return t}function hy(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=jt(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const py=Symbol(""),uf=Symbol(""),yu=Symbol(""),jh=Symbol(""),ra=Symbol("");function ls(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function xn(e,t,n,r,s){const l=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((i,o)=>{const a=d=>{d===!1?o($r(4,{from:n,to:t})):d instanceof Error?o(d):z0(d)?o($r(2,{from:t,to:d})):(l&&r.enterCallbacks[s]===l&&typeof d=="function"&&l.push(d),i())},u=e.call(r&&r.instances[s],t,n,a);let c=Promise.resolve(u);e.length<3&&(c=c.then(a)),c.catch(d=>o(d))})}function ho(e,t,n,r){const s=[];for(const l of e)for(const i in l.components){let o=l.components[i];if(!(t!=="beforeRouteEnter"&&!l.instances[i]))if(my(o)){const u=(o.__vccOpts||o)[t];u&&s.push(xn(u,n,r,l,i))}else{let a=o();s.push(()=>a.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${i}" at "${l.path}"`));const c=x0(u)?u.default:u;l.components[i]=c;const p=(c.__vccOpts||c)[t];return p&&xn(p,n,r,l,i)()}))}}return s}function my(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function cf(e){const t=an(yu),n=an(jh),r=Mt(()=>t.resolve(Nr(e.to))),s=Mt(()=>{const{matched:a}=r.value,{length:u}=a,c=a[u-1],d=n.matched;if(!c||!d.length)return-1;const p=d.findIndex(Hr.bind(null,c));if(p>-1)return p;const w=ff(a[u-2]);return u>1&&ff(c)===w&&d[d.length-1].path!==w?d.findIndex(Hr.bind(null,a[u-2])):p}),l=Mt(()=>s.value>-1&&wy(n.params,r.value.params)),i=Mt(()=>s.value>-1&&s.value===n.matched.length-1&&Ph(n.params,r.value.params));function o(a={}){return yy(a)?t[Nr(e.replace)?"replace":"push"](Nr(e.to)).catch(Es):Promise.resolve()}return{route:r,href:Mt(()=>r.value.href),isActive:l,isExactActive:i,navigate:o}}const gy=Mi({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:cf,setup(e,{slots:t}){const n=Ti(cf(e)),{options:r}=an(yu),s=Mt(()=>({[df(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[df(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&t.default(n);return e.custom?l:Oh("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},l)}}}),vy=gy;function yy(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function wy(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!jt(s)||s.length!==r.length||r.some((l,i)=>l!==s[i]))return!1}return!0}function ff(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const df=(e,t,n)=>e??t??n,Sy=Mi({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=an(ra),s=Mt(()=>e.route||r.value),l=an(uf,0),i=Mt(()=>{let u=Nr(l);const{matched:c}=s.value;let d;for(;(d=c[u])&&!d.components;)u++;return u}),o=Mt(()=>s.value.matched[i.value]);Nl(uf,Mt(()=>i.value+1)),Nl(py,o),Nl(ra,s);const a=Gd();return Rl(()=>[a.value,o.value,e.name],([u,c,d],[p,w,x])=>{c&&(c.instances[d]=u,w&&w!==c&&u&&u===p&&(c.leaveGuards.size||(c.leaveGuards=w.leaveGuards),c.updateGuards.size||(c.updateGuards=w.updateGuards))),u&&c&&(!w||!Hr(c,w)||!p)&&(c.enterCallbacks[d]||[]).forEach(_=>_(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,d=o.value,p=d&&d.components[c];if(!p)return hf(n.default,{Component:p,route:u});const w=d.props[c],x=w?w===!0?u.params:typeof w=="function"?w(u):w:null,L=Oh(p,ce({},x,t,{onVnodeUnmounted:m=>{m.component.isUnmounted&&(d.instances[c]=null)},ref:a}));return hf(n.default,{Component:L,route:u})||L}}});function hf(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const xy=Sy;function Ey(e){const t=Y0(e.routes,e),n=e.parseQuery||dy,r=e.stringifyQuery||af,s=e.history,l=ls(),i=ls(),o=ls(),a=Dg(vn);let u=vn;mr&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=co.bind(null,A=>""+A),d=co.bind(null,fy),p=co.bind(null,ei);function w(A,V){let b,Q;return Th(A)?(b=t.getRecordMatcher(A),Q=V):Q=A,t.addRoute(Q,b)}function x(A){const V=t.getRecordMatcher(A);V&&t.removeRoute(V)}function _(){return t.getRoutes().map(A=>A.record)}function L(A){return!!t.getRecordMatcher(A)}function m(A,V){if(V=ce({},V||a.value),typeof A=="string"){const E=fo(n,A,V.path),O=t.resolve({path:E.path},V),T=s.createHref(E.fullPath);return ce(E,O,{params:p(O.params),hash:ei(E.hash),redirectedFrom:void 0,href:T})}let b;if("path"in A)b=ce({},A,{path:fo(n,A.path,V.path).path});else{const E=ce({},A.params);for(const O in E)E[O]==null&&delete E[O];b=ce({},A,{params:d(E)}),V.params=d(V.params)}const Q=t.resolve(b,V),le=A.hash||"";Q.params=c(p(Q.params));const g=C0(r,ce({},A,{hash:ay(le),path:Q.path})),v=s.createHref(g);return ce({fullPath:g,hash:le,query:r===af?hy(A.query):A.query||{}},Q,{redirectedFrom:void 0,href:v})}function f(A){return typeof A=="string"?fo(n,A,a.value.path):ce({},A)}function h(A,V){if(u!==A)return $r(8,{from:V,to:A})}function y(A){return k(A)}function S(A){return y(ce(f(A),{replace:!0}))}function C(A){const V=A.matched[A.matched.length-1];if(V&&V.redirect){const{redirect:b}=V;let Q=typeof b=="function"?b(A):b;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=f(Q):{path:Q},Q.params={}),ce({query:A.query,hash:A.hash,params:"path"in Q?{}:A.params},Q)}}function k(A,V){const b=u=m(A),Q=a.value,le=A.state,g=A.force,v=A.replace===!0,E=C(b);if(E)return k(ce(f(E),{state:typeof E=="object"?ce({},le,E.state):le,force:g,replace:v}),V||b);const O=b;O.redirectedFrom=V;let T;return!g&&k0(r,Q,b)&&(T=$r(16,{to:O,from:Q}),te(Q,Q,!0,!1)),(T?Promise.resolve(T):U(O,Q)).catch(N=>qt(N)?qt(N,2)?N:K(N):P(N,O,Q)).then(N=>{if(N){if(qt(N,2))return k(ce({replace:v},f(N.to),{state:typeof N.to=="object"?ce({},le,N.to.state):le,force:g}),V||O)}else N=ke(O,Q,!0,v,le);return ee(O,Q,N),N})}function R(A,V){const b=h(A,V);return b?Promise.reject(b):Promise.resolve()}function D(A){const V=xe.values().next().value;return V&&typeof V.runWithContext=="function"?V.runWithContext(A):A()}function U(A,V){let b;const[Q,le,g]=_y(A,V);b=ho(Q.reverse(),"beforeRouteLeave",A,V);for(const E of Q)E.leaveGuards.forEach(O=>{b.push(xn(O,A,V))});const v=R.bind(null,A,V);return b.push(v),ue(b).then(()=>{b=[];for(const E of l.list())b.push(xn(E,A,V));return b.push(v),ue(b)}).then(()=>{b=ho(le,"beforeRouteUpdate",A,V);for(const E of le)E.updateGuards.forEach(O=>{b.push(xn(O,A,V))});return b.push(v),ue(b)}).then(()=>{b=[];for(const E of g)if(E.beforeEnter)if(jt(E.beforeEnter))for(const O of E.beforeEnter)b.push(xn(O,A,V));else b.push(xn(E.beforeEnter,A,V));return b.push(v),ue(b)}).then(()=>(A.matched.forEach(E=>E.enterCallbacks={}),b=ho(g,"beforeRouteEnter",A,V),b.push(v),ue(b))).then(()=>{b=[];for(const E of i.list())b.push(xn(E,A,V));return b.push(v),ue(b)}).catch(E=>qt(E,8)?E:Promise.reject(E))}function ee(A,V,b){o.list().forEach(Q=>D(()=>Q(A,V,b)))}function ke(A,V,b,Q,le){const g=h(A,V);if(g)return g;const v=V===vn,E=mr?history.state:{};b&&(Q||v?s.replace(A.fullPath,ce({scroll:v&&E&&E.scroll},le)):s.push(A.fullPath,le)),a.value=A,te(A,V,b,v),K()}let Le;function At(){Le||(Le=s.listen((A,V,b)=>{if(!et.listening)return;const Q=m(A),le=C(Q);if(le){k(ce(le,{replace:!0}),Q).catch(Es);return}u=Q;const g=a.value;mr&&M0(qc(g.fullPath,b.delta),zi()),U(Q,g).catch(v=>qt(v,12)?v:qt(v,2)?(k(v.to,Q).then(E=>{qt(E,20)&&!b.delta&&b.type===js.pop&&s.go(-1,!1)}).catch(Es),Promise.reject()):(b.delta&&s.go(-b.delta,!1),P(v,Q,g))).then(v=>{v=v||ke(Q,g,!1),v&&(b.delta&&!qt(v,8)?s.go(-b.delta,!1):b.type===js.pop&&qt(v,20)&&s.go(-1,!1)),ee(Q,g,v)}).catch(Es)}))}let Bt=ls(),ge=ls(),se;function P(A,V,b){K(A);const Q=ge.list();return Q.length?Q.forEach(le=>le(A,V,b)):console.error(A),Promise.reject(A)}function W(){return se&&a.value!==vn?Promise.resolve():new Promise((A,V)=>{Bt.add([A,V])})}function K(A){return se||(se=!A,At(),Bt.list().forEach(([V,b])=>A?b(A):V()),Bt.reset()),A}function te(A,V,b,Q){const{scrollBehavior:le}=e;if(!mr||!le)return Promise.resolve();const g=!b&&F0(qc(A.fullPath,0))||(Q||!b)&&history.state&&history.state.scroll||null;return Xd().then(()=>le(A,V,g)).then(v=>v&&N0(v)).catch(v=>P(v,A,V))}const Z=A=>s.go(A);let ct;const xe=new Set,et={currentRoute:a,listening:!0,addRoute:w,removeRoute:x,hasRoute:L,getRoutes:_,resolve:m,options:e,push:y,replace:S,go:Z,back:()=>Z(-1),forward:()=>Z(1),beforeEach:l.add,beforeResolve:i.add,afterEach:o.add,onError:ge.add,isReady:W,install(A){const V=this;A.component("RouterLink",vy),A.component("RouterView",xy),A.config.globalProperties.$router=V,Object.defineProperty(A.config.globalProperties,"$route",{enumerable:!0,get:()=>Nr(a)}),mr&&!ct&&a.value===vn&&(ct=!0,y(s.location).catch(le=>{}));const b={};for(const le in vn)Object.defineProperty(b,le,{get:()=>a.value[le],enumerable:!0});A.provide(yu,V),A.provide(jh,Vd(b)),A.provide(ra,a);const Q=A.unmount;xe.add(A),A.unmount=function(){xe.delete(A),xe.size<1&&(u=vn,Le&&Le(),Le=null,a.value=vn,ct=!1,se=!1),Q()}}};function ue(A){return A.reduce((V,b)=>V.then(()=>D(b)),Promise.resolve())}return et}function _y(e,t){const n=[],r=[],s=[],l=Math.max(t.matched.length,e.matched.length);for(let i=0;iHr(u,o))?r.push(o):n.push(o));const a=e.matched[i];a&&(t.matched.find(u=>Hr(u,a))||s.push(a))}return[n,r,s]}const Cy=Ey({history:j0(),linkActiveClass:"active",routes:[{path:"/",name:"Home",component:()=>Xt(()=>import("./home.js"),__vite__mapDeps([0,1]))},{path:"/install",name:"Install",component:()=>Xt(()=>import("./install.js"),__vite__mapDeps([]))},{path:"/selects",name:"Selects",component:()=>Xt(()=>import("./selects.js"),__vite__mapDeps([]))},{path:"/data",name:"Data",component:()=>Xt(()=>import("./data.js"),__vite__mapDeps([]))},{path:"/settings",name:"Settings",component:()=>Xt(()=>import("./index2.js"),__vite__mapDeps([2,3]))},{path:"/events",name:"Events",component:()=>Xt(()=>import("./index3.js"),__vite__mapDeps([]))},{path:"/methods",name:"Methods",component:()=>Xt(()=>import("./index4.js"),__vite__mapDeps([]))},{path:"/vue",name:"Vue",component:()=>Xt(()=>import("./vue.js"),__vite__mapDeps([]))},{path:"/react",name:"React",component:()=>Xt(()=>import("./react.js"),__vite__mapDeps([]))}]});function wu(){return Math.random().toString(36).substring(2,10)}function ky(e,t){function n(s,l){return l&&s&&s.classList&&s.classList.contains(l)||l&&s&&s.dataset&&s.dataset.id&&s.dataset.id===t?s:null}function r(s,l){return!s||s===document?null:n(s,l)?s:r(s.parentNode,l)}return n(e,t)||r(e,t)}function Cs(e,t=50,n=!1){let r;return function(...s){const l=self,i=()=>{r=null,n||e.apply(l,s)},o=n&&!r;clearTimeout(r),r=setTimeout(i,t),o&&e.apply(l,s)}}function po(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Ay(e){const t=e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,n=>"-"+n.toLowerCase());return e[0]===e[0].toUpperCase()?t.substring(1):t}class Lt{constructor(t){if(this.id=!t.id||t.id===""?wu():t.id,this.label=t.label||"",this.selectAll=t.selectAll===void 0?!1:t.selectAll,this.selectAllText=t.selectAllText||"Select All",this.closable=t.closable||"off",this.options=[],t.options)for(const n of t.options)this.options.push(new He(n))}}class He{constructor(t){this.id=!t.id||t.id===""?wu():t.id,this.value=t.value===void 0?t.text:t.value,this.text=t.text||"",this.html=t.html||"",this.selected=t.selected!==void 0?t.selected:!1,this.display=t.display!==void 0?t.display:!0,this.disabled=t.disabled!==void 0?t.disabled:!1,this.mandatory=t.mandatory!==void 0?t.mandatory:!1,this.placeholder=t.placeholder!==void 0?t.placeholder:!1,this.class=t.class||"",this.style=t.style||"",this.data=t.data||{}}}class Oy{constructor(t,n){this.selectType="single",this.data=[],this.selectType=t,this.setData(n)}validateDataArray(t){if(!Array.isArray(t))return new Error("Data must be an array");for(let n of t)if(n instanceof Lt||"label"in n){if(!("label"in n))return new Error("Optgroup must have a label");if("options"in n&&n.options)for(let r of n.options)return this.validateOption(r)}else return n instanceof He||"text"in n?this.validateOption(n):new Error("Data object must be a valid optgroup or option");return null}validateOption(t){return"text"in t?null:new Error("Option must have a text")}partialToFullData(t){let n=[];return t.forEach(r=>{if(r instanceof Lt||"label"in r){let s=[];"options"in r&&r.options&&r.options.forEach(l=>{s.push(new He(l))}),s.length>0&&n.push(new Lt(r))}(r instanceof He||"text"in r)&&n.push(new He(r))}),n}setData(t){this.data=this.partialToFullData(t),this.selectType==="single"&&this.setSelectedBy("id",this.getSelected())}getData(){return this.filter(null,!0)}getDataOptions(){return this.filter(null,!1)}addOption(t){this.setData(this.getData().concat(new He(t)))}setSelectedBy(t,n){let r=null,s=!1;for(let l of this.data){if(l instanceof Lt)for(let i of l.options)r||(r=i),i.selected=s?!1:n.includes(i[t]),i.selected&&this.selectType==="single"&&(s=!0);l instanceof He&&(r||(r=l),l.selected=s?!1:n.includes(l[t]),l.selected&&this.selectType==="single"&&(s=!0))}this.selectType==="single"&&r&&!s&&(r.selected=!0)}getSelected(){return this.getSelectedOptions().map(t=>t.id)}getSelectedOptions(){return this.filter(t=>t.selected,!1)}getOptgroupByID(t){for(let n of this.data)if(n instanceof Lt&&n.id===t)return n;return null}getOptionByID(t){let n=this.filter(r=>r.id===t,!1);return n.length?n[0]:null}getSelectType(){return this.selectType}getFirstOption(){let t=null;for(let n of this.data)if(n instanceof Lt?t=n.options[0]:n instanceof He&&(t=n),t)break;return t}search(t,n){return t=t.trim(),t===""?this.getData():this.filter(r=>n(r,t),!0)}filter(t,n){const r=[];return this.data.forEach(s=>{if(s instanceof Lt){let l=[];if(s.options.forEach(i=>{(!t||t(i))&&(n?l.push(new He(i)):r.push(new He(i)))}),l.length>0){let i=new Lt(s);i.options=l,r.push(i)}}s instanceof He&&(!t||t(s))&&r.push(new He(s))}),r}}class Py{constructor(t,n,r){this.classes={main:"ss-main",placeholder:"ss-placeholder",values:"ss-values",single:"ss-single",max:"ss-max",value:"ss-value",valueText:"ss-value-text",valueDelete:"ss-value-delete",valueOut:"ss-value-out",deselect:"ss-deselect",deselectPath:"M10,10 L90,90 M10,90 L90,10",arrow:"ss-arrow",arrowClose:"M10,30 L50,70 L90,30",arrowOpen:"M10,70 L50,30 L90,70",content:"ss-content",openAbove:"ss-open-above",openBelow:"ss-open-below",search:"ss-search",searchHighlighter:"ss-search-highlight",searching:"ss-searching",addable:"ss-addable",addablePath:"M50,10 L50,90 M10,50 L90,50",list:"ss-list",optgroup:"ss-optgroup",optgroupLabel:"ss-optgroup-label",optgroupLabelText:"ss-optgroup-label-text",optgroupActions:"ss-optgroup-actions",optgroupSelectAll:"ss-selectall",optgroupSelectAllBox:"M60,10 L10,10 L10,90 L90,90 L90,50",optgroupSelectAllCheck:"M30,45 L50,70 L90,10",optgroupClosable:"ss-closable",option:"ss-option",optionDelete:"M10,10 L90,90 M10,90 L90,10",highlighted:"ss-highlighted",open:"ss-open",close:"ss-close",selected:"ss-selected",error:"ss-error",disabled:"ss-disabled",hide:"ss-hide"},this.store=n,this.settings=t,this.callbacks=r,this.main=this.mainDiv(),this.content=this.contentDiv(),this.updateClassStyles(),this.updateAriaAttributes(),this.settings.contentLocation.appendChild(this.content.main)}enable(){this.main.main.classList.remove(this.classes.disabled),this.content.search.input.disabled=!1}disable(){this.main.main.classList.add(this.classes.disabled),this.content.search.input.disabled=!0}open(){this.main.arrow.path.setAttribute("d",this.classes.arrowOpen),this.main.main.classList.add(this.settings.openPosition==="up"?this.classes.openAbove:this.classes.openBelow),this.main.main.setAttribute("aria-expanded","true"),this.moveContent();const t=this.store.getSelectedOptions();if(t.length){const n=t[t.length-1].id,r=this.content.list.querySelector('[data-id="'+n+'"]');r&&this.ensureElementInView(this.content.list,r)}}close(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.remove(this.classes.openBelow),this.main.main.setAttribute("aria-expanded","false"),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.main.arrow.path.setAttribute("d",this.classes.arrowClose)}updateClassStyles(){if(this.main.main.className="",this.main.main.removeAttribute("style"),this.content.main.className="",this.content.main.removeAttribute("style"),this.main.main.classList.add(this.classes.main),this.content.main.classList.add(this.classes.content),this.settings.style!==""&&(this.main.main.style.cssText=this.settings.style,this.content.main.style.cssText=this.settings.style),this.settings.class.length)for(const t of this.settings.class)t.trim()!==""&&(this.main.main.classList.add(t.trim()),this.content.main.classList.add(t.trim()));this.settings.contentPosition==="relative"&&this.content.main.classList.add("ss-"+this.settings.contentPosition)}updateAriaAttributes(){this.main.main.role="combobox",this.main.main.setAttribute("aria-haspopup","listbox"),this.main.main.setAttribute("aria-controls",this.content.main.id),this.main.main.setAttribute("aria-expanded","false"),this.content.main.setAttribute("role","listbox")}mainDiv(){var u;const t=document.createElement("div");t.dataset.id=this.settings.id,t.setAttribute("aria-label",this.settings.ariaLabel),t.tabIndex=0,t.onkeydown=c=>{switch(c.key){case"ArrowUp":case"ArrowDown":return this.callbacks.open(),c.key==="ArrowDown"?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Enter":case" ":this.callbacks.open();const d=this.content.list.querySelector("."+this.classes.highlighted);return d&&d.click(),!1;case"Escape":return this.callbacks.close(),!1}return!1},t.onclick=c=>{this.settings.disabled||(this.settings.isOpen?this.callbacks.close():this.callbacks.open())};const n=document.createElement("div");n.classList.add(this.classes.values),t.appendChild(n);const r=document.createElement("div");r.classList.add(this.classes.deselect);const s=(u=this.store)==null?void 0:u.getSelectedOptions();!this.settings.allowDeselect||this.settings.isMultiple&&s&&s.length<=0?r.classList.add(this.classes.hide):r.classList.remove(this.classes.hide),r.onclick=c=>{if(c.stopPropagation(),this.settings.disabled)return;let d=!0;const p=this.store.getSelectedOptions(),w=[];if(this.callbacks.beforeChange&&(d=this.callbacks.beforeChange(w,p)===!0),d){if(this.settings.isMultiple)this.callbacks.setSelected([],!1),this.updateDeselectAll();else{const x=this.store.getFirstOption(),_=x?x.id:"";this.callbacks.setSelected(_,!1)}this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(this.store.getSelectedOptions())}};const l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("viewBox","0 0 100 100");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d",this.classes.deselectPath),l.appendChild(i),r.appendChild(l),t.appendChild(r);const o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.classList.add(this.classes.arrow),o.setAttribute("viewBox","0 0 100 100");const a=document.createElementNS("http://www.w3.org/2000/svg","path");return a.setAttribute("d",this.classes.arrowClose),this.settings.alwaysOpen&&o.classList.add(this.classes.hide),o.appendChild(a),t.appendChild(o),{main:t,values:n,deselect:{main:r,svg:l,path:i},arrow:{main:o,path:a}}}mainFocus(t){t!=="click"&&this.main.main.focus({preventScroll:!0})}placeholder(){const t=this.store.filter(s=>s.placeholder,!1);let n=this.settings.placeholderText;t.length&&(t[0].html!==""?n=t[0].html:t[0].text!==""&&(n=t[0].text));const r=document.createElement("div");return r.classList.add(this.classes.placeholder),r.innerHTML=n,r}renderValues(){if(!this.settings.isMultiple){this.renderSingleValue();return}this.renderMultipleValues(),this.updateDeselectAll()}renderSingleValue(){const t=this.store.filter(r=>r.selected&&!r.placeholder,!1),n=t.length>0?t[0]:null;if(!n)this.main.values.innerHTML=this.placeholder().outerHTML;else{const r=document.createElement("div");r.classList.add(this.classes.single),n.html?r.innerHTML=n.html:r.innerText=n.text,this.main.values.innerHTML=r.outerHTML}!this.settings.allowDeselect||!t.length?this.main.deselect.main.classList.add(this.classes.hide):this.main.deselect.main.classList.remove(this.classes.hide)}renderMultipleValues(){let t=this.main.values.childNodes,n=this.store.filter(s=>s.selected&&s.display,!1);if(n.length===0){this.main.values.innerHTML=this.placeholder().outerHTML;return}else{const s=this.main.values.querySelector("."+this.classes.placeholder);s&&s.remove()}if(n.length>this.settings.maxValuesShown){const s=document.createElement("div");s.classList.add(this.classes.max),s.textContent=this.settings.maxValuesMessage.replace("{number}",n.length.toString()),this.main.values.innerHTML=s.outerHTML;return}else{const s=this.main.values.querySelector("."+this.classes.max);s&&s.remove()}let r=[];for(let s=0;sa.id===i,!1).length||r.push(l))}for(const s of r)s.classList.add(this.classes.valueOut),setTimeout(()=>{this.main.values.hasChildNodes()&&this.main.values.contains(s)&&this.main.values.removeChild(s)},100);t=this.main.values.childNodes;for(let s=0;s{if(o.preventDefault(),o.stopPropagation(),this.settings.disabled)return;let a=!0;const u=this.store.getSelectedOptions(),c=u.filter(d=>d.selected&&d.id!==t.id,!0);if(!(this.settings.minSelected&&c.length{this.callbacks.search(l.target.value)},100),n.onkeydown=l=>{switch(l.key){case"ArrowUp":case"ArrowDown":return l.key==="ArrowDown"?this.highlight("down"):this.highlight("up"),!1;case"Tab":return this.callbacks.close(),!0;case"Escape":return this.callbacks.close(),!1;case"Enter":case" ":if(this.callbacks.addable&&l.ctrlKey)return r.click(),!1;{const i=this.content.list.querySelector("."+this.classes.highlighted);if(i)return i.click(),!1}return!0}return!0},t.appendChild(n),this.callbacks.addable){r.classList.add(this.classes.addable);const l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("viewBox","0 0 100 100");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttribute("d",this.classes.addablePath),l.appendChild(i),r.appendChild(l),r.onclick=o=>{if(o.preventDefault(),o.stopPropagation(),!this.callbacks.addable)return;const a=this.content.search.input.value.trim();if(a===""){this.content.search.input.focus();return}const u=d=>{let p=new He(d);if(this.callbacks.addOption(p),this.settings.isMultiple){let w=this.store.getSelected();w.push(p.id),this.callbacks.setSelected(w,!0)}else this.callbacks.setSelected([p.id],!0);this.callbacks.search(""),this.settings.closeOnSelect&&setTimeout(()=>{this.callbacks.close()},100)},c=this.callbacks.addable(a);c===!1||c===void 0||c===null||(c instanceof Promise?c.then(d=>{u(typeof d=="string"?{text:d,value:d}:d)}):u(typeof c=="string"?{text:c,value:c}:c))},t.appendChild(r),s.addable={main:r,svg:l,path:i}}return s}searchFocus(){this.content.search.input.focus()}getOptions(t=!1,n=!1,r=!1){let s="."+this.classes.option;return t&&(s+=":not(."+this.classes.placeholder+")"),n&&(s+=":not(."+this.classes.disabled+")"),r&&(s+=":not(."+this.classes.hide+")"),Array.from(this.content.list.querySelectorAll(s))}highlight(t){const n=this.getOptions(!0,!0,!0);if(n.length===0)return;if(n.length===1&&!n[0].classList.contains(this.classes.highlighted)){n[0].classList.add(this.classes.highlighted);return}let r=!1;for(const s of n)s.classList.contains(this.classes.highlighted)&&(r=!0);if(!r){for(const s of n)if(s.classList.contains(this.classes.selected)){s.classList.add(this.classes.highlighted);break}}for(let s=0;s=0?s-1:n.length-1];o.classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,o);const a=o.parentElement;if(a&&a.classList.contains(this.classes.close)){const u=a.querySelector("."+this.classes.optgroupLabel);u&&u.click()}return}n[t==="down"?0:n.length-1].classList.add(this.classes.highlighted),this.ensureElementInView(this.content.list,n[t==="down"?0:n.length-1])}listDiv(){const t=document.createElement("div");return t.classList.add(this.classes.list),t}renderError(t){this.content.list.innerHTML="";const n=document.createElement("div");n.classList.add(this.classes.error),n.textContent=t,this.content.list.appendChild(n)}renderSearching(){this.content.list.innerHTML="";const t=document.createElement("div");t.classList.add(this.classes.searching),t.textContent=this.settings.searchingText,this.content.list.appendChild(t)}renderOptions(t){if(this.content.list.innerHTML="",t.length===0){const n=document.createElement("div");n.classList.add(this.classes.search),n.innerHTML=this.settings.searchText,this.content.list.appendChild(n);return}for(const n of t){if(n instanceof Lt){const r=document.createElement("div");r.classList.add(this.classes.optgroup);const s=document.createElement("div");s.classList.add(this.classes.optgroupLabel),r.appendChild(s);const l=document.createElement("div");l.classList.add(this.classes.optgroupLabelText),l.textContent=n.label,s.appendChild(l);const i=document.createElement("div");if(i.classList.add(this.classes.optgroupActions),s.appendChild(i),this.settings.isMultiple&&n.selectAll){const o=document.createElement("div");o.classList.add(this.classes.optgroupSelectAll);let a=!0;for(const w of n.options)if(!w.selected){a=!1;break}a&&o.classList.add(this.classes.selected);const u=document.createElement("span");u.textContent=n.selectAllText,o.appendChild(u);const c=document.createElementNS("http://www.w3.org/2000/svg","svg");c.setAttribute("viewBox","0 0 100 100"),o.appendChild(c);const d=document.createElementNS("http://www.w3.org/2000/svg","path");d.setAttribute("d",this.classes.optgroupSelectAllBox),c.appendChild(d);const p=document.createElementNS("http://www.w3.org/2000/svg","path");p.setAttribute("d",this.classes.optgroupSelectAllCheck),c.appendChild(p),o.addEventListener("click",w=>{w.preventDefault(),w.stopPropagation();const x=this.store.getSelected();if(a){const _=x.filter(L=>{for(const m of n.options)if(L===m.id)return!1;return!0});this.callbacks.setSelected(_,!0);return}else{const _=x.concat(n.options.map(L=>L.id));for(const L of n.options)this.store.getOptionByID(L.id)||this.callbacks.addOption(L);this.callbacks.setSelected(_,!0);return}}),i.appendChild(o)}if(n.closable!=="off"){const o=document.createElement("div");o.classList.add(this.classes.optgroupClosable);const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("viewBox","0 0 100 100"),a.classList.add(this.classes.arrow),o.appendChild(a);const u=document.createElementNS("http://www.w3.org/2000/svg","path");a.appendChild(u),n.options.some(c=>c.selected)||this.content.search.input.value.trim()!==""?(o.classList.add(this.classes.open),u.setAttribute("d",this.classes.arrowOpen)):n.closable==="open"?(r.classList.add(this.classes.open),u.setAttribute("d",this.classes.arrowOpen)):n.closable==="close"&&(r.classList.add(this.classes.close),u.setAttribute("d",this.classes.arrowClose)),s.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation(),r.classList.contains(this.classes.close)?(r.classList.remove(this.classes.close),r.classList.add(this.classes.open),u.setAttribute("d",this.classes.arrowOpen)):(r.classList.remove(this.classes.open),r.classList.add(this.classes.close),u.setAttribute("d",this.classes.arrowClose))}),i.appendChild(o)}r.appendChild(s);for(const o of n.options)r.appendChild(this.option(o));this.content.list.appendChild(r)}n instanceof He&&this.content.list.appendChild(this.option(n))}}option(t){if(t.placeholder){const r=document.createElement("div");return r.classList.add(this.classes.option),r.classList.add(this.classes.hide),r}const n=document.createElement("div");return n.dataset.id=t.id,n.id=t.id,n.classList.add(this.classes.option),n.setAttribute("role","option"),t.class&&t.class.split(" ").forEach(r=>{n.classList.add(r)}),t.style&&(n.style.cssText=t.style),this.settings.searchHighlight&&this.content.search.input.value.trim()!==""?n.innerHTML=this.highlightText(t.html!==""?t.html:t.text,this.content.search.input.value,this.classes.searchHighlighter):t.html!==""?n.innerHTML=t.html:n.textContent=t.text,this.settings.showOptionTooltips&&n.textContent&&n.setAttribute("title",n.textContent),t.display||n.classList.add(this.classes.hide),t.disabled&&n.classList.add(this.classes.disabled),t.selected&&this.settings.hideSelected&&n.classList.add(this.classes.hide),t.selected?(n.classList.add(this.classes.selected),n.setAttribute("aria-selected","true"),this.main.main.setAttribute("aria-activedescendant",n.id)):(n.classList.remove(this.classes.selected),n.setAttribute("aria-selected","false")),n.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation();const s=this.store.getSelected(),l=r.currentTarget,i=String(l.dataset.id);if(t.disabled||t.selected&&!this.settings.allowDeselect||this.settings.isMultiple&&this.settings.maxSelected<=s.length&&!t.selected||this.settings.isMultiple&&this.settings.minSelected>=s.length&&t.selected)return;let o=!1;const a=this.store.getSelectedOptions();let u=[];this.settings.isMultiple&&(t.selected?u=a.filter(c=>c.id!==i):u=a.concat(t)),this.settings.isMultiple||(t.selected?u=[]:u=[t]),this.callbacks.beforeChange||(o=!0),this.callbacks.beforeChange&&(this.callbacks.beforeChange(u,a)===!1?o=!1:o=!0),o&&(this.store.getOptionByID(i)||this.callbacks.addOption(t),this.callbacks.setSelected(u.map(c=>c.id),!1),this.settings.closeOnSelect&&this.callbacks.close(),this.callbacks.afterChange&&this.callbacks.afterChange(u))}),n}destroy(){this.main.main.remove(),this.content.main.remove()}highlightText(t,n,r){let s=t;const l=new RegExp("("+n.trim()+")(?![^<]*>[^<>]*${a}`),s}moveContentAbove(){const t=this.main.main.offsetHeight,n=this.content.main.offsetHeight;this.main.main.classList.remove(this.classes.openBelow),this.main.main.classList.add(this.classes.openAbove),this.content.main.classList.remove(this.classes.openBelow),this.content.main.classList.add(this.classes.openAbove);const r=this.main.main.getBoundingClientRect();this.content.main.style.margin="-"+(t+n-1)+"px 0px 0px 0px",this.content.main.style.top=r.top+r.height+window.scrollY+"px",this.content.main.style.left=r.left+window.scrollX+"px",this.content.main.style.width=r.width+"px"}moveContentBelow(){this.main.main.classList.remove(this.classes.openAbove),this.main.main.classList.add(this.classes.openBelow),this.content.main.classList.remove(this.classes.openAbove),this.content.main.classList.add(this.classes.openBelow);const t=this.main.main.getBoundingClientRect();this.content.main.style.margin="-1px 0px 0px 0px",this.settings.contentPosition!=="relative"&&(this.content.main.style.top=t.top+t.height+window.scrollY+"px",this.content.main.style.left=t.left+window.scrollX+"px",this.content.main.style.width=t.width+"px")}ensureElementInView(t,n){const r=t.scrollTop+t.offsetTop,s=r+t.clientHeight,l=n.offsetTop,i=l+n.clientHeight;ls&&(t.scrollTop+=i-s)}putContent(){const t=this.main.main.offsetHeight,n=this.main.main.getBoundingClientRect(),r=this.content.main.offsetHeight;return window.innerHeight-(n.top+t)<=r&&n.top>r?"up":"down"}updateDeselectAll(){if(!this.store||!this.settings)return;const t=this.store.getSelectedOptions(),n=t&&t.length>0,r=this.settings.isMultiple,s=this.settings.allowDeselect,l=this.main.deselect.main,i=this.classes.hide;s&&!(r&&!n)?l.classList.remove(i):l.classList.add(i)}}class Ly{constructor(t){this.listen=!1,this.observer=null,this.select=t,this.valueChange=this.valueChange.bind(this),this.select.addEventListener("change",this.valueChange,{passive:!0}),this.observer=new MutationObserver(this.observeCall.bind(this)),this.changeListen(!0)}enable(){this.select.disabled=!1}disable(){this.select.disabled=!0}hideUI(){this.select.tabIndex=-1,this.select.style.display="none",this.select.setAttribute("aria-hidden","true")}showUI(){this.select.removeAttribute("tabindex"),this.select.style.display="",this.select.removeAttribute("aria-hidden")}changeListen(t){this.listen=t,t&&this.observer&&this.observer.observe(this.select,{subtree:!0,childList:!0,attributes:!0}),t||this.observer&&this.observer.disconnect()}valueChange(t){return this.listen&&this.onValueChange&&this.onValueChange(this.getSelectedOptions()),!0}observeCall(t){if(!this.listen)return;let n=!1,r=!1,s=!1;for(const l of t)l.target===this.select&&(l.attributeName==="disabled"&&(r=!0),l.attributeName==="class"&&(n=!0)),(l.target.nodeName==="OPTGROUP"||l.target.nodeName==="OPTION")&&(s=!0);n&&this.onClassChange&&this.onClassChange(this.select.className.split(" ")),r&&this.onDisabledChange&&(this.changeListen(!1),this.onDisabledChange(this.select.disabled),this.changeListen(!0)),s&&this.onOptionsChange&&(this.changeListen(!1),this.onOptionsChange(this.getData()),this.changeListen(!0))}getData(){let t=[];const n=this.select.childNodes;for(const r of n)r.nodeName==="OPTGROUP"&&t.push(this.getDataFromOptgroup(r)),r.nodeName==="OPTION"&&t.push(this.getDataFromOption(r));return t}getDataFromOptgroup(t){let n={id:t.id,label:t.label,selectAll:t.dataset?t.dataset.selectall==="true":!1,selectAllText:t.dataset?t.dataset.selectalltext:"Select all",closable:t.dataset?t.dataset.closable:"off",options:[]};const r=t.childNodes;for(const s of r)s.nodeName==="OPTION"&&n.options.push(this.getDataFromOption(s));return n}getDataFromOption(t){return{id:t.id,value:t.value,text:t.text,html:t.dataset&&t.dataset.html?t.dataset.html:"",selected:t.selected,display:t.style.display!=="none",disabled:t.disabled,mandatory:t.dataset?t.dataset.mandatory==="true":!1,placeholder:t.dataset.placeholder==="true",class:t.className,style:t.style.cssText,data:t.dataset}}getSelectedOptions(){let t=[];const n=this.select.childNodes;for(const r of n){if(r.nodeName==="OPTGROUP"){const s=r.childNodes;for(const l of s)if(l.nodeName==="OPTION"){const i=l;i.selected&&t.push(this.getDataFromOption(i))}}if(r.nodeName==="OPTION"){const s=r;s.selected&&t.push(this.getDataFromOption(s))}}return t}getSelectedValues(){return this.getSelectedOptions().map(t=>t.value)}setSelected(t){this.changeListen(!1);const n=this.select.childNodes;for(const r of n){if(r.nodeName==="OPTGROUP"){const l=r.childNodes;for(const i of l)if(i.nodeName==="OPTION"){const o=i;o.selected=t.includes(o.id)}}if(r.nodeName==="OPTION"){const s=r;s.selected=t.includes(s.id)}}this.changeListen(!0)}updateSelect(t,n,r){this.changeListen(!1),t&&(this.select.dataset.id=t),n&&(this.select.style.cssText=n),r&&(this.select.className="",r.forEach(s=>{s.trim()!==""&&this.select.classList.add(s.trim())})),this.changeListen(!0)}updateOptions(t){this.changeListen(!1),this.select.innerHTML="";for(const n of t)n instanceof Lt&&this.select.appendChild(this.createOptgroup(n)),n instanceof He&&this.select.appendChild(this.createOption(n));this.select.dispatchEvent(new Event("change")),this.changeListen(!0)}createOptgroup(t){const n=document.createElement("optgroup");if(n.id=t.id,n.label=t.label,t.selectAll&&(n.dataset.selectAll="true"),t.closable!=="off"&&(n.dataset.closable=t.closable),t.options)for(const r of t.options)n.appendChild(this.createOption(r));return n}createOption(t){const n=document.createElement("option");return n.id=t.id,n.value=t.value,n.innerHTML=t.text,t.html!==""&&n.setAttribute("data-html",t.html),t.selected&&(n.selected=t.selected),t.disabled&&(n.disabled=!0),t.display===!1&&(n.style.display="none"),t.placeholder&&n.setAttribute("data-placeholder","true"),t.mandatory&&n.setAttribute("data-mandatory","true"),t.class&&t.class.split(" ").forEach(r=>{n.classList.add(r)}),t.data&&typeof t.data=="object"&&Object.keys(t.data).forEach(r=>{n.setAttribute("data-"+Ay(r),t.data[r])}),n}destroy(){this.changeListen(!1),this.select.removeEventListener("change",this.valueChange),this.observer&&(this.observer.disconnect(),this.observer=null),delete this.select.dataset.id,this.showUI()}}class Ty{constructor(t){this.id="",this.style="",this.class=[],this.isMultiple=!1,this.isOpen=!1,this.isFullOpen=!1,this.intervalMove=null,t||(t={}),this.id="ss-"+wu(),this.style=t.style||"",this.class=t.class||[],this.disabled=t.disabled!==void 0?t.disabled:!1,this.alwaysOpen=t.alwaysOpen!==void 0?t.alwaysOpen:!1,this.showSearch=t.showSearch!==void 0?t.showSearch:!0,this.ariaLabel=t.ariaLabel||"Combobox",this.searchPlaceholder=t.searchPlaceholder||"Search",this.searchText=t.searchText||"No Results",this.searchingText=t.searchingText||"Searching...",this.searchHighlight=t.searchHighlight!==void 0?t.searchHighlight:!1,this.closeOnSelect=t.closeOnSelect!==void 0?t.closeOnSelect:!0,this.contentLocation=t.contentLocation||document.body,this.contentPosition=t.contentPosition||"absolute",this.openPosition=t.openPosition||"auto",this.placeholderText=t.placeholderText!==void 0?t.placeholderText:"Select Value",this.allowDeselect=t.allowDeselect!==void 0?t.allowDeselect:!1,this.hideSelected=t.hideSelected!==void 0?t.hideSelected:!1,this.keepOrder=t.keepOrder!==void 0?t.keepOrder:!1,this.showOptionTooltips=t.showOptionTooltips!==void 0?t.showOptionTooltips:!1,this.minSelected=t.minSelected||0,this.maxSelected=t.maxSelected||1e3,this.timeoutDelay=t.timeoutDelay||200,this.maxValuesShown=t.maxValuesShown||20,this.maxValuesMessage=t.maxValuesMessage||"{number} selected"}}let zh=class{constructor(t){var i;if(this.events={search:void 0,searchFilter:(o,a)=>o.text.toLowerCase().indexOf(a.toLowerCase())!==-1,addable:void 0,beforeChange:void 0,afterChange:void 0,beforeOpen:void 0,afterOpen:void 0,beforeClose:void 0,afterClose:void 0},this.windowResize=Cs(()=>{!this.settings.isOpen&&!this.settings.isFullOpen||this.render.moveContent()}),this.windowScroll=Cs(()=>{!this.settings.isOpen&&!this.settings.isFullOpen||this.render.moveContent()}),this.documentClick=o=>{this.settings.isOpen&&o.target&&!ky(o.target,this.settings.id)&&this.close(o.type)},this.windowVisibilityChange=()=>{document.hidden&&this.close()},this.selectEl=typeof t.select=="string"?document.querySelector(t.select):t.select,!this.selectEl){t.events&&t.events.error&&t.events.error(new Error("Could not find select element"));return}if(this.selectEl.tagName!=="SELECT"){t.events&&t.events.error&&t.events.error(new Error("Element isnt of type select"));return}this.selectEl.dataset.ssid&&this.destroy(),this.settings=new Ty(t.settings);const n=["afterChange","beforeOpen","afterOpen","beforeClose","afterClose"];for(const o in t.events)t.events.hasOwnProperty(o)&&(n.indexOf(o)!==-1?this.events[o]=Cs(t.events[o],100):this.events[o]=t.events[o]);this.settings.disabled=(i=t.settings)!=null&&i.disabled?t.settings.disabled:this.selectEl.disabled,this.settings.isMultiple=this.selectEl.multiple,this.settings.style=this.selectEl.style.cssText,this.settings.class=this.selectEl.className.split(" "),this.select=new Ly(this.selectEl),this.select.updateSelect(this.settings.id,this.settings.style,this.settings.class),this.select.hideUI(),this.select.onValueChange=o=>{this.setSelected(o.map(a=>a.id))},this.select.onClassChange=o=>{this.settings.class=o,this.render.updateClassStyles()},this.select.onDisabledChange=o=>{o?this.disable():this.enable()},this.select.onOptionsChange=o=>{this.setData(o)},this.store=new Oy(this.settings.isMultiple?"multiple":"single",t.data?t.data:this.select.getData()),t.data&&this.select.updateOptions(this.store.getData());const r={open:this.open.bind(this),close:this.close.bind(this),addable:this.events.addable?this.events.addable:void 0,setSelected:this.setSelected.bind(this),addOption:this.addOption.bind(this),search:this.search.bind(this),beforeChange:this.events.beforeChange,afterChange:this.events.afterChange};this.render=new Py(this.settings,this.store,r),this.render.renderValues(),this.render.renderOptions(this.store.getData());const s=this.selectEl.getAttribute("aria-label"),l=this.selectEl.getAttribute("aria-labelledby");s?this.render.main.main.setAttribute("aria-label",s):l&&this.render.main.main.setAttribute("aria-labelledby",l),this.selectEl.parentNode&&this.selectEl.parentNode.insertBefore(this.render.main.main,this.selectEl.nextSibling),window.addEventListener("resize",this.windowResize,!1),this.settings.openPosition==="auto"&&window.addEventListener("scroll",this.windowScroll,!1),document.addEventListener("visibilitychange",this.windowVisibilityChange),this.settings.disabled&&this.disable(),this.settings.alwaysOpen&&this.open(),this.selectEl.slim=this}enable(){this.settings.disabled=!1,this.select.enable(),this.render.enable()}disable(){this.settings.disabled=!0,this.select.disable(),this.render.disable()}getData(){return this.store.getData()}setData(t){const n=this.store.getSelected(),r=this.store.validateDataArray(t);if(r){this.events.error&&this.events.error(r);return}this.store.setData(t);const s=this.store.getData();this.select.updateOptions(s),this.render.renderValues(),this.render.renderOptions(s),this.events.afterChange&&!po(n,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}getSelected(){return this.store.getSelectedOptions().map(t=>t.value)}setSelected(t,n=!0){const r=this.store.getSelected(),s=this.store.getDataOptions();t=Array.isArray(t)?t:[t];const l=[];for(const o of t){if(s.find(a=>a.id==o)){l.push(o);continue}for(const a of s.filter(u=>u.value==o))l.push(a.id)}this.store.setSelectedBy("id",l);const i=this.store.getData();this.select.updateOptions(i),this.render.renderValues(),this.render.content.search.input.value!==""?this.search(this.render.content.search.input.value):this.render.renderOptions(i),n&&this.events.afterChange&&!po(r,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}addOption(t){const n=this.store.getSelected();this.store.getDataOptions().some(s=>s.value===(t.value??t.text))||this.store.addOption(t);const r=this.store.getData();this.select.updateOptions(r),this.render.renderValues(),this.render.renderOptions(r),this.events.afterChange&&!po(n,this.store.getSelected())&&this.events.afterChange(this.store.getSelectedOptions())}open(){this.settings.disabled||this.settings.isOpen||(this.events.beforeOpen&&this.events.beforeOpen(),this.render.open(),this.settings.showSearch&&this.render.searchFocus(),this.settings.isOpen=!0,setTimeout(()=>{this.events.afterOpen&&this.events.afterOpen(),this.settings.isOpen&&(this.settings.isFullOpen=!0),document.addEventListener("click",this.documentClick)},this.settings.timeoutDelay),this.settings.contentPosition==="absolute"&&(this.settings.intervalMove&&clearInterval(this.settings.intervalMove),this.settings.intervalMove=setInterval(this.render.moveContent.bind(this.render),500)))}close(t=null){!this.settings.isOpen||this.settings.alwaysOpen||(this.events.beforeClose&&this.events.beforeClose(),this.render.close(),this.render.content.search.input.value!==""&&this.search(""),this.render.mainFocus(t),this.settings.isOpen=!1,this.settings.isFullOpen=!1,setTimeout(()=>{this.events.afterClose&&this.events.afterClose(),document.removeEventListener("click",this.documentClick)},this.settings.timeoutDelay),this.settings.intervalMove&&clearInterval(this.settings.intervalMove))}search(t){if(this.render.content.search.input.value!==t&&(this.render.content.search.input.value=t),!this.events.search){this.render.renderOptions(t===""?this.store.getData():this.store.search(t,this.events.searchFilter));return}this.render.renderSearching();const n=this.events.search(t,this.store.getSelectedOptions());if(n instanceof Promise){n.then(r=>{this.render.renderOptions(this.store.partialToFullData(r))}).catch(r=>{this.render.renderError(typeof r=="string"?r:r.message)});return}else Array.isArray(n)?this.render.renderOptions(this.store.partialToFullData(n)):this.render.renderError("Search event must return a promise or an array of data")}destroy(){document.removeEventListener("click",this.documentClick),window.removeEventListener("resize",this.windowResize,!1),this.settings.openPosition==="auto"&&window.removeEventListener("scroll",this.windowScroll,!1),document.removeEventListener("visibilitychange",this.windowVisibilityChange),this.store.setData([]),this.render.destroy(),this.select.destroy()}};const Ry="CWYDT23U",Ny="slimselectjscom",My=Mi({__name:"carbonad",setup(e){const t=Gd(null);let n=!1;return uh(()=>{if(!n){n=!0;const r=document.createElement("script");r.id="_carbonads_js",r.src=`//cdn.carbonads.com/carbon.js?serve=${Ry}&placement=${Ny}`,r.async=!0,t.value&&t.value.appendChild(r)}}),(r,s)=>(Di(),Eh("div",{class:"carbon-container",ref_key:"container",ref:t},null,512))}}),Fy=Mi({name:"App",components:{CarbonAd:My},data(){return{nav:null,navDebounce:Cs(()=>{this.setDemensions()},100),year:new Date().getFullYear(),width:0,height:0,navData:[{text:"Home",value:"/",class:"label"},{label:"Install",closable:"close",options:[{text:"npm",value:"install#npm"},{text:"cdn",value:"install#cdn"},{text:"download",value:"install#download"}]},{label:"Selects",closable:"close",options:[{text:"single",value:"selects#single"},{text:"multiple",value:"selects#multiple"}]},{label:"Data",closable:"close",options:[{text:"types",value:"data#types"},{text:"field",value:"data#field"}]},{label:"Settings",closable:"close",options:[{text:"select",value:"settings#select"},{text:"alwaysOpen",value:"settings#alwaysOpen"},{text:"contentLocation",value:"settings#contentLocation"},{text:"contentPosition",value:"settings#contentPosition"},{text:"openPosition",value:"settings#openPosition"},{text:"placeholder",value:"settings#placeholder"},{text:"selectAll",value:"settings#selectAll"},{text:"allowDeselect",value:"settings#allowDeselect"},{text:"display",value:"settings#display"},{text:"disabled",value:"settings#disabled"},{text:"mandatory",value:"settings#mandatory"},{text:"minmax",value:"settings#minmax"},{text:"dataAttributes",value:"settings#dataAttributes"},{text:"cssClass",value:"settings#cssClass"},{text:"inlineStyles",value:"settings#inlineStyles"},{text:"html",value:"settings#html"},{text:"keepOrder",value:"settings#keepOrder"},{text:"search",value:"settings#search"},{text:"closeOnSelect",value:"settings#closeOnSelect"},{text:"showOptionTooltips",value:"settings#showOptionTooltips"},{text:"closable",value:"settings#closable"},{text:"hideSelected",value:"settings#hideSelected"},{text:"maxValuesShown",value:"settings#maxValuesShown"}]},{label:"Events",closable:"close",options:[{text:"error",value:"events#error"},{text:"beforeChange",value:"events#beforeChange"},{text:"afterChange",value:"events#afterChange"},{text:"open",value:"events#open"},{text:"search",value:"events#search"},{text:"searchFilter",value:"events#searchFilter"},{text:"addable",value:"events#addable"}]},{label:"Methods",closable:"close",options:[{text:"getSelected",value:"methods#getSelected"},{text:"setSelected",value:"methods#setSelected"},{text:"getData",value:"methods#getData"},{text:"setData",value:"methods#setData"},{text:"enableDisable",value:"methods#enableDisable"},{text:"openClose",value:"methods#openClose"},{text:"search",value:"methods#search"},{text:"destroy",value:"methods#destroy"}]},{label:"Frameworks",closable:"close",options:[{text:"vue",value:"vue"},{text:"react",value:"react"}]}]}},mounted(){this.runNav(),this.$router.isReady().then(()=>{this.nav&&this.nav.setSelected(this.$router.currentRoute.value.fullPath.replace("/",""))}),this.$router.afterEach(()=>{if(this.$route.query.p){setTimeout(()=>{this.$route.query.p&&this.$router.push({path:this.$route.query.p.toString(),hash:this.$route.hash})},200);return}setTimeout(()=>{const e=this.$route.hash;if(e===""&&window.scroll({top:0,behavior:"smooth"}),e){const t=document.querySelector(e);if(t){const n=document.querySelector("header"),r=document.querySelector("nav"),s=n?n.clientHeight+(window.innerWidth<700?r.clientHeight:0)+8:0;window.scroll({top:t.offsetTop-s,behavior:"smooth"})}}},200)}),this.setDemensions(),window.addEventListener("resize",this.navDebounce)},unmounted(){var e;window.removeEventListener("resize",this.navDebounce),(e=this.nav)==null||e.destroy()},watch:{width(){this.runNav()}},methods:{setDemensions(){this.width=document.documentElement.clientWidth,this.height=document.documentElement.clientHeight},runNav(){this.nav&&(this.nav.destroy(),this.nav=null);let e={searchHighlight:!0,openContent:"below"};this.width>700&&(e.alwaysOpen=!0,e.contentPosition="relative",e.contentLocation=this.$refs.navContent),this.nav=new zh({select:this.$refs.nav,data:this.navData,settings:e,events:{afterChange:t=>{const r=t[0].value.split("#"),s=r[0],l=r[1]?"#"+r[1]:void 0;this.$router.push({path:s,hash:l})}}})}}}),Iy="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNTE3OEEyRTk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNTE3OEEyRjk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTJDOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTJEOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FYrpWAAABrNJREFUeNrkW2lsVFUUvjMWirYUkS5BXApUa2vd6gL+wAWjoP5RiW2EUBajAiqSuPADQ0w1UUQTrcFAUUSJEKriEuMWFKuJIElFSS24YNpQK6WoBbuAktbva880M8O8vnfevJm+CSf5cme599xzvnfffffce17AJFjycnLzUVwDXAgUAucBY4BMIEOqdQIdwJ/Az4J64OvWtoONibQvkACHgyiuBe4CbgLOjVNlE/AZsAmoBSE9viQAjueieBCYC5yVoAvWDKwHqkBEmy8IgON09lHgXmCESY4cBaqBlSCieUgIgOPDUCwBngBOM0MjXdL/CyDiv6QRAOcvR7EBKDL+kD3AbJBQl1AC4DjrLwaeBYYbf8m/ciu+BCJ6PScAzp+K4nXgTuNveQuYAxK6PSMAzo9C8TFwtUkN2Q7cDBIOx02AOP8FUGpSSzgf3GBHQsDGec7unwOTTWrKDiGhS02ATHjvALeb1JZ3gRlWE+MpVq0yMzIekRk/1YWP6o7Ors5vHI8AXH1Odl8BaTbKrwd4j10MTAduS8JqkKvA94BPgN0A56htNm2OMyDDKNhuSwCcT5dIrMBG6S4oLI1qezqKBcBjwGiPHW8HVgCr0W97VL/fobjMpv2vQAnaHgv/MdYVXurAeSNPhggRw56BQatRVgL3A0H5+xDwI8Dw9g/5Hlq+clmdDYwF8iV0zpb/GP2tApZHOx4m2xwQUCC+VVqOABg+AUUDkO6AgHkwaL2DJXORxPVNylUnw+gpXObaLXFRlxHoaw7U8uoXQ99vViNgqUPnKQfsKojhdW7GuxDW5JUtIuni432hH4JhLJ7Dq6qwcZiPZnpNXDJPfI0kQEJbjVM5PiIgW3nhlkQQILH9LGWnV/iIAK0ts8TngREwDchVKrnKRwRobckVnwcIKFcq4ONrkY8IWBT2SHUq5eEE3Khs/CRm6Z1+8V5sqVQ26/M5gHuhSJ79TqUFmIhOj/ppwQ8/Rshqb5yiWXFQFhsaWeU352UU0KaXlc2mBI1+Y3OzjyO/Gm2kSAIKFQ2awfQ+v3oP23gL/K5oUhh0GPiEZG8KxP97FHULgsqwtTUFCDioqHsGCRipaHA8BQjQrAcyg4roj5KVAgSMUtRNDyqVj0wBAlQ2koBuRf3xKUBAvqJuN1eCrYpAiHNAltNjpyFYDfL47oix38wdmDA5AvYr+kjzWRgcLVcqnKfsJwGNyk5u9TEBtyjrNwaVgRClTPKA/Db8aVOZslkDG2nD2vEuOkqGlLmYpHcGJLlJu8LjtvJFgx06Jvnq8xC33gUBeUE4waWjduua5wdVPrr6VS6cr6PvoXv5Ixed3g3mH/fB1V9OW1w07fM5IEouUEZR4bIWWJzsTRJ55r8I3ONSRRFs3hsIU8hkgkkulf0CPAx8qElQcuk4beYp9Epgoks138LOvqSPgfyAzIwMZlnFSobgIegc4H3gH6AkxmKDub9Mjb0DeoYDrZ1dne0eO14AvfPx8RXgAYaycahbBvt+GLgFpIM0md3PjqrMTMxpYKxB6p1v+s/n7bbSuMCqldmZyc+fRh9ND+IsAxrmG3C3qtj0J1uP84hLrnwnwJbjEQRIxzw0XB2jER93C9Bog9TjsRgzLpzuJr0BzHV6e8gwf9XoziqdCv1YE/oSTQBHwfem/3w+5syPxuukLtfdO0zk+WIs+YuPKLQ7ohzyWTIix3joPPMTLg1d/Yg5gIL7ogf32U/4WGGhYDr+34J6bUALPpPA62w6XYMOP9BaCv3HoD/PeJubODN6U/eEq4cKTIurttpBAZ4L+87TmKdtOt0ah8FbPXS+WnyLEKskqUy5FaweM5dA2e6w+pNkZuajhfMD3/zYBfDKb3Y6+cWwgytOL7bh98nQ73BEgHReIvd4Roy/a6Cs3CRYJOnq7zjV8HWcybC33mpLLKZIA84FPRYhcSokUNL2Civnjd0MjoZbUCy0+PtNkDDD5wQsFB8sxWm2+GJZd8eSt4HnZXnZ66Nb4CHYYxuxat4XmI1inbHeczskq77DMrK4z8AgK3+Q/L5EEMBn/PzQos0zAsQgvg5XY3TpNKOTSAD3NsrQX63TBqq9PVHM9NgvfXi/06ZSjfNqAoQEHj9Pled+pw8cpw2co6aKbSoJxDlJnYniKdP/sqSVrrEw7IBL/TnG+rSXEy7fYVoG/S1uffDkzVEYypB1qewJRCdb5rp9yxN6mQDZFmOS2wisCIXo8Yin7w7LiKiQEcFYfhOMnBmnzo1CLIO09Qyt47niJxDQ29trTmY56Qn4X4ABAFR7IoDmVT5NAAAAAElFTkSuQmCC",Dy="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAQMAAAD58POIAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZQTFRFyzg3////IltC9QAAAAFiS0dEAf8CLd4AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAkSURBVEjHY2AYBYMV/IeDUQG4AJgeFRgVGBUYFSBNYBQMPgAARjtdvxo6xaMAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTEtMDUtMzBUMjM6MTA6NDQtMDc6MDCm4GvfAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEwLTEyLTA2VDEyOjIwOjEyLTA4OjAwpIGEmQAAADJ0RVh0UE5HOmNIUk0AY2h1bmsgd2FzIGZvdW5kIChzZWUgQ2hyb21hdGljaXR5LCBhYm92ZSkH0UjaAAAAKXRFWHRQTkc6Z0FNQQBnYW1tYT0wLjQ1NDU1IChTZWUgR2FtbWEsIGFib3ZlKRISLKcAAAAUdEVYdFBORzpJSERSLmJpdF9kZXB0aAA4KYV+UAAAABV0RVh0UE5HOklIRFIuY29sb3JfdHlwZQA2BkqnKwAAABt0RVh0UE5HOklIRFIuaW50ZXJsYWNlX21ldGhvZAAw+zsHjAAAABx0RVh0UE5HOklIRFIud2lkdGgsaGVpZ2h0ADE2LCAxNjjVBg0AAAAodEVYdFBORzpwSFlzAHhfcmVzPTI4MzUsIHlfcmVzPTI4MzUsIHVuaXRzPTGCKXI+AAAAKHRFWHRQTkc6c1JHQgBpbnRlbnQ9MCAoU2VlIFJlbmRlcmluZyBpbnRlbnQp8hEU9QAAAABJRU5ErkJggg==",by=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},jy=Iv('

Slim Select 2.0

Advanced select dropdown
',1),zy={ref:"nav"},By={class:"nav-content",ref:"navContent"},Uy=rn("a",{href:"http://webiswhatido.com",style:{color:"#ffffff"},target:"_blank"},"Brian Voelker",-1),Vy=rn("br",null,null,-1);function Hy(e,t,n,r,s,l){const i=Lc("CarbonAd"),o=Lc("router-view");return Di(),Eh(yt,null,[jy,rn("nav",null,[rn("select",zy,null,512),rn("div",By,null,512),be(i)]),rn("main",null,[be(o),rn("footer",null,[Il(" © "+hg(e.year)+" ",1),Uy,Il(". "),Vy,Il(" Slim Select is under the MIT license. ")])])],64)}const $y=by(Fy,[["render",Hy]]);var pf=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Su(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Bh={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** * Prism: Lightweight, robust, elegant syntax highlighting * * @license MIT diff --git a/src/slim-select/index.ts b/src/slim-select/index.ts index 47bc4d43..7aa065c8 100644 --- a/src/slim-select/index.ts +++ b/src/slim-select/index.ts @@ -245,15 +245,31 @@ export default class SlimSelect { } public getSelected(): string[] { - return this.store.getSelected() + return this.store.getSelectedOptions().map((option) => option.value) } - public setSelected(id: string | string[], runAfterChange = true): void { + public setSelected(values: string | string[], runAfterChange = true): void { // Get original selected values const selected = this.store.getSelected() + const options = this.store.getDataOptions() + values = Array.isArray(values) ? values : [values] + const ids = [] + + // for back-compatibility support both, set by id and set by value + for (const value of values) { + if (options.find((option) => option.id == value)) { + ids.push(value) + continue + } + + // if option with given id is not found try to search by value + for (const option of options.filter((option) => option.value == value)) { + ids.push(option.id) + } + } // Update the store - this.store.setSelectedBy('id', Array.isArray(id) ? id : [id]) + this.store.setSelectedBy('id', ids) const data = this.store.getData() // Update the select element diff --git a/src/vue/dist/slim-select/helpers.d.ts b/src/vue/dist/slim-select/helpers.d.ts index df354571..88972fef 100644 --- a/src/vue/dist/slim-select/helpers.d.ts +++ b/src/vue/dist/slim-select/helpers.d.ts @@ -1,9 +1,5 @@ -export declare function generateID(): string -export declare function hasClassInTree(element: HTMLElement, className: string): any -export declare function debounce void>( - func: T, - wait?: number, - immediate?: boolean, -): () => void -export declare function isEqual(a: any, b: any): boolean -export declare function kebabCase(str: string): string +export declare function generateID(): string; +export declare function hasClassInTree(element: HTMLElement, className: string): any; +export declare function debounce void>(func: T, wait?: number, immediate?: boolean): () => void; +export declare function isEqual(a: any, b: any): boolean; +export declare function kebabCase(str: string): string; diff --git a/src/vue/dist/slim-select/index.d.ts b/src/vue/dist/slim-select/index.d.ts index babd1b93..4e3fcedf 100644 --- a/src/vue/dist/slim-select/index.d.ts +++ b/src/vue/dist/slim-select/index.d.ts @@ -1,46 +1,46 @@ -import Render from './render' -import Select from './select' -import Settings, { SettingsPartial } from './settings' -import Store, { DataArray, DataArrayPartial, Option, OptionOptional } from './store' +import Render from './render'; +import Select from './select'; +import Settings, { SettingsPartial } from './settings'; +import Store, { DataArray, DataArrayPartial, Option, OptionOptional } from './store'; export interface Config { - select: string | Element - data?: DataArrayPartial - settings?: SettingsPartial - events?: Events + select: string | Element; + data?: DataArrayPartial; + settings?: SettingsPartial; + events?: Events; } export interface Events { - search?: (searchValue: string, currentData: DataArray) => Promise | DataArrayPartial - searchFilter?: (option: Option, search: string) => boolean - addable?: (value: string) => Promise | OptionOptional | string | false | null | undefined - beforeChange?: (newVal: Option[], oldVal: Option[]) => boolean | void - afterChange?: (newVal: Option[]) => void - beforeOpen?: () => void - afterOpen?: () => void - beforeClose?: () => void - afterClose?: () => void - error?: (err: Error) => void + search?: (searchValue: string, currentData: DataArray) => Promise | DataArrayPartial; + searchFilter?: (option: Option, search: string) => boolean; + addable?: (value: string) => Promise | OptionOptional | string | false | null | undefined; + beforeChange?: (newVal: Option[], oldVal: Option[]) => boolean | void; + afterChange?: (newVal: Option[]) => void; + beforeOpen?: () => void; + afterOpen?: () => void; + beforeClose?: () => void; + afterClose?: () => void; + error?: (err: Error) => void; } export default class SlimSelect { - selectEl: HTMLSelectElement - settings: Settings - select: Select - store: Store - render: Render - events: Events - constructor(config: Config) - enable(): void - disable(): void - getData(): DataArray - setData(data: DataArrayPartial): void - getSelected(): string[] - setSelected(id: string | string[], runAfterChange?: boolean): void - addOption(option: OptionOptional): void - open(): void - close(eventType?: string | null): void - search(value: string): void - destroy(): void - private windowResize - private windowScroll - private documentClick - private windowVisibilityChange + selectEl: HTMLSelectElement; + settings: Settings; + select: Select; + store: Store; + render: Render; + events: Events; + constructor(config: Config); + enable(): void; + disable(): void; + getData(): DataArray; + setData(data: DataArrayPartial): void; + getSelected(): string[]; + setSelected(values: string | string[], runAfterChange?: boolean): void; + addOption(option: OptionOptional): void; + open(): void; + close(eventType?: string | null): void; + search(value: string): void; + destroy(): void; + private windowResize; + private windowScroll; + private documentClick; + private windowVisibilityChange; } diff --git a/src/vue/dist/slim-select/render.d.ts b/src/vue/dist/slim-select/render.d.ts index 5f3250e6..ca88f0c2 100644 --- a/src/vue/dist/slim-select/render.d.ts +++ b/src/vue/dist/slim-select/render.d.ts @@ -1,120 +1,120 @@ -import Settings from './settings' -import Store, { DataArray, Option, OptionOptional } from './store' +import Settings from './settings'; +import Store, { DataArray, Option, OptionOptional } from './store'; export interface Callbacks { - open: () => void - close: () => void - addable?: (value: string) => Promise | OptionOptional | string | false | undefined | null - setSelected: (value: string | string[], runAfterChange: boolean) => void - addOption: (option: Option) => void - search: (search: string) => void - beforeChange?: (newVal: Option[], oldVal: Option[]) => boolean | void - afterChange?: (newVal: Option[]) => void + open: () => void; + close: () => void; + addable?: (value: string) => Promise | OptionOptional | string | false | undefined | null; + setSelected: (value: string | string[], runAfterChange: boolean) => void; + addOption: (option: Option) => void; + search: (search: string) => void; + beforeChange?: (newVal: Option[], oldVal: Option[]) => boolean | void; + afterChange?: (newVal: Option[]) => void; } export interface Main { - main: HTMLDivElement - values: HTMLDivElement - deselect: { - main: HTMLDivElement - svg: SVGSVGElement - path: SVGPathElement - } - arrow: { - main: SVGSVGElement - path: SVGPathElement - } + main: HTMLDivElement; + values: HTMLDivElement; + deselect: { + main: HTMLDivElement; + svg: SVGSVGElement; + path: SVGPathElement; + }; + arrow: { + main: SVGSVGElement; + path: SVGPathElement; + }; } export interface Content { - main: HTMLDivElement - search: Search - list: HTMLDivElement + main: HTMLDivElement; + search: Search; + list: HTMLDivElement; } export interface Search { - main: HTMLDivElement - input: HTMLInputElement - addable?: { - main: HTMLDivElement - svg: SVGSVGElement - path: SVGPathElement - } + main: HTMLDivElement; + input: HTMLInputElement; + addable?: { + main: HTMLDivElement; + svg: SVGSVGElement; + path: SVGPathElement; + }; } export default class Render { - settings: Settings - store: Store - callbacks: Callbacks - main: Main - content: Content - classes: { - main: string - placeholder: string - values: string - single: string - max: string - value: string - valueText: string - valueDelete: string - valueOut: string - deselect: string - deselectPath: string - arrow: string - arrowClose: string - arrowOpen: string - content: string - openAbove: string - openBelow: string - search: string - searchHighlighter: string - searching: string - addable: string - addablePath: string - list: string - optgroup: string - optgroupLabel: string - optgroupLabelText: string - optgroupActions: string - optgroupSelectAll: string - optgroupSelectAllBox: string - optgroupSelectAllCheck: string - optgroupClosable: string - option: string - optionDelete: string - highlighted: string - open: string - close: string - selected: string - error: string - disabled: string - hide: string - } - constructor(settings: Required, store: Store, callbacks: Callbacks) - enable(): void - disable(): void - open(): void - close(): void - updateClassStyles(): void - updateAriaAttributes(): void - mainDiv(): Main - mainFocus(eventType: string | null): void - placeholder(): HTMLDivElement - renderValues(): void - private renderSingleValue - private renderMultipleValues - multipleValue(option: Option): HTMLDivElement - contentDiv(): Content - moveContent(): void - searchDiv(): Search - searchFocus(): void - getOptions(notPlaceholder?: boolean, notDisabled?: boolean, notHidden?: boolean): HTMLDivElement[] - highlight(dir: 'up' | 'down'): void - listDiv(): HTMLDivElement - renderError(error: string): void - renderSearching(): void - renderOptions(data: DataArray): void - option(option: Option): HTMLDivElement - destroy(): void - private highlightText - moveContentAbove(): void - moveContentBelow(): void - ensureElementInView(container: HTMLElement, element: HTMLElement): void - putContent(): 'up' | 'down' - updateDeselectAll(): void + settings: Settings; + store: Store; + callbacks: Callbacks; + main: Main; + content: Content; + classes: { + main: string; + placeholder: string; + values: string; + single: string; + max: string; + value: string; + valueText: string; + valueDelete: string; + valueOut: string; + deselect: string; + deselectPath: string; + arrow: string; + arrowClose: string; + arrowOpen: string; + content: string; + openAbove: string; + openBelow: string; + search: string; + searchHighlighter: string; + searching: string; + addable: string; + addablePath: string; + list: string; + optgroup: string; + optgroupLabel: string; + optgroupLabelText: string; + optgroupActions: string; + optgroupSelectAll: string; + optgroupSelectAllBox: string; + optgroupSelectAllCheck: string; + optgroupClosable: string; + option: string; + optionDelete: string; + highlighted: string; + open: string; + close: string; + selected: string; + error: string; + disabled: string; + hide: string; + }; + constructor(settings: Required, store: Store, callbacks: Callbacks); + enable(): void; + disable(): void; + open(): void; + close(): void; + updateClassStyles(): void; + updateAriaAttributes(): void; + mainDiv(): Main; + mainFocus(eventType: string | null): void; + placeholder(): HTMLDivElement; + renderValues(): void; + private renderSingleValue; + private renderMultipleValues; + multipleValue(option: Option): HTMLDivElement; + contentDiv(): Content; + moveContent(): void; + searchDiv(): Search; + searchFocus(): void; + getOptions(notPlaceholder?: boolean, notDisabled?: boolean, notHidden?: boolean): HTMLDivElement[]; + highlight(dir: 'up' | 'down'): void; + listDiv(): HTMLDivElement; + renderError(error: string): void; + renderSearching(): void; + renderOptions(data: DataArray): void; + option(option: Option): HTMLDivElement; + destroy(): void; + private highlightText; + moveContentAbove(): void; + moveContentBelow(): void; + ensureElementInView(container: HTMLElement, element: HTMLElement): void; + putContent(): 'up' | 'down'; + updateDeselectAll(): void; } diff --git a/src/vue/dist/slim-select/select.d.ts b/src/vue/dist/slim-select/select.d.ts index 6b531cfa..62b6f779 100644 --- a/src/vue/dist/slim-select/select.d.ts +++ b/src/vue/dist/slim-select/select.d.ts @@ -1,29 +1,29 @@ -import { DataArray, DataArrayPartial, Optgroup, OptgroupOptional, Option } from './store' +import { DataArray, DataArrayPartial, Optgroup, OptgroupOptional, Option } from './store'; export default class Select { - select: HTMLSelectElement - onValueChange?: (value: Option[]) => void - onClassChange?: (classes: string[]) => void - onDisabledChange?: (disabled: boolean) => void - onOptionsChange?: (data: DataArrayPartial) => void - listen: boolean - private observer - constructor(select: HTMLSelectElement) - enable(): void - disable(): void - hideUI(): void - showUI(): void - changeListen(listen: boolean): void - valueChange(ev: Event): boolean - private observeCall - getData(): DataArrayPartial - getDataFromOptgroup(optgroup: HTMLOptGroupElement): OptgroupOptional - getDataFromOption(option: HTMLOptionElement): Option - getSelectedOptions(): Option[] - getSelectedValues(): string[] - setSelected(ids: string[]): void - updateSelect(id?: string, style?: string, classes?: string[]): void - updateOptions(data: DataArray): void - createOptgroup(optgroup: Optgroup): HTMLOptGroupElement - createOption(info: Option): HTMLOptionElement - destroy(): void + select: HTMLSelectElement; + onValueChange?: (value: Option[]) => void; + onClassChange?: (classes: string[]) => void; + onDisabledChange?: (disabled: boolean) => void; + onOptionsChange?: (data: DataArrayPartial) => void; + listen: boolean; + private observer; + constructor(select: HTMLSelectElement); + enable(): void; + disable(): void; + hideUI(): void; + showUI(): void; + changeListen(listen: boolean): void; + valueChange(ev: Event): boolean; + private observeCall; + getData(): DataArrayPartial; + getDataFromOptgroup(optgroup: HTMLOptGroupElement): OptgroupOptional; + getDataFromOption(option: HTMLOptionElement): Option; + getSelectedOptions(): Option[]; + getSelectedValues(): string[]; + setSelected(ids: string[]): void; + updateSelect(id?: string, style?: string, classes?: string[]): void; + updateOptions(data: DataArray): void; + createOptgroup(optgroup: Optgroup): HTMLOptGroupElement; + createOption(info: Option): HTMLOptionElement; + destroy(): void; } diff --git a/src/vue/dist/slim-select/settings.d.ts b/src/vue/dist/slim-select/settings.d.ts index bfa88c9a..107b4528 100644 --- a/src/vue/dist/slim-select/settings.d.ts +++ b/src/vue/dist/slim-select/settings.d.ts @@ -1,34 +1,34 @@ /// -export type SettingsPartial = Partial +export type SettingsPartial = Partial; export default class Settings { - id: string - style: string - class: string[] - isMultiple: boolean - isOpen: boolean - isFullOpen: boolean - intervalMove: NodeJS.Timeout | null - disabled: boolean - alwaysOpen: boolean - showSearch: boolean - ariaLabel: string - searchPlaceholder: string - searchText: string - searchingText: string - searchHighlight: boolean - closeOnSelect: boolean - contentLocation: HTMLElement - contentPosition: 'relative' | 'absolute' - openPosition: 'auto' | 'up' | 'down' - placeholderText: string - allowDeselect: boolean - hideSelected: boolean - keepOrder: boolean - showOptionTooltips: boolean - minSelected: number - maxSelected: number - timeoutDelay: number - maxValuesShown: number - maxValuesMessage: string - constructor(settings?: SettingsPartial) + id: string; + style: string; + class: string[]; + isMultiple: boolean; + isOpen: boolean; + isFullOpen: boolean; + intervalMove: NodeJS.Timeout | null; + disabled: boolean; + alwaysOpen: boolean; + showSearch: boolean; + ariaLabel: string; + searchPlaceholder: string; + searchText: string; + searchingText: string; + searchHighlight: boolean; + closeOnSelect: boolean; + contentLocation: HTMLElement; + contentPosition: 'relative' | 'absolute'; + openPosition: 'auto' | 'up' | 'down'; + placeholderText: string; + allowDeselect: boolean; + hideSelected: boolean; + keepOrder: boolean; + showOptionTooltips: boolean; + minSelected: number; + maxSelected: number; + timeoutDelay: number; + maxValuesShown: number; + maxValuesMessage: string; + constructor(settings?: SettingsPartial); } diff --git a/src/vue/dist/slim-select/store.d.ts b/src/vue/dist/slim-select/store.d.ts index 507f447b..e00d0d80 100644 --- a/src/vue/dist/slim-select/store.d.ts +++ b/src/vue/dist/slim-select/store.d.ts @@ -1,82 +1,79 @@ -export type DataArray = DataObject[] -export type DataObject = Optgroup | Option -export type DataArrayPartial = DataObjectPartial[] -export type DataObjectPartial = OptgroupOptional | OptionOptional -type selectType = 'single' | 'multiple' +export type DataArray = DataObject[]; +export type DataObject = Optgroup | Option; +export type DataArrayPartial = DataObjectPartial[]; +export type DataObjectPartial = OptgroupOptional | OptionOptional; +type selectType = 'single' | 'multiple'; export interface OptgroupOptional { - id?: string - label: string - selectAll?: boolean - selectAllText?: string - closable?: 'off' | 'open' | 'close' - options?: OptionOptional[] + id?: string; + label: string; + selectAll?: boolean; + selectAllText?: string; + closable?: 'off' | 'open' | 'close'; + options?: OptionOptional[]; } export declare class Optgroup { - id: string - label: string - selectAll: boolean - selectAllText: string - closable: 'off' | 'open' | 'close' - options: Option[] - constructor(optgroup: OptgroupOptional) + id: string; + label: string; + selectAll: boolean; + selectAllText: string; + closable: 'off' | 'open' | 'close'; + options: Option[]; + constructor(optgroup: OptgroupOptional); } export interface OptionOptional { - id?: string - value?: string - text: string - html?: string - selected?: boolean - display?: boolean - disabled?: boolean - mandatory?: boolean - placeholder?: boolean - class?: string - style?: string - data?: { - [key: string]: string - } + id?: string; + value?: string; + text: string; + html?: string; + selected?: boolean; + display?: boolean; + disabled?: boolean; + mandatory?: boolean; + placeholder?: boolean; + class?: string; + style?: string; + data?: { + [key: string]: string; + }; } export declare class Option { - id: string - value: string - text: string - html: string - selected: boolean - display: boolean - disabled: boolean - placeholder: boolean - class: string - style: string - data: { - [key: string]: string - } - mandatory: boolean - constructor(option: OptionOptional) + id: string; + value: string; + text: string; + html: string; + selected: boolean; + display: boolean; + disabled: boolean; + placeholder: boolean; + class: string; + style: string; + data: { + [key: string]: string; + }; + mandatory: boolean; + constructor(option: OptionOptional); } export default class Store { - private selectType - private data - constructor(type: selectType, data: DataArrayPartial) - validateDataArray(data: DataArray | DataArrayPartial): Error | null - validateOption(option: Option | OptionOptional): Error | null - partialToFullData(data: DataArrayPartial): DataArray - setData(data: DataArray | DataArrayPartial): void - getData(): DataArray - getDataOptions(): Option[] - addOption(option: OptionOptional): void - setSelectedBy(selectedType: 'id' | 'value', selectedValues: string[]): void - getSelected(): string[] - getSelectedOptions(): Option[] - getOptgroupByID(id: string): Optgroup | null - getOptionByID(id: string): Option | null - getSelectType(): string - getFirstOption(): Option | null - search(search: string, searchFilter: (opt: Option, search: string) => boolean): DataArray - filter( - filter: { - (opt: Option): boolean - } | null, - includeOptgroup: boolean, - ): DataArray + private selectType; + private data; + constructor(type: selectType, data: DataArrayPartial); + validateDataArray(data: DataArray | DataArrayPartial): Error | null; + validateOption(option: Option | OptionOptional): Error | null; + partialToFullData(data: DataArrayPartial): DataArray; + setData(data: DataArray | DataArrayPartial): void; + getData(): DataArray; + getDataOptions(): Option[]; + addOption(option: OptionOptional): void; + setSelectedBy(selectedType: 'id' | 'value', selectedValues: string[]): void; + getSelected(): string[]; + getSelectedOptions(): Option[]; + getOptgroupByID(id: string): Optgroup | null; + getOptionByID(id: string): Option | null; + getSelectType(): string; + getFirstOption(): Option | null; + search(search: string, searchFilter: (opt: Option, search: string) => boolean): DataArray; + filter(filter: { + (opt: Option): boolean; + } | null, includeOptgroup: boolean): DataArray; } -export {} +export {}; diff --git a/src/vue/dist/slimselectvue.es.js b/src/vue/dist/slimselectvue.es.js index 5f2c9b85..e2153f18 100644 --- a/src/vue/dist/slimselectvue.es.js +++ b/src/vue/dist/slimselectvue.es.js @@ -185,7 +185,7 @@ class Store { } } getSelected() { - return this.getSelectedOptions().map(option => option.id); + return this.getSelectedOptions().map((option) => option.id); } getSelectedOptions() { return this.filter((opt) => { @@ -1399,7 +1399,7 @@ class Select { return options; } getSelectedValues() { - return this.getSelectedOptions().map(option => option.value); + return this.getSelectedOptions().map((option) => option.value); } setSelected(ids) { this.changeListen(false); @@ -1636,7 +1636,7 @@ class SlimSelect { this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class); this.select.hideUI(); this.select.onValueChange = (options) => { - this.setSelected(options.map(option => option.id)); + this.setSelected(options.map((option) => option.id)); }; this.select.onClassChange = (classes) => { this.settings.class = classes; @@ -1726,11 +1726,23 @@ class SlimSelect { } } getSelected() { - return this.store.getSelected(); + return this.store.getSelectedOptions().map((option) => option.value); } - setSelected(id, runAfterChange = true) { + setSelected(values, runAfterChange = true) { const selected = this.store.getSelected(); - this.store.setSelectedBy('id', Array.isArray(id) ? id : [id]); + const options = this.store.getDataOptions(); + values = Array.isArray(values) ? values : [values]; + const ids = []; + for (const value of values) { + if (options.find((option) => option.id == value)) { + ids.push(value); + continue; + } + for (const option of options.filter((option) => option.value == value)) { + ids.push(option.id); + } + } + this.store.setSelectedBy('id', ids); const data = this.store.getData(); this.select.updateOptions(data); this.render.renderValues(); diff --git a/src/vue/dist/slimselectvue.global.js b/src/vue/dist/slimselectvue.global.js index d025cac3..af015f81 100644 --- a/src/vue/dist/slimselectvue.global.js +++ b/src/vue/dist/slimselectvue.global.js @@ -186,7 +186,7 @@ var SlimSelectVue = (function (vue) { } } getSelected() { - return this.getSelectedOptions().map(option => option.id); + return this.getSelectedOptions().map((option) => option.id); } getSelectedOptions() { return this.filter((opt) => { @@ -1400,7 +1400,7 @@ var SlimSelectVue = (function (vue) { return options; } getSelectedValues() { - return this.getSelectedOptions().map(option => option.value); + return this.getSelectedOptions().map((option) => option.value); } setSelected(ids) { this.changeListen(false); @@ -1637,7 +1637,7 @@ var SlimSelectVue = (function (vue) { this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class); this.select.hideUI(); this.select.onValueChange = (options) => { - this.setSelected(options.map(option => option.id)); + this.setSelected(options.map((option) => option.id)); }; this.select.onClassChange = (classes) => { this.settings.class = classes; @@ -1727,11 +1727,23 @@ var SlimSelectVue = (function (vue) { } } getSelected() { - return this.store.getSelected(); + return this.store.getSelectedOptions().map((option) => option.value); } - setSelected(id, runAfterChange = true) { + setSelected(values, runAfterChange = true) { const selected = this.store.getSelected(); - this.store.setSelectedBy('id', Array.isArray(id) ? id : [id]); + const options = this.store.getDataOptions(); + values = Array.isArray(values) ? values : [values]; + const ids = []; + for (const value of values) { + if (options.find((option) => option.id == value)) { + ids.push(value); + continue; + } + for (const option of options.filter((option) => option.value == value)) { + ids.push(option.id); + } + } + this.store.setSelectedBy('id', ids); const data = this.store.getData(); this.select.updateOptions(data); this.render.renderValues(); diff --git a/src/vue/dist/slimselectvue.ssr.js b/src/vue/dist/slimselectvue.ssr.js index e810c2f4..948ffed6 100644 --- a/src/vue/dist/slimselectvue.ssr.js +++ b/src/vue/dist/slimselectvue.ssr.js @@ -187,7 +187,7 @@ class Store { } } getSelected() { - return this.getSelectedOptions().map(option => option.id); + return this.getSelectedOptions().map((option) => option.id); } getSelectedOptions() { return this.filter((opt) => { @@ -1401,7 +1401,7 @@ class Select { return options; } getSelectedValues() { - return this.getSelectedOptions().map(option => option.value); + return this.getSelectedOptions().map((option) => option.value); } setSelected(ids) { this.changeListen(false); @@ -1638,7 +1638,7 @@ class SlimSelect { this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class); this.select.hideUI(); this.select.onValueChange = (options) => { - this.setSelected(options.map(option => option.id)); + this.setSelected(options.map((option) => option.id)); }; this.select.onClassChange = (classes) => { this.settings.class = classes; @@ -1728,11 +1728,23 @@ class SlimSelect { } } getSelected() { - return this.store.getSelected(); + return this.store.getSelectedOptions().map((option) => option.value); } - setSelected(id, runAfterChange = true) { + setSelected(values, runAfterChange = true) { const selected = this.store.getSelected(); - this.store.setSelectedBy('id', Array.isArray(id) ? id : [id]); + const options = this.store.getDataOptions(); + values = Array.isArray(values) ? values : [values]; + const ids = []; + for (const value of values) { + if (options.find((option) => option.id == value)) { + ids.push(value); + continue; + } + for (const option of options.filter((option) => option.value == value)) { + ids.push(option.id); + } + } + this.store.setSelectedBy('id', ids); const data = this.store.getData(); this.select.updateOptions(data); this.render.renderValues(); diff --git a/src/vue/dist/vue/hello.d.ts b/src/vue/dist/vue/hello.d.ts index f6646e23..f6842d9a 100644 --- a/src/vue/dist/vue/hello.d.ts +++ b/src/vue/dist/vue/hello.d.ts @@ -1,2 +1,2 @@ -declare const hello = 'hello world' -export default hello +declare const hello = "hello world"; +export default hello; diff --git a/src/vue/dist/vue/slimselect.vue.d.ts b/src/vue/dist/vue/slimselect.vue.d.ts index 87eb64f6..2e7459df 100644 --- a/src/vue/dist/vue/slimselect.vue.d.ts +++ b/src/vue/dist/vue/slimselect.vue.d.ts @@ -1,380 +1,325 @@ /// /// -import { PropType } from 'vue' -import SlimSelect, { Events } from '../slim-select' -import { DataArrayPartial, Option } from '../slim-select/store' -declare const _default: import('vue').DefineComponent< - { +import { PropType } from 'vue'; +import SlimSelect, { Events } from '../slim-select'; +import { DataArrayPartial, Option } from '../slim-select/store'; +declare const _default: import("vue").DefineComponent<{ modelValue: { - type: PropType - } + type: PropType; + }; multiple: { - type: BooleanConstructor - default: boolean - } + type: BooleanConstructor; + default: boolean; + }; data: { - type: PropType - } + type: PropType; + }; settings: { - type: PropType> - } + type: PropType>; + }; events: { - type: PropType - } - }, - unknown, - { - slim: SlimSelect | null - }, - { + type: PropType; + }; +}, unknown, { + slim: SlimSelect | null; +}, { value: { - get(): string | string[] - set(value: string | string[]): void - } - }, - { + get(): string | string[]; + set(value: string | string[]): void; + }; +}, { getSlimSelect(): { - selectEl: HTMLSelectElement - settings: { - id: string - style: string - class: string[] - isMultiple: boolean - isOpen: boolean - isFullOpen: boolean - intervalMove: { - ref: () => NodeJS.Timeout - unref: () => NodeJS.Timeout - hasRef: () => boolean - refresh: () => NodeJS.Timeout - [Symbol.toPrimitive]: () => number - [Symbol.dispose]: () => void - } | null - disabled: boolean - alwaysOpen: boolean - showSearch: boolean - ariaLabel: string - searchPlaceholder: string - searchText: string - searchingText: string - searchHighlight: boolean - closeOnSelect: boolean - contentLocation: HTMLElement - contentPosition: 'relative' | 'absolute' - openPosition: 'auto' | 'up' | 'down' - placeholderText: string - allowDeselect: boolean - hideSelected: boolean - keepOrder: boolean - showOptionTooltips: boolean - minSelected: number - maxSelected: number - timeoutDelay: number - maxValuesShown: number - maxValuesMessage: string - } - select: { - select: HTMLSelectElement - onValueChange?: ((value: Option[]) => void) | undefined - onClassChange?: ((classes: string[]) => void) | undefined - onDisabledChange?: ((disabled: boolean) => void) | undefined - onOptionsChange?: ((data: DataArrayPartial) => void) | undefined - listen: boolean - enable: () => void - disable: () => void - hideUI: () => void - showUI: () => void - changeListen: (listen: boolean) => void - valueChange: (ev: Event) => boolean - getData: () => DataArrayPartial - getDataFromOptgroup: (optgroup: HTMLOptGroupElement) => import('../slim-select/store').OptgroupOptional - getDataFromOption: (option: HTMLOptionElement) => Option - getSelectedOptions: () => Option[] - getSelectedValues: () => string[] - setSelected: (ids: string[]) => void - updateSelect: (id?: string | undefined, style?: string | undefined, classes?: string[] | undefined) => void - updateOptions: (data: import('../slim-select/store').DataArray) => void - createOptgroup: (optgroup: import('../slim-select/store').Optgroup) => HTMLOptGroupElement - createOption: (info: Option) => HTMLOptionElement - destroy: () => void - } - store: { - validateDataArray: (data: DataArrayPartial | import('../slim-select/store').DataArray) => Error | null - validateOption: (option: import('../slim-select/store').OptionOptional | Option) => Error | null - partialToFullData: (data: DataArrayPartial) => import('../slim-select/store').DataArray - setData: (data: DataArrayPartial | import('../slim-select/store').DataArray) => void - getData: () => import('../slim-select/store').DataArray - getDataOptions: () => Option[] - addOption: (option: import('../slim-select/store').OptionOptional) => void - setSelectedBy: (selectedType: 'id' | 'value', selectedValues: string[]) => void - getSelected: () => string[] - getSelectedOptions: () => Option[] - getOptgroupByID: (id: string) => import('../slim-select/store').Optgroup | null - getOptionByID: (id: string) => Option | null - getSelectType: () => string - getFirstOption: () => Option | null - search: ( - search: string, - searchFilter: (opt: Option, search: string) => boolean, - ) => import('../slim-select/store').DataArray - filter: ( - filter: ((opt: Option) => boolean) | null, - includeOptgroup: boolean, - ) => import('../slim-select/store').DataArray - } - render: { + selectEl: HTMLSelectElement; settings: { - id: string - style: string - class: string[] - isMultiple: boolean - isOpen: boolean - isFullOpen: boolean - intervalMove: { - ref: () => NodeJS.Timeout - unref: () => NodeJS.Timeout - hasRef: () => boolean - refresh: () => NodeJS.Timeout - [Symbol.toPrimitive]: () => number - [Symbol.dispose]: () => void - } | null - disabled: boolean - alwaysOpen: boolean - showSearch: boolean - ariaLabel: string - searchPlaceholder: string - searchText: string - searchingText: string - searchHighlight: boolean - closeOnSelect: boolean - contentLocation: HTMLElement - contentPosition: 'relative' | 'absolute' - openPosition: 'auto' | 'up' | 'down' - placeholderText: string - allowDeselect: boolean - hideSelected: boolean - keepOrder: boolean - showOptionTooltips: boolean - minSelected: number - maxSelected: number - timeoutDelay: number - maxValuesShown: number - maxValuesMessage: string - } + id: string; + style: string; + class: string[]; + isMultiple: boolean; + isOpen: boolean; + isFullOpen: boolean; + intervalMove: { + ref: () => NodeJS.Timeout; + unref: () => NodeJS.Timeout; + hasRef: () => boolean; + refresh: () => NodeJS.Timeout; + [Symbol.toPrimitive]: () => number; + [Symbol.dispose]: () => void; + } | null; + disabled: boolean; + alwaysOpen: boolean; + showSearch: boolean; + ariaLabel: string; + searchPlaceholder: string; + searchText: string; + searchingText: string; + searchHighlight: boolean; + closeOnSelect: boolean; + contentLocation: HTMLElement; + contentPosition: "relative" | "absolute"; + openPosition: "auto" | "up" | "down"; + placeholderText: string; + allowDeselect: boolean; + hideSelected: boolean; + keepOrder: boolean; + showOptionTooltips: boolean; + minSelected: number; + maxSelected: number; + timeoutDelay: number; + maxValuesShown: number; + maxValuesMessage: string; + }; + select: { + select: HTMLSelectElement; + onValueChange?: ((value: Option[]) => void) | undefined; + onClassChange?: ((classes: string[]) => void) | undefined; + onDisabledChange?: ((disabled: boolean) => void) | undefined; + onOptionsChange?: ((data: DataArrayPartial) => void) | undefined; + listen: boolean; + enable: () => void; + disable: () => void; + hideUI: () => void; + showUI: () => void; + changeListen: (listen: boolean) => void; + valueChange: (ev: Event) => boolean; + getData: () => DataArrayPartial; + getDataFromOptgroup: (optgroup: HTMLOptGroupElement) => import("../slim-select/store").OptgroupOptional; + getDataFromOption: (option: HTMLOptionElement) => Option; + getSelectedOptions: () => Option[]; + getSelectedValues: () => string[]; + setSelected: (ids: string[]) => void; + updateSelect: (id?: string | undefined, style?: string | undefined, classes?: string[] | undefined) => void; + updateOptions: (data: import("../slim-select/store").DataArray) => void; + createOptgroup: (optgroup: import("../slim-select/store").Optgroup) => HTMLOptGroupElement; + createOption: (info: Option) => HTMLOptionElement; + destroy: () => void; + }; store: { - validateDataArray: (data: DataArrayPartial | import('../slim-select/store').DataArray) => Error | null - validateOption: (option: import('../slim-select/store').OptionOptional | Option) => Error | null - partialToFullData: (data: DataArrayPartial) => import('../slim-select/store').DataArray - setData: (data: DataArrayPartial | import('../slim-select/store').DataArray) => void - getData: () => import('../slim-select/store').DataArray - getDataOptions: () => Option[] - addOption: (option: import('../slim-select/store').OptionOptional) => void - setSelectedBy: (selectedType: 'id' | 'value', selectedValues: string[]) => void - getSelected: () => string[] - getSelectedOptions: () => Option[] - getOptgroupByID: (id: string) => import('../slim-select/store').Optgroup | null - getOptionByID: (id: string) => Option | null - getSelectType: () => string - getFirstOption: () => Option | null - search: ( - search: string, - searchFilter: (opt: Option, search: string) => boolean, - ) => import('../slim-select/store').DataArray - filter: ( - filter: ((opt: Option) => boolean) | null, - includeOptgroup: boolean, - ) => import('../slim-select/store').DataArray - } - callbacks: { - open: () => void - close: () => void - addable?: - | (( - value: string, - ) => - | string - | false - | import('../slim-select/store').OptionOptional - | Promise - | null - | undefined) - | undefined - setSelected: (value: string | string[], runAfterChange: boolean) => void - addOption: (option: Option) => void - search: (search: string) => void - beforeChange?: ((newVal: Option[], oldVal: Option[]) => boolean | void) | undefined - afterChange?: ((newVal: Option[]) => void) | undefined - } - main: { - main: HTMLDivElement - values: HTMLDivElement - deselect: { - main: HTMLDivElement - svg: SVGSVGElement - path: SVGPathElement - } - arrow: { - main: SVGSVGElement - path: SVGPathElement - } - } - content: { - main: HTMLDivElement - search: { - main: HTMLDivElement - input: HTMLInputElement - addable?: - | { - main: HTMLDivElement - svg: SVGSVGElement - path: SVGPathElement - } - | undefined - } - list: HTMLDivElement - } - classes: { - main: string - placeholder: string - values: string - single: string - max: string - value: string - valueText: string - valueDelete: string - valueOut: string - deselect: string - deselectPath: string - arrow: string - arrowClose: string - arrowOpen: string - content: string - openAbove: string - openBelow: string - search: string - searchHighlighter: string - searching: string - addable: string - addablePath: string - list: string - optgroup: string - optgroupLabel: string - optgroupLabelText: string - optgroupActions: string - optgroupSelectAll: string - optgroupSelectAllBox: string - optgroupSelectAllCheck: string - optgroupClosable: string - option: string - optionDelete: string - highlighted: string - open: string - close: string - selected: string - error: string - disabled: string - hide: string - } - enable: () => void - disable: () => void - open: () => void - close: () => void - updateClassStyles: () => void - updateAriaAttributes: () => void - mainDiv: () => import('../slim-select/render').Main - mainFocus: (eventType: string | null) => void - placeholder: () => HTMLDivElement - renderValues: () => void - multipleValue: (option: Option) => HTMLDivElement - contentDiv: () => import('../slim-select/render').Content - moveContent: () => void - searchDiv: () => import('../slim-select/render').Search - searchFocus: () => void - getOptions: (notPlaceholder?: boolean, notDisabled?: boolean, notHidden?: boolean) => HTMLDivElement[] - highlight: (dir: 'up' | 'down') => void - listDiv: () => HTMLDivElement - renderError: (error: string) => void - renderSearching: () => void - renderOptions: (data: import('../slim-select/store').DataArray) => void - option: (option: Option) => HTMLDivElement - destroy: () => void - moveContentAbove: () => void - moveContentBelow: () => void - ensureElementInView: (container: HTMLElement, element: HTMLElement) => void - putContent: () => 'up' | 'down' - updateDeselectAll: () => void - } - events: { - search?: - | (( - searchValue: string, - currentData: import('../slim-select/store').DataArray, - ) => DataArrayPartial | Promise) - | undefined - searchFilter?: ((option: Option, search: string) => boolean) | undefined - addable?: - | (( - value: string, - ) => - | string - | false - | import('../slim-select/store').OptionOptional - | Promise - | null - | undefined) - | undefined - beforeChange?: ((newVal: Option[], oldVal: Option[]) => boolean | void) | undefined - afterChange?: ((newVal: Option[]) => void) | undefined - beforeOpen?: (() => void) | undefined - afterOpen?: (() => void) | undefined - beforeClose?: (() => void) | undefined - afterClose?: (() => void) | undefined - error?: ((err: Error) => void) | undefined - } - enable: () => void - disable: () => void - getData: () => import('../slim-select/store').DataArray - setData: (data: DataArrayPartial) => void - getSelected: () => string[] - setSelected: (id: string | string[], runAfterChange?: boolean) => void - addOption: (option: import('../slim-select/store').OptionOptional) => void - open: () => void - close: (eventType?: string | null) => void - search: (value: string) => void - destroy: () => void - } | null - getCleanValue(val: string | string[] | undefined): string | string[] - }, - import('vue').ComponentOptionsMixin, - import('vue').ComponentOptionsMixin, - 'update:modelValue'[], - 'update:modelValue', - import('vue').PublicProps, - Readonly< - import('vue').ExtractPropTypes<{ - modelValue: { - type: PropType - } - multiple: { - type: BooleanConstructor - default: boolean - } - data: { - type: PropType - } - settings: { - type: PropType> - } - events: { - type: PropType - } - }> - > & { - 'onUpdate:modelValue'?: ((...args: any[]) => any) | undefined - }, - { - multiple: boolean - }, - {} -> -export default _default + validateDataArray: (data: DataArrayPartial | import("../slim-select/store").DataArray) => Error | null; + validateOption: (option: import("../slim-select/store").OptionOptional | Option) => Error | null; + partialToFullData: (data: DataArrayPartial) => import("../slim-select/store").DataArray; + setData: (data: DataArrayPartial | import("../slim-select/store").DataArray) => void; + getData: () => import("../slim-select/store").DataArray; + getDataOptions: () => Option[]; + addOption: (option: import("../slim-select/store").OptionOptional) => void; + setSelectedBy: (selectedType: "id" | "value", selectedValues: string[]) => void; + getSelected: () => string[]; + getSelectedOptions: () => Option[]; + getOptgroupByID: (id: string) => import("../slim-select/store").Optgroup | null; + getOptionByID: (id: string) => Option | null; + getSelectType: () => string; + getFirstOption: () => Option | null; + search: (search: string, searchFilter: (opt: Option, search: string) => boolean) => import("../slim-select/store").DataArray; + filter: (filter: ((opt: Option) => boolean) | null, includeOptgroup: boolean) => import("../slim-select/store").DataArray; + }; + render: { + settings: { + id: string; + style: string; + class: string[]; + isMultiple: boolean; + isOpen: boolean; + isFullOpen: boolean; + intervalMove: { + ref: () => NodeJS.Timeout; + unref: () => NodeJS.Timeout; + hasRef: () => boolean; + refresh: () => NodeJS.Timeout; + [Symbol.toPrimitive]: () => number; + [Symbol.dispose]: () => void; + } | null; + disabled: boolean; + alwaysOpen: boolean; + showSearch: boolean; + ariaLabel: string; + searchPlaceholder: string; + searchText: string; + searchingText: string; + searchHighlight: boolean; + closeOnSelect: boolean; + contentLocation: HTMLElement; + contentPosition: "relative" | "absolute"; + openPosition: "auto" | "up" | "down"; + placeholderText: string; + allowDeselect: boolean; + hideSelected: boolean; + keepOrder: boolean; + showOptionTooltips: boolean; + minSelected: number; + maxSelected: number; + timeoutDelay: number; + maxValuesShown: number; + maxValuesMessage: string; + }; + store: { + validateDataArray: (data: DataArrayPartial | import("../slim-select/store").DataArray) => Error | null; + validateOption: (option: import("../slim-select/store").OptionOptional | Option) => Error | null; + partialToFullData: (data: DataArrayPartial) => import("../slim-select/store").DataArray; + setData: (data: DataArrayPartial | import("../slim-select/store").DataArray) => void; + getData: () => import("../slim-select/store").DataArray; + getDataOptions: () => Option[]; + addOption: (option: import("../slim-select/store").OptionOptional) => void; + setSelectedBy: (selectedType: "id" | "value", selectedValues: string[]) => void; + getSelected: () => string[]; + getSelectedOptions: () => Option[]; + getOptgroupByID: (id: string) => import("../slim-select/store").Optgroup | null; + getOptionByID: (id: string) => Option | null; + getSelectType: () => string; + getFirstOption: () => Option | null; + search: (search: string, searchFilter: (opt: Option, search: string) => boolean) => import("../slim-select/store").DataArray; + filter: (filter: ((opt: Option) => boolean) | null, includeOptgroup: boolean) => import("../slim-select/store").DataArray; + }; + callbacks: { + open: () => void; + close: () => void; + addable?: ((value: string) => string | false | import("../slim-select/store").OptionOptional | Promise | null | undefined) | undefined; + setSelected: (value: string | string[], runAfterChange: boolean) => void; + addOption: (option: Option) => void; + search: (search: string) => void; + beforeChange?: ((newVal: Option[], oldVal: Option[]) => boolean | void) | undefined; + afterChange?: ((newVal: Option[]) => void) | undefined; + }; + main: { + main: HTMLDivElement; + values: HTMLDivElement; + deselect: { + main: HTMLDivElement; + svg: SVGSVGElement; + path: SVGPathElement; + }; + arrow: { + main: SVGSVGElement; + path: SVGPathElement; + }; + }; + content: { + main: HTMLDivElement; + search: { + main: HTMLDivElement; + input: HTMLInputElement; + addable?: { + main: HTMLDivElement; + svg: SVGSVGElement; + path: SVGPathElement; + } | undefined; + }; + list: HTMLDivElement; + }; + classes: { + main: string; + placeholder: string; + values: string; + single: string; + max: string; + value: string; + valueText: string; + valueDelete: string; + valueOut: string; + deselect: string; + deselectPath: string; + arrow: string; + arrowClose: string; + arrowOpen: string; + content: string; + openAbove: string; + openBelow: string; + search: string; + searchHighlighter: string; + searching: string; + addable: string; + addablePath: string; + list: string; + optgroup: string; + optgroupLabel: string; + optgroupLabelText: string; + optgroupActions: string; + optgroupSelectAll: string; + optgroupSelectAllBox: string; + optgroupSelectAllCheck: string; + optgroupClosable: string; + option: string; + optionDelete: string; + highlighted: string; + open: string; + close: string; + selected: string; + error: string; + disabled: string; + hide: string; + }; + enable: () => void; + disable: () => void; + open: () => void; + close: () => void; + updateClassStyles: () => void; + updateAriaAttributes: () => void; + mainDiv: () => import("../slim-select/render").Main; + mainFocus: (eventType: string | null) => void; + placeholder: () => HTMLDivElement; + renderValues: () => void; + multipleValue: (option: Option) => HTMLDivElement; + contentDiv: () => import("../slim-select/render").Content; + moveContent: () => void; + searchDiv: () => import("../slim-select/render").Search; + searchFocus: () => void; + getOptions: (notPlaceholder?: boolean, notDisabled?: boolean, notHidden?: boolean) => HTMLDivElement[]; + highlight: (dir: "up" | "down") => void; + listDiv: () => HTMLDivElement; + renderError: (error: string) => void; + renderSearching: () => void; + renderOptions: (data: import("../slim-select/store").DataArray) => void; + option: (option: Option) => HTMLDivElement; + destroy: () => void; + moveContentAbove: () => void; + moveContentBelow: () => void; + ensureElementInView: (container: HTMLElement, element: HTMLElement) => void; + putContent: () => "up" | "down"; + updateDeselectAll: () => void; + }; + events: { + search?: ((searchValue: string, currentData: import("../slim-select/store").DataArray) => DataArrayPartial | Promise) | undefined; + searchFilter?: ((option: Option, search: string) => boolean) | undefined; + addable?: ((value: string) => string | false | import("../slim-select/store").OptionOptional | Promise | null | undefined) | undefined; + beforeChange?: ((newVal: Option[], oldVal: Option[]) => boolean | void) | undefined; + afterChange?: ((newVal: Option[]) => void) | undefined; + beforeOpen?: (() => void) | undefined; + afterOpen?: (() => void) | undefined; + beforeClose?: (() => void) | undefined; + afterClose?: (() => void) | undefined; + error?: ((err: Error) => void) | undefined; + }; + enable: () => void; + disable: () => void; + getData: () => import("../slim-select/store").DataArray; + setData: (data: DataArrayPartial) => void; + getSelected: () => string[]; + setSelected: (values: string | string[], runAfterChange?: boolean) => void; + addOption: (option: import("../slim-select/store").OptionOptional) => void; + open: () => void; + close: (eventType?: string | null) => void; + search: (value: string) => void; + destroy: () => void; + } | null; + getCleanValue(val: string | string[] | undefined): string | string[]; +}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").PublicProps, Readonly; + }; + multiple: { + type: BooleanConstructor; + default: boolean; + }; + data: { + type: PropType; + }; + settings: { + type: PropType>; + }; + events: { + type: PropType; + }; +}>> & { + "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined; +}, { + multiple: boolean; +}, {}>; +export default _default;