@himanshu-sorathiya/react-kit 1.0.17 → 1.0.18

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 ADDED
@@ -0,0 +1,645 @@
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 = {
5
+ 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())
11
+ },
12
+ 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),
18
+ 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);
22
+ }
23
+ },
24
+ boolean: { equals: (e, t) => !!e == !!t },
25
+ date: {
26
+ 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();
30
+ },
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;
35
+ },
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;
40
+ },
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;
47
+ }
48
+ },
49
+ select: {
50
+ equals: (e, t) => e === t,
51
+ notEquals: (e, t) => e !== t
52
+ },
53
+ 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))
57
+ }
58
+ };
59
+ //#endregion
60
+ //#region src/state/useFilter/useFilter.ts
61
+ function o(o, s = []) {
62
+ let c = r(s), [l, u] = i(() => s), d = n(() => {
63
+ let t = l.filter((e) => e.isActive !== !1).map((e) => ({
64
+ ...e,
65
+ pathArray: (e.field || e.id).split(".")
66
+ }));
67
+ return o.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
+ }, [o, l]), f = t((e) => {
76
+ u((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? e : t) : [...t, e]);
77
+ }, []), p = t((e) => {
78
+ u((t) => Array.isArray(e) ? t.filter((t) => !e.includes(t.id)) : t.filter((t) => t.id !== e));
79
+ }, []), m = t(() => {
80
+ u([]);
81
+ }, []), h = t(() => {
82
+ u(c.current);
83
+ }, []), g = t((e) => {
84
+ u(e);
85
+ }, []);
86
+ return {
87
+ filteredItems: d,
88
+ filters: l,
89
+ upsertFilter: f,
90
+ removeFilter: p,
91
+ clearFilters: m,
92
+ resetFilters: h,
93
+ toggleFilter: t((e) => {
94
+ u((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, {
98
+ ...e,
99
+ isActive: !0
100
+ }]);
101
+ }, []),
102
+ updateFilterConfig: t((e, t) => {
103
+ u((n) => n.map((n) => n.id === e ? {
104
+ ...n,
105
+ ...t
106
+ } : n));
107
+ }, []),
108
+ replaceFilters: g,
109
+ getFilterValue: t((e) => l.find((t) => t.id === e)?.value, [l]),
110
+ updateFilterValue: t((e, t) => {
111
+ u((n) => n.map((n) => n.id === e ? {
112
+ ...n,
113
+ value: t
114
+ } : n));
115
+ }, []),
116
+ isFilterActive: t((e) => {
117
+ let t = l.find((t) => t.id === e);
118
+ return t ? t.isActive !== !1 : !1;
119
+ }, [l])
120
+ };
121
+ }
122
+ //#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;
143
+ }
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);
165
+ }
166
+ }
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
+ }
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
+ }
198
+ return {
199
+ item: t,
200
+ index: n,
201
+ tokens: r,
202
+ combinedFlatText: a.join(" ")
203
+ };
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
+ }
241
+ }
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,
248
+ c,
249
+ l,
250
+ u
251
+ ]);
252
+ }
253
+ //#endregion
254
+ //#region src/state/useGrouping/useGrouping.ts
255
+ function l({ items: r, initialGroupBy: a }) {
256
+ let [o, s] = i(a), c = n(() => o ? r.reduce((t, n) => {
257
+ let r = e(n, o), i = r == null ? "Unknown" : String(r);
258
+ return t[i] || (t[i] = []), t[i].push(n), t;
259
+ }, {}) : { Ungrouped: r }, [r, o]), l = n(() => Object.keys(c).map((e) => ({
260
+ key: e,
261
+ items: c[e]
262
+ })), [c]), u = n(() => Object.keys(c), [c]), d = t((e) => {
263
+ s(e);
264
+ }, []), f = t(() => {
265
+ s(void 0);
266
+ }, []), p = t(() => {
267
+ s(a);
268
+ }, [a]), m = t((e) => c[e] || [], [c]);
269
+ return {
270
+ groupedRecord: c,
271
+ groupedArray: l,
272
+ groupKeys: u,
273
+ totalGroups: u.length,
274
+ activeGroupBy: o,
275
+ changeGroupBy: d,
276
+ clearGrouping: f,
277
+ resetGrouping: p,
278
+ getGroupItems: m
279
+ };
280
+ }
281
+ //#endregion
282
+ //#region src/state/useMultipleSelection/useMultipleSelection.ts
283
+ function u({ items: a, field: o, initialSelectedIds: s = [] }) {
284
+ let c = r(s), [l, u] = i(() => new Set(s)), d = t((t) => {
285
+ u((n) => {
286
+ let r = new Set(n), i = e(t, o);
287
+ return r.add(i), r;
288
+ });
289
+ }, [o]), f = t((t) => {
290
+ u((n) => {
291
+ let r = new Set(n), i = e(t, o);
292
+ return r.delete(i), r;
293
+ });
294
+ }, [o]), p = t((t) => {
295
+ u((n) => {
296
+ let r = new Set(n), i = e(t, o);
297
+ return r.has(i) ? r.delete(i) : r.add(i), r;
298
+ });
299
+ }, [o]), m = t((t) => {
300
+ let n = e(t, o);
301
+ return l.has(n);
302
+ }, [l, o]), h = t(() => u(new Set(c.current)), []), g = t((t) => {
303
+ let n = t.map((t) => e(t, o));
304
+ u(new Set(n));
305
+ }, [o]), _ = t(() => {
306
+ let t = a.map((t) => e(t, o));
307
+ u(new Set(t));
308
+ }, [a, o]), v = t(() => {
309
+ u(/* @__PURE__ */ new Set());
310
+ }, []), y = t(() => u((t) => {
311
+ if (t.size === a.length) return /* @__PURE__ */ new Set();
312
+ let n = a.map((t) => e(t, o));
313
+ return new Set(n);
314
+ }), [a, o]), b = t(() => u((t) => {
315
+ if (t.size === a.length) return /* @__PURE__ */ new Set();
316
+ let n = a.filter((n) => !t.has(e(n, o))).map((t) => e(t, o));
317
+ return new Set(n);
318
+ }), [a, o]), x = t((t) => {
319
+ u((n) => {
320
+ let r = new Set(n);
321
+ return t.map((t) => e(t, o)).forEach((e) => r.add(e)), r;
322
+ });
323
+ }, [o]), S = t((t) => {
324
+ u((n) => {
325
+ let r = new Set(n);
326
+ return t.map((t) => e(t, o)).forEach((e) => r.delete(e)), r;
327
+ });
328
+ }, [o]), C = t((t) => {
329
+ u((n) => {
330
+ let r = /* @__PURE__ */ new Set();
331
+ return t.map((t) => e(t, o)).forEach((e) => n.has(e) && r.add(e)), r;
332
+ });
333
+ }, [o]), w = n(() => a.filter((t) => {
334
+ let n = e(t, o);
335
+ return l.has(n);
336
+ }), [
337
+ a,
338
+ o,
339
+ l
340
+ ]);
341
+ return {
342
+ selectedIds: [...l],
343
+ selectedCount: l.size,
344
+ selectedItems: w,
345
+ isEmpty: l.size === 0,
346
+ select: d,
347
+ deselect: f,
348
+ toggle: p,
349
+ isSelected: m,
350
+ replaceSelection: g,
351
+ resetSelection: h,
352
+ selectAll: _,
353
+ deselectAll: v,
354
+ toggleAll: y,
355
+ invertSelection: b,
356
+ selectMultiple: x,
357
+ deselectMultiple: S,
358
+ retainOnly: C
359
+ };
360
+ }
361
+ //#endregion
362
+ //#region src/state/useOrder/useOrder.ts
363
+ function d(e) {
364
+ let n = r(e), [a, o] = i(() => e), s = t((e) => {
365
+ typeof e == "number" && o((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
+ }, []), c = t((e) => {
371
+ typeof e == "number" && o((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
+ }, []), l = t((e) => e > 0, []), u = t((e) => e < a.length - 1, [a.length]), d = t((e) => {
377
+ typeof e == "number" && o((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
+ }, []), f = t((e) => {
383
+ typeof e == "number" && o((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
+ }, []), p = t((e, t) => {
389
+ typeof e != "number" || typeof t != "number" || e === t || o((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
+ }, []), m = t((e, t) => {
395
+ typeof e != "number" || typeof t != "number" || e === t || o((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
+ }, []), h = t(() => {
401
+ o(n.current);
402
+ }, []);
403
+ return {
404
+ orderedItems: a,
405
+ moveUp: s,
406
+ moveDown: c,
407
+ canMoveUp: l,
408
+ canMoveDown: u,
409
+ moveToTop: d,
410
+ moveToBottom: f,
411
+ move: p,
412
+ swap: m,
413
+ replaceOrder: t((e) => {
414
+ o(e);
415
+ }, []),
416
+ resetOrder: h
417
+ };
418
+ }
419
+ //#endregion
420
+ //#region src/state/usePagination/usePagination.ts
421
+ function f(e, r, a = 0) {
422
+ let [o, s] = i(r), [c, l] = i(a), u = Math.max(1, Math.ceil(e.length / Math.max(1, o))), d = Math.min(Math.max(0, c), u - 1);
423
+ return c !== d && l(d), {
424
+ pageItems: n(() => typeof o != "number" || o < 1 ? [] : e.slice(c * o, (c + 1) * o), [
425
+ c,
426
+ o,
427
+ e
428
+ ]),
429
+ pageSize: o,
430
+ pageIndex: c,
431
+ totalPages: u,
432
+ canPrevious: c > 0,
433
+ canNext: c < u - 1,
434
+ nextPage: t(() => {
435
+ l((e) => e < u - 1 ? e + 1 : e);
436
+ }, [u]),
437
+ previousPage: t(() => {
438
+ l((e) => e > 0 ? e - 1 : e);
439
+ }, []),
440
+ goToFirstPage: t(() => {
441
+ l(0);
442
+ }, []),
443
+ goToLastPage: t(() => {
444
+ l(u - 1);
445
+ }, [u]),
446
+ goToPage: t((e) => {
447
+ typeof e == "number" && e >= 0 && e <= u - 1 && l(e);
448
+ }, [u]),
449
+ changePageSize: t((t) => {
450
+ if (typeof t == "number" && t > 0) {
451
+ s(t);
452
+ let n = Math.max(1, Math.ceil(e.length / Math.max(1, t)));
453
+ l((e) => Math.min(Math.max(0, e), n - 1));
454
+ }
455
+ }, [e.length]),
456
+ resetPageIndex: t(() => {
457
+ l(Math.min(Math.max(0, a), u - 1));
458
+ }, [a, u]),
459
+ resetPageSize: t(() => {
460
+ s(Math.max(1, r));
461
+ let t = Math.max(1, Math.ceil(e.length / Math.max(1, r)));
462
+ l((e) => Math.min(Math.max(0, e), t - 1));
463
+ }, [r, e.length]),
464
+ resetPagination: t(() => {
465
+ s(Math.max(1, r));
466
+ let t = Math.max(1, Math.ceil(e.length / Math.max(1, r)));
467
+ l(Math.min(Math.max(0, a), t - 1));
468
+ }, [
469
+ r,
470
+ a,
471
+ e.length
472
+ ])
473
+ };
474
+ }
475
+ //#endregion
476
+ //#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]);
479
+ return {
480
+ selectedId: n,
481
+ hasSelection: !!n,
482
+ select: a,
483
+ deselect: o,
484
+ toggle: s,
485
+ isSelected: c,
486
+ resetSelection: l
487
+ };
488
+ }
489
+ //#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, {
514
+ numeric: !0,
515
+ sensitivity: a ? "variant" : "base"
516
+ });
517
+ }
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;
541
+ }
542
+ if (n === 1) {
543
+ let e = r ? 1 : -1;
544
+ return i ? -e : e;
545
+ }
546
+ return null;
547
+ }
548
+ //#endregion
549
+ //#region src/state/useSort/useSort.ts
550
+ function S(a, o = []) {
551
+ let s = r(o), [c, l] = i(() => o), u = n(() => {
552
+ let t = c.map((e) => ({
553
+ ...e,
554
+ pathArray: (e.field || e.id).split(".")
555
+ }));
556
+ return [...a].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);
584
+ }
585
+ return 0;
586
+ });
587
+ }, [c, a]), d = t((e) => l((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? e : t) : [...t, e]), []), f = t((e) => {
588
+ l((t) => Array.isArray(e) ? t.filter((t) => !e.includes(t.id)) : t.filter((t) => t.id !== e));
589
+ }, []), p = t(() => l([]), []), x = t(() => l(s.current), []), S = t((e) => l(e), []), C = t((e, t, n) => {
590
+ let { multi: r = !1, ...i } = n || {};
591
+ l((n) => {
592
+ let a = n.find((t) => t.id === e);
593
+ if (!a) {
594
+ let a = {
595
+ id: e,
596
+ type: t,
597
+ ...i,
598
+ desc: !1
599
+ };
600
+ return r ? [...n, a] : [a];
601
+ }
602
+ if (!a.desc) {
603
+ let t = {
604
+ ...a,
605
+ ...i,
606
+ desc: !0
607
+ };
608
+ return r ? n.map((n) => n.id === e ? t : n) : [t];
609
+ }
610
+ if (a.disableSortRemoval || i.disableSortRemoval) {
611
+ let t = {
612
+ ...a,
613
+ ...i,
614
+ desc: !1
615
+ };
616
+ return r ? n.map((n) => n.id === e ? t : n) : [t];
617
+ }
618
+ return r ? n.filter((t) => t.id !== e) : [];
619
+ });
620
+ }, []);
621
+ return {
622
+ sortedItems: u,
623
+ sorts: c,
624
+ upsertSorts: d,
625
+ removeSort: f,
626
+ clearSorts: p,
627
+ resetSorts: x,
628
+ replaceSorts: S,
629
+ getSortDirection: t((e) => {
630
+ let t = c.find((t) => t.id === e);
631
+ return t ? t.desc ? "desc" : "asc" : void 0;
632
+ }, [c]),
633
+ toggleSort: C,
634
+ getNextSortingOrder: t((e) => {
635
+ let t = c.find((t) => t.id === e);
636
+ return t ? t.desc ? t.disableSortRemoval ? "asc" : "none" : "desc" : "asc";
637
+ }, [c]),
638
+ getSortIndex: t((e) => {
639
+ let t = c.findIndex((t) => t.id === e);
640
+ return t === -1 ? void 0 : t + 1;
641
+ }, [c])
642
+ };
643
+ }
644
+ //#endregion
645
+ 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 };