react-native-tree-multi-select 3.0.0-beta.4 → 3.0.0-beta.6

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 (64) hide show
  1. package/README.md +64 -30
  2. package/lib/module/TreeView.js +130 -24
  3. package/lib/module/TreeView.js.map +1 -1
  4. package/lib/module/components/DragOverlay.js +19 -2
  5. package/lib/module/components/DragOverlay.js.map +1 -1
  6. package/lib/module/components/NodeList.js +83 -31
  7. package/lib/module/components/NodeList.js.map +1 -1
  8. package/lib/module/constants/treeView.constants.js +5 -0
  9. package/lib/module/constants/treeView.constants.js.map +1 -1
  10. package/lib/module/helpers/moveTreeNode.helper.js +175 -47
  11. package/lib/module/helpers/moveTreeNode.helper.js.map +1 -1
  12. package/lib/module/helpers/toggleCheckbox.helper.js +6 -13
  13. package/lib/module/helpers/toggleCheckbox.helper.js.map +1 -1
  14. package/lib/module/helpers/treeNode.helper.js +49 -0
  15. package/lib/module/helpers/treeNode.helper.js.map +1 -1
  16. package/lib/module/hooks/useDragDrop.js +486 -216
  17. package/lib/module/hooks/useDragDrop.js.map +1 -1
  18. package/lib/module/hooks/useScrollToNode.js +18 -1
  19. package/lib/module/hooks/useScrollToNode.js.map +1 -1
  20. package/lib/module/index.js.map +1 -1
  21. package/lib/module/store/treeView.store.js +7 -0
  22. package/lib/module/store/treeView.store.js.map +1 -1
  23. package/lib/module/types/dragDrop.types.js +0 -2
  24. package/lib/typescript/src/TreeView.d.ts.map +1 -1
  25. package/lib/typescript/src/components/DragOverlay.d.ts.map +1 -1
  26. package/lib/typescript/src/components/NodeList.d.ts.map +1 -1
  27. package/lib/typescript/src/constants/treeView.constants.d.ts +4 -0
  28. package/lib/typescript/src/constants/treeView.constants.d.ts.map +1 -1
  29. package/lib/typescript/src/helpers/moveTreeNode.helper.d.ts +32 -0
  30. package/lib/typescript/src/helpers/moveTreeNode.helper.d.ts.map +1 -1
  31. package/lib/typescript/src/helpers/toggleCheckbox.helper.d.ts.map +1 -1
  32. package/lib/typescript/src/helpers/treeNode.helper.d.ts +15 -0
  33. package/lib/typescript/src/helpers/treeNode.helper.d.ts.map +1 -1
  34. package/lib/typescript/src/hooks/useDragDrop.d.ts +30 -7
  35. package/lib/typescript/src/hooks/useDragDrop.d.ts.map +1 -1
  36. package/lib/typescript/src/hooks/useScrollToNode.d.ts +10 -0
  37. package/lib/typescript/src/hooks/useScrollToNode.d.ts.map +1 -1
  38. package/lib/typescript/src/index.d.ts +3 -3
  39. package/lib/typescript/src/index.d.ts.map +1 -1
  40. package/lib/typescript/src/store/treeView.store.d.ts +6 -0
  41. package/lib/typescript/src/store/treeView.store.d.ts.map +1 -1
  42. package/lib/typescript/src/types/dragDrop.types.d.ts +24 -12
  43. package/lib/typescript/src/types/dragDrop.types.d.ts.map +1 -1
  44. package/lib/typescript/src/types/treeView.types.d.ts +78 -12
  45. package/lib/typescript/src/types/treeView.types.d.ts.map +1 -1
  46. package/package.json +2 -2
  47. package/src/TreeView.tsx +158 -26
  48. package/src/components/DragOverlay.tsx +32 -3
  49. package/src/components/NodeList.tsx +84 -29
  50. package/src/constants/treeView.constants.ts +6 -1
  51. package/src/helpers/moveTreeNode.helper.ts +160 -43
  52. package/src/helpers/toggleCheckbox.helper.ts +6 -13
  53. package/src/helpers/treeNode.helper.ts +52 -1
  54. package/src/hooks/useDragDrop.ts +597 -250
  55. package/src/hooks/useScrollToNode.ts +22 -1
  56. package/src/index.tsx +5 -1
  57. package/src/store/treeView.store.ts +6 -0
  58. package/src/types/dragDrop.types.ts +25 -13
  59. package/src/types/treeView.types.ts +82 -11
  60. package/lib/module/components/DropIndicator.js +0 -79
  61. package/lib/module/components/DropIndicator.js.map +0 -1
  62. package/lib/typescript/src/components/DropIndicator.d.ts +0 -12
  63. package/lib/typescript/src/components/DropIndicator.d.ts.map +0 -1
  64. package/src/components/DropIndicator.tsx +0 -95
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { getTreeViewStore } from "../store/treeView.store.js";
4
+ import { getNodeDepthFromParentMap } from "./treeNode.helper.js";
4
5
 
