Latest updates from IceHrmPro
This commit is contained in:
74
web/node_modules/rc-tree-select/HISTORY.md
generated
vendored
Normal file
74
web/node_modules/rc-tree-select/HISTORY.md
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
# History
|
||||
---
|
||||
|
||||
## 2.9.0 / 2019-04-30
|
||||
|
||||
- Use CSSMotion of `rc-animate` to make motion pure.
|
||||
|
||||
## 2.8.0 / 2019-04-26
|
||||
|
||||
- Upgrade `rc-tree` deps version to `2.0.0`.
|
||||
|
||||
## 2.6.0
|
||||
|
||||
- selected value will always display in popup.
|
||||
|
||||
## 2.5.0
|
||||
|
||||
- `notFoundContent` type change to `PropTypes.node`
|
||||
|
||||
## 2.4.0
|
||||
|
||||
- `onSearch` will also trigger when user select item makes searchValue auto clear
|
||||
- `treeExpandedKeys` will be restore when TreeSelect exit filter mode.
|
||||
- `loadData` will not trigger when in filter mode.
|
||||
|
||||
## 2.3.0
|
||||
|
||||
- Add `treeExpandedKeys`
|
||||
- Add `onTreeExpand`
|
||||
|
||||
## 2.2.0
|
||||
|
||||
- Allow custom icon (#120)
|
||||
|
||||
## 2.1.0
|
||||
|
||||
- upgrade rc-tree to 1.14.x (#121)
|
||||
|
||||
## 2.0.0
|
||||
|
||||
- Refactor TreeSelect. [#113](https://github.com/react-component/tree-select/pull/113)
|
||||
|
||||
## 1.12.0 / 2017-11-15
|
||||
|
||||
- Add `focus()` `blur()` `onFocus` `onBlur` and `autoFocus`.
|
||||
|
||||
## 1.10.0 / 2017-05-18
|
||||
|
||||
- Add `allowClear` to multiple.
|
||||
- Pass all props of tree item to TreeNode
|
||||
|
||||
## 1.7.0 / 2016-05-20
|
||||
- add `inputValue` api.
|
||||
|
||||
### break change
|
||||
- search item and select it, will save search text and result.
|
||||
|
||||
## 1.6.0-beta / 2016-05-03
|
||||
- add `treeDataSimpleMode` api.
|
||||
|
||||
## 1.5.2 / 2016-04-02
|
||||
- `skipHandleInitValue` is deprecated, use `treeCheckStrictly` instead.
|
||||
|
||||
## 1.4.0 / 2016-03-14
|
||||
- change `showAllChecked`/`showParentChecked` to `showCheckedStrategy`.
|
||||
|
||||
## 1.3.0 / 2016-03-14
|
||||
- add `showAllChecked`/`showParentChecked` API.
|
||||
|
||||
## 1.2.0 / 2016-02-29
|
||||
- change onChange's third parameter, from flat array to tree's hierarchical structure.
|
||||
|
||||
## 1.1.x / 2016-02-26
|
||||
- stable version
|
||||
22
web/node_modules/rc-tree-select/LICENSE.md
generated
vendored
Normal file
22
web/node_modules/rc-tree-select/LICENSE.md
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
MIT LICENSE
|
||||
|
||||
Copyright (c) 2015-present Alipay.com, https://www.alipay.com/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
132
web/node_modules/rc-tree-select/README.md
generated
vendored
Normal file
132
web/node_modules/rc-tree-select/README.md
generated
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
# rc-tree-select
|
||||
---
|
||||
|
||||
React TreeSelect Component
|
||||
|
||||
[![NPM version][npm-image]][npm-url]
|
||||
[![build status][travis-image]][travis-url]
|
||||
[![Test coverage][codecov-image]][codecov-url]
|
||||
[![gemnasium deps][gemnasium-image]][gemnasium-url]
|
||||
[![npm download][download-image]][download-url]
|
||||
|
||||
[npm-image]: http://img.shields.io/npm/v/rc-tree-select.svg?style=flat-square
|
||||
[npm-url]: http://npmjs.org/package/rc-tree-select
|
||||
[travis-image]: https://img.shields.io/travis/react-component/tree-select.svg?style=flat-square
|
||||
[travis-url]: https://travis-ci.org/react-component/tree-select
|
||||
[codecov-image]: https://img.shields.io/codecov/c/github/react-component/tree-select/master.svg?style=flat-square
|
||||
[codecov-url]: https://codecov.io/gh/react-component/tree-select/branch/master
|
||||
[gemnasium-image]: http://img.shields.io/gemnasium/react-component/tree-select.svg?style=flat-square
|
||||
[gemnasium-url]: https://gemnasium.com/react-component/tree-select
|
||||
[node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square
|
||||
[node-url]: http://nodejs.org/download/
|
||||
[download-image]: https://img.shields.io/npm/dm/rc-tree-select.svg?style=flat-square
|
||||
[download-url]: https://npmjs.org/package/rc-tree-select
|
||||
|
||||
|
||||
## Screenshots
|
||||
|
||||
<img src="https://os.alipayobjects.com/rmsportal/HUhyhmpWyiGKnZF.png" width="288"/>
|
||||
|
||||
|
||||
## Development
|
||||
|
||||
```
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
http://localhost:8000/examples/
|
||||
|
||||
online example: http://react-component.github.io/tree-select/
|
||||
|
||||
## install
|
||||
|
||||
[](https://npmjs.org/package/rc-tree-select)
|
||||
|
||||
## API
|
||||
|
||||
### TreeSelect props
|
||||
|
||||
| name | description | type | default |
|
||||
|----------|----------------|----------|--------------|
|
||||
|className | additional css class of root dom node | String | '' |
|
||||
|prefixCls | prefix class | String | '' |
|
||||
|animation | dropdown animation name. only support slide-up now | String | '' |
|
||||
|transitionName | dropdown css animation name | String | '' |
|
||||
|choiceTransitionName | css animation name for selected items at multiple mode | String | '' |
|
||||
|dropdownMatchSelectWidth | whether dropdown's with is same with select. Default set `min-width` same as input | bool | - |
|
||||
|dropdownClassName | additional className applied to dropdown | String | - |
|
||||
|dropdownStyle | additional style applied to dropdown | Object | {} |
|
||||
|dropdownPopupAlign | specify alignment for dropdown (alignConfig of [dom-align](https://github.com/yiminghe/dom-align)) | Object | - |
|
||||
|onDropdownVisibleChange | control dropdown visible | function | `() => { return true; }` |
|
||||
|notFoundContent | specify content to show when no result matches. | String | 'Not Found' |
|
||||
|showSearch | whether show search input in single mode | bool | true |
|
||||
|allowClear | whether allowClear | bool | false |
|
||||
|maxTagTextLength | max tag text length to show | number | - |
|
||||
|maxTagCount | max tag count to show | number | - |
|
||||
|maxTagPlaceholder | placeholder for omitted values | ReactNode/function(omittedValues) | - |
|
||||
|multiple | whether multiple select (true when enable treeCheckable) | bool | false |
|
||||
|disabled | whether disabled select | bool | false |
|
||||
|searchValue | work with `onSearch` to make search value controlled. | string | '' |
|
||||
|defaultValue | initial selected treeNode(s) | same as value type | - |
|
||||
|value | current selected treeNode(s). | normal: String/Array<String>. labelInValue: {value:String,label:React.Node}/Array<{value,label}>. treeCheckStrictly(halfChecked default false): {value:String,label:React.Node, halfChecked}/Array<{value,label,halfChecked}>. | - |
|
||||
|labelInValue| whether to embed label in value, see above value type | Bool | false |
|
||||
|onChange | called when select treeNode or input value change | function(value, label(null), extra) | - |
|
||||
|onSelect | called when select treeNode | function(value, node, extra) | - |
|
||||
|onSearch | called when input changed | function | - |
|
||||
|onTreeExpand | called when tree node expand | function(expandedKeys) | - |
|
||||
|showCheckedStrategy | `TreeSelect.SHOW_ALL`: show all checked treeNodes (Include parent treeNode). `TreeSelect.SHOW_PARENT`: show checked treeNodes (Just show parent treeNode). Default just show child. | enum{TreeSelect.SHOW_ALL, TreeSelect.SHOW_PARENT, TreeSelect.SHOW_CHILD } | TreeSelect.SHOW_CHILD |
|
||||
|treeIcon | show tree icon | bool | false |
|
||||
|treeLine | show tree line | bool | false |
|
||||
|treeDefaultExpandAll | default expand all treeNode | bool | false |
|
||||
|treeDefaultExpandedKeys | default expanded treeNode keys | Array<String> | - |
|
||||
|treeExpandedKeys | set tree expanded keys | Array<String> | - |
|
||||
|treeCheckable | whether tree show checkbox (select callback will not fire) | bool | false |
|
||||
|treeCheckStrictly | check node precisely, parent and children nodes are not associated| bool | false |
|
||||
|filterTreeNode | whether filter treeNodes by input value. default filter by treeNode's treeNodeFilterProp prop's value | bool/Function(inputValue:string, treeNode:TreeNode) | Function |
|
||||
|treeNodeFilterProp | which prop value of treeNode will be used for filter if filterTreeNode return true | String | 'value' |
|
||||
|treeNodeLabelProp | which prop value of treeNode will render as content of select | String | 'title' |
|
||||
|treeData | treeNodes data Array, if set it then you need not to construct children TreeNode. (value should be unique across the whole array) | array<{value,label,children, [disabled,selectable]}> | [] |
|
||||
|treeDataSimpleMode | enable simple mode of treeData.(treeData should be like this: [{id:1, pId:0, value:'1', label:"test1",...},...], `pId` is parent node's id) | bool/object{id:'id', pId:'pId', rootPId:null} | false |
|
||||
|loadData | load data asynchronously | function(node) | - |
|
||||
|getPopupContainer | container which popup select menu rendered into | function(trigger:Node):Node | function(){return document.body;} |
|
||||
|autoClearSearchValue | auto clear search input value when multiple select is selected/deselected | boolean | true |
|
||||
| inputIcon | specify the select arrow icon | ReactNode \| (props: TreeProps) => ReactNode | - |
|
||||
| clearIcon | specify the clear icon | ReactNode \| (props: TreeProps) => ReactNode | - |
|
||||
| removeIcon | specify the remove icon | ReactNode \| (props: TreeProps) => ReactNode | - |
|
||||
|switcherIcon| specify the switcher icon | ReactNode \| (props: TreeProps) => ReactNode | - |
|
||||
|virtual| Disable virtual when `false` | false | - |
|
||||
|
||||
|
||||
### TreeNode props
|
||||
> note: you'd better to use `treeData` instead of using TreeNode.
|
||||
|
||||
| name | description | type | default |
|
||||
|----------|----------------|----------|--------------|
|
||||
|disabled | disable treeNode | bool | false |
|
||||
|key | it's value must be unique across the tree's all TreeNode, you must set it | String | - |
|
||||
|value | default as treeNodeFilterProp (be unique across the tree's all TreeNode) | String | '' |
|
||||
|title | tree/subTree's title | String/element | '---' |
|
||||
|isLeaf | whether it's leaf node | bool | false |
|
||||
|
||||
|
||||
## note
|
||||
1. Optimization tips(when there are large amounts of data, like more than 5000 nodes)
|
||||
- Do not Expand all nodes.
|
||||
- Recommend not exist many `TreeSelect` components in a page at the same time.
|
||||
- Recommend not use `treeCheckable` mode, or use `treeCheckStrictly`.
|
||||
2. In `treeCheckable` mode, It has the same effect when click `x`(node in Selection box) or uncheck in the treeNode(in dropdown panel), but the essence is not the same. So, even if both of them trigger `onChange` method, but the parameters (the third parameter) are different. (中文:在`treeCheckable`模式下,已选择节点上的`x`删除操作、和相应 treeNode 节点上 checkbox 的 uncheck 操作,最终效果相同,但本质不一样。前者跟弹出的 tree 组件可以“毫无关系”(例如 dropdown 没展开过,tree 也就没渲染好),而后者是 tree 组件上的节点 uncheck 事件。所以、即便两者都会触发`onChange`方法、但它们的参数(第三个参数)是不同的。)
|
||||
|
||||
## Test Case
|
||||
|
||||
http://localhost:8000/tests/runner.html?coverage
|
||||
|
||||
## Coverage
|
||||
|
||||
http://localhost:8000/node_modules/rc-server/node_modules/node-jscover/lib/front-end/jscoverage.html?w=http://localhost:8000/tests/runner.html?coverage
|
||||
|
||||
## License
|
||||
|
||||
rc-tree-select is released under the MIT license.
|
||||
BIN
web/node_modules/rc-tree-select/assets/icons.png
generated
vendored
Normal file
BIN
web/node_modules/rc-tree-select/assets/icons.png
generated
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
2
web/node_modules/rc-tree-select/assets/index.less
generated
vendored
Normal file
2
web/node_modules/rc-tree-select/assets/index.less
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
@import "./select.less";
|
||||
@import "./tree.less";
|
||||
BIN
web/node_modules/rc-tree-select/assets/loading.gif
generated
vendored
Normal file
BIN
web/node_modules/rc-tree-select/assets/loading.gif
generated
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 381 B |
BIN
web/node_modules/rc-tree-select/assets/minus.gif
generated
vendored
Normal file
BIN
web/node_modules/rc-tree-select/assets/minus.gif
generated
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 45 B |
3
web/node_modules/rc-tree-select/assets/select.less
generated
vendored
Normal file
3
web/node_modules/rc-tree-select/assets/select.less
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
@import '~rc-select/assets/index';
|
||||
|
||||
@select-prefix: ~'rc-tree-select';
|
||||
3
web/node_modules/rc-tree-select/assets/tree.less
generated
vendored
Normal file
3
web/node_modules/rc-tree-select/assets/tree.less
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
@import '~rc-tree/assets/index';
|
||||
|
||||
@treePrefixCls: ~'rc-tree-select-tree';
|
||||
23
web/node_modules/rc-tree-select/es/Context.d.ts
generated
vendored
Normal file
23
web/node_modules/rc-tree-select/es/Context.d.ts
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
import React from 'react';
|
||||
import { IconType } from 'rc-tree/lib/interface';
|
||||
import { Key, LegacyDataNode } from './interface';
|
||||
interface ContextProps {
|
||||
checkable: boolean | React.ReactNode;
|
||||
checkedKeys: Key[];
|
||||
halfCheckedKeys: Key[];
|
||||
treeExpandedKeys: Key[];
|
||||
treeDefaultExpandedKeys: Key[];
|
||||
onTreeExpand: (keys: Key[]) => void;
|
||||
treeDefaultExpandAll: boolean;
|
||||
treeIcon: IconType;
|
||||
showTreeIcon: boolean;
|
||||
switcherIcon: IconType;
|
||||
treeLine: boolean;
|
||||
treeNodeFilterProp: string;
|
||||
treeLoadedKeys: Key[];
|
||||
treeMotion: any;
|
||||
loadData: (treeNode: LegacyDataNode) => Promise<unknown>;
|
||||
onTreeLoad: (loadedKeys: Key[]) => void;
|
||||
}
|
||||
export declare const SelectContext: React.Context<ContextProps>;
|
||||
export {};
|
||||
2
web/node_modules/rc-tree-select/es/Context.js
generated
vendored
Normal file
2
web/node_modules/rc-tree-select/es/Context.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
import React from 'react';
|
||||
export var SelectContext = React.createContext(null);
|
||||
29
web/node_modules/rc-tree-select/es/OptionList.d.ts
generated
vendored
Normal file
29
web/node_modules/rc-tree-select/es/OptionList.d.ts
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
import React from 'react';
|
||||
import { RefOptionListProps } from 'rc-select/lib/OptionList';
|
||||
import { FlattenDataNode, RawValueType, DataNode } from './interface';
|
||||
export interface OptionListProps<OptionsType extends object[]> {
|
||||
prefixCls: string;
|
||||
id: string;
|
||||
options: OptionsType;
|
||||
flattenOptions: FlattenDataNode[];
|
||||
height: number;
|
||||
itemHeight: number;
|
||||
virtual?: boolean;
|
||||
values: Set<RawValueType>;
|
||||
multiple: boolean;
|
||||
open: boolean;
|
||||
defaultActiveFirstOption?: boolean;
|
||||
notFoundContent?: React.ReactNode;
|
||||
menuItemSelectedIcon?: any;
|
||||
childrenAsData: boolean;
|
||||
searchValue: string;
|
||||
onSelect: (value: RawValueType, option: {
|
||||
selected: boolean;
|
||||
}) => void;
|
||||
onToggleOpen: (open?: boolean) => void;
|
||||
/** Tell Select that some value is now active to make accessibility work */
|
||||
onActiveValue: (value: RawValueType, index: number) => void;
|
||||
onScroll: React.UIEventHandler<HTMLDivElement>;
|
||||
}
|
||||
declare const RefOptionList: React.ForwardRefExoticComponent<OptionListProps<DataNode[]> & React.RefAttributes<RefOptionListProps>>;
|
||||
export default RefOptionList;
|
||||
284
web/node_modules/rc-tree-select/es/OptionList.js
generated
vendored
Normal file
284
web/node_modules/rc-tree-select/es/OptionList.js
generated
vendored
Normal file
@@ -0,0 +1,284 @@
|
||||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
|
||||
|
||||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
|
||||
|
||||
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
|
||||
|
||||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
|
||||
|
||||
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
||||
|
||||
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
||||
|
||||
function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
||||
|
||||
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
||||
|
||||
import React from 'react';
|
||||
import KeyCode from "rc-util/es/KeyCode";
|
||||
import useMemo from "rc-util/es/hooks/useMemo";
|
||||
import Tree from 'rc-tree';
|
||||
import { SelectContext } from './Context';
|
||||
import useKeyValueMapping from './hooks/useKeyValueMapping';
|
||||
import useKeyValueMap from './hooks/useKeyValueMap';
|
||||
var HIDDEN_STYLE = {
|
||||
width: 0,
|
||||
height: 0,
|
||||
display: 'flex',
|
||||
overflow: 'hidden',
|
||||
opacity: 0,
|
||||
border: 0,
|
||||
padding: 0,
|
||||
margin: 0
|
||||
};
|
||||
|
||||
var OptionList = function OptionList(props, ref) {
|
||||
var prefixCls = props.prefixCls,
|
||||
height = props.height,
|
||||
itemHeight = props.itemHeight,
|
||||
virtual = props.virtual,
|
||||
options = props.options,
|
||||
flattenOptions = props.flattenOptions,
|
||||
multiple = props.multiple,
|
||||
searchValue = props.searchValue,
|
||||
onSelect = props.onSelect,
|
||||
onToggleOpen = props.onToggleOpen,
|
||||
open = props.open,
|
||||
notFoundContent = props.notFoundContent;
|
||||
|
||||
var _React$useContext = React.useContext(SelectContext),
|
||||
checkable = _React$useContext.checkable,
|
||||
checkedKeys = _React$useContext.checkedKeys,
|
||||
halfCheckedKeys = _React$useContext.halfCheckedKeys,
|
||||
treeExpandedKeys = _React$useContext.treeExpandedKeys,
|
||||
treeDefaultExpandAll = _React$useContext.treeDefaultExpandAll,
|
||||
treeDefaultExpandedKeys = _React$useContext.treeDefaultExpandedKeys,
|
||||
onTreeExpand = _React$useContext.onTreeExpand,
|
||||
treeIcon = _React$useContext.treeIcon,
|
||||
showTreeIcon = _React$useContext.showTreeIcon,
|
||||
switcherIcon = _React$useContext.switcherIcon,
|
||||
treeLine = _React$useContext.treeLine,
|
||||
treeNodeFilterProp = _React$useContext.treeNodeFilterProp,
|
||||
loadData = _React$useContext.loadData,
|
||||
treeLoadedKeys = _React$useContext.treeLoadedKeys,
|
||||
treeMotion = _React$useContext.treeMotion,
|
||||
onTreeLoad = _React$useContext.onTreeLoad;
|
||||
|
||||
var treeRef = React.useRef();
|
||||
var memoOptions = useMemo(function () {
|
||||
return options;
|
||||
}, [open, options], function (prev, next) {
|
||||
return next[0] && prev[1] !== next[1];
|
||||
});
|
||||
|
||||
var _useKeyValueMap = useKeyValueMap(flattenOptions),
|
||||
_useKeyValueMap2 = _slicedToArray(_useKeyValueMap, 2),
|
||||
cacheKeyMap = _useKeyValueMap2[0],
|
||||
cacheValueMap = _useKeyValueMap2[1];
|
||||
|
||||
var _useKeyValueMapping = useKeyValueMapping(cacheKeyMap, cacheValueMap),
|
||||
_useKeyValueMapping2 = _slicedToArray(_useKeyValueMapping, 2),
|
||||
getEntityByKey = _useKeyValueMapping2[0],
|
||||
getEntityByValue = _useKeyValueMapping2[1]; // ========================== Values ==========================
|
||||
|
||||
|
||||
var valueKeys = React.useMemo(function () {
|
||||
return checkedKeys.map(function (val) {
|
||||
var entity = getEntityByValue(val);
|
||||
return entity ? entity.key : null;
|
||||
});
|
||||
}, [checkedKeys]);
|
||||
var mergedCheckedKeys = React.useMemo(function () {
|
||||
if (!checkable) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
checked: valueKeys,
|
||||
halfChecked: halfCheckedKeys
|
||||
};
|
||||
}, [valueKeys, halfCheckedKeys, checkable]); // ========================== Scroll ==========================
|
||||
|
||||
React.useEffect(function () {
|
||||
// Single mode should scroll to current key
|
||||
if (open && !multiple && valueKeys.length) {
|
||||
var _treeRef$current;
|
||||
|
||||
(_treeRef$current = treeRef.current) === null || _treeRef$current === void 0 ? void 0 : _treeRef$current.scrollTo({
|
||||
key: valueKeys[0]
|
||||
});
|
||||
}
|
||||
}, [open]); // ========================== Search ==========================
|
||||
|
||||
var lowerSearchValue = String(searchValue).toLowerCase();
|
||||
|
||||
var filterTreeNode = function filterTreeNode(treeNode) {
|
||||
if (!lowerSearchValue) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return String(treeNode[treeNodeFilterProp]).toLowerCase().includes(lowerSearchValue);
|
||||
}; // =========================== Keys ===========================
|
||||
|
||||
|
||||
var _React$useState = React.useState(treeDefaultExpandedKeys),
|
||||
_React$useState2 = _slicedToArray(_React$useState, 2),
|
||||
expandedKeys = _React$useState2[0],
|
||||
setExpandedKeys = _React$useState2[1];
|
||||
|
||||
var _React$useState3 = React.useState(null),
|
||||
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
||||
searchExpandedKeys = _React$useState4[0],
|
||||
setSearchExpandedKeys = _React$useState4[1];
|
||||
|
||||
var mergedExpandedKeys = React.useMemo(function () {
|
||||
if (treeExpandedKeys) {
|
||||
return _toConsumableArray(treeExpandedKeys);
|
||||
}
|
||||
|
||||
return searchValue ? searchExpandedKeys : expandedKeys;
|
||||
}, [expandedKeys, searchExpandedKeys, lowerSearchValue, treeExpandedKeys]);
|
||||
React.useEffect(function () {
|
||||
if (searchValue) {
|
||||
setSearchExpandedKeys(flattenOptions.map(function (o) {
|
||||
return o.key;
|
||||
}));
|
||||
}
|
||||
}, [searchValue]);
|
||||
|
||||
var onInternalExpand = function onInternalExpand(keys) {
|
||||
setExpandedKeys(keys);
|
||||
setSearchExpandedKeys(keys);
|
||||
|
||||
if (onTreeExpand) {
|
||||
onTreeExpand(keys);
|
||||
}
|
||||
}; // ========================== Events ==========================
|
||||
|
||||
|
||||
var onListMouseDown = function onListMouseDown(event) {
|
||||
event.preventDefault();
|
||||
};
|
||||
|
||||
var onInternalSelect = function onInternalSelect(_, _ref) {
|
||||
var key = _ref.node.key;
|
||||
var entity = getEntityByKey(key, checkable ? 'checkbox' : 'select');
|
||||
|
||||
if (entity !== null) {
|
||||
onSelect(entity.data.value, {
|
||||
selected: !checkedKeys.includes(entity.data.value)
|
||||
});
|
||||
}
|
||||
|
||||
if (!multiple) {
|
||||
onToggleOpen(false);
|
||||
}
|
||||
}; // ========================= Keyboard =========================
|
||||
|
||||
|
||||
var _React$useState5 = React.useState(null),
|
||||
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
||||
activeKey = _React$useState6[0],
|
||||
setActiveKey = _React$useState6[1];
|
||||
|
||||
var activeEntity = getEntityByKey(activeKey);
|
||||
React.useImperativeHandle(ref, function () {
|
||||
return {
|
||||
onKeyDown: function onKeyDown(event) {
|
||||
var _treeRef$current2;
|
||||
|
||||
var which = event.which;
|
||||
|
||||
switch (which) {
|
||||
// >>> Arrow keys
|
||||
case KeyCode.UP:
|
||||
case KeyCode.DOWN:
|
||||
case KeyCode.LEFT:
|
||||
case KeyCode.RIGHT:
|
||||
(_treeRef$current2 = treeRef.current) === null || _treeRef$current2 === void 0 ? void 0 : _treeRef$current2.onKeyDown(event);
|
||||
break;
|
||||
// >>> Select item
|
||||
|
||||
case KeyCode.ENTER:
|
||||
{
|
||||
if (activeEntity !== null) {
|
||||
onInternalSelect(null, {
|
||||
node: {
|
||||
key: activeKey
|
||||
},
|
||||
selected: !checkedKeys.includes(activeEntity.data.value)
|
||||
});
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
// >>> Close
|
||||
|
||||
case KeyCode.ESC:
|
||||
{
|
||||
onToggleOpen(false);
|
||||
}
|
||||
}
|
||||
},
|
||||
onKeyUp: function onKeyUp() {}
|
||||
};
|
||||
}); // ========================== Render ==========================
|
||||
|
||||
if (memoOptions.length === 0) {
|
||||
return React.createElement("div", {
|
||||
role: "listbox",
|
||||
className: "".concat(prefixCls, "-empty"),
|
||||
onMouseDown: onListMouseDown
|
||||
}, notFoundContent);
|
||||
}
|
||||
|
||||
var treeProps = {};
|
||||
|
||||
if (treeLoadedKeys) {
|
||||
treeProps.loadedKeys = treeLoadedKeys;
|
||||
}
|
||||
|
||||
if (mergedExpandedKeys) {
|
||||
treeProps.expandedKeys = mergedExpandedKeys;
|
||||
}
|
||||
|
||||
return React.createElement("div", {
|
||||
onMouseDown: onListMouseDown
|
||||
}, activeEntity && open && React.createElement("span", {
|
||||
style: HIDDEN_STYLE,
|
||||
"aria-live": "assertive"
|
||||
}, activeEntity.data.value), React.createElement(Tree, Object.assign({
|
||||
ref: treeRef,
|
||||
focusable: false,
|
||||
prefixCls: "".concat(prefixCls, "-tree"),
|
||||
treeData: memoOptions,
|
||||
height: height,
|
||||
itemHeight: itemHeight,
|
||||
virtual: virtual,
|
||||
multiple: multiple,
|
||||
icon: treeIcon,
|
||||
showIcon: showTreeIcon,
|
||||
switcherIcon: switcherIcon,
|
||||
showLine: treeLine,
|
||||
loadData: searchValue ? null : loadData,
|
||||
motion: treeMotion,
|
||||
// We handle keys by out instead tree self
|
||||
checkable: checkable,
|
||||
checkStrictly: true,
|
||||
checkedKeys: mergedCheckedKeys,
|
||||
selectedKeys: !checkable ? valueKeys : [],
|
||||
defaultExpandAll: treeDefaultExpandAll
|
||||
}, treeProps, {
|
||||
// Proxy event out
|
||||
onActiveChange: setActiveKey,
|
||||
onSelect: onInternalSelect,
|
||||
onCheck: onInternalSelect,
|
||||
onExpand: onInternalExpand,
|
||||
onLoad: onTreeLoad,
|
||||
filterTreeNode: filterTreeNode
|
||||
})));
|
||||
};
|
||||
|
||||
var RefOptionList = React.forwardRef(OptionList);
|
||||
RefOptionList.displayName = 'OptionList';
|
||||
export default RefOptionList;
|
||||
9
web/node_modules/rc-tree-select/es/TreeNode.d.ts
generated
vendored
Normal file
9
web/node_modules/rc-tree-select/es/TreeNode.d.ts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import React from 'react';
|
||||
import { DataNode, Key } from './interface';
|
||||
export interface TreeNodeProps extends Omit<DataNode, 'children'> {
|
||||
value: Key;
|
||||
children?: React.ReactNode;
|
||||
}
|
||||
/** This is a placeholder, not real render in dom */
|
||||
declare const TreeNode: React.FC<TreeNodeProps>;
|
||||
export default TreeNode;
|
||||
6
web/node_modules/rc-tree-select/es/TreeNode.js
generated
vendored
Normal file
6
web/node_modules/rc-tree-select/es/TreeNode.js
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/** This is a placeholder, not real render in dom */
|
||||
var TreeNode = function TreeNode() {
|
||||
return null;
|
||||
};
|
||||
|
||||
export default TreeNode;
|
||||
61
web/node_modules/rc-tree-select/es/TreeSelect.d.ts
generated
vendored
Normal file
61
web/node_modules/rc-tree-select/es/TreeSelect.d.ts
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
import React from 'react';
|
||||
import { SelectProps, RefSelectProps } from 'rc-select/lib/generate';
|
||||
import { IconType } from 'rc-tree/lib/interface';
|
||||
import { FilterFunc } from 'rc-select/lib/interface/generator';
|
||||
import { Key, DefaultValueType, DataNode, LabelValueType, SimpleModeConfig, ChangeEventExtra, LegacyDataNode } from './interface';
|
||||
import { CheckedStrategy, SHOW_ALL, SHOW_PARENT, SHOW_CHILD } from './utils/strategyUtil';
|
||||
export interface TreeSelectProps<ValueType = DefaultValueType> extends Omit<SelectProps<DataNode[], ValueType>, 'onChange' | 'mode' | 'menuItemSelectedIcon' | 'dropdownRender' | 'dropdownAlign' | 'backfill' | 'getInputElement' | 'optionLabelProp' | 'tokenSeparators' | 'filterOption'> {
|
||||
multiple?: boolean;
|
||||
showArrow?: boolean;
|
||||
showSearch?: boolean;
|
||||
open?: boolean;
|
||||
defaultOpen?: boolean;
|
||||
value?: ValueType;
|
||||
defaultValue?: ValueType;
|
||||
disabled?: boolean;
|
||||
placeholder?: React.ReactNode;
|
||||
/** @deprecated Use `searchValue` instead */
|
||||
inputValue?: string;
|
||||
searchValue?: string;
|
||||
autoClearSearchValue?: boolean;
|
||||
maxTagTextLength?: number;
|
||||
maxTagCount?: number;
|
||||
maxTagPlaceholder?: (omittedValues: LabelValueType[]) => React.ReactNode;
|
||||
loadData?: (dataNode: LegacyDataNode) => Promise<unknown>;
|
||||
treeNodeFilterProp?: string;
|
||||
treeNodeLabelProp?: string;
|
||||
treeDataSimpleMode?: boolean | SimpleModeConfig;
|
||||
treeExpandedKeys?: Key[];
|
||||
treeDefaultExpandedKeys?: Key[];
|
||||
treeLoadedKeys?: Key[];
|
||||
treeCheckable?: boolean | React.ReactNode;
|
||||
treeCheckStrictly?: boolean;
|
||||
showCheckedStrategy?: CheckedStrategy;
|
||||
treeDefaultExpandAll?: boolean;
|
||||
treeData?: DataNode[];
|
||||
treeLine?: boolean;
|
||||
treeIcon?: IconType;
|
||||
showTreeIcon?: boolean;
|
||||
switcherIcon?: IconType;
|
||||
treeMotion?: any;
|
||||
children?: React.ReactNode;
|
||||
filterTreeNode?: boolean | FilterFunc<LegacyDataNode>;
|
||||
dropdownPopupAlign?: any;
|
||||
onSearch?: (value: string) => void;
|
||||
onChange?: (value: ValueType, labelList: React.ReactNode[], extra: ChangeEventExtra) => void;
|
||||
onTreeExpand?: (expandedKeys: Key[]) => void;
|
||||
onTreeLoad?: (loadedKeys: Key[]) => void;
|
||||
/** `searchPlaceholder` has been removed since search box has been merged into input box */
|
||||
searchPlaceholder?: React.ReactNode;
|
||||
}
|
||||
declare class TreeSelect<ValueType = DefaultValueType> extends React.Component<TreeSelectProps<ValueType>, {}> {
|
||||
static TreeNode: React.FC<import("./TreeNode").TreeNodeProps>;
|
||||
static SHOW_ALL: typeof SHOW_ALL;
|
||||
static SHOW_PARENT: typeof SHOW_PARENT;
|
||||
static SHOW_CHILD: typeof SHOW_CHILD;
|
||||
selectRef: React.RefObject<RefSelectProps>;
|
||||
focus: () => void;
|
||||
blur: () => void;
|
||||
render(): JSX.Element;
|
||||
}
|
||||
export default TreeSelect;
|
||||
505
web/node_modules/rc-tree-select/es/TreeSelect.js
generated
vendored
Normal file
505
web/node_modules/rc-tree-select/es/TreeSelect.js
generated
vendored
Normal file
@@ -0,0 +1,505 @@
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
||||
|
||||
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
||||
|
||||
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
||||
|
||||
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
||||
|
||||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
|
||||
|
||||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
|
||||
|
||||
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
|
||||
|
||||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
|
||||
|
||||
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||||
|
||||
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
||||
|
||||
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
||||
|
||||
function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
||||
|
||||
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
||||
|
||||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
import React from 'react';
|
||||
import generateSelector from "rc-select/es/generate";
|
||||
import { getLabeledValue } from "rc-select/es/utils/valueUtil";
|
||||
import { convertDataToEntities } from "rc-tree/es/utils/treeUtil";
|
||||
import { conductCheck } from "rc-tree/es/utils/conductUtil";
|
||||
import { INTERNAL_PROPS_MARK } from "rc-select/es/interface/generator";
|
||||
import warning from "rc-util/es/warning";
|
||||
import OptionList from './OptionList';
|
||||
import TreeNode from './TreeNode';
|
||||
import { flattenOptions, filterOptions, isValueDisabled, findValueOption, addValue, removeValue, getRawValueLabeled, toArray } from './utils/valueUtil';
|
||||
import warningProps from './utils/warningPropsUtil';
|
||||
import { SelectContext } from './Context';
|
||||
import useTreeData from './hooks/useTreeData';
|
||||
import useKeyValueMap from './hooks/useKeyValueMap';
|
||||
import useKeyValueMapping from './hooks/useKeyValueMapping';
|
||||
import { formatStrategyKeys, SHOW_ALL, SHOW_PARENT, SHOW_CHILD } from './utils/strategyUtil';
|
||||
import { fillAdditionalInfo } from './utils/legacyUtil';
|
||||
import useSelectValues from './hooks/useSelectValues';
|
||||
var OMIT_PROPS = ['expandedKeys', 'treeData', 'treeCheckable', 'showCheckedStrategy', 'searchPlaceholder', 'treeLine', 'treeIcon', 'showTreeIcon', 'switcherIcon', 'treeNodeFilterProp', 'filterTreeNode', 'dropdownPopupAlign', 'treeDefaultExpandAll', 'treeCheckStrictly', 'treeExpandedKeys', 'treeLoadedKeys', 'treeMotion', 'onTreeExpand', 'onTreeLoad', 'loadData', 'treeDataSimpleMode', 'treeNodeLabelProp', 'treeDefaultExpandedKeys'];
|
||||
var RefSelect = generateSelector({
|
||||
prefixCls: 'rc-tree-select',
|
||||
components: {
|
||||
optionList: OptionList
|
||||
},
|
||||
// Not use generate since we will handle ourself
|
||||
convertChildrenToData: function convertChildrenToData() {
|
||||
return null;
|
||||
},
|
||||
flattenOptions: flattenOptions,
|
||||
// Handle `optionLabelProp` in TreeSelect component
|
||||
getLabeledValue: getLabeledValue,
|
||||
filterOptions: filterOptions,
|
||||
isValueDisabled: isValueDisabled,
|
||||
findValueOption: findValueOption,
|
||||
omitDOMProps: function omitDOMProps(props) {
|
||||
var cloneProps = _objectSpread({}, props);
|
||||
|
||||
OMIT_PROPS.forEach(function (prop) {
|
||||
delete cloneProps[prop];
|
||||
});
|
||||
return cloneProps;
|
||||
}
|
||||
});
|
||||
RefSelect.displayName = 'Select';
|
||||
var RefTreeSelect = React.forwardRef(function (props, ref) {
|
||||
var multiple = props.multiple,
|
||||
treeCheckable = props.treeCheckable,
|
||||
treeCheckStrictly = props.treeCheckStrictly,
|
||||
_props$showCheckedStr = props.showCheckedStrategy,
|
||||
showCheckedStrategy = _props$showCheckedStr === void 0 ? 'SHOW_CHILD' : _props$showCheckedStr,
|
||||
labelInValue = props.labelInValue,
|
||||
loadData = props.loadData,
|
||||
treeLoadedKeys = props.treeLoadedKeys,
|
||||
_props$treeNodeFilter = props.treeNodeFilterProp,
|
||||
treeNodeFilterProp = _props$treeNodeFilter === void 0 ? 'value' : _props$treeNodeFilter,
|
||||
treeNodeLabelProp = props.treeNodeLabelProp,
|
||||
treeDataSimpleMode = props.treeDataSimpleMode,
|
||||
treeData = props.treeData,
|
||||
treeExpandedKeys = props.treeExpandedKeys,
|
||||
treeDefaultExpandedKeys = props.treeDefaultExpandedKeys,
|
||||
treeDefaultExpandAll = props.treeDefaultExpandAll,
|
||||
children = props.children,
|
||||
treeIcon = props.treeIcon,
|
||||
showTreeIcon = props.showTreeIcon,
|
||||
switcherIcon = props.switcherIcon,
|
||||
treeLine = props.treeLine,
|
||||
treeMotion = props.treeMotion,
|
||||
filterTreeNode = props.filterTreeNode,
|
||||
dropdownPopupAlign = props.dropdownPopupAlign,
|
||||
onChange = props.onChange,
|
||||
onTreeExpand = props.onTreeExpand,
|
||||
onTreeLoad = props.onTreeLoad,
|
||||
onDropdownVisibleChange = props.onDropdownVisibleChange,
|
||||
onSelect = props.onSelect,
|
||||
onDeselect = props.onDeselect;
|
||||
var mergedCheckable = treeCheckable || treeCheckStrictly;
|
||||
var mergedMultiple = multiple || mergedCheckable;
|
||||
var treeConduction = treeCheckable && !treeCheckStrictly;
|
||||
var mergedLabelInValue = treeCheckStrictly || labelInValue; // ========================== Ref ==========================
|
||||
|
||||
var selectRef = React.useRef(null);
|
||||
React.useImperativeHandle(ref, function () {
|
||||
return {
|
||||
focus: selectRef.current.focus,
|
||||
blur: selectRef.current.blur
|
||||
};
|
||||
}); // ======================= Tree Data =======================
|
||||
// Legacy both support `label` or `title` if not set.
|
||||
// We have to fallback to function to handle this
|
||||
|
||||
var getTreeNodeLabelProp = function getTreeNodeLabelProp(node) {
|
||||
if (treeNodeLabelProp) {
|
||||
return node[treeNodeLabelProp];
|
||||
}
|
||||
|
||||
if (!treeData) {
|
||||
return node.title;
|
||||
}
|
||||
|
||||
return node.label || node.title;
|
||||
};
|
||||
|
||||
var mergedTreeData = useTreeData(treeData, children, {
|
||||
getLabelProp: getTreeNodeLabelProp,
|
||||
simpleMode: treeDataSimpleMode
|
||||
});
|
||||
var flattedOptions = React.useMemo(function () {
|
||||
return flattenOptions(mergedTreeData);
|
||||
}, [mergedTreeData]);
|
||||
|
||||
var _useKeyValueMap = useKeyValueMap(flattedOptions),
|
||||
_useKeyValueMap2 = _slicedToArray(_useKeyValueMap, 2),
|
||||
cacheKeyMap = _useKeyValueMap2[0],
|
||||
cacheValueMap = _useKeyValueMap2[1];
|
||||
|
||||
var _useKeyValueMapping = useKeyValueMapping(cacheKeyMap, cacheValueMap),
|
||||
_useKeyValueMapping2 = _slicedToArray(_useKeyValueMapping, 2),
|
||||
getEntityByKey = _useKeyValueMapping2[0],
|
||||
getEntityByValue = _useKeyValueMapping2[1]; // Only generate keyEntities for check conduction when is `treeCheckable`
|
||||
|
||||
|
||||
var _React$useMemo = React.useMemo(function () {
|
||||
if (treeConduction) {
|
||||
return convertDataToEntities(mergedTreeData);
|
||||
}
|
||||
|
||||
return {
|
||||
keyEntities: null
|
||||
};
|
||||
}, [mergedTreeData, treeCheckable, treeCheckStrictly]),
|
||||
conductKeyEntities = _React$useMemo.keyEntities; // ========================= Value =========================
|
||||
|
||||
|
||||
var _React$useState = React.useState(props.defaultValue),
|
||||
_React$useState2 = _slicedToArray(_React$useState, 2),
|
||||
value = _React$useState2[0],
|
||||
setValue = _React$useState2[1];
|
||||
|
||||
var mergedValue = 'value' in props ? props.value : value;
|
||||
/** Get `missingRawValues` which not exist in the tree yet */
|
||||
|
||||
var splitRawValues = function splitRawValues(newRawValues) {
|
||||
var missingRawValues = [];
|
||||
var existRawValues = []; // Keep missing value in the cache
|
||||
|
||||
newRawValues.forEach(function (val) {
|
||||
if (getEntityByValue(val)) {
|
||||
existRawValues.push(val);
|
||||
} else {
|
||||
missingRawValues.push(val);
|
||||
}
|
||||
});
|
||||
return {
|
||||
missingRawValues: missingRawValues,
|
||||
existRawValues: existRawValues
|
||||
};
|
||||
};
|
||||
|
||||
var _React$useMemo2 = React.useMemo(function () {
|
||||
var valueHalfCheckedKeys = [];
|
||||
var newRawValues = [];
|
||||
toArray(mergedValue).forEach(function (item) {
|
||||
if (item && _typeof(item) === 'object' && 'value' in item) {
|
||||
if (item.halfChecked && treeCheckStrictly) {
|
||||
var entity = getEntityByValue(item.value);
|
||||
valueHalfCheckedKeys.push(entity ? entity.key : item.value);
|
||||
} else {
|
||||
newRawValues.push(item.value);
|
||||
}
|
||||
} else {
|
||||
newRawValues.push(item);
|
||||
}
|
||||
}); // We need do conduction of values
|
||||
|
||||
if (treeConduction) {
|
||||
var _splitRawValues = splitRawValues(newRawValues),
|
||||
missingRawValues = _splitRawValues.missingRawValues,
|
||||
existRawValues = _splitRawValues.existRawValues;
|
||||
|
||||
var keyList = existRawValues.map(function (val) {
|
||||
return getEntityByValue(val).key;
|
||||
});
|
||||
|
||||
var _conductCheck = conductCheck(keyList, true, conductKeyEntities),
|
||||
checkedKeys = _conductCheck.checkedKeys,
|
||||
halfCheckedKeys = _conductCheck.halfCheckedKeys;
|
||||
|
||||
return [[].concat(_toConsumableArray(missingRawValues), _toConsumableArray(checkedKeys.map(function (key) {
|
||||
return getEntityByKey(key).data.value;
|
||||
}))), halfCheckedKeys];
|
||||
}
|
||||
|
||||
return [newRawValues, valueHalfCheckedKeys];
|
||||
}, [mergedValue, mergedMultiple, mergedLabelInValue, treeCheckable, treeCheckStrictly]),
|
||||
_React$useMemo3 = _slicedToArray(_React$useMemo2, 2),
|
||||
rawValues = _React$useMemo3[0],
|
||||
rawHalfCheckedKeys = _React$useMemo3[1];
|
||||
|
||||
var selectValues = useSelectValues(rawValues, {
|
||||
treeConduction: treeConduction,
|
||||
value: mergedValue,
|
||||
showCheckedStrategy: showCheckedStrategy,
|
||||
conductKeyEntities: conductKeyEntities,
|
||||
getEntityByValue: getEntityByValue,
|
||||
getEntityByKey: getEntityByKey,
|
||||
getLabelProp: getTreeNodeLabelProp
|
||||
});
|
||||
|
||||
var triggerChange = function triggerChange(newRawValues, extra, source) {
|
||||
setValue(mergedMultiple ? newRawValues : newRawValues[0]);
|
||||
|
||||
if (onChange) {
|
||||
var eventValues = newRawValues;
|
||||
|
||||
if (treeConduction && showCheckedStrategy !== 'SHOW_ALL') {
|
||||
var keyList = newRawValues.map(function (val) {
|
||||
var entity = getEntityByValue(val);
|
||||
return entity ? entity.key : val;
|
||||
});
|
||||
var formattedKeyList = formatStrategyKeys(keyList, showCheckedStrategy, conductKeyEntities);
|
||||
eventValues = formattedKeyList.map(function (key) {
|
||||
var entity = getEntityByKey(key);
|
||||
return entity ? entity.data.value : key;
|
||||
});
|
||||
}
|
||||
|
||||
var _ref = extra || {
|
||||
triggerValue: undefined,
|
||||
selected: undefined
|
||||
},
|
||||
triggerValue = _ref.triggerValue,
|
||||
selected = _ref.selected;
|
||||
|
||||
var returnValues = mergedLabelInValue ? getRawValueLabeled(eventValues, mergedValue, getEntityByValue, getTreeNodeLabelProp) : eventValues; // We need fill half check back
|
||||
|
||||
if (treeCheckStrictly) {
|
||||
var halfValues = rawHalfCheckedKeys.map(function (key) {
|
||||
var entity = getEntityByKey(key);
|
||||
return entity ? entity.data.value : key;
|
||||
}).filter(function (val) {
|
||||
return !eventValues.includes(val);
|
||||
});
|
||||
returnValues = [].concat(_toConsumableArray(returnValues), _toConsumableArray(getRawValueLabeled(halfValues, mergedValue, getEntityByValue, getTreeNodeLabelProp)));
|
||||
}
|
||||
|
||||
var additionalInfo = {
|
||||
// [Legacy] Always return as array contains label & value
|
||||
preValue: selectValues,
|
||||
triggerValue: triggerValue
|
||||
}; // [Legacy] Fill legacy data if user query.
|
||||
// This is expansive that we only fill when user query
|
||||
// https://github.com/react-component/tree-select/blob/fe33eb7c27830c9ac70cd1fdb1ebbe7bc679c16a/src/Select.jsx
|
||||
|
||||
var showPosition = true;
|
||||
|
||||
if (treeCheckStrictly || source === 'selection' && !selected) {
|
||||
showPosition = false;
|
||||
}
|
||||
|
||||
fillAdditionalInfo(additionalInfo, triggerValue, newRawValues, mergedTreeData, showPosition);
|
||||
|
||||
if (mergedCheckable) {
|
||||
additionalInfo.checked = selected;
|
||||
} else {
|
||||
additionalInfo.selected = selected;
|
||||
}
|
||||
|
||||
onChange(mergedMultiple ? returnValues : returnValues[0], mergedLabelInValue ? null : eventValues.map(function (val) {
|
||||
var entity = getEntityByValue(val);
|
||||
return entity ? getTreeNodeLabelProp(entity.data) : null;
|
||||
}), additionalInfo);
|
||||
}
|
||||
};
|
||||
|
||||
var onInternalSelect = function onInternalSelect(selectValue, option, source) {
|
||||
var eventValue = mergedLabelInValue ? selectValue : selectValue;
|
||||
|
||||
if (!mergedMultiple) {
|
||||
// Single mode always set value
|
||||
triggerChange([selectValue], {
|
||||
selected: true,
|
||||
triggerValue: selectValue
|
||||
}, source);
|
||||
} else {
|
||||
var newRawValues = addValue(rawValues, selectValue); // Add keys if tree conduction
|
||||
|
||||
if (treeConduction) {
|
||||
// Should keep missing values
|
||||
var _splitRawValues2 = splitRawValues(newRawValues),
|
||||
missingRawValues = _splitRawValues2.missingRawValues,
|
||||
existRawValues = _splitRawValues2.existRawValues;
|
||||
|
||||
var keyList = existRawValues.map(function (val) {
|
||||
return getEntityByValue(val).key;
|
||||
});
|
||||
|
||||
var _conductCheck2 = conductCheck(keyList, true, conductKeyEntities),
|
||||
checkedKeys = _conductCheck2.checkedKeys;
|
||||
|
||||
newRawValues = [].concat(_toConsumableArray(missingRawValues), _toConsumableArray(checkedKeys.map(function (key) {
|
||||
return getEntityByKey(key).data.value;
|
||||
})));
|
||||
}
|
||||
|
||||
triggerChange(newRawValues, {
|
||||
selected: true,
|
||||
triggerValue: selectValue
|
||||
}, source);
|
||||
}
|
||||
|
||||
if (onSelect) {
|
||||
onSelect(eventValue, option);
|
||||
}
|
||||
};
|
||||
|
||||
var onInternalDeselect = function onInternalDeselect(selectValue, option, source) {
|
||||
var eventValue = mergedLabelInValue ? selectValue : selectValue;
|
||||
var newRawValues = removeValue(rawValues, selectValue); // Remove keys if tree conduction
|
||||
|
||||
if (treeConduction) {
|
||||
var _splitRawValues3 = splitRawValues(newRawValues),
|
||||
missingRawValues = _splitRawValues3.missingRawValues,
|
||||
existRawValues = _splitRawValues3.existRawValues;
|
||||
|
||||
var keyList = existRawValues.map(function (val) {
|
||||
return getEntityByValue(val).key;
|
||||
});
|
||||
|
||||
var _conductCheck3 = conductCheck(keyList, {
|
||||
checked: false,
|
||||
halfCheckedKeys: rawHalfCheckedKeys
|
||||
}, conductKeyEntities),
|
||||
checkedKeys = _conductCheck3.checkedKeys;
|
||||
|
||||
newRawValues = [].concat(_toConsumableArray(missingRawValues), _toConsumableArray(checkedKeys.map(function (key) {
|
||||
return getEntityByKey(key).data.value;
|
||||
})));
|
||||
}
|
||||
|
||||
triggerChange(newRawValues, {
|
||||
selected: false,
|
||||
triggerValue: selectValue
|
||||
}, source);
|
||||
|
||||
if (onDeselect) {
|
||||
onDeselect(eventValue, option);
|
||||
}
|
||||
};
|
||||
|
||||
var onInternalClear = function onInternalClear() {
|
||||
triggerChange([], null, 'clear');
|
||||
}; // ========================= Open ==========================
|
||||
|
||||
|
||||
var onInternalDropdownVisibleChange = React.useCallback(function (open) {
|
||||
if (onDropdownVisibleChange) {
|
||||
var legacyParam = {};
|
||||
Object.defineProperty(legacyParam, 'documentClickClose', {
|
||||
get: function get() {
|
||||
warning(false, 'Second param of `onDropdownVisibleChange` has been removed.');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
onDropdownVisibleChange(open, legacyParam);
|
||||
}
|
||||
}, [onDropdownVisibleChange]); // ======================== Warning ========================
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
warningProps(props);
|
||||
} // ======================== Render =========================
|
||||
// We pass some props into select props style
|
||||
|
||||
|
||||
var selectProps = {
|
||||
optionLabelProp: null,
|
||||
optionFilterProp: treeNodeFilterProp,
|
||||
dropdownAlign: dropdownPopupAlign,
|
||||
internalProps: {
|
||||
mark: INTERNAL_PROPS_MARK,
|
||||
onClear: onInternalClear,
|
||||
skipTriggerChange: true,
|
||||
skipTriggerSelect: true,
|
||||
onRawSelect: onInternalSelect,
|
||||
onRawDeselect: onInternalDeselect
|
||||
}
|
||||
};
|
||||
|
||||
if ('filterTreeNode' in props) {
|
||||
selectProps.filterOption = filterTreeNode;
|
||||
}
|
||||
|
||||
return React.createElement(SelectContext.Provider, {
|
||||
value: {
|
||||
checkable: mergedCheckable,
|
||||
loadData: loadData,
|
||||
treeLoadedKeys: treeLoadedKeys,
|
||||
onTreeLoad: onTreeLoad,
|
||||
checkedKeys: rawValues,
|
||||
halfCheckedKeys: rawHalfCheckedKeys,
|
||||
treeDefaultExpandAll: treeDefaultExpandAll,
|
||||
treeExpandedKeys: treeExpandedKeys,
|
||||
treeDefaultExpandedKeys: treeDefaultExpandedKeys,
|
||||
onTreeExpand: onTreeExpand,
|
||||
treeIcon: treeIcon,
|
||||
treeMotion: treeMotion,
|
||||
showTreeIcon: showTreeIcon,
|
||||
switcherIcon: switcherIcon,
|
||||
treeLine: treeLine,
|
||||
treeNodeFilterProp: treeNodeFilterProp
|
||||
}
|
||||
}, React.createElement(RefSelect, Object.assign({
|
||||
ref: selectRef,
|
||||
mode: mergedMultiple ? 'multiple' : null
|
||||
}, props, selectProps, {
|
||||
value: selectValues,
|
||||
// We will handle this ourself since we need calculate conduction
|
||||
labelInValue: true,
|
||||
options: mergedTreeData,
|
||||
onChange: null,
|
||||
onSelect: null,
|
||||
onDeselect: null,
|
||||
onDropdownVisibleChange: onInternalDropdownVisibleChange
|
||||
})));
|
||||
}); // Use class component since typescript not support generic
|
||||
// by `forwardRef` with function component yet.
|
||||
|
||||
var TreeSelect = /*#__PURE__*/function (_React$Component) {
|
||||
_inherits(TreeSelect, _React$Component);
|
||||
|
||||
function TreeSelect() {
|
||||
var _this;
|
||||
|
||||
_classCallCheck(this, TreeSelect);
|
||||
|
||||
_this = _possibleConstructorReturn(this, _getPrototypeOf(TreeSelect).apply(this, arguments));
|
||||
_this.selectRef = React.createRef();
|
||||
|
||||
_this.focus = function () {
|
||||
_this.selectRef.current.focus();
|
||||
};
|
||||
|
||||
_this.blur = function () {
|
||||
_this.selectRef.current.blur();
|
||||
};
|
||||
|
||||
return _this;
|
||||
}
|
||||
|
||||
_createClass(TreeSelect, [{
|
||||
key: "render",
|
||||
value: function render() {
|
||||
return React.createElement(RefTreeSelect, Object.assign({
|
||||
ref: this.selectRef
|
||||
}, this.props));
|
||||
}
|
||||
}]);
|
||||
|
||||
return TreeSelect;
|
||||
}(React.Component);
|
||||
|
||||
TreeSelect.TreeNode = TreeNode;
|
||||
TreeSelect.SHOW_ALL = SHOW_ALL;
|
||||
TreeSelect.SHOW_PARENT = SHOW_PARENT;
|
||||
TreeSelect.SHOW_CHILD = SHOW_CHILD;
|
||||
export default TreeSelect;
|
||||
6
web/node_modules/rc-tree-select/es/hooks/useKeyValueMap.d.ts
generated
vendored
Normal file
6
web/node_modules/rc-tree-select/es/hooks/useKeyValueMap.d.ts
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
import { FlattenDataNode } from '../interface';
|
||||
/**
|
||||
* Return cached Key Value map with DataNode.
|
||||
* Only re-calculate when `flattenOptions` changed.
|
||||
*/
|
||||
export default function useKeyValueMap(flattenOptions: FlattenDataNode[]): Map<string | number, FlattenDataNode>[];
|
||||
18
web/node_modules/rc-tree-select/es/hooks/useKeyValueMap.js
generated
vendored
Normal file
18
web/node_modules/rc-tree-select/es/hooks/useKeyValueMap.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
import React from 'react';
|
||||
/**
|
||||
* Return cached Key Value map with DataNode.
|
||||
* Only re-calculate when `flattenOptions` changed.
|
||||
*/
|
||||
|
||||
export default function useKeyValueMap(flattenOptions) {
|
||||
return React.useMemo(function () {
|
||||
var cacheKeyMap = new Map();
|
||||
var cacheValueMap = new Map(); // Cache options by key
|
||||
|
||||
flattenOptions.forEach(function (dataNode) {
|
||||
cacheKeyMap.set(dataNode.key, dataNode);
|
||||
cacheValueMap.set(dataNode.data.value, dataNode);
|
||||
});
|
||||
return [cacheKeyMap, cacheValueMap];
|
||||
}, [flattenOptions]);
|
||||
}
|
||||
4
web/node_modules/rc-tree-select/es/hooks/useKeyValueMapping.d.ts
generated
vendored
Normal file
4
web/node_modules/rc-tree-select/es/hooks/useKeyValueMapping.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
import { FlattenDataNode, Key, RawValueType } from '../interface';
|
||||
export declare type SkipType = null | 'select' | 'checkbox';
|
||||
export declare function isDisabled(dataNode: FlattenDataNode, skipType: SkipType): boolean;
|
||||
export default function useKeyValueMapping(cacheKeyMap: Map<Key, FlattenDataNode>, cacheValueMap: Map<RawValueType, FlattenDataNode>): [(key: Key, skipType?: SkipType) => FlattenDataNode, (value: RawValueType, skipType?: SkipType) => FlattenDataNode];
|
||||
43
web/node_modules/rc-tree-select/es/hooks/useKeyValueMapping.js
generated
vendored
Normal file
43
web/node_modules/rc-tree-select/es/hooks/useKeyValueMapping.js
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
import React from 'react';
|
||||
export function isDisabled(dataNode, skipType) {
|
||||
if (!dataNode) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var _dataNode$data = dataNode.data,
|
||||
disabled = _dataNode$data.disabled,
|
||||
disableCheckbox = _dataNode$data.disableCheckbox;
|
||||
|
||||
switch (skipType) {
|
||||
case 'select':
|
||||
return disabled;
|
||||
|
||||
case 'checkbox':
|
||||
return disabled || disableCheckbox;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
export default function useKeyValueMapping(cacheKeyMap, cacheValueMap) {
|
||||
var getEntityByKey = React.useCallback(function (key) {
|
||||
var skipType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'select';
|
||||
var dataNode = cacheKeyMap.get(key);
|
||||
|
||||
if (isDisabled(dataNode, skipType)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return dataNode;
|
||||
}, [cacheKeyMap]);
|
||||
var getEntityByValue = React.useCallback(function (value) {
|
||||
var skipType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'select';
|
||||
var dataNode = cacheValueMap.get(value);
|
||||
|
||||
if (isDisabled(dataNode, skipType)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return dataNode;
|
||||
}, [cacheValueMap]);
|
||||
return [getEntityByKey, getEntityByValue];
|
||||
}
|
||||
19
web/node_modules/rc-tree-select/es/hooks/useSelectValues.d.ts
generated
vendored
Normal file
19
web/node_modules/rc-tree-select/es/hooks/useSelectValues.d.ts
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
import React from 'react';
|
||||
import { DefaultValueType } from 'rc-select/lib/interface/generator';
|
||||
import { DataEntity } from 'rc-tree/lib/interface';
|
||||
import { RawValueType, FlattenDataNode, Key, LabelValueType, DataNode } from '../interface';
|
||||
import { SkipType } from './useKeyValueMapping';
|
||||
import { CheckedStrategy } from '../utils/strategyUtil';
|
||||
interface Config {
|
||||
treeConduction: boolean;
|
||||
/** Current `value` of TreeSelect */
|
||||
value: DefaultValueType;
|
||||
showCheckedStrategy: CheckedStrategy;
|
||||
conductKeyEntities: Record<Key, DataEntity>;
|
||||
getEntityByKey: (key: Key, skipType?: SkipType) => FlattenDataNode;
|
||||
getEntityByValue: (value: RawValueType, skipType?: SkipType) => FlattenDataNode;
|
||||
getLabelProp: (node: DataNode) => React.ReactNode;
|
||||
}
|
||||
/** Return */
|
||||
export default function useSelectValues(rawValues: RawValueType[], { value, getEntityByValue, getEntityByKey, treeConduction, showCheckedStrategy, conductKeyEntities, getLabelProp, }: Config): LabelValueType[];
|
||||
export {};
|
||||
30
web/node_modules/rc-tree-select/es/hooks/useSelectValues.js
generated
vendored
Normal file
30
web/node_modules/rc-tree-select/es/hooks/useSelectValues.js
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
import React from 'react';
|
||||
import { getRawValueLabeled } from '../utils/valueUtil';
|
||||
import { formatStrategyKeys } from '../utils/strategyUtil';
|
||||
/** Return */
|
||||
|
||||
export default function useSelectValues(rawValues, _ref) {
|
||||
var value = _ref.value,
|
||||
getEntityByValue = _ref.getEntityByValue,
|
||||
getEntityByKey = _ref.getEntityByKey,
|
||||
treeConduction = _ref.treeConduction,
|
||||
showCheckedStrategy = _ref.showCheckedStrategy,
|
||||
conductKeyEntities = _ref.conductKeyEntities,
|
||||
getLabelProp = _ref.getLabelProp;
|
||||
return React.useMemo(function () {
|
||||
var mergedRawValues = rawValues;
|
||||
|
||||
if (treeConduction) {
|
||||
var rawKeys = formatStrategyKeys(rawValues.map(function (val) {
|
||||
var entity = getEntityByValue(val);
|
||||
return entity ? entity.key : val;
|
||||
}), showCheckedStrategy, conductKeyEntities);
|
||||
mergedRawValues = rawKeys.map(function (key) {
|
||||
var entity = getEntityByKey(key);
|
||||
return entity ? entity.data.value : key;
|
||||
});
|
||||
}
|
||||
|
||||
return getRawValueLabeled(mergedRawValues, value, getEntityByValue, getLabelProp);
|
||||
}, [rawValues, value, treeConduction, showCheckedStrategy, getEntityByValue]);
|
||||
}
|
||||
10
web/node_modules/rc-tree-select/es/hooks/useTreeData.d.ts
generated
vendored
Normal file
10
web/node_modules/rc-tree-select/es/hooks/useTreeData.d.ts
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import React from 'react';
|
||||
import { DataNode, InnerDataNode, SimpleModeConfig } from '../interface';
|
||||
/**
|
||||
* Convert `treeData` or `children` into formatted `treeData`.
|
||||
* Will not re-calculate if `treeData` or `children` not change.
|
||||
*/
|
||||
export default function useTreeData(treeData: DataNode[], children: React.ReactNode, { getLabelProp, simpleMode, }: {
|
||||
getLabelProp: (node: DataNode) => React.ReactNode;
|
||||
simpleMode: boolean | SimpleModeConfig;
|
||||
}): InnerDataNode[];
|
||||
116
web/node_modules/rc-tree-select/es/hooks/useTreeData.js
generated
vendored
Normal file
116
web/node_modules/rc-tree-select/es/hooks/useTreeData.js
generated
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
||||
|
||||
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
||||
|
||||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
import React from 'react';
|
||||
import warning from "rc-util/es/warning";
|
||||
import { convertChildrenToData } from '../utils/legacyUtil';
|
||||
var MAX_WARNING_TIMES = 10;
|
||||
|
||||
function parseSimpleTreeData(treeData, _ref) {
|
||||
var id = _ref.id,
|
||||
pId = _ref.pId,
|
||||
rootPId = _ref.rootPId;
|
||||
var keyNodes = {};
|
||||
var rootNodeList = []; // Fill in the map
|
||||
|
||||
var nodeList = treeData.map(function (node) {
|
||||
var clone = _objectSpread({}, node);
|
||||
|
||||
var key = clone[id];
|
||||
keyNodes[key] = clone;
|
||||
clone.key = clone.key || key;
|
||||
return clone;
|
||||
}); // Connect tree
|
||||
|
||||
nodeList.forEach(function (node) {
|
||||
var parentKey = node[pId];
|
||||
var parent = keyNodes[parentKey]; // Fill parent
|
||||
|
||||
if (parent) {
|
||||
parent.children = parent.children || [];
|
||||
parent.children.push(node);
|
||||
} // Fill root tree node
|
||||
|
||||
|
||||
if (parentKey === rootPId || !parent && rootPId === null) {
|
||||
rootNodeList.push(node);
|
||||
}
|
||||
});
|
||||
return rootNodeList;
|
||||
}
|
||||
/**
|
||||
* Format `treeData` with `value` & `key` which is used for calculation
|
||||
*/
|
||||
|
||||
|
||||
function formatTreeData(treeData, getLabelProp) {
|
||||
var warningTimes = 0;
|
||||
var valueSet = new Set();
|
||||
|
||||
function dig(dataNodes) {
|
||||
return (dataNodes || []).map(function (node) {
|
||||
var key = node.key,
|
||||
value = node.value,
|
||||
children = node.children,
|
||||
rest = _objectWithoutProperties(node, ["key", "value", "children"]);
|
||||
|
||||
var mergedValue = 'value' in node ? value : key;
|
||||
|
||||
var dataNode = _objectSpread({}, rest, {
|
||||
key: key !== null && key !== undefined ? key : mergedValue,
|
||||
value: mergedValue,
|
||||
title: getLabelProp(node)
|
||||
}); // Check `key` & `value` and warning user
|
||||
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
if (key !== null && key !== undefined && value !== undefined && String(key) !== String(value) && warningTimes < MAX_WARNING_TIMES) {
|
||||
warningTimes += 1;
|
||||
warning(false, "`key` or `value` with TreeNode must be the same or you can remove one of them. key: ".concat(key, ", value: ").concat(value, "."));
|
||||
}
|
||||
|
||||
warning(!valueSet.has(value), "Same `value` exist in the tree: ".concat(value));
|
||||
valueSet.add(value);
|
||||
}
|
||||
|
||||
if ('children' in node) {
|
||||
dataNode.children = dig(children);
|
||||
}
|
||||
|
||||
return dataNode;
|
||||
});
|
||||
}
|
||||
|
||||
return dig(treeData);
|
||||
}
|
||||
/**
|
||||
* Convert `treeData` or `children` into formatted `treeData`.
|
||||
* Will not re-calculate if `treeData` or `children` not change.
|
||||
*/
|
||||
|
||||
|
||||
export default function useTreeData(treeData, children, _ref2) {
|
||||
var getLabelProp = _ref2.getLabelProp,
|
||||
simpleMode = _ref2.simpleMode;
|
||||
var cacheRef = React.useRef({});
|
||||
|
||||
if (treeData) {
|
||||
cacheRef.current.formatTreeData = cacheRef.current.treeData === treeData ? cacheRef.current.formatTreeData : formatTreeData(simpleMode ? parseSimpleTreeData(treeData, _objectSpread({
|
||||
id: 'id',
|
||||
pId: 'pId',
|
||||
rootPId: null
|
||||
}, simpleMode !== true ? simpleMode : {})) : treeData, getLabelProp);
|
||||
cacheRef.current.treeData = treeData;
|
||||
} else {
|
||||
cacheRef.current.formatTreeData = cacheRef.current.children === children ? cacheRef.current.formatTreeData : formatTreeData(convertChildrenToData(children), getLabelProp);
|
||||
}
|
||||
|
||||
return cacheRef.current.formatTreeData;
|
||||
}
|
||||
5
web/node_modules/rc-tree-select/es/index.d.ts
generated
vendored
Normal file
5
web/node_modules/rc-tree-select/es/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import TreeSelect, { TreeSelectProps } from './TreeSelect';
|
||||
import TreeNode from './TreeNode';
|
||||
import { SHOW_ALL, SHOW_CHILD, SHOW_PARENT } from './utils/strategyUtil';
|
||||
export { TreeNode, SHOW_ALL, SHOW_CHILD, SHOW_PARENT, TreeSelectProps };
|
||||
export default TreeSelect;
|
||||
5
web/node_modules/rc-tree-select/es/index.js
generated
vendored
Normal file
5
web/node_modules/rc-tree-select/es/index.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import TreeSelect from './TreeSelect';
|
||||
import TreeNode from './TreeNode';
|
||||
import { SHOW_ALL, SHOW_CHILD, SHOW_PARENT } from './utils/strategyUtil';
|
||||
export { TreeNode, SHOW_ALL, SHOW_CHILD, SHOW_PARENT };
|
||||
export default TreeSelect;
|
||||
66
web/node_modules/rc-tree-select/es/interface.d.ts
generated
vendored
Normal file
66
web/node_modules/rc-tree-select/es/interface.d.ts
generated
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
import React from 'react';
|
||||
export declare type SelectSource = 'option' | 'selection' | 'input' | 'clear';
|
||||
export declare type Key = string | number;
|
||||
export declare type RawValueType = string | number;
|
||||
export interface LabelValueType {
|
||||
key?: Key;
|
||||
value?: RawValueType;
|
||||
label?: React.ReactNode;
|
||||
/** Only works on `treeCheckStrictly` */
|
||||
halfChecked?: boolean;
|
||||
}
|
||||
export declare type DefaultValueType = RawValueType | RawValueType[] | LabelValueType | LabelValueType[];
|
||||
export interface DataNode {
|
||||
value?: RawValueType;
|
||||
title?: React.ReactNode;
|
||||
label?: React.ReactNode;
|
||||
key?: Key;
|
||||
disabled?: boolean;
|
||||
disableCheckbox?: boolean;
|
||||
checkable?: boolean;
|
||||
children?: DataNode[];
|
||||
/** Customize data info */
|
||||
[prop: string]: any;
|
||||
}
|
||||
export interface InnerDataNode extends DataNode {
|
||||
key: Key;
|
||||
value: RawValueType;
|
||||
label?: React.ReactNode;
|
||||
children?: InnerDataNode[];
|
||||
}
|
||||
export interface LegacyDataNode extends DataNode {
|
||||
props: any;
|
||||
}
|
||||
export interface TreeDataNode extends DataNode {
|
||||
key: Key;
|
||||
children?: TreeDataNode[];
|
||||
}
|
||||
export interface FlattenDataNode {
|
||||
data: DataNode;
|
||||
key: Key;
|
||||
level: number;
|
||||
}
|
||||
export interface SimpleModeConfig {
|
||||
id?: Key;
|
||||
pId?: Key;
|
||||
rootPId?: Key;
|
||||
}
|
||||
/** @deprecated This is only used for legacy compatible. Not works on new code. */
|
||||
export interface LegacyCheckedNode {
|
||||
pos: string;
|
||||
node: React.ReactElement;
|
||||
children?: LegacyCheckedNode[];
|
||||
}
|
||||
export interface ChangeEventExtra {
|
||||
/** @deprecated Please save prev value by control logic instead */
|
||||
preValue: LabelValueType[];
|
||||
triggerValue: RawValueType;
|
||||
/** @deprecated Use `onSelect` or `onDeselect` instead. */
|
||||
selected?: boolean;
|
||||
/** @deprecated Use `onSelect` or `onDeselect` instead. */
|
||||
checked?: boolean;
|
||||
/** @deprecated This prop not work as react node anymore. */
|
||||
triggerNode: React.ReactElement;
|
||||
/** @deprecated This prop not work as react node anymore. */
|
||||
allCheckedNodes: LegacyCheckedNode[];
|
||||
}
|
||||
0
web/node_modules/rc-tree-select/es/interface.js
generated
vendored
Normal file
0
web/node_modules/rc-tree-select/es/interface.js
generated
vendored
Normal file
5
web/node_modules/rc-tree-select/es/utils/legacyUtil.d.ts
generated
vendored
Normal file
5
web/node_modules/rc-tree-select/es/utils/legacyUtil.d.ts
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import React from 'react';
|
||||
import { DataNode, LegacyDataNode, ChangeEventExtra, InnerDataNode, RawValueType } from '../interface';
|
||||
export declare function convertChildrenToData(nodes: React.ReactNode): DataNode[];
|
||||
export declare function fillLegacyProps(dataNode: DataNode): LegacyDataNode;
|
||||
export declare function fillAdditionalInfo(extra: ChangeEventExtra, triggerValue: RawValueType, checkedValues: RawValueType[], treeData: InnerDataNode[], showPosition: boolean): void;
|
||||
138
web/node_modules/rc-tree-select/es/utils/legacyUtil.js
generated
vendored
Normal file
138
web/node_modules/rc-tree-select/es/utils/legacyUtil.js
generated
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
||||
|
||||
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
||||
|
||||
import React from 'react';
|
||||
import toArray from "rc-util/es/Children/toArray";
|
||||
import warning from "rc-util/es/warning";
|
||||
import TreeNode from '../TreeNode';
|
||||
export function convertChildrenToData(nodes) {
|
||||
return toArray(nodes).map(function (node) {
|
||||
if (!React.isValidElement(node) || !node.type) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var key = node.key,
|
||||
_node$props = node.props,
|
||||
children = _node$props.children,
|
||||
value = _node$props.value,
|
||||
restProps = _objectWithoutProperties(_node$props, ["children", "value"]);
|
||||
|
||||
var data = _objectSpread({
|
||||
key: key,
|
||||
value: value
|
||||
}, restProps);
|
||||
|
||||
var childData = convertChildrenToData(children);
|
||||
|
||||
if (childData.length) {
|
||||
data.children = childData;
|
||||
}
|
||||
|
||||
return data;
|
||||
}).filter(function (data) {
|
||||
return data;
|
||||
});
|
||||
}
|
||||
export function fillLegacyProps(dataNode) {
|
||||
// Skip if not dataNode exist
|
||||
if (!dataNode) {
|
||||
return dataNode;
|
||||
}
|
||||
|
||||
var cloneNode = _objectSpread({}, dataNode);
|
||||
|
||||
if (!('props' in cloneNode)) {
|
||||
Object.defineProperty(cloneNode, 'props', {
|
||||
get: function get() {
|
||||
warning(false, 'New `rc-tree-select` not support return node instance as argument anymore. Please consider to remove `props` access.');
|
||||
return cloneNode;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return cloneNode;
|
||||
}
|
||||
export function fillAdditionalInfo(extra, triggerValue, checkedValues, treeData, showPosition) {
|
||||
var triggerNode = null;
|
||||
var nodeList = null;
|
||||
|
||||
function generateMap() {
|
||||
function dig(list) {
|
||||
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0';
|
||||
var parentIncluded = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
||||
return list.map(function (dataNode, index) {
|
||||
var pos = "".concat(level, "-").concat(index);
|
||||
var included = checkedValues.includes(dataNode.value);
|
||||
var children = dig(dataNode.children || [], pos, included);
|
||||
var node = React.createElement(TreeNode, Object.assign({}, dataNode), children.map(function (child) {
|
||||
return child.node;
|
||||
})); // Link with trigger node
|
||||
|
||||
if (triggerValue === dataNode.value) {
|
||||
triggerNode = node;
|
||||
}
|
||||
|
||||
if (included) {
|
||||
var checkedNode = {
|
||||
pos: pos,
|
||||
node: node,
|
||||
children: children
|
||||
};
|
||||
|
||||
if (!parentIncluded) {
|
||||
nodeList.push(checkedNode);
|
||||
}
|
||||
|
||||
return checkedNode;
|
||||
}
|
||||
|
||||
return null;
|
||||
}).filter(function (node) {
|
||||
return node;
|
||||
});
|
||||
}
|
||||
|
||||
if (!nodeList) {
|
||||
nodeList = [];
|
||||
dig(treeData); // Sort to keep the checked node length
|
||||
|
||||
nodeList.sort(function (_ref, _ref2) {
|
||||
var val1 = _ref.node.props.value;
|
||||
var val2 = _ref2.node.props.value;
|
||||
var index1 = checkedValues.indexOf(val1);
|
||||
var index2 = checkedValues.indexOf(val2);
|
||||
return index1 - index2;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Object.defineProperty(extra, 'triggerNode', {
|
||||
get: function get() {
|
||||
warning(false, '`triggerNode` is deprecated. Please consider decoupling data with node.');
|
||||
generateMap();
|
||||
return triggerNode;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(extra, 'allCheckedNodes', {
|
||||
get: function get() {
|
||||
warning(false, '`allCheckedNodes` is deprecated. Please consider decoupling data with node.');
|
||||
generateMap();
|
||||
|
||||
if (showPosition) {
|
||||
return nodeList;
|
||||
}
|
||||
|
||||
return nodeList.map(function (_ref3) {
|
||||
var node = _ref3.node;
|
||||
return node;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
7
web/node_modules/rc-tree-select/es/utils/strategyUtil.d.ts
generated
vendored
Normal file
7
web/node_modules/rc-tree-select/es/utils/strategyUtil.d.ts
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { DataEntity } from 'rc-tree/lib/interface';
|
||||
import { RawValueType, Key } from '../interface';
|
||||
export declare const SHOW_ALL = "SHOW_ALL";
|
||||
export declare const SHOW_PARENT = "SHOW_PARENT";
|
||||
export declare const SHOW_CHILD = "SHOW_CHILD";
|
||||
export declare type CheckedStrategy = typeof SHOW_ALL | typeof SHOW_PARENT | typeof SHOW_CHILD;
|
||||
export declare function formatStrategyKeys(keys: Key[], strategy: CheckedStrategy, keyEntities: Record<Key, DataEntity>): RawValueType[];
|
||||
37
web/node_modules/rc-tree-select/es/utils/strategyUtil.js
generated
vendored
Normal file
37
web/node_modules/rc-tree-select/es/utils/strategyUtil.js
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
import { isCheckDisabled } from './valueUtil';
|
||||
export var SHOW_ALL = 'SHOW_ALL';
|
||||
export var SHOW_PARENT = 'SHOW_PARENT';
|
||||
export var SHOW_CHILD = 'SHOW_CHILD';
|
||||
export function formatStrategyKeys(keys, strategy, keyEntities) {
|
||||
var keySet = new Set(keys);
|
||||
|
||||
if (strategy === SHOW_CHILD) {
|
||||
return keys.filter(function (key) {
|
||||
var entity = keyEntities[key];
|
||||
|
||||
if (entity && entity.children && entity.children.every(function (_ref) {
|
||||
var node = _ref.node;
|
||||
return isCheckDisabled(node) || keySet.has(node.key);
|
||||
})) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
if (strategy === SHOW_PARENT) {
|
||||
return keys.filter(function (key) {
|
||||
var entity = keyEntities[key];
|
||||
var parent = entity ? entity.parent : null;
|
||||
|
||||
if (parent && !isCheckDisabled(parent.node) && keySet.has(parent.node.key)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
return keys;
|
||||
}
|
||||
20
web/node_modules/rc-tree-select/es/utils/valueUtil.d.ts
generated
vendored
Normal file
20
web/node_modules/rc-tree-select/es/utils/valueUtil.d.ts
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
/// <reference types="react" />
|
||||
import { FilterFunc } from 'rc-select/lib/interface/generator';
|
||||
import { FlattenDataNode, RawValueType, DataNode, DefaultValueType, LabelValueType, LegacyDataNode } from '../interface';
|
||||
import { SkipType } from '../hooks/useKeyValueMapping';
|
||||
export declare function toArray<T>(value: T | T[]): T[];
|
||||
export declare function findValueOption(values: RawValueType[], options: FlattenDataNode[]): DataNode[];
|
||||
export declare function isValueDisabled(value: RawValueType, options: FlattenDataNode[]): boolean;
|
||||
export declare function isCheckDisabled(node: DataNode): boolean;
|
||||
/**
|
||||
* Before reuse `rc-tree` logic, we need to add key since TreeSelect use `value` instead of `key`.
|
||||
*/
|
||||
export declare function flattenOptions(options: DataNode[]): FlattenDataNode[];
|
||||
/** Filter options and return a new options by the search text */
|
||||
export declare function filterOptions(searchValue: string, options: DataNode[], { optionFilterProp, filterOption, }: {
|
||||
optionFilterProp: string;
|
||||
filterOption: boolean | FilterFunc<LegacyDataNode>;
|
||||
}): DataNode[];
|
||||
export declare function getRawValueLabeled(values: RawValueType[], prevValue: DefaultValueType, getEntityByValue: (value: RawValueType, skipType?: SkipType) => FlattenDataNode, getLabelProp: (node: DataNode) => React.ReactNode): LabelValueType[];
|
||||
export declare function addValue(rawValues: RawValueType[], value: RawValueType): (string | number)[];
|
||||
export declare function removeValue(rawValues: RawValueType[], value: RawValueType): (string | number)[];
|
||||
171
web/node_modules/rc-tree-select/es/utils/valueUtil.js
generated
vendored
Normal file
171
web/node_modules/rc-tree-select/es/utils/valueUtil.js
generated
vendored
Normal file
@@ -0,0 +1,171 @@
|
||||
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||||
|
||||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
import { flattenTreeData } from "rc-tree/es/utils/treeUtil";
|
||||
import { fillLegacyProps } from './legacyUtil';
|
||||
export function toArray(value) {
|
||||
if (Array.isArray(value)) {
|
||||
return value;
|
||||
}
|
||||
|
||||
return value !== undefined ? [value] : [];
|
||||
}
|
||||
export function findValueOption(values, options) {
|
||||
var optionMap = new Map();
|
||||
options.forEach(function (flattenItem) {
|
||||
var data = flattenItem.data;
|
||||
optionMap.set(data.value, data);
|
||||
});
|
||||
return values.map(function (val) {
|
||||
return fillLegacyProps(optionMap.get(val));
|
||||
});
|
||||
}
|
||||
export function isValueDisabled(value, options) {
|
||||
var option = findValueOption([value], options)[0];
|
||||
|
||||
if (option) {
|
||||
return option.disabled;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
export function isCheckDisabled(node) {
|
||||
return node.disabled || node.disableCheckbox || node.checkable === false;
|
||||
}
|
||||
|
||||
function getLevel(_ref) {
|
||||
var parent = _ref.parent;
|
||||
var level = 0;
|
||||
var current = parent;
|
||||
|
||||
while (current) {
|
||||
current = current.parent;
|
||||
level += 1;
|
||||
}
|
||||
|
||||
return level;
|
||||
}
|
||||
/**
|
||||
* Before reuse `rc-tree` logic, we need to add key since TreeSelect use `value` instead of `key`.
|
||||
*/
|
||||
|
||||
|
||||
export function flattenOptions(options) {
|
||||
// Add missing key
|
||||
function fillKey(list) {
|
||||
return (list || []).map(function (node) {
|
||||
var value = node.value,
|
||||
key = node.key,
|
||||
children = node.children;
|
||||
|
||||
var clone = _objectSpread({}, node, {
|
||||
key: 'key' in node ? key : value
|
||||
});
|
||||
|
||||
if (children) {
|
||||
clone.children = fillKey(children);
|
||||
}
|
||||
|
||||
return clone;
|
||||
});
|
||||
}
|
||||
|
||||
var flattenList = flattenTreeData(fillKey(options), true);
|
||||
return flattenList.map(function (node) {
|
||||
return {
|
||||
key: node.data.key,
|
||||
data: node.data,
|
||||
level: getLevel(node)
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function getDefaultFilterOption(optionFilterProp) {
|
||||
return function (searchValue, dataNode) {
|
||||
var value = dataNode[optionFilterProp];
|
||||
return String(value).toLowerCase().includes(String(searchValue).toLowerCase());
|
||||
};
|
||||
}
|
||||
/** Filter options and return a new options by the search text */
|
||||
|
||||
|
||||
export function filterOptions(searchValue, options, _ref2) {
|
||||
var optionFilterProp = _ref2.optionFilterProp,
|
||||
filterOption = _ref2.filterOption;
|
||||
|
||||
if (filterOption === false) {
|
||||
return options;
|
||||
}
|
||||
|
||||
var filterOptionFunc;
|
||||
|
||||
if (typeof filterOption === 'function') {
|
||||
filterOptionFunc = filterOption;
|
||||
} else {
|
||||
filterOptionFunc = getDefaultFilterOption(optionFilterProp);
|
||||
}
|
||||
|
||||
function dig(list) {
|
||||
var keepAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
||||
return list.map(function (dataNode) {
|
||||
var children = dataNode.children;
|
||||
var match = keepAll || filterOptionFunc(searchValue, fillLegacyProps(dataNode));
|
||||
var childList = dig(children || [], match);
|
||||
|
||||
if (match || childList.length) {
|
||||
return _objectSpread({}, dataNode, {
|
||||
children: childList
|
||||
});
|
||||
}
|
||||
|
||||
return null;
|
||||
}).filter(function (node) {
|
||||
return node;
|
||||
});
|
||||
}
|
||||
|
||||
return dig(options);
|
||||
}
|
||||
export function getRawValueLabeled(values, prevValue, getEntityByValue, getLabelProp) {
|
||||
var valueMap = new Map();
|
||||
toArray(prevValue).forEach(function (item) {
|
||||
if (item && _typeof(item) === 'object' && 'value' in item) {
|
||||
valueMap.set(item.value, item);
|
||||
}
|
||||
});
|
||||
return values.map(function (val) {
|
||||
var item = {
|
||||
value: val
|
||||
};
|
||||
var entity = getEntityByValue(val);
|
||||
var label = entity ? getLabelProp(entity.data) : val;
|
||||
|
||||
if (valueMap.has(val)) {
|
||||
var labeledValue = valueMap.get(val);
|
||||
item.label = 'label' in labeledValue ? labeledValue.label : label;
|
||||
|
||||
if ('halfChecked' in labeledValue) {
|
||||
item.halfChecked = labeledValue.halfChecked;
|
||||
}
|
||||
} else {
|
||||
item.label = label;
|
||||
}
|
||||
|
||||
return item;
|
||||
});
|
||||
}
|
||||
export function addValue(rawValues, value) {
|
||||
var values = new Set(rawValues);
|
||||
values.add(value);
|
||||
return Array.from(values);
|
||||
}
|
||||
export function removeValue(rawValues, value) {
|
||||
var values = new Set(rawValues);
|
||||
values.delete(value);
|
||||
return Array.from(values);
|
||||
}
|
||||
3
web/node_modules/rc-tree-select/es/utils/warningPropsUtil.d.ts
generated
vendored
Normal file
3
web/node_modules/rc-tree-select/es/utils/warningPropsUtil.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import { TreeSelectProps } from '../TreeSelect';
|
||||
declare function warningProps(props: TreeSelectProps): void;
|
||||
export default warningProps;
|
||||
32
web/node_modules/rc-tree-select/es/utils/warningPropsUtil.js
generated
vendored
Normal file
32
web/node_modules/rc-tree-select/es/utils/warningPropsUtil.js
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||||
|
||||
import warning from "rc-util/es/warning";
|
||||
import { toArray } from './valueUtil';
|
||||
|
||||
function warningProps(props) {
|
||||
var searchPlaceholder = props.searchPlaceholder,
|
||||
treeCheckStrictly = props.treeCheckStrictly,
|
||||
treeCheckable = props.treeCheckable,
|
||||
labelInValue = props.labelInValue,
|
||||
value = props.value,
|
||||
multiple = props.multiple;
|
||||
warning(!searchPlaceholder, '`searchPlaceholder` has been removed.');
|
||||
|
||||
if (treeCheckStrictly && labelInValue === false) {
|
||||
warning(false, '`treeCheckStrictly` will force set `labelInValue` to `true`.');
|
||||
}
|
||||
|
||||
if (labelInValue || treeCheckStrictly) {
|
||||
warning(toArray(value).every(function (val) {
|
||||
return val && _typeof(val) === 'object' && 'value' in val;
|
||||
}), 'Invalid prop `value` supplied to `TreeSelect`. You should use { label: string, value: string | number } or [{ label: string, value: string | number }] instead.');
|
||||
}
|
||||
|
||||
if (treeCheckStrictly || multiple || treeCheckable) {
|
||||
warning(!value || Array.isArray(value), '`value` should be an array when `TreeSelect` is checkable or multiple.');
|
||||
} else {
|
||||
warning(!Array.isArray(value), '`value` should not be array when `TreeSelect` is single mode.');
|
||||
}
|
||||
}
|
||||
|
||||
export default warningProps;
|
||||
23
web/node_modules/rc-tree-select/lib/Context.d.ts
generated
vendored
Normal file
23
web/node_modules/rc-tree-select/lib/Context.d.ts
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
import React from 'react';
|
||||
import { IconType } from 'rc-tree/lib/interface';
|
||||
import { Key, LegacyDataNode } from './interface';
|
||||
interface ContextProps {
|
||||
checkable: boolean | React.ReactNode;
|
||||
checkedKeys: Key[];
|
||||
halfCheckedKeys: Key[];
|
||||
treeExpandedKeys: Key[];
|
||||
treeDefaultExpandedKeys: Key[];
|
||||
onTreeExpand: (keys: Key[]) => void;
|
||||
treeDefaultExpandAll: boolean;
|
||||
treeIcon: IconType;
|
||||
showTreeIcon: boolean;
|
||||
switcherIcon: IconType;
|
||||
treeLine: boolean;
|
||||
treeNodeFilterProp: string;
|
||||
treeLoadedKeys: Key[];
|
||||
treeMotion: any;
|
||||
loadData: (treeNode: LegacyDataNode) => Promise<unknown>;
|
||||
onTreeLoad: (loadedKeys: Key[]) => void;
|
||||
}
|
||||
export declare const SelectContext: React.Context<ContextProps>;
|
||||
export {};
|
||||
14
web/node_modules/rc-tree-select/lib/Context.js
generated
vendored
Normal file
14
web/node_modules/rc-tree-select/lib/Context.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.SelectContext = void 0;
|
||||
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var SelectContext = _react.default.createContext(null);
|
||||
|
||||
exports.SelectContext = SelectContext;
|
||||
29
web/node_modules/rc-tree-select/lib/OptionList.d.ts
generated
vendored
Normal file
29
web/node_modules/rc-tree-select/lib/OptionList.d.ts
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
import React from 'react';
|
||||
import { RefOptionListProps } from 'rc-select/lib/OptionList';
|
||||
import { FlattenDataNode, RawValueType, DataNode } from './interface';
|
||||
export interface OptionListProps<OptionsType extends object[]> {
|
||||
prefixCls: string;
|
||||
id: string;
|
||||
options: OptionsType;
|
||||
flattenOptions: FlattenDataNode[];
|
||||
height: number;
|
||||
itemHeight: number;
|
||||
virtual?: boolean;
|
||||
values: Set<RawValueType>;
|
||||
multiple: boolean;
|
||||
open: boolean;
|
||||
defaultActiveFirstOption?: boolean;
|
||||
notFoundContent?: React.ReactNode;
|
||||
menuItemSelectedIcon?: any;
|
||||
childrenAsData: boolean;
|
||||
searchValue: string;
|
||||
onSelect: (value: RawValueType, option: {
|
||||
selected: boolean;
|
||||
}) => void;
|
||||
onToggleOpen: (open?: boolean) => void;
|
||||
/** Tell Select that some value is now active to make accessibility work */
|
||||
onActiveValue: (value: RawValueType, index: number) => void;
|
||||
onScroll: React.UIEventHandler<HTMLDivElement>;
|
||||
}
|
||||
declare const RefOptionList: React.ForwardRefExoticComponent<OptionListProps<DataNode[]> & React.RefAttributes<RefOptionListProps>>;
|
||||
export default RefOptionList;
|
||||
309
web/node_modules/rc-tree-select/lib/OptionList.js
generated
vendored
Normal file
309
web/node_modules/rc-tree-select/lib/OptionList.js
generated
vendored
Normal file
@@ -0,0 +1,309 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
|
||||
var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode"));
|
||||
|
||||
var _useMemo = _interopRequireDefault(require("rc-util/lib/hooks/useMemo"));
|
||||
|
||||
var _rcTree = _interopRequireDefault(require("rc-tree"));
|
||||
|
||||
var _Context = require("./Context");
|
||||
|
||||
var _useKeyValueMapping3 = _interopRequireDefault(require("./hooks/useKeyValueMapping"));
|
||||
|
||||
var _useKeyValueMap3 = _interopRequireDefault(require("./hooks/useKeyValueMap"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
|
||||
|
||||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
|
||||
|
||||
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
|
||||
|
||||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
|
||||
|
||||
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
||||
|
||||
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
||||
|
||||
function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
||||
|
||||
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
||||
|
||||
var HIDDEN_STYLE = {
|
||||
width: 0,
|
||||
height: 0,
|
||||
display: 'flex',
|
||||
overflow: 'hidden',
|
||||
opacity: 0,
|
||||
border: 0,
|
||||
padding: 0,
|
||||
margin: 0
|
||||
};
|
||||
|
||||
var OptionList = function OptionList(props, ref) {
|
||||
var prefixCls = props.prefixCls,
|
||||
height = props.height,
|
||||
itemHeight = props.itemHeight,
|
||||
virtual = props.virtual,
|
||||
options = props.options,
|
||||
flattenOptions = props.flattenOptions,
|
||||
multiple = props.multiple,
|
||||
searchValue = props.searchValue,
|
||||
onSelect = props.onSelect,
|
||||
onToggleOpen = props.onToggleOpen,
|
||||
open = props.open,
|
||||
notFoundContent = props.notFoundContent;
|
||||
|
||||
var _React$useContext = _react.default.useContext(_Context.SelectContext),
|
||||
checkable = _React$useContext.checkable,
|
||||
checkedKeys = _React$useContext.checkedKeys,
|
||||
halfCheckedKeys = _React$useContext.halfCheckedKeys,
|
||||
treeExpandedKeys = _React$useContext.treeExpandedKeys,
|
||||
treeDefaultExpandAll = _React$useContext.treeDefaultExpandAll,
|
||||
treeDefaultExpandedKeys = _React$useContext.treeDefaultExpandedKeys,
|
||||
onTreeExpand = _React$useContext.onTreeExpand,
|
||||
treeIcon = _React$useContext.treeIcon,
|
||||
showTreeIcon = _React$useContext.showTreeIcon,
|
||||
switcherIcon = _React$useContext.switcherIcon,
|
||||
treeLine = _React$useContext.treeLine,
|
||||
treeNodeFilterProp = _React$useContext.treeNodeFilterProp,
|
||||
loadData = _React$useContext.loadData,
|
||||
treeLoadedKeys = _React$useContext.treeLoadedKeys,
|
||||
treeMotion = _React$useContext.treeMotion,
|
||||
onTreeLoad = _React$useContext.onTreeLoad;
|
||||
|
||||
var treeRef = _react.default.useRef();
|
||||
|
||||
var memoOptions = (0, _useMemo.default)(function () {
|
||||
return options;
|
||||
}, [open, options], function (prev, next) {
|
||||
return next[0] && prev[1] !== next[1];
|
||||
});
|
||||
|
||||
var _useKeyValueMap = (0, _useKeyValueMap3.default)(flattenOptions),
|
||||
_useKeyValueMap2 = _slicedToArray(_useKeyValueMap, 2),
|
||||
cacheKeyMap = _useKeyValueMap2[0],
|
||||
cacheValueMap = _useKeyValueMap2[1];
|
||||
|
||||
var _useKeyValueMapping = (0, _useKeyValueMapping3.default)(cacheKeyMap, cacheValueMap),
|
||||
_useKeyValueMapping2 = _slicedToArray(_useKeyValueMapping, 2),
|
||||
getEntityByKey = _useKeyValueMapping2[0],
|
||||
getEntityByValue = _useKeyValueMapping2[1]; // ========================== Values ==========================
|
||||
|
||||
|
||||
var valueKeys = _react.default.useMemo(function () {
|
||||
return checkedKeys.map(function (val) {
|
||||
var entity = getEntityByValue(val);
|
||||
return entity ? entity.key : null;
|
||||
});
|
||||
}, [checkedKeys]);
|
||||
|
||||
var mergedCheckedKeys = _react.default.useMemo(function () {
|
||||
if (!checkable) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
checked: valueKeys,
|
||||
halfChecked: halfCheckedKeys
|
||||
};
|
||||
}, [valueKeys, halfCheckedKeys, checkable]); // ========================== Scroll ==========================
|
||||
|
||||
|
||||
_react.default.useEffect(function () {
|
||||
// Single mode should scroll to current key
|
||||
if (open && !multiple && valueKeys.length) {
|
||||
var _treeRef$current;
|
||||
|
||||
(_treeRef$current = treeRef.current) === null || _treeRef$current === void 0 ? void 0 : _treeRef$current.scrollTo({
|
||||
key: valueKeys[0]
|
||||
});
|
||||
}
|
||||
}, [open]); // ========================== Search ==========================
|
||||
|
||||
|
||||
var lowerSearchValue = String(searchValue).toLowerCase();
|
||||
|
||||
var filterTreeNode = function filterTreeNode(treeNode) {
|
||||
if (!lowerSearchValue) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return String(treeNode[treeNodeFilterProp]).toLowerCase().includes(lowerSearchValue);
|
||||
}; // =========================== Keys ===========================
|
||||
|
||||
|
||||
var _React$useState = _react.default.useState(treeDefaultExpandedKeys),
|
||||
_React$useState2 = _slicedToArray(_React$useState, 2),
|
||||
expandedKeys = _React$useState2[0],
|
||||
setExpandedKeys = _React$useState2[1];
|
||||
|
||||
var _React$useState3 = _react.default.useState(null),
|
||||
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
||||
searchExpandedKeys = _React$useState4[0],
|
||||
setSearchExpandedKeys = _React$useState4[1];
|
||||
|
||||
var mergedExpandedKeys = _react.default.useMemo(function () {
|
||||
if (treeExpandedKeys) {
|
||||
return _toConsumableArray(treeExpandedKeys);
|
||||
}
|
||||
|
||||
return searchValue ? searchExpandedKeys : expandedKeys;
|
||||
}, [expandedKeys, searchExpandedKeys, lowerSearchValue, treeExpandedKeys]);
|
||||
|
||||
_react.default.useEffect(function () {
|
||||
if (searchValue) {
|
||||
setSearchExpandedKeys(flattenOptions.map(function (o) {
|
||||
return o.key;
|
||||
}));
|
||||
}
|
||||
}, [searchValue]);
|
||||
|
||||
var onInternalExpand = function onInternalExpand(keys) {
|
||||
setExpandedKeys(keys);
|
||||
setSearchExpandedKeys(keys);
|
||||
|
||||
if (onTreeExpand) {
|
||||
onTreeExpand(keys);
|
||||
}
|
||||
}; // ========================== Events ==========================
|
||||
|
||||
|
||||
var onListMouseDown = function onListMouseDown(event) {
|
||||
event.preventDefault();
|
||||
};
|
||||
|
||||
var onInternalSelect = function onInternalSelect(_, _ref) {
|
||||
var key = _ref.node.key;
|
||||
var entity = getEntityByKey(key, checkable ? 'checkbox' : 'select');
|
||||
|
||||
if (entity !== null) {
|
||||
onSelect(entity.data.value, {
|
||||
selected: !checkedKeys.includes(entity.data.value)
|
||||
});
|
||||
}
|
||||
|
||||
if (!multiple) {
|
||||
onToggleOpen(false);
|
||||
}
|
||||
}; // ========================= Keyboard =========================
|
||||
|
||||
|
||||
var _React$useState5 = _react.default.useState(null),
|
||||
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
||||
activeKey = _React$useState6[0],
|
||||
setActiveKey = _React$useState6[1];
|
||||
|
||||
var activeEntity = getEntityByKey(activeKey);
|
||||
|
||||
_react.default.useImperativeHandle(ref, function () {
|
||||
return {
|
||||
onKeyDown: function onKeyDown(event) {
|
||||
var _treeRef$current2;
|
||||
|
||||
var which = event.which;
|
||||
|
||||
switch (which) {
|
||||
// >>> Arrow keys
|
||||
case _KeyCode.default.UP:
|
||||
case _KeyCode.default.DOWN:
|
||||
case _KeyCode.default.LEFT:
|
||||
case _KeyCode.default.RIGHT:
|
||||
(_treeRef$current2 = treeRef.current) === null || _treeRef$current2 === void 0 ? void 0 : _treeRef$current2.onKeyDown(event);
|
||||
break;
|
||||
// >>> Select item
|
||||
|
||||
case _KeyCode.default.ENTER:
|
||||
{
|
||||
if (activeEntity !== null) {
|
||||
onInternalSelect(null, {
|
||||
node: {
|
||||
key: activeKey
|
||||
},
|
||||
selected: !checkedKeys.includes(activeEntity.data.value)
|
||||
});
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
// >>> Close
|
||||
|
||||
case _KeyCode.default.ESC:
|
||||
{
|
||||
onToggleOpen(false);
|
||||
}
|
||||
}
|
||||
},
|
||||
onKeyUp: function onKeyUp() {}
|
||||
};
|
||||
}); // ========================== Render ==========================
|
||||
|
||||
|
||||
if (memoOptions.length === 0) {
|
||||
return _react.default.createElement("div", {
|
||||
role: "listbox",
|
||||
className: "".concat(prefixCls, "-empty"),
|
||||
onMouseDown: onListMouseDown
|
||||
}, notFoundContent);
|
||||
}
|
||||
|
||||
var treeProps = {};
|
||||
|
||||
if (treeLoadedKeys) {
|
||||
treeProps.loadedKeys = treeLoadedKeys;
|
||||
}
|
||||
|
||||
if (mergedExpandedKeys) {
|
||||
treeProps.expandedKeys = mergedExpandedKeys;
|
||||
}
|
||||
|
||||
return _react.default.createElement("div", {
|
||||
onMouseDown: onListMouseDown
|
||||
}, activeEntity && open && _react.default.createElement("span", {
|
||||
style: HIDDEN_STYLE,
|
||||
"aria-live": "assertive"
|
||||
}, activeEntity.data.value), _react.default.createElement(_rcTree.default, Object.assign({
|
||||
ref: treeRef,
|
||||
focusable: false,
|
||||
prefixCls: "".concat(prefixCls, "-tree"),
|
||||
treeData: memoOptions,
|
||||
height: height,
|
||||
itemHeight: itemHeight,
|
||||
virtual: virtual,
|
||||
multiple: multiple,
|
||||
icon: treeIcon,
|
||||
showIcon: showTreeIcon,
|
||||
switcherIcon: switcherIcon,
|
||||
showLine: treeLine,
|
||||
loadData: searchValue ? null : loadData,
|
||||
motion: treeMotion,
|
||||
// We handle keys by out instead tree self
|
||||
checkable: checkable,
|
||||
checkStrictly: true,
|
||||
checkedKeys: mergedCheckedKeys,
|
||||
selectedKeys: !checkable ? valueKeys : [],
|
||||
defaultExpandAll: treeDefaultExpandAll
|
||||
}, treeProps, {
|
||||
// Proxy event out
|
||||
onActiveChange: setActiveKey,
|
||||
onSelect: onInternalSelect,
|
||||
onCheck: onInternalSelect,
|
||||
onExpand: onInternalExpand,
|
||||
onLoad: onTreeLoad,
|
||||
filterTreeNode: filterTreeNode
|
||||
})));
|
||||
};
|
||||
|
||||
var RefOptionList = _react.default.forwardRef(OptionList);
|
||||
|
||||
RefOptionList.displayName = 'OptionList';
|
||||
var _default = RefOptionList;
|
||||
exports.default = _default;
|
||||
9
web/node_modules/rc-tree-select/lib/TreeNode.d.ts
generated
vendored
Normal file
9
web/node_modules/rc-tree-select/lib/TreeNode.d.ts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import React from 'react';
|
||||
import { DataNode, Key } from './interface';
|
||||
export interface TreeNodeProps extends Omit<DataNode, 'children'> {
|
||||
value: Key;
|
||||
children?: React.ReactNode;
|
||||
}
|
||||
/** This is a placeholder, not real render in dom */
|
||||
declare const TreeNode: React.FC<TreeNodeProps>;
|
||||
export default TreeNode;
|
||||
14
web/node_modules/rc-tree-select/lib/TreeNode.js
generated
vendored
Normal file
14
web/node_modules/rc-tree-select/lib/TreeNode.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
|
||||
/** This is a placeholder, not real render in dom */
|
||||
var TreeNode = function TreeNode() {
|
||||
return null;
|
||||
};
|
||||
|
||||
var _default = TreeNode;
|
||||
exports.default = _default;
|
||||
61
web/node_modules/rc-tree-select/lib/TreeSelect.d.ts
generated
vendored
Normal file
61
web/node_modules/rc-tree-select/lib/TreeSelect.d.ts
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
import React from 'react';
|
||||
import { SelectProps, RefSelectProps } from 'rc-select/lib/generate';
|
||||
import { IconType } from 'rc-tree/lib/interface';
|
||||
import { FilterFunc } from 'rc-select/lib/interface/generator';
|
||||
import { Key, DefaultValueType, DataNode, LabelValueType, SimpleModeConfig, ChangeEventExtra, LegacyDataNode } from './interface';
|
||||
import { CheckedStrategy, SHOW_ALL, SHOW_PARENT, SHOW_CHILD } from './utils/strategyUtil';
|
||||
export interface TreeSelectProps<ValueType = DefaultValueType> extends Omit<SelectProps<DataNode[], ValueType>, 'onChange' | 'mode' | 'menuItemSelectedIcon' | 'dropdownRender' | 'dropdownAlign' | 'backfill' | 'getInputElement' | 'optionLabelProp' | 'tokenSeparators' | 'filterOption'> {
|
||||
multiple?: boolean;
|
||||
showArrow?: boolean;
|
||||
showSearch?: boolean;
|
||||
open?: boolean;
|
||||
defaultOpen?: boolean;
|
||||
value?: ValueType;
|
||||
defaultValue?: ValueType;
|
||||
disabled?: boolean;
|
||||
placeholder?: React.ReactNode;
|
||||
/** @deprecated Use `searchValue` instead */
|
||||
inputValue?: string;
|
||||
searchValue?: string;
|
||||
autoClearSearchValue?: boolean;
|
||||
maxTagTextLength?: number;
|
||||
maxTagCount?: number;
|
||||
maxTagPlaceholder?: (omittedValues: LabelValueType[]) => React.ReactNode;
|
||||
loadData?: (dataNode: LegacyDataNode) => Promise<unknown>;
|
||||
treeNodeFilterProp?: string;
|
||||
treeNodeLabelProp?: string;
|
||||
treeDataSimpleMode?: boolean | SimpleModeConfig;
|
||||
treeExpandedKeys?: Key[];
|
||||
treeDefaultExpandedKeys?: Key[];
|
||||
treeLoadedKeys?: Key[];
|
||||
treeCheckable?: boolean | React.ReactNode;
|
||||
treeCheckStrictly?: boolean;
|
||||
showCheckedStrategy?: CheckedStrategy;
|
||||
treeDefaultExpandAll?: boolean;
|
||||
treeData?: DataNode[];
|
||||
treeLine?: boolean;
|
||||
treeIcon?: IconType;
|
||||
showTreeIcon?: boolean;
|
||||
switcherIcon?: IconType;
|
||||
treeMotion?: any;
|
||||
children?: React.ReactNode;
|
||||
filterTreeNode?: boolean | FilterFunc<LegacyDataNode>;
|
||||
dropdownPopupAlign?: any;
|
||||
onSearch?: (value: string) => void;
|
||||
onChange?: (value: ValueType, labelList: React.ReactNode[], extra: ChangeEventExtra) => void;
|
||||
onTreeExpand?: (expandedKeys: Key[]) => void;
|
||||
onTreeLoad?: (loadedKeys: Key[]) => void;
|
||||
/** `searchPlaceholder` has been removed since search box has been merged into input box */
|
||||
searchPlaceholder?: React.ReactNode;
|
||||
}
|
||||
declare class TreeSelect<ValueType = DefaultValueType> extends React.Component<TreeSelectProps<ValueType>, {}> {
|
||||
static TreeNode: React.FC<import("./TreeNode").TreeNodeProps>;
|
||||
static SHOW_ALL: typeof SHOW_ALL;
|
||||
static SHOW_PARENT: typeof SHOW_PARENT;
|
||||
static SHOW_CHILD: typeof SHOW_CHILD;
|
||||
selectRef: React.RefObject<RefSelectProps>;
|
||||
focus: () => void;
|
||||
blur: () => void;
|
||||
render(): JSX.Element;
|
||||
}
|
||||
export default TreeSelect;
|
||||
539
web/node_modules/rc-tree-select/lib/TreeSelect.js
generated
vendored
Normal file
539
web/node_modules/rc-tree-select/lib/TreeSelect.js
generated
vendored
Normal file
@@ -0,0 +1,539 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
|
||||
var _generate = _interopRequireDefault(require("rc-select/lib/generate"));
|
||||
|
||||
var _valueUtil = require("rc-select/lib/utils/valueUtil");
|
||||
|
||||
var _treeUtil = require("rc-tree/lib/utils/treeUtil");
|
||||
|
||||
var _conductUtil = require("rc-tree/lib/utils/conductUtil");
|
||||
|
||||
var _generator = require("rc-select/lib/interface/generator");
|
||||
|
||||
var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
|
||||
|
||||
var _OptionList = _interopRequireDefault(require("./OptionList"));
|
||||
|
||||
var _TreeNode = _interopRequireDefault(require("./TreeNode"));
|
||||
|
||||
var _valueUtil2 = require("./utils/valueUtil");
|
||||
|
||||
var _warningPropsUtil = _interopRequireDefault(require("./utils/warningPropsUtil"));
|
||||
|
||||
var _Context = require("./Context");
|
||||
|
||||
var _useTreeData = _interopRequireDefault(require("./hooks/useTreeData"));
|
||||
|
||||
var _useKeyValueMap3 = _interopRequireDefault(require("./hooks/useKeyValueMap"));
|
||||
|
||||
var _useKeyValueMapping3 = _interopRequireDefault(require("./hooks/useKeyValueMapping"));
|
||||
|
||||
var _strategyUtil = require("./utils/strategyUtil");
|
||||
|
||||
var _legacyUtil = require("./utils/legacyUtil");
|
||||
|
||||
var _useSelectValues = _interopRequireDefault(require("./hooks/useSelectValues"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
||||
|
||||
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
||||
|
||||
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
||||
|
||||
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
||||
|
||||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
|
||||
|
||||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
|
||||
|
||||
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
|
||||
|
||||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
|
||||
|
||||
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||||
|
||||
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
||||
|
||||
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
||||
|
||||
function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
||||
|
||||
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
||||
|
||||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
var OMIT_PROPS = ['expandedKeys', 'treeData', 'treeCheckable', 'showCheckedStrategy', 'searchPlaceholder', 'treeLine', 'treeIcon', 'showTreeIcon', 'switcherIcon', 'treeNodeFilterProp', 'filterTreeNode', 'dropdownPopupAlign', 'treeDefaultExpandAll', 'treeCheckStrictly', 'treeExpandedKeys', 'treeLoadedKeys', 'treeMotion', 'onTreeExpand', 'onTreeLoad', 'loadData', 'treeDataSimpleMode', 'treeNodeLabelProp', 'treeDefaultExpandedKeys'];
|
||||
var RefSelect = (0, _generate.default)({
|
||||
prefixCls: 'rc-tree-select',
|
||||
components: {
|
||||
optionList: _OptionList.default
|
||||
},
|
||||
// Not use generate since we will handle ourself
|
||||
convertChildrenToData: function convertChildrenToData() {
|
||||
return null;
|
||||
},
|
||||
flattenOptions: _valueUtil2.flattenOptions,
|
||||
// Handle `optionLabelProp` in TreeSelect component
|
||||
getLabeledValue: _valueUtil.getLabeledValue,
|
||||
filterOptions: _valueUtil2.filterOptions,
|
||||
isValueDisabled: _valueUtil2.isValueDisabled,
|
||||
findValueOption: _valueUtil2.findValueOption,
|
||||
omitDOMProps: function omitDOMProps(props) {
|
||||
var cloneProps = _objectSpread({}, props);
|
||||
|
||||
OMIT_PROPS.forEach(function (prop) {
|
||||
delete cloneProps[prop];
|
||||
});
|
||||
return cloneProps;
|
||||
}
|
||||
});
|
||||
RefSelect.displayName = 'Select';
|
||||
|
||||
var RefTreeSelect = _react.default.forwardRef(function (props, ref) {
|
||||
var multiple = props.multiple,
|
||||
treeCheckable = props.treeCheckable,
|
||||
treeCheckStrictly = props.treeCheckStrictly,
|
||||
_props$showCheckedStr = props.showCheckedStrategy,
|
||||
showCheckedStrategy = _props$showCheckedStr === void 0 ? 'SHOW_CHILD' : _props$showCheckedStr,
|
||||
labelInValue = props.labelInValue,
|
||||
loadData = props.loadData,
|
||||
treeLoadedKeys = props.treeLoadedKeys,
|
||||
_props$treeNodeFilter = props.treeNodeFilterProp,
|
||||
treeNodeFilterProp = _props$treeNodeFilter === void 0 ? 'value' : _props$treeNodeFilter,
|
||||
treeNodeLabelProp = props.treeNodeLabelProp,
|
||||
treeDataSimpleMode = props.treeDataSimpleMode,
|
||||
treeData = props.treeData,
|
||||
treeExpandedKeys = props.treeExpandedKeys,
|
||||
treeDefaultExpandedKeys = props.treeDefaultExpandedKeys,
|
||||
treeDefaultExpandAll = props.treeDefaultExpandAll,
|
||||
children = props.children,
|
||||
treeIcon = props.treeIcon,
|
||||
showTreeIcon = props.showTreeIcon,
|
||||
switcherIcon = props.switcherIcon,
|
||||
treeLine = props.treeLine,
|
||||
treeMotion = props.treeMotion,
|
||||
filterTreeNode = props.filterTreeNode,
|
||||
dropdownPopupAlign = props.dropdownPopupAlign,
|
||||
onChange = props.onChange,
|
||||
onTreeExpand = props.onTreeExpand,
|
||||
onTreeLoad = props.onTreeLoad,
|
||||
onDropdownVisibleChange = props.onDropdownVisibleChange,
|
||||
onSelect = props.onSelect,
|
||||
onDeselect = props.onDeselect;
|
||||
var mergedCheckable = treeCheckable || treeCheckStrictly;
|
||||
var mergedMultiple = multiple || mergedCheckable;
|
||||
var treeConduction = treeCheckable && !treeCheckStrictly;
|
||||
var mergedLabelInValue = treeCheckStrictly || labelInValue; // ========================== Ref ==========================
|
||||
|
||||
var selectRef = _react.default.useRef(null);
|
||||
|
||||
_react.default.useImperativeHandle(ref, function () {
|
||||
return {
|
||||
focus: selectRef.current.focus,
|
||||
blur: selectRef.current.blur
|
||||
};
|
||||
}); // ======================= Tree Data =======================
|
||||
// Legacy both support `label` or `title` if not set.
|
||||
// We have to fallback to function to handle this
|
||||
|
||||
|
||||
var getTreeNodeLabelProp = function getTreeNodeLabelProp(node) {
|
||||
if (treeNodeLabelProp) {
|
||||
return node[treeNodeLabelProp];
|
||||
}
|
||||
|
||||
if (!treeData) {
|
||||
return node.title;
|
||||
}
|
||||
|
||||
return node.label || node.title;
|
||||
};
|
||||
|
||||
var mergedTreeData = (0, _useTreeData.default)(treeData, children, {
|
||||
getLabelProp: getTreeNodeLabelProp,
|
||||
simpleMode: treeDataSimpleMode
|
||||
});
|
||||
|
||||
var flattedOptions = _react.default.useMemo(function () {
|
||||
return (0, _valueUtil2.flattenOptions)(mergedTreeData);
|
||||
}, [mergedTreeData]);
|
||||
|
||||
var _useKeyValueMap = (0, _useKeyValueMap3.default)(flattedOptions),
|
||||
_useKeyValueMap2 = _slicedToArray(_useKeyValueMap, 2),
|
||||
cacheKeyMap = _useKeyValueMap2[0],
|
||||
cacheValueMap = _useKeyValueMap2[1];
|
||||
|
||||
var _useKeyValueMapping = (0, _useKeyValueMapping3.default)(cacheKeyMap, cacheValueMap),
|
||||
_useKeyValueMapping2 = _slicedToArray(_useKeyValueMapping, 2),
|
||||
getEntityByKey = _useKeyValueMapping2[0],
|
||||
getEntityByValue = _useKeyValueMapping2[1]; // Only generate keyEntities for check conduction when is `treeCheckable`
|
||||
|
||||
|
||||
var _React$useMemo = _react.default.useMemo(function () {
|
||||
if (treeConduction) {
|
||||
return (0, _treeUtil.convertDataToEntities)(mergedTreeData);
|
||||
}
|
||||
|
||||
return {
|
||||
keyEntities: null
|
||||
};
|
||||
}, [mergedTreeData, treeCheckable, treeCheckStrictly]),
|
||||
conductKeyEntities = _React$useMemo.keyEntities; // ========================= Value =========================
|
||||
|
||||
|
||||
var _React$useState = _react.default.useState(props.defaultValue),
|
||||
_React$useState2 = _slicedToArray(_React$useState, 2),
|
||||
value = _React$useState2[0],
|
||||
setValue = _React$useState2[1];
|
||||
|
||||
var mergedValue = 'value' in props ? props.value : value;
|
||||
/** Get `missingRawValues` which not exist in the tree yet */
|
||||
|
||||
var splitRawValues = function splitRawValues(newRawValues) {
|
||||
var missingRawValues = [];
|
||||
var existRawValues = []; // Keep missing value in the cache
|
||||
|
||||
newRawValues.forEach(function (val) {
|
||||
if (getEntityByValue(val)) {
|
||||
existRawValues.push(val);
|
||||
} else {
|
||||
missingRawValues.push(val);
|
||||
}
|
||||
});
|
||||
return {
|
||||
missingRawValues: missingRawValues,
|
||||
existRawValues: existRawValues
|
||||
};
|
||||
};
|
||||
|
||||
var _React$useMemo2 = _react.default.useMemo(function () {
|
||||
var valueHalfCheckedKeys = [];
|
||||
var newRawValues = [];
|
||||
(0, _valueUtil2.toArray)(mergedValue).forEach(function (item) {
|
||||
if (item && _typeof(item) === 'object' && 'value' in item) {
|
||||
if (item.halfChecked && treeCheckStrictly) {
|
||||
var entity = getEntityByValue(item.value);
|
||||
valueHalfCheckedKeys.push(entity ? entity.key : item.value);
|
||||
} else {
|
||||
newRawValues.push(item.value);
|
||||
}
|
||||
} else {
|
||||
newRawValues.push(item);
|
||||
}
|
||||
}); // We need do conduction of values
|
||||
|
||||
if (treeConduction) {
|
||||
var _splitRawValues = splitRawValues(newRawValues),
|
||||
missingRawValues = _splitRawValues.missingRawValues,
|
||||
existRawValues = _splitRawValues.existRawValues;
|
||||
|
||||
var keyList = existRawValues.map(function (val) {
|
||||
return getEntityByValue(val).key;
|
||||
});
|
||||
|
||||
var _conductCheck = (0, _conductUtil.conductCheck)(keyList, true, conductKeyEntities),
|
||||
checkedKeys = _conductCheck.checkedKeys,
|
||||
halfCheckedKeys = _conductCheck.halfCheckedKeys;
|
||||
|
||||
return [[].concat(_toConsumableArray(missingRawValues), _toConsumableArray(checkedKeys.map(function (key) {
|
||||
return getEntityByKey(key).data.value;
|
||||
}))), halfCheckedKeys];
|
||||
}
|
||||
|
||||
return [newRawValues, valueHalfCheckedKeys];
|
||||
}, [mergedValue, mergedMultiple, mergedLabelInValue, treeCheckable, treeCheckStrictly]),
|
||||
_React$useMemo3 = _slicedToArray(_React$useMemo2, 2),
|
||||
rawValues = _React$useMemo3[0],
|
||||
rawHalfCheckedKeys = _React$useMemo3[1];
|
||||
|
||||
var selectValues = (0, _useSelectValues.default)(rawValues, {
|
||||
treeConduction: treeConduction,
|
||||
value: mergedValue,
|
||||
showCheckedStrategy: showCheckedStrategy,
|
||||
conductKeyEntities: conductKeyEntities,
|
||||
getEntityByValue: getEntityByValue,
|
||||
getEntityByKey: getEntityByKey,
|
||||
getLabelProp: getTreeNodeLabelProp
|
||||
});
|
||||
|
||||
var triggerChange = function triggerChange(newRawValues, extra, source) {
|
||||
setValue(mergedMultiple ? newRawValues : newRawValues[0]);
|
||||
|
||||
if (onChange) {
|
||||
var eventValues = newRawValues;
|
||||
|
||||
if (treeConduction && showCheckedStrategy !== 'SHOW_ALL') {
|
||||
var keyList = newRawValues.map(function (val) {
|
||||
var entity = getEntityByValue(val);
|
||||
return entity ? entity.key : val;
|
||||
});
|
||||
var formattedKeyList = (0, _strategyUtil.formatStrategyKeys)(keyList, showCheckedStrategy, conductKeyEntities);
|
||||
eventValues = formattedKeyList.map(function (key) {
|
||||
var entity = getEntityByKey(key);
|
||||
return entity ? entity.data.value : key;
|
||||
});
|
||||
}
|
||||
|
||||
var _ref = extra || {
|
||||
triggerValue: undefined,
|
||||
selected: undefined
|
||||
},
|
||||
triggerValue = _ref.triggerValue,
|
||||
selected = _ref.selected;
|
||||
|
||||
var returnValues = mergedLabelInValue ? (0, _valueUtil2.getRawValueLabeled)(eventValues, mergedValue, getEntityByValue, getTreeNodeLabelProp) : eventValues; // We need fill half check back
|
||||
|
||||
if (treeCheckStrictly) {
|
||||
var halfValues = rawHalfCheckedKeys.map(function (key) {
|
||||
var entity = getEntityByKey(key);
|
||||
return entity ? entity.data.value : key;
|
||||
}).filter(function (val) {
|
||||
return !eventValues.includes(val);
|
||||
});
|
||||
returnValues = [].concat(_toConsumableArray(returnValues), _toConsumableArray((0, _valueUtil2.getRawValueLabeled)(halfValues, mergedValue, getEntityByValue, getTreeNodeLabelProp)));
|
||||
}
|
||||
|
||||
var additionalInfo = {
|
||||
// [Legacy] Always return as array contains label & value
|
||||
preValue: selectValues,
|
||||
triggerValue: triggerValue
|
||||
}; // [Legacy] Fill legacy data if user query.
|
||||
// This is expansive that we only fill when user query
|
||||
// https://github.com/react-component/tree-select/blob/fe33eb7c27830c9ac70cd1fdb1ebbe7bc679c16a/src/Select.jsx
|
||||
|
||||
var showPosition = true;
|
||||
|
||||
if (treeCheckStrictly || source === 'selection' && !selected) {
|
||||
showPosition = false;
|
||||
}
|
||||
|
||||
(0, _legacyUtil.fillAdditionalInfo)(additionalInfo, triggerValue, newRawValues, mergedTreeData, showPosition);
|
||||
|
||||
if (mergedCheckable) {
|
||||
additionalInfo.checked = selected;
|
||||
} else {
|
||||
additionalInfo.selected = selected;
|
||||
}
|
||||
|
||||
onChange(mergedMultiple ? returnValues : returnValues[0], mergedLabelInValue ? null : eventValues.map(function (val) {
|
||||
var entity = getEntityByValue(val);
|
||||
return entity ? getTreeNodeLabelProp(entity.data) : null;
|
||||
}), additionalInfo);
|
||||
}
|
||||
};
|
||||
|
||||
var onInternalSelect = function onInternalSelect(selectValue, option, source) {
|
||||
var eventValue = mergedLabelInValue ? selectValue : selectValue;
|
||||
|
||||
if (!mergedMultiple) {
|
||||
// Single mode always set value
|
||||
triggerChange([selectValue], {
|
||||
selected: true,
|
||||
triggerValue: selectValue
|
||||
}, source);
|
||||
} else {
|
||||
var newRawValues = (0, _valueUtil2.addValue)(rawValues, selectValue); // Add keys if tree conduction
|
||||
|
||||
if (treeConduction) {
|
||||
// Should keep missing values
|
||||
var _splitRawValues2 = splitRawValues(newRawValues),
|
||||
missingRawValues = _splitRawValues2.missingRawValues,
|
||||
existRawValues = _splitRawValues2.existRawValues;
|
||||
|
||||
var keyList = existRawValues.map(function (val) {
|
||||
return getEntityByValue(val).key;
|
||||
});
|
||||
|
||||
var _conductCheck2 = (0, _conductUtil.conductCheck)(keyList, true, conductKeyEntities),
|
||||
checkedKeys = _conductCheck2.checkedKeys;
|
||||
|
||||
newRawValues = [].concat(_toConsumableArray(missingRawValues), _toConsumableArray(checkedKeys.map(function (key) {
|
||||
return getEntityByKey(key).data.value;
|
||||
})));
|
||||
}
|
||||
|
||||
triggerChange(newRawValues, {
|
||||
selected: true,
|
||||
triggerValue: selectValue
|
||||
}, source);
|
||||
}
|
||||
|
||||
if (onSelect) {
|
||||
onSelect(eventValue, option);
|
||||
}
|
||||
};
|
||||
|
||||
var onInternalDeselect = function onInternalDeselect(selectValue, option, source) {
|
||||
var eventValue = mergedLabelInValue ? selectValue : selectValue;
|
||||
var newRawValues = (0, _valueUtil2.removeValue)(rawValues, selectValue); // Remove keys if tree conduction
|
||||
|
||||
if (treeConduction) {
|
||||
var _splitRawValues3 = splitRawValues(newRawValues),
|
||||
missingRawValues = _splitRawValues3.missingRawValues,
|
||||
existRawValues = _splitRawValues3.existRawValues;
|
||||
|
||||
var keyList = existRawValues.map(function (val) {
|
||||
return getEntityByValue(val).key;
|
||||
});
|
||||
|
||||
var _conductCheck3 = (0, _conductUtil.conductCheck)(keyList, {
|
||||
checked: false,
|
||||
halfCheckedKeys: rawHalfCheckedKeys
|
||||
}, conductKeyEntities),
|
||||
checkedKeys = _conductCheck3.checkedKeys;
|
||||
|
||||
newRawValues = [].concat(_toConsumableArray(missingRawValues), _toConsumableArray(checkedKeys.map(function (key) {
|
||||
return getEntityByKey(key).data.value;
|
||||
})));
|
||||
}
|
||||
|
||||
triggerChange(newRawValues, {
|
||||
selected: false,
|
||||
triggerValue: selectValue
|
||||
}, source);
|
||||
|
||||
if (onDeselect) {
|
||||
onDeselect(eventValue, option);
|
||||
}
|
||||
};
|
||||
|
||||
var onInternalClear = function onInternalClear() {
|
||||
triggerChange([], null, 'clear');
|
||||
}; // ========================= Open ==========================
|
||||
|
||||
|
||||
var onInternalDropdownVisibleChange = _react.default.useCallback(function (open) {
|
||||
if (onDropdownVisibleChange) {
|
||||
var legacyParam = {};
|
||||
Object.defineProperty(legacyParam, 'documentClickClose', {
|
||||
get: function get() {
|
||||
(0, _warning.default)(false, 'Second param of `onDropdownVisibleChange` has been removed.');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
onDropdownVisibleChange(open, legacyParam);
|
||||
}
|
||||
}, [onDropdownVisibleChange]); // ======================== Warning ========================
|
||||
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
(0, _warningPropsUtil.default)(props);
|
||||
} // ======================== Render =========================
|
||||
// We pass some props into select props style
|
||||
|
||||
|
||||
var selectProps = {
|
||||
optionLabelProp: null,
|
||||
optionFilterProp: treeNodeFilterProp,
|
||||
dropdownAlign: dropdownPopupAlign,
|
||||
internalProps: {
|
||||
mark: _generator.INTERNAL_PROPS_MARK,
|
||||
onClear: onInternalClear,
|
||||
skipTriggerChange: true,
|
||||
skipTriggerSelect: true,
|
||||
onRawSelect: onInternalSelect,
|
||||
onRawDeselect: onInternalDeselect
|
||||
}
|
||||
};
|
||||
|
||||
if ('filterTreeNode' in props) {
|
||||
selectProps.filterOption = filterTreeNode;
|
||||
}
|
||||
|
||||
return _react.default.createElement(_Context.SelectContext.Provider, {
|
||||
value: {
|
||||
checkable: mergedCheckable,
|
||||
loadData: loadData,
|
||||
treeLoadedKeys: treeLoadedKeys,
|
||||
onTreeLoad: onTreeLoad,
|
||||
checkedKeys: rawValues,
|
||||
halfCheckedKeys: rawHalfCheckedKeys,
|
||||
treeDefaultExpandAll: treeDefaultExpandAll,
|
||||
treeExpandedKeys: treeExpandedKeys,
|
||||
treeDefaultExpandedKeys: treeDefaultExpandedKeys,
|
||||
onTreeExpand: onTreeExpand,
|
||||
treeIcon: treeIcon,
|
||||
treeMotion: treeMotion,
|
||||
showTreeIcon: showTreeIcon,
|
||||
switcherIcon: switcherIcon,
|
||||
treeLine: treeLine,
|
||||
treeNodeFilterProp: treeNodeFilterProp
|
||||
}
|
||||
}, _react.default.createElement(RefSelect, Object.assign({
|
||||
ref: selectRef,
|
||||
mode: mergedMultiple ? 'multiple' : null
|
||||
}, props, selectProps, {
|
||||
value: selectValues,
|
||||
// We will handle this ourself since we need calculate conduction
|
||||
labelInValue: true,
|
||||
options: mergedTreeData,
|
||||
onChange: null,
|
||||
onSelect: null,
|
||||
onDeselect: null,
|
||||
onDropdownVisibleChange: onInternalDropdownVisibleChange
|
||||
})));
|
||||
}); // Use class component since typescript not support generic
|
||||
// by `forwardRef` with function component yet.
|
||||
|
||||
|
||||
var TreeSelect = /*#__PURE__*/function (_React$Component) {
|
||||
_inherits(TreeSelect, _React$Component);
|
||||
|
||||
function TreeSelect() {
|
||||
var _this;
|
||||
|
||||
_classCallCheck(this, TreeSelect);
|
||||
|
||||
_this = _possibleConstructorReturn(this, _getPrototypeOf(TreeSelect).apply(this, arguments));
|
||||
_this.selectRef = _react.default.createRef();
|
||||
|
||||
_this.focus = function () {
|
||||
_this.selectRef.current.focus();
|
||||
};
|
||||
|
||||
_this.blur = function () {
|
||||
_this.selectRef.current.blur();
|
||||
};
|
||||
|
||||
return _this;
|
||||
}
|
||||
|
||||
_createClass(TreeSelect, [{
|
||||
key: "render",
|
||||
value: function render() {
|
||||
return _react.default.createElement(RefTreeSelect, Object.assign({
|
||||
ref: this.selectRef
|
||||
}, this.props));
|
||||
}
|
||||
}]);
|
||||
|
||||
return TreeSelect;
|
||||
}(_react.default.Component);
|
||||
|
||||
TreeSelect.TreeNode = _TreeNode.default;
|
||||
TreeSelect.SHOW_ALL = _strategyUtil.SHOW_ALL;
|
||||
TreeSelect.SHOW_PARENT = _strategyUtil.SHOW_PARENT;
|
||||
TreeSelect.SHOW_CHILD = _strategyUtil.SHOW_CHILD;
|
||||
var _default = TreeSelect;
|
||||
exports.default = _default;
|
||||
6
web/node_modules/rc-tree-select/lib/hooks/useKeyValueMap.d.ts
generated
vendored
Normal file
6
web/node_modules/rc-tree-select/lib/hooks/useKeyValueMap.d.ts
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
import { FlattenDataNode } from '../interface';
|
||||
/**
|
||||
* Return cached Key Value map with DataNode.
|
||||
* Only re-calculate when `flattenOptions` changed.
|
||||
*/
|
||||
export default function useKeyValueMap(flattenOptions: FlattenDataNode[]): Map<string | number, FlattenDataNode>[];
|
||||
27
web/node_modules/rc-tree-select/lib/hooks/useKeyValueMap.js
generated
vendored
Normal file
27
web/node_modules/rc-tree-select/lib/hooks/useKeyValueMap.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useKeyValueMap;
|
||||
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/**
|
||||
* Return cached Key Value map with DataNode.
|
||||
* Only re-calculate when `flattenOptions` changed.
|
||||
*/
|
||||
function useKeyValueMap(flattenOptions) {
|
||||
return _react.default.useMemo(function () {
|
||||
var cacheKeyMap = new Map();
|
||||
var cacheValueMap = new Map(); // Cache options by key
|
||||
|
||||
flattenOptions.forEach(function (dataNode) {
|
||||
cacheKeyMap.set(dataNode.key, dataNode);
|
||||
cacheValueMap.set(dataNode.data.value, dataNode);
|
||||
});
|
||||
return [cacheKeyMap, cacheValueMap];
|
||||
}, [flattenOptions]);
|
||||
}
|
||||
4
web/node_modules/rc-tree-select/lib/hooks/useKeyValueMapping.d.ts
generated
vendored
Normal file
4
web/node_modules/rc-tree-select/lib/hooks/useKeyValueMapping.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
import { FlattenDataNode, Key, RawValueType } from '../interface';
|
||||
export declare type SkipType = null | 'select' | 'checkbox';
|
||||
export declare function isDisabled(dataNode: FlattenDataNode, skipType: SkipType): boolean;
|
||||
export default function useKeyValueMapping(cacheKeyMap: Map<Key, FlattenDataNode>, cacheValueMap: Map<RawValueType, FlattenDataNode>): [(key: Key, skipType?: SkipType) => FlattenDataNode, (value: RawValueType, skipType?: SkipType) => FlattenDataNode];
|
||||
57
web/node_modules/rc-tree-select/lib/hooks/useKeyValueMapping.js
generated
vendored
Normal file
57
web/node_modules/rc-tree-select/lib/hooks/useKeyValueMapping.js
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.isDisabled = isDisabled;
|
||||
exports.default = useKeyValueMapping;
|
||||
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function isDisabled(dataNode, skipType) {
|
||||
if (!dataNode) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var _dataNode$data = dataNode.data,
|
||||
disabled = _dataNode$data.disabled,
|
||||
disableCheckbox = _dataNode$data.disableCheckbox;
|
||||
|
||||
switch (skipType) {
|
||||
case 'select':
|
||||
return disabled;
|
||||
|
||||
case 'checkbox':
|
||||
return disabled || disableCheckbox;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function useKeyValueMapping(cacheKeyMap, cacheValueMap) {
|
||||
var getEntityByKey = _react.default.useCallback(function (key) {
|
||||
var skipType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'select';
|
||||
var dataNode = cacheKeyMap.get(key);
|
||||
|
||||
if (isDisabled(dataNode, skipType)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return dataNode;
|
||||
}, [cacheKeyMap]);
|
||||
|
||||
var getEntityByValue = _react.default.useCallback(function (value) {
|
||||
var skipType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'select';
|
||||
var dataNode = cacheValueMap.get(value);
|
||||
|
||||
if (isDisabled(dataNode, skipType)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return dataNode;
|
||||
}, [cacheValueMap]);
|
||||
|
||||
return [getEntityByKey, getEntityByValue];
|
||||
}
|
||||
19
web/node_modules/rc-tree-select/lib/hooks/useSelectValues.d.ts
generated
vendored
Normal file
19
web/node_modules/rc-tree-select/lib/hooks/useSelectValues.d.ts
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
import React from 'react';
|
||||
import { DefaultValueType } from 'rc-select/lib/interface/generator';
|
||||
import { DataEntity } from 'rc-tree/lib/interface';
|
||||
import { RawValueType, FlattenDataNode, Key, LabelValueType, DataNode } from '../interface';
|
||||
import { SkipType } from './useKeyValueMapping';
|
||||
import { CheckedStrategy } from '../utils/strategyUtil';
|
||||
interface Config {
|
||||
treeConduction: boolean;
|
||||
/** Current `value` of TreeSelect */
|
||||
value: DefaultValueType;
|
||||
showCheckedStrategy: CheckedStrategy;
|
||||
conductKeyEntities: Record<Key, DataEntity>;
|
||||
getEntityByKey: (key: Key, skipType?: SkipType) => FlattenDataNode;
|
||||
getEntityByValue: (value: RawValueType, skipType?: SkipType) => FlattenDataNode;
|
||||
getLabelProp: (node: DataNode) => React.ReactNode;
|
||||
}
|
||||
/** Return */
|
||||
export default function useSelectValues(rawValues: RawValueType[], { value, getEntityByValue, getEntityByKey, treeConduction, showCheckedStrategy, conductKeyEntities, getLabelProp, }: Config): LabelValueType[];
|
||||
export {};
|
||||
41
web/node_modules/rc-tree-select/lib/hooks/useSelectValues.js
generated
vendored
Normal file
41
web/node_modules/rc-tree-select/lib/hooks/useSelectValues.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useSelectValues;
|
||||
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
|
||||
var _valueUtil = require("../utils/valueUtil");
|
||||
|
||||
var _strategyUtil = require("../utils/strategyUtil");
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
/** Return */
|
||||
function useSelectValues(rawValues, _ref) {
|
||||
var value = _ref.value,
|
||||
getEntityByValue = _ref.getEntityByValue,
|
||||
getEntityByKey = _ref.getEntityByKey,
|
||||
treeConduction = _ref.treeConduction,
|
||||
showCheckedStrategy = _ref.showCheckedStrategy,
|
||||
conductKeyEntities = _ref.conductKeyEntities,
|
||||
getLabelProp = _ref.getLabelProp;
|
||||
return _react.default.useMemo(function () {
|
||||
var mergedRawValues = rawValues;
|
||||
|
||||
if (treeConduction) {
|
||||
var rawKeys = (0, _strategyUtil.formatStrategyKeys)(rawValues.map(function (val) {
|
||||
var entity = getEntityByValue(val);
|
||||
return entity ? entity.key : val;
|
||||
}), showCheckedStrategy, conductKeyEntities);
|
||||
mergedRawValues = rawKeys.map(function (key) {
|
||||
var entity = getEntityByKey(key);
|
||||
return entity ? entity.data.value : key;
|
||||
});
|
||||
}
|
||||
|
||||
return (0, _valueUtil.getRawValueLabeled)(mergedRawValues, value, getEntityByValue, getLabelProp);
|
||||
}, [rawValues, value, treeConduction, showCheckedStrategy, getEntityByValue]);
|
||||
}
|
||||
10
web/node_modules/rc-tree-select/lib/hooks/useTreeData.d.ts
generated
vendored
Normal file
10
web/node_modules/rc-tree-select/lib/hooks/useTreeData.d.ts
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import React from 'react';
|
||||
import { DataNode, InnerDataNode, SimpleModeConfig } from '../interface';
|
||||
/**
|
||||
* Convert `treeData` or `children` into formatted `treeData`.
|
||||
* Will not re-calculate if `treeData` or `children` not change.
|
||||
*/
|
||||
export default function useTreeData(treeData: DataNode[], children: React.ReactNode, { getLabelProp, simpleMode, }: {
|
||||
getLabelProp: (node: DataNode) => React.ReactNode;
|
||||
simpleMode: boolean | SimpleModeConfig;
|
||||
}): InnerDataNode[];
|
||||
129
web/node_modules/rc-tree-select/lib/hooks/useTreeData.js
generated
vendored
Normal file
129
web/node_modules/rc-tree-select/lib/hooks/useTreeData.js
generated
vendored
Normal file
@@ -0,0 +1,129 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useTreeData;
|
||||
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
|
||||
var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
|
||||
|
||||
var _legacyUtil = require("../utils/legacyUtil");
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
||||
|
||||
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
||||
|
||||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
var MAX_WARNING_TIMES = 10;
|
||||
|
||||
function parseSimpleTreeData(treeData, _ref) {
|
||||
var id = _ref.id,
|
||||
pId = _ref.pId,
|
||||
rootPId = _ref.rootPId;
|
||||
var keyNodes = {};
|
||||
var rootNodeList = []; // Fill in the map
|
||||
|
||||
var nodeList = treeData.map(function (node) {
|
||||
var clone = _objectSpread({}, node);
|
||||
|
||||
var key = clone[id];
|
||||
keyNodes[key] = clone;
|
||||
clone.key = clone.key || key;
|
||||
return clone;
|
||||
}); // Connect tree
|
||||
|
||||
nodeList.forEach(function (node) {
|
||||
var parentKey = node[pId];
|
||||
var parent = keyNodes[parentKey]; // Fill parent
|
||||
|
||||
if (parent) {
|
||||
parent.children = parent.children || [];
|
||||
parent.children.push(node);
|
||||
} // Fill root tree node
|
||||
|
||||
|
||||
if (parentKey === rootPId || !parent && rootPId === null) {
|
||||
rootNodeList.push(node);
|
||||
}
|
||||
});
|
||||
return rootNodeList;
|
||||
}
|
||||
/**
|
||||
* Format `treeData` with `value` & `key` which is used for calculation
|
||||
*/
|
||||
|
||||
|
||||
function formatTreeData(treeData, getLabelProp) {
|
||||
var warningTimes = 0;
|
||||
var valueSet = new Set();
|
||||
|
||||
function dig(dataNodes) {
|
||||
return (dataNodes || []).map(function (node) {
|
||||
var key = node.key,
|
||||
value = node.value,
|
||||
children = node.children,
|
||||
rest = _objectWithoutProperties(node, ["key", "value", "children"]);
|
||||
|
||||
var mergedValue = 'value' in node ? value : key;
|
||||
|
||||
var dataNode = _objectSpread({}, rest, {
|
||||
key: key !== null && key !== undefined ? key : mergedValue,
|
||||
value: mergedValue,
|
||||
title: getLabelProp(node)
|
||||
}); // Check `key` & `value` and warning user
|
||||
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
if (key !== null && key !== undefined && value !== undefined && String(key) !== String(value) && warningTimes < MAX_WARNING_TIMES) {
|
||||
warningTimes += 1;
|
||||
(0, _warning.default)(false, "`key` or `value` with TreeNode must be the same or you can remove one of them. key: ".concat(key, ", value: ").concat(value, "."));
|
||||
}
|
||||
|
||||
(0, _warning.default)(!valueSet.has(value), "Same `value` exist in the tree: ".concat(value));
|
||||
valueSet.add(value);
|
||||
}
|
||||
|
||||
if ('children' in node) {
|
||||
dataNode.children = dig(children);
|
||||
}
|
||||
|
||||
return dataNode;
|
||||
});
|
||||
}
|
||||
|
||||
return dig(treeData);
|
||||
}
|
||||
/**
|
||||
* Convert `treeData` or `children` into formatted `treeData`.
|
||||
* Will not re-calculate if `treeData` or `children` not change.
|
||||
*/
|
||||
|
||||
|
||||
function useTreeData(treeData, children, _ref2) {
|
||||
var getLabelProp = _ref2.getLabelProp,
|
||||
simpleMode = _ref2.simpleMode;
|
||||
|
||||
var cacheRef = _react.default.useRef({});
|
||||
|
||||
if (treeData) {
|
||||
cacheRef.current.formatTreeData = cacheRef.current.treeData === treeData ? cacheRef.current.formatTreeData : formatTreeData(simpleMode ? parseSimpleTreeData(treeData, _objectSpread({
|
||||
id: 'id',
|
||||
pId: 'pId',
|
||||
rootPId: null
|
||||
}, simpleMode !== true ? simpleMode : {})) : treeData, getLabelProp);
|
||||
cacheRef.current.treeData = treeData;
|
||||
} else {
|
||||
cacheRef.current.formatTreeData = cacheRef.current.children === children ? cacheRef.current.formatTreeData : formatTreeData((0, _legacyUtil.convertChildrenToData)(children), getLabelProp);
|
||||
}
|
||||
|
||||
return cacheRef.current.formatTreeData;
|
||||
}
|
||||
5
web/node_modules/rc-tree-select/lib/index.d.ts
generated
vendored
Normal file
5
web/node_modules/rc-tree-select/lib/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import TreeSelect, { TreeSelectProps } from './TreeSelect';
|
||||
import TreeNode from './TreeNode';
|
||||
import { SHOW_ALL, SHOW_CHILD, SHOW_PARENT } from './utils/strategyUtil';
|
||||
export { TreeNode, SHOW_ALL, SHOW_CHILD, SHOW_PARENT, TreeSelectProps };
|
||||
export default TreeSelect;
|
||||
41
web/node_modules/rc-tree-select/lib/index.js
generated
vendored
Normal file
41
web/node_modules/rc-tree-select/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
Object.defineProperty(exports, "TreeNode", {
|
||||
enumerable: true,
|
||||
get: function get() {
|
||||
return _TreeNode.default;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "SHOW_ALL", {
|
||||
enumerable: true,
|
||||
get: function get() {
|
||||
return _strategyUtil.SHOW_ALL;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "SHOW_CHILD", {
|
||||
enumerable: true,
|
||||
get: function get() {
|
||||
return _strategyUtil.SHOW_CHILD;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "SHOW_PARENT", {
|
||||
enumerable: true,
|
||||
get: function get() {
|
||||
return _strategyUtil.SHOW_PARENT;
|
||||
}
|
||||
});
|
||||
exports.default = void 0;
|
||||
|
||||
var _TreeSelect = _interopRequireDefault(require("./TreeSelect"));
|
||||
|
||||
var _TreeNode = _interopRequireDefault(require("./TreeNode"));
|
||||
|
||||
var _strategyUtil = require("./utils/strategyUtil");
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var _default = _TreeSelect.default;
|
||||
exports.default = _default;
|
||||
66
web/node_modules/rc-tree-select/lib/interface.d.ts
generated
vendored
Normal file
66
web/node_modules/rc-tree-select/lib/interface.d.ts
generated
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
import React from 'react';
|
||||
export declare type SelectSource = 'option' | 'selection' | 'input' | 'clear';
|
||||
export declare type Key = string | number;
|
||||
export declare type RawValueType = string | number;
|
||||
export interface LabelValueType {
|
||||
key?: Key;
|
||||
value?: RawValueType;
|
||||
label?: React.ReactNode;
|
||||
/** Only works on `treeCheckStrictly` */
|
||||
halfChecked?: boolean;
|
||||
}
|
||||
export declare type DefaultValueType = RawValueType | RawValueType[] | LabelValueType | LabelValueType[];
|
||||
export interface DataNode {
|
||||
value?: RawValueType;
|
||||
title?: React.ReactNode;
|
||||
label?: React.ReactNode;
|
||||
key?: Key;
|
||||
disabled?: boolean;
|
||||
disableCheckbox?: boolean;
|
||||
checkable?: boolean;
|
||||
children?: DataNode[];
|
||||
/** Customize data info */
|
||||
[prop: string]: any;
|
||||
}
|
||||
export interface InnerDataNode extends DataNode {
|
||||
key: Key;
|
||||
value: RawValueType;
|
||||
label?: React.ReactNode;
|
||||
children?: InnerDataNode[];
|
||||
}
|
||||
export interface LegacyDataNode extends DataNode {
|
||||
props: any;
|
||||
}
|
||||
export interface TreeDataNode extends DataNode {
|
||||
key: Key;
|
||||
children?: TreeDataNode[];
|
||||
}
|
||||
export interface FlattenDataNode {
|
||||
data: DataNode;
|
||||
key: Key;
|
||||
level: number;
|
||||
}
|
||||
export interface SimpleModeConfig {
|
||||
id?: Key;
|
||||
pId?: Key;
|
||||
rootPId?: Key;
|
||||
}
|
||||
/** @deprecated This is only used for legacy compatible. Not works on new code. */
|
||||
export interface LegacyCheckedNode {
|
||||
pos: string;
|
||||
node: React.ReactElement;
|
||||
children?: LegacyCheckedNode[];
|
||||
}
|
||||
export interface ChangeEventExtra {
|
||||
/** @deprecated Please save prev value by control logic instead */
|
||||
preValue: LabelValueType[];
|
||||
triggerValue: RawValueType;
|
||||
/** @deprecated Use `onSelect` or `onDeselect` instead. */
|
||||
selected?: boolean;
|
||||
/** @deprecated Use `onSelect` or `onDeselect` instead. */
|
||||
checked?: boolean;
|
||||
/** @deprecated This prop not work as react node anymore. */
|
||||
triggerNode: React.ReactElement;
|
||||
/** @deprecated This prop not work as react node anymore. */
|
||||
allCheckedNodes: LegacyCheckedNode[];
|
||||
}
|
||||
1
web/node_modules/rc-tree-select/lib/interface.js
generated
vendored
Normal file
1
web/node_modules/rc-tree-select/lib/interface.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
"use strict";
|
||||
5
web/node_modules/rc-tree-select/lib/utils/legacyUtil.d.ts
generated
vendored
Normal file
5
web/node_modules/rc-tree-select/lib/utils/legacyUtil.d.ts
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import React from 'react';
|
||||
import { DataNode, LegacyDataNode, ChangeEventExtra, InnerDataNode, RawValueType } from '../interface';
|
||||
export declare function convertChildrenToData(nodes: React.ReactNode): DataNode[];
|
||||
export declare function fillLegacyProps(dataNode: DataNode): LegacyDataNode;
|
||||
export declare function fillAdditionalInfo(extra: ChangeEventExtra, triggerValue: RawValueType, checkedValues: RawValueType[], treeData: InnerDataNode[], showPosition: boolean): void;
|
||||
157
web/node_modules/rc-tree-select/lib/utils/legacyUtil.js
generated
vendored
Normal file
157
web/node_modules/rc-tree-select/lib/utils/legacyUtil.js
generated
vendored
Normal file
@@ -0,0 +1,157 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.convertChildrenToData = convertChildrenToData;
|
||||
exports.fillLegacyProps = fillLegacyProps;
|
||||
exports.fillAdditionalInfo = fillAdditionalInfo;
|
||||
|
||||
var _react = _interopRequireDefault(require("react"));
|
||||
|
||||
var _toArray = _interopRequireDefault(require("rc-util/lib/Children/toArray"));
|
||||
|
||||
var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
|
||||
|
||||
var _TreeNode = _interopRequireDefault(require("../TreeNode"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
||||
|
||||
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
||||
|
||||
function convertChildrenToData(nodes) {
|
||||
return (0, _toArray.default)(nodes).map(function (node) {
|
||||
if (!_react.default.isValidElement(node) || !node.type) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var key = node.key,
|
||||
_node$props = node.props,
|
||||
children = _node$props.children,
|
||||
value = _node$props.value,
|
||||
restProps = _objectWithoutProperties(_node$props, ["children", "value"]);
|
||||
|
||||
var data = _objectSpread({
|
||||
key: key,
|
||||
value: value
|
||||
}, restProps);
|
||||
|
||||
var childData = convertChildrenToData(children);
|
||||
|
||||
if (childData.length) {
|
||||
data.children = childData;
|
||||
}
|
||||
|
||||
return data;
|
||||
}).filter(function (data) {
|
||||
return data;
|
||||
});
|
||||
}
|
||||
|
||||
function fillLegacyProps(dataNode) {
|
||||
// Skip if not dataNode exist
|
||||
if (!dataNode) {
|
||||
return dataNode;
|
||||
}
|
||||
|
||||
var cloneNode = _objectSpread({}, dataNode);
|
||||
|
||||
if (!('props' in cloneNode)) {
|
||||
Object.defineProperty(cloneNode, 'props', {
|
||||
get: function get() {
|
||||
(0, _warning.default)(false, 'New `rc-tree-select` not support return node instance as argument anymore. Please consider to remove `props` access.');
|
||||
return cloneNode;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return cloneNode;
|
||||
}
|
||||
|
||||
function fillAdditionalInfo(extra, triggerValue, checkedValues, treeData, showPosition) {
|
||||
var triggerNode = null;
|
||||
var nodeList = null;
|
||||
|
||||
function generateMap() {
|
||||
function dig(list) {
|
||||
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0';
|
||||
var parentIncluded = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
||||
return list.map(function (dataNode, index) {
|
||||
var pos = "".concat(level, "-").concat(index);
|
||||
var included = checkedValues.includes(dataNode.value);
|
||||
var children = dig(dataNode.children || [], pos, included);
|
||||
|
||||
var node = _react.default.createElement(_TreeNode.default, Object.assign({}, dataNode), children.map(function (child) {
|
||||
return child.node;
|
||||
})); // Link with trigger node
|
||||
|
||||
|
||||
if (triggerValue === dataNode.value) {
|
||||
triggerNode = node;
|
||||
}
|
||||
|
||||
if (included) {
|
||||
var checkedNode = {
|
||||
pos: pos,
|
||||
node: node,
|
||||
children: children
|
||||
};
|
||||
|
||||
if (!parentIncluded) {
|
||||
nodeList.push(checkedNode);
|
||||
}
|
||||
|
||||
return checkedNode;
|
||||
}
|
||||
|
||||
return null;
|
||||
}).filter(function (node) {
|
||||
return node;
|
||||
});
|
||||
}
|
||||
|
||||
if (!nodeList) {
|
||||
nodeList = [];
|
||||
dig(treeData); // Sort to keep the checked node length
|
||||
|
||||
nodeList.sort(function (_ref, _ref2) {
|
||||
var val1 = _ref.node.props.value;
|
||||
var val2 = _ref2.node.props.value;
|
||||
var index1 = checkedValues.indexOf(val1);
|
||||
var index2 = checkedValues.indexOf(val2);
|
||||
return index1 - index2;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Object.defineProperty(extra, 'triggerNode', {
|
||||
get: function get() {
|
||||
(0, _warning.default)(false, '`triggerNode` is deprecated. Please consider decoupling data with node.');
|
||||
generateMap();
|
||||
return triggerNode;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(extra, 'allCheckedNodes', {
|
||||
get: function get() {
|
||||
(0, _warning.default)(false, '`allCheckedNodes` is deprecated. Please consider decoupling data with node.');
|
||||
generateMap();
|
||||
|
||||
if (showPosition) {
|
||||
return nodeList;
|
||||
}
|
||||
|
||||
return nodeList.map(function (_ref3) {
|
||||
var node = _ref3.node;
|
||||
return node;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
7
web/node_modules/rc-tree-select/lib/utils/strategyUtil.d.ts
generated
vendored
Normal file
7
web/node_modules/rc-tree-select/lib/utils/strategyUtil.d.ts
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
import { DataEntity } from 'rc-tree/lib/interface';
|
||||
import { RawValueType, Key } from '../interface';
|
||||
export declare const SHOW_ALL = "SHOW_ALL";
|
||||
export declare const SHOW_PARENT = "SHOW_PARENT";
|
||||
export declare const SHOW_CHILD = "SHOW_CHILD";
|
||||
export declare type CheckedStrategy = typeof SHOW_ALL | typeof SHOW_PARENT | typeof SHOW_CHILD;
|
||||
export declare function formatStrategyKeys(keys: Key[], strategy: CheckedStrategy, keyEntities: Record<Key, DataEntity>): RawValueType[];
|
||||
50
web/node_modules/rc-tree-select/lib/utils/strategyUtil.js
generated
vendored
Normal file
50
web/node_modules/rc-tree-select/lib/utils/strategyUtil.js
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.formatStrategyKeys = formatStrategyKeys;
|
||||
exports.SHOW_CHILD = exports.SHOW_PARENT = exports.SHOW_ALL = void 0;
|
||||
|
||||
var _valueUtil = require("./valueUtil");
|
||||
|
||||
var SHOW_ALL = 'SHOW_ALL';
|
||||
exports.SHOW_ALL = SHOW_ALL;
|
||||
var SHOW_PARENT = 'SHOW_PARENT';
|
||||
exports.SHOW_PARENT = SHOW_PARENT;
|
||||
var SHOW_CHILD = 'SHOW_CHILD';
|
||||
exports.SHOW_CHILD = SHOW_CHILD;
|
||||
|
||||
function formatStrategyKeys(keys, strategy, keyEntities) {
|
||||
var keySet = new Set(keys);
|
||||
|
||||
if (strategy === SHOW_CHILD) {
|
||||
return keys.filter(function (key) {
|
||||
var entity = keyEntities[key];
|
||||
|
||||
if (entity && entity.children && entity.children.every(function (_ref) {
|
||||
var node = _ref.node;
|
||||
return (0, _valueUtil.isCheckDisabled)(node) || keySet.has(node.key);
|
||||
})) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
if (strategy === SHOW_PARENT) {
|
||||
return keys.filter(function (key) {
|
||||
var entity = keyEntities[key];
|
||||
var parent = entity ? entity.parent : null;
|
||||
|
||||
if (parent && !(0, _valueUtil.isCheckDisabled)(parent.node) && keySet.has(parent.node.key)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
return keys;
|
||||
}
|
||||
20
web/node_modules/rc-tree-select/lib/utils/valueUtil.d.ts
generated
vendored
Normal file
20
web/node_modules/rc-tree-select/lib/utils/valueUtil.d.ts
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
/// <reference types="react" />
|
||||
import { FilterFunc } from 'rc-select/lib/interface/generator';
|
||||
import { FlattenDataNode, RawValueType, DataNode, DefaultValueType, LabelValueType, LegacyDataNode } from '../interface';
|
||||
import { SkipType } from '../hooks/useKeyValueMapping';
|
||||
export declare function toArray<T>(value: T | T[]): T[];
|
||||
export declare function findValueOption(values: RawValueType[], options: FlattenDataNode[]): DataNode[];
|
||||
export declare function isValueDisabled(value: RawValueType, options: FlattenDataNode[]): boolean;
|
||||
export declare function isCheckDisabled(node: DataNode): boolean;
|
||||
/**
|
||||
* Before reuse `rc-tree` logic, we need to add key since TreeSelect use `value` instead of `key`.
|
||||
*/
|
||||
export declare function flattenOptions(options: DataNode[]): FlattenDataNode[];
|
||||
/** Filter options and return a new options by the search text */
|
||||
export declare function filterOptions(searchValue: string, options: DataNode[], { optionFilterProp, filterOption, }: {
|
||||
optionFilterProp: string;
|
||||
filterOption: boolean | FilterFunc<LegacyDataNode>;
|
||||
}): DataNode[];
|
||||
export declare function getRawValueLabeled(values: RawValueType[], prevValue: DefaultValueType, getEntityByValue: (value: RawValueType, skipType?: SkipType) => FlattenDataNode, getLabelProp: (node: DataNode) => React.ReactNode): LabelValueType[];
|
||||
export declare function addValue(rawValues: RawValueType[], value: RawValueType): (string | number)[];
|
||||
export declare function removeValue(rawValues: RawValueType[], value: RawValueType): (string | number)[];
|
||||
194
web/node_modules/rc-tree-select/lib/utils/valueUtil.js
generated
vendored
Normal file
194
web/node_modules/rc-tree-select/lib/utils/valueUtil.js
generated
vendored
Normal file
@@ -0,0 +1,194 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.toArray = toArray;
|
||||
exports.findValueOption = findValueOption;
|
||||
exports.isValueDisabled = isValueDisabled;
|
||||
exports.isCheckDisabled = isCheckDisabled;
|
||||
exports.flattenOptions = flattenOptions;
|
||||
exports.filterOptions = filterOptions;
|
||||
exports.getRawValueLabeled = getRawValueLabeled;
|
||||
exports.addValue = addValue;
|
||||
exports.removeValue = removeValue;
|
||||
|
||||
var _treeUtil = require("rc-tree/lib/utils/treeUtil");
|
||||
|
||||
var _legacyUtil = require("./legacyUtil");
|
||||
|
||||
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||||
|
||||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
function toArray(value) {
|
||||
if (Array.isArray(value)) {
|
||||
return value;
|
||||
}
|
||||
|
||||
return value !== undefined ? [value] : [];
|
||||
}
|
||||
|
||||
function findValueOption(values, options) {
|
||||
var optionMap = new Map();
|
||||
options.forEach(function (flattenItem) {
|
||||
var data = flattenItem.data;
|
||||
optionMap.set(data.value, data);
|
||||
});
|
||||
return values.map(function (val) {
|
||||
return (0, _legacyUtil.fillLegacyProps)(optionMap.get(val));
|
||||
});
|
||||
}
|
||||
|
||||
function isValueDisabled(value, options) {
|
||||
var option = findValueOption([value], options)[0];
|
||||
|
||||
if (option) {
|
||||
return option.disabled;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function isCheckDisabled(node) {
|
||||
return node.disabled || node.disableCheckbox || node.checkable === false;
|
||||
}
|
||||
|
||||
function getLevel(_ref) {
|
||||
var parent = _ref.parent;
|
||||
var level = 0;
|
||||
var current = parent;
|
||||
|
||||
while (current) {
|
||||
current = current.parent;
|
||||
level += 1;
|
||||
}
|
||||
|
||||
return level;
|
||||
}
|
||||
/**
|
||||
* Before reuse `rc-tree` logic, we need to add key since TreeSelect use `value` instead of `key`.
|
||||
*/
|
||||
|
||||
|
||||
function flattenOptions(options) {
|
||||
// Add missing key
|
||||
function fillKey(list) {
|
||||
return (list || []).map(function (node) {
|
||||
var value = node.value,
|
||||
key = node.key,
|
||||
children = node.children;
|
||||
|
||||
var clone = _objectSpread({}, node, {
|
||||
key: 'key' in node ? key : value
|
||||
});
|
||||
|
||||
if (children) {
|
||||
clone.children = fillKey(children);
|
||||
}
|
||||
|
||||
return clone;
|
||||
});
|
||||
}
|
||||
|
||||
var flattenList = (0, _treeUtil.flattenTreeData)(fillKey(options), true);
|
||||
return flattenList.map(function (node) {
|
||||
return {
|
||||
key: node.data.key,
|
||||
data: node.data,
|
||||
level: getLevel(node)
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function getDefaultFilterOption(optionFilterProp) {
|
||||
return function (searchValue, dataNode) {
|
||||
var value = dataNode[optionFilterProp];
|
||||
return String(value).toLowerCase().includes(String(searchValue).toLowerCase());
|
||||
};
|
||||
}
|
||||
/** Filter options and return a new options by the search text */
|
||||
|
||||
|
||||
function filterOptions(searchValue, options, _ref2) {
|
||||
var optionFilterProp = _ref2.optionFilterProp,
|
||||
filterOption = _ref2.filterOption;
|
||||
|
||||
if (filterOption === false) {
|
||||
return options;
|
||||
}
|
||||
|
||||
var filterOptionFunc;
|
||||
|
||||
if (typeof filterOption === 'function') {
|
||||
filterOptionFunc = filterOption;
|
||||
} else {
|
||||
filterOptionFunc = getDefaultFilterOption(optionFilterProp);
|
||||
}
|
||||
|
||||
function dig(list) {
|
||||
var keepAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
||||
return list.map(function (dataNode) {
|
||||
var children = dataNode.children;
|
||||
var match = keepAll || filterOptionFunc(searchValue, (0, _legacyUtil.fillLegacyProps)(dataNode));
|
||||
var childList = dig(children || [], match);
|
||||
|
||||
if (match || childList.length) {
|
||||
return _objectSpread({}, dataNode, {
|
||||
children: childList
|
||||
});
|
||||
}
|
||||
|
||||
return null;
|
||||
}).filter(function (node) {
|
||||
return node;
|
||||
});
|
||||
}
|
||||
|
||||
return dig(options);
|
||||
}
|
||||
|
||||
function getRawValueLabeled(values, prevValue, getEntityByValue, getLabelProp) {
|
||||
var valueMap = new Map();
|
||||
toArray(prevValue).forEach(function (item) {
|
||||
if (item && _typeof(item) === 'object' && 'value' in item) {
|
||||
valueMap.set(item.value, item);
|
||||
}
|
||||
});
|
||||
return values.map(function (val) {
|
||||
var item = {
|
||||
value: val
|
||||
};
|
||||
var entity = getEntityByValue(val);
|
||||
var label = entity ? getLabelProp(entity.data) : val;
|
||||
|
||||
if (valueMap.has(val)) {
|
||||
var labeledValue = valueMap.get(val);
|
||||
item.label = 'label' in labeledValue ? labeledValue.label : label;
|
||||
|
||||
if ('halfChecked' in labeledValue) {
|
||||
item.halfChecked = labeledValue.halfChecked;
|
||||
}
|
||||
} else {
|
||||
item.label = label;
|
||||
}
|
||||
|
||||
return item;
|
||||
});
|
||||
}
|
||||
|
||||
function addValue(rawValues, value) {
|
||||
var values = new Set(rawValues);
|
||||
values.add(value);
|
||||
return Array.from(values);
|
||||
}
|
||||
|
||||
function removeValue(rawValues, value) {
|
||||
var values = new Set(rawValues);
|
||||
values.delete(value);
|
||||
return Array.from(values);
|
||||
}
|
||||
3
web/node_modules/rc-tree-select/lib/utils/warningPropsUtil.d.ts
generated
vendored
Normal file
3
web/node_modules/rc-tree-select/lib/utils/warningPropsUtil.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import { TreeSelectProps } from '../TreeSelect';
|
||||
declare function warningProps(props: TreeSelectProps): void;
|
||||
export default warningProps;
|
||||
43
web/node_modules/rc-tree-select/lib/utils/warningPropsUtil.js
generated
vendored
Normal file
43
web/node_modules/rc-tree-select/lib/utils/warningPropsUtil.js
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
|
||||
var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
|
||||
|
||||
var _valueUtil = require("./valueUtil");
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||||
|
||||
function warningProps(props) {
|
||||
var searchPlaceholder = props.searchPlaceholder,
|
||||
treeCheckStrictly = props.treeCheckStrictly,
|
||||
treeCheckable = props.treeCheckable,
|
||||
labelInValue = props.labelInValue,
|
||||
value = props.value,
|
||||
multiple = props.multiple;
|
||||
(0, _warning.default)(!searchPlaceholder, '`searchPlaceholder` has been removed.');
|
||||
|
||||
if (treeCheckStrictly && labelInValue === false) {
|
||||
(0, _warning.default)(false, '`treeCheckStrictly` will force set `labelInValue` to `true`.');
|
||||
}
|
||||
|
||||
if (labelInValue || treeCheckStrictly) {
|
||||
(0, _warning.default)((0, _valueUtil.toArray)(value).every(function (val) {
|
||||
return val && _typeof(val) === 'object' && 'value' in val;
|
||||
}), 'Invalid prop `value` supplied to `TreeSelect`. You should use { label: string, value: string | number } or [{ label: string, value: string | number }] instead.');
|
||||
}
|
||||
|
||||
if (treeCheckStrictly || multiple || treeCheckable) {
|
||||
(0, _warning.default)(!value || Array.isArray(value), '`value` should be an array when `TreeSelect` is checkable or multiple.');
|
||||
} else {
|
||||
(0, _warning.default)(!Array.isArray(value), '`value` should not be array when `TreeSelect` is single mode.');
|
||||
}
|
||||
}
|
||||
|
||||
var _default = warningProps;
|
||||
exports.default = _default;
|
||||
98
web/node_modules/rc-tree-select/package.json
generated
vendored
Normal file
98
web/node_modules/rc-tree-select/package.json
generated
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"_from": "rc-tree-select@~3.1.0",
|
||||
"_id": "rc-tree-select@3.1.3",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-VQDr+qLCCJ9V/4ewnp3crMT2N7iJV58V0uWVA3nGJxVuxhSj8TPHFZLnyMh6vaNrQsrY6eBp/x1y6nEJBjnVQg==",
|
||||
"_location": "/rc-tree-select",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "rc-tree-select@~3.1.0",
|
||||
"name": "rc-tree-select",
|
||||
"escapedName": "rc-tree-select",
|
||||
"rawSpec": "~3.1.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "~3.1.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/antd"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-3.1.3.tgz",
|
||||
"_shasum": "d31efbf9955d70b250fe50645b39f3b705a3d124",
|
||||
"_spec": "rc-tree-select@~3.1.0",
|
||||
"_where": "/Users/thilina/TestProjects/icehrm-pro/web/node_modules/antd",
|
||||
"author": {
|
||||
"name": "smith3816@gmail.com"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/react-component/tree-select/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"classnames": "2.x",
|
||||
"rc-select": "^10.1.0",
|
||||
"rc-tree": "^3.1.0",
|
||||
"rc-util": "^4.17.0"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "tree-select ui component for react",
|
||||
"devDependencies": {
|
||||
"@types/jest": "^25.1.4",
|
||||
"@types/react": "^16.8.19",
|
||||
"@types/react-dom": "^16.8.4",
|
||||
"@types/warning": "^3.0.0",
|
||||
"cross-env": "^7.0.2",
|
||||
"enzyme": "^3.10.0",
|
||||
"enzyme-adapter-react-16": "^1.1.1",
|
||||
"enzyme-to-json": "^3.4.0",
|
||||
"father": "^2.13.2",
|
||||
"np": "^6.2.0",
|
||||
"rc-dialog": "^7.5.7",
|
||||
"rc-field-form": "^1.0.0",
|
||||
"rc-trigger": "^4.0.0",
|
||||
"rc-virtual-list": "^1.1.0",
|
||||
"react": "^16.8.0",
|
||||
"react-dom": "^16.8.0",
|
||||
"typescript": "^3.5.2"
|
||||
},
|
||||
"files": [
|
||||
"es",
|
||||
"lib",
|
||||
"dist",
|
||||
"assets/*.less",
|
||||
"assets/*.css",
|
||||
"assets/*.png",
|
||||
"assets/*.gif"
|
||||
],
|
||||
"homepage": "https://github.com/react-component/tree-select",
|
||||
"keywords": [
|
||||
"react",
|
||||
"react-component",
|
||||
"react-tree-select",
|
||||
"tree-select"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "./lib/index",
|
||||
"module": "./es/index",
|
||||
"name": "rc-tree-select",
|
||||
"peerDependencies": {
|
||||
"react": "*",
|
||||
"react-dom": "*"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/react-component/tree-select.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "father doc build --storybook",
|
||||
"compile": "father build",
|
||||
"lint": "eslint src/ examples/ --ext .tsx,.ts,.jsx,.js",
|
||||
"now-build": "npm run build",
|
||||
"prepublishOnly": "npm run compile && np --no-cleanup --yolo --no-publish --any-branch",
|
||||
"prettier": "prettier '{src,tests}/**/*.{ts,tsx}' 'tests/**/*.js' --write",
|
||||
"start": "cross-env NODE_ENV=development father doc dev --storybook",
|
||||
"test": "father test"
|
||||
},
|
||||
"version": "3.1.3"
|
||||
}
|
||||
Reference in New Issue
Block a user