react-native-tree-multi-select 0.5.3 → 0.8.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 +5 -6
- package/lib/commonjs/TreeView.js +42 -48
- package/lib/commonjs/TreeView.js.map +1 -1
- package/lib/commonjs/components/NodeList.js +98 -92
- package/lib/commonjs/components/NodeList.js.map +1 -1
- package/lib/commonjs/helpers/expandCollapse.helper.js +21 -8
- package/lib/commonjs/helpers/expandCollapse.helper.js.map +1 -1
- package/lib/commonjs/helpers/initNodeMap.helper.js +14 -3
- package/lib/commonjs/helpers/initNodeMap.helper.js.map +1 -1
- package/lib/commonjs/helpers/selectAll.helper.js +32 -14
- package/lib/commonjs/helpers/selectAll.helper.js.map +1 -1
- package/lib/commonjs/helpers/toggleCheckbox.helper.js +34 -27
- package/lib/commonjs/helpers/toggleCheckbox.helper.js.map +1 -1
- package/lib/commonjs/store/global.store.js +92 -0
- package/lib/commonjs/store/global.store.js.map +1 -0
- package/lib/module/TreeView.js +42 -46
- package/lib/module/TreeView.js.map +1 -1
- package/lib/module/components/NodeList.js +96 -92
- package/lib/module/components/NodeList.js.map +1 -1
- package/lib/module/helpers/expandCollapse.helper.js +21 -8
- package/lib/module/helpers/expandCollapse.helper.js.map +1 -1
- package/lib/module/helpers/initNodeMap.helper.js +14 -3
- package/lib/module/helpers/initNodeMap.helper.js.map +1 -1
- package/lib/module/helpers/selectAll.helper.js +32 -14
- package/lib/module/helpers/selectAll.helper.js.map +1 -1
- package/lib/module/helpers/toggleCheckbox.helper.js +34 -27
- package/lib/module/helpers/toggleCheckbox.helper.js.map +1 -1
- package/lib/module/store/global.store.js +85 -0
- package/lib/module/store/global.store.js.map +1 -0
- package/lib/typescript/TreeView.d.ts.map +1 -1
- package/lib/typescript/components/NodeList.d.ts.map +1 -1
- package/lib/typescript/helpers/expandCollapse.helper.d.ts.map +1 -1
- package/lib/typescript/helpers/initNodeMap.helper.d.ts.map +1 -1
- package/lib/typescript/helpers/selectAll.helper.d.ts.map +1 -1
- package/lib/typescript/helpers/toggleCheckbox.helper.d.ts.map +1 -1
- package/lib/typescript/store/global.store.d.ts +24 -0
- package/lib/typescript/store/global.store.d.ts.map +1 -0
- package/lib/typescript/types/treeView.types.d.ts +0 -4
- package/lib/typescript/types/treeView.types.d.ts.map +1 -1
- package/package.json +23 -14
- package/src/TreeView.tsx +53 -62
- package/src/components/NodeList.tsx +102 -107
- package/src/helpers/expandCollapse.helper.ts +12 -12
- package/src/helpers/initNodeMap.helper.ts +15 -5
- package/src/helpers/selectAll.helper.ts +20 -13
- package/src/helpers/toggleCheckbox.helper.ts +36 -24
- package/src/store/global.store.ts +111 -0
- package/src/types/treeView.types.ts +0 -5
- package/lib/commonjs/signals/global.signals.js +0 -42
- package/lib/commonjs/signals/global.signals.js.map +0 -1
- package/lib/module/signals/global.signals.js +0 -26
- package/lib/module/signals/global.signals.js.map +0 -1
- package/lib/typescript/signals/global.signals.d.ts +0 -11
- package/lib/typescript/signals/global.signals.d.ts.map +0 -1
- package/src/signals/global.signals.ts +0 -36
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useStore } from "../store/global.store";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Function to toggle checkbox state for a tree structure.
|
|
@@ -8,9 +8,18 @@ import { childToParentMap, nodeMap, state } from "../signals/global.signals";
|
|
|
8
8
|
* If not provided, the check state will be toggled based on the current state.
|
|
9
9
|
*/
|
|
10
10
|
export function toggleCheckboxes(ids, forceCheck) {
|
|
11
|
+
const {
|
|
12
|
+
checked,
|
|
13
|
+
updateChecked,
|
|
14
|
+
indeterminate,
|
|
15
|
+
updateIndeterminate,
|
|
16
|
+
nodeMap,
|
|
17
|
+
childToParentMap
|
|
18
|
+
} = useStore.getState();
|
|
19
|
+
|
|
11
20
|
// Create new sets for checked and indeterminate state so as not to mutate the original state.
|
|
12
|
-
const
|
|
13
|
-
const
|
|
21
|
+
const tempChecked = new Set(checked);
|
|
22
|
+
const tempIndeterminate = new Set(indeterminate);
|
|
14
23
|
|
|
15
24
|
// Maps for memoization of the recursive functions areAllDescendantsChecked and areAnyDescendantsChecked.
|
|
16
25
|
const memoAllDescendantsChecked = new Map();
|
|
@@ -25,16 +34,16 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
25
34
|
var _node$children;
|
|
26
35
|
// Set or unset this node in the checked set, and remove it from the indeterminate set.
|
|
27
36
|
if (isChecked) {
|
|
28
|
-
|
|
29
|
-
|
|
37
|
+
tempChecked.add(nodeId);
|
|
38
|
+
tempIndeterminate.delete(nodeId);
|
|
30
39
|
} else {
|
|
31
|
-
|
|
40
|
+
tempChecked.delete(nodeId);
|
|
32
41
|
}
|
|
33
42
|
|
|
34
43
|
// Get the node from the node map and recursively apply the same state to all its children.
|
|
35
|
-
const node = nodeMap.
|
|
44
|
+
const node = nodeMap.get(nodeId);
|
|
36
45
|
node === null || node === void 0 || (_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children.forEach(childNode => {
|
|
37
|
-
if (isChecked)
|
|
46
|
+
if (isChecked) tempIndeterminate.delete(childNode.id);
|
|
38
47
|
toggleNodeAndChildren(childNode.id, isChecked);
|
|
39
48
|
});
|
|
40
49
|
};
|
|
@@ -50,7 +59,7 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
50
59
|
if (memoAllDescendantsChecked.has(nodeId)) {
|
|
51
60
|
return memoAllDescendantsChecked.get(nodeId);
|
|
52
61
|
}
|
|
53
|
-
const node = nodeMap.
|
|
62
|
+
const node = nodeMap.get(nodeId);
|
|
54
63
|
let allChecked = true;
|
|
55
64
|
if (node !== null && node !== void 0 && node.children) {
|
|
56
65
|
// If the node has children, recursively check all children.
|
|
@@ -59,7 +68,7 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
59
68
|
}
|
|
60
69
|
} else {
|
|
61
70
|
// If the node has no children, its state is equal to whether it is in the checked set.
|
|
62
|
-
allChecked =
|
|
71
|
+
allChecked = tempChecked.has(nodeId);
|
|
63
72
|
}
|
|
64
73
|
|
|
65
74
|
// Store the result in the map and return it.
|
|
@@ -78,7 +87,7 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
78
87
|
if (memoAnyDescendantsChecked.has(nodeId)) {
|
|
79
88
|
return memoAnyDescendantsChecked.get(nodeId);
|
|
80
89
|
}
|
|
81
|
-
const node = nodeMap.
|
|
90
|
+
const node = nodeMap.get(nodeId);
|
|
82
91
|
let anyChecked = false;
|
|
83
92
|
if (node !== null && node !== void 0 && node.children) {
|
|
84
93
|
// If the node has children, recursively check all children.
|
|
@@ -87,7 +96,7 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
87
96
|
}
|
|
88
97
|
} else {
|
|
89
98
|
// If the node has no children, its state is equal to whether it is in the checked set.
|
|
90
|
-
anyChecked =
|
|
99
|
+
anyChecked = tempChecked.has(nodeId);
|
|
91
100
|
}
|
|
92
101
|
|
|
93
102
|
// Store the result in the map and return it.
|
|
@@ -100,32 +109,32 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
100
109
|
* @param {string} nodeId - The id of the node to be updated.
|
|
101
110
|
*/
|
|
102
111
|
const updateNodeAndAncestorsState = nodeId => {
|
|
103
|
-
const node = nodeMap.
|
|
112
|
+
const node = nodeMap.get(nodeId);
|
|
104
113
|
const hasOnlyOneChild = (node === null || node === void 0 ? void 0 : node.children) && node.children.length === 1;
|
|
105
114
|
|
|
106
115
|
// Update the node's state based on the state of its descendants.
|
|
107
116
|
if (areAllDescendantsChecked(nodeId)) {
|
|
108
|
-
|
|
109
|
-
|
|
117
|
+
tempChecked.add(nodeId);
|
|
118
|
+
tempIndeterminate.delete(nodeId);
|
|
110
119
|
} else if (areAnyDescendantsChecked(nodeId)) {
|
|
111
120
|
if (hasOnlyOneChild) {
|
|
112
121
|
// If a node has only one child and it's not checked,
|
|
113
122
|
// remove this node from both checked and indeterminate sets.
|
|
114
|
-
|
|
115
|
-
|
|
123
|
+
tempChecked.delete(nodeId);
|
|
124
|
+
tempIndeterminate.delete(nodeId);
|
|
116
125
|
} else {
|
|
117
|
-
|
|
118
|
-
|
|
126
|
+
tempChecked.delete(nodeId);
|
|
127
|
+
tempIndeterminate.add(nodeId);
|
|
119
128
|
}
|
|
120
129
|
} else {
|
|
121
|
-
|
|
122
|
-
|
|
130
|
+
tempChecked.delete(nodeId);
|
|
131
|
+
tempIndeterminate.delete(nodeId);
|
|
123
132
|
}
|
|
124
133
|
};
|
|
125
134
|
|
|
126
135
|
// Toggle the clicked nodes and their children.
|
|
127
136
|
ids.forEach(id => {
|
|
128
|
-
const isChecked =
|
|
137
|
+
const isChecked = tempChecked.has(id);
|
|
129
138
|
toggleNodeAndChildren(id, forceCheck === undefined ? !isChecked : forceCheck);
|
|
130
139
|
});
|
|
131
140
|
|
|
@@ -134,15 +143,13 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
134
143
|
let currentNodeId = id;
|
|
135
144
|
while (currentNodeId) {
|
|
136
145
|
updateNodeAndAncestorsState(currentNodeId);
|
|
137
|
-
currentNodeId = childToParentMap.
|
|
146
|
+
currentNodeId = childToParentMap.get(currentNodeId);
|
|
138
147
|
}
|
|
139
148
|
});
|
|
140
149
|
|
|
141
150
|
// Update the state object with the new checked and indeterminate sets.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
indeterminate
|
|
145
|
-
};
|
|
151
|
+
updateChecked(tempChecked);
|
|
152
|
+
updateIndeterminate(tempIndeterminate);
|
|
146
153
|
}
|
|
147
154
|
;
|
|
148
155
|
//# sourceMappingURL=toggleCheckbox.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useStore","toggleCheckboxes","ids","forceCheck","checked","updateChecked","indeterminate","updateIndeterminate","nodeMap","childToParentMap","getState","tempChecked","Set","tempIndeterminate","memoAllDescendantsChecked","Map","memoAnyDescendantsChecked","toggleNodeAndChildren","nodeId","isChecked","_node$children","add","delete","node","get","children","forEach","childNode","id","areAllDescendantsChecked","has","allChecked","set","areAnyDescendantsChecked","anyChecked","updateNodeAndAncestorsState","hasOnlyOneChild","length","undefined","currentNodeId"],"sourceRoot":"../../../src","sources":["helpers/toggleCheckbox.helper.ts"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,uBAAuB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,GAAa,EAAEC,UAAoB,EAAE;EAClE,MAAM;IACFC,OAAO;IACPC,aAAa;IAEbC,aAAa;IACbC,mBAAmB;IAEnBC,OAAO;IACPC;EACJ,CAAC,GAAGT,QAAQ,CAACU,QAAQ,CAAC,CAAC;;EAEvB;EACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACR,OAAO,CAAC;EACpC,MAAMS,iBAAiB,GAAG,IAAID,GAAG,CAACN,aAAa,CAAC;;EAEhD;EACA,MAAMQ,yBAAyB,GAAG,IAAIC,GAAG,CAAC,CAAC;EAC3C,MAAMC,yBAAyB,GAAG,IAAID,GAAG,CAAC,CAAC;;EAE3C;AACJ;AACA;AACA;AACA;EACI,MAAME,qBAAqB,GAAGA,CAACC,MAAc,EAAEC,SAAkB,KAAK;IAAA,IAAAC,cAAA;IAClE;IACA,IAAID,SAAS,EAAE;MACXR,WAAW,CAACU,GAAG,CAACH,MAAM,CAAC;MACvBL,iBAAiB,CAACS,MAAM,CAACJ,MAAM,CAAC;IACpC,CAAC,MAAM;MACHP,WAAW,CAACW,MAAM,CAACJ,MAAM,CAAC;IAC9B;;IAEA;IACA,MAAMK,IAAI,GAAGf,OAAO,CAACgB,GAAG,CAACN,MAAM,CAAC;IAChCK,IAAI,aAAJA,IAAI,gBAAAH,cAAA,GAAJG,IAAI,CAAEE,QAAQ,cAAAL,cAAA,uBAAdA,cAAA,CAAgBM,OAAO,CAAEC,SAAS,IAAK;MACnC,IAAIR,SAAS,EAAEN,iBAAiB,CAACS,MAAM,CAACK,SAAS,CAACC,EAAE,CAAC;MACrDX,qBAAqB,CAACU,SAAS,CAACC,EAAE,EAAET,SAAS,CAAC;IAClD,CAAC,CAAC;EACN,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;EACI,MAAMU,wBAAwB,GAAIX,MAAc,IAAc;IAC1D;IACA,IAAIJ,yBAAyB,CAACgB,GAAG,CAACZ,MAAM,CAAC,EAAE;MACvC,OAAOJ,yBAAyB,CAACU,GAAG,CAACN,MAAM,CAAC;IAChD;IAEA,MAAMK,IAAI,GAAGf,OAAO,CAACgB,GAAG,CAACN,MAAM,CAAC;IAChC,IAAIa,UAAU,GAAG,IAAI;IACrB,IAAIR,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEE,QAAQ,EAAE;MAChB;MACA,KAAK,MAAME,SAAS,IAAIJ,IAAI,CAACE,QAAQ,EAAE;QACnCM,UAAU,GAAGA,UAAU,IAAIF,wBAAwB,CAACF,SAAS,CAACC,EAAE,CAAC;MACrE;IACJ,CAAC,MAAM;MACH;MACAG,UAAU,GAAGpB,WAAW,CAACmB,GAAG,CAACZ,MAAM,CAAC;IACxC;;IAEA;IACAJ,yBAAyB,CAACkB,GAAG,CAACd,MAAM,EAAEa,UAAU,CAAC;IACjD,OAAOA,UAAU;EACrB,CAAC;;EAED;AACJ;AACA;AACA;AACA;AACA;EACI,MAAME,wBAAwB,GAAIf,MAAc,IAAc;IAC1D;IACA,IAAIF,yBAAyB,CAACc,GAAG,CAACZ,MAAM,CAAC,EAAE;MACvC,OAAOF,yBAAyB,CAACQ,GAAG,CAACN,MAAM,CAAC;IAChD;IAEA,MAAMK,IAAI,GAAGf,OAAO,CAACgB,GAAG,CAACN,MAAM,CAAC;IAChC,IAAIgB,UAAU,GAAG,KAAK;IACtB,IAAIX,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEE,QAAQ,EAAE;MAChB;MACA,KAAK,MAAME,SAAS,IAAIJ,IAAI,CAACE,QAAQ,EAAE;QACnCS,UAAU,GAAGA,UAAU,IAAID,wBAAwB,CAACN,SAAS,CAACC,EAAE,CAAC;MACrE;IACJ,CAAC,MAAM;MACH;MACAM,UAAU,GAAGvB,WAAW,CAACmB,GAAG,CAACZ,MAAM,CAAC;IACxC;;IAEA;IACAF,yBAAyB,CAACgB,GAAG,CAACd,MAAM,EAAEgB,UAAU,CAAC;IACjD,OAAOA,UAAU;EACrB,CAAC;;EAED;AACJ;AACA;AACA;EACI,MAAMC,2BAA2B,GAAIjB,MAAc,IAAK;IACpD,MAAMK,IAAI,GAAGf,OAAO,CAACgB,GAAG,CAACN,MAAM,CAAC;IAChC,MAAMkB,eAAe,GAAG,CAAAb,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,QAAQ,KAAIF,IAAI,CAACE,QAAQ,CAACY,MAAM,KAAK,CAAC;;IAEpE;IACA,IAAIR,wBAAwB,CAACX,MAAM,CAAC,EAAE;MAClCP,WAAW,CAACU,GAAG,CAACH,MAAM,CAAC;MACvBL,iBAAiB,CAACS,MAAM,CAACJ,MAAM,CAAC;IACpC,CAAC,MAAM,IAAIe,wBAAwB,CAACf,MAAM,CAAC,EAAE;MACzC,IAAIkB,eAAe,EAAE;QACjB;QACA;QACAzB,WAAW,CAACW,MAAM,CAACJ,MAAM,CAAC;QAC1BL,iBAAiB,CAACS,MAAM,CAACJ,MAAM,CAAC;MACpC,CAAC,MAAM;QACHP,WAAW,CAACW,MAAM,CAACJ,MAAM,CAAC;QAC1BL,iBAAiB,CAACQ,GAAG,CAACH,MAAM,CAAC;MACjC;IACJ,CAAC,MAAM;MACHP,WAAW,CAACW,MAAM,CAACJ,MAAM,CAAC;MAC1BL,iBAAiB,CAACS,MAAM,CAACJ,MAAM,CAAC;IACpC;EACJ,CAAC;;EAED;EACAhB,GAAG,CAACwB,OAAO,CAAEE,EAAE,IAAK;IAChB,MAAMT,SAAS,GAAGR,WAAW,CAACmB,GAAG,CAACF,EAAE,CAAC;IACrCX,qBAAqB,CAACW,EAAE,EAAEzB,UAAU,KAAKmC,SAAS,GAAG,CAACnB,SAAS,GAAGhB,UAAU,CAAC;EACjF,CAAC,CAAC;;EAEF;EACAD,GAAG,CAACwB,OAAO,CAAEE,EAAE,IAAK;IAChB,IAAIW,aAAiC,GAAGX,EAAE;IAC1C,OAAOW,aAAa,EAAE;MAClBJ,2BAA2B,CAACI,aAAa,CAAC;MAC1CA,aAAa,GAAG9B,gBAAgB,CAACe,GAAG,CAACe,aAAa,CAAC;IACvD;EACJ,CAAC,CAAC;;EAEF;EACAlC,aAAa,CAACM,WAAW,CAAC;EAC1BJ,mBAAmB,CAACM,iBAAiB,CAAC;AAC1C;AAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
export const useStore = create(set => ({
|
|
3
|
+
checked: new Set(),
|
|
4
|
+
updateChecked: checked => set({
|
|
5
|
+
checked
|
|
6
|
+
}),
|
|
7
|
+
indeterminate: new Set(),
|
|
8
|
+
updateIndeterminate: indeterminate => set({
|
|
9
|
+
indeterminate
|
|
10
|
+
}),
|
|
11
|
+
expanded: new Set(),
|
|
12
|
+
updateExpanded: expanded => set({
|
|
13
|
+
expanded
|
|
14
|
+
}),
|
|
15
|
+
globalData: [],
|
|
16
|
+
updateGlobalData: globalData => set({
|
|
17
|
+
globalData
|
|
18
|
+
}),
|
|
19
|
+
nodeMap: new Map(),
|
|
20
|
+
updateNodeMap: nodeMap => set({
|
|
21
|
+
nodeMap
|
|
22
|
+
}),
|
|
23
|
+
childToParentMap: new Map(),
|
|
24
|
+
updateChildToParentMap: childToParentMap => set({
|
|
25
|
+
childToParentMap
|
|
26
|
+
}),
|
|
27
|
+
searchText: "",
|
|
28
|
+
updatedSearchText: searchText => set({
|
|
29
|
+
searchText
|
|
30
|
+
}),
|
|
31
|
+
searchKeys: [""],
|
|
32
|
+
updatedSearchKeys: searchKeys => set({
|
|
33
|
+
searchKeys
|
|
34
|
+
}),
|
|
35
|
+
innerMostChildrenIds: [],
|
|
36
|
+
updatedInnerMostChildrenIds: innerMostChildrenIds => set({
|
|
37
|
+
innerMostChildrenIds
|
|
38
|
+
}),
|
|
39
|
+
cleanUpGlobalSignals: () => set({
|
|
40
|
+
checked: new Set(),
|
|
41
|
+
indeterminate: new Set(),
|
|
42
|
+
expanded: new Set(),
|
|
43
|
+
globalData: [],
|
|
44
|
+
nodeMap: new Map(),
|
|
45
|
+
childToParentMap: new Map(),
|
|
46
|
+
searchText: "",
|
|
47
|
+
searchKeys: [""],
|
|
48
|
+
innerMostChildrenIds: []
|
|
49
|
+
})
|
|
50
|
+
}));
|
|
51
|
+
|
|
52
|
+
// export const state = signal<__CheckBoxState__>({
|
|
53
|
+
// checked: new Set(),
|
|
54
|
+
// indeterminate: new Set(),
|
|
55
|
+
// });
|
|
56
|
+
// export const expanded = signal(new Set<string>());
|
|
57
|
+
|
|
58
|
+
// export const globalData = signal<TreeNode[]>([]);
|
|
59
|
+
|
|
60
|
+
// export const nodeMap = signal(new Map<string, TreeNode>());
|
|
61
|
+
// export const childToParentMap = signal(new Map<string, string>());
|
|
62
|
+
|
|
63
|
+
// export const searchText = signal("");
|
|
64
|
+
// export const searchKeys = signal<string[]>([""]);
|
|
65
|
+
|
|
66
|
+
// export const innerMostChildrenIds = signal<string[]>([]);
|
|
67
|
+
|
|
68
|
+
// export function cleanUpGlobalSignals() {
|
|
69
|
+
// state.value = ({
|
|
70
|
+
// checked: new Set(),
|
|
71
|
+
// indeterminate: new Set(),
|
|
72
|
+
// });
|
|
73
|
+
// expanded.value = new Set<string>();
|
|
74
|
+
|
|
75
|
+
// globalData.value = [];
|
|
76
|
+
|
|
77
|
+
// nodeMap.value = new Map<string, TreeNode>();
|
|
78
|
+
// childToParentMap.value = new Map<string, string>();
|
|
79
|
+
|
|
80
|
+
// searchText.value = "";
|
|
81
|
+
// searchKeys.value = [];
|
|
82
|
+
|
|
83
|
+
// innerMostChildrenIds.value = [];
|
|
84
|
+
// }
|
|
85
|
+
//# sourceMappingURL=global.store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["create","useStore","set","checked","Set","updateChecked","indeterminate","updateIndeterminate","expanded","updateExpanded","globalData","updateGlobalData","nodeMap","Map","updateNodeMap","childToParentMap","updateChildToParentMap","searchText","updatedSearchText","searchKeys","updatedSearchKeys","innerMostChildrenIds","updatedInnerMostChildrenIds","cleanUpGlobalSignals"],"sourceRoot":"../../../src","sources":["store/global.store.ts"],"mappings":"AAEA,SAASA,MAAM,QAAQ,SAAS;AAiChC,OAAO,MAAMC,QAAQ,GAAGD,MAAM,CAAeE,GAAG,KAAM;EAClDC,OAAO,EAAE,IAAIC,GAAG,CAAC,CAAC;EAClBC,aAAa,EAAGF,OAAoB,IAAKD,GAAG,CAAC;IAAEC;EAAQ,CAAC,CAAC;EAEzDG,aAAa,EAAE,IAAIF,GAAG,CAAC,CAAC;EACxBG,mBAAmB,EAAGD,aAA0B,IAAKJ,GAAG,CAAC;IAAEI;EAAc,CAAC,CAAC;EAE3EE,QAAQ,EAAE,IAAIJ,GAAG,CAAS,CAAC;EAC3BK,cAAc,EAAGD,QAAqB,IAAKN,GAAG,CAAC;IAAEM;EAAS,CAAC,CAAC;EAE5DE,UAAU,EAAE,EAAE;EACdC,gBAAgB,EAAGD,UAAsB,IAAKR,GAAG,CAAC;IAAEQ;EAAW,CAAC,CAAC;EAEjEE,OAAO,EAAE,IAAIC,GAAG,CAAmB,CAAC;EACpCC,aAAa,EAAGF,OAA8B,IAAKV,GAAG,CAAC;IAAEU;EAAQ,CAAC,CAAC;EAEnEG,gBAAgB,EAAE,IAAIF,GAAG,CAAiB,CAAC;EAC3CG,sBAAsB,EAAGD,gBAAqC,IAAKb,GAAG,CAAC;IAAEa;EAAiB,CAAC,CAAC;EAE5FE,UAAU,EAAE,EAAE;EACdC,iBAAiB,EAAGD,UAAkB,IAAKf,GAAG,CAAC;IAAEe;EAAW,CAAC,CAAC;EAE9DE,UAAU,EAAE,CAAC,EAAE,CAAC;EAChBC,iBAAiB,EAAGD,UAAoB,IAAKjB,GAAG,CAAC;IAAEiB;EAAW,CAAC,CAAC;EAEhEE,oBAAoB,EAAE,EAAE;EACxBC,2BAA2B,EAAGD,oBAA8B,IAAKnB,GAAG,CAAC;IAAEmB;EAAqB,CAAC,CAAC;EAE9FE,oBAAoB,EAAEA,CAAA,KAClBrB,GAAG,CAAC;IACAC,OAAO,EAAE,IAAIC,GAAG,CAAC,CAAC;IAClBE,aAAa,EAAE,IAAIF,GAAG,CAAC,CAAC;IACxBI,QAAQ,EAAE,IAAIJ,GAAG,CAAS,CAAC;IAC3BM,UAAU,EAAE,EAAE;IACdE,OAAO,EAAE,IAAIC,GAAG,CAAmB,CAAC;IACpCE,gBAAgB,EAAE,IAAIF,GAAG,CAAiB,CAAC;IAC3CI,UAAU,EAAE,EAAE;IACdE,UAAU,EAAE,CAAC,EAAE,CAAC;IAChBE,oBAAoB,EAAE;EAC1B,CAAC;AACT,CAAC,CAAC,CAAC;;AAGH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeView.d.ts","sourceRoot":"","sources":["../../src/TreeView.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TreeView.d.ts","sourceRoot":"","sources":["../../src/TreeView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EACZ,MAAM,wBAAwB,CAAC;AA4HhC,eAAO,MAAM,QAAQ,8GAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeList.d.ts","sourceRoot":"","sources":["../../../src/components/NodeList.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"NodeList.d.ts","sourceRoot":"","sources":["../../../src/components/NodeList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAKH,KAAK,qBAAqB,EAC7B,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EACR,iBAAiB,EAIjB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EAEpB,MAAM,yBAAyB,CAAC;AAWjC,UAAU,aAAa;IACnB,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACvC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAEhD,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3D,2BAA2B,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IACnE,gCAAgC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;CACjF;AAED,QAAA,MAAM,QAAQ,6CAAwB,CAAC;AACvC,eAAe,QAAQ,CAAC;AAExB,iBAAS,SAAS,CAAC,KAAK,EAAE,aAAa,qBA2HtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expandCollapse.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/expandCollapse.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expandCollapse.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/expandCollapse.helper.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,QAwD5C;AAED;;GAEG;AACH,wBAAgB,SAAS,SAKxB;AAED;;GAEG;AACH,wBAAgB,WAAW,SAK1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initNodeMap.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/initNodeMap.helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"initNodeMap.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/initNodeMap.helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAMxD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,WAAW,EAAE,QAAQ,EAAE,EACvB,cAAc,GAAE,MAAM,EAAO,QAsChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectAll.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/selectAll.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"selectAll.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/selectAll.helper.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,iBAAiB,SAWhC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,SAUlC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,SASxB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,SAM1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggleCheckbox.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/toggleCheckbox.helper.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"toggleCheckbox.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/toggleCheckbox.helper.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,OAAO,QAkJnE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { TreeNode } from "src/types/treeView.types";
|
|
2
|
+
export type GlobalState = {
|
|
3
|
+
checked: Set<string>;
|
|
4
|
+
updateChecked: (checked: Set<string>) => void;
|
|
5
|
+
indeterminate: Set<string>;
|
|
6
|
+
updateIndeterminate: (indeterminate: Set<string>) => void;
|
|
7
|
+
expanded: Set<string>;
|
|
8
|
+
updateExpanded: (expanded: Set<string>) => void;
|
|
9
|
+
globalData: TreeNode[];
|
|
10
|
+
updateGlobalData: (globalData: TreeNode[]) => void;
|
|
11
|
+
nodeMap: Map<string, TreeNode>;
|
|
12
|
+
updateNodeMap: (nodeMap: Map<string, TreeNode>) => void;
|
|
13
|
+
childToParentMap: Map<string, string>;
|
|
14
|
+
updateChildToParentMap: (childToParentMap: Map<string, string>) => void;
|
|
15
|
+
searchText: string;
|
|
16
|
+
updatedSearchText: (searchText: string) => void;
|
|
17
|
+
searchKeys: string[];
|
|
18
|
+
updatedSearchKeys: (searchKeys: string[]) => void;
|
|
19
|
+
innerMostChildrenIds: string[];
|
|
20
|
+
updatedInnerMostChildrenIds: (innerMostChildrenIds: string[]) => void;
|
|
21
|
+
cleanUpGlobalSignals: () => void;
|
|
22
|
+
};
|
|
23
|
+
export declare const useStore: import("zustand").UseBoundStore<import("zustand").StoreApi<GlobalState>>;
|
|
24
|
+
//# sourceMappingURL=global.store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.store.d.ts","sourceRoot":"","sources":["../../../src/store/global.store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIzD,MAAM,MAAM,WAAW,GAAG;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,aAAa,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAE9C,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,mBAAmB,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAE1D,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,cAAc,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAEhD,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,gBAAgB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAEnD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,aAAa,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC;IAExD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,sBAAsB,EAAE,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAExE,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAElD,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,2BAA2B,EAAE,CAAC,oBAAoB,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAEtE,oBAAoB,EAAE,MAAM,IAAI,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,QAAQ,0EAwClB,CAAC"}
|
|
@@ -6,10 +6,6 @@ export type CheckboxValueType = boolean | 'indeterminate';
|
|
|
6
6
|
export interface ExpandIconProps {
|
|
7
7
|
isExpanded: boolean;
|
|
8
8
|
}
|
|
9
|
-
export type __CheckBoxState__ = {
|
|
10
|
-
checked: Set<string>;
|
|
11
|
-
indeterminate: Set<string>;
|
|
12
|
-
};
|
|
13
9
|
export interface TreeNode {
|
|
14
10
|
id: string;
|
|
15
11
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeView.types.d.ts","sourceRoot":"","sources":["../../../src/types/treeView.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACH,KAAK,KAAK,IAAI,2BAA2B,EAC5C,MAAM,4DAA4D,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,eAAe,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"treeView.types.d.ts","sourceRoot":"","sources":["../../../src/types/treeView.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACH,KAAK,KAAK,IAAI,2BAA2B,EAC5C,MAAM,4DAA4D,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,eAAe,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAC7C,cAAc,CAAC,KAAK,CAAC,EACrB,MAAM,GACJ,YAAY,GACZ,cAAc,CACnB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,QAAQ,EAAE,CAAC;IAEjB,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAE3C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACvC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAEhD,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3D,2BAA2B,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IACnE,gCAAgC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;CACjF;AAED,KAAK,aAAa,GAAG,IAAI,CAAC,2BAA2B,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;AAE7E,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;IAC7D,KAAK,EAAE,iBAAiB,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IAEnC,wBAAwB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACrD,uBAAuB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACpD,kBAAkB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IAG/C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAEhC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACtE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-tree-multi-select",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "Tree view with multi selection using checkbox",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"release": "release-it",
|
|
35
35
|
"example": "yarn --cwd example",
|
|
36
36
|
"build:android": "cd example/android && ./gradlew assembleDebug --no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a",
|
|
37
|
-
"build:ios": "cd example/ios && xcodebuild -workspace TreeMultiSelectExample.xcworkspace -scheme TreeMultiSelectExample -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO",
|
|
37
|
+
"build:ios": "cd example/ios && pod install && xcodebuild -workspace TreeMultiSelectExample.xcworkspace -scheme TreeMultiSelectExample -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO",
|
|
38
38
|
"bootstrap": "yarn example && yarn install && yarn example pods",
|
|
39
39
|
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build"
|
|
40
40
|
},
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
"@evilmartians/lefthook": "^1.2.2",
|
|
66
66
|
"@react-native-community/eslint-config": "^3.0.2",
|
|
67
67
|
"@release-it/conventional-changelog": "^5.0.0",
|
|
68
|
+
"@shopify/flash-list": "1.x.x",
|
|
68
69
|
"@types/color": "^3.0.3",
|
|
69
70
|
"@types/jest": "^28.1.2",
|
|
70
71
|
"@types/react": "~17.0.21",
|
|
@@ -81,6 +82,7 @@
|
|
|
81
82
|
"react": "18.2.0",
|
|
82
83
|
"react-native": "0.72.1",
|
|
83
84
|
"react-native-builder-bob": "^0.20.0",
|
|
85
|
+
"react-native-paper": "5.x.x",
|
|
84
86
|
"release-it": "^15.0.0",
|
|
85
87
|
"turbo": "^1.10.7",
|
|
86
88
|
"typescript": "^5.0.2"
|
|
@@ -89,9 +91,11 @@
|
|
|
89
91
|
"@types/react": "17.0.21"
|
|
90
92
|
},
|
|
91
93
|
"peerDependencies": {
|
|
92
|
-
"@shopify/flash-list": "
|
|
94
|
+
"@shopify/flash-list": "1.x.x",
|
|
93
95
|
"react": "*",
|
|
94
|
-
"react-native": "*"
|
|
96
|
+
"react-native": "*",
|
|
97
|
+
"react-native-paper": "5.x.x",
|
|
98
|
+
"react-native-vector-icons": "*"
|
|
95
99
|
},
|
|
96
100
|
"engines": {
|
|
97
101
|
"node": ">= 16.0.0"
|
|
@@ -162,15 +166,20 @@
|
|
|
162
166
|
]
|
|
163
167
|
},
|
|
164
168
|
"dependencies": {
|
|
165
|
-
"
|
|
166
|
-
"@shopify/flash-list": "^1.4.3",
|
|
167
|
-
"react-native-gesture-handler": "^2.12.0",
|
|
168
|
-
"react-native-paper": "^5.9.1",
|
|
169
|
-
"react-native-safe-area-context": "^4.6.4",
|
|
170
|
-
"react-native-vector-icons": "^9.2.0"
|
|
169
|
+
"zustand": "^4.3.9"
|
|
171
170
|
},
|
|
172
|
-
"funding":
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
171
|
+
"funding": [
|
|
172
|
+
{
|
|
173
|
+
"type": "individual",
|
|
174
|
+
"url": "https://www.paypal.com/paypalme/jairajjangle001/usd"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"type": "individual",
|
|
178
|
+
"url": "https://liberapay.com/FutureJJ/donate"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"type": "individual",
|
|
182
|
+
"url": "https://ko-fi.com/futurejj"
|
|
183
|
+
}
|
|
184
|
+
]
|
|
176
185
|
}
|
package/src/TreeView.tsx
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import React
|
|
2
|
-
useEffect,
|
|
3
|
-
forwardRef,
|
|
4
|
-
useImperativeHandle,
|
|
5
|
-
} from 'react';
|
|
1
|
+
import React from 'react';
|
|
6
2
|
import type {
|
|
7
3
|
TreeNode,
|
|
8
4
|
TreeViewProps,
|
|
@@ -18,18 +14,10 @@ import {
|
|
|
18
14
|
expandAll,
|
|
19
15
|
collapseAll
|
|
20
16
|
} from './helpers';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
cleanUpGlobalSignals,
|
|
24
|
-
expanded,
|
|
25
|
-
globalData,
|
|
26
|
-
searchKeys,
|
|
27
|
-
searchText,
|
|
28
|
-
state
|
|
29
|
-
} from './signals/global.signals';
|
|
17
|
+
import { useStore } from './store/global.store';
|
|
30
18
|
import { InteractionManager } from 'react-native';
|
|
31
19
|
|
|
32
|
-
const _TreeView = forwardRef<TreeViewRef, TreeViewProps>(
|
|
20
|
+
const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
|
|
33
21
|
(props, ref) => {
|
|
34
22
|
const {
|
|
35
23
|
data,
|
|
@@ -47,7 +35,24 @@ const _TreeView = forwardRef<TreeViewRef, TreeViewProps>(
|
|
|
47
35
|
ExpandCollapseTouchableComponent
|
|
48
36
|
} = props;
|
|
49
37
|
|
|
50
|
-
|
|
38
|
+
const {
|
|
39
|
+
cleanUpGlobalSignals,
|
|
40
|
+
|
|
41
|
+
expanded,
|
|
42
|
+
updateExpanded,
|
|
43
|
+
|
|
44
|
+
globalData,
|
|
45
|
+
updateGlobalData,
|
|
46
|
+
|
|
47
|
+
searchText,
|
|
48
|
+
updatedSearchText,
|
|
49
|
+
|
|
50
|
+
updatedSearchKeys,
|
|
51
|
+
|
|
52
|
+
checked
|
|
53
|
+
} = useStore();
|
|
54
|
+
|
|
55
|
+
React.useImperativeHandle(ref, () => ({
|
|
51
56
|
selectAll,
|
|
52
57
|
unselectAll,
|
|
53
58
|
|
|
@@ -61,59 +66,18 @@ const _TreeView = forwardRef<TreeViewRef, TreeViewProps>(
|
|
|
61
66
|
}));
|
|
62
67
|
|
|
63
68
|
function setSearchText(text: string, keys: string[] = ["name"]) {
|
|
64
|
-
|
|
65
|
-
|
|
69
|
+
updatedSearchText(text);
|
|
70
|
+
updatedSearchKeys(keys);
|
|
66
71
|
}
|
|
67
72
|
|
|
68
|
-
useEffect(() => {
|
|
69
|
-
|
|
73
|
+
React.useEffect(() => {
|
|
74
|
+
updateGlobalData(data);
|
|
70
75
|
initializeNodeMaps(
|
|
71
76
|
data,
|
|
72
77
|
preselectedIds,
|
|
73
78
|
);
|
|
74
|
-
}, [data, preselectedIds]);
|
|
75
|
-
|
|
76
|
-
const disposeCheckedStateEffect = React.useMemo(() => {
|
|
77
|
-
return effect(() => {
|
|
78
|
-
onCheck && onCheck(Array.from(state.value.checked));
|
|
79
|
-
});
|
|
80
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
81
|
-
}, []);
|
|
82
|
-
|
|
83
|
-
const disposeExpandedStateEffect = React.useMemo(() => {
|
|
84
|
-
return effect(() => {
|
|
85
|
-
onExpand && onExpand(Array.from(expanded.value));
|
|
86
|
-
});
|
|
87
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
88
|
-
}, []);
|
|
89
|
-
|
|
90
|
-
const disposeSearchStateEffect = React.useMemo(() => {
|
|
91
|
-
return effect(() => {
|
|
92
|
-
if (searchText.value) {
|
|
93
|
-
InteractionManager.runAfterInteractions(() => {
|
|
94
|
-
expanded.value = (new Set(globalData.value.flatMap((item) => getIds(item))));
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
InteractionManager.runAfterInteractions(() => {
|
|
99
|
-
expanded.value = (new Set());
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
104
|
-
}, []);
|
|
79
|
+
}, [updateGlobalData, data, preselectedIds]);
|
|
105
80
|
|
|
106
|
-
useEffect(() => {
|
|
107
|
-
return () => {
|
|
108
|
-
// Cleanup all global signals and signal effects
|
|
109
|
-
disposeCheckedStateEffect();
|
|
110
|
-
disposeExpandedStateEffect();
|
|
111
|
-
disposeSearchStateEffect();
|
|
112
|
-
|
|
113
|
-
cleanUpGlobalSignals();
|
|
114
|
-
};
|
|
115
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
116
|
-
}, []);
|
|
117
81
|
|
|
118
82
|
const getIds = React.useCallback((node: TreeNode): string[] => {
|
|
119
83
|
if (!node.children || node.children.length === 0) {
|
|
@@ -123,6 +87,33 @@ const _TreeView = forwardRef<TreeViewRef, TreeViewProps>(
|
|
|
123
87
|
}
|
|
124
88
|
}, []);
|
|
125
89
|
|
|
90
|
+
React.useEffect(() => {
|
|
91
|
+
onCheck && onCheck(Array.from(checked));
|
|
92
|
+
}, [onCheck, checked]);
|
|
93
|
+
|
|
94
|
+
React.useEffect(() => {
|
|
95
|
+
onExpand && onExpand(Array.from(expanded));
|
|
96
|
+
}, [onExpand, expanded]);
|
|
97
|
+
|
|
98
|
+
React.useEffect(() => {
|
|
99
|
+
if (searchText) {
|
|
100
|
+
InteractionManager.runAfterInteractions(() => {
|
|
101
|
+
updateExpanded(new Set(globalData.flatMap((item) => getIds(item))));
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
InteractionManager.runAfterInteractions(() => {
|
|
106
|
+
updateExpanded(new Set());
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}, [getIds, globalData, searchText, updateExpanded]);
|
|
110
|
+
|
|
111
|
+
React.useEffect(() => {
|
|
112
|
+
return () => {
|
|
113
|
+
cleanUpGlobalSignals();
|
|
114
|
+
};
|
|
115
|
+
}, [cleanUpGlobalSignals]);
|
|
116
|
+
|
|
126
117
|
return (
|
|
127
118
|
<NodeList
|
|
128
119
|
treeFlashListProps={treeFlashListProps}
|