@himanshu-sorathiya/react-kit 1.0.32 → 1.0.34

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/dist/state2.js CHANGED
@@ -1,596 +1,1267 @@
1
1
  import { t as e } from "./utils.js";
2
- import { useCallback as t, useMemo as n, useRef as r, useState as i } from "react";
3
- //#region src/state/useFilter/utils.ts
4
- var a = {
2
+ import { useCallback as t, useDeferredValue as n, useMemo as r, useRef as i, useState as a } from "react";
3
+ import { format as o, getDate as s, getMonth as c, getYear as l, isAfter as u, isBefore as d, isDate as f, isEqual as p, isSameDay as m, isValid as h, isWithinRange as g, startOfDay as _, toDate as v } from "@himanshu-sorathiya/datetime";
4
+ //#region src/shared/stateShared/coercion.ts
5
+ function y(e) {
6
+ return f(e) || typeof e == "string" || typeof e == "number";
7
+ }
8
+ function b(e) {
9
+ return typeof e == "number" && Number.isInteger(e);
10
+ }
11
+ function x(e) {
12
+ return typeof e == "object" && !!e && !Array.isArray(e) && "min" in e && "max" in e;
13
+ }
14
+ function S(e) {
15
+ return e == null;
16
+ }
17
+ function C(e) {
18
+ return typeof e == "number" && Number.isInteger(e) && e >= 1;
19
+ }
20
+ function w(e) {
21
+ return typeof e == "string" || typeof e == "number";
22
+ }
23
+ function T(e) {
24
+ return typeof e == "string" || typeof e == "number" || typeof e == "boolean";
25
+ }
26
+ function E(e) {
27
+ if (S(e)) return null;
28
+ if (typeof e == "boolean") return e;
29
+ if (typeof e == "number") return e === 1 || e !== 0 && null;
30
+ if (typeof e == "string") {
31
+ let t = e.trim().toLowerCase();
32
+ return t === "true" || t === "1" ? !0 : t === "false" || t === "0" ? !1 : null;
33
+ }
34
+ return null;
35
+ }
36
+ function D(e) {
37
+ if (S(e)) return null;
38
+ let t = v(e);
39
+ return h(t) ? t : null;
40
+ }
41
+ function O(e) {
42
+ return S(e) || typeof e == "object" ? null : String(e);
43
+ }
44
+ function k(e) {
45
+ if (S(e) || typeof e == "boolean" || typeof e != "number" && typeof e != "string" || typeof e == "string" && e.trim() === "") return null;
46
+ let t = Number(e);
47
+ return Number.isNaN(t) ? null : t;
48
+ }
49
+ //#endregion
50
+ //#region src/state/useExpansion/validation.ts
51
+ var A = globalThis.process?.env?.NODE_ENV !== "production";
52
+ function j(e, t, n) {
53
+ if (w(e)) return !0;
54
+ if (!t) {
55
+ if (A) throw console.warn(`[useExpansion] ${n}: received an object item but no "field" option is configured to resolve its id. Every such item would collapse onto the same expanded id.`), Error(`[useExpansion] ${n}: received an object item but no "field" option is configured to resolve its id.`);
56
+ return !1;
57
+ }
58
+ return !0;
59
+ }
60
+ function M(t, n, r) {
61
+ if (w(t)) return t;
62
+ if (!n) return;
63
+ let i = e(t, n);
64
+ return i === void 0 && A && console.warn(`[useExpansion] ${r}: could not resolve an id from the given item using field "${n}".`), i;
65
+ }
66
+ function N(e, t) {
67
+ A && console.warn(`[useExpansion] ${e}: ${t} expanded ids were given but "multiple" is false; keeping only the first.`);
68
+ }
69
+ function P(e) {
70
+ A && console.warn(`[useExpansion] ${e}: the only expanded item can't be collapsed because "collapsible" is false.`);
71
+ }
72
+ function ee() {
73
+ A && console.warn("[useExpansion] expandAll: has no effect because \"multiple\" is false.");
74
+ }
75
+ //#endregion
76
+ //#region src/state/useExpansion/useExpansion.ts
77
+ function te(e = {}) {
78
+ let n = e, o = n.field, s = !!n.multiple, c = n.collapsible ?? !0, l = r(() => Array.isArray(n.items) ? n.items : [], [n.items]), u = r(() => Array.isArray(n.initialExpandedIds) ? n.initialExpandedIds : [], [n.initialExpandedIds]), d = i(u), [f, p] = a(() => {
79
+ let e = [...new Set(u)];
80
+ return !s && e.length > 1 ? (N("useExpansion", e.length), new Set(e.slice(0, 1))) : new Set(e);
81
+ }), m = t((e) => {
82
+ if (!j(e, o, "isExpanded")) return !1;
83
+ let t = M(e, o, "isExpanded");
84
+ return t !== void 0 && f.has(t);
85
+ }, [f, o]), h = t((e) => {
86
+ j(e, o, "expand") && p((t) => {
87
+ let n = M(e, o, "expand");
88
+ if (n === void 0 || t.has(n)) return t;
89
+ let r = s ? new Set(t) : /* @__PURE__ */ new Set();
90
+ return r.add(n), r;
91
+ });
92
+ }, [o, s]), g = t((e) => {
93
+ j(e, o, "collapse") && p((t) => {
94
+ let n = M(e, o, "collapse");
95
+ if (n === void 0 || !t.has(n)) return t;
96
+ if (!s && !c) return P("collapse"), t;
97
+ let r = new Set(t);
98
+ return r.delete(n), r;
99
+ });
100
+ }, [
101
+ o,
102
+ s,
103
+ c
104
+ ]), _ = t((e) => {
105
+ j(e, o, "toggleExpansion") && p((t) => {
106
+ let n = M(e, o, "toggleExpansion");
107
+ if (n === void 0) return t;
108
+ if (t.has(n)) {
109
+ if (!s && !c) return P("toggleExpansion"), t;
110
+ let e = s ? new Set(t) : /* @__PURE__ */ new Set();
111
+ return e.delete(n), e;
112
+ }
113
+ let r = s ? new Set(t) : /* @__PURE__ */ new Set();
114
+ return r.add(n), r;
115
+ });
116
+ }, [
117
+ o,
118
+ s,
119
+ c
120
+ ]), v = t((e) => {
121
+ if (!s) {
122
+ ee();
123
+ return;
124
+ }
125
+ let t = Array.isArray(e) ? e : l, n = [];
126
+ for (let e of t) {
127
+ let t = M(e, o, "expandAll");
128
+ t !== void 0 && n.push(t);
129
+ }
130
+ p(new Set(n));
131
+ }, [
132
+ l,
133
+ o,
134
+ s
135
+ ]), y = t((e) => {
136
+ if (e === void 0) {
137
+ p((e) => e.size === 0 ? e : /* @__PURE__ */ new Set());
138
+ return;
139
+ }
140
+ let t = Array.isArray(e) ? e : [];
141
+ p((e) => {
142
+ let n = new Set(e);
143
+ for (let e of t) {
144
+ if (!j(e, o, "collapseAll")) continue;
145
+ let t = M(e, o, "collapseAll");
146
+ t !== void 0 && n.delete(t);
147
+ }
148
+ return n;
149
+ });
150
+ }, [o]), b = t(() => {
151
+ let e = d.current;
152
+ if (!s && e.length > 1) {
153
+ N("resetExpansion", e.length), p(new Set(e.slice(0, 1)));
154
+ return;
155
+ }
156
+ p(new Set(e));
157
+ }, [s]), x = t((e) => {
158
+ let t = Array.isArray(e) ? e : [], n = [];
159
+ for (let e of t) {
160
+ if (!j(e, o, "replaceExpansion")) continue;
161
+ let t = M(e, o, "replaceExpansion");
162
+ t !== void 0 && n.push(t);
163
+ }
164
+ let r = [...new Set(n)];
165
+ if (!s && r.length > 1) {
166
+ N("replaceExpansion", r.length), p(new Set(r.slice(0, 1)));
167
+ return;
168
+ }
169
+ p(new Set(r));
170
+ }, [o, s]), S = r(() => [...f], [f]), { expandedItems: C, collapsedItems: w } = r(() => {
171
+ let e = [], t = [];
172
+ for (let n of l) {
173
+ let r = M(n, o, "expandedItems");
174
+ r !== void 0 && f.has(r) ? e.push(n) : t.push(n);
175
+ }
176
+ return {
177
+ expandedItems: e,
178
+ collapsedItems: t
179
+ };
180
+ }, [
181
+ l,
182
+ o,
183
+ f
184
+ ]);
185
+ return {
186
+ expandedIds: S,
187
+ expandedItems: C,
188
+ collapsedItems: w,
189
+ expandedCount: f.size,
190
+ hasExpanded: f.size > 0,
191
+ isExpanded: m,
192
+ expand: h,
193
+ collapse: g,
194
+ toggleExpansion: _,
195
+ expandAll: v,
196
+ collapseAll: y,
197
+ resetExpansion: b,
198
+ replaceExpansion: x
199
+ };
200
+ }
201
+ //#endregion
202
+ //#region src/state/useFilter/strategies.ts
203
+ function ne(e, t) {
204
+ return re[e]?.[t];
205
+ }
206
+ var re = {
5
207
  text: {
6
- contains: (e, t, n) => e == null ? !1 : n?.caseSensitive ? String(e).includes(String(t)) : String(e).toLowerCase().includes(String(t).toLowerCase()),
7
- equals: (e, t, n) => e == null ? !1 : n?.caseSensitive ? String(e) === String(t) : String(e).toLowerCase() === String(t).toLowerCase(),
8
- startsWith: (e, t, n) => e == null ? !1 : n?.caseSensitive ? String(e).startsWith(String(t)) : String(e).toLowerCase().startsWith(String(t).toLowerCase()),
9
- endsWith: (e, t, n) => e == null ? !1 : n?.caseSensitive ? String(e).endsWith(String(t)) : String(e).toLowerCase().endsWith(String(t).toLowerCase()),
10
- notContains: (e, t, n) => e == null ? !0 : n?.caseSensitive ? !String(e).includes(String(t)) : !String(e).toLowerCase().includes(String(t).toLowerCase())
208
+ contains: (e, t, n) => {
209
+ if (!T(e) || !T(t)) return !1;
210
+ let r = String(e), i = String(t);
211
+ return n?.caseSensitive ? r.includes(i) : r.toLowerCase().includes(i.toLowerCase());
212
+ },
213
+ equals: (e, t, n) => {
214
+ if (!T(e) || !T(t)) return !1;
215
+ let r = String(e), i = String(t);
216
+ return n?.caseSensitive ? r === i : r.toLowerCase() === i.toLowerCase();
217
+ },
218
+ startsWith: (e, t, n) => {
219
+ if (!T(e) || !T(t)) return !1;
220
+ let r = String(e), i = String(t);
221
+ return n?.caseSensitive ? r.startsWith(i) : r.toLowerCase().startsWith(i.toLowerCase());
222
+ },
223
+ endsWith: (e, t, n) => {
224
+ if (!T(e) || !T(t)) return !1;
225
+ let r = String(e), i = String(t);
226
+ return n?.caseSensitive ? r.endsWith(i) : r.toLowerCase().endsWith(i.toLowerCase());
227
+ },
228
+ notContains: (e, t, n) => {
229
+ if (!T(e) || !T(t)) return !1;
230
+ let r = String(e), i = String(t);
231
+ return n?.caseSensitive ? !r.includes(i) : !r.toLowerCase().includes(i.toLowerCase());
232
+ }
11
233
  },
12
234
  number: {
13
- equals: (e, t) => Number(e) === Number(t),
14
- greaterThan: (e, t) => Number(e) > Number(t),
15
- lessThan: (e, t) => Number(e) < Number(t),
16
- greaterThanOrEqual: (e, t) => Number(e) >= Number(t),
17
- lessThanOrEqual: (e, t) => Number(e) <= Number(t),
235
+ equals: (e, t) => {
236
+ let n = k(e), r = k(t);
237
+ return n === null || r === null ? !1 : n === r;
238
+ },
239
+ greaterThan: (e, t) => {
240
+ let n = k(e), r = k(t);
241
+ return n === null || r === null ? !1 : n > r;
242
+ },
243
+ lessThan: (e, t) => {
244
+ let n = k(e), r = k(t);
245
+ return n === null || r === null ? !1 : n < r;
246
+ },
247
+ greaterThanOrEqual: (e, t) => {
248
+ let n = k(e), r = k(t);
249
+ return n === null || r === null ? !1 : n >= r;
250
+ },
251
+ lessThanOrEqual: (e, t) => {
252
+ let n = k(e), r = k(t);
253
+ return n === null || r === null ? !1 : n <= r;
254
+ },
18
255
  between: (e, t) => {
19
- if (typeof t != "object" || !t) return !1;
20
- let { min: n, max: r } = t;
21
- return n == null || r == null ? !1 : Number(e) >= Number(n) && Number(e) <= Number(r);
256
+ let n = k(e);
257
+ if (n === null || !x(t)) return !1;
258
+ let r = k(t.min), i = k(t.max);
259
+ return r === null || i === null ? !1 : n >= Math.min(r, i) && n <= Math.max(r, i);
22
260
  }
23
261
  },
24
- boolean: { equals: (e, t) => !!e == !!t },
25
- date: {
262
+ boolean: {
26
263
  equals: (e, t) => {
27
- if (!e || !t) return !1;
28
- let n = new Date(e), r = new Date(t);
29
- return Number.isNaN(n.getTime()) || Number.isNaN(r.getTime()) ? !1 : n.getFullYear() === r.getFullYear() && n.getMonth() === r.getMonth() && n.getDate() === r.getDate();
264
+ let n = E(e), r = E(t);
265
+ return n === null || r === null ? !1 : n === r;
30
266
  },
31
- before: (e, t) => {
32
- if (!e || !t) return !1;
33
- let n = new Date(e).setHours(0, 0, 0, 0), r = new Date(t).setHours(0, 0, 0, 0);
34
- return Number.isNaN(n) || Number.isNaN(r) ? !1 : n < r;
267
+ notEquals: (e, t) => {
268
+ let n = E(e), r = E(t);
269
+ return n === null || r === null ? !1 : n !== r;
270
+ }
271
+ },
272
+ date: {
273
+ equals: (e, t, n) => {
274
+ let r = D(e), i = D(t);
275
+ return !r || !i ? !1 : (n?.dateGranularity ?? "day") === "instant" ? p(r, i) : m(r, i);
35
276
  },
36
- after: (e, t) => {
37
- if (!e || !t) return !1;
38
- let n = new Date(e).setHours(0, 0, 0, 0), r = new Date(t).setHours(0, 0, 0, 0);
39
- return Number.isNaN(n) || Number.isNaN(r) ? !1 : n > r;
277
+ before: (e, t, n) => {
278
+ let r = D(e), i = D(t);
279
+ return !r || !i ? !1 : (n?.dateGranularity ?? "day") === "instant" ? d(r, i) : d(_(r), _(i));
40
280
  },
41
- between: (e, t) => {
42
- if (!e || typeof t != "object" || !t) return !1;
43
- let { min: n, max: r } = t;
44
- if (n == null || r == null) return !1;
45
- let i = new Date(e).setHours(0, 0, 0, 0), a = new Date(n).setHours(0, 0, 0, 0), o = new Date(r).setHours(0, 0, 0, 0);
46
- return Number.isNaN(i) || Number.isNaN(a) || Number.isNaN(o) ? !1 : i >= a && i <= o;
281
+ after: (e, t, n) => {
282
+ let r = D(e), i = D(t);
283
+ return !r || !i ? !1 : (n?.dateGranularity ?? "day") === "instant" ? u(r, i) : u(_(r), _(i));
284
+ },
285
+ between: (e, t, n) => {
286
+ let r = D(e);
287
+ if (!r || !x(t)) return !1;
288
+ let i = D(t.min), a = D(t.max);
289
+ return !i || !a ? !1 : (n?.dateGranularity ?? "day") === "instant" ? g(r, i, a) : g(_(r), _(i), _(a));
47
290
  }
48
291
  },
49
292
  select: {
50
- equals: (e, t) => e === t,
51
- notEquals: (e, t) => e !== t
293
+ equals: (e, t) => S(e) || S(t) ? !1 : e == t,
294
+ notEquals: (e, t) => S(e) || S(t) ? !1 : e != t,
295
+ in: (e, t) => S(e) || !Array.isArray(t) ? !1 : t.some((t) => e == t),
296
+ notIn: (e, t) => S(e) || !Array.isArray(t) ? !1 : !t.some((t) => e == t)
52
297
  },
53
298
  multiselect: {
54
- in: (e, t) => t.includes(e),
55
- notIn: (e, t) => !t.includes(e),
56
- intersects: (e, t) => e.some((e) => t.includes(e))
299
+ in: (e, t) => S(e) || !Array.isArray(t) ? !1 : t.includes(e),
300
+ notIn: (e, t) => S(e) || !Array.isArray(t) ? !1 : !t.includes(e),
301
+ intersects: (e, t) => S(e) || !Array.isArray(e) || S(t) || !Array.isArray(t) ? !1 : e.some((e) => t.includes(e))
57
302
  }
58
- };
303
+ }, F = globalThis.process?.env?.NODE_ENV !== "production";
304
+ function I(e, t) {
305
+ if (!F) return;
306
+ let n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
307
+ for (let t of e) n.has(t.id) && r.add(t.id), n.add(t.id);
308
+ r.size > 0 && console.warn(`[useFilter] ${t} contains duplicate filter ids: ${[...r].join(", ")}. Lookups by id (getFilter, getFilterValue, isFilterActive, updateFilterConfig, updateFilterValue) will only ever affect the first match.`);
309
+ }
310
+ function ie(e, t, n) {
311
+ switch (e) {
312
+ case "text": return typeof n == "string";
313
+ case "number": return t === "between" ? typeof n == "object" && !!n && !Array.isArray(n) && typeof n.min == "number" && typeof n.max == "number" : typeof n == "number";
314
+ case "boolean": return typeof n == "boolean";
315
+ case "date": return t === "between" ? typeof n == "object" && !!n && !Array.isArray(n) && y(n.min) && y(n.max) : y(n);
316
+ case "select": return t === "in" || t === "notIn" ? Array.isArray(n) && n.every((e) => typeof e == "string" || typeof e == "number") : typeof n == "string" || typeof n == "number";
317
+ case "multiselect": return Array.isArray(n);
318
+ case "custom": return !0;
319
+ default: return !1;
320
+ }
321
+ }
322
+ function ae(e, t, n, r) {
323
+ let i = e.findIndex((e) => e.id === t), a = e[i];
324
+ if (i === -1 || !a) {
325
+ if (F) throw console.warn(`[useFilter] ${r}: no filter found with id "${t}".`), Error(`[useFilter] ${r}: no filter found with id "${t}".`);
326
+ return e;
327
+ }
328
+ let o = {
329
+ ...a,
330
+ ...n
331
+ };
332
+ if (!ie(o.type, o.operator, o.value)) {
333
+ if (F) throw console.warn(`[useFilter] ${r}: update to filter "${t}" would produce a value incompatible with type "${o.type}" and operator "${o.operator}". Update was ignored to avoid corrupting filter state.`, {
334
+ attempted: n,
335
+ current: a
336
+ }), Error(`[useFilter] ${r}: update to filter "${t}" would produce a value incompatible with type "${o.type}" and operator "${o.operator}". Update was ignored to avoid corrupting filter state.`);
337
+ return e;
338
+ }
339
+ let s = [...e];
340
+ return s[i] = o, s;
341
+ }
59
342
  //#endregion
60
343
  //#region src/state/useFilter/useFilter.ts
61
- function o(o = [], s = []) {
62
- let c = n(() => Array.isArray(o) ? o : [], [o]), l = n(() => Array.isArray(s) ? s : [], [s]), u = r(l), [d, f] = i(() => l), p = n(() => {
63
- let t = d.filter((e) => e.isActive !== !1).map((e) => ({
64
- ...e,
65
- pathArray: (e.field || e.id).split(".")
66
- }));
67
- return c.filter((n) => t.every((t) => {
68
- let { id: r, type: i, operator: o, value: s, compare: c, pathArray: l } = t, u = e(n, l, r);
69
- if (i === "custom") return !c || c(u, s, n);
70
- let d = a[i];
71
- if (!d) return !0;
72
- let f = d[o];
73
- return !f || f(u, s, t);
74
- }));
75
- }, [c, d]), m = t((e) => {
76
- f((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? e : t) : [...t, e]);
77
- }, []), h = t((e) => {
78
- f((t) => Array.isArray(e) ? t.filter((t) => !e.includes(t.id)) : t.filter((t) => t.id !== e));
79
- }, []), g = t(() => {
80
- f([]);
81
- }, []), _ = t(() => {
82
- f(u.current);
83
- }, []), v = t((e) => {
84
- f(Array.isArray(e) ? e : []);
85
- }, []);
86
- return {
87
- filteredItems: p,
88
- filters: d,
89
- upsertFilter: m,
90
- removeFilter: h,
91
- clearFilters: g,
92
- resetFilters: _,
93
- toggleFilter: t((e) => {
94
- f((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? {
95
- ...t,
96
- isActive: t.isActive === !1
97
- } : t) : [...t, {
344
+ var oe = globalThis.process?.env?.NODE_ENV !== "production";
345
+ function se(o = [], s = [], c) {
346
+ let l = r(() => Array.isArray(o) ? o : [], [o]), u = r(() => Array.isArray(s) ? s : [], [s]), d = i(u), [f, p] = a(() => (I(u, "initialFilters"), u)), m = n(f), h = c?.defer ? m : f, g = r(() => {
347
+ let t = h.filter((e) => e.isActive !== !1).map((e) => {
348
+ let { id: t, type: n, operator: r, value: i, compare: a, field: o } = e, s = (o ?? t).split(".");
349
+ if (n === "custom") return a ? {
350
+ pathArray: s,
351
+ evaluate: (e, t) => a(e, i, t)
352
+ } : (oe && console.warn(`[useFilter] filter "${t}" has type "custom" but no "compare" function was provided. Excluding all items for this filter.`), {
353
+ pathArray: s,
354
+ evaluate: () => !1
355
+ });
356
+ let c = ne(n, r);
357
+ return c ? {
358
+ pathArray: s,
359
+ evaluate: (t) => c(t, i, e)
360
+ } : (oe && console.warn(`[useFilter] filter "${t}" has an unknown type/operator combination ("${n}"/"${r}"). Excluding all items for this filter.`), {
361
+ pathArray: s,
362
+ evaluate: () => !1
363
+ });
364
+ });
365
+ return t.length === 0 ? l : l.filter((n) => t.every(({ pathArray: t, evaluate: r }) => r(e(n, t), n)));
366
+ }, [l, h]), _ = r(() => f.filter((e) => e.isActive !== !1).length, [f]), v = _ > 0, y = t((e) => {
367
+ p((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? e : t) : [...t, e]);
368
+ }, []), b = t((e) => {
369
+ p((t) => Array.isArray(e) ? t.filter((t) => !e.includes(t.id)) : t.filter((t) => t.id !== e));
370
+ }, []), x = t(() => {
371
+ p([]);
372
+ }, []), S = t(() => {
373
+ p(d.current);
374
+ }, []), C = t((e) => {
375
+ let t = Array.isArray(e) ? e : [];
376
+ I(t, "replaceFilters"), p(t);
377
+ }, []), w = t((e) => {
378
+ p((t) => {
379
+ let n = t.findIndex((t) => t.id === e.id), r = t[n];
380
+ if (n === -1 || !r) return [...t, {
98
381
  ...e,
99
382
  isActive: !0
100
- }]);
101
- }, []),
102
- updateFilterConfig: t((e, t) => {
103
- f((n) => n.map((n) => n.id === e ? {
104
- ...n,
105
- ...t
106
- } : n));
107
- }, []),
108
- replaceFilters: v,
109
- getFilterValue: t((e) => d.find((t) => t.id === e)?.value, [d]),
110
- updateFilterValue: t((e, t) => {
111
- f((n) => n.map((n) => n.id === e ? {
112
- ...n,
113
- value: t
114
- } : n));
115
- }, []),
383
+ }];
384
+ let i = [...t];
385
+ return i[n] = {
386
+ ...r,
387
+ isActive: r.isActive === !1
388
+ }, i;
389
+ });
390
+ }, []), T = t((e, t) => {
391
+ p((n) => ae(n, e, t, "updateFilterConfig"));
392
+ }, []), E = t((e, t) => {
393
+ p((n) => ae(n, e, { value: t }, "updateFilterValue"));
394
+ }, []), D = r(() => {
395
+ let e = /* @__PURE__ */ new Map();
396
+ for (let t of f) e.has(t.id) || e.set(t.id, t);
397
+ return e;
398
+ }, [f]);
399
+ return {
400
+ filteredItems: g,
401
+ filters: f,
402
+ activeFilterCount: _,
403
+ hasActiveFilters: v,
404
+ upsertFilter: y,
405
+ removeFilter: b,
406
+ clearFilters: x,
407
+ resetFilters: S,
408
+ replaceFilters: C,
409
+ toggleFilter: w,
410
+ updateFilterConfig: T,
411
+ getFilter: t((e) => D.get(e), [D]),
412
+ getFilterValue: t((e) => D.get(e)?.value, [D]),
413
+ updateFilterValue: E,
116
414
  isFilterActive: t((e) => {
117
- let t = d.find((t) => t.id === e);
415
+ let t = D.get(e);
118
416
  return t ? t.isActive !== !1 : !1;
119
- }, [d])
417
+ }, [D])
120
418
  };
121
419
  }
122
420
  //#endregion
123
- //#region src/state/useFuzzySearch/utils.ts
124
- function s(e, t, n = !1) {
125
- let r = e.trim(), i = t.trim(), a = r.length > 1 && r === r.toUpperCase() && /^[A-Z]+$/.test(r);
126
- if (n || (r = r.toLowerCase(), i = i.toLowerCase()), r === i) return 1;
127
- if (r === "" || i === "") return 0;
128
- if (a) {
129
- let e = i.split(/[^a-z0-9]+/i).filter((e) => e.length > 0);
130
- if (e.length >= r.length) {
131
- let t = 0, n = 0;
132
- for (let i = 0; i < r.length; i++) {
133
- let a = r[i];
134
- for (; n < e.length;) {
135
- if ((e[n] ?? "")[0] === a) {
136
- t++, n++;
137
- break;
138
- }
139
- n++;
140
- }
141
- }
142
- if (t === r.length) return .85;
421
+ //#region src/state/useGrouping/utils.ts
422
+ var ce = globalThis.process?.env?.NODE_ENV !== "production";
423
+ function le(e, t = 2) {
424
+ return String(e).padStart(t, "0");
425
+ }
426
+ function ue(e, t) {
427
+ return e.trim() === "" ? t : e;
428
+ }
429
+ function de(t, n) {
430
+ let r = t.split(".");
431
+ return { resolveKeys: (t) => {
432
+ let i = e(t, r), a = Array.isArray(i) ? i : [i], o = /* @__PURE__ */ new Set(), s = [];
433
+ for (let e of a) {
434
+ if (S(e) || typeof e == "object") continue;
435
+ let t = ue(String(e), n);
436
+ t !== n && (o.has(t) || (o.add(t), s.push({
437
+ key: t,
438
+ label: t
439
+ })));
143
440
  }
144
- }
145
- let o = !1;
146
- for (let e = 0; e < r.length; e++) if (i.includes(r[e] ?? "")) {
147
- o = !0;
148
- break;
149
- }
150
- if (!o) return 0;
151
- let s = i.indexOf(r);
152
- if (s !== -1) {
153
- let e = s === 0, t = s / i.length * (e ? .01 : .1), n = (i.length - r.length) / i.length * (e ? .01 : .05);
154
- return Math.max(.7, .95 - t - n);
155
- }
156
- let c = 0, l = -1, u = 0, d = 0, f = 0;
157
- for (let e = 0; e < r.length; e++) {
158
- let t = r[e];
159
- if (!t) continue;
160
- let n = i.indexOf(t, f);
161
- if (n !== -1) c++, l !== -1 && (n > l ? u += n - l : (d++, u += 1)), l = n, f = n + 1, f >= i.length && (f = 0);
162
- else {
163
- let e = i.indexOf(t);
164
- e !== -1 && (c++, d++, l = e, f = e + 1);
441
+ return s.length > 0 ? s : [{
442
+ key: n,
443
+ label: n
444
+ }];
445
+ } };
446
+ }
447
+ function fe(t, n, r) {
448
+ let i = t.split(".");
449
+ return { resolveKeys: (t) => {
450
+ let a = D(e(t, i));
451
+ if (!a) return [{
452
+ key: r,
453
+ label: r
454
+ }];
455
+ let u = l(a);
456
+ if (n === "year") return [{
457
+ key: `${u}`,
458
+ label: o(a, "yyyy")
459
+ }];
460
+ let d = c(a);
461
+ if (n === "month") return [{
462
+ key: `${u}-${le(d)}`,
463
+ label: o(a, "MMMM yyyy")
464
+ }];
465
+ let f = s(a);
466
+ return [{
467
+ key: `${u}-${le(d)}-${le(f)}`,
468
+ label: o(a, "MMMM dd, yyyy")
469
+ }];
470
+ } };
471
+ }
472
+ function pe(e, t, n) {
473
+ let r = !1;
474
+ return { resolveKeys: (i) => {
475
+ let a;
476
+ try {
477
+ a = e.getKey(i);
478
+ } catch (e) {
479
+ if (ce) throw console.warn(`[useGrouping] custom group level "${n}" threw an error while computing a key.`, e), e;
480
+ return r ||= (console.warn(`[useGrouping] custom group level "${n}" threw an error for at least one item; affected items were placed in "${t}".`, e), !0), [{
481
+ key: t,
482
+ label: t
483
+ }];
484
+ }
485
+ if (S(a)) return [{
486
+ key: t,
487
+ label: t
488
+ }];
489
+ let o = Array.isArray(a) ? a : [a];
490
+ if (o.some((e) => typeof e != "string")) {
491
+ if (ce) throw console.warn(`[useGrouping] custom group level "${n}" returned a non-string key.`, { returned: a }), Error(`[useGrouping] custom group level "${n}" returned a non-string key.`);
492
+ return r ||= (console.warn(`[useGrouping] custom group level "${n}" returned an invalid key for at least one item; affected items were placed in "${t}".`), !0), [{
493
+ key: t,
494
+ label: t
495
+ }];
496
+ }
497
+ let s = /* @__PURE__ */ new Set(), c = [];
498
+ for (let e of o) {
499
+ let n = ue(e, t);
500
+ n !== t && (s.has(n) || (s.add(n), c.push({
501
+ key: n,
502
+ label: n
503
+ })));
165
504
  }
505
+ return c.length > 0 ? c : [{
506
+ key: t,
507
+ label: t
508
+ }];
509
+ } };
510
+ }
511
+ function me(e) {
512
+ throw Error(`[useGrouping] unhandled group level type: ${JSON.stringify(e)}`);
513
+ }
514
+ function he(e, t, n) {
515
+ switch (e.type) {
516
+ case "field": return de(e.field, n);
517
+ case "date": return fe(e.field, e.bucket ?? "day", n);
518
+ case "custom": return pe(e, n, e.id ?? `level ${t + 1}`);
519
+ default: return me(e);
166
520
  }
167
- if (c < r.length / 2) return 0;
168
- let p = c / r.length, m = .6 ** d, h = c > 1 ? u / (c - 1) : 1, g = Math.max(.4, 1 - h / i.length), _ = p * m * g;
169
- return Math.max(0, _ * .45);
170
521
  }
171
- //#endregion
172
- //#region src/state/useFuzzySearch/useFuzzySearch.ts
173
- function c(t, r, i, a = {}) {
174
- let o = a.threshold ?? .01, c = a.caseSensitive ?? !1, l = a.matchStrategy ?? "any", u = a.exactPhraseBonus ?? !0, d = n(() => i.length === 0 || t.length === 0 ? [] : t.map((t, n) => {
175
- let r = [], a = [];
176
- for (let { field: n, weight: o } of i) {
177
- let i = e(t, n);
178
- if (Array.isArray(i)) {
179
- for (let e of i) if (e != null && e !== "" && typeof e != "object") {
180
- let t = String(e);
181
- a.push(t);
182
- let n = t.split(/[^a-z0-9]+/i).filter((e) => e.length > 0);
183
- for (let e of n) r.push({
184
- text: e,
185
- weight: o
186
- });
187
- }
188
- } else if (i != null && i !== "" && typeof i != "object") {
189
- let e = String(i);
190
- a.push(e);
191
- let t = e.split(/[^a-z0-9]+/i).filter((e) => e.length > 0);
192
- for (let e of t) r.push({
193
- text: e,
194
- weight: o
195
- });
196
- }
197
- }
522
+ function ge(e, t, n) {
523
+ let r = t[n];
524
+ if (!r) return [];
525
+ let i = /* @__PURE__ */ new Map();
526
+ for (let t of e) for (let { key: e, label: n } of r.resolveKeys(t)) {
527
+ let r = i.get(e);
528
+ r ? r.items.push(t) : i.set(e, {
529
+ label: n,
530
+ items: [t]
531
+ });
532
+ }
533
+ return Array.from(i.entries()).map(([e, r]) => {
534
+ let i = ge(r.items, t, n + 1);
198
535
  return {
199
- item: t,
200
- index: n,
201
- tokens: r,
202
- combinedFlatText: a.join(" ")
536
+ key: e,
537
+ label: r.label,
538
+ items: r.items,
539
+ ...i.length > 0 ? { subGroups: i } : {}
203
540
  };
204
- }), [t, i]);
205
- return n(() => {
206
- let e = r.trim();
207
- if (!e || d.length === 0) return t;
208
- let n = e.split(/\s+/).filter((e) => e.length > 0);
209
- if (n.length === 0) return t;
210
- let i = [], a = .3;
211
- for (let e of d) {
212
- let t = 0, r = 0, d = !1;
213
- for (let i of n) {
214
- let n = 0, o = c ? i : i.toLowerCase();
215
- for (let t of e.tokens) {
216
- let e = (c ? t.text : t.text.toLowerCase()).split(/\s+/).filter((e) => e.length > 0);
217
- for (let r of e) {
218
- if (!r.includes(o)) {
219
- if (r.length < i.length / 2) continue;
220
- let e = Math.abs(i.length - r.length), t = Math.max(i.length, r.length);
221
- if (t > 0 && (t - e) / t < a) continue;
222
- }
223
- let e = s(i, r, c) * t.weight;
224
- e > n && (n = e);
225
- }
226
- }
227
- n >= a && r++, t += n;
228
- }
229
- if (l === "all" && r < n.length && (d = !0), !d) {
230
- let r = t / n.length;
231
- if (u && n.length > 1) {
232
- let t = n.map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("\\s+");
233
- new RegExp(t, c ? "g" : "gi").test(e.combinedFlatText) && (r += .15);
234
- }
235
- r >= o && i.push({
236
- item: e.item,
237
- score: r,
238
- index: e.index
239
- });
240
- }
541
+ });
542
+ }
543
+ function _e(e, t, n, r) {
544
+ return t.length === 0 ? [{
545
+ key: r,
546
+ label: r,
547
+ items: e
548
+ }] : ge(e, t.map((e, t) => he(e, t, n)), 0);
549
+ }
550
+ //#endregion
551
+ //#region src/state/useGrouping/validation.ts
552
+ var ve = globalThis.process?.env?.NODE_ENV !== "production";
553
+ function ye(e) {
554
+ return typeof e == "string" ? {
555
+ type: "field",
556
+ field: e
557
+ } : e;
558
+ }
559
+ function be(e) {
560
+ return e === void 0 ? [] : (Array.isArray(e) ? e : [e]).map((e) => ye(e));
561
+ }
562
+ function xe(e) {
563
+ return typeof e != "object" || !e ? !1 : e.type === "field" ? typeof e.field == "string" && e.field.length > 0 : e.type === "date" ? typeof e.field == "string" && e.field.length > 0 && (e.bucket === void 0 || e.bucket === "day" || e.bucket === "month" || e.bucket === "year") : e.type === "custom" && typeof e.getKey == "function" && (e.id === void 0 || typeof e.id == "string");
564
+ }
565
+ function Se(e) {
566
+ if (!ve) return;
567
+ let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
568
+ for (let r of e) r.type !== "custom" || !r.id || (t.has(r.id) && n.add(r.id), t.add(r.id));
569
+ n.size > 0 && console.warn(`[useGrouping] duplicate custom group level ids: ${[...n].join(", ")}. Dev warnings referencing these ids may be ambiguous about which level they mean.`);
570
+ }
571
+ //#endregion
572
+ //#region src/state/useGrouping/useGrouping.ts
573
+ var Ce = globalThis.process?.env?.NODE_ENV !== "production";
574
+ function we(e = [], o, s) {
575
+ let c = r(() => Array.isArray(e) ? e : [], [e]), l = s?.unknownGroupLabel ?? "Unknown", u = s?.ungroupedGroupLabel ?? "Ungrouped", d = r(() => be(o), [o]), [f, p] = a(() => {
576
+ let e = d.find((e) => !xe(e));
577
+ if (e) {
578
+ if (Ce) throw console.warn("[useGrouping] initialGroupBy contains an invalid group level.", e), Error("[useGrouping] initialGroupBy contains an invalid group level.");
579
+ return [];
241
580
  }
242
- return i.toSorted((e, t) => t.score === e.score ? e.index - t.index : t.score - e.score).map((e) => e.item);
243
- }, [
244
- d,
245
- t,
246
- r,
247
- o,
581
+ return Se(d), d;
582
+ }), m = i(f), h = n(f), g = s?.defer ? h : f, _ = r(() => _e(c, g, l, u), [
248
583
  c,
584
+ g,
249
585
  l,
250
586
  u
251
- ]);
252
- }
253
- //#endregion
254
- //#region src/state/useGrouping/useGrouping.ts
255
- function l(r = {}) {
256
- let a = r || {}, o = n(() => Array.isArray(a.items) ? a.items : [], [a.items]), s = a.initialGroupBy, [c, l] = i(s), u = n(() => c ? o.reduce((t, n) => {
257
- let r = e(n, c), i = r == null ? "Unknown" : String(r);
258
- return t[i] || (t[i] = []), t[i].push(n), t;
259
- }, {}) : { Ungrouped: o }, [o, c]), d = n(() => Object.keys(u).map((e) => ({
260
- key: e,
261
- items: u[e]
262
- })), [u]), f = n(() => Object.keys(u), [u]), p = t((e) => {
263
- l(e);
264
- }, []), m = t(() => {
265
- l(void 0);
266
- }, []), h = t(() => {
267
- l(s);
268
- }, [s]), g = t((e) => u[e] || [], [u]);
587
+ ]), v = r(() => {
588
+ let e = /* @__PURE__ */ new Map();
589
+ for (let t of _) e.has(t.key) || e.set(t.key, t);
590
+ return e;
591
+ }, [_]), y = r(() => {
592
+ let e = {};
593
+ for (let t of _) e[t.key] = t.items;
594
+ return e;
595
+ }, [_]), b = r(() => _.map((e) => e.key), [_]);
269
596
  return {
270
- groupedRecord: u,
271
- groupedArray: d,
272
- groupKeys: f,
273
- totalGroups: f.length,
274
- activeGroupBy: c,
275
- changeGroupBy: p,
276
- clearGrouping: m,
277
- resetGrouping: h,
278
- getGroupItems: g
597
+ groupedArray: _,
598
+ groupedRecord: y,
599
+ groupKeys: b,
600
+ totalGroups: b.length,
601
+ activeGroupBy: f,
602
+ hasActiveGrouping: f.length > 0,
603
+ unknownGroupKey: l,
604
+ ungroupedGroupKey: u,
605
+ changeGroupBy: t((e) => {
606
+ let t = be(e), n = t.find((e) => !xe(e));
607
+ if (n) {
608
+ if (Ce) throw console.warn("[useGrouping] changeGroupBy: received an invalid group level.", n), Error("[useGrouping] changeGroupBy: received an invalid group level.");
609
+ return;
610
+ }
611
+ Se(t), p(t);
612
+ }, []),
613
+ clearGrouping: t(() => {
614
+ p([]);
615
+ }, []),
616
+ resetGrouping: t(() => {
617
+ p(m.current);
618
+ }, []),
619
+ getGroup: t((e) => v.get(e), [v]),
620
+ getGroupItems: t((e) => v.get(e)?.items ?? [], [v])
279
621
  };
280
622
  }
281
623
  //#endregion
624
+ //#region src/shared/selectionShared/utils.ts
625
+ var Te = globalThis.process?.env?.NODE_ENV !== "production";
626
+ function L(t, n) {
627
+ let r = e(t, n);
628
+ if (Te && r == null) throw console.warn("[resolveSelectionId] Resolved id is", r, "— this usually means `field` does not point to a valid property on the item, or the item's runtime shape doesn't match its declared type.", {
629
+ item: t,
630
+ field: n
631
+ }), Error(`[resolveSelectionId] Invalid id resolved: ${String(r)}`);
632
+ return r;
633
+ }
634
+ //#endregion
282
635
  //#region src/state/useMultipleSelection/useMultipleSelection.ts
283
- function u(a = {}) {
284
- let o = a || {}, s = n(() => Array.isArray(o.items) ? o.items : [], [o.items]), c = Array.isArray(o.initialSelectedIds) ? o.initialSelectedIds : [], l = o.field, u = r(c), [d, f] = i(() => new Set(c)), p = t((t) => {
285
- f((n) => {
286
- let r = new Set(n), i = e(t, l);
287
- return r.add(i), r;
288
- });
289
- }, [l]), m = t((t) => {
290
- f((n) => {
291
- let r = new Set(n), i = e(t, l);
292
- return r.delete(i), r;
293
- });
294
- }, [l]), h = t((t) => {
295
- f((n) => {
296
- let r = new Set(n), i = e(t, l);
297
- return r.has(i) ? r.delete(i) : r.add(i), r;
298
- });
299
- }, [l]), g = t((t) => {
300
- let n = e(t, l);
301
- return d.has(n);
302
- }, [d, l]), _ = t(() => f(new Set(u.current)), []), v = t((t) => {
303
- let n = (Array.isArray(t) ? t : []).map((t) => e(t, l));
304
- f(new Set(n));
305
- }, [l]), y = t(() => {
306
- let t = s.map((t) => e(t, l));
307
- f(new Set(t));
308
- }, [s, l]), b = t(() => {
309
- f(/* @__PURE__ */ new Set());
310
- }, []), x = t(() => f((t) => {
311
- if (t.size === s.length) return /* @__PURE__ */ new Set();
312
- let n = s.map((t) => e(t, l));
313
- return new Set(n);
314
- }), [s, l]), S = t(() => f((t) => {
315
- if (t.size === s.length) return /* @__PURE__ */ new Set();
316
- let n = s.filter((n) => !t.has(e(n, l))).map((t) => e(t, l));
317
- return new Set(n);
318
- }), [s, l]), C = t((t) => {
319
- f((n) => {
320
- let r = new Set(n);
321
- return (Array.isArray(t) ? t : []).map((t) => e(t, l)).forEach((e) => r.add(e)), r;
322
- });
323
- }, [l]), w = t((t) => {
324
- f((n) => {
325
- let r = new Set(n);
326
- return (Array.isArray(t) ? t : []).map((t) => e(t, l)).forEach((e) => r.delete(e)), r;
327
- });
328
- }, [l]), T = t((t) => {
329
- f((n) => {
330
- let r = /* @__PURE__ */ new Set();
331
- return (Array.isArray(t) ? t : []).map((t) => e(t, l)).forEach((e) => n.has(e) && r.add(e)), r;
332
- });
333
- }, [l]), E = n(() => s.filter((t) => {
334
- let n = e(t, l);
335
- return d.has(n);
336
- }), [
337
- s,
338
- l,
339
- d
340
- ]);
636
+ function Ee(e = {}) {
637
+ let { items: n, defaultSelectedIds: i, isDisabled: o, field: s } = e, c = r(() => Array.isArray(n) ? n : [], [n]), l = r(() => Array.isArray(i) ? i : [], [i]), [u, d] = a(() => new Set(l)), f = r(() => c.map((e) => ({
638
+ item: e,
639
+ id: L(e, s)
640
+ })), [c, s]), p = r(() => f.map((e) => e.id), [f]), m = r(() => p.filter((e) => !(o?.(e) ?? !1)), [p, o]), h = r(() => f.filter((e) => u.has(e.id)).map((e) => e.item), [f, u]), g = r(() => {
641
+ let e = p.filter((e) => u.has(e));
642
+ if (e.length === u.size) return e;
643
+ let t = new Set(e), n = [];
644
+ return u.forEach((e) => {
645
+ t.has(e) || n.push(e);
646
+ }), [...e, ...n];
647
+ }, [p, u]), _ = r(() => m.length > 0 && m.every((e) => u.has(e)), [m, u]), v = r(() => !_ && m.some((e) => u.has(e)), [
648
+ _,
649
+ m,
650
+ u
651
+ ]), y = t((e) => {
652
+ let t = L(e, s);
653
+ o?.(t) || d((e) => {
654
+ if (e.has(t)) return e;
655
+ let n = new Set(e);
656
+ return n.add(t), n;
657
+ });
658
+ }, [s, o]), b = t((e) => {
659
+ let t = L(e, s);
660
+ d((e) => {
661
+ if (!e.has(t)) return e;
662
+ let n = new Set(e);
663
+ return n.delete(t), n;
664
+ });
665
+ }, [s]), x = t((e) => {
666
+ let t = L(e, s);
667
+ d((e) => {
668
+ let n = e.has(t);
669
+ if (!n && o?.(t)) return e;
670
+ let r = new Set(e);
671
+ return n ? r.delete(t) : r.add(t), r;
672
+ });
673
+ }, [s, o]), S = t((e) => u.has(L(e, s)), [u, s]), C = t(() => d(new Set(l)), [l]), w = t((e) => {
674
+ let t = (Array.isArray(e) ? e : []).map((e) => L(e, s)).filter((e) => !(o?.(e) ?? !1));
675
+ d(new Set(t));
676
+ }, [s, o]), T = t(() => {
677
+ d(new Set(m));
678
+ }, [m]), E = t(() => {
679
+ d((e) => e.size === 0 ? e : /* @__PURE__ */ new Set());
680
+ }, []), D = t(() => {
681
+ d((e) => m.length > 0 && m.every((t) => e.has(t)) ? /* @__PURE__ */ new Set() : new Set(m));
682
+ }, [m]), O = t(() => {
683
+ d((e) => {
684
+ let t = m.filter((t) => !e.has(t));
685
+ return new Set(t);
686
+ });
687
+ }, [m]), k = t((e) => {
688
+ let t = Array.isArray(e) ? e : [];
689
+ d((e) => {
690
+ let n = new Set(e);
691
+ for (let e of t) {
692
+ let t = L(e, s);
693
+ (o?.(t) ?? !1) || n.add(t);
694
+ }
695
+ return n;
696
+ });
697
+ }, [s, o]), A = t((e) => {
698
+ let t = Array.isArray(e) ? e : [];
699
+ d((e) => {
700
+ let n = new Set(e);
701
+ for (let e of t) n.delete(L(e, s));
702
+ return n;
703
+ });
704
+ }, [s]), j = t((e) => {
705
+ let t = new Set((Array.isArray(e) ? e : []).map((e) => L(e, s)));
706
+ d((e) => {
707
+ let n = /* @__PURE__ */ new Set();
708
+ return e.forEach((e) => {
709
+ t.has(e) && n.add(e);
710
+ }), n;
711
+ });
712
+ }, [s]);
341
713
  return {
342
- selectedIds: [...d],
343
- selectedCount: d.size,
344
- selectedItems: E,
345
- isEmpty: d.size === 0,
346
- select: p,
347
- deselect: m,
348
- toggle: h,
349
- isSelected: g,
350
- replaceSelection: v,
351
- resetSelection: _,
352
- selectAll: y,
353
- deselectAll: b,
354
- toggleAll: x,
355
- invertSelection: S,
356
- selectMultiple: C,
357
- deselectMultiple: w,
358
- retainOnly: T
714
+ selectedIds: g,
715
+ selectedCount: u.size,
716
+ selectedItems: h,
717
+ isEmpty: u.size === 0,
718
+ isAllSelected: _,
719
+ isPartiallySelected: v,
720
+ select: y,
721
+ deselect: b,
722
+ toggle: x,
723
+ isSelected: S,
724
+ reset: C,
725
+ replaceSelection: w,
726
+ selectAll: T,
727
+ deselectAll: E,
728
+ toggleAll: D,
729
+ invertSelection: O,
730
+ selectMultiple: k,
731
+ deselectMultiple: A,
732
+ retainOnly: j
359
733
  };
360
734
  }
361
735
  //#endregion
736
+ //#region src/state/useOrder/utils.ts
737
+ function De(e, t) {
738
+ return e < 0 ? t + e : e;
739
+ }
740
+ //#endregion
741
+ //#region src/state/useOrder/validation.ts
742
+ var R = globalThis.process?.env?.NODE_ENV !== "production";
743
+ function z(e, t, n) {
744
+ if (typeof e == "number") {
745
+ if (b(e)) return !0;
746
+ if (R) throw console.warn(`[useOrder] ${n}: index must be an integer, received: ${e}.`), Error(`[useOrder] ${n}: index must be an integer, received: ${e}.`);
747
+ return !1;
748
+ }
749
+ if (!t) {
750
+ if (R) throw console.warn(`[useOrder] ${n}: received an item instead of a numeric index, but no "field" option is configured to resolve it.`), Error(`[useOrder] ${n}: received an item instead of a numeric index, but no "field" option is configured to resolve it.`);
751
+ return !1;
752
+ }
753
+ return !0;
754
+ }
755
+ function B(t, n, r, i, a, o) {
756
+ let s = n.length;
757
+ if (typeof t == "number") {
758
+ let e = De(t, s);
759
+ if (e < 0 || e >= s) {
760
+ R && a && console.warn(`[useOrder] ${i}: index ${t} is out of bounds for an array of length ${s}. Call ignored.`);
761
+ return;
762
+ }
763
+ return e;
764
+ }
765
+ let c = e(t, r);
766
+ if (c === void 0) {
767
+ R && a && console.warn(`[useOrder] ${i}: could not resolve an id from the given item using field "${r}". Call ignored.`);
768
+ return;
769
+ }
770
+ if (o) {
771
+ let e = o.get(c);
772
+ return e === void 0 && R && a && console.warn(`[useOrder] ${i}: no item with a matching id was found in orderedItems. Call ignored.`), e;
773
+ }
774
+ let l = n.findIndex((t) => e(t, r) === c);
775
+ if (l === -1) {
776
+ R && a && console.warn(`[useOrder] ${i}: no item with a matching id was found in orderedItems. Call ignored.`);
777
+ return;
778
+ }
779
+ return l;
780
+ }
781
+ //#endregion
362
782
  //#region src/state/useOrder/useOrder.ts
363
- function d(e = []) {
364
- let a = n(() => Array.isArray(e) ? e : [], [e]), o = r(a), [s, c] = i(() => a), l = t((e) => {
365
- typeof e == "number" && c((t) => {
366
- if (e <= 0 || e >= t.length) return t;
367
- let n = [...t];
368
- return [n[e], n[e - 1]] = [n[e - 1], n[e]], n;
369
- });
370
- }, []), u = t((e) => {
371
- typeof e == "number" && c((t) => {
372
- if (e < 0 || e >= t.length - 1) return t;
373
- let n = [...t];
374
- return [n[e], n[e + 1]] = [n[e + 1], n[e]], n;
375
- });
376
- }, []), d = t((e) => e > 0, []), f = t((e) => e < s.length - 1, [s.length]), p = t((e) => {
377
- typeof e == "number" && c((t) => {
378
- if (e <= 0 || e >= t.length) return t;
379
- let n = [...t], [r] = n.splice(e, 1);
380
- return n.unshift(r), n;
381
- });
382
- }, []), m = t((e) => {
383
- typeof e == "number" && c((t) => {
384
- if (e < 0 || e >= t.length - 1) return t;
385
- let n = [...t], [r] = n.splice(e, 1);
386
- return n.push(r), n;
387
- });
388
- }, []), h = t((e, t) => {
389
- typeof e != "number" || typeof t != "number" || e === t || c((n) => {
390
- if (e < 0 || e >= n.length || t < 0 || t >= n.length) return n;
391
- let r = [...n], [i] = r.splice(e, 1);
392
- return r.splice(t, 0, i), r;
393
- });
394
- }, []), g = t((e, t) => {
395
- typeof e != "number" || typeof t != "number" || e === t || c((n) => {
396
- if (e < 0 || e >= n.length || t < 0 || t >= n.length) return n;
397
- let r = [...n];
398
- return [r[e], r[t]] = [r[t], r[e]], r;
399
- });
400
- }, []), _ = t(() => {
401
- c(o.current);
402
- }, []);
783
+ function Oe(n = [], o) {
784
+ let { isDisabled: s, field: c } = o ?? {}, l = r(() => Array.isArray(n) ? n : [], [n]), u = i(l), [d, f] = a(() => l), p = r(() => {
785
+ if (!c) return;
786
+ let t = /* @__PURE__ */ new Map();
787
+ return d.forEach((n, r) => {
788
+ t.set(e(n, c), r);
789
+ }), t;
790
+ }, [d, c]);
403
791
  return {
404
- orderedItems: s,
405
- moveUp: l,
406
- moveDown: u,
407
- canMoveUp: d,
408
- canMoveDown: f,
409
- moveToTop: p,
410
- moveToBottom: m,
411
- move: h,
412
- swap: g,
413
- replaceOrder: t((e) => {
414
- c(Array.isArray(e) ? e : []);
792
+ orderedItems: d,
793
+ movePrevious: t((e) => {
794
+ z(e, c, "movePrevious") && f((t) => {
795
+ let n = B(e, t, c, "movePrevious", !0);
796
+ if (n === void 0 || n === 0) return t;
797
+ let r = n - 1;
798
+ if (s?.(t[n], n) || s?.(t[r], r)) return t;
799
+ let i = [...t];
800
+ return [i[n], i[r]] = [i[r], i[n]], i;
801
+ });
802
+ }, [s, c]),
803
+ moveNext: t((e) => {
804
+ z(e, c, "moveNext") && f((t) => {
805
+ let n = B(e, t, c, "moveNext", !0);
806
+ if (n === void 0 || n === t.length - 1) return t;
807
+ let r = n + 1;
808
+ if (s?.(t[n], n) || s?.(t[r], r)) return t;
809
+ let i = [...t];
810
+ return [i[n], i[r]] = [i[r], i[n]], i;
811
+ });
812
+ }, [s, c]),
813
+ canMovePrevious: t((e) => {
814
+ if (!z(e, c, "canMovePrevious")) return !1;
815
+ let t = B(e, d, c, "canMovePrevious", !1, p);
816
+ if (t === void 0 || t === 0) return !1;
817
+ let n = t - 1;
818
+ return !(s?.(d[t], t) || s?.(d[n], n));
819
+ }, [
820
+ d,
821
+ s,
822
+ c,
823
+ p
824
+ ]),
825
+ canMoveNext: t((e) => {
826
+ if (!z(e, c, "canMoveNext")) return !1;
827
+ let t = B(e, d, c, "canMoveNext", !1, p);
828
+ if (t === void 0 || t === d.length - 1) return !1;
829
+ let n = t + 1;
830
+ return !(s?.(d[t], t) || s?.(d[n], n));
831
+ }, [
832
+ d,
833
+ s,
834
+ c,
835
+ p
836
+ ]),
837
+ moveToStart: t((e) => {
838
+ z(e, c, "moveToStart") && f((t) => {
839
+ let n = B(e, t, c, "moveToStart", !0);
840
+ if (n === void 0 || n === 0 || s?.(t[n], n)) return t;
841
+ let r = [...t], [i] = r.splice(n, 1);
842
+ return r.unshift(i), r;
843
+ });
844
+ }, [s, c]),
845
+ moveToEnd: t((e) => {
846
+ z(e, c, "moveToEnd") && f((t) => {
847
+ let n = B(e, t, c, "moveToEnd", !0);
848
+ if (n === void 0 || n === t.length - 1 || s?.(t[n], n)) return t;
849
+ let r = [...t], [i] = r.splice(n, 1);
850
+ return r.push(i), r;
851
+ });
852
+ }, [s, c]),
853
+ move: t((e, t) => {
854
+ !z(e, c, "move(from)") || !z(t, c, "move(to)") || f((n) => {
855
+ let r = B(e, n, c, "move(from)", !0), i = B(t, n, c, "move(to)", !0);
856
+ if (r === void 0 || i === void 0 || r === i || s?.(n[r], r)) return n;
857
+ let a = [...n], [o] = a.splice(r, 1);
858
+ return a.splice(i, 0, o), a;
859
+ });
860
+ }, [s, c]),
861
+ swap: t((e, t) => {
862
+ !z(e, c, "swap(a)") || !z(t, c, "swap(b)") || f((n) => {
863
+ let r = B(e, n, c, "swap(a)", !0), i = B(t, n, c, "swap(b)", !0);
864
+ if (r === void 0 || i === void 0 || r === i || s?.(n[r], r) || s?.(n[i], i)) return n;
865
+ let a = [...n];
866
+ return [a[r], a[i]] = [a[i], a[r]], a;
867
+ });
868
+ }, [s, c]),
869
+ resetOrder: t(() => {
870
+ f(u.current);
415
871
  }, []),
416
- resetOrder: _
872
+ replaceOrder: t((e) => {
873
+ f(Array.isArray(e) ? e : []);
874
+ }, [])
417
875
  };
418
876
  }
419
877
  //#endregion
420
878
  //#region src/state/usePagination/usePagination.ts
421
- function f(e = [], r, a = 0) {
422
- let o = n(() => Array.isArray(e) ? e : [], [e]), [s, c] = i(r), [l, u] = i(a), d = Math.max(1, Math.ceil(o.length / Math.max(1, s))), f = Math.min(Math.max(0, l), d - 1);
423
- return l !== f && u(f), {
424
- pageItems: n(() => typeof s != "number" || s < 1 ? [] : o.slice(l * s, (l + 1) * s), [
425
- l,
426
- s,
427
- o
428
- ]),
429
- pageSize: s,
430
- pageIndex: l,
431
- totalPages: d,
432
- canPrevious: l > 0,
433
- canNext: l < d - 1,
434
- nextPage: t(() => {
435
- u((e) => e < d - 1 ? e + 1 : e);
436
- }, [d]),
437
- previousPage: t(() => {
438
- u((e) => e > 0 ? e - 1 : e);
439
- }, []),
440
- goToFirstPage: t(() => {
441
- u(0);
442
- }, []),
443
- goToLastPage: t(() => {
444
- u(d - 1);
445
- }, [d]),
446
- goToPage: t((e) => {
447
- typeof e == "number" && e >= 0 && e <= d - 1 && u(e);
448
- }, [d]),
449
- changePageSize: t((e) => {
450
- if (typeof e == "number" && e > 0) {
451
- c(e);
452
- let t = Math.max(1, Math.ceil(o.length / Math.max(1, e)));
453
- u((e) => Math.min(Math.max(0, e), t - 1));
879
+ var V = globalThis.process?.env?.NODE_ENV !== "production";
880
+ function ke(e = [], n = 10, o = 1) {
881
+ let s = r(() => Array.isArray(e) ? e : [], [e]), [c, l] = a(() => {
882
+ if (C(n)) return n;
883
+ if (V) throw console.warn(`[usePagination] initialPageSize must be a positive integer, received: ${n}. Falling back to 10.`), Error(`[usePagination] initialPageSize must be a positive integer, received: ${n}.`);
884
+ return 10;
885
+ }), [u, d] = a(() => {
886
+ if (C(o)) return o - 1;
887
+ if (V) throw console.warn(`[usePagination] initialPageNumber must be a positive integer, received: ${o}. Falling back to 1.`), Error(`[usePagination] initialPageNumber must be a positive integer, received: ${o}.`);
888
+ return 0;
889
+ }), f = i(c), p = i(u), m = s.length, h = Math.max(1, Math.ceil(m / Math.max(1, c))), g = Math.min(Math.max(0, u), h - 1), _ = r(() => {
890
+ if (C(c)) return s.slice(g * c, (g + 1) * c);
891
+ if (V) throw console.warn(`[usePagination] internal invariant violated: pageSize should always be a valid positive integer here, received: ${c}.`), Error(`[usePagination] internal invariant violated: pageSize should always be a valid positive integer here, received: ${c}.`);
892
+ return [];
893
+ }, [
894
+ g,
895
+ c,
896
+ s
897
+ ]), v = g > 0, y = g < h - 1, b = m === 0 ? 0 : g * c + 1, x = m === 0 ? 0 : Math.min((g + 1) * c, m), S = t(() => {
898
+ d((e) => {
899
+ let t = Math.min(Math.max(0, e), h - 1);
900
+ return t < h - 1 ? t + 1 : t;
901
+ });
902
+ }, [h]), w = t(() => {
903
+ d((e) => {
904
+ let t = Math.min(Math.max(0, e), h - 1);
905
+ return t > 0 ? t - 1 : t;
906
+ });
907
+ }, [h]), T = t(() => {
908
+ d(0);
909
+ }, []), E = t(() => {
910
+ d(h - 1);
911
+ }, [h]), D = t((e) => {
912
+ if (!C(e)) {
913
+ if (V) throw console.warn(`[usePagination] goToPage: newPageNumber must be a positive integer, received: ${e}.`), Error(`[usePagination] goToPage: newPageNumber must be a positive integer, received: ${e}.`);
914
+ return;
915
+ }
916
+ d(Math.min(e - 1, h - 1));
917
+ }, [h]), O = t((e) => {
918
+ if (!C(e)) {
919
+ if (V) throw console.warn(`[usePagination] changePageSize: newPageSize must be a positive integer, received: ${e}.`), Error(`[usePagination] changePageSize: newPageSize must be a positive integer, received: ${e}.`);
920
+ return;
921
+ }
922
+ l(e);
923
+ }, []), k = t(() => {
924
+ d(p.current);
925
+ }, []), A = t(() => {
926
+ l(f.current);
927
+ }, []), j = t(() => {
928
+ l(f.current), d(p.current);
929
+ }, []);
930
+ return {
931
+ pageItems: _,
932
+ pageNumber: g + 1,
933
+ pageSize: c,
934
+ totalPages: h,
935
+ totalCount: m,
936
+ startIndex: b,
937
+ endIndex: x,
938
+ canPreviousPage: v,
939
+ canNextPage: y,
940
+ nextPage: S,
941
+ previousPage: w,
942
+ goToFirstPage: T,
943
+ goToLastPage: E,
944
+ goToPage: D,
945
+ changePageSize: O,
946
+ resetPageNumber: k,
947
+ resetPageSize: A,
948
+ resetPagination: j
949
+ };
950
+ }
951
+ //#endregion
952
+ //#region src/state/usePin/validation.ts
953
+ var H = globalThis.process?.env?.NODE_ENV !== "production";
954
+ function U(e, t, n) {
955
+ if (w(e)) return !0;
956
+ if (!t) {
957
+ if (H) throw console.warn(`[usePin] ${n}: received an object item but no "field" option is configured to resolve its id. Every such item would collapse onto the same pinned id.`), Error(`[usePin] ${n}: received an object item but no "field" option is configured to resolve its id.`);
958
+ return !1;
959
+ }
960
+ return !0;
961
+ }
962
+ function W(t, n, r) {
963
+ if (w(t)) return t;
964
+ if (!n) return;
965
+ let i = e(t, n);
966
+ return i === void 0 && H && console.warn(`[usePin] ${r}: could not resolve an id from the given item using field "${n}".`), i;
967
+ }
968
+ function Ae(e, t) {
969
+ if (e === void 0) return 2 ** 53 - 1;
970
+ if (C(e)) return e;
971
+ if (H) throw console.warn(`[usePin] ${t}: maxPins must be a positive integer, received: ${e}.`), Error(`[usePin] ${t}: maxPins must be a positive integer, received: ${e}.`);
972
+ return 2 ** 53 - 1;
973
+ }
974
+ function je(e) {
975
+ H && console.warn(`[usePin] ${e}: pin limit reached; call ignored. Check "canPin" before calling, or raise "maxPins".`);
976
+ }
977
+ function Me(e, t, n) {
978
+ H && console.warn(`[usePin] ${e}: ${t} pinned ids exceeds maxPins (${n}); truncating to the first ${n}.`);
979
+ }
980
+ //#endregion
981
+ //#region src/state/usePin/usePin.ts
982
+ function Ne(e = {}) {
983
+ let n = e, o = n.field, s = r(() => Array.isArray(n.items) ? n.items : [], [n.items]), c = r(() => Array.isArray(n.initialPinnedIds) ? n.initialPinnedIds : [], [n.initialPinnedIds]), l = i(c), [u, d] = a(() => Ae(n.maxPins, "usePin")), f = i(u), [p, m] = a(() => {
984
+ let e = [...new Set(c)];
985
+ return e.length > u && Me("usePin", e.length, u), new Set(e.slice(0, u));
986
+ }), h = t((e) => {
987
+ U(e, o, "pin") && m((t) => {
988
+ let n = W(e, o, "pin");
989
+ if (n === void 0 || t.has(n)) return t;
990
+ if (t.size >= u) return je("pin"), t;
991
+ let r = new Set(t);
992
+ return r.add(n), r;
993
+ });
994
+ }, [o, u]), g = t((e) => {
995
+ U(e, o, "unpin") && m((t) => {
996
+ let n = W(e, o, "unpin");
997
+ if (n === void 0 || !t.has(n)) return t;
998
+ let r = new Set(t);
999
+ return r.delete(n), r;
1000
+ });
1001
+ }, [o]), _ = t((e) => {
1002
+ U(e, o, "togglePin") && m((t) => {
1003
+ let n = W(e, o, "togglePin");
1004
+ if (n === void 0) return t;
1005
+ if (t.has(n)) {
1006
+ let e = new Set(t);
1007
+ return e.delete(n), e;
454
1008
  }
455
- }, [o.length]),
456
- resetPageIndex: t(() => {
457
- u(Math.min(Math.max(0, a), d - 1));
458
- }, [a, d]),
459
- resetPageSize: t(() => {
460
- c(Math.max(1, r));
461
- let e = Math.max(1, Math.ceil(o.length / Math.max(1, r)));
462
- u((t) => Math.min(Math.max(0, t), e - 1));
463
- }, [r, o.length]),
464
- resetPagination: t(() => {
465
- c(Math.max(1, r));
466
- let e = Math.max(1, Math.ceil(o.length / Math.max(1, r)));
467
- u(Math.min(Math.max(0, a), e - 1));
468
- }, [
469
- r,
470
- a,
471
- o.length
472
- ])
1009
+ if (t.size >= u) return je("togglePin"), t;
1010
+ let r = new Set(t);
1011
+ return r.add(n), r;
1012
+ });
1013
+ }, [o, u]), v = t((e) => {
1014
+ if (!U(e, o, "isPinned")) return !1;
1015
+ let t = W(e, o, "isPinned");
1016
+ return t !== void 0 && p.has(t);
1017
+ }, [p, o]), y = t((e) => {
1018
+ if (!U(e, o, "canPin")) return !1;
1019
+ let t = W(e, o, "canPin");
1020
+ return t === void 0 ? !1 : p.has(t) || p.size < u;
1021
+ }, [
1022
+ p,
1023
+ o,
1024
+ u
1025
+ ]), b = t(() => {
1026
+ m((e) => e.size === 0 ? e : /* @__PURE__ */ new Set());
1027
+ }, []), x = t(() => {
1028
+ m(new Set(l.current));
1029
+ }, []), S = t((e) => {
1030
+ let t = Array.isArray(e) ? e : [], n = [];
1031
+ for (let e of t) {
1032
+ if (!U(e, o, "replacePins")) continue;
1033
+ let t = W(e, o, "replacePins");
1034
+ t !== void 0 && n.push(t);
1035
+ }
1036
+ let r = [...new Set(n)];
1037
+ r.length > u && Me("replacePins", r.length, u), m(new Set(r.slice(0, u)));
1038
+ }, [o, u]), C = t((e) => {
1039
+ let t = Array.isArray(e) ? e : s;
1040
+ m((e) => {
1041
+ let n = new Set(e);
1042
+ for (let e of t) {
1043
+ if (!U(e, o, "pinAll")) continue;
1044
+ let t = W(e, o, "pinAll");
1045
+ if (t !== void 0) {
1046
+ if (n.size >= u && !n.has(t)) {
1047
+ je("pinAll");
1048
+ break;
1049
+ }
1050
+ n.add(t);
1051
+ }
1052
+ }
1053
+ return n;
1054
+ });
1055
+ }, [
1056
+ o,
1057
+ u,
1058
+ s
1059
+ ]), w = t((e) => {
1060
+ if (e === void 0) {
1061
+ m((e) => e.size === 0 ? e : /* @__PURE__ */ new Set());
1062
+ return;
1063
+ }
1064
+ let t = Array.isArray(e) ? e : [];
1065
+ m((e) => {
1066
+ let n = new Set(e);
1067
+ for (let e of t) {
1068
+ if (!U(e, o, "unpinAll")) continue;
1069
+ let t = W(e, o, "unpinAll");
1070
+ t !== void 0 && n.delete(t);
1071
+ }
1072
+ return n;
1073
+ });
1074
+ }, [o]), T = t((e) => {
1075
+ d(Ae(e, "changeMaxPins"));
1076
+ }, []), E = t(() => {
1077
+ d(f.current);
1078
+ }, []), D = r(() => [...p], [p]), { pinnedItems: O, unpinnedItems: k } = r(() => {
1079
+ let e = [], t = [];
1080
+ for (let n of s) {
1081
+ let r = W(n, o, "pinnedItems");
1082
+ r !== void 0 && p.has(r) ? e.push(n) : t.push(n);
1083
+ }
1084
+ return {
1085
+ pinnedItems: e,
1086
+ unpinnedItems: t
1087
+ };
1088
+ }, [
1089
+ s,
1090
+ o,
1091
+ p
1092
+ ]);
1093
+ return {
1094
+ pinnedIds: D,
1095
+ pinnedItems: O,
1096
+ unpinnedItems: k,
1097
+ pinnedCount: p.size,
1098
+ hasPins: p.size > 0,
1099
+ isAtMaxLimit: p.size >= u,
1100
+ maxPins: u,
1101
+ pin: h,
1102
+ unpin: g,
1103
+ togglePin: _,
1104
+ isPinned: v,
1105
+ canPin: y,
1106
+ clearPins: b,
1107
+ resetPins: x,
1108
+ replacePins: S,
1109
+ pinAll: C,
1110
+ unpinAll: w,
1111
+ changeMaxPins: T,
1112
+ resetMaxPins: E
473
1113
  };
474
1114
  }
475
1115
  //#endregion
476
1116
  //#region src/state/useSingleSelection/useSingleSelection.ts
477
- function p(e) {
478
- let [n, r] = i(e), a = t((e) => r(e), []), o = t(() => r(void 0), []), s = t((e) => r((t) => t === e ? void 0 : e), []), c = t((e) => n === e, [n]), l = t(() => r(e), [e]);
1117
+ function Pe(e = {}) {
1118
+ let { defaultSelectedId: n, isDisabled: r } = e, [i, o] = a(n), s = t((e) => {
1119
+ r?.(e) || o(e);
1120
+ }, [r]), c = t(() => o(void 0), []), l = t((e) => {
1121
+ r?.(e) || o((t) => t === e ? void 0 : e);
1122
+ }, [r]), u = t((e) => i === e, [i]), d = t(() => o(n), [n]);
479
1123
  return {
480
- selectedId: n,
481
- hasSelection: !!n,
482
- select: a,
483
- deselect: o,
484
- toggle: s,
485
- isSelected: c,
486
- resetSelection: l
1124
+ selectedId: i,
1125
+ hasSelection: i !== void 0,
1126
+ select: s,
1127
+ deselect: c,
1128
+ toggle: l,
1129
+ isSelected: u,
1130
+ reset: d
487
1131
  };
488
1132
  }
489
1133
  //#endregion
490
- //#region src/state/useSort/utils.ts
491
- function m(e, t, n = {}) {
492
- let { sortUndefined: r, desc: i = !1 } = n, a = x(e, t, r, i);
493
- if (a !== null) return a;
494
- let o = !!e;
495
- return o === !!t ? 0 : o ? 1 : -1;
496
- }
497
- function h(e, t, n = {}) {
498
- let { sortUndefined: r, desc: i = !1 } = n, a = x(e, t, r, i);
499
- if (a !== null) return a;
500
- let o = Number(e), s = Number(t), c = Number.isNaN(o), l = Number.isNaN(s);
501
- return c || l ? x(c ? void 0 : o, l ? void 0 : s, r, i) ?? 0 : o - s;
502
- }
503
- function g(e, t, n = {}) {
504
- let { desc: r = !1, sortUndefined: i, caseSensitive: a = !1 } = n, o = x(e, t, i, r);
505
- if (o !== null) return o;
506
- let s = String(e), c = String(t);
507
- return s.localeCompare(c, void 0, { sensitivity: a ? "variant" : "base" });
508
- }
509
- function _(e, t, n = {}) {
510
- let { desc: r = !1, sortUndefined: i, caseSensitive: a = !1 } = n, o = x(e, t, i, r);
511
- if (o !== null) return o;
512
- let s = String(e), c = String(t);
513
- return s.localeCompare(c, void 0, {
1134
+ //#region src/state/useSort/comparators.ts
1135
+ function Fe(e, t) {
1136
+ return e === t ? 0 : e < t ? -1 : 1;
1137
+ }
1138
+ function Ie(e, t) {
1139
+ return e === t ? 0 : e ? 1 : -1;
1140
+ }
1141
+ function Le(e, t, n = "day") {
1142
+ return n === "instant" ? e.getTime() - t.getTime() : _(e).getTime() - _(t).getTime();
1143
+ }
1144
+ function Re(e, t, n = !1) {
1145
+ return e.localeCompare(t, void 0, { sensitivity: n ? "variant" : "base" });
1146
+ }
1147
+ function ze(e, t, n = !1) {
1148
+ return e.localeCompare(t, void 0, {
514
1149
  numeric: !0,
515
- sensitivity: a ? "variant" : "base"
1150
+ sensitivity: n ? "variant" : "base"
516
1151
  });
517
1152
  }
518
- function v(e, t, n = {}) {
519
- let { desc: r = !1, sortUndefined: i } = n, a = x(e, t, i, r);
520
- if (a !== null) return a;
521
- let o = new Date(e).getTime(), s = new Date(t).getTime(), c = Number.isNaN(o), l = Number.isNaN(s);
522
- return (c || l) && (a = x(c ? void 0 : o, l ? void 0 : s, i, r), a !== null) ? a : o - s;
523
- }
524
- function y(e, t, n = {}) {
525
- let { desc: r = !1, sortUndefined: i } = n, a = x(e, t, i, r);
526
- return a === null ? e < t ? -1 : +(e > t) : a;
527
- }
528
- function b(e, t, n = {}) {
529
- let { desc: r = !1, sortUndefined: i, compare: a } = n, o = x(e, t, i, r);
530
- return o === null ? typeof a == "function" ? a(e, t) : e < t ? -1 : +(e > t) : o;
531
- }
532
- function x(e, t, n = "last", r) {
533
- let i = e == null || e === "", a = t == null || t === "";
534
- if (i && a) return 0;
535
- if (!i && !a) return null;
536
- if (n === "first") return i ? -1 : 1;
537
- if (n === "last") return i ? 1 : -1;
538
- if (n === -1) {
539
- let e = r ? 1 : -1;
540
- return i ? e : -e;
1153
+ function Be(e, t) {
1154
+ return e < t ? -1 : +(e > t);
1155
+ }
1156
+ function Ve(e, t, n) {
1157
+ return n(e, t);
1158
+ }
1159
+ function He(e, t = "last", n) {
1160
+ if (t === "first") return e ? -1 : 1;
1161
+ if (t === "last") return e ? 1 : -1;
1162
+ let r = t === -1 ? e ? -1 : 1 : e ? 1 : -1;
1163
+ return n ? -r : r;
1164
+ }
1165
+ function G(e, t, n, r) {
1166
+ return (i, a) => {
1167
+ let o = e(i), s = e(a);
1168
+ if (o === null || s === null) return o === null && s === null ? 0 : He(o === null, n, r);
1169
+ let c = t(o, s);
1170
+ return c === 0 ? 0 : r ? -c : c;
1171
+ };
1172
+ }
1173
+ function Ue(e, t) {
1174
+ let { type: n, sortUndefined: r } = e;
1175
+ switch (n) {
1176
+ case "numeric": return G(k, Fe, r, t);
1177
+ case "boolean": return G(E, Ie, r, t);
1178
+ case "date": {
1179
+ let n = e.dateGranularity ?? "day";
1180
+ return G(D, (e, t) => Le(e, t, n), r, t);
1181
+ }
1182
+ case "alphabetical": {
1183
+ let n = e.caseSensitive ?? !1;
1184
+ return G(O, (e, t) => Re(e, t, n), r, t);
1185
+ }
1186
+ case "alphanumeric": {
1187
+ let n = e.caseSensitive ?? !1;
1188
+ return G(O, (e, t) => ze(e, t, n), r, t);
1189
+ }
1190
+ case "basic": return G((e) => S(e) ? null : e, Be, r, t);
1191
+ case "custom": {
1192
+ let { compare: n } = e;
1193
+ return typeof n == "function" ? G((e) => S(e) ? null : e, (e, t) => Ve(e, t, n), r, t) : void 0;
1194
+ }
1195
+ default: return;
541
1196
  }
542
- if (n === 1) {
543
- let e = r ? 1 : -1;
544
- return i ? -e : e;
1197
+ }
1198
+ //#endregion
1199
+ //#region src/state/useSort/validation.ts
1200
+ var K = globalThis.process?.env?.NODE_ENV !== "production";
1201
+ function We(e, t) {
1202
+ if (!K) return;
1203
+ let n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
1204
+ for (let t of e) n.has(t.id) && r.add(t.id), n.add(t.id);
1205
+ r.size > 0 && console.warn(`[useSort] ${t} contains duplicate sort ids: ${[...r].join(", ")}. Lookups by id (getSort, getSortDirection, getNextSortingOrder, getSortIndex, updateSortConfig) will only ever affect the first match.`);
1206
+ }
1207
+ function q(e) {
1208
+ return e.type === "custom" ? typeof e.compare == "function" : e.type === "date" ? e.dateGranularity === void 0 || e.dateGranularity === "day" || e.dateGranularity === "instant" : e.type === "alphabetical" || e.type === "alphanumeric" ? e.caseSensitive === void 0 || typeof e.caseSensitive == "boolean" : !0;
1209
+ }
1210
+ function Ge(e, t, n, r) {
1211
+ let i = e.findIndex((e) => e.id === t), a = e[i];
1212
+ if (i === -1 || !a) {
1213
+ if (K) throw console.warn(`[useSort] ${r}: no sort found with id "${t}".`), Error(`[useSort] ${r}: no sort found with id "${t}".`);
1214
+ return e;
545
1215
  }
546
- return null;
1216
+ let o = {
1217
+ ...a,
1218
+ ...n
1219
+ };
1220
+ if (!q(o)) {
1221
+ if (K) throw console.warn(`[useSort] ${r}: update to sort "${t}" would produce an invalid config for type "${o.type}".`, {
1222
+ attempted: n,
1223
+ current: a
1224
+ }), Error(`[useSort] ${r}: update to sort "${t}" would produce an invalid config for type "${o.type}".`);
1225
+ return e;
1226
+ }
1227
+ let s = [...e];
1228
+ return s[i] = o, s;
547
1229
  }
548
1230
  //#endregion
549
1231
  //#region src/state/useSort/useSort.ts
550
- function S(a = [], o = []) {
551
- let s = n(() => Array.isArray(a) ? a : [], [a]), c = n(() => Array.isArray(o) ? o : [], [o]), l = r(c), [u, d] = i(() => c), f = n(() => {
552
- let t = u.map((e) => ({
553
- ...e,
554
- pathArray: (e.field || e.id).split(".")
555
- }));
556
- return [...s].sort((n, r) => {
557
- for (let i of t) {
558
- let { type: t, id: a, desc: o = !1, invertSorting: s = !1, pathArray: c } = i, l = e(n, c, a), u = e(r, c, a), d;
559
- switch (t) {
560
- case "numeric":
561
- d = h(l, u, i);
562
- break;
563
- case "alphabetical":
564
- d = g(l, u, i);
565
- break;
566
- case "alphanumeric":
567
- d = _(l, u, i);
568
- break;
569
- case "boolean":
570
- d = m(l, u, i);
571
- break;
572
- case "date":
573
- d = v(l, u, i);
574
- break;
575
- case "basic":
576
- d = y(l, u, i);
577
- break;
578
- case "custom":
579
- d = b(l, u, i);
580
- break;
581
- default: d = y(l, u, i);
582
- }
583
- if (d !== 0) return d * (o === s ? 1 : -1);
1232
+ var J = globalThis.process?.env?.NODE_ENV !== "production";
1233
+ function Ke(o = [], s = [], c) {
1234
+ let l = r(() => Array.isArray(o) ? o : [], [o]), u = r(() => Array.isArray(s) ? s : [], [s]), d = i(u), [f, p] = a(() => (We(u, "initialSorts"), u)), m = n(f), h = c?.defer ? m : f, g = r(() => {
1235
+ if (h.length === 0) return l;
1236
+ let t = [];
1237
+ for (let e of h) {
1238
+ let { id: n, type: r, field: i, desc: a = !1, invertSorting: o = !1 } = e, s = (i ?? n).split("."), c = Ue(e, a !== o);
1239
+ if (!c) {
1240
+ if (J) throw console.warn(`[useSort] sort "${n}" could not be resolved (type "${r}" is unknown, or a "custom" sort is missing its "compare" function). Skipping this sort key.`), Error(`[useSort] sort "${n}" could not be resolved (type "${r}" is unknown, or a "custom" sort is missing its "compare" function).`);
1241
+ continue;
1242
+ }
1243
+ t.push({
1244
+ pathArray: s,
1245
+ compareValues: c
1246
+ });
1247
+ }
1248
+ return t.length === 0 ? l : [...l].sort((n, r) => {
1249
+ for (let { pathArray: i, compareValues: a } of t) {
1250
+ let t = a(e(n, i), e(r, i));
1251
+ if (t !== 0) return t;
584
1252
  }
585
1253
  return 0;
586
1254
  });
587
- }, [u, s]), p = t((e) => d((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? e : t) : [...t, e]), []), x = t((e) => {
588
- d((t) => Array.isArray(e) ? t.filter((t) => !e.includes(t.id)) : t.filter((t) => t.id !== e));
589
- }, []), S = t(() => d([]), []), C = t(() => d(l.current), []), w = t((e) => {
590
- d(Array.isArray(e) ? e : []);
591
- }, []), T = t((e, t, n) => {
592
- let { multi: r = !1, ...i } = n || {};
593
- d((n) => {
1255
+ }, [l, h]), _ = f.length, v = _ > 0, y = t((e) => {
1256
+ p((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? e : t) : [...t, e]);
1257
+ }, []), b = t((e) => {
1258
+ p((t) => Array.isArray(e) ? t.filter((t) => !e.includes(t.id)) : t.filter((t) => t.id !== e));
1259
+ }, []), x = t(() => p([]), []), S = t(() => p(d.current), []), C = t((e) => {
1260
+ let t = Array.isArray(e) ? e : [];
1261
+ We(t, "replaceSorts"), p(t);
1262
+ }, []), w = t((e, t, n) => {
1263
+ let { multi: r = !1, ...i } = n ?? {};
1264
+ p((n) => {
594
1265
  let a = n.find((t) => t.id === e);
595
1266
  if (!a) {
596
1267
  let a = {
@@ -599,6 +1270,10 @@ function S(a = [], o = []) {
599
1270
  ...i,
600
1271
  desc: !1
601
1272
  };
1273
+ if (!q(a)) {
1274
+ if (J) throw console.warn(`[useSort] toggleSort: constructed an invalid sort config for id "${e}" (type "${t}").`), Error(`[useSort] toggleSort: constructed an invalid sort config for id "${e}" (type "${t}").`);
1275
+ return n;
1276
+ }
602
1277
  return r ? [...n, a] : [a];
603
1278
  }
604
1279
  if (!a.desc) {
@@ -607,6 +1282,10 @@ function S(a = [], o = []) {
607
1282
  ...i,
608
1283
  desc: !0
609
1284
  };
1285
+ if (!q(t)) {
1286
+ if (J) throw console.warn(`[useSort] toggleSort: update would produce an invalid sort config for id "${e}".`), Error(`[useSort] toggleSort: update would produce an invalid sort config for id "${e}".`);
1287
+ return n;
1288
+ }
610
1289
  return r ? n.map((n) => n.id === e ? t : n) : [t];
611
1290
  }
612
1291
  if (a.disableSortRemoval || i.disableSortRemoval) {
@@ -615,33 +1294,515 @@ function S(a = [], o = []) {
615
1294
  ...i,
616
1295
  desc: !1
617
1296
  };
1297
+ if (!q(t)) {
1298
+ if (J) throw console.warn(`[useSort] toggleSort: update would produce an invalid sort config for id "${e}".`), Error(`[useSort] toggleSort: update would produce an invalid sort config for id "${e}".`);
1299
+ return n;
1300
+ }
618
1301
  return r ? n.map((n) => n.id === e ? t : n) : [t];
619
1302
  }
620
1303
  return r ? n.filter((t) => t.id !== e) : [];
621
1304
  });
622
- }, []);
1305
+ }, []), T = t((e, t) => {
1306
+ p((n) => Ge(n, e, t, "updateSortConfig"));
1307
+ }, []), E = r(() => {
1308
+ let e = /* @__PURE__ */ new Map();
1309
+ for (let t of f) e.has(t.id) || e.set(t.id, t);
1310
+ return e;
1311
+ }, [f]), D = r(() => {
1312
+ let e = /* @__PURE__ */ new Map();
1313
+ return f.forEach((t, n) => {
1314
+ e.has(t.id) || e.set(t.id, n);
1315
+ }), e;
1316
+ }, [f]);
623
1317
  return {
624
- sortedItems: f,
625
- sorts: u,
626
- upsertSorts: p,
627
- removeSort: x,
628
- clearSorts: S,
629
- resetSorts: C,
630
- replaceSorts: w,
1318
+ sortedItems: g,
1319
+ sorts: f,
1320
+ sortCount: _,
1321
+ hasSorts: v,
1322
+ upsertSorts: y,
1323
+ removeSort: b,
1324
+ clearSorts: x,
1325
+ resetSorts: S,
1326
+ replaceSorts: C,
1327
+ toggleSort: w,
1328
+ updateSortConfig: T,
1329
+ getSort: t((e) => E.get(e), [E]),
631
1330
  getSortDirection: t((e) => {
632
- let t = u.find((t) => t.id === e);
1331
+ let t = E.get(e);
633
1332
  return t ? t.desc ? "desc" : "asc" : void 0;
634
- }, [u]),
635
- toggleSort: T,
1333
+ }, [E]),
636
1334
  getNextSortingOrder: t((e) => {
637
- let t = u.find((t) => t.id === e);
1335
+ let t = E.get(e);
638
1336
  return t ? t.desc ? t.disableSortRemoval ? "asc" : "none" : "desc" : "asc";
639
- }, [u]),
1337
+ }, [E]),
640
1338
  getSortIndex: t((e) => {
641
- let t = u.findIndex((t) => t.id === e);
642
- return t === -1 ? void 0 : t + 1;
643
- }, [u])
1339
+ let t = D.get(e);
1340
+ return t === void 0 ? void 0 : t + 1;
1341
+ }, [D])
1342
+ };
1343
+ }
1344
+ //#endregion
1345
+ //#region src/state/useTreeSelection/core.ts
1346
+ function qe(e, t) {
1347
+ let n;
1348
+ if (n = typeof t == "function" ? t(e) : e[t], typeof process < "u" && process.env.NODE_ENV !== "production" && n == null) throw console.warn("[resolveTreeItemId] Resolved id is", n, "— this usually means `field` does not point to a valid property on the item."), Error(`[resolveTreeItemId] Invalid id resolved: ${String(n)}`);
1349
+ return n;
1350
+ }
1351
+ function Je(e, t) {
1352
+ return typeof t == "function" ? t(e) : e[t];
1353
+ }
1354
+ function Ye(e, t, n) {
1355
+ let r = [], i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map();
1356
+ function o(e, s, c, l) {
1357
+ let u = qe(e, t);
1358
+ if (l.has(u)) {
1359
+ if (typeof process < "u" && process.env.NODE_ENV !== "production") throw console.warn("[useTreeSelection] Cycle detected: node", u, "is its own ancestor. This subtree is being skipped rather than recursed forever."), Error(`[useTreeSelection] Cycle detected: node ${u} is its own ancestor.`);
1360
+ return;
1361
+ }
1362
+ let d = {
1363
+ item: e,
1364
+ id: u,
1365
+ parentId: s,
1366
+ depth: c
1367
+ };
1368
+ r.push(d), i.set(u, d);
1369
+ let f = a.get(s);
1370
+ f ? f.push(u) : a.set(s, [u]);
1371
+ let p = Je(e, n);
1372
+ if (!p || p.length === 0) return;
1373
+ let m = new Set(l);
1374
+ m.add(u);
1375
+ for (let e of p) o(e, u, c + 1, m);
1376
+ }
1377
+ for (let t of e) o(t, void 0, 0, /* @__PURE__ */ new Set());
1378
+ return {
1379
+ entries: r,
1380
+ entryById: i,
1381
+ childIdsByParentId: a
1382
+ };
1383
+ }
1384
+ function Y(e, t) {
1385
+ return !(t?.(e) ?? !1);
1386
+ }
1387
+ function X(e, t) {
1388
+ return typeof e == "string" || typeof e == "number" ? e : qe(e, t);
1389
+ }
1390
+ function Z(e, t, n, r) {
1391
+ let i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set();
1392
+ function o(s) {
1393
+ let c = e.childIdsByParentId.get(s);
1394
+ if (!c || c.length === 0 || !r) {
1395
+ let e = t.has(s) ? "selected" : "unselected";
1396
+ return e === "selected" && i.add(s), e;
1397
+ }
1398
+ let l = c.filter((e) => Y(e, n));
1399
+ if (l.length === 0) {
1400
+ let e = t.has(s) ? "selected" : "unselected";
1401
+ return e === "selected" && i.add(s), e;
1402
+ }
1403
+ let u = !0, d = !1;
1404
+ for (let e of l) {
1405
+ let t = o(e);
1406
+ t !== "selected" && (u = !1), t !== "unselected" && (d = !0);
1407
+ }
1408
+ return u ? (i.add(s), "selected") : d ? (a.add(s), "indeterminate") : "unselected";
1409
+ }
1410
+ let s = e.childIdsByParentId.get(void 0) ?? [];
1411
+ for (let e of s) o(e);
1412
+ return {
1413
+ selectedIds: i,
1414
+ indeterminateIds: a
1415
+ };
1416
+ }
1417
+ function Xe(e, t, n, r, i, a, o, s) {
1418
+ let c = new Set(t), l = new Set(n), u = [r];
1419
+ if (o) {
1420
+ let t = [r];
1421
+ for (; t.length > 0;) {
1422
+ let n = t.pop(), r = e.childIdsByParentId.get(n);
1423
+ if (r) for (let e of r) u.push(e), t.push(e);
1424
+ }
1425
+ }
1426
+ for (let e of u) l.delete(e), !(i && !Y(e, a)) && (i ? c.add(e) : c.delete(e));
1427
+ if (s) {
1428
+ let t = e.entryById.get(r)?.parentId;
1429
+ for (; t !== void 0;) {
1430
+ let n = (e.childIdsByParentId.get(t) ?? []).filter((e) => Y(e, a));
1431
+ if (n.length === 0) {
1432
+ t = e.entryById.get(t)?.parentId;
1433
+ continue;
1434
+ }
1435
+ let r = !0, i = !1;
1436
+ for (let e of n) {
1437
+ let t = c.has(e), n = l.has(e);
1438
+ t || (r = !1), (t || n) && (i = !0);
1439
+ }
1440
+ r ? (c.add(t), l.delete(t)) : i ? (l.add(t), c.delete(t)) : (c.delete(t), l.delete(t)), t = e.entryById.get(t)?.parentId;
1441
+ }
1442
+ }
1443
+ return {
1444
+ selectedIds: c,
1445
+ indeterminateIds: l
1446
+ };
1447
+ }
1448
+ function Ze(e, t, n, r, i, a, o, s) {
1449
+ let c = new Set(t), l = new Set(n), u = /* @__PURE__ */ new Set();
1450
+ for (let t of r) {
1451
+ let n = [t];
1452
+ if (o) {
1453
+ let r = [t];
1454
+ for (; r.length > 0;) {
1455
+ let t = r.pop(), i = e.childIdsByParentId.get(t);
1456
+ if (i) for (let e of i) n.push(e), r.push(e);
1457
+ }
1458
+ }
1459
+ for (let e of n) l.delete(e), !(i && !Y(e, a)) && (i ? c.add(e) : c.delete(e));
1460
+ if (s) {
1461
+ let n = e.entryById.get(t)?.parentId;
1462
+ for (; n !== void 0;) u.add(n), n = e.entryById.get(n)?.parentId;
1463
+ }
1464
+ }
1465
+ if (u.size > 0) {
1466
+ let t = [...u].sort((t, n) => (e.entryById.get(n)?.depth ?? 0) - (e.entryById.get(t)?.depth ?? 0));
1467
+ for (let n of t) {
1468
+ let t = (e.childIdsByParentId.get(n) ?? []).filter((e) => Y(e, a));
1469
+ if (t.length === 0) continue;
1470
+ let r = !0, i = !1;
1471
+ for (let e of t) {
1472
+ let t = c.has(e), n = l.has(e);
1473
+ t || (r = !1), (t || n) && (i = !0);
1474
+ }
1475
+ r ? (c.add(n), l.delete(n)) : i ? (l.add(n), c.delete(n)) : (c.delete(n), l.delete(n));
1476
+ }
1477
+ }
1478
+ return {
1479
+ selectedIds: c,
1480
+ indeterminateIds: l
1481
+ };
1482
+ }
1483
+ //#endregion
1484
+ //#region src/state/useTreeSelection/useTreeSelection.ts
1485
+ function Qe(e) {
1486
+ let { items: n, field: i, childrenField: o, isDisabled: s, leafOnly: c = !1 } = e, l = r(() => Array.isArray(n) ? n : [], [n]), u = r(() => Array.isArray(e.defaultSelectedIds) ? e.defaultSelectedIds : [], [e.defaultSelectedIds]), d = e.cascade?.down ?? !0, f = e.cascade?.up ?? !0, p = r(() => Ye(l, i, o), [
1487
+ l,
1488
+ i,
1489
+ o
1490
+ ]), [m, h] = a(() => Z(p, new Set(u), s, f)), g = t((e) => {
1491
+ let t = p.childIdsByParentId.get(e);
1492
+ return !t || t.length === 0;
1493
+ }, [p]), _ = r(() => {
1494
+ let e = [];
1495
+ for (let t of p.entries) m.selectedIds.has(t.id) && (c && !g(t.id) || e.push(t.id));
1496
+ return e;
1497
+ }, [
1498
+ p,
1499
+ m.selectedIds,
1500
+ c,
1501
+ g
1502
+ ]), v = r(() => {
1503
+ let e = [];
1504
+ for (let t of p.entries) m.selectedIds.has(t.id) && g(t.id) && e.push(t.id);
1505
+ return e;
1506
+ }, [
1507
+ p,
1508
+ m.selectedIds,
1509
+ g
1510
+ ]), y = r(() => {
1511
+ let e = [];
1512
+ for (let t of p.entries) m.indeterminateIds.has(t.id) && e.push(t.id);
1513
+ return e;
1514
+ }, [p, m.indeterminateIds]), b = r(() => {
1515
+ let e = new Set(_);
1516
+ return p.entries.filter((t) => e.has(t.id)).map((e) => e.item);
1517
+ }, [p, _]), x = r(() => p.childIdsByParentId.get(void 0) ?? [], [p]), S = r(() => {
1518
+ let e = x.filter((e) => Y(e, s));
1519
+ return e.length > 0 && e.every((e) => m.selectedIds.has(e));
1520
+ }, [
1521
+ x,
1522
+ s,
1523
+ m.selectedIds
1524
+ ]), C = r(() => !S && x.some((e) => m.selectedIds.has(e) || m.indeterminateIds.has(e)), [
1525
+ S,
1526
+ x,
1527
+ m.selectedIds,
1528
+ m.indeterminateIds
1529
+ ]), w = t((e) => {
1530
+ let t = X(e, i);
1531
+ return m.selectedIds.has(t) ? "selected" : m.indeterminateIds.has(t) ? "indeterminate" : "unselected";
1532
+ }, [m, i]), T = t((e) => w(e) === "selected", [w]), E = t((e) => w(e) === "indeterminate", [w]), D = t((e) => {
1533
+ let t = X(e, i);
1534
+ s?.(t) || h((e) => Xe(p, e.selectedIds, e.indeterminateIds, t, !0, s, d, f));
1535
+ }, [
1536
+ i,
1537
+ p,
1538
+ s,
1539
+ d,
1540
+ f
1541
+ ]), O = t((e) => {
1542
+ let t = X(e, i);
1543
+ h((e) => Xe(p, e.selectedIds, e.indeterminateIds, t, !1, s, d, f));
1544
+ }, [
1545
+ i,
1546
+ p,
1547
+ s,
1548
+ d,
1549
+ f
1550
+ ]), k = t((e) => {
1551
+ let t = X(e, i);
1552
+ h((e) => {
1553
+ let n = e.selectedIds.has(t);
1554
+ return !n && s?.(t) ? e : Xe(p, e.selectedIds, e.indeterminateIds, t, !n, s, d, f);
1555
+ });
1556
+ }, [
1557
+ i,
1558
+ p,
1559
+ s,
1560
+ d,
1561
+ f
1562
+ ]), A = t(() => {
1563
+ h(Z(p, new Set(u), s, f));
1564
+ }, [
1565
+ p,
1566
+ u,
1567
+ s,
1568
+ f
1569
+ ]), j = t((e) => {
1570
+ let t = (Array.isArray(e) ? e : []).map((e) => X(e, i));
1571
+ h(Z(p, new Set(t), s, f));
1572
+ }, [
1573
+ i,
1574
+ p,
1575
+ s,
1576
+ f
1577
+ ]), M = t(() => {
1578
+ let e = p.entries.map((e) => e.id);
1579
+ h(Z(p, new Set(e), s, f));
1580
+ }, [
1581
+ p,
1582
+ s,
1583
+ f
1584
+ ]), N = t(() => {
1585
+ h((e) => e.selectedIds.size === 0 && e.indeterminateIds.size === 0 ? e : {
1586
+ selectedIds: /* @__PURE__ */ new Set(),
1587
+ indeterminateIds: /* @__PURE__ */ new Set()
1588
+ });
1589
+ }, []), P = t(() => {
1590
+ h((e) => {
1591
+ let t = x.filter((e) => Y(e, s));
1592
+ if (t.length > 0 && t.every((t) => e.selectedIds.has(t))) return {
1593
+ selectedIds: /* @__PURE__ */ new Set(),
1594
+ indeterminateIds: /* @__PURE__ */ new Set()
1595
+ };
1596
+ let n = p.entries.map((e) => e.id);
1597
+ return Z(p, new Set(n), s, f);
1598
+ });
1599
+ }, [
1600
+ x,
1601
+ p,
1602
+ s,
1603
+ f
1604
+ ]), ee = t((e) => {
1605
+ let t = (Array.isArray(e) ? e : []).map((e) => X(e, i));
1606
+ h((e) => Ze(p, e.selectedIds, e.indeterminateIds, t, !0, s, d, f));
1607
+ }, [
1608
+ i,
1609
+ p,
1610
+ s,
1611
+ d,
1612
+ f
1613
+ ]), te = t((e) => {
1614
+ let t = (Array.isArray(e) ? e : []).map((e) => X(e, i));
1615
+ h((e) => Ze(p, e.selectedIds, e.indeterminateIds, t, !1, s, d, f));
1616
+ }, [
1617
+ i,
1618
+ p,
1619
+ s,
1620
+ d,
1621
+ f
1622
+ ]), ne = t((e) => {
1623
+ let t = new Set((Array.isArray(e) ? e : []).map((e) => X(e, i)));
1624
+ h((e) => {
1625
+ let n = /* @__PURE__ */ new Set();
1626
+ return e.selectedIds.forEach((e) => {
1627
+ t.has(e) && n.add(e);
1628
+ }), Z(p, n, s, f);
1629
+ });
1630
+ }, [
1631
+ i,
1632
+ p,
1633
+ s,
1634
+ f
1635
+ ]), re = t(() => {
1636
+ h((e) => {
1637
+ let t = /* @__PURE__ */ new Set();
1638
+ for (let n of p.entries) {
1639
+ let r = p.childIdsByParentId.get(n.id);
1640
+ (!r || r.length === 0) && Y(n.id, s) && (e.selectedIds.has(n.id) || t.add(n.id));
1641
+ }
1642
+ return Z(p, t, s, f);
1643
+ });
1644
+ }, [
1645
+ p,
1646
+ s,
1647
+ f
1648
+ ]), F = t((e) => {
1649
+ let t = X(e, i);
1650
+ return p.entryById.get(t)?.parentId;
1651
+ }, [p, i]), I = t((e) => {
1652
+ let t = X(e, i), n = [], r = p.entryById.get(t)?.parentId;
1653
+ for (; r !== void 0;) n.push(r), r = p.entryById.get(r)?.parentId;
1654
+ return n;
1655
+ }, [p, i]), ie = t((e) => {
1656
+ let t = X(e, i), n = [], r = [...p.childIdsByParentId.get(t) ?? []];
1657
+ for (; r.length > 0;) {
1658
+ let e = r.pop();
1659
+ n.push(e);
1660
+ let t = p.childIdsByParentId.get(e);
1661
+ t && r.push(...t);
1662
+ }
1663
+ return n;
1664
+ }, [p, i]);
1665
+ return {
1666
+ selectedIds: _,
1667
+ selectedLeafIds: v,
1668
+ indeterminateIds: y,
1669
+ selectedItems: b,
1670
+ selectedCount: _.length,
1671
+ isEmpty: m.selectedIds.size === 0 && m.indeterminateIds.size === 0,
1672
+ isAllSelected: S,
1673
+ isPartiallySelected: C,
1674
+ getNodeState: w,
1675
+ isSelected: T,
1676
+ isIndeterminate: E,
1677
+ select: D,
1678
+ deselect: O,
1679
+ toggle: k,
1680
+ reset: A,
1681
+ replaceSelection: j,
1682
+ selectAll: M,
1683
+ deselectAll: N,
1684
+ toggleAll: P,
1685
+ selectMultiple: ee,
1686
+ deselectMultiple: te,
1687
+ retainOnly: ne,
1688
+ invertSelection: re,
1689
+ getParentId: F,
1690
+ getAncestorIds: I,
1691
+ getDescendantIds: ie
1692
+ };
1693
+ }
1694
+ //#endregion
1695
+ //#region src/state/useVisibility/validation.ts
1696
+ var $e = globalThis.process?.env?.NODE_ENV !== "production";
1697
+ function Q(e, t, n) {
1698
+ if (w(e)) return !0;
1699
+ if (!t) {
1700
+ if ($e) throw console.warn(`[useVisibility] ${n}: received an object item but no "field" option is configured to resolve its id. Every such item would collapse onto the same visibility id.`), Error(`[useVisibility] ${n}: received an object item but no "field" option is configured to resolve its id.`);
1701
+ return !1;
1702
+ }
1703
+ return !0;
1704
+ }
1705
+ function $(t, n, r) {
1706
+ if (w(t)) return t;
1707
+ if (!n) return;
1708
+ let i = e(t, n);
1709
+ return i === void 0 && $e && console.warn(`[useVisibility] ${r}: could not resolve an id from the given item using field "${n}".`), i;
1710
+ }
1711
+ //#endregion
1712
+ //#region src/state/useVisibility/useVisibility.ts
1713
+ function et(e = {}) {
1714
+ let n = e, o = n.field, s = r(() => Array.isArray(n.items) ? n.items : [], [n.items]), c = r(() => Array.isArray(n.initialVisibleIds) ? n.initialVisibleIds : [], [n.initialVisibleIds]), l = i(c), [u, d] = a(() => new Set(c)), f = t((e) => {
1715
+ if (!Q(e, o, "isVisible")) return !1;
1716
+ let t = $(e, o, "isVisible");
1717
+ return t !== void 0 && u.has(t);
1718
+ }, [u, o]), p = t((e) => {
1719
+ Q(e, o, "show") && d((t) => {
1720
+ let n = $(e, o, "show");
1721
+ if (n === void 0 || t.has(n)) return t;
1722
+ let r = new Set(t);
1723
+ return r.add(n), r;
1724
+ });
1725
+ }, [o]), m = t((e) => {
1726
+ Q(e, o, "hide") && d((t) => {
1727
+ let n = $(e, o, "hide");
1728
+ if (n === void 0 || !t.has(n)) return t;
1729
+ let r = new Set(t);
1730
+ return r.delete(n), r;
1731
+ });
1732
+ }, [o]), h = t((e) => {
1733
+ Q(e, o, "toggleVisibility") && d((t) => {
1734
+ let n = $(e, o, "toggleVisibility");
1735
+ if (n === void 0) return t;
1736
+ let r = new Set(t);
1737
+ return r.has(n) ? r.delete(n) : r.add(n), r;
1738
+ });
1739
+ }, [o]), g = t((e) => {
1740
+ let t = Array.isArray(e) ? e : s;
1741
+ d((e) => {
1742
+ let n = new Set(e);
1743
+ for (let e of t) {
1744
+ if (!Q(e, o, "showAll")) continue;
1745
+ let t = $(e, o, "showAll");
1746
+ t !== void 0 && n.add(t);
1747
+ }
1748
+ return n;
1749
+ });
1750
+ }, [s, o]), _ = t((e) => {
1751
+ if (e === void 0) {
1752
+ d((e) => e.size === 0 ? e : /* @__PURE__ */ new Set());
1753
+ return;
1754
+ }
1755
+ let t = Array.isArray(e) ? e : [];
1756
+ d((e) => {
1757
+ let n = new Set(e);
1758
+ for (let e of t) {
1759
+ if (!Q(e, o, "hideAll")) continue;
1760
+ let t = $(e, o, "hideAll");
1761
+ t !== void 0 && n.delete(t);
1762
+ }
1763
+ return n;
1764
+ });
1765
+ }, [o]), v = t(() => {
1766
+ d(new Set(l.current));
1767
+ }, []), y = t((e) => {
1768
+ let t = Array.isArray(e) ? e : [], n = [];
1769
+ for (let e of t) {
1770
+ if (!Q(e, o, "replaceVisibility")) continue;
1771
+ let t = $(e, o, "replaceVisibility");
1772
+ t !== void 0 && n.push(t);
1773
+ }
1774
+ d(new Set(n));
1775
+ }, [o]), b = r(() => [...u], [u]), { visibleItems: x, hiddenItems: S } = r(() => {
1776
+ let e = [], t = [];
1777
+ for (let n of s) {
1778
+ let r = $(n, o, "visibleItems");
1779
+ r !== void 0 && u.has(r) ? e.push(n) : t.push(n);
1780
+ }
1781
+ return {
1782
+ visibleItems: e,
1783
+ hiddenItems: t
1784
+ };
1785
+ }, [
1786
+ s,
1787
+ o,
1788
+ u
1789
+ ]);
1790
+ return {
1791
+ visibleIds: b,
1792
+ visibleItems: x,
1793
+ hiddenItems: S,
1794
+ visibleCount: u.size,
1795
+ hiddenCount: S.length,
1796
+ hasVisible: u.size > 0,
1797
+ isVisible: f,
1798
+ show: p,
1799
+ hide: m,
1800
+ toggleVisibility: h,
1801
+ showAll: g,
1802
+ hideAll: _,
1803
+ resetVisibility: v,
1804
+ replaceVisibility: y
644
1805
  };
645
1806
  }
646
1807
  //#endregion
647
- export { u as a, o as c, d as i, p as n, l as o, f as r, c as s, S as t };
1808
+ export { Ne as a, Ee as c, te as d, Pe as i, we as l, Qe as n, ke as o, Ke as r, Oe as s, et as t, se as u };