UNPKG

@flexilla/flexilla

Version:

A set of unstyled interactive components for building interactive, and customizable user interfaces. Open-Source

1 lines 113 kB
(function(x,te){typeof exports=="object"&&typeof module<"u"?te(exports):typeof define=="function"&&define.amd?define(["exports"],te):(x=typeof globalThis<"u"?globalThis:x||self,te(x["@flexilla/flexilla"]={}))})(this,function(x){"use strict";var te=Object.defineProperty,It=(t,e,i)=>e in t?te(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,B=(t,e,i)=>It(t,typeof e!="symbol"?e+"":e,i);const xe=(t,e=document.body)=>e.querySelector(t),Q=(t,e=document.body)=>{const i=ie(t,e);return Array.from(i).find(n=>n.parentElement===e)},ie=(t,e=document.body)=>Array.from(e.querySelectorAll(t)),Tt=(t,e,i)=>{const n=new CustomEvent(e,{detail:i});t.dispatchEvent(n)},Ct=({container:t,attributeToWatch:e,onChildAdded:i})=>{const n=new MutationObserver(o=>{for(const s of o)if(s.type==="childList"&&Array.from(s.addedNodes).some(a=>a instanceof HTMLElement&&a.hasAttribute(e))){i();break}});return n.observe(t,{childList:!0}),()=>{n.disconnect()}},Ye=t=>{const e=Q("[data-accordion-trigger]",t),i=Q("[data-accordion-content]",t),n=t.hasAttribute("data-default-open");if(!(e instanceof HTMLButtonElement))throw new Error("The element does't have a Valid Trigger");if(!(i instanceof HTMLDivElement))throw new Error("No Valid Content Element");const o=t.getAttribute("data-accordion-value")??"",s=e.getAttribute("aria-expanded")==="true";return{accordionTriggerElement:e,accordionContentElement:i,accordionItemValue:o,isItemExpanded:s,defaultOpened:n}},$t=({element:t,callback:e,type:i,keysCheck:n})=>{const o=getComputedStyle(t),s=o.transition;if(s!=="none"&&s!==""&&!n.includes(s)){const a="transitionend",r=()=>{t.removeEventListener(a,r),e()};t.addEventListener(a,r,{once:!0})}else e()},Lt=({element:t,callback:e})=>{$t({element:t,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},Oe=(t,e)=>{t.setAttribute("aria-hidden",e==="open"?"false":"true"),t.setAttribute("data-state",e)},xt=(t,e="close",i="0px")=>{t.style.height=e==="open"?"auto":i,Oe(t,e)},Ot=t=>{if(t.getAttribute("data-state")==="open")return;Oe(t,"open");const e=t.scrollHeight;t.style.height=`${e}px`,Lt({element:t,callback:()=>{t.getAttribute("data-state")==="open"&&(t.style.height="auto")}})},St=(t,e="0px")=>{t.getAttribute("data-state")!=="close"&&(t.style.height=`${t.scrollHeight}px`,t.offsetHeight,t.style.height=e,Oe(t,"close"))},At=(t,e,i)=>{const n=ie(":scope > [data-accordion-item]",i),o=t.parentElement;if(!n.includes(o))return null;const s=n.indexOf(o),a=e?s-1:s+1,r=n[a]??(e?n[n.length-1]:n[0]),l=Q(":scope > [data-accordion-trigger]",r);return l instanceof HTMLElement?l:null},kt=(t,e)=>{if(!(document.activeElement instanceof HTMLElement))return;const i=document.activeElement,n=i.parentElement;if(!(!i.matches("[data-accordion-trigger]")||!(n!=null&&n.matches("[data-accordion-item]"))||n.parentElement!==e)&&(t.key==="ArrowUp"||t.key==="ArrowDown")){t.preventDefault();const o=At(i,t.key==="ArrowUp",e);o&&o.focus()}},Se=(t,e)=>{t.ariaExpanded=e==="open"?"true":"false"},Mt=({collapsible:t,triggerElement:e,state:i,onInit:n})=>{n?(xt(t,i),Se(e,i)):i==="open"?(Se(e,"open"),Ot(t)):(Se(e,"close"),St(t))};let Ce=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,i,n){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,i)||(window.$flexillaInstances[e].push({element:i,instance:n}),n)}static getInstance(e,i){var n,o;return this.initGlobalRegistry(),(o=(n=window.$flexillaInstances[e])==null?void 0:n.find(s=>s.element===i))==null?void 0:o.instance}static removeInstance(e,i){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(n=>n.element!==i))}};const ne=class{constructor(e,i={}){if(B(this,"accordionEl"),B(this,"options"),B(this,"items"),B(this,"eventListeners",[]),B(this,"cleanupObserver",null),B(this,"handleKeyEvents",o=>{kt(o,this.accordionEl)}),B(this,"reload",()=>{this.cleanup(),this.items=ie("[data-accordion-item]",this.accordionEl).filter(o=>o.parentElement&&o.parentElement===this.accordionEl),this.initAccordion()}),B(this,"triggerItemState",(o,s,a)=>{this.options.preventClosingAll&&(this.options.accordionType==="single"&&a||this.options.accordionType==="multiple"&&this.items.filter(r=>r.getAttribute("data-state")==="open").length===1&&a)||(this.setItemState(o,s),this.options.accordionType==="single"&&this.closeOther({current:o}),this.dispatchedEvent(o))}),B(this,"cleanup",()=>{this.accordionEl&&(this.items.forEach(o=>{o&&o.hasAttribute("data-state")&&o.removeAttribute("data-state")}),this.eventListeners.forEach(({element:o,type:s,listener:a})=>{o&&o.removeEventListener&&o.removeEventListener(s,a)}),this.cleanupObserver&&(this.cleanupObserver(),this.cleanupObserver=null),this.eventListeners=[],this.items=[],Ce.removeInstance("accordion",this.accordionEl))}),this.accordionEl=typeof e=="string"?xe(e):e,!this.accordionEl)throw new Error(`Accordion element not found: ${typeof e=="string"?`No element matches selector "${e}"`:"Provided HTMLElement is null or undefined"}`);const n=Ce.getInstance("accordion",this.accordionEl);if(n)return n;this.options={accordionType:this.accordionEl.dataset.accordionType||i.accordionType||"single",preventClosingAll:this.accordionEl.hasAttribute("data-prevent-closing-all")||i.preventClosingAll||!1,defaultValue:this.accordionEl.dataset.defaultValue||i.defaultValue||"",allowCloseFromContent:this.accordionEl.hasAttribute("data-allow-close-from-content")||i.allowCloseFromContent||!1,onChangeItem:i.onChangeItem},this.items=ie("[data-accordion-item]",this.accordionEl).filter(o=>o.parentElement&&o.parentElement===this.accordionEl),this.initAccordion()}initAccordion(){if(!this.accordionEl)return;const{accordionType:e,defaultValue:i,preventClosingAll:n}=this.options;let o=Q(`[data-accordion-item][data-accordion-value="${i}"]`,this.accordionEl);if(e==="single")this.options.preventClosingAll&&!(o instanceof HTMLElement)&&(o=this.items[0]),this.closeOther({current:o}),o&&this.setItemState(o,"open",!0);else{this.closeAll(!0);const s=this.items.some(a=>a.getAttribute("data-state")==="open");if(n&&!s)this.setItemState(this.items[0],"open",!0);else{const a=this.items.filter(r=>r.getAttribute("data-state")==="open");for(const r of a)this.setItemState(r,"open",!0)}}this.addEventListeners(),this.accordionEl.addEventListener("keydown",this.handleKeyEvents),this.eventListeners.push({element:this.accordionEl,type:"keydown",listener:this.handleKeyEvents}),Ce.register("accordion",this.accordionEl,this),this.cleanupObserver=Ct({container:this.accordionEl,attributeToWatch:"data-accordion-item",onChildAdded:this.reload})}destroy(){this.accordionEl&&(this.items.forEach(e=>{e&&e.hasAttribute("data-state")&&e.removeAttribute("data-state")}),this.eventListeners.forEach(({element:e,type:i,listener:n})=>{e&&e.removeEventListener&&e.removeEventListener(i,n)}),this.eventListeners=[],this.items=[],Ce.removeInstance("accordion",this.accordionEl),this.cleanupObserver&&(this.cleanupObserver(),this.cleanupObserver=null))}setItemState(e,i,n){e.setAttribute("data-state",i);const{accordionContentElement:o,accordionTriggerElement:s}=Ye(e);Mt({collapsible:o,triggerElement:s,state:i,onInit:n})}closeOther({current:e,onInit:i}){this.items.forEach(n=>{n!==e&&(i&&this.options.accordionType==="multiple"?n.hasAttribute("data-default-open")?this.setItemState(n,"open"):this.setItemState(n,"close"):this.setItemState(n,"close"))})}closeAll(e){this.closeOther({onInit:e})}dispatchedEvent(e){const{accordionContentElement:i,accordionTriggerElement:n,isItemExpanded:o,accordionItemValue:s}=Ye(e);this.options.onChangeItem&&this.options.onChangeItem({expandedItem:{accordionItem:this.accordionEl,trigger:n,content:i,value:s,isExpanded:o}}),Tt(this.accordionEl,"change-item",{targetElement:{trigger:n,content:i,isExpanded:o},items:this.items})}addEventListeners(){this.items.forEach(e=>{const i=xe("[data-accordion-trigger]",e),n=xe("[data-accordion-content]",e),o=()=>this.triggerItemState(e,"close",!0),s=a=>{a.preventDefault();const r=e.getAttribute("data-state")==="open";let l=r?"close":"open";this.triggerItemState(e,l,r)};i&&(i.addEventListener("click",s),this.eventListeners.push({element:i,type:"click",listener:s})),this.options.allowCloseFromContent&&n&&(n.addEventListener("click",o),this.eventListeners.push({element:n,type:"click",listener:o}))})}show(e){const i=Q(`[data-accordion-item][data-accordion-value="${e}"]`,this.accordionEl);!i||i.getAttribute("data-state")==="open"||(this.options.accordionType==="single"&&this.closeOther({current:i}),this.setItemState(i,"open"),this.dispatchedEvent(i))}hide(e){const i=Q(`[data-accordion-item][data-accordion-value="${e}"]`,this.accordionEl);if(!(!i||i.getAttribute("data-state")!=="open")){if(this.options.preventClosingAll){const n=this.items.filter(o=>o.getAttribute("data-state")==="open");if(n.length===1&&i===n[0])return}this.setItemState(i,"close"),this.dispatchedEvent(i)}}};B(ne,"autoInit",(t="[data-fx-accordion]")=>{const e=ie(t,document.documentElement);for(const i of e)new ne(i)}),B(ne,"init",(t,e={})=>new ne(t,e));let Je=ne;var Ht=Object.defineProperty,Dt=(t,e,i)=>e in t?Ht(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,Y=(t,e,i)=>Dt(t,typeof e!="symbol"?e+"":e,i);let Ae=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,i,n){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,i)||(window.$flexillaInstances[e].push({element:i,instance:n}),n)}static getInstance(e,i){var n,o;return this.initGlobalRegistry(),(o=(n=window.$flexillaInstances[e])==null?void 0:n.find(s=>s.element===i))==null?void 0:o.instance}static removeInstance(e,i){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(n=>n.element!==i))}static setup(e){e.setAttribute("data-fx-component","fx")}static initialized(e){e.setAttribute("data-component-initialized","initialized")}};const ke=class bt{constructor(e,i,n){if(Y(this,"textareaElement"),Y(this,"minHeight"),Y(this,"maxHeight"),Y(this,"boundAutoresize"),Y(this,"debouncedResize"),Y(this,"cleanup",()=>{this.textareaElement&&(this.textareaElement.removeEventListener("input",this.boundAutoresize),window.removeEventListener("resize",this.debouncedResize),Ae.removeInstance("auto-resize-area",this.textareaElement),this.debouncedResize&&clearTimeout(this.debouncedResize),this.boundAutoresize=null,this.debouncedResize=null,this.textareaElement=null,this.minHeight=null,this.maxHeight=null)}),this.textareaElement=typeof e=="string"?document.querySelector(`${e}`):e,!(this.textareaElement instanceof HTMLTextAreaElement))throw new Error(`Invalid textarea element: The provided ${typeof e=="string"?'selector "'+e+'"':"element"} does not reference a valid HTMLTextAreaElement`);const o=Ae.getInstance("auto-resize-area",this.textareaElement);if(o)return o;this.minHeight=Number(this.textareaElement.getAttribute("data-min-height"))||i||20,this.maxHeight=Number(this.textareaElement.getAttribute("data-max-height"))||n||500,this.boundAutoresize=this.autoresizeTextarea.bind(this),this.debouncedResize=this.debounce(this.boundAutoresize,100),this.autoresizeTextarea(),this.textareaElement.addEventListener("input",this.boundAutoresize,!1),window.addEventListener("resize",this.debouncedResize),Ae.register("auto-resize-area",this.textareaElement,this)}autoresizeTextarea(){this.textareaElement.style.height="auto",this.textareaElement.style.height=`${this.textareaElement.scrollHeight}px`;const e=Math.min(Math.max(this.textareaElement.scrollHeight,this.minHeight),this.maxHeight);this.textareaElement.style.height=`${e}px`}debounce(e,i){let n;return function(...o){const s=()=>{clearTimeout(n),e(...o)};clearTimeout(n),n=setTimeout(s,i)}}static autoInit(e="[data-fx-autoresize]"){const i=Array.from(document.querySelectorAll(e));if(i.length>0)for(const n of i)new bt(n)}};Y(ke,"init",t=>new ke(t));let Qe=ke;var Pt=Object.defineProperty,Rt=(t,e,i)=>e in t?Pt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,W=(t,e,i)=>Rt(t,typeof e!="symbol"?e+"":e,i);const Me=(t,e=document.body)=>e.querySelector(t),Nt=(t,e=document.body)=>Array.from(e.querySelectorAll(t)),He=(t,e,i)=>{const n=new CustomEvent(e,{detail:i});t.dispatchEvent(n)},zt=({element:t,callback:e,type:i,keysCheck:n})=>{const o=getComputedStyle(t),s=o.transition;if(s!=="none"&&s!==""&&!n.includes(s)){const a="transitionend",r=()=>{t.removeEventListener(a,r),e()};t.addEventListener(a,r,{once:!0})}else e()},Wt=({element:t,callback:e})=>{zt({element:t,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},De=(t,e)=>{t.setAttribute("aria-hidden",e==="open"?"false":"true"),t.setAttribute("data-state",e)},Ft=(t,e="close",i="0px")=>{t.style.height=e==="open"?"auto":i,De(t,e)},Bt=t=>{if(t.getAttribute("data-state")==="open")return;De(t,"open");const e=t.scrollHeight;t.style.height=`${e}px`,Wt({element:t,callback:()=>{t.getAttribute("data-state")==="open"&&(t.style.height="auto")}})},Gt=(t,e="0px")=>{t.getAttribute("data-state")!=="close"&&(t.style.height=`${t.scrollHeight}px`,t.offsetHeight,t.style.height=e,De(t,"close"))};let Pe=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,i,n){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,i)||(window.$flexillaInstances[e].push({element:i,instance:n}),n)}static getInstance(e,i){var n,o;return this.initGlobalRegistry(),(o=(n=window.$flexillaInstances[e])==null?void 0:n.find(s=>s.element===i))==null?void 0:o.instance}static removeInstance(e,i){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(n=>n.element!==i))}};const se=class{constructor(e,i={},n){W(this,"element"),W(this,"defaultState"),W(this,"collapseId"),W(this,"collapseTrigger"),W(this,"options"),W(this,"closeHeight"),W(this,"show",()=>{var a,r;He(this.element,"before-expand",{isExpanded:!1}),this.collapseTrigger&&(this.collapseTrigger.ariaExpanded="true"),Bt(this.element),(r=(a=this.options).onToggle)==null||r.call(a,{isExpanded:!0}),He(this.element,"expanded",{isExpanded:!1})}),W(this,"hide",()=>{var a,r;this.collapseTrigger&&(this.collapseTrigger.ariaExpanded="false"),Gt(this.element,`${this.closeHeight}px`),(r=(a=this.options).onToggle)==null||r.call(a,{isExpanded:!1}),He(this.element,"collapsed",{isExpanded:!1})}),W(this,"toggle",()=>{var a,r;const l=this.element.dataset.state==="open";l?this.hide():this.show(),(r=(a=this.options).onToggle)==null||r.call(a,{isExpanded:!l})}),W(this,"setCloseHeight",a=>{this.closeHeight=a});let o;if(o=typeof e=="string"?Me(`${e}`):e,typeof e=="string"&&!o)throw new Error(`No element found matching selector: ${e}`);if(!(o instanceof HTMLElement))throw new Error("Provided element must be a valid HTMLElement or selector");this.element=o;const s=Pe.getInstance("collapse",this.element);if(s)return s;this.collapseId=this.element.getAttribute("id"),this.collapseTrigger=Me(`${n}`)||Me(`[data-collapse-trigger][data-target*='${this.collapseId}']`),this.options=i,this.defaultState=this.element.dataset.state?this.element.dataset.state==="open"?"open":"close":this.options.defaultState||"close",this.closeHeight=this.element.dataset.closeHeight?parseInt(this.element.dataset.closeHeight||"0"):this.options.closeHeight||0,this.initCollapse(),Pe.register("collapse",this.element,this)}initCollapse(){this.collapseTrigger instanceof HTMLElement&&(this.collapseTrigger.addEventListener("click",this.toggle),this.collapseTrigger.ariaExpanded=this.defaultState==="open"?"true":"false"),Ft(this.element,this.defaultState,`${this.closeHeight}px`)}cleanup(){this.collapseTrigger instanceof HTMLElement&&this.collapseTrigger.removeEventListener("click",this.toggle),Pe.removeInstance("collapse",this.element)}};W(se,"init",(t,e={},i)=>new se(t,e,i)),W(se,"autoInit",(t="[data-fx-collapse]")=>{const e=Nt(t);for(const i of e)new se(i)});let Ze=se;var qt=Object.defineProperty,Kt=(t,e,i)=>e in t?qt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,J=(t,e,i)=>Kt(t,typeof e!="symbol"?e+"":e,i);let Re=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,i,n){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,i)||(window.$flexillaInstances[e].push({element:i,instance:n}),n)}static getInstance(e,i){var n,o;return this.initGlobalRegistry(),(o=(n=window.$flexillaInstances[e])==null?void 0:n.find(s=>s.element===i))==null?void 0:o.instance}static removeInstance(e,i){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(n=>n.element!==i))}static setup(e){e.setAttribute("data-fx-component","fx")}static initialized(e){e.setAttribute("data-component-initialized","initialized")}};const oe=class{constructor(e,i){J(this,"rangeContainer"),J(this,"rangeElement"),J(this,"indicatorElement"),J(this,"indicatorClassname"),J(this,"updateIndicatorSize",()=>{let a="0%";const r=(parseFloat(this.rangeElement.value)-parseFloat(this.rangeElement.min))/(parseFloat(this.rangeElement.max)-parseFloat(this.rangeElement.min))*100;r<14&&r>0?(a=`${r+20/100}%`,console.log(a)):a=`${r}%`,this.indicatorElement.style.width=`${a}`});var n;const o=typeof e=="string"?document.querySelector(`${e}`):e;if(!(o instanceof HTMLElement))throw new Error("No valide container element");if(this.rangeContainer=o,this.rangeElement=this.rangeContainer.querySelector("[data-input-range]"),!(this.rangeElement instanceof HTMLInputElement))throw new Error("The provided element doesn't have a valid HTMLInputElement. Make sure to add data-input-range to the input element");const s=Re.getInstance("custom-range",this.rangeContainer);if(s)return s;this.indicatorClassname=(i==null?void 0:i.split(" "))||((n=this.rangeContainer.dataset.rangeIndicator)==null?void 0:n.split(" "))||[],this.indicatorElement=this.initIndicator(),this.initRange(),this.updateIndicatorSize(),Re.register("custom-range",this.rangeContainer,this)}initIndicator(){const e=document.createElement("span");return e.style.position="absolute",e.style.pointerEvents="none",this.indicatorClassname.length>0&&(e.classList.add(...this.indicatorClassname),this.rangeContainer.append(e)),e}initRange(){this.rangeElement.addEventListener("input",this.updateIndicatorSize)}cleanup(){this.rangeElement.removeEventListener("input",this.updateIndicatorSize),Re.removeInstance("custom-range",this.rangeContainer)}};J(oe,"autoInit",(t="[data-fx-custom-range]")=>{const e=Array.from(document.querySelectorAll(t));for(const i of e)new oe(i)}),J(oe,"init",(t,e)=>new oe(t,e));let et=oe;var jt=Object.defineProperty,Vt=(t,e,i)=>e in t?jt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,O=(t,e,i)=>Vt(t,typeof e!="symbol"?e+"":e,i);const Ut=(t,e=document.body)=>e.querySelector(t),Ne=(t,e=document.body)=>Array.from(e.querySelectorAll(t)),_t=({element:t,callback:e,type:i,keysCheck:n})=>{const o=getComputedStyle(t),s=o.transition;if(s!=="none"&&s!==""&&!n.includes(s)){const a="transitionend",r=()=>{t.removeEventListener(a,r),e()};t.addEventListener(a,r,{once:!0})}else e()},$e=({element:t,callback:e})=>{_t({element:t,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})};let ze=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,i,n){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,i)||(window.$flexillaInstances[e].push({element:i,instance:n}),n)}static getInstance(e,i){var n,o;return this.initGlobalRegistry(),(o=(n=window.$flexillaInstances[e])==null?void 0:n.find(s=>s.element===i))==null?void 0:o.instance}static removeInstance(e,i){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(n=>n.element!==i))}static setup(e){e.setAttribute("data-fx-component","fx")}static initialized(e){e.setAttribute("data-component-initialized","initialized")}};const ae=class{constructor(e,i,n,o){O(this,"dismissibleElement"),O(this,"dismissButtons"),O(this,"restoreButtons"),O(this,"action"),O(this,"onDismiss"),O(this,"onRestore"),O(this,"parentElement"),O(this,"previousSibling"),O(this,"originalDisplay"),O(this,"hideFromScreen",()=>{var r;this.dismissibleElement.style.display="none",(r=this.onDismiss)==null||r.call(this)}),O(this,"removeFromDom",()=>{var r,l;(r=this.onDismiss)==null||r.call(this),(l=this.dismissibleElement.parentElement)==null||l.removeChild(this.dismissibleElement)}),O(this,"showOnScreen",()=>{var r;this.dismissibleElement.style.display=this.originalDisplay,this.dismissibleElement.setAttribute("aria-hidden","false"),this.dismissibleElement.setAttribute("data-state","visible"),(r=this.onRestore)==null||r.call(this)}),O(this,"restoreToDom",()=>{var r;this.parentElement&&(this.previousSibling&&this.previousSibling.nextSibling?this.parentElement.insertBefore(this.dismissibleElement,this.previousSibling.nextSibling):this.parentElement.appendChild(this.dismissibleElement),this.dismissibleElement.setAttribute("aria-hidden","false"),this.dismissibleElement.removeAttribute("data-hidden"),this.dismissibleElement.setAttribute("data-state","visible"),(r=this.onRestore)==null||r.call(this))}),O(this,"dismiss",()=>{switch(this.action){case"hide-from-screen":this.dismissibleElement.setAttribute("aria-hidden","true"),this.dismissibleElement.setAttribute("data-state","hidden"),$e({element:this.dismissibleElement,callback:this.hideFromScreen});break;default:this.dismissibleElement.setAttribute("data-hidden",""),this.dismissibleElement.setAttribute("aria-hidden","true"),this.dismissibleElement.setAttribute("data-state","removed"),$e({element:this.dismissibleElement,callback:this.removeFromDom});break}}),O(this,"restore",()=>{switch(this.action){case"hide-from-screen":$e({element:this.dismissibleElement,callback:this.showOnScreen});break;default:$e({element:this.dismissibleElement,callback:this.restoreToDom});break}});const s=typeof e=="string"?Ut(e,document.body):e;if(!(s instanceof HTMLElement))throw new Error("Provided Element not a valid HTMLElement");this.dismissibleElement=s,this.action=i||this.dismissibleElement.dataset.action||"hide-from-screen",this.dismissButtons=Ne("[data-dismiss-btn]",this.dismissibleElement),this.restoreButtons=Ne("[data-restore-btn]",document.body),this.onDismiss=n,this.onRestore=o,this.parentElement=this.dismissibleElement.parentElement,this.previousSibling=this.dismissibleElement.previousSibling,this.originalDisplay=this.dismissibleElement.style.display||getComputedStyle(this.dismissibleElement).display,this.dismissibleElement.setAttribute("aria-hidden","false");const a=ze.getInstance("dismissible",this.dismissibleElement);if(a)return a;this.setupDismissible(),ze.register("dismissible",this.dismissibleElement,this)}setupDismissible(){for(const e of this.dismissButtons)e.addEventListener("click",this.dismiss);for(const e of this.restoreButtons)e.addEventListener("click",this.restore)}cleanup(){for(const e of this.dismissButtons)e.removeEventListener("click",this.dismiss);for(const e of this.restoreButtons)e.removeEventListener("click",this.restore);ze.removeInstance("dismissible",this.dismissibleElement)}};O(ae,"autoInit",(t="[data-fx-dismissible]")=>{const e=Ne(t);for(const i of e)new ae(i)}),O(ae,"init",(t,e,i,n)=>new ae(t,e,i,n));let tt=ae;var Xt=Object.defineProperty,Yt=(t,e,i)=>e in t?Xt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,f=(t,e,i)=>Yt(t,typeof e!="symbol"?e+"":e,i),Jt=Object.defineProperty,Qt=(t,e,i)=>e in t?Jt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,S=(t,e,i)=>Qt(t,typeof e!="symbol"?e+"":e,i);const Zt="bottom",ei=({reference:t,popper:e})=>{if(!t||!e)throw new Error("Reference or popper element is null or undefined");const i=new WeakMap,n=a=>(i.has(a)||i.set(a,a.getBoundingClientRect()),i.get(a)),o=n(e),s=n(t);return{popperHeight:o.height,popperWidth:o.width,refHeight:s.height,refWidth:s.width,refLeft:s.left,refTop:s.top,refRight:s.right}},ti=(t,e,i,n)=>{const o=i,s=n-(i+e);return o>=(t-e)/2&&s>=(t-e)/2},ii=(t,e,i,n)=>(t-e)/2<=i&&i+t/2+e/2<=n,ni=(t,e,i,n,o)=>i>o-n?e()?window.innerHeight-o:i-o:t()?0:i+n,si=(t,e,i,n)=>t<=n&&i-t<=e,oi=(t,e,i,n)=>i<=n&&-t<=e,ai=(t,e,i,n,o,s)=>{const a=o-i-s,r=i-n,l=i+s-n+(o-i-s),h=a>=0?o-n:r>=0?i-n:i;return t()?0:e()?l:h},ri=(t,e,i,n)=>t<=i&&e-t-n>=t,li=(t,e)=>t>=e,hi=({placement:t,refWidth:e,refTop:i,refLeft:n,refHeight:o,popperWidth:s,popperHeight:a,windowHeight:r,windowWidth:l,offsetDistance:h})=>{const c=l-n-e,m=n,g=r-i-o,d=i,p=()=>ni(()=>oi(i,o,a,r),()=>si(i,o,a,r),i,o,a),v=()=>ai(()=>ri(n,l,s,e),()=>li(n,s),n,s,l,e),L=()=>ti(s,e,n,l)?n+e/2-s/2:v(),z=()=>ii(a,o,i,r)?i+o/2-a/2:p(),G=()=>n+s<=l?n:v(),H=()=>n+e-s>=0?n+e-s:v(),D=()=>i+a<=r?i:p(),Te=()=>i+o-a>=0?i+o-a:p();let C=0,$=0;const q=i-a-h,P=i+o+h,R=n-s-h,N=n+e+h,V=d>=a+h,U=g>=a+h,_=m>=s+h,X=c>=s+h;switch(t.startsWith("top")?$=V?q:U?P:Math.max(q,P):t.startsWith("bottom")?$=U?P:V?q:Math.max(P):t.startsWith("left")?C=_?R:X?N:Math.max(R,N):t.startsWith("right")&&(C=X?N:_?R:Math.max(N,R)),t){case"bottom":case"bottom-middle":case"top":case"top-middle":C=L();break;case"left":case"left-middle":case"right":case"right-middle":$=z();break;case"bottom-start":case"top-start":C=G();break;case"bottom-end":case"top-end":C=H();break;case"left-start":case"right-start":$=D();break;case"left-end":case"right-end":$=Te();break}return{x:C,y:$}};let ci=class{constructor(e,i,n={}){S(this,"reference"),S(this,"popper"),S(this,"offsetDistance"),S(this,"placement"),S(this,"disableOnResize"),S(this,"disableOnScroll"),S(this,"onUpdate"),S(this,"isWindowEventsRegistered"),S(this,"validateElements",()=>{if(!(this.reference instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(this.popper instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(typeof this.offsetDistance!="number")throw new Error("OffsetDistance must be a number")}),S(this,"setPopperStyleProperty",(c,m)=>{this.popper.style.setProperty("--fx-popper-placement-x",`${c}px`),this.popper.style.setProperty("--fx-popper-placement-y",`${m}px`)}),S(this,"setInitialStyles",()=>{this.popper.style.setProperty("--fx-popper-placement-x",""),this.popper.style.setProperty("--fx-popper-placement-y","")}),S(this,"initPlacement",()=>{var c;this.validateElements(),this.setInitialStyles();const m=window.innerWidth,g=window.innerHeight,{popperHeight:d,popperWidth:p,refHeight:v,refWidth:L,refLeft:z,refTop:G}=ei({reference:this.reference,popper:this.popper}),{x:H,y:D}=hi({placement:this.placement,refWidth:L,refTop:G,refLeft:z,popperWidth:p,refHeight:v,popperHeight:d,windowHeight:g,windowWidth:m,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(H,D),(c=this.onUpdate)==null||c.call(this,{x:H,y:D,placement:this.placement})}),S(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),S(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),S(this,"resetPosition",()=>{this.setInitialStyles()}),S(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),S(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});const{offsetDistance:o=10,placement:s=Zt,eventEffect:a={},onUpdate:r}=n;if(!(e instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(i instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(n.offsetDistance&&typeof n.offsetDistance!="number")throw new Error("OffsetDistance must be a number");const{disableOnResize:l,disableOnScroll:h}=a;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=i,this.offsetDistance=o,this.placement=s,this.disableOnResize=l||!1,this.disableOnScroll=h||!1,this.onUpdate=r}setOptions({placement:e,offsetDistance:i}){this.placement=e,this.offsetDistance=i||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}};var di=Object.defineProperty,mi=(t,e,i)=>e in t?di(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,w=(t,e,i)=>mi(t,typeof e!="symbol"?e+"":e,i);const pi=(t,e=document.body)=>e.querySelector(t),it=(t,e)=>{for(const[i,n]of Object.entries(e))t.setAttribute(i,n)},fi=({element:t,callback:e,type:i,keysCheck:n})=>{const o=getComputedStyle(t),s=o.transition;if(s!=="none"&&s!==""&&!n.includes(s)){const a="transitionend",r=()=>{t.removeEventListener(a,r),e()};t.addEventListener(a,r,{once:!0})}else e()},ui=({element:t,callback:e})=>{fi({element:t,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},gi=(t,e,i)=>{const n=new CustomEvent(e,{detail:i});t.dispatchEvent(n)},re=({state:t,trigger:e,popper:i})=>{const n=t==="open";it(i,{"data-state":t}),it(e,{"aria-expanded":`${n}`})};let vi=class{constructor({trigger:e,content:i,options:n={}}){w(this,"triggerElement"),w(this,"contentElement"),w(this,"triggerStrategy"),w(this,"placement"),w(this,"offsetDistance"),w(this,"preventFromCloseOutside"),w(this,"preventFromCloseInside"),w(this,"options"),w(this,"defaultState"),w(this,"popper"),w(this,"eventEffect"),w(this,"getElement",s=>typeof s=="string"?pi(s):s instanceof HTMLElement?s:void 0),w(this,"handleDocumentClick",s=>{this.contentElement.getAttribute("data-state")==="open"&&(!this.triggerElement.contains(s.target)&&!this.preventFromCloseInside&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(s.target)&&!this.contentElement.contains(s.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(s.target)&&!this.contentElement.contains(s.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(s.target)&&this.contentElement.contains(s.target)&&!this.preventFromCloseInside&&this.hide())}),w(this,"handleKeyDown",s=>{s.preventDefault(),this.triggerStrategy!=="hover"&&s.key==="Escape"&&this.contentElement.getAttribute("data-state")==="open"&&(this.preventFromCloseOutside||this.hide())}),w(this,"toggleStateOnClick",()=>{(this.contentElement.dataset.state||"close")==="close"?(this.show(),this.triggerStrategy==="hover"&&this.addEventOnMouseEnter()):this.hide()}),w(this,"hideOnMouseLeaseTrigger",()=>{setTimeout(()=>{this.contentElement.matches(":hover")||this.hide()},150)}),w(this,"hideOnMouseLeave",()=>{setTimeout(()=>{this.triggerElement.matches(":hover")||this.hide()},150)}),w(this,"addEventOnMouseEnter",()=>{this.triggerElement.addEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.addEventListener("mouseleave",this.hideOnMouseLeave)}),w(this,"showOnMouseEnter",()=>{this.show(),this.addEventOnMouseEnter()}),w(this,"setShowOptions",({placement:s,offsetDistance:a})=>{var r,l,h,c;this.popper.setOptions({placement:s,offsetDistance:a}),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(l=(r=this.options).beforeShow)==null||l.call(r),re({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(c=(h=this.options).onShow)==null||c.call(h)}),w(this,"setPopperOptions",({placement:s,offsetDistance:a})=>{this.popper.setOptions({placement:s,offsetDistance:a||this.offsetDistance})}),w(this,"setPopperTrigger",(s,a)=>{this.cleanup(),this.popper.setOptions({placement:a.placement||this.placement,offsetDistance:a.offsetDistance||this.offsetDistance}),this.triggerElement=s,this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}),w(this,"cleanup",()=>{this.triggerElement.removeEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.removeEventListener("mouseenter",this.showOnMouseEnter)});var o;if(this.contentElement=this.getElement(i),this.triggerElement=this.getElement(e),!(this.triggerElement instanceof HTMLElement))throw new Error("Trigger element must be a valid HTML element");if(!(this.contentElement instanceof HTMLElement))throw new Error("Content element must be a valid HTML element");this.options=n,this.triggerStrategy=this.options.triggerStrategy||"click",this.placement=this.options.placement||"bottom",this.offsetDistance=this.options.offsetDistance||6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||!1,this.defaultState=this.options.defaultState||"close",this.eventEffect=(o=this.options.popper)==null?void 0:o.eventEffect,this.popper=new ci(this.triggerElement,this.contentElement,{placement:this.placement,offsetDistance:this.offsetDistance,eventEffect:this.eventEffect}),this.initInstance()}onToggleState(e){var i,n;(n=(i=this.options).onToggle)==null||n.call(i,{isHidden:e})}show(){var e,i,n,o;this.popper.updatePosition(),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(i=(e=this.options).beforeShow)==null||i.call(e),re({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(o=(n=this.options).onShow)==null||o.call(n)}hide(){var e,i,n;let o=!1;gi(this.contentElement,"before-hide",{setExitAction:a=>{o=a}});const s=(n=(i=(e=this.options).beforeHide)==null?void 0:i.call(e))==null?void 0:n.cancelAction;o||s||(re({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerStrategy==="click"&&document.removeEventListener("click",this.handleDocumentClick),document.removeEventListener("keydown",this.handleKeyDown),this.triggerStrategy==="hover"&&(this.triggerElement.removeEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.removeEventListener("mouseleave",this.hideOnMouseLeave)),ui({element:this.contentElement,callback:()=>{var a,r;this.onToggleState(!0),this.popper.cleanupEvents(),(r=(a=this.options).onHide)==null||r.call(a)}}))}initInstance(){re({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():re({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}};const We=(t,e=document.body)=>e.querySelector(t),le=(t,e=document.body)=>Array.from(e.querySelectorAll(t)),Ei=t=>typeof t=="string"?We(t):t,bi=({containerElement:t,targetChildren:e="a:not([disabled]), button:not([disabled])",direction:i})=>{let n=!1;const o=Ei(t)||document.body,s=typeof e=="string"?le(e,o):e,a=r=>{if(r.preventDefault(),o.focus(),s.length===0)return;const l=r.key,h=document.activeElement;let c=s.findIndex(d=>d===h);if(c===-1){l==="ArrowUp"||l==="ArrowLeft"?s[s.length-1].focus():s[0].focus();return}const m=d=>d>0?d-1:s.length-1,g=d=>d<s.length-1?d+1:0;switch(l){case"ArrowDown":r.preventDefault(),c=g(c);break;case"ArrowRight":break;case"ArrowUp":r.preventDefault(),c=m(c);break;case"ArrowLeft":break;case"Home":r.preventDefault(),c=0;break;case"End":r.preventDefault(),c=s.length-1;break;default:return}s[c]!==h&&s[c].focus()};return{make:()=>{n||(document.addEventListener("keydown",a),n=!0)},destroy:()=>{n&&(document.removeEventListener("keydown",a),n=!1)}}},nt=(t,e,i)=>{const n=new CustomEvent(e,{detail:i});t.dispatchEvent(n)};function wi(t){const e=()=>{document.querySelector("[data-fx-component]:not([data-component-initialized])")?requestAnimationFrame(e):t()};e()}function yi(t,e,i="move"){if(!(t instanceof HTMLElement))throw new Error("Source element must be an HTMLElement");if(!(e instanceof HTMLElement))throw new Error("Target element must be an HTMLElement");if(!["move","detachable"].includes(i))throw new Error(`Invalid teleport mode: ${i}. Must be "move" or "detachable".`);let n=document.createComment("teleporter-placeholder");const o=t.parentNode;return o?o.insertBefore(n,t):console.warn("Element has no parent; placeholder not inserted."),i==="move"?(t.parentNode&&e.appendChild(t),{append(){t.parentNode!==e&&e.appendChild(t)},remove(){n!=null&&n.parentNode&&t.parentNode&&n.parentNode.insertBefore(t,n)},restore(){n!=null&&n.parentNode&&t.parentNode!==o&&n.parentNode.insertBefore(t,n)}}):(t.parentNode&&e.appendChild(t),{append(){e.contains(t)||e.appendChild(t)},remove(){t.parentNode&&t.remove()},restore(){n!=null&&n.parentNode&&!t.parentNode&&n.parentNode.insertBefore(t,n)}})}let he=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,i,n){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,i)||(window.$flexillaInstances[e].push({element:i,instance:n}),n)}static getInstance(e,i){var n,o;return this.initGlobalRegistry(),(o=(n=window.$flexillaInstances[e])==null?void 0:n.find(s=>s.element===i))==null?void 0:o.instance}static removeInstance(e,i){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(n=>n.element!==i))}static setup(e){e.setAttribute("data-fx-component","fx")}static initialized(e){e.setAttribute("data-component-initialized","initialized")}};const Ii={teleport:!0,teleportMode:"move"},Fe=class wt{constructor(e,i={}){f(this,"triggerElement"),f(this,"contentElement"),f(this,"items",[]),f(this,"options"),f(this,"OverlayInstance"),f(this,"navigationKeys"),f(this,"keyObserver"),f(this,"subtriggerObserver"),f(this,"triggerStrategy"),f(this,"placement"),f(this,"offsetDistance"),f(this,"preventFromCloseOutside"),f(this,"preventFromCloseInside"),f(this,"defaultState"),f(this,"experimentalOptions"),f(this,"teleporter"),f(this,"updateSubtriggerAttr",(a,r)=>{r==="add"?(a.setAttribute("data-current-subtrigger",""),a.setAttribute("data-focus","active")):(a.removeAttribute("data-current-subtrigger"),a.removeAttribute("data-focus"))}),f(this,"updateObserverFor",a=>{const r=le("[data-dropdown-trigger]",this.contentElement);for(const l of r)a.observe(l,{attributes:!0,attributeFilter:["aria-expanded"]})}),f(this,"observeEl",()=>{this.keyObserver=new MutationObserver(a=>{for(const r of a)r.type==="attributes"&&r.attributeName==="aria-expanded"&&(r.target.getAttribute("aria-expanded")==="true"?this.navigationKeys.destroy():this.contentElement.dataset.state==="open"&&this.navigationKeys.make())}),this.updateObserverFor(this.keyObserver)}),f(this,"observeSubtriggers",()=>{this.subtriggerObserver=new MutationObserver(a=>{for(const r of a)if(r.type==="attributes"&&r.attributeName==="aria-expanded"){const l=r.target,h=l.getAttribute("aria-expanded");this.updateSubtriggerAttr(l,h==="true"?"add":"remove")}}),this.updateObserverFor(this.subtriggerObserver)}),f(this,"onToggle",({isHidden:a})=>{var r,l;(l=(r=this.options).onToggle)==null||l.call(r,{isHidden:a})}),f(this,"moveElOnInit",()=>{this.experimentalOptions.teleport&&wi(()=>{this.experimentalOptions.teleportMode==="detachable"?this.teleporter.remove():this.teleporter.append()})}),f(this,"moveEl",()=>{this.experimentalOptions.teleport&&this.experimentalOptions.teleportMode==="detachable"&&this.teleporter.remove()}),f(this,"restoreEl",()=>{this.experimentalOptions.teleport&&this.experimentalOptions.teleportMode==="detachable"&&this.teleporter.append()}),f(this,"beforeShow",()=>{this.restoreEl(),this.contentElement.focus(),this.navigationKeys.make(),this.addArrowEvent()}),f(this,"beforeHide",()=>{this.contentElement.blur(),this.navigationKeys.destroy(),this.removeArrowEvent()}),f(this,"showHideOnArrow",a=>{a.preventDefault();const r=a.key,l=document.activeElement;if(l!=null&&l.hasAttribute("data-dropdown-trigger"))switch(r){case"ArrowRight":l.getAttribute("aria-expanded")!=="true"&&(l.click(),this.updateSubtriggerAttr(l,"add"));break;case"ArrowLeft":l.getAttribute("aria-expanded")==="true"&&(l.click(),this.updateSubtriggerAttr(l,"remove"));break;default:return}if(this.triggerElement.hasAttribute("data-current-subtrigger"))switch(r){case"ArrowLeft":this.triggerElement.click(),this.triggerElement.focus(),this.updateSubtriggerAttr(this.triggerElement,"remove");break;default:return}}),f(this,"addArrowEvent",()=>{document.addEventListener("keydown",this.showHideOnArrow)}),f(this,"removeArrowEvent",()=>{document.removeEventListener("keydown",this.showHideOnArrow)}),f(this,"onShow",()=>{var a,r;nt(this.contentElement,"dropdown-show",{isHidden:!1}),(r=(a=this.options).onShow)==null||r.call(a),this.observeEl(),this.observeSubtriggers()}),f(this,"onHide",()=>{var a,r;nt(this.contentElement,"dropdown-hide",{isHidden:!0}),(r=(a=this.options).onHide)==null||r.call(a),this.moveEl(),this.triggerElement.hasAttribute("data-current-subtrigger")&&this.updateSubtriggerAttr(this.triggerElement,"remove"),this.disconnectObserver()}),f(this,"show",()=>this.OverlayInstance.show()),f(this,"hide",()=>this.OverlayInstance.hide()),f(this,"setShowOptions",({placement:a,offsetDistance:r})=>{this.OverlayInstance.setShowOptions({placement:a,offsetDistance:r})}),f(this,"setOptions",({placement:a,offsetDistance:r})=>{this.OverlayInstance.setPopperOptions({placement:a,offsetDistance:r})}),f(this,"setPopperTrigger",(a,r)=>{this.OverlayInstance.setPopperTrigger(a,r)}),f(this,"disconnectObserver",()=>{this.keyObserver&&this.keyObserver.disconnect(),this.subtriggerObserver&&this.subtriggerObserver.disconnect()}),f(this,"cleanup",()=>{this.disconnectObserver(),this.OverlayInstance.cleanup(),he.removeInstance("dropdown",this.contentElement)});const n=typeof e=="string"?We(e):e;if(!(n instanceof HTMLElement))throw new Error("Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement");if(!n.id)throw new Error("Dropdown content element must have an 'id' attribute for trigger association");this.contentElement=n;const o=he.getInstance("dropdown",this.contentElement);if(o)return o;he.setup(this.contentElement);const s=`[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;if(this.triggerElement=We(s),!(this.triggerElement instanceof HTMLElement))throw new Error(`No valid trigger element found. Ensure a trigger element exists with attributes: data-dropdown-trigger and data-dropdown-id="${this.contentElement.id}"`);this.options=i,this.triggerStrategy=this.contentElement.dataset.triggerStrategy||this.options.triggerStrategy||"click",this.placement=this.contentElement.dataset.placement||this.options.placement||"bottom-start",this.offsetDistance=parseInt(`${this.contentElement.dataset.offsetDistance}`)||this.options.offsetDistance||6,this.preventFromCloseOutside=this.contentElement.hasAttribute("data-prevent-close-outside")||this.options.preventFromCloseOutside||!1,this.preventFromCloseInside=this.contentElement.hasAttribute("data-prevent-close-inside")||this.options.preventCloseFromInside||!1,this.defaultState=this.contentElement.dataset.defaultState||this.options.defaultState||"close",this.experimentalOptions=Object.assign({},Ii,i.experimental),this.teleporter=yi(this.contentElement,document.body,this.experimentalOptions.teleportMode),this.OverlayInstance=new vi({trigger:this.triggerElement,content:this.contentElement,options:{placement:this.placement,offsetDistance:this.offsetDistance,triggerStrategy:this.triggerStrategy,preventFromCloseOutside:this.preventFromCloseOutside,preventCloseFromInside:this.preventFromCloseInside,defaultState:this.defaultState,beforeShow:this.beforeShow,beforeHide:()=>{if(le("[data-dropdown-trigger][aria-expanded=true]",this.contentElement).length>=1)return{cancelAction:!0};this.beforeHide()},onShow:this.onShow,onHide:this.onHide,onToggle:({isHidden:a})=>{this.onToggle({isHidden:a})},popper:this.options.popper}}),this.moveElOnInit(),this.items=le("a:not([disabled]), button:not([disabled])",this.contentElement),this.navigationKeys=bi({containerElement:this.contentElement,targetChildren:this.items,direction:"up-down"}),he.register("dropdown",this.contentElement,this),he.initialized(this.contentElement)}static init(e,i={}){new wt(e,i)}};f(Fe,"autoInit",(t="[data-fx-dropdown]")=>{const e=le(t);for(const i of e)new Fe(i)});let st=Fe;var Ti=Object.defineProperty,Ci=(t,e,i)=>e in t?Ti(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,u=(t,e,i)=>Ci(t,typeof e!="symbol"?e+"":e,i);const K=(t,e=document.body)=>e.querySelector(t),ce=(t,e=document.body)=>Array.from(e.querySelectorAll(t)),$i=({newElement:t,existingElement:e})=>{if(!(t instanceof HTMLElement)||!(e instanceof HTMLElement))throw new Error("Both parameters must be valid HTML elements.");const i=e.parentElement;if(i)i.insertBefore(t,e);else throw new Error("Existing element must have a parent element.")},Li=({element:t,callback:e,type:i,keysCheck:n})=>{const o=getComputedStyle(t),s=o.animation;if(s!=="none"&&s!==""&&!n.includes(s)){const a="animationend",r=()=>{t.removeEventListener(a,r),e()};t.addEventListener(a,r,{once:!0})}else e()},ot=({element:t,callback:e})=>{Li({element:t,callback:e,type:"animation",keysCheck:["none 0s ease 0s 1 normal none running"]})},Be=(t,e,i)=>{const n=new CustomEvent(e,{detail:i});t.dispatchEvent(n)};function xi(t){const e=()=>{document.querySelector("[data-fx-component]:not([data-component-initialized])")?requestAnimationFrame(e):t()};e()}function Oi(t,e,i="move"){if(!(t instanceof HTMLElement))throw new Error("Source element must be an HTMLElement");if(!(e instanceof HTMLElement))throw new Error("Target element must be an HTMLElement");if(!["move","detachable"].includes(i))throw new Error(`Invalid teleport mode: ${i}. Must be "move" or "detachable".`);let n=document.createComment("teleporter-placeholder");const o=t.parentNode;return o?o.insertBefore(n,t):console.warn("Element has no parent; placeholder not inserted."),i==="move"?(t.parentNode&&e.appendChild(t),{append(){t.parentNode!==e&&e.appendChild(t)},remove(){n!=null&&n.parentNode&&t.parentNode&&n.parentNode.insertBefore(t,n)},restore(){n!=null&&n.parentNode&&t.parentNode!==o&&n.parentNode.insertBefore(t,n)}}):(t.parentNode&&e.appendChild(t),{append(){e.contains(t)||e.appendChild(t)},remove(){t.parentNode&&t.remove()},restore(){n!=null&&n.parentNode&&!t.parentNode&&n.parentNode.insertBefore(t,n)}})}const Ge=(t,e,i)=>{if(!(e instanceof HTMLElement))throw new Error("No modal-content found");t.setAttribute("aria-hidden",i==="open"?"false":"true"),t.setAttribute("data-state",i),e.setAttribute("data-state",i);const n=K("[data-modal-overlay]",t);n instanceof HTMLElement&&n.setAttribute("data-state",i)},Si=(t,e,i)=>{if(!t){e||(document.body.style.overflowY="auto");return}ce("[data-fx-modal][data-state=open]:not([data-allow-body-scroll=true]").filter(n=>n!==i).length===0&&!e&&(document.body.style.overflowY="auto")};let de=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,i,n){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,i)||(window.$flexillaInstances[e].push({element:i,instance:n}),n)}static getInstance(e,i){var n,o;return this.initGlobalRegistry(),(o=(n=window.$flexillaInstances[e])==null?void 0:n.find(s=>s.element===i))==null?void 0:o.instance}static removeInstance(e,i){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(n=>n.element!==i))}static setup(e){e.setAttribute("data-fx-component","fx")}static initialized(e){e.setAttribute("data-component-initialized","initialized")}};const Ai=t=>{var e;t instanceof HTMLElement&&((e=t.parentElement)==null||e.removeChild(t))},ki=({modalContent:t,overlayClassName:e})=>{const i=document.createElement("span");return i.setAttribute("aria-hidden","true"),$i({newElement:i,existingElement:t}),i.classList.add(...e),i.setAttribute("data-modal-overlay",""),i},me=class{constructor(e,i={},n){u(this,"modalElement"),u(this,"modalId"),u(this,"modalContent"),u(this,"triggerButtons",[]),u(this,"overlayElement"),u(this,"dispatchEventToDocument"),u(this,"options"),u(this,"state"),u(this,"animationEnter"),u(this,"animationExit"),u(this,"animateContent"),u(this,"hasDefaultOverlay"),u(this,"enableStackedModals"),u(this,"preventCloseModal"),u(this,"isKeyDownEventRegistered"),u(this,"closeButtons"),u(this,"overlayClassName"),u(this,"allowBodyScroll"),u(this,"initAsOpen"),u(this,"teleporter"),u(this,"moveElOnInit",()=>{xi(()=>{this.teleporter.append()})}),u(this,"closeAll",l=>{if(this.enableStackedModals)return;const h=ce("[data-fx-modal][data-state=open]");for(const c of h){const m=c.dataset.modalId;if(m!==l.dataset.modalId){c.blur(),K("[data-modal-overlay]",c).setAttribute("data-state","close");const g=K("[data-modal-content]",c);Ge(c,g,"close"),document.dispatchEvent(new CustomEvent(`modal:${m}:close`))}}}),u(this,"closeModalEsc",l=>{l.key==="Escape"&&(l.preventDefault(),this.preventCloseModal||this.hideModal())}),u(this,"initModal",(l,h)=>{var c;if(!(l instanceof HTMLDialogElement))throw new Error("Modal Element must be a valid HTMLDialog Element");const{allowBodyScroll:m,animateContent:g,preventCloseModal:d,overlayClass:p,enableStackedModals:v}=h;this.allowBodyScroll=l.hasAttribute("data-allow-body-scroll")&&l.getAttribute("data-allow-body-scroll")!=="false"||m||!1,this.preventCloseModal=l.hasAttribute("data-prevent-close-modal")&&l.getAttribute("data-prevent-close-modal")!=="false"||d||!1,this.enableStackedModals=l.hasAttr