@flexilla/alpine-popover 0.0.1 → 0.0.2

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.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // ../../node_modules/@flexilla/popover/dist/popover.js
3
3
  var K = Object.defineProperty;
4
4
  var U = (i, e, t) => e in i ? K(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
5
- var p = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
5
+ var h = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
6
6
  var A = (i, e = document.body) => e.querySelector(i);
7
7
  var j = (i, e = document.body) => Array.from(e.querySelectorAll(i));
8
8
  var M = (i, e, t) => {
@@ -14,20 +14,22 @@
14
14
  var a = (i, e, t) => B(i, typeof e != "symbol" ? e + "" : e, t);
15
15
  var J = "bottom";
16
16
  var N = ({ reference: i, popper: e }) => {
17
- const t = e.getBoundingClientRect(), s = i.getBoundingClientRect();
17
+ if (!i || !e)
18
+ throw new Error("Reference or popper element is null or undefined");
19
+ const t = /* @__PURE__ */ new WeakMap(), s = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = s(e), n = s(i);
18
20
  return {
19
- popperHeight: t.height,
20
- popperWidth: t.width,
21
- refHeight: s.height,
22
- refWidth: s.width,
23
- refLeft: s.left,
24
- refTop: s.top,
25
- refRight: s.right
21
+ popperHeight: o.height,
22
+ popperWidth: o.width,
23
+ refHeight: n.height,
24
+ refWidth: n.width,
25
+ refLeft: n.left,
26
+ refTop: n.top,
27
+ refRight: n.right
26
28
  };
27
29
  };
28
30
  var Q = Object.defineProperty;
29
31
  var V = (i, e, t) => e in i ? Q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
30
- var h = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
32
+ var p = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
31
33
  var X = (i, e, t, s) => {
32
34
  const o = t, n = s - (t + e);
33
35
  return o >= (i - e) / 2 && n >= (i - e) / 2;
@@ -54,7 +56,7 @@
54
56
  windowWidth: d,
55
57
  offsetDistance: c
56
58
  }) => {
57
- const m = d - s - e, v = s, D = l - t - o, C = t, u = () => Z(
59
+ const g = d - s - e, v = s, L = l - t - o, D = t, u = () => Z(
58
60
  () => ee(t, o, r, l),
59
61
  () => _(t, o, r, l),
60
62
  t,
@@ -67,29 +69,29 @@
67
69
  n,
68
70
  d,
69
71
  e
70
- ), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), H = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), T = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
71
- let g = 0, f = 0;
72
- const S = t - r - c, O = t + o + c, I = s - n - c, L = s + e + c, W = C >= r + c, F = D >= r + c, R = v >= n + c, $ = m >= n + c;
73
- switch (i.startsWith("top") ? f = W ? S : F ? O : Math.max(S, O) : i.startsWith("bottom") ? f = F ? O : W ? S : Math.max(S, O) : i.startsWith("left") ? g = R ? I : $ ? L : Math.max(I, L) : i.startsWith("right") && (g = $ ? L : R ? I : Math.max(I, L)), i) {
72
+ ), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), C = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), P = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
73
+ let m = 0, f = 0;
74
+ const T = t - r - c, S = t + o + c, O = s - n - c, I = s + e + c, W = D >= r + c, F = L >= r + c, R = v >= n + c, $ = g >= n + c;
75
+ switch (i.startsWith("top") ? f = W ? T : F ? S : Math.max(T, S) : i.startsWith("bottom") ? f = F ? S : W ? T : Math.max(S) : i.startsWith("left") ? m = R ? O : $ ? I : Math.max(O, I) : i.startsWith("right") && (m = $ ? I : R ? O : Math.max(I, O)), i) {
74
76
  case "bottom":
75
77
  case "bottom-middle":
76
78
  case "top":
77
79
  case "top-middle":
78
- g = k();
80
+ m = k();
79
81
  break;
80
82
  case "left":
81
83
  case "left-middle":
82
84
  case "right":
83
85
  case "right-middle":
84
- f = H();
86
+ f = C();
85
87
  break;
86
88
  case "bottom-start":
87
89
  case "top-start":
88
- g = T();
90
+ m = P();
89
91
  break;
90
92
  case "bottom-end":
91
93
  case "top-end":
92
- g = y();
94
+ m = y();
93
95
  break;
94
96
  case "left-start":
95
97
  case "right-start":
@@ -100,7 +102,7 @@
100
102
  f = G();
101
103
  break;
102
104
  }
103
- return { x: g, y: f };
105
+ return { x: m, y: f };
104
106
  };
105
107
  var oe = class {
106
108
  /**
@@ -109,45 +111,57 @@
109
111
  * @param popper
110
112
  * @param options
111
113
  */
114
+ /**
115
+ * Creates an instance of CreatePopper
116
+ * @param {HTMLElement} reference - The reference element to position against
117
+ * @param {HTMLElement} popper - The element to be positioned
118
+ * @param {PopperOptions} [options] - Configuration options
119
+ * @param {number} [options.offsetDistance] - Distance between popper and reference element
120
+ * @param {Placement} [options.placement] - Preferred placement of the popper
121
+ * @param {Object} [options.eventEffect] - Event handling configuration
122
+ * @param {boolean} [options.eventEffect.disableOnResize] - Disable position updates on window resize
123
+ * @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
124
+ * @param {Function} [options.onUpdate] - Callback function when position updates
125
+ */
112
126
  constructor(e, t, s = {}) {
113
- h(this, "reference"), h(this, "popper"), h(this, "offsetDistance"), h(this, "placement"), h(this, "disableOnResize"), h(this, "disableOnScroll"), h(this, "onUpdate"), h(this, "isWindowEventsRegistered"), h(this, "validateElements", () => {
127
+ 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", () => {
114
128
  if (!(this.reference instanceof HTMLElement))
115
129
  throw new Error("Invalid HTMLElement for Reference Element");
116
130
  if (!(this.popper instanceof HTMLElement))
117
131
  throw new Error("Invalid HTMLElement for Popper");
118
132
  if (typeof this.offsetDistance != "number")
119
133
  throw new Error("OffsetDistance must be a number");
120
- }), h(this, "setPopperStyleProperty", (m, v) => {
121
- this.popper.style.setProperty("--fx-popper-placement-x", `${m}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
122
- }), h(this, "setInitialStyles", () => {
134
+ }), p(this, "setPopperStyleProperty", (g, v) => {
135
+ this.popper.style.setProperty("--fx-popper-placement-x", `${g}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
136
+ }), p(this, "setInitialStyles", () => {
123
137
  this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
124
- }), h(this, "initPlacement", () => {
125
- var m;
138
+ }), p(this, "initPlacement", () => {
139
+ var g;
126
140
  this.validateElements(), this.setInitialStyles();
127
- const v = window.innerWidth, D = window.innerHeight, { popperHeight: C, popperWidth: u, refHeight: E, refWidth: k, refLeft: H, refTop: T } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
141
+ const v = window.innerWidth, L = window.innerHeight, { popperHeight: D, popperWidth: u, refHeight: E, refWidth: k, refLeft: C, refTop: P } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
128
142
  {
129
143
  placement: this.placement,
130
144
  refWidth: k,
131
- refTop: T,
132
- refLeft: H,
145
+ refTop: P,
146
+ refLeft: C,
133
147
  popperWidth: u,
134
148
  refHeight: E,
135
- popperHeight: C,
136
- windowHeight: D,
149
+ popperHeight: D,
150
+ windowHeight: L,
137
151
  windowWidth: v,
138
152
  offsetDistance: this.offsetDistance
139
153
  }
140
154
  );
141
- this.setPopperStyleProperty(y, b), (m = this.onUpdate) == null || m.call(this, { x: y, y: b, placement: this.placement });
142
- }), h(this, "removeWindowEvents", () => {
155
+ this.setPopperStyleProperty(y, b), (g = this.onUpdate) == null || g.call(this, { x: y, y: b, placement: this.placement });
156
+ }), p(this, "removeWindowEvents", () => {
143
157
  this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
144
- }), h(this, "attachWindowEvent", () => {
158
+ }), p(this, "attachWindowEvent", () => {
145
159
  this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
146
- }), h(this, "resetPosition", () => {
160
+ }), p(this, "resetPosition", () => {
147
161
  this.setInitialStyles();
148
- }), h(this, "updatePosition", () => {
162
+ }), p(this, "updatePosition", () => {
149
163
  this.initPlacement(), this.attachWindowEvent();
150
- }), h(this, "cleanupEvents", () => {
164
+ }), p(this, "cleanupEvents", () => {
151
165
  this.setInitialStyles(), this.removeWindowEvents();
152
166
  });
153
167
  const {
@@ -165,6 +179,13 @@
165
179
  const { disableOnResize: d, disableOnScroll: c } = r;
166
180
  this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = n, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = l;
167
181
  }
182
+ /**
183
+ * Updates popper configuration and recalculates position
184
+ * @public
185
+ * @param {Object} options - New configuration options
186
+ * @param {Placement} options.placement - New placement value
187
+ * @param {number} [options.offsetDistance] - New offset distance
188
+ */
168
189
  setOptions({ placement: e, offsetDistance: t }) {
169
190
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
170
191
  }
@@ -201,10 +222,11 @@
201
222
  });
202
223
  };
203
224
  var w = ({ state: i, trigger: e, popper: t }) => {
225
+ const s = i === "open";
204
226
  z(t, {
205
227
  "data-state": i
206
228
  }), z(e, {
207
- "aria-expanded": `${i}`
229
+ "aria-expanded": `${s}`
208
230
  });
209
231
  };
