@flexilla/alpine-dropdown 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cdn.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{var J=Object.defineProperty,Q=(n,e,t)=>e in n?J(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,h=(n,e,t)=>Q(n,typeof e!="symbol"?e+"":e,t),V=Object.defineProperty,X=(n,e,t)=>e in n?V(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,l=(n,e,t)=>X(n,typeof e!="symbol"?e+"":e,t),Y="bottom",Z=({reference:n,popper:e})=>{if(!n||!e)throw new Error("Reference or popper element is null or undefined");let t=new WeakMap,i=r=>(t.has(r)||t.set(r,r.getBoundingClientRect()),t.get(r)),o=i(e),s=i(n);return{popperHeight:o.height,popperWidth:o.width,refHeight:s.height,refWidth:s.width,refLeft:s.left,refTop:s.top,refRight:s.right}},_=Object.defineProperty,ee=(n,e,t)=>e in n?_(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,m=(n,e,t)=>ee(n,typeof e!="symbol"?e+"":e,t),te=(n,e,t,i)=>{let o=t,s=i-(t+e);return o>=(n-e)/2&&s>=(n-e)/2},ne=(n,e,t,i)=>(n-e)/2<=t&&t+n/2+e/2<=i,ie=(n,e,t,i,o)=>t>o-i?e()?window.innerHeight-o:t-o:n()?0:t+i,se=(n,e,t,i)=>n<=i&&t-n<=e,oe=(n,e,t,i)=>t<=i&&-n<=e,re=(n,e,t,i,o,s)=>{let r=o-t-s,a=t-i,c=t+s-i+(o-t-s),p=r>=0?o-i:a>=0?t-i:t;return n()?0:e()?c:p},ae=(n,e,t,i)=>n<=t&&e-n-i>=n,le=(n,e)=>n>=e,he=({placement:n,refWidth:e,refTop:t,refLeft:i,refHeight:o,popperWidth:s,popperHeight:r,windowHeight:a,windowWidth:c,offsetDistance:p})=>{let d=c-i-e,f=i,E=a-t-o,g=t,w=()=>ie(()=>oe(t,o,r,a),()=>se(t,o,r,a),t,o,r),y=()=>re(()=>ae(i,c,s,e),()=>le(i,s),i,s,c,e),I=()=>te(s,e,i,c)?i+e/2-s/2:y(),C=()=>ne(r,o,t,a)?t+o/2-r/2:w(),T=()=>i+s<=c?i:y(),O=()=>i+e-s>=0?i+e-s:y(),L=()=>t+r<=a?t:w(),N=()=>t+o-r>=0?t+o-r:w(),u=0,v=0,M=t-r-p,D=t+o+p,H=i-s-p,k=i+e+p,R=g>=r+p,$=E>=r+p,A=f>=s+p,K=d>=s+p;switch(n.startsWith("top")?v=R?M:$?D:Math.max(M,D):n.startsWith("bottom")?v=$?D:R?M:Math.max(D):n.startsWith("left")?u=A?H:K?k:Math.max(H,k):n.startsWith("right")&&(u=K?k:A?H:Math.max(k,H)),n){case"bottom":case"bottom-middle":case"top":case"top-middle":u=I();break;case"left":case"left-middle":case"right":case"right-middle":v=C();break;case"bottom-start":case"top-start":u=T();break;case"bottom-end":case"top-end":u=O();break;case"left-start":case"right-start":v=L();break;case"left-end":case"right-end":v=N();break}return{x:u,y:v}},x=class{constructor(e,t,i={}){m(this,"reference"),m(this,"popper"),m(this,"offsetDistance"),m(this,"placement"),m(this,"disableOnResize"),m(this,"disableOnScroll"),m(this,"onUpdate"),m(this,"isWindowEventsRegistered"),m(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")}),m(this,"setPopperStyleProperty",(d,f)=>{this.popper.style.setProperty("--fx-popper-placement-x",`${d}px`),this.popper.style.setProperty("--fx-popper-placement-y",`${f}px`)}),m(this,"setInitialStyles",()=>{this.popper.style.setProperty("--fx-popper-placement-x",""),this.popper.style.setProperty("--fx-popper-placement-y","")}),m(this,"initPlacement",()=>{var d;this.validateElements(),this.setInitialStyles();let f=window.innerWidth,E=window.innerHeight,{popperHeight:g,popperWidth:w,refHeight:y,refWidth:I,refLeft:C,refTop:T}=Z({reference:this.reference,popper:this.popper}),{x:O,y:L}=he({placement:this.placement,refWidth:I,refTop:T,refLeft:C,popperWidth:w,refHeight:y,popperHeight:g,windowHeight:E,windowWidth:f,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(O,L),(d=this.onUpdate)==null||d.call(this,{x:O,y:L,placement:this.placement})}),m(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),m(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),m(this,"resetPosition",()=>{this.setInitialStyles()}),m(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),m(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});let{offsetDistance:o=10,placement:s=Y,eventEffect:r={},onUpdate:a}=i;if(!(e instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(t instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(i.offsetDistance&&typeof i.offsetDistance!="number")throw new Error("OffsetDistance must be a number");let{disableOnResize:c,disableOnScroll:p}=r;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=t,this.offsetDistance=o,this.placement=s,this.disableOnResize=c||!1,this.disableOnScroll=p||!1,this.onUpdate=a}setOptions({placement:e,offsetDistance:t}){this.placement=e,this.offsetDistance=t||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}},ce=(n,e=document.body)=>e.querySelector(n),z=(n,e)=>{for(let[t,i]of Object.entries(e))n.setAttribute(t,i)},de=({element:n,callback:e,type:t,keysCheck:i})=>{let o=getComputedStyle(n),s=o.transition;if(s!=="none"&&s!==""&&!i.includes(s)){let r="transitionend",a=()=>{n.removeEventListener(r,a),e()};n.addEventListener(r,a,{once:!0})}else e()},pe=({element:n,callback:e})=>{de({element:n,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},b=({state:n,trigger:e,popper:t})=>{z(t,{"data-state":n}),z(e,{"aria-expanded":`${n}`})},W=class{constructor({trigger:e,content:t,options:i={}}){l(this,"triggerElement"),l(this,"contentElement"),l(this,"triggerStrategy"),l(this,"placement"),l(this,"offsetDistance"),l(this,"preventFromCloseOutside"),l(this,"preventFromCloseInside"),l(this,"options"),l(this,"defaultState"),l(this,"popper"),l(this,"eventEffect"),l(this,"getElement",s=>typeof s=="string"?ce(s):s instanceof HTMLElement?s:void 0),l(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())}),l(this,"handleKeyDown",s=>{s.preventDefault(),this.triggerStrategy!=="hover"&&s.key==="Escape"&&this.contentElement.getAttribute("data-state")==="open"&&(this.preventFromCloseOutside||this.hide())}),l(this,"toggleStateOnClick",()=>{(this.contentElement.dataset.state||"close")==="close"?(this.show(),this.triggerStrategy==="hover"&&this.addEventOnMouseEnter()):this.hide()}),l(this,"hideOnMouseLeaseTrigger",()=>{setTimeout(()=>{this.contentElement.matches(":hover")||this.hide()},150)}),l(this,"hideOnMouseLeave",()=>{setTimeout(()=>{this.triggerElement.matches(":hover")||this.hide()},150)}),l(this,"addEventOnMouseEnter",()=>{this.triggerElement.addEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.addEventListener("mouseleave",this.hideOnMouseLeave)}),l(this,"showOnMouseEnter",()=>{this.show(),this.addEventOnMouseEnter()}),l(this,"setShowOptions",({placement:s,offsetDistance:r})=>{var a,c,p,d;this.popper.setOptions({placement:s,offsetDistance:r}),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(c=(a=this.options).beforeShow)==null||c.call(a),b({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(d=(p=this.options).onShow)==null||d.call(p)}),l(this,"setPopperOptions",({placement:s,offsetDistance:r})=>{this.popper.setOptions({placement:s,offsetDistance:r})}),l(this,"cleanup",()=>{this.triggerElement.removeEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.removeEventListener("mouseenter",this.showOnMouseEnter)});var o;if(this.contentElement=this.getElement(t),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=i,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 x(this.triggerElement,this.contentElement,{placement:this.placement,offsetDistance:this.offsetDistance,eventEffect:this.eventEffect}),this.initInstance()}onToggleState(e){var t,i;(i=(t=this.options).onToggle)==null||i.call(t,{isHidden:e})}show(){var e,t,i,o;this.popper.updatePosition(),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(t=(e=this.options).beforeShow)==null||t.call(e),b({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(o=(i=this.options).onShow)==null||o.call(i)}hide(){var e,t;(t=(e=this.options).beforeHide)==null||t.call(e),b({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)),pe({element:this.contentElement,callback:()=>{var i,o;this.onToggleState(!0),this.popper.cleanupEvents(),(o=(i=this.options).onHide)==null||o.call(i)}})}initInstance(){b({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():b({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}},P=(n,e=document.body)=>e.querySelector(n),j=(n,e=document.body)=>Array.from(e.querySelectorAll(n)),me=n=>typeof n=="string"?P(n):n,ge=({containerElement:n,targetChildren:e="a:not([disabled]), button:not([disabled])",direction:t})=>{let i=!1,o=me(n)||document.body,s=typeof e=="string"?j(e,o):e,r=a=>{if(a.preventDefault(),o.focus(),s.length===0)return;let c=a.key,p=document.activeElement,d=s.findIndex(g=>g===p);if(d===-1){c==="ArrowUp"||c==="ArrowLeft"?s[s.length-1].focus():s[0].focus();return}let f=g=>g>0?g-1:s.length-1,E=g=>g<s.length-1?g+1:0;switch(c){case"ArrowDown":a.preventDefault(),d=E(d);break;case"ArrowRight":break;case"ArrowUp":a.preventDefault(),d=f(d);break;case"ArrowLeft":break;case"Home":a.preventDefault(),d=0;break;case"End":a.preventDefault(),d=s.length-1;break;default:return}s[d]!==p&&s[d].focus()};return{make:()=>{i||(document.addEventListener("keydown",r),i=!0)},destroy:()=>{i&&(document.removeEventListener("keydown",r),i=!1)}}},U=(n,e,t)=>{let i=new CustomEvent(e,{detail:t});n.dispatchEvent(i)},S=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,t,i){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,t)||(window.$flexillaInstances[e].push({element:t,instance:i}),i)}static getInstance(e,t){var i,o;return this.initGlobalRegistry(),(o=(i=window.$flexillaInstances[e])==null?void 0:i.find(s=>s.element===t))==null?void 0:o.instance}static removeInstance(e,t){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(i=>i.element!==t))}},F=class G{constructor(e,t={}){h(this,"triggerElement"),h(this,"contentElement"),h(this,"options"),h(this,"OverlayInstance"),h(this,"navigationKeys"),h(this,"triggerStrategy"),h(this,"placement"),h(this,"offsetDistance"),h(this,"preventFromCloseOutside"),h(this,"preventFromCloseInside"),h(this,"defaultState"),h(this,"onToggle",({isHidden:r})=>{var a,c;(c=(a=this.options).onToggle)==null||c.call(a,{isHidden:r})}),h(this,"beforeShow",()=>{this.contentElement.focus(),this.navigationKeys.make()}),h(this,"beforeHide",()=>{this.contentElement.blur(),this.navigationKeys.destroy()}),h(this,"onShow",()=>{var r,a;U(this.contentElement,"dropdown-show",{isHidden:!1}),(a=(r=this.options).onShow)==null||a.call(r)}),h(this,"onHide",()=>{var r,a;U(this.contentElement,"dropdown-hide",{isHidden:!0}),(a=(r=this.options).onHide)==null||a.call(r)}),h(this,"show",()=>{this.OverlayInstance.show()}),h(this,"hide",()=>{this.OverlayInstance.hide()}),h(this,"setShowOptions",({placement:r,offsetDistance:a})=>{this.OverlayInstance.setShowOptions({placement:r,offsetDistance:a})}),h(this,"cleanup",()=>{this.OverlayInstance.cleanup(),S.removeInstance("dropdown",this.contentElement)});let i=typeof e=="string"?P(e):e;if(!(i 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(!i.id)throw new Error("Dropdown content element must have an 'id' attribute for trigger association");this.contentElement=i;let o=S.getInstance("dropdown",this.contentElement);if(o)return o;let s=`[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;if(this.triggerElement=P(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=t,this.triggerStrategy=this.options.triggerStrategy||this.contentElement.dataset.triggerStrategy||"click",this.placement=this.options.placement||this.contentElement.dataset.placement||"bottom-start",this.offsetDistance=this.options.offsetDistance||parseInt(`${this.contentElement.dataset.offsetDistance}`)|6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||this.contentElement.hasAttribute("data-prevent-close-outside")||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||this.contentElement.hasAttribute("data-prevent-close-inside")||!1,this.defaultState=this.options.defaultState||this.contentElement.dataset.defaultState||"close",this.OverlayInstance=new W({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:this.beforeHide,onShow:this.onShow,onHide:this.onHide,onToggle:({isHidden:r})=>{this.onToggle({isHidden:r})},popper:this.options.popper}}),this.navigationKeys=ge({containerElement:this.contentElement,targetChildren:"a:not([disabled]), button:not([disabled])",direction:"up-down"}),S.register("dropdown",this.contentElement,this)}static init(e,t={}){new G(e,t)}};h(F,"autoInit",(n="[data-fx-dropdown]")=>{let e=j(n);for(let t of e)new F(t)});var q=F;function fe(n){n.directive("dropdown",(e,{},{cleanup:t})=>{let i=new q(e);t(()=>{i.cleanup()})})}var B=fe;document.addEventListener("alpine:init",()=>{B(window.Alpine)});})();
1
+ (()=>{var J=Object.defineProperty,Q=(n,e,t)=>e in n?J(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,h=(n,e,t)=>Q(n,typeof e!="symbol"?e+"":e,t),V=Object.defineProperty,X=(n,e,t)=>e in n?V(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,m=(n,e,t)=>X(n,typeof e!="symbol"?e+"":e,t),Y="bottom",Z=({reference:n,popper:e})=>{if(!n||!e)throw new Error("Reference or popper element is null or undefined");let t=new WeakMap,i=o=>(t.has(o)||t.set(o,o.getBoundingClientRect()),t.get(o)),r=i(e),s=i(n);return{popperHeight:r.height,popperWidth:r.width,refHeight:s.height,refWidth:s.width,refLeft:s.left,refTop:s.top,refRight:s.right}},_=(n,e,t,i)=>{let r=t,s=i-(t+e);return r>=(n-e)/2&&s>=(n-e)/2},ee=(n,e,t,i)=>(n-e)/2<=t&&t+n/2+e/2<=i,te=(n,e,t,i,r)=>t>r-i?e()?window.innerHeight-r:t-r:n()?0:t+i,ne=(n,e,t,i)=>n<=i&&t-n<=e,ie=(n,e,t,i)=>t<=i&&-n<=e,se=(n,e,t,i,r,s)=>{let o=r-t-s,a=t-i,c=t+s-i+(r-t-s),p=o>=0?r-i:a>=0?t-i:t;return n()?0:e()?c:p},oe=(n,e,t,i)=>n<=t&&e-n-i>=n,re=(n,e)=>n>=e,ae=({placement:n,refWidth:e,refTop:t,refLeft:i,refHeight:r,popperWidth:s,popperHeight:o,windowHeight:a,windowWidth:c,offsetDistance:p})=>{let d=c-i-e,f=i,E=a-t-r,g=t,w=()=>te(()=>ie(t,r,o,a),()=>ne(t,r,o,a),t,r,o),y=()=>se(()=>oe(i,c,s,e),()=>re(i,s),i,s,c,e),I=()=>_(s,e,i,c)?i+e/2-s/2:y(),T=()=>ee(o,r,t,a)?t+r/2-o/2:w(),C=()=>i+s<=c?i:y(),O=()=>i+e-s>=0?i+e-s:y(),D=()=>t+o<=a?t:w(),N=()=>t+r-o>=0?t+r-o:w(),v=0,u=0,M=t-o-p,L=t+r+p,k=i-s-p,H=i+e+p,R=g>=o+p,$=E>=o+p,A=f>=s+p,K=d>=s+p;switch(n.startsWith("top")?u=R?M:$?L:Math.max(M,L):n.startsWith("bottom")?u=$?L:R?M:Math.max(L):n.startsWith("left")?v=A?k:K?H:Math.max(k,H):n.startsWith("right")&&(v=K?H:A?k:Math.max(H,k)),n){case"bottom":case"bottom-middle":case"top":case"top-middle":v=I();break;case"left":case"left-middle":case"right":case"right-middle":u=T();break;case"bottom-start":case"top-start":v=C();break;case"bottom-end":case"top-end":v=O();break;case"left-start":case"right-start":u=D();break;case"left-end":case"right-end":u=N();break}return{x:v,y:u}},x=class{constructor(e,t,i={}){m(this,"reference"),m(this,"popper"),m(this,"offsetDistance"),m(this,"placement"),m(this,"disableOnResize"),m(this,"disableOnScroll"),m(this,"onUpdate"),m(this,"isWindowEventsRegistered"),m(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")}),m(this,"setPopperStyleProperty",(d,f)=>{this.popper.style.setProperty("--fx-popper-placement-x",`${d}px`),this.popper.style.setProperty("--fx-popper-placement-y",`${f}px`)}),m(this,"setInitialStyles",()=>{this.popper.style.setProperty("--fx-popper-placement-x",""),this.popper.style.setProperty("--fx-popper-placement-y","")}),m(this,"initPlacement",()=>{var d;this.validateElements(),this.setInitialStyles();let f=window.innerWidth,E=window.innerHeight,{popperHeight:g,popperWidth:w,refHeight:y,refWidth:I,refLeft:T,refTop:C}=Z({reference:this.reference,popper:this.popper}),{x:O,y:D}=ae({placement:this.placement,refWidth:I,refTop:C,refLeft:T,popperWidth:w,refHeight:y,popperHeight:g,windowHeight:E,windowWidth:f,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(O,D),(d=this.onUpdate)==null||d.call(this,{x:O,y:D,placement:this.placement})}),m(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),m(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),m(this,"resetPosition",()=>{this.setInitialStyles()}),m(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),m(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});let{offsetDistance:r=10,placement:s=Y,eventEffect:o={},onUpdate:a}=i;if(!(e instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(t instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(i.offsetDistance&&typeof i.offsetDistance!="number")throw new Error("OffsetDistance must be a number");let{disableOnResize:c,disableOnScroll:p}=o;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=t,this.offsetDistance=r,this.placement=s,this.disableOnResize=c||!1,this.disableOnScroll=p||!1,this.onUpdate=a}setOptions({placement:e,offsetDistance:t}){this.placement=e,this.offsetDistance=t||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}},le=Object.defineProperty,he=(n,e,t)=>e in n?le(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,l=(n,e,t)=>he(n,typeof e!="symbol"?e+"":e,t),ce=(n,e=document.body)=>e.querySelector(n),z=(n,e)=>{for(let[t,i]of Object.entries(e))n.setAttribute(t,i)},de=({element:n,callback:e,type:t,keysCheck:i})=>{let r=getComputedStyle(n),s=r.transition;if(s!=="none"&&s!==""&&!i.includes(s)){let o="transitionend",a=()=>{n.removeEventListener(o,a),e()};n.addEventListener(o,a,{once:!0})}else e()},pe=({element:n,callback:e})=>{de({element:n,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},b=({state:n,trigger:e,popper:t})=>{let i=n==="open";z(t,{"data-state":n}),z(e,{"aria-expanded":`${i}`})},P=class{constructor({trigger:e,content:t,options:i={}}){l(this,"triggerElement"),l(this,"contentElement"),l(this,"triggerStrategy"),l(this,"placement"),l(this,"offsetDistance"),l(this,"preventFromCloseOutside"),l(this,"preventFromCloseInside"),l(this,"options"),l(this,"defaultState"),l(this,"popper"),l(this,"eventEffect"),l(this,"getElement",s=>typeof s=="string"?ce(s):s instanceof HTMLElement?s:void 0),l(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())}),l(this,"handleKeyDown",s=>{s.preventDefault(),this.triggerStrategy!=="hover"&&s.key==="Escape"&&this.contentElement.getAttribute("data-state")==="open"&&(this.preventFromCloseOutside||this.hide())}),l(this,"toggleStateOnClick",()=>{(this.contentElement.dataset.state||"close")==="close"?(this.show(),this.triggerStrategy==="hover"&&this.addEventOnMouseEnter()):this.hide()}),l(this,"hideOnMouseLeaseTrigger",()=>{setTimeout(()=>{this.contentElement.matches(":hover")||this.hide()},150)}),l(this,"hideOnMouseLeave",()=>{setTimeout(()=>{this.triggerElement.matches(":hover")||this.hide()},150)}),l(this,"addEventOnMouseEnter",()=>{this.triggerElement.addEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.addEventListener("mouseleave",this.hideOnMouseLeave)}),l(this,"showOnMouseEnter",()=>{this.show(),this.addEventOnMouseEnter()}),l(this,"setShowOptions",({placement:s,offsetDistance:o})=>{var a,c,p,d;this.popper.setOptions({placement:s,offsetDistance:o}),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(c=(a=this.options).beforeShow)==null||c.call(a),b({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(d=(p=this.options).onShow)==null||d.call(p)}),l(this,"setPopperOptions",({placement:s,offsetDistance:o})=>{this.popper.setOptions({placement:s,offsetDistance:o||this.offsetDistance})}),l(this,"setPopperTrigger",(s,o)=>{this.cleanup(),this.popper.setOptions({placement:o.placement||this.placement,offsetDistance:o.offsetDistance||this.offsetDistance}),this.triggerElement=s,this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}),l(this,"cleanup",()=>{this.triggerElement.removeEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.removeEventListener("mouseenter",this.showOnMouseEnter)});var r;if(this.contentElement=this.getElement(t),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=i,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=(r=this.options.popper)==null?void 0:r.eventEffect,this.popper=new x(this.triggerElement,this.contentElement,{placement:this.placement,offsetDistance:this.offsetDistance,eventEffect:this.eventEffect}),this.initInstance()}onToggleState(e){var t,i;(i=(t=this.options).onToggle)==null||i.call(t,{isHidden:e})}show(){var e,t,i,r;this.popper.updatePosition(),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(t=(e=this.options).beforeShow)==null||t.call(e),b({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(r=(i=this.options).onShow)==null||r.call(i)}hide(){var e,t;(t=(e=this.options).beforeHide)==null||t.call(e),b({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)),pe({element:this.contentElement,callback:()=>{var i,r;this.onToggleState(!0),this.popper.cleanupEvents(),(r=(i=this.options).onHide)==null||r.call(i)}})}initInstance(){b({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():b({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}},W=(n,e=document.body)=>e.querySelector(n),j=(n,e=document.body)=>Array.from(e.querySelectorAll(n)),me=n=>typeof n=="string"?W(n):n,ge=({containerElement:n,targetChildren:e="a:not([disabled]), button:not([disabled])",direction:t})=>{let i=!1,r=me(n)||document.body,s=typeof e=="string"?j(e,r):e,o=a=>{if(a.preventDefault(),r.focus(),s.length===0)return;let c=a.key,p=document.activeElement,d=s.findIndex(g=>g===p);if(d===-1){c==="ArrowUp"||c==="ArrowLeft"?s[s.length-1].focus():s[0].focus();return}let f=g=>g>0?g-1:s.length-1,E=g=>g<s.length-1?g+1:0;switch(c){case"ArrowDown":a.preventDefault(),d=E(d);break;case"ArrowRight":break;case"ArrowUp":a.preventDefault(),d=f(d);break;case"ArrowLeft":break;case"Home":a.preventDefault(),d=0;break;case"End":a.preventDefault(),d=s.length-1;break;default:return}s[d]!==p&&s[d].focus()};return{make:()=>{i||(document.addEventListener("keydown",o),i=!0)},destroy:()=>{i&&(document.removeEventListener("keydown",o),i=!1)}}},U=(n,e,t)=>{let i=new CustomEvent(e,{detail:t});n.dispatchEvent(i)},S=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,t,i){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,t)||(window.$flexillaInstances[e].push({element:t,instance:i}),i)}static getInstance(e,t){var i,r;return this.initGlobalRegistry(),(r=(i=window.$flexillaInstances[e])==null?void 0:i.find(s=>s.element===t))==null?void 0:r.instance}static removeInstance(e,t){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(i=>i.element!==t))}},F=class G{constructor(e,t={}){h(this,"triggerElement"),h(this,"contentElement"),h(this,"options"),h(this,"OverlayInstance"),h(this,"navigationKeys"),h(this,"triggerStrategy"),h(this,"placement"),h(this,"offsetDistance"),h(this,"preventFromCloseOutside"),h(this,"preventFromCloseInside"),h(this,"defaultState"),h(this,"onToggle",({isHidden:o})=>{var a,c;(c=(a=this.options).onToggle)==null||c.call(a,{isHidden:o})}),h(this,"beforeShow",()=>{this.contentElement.focus(),this.navigationKeys.make()}),h(this,"beforeHide",()=>{this.contentElement.blur(),this.navigationKeys.destroy()}),h(this,"onShow",()=>{var o,a;U(this.contentElement,"dropdown-show",{isHidden:!1}),(a=(o=this.options).onShow)==null||a.call(o)}),h(this,"onHide",()=>{var o,a;U(this.contentElement,"dropdown-hide",{isHidden:!0}),(a=(o=this.options).onHide)==null||a.call(o)}),h(this,"show",()=>{this.OverlayInstance.show()}),h(this,"hide",()=>{this.OverlayInstance.hide()}),h(this,"setShowOptions",({placement:o,offsetDistance:a})=>{this.OverlayInstance.setShowOptions({placement:o,offsetDistance:a})}),h(this,"setOptions",({placement:o,offsetDistance:a})=>{this.OverlayInstance.setPopperOptions({placement:o,offsetDistance:a})}),h(this,"setPopperTrigger",(o,a)=>{this.OverlayInstance.setPopperTrigger(o,a)}),h(this,"cleanup",()=>{this.OverlayInstance.cleanup(),S.removeInstance("dropdown",this.contentElement)});let i=typeof e=="string"?W(e):e;if(!(i 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(!i.id)throw new Error("Dropdown content element must have an 'id' attribute for trigger association");this.contentElement=i;let r=S.getInstance("dropdown",this.contentElement);if(r)return r;let s=`[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;if(this.triggerElement=W(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=t,this.triggerStrategy=this.options.triggerStrategy||this.contentElement.dataset.triggerStrategy||"click",this.placement=this.options.placement||this.contentElement.dataset.placement||"bottom-start",this.offsetDistance=this.options.offsetDistance||parseInt(`${this.contentElement.dataset.offsetDistance}`)|6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||this.contentElement.hasAttribute("data-prevent-close-outside")||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||this.contentElement.hasAttribute("data-prevent-close-inside")||!1,this.defaultState=this.options.defaultState||this.contentElement.dataset.defaultState||"close",this.OverlayInstance=new P({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:this.beforeHide,onShow:this.onShow,onHide:this.onHide,onToggle:({isHidden:o})=>{this.onToggle({isHidden:o})},popper:this.options.popper}}),this.navigationKeys=ge({containerElement:this.contentElement,targetChildren:"a:not([disabled]), button:not([disabled])",direction:"up-down"}),S.register("dropdown",this.contentElement,this)}static init(e,t={}){new G(e,t)}};h(F,"autoInit",(n="[data-fx-dropdown]")=>{let e=j(n);for(let t of e)new F(t)});var q=F;function fe(n){n.directive("dropdown",(e,{},{cleanup:t})=>{let i=new q(e);t(()=>{i.cleanup()})})}var B=fe;document.addEventListener("alpine:init",()=>{B(window.Alpine)});})();
@@ -26,12 +26,12 @@ module.exports = __toCommonJS(module_exports);
26
26
  // ../../node_modules/@flexilla/dropdown/dist/dropdown.js
27
27
  var j = Object.defineProperty;
28
28
  var q = (s, e, t) => e in s ? j(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
29
- var l = (s, e, t) => q(s, typeof e != "symbol" ? e + "" : e, t);
29
+ var a = (s, e, t) => q(s, typeof e != "symbol" ? e + "" : e, t);
30
30
  var B = Object.defineProperty;
31
31
  var N = (s, e, t) => e in s ? B(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
32
- var h = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
33
- var J = "bottom";
34
- var Q = ({ reference: s, popper: e }) => {
32
+ var d = (s, e, t) => N(s, typeof e != "symbol" ? e + "" : e, t);
33
+ var V = "bottom";
34
+ var X = ({ reference: s, popper: e }) => {
35
35
  if (!s || !e)
36
36
  throw new Error("Reference or popper element is null or undefined");
37
37
  const t = /* @__PURE__ */ new WeakMap(), n = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = n(e), i = n(s);
@@ -45,24 +45,21 @@ var Q = ({ reference: s, popper: e }) => {
45
45
  refRight: i.right
46
46
  };
47
47
  };
48
- var V = Object.defineProperty;
49
- var X = (s, e, t) => e in s ? V(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
50
- var p = (s, e, t) => X(s, typeof e != "symbol" ? e + "" : e, t);
51
48
  var Y = (s, e, t, n) => {
52
49
  const o = t, i = n - (t + e);
53
50
  return o >= (s - e) / 2 && i >= (s - e) / 2;
54
51
  };
55
- var Z = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
56
- var _ = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
57
- var ee = (s, e, t, n) => s <= n && t - s <= e;
58
- var te = (s, e, t, n) => t <= n && -s <= e;
59
- var ne = (s, e, t, n, o, i) => {
60
- const r = o - t - i, a = t - n, m = t + i - n + (o - t - i), d = r >= 0 ? o - n : a >= 0 ? t - n : t;
61
- return s() ? 0 : e() ? m : d;
52
+ var J = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
53
+ var Q = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
54
+ var Z = (s, e, t, n) => s <= n && t - s <= e;
55
+ var _ = (s, e, t, n) => t <= n && -s <= e;
56
+ var ee = (s, e, t, n, o, i) => {
57
+ const r = o - t - i, h = t - n, g = t + i - n + (o - t - i), p = r >= 0 ? o - n : h >= 0 ? t - n : t;
58
+ return s() ? 0 : e() ? g : p;
62
59
  };
63
- var se = (s, e, t, n) => s <= t && e - s - n >= s;
64
- var ie = (s, e) => s >= e;
65
- var oe = ({
60
+ var te = (s, e, t, n) => s <= t && e - s - n >= s;
61
+ var ne = (s, e) => s >= e;
62
+ var se = ({
66
63
  placement: s,
67
64
  refWidth: e,
68
65
  refTop: t,
@@ -70,27 +67,27 @@ var oe = ({
70
67
  refHeight: o,
71
68
  popperWidth: i,
72
69
  popperHeight: r,
73
- windowHeight: a,
74
- windowWidth: m,
75
- offsetDistance: d
70
+ windowHeight: h,
71
+ windowWidth: g,
72
+ offsetDistance: p
76
73
  }) => {
77
- const c = m - n - e, f = n, v = a - t - o, g = t, w = () => _(
78
- () => te(t, o, r, a),
79
- () => ee(t, o, r, a),
74
+ const c = g - n - e, f = n, v = h - t - o, m = t, w = () => Q(
75
+ () => _(t, o, r, h),
76
+ () => Z(t, o, r, h),
80
77
  t,
81
78
  o,
82
79
  r
83
- ), y = () => ne(
84
- () => se(n, m, i, e),
85
- () => ie(n, i),
80
+ ), y = () => ee(
81
+ () => te(n, g, i, e),
82
+ () => ne(n, i),
86
83
  n,
87
84
  i,
88
- m,
85
+ g,
89
86
  e
90
- ), H = () => Y(i, e, n, m) ? n + e / 2 - i / 2 : y(), C = () => Z(r, o, t, a) ? t + o / 2 - r / 2 : w(), T = () => n + i <= m ? n : y(), O = () => n + e - i >= 0 ? n + e - i : y(), L = () => t + r <= a ? t : w(), G = () => t + o - r >= 0 ? t + o - r : w();
87
+ ), H = () => Y(i, e, n, g) ? n + e / 2 - i / 2 : y(), T = () => J(r, o, t, h) ? t + o / 2 - r / 2 : w(), C = () => n + i <= g ? n : y(), O = () => n + e - i >= 0 ? n + e - i : y(), L = () => t + r <= h ? t : w(), G = () => t + o - r >= 0 ? t + o - r : w();
91
88
  let u = 0, E = 0;
92
- const M = t - r - d, k = t + o + d, I = n - i - d, D = n + e + d, P = g >= r + d, F = v >= r + d, R = f >= i + d, $ = c >= i + d;
93
- switch (s.startsWith("top") ? E = P ? M : F ? k : Math.max(M, k) : s.startsWith("bottom") ? E = F ? k : P ? M : Math.max(k) : s.startsWith("left") ? u = R ? I : $ ? D : Math.max(I, D) : s.startsWith("right") && (u = $ ? D : R ? I : Math.max(D, I)), s) {
89
+ const M = t - r - p, k = t + o + p, D = n - i - p, I = n + e + p, W = m >= r + p, F = v >= r + p, R = f >= i + p, $ = c >= i + p;
90
+ switch (s.startsWith("top") ? E = W ? M : F ? k : Math.max(M, k) : s.startsWith("bottom") ? E = F ? k : W ? M : Math.max(k) : s.startsWith("left") ? u = R ? D : $ ? I : Math.max(D, I) : s.startsWith("right") && (u = $ ? I : R ? D : Math.max(I, D)), s) {
94
91
  case "bottom":
95
92
  case "bottom-middle":
96
93
  case "top":
@@ -101,11 +98,11 @@ var oe = ({
101
98
  case "left-middle":
102
99
  case "right":
103
100
  case "right-middle":
104
- E = C();
101
+ E = T();
105
102
  break;
106
103
  case "bottom-start":
107
104
  case "top-start":
108
- u = T();
105
+ u = C();
109
106
  break;
110
107
  case "bottom-end":
111
108
  case "top-end":
@@ -122,7 +119,7 @@ var oe = ({
122
119
  }
123
120
  return { x: u, y: E };
124
121
  };
125
- var re = class {
122
+ var ie = class {
126
123
  /**
127
124
  * Flexilla Popper
128
125
  * @param reference
@@ -142,51 +139,51 @@ var re = class {
142
139
  * @param {Function} [options.onUpdate] - Callback function when position updates
143
140
  */
144
141
  constructor(e, t, n = {}) {
145
- p(this, "reference"), p(this, "popper"), p(this, "offsetDistance"), p(this, "placement"), p(this, "disableOnResize"), p(this, "disableOnScroll"), p(this, "onUpdate"), p(this, "isWindowEventsRegistered"), p(this, "validateElements", () => {
142
+ d(this, "reference"), d(this, "popper"), d(this, "offsetDistance"), d(this, "placement"), d(this, "disableOnResize"), d(this, "disableOnScroll"), d(this, "onUpdate"), d(this, "isWindowEventsRegistered"), d(this, "validateElements", () => {
146
143
  if (!(this.reference instanceof HTMLElement))
147
144
  throw new Error("Invalid HTMLElement for Reference Element");
148
145
  if (!(this.popper instanceof HTMLElement))
149
146
  throw new Error("Invalid HTMLElement for Popper");
150
147
  if (typeof this.offsetDistance != "number")
151
148
  throw new Error("OffsetDistance must be a number");
152
- }), p(this, "setPopperStyleProperty", (c, f) => {
149
+ }), d(this, "setPopperStyleProperty", (c, f) => {
153
150
  this.popper.style.setProperty("--fx-popper-placement-x", `${c}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${f}px`);
154
- }), p(this, "setInitialStyles", () => {
151
+ }), d(this, "setInitialStyles", () => {
155
152
  this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
156
- }), p(this, "initPlacement", () => {
153
+ }), d(this, "initPlacement", () => {
157
154
  var c;
158
155
  this.validateElements(), this.setInitialStyles();
159
- const f = window.innerWidth, v = window.innerHeight, { popperHeight: g, popperWidth: w, refHeight: y, refWidth: H, refLeft: C, refTop: T } = Q({ reference: this.reference, popper: this.popper }), { x: O, y: L } = oe(
156
+ const f = window.innerWidth, v = window.innerHeight, { popperHeight: m, popperWidth: w, refHeight: y, refWidth: H, refLeft: T, refTop: C } = X({ reference: this.reference, popper: this.popper }), { x: O, y: L } = se(
160
157
  {
161
158
  placement: this.placement,
162
159
  refWidth: H,
163
- refTop: T,
164
- refLeft: C,
160
+ refTop: C,
161
+ refLeft: T,
165
162
  popperWidth: w,
166
163
  refHeight: y,
167
- popperHeight: g,
164
+ popperHeight: m,
168
165
  windowHeight: v,
169
166
  windowWidth: f,
170
167
  offsetDistance: this.offsetDistance
171
168
  }
172
169
  );
173
170
  this.setPopperStyleProperty(O, L), (c = this.onUpdate) == null || c.call(this, { x: O, y: L, placement: this.placement });
174
- }), p(this, "removeWindowEvents", () => {
171
+ }), d(this, "removeWindowEvents", () => {
175
172
  this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
176
- }), p(this, "attachWindowEvent", () => {
173
+ }), d(this, "attachWindowEvent", () => {
177
174
  this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
178
- }), p(this, "resetPosition", () => {
175
+ }), d(this, "resetPosition", () => {
179
176
  this.setInitialStyles();
180
- }), p(this, "updatePosition", () => {
177
+ }), d(this, "updatePosition", () => {
181
178
  this.initPlacement(), this.attachWindowEvent();
182
- }), p(this, "cleanupEvents", () => {
179
+ }), d(this, "cleanupEvents", () => {
183
180
  this.setInitialStyles(), this.removeWindowEvents();
184
181
  });
185
182
  const {
186
183
  offsetDistance: o = 10,
187
- placement: i = J,
184
+ placement: i = V,
188
185
  eventEffect: r = {},
189
- onUpdate: a
186
+ onUpdate: h
190
187
  } = n;
191
188
  if (!(e instanceof HTMLElement))
192
189
  throw new Error("Invalid HTMLElement for Reference Element");
@@ -194,8 +191,8 @@ var re = class {
194
191
  throw new Error("Invalid HTMLElement for Popper");
195
192
  if (n.offsetDistance && typeof n.offsetDistance != "number")
196
193
  throw new Error("OffsetDistance must be a number");
197
- const { disableOnResize: m, disableOnScroll: d } = r;
198
- this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = m || false, this.disableOnScroll = d || false, this.onUpdate = a;
194
+ const { disableOnResize: g, disableOnScroll: p } = r;
195
+ this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = g || false, this.disableOnScroll = p || false, this.onUpdate = h;
199
196
  }
200
197
  /**
201
198
  * Updates popper configuration and recalculates position
@@ -208,6 +205,9 @@ var re = class {
208
205
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
209
206
  }
210
207
  };
208
+ var oe = Object.defineProperty;
209
+ var re = (s, e, t) => e in s ? oe(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
210
+ var l = (s, e, t) => re(s, typeof e != "symbol" ? e + "" : e, t);
211
211
  var ae = (s, e = document.body) => e.querySelector(s);
212
212
  var A = (s, e) => {
213
213
  for (const [t, n] of Object.entries(e))
@@ -221,10 +221,10 @@ var le = ({
221
221
  }) => {
222
222
  const o = getComputedStyle(s), i = o.transition;
223
223
  if (i !== "none" && i !== "" && !n.includes(i)) {
224
- const r = "transitionend", a = () => {
225
- s.removeEventListener(r, a), e();
224
+ const r = "transitionend", h = () => {
225
+ s.removeEventListener(r, h), e();
226
226
  };
227
- s.addEventListener(r, a, { once: true });
227
+ s.addEventListener(r, h, { once: true });
228
228
  } else
229
229
  e();
230
230
  };
@@ -240,10 +240,11 @@ var he = ({
240
240
  });
241
241
  };
242
242
  var b = ({ state: s, trigger: e, popper: t }) => {
243
+ const n = s === "open";
243
244
  A(t, {
244
245
  "data-state": s
245
246
  }), A(e, {
246
- "aria-expanded": `${s}`
247
+ "aria-expanded": `${n}`
247
248
  });
248
249
  };
249
250
  var ce = class {
@@ -253,43 +254,47 @@ var ce = class {
253
254
  * @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
254
255
  * @param {string | HTMLElement} params.content - The content element selector or HTMLElement
255
256
  * @param {OverlayOptions} [params.options] - Configuration options for the overlay
256
- * @throws {Error} When trigger or content elements are invalid
257
257
  */
258
258
  constructor({ trigger: e, content: t, options: n = {} }) {
259
- h(this, "triggerElement"), h(this, "contentElement"), h(this, "triggerStrategy"), h(this, "placement"), h(this, "offsetDistance"), h(this, "preventFromCloseOutside"), h(this, "preventFromCloseInside"), h(this, "options"), h(this, "defaultState"), h(this, "popper"), h(this, "eventEffect"), h(this, "getElement", (i) => typeof i == "string" ? ae(i) : i instanceof HTMLElement ? i : void 0), h(this, "handleDocumentClick", (i) => {
259
+ l(this, "triggerElement"), l(this, "contentElement"), l(this, "triggerStrategy"), l(this, "placement"), l(this, "offsetDistance"), l(this, "preventFromCloseOutside"), l(this, "preventFromCloseInside"), l(this, "options"), l(this, "defaultState"), l(this, "popper"), l(this, "eventEffect"), l(this, "getElement", (i) => typeof i == "string" ? ae(i) : i instanceof HTMLElement ? i : void 0), l(this, "handleDocumentClick", (i) => {
260
260
  this.contentElement.getAttribute("data-state") === "open" && (!this.triggerElement.contains(i.target) && !this.preventFromCloseInside && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && this.contentElement.contains(i.target) && !this.preventFromCloseInside && this.hide());
261
- }), h(this, "handleKeyDown", (i) => {
261
+ }), l(this, "handleKeyDown", (i) => {
262
262
  i.preventDefault(), this.triggerStrategy !== "hover" && i.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
263
- }), h(this, "toggleStateOnClick", () => {
263
+ }), l(this, "toggleStateOnClick", () => {
264
264
  (this.contentElement.dataset.state || "close") === "close" ? (this.show(), this.triggerStrategy === "hover" && this.addEventOnMouseEnter()) : this.hide();
265
- }), h(this, "hideOnMouseLeaseTrigger", () => {
265
+ }), l(this, "hideOnMouseLeaseTrigger", () => {
266
266
  setTimeout(() => {
267
267
  this.contentElement.matches(":hover") || this.hide();
268
268
  }, 150);
269
- }), h(this, "hideOnMouseLeave", () => {
269
+ }), l(this, "hideOnMouseLeave", () => {
270
270
  setTimeout(() => {
271
271
  this.triggerElement.matches(":hover") || this.hide();
272
272
  }, 150);
273
- }), h(this, "addEventOnMouseEnter", () => {
273
+ }), l(this, "addEventOnMouseEnter", () => {
274
274
  this.triggerElement.addEventListener("mouseleave", this.hideOnMouseLeaseTrigger), this.contentElement.addEventListener("mouseleave", this.hideOnMouseLeave);
275
- }), h(this, "showOnMouseEnter", () => {
275
+ }), l(this, "showOnMouseEnter", () => {
276
276
  this.show(), this.addEventOnMouseEnter();
277
- }), h(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
278
- var a, m, d, c;
277
+ }), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
278
+ var h, g, p, c;
279
279
  this.popper.setOptions({
280
280
  placement: i,
281
281
  offsetDistance: r
282
- }), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (m = (a = this.options).beforeShow) == null || m.call(a), b({
282
+ }), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (g = (h = this.options).beforeShow) == null || g.call(h), b({
283
283
  state: "open",
284
284
  popper: this.contentElement,
285
285
  trigger: this.triggerElement
286
- }), this.onToggleState(false), (c = (d = this.options).onShow) == null || c.call(d);
287
- }), h(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
286
+ }), this.onToggleState(false), (c = (p = this.options).onShow) == null || c.call(p);
287
+ }), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
288
288
  this.popper.setOptions({
289
289
  placement: i,
290
- offsetDistance: r
290
+ offsetDistance: r || this.offsetDistance
291
291
  });
292
- }), h(this, "cleanup", () => {
292
+ }), l(this, "setPopperTrigger", (i, r) => {
293
+ this.cleanup(), this.popper.setOptions({
294
+ placement: r.placement || this.placement,
295
+ offsetDistance: r.offsetDistance || this.offsetDistance
296
+ }), this.triggerElement = i, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
297
+ }), l(this, "cleanup", () => {
293
298
  this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
294
299
  });
295
300
  var o;
@@ -297,7 +302,7 @@ var ce = class {
297
302
  throw new Error("Trigger element must be a valid HTML element");
298
303
  if (!(this.contentElement instanceof HTMLElement))
299
304
  throw new Error("Content element must be a valid HTML element");
300
- 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 || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (o = this.options.popper) == null ? void 0 : o.eventEffect, this.popper = new re(
305
+ 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 || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (o = this.options.popper) == null ? void 0 : o.eventEffect, this.popper = new ie(
301
306
  this.triggerElement,
302
307
  this.contentElement,
303
308
  {
@@ -353,42 +358,42 @@ var ce = class {
353
358
  }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
354
359
  }
355
360
  };
356
- var W = (s, e = document.body) => e.querySelector(s);
361
+ var P = (s, e = document.body) => e.querySelector(s);
357
362
  var U = (s, e = document.body) => Array.from(e.querySelectorAll(s));
358
- var de = (s) => typeof s == "string" ? W(s) : s;
359
- var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
363
+ var pe = (s) => typeof s == "string" ? P(s) : s;
364
+ var de = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:not([disabled])", direction: t }) => {
360
365
  let n = false;
361
- const o = de(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (a) => {
362
- if (a.preventDefault(), o.focus(), i.length === 0)
366
+ const o = pe(s) || document.body, i = typeof e == "string" ? U(e, o) : e, r = (h) => {
367
+ if (h.preventDefault(), o.focus(), i.length === 0)
363
368
  return;
364
- const m = a.key, d = document.activeElement;
365
- let c = i.findIndex((g) => g === d);
369
+ const g = h.key, p = document.activeElement;
370
+ let c = i.findIndex((m) => m === p);
366
371
  if (c === -1) {
367
- m === "ArrowUp" || m === "ArrowLeft" ? i[i.length - 1].focus() : i[0].focus();
372
+ g === "ArrowUp" || g === "ArrowLeft" ? i[i.length - 1].focus() : i[0].focus();
368
373
  return;
369
374
  }
370
- const f = (g) => g > 0 ? g - 1 : i.length - 1, v = (g) => g < i.length - 1 ? g + 1 : 0;
371
- switch (m) {
375
+ const f = (m) => m > 0 ? m - 1 : i.length - 1, v = (m) => m < i.length - 1 ? m + 1 : 0;
376
+ switch (g) {
372
377
  case "ArrowDown":
373
- a.preventDefault(), c = v(c);
378
+ h.preventDefault(), c = v(c);
374
379
  break;
375
380
  case "ArrowRight":
376
381
  break;
377
382
  case "ArrowUp":
378
- a.preventDefault(), c = f(c);
383
+ h.preventDefault(), c = f(c);
379
384
  break;
380
385
  case "ArrowLeft":
381
386
  break;
382
387
  case "Home":
383
- a.preventDefault(), c = 0;
388
+ h.preventDefault(), c = 0;
384
389
  break;
385
390
  case "End":
386
- a.preventDefault(), c = i.length - 1;
391
+ h.preventDefault(), c = i.length - 1;
387
392
  break;
388
393
  default:
389
394
  return;
390
395
  }
391
- i[c] !== d && i[c].focus();
396
+ i[c] !== p && i[c].focus();
392
397
  };
393
398
  return {
394
399
  make: () => {
@@ -399,7 +404,7 @@ var pe = ({ containerElement: s, targetChildren: e = "a:not([disabled]), button:
399
404
  }
400
405
  };
401
406
  };
402
- var K = (s, e, t) => {
407
+ var z = (s, e, t) => {
403
408
  const n = new CustomEvent(e, { detail: t });
404
409
  s.dispatchEvent(n);
405
410
  };
@@ -430,52 +435,58 @@ var S = class S2 {
430
435
  * @throws {Error} If provided elements are not valid HTMLElements
431
436
  */
432
437
  constructor(e, t = {}) {
433
- l(this, "triggerElement");
434
- l(this, "contentElement");
435
- l(this, "options");
436
- l(this, "OverlayInstance");
437
- l(this, "navigationKeys");
438
- l(this, "triggerStrategy");
439
- l(this, "placement");
440
- l(this, "offsetDistance");
441
- l(this, "preventFromCloseOutside");
442
- l(this, "preventFromCloseInside");
443
- l(this, "defaultState");
444
- l(this, "onToggle", ({ isHidden: e2 }) => {
438
+ a(this, "triggerElement");
439
+ a(this, "contentElement");
440
+ a(this, "options");
441
+ a(this, "OverlayInstance");
442
+ a(this, "navigationKeys");
443
+ a(this, "triggerStrategy");
444
+ a(this, "placement");
445
+ a(this, "offsetDistance");
446
+ a(this, "preventFromCloseOutside");
447
+ a(this, "preventFromCloseInside");
448
+ a(this, "defaultState");
449
+ a(this, "onToggle", ({ isHidden: e2 }) => {
445
450
  var t2, n2;
446
451
  (n2 = (t2 = this.options).onToggle) == null || n2.call(t2, { isHidden: e2 });
447
452
  });
448
- l(this, "beforeShow", () => {
453
+ a(this, "beforeShow", () => {
449
454
  this.contentElement.focus(), this.navigationKeys.make();
450
455
  });
451
- l(this, "beforeHide", () => {
456
+ a(this, "beforeHide", () => {
452
457
  this.contentElement.blur(), this.navigationKeys.destroy();
453
458
  });
454
- l(this, "onShow", () => {
459
+ a(this, "onShow", () => {
455
460
  var e2, t2;
456
- K(this.contentElement, "dropdown-show", {
461
+ z(this.contentElement, "dropdown-show", {
457
462
  isHidden: false
458
463
  }), (t2 = (e2 = this.options).onShow) == null || t2.call(e2);
459
464
  });
460
- l(this, "onHide", () => {
465
+ a(this, "onHide", () => {
461
466
  var e2, t2;
462
- K(this.contentElement, "dropdown-hide", {
467
+ z(this.contentElement, "dropdown-hide", {
463
468
  isHidden: true
464
469
  }), (t2 = (e2 = this.options).onHide) == null || t2.call(e2);
465
470
  });
466
- l(this, "show", () => {
471
+ a(this, "show", () => {
467
472
  this.OverlayInstance.show();
468
473
  });
469
- l(this, "hide", () => {
474
+ a(this, "hide", () => {
470
475
  this.OverlayInstance.hide();
471
476
  });
472
- l(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
477
+ a(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
473
478
  this.OverlayInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
474
479
  });
475
- l(this, "cleanup", () => {
480
+ a(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
481
+ this.OverlayInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
482
+ });
483
+ a(this, "setPopperTrigger", (e2, t2) => {
484
+ this.OverlayInstance.setPopperTrigger(e2, t2);
485
+ });
486
+ a(this, "cleanup", () => {
476
487
  this.OverlayInstance.cleanup(), x.removeInstance("dropdown", this.contentElement);
477
488
  });
478
- const n = typeof e == "string" ? W(e) : e;
489
+ const n = typeof e == "string" ? P(e) : e;
479
490
  if (!(n instanceof HTMLElement))
480
491
  throw new Error(
481
492
  "Invalid dropdown content element: Must provide either a valid HTMLElement or a selector string that resolves to an existing HTMLElement"
@@ -487,7 +498,7 @@ var S = class S2 {
487
498
  if (o)
488
499
  return o;
489
500
  const i = `[data-dropdown-trigger][data-dropdown-id=${this.contentElement.id}]`;
490
- if (this.triggerElement = W(i), !(this.triggerElement instanceof HTMLElement))
501
+ if (this.triggerElement = P(i), !(this.triggerElement instanceof HTMLElement))
491
502
  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}"`);
492
503
  this.options = t, this.triggerStrategy = this.options.triggerStrategy || this.contentElement.dataset.triggerStrategy || "click", this.placement = this.options.placement || this.contentElement.dataset.placement || "bottom-start", this.offsetDistance = this.options.offsetDistance || parseInt(`${this.contentElement.dataset.offsetDistance}`) | 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || this.contentElement.hasAttribute("data-prevent-close-outside") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || this.contentElement.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || this.contentElement.dataset.defaultState || "close", this.OverlayInstance = new ce({
493
504
  trigger: this.triggerElement,
@@ -508,7 +519,7 @@ var S = class S2 {
508
519
  },
509
520
  popper: this.options.popper
510
521
  }
511
- }), this.navigationKeys = pe({
522
+ }), this.navigationKeys = de({
512
523
  containerElement: this.contentElement,
513
524
  targetChildren: "a:not([disabled]), button:not([disabled])",
514
525
  direction: "up-down"
@@ -524,17 +535,17 @@ var S = class S2 {
524
535
  new S2(e, t);
525
536
  }
526
537
  };
527
- l(S, "autoInit", (e = "[data-fx-dropdown]") => {
538
+ a(S, "autoInit", (e = "[data-fx-dropdown]") => {
528
539
  const t = U(e);
529
540
  for (const n of t)
530
541
  new S(n);
531
542
  });
532
- var z = S;
543
+ var K = S;
533
544
 
534
545
  // src/index.js
535
546
  function Dropdown(Alpine) {
536
547
  Alpine.directive("dropdown", (el, {}, { cleanup }) => {
537
- const dropdown_ = new z(el);
548
+ const dropdown_ = new K(el);
538
549
  cleanup(() => {
539
550
  dropdown_.cleanup();
540
551
  });