react-native-tree-multi-select 1.5.0-beta.1 → 1.5.0-beta.3
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 +16 -4
- package/lib/commonjs/TreeView.js +4 -4
- package/lib/commonjs/TreeView.js.map +1 -1
- package/lib/commonjs/components/NodeList.js +3 -3
- package/lib/commonjs/components/NodeList.js.map +1 -1
- package/lib/commonjs/helpers/expandCollapse.helper.js +40 -95
- package/lib/commonjs/helpers/expandCollapse.helper.js.map +1 -1
- package/lib/commonjs/helpers/toggleCheckbox.helper.js +125 -111
- package/lib/commonjs/helpers/toggleCheckbox.helper.js.map +1 -1
- package/lib/commonjs/store/treeView.store.js +6 -6
- package/lib/commonjs/store/treeView.store.js.map +1 -1
- package/lib/module/TreeView.js +4 -4
- package/lib/module/TreeView.js.map +1 -1
- package/lib/module/components/NodeList.js +3 -3
- package/lib/module/components/NodeList.js.map +1 -1
- package/lib/module/helpers/expandCollapse.helper.js +40 -95
- package/lib/module/helpers/expandCollapse.helper.js.map +1 -1
- package/lib/module/helpers/toggleCheckbox.helper.js +125 -111
- package/lib/module/helpers/toggleCheckbox.helper.js.map +1 -1
- package/lib/module/store/treeView.store.js +6 -6
- package/lib/module/store/treeView.store.js.map +1 -1
- package/lib/typescript/helpers/expandCollapse.helper.d.ts +4 -4
- package/lib/typescript/helpers/expandCollapse.helper.d.ts.map +1 -1
- package/lib/typescript/helpers/toggleCheckbox.helper.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +2 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/store/treeView.store.d.ts +3 -3
- package/lib/typescript/store/treeView.store.d.ts.map +1 -1
- package/lib/typescript/types/treeView.types.d.ts +2 -2
- package/lib/typescript/types/treeView.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TreeView.tsx +5 -5
- package/src/components/NodeList.tsx +2 -2
- package/src/helpers/expandCollapse.helper.ts +51 -102
- package/src/helpers/toggleCheckbox.helper.ts +135 -112
- package/src/index.tsx +2 -2
- package/src/store/treeView.store.ts +10 -10
- package/src/types/treeView.types.ts +2 -2
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
|
-
[](https://badge.fury.io/js/react-native-tree-multi-select) [](https://github.com/JairajJangle/react-native-tree-multi-select/blob/main/LICENSE) [](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml) [](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml)    [](https://github.com/JairajJangle/react-native-tree-multi-select/issues?q=is%3Aopen+is%3Aissue)  [](https://snack.expo.dev/@futurejj/react-native-tree-multi-select-example)
|
|
5
|
+
[](https://badge.fury.io/js/react-native-tree-multi-select) [](https://github.com/JairajJangle/react-native-tree-multi-select/blob/main/LICENSE) [](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml) [](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml)    [](https://github.com/JairajJangle/react-native-tree-multi-select/issues?q=is%3Aopen+is%3Aissue)  [](https://snyk.io/test/github/jairajjangle/react-native-tree-multi-select) [](https://snack.expo.dev/@futurejj/react-native-tree-multi-select-example)
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -35,6 +35,18 @@ Dependencies that need to be installed for this library to work:
|
|
|
35
35
|
|
|
36
36
|
Make sure to follow the native-related installation instructions for these dependencies.
|
|
37
37
|
|
|
38
|
+
## **Highlighted Features**
|
|
39
|
+
|
|
40
|
+
- ⚡ **Fast**: Designed with performance in mind for smooth scrolling and quick selections.
|
|
41
|
+
- 🛠️ **Highly Customizable**: Modify styles, behavior, and use your custom list component to suit your application's needs.
|
|
42
|
+
- 🔍 **Filterable**: Quickly filter through tree nodes and option to select and un-select only the filtered tree nodes.
|
|
43
|
+
- ✅ **Well Tested**: Comprehensive test coverage to ensure reliability and stability.
|
|
44
|
+
- 📚 **Well Documented**: Detailed documentation to get you started and an example app to demo all the features.
|
|
45
|
+
- 🌳 **Multi-Level Selection**: Select individual nodes or entire branches with ease.
|
|
46
|
+
- 📦 **Supports Large Datasets**: Efficiently handles large trees without much performance degradation.
|
|
47
|
+
- 🔒 **TypeScript Support**: Full TypeScript support for better developer experience.
|
|
48
|
+
- 💻 **Cross-Platform**: Works seamlessly across iOS, Android, and web (with React Native Web).
|
|
49
|
+
|
|
38
50
|
## Usage
|
|
39
51
|
|
|
40
52
|
```tsx
|
|
@@ -110,7 +122,7 @@ export function TreeViewUsageExample(){
|
|
|
110
122
|
| `onExpand` | `(expandedIds: string[]) => void` | No | Callback when a node is expanded |
|
|
111
123
|
| `preselectedIds` | `string[]` | No | An array of `id`s that should be pre-selected |
|
|
112
124
|
| `preExpandedIds` | `string[]` | No | An array of `id`s that should be pre-expanded |
|
|
113
|
-
| `
|
|
125
|
+
| `selectionPropagation` | [SelectionPropagation](#selectionpropagation) | No | Control Selection Propagation Behavior. Choose whether you want to auto-select children or parents. |
|
|
114
126
|
| `indentationMultiplier` | `number` | No | Indentation (`marginStart`) per level (defaults to 15) |
|
|
115
127
|
| `treeFlashListProps` | [TreeFlatListProps](#treeflatlistprops) | No | Props for the flash list |
|
|
116
128
|
| `checkBoxViewStyleProps` | [BuiltInCheckBoxViewStyleProps](#builtincheckboxviewstyleprops) | No | Props for the checkbox view |
|
|
@@ -162,7 +174,7 @@ export function TreeViewUsageExample(){
|
|
|
162
174
|
|
|
163
175
|
---
|
|
164
176
|
|
|
165
|
-
####
|
|
177
|
+
#### SelectionPropagation
|
|
166
178
|
|
|
167
179
|
| Property | Type | Required | Description |
|
|
168
180
|
| ------------ | --------- | -------- | ------------------------------------------------------------ |
|
|
@@ -250,7 +262,7 @@ See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the
|
|
|
250
262
|
|
|
251
263
|
MIT
|
|
252
264
|
|
|
253
|
-
## Support the project
|
|
265
|
+
## 🙏 Support the project
|
|
254
266
|
|
|
255
267
|
<p align="center" valign="center">
|
|
256
268
|
<a href="https://liberapay.com/FutureJJ/donate">
|
package/lib/commonjs/TreeView.js
CHANGED
|
@@ -18,7 +18,7 @@ const _TreeView = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
18
18
|
data,
|
|
19
19
|
onCheck,
|
|
20
20
|
onExpand,
|
|
21
|
-
|
|
21
|
+
selectionPropagation,
|
|
22
22
|
preselectedIds = [],
|
|
23
23
|
preExpandedIds = [],
|
|
24
24
|
treeFlashListProps,
|
|
@@ -39,7 +39,7 @@ const _TreeView = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
39
39
|
updateSearchKeys,
|
|
40
40
|
checked,
|
|
41
41
|
indeterminate,
|
|
42
|
-
|
|
42
|
+
setSelectionPropagation,
|
|
43
43
|
cleanUpTreeViewStore
|
|
44
44
|
} = (0, _treeView.useTreeViewStore)((0, _shallow.useShallow)(state => ({
|
|
45
45
|
expanded: state.expanded,
|
|
@@ -51,7 +51,7 @@ const _TreeView = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
51
51
|
updateSearchKeys: state.updateSearchKeys,
|
|
52
52
|
checked: state.checked,
|
|
53
53
|
indeterminate: state.indeterminate,
|
|
54
|
-
|
|
54
|
+
setSelectionPropagation: state.setSelectionPropagation,
|
|
55
55
|
cleanUpTreeViewStore: state.cleanUpTreeViewStore
|
|
56
56
|
})));
|
|
57
57
|
_react.default.useImperativeHandle(ref, () => ({
|
|
@@ -70,7 +70,7 @@ const _TreeView = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
70
70
|
const prevSearchText = (0, _usePreviousState.default)(searchText);
|
|
71
71
|
_react.default.useEffect(() => {
|
|
72
72
|
updateInitialTreeViewData(data);
|
|
73
|
-
if (
|
|
73
|
+
if (selectionPropagation) setSelectionPropagation(selectionPropagation);
|
|
74
74
|
(0, _helpers.initializeNodeMaps)(data);
|
|
75
75
|
|
|
76
76
|
// Check any pre-selected nodes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_NodeList","_helpers","_treeView","_usePreviousState","_shallow","_jsxRuntime","e","__esModule","default","_TreeView","React","forwardRef","props","ref","data","onCheck","onExpand","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_NodeList","_helpers","_treeView","_usePreviousState","_shallow","_jsxRuntime","e","__esModule","default","_TreeView","React","forwardRef","props","ref","data","onCheck","onExpand","selectionPropagation","preselectedIds","preExpandedIds","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","searchText","updateSearchText","updateSearchKeys","checked","indeterminate","setSelectionPropagation","cleanUpTreeViewStore","useTreeViewStore","useShallow","state","useImperativeHandle","selectAll","unselectAll","selectAllFiltered","unselectAllFiltered","expandAll","collapseAll","expandNodes","collapseNodes","selectNodes","unselectNodes","setSearchText","prevSearchText","usePreviousState","useEffect","initializeNodeMaps","toggleCheckboxes","ids","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":[]}
|
|
@@ -71,11 +71,11 @@ function _NodeList(props) {
|
|
|
71
71
|
removeClippedSubviews: true,
|
|
72
72
|
keyboardShouldPersistTaps: "handled",
|
|
73
73
|
drawDistance: 50,
|
|
74
|
-
data: flattenedFilteredNodes,
|
|
75
|
-
renderItem: nodeRenderer,
|
|
76
74
|
ListHeaderComponent: /*#__PURE__*/(0, _jsxRuntime.jsx)(HeaderFooterView, {}),
|
|
77
75
|
ListFooterComponent: /*#__PURE__*/(0, _jsxRuntime.jsx)(HeaderFooterView, {}),
|
|
78
|
-
...treeFlashListProps
|
|
76
|
+
...treeFlashListProps,
|
|
77
|
+
data: flattenedFilteredNodes,
|
|
78
|
+
renderItem: nodeRenderer
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_flashList","_treeView","_helpers","_CheckboxView","_CustomExpandCollapseIcon","_treeView2","_shallow","_jsxRuntime","e","__esModule","default","NodeList","React","memo","_NodeList","_default","exports","props","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","initialTreeViewData","updateInnerMostChildrenIds","searchKeys","searchText","useTreeViewStore","useShallow","state","filteredTree","useMemo","getFilteredTreeData","trim","toLowerCase","flattenedFilteredNodes","getFlattenedTreeData","useEffect","updatedInnerMostChildrenIds","getInnerMostChildrenIdsInTree","nodeRenderer","useCallback","item","jsx","Node","node","level","FlashList","estimatedItemSize","removeClippedSubviews","keyboardShouldPersistTaps","drawDistance","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_flashList","_treeView","_helpers","_CheckboxView","_CustomExpandCollapseIcon","_treeView2","_shallow","_jsxRuntime","e","__esModule","default","NodeList","React","memo","_NodeList","_default","exports","props","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","initialTreeViewData","updateInnerMostChildrenIds","searchKeys","searchText","useTreeViewStore","useShallow","state","filteredTree","useMemo","getFilteredTreeData","trim","toLowerCase","flattenedFilteredNodes","getFlattenedTreeData","useEffect","updatedInnerMostChildrenIds","getInnerMostChildrenIdsInTree","nodeRenderer","useCallback","item","jsx","Node","node","level","FlashList","estimatedItemSize","removeClippedSubviews","keyboardShouldPersistTaps","drawDistance","ListHeaderComponent","HeaderFooterView","ListFooterComponent","data","renderItem","View","style","styles","defaultHeaderFooter","getValue","isChecked","isIndeterminate","_Node","defaultIndentationMultiplier","CustomExpandCollapseIcon","CheckboxView","TouchableOpacity","isExpanded","value","has","id","checked","indeterminate","_onToggleExpand","handleToggleExpand","_onCheck","toggleCheckboxes","jsxs","nodeCheckboxAndArrowRow","paddingStart","children","text","name","onValueChange","length","nodeExpandableArrowTouchable","onPress","checkedValue","onCheck","onExpand","StyleSheet","create","padding","flex","flexDirection","alignItems","minWidth"],"sourceRoot":"../../../src","sources":["components/NodeList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,52 +19,37 @@ var _treeView = require("../store/treeView.store");
|
|
|
19
19
|
*/
|
|
20
20
|
function handleToggleExpand(id) {
|
|
21
21
|
const {
|
|
22
|
-
initialTreeViewData,
|
|
23
22
|
expanded,
|
|
24
|
-
updateExpanded
|
|
23
|
+
updateExpanded,
|
|
24
|
+
nodeMap
|
|
25
25
|
} = _treeView.useTreeViewStore.getState();
|
|
26
26
|
|
|
27
27
|
// Create a new Set based on the current expanded state
|
|
28
28
|
const newExpanded = new Set(expanded);
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Recursively deletes a node and its descendants from the expanded set.
|
|
32
|
-
*
|
|
33
|
-
* @param node - The tree node to start deleting from.
|
|
34
|
-
*/
|
|
35
|
-
function deleteChildrenFromExpanded(node) {
|
|
36
|
-
if (node.children) {
|
|
37
|
-
for (let child of node.children) {
|
|
38
|
-
newExpanded.delete(child.id);
|
|
39
|
-
deleteChildrenFromExpanded(child);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Find the node to expand or collapse
|
|
45
|
-
const node = findNode(initialTreeViewData, id);
|
|
46
29
|
if (expanded.has(id)) {
|
|
47
30
|
// If the node is currently expanded, collapse it and its descendants
|
|
48
31
|
newExpanded.delete(id);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
32
|
+
|
|
33
|
+
// Use an iterative approach to remove all descendants from the expanded set
|
|
34
|
+
const stack = [id];
|
|
35
|
+
while (stack.length > 0) {
|
|
36
|
+
const currentId = stack.pop();
|
|
37
|
+
const node = nodeMap.get(currentId);
|
|
38
|
+
if (node && node.children) {
|
|
39
|
+
for (const child of node.children) {
|
|
40
|
+
newExpanded.delete(child.id);
|
|
41
|
+
stack.push(child.id);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
58
44
|
}
|
|
59
45
|
} else {
|
|
60
46
|
// If the node is currently collapsed, expand it
|
|
61
47
|
newExpanded.add(id);
|
|
62
48
|
}
|
|
63
49
|
|
|
64
|
-
//
|
|
50
|
+
// Update the expanded state
|
|
65
51
|
updateExpanded(newExpanded);
|
|
66
52
|
}
|
|
67
|
-
;
|
|
68
53
|
|
|
69
54
|
/**
|
|
70
55
|
* Expand all nodes in the tree.
|
|
@@ -78,7 +63,6 @@ function expandAll() {
|
|
|
78
63
|
const newExpanded = new Set(nodeMap.keys());
|
|
79
64
|
updateExpanded(newExpanded);
|
|
80
65
|
}
|
|
81
|
-
;
|
|
82
66
|
|
|
83
67
|
/**
|
|
84
68
|
* Collapse all nodes in the tree.
|
|
@@ -87,16 +71,14 @@ function collapseAll() {
|
|
|
87
71
|
const {
|
|
88
72
|
updateExpanded
|
|
89
73
|
} = _treeView.useTreeViewStore.getState();
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
updateExpanded(newExpanded);
|
|
74
|
+
// Clear the expanded state
|
|
75
|
+
updateExpanded(new Set());
|
|
93
76
|
}
|
|
94
|
-
;
|
|
95
77
|
|
|
96
78
|
/**
|
|
97
79
|
* Expand tree nodes of given ids. If the id is of a child, it also expands
|
|
98
|
-
*
|
|
99
|
-
* @param ids Ids of nodes to expand.
|
|
80
|
+
* its ancestors up to the root.
|
|
81
|
+
* @param ids - Ids of nodes to expand.
|
|
100
82
|
*/
|
|
101
83
|
function expandNodes(ids) {
|
|
102
84
|
const {
|
|
@@ -105,29 +87,13 @@ function expandNodes(ids) {
|
|
|
105
87
|
childToParentMap
|
|
106
88
|
} = _treeView.useTreeViewStore.getState();
|
|
107
89
|
const newExpanded = new Set(expanded);
|
|
108
|
-
const
|
|
109
|
-
|
|
90
|
+
const processedIds = new Set();
|
|
110
91
|
ids.forEach(id => {
|
|
111
|
-
newExpanded.add(id); // Start by adding the node ID to the set
|
|
112
92
|
let currentId = id;
|
|
113
|
-
while (currentId &&
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
ignore because this condition is just added to satisfy
|
|
118
|
-
typescript type check as parentId will never be undefined if it is already in
|
|
119
|
-
childToParentMap Map
|
|
120
|
-
*/
|
|
121
|
-
if (parentId) {
|
|
122
|
-
/* istanbul ignore else: nothing to be done in else block */
|
|
123
|
-
if (!newExpanded.has(parentId)) {
|
|
124
|
-
newExpanded.add(parentId); // Add the parent ID only if not already processed
|
|
125
|
-
processedParents.add(parentId);
|
|
126
|
-
}
|
|
127
|
-
currentId = parentId; // Move up to the next parent
|
|
128
|
-
} else {
|
|
129
|
-
break; // Break the loop if there's no further parent
|
|
130
|
-
}
|
|
93
|
+
while (currentId && !processedIds.has(currentId)) {
|
|
94
|
+
newExpanded.add(currentId);
|
|
95
|
+
processedIds.add(currentId);
|
|
96
|
+
currentId = childToParentMap.get(currentId);
|
|
131
97
|
}
|
|
132
98
|
});
|
|
133
99
|
updateExpanded(newExpanded);
|
|
@@ -135,8 +101,8 @@ function expandNodes(ids) {
|
|
|
135
101
|
|
|
136
102
|
/**
|
|
137
103
|
* Collapse tree nodes of given ids. If the id is of a parent, it also collapses
|
|
138
|
-
*
|
|
139
|
-
* @param ids Ids of nodes to collapse.
|
|
104
|
+
* its descendants.
|
|
105
|
+
* @param ids - Ids of nodes to collapse.
|
|
140
106
|
*/
|
|
141
107
|
function collapseNodes(ids) {
|
|
142
108
|
const {
|
|
@@ -146,46 +112,25 @@ function collapseNodes(ids) {
|
|
|
146
112
|
} = _treeView.useTreeViewStore.getState();
|
|
147
113
|
const newExpanded = new Set(expanded);
|
|
148
114
|
|
|
149
|
-
//
|
|
150
|
-
const deleteChildrenFromExpanded =
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
});
|
|
115
|
+
// Use an iterative approach to remove all descendants from the expanded set
|
|
116
|
+
const deleteChildrenFromExpanded = nodeId => {
|
|
117
|
+
const stack = [nodeId];
|
|
118
|
+
while (stack.length > 0) {
|
|
119
|
+
const currentId = stack.pop();
|
|
120
|
+
const node = nodeMap.get(currentId);
|
|
121
|
+
if (node && node.children) {
|
|
122
|
+
for (const child of node.children) {
|
|
123
|
+
newExpanded.delete(child.id);
|
|
124
|
+
stack.push(child.id);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
163
128
|
};
|
|
164
129
|
ids.forEach(id => {
|
|
165
|
-
// Remove the node ID from the set and all its
|
|
130
|
+
// Remove the node ID from the set and all its descendants
|
|
166
131
|
newExpanded.delete(id);
|
|
167
132
|
deleteChildrenFromExpanded(id);
|
|
168
133
|
});
|
|
169
134
|
updateExpanded(newExpanded);
|
|
170
135
|
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Finds a node in the tree by its ID.
|
|
174
|
-
*
|
|
175
|
-
* @param nodes - The array of tree nodes to search through.
|
|
176
|
-
* @returns The found tree node, or undefined if not found.
|
|
177
|
-
*/
|
|
178
|
-
function findNode(nodes, parentId) {
|
|
179
|
-
for (let node of nodes) {
|
|
180
|
-
if (node.id === parentId) {
|
|
181
|
-
return node;
|
|
182
|
-
} else if (node.children) {
|
|
183
|
-
const found = findNode(node.children, parentId);
|
|
184
|
-
if (found) {
|
|
185
|
-
return found;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return undefined;
|
|
190
|
-
}
|
|
191
136
|
//# sourceMappingURL=expandCollapse.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_treeView","require","handleToggleExpand","id","
|
|
1
|
+
{"version":3,"names":["_treeView","require","handleToggleExpand","id","expanded","updateExpanded","nodeMap","useTreeViewStore","getState","newExpanded","Set","has","delete","stack","length","currentId","pop","node","get","children","child","push","add","expandAll","keys","collapseAll","expandNodes","ids","childToParentMap","processedIds","forEach","collapseNodes","deleteChildrenFromExpanded","nodeId"],"sourceRoot":"../../../src","sources":["helpers/expandCollapse.helper.ts"],"mappings":"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","ignoreList":[]}
|