@flexilla/alpine-popover 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.js CHANGED
@@ -1,48 +1,41 @@
1
1
  (() => {
2
2
  // ../../node_modules/@flexilla/popover/dist/popover.js
3
+ var U = Object.defineProperty;
4
+ var j = (i, e, t) => e in i ? U(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
5
+ var l = (i, e, t) => j(i, typeof e != "symbol" ? e + "" : e, t);
3
6
  var K = Object.defineProperty;
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);
6
- var A = (i, e = document.body) => e.querySelector(i);
7
- var j = (i, e = document.body) => Array.from(e.querySelectorAll(i));
8
- var M = (i, e, t) => {
9
- const s = new CustomEvent(e, { detail: t });
10
- i.dispatchEvent(s);
11
- };
12
- var q = Object.defineProperty;
13
- var B = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
14
- var a = (i, e, t) => B(i, typeof e != "symbol" ? e + "" : e, t);
15
- var J = "bottom";
7
+ var q = (i, e, t) => e in i ? K(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
8
+ var p = (i, e, t) => q(i, typeof e != "symbol" ? e + "" : e, t);
9
+ var B = "bottom";
16
10
  var N = ({ reference: i, popper: e }) => {
17
- const t = e.getBoundingClientRect(), s = i.getBoundingClientRect();
11
+ if (!i || !e)
12
+ throw new Error("Reference or popper element is null or undefined");
13
+ 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
14
  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
15
+ popperHeight: o.height,
16
+ popperWidth: o.width,
17
+ refHeight: n.height,
18
+ refWidth: n.width,
19
+ refLeft: n.left,
20
+ refTop: n.top,
21
+ refRight: n.right
26
22
  };
27
23
  };
28
- var Q = Object.defineProperty;
29
- 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);
31
- var X = (i, e, t, s) => {
24
+ var V = (i, e, t, s) => {
32
25
  const o = t, n = s - (t + e);
33
26
  return o >= (i - e) / 2 && n >= (i - e) / 2;
34
27
  };
35
- var Y = (i, e, t, s) => (i - e) / 2 <= t && t + i / 2 + e / 2 <= s;
36
- var Z = (i, e, t, s, o) => t > o - s ? e() ? window.innerHeight - o : t - o : i() ? 0 : t + s;
37
- var _ = (i, e, t, s) => i <= s && t - i <= e;
38
- var ee = (i, e, t, s) => t <= s && -i <= e;
39
- var te = (i, e, t, s, o, n) => {
40
- const r = o - t - n, l = t - s, d = t + n - s + (o - t - n), c = r >= 0 ? o - s : l >= 0 ? t - s : t;
28
+ var X = (i, e, t, s) => (i - e) / 2 <= t && t + i / 2 + e / 2 <= s;
29
+ var Y = (i, e, t, s, o) => t > o - s ? e() ? window.innerHeight - o : t - o : i() ? 0 : t + s;
30
+ var J = (i, e, t, s) => i <= s && t - i <= e;
31
+ var Q = (i, e, t, s) => t <= s && -i <= e;
32
+ var Z = (i, e, t, s, o, n) => {
33
+ const r = o - t - n, h = t - s, d = t + n - s + (o - t - n), c = r >= 0 ? o - s : h >= 0 ? t - s : t;
41
34
  return i() ? 0 : e() ? d : c;
42
35
  };
43
- var se = (i, e, t, s) => i <= t && e - i - s >= i;
44
- var ie = (i, e) => i >= e;
45
- var ne = ({
36
+ var _ = (i, e, t, s) => i <= t && e - i - s >= i;
37
+ var ee = (i, e) => i >= e;
38
+ var te = ({
46
39
  placement: i,
47
40
  refWidth: e,
48
41
  refTop: t,
@@ -50,46 +43,46 @@
50
43
  refHeight: o,
51
44
  popperWidth: n,
52
45
  popperHeight: r,
53
- windowHeight: l,
46
+ windowHeight: h,
54
47
  windowWidth: d,
55
48
  offsetDistance: c
56
49
  }) => {
57
- const m = d - s - e, v = s, D = l - t - o, C = t, u = () => Z(
58
- () => ee(t, o, r, l),
59
- () => _(t, o, r, l),
50
+ const g = d - s - e, v = s, L = h - t - o, D = t, u = () => Y(
51
+ () => Q(t, o, r, h),
52
+ () => J(t, o, r, h),
60
53
  t,
61
54
  o,
62
55
  r
63
- ), E = () => te(
64
- () => se(s, d, n, e),
65
- () => ie(s, n),
56
+ ), E = () => Z(
57
+ () => _(s, d, n, e),
58
+ () => ee(s, n),
66
59
  s,
67
60
  n,
68
61
  d,
69
62
  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) {
63
+ ), k = () => V(n, e, s, d) ? s + e / 2 - n / 2 : E(), C = () => X(r, o, t, h) ? t + o / 2 - r / 2 : u(), P = () => s + n <= d ? s : E(), y = () => s + e - n >= 0 ? s + e - n : E(), b = () => t + r <= h ? t : u(), G = () => t + o - r >= 0 ? t + o - r : u();
64
+ let m = 0, f = 0;
65
+ 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;
66
+ 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
67
  case "bottom":
75
68
  case "bottom-middle":
76
69
  case "top":
77
70
  case "top-middle":
78
- g = k();
71
+ m = k();
79
72
  break;
80
73
  case "left":
81
74
  case "left-middle":
82
75
  case "right":
83
76
  case "right-middle":
84
- f = H();
77
+ f = C();
85
78
  break;
86
79
  case "bottom-start":
87
80
  case "top-start":
88
- g = T();
81
+ m = P();
89
82
  break;
90
83
  case "bottom-end":
91
84
  case "top-end":
92
- g = y();
85
+ m = y();
93
86
  break;
94
87
  case "left-start":
95
88
  case "right-start":
@@ -100,61 +93,73 @@
100
93
  f = G();
101
94
  break;
102
95
  }
103
- return { x: g, y: f };
96
+ return { x: m, y: f };
104
97
  };
105
- var oe = class {
98
+ var se = class {
106
99
  /**
107
100
  * Flexilla Popper
108
101
  * @param reference
109
102
  * @param popper
110
103
  * @param options
111
104
  */
105
+ /**
106
+ * Creates an instance of CreatePopper
107
+ * @param {HTMLElement} reference - The reference element to position against
108
+ * @param {HTMLElement} popper - The element to be positioned
109
+ * @param {PopperOptions} [options] - Configuration options
110
+ * @param {number} [options.offsetDistance] - Distance between popper and reference element
111
+ * @param {Placement} [options.placement] - Preferred placement of the popper
112
+ * @param {Object} [options.eventEffect] - Event handling configuration
113
+ * @param {boolean} [options.eventEffect.disableOnResize] - Disable position updates on window resize
114
+ * @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
115
+ * @param {Function} [options.onUpdate] - Callback function when position updates
116
+ */
112
117
  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", () => {
118
+ 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
119
  if (!(this.reference instanceof HTMLElement))
115
120
  throw new Error("Invalid HTMLElement for Reference Element");
116
121
  if (!(this.popper instanceof HTMLElement))
117
122
  throw new Error("Invalid HTMLElement for Popper");
118
123
  if (typeof this.offsetDistance != "number")
119
124
  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", () => {
125
+ }), p(this, "setPopperStyleProperty", (g, v) => {
126
+ this.popper.style.setProperty("--fx-popper-placement-x", `${g}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
127
+ }), p(this, "setInitialStyles", () => {
123
128
  this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
124
- }), h(this, "initPlacement", () => {
125
- var m;
129
+ }), p(this, "initPlacement", () => {
130
+ var g;
126
131
  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(
132
+ 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 } = te(
128
133
  {
129
134
  placement: this.placement,
130
135
  refWidth: k,
131
- refTop: T,
132
- refLeft: H,
136
+ refTop: P,
137
+ refLeft: C,
133
138
  popperWidth: u,
134
139
  refHeight: E,
135
- popperHeight: C,
136
- windowHeight: D,
140
+ popperHeight: D,
141
+ windowHeight: L,
137
142
  windowWidth: v,
138
143
  offsetDistance: this.offsetDistance
139
144
  }
140
145
  );
141
- this.setPopperStyleProperty(y, b), (m = this.onUpdate) == null || m.call(this, { x: y, y: b, placement: this.placement });
142
- }), h(this, "removeWindowEvents", () => {
146
+ this.setPopperStyleProperty(y, b), (g = this.onUpdate) == null || g.call(this, { x: y, y: b, placement: this.placement });
147
+ }), p(this, "removeWindowEvents", () => {
143
148
  this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
144
- }), h(this, "attachWindowEvent", () => {
149
+ }), p(this, "attachWindowEvent", () => {
145
150
  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", () => {
151
+ }), p(this, "resetPosition", () => {
147
152
  this.setInitialStyles();
148
- }), h(this, "updatePosition", () => {
153
+ }), p(this, "updatePosition", () => {
149
154
  this.initPlacement(), this.attachWindowEvent();
150
- }), h(this, "cleanupEvents", () => {
155
+ }), p(this, "cleanupEvents", () => {
151
156
  this.setInitialStyles(), this.removeWindowEvents();
152
157
  });
153
158
  const {
154
159
  offsetDistance: o = 10,
155
- placement: n = J,
160
+ placement: n = B,
156
161
  eventEffect: r = {},
157
- onUpdate: l
162
+ onUpdate: h
158
163
  } = s;
159
164
  if (!(e instanceof HTMLElement))
160
165
  throw new Error("Invalid HTMLElement for Reference Element");
@@ -163,18 +168,28 @@
163
168
  if (s.offsetDistance && typeof s.offsetDistance != "number")
164
169
  throw new Error("OffsetDistance must be a number");
165
170
  const { disableOnResize: d, disableOnScroll: c } = r;
166
- 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;
171
+ 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 = h;
167
172
  }
173
+ /**
174
+ * Updates popper configuration and recalculates position
175
+ * @public
176
+ * @param {Object} options - New configuration options
177
+ * @param {Placement} options.placement - New placement value
178
+ * @param {number} [options.offsetDistance] - New offset distance
179
+ */
168
180
  setOptions({ placement: e, offsetDistance: t }) {
169
181
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
170
182
  }
171
183
  };
172
- var re = (i, e = document.body) => e.querySelector(i);
173
- var z = (i, e) => {
184
+ var ie = Object.defineProperty;
185
+ var ne = (i, e, t) => e in i ? ie(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
186
+ var a = (i, e, t) => ne(i, typeof e != "symbol" ? e + "" : e, t);
187
+ var oe = (i, e = document.body) => e.querySelector(i);
188
+ var A = (i, e) => {
174
189
  for (const [t, s] of Object.entries(e))
175
190
  i.setAttribute(t, s);
176
191
  };
177
- var ae = ({
192
+ var re = ({
178
193
  element: i,
179
194
  callback: e,
180
195
  type: t,
@@ -182,18 +197,18 @@
182
197
  }) => {
183
198
  const o = getComputedStyle(i), n = o.transition;
184
199
  if (n !== "none" && n !== "" && !s.includes(n)) {
185
- const r = "transitionend", l = () => {
186
- i.removeEventListener(r, l), e();
200
+ const r = "transitionend", h = () => {
201
+ i.removeEventListener(r, h), e();
187
202
  };
188
- i.addEventListener(r, l, { once: true });
203
+ i.addEventListener(r, h, { once: true });
189
204
  } else
190
205
  e();
191
206
  };
192
- var le = ({
207
+ var ae = ({
193
208
  element: i,
194
209
  callback: e
195
210
  }) => {
196
- ae({
211
+ re({
197
212
  element: i,
198
213
  callback: e,
199
214
  type: "transition",
@@ -201,10 +216,11 @@
201
216
  });
202
217
  };
203
218
  var w = ({ state: i, trigger: e, popper: t }) => {
204
- z(t, {
219
+ const s = i === "open";
220
+ A(t, {
205
221
  "data-state": i
206
- }), z(e, {
207
- "aria-expanded": `${i}`
222
+ }), A(e, {
223
+ "aria-expanded": `${s}`
208
224
  });
209
225
  };
210
226
  var he = class {
@@ -214,10 +230,9 @@
214
230
  * @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
215
231
  * @param {string | HTMLElement} params.content - The content element selector or HTMLElement
216
232
  * @param {OverlayOptions} [params.options] - Configuration options for the overlay
217
- * @throws {Error} When trigger or content elements are invalid
218
233
  */
219
234
  constructor({ trigger: e, content: t, options: s = {} }) {
220
- 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
+ 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" ? oe(n) : n instanceof HTMLElement ? n : void 0), a(this, "handleDocumentClick", (n) => {
221
236
  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());
222
237
  }), a(this, "handleKeyDown", (n) => {
223
238
  n.preventDefault(), this.triggerStrategy !== "hover" && n.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
@@ -236,20 +251,25 @@
236
251
  }), a(this, "showOnMouseEnter", () => {
237
252
  this.show(), this.addEventOnMouseEnter();
238
253
  }), a(this, "setShowOptions", ({ placement: n, offsetDistance: r }) => {
239
- var l, d, c, m;
254
+ var h, d, c, g;
240
255
  this.popper.setOptions({
241
256
  placement: n,
242
257
  offsetDistance: r
243
- }), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (d = (l = this.options).beforeShow) == null || d.call(l), w({
258
+ }), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (d = (h = this.options).beforeShow) == null || d.call(h), w({
244
259
  state: "open",
245
260
  popper: this.contentElement,
246
261
  trigger: this.triggerElement
247
- }), this.onToggleState(false), (m = (c = this.options).onShow) == null || m.call(c);
262
+ }), this.onToggleState(false), (g = (c = this.options).onShow) == null || g.call(c);
248
263
  }), a(this, "setPopperOptions", ({ placement: n, offsetDistance: r }) => {
249
264
  this.popper.setOptions({
250
265
  placement: n,
251
- offsetDistance: r
266
+ offsetDistance: r || this.offsetDistance
252
267
  });
268
+ }), a(this, "setPopperTrigger", (n, r) => {
269
+ this.cleanup(), this.popper.setOptions({
270
+ placement: r.placement || this.placement,
271
+ offsetDistance: r.offsetDistance || this.offsetDistance
272
+ }), this.triggerElement = n, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
253
273
  }), a(this, "cleanup", () => {
254
274
  this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
255
275
  });
@@ -258,7 +278,7 @@
258
278
  throw new Error("Trigger element must be a valid HTML element");
259
279
  if (!(this.contentElement instanceof HTMLElement))
260
280
  throw new Error("Content element must be a valid HTML element");
261
- 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 || 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 oe(
281
+ 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 || 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 se(
262
282
  this.triggerElement,
263
283
  this.contentElement,
264
284
  {
@@ -294,7 +314,7 @@
294
314
  state: "close",
295
315
  popper: this.contentElement,
296
316
  trigger: this.triggerElement
297
- }), 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)), le({
317
+ }), 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)), ae({
298
318
  element: this.contentElement,
299
319
  callback: () => {
300
320
  var s, o;
@@ -314,7 +334,13 @@
314
334
  }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
315
335
  }
316
336
  };
317
- var x = class {
337
+ var z = (i, e = document.body) => e.querySelector(i);
338
+ var le = (i, e = document.body) => Array.from(e.querySelectorAll(i));
339
+ var M = (i, e, t) => {
340
+ const s = new CustomEvent(e, { detail: t });
341
+ i.dispatchEvent(s);
342
+ };
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,38 +376,44 @@
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
+ l(this, "triggerElement");
380
+ l(this, "contentElement");
381
+ l(this, "options");
382
+ l(this, "PopoverInstance");
383
+ l(this, "triggerStrategy");
384
+ l(this, "placement");
385
+ l(this, "offsetDistance");
386
+ l(this, "preventFromCloseOutside");
387
+ l(this, "preventFromCloseInside");
388
+ l(this, "defaultState");
389
+ l(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
364
390
  this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
365
391
  });
366
- p(this, "show", () => {
392
+ l(this, "setOptions", ({ placement: e2, offsetDistance: t2 }) => {
393
+ this.PopoverInstance.setPopperOptions({ placement: e2, offsetDistance: t2 });
394
+ });
395
+ l(this, "setPopperTrigger", (e2, t2) => {
396
+ this.PopoverInstance.setPopperTrigger(e2, t2);
397
+ });
398
+ l(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
+ l(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
+ l(this, "cleanup", () => {
409
+ this.PopoverInstance.cleanup(), H.removeInstance("popover", this.contentElement);
378
410
  });
379
- const s = typeof e == "string" ? A(e) : e;
411
+ const s = typeof e == "string" ? z(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
- 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({
416
+ this.triggerElement = z(`[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({
385
417
  trigger: this.triggerElement,
386
418
  content: this.contentElement,
387
419
  options: {
@@ -394,14 +426,14 @@
394
426
  onShow: this.options.onShow,
395
427
  onHide: this.options.onHide,
396
428
  onToggle: ({ isHidden: n }) => {
397
- var r, l;
398
- (l = (r = this.options).onToggle) == null || l.call(r, { isHidden: n }), M(this.contentElement, "popover-toggle", {
429
+ var r, h;
430
+ (h = (r = this.options).onToggle) == null || h.call(r, { isHidden: n }), M(this.contentElement, "popover-toggle", {
399
431
  isHidden: n
400
432
  });
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.
@@ -428,16 +460,16 @@
428
460
  * Popover.autoInit('.custom-popover');
429
461
  */
430
462
  static autoInit(e = "[data-fx-popover]") {
431
- const t = j(e);
463
+ const t = le(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=(s,e,t)=>e in s?q(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,p=(s,e,t)=>B(s,typeof e!="symbol"?e+"":e,t),J=Object.defineProperty,N=(s,e,t)=>e in s?J(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,h=(s,e,t)=>N(s,typeof e!="symbol"?e+"":e,t),Q="bottom",V=({reference:s,popper:e})=>{if(!s||!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),n=i(s);return{popperHeight:o.height,popperWidth:o.width,refHeight:n.height,refWidth:n.width,refLeft:n.left,refTop:n.top,refRight:n.right}},X=(s,e,t,i)=>{let o=t,n=i-(t+e);return o>=(s-e)/2&&n>=(s-e)/2},Y=(s,e,t,i)=>(s-e)/2<=t&&t+s/2+e/2<=i,Z=(s,e,t,i,o)=>t>o-i?e()?window.innerHeight-o:t-o:s()?0:t+i,_=(s,e,t,i)=>s<=i&&t-s<=e,ee=(s,e,t,i)=>t<=i&&-s<=e,te=(s,e,t,i,o,n)=>{let r=o-t-n,l=t-i,d=t+n-i+(o-t-n),c=r>=0?o-i:l>=0?t-i:t;return s()?0:e()?d:c},ie=(s,e,t,i)=>s<=t&&e-s-i>=s,se=(s,e)=>s>=e,ne=({placement:s,refWidth:e,refTop:t,refLeft:i,refHeight:o,popperWidth:n,popperHeight:r,windowHeight:l,windowWidth:d,offsetDistance:c})=>{let m=d-i-e,v=i,P=l-t-o,k=t,E=()=>Z(()=>ee(t,o,r,l),()=>_(t,o,r,l),t,o,r),u=()=>te(()=>ie(i,d,n,e),()=>se(i,n),i,n,d,e),C=()=>X(n,e,i,d)?i+e/2-n/2:u(),H=()=>Y(r,o,t,l)?t+o/2-r/2:E(),T=()=>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,M=t-r-c,O=t+o+c,D=i-n-c,L=i+e+c,R=k>=r+c,$=P>=r+c,A=v>=n+c,z=m>=n+c;switch(s.startsWith("top")?f=R?M:$?O:Math.max(M,O):s.startsWith("bottom")?f=$?O:R?M:Math.max(O):s.startsWith("left")?g=A?D:z?L:Math.max(D,L):s.startsWith("right")&&(g=z?L:A?D:Math.max(L,D)),s){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,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,P=window.innerHeight,{popperHeight:k,popperWidth:E,refHeight:u,refWidth:C,refLeft:H,refTop:T}=V({reference:this.reference,popper:this.popper}),{x:b,y:S}=ne({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=Q,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: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()}},oe=Object.defineProperty,re=(s,e,t)=>e in s?oe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,a=(s,e,t)=>re(s,typeof e!="symbol"?e+"":e,t),ae=(s,e=document.body)=>e.querySelector(s),j=(s,e)=>{for(let[t,i]of Object.entries(e))s.setAttribute(t,i)},le=({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()},he=({element:s,callback:e})=>{le({element:s,callback:e,type:"transition",keysCheck:["all 0s ease 0s","all"]})},w=({state:s,trigger:e,popper:t})=>{let i=s==="open";j(t,{"data-state":s}),j(e,{"aria-expanded":`${i}`})},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"?ae(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=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),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)),he({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)}},G=(s,e=document.body)=>e.querySelector(s),pe=(s,e=document.body)=>Array.from(e.querySelectorAll(s)),W=(s,e,t)=>{let i=new CustomEvent(e,{detail:t});s.dispatchEvent(i)},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))}},I=class s{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 i=typeof e=="string"?G(e):e;this.contentElement=i;let o=y.getInstance("popover",this.contentElement);if(o)return o;this.triggerElement=G(`[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}),W(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=pe(e);for(let i of t)new s(i)}};function ce(s){s.directive("popover",(e,{},{cleanup:t})=>{let i=new I(e);t(()=>{i.cleanup()})})}var K=ce;document.addEventListener("alpine:init",()=>{K(window.Alpine)});})();