@dmsi/wedgekit-react 0.0.643 → 0.0.644

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/{chunk-FIOXWZWU.js → chunk-ECYXZZWC.js} +1 -1
  2. package/dist/{chunk-QJZ3XHNH.js → chunk-HCHKYUNQ.js} +19 -5
  3. package/dist/{chunk-SJ3SULQB.js → chunk-J2QD64F2.js} +7 -7
  4. package/dist/{chunk-YR4ZO2XL.js → chunk-K22B4L3G.js} +28 -22
  5. package/dist/{chunk-3R3AY5MT.js → chunk-LN3HVXH5.js} +1 -1
  6. package/dist/{chunk-IATOG76G.js → chunk-NUFBAJ6L.js} +1 -1
  7. package/dist/{chunk-MQB6BSRX.js → chunk-OXOMO76M.js} +1 -1
  8. package/dist/{chunk-UB3GEENN.js → chunk-OZEKRO4L.js} +1 -1
  9. package/dist/{chunk-LGX34HML.js → chunk-Q4AANHJY.js} +1 -1
  10. package/dist/{chunk-5JHKFK73.js → chunk-V2GSI3ZX.js} +2 -2
  11. package/dist/{chunk-RQMOWYB7.js → chunk-VAARSN7U.js} +3 -3
  12. package/dist/{chunk-ARWHCWG7.js → chunk-XT4BQXSX.js} +1 -1
  13. package/dist/{chunk-XX5GVIPZ.js → chunk-XVWCVBVF.js} +2 -2
  14. package/dist/{chunk-PS7MBNUT.js → chunk-YXZRGZ2I.js} +1 -1
  15. package/dist/{chunk-V7GPM6Z3.js → chunk-Z3Q7PLVD.js} +1 -1
  16. package/dist/components/CalendarRange.cjs +45 -26
  17. package/dist/components/CalendarRange.js +15 -15
  18. package/dist/components/CompactImagesPreview.js +3 -3
  19. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.cjs +45 -26
  20. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.js +15 -15
  21. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.cjs +45 -26
  22. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.js +15 -15
  23. package/dist/components/DataGrid/PinnedColumns.cjs +45 -26
  24. package/dist/components/DataGrid/PinnedColumns.js +15 -15
  25. package/dist/components/DataGrid/TableBody/LoadingCell.cjs +45 -26
  26. package/dist/components/DataGrid/TableBody/LoadingCell.js +15 -15
  27. package/dist/components/DataGrid/TableBody/TableBodyRow.cjs +45 -26
  28. package/dist/components/DataGrid/TableBody/TableBodyRow.js +15 -15
  29. package/dist/components/DataGrid/TableBody/index.cjs +45 -26
  30. package/dist/components/DataGrid/TableBody/index.js +15 -15
  31. package/dist/components/DataGrid/index.cjs +45 -26
  32. package/dist/components/DataGrid/index.js +15 -15
  33. package/dist/components/DataGrid/utils.cjs +45 -26
  34. package/dist/components/DataGrid/utils.js +15 -15
  35. package/dist/components/DataGridCell.js +6 -6
  36. package/dist/components/DateInput.cjs +45 -26
  37. package/dist/components/DateInput.js +15 -15
  38. package/dist/components/DateRangeInput.cjs +45 -26
  39. package/dist/components/DateRangeInput.js +15 -15
  40. package/dist/components/Menu.js +4 -4
  41. package/dist/components/MenuOption.js +3 -3
  42. package/dist/components/MobileDataGrid/ColumnList.js +4 -4
  43. package/dist/components/MobileDataGrid/ColumnSelector/index.cjs +45 -26
  44. package/dist/components/MobileDataGrid/ColumnSelector/index.js +15 -15
  45. package/dist/components/MobileDataGrid/MobileDataGridCard/MobileDataGridColumn.js +2 -2
  46. package/dist/components/MobileDataGrid/MobileDataGridCard/index.js +3 -3
  47. package/dist/components/MobileDataGrid/MobileDataGridHeader.cjs +45 -26
  48. package/dist/components/MobileDataGrid/MobileDataGridHeader.js +15 -15
  49. package/dist/components/MobileDataGrid/RowDetailModalProvider/ModalContent.js +3 -3
  50. package/dist/components/MobileDataGrid/RowDetailModalProvider/index.js +6 -6
  51. package/dist/components/MobileDataGrid/index.cjs +45 -26
  52. package/dist/components/MobileDataGrid/index.js +15 -15
  53. package/dist/components/Modal.js +3 -3
  54. package/dist/components/NestedMenu.js +3 -3
  55. package/dist/components/PDFViewer/index.js +3 -3
  56. package/dist/components/ProductImagePreview/index.js +3 -3
  57. package/dist/components/ProjectBar.js +2 -2
  58. package/dist/components/Time.js +1 -1
  59. package/dist/components/index.cjs +45 -26
  60. package/dist/components/index.js +15 -15
  61. package/dist/components/useMenuSystem.js +3 -3
  62. package/dist/hooks/index.cjs +48 -26
  63. package/dist/hooks/index.js +2 -2
  64. package/dist/utils/index.cjs +21 -5
  65. package/dist/utils/index.js +1 -1
  66. package/package.json +1 -1
