@tnlmedia/inkmagine-gui 0.2.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,813 @@
1
+ import * as te from "vue";
2
+ import { computed as k, useAttrs as ke, defineComponent as S, createElementBlock as se, openBlock as $, mergeProps as M, unref as w, createBlock as P, resolveDynamicComponent as De, withCtx as A, renderSlot as O, createTextVNode as $e, nextTick as F, watchEffect as L, ref as y, onMounted as H, cloneVNode as Ee, h as Pe, Fragment as _e, provide as K, inject as z, onUnmounted as Q, normalizeProps as x, guardReactiveProps as T, createElementVNode as Me, normalizeClass as Oe } from "vue";
3
+ import './style/index.css';const E = k(() => {
4
+ const e = ke(), { class: t, ...r } = e;
5
+ return r;
6
+ }), ie = /* @__PURE__ */ S({
7
+ __name: "InkSpinner",
8
+ props: {
9
+ size: {},
10
+ theme: { default: "gray" }
11
+ },
12
+ setup(e) {
13
+ const t = e, r = k(() => {
14
+ const n = [];
15
+ return t.size && n.push(`tw-spinner-${t.size}`), t.theme && n.push(`tw-spinner-grow-${t.theme}`), n;
16
+ });
17
+ return (n, a) => ($(), se("div", M(w(E), {
18
+ class: ["tw-spinner-grow", r.value]
19
+ }), null, 16));
20
+ }
21
+ }), xe = /* @__PURE__ */ S({
22
+ __name: "InkButton",
23
+ props: {
24
+ as: { default: "button" },
25
+ type: { default: "button" },
26
+ size: {},
27
+ variant: { default: "base" },
28
+ theme: { default: "transparent" },
29
+ disabled: { type: Boolean, default: !1 },
30
+ loading: { type: Boolean, default: !1 }
31
+ },
32
+ setup(e) {
33
+ const t = e, r = k(() => {
34
+ const n = [];
35
+ switch (t.variant) {
36
+ case "icon":
37
+ t.size ? n.push(`tw-btn-icon-${t.size}`) : n.push("tw-btn-icon");
38
+ break;
39
+ default:
40
+ t.variant && n.push(`tw-btn-${t.variant}`), t.size && n.push(`tw-btn-${t.size}`);
41
+ break;
42
+ }
43
+ return t.loading ? t.variant === "base" || n.push("tw-btn-outline-gray") : t.theme ? n.push(`tw-btn-${t.theme}`) : n.push("tw-btn-transparent"), t.as !== "button" && t.disabled && n.push("tw-disabled"), n;
44
+ });
45
+ return (n, a) => ($(), P(De(n.as), M(w(E), {
46
+ type: n.as === "button" ? n.type : void 0,
47
+ disabled: n.disabled,
48
+ class: r.value
49
+ }), {
50
+ default: A(() => [
51
+ n.loading ? ($(), P(ie, {
52
+ key: 0,
53
+ size: "md"
54
+ })) : O(n.$slots, "default", { key: 1 }, () => [
55
+ a[0] || (a[0] = $e("Button"))
56
+ ])
57
+ ]),
58
+ _: 3
59
+ }, 16, ["type", "disabled", "class"]));
60
+ }
61
+ });
62
+ var ne;
63
+ let Te = Symbol("headlessui.useid"), Ae = 0;
64
+ const C = (ne = te.useId) != null ? ne : function() {
65
+ return te.inject(Te, () => `${++Ae}`)();
66
+ };
67
+ function b(e) {
68
+ var t;
69
+ if (e == null || e.value == null) return null;
70
+ let r = (t = e.value.$el) != null ? t : e.value;
71
+ return r instanceof Node ? r : null;
72
+ }
73
+ function R(e, t, ...r) {
74
+ if (e in t) {
75
+ let a = t[e];
76
+ return typeof a == "function" ? a(...r) : a;
77
+ }
78
+ let n = new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((a) => `"${a}"`).join(", ")}.`);
79
+ throw Error.captureStackTrace && Error.captureStackTrace(n, R), n;
80
+ }
81
+ var Fe = Object.defineProperty, Ne = (e, t, r) => t in e ? Fe(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, re = (e, t, r) => (Ne(e, typeof t != "symbol" ? t + "" : t, r), r);
82
+ let Re = class {
83
+ constructor() {
84
+ re(this, "current", this.detect()), re(this, "currentId", 0);
85
+ }
86
+ set(t) {
87
+ this.current !== t && (this.currentId = 0, this.current = t);
88
+ }
89
+ reset() {
90
+ this.set(this.detect());
91
+ }
92
+ nextId() {
93
+ return ++this.currentId;
94
+ }
95
+ get isServer() {
96
+ return this.current === "server";
97
+ }
98
+ get isClient() {
99
+ return this.current === "client";
100
+ }
101
+ detect() {
102
+ return typeof window > "u" || typeof document > "u" ? "server" : "client";
103
+ }
104
+ }, X = new Re();
105
+ function Y(e) {
106
+ if (X.isServer) return null;
107
+ if (e instanceof Node) return e.ownerDocument;
108
+ if (e != null && e.hasOwnProperty("value")) {
109
+ let t = b(e);
110
+ if (t) return t.ownerDocument;
111
+ }
112
+ return document;
113
+ }
114
+ let q = ["[contentEditable=true]", "[tabindex]", "a[href]", "area[href]", "button:not([disabled])", "iframe", "input:not([disabled])", "select:not([disabled])", "textarea:not([disabled])"].map((e) => `${e}:not([tabindex='-1'])`).join(",");
115
+ var G = ((e) => (e[e.First = 1] = "First", e[e.Previous = 2] = "Previous", e[e.Next = 4] = "Next", e[e.Last = 8] = "Last", e[e.WrapAround = 16] = "WrapAround", e[e.NoScroll = 32] = "NoScroll", e))(G || {}), Le = ((e) => (e[e.Error = 0] = "Error", e[e.Overflow = 1] = "Overflow", e[e.Success = 2] = "Success", e[e.Underflow = 3] = "Underflow", e))(Le || {}), Ce = ((e) => (e[e.Previous = -1] = "Previous", e[e.Next = 1] = "Next", e))(Ce || {});
116
+ function ce(e = document.body) {
117
+ return e == null ? [] : Array.from(e.querySelectorAll(q)).sort((t, r) => Math.sign((t.tabIndex || Number.MAX_SAFE_INTEGER) - (r.tabIndex || Number.MAX_SAFE_INTEGER)));
118
+ }
119
+ var J = ((e) => (e[e.Strict = 0] = "Strict", e[e.Loose = 1] = "Loose", e))(J || {});
120
+ function Z(e, t = 0) {
121
+ var r;
122
+ return e === ((r = Y(e)) == null ? void 0 : r.body) ? !1 : R(t, { 0() {
123
+ return e.matches(q);
124
+ }, 1() {
125
+ let n = e;
126
+ for (; n !== null; ) {
127
+ if (n.matches(q)) return !0;
128
+ n = n.parentElement;
129
+ }
130
+ return !1;
131
+ } });
132
+ }
133
+ function de(e) {
134
+ let t = Y(e);
135
+ F(() => {
136
+ t && !Z(t.activeElement, 0) && Be(e);
137
+ });
138
+ }
139
+ var je = ((e) => (e[e.Keyboard = 0] = "Keyboard", e[e.Mouse = 1] = "Mouse", e))(je || {});
140
+ typeof window < "u" && typeof document < "u" && (document.addEventListener("keydown", (e) => {
141
+ e.metaKey || e.altKey || e.ctrlKey || (document.documentElement.dataset.headlessuiFocusVisible = "");
142
+ }, !0), document.addEventListener("click", (e) => {
143
+ e.detail === 1 ? delete document.documentElement.dataset.headlessuiFocusVisible : e.detail === 0 && (document.documentElement.dataset.headlessuiFocusVisible = "");
144
+ }, !0));
145
+ function Be(e) {
146
+ e == null || e.focus({ preventScroll: !0 });
147
+ }
148
+ let Ue = ["textarea", "input"].join(",");
149
+ function He(e) {
150
+ var t, r;
151
+ return (r = (t = e == null ? void 0 : e.matches) == null ? void 0 : t.call(e, Ue)) != null ? r : !1;
152
+ }
153
+ function fe(e, t = (r) => r) {
154
+ return e.slice().sort((r, n) => {
155
+ let a = t(r), u = t(n);
156
+ if (a === null || u === null) return 0;
157
+ let l = a.compareDocumentPosition(u);
158
+ return l & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : l & Node.DOCUMENT_POSITION_PRECEDING ? 1 : 0;
159
+ });
160
+ }
161
+ function Ke(e, t) {
162
+ return ze(ce(), t, { relativeTo: e });
163
+ }
164
+ function ze(e, t, { sorted: r = !0, relativeTo: n = null, skipElements: a = [] } = {}) {
165
+ var u;
166
+ let l = (u = Array.isArray(e) ? e.length > 0 ? e[0].ownerDocument : document : e == null ? void 0 : e.ownerDocument) != null ? u : document, s = Array.isArray(e) ? r ? fe(e) : e : ce(e);
167
+ a.length > 0 && s.length > 1 && (s = s.filter((i) => !a.includes(i))), n = n ?? l.activeElement;
168
+ let d = (() => {
169
+ if (t & 5) return 1;
170
+ if (t & 10) return -1;
171
+ throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last");
172
+ })(), f = (() => {
173
+ if (t & 1) return 0;
174
+ if (t & 2) return Math.max(0, s.indexOf(n)) - 1;
175
+ if (t & 4) return Math.max(0, s.indexOf(n)) + 1;
176
+ if (t & 8) return s.length - 1;
177
+ throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last");
178
+ })(), m = t & 32 ? { preventScroll: !0 } : {}, p = 0, o = s.length, c;
179
+ do {
180
+ if (p >= o || p + o <= 0) return 0;
181
+ let i = f + p;
182
+ if (t & 16) i = (i + o) % o;
183
+ else {
184
+ if (i < 0) return 3;
185
+ if (i >= o) return 1;
186
+ }
187
+ c = s[i], c == null || c.focus(m), p += d;
188
+ } while (c !== l.activeElement);
189
+ return t & 6 && He(c) && c.select(), 2;
190
+ }
191
+ function We() {
192
+ return /iPhone/gi.test(window.navigator.platform) || /Mac/gi.test(window.navigator.platform) && window.navigator.maxTouchPoints > 0;
193
+ }
194
+ function Ve() {
195
+ return /Android/gi.test(window.navigator.userAgent);
196
+ }
197
+ function qe() {
198
+ return We() || Ve();
199
+ }
200
+ function U(e, t, r) {
201
+ X.isServer || L((n) => {
202
+ document.addEventListener(e, t, r), n(() => document.removeEventListener(e, t, r));
203
+ });
204
+ }
205
+ function Ge(e, t, r) {
206
+ X.isServer || L((n) => {
207
+ window.addEventListener(e, t, r), n(() => window.removeEventListener(e, t, r));
208
+ });
209
+ }
210
+ function Qe(e, t, r = k(() => !0)) {
211
+ function n(u, l) {
212
+ if (!r.value || u.defaultPrevented) return;
213
+ let s = l(u);
214
+ if (s === null || !s.getRootNode().contains(s)) return;
215
+ let d = function f(m) {
216
+ return typeof m == "function" ? f(m()) : Array.isArray(m) || m instanceof Set ? m : [m];
217
+ }(e);
218
+ for (let f of d) {
219
+ if (f === null) continue;
220
+ let m = f instanceof HTMLElement ? f : b(f);
221
+ if (m != null && m.contains(s) || u.composed && u.composedPath().includes(m)) return;
222
+ }
223
+ return !Z(s, J.Loose) && s.tabIndex !== -1 && u.preventDefault(), t(u, s);
224
+ }
225
+ let a = y(null);
226
+ U("pointerdown", (u) => {
227
+ var l, s;
228
+ r.value && (a.value = ((s = (l = u.composedPath) == null ? void 0 : l.call(u)) == null ? void 0 : s[0]) || u.target);
229
+ }, !0), U("mousedown", (u) => {
230
+ var l, s;
231
+ r.value && (a.value = ((s = (l = u.composedPath) == null ? void 0 : l.call(u)) == null ? void 0 : s[0]) || u.target);
232
+ }, !0), U("click", (u) => {
233
+ qe() || a.value && (n(u, () => a.value), a.value = null);
234
+ }, !0), U("touchend", (u) => n(u, () => u.target instanceof HTMLElement ? u.target : null), !0), Ge("blur", (u) => n(u, () => window.document.activeElement instanceof HTMLIFrameElement ? window.document.activeElement : null), !0);
235
+ }
236
+ function le(e, t) {
237
+ if (e) return e;
238
+ let r = t ?? "button";
239
+ if (typeof r == "string" && r.toLowerCase() === "button") return "button";
240
+ }
241
+ function pe(e, t) {
242
+ let r = y(le(e.value.type, e.value.as));
243
+ return H(() => {
244
+ r.value = le(e.value.type, e.value.as);
245
+ }), L(() => {
246
+ var n;
247
+ r.value || b(t) && b(t) instanceof HTMLButtonElement && !((n = b(t)) != null && n.hasAttribute("type")) && (r.value = "button");
248
+ }), r;
249
+ }
250
+ function ue(e) {
251
+ return [e.screenX, e.screenY];
252
+ }
253
+ function Xe() {
254
+ let e = y([-1, -1]);
255
+ return { wasMoved(t) {
256
+ let r = ue(t);
257
+ return e.value[0] === r[0] && e.value[1] === r[1] ? !1 : (e.value = r, !0);
258
+ }, update(t) {
259
+ e.value = ue(t);
260
+ } };
261
+ }
262
+ function Ye({ container: e, accept: t, walk: r, enabled: n }) {
263
+ L(() => {
264
+ let a = e.value;
265
+ if (!a || n !== void 0 && !n.value) return;
266
+ let u = Y(e);
267
+ if (!u) return;
268
+ let l = Object.assign((d) => t(d), { acceptNode: t }), s = u.createTreeWalker(a, NodeFilter.SHOW_ELEMENT, l, !1);
269
+ for (; s.nextNode(); ) r(s.currentNode);
270
+ });
271
+ }
272
+ var j = ((e) => (e[e.None = 0] = "None", e[e.RenderStrategy = 1] = "RenderStrategy", e[e.Static = 2] = "Static", e))(j || {}), Je = ((e) => (e[e.Unmount = 0] = "Unmount", e[e.Hidden = 1] = "Hidden", e))(Je || {});
273
+ function N({ visible: e = !0, features: t = 0, ourProps: r, theirProps: n, ...a }) {
274
+ var u;
275
+ let l = me(n, r), s = Object.assign(a, { props: l });
276
+ if (e || t & 2 && l.static) return V(s);
277
+ if (t & 1) {
278
+ let d = (u = l.unmount) == null || u ? 0 : 1;
279
+ return R(d, { 0() {
280
+ return null;
281
+ }, 1() {
282
+ return V({ ...a, props: { ...l, hidden: !0, style: { display: "none" } } });
283
+ } });
284
+ }
285
+ return V(s);
286
+ }
287
+ function V({ props: e, attrs: t, slots: r, slot: n, name: a }) {
288
+ var u, l;
289
+ let { as: s, ...d } = Ze(e, ["unmount", "static"]), f = (u = r.default) == null ? void 0 : u.call(r, n), m = {};
290
+ if (n) {
291
+ let p = !1, o = [];
292
+ for (let [c, i] of Object.entries(n)) typeof i == "boolean" && (p = !0), i === !0 && o.push(c);
293
+ p && (m["data-headlessui-state"] = o.join(" "));
294
+ }
295
+ if (s === "template") {
296
+ if (f = ve(f ?? []), Object.keys(d).length > 0 || Object.keys(t).length > 0) {
297
+ let [p, ...o] = f ?? [];
298
+ if (!et(p) || o.length > 0) throw new Error(['Passing props on "template"!', "", `The current component <${a} /> is rendering a "template".`, "However we need to passthrough the following props:", Object.keys(d).concat(Object.keys(t)).map((v) => v.trim()).filter((v, I, h) => h.indexOf(v) === I).sort((v, I) => v.localeCompare(I)).map((v) => ` - ${v}`).join(`
299
+ `), "", "You can apply a few solutions:", ['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".', "Render a single element as the child so that we can forward the props onto that element."].map((v) => ` - ${v}`).join(`
300
+ `)].join(`
301
+ `));
302
+ let c = me((l = p.props) != null ? l : {}, d, m), i = Ee(p, c, !0);
303
+ for (let v in c) v.startsWith("on") && (i.props || (i.props = {}), i.props[v] = c[v]);
304
+ return i;
305
+ }
306
+ return Array.isArray(f) && f.length === 1 ? f[0] : f;
307
+ }
308
+ return Pe(s, Object.assign({}, d, m), { default: () => f });
309
+ }
310
+ function ve(e) {
311
+ return e.flatMap((t) => t.type === _e ? ve(t.children) : [t]);
312
+ }
313
+ function me(...e) {
314
+ if (e.length === 0) return {};
315
+ if (e.length === 1) return e[0];
316
+ let t = {}, r = {};
317
+ for (let n of e) for (let a in n) a.startsWith("on") && typeof n[a] == "function" ? (r[a] != null || (r[a] = []), r[a].push(n[a])) : t[a] = n[a];
318
+ if (t.disabled || t["aria-disabled"]) return Object.assign(t, Object.fromEntries(Object.keys(r).map((n) => [n, void 0])));
319
+ for (let n in r) Object.assign(t, { [n](a, ...u) {
320
+ let l = r[n];
321
+ for (let s of l) {
322
+ if (a instanceof Event && a.defaultPrevented) return;
323
+ s(a, ...u);
324
+ }
325
+ } });
326
+ return t;
327
+ }
328
+ function Ze(e, t = []) {
329
+ let r = Object.assign({}, e);
330
+ for (let n of t) n in r && delete r[n];
331
+ return r;
332
+ }
333
+ function et(e) {
334
+ return e == null ? !1 : typeof e.type == "string" || typeof e.type == "object" || typeof e.type == "function";
335
+ }
336
+ let be = Symbol("Context");
337
+ var _ = ((e) => (e[e.Open = 1] = "Open", e[e.Closed = 2] = "Closed", e[e.Closing = 4] = "Closing", e[e.Opening = 8] = "Opening", e))(_ || {});
338
+ function ge() {
339
+ return z(be, null);
340
+ }
341
+ function he(e) {
342
+ K(be, e);
343
+ }
344
+ var g = ((e) => (e.Space = " ", e.Enter = "Enter", e.Escape = "Escape", e.Backspace = "Backspace", e.Delete = "Delete", e.ArrowLeft = "ArrowLeft", e.ArrowUp = "ArrowUp", e.ArrowRight = "ArrowRight", e.ArrowDown = "ArrowDown", e.Home = "Home", e.End = "End", e.PageUp = "PageUp", e.PageDown = "PageDown", e.Tab = "Tab", e))(g || {});
345
+ function tt(e) {
346
+ throw new Error("Unexpected object: " + e);
347
+ }
348
+ var D = ((e) => (e[e.First = 0] = "First", e[e.Previous = 1] = "Previous", e[e.Next = 2] = "Next", e[e.Last = 3] = "Last", e[e.Specific = 4] = "Specific", e[e.Nothing = 5] = "Nothing", e))(D || {});
349
+ function nt(e, t) {
350
+ let r = t.resolveItems();
351
+ if (r.length <= 0) return null;
352
+ let n = t.resolveActiveIndex(), a = n ?? -1;
353
+ switch (e.focus) {
354
+ case 0: {
355
+ for (let u = 0; u < r.length; ++u) if (!t.resolveDisabled(r[u], u, r)) return u;
356
+ return n;
357
+ }
358
+ case 1: {
359
+ a === -1 && (a = r.length);
360
+ for (let u = a - 1; u >= 0; --u) if (!t.resolveDisabled(r[u], u, r)) return u;
361
+ return n;
362
+ }
363
+ case 2: {
364
+ for (let u = a + 1; u < r.length; ++u) if (!t.resolveDisabled(r[u], u, r)) return u;
365
+ return n;
366
+ }
367
+ case 3: {
368
+ for (let u = r.length - 1; u >= 0; --u) if (!t.resolveDisabled(r[u], u, r)) return u;
369
+ return n;
370
+ }
371
+ case 4: {
372
+ for (let u = 0; u < r.length; ++u) if (t.resolveId(r[u], u, r) === e.id) return u;
373
+ return n;
374
+ }
375
+ case 5:
376
+ return null;
377
+ default:
378
+ tt(e);
379
+ }
380
+ }
381
+ var rt = ((e) => (e[e.Open = 0] = "Open", e[e.Closed = 1] = "Closed", e))(rt || {});
382
+ let ye = Symbol("DisclosureContext");
383
+ function ee(e) {
384
+ let t = z(ye, null);
385
+ if (t === null) {
386
+ let r = new Error(`<${e} /> is missing a parent <Disclosure /> component.`);
387
+ throw Error.captureStackTrace && Error.captureStackTrace(r, ee), r;
388
+ }
389
+ return t;
390
+ }
391
+ let Ie = Symbol("DisclosurePanelContext");
392
+ function lt() {
393
+ return z(Ie, null);
394
+ }
395
+ let ut = S({ name: "Disclosure", props: { as: { type: [Object, String], default: "template" }, defaultOpen: { type: [Boolean], default: !1 } }, setup(e, { slots: t, attrs: r }) {
396
+ let n = y(e.defaultOpen ? 0 : 1), a = y(null), u = y(null), l = { buttonId: y(`headlessui-disclosure-button-${C()}`), panelId: y(`headlessui-disclosure-panel-${C()}`), disclosureState: n, panel: a, button: u, toggleDisclosure() {
397
+ n.value = R(n.value, { 0: 1, 1: 0 });
398
+ }, closeDisclosure() {
399
+ n.value !== 1 && (n.value = 1);
400
+ }, close(s) {
401
+ l.closeDisclosure();
402
+ let d = s ? s instanceof HTMLElement ? s : s.value instanceof HTMLElement ? b(s) : b(l.button) : b(l.button);
403
+ d == null || d.focus();
404
+ } };
405
+ return K(ye, l), he(k(() => R(n.value, { 0: _.Open, 1: _.Closed }))), () => {
406
+ let { defaultOpen: s, ...d } = e, f = { open: n.value === 0, close: l.close };
407
+ return N({ theirProps: d, ourProps: {}, slot: f, slots: t, attrs: r, name: "Disclosure" });
408
+ };
409
+ } }), at = S({ name: "DisclosureButton", props: { as: { type: [Object, String], default: "button" }, disabled: { type: [Boolean], default: !1 }, id: { type: String, default: null } }, setup(e, { attrs: t, slots: r, expose: n }) {
410
+ let a = ee("DisclosureButton"), u = lt(), l = k(() => u === null ? !1 : u.value === a.panelId.value);
411
+ H(() => {
412
+ l.value || e.id !== null && (a.buttonId.value = e.id);
413
+ }), Q(() => {
414
+ l.value || (a.buttonId.value = null);
415
+ });
416
+ let s = y(null);
417
+ n({ el: s, $el: s }), l.value || L(() => {
418
+ a.button.value = s.value;
419
+ });
420
+ let d = pe(k(() => ({ as: e.as, type: t.type })), s);
421
+ function f() {
422
+ var o;
423
+ e.disabled || (l.value ? (a.toggleDisclosure(), (o = b(a.button)) == null || o.focus()) : a.toggleDisclosure());
424
+ }
425
+ function m(o) {
426
+ var c;
427
+ if (!e.disabled) if (l.value) switch (o.key) {
428
+ case g.Space:
429
+ case g.Enter:
430
+ o.preventDefault(), o.stopPropagation(), a.toggleDisclosure(), (c = b(a.button)) == null || c.focus();
431
+ break;
432
+ }
433
+ else switch (o.key) {
434
+ case g.Space:
435
+ case g.Enter:
436
+ o.preventDefault(), o.stopPropagation(), a.toggleDisclosure();
437
+ break;
438
+ }
439
+ }
440
+ function p(o) {
441
+ switch (o.key) {
442
+ case g.Space:
443
+ o.preventDefault();
444
+ break;
445
+ }
446
+ }
447
+ return () => {
448
+ var o;
449
+ let c = { open: a.disclosureState.value === 0 }, { id: i, ...v } = e, I = l.value ? { ref: s, type: d.value, onClick: f, onKeydown: m } : { id: (o = a.buttonId.value) != null ? o : i, ref: s, type: d.value, "aria-expanded": a.disclosureState.value === 0, "aria-controls": a.disclosureState.value === 0 || b(a.panel) ? a.panelId.value : void 0, disabled: e.disabled ? !0 : void 0, onClick: f, onKeydown: m, onKeyup: p };
450
+ return N({ ourProps: I, theirProps: v, slot: c, attrs: t, slots: r, name: "DisclosureButton" });
451
+ };
452
+ } }), ot = S({ name: "DisclosurePanel", props: { as: { type: [Object, String], default: "div" }, static: { type: Boolean, default: !1 }, unmount: { type: Boolean, default: !0 }, id: { type: String, default: null } }, setup(e, { attrs: t, slots: r, expose: n }) {
453
+ let a = ee("DisclosurePanel");
454
+ H(() => {
455
+ e.id !== null && (a.panelId.value = e.id);
456
+ }), Q(() => {
457
+ a.panelId.value = null;
458
+ }), n({ el: a.panel, $el: a.panel }), K(Ie, a.panelId);
459
+ let u = ge(), l = k(() => u !== null ? (u.value & _.Open) === _.Open : a.disclosureState.value === 0);
460
+ return () => {
461
+ var s;
462
+ let d = { open: a.disclosureState.value === 0, close: a.close }, { id: f, ...m } = e, p = { id: (s = a.panelId.value) != null ? s : f, ref: a.panel };
463
+ return N({ ourProps: p, theirProps: m, slot: d, attrs: t, slots: r, features: j.RenderStrategy | j.Static, visible: l.value, name: "DisclosurePanel" });
464
+ };
465
+ } }), ae = /([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g;
466
+ function oe(e) {
467
+ var t, r;
468
+ let n = (t = e.innerText) != null ? t : "", a = e.cloneNode(!0);
469
+ if (!(a instanceof HTMLElement)) return n;
470
+ let u = !1;
471
+ for (let s of a.querySelectorAll('[hidden],[aria-hidden],[role="img"]')) s.remove(), u = !0;
472
+ let l = u ? (r = a.innerText) != null ? r : "" : n;
473
+ return ae.test(l) && (l = l.replace(ae, "")), l;
474
+ }
475
+ function st(e) {
476
+ let t = e.getAttribute("aria-label");
477
+ if (typeof t == "string") return t.trim();
478
+ let r = e.getAttribute("aria-labelledby");
479
+ if (r) {
480
+ let n = r.split(" ").map((a) => {
481
+ let u = document.getElementById(a);
482
+ if (u) {
483
+ let l = u.getAttribute("aria-label");
484
+ return typeof l == "string" ? l.trim() : oe(u).trim();
485
+ }
486
+ return null;
487
+ }).filter(Boolean);
488
+ if (n.length > 0) return n.join(", ");
489
+ }
490
+ return oe(e).trim();
491
+ }
492
+ function it(e) {
493
+ let t = y(""), r = y("");
494
+ return () => {
495
+ let n = b(e);
496
+ if (!n) return "";
497
+ let a = n.innerText;
498
+ if (t.value === a) return r.value;
499
+ let u = st(n).trim().toLowerCase();
500
+ return t.value = a, r.value = u, u;
501
+ };
502
+ }
503
+ var ct = ((e) => (e[e.Open = 0] = "Open", e[e.Closed = 1] = "Closed", e))(ct || {}), dt = ((e) => (e[e.Pointer = 0] = "Pointer", e[e.Other = 1] = "Other", e))(dt || {});
504
+ function ft(e) {
505
+ requestAnimationFrame(() => requestAnimationFrame(e));
506
+ }
507
+ let we = Symbol("MenuContext");
508
+ function W(e) {
509
+ let t = z(we, null);
510
+ if (t === null) {
511
+ let r = new Error(`<${e} /> is missing a parent <Menu /> component.`);
512
+ throw Error.captureStackTrace && Error.captureStackTrace(r, W), r;
513
+ }
514
+ return t;
515
+ }
516
+ let pt = S({ name: "Menu", props: { as: { type: [Object, String], default: "template" } }, setup(e, { slots: t, attrs: r }) {
517
+ let n = y(1), a = y(null), u = y(null), l = y([]), s = y(""), d = y(null), f = y(1);
518
+ function m(o = (c) => c) {
519
+ let c = d.value !== null ? l.value[d.value] : null, i = fe(o(l.value.slice()), (I) => b(I.dataRef.domRef)), v = c ? i.indexOf(c) : null;
520
+ return v === -1 && (v = null), { items: i, activeItemIndex: v };
521
+ }
522
+ let p = { menuState: n, buttonRef: a, itemsRef: u, items: l, searchQuery: s, activeItemIndex: d, activationTrigger: f, closeMenu: () => {
523
+ n.value = 1, d.value = null;
524
+ }, openMenu: () => n.value = 0, goToItem(o, c, i) {
525
+ let v = m(), I = nt(o === D.Specific ? { focus: D.Specific, id: c } : { focus: o }, { resolveItems: () => v.items, resolveActiveIndex: () => v.activeItemIndex, resolveId: (h) => h.id, resolveDisabled: (h) => h.dataRef.disabled });
526
+ s.value = "", d.value = I, f.value = i ?? 1, l.value = v.items;
527
+ }, search(o) {
528
+ let c = s.value !== "" ? 0 : 1;
529
+ s.value += o.toLowerCase();
530
+ let i = (d.value !== null ? l.value.slice(d.value + c).concat(l.value.slice(0, d.value + c)) : l.value).find((I) => I.dataRef.textValue.startsWith(s.value) && !I.dataRef.disabled), v = i ? l.value.indexOf(i) : -1;
531
+ v === -1 || v === d.value || (d.value = v, f.value = 1);
532
+ }, clearSearch() {
533
+ s.value = "";
534
+ }, registerItem(o, c) {
535
+ let i = m((v) => [...v, { id: o, dataRef: c }]);
536
+ l.value = i.items, d.value = i.activeItemIndex, f.value = 1;
537
+ }, unregisterItem(o) {
538
+ let c = m((i) => {
539
+ let v = i.findIndex((I) => I.id === o);
540
+ return v !== -1 && i.splice(v, 1), i;
541
+ });
542
+ l.value = c.items, d.value = c.activeItemIndex, f.value = 1;
543
+ } };
544
+ return Qe([a, u], (o, c) => {
545
+ var i;
546
+ p.closeMenu(), Z(c, J.Loose) || (o.preventDefault(), (i = b(a)) == null || i.focus());
547
+ }, k(() => n.value === 0)), K(we, p), he(k(() => R(n.value, { 0: _.Open, 1: _.Closed }))), () => {
548
+ let o = { open: n.value === 0, close: p.closeMenu };
549
+ return N({ ourProps: {}, theirProps: e, slot: o, slots: t, attrs: r, name: "Menu" });
550
+ };
551
+ } }), vt = S({ name: "MenuButton", props: { disabled: { type: Boolean, default: !1 }, as: { type: [Object, String], default: "button" }, id: { type: String, default: null } }, setup(e, { attrs: t, slots: r, expose: n }) {
552
+ var a;
553
+ let u = (a = e.id) != null ? a : `headlessui-menu-button-${C()}`, l = W("MenuButton");
554
+ n({ el: l.buttonRef, $el: l.buttonRef });
555
+ function s(p) {
556
+ switch (p.key) {
557
+ case g.Space:
558
+ case g.Enter:
559
+ case g.ArrowDown:
560
+ p.preventDefault(), p.stopPropagation(), l.openMenu(), F(() => {
561
+ var o;
562
+ (o = b(l.itemsRef)) == null || o.focus({ preventScroll: !0 }), l.goToItem(D.First);
563
+ });
564
+ break;
565
+ case g.ArrowUp:
566
+ p.preventDefault(), p.stopPropagation(), l.openMenu(), F(() => {
567
+ var o;
568
+ (o = b(l.itemsRef)) == null || o.focus({ preventScroll: !0 }), l.goToItem(D.Last);
569
+ });
570
+ break;
571
+ }
572
+ }
573
+ function d(p) {
574
+ switch (p.key) {
575
+ case g.Space:
576
+ p.preventDefault();
577
+ break;
578
+ }
579
+ }
580
+ function f(p) {
581
+ e.disabled || (l.menuState.value === 0 ? (l.closeMenu(), F(() => {
582
+ var o;
583
+ return (o = b(l.buttonRef)) == null ? void 0 : o.focus({ preventScroll: !0 });
584
+ })) : (p.preventDefault(), l.openMenu(), ft(() => {
585
+ var o;
586
+ return (o = b(l.itemsRef)) == null ? void 0 : o.focus({ preventScroll: !0 });
587
+ })));
588
+ }
589
+ let m = pe(k(() => ({ as: e.as, type: t.type })), l.buttonRef);
590
+ return () => {
591
+ var p;
592
+ let o = { open: l.menuState.value === 0 }, { ...c } = e, i = { ref: l.buttonRef, id: u, type: m.value, "aria-haspopup": "menu", "aria-controls": (p = b(l.itemsRef)) == null ? void 0 : p.id, "aria-expanded": l.menuState.value === 0, onKeydown: s, onKeyup: d, onClick: f };
593
+ return N({ ourProps: i, theirProps: c, slot: o, attrs: t, slots: r, name: "MenuButton" });
594
+ };
595
+ } }), mt = S({ name: "MenuItems", props: { as: { type: [Object, String], default: "div" }, static: { type: Boolean, default: !1 }, unmount: { type: Boolean, default: !0 }, id: { type: String, default: null } }, setup(e, { attrs: t, slots: r, expose: n }) {
596
+ var a;
597
+ let u = (a = e.id) != null ? a : `headlessui-menu-items-${C()}`, l = W("MenuItems"), s = y(null);
598
+ n({ el: l.itemsRef, $el: l.itemsRef }), Ye({ container: k(() => b(l.itemsRef)), enabled: k(() => l.menuState.value === 0), accept(o) {
599
+ return o.getAttribute("role") === "menuitem" ? NodeFilter.FILTER_REJECT : o.hasAttribute("role") ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT;
600
+ }, walk(o) {
601
+ o.setAttribute("role", "none");
602
+ } });
603
+ function d(o) {
604
+ var c;
605
+ switch (s.value && clearTimeout(s.value), o.key) {
606
+ case g.Space:
607
+ if (l.searchQuery.value !== "") return o.preventDefault(), o.stopPropagation(), l.search(o.key);
608
+ case g.Enter:
609
+ if (o.preventDefault(), o.stopPropagation(), l.activeItemIndex.value !== null) {
610
+ let i = l.items.value[l.activeItemIndex.value];
611
+ (c = b(i.dataRef.domRef)) == null || c.click();
612
+ }
613
+ l.closeMenu(), de(b(l.buttonRef));
614
+ break;
615
+ case g.ArrowDown:
616
+ return o.preventDefault(), o.stopPropagation(), l.goToItem(D.Next);
617
+ case g.ArrowUp:
618
+ return o.preventDefault(), o.stopPropagation(), l.goToItem(D.Previous);
619
+ case g.Home:
620
+ case g.PageUp:
621
+ return o.preventDefault(), o.stopPropagation(), l.goToItem(D.First);
622
+ case g.End:
623
+ case g.PageDown:
624
+ return o.preventDefault(), o.stopPropagation(), l.goToItem(D.Last);
625
+ case g.Escape:
626
+ o.preventDefault(), o.stopPropagation(), l.closeMenu(), F(() => {
627
+ var i;
628
+ return (i = b(l.buttonRef)) == null ? void 0 : i.focus({ preventScroll: !0 });
629
+ });
630
+ break;
631
+ case g.Tab:
632
+ o.preventDefault(), o.stopPropagation(), l.closeMenu(), F(() => Ke(b(l.buttonRef), o.shiftKey ? G.Previous : G.Next));
633
+ break;
634
+ default:
635
+ o.key.length === 1 && (l.search(o.key), s.value = setTimeout(() => l.clearSearch(), 350));
636
+ break;
637
+ }
638
+ }
639
+ function f(o) {
640
+ switch (o.key) {
641
+ case g.Space:
642
+ o.preventDefault();
643
+ break;
644
+ }
645
+ }
646
+ let m = ge(), p = k(() => m !== null ? (m.value & _.Open) === _.Open : l.menuState.value === 0);
647
+ return () => {
648
+ var o, c;
649
+ let i = { open: l.menuState.value === 0 }, { ...v } = e, I = { "aria-activedescendant": l.activeItemIndex.value === null || (o = l.items.value[l.activeItemIndex.value]) == null ? void 0 : o.id, "aria-labelledby": (c = b(l.buttonRef)) == null ? void 0 : c.id, id: u, onKeydown: d, onKeyup: f, role: "menu", tabIndex: 0, ref: l.itemsRef };
650
+ return N({ ourProps: I, theirProps: v, slot: i, attrs: t, slots: r, features: j.RenderStrategy | j.Static, visible: p.value, name: "MenuItems" });
651
+ };
652
+ } }), bt = S({ name: "MenuItem", inheritAttrs: !1, props: { as: { type: [Object, String], default: "template" }, disabled: { type: Boolean, default: !1 }, id: { type: String, default: null } }, setup(e, { slots: t, attrs: r, expose: n }) {
653
+ var a;
654
+ let u = (a = e.id) != null ? a : `headlessui-menu-item-${C()}`, l = W("MenuItem"), s = y(null);
655
+ n({ el: s, $el: s });
656
+ let d = k(() => l.activeItemIndex.value !== null ? l.items.value[l.activeItemIndex.value].id === u : !1), f = it(s), m = k(() => ({ disabled: e.disabled, get textValue() {
657
+ return f();
658
+ }, domRef: s }));
659
+ H(() => l.registerItem(u, m)), Q(() => l.unregisterItem(u)), L(() => {
660
+ l.menuState.value === 0 && d.value && l.activationTrigger.value !== 0 && F(() => {
661
+ var h, B;
662
+ return (B = (h = b(s)) == null ? void 0 : h.scrollIntoView) == null ? void 0 : B.call(h, { block: "nearest" });
663
+ });
664
+ });
665
+ function p(h) {
666
+ if (e.disabled) return h.preventDefault();
667
+ l.closeMenu(), de(b(l.buttonRef));
668
+ }
669
+ function o() {
670
+ if (e.disabled) return l.goToItem(D.Nothing);
671
+ l.goToItem(D.Specific, u);
672
+ }
673
+ let c = Xe();
674
+ function i(h) {
675
+ c.update(h);
676
+ }
677
+ function v(h) {
678
+ c.wasMoved(h) && (e.disabled || d.value || l.goToItem(D.Specific, u, 0));
679
+ }
680
+ function I(h) {
681
+ c.wasMoved(h) && (e.disabled || d.value && l.goToItem(D.Nothing));
682
+ }
683
+ return () => {
684
+ let { disabled: h, ...B } = e, Se = { active: d.value, disabled: h, close: l.closeMenu };
685
+ return N({ ourProps: { id: u, ref: s, role: "menuitem", tabIndex: h === !0 ? void 0 : -1, "aria-disabled": h === !0 ? !0 : void 0, onClick: p, onFocus: o, onPointerenter: i, onMouseenter: i, onPointermove: v, onMousemove: v, onPointerleave: I, onMouseleave: I }, theirProps: { ...r, ...B }, slot: Se, attrs: r, slots: t, name: "MenuItem" });
686
+ };
687
+ } });
688
+ const gt = /* @__PURE__ */ S({
689
+ __name: "InkMenu",
690
+ props: {
691
+ as: { default: "div" }
692
+ },
693
+ setup(e) {
694
+ return (t, r) => ($(), P(w(pt), M(w(E), {
695
+ as: t.as,
696
+ class: "tw-menu"
697
+ }), {
698
+ default: A((n) => [
699
+ O(t.$slots, "default", x(T(n)))
700
+ ]),
701
+ _: 3
702
+ }, 16, ["as"]));
703
+ }
704
+ }), ht = /* @__PURE__ */ S({
705
+ __name: "InkMenuButton",
706
+ props: {
707
+ as: { default: "template" }
708
+ },
709
+ setup(e) {
710
+ return (t, r) => ($(), P(w(vt), M(w(E), { as: t.as }), {
711
+ default: A((n) => [
712
+ O(t.$slots, "default", x(T(n)))
713
+ ]),
714
+ _: 3
715
+ }, 16, ["as"]));
716
+ }
717
+ }), yt = /* @__PURE__ */ S({
718
+ __name: "InkMenuItems",
719
+ setup(e) {
720
+ return (t, r) => ($(), P(w(mt), M(w(E), { class: "tw-menu-items" }), {
721
+ default: A((n) => [
722
+ O(t.$slots, "default", x(T(n)))
723
+ ]),
724
+ _: 3
725
+ }, 16));
726
+ }
727
+ }), It = /* @__PURE__ */ S({
728
+ __name: "InkMenuItem",
729
+ props: {
730
+ as: { default: "template" }
731
+ },
732
+ setup(e) {
733
+ return (t, r) => ($(), P(w(bt), M(w(E), {
734
+ class: "menu-item-link",
735
+ as: t.as
736
+ }), {
737
+ default: A((n) => [
738
+ O(t.$slots, "default", x(T(n)))
739
+ ]),
740
+ _: 3
741
+ }, 16, ["as"]));
742
+ }
743
+ }), wt = /* @__PURE__ */ S({
744
+ __name: "InkMenuItemsWrapper",
745
+ setup(e) {
746
+ return (t, r) => ($(), se("div", M(w(E), { class: "menu-items-wrapper" }), [
747
+ O(t.$slots, "default")
748
+ ], 16));
749
+ }
750
+ }), St = /* @__PURE__ */ S({
751
+ __name: "InkDisclosure",
752
+ setup(e) {
753
+ return (t, r) => ($(), P(w(ut), x(T(w(E))), {
754
+ default: A((n) => [
755
+ O(t.$slots, "default", x(T(n)))
756
+ ]),
757
+ _: 3
758
+ }, 16));
759
+ }
760
+ }), kt = /* @__PURE__ */ S({
761
+ __name: "InkDisclosureButton",
762
+ props: {
763
+ as: { default: "button" },
764
+ type: { default: "button" }
765
+ },
766
+ setup(e) {
767
+ return (t, r) => ($(), P(w(at), M({
768
+ type: t.as === "button" ? t.type : void 0
769
+ }, w(E), {
770
+ class: "tw-disclosure-button tw-disclosure-button-gray",
771
+ as: t.as
772
+ }), {
773
+ default: A((n) => [
774
+ O(t.$slots, "default", x(T(n))),
775
+ Me("i", {
776
+ class: Oe([
777
+ "far fa-angle-down tw-text-base tw-text-gray-700",
778
+ { "tw-rotate-180": n.open }
779
+ ])
780
+ }, null, 2)
781
+ ]),
782
+ _: 3
783
+ }, 16, ["type", "as"]));
784
+ }
785
+ }), Dt = /* @__PURE__ */ S({
786
+ __name: "InkDisclosurePanel",
787
+ setup(e) {
788
+ return (t, r) => ($(), P(w(ot), M(w(E), { class: "tw-disclosure-panel" }), {
789
+ default: A((n) => [
790
+ O(t.$slots, "default", x(T(n)))
791
+ ]),
792
+ _: 3
793
+ }, 16));
794
+ }
795
+ }), Pt = {
796
+ install: (e) => {
797
+ e.component("InkButton", xe), e.component("InkSpinner", ie), e.component("InkMenu", gt), e.component("InkMenuButton", ht), e.component("InkMenuItems", yt), e.component("InkMenuItem", It), e.component("InkMenuItemsWrapper", wt), e.component("InkDisclosure", St), e.component("InkDisclosureButton", kt), e.component("InkDisclosurePanel", Dt);
798
+ }
799
+ };
800
+ export {
801
+ xe as InkButton,
802
+ St as InkDisclosure,
803
+ kt as InkDisclosureButton,
804
+ Dt as InkDisclosurePanel,
805
+ gt as InkMenu,
806
+ ht as InkMenuButton,
807
+ It as InkMenuItem,
808
+ yt as InkMenuItems,
809
+ wt as InkMenuItemsWrapper,
810
+ ie as InkSpinner,
811
+ Pt as default
812
+ };
813
+ //# sourceMappingURL=inkmagine-gui.es.js.map