@qsxy/element-plus-react 1.0.0-next.5 → 1.0.0-next.8

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.
Files changed (119) hide show
  1. package/dist/Avatar/Avatar.d.ts +4 -0
  2. package/dist/Avatar/Avatar.js +86 -0
  3. package/dist/Avatar/index.d.ts +2 -0
  4. package/dist/{VirtualList → Avatar}/index.js +7 -7
  5. package/dist/Avatar/typings.d.ts +21 -0
  6. package/dist/{VirtualList/interface.js → Avatar/typings.js} +3 -3
  7. package/dist/Cascader/Cascader.js +147 -182
  8. package/dist/Cascader/CascaderContext.d.ts +4 -10
  9. package/dist/Cascader/CascaderContext.js +2 -6
  10. package/dist/Cascader/CascaderDropdown.js +1 -1
  11. package/dist/Cascader/CascaderMenu.d.ts +0 -7
  12. package/dist/Cascader/CascaderMenu.js +4 -77
  13. package/dist/Cascader/Utils.d.ts +0 -2
  14. package/dist/Cascader/Utils.js +0 -44
  15. package/dist/Cascader/index.d.ts +1 -1
  16. package/dist/Cascader/typings.d.ts +2 -18
  17. package/dist/Cascader/useCascader.d.ts +1 -15
  18. package/dist/Cascader/useCascader.js +14 -41
  19. package/dist/DatePicker/DatePicker.js +5 -5
  20. package/dist/Empty/ImgEmpty.js +1 -1
  21. package/dist/Loading/Loading.js +14 -4
  22. package/dist/Tree/DirectoryTree.d.ts +6 -13
  23. package/dist/Tree/DirectoryTree.js +32 -81
  24. package/dist/Tree/DropIndicator.d.ts +4 -2
  25. package/dist/Tree/DropIndicator.js +7 -2
  26. package/dist/Tree/Indent.d.ts +2 -2
  27. package/dist/Tree/Indent.js +4 -4
  28. package/dist/Tree/MotionTreeNode.d.ts +4 -5
  29. package/dist/Tree/MotionTreeNode.js +69 -52
  30. package/dist/Tree/NodeList.d.ts +15 -11
  31. package/dist/Tree/NodeList.js +38 -29
  32. package/dist/Tree/RCTree.d.ts +77 -75
  33. package/dist/Tree/RCTree.js +199 -188
  34. package/dist/Tree/Tree.d.ts +3 -3
  35. package/dist/Tree/Tree.js +27 -27
  36. package/dist/Tree/TreeNode.d.ts +5 -90
  37. package/dist/Tree/TreeNode.js +320 -422
  38. package/dist/Tree/contextTypes.d.ts +36 -30
  39. package/dist/Tree/contextTypes.js +17 -4
  40. package/dist/Tree/index.d.ts +2 -2
  41. package/dist/Tree/typings.d.ts +60 -19
  42. package/dist/Tree/typings.js +1 -13
  43. package/dist/Tree/typings.tsx--bak +245 -0
  44. package/dist/Tree/useUnmount.d.ts +5 -0
  45. package/dist/{VirtualList/hooks/useChildren.js → Tree/useUnmount.js} +24 -16
  46. package/dist/Tree/util.d.ts +17 -21
  47. package/dist/Tree/util.js +21 -52
  48. package/dist/Tree/utils/conductUtil.d.ts +2 -2
  49. package/dist/Tree/utils/conductUtil.js +14 -3
  50. package/dist/Tree/utils/dictUtil.d.ts +7 -3
  51. package/dist/Tree/utils/dictUtil.js +49 -32
  52. package/dist/Tree/utils/diffUtil.d.ts +4 -3
  53. package/dist/Tree/utils/keyUtil.d.ts +2 -0
  54. package/dist/{VirtualList/utils/isFirefox.js → Tree/utils/keyUtil.js} +8 -7
  55. package/dist/Tree/utils/motion.js +6 -5
  56. package/dist/Tree/utils/treeUtil.d.ts +16 -18
  57. package/dist/Tree/utils/treeUtil.js +35 -14
  58. package/dist/TreeSelect/Utils.d.ts +1 -1
  59. package/dist/Util/base.d.ts +1 -1
  60. package/dist/Util/base.js +14 -2
  61. package/dist/hooks/useClassNames.d.ts +1 -0
  62. package/dist/hooks/useClassNames.js +11 -1
  63. package/dist/index.css +58 -6
  64. package/dist/index.d.ts +5 -5
  65. package/dist/index.js +3 -5
  66. package/dist/theme-chalk/avatar/index.scss +50 -0
  67. package/dist/theme-chalk/calendar/month-table.scss +1 -1
  68. package/dist/theme-chalk/index.scss +1 -0
  69. package/dist/theme-chalk/input/input.scss +5 -3
  70. package/dist/theme-chalk/loading/index.scss +5 -7
  71. package/package.json +2 -1
  72. package/dist/Tree/utils/KeyCode.d.ts +0 -436
  73. package/dist/Tree/utils/KeyCode.js +0 -550
  74. package/dist/VirtualList/Filler.d.ts +0 -16
  75. package/dist/VirtualList/Filler.js +0 -78
  76. package/dist/VirtualList/Item.d.ts +0 -7
  77. package/dist/VirtualList/Item.js +0 -37
  78. package/dist/VirtualList/ScrollBar.d.ts +0 -43
  79. package/dist/VirtualList/ScrollBar.js +0 -216
  80. package/dist/VirtualList/VirtualList.d.ts +0 -36
  81. package/dist/VirtualList/VirtualList.js +0 -280
  82. package/dist/VirtualList/hooks/useChildren.d.ts +0 -3
  83. package/dist/VirtualList/hooks/useDiffItem.d.ts +0 -2
  84. package/dist/VirtualList/hooks/useDiffItem.js +0 -39
  85. package/dist/VirtualList/hooks/useFrameWheel.d.ts +0 -6
  86. package/dist/VirtualList/hooks/useFrameWheel.js +0 -72
  87. package/dist/VirtualList/hooks/useHeights.d.ts +0 -3
  88. package/dist/VirtualList/hooks/useHeights.js +0 -83
  89. package/dist/VirtualList/hooks/useLayoutEffect.d.ts +0 -6
  90. package/dist/VirtualList/hooks/useLayoutEffect.js +0 -30
  91. package/dist/VirtualList/hooks/useMobileTouchMove.d.ts +0 -2
  92. package/dist/VirtualList/hooks/useMobileTouchMove.js +0 -92
  93. package/dist/VirtualList/hooks/useOriginScroll.d.ts +0 -2
  94. package/dist/VirtualList/hooks/useOriginScroll.js +0 -56
  95. package/dist/VirtualList/hooks/useScrollTo.d.ts +0 -5
  96. package/dist/VirtualList/hooks/useScrollTo.js +0 -111
  97. package/dist/VirtualList/index.d.ts +0 -2
  98. package/dist/VirtualList/interface.d.ts +0 -8
  99. package/dist/VirtualList/mock.d.ts +0 -6
  100. package/dist/VirtualList/mock.js +0 -29
  101. package/dist/VirtualList/utils/CacheMap.d.ts +0 -7
  102. package/dist/VirtualList/utils/CacheMap.js +0 -36
  103. package/dist/VirtualList/utils/algorithmUtil.d.ts +0 -23
  104. package/dist/VirtualList/utils/algorithmUtil.js +0 -81
  105. package/dist/VirtualList/utils/findDOMNode.d.ts +0 -5
  106. package/dist/VirtualList/utils/findDOMNode.js +0 -30
  107. package/dist/VirtualList/utils/isFirefox.d.ts +0 -2
  108. package/dist/VirtualList/utils/raf.d.ts +0 -5
  109. package/dist/VirtualList/utils/raf.js +0 -57
  110. package/dist/theme-chalk/bak/common/popup.scss +0 -47
  111. package/dist/theme-chalk/bak/common/transition.scss +0 -118
  112. package/dist/theme-chalk/bak/common/var.scss +0 -1476
  113. package/dist/theme-chalk/bak/mixins/_button.scss +0 -224
  114. package/dist/theme-chalk/bak/mixins/_col.scss +0 -38
  115. package/dist/theme-chalk/bak/mixins/_var.scss +0 -55
  116. package/dist/theme-chalk/bak/mixins/config.scss +0 -5
  117. package/dist/theme-chalk/bak/mixins/function.scss +0 -85
  118. package/dist/theme-chalk/bak/mixins/mixins.scss +0 -215
  119. package/dist/theme-chalk/bak/mixins/utils.scss +0 -39
