@tempots/beatui 0.68.0 → 0.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/{ar-aMLQTGVh.js → ar-BbgpGwJp.js} +1 -1
  2. package/dist/auth/index.cjs.js +1 -1
  3. package/dist/auth/index.es.js +106 -105
  4. package/dist/beatui.css +401 -0
  5. package/dist/beatui.tailwind.css +401 -0
  6. package/dist/{de-DBFOC44R.js → de-R7lPfyZ4.js} +1 -1
  7. package/dist/deep-merge-CQQCMLwG.js +1636 -0
  8. package/dist/deep-merge-DZxfgKqX.cjs +1 -0
  9. package/dist/duration-input-D-SIoDoo.cjs +1 -0
  10. package/dist/duration-input-DKxZ6OCa.js +277 -0
  11. package/dist/{es-C4xOThaT.js → es-DV0Jr_BZ.js} +1 -1
  12. package/dist/{fa-B7X_xydY.js → fa-DXvHejs9.js} +1 -1
  13. package/dist/{fr-AmjzbxN_.js → fr-D8FOMX0o.js} +1 -1
  14. package/dist/{he-DY-9yiOC.js → he-B19Qsx-u.js} +1 -1
  15. package/dist/{hi-Clkyp5Fu.js → hi-DozFnE3b.js} +1 -1
  16. package/dist/{index-GLoRnI6r.js → index-CYb1YxDX.js} +1 -1
  17. package/dist/{index-CzuXAuLZ.js → index-DdpYvBeh.js} +3 -3
  18. package/dist/index.cjs.js +4 -4
  19. package/dist/index.es.js +2830 -3079
  20. package/dist/{it-BC32WmGF.js → it-But8uzNi.js} +1 -1
  21. package/dist/{ja-JNSZS_Hv.js → ja-DkwTnFdU.js} +1 -1
  22. package/dist/json-schema/index.cjs.js +6 -6
  23. package/dist/json-schema/index.es.js +3459 -3333
  24. package/dist/json-structure/index.cjs.js +1 -0
  25. package/dist/json-structure/index.es.js +3157 -0
  26. package/dist/{ko-B8l0TJp0.js → ko-Cqv-IjhX.js} +1 -1
  27. package/dist/modal-5P9mU_a4.cjs +1 -0
  28. package/dist/{modal-DJWj5M5e.js → modal-MofsfmAe.js} +2 -2
  29. package/dist/{nl-BpYESHP8.js → nl-YSiU3rFI.js} +1 -1
  30. package/dist/notice-Cqq8g17n.js +209 -0
  31. package/dist/notice-DP209Ed8.cjs +1 -0
  32. package/dist/{pl-_sWhGdrs.js → pl-DXmHc2Nh.js} +1 -1
  33. package/dist/prosemirror/index.es.js +1 -1
  34. package/dist/{pt-BmiQvHUz.js → pt-Bf3z_-26.js} +1 -1
  35. package/dist/{ru-DacnqexG.js → ru-Sy00qUeG.js} +1 -1
  36. package/dist/tailwind/vite-plugin.es.js +1 -0
  37. package/dist/{toolbar-Bk5-22ln.js → toolbar-C_Ec0_XC.js} +1 -1
  38. package/dist/{tr-BSS5b_v6.js → tr-BDxG3qd6.js} +1 -1
  39. package/dist/{translations-zGwuSQWQ.js → translations-BmsRhth7.js} +1 -1
  40. package/dist/{translations-BUTBIDsS.js → translations-DQxouiBG.js} +24 -24
  41. package/dist/types/components/form/index.d.ts +1 -0
  42. package/dist/types/components/form/utils/deep-merge.d.ts +27 -0
  43. package/dist/types/components/form/utils/index.d.ts +1 -0
  44. package/dist/types/components/json-schema/controls/generic-control.d.ts +2 -1
  45. package/dist/types/components/json-schema/controls/shared-utils.d.ts +17 -1
  46. package/dist/types/components/json-schema/index.d.ts +2 -0
  47. package/dist/types/components/json-schema/json-schema-form.d.ts +25 -3
  48. package/dist/types/components/json-schema/schema-context.d.ts +3 -0
  49. package/dist/types/components/json-schema/schema-defaults.d.ts +39 -0
  50. package/dist/types/components/json-schema/widgets/widget-customization.d.ts +55 -0
  51. package/dist/types/components/json-structure/controls/any-control.d.ts +15 -0
  52. package/dist/types/components/json-structure/controls/array-control.d.ts +15 -0
  53. package/dist/types/components/json-structure/controls/binary-control.d.ts +15 -0
  54. package/dist/types/components/json-structure/controls/boolean-control.d.ts +15 -0
  55. package/dist/types/components/json-structure/controls/choice-control.d.ts +19 -0
  56. package/dist/types/components/json-structure/controls/decimal-control.d.ts +17 -0
  57. package/dist/types/components/json-structure/controls/deprecation-utils.d.ts +14 -0
  58. package/dist/types/components/json-structure/controls/enum-const-controls.d.ts +22 -0
  59. package/dist/types/components/json-structure/controls/generic-control.d.ts +31 -0
  60. package/dist/types/components/json-structure/controls/index.d.ts +21 -0
  61. package/dist/types/components/json-structure/controls/integer-control.d.ts +18 -0
  62. package/dist/types/components/json-structure/controls/map-control.d.ts +17 -0
  63. package/dist/types/components/json-structure/controls/object-control.d.ts +17 -0
  64. package/dist/types/components/json-structure/controls/set-control.d.ts +15 -0
  65. package/dist/types/components/json-structure/controls/string-control.d.ts +15 -0
  66. package/dist/types/components/json-structure/controls/temporal-control.d.ts +18 -0
  67. package/dist/types/components/json-structure/controls/tuple-control.d.ts +19 -0
  68. package/dist/types/components/json-structure/controls/union-control.d.ts +15 -0
  69. package/dist/types/components/json-structure/controls/uri-control.d.ts +15 -0
  70. package/dist/types/components/json-structure/controls/uuid-control.d.ts +15 -0
  71. package/dist/types/components/json-structure/extends-utils.d.ts +36 -0
  72. package/dist/types/components/json-structure/index.d.ts +25 -0
  73. package/dist/types/components/json-structure/json-structure-form.d.ts +96 -0
  74. package/dist/types/components/json-structure/ref-utils.d.ts +55 -0
  75. package/dist/types/components/json-structure/structure-context.d.ts +176 -0
  76. package/dist/types/components/json-structure/structure-defaults.d.ts +46 -0
  77. package/dist/types/components/json-structure/structure-types.d.ts +173 -0
  78. package/dist/types/components/json-structure/validation/error-transform.d.ts +56 -0
  79. package/dist/types/components/json-structure/validation/index.d.ts +5 -0
  80. package/dist/types/components/json-structure/validation/sdk-validator.d.ts +46 -0
  81. package/dist/types/components/json-structure/widgets/default-widgets.d.ts +27 -0
  82. package/dist/types/components/json-structure/widgets/index.d.ts +6 -0
  83. package/dist/types/components/json-structure/widgets/widget-registry.d.ts +143 -0
  84. package/dist/types/components/json-structure/widgets/widget-utils.d.ts +79 -0
  85. package/dist/types/index.d.ts +1 -0
  86. package/dist/types/json-structure/index.d.ts +9 -0
  87. package/dist/{ur-C6Ky6OCl.js → ur-55zdT2TQ.js} +1 -1
  88. package/dist/{notice-Um1LwKBF.js → use-form-B7A865EM.js} +329 -532
  89. package/dist/use-form-DVJXMMoN.cjs +2 -0
  90. package/dist/{vi-Bx2gx2S0.js → vi-C7K7W0hM.js} +1 -1
  91. package/dist/widget-customization-29Hl2gKT.js +1171 -0
  92. package/dist/widget-customization-BXiewbt-.cjs +1 -0
  93. package/dist/{zh-eixtg-Ce.js → zh-DvJBV9D8.js} +1 -1
  94. package/package.json +10 -2
  95. package/dist/modal-D_paG9Sr.cjs +0 -1
  96. package/dist/notice-CgT9ma2m.cjs +0 -2
  97. package/dist/utils-7JQljUYX.js +0 -2554
  98. package/dist/utils-CPtkOy9f.cjs +0 -1
