@sheinx/hooks 3.6.0-beta.3 → 3.6.0-beta.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. package/cjs/common/use-filter/use-filter.d.ts.map +1 -1
  2. package/cjs/components/use-cascader/use-cascader.d.ts.map +1 -1
  3. package/cjs/components/use-cascader/use-cascader.type.d.ts +2 -1
  4. package/cjs/components/use-cascader/use-cascader.type.d.ts.map +1 -1
  5. package/cjs/components/use-form/use-form.d.ts.map +1 -1
  6. package/cjs/components/use-form/use-form.js +2 -1
  7. package/cjs/components/use-input/use-input-format.d.ts.map +1 -1
  8. package/cjs/components/use-input/use-input-format.js +12 -4
  9. package/cjs/components/use-table/use-table-tree.d.ts +13 -0
  10. package/cjs/components/use-table/use-table-tree.d.ts.map +1 -1
  11. package/cjs/components/use-table/use-table-tree.js +68 -1
  12. package/cjs/components/use-table/use-table-virtual.js +3 -3
  13. package/cjs/components/use-tree/index.d.ts +2 -1
  14. package/cjs/components/use-tree/index.d.ts.map +1 -1
  15. package/cjs/components/use-tree/index.js +7 -0
  16. package/cjs/components/use-tree/use-tree-node.d.ts.map +1 -1
  17. package/cjs/components/use-tree/use-tree-node.js +1 -5
  18. package/cjs/components/use-tree/use-tree-node.type.d.ts +18 -0
  19. package/cjs/components/use-tree/use-tree-node.type.d.ts.map +1 -1
  20. package/cjs/components/use-tree/use-tree-virtual-node.d.ts +13 -0
  21. package/cjs/components/use-tree/use-tree-virtual-node.d.ts.map +1 -0
  22. package/cjs/components/use-tree/use-tree-virtual-node.js +92 -0
  23. package/cjs/components/use-tree/use-tree.d.ts.map +1 -1
  24. package/cjs/components/use-tree/use-tree.js +179 -7
  25. package/cjs/components/use-tree/use-tree.type.d.ts +31 -1
  26. package/cjs/components/use-tree/use-tree.type.d.ts.map +1 -1
  27. package/cjs/utils/is.d.ts +2 -0
  28. package/cjs/utils/is.d.ts.map +1 -1
  29. package/cjs/utils/is.js +5 -2
  30. package/cjs/utils/object.d.ts.map +1 -1
  31. package/cjs/utils/object.js +6 -1
  32. package/cjs/utils/warning.js +5 -5
  33. package/esm/common/use-filter/use-filter.d.ts.map +1 -1
  34. package/esm/components/use-cascader/use-cascader.d.ts.map +1 -1
  35. package/esm/components/use-cascader/use-cascader.type.d.ts +2 -1
  36. package/esm/components/use-cascader/use-cascader.type.d.ts.map +1 -1
  37. package/esm/components/use-form/use-form.d.ts.map +1 -1
  38. package/esm/components/use-form/use-form.js +2 -1
  39. package/esm/components/use-input/use-input-format.d.ts.map +1 -1
  40. package/esm/components/use-input/use-input-format.js +12 -4
  41. package/esm/components/use-table/use-table-tree.d.ts +13 -0
  42. package/esm/components/use-table/use-table-tree.d.ts.map +1 -1
  43. package/esm/components/use-table/use-table-tree.js +67 -0
  44. package/esm/components/use-table/use-table-virtual.js +3 -3
  45. package/esm/components/use-tree/index.d.ts +2 -1
  46. package/esm/components/use-tree/index.d.ts.map +1 -1
  47. package/esm/components/use-tree/index.js +2 -1
  48. package/esm/components/use-tree/use-tree-node.d.ts.map +1 -1
  49. package/esm/components/use-tree/use-tree-node.js +1 -5
  50. package/esm/components/use-tree/use-tree-node.type.d.ts +18 -0
  51. package/esm/components/use-tree/use-tree-node.type.d.ts.map +1 -1
  52. package/esm/components/use-tree/use-tree-virtual-node.d.ts +13 -0
  53. package/esm/components/use-tree/use-tree-virtual-node.d.ts.map +1 -0
  54. package/esm/components/use-tree/use-tree-virtual-node.js +85 -0
  55. package/esm/components/use-tree/use-tree.d.ts.map +1 -1
  56. package/esm/components/use-tree/use-tree.js +181 -9
  57. package/esm/components/use-tree/use-tree.type.d.ts +31 -1
  58. package/esm/components/use-tree/use-tree.type.d.ts.map +1 -1
  59. package/esm/utils/is.d.ts +2 -0
  60. package/esm/utils/is.d.ts.map +1 -1
  61. package/esm/utils/is.js +4 -1
  62. package/esm/utils/object.d.ts.map +1 -1
  63. package/esm/utils/object.js +6 -1
  64. package/esm/utils/warning.js +5 -5
  65. 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;AA+CvD,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"}
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,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
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,3 +1,4 @@
1
1
  "use client";
2
2
  export { default, default as useTree } from "./use-tree";
3
- export { default as useTreeNode } from "./use-tree-node";
3
+ export { default as useTreeNode } from "./use-tree-node";
4
+ export { default as useTreeVirtualNode } from "./use-tree-virtual-node";
@@ -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;;;;;;;;CAmDzD,CAAC;AACF,eAAe,WAAW,CAAC"}
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;AAEjD,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,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,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"}
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,EACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAYjD,eAAO,MAAM,IAAI;IACf;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEJ,CAAC;AAEF,QAAA,MAAM,OAAO;;;;;CAucZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
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) return node.isDisabled;
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,