@@ -33,48 +33,25 @@ __export(DirectoryTree_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(DirectoryTree_exports);
35
35
  var import_classnames = __toESM(require("classnames"));
36
- var import_debounce = __toESM(require("lodash/debounce"));
37
- var import_react = __toESM(require("react"));
38
- var import_util = require("./util");
39
- var import_treeUtil = require("./utils/treeUtil");
36
+ var React = __toESM(require("react"));
40
37
  var import_Icon = require("../Icon");
41
38
  var import_Tree = __toESM(require("./Tree"));
39
+ var import_util = require("./util");
42
40
  var import_dictUtil = require("./utils/dictUtil");
43
- var hasChildren = (props) => {
44
- const { eventKey } = props;
45
- const {
46
- context: { keyEntities }
47
- } = props;
48
- const { children } = keyEntities[eventKey] || {};
49
- return !!(children || []).length;
50
- };
51
- var isLeaf = (props) => {
52
- const { loaded } = props;
53
- const {
54
- context: { loadData }
55
- } = props;
56
- const _hasChildren = hasChildren(props);
57
- if (props.isLeaf === false) {
58
- return false;
59
- }
60
- return props.isLeaf || !loadData && !_hasChildren || loadData && loaded && !_hasChildren;
61
- };
41
+ var import_treeUtil = require("./utils/treeUtil");
62
42
  function getIcon(props) {
63
- const { expanded } = props;
64
- const _isLeaf = isLeaf(props);
65
- if (_isLeaf) {
66
- return /* @__PURE__ */ import_react.default.createElement(import_Icon.Icon, { name: "file-lines", prefix: "far" });
43
+ const { isLeaf, expanded } = props;
44
+ if (isLeaf) {
45
+ return /* @__PURE__ */ React.createElement(import_Icon.Icon, { name: "file-lines", prefix: "far" });
67
46
  }
68
- return expanded ? /* @__PURE__ */ import_react.default.createElement(import_Icon.Icon, { name: "folder-open", prefix: "far" }) : /* @__PURE__ */ import_react.default.createElement(import_Icon.Icon, { name: "folder-closed", prefix: "fas" });
47
+ return expanded ? /* @__PURE__ */ React.createElement(import_Icon.Icon, { name: "folder-open", prefix: "far" }) : /* @__PURE__ */ React.createElement(import_Icon.Icon, { name: "folder-closed", prefix: "fas" });
69
48
  }
70
49
  function getTreeData({ treeData, children }) {
71
50
  return treeData || (0, import_treeUtil.convertTreeToData)(children);
72
51
  }
73
- function InternalDirectoryTree({ defaultExpandAll, defaultExpandParent, defaultExpandedKeys, ...props }, ref) {
74
- const lastSelectedKey = (0, import_react.useRef)();
75
- const cachedSelectedKeys = (0, import_react.useRef)();
76
- const treeRef = (0, import_react.createRef)();
77
- (0, import_react.useImperativeHandle)(ref, () => treeRef.current);
52
+ var DirectoryTree = ({ defaultExpandAll, defaultExpandParent, defaultExpandedKeys, ...props }, ref) => {
53
+ const lastSelectedKey = React.useRef(null);
54
+ const cachedSelectedKeys = React.useRef(null);
78
55
  const getInitExpandedKeys = () => {
79
56
  const { keyEntities } = (0, import_treeUtil.convertDataToEntities)(getTreeData(props));
80
57
  let initExpandedKeys;
@@ -83,31 +60,22 @@ function InternalDirectoryTree({ defaultExpandAll, defaultExpandParent, defaultE
83
60
  } else if (defaultExpandParent) {
84
61
  initExpandedKeys = (0, import_util.conductExpandParent)(props.expandedKeys || defaultExpandedKeys || [], keyEntities);
85
62
  } else {
86
- initExpandedKeys = props.expandedKeys || defaultExpandedKeys;
63
+ initExpandedKeys = props.expandedKeys || defaultExpandedKeys || [];
87
64
  }
88
65
  return initExpandedKeys;
89
66
  };
90
- const [selectedKeys, setSelectedKeys] = (0, import_react.useState)(props.selectedKeys || props.defaultSelectedKeys || []);
91
- const [expandedKeys, setExpandedKeys] = (0, import_react.useState)(getInitExpandedKeys());
92
- (0, import_react.useEffect)(() => {
67
+ const [selectedKeys, setSelectedKeys] = React.useState(props.selectedKeys || props.defaultSelectedKeys || []);
68
+ const [expandedKeys, setExpandedKeys] = React.useState(() => getInitExpandedKeys());
69
+ React.useEffect(() => {
93
70
  if ("selectedKeys" in props) {
94
71
  setSelectedKeys(props.selectedKeys);
95
72
  }
96
73
  }, [props.selectedKeys]);
97
- (0, import_react.useEffect)(() => {
74
+ React.useEffect(() => {
98
75
  if ("expandedKeys" in props) {
99
76
  setExpandedKeys(props.expandedKeys);
100
77
  }
101
78
  }, [props.expandedKeys]);
102
- const expandFolderNode = (event, node) => {
103
- if (node.isLeaf || event.shiftKey || event.metaKey || event.ctrlKey) {
104
- return;
105
- }
106
- treeRef.current.onNodeExpand(event, node);
107
- };
108
- const onDebounceExpand = (0, import_debounce.default)(expandFolderNode, 200, {
109
- leading: true
110
- });
111
79
  const onExpand = (keys, info) => {
112
80
  var _a;
113
81
  if (!("expandedKeys" in props)) {
@@ -115,25 +83,9 @@ function InternalDirectoryTree({ defaultExpandAll, defaultExpandParent, defaultE
115
83
  }
116
84
  return (_a = props.onExpand) == null ? void 0 : _a.call(props, keys, info);
117
85
  };
118
- const onClick = (event, node) => {
119
- var _a;
120
- const { expandAction } = props;
121
- if (expandAction === "click") {
122
- onDebounceExpand(event, node);
123
- }
124
- (_a = props.onClick) == null ? void 0 : _a.call(props, event, node);
125
- };
126
- const onDoubleClick = (event, node) => {
127
- var _a;
128
- const { expandAction } = props;
129
- if (expandAction === "doubleClick") {
130
- onDebounceExpand(event, node);
131
- }
132
- (_a = props.onDoubleClick) == null ? void 0 : _a.call(props, event, node);
133
- };
134
86
  const onSelect = (keys, event) => {
135
87
  var _a;
136
- const { multiple } = props;
88
+ const { multiple, fieldNames } = props;
137
89
  const { node, nativeEvent } = event;
138
90
  const { key = "" } = node;
139
91
  const treeData = getTreeData(props);
@@ -149,7 +101,7 @@ function InternalDirectoryTree({ defaultExpandAll, defaultExpandParent, defaultE
149
101
  newSelectedKeys = keys;
150
102
  lastSelectedKey.current = key;
151
103
  cachedSelectedKeys.current = newSelectedKeys;
152
- newEvent.selectedNodes = (0, import_dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys);
104
+ newEvent.selectedNodes = (0, import_dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys, fieldNames);
153
105
  } else if (multiple && shiftPick) {
154
106
  newSelectedKeys = Array.from(
155
107
  /* @__PURE__ */ new Set([
@@ -158,47 +110,46 @@ function InternalDirectoryTree({ defaultExpandAll, defaultExpandParent, defaultE
158
110
  treeData,
159
111
  expandedKeys,
160
112
  startKey: key,
161
- endKey: lastSelectedKey.current
113
+ endKey: lastSelectedKey.current,
114
+ fieldNames
162
115
  })
163
116
  ])
164
117
  );
165
- newEvent.selectedNodes = (0, import_dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys);
118
+ newEvent.selectedNodes = (0, import_dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys, fieldNames);
166
119
  } else {
167
120
  newSelectedKeys = [key];
168
121
  lastSelectedKey.current = key;
169
122
  cachedSelectedKeys.current = newSelectedKeys;
170
- newEvent.selectedNodes = (0, import_dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys);
123
+ newEvent.selectedNodes = (0, import_dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys, fieldNames);
171
124
  }
172
125
  (_a = props.onSelect) == null ? void 0 : _a.call(props, newSelectedKeys, newEvent);
173
126
  if (!("selectedKeys" in props)) {
174
127
  setSelectedKeys(newSelectedKeys);
175
128
  }
176
129
  };
177
- const { prefixCls = "r-tree", className, ...otherProps } = props;
130
+ const { className, showIcon = true, expandAction = "click", ...otherProps } = props;
131
+ const prefixCls = "el-tree";
178
132
  const connectClassName = (0, import_classnames.default)(`${prefixCls}-directory`, className);
179
- return /* @__PURE__ */ import_react.default.createElement(
133
+ return /* @__PURE__ */ React.createElement(
180
134
  import_Tree.default,
181
135
  {
182
136
  icon: getIcon,
183
- ref: treeRef,
137
+ ref,
184
138
  blockNode: true,
185
139
  ...otherProps,
140
+ showIcon,
141
+ expandAction,
186
142
  prefixCls,
187
143
  className: connectClassName,
188
144
  expandedKeys,
189
145
  selectedKeys,
190
146
  onSelect,
191
- onClick,
192
- onDoubleClick,
193
147
  onExpand
194
148
  }
195
149
  );
196
- }
197
- var ForwardDirectoryTree = (0, import_react.forwardRef)(InternalDirectoryTree);
198
- var DirectoryTree = ForwardDirectoryTree;
199
- DirectoryTree.displayName = "DirectoryTree";
200
- DirectoryTree.defaultProps = {
201
- showIcon: true,
202
- expandAction: "doubleClick"
203
150
  };
204
- var DirectoryTree_default = DirectoryTree;
151
+ var ForwardDirectoryTree = React.forwardRef(DirectoryTree);
152
+ if (process.env.NODE_ENV !== "production") {
153
+ ForwardDirectoryTree.displayName = "DirectoryTree";
154
+ }
155
+ var DirectoryTree_default = ForwardDirectoryTree;
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
- export default function DropIndicator({ dropPosition, dropLevelOffset, indent }: {
2
+ export interface DropIndicatorProps {
3
3
  dropPosition: -1 | 0 | 1;
4
4
  dropLevelOffset: number;
5
5
  indent: number;
6
- }): React.JSX.Element;
6
+ }
7
+ declare const DropIndicator: React.FC<Readonly<DropIndicatorProps>>;
8
+ export default DropIndicator;
@@ -29,11 +29,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  // src/Tree/DropIndicator.tsx
30
30
  var DropIndicator_exports = {};
31
31
  __export(DropIndicator_exports, {
32
- default: () => DropIndicator
32
+ default: () => DropIndicator_default
33
33
  });
34
34
  module.exports = __toCommonJS(DropIndicator_exports);
35
35
  var import_react = __toESM(require("react"));
36
- function DropIndicator({ dropPosition, dropLevelOffset, indent }) {
36
+ var DropIndicator = (props) => {
37
+ const { dropPosition, dropLevelOffset, indent } = props;
37
38
  const style = {
38
39
  pointerEvents: "none",
39
40
  position: "absolute",
@@ -56,4 +57,8 @@ function DropIndicator({ dropPosition, dropLevelOffset, indent }) {
56
57
  break;
57
58
  }
58
59
  return /* @__PURE__ */ import_react.default.createElement("div", { style });
60
+ };
61
+ if (process.env.NODE_ENV !== "production") {
62
+ DropIndicator.displayName = "DropIndicator";
59
63
  }
64
+ var DropIndicator_default = DropIndicator;
@@ -1,9 +1,9 @@
1
- import React from 'react';
1
+ import * as React from 'react';
2
2
  interface IndentProps {
3
3
  prefixCls: string;
4
4
  level: number;
5
5
  isStart: boolean[];
6
6
  isEnd: boolean[];
7
7
  }
8
- declare const _default: React.MemoExoticComponent<({ prefixCls, level, isStart, isEnd }: IndentProps) => React.JSX.Element>;
8
+ declare const _default: React.NamedExoticComponent<IndentProps>;
9
9
  export default _default;
@@ -33,13 +33,13 @@ __export(Indent_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(Indent_exports);
35
35
  var import_classnames = __toESM(require("classnames"));
36
- var import_react = __toESM(require("react"));
36
+ var React = __toESM(require("react"));
37
37
  var Indent = ({ prefixCls, level, isStart, isEnd }) => {
38
38
  const baseClassName = `${prefixCls}-indent-unit`;
39
39
  const list = [];
40
40
  for (let i = 0; i < level; i += 1) {
41
41
  list.push(
42
- /* @__PURE__ */ import_react.default.createElement(
42
+ /* @__PURE__ */ React.createElement(
43
43
  "span",
44
44
  {
45
45
  key: i,
@@ -51,6 +51,6 @@ var Indent = ({ prefixCls, level, isStart, isEnd }) => {
51
51
  )
52
52
  );
53
53
  }
54
- return /* @__PURE__ */ import_react.default.createElement("span", { "aria-hidden": "true", className: `${prefixCls}-indent` }, list);
54
+ return /* @__PURE__ */ React.createElement("span", { "aria-hidden": "true", className: `${prefixCls}-indent` }, list);
55
55
  };
56
- var Indent_default = (0, import_react.memo)(Indent);
56
+ var Indent_default = React.memo(Indent);
@@ -1,7 +1,6 @@
1
- import { FC } from 'react';
2
- import { TreeNodeProps } from './TreeNode';
3
- import { FlattenNode } from './typings';
4
- import { TreeNodeRequiredProps } from './utils/treeUtil';
1
+ import * as React from 'react';
2
+ import type { FlattenNode, TreeNodeProps } from './typings';
3
+ import { type TreeNodeRequiredProps } from './utils/treeUtil';
5
4
  interface MotionTreeNodeProps extends Omit<TreeNodeProps, 'domRef'> {
6
5
  active: boolean;
7
6
  motion?: any;
@@ -11,5 +10,5 @@ interface MotionTreeNodeProps extends Omit<TreeNodeProps, 'domRef'> {
11
10
  motionType?: 'show' | 'hide';
12
11
  treeNodeRequiredProps: TreeNodeRequiredProps;
13
12
  }
14
- declare const MotionTreeNode: FC<MotionTreeNodeProps>;
13
+ declare const MotionTreeNode: React.ForwardRefExoticComponent<MotionTreeNodeProps & React.RefAttributes<HTMLDivElement>>;
15
14
  export default MotionTreeNode;
@@ -33,14 +33,17 @@ __export(MotionTreeNode_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(MotionTreeNode_exports);
35
35
  var import_classnames = __toESM(require("classnames"));
36
- var import_omit = __toESM(require("lodash/omit"));
37
- var import_react = __toESM(require("react"));
36
+ var import_rc_util = require("rc-util");
37
+ var import_useLayoutEffect = __toESM(require("rc-util/lib/hooks/useLayoutEffect"));
38
+ var React = __toESM(require("react"));
39
+ var import_react = require("react");
38
40
  var import_Transition = require("../Transition");
39
41
  var import_TreeNode = __toESM(require("./TreeNode"));
40
42
  var import_contextTypes = require("./contextTypes");
43
+ var import_useUnmount = __toESM(require("./useUnmount"));
41
44
  var import_treeUtil = require("./utils/treeUtil");
42
- var MotionTreeNode = (0, import_react.forwardRef)(
43
- ({
45
+ var MotionTreeNode = React.forwardRef((oriProps, ref) => {
46
+ const {
44
47
  className,
45
48
  style,
46
49
  motion,
@@ -51,59 +54,73 @@ var MotionTreeNode = (0, import_react.forwardRef)(
51
54
  active,
52
55
  treeNodeRequiredProps,
53
56
  ...props
54
- }, ref) => {
55
- const [visible, setVisible] = (0, import_react.useState)(true);
56
- const { prefixCls } = (0, import_react.useContext)(import_contextTypes.TreeContext);
57
- const motionedRef = (0, import_react.useRef)(false);
58
- const onMotionEnd = () => {
59
- if (!motionedRef.current) {
60
- onOriginMotionEnd();
61
- }
62
- motionedRef.current = true;
63
- };
64
- (0, import_react.useEffect)(() => {
65
- if (motionNodes && motionType === "hide" && visible) {
66
- setVisible(false);
67
- }
68
- }, [motionNodes]);
69
- (0, import_react.useEffect)(() => {
70
- if (motionNodes) {
71
- onOriginMotionStart();
57
+ } = oriProps;
58
+ const [visible, setVisible] = React.useState(true);
59
+ const { prefixCls } = React.useContext(import_contextTypes.TreeContext);
60
+ const targetVisible = motionNodes && motionType !== "hide";
61
+ const motionedRef = (0, import_react.useRef)(false);
62
+ const containerRef = (0, import_react.useRef)(null);
63
+ const mergedRef = (0, import_rc_util.useComposeRef)(ref, containerRef);
64
+ const onMotionEnd = () => {
65
+ if (!motionedRef.current) {
66
+ onOriginMotionEnd();
67
+ }
68
+ motionedRef.current = true;
69
+ };
70
+ (0, import_useLayoutEffect.default)(() => {
71
+ if (motionNodes) {
72
+ if (targetVisible !== visible) {
73
+ setVisible(targetVisible);
72
74
  }
73
- return () => {
74
- if (motionNodes) {
75
- onMotionEnd();
76
- }
77
- };
78
- }, []);
75
+ }
76
+ }, [motionNodes]);
77
+ const triggerMotionStart = () => {
79
78
  if (motionNodes) {
80
- return /* @__PURE__ */ import_react.default.createElement(import_Transition.Transition, { ref, visible, ...motion, transitionAppear: motionType === "show", afterEnter: onMotionEnd, afterLeave: onMotionEnd }, ({ className: motionClassName, style: motionStyle }, motionRef) => /* @__PURE__ */ import_react.default.createElement("div", { ref: motionRef, className: (0, import_classnames.default)(`${prefixCls}-treenode-motion`, motionClassName), style: motionStyle }, motionNodes.map((treeNode) => {
81
- const {
82
- data: { ...restProps },
79
+ onOriginMotionStart();
80
+ }
81
+ };
82
+ const triggerMotionEndRef = React.useRef(false);
83
+ const triggerMotionEnd = () => {
84
+ if (motionNodes && !triggerMotionEndRef.current) {
85
+ triggerMotionEndRef.current = true;
86
+ onOriginMotionEnd();
87
+ }
88
+ };
89
+ (0, import_useUnmount.default)(triggerMotionStart, triggerMotionEnd);
90
+ const onVisibleChanged = (nextVisible) => {
91
+ if (targetVisible === nextVisible) {
92
+ triggerMotionEnd();
93
+ }
94
+ };
95
+ if (motionNodes) {
96
+ return /* @__PURE__ */ React.createElement(import_Transition.Transition, { nodeRef: containerRef, visible, ...motion, transitionAppear: motionType === "show", afterEnter: onMotionEnd, afterLeave: onMotionEnd }, /* @__PURE__ */ React.createElement("div", { ref: mergedRef, className: (0, import_classnames.default)(`${prefixCls}-treenode-motion`, className), style }, motionNodes.map((treeNode) => {
97
+ const {
98
+ data: { ...restProps },
99
+ title,
100
+ key,
101
+ isStart,
102
+ isEnd
103
+ } = treeNode;
104
+ delete restProps.children;
105
+ const treeNodeProps = (0, import_treeUtil.getTreeNodeProps)(key, treeNodeRequiredProps);
106
+ return /* @__PURE__ */ React.createElement(
107
+ import_TreeNode.default,
108
+ {
109
+ ...restProps,
110
+ ...treeNodeProps,
83
111
  title,
112
+ active,
113
+ data: treeNode.data,
84
114
  key,
85
115
  isStart,
86
116
  isEnd
87
- } = treeNode;
88
- delete restProps.children;
89
- const treeNodeProps = (0, import_treeUtil.getTreeNodeProps)(key, treeNodeRequiredProps);
90
- return /* @__PURE__ */ import_react.default.createElement(
91
- import_TreeNode.default,
92
- {
93
- ...(0, import_omit.default)(restProps, "children"),
94
- ...treeNodeProps,
95
- title,
96
- active,
97
- data: treeNode.data,
98
- key,
99
- isStart,
100
- isEnd
101
- }
102
- );
103
- })));
104
- }
105
- return /* @__PURE__ */ import_react.default.createElement(import_TreeNode.default, { domRef: ref, className, style, ...props, active });
117
+ }
118
+ );
119
+ })));
106
120
  }
107
- );
108
- MotionTreeNode.displayName = "MotionTreeNode";
121
+ return /* @__PURE__ */ React.createElement(import_TreeNode.default, { domRef: ref, className, style, ...props, active });
122
+ });
123
+ if (process.env.NODE_ENV !== "production") {
124
+ MotionTreeNode.displayName = "MotionTreeNode";
125
+ }
109
126
  var MotionTreeNode_default = MotionTreeNode;
@@ -1,18 +1,21 @@
1
- import React, { FC } from 'react';
2
- import { DataEntity, FlattenNode, Key, ScrollTo } from './typings';
1
+ /**
2
+ * Handle virtual list of the TreeNodes.
3
+ */
4
+ import * as React from 'react';
5
+ import type { BasicDataNode, DataEntity, DataNode, FlattenNode, Key, KeyEntities, ScrollTo } from './typings';
3
6
  export declare const MOTION_KEY: string;
4
7
  export declare const MotionEntity: DataEntity;
5
8
  export interface NodeListRef {
6
9
  scrollTo: ScrollTo;
7
10
  getIndentWidth: () => number;
8
11
  }
9
- interface NodeListProps {
12
+ interface NodeListProps<TreeDataType extends BasicDataNode> {
10
13
  prefixCls: string;
11
14
  style: React.CSSProperties;
12
- data: FlattenNode[];
15
+ data: FlattenNode<TreeDataType>[];
13
16
  motion: any;
14
17
  focusable?: boolean;
15
- activeItem: FlattenNode;
18
+ activeItem: FlattenNode<TreeDataType>;
16
19
  focused?: boolean;
17
20
  tabIndex: number;
18
21
  checkable?: boolean;
@@ -24,16 +27,17 @@ interface NodeListProps {
24
27
  loadedKeys: Key[];
25
28
  loadingKeys: Key[];
26
29
  halfCheckedKeys: Key[];
27
- keyEntities: Record<Key, DataEntity<any>>;
30
+ keyEntities: KeyEntities;
28
31
  dragging: boolean;
29
32
  dragOverNodeKey: Key;
30
33
  dropPosition: number;
31
34
  height: number;
32
35
  itemHeight: number;
33
36
  virtual?: boolean;
34
- onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;
35
- onFocus?: React.FocusEventHandler<HTMLInputElement>;
36
- onBlur?: React.FocusEventHandler<HTMLInputElement>;
37
+ scrollWidth?: number;
38
+ onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
39
+ onFocus?: React.FocusEventHandler<HTMLDivElement>;
40
+ onBlur?: React.FocusEventHandler<HTMLDivElement>;
37
41
  onActiveChange: (key: Key) => void;
38
42
  onListChangeStart: () => void;
39
43
  onListChangeEnd: () => void;
@@ -41,6 +45,6 @@ interface NodeListProps {
41
45
  /**
42
46
  * We only need get visible content items to play the animation.
43
47
  */
44
- export declare function getMinimumRangeTransitionRange(list: FlattenNode[], virtual: boolean, height: number, itemHeight: number): FlattenNode[];
45
- declare const NodeList: FC<NodeListProps>;
48
+ export declare function getMinimumRangeTransitionRange(list: FlattenNode[], virtual: boolean, height: number, itemHeight: number): FlattenNode<DataNode>[];
49
+ declare const NodeList: React.ForwardRefExoticComponent<NodeListProps<any> & React.RefAttributes<NodeListRef>>;
46
50
  export default NodeList;
@@ -35,9 +35,9 @@ __export(NodeList_exports, {
35
35
  getMinimumRangeTransitionRange: () => getMinimumRangeTransitionRange
36
36
  });
37
37
  module.exports = __toCommonJS(NodeList_exports);
38
- var import_react = __toESM(require("react"));
39
- var import_omit = __toESM(require("lodash/omit"));
40
- var import_VirtualList = require("../VirtualList");
38
+ var import_useLayoutEffect = __toESM(require("rc-util/lib/hooks/useLayoutEffect"));
39
+ var import_rc_virtual_list = __toESM(require("rc-virtual-list"));
40
+ var React = __toESM(require("react"));
41
41
  var import_MotionTreeNode = __toESM(require("./MotionTreeNode"));
42
42
  var import_diffUtil = require("./utils/diffUtil");
43
43
  var import_treeUtil = require("./utils/treeUtil");
@@ -95,10 +95,11 @@ function getAccessibilityPath(item) {
95
95
  }
96
96
  return path;
97
97
  }
98
- var NodeList = (0, import_react.forwardRef)((props, ref) => {
98
+ var NodeList = React.forwardRef((props, ref) => {
99
99
  const {
100
100
  prefixCls,
101
101
  data,
102
+ selectable,
102
103
  checkable,
103
104
  expandedKeys,
104
105
  selectedKeys,
@@ -115,6 +116,7 @@ var NodeList = (0, import_react.forwardRef)((props, ref) => {
115
116
  height,
116
117
  itemHeight,
117
118
  virtual,
119
+ scrollWidth,
118
120
  focusable,
119
121
  activeItem,
120
122
  focused,
@@ -127,27 +129,30 @@ var NodeList = (0, import_react.forwardRef)((props, ref) => {
127
129
  onListChangeEnd,
128
130
  ...domProps
129
131
  } = props;
130
- const listRef = (0, import_react.useRef)(null);
131
- const indentMeasurerRef = (0, import_react.useRef)(null);
132
- (0, import_react.useImperativeHandle)(ref, () => ({
132
+ const listRef = React.useRef(null);
133
+ const indentMeasurerRef = React.useRef(null);
134
+ React.useImperativeHandle(ref, () => ({
133
135
  scrollTo: (scroll) => {
134
136
  listRef.current.scrollTo(scroll);
135
137
  },
136
138
  getIndentWidth: () => indentMeasurerRef.current.offsetWidth
137
139
  }));
138
- const [prevExpandedKeys, setPrevExpandedKeys] = (0, import_react.useState)(expandedKeys);
139
- const [prevData, setPrevData] = (0, import_react.useState)(data);
140
- const [transitionData, setTransitionData] = (0, import_react.useState)(data);
141
- const [transitionRange, setTransitionRange] = (0, import_react.useState)([]);
142
- const [motionType, setMotionType] = (0, import_react.useState)(null);
140
+ const [prevExpandedKeys, setPrevExpandedKeys] = React.useState(expandedKeys);
141
+ const [prevData, setPrevData] = React.useState(data);
142
+ const [transitionData, setTransitionData] = React.useState(data);
143
+ const [transitionRange, setTransitionRange] = React.useState([]);
144
+ const [motionType, setMotionType] = React.useState(null);
145
+ const dataRef = React.useRef(data);
146
+ dataRef.current = data;
143
147
  function onMotionEnd() {
144
- setPrevData(data);
145
- setTransitionData(data);
148
+ const latestData = dataRef.current;
149
+ setPrevData(latestData);
150
+ setTransitionData(latestData);
146
151
  setTransitionRange([]);
147
152
  setMotionType(null);
148
153
  onListChangeEnd();
149
154
  }
150
- (0, import_react.useEffect)(() => {
155
+ (0, import_useLayoutEffect.default)(() => {
151
156
  setPrevExpandedKeys(expandedKeys);
152
157
  const diffExpanded = (0, import_diffUtil.findExpandedKeys)(prevExpandedKeys, expandedKeys);
153
158
  if (diffExpanded.key !== null) {
@@ -173,7 +178,7 @@ var NodeList = (0, import_react.forwardRef)((props, ref) => {
173
178
  setTransitionData(data);
174
179
  }
175
180
  }, [expandedKeys, data]);
176
- (0, import_react.useEffect)(() => {
181
+ React.useEffect(() => {
177
182
  if (!dragging) {
178
183
  onMotionEnd();
179
184
  }
@@ -190,7 +195,7 @@ var NodeList = (0, import_react.forwardRef)((props, ref) => {
190
195
  dropPosition,
191
196
  keyEntities
192
197
  };
193
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, focused && activeItem && /* @__PURE__ */ import_react.default.createElement("span", { style: HIDDEN_STYLE, "aria-live": "assertive" }, getAccessibilityPath(activeItem)), /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
198
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, focused && activeItem && /* @__PURE__ */ React.createElement("span", { style: HIDDEN_STYLE, "aria-live": "assertive" }, getAccessibilityPath(activeItem)), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(
194
199
  "input",
195
200
  {
196
201
  style: HIDDEN_STYLE,
@@ -203,7 +208,7 @@ var NodeList = (0, import_react.forwardRef)((props, ref) => {
203
208
  onChange: noop,
204
209
  "aria-label": "for screen reader"
205
210
  }
206
- )), /* @__PURE__ */ import_react.default.createElement(
211
+ )), /* @__PURE__ */ React.createElement(
207
212
  "div",
208
213
  {
209
214
  className: `${prefixCls}-treenode`,
@@ -213,12 +218,14 @@ var NodeList = (0, import_react.forwardRef)((props, ref) => {
213
218
  pointerEvents: "none",
214
219
  visibility: "hidden",
215
220
  height: 0,
216
- overflow: "hidden"
221
+ overflow: "hidden",
222
+ border: 0,
223
+ padding: 0
217
224
  }
218
225
  },
219
- /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-indent` }, /* @__PURE__ */ import_react.default.createElement("div", { ref: indentMeasurerRef, className: `${prefixCls}-indent-unit` }))
220
- ), /* @__PURE__ */ import_react.default.createElement(
221
- import_VirtualList.VirtualList,
226
+ /* @__PURE__ */ React.createElement("div", { className: `${prefixCls}-indent` }, /* @__PURE__ */ React.createElement("div", { ref: indentMeasurerRef, className: `${prefixCls}-indent-unit` }))
227
+ ), /* @__PURE__ */ React.createElement(
228
+ import_rc_virtual_list.default,
222
229
  {
223
230
  ...domProps,
224
231
  data: mergedData,
@@ -227,12 +234,12 @@ var NodeList = (0, import_react.forwardRef)((props, ref) => {
227
234
  fullHeight: false,
228
235
  virtual,
229
236
  itemHeight,
237
+ scrollWidth,
230
238
  prefixCls: `${prefixCls}-list`,
231
239
  ref: listRef,
232
- onVisibleChange: (originList, fullList) => {
233
- const originSet = new Set(originList);
234
- const restList = fullList.filter((item) => !originSet.has(item));
235
- if (restList.some((item) => itemKey(item) === MOTION_KEY)) {
240
+ role: "tree",
241
+ onVisibleChange: (originList) => {
242
+ if (originList.every((item) => itemKey(item) !== MOTION_KEY)) {
236
243
  onMotionEnd();
237
244
  }
238
245
  }
@@ -250,10 +257,10 @@ var NodeList = (0, import_react.forwardRef)((props, ref) => {
250
257
  delete restProps.key;
251
258
  delete restProps.children;
252
259
  const treeNodeProps = (0, import_treeUtil.getTreeNodeProps)(mergedKey, treeNodeRequiredProps);
253
- return /* @__PURE__ */ import_react.default.createElement(
260
+ return /* @__PURE__ */ React.createElement(
254
261
  import_MotionTreeNode.default,
255
262
  {
256
- ...(0, import_omit.default)(restProps, "children"),
263
+ ...restProps,
257
264
  ...treeNodeProps,
258
265
  title,
259
266
  active: !!activeItem && key === activeItem.key,
@@ -275,7 +282,9 @@ var NodeList = (0, import_react.forwardRef)((props, ref) => {
275
282
  }
276
283
  ));
277
284
  });
278
- NodeList.displayName = "NodeList";
285
+ if (process.env.NODE_ENV !== "production") {
286
+ NodeList.displayName = "NodeList";
287
+ }
279
288
  var NodeList_default = NodeList;
280
289
  // Annotate the CommonJS export names for ESM import in node:
281
290
  0 && (module.exports = {