@@ -0,0 +1,1171 @@
1
+ import { Value as p, prop as ot, computedOf as L, html as _, attr as u, svg as et, svgAttr as Y, on as M, Empty as A, When as H, Fragment as V, aria as R, emitValue as tt, Use as ct, input as it, emitValueAsNullableDate as nt, emitValueAsNullableDateTime as st, style as lt, Repeat as gt, emit as dt, emitValueAsNumber as D } from "@tempots/dom";
2
+ import { F as mt, $ as ht, N as X, T as ft, U as bt, a as wt } from "./deep-merge-CQQCMLwG.js";
3
+ import { C as E, b as U, a as yt, c as G, T as xt, L as Mt, d as rt, e as $t } from "./translations-DQxouiBG.js";
4
+ import { AutoSelect as It, ElementRect as _t } from "@tempots/ui";
5
+ import { E as kt, P as Ct } from "./notice-Cqq8g17n.js";
6
+ import { s as Tt } from "./use-form-B7A865EM.js";
7
+ function ut(t) {
8
+ if (typeof t != "string") return !1;
9
+ const e = t.startsWith("#") ? t.slice(1) : t;
10
+ return /^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(e);
11
+ }
12
+ function Ft(t) {
13
+ if (typeof t != "string") return !1;
14
+ const e = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i, s = t.match(e);
15
+ if (!s) return !1;
16
+ const [, n, a, r] = s, o = parseInt(n, 10), c = parseInt(a, 10), i = parseInt(r, 10);
17
+ return o >= 0 && o <= 255 && c >= 0 && c <= 255 && i >= 0 && i <= 255;
18
+ }
19
+ function At(t) {
20
+ if (typeof t != "string") return !1;
21
+ const e = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0|1|0?\.\d+)\s*\)$/i, s = t.match(e);
22
+ if (!s) return !1;
23
+ const [, n, a, r, o] = s, c = parseInt(n, 10), i = parseInt(a, 10), l = parseInt(r, 10), g = parseFloat(o);
24
+ return c >= 0 && c <= 255 && i >= 0 && i <= 255 && l >= 0 && l <= 255 && g >= 0 && g <= 1;
25
+ }
26
+ function vt(t) {
27
+ if (typeof t != "string") return !1;
28
+ const e = /^hsl\(\s*(\d{1,3})\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%\s*\)$/i, s = t.match(e);
29
+ if (!s) return !1;
30
+ const [, n, a, r] = s, o = parseInt(n, 10), c = parseInt(a, 10), i = parseInt(r, 10);
31
+ return o >= 0 && o <= 360 && c >= 0 && c <= 100 && i >= 0 && i <= 100;
32
+ }
33
+ function ce(t) {
34
+ return ut(t) || Ft(t) || At(t) || vt(t);
35
+ }
36
+ function St(t) {
37
+ if (!ut(t)) return null;
38
+ let e = t.startsWith("#") ? t.slice(1) : t;
39
+ return e.length === 3 && (e = e.split("").map((s) => s + s).join("")), `#${e.toLowerCase()}`;
40
+ }
41
+ function J(t, e, s) {
42
+ const n = (a) => {
43
+ const r = Math.round(Math.max(0, Math.min(255, a))).toString(16);
44
+ return r.length === 1 ? "0" + r : r;
45
+ };
46
+ return `#${n(t)}${n(e)}${n(s)}`;
47
+ }
48
+ function W(t) {
49
+ const e = St(t);
50
+ if (!e) return null;
51
+ const s = /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);
52
+ return s ? {
53
+ r: parseInt(s[1], 16),
54
+ g: parseInt(s[2], 16),
55
+ b: parseInt(s[3], 16)
56
+ } : null;
57
+ }
58
+ function ie(t, e) {
59
+ const s = W(t), n = W(e);
60
+ if (!s || !n) return null;
61
+ const a = (l, g, h) => {
62
+ const [b, d, y] = [l, g, h].map((x) => (x = x / 255, x <= 0.03928 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4)));
63
+ return 0.2126 * b + 0.7152 * d + 0.0722 * y;
64
+ }, r = a(s.r, s.g, s.b), o = a(n.r, n.g, n.b), c = Math.max(r, o), i = Math.min(r, o);
65
+ return (c + 0.05) / (i + 0.05);
66
+ }
67
+ function Nt(t) {
68
+ if (!t) return [0, 0, 0, 1];
69
+ const s = t.trim().match(
70
+ /^#?([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/
71
+ );
72
+ if (s) {
73
+ const l = s[1];
74
+ if (l.length === 8) {
75
+ const g = parseInt(l.slice(0, 2), 16), h = parseInt(l.slice(2, 4), 16), b = parseInt(l.slice(4, 6), 16), d = parseInt(l.slice(6, 8), 16) / 255;
76
+ return [g, h, b, d];
77
+ }
78
+ if (l.length === 6)
79
+ return [
80
+ parseInt(l.slice(0, 2), 16),
81
+ parseInt(l.slice(2, 4), 16),
82
+ parseInt(l.slice(4, 6), 16),
83
+ 1
84
+ ];
85
+ if (l.length === 4) {
86
+ const g = parseInt(l[0] + l[0], 16), h = parseInt(l[1] + l[1], 16), b = parseInt(l[2] + l[2], 16), d = parseInt(l[3] + l[3], 16) / 255;
87
+ return [g, h, b, d];
88
+ }
89
+ if (l.length === 3) {
90
+ const g = parseInt(l[0] + l[0], 16), h = parseInt(l[1] + l[1], 16), b = parseInt(l[2] + l[2], 16);
91
+ return [g, h, b, 1];
92
+ }
93
+ }
94
+ const n = t.match(
95
+ /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0|1|0?\.\d+)\s*\)$/i
96
+ );
97
+ if (n)
98
+ return [
99
+ parseInt(n[1], 10),
100
+ parseInt(n[2], 10),
101
+ parseInt(n[3], 10),
102
+ parseFloat(n[4])
103
+ ];
104
+ const a = t.match(
105
+ /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i
106
+ );
107
+ if (a)
108
+ return [parseInt(a[1], 10), parseInt(a[2], 10), parseInt(a[3], 10), 1];
109
+ const r = t.match(
110
+ /^hsla?\(\s*([+-]?[\d.]+)(?:deg)?\s*[ ,]?\s*([\d.]+)%\s*[ ,]?\s*([\d.]+)%\s*(?:[/,]\s*(\d?(?:\.\d+)?))?\s*\)$/i
111
+ );
112
+ if (r) {
113
+ const l = parseFloat(r[1]), g = parseFloat(r[2]), h = parseFloat(r[3]), b = r[4] != null ? parseFloat(r[4]) : 1, [d, y, x] = pt(l, g / 100, h / 100);
114
+ return [d, y, x, b];
115
+ }
116
+ const o = t.match(
117
+ /^hwb\(\s*([+-]?[\d.]+)(?:deg)?\s*[, ]\s*([\d.]+)%\s*[, ]\s*([\d.]+)%\s*(?:[/]\s*(\d?(?:\.\d+)?))?\s*\)$/i
118
+ );
119
+ if (o) {
120
+ const l = parseFloat(o[1]), g = parseFloat(o[2]) / 100, h = parseFloat(o[3]) / 100, b = o[4] != null ? parseFloat(o[4]) : 1, [d, y, x] = Bt(l, g, h);
121
+ return [d, y, x, b];
122
+ }
123
+ const c = t.match(
124
+ /^oklch\(\s*([+-]?[\d.]+%?)\s+([\d.]+)\s+([+-]?[\d.]+)(?:deg)?(?:\s*\/\s*(\d?(?:\.\d+)?))?\s*\)$/i
125
+ );
126
+ if (c) {
127
+ const l = c[1], g = parseFloat(c[2]), h = parseFloat(c[3]), b = c[4] != null ? parseFloat(c[4]) : 1, d = l.endsWith("%") ? Math.max(0, Math.min(1, parseFloat(l) / 100)) : Math.max(0, Math.min(1, parseFloat(l))), [y, x, w] = Vt(d, g, h);
128
+ return [y, x, w, b];
129
+ }
130
+ const i = W(t);
131
+ return i ? [i.r, i.g, i.b, 1] : [0, 0, 0, 1];
132
+ }
133
+ function Rt(t, e, s, n) {
134
+ return `rgba(${Math.round(t)}, ${Math.round(e)}, ${Math.round(s)}, ${Math.max(
135
+ 0,
136
+ Math.min(1, Math.round(n * 100) / 100)
137
+ )})`;
138
+ }
139
+ function Lt(t) {
140
+ let e = t + 1831565813;
141
+ return function() {
142
+ return e = Math.imul(e ^ e >>> 15, e | 1), e ^= e + Math.imul(e ^ e >>> 7, e | 61), ((e ^ e >>> 14) >>> 0) / 4294967296;
143
+ };
144
+ }
145
+ function pt(t, e, s) {
146
+ t = (t % 360 + 360) % 360;
147
+ const n = (1 - Math.abs(2 * s - 1)) * e, a = n * (1 - Math.abs(t / 60 % 2 - 1)), r = s - n / 2;
148
+ let o = 0, c = 0, i = 0;
149
+ return 0 <= t && t < 60 ? [o, c, i] = [n, a, 0] : 60 <= t && t < 120 ? [o, c, i] = [a, n, 0] : 120 <= t && t < 180 ? [o, c, i] = [0, n, a] : 180 <= t && t < 240 ? [o, c, i] = [0, a, n] : 240 <= t && t < 300 ? [o, c, i] = [a, 0, n] : [o, c, i] = [n, 0, a], [
150
+ Math.round((o + r) * 255),
151
+ Math.round((c + r) * 255),
152
+ Math.round((i + r) * 255)
153
+ ];
154
+ }
155
+ function Bt(t, e, s) {
156
+ t = (t % 360 + 360) % 360;
157
+ const n = e + s;
158
+ n > 1 && (e /= n, s /= n);
159
+ const [a, r, o] = pt(t, 1, 0.5).map((h) => h / 255), c = 1 - e - s, i = a * c + e, l = r * c + e, g = o * c + e;
160
+ return [Math.round(i * 255), Math.round(l * 255), Math.round(g * 255)];
161
+ }
162
+ function Z(t, e, s) {
163
+ t /= 255, e /= 255, s /= 255;
164
+ const n = Math.max(t, e, s), a = Math.min(t, e, s);
165
+ let r = 0, o = 0;
166
+ const c = (n + a) / 2, i = n - a;
167
+ if (i !== 0) {
168
+ switch (o = c > 0.5 ? i / (2 - n - a) : i / (n + a), n) {
169
+ case t:
170
+ r = (e - s) / i + (e < s ? 6 : 0);
171
+ break;
172
+ case e:
173
+ r = (s - t) / i + 2;
174
+ break;
175
+ default:
176
+ r = (t - e) / i + 4;
177
+ }
178
+ r *= 60;
179
+ }
180
+ return [Math.round(r), Math.round(o * 100), Math.round(c * 100)];
181
+ }
182
+ function Dt(t, e, s) {
183
+ const [n] = Z(t, e, s), a = t / 255, r = e / 255, o = s / 255, c = Math.min(a, r, o), i = 1 - Math.max(a, r, o);
184
+ return [n, Math.round(c * 100), Math.round(i * 100)];
185
+ }
186
+ function K(t) {
187
+ const e = t / 255;
188
+ return e <= 0.04045 ? e / 12.92 : Math.pow((e + 0.055) / 1.055, 2.4);
189
+ }
190
+ function q(t) {
191
+ const e = t <= 31308e-7 ? 12.92 * t : 1.055 * Math.pow(t, 0.4166666666666667) - 0.055;
192
+ return Math.round(Math.max(0, Math.min(1, e)) * 255);
193
+ }
194
+ function Vt(t, e, s) {
195
+ const n = s * Math.PI / 180, a = Math.cos(n) * e, r = Math.sin(n) * e, o = t + 0.3963377774 * a + 0.2158037573 * r, c = t - 0.1055613458 * a - 0.0638541728 * r, i = t - 0.0894841775 * a - 1.291485548 * r, l = o * o * o, g = c * c * c, h = i * i * i, b = 4.0767416621 * l - 3.3077115913 * g + 0.2309699292 * h, d = -1.2684380046 * l + 2.6097574011 * g - 0.3413193965 * h, y = -0.0041960863 * l - 0.7034186147 * g + 1.707614701 * h;
196
+ return [q(b), q(d), q(y)];
197
+ }
198
+ function Et(t, e, s) {
199
+ const n = K(t), a = K(e), r = K(s), o = 0.4122214708 * n + 0.5363325363 * a + 0.0514459929 * r, c = 0.2119034982 * n + 0.6806995451 * a + 0.1073969566 * r, i = 0.0883024619 * n + 0.2817188376 * a + 0.6299787005 * r, l = Math.cbrt(o), g = Math.cbrt(c), h = Math.cbrt(i), b = 0.2104542553 * l + 0.793617785 * g - 0.0040720468 * h, d = 1.9779984951 * l - 2.428592205 * g + 0.4505937099 * h, y = 0.0259040371 * l + 0.7827717662 * g - 0.808675766 * h, x = Math.sqrt(d * d + y * y);
200
+ let w = Math.atan2(y, d) * 180 / Math.PI;
201
+ return w < 0 && (w += 360), [b, x, w];
202
+ }
203
+ function P(t, e, s, n, a, r) {
204
+ switch (a) {
205
+ case "hex":
206
+ if (r) {
207
+ const o = (i) => i.toString(16).padStart(2, "0"), c = Math.max(0, Math.min(255, Math.round(n * 255)));
208
+ return `#${o(t)}${o(e)}${o(s)}${o(c)}`;
209
+ }
210
+ return J(t, e, s);
211
+ case "rgb":
212
+ return `rgb(${t}, ${e}, ${s})`;
213
+ case "rgba":
214
+ return `rgba(${t}, ${e}, ${s}, ${Math.round(n * 100) / 100})`;
215
+ case "hsl": {
216
+ const [o, c, i] = Z(t, e, s);
217
+ return `hsl(${o}, ${c}%, ${i}%)`;
218
+ }
219
+ case "hsla": {
220
+ const [o, c, i] = Z(t, e, s);
221
+ return `hsla(${o}, ${c}%, ${i}%, ${Math.round(n * 100) / 100})`;
222
+ }
223
+ case "hwb": {
224
+ const [o, c, i] = Dt(t, e, s);
225
+ return n < 1 ? `hwb(${o} ${c}% ${i}% / ${Math.round(n * 100) / 100})` : `hwb(${o} ${c}% ${i}%)`;
226
+ }
227
+ case "oklch": {
228
+ const [o, c, i] = Et(t, e, s), l = (Math.round(o * 1e3) / 1e3).toFixed(3), g = (Math.round(c * 1e3) / 1e3).toFixed(3), h = (Math.round(i * 10) / 10).toFixed(1), b = Math.round(n * 100) / 100;
229
+ return r || n < 1 ? `oklch(${l} ${g} ${h} / ${b})` : `oklch(${l} ${g} ${h})`;
230
+ }
231
+ }
232
+ }
233
+ function j(t, e) {
234
+ return e ? t === "rgb" ? "rgba" : t === "hsl" ? "hsla" : t : t === "rgba" ? "rgb" : t === "hsla" ? "hsl" : t;
235
+ }
236
+ async function Ut(t) {
237
+ return new Promise((e, s) => {
238
+ const n = new FileReader();
239
+ n.readAsDataURL(t), n.onload = () => {
240
+ const a = n.result;
241
+ e(a.split(",")[1]);
242
+ }, n.onerror = (a) => s(a);
243
+ });
244
+ }
245
+ function Ot(t) {
246
+ return Promise.all(t.map(Ut));
247
+ }
248
+ function Pt(t) {
249
+ if (t.length >= 4) {
250
+ if (t[0] === 137 && t[1] === 80 && t[2] === 78 && t[3] === 71)
251
+ return "image/png";
252
+ if (t[0] === 255 && t[1] === 216) return "image/jpeg";
253
+ if (t[0] === 71 && t[1] === 73 && t[2] === 70)
254
+ return "image/gif";
255
+ if (t[0] === 82 && t[1] === 73 && t[2] === 70 && t[3] === 70 && t.length >= 12 && t[8] === 87 && t[9] === 69 && t[10] === 66 && t[11] === 80)
256
+ return "image/webp";
257
+ }
258
+ try {
259
+ if (new TextDecoder("utf-8").decode(t.slice(0, 256)).includes("<svg")) return "image/svg+xml";
260
+ } catch {
261
+ }
262
+ return "application/octet-stream";
263
+ }
264
+ function jt(t) {
265
+ const e = ht(t ?? ""), s = e.length, n = new Uint8Array(s);
266
+ for (let a = 0; a < s; a++) n[a] = e.charCodeAt(a);
267
+ return n;
268
+ }
269
+ function Ht(t) {
270
+ const {
271
+ value: e,
272
+ onChange: s,
273
+ onInput: n,
274
+ ...a
275
+ } = t, r = /* @__PURE__ */ new Map(), o = p.toSignal(e).map((g) => g.map((h, b) => {
276
+ const d = r.get(h), y = jt(h ?? ""), x = d?.type || Pt(y), w = d?.name ?? `file-${b}`, I = y.buffer.slice(
277
+ y.byteOffset,
278
+ y.byteOffset + y.byteLength
279
+ ), f = new Blob([I], { type: x });
280
+ return new File([f], w, { type: x });
281
+ })), c = (g) => (h) => {
282
+ g && Ot(h).then((b) => {
283
+ for (const [d, y] of b.entries())
284
+ r.set(y, { name: h[d].name, type: h[d].type });
285
+ g(b);
286
+ });
287
+ }, i = c(s), l = c(n);
288
+ return mt({
289
+ ...a,
290
+ value: o,
291
+ onChange: i,
292
+ onInput: l
293
+ });
294
+ }
295
+ function le(t) {
296
+ const {
297
+ value: e,
298
+ onInput: s,
299
+ onChange: n,
300
+ ...a
301
+ } = t;
302
+ return Ht({
303
+ ...a,
304
+ maxFiles: 1,
305
+ value: p.map(e, (r) => r == null ? [] : [r]),
306
+ onChange: (r) => {
307
+ n?.(r[0]);
308
+ },
309
+ onInput: (r) => {
310
+ s?.(r[0]);
311
+ }
312
+ });
313
+ }
314
+ function Wt(t, e) {
315
+ const [s, n, a] = t, r = s << 16 ^ n << 8 ^ a, o = Lt(r), c = 6 + Math.floor(o() * 5), i = 0.18 + o() * 0.06, l = [];
316
+ for (let d = 0; d < c; d++) {
317
+ const y = d / c * Math.PI * 2, x = e * (1 + (o() * 2 - 1) * i), w = Math.cos(y) * x, I = Math.sin(y) * x;
318
+ l.push({ x: w, y: I });
319
+ }
320
+ const g = (l[0].x + l[c - 1].x) / 2, h = (l[0].y + l[c - 1].y) / 2;
321
+ let b = `M ${g.toFixed(3)} ${h.toFixed(3)}`;
322
+ for (let d = 0; d < c; d++) {
323
+ const y = l[d], x = l[(d + 1) % c], w = (y.x + x.x) / 2, I = (y.y + x.y) / 2;
324
+ b += ` Q ${y.x.toFixed(3)} ${y.y.toFixed(3)} ${w.toFixed(3)} ${I.toFixed(3)}`;
325
+ }
326
+ return b += " Z", b;
327
+ }
328
+ const ue = (t) => {
329
+ const { value: e, onBlur: s, onChange: n, onInput: a, displayValue: r, size: o, withAlpha: c } = t, i = p.map(o ?? 32, (m) => m), l = p.map(e, (m) => Nt(m ?? "#000000")), g = p.map(
330
+ l,
331
+ ([m, $, C]) => [m, $, C]
332
+ ), h = p.map(l, ([, , , m]) => m), b = ot(p.get(h) ?? 1), d = p.map(c ?? !1, (m) => m), y = p.map(
333
+ t.colorTextFormat ?? "rgb",
334
+ (m) => m
335
+ ), x = L(
336
+ g,
337
+ b,
338
+ y,
339
+ d
340
+ )(
341
+ ([m, $, C], v, S, N) => P(m, $, C, v ?? 1, j(S, N), N)
342
+ ), w = p.map(
343
+ t.colorTextFormat ?? "hex",
344
+ (m) => m
345
+ ), I = p.map(i, (m) => `${-m / 2} ${-m / 2} ${m} ${m}`), f = L(
346
+ g,
347
+ i
348
+ )((m, $) => Wt(m, $ / 2)), F = L(
349
+ g,
350
+ b,
351
+ d
352
+ )(
353
+ ([m, $, C], v, S) => S || v < 1 ? Rt(m, $, C, v) : J(m, $, C)
354
+ ), T = _.div(
355
+ u.class("bc-color-swatch-input__control"),
356
+ u.class(
357
+ p.map(
358
+ d,
359
+ (m) => m ? "bc-color-swatch-input__control--alpha" : ""
360
+ )
361
+ ),
362
+ u.style(
363
+ L(i)((m) => `min-width:${m + 2}px;height:${m + 2}px`)
364
+ ),
365
+ // The SVG blob preview
366
+ et.svg(
367
+ u.class("bc-color-swatch-input__svg"),
368
+ Y.viewBox(I),
369
+ et.path(Y.d(f), Y.fill(F))
370
+ ),
371
+ // Invisible native input overlays the blob for picker and accessibility
372
+ _.input(
373
+ u.type("color"),
374
+ E(t),
375
+ // Native color input needs hex without alpha
376
+ u.value(p.map(g, ([m, $, C]) => J(m, $, C))),
377
+ u.class(
378
+ "bc-input bc-color-swatch-input bc-color-swatch-input__native"
379
+ ),
380
+ s != null ? M.blur(s) : A,
381
+ n != null ? M.change((m) => {
382
+ const $ = m.target.value;
383
+ if (!n) return;
384
+ const { r: C, g: v, b: S } = W($) ?? { r: 0, g: 0, b: 0 }, N = p.get(b) ?? 1, B = j(
385
+ p.get(w),
386
+ p.get(d)
387
+ ), z = P(C, v, S, N, B, p.get(d));
388
+ n(z);
389
+ }) : A,
390
+ a != null ? M.input((m) => {
391
+ const $ = m.target.value;
392
+ if (!a) return;
393
+ const { r: C, g: v, b: S } = W($) ?? { r: 0, g: 0, b: 0 }, N = p.get(b) ?? 1, B = j(
394
+ p.get(w),
395
+ p.get(d)
396
+ ), z = P(C, v, S, N, B, p.get(d));
397
+ a(z);
398
+ }) : A
399
+ )
400
+ ), k = H(
401
+ d,
402
+ () => _.input(
403
+ u.type("range"),
404
+ u.class("bc-color-swatch-input__alpha"),
405
+ u.min(0),
406
+ u.max(1),
407
+ u.step(0.01),
408
+ u.value(p.map(b, (m) => String(m ?? 1))),
409
+ u.disabled(t.disabled),
410
+ M.input((m) => {
411
+ const $ = parseFloat(m.target.value);
412
+ b.set($);
413
+ const [C, v, S] = p.get(g), N = j(
414
+ p.get(w),
415
+ p.get(d)
416
+ ), B = P(C, v, S, $, N, p.get(d));
417
+ a?.(B);
418
+ }),
419
+ M.change((m) => {
420
+ const $ = parseFloat(m.target.value);
421
+ b.set($);
422
+ const [C, v, S] = p.get(g), N = j(
423
+ p.get(w),
424
+ p.get(d)
425
+ ), B = P(C, v, S, $, N, p.get(d));
426
+ n?.(B);
427
+ })
428
+ )
429
+ );
430
+ return U({
431
+ baseContainer: !0,
432
+ ...t,
433
+ // ensure our control does not try to grow
434
+ growInput: !1,
435
+ input: T,
436
+ // If caller provided an `after`, append RGB before it
437
+ after: V(
438
+ H(
439
+ r ?? !1,
440
+ () => _.span(u.class("bc-color-swatch-input__rgb"), x)
441
+ ),
442
+ k,
443
+ t.after
444
+ )
445
+ });
446
+ };
447
+ function Xt(t, e, s) {
448
+ const n = ["bc-card"];
449
+ return t !== "default" && n.push(`bc-card--${t}`), e !== "md" && n.push(`bc-card--padding-${e}`), s !== "lg" && n.push(`bc-card--rounded-${s}`), n.join(" ");
450
+ }
451
+ function pe({ variant: t = "default", size: e = "md", roundedness: s = "lg" } = {}, ...n) {
452
+ return _.div(
453
+ u.class(
454
+ L(
455
+ t,
456
+ e,
457
+ s
458
+ )(
459
+ (a, r, o) => Xt(
460
+ a ?? "default",
461
+ r ?? "md",
462
+ o ?? "lg"
463
+ )
464
+ )
465
+ ),
466
+ ...n
467
+ );
468
+ }
469
+ const ge = ({
470
+ startEditing: t,
471
+ value: e,
472
+ onChange: s,
473
+ placeholder: n,
474
+ disabled: a
475
+ }) => {
476
+ const r = p.deriveProp(t ?? !1), o = ot(!1), c = p.map(a ?? !1, (i) => i);
477
+ return _.div(
478
+ u.class("bc-editable-text"),
479
+ u.class(
480
+ p.map(
481
+ c,
482
+ (i) => i ? "bc-editable-text--disabled" : ""
483
+ )
484
+ ),
485
+ R.disabled(c),
486
+ H(
487
+ r,
488
+ () => _.input(
489
+ u.placeholder(n),
490
+ u.value(e),
491
+ u.class("bc-editable-text__input"),
492
+ It(),
493
+ M.keydown((i) => {
494
+ i.key === "Enter" ? r.set(!1) : i.key === "Escape" && (o.set(!0), r.set(!1));
495
+ }),
496
+ M.blur(
497
+ tt((i) => {
498
+ if (r.set(!1), o.value) {
499
+ o.set(!1);
500
+ return;
501
+ }
502
+ s(i);
503
+ })
504
+ )
505
+ ),
506
+ () => _.span(
507
+ M.click(() => {
508
+ p.get(c) || r.set(!0);
509
+ }),
510
+ u.class("bc-editable-text__display"),
511
+ H(
512
+ p.map(e, (i) => i != null && i.trim() !== ""),
513
+ () => _.span(u.class("bc-editable-text__text"), e),
514
+ () => _.span(
515
+ u.class("bc-editable-text__placeholder"),
516
+ n
517
+ )
518
+ ),
519
+ H(
520
+ p.map(c, (i) => !i),
521
+ () => _.button(
522
+ u.type("button"),
523
+ u.class("bc-editable-text__edit-button"),
524
+ ct(yt, (i) => R.label(i.$.editLabel)),
525
+ M.click(() => r.set(!0)),
526
+ G({ icon: "line-md/pencil", color: "neutral" })
527
+ )
528
+ )
529
+ )
530
+ )
531
+ );
532
+ }, de = (t) => {
533
+ const { value: e, onBlur: s, onChange: n, onInput: a, after: r, disabled: o } = t, c = X(e, o, n ?? a);
534
+ return U({
535
+ ...t,
536
+ input: it.date(
537
+ E(t),
538
+ u.valueAsDate(e),
539
+ u.class("bc-input"),
540
+ s != null ? M.blur(tt(s)) : A,
541
+ n != null ? M.change(nt(n)) : A,
542
+ a != null ? M.input(nt(a)) : A
543
+ ),
544
+ after: r != null ? V(c, r) : c
545
+ });
546
+ }, zt = (t) => {
547
+ const e = t.getFullYear(), s = t.getMonth() + 1, n = t.getDate(), a = t.getHours(), r = t.getMinutes(), o = t.getSeconds();
548
+ return `${e}-${s.toString().padStart(2, "0")}-${n.toString().padStart(2, "0")}T${a.toString().padStart(2, "0")}:${r.toString().padStart(2, "0")}:${o.toString().padStart(2, "0")}`;
549
+ }, me = (t) => {
550
+ const { value: e, onBlur: s, onChange: n, onInput: a, after: r, disabled: o } = t, c = p.map(e, (l) => l != null ? zt(l) : null), i = X(e, o, n ?? a);
551
+ return U({
552
+ ...t,
553
+ input: it["datetime-local"](
554
+ E(t),
555
+ u.value(p.map(c, (l) => l ?? null)),
556
+ u.class("bc-input"),
557
+ s != null ? M.blur(tt(s)) : A,
558
+ n != null ? M.change(st(n)) : A,
559
+ a != null ? M.input(st(a)) : A
560
+ ),
561
+ after: r != null ? V(i, r) : i
562
+ });
563
+ }, at = (t) => typeof t == "string" && t.trim() === "" ? null : t, Yt = (t) => t ?? "";
564
+ function O(t) {
565
+ return (e) => {
566
+ const { value: s, onBlur: n, onChange: a, onInput: r, after: o, disabled: c, ...i } = e, l = X(s, c, a ?? r);
567
+ return t({
568
+ ...i,
569
+ disabled: c,
570
+ value: p.map(s, Yt),
571
+ onChange: a != null ? (g) => a(at(g)) : void 0,
572
+ onInput: r != null ? (g) => r(at(g)) : void 0,
573
+ onBlur: n,
574
+ after: o != null ? V(l, o) : l
575
+ });
576
+ };
577
+ }
578
+ const he = O(kt), fe = O(xt), be = O(Ct), we = O(
579
+ ft
580
+ ), ye = ({
581
+ value: t,
582
+ onChange: e,
583
+ onInput: s,
584
+ onBlur: n,
585
+ offLabel: a,
586
+ onLabel: r,
587
+ disabled: o = !1,
588
+ size: c = "md",
589
+ id: i,
590
+ color: l = "primary",
591
+ tabIndex: g = 0
592
+ }) => {
593
+ const h = i ?? Tt("switch");
594
+ function b(w, I) {
595
+ const f = [
596
+ "bc-switch",
597
+ `bc-switch--size-${I}`,
598
+ `bc-switch--${I}`
599
+ ];
600
+ return w && f.push("bc-switch--disabled"), f.join(" ");
601
+ }
602
+ function d(w) {
603
+ const I = w ?? "primary", f = /* @__PURE__ */ new Map(), F = rt(I, "solid", "light"), T = rt(I, "solid", "dark");
604
+ return f.set("--switch-track-on-bg", F.backgroundColor), f.set("--switch-track-on-label", F.textColor), f.set("--switch-track-on-bg-dark", T.backgroundColor), f.set("--switch-track-on-label-dark", T.textColor), f.set(
605
+ "--switch-track-on-border-dark",
606
+ $t(I, "dark")
607
+ ), Array.from(f.entries()).map(([k, m]) => `${k}: ${m}`).join("; ");
608
+ }
609
+ const y = () => {
610
+ p.get(o) || (e?.(!p.get(t)), s?.(!p.get(t)));
611
+ }, x = (w) => {
612
+ p.get(o) || (w.key === " " || w.key === "Enter") && (w.preventDefault(), y());
613
+ };
614
+ return _.div(
615
+ u.class(
616
+ L(
617
+ o ?? !1,
618
+ c
619
+ )(
620
+ (w, I) => b(w ?? !1, I ?? "md")
621
+ )
622
+ ),
623
+ u.style(
624
+ L(l)(
625
+ (w) => d(w)
626
+ )
627
+ ),
628
+ u.id(h),
629
+ u.role("switch"),
630
+ u.tabindex(
631
+ L(
632
+ o ?? !1,
633
+ g
634
+ )((w, I) => w ? -1 : I ?? 0)
635
+ ),
636
+ R.checked(t),
637
+ R.disabled(o),
638
+ M.click(y),
639
+ M.keydown(x),
640
+ n != null ? M.blur(n) : null,
641
+ _.div(
642
+ u.class("bc-switch__track"),
643
+ u.class(
644
+ p.map(
645
+ t,
646
+ (w) => w ? "bc-switch__track--on" : "bc-switch__track--off"
647
+ )
648
+ ),
649
+ a != null ? _.div(
650
+ R.hidden(!0),
651
+ u.class("bc-switch__track-label bc-switch__track-label--off"),
652
+ u.class(
653
+ p.map(
654
+ t,
655
+ (w) => w ? "bc-switch__track-label--hidden" : "bc-switch__track-label--visible"
656
+ )
657
+ ),
658
+ a
659
+ ) : null,
660
+ r != null ? _.div(
661
+ u.class("bc-switch__track-label bc-switch__track-label--on"),
662
+ u.class(
663
+ p.map(
664
+ t,
665
+ (w) => w ? "bc-switch__track-label--visible" : "bc-switch__track-label--hidden"
666
+ )
667
+ ),
668
+ r
669
+ ) : null,
670
+ _t(
671
+ (w) => ct(
672
+ Mt,
673
+ ({ direction: I }) => _.div(
674
+ u.class("bc-switch__thumb"),
675
+ u.class(
676
+ p.map(
677
+ t,
678
+ (f) => f ? "bc-switch__thumb--on" : "bc-switch__thumb--off"
679
+ )
680
+ ),
681
+ lt.transform(
682
+ L(
683
+ t,
684
+ w,
685
+ c,
686
+ I
687
+ )((f, { width: F }, T, k) => {
688
+ const m = (() => {
689
+ switch (T) {
690
+ case "xs":
691
+ return 5;
692
+ case "sm":
693
+ return 5.5;
694
+ case "md":
695
+ return 6;
696
+ case "lg":
697
+ return 7;
698
+ case "xl":
699
+ return 8;
700
+ }
701
+ })(), $ = k === "rtl" ? `calc((var(--spacing-base) * ${m}) - ${F}px)` : `calc(${F}px - (var(--spacing-base) * ${m}))`;
702
+ return f ? `translateX(${$})` : "translateX(0)";
703
+ })
704
+ )
705
+ )
706
+ )
707
+ )
708
+ )
709
+ );
710
+ }, xe = O(bt), Kt = "line-md:star-alt-filled", qt = "line-md:star-alt", Qt = (t) => {
711
+ const {
712
+ value: e,
713
+ onChange: s,
714
+ disabled: n,
715
+ max: a = 5,
716
+ fullColor: r = "yellow",
717
+ emptyColor: o = "neutral",
718
+ fullIcon: c = Kt,
719
+ emptyIcon: i = qt,
720
+ size: l = "md",
721
+ onBlur: g,
722
+ rounding: h = 1
723
+ } = t, b = () => {
724
+ const f = p.get(h);
725
+ return f > 0 ? f : 1;
726
+ }, d = (f) => Math.min(Math.max(f, 0), p.get(a)), y = (f, F) => {
727
+ if (p.get(n ?? !1)) return;
728
+ const k = f.currentTarget.getBoundingClientRect(), m = (f.clientX - k.left) / k.width, $ = F - 1 + m, C = b(), v = Math.ceil($ / C) * C, S = d(v);
729
+ s?.(S);
730
+ }, x = (f) => {
731
+ if (p.get(n ?? !1)) return;
732
+ const F = b(), T = p.get(e) ?? 0;
733
+ let k;
734
+ switch (f.key) {
735
+ case "ArrowRight":
736
+ case "ArrowUp":
737
+ k = d(T + F);
738
+ break;
739
+ case "ArrowLeft":
740
+ case "ArrowDown":
741
+ k = d(T - F);
742
+ break;
743
+ case "Home":
744
+ k = 0;
745
+ break;
746
+ case "End":
747
+ k = p.get(a);
748
+ break;
749
+ default:
750
+ return;
751
+ }
752
+ f.preventDefault(), s?.(k);
753
+ }, w = p.map(l, (f) => `bc-icon--${f}`), I = ({ index: f, counter: F }) => _.span(
754
+ u.class("bc-rating-input__icon-container"),
755
+ u.class(w),
756
+ G(
757
+ {
758
+ icon: i,
759
+ size: l,
760
+ color: o,
761
+ tone: "soft"
762
+ },
763
+ u.class("bc-rating-input__icon-empty")
764
+ ),
765
+ _.span(
766
+ u.class("bc-rating-input__icon-clipper"),
767
+ u.class(w),
768
+ lt.width(
769
+ p.map(e, (T) => {
770
+ const k = Math.floor(T);
771
+ return k > f ? "100%" : k < f ? "0%" : `${(T - f) * 100}%`;
772
+ })
773
+ ),
774
+ G(
775
+ {
776
+ icon: c,
777
+ size: l,
778
+ color: r,
779
+ tone: "soft"
780
+ },
781
+ u.class("bc-rating-input__icon-full")
782
+ )
783
+ ),
784
+ M.click(
785
+ dt((T) => y(T, F), {
786
+ preventDefault: !0,
787
+ stopPropagation: !0
788
+ })
789
+ )
790
+ );
791
+ return U({
792
+ baseContainer: !0,
793
+ growInput: !1,
794
+ focusableSelector: '[role="slider"]',
795
+ ...t,
796
+ input: _.div(
797
+ // Common input attributes (id, required, invalid, custom classes, etc.)
798
+ E(t),
799
+ u.class("bc-rating-input"),
800
+ // ARIA slider semantics
801
+ u.role("slider"),
802
+ u.tabindex(p.map(n ?? !1, (f) => f ? -1 : 0)),
803
+ R.disabled(n ?? !1),
804
+ R.valuemin(0),
805
+ R.valuemax(p.map(a, (f) => f ?? 0)),
806
+ R.valuenow(p.map(e, (f) => f ?? 0)),
807
+ R.valuetext(
808
+ L(
809
+ e,
810
+ a
811
+ )((f, F) => {
812
+ const T = f ?? 0, k = F ?? 0;
813
+ return `${String(T)} / ${String(k)}`;
814
+ })
815
+ ),
816
+ // Keyboard & focus handlers
817
+ M.keydown(x),
818
+ g != null ? M.blur(g) : null,
819
+ gt(a, I)
820
+ )
821
+ });
822
+ }, Me = (t) => {
823
+ const { value: e, onChange: s, onInput: n, onBlur: a, after: r, disabled: o, ...c } = t, i = X(e, o, s ?? n);
824
+ return Qt({
825
+ ...c,
826
+ // Map null -> 0 for display so the control shows as empty when null
827
+ value: p.map(e, (l) => l ?? 0),
828
+ // Pass through numeric changes; clear button will call onChange(null)
829
+ onChange: s,
830
+ onInput: n,
831
+ onBlur: a,
832
+ after: r != null ? V(i, r) : i
833
+ });
834
+ }, $e = (t) => {
835
+ const { value: e, step: s, min: n, max: a, onBlur: r, onChange: o, onInput: c } = t;
836
+ return U({
837
+ ...t,
838
+ // Make sure clicks anywhere focus the range input
839
+ focusableSelector: 'input[type="range"]',
840
+ input: _.input(
841
+ u.type("range"),
842
+ E(t),
843
+ u.min(n),
844
+ u.max(a),
845
+ u.step(s),
846
+ // Using value as number to keep it in sync
847
+ u.valueAsNumber(e),
848
+ u.class("bc-input bc-slider-input"),
849
+ r != null ? M.blur(D(r)) : A,
850
+ o != null ? M.change(D(o)) : A,
851
+ c != null ? M.input(D(c)) : A
852
+ )
853
+ });
854
+ }, Ie = (t) => {
855
+ const { value: e, step: s, min: n, max: a, onBlur: r, onChange: o, onInput: c } = t, i = p.map(e, (g) => {
856
+ if (g != null) return g;
857
+ const h = n != null ? p.get(n) : void 0;
858
+ return typeof h == "number" ? h : 0;
859
+ }), l = X(
860
+ e,
861
+ t.disabled,
862
+ o ?? c
863
+ );
864
+ return U(
865
+ {
866
+ ...t,
867
+ focusableSelector: 'input[type="range"]',
868
+ after: l,
869
+ input: _.input(
870
+ u.type("range"),
871
+ E(t),
872
+ u.min(n),
873
+ u.max(a),
874
+ u.step(s),
875
+ u.valueAsNumber(i),
876
+ u.class("bc-input bc-slider-input"),
877
+ r != null ? M.blur(D(r)) : A,
878
+ o != null ? M.change(
879
+ D((g) => {
880
+ o(g);
881
+ })
882
+ ) : A,
883
+ c != null ? M.input(
884
+ D((g) => {
885
+ c(g);
886
+ })
887
+ ) : A
888
+ )
889
+ },
890
+ // Ensure container grows input naturally
891
+ V()
892
+ );
893
+ }, _e = O(wt), Q = ["description", "comment", "notes", "text"];
894
+ function Gt(t) {
895
+ if (typeof t == "boolean") return Q;
896
+ const e = t["x:ui"];
897
+ return e && Array.isArray(e.textAreaTriggers) ? [...Q, ...e.textAreaTriggers] : Q;
898
+ }
899
+ function Jt(t) {
900
+ if (typeof t == "boolean") return;
901
+ const e = t["x:ui"];
902
+ if (e != null && (typeof e == "string" || typeof e == "object" && e !== null))
903
+ return e;
904
+ }
905
+ function Zt(t, e) {
906
+ if (typeof t == "boolean") return;
907
+ const s = Jt(t);
908
+ if (typeof s == "object" && typeof s.widget == "string")
909
+ return {
910
+ widget: s.widget,
911
+ source: "explicit-widget",
912
+ options: s
913
+ };
914
+ const n = typeof s == "string" ? s : typeof s == "object" && typeof s.format == "string" ? s.format : void 0;
915
+ if (n)
916
+ return {
917
+ widget: n,
918
+ source: "explicit-format",
919
+ options: typeof s == "object" ? s : void 0
920
+ };
921
+ if (typeof t.format == "string")
922
+ return {
923
+ widget: {
924
+ datetime: "date-time",
925
+ base64: "binary",
926
+ bytes: "binary",
927
+ iri: "uri",
928
+ "iri-reference": "uri-reference",
929
+ "idn-hostname": "hostname"
930
+ }[t.format] || t.format,
931
+ source: "schema-format"
932
+ };
933
+ if (t.contentMediaType === "text/markdown")
934
+ return {
935
+ widget: "markdown",
936
+ source: "schema-media"
937
+ };
938
+ if (t.contentMediaType != null || t.contentEncoding === "base64")
939
+ return {
940
+ widget: "binary",
941
+ source: "schema-media",
942
+ options: {
943
+ mediaType: t.contentMediaType,
944
+ encoding: t.contentEncoding
945
+ }
946
+ };
947
+ if (t.enum != null)
948
+ return {
949
+ widget: "enum",
950
+ source: "constraints"
951
+ };
952
+ if (t.const != null)
953
+ return {
954
+ widget: "const",
955
+ source: "constraints"
956
+ };
957
+ if ((t.type === "number" || t.type === "integer" || Array.isArray(t.type) && t.type.some((r) => r === "number" || r === "integer")) && t.minimum != null && t.maximum != null)
958
+ return t.maximum - t.minimum <= 5 && t.minimum >= 0 && t.minimum <= 1 && (t.multipleOf == null || t.multipleOf >= 1) ? {
959
+ widget: "rating",
960
+ source: "constraints",
961
+ options: { max: t.maximum }
962
+ } : {
963
+ widget: "slider",
964
+ source: "constraints",
965
+ options: {
966
+ min: t.minimum,
967
+ max: t.maximum,
968
+ step: t.multipleOf
969
+ }
970
+ };
971
+ if (t.type === "string") {
972
+ if (t.minLength != null && t.minLength > 20 || t.maxLength != null && t.maxLength > 100)
973
+ return {
974
+ widget: "textarea",
975
+ source: "heuristics"
976
+ };
977
+ if (e) {
978
+ const r = e.toLowerCase();
979
+ if (r.includes("password") || r.includes("secret"))
980
+ return { widget: "password", source: "heuristics" };
981
+ if (r.includes("email"))
982
+ return { widget: "email", source: "heuristics" };
983
+ if (r.includes("url") || r.includes("link"))
984
+ return { widget: "url", source: "heuristics" };
985
+ if (r.includes("color"))
986
+ return { widget: "color", source: "heuristics" };
987
+ if (Gt(t).some(
988
+ (c) => r.includes(c.toLowerCase())
989
+ ))
990
+ return { widget: "textarea", source: "heuristics" };
991
+ }
992
+ }
993
+ }
994
+ class te {
995
+ widgets = /* @__PURE__ */ new Map();
996
+ typeMapping = /* @__PURE__ */ new Map();
997
+ // JSON Schema type -> widget names
998
+ /**
999
+ * Register a custom widget
1000
+ */
1001
+ register(e, s) {
1002
+ if (this.widgets.set(e, s), s.supportedTypes)
1003
+ for (const n of s.supportedTypes)
1004
+ this.typeMapping.has(n) || this.typeMapping.set(n, []), this.typeMapping.get(n).push(e), this.typeMapping.get(n).sort((a, r) => {
1005
+ const o = this.widgets.get(a)?.priority || 0;
1006
+ return (this.widgets.get(r)?.priority || 0) - o;
1007
+ });
1008
+ }
1009
+ /**
1010
+ * Unregister a widget
1011
+ */
1012
+ unregister(e) {
1013
+ const s = this.widgets.get(e);
1014
+ if (s && (this.widgets.delete(e), s.supportedTypes))
1015
+ for (const n of s.supportedTypes) {
1016
+ const a = this.typeMapping.get(n);
1017
+ if (a) {
1018
+ const r = a.indexOf(e);
1019
+ r >= 0 && a.splice(r, 1), a.length === 0 && this.typeMapping.delete(n);
1020
+ }
1021
+ }
1022
+ }
1023
+ /**
1024
+ * Get a registered widget
1025
+ */
1026
+ get(e) {
1027
+ return this.widgets.get(e);
1028
+ }
1029
+ /**
1030
+ * Get all registered widgets
1031
+ */
1032
+ getAll() {
1033
+ return new Map(this.widgets);
1034
+ }
1035
+ /**
1036
+ * Get widgets that support a specific JSON Schema type
1037
+ */
1038
+ getForType(e) {
1039
+ return (this.typeMapping.get(e) || []).map((n) => this.widgets.get(n)).filter(Boolean);
1040
+ }
1041
+ /**
1042
+ * Find the best widget for a schema context
1043
+ */
1044
+ findBestWidget(e) {
1045
+ const s = Zt(e.definition, e.name);
1046
+ if (s?.widget) {
1047
+ const a = this.widgets.get(s.widget);
1048
+ if (a)
1049
+ return { name: s.widget, registration: a, resolved: s };
1050
+ }
1051
+ const n = [];
1052
+ for (const [a, r] of this.widgets.entries())
1053
+ if (r.matcher)
1054
+ try {
1055
+ r.matcher(e) && n.push({
1056
+ name: a,
1057
+ registration: r,
1058
+ priority: r.priority ?? 0
1059
+ });
1060
+ } catch (o) {
1061
+ console.warn(`Error in matcher for widget "${a}":`, o);
1062
+ }
1063
+ if (n.length > 0) {
1064
+ n.sort((r, o) => o.priority - r.priority);
1065
+ const a = n[0];
1066
+ return {
1067
+ name: a.name,
1068
+ registration: a.registration,
1069
+ resolved: { widget: a.name, source: "heuristics" }
1070
+ };
1071
+ }
1072
+ if (typeof e.definition == "object" && e.definition.type) {
1073
+ const a = Array.isArray(e.definition.type) ? e.definition.type[0] : e.definition.type, r = this.getForType(a);
1074
+ if (r.length > 0) {
1075
+ const o = this.typeMapping.get(a)[0];
1076
+ return {
1077
+ name: o,
1078
+ registration: r[0],
1079
+ resolved: { widget: o, source: "type-fallback" }
1080
+ };
1081
+ }
1082
+ }
1083
+ return null;
1084
+ }
1085
+ }
1086
+ const ke = new te();
1087
+ function Ce(t, e, s) {
1088
+ return {
1089
+ name: t,
1090
+ factory: e,
1091
+ displayName: s?.displayName || t,
1092
+ priority: s?.priority ?? 100,
1093
+ // High priority for explicit matches
1094
+ ...s
1095
+ };
1096
+ }
1097
+ function Te(t, e, s) {
1098
+ return {
1099
+ name: s?.name || `custom-${t}`,
1100
+ factory: e,
1101
+ displayName: s?.displayName || `${t} widget`,
1102
+ priority: s?.priority ?? 75,
1103
+ matcher: (n) => n.definition.format === t,
1104
+ ...s
1105
+ };
1106
+ }
1107
+ function Fe(t, e, s, n) {
1108
+ return {
1109
+ name: n?.name || `custom-${t}-${e}`,
1110
+ factory: s,
1111
+ displayName: n?.displayName || `${t}:${e} widget`,
1112
+ priority: n?.priority ?? 80,
1113
+ matcher: (a) => {
1114
+ const r = a.definition;
1115
+ return r.type === t && r.format === e;
1116
+ },
1117
+ ...n
1118
+ };
1119
+ }
1120
+ export {
1121
+ ie as A,
1122
+ le as B,
1123
+ ue as C,
1124
+ Nt as D,
1125
+ ge as E,
1126
+ Rt as F,
1127
+ Lt as G,
1128
+ pt as H,
1129
+ Bt as I,
1130
+ Z as J,
1131
+ Dt as K,
1132
+ K as L,
1133
+ q as M,
1134
+ de as N,
1135
+ Vt as O,
1136
+ Et as P,
1137
+ P as Q,
1138
+ Qt as R,
1139
+ ye as S,
1140
+ j as T,
1141
+ ke as U,
1142
+ Zt as V,
1143
+ Jt as W,
1144
+ te as X,
1145
+ ut as a,
1146
+ St as b,
1147
+ Te as c,
1148
+ Fe as d,
1149
+ at as e,
1150
+ Ce as f,
1151
+ Ut as g,
1152
+ Ht as h,
1153
+ ce as i,
1154
+ me as j,
1155
+ he as k,
1156
+ be as l,
1157
+ we as m,
1158
+ Yt as n,
1159
+ fe as o,
1160
+ xe as p,
1161
+ Me as q,
1162
+ $e as r,
1163
+ Ie as s,
1164
+ _e as t,
1165
+ pe as u,
1166
+ Ft as v,
1167
+ At as w,
1168
+ vt as x,
1169
+ J as y,
1170
+ W as z
1171
+ };