magic-canvas-yonava 1.0.5 → 1.0.7

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,3335 @@
1
+ import { defineComponent as it, ref as B, onMounted as Z, onBeforeUnmount as lt, createElementBlock as ct, openBlock as dt, mergeProps as ut, unref as Fe, nextTick as We, getCurrentScope as mt, onScopeDispose as ft, getCurrentInstance as je, readonly as Be, watch as H, toRef as pt, customRef as gt, computed as Q, shallowRef as fe, toValue as D } from "vue";
2
+ const bt = (e, t) => {
3
+ const o = new Array(e.length + t.length);
4
+ for (let r = 0; r < e.length; r++)
5
+ o[r] = e[r];
6
+ for (let r = 0; r < t.length; r++)
7
+ o[e.length + r] = t[r];
8
+ return o;
9
+ }, ht = (e, t) => ({
10
+ classGroupId: e,
11
+ validator: t
12
+ }), De = (e = /* @__PURE__ */ new Map(), t = null, o) => ({
13
+ nextPart: e,
14
+ validators: t,
15
+ classGroupId: o
16
+ }), pe = "-", Te = [], vt = "arbitrary..", wt = (e) => {
17
+ const t = kt(e), {
18
+ conflictingClassGroups: o,
19
+ conflictingClassGroupModifiers: r
20
+ } = e;
21
+ return {
22
+ getClassGroupId: (s) => {
23
+ if (s.startsWith("[") && s.endsWith("]"))
24
+ return yt(s);
25
+ const i = s.split(pe), l = i[0] === "" && i.length > 1 ? 1 : 0;
26
+ return Ve(i, l, t);
27
+ },
28
+ getConflictingClassGroupIds: (s, i) => {
29
+ if (i) {
30
+ const l = r[s], u = o[s];
31
+ return l ? u ? bt(u, l) : l : u || Te;
32
+ }
33
+ return o[s] || Te;
34
+ }
35
+ };
36
+ }, Ve = (e, t, o) => {
37
+ if (e.length - t === 0)
38
+ return o.classGroupId;
39
+ const n = e[t], a = o.nextPart.get(n);
40
+ if (a) {
41
+ const u = Ve(e, t + 1, a);
42
+ if (u) return u;
43
+ }
44
+ const s = o.validators;
45
+ if (s === null)
46
+ return;
47
+ const i = t === 0 ? e.join(pe) : e.slice(t).join(pe), l = s.length;
48
+ for (let u = 0; u < l; u++) {
49
+ const b = s[u];
50
+ if (b.validator(i))
51
+ return b.classGroupId;
52
+ }
53
+ }, yt = (e) => e.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
54
+ const t = e.slice(1, -1), o = t.indexOf(":"), r = t.slice(0, o);
55
+ return r ? vt + r : void 0;
56
+ })(), kt = (e) => {
57
+ const {
58
+ theme: t,
59
+ classGroups: o
60
+ } = e;
61
+ return xt(o, t);
62
+ }, xt = (e, t) => {
63
+ const o = De();
64
+ for (const r in e) {
65
+ const n = e[r];
66
+ Ce(n, o, r, t);
67
+ }
68
+ return o;
69
+ }, Ce = (e, t, o, r) => {
70
+ const n = e.length;
71
+ for (let a = 0; a < n; a++) {
72
+ const s = e[a];
73
+ Ct(s, t, o, r);
74
+ }
75
+ }, Ct = (e, t, o, r) => {
76
+ if (typeof e == "string") {
77
+ St(e, t, o);
78
+ return;
79
+ }
80
+ if (typeof e == "function") {
81
+ zt(e, t, o, r);
82
+ return;
83
+ }
84
+ At(e, t, o, r);
85
+ }, St = (e, t, o) => {
86
+ const r = e === "" ? t : $e(t, e);
87
+ r.classGroupId = o;
88
+ }, zt = (e, t, o, r) => {
89
+ if (Mt(e)) {
90
+ Ce(e(r), t, o, r);
91
+ return;
92
+ }
93
+ t.validators === null && (t.validators = []), t.validators.push(ht(o, e));
94
+ }, At = (e, t, o, r) => {
95
+ const n = Object.entries(e), a = n.length;
96
+ for (let s = 0; s < a; s++) {
97
+ const [i, l] = n[s];
98
+ Ce(l, $e(t, i), o, r);
99
+ }
100
+ }, $e = (e, t) => {
101
+ let o = e;
102
+ const r = t.split(pe), n = r.length;
103
+ for (let a = 0; a < n; a++) {
104
+ const s = r[a];
105
+ let i = o.nextPart.get(s);
106
+ i || (i = De(), o.nextPart.set(s, i)), o = i;
107
+ }
108
+ return o;
109
+ }, Mt = (e) => "isThemeGetter" in e && e.isThemeGetter === !0, Rt = (e) => {
110
+ if (e < 1)
111
+ return {
112
+ get: () => {
113
+ },
114
+ set: () => {
115
+ }
116
+ };
117
+ let t = 0, o = /* @__PURE__ */ Object.create(null), r = /* @__PURE__ */ Object.create(null);
118
+ const n = (a, s) => {
119
+ o[a] = s, t++, t > e && (t = 0, r = o, o = /* @__PURE__ */ Object.create(null));
120
+ };
121
+ return {
122
+ get(a) {
123
+ let s = o[a];
124
+ if (s !== void 0)
125
+ return s;
126
+ if ((s = r[a]) !== void 0)
127
+ return n(a, s), s;
128
+ },
129
+ set(a, s) {
130
+ a in o ? o[a] = s : n(a, s);
131
+ }
132
+ };
133
+ }, ke = "!", Pe = ":", Et = [], Oe = (e, t, o, r, n) => ({
134
+ modifiers: e,
135
+ hasImportantModifier: t,
136
+ baseClassName: o,
137
+ maybePostfixModifierPosition: r,
138
+ isExternal: n
139
+ }), Tt = (e) => {
140
+ const {
141
+ prefix: t,
142
+ experimentalParseClassName: o
143
+ } = e;
144
+ let r = (n) => {
145
+ const a = [];
146
+ let s = 0, i = 0, l = 0, u;
147
+ const b = n.length;
148
+ for (let y = 0; y < b; y++) {
149
+ const k = n[y];
150
+ if (s === 0 && i === 0) {
151
+ if (k === Pe) {
152
+ a.push(n.slice(l, y)), l = y + 1;
153
+ continue;
154
+ }
155
+ if (k === "/") {
156
+ u = y;
157
+ continue;
158
+ }
159
+ }
160
+ k === "[" ? s++ : k === "]" ? s-- : k === "(" ? i++ : k === ")" && i--;
161
+ }
162
+ const m = a.length === 0 ? n : n.slice(l);
163
+ let w = m, C = !1;
164
+ m.endsWith(ke) ? (w = m.slice(0, -1), C = !0) : (
165
+ /**
166
+ * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
167
+ * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
168
+ */
169
+ m.startsWith(ke) && (w = m.slice(1), C = !0)
170
+ );
171
+ const f = u && u > l ? u - l : void 0;
172
+ return Oe(a, C, w, f);
173
+ };
174
+ if (t) {
175
+ const n = t + Pe, a = r;
176
+ r = (s) => s.startsWith(n) ? a(s.slice(n.length)) : Oe(Et, !1, s, void 0, !0);
177
+ }
178
+ if (o) {
179
+ const n = r;
180
+ r = (a) => o({
181
+ className: a,
182
+ parseClassName: n
183
+ });
184
+ }
185
+ return r;
186
+ }, Pt = (e) => {
187
+ const t = /* @__PURE__ */ new Map();
188
+ return e.orderSensitiveModifiers.forEach((o, r) => {
189
+ t.set(o, 1e6 + r);
190
+ }), (o) => {
191
+ const r = [];
192
+ let n = [];
193
+ for (let a = 0; a < o.length; a++) {
194
+ const s = o[a], i = s[0] === "[", l = t.has(s);
195
+ i || l ? (n.length > 0 && (n.sort(), r.push(...n), n = []), r.push(s)) : n.push(s);
196
+ }
197
+ return n.length > 0 && (n.sort(), r.push(...n)), r;
198
+ };
199
+ }, Ot = (e) => ({
200
+ cache: Rt(e.cacheSize),
201
+ parseClassName: Tt(e),
202
+ sortModifiers: Pt(e),
203
+ ...wt(e)
204
+ }), It = /\s+/, Yt = (e, t) => {
205
+ const {
206
+ parseClassName: o,
207
+ getClassGroupId: r,
208
+ getConflictingClassGroupIds: n,
209
+ sortModifiers: a
210
+ } = t, s = [], i = e.trim().split(It);
211
+ let l = "";
212
+ for (let u = i.length - 1; u >= 0; u -= 1) {
213
+ const b = i[u], {
214
+ isExternal: m,
215
+ modifiers: w,
216
+ hasImportantModifier: C,
217
+ baseClassName: f,
218
+ maybePostfixModifierPosition: y
219
+ } = o(b);
220
+ if (m) {
221
+ l = b + (l.length > 0 ? " " + l : l);
222
+ continue;
223
+ }
224
+ let k = !!y, A = r(k ? f.substring(0, y) : f);
225
+ if (!A) {
226
+ if (!k) {
227
+ l = b + (l.length > 0 ? " " + l : l);
228
+ continue;
229
+ }
230
+ if (A = r(f), !A) {
231
+ l = b + (l.length > 0 ? " " + l : l);
232
+ continue;
233
+ }
234
+ k = !1;
235
+ }
236
+ const N = w.length === 0 ? "" : w.length === 1 ? w[0] : a(w).join(":"), E = C ? N + ke : N, I = E + A;
237
+ if (s.indexOf(I) > -1)
238
+ continue;
239
+ s.push(I);
240
+ const P = n(A, k);
241
+ for (let Y = 0; Y < P.length; ++Y) {
242
+ const X = P[Y];
243
+ s.push(E + X);
244
+ }
245
+ l = b + (l.length > 0 ? " " + l : l);
246
+ }
247
+ return l;
248
+ }, Lt = (...e) => {
249
+ let t = 0, o, r, n = "";
250
+ for (; t < e.length; )
251
+ (o = e[t++]) && (r = Ue(o)) && (n && (n += " "), n += r);
252
+ return n;
253
+ }, Ue = (e) => {
254
+ if (typeof e == "string")
255
+ return e;
256
+ let t, o = "";
257
+ for (let r = 0; r < e.length; r++)
258
+ e[r] && (t = Ue(e[r])) && (o && (o += " "), o += t);
259
+ return o;
260
+ }, Nt = (e, ...t) => {
261
+ let o, r, n, a;
262
+ const s = (l) => {
263
+ const u = t.reduce((b, m) => m(b), e());
264
+ return o = Ot(u), r = o.cache.get, n = o.cache.set, a = i, i(l);
265
+ }, i = (l) => {
266
+ const u = r(l);
267
+ if (u)
268
+ return u;
269
+ const b = Yt(l, o);
270
+ return n(l, b), b;
271
+ };
272
+ return a = s, (...l) => a(Lt(...l));
273
+ }, _t = [], z = (e) => {
274
+ const t = (o) => o[e] || _t;
275
+ return t.isThemeGetter = !0, t;
276
+ }, Ze = /^\[(?:(\w[\w-]*):)?(.+)\]$/i, He = /^\((?:(\w[\w-]*):)?(.+)\)$/i, Gt = /^\d+\/\d+$/, Xt = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, Ft = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, Wt = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/, jt = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, Bt = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, V = (e) => Gt.test(e), v = (e) => !!e && !Number.isNaN(Number(e)), G = (e) => !!e && Number.isInteger(Number(e)), he = (e) => e.endsWith("%") && v(e.slice(0, -1)), _ = (e) => Xt.test(e), Dt = () => !0, Vt = (e) => (
277
+ // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
278
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
279
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
280
+ Ft.test(e) && !Wt.test(e)
281
+ ), Je = () => !1, $t = (e) => jt.test(e), Ut = (e) => Bt.test(e), Zt = (e) => !c(e) && !d(e), Ht = (e) => J(e, Qe, Je), c = (e) => Ze.test(e), W = (e) => J(e, et, Vt), ve = (e) => J(e, eo, v), Ie = (e) => J(e, qe, Je), Jt = (e) => J(e, Ke, Ut), ie = (e) => J(e, tt, $t), d = (e) => He.test(e), K = (e) => q(e, et), qt = (e) => q(e, to), Ye = (e) => q(e, qe), Kt = (e) => q(e, Qe), Qt = (e) => q(e, Ke), le = (e) => q(e, tt, !0), J = (e, t, o) => {
282
+ const r = Ze.exec(e);
283
+ return r ? r[1] ? t(r[1]) : o(r[2]) : !1;
284
+ }, q = (e, t, o = !1) => {
285
+ const r = He.exec(e);
286
+ return r ? r[1] ? t(r[1]) : o : !1;
287
+ }, qe = (e) => e === "position" || e === "percentage", Ke = (e) => e === "image" || e === "url", Qe = (e) => e === "length" || e === "size" || e === "bg-size", et = (e) => e === "length", eo = (e) => e === "number", to = (e) => e === "family-name", tt = (e) => e === "shadow", oo = () => {
288
+ const e = z("color"), t = z("font"), o = z("text"), r = z("font-weight"), n = z("tracking"), a = z("leading"), s = z("breakpoint"), i = z("container"), l = z("spacing"), u = z("radius"), b = z("shadow"), m = z("inset-shadow"), w = z("text-shadow"), C = z("drop-shadow"), f = z("blur"), y = z("perspective"), k = z("aspect"), A = z("ease"), N = z("animate"), E = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], I = () => [
289
+ "center",
290
+ "top",
291
+ "bottom",
292
+ "left",
293
+ "right",
294
+ "top-left",
295
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
296
+ "left-top",
297
+ "top-right",
298
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
299
+ "right-top",
300
+ "bottom-right",
301
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
302
+ "right-bottom",
303
+ "bottom-left",
304
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
305
+ "left-bottom"
306
+ ], P = () => [...I(), d, c], Y = () => ["auto", "hidden", "clip", "visible", "scroll"], X = () => ["auto", "contain", "none"], g = () => [d, c, l], O = () => [V, "full", "auto", ...g()], ee = () => [G, "none", "subgrid", d, c], te = () => ["auto", {
307
+ span: ["full", G, d, c]
308
+ }, G, d, c], L = () => [G, "auto", d, c], oe = () => ["auto", "min", "max", "fr", d, c], h = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"], x = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"], S = () => ["auto", ...g()], F = () => [V, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...g()], p = () => [e, d, c], ze = () => [...I(), Ye, Ie, {
309
+ position: [d, c]
310
+ }], Ae = () => ["no-repeat", {
311
+ repeat: ["", "x", "y", "space", "round"]
312
+ }], Me = () => ["auto", "cover", "contain", Kt, Ht, {
313
+ size: [d, c]
314
+ }], ge = () => [he, K, W], R = () => [
315
+ // Deprecated since Tailwind CSS v4.0.0
316
+ "",
317
+ "none",
318
+ "full",
319
+ u,
320
+ d,
321
+ c
322
+ ], T = () => ["", v, K, W], re = () => ["solid", "dashed", "dotted", "double"], Re = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], M = () => [v, he, Ye, Ie], Ee = () => [
323
+ // Deprecated since Tailwind CSS v4.0.0
324
+ "",
325
+ "none",
326
+ f,
327
+ d,
328
+ c
329
+ ], ne = () => ["none", v, d, c], se = () => ["none", v, d, c], be = () => [v, d, c], ae = () => [V, "full", ...g()];
330
+ return {
331
+ cacheSize: 500,
332
+ theme: {
333
+ animate: ["spin", "ping", "pulse", "bounce"],
334
+ aspect: ["video"],
335
+ blur: [_],
336
+ breakpoint: [_],
337
+ color: [Dt],
338
+ container: [_],
339
+ "drop-shadow": [_],
340
+ ease: ["in", "out", "in-out"],
341
+ font: [Zt],
342
+ "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"],
343
+ "inset-shadow": [_],
344
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose"],
345
+ perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"],
346
+ radius: [_],
347
+ shadow: [_],
348
+ spacing: ["px", v],
349
+ text: [_],
350
+ "text-shadow": [_],
351
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"]
352
+ },
353
+ classGroups: {
354
+ // --------------
355
+ // --- Layout ---
356
+ // --------------
357
+ /**
358
+ * Aspect Ratio
359
+ * @see https://tailwindcss.com/docs/aspect-ratio
360
+ */
361
+ aspect: [{
362
+ aspect: ["auto", "square", V, c, d, k]
363
+ }],
364
+ /**
365
+ * Container
366
+ * @see https://tailwindcss.com/docs/container
367
+ * @deprecated since Tailwind CSS v4.0.0
368
+ */
369
+ container: ["container"],
370
+ /**
371
+ * Columns
372
+ * @see https://tailwindcss.com/docs/columns
373
+ */
374
+ columns: [{
375
+ columns: [v, c, d, i]
376
+ }],
377
+ /**
378
+ * Break After
379
+ * @see https://tailwindcss.com/docs/break-after
380
+ */
381
+ "break-after": [{
382
+ "break-after": E()
383
+ }],
384
+ /**
385
+ * Break Before
386
+ * @see https://tailwindcss.com/docs/break-before
387
+ */
388
+ "break-before": [{
389
+ "break-before": E()
390
+ }],
391
+ /**
392
+ * Break Inside
393
+ * @see https://tailwindcss.com/docs/break-inside
394
+ */
395
+ "break-inside": [{
396
+ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
397
+ }],
398
+ /**
399
+ * Box Decoration Break
400
+ * @see https://tailwindcss.com/docs/box-decoration-break
401
+ */
402
+ "box-decoration": [{
403
+ "box-decoration": ["slice", "clone"]
404
+ }],
405
+ /**
406
+ * Box Sizing
407
+ * @see https://tailwindcss.com/docs/box-sizing
408
+ */
409
+ box: [{
410
+ box: ["border", "content"]
411
+ }],
412
+ /**
413
+ * Display
414
+ * @see https://tailwindcss.com/docs/display
415
+ */
416
+ display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"],
417
+ /**
418
+ * Screen Reader Only
419
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
420
+ */
421
+ sr: ["sr-only", "not-sr-only"],
422
+ /**
423
+ * Floats
424
+ * @see https://tailwindcss.com/docs/float
425
+ */
426
+ float: [{
427
+ float: ["right", "left", "none", "start", "end"]
428
+ }],
429
+ /**
430
+ * Clear
431
+ * @see https://tailwindcss.com/docs/clear
432
+ */
433
+ clear: [{
434
+ clear: ["left", "right", "both", "none", "start", "end"]
435
+ }],
436
+ /**
437
+ * Isolation
438
+ * @see https://tailwindcss.com/docs/isolation
439
+ */
440
+ isolation: ["isolate", "isolation-auto"],
441
+ /**
442
+ * Object Fit
443
+ * @see https://tailwindcss.com/docs/object-fit
444
+ */
445
+ "object-fit": [{
446
+ object: ["contain", "cover", "fill", "none", "scale-down"]
447
+ }],
448
+ /**
449
+ * Object Position
450
+ * @see https://tailwindcss.com/docs/object-position
451
+ */
452
+ "object-position": [{
453
+ object: P()
454
+ }],
455
+ /**
456
+ * Overflow
457
+ * @see https://tailwindcss.com/docs/overflow
458
+ */
459
+ overflow: [{
460
+ overflow: Y()
461
+ }],
462
+ /**
463
+ * Overflow X
464
+ * @see https://tailwindcss.com/docs/overflow
465
+ */
466
+ "overflow-x": [{
467
+ "overflow-x": Y()
468
+ }],
469
+ /**
470
+ * Overflow Y
471
+ * @see https://tailwindcss.com/docs/overflow
472
+ */
473
+ "overflow-y": [{
474
+ "overflow-y": Y()
475
+ }],
476
+ /**
477
+ * Overscroll Behavior
478
+ * @see https://tailwindcss.com/docs/overscroll-behavior
479
+ */
480
+ overscroll: [{
481
+ overscroll: X()
482
+ }],
483
+ /**
484
+ * Overscroll Behavior X
485
+ * @see https://tailwindcss.com/docs/overscroll-behavior
486
+ */
487
+ "overscroll-x": [{
488
+ "overscroll-x": X()
489
+ }],
490
+ /**
491
+ * Overscroll Behavior Y
492
+ * @see https://tailwindcss.com/docs/overscroll-behavior
493
+ */
494
+ "overscroll-y": [{
495
+ "overscroll-y": X()
496
+ }],
497
+ /**
498
+ * Position
499
+ * @see https://tailwindcss.com/docs/position
500
+ */
501
+ position: ["static", "fixed", "absolute", "relative", "sticky"],
502
+ /**
503
+ * Top / Right / Bottom / Left
504
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
505
+ */
506
+ inset: [{
507
+ inset: O()
508
+ }],
509
+ /**
510
+ * Right / Left
511
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
512
+ */
513
+ "inset-x": [{
514
+ "inset-x": O()
515
+ }],
516
+ /**
517
+ * Top / Bottom
518
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
519
+ */
520
+ "inset-y": [{
521
+ "inset-y": O()
522
+ }],
523
+ /**
524
+ * Start
525
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
526
+ */
527
+ start: [{
528
+ start: O()
529
+ }],
530
+ /**
531
+ * End
532
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
533
+ */
534
+ end: [{
535
+ end: O()
536
+ }],
537
+ /**
538
+ * Top
539
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
540
+ */
541
+ top: [{
542
+ top: O()
543
+ }],
544
+ /**
545
+ * Right
546
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
547
+ */
548
+ right: [{
549
+ right: O()
550
+ }],
551
+ /**
552
+ * Bottom
553
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
554
+ */
555
+ bottom: [{
556
+ bottom: O()
557
+ }],
558
+ /**
559
+ * Left
560
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
561
+ */
562
+ left: [{
563
+ left: O()
564
+ }],
565
+ /**
566
+ * Visibility
567
+ * @see https://tailwindcss.com/docs/visibility
568
+ */
569
+ visibility: ["visible", "invisible", "collapse"],
570
+ /**
571
+ * Z-Index
572
+ * @see https://tailwindcss.com/docs/z-index
573
+ */
574
+ z: [{
575
+ z: [G, "auto", d, c]
576
+ }],
577
+ // ------------------------
578
+ // --- Flexbox and Grid ---
579
+ // ------------------------
580
+ /**
581
+ * Flex Basis
582
+ * @see https://tailwindcss.com/docs/flex-basis
583
+ */
584
+ basis: [{
585
+ basis: [V, "full", "auto", i, ...g()]
586
+ }],
587
+ /**
588
+ * Flex Direction
589
+ * @see https://tailwindcss.com/docs/flex-direction
590
+ */
591
+ "flex-direction": [{
592
+ flex: ["row", "row-reverse", "col", "col-reverse"]
593
+ }],
594
+ /**
595
+ * Flex Wrap
596
+ * @see https://tailwindcss.com/docs/flex-wrap
597
+ */
598
+ "flex-wrap": [{
599
+ flex: ["nowrap", "wrap", "wrap-reverse"]
600
+ }],
601
+ /**
602
+ * Flex
603
+ * @see https://tailwindcss.com/docs/flex
604
+ */
605
+ flex: [{
606
+ flex: [v, V, "auto", "initial", "none", c]
607
+ }],
608
+ /**
609
+ * Flex Grow
610
+ * @see https://tailwindcss.com/docs/flex-grow
611
+ */
612
+ grow: [{
613
+ grow: ["", v, d, c]
614
+ }],
615
+ /**
616
+ * Flex Shrink
617
+ * @see https://tailwindcss.com/docs/flex-shrink
618
+ */
619
+ shrink: [{
620
+ shrink: ["", v, d, c]
621
+ }],
622
+ /**
623
+ * Order
624
+ * @see https://tailwindcss.com/docs/order
625
+ */
626
+ order: [{
627
+ order: [G, "first", "last", "none", d, c]
628
+ }],
629
+ /**
630
+ * Grid Template Columns
631
+ * @see https://tailwindcss.com/docs/grid-template-columns
632
+ */
633
+ "grid-cols": [{
634
+ "grid-cols": ee()
635
+ }],
636
+ /**
637
+ * Grid Column Start / End
638
+ * @see https://tailwindcss.com/docs/grid-column
639
+ */
640
+ "col-start-end": [{
641
+ col: te()
642
+ }],
643
+ /**
644
+ * Grid Column Start
645
+ * @see https://tailwindcss.com/docs/grid-column
646
+ */
647
+ "col-start": [{
648
+ "col-start": L()
649
+ }],
650
+ /**
651
+ * Grid Column End
652
+ * @see https://tailwindcss.com/docs/grid-column
653
+ */
654
+ "col-end": [{
655
+ "col-end": L()
656
+ }],
657
+ /**
658
+ * Grid Template Rows
659
+ * @see https://tailwindcss.com/docs/grid-template-rows
660
+ */
661
+ "grid-rows": [{
662
+ "grid-rows": ee()
663
+ }],
664
+ /**
665
+ * Grid Row Start / End
666
+ * @see https://tailwindcss.com/docs/grid-row
667
+ */
668
+ "row-start-end": [{
669
+ row: te()
670
+ }],
671
+ /**
672
+ * Grid Row Start
673
+ * @see https://tailwindcss.com/docs/grid-row
674
+ */
675
+ "row-start": [{
676
+ "row-start": L()
677
+ }],
678
+ /**
679
+ * Grid Row End
680
+ * @see https://tailwindcss.com/docs/grid-row
681
+ */
682
+ "row-end": [{
683
+ "row-end": L()
684
+ }],
685
+ /**
686
+ * Grid Auto Flow
687
+ * @see https://tailwindcss.com/docs/grid-auto-flow
688
+ */
689
+ "grid-flow": [{
690
+ "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
691
+ }],
692
+ /**
693
+ * Grid Auto Columns
694
+ * @see https://tailwindcss.com/docs/grid-auto-columns
695
+ */
696
+ "auto-cols": [{
697
+ "auto-cols": oe()
698
+ }],
699
+ /**
700
+ * Grid Auto Rows
701
+ * @see https://tailwindcss.com/docs/grid-auto-rows
702
+ */
703
+ "auto-rows": [{
704
+ "auto-rows": oe()
705
+ }],
706
+ /**
707
+ * Gap
708
+ * @see https://tailwindcss.com/docs/gap
709
+ */
710
+ gap: [{
711
+ gap: g()
712
+ }],
713
+ /**
714
+ * Gap X
715
+ * @see https://tailwindcss.com/docs/gap
716
+ */
717
+ "gap-x": [{
718
+ "gap-x": g()
719
+ }],
720
+ /**
721
+ * Gap Y
722
+ * @see https://tailwindcss.com/docs/gap
723
+ */
724
+ "gap-y": [{
725
+ "gap-y": g()
726
+ }],
727
+ /**
728
+ * Justify Content
729
+ * @see https://tailwindcss.com/docs/justify-content
730
+ */
731
+ "justify-content": [{
732
+ justify: [...h(), "normal"]
733
+ }],
734
+ /**
735
+ * Justify Items
736
+ * @see https://tailwindcss.com/docs/justify-items
737
+ */
738
+ "justify-items": [{
739
+ "justify-items": [...x(), "normal"]
740
+ }],
741
+ /**
742
+ * Justify Self
743
+ * @see https://tailwindcss.com/docs/justify-self
744
+ */
745
+ "justify-self": [{
746
+ "justify-self": ["auto", ...x()]
747
+ }],
748
+ /**
749
+ * Align Content
750
+ * @see https://tailwindcss.com/docs/align-content
751
+ */
752
+ "align-content": [{
753
+ content: ["normal", ...h()]
754
+ }],
755
+ /**
756
+ * Align Items
757
+ * @see https://tailwindcss.com/docs/align-items
758
+ */
759
+ "align-items": [{
760
+ items: [...x(), {
761
+ baseline: ["", "last"]
762
+ }]
763
+ }],
764
+ /**
765
+ * Align Self
766
+ * @see https://tailwindcss.com/docs/align-self
767
+ */
768
+ "align-self": [{
769
+ self: ["auto", ...x(), {
770
+ baseline: ["", "last"]
771
+ }]
772
+ }],
773
+ /**
774
+ * Place Content
775
+ * @see https://tailwindcss.com/docs/place-content
776
+ */
777
+ "place-content": [{
778
+ "place-content": h()
779
+ }],
780
+ /**
781
+ * Place Items
782
+ * @see https://tailwindcss.com/docs/place-items
783
+ */
784
+ "place-items": [{
785
+ "place-items": [...x(), "baseline"]
786
+ }],
787
+ /**
788
+ * Place Self
789
+ * @see https://tailwindcss.com/docs/place-self
790
+ */
791
+ "place-self": [{
792
+ "place-self": ["auto", ...x()]
793
+ }],
794
+ // Spacing
795
+ /**
796
+ * Padding
797
+ * @see https://tailwindcss.com/docs/padding
798
+ */
799
+ p: [{
800
+ p: g()
801
+ }],
802
+ /**
803
+ * Padding X
804
+ * @see https://tailwindcss.com/docs/padding
805
+ */
806
+ px: [{
807
+ px: g()
808
+ }],
809
+ /**
810
+ * Padding Y
811
+ * @see https://tailwindcss.com/docs/padding
812
+ */
813
+ py: [{
814
+ py: g()
815
+ }],
816
+ /**
817
+ * Padding Start
818
+ * @see https://tailwindcss.com/docs/padding
819
+ */
820
+ ps: [{
821
+ ps: g()
822
+ }],
823
+ /**
824
+ * Padding End
825
+ * @see https://tailwindcss.com/docs/padding
826
+ */
827
+ pe: [{
828
+ pe: g()
829
+ }],
830
+ /**
831
+ * Padding Top
832
+ * @see https://tailwindcss.com/docs/padding
833
+ */
834
+ pt: [{
835
+ pt: g()
836
+ }],
837
+ /**
838
+ * Padding Right
839
+ * @see https://tailwindcss.com/docs/padding
840
+ */
841
+ pr: [{
842
+ pr: g()
843
+ }],
844
+ /**
845
+ * Padding Bottom
846
+ * @see https://tailwindcss.com/docs/padding
847
+ */
848
+ pb: [{
849
+ pb: g()
850
+ }],
851
+ /**
852
+ * Padding Left
853
+ * @see https://tailwindcss.com/docs/padding
854
+ */
855
+ pl: [{
856
+ pl: g()
857
+ }],
858
+ /**
859
+ * Margin
860
+ * @see https://tailwindcss.com/docs/margin
861
+ */
862
+ m: [{
863
+ m: S()
864
+ }],
865
+ /**
866
+ * Margin X
867
+ * @see https://tailwindcss.com/docs/margin
868
+ */
869
+ mx: [{
870
+ mx: S()
871
+ }],
872
+ /**
873
+ * Margin Y
874
+ * @see https://tailwindcss.com/docs/margin
875
+ */
876
+ my: [{
877
+ my: S()
878
+ }],
879
+ /**
880
+ * Margin Start
881
+ * @see https://tailwindcss.com/docs/margin
882
+ */
883
+ ms: [{
884
+ ms: S()
885
+ }],
886
+ /**
887
+ * Margin End
888
+ * @see https://tailwindcss.com/docs/margin
889
+ */
890
+ me: [{
891
+ me: S()
892
+ }],
893
+ /**
894
+ * Margin Top
895
+ * @see https://tailwindcss.com/docs/margin
896
+ */
897
+ mt: [{
898
+ mt: S()
899
+ }],
900
+ /**
901
+ * Margin Right
902
+ * @see https://tailwindcss.com/docs/margin
903
+ */
904
+ mr: [{
905
+ mr: S()
906
+ }],
907
+ /**
908
+ * Margin Bottom
909
+ * @see https://tailwindcss.com/docs/margin
910
+ */
911
+ mb: [{
912
+ mb: S()
913
+ }],
914
+ /**
915
+ * Margin Left
916
+ * @see https://tailwindcss.com/docs/margin
917
+ */
918
+ ml: [{
919
+ ml: S()
920
+ }],
921
+ /**
922
+ * Space Between X
923
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
924
+ */
925
+ "space-x": [{
926
+ "space-x": g()
927
+ }],
928
+ /**
929
+ * Space Between X Reverse
930
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
931
+ */
932
+ "space-x-reverse": ["space-x-reverse"],
933
+ /**
934
+ * Space Between Y
935
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
936
+ */
937
+ "space-y": [{
938
+ "space-y": g()
939
+ }],
940
+ /**
941
+ * Space Between Y Reverse
942
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
943
+ */
944
+ "space-y-reverse": ["space-y-reverse"],
945
+ // --------------
946
+ // --- Sizing ---
947
+ // --------------
948
+ /**
949
+ * Size
950
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
951
+ */
952
+ size: [{
953
+ size: F()
954
+ }],
955
+ /**
956
+ * Width
957
+ * @see https://tailwindcss.com/docs/width
958
+ */
959
+ w: [{
960
+ w: [i, "screen", ...F()]
961
+ }],
962
+ /**
963
+ * Min-Width
964
+ * @see https://tailwindcss.com/docs/min-width
965
+ */
966
+ "min-w": [{
967
+ "min-w": [
968
+ i,
969
+ "screen",
970
+ /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
971
+ "none",
972
+ ...F()
973
+ ]
974
+ }],
975
+ /**
976
+ * Max-Width
977
+ * @see https://tailwindcss.com/docs/max-width
978
+ */
979
+ "max-w": [{
980
+ "max-w": [
981
+ i,
982
+ "screen",
983
+ "none",
984
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
985
+ "prose",
986
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
987
+ {
988
+ screen: [s]
989
+ },
990
+ ...F()
991
+ ]
992
+ }],
993
+ /**
994
+ * Height
995
+ * @see https://tailwindcss.com/docs/height
996
+ */
997
+ h: [{
998
+ h: ["screen", "lh", ...F()]
999
+ }],
1000
+ /**
1001
+ * Min-Height
1002
+ * @see https://tailwindcss.com/docs/min-height
1003
+ */
1004
+ "min-h": [{
1005
+ "min-h": ["screen", "lh", "none", ...F()]
1006
+ }],
1007
+ /**
1008
+ * Max-Height
1009
+ * @see https://tailwindcss.com/docs/max-height
1010
+ */
1011
+ "max-h": [{
1012
+ "max-h": ["screen", "lh", ...F()]
1013
+ }],
1014
+ // ------------------
1015
+ // --- Typography ---
1016
+ // ------------------
1017
+ /**
1018
+ * Font Size
1019
+ * @see https://tailwindcss.com/docs/font-size
1020
+ */
1021
+ "font-size": [{
1022
+ text: ["base", o, K, W]
1023
+ }],
1024
+ /**
1025
+ * Font Smoothing
1026
+ * @see https://tailwindcss.com/docs/font-smoothing
1027
+ */
1028
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
1029
+ /**
1030
+ * Font Style
1031
+ * @see https://tailwindcss.com/docs/font-style
1032
+ */
1033
+ "font-style": ["italic", "not-italic"],
1034
+ /**
1035
+ * Font Weight
1036
+ * @see https://tailwindcss.com/docs/font-weight
1037
+ */
1038
+ "font-weight": [{
1039
+ font: [r, d, ve]
1040
+ }],
1041
+ /**
1042
+ * Font Stretch
1043
+ * @see https://tailwindcss.com/docs/font-stretch
1044
+ */
1045
+ "font-stretch": [{
1046
+ "font-stretch": ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", he, c]
1047
+ }],
1048
+ /**
1049
+ * Font Family
1050
+ * @see https://tailwindcss.com/docs/font-family
1051
+ */
1052
+ "font-family": [{
1053
+ font: [qt, c, t]
1054
+ }],
1055
+ /**
1056
+ * Font Variant Numeric
1057
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1058
+ */
1059
+ "fvn-normal": ["normal-nums"],
1060
+ /**
1061
+ * Font Variant Numeric
1062
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1063
+ */
1064
+ "fvn-ordinal": ["ordinal"],
1065
+ /**
1066
+ * Font Variant Numeric
1067
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1068
+ */
1069
+ "fvn-slashed-zero": ["slashed-zero"],
1070
+ /**
1071
+ * Font Variant Numeric
1072
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1073
+ */
1074
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
1075
+ /**
1076
+ * Font Variant Numeric
1077
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1078
+ */
1079
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
1080
+ /**
1081
+ * Font Variant Numeric
1082
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1083
+ */
1084
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
1085
+ /**
1086
+ * Letter Spacing
1087
+ * @see https://tailwindcss.com/docs/letter-spacing
1088
+ */
1089
+ tracking: [{
1090
+ tracking: [n, d, c]
1091
+ }],
1092
+ /**
1093
+ * Line Clamp
1094
+ * @see https://tailwindcss.com/docs/line-clamp
1095
+ */
1096
+ "line-clamp": [{
1097
+ "line-clamp": [v, "none", d, ve]
1098
+ }],
1099
+ /**
1100
+ * Line Height
1101
+ * @see https://tailwindcss.com/docs/line-height
1102
+ */
1103
+ leading: [{
1104
+ leading: [
1105
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1106
+ a,
1107
+ ...g()
1108
+ ]
1109
+ }],
1110
+ /**
1111
+ * List Style Image
1112
+ * @see https://tailwindcss.com/docs/list-style-image
1113
+ */
1114
+ "list-image": [{
1115
+ "list-image": ["none", d, c]
1116
+ }],
1117
+ /**
1118
+ * List Style Position
1119
+ * @see https://tailwindcss.com/docs/list-style-position
1120
+ */
1121
+ "list-style-position": [{
1122
+ list: ["inside", "outside"]
1123
+ }],
1124
+ /**
1125
+ * List Style Type
1126
+ * @see https://tailwindcss.com/docs/list-style-type
1127
+ */
1128
+ "list-style-type": [{
1129
+ list: ["disc", "decimal", "none", d, c]
1130
+ }],
1131
+ /**
1132
+ * Text Alignment
1133
+ * @see https://tailwindcss.com/docs/text-align
1134
+ */
1135
+ "text-alignment": [{
1136
+ text: ["left", "center", "right", "justify", "start", "end"]
1137
+ }],
1138
+ /**
1139
+ * Placeholder Color
1140
+ * @deprecated since Tailwind CSS v3.0.0
1141
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
1142
+ */
1143
+ "placeholder-color": [{
1144
+ placeholder: p()
1145
+ }],
1146
+ /**
1147
+ * Text Color
1148
+ * @see https://tailwindcss.com/docs/text-color
1149
+ */
1150
+ "text-color": [{
1151
+ text: p()
1152
+ }],
1153
+ /**
1154
+ * Text Decoration
1155
+ * @see https://tailwindcss.com/docs/text-decoration
1156
+ */
1157
+ "text-decoration": ["underline", "overline", "line-through", "no-underline"],
1158
+ /**
1159
+ * Text Decoration Style
1160
+ * @see https://tailwindcss.com/docs/text-decoration-style
1161
+ */
1162
+ "text-decoration-style": [{
1163
+ decoration: [...re(), "wavy"]
1164
+ }],
1165
+ /**
1166
+ * Text Decoration Thickness
1167
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
1168
+ */
1169
+ "text-decoration-thickness": [{
1170
+ decoration: [v, "from-font", "auto", d, W]
1171
+ }],
1172
+ /**
1173
+ * Text Decoration Color
1174
+ * @see https://tailwindcss.com/docs/text-decoration-color
1175
+ */
1176
+ "text-decoration-color": [{
1177
+ decoration: p()
1178
+ }],
1179
+ /**
1180
+ * Text Underline Offset
1181
+ * @see https://tailwindcss.com/docs/text-underline-offset
1182
+ */
1183
+ "underline-offset": [{
1184
+ "underline-offset": [v, "auto", d, c]
1185
+ }],
1186
+ /**
1187
+ * Text Transform
1188
+ * @see https://tailwindcss.com/docs/text-transform
1189
+ */
1190
+ "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
1191
+ /**
1192
+ * Text Overflow
1193
+ * @see https://tailwindcss.com/docs/text-overflow
1194
+ */
1195
+ "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
1196
+ /**
1197
+ * Text Wrap
1198
+ * @see https://tailwindcss.com/docs/text-wrap
1199
+ */
1200
+ "text-wrap": [{
1201
+ text: ["wrap", "nowrap", "balance", "pretty"]
1202
+ }],
1203
+ /**
1204
+ * Text Indent
1205
+ * @see https://tailwindcss.com/docs/text-indent
1206
+ */
1207
+ indent: [{
1208
+ indent: g()
1209
+ }],
1210
+ /**
1211
+ * Vertical Alignment
1212
+ * @see https://tailwindcss.com/docs/vertical-align
1213
+ */
1214
+ "vertical-align": [{
1215
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", d, c]
1216
+ }],
1217
+ /**
1218
+ * Whitespace
1219
+ * @see https://tailwindcss.com/docs/whitespace
1220
+ */
1221
+ whitespace: [{
1222
+ whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
1223
+ }],
1224
+ /**
1225
+ * Word Break
1226
+ * @see https://tailwindcss.com/docs/word-break
1227
+ */
1228
+ break: [{
1229
+ break: ["normal", "words", "all", "keep"]
1230
+ }],
1231
+ /**
1232
+ * Overflow Wrap
1233
+ * @see https://tailwindcss.com/docs/overflow-wrap
1234
+ */
1235
+ wrap: [{
1236
+ wrap: ["break-word", "anywhere", "normal"]
1237
+ }],
1238
+ /**
1239
+ * Hyphens
1240
+ * @see https://tailwindcss.com/docs/hyphens
1241
+ */
1242
+ hyphens: [{
1243
+ hyphens: ["none", "manual", "auto"]
1244
+ }],
1245
+ /**
1246
+ * Content
1247
+ * @see https://tailwindcss.com/docs/content
1248
+ */
1249
+ content: [{
1250
+ content: ["none", d, c]
1251
+ }],
1252
+ // -------------------
1253
+ // --- Backgrounds ---
1254
+ // -------------------
1255
+ /**
1256
+ * Background Attachment
1257
+ * @see https://tailwindcss.com/docs/background-attachment
1258
+ */
1259
+ "bg-attachment": [{
1260
+ bg: ["fixed", "local", "scroll"]
1261
+ }],
1262
+ /**
1263
+ * Background Clip
1264
+ * @see https://tailwindcss.com/docs/background-clip
1265
+ */
1266
+ "bg-clip": [{
1267
+ "bg-clip": ["border", "padding", "content", "text"]
1268
+ }],
1269
+ /**
1270
+ * Background Origin
1271
+ * @see https://tailwindcss.com/docs/background-origin
1272
+ */
1273
+ "bg-origin": [{
1274
+ "bg-origin": ["border", "padding", "content"]
1275
+ }],
1276
+ /**
1277
+ * Background Position
1278
+ * @see https://tailwindcss.com/docs/background-position
1279
+ */
1280
+ "bg-position": [{
1281
+ bg: ze()
1282
+ }],
1283
+ /**
1284
+ * Background Repeat
1285
+ * @see https://tailwindcss.com/docs/background-repeat
1286
+ */
1287
+ "bg-repeat": [{
1288
+ bg: Ae()
1289
+ }],
1290
+ /**
1291
+ * Background Size
1292
+ * @see https://tailwindcss.com/docs/background-size
1293
+ */
1294
+ "bg-size": [{
1295
+ bg: Me()
1296
+ }],
1297
+ /**
1298
+ * Background Image
1299
+ * @see https://tailwindcss.com/docs/background-image
1300
+ */
1301
+ "bg-image": [{
1302
+ bg: ["none", {
1303
+ linear: [{
1304
+ to: ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
1305
+ }, G, d, c],
1306
+ radial: ["", d, c],
1307
+ conic: [G, d, c]
1308
+ }, Qt, Jt]
1309
+ }],
1310
+ /**
1311
+ * Background Color
1312
+ * @see https://tailwindcss.com/docs/background-color
1313
+ */
1314
+ "bg-color": [{
1315
+ bg: p()
1316
+ }],
1317
+ /**
1318
+ * Gradient Color Stops From Position
1319
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1320
+ */
1321
+ "gradient-from-pos": [{
1322
+ from: ge()
1323
+ }],
1324
+ /**
1325
+ * Gradient Color Stops Via Position
1326
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1327
+ */
1328
+ "gradient-via-pos": [{
1329
+ via: ge()
1330
+ }],
1331
+ /**
1332
+ * Gradient Color Stops To Position
1333
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1334
+ */
1335
+ "gradient-to-pos": [{
1336
+ to: ge()
1337
+ }],
1338
+ /**
1339
+ * Gradient Color Stops From
1340
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1341
+ */
1342
+ "gradient-from": [{
1343
+ from: p()
1344
+ }],
1345
+ /**
1346
+ * Gradient Color Stops Via
1347
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1348
+ */
1349
+ "gradient-via": [{
1350
+ via: p()
1351
+ }],
1352
+ /**
1353
+ * Gradient Color Stops To
1354
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1355
+ */
1356
+ "gradient-to": [{
1357
+ to: p()
1358
+ }],
1359
+ // ---------------
1360
+ // --- Borders ---
1361
+ // ---------------
1362
+ /**
1363
+ * Border Radius
1364
+ * @see https://tailwindcss.com/docs/border-radius
1365
+ */
1366
+ rounded: [{
1367
+ rounded: R()
1368
+ }],
1369
+ /**
1370
+ * Border Radius Start
1371
+ * @see https://tailwindcss.com/docs/border-radius
1372
+ */
1373
+ "rounded-s": [{
1374
+ "rounded-s": R()
1375
+ }],
1376
+ /**
1377
+ * Border Radius End
1378
+ * @see https://tailwindcss.com/docs/border-radius
1379
+ */
1380
+ "rounded-e": [{
1381
+ "rounded-e": R()
1382
+ }],
1383
+ /**
1384
+ * Border Radius Top
1385
+ * @see https://tailwindcss.com/docs/border-radius
1386
+ */
1387
+ "rounded-t": [{
1388
+ "rounded-t": R()
1389
+ }],
1390
+ /**
1391
+ * Border Radius Right
1392
+ * @see https://tailwindcss.com/docs/border-radius
1393
+ */
1394
+ "rounded-r": [{
1395
+ "rounded-r": R()
1396
+ }],
1397
+ /**
1398
+ * Border Radius Bottom
1399
+ * @see https://tailwindcss.com/docs/border-radius
1400
+ */
1401
+ "rounded-b": [{
1402
+ "rounded-b": R()
1403
+ }],
1404
+ /**
1405
+ * Border Radius Left
1406
+ * @see https://tailwindcss.com/docs/border-radius
1407
+ */
1408
+ "rounded-l": [{
1409
+ "rounded-l": R()
1410
+ }],
1411
+ /**
1412
+ * Border Radius Start Start
1413
+ * @see https://tailwindcss.com/docs/border-radius
1414
+ */
1415
+ "rounded-ss": [{
1416
+ "rounded-ss": R()
1417
+ }],
1418
+ /**
1419
+ * Border Radius Start End
1420
+ * @see https://tailwindcss.com/docs/border-radius
1421
+ */
1422
+ "rounded-se": [{
1423
+ "rounded-se": R()
1424
+ }],
1425
+ /**
1426
+ * Border Radius End End
1427
+ * @see https://tailwindcss.com/docs/border-radius
1428
+ */
1429
+ "rounded-ee": [{
1430
+ "rounded-ee": R()
1431
+ }],
1432
+ /**
1433
+ * Border Radius End Start
1434
+ * @see https://tailwindcss.com/docs/border-radius
1435
+ */
1436
+ "rounded-es": [{
1437
+ "rounded-es": R()
1438
+ }],
1439
+ /**
1440
+ * Border Radius Top Left
1441
+ * @see https://tailwindcss.com/docs/border-radius
1442
+ */
1443
+ "rounded-tl": [{
1444
+ "rounded-tl": R()
1445
+ }],
1446
+ /**
1447
+ * Border Radius Top Right
1448
+ * @see https://tailwindcss.com/docs/border-radius
1449
+ */
1450
+ "rounded-tr": [{
1451
+ "rounded-tr": R()
1452
+ }],
1453
+ /**
1454
+ * Border Radius Bottom Right
1455
+ * @see https://tailwindcss.com/docs/border-radius
1456
+ */
1457
+ "rounded-br": [{
1458
+ "rounded-br": R()
1459
+ }],
1460
+ /**
1461
+ * Border Radius Bottom Left
1462
+ * @see https://tailwindcss.com/docs/border-radius
1463
+ */
1464
+ "rounded-bl": [{
1465
+ "rounded-bl": R()
1466
+ }],
1467
+ /**
1468
+ * Border Width
1469
+ * @see https://tailwindcss.com/docs/border-width
1470
+ */
1471
+ "border-w": [{
1472
+ border: T()
1473
+ }],
1474
+ /**
1475
+ * Border Width X
1476
+ * @see https://tailwindcss.com/docs/border-width
1477
+ */
1478
+ "border-w-x": [{
1479
+ "border-x": T()
1480
+ }],
1481
+ /**
1482
+ * Border Width Y
1483
+ * @see https://tailwindcss.com/docs/border-width
1484
+ */
1485
+ "border-w-y": [{
1486
+ "border-y": T()
1487
+ }],
1488
+ /**
1489
+ * Border Width Start
1490
+ * @see https://tailwindcss.com/docs/border-width
1491
+ */
1492
+ "border-w-s": [{
1493
+ "border-s": T()
1494
+ }],
1495
+ /**
1496
+ * Border Width End
1497
+ * @see https://tailwindcss.com/docs/border-width
1498
+ */
1499
+ "border-w-e": [{
1500
+ "border-e": T()
1501
+ }],
1502
+ /**
1503
+ * Border Width Top
1504
+ * @see https://tailwindcss.com/docs/border-width
1505
+ */
1506
+ "border-w-t": [{
1507
+ "border-t": T()
1508
+ }],
1509
+ /**
1510
+ * Border Width Right
1511
+ * @see https://tailwindcss.com/docs/border-width
1512
+ */
1513
+ "border-w-r": [{
1514
+ "border-r": T()
1515
+ }],
1516
+ /**
1517
+ * Border Width Bottom
1518
+ * @see https://tailwindcss.com/docs/border-width
1519
+ */
1520
+ "border-w-b": [{
1521
+ "border-b": T()
1522
+ }],
1523
+ /**
1524
+ * Border Width Left
1525
+ * @see https://tailwindcss.com/docs/border-width
1526
+ */
1527
+ "border-w-l": [{
1528
+ "border-l": T()
1529
+ }],
1530
+ /**
1531
+ * Divide Width X
1532
+ * @see https://tailwindcss.com/docs/border-width#between-children
1533
+ */
1534
+ "divide-x": [{
1535
+ "divide-x": T()
1536
+ }],
1537
+ /**
1538
+ * Divide Width X Reverse
1539
+ * @see https://tailwindcss.com/docs/border-width#between-children
1540
+ */
1541
+ "divide-x-reverse": ["divide-x-reverse"],
1542
+ /**
1543
+ * Divide Width Y
1544
+ * @see https://tailwindcss.com/docs/border-width#between-children
1545
+ */
1546
+ "divide-y": [{
1547
+ "divide-y": T()
1548
+ }],
1549
+ /**
1550
+ * Divide Width Y Reverse
1551
+ * @see https://tailwindcss.com/docs/border-width#between-children
1552
+ */
1553
+ "divide-y-reverse": ["divide-y-reverse"],
1554
+ /**
1555
+ * Border Style
1556
+ * @see https://tailwindcss.com/docs/border-style
1557
+ */
1558
+ "border-style": [{
1559
+ border: [...re(), "hidden", "none"]
1560
+ }],
1561
+ /**
1562
+ * Divide Style
1563
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
1564
+ */
1565
+ "divide-style": [{
1566
+ divide: [...re(), "hidden", "none"]
1567
+ }],
1568
+ /**
1569
+ * Border Color
1570
+ * @see https://tailwindcss.com/docs/border-color
1571
+ */
1572
+ "border-color": [{
1573
+ border: p()
1574
+ }],
1575
+ /**
1576
+ * Border Color X
1577
+ * @see https://tailwindcss.com/docs/border-color
1578
+ */
1579
+ "border-color-x": [{
1580
+ "border-x": p()
1581
+ }],
1582
+ /**
1583
+ * Border Color Y
1584
+ * @see https://tailwindcss.com/docs/border-color
1585
+ */
1586
+ "border-color-y": [{
1587
+ "border-y": p()
1588
+ }],
1589
+ /**
1590
+ * Border Color S
1591
+ * @see https://tailwindcss.com/docs/border-color
1592
+ */
1593
+ "border-color-s": [{
1594
+ "border-s": p()
1595
+ }],
1596
+ /**
1597
+ * Border Color E
1598
+ * @see https://tailwindcss.com/docs/border-color
1599
+ */
1600
+ "border-color-e": [{
1601
+ "border-e": p()
1602
+ }],
1603
+ /**
1604
+ * Border Color Top
1605
+ * @see https://tailwindcss.com/docs/border-color
1606
+ */
1607
+ "border-color-t": [{
1608
+ "border-t": p()
1609
+ }],
1610
+ /**
1611
+ * Border Color Right
1612
+ * @see https://tailwindcss.com/docs/border-color
1613
+ */
1614
+ "border-color-r": [{
1615
+ "border-r": p()
1616
+ }],
1617
+ /**
1618
+ * Border Color Bottom
1619
+ * @see https://tailwindcss.com/docs/border-color
1620
+ */
1621
+ "border-color-b": [{
1622
+ "border-b": p()
1623
+ }],
1624
+ /**
1625
+ * Border Color Left
1626
+ * @see https://tailwindcss.com/docs/border-color
1627
+ */
1628
+ "border-color-l": [{
1629
+ "border-l": p()
1630
+ }],
1631
+ /**
1632
+ * Divide Color
1633
+ * @see https://tailwindcss.com/docs/divide-color
1634
+ */
1635
+ "divide-color": [{
1636
+ divide: p()
1637
+ }],
1638
+ /**
1639
+ * Outline Style
1640
+ * @see https://tailwindcss.com/docs/outline-style
1641
+ */
1642
+ "outline-style": [{
1643
+ outline: [...re(), "none", "hidden"]
1644
+ }],
1645
+ /**
1646
+ * Outline Offset
1647
+ * @see https://tailwindcss.com/docs/outline-offset
1648
+ */
1649
+ "outline-offset": [{
1650
+ "outline-offset": [v, d, c]
1651
+ }],
1652
+ /**
1653
+ * Outline Width
1654
+ * @see https://tailwindcss.com/docs/outline-width
1655
+ */
1656
+ "outline-w": [{
1657
+ outline: ["", v, K, W]
1658
+ }],
1659
+ /**
1660
+ * Outline Color
1661
+ * @see https://tailwindcss.com/docs/outline-color
1662
+ */
1663
+ "outline-color": [{
1664
+ outline: p()
1665
+ }],
1666
+ // ---------------
1667
+ // --- Effects ---
1668
+ // ---------------
1669
+ /**
1670
+ * Box Shadow
1671
+ * @see https://tailwindcss.com/docs/box-shadow
1672
+ */
1673
+ shadow: [{
1674
+ shadow: [
1675
+ // Deprecated since Tailwind CSS v4.0.0
1676
+ "",
1677
+ "none",
1678
+ b,
1679
+ le,
1680
+ ie
1681
+ ]
1682
+ }],
1683
+ /**
1684
+ * Box Shadow Color
1685
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
1686
+ */
1687
+ "shadow-color": [{
1688
+ shadow: p()
1689
+ }],
1690
+ /**
1691
+ * Inset Box Shadow
1692
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
1693
+ */
1694
+ "inset-shadow": [{
1695
+ "inset-shadow": ["none", m, le, ie]
1696
+ }],
1697
+ /**
1698
+ * Inset Box Shadow Color
1699
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
1700
+ */
1701
+ "inset-shadow-color": [{
1702
+ "inset-shadow": p()
1703
+ }],
1704
+ /**
1705
+ * Ring Width
1706
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
1707
+ */
1708
+ "ring-w": [{
1709
+ ring: T()
1710
+ }],
1711
+ /**
1712
+ * Ring Width Inset
1713
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
1714
+ * @deprecated since Tailwind CSS v4.0.0
1715
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
1716
+ */
1717
+ "ring-w-inset": ["ring-inset"],
1718
+ /**
1719
+ * Ring Color
1720
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
1721
+ */
1722
+ "ring-color": [{
1723
+ ring: p()
1724
+ }],
1725
+ /**
1726
+ * Ring Offset Width
1727
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
1728
+ * @deprecated since Tailwind CSS v4.0.0
1729
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
1730
+ */
1731
+ "ring-offset-w": [{
1732
+ "ring-offset": [v, W]
1733
+ }],
1734
+ /**
1735
+ * Ring Offset Color
1736
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
1737
+ * @deprecated since Tailwind CSS v4.0.0
1738
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
1739
+ */
1740
+ "ring-offset-color": [{
1741
+ "ring-offset": p()
1742
+ }],
1743
+ /**
1744
+ * Inset Ring Width
1745
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
1746
+ */
1747
+ "inset-ring-w": [{
1748
+ "inset-ring": T()
1749
+ }],
1750
+ /**
1751
+ * Inset Ring Color
1752
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
1753
+ */
1754
+ "inset-ring-color": [{
1755
+ "inset-ring": p()
1756
+ }],
1757
+ /**
1758
+ * Text Shadow
1759
+ * @see https://tailwindcss.com/docs/text-shadow
1760
+ */
1761
+ "text-shadow": [{
1762
+ "text-shadow": ["none", w, le, ie]
1763
+ }],
1764
+ /**
1765
+ * Text Shadow Color
1766
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
1767
+ */
1768
+ "text-shadow-color": [{
1769
+ "text-shadow": p()
1770
+ }],
1771
+ /**
1772
+ * Opacity
1773
+ * @see https://tailwindcss.com/docs/opacity
1774
+ */
1775
+ opacity: [{
1776
+ opacity: [v, d, c]
1777
+ }],
1778
+ /**
1779
+ * Mix Blend Mode
1780
+ * @see https://tailwindcss.com/docs/mix-blend-mode
1781
+ */
1782
+ "mix-blend": [{
1783
+ "mix-blend": [...Re(), "plus-darker", "plus-lighter"]
1784
+ }],
1785
+ /**
1786
+ * Background Blend Mode
1787
+ * @see https://tailwindcss.com/docs/background-blend-mode
1788
+ */
1789
+ "bg-blend": [{
1790
+ "bg-blend": Re()
1791
+ }],
1792
+ /**
1793
+ * Mask Clip
1794
+ * @see https://tailwindcss.com/docs/mask-clip
1795
+ */
1796
+ "mask-clip": [{
1797
+ "mask-clip": ["border", "padding", "content", "fill", "stroke", "view"]
1798
+ }, "mask-no-clip"],
1799
+ /**
1800
+ * Mask Composite
1801
+ * @see https://tailwindcss.com/docs/mask-composite
1802
+ */
1803
+ "mask-composite": [{
1804
+ mask: ["add", "subtract", "intersect", "exclude"]
1805
+ }],
1806
+ /**
1807
+ * Mask Image
1808
+ * @see https://tailwindcss.com/docs/mask-image
1809
+ */
1810
+ "mask-image-linear-pos": [{
1811
+ "mask-linear": [v]
1812
+ }],
1813
+ "mask-image-linear-from-pos": [{
1814
+ "mask-linear-from": M()
1815
+ }],
1816
+ "mask-image-linear-to-pos": [{
1817
+ "mask-linear-to": M()
1818
+ }],
1819
+ "mask-image-linear-from-color": [{
1820
+ "mask-linear-from": p()
1821
+ }],
1822
+ "mask-image-linear-to-color": [{
1823
+ "mask-linear-to": p()
1824
+ }],
1825
+ "mask-image-t-from-pos": [{
1826
+ "mask-t-from": M()
1827
+ }],
1828
+ "mask-image-t-to-pos": [{
1829
+ "mask-t-to": M()
1830
+ }],
1831
+ "mask-image-t-from-color": [{
1832
+ "mask-t-from": p()
1833
+ }],
1834
+ "mask-image-t-to-color": [{
1835
+ "mask-t-to": p()
1836
+ }],
1837
+ "mask-image-r-from-pos": [{
1838
+ "mask-r-from": M()
1839
+ }],
1840
+ "mask-image-r-to-pos": [{
1841
+ "mask-r-to": M()
1842
+ }],
1843
+ "mask-image-r-from-color": [{
1844
+ "mask-r-from": p()
1845
+ }],
1846
+ "mask-image-r-to-color": [{
1847
+ "mask-r-to": p()
1848
+ }],
1849
+ "mask-image-b-from-pos": [{
1850
+ "mask-b-from": M()
1851
+ }],
1852
+ "mask-image-b-to-pos": [{
1853
+ "mask-b-to": M()
1854
+ }],
1855
+ "mask-image-b-from-color": [{
1856
+ "mask-b-from": p()
1857
+ }],
1858
+ "mask-image-b-to-color": [{
1859
+ "mask-b-to": p()
1860
+ }],
1861
+ "mask-image-l-from-pos": [{
1862
+ "mask-l-from": M()
1863
+ }],
1864
+ "mask-image-l-to-pos": [{
1865
+ "mask-l-to": M()
1866
+ }],
1867
+ "mask-image-l-from-color": [{
1868
+ "mask-l-from": p()
1869
+ }],
1870
+ "mask-image-l-to-color": [{
1871
+ "mask-l-to": p()
1872
+ }],
1873
+ "mask-image-x-from-pos": [{
1874
+ "mask-x-from": M()
1875
+ }],
1876
+ "mask-image-x-to-pos": [{
1877
+ "mask-x-to": M()
1878
+ }],
1879
+ "mask-image-x-from-color": [{
1880
+ "mask-x-from": p()
1881
+ }],
1882
+ "mask-image-x-to-color": [{
1883
+ "mask-x-to": p()
1884
+ }],
1885
+ "mask-image-y-from-pos": [{
1886
+ "mask-y-from": M()
1887
+ }],
1888
+ "mask-image-y-to-pos": [{
1889
+ "mask-y-to": M()
1890
+ }],
1891
+ "mask-image-y-from-color": [{
1892
+ "mask-y-from": p()
1893
+ }],
1894
+ "mask-image-y-to-color": [{
1895
+ "mask-y-to": p()
1896
+ }],
1897
+ "mask-image-radial": [{
1898
+ "mask-radial": [d, c]
1899
+ }],
1900
+ "mask-image-radial-from-pos": [{
1901
+ "mask-radial-from": M()
1902
+ }],
1903
+ "mask-image-radial-to-pos": [{
1904
+ "mask-radial-to": M()
1905
+ }],
1906
+ "mask-image-radial-from-color": [{
1907
+ "mask-radial-from": p()
1908
+ }],
1909
+ "mask-image-radial-to-color": [{
1910
+ "mask-radial-to": p()
1911
+ }],
1912
+ "mask-image-radial-shape": [{
1913
+ "mask-radial": ["circle", "ellipse"]
1914
+ }],
1915
+ "mask-image-radial-size": [{
1916
+ "mask-radial": [{
1917
+ closest: ["side", "corner"],
1918
+ farthest: ["side", "corner"]
1919
+ }]
1920
+ }],
1921
+ "mask-image-radial-pos": [{
1922
+ "mask-radial-at": I()
1923
+ }],
1924
+ "mask-image-conic-pos": [{
1925
+ "mask-conic": [v]
1926
+ }],
1927
+ "mask-image-conic-from-pos": [{
1928
+ "mask-conic-from": M()
1929
+ }],
1930
+ "mask-image-conic-to-pos": [{
1931
+ "mask-conic-to": M()
1932
+ }],
1933
+ "mask-image-conic-from-color": [{
1934
+ "mask-conic-from": p()
1935
+ }],
1936
+ "mask-image-conic-to-color": [{
1937
+ "mask-conic-to": p()
1938
+ }],
1939
+ /**
1940
+ * Mask Mode
1941
+ * @see https://tailwindcss.com/docs/mask-mode
1942
+ */
1943
+ "mask-mode": [{
1944
+ mask: ["alpha", "luminance", "match"]
1945
+ }],
1946
+ /**
1947
+ * Mask Origin
1948
+ * @see https://tailwindcss.com/docs/mask-origin
1949
+ */
1950
+ "mask-origin": [{
1951
+ "mask-origin": ["border", "padding", "content", "fill", "stroke", "view"]
1952
+ }],
1953
+ /**
1954
+ * Mask Position
1955
+ * @see https://tailwindcss.com/docs/mask-position
1956
+ */
1957
+ "mask-position": [{
1958
+ mask: ze()
1959
+ }],
1960
+ /**
1961
+ * Mask Repeat
1962
+ * @see https://tailwindcss.com/docs/mask-repeat
1963
+ */
1964
+ "mask-repeat": [{
1965
+ mask: Ae()
1966
+ }],
1967
+ /**
1968
+ * Mask Size
1969
+ * @see https://tailwindcss.com/docs/mask-size
1970
+ */
1971
+ "mask-size": [{
1972
+ mask: Me()
1973
+ }],
1974
+ /**
1975
+ * Mask Type
1976
+ * @see https://tailwindcss.com/docs/mask-type
1977
+ */
1978
+ "mask-type": [{
1979
+ "mask-type": ["alpha", "luminance"]
1980
+ }],
1981
+ /**
1982
+ * Mask Image
1983
+ * @see https://tailwindcss.com/docs/mask-image
1984
+ */
1985
+ "mask-image": [{
1986
+ mask: ["none", d, c]
1987
+ }],
1988
+ // ---------------
1989
+ // --- Filters ---
1990
+ // ---------------
1991
+ /**
1992
+ * Filter
1993
+ * @see https://tailwindcss.com/docs/filter
1994
+ */
1995
+ filter: [{
1996
+ filter: [
1997
+ // Deprecated since Tailwind CSS v3.0.0
1998
+ "",
1999
+ "none",
2000
+ d,
2001
+ c
2002
+ ]
2003
+ }],
2004
+ /**
2005
+ * Blur
2006
+ * @see https://tailwindcss.com/docs/blur
2007
+ */
2008
+ blur: [{
2009
+ blur: Ee()
2010
+ }],
2011
+ /**
2012
+ * Brightness
2013
+ * @see https://tailwindcss.com/docs/brightness
2014
+ */
2015
+ brightness: [{
2016
+ brightness: [v, d, c]
2017
+ }],
2018
+ /**
2019
+ * Contrast
2020
+ * @see https://tailwindcss.com/docs/contrast
2021
+ */
2022
+ contrast: [{
2023
+ contrast: [v, d, c]
2024
+ }],
2025
+ /**
2026
+ * Drop Shadow
2027
+ * @see https://tailwindcss.com/docs/drop-shadow
2028
+ */
2029
+ "drop-shadow": [{
2030
+ "drop-shadow": [
2031
+ // Deprecated since Tailwind CSS v4.0.0
2032
+ "",
2033
+ "none",
2034
+ C,
2035
+ le,
2036
+ ie
2037
+ ]
2038
+ }],
2039
+ /**
2040
+ * Drop Shadow Color
2041
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
2042
+ */
2043
+ "drop-shadow-color": [{
2044
+ "drop-shadow": p()
2045
+ }],
2046
+ /**
2047
+ * Grayscale
2048
+ * @see https://tailwindcss.com/docs/grayscale
2049
+ */
2050
+ grayscale: [{
2051
+ grayscale: ["", v, d, c]
2052
+ }],
2053
+ /**
2054
+ * Hue Rotate
2055
+ * @see https://tailwindcss.com/docs/hue-rotate
2056
+ */
2057
+ "hue-rotate": [{
2058
+ "hue-rotate": [v, d, c]
2059
+ }],
2060
+ /**
2061
+ * Invert
2062
+ * @see https://tailwindcss.com/docs/invert
2063
+ */
2064
+ invert: [{
2065
+ invert: ["", v, d, c]
2066
+ }],
2067
+ /**
2068
+ * Saturate
2069
+ * @see https://tailwindcss.com/docs/saturate
2070
+ */
2071
+ saturate: [{
2072
+ saturate: [v, d, c]
2073
+ }],
2074
+ /**
2075
+ * Sepia
2076
+ * @see https://tailwindcss.com/docs/sepia
2077
+ */
2078
+ sepia: [{
2079
+ sepia: ["", v, d, c]
2080
+ }],
2081
+ /**
2082
+ * Backdrop Filter
2083
+ * @see https://tailwindcss.com/docs/backdrop-filter
2084
+ */
2085
+ "backdrop-filter": [{
2086
+ "backdrop-filter": [
2087
+ // Deprecated since Tailwind CSS v3.0.0
2088
+ "",
2089
+ "none",
2090
+ d,
2091
+ c
2092
+ ]
2093
+ }],
2094
+ /**
2095
+ * Backdrop Blur
2096
+ * @see https://tailwindcss.com/docs/backdrop-blur
2097
+ */
2098
+ "backdrop-blur": [{
2099
+ "backdrop-blur": Ee()
2100
+ }],
2101
+ /**
2102
+ * Backdrop Brightness
2103
+ * @see https://tailwindcss.com/docs/backdrop-brightness
2104
+ */
2105
+ "backdrop-brightness": [{
2106
+ "backdrop-brightness": [v, d, c]
2107
+ }],
2108
+ /**
2109
+ * Backdrop Contrast
2110
+ * @see https://tailwindcss.com/docs/backdrop-contrast
2111
+ */
2112
+ "backdrop-contrast": [{
2113
+ "backdrop-contrast": [v, d, c]
2114
+ }],
2115
+ /**
2116
+ * Backdrop Grayscale
2117
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
2118
+ */
2119
+ "backdrop-grayscale": [{
2120
+ "backdrop-grayscale": ["", v, d, c]
2121
+ }],
2122
+ /**
2123
+ * Backdrop Hue Rotate
2124
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
2125
+ */
2126
+ "backdrop-hue-rotate": [{
2127
+ "backdrop-hue-rotate": [v, d, c]
2128
+ }],
2129
+ /**
2130
+ * Backdrop Invert
2131
+ * @see https://tailwindcss.com/docs/backdrop-invert
2132
+ */
2133
+ "backdrop-invert": [{
2134
+ "backdrop-invert": ["", v, d, c]
2135
+ }],
2136
+ /**
2137
+ * Backdrop Opacity
2138
+ * @see https://tailwindcss.com/docs/backdrop-opacity
2139
+ */
2140
+ "backdrop-opacity": [{
2141
+ "backdrop-opacity": [v, d, c]
2142
+ }],
2143
+ /**
2144
+ * Backdrop Saturate
2145
+ * @see https://tailwindcss.com/docs/backdrop-saturate
2146
+ */
2147
+ "backdrop-saturate": [{
2148
+ "backdrop-saturate": [v, d, c]
2149
+ }],
2150
+ /**
2151
+ * Backdrop Sepia
2152
+ * @see https://tailwindcss.com/docs/backdrop-sepia
2153
+ */
2154
+ "backdrop-sepia": [{
2155
+ "backdrop-sepia": ["", v, d, c]
2156
+ }],
2157
+ // --------------
2158
+ // --- Tables ---
2159
+ // --------------
2160
+ /**
2161
+ * Border Collapse
2162
+ * @see https://tailwindcss.com/docs/border-collapse
2163
+ */
2164
+ "border-collapse": [{
2165
+ border: ["collapse", "separate"]
2166
+ }],
2167
+ /**
2168
+ * Border Spacing
2169
+ * @see https://tailwindcss.com/docs/border-spacing
2170
+ */
2171
+ "border-spacing": [{
2172
+ "border-spacing": g()
2173
+ }],
2174
+ /**
2175
+ * Border Spacing X
2176
+ * @see https://tailwindcss.com/docs/border-spacing
2177
+ */
2178
+ "border-spacing-x": [{
2179
+ "border-spacing-x": g()
2180
+ }],
2181
+ /**
2182
+ * Border Spacing Y
2183
+ * @see https://tailwindcss.com/docs/border-spacing
2184
+ */
2185
+ "border-spacing-y": [{
2186
+ "border-spacing-y": g()
2187
+ }],
2188
+ /**
2189
+ * Table Layout
2190
+ * @see https://tailwindcss.com/docs/table-layout
2191
+ */
2192
+ "table-layout": [{
2193
+ table: ["auto", "fixed"]
2194
+ }],
2195
+ /**
2196
+ * Caption Side
2197
+ * @see https://tailwindcss.com/docs/caption-side
2198
+ */
2199
+ caption: [{
2200
+ caption: ["top", "bottom"]
2201
+ }],
2202
+ // ---------------------------------
2203
+ // --- Transitions and Animation ---
2204
+ // ---------------------------------
2205
+ /**
2206
+ * Transition Property
2207
+ * @see https://tailwindcss.com/docs/transition-property
2208
+ */
2209
+ transition: [{
2210
+ transition: ["", "all", "colors", "opacity", "shadow", "transform", "none", d, c]
2211
+ }],
2212
+ /**
2213
+ * Transition Behavior
2214
+ * @see https://tailwindcss.com/docs/transition-behavior
2215
+ */
2216
+ "transition-behavior": [{
2217
+ transition: ["normal", "discrete"]
2218
+ }],
2219
+ /**
2220
+ * Transition Duration
2221
+ * @see https://tailwindcss.com/docs/transition-duration
2222
+ */
2223
+ duration: [{
2224
+ duration: [v, "initial", d, c]
2225
+ }],
2226
+ /**
2227
+ * Transition Timing Function
2228
+ * @see https://tailwindcss.com/docs/transition-timing-function
2229
+ */
2230
+ ease: [{
2231
+ ease: ["linear", "initial", A, d, c]
2232
+ }],
2233
+ /**
2234
+ * Transition Delay
2235
+ * @see https://tailwindcss.com/docs/transition-delay
2236
+ */
2237
+ delay: [{
2238
+ delay: [v, d, c]
2239
+ }],
2240
+ /**
2241
+ * Animation
2242
+ * @see https://tailwindcss.com/docs/animation
2243
+ */
2244
+ animate: [{
2245
+ animate: ["none", N, d, c]
2246
+ }],
2247
+ // ------------------
2248
+ // --- Transforms ---
2249
+ // ------------------
2250
+ /**
2251
+ * Backface Visibility
2252
+ * @see https://tailwindcss.com/docs/backface-visibility
2253
+ */
2254
+ backface: [{
2255
+ backface: ["hidden", "visible"]
2256
+ }],
2257
+ /**
2258
+ * Perspective
2259
+ * @see https://tailwindcss.com/docs/perspective
2260
+ */
2261
+ perspective: [{
2262
+ perspective: [y, d, c]
2263
+ }],
2264
+ /**
2265
+ * Perspective Origin
2266
+ * @see https://tailwindcss.com/docs/perspective-origin
2267
+ */
2268
+ "perspective-origin": [{
2269
+ "perspective-origin": P()
2270
+ }],
2271
+ /**
2272
+ * Rotate
2273
+ * @see https://tailwindcss.com/docs/rotate
2274
+ */
2275
+ rotate: [{
2276
+ rotate: ne()
2277
+ }],
2278
+ /**
2279
+ * Rotate X
2280
+ * @see https://tailwindcss.com/docs/rotate
2281
+ */
2282
+ "rotate-x": [{
2283
+ "rotate-x": ne()
2284
+ }],
2285
+ /**
2286
+ * Rotate Y
2287
+ * @see https://tailwindcss.com/docs/rotate
2288
+ */
2289
+ "rotate-y": [{
2290
+ "rotate-y": ne()
2291
+ }],
2292
+ /**
2293
+ * Rotate Z
2294
+ * @see https://tailwindcss.com/docs/rotate
2295
+ */
2296
+ "rotate-z": [{
2297
+ "rotate-z": ne()
2298
+ }],
2299
+ /**
2300
+ * Scale
2301
+ * @see https://tailwindcss.com/docs/scale
2302
+ */
2303
+ scale: [{
2304
+ scale: se()
2305
+ }],
2306
+ /**
2307
+ * Scale X
2308
+ * @see https://tailwindcss.com/docs/scale
2309
+ */
2310
+ "scale-x": [{
2311
+ "scale-x": se()
2312
+ }],
2313
+ /**
2314
+ * Scale Y
2315
+ * @see https://tailwindcss.com/docs/scale
2316
+ */
2317
+ "scale-y": [{
2318
+ "scale-y": se()
2319
+ }],
2320
+ /**
2321
+ * Scale Z
2322
+ * @see https://tailwindcss.com/docs/scale
2323
+ */
2324
+ "scale-z": [{
2325
+ "scale-z": se()
2326
+ }],
2327
+ /**
2328
+ * Scale 3D
2329
+ * @see https://tailwindcss.com/docs/scale
2330
+ */
2331
+ "scale-3d": ["scale-3d"],
2332
+ /**
2333
+ * Skew
2334
+ * @see https://tailwindcss.com/docs/skew
2335
+ */
2336
+ skew: [{
2337
+ skew: be()
2338
+ }],
2339
+ /**
2340
+ * Skew X
2341
+ * @see https://tailwindcss.com/docs/skew
2342
+ */
2343
+ "skew-x": [{
2344
+ "skew-x": be()
2345
+ }],
2346
+ /**
2347
+ * Skew Y
2348
+ * @see https://tailwindcss.com/docs/skew
2349
+ */
2350
+ "skew-y": [{
2351
+ "skew-y": be()
2352
+ }],
2353
+ /**
2354
+ * Transform
2355
+ * @see https://tailwindcss.com/docs/transform
2356
+ */
2357
+ transform: [{
2358
+ transform: [d, c, "", "none", "gpu", "cpu"]
2359
+ }],
2360
+ /**
2361
+ * Transform Origin
2362
+ * @see https://tailwindcss.com/docs/transform-origin
2363
+ */
2364
+ "transform-origin": [{
2365
+ origin: P()
2366
+ }],
2367
+ /**
2368
+ * Transform Style
2369
+ * @see https://tailwindcss.com/docs/transform-style
2370
+ */
2371
+ "transform-style": [{
2372
+ transform: ["3d", "flat"]
2373
+ }],
2374
+ /**
2375
+ * Translate
2376
+ * @see https://tailwindcss.com/docs/translate
2377
+ */
2378
+ translate: [{
2379
+ translate: ae()
2380
+ }],
2381
+ /**
2382
+ * Translate X
2383
+ * @see https://tailwindcss.com/docs/translate
2384
+ */
2385
+ "translate-x": [{
2386
+ "translate-x": ae()
2387
+ }],
2388
+ /**
2389
+ * Translate Y
2390
+ * @see https://tailwindcss.com/docs/translate
2391
+ */
2392
+ "translate-y": [{
2393
+ "translate-y": ae()
2394
+ }],
2395
+ /**
2396
+ * Translate Z
2397
+ * @see https://tailwindcss.com/docs/translate
2398
+ */
2399
+ "translate-z": [{
2400
+ "translate-z": ae()
2401
+ }],
2402
+ /**
2403
+ * Translate None
2404
+ * @see https://tailwindcss.com/docs/translate
2405
+ */
2406
+ "translate-none": ["translate-none"],
2407
+ // ---------------------
2408
+ // --- Interactivity ---
2409
+ // ---------------------
2410
+ /**
2411
+ * Accent Color
2412
+ * @see https://tailwindcss.com/docs/accent-color
2413
+ */
2414
+ accent: [{
2415
+ accent: p()
2416
+ }],
2417
+ /**
2418
+ * Appearance
2419
+ * @see https://tailwindcss.com/docs/appearance
2420
+ */
2421
+ appearance: [{
2422
+ appearance: ["none", "auto"]
2423
+ }],
2424
+ /**
2425
+ * Caret Color
2426
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
2427
+ */
2428
+ "caret-color": [{
2429
+ caret: p()
2430
+ }],
2431
+ /**
2432
+ * Color Scheme
2433
+ * @see https://tailwindcss.com/docs/color-scheme
2434
+ */
2435
+ "color-scheme": [{
2436
+ scheme: ["normal", "dark", "light", "light-dark", "only-dark", "only-light"]
2437
+ }],
2438
+ /**
2439
+ * Cursor
2440
+ * @see https://tailwindcss.com/docs/cursor
2441
+ */
2442
+ cursor: [{
2443
+ cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", d, c]
2444
+ }],
2445
+ /**
2446
+ * Field Sizing
2447
+ * @see https://tailwindcss.com/docs/field-sizing
2448
+ */
2449
+ "field-sizing": [{
2450
+ "field-sizing": ["fixed", "content"]
2451
+ }],
2452
+ /**
2453
+ * Pointer Events
2454
+ * @see https://tailwindcss.com/docs/pointer-events
2455
+ */
2456
+ "pointer-events": [{
2457
+ "pointer-events": ["auto", "none"]
2458
+ }],
2459
+ /**
2460
+ * Resize
2461
+ * @see https://tailwindcss.com/docs/resize
2462
+ */
2463
+ resize: [{
2464
+ resize: ["none", "", "y", "x"]
2465
+ }],
2466
+ /**
2467
+ * Scroll Behavior
2468
+ * @see https://tailwindcss.com/docs/scroll-behavior
2469
+ */
2470
+ "scroll-behavior": [{
2471
+ scroll: ["auto", "smooth"]
2472
+ }],
2473
+ /**
2474
+ * Scroll Margin
2475
+ * @see https://tailwindcss.com/docs/scroll-margin
2476
+ */
2477
+ "scroll-m": [{
2478
+ "scroll-m": g()
2479
+ }],
2480
+ /**
2481
+ * Scroll Margin X
2482
+ * @see https://tailwindcss.com/docs/scroll-margin
2483
+ */
2484
+ "scroll-mx": [{
2485
+ "scroll-mx": g()
2486
+ }],
2487
+ /**
2488
+ * Scroll Margin Y
2489
+ * @see https://tailwindcss.com/docs/scroll-margin
2490
+ */
2491
+ "scroll-my": [{
2492
+ "scroll-my": g()
2493
+ }],
2494
+ /**
2495
+ * Scroll Margin Start
2496
+ * @see https://tailwindcss.com/docs/scroll-margin
2497
+ */
2498
+ "scroll-ms": [{
2499
+ "scroll-ms": g()
2500
+ }],
2501
+ /**
2502
+ * Scroll Margin End
2503
+ * @see https://tailwindcss.com/docs/scroll-margin
2504
+ */
2505
+ "scroll-me": [{
2506
+ "scroll-me": g()
2507
+ }],
2508
+ /**
2509
+ * Scroll Margin Top
2510
+ * @see https://tailwindcss.com/docs/scroll-margin
2511
+ */
2512
+ "scroll-mt": [{
2513
+ "scroll-mt": g()
2514
+ }],
2515
+ /**
2516
+ * Scroll Margin Right
2517
+ * @see https://tailwindcss.com/docs/scroll-margin
2518
+ */
2519
+ "scroll-mr": [{
2520
+ "scroll-mr": g()
2521
+ }],
2522
+ /**
2523
+ * Scroll Margin Bottom
2524
+ * @see https://tailwindcss.com/docs/scroll-margin
2525
+ */
2526
+ "scroll-mb": [{
2527
+ "scroll-mb": g()
2528
+ }],
2529
+ /**
2530
+ * Scroll Margin Left
2531
+ * @see https://tailwindcss.com/docs/scroll-margin
2532
+ */
2533
+ "scroll-ml": [{
2534
+ "scroll-ml": g()
2535
+ }],
2536
+ /**
2537
+ * Scroll Padding
2538
+ * @see https://tailwindcss.com/docs/scroll-padding
2539
+ */
2540
+ "scroll-p": [{
2541
+ "scroll-p": g()
2542
+ }],
2543
+ /**
2544
+ * Scroll Padding X
2545
+ * @see https://tailwindcss.com/docs/scroll-padding
2546
+ */
2547
+ "scroll-px": [{
2548
+ "scroll-px": g()
2549
+ }],
2550
+ /**
2551
+ * Scroll Padding Y
2552
+ * @see https://tailwindcss.com/docs/scroll-padding
2553
+ */
2554
+ "scroll-py": [{
2555
+ "scroll-py": g()
2556
+ }],
2557
+ /**
2558
+ * Scroll Padding Start
2559
+ * @see https://tailwindcss.com/docs/scroll-padding
2560
+ */
2561
+ "scroll-ps": [{
2562
+ "scroll-ps": g()
2563
+ }],
2564
+ /**
2565
+ * Scroll Padding End
2566
+ * @see https://tailwindcss.com/docs/scroll-padding
2567
+ */
2568
+ "scroll-pe": [{
2569
+ "scroll-pe": g()
2570
+ }],
2571
+ /**
2572
+ * Scroll Padding Top
2573
+ * @see https://tailwindcss.com/docs/scroll-padding
2574
+ */
2575
+ "scroll-pt": [{
2576
+ "scroll-pt": g()
2577
+ }],
2578
+ /**
2579
+ * Scroll Padding Right
2580
+ * @see https://tailwindcss.com/docs/scroll-padding
2581
+ */
2582
+ "scroll-pr": [{
2583
+ "scroll-pr": g()
2584
+ }],
2585
+ /**
2586
+ * Scroll Padding Bottom
2587
+ * @see https://tailwindcss.com/docs/scroll-padding
2588
+ */
2589
+ "scroll-pb": [{
2590
+ "scroll-pb": g()
2591
+ }],
2592
+ /**
2593
+ * Scroll Padding Left
2594
+ * @see https://tailwindcss.com/docs/scroll-padding
2595
+ */
2596
+ "scroll-pl": [{
2597
+ "scroll-pl": g()
2598
+ }],
2599
+ /**
2600
+ * Scroll Snap Align
2601
+ * @see https://tailwindcss.com/docs/scroll-snap-align
2602
+ */
2603
+ "snap-align": [{
2604
+ snap: ["start", "end", "center", "align-none"]
2605
+ }],
2606
+ /**
2607
+ * Scroll Snap Stop
2608
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
2609
+ */
2610
+ "snap-stop": [{
2611
+ snap: ["normal", "always"]
2612
+ }],
2613
+ /**
2614
+ * Scroll Snap Type
2615
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2616
+ */
2617
+ "snap-type": [{
2618
+ snap: ["none", "x", "y", "both"]
2619
+ }],
2620
+ /**
2621
+ * Scroll Snap Type Strictness
2622
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2623
+ */
2624
+ "snap-strictness": [{
2625
+ snap: ["mandatory", "proximity"]
2626
+ }],
2627
+ /**
2628
+ * Touch Action
2629
+ * @see https://tailwindcss.com/docs/touch-action
2630
+ */
2631
+ touch: [{
2632
+ touch: ["auto", "none", "manipulation"]
2633
+ }],
2634
+ /**
2635
+ * Touch Action X
2636
+ * @see https://tailwindcss.com/docs/touch-action
2637
+ */
2638
+ "touch-x": [{
2639
+ "touch-pan": ["x", "left", "right"]
2640
+ }],
2641
+ /**
2642
+ * Touch Action Y
2643
+ * @see https://tailwindcss.com/docs/touch-action
2644
+ */
2645
+ "touch-y": [{
2646
+ "touch-pan": ["y", "up", "down"]
2647
+ }],
2648
+ /**
2649
+ * Touch Action Pinch Zoom
2650
+ * @see https://tailwindcss.com/docs/touch-action
2651
+ */
2652
+ "touch-pz": ["touch-pinch-zoom"],
2653
+ /**
2654
+ * User Select
2655
+ * @see https://tailwindcss.com/docs/user-select
2656
+ */
2657
+ select: [{
2658
+ select: ["none", "text", "all", "auto"]
2659
+ }],
2660
+ /**
2661
+ * Will Change
2662
+ * @see https://tailwindcss.com/docs/will-change
2663
+ */
2664
+ "will-change": [{
2665
+ "will-change": ["auto", "scroll", "contents", "transform", d, c]
2666
+ }],
2667
+ // -----------
2668
+ // --- SVG ---
2669
+ // -----------
2670
+ /**
2671
+ * Fill
2672
+ * @see https://tailwindcss.com/docs/fill
2673
+ */
2674
+ fill: [{
2675
+ fill: ["none", ...p()]
2676
+ }],
2677
+ /**
2678
+ * Stroke Width
2679
+ * @see https://tailwindcss.com/docs/stroke-width
2680
+ */
2681
+ "stroke-w": [{
2682
+ stroke: [v, K, W, ve]
2683
+ }],
2684
+ /**
2685
+ * Stroke
2686
+ * @see https://tailwindcss.com/docs/stroke
2687
+ */
2688
+ stroke: [{
2689
+ stroke: ["none", ...p()]
2690
+ }],
2691
+ // ---------------------
2692
+ // --- Accessibility ---
2693
+ // ---------------------
2694
+ /**
2695
+ * Forced Color Adjust
2696
+ * @see https://tailwindcss.com/docs/forced-color-adjust
2697
+ */
2698
+ "forced-color-adjust": [{
2699
+ "forced-color-adjust": ["auto", "none"]
2700
+ }]
2701
+ },
2702
+ conflictingClassGroups: {
2703
+ overflow: ["overflow-x", "overflow-y"],
2704
+ overscroll: ["overscroll-x", "overscroll-y"],
2705
+ inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
2706
+ "inset-x": ["right", "left"],
2707
+ "inset-y": ["top", "bottom"],
2708
+ flex: ["basis", "grow", "shrink"],
2709
+ gap: ["gap-x", "gap-y"],
2710
+ p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
2711
+ px: ["pr", "pl"],
2712
+ py: ["pt", "pb"],
2713
+ m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
2714
+ mx: ["mr", "ml"],
2715
+ my: ["mt", "mb"],
2716
+ size: ["w", "h"],
2717
+ "font-size": ["leading"],
2718
+ "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
2719
+ "fvn-ordinal": ["fvn-normal"],
2720
+ "fvn-slashed-zero": ["fvn-normal"],
2721
+ "fvn-figure": ["fvn-normal"],
2722
+ "fvn-spacing": ["fvn-normal"],
2723
+ "fvn-fraction": ["fvn-normal"],
2724
+ "line-clamp": ["display", "overflow"],
2725
+ rounded: ["rounded-s", "rounded-e", "rounded-t", "rounded-r", "rounded-b", "rounded-l", "rounded-ss", "rounded-se", "rounded-ee", "rounded-es", "rounded-tl", "rounded-tr", "rounded-br", "rounded-bl"],
2726
+ "rounded-s": ["rounded-ss", "rounded-es"],
2727
+ "rounded-e": ["rounded-se", "rounded-ee"],
2728
+ "rounded-t": ["rounded-tl", "rounded-tr"],
2729
+ "rounded-r": ["rounded-tr", "rounded-br"],
2730
+ "rounded-b": ["rounded-br", "rounded-bl"],
2731
+ "rounded-l": ["rounded-tl", "rounded-bl"],
2732
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
2733
+ "border-w": ["border-w-x", "border-w-y", "border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
2734
+ "border-w-x": ["border-w-r", "border-w-l"],
2735
+ "border-w-y": ["border-w-t", "border-w-b"],
2736
+ "border-color": ["border-color-x", "border-color-y", "border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"],
2737
+ "border-color-x": ["border-color-r", "border-color-l"],
2738
+ "border-color-y": ["border-color-t", "border-color-b"],
2739
+ translate: ["translate-x", "translate-y", "translate-none"],
2740
+ "translate-none": ["translate", "translate-x", "translate-y", "translate-z"],
2741
+ "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
2742
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
2743
+ "scroll-my": ["scroll-mt", "scroll-mb"],
2744
+ "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
2745
+ "scroll-px": ["scroll-pr", "scroll-pl"],
2746
+ "scroll-py": ["scroll-pt", "scroll-pb"],
2747
+ touch: ["touch-x", "touch-y", "touch-pz"],
2748
+ "touch-x": ["touch"],
2749
+ "touch-y": ["touch"],
2750
+ "touch-pz": ["touch"]
2751
+ },
2752
+ conflictingClassGroupModifiers: {
2753
+ "font-size": ["leading"]
2754
+ },
2755
+ orderSensitiveModifiers: ["*", "**", "after", "backdrop", "before", "details-content", "file", "first-letter", "first-line", "marker", "placeholder", "selection"]
2756
+ };
2757
+ }, ro = /* @__PURE__ */ Nt(oo), no = /* @__PURE__ */ it({
2758
+ __name: "MagicCanvas",
2759
+ props: {
2760
+ canvasRef: { type: Function },
2761
+ cleanup: { type: Function }
2762
+ },
2763
+ setup(e) {
2764
+ const t = e, o = B();
2765
+ return Z(() => {
2766
+ if (!o.value)
2767
+ throw new Error("Canvas not found in DOM. Check ref link.");
2768
+ t.canvasRef(o.value);
2769
+ }), lt(() => {
2770
+ if (!o.value)
2771
+ throw new Error("Canvas not found in DOM. Check ref link.");
2772
+ t.cleanup(o.value);
2773
+ }), (r, n) => (dt(), ct("canvas", ut({
2774
+ ...r.$attrs,
2775
+ class: Fe(ro)(r.$attrs.class, ["w-full", "h-full"])
2776
+ }, {
2777
+ ref_key: "canvas",
2778
+ ref: o
2779
+ }), " Sorry, your browser does not support canvas. ", 16));
2780
+ }
2781
+ });
2782
+ function ot(e) {
2783
+ return mt() ? (ft(e), !0) : !1;
2784
+ }
2785
+ const so = typeof window < "u" && typeof document < "u";
2786
+ typeof WorkerGlobalScope < "u" && globalThis instanceof WorkerGlobalScope;
2787
+ const ao = Object.prototype.toString, io = (e) => ao.call(e) === "[object Object]", lo = () => {
2788
+ };
2789
+ function co(...e) {
2790
+ if (e.length !== 1)
2791
+ return pt(...e);
2792
+ const t = e[0];
2793
+ return typeof t == "function" ? Be(gt(() => ({ get: t, set: lo }))) : B(t);
2794
+ }
2795
+ function uo(e, t) {
2796
+ function o(...r) {
2797
+ return new Promise((n, a) => {
2798
+ Promise.resolve(e(() => t.apply(this, r), { fn: t, thisArg: this, args: r })).then(n).catch(a);
2799
+ });
2800
+ }
2801
+ return o;
2802
+ }
2803
+ const rt = (e) => e();
2804
+ function mo(e = rt, t = {}) {
2805
+ const {
2806
+ initialState: o = "active"
2807
+ } = t, r = co(o === "active");
2808
+ function n() {
2809
+ r.value = !1;
2810
+ }
2811
+ function a() {
2812
+ r.value = !0;
2813
+ }
2814
+ const s = (...i) => {
2815
+ r.value && e(...i);
2816
+ };
2817
+ return { isActive: Be(r), pause: n, resume: a, eventFilter: s };
2818
+ }
2819
+ function ue(e) {
2820
+ return Array.isArray(e) ? e : [e];
2821
+ }
2822
+ function fo(e) {
2823
+ return je();
2824
+ }
2825
+ function po(e, t, o = {}) {
2826
+ const {
2827
+ eventFilter: r = rt,
2828
+ ...n
2829
+ } = o;
2830
+ return H(
2831
+ e,
2832
+ uo(
2833
+ r,
2834
+ t
2835
+ ),
2836
+ n
2837
+ );
2838
+ }
2839
+ function go(e, t, o = {}) {
2840
+ const {
2841
+ eventFilter: r,
2842
+ initialState: n = "active",
2843
+ ...a
2844
+ } = o, { eventFilter: s, pause: i, resume: l, isActive: u } = mo(r, { initialState: n });
2845
+ return { stop: po(
2846
+ e,
2847
+ t,
2848
+ {
2849
+ ...a,
2850
+ eventFilter: s
2851
+ }
2852
+ ), pause: i, resume: l, isActive: u };
2853
+ }
2854
+ function nt(e, t = !0, o) {
2855
+ fo() ? Z(e, o) : t ? e() : We(e);
2856
+ }
2857
+ function bo(e, t, o) {
2858
+ return H(
2859
+ e,
2860
+ t,
2861
+ {
2862
+ ...o,
2863
+ immediate: !0
2864
+ }
2865
+ );
2866
+ }
2867
+ const U = so ? window : void 0;
2868
+ function j(e) {
2869
+ var t;
2870
+ const o = D(e);
2871
+ return (t = o?.$el) != null ? t : o;
2872
+ }
2873
+ function Le(...e) {
2874
+ const t = [], o = () => {
2875
+ t.forEach((i) => i()), t.length = 0;
2876
+ }, r = (i, l, u, b) => (i.addEventListener(l, u, b), () => i.removeEventListener(l, u, b)), n = Q(() => {
2877
+ const i = ue(D(e[0])).filter((l) => l != null);
2878
+ return i.every((l) => typeof l != "string") ? i : void 0;
2879
+ }), a = bo(
2880
+ () => {
2881
+ var i, l;
2882
+ return [
2883
+ (l = (i = n.value) == null ? void 0 : i.map((u) => j(u))) != null ? l : [U].filter((u) => u != null),
2884
+ ue(D(n.value ? e[1] : e[0])),
2885
+ ue(Fe(n.value ? e[2] : e[1])),
2886
+ // @ts-expect-error - TypeScript gets the correct types, but somehow still complains
2887
+ D(n.value ? e[3] : e[2])
2888
+ ];
2889
+ },
2890
+ ([i, l, u, b]) => {
2891
+ if (o(), !i?.length || !l?.length || !u?.length)
2892
+ return;
2893
+ const m = io(b) ? { ...b } : b;
2894
+ t.push(
2895
+ ...i.flatMap(
2896
+ (w) => l.flatMap(
2897
+ (C) => u.map((f) => r(w, C, f, m))
2898
+ )
2899
+ )
2900
+ );
2901
+ },
2902
+ { flush: "post" }
2903
+ ), s = () => {
2904
+ a(), o();
2905
+ };
2906
+ return ot(o), s;
2907
+ }
2908
+ // @__NO_SIDE_EFFECTS__
2909
+ function ho() {
2910
+ const e = fe(!1), t = je();
2911
+ return t && Z(() => {
2912
+ e.value = !0;
2913
+ }, t), e;
2914
+ }
2915
+ // @__NO_SIDE_EFFECTS__
2916
+ function vo(e) {
2917
+ const t = /* @__PURE__ */ ho();
2918
+ return Q(() => (t.value, !!e()));
2919
+ }
2920
+ const ce = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, de = "__vueuse_ssr_handlers__", wo = /* @__PURE__ */ yo();
2921
+ function yo() {
2922
+ return de in ce || (ce[de] = ce[de] || {}), ce[de];
2923
+ }
2924
+ function ko(e, t) {
2925
+ return wo[e] || t;
2926
+ }
2927
+ function xo(e) {
2928
+ return e == null ? "any" : e instanceof Set ? "set" : e instanceof Map ? "map" : e instanceof Date ? "date" : typeof e == "boolean" ? "boolean" : typeof e == "string" ? "string" : typeof e == "object" ? "object" : Number.isNaN(e) ? "any" : "number";
2929
+ }
2930
+ const Co = {
2931
+ boolean: {
2932
+ read: (e) => e === "true",
2933
+ write: (e) => String(e)
2934
+ },
2935
+ object: {
2936
+ read: (e) => JSON.parse(e),
2937
+ write: (e) => JSON.stringify(e)
2938
+ },
2939
+ number: {
2940
+ read: (e) => Number.parseFloat(e),
2941
+ write: (e) => String(e)
2942
+ },
2943
+ any: {
2944
+ read: (e) => e,
2945
+ write: (e) => String(e)
2946
+ },
2947
+ string: {
2948
+ read: (e) => e,
2949
+ write: (e) => String(e)
2950
+ },
2951
+ map: {
2952
+ read: (e) => new Map(JSON.parse(e)),
2953
+ write: (e) => JSON.stringify(Array.from(e.entries()))
2954
+ },
2955
+ set: {
2956
+ read: (e) => new Set(JSON.parse(e)),
2957
+ write: (e) => JSON.stringify(Array.from(e))
2958
+ },
2959
+ date: {
2960
+ read: (e) => new Date(e),
2961
+ write: (e) => e.toISOString()
2962
+ }
2963
+ }, Ne = "vueuse-storage";
2964
+ function So(e, t, o, r = {}) {
2965
+ var n;
2966
+ const {
2967
+ flush: a = "pre",
2968
+ deep: s = !0,
2969
+ listenToStorageChanges: i = !0,
2970
+ writeDefaults: l = !0,
2971
+ mergeDefaults: u = !1,
2972
+ shallow: b,
2973
+ window: m = U,
2974
+ eventFilter: w,
2975
+ onError: C = (h) => {
2976
+ console.error(h);
2977
+ },
2978
+ initOnMounted: f
2979
+ } = r, y = (b ? fe : B)(typeof t == "function" ? t() : t), k = Q(() => D(e));
2980
+ if (!o)
2981
+ try {
2982
+ o = ko("getDefaultStorage", () => {
2983
+ var h;
2984
+ return (h = U) == null ? void 0 : h.localStorage;
2985
+ })();
2986
+ } catch (h) {
2987
+ C(h);
2988
+ }
2989
+ if (!o)
2990
+ return y;
2991
+ const A = D(t), N = xo(A), E = (n = r.serializer) != null ? n : Co[N], { pause: I, resume: P } = go(
2992
+ y,
2993
+ (h) => ee(h),
2994
+ { flush: a, deep: s, eventFilter: w }
2995
+ );
2996
+ H(k, () => L(), { flush: a });
2997
+ let Y = !1;
2998
+ const X = (h) => {
2999
+ f && !Y || L(h);
3000
+ }, g = (h) => {
3001
+ f && !Y || oe(h);
3002
+ };
3003
+ m && i && (o instanceof Storage ? Le(m, "storage", X, { passive: !0 }) : Le(m, Ne, g)), f ? nt(() => {
3004
+ Y = !0, L();
3005
+ }) : L();
3006
+ function O(h, x) {
3007
+ if (m) {
3008
+ const S = {
3009
+ key: k.value,
3010
+ oldValue: h,
3011
+ newValue: x,
3012
+ storageArea: o
3013
+ };
3014
+ m.dispatchEvent(o instanceof Storage ? new StorageEvent("storage", S) : new CustomEvent(Ne, {
3015
+ detail: S
3016
+ }));
3017
+ }
3018
+ }
3019
+ function ee(h) {
3020
+ try {
3021
+ const x = o.getItem(k.value);
3022
+ if (h == null)
3023
+ O(x, null), o.removeItem(k.value);
3024
+ else {
3025
+ const S = E.write(h);
3026
+ x !== S && (o.setItem(k.value, S), O(x, S));
3027
+ }
3028
+ } catch (x) {
3029
+ C(x);
3030
+ }
3031
+ }
3032
+ function te(h) {
3033
+ const x = h ? h.newValue : o.getItem(k.value);
3034
+ if (x == null)
3035
+ return l && A != null && o.setItem(k.value, E.write(A)), A;
3036
+ if (!h && u) {
3037
+ const S = E.read(x);
3038
+ return typeof u == "function" ? u(S, A) : N === "object" && !Array.isArray(S) ? { ...A, ...S } : S;
3039
+ } else return typeof x != "string" ? x : E.read(x);
3040
+ }
3041
+ function L(h) {
3042
+ if (!(h && h.storageArea !== o)) {
3043
+ if (h && h.key == null) {
3044
+ y.value = A;
3045
+ return;
3046
+ }
3047
+ if (!(h && h.key !== k.value)) {
3048
+ I();
3049
+ try {
3050
+ const x = E.write(y.value);
3051
+ (h === void 0 || h?.newValue !== x) && (y.value = te(h));
3052
+ } catch (x) {
3053
+ C(x);
3054
+ } finally {
3055
+ h ? We(P) : P();
3056
+ }
3057
+ }
3058
+ }
3059
+ }
3060
+ function oe(h) {
3061
+ L(h.detail);
3062
+ }
3063
+ return y;
3064
+ }
3065
+ function zo(e, t, o = {}) {
3066
+ const { window: r = U, ...n } = o;
3067
+ let a;
3068
+ const s = /* @__PURE__ */ vo(() => r && "ResizeObserver" in r), i = () => {
3069
+ a && (a.disconnect(), a = void 0);
3070
+ }, l = Q(() => {
3071
+ const m = D(e);
3072
+ return Array.isArray(m) ? m.map((w) => j(w)) : [j(m)];
3073
+ }), u = H(
3074
+ l,
3075
+ (m) => {
3076
+ if (i(), s.value && r) {
3077
+ a = new ResizeObserver(t);
3078
+ for (const w of m)
3079
+ w && a.observe(w, n);
3080
+ }
3081
+ },
3082
+ { immediate: !0, flush: "post" }
3083
+ ), b = () => {
3084
+ i(), u();
3085
+ };
3086
+ return ot(b), {
3087
+ isSupported: s,
3088
+ stop: b
3089
+ };
3090
+ }
3091
+ function Ao(e, t = { width: 0, height: 0 }, o = {}) {
3092
+ const { window: r = U, box: n = "content-box" } = o, a = Q(() => {
3093
+ var m, w;
3094
+ return (w = (m = j(e)) == null ? void 0 : m.namespaceURI) == null ? void 0 : w.includes("svg");
3095
+ }), s = fe(t.width), i = fe(t.height), { stop: l } = zo(
3096
+ e,
3097
+ ([m]) => {
3098
+ const w = n === "border-box" ? m.borderBoxSize : n === "content-box" ? m.contentBoxSize : m.devicePixelContentBoxSize;
3099
+ if (r && a.value) {
3100
+ const C = j(e);
3101
+ if (C) {
3102
+ const f = C.getBoundingClientRect();
3103
+ s.value = f.width, i.value = f.height;
3104
+ }
3105
+ } else if (w) {
3106
+ const C = ue(w);
3107
+ s.value = C.reduce((f, { inlineSize: y }) => f + y, 0), i.value = C.reduce((f, { blockSize: y }) => f + y, 0);
3108
+ } else
3109
+ s.value = m.contentRect.width, i.value = m.contentRect.height;
3110
+ },
3111
+ o
3112
+ );
3113
+ nt(() => {
3114
+ const m = j(e);
3115
+ m && (s.value = "offsetWidth" in m ? m.offsetWidth : t.width, i.value = "offsetHeight" in m ? m.offsetHeight : t.height);
3116
+ });
3117
+ const u = H(
3118
+ () => j(e),
3119
+ (m) => {
3120
+ s.value = m ? t.width : 0, i.value = m ? t.height : 0;
3121
+ }
3122
+ );
3123
+ function b() {
3124
+ l(), u();
3125
+ }
3126
+ return {
3127
+ width: s,
3128
+ height: i,
3129
+ stop: b
3130
+ };
3131
+ }
3132
+ function we(e, t, o = {}) {
3133
+ const { window: r = U } = o;
3134
+ return So(e, t, r?.localStorage, o);
3135
+ }
3136
+ const Se = () => window.devicePixelRatio ?? 1, Mo = (e, t) => {
3137
+ const o = t.translateX ?? 0, r = t.translateY ?? 0;
3138
+ (o !== 0 || r !== 0) && e.translate(o, r);
3139
+ const n = t.scaleX ?? 1, a = t.scaleY ?? 1;
3140
+ (n !== 1 || a !== 1) && e.scale(n, a);
3141
+ const s = t.skewX ?? 0, i = t.skewY ?? 0;
3142
+ (s !== 0 || i !== 0) && e.transform(1, i, s, 1, 0, 0);
3143
+ }, st = (e) => {
3144
+ if (!e)
3145
+ throw new Error("canvas not found");
3146
+ const t = "value" in e ? e.value : e;
3147
+ if (!t)
3148
+ throw new Error("canvas not found");
3149
+ const o = t.getContext("2d");
3150
+ if (!o)
3151
+ throw new Error("2d context not found");
3152
+ return o;
3153
+ }, Ro = {
3154
+ middle: 1
3155
+ }, at = (e) => {
3156
+ const { a: t, e: o, f: r } = e.getTransform(), n = Se(), a = t / n, s = o / n, i = r / n;
3157
+ return { panX: s, panY: i, zoom: a };
3158
+ }, xe = (e, t) => {
3159
+ const o = t.canvas.getBoundingClientRect(), r = e.clientX - o.left, n = e.clientY - o.top, { panX: a, panY: s, zoom: i } = at(t), l = (r - a) / i, u = (n - s) / i;
3160
+ return { x: l, y: u, zoom: i };
3161
+ }, Xo = (e, t) => {
3162
+ const { panX: o, panY: r, zoom: n } = at(t), { x: a, y: s } = e;
3163
+ return {
3164
+ clientX: a * n + o,
3165
+ clientY: s * n + r,
3166
+ zoom: n
3167
+ };
3168
+ }, Eo = (e) => {
3169
+ const t = B({ x: 0, y: 0 }), o = (r) => t.value = xe(r, st(e));
3170
+ return Z(() => {
3171
+ if (!e.value)
3172
+ throw new Error("Canvas not found in DOM. Check ref link.");
3173
+ e.value.addEventListener("mousemove", o), e.value.addEventListener("wheel", o);
3174
+ }), {
3175
+ coordinates: t,
3176
+ cleanup: (r) => {
3177
+ r.removeEventListener("mousemove", o), r.removeEventListener("wheel", o);
3178
+ }
3179
+ };
3180
+ }, $ = 100, _e = 0.6, me = 0.25, To = (e) => {
3181
+ if (e <= me) return "00";
3182
+ if (e >= _e) return "";
3183
+ const t = String(
3184
+ Math.floor(
3185
+ (e - me) / (_e - me) * 100
3186
+ )
3187
+ );
3188
+ return t.length === 1 ? `0${t}` : t;
3189
+ }, Po = ({ panX: e, panY: t, zoom: o }, r) => ({ draw: (a) => {
3190
+ if (o.value <= me) return;
3191
+ const s = xe(
3192
+ {
3193
+ clientX: 0,
3194
+ clientY: 0
3195
+ },
3196
+ a
3197
+ ), i = xe(
3198
+ {
3199
+ clientX: window.innerWidth + $,
3200
+ clientY: window.innerHeight + $
3201
+ },
3202
+ a
3203
+ ), l = e.value / o.value % $, u = t.value / o.value % $;
3204
+ for (let b = s.x + l; b < i.x; b += $)
3205
+ for (let m = s.y + u; m < i.y; m += $)
3206
+ r.value(a, { x: b, y: m }, To(o.value));
3207
+ } }), ye = {
3208
+ /** camera `panX` state in magic canvas - {@link Camera.state} */
3209
+ cameraPanX: (e) => `camera-pan-x-${e}`,
3210
+ /** camera `panY` state in magic canvas - {@link Camera.state} */
3211
+ cameraPanY: (e) => `camera-pan-y-${e}`,
3212
+ /** camera `zoom` state in magic canvas - {@link Camera.state} */
3213
+ cameraZoom: (e) => `camera-zoom-${e}`
3214
+ }, Oo = 0.2, Io = 10, Yo = 0.02, Ge = 1, Lo = (e, t) => {
3215
+ const o = we(ye.cameraPanX(t), 0), r = we(ye.cameraPanY(t), 0), n = we(ye.cameraZoom(t), 1), a = (f) => {
3216
+ const y = e.value.getBoundingClientRect(), k = f.clientX - y.left, A = f.clientY - y.top, N = Math.max(-100, Math.min(100, f.deltaY)), E = Math.exp(-N * Yo), I = Math.min(
3217
+ Io,
3218
+ Math.max(Oo, n.value * E)
3219
+ ), P = I / n.value;
3220
+ o.value = k - (k - o.value) * P, r.value = A - (A - r.value) * P, n.value = I;
3221
+ }, s = (f) => {
3222
+ o.value -= f.deltaX * Ge, r.value -= f.deltaY * Ge;
3223
+ }, i = (f) => {
3224
+ f.preventDefault(), (!f.ctrlKey ? s : a)(f);
3225
+ };
3226
+ let l = 0, u = 0, b = !1;
3227
+ const m = (f) => {
3228
+ b = f.button === Ro.middle, b && (l = f.clientX, u = f.clientY);
3229
+ }, w = (f) => {
3230
+ b && (s({
3231
+ deltaX: l - f.clientX,
3232
+ deltaY: u - f.clientY
3233
+ }), l = f.clientX, u = f.clientY);
3234
+ }, C = () => {
3235
+ l = 0, u = 0, b = !1;
3236
+ };
3237
+ return Z(() => {
3238
+ if (!e.value) throw new Error("canvas not found in DOM");
3239
+ e.value.addEventListener("wheel", i, { passive: !1 }), e.value.addEventListener("mousedown", m), e.value.addEventListener("mousemove", w), document.addEventListener("mouseup", C);
3240
+ }), {
3241
+ actions: {
3242
+ zoomIn: (f = 12.5) => a({
3243
+ deltaY: -f,
3244
+ clientX: window.innerWidth / 2,
3245
+ clientY: window.innerHeight / 2
3246
+ }),
3247
+ zoomOut: (f = 12.5) => a({
3248
+ deltaY: f,
3249
+ clientX: window.innerWidth / 2,
3250
+ clientY: window.innerHeight / 2
3251
+ })
3252
+ },
3253
+ state: {
3254
+ panX: o,
3255
+ panY: r,
3256
+ zoom: n
3257
+ },
3258
+ getTransform: () => ({
3259
+ scaleX: n.value,
3260
+ scaleY: n.value,
3261
+ translateX: o.value,
3262
+ translateY: r.value
3263
+ }),
3264
+ cleanup: (f) => {
3265
+ f.removeEventListener("wheel", i), f.removeEventListener("mousedown", m), f.removeEventListener("mousemove", w), document.removeEventListener("mouseup", C);
3266
+ }
3267
+ };
3268
+ }, No = (e, t) => {
3269
+ const { getTransform: o, ...r } = Lo(
3270
+ e,
3271
+ t
3272
+ ), n = Se(), a = {
3273
+ scaleX: n,
3274
+ scaleY: n
3275
+ };
3276
+ return {
3277
+ ...r,
3278
+ transformAndClear: (s) => {
3279
+ s.resetTransform(), s.clearRect(0, 0, s.canvas.width, s.canvas.height);
3280
+ const i = [a, o()];
3281
+ for (const l of i) Mo(s, l);
3282
+ }
3283
+ };
3284
+ }, _o = 60, Xe = (e) => {
3285
+ if (!e) throw new Error("Canvas not found in DOM. Check ref link.");
3286
+ const t = Se(), o = e.getBoundingClientRect();
3287
+ e.width = o.width * t, e.height = o.height * t;
3288
+ }, Fo = (e = {}) => {
3289
+ const t = B(), o = Ao(t), r = B(() => {
3290
+ }), n = B(() => {
3291
+ });
3292
+ let a;
3293
+ Z(() => {
3294
+ Xe(t.value), a = setInterval(m, 1e3 / _o);
3295
+ }), H(
3296
+ [o.width, o.height],
3297
+ () => Xe(t.value)
3298
+ );
3299
+ const { cleanup: s, ...i } = No(
3300
+ t,
3301
+ e?.storageKey ?? "[default-storage-key]"
3302
+ ), { coordinates: l, cleanup: u } = Eo(t), b = Po(i.state, n), m = () => {
3303
+ const w = st(t);
3304
+ i.transformAndClear(w), b.draw(w), r.value(w);
3305
+ };
3306
+ return {
3307
+ canvas: t,
3308
+ camera: i,
3309
+ cursorCoordinates: l,
3310
+ ref: {
3311
+ canvasRef: (w) => t.value = w,
3312
+ cleanup: (w) => {
3313
+ u(w), s(w), clearInterval(a);
3314
+ }
3315
+ },
3316
+ draw: {
3317
+ content: r,
3318
+ backgroundPattern: n
3319
+ }
3320
+ };
3321
+ }, Wo = {
3322
+ install(e) {
3323
+ e.component("MagicCanvas", no);
3324
+ }
3325
+ };
3326
+ export {
3327
+ no as MagicCanvas,
3328
+ Wo as MagicCanvasPlugin,
3329
+ at as getCanvasTransform,
3330
+ Xo as getClientCoordinates,
3331
+ Se as getDevicePixelRatio,
3332
+ xe as getMagicCoordinates,
3333
+ Fo as useMagicCanvas,
3334
+ Eo as useMagicCoordinates
3335
+ };