210
232
  var he = class {
@@ -214,7 +236,6 @@
214
236
  * @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
215
237
  * @param {string | HTMLElement} params.content - The content element selector or HTMLElement
216
238
  * @param {OverlayOptions} [params.options] - Configuration options for the overlay
217
- * @throws {Error} When trigger or content elements are invalid
218
239
  */
219
240
  constructor({ trigger: e, content: t, options: s = {} }) {
220
241
  a(this, "triggerElement"), a(this, "contentElement"), a(this, "triggerStrategy"), a(this, "placement"), a(this, "offsetDistance"), a(this, "preventFromCloseOutside"), a(this, "preventFromCloseInside"), a(this, "options"), a(this, "defaultState"), a(this, "popper"), a(this, "eventEffect"), a(this, "getElement", (n) => typeof n == "string" ? re(n) : n instanceof HTMLElement ? n : void 0), a(this, "handleDocumentClick", (n) => {
@@ -236,7 +257,7 @@
236
257
  }), a(this, "showOnMouseEnter", () => {
237
258
  this.show(), this.addEventOnMouseEnter();
238
259
  }), a(this, "setShowOptions", ({ placement: n, offsetDistance: r }) => {
239
- var l, d, c, m;
260
+ var l, d, c, g;
240
261
  this.popper.setOptions({
241
262
  placement: n,
242
263
  offsetDistance: r
@@ -244,12 +265,17 @@
244
265
  state: "open",
245
266
  popper: this.contentElement,
246
267
  trigger: this.triggerElement
247
- }), this.onToggleState(false), (m = (c = this.options).onShow) == null || m.call(c);
268
+ }), this.onToggleState(false), (g = (c = this.options).onShow) == null || g.call(c);
248
269
  }), a(this, "setPopperOptions", ({ placement: n, offsetDistance: r }) => {
249
270
  this.popper.setOptions({
250
271
  placement: n,
251
- offsetDistance: r
272
+ offsetDistance: r || this.offsetDistance
252
273
  });
274
+ }), a(this, "setPopperTrigger", (n, r) => {
275
+ this.cleanup(), this.popper.setOptions({
276
+ placement: r.placement || this.placement,
277
+ offsetDistance: r.offsetDistance || this.offsetDistance
278
+ }), this.triggerElement = n, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
253
279
  }), a(this, "cleanup", () => {
254
280
  this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
255
281
  });
@@ -314,7 +340,7 @@
314
340
  }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
315
341
  }
316
342
  };
317
- var x = class {
343
+ var H = class {
318
344
  static initGlobalRegistry() {
319
345
  window.$flexillaInstances || (window.$flexillaInstances = {});
320
346
  }
@@ -333,7 +359,7 @@
333
359
  ));
334
360
  }
335
361
  };
