react-native-tree-multi-select 1.6.0 → 1.7.0-beta.1

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":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useDeepCompareEffect;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ 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); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ /**
13
+ * Deep compare effect hook.
14
+ * Ensures the effect runs on the first render and whenever dependencies deeply change.
15
+ *
16
+ * @param effect The effect callback function.
17
+ * @param dependencies The dependencies array to compare deeply.
18
+ */
19
+ function useDeepCompareEffect(effect, dependencies) {
20
+ const previousDependenciesRef = (0, _react.useRef)();
21
+ const isFirstRender = (0, _react.useRef)(true);
22
+ const hasChanged = isFirstRender.current || !(0, _isEqual.default)(previousDependenciesRef.current, dependencies);
23
+ _react.default.useEffect(() => {
24
+ if (hasChanged) {
25
+ isFirstRender.current = false; // Mark that the first render has passed
26
+ previousDependenciesRef.current = dependencies; // Update dependencies reference
27
+ return effect();
28
+ }
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ }, [hasChanged]); // Depend only on the change detection flag
31
+ }
32
+ ;
33
+ //# sourceMappingURL=useDeepCompareEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_isEqual","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useDeepCompareEffect","effect","dependencies","previousDependenciesRef","useRef","isFirstRender","hasChanged","current","isEqual","React","useEffect"],"sourceRoot":"../../../src","sources":["utils/useDeepCompareEffect.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAqC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASW,oBAAoBA,CAC1CC,MAA4B,EAC5BC,YAAmB,EACnB;EACA,MAAMC,uBAAuB,GAAG,IAAAC,aAAM,EAAQ,CAAC;EAC/C,MAAMC,aAAa,GAAG,IAAAD,aAAM,EAAC,IAAI,CAAC;EAElC,MAAME,UAAU,GACdD,aAAa,CAACE,OAAO,IAAI,CAAC,IAAAC,gBAAO,EAACL,uBAAuB,CAACI,OAAO,EAAEL,YAAY,CAAC;EAElFO,cAAK,CAACC,SAAS,CAAC,MAAM;IACpB,IAAIJ,UAAU,EAAE;MACdD,aAAa,CAACE,OAAO,GAAG,KAAK,CAAC,CAAC;MAC/BJ,uBAAuB,CAACI,OAAO,GAAGL,YAAY,CAAC,CAAC;MAChD,OAAOD,MAAM,CAAC,CAAC;IACjB;IACA;EACF,CAAC,EAAE,CAACK,UAAU,CAAC,CAAC,CAAC,CAAC;AACpB;AAAC","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":"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","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":[]}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ import React, { useRef } 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 dependencies The dependencies array to compare deeply.
12
+ */
13
+ export default function useDeepCompareEffect(effect, dependencies) {
14
+ const previousDependenciesRef = useRef();
15
+ const isFirstRender = useRef(true);
16
+ const hasChanged = isFirstRender.current || !isEqual(previousDependenciesRef.current, dependencies);
17
+ React.useEffect(() => {
18
+ if (hasChanged) {
19
+ isFirstRender.current = false; // Mark that the first render has passed
20
+ previousDependenciesRef.current = dependencies; // Update dependencies reference
21
+ return effect();
22
+ }
23
+ // eslint-disable-next-line react-hooks/exhaustive-deps
24
+ }, [hasChanged]); // Depend only on the change detection flag
25
+ }
26
+ ;
27
+ //# sourceMappingURL=useDeepCompareEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useRef","isEqual","useDeepCompareEffect","effect","dependencies","previousDependenciesRef","isFirstRender","hasChanged","current","useEffect"],"sourceRoot":"../../../src","sources":["utils/useDeepCompareEffect.ts"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,MAAM,QAAQ,OAAO;AACrC,OAAOC,OAAO,MAAM,gBAAgB;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,oBAAoBA,CAC1CC,MAA4B,EAC5BC,YAAmB,EACnB;EACA,MAAMC,uBAAuB,GAAGL,MAAM,CAAQ,CAAC;EAC/C,MAAMM,aAAa,GAAGN,MAAM,CAAC,IAAI,CAAC;EAElC,MAAMO,UAAU,GACdD,aAAa,CAACE,OAAO,IAAI,CAACP,OAAO,CAACI,uBAAuB,CAACG,OAAO,EAAEJ,YAAY,CAAC;EAElFL,KAAK,CAACU,SAAS,CAAC,MAAM;IACpB,IAAIF,UAAU,EAAE;MACdD,aAAa,CAACE,OAAO,GAAG,KAAK,CAAC,CAAC;MAC/BH,uBAAuB,CAACG,OAAO,GAAGJ,YAAY,CAAC,CAAC;MAChD,OAAOD,MAAM,CAAC,CAAC;IACjB;IACA;EACF,CAAC,EAAE,CAACI,UAAU,CAAC,CAAC,CAAC,CAAC;AACpB;AAAC","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"}
@@ -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 dependencies The dependencies array to compare deeply.
8
+ */
9
+ export default function useDeepCompareEffect(effect: React.EffectCallback, dependencies: any[]): 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,KAAiB,MAAM,OAAO,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,MAAM,EAAE,KAAK,CAAC,cAAc,EAC5B,YAAY,EAAE,GAAG,EAAE,QAgBpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-tree-multi-select",
3
- "version": "1.6.0",
3
+ "version": "1.7.0-beta.1",
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",
@@ -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);
@@ -0,0 +1,29 @@
1
+ import React, { useRef } 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 dependencies The dependencies array to compare deeply.
10
+ */
11
+ export default function useDeepCompareEffect(
12
+ effect: React.EffectCallback,
13
+ dependencies: any[]
14
+ ) {
15
+ const previousDependenciesRef = useRef<any[]>();
16
+ const isFirstRender = useRef(true);
17
+
18
+ const hasChanged =
19
+ isFirstRender.current || !isEqual(previousDependenciesRef.current, dependencies);
20
+
21
+ React.useEffect(() => {
22
+ if (hasChanged) {
23
+ isFirstRender.current = false; // Mark that the first render has passed
24
+ previousDependenciesRef.current = dependencies; // Update dependencies reference
25
+ return effect();
26
+ }
27
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
+ }, [hasChanged]); // Depend only on the change detection flag
29
+ };