((root, factory) => {
    if (typeof define === 'function' && define.amd) {
        define([], factory);
    } else if (typeof module === 'object' && module.exports) {
        module.exports = factory();
    } else {
        root.Pickle = factory();
    }
})(typeof self !== 'undefined' ? self : this, () => {
    class PickleDOM{p=null;constructor(t){this.p=t}clearFocusedOption(){this.p.focusedOption&&(this.p.focusedOption.classList.remove("pickle-select__option--focused"),this.p.focusedOption=null),this.p.trigger.removeAttribute("aria-activedescendant")}focusSelectedOption(){const t=this.p.isMultiple?this.p.get()[0]||null:this.p.get();if(t){const e=this.p.options.find((e=>e.getAttribute("data-value")===t));e?(this.p.focusedIndex=this.p.options.indexOf(e),this.p.focusedOption=e,this.p.focusedOption.classList.add("pickle-select__option--focused"),this.p.trigger.setAttribute("aria-activedescendant",this.p.focusedOption.id),this.p.keyboardNavigation.scrollOptionIntoView(this.p.focusedOption)):this.p.debug&&this.p.utils.log("warn","Selected value not found in DOM --\x3e failed to focus",t)}else this.p.keyboardNavigation.focusFirstOption()}createElement(t,e){const i=document.createElement(t);return e&&(i.className=e),i}getPlaceholderText(){return this.p.originalSelect.querySelector('option[value=""]')?.textContent||this.p.l10n.placeholder}createCustomSelect(){this.p.originalSelect.style.display="none",this.p.wrapper=this.createElement("div","pickle-select"),this.p.wrapper.classList.add(`pickle-select--${this.p.theme}`),this.p.width&&(this.p.wrapper.style.width=this.p.width),this.createLabel(),this.p.trigger=this.createElement("div","pickle-select__trigger"),this.p.trigger.classList.add(`pickle-select__trigger--${this.p.theme}`),this.p.trigger.setAttribute("tabindex","0"),this.p.trigger.setAttribute("role","combobox"),this.p.trigger.setAttribute("aria-expanded","false"),this.p.trigger.setAttribute("aria-haspopup","listbox"),this.p.trigger.style.touchAction="manipulation",this.p.trigger.style.userSelect="none",this.p.height&&(this.p.trigger.style.height=this.p.height),this.p.valueDisplay=this.createElement("span","pickle-select__value"+(this.p.isMultiple?"--multiple":"")),this.p.arrow=this.createElement("span","pickle-select__arrow"),this.p.arrow.setAttribute("aria-hidden","true"),this.p.arrow.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 011.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" /></svg>',this.p.dropdown=this.createElement("div","pickle-select__dropdown"),this.p.dropdown.classList.add(`pickle-select__dropdown--${this.p.theme}`),this.p.dropdown.setAttribute("role","listbox"),this.p.optionsList=this.createElement("div","pickle-select__options-list"),this.p.dropdown.appendChild(this.p.optionsList),this.p.liveRegion=this.createElement("div","pickle-select__sr-only"),this.p.liveRegion.setAttribute("aria-live","polite"),this.p.liveRegion.setAttribute("aria-atomic","true"),this.p.liveRegion.style.cssText="position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;",this.setupAriaLabeling(),this.p.trigger.appendChild(this.p.valueDisplay),this.p.trigger.appendChild(this.p.arrow),this.p.wrapper.appendChild(this.p.trigger),this.p.wrapper.appendChild(this.p.dropdown),this.p.wrapper.appendChild(this.p.liveRegion),this.p.originalSelect.parentNode.insertBefore(this.p.wrapper,this.p.originalSelect.nextSibling),this.p.defaultValue?this.p.set(this.p.defaultValue):this.p.isMultiple?(Array.from(this.p.originalSelect.selectedOptions).forEach((t=>this.p.selectedOptions.add(t.value))),this.updateValueDisplay()):this.p.originalSelect.value?this.p.optionManager.selectOptionByValue(this.p.originalSelect.value):this.updateValueDisplay()}createLabel(){const t=document.querySelector(`label[for="${this.p.originalSelect.id}"]`);t&&(t.id||(t.id=`pickle-label-${this.p.originalSelect.id||this.p.utils.generateID()}`),this.p.label=t)}createSearchInput(){this.p.searchInput=this.createElement("input","pickle-select__search"),this.p.searchInput.type="text",this.p.searchInput.placeholder=this.p.l10n.searchPlaceholder,this.p.searchInput.addEventListener("input",(t=>this.p.optionManager.handleSearch(t))),this.p.searchInput.addEventListener("keydown",(t=>{"ArrowDown"===t.key||"ArrowUp"===t.key?(t.preventDefault(),this.p.trigger.focus(),this.p.keyboardNavigation.handleKeydown(t)):"Escape"===t.key&&(this.p.close(),this.p.trigger.focus())})),this.p.dropdown.prepend(this.p.searchInput)}updateValueDisplay(){this.p.valueDisplay.innerHTML="";const t=this.p.get();this.p.isMultiple?0===t.length?this.p.valueDisplay.textContent=this.getPlaceholderText():t.length>=4?this.p.valueDisplay.textContent=this.p.l10n.multipleSelection.replace("{count}",t.length):t.forEach((t=>{const e=this.p.sourceOptions.find((e=>!e.isGroupLabel&&e.value===t));if(e){const i=this.createElement("span","pickle-select__tag");i.textContent=e.text;const s=this.createElement("button","pickle-select__tag-remove");s.type="button",s.innerHTML="&times;";const p=document.createElement("div");p.textContent=e.text,s.setAttribute("aria-label",`Remove ${p.innerHTML}`),s.addEventListener("click",(e=>{e.stopPropagation(),this.p.optionManager.toggleOptionSelection(t)})),i.appendChild(s),this.p.valueDisplay.appendChild(i)}})):this.p.valueDisplay.textContent=this.p.getText()||this.getPlaceholderText()}setupAriaLabeling(){this.p.dropdown.setAttribute("aria-multiselectable",String(this.p.isMultiple)),this.p.label?(this.p.label.id||(this.p.label.id=`pickle-label-${this.p.originalSelect.id||this.p.utils.generateID()}`),this.p.trigger.setAttribute("aria-labelledby",this.p.label.id)):this.p.trigger.setAttribute("aria-label",this.p.l10n.ariaLabel),this.p.dropdown.id||(this.p.dropdown.id=`pickle-dropdown-${this.p.utils.generateID()}`),this.p.trigger.setAttribute("aria-controls",this.p.dropdown.id)}refreshSelectedStateInUI(){this.p.options.forEach((t=>{if("option"!==t.getAttribute("role"))return;const e=t.getAttribute("data-value"),i=this.p.isMultiple?this.p.selectedOptions.has(e):this.p.originalSelect.value===e;t.classList.toggle("pickle-select__option--selected",i),t.setAttribute("aria-selected",String(i))}))}refreshDropdownView(){this.p.optionsList.innerHTML="",this.p.options=[],this.p.focusedIndex=-1,this.clearFocusedOption(),this.p.optionManager.renderChunk()}highlightMatches(t){const e=document.createElement("div");e.textContent=t;const i=e.innerHTML,s=this.p.currentSearchTerm;if(!s)return i;if(this.p.fuzzySearch){let t="",e=0,p=0;const l=s.toLowerCase();for(;p<i.length;)e<l.length&&i[p].toLowerCase()===l[e]?(t+=`<mark>${i[p]}</mark>`,e++):t+=i[p],p++;return t}const p=new RegExp(`(${this.p.utils.escapeRegExp(s)})`,"gi");return i.replace(p,"<mark>$1</mark>")}}
    class PickleEvents{p=null;constructor(t){this.p=t}emit(t,e={}){if(!this.p.wrapper)return null;const i=new CustomEvent(`pickle:${t}`,{detail:{instance:this.p,...e},bubbles:!0,cancelable:!0});try{return this.p.wrapper.dispatchEvent(i),i}catch(t){return this.p.debug&&console.warn("Event dispatch failed:",t),null}}attachEventListeners(){this.p.trigger.addEventListener("click",(t=>{t.preventDefault(),this.p.disabled||this.p.toggle()})),this.p.trigger.addEventListener("keydown",(t=>{this.p.disabled||this.p.keyboardNavigation.handleKeydown(t)})),this.p.dropdown.addEventListener("click",(t=>{const e=t.target.closest(".pickle-select__option");e&&!e.classList.contains("pickle-select__option--disabled")&&this.p.optionManager.toggleOptionSelection(e.getAttribute("data-value"),e)})),this.p.handleDocumentClick=t=>{this.p.wrapper&&this.p.wrapper.contains&&!this.p.wrapper.contains(t.target)&&this.p.close()},document.addEventListener("click",this.p.handleDocumentClick),this.p.dropdown.addEventListener("touchmove",(t=>{t.stopPropagation()}))}}
    class PickleNavigation{p=null;constructor(t){this.p=t}handleKeydown(t){switch(t.key){case"Enter":case" ":t.preventDefault(),this.p.isOpen&&this.p.focusedOption?this.p.optionManager.toggleOptionSelection(this.p.focusedOption.getAttribute("data-value"),this.p.focusedOption):this.p.toggle();break;case"Escape":this.p.isOpen&&(t.preventDefault(),this.p.close());break;case"ArrowDown":t.preventDefault(),this.p.isOpen?this.focusNextOption():this.p.open();break;case"ArrowUp":t.preventDefault(),this.p.isOpen?this.focusPreviousOption():this.p.open();break;case"Home":this.p.isOpen&&(t.preventDefault(),this.focusFirstOption());break;case"End":this.p.isOpen&&(t.preventDefault(),this.focusLastOption())}}focusNextOption(){this.p.domManager.clearFocusedOption();let t=this.p.focusedIndex>-1?this.p.focusedIndex+1:0;for(;t<this.p.options.length;){const e=this.p.options[t];if("option"===e.getAttribute("role")&&!e.classList.contains("pickle-select__option--disabled"))return this.p.focusedIndex=t,this.p.focusedOption=e,e.classList.add("pickle-select__option--focused"),this.p.trigger.setAttribute("aria-activedescendant",e.id),void this.scrollOptionIntoView(e);t++}}focusPreviousOption(){this.p.domManager.clearFocusedOption();let t=this.p.focusedIndex>-1?this.p.focusedIndex-1:this.p.options.length-1;for(;t>=0;){const e=this.p.options[t];if("option"===e.getAttribute("role")&&!e.classList.contains("pickle-select__option--disabled"))return this.p.focusedIndex=t,this.p.focusedOption=e,e.classList.add("pickle-select__option--focused"),this.p.trigger.setAttribute("aria-activedescendant",e.id),void this.scrollOptionIntoView(e);t--}}focusFirstOption(){this.p.domManager.clearFocusedOption(),this.p.focusedIndex=-1,this.focusNextOption()}focusLastOption(){this.p.domManager.clearFocusedOption(),this.p.focusedIndex=this.p.options.length,this.focusPreviousOption()}scrollOptionIntoView(t){if(t&&this.p.dropdown.scrollHeight>this.p.dropdown.clientHeight){const e=t.offsetTop,s=e+t.offsetHeight,i=this.p.dropdown.scrollTop,o=i+this.p.dropdown.clientHeight;e<i?this.p.dropdown.scrollTop=e:s>o&&(this.p.dropdown.scrollTop=s-this.p.dropdown.clientHeight)}}}
    class PickleOptions{p=null;constructor(e){this.p=e}buildOptions(){this.p.dropdown.addEventListener("scroll",(()=>{const{scrollTop:e,scrollHeight:t,clientHeight:i}=this.p.dropdown;t-e-i<100&&this.p.options.length<this.p.visibleOptions.length&&this.renderChunk()})),this.renderChunk()}renderChunk(){const e=document.createDocumentFragment(),t=this.p.options.length,i=Math.min(this.p.visibleOptions.length,t+100);for(let s=t;s<i;s++){const t=this.p.visibleOptions[s];if(t.isGroupLabel){const i=this.p.domManager.createElement("div","pickle-select__optgroup-label");i.setAttribute("role","presentation"),i.textContent=t.text,t.disabled&&i.classList.add("pickle-select__optgroup-label--disabled"),e.appendChild(i),this.p.options.push(i);continue}const i=this.p.domManager.createElement("div","pickle-select__option");i.innerHTML=this.p.domManager.highlightMatches(t.text),i.setAttribute("data-value",t.value),i.setAttribute("role","option"),i.id=`${this.p.id}__option-${this.p.incrementCounter()}`,t.disabled&&(i.classList.add("pickle-select__option--disabled"),i.setAttribute("aria-disabled","true")),this.p.isMultiple?this.p.selectedOptions.has(t.value)&&(i.classList.add("pickle-select__option--selected"),i.setAttribute("aria-selected","true")):this.p.originalSelect.value===t.value&&(i.classList.add("pickle-select__option--selected"),i.setAttribute("aria-selected","true"),this.p.selectedOption=i),e.appendChild(i),this.p.options.push(i)}this.p.optionsList.appendChild(e)}loadMoreOptions(){return this.p.options.length<this.p.visibleOptions.length&&(this.renderChunk(),!0)}cacheOptions(){const e=[];let t=0;Array.from(this.p.originalSelect.children).forEach((i=>{"OPTGROUP"===i.tagName?(e.push({text:i.label,isGroupLabel:!0,disabled:i.disabled}),Array.from(i.children).forEach((s=>{"OPTION"===s.tagName&&e.push({value:s.value,text:s.textContent,disabled:s.disabled||i.disabled,originalIndex:t++,group:i.label})}))):"OPTION"===i.tagName&&e.push({value:i.value,text:i.textContent,disabled:i.disabled,originalIndex:t++})})),this.p.setSourceOptions(e),this.p.setVisibleOptions([...e])}handleSearch(e){const t=e.target.value;this.p.setCurrentSearchTerm(t);const i=t.toLowerCase();t?this.p.fuzzySearch?this.p.setVisibleOptions(this.p.sourceOptions.filter((e=>!e.isGroupLabel&&this.fuzzyMatch(t,e.text)))):this.p.setVisibleOptions(this.p.sourceOptions.filter((e=>!e.isGroupLabel&&e.text.toLowerCase().includes(i)))):this.p.setVisibleOptions(this.p.sourceOptions),this.p.domManager.refreshDropdownView(),this.p.eventSystem.emit("search",{term:i,visibleCount:this.p.visibleOptions.length})}fuzzyMatch(e,t){const i=e.toLowerCase(),s=t.toLowerCase();let l=0,o=0;for(;l<i.length&&o<s.length;)i[l]===s[o]&&l++,o++;return l===i.length}toggleOptionSelection(e,t=null,i=!1){const s=this.p.sourceOptions.find((t=>!t.isGroupLabel&&t.value===e));if(!s||s.disabled)return;const l=t||this.p.options.find((t=>t.getAttribute("data-value")===e));Array.from(this.p.originalSelect.options).find((t=>t.value===e));if(this.p.isMultiple){const t=this.p.selectedOptions.has(e);t?(this.p.selectedOptions.delete(e),0===this.p.selectedOptions.size&&this.p.selectedOptions.add("")):(""!==e&&this.p.selectedOptions.delete(""),this.p.selectedOptions.add(e)),Array.from(this.p.originalSelect.options).forEach((e=>{e.selected=this.p.selectedOptions.has(e.value)})),l&&(l.classList.toggle("pickle-select__option--selected",!t),l.setAttribute("aria-selected",String(!t)))}else this.clearSelectedOption(),this.p.originalSelect.value===e?(this.p.originalSelect.value="",this.p.selectedOption=null,l&&(l.classList.remove("pickle-select__option--selected"),l.setAttribute("aria-selected","false"))):(l&&(l.classList.add("pickle-select__option--selected"),l.setAttribute("aria-selected","true"),this.p.selectedOption=l),this.p.originalSelect.value=e),this.p.close(),this.p.trigger.focus();this.p.domManager.updateValueDisplay(),i||this.fireChangeEvent(s)}selectOptionByValue(e){const t=this.p.sourceOptions.find((t=>!t.isGroupLabel&&t.value===e));if(!t||t.disabled)return;this.clearSelectedOption(),this.p.originalSelect.value=e;const i=this.p.options.find((t=>t.getAttribute("data-value")===e));i&&(i.classList.add("pickle-select__option--selected"),i.setAttribute("aria-selected","true"),this.p.selectedOption=i),this.p.domManager.updateValueDisplay(),this.p.isMultiple||this.fireChangeEvent(t)}clearSelectedOption(){this.p.selectedOption&&(this.p.selectedOption.classList.remove("pickle-select__option--selected"),this.p.selectedOption.removeAttribute("aria-selected"),this.p.selectedOption=null),this.p.options.forEach((e=>{e.classList.contains("pickle-select__option--selected")&&(e.classList.remove("pickle-select__option--selected"),e.removeAttribute("aria-selected"))}))}fireChangeEvent(e={}){const t=this.p.get();let i=this.p.getText();if(this.p.isMultiple||t||(i=""),!e.text&&t&&!this.p.isMultiple){const i=this.p.sourceOptions.find((e=>!e.isGroupLabel&&e.value===t));i&&(e=i)}if(this.p.onChange&&this.p.onChange(t,{originalEvent:null,text:i,element:this.p}),this.p.originalSelect.dispatchEvent(new Event("change",{bubbles:!0})),this.p.eventSystem.emit("change",{value:t,text:i}),this.p.liveRegion&&!this.p.isMultiple&&e.text){this.p.clearLiveRegionTimeouts();const t=this.p.liveRegion,i=this.p.l10n.selected.replace("{text}",e.text);t.textContent="",this.p._selectionTimeout=setTimeout((()=>{t&&t.parentNode&&(t.textContent=i)}),16)}this.p.utils.log("log","Selection changed:",{value:t,text:i})}}
    class PickleUtils{p=null;constructor(e){this.p=e}generateID(){return`pckl-${this.p.constructor.instances.size+1}-${Math.random().toString(16).slice(2,8)}`}getElement(e){if("string"==typeof e){e.startsWith("#")&&(e=e.slice(1));const t=document.getElementById(e);return t instanceof HTMLSelectElement?t:null}return e instanceof HTMLSelectElement?e:null}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}log(e="log",...t){if(this.p.debug){const r="color: #33a383; font-weight: bold;";switch(e){case"info":return void console.info("%c[Pickle]",r,...t);case"warn":return void console.warn("%c[Pickle]",r,...t);case"error":return void console.error("%c[Pickle]",r,...t);default:return void console.log("%c[Pickle]",r,...t)}}}closeOtherInstances(){this.p.constructor.instances.forEach((e=>{e!==this.p&&e.isOpen&&e.close()}))}getOnChange(e){if(e&&"function"!=typeof e)throw this.p.debug&&this.p.utils.log("error","onChange must be a function"),new Error("onChange must be a function",{cause:new Error("Invalid onChange callback")});return e}getDefaultValue(e){if(null===e)return null;if("string"==typeof e)return e;if(this.p.isMultiple&&Array.isArray(e))return e.every((e=>"string"==typeof e))?e:[];throw this.p.debug&&this.p.utils.log("error","defaultValue must be a string or an array of strings"),new Error("defaultValue must be a string or an array of strings",{cause:new Error("Invalid defaultValue")})}}
    class Pickle{static instances=new Set;static defaultStrings={placeholder:"Select an option",searchPlaceholder:"Search options...",selectionCleared:"Selection cleared",selected:"Selected: {text}",multipleSelection:"{count} options selected",ariaLabel:"Select an option"};#e=[];#t=[];#i="";#s=0;constructor(e,t={}){this.init(e,t)}init(e,t={}){const{onChange:i=null,defaultValue:s=null,theme:l="default",width:n="100%",height:r=null,disabled:a=!1,required:o=!1,searchable:h=!1,fuzzySearch:c=!1,multiple:d=!1,debug:u=!1,l10n:p=null}=t;if(!Pickle.instances.has(this)){if(this.utils=new PickleUtils(this),this.debug=Boolean(u),this.originalSelect=this.utils.getElement(e),!this.originalSelect){const t=new Error("Invalid select element provided",{cause:new Error(`Element ${e} not found`)});throw this.debug&&this.utils.log("error",t.message),t}try{this.id=this.originalSelect.id||this.utils.generateID(),this.l10n={...Pickle.defaultStrings,...p},this.isOpen=!1,this.selectedOption=null,this.selectedOptions=new Set,this.focusedOption=null,this.focusedIndex=-1,this.searchInput=null,this.options=[],this.optionsList=null,this.isMultiple=this.originalSelect.multiple||Boolean(d),this.originalSelect.multiple=this.isMultiple,this.onChange=this.utils.getOnChange(i),this.defaultValue=this.utils.getDefaultValue(s),this.theme=l,this.width=n,this.height=r,this.disabled=Boolean(a),this.required=Boolean(o),this.searchable=Boolean(h),this.fuzzySearch=Boolean(c),this.domManager=new PickleDOM(this),this.keyboardNavigation=new PickleNavigation(this),this.eventSystem=new PickleEvents(this),this.optionManager=new PickleOptions(this),this.optionManager.cacheOptions(),this.domManager.createCustomSelect(),this.optionManager.buildOptions(),this.eventSystem.attachEventListeners(),this.disabled&&this.setDisabled(!0),this.searchable&&this.setSearchable(!0),Pickle.instances.add(this),this.utils.log("log","Pickle initialized successfully")}catch(e){throw u&&this.utils.log("error","Initialization failed:",e),e}}}open(){if(!this.wrapper||this.disabled)return;const e=this.eventSystem.emit("beforeOpen");e&&!e.defaultPrevented&&(this.utils.closeOtherInstances(),this.isOpen=!0,this.dropdown.classList.add("pickle-select__dropdown--open"),this.trigger.setAttribute("aria-expanded","true"),this.domManager.clearFocusedOption(),this.searchInput&&setTimeout((()=>{this.searchInput&&this.searchInput.focus()}),0),this.domManager.focusSelectedOption(),this.eventSystem.emit("open"),this.utils.log("log","Dropdown opened"))}close(){if(!this.wrapper||!this.isOpen)return;const e=this.eventSystem.emit("beforeClose");e&&!e.defaultPrevented&&(this.isOpen=!1,this.dropdown.classList.remove("pickle-select__dropdown--open"),this.trigger.setAttribute("aria-expanded","false"),this.trigger.removeAttribute("aria-activedescendant"),this.focusedIndex=-1,this.domManager.clearFocusedOption(),this.searchInput&&(this.searchInput.value="",this.optionManager.handleSearch({target:{value:""}})),this.trigger.focus(),this.eventSystem.emit("close"),this.utils.log("log","Dropdown closed"))}toggle(){this.isOpen?this.close():this.open()}get(){return this.isMultiple?Array.from(this.selectedOptions):this.originalSelect.value}set(e){this.clear(!0);const t=Array.isArray(e)?e:[e];this.isMultiple?t.forEach((e=>this.optionManager.toggleOptionSelection(e,null,!0))):t.length>0&&this.optionManager.toggleOptionSelection(t[0],null,!0),this.optionManager.fireChangeEvent()}clear(e=!1){if(this.isMultiple?(Array.from(this.originalSelect.options).forEach((e=>e.selected=!1)),this.selectedOptions.clear()):(this.originalSelect.value="",this.optionManager.clearSelectedOption()),this.domManager.refreshSelectedStateInUI(),this.domManager.updateValueDisplay(),!e){const e=this.get(),t=this.isMultiple?[]:"";if(this.onChange&&this.onChange(e,{originalEvent:null,text:t,element:this}),this.originalSelect.dispatchEvent(new Event("change",{bubbles:!0})),this.eventSystem.emit("change",{value:e,text:t}),this.utils.log("log","Selection changed:",{value:e,text:t}),this.liveRegion){this.clearLiveRegionTimeouts();const e=this.liveRegion,t=this.l10n.selectionCleared;e.textContent="",this._liveRegionTimeout=setTimeout((()=>{e&&e.parentNode&&(e.textContent=t)}),80)}}}clearLiveRegionTimeouts(){this._liveRegionTimeout&&(clearTimeout(this._liveRegionTimeout),this._liveRegionTimeout=null),this._selectionTimeout&&(clearTimeout(this._selectionTimeout),this._selectionTimeout=null)}get sourceOptions(){return this.#e}get visibleOptions(){return this.#t}get currentSearchTerm(){return this.#i}get cnt(){return this.#s}setSourceOptions(e){this.#e=e}setVisibleOptions(e){this.#t=e}setCurrentSearchTerm(e){this.#i=e}incrementCounter(){return++this.#s}isDisabled(){return!!this.disabled}isRequired(){return!!this.required}isSearchable(){return!!this.searchable}loadMoreOptions(){return this.optionManager.loadMoreOptions()}getOption(){return this.isMultiple?this.options.filter((e=>this.selectedOptions.has(e.getAttribute("data-value")))):this.selectedOption}getText(){if(this.isMultiple)return Array.from(this.selectedOptions).map((e=>{const t=this.#e.find((t=>!t.isGroupLabel&&t.value===e));return t?t.text:""}));if(!this.originalSelect.value)return"";if(this.selectedOption)return this.selectedOption.textContent;const e=this.#e.find((e=>!e.isGroupLabel&&e.value===this.originalSelect.value));return e?e.text:""}getOptions(){return this.#e.filter((e=>!e.isGroupLabel)).map((e=>({value:e.value,text:e.text,disabled:e.disabled,selected:this.isMultiple?this.selectedOptions.has(e.value):this.originalSelect.value===e.value})))}addOption(e,t,i=-1,s=!1){const l=new Option(t,e);l.disabled=s,-1===i||i>=this.originalSelect.options.length?this.originalSelect.appendChild(l):this.originalSelect.insertBefore(l,this.originalSelect.options[i]),this.optionManager.cacheOptions(),this.domManager.refreshDropdownView(),this.eventSystem.emit("optionAdded",{value:e,text:t,index:i,disabled:s}),this.utils.log("log","Option added:",{value:e,text:t,index:i,disabled:s})}removeOption(e){const t=this.isMultiple?this.selectedOptions.has(e):this.get()===e,i=Array.from(this.originalSelect.options).find((t=>t.value===e));i&&(i.remove(),t&&(this.isMultiple?(this.selectedOptions.delete(e),this.domManager.updateValueDisplay()):this.clear()),this.optionManager.cacheOptions(),this.domManager.refreshDropdownView(),this.eventSystem.emit("optionRemoved",{value:e}),this.utils.log("log","Option removed:",e))}updateOptions(e){const t=this.get();this.originalSelect.innerHTML="",e.forEach((({value:e,text:t,disabled:i=!1})=>{const s=new Option(t,e);s.disabled=i,this.originalSelect.appendChild(s)})),this.optionManager.cacheOptions(),this.domManager.refreshDropdownView(),this.set(t),this.eventSystem.emit("optionsUpdated",{options:e})}setDisabled(e=!0){this.disabled=e,this.originalSelect.disabled=e,e?(this.trigger.setAttribute("aria-disabled","true"),this.trigger.removeAttribute("tabindex"),this.wrapper.classList.add("pickle-select--disabled"),this.close()):(this.trigger.removeAttribute("aria-disabled"),this.trigger.setAttribute("tabindex","0"),this.wrapper.classList.remove("pickle-select--disabled")),this.eventSystem.emit("disabledChanged",{disabled:e})}setSearchable(e=!0){this.searchable=e,e&&!this.searchInput?this.domManager.createSearchInput():!e&&this.searchInput&&(this.searchInput.remove(),this.searchInput=null)}setTheme(e){const t=this.theme;if(e&&e!==t){if(this.theme=e,this.wrapper){const t="pickle-select--theme-";Array.from(this.wrapper.classList).forEach((e=>{e.startsWith(t)&&this.wrapper.classList.remove(e)})),this.wrapper.classList.add(`${t}${e}`),this.wrapper.setAttribute("data-pickle-theme",e)}if(this.domManager&&"function"==typeof this.domManager.refreshDropdownView)try{this.domManager.refreshDropdownView()}catch(e){this.utils.log("error","Theme refresh failed, destroy+reinit may be required",e)}this.eventSystem&&this.eventSystem.emit("themeChanged",{theme:e,previous:t})}}setRequired(e=!0){this.required=!!e,e?(this.trigger.setAttribute("aria-required","true"),this.wrapper.classList.add("pickle-select--required")):(this.trigger.removeAttribute("aria-required"),this.wrapper.classList.remove("pickle-select--required"))}getValidationState(){const e=this.originalSelect.validity;return{valid:e.valid,valueMissing:e.valueMissing,customError:e.customError,validationMessage:this.originalSelect.validationMessage}}setCustomValidity(e){this.originalSelect.setCustomValidity(e),e?(this.wrapper.classList.add("pickle-select--invalid"),this.trigger.setAttribute("aria-invalid","true")):(this.wrapper.classList.remove("pickle-select--invalid"),this.trigger.removeAttribute("aria-invalid"))}isElementOpen(){return this.isOpen}destroy(){Pickle.instances.has(this)&&(Pickle.instances.delete(this),this.clearLiveRegionTimeouts(),this.handleDocumentClick&&(document.removeEventListener("click",this.handleDocumentClick),this.handleDocumentClick=null),this.wrapper&&(this.eventSystem.emit("destroyed"),this.wrapper.parentNode&&this.wrapper.remove(),this.wrapper=null),this.originalSelect&&this.originalSelect.style&&(this.originalSelect.style.display=""),this.originalSelect=null,this.trigger=null,this.dropdown=null,this.options=null,this.selectedOption=null,this.selectedOptions=null,this.focusedOption=null,this.liveRegion=null,this.label=null,this.searchInput=null)}}
    return Pickle;
});