@sheinx/hooks 3.6.0-beta.3 → 3.6.0-beta.4
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/cjs/common/use-filter/use-filter.d.ts.map +1 -1
- package/cjs/components/use-cascader/use-cascader.d.ts.map +1 -1
- package/cjs/components/use-cascader/use-cascader.type.d.ts +2 -1
- package/cjs/components/use-cascader/use-cascader.type.d.ts.map +1 -1
- package/cjs/components/use-form/use-form.d.ts.map +1 -1
- package/cjs/components/use-form/use-form.js +2 -1
- package/cjs/components/use-input/use-input-format.d.ts.map +1 -1
- package/cjs/components/use-input/use-input-format.js +12 -4
- package/cjs/components/use-table/use-table-tree.d.ts +13 -0
- package/cjs/components/use-table/use-table-tree.d.ts.map +1 -1
- package/cjs/components/use-table/use-table-tree.js +68 -1
- package/cjs/components/use-table/use-table-virtual.js +3 -3
- package/cjs/components/use-tree/index.d.ts +2 -1
- package/cjs/components/use-tree/index.d.ts.map +1 -1
- package/cjs/components/use-tree/index.js +7 -0
- package/cjs/components/use-tree/use-tree-node.d.ts.map +1 -1
- package/cjs/components/use-tree/use-tree-node.js +1 -5
- package/cjs/components/use-tree/use-tree-node.type.d.ts +18 -0
- package/cjs/components/use-tree/use-tree-node.type.d.ts.map +1 -1
- package/cjs/components/use-tree/use-tree-virtual-node.d.ts +13 -0
- package/cjs/components/use-tree/use-tree-virtual-node.d.ts.map +1 -0
- package/cjs/components/use-tree/use-tree-virtual-node.js +92 -0
- package/cjs/components/use-tree/use-tree.d.ts.map +1 -1
- package/cjs/components/use-tree/use-tree.js +179 -7
- package/cjs/components/use-tree/use-tree.type.d.ts +31 -1
- package/cjs/components/use-tree/use-tree.type.d.ts.map +1 -1
- package/cjs/utils/is.d.ts +2 -0
- package/cjs/utils/is.d.ts.map +1 -1
- package/cjs/utils/is.js +5 -2
- package/cjs/utils/object.d.ts.map +1 -1
- package/cjs/utils/object.js +6 -1
- package/cjs/utils/warning.js +5 -5
- package/esm/common/use-filter/use-filter.d.ts.map +1 -1
- package/esm/components/use-cascader/use-cascader.d.ts.map +1 -1
- package/esm/components/use-cascader/use-cascader.type.d.ts +2 -1
- package/esm/components/use-cascader/use-cascader.type.d.ts.map +1 -1
- package/esm/components/use-form/use-form.d.ts.map +1 -1
- package/esm/components/use-form/use-form.js +2 -1
- package/esm/components/use-input/use-input-format.d.ts.map +1 -1
- package/esm/components/use-input/use-input-format.js +12 -4
- package/esm/components/use-table/use-table-tree.d.ts +13 -0
- package/esm/components/use-table/use-table-tree.d.ts.map +1 -1
- package/esm/components/use-table/use-table-tree.js +67 -0
- package/esm/components/use-table/use-table-virtual.js +3 -3
- package/esm/components/use-tree/index.d.ts +2 -1
- package/esm/components/use-tree/index.d.ts.map +1 -1
- package/esm/components/use-tree/index.js +2 -1
- package/esm/components/use-tree/use-tree-node.d.ts.map +1 -1
- package/esm/components/use-tree/use-tree-node.js +1 -5
- package/esm/components/use-tree/use-tree-node.type.d.ts +18 -0
- package/esm/components/use-tree/use-tree-node.type.d.ts.map +1 -1
- package/esm/components/use-tree/use-tree-virtual-node.d.ts +13 -0
- package/esm/components/use-tree/use-tree-virtual-node.d.ts.map +1 -0
- package/esm/components/use-tree/use-tree-virtual-node.js +85 -0
- package/esm/components/use-tree/use-tree.d.ts.map +1 -1
- package/esm/components/use-tree/use-tree.js +181 -9
- package/esm/components/use-tree/use-tree.type.d.ts +31 -1
- package/esm/components/use-tree/use-tree.type.d.ts.map +1 -1
- package/esm/utils/is.d.ts +2 -0
- package/esm/utils/is.d.ts.map +1 -1
- package/esm/utils/is.js +4 -1
- package/esm/utils/object.d.ts.map +1 -1
- package/esm/utils/object.js +6 -1
- package/esm/utils/warning.js +5 -5
- package/package.json +1 -1
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import type { BaseTableProps } from './use-table.type';
|
|
2
2
|
import { OptionalToRequired } from '../../common/type';
|
|
3
|
+
type treeDataInfoType = {
|
|
4
|
+
id: string | number;
|
|
5
|
+
level: number;
|
|
6
|
+
data: any;
|
|
7
|
+
pid: null | string | number;
|
|
8
|
+
};
|
|
9
|
+
interface GetExpandDataVirtualResult {
|
|
10
|
+
treeData: any[];
|
|
11
|
+
treeExpandLevel: Map<any, number>;
|
|
12
|
+
unmatchExpandKeys: (string | number)[];
|
|
13
|
+
treeDataInfo: treeDataInfoType[];
|
|
14
|
+
}
|
|
15
|
+
export declare const getExpandVirtualData: (_treeData: any[], keys: (string | number)[], keygen: any, treeColumnsName?: string) => GetExpandDataVirtualResult;
|
|
3
16
|
export interface UseTableTreeProps extends Pick<OptionalToRequired<BaseTableProps<any>>, 'onTreeExpand' | 'treeExpandKeys' | 'defaultTreeExpandKeys' | 'keygen'> {
|
|
4
17
|
treeColumnsName: string | undefined;
|
|
5
18
|
data: any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-table-tree.d.ts","sourceRoot":"","sources":["use-table-tree.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-table-tree.d.ts","sourceRoot":"","sources":["use-table-tree.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;CAC7B,CAAC;AAOF,UAAU,0BAA0B;IAClC,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,eAAe,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,iBAAiB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACvC,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAwCD,eAAO,MAAM,oBAAoB,cACpB,GAAG,EAAE,QACV,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,UACjB,GAAG,oBACO,MAAM,KACvB,0BAyDF,CAAC;AAEF,MAAM,WAAW,iBACf,SAAQ,IAAI,CACV,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EACvC,cAAc,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,QAAQ,CACvE;IACD,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED,eAAO,MAAM,YAAY,UAAW,iBAAiB;;;;;;+BA6BR,GAAG,SAAS,MAAM;iCAjBhB,GAAG,SAAS,MAAM;;CA4DhE,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -54,6 +54,73 @@ var getExpandData = function getExpandData(_treeData, keys, keygen, treeColumnsN
|
|
|
54
54
|
unmatchExpandKeys: unmatchExpandKeys
|
|
55
55
|
};
|
|
56
56
|
};
|
|
57
|
+
export var getExpandVirtualData = function getExpandVirtualData(_treeData, keys, keygen, treeColumnsName) {
|
|
58
|
+
var expandKeys = keys;
|
|
59
|
+
var expandSet = new Set(expandKeys);
|
|
60
|
+
var unmatchExpandKeys = [];
|
|
61
|
+
var treeExpandLevel = new Map();
|
|
62
|
+
if (expandSet.size === 0 || !treeColumnsName) {
|
|
63
|
+
var _treeDataInfo = _treeData.map(function (item, index) {
|
|
64
|
+
return {
|
|
65
|
+
id: getKey(keygen, item, index),
|
|
66
|
+
level: 1,
|
|
67
|
+
data: item,
|
|
68
|
+
pid: null
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
72
|
+
treeData: _treeData,
|
|
73
|
+
treeExpandLevel: treeExpandLevel,
|
|
74
|
+
unmatchExpandKeys: unmatchExpandKeys,
|
|
75
|
+
treeDataInfo: _treeDataInfo
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
var treeData = _toConsumableArray(_treeData || []);
|
|
79
|
+
var treeDataInfo = treeData.map(function (item) {
|
|
80
|
+
return {
|
|
81
|
+
id: getKey(keygen, item),
|
|
82
|
+
level: 1,
|
|
83
|
+
data: item,
|
|
84
|
+
pid: null
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
var _loop2 = function _loop2() {
|
|
88
|
+
if (expandSet.size === 0) return 1; // break
|
|
89
|
+
var item = treeData[i];
|
|
90
|
+
var key = getKey(keygen, item, i);
|
|
91
|
+
var parentLevel = treeExpandLevel.get(key) || 0;
|
|
92
|
+
var children = isObject(item) && item[treeColumnsName];
|
|
93
|
+
if (expandSet.has(key)) {
|
|
94
|
+
if (children && children.length > 0) {
|
|
95
|
+
var nodes = [];
|
|
96
|
+
children.forEach(function (child) {
|
|
97
|
+
var node = {
|
|
98
|
+
id: getKey(keygen, child),
|
|
99
|
+
level: parentLevel + 2,
|
|
100
|
+
data: child,
|
|
101
|
+
pid: key
|
|
102
|
+
};
|
|
103
|
+
nodes.push(node);
|
|
104
|
+
treeExpandLevel.set(getKey(keygen, child), parentLevel + 1);
|
|
105
|
+
});
|
|
106
|
+
treeData.splice.apply(treeData, [i + 1, 0].concat(_toConsumableArray(children)));
|
|
107
|
+
treeDataInfo.splice.apply(treeDataInfo, [i + 1, 0].concat(nodes));
|
|
108
|
+
expandSet.delete(key);
|
|
109
|
+
} else {
|
|
110
|
+
unmatchExpandKeys.push(key);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
for (var i = 0; i < treeData.length; i++) {
|
|
115
|
+
if (_loop2()) break;
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
treeData: treeData,
|
|
119
|
+
treeExpandLevel: treeExpandLevel,
|
|
120
|
+
unmatchExpandKeys: unmatchExpandKeys,
|
|
121
|
+
treeDataInfo: treeDataInfo
|
|
122
|
+
};
|
|
123
|
+
};
|
|
57
124
|
export var useTableTree = function useTableTree(props) {
|
|
58
125
|
var _useState = useState(props.defaultTreeExpandKeys || []),
|
|
59
126
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -163,7 +163,7 @@ var useTableVirtual = function useTableVirtual(props) {
|
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
165
|
});
|
|
166
|
-
var updateIndexAndTopFromTop = function updateIndexAndTopFromTop(scrollTop) {
|
|
166
|
+
var updateIndexAndTopFromTop = function updateIndexAndTopFromTop(scrollTop, fromDrag) {
|
|
167
167
|
var _props$scrollRef$curr;
|
|
168
168
|
if (props.disabled) return;
|
|
169
169
|
var sum = 0;
|
|
@@ -203,7 +203,7 @@ var useTableVirtual = function useTableVirtual(props) {
|
|
|
203
203
|
setStartIndex(currentIndex);
|
|
204
204
|
|
|
205
205
|
// startIndex处于上方某个合并行的中间一行时,可能引起translate闪烁
|
|
206
|
-
if (startIndex < currentIndex) {
|
|
206
|
+
if (rowSpanInfo && !fromDrag && startIndex < currentIndex) {
|
|
207
207
|
context.autoAddRows = currentIndex - startIndex;
|
|
208
208
|
setTimeout(function () {
|
|
209
209
|
context.autoAddRows = 0;
|
|
@@ -263,7 +263,7 @@ var useTableVirtual = function useTableVirtual(props) {
|
|
|
263
263
|
// 拖动滚动条
|
|
264
264
|
if (fromDrag) {
|
|
265
265
|
var top = y * max;
|
|
266
|
-
updateIndexAndTopFromTop(top);
|
|
266
|
+
updateIndexAndTopFromTop(top, fromDrag);
|
|
267
267
|
if (context.rateTimer) clearTimeout(context.rateTimer);
|
|
268
268
|
context.rateTimer = setTimeout(function () {
|
|
269
269
|
updateRateScroll(y);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default, default as useTree } from './use-tree';
|
|
2
|
-
export type { BaseTreeProps, UpdateFunc, TreePathType, TreeModeType } from './use-tree.type';
|
|
2
|
+
export type { BaseTreeProps, UpdateFunc, TreePathType, TreeModeType, DisabledOption, FlatNodeType, } from './use-tree.type';
|
|
3
3
|
export { default as useTreeNode } from './use-tree-node';
|
|
4
|
+
export { default as useTreeVirtualNode } from './use-tree-virtual-node';
|
|
4
5
|
export type { BaseTreeNodeProps, UpdateType } from './use-tree-node.type';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tree-node.d.ts","sourceRoot":"","sources":["use-tree-node.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,QAAA,MAAM,WAAW;kBAMmB,MAAM,SAAS,OAAO;;;;;;;;
|
|
1
|
+
{"version":3,"file":"use-tree-node.d.ts","sourceRoot":"","sources":["use-tree-node.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,QAAA,MAAM,WAAW;kBAMmB,MAAM,SAAS,OAAO;;;;;;;;CA+CzD,CAAC;AACF,eAAe,WAAW,CAAC"}
|
|
@@ -41,11 +41,7 @@ var useTreeNode = function useTreeNode(props) {
|
|
|
41
41
|
break;
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
|
-
var handleToggle = function handleToggle() {
|
|
45
|
-
// const newExpand = !expanded;
|
|
46
|
-
// setExpanded(newExpand);
|
|
47
|
-
// if (onToggle) onToggle(id, newExpand);
|
|
48
|
-
};
|
|
44
|
+
var handleToggle = function handleToggle() {};
|
|
49
45
|
var isLeaf = function isLeaf() {
|
|
50
46
|
var children = data[childrenKey];
|
|
51
47
|
if (children && children.length > 0) return false;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { KeygenResult } from '../../common/type';
|
|
3
|
+
import { TreeDatum } from './use-tree.type';
|
|
3
4
|
export type UpdateType = 'active' | 'expanded' | 'fetching';
|
|
4
5
|
export type UpdateFunc = (name: string, active: boolean) => void;
|
|
5
6
|
export interface NodeState {
|
|
@@ -12,8 +13,25 @@ export interface BaseTreeNodeProps<DataItem, Value> {
|
|
|
12
13
|
data: DataItem;
|
|
13
14
|
childrenKey: keyof DataItem;
|
|
14
15
|
element: React.RefObject<HTMLDivElement>;
|
|
16
|
+
dragImageStyle?: React.CSSProperties;
|
|
15
17
|
dragImageSelector: (data?: DataItem) => string | undefined;
|
|
18
|
+
bindNode: (id: KeygenResult, update: UpdateFunc, data: DataItem) => {
|
|
19
|
+
expanded: boolean;
|
|
20
|
+
active: boolean;
|
|
21
|
+
};
|
|
22
|
+
content: HTMLDivElement | null;
|
|
23
|
+
loader?: (key: KeygenResult, data: DataItem) => void;
|
|
24
|
+
onToggle?: (id: Value, expanded: boolean) => void;
|
|
25
|
+
onDrop?: (data: DataItem[], key: KeygenResult, targetKey: KeygenResult, position: number) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface BaseTreeVirtualNodeProps<DataItem, Value> {
|
|
28
|
+
id: KeygenResult;
|
|
29
|
+
data: DataItem;
|
|
30
|
+
expanded?: boolean;
|
|
31
|
+
childrenKey: keyof DataItem;
|
|
32
|
+
element: React.RefObject<HTMLDivElement>;
|
|
16
33
|
dragImageStyle?: React.CSSProperties;
|
|
34
|
+
datum?: TreeDatum<DataItem>;
|
|
17
35
|
bindNode: (id: KeygenResult, update: UpdateFunc, data: DataItem) => {
|
|
18
36
|
expanded: boolean;
|
|
19
37
|
active: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tree-node.type.d.ts","sourceRoot":"","sources":["use-tree-node.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-tree-node.type.d.ts","sourceRoot":"","sources":["use-tree-node.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAEjE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,EAAE,KAAK;IAChD,EAAE,EAAE,YAAY,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,QAAQ,CAAC;IAC5B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,QAAQ,EAAE,CACR,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,KACX;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5C,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACnG;AAED,MAAM,WAAW,wBAAwB,CAAC,QAAQ,EAAE,KAAK;IACvD,EAAE,EAAE,YAAY,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,QAAQ,CAAC;IAC5B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5B,QAAQ,EAAE,CACR,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,KACX;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5C,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACnG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseTreeVirtualNodeProps } from './use-tree-node.type';
|
|
2
|
+
declare const useTreeVirtualNode: <DataItem, Value>(props: BaseTreeVirtualNodeProps<DataItem, Value>) => {
|
|
3
|
+
update: (key: string, value: boolean) => void;
|
|
4
|
+
active: boolean;
|
|
5
|
+
expanded: boolean;
|
|
6
|
+
fetching: boolean;
|
|
7
|
+
isLeaf: () => boolean;
|
|
8
|
+
setFetching: (v: boolean) => void;
|
|
9
|
+
setExpanded: (v: boolean) => void;
|
|
10
|
+
onToggle: () => void;
|
|
11
|
+
};
|
|
12
|
+
export default useTreeVirtualNode;
|
|
13
|
+
//# sourceMappingURL=use-tree-virtual-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-tree-virtual-node.d.ts","sourceRoot":"","sources":["use-tree-virtual-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,QAAA,MAAM,kBAAkB;kBAMY,MAAM,SAAS,OAAO;;;;;qBAoB1B,OAAO;qBASP,OAAO;;CAkCtC,CAAC;AACF,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { useEffect, useState } from 'react';
|
|
8
|
+
import usePersistFn from "../../common/use-persist-fn";
|
|
9
|
+
var useTreeVirtualNode = function useTreeVirtualNode(props) {
|
|
10
|
+
var _datum$dataFlatStatus, _datum$dataFlatStatus2, _datum$dataFlatStatus3;
|
|
11
|
+
var id = props.id,
|
|
12
|
+
data = props.data,
|
|
13
|
+
childrenKey = props.childrenKey,
|
|
14
|
+
bindNode = props.bindNode,
|
|
15
|
+
loader = props.loader,
|
|
16
|
+
datum = props.datum;
|
|
17
|
+
var _useState = useState((datum === null || datum === void 0 || (_datum$dataFlatStatus = datum.dataFlatStatusMap.get(id)) === null || _datum$dataFlatStatus === void 0 ? void 0 : _datum$dataFlatStatus.active) || false),
|
|
18
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
19
|
+
active = _useState2[0],
|
|
20
|
+
setActive = _useState2[1];
|
|
21
|
+
var _useState3 = useState((datum === null || datum === void 0 || (_datum$dataFlatStatus2 = datum.dataFlatStatusMap.get(id)) === null || _datum$dataFlatStatus2 === void 0 ? void 0 : _datum$dataFlatStatus2.expanded) || false),
|
|
22
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
23
|
+
expanded = _useState4[0],
|
|
24
|
+
setExpanded = _useState4[1];
|
|
25
|
+
var _useState5 = useState((datum === null || datum === void 0 || (_datum$dataFlatStatus3 = datum.dataFlatStatusMap.get(id)) === null || _datum$dataFlatStatus3 === void 0 ? void 0 : _datum$dataFlatStatus3.fetching) || false),
|
|
26
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
27
|
+
fetching = _useState6[0],
|
|
28
|
+
setFetching = _useState6[1];
|
|
29
|
+
var update = usePersistFn(function (key, value) {
|
|
30
|
+
switch (key) {
|
|
31
|
+
case 'active':
|
|
32
|
+
if (value !== active) {
|
|
33
|
+
setActive(value);
|
|
34
|
+
}
|
|
35
|
+
break;
|
|
36
|
+
case 'expanded':
|
|
37
|
+
setExpanded(value);
|
|
38
|
+
break;
|
|
39
|
+
case 'fetching':
|
|
40
|
+
if (value !== fetching) {
|
|
41
|
+
setFetching(value);
|
|
42
|
+
}
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
var handleToggle = function handleToggle() {};
|
|
47
|
+
var handleSetFetchind = function handleSetFetchind(v) {
|
|
48
|
+
datum === null || datum === void 0 || datum.dataFlatStatusMap.set(id, {
|
|
49
|
+
active: active,
|
|
50
|
+
expanded: expanded,
|
|
51
|
+
fetching: v
|
|
52
|
+
});
|
|
53
|
+
setFetching(v);
|
|
54
|
+
};
|
|
55
|
+
var handleSetExpanded = function handleSetExpanded(v) {
|
|
56
|
+
datum === null || datum === void 0 || datum.dataFlatStatusMap.set(id, {
|
|
57
|
+
active: active,
|
|
58
|
+
expanded: v,
|
|
59
|
+
fetching: fetching
|
|
60
|
+
});
|
|
61
|
+
setExpanded(v);
|
|
62
|
+
};
|
|
63
|
+
var isLeaf = function isLeaf() {
|
|
64
|
+
var children = data[childrenKey];
|
|
65
|
+
if (children && children.length > 0) return false;
|
|
66
|
+
if (Array.isArray(children) || children === null) return true;
|
|
67
|
+
if (fetching && !children) return false;
|
|
68
|
+
if (loader && !fetching) return false;
|
|
69
|
+
return true;
|
|
70
|
+
};
|
|
71
|
+
useEffect(function () {
|
|
72
|
+
bindNode(id, update, data);
|
|
73
|
+
}, []);
|
|
74
|
+
return {
|
|
75
|
+
update: update,
|
|
76
|
+
active: active,
|
|
77
|
+
expanded: expanded,
|
|
78
|
+
fetching: fetching,
|
|
79
|
+
isLeaf: isLeaf,
|
|
80
|
+
setFetching: handleSetFetchind,
|
|
81
|
+
setExpanded: handleSetExpanded,
|
|
82
|
+
onToggle: handleToggle
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
export default useTreeVirtualNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tree.d.ts","sourceRoot":"","sources":["use-tree.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAKb,SAAS,
|
|
1
|
+
{"version":3,"file":"use-tree.d.ts","sourceRoot":"","sources":["use-tree.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAKb,SAAS,EAGV,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAiBjD,eAAO,MAAM,IAAI;IACf;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEJ,CAAC;AAEF,QAAA,MAAM,OAAO;;;;;CA8nBZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
7
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
8
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
9
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
@@ -11,15 +17,15 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
11
17
|
import { useState, useEffect, useRef } from 'react';
|
|
12
18
|
import useLatestObj from "../../common/use-latest-obj";
|
|
13
19
|
import { useInputAble } from "../../common/use-input-able";
|
|
20
|
+
import { getExpandVirtualData } from "../use-table/use-table-tree";
|
|
14
21
|
import { usePersistFn } from "../../common/use-persist-fn";
|
|
15
|
-
import { isFunc, isString, isNumber, isArray, isUnMatchedData } from "../../utils/is";
|
|
16
|
-
import { devUseWarning } from "../../utils";
|
|
22
|
+
import { isFunc, isString, isNumber, isArray, isUnMatchedData, isOptionalDisabled } from "../../utils/is";
|
|
23
|
+
import { devUseWarning, produce } from "../../utils";
|
|
17
24
|
function toArray(value) {
|
|
18
25
|
if (!value) return [];
|
|
19
26
|
if (!Array.isArray(value)) return [value];
|
|
20
27
|
return value;
|
|
21
28
|
}
|
|
22
|
-
var global_tree_map = new Map();
|
|
23
29
|
export var MODE = {
|
|
24
30
|
/**
|
|
25
31
|
* 返回全选数据,包含父节点和子节点
|
|
@@ -52,6 +58,7 @@ var useTree = function useTree(props) {
|
|
|
52
58
|
childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
|
|
53
59
|
keygen = props.keygen,
|
|
54
60
|
mode = props.mode,
|
|
61
|
+
virtual = props.virtual,
|
|
55
62
|
activeProp = props.active,
|
|
56
63
|
expandedProp = props.expanded,
|
|
57
64
|
_props$dataUpdate = props.dataUpdate,
|
|
@@ -59,14 +66,19 @@ var useTree = function useTree(props) {
|
|
|
59
66
|
_props$defaultExpande = props.defaultExpanded,
|
|
60
67
|
defaultExpanded = _props$defaultExpande === void 0 ? [] : _props$defaultExpande,
|
|
61
68
|
defaultExpandAll = props.defaultExpandAll,
|
|
62
|
-
disabledProps = props.disabled,
|
|
63
69
|
unmatch = props.unmatch,
|
|
64
70
|
isControlled = props.isControlled,
|
|
65
71
|
onExpandProp = props.onExpand;
|
|
72
|
+
var disabledProps = isOptionalDisabled(props.disabled) ? props.disabled.disabled : props.disabled;
|
|
73
|
+
var isRealtime = isOptionalDisabled(props.disabled) ? props.disabled.isRealtime : false;
|
|
66
74
|
var _useState = useState(false),
|
|
67
75
|
_useState2 = _slicedToArray(_useState, 2),
|
|
68
76
|
inited = _useState2[0],
|
|
69
77
|
setInited = _useState2[1];
|
|
78
|
+
var _useState3 = useState([]),
|
|
79
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
80
|
+
dataFlat = _useState4[0],
|
|
81
|
+
setDataFlat = _useState4[1];
|
|
70
82
|
var _useInputAble = useInputAble({
|
|
71
83
|
value: expandedProp,
|
|
72
84
|
defaultValue: defaultExpanded,
|
|
@@ -79,6 +91,8 @@ var useTree = function useTree(props) {
|
|
|
79
91
|
var _useRef = useRef({
|
|
80
92
|
pathMap: new Map(),
|
|
81
93
|
dataMap: new Map(),
|
|
94
|
+
dataFlatStatusMap: new Map(),
|
|
95
|
+
dataFlat: [],
|
|
82
96
|
forceUpdateMap: new Map(),
|
|
83
97
|
valueMap: new Map(),
|
|
84
98
|
updateMap: new Map(),
|
|
@@ -110,11 +124,27 @@ var useTree = function useTree(props) {
|
|
|
110
124
|
expanded: shouldDefaultExpand
|
|
111
125
|
};
|
|
112
126
|
}
|
|
127
|
+
if (virtual) {
|
|
128
|
+
return {
|
|
129
|
+
active: isActive,
|
|
130
|
+
expanded: context.dataFlatStatusMap.get(id).expanded
|
|
131
|
+
};
|
|
132
|
+
}
|
|
113
133
|
return {
|
|
114
134
|
active: isActive,
|
|
115
135
|
expanded: !!(expandeds && expandeds.indexOf(id) >= 0)
|
|
116
136
|
};
|
|
117
137
|
};
|
|
138
|
+
|
|
139
|
+
// 注册节点
|
|
140
|
+
var bindVirtualNode = function bindVirtualNode(id, update) {
|
|
141
|
+
context.updateMap.set(id, update);
|
|
142
|
+
var isActive = activeProp === id;
|
|
143
|
+
return {
|
|
144
|
+
active: isActive,
|
|
145
|
+
expanded: context.dataFlatStatusMap.get(id).expanded
|
|
146
|
+
};
|
|
147
|
+
};
|
|
118
148
|
var get = function get(id) {
|
|
119
149
|
return context.valueMap.get(id);
|
|
120
150
|
};
|
|
@@ -127,7 +157,6 @@ var useTree = function useTree(props) {
|
|
|
127
157
|
if (keygen && (isString(keygen) || isNumber(keygen))) {
|
|
128
158
|
return item[keygen];
|
|
129
159
|
}
|
|
130
|
-
|
|
131
160
|
// 降级处理
|
|
132
161
|
return id + (id ? ',' : '') + index;
|
|
133
162
|
};
|
|
@@ -225,6 +254,8 @@ var useTree = function useTree(props) {
|
|
|
225
254
|
};
|
|
226
255
|
var initData = function initData(data, path, disabled) {
|
|
227
256
|
var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
257
|
+
var level = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
|
|
258
|
+
var pid = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
|
|
228
259
|
var ids = [];
|
|
229
260
|
for (var i = 0; i < data.length; i++) {
|
|
230
261
|
var item = data[i];
|
|
@@ -236,6 +267,28 @@ var useTree = function useTree(props) {
|
|
|
236
267
|
}
|
|
237
268
|
// 制作 data mapping
|
|
238
269
|
context.dataMap.set(id, item);
|
|
270
|
+
if (virtual) {
|
|
271
|
+
context.dataFlatStatusMap.set(id, {
|
|
272
|
+
active: false,
|
|
273
|
+
expanded: defaultExpandAll ? true : (expanded === null || expanded === void 0 ? void 0 : expanded.includes(id)) || false,
|
|
274
|
+
fetching: false
|
|
275
|
+
});
|
|
276
|
+
var node = {
|
|
277
|
+
id: id,
|
|
278
|
+
level: level,
|
|
279
|
+
data: item,
|
|
280
|
+
pid: pid
|
|
281
|
+
};
|
|
282
|
+
if (defaultExpandAll) {
|
|
283
|
+
context.dataFlat.push(node);
|
|
284
|
+
} else {
|
|
285
|
+
if (level === 1) {
|
|
286
|
+
context.dataFlat.push(node);
|
|
287
|
+
} else if (expanded && pid !== null && expanded.indexOf(pid) >= 0) {
|
|
288
|
+
context.dataFlat.push(node);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
239
292
|
var _isDisabled = !!disabled;
|
|
240
293
|
if (_isDisabled === false) {
|
|
241
294
|
_isDisabled = getDisabled()(item);
|
|
@@ -244,7 +297,7 @@ var useTree = function useTree(props) {
|
|
|
244
297
|
ids.push(id);
|
|
245
298
|
var children = [];
|
|
246
299
|
if (Array.isArray(item[childrenKey])) {
|
|
247
|
-
var _children = initData(item[childrenKey], [].concat(_toConsumableArray(path), [id]), mode === MODE.MODE_4 ? disabled : _isDisabled, indexPath);
|
|
300
|
+
var _children = initData(item[childrenKey], [].concat(_toConsumableArray(path), [id]), mode === MODE.MODE_4 ? disabled : _isDisabled, indexPath, level + 1, id);
|
|
248
301
|
if (_children) children = _children;
|
|
249
302
|
}
|
|
250
303
|
context.pathMap.set(id, {
|
|
@@ -322,7 +375,15 @@ var useTree = function useTree(props) {
|
|
|
322
375
|
var isDisabled = function isDisabled(id) {
|
|
323
376
|
if (isFunc(disabledProps)) {
|
|
324
377
|
var node = context.pathMap.get(id);
|
|
325
|
-
if (node)
|
|
378
|
+
if (node) {
|
|
379
|
+
if (isRealtime) {
|
|
380
|
+
var item = context.dataMap.get(id);
|
|
381
|
+
if (!item) return false;
|
|
382
|
+
return getDisabled()(item);
|
|
383
|
+
} else {
|
|
384
|
+
return node.isDisabled;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
326
387
|
return false;
|
|
327
388
|
}
|
|
328
389
|
return !!disabledProps;
|
|
@@ -352,11 +413,20 @@ var useTree = function useTree(props) {
|
|
|
352
413
|
context.cachedValue = [];
|
|
353
414
|
context.pathMap = new Map();
|
|
354
415
|
context.dataMap = new Map();
|
|
416
|
+
context.dataFlat = [];
|
|
417
|
+
context.dataFlatStatusMap = new Map();
|
|
355
418
|
context.valueMap = new Map();
|
|
356
419
|
context.unmatchedValueMap = new Map();
|
|
357
420
|
context.data = toArray(data);
|
|
421
|
+
if (virtual) {
|
|
422
|
+
context.dataFlat = [];
|
|
423
|
+
setDataFlat([]);
|
|
424
|
+
}
|
|
358
425
|
if (!data) return;
|
|
359
426
|
initData(context.data, []);
|
|
427
|
+
if (virtual) {
|
|
428
|
+
setDataFlat(context.dataFlat);
|
|
429
|
+
}
|
|
360
430
|
initValue();
|
|
361
431
|
setValue(prevValue);
|
|
362
432
|
|
|
@@ -402,6 +472,101 @@ var useTree = function useTree(props) {
|
|
|
402
472
|
}
|
|
403
473
|
return current;
|
|
404
474
|
};
|
|
475
|
+
var appendChildrenExpanded = function appendChildrenExpanded(child, level, pid, insertData) {
|
|
476
|
+
if (!child) return;
|
|
477
|
+
child.forEach(function (item, i) {
|
|
478
|
+
var _context$dataFlatStat;
|
|
479
|
+
var childId = getKey(item, pid, i);
|
|
480
|
+
var node = {
|
|
481
|
+
id: childId,
|
|
482
|
+
level: level,
|
|
483
|
+
data: item,
|
|
484
|
+
pid: pid
|
|
485
|
+
};
|
|
486
|
+
insertData.push(node);
|
|
487
|
+
if ((_context$dataFlatStat = context.dataFlatStatusMap.get(childId)) !== null && _context$dataFlatStat !== void 0 && _context$dataFlatStat.expanded && item[childrenKey]) {
|
|
488
|
+
appendChildrenExpanded(item[childrenKey], level + 1, childId, insertData);
|
|
489
|
+
}
|
|
490
|
+
});
|
|
491
|
+
};
|
|
492
|
+
var insertFlat = function insertFlat(id) {
|
|
493
|
+
var item = getDataById(id);
|
|
494
|
+
if (isUnMatchedData(item)) return;
|
|
495
|
+
if (!item) return;
|
|
496
|
+
var status = context.dataFlatStatusMap.get(id);
|
|
497
|
+
if (!status) return;
|
|
498
|
+
var childrenData = item[childrenKey];
|
|
499
|
+
var insertStartNode = dataFlat.find(function (item) {
|
|
500
|
+
return item.id === id;
|
|
501
|
+
});
|
|
502
|
+
context.dataFlatStatusMap.set(id, _objectSpread(_objectSpread({}, status), {}, {
|
|
503
|
+
expanded: true,
|
|
504
|
+
fetching: false
|
|
505
|
+
}));
|
|
506
|
+
if (!insertStartNode) return;
|
|
507
|
+
var insertData = [];
|
|
508
|
+
appendChildrenExpanded(childrenData, insertStartNode.level + 1, id, insertData);
|
|
509
|
+
var insertIndex = dataFlat.indexOf(insertStartNode);
|
|
510
|
+
var nextDataFlat = produce(dataFlat, function (draft) {
|
|
511
|
+
draft.splice.apply(draft, [insertIndex + 1, 0].concat(_toConsumableArray(insertData)));
|
|
512
|
+
});
|
|
513
|
+
setDataFlat(nextDataFlat);
|
|
514
|
+
};
|
|
515
|
+
var removeFlat = function removeFlat(id) {
|
|
516
|
+
var item = getDataById(id);
|
|
517
|
+
if (isUnMatchedData(item)) return;
|
|
518
|
+
if (!item) return;
|
|
519
|
+
var removeNode = dataFlat.find(function (item) {
|
|
520
|
+
return item.id === id;
|
|
521
|
+
});
|
|
522
|
+
if (!removeNode) return;
|
|
523
|
+
var status = context.dataFlatStatusMap.get(id);
|
|
524
|
+
if (!status) return;
|
|
525
|
+
context.dataFlatStatusMap.set(id, _objectSpread(_objectSpread({}, status), {}, {
|
|
526
|
+
fetching: false,
|
|
527
|
+
expanded: false
|
|
528
|
+
}));
|
|
529
|
+
var removeStartIndex = dataFlat.indexOf(removeNode);
|
|
530
|
+
var removeEndIndex = 0;
|
|
531
|
+
for (var i = removeStartIndex + 1; i < dataFlat.length; i++) {
|
|
532
|
+
if (dataFlat[i].level <= removeNode.level) {
|
|
533
|
+
removeEndIndex = i;
|
|
534
|
+
break;
|
|
535
|
+
}
|
|
536
|
+
if (i === dataFlat.length - 1) {
|
|
537
|
+
removeEndIndex = i + 1;
|
|
538
|
+
break;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
var nextDataFlat = produce(dataFlat, function (draft) {
|
|
542
|
+
draft.splice(removeStartIndex + 1, removeEndIndex - removeStartIndex - 1);
|
|
543
|
+
});
|
|
544
|
+
setDataFlat(nextDataFlat);
|
|
545
|
+
};
|
|
546
|
+
var expandedFlat = function expandedFlat(expanded) {
|
|
547
|
+
if (!context.data) return;
|
|
548
|
+
context.dataFlatStatusMap.forEach(function (status, id) {
|
|
549
|
+
context.dataFlatStatusMap.set(id, _objectSpread(_objectSpread({}, status), {}, {
|
|
550
|
+
expanded: false
|
|
551
|
+
}));
|
|
552
|
+
});
|
|
553
|
+
expanded.forEach(function (id) {
|
|
554
|
+
var status = context.dataFlatStatusMap.get(id);
|
|
555
|
+
if (!status) return;
|
|
556
|
+
context.dataFlatStatusMap.set(id, _objectSpread(_objectSpread({}, status), {}, {
|
|
557
|
+
expanded: true
|
|
558
|
+
}));
|
|
559
|
+
});
|
|
560
|
+
var _getExpandVirtualData = getExpandVirtualData(context.data, expanded, getKey, childrenKey),
|
|
561
|
+
treeDataInfo = _getExpandVirtualData.treeDataInfo;
|
|
562
|
+
if (!treeDataInfo) {
|
|
563
|
+
return;
|
|
564
|
+
}
|
|
565
|
+
setDataFlat(treeDataInfo);
|
|
566
|
+
};
|
|
567
|
+
var getFlatData = function getFlatData() {
|
|
568
|
+
return context.dataFlat;
|
|
569
|
+
};
|
|
405
570
|
useEffect(function () {
|
|
406
571
|
if (defaultExpandAll) {
|
|
407
572
|
var nextExpanded = [];
|
|
@@ -412,7 +577,7 @@ var useTree = function useTree(props) {
|
|
|
412
577
|
});
|
|
413
578
|
onExpand(nextExpanded);
|
|
414
579
|
}
|
|
415
|
-
}, []);
|
|
580
|
+
}, [context.dataMap]);
|
|
416
581
|
useEffect(function () {
|
|
417
582
|
if (props.datum) return;
|
|
418
583
|
if (!dataUpdate) return;
|
|
@@ -428,25 +593,32 @@ var useTree = function useTree(props) {
|
|
|
428
593
|
var datum = useLatestObj({
|
|
429
594
|
get: get,
|
|
430
595
|
set: set,
|
|
596
|
+
insertFlat: insertFlat,
|
|
597
|
+
removeFlat: removeFlat,
|
|
598
|
+
expandedFlat: expandedFlat,
|
|
431
599
|
getPath: getPath,
|
|
432
600
|
getValue: getValue,
|
|
433
601
|
getChecked: getChecked,
|
|
434
602
|
getKey: getKey,
|
|
603
|
+
getFlatData: getFlatData,
|
|
435
604
|
getDataByValues: getDataByValues,
|
|
436
605
|
setValue: setValue,
|
|
437
606
|
setData: setData,
|
|
438
607
|
isDisabled: isDisabled,
|
|
439
608
|
bindNode: bindNode,
|
|
609
|
+
bindVirtualNode: bindVirtualNode,
|
|
440
610
|
getDataById: getDataById,
|
|
441
611
|
bindUpdate: bindUpdate,
|
|
442
612
|
unBindUpdate: unBindUpdate,
|
|
443
613
|
isUnMatched: isUnMatched,
|
|
444
614
|
childrenKey: childrenKey,
|
|
445
615
|
data: data,
|
|
616
|
+
dataFlat: dataFlat,
|
|
446
617
|
pathMap: context.pathMap,
|
|
447
618
|
dataMap: context.dataMap,
|
|
448
619
|
valueMap: context.valueMap,
|
|
449
|
-
updateMap: context.updateMap
|
|
620
|
+
updateMap: context.updateMap,
|
|
621
|
+
dataFlatStatusMap: context.dataFlatStatusMap
|
|
450
622
|
});
|
|
451
623
|
return {
|
|
452
624
|
inited: inited,
|