@flexilla/alpine-popover 0.0.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.
@@ -0,0 +1,464 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // builds/module.js
20
+ var module_exports = {};
21
+ __export(module_exports, {
22
+ default: () => module_default
23
+ });
24
+ module.exports = __toCommonJS(module_exports);
25
+
26
+ // ../../node_modules/@flexilla/popover/dist/popover.js
27
+ var K = Object.defineProperty;
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);
30
+ var A = (i, e = document.body) => e.querySelector(i);
31
+ var j = (i, e = document.body) => Array.from(e.querySelectorAll(i));
32
+ var M = (i, e, t) => {
33
+ const s = new CustomEvent(e, { detail: t });
34
+ i.dispatchEvent(s);
35
+ };
36
+ var q = Object.defineProperty;
37
+ var B = (i, e, t) => e in i ? q(i, e, { enumerable: true, configurable: true, writable: true, value: t }) : i[e] = t;
38
+ var a = (i, e, t) => B(i, typeof e != "symbol" ? e + "" : e, t);
39
+ var J = "bottom";
40
+ var N = ({ reference: i, popper: e }) => {
41
+ const t = e.getBoundingClientRect(), s = i.getBoundingClientRect();
42
+ 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
50
+ };
51
+ };
52
+ var Q = Object.defineProperty;
53
+ 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);
55
+ var X = (i, e, t, s) => {
56
+ const o = t, n = s - (t + e);
57
+ return o >= (i - e) / 2 && n >= (i - e) / 2;
58
+ };
59
+ var Y = (i, e, t, s) => (i - e) / 2 <= t && t + i / 2 + e / 2 <= s;
60
+ var Z = (i, e, t, s, o) => t > o - s ? e() ? window.innerHeight - o : t - o : i() ? 0 : t + s;
61
+ var _ = (i, e, t, s) => i <= s && t - i <= e;
62
+ var ee = (i, e, t, s) => t <= s && -i <= e;
63
+ var te = (i, e, t, s, o, n) => {
64
+ 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;
65
+ return i() ? 0 : e() ? d : c;
66
+ };
67
+ var se = (i, e, t, s) => i <= t && e - i - s >= i;
68
+ var ie = (i, e) => i >= e;
69
+ var ne = ({
70
+ placement: i,
71
+ refWidth: e,
72
+ refTop: t,
73
+ refLeft: s,
74
+ refHeight: o,
75
+ popperWidth: n,
76
+ popperHeight: r,
77
+ windowHeight: l,
78
+ windowWidth: d,
79
+ offsetDistance: c
80
+ }) => {
81
+ const m = d - s - e, v = s, D = l - t - o, C = t, u = () => Z(
82
+ () => ee(t, o, r, l),
83
+ () => _(t, o, r, l),
84
+ t,
85
+ o,
86
+ r
87
+ ), E = () => te(
88
+ () => se(s, d, n, e),
89
+ () => ie(s, n),
90
+ s,
91
+ n,
92
+ d,
93
+ 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) {
98
+ case "bottom":
99
+ case "bottom-middle":
100
+ case "top":
101
+ case "top-middle":
102
+ g = k();
103
+ break;
104
+ case "left":
105
+ case "left-middle":
106
+ case "right":
107
+ case "right-middle":
108
+ f = H();
109
+ break;
110
+ case "bottom-start":
111
+ case "top-start":
112
+ g = T();
113
+ break;
114
+ case "bottom-end":
115
+ case "top-end":
116
+ g = y();
117
+ break;
118
+ case "left-start":
119
+ case "right-start":
120
+ f = b();
121
+ break;
122
+ case "left-end":
123
+ case "right-end":
124
+ f = G();
125
+ break;
126
+ }
127
+ return { x: g, y: f };
128
+ };
129
+ var oe = class {
130
+ /**
131
+ * Flexilla Popper
132
+ * @param reference
133
+ * @param popper
134
+ * @param options
135
+ */
136
+ 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", () => {
138
+ if (!(this.reference instanceof HTMLElement)) throw new Error("Invalid HTMLElement for Reference Element");
139
+ if (!(this.popper instanceof HTMLElement)) throw new Error("Invalid HTMLElement for Popper");
140
+ if (typeof this.offsetDistance != "number") throw new Error("OffsetDistance must be a number");
141
+ }), h(this, "setPopperStyleProperty", (m, v) => {
142
+ this.popper.style.setProperty("--fx-popper-placement-x", `${m}px`), this.popper.style.setProperty("--fx-popper-placement-y", `${v}px`);
143
+ }), h(this, "setInitialStyles", () => {
144
+ this.popper.style.setProperty("--fx-popper-placement-x", ""), this.popper.style.setProperty("--fx-popper-placement-y", "");
145
+ }), h(this, "initPlacement", () => {
146
+ var m;
147
+ this.validateElements(), this.setInitialStyles();
148
+ 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(
149
+ {
150
+ placement: this.placement,
151
+ refWidth: k,
152
+ refTop: T,
153
+ refLeft: H,
154
+ popperWidth: u,
155
+ refHeight: E,
156
+ popperHeight: C,
157
+ windowHeight: D,
158
+ windowWidth: v,
159
+ offsetDistance: this.offsetDistance
160
+ }
161
+ );
162
+ this.setPopperStyleProperty(y, b), (m = this.onUpdate) == null || m.call(this, { x: y, y: b, placement: this.placement });
163
+ }), h(this, "removeWindowEvents", () => {
164
+ this.isWindowEventsRegistered && (!this.disableOnResize && window.removeEventListener("resize", this.updatePosition), !this.disableOnScroll && window.removeEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = false);
165
+ }), h(this, "attachWindowEvent", () => {
166
+ this.isWindowEventsRegistered && this.removeWindowEvents(), this.disableOnResize || window.addEventListener("resize", this.updatePosition), this.disableOnScroll || window.addEventListener("scroll", this.updatePosition), this.isWindowEventsRegistered = true;
167
+ }), h(this, "resetPosition", () => {
168
+ this.setInitialStyles();
169
+ }), h(this, "updatePosition", () => {
170
+ this.initPlacement(), this.attachWindowEvent();
171
+ }), h(this, "cleanupEvents", () => {
172
+ this.setInitialStyles(), this.removeWindowEvents();
173
+ });
174
+ const {
175
+ offsetDistance: o = 10,
176
+ placement: n = J,
177
+ eventEffect: r = {},
178
+ onUpdate: l
179
+ } = s;
180
+ if (!(e instanceof HTMLElement)) throw new Error("Invalid HTMLElement for Reference Element");
181
+ if (!(t instanceof HTMLElement)) throw new Error("Invalid HTMLElement for Popper");
182
+ if (s.offsetDistance && typeof s.offsetDistance != "number") throw new Error("OffsetDistance must be a number");
183
+ const { disableOnResize: d, disableOnScroll: c } = r;
184
+ 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;
185
+ }
186
+ setOptions({ placement: e, offsetDistance: t }) {
187
+ this.placement = e, this.offsetDistance = t || this.offsetDistance, this.initPlacement(), this.attachWindowEvent();
188
+ }
189
+ };
190
+ var re = (i, e = document.body) => e.querySelector(i);
191
+ var z = (i, e) => {
192
+ for (const [t, s] of Object.entries(e))
193
+ i.setAttribute(t, s);
194
+ };
195
+ var ae = ({
196
+ element: i,
197
+ callback: e,
198
+ type: t,
199
+ keysCheck: s
200
+ }) => {
201
+ const o = getComputedStyle(i), n = o.transition;
202
+ if (n !== "none" && n !== "" && !s.includes(n)) {
203
+ const r = "transitionend", l = () => {
204
+ i.removeEventListener(r, l), e();
205
+ };
206
+ i.addEventListener(r, l, { once: true });
207
+ } else
208
+ e();
209
+ };
210
+ var le = ({
211
+ element: i,
212
+ callback: e
213
+ }) => {
214
+ ae({
215
+ element: i,
216
+ callback: e,
217
+ type: "transition",
218
+ keysCheck: ["all 0s ease 0s", "all"]
219
+ });
220
+ };
221
+ var w = ({ state: i, trigger: e, popper: t }) => {
222
+ z(t, {
223
+ "data-state": i
224
+ }), z(e, {
225
+ "aria-expanded": `${i}`
226
+ });
227
+ };
228
+ var he = class {
229
+ /**
230
+ * Creates an instance of CreateOverlay
231
+ * @param {Object} params - The initialization parameters
232
+ * @param {string | HTMLElement} params.trigger - The trigger element selector or HTMLElement
233
+ * @param {string | HTMLElement} params.content - The content element selector or HTMLElement
234
+ * @param {OverlayOptions} [params.options] - Configuration options for the overlay
235
+ * @throws {Error} When trigger or content elements are invalid
236
+ */
237
+ constructor({ trigger: e, content: t, options: s = {} }) {
238
+ 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) => {
239
+ 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());
240
+ }), a(this, "handleKeyDown", (n) => {
241
+ n.preventDefault(), this.triggerStrategy !== "hover" && n.key === "Escape" && this.contentElement.getAttribute("data-state") === "open" && (this.preventFromCloseOutside || this.hide());
242
+ }), a(this, "toggleStateOnClick", () => {
243
+ (this.contentElement.dataset.state || "close") === "close" ? (this.show(), this.triggerStrategy === "hover" && this.addEventOnMouseEnter()) : this.hide();
244
+ }), a(this, "hideOnMouseLeaseTrigger", () => {
245
+ setTimeout(() => {
246
+ this.contentElement.matches(":hover") || this.hide();
247
+ }, 150);
248
+ }), a(this, "hideOnMouseLeave", () => {
249
+ setTimeout(() => {
250
+ this.triggerElement.matches(":hover") || this.hide();
251
+ }, 150);
252
+ }), a(this, "addEventOnMouseEnter", () => {
253
+ this.triggerElement.addEventListener("mouseleave", this.hideOnMouseLeaseTrigger), this.contentElement.addEventListener("mouseleave", this.hideOnMouseLeave);
254
+ }), a(this, "showOnMouseEnter", () => {
255
+ this.show(), this.addEventOnMouseEnter();
256
+ }), a(this, "setShowOptions", ({ placement: n, offsetDistance: r }) => {
257
+ var l, d, c, m;
258
+ this.popper.setOptions({
259
+ placement: n,
260
+ offsetDistance: r
261
+ }), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (d = (l = this.options).beforeShow) == null || d.call(l), w({
262
+ state: "open",
263
+ popper: this.contentElement,
264
+ trigger: this.triggerElement
265
+ }), this.onToggleState(false), (m = (c = this.options).onShow) == null || m.call(c);
266
+ }), a(this, "setPopperOptions", ({ placement: n, offsetDistance: r }) => {
267
+ this.popper.setOptions({
268
+ placement: n,
269
+ offsetDistance: r
270
+ });
271
+ }), a(this, "cleanup", () => {
272
+ this.triggerElement.removeEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.removeEventListener("mouseenter", this.showOnMouseEnter);
273
+ });
274
+ var o;
275
+ 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");
276
+ if (!(this.contentElement instanceof HTMLElement)) throw new Error("Content element must be a valid HTML element");
277
+ 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(
278
+ this.triggerElement,
279
+ this.contentElement,
280
+ {
281
+ placement: this.placement,
282
+ offsetDistance: this.offsetDistance,
283
+ eventEffect: this.eventEffect
284
+ }
285
+ ), this.initInstance();
286
+ }
287
+ onToggleState(e) {
288
+ var t, s;
289
+ (s = (t = this.options).onToggle) == null || s.call(t, { isHidden: e });
290
+ }
291
+ /**
292
+ * Shows the overlay
293
+ * Positions the overlay, adds event listeners, and triggers related callbacks
294
+ */
295
+ show() {
296
+ var e, t, s, o;
297
+ this.popper.updatePosition(), document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleDocumentClick), (t = (e = this.options).beforeShow) == null || t.call(e), w({
298
+ state: "open",
299
+ popper: this.contentElement,
300
+ trigger: this.triggerElement
301
+ }), this.onToggleState(false), (o = (s = this.options).onShow) == null || o.call(s);
302
+ }
303
+ /**
304
+ * Hides the overlay
305
+ * Removes event listeners and triggers related callbacks
306
+ */
307
+ hide() {
308
+ var e, t;
309
+ (t = (e = this.options).beforeHide) == null || t.call(e), w({
310
+ state: "close",
311
+ popper: this.contentElement,
312
+ trigger: this.triggerElement
313
+ }), 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({
314
+ element: this.contentElement,
315
+ callback: () => {
316
+ var s, o;
317
+ this.onToggleState(true), this.popper.cleanupEvents(), (o = (s = this.options).onHide) == null || o.call(s);
318
+ }
319
+ });
320
+ }
321
+ initInstance() {
322
+ w({
323
+ state: this.defaultState,
324
+ popper: this.contentElement,
325
+ trigger: this.triggerElement
326
+ }), this.defaultState === "open" ? this.show() : w({
327
+ state: "close",
328
+ popper: this.contentElement,
329
+ trigger: this.triggerElement
330
+ }), this.triggerElement.addEventListener("click", this.toggleStateOnClick), this.triggerStrategy === "hover" && this.triggerElement.addEventListener("mouseenter", this.showOnMouseEnter);
331
+ }
332
+ };
333
+ var x = class {
334
+ static initGlobalRegistry() {
335
+ window.$flexillaInstances || (window.$flexillaInstances = {});
336
+ }
337
+ static register(e, t, s) {
338
+ return this.initGlobalRegistry(), window.$flexillaInstances[e] || (window.$flexillaInstances[e] = []), this.getInstance(e, t) || (window.$flexillaInstances[e].push({ element: t, instance: s }), s);
339
+ }
340
+ static getInstance(e, t) {
341
+ var s, o;
342
+ return this.initGlobalRegistry(), (o = (s = window.$flexillaInstances[e]) == null ? void 0 : s.find(
343
+ (n) => n.element === t
344
+ )) == null ? void 0 : o.instance;
345
+ }
346
+ static removeInstance(e, t) {
347
+ this.initGlobalRegistry(), window.$flexillaInstances[e] && (window.$flexillaInstances[e] = window.$flexillaInstances[e].filter(
348
+ (s) => s.element !== t
349
+ ));
350
+ }
351
+ };
352
+ var P = class _P {
353
+ /**
354
+ * Creates a new Popover instance.
355
+ * @param {string | HTMLElement} popoverEl - The popover content element or its selector.
356
+ * @param {PopoverOptions} [options={}] - Configuration options for the popover.
357
+ * @example
358
+ * // Create a popover with default options
359
+ * const popover = new Popover('#my-popover');
360
+ *
361
+ * // Create a popover with custom options
362
+ * const popover = new Popover('#my-popover', {
363
+ * placement: 'top',
364
+ * triggerStrategy: 'hover',
365
+ * offsetDistance: 10
366
+ * });
367
+ */
368
+ constructor(e, t = {}) {
369
+ p(this, "triggerElement");
370
+ p(this, "contentElement");
371
+ p(this, "options");
372
+ p(this, "PopoverInstance");
373
+ p(this, "triggerStrategy");
374
+ p(this, "placement");
375
+ p(this, "offsetDistance");
376
+ p(this, "preventFromCloseOutside");
377
+ p(this, "preventFromCloseInside");
378
+ p(this, "defaultState");
379
+ p(this, "setShowOptions", ({ placement: e2, offsetDistance: t2 }) => {
380
+ this.PopoverInstance.setShowOptions({ placement: e2, offsetDistance: t2 });
381
+ });
382
+ p(this, "show", () => {
383
+ this.PopoverInstance.show(), M(this.contentElement, "popover-show", {
384
+ isHidden: false
385
+ });
386
+ });
387
+ p(this, "hide", () => {
388
+ this.PopoverInstance.hide(), M(this.contentElement, "popover-hide", {
389
+ isHidden: true
390
+ });
391
+ });
392
+ p(this, "cleanup", () => {
393
+ this.PopoverInstance.cleanup(), x.removeInstance("popover", this.contentElement);
394
+ });
395
+ const s = typeof e == "string" ? A(e) : e;
396
+ this.contentElement = s;
397
+ const o = x.getInstance("popover", this.contentElement);
398
+ if (o)
399
+ return o;
400
+ 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
+ trigger: this.triggerElement,
402
+ content: this.contentElement,
403
+ options: {
404
+ placement: this.placement,
405
+ offsetDistance: this.offsetDistance,
406
+ triggerStrategy: this.triggerStrategy,
407
+ preventFromCloseOutside: this.preventFromCloseOutside,
408
+ preventCloseFromInside: this.preventFromCloseInside,
409
+ defaultState: this.defaultState,
410
+ onShow: this.options.onShow,
411
+ onHide: this.options.onHide,
412
+ onToggle: ({ isHidden: n }) => {
413
+ var r, l;
414
+ (l = (r = this.options).onToggle) == null || l.call(r, { isHidden: n }), M(this.contentElement, "popover-toggle", {
415
+ isHidden: n
416
+ });
417
+ },
418
+ popper: this.options.popper
419
+ }
420
+ }), x.register("popover", this.contentElement, this);
421
+ }
422
+ /**
423
+ * Creates a new Popover instance with the specified options.
424
+ * @param {string | HTMLElement} popoverEl - The popover content element or its selector.
425
+ * @param {PopoverOptions} [options] - Configuration options for the popover.
426
+ * @returns {Popover} A new Popover instance.
427
+ * @example
428
+ * const popover = Popover.init('#my-popover', {
429
+ * placement: 'bottom',
430
+ * triggerStrategy: 'click'
431
+ * });
432
+ */
433
+ static init(e, t) {
434
+ return new _P(e, t);
435
+ }
436
+ /**
437
+ * Automatically initializes all popover elements matching the specified selector.
438
+ * @param {string} [selector='[data-fx-popover]'] - The selector to find popover elements.
439
+ * @example
440
+ * // Initialize all popovers with default selector
441
+ * Popover.autoInit();
442
+ *
443
+ * // Initialize popovers with custom selector
444
+ * Popover.autoInit('.custom-popover');
445
+ */
446
+ static autoInit(e = "[data-fx-popover]") {
447
+ const t = j(e);
448
+ for (const s of t) new _P(s);
449
+ }
450
+ };
451
+
452
+ // src/index.js
453
+ function Popover(Alpine) {
454
+ Alpine.directive("popover", (el, {}, { cleanup }) => {
455
+ const popover_ = new P(el);
456
+ cleanup(() => {
457
+ popover_.cleanup();
458
+ });
459
+ });
460
+ }
461
+ var src_default = Popover;
462
+
463
+ // builds/module.js
464
+ var module_default = src_default;