336
- var P = class _P {
362
+ var x = class _x {
337
363
  /**
338
364
  * Creates a new Popover instance.
339
365
  * @param {string | HTMLElement} popoverEl - The popover content element or its selector.
@@ -350,35 +376,41 @@
350
376
  * });
351
377
  */
352
378
  constructor(e, t = {}) {
353
- p(this, "triggerElement");
354
- p(this, "contentElement");
355
- p(this, "options");
356
- p(this, "PopoverInstance");
357
- p(this, "triggerStrategy");
358
- p(this, "placement");
359
- p(this, "offsetDistance");
360
- p(this, "preventFromCloseOutside");
361
- p(this, "preventFromCloseInside");
362
- p(this, "defaultState");
363
- p(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
379
+ h(this, "triggerElement");
380
+ h(this, "contentElement");
381
+ h(this, "options");
382
+ h(this, "PopoverInstance");
383
+ h(this, "triggerStrategy");
384
+ h(this, "placement");
385
+ h(this, "offsetDistance");
386
+ h(this, "preventFromCloseOutside");
387
+ h(this, "preventFromCloseInside");
388
+ h(this, "defaultState");
389
+ h(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
364
390
  this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
365
391
  });
366
- p(this, "show", () => {
392
+ h(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
393
+ this.PopoverInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
394
+ });
395
+ h(this, "setPopperTrigger", (e2, t2) => {
396
+ this.PopoverInstance.setPopperTrigger(e2, t2);
397
+ });
398
+ h(this, "show", () => {
367
399
  this.PopoverInstance.show(), M(this.contentElement, "popover-show", {
368
400
  isHidden: false
369
401
  });
370
402
  });
371
- p(this, "hide", () => {
403
+ h(this, "hide", () => {
372
404
  this.PopoverInstance.hide(), M(this.contentElement, "popover-hide", {
373
405
  isHidden: true
374
406
  });
375
407
  });
376
- p(this, "cleanup", () => {
377
- this.PopoverInstance.cleanup(), x.removeInstance("popover", this.contentElement);
408
+ h(this, "cleanup", () => {
409
+ this.PopoverInstance.cleanup(), H.removeInstance("popover", this.contentElement);
378
410
  });
379
411
  const s = typeof e == "string" ? A(e) : e;
380
412
  this.contentElement = s;
381
- const o = x.getInstance("popover", this.contentElement);
413
+ const o = H.getInstance("popover", this.contentElement);
382
414
  if (o)
383
415
  return o;
384
416
  this.triggerElement = A(`[data-popover-trigger][data-popover-id=${s.getAttribute("id")}]`), this.options = t, this.triggerStrategy = this.options.triggerStrategy || s.dataset.triggerStrategy || "click", this.placement = this.options.placement || s.dataset.placement || "bottom-middle", this.offsetDistance = this.options.offsetDistance || parseInt(`${s.dataset.offsetDistance}`) | 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || s.hasAttribute("data-prevent-close-outside") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || s.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || s.dataset.defaultState || "close", this.PopoverInstance = new he({
@@ -401,7 +433,7 @@
401
433
  },
402
434
  popper: this.options.popper
403
435
  }
404
- }), x.register("popover", this.contentElement, this);
436
+ }), H.register("popover", this.contentElement, this);
405
437
  }
406
438
  /**
407
439
  * Creates a new Popover instance with the specified options.
@@ -415,7 +447,7 @@
415
447
  * });
416
448
  */
417
449
  static init(e, t) {
418
- return new _P(e, t);
450
+ return new _x(e, t);
419
451
  }
420
452
  /**
421
453
  * Automatically initializes all popover elements matching the specified selector.
@@ -430,14 +462,14 @@
430
462
  static autoInit(e = "[data-fx-popover]") {
431
463
  const t = j(e);
432
464
  for (const s of t)
433
- new _P(s);
465
+ new _x(s);
434
466
  }
435
467
  };
436
468
 
437
469
  // src/index.js
438
470
  function Popover(Alpine) {
439
471
  Alpine.directive("popover", (el, {}, { cleanup }) => {
440
- const popover_ = new P(el);
472
+ const popover_ = new x(el);
441
473
  cleanup(() => {
442
474
  popover_.cleanup();
443
475
  });
package/dist/cdn.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{var q=Object.defineProperty,B=(s,e,t)=>e in s?q(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,c=(s,e,t)=>B(s,typeof e!="symbol"?e+"":e,t),j=(s,e=document.body)=>e.querySelector(s),J=(s,e=document.body)=>Array.from(e.querySelectorAll(s)),x=(s,e,t)=>{let i=new CustomEvent(e,{detail:t});s.dispatchEvent(i)},N=Object.defineProperty,Q=(s,e,t)=>e in s?N(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,a=(s,e,t)=>Q(s,typeof e!="symbol"?e+"":e,t),V="bottom",X=({reference:s,popper:e})=>{let t=e.getBoundingClientRect(),i=s.getBoundingClientRect();return{popperHeight:t.height,popperWidth:t.width,refHeight:i.height,refWidth:i.width,refLeft:i.left,refTop:i.top,refRight:i.right}},Y=Object.defineProperty,Z=(s,e,t)=>e in s?Y(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,h=(s,e,t)=>Z(s,typeof e!="symbol"?e+"":e,t),_=(s,e,t,i)=>{let o=t,n=i-(t+e);return o>=(s-e)/2&&n>=(s-e)/2},ee=(s,e,t,i)=>(s-e)/2<=t&&t+s/2+e/2<=i,te=(s,e,t,i,o)=>t>o-i?e()?window.innerHeight-o:t-o:s()?0:t+i,ie=(s,e,t,i)=>s<=i&&t-s<=e,se=(s,e,t,i)=>t<=i&&-s<=e,ne=(s,e,t,i,o,n)=>{let r=o-t-n,l=t-i,d=t+n-i+(o-t-n),p=r>=0?o-i:l>=0?t-i:t;return s()?0:e()?d:p},oe=(s,e,t,i)=>s<=t&&e-s-i>=s,re=(s,e)=>s>=e,ae=({placement:s,refWidth:e,refTop:t,refLeft:i,refHeight:o,popperWidth:n,popperHeight:r,windowHeight:l,windowWidth:d,offsetDistance:p})=>{let m=d-i-e,v=i,H=l-t-o,k=t,E=()=>te(()=>se(t,o,r,l),()=>ie(t,o,r,l),t,o,r),u=()=>ne(()=>oe(i,d,n,e),()=>re(i,n),i,n,d,e),P=()=>_(n,e,i,d)?i+e/2-n/2:u(),T=()=>ee(r,o,t,l)?t+o/2-r/2:E(),M=()=>i+n<=d?i:u(),b=()=>i+e-n>=0?i+e-n:u(),S=()=>t+r<=l?t:E(),U=()=>t+o-r>=0?t+o-r:E(),g=0,f=0,O=t-r-p,L=t+o+p,I=i-n-p,D=i+e+p,R=k>=r+p,$=H>=r+p,A=v>=n+p,z=m>=n+p;switch(s.startsWith("top")?f=R?O:$?L:Math.max(O,L):s.startsWith("bottom")?f=$?L:R?O:Math.max(O,L):s.startsWith("left")?g=A?I:z?D:Math.max(I,D):s.startsWith("right")&&(g=z?D:A?I:Math.max(I,D)),s){case"bottom":case"bottom-middle":case"top":case"top-middle":g=P();break;case"left":case"left-middle":case"right":case"right-middle":f=T();break;case"bottom-start":case"top-start":g=M();break;case"bottom-end":case"top-end":g=b();break;case"left-start":case"right-start":f=S();break;case"left-end":case"right-end":f=U();break}return{x:g,y:f}},W=class{constructor(e,t,i={}){h(this,"reference"),h(this,"popper"),h(this,"offsetDistance"),h(this,"placement"),h(this,"disableOnResize"),h(this,"disableOnScroll"),h(this,"onUpdate"),h(this,"isWindowEventsRegistered"),h(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")}),h(this,"setPopperStyleProperty",(m,v)=>{this.popper.style.setProperty("--fx-popper-placement-x",`${m}px`),this.popper.style.setProperty("--fx-popper-placement-y",`${v}px`)}),h(this,"setInitialStyles",()=>{this.popper.style.setProperty("--fx-popper-placement-x",""),this.popper.style.setProperty("--fx-popper-placement-y","")}),h(this,"initPlacement",()=>{var m;this.validateElements(),this.setInitialStyles();let v=window.innerWidth,H=window.innerHeight,{popperHeight:k,popperWidth:E,refHeight:u,refWidth:P,refLeft:T,refTop:M}=X({reference:this.reference,popper:this.popper}),{x:b,y:S}=ae({placement:this.placement,refWidth:P,refTop:M,refLeft:T,popperWidth:E,refHeight:u,popperHeight:k,windowHeight:H,windowWidth:v,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(b,S),(m=this.onUpdate)==null||m.call(this,{x:b,y:S,placement:this.placement})}),h(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),h(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),h(this,"resetPosition",()=>{this.setInitialStyles()}),h(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),h(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});let{offsetDistance:o=10,placement:n=V,eventEffect:r={},onUpdate:l}=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:d,disableOnScroll:p}=r;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=t,this.offsetDistance=o,this.placement=n,this.disableOnResize=d||!1,this.disableOnScroll=p||!1,this.onUpdate=l}setOptions({placement:e,offsetDistance:t}){this.placement=e,this.offsetDistance=t||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}},le=(s,e=document.body)=>e.querySelector(s),G=(s,e)=>{for(let[t,i]of Object.entries(e))s.setAttribute(t,i)},he=({element:s,callback:e,type:t,keysCheck:i})=>{let o=getComputedStyle(s),n=o.transition;if(n!=="none"&&n!==""&&!i.includes(n)){let r="transitionend",l=()=>{s.removeEventListener(r,l),e()};s.addEventListener(r,l,{once:!0})}else e()},pe=({element:s,callback:e})=>{he({element:s,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},w=({state:s,trigger:e,popper:t})=>{G(t,{"data-state":s}),G(e,{"aria-expanded":`${s}`})},F=class{constructor({trigger:e,content:t,options:i={}}){a(this,"triggerElement"),a(this,"contentElement"),a(this,"triggerStrategy"),a(this,"placement"),a(this,"offsetDistance"),a(this,"preventFromCloseOutside"),a(this,"preventFromCloseInside"),a(this,"options"),a(this,"defaultState"),a(this,"popper"),a(this,"eventEffect"),a(this,"getElement",n=>typeof n=="string"?le(n):n instanceof HTMLElement?n:void 0),a(this,"handleDocumentClick",n=>{this.contentElement.getAttribute("data-state")==="open"&&(!this.triggerElement.contains(n.target)&&!this.preventFromCloseInside&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&!this.contentElement.contains(n.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&!this.contentElement.contains(n.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&this.contentElement.contains(n.target)&&!this.preventFromCloseInside&&this.hide())}),a(this,"handleKeyDown",n=>{n.preventDefault(),this.triggerStrategy!=="hover"&&n.key==="Escape"&&this.contentElement.getAttribute("data-state")==="open"&&(this.preventFromCloseOutside||this.hide())}),a(this,"toggleStateOnClick",()=>{(this.contentElement.dataset.state||"close")==="close"?(this.show(),this.triggerStrategy==="hover"&&this.addEventOnMouseEnter()):this.hide()}),a(this,"hideOnMouseLeaseTrigger",()=>{setTimeout(()=>{this.contentElement.matches(":hover")||this.hide()},150)}),a(this,"hideOnMouseLeave",()=>{setTimeout(()=>{this.triggerElement.matches(":hover")||this.hide()},150)}),a(this,"addEventOnMouseEnter",()=>{this.triggerElement.addEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.addEventListener("mouseleave",this.hideOnMouseLeave)}),a(this,"showOnMouseEnter",()=>{this.show(),this.addEventOnMouseEnter()}),a(this,"setShowOptions",({placement:n,offsetDistance:r})=>{var l,d,p,m;this.popper.setOptions({placement:n,offsetDistance:r}),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(d=(l=this.options).beforeShow)==null||d.call(l),w({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(m=(p=this.options).onShow)==null||m.call(p)}),a(this,"setPopperOptions",({placement:n,offsetDistance:r})=>{this.popper.setOptions({placement:n,offsetDistance:r})}),a(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 W(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),w({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),w({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(){w({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():w({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}},y=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(n=>n.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))}},C=class s{constructor(e,t={}){c(this,"triggerElement"),c(this,"contentElement"),c(this,"options"),c(this,"PopoverInstance"),c(this,"triggerStrategy"),c(this,"placement"),c(this,"offsetDistance"),c(this,"preventFromCloseOutside"),c(this,"preventFromCloseInside"),c(this,"defaultState"),c(this,"setShowOptions",({placement:n,offsetDistance:r})=>{this.PopoverInstance.setShowOptions({placement:n,offsetDistance:r})}),c(this,"show",()=>{this.PopoverInstance.show(),x(this.contentElement,"popover-show",{isHidden:!1})}),c(this,"hide",()=>{this.PopoverInstance.hide(),x(this.contentElement,"popover-hide",{isHidden:!0})}),c(this,"cleanup",()=>{this.PopoverInstance.cleanup(),y.removeInstance("popover",this.contentElement)});let i=typeof e=="string"?j(e):e;this.contentElement=i;let o=y.getInstance("popover",this.contentElement);if(o)return o;this.triggerElement=j(`[data-popover-trigger][data-popover-id=${i.getAttribute("id")}]`),this.options=t,this.triggerStrategy=this.options.triggerStrategy||i.dataset.triggerStrategy||"click",this.placement=this.options.placement||i.dataset.placement||"bottom-middle",this.offsetDistance=this.options.offsetDistance||parseInt(`${i.dataset.offsetDistance}`)|6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||i.hasAttribute("data-prevent-close-outside")||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||i.hasAttribute("data-prevent-close-inside")||!1,this.defaultState=this.options.defaultState||i.dataset.defaultState||"close",this.PopoverInstance=new F({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,onShow:this.options.onShow,onHide:this.options.onHide,onToggle:({isHidden:n})=>{var r,l;(l=(r=this.options).onToggle)==null||l.call(r,{isHidden:n}),x(this.contentElement,"popover-toggle",{isHidden:n})},popper:this.options.popper}}),y.register("popover",this.contentElement,this)}static init(e,t){return new s(e,t)}static autoInit(e="[data-fx-popover]"){let t=J(e);for(let i of t)new s(i)}};function ce(s){s.directive("popover",(e,{},{cleanup:t})=>{let i=new C(e);t(()=>{i.cleanup()})})}var K=ce;document.addEventListener("alpine:init",()=>{K(window.Alpine)});})();
1
+ (()=>{var q=Object.defineProperty,B=(i,e,t)=>e in i?q(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,p=(i,e,t)=>B(i,typeof e!="symbol"?e+"":e,t),j=(i,e=document.body)=>e.querySelector(i),J=(i,e=document.body)=>Array.from(e.querySelectorAll(i)),W=(i,e,t)=>{let s=new CustomEvent(e,{detail:t});i.dispatchEvent(s)},N=Object.defineProperty,Q=(i,e,t)=>e in i?N(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,a=(i,e,t)=>Q(i,typeof e!="symbol"?e+"":e,t),V="bottom",X=({reference:i,popper:e})=>{if(!i||!e)throw new Error("Reference or popper element is null or undefined");let t=new WeakMap,s=r=>(t.has(r)||t.set(r,r.getBoundingClientRect()),t.get(r)),o=s(e),n=s(i);return{popperHeight:o.height,popperWidth:o.width,refHeight:n.height,refWidth:n.width,refLeft:n.left,refTop:n.top,refRight:n.right}},Y=Object.defineProperty,Z=(i,e,t)=>e in i?Y(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,h=(i,e,t)=>Z(i,typeof e!="symbol"?e+"":e,t),_=(i,e,t,s)=>{let o=t,n=s-(t+e);return o>=(i-e)/2&&n>=(i-e)/2},ee=(i,e,t,s)=>(i-e)/2<=t&&t+i/2+e/2<=s,te=(i,e,t,s,o)=>t>o-s?e()?window.innerHeight-o:t-o:i()?0:t+s,se=(i,e,t,s)=>i<=s&&t-i<=e,ie=(i,e,t,s)=>t<=s&&-i<=e,ne=(i,e,t,s,o,n)=>{let r=o-t-n,l=t-s,d=t+n-s+(o-t-n),c=r>=0?o-s:l>=0?t-s:t;return i()?0:e()?d:c},oe=(i,e,t,s)=>i<=t&&e-i-s>=i,re=(i,e)=>i>=e,ae=({placement:i,refWidth:e,refTop:t,refLeft:s,refHeight:o,popperWidth:n,popperHeight:r,windowHeight:l,windowWidth:d,offsetDistance:c})=>{let m=d-s-e,v=s,P=l-t-o,k=t,E=()=>te(()=>ie(t,o,r,l),()=>se(t,o,r,l),t,o,r),u=()=>ne(()=>oe(s,d,n,e),()=>re(s,n),s,n,d,e),C=()=>_(n,e,s,d)?s+e/2-n/2:u(),H=()=>ee(r,o,t,l)?t+o/2-r/2:E(),T=()=>s+n<=d?s:u(),b=()=>s+e-n>=0?s+e-n:u(),S=()=>t+r<=l?t:E(),U=()=>t+o-r>=0?t+o-r:E(),g=0,f=0,M=t-r-c,O=t+o+c,D=s-n-c,L=s+e+c,R=k>=r+c,$=P>=r+c,A=v>=n+c,z=m>=n+c;switch(i.startsWith("top")?f=R?M:$?O:Math.max(M,O):i.startsWith("bottom")?f=$?O:R?M:Math.max(O):i.startsWith("left")?g=A?D:z?L:Math.max(D,L):i.startsWith("right")&&(g=z?L:A?D:Math.max(L,D)),i){case"bottom":case"bottom-middle":case"top":case"top-middle":g=C();break;case"left":case"left-middle":case"right":case"right-middle":f=H();break;case"bottom-start":case"top-start":g=T();break;case"bottom-end":case"top-end":g=b();break;case"left-start":case"right-start":f=S();break;case"left-end":case"right-end":f=U();break}return{x:g,y:f}},x=class{constructor(e,t,s={}){h(this,"reference"),h(this,"popper"),h(this,"offsetDistance"),h(this,"placement"),h(this,"disableOnResize"),h(this,"disableOnScroll"),h(this,"onUpdate"),h(this,"isWindowEventsRegistered"),h(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")}),h(this,"setPopperStyleProperty",(m,v)=>{this.popper.style.setProperty("--fx-popper-placement-x",`${m}px`),this.popper.style.setProperty("--fx-popper-placement-y",`${v}px`)}),h(this,"setInitialStyles",()=>{this.popper.style.setProperty("--fx-popper-placement-x",""),this.popper.style.setProperty("--fx-popper-placement-y","")}),h(this,"initPlacement",()=>{var m;this.validateElements(),this.setInitialStyles();let v=window.innerWidth,P=window.innerHeight,{popperHeight:k,popperWidth:E,refHeight:u,refWidth:C,refLeft:H,refTop:T}=X({reference:this.reference,popper:this.popper}),{x:b,y:S}=ae({placement:this.placement,refWidth:C,refTop:T,refLeft:H,popperWidth:E,refHeight:u,popperHeight:k,windowHeight:P,windowWidth:v,offsetDistance:this.offsetDistance});this.setPopperStyleProperty(b,S),(m=this.onUpdate)==null||m.call(this,{x:b,y:S,placement:this.placement})}),h(this,"removeWindowEvents",()=>{this.isWindowEventsRegistered&&(!this.disableOnResize&&window.removeEventListener("resize",this.updatePosition),!this.disableOnScroll&&window.removeEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!1)}),h(this,"attachWindowEvent",()=>{this.isWindowEventsRegistered&&this.removeWindowEvents(),this.disableOnResize||window.addEventListener("resize",this.updatePosition),this.disableOnScroll||window.addEventListener("scroll",this.updatePosition),this.isWindowEventsRegistered=!0}),h(this,"resetPosition",()=>{this.setInitialStyles()}),h(this,"updatePosition",()=>{this.initPlacement(),this.attachWindowEvent()}),h(this,"cleanupEvents",()=>{this.setInitialStyles(),this.removeWindowEvents()});let{offsetDistance:o=10,placement:n=V,eventEffect:r={},onUpdate:l}=s;if(!(e instanceof HTMLElement))throw new Error("Invalid HTMLElement for Reference Element");if(!(t instanceof HTMLElement))throw new Error("Invalid HTMLElement for Popper");if(s.offsetDistance&&typeof s.offsetDistance!="number")throw new Error("OffsetDistance must be a number");let{disableOnResize:d,disableOnScroll:c}=r;this.isWindowEventsRegistered=!1,this.reference=e,this.popper=t,this.offsetDistance=o,this.placement=n,this.disableOnResize=d||!1,this.disableOnScroll=c||!1,this.onUpdate=l}setOptions({placement:e,offsetDistance:t}){this.placement=e,this.offsetDistance=t||this.offsetDistance,this.initPlacement(),this.attachWindowEvent()}},le=(i,e=document.body)=>e.querySelector(i),G=(i,e)=>{for(let[t,s]of Object.entries(e))i.setAttribute(t,s)},he=({element:i,callback:e,type:t,keysCheck:s})=>{let o=getComputedStyle(i),n=o.transition;if(n!=="none"&&n!==""&&!s.includes(n)){let r="transitionend",l=()=>{i.removeEventListener(r,l),e()};i.addEventListener(r,l,{once:!0})}else e()},pe=({element:i,callback:e})=>{he({element:i,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},w=({state:i,trigger:e,popper:t})=>{let s=i==="open";G(t,{"data-state":i}),G(e,{"aria-expanded":`${s}`})},F=class{constructor({trigger:e,content:t,options:s={}}){a(this,"triggerElement"),a(this,"contentElement"),a(this,"triggerStrategy"),a(this,"placement"),a(this,"offsetDistance"),a(this,"preventFromCloseOutside"),a(this,"preventFromCloseInside"),a(this,"options"),a(this,"defaultState"),a(this,"popper"),a(this,"eventEffect"),a(this,"getElement",n=>typeof n=="string"?le(n):n instanceof HTMLElement?n:void 0),a(this,"handleDocumentClick",n=>{this.contentElement.getAttribute("data-state")==="open"&&(!this.triggerElement.contains(n.target)&&!this.preventFromCloseInside&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&!this.contentElement.contains(n.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&!this.contentElement.contains(n.target)&&!this.preventFromCloseOutside?this.hide():!this.triggerElement.contains(n.target)&&this.contentElement.contains(n.target)&&!this.preventFromCloseInside&&this.hide())}),a(this,"handleKeyDown",n=>{n.preventDefault(),this.triggerStrategy!=="hover"&&n.key==="Escape"&&this.contentElement.getAttribute("data-state")==="open"&&(this.preventFromCloseOutside||this.hide())}),a(this,"toggleStateOnClick",()=>{(this.contentElement.dataset.state||"close")==="close"?(this.show(),this.triggerStrategy==="hover"&&this.addEventOnMouseEnter()):this.hide()}),a(this,"hideOnMouseLeaseTrigger",()=>{setTimeout(()=>{this.contentElement.matches(":hover")||this.hide()},150)}),a(this,"hideOnMouseLeave",()=>{setTimeout(()=>{this.triggerElement.matches(":hover")||this.hide()},150)}),a(this,"addEventOnMouseEnter",()=>{this.triggerElement.addEventListener("mouseleave",this.hideOnMouseLeaseTrigger),this.contentElement.addEventListener("mouseleave",this.hideOnMouseLeave)}),a(this,"showOnMouseEnter",()=>{this.show(),this.addEventOnMouseEnter()}),a(this,"setShowOptions",({placement:n,offsetDistance:r})=>{var l,d,c,m;this.popper.setOptions({placement:n,offsetDistance:r}),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(d=(l=this.options).beforeShow)==null||d.call(l),w({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(m=(c=this.options).onShow)==null||m.call(c)}),a(this,"setPopperOptions",({placement:n,offsetDistance:r})=>{this.popper.setOptions({placement:n,offsetDistance:r||this.offsetDistance})}),a(this,"setPopperTrigger",(n,r)=>{this.cleanup(),this.popper.setOptions({placement:r.placement||this.placement,offsetDistance:r.offsetDistance||this.offsetDistance}),this.triggerElement=n,this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}),a(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=s,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,s;(s=(t=this.options).onToggle)==null||s.call(t,{isHidden:e})}show(){var e,t,s,o;this.popper.updatePosition(),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("click",this.handleDocumentClick),(t=(e=this.options).beforeShow)==null||t.call(e),w({state:"open",popper:this.contentElement,trigger:this.triggerElement}),this.onToggleState(!1),(o=(s=this.options).onShow)==null||o.call(s)}hide(){var e,t;(t=(e=this.options).beforeHide)==null||t.call(e),w({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 s,o;this.onToggleState(!0),this.popper.cleanupEvents(),(o=(s=this.options).onHide)==null||o.call(s)}})}initInstance(){w({state:this.defaultState,popper:this.contentElement,trigger:this.triggerElement}),this.defaultState==="open"?this.show():w({state:"close",popper:this.contentElement,trigger:this.triggerElement}),this.triggerElement.addEventListener("click",this.toggleStateOnClick),this.triggerStrategy==="hover"&&this.triggerElement.addEventListener("mouseenter",this.showOnMouseEnter)}},y=class{static initGlobalRegistry(){window.$flexillaInstances||(window.$flexillaInstances={})}static register(e,t,s){return this.initGlobalRegistry(),window.$flexillaInstances[e]||(window.$flexillaInstances[e]=[]),this.getInstance(e,t)||(window.$flexillaInstances[e].push({element:t,instance:s}),s)}static getInstance(e,t){var s,o;return this.initGlobalRegistry(),(o=(s=window.$flexillaInstances[e])==null?void 0:s.find(n=>n.element===t))==null?void 0:o.instance}static removeInstance(e,t){this.initGlobalRegistry(),window.$flexillaInstances[e]&&(window.$flexillaInstances[e]=window.$flexillaInstances[e].filter(s=>s.element!==t))}},I=class i{constructor(e,t={}){p(this,"triggerElement"),p(this,"contentElement"),p(this,"options"),p(this,"PopoverInstance"),p(this,"triggerStrategy"),p(this,"placement"),p(this,"offsetDistance"),p(this,"preventFromCloseOutside"),p(this,"preventFromCloseInside"),p(this,"defaultState"),p(this,"setShowOptions",({placement:n,offsetDistance:r})=>{this.PopoverInstance.setShowOptions({placement:n,offsetDistance:r})}),p(this,"setOptions",({placement:n,offsetDistance:r})=>{this.PopoverInstance.setPopperOptions({placement:n,offsetDistance:r})}),p(this,"setPopperTrigger",(n,r)=>{this.PopoverInstance.setPopperTrigger(n,r)}),p(this,"show",()=>{this.PopoverInstance.show(),W(this.contentElement,"popover-show",{isHidden:!1})}),p(this,"hide",()=>{this.PopoverInstance.hide(),W(this.contentElement,"popover-hide",{isHidden:!0})}),p(this,"cleanup",()=>{this.PopoverInstance.cleanup(),y.removeInstance("popover",this.contentElement)});let s=typeof e=="string"?j(e):e;this.contentElement=s;let o=y.getInstance("popover",this.contentElement);if(o)return o;this.triggerElement=j(`[data-popover-trigger][data-popover-id=${s.getAttribute("id")}]`),this.options=t,this.triggerStrategy=this.options.triggerStrategy||s.dataset.triggerStrategy||"click",this.placement=this.options.placement||s.dataset.placement||"bottom-middle",this.offsetDistance=this.options.offsetDistance||parseInt(`${s.dataset.offsetDistance}`)|6,this.preventFromCloseOutside=this.options.preventFromCloseOutside||s.hasAttribute("data-prevent-close-outside")||!1,this.preventFromCloseInside=this.options.preventCloseFromInside||s.hasAttribute("data-prevent-close-inside")||!1,this.defaultState=this.options.defaultState||s.dataset.defaultState||"close",this.PopoverInstance=new F({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,onShow:this.options.onShow,onHide:this.options.onHide,onToggle:({isHidden:n})=>{var r,l;(l=(r=this.options).onToggle)==null||l.call(r,{isHidden:n}),W(this.contentElement,"popover-toggle",{isHidden:n})},popper:this.options.popper}}),y.register("popover",this.contentElement,this)}static init(e,t){return new i(e,t)}static autoInit(e="[data-fx-popover]"){let t=J(e);for(let s of t)new i(s)}};function ce(i){i.directive("popover",(e,{},{cleanup:t})=>{let s=new I(e);t(()=>{s.cleanup()})})}var K=ce;document.addEventListener("alpine:init",()=>{K(window.Alpine)});})();
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(module_exports);
26
26
  // ../../node_modules/@flexilla/popover/dist/popover.js
27
27
  var K = Object.defineProperty;
28
28
  var U = (i, e, t) => e in i ? K(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
29
- var p = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
29
+ var h = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
30
30
  var A = (i, e = document.body) => e.querySelector(i);
31
31
  var j = (i, e = document.body) => Array.from(e.querySelectorAll(i));
32
32
  var M = (i, e, t) => {
@@ -38,20 +38,22 @@ var B = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, wr
38
38
  var a = (i, e, t) => B(i, typeof e != "symbol" ? e + "" : e, t);
39
39
  var J = "bottom";
40
40
  var N = ({ reference: i, popper: e }) => {
41
- const t = e.getBoundingClientRect(), s = i.getBoundingClientRect();
41
+ if (!i || !e)
42
+ throw new Error("Reference or popper element is null or undefined");
43
+ const t = /* @__PURE__ */ new WeakMap(), s = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = s(e), n = s(i);
42
44
  return {
43
- popperHeight: t.height,
44
- popperWidth: t.width,
45
- refHeight: s.height,
46
- refWidth: s.width,
47
- refLeft: s.left,
48
- refTop: s.top,
49
- refRight: s.right
45
+ popperHeight: o.height,
46
+ popperWidth: o.width,
47
+ refHeight: n.height,
48
+ refWidth: n.width,
49
+ refLeft: n.left,
50
+ refTop: n.top,
51
+ refRight: n.right
50
52
  };
51
53
  };
52
54
  var Q = Object.defineProperty;
53
55
  var V = (i, e, t) => e in i ? Q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
54
- var h = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
56
+ var p = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
55
57
  var X = (i, e, t, s) => {
56
58
  const o = t, n = s - (t + e);
57
59
  return o >= (i - e) / 2 && n >= (i - e) / 2;
@@ -78,7 +80,7 @@ var ne = ({
78
80
  windowWidth: d,
79
81
  offsetDistance: c
80
82
  }) => {
81
- const m = d - s - e, v = s, D = l - t - o, C = t, u = () => Z(
83
+ const g = d - s - e, v = s, L = l - t - o, D = t, u = () => Z(
82
84
  () => ee(t, o, r, l),
83
85
  () => _(t, o, r, l),
84
86
  t,
@@ -91,29 +93,29 @@ var ne = ({
91
93
  n,
92
94
  d,
93
95
  e
94
- ), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), H = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), T = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
95
- let g = 0, f = 0;
96
- const S = t - r - c, O = t + o + c, I = s - n - c, L = s + e + c, W = C >= r + c, F = D >= r + c, R = v >= n + c, $ = m >= n + c;
97
- switch (i.startsWith("top") ? f = W ? S : F ? O : Math.max(S, O) : i.startsWith("bottom") ? f = F ? O : W ? S : Math.max(S, O) : i.startsWith("left") ? g = R ? I : $ ? L : Math.max(I, L) : i.startsWith("right") && (g = $ ? L : R ? I : Math.max(I, L)), i) {
96
+ ), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), C = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), P = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
97
+ let m = 0, f = 0;
98
+ const T = t - r - c, S = t + o + c, O = s - n - c, I = s + e + c, W = D >= r + c, F = L >= r + c, R = v >= n + c, $ = g >= n + c;
99
+ switch (i.startsWith("top") ? f = W ? T : F ? S : Math.max(T, S) : i.startsWith("bottom") ? f = F ? S : W ? T : Math.max(S) : i.startsWith("left") ? m = R ? O : $ ? I : Math.max(O, I) : i.startsWith("right") && (m = $ ? I : R ? O : Math.max(I, O)), i) {
98
100
  case "bottom":
99
101
  case "bottom-middle":
100
102
  case "top":
101
103
  case "top-middle":
102
- g = k();
104
+ m = k();
103
105
  break;
104
106
  case "left":
105
107
  case "left-middle":
106
108
  case "right":
107
109
  case "right-middle":
108
- f = H();
110
+ f = C();
109
111
  break;
110
112
  case "bottom-start":
111
113
  case "top-start":
112
- g = T();
114
+ m = P();
113
115
  break;
114
116
  case "bottom-end":
115
117
  case "top-end":
116
- g = y();
118
+ m = y();
117
119
  break;
118
120
  case "left-start":
119
121
  case "right-start":
@@ -124,7 +126,7 @@ var ne = ({
124
126
  f = G();
125
127
  break;
126
128
  }
127
- return { x: g, y: f };
129
+ return { x: m, y: f };
128
130
  };
129
131
  var oe = class {
130
132
  /**
@@ -133,45 +135,57 @@ var oe = class {
133
135
  * @param popper
134
136
  * @param options
135
137
  */
138
+ /**
139
+ * Creates an instance of CreatePopper
140
+ * @param {HTMLElement} reference - The reference element to position against
141
+ * @param {HTMLElement} popper - The element to be positioned
142
+ * @param {PopperOptions} [options] - Configuration options
143
+ * @param {number} [options.offsetDistance] - Distance between popper and reference element
144
+ * @param {Placement} [options.placement] - Preferred placement of the popper
145
+ * @param {Object} [options.eventEffect] - Event handling configuration
146
+ * @param {boolean} [options.eventEffect.disableOnResize] - Disable position updates on window resize
147
+ * @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
148
+ * @param {Function} [options.onUpdate] - Callback function when position updates
149
+ */
136
150
  constructor(e, t, s = {}) {
137
- h(this, "reference"), h(this, "popper"), h(this, "offsetDistance"), h(this, "placement"), h(this, "disableOnResize"), h(this, "disableOnScroll"), h(this, "onUpdate"), h(this, "isWindowEventsRegistered"), h(this, "validateElements", () => {
151
+ 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", () => {
138
152
  if (!(this.reference instanceof HTMLElement))
139
153
  throw new Error("Invalid HTMLElement for Reference Element");
140
154
  if (!(this.popper instanceof HTMLElement))
141
155
  throw new Error("Invalid HTMLElement for Popper");
142
156
  if (typeof this.offsetDistance != "number")
143
157
  throw new Error("OffsetDistance must be a number");
144
- }), h(this, "setPopperStyleProperty", (m, v) => {
145
- this.popper.style.setProperty("--fx-popper-placement-x", `${m}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
146
- }), h(this, "setInitialStyles", () => {
158
+ }), p(this, "setPopperStyleProperty", (g, v) => {
159
+ this.popper.style.setProperty("--fx-popper-placement-x", `${g}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
160
+ }), p(this, "setInitialStyles", () => {
147
161
  this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
148
- }), h(this, "initPlacement", () => {
149
- var m;
162
+ }), p(this, "initPlacement", () => {
163
+ var g;
150
164
  this.validateElements(), this.setInitialStyles();
151
- const v = window.innerWidth, D = window.innerHeight, { popperHeight: C, popperWidth: u, refHeight: E, refWidth: k, refLeft: H, refTop: T } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
165
+ const v = window.innerWidth, L = window.innerHeight, { popperHeight: D, popperWidth: u, refHeight: E, refWidth: k, refLeft: C, refTop: P } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
152
166
  {
153
167
  placement: this.placement,
154
168
  refWidth: k,
155
- refTop: T,
156
- refLeft: H,
169
+ refTop: P,
170
+ refLeft: C,
157
171
  popperWidth: u,
158
172
  refHeight: E,
159
- popperHeight: C,
160
- windowHeight: D,
173
+ popperHeight: D,
174
+ windowHeight: L,
161
175
  windowWidth: v,
162
176
  offsetDistance: this.offsetDistance
163
177
  }
164
178
  );
165
- this.setPopperStyleProperty(y, b), (m = this.onUpdate) == null || m.call(this, { x: y, y: b, placement: this.placement });
166
- }), h(this, "removeWindowEvents", () => {
179
+ this.setPopperStyleProperty(y, b), (g = this.onUpdate) == null || g.call(this, { x: y, y: b, placement: this.placement });
180
+ }), p(this, "removeWindowEvents", () => {
167
181
  this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
168
- }), h(this, "attachWindowEvent", () => {
182
+ }), p(this, "attachWindowEvent", () => {
169
183
  this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
170
- }), h(this, "resetPosition", () => {
184
+ }), p(this, "resetPosition", () => {
171
185
  this.setInitialStyles();
172
- }), h(this, "updatePosition", () => {
186
+ }), p(this, "updatePosition", () => {
173
187
  this.initPlacement(), this.attachWindowEvent();
174
- }), h(this, "cleanupEvents", () => {
188
+ }), p(this, "cleanupEvents", () => {
175
189
  this.setInitialStyles(), this.removeWindowEvents();
176
190
  });
177
191
  const {
@@ -189,6 +203,13 @@ var oe = class {
189
203
  const { disableOnResize: d, disableOnScroll: c } = r;
190
204
  this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = n, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = l;
191
205
  }
206
+ /**
207
+ * Updates popper configuration and recalculates position
208
+ * @public
209
+ * @param {Object} options - New configuration options
210
+ * @param {Placement} options.placement - New placement value
211
+ * @param {number} [options.offsetDistance] - New offset distance
212
+ */
192
213
  setOptions({ placement: e, offsetDistance: t }) {
193
214
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
194
215
  }
@@ -225,10 +246,11 @@ var le = ({
225
246
  });
226
247
  };
227
248
  var w = ({ state: i, trigger: e, popper: t }) => {
249
+ const s = i === "open";
228
250
  z(t, {
229
251
  "data-state": i
230
252
  }), z(e, {
231
- "aria-expanded": `${i}`
253
+ "aria-expanded": `${s}`
232
254
  });
233
255
  };
234
256
  var he = class {
@@ -238,7 +260,6 @@ var he = class {
238
260
  * @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
239
261
  * @param {string | HTMLElement} params.content - The content element selector or HTMLElement
240
262
  * @param {OverlayOptions} [params.options] - Configuration options for the overlay
241
- * @throws {Error} When trigger or content elements are invalid
242
263
  */
243
264
  constructor({ trigger: e, content: t, options: s = {} }) {
244
265
  a(this, "triggerElement"), a(this, "contentElement"), a(this, "triggerStrategy"), a(this, "placement"), a(this, "offsetDistance"), a(this, "preventFromCloseOutside"), a(this, "preventFromCloseInside"), a(this, "options"), a(this, "defaultState"), a(this, "popper"), a(this, "eventEffect"), a(this, "getElement", (n) => typeof n == "string" ? re(n) : n instanceof HTMLElement ? n : void 0), a(this, "handleDocumentClick", (n) => {
@@ -260,7 +281,7 @@ var he = class {
260
281
  }), a(this, "showOnMouseEnter", () => {
261
282
  this.show(), this.addEventOnMouseEnter();
262
283
  }), a(this, "setShowOptions", ({ placement: n, offsetDistance: r }) => {
263
- var l, d, c, m;
284
+ var l, d, c, g;
264
285
  this.popper.setOptions({
265
286
  placement: n,
266
287
  offsetDistance: r
@@ -268,12 +289,17 @@ var he = class {
268
289
  state: "open",
269
290
  popper: this.contentElement,
270
291
  trigger: this.triggerElement
271
- }), this.onToggleState(false), (m = (c = this.options).onShow) == null || m.call(c);
292
+ }), this.onToggleState(false), (g = (c = this.options).onShow) == null || g.call(c);
272
293
  }), a(this, "setPopperOptions", ({ placement: n, offsetDistance: r }) => {
273
294
  this.popper.setOptions({
274
295
  placement: n,
275
- offsetDistance: r
296
+ offsetDistance: r || this.offsetDistance
276
297
  });
298
+ }), a(this, "setPopperTrigger", (n, r) => {
299
+ this.cleanup(), this.popper.setOptions({
300
+ placement: r.placement || this.placement,
301
+ offsetDistance: r.offsetDistance || this.offsetDistance
302
+ }), this.triggerElement = n, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
277
303
  }), a(this, "cleanup", () => {
278
304
  this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
279
305
  });
@@ -338,7 +364,7 @@ var he = class {
338
364
  }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
339
365
  }
340
366
  };
341
- var x = class {
367
+ var H = class {
342
368
  static initGlobalRegistry() {
343
369
  window.$flexillaInstances || (window.$flexillaInstances = {});
344
370
  }
@@ -357,7 +383,7 @@ var x = class {
357
383
  ));
358
384
  }
359
385
  };
360
- var P = class _P {
386
+ var x = class _x {
361
387
  /**
362
388
  * Creates a new Popover instance.
363
389
  * @param {string | HTMLElement} popoverEl - The popover content element or its selector.
@@ -374,35 +400,41 @@ var P = class _P {
374
400
  * });
375
401
  */
376
402
  constructor(e, t = {}) {
377
- p(this, "triggerElement");
378
- p(this, "contentElement");
379
- p(this, "options");
380
- p(this, "PopoverInstance");
381
- p(this, "triggerStrategy");
382
- p(this, "placement");
383
- p(this, "offsetDistance");
384
- p(this, "preventFromCloseOutside");
385
- p(this, "preventFromCloseInside");
386
- p(this, "defaultState");
387
- p(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
403
+ h(this, "triggerElement");
404
+ h(this, "contentElement");
405
+ h(this, "options");
406
+ h(this, "PopoverInstance");
407
+ h(this, "triggerStrategy");
408
+ h(this, "placement");
409
+ h(this, "offsetDistance");
410
+ h(this, "preventFromCloseOutside");
411
+ h(this, "preventFromCloseInside");
412
+ h(this, "defaultState");
413
+ h(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
388
414
  this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
389
415
  });
390
- p(this, "show", () => {
416
+ h(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
417
+ this.PopoverInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
418
+ });
419
+ h(this, "setPopperTrigger", (e2, t2) => {
420
+ this.PopoverInstance.setPopperTrigger(e2, t2);
421
+ });
422
+ h(this, "show", () => {
391
423
  this.PopoverInstance.show(), M(this.contentElement, "popover-show", {
392
424
  isHidden: false
393
425
  });
394
426
  });
395
- p(this, "hide", () => {
427
+ h(this, "hide", () => {
396
428
  this.PopoverInstance.hide(), M(this.contentElement, "popover-hide", {
397
429
  isHidden: true
398
430
  });
399
431
  });
400
- p(this, "cleanup", () => {
401
- this.PopoverInstance.cleanup(), x.removeInstance("popover", this.contentElement);
432
+ h(this, "cleanup", () => {
433
+ this.PopoverInstance.cleanup(), H.removeInstance("popover", this.contentElement);
402
434
  });
403
435
  const s = typeof e == "string" ? A(e) : e;
404
436
  this.contentElement = s;
405
- const o = x.getInstance("popover", this.contentElement);
437
+ const o = H.getInstance("popover", this.contentElement);
406
438
  if (o)
407
439
  return o;
408
440
  this.triggerElement = A(`[data-popover-trigger][data-popover-id=${s.getAttribute("id")}]`), this.options = t, this.triggerStrategy = this.options.triggerStrategy || s.dataset.triggerStrategy || "click", this.placement = this.options.placement || s.dataset.placement || "bottom-middle", this.offsetDistance = this.options.offsetDistance || parseInt(`${s.dataset.offsetDistance}`) | 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || s.hasAttribute("data-prevent-close-outside") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || s.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || s.dataset.defaultState || "close", this.PopoverInstance = new he({
@@ -425,7 +457,7 @@ var P = class _P {
425
457
  },
426
458
  popper: this.options.popper
427
459
  }
428
- }), x.register("popover", this.contentElement, this);
460
+ }), H.register("popover", this.contentElement, this);
429
461
  }
430
462
  /**
431
463
  * Creates a new Popover instance with the specified options.
@@ -439,7 +471,7 @@ var P = class _P {
439
471
  * });
440
472
  */
441
473
  static init(e, t) {
442
- return new _P(e, t);
474
+ return new _x(e, t);
443
475
  }
444
476
  /**
445
477
  * Automatically initializes all popover elements matching the specified selector.
@@ -454,14 +486,14 @@ var P = class _P {
454
486
  static autoInit(e = "[data-fx-popover]") {
455
487
  const t = j(e);
456
488
  for (const s of t)
457
- new _P(s);
489
+ new _x(s);
458
490
  }
459
491
  };
460
492
 
461
493
  // src/index.js
462
494
  function Popover(Alpine) {
463
495
  Alpine.directive("popover", (el, {}, { cleanup }) => {
464
- const popover_ = new P(el);
496
+ const popover_ = new x(el);
465
497
  cleanup(() => {
466
498
  popover_.cleanup();
467
499
  });
@@ -1,7 +1,7 @@
1
1
  // ../../node_modules/@flexilla/popover/dist/popover.js
2
2
  var K = Object.defineProperty;
3
3
  var U = (i, e, t) => e in i ? K(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
4
- var p = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
4
+ var h = (i, e, t) => U(i, typeof e != "symbol" ? e + "" : e, t);
5
5
  var A = (i, e = document.body) => e.querySelector(i);
6
6
  var j = (i, e = document.body) => Array.from(e.querySelectorAll(i));
7
7
  var M = (i, e, t) => {
@@ -13,20 +13,22 @@ var B = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, wr
13
13
  var a = (i, e, t) => B(i, typeof e != "symbol" ? e + "" : e, t);
14
14
  var J = "bottom";
15
15
  var N = ({ reference: i, popper: e }) => {
16
- const t = e.getBoundingClientRect(), s = i.getBoundingClientRect();
16
+ if (!i || !e)
17
+ throw new Error("Reference or popper element is null or undefined");
18
+ const t = /* @__PURE__ */ new WeakMap(), s = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = s(e), n = s(i);
17
19
  return {
18
- popperHeight: t.height,
19
- popperWidth: t.width,
20
- refHeight: s.height,
21
- refWidth: s.width,
22
- refLeft: s.left,
23
- refTop: s.top,
24
- refRight: s.right
20
+ popperHeight: o.height,
21
+ popperWidth: o.width,
22
+ refHeight: n.height,
23
+ refWidth: n.width,
24
+ refLeft: n.left,
25
+ refTop: n.top,
26
+ refRight: n.right
25
27
  };
26
28
  };
27
29
  var Q = Object.defineProperty;
28
30
  var V = (i, e, t) => e in i ? Q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
29
- var h = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
31
+ var p = (i, e, t) => V(i, typeof e != "symbol" ? e + "" : e, t);
30
32
  var X = (i, e, t, s) => {
31
33
  const o = t, n = s - (t + e);
32
34
  return o >= (i - e) / 2 && n >= (i - e) / 2;
@@ -53,7 +55,7 @@ var ne = ({
53
55
  windowWidth: d,
54
56
  offsetDistance: c
55
57
  }) => {
56
- const m = d - s - e, v = s, D = l - t - o, C = t, u = () => Z(
58
+ const g = d - s - e, v = s, L = l - t - o, D = t, u = () => Z(
57
59
  () => ee(t, o, r, l),
58
60
  () => _(t, o, r, l),
59
61
  t,
@@ -66,29 +68,29 @@ var ne = ({
66
68
  n,
67
69
  d,
68
70
  e
69
- ), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), H = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), T = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
70
- let g = 0, f = 0;
71
- const S = t - r - c, O = t + o + c, I = s - n - c, L = s + e + c, W = C >= r + c, F = D >= r + c, R = v >= n + c, $ = m >= n + c;
72
- switch (i.startsWith("top") ? f = W ? S : F ? O : Math.max(S, O) : i.startsWith("bottom") ? f = F ? O : W ? S : Math.max(S, O) : i.startsWith("left") ? g = R ? I : $ ? L : Math.max(I, L) : i.startsWith("right") && (g = $ ? L : R ? I : Math.max(I, L)), i) {
71
+ ), k = () => X(n, e, s, d) ? s + e / 2 - n / 2 : E(), C = () => Y(r, o, t, l) ? t + o / 2 - r / 2 : u(), P = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= l ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
72
+ let m = 0, f = 0;
73
+ const T = t - r - c, S = t + o + c, O = s - n - c, I = s + e + c, W = D >= r + c, F = L >= r + c, R = v >= n + c, $ = g >= n + c;
74
+ switch (i.startsWith("top") ? f = W ? T : F ? S : Math.max(T, S) : i.startsWith("bottom") ? f = F ? S : W ? T : Math.max(S) : i.startsWith("left") ? m = R ? O : $ ? I : Math.max(O, I) : i.startsWith("right") && (m = $ ? I : R ? O : Math.max(I, O)), i) {
73
75
  case "bottom":
74
76
  case "bottom-middle":
75
77
  case "top":
76
78
  case "top-middle":
77
- g = k();
79
+ m = k();
78
80
  break;
79
81
  case "left":
80
82
  case "left-middle":
81
83
  case "right":
82
84
  case "right-middle":
83
- f = H();
85
+ f = C();
84
86
  break;
85
87
  case "bottom-start":
86
88
  case "top-start":
87
- g = T();
89
+ m = P();
88
90
  break;
89
91
  case "bottom-end":
90
92
  case "top-end":
91
- g = y();
93
+ m = y();
92
94
  break;
93
95
  case "left-start":
94
96
  case "right-start":
@@ -99,7 +101,7 @@ var ne = ({
99
101
  f = G();
100
102
  break;
101
103
  }
102
- return { x: g, y: f };
104
+ return { x: m, y: f };
103
105
  };
104
106
  var oe = class {
105
107
  /**
@@ -108,45 +110,57 @@ var oe = class {
108
110
  * @param popper
109
111
  * @param options
110
112
  */
113
+ /**
114
+ * Creates an instance of CreatePopper
115
+ * @param {HTMLElement} reference - The reference element to position against
116
+ * @param {HTMLElement} popper - The element to be positioned
117
+ * @param {PopperOptions} [options] - Configuration options
118
+ * @param {number} [options.offsetDistance] - Distance between popper and reference element
119
+ * @param {Placement} [options.placement] - Preferred placement of the popper
120
+ * @param {Object} [options.eventEffect] - Event handling configuration
121
+ * @param {boolean} [options.eventEffect.disableOnResize] - Disable position updates on window resize
122
+ * @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
123
+ * @param {Function} [options.onUpdate] - Callback function when position updates
124
+ */
111
125
  constructor(e, t, s = {}) {
112
- h(this, "reference"), h(this, "popper"), h(this, "offsetDistance"), h(this, "placement"), h(this, "disableOnResize"), h(this, "disableOnScroll"), h(this, "onUpdate"), h(this, "isWindowEventsRegistered"), h(this, "validateElements", () => {
126
+ 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", () => {
113
127
  if (!(this.reference instanceof HTMLElement))
114
128
  throw new Error("Invalid HTMLElement for Reference Element");
115
129
  if (!(this.popper instanceof HTMLElement))
116
130
  throw new Error("Invalid HTMLElement for Popper");
117
131
  if (typeof this.offsetDistance != "number")
118
132
  throw new Error("OffsetDistance must be a number");
119
- }), h(this, "setPopperStyleProperty", (m, v) => {
120
- this.popper.style.setProperty("--fx-popper-placement-x", `${m}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
121
- }), h(this, "setInitialStyles", () => {
133
+ }), p(this, "setPopperStyleProperty", (g, v) => {
134
+ this.popper.style.setProperty("--fx-popper-placement-x", `${g}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
135
+ }), p(this, "setInitialStyles", () => {
122
136
  this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
123
- }), h(this, "initPlacement", () => {
124
- var m;
137
+ }), p(this, "initPlacement", () => {
138
+ var g;
125
139
  this.validateElements(), this.setInitialStyles();
126
- const v = window.innerWidth, D = window.innerHeight, { popperHeight: C, popperWidth: u, refHeight: E, refWidth: k, refLeft: H, refTop: T } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
140
+ const v = window.innerWidth, L = window.innerHeight, { popperHeight: D, popperWidth: u, refHeight: E, refWidth: k, refLeft: C, refTop: P } = N({ reference: this.reference, popper: this.popper }), { x: y, y: b } = ne(
127
141
  {
128
142
  placement: this.placement,
129
143
  refWidth: k,
130
- refTop: T,
131
- refLeft: H,
144
+ refTop: P,
145
+ refLeft: C,
132
146
  popperWidth: u,
133
147
  refHeight: E,
134
- popperHeight: C,
135
- windowHeight: D,
148
+ popperHeight: D,
149
+ windowHeight: L,
136
150
  windowWidth: v,
137
151
  offsetDistance: this.offsetDistance
138
152
  }
139
153
  );
140
- this.setPopperStyleProperty(y, b), (m = this.onUpdate) == null || m.call(this, { x: y, y: b, placement: this.placement });
141
- }), h(this, "removeWindowEvents", () => {
154
+ this.setPopperStyleProperty(y, b), (g = this.onUpdate) == null || g.call(this, { x: y, y: b, placement: this.placement });
155
+ }), p(this, "removeWindowEvents", () => {
142
156
  this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
143
- }), h(this, "attachWindowEvent", () => {
157
+ }), p(this, "attachWindowEvent", () => {
144
158
  this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
145
- }), h(this, "resetPosition", () => {
159
+ }), p(this, "resetPosition", () => {
146
160
  this.setInitialStyles();
147
- }), h(this, "updatePosition", () => {
161
+ }), p(this, "updatePosition", () => {
148
162
  this.initPlacement(), this.attachWindowEvent();
149
- }), h(this, "cleanupEvents", () => {
163
+ }), p(this, "cleanupEvents", () => {
150
164
  this.setInitialStyles(), this.removeWindowEvents();
151
165
  });
152
166
  const {
@@ -164,6 +178,13 @@ var oe = class {
164
178
  const { disableOnResize: d, disableOnScroll: c } = r;
165
179
  this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = n, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = l;
166
180
  }
181
+ /**
182
+ * Updates popper configuration and recalculates position
183
+ * @public
184
+ * @param {Object} options - New configuration options
185
+ * @param {Placement} options.placement - New placement value
186
+ * @param {number} [options.offsetDistance] - New offset distance
187
+ */
167
188
  setOptions({ placement: e, offsetDistance: t }) {
168
189
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
169
190
  }
@@ -200,10 +221,11 @@ var le = ({
200
221
  });
201
222
  };
202
223
  var w = ({ state: i, trigger: e, popper: t }) => {
224
+ const s = i === "open";
203
225
  z(t, {
204
226
  "data-state": i
205
227
  }), z(e, {
206
- "aria-expanded": `${i}`
228
+ "aria-expanded": `${s}`
207
229
  });
208
230
  };
209
231
  var he = class {
@@ -213,7 +235,6 @@ var he = class {
213
235
  * @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
214
236
  * @param {string | HTMLElement} params.content - The content element selector or HTMLElement
215
237
  * @param {OverlayOptions} [params.options] - Configuration options for the overlay
216
- * @throws {Error} When trigger or content elements are invalid
217
238
  */
218
239
  constructor({ trigger: e, content: t, options: s = {} }) {
219
240
  a(this, "triggerElement"), a(this, "contentElement"), a(this, "triggerStrategy"), a(this, "placement"), a(this, "offsetDistance"), a(this, "preventFromCloseOutside"), a(this, "preventFromCloseInside"), a(this, "options"), a(this, "defaultState"), a(this, "popper"), a(this, "eventEffect"), a(this, "getElement", (n) => typeof n == "string" ? re(n) : n instanceof HTMLElement ? n : void 0), a(this, "handleDocumentClick", (n) => {
@@ -235,7 +256,7 @@ var he = class {
235
256
  }), a(this, "showOnMouseEnter", () => {
236
257
  this.show(), this.addEventOnMouseEnter();
237
258
  }), a(this, "setShowOptions", ({ placement: n, offsetDistance: r }) => {
238
- var l, d, c, m;
259
+ var l, d, c, g;
239
260
  this.popper.setOptions({
240
261
  placement: n,
241
262
  offsetDistance: r
@@ -243,12 +264,17 @@ var he = class {
243
264
  state: "open",
244
265
  popper: this.contentElement,
245
266
  trigger: this.triggerElement
246
- }), this.onToggleState(false), (m = (c = this.options).onShow) == null || m.call(c);
267
+ }), this.onToggleState(false), (g = (c = this.options).onShow) == null || g.call(c);
247
268
  }), a(this, "setPopperOptions", ({ placement: n, offsetDistance: r }) => {
248
269
  this.popper.setOptions({
249
270
  placement: n,
250
- offsetDistance: r
271
+ offsetDistance: r || this.offsetDistance
251
272
  });
273
+ }), a(this, "setPopperTrigger", (n, r) => {
274
+ this.cleanup(), this.popper.setOptions({
275
+ placement: r.placement || this.placement,
276
+ offsetDistance: r.offsetDistance || this.offsetDistance
277
+ }), this.triggerElement = n, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
252
278
  }), a(this, "cleanup", () => {
253
279
  this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
254
280
  });
@@ -313,7 +339,7 @@ var he = class {
313
339
  }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
314
340
  }
315
341
  };
316
- var x = class {
342
+ var H = class {
317
343
  static initGlobalRegistry() {
318
344
  window.$flexillaInstances || (window.$flexillaInstances = {});
319
345
  }
@@ -332,7 +358,7 @@ var x = class {
332
358
  ));
333
359
  }
334
360
  };
335
- var P = class _P {
361
+ var x = class _x {
336
362
  /**
337
363
  * Creates a new Popover instance.
338
364
  * @param {string | HTMLElement} popoverEl - The popover content element or its selector.
@@ -349,35 +375,41 @@ var P = class _P {
349
375
  * });
350
376
  */
351
377
  constructor(e, t = {}) {
352
- p(this, "triggerElement");
353
- p(this, "contentElement");
354
- p(this, "options");
355
- p(this, "PopoverInstance");
356
- p(this, "triggerStrategy");
357
- p(this, "placement");
358
- p(this, "offsetDistance");
359
- p(this, "preventFromCloseOutside");
360
- p(this, "preventFromCloseInside");
361
- p(this, "defaultState");
362
- p(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
378
+ h(this, "triggerElement");
379
+ h(this, "contentElement");
380
+ h(this, "options");
381
+ h(this, "PopoverInstance");
382
+ h(this, "triggerStrategy");
383
+ h(this, "placement");
384
+ h(this, "offsetDistance");
385
+ h(this, "preventFromCloseOutside");
386
+ h(this, "preventFromCloseInside");
387
+ h(this, "defaultState");
388
+ h(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
363
389
  this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
364
390
  });
365
- p(this, "show", () => {
391
+ h(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
392
+ this.PopoverInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
393
+ });
394
+ h(this, "setPopperTrigger", (e2, t2) => {
395
+ this.PopoverInstance.setPopperTrigger(e2, t2);
396
+ });
397
+ h(this, "show", () => {
366
398
  this.PopoverInstance.show(), M(this.contentElement, "popover-show", {
367
399
  isHidden: false
368
400
  });
369
401
  });
370
- p(this, "hide", () => {
402
+ h(this, "hide", () => {
371
403
  this.PopoverInstance.hide(), M(this.contentElement, "popover-hide", {
372
404
  isHidden: true
373
405
  });
374
406
  });
375
- p(this, "cleanup", () => {
376
- this.PopoverInstance.cleanup(), x.removeInstance("popover", this.contentElement);
407
+ h(this, "cleanup", () => {
408
+ this.PopoverInstance.cleanup(), H.removeInstance("popover", this.contentElement);
377
409
  });
378
410
  const s = typeof e == "string" ? A(e) : e;
379
411
  this.contentElement = s;
380
- const o = x.getInstance("popover", this.contentElement);
412
+ const o = H.getInstance("popover", this.contentElement);
381
413
  if (o)
382
414
  return o;
383
415
  this.triggerElement = A(`[data-popover-trigger][data-popover-id=${s.getAttribute("id")}]`), this.options = t, this.triggerStrategy = this.options.triggerStrategy || s.dataset.triggerStrategy || "click", this.placement = this.options.placement || s.dataset.placement || "bottom-middle", this.offsetDistance = this.options.offsetDistance || parseInt(`${s.dataset.offsetDistance}`) | 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || s.hasAttribute("data-prevent-close-outside") || false, this.preventFromCloseInside = this.options.preventCloseFromInside || s.hasAttribute("data-prevent-close-inside") || false, this.defaultState = this.options.defaultState || s.dataset.defaultState || "close", this.PopoverInstance = new he({
@@ -400,7 +432,7 @@ var P = class _P {
400
432
  },
401
433
  popper: this.options.popper
402
434
  }
403
- }), x.register("popover", this.contentElement, this);
435
+ }), H.register("popover", this.contentElement, this);
404
436
  }
405
437
  /**
406
438
  * Creates a new Popover instance with the specified options.
@@ -414,7 +446,7 @@ var P = class _P {
414
446
  * });
415
447
  */
416
448
  static init(e, t) {
417
- return new _P(e, t);
449
+ return new _x(e, t);
418
450
  }
419
451
  /**
420
452
  * Automatically initializes all popover elements matching the specified selector.
@@ -429,14 +461,14 @@ var P = class _P {
429
461
  static autoInit(e = "[data-fx-popover]") {
430
462
  const t = j(e);
431
463
  for (const s of t)
432
- new _P(s);
464
+ new _x(s);
433
465
  }
434
466
  };
435
467
 
436
468
  // src/index.js
437
469
  function Popover(Alpine) {
438
470
  Alpine.directive("popover", (el, {}, { cleanup }) => {
439
- const popover_ = new P(el);
471
+ const popover_ = new x(el);
440
472
  cleanup(() => {
441
473
  popover_.cleanup();
442
474
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flexilla/alpine-popover",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "AlpineJS plugin for adding Popover functionality to your AlpineJS components",
5
5
  "type": "module",
6
6
  "private": false,
@@ -58,7 +58,7 @@
58
58
  "Flexilla"
59
59
  ],
60
60
  "dependencies": {
61
- "@flexilla/popover": "^0.2.1"
61
+ "@flexilla/popover": "^0.2.3"
62
62
  },
63
- "gitHead": "2de9f4208852d8b159dfd7a84c4e8d03f9d53a86"
63
+ "gitHead": "584636c3f3b85dfa71666f5354221dcfc385f9e6"
64
64
  }