tekivex-ui 2.5.1 → 2.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +436 -83
- package/dist/TkxForm-DSMDo2Ol.js +388 -0
- package/dist/TkxForm-DwV_n-eE.cjs +12 -0
- package/dist/headless.cjs +1 -1
- package/dist/headless.js +396 -195
- package/dist/i18n.cjs +1 -0
- package/dist/i18n.js +757 -0
- package/dist/index.cjs +27 -22
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4994 -5089
- package/dist/quantum.cjs +91 -0
- package/dist/quantum.js +2312 -0
- package/dist/realtime.cjs +25 -0
- package/dist/realtime.js +944 -0
- package/dist/security-C369oOWH.cjs +1 -0
- package/dist/security-CzAmaMqa.js +97 -0
- package/dist/src/components/TkxDataGrid.d.ts +9 -1
- package/dist/src/components/TkxDataGrid.d.ts.map +1 -1
- package/dist/src/components/TkxDropdown.d.ts +41 -0
- package/dist/src/components/TkxDropdown.d.ts.map +1 -0
- package/dist/src/components/TkxLiveFeed.d.ts +891 -0
- package/dist/src/components/TkxLiveFeed.d.ts.map +1 -0
- package/dist/src/components/TkxLiveLog.d.ts +892 -0
- package/dist/src/components/TkxLiveLog.d.ts.map +1 -0
- package/dist/src/components/TkxLiveMetrics.d.ts +24 -0
- package/dist/src/components/TkxLiveMetrics.d.ts.map +1 -0
- package/dist/src/components/TkxPlayground.d.ts +15 -0
- package/dist/src/components/TkxPlayground.d.ts.map +1 -0
- package/dist/src/components/TkxQuantumForm.d.ts +20 -0
- package/dist/src/components/TkxQuantumForm.d.ts.map +1 -0
- package/dist/src/components/TkxRealTimeChart.d.ts +27 -0
- package/dist/src/components/TkxRealTimeChart.d.ts.map +1 -0
- package/dist/src/components/TkxTable.d.ts +11 -1
- package/dist/src/components/TkxTable.d.ts.map +1 -1
- package/dist/src/components/TkxThemeBuilder.d.ts +9 -0
- package/dist/src/components/TkxThemeBuilder.d.ts.map +1 -0
- package/dist/src/components/index.d.ts +1 -0
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/engine/index.d.ts +2 -0
- package/dist/src/engine/index.d.ts.map +1 -1
- package/dist/src/engine/quantum-ai.d.ts +201 -0
- package/dist/src/engine/quantum-ai.d.ts.map +1 -0
- package/dist/src/engine/tkx.d.ts.map +1 -1
- package/dist/src/headless/index.d.ts +6 -0
- package/dist/src/headless/index.d.ts.map +1 -1
- package/dist/src/headless/useInfiniteQuery.d.ts +35 -0
- package/dist/src/headless/useInfiniteQuery.d.ts.map +1 -0
- package/dist/src/headless/useSSE.d.ts +36 -0
- package/dist/src/headless/useSSE.d.ts.map +1 -0
- package/dist/src/headless/useWebSocket.d.ts +33 -0
- package/dist/src/headless/useWebSocket.d.ts.map +1 -0
- package/dist/src/quantum/index.d.ts +9 -0
- package/dist/src/quantum/index.d.ts.map +1 -0
- package/dist/src/realtime/index.d.ts +9 -0
- package/dist/src/realtime/index.d.ts.map +1 -0
- package/dist/{TkxForm-BWK4LqY3.js → tkx-BJ10JtMv.js} +372 -721
- package/dist/tkx-BeNyC0w7.cjs +4 -0
- package/package.json +16 -1
- package/src/components/TkxDataGrid.tsx +72 -0
- package/src/components/TkxDropdown.tsx +802 -0
- package/src/components/TkxLiveFeed.tsx +329 -0
- package/src/components/TkxLiveLog.tsx +470 -0
- package/src/components/TkxLiveMetrics.tsx +291 -0
- package/src/components/TkxPlayground.tsx +736 -0
- package/src/components/TkxQuantumForm.tsx +592 -0
- package/src/components/TkxRealTimeChart.tsx +381 -0
- package/src/components/TkxTable.tsx +351 -77
- package/src/components/TkxThemeBuilder.tsx +685 -0
- package/src/components/index.ts +4 -0
- package/src/engine/index.ts +2 -0
- package/src/engine/quantum-ai.ts +1045 -0
- package/src/engine/tkx.ts +95 -4
- package/src/headless/index.ts +6 -0
- package/src/headless/useInfiniteQuery.ts +153 -0
- package/src/headless/useSSE.ts +165 -0
- package/src/headless/useWebSocket.ts +229 -0
- package/src/quantum/index.ts +39 -0
- package/src/realtime/index.ts +21 -0
- package/dist/TkxForm-ljQjX7KD.cjs +0 -15
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
import { useRef as f, useEffect as j, useCallback as d, useState as K, useMemo as A, cloneElement as X, useContext as O, createContext as Z } from "react";
|
|
2
|
+
import { G as ee, i as te, w as re, x as ne, u as Q } from "./index-eT_U4qB2.js";
|
|
3
|
+
import { jsx as N, jsxs as T, Fragment as se } from "react/jsx-runtime";
|
|
4
|
+
import { s as G } from "./security-CzAmaMqa.js";
|
|
5
|
+
import { t as g, c as S } from "./tkx-BJ10JtMv.js";
|
|
6
|
+
function pe() {
|
|
7
|
+
const [e, r] = K(() => typeof window > "u" ? !1 : ne());
|
|
8
|
+
return j(() => {
|
|
9
|
+
if (typeof window > "u") return;
|
|
10
|
+
const t = window.matchMedia("(prefers-reduced-motion: reduce)"), s = (i) => r(i.matches);
|
|
11
|
+
return t.addEventListener("change", s), () => t.removeEventListener("change", s);
|
|
12
|
+
}, []), e;
|
|
13
|
+
}
|
|
14
|
+
function Fe() {
|
|
15
|
+
const [e, r] = K(() => typeof window > "u" ? !1 : re());
|
|
16
|
+
return j(() => {
|
|
17
|
+
if (typeof window > "u") return;
|
|
18
|
+
const t = window.matchMedia("(forced-colors: active)"), s = (i) => r(i.matches);
|
|
19
|
+
return t.addEventListener("change", s), () => t.removeEventListener("change", s);
|
|
20
|
+
}, []), e;
|
|
21
|
+
}
|
|
22
|
+
function ge(e) {
|
|
23
|
+
const r = f(null);
|
|
24
|
+
return j(() => {
|
|
25
|
+
if (!e || !r.current) return;
|
|
26
|
+
const t = te(r.current);
|
|
27
|
+
return t.activate(), () => t.deactivate();
|
|
28
|
+
}, [e]), r;
|
|
29
|
+
}
|
|
30
|
+
function ye() {
|
|
31
|
+
const e = f(null);
|
|
32
|
+
return j(() => {
|
|
33
|
+
if (!(typeof document > "u"))
|
|
34
|
+
return e.current = ee(), () => {
|
|
35
|
+
var r;
|
|
36
|
+
(r = e.current) == null || r.destroy();
|
|
37
|
+
};
|
|
38
|
+
}, []), d((r, t = "polite") => {
|
|
39
|
+
var s;
|
|
40
|
+
(s = e.current) == null || s.announce(r, t);
|
|
41
|
+
}, []);
|
|
42
|
+
}
|
|
43
|
+
function ve(e, r = !0) {
|
|
44
|
+
const t = f(e);
|
|
45
|
+
t.current = e, j(() => {
|
|
46
|
+
if (!r || typeof document > "u") return;
|
|
47
|
+
const s = (i) => {
|
|
48
|
+
i.key === "Escape" && t.current();
|
|
49
|
+
};
|
|
50
|
+
return document.addEventListener("keydown", s), () => document.removeEventListener("keydown", s);
|
|
51
|
+
}, [r]);
|
|
52
|
+
}
|
|
53
|
+
function we(e, r) {
|
|
54
|
+
const t = f(r);
|
|
55
|
+
t.current = r, j(() => {
|
|
56
|
+
const s = (i) => {
|
|
57
|
+
!e.current || e.current.contains(i.target) || t.current();
|
|
58
|
+
};
|
|
59
|
+
return document.addEventListener("pointerdown", s), () => document.removeEventListener("pointerdown", s);
|
|
60
|
+
}, [e]);
|
|
61
|
+
}
|
|
62
|
+
const W = Z(null);
|
|
63
|
+
function oe() {
|
|
64
|
+
const e = O(W);
|
|
65
|
+
if (!e)
|
|
66
|
+
throw new Error("TkxFormField must be used inside a <TkxForm>. Wrap your fields in a TkxForm component.");
|
|
67
|
+
return e;
|
|
68
|
+
}
|
|
69
|
+
async function _(e, r) {
|
|
70
|
+
for (const t of r) {
|
|
71
|
+
if (t.required && (e == null || e === "" || Array.isArray(e) && e.length === 0))
|
|
72
|
+
return t.message ?? "This field is required";
|
|
73
|
+
if (!(e == null || e === "")) {
|
|
74
|
+
if (t.min !== void 0) {
|
|
75
|
+
if (typeof e == "string" && e.length < t.min)
|
|
76
|
+
return t.message ?? `Must be at least ${t.min} characters`;
|
|
77
|
+
if (typeof e == "number" && e < t.min)
|
|
78
|
+
return t.message ?? `Must be at least ${t.min}`;
|
|
79
|
+
}
|
|
80
|
+
if (t.max !== void 0) {
|
|
81
|
+
if (typeof e == "string" && e.length > t.max)
|
|
82
|
+
return t.message ?? `Must be no more than ${t.max} characters`;
|
|
83
|
+
if (typeof e == "number" && e > t.max)
|
|
84
|
+
return t.message ?? `Must be no more than ${t.max}`;
|
|
85
|
+
}
|
|
86
|
+
if (t.pattern && typeof e == "string" && !t.pattern.test(e))
|
|
87
|
+
return t.message ?? "Invalid format";
|
|
88
|
+
if (t.validator) {
|
|
89
|
+
const s = await t.validator(e);
|
|
90
|
+
if (s)
|
|
91
|
+
return s;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
function ce(e, r) {
|
|
98
|
+
const t = e ? [...e] : [];
|
|
99
|
+
return r && !t.some((s) => s.required) && t.unshift({ required: !0, message: "This field is required" }), t;
|
|
100
|
+
}
|
|
101
|
+
function ie(e) {
|
|
102
|
+
return e.some((r) => r.required);
|
|
103
|
+
}
|
|
104
|
+
function Ee() {
|
|
105
|
+
const e = O(W), r = f({}), t = f({}), s = f({}), i = A(() => ({
|
|
106
|
+
getFieldValue: (u) => r.current[u],
|
|
107
|
+
setFieldValue: (u, E) => {
|
|
108
|
+
r.current[u] = E;
|
|
109
|
+
},
|
|
110
|
+
getFieldsValue: () => ({ ...r.current }),
|
|
111
|
+
setFieldsValue: (u) => {
|
|
112
|
+
Object.assign(r.current, u);
|
|
113
|
+
},
|
|
114
|
+
validateFields: () => Promise.resolve({ ...r.current }),
|
|
115
|
+
validateField: (u) => Promise.resolve(!0),
|
|
116
|
+
resetFields: () => {
|
|
117
|
+
r.current = {}, t.current = {}, s.current = {};
|
|
118
|
+
},
|
|
119
|
+
getFieldError: (u) => t.current[u] ?? null,
|
|
120
|
+
isFieldTouched: (u) => s.current[u] ?? !1
|
|
121
|
+
}), []);
|
|
122
|
+
return e ? e.instance : i;
|
|
123
|
+
}
|
|
124
|
+
function ue({
|
|
125
|
+
onSubmit: e,
|
|
126
|
+
onValuesChange: r,
|
|
127
|
+
initialValues: t = {},
|
|
128
|
+
layout: s = "vertical",
|
|
129
|
+
disabled: i = !1,
|
|
130
|
+
children: u,
|
|
131
|
+
className: E,
|
|
132
|
+
style: L,
|
|
133
|
+
form: b
|
|
134
|
+
}) {
|
|
135
|
+
const m = Q(), [v, p] = K({
|
|
136
|
+
values: { ...t },
|
|
137
|
+
errors: {},
|
|
138
|
+
touched: {}
|
|
139
|
+
}), H = f(t), h = f({}), x = f(v);
|
|
140
|
+
x.current = v;
|
|
141
|
+
const M = d((n, o) => {
|
|
142
|
+
h.current[n] = o;
|
|
143
|
+
}, []), I = d((n) => {
|
|
144
|
+
delete h.current[n];
|
|
145
|
+
}, []), q = d((n, o) => {
|
|
146
|
+
p((c) => {
|
|
147
|
+
const a = {
|
|
148
|
+
...c,
|
|
149
|
+
values: { ...c.values, [n]: o }
|
|
150
|
+
};
|
|
151
|
+
return r == null || r({ [n]: o }, a.values), a;
|
|
152
|
+
});
|
|
153
|
+
}, [r]), z = d((n, o) => {
|
|
154
|
+
p((c) => ({
|
|
155
|
+
...c,
|
|
156
|
+
errors: { ...c.errors, [n]: o }
|
|
157
|
+
}));
|
|
158
|
+
}, []), w = d((n) => {
|
|
159
|
+
p((o) => ({
|
|
160
|
+
...o,
|
|
161
|
+
touched: { ...o.touched, [n]: !0 }
|
|
162
|
+
}));
|
|
163
|
+
}, []), R = d(async (n) => {
|
|
164
|
+
const o = h.current[n];
|
|
165
|
+
if (!o) return !0;
|
|
166
|
+
const c = x.current.values[n], a = await _(c, o.rules);
|
|
167
|
+
return p((F) => ({
|
|
168
|
+
...F,
|
|
169
|
+
errors: { ...F.errors, [n]: a },
|
|
170
|
+
touched: { ...F.touched, [n]: !0 }
|
|
171
|
+
})), a === null;
|
|
172
|
+
}, []), k = d(async () => {
|
|
173
|
+
const n = Object.keys(h.current), o = await Promise.all(
|
|
174
|
+
n.map(async (l) => {
|
|
175
|
+
const y = h.current[l], U = x.current.values[l], V = await _(U, y.rules);
|
|
176
|
+
return { name: l, error: V };
|
|
177
|
+
})
|
|
178
|
+
), c = {}, a = {};
|
|
179
|
+
let F = !1;
|
|
180
|
+
for (const { name: l, error: y } of o)
|
|
181
|
+
c[l] = y, a[l] = !0, y && (F = !0);
|
|
182
|
+
if (p((l) => ({
|
|
183
|
+
...l,
|
|
184
|
+
errors: { ...l.errors, ...c },
|
|
185
|
+
touched: { ...l.touched, ...a }
|
|
186
|
+
})), F) {
|
|
187
|
+
const l = Object.fromEntries(
|
|
188
|
+
o.filter((y) => y.error).map((y) => [y.name, y.error])
|
|
189
|
+
);
|
|
190
|
+
return Promise.reject(l);
|
|
191
|
+
}
|
|
192
|
+
return { ...x.current.values };
|
|
193
|
+
}, []), P = d(() => {
|
|
194
|
+
p({
|
|
195
|
+
values: { ...H.current },
|
|
196
|
+
errors: {},
|
|
197
|
+
touched: {}
|
|
198
|
+
});
|
|
199
|
+
}, []), Y = A(() => ({
|
|
200
|
+
getFieldValue: (n) => x.current.values[n],
|
|
201
|
+
setFieldValue: q,
|
|
202
|
+
getFieldsValue: () => ({ ...x.current.values }),
|
|
203
|
+
setFieldsValue: (n) => {
|
|
204
|
+
p((o) => {
|
|
205
|
+
const c = { ...o.values, ...n };
|
|
206
|
+
return r == null || r(n, c), { ...o, values: c };
|
|
207
|
+
});
|
|
208
|
+
},
|
|
209
|
+
validateFields: k,
|
|
210
|
+
validateField: R,
|
|
211
|
+
resetFields: P,
|
|
212
|
+
getFieldError: (n) => x.current.errors[n] ?? null,
|
|
213
|
+
isFieldTouched: (n) => !!x.current.touched[n]
|
|
214
|
+
}), [q, k, R, P, r]), C = d(async (n) => {
|
|
215
|
+
n.preventDefault();
|
|
216
|
+
try {
|
|
217
|
+
const o = await k();
|
|
218
|
+
await (e == null ? void 0 : e(o));
|
|
219
|
+
} catch {
|
|
220
|
+
}
|
|
221
|
+
}, [k, e]), $ = s === "inline" ? g("flex flex-row flex-wrap items-end gap-4") : g("flex flex-col gap-5"), B = b ?? Y, D = A(() => ({
|
|
222
|
+
state: v,
|
|
223
|
+
initialValues: H.current,
|
|
224
|
+
layout: s,
|
|
225
|
+
disabled: i,
|
|
226
|
+
fieldMeta: h,
|
|
227
|
+
setFieldValue: q,
|
|
228
|
+
setFieldError: z,
|
|
229
|
+
setFieldTouched: w,
|
|
230
|
+
registerField: M,
|
|
231
|
+
unregisterField: I,
|
|
232
|
+
validateField: R,
|
|
233
|
+
instance: B
|
|
234
|
+
}), [v, s, i, q, z, w, M, I, R, B]);
|
|
235
|
+
return /* @__PURE__ */ N(W.Provider, { value: D, children: /* @__PURE__ */ N(
|
|
236
|
+
"form",
|
|
237
|
+
{
|
|
238
|
+
noValidate: !0,
|
|
239
|
+
role: "form",
|
|
240
|
+
"aria-label": "Form",
|
|
241
|
+
onSubmit: C,
|
|
242
|
+
className: S($, E),
|
|
243
|
+
style: {
|
|
244
|
+
color: m.text,
|
|
245
|
+
...L
|
|
246
|
+
},
|
|
247
|
+
children: u
|
|
248
|
+
}
|
|
249
|
+
) });
|
|
250
|
+
}
|
|
251
|
+
ue.displayName = "TkxForm";
|
|
252
|
+
function ae({
|
|
253
|
+
name: e,
|
|
254
|
+
label: r,
|
|
255
|
+
rules: t,
|
|
256
|
+
help: s,
|
|
257
|
+
required: i,
|
|
258
|
+
children: u,
|
|
259
|
+
className: E,
|
|
260
|
+
style: L
|
|
261
|
+
}) {
|
|
262
|
+
const b = Q(), m = oe(), { state: v, layout: p, disabled: H } = m, h = A(() => ce(t, i), [t, i]), x = ie(h), M = f({ rules: h });
|
|
263
|
+
M.current.rules = h;
|
|
264
|
+
const I = f(!1);
|
|
265
|
+
I.current || (m.registerField(e, M.current), I.current = !0), A(() => {
|
|
266
|
+
m.registerField(e, M.current);
|
|
267
|
+
}, [h, e, m]);
|
|
268
|
+
const q = v.values[e], z = v.touched[e] ? v.errors[e] ?? null : null, w = z ? G(z) : null, R = r ? G(r) : void 0, k = s ? G(s) : void 0, P = d(
|
|
269
|
+
(c) => {
|
|
270
|
+
let a;
|
|
271
|
+
if (c !== null && typeof c == "object" && "target" in c) {
|
|
272
|
+
const F = c.target;
|
|
273
|
+
a = F.type === "checkbox" ? F.checked : F.value;
|
|
274
|
+
} else
|
|
275
|
+
a = c;
|
|
276
|
+
m.setFieldValue(e, a);
|
|
277
|
+
},
|
|
278
|
+
[m, e]
|
|
279
|
+
), Y = d(() => {
|
|
280
|
+
m.setFieldTouched(e), m.validateField(e);
|
|
281
|
+
}, [m, e]), C = X(u, {
|
|
282
|
+
value: q ?? "",
|
|
283
|
+
onChange: P,
|
|
284
|
+
onBlur: Y,
|
|
285
|
+
error: w ?? void 0,
|
|
286
|
+
isInvalid: !!w,
|
|
287
|
+
isRequired: x,
|
|
288
|
+
disabled: H || u.props.disabled,
|
|
289
|
+
name: e
|
|
290
|
+
}), $ = p === "horizontal", B = p === "inline", D = /* @__PURE__ */ N("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ N("path", { d: "M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" }) }), n = R ? /* @__PURE__ */ T(
|
|
291
|
+
"label",
|
|
292
|
+
{
|
|
293
|
+
className: g(
|
|
294
|
+
"text-sm font-medium font-sans",
|
|
295
|
+
$ ? "min-w-[140px] pt-2.5" : ""
|
|
296
|
+
),
|
|
297
|
+
style: { color: b.text },
|
|
298
|
+
children: [
|
|
299
|
+
R,
|
|
300
|
+
x && /* @__PURE__ */ N("span", { "aria-hidden": "true", className: g("ml-1"), style: { color: b.danger }, children: "*" })
|
|
301
|
+
]
|
|
302
|
+
}
|
|
303
|
+
) : null, o = /* @__PURE__ */ T(se, { children: [
|
|
304
|
+
k && !w && /* @__PURE__ */ N("span", { className: g("text-xs mt-0.5"), style: { color: b.textMuted }, children: k }),
|
|
305
|
+
w && /* @__PURE__ */ T(
|
|
306
|
+
"span",
|
|
307
|
+
{
|
|
308
|
+
role: "alert",
|
|
309
|
+
className: g("text-xs flex items-center gap-1 mt-0.5"),
|
|
310
|
+
style: {
|
|
311
|
+
color: b.danger,
|
|
312
|
+
animation: "tkxFormErrorReveal 200ms ease-out"
|
|
313
|
+
},
|
|
314
|
+
children: [
|
|
315
|
+
D,
|
|
316
|
+
w
|
|
317
|
+
]
|
|
318
|
+
}
|
|
319
|
+
)
|
|
320
|
+
] });
|
|
321
|
+
return B ? /* @__PURE__ */ T(
|
|
322
|
+
"div",
|
|
323
|
+
{
|
|
324
|
+
className: S(g("flex flex-col gap-1"), E),
|
|
325
|
+
style: L,
|
|
326
|
+
children: [
|
|
327
|
+
n,
|
|
328
|
+
C,
|
|
329
|
+
o
|
|
330
|
+
]
|
|
331
|
+
}
|
|
332
|
+
) : $ ? /* @__PURE__ */ T(
|
|
333
|
+
"div",
|
|
334
|
+
{
|
|
335
|
+
className: S(g("flex flex-row gap-4 items-start"), E),
|
|
336
|
+
style: L,
|
|
337
|
+
children: [
|
|
338
|
+
n,
|
|
339
|
+
/* @__PURE__ */ T("div", { className: g("flex flex-col gap-1 flex-1 min-w-0"), children: [
|
|
340
|
+
C,
|
|
341
|
+
o
|
|
342
|
+
] })
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
) : /* @__PURE__ */ T(
|
|
346
|
+
"div",
|
|
347
|
+
{
|
|
348
|
+
className: S(g("flex flex-col gap-1"), E),
|
|
349
|
+
style: L,
|
|
350
|
+
children: [
|
|
351
|
+
n,
|
|
352
|
+
C,
|
|
353
|
+
o
|
|
354
|
+
]
|
|
355
|
+
}
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
ae.displayName = "TkxFormField";
|
|
359
|
+
let J = !1;
|
|
360
|
+
function le() {
|
|
361
|
+
if (J || typeof document > "u") return;
|
|
362
|
+
J = !0;
|
|
363
|
+
const e = document.createElement("style");
|
|
364
|
+
e.setAttribute("data-tkx-form", ""), e.textContent = `
|
|
365
|
+
@keyframes tkxFormErrorReveal {
|
|
366
|
+
from {
|
|
367
|
+
opacity: 0;
|
|
368
|
+
transform: translateY(-4px);
|
|
369
|
+
}
|
|
370
|
+
to {
|
|
371
|
+
opacity: 1;
|
|
372
|
+
transform: translateY(0);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
`, document.head.appendChild(e);
|
|
376
|
+
}
|
|
377
|
+
le();
|
|
378
|
+
export {
|
|
379
|
+
ue as T,
|
|
380
|
+
ye as a,
|
|
381
|
+
ge as b,
|
|
382
|
+
ve as c,
|
|
383
|
+
we as d,
|
|
384
|
+
ae as e,
|
|
385
|
+
Fe as f,
|
|
386
|
+
Ee as g,
|
|
387
|
+
pe as u
|
|
388
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";const n=require("react"),C=require("./index-BINBzXuY.cjs"),l=require("react/jsx-runtime"),$=require("./security-C369oOWH.cjs"),d=require("./tkx-BeNyC0w7.cjs");function G(){const[e,r]=n.useState(()=>typeof window>"u"?!1:C.prefersReducedMotion());return n.useEffect(()=>{if(typeof window>"u")return;const t=window.matchMedia("(prefers-reduced-motion: reduce)"),o=i=>r(i.matches);return t.addEventListener("change",o),()=>t.removeEventListener("change",o)},[]),e}function J(){const[e,r]=n.useState(()=>typeof window>"u"?!1:C.prefersHighContrast());return n.useEffect(()=>{if(typeof window>"u")return;const t=window.matchMedia("(forced-colors: active)"),o=i=>r(i.matches);return t.addEventListener("change",o),()=>t.removeEventListener("change",o)},[]),e}function Q(e){const r=n.useRef(null);return n.useEffect(()=>{if(!e||!r.current)return;const t=C.createFocusTrap(r.current);return t.activate(),()=>t.deactivate()},[e]),r}function U(){const e=n.useRef(null);return n.useEffect(()=>{if(!(typeof document>"u"))return e.current=C.createAnnouncer(),()=>{var r;(r=e.current)==null||r.destroy()}},[]),n.useCallback((r,t="polite")=>{var o;(o=e.current)==null||o.announce(r,t)},[])}function V(e,r=!0){const t=n.useRef(e);t.current=e,n.useEffect(()=>{if(!r||typeof document>"u")return;const o=i=>{i.key==="Escape"&&t.current()};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[r])}function X(e,r){const t=n.useRef(r);t.current=r,n.useEffect(()=>{const o=i=>{!e.current||e.current.contains(i.target)||t.current()};return document.addEventListener("pointerdown",o),()=>document.removeEventListener("pointerdown",o)},[e])}const B=n.createContext(null);function Z(){const e=n.useContext(B);if(!e)throw new Error("TkxFormField must be used inside a <TkxForm>. Wrap your fields in a TkxForm component.");return e}async function K(e,r){for(const t of r){if(t.required&&(e==null||e===""||Array.isArray(e)&&e.length===0))return t.message??"This field is required";if(!(e==null||e==="")){if(t.min!==void 0){if(typeof e=="string"&&e.length<t.min)return t.message??`Must be at least ${t.min} characters`;if(typeof e=="number"&&e<t.min)return t.message??`Must be at least ${t.min}`}if(t.max!==void 0){if(typeof e=="string"&&e.length>t.max)return t.message??`Must be no more than ${t.max} characters`;if(typeof e=="number"&&e>t.max)return t.message??`Must be no more than ${t.max}`}if(t.pattern&&typeof e=="string"&&!t.pattern.test(e))return t.message??"Invalid format";if(t.validator){const o=await t.validator(e);if(o)return o}}}return null}function ee(e,r){const t=e?[...e]:[];return r&&!t.some(o=>o.required)&&t.unshift({required:!0,message:"This field is required"}),t}function te(e){return e.some(r=>r.required)}function re(){const e=n.useContext(B),r=n.useRef({}),t=n.useRef({}),o=n.useRef({}),i=n.useMemo(()=>({getFieldValue:a=>r.current[a],setFieldValue:(a,v)=>{r.current[a]=v},getFieldsValue:()=>({...r.current}),setFieldsValue:a=>{Object.assign(r.current,a)},validateFields:()=>Promise.resolve({...r.current}),validateField:a=>Promise.resolve(!0),resetFields:()=>{r.current={},t.current={},o.current={}},getFieldError:a=>t.current[a]??null,isFieldTouched:a=>o.current[a]??!1}),[]);return e?e.instance:i}function D({onSubmit:e,onValuesChange:r,initialValues:t={},layout:o="vertical",disabled:i=!1,children:a,className:v,style:M,form:b}){const x=C.useTheme(),[y,p]=n.useState({values:{...t},errors:{},touched:{}}),z=n.useRef(t),h=n.useRef({}),F=n.useRef(y);F.current=y;const T=n.useCallback((s,c)=>{h.current[s]=c},[]),q=n.useCallback(s=>{delete h.current[s]},[]),j=n.useCallback((s,c)=>{p(u=>{const f={...u,values:{...u.values,[s]:c}};return r==null||r({[s]:c},f.values),f})},[r]),N=n.useCallback((s,c)=>{p(u=>({...u,errors:{...u.errors,[s]:c}}))},[]),R=n.useCallback(s=>{p(c=>({...c,touched:{...c.touched,[s]:!0}}))},[]),w=n.useCallback(async s=>{const c=h.current[s];if(!c)return!0;const u=F.current.values[s],f=await K(u,c.rules);return p(g=>({...g,errors:{...g.errors,[s]:f},touched:{...g.touched,[s]:!0}})),f===null},[]),E=n.useCallback(async()=>{const s=Object.keys(h.current),c=await Promise.all(s.map(async m=>{const k=h.current[m],W=F.current.values[m],_=await K(W,k.rules);return{name:m,error:_}})),u={},f={};let g=!1;for(const{name:m,error:k}of c)u[m]=k,f[m]=!0,k&&(g=!0);if(p(m=>({...m,errors:{...m.errors,...u},touched:{...m.touched,...f}})),g){const m=Object.fromEntries(c.filter(k=>k.error).map(k=>[k.name,k.error]));return Promise.reject(m)}return{...F.current.values}},[]),I=n.useCallback(()=>{p({values:{...z.current},errors:{},touched:{}})},[]),S=n.useMemo(()=>({getFieldValue:s=>F.current.values[s],setFieldValue:j,getFieldsValue:()=>({...F.current.values}),setFieldsValue:s=>{p(c=>{const u={...c.values,...s};return r==null||r(s,u),{...c,values:u}})},validateFields:E,validateField:w,resetFields:I,getFieldError:s=>F.current.errors[s]??null,isFieldTouched:s=>!!F.current.touched[s]}),[j,E,w,I,r]),L=n.useCallback(async s=>{s.preventDefault();try{const c=await E();await(e==null?void 0:e(c))}catch{}},[E,e]),A=o==="inline"?d.tkx("flex flex-row flex-wrap items-end gap-4"):d.tkx("flex flex-col gap-5"),H=b??S,P=n.useMemo(()=>({state:y,initialValues:z.current,layout:o,disabled:i,fieldMeta:h,setFieldValue:j,setFieldError:N,setFieldTouched:R,registerField:T,unregisterField:q,validateField:w,instance:H}),[y,o,i,j,N,R,T,q,w,H]);return l.jsx(B.Provider,{value:P,children:l.jsx("form",{noValidate:!0,role:"form","aria-label":"Form",onSubmit:L,className:d.cx(A,v),style:{color:x.text,...M},children:a})})}D.displayName="TkxForm";function O({name:e,label:r,rules:t,help:o,required:i,children:a,className:v,style:M}){const b=C.useTheme(),x=Z(),{state:y,layout:p,disabled:z}=x,h=n.useMemo(()=>ee(t,i),[t,i]),F=te(h),T=n.useRef({rules:h});T.current.rules=h;const q=n.useRef(!1);q.current||(x.registerField(e,T.current),q.current=!0),n.useMemo(()=>{x.registerField(e,T.current)},[h,e,x]);const j=y.values[e],N=y.touched[e]?y.errors[e]??null:null,R=N?$.sanitizeString(N):null,w=r?$.sanitizeString(r):void 0,E=o?$.sanitizeString(o):void 0,I=n.useCallback(u=>{let f;if(u!==null&&typeof u=="object"&&"target"in u){const g=u.target;f=g.type==="checkbox"?g.checked:g.value}else f=u;x.setFieldValue(e,f)},[x,e]),S=n.useCallback(()=>{x.setFieldTouched(e),x.validateField(e)},[x,e]),L=n.cloneElement(a,{value:j??"",onChange:I,onBlur:S,error:R??void 0,isInvalid:!!R,isRequired:F,disabled:z||a.props.disabled,name:e}),A=p==="horizontal",H=p==="inline",P=l.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:l.jsx("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})}),s=w?l.jsxs("label",{className:d.tkx("text-sm font-medium font-sans",A?"min-w-[140px] pt-2.5":""),style:{color:b.text},children:[w,F&&l.jsx("span",{"aria-hidden":"true",className:d.tkx("ml-1"),style:{color:b.danger},children:"*"})]}):null,c=l.jsxs(l.Fragment,{children:[E&&!R&&l.jsx("span",{className:d.tkx("text-xs mt-0.5"),style:{color:b.textMuted},children:E}),R&&l.jsxs("span",{role:"alert",className:d.tkx("text-xs flex items-center gap-1 mt-0.5"),style:{color:b.danger,animation:"tkxFormErrorReveal 200ms ease-out"},children:[P,R]})]});return H?l.jsxs("div",{className:d.cx(d.tkx("flex flex-col gap-1"),v),style:M,children:[s,L,c]}):A?l.jsxs("div",{className:d.cx(d.tkx("flex flex-row gap-4 items-start"),v),style:M,children:[s,l.jsxs("div",{className:d.tkx("flex flex-col gap-1 flex-1 min-w-0"),children:[L,c]})]}):l.jsxs("div",{className:d.cx(d.tkx("flex flex-col gap-1"),v),style:M,children:[s,L,c]})}O.displayName="TkxFormField";let Y=!1;function ne(){if(Y||typeof document>"u")return;Y=!0;const e=document.createElement("style");e.setAttribute("data-tkx-form",""),e.textContent=`
|
|
2
|
+
@keyframes tkxFormErrorReveal {
|
|
3
|
+
from {
|
|
4
|
+
opacity: 0;
|
|
5
|
+
transform: translateY(-4px);
|
|
6
|
+
}
|
|
7
|
+
to {
|
|
8
|
+
opacity: 1;
|
|
9
|
+
transform: translateY(0);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
`,document.head.appendChild(e)}ne();exports.TkxForm=D;exports.TkxFormField=O;exports.useAnnounce=U;exports.useClickOutside=X;exports.useEscapeKey=V;exports.useFocusTrap=Q;exports.useHighContrast=J;exports.useReducedMotion=G;exports.useTkxForm=re;
|
package/dist/headless.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("./TkxForm-ljQjX7KD.cjs"),y=require("./index-BINBzXuY.cjs"),t=require("react");function v(e=!1){const[c,s]=t.useState(e),n=t.useCallback(()=>s(!0),[]),r=t.useCallback(()=>s(!1),[]),u=t.useCallback(()=>s(o=>!o),[]);return{isOpen:c,open:n,close:r,toggle:u}}function p({count:e,initialIndex:c=0,orientation:s="horizontal",loop:n=!0}){const[r,u]=t.useState(c),o=t.useRef([]),a=t.useCallback(i=>{u(l=>{let b=l+i;return n?b=(b%e+e)%e:b=Math.max(0,Math.min(e-1,b)),requestAnimationFrame(()=>{var k;(k=o.current[b])==null||k.focus()}),b})},[e,n]),S=t.useCallback(i=>({tabIndex:i===r?0:-1,"data-focused":i===r,onFocus:()=>u(i),onKeyDown:l=>{const b=s==="horizontal"||s==="both",k=s==="vertical"||s==="both";b&&l.key==="ArrowRight"&&(l.preventDefault(),a(1)),b&&l.key==="ArrowLeft"&&(l.preventDefault(),a(-1)),k&&l.key==="ArrowDown"&&(l.preventDefault(),a(1)),k&&l.key==="ArrowUp"&&(l.preventDefault(),a(-1)),l.key==="Home"&&(l.preventDefault(),u(0),requestAnimationFrame(()=>{var C;return(C=o.current[0])==null?void 0:C.focus()})),l.key==="End"&&(l.preventDefault(),u(e-1),requestAnimationFrame(()=>{var C;return(C=o.current[e-1])==null?void 0:C.focus()}))}}),[r,a,s,e]);return{focusedIndex:r,setFocusedIndex:u,getItemProps:S}}function I({initialValues:e,validate:c}){const[s,n]=t.useState({...e}),[r,u]=t.useState({}),[o,a]=t.useState({}),S=t.useRef(e),i=t.useCallback((d,h)=>{n(A=>({...A,[d]:h}))},[]),l=t.useCallback(d=>{n(h=>({...h,...d}))},[]),b=t.useCallback(d=>{a(h=>({...h,[d]:!0}))},[]),k=t.useCallback(()=>{if(!c)return!0;const d=c(s),h=Object.fromEntries(Object.entries(d).filter(([,x])=>x!=null));u(h);const A=Object.fromEntries(Object.keys(s).map(x=>[x,!0]));return a(A),Object.keys(h).length===0},[s,c]),C=t.useCallback(()=>{n({...S.current}),u({}),a({})},[]),f=Object.keys(s).some(d=>s[d]!==S.current[d]),m=Object.keys(r).length===0,w=t.useCallback(d=>({value:s[d],onChange:h=>{i(d,h.target.value)},onBlur:()=>b(d),"aria-invalid":o[d]&&r[d]?!0:void 0,"aria-describedby":r[d]?`${String(d)}-error`:void 0}),[s,r,o,i,b]);return{values:s,errors:r,touched:o,dirty:f,isValid:m,setValue:i,setValues:l,touchField:b,validate:k,reset:C,getFieldProps:w}}function O({items:e,initialSelected:c=[],multiple:s=!0}){const[n,r]=t.useState(()=>new Set(c)),u=t.useCallback(f=>{r(m=>{const w=new Set(m);return w.has(f)?w.delete(f):(s||w.clear(),w.add(f)),w})},[s]),o=t.useCallback(f=>{r(m=>{if(m.has(f))return m;const w=s?new Set(m):new Set;return w.add(f),w})},[s]),a=t.useCallback(f=>{r(m=>{if(!m.has(f))return m;const w=new Set(m);return w.delete(f),w})},[]),S=t.useCallback(()=>{s&&r(new Set(e))},[e,s]),i=t.useCallback(()=>r(new Set),[]),l=t.useCallback(()=>{r(f=>e.every(w=>f.has(w))?new Set:new Set(e))},[e]),b=e.length>0&&e.every(f=>n.has(f)),k=e.some(f=>n.has(f)),C=t.useMemo(()=>Array.from(n),[n]);return{selected:n,isSelected:t.useCallback(f=>n.has(f),[n]),toggle:u,select:o,deselect:a,selectAll:S,deselectAll:i,toggleAll:l,allSelected:b,someSelected:k,selectedCount:n.size,selectedArray:C}}function R(e,c){const[s,n]=t.useState(e);return t.useEffect(()=>{const r=setTimeout(()=>n(e),c);return()=>clearTimeout(r)},[e,c]),s}function T(e,c){const[s,n]=t.useState(e),r=t.useRef(Date.now());return t.useEffect(()=>{const u=Date.now(),o=c-(u-r.current);if(o<=0)r.current=u,n(e);else{const a=setTimeout(()=>{r.current=Date.now(),n(e)},o);return()=>clearTimeout(a)}},[e,c]),s}function D({value:e,onChange:c,defaultValue:s}){const n=e!==void 0,[r,u]=t.useState(s),o=t.useRef(c);o.current=c;const a=t.useCallback(S=>{var i;n||u(S),(i=o.current)==null||i.call(o,S)},[n]);return[n?e:r,a]}function E(e){const[c,s]=t.useState(()=>typeof window>"u"?!1:window.matchMedia(e).matches);return t.useEffect(()=>{if(typeof window>"u")return;const n=window.matchMedia(e);s(n.matches);const r=u=>s(u.matches);return n.addEventListener("change",r),()=>n.removeEventListener("change",r)},[e]),c}function F(e,c){const[s,n]=t.useState(()=>{if(typeof window>"u")return c;try{const o=window.localStorage.getItem(e);return o!==null?JSON.parse(o):c}catch{return c}}),r=t.useCallback(o=>{n(a=>{const S=typeof o=="function"?o(a):o;if(typeof window<"u")try{window.localStorage.setItem(e,JSON.stringify(S))}catch{}return S})},[e]),u=t.useCallback(()=>{if(n(c),typeof window<"u")try{window.localStorage.removeItem(e)}catch{}},[e,c]);return[s,r,u]}function V({threshold:e=0,rootMargin:c="0px",root:s=null,once:n=!1}={}){const r=t.useRef(null),[u,o]=t.useState(null),a=t.useRef(null);return t.useEffect(()=>{const S=r.current;if(!(!S||typeof IntersectionObserver>"u"))return a.current=new IntersectionObserver(([i])=>{var l;o(i),n&&i.isIntersecting&&((l=a.current)==null||l.unobserve(S))},{threshold:e,rootMargin:c,root:s}),a.current.observe(S),()=>{var i;return(i=a.current)==null?void 0:i.disconnect()}},[e,c,s,n]),{ref:r,isIntersecting:(u==null?void 0:u.isIntersecting)??!1,entry:u}}exports.cx=g.cx;exports.extractAtomicCSS=g.extractAtomicCSS;exports.resetAtomicCSS=g.resetAtomicCSS;exports.sanitizeProps=g.sanitizeProps;exports.sanitizeString=g.sanitizeString;exports.tkxListPlugins=g.tkxListPlugins;exports.tkxPlugin=g.tkxPlugin;exports.tkxRemovePlugin=g.tkxRemovePlugin;exports.useAnnounce=g.useAnnounce;exports.useClickOutside=g.useClickOutside;exports.useEscapeKey=g.useEscapeKey;exports.useFocusTrap=g.useFocusTrap;exports.useHighContrast=g.useHighContrast;exports.useReducedMotion=g.useReducedMotion;exports.useTkxForm=g.useTkxForm;exports.contrastRatio=y.contrastRatio;exports.cssVar=y.cssVar;exports.extractCSS=y.extractCSS;exports.injectStyles=y.injectStyles;exports.meetsAA=y.meetsAA;exports.meetsAAA=y.meetsAAA;exports.resetStyles=y.resetStyles;exports.useControllable=D;exports.useDebounce=R;exports.useDisclosure=v;exports.useFormState=I;exports.useIntersectionObserver=V;exports.useListSelection=O;exports.useLocalStorage=F;exports.useMediaQuery=E;exports.useRovingTabIndex=p;exports.useThrottle=T;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("./TkxForm-DwV_n-eE.cjs"),J=require("./tkx-BeNyC0w7.cjs"),q=require("./index-BINBzXuY.cjs"),B=require("./security-C369oOWH.cjs"),e=require("react");function Y(t=!1){const[c,n]=e.useState(t),s=e.useCallback(()=>n(!0),[]),r=e.useCallback(()=>n(!1),[]),o=e.useCallback(()=>n(u=>!u),[]);return{isOpen:c,open:s,close:r,toggle:o}}function Z({count:t,initialIndex:c=0,orientation:n="horizontal",loop:s=!0}){const[r,o]=e.useState(c),u=e.useRef([]),l=e.useCallback(i=>{o(d=>{let y=d+i;return s?y=(y%t+t)%t:y=Math.max(0,Math.min(t-1,y)),requestAnimationFrame(()=>{var w;(w=u.current[y])==null||w.focus()}),y})},[t,s]),S=e.useCallback(i=>({tabIndex:i===r?0:-1,"data-focused":i===r,onFocus:()=>o(i),onKeyDown:d=>{const y=n==="horizontal"||n==="both",w=n==="vertical"||n==="both";y&&d.key==="ArrowRight"&&(d.preventDefault(),l(1)),y&&d.key==="ArrowLeft"&&(d.preventDefault(),l(-1)),w&&d.key==="ArrowDown"&&(d.preventDefault(),l(1)),w&&d.key==="ArrowUp"&&(d.preventDefault(),l(-1)),d.key==="Home"&&(d.preventDefault(),o(0),requestAnimationFrame(()=>{var m;return(m=u.current[0])==null?void 0:m.focus()})),d.key==="End"&&(d.preventDefault(),o(t-1),requestAnimationFrame(()=>{var m;return(m=u.current[t-1])==null?void 0:m.focus()}))}}),[r,l,n,t]);return{focusedIndex:r,setFocusedIndex:o,getItemProps:S}}function _({initialValues:t,validate:c}){const[n,s]=e.useState({...t}),[r,o]=e.useState({}),[u,l]=e.useState({}),S=e.useRef(t),i=e.useCallback((f,b)=>{s(x=>({...x,[f]:b}))},[]),d=e.useCallback(f=>{s(b=>({...b,...f}))},[]),y=e.useCallback(f=>{l(b=>({...b,[f]:!0}))},[]),w=e.useCallback(()=>{if(!c)return!0;const f=c(n),b=Object.fromEntries(Object.entries(f).filter(([,A])=>A!=null));o(b);const x=Object.fromEntries(Object.keys(n).map(A=>[A,!0]));return l(x),Object.keys(b).length===0},[n,c]),m=e.useCallback(()=>{s({...S.current}),o({}),l({})},[]),g=Object.keys(n).some(f=>n[f]!==S.current[f]),k=Object.keys(r).length===0,a=e.useCallback(f=>({value:n[f],onChange:b=>{i(f,b.target.value)},onBlur:()=>y(f),"aria-invalid":u[f]&&r[f]?!0:void 0,"aria-describedby":r[f]?`${String(f)}-error`:void 0}),[n,r,u,i,y]);return{values:n,errors:r,touched:u,dirty:g,isValid:k,setValue:i,setValues:d,touchField:y,validate:w,reset:m,getFieldProps:a}}function ee({items:t,initialSelected:c=[],multiple:n=!0}){const[s,r]=e.useState(()=>new Set(c)),o=e.useCallback(g=>{r(k=>{const a=new Set(k);return a.has(g)?a.delete(g):(n||a.clear(),a.add(g)),a})},[n]),u=e.useCallback(g=>{r(k=>{if(k.has(g))return k;const a=n?new Set(k):new Set;return a.add(g),a})},[n]),l=e.useCallback(g=>{r(k=>{if(!k.has(g))return k;const a=new Set(k);return a.delete(g),a})},[]),S=e.useCallback(()=>{n&&r(new Set(t))},[t,n]),i=e.useCallback(()=>r(new Set),[]),d=e.useCallback(()=>{r(g=>t.every(a=>g.has(a))?new Set:new Set(t))},[t]),y=t.length>0&&t.every(g=>s.has(g)),w=t.some(g=>s.has(g)),m=e.useMemo(()=>Array.from(s),[s]);return{selected:s,isSelected:e.useCallback(g=>s.has(g),[s]),toggle:o,select:u,deselect:l,selectAll:S,deselectAll:i,toggleAll:d,allSelected:y,someSelected:w,selectedCount:s.size,selectedArray:m}}function te(t,c){const[n,s]=e.useState(t);return e.useEffect(()=>{const r=setTimeout(()=>s(t),c);return()=>clearTimeout(r)},[t,c]),n}function ne(t,c){const[n,s]=e.useState(t),r=e.useRef(Date.now());return e.useEffect(()=>{const o=Date.now(),u=c-(o-r.current);if(u<=0)r.current=o,s(t);else{const l=setTimeout(()=>{r.current=Date.now(),s(t)},u);return()=>clearTimeout(l)}},[t,c]),n}function re({value:t,onChange:c,defaultValue:n}){const s=t!==void 0,[r,o]=e.useState(n),u=e.useRef(c);u.current=c;const l=e.useCallback(S=>{var i;s||o(S),(i=u.current)==null||i.call(u,S)},[s]);return[s?t:r,l]}function se(t){const[c,n]=e.useState(()=>typeof window>"u"?!1:window.matchMedia(t).matches);return e.useEffect(()=>{if(typeof window>"u")return;const s=window.matchMedia(t);n(s.matches);const r=o=>n(o.matches);return s.addEventListener("change",r),()=>s.removeEventListener("change",r)},[t]),c}function ce(t,c){const[n,s]=e.useState(()=>{if(typeof window>"u")return c;try{const u=window.localStorage.getItem(t);return u!==null?JSON.parse(u):c}catch{return c}}),r=e.useCallback(u=>{s(l=>{const S=typeof u=="function"?u(l):u;if(typeof window<"u")try{window.localStorage.setItem(t,JSON.stringify(S))}catch{}return S})},[t]),o=e.useCallback(()=>{if(s(c),typeof window<"u")try{window.localStorage.removeItem(t)}catch{}},[t,c]);return[n,r,o]}function ue({threshold:t=0,rootMargin:c="0px",root:n=null,once:s=!1}={}){const r=e.useRef(null),[o,u]=e.useState(null),l=e.useRef(null);return e.useEffect(()=>{const S=r.current;if(!(!S||typeof IntersectionObserver>"u"))return l.current=new IntersectionObserver(([i])=>{var d;u(i),s&&i.isIntersecting&&((d=l.current)==null||d.unobserve(S))},{threshold:t,rootMargin:c,root:n}),l.current.observe(S),()=>{var i;return(i=l.current)==null?void 0:i.disconnect()}},[t,c,n,s]),{ref:r,isIntersecting:(o==null?void 0:o.isIntersecting)??!1,entry:o}}function oe(t){const{url:c,protocols:n,reconnect:s=!0,reconnectDelay:r=1e3,reconnectAttempts:o=10,heartbeatInterval:u=3e4,heartbeatMessage:l="ping",onOpen:S,onClose:i,onError:d,onMessage:y}=t,[w,m]=e.useState("disconnected"),[g,k]=e.useState(null),[a,f]=e.useState([]),[b,x]=e.useState(0),[A,F]=e.useState(null),h=e.useRef(null),O=e.useRef(0),V=e.useRef(null),D=e.useRef(null),L=e.useRef(null),p=e.useRef([]),R=e.useRef(!0),T=e.useRef(!1),C=e.useRef(S),M=e.useRef(i),P=e.useRef(d),Q=e.useRef(y);C.current=S,M.current=i,P.current=d,Q.current=y;const z=e.useCallback(()=>{V.current&&(clearTimeout(V.current),V.current=null),D.current&&(clearInterval(D.current),D.current=null)},[]),U=e.useCallback(E=>{for(;p.current.length>0;){const I=p.current.shift();I!==void 0&&E.send(typeof I=="string"?I:JSON.stringify(I))}},[]),K=e.useCallback(()=>{if(h.current&&h.current.readyState===WebSocket.OPEN)return;T.current=!1,z(),R.current&&m("connecting");const E=new WebSocket(c,n);h.current=E,E.onopen=I=>{var v;R.current&&(m("connected"),O.current=0,x(0),(v=C.current)==null||v.call(C,I),U(E),D.current=setInterval(()=>{if(E.readyState===WebSocket.OPEN){L.current=Date.now();try{E.send(JSON.stringify({type:"ping",t:L.current}))}catch{}}},u))},E.onmessage=I=>{var W;if(!R.current)return;let v;try{v=JSON.parse(I.data)}catch{v=I.data}const j=v;if(j&&typeof j=="object"&&j.type==="pong"&&typeof j.t=="number"){F(Date.now()-j.t);return}if(v===l&&L.current!==null){F(Date.now()-L.current),L.current=null;return}k(v),f(X=>{const H=[...X,v];return H.length>100?H.slice(H.length-100):H}),(W=Q.current)==null||W.call(Q,v)},E.onerror=I=>{var v;R.current&&(m("error"),(v=P.current)==null||v.call(P,I))},E.onclose=I=>{var v;if(R.current&&(z(),m("disconnected"),(v=M.current)==null||v.call(M,I),!T.current&&s&&O.current<o)){const j=O.current,W=r*Math.pow(1.5,j);O.current+=1,x(O.current),V.current=setTimeout(()=>{R.current&&K()},W)}}},[c,n,s,r,o,u,l,z,U]),$=e.useCallback(()=>{T.current=!0,z(),h.current&&(h.current.close(),h.current=null),R.current&&m("disconnected")},[z]),G=e.useCallback(E=>{h.current&&h.current.readyState===WebSocket.OPEN?h.current.send(typeof E=="string"?E:JSON.stringify(E)):p.current.push(E)},[]);return e.useEffect(()=>(R.current=!0,K(),()=>{R.current=!1,T.current=!0,z(),h.current&&(h.current.close(),h.current=null)}),[]),{status:w,lastMessage:g,messages:a,send:G,connect:K,disconnect:$,reconnectCount:b,latency:A}}function ae(t){const{url:c,events:n=["message"],withCredentials:s=!1,reconnect:r=!0,reconnectDelay:o=3e3,onOpen:u,onError:l}=t,[S,i]=e.useState("connecting"),[d,y]=e.useState(null),[w,m]=e.useState([]),[g,k]=e.useState(0),a=e.useRef(null),f=e.useRef(null),b=e.useRef(!0),x=e.useRef(!1),A=e.useRef(u),F=e.useRef(l);A.current=u,F.current=l;const h=e.useCallback(()=>{f.current&&(clearTimeout(f.current),f.current=null)},[]),O=e.useCallback(()=>{if(typeof EventSource>"u"){b.current&&i("error");return}x.current=!1,h(),a.current&&(a.current.close(),a.current=null),b.current&&i("connecting");const D=new EventSource(c,{withCredentials:s});a.current=D,D.onopen=()=>{var p;b.current&&(i("connected"),(p=A.current)==null||p.call(A))},D.onerror=p=>{var R;b.current&&(i("error"),(R=F.current)==null||R.call(F,p),!x.current&&r&&(h(),f.current=setTimeout(()=>{b.current&&O()},o)))};const L=p=>R=>{if(!b.current)return;let T;try{T=JSON.parse(R.data)}catch{T=R.data}const C={type:p,data:T,timestamp:Date.now(),...R.lastEventId?{id:R.lastEventId}:{}};y({type:C.type,data:C.data,id:C.id}),m(M=>{const P=[...M,C];return P.length>200?P.slice(P.length-200):P}),k(M=>M+1)};for(const p of n)D.addEventListener(p,L(p))},[c,s,r,o,h]),V=e.useCallback(()=>{x.current=!0,h(),a.current&&(a.current.close(),a.current=null),b.current&&i("closed")},[h]);return e.useEffect(()=>(b.current=!0,O(),()=>{b.current=!1,x.current=!0,h(),a.current&&(a.current.close(),a.current=null)}),[]),{status:S,lastEvent:d,events:w,connect:O,disconnect:V,eventCount:g}}function le(t){const{queryFn:c,initialCursor:n=null,enabled:s=!0,dedupKey:r}=t,[o,u]=e.useState([]),[l,S]=e.useState("idle"),[i,d]=e.useState(null),[y,w]=e.useState(!1),[m,g]=e.useState(0),k=e.useRef(n??null),a=e.useRef(!1),f=e.useRef(!0),b=e.useRef(void 0),x=e.useRef(c);x.current=c;const A=e.useCallback(async(L,p,R)=>{if(a.current||r!==void 0&&r===b.current)return;a.current=!0;let T=!1;f.current&&(S(R?"loading":"fetching-more"),d(null));try{const C=await x.current(L,p);if(T||!f.current)return;r!==void 0&&(b.current=r),k.current=C.nextCursor,u(M=>R?[C.data]:[...M,C.data]),w(C.hasMore),g(p),S("success")}catch(C){if(T||!f.current)return;d(C instanceof Error?C:new Error(String(C))),S("error")}finally{T||(a.current=!1)}return()=>{T=!0}},[r]),F=e.useCallback(()=>{!y||a.current||A(k.current,m+1,!1)},[y,m,A]),h=e.useCallback(()=>{a.current=!1,b.current=void 0,k.current=n??null,u([]),S("idle"),d(null),w(!1),g(0)},[n]);e.useEffect(()=>(f.current=!0,s&&A(n??null,0,!0),()=>{f.current=!1}),[s]);const O=o.flat(),V=l==="fetching-more",D=O.length;return{data:O,pages:o,status:l,error:i,hasMore:y,isFetchingMore:V,fetchMore:F,reset:h,pageIndex:m,totalLoaded:D}}exports.useAnnounce=N.useAnnounce;exports.useClickOutside=N.useClickOutside;exports.useEscapeKey=N.useEscapeKey;exports.useFocusTrap=N.useFocusTrap;exports.useHighContrast=N.useHighContrast;exports.useReducedMotion=N.useReducedMotion;exports.useTkxForm=N.useTkxForm;exports.cx=J.cx;exports.extractAtomicCSS=J.extractAtomicCSS;exports.resetAtomicCSS=J.resetAtomicCSS;exports.tkxListPlugins=J.tkxListPlugins;exports.tkxPlugin=J.tkxPlugin;exports.tkxRemovePlugin=J.tkxRemovePlugin;exports.contrastRatio=q.contrastRatio;exports.cssVar=q.cssVar;exports.extractCSS=q.extractCSS;exports.injectStyles=q.injectStyles;exports.meetsAA=q.meetsAA;exports.meetsAAA=q.meetsAAA;exports.resetStyles=q.resetStyles;exports.sanitizeProps=B.sanitizeProps;exports.sanitizeString=B.sanitizeString;exports.useControllable=re;exports.useDebounce=te;exports.useDisclosure=Y;exports.useFormState=_;exports.useInfiniteQuery=le;exports.useIntersectionObserver=ue;exports.useListSelection=ee;exports.useLocalStorage=ce;exports.useMediaQuery=se;exports.useRovingTabIndex=Z;exports.useSSE=ae;exports.useThrottle=ne;exports.useWebSocket=oe;
|