@@ -597,11 +597,24 @@ function formatDate(date) {
597
597
 
598
598
  // src/utils/mergeObjectArrays.ts
599
599
  function mergeObjectArrays(arr1, arr2) {
600
- const maxLength = Math.max(arr1.length, arr2.length);
601
- return Array.from(
602
- { length: maxLength },
603
- (_, i) => __spreadValues(__spreadValues({}, arr1[i] || {}), arr2[i] || {})
604
- );
600
+ const arr2Map = /* @__PURE__ */ new Map();
601
+ for (const item of arr2) {
602
+ const id = item.id;
603
+ if (id !== void 0) {
604
+ arr2Map.set(id, item);
605
+ }
606
+ }
607
+ return arr1.map((item1) => {
608
+ const id = item1.id;
609
+ if (id !== void 0 && arr2Map.has(id)) {
610
+ const item2 = arr2Map.get(id);
611
+ const meta1 = item1.meta;
612
+ const meta2 = item2.meta;
613
+ const mergedMeta = meta1 && meta2 && typeof meta1 === "object" && typeof meta2 === "object" ? __spreadValues(__spreadValues({}, meta1), meta2) : meta2 != null ? meta2 : meta1;
614
+ return __spreadProps(__spreadValues(__spreadValues({}, item1), item2), { meta: mergedMeta });
615
+ }
616
+ return item1;
617
+ });
605
618
  }
606
619
 
607
620
  // src/utils/index.ts
@@ -637,52 +650,58 @@ var getLocalStorageKeyWithPrefix = (key) => `${LocalStoragePrefix}__${key}`;
637
650
  function useTableLayout(initialColumns, key, autosync = true) {
638
651
  const [columns, setColumns] = (0, import_react5.useState)(initialColumns);
639
652
  const [isReady, setIsReady] = (0, import_react5.useState)(false);
640
- const renderCountRef = (0, import_react5.useRef)(0);
653
+ const isReadyRef = (0, import_react5.useRef)(false);
654
+ const keyRef = (0, import_react5.useRef)(key);
655
+ (0, import_react5.useEffect)(() => {
656
+ isReadyRef.current = isReady;
657
+ keyRef.current = key;
658
+ }, [isReady, key]);
641
659
  const handleSaveLayout = (0, import_react5.useCallback)(
642
660
  (setter, _internal) => {
643
- if (!isReady && !_internal || !key) return;
661
+ if (!isReadyRef.current && !_internal || !keyRef.current) return;
644
662
  setColumns((prevColumns) => {
645
663
  const newColumns = typeof setter === "function" ? setter(prevColumns) : setter;
646
- if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal)
664
+ if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal) {
647
665
  return prevColumns;
666
+ }
648
667
  localStorage.setItem(
649
- getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
668
+ getLocalStorageKeyWithPrefix(`${keyRef.current}-tableLayout`),
650
669
  JSON.stringify(newColumns)
651
670
  );
652
671
  return newColumns;
653
672
  });
654
673
  },
655
- [isReady, key]
674
+ []
656
675
  );
