@flexilla/alpine-popover 0.2.0 → 0.3.1

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,101 +1,101 @@
1
1
  (() => {
2
2
  // ../../node_modules/@flexilla/popover/dist/popover.js
3
- var B = Object.defineProperty;
4
- var j = (s, e, t) => e in s ? B(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
5
- var a = (s, e, t) => j(s, typeof e != "symbol" ? e + "" : e, t);
6
- var G = Object.defineProperty;
7
- var U = (s, e, t) => e in s ? G(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
8
- var p = (s, e, t) => U(s, typeof e != "symbol" ? e + "" : e, t);
9
- var K = "bottom";
10
- var q = ({ reference: s, popper: e }) => {
11
- if (!s || !e)
3
+ var q = Object.defineProperty;
4
+ var G = (n, e, t) => e in n ? q(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
5
+ var a = (n, e, t) => G(n, typeof e != "symbol" ? e + "" : e, t);
6
+ var U = Object.defineProperty;
7
+ var K = (n, e, t) => e in n ? U(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
8
+ var p = (n, e, t) => K(n, typeof e != "symbol" ? e + "" : e, t);
9
+ var V = "bottom";
10
+ var X = ({ reference: n, popper: e }) => {
11
+ if (!n || !e)
12
12
  throw new Error("Reference or popper element is null or undefined");
13
- const t = /* @__PURE__ */ new WeakMap(), n = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = n(e), i = n(s);
13
+ const t = /* @__PURE__ */ new WeakMap(), i = (r) => (t.has(r) || t.set(r, r.getBoundingClientRect()), t.get(r)), o = i(e), s = i(n);
14
14
  return {
15
15
  popperHeight: o.height,
16
16
  popperWidth: o.width,
17
- refHeight: i.height,
18
- refWidth: i.width,
19
- refLeft: i.left,
20
- refTop: i.top,
21
- refRight: i.right
17
+ refHeight: s.height,
18
+ refWidth: s.width,
19
+ refLeft: s.left,
20
+ refTop: s.top,
21
+ refRight: s.right
22
22
  };
23
23
  };
24
- var V = (s, e, t, n) => {
25
- const o = t, i = n - (t + e);
26
- return o >= (s - e) / 2 && i >= (s - e) / 2;
24
+ var Y = (n, e, t, i) => {
25
+ const o = t, s = i - (t + e);
26
+ return o >= (n - e) / 2 && s >= (n - e) / 2;
27
27
  };
28
- var X = (s, e, t, n) => (s - e) / 2 <= t && t + s / 2 + e / 2 <= n;
29
- var Y = (s, e, t, n, o) => t > o - n ? e() ? window.innerHeight - o : t - o : s() ? 0 : t + n;
30
- var J = (s, e, t, n) => s <= n && t - s <= e;
31
- var Q = (s, e, t, n) => t <= n && -s <= e;
32
- var Z = (s, e, t, n, o, i) => {
33
- const r = o - t - i, h = t - n, d = t + i - n + (o - t - i), c = r >= 0 ? o - n : h >= 0 ? t - n : t;
34
- return s() ? 0 : e() ? d : c;
28
+ var J = (n, e, t, i) => (n - e) / 2 <= t && t + n / 2 + e / 2 <= i;
29
+ var Q = (n, e, t, i, o) => t > o - i ? e() ? window.innerHeight - o : t - o : n() ? 0 : t + i;
30
+ var Z = (n, e, t, i) => n <= i && t - n <= e;
31
+ var _ = (n, e, t, i) => t <= i && -n <= e;
32
+ var ee = (n, e, t, i, o, s) => {
33
+ const r = o - t - s, h = t - i, d = t + s - i + (o - t - s), c = r >= 0 ? o - i : h >= 0 ? t - i : t;
34
+ return n() ? 0 : e() ? d : c;
35
35
  };
36
- var _ = (s, e, t, n) => s <= t && e - s - n >= s;
37
- var ee = (s, e) => s >= e;
38
- var te = ({
39
- placement: s,
36
+ var te = (n, e, t, i) => n <= t && e - n - i >= n;
37
+ var ne = (n, e) => n >= e;
38
+ var ie = ({
39
+ placement: n,
40
40
  refWidth: e,
41
41
  refTop: t,
42
- refLeft: n,
42
+ refLeft: i,
43
43
  refHeight: o,
44
- popperWidth: i,
44
+ popperWidth: s,
45
45
  popperHeight: r,
46
46
  windowHeight: h,
47
47
  windowWidth: d,
48
48
  offsetDistance: c
49
49
  }) => {
50
- const m = d - n - e, v = n, I = h - t - o, C = t, E = () => Y(
51
- () => Q(t, o, r, h),
52
- () => J(t, o, r, h),
50
+ const m = d - i - e, u = i, x = h - t - o, C = t, v = () => Q(
51
+ () => _(t, o, r, h),
52
+ () => Z(t, o, r, h),
53
53
  t,
54
54
  o,
55
55
  r
56
- ), u = () => Z(
57
- () => _(n, d, i, e),
58
- () => ee(n, i),
59
- n,
56
+ ), E = () => ee(
57
+ () => te(i, d, s, e),
58
+ () => ne(i, s),
60
59
  i,
60
+ s,
61
61
  d,
62
62
  e
63
- ), D = () => V(i, e, n, d) ? n + e / 2 - i / 2 : u(), M = () => X(r, o, t, h) ? t + o / 2 - r / 2 : E(), x = () => n + i <= d ? n : u(), b = () => n + e - i >= 0 ? n + e - i : u(), y = () => t + r <= h ? t : E(), z = () => t + o - r >= 0 ? t + o - r : E();
64
- let g = 0, f = 0;
65
- const T = t - r - c, O = t + o + c, S = n - i - c, L = n + e + c, W = C >= r + c, F = I >= r + c, R = v >= i + c, $ = m >= i + c;
66
- switch (s.startsWith("top") ? f = W ? T : F ? O : Math.max(T, O) : s.startsWith("bottom") ? f = F ? O : W ? T : Math.max(O) : s.startsWith("left") ? g = R ? S : $ ? L : Math.max(S, L) : s.startsWith("right") && (g = $ ? L : R ? S : Math.max(L, S)), s) {
63
+ ), D = () => Y(s, e, i, d) ? i + e / 2 - s / 2 : E(), M = () => J(r, o, t, h) ? t + o / 2 - r / 2 : v(), T = () => i + s <= d ? i : E(), y = () => i + e - s >= 0 ? i + e - s : E(), O = () => t + r <= h ? t : v(), j = () => t + o - r >= 0 ? t + o - r : v();
64
+ let f = 0, g = 0;
65
+ const k = t - r - c, S = t + o + c, L = i - s - c, I = i + e + c, F = C >= r + c, $ = x >= r + c, R = u >= s + c, A = m >= s + c;
66
+ switch (n.startsWith("top") ? g = F ? k : $ ? S : Math.max(k, S) : n.startsWith("bottom") ? g = $ ? S : F ? k : Math.max(S) : n.startsWith("left") ? f = R ? L : A ? I : Math.max(L, I) : n.startsWith("right") && (f = A ? I : R ? L : Math.max(I, L)), n) {
67
67
  case "bottom":
68
68
  case "bottom-middle":
69
69
  case "top":
70
70
  case "top-middle":
71
- g = D();
71
+ f = D();
72
72
  break;
73
73
  case "left":
74
74
  case "left-middle":
75
75
  case "right":
76
76
  case "right-middle":
77
- f = M();
77
+ g = M();
78
78
  break;
79
79
  case "bottom-start":
80
80
  case "top-start":
81
- g = x();
81
+ f = T();
82
82
  break;
83
83
  case "bottom-end":
84
84
  case "top-end":
85
- g = b();
85
+ f = y();
86
86
  break;
87
87
  case "left-start":
88
88
  case "right-start":
89
- f = y();
89
+ g = O();
90
90
  break;
91
91
  case "left-end":
92
92
  case "right-end":
93
- f = z();
93
+ g = j();
94
94
  break;
95
95
  }
96
- return { x: g, y: f };
96
+ return { x: f, y: g };
97
97
  };
98
- var ne = class {
98
+ var se = class {
99
99
  /**
100
100
  * Flexilla Popper
101
101
  * @param reference
@@ -114,7 +114,7 @@
114
114
  * @param {boolean} [options.eventEffect.disableOnScroll] - Disable position updates on scroll
115
115
  * @param {Function} [options.onUpdate] - Callback function when position updates
116
116
  */
117
- constructor(e, t, n = {}) {
117
+ constructor(e, t, i = {}) {
118
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", () => {
119
119
  if (!(this.reference instanceof HTMLElement))
120
120
  throw new Error("Invalid HTMLElement for Reference Element");
@@ -122,28 +122,28 @@
122
122
  throw new Error("Invalid HTMLElement for Popper");
123
123
  if (typeof this.offsetDistance != "number")
124
124
  throw new Error("OffsetDistance must be a number");
125
- }), p(this, "setPopperStyleProperty", (m, v) => {
126
- this.popper.style.setProperty("--fx-popper-placement-x", `${m}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
125
+ }), p(this, "setPopperStyleProperty", (m, u) => {
126
+ this.popper.style.setProperty("--fx-popper-placement-x", `${m}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${u}px`);
127
127
  }), p(this, "setInitialStyles", () => {
128
128
  this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
129
129
  }), p(this, "initPlacement", () => {
130
130
  var m;
131
131
  this.validateElements(), this.setInitialStyles();
132
- const v = window.innerWidth, I = window.innerHeight, { popperHeight: C, popperWidth: E, refHeight: u, refWidth: D, refLeft: M, refTop: x } = q({ reference: this.reference, popper: this.popper }), { x: b, y } = te(
132
+ const u = window.innerWidth, x = window.innerHeight, { popperHeight: C, popperWidth: v, refHeight: E, refWidth: D, refLeft: M, refTop: T } = X({ reference: this.reference, popper: this.popper }), { x: y, y: O } = ie(
133
133
  {
134
134
  placement: this.placement,
135
135
  refWidth: D,
136
- refTop: x,
136
+ refTop: T,
137
137
  refLeft: M,
138
- popperWidth: E,
139
- refHeight: u,
138
+ popperWidth: v,
139
+ refHeight: E,
140
140
  popperHeight: C,
141
- windowHeight: I,
142
- windowWidth: v,
141
+ windowHeight: x,
142
+ windowWidth: u,
143
143
  offsetDistance: this.offsetDistance
144
144
  }
145
145
  );
146
- this.setPopperStyleProperty(b, y), (m = this.onUpdate) == null || m.call(this, { x: b, y, placement: this.placement });
146
+ this.setPopperStyleProperty(y, O), (m = this.onUpdate) == null || m.call(this, { x: y, y: O, placement: this.placement });
147
147
  }), p(this, "removeWindowEvents", () => {
148
148
  this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
149
149
  }), p(this, "attachWindowEvent", () => {
@@ -157,18 +157,18 @@
157
157
  });
158
158
  const {
159
159
  offsetDistance: o = 10,
160
- placement: i = K,
160
+ placement: s = V,
161
161
  eventEffect: r = {},
162
162
  onUpdate: h
163
- } = n;
163
+ } = i;
164
164
  if (!(e instanceof HTMLElement))
165
165
  throw new Error("Invalid HTMLElement for Reference Element");
166
166
  if (!(t instanceof HTMLElement))
167
167
  throw new Error("Invalid HTMLElement for Popper");
168
- if (n.offsetDistance && typeof n.offsetDistance != "number")
168
+ if (i.offsetDistance && typeof i.offsetDistance != "number")
169
169
  throw new Error("OffsetDistance must be a number");
170
170
  const { disableOnResize: d, disableOnScroll: c } = r;
171
- this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = i, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = h;
171
+ this.isWindowEventsRegistered = false, this.reference = e, this.popper = t, this.offsetDistance = o, this.placement = s, this.disableOnResize = d || false, this.disableOnScroll = c || false, this.onUpdate = h;
172
172
  }
173
173
  /**
174
174
  * Updates popper configuration and recalculates position
@@ -181,53 +181,53 @@
181
181
  this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
182
182
  }
183
183
  };
184
- var se = Object.defineProperty;
185
- var ie = (s, e, t) => e in s ? se(s, e, { enumerable: true, configurable: true, writable: true, value: t }) : s[e] = t;
186
- var l = (s, e, t) => ie(s, typeof e != "symbol" ? e + "" : e, t);
187
- var oe = (s, e = document.body) => e.querySelector(s);
188
- var N = (s, e) => {
189
- for (const [t, n] of Object.entries(e))
190
- s.setAttribute(t, n);
184
+ var oe = Object.defineProperty;
185
+ var re = (n, e, t) => e in n ? oe(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
186
+ var l = (n, e, t) => re(n, typeof e != "symbol" ? e + "" : e, t);
187
+ var ae = (n, e = document.body) => e.querySelector(n);
188
+ var N = (n, e) => {
189
+ for (const [t, i] of Object.entries(e))
190
+ n.setAttribute(t, i);
191
191
  };
192
- var re = ({
193
- element: s,
192
+ var le = ({
193
+ element: n,
194
194
  callback: e,
195
195
  type: t,
196
- keysCheck: n
196
+ keysCheck: i
197
197
  }) => {
198
- const o = getComputedStyle(s), i = o.transition;
199
- if (i !== "none" && i !== "" && !n.includes(i)) {
198
+ const o = getComputedStyle(n), s = o.transition;
199
+ if (s !== "none" && s !== "" && !i.includes(s)) {
200
200
  const r = "transitionend", h = () => {
201
- s.removeEventListener(r, h), e();
201
+ n.removeEventListener(r, h), e();
202
202
  };
203
- s.addEventListener(r, h, { once: true });
203
+ n.addEventListener(r, h, { once: true });
204
204
  } else
205
205
  e();
206
206
  };
207
- var ae = ({
208
- element: s,
207
+ var he = ({
208
+ element: n,
209
209
  callback: e
210
210
  }) => {
211
- re({
212
- element: s,
211
+ le({
212
+ element: n,
213
213
  callback: e,
214
214
  type: "transition",
215
215
  keysCheck: ["all 0s ease 0s", "all"]
216
216
  });
217
217
  };
218
- var le = (s, e, t) => {
219
- const n = new CustomEvent(e, { detail: t });
220
- s.dispatchEvent(n);
218
+ var pe = (n, e, t) => {
219
+ const i = new CustomEvent(e, { detail: t });
220
+ n.dispatchEvent(i);
221
221
  };
222
- var w = ({ state: s, trigger: e, popper: t }) => {
223
- const n = s === "open";
222
+ var w = ({ state: n, trigger: e, popper: t }) => {
223
+ const i = n === "open";
224
224
  N(t, {
225
- "data-state": s
225
+ "data-state": n
226
226
  }), N(e, {
227
- "aria-expanded": `${n}`
227
+ "aria-expanded": `${i}`
228
228
  });
229
229
  };
230
- var he = class {
230
+ var ce = class {
231
231
  /**
232
232
  * Creates an instance of CreateOverlay
233
233
  * @param {Object} params - The initialization parameters
@@ -235,11 +235,11 @@
235
235
  * @param {string | HTMLElement} params.content - The content element selector or HTMLElement
236
236
  * @param {OverlayOptions} [params.options] - Configuration options for the overlay
237
237
  */
238
- constructor({ trigger: e, content: t, options: n = {} }) {
239
- l(this, "triggerElement"), l(this, "contentElement"), l(this, "triggerStrategy"), l(this, "placement"), l(this, "offsetDistance"), l(this, "preventFromCloseOutside"), l(this, "preventFromCloseInside"), l(this, "options"), l(this, "defaultState"), l(this, "popper"), l(this, "eventEffect"), l(this, "getElement", (i) => typeof i == "string" ? oe(i) : i instanceof HTMLElement ? i : void 0), l(this, "handleDocumentClick", (i) => {
240
- this.contentElement.getAttribute("data-state") === "open" && (!this.triggerElement.contains(i.target) && !this.preventFromCloseInside && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && !this.contentElement.contains(i.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(i.target) && this.contentElement.contains(i.target) && !this.preventFromCloseInside && this.hide());
241
- }), l(this, "handleKeyDown", (i) => {
242
- i.preventDefault(), this.triggerStrategy !== "hover" && i.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
238
+ constructor({ trigger: e, content: t, options: i = {} }) {
239
+ l(this, "triggerElement"), l(this, "contentElement"), l(this, "triggerStrategy"), l(this, "placement"), l(this, "offsetDistance"), l(this, "preventFromCloseOutside"), l(this, "preventFromCloseInside"), l(this, "options"), l(this, "defaultState"), l(this, "popper"), l(this, "eventEffect"), l(this, "getElement", (s) => typeof s == "string" ? ae(s) : s instanceof HTMLElement ? s : void 0), l(this, "handleDocumentClick", (s) => {
240
+ this.contentElement.getAttribute("data-state") === "open" && (!this.triggerElement.contains(s.target) && !this.preventFromCloseInside && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(s.target) && !this.contentElement.contains(s.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(s.target) && !this.contentElement.contains(s.target) && !this.preventFromCloseOutside ? this.hide() : !this.triggerElement.contains(s.target) && this.contentElement.contains(s.target) && !this.preventFromCloseInside && this.hide());
241
+ }), l(this, "handleKeyDown", (s) => {
242
+ s.preventDefault(), this.triggerStrategy !== "hover" && s.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
243
243
  }), l(this, "toggleStateOnClick", () => {
244
244
  (this.contentElement.dataset.state || "close") === "close" ? (this.show(), this.triggerStrategy === "hover" && this.addEventOnMouseEnter()) : this.hide();
245
245
  }), l(this, "hideOnMouseLeaseTrigger", () => {
@@ -254,26 +254,26 @@
254
254
  this.triggerElement.addEventListener("mouseleave", this.hideOnMouseLeaseTrigger), this.contentElement.addEventListener("mouseleave", this.hideOnMouseLeave);
255
255
  }), l(this, "showOnMouseEnter", () => {
256
256
  this.show(), this.addEventOnMouseEnter();
257
- }), l(this, "setShowOptions", ({ placement: i, offsetDistance: r }) => {
257
+ }), l(this, "setShowOptions", ({ placement: s, offsetDistance: r }) => {
258
258
  var h, d, c, m;
259
259
  this.popper.setOptions({
260
- placement: i,
260
+ placement: s,
261
261
  offsetDistance: r
262
262
  }), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (d = (h = this.options).beforeShow) == null || d.call(h), w({
263
263
  state: "open",
264
264
  popper: this.contentElement,
265
265
  trigger: this.triggerElement
266
266
  }), this.onToggleState(false), (m = (c = this.options).onShow) == null || m.call(c);
267
- }), l(this, "setPopperOptions", ({ placement: i, offsetDistance: r }) => {
267
+ }), l(this, "setPopperOptions", ({ placement: s, offsetDistance: r }) => {
268
268
  this.popper.setOptions({
269
- placement: i,
269
+ placement: s,
270
270
  offsetDistance: r || this.offsetDistance
271
271
  });
272
- }), l(this, "setPopperTrigger", (i, r) => {
272
+ }), l(this, "setPopperTrigger", (s, r) => {
273
273
  this.cleanup(), this.popper.setOptions({
274
274
  placement: r.placement || this.placement,
275
275
  offsetDistance: r.offsetDistance || this.offsetDistance
276
- }), this.triggerElement = i, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
276
+ }), this.triggerElement = s, this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
277
277
  }), l(this, "cleanup", () => {
278
278
  this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
279
279
  });
@@ -282,7 +282,7 @@
282
282
  throw new Error("Trigger element must be a valid HTML element");
283
283
  if (!(this.contentElement instanceof HTMLElement))
284
284
  throw new Error("Content element must be a valid HTML element");
285
- this.options = n, this.triggerStrategy = this.options.triggerStrategy || "click", this.placement = this.options.placement || "bottom", this.offsetDistance = this.options.offsetDistance || 6, this.preventFromCloseOutside = this.options.preventFromCloseOutside || false, this.preventFromCloseInside = this.options.preventCloseFromInside || false, this.defaultState = this.options.defaultState || "close", this.eventEffect = (o = this.options.popper) == null ? void 0 : o.eventEffect, this.popper = new ne(
285
+ 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 || 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(
286
286
  this.triggerElement,
287
287
  this.contentElement,
288
288
  {
@@ -293,39 +293,39 @@
293
293
  ), this.initInstance();
294
294
  }
295
295
  onToggleState(e) {
296
- var t, n;
297
- (n = (t = this.options).onToggle) == null || n.call(t, { isHidden: e });
296
+ var t, i;
297
+ (i = (t = this.options).onToggle) == null || i.call(t, { isHidden: e });
298
298
  }
299
299
  /**
300
300
  * Shows the overlay
301
301
  * Positions the overlay, adds event listeners, and triggers related callbacks
302
302
  */
303
303
  show() {
304
- var e, t, n, o;
304
+ var e, t, i, o;
305
305
  this.popper.updatePosition(), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (t = (e = this.options).beforeShow) == null || t.call(e), w({
306
306
  state: "open",
307
307
  popper: this.contentElement,
308
308
  trigger: this.triggerElement
309
- }), this.onToggleState(false), (o = (n = this.options).onShow) == null || o.call(n);
309
+ }), this.onToggleState(false), (o = (i = this.options).onShow) == null || o.call(i);
310
310
  }
311
311
  /**
312
312
  * Hides the overlay
313
313
  * Removes event listeners and triggers related callbacks
314
314
  */
315
315
  hide() {
316
- var e, t, n;
316
+ var e, t, i;
317
317
  let o = false;
318
- le(this.contentElement, "before-hide", {
318
+ pe(this.contentElement, "before-hide", {
319
319
  setExitAction: (r) => {
320
320
  o = r;
321
321
  }
322
322
  });
323
- const i = (n = (t = (e = this.options).beforeHide) == null ? void 0 : t.call(e)) == null ? void 0 : n.cancelAction;
324
- o || i || (w({
323
+ const s = (i = (t = (e = this.options).beforeHide) == null ? void 0 : t.call(e)) == null ? void 0 : i.cancelAction;
324
+ o || s || (w({
325
325
  state: "close",
326
326
  popper: this.contentElement,
327
327
  trigger: this.triggerElement
328
- }), 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({
328
+ }), 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({
329
329
  element: this.contentElement,
330
330
  callback: () => {
331
331
  var r, h;
@@ -345,67 +345,95 @@
345
345
  }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
346
346
  }
347
347
  };
348
- var A = (s, e = document.body) => e.querySelector(s);
349
- var pe = (s, e = document.body) => Array.from(e.querySelectorAll(s));
350
- var k = (s, e, t) => {
351
- const n = new CustomEvent(e, { detail: t });
352
- s.dispatchEvent(n);
348
+ var z = (n, e = document.body) => e.querySelector(n);
349
+ var de = (n, e = document.body) => Array.from(e.querySelectorAll(n));
350
+ var H = (n, e, t) => {
351
+ const i = new CustomEvent(e, { detail: t });
352
+ n.dispatchEvent(i);
353
353
  };
354
- function ce(s, e, t = "move") {
355
- if (!(s instanceof HTMLElement))
354
+ function me(n) {
355
+ const e = () => {
356
+ document.querySelector(
357
+ "[data-fx-component]:not([data-component-initialized])"
358
+ ) ? requestAnimationFrame(e) : n();
359
+ };
360
+ e();
361
+ }
362
+ var B = "data-fx-teleport-root";
363
+ var P = "data-fx-teleported";
364
+ var fe = {
365
+ append: () => {
366
+ },
367
+ remove: () => {
368
+ },
369
+ restore: () => {
370
+ }
371
+ };
372
+ function ge(n, e, t = "move") {
373
+ var i;
374
+ if (!(n instanceof HTMLElement))
356
375
  throw new Error("Source element must be an HTMLElement");
357
376
  if (!(e instanceof HTMLElement))
358
377
  throw new Error("Target element must be an HTMLElement");
359
378
  if (!["move", "detachable"].includes(t))
360
379
  throw new Error(`Invalid teleport mode: ${t}. Must be "move" or "detachable".`);
361
- let n = document.createComment("teleporter-placeholder");
362
- const o = s.parentNode;
363
- return o ? o.insertBefore(n, s) : console.warn("Element has no parent; placeholder not inserted."), t === "move" ? (s.parentNode && e.appendChild(s), {
380
+ if ((i = n.parentElement) != null && i.closest(`[${B}]`))
381
+ return fe;
382
+ n.setAttribute(B, "");
383
+ let o = document.createComment("teleporter-placeholder");
384
+ const s = n.parentNode;
385
+ return s && s.insertBefore(o, n), t === "move" ? (n.parentNode && (e.appendChild(n), n.setAttribute(P, "")), {
364
386
  append() {
365
- s.parentNode !== e && e.appendChild(s);
387
+ n.parentNode !== e && (e.appendChild(n), n.setAttribute(P, ""));
366
388
  },
367
389
  remove() {
368
- n != null && n.parentNode && s.parentNode && n.parentNode.insertBefore(s, n);
390
+ o != null && o.parentNode && n.parentNode && o.parentNode.insertBefore(n, o);
369
391
  },
370
392
  restore() {
371
- n != null && n.parentNode && s.parentNode !== o && n.parentNode.insertBefore(s, n);
393
+ o != null && o.parentNode && n.parentNode !== s && o.parentNode.insertBefore(n, o);
372
394
  }
373
- }) : (s.parentNode && e.appendChild(s), {
395
+ }) : (n.parentNode && (e.appendChild(n), n.setAttribute(P, "")), {
374
396
  append() {
375
- e.contains(s) || e.appendChild(s);
397
+ e.contains(n) || e.appendChild(n);
376
398
  },
377
399
  remove() {
378
- s.parentNode && s.remove();
400
+ n.parentNode && n.remove();
379
401
  },
380
402
  restore() {
381
- n != null && n.parentNode && !s.parentNode && n.parentNode.insertBefore(s, n);
403
+ o != null && o.parentNode && !n.parentNode && o.parentNode.insertBefore(n, o);
382
404
  }
383
405
  });
384
406
  }
385
- var H = class {
407
+ var b = class {
386
408
  static initGlobalRegistry() {
387
409
  window.$flexillaInstances || (window.$flexillaInstances = {});
388
410
  }
389
- static register(e, t, n) {
390
- return this.initGlobalRegistry(), window.$flexillaInstances[e] || (window.$flexillaInstances[e] = []), this.getInstance(e, t) || (window.$flexillaInstances[e].push({ element: t, instance: n }), n);
411
+ static register(e, t, i) {
412
+ return this.initGlobalRegistry(), window.$flexillaInstances[e] || (window.$flexillaInstances[e] = []), this.getInstance(e, t) || (window.$flexillaInstances[e].push({ element: t, instance: i }), i);
391
413
  }
392
414
  static getInstance(e, t) {
393
- var n, o;
394
- return this.initGlobalRegistry(), (o = (n = window.$flexillaInstances[e]) == null ? void 0 : n.find(
395
- (i) => i.element === t
415
+ var i, o;
416
+ return this.initGlobalRegistry(), (o = (i = window.$flexillaInstances[e]) == null ? void 0 : i.find(
417
+ (s) => s.element === t
396
418
  )) == null ? void 0 : o.instance;
397
419
  }
398
420
  static removeInstance(e, t) {
399
421
  this.initGlobalRegistry(), window.$flexillaInstances[e] && (window.$flexillaInstances[e] = window.$flexillaInstances[e].filter(
400
- (n) => n.element !== t
422
+ (i) => i.element !== t
401
423
  ));
402
424
  }
425
+ static setup(e) {
426
+ e.setAttribute("data-fx-component", "fx");
427
+ }
428
+ static initialized(e) {
429
+ e.setAttribute("data-component-initialized", "initialized");
430
+ }
403
431
  };
404
- var de = {
432
+ var ue = {
405
433
  teleport: true,
406
434
  teleportMode: "move"
407
435
  };
408
- var P = class _P {
436
+ var W = class _W {
409
437
  /**
410
438
  * Creates a new Popover instance.
411
439
  * @param {string | HTMLElement} popoverEl - The popover content element or its selector.
@@ -435,7 +463,9 @@
435
463
  a(this, "experimentalOptions");
436
464
  a(this, "teleporter");
437
465
  a(this, "moveElOnInit", () => {
438
- this.experimentalOptions.teleport && (this.experimentalOptions.teleportMode === "detachable" ? this.teleporter.remove() : this.teleporter.append());
466
+ this.experimentalOptions.teleport && me(() => {
467
+ this.experimentalOptions.teleportMode === "detachable" ? this.teleporter.remove() : this.teleporter.append();
468
+ });
439
469
  });
440
470
  a(this, "moveEl", () => {
441
471
  this.experimentalOptions.teleport && this.experimentalOptions.teleportMode === "detachable" && this.teleporter.remove();
@@ -448,13 +478,13 @@
448
478
  });
449
479
  a(this, "onHide", () => {
450
480
  var e2, t2;
451
- (t2 = (e2 = this.options).onHide) == null || t2.call(e2), this.moveEl(), k(this.contentElement, "popover-hide", {
481
+ (t2 = (e2 = this.options).onHide) == null || t2.call(e2), this.moveEl(), H(this.contentElement, "popover-hide", {
452
482
  isHidden: true
453
483
  });
454
484
  });
455
485
  a(this, "onShow", () => {
456
486
  var e2, t2;
457
- (t2 = (e2 = this.options).onShow) == null || t2.call(e2), k(this.contentElement, "popover-show", {
487
+ (t2 = (e2 = this.options).onShow) == null || t2.call(e2), H(this.contentElement, "popover-show", {
458
488
  isHidden: false
459
489
  });
460
490
  });
@@ -474,14 +504,14 @@
474
504
  this.PopoverInstance.hide();
475
505
  });
476
506
  a(this, "cleanup", () => {
477
- this.PopoverInstance.cleanup(), H.removeInstance("popover", this.contentElement);
507
+ this.PopoverInstance.cleanup(), b.removeInstance("popover", this.contentElement);
478
508
  });
479
- const n = typeof e == "string" ? A(e) : e;
480
- this.contentElement = n;
481
- const o = H.getInstance("popover", this.contentElement);
509
+ const i = typeof e == "string" ? z(e) : e;
510
+ this.contentElement = i;
511
+ const o = b.getInstance("popover", this.contentElement);
482
512
  if (o)
483
513
  return o;
484
- this.triggerElement = A(`[data-popover-trigger][data-popover-id=${n.getAttribute("id")}]`), this.options = t, this.triggerStrategy = n.dataset.triggerStrategy ?? this.options.triggerStrategy ?? "click", this.placement = n.dataset.placement ?? this.options.placement ?? "bottom-middle", this.offsetDistance = parseInt(`${n.dataset.offsetDistance}`) ?? this.options.offsetDistance ?? 6, this.preventFromCloseOutside = n.hasAttribute("data-prevent-close-outside") ?? this.options.preventFromCloseOutside ?? false, this.preventFromCloseInside = n.hasAttribute("data-close-inside") ? false : this.options.preventCloseFromInside ?? true, this.defaultState = n.dataset.defaultState ?? this.options.defaultState ?? "close", this.experimentalOptions = Object.assign({}, de, t.experimental), this.teleporter = ce(this.contentElement, document.body, this.experimentalOptions.teleportMode), this.PopoverInstance = new he({
514
+ b.setup(this.contentElement), this.triggerElement = z(`[data-popover-trigger][data-popover-id=${i.getAttribute("id")}]`), this.options = t, this.triggerStrategy = i.dataset.triggerStrategy ?? this.options.triggerStrategy ?? "click", this.placement = i.dataset.placement ?? this.options.placement ?? "bottom-middle", this.offsetDistance = parseInt(`${i.dataset.offsetDistance}`) ?? this.options.offsetDistance ?? 6, this.preventFromCloseOutside = i.hasAttribute("data-prevent-close-outside") ?? this.options.preventFromCloseOutside ?? false, this.preventFromCloseInside = i.hasAttribute("data-close-inside") ? false : this.options.preventCloseFromInside ?? true, this.defaultState = i.dataset.defaultState ?? this.options.defaultState ?? "close", this.experimentalOptions = Object.assign({}, ue, t.experimental), this.teleporter = ge(this.contentElement, document.body, this.experimentalOptions.teleportMode), this.PopoverInstance = new ce({
485
515
  trigger: this.triggerElement,
486
516
  content: this.contentElement,
487
517
  options: {
@@ -494,15 +524,15 @@
494
524
  beforeShow: this.beforeShow,
495
525
  onShow: this.onShow,
496
526
  onHide: this.onHide,
497
- onToggle: ({ isHidden: i }) => {
527
+ onToggle: ({ isHidden: s }) => {
498
528
  var r, h;
499
- (h = (r = this.options).onToggle) == null || h.call(r, { isHidden: i }), k(this.contentElement, "popover-toggle", {
500
- isHidden: i
529
+ (h = (r = this.options).onToggle) == null || h.call(r, { isHidden: s }), H(this.contentElement, "popover-toggle", {
530
+ isHidden: s
501
531
  });
502
532
  },
503
533
  popper: this.options.popper
504
534
  }
505
- }), this.moveElOnInit(), H.register("popover", this.contentElement, this);
535
+ }), this.moveElOnInit(), b.register("popover", this.contentElement, this), b.initialized(this.contentElement);
506
536
  }
507
537
  /**
508
538
  * Creates a new Popover instance with the specified options.
@@ -516,7 +546,7 @@
516
546
  * });
517
547
  */
518
548
  static init(e, t) {
519
- return new _P(e, t);
549
+ return new _W(e, t);
520
550
  }
521
551
  /**
522
552
  * Automatically initializes all popover elements matching the specified selector.
@@ -529,16 +559,16 @@
529
559
  * Popover.autoInit('.custom-popover');
530
560
  */
531
561
  static autoInit(e = "[data-fx-popover]") {
532
- const t = pe(e);
533
- for (const n of t)
534
- new _P(n);
562
+ const t = de(e);
563
+ for (const i of t)
564
+ new _W(i);
535
565
  }
536
566
  };
537
567
 
538
568
  // src/index.js
539
569
  function Popover(Alpine) {
540
570
  Alpine.directive("popover", (el, {}, { cleanup }) => {
541
- const popover_ = new P(el);
571
+ const popover_ = new W(el);
542
572
  cleanup(() => {
543
573
  popover_.cleanup();
544
574
  });