5
6
  /** Derive the tri-state checkbox value from checked and indeterminate booleans. */
6
7
  export function getCheckboxValue(isChecked, isIndeterminate) {
@@ -230,19 +231,11 @@ export function recalculateCheckedStates(storeId) {
230
231
  // Sort by depth descending (deepest first) for correct bottom-up propagation
231
232
  const nodeDepths = new Map();
232
233
  function getDepth(nodeId) {
233
- if (nodeDepths.has(nodeId)) return nodeDepths.get(nodeId);
234
- let depth = 0;
235
- let currentId = nodeId;
236
- while (currentId) {
237
- const parentId = childToParentMap.get(currentId);
238
- if (parentId) {
239
- depth++;
240
- currentId = parentId;
241
- } else {
242
- break;
243
- }
234
+ let depth = nodeDepths.get(nodeId);
235
+ if (depth === undefined) {
236
+ depth = getNodeDepthFromParentMap(childToParentMap, nodeId);
237
+ nodeDepths.set(nodeId, depth);
244
238
  }
245
- nodeDepths.set(nodeId, depth);
246
239
  return depth;
247
240
  }
248
241
  parentNodes.sort((a, b) => getDepth(b) - getDepth(a));
@@ -250,7 +243,7 @@ export function recalculateCheckedStates(storeId) {
250
243
  // Update each parent based on its children's current state
251
244
  for (const parentId of parentNodes) {
252
245
  const node = nodeMap.get(parentId);
253
- /* istanbul ignore next -- parentNodes is built from nodeMap entries with children above; same nodeMap, same iteration unreachable unless nodeMap mutates between loops */
246
+ /* istanbul ignore next -- parentNodes is built from nodeMap entries with children above; same nodeMap, same iteration - unreachable unless nodeMap mutates between loops */
254
247
  if (!node?.children?.length) continue;
255
248
  updateParentCheckState(parentId, node.children, tempChecked, tempIndeterminate);
256
249
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getTreeViewStore","getCheckboxValue","isChecked","isIndeterminate","updateParentCheckState","parentId","children","tempChecked","tempIndeterminate","allChecked","anyCheckedOrIndeterminate","child","has","id","add","delete","toggleCheckboxes","storeId","ids","forceCheck","treeViewStore","checked","updateChecked","indeterminate","updateIndeterminate","nodeMap","childToParentMap","selectionPropagation","getState","toChildren","toParents","Set","affectedNodes","nodeDepths","Map","forEach","node","get","newCheckedState","undefined","updateChildrenIteratively","nodesToUpdate","currentNodeId","parentNodeId","size","sortedNodes","Array","from","sort","a","b","getNodeDepth","nodeId","updateNodeState","rootId","childrenChecked","stack","length","pop","childNode","push","depth","set","recalculateCheckedStates","parentNodes","getDepth","currentId"],"sourceRoot":"../../../src","sources":["helpers/toggleCheckbox.helper.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getTreeViewStore","getNodeDepthFromParentMap","getCheckboxValue","isChecked","isIndeterminate","updateParentCheckState","parentId","children","tempChecked","tempIndeterminate","allChecked","anyCheckedOrIndeterminate","child","has","id","add","delete","toggleCheckboxes","storeId","ids","forceCheck","treeViewStore","checked","updateChecked","indeterminate","updateIndeterminate","nodeMap","childToParentMap","selectionPropagation","getState","toChildren","toParents","Set","affectedNodes","nodeDepths","Map","forEach","node","get","newCheckedState","undefined","updateChildrenIteratively","nodesToUpdate","currentNodeId","parentNodeId","size","sortedNodes","Array","from","sort","a","b","getNodeDepth","nodeId","updateNodeState","rootId","childrenChecked","stack","length","pop","childNode","push","depth","set","recalculateCheckedStates","parentNodes","getDepth"],"sourceRoot":"../../../src","sources":["helpers/toggleCheckbox.helper.ts"],"mappings":"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","ignoreList":[]}
@@ -48,4 +48,53 @@ export function initializeNodeMaps(storeId, initialData) {
48
48
  updateNodeMap(nodeMap);
49
49
  updateChildToParentMap(childToParentMap);
50
50
  }
51
+
52
+ /**
53
+ * Compute the maximum depth of a node's subtree (0 for a leaf node).
54
+ * Uses an iterative stack-based DFS to avoid call-stack limits on deep trees.
55
+ *
56
+ * @param nodeMap - Map of node ID to node (from `initializeNodeMaps`).
57
+ * @param nodeId - The root of the subtree to measure.
58
+ */
59
+ export function getSubtreeDepthFromMap(nodeMap, nodeId) {
60
+ const root = nodeMap.get(nodeId);
61
+ if (!root?.children?.length) return 0;
62
+ let maxDepth = 0;
63
+ const stack = [{
64
+ node: root,
65
+ depth: 0
66
+ }];
67
+ while (stack.length > 0) {
68
+ const {
69
+ node,
70
+ depth
71
+ } = stack.pop();
72
+ if (node.children?.length) {
73
+ for (const child of node.children) {
74
+ if (depth + 1 > maxDepth) maxDepth = depth + 1;
75
+ stack.push({
76
+ node: child,
77
+ depth: depth + 1
78
+ });
79
+ }
80
+ }
81
+ }
82
+ return maxDepth;
83
+ }
84
+
85
+ /**
86
+ * Compute a node's depth (its level, 0 for root) by walking the child-to-parent map.
87
+ *
88
+ * @param childToParentMap - Map of child ID to parent ID (from `initializeNodeMaps`).
89
+ * @param nodeId - The node whose depth to compute.
90
+ */
91
+ export function getNodeDepthFromParentMap(childToParentMap, nodeId) {
92
+ let depth = 0;
93
+ let currentId = nodeId;
94
+ while (currentId !== undefined && childToParentMap.has(currentId)) {
95
+ currentId = childToParentMap.get(currentId);
96
+ depth++;
97
+ }
98
+ return depth;
99
+ }
51
100
  //# sourceMappingURL=treeNode.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getTreeViewStore","initializeNodeMaps","storeId","initialData","treeViewStore","updateNodeMap","updateChildToParentMap","getState","nodeMap","Map","childToParentMap","stack","nodes","parentId","length","pop","node","set","id","children","push"],"sourceRoot":"../../../src","sources":["helpers/treeNode.helper.ts"],"mappings":";;AACA,SAASA,gBAAgB,QAAQ,4BAAyB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAKC,OAAe,EAAEC,WAA2B,EAAE;EACjF,MAAMC,aAAa,GAAGJ,gBAAgB,CAAKE,OAAO,CAAC;EACnD,MAAM;IAAEG,aAAa;IAAEC;EAAuB,CAAC,GAAGF,aAAa,CAACG,QAAQ,CAAC,CAAC;EAE1E,MAAMC,OAAO,GAAG,IAAIC,GAAG,CAAmB,CAAC;EAC3C,MAAMC,gBAAgB,GAAG,IAAID,GAAG,CAAS,CAAC;;EAE1C;EACA,MAAME,KAA6D,GAAG,CAClE;IAAEC,KAAK,EAAET,WAAW;IAAEU,QAAQ,EAAE;EAAK,CAAC,CACzC;EAED,OAAOF,KAAK,CAACG,MAAM,GAAG,CAAC,EAAE;IACrB,MAAM;MAAEF,KAAK;MAAEC;IAAS,CAAC,GAAGF,KAAK,CAACI,GAAG,CAAC,CAAE;IAExC,KAAK,MAAMC,IAAI,IAAIJ,KAAK,EAAE;MACtBJ,OAAO,CAACS,GAAG,CAACD,IAAI,CAACE,EAAE,EAAEF,IAAI,CAAC;MAE1B,IAAIH,QAAQ,KAAK,IAAI,EAAE;QACnBH,gBAAgB,CAACO,GAAG,CAACD,IAAI,CAACE,EAAE,EAAEL,QAAQ,CAAC;MAC3C;MAEA,IAAIG,IAAI,CAACG,QAAQ,IAAIH,IAAI,CAACG,QAAQ,CAACL,MAAM,GAAG,CAAC,EAAE;QAC3CH,KAAK,CAACS,IAAI,CAAC;UAAER,KAAK,EAAEI,IAAI,CAACG,QAAQ;UAAEN,QAAQ,EAAEG,IAAI,CAACE;QAAG,CAAC,CAAC;MAC3D;IACJ;EACJ;;EAEA;EACAb,aAAa,CAACG,OAAO,CAAC;EACtBF,sBAAsB,CAACI,gBAAgB,CAAC;AAC5C","ignoreList":[]}
1
+ {"version":3,"names":["getTreeViewStore","initializeNodeMaps","storeId","initialData","treeViewStore","updateNodeMap","updateChildToParentMap","getState","nodeMap","Map","childToParentMap","stack","nodes","parentId","length","pop","node","set","id","children","push","getSubtreeDepthFromMap","nodeId","root","get","maxDepth","depth","child","getNodeDepthFromParentMap","currentId","undefined","has"],"sourceRoot":"../../../src","sources":["helpers/treeNode.helper.ts"],"mappings":"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","ignoreList":[]}