1 | "use strict";
|
2 |
|
3 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
|
4 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports["default"] = void 0;
|
9 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
10 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
11 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
12 | var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
13 | var _FileOutlined = _interopRequireDefault(require("@ant-design/icons/FileOutlined"));
|
14 | var _FolderOpenOutlined = _interopRequireDefault(require("@ant-design/icons/FolderOpenOutlined"));
|
15 | var _FolderOutlined = _interopRequireDefault(require("@ant-design/icons/FolderOutlined"));
|
16 | var _classnames = _interopRequireDefault(require("classnames"));
|
17 | var _util = require("rc-tree/lib/util");
|
18 | var _treeUtil = require("rc-tree/lib/utils/treeUtil");
|
19 | var React = _interopRequireWildcard(require("react"));
|
20 | var _configProvider = require("../config-provider");
|
21 | var _Tree = _interopRequireDefault(require("./Tree"));
|
22 | var _dictUtil = require("./utils/dictUtil");
|
23 | var __rest = void 0 && (void 0).__rest || function (s, e) {
|
24 | var t = {};
|
25 | for (var p in s) {
|
26 | if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
27 | }
|
28 | if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
29 | if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
30 | }
|
31 | return t;
|
32 | };
|
33 | function getIcon(props) {
|
34 | var isLeaf = props.isLeaf,
|
35 | expanded = props.expanded;
|
36 | if (isLeaf) {
|
37 | return React.createElement(_FileOutlined["default"], null);
|
38 | }
|
39 | return expanded ? React.createElement(_FolderOpenOutlined["default"], null) : React.createElement(_FolderOutlined["default"], null);
|
40 | }
|
41 | function getTreeData(_ref) {
|
42 | var treeData = _ref.treeData,
|
43 | children = _ref.children;
|
44 | return treeData || (0, _treeUtil.convertTreeToData)(children);
|
45 | }
|
46 | var DirectoryTree = function DirectoryTree(_a, ref) {
|
47 | var defaultExpandAll = _a.defaultExpandAll,
|
48 | defaultExpandParent = _a.defaultExpandParent,
|
49 | defaultExpandedKeys = _a.defaultExpandedKeys,
|
50 | props = __rest(_a, ["defaultExpandAll", "defaultExpandParent", "defaultExpandedKeys"]);
|
51 |
|
52 | var lastSelectedKey = React.useRef();
|
53 | var cachedSelectedKeys = React.useRef();
|
54 | var getInitExpandedKeys = function getInitExpandedKeys() {
|
55 | var _convertDataToEntitie = (0, _treeUtil.convertDataToEntities)(getTreeData(props)),
|
56 | keyEntities = _convertDataToEntitie.keyEntities;
|
57 | var initExpandedKeys;
|
58 |
|
59 | if (defaultExpandAll) {
|
60 | initExpandedKeys = Object.keys(keyEntities);
|
61 | } else if (defaultExpandParent) {
|
62 | initExpandedKeys = (0, _util.conductExpandParent)(props.expandedKeys || defaultExpandedKeys || [], keyEntities);
|
63 | } else {
|
64 | initExpandedKeys = props.expandedKeys || defaultExpandedKeys;
|
65 | }
|
66 | return initExpandedKeys;
|
67 | };
|
68 | var _React$useState = React.useState(props.selectedKeys || props.defaultSelectedKeys || []),
|
69 | _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
70 | selectedKeys = _React$useState2[0],
|
71 | setSelectedKeys = _React$useState2[1];
|
72 | var _React$useState3 = React.useState(function () {
|
73 | return getInitExpandedKeys();
|
74 | }),
|
75 | _React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
|
76 | expandedKeys = _React$useState4[0],
|
77 | setExpandedKeys = _React$useState4[1];
|
78 | React.useEffect(function () {
|
79 | if ('selectedKeys' in props) {
|
80 | setSelectedKeys(props.selectedKeys);
|
81 | }
|
82 | }, [props.selectedKeys]);
|
83 | React.useEffect(function () {
|
84 | if ('expandedKeys' in props) {
|
85 | setExpandedKeys(props.expandedKeys);
|
86 | }
|
87 | }, [props.expandedKeys]);
|
88 | var onExpand = function onExpand(keys, info) {
|
89 | var _a;
|
90 | if (!('expandedKeys' in props)) {
|
91 | setExpandedKeys(keys);
|
92 | }
|
93 |
|
94 | return (_a = props.onExpand) === null || _a === void 0 ? void 0 : _a.call(props, keys, info);
|
95 | };
|
96 | var onSelect = function onSelect(keys, event) {
|
97 | var _a;
|
98 | var multiple = props.multiple;
|
99 | var node = event.node,
|
100 | nativeEvent = event.nativeEvent;
|
101 | var _node$key = node.key,
|
102 | key = _node$key === void 0 ? '' : _node$key;
|
103 | var treeData = getTreeData(props);
|
104 |
|
105 |
|
106 | var newEvent = (0, _extends2["default"])((0, _extends2["default"])({}, event), {
|
107 | selected: true
|
108 | });
|
109 |
|
110 | var ctrlPick = (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.ctrlKey) || (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.metaKey);
|
111 | var shiftPick = nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.shiftKey;
|
112 |
|
113 | var newSelectedKeys;
|
114 | if (multiple && ctrlPick) {
|
115 |
|
116 | newSelectedKeys = keys;
|
117 | lastSelectedKey.current = key;
|
118 | cachedSelectedKeys.current = newSelectedKeys;
|
119 | newEvent.selectedNodes = (0, _dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys);
|
120 | } else if (multiple && shiftPick) {
|
121 |
|
122 | newSelectedKeys = Array.from(new Set([].concat((0, _toConsumableArray2["default"])(cachedSelectedKeys.current || []), (0, _toConsumableArray2["default"])((0, _dictUtil.calcRangeKeys)({
|
123 | treeData: treeData,
|
124 | expandedKeys: expandedKeys,
|
125 | startKey: key,
|
126 | endKey: lastSelectedKey.current
|
127 | })))));
|
128 | newEvent.selectedNodes = (0, _dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys);
|
129 | } else {
|
130 |
|
131 | newSelectedKeys = [key];
|
132 | lastSelectedKey.current = key;
|
133 | cachedSelectedKeys.current = newSelectedKeys;
|
134 | newEvent.selectedNodes = (0, _dictUtil.convertDirectoryKeysToNodes)(treeData, newSelectedKeys);
|
135 | }
|
136 | (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, newSelectedKeys, newEvent);
|
137 | if (!('selectedKeys' in props)) {
|
138 | setSelectedKeys(newSelectedKeys);
|
139 | }
|
140 | };
|
141 | var _React$useContext = React.useContext(_configProvider.ConfigContext),
|
142 | getPrefixCls = _React$useContext.getPrefixCls,
|
143 | direction = _React$useContext.direction;
|
144 | var customizePrefixCls = props.prefixCls,
|
145 | className = props.className,
|
146 | _props$showIcon = props.showIcon,
|
147 | showIcon = _props$showIcon === void 0 ? true : _props$showIcon,
|
148 | _props$expandAction = props.expandAction,
|
149 | expandAction = _props$expandAction === void 0 ? 'click' : _props$expandAction,
|
150 | otherProps = __rest(props, ["prefixCls", "className", "showIcon", "expandAction"]);
|
151 | var prefixCls = getPrefixCls('tree', customizePrefixCls);
|
152 | var connectClassName = (0, _classnames["default"])(prefixCls + "-directory", (0, _defineProperty2["default"])({}, prefixCls + "-directory-rtl", direction === 'rtl'), className);
|
153 | return React.createElement(_Tree["default"], (0, _extends2["default"])({
|
154 | icon: getIcon,
|
155 | ref: ref,
|
156 | blockNode: true
|
157 | }, otherProps, {
|
158 | showIcon: showIcon,
|
159 | expandAction: expandAction,
|
160 | prefixCls: prefixCls,
|
161 | className: connectClassName,
|
162 | expandedKeys: expandedKeys,
|
163 | selectedKeys: selectedKeys,
|
164 | onSelect: onSelect,
|
165 | onExpand: onExpand
|
166 | }));
|
167 | };
|
168 | var ForwardDirectoryTree = React.forwardRef(DirectoryTree);
|
169 | if (process.env.NODE_ENV !== 'production') {
|
170 | ForwardDirectoryTree.displayName = 'DirectoryTree';
|
171 | }
|
172 | var _default = ForwardDirectoryTree;
|
173 | exports["default"] = _default; |
\ | No newline at end of file |