react-native-tree-multi-select 1.6.1 → 1.7.0-beta.2

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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ⚡️Super-fast Tree view with multi-selection capabilities, using checkboxes and search filtering.
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/react-native-tree-multi-select)](https://badge.fury.io/js/react-native-tree-multi-select) [![License](https://img.shields.io/github/license/JairajJangle/react-native-tree-multi-select)](https://github.com/JairajJangle/react-native-tree-multi-select/blob/main/LICENSE) [![Workflow Status](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml/badge.svg)](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml) [![cov](https://raw.githubusercontent.com/JairajJangle/react-native-tree-multi-select/gh-pages/badges/coverage.svg)](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml) ![Android](https://img.shields.io/badge/-Android-555555?logo=android&logoColor=3DDC84) ![iOS](https://img.shields.io/badge/-iOS-555555?logo=apple&logoColor=white) ![Web](https://img.shields.io/badge/-Web-555555?logo=google-chrome&logoColor=0096FF) [![GitHub issues](https://img.shields.io/github/issues/JairajJangle/react-native-tree-multi-select)](https://github.com/JairajJangle/react-native-tree-multi-select/issues?q=is%3Aopen+is%3Aissue) ![TS](https://img.shields.io/badge/TypeScript-strict_💪-blue) [![Known Vulnerabilities](https://snyk.io/test/github/jairajjangle/react-native-tree-multi-select/badge.svg)](https://snyk.io/test/github/jairajjangle/react-native-tree-multi-select) [![Expo Snack](https://img.shields.io/badge/Expo%20Snack-555555?style=flat&logo=expo&logoColor=white)](https://snack.expo.dev/@futurejj/react-native-tree-multi-select-example)
5
+ [![npm version](https://img.shields.io/npm/v/react-native-tree-multi-select)](https://badge.fury.io/js/react-native-tree-multi-select) [![License](https://img.shields.io/github/license/JairajJangle/react-native-tree-multi-select)](https://github.com/JairajJangle/react-native-tree-multi-select/blob/main/LICENSE) [![Workflow Status](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml/badge.svg)](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml) [![cov](https://raw.githubusercontent.com/JairajJangle/react-native-tree-multi-select/gh-pages/badges/coverage.svg)](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml) ![Android](https://img.shields.io/badge/-Android-555555?logo=android&logoColor=3DDC84) ![iOS](https://img.shields.io/badge/-iOS-555555?logo=apple&logoColor=white) ![Web](https://img.shields.io/badge/-Web-555555?logo=google-chrome&logoColor=0096FF) [![GitHub issues](https://img.shields.io/github/issues/JairajJangle/react-native-tree-multi-select)](https://github.com/JairajJangle/react-native-tree-multi-select/issues?q=is%3Aopen+is%3Aissue) ![TS](https://img.shields.io/badge/TypeScript-strict_💪-blue) [![Known Vulnerabilities](https://snyk.io/test/github/jairajjangle/react-native-tree-multi-select/badge.svg)](https://snyk.io/test/github/jairajjangle/react-native-tree-multi-select) [![Expo Snack](https://img.shields.io/badge/Expo%20Snack-555555?style=flat&logo=expo&logoColor=white)](https://snack.expo.dev/@futurejj/react-native-tree-multi-select-example) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/react-native-tree-multi-select)
6
6
 
7
7
 
8
8
 
@@ -131,8 +131,6 @@ export function TreeViewUsageExample(){
131
131
  | `ExpandCollapseTouchableComponent` | `ComponentType<`[TouchableOpacityProps](https://reactnative.dev/docs/touchableopacity#props)`>` | No | A custom expand/collapse touchable component |
132
132
  | `CustomNodeRowComponent` | `React.ComponentType<`[NodeRowProps](#noderowprops)`>` | No | Custom row item component |
133
133
 
134
- ℹ️ `data` prop is not stateful! You will need to update the `key` prop to force `TreeView` to re-render.
135
-
136
134
  ℹ️ If `CustomNodeRowComponent` is provided then below props are not applied:
137
135
 
138
136
  1. `indentationMultiplier`
@@ -12,6 +12,7 @@ var _treeView = require("./store/treeView.store");
12
12
  var _usePreviousState = _interopRequireDefault(require("./utils/usePreviousState"));
13
13
  var _shallow = require("zustand/react/shallow");
14
14
  var _reactNativeUuid = _interopRequireDefault(require("react-native-uuid"));
15
+ var _useDeepCompareEffect = _interopRequireDefault(require("./utils/useDeepCompareEffect"));
15
16
  var _jsxRuntime = require("react/jsx-runtime");
16
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -72,7 +73,8 @@ const _TreeView = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
72
73
  setSearchText
73
74
  }));
74
75
  const prevSearchText = (0, _usePreviousState.default)(searchText);
75
- _react.default.useEffect(() => {
76
+ (0, _useDeepCompareEffect.default)(() => {
77
+ cleanUpTreeViewStore();
76
78
  updateInitialTreeViewData(data);
77
79
  if (selectionPropagation) setSelectionPropagation(selectionPropagation);
78
80
  (0, _helpers.initializeNodeMaps)(storeId, data);
@@ -82,8 +84,7 @@ const _TreeView = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
82
84
 
83
85
  // Expand pre-expanded nodes
84
86
  (0, _helpers.expandNodes)(storeId, preExpandedIds);
85
- // eslint-disable-next-line react-hooks/exhaustive-deps
86
- }, []);
87
+ }, [data]);
87
88
  function selectNodes(ids) {
88
89
  (0, _helpers.toggleCheckboxes)(storeId, ids, true);
89
90
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_NodeList","_interopRequireDefault","_helpers","_treeView","_usePreviousState","_shallow","_reactNativeUuid","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_TreeView","React","forwardRef","props","ref","data","onCheck","onExpand","selectionPropagation","preselectedIds","preExpandedIds","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","storeId","useMemo","uuid","v4","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","searchText","updateSearchText","updateSearchKeys","checked","indeterminate","setSelectionPropagation","cleanUpTreeViewStore","useTreeViewStore","useShallow","state","useImperativeHandle","selectAll","unselectAll","selectAllFiltered","unselectAllFiltered","expandAll","collapseAll","expandNodes","ids","collapseNodes","selectNodes","unselectNodes","setSearchText","prevSearchText","usePreviousState","useEffect","initializeNodeMaps","toggleCheckboxes","text","keys","getIds","useCallback","node","children","length","id","flatMap","item","Array","from","InteractionManager","runAfterInteractions","Set","jsx","TreeView","exports","memo"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_NodeList","_interopRequireDefault","_helpers","_treeView","_usePreviousState","_shallow","_reactNativeUuid","_useDeepCompareEffect","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_TreeView","React","forwardRef","props","ref","data","onCheck","onExpand","selectionPropagation","preselectedIds","preExpandedIds","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","storeId","useMemo","uuid","v4","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","searchText","updateSearchText","updateSearchKeys","checked","indeterminate","setSelectionPropagation","cleanUpTreeViewStore","useTreeViewStore","useShallow","state","useImperativeHandle","selectAll","unselectAll","selectAllFiltered","unselectAllFiltered","expandAll","collapseAll","expandNodes","ids","collapseNodes","selectNodes","unselectNodes","setSearchText","prevSearchText","usePreviousState","useDeepCompareEffect","initializeNodeMaps","toggleCheckboxes","text","keys","getIds","useCallback","node","children","length","id","flatMap","item","useEffect","Array","from","InteractionManager","runAfterInteractions","Set","jsx","TreeView","exports","memo"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":"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","ignoreList":[]}
@@ -21,8 +21,9 @@ function getFlattenedTreeData(nodes, expandedIds) {
21
21
  // Initialize stack with the root nodes and level 0
22
22
  for (let i = nodes.length - 1; i >= 0; i--) {
23
23
  const node = nodes[i];
24
+ /* istanbul ignore next */
24
25
  if (node) {
25
- // Ensure node is not undefined
26
+ // Ensure node is not undefined - redundant safety
26
27
  stack.push({
27
28
  node,
28
29
  level: 0
@@ -31,7 +32,8 @@ function getFlattenedTreeData(nodes, expandedIds) {
31
32
  }
32
33
  while (stack.length > 0) {
33
34
  const item = stack.pop();
34
- if (!item) continue; // Safety check
35
+ /* istanbul ignore next */
36
+ if (!item) continue; // Redundant safety check
35
37
 
36
38
  const {
37
39
  node,
@@ -48,8 +50,9 @@ function getFlattenedTreeData(nodes, expandedIds) {
48
50
  if (node.children && expandedIds.has(node.id)) {
49
51
  for (let i = node.children.length - 1; i >= 0; i--) {
50
52
  const childNode = node.children[i];
53
+ /* istanbul ignore next */
51
54
  if (childNode) {
52
- // Ensure childNode is not undefined
55
+ // Ensure childNode is not undefined - redundant safety
53
56
  stack.push({
54
57
  node: childNode,
55
58
  level: level + 1
@@ -1 +1 @@
1
- {"version":3,"names":["getFlattenedTreeData","nodes","expandedIds","flattened","stack","i","length","node","push","level","item","pop","children","has","id","childNode"],"sourceRoot":"../../../src","sources":["helpers/flattenTree.helper.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,oBAAoBA,CAChCC,KAAiB,EACjBC,WAAwB,EACD;EACvB,MAAMC,SAAkC,GAAG,EAAE;EAC7C,MAAMC,KAA2C,GAAG,EAAE;;EAEtD;EACA,KAAK,IAAIC,CAAC,GAAGJ,KAAK,CAACK,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACxC,MAAME,IAAI,GAAGN,KAAK,CAACI,CAAC,CAAC;IACrB,IAAIE,IAAI,EAAE;MAAE;MACRH,KAAK,CAACI,IAAI,CAAC;QAAED,IAAI;QAAEE,KAAK,EAAE;MAAE,CAAC,CAAC;IAClC;EACJ;EAEA,OAAOL,KAAK,CAACE,MAAM,GAAG,CAAC,EAAE;IACrB,MAAMI,IAAI,GAAGN,KAAK,CAACO,GAAG,CAAC,CAAC;IACxB,IAAI,CAACD,IAAI,EAAE,SAAS,CAAC;;IAErB,MAAM;MAAEH,IAAI;MAAEE;IAAM,CAAC,GAAGC,IAAI;;IAE5B;IACAP,SAAS,CAACK,IAAI,CAAC;MAAE,GAAGD,IAAI;MAAEE;IAAM,CAAC,CAAC;;IAElC;IACA,IAAIF,IAAI,CAACK,QAAQ,IAAIV,WAAW,CAACW,GAAG,CAACN,IAAI,CAACO,EAAE,CAAC,EAAE;MAC3C,KAAK,IAAIT,CAAC,GAAGE,IAAI,CAACK,QAAQ,CAACN,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QAChD,MAAMU,SAAS,GAAGR,IAAI,CAACK,QAAQ,CAACP,CAAC,CAAC;QAClC,IAAIU,SAAS,EAAE;UAAE;UACbX,KAAK,CAACI,IAAI,CAAC;YAAED,IAAI,EAAEQ,SAAS;YAAEN,KAAK,EAAEA,KAAK,GAAG;UAAE,CAAC,CAAC;QACrD;MACJ;IACJ;EACJ;EAEA,OAAON,SAAS;AACpB","ignoreList":[]}
1
+ {"version":3,"names":["getFlattenedTreeData","nodes","expandedIds","flattened","stack","i","length","node","push","level","item","pop","children","has","id","childNode"],"sourceRoot":"../../../src","sources":["helpers/flattenTree.helper.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,oBAAoBA,CAChCC,KAAiB,EACjBC,WAAwB,EACD;EACvB,MAAMC,SAAkC,GAAG,EAAE;EAC7C,MAAMC,KAA2C,GAAG,EAAE;;EAEtD;EACA,KAAK,IAAIC,CAAC,GAAGJ,KAAK,CAACK,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACxC,MAAME,IAAI,GAAGN,KAAK,CAACI,CAAC,CAAC;IACrB;IACA,IAAIE,IAAI,EAAE;MAAE;MACRH,KAAK,CAACI,IAAI,CAAC;QAAED,IAAI;QAAEE,KAAK,EAAE;MAAE,CAAC,CAAC;IAClC;EACJ;EAEA,OAAOL,KAAK,CAACE,MAAM,GAAG,CAAC,EAAE;IACrB,MAAMI,IAAI,GAAGN,KAAK,CAACO,GAAG,CAAC,CAAC;IACxB;IACA,IAAI,CAACD,IAAI,EAAE,SAAS,CAAC;;IAErB,MAAM;MAAEH,IAAI;MAAEE;IAAM,CAAC,GAAGC,IAAI;;IAE5B;IACAP,SAAS,CAACK,IAAI,CAAC;MAAE,GAAGD,IAAI;MAAEE;IAAM,CAAC,CAAC;;IAElC;IACA,IAAIF,IAAI,CAACK,QAAQ,IAAIV,WAAW,CAACW,GAAG,CAACN,IAAI,CAACO,EAAE,CAAC,EAAE;MAC3C,KAAK,IAAIT,CAAC,GAAGE,IAAI,CAACK,QAAQ,CAACN,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QAChD,MAAMU,SAAS,GAAGR,IAAI,CAACK,QAAQ,CAACP,CAAC,CAAC;QAClC;QACA,IAAIU,SAAS,EAAE;UAAE;UACbX,KAAK,CAACI,IAAI,CAAC;YAAED,IAAI,EAAEQ,SAAS;YAAEN,KAAK,EAAEA,KAAK,GAAG;UAAE,CAAC,CAAC;QACrD;MACJ;IACJ;EACJ;EAEA,OAAON,SAAS;AACpB","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useDeepCompareEffect;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ /**
11
+ * Deep compare effect hook.
12
+ * Ensures the effect runs on the first render and whenever dependencies deeply change.
13
+ *
14
+ * @param effect The effect callback function.
15
+ * @param deps The dependencies array to compare deeply.
16
+ */
17
+ function useDeepCompareEffect(effect, deps) {
18
+ // Ref to track if it's the first render
19
+ const firstRenderRef = _react.default.useRef(true);
20
+
21
+ // Memoized dependencies to avoid redundant `isEqual` checks
22
+ const memoizedDependencies = _react.default.useMemo(() => deps, [deps]);
23
+
24
+ // Ref to store the previous dependencies
25
+ const dependenciesRef = _react.default.useRef(memoizedDependencies);
26
+
27
+ // Check for dependency changes
28
+ const dependenciesChanged = !(0, _isEqual.default)(dependenciesRef.current, memoizedDependencies);
29
+ if (dependenciesChanged) {
30
+ dependenciesRef.current = memoizedDependencies;
31
+ }
32
+ _react.default.useEffect(() => {
33
+ if (firstRenderRef.current) {
34
+ firstRenderRef.current = false;
35
+ }
36
+ return effect();
37
+ // eslint-disable-next-line react-hooks/exhaustive-deps
38
+ }, [dependenciesChanged]); // exclude the effect function from the dependencies
39
+ }
40
+ //# sourceMappingURL=useDeepCompareEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_isEqual","e","__esModule","default","useDeepCompareEffect","effect","deps","firstRenderRef","React","useRef","memoizedDependencies","useMemo","dependenciesRef","dependenciesChanged","isEqual","current","useEffect"],"sourceRoot":"../../../src","sources":["utils/useDeepCompareEffect.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAqC,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASG,oBAAoBA,CAC1CC,MAA4B,EAC5BC,IAA0B,EAC1B;EACA;EACA,MAAMC,cAAc,GAAGC,cAAK,CAACC,MAAM,CAAU,IAAI,CAAC;;EAElD;EACA,MAAMC,oBAAoB,GAAGF,cAAK,CAACG,OAAO,CAAC,MAAML,IAAI,EAAE,CAACA,IAAI,CAAC,CAAC;;EAE9D;EACA,MAAMM,eAAe,GAAGJ,cAAK,CAACC,MAAM,CAAuBC,oBAAoB,CAAC;;EAEhF;EACA,MAAMG,mBAAmB,GAAG,CAAC,IAAAC,gBAAO,EAACF,eAAe,CAACG,OAAO,EAAEL,oBAAoB,CAAC;EACnF,IAAIG,mBAAmB,EAAE;IACvBD,eAAe,CAACG,OAAO,GAAGL,oBAAoB;EAChD;EAEAF,cAAK,CAACQ,SAAS,CAAC,MAAM;IACpB,IAAIT,cAAc,CAACQ,OAAO,EAAE;MAC1BR,cAAc,CAACQ,OAAO,GAAG,KAAK;IAChC;IAEA,OAAOV,MAAM,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACQ,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC7B","ignoreList":[]}
@@ -8,6 +8,7 @@ import { useTreeViewStore } from './store/treeView.store';
8
8
  import usePreviousState from './utils/usePreviousState';
9
9
  import { useShallow } from "zustand/react/shallow";
10
10
  import uuid from "react-native-uuid";
11
+ import useDeepCompareEffect from "./utils/useDeepCompareEffect";
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  const _TreeView = /*#__PURE__*/React.forwardRef((props, ref) => {
13
14
  const {
@@ -65,7 +66,8 @@ const _TreeView = /*#__PURE__*/React.forwardRef((props, ref) => {
65
66
  setSearchText
66
67
  }));
67
68
  const prevSearchText = usePreviousState(searchText);
68
- React.useEffect(() => {
69
+ useDeepCompareEffect(() => {
70
+ cleanUpTreeViewStore();
69
71
  updateInitialTreeViewData(data);
70
72
  if (selectionPropagation) setSelectionPropagation(selectionPropagation);
71
73
  initializeNodeMaps(storeId, data);
@@ -75,8 +77,7 @@ const _TreeView = /*#__PURE__*/React.forwardRef((props, ref) => {
75
77
 
76
78
  // Expand pre-expanded nodes
77
79
  expandNodes(storeId, preExpandedIds);
78
- // eslint-disable-next-line react-hooks/exhaustive-deps
79
- }, []);
80
+ }, [data]);
80
81
  function selectNodes(ids) {
81
82
  toggleCheckboxes(storeId, ids, true);
82
83
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","InteractionManager","NodeList","selectAll","selectAllFiltered","unselectAll","unselectAllFiltered","initializeNodeMaps","expandAll","collapseAll","toggleCheckboxes","expandNodes","collapseNodes","useTreeViewStore","usePreviousState","useShallow","uuid","jsx","_jsx","_TreeView","forwardRef","props","ref","data","onCheck","onExpand","selectionPropagation","preselectedIds","preExpandedIds","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","storeId","v4","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","searchText","updateSearchText","updateSearchKeys","checked","indeterminate","setSelectionPropagation","cleanUpTreeViewStore","state","useImperativeHandle","ids","selectNodes","unselectNodes","setSearchText","prevSearchText","useEffect","text","keys","getIds","useCallback","node","children","length","id","flatMap","item","Array","from","runAfterInteractions","Set","TreeView","memo"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,kBAAkB,QAAQ,cAAc;AAMjD,OAAOC,QAAQ,MAAM,uBAAuB;AAC5C,SACEC,SAAS,EACTC,iBAAiB,EACjBC,WAAW,EACXC,mBAAmB,EACnBC,kBAAkB,EAClBC,SAAS,EACTC,WAAW,EACXC,gBAAgB,EAChBC,WAAW,EACXC,aAAa,QACR,WAAW;AAClB,SAASC,gBAAgB,QAAQ,wBAAwB;AACzD,OAAOC,gBAAgB,MAAM,0BAA0B;AACvD,SAASC,UAAU,QAAQ,uBAAuB;AAClD,OAAOC,IAAI,MAAM,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAErC,MAAMC,SAAS,gBAAGpB,KAAK,CAACqB,UAAU,CAChC,CAACC,KAAK,EAAEC,GAAG,KAAK;EACd,MAAM;IACJC,IAAI;IAEJC,OAAO;IACPC,QAAQ;IAERC,oBAAoB;IAEpBC,cAAc,GAAG,EAAE;IAEnBC,cAAc,GAAG,EAAE;IAEnBC,kBAAkB;IAClBC,sBAAsB;IACtBC,qBAAqB;IAErBC,iBAAiB;IACjBC,2BAA2B;IAC3BC,gCAAgC;IAEhCC;EACF,CAAC,GAAGd,KAAK;EAET,MAAMe,OAAO,GAAGpC,OAAO,CAAC,MAAMgB,IAAI,CAACqB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;EAE5C,MAAM;IACJC,QAAQ;IACRC,cAAc;IAEdC,mBAAmB;IACnBC,yBAAyB;IAEzBC,UAAU;IACVC,gBAAgB;IAEhBC,gBAAgB;IAEhBC,OAAO;IACPC,aAAa;IAEbC,uBAAuB;IAEvBC;EACF,CAAC,GAAGnC,gBAAgB,CAACuB,OAAO,CAAC,CAACrB,UAAU,CACtCkC,KAAK,KAAK;IACRX,QAAQ,EAAEW,KAAK,CAACX,QAAQ;IACxBC,cAAc,EAAEU,KAAK,CAACV,cAAc;IAEpCC,mBAAmB,EAAES,KAAK,CAACT,mBAAmB;IAC9CC,yBAAyB,EAAEQ,KAAK,CAACR,yBAAyB;IAE1DC,UAAU,EAAEO,KAAK,CAACP,UAAU;IAC5BC,gBAAgB,EAAEM,KAAK,CAACN,gBAAgB;IAExCC,gBAAgB,EAAEK,KAAK,CAACL,gBAAgB;IAExCC,OAAO,EAAEI,KAAK,CAACJ,OAAO;IACtBC,aAAa,EAAEG,KAAK,CAACH,aAAa;IAElCC,uBAAuB,EAAEE,KAAK,CAACF,uBAAuB;IAEtDC,oBAAoB,EAAEC,KAAK,CAACD;EAC9B,CAAC,CACH,CAAC,CAAC;EAEFjD,KAAK,CAACmD,mBAAmB,CAAC5B,GAAG,EAAE,OAAO;IACpCnB,SAAS,EAAEA,CAAA,KAAMA,SAAS,CAACiC,OAAO,CAAC;IACnC/B,WAAW,EAAEA,CAAA,KAAMA,WAAW,CAAC+B,OAAO,CAAC;IAEvChC,iBAAiB,EAAEA,CAAA,KAAMA,iBAAiB,CAACgC,OAAO,CAAC;IACnD9B,mBAAmB,EAAEA,CAAA,KAAMA,mBAAmB,CAAC8B,OAAO,CAAC;IAEvD5B,SAAS,EAAEA,CAAA,KAAMA,SAAS,CAAC4B,OAAO,CAAC;IACnC3B,WAAW,EAAEA,CAAA,KAAMA,WAAW,CAAC2B,OAAO,CAAC;IAEvCzB,WAAW,EAAGwC,GAAa,IAAKxC,WAAW,CAACyB,OAAO,EAAEe,GAAG,CAAC;IACzDvC,aAAa,EAAGuC,GAAa,IAAKvC,aAAa,CAACwB,OAAO,EAAEe,GAAG,CAAC;IAE7DC,WAAW,EAAGD,GAAa,IAAKC,WAAW,CAACD,GAAG,CAAC;IAChDE,aAAa,EAAGF,GAAa,IAAKE,aAAa,CAACF,GAAG,CAAC;IAEpDG;EACF,CAAC,CAAC,CAAC;EAEH,MAAMC,cAAc,GAAGzC,gBAAgB,CAAC4B,UAAU,CAAC;EAEnD3C,KAAK,CAACyD,SAAS,CAAC,MAAM;IACpBf,yBAAyB,CAAClB,IAAI,CAAC;IAE/B,IAAIG,oBAAoB,EACtBqB,uBAAuB,CAACrB,oBAAoB,CAAC;IAE/CnB,kBAAkB,CAAC6B,OAAO,EAAEb,IAAI,CAAC;;IAEjC;IACAb,gBAAgB,CAAC0B,OAAO,EAAET,cAAc,EAAE,IAAI,CAAC;;IAE/C;IACAhB,WAAW,CAACyB,OAAO,EAAER,cAAc,CAAC;IACpC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,SAASwB,WAAWA,CAACD,GAAa,EAAE;IAClCzC,gBAAgB,CAAC0B,OAAO,EAAEe,GAAG,EAAE,IAAI,CAAC;EACtC;EAEA,SAASE,aAAaA,CAACF,GAAa,EAAE;IACpCzC,gBAAgB,CAAC0B,OAAO,EAAEe,GAAG,EAAE,KAAK,CAAC;EACvC;EAEA,SAASG,aAAaA,CAACG,IAAY,EAAEC,IAAc,GAAG,CAAC,MAAM,CAAC,EAAE;IAC9Df,gBAAgB,CAACc,IAAI,CAAC;IACtBb,gBAAgB,CAACc,IAAI,CAAC;EACxB;EAEA,MAAMC,MAAM,GAAG5D,KAAK,CAAC6D,WAAW,CAAEC,IAAc,IAAe;IAC7D,IAAI,CAACA,IAAI,CAACC,QAAQ,IAAID,IAAI,CAACC,QAAQ,CAACC,MAAM,KAAK,CAAC,EAAE;MAChD,OAAO,CAACF,IAAI,CAACG,EAAE,CAAC;IAClB,CAAC,MAAM;MACL,OAAO,CAACH,IAAI,CAACG,EAAE,EAAE,GAAGH,IAAI,CAACC,QAAQ,CAACG,OAAO,CAAEC,IAAI,IAAKP,MAAM,CAACO,IAAI,CAAC,CAAC,CAAC;IACpE;EACF,CAAC,EAAE,EAAE,CAAC;EAENnE,KAAK,CAACyD,SAAS,CAAC,MAAM;IACpBhC,OAAO,GAAG2C,KAAK,CAACC,IAAI,CAACvB,OAAO,CAAC,EAAEsB,KAAK,CAACC,IAAI,CAACtB,aAAa,CAAC,CAAC;EAC3D,CAAC,EAAE,CAACtB,OAAO,EAAEqB,OAAO,EAAEC,aAAa,CAAC,CAAC;EAErC/C,KAAK,CAACyD,SAAS,CAAC,MAAM;IACpB/B,QAAQ,GAAG0C,KAAK,CAACC,IAAI,CAAC9B,QAAQ,CAAC,CAAC;EAClC,CAAC,EAAE,CAACb,QAAQ,EAAEa,QAAQ,CAAC,CAAC;EAExBvC,KAAK,CAACyD,SAAS,CAAC,MAAM;IACpB,IAAId,UAAU,EAAE;MACdzC,kBAAkB,CAACoE,oBAAoB,CAAC,MAAM;QAC5C9B,cAAc,CAAC,IAAI+B,GAAG,CAAC9B,mBAAmB,CAACyB,OAAO,CAC/CC,IAAI,IAAKP,MAAM,CAACO,IAAI,CACvB,CAAC,CAAC,CAAC;MACL,CAAC,CAAC;IACJ,CAAC,MACI,IAAIX,cAAc,IAAIA,cAAc,KAAK,EAAE,EAAE;MAChD;AACR;MACQtD,kBAAkB,CAACoE,oBAAoB,CAAC,MAAM;QAC5C9B,cAAc,CAAC,IAAI+B,GAAG,CAAC,CAAC,CAAC;MAC3B,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CACDX,MAAM,EACNnB,mBAAmB,EACnBe,cAAc,EACdb,UAAU,EACVH,cAAc,CACf,CAAC;EAEFxC,KAAK,CAACyD,SAAS,CAAC,MAAM;IACpB,OAAO,MAAM;MACXR,oBAAoB,CAAC,CAAC;IACxB,CAAC;EACH,CAAC,EAAE,CAACA,oBAAoB,CAAC,CAAC;EAE1B,oBACE9B,IAAA,CAAChB,QAAQ;IACPkC,OAAO,EAAEA,OAAQ;IAEjBP,kBAAkB,EAAEA,kBAAmB;IACvCC,sBAAsB,EAAEA,sBAAuB;IAC/CC,qBAAqB,EAAEA,qBAAsB;IAE7CC,iBAAiB,EAAEA,iBAAkB;IACrCC,2BAA2B,EAAEA,2BAA4B;IACzDC,gCAAgC,EAAEA,gCAAiC;IAEnEC,sBAAsB,EAAEA;EAAuB,CAChD,CAAC;AAEN,CACF,CAAC;AAED,OAAO,MAAMoC,QAAQ,gBAAGxE,KAAK,CAACyE,IAAI,CAACrD,SAAS,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","InteractionManager","NodeList","selectAll","selectAllFiltered","unselectAll","unselectAllFiltered","initializeNodeMaps","expandAll","collapseAll","toggleCheckboxes","expandNodes","collapseNodes","useTreeViewStore","usePreviousState","useShallow","uuid","useDeepCompareEffect","jsx","_jsx","_TreeView","forwardRef","props","ref","data","onCheck","onExpand","selectionPropagation","preselectedIds","preExpandedIds","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","storeId","v4","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","searchText","updateSearchText","updateSearchKeys","checked","indeterminate","setSelectionPropagation","cleanUpTreeViewStore","state","useImperativeHandle","ids","selectNodes","unselectNodes","setSearchText","prevSearchText","text","keys","getIds","useCallback","node","children","length","id","flatMap","item","useEffect","Array","from","runAfterInteractions","Set","TreeView","memo"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":"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","ignoreList":[]}
@@ -17,8 +17,9 @@ export function getFlattenedTreeData(nodes, expandedIds) {
17
17
  // Initialize stack with the root nodes and level 0
18
18
  for (let i = nodes.length - 1; i >= 0; i--) {
19
19
  const node = nodes[i];
20
+ /* istanbul ignore next */
20
21
  if (node) {
21
- // Ensure node is not undefined
22
+ // Ensure node is not undefined - redundant safety
22
23
  stack.push({
23
24
  node,
24
25
  level: 0
@@ -27,7 +28,8 @@ export function getFlattenedTreeData(nodes, expandedIds) {
27
28
  }
28
29
  while (stack.length > 0) {
29
30
  const item = stack.pop();
30
- if (!item) continue; // Safety check
31
+ /* istanbul ignore next */
32
+ if (!item) continue; // Redundant safety check
31
33
 
32
34
  const {
33
35
  node,
@@ -44,8 +46,9 @@ export function getFlattenedTreeData(nodes, expandedIds) {
44
46
  if (node.children && expandedIds.has(node.id)) {
45
47
  for (let i = node.children.length - 1; i >= 0; i--) {
46
48
  const childNode = node.children[i];
49
+ /* istanbul ignore next */
47
50
  if (childNode) {
48
- // Ensure childNode is not undefined
51
+ // Ensure childNode is not undefined - redundant safety
49
52
  stack.push({
50
53
  node: childNode,
51
54
  level: level + 1
@@ -1 +1 @@
1
- {"version":3,"names":["getFlattenedTreeData","nodes","expandedIds","flattened","stack","i","length","node","push","level","item","pop","children","has","id","childNode"],"sourceRoot":"../../../src","sources":["helpers/flattenTree.helper.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,oBAAoBA,CAChCC,KAAiB,EACjBC,WAAwB,EACD;EACvB,MAAMC,SAAkC,GAAG,EAAE;EAC7C,MAAMC,KAA2C,GAAG,EAAE;;EAEtD;EACA,KAAK,IAAIC,CAAC,GAAGJ,KAAK,CAACK,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACxC,MAAME,IAAI,GAAGN,KAAK,CAACI,CAAC,CAAC;IACrB,IAAIE,IAAI,EAAE;MAAE;MACRH,KAAK,CAACI,IAAI,CAAC;QAAED,IAAI;QAAEE,KAAK,EAAE;MAAE,CAAC,CAAC;IAClC;EACJ;EAEA,OAAOL,KAAK,CAACE,MAAM,GAAG,CAAC,EAAE;IACrB,MAAMI,IAAI,GAAGN,KAAK,CAACO,GAAG,CAAC,CAAC;IACxB,IAAI,CAACD,IAAI,EAAE,SAAS,CAAC;;IAErB,MAAM;MAAEH,IAAI;MAAEE;IAAM,CAAC,GAAGC,IAAI;;IAE5B;IACAP,SAAS,CAACK,IAAI,CAAC;MAAE,GAAGD,IAAI;MAAEE;IAAM,CAAC,CAAC;;IAElC;IACA,IAAIF,IAAI,CAACK,QAAQ,IAAIV,WAAW,CAACW,GAAG,CAACN,IAAI,CAACO,EAAE,CAAC,EAAE;MAC3C,KAAK,IAAIT,CAAC,GAAGE,IAAI,CAACK,QAAQ,CAACN,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QAChD,MAAMU,SAAS,GAAGR,IAAI,CAACK,QAAQ,CAACP,CAAC,CAAC;QAClC,IAAIU,SAAS,EAAE;UAAE;UACbX,KAAK,CAACI,IAAI,CAAC;YAAED,IAAI,EAAEQ,SAAS;YAAEN,KAAK,EAAEA,KAAK,GAAG;UAAE,CAAC,CAAC;QACrD;MACJ;IACJ;EACJ;EAEA,OAAON,SAAS;AACpB","ignoreList":[]}
1
+ {"version":3,"names":["getFlattenedTreeData","nodes","expandedIds","flattened","stack","i","length","node","push","level","item","pop","children","has","id","childNode"],"sourceRoot":"../../../src","sources":["helpers/flattenTree.helper.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,oBAAoBA,CAChCC,KAAiB,EACjBC,WAAwB,EACD;EACvB,MAAMC,SAAkC,GAAG,EAAE;EAC7C,MAAMC,KAA2C,GAAG,EAAE;;EAEtD;EACA,KAAK,IAAIC,CAAC,GAAGJ,KAAK,CAACK,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACxC,MAAME,IAAI,GAAGN,KAAK,CAACI,CAAC,CAAC;IACrB;IACA,IAAIE,IAAI,EAAE;MAAE;MACRH,KAAK,CAACI,IAAI,CAAC;QAAED,IAAI;QAAEE,KAAK,EAAE;MAAE,CAAC,CAAC;IAClC;EACJ;EAEA,OAAOL,KAAK,CAACE,MAAM,GAAG,CAAC,EAAE;IACrB,MAAMI,IAAI,GAAGN,KAAK,CAACO,GAAG,CAAC,CAAC;IACxB;IACA,IAAI,CAACD,IAAI,EAAE,SAAS,CAAC;;IAErB,MAAM;MAAEH,IAAI;MAAEE;IAAM,CAAC,GAAGC,IAAI;;IAE5B;IACAP,SAAS,CAACK,IAAI,CAAC;MAAE,GAAGD,IAAI;MAAEE;IAAM,CAAC,CAAC;;IAElC;IACA,IAAIF,IAAI,CAACK,QAAQ,IAAIV,WAAW,CAACW,GAAG,CAACN,IAAI,CAACO,EAAE,CAAC,EAAE;MAC3C,KAAK,IAAIT,CAAC,GAAGE,IAAI,CAACK,QAAQ,CAACN,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QAChD,MAAMU,SAAS,GAAGR,IAAI,CAACK,QAAQ,CAACP,CAAC,CAAC;QAClC;QACA,IAAIU,SAAS,EAAE;UAAE;UACbX,KAAK,CAACI,IAAI,CAAC;YAAED,IAAI,EAAEQ,SAAS;YAAEN,KAAK,EAAEA,KAAK,GAAG;UAAE,CAAC,CAAC;QACrD;MACJ;IACJ;EACJ;EAEA,OAAON,SAAS;AACpB","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ import React from "react";
4
+ import isEqual from "lodash/isEqual";
5
+
6
+ /**
7
+ * Deep compare effect hook.
8
+ * Ensures the effect runs on the first render and whenever dependencies deeply change.
9
+ *
10
+ * @param effect The effect callback function.
11
+ * @param deps The dependencies array to compare deeply.
12
+ */
13
+ export default function useDeepCompareEffect(effect, deps) {
14
+ // Ref to track if it's the first render
15
+ const firstRenderRef = React.useRef(true);
16
+
17
+ // Memoized dependencies to avoid redundant `isEqual` checks
18
+ const memoizedDependencies = React.useMemo(() => deps, [deps]);
19
+
20
+ // Ref to store the previous dependencies
21
+ const dependenciesRef = React.useRef(memoizedDependencies);
22
+
23
+ // Check for dependency changes
24
+ const dependenciesChanged = !isEqual(dependenciesRef.current, memoizedDependencies);
25
+ if (dependenciesChanged) {
26
+ dependenciesRef.current = memoizedDependencies;
27
+ }
28
+ React.useEffect(() => {
29
+ if (firstRenderRef.current) {
30
+ firstRenderRef.current = false;
31
+ }
32
+ return effect();
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
+ }, [dependenciesChanged]); // exclude the effect function from the dependencies
35
+ }
36
+ //# sourceMappingURL=useDeepCompareEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","isEqual","useDeepCompareEffect","effect","deps","firstRenderRef","useRef","memoizedDependencies","useMemo","dependenciesRef","dependenciesChanged","current","useEffect"],"sourceRoot":"../../../src","sources":["utils/useDeepCompareEffect.ts"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,OAAO,MAAM,gBAAgB;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,oBAAoBA,CAC1CC,MAA4B,EAC5BC,IAA0B,EAC1B;EACA;EACA,MAAMC,cAAc,GAAGL,KAAK,CAACM,MAAM,CAAU,IAAI,CAAC;;EAElD;EACA,MAAMC,oBAAoB,GAAGP,KAAK,CAACQ,OAAO,CAAC,MAAMJ,IAAI,EAAE,CAACA,IAAI,CAAC,CAAC;;EAE9D;EACA,MAAMK,eAAe,GAAGT,KAAK,CAACM,MAAM,CAAuBC,oBAAoB,CAAC;;EAEhF;EACA,MAAMG,mBAAmB,GAAG,CAACT,OAAO,CAACQ,eAAe,CAACE,OAAO,EAAEJ,oBAAoB,CAAC;EACnF,IAAIG,mBAAmB,EAAE;IACvBD,eAAe,CAACE,OAAO,GAAGJ,oBAAoB;EAChD;EAEAP,KAAK,CAACY,SAAS,CAAC,MAAM;IACpB,IAAIP,cAAc,CAACM,OAAO,EAAE;MAC1BN,cAAc,CAACM,OAAO,GAAG,KAAK;IAChC;IAEA,OAAOR,MAAM,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACO,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC7B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeView.d.ts","sourceRoot":"","sources":["../../src/TreeView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAuMhC,eAAO,MAAM,QAAQ,8GAAwB,CAAC"}
1
+ {"version":3,"file":"TreeView.d.ts","sourceRoot":"","sources":["../../src/TreeView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAyMhC,eAAO,MAAM,QAAQ,8GAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"flattenTree.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/flattenTree.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAE1E;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,QAAQ,EAAE,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,qBAAqB,EAAE,CAiCzB"}
1
+ {"version":3,"file":"flattenTree.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/flattenTree.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAE1E;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,QAAQ,EAAE,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,qBAAqB,EAAE,CAoCzB"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ /**
3
+ * Deep compare effect hook.
4
+ * Ensures the effect runs on the first render and whenever dependencies deeply change.
5
+ *
6
+ * @param effect The effect callback function.
7
+ * @param deps The dependencies array to compare deeply.
8
+ */
9
+ export default function useDeepCompareEffect(effect: React.EffectCallback, deps: React.DependencyList): void;
10
+ //# sourceMappingURL=useDeepCompareEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeepCompareEffect.d.ts","sourceRoot":"","sources":["../../../src/utils/useDeepCompareEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,MAAM,EAAE,KAAK,CAAC,cAAc,EAC5B,IAAI,EAAE,KAAK,CAAC,cAAc,QAyB3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-tree-multi-select",
3
- "version": "1.6.1",
3
+ "version": "1.7.0-beta.2",
4
4
  "description": "A super-fast, customizable tree view component for React Native with multi-selection, checkboxes, and search filtering capabilities.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -95,6 +95,7 @@
95
95
  "@testing-library/react-native": "^12.6.1",
96
96
  "@types/color": "^3.0.6",
97
97
  "@types/jest": "^29.5.3",
98
+ "@types/lodash": "^4.17.13",
98
99
  "@types/react": "~17.0.21",
99
100
  "@types/react-native": "0.70.0",
100
101
  "@types/react-native-vector-icons": "^6.4.18",
@@ -128,7 +129,7 @@
128
129
  "react-native-vector-icons": "*"
129
130
  },
130
131
  "engines": {
131
- "node": ">= 16.0.0"
132
+ "node": ">= 18.0.0"
132
133
  },
133
134
  "packageManager": "yarn@1.22.22",
134
135
  "jest": {
@@ -208,6 +209,7 @@
208
209
  ]
209
210
  },
210
211
  "dependencies": {
212
+ "lodash": "^4.17.21",
211
213
  "react-native-uuid": "^2.0.3",
212
214
  "zustand": "^4.5.5"
213
215
  },
package/src/TreeView.tsx CHANGED
@@ -22,6 +22,7 @@ import { useTreeViewStore } from './store/treeView.store';
22
22
  import usePreviousState from './utils/usePreviousState';
23
23
  import { useShallow } from "zustand/react/shallow";
24
24
  import uuid from "react-native-uuid";
25
+ import useDeepCompareEffect from "./utils/useDeepCompareEffect";
25
26
 
26
27
  const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
27
28
  (props, ref) => {
@@ -111,7 +112,9 @@ const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
111
112
 
112
113
  const prevSearchText = usePreviousState(searchText);
113
114
 
114
- React.useEffect(() => {
115
+ useDeepCompareEffect(() => {
116
+ cleanUpTreeViewStore();
117
+
115
118
  updateInitialTreeViewData(data);
116
119
 
117
120
  if (selectionPropagation)
@@ -124,8 +127,7 @@ const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
124
127
 
125
128
  // Expand pre-expanded nodes
126
129
  expandNodes(storeId, preExpandedIds);
127
- // eslint-disable-next-line react-hooks/exhaustive-deps
128
- }, []);
130
+ }, [data]);
129
131
 
130
132
  function selectNodes(ids: string[]) {
131
133
  toggleCheckboxes(storeId, ids, true);
@@ -20,14 +20,16 @@ export function getFlattenedTreeData(
20
20
  // Initialize stack with the root nodes and level 0
21
21
  for (let i = nodes.length - 1; i >= 0; i--) {
22
22
  const node = nodes[i];
23
- if (node) { // Ensure node is not undefined
23
+ /* istanbul ignore next */
24
+ if (node) { // Ensure node is not undefined - redundant safety
24
25
  stack.push({ node, level: 0 });
25
26
  }
26
27
  }
27
28
 
28
29
  while (stack.length > 0) {
29
30
  const item = stack.pop();
30
- if (!item) continue; // Safety check
31
+ /* istanbul ignore next */
32
+ if (!item) continue; // Redundant safety check
31
33
 
32
34
  const { node, level } = item;
33
35
 
@@ -38,7 +40,8 @@ export function getFlattenedTreeData(
38
40
  if (node.children && expandedIds.has(node.id)) {
39
41
  for (let i = node.children.length - 1; i >= 0; i--) {
40
42
  const childNode = node.children[i];
41
- if (childNode) { // Ensure childNode is not undefined
43
+ /* istanbul ignore next */
44
+ if (childNode) { // Ensure childNode is not undefined - redundant safety
42
45
  stack.push({ node: childNode, level: level + 1 });
43
46
  }
44
47
  }
@@ -0,0 +1,38 @@
1
+ import React from "react";
2
+ import isEqual from "lodash/isEqual";
3
+
4
+ /**
5
+ * Deep compare effect hook.
6
+ * Ensures the effect runs on the first render and whenever dependencies deeply change.
7
+ *
8
+ * @param effect The effect callback function.
9
+ * @param deps The dependencies array to compare deeply.
10
+ */
11
+ export default function useDeepCompareEffect(
12
+ effect: React.EffectCallback,
13
+ deps: React.DependencyList
14
+ ) {
15
+ // Ref to track if it's the first render
16
+ const firstRenderRef = React.useRef<boolean>(true);
17
+
18
+ // Memoized dependencies to avoid redundant `isEqual` checks
19
+ const memoizedDependencies = React.useMemo(() => deps, [deps]);
20
+
21
+ // Ref to store the previous dependencies
22
+ const dependenciesRef = React.useRef<React.DependencyList>(memoizedDependencies);
23
+
24
+ // Check for dependency changes
25
+ const dependenciesChanged = !isEqual(dependenciesRef.current, memoizedDependencies);
26
+ if (dependenciesChanged) {
27
+ dependenciesRef.current = memoizedDependencies;
28
+ }
29
+
30
+ React.useEffect(() => {
31
+ if (firstRenderRef.current) {
32
+ firstRenderRef.current = false;
33
+ }
34
+
35
+ return effect();
36
+ // eslint-disable-next-line react-hooks/exhaustive-deps
37
+ }, [dependenciesChanged]); // exclude the effect function from the dependencies
38
+ }