1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | var _typeof = require("@babel/runtime/helpers/typeof");
|
6 |
|
7 | Object.defineProperty(exports, "__esModule", {
|
8 | value: true
|
9 | });
|
10 | exports["default"] = void 0;
|
11 |
|
12 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
13 |
|
14 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
15 |
|
16 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
17 |
|
18 | var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
19 |
|
20 | var React = _interopRequireWildcard(require("react"));
|
21 |
|
22 | var _classnames = _interopRequireDefault(require("classnames"));
|
23 |
|
24 | var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
25 |
|
26 | var _util = require("rc-tree/lib/util");
|
27 |
|
28 | var _treeUtil = require("rc-tree/lib/utils/treeUtil");
|
29 |
|
30 | var _FileOutlined = _interopRequireDefault(require("@ant-design/icons/FileOutlined"));
|
31 |
|
32 | var _FolderOpenOutlined = _interopRequireDefault(require("@ant-design/icons/FolderOpenOutlined"));
|
33 |
|
34 | var _FolderOutlined = _interopRequireDefault(require("@ant-design/icons/FolderOutlined"));
|
35 |
|
36 | var _configProvider = require("../config-provider");
|
37 |
|
38 | var _Tree = _interopRequireDefault(require("./Tree"));
|
39 |
|
40 | var _dictUtil = require("./utils/dictUtil");
|
41 |
|
42 | function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
43 |
|
44 | function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
45 |
|
46 | var __rest = void 0 && (void 0).__rest || function (s, e) {
|
47 | var t = {};
|
48 |
|
49 | for (var p in s) {
|
50 | if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
51 | }
|
52 |
|
53 | if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
54 | if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
55 | }
|
56 | return t;
|
57 | };
|
58 |
|
59 | function getIcon(props) {
|
60 | var isLeaf = props.isLeaf,
|
61 | expanded = props.expanded;
|
62 |
|
63 | if (isLeaf) {
|
64 | return React.createElement(_FileOutlined["default"], null);
|
65 | }
|
66 |
|
67 | return expanded ? React.createElement(_FolderOpenOutlined["default"], null) : React.createElement(_FolderOutlined["default"], null);
|
68 | }
|
69 |
|
70 | function getTreeData(_ref) {
|
71 | var treeData = _ref.treeData,
|
72 | children = _ref.children;
|
73 | return treeData || (0, _treeUtil.convertTreeToData)(children);
|
74 | }
|
75 |
|
76 | var DirectoryTree = function DirectoryTree(_a, ref) {
|
77 | var defaultExpandAll = _a.defaultExpandAll,
|
78 | defaultExpandParent = _a.defaultExpandParent,
|
79 | defaultExpandedKeys = _a.defaultExpandedKeys,
|
80 | props = __rest(_a, ["defaultExpandAll", "defaultExpandParent", "defaultExpandedKeys"]);
|
81 |
|
82 |
|
83 | var lastSelectedKey = React.useRef();
|
84 | var cachedSelectedKeys = React.useRef();
|
85 | var treeRef = React.createRef();
|
86 | React.useImperativeHandle(ref, function () {
|
87 | return treeRef.current;
|
88 | });
|
89 |
|
90 | var getInitExpandedKeys = function getInitExpandedKeys() {
|
91 | var _convertDataToEntitie = (0, _treeUtil.convertDataToEntities)(getTreeData(props)),
|
92 | keyEntities = _convertDataToEntitie.keyEntities;
|
93 |
|
94 | var initExpandedKeys;
|
95 |
|
96 | if (defaultExpandAll) {
|
97 | initExpandedKeys = Object.keys(keyEntities);
|
98 | } else if (defaultExpandParent) {
|
99 | initExpandedKeys = (0, _util.conductExpandParent)(props.expandedKeys || defaultExpandedKeys, keyEntities);
|
100 | } else {
|
101 | initExpandedKeys = props.expandedKeys || defaultExpandedKeys;
|
102 | }
|
103 |
|
104 | return initExpandedKeys;
|
105 | };
|
106 |
|
107 | var _React$useState = React.useState(props.selectedKeys || props.defaultSelectedKeys || []),
|
108 | _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
109 | selectedKeys = _React$useState2[0],
|
110 | setSelectedKeys = _React$useState2[1];
|
111 |
|
112 | var _React$useState3 = React.useState(getInitExpandedKeys()),
|
113 | _React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
|
114 | expandedKeys = _React$useState4[0],
|
115 | setExpandedKeys = _React$useState4[1];
|
116 |
|
117 | React.useEffect(function () {
|
118 | if ('selectedKeys' in props) {
|
119 | setSelectedKeys(props.selectedKeys);
|
120 | }
|
121 | }, [props.selectedKeys]);
|
122 | React.useEffect(function () {
|
123 | if ('expandedKeys' in props) {
|
124 | setExpandedKeys(props.expandedKeys);
|
125 | }
|
126 | }, [props.expandedKeys]);
|
127 |
|
128 | var expandFolderNode = function expandFolderNode(event, node) {
|
129 | var isLeaf = node.isLeaf;
|
130 |
|
131 | if (isLeaf || event.shiftKey || event.metaKey || event.ctrlKey) {
|
132 | return;
|
133 | }
|
134 |
|
135 |
|
136 |
|
137 | treeRef.current.onNodeExpand(event, node);
|
138 | };
|
139 |
|
140 | var onDebounceExpand = (0, _debounce["default"])(expandFolderNode, 200, {
|
141 | leading: true
|
142 | });
|
143 |
|
144 | var onExpand = function onExpand(keys, info) {
|
145 | var _a;
|
146 |
|
147 | if (!('expandedKeys' in props)) {
|
148 | setExpandedKeys(keys);
|
149 | }
|
150 |
|
151 |
|
152 | return (_a = props.onExpand) === null || _a === void 0 ? void 0 : _a.call(props, keys, info);
|
153 | };
|
154 |
|
155 | var onClick = function onClick(event, node) {
|
156 | var _a;
|
157 |
|
158 | var expandAction = props.expandAction;
|
159 |
|
160 | if (expandAction === 'click') {
|
161 | onDebounceExpand(event, node);
|
162 | }
|
163 |
|
164 | (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, event, node);
|
165 | };
|
166 |
|
167 | var onDoubleClick = function onDoubleClick(event, node) {
|
168 | var _a;
|
169 |
|
170 | var expandAction = props.expandAction;
|
171 |
|
172 | if (expandAction === 'doubleClick') {
|
173 | onDebounceExpand(event, node);
|
174 | }
|
175 |
|
176 | (_a = props.onDoubleClick) === null || _a === void 0 ? void 0 : _a.call(props, event, node);
|
177 | };
|
178 |
|
179 | var onSelect = function onSelect(keys, event) {
|
180 | var _a;
|
181 |
|
182 | var multiple = props.multiple;
|
183 | var node = event.node,
|
184 | nativeEvent = event.nativeEvent;
|
185 | var _node$key = node.key,
|
186 | key = _node$key === void 0 ? '' : _node$key;
|
187 | var treeData = getTreeData(props);
|
188 |
|
189 |
|
190 | var newEvent = (0, _extends2["default"])((0, _extends2["default"])({}, event), {
|
191 | selected: true
|
192 | });
|
193 |
|
194 | var ctrlPick = nativeEvent.ctrlKey || nativeEvent.metaKey;
|
195 | var shiftPick = nativeEvent.shiftKey;
|
196 |
|
197 | var newSelectedKeys;
|
198 |
|
199 | if (multiple && ctrlPick) {
|
200 |
|
201 | newSelectedKeys = keys;
|
202 | lastSelectedKey.current = key;
|
203 | cachedSelectedKeys.current = newSelectedKeys;
|
204 | newEvent.selectedNodes = (0, _dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys);
|
205 | } else if (multiple && shiftPick) {
|
206 |
|
207 | newSelectedKeys = Array.from(new Set([].concat((0, _toConsumableArray2["default"])(cachedSelectedKeys.current || []), (0, _toConsumableArray2["default"])((0, _dictUtil.calcRangeKeys)({
|
208 | treeData: treeData,
|
209 | expandedKeys: expandedKeys,
|
210 | startKey: key,
|
211 | endKey: lastSelectedKey.current
|
212 | })))));
|
213 | newEvent.selectedNodes = (0, _dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys);
|
214 | } else {
|
215 |
|
216 | newSelectedKeys = [key];
|
217 | lastSelectedKey.current = key;
|
218 | cachedSelectedKeys.current = newSelectedKeys;
|
219 | newEvent.selectedNodes = (0, _dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys);
|
220 | }
|
221 |
|
222 | (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, newSelectedKeys, newEvent);
|
223 |
|
224 | if (!('selectedKeys' in props)) {
|
225 | setSelectedKeys(newSelectedKeys);
|
226 | }
|
227 | };
|
228 |
|
229 | var _React$useContext = React.useContext(_configProvider.ConfigContext),
|
230 | getPrefixCls = _React$useContext.getPrefixCls,
|
231 | direction = _React$useContext.direction;
|
232 |
|
233 | var customizePrefixCls = props.prefixCls,
|
234 | className = props.className,
|
235 | otherProps = __rest(props, ["prefixCls", "className"]);
|
236 |
|
237 | var prefixCls = getPrefixCls('tree', customizePrefixCls);
|
238 | var connectClassName = (0, _classnames["default"])("".concat(prefixCls, "-directory"), (0, _defineProperty2["default"])({}, "".concat(prefixCls, "-directory-rtl"), direction === 'rtl'), className);
|
239 | return React.createElement(_Tree["default"], (0, _extends2["default"])({
|
240 | icon: getIcon,
|
241 | ref: treeRef,
|
242 | blockNode: true
|
243 | }, otherProps, {
|
244 | prefixCls: prefixCls,
|
245 | className: connectClassName,
|
246 | expandedKeys: expandedKeys,
|
247 | selectedKeys: selectedKeys,
|
248 | onSelect: onSelect,
|
249 | onClick: onClick,
|
250 | onDoubleClick: onDoubleClick,
|
251 | onExpand: onExpand
|
252 | }));
|
253 | };
|
254 |
|
255 | var ForwardDirectoryTree = React.forwardRef(DirectoryTree);
|
256 | ForwardDirectoryTree.displayName = 'DirectoryTree';
|
257 | ForwardDirectoryTree.defaultProps = {
|
258 | showIcon: true,
|
259 | expandAction: 'click'
|
260 | };
|
261 | var _default = ForwardDirectoryTree;
|
262 | exports["default"] = _default; |
\ | No newline at end of file |