react-native-tree-multi-select 1.8.1 → 1.9.0
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 +53 -25
- package/lib/commonjs/TreeView.js +17 -6
- package/lib/commonjs/TreeView.js.map +1 -1
- package/lib/commonjs/components/NodeList.js +26 -10
- package/lib/commonjs/components/NodeList.js.map +1 -1
- package/lib/commonjs/handlers/ScrollToNodeHandler.js +169 -0
- package/lib/commonjs/handlers/ScrollToNodeHandler.js.map +1 -0
- package/lib/commonjs/helpers/expandCollapse.helper.js +7 -1
- package/lib/commonjs/helpers/expandCollapse.helper.js.map +1 -1
- package/lib/module/TreeView.js +18 -5
- package/lib/module/TreeView.js.map +1 -1
- package/lib/module/components/NodeList.js +27 -11
- package/lib/module/components/NodeList.js.map +1 -1
- package/lib/module/handlers/ScrollToNodeHandler.js +165 -0
- package/lib/module/handlers/ScrollToNodeHandler.js.map +1 -0
- package/lib/module/helpers/expandCollapse.helper.js +7 -1
- package/lib/module/helpers/expandCollapse.helper.js.map +1 -1
- package/lib/typescript/TreeView.d.ts.map +1 -1
- package/lib/typescript/components/NodeList.d.ts.map +1 -1
- package/lib/typescript/handlers/ScrollToNodeHandler.d.ts +58 -0
- package/lib/typescript/handlers/ScrollToNodeHandler.d.ts.map +1 -0
- package/lib/typescript/helpers/expandCollapse.helper.d.ts +3 -1
- package/lib/typescript/helpers/expandCollapse.helper.d.ts.map +1 -1
- package/lib/typescript/types/treeView.types.d.ts +6 -1
- package/lib/typescript/types/treeView.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TreeView.tsx +182 -152
- package/src/components/NodeList.tsx +31 -11
- package/src/handlers/ScrollToNodeHandler.tsx +222 -0
- package/src/helpers/expandCollapse.helper.ts +16 -1
- package/src/types/treeView.types.ts +15 -1
package/README.md
CHANGED
|
@@ -115,35 +115,45 @@ export function TreeViewUsageExample(){
|
|
|
115
115
|
|
|
116
116
|
### Properties
|
|
117
117
|
|
|
118
|
+
#### TreeViewProps`<ID = string>`
|
|
119
|
+
|
|
120
|
+
*The `TreeViewProps` interface defines the properties for the tree view component.*
|
|
121
|
+
|
|
118
122
|
| Property | Type | Required | Description |
|
|
119
123
|
| ---------------------------------- | ------------------------------------------------------------ | -------- | ------------------------------------------------------------ |
|
|
120
|
-
| `data` | [TreeNode](#treenode)
|
|
121
|
-
| `onCheck` | `(checkedIds:
|
|
122
|
-
| `onExpand` | `(expandedIds:
|
|
123
|
-
| `preselectedIds` | `
|
|
124
|
-
| `preExpandedIds` | `
|
|
124
|
+
| `data` | [TreeNode](#treenode)`<ID = string>[]` | Yes | An array of `TreeNode` objects |
|
|
125
|
+
| `onCheck` | `(checkedIds: ID[], indeterminateIds: ID[]) => void` | No | Callback when a checkbox state changes |
|
|
126
|
+
| `onExpand` | `(expandedIds: ID[]) => void` | No | Callback when a node is expanded |
|
|
127
|
+
| `preselectedIds` | `ID[]` | No | An array of `id`s that should be pre-selected |
|
|
128
|
+
| `preExpandedIds` | `ID[]` | No | An array of `id`s that should be pre-expanded |
|
|
125
129
|
| `selectionPropagation` | [SelectionPropagation](#selectionpropagation) | No | Control Selection Propagation Behavior. Choose whether you want to auto-select children or parents. |
|
|
130
|
+
| `initialScrollNodeID` | `ID` | No | Set node ID to scroll to intiially on tree view render. |
|
|
126
131
|
| `indentationMultiplier` | `number` | No | Indentation (`marginStart`) per level (defaults to 15) |
|
|
127
132
|
| `treeFlashListProps` | [TreeFlatListProps](#treeflatlistprops) | No | Props for the flash list |
|
|
128
133
|
| `checkBoxViewStyleProps` | [BuiltInCheckBoxViewStyleProps](#builtincheckboxviewstyleprops) | No | Props for the checkbox view |
|
|
129
134
|
| `CheckboxComponent` | `ComponentType<`[CheckBoxViewProps](#checkboxviewprops)`>` | No | A custom checkbox component. Defaults to React Native Paper's Checkbox |
|
|
130
135
|
| `ExpandCollapseIconComponent` | `ComponentType<`[ExpandIconProps](#expandiconprops)`>` | No | A custom expand/collapse icon component |
|
|
131
136
|
| `ExpandCollapseTouchableComponent` | `ComponentType<`[TouchableOpacityProps](https://reactnative.dev/docs/touchableopacity#props)`>` | No | A custom expand/collapse touchable component |
|
|
132
|
-
| `CustomNodeRowComponent` | `React.ComponentType<`[NodeRowProps](#noderowprops)
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
137
|
+
| `CustomNodeRowComponent` | `React.ComponentType<`[NodeRowProps](#noderowprops)`<ID>>` | No | Custom row item component |
|
|
138
|
+
|
|
139
|
+
##### Notes
|
|
140
|
+
|
|
141
|
+
- The `ID` type parameter allows flexibility in specifying the type of node identifiers (e.g., `string`, `number`, or custom types).
|
|
142
|
+
- ℹ️ If `CustomNodeRowComponent` is provided then below props are not applied:
|
|
143
|
+
1. `indentationMultiplier`
|
|
144
|
+
1. `checkBoxViewStyleProps`
|
|
145
|
+
1. `CheckboxComponent`
|
|
146
|
+
1. `BuiltInCheckBoxViewStyleProps`
|
|
147
|
+
1. `ExpandCollapseIconComponent`
|
|
148
|
+
1. `ExpandCollapseTouchableComponent`.
|
|
149
|
+
|
|
150
|
+
- ⚠️ If the tree view doesn't scroll if rendered in a complex nested scroll view/s then try setting the `renderScrollComponent` value in `treeFlashListProps` to `ScrollView` from `react-native-gesture-handler`.
|
|
143
151
|
|
|
144
152
|
---
|
|
145
153
|
|
|
146
|
-
#### TreeNode
|
|
154
|
+
#### TreeNode`<ID = string>`
|
|
155
|
+
|
|
156
|
+
*The `TreeNode` interface defines the properties for individual item of the tree view*
|
|
147
157
|
|
|
148
158
|
| Property | Type | Required | Description |
|
|
149
159
|
| --------------- | ------------------------ | -------- | ------------------------------------------------------------ |
|
|
@@ -154,7 +164,9 @@ export function TreeViewUsageExample(){
|
|
|
154
164
|
|
|
155
165
|
---
|
|
156
166
|
|
|
157
|
-
#### TreeViewRef
|
|
167
|
+
#### TreeViewRef`<ID = string>`
|
|
168
|
+
|
|
169
|
+
*The `TreeViewRef` interface defines the properties for the ref object of the tree view component*
|
|
158
170
|
|
|
159
171
|
| Property | Type | Description |
|
|
160
172
|
| --------------------- | ----------------------------------------------------- | ------------------------------------------------------------ |
|
|
@@ -164,16 +176,30 @@ export function TreeViewUsageExample(){
|
|
|
164
176
|
| `unselectAllFiltered` | `() => void` | Unselects all **filtered** nodes |
|
|
165
177
|
| `expandAll` | `() => void` | Expands all nodes |
|
|
166
178
|
| `collapseAll` | `() => void` | Collapses all nodes |
|
|
167
|
-
| `expandNodes` | `(ids:
|
|
168
|
-
| `collapseNodes` | `(ids:
|
|
169
|
-
| `selectNodes` | `(ids:
|
|
170
|
-
| `unSelectNodes` | `(ids:
|
|
179
|
+
| `expandNodes` | `(ids: ID[]) => void` | Expands specified nodes |
|
|
180
|
+
| `collapseNodes` | `(ids: ID[]) => void` | Collapses specified nodes |
|
|
181
|
+
| `selectNodes` | `(ids: ID[]) => void` | Selects specified nodes |
|
|
182
|
+
| `unSelectNodes` | `(ids: ID[]) => void` | Unselects specified nodes |
|
|
171
183
|
| `setSearchText` | `(searchText: string, searchKeys?: string[]) => void` | Set the search text and optionally the search keys. Default search key is "name"<br /><br />Recommended to call this inside a debounced function if you find any performance issue otherwise. |
|
|
184
|
+
| `scrollToNodeID` | `(params: `[ScrollToNodeParams](#scrolltonodeparams)`<ID>) => void;` | Scrolls the tree view to the node of the specified ID. |
|
|
185
|
+
| `getChildToParentMap` | `() => Map<ID, ID>` | Get the child to parent tree view map. |
|
|
186
|
+
|
|
187
|
+
#### ScrollToNodeParams
|
|
188
|
+
| Property | Type | Required | Description |
|
|
189
|
+
| -------------------- | --------- | -------- | ------------------------------------------------------------ |
|
|
190
|
+
| `nodeId` | `ID` | Yes | Node ID to expand and scroll to. |
|
|
191
|
+
| `expandScrolledNode` | `boolean` | No | Whether to expand scrolled node to reveal its children. Defaults to `false`. |
|
|
192
|
+
| `animated` | `boolean` | No | Control if scrolling should be animated. |
|
|
193
|
+
| `viewOffset` | `number` | No | A fixed number of pixels to offset the scrolled node position. |
|
|
194
|
+
| `viewPosition` | `number` | No | A value of `0` places the scrolled node item at the top, `1` at the bottom, and `0.5` centered in the middle. |
|
|
195
|
+
|
|
172
196
|
|
|
173
197
|
---
|
|
174
198
|
|
|
175
199
|
#### SelectionPropagation
|
|
176
200
|
|
|
201
|
+
*The `SelectionPropagation` interface defines the selection propagation behaviour of the tree view*
|
|
202
|
+
|
|
177
203
|
| Property | Type | Required | Description |
|
|
178
204
|
| ------------ | --------- | -------- | ------------------------------------------------------------ |
|
|
179
205
|
| `toChildren` | `boolean` | No | Whether to propagate selection to children nodes. Defaults to `true`. |
|
|
@@ -183,12 +209,14 @@ export function TreeViewUsageExample(){
|
|
|
183
209
|
|
|
184
210
|
#### TreeFlatListProps
|
|
185
211
|
|
|
186
|
-
All properties of `FlashListProps`(from `@shopify/flash-list`) except for `data` and `renderItem
|
|
212
|
+
*All properties of `FlashListProps`(from `@shopify/flash-list`) except for `data` and `renderItem`*
|
|
187
213
|
|
|
188
214
|
---
|
|
189
215
|
|
|
190
216
|
#### BuiltInCheckBoxViewStyleProps
|
|
191
217
|
|
|
218
|
+
*This interface allows you to customize the style of the built-in checkbox component that is rendered in the tree view by default. Overriden if `CustomNodeRowComponent` is used.*
|
|
219
|
+
|
|
192
220
|
| Property | Type | Required | Description |
|
|
193
221
|
| -------------------------- | -------------------------------- | -------- | ------------------------------------------------------ |
|
|
194
222
|
| `outermostParentViewStyle` | `StyleProp<ViewStyle>` | No | Optional style modifier for the outermost parent view. |
|
|
@@ -225,7 +253,7 @@ Type: `boolean` OR `"indeterminate"`
|
|
|
225
253
|
|
|
226
254
|
---
|
|
227
255
|
|
|
228
|
-
#### NodeRowProps
|
|
256
|
+
#### NodeRowProps`<ID = string>`
|
|
229
257
|
|
|
230
258
|
| Property | Type | Required | Description |
|
|
231
259
|
| -------------- | --------------------------------------- | -------- | ------------------------------------------------------- |
|
|
@@ -246,7 +274,7 @@ Type: `boolean` OR `"indeterminate"`
|
|
|
246
274
|
- [ ] Prop to disable certain nodes from getting checked
|
|
247
275
|
- [x] Ref function to programatically expand/collapse a certain node
|
|
248
276
|
- [x] Ref function to programatically un/check a certain node
|
|
249
|
-
- [
|
|
277
|
+
- [x] Ref function to auto-scroll to a certain node's position - available in 1.9.0+
|
|
250
278
|
|
|
251
279
|
If you do not see what you want in the planned feature list, raise a feature request.
|
|
252
280
|
|
package/lib/commonjs/TreeView.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.TreeView = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _NodeList = _interopRequireDefault(require("./components/NodeList"));
|
|
10
10
|
var _helpers = require("./helpers");
|
|
@@ -16,8 +16,6 @@ var _useDeepCompareEffect = _interopRequireDefault(require("./utils/useDeepCompa
|
|
|
16
16
|
var _typedMemo = require("./utils/typedMemo");
|
|
17
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
|
-
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); }
|
|
20
|
-
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; }
|
|
21
19
|
function _innerTreeView(props, ref) {
|
|
22
20
|
const {
|
|
23
21
|
data,
|
|
@@ -26,6 +24,7 @@ function _innerTreeView(props, ref) {
|
|
|
26
24
|
selectionPropagation,
|
|
27
25
|
preselectedIds = [],
|
|
28
26
|
preExpandedIds = [],
|
|
27
|
+
initialScrollNodeID,
|
|
29
28
|
treeFlashListProps,
|
|
30
29
|
checkBoxViewStyleProps,
|
|
31
30
|
indentationMultiplier,
|
|
@@ -34,7 +33,7 @@ function _innerTreeView(props, ref) {
|
|
|
34
33
|
ExpandCollapseTouchableComponent,
|
|
35
34
|
CustomNodeRowComponent
|
|
36
35
|
} = props;
|
|
37
|
-
const storeId =
|
|
36
|
+
const storeId = _react.default.useMemo(() => _reactNativeUuid.default.v4(), []);
|
|
38
37
|
const {
|
|
39
38
|
expanded,
|
|
40
39
|
updateExpanded,
|
|
@@ -71,8 +70,11 @@ function _innerTreeView(props, ref) {
|
|
|
71
70
|
collapseNodes: ids => (0, _helpers.collapseNodes)(storeId, ids),
|
|
72
71
|
selectNodes: ids => selectNodes(ids),
|
|
73
72
|
unselectNodes: ids => unselectNodes(ids),
|
|
74
|
-
setSearchText
|
|
73
|
+
setSearchText,
|
|
74
|
+
scrollToNodeID,
|
|
75
|
+
getChildToParentMap
|
|
75
76
|
}));
|
|
77
|
+
const scrollToNodeHandlerRef = _react.default.useRef(null);
|
|
76
78
|
const prevSearchText = (0, _usePreviousState.default)(searchText);
|
|
77
79
|
(0, _useDeepCompareEffect.default)(() => {
|
|
78
80
|
cleanUpTreeViewStore();
|
|
@@ -84,7 +86,7 @@ function _innerTreeView(props, ref) {
|
|
|
84
86
|
(0, _helpers.toggleCheckboxes)(storeId, preselectedIds, true);
|
|
85
87
|
|
|
86
88
|
// Expand pre-expanded nodes
|
|
87
|
-
(0, _helpers.expandNodes)(storeId, preExpandedIds);
|
|
89
|
+
(0, _helpers.expandNodes)(storeId, [...preExpandedIds, ...(initialScrollNodeID ? [initialScrollNodeID] : [])]);
|
|
88
90
|
}, [data]);
|
|
89
91
|
function selectNodes(ids) {
|
|
90
92
|
(0, _helpers.toggleCheckboxes)(storeId, ids, true);
|
|
@@ -96,6 +98,13 @@ function _innerTreeView(props, ref) {
|
|
|
96
98
|
updateSearchText(text);
|
|
97
99
|
updateSearchKeys(keys);
|
|
98
100
|
}
|
|
101
|
+
function scrollToNodeID(params) {
|
|
102
|
+
scrollToNodeHandlerRef.current?.scrollToNodeID(params);
|
|
103
|
+
}
|
|
104
|
+
function getChildToParentMap() {
|
|
105
|
+
const treeViewStore = (0, _treeView.getTreeViewStore)(storeId);
|
|
106
|
+
return treeViewStore.getState().childToParentMap;
|
|
107
|
+
}
|
|
99
108
|
const getIds = _react.default.useCallback(node => {
|
|
100
109
|
if (!node.children || node.children.length === 0) {
|
|
101
110
|
return [node.id];
|
|
@@ -129,6 +138,8 @@ function _innerTreeView(props, ref) {
|
|
|
129
138
|
}, [cleanUpTreeViewStore]);
|
|
130
139
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_NodeList.default, {
|
|
131
140
|
storeId: storeId,
|
|
141
|
+
scrollToNodeHandlerRef: scrollToNodeHandlerRef,
|
|
142
|
+
initialScrollNodeID: initialScrollNodeID,
|
|
132
143
|
treeFlashListProps: treeFlashListProps,
|
|
133
144
|
checkBoxViewStyleProps: checkBoxViewStyleProps,
|
|
134
145
|
indentationMultiplier: indentationMultiplier,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_NodeList","_helpers","_treeView","_usePreviousState","_shallow","_reactNativeUuid","_useDeepCompareEffect","_typedMemo","_jsxRuntime","e","__esModule","default","_innerTreeView","props","ref","data","onCheck","onExpand","selectionPropagation","preselectedIds","preExpandedIds","initialScrollNodeID","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","storeId","React","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","scrollToNodeID","getChildToParentMap","scrollToNodeHandlerRef","useRef","prevSearchText","usePreviousState","useDeepCompareEffect","initializeNodeMaps","toggleCheckboxes","text","keys","params","current","treeViewStore","getTreeViewStore","getState","childToParentMap","getIds","useCallback","node","children","length","id","flatMap","item","useEffect","Array","from","InteractionManager","runAfterInteractions","Set","jsx","_TreeView","forwardRef","TreeView","exports","typedMemo"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ var _CustomExpandCollapseIcon = require("./CustomExpandCollapseIcon");
|
|
|
14
14
|
var _treeView2 = require("../constants/treeView.constants");
|
|
15
15
|
var _shallow = require("zustand/react/shallow");
|
|
16
16
|
var _typedMemo = require("../utils/typedMemo");
|
|
17
|
+
var _ScrollToNodeHandler = require("../handlers/ScrollToNodeHandler");
|
|
17
18
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
19
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
20
|
const NodeList = (0, _typedMemo.typedMemo)(_NodeList);
|
|
@@ -21,6 +22,8 @@ var _default = exports.default = NodeList;
|
|
|
21
22
|
function _NodeList(props) {
|
|
22
23
|
const {
|
|
23
24
|
storeId,
|
|
25
|
+
scrollToNodeHandlerRef,
|
|
26
|
+
initialScrollNodeID,
|
|
24
27
|
treeFlashListProps,
|
|
25
28
|
checkBoxViewStyleProps,
|
|
26
29
|
indentationMultiplier,
|
|
@@ -42,6 +45,8 @@ function _NodeList(props) {
|
|
|
42
45
|
searchKeys: state.searchKeys,
|
|
43
46
|
searchText: state.searchText
|
|
44
47
|
})));
|
|
48
|
+
const flashListRef = _react.default.useRef(null);
|
|
49
|
+
const [initialScrollIndex, setInitialScrollIndex] = _react.default.useState(-1);
|
|
45
50
|
|
|
46
51
|
// First we filter the tree as per the search term and keys
|
|
47
52
|
const filteredTree = _react.default.useMemo(() => (0, _helpers.getFilteredTreeData)(initialTreeViewData, searchText.trim().toLowerCase(), searchKeys), [initialTreeViewData, searchText, searchKeys]);
|
|
@@ -69,16 +74,27 @@ function _NodeList(props) {
|
|
|
69
74
|
CustomNodeRowComponent: CustomNodeRowComponent
|
|
70
75
|
});
|
|
71
76
|
}, [storeId, CheckboxComponent, ExpandCollapseIconComponent, ExpandCollapseTouchableComponent, CustomNodeRowComponent, checkBoxViewStyleProps, indentationMultiplier]);
|
|
72
|
-
return /*#__PURE__*/(0, _jsxRuntime.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
78
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ScrollToNodeHandler.ScrollToNodeHandler, {
|
|
79
|
+
ref: scrollToNodeHandlerRef,
|
|
80
|
+
storeId: storeId,
|
|
81
|
+
flashListRef: flashListRef,
|
|
82
|
+
flattenedFilteredNodes: flattenedFilteredNodes,
|
|
83
|
+
setInitialScrollIndex: setInitialScrollIndex,
|
|
84
|
+
initialScrollNodeID: initialScrollNodeID
|
|
85
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_flashList.FlashList, {
|
|
86
|
+
ref: flashListRef,
|
|
87
|
+
estimatedItemSize: 36,
|
|
88
|
+
initialScrollIndex: initialScrollIndex,
|
|
89
|
+
removeClippedSubviews: true,
|
|
90
|
+
keyboardShouldPersistTaps: "handled",
|
|
91
|
+
drawDistance: 50,
|
|
92
|
+
ListHeaderComponent: /*#__PURE__*/(0, _jsxRuntime.jsx)(HeaderFooterView, {}),
|
|
93
|
+
ListFooterComponent: /*#__PURE__*/(0, _jsxRuntime.jsx)(HeaderFooterView, {}),
|
|
94
|
+
...treeFlashListProps,
|
|
95
|
+
data: flattenedFilteredNodes,
|
|
96
|
+
renderItem: nodeRenderer
|
|
97
|
+
})]
|
|
82
98
|
});
|
|
83
99
|
}
|
|
84
100
|
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_flashList","_treeView","_helpers","_CheckboxView","_CustomExpandCollapseIcon","_treeView2","_shallow","_typedMemo","_jsxRuntime","e","__esModule","default","NodeList","typedMemo","_NodeList","_default","exports","props","storeId","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","initialTreeViewData","updateInnerMostChildrenIds","searchKeys","searchText","useTreeViewStore","useShallow","state","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_flashList","_treeView","_helpers","_CheckboxView","_CustomExpandCollapseIcon","_treeView2","_shallow","_typedMemo","_ScrollToNodeHandler","_jsxRuntime","e","__esModule","default","NodeList","typedMemo","_NodeList","_default","exports","props","storeId","scrollToNodeHandlerRef","initialScrollNodeID","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","initialTreeViewData","updateInnerMostChildrenIds","searchKeys","searchText","useTreeViewStore","useShallow","state","flashListRef","React","useRef","initialScrollIndex","setInitialScrollIndex","useState","filteredTree","useMemo","getFilteredTreeData","trim","toLowerCase","flattenedFilteredNodes","getFlattenedTreeData","useEffect","updatedInnerMostChildrenIds","getInnerMostChildrenIdsInTree","nodeRenderer","useCallback","item","jsx","Node","node","level","jsxs","Fragment","children","ScrollToNodeHandler","ref","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","nodeCheckboxAndArrowRow","paddingStart","text","name","onValueChange","length","nodeExpandableArrowTouchable","onPress","checkedValue","onCheck","onExpand","StyleSheet","create","padding","flex","flexDirection","alignItems","minWidth"],"sourceRoot":"../../../src","sources":["components/NodeList.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMA,IAAAE,UAAA,GAAAF,OAAA;AASA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAOA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,yBAAA,GAAAN,OAAA;AACA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA;AACA,IAAAU,oBAAA,GAAAV,OAAA;AAAsE,IAAAW,WAAA,GAAAX,OAAA;AAAA,SAAAD,uBAAAa,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEtE,MAAMG,QAAQ,GAAG,IAAAC,oBAAS,EAACC,SAAS,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAL,OAAA,GACvBC,QAAQ;AAEvB,SAASE,SAASA,CAAKG,KAAwB,EAAE;EAC7C,MAAM;IACFC,OAAO;IAEPC,sBAAsB;IACtBC,mBAAmB;IAEnBC,kBAAkB;IAClBC,sBAAsB;IACtBC,qBAAqB;IAErBC,iBAAiB;IACjBC,2BAA2B;IAC3BC,gCAAgC;IAChCC;EACJ,CAAC,GAAGV,KAAK;EAET,MAAM;IACFW,QAAQ;IACRC,mBAAmB;IACnBC,0BAA0B;IAC1BC,UAAU;IACVC;EACJ,CAAC,GAAG,IAAAC,0BAAgB,EAAKf,OAAO,CAAC,CAAC,IAAAgB,mBAAU,EACxCC,KAAK,KAAK;IACNP,QAAQ,EAAEO,KAAK,CAACP,QAAQ;IACxBC,mBAAmB,EAAEM,KAAK,CAACN,mBAAmB;IAC9CC,0BAA0B,EAAEK,KAAK,CAACL,0BAA0B;IAC5DC,UAAU,EAAEI,KAAK,CAACJ,UAAU;IAC5BC,UAAU,EAAEG,KAAK,CAACH;EACtB,CAAC,CACL,CAAC,CAAC;EAEF,MAAMI,YAAY,GAAGC,cAAK,CAACC,MAAM,CAA8C,IAAI,CAAC;EAEpF,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGH,cAAK,CAACI,QAAQ,CAAS,CAAC,CAAC,CAAC;;EAE9E;EACA,MAAMC,YAAY,GAAGL,cAAK,CAACM,OAAO,CAAC,MAAM,IAAAC,4BAAmB,EACxDf,mBAAmB,EACnBG,UAAU,CAACa,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,EAC/Bf,UACJ,CAAC,EAAE,CAACF,mBAAmB,EAAEG,UAAU,EAAED,UAAU,CAAC,CAAC;;EAEjD;EACA,MAAMgB,sBAAsB,GAAGV,cAAK,CAACM,OAAO,CAAC,MAAM,IAAAK,6BAAoB,EACnEN,YAAY,EACZd,QACJ,CAAC,EAAE,CAACc,YAAY,EAAEd,QAAQ,CAAC,CAAC;;EAE5B;EACAS,cAAK,CAACY,SAAS,CAAC,MAAM;IAClB,MAAMC,2BAA2B,GAAG,IAAAC,sCAA6B,EAC7DT,YACJ,CAAC;IACDZ,0BAA0B,CAACoB,2BAA2B,CAAC;EAC3D,CAAC,EAAE,CAACR,YAAY,EAAEZ,0BAA0B,CAAC,CAAC;EAE9C,MAAMsB,YAAY,GAAGf,cAAK,CAACgB,WAAW,CAAC,CACnC;IAAEC;EAA2C,CAAC,KAC7C;IACD,oBACI,IAAA9C,WAAA,CAAA+C,GAAA,EAACC,IAAI;MACDtC,OAAO,EAAEA,OAAQ;MAEjBuC,IAAI,EAAEH,IAAK;MACXI,KAAK,EAAEJ,IAAI,CAACI,KAAK,IAAI,CAAE;MAEvBpC,sBAAsB,EAAEA,sBAAuB;MAC/CC,qBAAqB,EAAEA,qBAAsB;MAE7CC,iBAAiB,EAAEA,iBAAkB;MACrCC,2BAA2B,EAAEA,2BAA4B;MACzDC,gCAAgC,EAAEA,gCAAiC;MACnEC,sBAAsB,EAAEA;IAAuB,CAClD,CAAC;EAEV,CAAC,EAAE,CACCT,OAAO,EACPM,iBAAiB,EACjBC,2BAA2B,EAC3BC,gCAAgC,EAChCC,sBAAsB,EACtBL,sBAAsB,EACtBC,qBAAqB,CACxB,CAAC;EAEF,oBACI,IAAAf,WAAA,CAAAmD,IAAA,EAAAnD,WAAA,CAAAoD,QAAA;IAAAC,QAAA,gBACI,IAAArD,WAAA,CAAA+C,GAAA,EAAChD,oBAAA,CAAAuD,mBAAmB;MAChBC,GAAG,EAAE5C,sBAAuB;MAC5BD,OAAO,EAAEA,OAAQ;MACjBkB,YAAY,EAAEA,YAAa;MAC3BW,sBAAsB,EAAEA,sBAAuB;MAC/CP,qBAAqB,EAAEA,qBAAsB;MAC7CpB,mBAAmB,EAAEA;IAAoB,CAAE,CAAC,eAEhD,IAAAZ,WAAA,CAAA+C,GAAA,EAACxD,UAAA,CAAAiE,SAAS;MACND,GAAG,EAAE3B,YAAa;MAClB6B,iBAAiB,EAAE,EAAG;MACtB1B,kBAAkB,EAAEA,kBAAmB;MACvC2B,qBAAqB,EAAE,IAAK;MAC5BC,yBAAyB,EAAC,SAAS;MACnCC,YAAY,EAAE,EAAG;MACjBC,mBAAmB,eAAE,IAAA7D,WAAA,CAAA+C,GAAA,EAACe,gBAAgB,IAAE,CAAE;MAC1CC,mBAAmB,eAAE,IAAA/D,WAAA,CAAA+C,GAAA,EAACe,gBAAgB,IAAE,CAAE;MAAA,GACtCjD,kBAAkB;MACtBmD,IAAI,EAAEzB,sBAAuB;MAC7B0B,UAAU,EAAErB;IAAa,CAC5B,CAAC;EAAA,CACJ,CAAC;AAEX;AAAC;AAED,SAASkB,gBAAgBA,CAAA,EAAG;EACxB,oBACI,IAAA9D,WAAA,CAAA+C,GAAA,EAACzD,YAAA,CAAA4E,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC;EAAoB,CAAE,CAAC;AAEnD;AAEA,SAASC,QAAQA,CACbC,SAAkB,EAClBC,eAAwB,EACP;EACjB,IAAIA,eAAe,EAAE;IACjB,OAAO,eAAe;EAC1B,CAAC,MAAM,IAAID,SAAS,EAAE;IAClB,OAAO,IAAI;EACf,CAAC,MAAM;IACH,OAAO,KAAK;EAChB;AACJ;AAEA,MAAMvB,IAAI,GAAG,IAAA3C,oBAAS,EAACoE,KAAK,CAAC;AAC7B,SAASA,KAAKA,CAAKhE,KAAoB,EAAE;EACrC,MAAM;IACFC,OAAO;IAEPuC,IAAI;IACJC,KAAK;IAELpC,sBAAsB;IACtBC,qBAAqB,GAAG2D,uCAA4B;IAEpDzD,2BAA2B,GAAG0D,kDAAwB;IACtD3D,iBAAiB,GAAG4D,0BAAY;IAChC1D,gCAAgC,GAAG2D,6BAAgB;IACnD1D;EACJ,CAAC,GAAGV,KAAK;EAET,MAAM;IACFqE,UAAU;IACVC;EACJ,CAAC,GAAG,IAAAtD,0BAAgB,EAAKf,OAAO,CAAC,CAAC,IAAAgB,mBAAU,EACxCC,KAAK,KAAK;IACNmD,UAAU,EAAEnD,KAAK,CAACP,QAAQ,CAAC4D,GAAG,CAAC/B,IAAI,CAACgC,EAAE,CAAC;IACvCF,KAAK,EAAET,QAAQ,CACX3C,KAAK,CAACuD,OAAO,CAACF,GAAG,CAAC/B,IAAI,CAACgC,EAAE,CAAC;IAAE;IAC5BtD,KAAK,CAACwD,aAAa,CAACH,GAAG,CAAC/B,IAAI,CAACgC,EAAE,CAAC,CAAC;IACrC;EACJ,CAAC,CACL,CAAC,CAAC;EAEF,MAAMG,eAAe,GAAGvD,cAAK,CAACgB,WAAW,CAAC,MAAM;IAC5C,IAAAwC,2BAAkB,EAAC3E,OAAO,EAAEuC,IAAI,CAACgC,EAAE,CAAC;EACxC,CAAC,EAAE,CAACvE,OAAO,EAAEuC,IAAI,CAACgC,EAAE,CAAC,CAAC;EAEtB,MAAMK,QAAQ,GAAGzD,cAAK,CAACgB,WAAW,CAAC,MAAM;IACrC,IAAA0C,yBAAgB,EAAC7E,OAAO,EAAE,CAACuC,IAAI,CAACgC,EAAE,CAAC,CAAC;EACxC,CAAC,EAAE,CAACvE,OAAO,EAAEuC,IAAI,CAACgC,EAAE,CAAC,CAAC;EAEtB,IAAI,CAAC9D,sBAAsB,EAAE;IACzB,oBACI,IAAAnB,WAAA,CAAAmD,IAAA,EAAC7D,YAAA,CAAA4E,IAAI;MAACC,KAAK,EAAE,CACTC,MAAM,CAACoB,uBAAuB,EAC9B;QAAEC,YAAY,EAAEvC,KAAK,GAAGnC;MAAsB,CAAC,CACjD;MAAAsC,QAAA,gBACE,IAAArD,WAAA,CAAA+C,GAAA,EAAC/B,iBAAiB;QACd0E,IAAI,EAAEzC,IAAI,CAAC0C,IAAK;QAChBC,aAAa,EAAEN,QAAS;QACxBP,KAAK,EAAEA,KAAM;QAAA,GACTjE;MAAsB,CAAG,CAAC,EAEjCmC,IAAI,CAACI,QAAQ,EAAEwC,MAAM,gBAClB,IAAA7F,WAAA,CAAA+C,GAAA,EAAC7B,gCAAgC;QAC7BiD,KAAK,EAAEC,MAAM,CAAC0B,4BAA6B;QAC3CC,OAAO,EAAEX,eAAgB;QAAA/B,QAAA,eACzB,IAAArD,WAAA,CAAA+C,GAAA,EAAC9B,2BAA2B;UACxB6D,UAAU,EAAEA;QAAW,CAC1B;MAAC,CAC4B,CAAC,GACnC,IAAI;IAAA,CACN,CAAC;EAEf,CAAC,MACI;IACD,oBACI,IAAA9E,WAAA,CAAA+C,GAAA,EAAC5B,sBAAsB;MACnB8B,IAAI,EAAEA,IAAK;MACXC,KAAK,EAAEA,KAAM;MACb8C,YAAY,EAAEjB,KAAM;MACpBD,UAAU,EAAEA,UAAW;MACvBmB,OAAO,EAAEX,QAAS;MAClBY,QAAQ,EAAEd;IAAgB,CAAE,CAAC;EAEzC;AACJ;AAAC;AAED,MAAMhB,MAAM,GAAG+B,uBAAU,CAACC,MAAM,CAAC;EAC7B/B,mBAAmB,EAAE;IACjBgC,OAAO,EAAE;EACb,CAAC;EACDP,4BAA4B,EAAE;IAC1BQ,IAAI,EAAE;EACV,CAAC;EACDd,uBAAuB,EAAE;IACrBc,IAAI,EAAE,CAAC;IACPC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,QAAQ,EAAE;EACd;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ScrollToNodeHandler = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _expandCollapse = require("../helpers/expandCollapse.helper");
|
|
9
|
+
var _treeView = require("../store/treeView.store");
|
|
10
|
+
var _shallow = require("zustand/react/shallow");
|
|
11
|
+
var _typedMemo = require("../utils/typedMemo");
|
|
12
|
+
var _lodash = require("lodash");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
/**
|
|
15
|
+
* ScrollToNodeHandler Component
|
|
16
|
+
*
|
|
17
|
+
* This component provides an imperative handle to scroll to a specified node within a tree view.
|
|
18
|
+
* The scrolling action is orchestrated via a two-step "milestone" mechanism that ensures the target
|
|
19
|
+
* node is both expanded in the tree and that the rendered list reflects this expansion before the scroll
|
|
20
|
+
* is performed.
|
|
21
|
+
*
|
|
22
|
+
* The two key milestones tracked by the `expandAndScrollToNodeQueue` state are:
|
|
23
|
+
* 1. EXPANDED: Indicates that the expansion logic for the target node has been initiated.
|
|
24
|
+
* 2. RENDERED: Indicates that the list has re-rendered with the expanded node included.
|
|
25
|
+
*
|
|
26
|
+
* When the `scrollToNodeID` method is called:
|
|
27
|
+
* - The scroll parameters (target node ID, animation preferences, view offset/position) are stored in a ref.
|
|
28
|
+
* - The target node's expansion is triggered via the `expandNodes` helper.
|
|
29
|
+
* - The `expandAndScrollToNodeQueue` state is updated to mark that expansion has begun.
|
|
30
|
+
*
|
|
31
|
+
* As the component re-renders (e.g., after the node expansion changes the rendered list):
|
|
32
|
+
* - A useEffect monitors changes to the list, and once it detects the expansion has occurred,
|
|
33
|
+
* it updates the queue to include the RENDERED milestone.
|
|
34
|
+
*
|
|
35
|
+
* A layout effect then waits for both conditions to be met:
|
|
36
|
+
* - The target node is confirmed to be in the expanded set.
|
|
37
|
+
* - The `expandAndScrollToNodeQueue` exactly matches the expected milestones ([EXPANDED, RENDERED]).
|
|
38
|
+
*
|
|
39
|
+
* Once both conditions are satisfied:
|
|
40
|
+
* - The index of the target node is determined within the latest flattened node list.
|
|
41
|
+
* - The flash list is scrolled to that index.
|
|
42
|
+
* - The queued scroll parameters and milestone queue are reset.
|
|
43
|
+
*
|
|
44
|
+
* This design ensures that the scroll action is performed only after the target node is fully present
|
|
45
|
+
* in the UI, thus preventing issues with attempting to scroll to an element that does not exist yet.
|
|
46
|
+
*/
|
|
47
|
+
// Enum representing the two milestones needed before scrolling
|
|
48
|
+
var ExpandQueueAction = /*#__PURE__*/function (ExpandQueueAction) {
|
|
49
|
+
ExpandQueueAction[ExpandQueueAction["EXPANDED"] = 0] = "EXPANDED";
|
|
50
|
+
ExpandQueueAction[ExpandQueueAction["RENDERED"] = 1] = "RENDERED";
|
|
51
|
+
return ExpandQueueAction;
|
|
52
|
+
}(ExpandQueueAction || {});
|
|
53
|
+
function _innerScrollToNodeHandler(props, ref) {
|
|
54
|
+
const {
|
|
55
|
+
storeId,
|
|
56
|
+
flashListRef,
|
|
57
|
+
flattenedFilteredNodes,
|
|
58
|
+
setInitialScrollIndex,
|
|
59
|
+
initialScrollNodeID
|
|
60
|
+
} = props;
|
|
61
|
+
const {
|
|
62
|
+
expanded,
|
|
63
|
+
childToParentMap
|
|
64
|
+
} = (0, _treeView.useTreeViewStore)(storeId)((0, _shallow.useShallow)(state => ({
|
|
65
|
+
expanded: state.expanded,
|
|
66
|
+
childToParentMap: state.childToParentMap
|
|
67
|
+
})));
|
|
68
|
+
_react.default.useImperativeHandle(ref, () => ({
|
|
69
|
+
scrollToNodeID: params => {
|
|
70
|
+
queuedScrollToNodeParams.current = params;
|
|
71
|
+
// Mark that expansion is initiated.
|
|
72
|
+
setExpandAndScrollToNodeQueue([ExpandQueueAction.EXPANDED]);
|
|
73
|
+
// Trigger expansion logic (this may update the store and subsequently re-render the list).
|
|
74
|
+
(0, _expandCollapse.expandNodes)(storeId, [queuedScrollToNodeParams.current.nodeId], !queuedScrollToNodeParams.current.expandScrolledNode);
|
|
75
|
+
}
|
|
76
|
+
}), [storeId]);
|
|
77
|
+
|
|
78
|
+
// Ref to store the scroll parameters for the queued action.
|
|
79
|
+
const queuedScrollToNodeParams = _react.default.useRef(null);
|
|
80
|
+
|
|
81
|
+
// State to track progression: first the expansion is triggered, then the list is rendered.
|
|
82
|
+
const [expandAndScrollToNodeQueue, setExpandAndScrollToNodeQueue] = _react.default.useState([]);
|
|
83
|
+
const latestFlattenedFilteredNodesRef = _react.default.useRef(flattenedFilteredNodes);
|
|
84
|
+
|
|
85
|
+
/* When the rendered node list changes, update the ref.
|
|
86
|
+
If an expansion was triggered, mark that the list is now rendered. */
|
|
87
|
+
_react.default.useEffect(() => {
|
|
88
|
+
setExpandAndScrollToNodeQueue(prevQueue => {
|
|
89
|
+
if (prevQueue.includes(ExpandQueueAction.EXPANDED)) {
|
|
90
|
+
latestFlattenedFilteredNodesRef.current = flattenedFilteredNodes;
|
|
91
|
+
return [ExpandQueueAction.EXPANDED, ExpandQueueAction.RENDERED];
|
|
92
|
+
} else {
|
|
93
|
+
return prevQueue;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}, [flattenedFilteredNodes]);
|
|
97
|
+
|
|
98
|
+
/* Once the target node is expanded and the list is updated (milestones reached),
|
|
99
|
+
perform the scroll using the latest node list. */
|
|
100
|
+
_react.default.useLayoutEffect(() => {
|
|
101
|
+
if (queuedScrollToNodeParams.current === null) return;
|
|
102
|
+
if (!(0, _lodash.isEqual)(expandAndScrollToNodeQueue, [ExpandQueueAction.EXPANDED, ExpandQueueAction.RENDERED])) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// If node is set to not expand
|
|
107
|
+
if (!queuedScrollToNodeParams.current.expandScrolledNode) {
|
|
108
|
+
let parentId;
|
|
109
|
+
// Get the parent's id of the node to scroll to
|
|
110
|
+
if (childToParentMap.has(queuedScrollToNodeParams.current.nodeId)) {
|
|
111
|
+
parentId = childToParentMap.get(queuedScrollToNodeParams.current.nodeId);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Ensure if the parent is expanded before proceeding to scroll to the node
|
|
115
|
+
if (parentId && !expanded.has(parentId)) return;
|
|
116
|
+
}
|
|
117
|
+
// If node is set to expand
|
|
118
|
+
else {
|
|
119
|
+
if (!expanded.has(queuedScrollToNodeParams.current.nodeId)) return;
|
|
120
|
+
}
|
|
121
|
+
const {
|
|
122
|
+
nodeId,
|
|
123
|
+
animated,
|
|
124
|
+
viewOffset,
|
|
125
|
+
viewPosition
|
|
126
|
+
} = queuedScrollToNodeParams.current;
|
|
127
|
+
function scrollToItem() {
|
|
128
|
+
const index = latestFlattenedFilteredNodesRef.current.findIndex(item => item.id === nodeId);
|
|
129
|
+
if (index !== -1 && flashListRef.current) {
|
|
130
|
+
// Scroll to the target index.
|
|
131
|
+
flashListRef.current.scrollToIndex({
|
|
132
|
+
index,
|
|
133
|
+
animated,
|
|
134
|
+
viewOffset,
|
|
135
|
+
viewPosition
|
|
136
|
+
});
|
|
137
|
+
} else {
|
|
138
|
+
if (__DEV__) {
|
|
139
|
+
console.info("Cannot find the item of the mentioned id to scroll in the rendered tree view list data!");
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Clear the queued parameters and reset the expansion/render queue.
|
|
144
|
+
queuedScrollToNodeParams.current = null;
|
|
145
|
+
setExpandAndScrollToNodeQueue([]);
|
|
146
|
+
}
|
|
147
|
+
scrollToItem();
|
|
148
|
+
}, [childToParentMap, expanded, flashListRef, expandAndScrollToNodeQueue]);
|
|
149
|
+
|
|
150
|
+
////////////////////////////// Handle Initial Scroll /////////////////////////////
|
|
151
|
+
/* On first render, if an initial scroll target is provided, determine its index.
|
|
152
|
+
This is done only once. */
|
|
153
|
+
const initialScrollDone = _react.default.useRef(false);
|
|
154
|
+
_react.default.useLayoutEffect(() => {
|
|
155
|
+
if (initialScrollDone.current) return;
|
|
156
|
+
const index = flattenedFilteredNodes.findIndex(item => item.id === initialScrollNodeID);
|
|
157
|
+
setInitialScrollIndex(index);
|
|
158
|
+
if (index !== -1) {
|
|
159
|
+
initialScrollDone.current = true;
|
|
160
|
+
}
|
|
161
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
162
|
+
}, [flattenedFilteredNodes, initialScrollNodeID]);
|
|
163
|
+
/////////////////////////////////////////////////////////////////////////////////
|
|
164
|
+
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
const _ScrollToNodeHandler = /*#__PURE__*/_react.default.forwardRef(_innerScrollToNodeHandler);
|
|
168
|
+
const ScrollToNodeHandler = exports.ScrollToNodeHandler = (0, _typedMemo.typedMemo)(_ScrollToNodeHandler);
|
|
169
|
+
//# sourceMappingURL=ScrollToNodeHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_expandCollapse","_treeView","_shallow","_typedMemo","_lodash","e","__esModule","default","ExpandQueueAction","_innerScrollToNodeHandler","props","ref","storeId","flashListRef","flattenedFilteredNodes","setInitialScrollIndex","initialScrollNodeID","expanded","childToParentMap","useTreeViewStore","useShallow","state","React","useImperativeHandle","scrollToNodeID","params","queuedScrollToNodeParams","current","setExpandAndScrollToNodeQueue","EXPANDED","expandNodes","nodeId","expandScrolledNode","useRef","expandAndScrollToNodeQueue","useState","latestFlattenedFilteredNodesRef","useEffect","prevQueue","includes","RENDERED","useLayoutEffect","isEqual","parentId","has","get","animated","viewOffset","viewPosition","scrollToItem","index","findIndex","item","id","scrollToIndex","__DEV__","console","info","initialScrollDone","_ScrollToNodeHandler","forwardRef","ScrollToNodeHandler","exports","typedMemo"],"sourceRoot":"../../../src","sources":["handlers/ScrollToNodeHandler.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -82,8 +82,10 @@ function collapseAll(storeId) {
|
|
|
82
82
|
* Expand tree nodes of given ids. If the id is of a child, it also expands
|
|
83
83
|
* its ancestors up to the root.
|
|
84
84
|
* @param ids - Ids of nodes to expand.
|
|
85
|
+
* @param _doNotExpandToShowChildren - If true, the function will not expand the ids to prevent
|
|
86
|
+
* from showing their children.
|
|
85
87
|
*/
|
|
86
|
-
function expandNodes(storeId, ids) {
|
|
88
|
+
function expandNodes(storeId, ids, _doNotExpandToShowChildren = false) {
|
|
87
89
|
const treeViewStore = (0, _treeView.getTreeViewStore)(storeId);
|
|
88
90
|
const {
|
|
89
91
|
expanded,
|
|
@@ -93,6 +95,10 @@ function expandNodes(storeId, ids) {
|
|
|
93
95
|
const newExpanded = new Set(expanded);
|
|
94
96
|
const processedIds = new Set();
|
|
95
97
|
ids.forEach(id => {
|
|
98
|
+
if (_doNotExpandToShowChildren) {
|
|
99
|
+
const parentId = childToParentMap.get(id);
|
|
100
|
+
if (parentId === undefined) return;else id = parentId;
|
|
101
|
+
}
|
|
96
102
|
let currentId = id;
|
|
97
103
|
while (currentId && !processedIds.has(currentId)) {
|
|
98
104
|
newExpanded.add(currentId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_treeView","require","handleToggleExpand","storeId","id","treeViewStore","getTreeViewStore","expanded","updateExpanded","nodeMap","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":";;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAKC,OAAe,EAAEC,EAAM,EAAE;EAC5D,MAAMC,aAAa,GAAG,IAAAC,0BAAgB,EAAKH,OAAO,CAAC;EACnD,MAAM;IACFI,QAAQ;IACRC,cAAc;IACdC;EACJ,CAAC,GAAGJ,aAAa,CAACK,QAAQ,CAAC,CAAC;;EAE5B;EACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACL,QAAQ,CAAC;EAErC,IAAIA,QAAQ,CAACM,GAAG,CAACT,EAAE,CAAC,EAAE;IAClB;IACAO,WAAW,CAACG,MAAM,CAACV,EAAE,CAAC;;IAEtB;IACA,MAAMW,KAAK,GAAG,CAACX,EAAE,CAAC;IAElB,OAAOW,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;MACrB,MAAMC,SAAS,GAAGF,KAAK,CAACG,GAAG,CAAC,CAAE;MAC9B,MAAMC,IAAI,GAAGV,OAAO,CAACW,GAAG,CAACH,SAAS,CAAC;MAEnC,IAAIE,IAAI,IAAIA,IAAI,CAACE,QAAQ,EAAE;QACvB,KAAK,MAAMC,KAAK,IAAIH,IAAI,CAACE,QAAQ,EAAE;UAC/BV,WAAW,CAACG,MAAM,CAACQ,KAAK,CAAClB,EAAE,CAAC;UAC5BW,KAAK,CAACQ,IAAI,CAACD,KAAK,CAAClB,EAAE,CAAC;QACxB;MACJ;IACJ;EACJ,CAAC,MAAM;IACH;IACAO,WAAW,CAACa,GAAG,CAACpB,EAAE,CAAC;EACvB;;EAEA;EACAI,cAAc,CAACG,WAAW,CAAC;AAC/B;;AAEA;AACA;AACA;AACO,SAASc,SAASA,CAACtB,OAAe,EAAE;EACvC,MAAME,aAAa,GAAG,IAAAC,0BAAgB,EAACH,OAAO,CAAC;EAC/C,MAAM;IAAEM,OAAO;IAAED;EAAe,CAAC,GAAGH,aAAa,CAACK,QAAQ,CAAC,CAAC;EAC5D;EACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACH,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC;EAC3ClB,cAAc,CAACG,WAAW,CAAC;AAC/B;;AAEA;AACA;AACA;AACO,SAASgB,WAAWA,CAACxB,OAAe,EAAE;EACzC,MAAME,aAAa,GAAG,IAAAC,0BAAgB,EAACH,OAAO,CAAC;EAC/C,MAAM;IAAEK;EAAe,CAAC,GAAGH,aAAa,CAACK,QAAQ,CAAC,CAAC;EACnD;EACAF,cAAc,CAAC,IAAII,GAAG,CAAS,CAAC,CAAC;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASgB,WAAWA,
|
|
1
|
+
{"version":3,"names":["_treeView","require","handleToggleExpand","storeId","id","treeViewStore","getTreeViewStore","expanded","updateExpanded","nodeMap","getState","newExpanded","Set","has","delete","stack","length","currentId","pop","node","get","children","child","push","add","expandAll","keys","collapseAll","expandNodes","ids","_doNotExpandToShowChildren","childToParentMap","processedIds","forEach","parentId","undefined","collapseNodes","deleteChildrenFromExpanded","nodeId"],"sourceRoot":"../../../src","sources":["helpers/expandCollapse.helper.ts"],"mappings":";;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAKC,OAAe,EAAEC,EAAM,EAAE;EAC5D,MAAMC,aAAa,GAAG,IAAAC,0BAAgB,EAAKH,OAAO,CAAC;EACnD,MAAM;IACFI,QAAQ;IACRC,cAAc;IACdC;EACJ,CAAC,GAAGJ,aAAa,CAACK,QAAQ,CAAC,CAAC;;EAE5B;EACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACL,QAAQ,CAAC;EAErC,IAAIA,QAAQ,CAACM,GAAG,CAACT,EAAE,CAAC,EAAE;IAClB;IACAO,WAAW,CAACG,MAAM,CAACV,EAAE,CAAC;;IAEtB;IACA,MAAMW,KAAK,GAAG,CAACX,EAAE,CAAC;IAElB,OAAOW,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;MACrB,MAAMC,SAAS,GAAGF,KAAK,CAACG,GAAG,CAAC,CAAE;MAC9B,MAAMC,IAAI,GAAGV,OAAO,CAACW,GAAG,CAACH,SAAS,CAAC;MAEnC,IAAIE,IAAI,IAAIA,IAAI,CAACE,QAAQ,EAAE;QACvB,KAAK,MAAMC,KAAK,IAAIH,IAAI,CAACE,QAAQ,EAAE;UAC/BV,WAAW,CAACG,MAAM,CAACQ,KAAK,CAAClB,EAAE,CAAC;UAC5BW,KAAK,CAACQ,IAAI,CAACD,KAAK,CAAClB,EAAE,CAAC;QACxB;MACJ;IACJ;EACJ,CAAC,MAAM;IACH;IACAO,WAAW,CAACa,GAAG,CAACpB,EAAE,CAAC;EACvB;;EAEA;EACAI,cAAc,CAACG,WAAW,CAAC;AAC/B;;AAEA;AACA;AACA;AACO,SAASc,SAASA,CAACtB,OAAe,EAAE;EACvC,MAAME,aAAa,GAAG,IAAAC,0BAAgB,EAACH,OAAO,CAAC;EAC/C,MAAM;IAAEM,OAAO;IAAED;EAAe,CAAC,GAAGH,aAAa,CAACK,QAAQ,CAAC,CAAC;EAC5D;EACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACH,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC;EAC3ClB,cAAc,CAACG,WAAW,CAAC;AAC/B;;AAEA;AACA;AACA;AACO,SAASgB,WAAWA,CAACxB,OAAe,EAAE;EACzC,MAAME,aAAa,GAAG,IAAAC,0BAAgB,EAACH,OAAO,CAAC;EAC/C,MAAM;IAAEK;EAAe,CAAC,GAAGH,aAAa,CAACK,QAAQ,CAAC,CAAC;EACnD;EACAF,cAAc,CAAC,IAAII,GAAG,CAAS,CAAC,CAAC;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASgB,WAAWA,CACvBzB,OAAe,EACf0B,GAAS,EACTC,0BAAmC,GAAG,KAAK,EAC7C;EACE,MAAMzB,aAAa,GAAG,IAAAC,0BAAgB,EAAKH,OAAO,CAAC;EACnD,MAAM;IAAEI,QAAQ;IAAEC,cAAc;IAAEuB;EAAiB,CAAC,GAAG1B,aAAa,CAACK,QAAQ,CAAC,CAAC;EAC/E,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACL,QAAQ,CAAC;EACrC,MAAMyB,YAAY,GAAG,IAAIpB,GAAG,CAAK,CAAC;EAElCiB,GAAG,CAACI,OAAO,CAAE7B,EAAE,IAAK;IAChB,IAAI0B,0BAA0B,EAAE;MAC5B,MAAMI,QAAQ,GAAGH,gBAAgB,CAACX,GAAG,CAAChB,EAAE,CAAC;MAEzC,IAAI8B,QAAQ,KAAKC,SAAS,EACtB,OAAO,KAEP/B,EAAE,GAAG8B,QAAQ;IACrB;IAEA,IAAIjB,SAAyB,GAAGb,EAAE;IAClC,OAAOa,SAAS,IAAI,CAACe,YAAY,CAACnB,GAAG,CAACI,SAAS,CAAC,EAAE;MAC9CN,WAAW,CAACa,GAAG,CAACP,SAAS,CAAC;MAC1Be,YAAY,CAACR,GAAG,CAACP,SAAS,CAAC;MAC3BA,SAAS,GAAGc,gBAAgB,CAACX,GAAG,CAACH,SAAS,CAAC;IAC/C;EACJ,CAAC,CAAC;EAEFT,cAAc,CAACG,WAAW,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASyB,aAAaA,CAAKjC,OAAe,EAAE0B,GAAS,EAAE;EAC1D,MAAMxB,aAAa,GAAG,IAAAC,0BAAgB,EAAKH,OAAO,CAAC;EACnD,MAAM;IAAEI,QAAQ;IAAEC,cAAc;IAAEC;EAAQ,CAAC,GAAGJ,aAAa,CAACK,QAAQ,CAAC,CAAC;EACtE,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACL,QAAQ,CAAC;;EAErC;EACA,MAAM8B,0BAA0B,GAAIC,MAAU,IAAK;IAC/C,MAAMvB,KAAK,GAAG,CAACuB,MAAM,CAAC;IAEtB,OAAOvB,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;MACrB,MAAMC,SAAS,GAAGF,KAAK,CAACG,GAAG,CAAC,CAAE;MAC9B,MAAMC,IAAI,GAAGV,OAAO,CAACW,GAAG,CAACH,SAAS,CAAC;MAEnC,IAAIE,IAAI,IAAIA,IAAI,CAACE,QAAQ,EAAE;QACvB,KAAK,MAAMC,KAAK,IAAIH,IAAI,CAACE,QAAQ,EAAE;UAC/BV,WAAW,CAACG,MAAM,CAACQ,KAAK,CAAClB,EAAE,CAAC;UAC5BW,KAAK,CAACQ,IAAI,CAACD,KAAK,CAAClB,EAAE,CAAC;QACxB;MACJ;IACJ;EACJ,CAAC;EAEDyB,GAAG,CAACI,OAAO,CAAE7B,EAAE,IAAK;IAChB;IACAO,WAAW,CAACG,MAAM,CAACV,EAAE,CAAC;IACtBiC,0BAA0B,CAACjC,EAAE,CAAC;EAClC,CAAC,CAAC;EAEFI,cAAc,CAACG,WAAW,CAAC;AAC/B","ignoreList":[]}
|