@himanshu-sorathiya/react-kit 1.0.16 → 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/index.js CHANGED
@@ -1,1004 +1,5 @@
1
- import { createContext as e, useCallback as t, useContext as n, useEffect as r, useLayoutEffect as i, useMemo as a, useRef as o, useState as s } from "react";
2
- import { Fragment as c, jsx as l } from "react/jsx-runtime";
3
- import { createPortal as u } from "react-dom";
4
- //#region src/ui/highlight/FuzzyHighlighter.tsx
5
- function d({ text: e, query: t, className: n = "", caseSensitive: r = !1 }) {
6
- let i = t.trim();
7
- if (!i || !e) return /* @__PURE__ */ l(c, { children: e });
8
- let a = i.split(/\s+/).filter((e) => e.length > 0);
9
- if (a.length === 0) return /* @__PURE__ */ l(c, { children: e });
10
- let o = `fuzzy-highlight ${n}`.trim(), s = [...a].sort((e, t) => t.length - e.length).map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")), u = [...s];
11
- if (s.length > 1) {
12
- let e = a.map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("\\s+");
13
- u.unshift(e);
14
- }
15
- if (i.length > 1 && i === i.toUpperCase() && /^[A-Z]+$/.test(i)) {
16
- let e = i.split("").map((e) => `\\b${e}`).join("[^a-z0-9]*");
17
- u.unshift(e);
18
- }
19
- let d = `(${u.join("|")})`, f = new RegExp(d, r ? "g" : "gi");
20
- return /* @__PURE__ */ l(c, { children: e.split(f).map((e, t) => f.test(e) ? /* @__PURE__ */ l("strong", {
21
- className: o,
22
- children: e
23
- }, t) : e) });
24
- }
25
- //#endregion
26
- //#region src/ui/modal/ModalContext.tsx
27
- var f = e(null), p = e(null);
28
- //#endregion
29
- //#region src/ui/modal/useModal.ts
30
- function m() {
31
- let e = n(f);
32
- if (!e) throw Error("useModalState must be used within a ModalProvider");
33
- return e;
34
- }
35
- function h() {
36
- let e = n(p);
37
- if (!e) throw Error("useModalActions must be used within a ModalProvider");
38
- return e;
39
- }
40
- function g() {
41
- return {
42
- ...m(),
43
- ...h()
44
- };
45
- }
46
- //#endregion
47
- //#region src/ui/modal/Modal.tsx
48
- function _({ modalId: e, children: t, wrapperClassName: n = "", wrapperStyle: i, containerClassName: a = "", containerStyle: c }) {
49
- let { isOpen: d, id: f } = m(), { closeModal: p, clearModal: g } = h(), [_, v] = s(!1), y = o(null), b = f === e, x = d && b;
50
- return r(() => {
51
- let e = y.current;
52
- e && (x && !e.open ? (v(!1), e.showModal()) : !x && e.open && v(!0));
53
- }, [x]), typeof document > "u" || !b && !_ ? null : u(/* @__PURE__ */ l("dialog", {
54
- ref: y,
55
- onCancel: (e) => {
56
- e.preventDefault(), p();
57
- },
58
- onClose: p,
59
- onClick: (e) => {
60
- let t = y.current;
61
- if (!t) return;
62
- let n = t.getBoundingClientRect();
63
- (e.clientX < n.x || e.clientX > n.x + n.width || e.clientY < n.y || e.clientY > n.y + n.height) && p();
64
- },
65
- onAnimationEnd: () => {
66
- if (_) {
67
- let e = y.current;
68
- e && e.close(), v(!1), b && g();
69
- }
70
- },
71
- className: `universal-modal ${n}`.trim(),
72
- style: i,
73
- children: /* @__PURE__ */ l("div", {
74
- className: `modal-container ${a}`.trim(),
75
- style: c,
76
- children: t
77
- })
78
- }), document.body);
79
- }
80
- //#endregion
81
- //#region src/shared/utils.ts
82
- function v(e, t, n) {
83
- if (typeof e != "object" || !e) return e;
84
- let r = t ?? n ?? "";
85
- return Array.isArray(r) ? r.reduce((e, t) => e?.[t], e) : r.includes(".") ? r.split(".").reduce((e, t) => e?.[t], e) : e?.[r];
86
- }
87
- //#endregion
88
- //#region src/state/filter/utils.ts
89
- var y = {
90
- text: {
91
- contains: (e, t, n) => e == null ? !1 : n?.caseSensitive ? String(e).includes(String(t)) : String(e).toLowerCase().includes(String(t).toLowerCase()),
92
- equals: (e, t, n) => e == null ? !1 : n?.caseSensitive ? String(e) === String(t) : String(e).toLowerCase() === String(t).toLowerCase(),
93
- startsWith: (e, t, n) => e == null ? !1 : n?.caseSensitive ? String(e).startsWith(String(t)) : String(e).toLowerCase().startsWith(String(t).toLowerCase()),
94
- endsWith: (e, t, n) => e == null ? !1 : n?.caseSensitive ? String(e).endsWith(String(t)) : String(e).toLowerCase().endsWith(String(t).toLowerCase()),
95
- notContains: (e, t, n) => e == null ? !0 : n?.caseSensitive ? !String(e).includes(String(t)) : !String(e).toLowerCase().includes(String(t).toLowerCase())
96
- },
97
- number: {
98
- equals: (e, t) => Number(e) === Number(t),
99
- greaterThan: (e, t) => Number(e) > Number(t),
100
- lessThan: (e, t) => Number(e) < Number(t),
101
- greaterThanOrEqual: (e, t) => Number(e) >= Number(t),
102
- lessThanOrEqual: (e, t) => Number(e) <= Number(t),
103
- between: (e, t) => {
104
- if (typeof t != "object" || !t) return !1;
105
- let { min: n, max: r } = t;
106
- return n == null || r == null ? !1 : Number(e) >= Number(n) && Number(e) <= Number(r);
107
- }
108
- },
109
- boolean: { equals: (e, t) => !!e == !!t },
110
- date: {
111
- equals: (e, t) => {
112
- if (!e || !t) return !1;
113
- let n = new Date(e), r = new Date(t);
114
- return Number.isNaN(n.getTime()) || Number.isNaN(r.getTime()) ? !1 : n.getFullYear() === r.getFullYear() && n.getMonth() === r.getMonth() && n.getDate() === r.getDate();
115
- },
116
- before: (e, t) => {
117
- if (!e || !t) return !1;
118
- let n = new Date(e).setHours(0, 0, 0, 0), r = new Date(t).setHours(0, 0, 0, 0);
119
- return Number.isNaN(n) || Number.isNaN(r) ? !1 : n < r;
120
- },
121
- after: (e, t) => {
122
- if (!e || !t) return !1;
123
- let n = new Date(e).setHours(0, 0, 0, 0), r = new Date(t).setHours(0, 0, 0, 0);
124
- return Number.isNaN(n) || Number.isNaN(r) ? !1 : n > r;
125
- },
126
- between: (e, t) => {
127
- if (!e || typeof t != "object" || !t) return !1;
128
- let { min: n, max: r } = t;
129
- if (n == null || r == null) return !1;
130
- 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);
131
- return Number.isNaN(i) || Number.isNaN(a) || Number.isNaN(o) ? !1 : i >= a && i <= o;
132
- }
133
- },
134
- select: {
135
- equals: (e, t) => e === t,
136
- notEquals: (e, t) => e !== t
137
- },
138
- multiselect: {
139
- in: (e, t) => t.includes(e),
140
- notIn: (e, t) => !t.includes(e),
141
- intersects: (e, t) => e.some((e) => t.includes(e))
142
- }
143
- };
144
- //#endregion
145
- //#region src/state/filter/useFilter.ts
146
- function b(e, n = []) {
147
- let r = o(n), [i, c] = s(() => n), l = a(() => {
148
- let t = i.filter((e) => e.isActive !== !1).map((e) => ({
149
- ...e,
150
- pathArray: (e.field || e.id).split(".")
151
- }));
152
- return e.filter((e) => t.every((t) => {
153
- let { id: n, type: r, operator: i, value: a, compare: o, pathArray: s } = t, c = v(e, s, n);
154
- if (r === "custom") return !o || o(c, a, e);
155
- let l = y[r];
156
- if (!l) return !0;
157
- let u = l[i];
158
- return !u || u(c, a, t);
159
- }));
160
- }, [e, i]), u = t((e) => {
161
- c((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? e : t) : [...t, e]);
162
- }, []), d = t((e) => {
163
- c((t) => Array.isArray(e) ? t.filter((t) => !e.includes(t.id)) : t.filter((t) => t.id !== e));
164
- }, []), f = t(() => {
165
- c([]);
166
- }, []), p = t(() => {
167
- c(r.current);
168
- }, []), m = t((e) => {
169
- c(e);
170
- }, []);
171
- return {
172
- filteredItems: l,
173
- filters: i,
174
- upsertFilter: u,
175
- removeFilter: d,
176
- clearFilters: f,
177
- resetFilters: p,
178
- toggleFilter: t((e) => {
179
- c((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? {
180
- ...t,
181
- isActive: t.isActive === !1
182
- } : t) : [...t, {
183
- ...e,
184
- isActive: !0
185
- }]);
186
- }, []),
187
- updateFilterConfig: t((e, t) => {
188
- c((n) => n.map((n) => n.id === e ? {
189
- ...n,
190
- ...t
191
- } : n));
192
- }, []),
193
- replaceFilters: m,
194
- getFilterValue: t((e) => i.find((t) => t.id === e)?.value, [i]),
195
- updateFilterValue: t((e, t) => {
196
- c((n) => n.map((n) => n.id === e ? {
197
- ...n,
198
- value: t
199
- } : n));
200
- }, []),
201
- isFilterActive: t((e) => {
202
- let t = i.find((t) => t.id === e);
203
- return t ? t.isActive !== !1 : !1;
204
- }, [i])
205
- };
206
- }
207
- //#endregion
208
- //#region src/state/fuzzy-search/utils.ts
209
- function x(e, t, n = !1) {
210
- let r = e.trim(), i = t.trim(), a = r.length > 1 && r === r.toUpperCase() && /^[A-Z]+$/.test(r);
211
- if (n || (r = r.toLowerCase(), i = i.toLowerCase()), r === i) return 1;
212
- if (r === "" || i === "") return 0;
213
- if (a) {
214
- let e = i.split(/[^a-z0-9]+/i).filter((e) => e.length > 0);
215
- if (e.length >= r.length) {
216
- let t = 0, n = 0;
217
- for (let i = 0; i < r.length; i++) {
218
- let a = r[i];
219
- for (; n < e.length;) {
220
- if ((e[n] ?? "")[0] === a) {
221
- t++, n++;
222
- break;
223
- }
224
- n++;
225
- }
226
- }
227
- if (t === r.length) return .85;
228
- }
229
- }
230
- let o = !1;
231
- for (let e = 0; e < r.length; e++) if (i.includes(r[e] ?? "")) {
232
- o = !0;
233
- break;
234
- }
235
- if (!o) return 0;
236
- let s = i.indexOf(r);
237
- if (s !== -1) {
238
- let e = s === 0, t = s / i.length * (e ? .01 : .1), n = (i.length - r.length) / i.length * (e ? .01 : .05);
239
- return Math.max(.7, .95 - t - n);
240
- }
241
- let c = 0, l = -1, u = 0, d = 0, f = 0;
242
- for (let e = 0; e < r.length; e++) {
243
- let t = r[e];
244
- if (!t) continue;
245
- let n = i.indexOf(t, f);
246
- if (n !== -1) c++, l !== -1 && (n > l ? u += n - l : (d++, u += 1)), l = n, f = n + 1, f >= i.length && (f = 0);
247
- else {
248
- let e = i.indexOf(t);
249
- e !== -1 && (c++, d++, l = e, f = e + 1);
250
- }
251
- }
252
- if (c < r.length / 2) return 0;
253
- 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;
254
- return Math.max(0, _ * .45);
255
- }
256
- //#endregion
257
- //#region src/state/fuzzy-search/useFuzzySearch.ts
258
- function S(e, t, n, r = {}) {
259
- let i = r.threshold ?? .01, o = r.caseSensitive ?? !1, s = r.matchStrategy ?? "any", c = r.exactPhraseBonus ?? !0, l = a(() => n.length === 0 || e.length === 0 ? [] : e.map((e, t) => {
260
- let r = [], i = [];
261
- for (let { field: t, weight: a } of n) {
262
- let n = v(e, t);
263
- if (Array.isArray(n)) {
264
- for (let e of n) if (e != null && e !== "" && typeof e != "object") {
265
- let t = String(e);
266
- i.push(t);
267
- let n = t.split(/[^a-z0-9]+/i).filter((e) => e.length > 0);
268
- for (let e of n) r.push({
269
- text: e,
270
- weight: a
271
- });
272
- }
273
- } else if (n != null && n !== "" && typeof n != "object") {
274
- let e = String(n);
275
- i.push(e);
276
- let t = e.split(/[^a-z0-9]+/i).filter((e) => e.length > 0);
277
- for (let e of t) r.push({
278
- text: e,
279
- weight: a
280
- });
281
- }
282
- }
283
- return {
284
- item: e,
285
- index: t,
286
- tokens: r,
287
- combinedFlatText: i.join(" ")
288
- };
289
- }), [e, n]);
290
- return a(() => {
291
- let n = t.trim();
292
- if (!n || l.length === 0) return e;
293
- let r = n.split(/\s+/).filter((e) => e.length > 0);
294
- if (r.length === 0) return e;
295
- let a = [], u = .3;
296
- for (let e of l) {
297
- let t = 0, n = 0, l = !1;
298
- for (let i of r) {
299
- let r = 0, a = o ? i : i.toLowerCase();
300
- for (let t of e.tokens) {
301
- let e = (o ? t.text : t.text.toLowerCase()).split(/\s+/).filter((e) => e.length > 0);
302
- for (let n of e) {
303
- if (!n.includes(a)) {
304
- if (n.length < i.length / 2) continue;
305
- let e = Math.abs(i.length - n.length), t = Math.max(i.length, n.length);
306
- if (t > 0 && (t - e) / t < u) continue;
307
- }
308
- let e = x(i, n, o) * t.weight;
309
- e > r && (r = e);
310
- }
311
- }
312
- r >= u && n++, t += r;
313
- }
314
- if (s === "all" && n < r.length && (l = !0), !l) {
315
- let n = t / r.length;
316
- if (c && r.length > 1) {
317
- let t = r.map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("\\s+");
318
- new RegExp(t, o ? "g" : "gi").test(e.combinedFlatText) && (n += .15);
319
- }
320
- n >= i && a.push({
321
- item: e.item,
322
- score: n,
323
- index: e.index
324
- });
325
- }
326
- }
327
- return a.toSorted((e, t) => t.score === e.score ? e.index - t.index : t.score - e.score).map((e) => e.item);
328
- }, [
329
- l,
330
- e,
331
- t,
332
- i,
333
- o,
334
- s,
335
- c
336
- ]);
337
- }
338
- //#endregion
339
- //#region src/state/grouping/useGrouping.ts
340
- function C({ items: e, initialGroupBy: n }) {
341
- let [r, i] = s(n), o = a(() => r ? e.reduce((e, t) => {
342
- let n = v(t, r), i = n == null ? "Unknown" : String(n);
343
- return e[i] || (e[i] = []), e[i].push(t), e;
344
- }, {}) : { Ungrouped: e }, [e, r]), c = a(() => Object.keys(o).map((e) => ({
345
- key: e,
346
- items: o[e]
347
- })), [o]), l = a(() => Object.keys(o), [o]), u = t((e) => {
348
- i(e);
349
- }, []), d = t(() => {
350
- i(void 0);
351
- }, []), f = t(() => {
352
- i(n);
353
- }, [n]), p = t((e) => o[e] || [], [o]);
354
- return {
355
- groupedRecord: o,
356
- groupedArray: c,
357
- groupKeys: l,
358
- totalGroups: l.length,
359
- activeGroupBy: r,
360
- changeGroupBy: u,
361
- clearGrouping: d,
362
- resetGrouping: f,
363
- getGroupItems: p
364
- };
365
- }
366
- //#endregion
367
- //#region src/state/pagination/usePagination.ts
368
- function w(e, n, r = 0) {
369
- let [i, o] = s(n), [c, l] = s(r), u = Math.max(1, Math.ceil(e.length / Math.max(1, i))), d = Math.min(Math.max(0, c), u - 1);
370
- return c !== d && l(d), {
371
- pageItems: a(() => typeof i != "number" || i < 1 ? [] : e.slice(c * i, (c + 1) * i), [
372
- c,
373
- i,
374
- e
375
- ]),
376
- pageSize: i,
377
- pageIndex: c,
378
- totalPages: u,
379
- canPrevious: c > 0,
380
- canNext: c < u - 1,
381
- nextPage: t(() => {
382
- l((e) => e < u - 1 ? e + 1 : e);
383
- }, [u]),
384
- previousPage: t(() => {
385
- l((e) => e > 0 ? e - 1 : e);
386
- }, []),
387
- goToFirstPage: t(() => {
388
- l(0);
389
- }, []),
390
- goToLastPage: t(() => {
391
- l(u - 1);
392
- }, [u]),
393
- goToPage: t((e) => {
394
- typeof e == "number" && e >= 0 && e <= u - 1 && l(e);
395
- }, [u]),
396
- changePageSize: t((t) => {
397
- if (typeof t == "number" && t > 0) {
398
- o(t);
399
- let n = Math.max(1, Math.ceil(e.length / Math.max(1, t)));
400
- l((e) => Math.min(Math.max(0, e), n - 1));
401
- }
402
- }, [e.length]),
403
- resetPageIndex: t(() => {
404
- l(Math.min(Math.max(0, r), u - 1));
405
- }, [r, u]),
406
- resetPageSize: t(() => {
407
- o(Math.max(1, n));
408
- let t = Math.max(1, Math.ceil(e.length / Math.max(1, n)));
409
- l((e) => Math.min(Math.max(0, e), t - 1));
410
- }, [n, e.length]),
411
- resetPagination: t(() => {
412
- o(Math.max(1, n));
413
- let t = Math.max(1, Math.ceil(e.length / Math.max(1, n)));
414
- l(Math.min(Math.max(0, r), t - 1));
415
- }, [
416
- n,
417
- r,
418
- e.length
419
- ])
420
- };
421
- }
422
- //#endregion
423
- //#region src/state/selection/useMultipleSelection.ts
424
- function T({ items: e, field: n, initialSelectedIds: r = [] }) {
425
- let i = o(r), [c, l] = s(() => new Set(r)), u = t((e) => {
426
- l((t) => {
427
- let r = new Set(t), i = v(e, n);
428
- return r.add(i), r;
429
- });
430
- }, [n]), d = t((e) => {
431
- l((t) => {
432
- let r = new Set(t), i = v(e, n);
433
- return r.delete(i), r;
434
- });
435
- }, [n]), f = t((e) => {
436
- l((t) => {
437
- let r = new Set(t), i = v(e, n);
438
- return r.has(i) ? r.delete(i) : r.add(i), r;
439
- });
440
- }, [n]), p = t((e) => {
441
- let t = v(e, n);
442
- return c.has(t);
443
- }, [c, n]), m = t(() => l(new Set(i.current)), []), h = t((e) => {
444
- let t = e.map((e) => v(e, n));
445
- l(new Set(t));
446
- }, [n]), g = t(() => {
447
- let t = e.map((e) => v(e, n));
448
- l(new Set(t));
449
- }, [e, n]), _ = t(() => {
450
- l(/* @__PURE__ */ new Set());
451
- }, []), y = t(() => l((t) => {
452
- if (t.size === e.length) return /* @__PURE__ */ new Set();
453
- let r = e.map((e) => v(e, n));
454
- return new Set(r);
455
- }), [e, n]), b = t(() => l((t) => {
456
- if (t.size === e.length) return /* @__PURE__ */ new Set();
457
- let r = e.filter((e) => !t.has(v(e, n))).map((e) => v(e, n));
458
- return new Set(r);
459
- }), [e, n]), x = t((e) => {
460
- l((t) => {
461
- let r = new Set(t);
462
- return e.map((e) => v(e, n)).forEach((e) => r.add(e)), r;
463
- });
464
- }, [n]), S = t((e) => {
465
- l((t) => {
466
- let r = new Set(t);
467
- return e.map((e) => v(e, n)).forEach((e) => r.delete(e)), r;
468
- });
469
- }, [n]), C = t((e) => {
470
- l((t) => {
471
- let r = /* @__PURE__ */ new Set();
472
- return e.map((e) => v(e, n)).forEach((e) => t.has(e) && r.add(e)), r;
473
- });
474
- }, [n]), w = a(() => e.filter((e) => {
475
- let t = v(e, n);
476
- return c.has(t);
477
- }), [
478
- e,
479
- n,
480
- c
481
- ]);
482
- return {
483
- selectedIds: [...c],
484
- selectedCount: c.size,
485
- selectedItems: w,
486
- isEmpty: c.size === 0,
487
- select: u,
488
- deselect: d,
489
- toggle: f,
490
- isSelected: p,
491
- replaceSelection: h,
492
- resetSelection: m,
493
- selectAll: g,
494
- deselectAll: _,
495
- toggleAll: y,
496
- invertSelection: b,
497
- selectMultiple: x,
498
- deselectMultiple: S,
499
- retainOnly: C
500
- };
501
- }
502
- //#endregion
503
- //#region src/state/selection/useSingleSelection.ts
504
- function E(e) {
505
- let [n, r] = s(e), i = t((e) => r(e), []), a = t(() => r(void 0), []), o = t((e) => r((t) => t === e ? void 0 : e), []), c = t((e) => n === e, [n]), l = t(() => r(e), [e]);
506
- return {
507
- selectedId: n,
508
- hasSelection: !!n,
509
- select: i,
510
- deselect: a,
511
- toggle: o,
512
- isSelected: c,
513
- resetSelection: l
514
- };
515
- }
516
- //#endregion
517
- //#region src/state/sort/useOrder.ts
518
- function D(e) {
519
- let n = o(e), [r, i] = s(() => e), a = t((e) => {
520
- typeof e == "number" && i((t) => {
521
- if (e <= 0 || e >= t.length) return t;
522
- let n = [...t];
523
- return [n[e], n[e - 1]] = [n[e - 1], n[e]], n;
524
- });
525
- }, []), c = t((e) => {
526
- typeof e == "number" && i((t) => {
527
- if (e < 0 || e >= t.length - 1) return t;
528
- let n = [...t];
529
- return [n[e], n[e + 1]] = [n[e + 1], n[e]], n;
530
- });
531
- }, []), l = t((e) => e > 0, []), u = t((e) => e < r.length - 1, [r.length]), d = t((e) => {
532
- typeof e == "number" && i((t) => {
533
- if (e <= 0 || e >= t.length) return t;
534
- let n = [...t], [r] = n.splice(e, 1);
535
- return n.unshift(r), n;
536
- });
537
- }, []), f = t((e) => {
538
- typeof e == "number" && i((t) => {
539
- if (e < 0 || e >= t.length - 1) return t;
540
- let n = [...t], [r] = n.splice(e, 1);
541
- return n.push(r), n;
542
- });
543
- }, []), p = t((e, t) => {
544
- typeof e != "number" || typeof t != "number" || e === t || i((n) => {
545
- if (e < 0 || e >= n.length || t < 0 || t >= n.length) return n;
546
- let r = [...n], [i] = r.splice(e, 1);
547
- return r.splice(t, 0, i), r;
548
- });
549
- }, []), m = t((e, t) => {
550
- typeof e != "number" || typeof t != "number" || e === t || i((n) => {
551
- if (e < 0 || e >= n.length || t < 0 || t >= n.length) return n;
552
- let r = [...n];
553
- return [r[e], r[t]] = [r[t], r[e]], r;
554
- });
555
- }, []), h = t(() => {
556
- i(n.current);
557
- }, []);
558
- return {
559
- orderedItems: r,
560
- moveUp: a,
561
- moveDown: c,
562
- canMoveUp: l,
563
- canMoveDown: u,
564
- moveToTop: d,
565
- moveToBottom: f,
566
- move: p,
567
- swap: m,
568
- replaceOrder: t((e) => {
569
- i(e);
570
- }, []),
571
- resetOrder: h
572
- };
573
- }
574
- //#endregion
575
- //#region src/state/sort/usePin.ts
576
- function O({ items: e, field: n, initialPinnedIds: r = [], maxPins: i = 2 ** 53 - 1 }) {
577
- let c = o(r), [l, u] = s(() => new Set(r)), d = t((e) => {
578
- u((t) => {
579
- if (t.size >= i) return t;
580
- let r = new Set(t), a = v(e, n);
581
- return r.add(a), r;
582
- });
583
- }, [n, i]), f = t((e) => {
584
- u((t) => {
585
- let r = new Set(t), i = v(e, n);
586
- return r.delete(i), r;
587
- });
588
- }, [n]), p = t((e) => {
589
- u((t) => {
590
- let r = new Set(t), a = v(e, n);
591
- if (r.has(a)) r.delete(a);
592
- else {
593
- if (r.size >= i) return t;
594
- r.add(a);
595
- }
596
- return r;
597
- });
598
- }, [n, i]), m = t((e) => {
599
- let t = v(e, n);
600
- return l.has(t);
601
- }, [l, n]), h = t(() => u(/* @__PURE__ */ new Set()), []), g = t(() => u(new Set(c.current)), [c]), _ = t((e) => {
602
- let t = e.map((e) => v(e, n));
603
- u(new Set(t.slice(0, i)));
604
- }, [n, i]), y = t((e) => {
605
- u((t) => {
606
- let r = new Set(t), a = e.map((e) => v(e, n));
607
- for (let e of a) {
608
- if (r.size >= i && !r.has(e)) break;
609
- r.add(e);
610
- }
611
- return r;
612
- });
613
- }, [n, i]), b = t((e) => {
614
- u((t) => {
615
- let r = new Set(t);
616
- return e.map((e) => v(e, n)).forEach((e) => r.delete(e)), r;
617
- });
618
- }, [n]), x = a(() => e.filter((e) => {
619
- let t = v(e, n);
620
- return l.has(t);
621
- }), [
622
- e,
623
- n,
624
- l
625
- ]), S = a(() => e.filter((e) => {
626
- let t = v(e, n);
627
- return !l.has(t);
628
- }), [
629
- e,
630
- n,
631
- l
632
- ]);
633
- return {
634
- pinnedIds: [...l],
635
- pinnedItems: x,
636
- unpinnedItems: S,
637
- pinnedCount: l.size,
638
- hasPins: l.size > 0,
639
- isAtMaxLimit: l.size >= i,
640
- pin: d,
641
- unpin: f,
642
- togglePin: p,
643
- isPinned: m,
644
- clearPins: h,
645
- resetPins: g,
646
- replacePins: _,
647
- pinMultiple: y,
648
- unpinMultiple: b
649
- };
650
- }
651
- //#endregion
652
- //#region src/state/sort/utils.ts
653
- function k(e, t, n = {}) {
654
- let { sortUndefined: r, desc: i = !1 } = n, a = I(e, t, r, i);
655
- if (a !== null) return a;
656
- let o = !!e;
657
- return o === !!t ? 0 : o ? 1 : -1;
658
- }
659
- function A(e, t, n = {}) {
660
- let { sortUndefined: r, desc: i = !1 } = n, a = I(e, t, r, i);
661
- if (a !== null) return a;
662
- let o = Number(e), s = Number(t), c = Number.isNaN(o), l = Number.isNaN(s);
663
- return c || l ? I(c ? void 0 : o, l ? void 0 : s, r, i) ?? 0 : o - s;
664
- }
665
- function j(e, t, n = {}) {
666
- let { desc: r = !1, sortUndefined: i, caseSensitive: a = !1 } = n, o = I(e, t, i, r);
667
- if (o !== null) return o;
668
- let s = String(e), c = String(t);
669
- return s.localeCompare(c, void 0, { sensitivity: a ? "variant" : "base" });
670
- }
671
- function M(e, t, n = {}) {
672
- let { desc: r = !1, sortUndefined: i, caseSensitive: a = !1 } = n, o = I(e, t, i, r);
673
- if (o !== null) return o;
674
- let s = String(e), c = String(t);
675
- return s.localeCompare(c, void 0, {
676
- numeric: !0,
677
- sensitivity: a ? "variant" : "base"
678
- });
679
- }
680
- function N(e, t, n = {}) {
681
- let { desc: r = !1, sortUndefined: i } = n, a = I(e, t, i, r);
682
- if (a !== null) return a;
683
- let o = new Date(e).getTime(), s = new Date(t).getTime(), c = Number.isNaN(o), l = Number.isNaN(s);
684
- return (c || l) && (a = I(c ? void 0 : o, l ? void 0 : s, i, r), a !== null) ? a : o - s;
685
- }
686
- function P(e, t, n = {}) {
687
- let { desc: r = !1, sortUndefined: i } = n, a = I(e, t, i, r);
688
- return a === null ? e < t ? -1 : +(e > t) : a;
689
- }
690
- function F(e, t, n = {}) {
691
- let { desc: r = !1, sortUndefined: i, compare: a } = n, o = I(e, t, i, r);
692
- return o === null ? typeof a == "function" ? a(e, t) : e < t ? -1 : +(e > t) : o;
693
- }
694
- function I(e, t, n = "last", r) {
695
- let i = e == null || e === "", a = t == null || t === "";
696
- if (i && a) return 0;
697
- if (!i && !a) return null;
698
- if (n === "first") return i ? -1 : 1;
699
- if (n === "last") return i ? 1 : -1;
700
- if (n === -1) {
701
- let e = r ? 1 : -1;
702
- return i ? e : -e;
703
- }
704
- if (n === 1) {
705
- let e = r ? 1 : -1;
706
- return i ? -e : e;
707
- }
708
- return null;
709
- }
710
- //#endregion
711
- //#region src/state/sort/useSort.ts
712
- function L(e, n = []) {
713
- let r = o(n), [i, c] = s(() => n), l = a(() => {
714
- let t = i.map((e) => ({
715
- ...e,
716
- pathArray: (e.field || e.id).split(".")
717
- }));
718
- return [...e].sort((e, n) => {
719
- for (let r of t) {
720
- let { type: t, id: i, desc: a = !1, invertSorting: o = !1, pathArray: s } = r, c = v(e, s, i), l = v(n, s, i), u;
721
- switch (t) {
722
- case "numeric":
723
- u = A(c, l, r);
724
- break;
725
- case "alphabetical":
726
- u = j(c, l, r);
727
- break;
728
- case "alphanumeric":
729
- u = M(c, l, r);
730
- break;
731
- case "boolean":
732
- u = k(c, l, r);
733
- break;
734
- case "date":
735
- u = N(c, l, r);
736
- break;
737
- case "basic":
738
- u = P(c, l, r);
739
- break;
740
- case "custom":
741
- u = F(c, l, r);
742
- break;
743
- default: u = P(c, l, r);
744
- }
745
- if (u !== 0) return u * (a === o ? 1 : -1);
746
- }
747
- return 0;
748
- });
749
- }, [i, e]), u = t((e) => c((t) => t.some((t) => t.id === e.id) ? t.map((t) => t.id === e.id ? e : t) : [...t, e]), []), d = t((e) => {
750
- c((t) => Array.isArray(e) ? t.filter((t) => !e.includes(t.id)) : t.filter((t) => t.id !== e));
751
- }, []), f = t(() => c([]), []), p = t(() => c(r.current), []), m = t((e) => c(e), []), h = t((e, t, n) => {
752
- let { multi: r = !1, ...i } = n || {};
753
- c((n) => {
754
- let a = n.find((t) => t.id === e);
755
- if (!a) {
756
- let a = {
757
- id: e,
758
- type: t,
759
- ...i,
760
- desc: !1
761
- };
762
- return r ? [...n, a] : [a];
763
- }
764
- if (!a.desc) {
765
- let t = {
766
- ...a,
767
- ...i,
768
- desc: !0
769
- };
770
- return r ? n.map((n) => n.id === e ? t : n) : [t];
771
- }
772
- if (a.disableSortRemoval || i.disableSortRemoval) {
773
- let t = {
774
- ...a,
775
- ...i,
776
- desc: !1
777
- };
778
- return r ? n.map((n) => n.id === e ? t : n) : [t];
779
- }
780
- return r ? n.filter((t) => t.id !== e) : [];
781
- });
782
- }, []);
783
- return {
784
- sortedItems: l,
785
- sorts: i,
786
- upsertSorts: u,
787
- removeSort: d,
788
- clearSorts: f,
789
- resetSorts: p,
790
- replaceSorts: m,
791
- getSortDirection: t((e) => {
792
- let t = i.find((t) => t.id === e);
793
- return t ? t.desc ? "desc" : "asc" : void 0;
794
- }, [i]),
795
- toggleSort: h,
796
- getNextSortingOrder: t((e) => {
797
- let t = i.find((t) => t.id === e);
798
- return t ? t.desc ? t.disableSortRemoval ? "asc" : "none" : "desc" : "asc";
799
- }, [i]),
800
- getSortIndex: t((e) => {
801
- let t = i.findIndex((t) => t.id === e);
802
- return t === -1 ? void 0 : t + 1;
803
- }, [i])
804
- };
805
- }
806
- //#endregion
807
- //#region src/ui/visibility/useVisibility.ts
808
- function R({ items: e, field: n, initialVisibleIds: r = [] }) {
809
- let i = o(r), [c, l] = s(() => new Set(r)), u = t((e) => {
810
- let t = v(e, n);
811
- return c.has(t);
812
- }, [c, n]), d = t((e) => {
813
- l((t) => {
814
- let r = new Set(t), i = v(e, n);
815
- return r.add(i), r;
816
- });
817
- }, [n]), f = t((e) => {
818
- l((t) => {
819
- let r = new Set(t), i = v(e, n);
820
- return r.delete(i), r;
821
- });
822
- }, [n]), p = t((e) => {
823
- l((t) => {
824
- let r = new Set(t), i = v(e, n);
825
- return r.has(i) ? r.delete(i) : r.add(i), r;
826
- });
827
- }, [n]), m = t((t) => {
828
- l((r) => {
829
- let i = new Set(r);
830
- return (t ?? e).forEach((e) => {
831
- i.add(v(e, n));
832
- }), i;
833
- });
834
- }, [e, n]), h = t((t) => {
835
- l((r) => {
836
- let i = new Set(r);
837
- return (t ?? e).forEach((e) => {
838
- i.delete(v(e, n));
839
- }), i;
840
- });
841
- }, [e, n]), g = t(() => {
842
- l(() => new Set(i.current));
843
- }, []), _ = t((e) => {
844
- let t = e.map((e) => v(e, n));
845
- l(() => new Set(t));
846
- }, [n]), y = a(() => e.filter((e) => {
847
- let t = v(e, n);
848
- return c.has(t);
849
- }), [
850
- e,
851
- n,
852
- c
853
- ]), b = a(() => e.filter((e) => {
854
- let t = v(e, n);
855
- return !c.has(t);
856
- }), [
857
- e,
858
- n,
859
- c
860
- ]);
861
- return {
862
- visibleIds: [...c],
863
- visibleItems: y,
864
- hiddenItems: b,
865
- visibleCount: c.size,
866
- isVisible: u,
867
- show: d,
868
- hide: f,
869
- toggleVisibility: p,
870
- showAll: m,
871
- hideAll: h,
872
- replaceVisibility: _,
873
- resetVisibility: g
874
- };
875
- }
876
- //#endregion
877
- //#region src/performance/debounce/useDebounce.ts
878
- function z(e, n, i = {}) {
879
- let [a, c] = s(!1), l = i.maxWait, u = !!i.leading, d = !u && i.trailing === !1 ? !0 : i.trailing ?? !u, f = o(e), p = o(null), m = o(-1), h = o(-1), g = o(null);
880
- r(() => {
881
- f.current = e;
882
- }, [e]);
883
- let _ = t(() => {
884
- p.current &&= (clearTimeout(p.current), null), m.current = -1, h.current = -1, g.current = null, c(!1);
885
- }, []), v = t(() => {
886
- p.current && g.current && (clearTimeout(p.current), p.current = null, f.current(...g.current), m.current = Date.now(), h.current = -1, g.current = null, c(!1));
887
- }, []);
888
- return r(() => () => {
889
- _();
890
- }, [_]), {
891
- debouncedFunc: t((...e) => {
892
- c(!0), h.current = Date.now(), g.current = e, m.current === -1 && (m.current = Date.now(), u === !0 && f.current(...e)), l !== void 0 && Date.now() - m.current >= l ? (p.current && clearTimeout(p.current), f.current(...e), m.current = -1, c(!1)) : (p.current && clearTimeout(p.current), p.current = setTimeout(() => {
893
- h.current !== m.current && d !== !1 && f.current(...e), m.current = -1, c(!1);
894
- }, n));
895
- }, [
896
- n,
897
- l,
898
- d,
899
- u
900
- ]),
901
- cancel: _,
902
- flush: v,
903
- isPending: a
904
- };
905
- }
906
- //#endregion
907
- //#region src/performance/debounce/useDebouncedValue.ts
908
- function B(e, t, n = {}) {
909
- let [i, a] = s(e), { debouncedFunc: o } = z((e) => {
910
- a(e);
911
- }, t, n);
912
- return r(() => {
913
- o(e);
914
- }, [e, o]), i;
915
- }
916
- //#endregion
917
- //#region src/performance/throttle/useThrottle.ts
918
- function V(e, n, i = {}) {
919
- let [a, c] = s(!1), l = i.leading ?? !0, u = i.trailing ?? !0, d = o(e), f = o(null), p = o(-1), m = o(null);
920
- r(() => {
921
- d.current = e;
922
- }, [e]);
923
- let h = t(() => {
924
- f.current &&= (clearTimeout(f.current), null), p.current = -1, m.current = null, c(!1);
925
- }, []), g = t(() => {
926
- m.current && (f.current &&= (clearTimeout(f.current), null), d.current(...m.current), p.current = l ? Date.now() : -1, m.current = null, c(!1));
927
- }, [l]);
928
- return r(() => () => {
929
- h();
930
- }, [h]), {
931
- throttledFunc: t((...e) => {
932
- c(!0);
933
- let t = Date.now();
934
- if (m.current = e, p.current === -1 ? l : t - p.current >= n) f.current &&= (clearTimeout(f.current), null), d.current(...e), p.current = t, m.current = null, c(!1);
935
- else if (!f.current) {
936
- let e = n - (p.current === -1 ? 0 : t - p.current);
937
- f.current = setTimeout(() => {
938
- u && m.current ? (d.current(...m.current), p.current = l ? Date.now() : -1) : p.current = -1, m.current = null, f.current = null, c(!1);
939
- }, e);
940
- }
941
- }, [
942
- n,
943
- l,
944
- u
945
- ]),
946
- cancel: h,
947
- flush: g,
948
- isPending: a
949
- };
950
- }
951
- //#endregion
952
- //#region src/events/key/constants.ts
953
- var H = [
954
- "keydown",
955
- "keyup",
956
- "keypress"
957
- ];
958
- //#endregion
959
- //#region src/events/key/useKey.ts
960
- function U(e, t, { enabled: n = !0, preventDefault: a = !0, stopPropagation: s = !0, eventType: c = "keydown", preventRepeat: l = !1, ignoreWhenFocusedInInputs: u = !0, ctrlKey: d = !1, shiftKey: f = !1, altKey: p = !1, metaKey: m = !1, target: h = window } = {}) {
961
- let g = o(t), _ = o(n), v = o(!1);
962
- i(() => {
963
- g.current = t;
964
- }, [t]), r(() => {
965
- _.current = n;
966
- }, [n]), r(() => {
967
- let t = h && "current" in h ? h.current : h;
968
- if (!t) return;
969
- let n = e.toLowerCase(), r = H.includes(c) ? c : "keydown", i = l && r !== "keyup";
970
- function o() {
971
- v.current = !1;
972
- }
973
- function y(e) {
974
- if (!(e instanceof KeyboardEvent)) return;
975
- let t = e.key.toLowerCase();
976
- (t === n || d && t === "control" || f && t === "shift" || p && t === "alt" || m && t === "meta") && (v.current = !1);
977
- }
978
- function b(e) {
979
- if (!(e instanceof KeyboardEvent) || !_.current) return;
980
- let t = e.target;
981
- if (!(u && t instanceof HTMLElement && (t instanceof HTMLInputElement || t instanceof HTMLTextAreaElement || t instanceof HTMLSelectElement || t.isContentEditable)) && e.ctrlKey === d && e.shiftKey === f && e.altKey === p && e.metaKey === m && n === e.key.toLowerCase()) {
982
- if (i && v.current) return;
983
- v.current = !0, g.current(e), a && e.preventDefault(), s && e.stopPropagation();
984
- }
985
- }
986
- return t.addEventListener(r, b), i && (t.addEventListener("keyup", y), window.addEventListener("blur", o)), () => {
987
- t.removeEventListener(r, b), i && (t.removeEventListener("keyup", y), window.removeEventListener("blur", o));
988
- };
989
- }, [
990
- e,
991
- a,
992
- s,
993
- c,
994
- l,
995
- u,
996
- d,
997
- f,
998
- p,
999
- m,
1000
- h
1001
- ]);
1002
- }
1003
- //#endregion
1004
- export { d as FuzzyHighlighter, _ as ModalLayout, z as useDebounce, B as useDebouncedValue, b as useFilter, S as useFuzzySearch, C as useGrouping, U as useKey, g as useModal, h as useModalActions, m as useModalState, T as useMultipleSelection, D as useOrder, w as usePagination, O as usePin, E as useSingleSelection, L as useSort, V as useThrottle, R as useVisibility };
1
+ import { t as e } from "./events2.js";
2
+ import { n as t, r as n, t as r } from "./performance2.js";
3
+ import { a as i, c as a, i as o, n as s, o as c, r as l, s as u, t as d } from "./state2.js";
4
+ import { a as f, c as p, i as m, n as h, o as g, r as _, s as v, t as y } from "./ui2.js";
5
+ export { p as FuzzyHighlighter, m as ModalLayout, n as useDebounce, t as useDebouncedValue, _ as useExpansion, a as useFilter, u as useFuzzySearch, c as useGrouping, e as useKey, f as useModal, g as useModalActions, v as useModalState, i as useMultipleSelection, o as useOrder, l as usePagination, h as usePin, s as useSingleSelection, d as useSort, r as useThrottle, y as useVisibility };