657
676
  (0, import_react5.useEffect)(() => {
658
677
  if (!autosync) return;
659
- if (!key) return setIsReady(true);
660
- if (renderCountRef.current > 1) {
661
- throw new Error(
662
- `useTableLayout should only be called once per component render cycle.
663
- ${renderCountRef.current} Renders detected.
664
- Check dependency stability`
665
- );
678
+ if (!key) {
679
+ setIsReady(true);
680
+ return;
666
681
  }
667
- renderCountRef.current += 1;
668
682
  const savedLayout = localStorage.getItem(
669
683
  getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
670
684
  );
671
685
  if (savedLayout) {
672
- handleSaveLayout(
686
+ setColumns(
673
687
  mergeObjectArrays(
674
688
  initialColumns,
675
689
  JSON.parse(savedLayout)
676
- ),
677
- true
690
+ )
691
+ );
692
+ } else {
693
+ localStorage.setItem(
694
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
695
+ JSON.stringify(initialColumns)
678
696
  );
697
+ setColumns((prev) => {
698
+ if (JSON.stringify(initialColumns) === JSON.stringify(prev))
699
+ return prev;
700
+ return initialColumns;
701
+ });
679
702
  }
680
- if (!savedLayout) handleSaveLayout(initialColumns, true);
681
703
  setIsReady(true);
682
- return () => {
683
- renderCountRef.current = 0;
684
- };
685
- }, [handleSaveLayout, initialColumns, key, autosync]);
704
+ }, [initialColumns, key, autosync]);
686
705
  const getSavedLayout = (0, import_react5.useCallback)(() => {
687
706
  const savedLayout = localStorage.getItem(
688
707
  getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  TableBodyRow
3
- } from "../../../chunk-SJ3SULQB.js";
4
- import "../../../chunk-XX5GVIPZ.js";
3
+ } from "../../../chunk-J2QD64F2.js";
4
+ import "../../../chunk-XVWCVBVF.js";
5
5
  import "../../../chunk-M7INAUAJ.js";
6
- import "../../../chunk-ARWHCWG7.js";
7
- import "../../../chunk-MQB6BSRX.js";
6
+ import "../../../chunk-XT4BQXSX.js";
7
+ import "../../../chunk-OXOMO76M.js";
8
8
  import "../../../chunk-YCDDBSVU.js";
9
9
  import "../../../chunk-3X3Y4TMS.js";
10
10
  import "../../../chunk-BQNPOGD5.js";
11
11
  import "../../../chunk-Y5GD2FJA.js";
12
12
  import "../../../chunk-MBZ55T2D.js";
13
13
  import "../../../chunk-2IKT6IHB.js";
14
- import "../../../chunk-FIOXWZWU.js";
15
- import "../../../chunk-LGX34HML.js";
14
+ import "../../../chunk-ECYXZZWC.js";
15
+ import "../../../chunk-Q4AANHJY.js";
16
16
  import "../../../chunk-5IFPG6TS.js";
17
+ import "../../../chunk-OZEKRO4L.js";
17
18
  import "../../../chunk-AJ5M6MVX.js";
18
- import "../../../chunk-UB3GEENN.js";
19
19
  import "../../../chunk-AT4AWD6B.js";
20
20
  import "../../../chunk-EWGHVZL5.js";
21
21
  import "../../../chunk-UF5XGCSF.js";
@@ -24,7 +24,7 @@ import "../../../chunk-L3BXRDLP.js";
24
24
  import "../../../chunk-34VEVX5H.js";
25
25
  import "../../../chunk-LB7UT6F3.js";
26
26
  import "../../../chunk-AS57Y2D3.js";
27
- import "../../../chunk-V7GPM6Z3.js";
27
+ import "../../../chunk-Z3Q7PLVD.js";
28
28
  import "../../../chunk-4RJKB7LC.js";
29
29
  import "../../../chunk-UUKHQUSF.js";
30
30
  import "../../../chunk-WVVEOCEH.js";
@@ -35,19 +35,19 @@ import "../../../chunk-UAMI54FE.js";
35
35
  import "../../../chunk-SJZNVG4N.js";
36
36
  import "../../../chunk-75USUR3I.js";
37
37
  import "../../../chunk-BWPNXY7T.js";
38
- import "../../../chunk-RQMOWYB7.js";
39
- import "../../../chunk-5JHKFK73.js";
40
- import "../../../chunk-IATOG76G.js";
41
- import "../../../chunk-PS7MBNUT.js";
38
+ import "../../../chunk-VAARSN7U.js";
39
+ import "../../../chunk-V2GSI3ZX.js";
40
+ import "../../../chunk-NUFBAJ6L.js";
41
+ import "../../../chunk-YXZRGZ2I.js";
42
42
  import "../../../chunk-FHXCCVOG.js";
43
43
  import "../../../chunk-7T5RGDCN.js";
44
44
  import "../../../chunk-HXGJVYGQ.js";
45
45
  import "../../../chunk-WVUIIBRR.js";
46
46
  import "../../../chunk-M7WHWZ2J.js";
47
- import "../../../chunk-3R3AY5MT.js";
48
- import "../../../chunk-YR4ZO2XL.js";
47
+ import "../../../chunk-LN3HVXH5.js";
48
+ import "../../../chunk-K22B4L3G.js";
49
49
  import "../../../chunk-VXWSAIB5.js";
50
- import "../../../chunk-QJZ3XHNH.js";
50
+ import "../../../chunk-HCHKYUNQ.js";
51
51
  import "../../../chunk-5UH6QUFB.js";
52
52
  import "../../../chunk-XJF4S3RB.js";
53
53
  import "../../../chunk-ZCJWOHFN.js";
@@ -595,11 +595,24 @@ function formatDate(date) {
595
595
 
596
596
  // src/utils/mergeObjectArrays.ts
597
597
  function mergeObjectArrays(arr1, arr2) {
598
- const maxLength = Math.max(arr1.length, arr2.length);
599
- return Array.from(
600
- { length: maxLength },
601
- (_, i) => __spreadValues(__spreadValues({}, arr1[i] || {}), arr2[i] || {})
602
- );
598
+ const arr2Map = /* @__PURE__ */ new Map();
599
+ for (const item of arr2) {
600
+ const id = item.id;
601
+ if (id !== void 0) {
602
+ arr2Map.set(id, item);
603
+ }
604
+ }
605
+ return arr1.map((item1) => {
606
+ const id = item1.id;
607
+ if (id !== void 0 && arr2Map.has(id)) {
608
+ const item2 = arr2Map.get(id);
609
+ const meta1 = item1.meta;
610
+ const meta2 = item2.meta;
611
+ const mergedMeta = meta1 && meta2 && typeof meta1 === "object" && typeof meta2 === "object" ? __spreadValues(__spreadValues({}, meta1), meta2) : meta2 != null ? meta2 : meta1;
612
+ return __spreadProps(__spreadValues(__spreadValues({}, item1), item2), { meta: mergedMeta });
613
+ }
614
+ return item1;
615
+ });
603
616
  }
604
617
 
605
618
  // src/utils/index.ts
@@ -635,52 +648,58 @@ var getLocalStorageKeyWithPrefix = (key) => `${LocalStoragePrefix}__${key}`;
635
648
  function useTableLayout(initialColumns, key, autosync = true) {
636
649
  const [columns, setColumns] = (0, import_react5.useState)(initialColumns);
637
650
  const [isReady, setIsReady] = (0, import_react5.useState)(false);
638
- const renderCountRef = (0, import_react5.useRef)(0);
651
+ const isReadyRef = (0, import_react5.useRef)(false);
652
+ const keyRef = (0, import_react5.useRef)(key);
653
+ (0, import_react5.useEffect)(() => {
654
+ isReadyRef.current = isReady;
655
+ keyRef.current = key;
656
+ }, [isReady, key]);
639
657
  const handleSaveLayout = (0, import_react5.useCallback)(
640
658
  (setter, _internal) => {
641
- if (!isReady && !_internal || !key) return;
659
+ if (!isReadyRef.current && !_internal || !keyRef.current) return;
642
660
  setColumns((prevColumns) => {
643
661
  const newColumns = typeof setter === "function" ? setter(prevColumns) : setter;
644
- if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal)
662
+ if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal) {
645
663
  return prevColumns;
664
+ }
646
665
  localStorage.setItem(
647
- getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
666
+ getLocalStorageKeyWithPrefix(`${keyRef.current}-tableLayout`),
648
667
  JSON.stringify(newColumns)
649
668
  );
650
669
  return newColumns;
651
670
  });
652
671
  },
653
- [isReady, key]
672
+ []
654
673
  );
655
674
  (0, import_react5.useEffect)(() => {
656
675
  if (!autosync) return;
657
- if (!key) return setIsReady(true);
658
- if (renderCountRef.current > 1) {
659
- throw new Error(
660
- `useTableLayout should only be called once per component render cycle.
661
- ${renderCountRef.current} Renders detected.
662
- Check dependency stability`
663
- );
676
+ if (!key) {
677
+ setIsReady(true);
678
+ return;
664
679
  }
665
- renderCountRef.current += 1;
666
680
  const savedLayout = localStorage.getItem(
667
681
  getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
668
682
  );
669
683
  if (savedLayout) {
670
- handleSaveLayout(
684
+ setColumns(
671
685
  mergeObjectArrays(
672
686
  initialColumns,
673
687
  JSON.parse(savedLayout)
674
- ),
675
- true
688
+ )
689
+ );
690
+ } else {
691
+ localStorage.setItem(
692
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
693
+ JSON.stringify(initialColumns)
676
694
  );
695
+ setColumns((prev) => {
696
+ if (JSON.stringify(initialColumns) === JSON.stringify(prev))
697
+ return prev;
698
+ return initialColumns;
699
+ });
677
700
  }
678
- if (!savedLayout) handleSaveLayout(initialColumns, true);
679
701
  setIsReady(true);
680
- return () => {
681
- renderCountRef.current = 0;
682
- };
683
- }, [handleSaveLayout, initialColumns, key, autosync]);
702
+ }, [initialColumns, key, autosync]);
684
703
  const getSavedLayout = (0, import_react5.useCallback)(() => {
685
704
  const savedLayout = localStorage.getItem(
686
705
  getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  TableBody
3
- } from "../../../chunk-SJ3SULQB.js";
4
- import "../../../chunk-XX5GVIPZ.js";
3
+ } from "../../../chunk-J2QD64F2.js";
4
+ import "../../../chunk-XVWCVBVF.js";
5
5
  import "../../../chunk-M7INAUAJ.js";
6
- import "../../../chunk-ARWHCWG7.js";
7
- import "../../../chunk-MQB6BSRX.js";
6
+ import "../../../chunk-XT4BQXSX.js";
7
+ import "../../../chunk-OXOMO76M.js";
8
8
  import "../../../chunk-YCDDBSVU.js";
9
9
  import "../../../chunk-3X3Y4TMS.js";
10
10
  import "../../../chunk-BQNPOGD5.js";
11
11
  import "../../../chunk-Y5GD2FJA.js";
12
12
  import "../../../chunk-MBZ55T2D.js";
13
13
  import "../../../chunk-2IKT6IHB.js";
14
- import "../../../chunk-FIOXWZWU.js";
15
- import "../../../chunk-LGX34HML.js";
14
+ import "../../../chunk-ECYXZZWC.js";
15
+ import "../../../chunk-Q4AANHJY.js";
16
16
  import "../../../chunk-5IFPG6TS.js";
17
+ import "../../../chunk-OZEKRO4L.js";
17
18
  import "../../../chunk-AJ5M6MVX.js";
18
- import "../../../chunk-UB3GEENN.js";
19
19
  import "../../../chunk-AT4AWD6B.js";
20
20
  import "../../../chunk-EWGHVZL5.js";
21
21
  import "../../../chunk-UF5XGCSF.js";
@@ -24,7 +24,7 @@ import "../../../chunk-L3BXRDLP.js";
24
24
  import "../../../chunk-34VEVX5H.js";
25
25
  import "../../../chunk-LB7UT6F3.js";
26
26
  import "../../../chunk-AS57Y2D3.js";
27
- import "../../../chunk-V7GPM6Z3.js";
27
+ import "../../../chunk-Z3Q7PLVD.js";
28
28
  import "../../../chunk-4RJKB7LC.js";
29
29
  import "../../../chunk-UUKHQUSF.js";
30
30
  import "../../../chunk-WVVEOCEH.js";
@@ -35,19 +35,19 @@ import "../../../chunk-UAMI54FE.js";
35
35
  import "../../../chunk-SJZNVG4N.js";
36
36
  import "../../../chunk-75USUR3I.js";
37
37
  import "../../../chunk-BWPNXY7T.js";
38
- import "../../../chunk-RQMOWYB7.js";
39
- import "../../../chunk-5JHKFK73.js";
40
- import "../../../chunk-IATOG76G.js";
41
- import "../../../chunk-PS7MBNUT.js";
38
+ import "../../../chunk-VAARSN7U.js";
39
+ import "../../../chunk-V2GSI3ZX.js";
40
+ import "../../../chunk-NUFBAJ6L.js";
41
+ import "../../../chunk-YXZRGZ2I.js";
42
42
  import "../../../chunk-FHXCCVOG.js";
43
43
  import "../../../chunk-7T5RGDCN.js";
44
44
  import "../../../chunk-HXGJVYGQ.js";
45
45
  import "../../../chunk-WVUIIBRR.js";
46
46
  import "../../../chunk-M7WHWZ2J.js";
47
- import "../../../chunk-3R3AY5MT.js";
48
- import "../../../chunk-YR4ZO2XL.js";
47
+ import "../../../chunk-LN3HVXH5.js";
48
+ import "../../../chunk-K22B4L3G.js";
49
49
  import "../../../chunk-VXWSAIB5.js";
50
- import "../../../chunk-QJZ3XHNH.js";
50
+ import "../../../chunk-HCHKYUNQ.js";
51
51
  import "../../../chunk-5UH6QUFB.js";
52
52
  import "../../../chunk-XJF4S3RB.js";
53
53
  import "../../../chunk-ZCJWOHFN.js";
@@ -265,11 +265,24 @@ function formatDate(date) {
265
265
 
266
266
  // src/utils/mergeObjectArrays.ts
267
267
  function mergeObjectArrays(arr1, arr2) {
268
- const maxLength = Math.max(arr1.length, arr2.length);
269
- return Array.from(
270
- { length: maxLength },
271
- (_, i) => __spreadValues(__spreadValues({}, arr1[i] || {}), arr2[i] || {})
272
- );
268
+ const arr2Map = /* @__PURE__ */ new Map();
269
+ for (const item of arr2) {
270
+ const id = item.id;
271
+ if (id !== void 0) {
272
+ arr2Map.set(id, item);
273
+ }
274
+ }
275
+ return arr1.map((item1) => {
276
+ const id = item1.id;
277
+ if (id !== void 0 && arr2Map.has(id)) {
278
+ const item2 = arr2Map.get(id);
279
+ const meta1 = item1.meta;
280
+ const meta2 = item2.meta;
281
+ const mergedMeta = meta1 && meta2 && typeof meta1 === "object" && typeof meta2 === "object" ? __spreadValues(__spreadValues({}, meta1), meta2) : meta2 != null ? meta2 : meta1;
282
+ return __spreadProps(__spreadValues(__spreadValues({}, item1), item2), { meta: mergedMeta });
283
+ }
284
+ return item1;
285
+ });
273
286
  }
274
287
 
275
288
  // src/utils/index.ts
@@ -305,52 +318,58 @@ var getLocalStorageKeyWithPrefix = (key) => `${LocalStoragePrefix}__${key}`;
305
318
  function useTableLayout(initialColumns, key, autosync = true) {
306
319
  const [columns, setColumns] = (0, import_react4.useState)(initialColumns);
307
320
  const [isReady, setIsReady] = (0, import_react4.useState)(false);
308
- const renderCountRef = (0, import_react4.useRef)(0);
321
+ const isReadyRef = (0, import_react4.useRef)(false);
322
+ const keyRef = (0, import_react4.useRef)(key);
323
+ (0, import_react4.useEffect)(() => {
324
+ isReadyRef.current = isReady;
325
+ keyRef.current = key;
326
+ }, [isReady, key]);
309
327
  const handleSaveLayout = (0, import_react4.useCallback)(
310
328
  (setter, _internal) => {
311
- if (!isReady && !_internal || !key) return;
329
+ if (!isReadyRef.current && !_internal || !keyRef.current) return;
312
330
  setColumns((prevColumns) => {
313
331
  const newColumns = typeof setter === "function" ? setter(prevColumns) : setter;
314
- if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal)
332
+ if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal) {
315
333
  return prevColumns;
334
+ }
316
335
  localStorage.setItem(
317
- getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
336
+ getLocalStorageKeyWithPrefix(`${keyRef.current}-tableLayout`),
318
337
  JSON.stringify(newColumns)
319
338
  );
320
339
  return newColumns;
321
340
  });
322
341
  },
323
- [isReady, key]
342
+ []
324
343
  );
325
344
  (0, import_react4.useEffect)(() => {
326
345
  if (!autosync) return;
327
- if (!key) return setIsReady(true);
328
- if (renderCountRef.current > 1) {
329
- throw new Error(
330
- `useTableLayout should only be called once per component render cycle.
331
- ${renderCountRef.current} Renders detected.
332
- Check dependency stability`
333
- );
346
+ if (!key) {
347
+ setIsReady(true);
348
+ return;
334
349
  }
335
- renderCountRef.current += 1;
336
350
  const savedLayout = localStorage.getItem(
337
351
  getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
338
352
  );
339
353
  if (savedLayout) {
340
- handleSaveLayout(
354
+ setColumns(
341
355
  mergeObjectArrays(
342
356
  initialColumns,
343
357
  JSON.parse(savedLayout)
344
- ),
345
- true
358
+ )
359
+ );
360
+ } else {
361
+ localStorage.setItem(
362
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
363
+ JSON.stringify(initialColumns)
346
364
  );
365
+ setColumns((prev) => {
366
+ if (JSON.stringify(initialColumns) === JSON.stringify(prev))
367
+ return prev;
368
+ return initialColumns;
369
+ });
347
370
  }
348
- if (!savedLayout) handleSaveLayout(initialColumns, true);
349
371
  setIsReady(true);
350
- return () => {
351
- renderCountRef.current = 0;
352
- };
353
- }, [handleSaveLayout, initialColumns, key, autosync]);
372
+ }, [initialColumns, key, autosync]);
354
373
  const getSavedLayout = (0, import_react4.useCallback)(() => {
355
374
  const savedLayout = localStorage.getItem(
356
375
  getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
@@ -2,22 +2,22 @@
2
2
  import {
3
3
  DataGrid,
4
4
  DataGrid_default
5
- } from "../../chunk-SJ3SULQB.js";
6
- import "../../chunk-XX5GVIPZ.js";
5
+ } from "../../chunk-J2QD64F2.js";
6
+ import "../../chunk-XVWCVBVF.js";
7
7
  import "../../chunk-M7INAUAJ.js";
8
- import "../../chunk-ARWHCWG7.js";
9
- import "../../chunk-MQB6BSRX.js";
8
+ import "../../chunk-XT4BQXSX.js";
9
+ import "../../chunk-OXOMO76M.js";
10
10
  import "../../chunk-YCDDBSVU.js";
11
11
  import "../../chunk-3X3Y4TMS.js";
12
12
  import "../../chunk-BQNPOGD5.js";
13
13
  import "../../chunk-Y5GD2FJA.js";
14
14
  import "../../chunk-MBZ55T2D.js";
15
15
  import "../../chunk-2IKT6IHB.js";
16
- import "../../chunk-FIOXWZWU.js";
17
- import "../../chunk-LGX34HML.js";
16
+ import "../../chunk-ECYXZZWC.js";
17
+ import "../../chunk-Q4AANHJY.js";
18
18
  import "../../chunk-5IFPG6TS.js";
19
+ import "../../chunk-OZEKRO4L.js";
19
20
  import "../../chunk-AJ5M6MVX.js";
20
- import "../../chunk-UB3GEENN.js";
21
21
  import "../../chunk-AT4AWD6B.js";
22
22
  import "../../chunk-EWGHVZL5.js";
23
23
  import "../../chunk-UF5XGCSF.js";
@@ -26,7 +26,7 @@ import "../../chunk-L3BXRDLP.js";
26
26
  import "../../chunk-34VEVX5H.js";
27
27
  import "../../chunk-LB7UT6F3.js";
28
28
  import "../../chunk-AS57Y2D3.js";
29
- import "../../chunk-V7GPM6Z3.js";
29
+ import "../../chunk-Z3Q7PLVD.js";
30
30
  import "../../chunk-4RJKB7LC.js";
31
31
  import "../../chunk-UUKHQUSF.js";
32
32
  import "../../chunk-WVVEOCEH.js";
@@ -37,19 +37,19 @@ import "../../chunk-UAMI54FE.js";
37
37
  import "../../chunk-SJZNVG4N.js";
38
38
  import "../../chunk-75USUR3I.js";
39
39
  import "../../chunk-BWPNXY7T.js";
40
- import "../../chunk-RQMOWYB7.js";
41
- import "../../chunk-5JHKFK73.js";
42
- import "../../chunk-IATOG76G.js";
43
- import "../../chunk-PS7MBNUT.js";
40
+ import "../../chunk-VAARSN7U.js";
41
+ import "../../chunk-V2GSI3ZX.js";
42
+ import "../../chunk-NUFBAJ6L.js";
43
+ import "../../chunk-YXZRGZ2I.js";
44
44
  import "../../chunk-FHXCCVOG.js";
45
45
  import "../../chunk-7T5RGDCN.js";
46
46
  import "../../chunk-HXGJVYGQ.js";
47
47
  import "../../chunk-WVUIIBRR.js";
48
48
  import "../../chunk-M7WHWZ2J.js";
49
- import "../../chunk-3R3AY5MT.js";
50
- import "../../chunk-YR4ZO2XL.js";
49
+ import "../../chunk-LN3HVXH5.js";
50
+ import "../../chunk-K22B4L3G.js";
51
51
  import "../../chunk-VXWSAIB5.js";
52
- import "../../chunk-QJZ3XHNH.js";
52
+ import "../../chunk-HCHKYUNQ.js";
53
53
  import "../../chunk-5UH6QUFB.js";
54
54
  import "../../chunk-XJF4S3RB.js";
55
55
  import "../../chunk-ZCJWOHFN.js";
@@ -595,11 +595,24 @@ function formatDate(date) {
595
595
 
596
596
  // src/utils/mergeObjectArrays.ts
597
597
  function mergeObjectArrays(arr1, arr2) {
598
- const maxLength = Math.max(arr1.length, arr2.length);
599
- return Array.from(
600
- { length: maxLength },
601
- (_, i) => __spreadValues(__spreadValues({}, arr1[i] || {}), arr2[i] || {})
602
- );
598
+ const arr2Map = /* @__PURE__ */ new Map();
599
+ for (const item of arr2) {
600
+ const id = item.id;
601
+ if (id !== void 0) {
602
+ arr2Map.set(id, item);
603
+ }
604
+ }
605
+ return arr1.map((item1) => {
606
+ const id = item1.id;
607
+ if (id !== void 0 && arr2Map.has(id)) {
608
+ const item2 = arr2Map.get(id);
609
+ const meta1 = item1.meta;
610
+ const meta2 = item2.meta;
611
+ const mergedMeta = meta1 && meta2 && typeof meta1 === "object" && typeof meta2 === "object" ? __spreadValues(__spreadValues({}, meta1), meta2) : meta2 != null ? meta2 : meta1;
612
+ return __spreadProps(__spreadValues(__spreadValues({}, item1), item2), { meta: mergedMeta });
613
+ }
614
+ return item1;
615
+ });
603
616
  }
604
617
 
605
618
  // src/utils/index.ts
@@ -635,52 +648,58 @@ var getLocalStorageKeyWithPrefix = (key) => `${LocalStoragePrefix}__${key}`;
635
648
  function useTableLayout(initialColumns, key, autosync = true) {
636
649
  const [columns, setColumns] = (0, import_react5.useState)(initialColumns);
637
650
  const [isReady, setIsReady] = (0, import_react5.useState)(false);
638
- const renderCountRef = (0, import_react5.useRef)(0);
651
+ const isReadyRef = (0, import_react5.useRef)(false);
652
+ const keyRef = (0, import_react5.useRef)(key);
653
+ (0, import_react5.useEffect)(() => {
654
+ isReadyRef.current = isReady;
655
+ keyRef.current = key;
656
+ }, [isReady, key]);
639
657
  const handleSaveLayout = (0, import_react5.useCallback)(
640
658
  (setter, _internal) => {
641
- if (!isReady && !_internal || !key) return;
659
+ if (!isReadyRef.current && !_internal || !keyRef.current) return;
642
660
  setColumns((prevColumns) => {
643
661
  const newColumns = typeof setter === "function" ? setter(prevColumns) : setter;
644
- if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal)
662
+ if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal) {
645
663
  return prevColumns;
664
+ }
646
665
  localStorage.setItem(
647
- getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
666
+ getLocalStorageKeyWithPrefix(`${keyRef.current}-tableLayout`),
648
667
  JSON.stringify(newColumns)
649
668
  );
650
669
  return newColumns;
651
670
  });
652
671
  },
653
- [isReady, key]
672
+ []
654
673
  );
655
674
  (0, import_react5.useEffect)(() => {
656
675
  if (!autosync) return;
657
- if (!key) return setIsReady(true);
658
- if (renderCountRef.current > 1) {
659
- throw new Error(
660
- `useTableLayout should only be called once per component render cycle.
661
- ${renderCountRef.current} Renders detected.
662
- Check dependency stability`
663
- );
676
+ if (!key) {
677
+ setIsReady(true);
678
+ return;
664
679
  }
665
- renderCountRef.current += 1;
666
680
  const savedLayout = localStorage.getItem(
667
681
  getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
668
682
  );
669
683
  if (savedLayout) {
670
- handleSaveLayout(
684
+ setColumns(
671
685
  mergeObjectArrays(
672
686
  initialColumns,
673
687
  JSON.parse(savedLayout)
674
- ),
675
- true
688
+ )
689
+ );
690
+ } else {
691
+ localStorage.setItem(
692
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
693
+ JSON.stringify(initialColumns)
676
694
  );
695
+ setColumns((prev) => {
696
+ if (JSON.stringify(initialColumns) === JSON.stringify(prev))
697
+ return prev;
698
+ return initialColumns;
699
+ });
677
700
  }
678
- if (!savedLayout) handleSaveLayout(initialColumns, true);
679
701
  setIsReady(true);
680
- return () => {
681
- renderCountRef.current = 0;
682
- };
683
- }, [handleSaveLayout, initialColumns, key, autosync]);
702
+ }, [initialColumns, key, autosync]);
684
703
  const getSavedLayout = (0, import_react5.useCallback)(() => {
685
704
  const savedLayout = localStorage.getItem(
686
705
  getLocalStorageKeyWithPrefix(`${key}-tableLayout`)