🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

@uiw/react-tree

Package Overview
Dependencies
Maintainers
1
Versions
172
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@uiw/react-tree - npm Package Compare versions

Comparing version
4.6.9
to
4.6.10
+7
-17
lib/cjs/index.js

@@ -14,4 +14,2 @@ "use strict";

var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));

@@ -29,4 +27,2 @@

var _classnames4 = _interopRequireDefault(require("classnames"));
var _reactTransitionGroup = require("react-transition-group");

@@ -247,3 +243,3 @@

currentKeys.push(item.key);
evn.currentTarget.className = (0, _classnames4.default)(cls, 'open');
evn.currentTarget.className = [cls, 'open'].filter(Boolean).join(' ').trim();
expanded = true;

@@ -266,4 +262,3 @@ } else {

value: function renderTreeNode(data, level, parent) {
var _classnames,
_this2 = this;
var _this2 = this;

@@ -295,6 +290,4 @@ var _this$props3 = this.props,

}, /*#__PURE__*/_react.default.createElement("ul", {
className: (0, _classnames4.default)((_classnames = {}, (0, _defineProperty2.default)(_classnames, "".concat(prefixCls, "-open"), level !== 1 && isOpen), (0, _defineProperty2.default)(_classnames, "".concat(prefixCls, "-close"), level !== 1 && !isOpen), _classnames))
className: [level !== 1 && isOpen ? ["".concat(prefixCls, "-open")] : null, level !== 1 && !isOpen ? ["".concat(prefixCls, "-close")] : null].filter(Boolean).join(' ').trim()
}, data.map(function (item, idx) {
var _classnames2;
item.parent = parent;

@@ -318,3 +311,3 @@ var selected = !!(selectedKeys && selectedKeys.indexOf(item.key) > -1);

}, /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames4.default)("".concat(prefixCls, "-label"))
className: "".concat(prefixCls, "-label")
}, /*#__PURE__*/_react.default.createElement("span", {

@@ -325,9 +318,6 @@ className: "".concat(prefixCls, "-switcher"),

type: iconItem || 'caret-right',
className: (0, _classnames4.default)((_classnames2 = {}, (0, _defineProperty2.default)(_classnames2, "".concat(prefixCls, "-switcher-noop"), typeof icon === 'function'), (0, _defineProperty2.default)(_classnames2, 'no-child', noChild), (0, _defineProperty2.default)(_classnames2, 'no-animation', !iconAnimation), (0, _defineProperty2.default)(_classnames2, "open", itemIsOpen), _classnames2))
className: [typeof icon === 'function' ? "".concat(prefixCls, "-switcher-noop") : null, noChild ? 'no-child' : null, !iconAnimation ? 'no-animation' : null, itemIsOpen ? 'open' : null].filter(Boolean).join(' ').trim()
})), /*#__PURE__*/_react.default.createElement("div", {
onClick: _this2.onItemSelected.bind(_this2, item),
className: (0, _classnames4.default)("".concat(prefixCls, "-title"), {
selected: selected && isSelected,
disabled: item.disabled
})
className: ["".concat(prefixCls, "-title"), selected && isSelected ? 'selected' : null, item.disabled ? 'disabled' : null].filter(Boolean).join(' ').trim()
}, renderTitle ? renderTitle(item, {

@@ -362,3 +352,3 @@ selected: selected,

elementProps = (0, _objectWithoutProperties2.default)(_this$props4, ["prefixCls", "className", "icon", "data", "openKeys", "selectedKeys", "isSelected", "autoExpandParent", "defaultExpandAll", "checkStrictly", "showLine", "iconAnimation", "renderTitle", "onExpand", "onSelected"]);
var cls = (0, _classnames4.default)(className, prefixCls, (0, _defineProperty2.default)({}, "".concat(prefixCls, "-line"), showLine));
var cls = [className, prefixCls, showLine ? "".concat(prefixCls, "-line") : null].filter(Boolean).join(' ').trim();
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({

@@ -365,0 +355,0 @@ className: cls

@@ -1,1 +0,1 @@

{"version":3,"sources":["../../src/index.tsx"],"names":["noop","undefined","isContained","a","b","Array","length","aStr","toString","i","len","indexOf","getChildKeys","childs","result","forEach","item","push","key","children","concat","getParentKeys","parent","getParentSelectKeys","selectedKeys","Tree","props","onExit","node","style","height","scrollHeight","onExiting","onEnter","isAppearing","onEntering","onEntered","state","openKeys","halfCheckedKeys","defaultExpandAll","data","setState","nextProps","evn","onSelected","multiple","checkStrictly","selKeys","findKey","find","v","selected","filter","val","from","Set","onExpand","currentKeys","cls","currentTarget","className","replace","expanded","level","prefixCls","renderTitle","icon","iconAnimation","isSelected","isOpen","map","idx","noChild","itemIsOpen","iconItem","childKeys","checkedKeys","isHalfChecked","onItemClick","bind","onItemSelected","disabled","label","renderTreeNode","autoExpandParent","showLine","elementProps","React","Component","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport Icon, { IconProps } from '@uiw/react-icon';\nimport { IProps, HTMLDivProps } from '@uiw/utils';\nimport './style/index.less';\n\nexport type TreeRenderTitleNode<T> = {\n selected?: boolean;\n noChild?: boolean;\n isHalfChecked?: boolean;\n openKeys?: TreeProps<T>['openKeys'];\n selectedKeys?: TreeProps<T>['selectedKeys'];\n};\n\nexport interface TreeProps<T> extends IProps, HTMLDivProps {\n icon?: IconProps<T>['type'];\n data?: TreeData[];\n openKeys?: TreeData['key'][];\n selectedKeys?: TreeData['key'][];\n defaultExpandAll?: boolean;\n /**\n * 是否自动展开父节点\n */\n autoExpandParent?: boolean;\n /**\n * 是否展示连接线\n */\n showLine?: boolean;\n iconAnimation?: boolean;\n isSelected?: boolean;\n /**\n * 子节点受父节点控制设置 `true`,需要配合 `multiple` 参数使用。\n */\n checkStrictly?: boolean;\n /**\n * 支持点选多个节点\n */\n multiple?: boolean;\n renderTitle?: (\n item: TreeData,\n node: TreeRenderTitleNode<T>,\n ) => React.ReactElement;\n onExpand?: (\n key: TreeData['key'],\n expanded: boolean,\n item: TreeData,\n evn: React.MouseEvent<HTMLElement>,\n ) => void;\n onSelected?: (\n keys: TreeData['key'][],\n key: TreeData['key'],\n selected: boolean,\n item: TreeData,\n evn: React.MouseEvent<HTMLElement>,\n ) => void;\n}\n\nexport interface TreeData {\n label?: React.ReactNode;\n children?: TreeData[];\n key?: string | number;\n [keyName: string]: any;\n}\n\nexport interface TreeState {\n openKeys?: TreeData['key'][];\n selectedKeys?: TreeData['key'][];\n halfCheckedKeys?: TreeData['key'][];\n}\n\nconst noop = () => undefined;\n\n/**\n * a contains b\n * @param {Array} a\n * @param {Array} b\n */\nconst isContained = (a: any[], b: any[]) => {\n if (!(a instanceof Array) || !(b instanceof Array)) return false;\n if (a.length < b.length) return false;\n const aStr = a.toString();\n for (let i = 0, len = b.length; i < len; i += 1) {\n if (aStr.indexOf(b[i]) === -1) return false;\n }\n return true;\n};\n\nconst getChildKeys = (\n childs: TreeData[] = [],\n result: TreeData['key'][] = [],\n): TreeData['key'][] => {\n childs.forEach((item) => {\n result.push(item.key as string | number);\n if (item.children && item.children.length > 0) {\n result = result.concat(getChildKeys(item.children));\n }\n });\n return result;\n};\n\nconst getParentKeys = (\n childs: TreeData = {},\n result: TreeData['key'][] = [],\n) => {\n if (childs.key) {\n result.push(childs.key);\n }\n if (childs.parent) {\n result = getParentKeys(childs.parent, result);\n }\n return result;\n};\n\nconst getParentSelectKeys = (\n childs: TreeData = {},\n selectedKeys: TreeData['key'][] = [],\n result: TreeData['key'][] = [],\n) => {\n if (\n childs.key &&\n childs.children &&\n isContained(selectedKeys, getChildKeys(childs.children))\n ) {\n result.push(childs.key);\n if (childs.parent && !childs.parent.parent) {\n if (isContained(selectedKeys, getChildKeys(childs.children))) {\n selectedKeys = selectedKeys.concat(result);\n }\n if (isContained(selectedKeys, getChildKeys(childs.parent.children))) {\n result.push(childs.parent.key);\n }\n }\n }\n if (childs.parent) {\n result = getParentSelectKeys(childs.parent, selectedKeys, result);\n }\n return result;\n};\n\nexport default class Tree<T> extends React.Component<TreeProps<T>, TreeState> {\n public static defaultProps: TreeProps<{}> = {\n prefixCls: 'w-tree',\n icon: 'caret-right',\n data: [],\n openKeys: [],\n selectedKeys: [],\n defaultExpandAll: false,\n showLine: false,\n iconAnimation: true,\n isSelected: true,\n checkStrictly: false,\n multiple: false,\n onExpand: noop,\n onSelected: noop,\n };\n constructor(props: TreeProps<T>) {\n super(props);\n this.state = {\n openKeys: props.openKeys || [],\n selectedKeys: props.selectedKeys || [],\n halfCheckedKeys: props.selectedKeys || [],\n };\n }\n componentDidMount() {\n const { defaultExpandAll, data } = this.props;\n const openKeys = getChildKeys(data);\n if (defaultExpandAll) {\n this.setState({ openKeys });\n }\n }\n UNSAFE_componentWillReceiveProps(nextProps: TreeProps<T>) {\n if (nextProps.openKeys !== this.props.openKeys) {\n this.setState({ openKeys: nextProps.openKeys });\n }\n if (nextProps.selectedKeys !== this.props.selectedKeys) {\n this.setState({ selectedKeys: nextProps.selectedKeys });\n }\n }\n onItemSelected(item: TreeData, evn: React.MouseEvent<HTMLElement>) {\n const { onSelected, multiple, checkStrictly } = this.props;\n let selKeys = [...(this.state.selectedKeys as TreeData['key'][])];\n\n const findKey = selKeys.find((v) => v === item.key);\n let selected = false;\n if (!findKey) {\n selected = true;\n selKeys.push(item.key);\n } else {\n selKeys = selKeys.filter((v) => v !== item.key);\n }\n if (checkStrictly) {\n if (!findKey) {\n selKeys = selKeys.concat(\n getChildKeys(item.children).filter(\n (val) => selKeys.indexOf(val) === -1,\n ),\n );\n selKeys = selKeys.concat(getParentSelectKeys(item, selKeys));\n selKeys = Array.from(new Set(selKeys)); // Remove duplicates.\n } else {\n selKeys = selKeys.filter(\n (val) => getChildKeys(item.children).indexOf(val) === -1,\n );\n selKeys = selKeys.filter(\n (val) => getParentKeys(item.parent).indexOf(val) === -1,\n );\n }\n }\n if (!multiple) {\n selKeys = !findKey ? [item.key] : [];\n }\n this.setState({ selectedKeys: selKeys }, () => {\n onSelected && onSelected(selKeys, item.key, selected, item, evn);\n });\n }\n onExit = (node: HTMLElement) => {\n node.style.height = `${node.scrollHeight}px`;\n };\n onExiting = (node: HTMLElement) => {\n node.style.height = '1px';\n };\n onEnter = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = '1px';\n };\n onEntering = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = `${node.scrollHeight}px`;\n };\n onEntered = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = 'initial';\n };\n onItemClick(item: TreeData, evn: React.MouseEvent<HTMLElement>) {\n if (!item.children) {\n return;\n }\n const { onExpand } = this.props;\n const { openKeys } = this.state;\n let currentKeys = [...(openKeys as TreeData['key'][])];\n const key = currentKeys.find((v) => v === item.key);\n const cls = evn.currentTarget.className.replace(/(\\s)open/g, '');\n let expanded = false;\n if (!key && item.key) {\n currentKeys.push(item.key);\n evn.currentTarget.className = classnames(cls, 'open');\n expanded = true;\n } else {\n currentKeys = currentKeys.filter((v) => v !== item.key);\n evn.currentTarget.className = cls;\n }\n this.setState({ openKeys: currentKeys }, () => {\n onExpand && onExpand(item.key, expanded, item, evn);\n });\n }\n renderTreeNode(data: TreeData[], level: number, parent?: TreeData) {\n const {\n prefixCls,\n renderTitle,\n icon,\n iconAnimation,\n isSelected,\n } = this.props;\n const { openKeys, selectedKeys } = this.state;\n let isOpen = false;\n\n if (parent && parent.key) {\n isOpen = !!(openKeys && openKeys.indexOf(parent.key) > -1);\n }\n return (\n <CSSTransition\n classNames={prefixCls}\n in={isOpen}\n timeout={200}\n onExit={this.onExit}\n onExiting={this.onExiting}\n onEnter={this.onEnter}\n onEntered={this.onEntered}\n onEntering={this.onEntering}\n >\n <ul\n className={classnames({\n [`${prefixCls}-open`]: level !== 1 && isOpen,\n [`${prefixCls}-close`]: level !== 1 && !isOpen,\n })}\n >\n {data.map((item, idx: number) => {\n item.parent = parent;\n const selected = !!(\n selectedKeys && selectedKeys.indexOf(item.key) > -1\n );\n const noChild = !item.children;\n const itemIsOpen =\n openKeys && openKeys.indexOf(item.key) > -1 && !!item.children;\n const iconItem =\n typeof icon === 'function'\n ? icon(item, {\n isOpen: !!itemIsOpen,\n noChild,\n openKeys,\n selectedKeys,\n })\n : icon;\n const childKeys = noChild ? [] : getChildKeys(item.children);\n const checkedKeys = selectedKeys\n ? selectedKeys.filter((key) => childKeys.indexOf(key) > -1)\n : [];\n const isHalfChecked =\n checkedKeys.length > 0 && childKeys.length !== checkedKeys.length;\n return (\n <li key={idx}>\n <div className={classnames(`${prefixCls}-label`)}>\n <span\n className={`${prefixCls}-switcher`}\n onClick={this.onItemClick.bind(this, item)}\n >\n <Icon\n type={iconItem || 'caret-right'}\n className={classnames({\n [`${prefixCls}-switcher-noop`]:\n typeof icon === 'function',\n 'no-child': noChild,\n 'no-animation': !iconAnimation,\n open: itemIsOpen,\n })}\n />\n </span>\n <div\n onClick={this.onItemSelected.bind(this, item)}\n className={classnames(`${prefixCls}-title`, {\n selected: selected && isSelected,\n disabled: item.disabled,\n })}\n >\n {renderTitle ? (\n renderTitle(item, {\n selected,\n noChild,\n openKeys,\n isHalfChecked,\n selectedKeys,\n })\n ) : (\n <span>{item.label}</span>\n )}\n </div>\n </div>\n {item.children &&\n this.renderTreeNode(item.children, level + 1, item)}\n </li>\n );\n })}\n </ul>\n </CSSTransition>\n );\n }\n render() {\n const {\n prefixCls,\n className,\n icon,\n data,\n openKeys,\n selectedKeys,\n isSelected,\n autoExpandParent,\n defaultExpandAll,\n checkStrictly,\n showLine,\n iconAnimation,\n renderTitle,\n onExpand,\n onSelected,\n ...elementProps\n } = this.props;\n const cls = classnames(className, prefixCls, {\n [`${prefixCls}-line`]: showLine,\n });\n return (\n <div className={cls} {...elementProps}>\n {this.renderTreeNode(data as TreeData[], 1)}\n </div>\n );\n }\n}\n"]}
{"version":3,"sources":["../../src/index.tsx"],"names":["noop","undefined","isContained","a","b","Array","length","aStr","toString","i","len","indexOf","getChildKeys","childs","result","forEach","item","push","key","children","concat","getParentKeys","parent","getParentSelectKeys","selectedKeys","Tree","props","onExit","node","style","height","scrollHeight","onExiting","onEnter","isAppearing","onEntering","onEntered","state","openKeys","halfCheckedKeys","defaultExpandAll","data","setState","nextProps","evn","onSelected","multiple","checkStrictly","selKeys","findKey","find","v","selected","filter","val","from","Set","onExpand","currentKeys","cls","currentTarget","className","replace","expanded","Boolean","join","trim","level","prefixCls","renderTitle","icon","iconAnimation","isSelected","isOpen","map","idx","noChild","itemIsOpen","iconItem","childKeys","checkedKeys","isHalfChecked","onItemClick","bind","onItemSelected","disabled","label","renderTreeNode","autoExpandParent","showLine","elementProps","React","Component","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAoEA,IAAMA,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAMC,SAAN;AAAA,CAAb;AAEA;;;;;;;AAKA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAWC,CAAX,EAAwB;AAC1C,MAAI,EAAED,CAAC,YAAYE,KAAf,KAAyB,EAAED,CAAC,YAAYC,KAAf,CAA7B,EAAoD,OAAO,KAAP;AACpD,MAAIF,CAAC,CAACG,MAAF,GAAWF,CAAC,CAACE,MAAjB,EAAyB,OAAO,KAAP;AACzB,MAAMC,IAAI,GAAGJ,CAAC,CAACK,QAAF,EAAb;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAR,EAAWC,GAAG,GAAGN,CAAC,CAACE,MAAxB,EAAgCG,CAAC,GAAGC,GAApC,EAAyCD,CAAC,IAAI,CAA9C,EAAiD;AAC/C,QAAIF,IAAI,CAACI,OAAL,CAAaP,CAAC,CAACK,CAAD,CAAd,MAAuB,CAAC,CAA5B,EAA+B,OAAO,KAAP;AAChC;;AACD,SAAO,IAAP;AACD,CARD;;AAUA,IAAMG,YAAY,GAAG,SAAfA,YAAe,GAGG;AAAA,MAFtBC,MAEsB,uEAFD,EAEC;AAAA,MADtBC,MACsB,uEADM,EACN;AACtBD,EAAAA,MAAM,CAACE,OAAP,CAAe,UAACC,IAAD,EAAU;AACvBF,IAAAA,MAAM,CAACG,IAAP,CAAYD,IAAI,CAACE,GAAjB;;AACA,QAAIF,IAAI,CAACG,QAAL,IAAiBH,IAAI,CAACG,QAAL,CAAcb,MAAd,GAAuB,CAA5C,EAA+C;AAC7CQ,MAAAA,MAAM,GAAGA,MAAM,CAACM,MAAP,CAAcR,YAAY,CAACI,IAAI,CAACG,QAAN,CAA1B,CAAT;AACD;AACF,GALD;AAMA,SAAOL,MAAP;AACD,CAXD;;AAaA,IAAMO,aAAa,GAAG,SAAhBA,aAAgB,GAGjB;AAAA,MAFHR,MAEG,uEAFgB,EAEhB;AAAA,MADHC,MACG,uEADyB,EACzB;;AACH,MAAID,MAAM,CAACK,GAAX,EAAgB;AACdJ,IAAAA,MAAM,CAACG,IAAP,CAAYJ,MAAM,CAACK,GAAnB;AACD;;AACD,MAAIL,MAAM,CAACS,MAAX,EAAmB;AACjBR,IAAAA,MAAM,GAAGO,aAAa,CAACR,MAAM,CAACS,MAAR,EAAgBR,MAAhB,CAAtB;AACD;;AACD,SAAOA,MAAP;AACD,CAXD;;AAaA,IAAMS,mBAAmB,GAAG,SAAtBA,mBAAsB,GAIvB;AAAA,MAHHV,MAGG,uEAHgB,EAGhB;AAAA,MAFHW,YAEG,uEAF+B,EAE/B;AAAA,MADHV,MACG,uEADyB,EACzB;;AACH,MACED,MAAM,CAACK,GAAP,IACAL,MAAM,CAACM,QADP,IAEAjB,WAAW,CAACsB,YAAD,EAAeZ,YAAY,CAACC,MAAM,CAACM,QAAR,CAA3B,CAHb,EAIE;AACAL,IAAAA,MAAM,CAACG,IAAP,CAAYJ,MAAM,CAACK,GAAnB;;AACA,QAAIL,MAAM,CAACS,MAAP,IAAiB,CAACT,MAAM,CAACS,MAAP,CAAcA,MAApC,EAA4C;AAC1C,UAAIpB,WAAW,CAACsB,YAAD,EAAeZ,YAAY,CAACC,MAAM,CAACM,QAAR,CAA3B,CAAf,EAA8D;AAC5DK,QAAAA,YAAY,GAAGA,YAAY,CAACJ,MAAb,CAAoBN,MAApB,CAAf;AACD;;AACD,UAAIZ,WAAW,CAACsB,YAAD,EAAeZ,YAAY,CAACC,MAAM,CAACS,MAAP,CAAcH,QAAf,CAA3B,CAAf,EAAqE;AACnEL,QAAAA,MAAM,CAACG,IAAP,CAAYJ,MAAM,CAACS,MAAP,CAAcJ,GAA1B;AACD;AACF;AACF;;AACD,MAAIL,MAAM,CAACS,MAAX,EAAmB;AACjBR,IAAAA,MAAM,GAAGS,mBAAmB,CAACV,MAAM,CAACS,MAAR,EAAgBE,YAAhB,EAA8BV,MAA9B,CAA5B;AACD;;AACD,SAAOA,MAAP;AACD,CAxBD;;IA0BqBW,I;;;;;AAgBnB,gBAAYC,KAAZ,EAAiC;AAAA;;AAAA;AAC/B,8BAAMA,KAAN;;AAD+B,UA4DjCC,MA5DiC,GA4DxB,UAACC,IAAD,EAAuB;AAC9BA,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,aAAuBF,IAAI,CAACG,YAA5B;AACD,KA9DgC;;AAAA,UA+DjCC,SA/DiC,GA+DrB,UAACJ,IAAD,EAAuB;AACjCA,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,GAAoB,KAApB;AACD,KAjEgC;;AAAA,UAkEjCG,OAlEiC,GAkEvB,UAACL,IAAD,EAAoBM,WAApB,EAA6C;AACrDN,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,GAAoB,KAApB;AACD,KApEgC;;AAAA,UAqEjCK,UArEiC,GAqEpB,UAACP,IAAD,EAAoBM,WAApB,EAA6C;AACxDN,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,aAAuBF,IAAI,CAACG,YAA5B;AACD,KAvEgC;;AAAA,UAwEjCK,SAxEiC,GAwErB,UAACR,IAAD,EAAoBM,WAApB,EAA6C;AACvDN,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,GAAoB,SAApB;AACD,KA1EgC;;AAE/B,UAAKO,KAAL,GAAa;AACXC,MAAAA,QAAQ,EAAEZ,KAAK,CAACY,QAAN,IAAkB,EADjB;AAEXd,MAAAA,YAAY,EAAEE,KAAK,CAACF,YAAN,IAAsB,EAFzB;AAGXe,MAAAA,eAAe,EAAEb,KAAK,CAACF,YAAN,IAAsB;AAH5B,KAAb;AAF+B;AAOhC;;;;wCACmB;AAAA,wBACiB,KAAKE,KADtB;AAAA,UACVc,gBADU,eACVA,gBADU;AAAA,UACQC,IADR,eACQA,IADR;AAElB,UAAMH,QAAQ,GAAG1B,YAAY,CAAC6B,IAAD,CAA7B;;AACA,UAAID,gBAAJ,EAAsB;AACpB,aAAKE,QAAL,CAAc;AAAEJ,UAAAA,QAAQ,EAARA;AAAF,SAAd;AACD;AACF;;;qDACgCK,S,EAAyB;AACxD,UAAIA,SAAS,CAACL,QAAV,KAAuB,KAAKZ,KAAL,CAAWY,QAAtC,EAAgD;AAC9C,aAAKI,QAAL,CAAc;AAAEJ,UAAAA,QAAQ,EAAEK,SAAS,CAACL;AAAtB,SAAd;AACD;;AACD,UAAIK,SAAS,CAACnB,YAAV,KAA2B,KAAKE,KAAL,CAAWF,YAA1C,EAAwD;AACtD,aAAKkB,QAAL,CAAc;AAAElB,UAAAA,YAAY,EAAEmB,SAAS,CAACnB;AAA1B,SAAd;AACD;AACF;;;mCACcR,I,EAAgB4B,G,EAAoC;AAAA,yBACjB,KAAKlB,KADY;AAAA,UACzDmB,UADyD,gBACzDA,UADyD;AAAA,UAC7CC,QAD6C,gBAC7CA,QAD6C;AAAA,UACnCC,aADmC,gBACnCA,aADmC;AAEjE,UAAIC,OAAO,oCAAQ,KAAKX,KAAL,CAAWb,YAAnB,CAAX;AAEA,UAAMyB,OAAO,GAAGD,OAAO,CAACE,IAAR,CAAa,UAACC,CAAD;AAAA,eAAOA,CAAC,KAAKnC,IAAI,CAACE,GAAlB;AAAA,OAAb,CAAhB;AACA,UAAIkC,QAAQ,GAAG,KAAf;;AACA,UAAI,CAACH,OAAL,EAAc;AACZG,QAAAA,QAAQ,GAAG,IAAX;AACAJ,QAAAA,OAAO,CAAC/B,IAAR,CAAaD,IAAI,CAACE,GAAlB;AACD,OAHD,MAGO;AACL8B,QAAAA,OAAO,GAAGA,OAAO,CAACK,MAAR,CAAe,UAACF,CAAD;AAAA,iBAAOA,CAAC,KAAKnC,IAAI,CAACE,GAAlB;AAAA,SAAf,CAAV;AACD;;AACD,UAAI6B,aAAJ,EAAmB;AACjB,YAAI,CAACE,OAAL,EAAc;AACZD,UAAAA,OAAO,GAAGA,OAAO,CAAC5B,MAAR,CACRR,YAAY,CAACI,IAAI,CAACG,QAAN,CAAZ,CAA4BkC,MAA5B,CACE,UAACC,GAAD;AAAA,mBAASN,OAAO,CAACrC,OAAR,CAAgB2C,GAAhB,MAAyB,CAAC,CAAnC;AAAA,WADF,CADQ,CAAV;AAKAN,UAAAA,OAAO,GAAGA,OAAO,CAAC5B,MAAR,CAAeG,mBAAmB,CAACP,IAAD,EAAOgC,OAAP,CAAlC,CAAV;AACAA,UAAAA,OAAO,GAAG3C,KAAK,CAACkD,IAAN,CAAW,IAAIC,GAAJ,CAAQR,OAAR,CAAX,CAAV,CAPY,CAO4B;AACzC,SARD,MAQO;AACLA,UAAAA,OAAO,GAAGA,OAAO,CAACK,MAAR,CACR,UAACC,GAAD;AAAA,mBAAS1C,YAAY,CAACI,IAAI,CAACG,QAAN,CAAZ,CAA4BR,OAA5B,CAAoC2C,GAApC,MAA6C,CAAC,CAAvD;AAAA,WADQ,CAAV;AAGAN,UAAAA,OAAO,GAAGA,OAAO,CAACK,MAAR,CACR,UAACC,GAAD;AAAA,mBAASjC,aAAa,CAACL,IAAI,CAACM,MAAN,CAAb,CAA2BX,OAA3B,CAAmC2C,GAAnC,MAA4C,CAAC,CAAtD;AAAA,WADQ,CAAV;AAGD;AACF;;AACD,UAAI,CAACR,QAAL,EAAe;AACbE,QAAAA,OAAO,GAAG,CAACC,OAAD,GAAW,CAACjC,IAAI,CAACE,GAAN,CAAX,GAAwB,EAAlC;AACD;;AACD,WAAKwB,QAAL,CAAc;AAAElB,QAAAA,YAAY,EAAEwB;AAAhB,OAAd,EAAyC,YAAM;AAC7CH,QAAAA,UAAU,IAAIA,UAAU,CAACG,OAAD,EAAUhC,IAAI,CAACE,GAAf,EAAoBkC,QAApB,EAA8BpC,IAA9B,EAAoC4B,GAApC,CAAxB;AACD,OAFD;AAGD;;;gCAgBW5B,I,EAAgB4B,G,EAAoC;AAC9D,UAAI,CAAC5B,IAAI,CAACG,QAAV,EAAoB;AAClB;AACD;;AAH6D,UAItDsC,QAJsD,GAIzC,KAAK/B,KAJoC,CAItD+B,QAJsD;AAAA,UAKtDnB,QALsD,GAKzC,KAAKD,KALoC,CAKtDC,QALsD;AAM9D,UAAIoB,WAAW,oCAAQpB,QAAR,CAAf;AACA,UAAMpB,GAAG,GAAGwC,WAAW,CAACR,IAAZ,CAAiB,UAACC,CAAD;AAAA,eAAOA,CAAC,KAAKnC,IAAI,CAACE,GAAlB;AAAA,OAAjB,CAAZ;AACA,UAAMyC,GAAG,GAAGf,GAAG,CAACgB,aAAJ,CAAkBC,SAAlB,CAA4BC,OAA5B,CAAoC,WAApC,EAAiD,EAAjD,CAAZ;AACA,UAAIC,QAAQ,GAAG,KAAf;;AACA,UAAI,CAAC7C,GAAD,IAAQF,IAAI,CAACE,GAAjB,EAAsB;AACpBwC,QAAAA,WAAW,CAACzC,IAAZ,CAAiBD,IAAI,CAACE,GAAtB;AACA0B,QAAAA,GAAG,CAACgB,aAAJ,CAAkBC,SAAlB,GAA8B,CAACF,GAAD,EAAM,MAAN,EAC3BN,MAD2B,CACpBW,OADoB,EAE3BC,IAF2B,CAEtB,GAFsB,EAG3BC,IAH2B,EAA9B;AAIAH,QAAAA,QAAQ,GAAG,IAAX;AACD,OAPD,MAOO;AACLL,QAAAA,WAAW,GAAGA,WAAW,CAACL,MAAZ,CAAmB,UAACF,CAAD;AAAA,iBAAOA,CAAC,KAAKnC,IAAI,CAACE,GAAlB;AAAA,SAAnB,CAAd;AACA0B,QAAAA,GAAG,CAACgB,aAAJ,CAAkBC,SAAlB,GAA8BF,GAA9B;AACD;;AACD,WAAKjB,QAAL,CAAc;AAAEJ,QAAAA,QAAQ,EAAEoB;AAAZ,OAAd,EAAyC,YAAM;AAC7CD,QAAAA,QAAQ,IAAIA,QAAQ,CAACzC,IAAI,CAACE,GAAN,EAAW6C,QAAX,EAAqB/C,IAArB,EAA2B4B,GAA3B,CAApB;AACD,OAFD;AAGD;;;mCACcH,I,EAAkB0B,K,EAAe7C,M,EAAmB;AAAA;;AAAA,yBAO7D,KAAKI,KAPwD;AAAA,UAE/D0C,SAF+D,gBAE/DA,SAF+D;AAAA,UAG/DC,WAH+D,gBAG/DA,WAH+D;AAAA,UAI/DC,IAJ+D,gBAI/DA,IAJ+D;AAAA,UAK/DC,aAL+D,gBAK/DA,aAL+D;AAAA,UAM/DC,UAN+D,gBAM/DA,UAN+D;AAAA,wBAQ9B,KAAKnC,KARyB;AAAA,UAQzDC,QARyD,eAQzDA,QARyD;AAAA,UAQ/Cd,YAR+C,eAQ/CA,YAR+C;AASjE,UAAIiD,MAAM,GAAG,KAAb;;AAEA,UAAInD,MAAM,IAAIA,MAAM,CAACJ,GAArB,EAA0B;AACxBuD,QAAAA,MAAM,GAAG,CAAC,EAAEnC,QAAQ,IAAIA,QAAQ,CAAC3B,OAAT,CAAiBW,MAAM,CAACJ,GAAxB,IAA+B,CAAC,CAA9C,CAAV;AACD;;AACD,0BACE,6BAAC,mCAAD;AACE,QAAA,UAAU,EAAEkD,SADd;AAEE,QAAA,EAAE,EAAEK,MAFN;AAGE,QAAA,OAAO,EAAE,GAHX;AAIE,QAAA,MAAM,EAAE,KAAK9C,MAJf;AAKE,QAAA,SAAS,EAAE,KAAKK,SALlB;AAME,QAAA,OAAO,EAAE,KAAKC,OANhB;AAOE,QAAA,SAAS,EAAE,KAAKG,SAPlB;AAQE,QAAA,UAAU,EAAE,KAAKD;AARnB,sBAUE;AACE,QAAA,SAAS,EAAE,CACTgC,KAAK,KAAK,CAAV,IAAeM,MAAf,GAAwB,WAAIL,SAAJ,WAAxB,GAAgD,IADvC,EAETD,KAAK,KAAK,CAAV,IAAe,CAACM,MAAhB,GAAyB,WAAIL,SAAJ,YAAzB,GAAkD,IAFzC,EAIRf,MAJQ,CAIDW,OAJC,EAKRC,IALQ,CAKH,GALG,EAMRC,IANQ;AADb,SASGzB,IAAI,CAACiC,GAAL,CAAS,UAAC1D,IAAD,EAAO2D,GAAP,EAAuB;AAC/B3D,QAAAA,IAAI,CAACM,MAAL,GAAcA,MAAd;AACA,YAAM8B,QAAQ,GAAG,CAAC,EAChB5B,YAAY,IAAIA,YAAY,CAACb,OAAb,CAAqBK,IAAI,CAACE,GAA1B,IAAiC,CAAC,CADlC,CAAlB;AAGA,YAAM0D,OAAO,GAAG,CAAC5D,IAAI,CAACG,QAAtB;AACA,YAAM0D,UAAU,GACdvC,QAAQ,IAAIA,QAAQ,CAAC3B,OAAT,CAAiBK,IAAI,CAACE,GAAtB,IAA6B,CAAC,CAA1C,IAA+C,CAAC,CAACF,IAAI,CAACG,QADxD;AAEA,YAAM2D,QAAQ,GACZ,OAAOR,IAAP,KAAgB,UAAhB,GACIA,IAAI,CAACtD,IAAD,EAAO;AACTyD,UAAAA,MAAM,EAAE,CAAC,CAACI,UADD;AAETD,UAAAA,OAAO,EAAPA,OAFS;AAGTtC,UAAAA,QAAQ,EAARA,QAHS;AAITd,UAAAA,YAAY,EAAZA;AAJS,SAAP,CADR,GAOI8C,IARN;AASA,YAAMS,SAAS,GAAGH,OAAO,GAAG,EAAH,GAAQhE,YAAY,CAACI,IAAI,CAACG,QAAN,CAA7C;AACA,YAAM6D,WAAW,GAAGxD,YAAY,GAC5BA,YAAY,CAAC6B,MAAb,CAAoB,UAACnC,GAAD;AAAA,iBAAS6D,SAAS,CAACpE,OAAV,CAAkBO,GAAlB,IAAyB,CAAC,CAAnC;AAAA,SAApB,CAD4B,GAE5B,EAFJ;AAGA,YAAM+D,aAAa,GACjBD,WAAW,CAAC1E,MAAZ,GAAqB,CAArB,IAA0ByE,SAAS,CAACzE,MAAV,KAAqB0E,WAAW,CAAC1E,MAD7D;AAEA,4BACE;AAAI,UAAA,GAAG,EAAEqE;AAAT,wBACE;AAAK,UAAA,SAAS,YAAKP,SAAL;AAAd,wBACE;AACE,UAAA,SAAS,YAAKA,SAAL,cADX;AAEE,UAAA,OAAO,EAAE,MAAI,CAACc,WAAL,CAAiBC,IAAjB,CAAsB,MAAtB,EAA4BnE,IAA5B;AAFX,wBAIE,6BAAC,kBAAD;AACE,UAAA,IAAI,EAAE8D,QAAQ,IAAI,aADpB;AAEE,UAAA,SAAS,EAAE,CACT,OAAOR,IAAP,KAAgB,UAAhB,aACOF,SADP,sBAEI,IAHK,EAITQ,OAAO,GAAG,UAAH,GAAgB,IAJd,EAKT,CAACL,aAAD,GAAiB,cAAjB,GAAkC,IALzB,EAMTM,UAAU,GAAG,MAAH,GAAY,IANb,EAQRxB,MARQ,CAQDW,OARC,EASRC,IATQ,CASH,GATG,EAURC,IAVQ;AAFb,UAJF,CADF,eAoBE;AACE,UAAA,OAAO,EAAE,MAAI,CAACkB,cAAL,CAAoBD,IAApB,CAAyB,MAAzB,EAA+BnE,IAA/B,CADX;AAEE,UAAA,SAAS,EAAE,WACNoD,SADM,aAEThB,QAAQ,IAAIoB,UAAZ,GAAyB,UAAzB,GAAsC,IAF7B,EAGTxD,IAAI,CAACqE,QAAL,GAAgB,UAAhB,GAA6B,IAHpB,EAKRhC,MALQ,CAKDW,OALC,EAMRC,IANQ,CAMH,GANG,EAORC,IAPQ;AAFb,WAWGG,WAAW,GACVA,WAAW,CAACrD,IAAD,EAAO;AAChBoC,UAAAA,QAAQ,EAARA,QADgB;AAEhBwB,UAAAA,OAAO,EAAPA,OAFgB;AAGhBtC,UAAAA,QAAQ,EAARA,QAHgB;AAIhB2C,UAAAA,aAAa,EAAbA,aAJgB;AAKhBzD,UAAAA,YAAY,EAAZA;AALgB,SAAP,CADD,gBASV,2CAAOR,IAAI,CAACsE,KAAZ,CApBJ,CApBF,CADF,EA6CGtE,IAAI,CAACG,QAAL,IACC,MAAI,CAACoE,cAAL,CAAoBvE,IAAI,CAACG,QAAzB,EAAmCgD,KAAK,GAAG,CAA3C,EAA8CnD,IAA9C,CA9CJ,CADF;AAkDD,OAzEA,CATH,CAVF,CADF;AAiGD;;;6BACQ;AAAA,yBAkBH,KAAKU,KAlBF;AAAA,UAEL0C,SAFK,gBAELA,SAFK;AAAA,UAGLP,SAHK,gBAGLA,SAHK;AAAA,UAILS,IAJK,gBAILA,IAJK;AAAA,UAKL7B,IALK,gBAKLA,IALK;AAAA,UAMLH,QANK,gBAMLA,QANK;AAAA,UAOLd,YAPK,gBAOLA,YAPK;AAAA,UAQLgD,UARK,gBAQLA,UARK;AAAA,UASLgB,gBATK,gBASLA,gBATK;AAAA,UAULhD,gBAVK,gBAULA,gBAVK;AAAA,UAWLO,aAXK,gBAWLA,aAXK;AAAA,UAYL0C,QAZK,gBAYLA,QAZK;AAAA,UAaLlB,aAbK,gBAaLA,aAbK;AAAA,UAcLF,WAdK,gBAcLA,WAdK;AAAA,UAeLZ,QAfK,gBAeLA,QAfK;AAAA,UAgBLZ,UAhBK,gBAgBLA,UAhBK;AAAA,UAiBF6C,YAjBE;AAmBP,UAAM/B,GAAG,GAAG,CAACE,SAAD,EAAYO,SAAZ,EAAuBqB,QAAQ,aAAMrB,SAAN,aAAyB,IAAxD,EACTf,MADS,CACFW,OADE,EAETC,IAFS,CAEJ,GAFI,EAGTC,IAHS,EAAZ;AAIA,0BACE;AAAK,QAAA,SAAS,EAAEP;AAAhB,SAAyB+B,YAAzB,GACG,KAAKH,cAAL,CAAoB9C,IAApB,EAAwC,CAAxC,CADH,CADF;AAKD;;;EAhQkCkD,eAAMC,S;;;AAAtBnE,I,CACLoE,Y,GAA8B;AAC1CzB,EAAAA,SAAS,EAAE,QAD+B;AAE1CE,EAAAA,IAAI,EAAE,aAFoC;AAG1C7B,EAAAA,IAAI,EAAE,EAHoC;AAI1CH,EAAAA,QAAQ,EAAE,EAJgC;AAK1Cd,EAAAA,YAAY,EAAE,EAL4B;AAM1CgB,EAAAA,gBAAgB,EAAE,KANwB;AAO1CiD,EAAAA,QAAQ,EAAE,KAPgC;AAQ1ClB,EAAAA,aAAa,EAAE,IAR2B;AAS1CC,EAAAA,UAAU,EAAE,IAT8B;AAU1CzB,EAAAA,aAAa,EAAE,KAV2B;AAW1CD,EAAAA,QAAQ,EAAE,KAXgC;AAY1CW,EAAAA,QAAQ,EAAEzD,IAZgC;AAa1C6C,EAAAA,UAAU,EAAE7C;AAb8B,C","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport Icon, { IconProps } from '@uiw/react-icon';\nimport { IProps, HTMLDivProps } from '@uiw/utils';\nimport './style/index.less';\n\nexport type TreeRenderTitleNode<T> = {\n selected?: boolean;\n noChild?: boolean;\n isHalfChecked?: boolean;\n openKeys?: TreeProps<T>['openKeys'];\n selectedKeys?: TreeProps<T>['selectedKeys'];\n};\n\nexport interface TreeProps<T> extends IProps, HTMLDivProps {\n icon?: IconProps<T>['type'];\n data?: TreeData[];\n openKeys?: TreeData['key'][];\n selectedKeys?: TreeData['key'][];\n defaultExpandAll?: boolean;\n /**\n * 是否自动展开父节点\n */\n autoExpandParent?: boolean;\n /**\n * 是否展示连接线\n */\n showLine?: boolean;\n iconAnimation?: boolean;\n isSelected?: boolean;\n /**\n * 子节点受父节点控制设置 `true`,需要配合 `multiple` 参数使用。\n */\n checkStrictly?: boolean;\n /**\n * 支持点选多个节点\n */\n multiple?: boolean;\n renderTitle?: (\n item: TreeData,\n node: TreeRenderTitleNode<T>,\n ) => React.ReactElement;\n onExpand?: (\n key: TreeData['key'],\n expanded: boolean,\n item: TreeData,\n evn: React.MouseEvent<HTMLElement>,\n ) => void;\n onSelected?: (\n keys: TreeData['key'][],\n key: TreeData['key'],\n selected: boolean,\n item: TreeData,\n evn: React.MouseEvent<HTMLElement>,\n ) => void;\n}\n\nexport interface TreeData {\n label?: React.ReactNode;\n children?: TreeData[];\n key?: string | number;\n [keyName: string]: any;\n}\n\nexport interface TreeState {\n openKeys?: TreeData['key'][];\n selectedKeys?: TreeData['key'][];\n halfCheckedKeys?: TreeData['key'][];\n}\n\nconst noop = () => undefined;\n\n/**\n * a contains b\n * @param {Array} a\n * @param {Array} b\n */\nconst isContained = (a: any[], b: any[]) => {\n if (!(a instanceof Array) || !(b instanceof Array)) return false;\n if (a.length < b.length) return false;\n const aStr = a.toString();\n for (let i = 0, len = b.length; i < len; i += 1) {\n if (aStr.indexOf(b[i]) === -1) return false;\n }\n return true;\n};\n\nconst getChildKeys = (\n childs: TreeData[] = [],\n result: TreeData['key'][] = [],\n): TreeData['key'][] => {\n childs.forEach((item) => {\n result.push(item.key as string | number);\n if (item.children && item.children.length > 0) {\n result = result.concat(getChildKeys(item.children));\n }\n });\n return result;\n};\n\nconst getParentKeys = (\n childs: TreeData = {},\n result: TreeData['key'][] = [],\n) => {\n if (childs.key) {\n result.push(childs.key);\n }\n if (childs.parent) {\n result = getParentKeys(childs.parent, result);\n }\n return result;\n};\n\nconst getParentSelectKeys = (\n childs: TreeData = {},\n selectedKeys: TreeData['key'][] = [],\n result: TreeData['key'][] = [],\n) => {\n if (\n childs.key &&\n childs.children &&\n isContained(selectedKeys, getChildKeys(childs.children))\n ) {\n result.push(childs.key);\n if (childs.parent && !childs.parent.parent) {\n if (isContained(selectedKeys, getChildKeys(childs.children))) {\n selectedKeys = selectedKeys.concat(result);\n }\n if (isContained(selectedKeys, getChildKeys(childs.parent.children))) {\n result.push(childs.parent.key);\n }\n }\n }\n if (childs.parent) {\n result = getParentSelectKeys(childs.parent, selectedKeys, result);\n }\n return result;\n};\n\nexport default class Tree<T> extends React.Component<TreeProps<T>, TreeState> {\n public static defaultProps: TreeProps<{}> = {\n prefixCls: 'w-tree',\n icon: 'caret-right',\n data: [],\n openKeys: [],\n selectedKeys: [],\n defaultExpandAll: false,\n showLine: false,\n iconAnimation: true,\n isSelected: true,\n checkStrictly: false,\n multiple: false,\n onExpand: noop,\n onSelected: noop,\n };\n constructor(props: TreeProps<T>) {\n super(props);\n this.state = {\n openKeys: props.openKeys || [],\n selectedKeys: props.selectedKeys || [],\n halfCheckedKeys: props.selectedKeys || [],\n };\n }\n componentDidMount() {\n const { defaultExpandAll, data } = this.props;\n const openKeys = getChildKeys(data);\n if (defaultExpandAll) {\n this.setState({ openKeys });\n }\n }\n UNSAFE_componentWillReceiveProps(nextProps: TreeProps<T>) {\n if (nextProps.openKeys !== this.props.openKeys) {\n this.setState({ openKeys: nextProps.openKeys });\n }\n if (nextProps.selectedKeys !== this.props.selectedKeys) {\n this.setState({ selectedKeys: nextProps.selectedKeys });\n }\n }\n onItemSelected(item: TreeData, evn: React.MouseEvent<HTMLElement>) {\n const { onSelected, multiple, checkStrictly } = this.props;\n let selKeys = [...(this.state.selectedKeys as TreeData['key'][])];\n\n const findKey = selKeys.find((v) => v === item.key);\n let selected = false;\n if (!findKey) {\n selected = true;\n selKeys.push(item.key);\n } else {\n selKeys = selKeys.filter((v) => v !== item.key);\n }\n if (checkStrictly) {\n if (!findKey) {\n selKeys = selKeys.concat(\n getChildKeys(item.children).filter(\n (val) => selKeys.indexOf(val) === -1,\n ),\n );\n selKeys = selKeys.concat(getParentSelectKeys(item, selKeys));\n selKeys = Array.from(new Set(selKeys)); // Remove duplicates.\n } else {\n selKeys = selKeys.filter(\n (val) => getChildKeys(item.children).indexOf(val) === -1,\n );\n selKeys = selKeys.filter(\n (val) => getParentKeys(item.parent).indexOf(val) === -1,\n );\n }\n }\n if (!multiple) {\n selKeys = !findKey ? [item.key] : [];\n }\n this.setState({ selectedKeys: selKeys }, () => {\n onSelected && onSelected(selKeys, item.key, selected, item, evn);\n });\n }\n onExit = (node: HTMLElement) => {\n node.style.height = `${node.scrollHeight}px`;\n };\n onExiting = (node: HTMLElement) => {\n node.style.height = '1px';\n };\n onEnter = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = '1px';\n };\n onEntering = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = `${node.scrollHeight}px`;\n };\n onEntered = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = 'initial';\n };\n onItemClick(item: TreeData, evn: React.MouseEvent<HTMLElement>) {\n if (!item.children) {\n return;\n }\n const { onExpand } = this.props;\n const { openKeys } = this.state;\n let currentKeys = [...(openKeys as TreeData['key'][])];\n const key = currentKeys.find((v) => v === item.key);\n const cls = evn.currentTarget.className.replace(/(\\s)open/g, '');\n let expanded = false;\n if (!key && item.key) {\n currentKeys.push(item.key);\n evn.currentTarget.className = [cls, 'open']\n .filter(Boolean)\n .join(' ')\n .trim();\n expanded = true;\n } else {\n currentKeys = currentKeys.filter((v) => v !== item.key);\n evn.currentTarget.className = cls;\n }\n this.setState({ openKeys: currentKeys }, () => {\n onExpand && onExpand(item.key, expanded, item, evn);\n });\n }\n renderTreeNode(data: TreeData[], level: number, parent?: TreeData) {\n const {\n prefixCls,\n renderTitle,\n icon,\n iconAnimation,\n isSelected,\n } = this.props;\n const { openKeys, selectedKeys } = this.state;\n let isOpen = false;\n\n if (parent && parent.key) {\n isOpen = !!(openKeys && openKeys.indexOf(parent.key) > -1);\n }\n return (\n <CSSTransition\n classNames={prefixCls}\n in={isOpen}\n timeout={200}\n onExit={this.onExit}\n onExiting={this.onExiting}\n onEnter={this.onEnter}\n onEntered={this.onEntered}\n onEntering={this.onEntering}\n >\n <ul\n className={[\n level !== 1 && isOpen ? [`${prefixCls}-open`] : null,\n level !== 1 && !isOpen ? [`${prefixCls}-close`] : null,\n ]\n .filter(Boolean)\n .join(' ')\n .trim()}\n >\n {data.map((item, idx: number) => {\n item.parent = parent;\n const selected = !!(\n selectedKeys && selectedKeys.indexOf(item.key) > -1\n );\n const noChild = !item.children;\n const itemIsOpen =\n openKeys && openKeys.indexOf(item.key) > -1 && !!item.children;\n const iconItem =\n typeof icon === 'function'\n ? icon(item, {\n isOpen: !!itemIsOpen,\n noChild,\n openKeys,\n selectedKeys,\n })\n : icon;\n const childKeys = noChild ? [] : getChildKeys(item.children);\n const checkedKeys = selectedKeys\n ? selectedKeys.filter((key) => childKeys.indexOf(key) > -1)\n : [];\n const isHalfChecked =\n checkedKeys.length > 0 && childKeys.length !== checkedKeys.length;\n return (\n <li key={idx}>\n <div className={`${prefixCls}-label`}>\n <span\n className={`${prefixCls}-switcher`}\n onClick={this.onItemClick.bind(this, item)}\n >\n <Icon\n type={iconItem || 'caret-right'}\n className={[\n typeof icon === 'function'\n ? `${prefixCls}-switcher-noop`\n : null,\n noChild ? 'no-child' : null,\n !iconAnimation ? 'no-animation' : null,\n itemIsOpen ? 'open' : null,\n ]\n .filter(Boolean)\n .join(' ')\n .trim()}\n />\n </span>\n <div\n onClick={this.onItemSelected.bind(this, item)}\n className={[\n `${prefixCls}-title`,\n selected && isSelected ? 'selected' : null,\n item.disabled ? 'disabled' : null,\n ]\n .filter(Boolean)\n .join(' ')\n .trim()}\n >\n {renderTitle ? (\n renderTitle(item, {\n selected,\n noChild,\n openKeys,\n isHalfChecked,\n selectedKeys,\n })\n ) : (\n <span>{item.label}</span>\n )}\n </div>\n </div>\n {item.children &&\n this.renderTreeNode(item.children, level + 1, item)}\n </li>\n );\n })}\n </ul>\n </CSSTransition>\n );\n }\n render() {\n const {\n prefixCls,\n className,\n icon,\n data,\n openKeys,\n selectedKeys,\n isSelected,\n autoExpandParent,\n defaultExpandAll,\n checkStrictly,\n showLine,\n iconAnimation,\n renderTitle,\n onExpand,\n onSelected,\n ...elementProps\n } = this.props;\n const cls = [className, prefixCls, showLine ? `${prefixCls}-line` : null]\n .filter(Boolean)\n .join(' ')\n .trim();\n return (\n <div className={cls} {...elementProps}>\n {this.renderTreeNode(data as TreeData[], 1)}\n </div>\n );\n }\n}\n"]}
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";

@@ -10,3 +9,2 @@ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";

import React from 'react';
import classnames from 'classnames';
import { CSSTransition } from 'react-transition-group';

@@ -232,3 +230,3 @@ import Icon from '@uiw/react-icon';

currentKeys.push(item.key);
evn.currentTarget.className = classnames(cls, 'open');
evn.currentTarget.className = [cls, 'open'].filter(Boolean).join(' ').trim();
expanded = true;

@@ -251,4 +249,3 @@ } else {

value: function renderTreeNode(data, level, parent) {
var _classnames,
_this2 = this;
var _this2 = this;

@@ -280,6 +277,4 @@ var _this$props3 = this.props,

}, /*#__PURE__*/React.createElement("ul", {
className: classnames((_classnames = {}, _defineProperty(_classnames, "".concat(prefixCls, "-open"), level !== 1 && isOpen), _defineProperty(_classnames, "".concat(prefixCls, "-close"), level !== 1 && !isOpen), _classnames))
className: [level !== 1 && isOpen ? ["".concat(prefixCls, "-open")] : null, level !== 1 && !isOpen ? ["".concat(prefixCls, "-close")] : null].filter(Boolean).join(' ').trim()
}, data.map(function (item, idx) {
var _classnames2;
item.parent = parent;

@@ -303,3 +298,3 @@ var selected = !!(selectedKeys && selectedKeys.indexOf(item.key) > -1);

}, /*#__PURE__*/React.createElement("div", {
className: classnames("".concat(prefixCls, "-label"))
className: "".concat(prefixCls, "-label")
}, /*#__PURE__*/React.createElement("span", {

@@ -310,9 +305,6 @@ className: "".concat(prefixCls, "-switcher"),

type: iconItem || 'caret-right',
className: classnames((_classnames2 = {}, _defineProperty(_classnames2, "".concat(prefixCls, "-switcher-noop"), typeof icon === 'function'), _defineProperty(_classnames2, 'no-child', noChild), _defineProperty(_classnames2, 'no-animation', !iconAnimation), _defineProperty(_classnames2, "open", itemIsOpen), _classnames2))
className: [typeof icon === 'function' ? "".concat(prefixCls, "-switcher-noop") : null, noChild ? 'no-child' : null, !iconAnimation ? 'no-animation' : null, itemIsOpen ? 'open' : null].filter(Boolean).join(' ').trim()
})), /*#__PURE__*/React.createElement("div", {
onClick: _this2.onItemSelected.bind(_this2, item),
className: classnames("".concat(prefixCls, "-title"), {
selected: selected && isSelected,
disabled: item.disabled
})
className: ["".concat(prefixCls, "-title"), selected && isSelected ? 'selected' : null, item.disabled ? 'disabled' : null].filter(Boolean).join(' ').trim()
}, renderTitle ? renderTitle(item, {

@@ -348,3 +340,3 @@ selected: selected,

var cls = classnames(className, prefixCls, _defineProperty({}, "".concat(prefixCls, "-line"), showLine));
var cls = [className, prefixCls, showLine ? "".concat(prefixCls, "-line") : null].filter(Boolean).join(' ').trim();
return /*#__PURE__*/React.createElement("div", _extends({

@@ -351,0 +343,0 @@ className: cls

@@ -1,1 +0,1 @@

{"version":3,"sources":["../../src/index.tsx"],"names":["React","classnames","CSSTransition","Icon","noop","undefined","isContained","a","b","Array","length","aStr","toString","i","len","indexOf","getChildKeys","childs","result","forEach","item","push","key","children","concat","getParentKeys","parent","getParentSelectKeys","selectedKeys","Tree","props","onExit","node","style","height","scrollHeight","onExiting","onEnter","isAppearing","onEntering","onEntered","state","openKeys","halfCheckedKeys","defaultExpandAll","data","setState","nextProps","evn","onSelected","multiple","checkStrictly","selKeys","findKey","find","v","selected","filter","val","from","Set","onExpand","currentKeys","cls","currentTarget","className","replace","expanded","level","prefixCls","renderTitle","icon","iconAnimation","isSelected","isOpen","map","idx","noChild","itemIsOpen","iconItem","childKeys","checkedKeys","isHalfChecked","onItemClick","bind","onItemSelected","disabled","label","renderTreeNode","autoExpandParent","showLine","elementProps","Component","defaultProps"],"mappings":";;;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,OAAOC,IAAP,MAAgC,iBAAhC;AAEA;;AAkEA,IAAMC,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAMC,SAAN;AAAA,CAAb;AAEA;;;;;;;AAKA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAWC,CAAX,EAAwB;AAC1C,MAAI,EAAED,CAAC,YAAYE,KAAf,KAAyB,EAAED,CAAC,YAAYC,KAAf,CAA7B,EAAoD,OAAO,KAAP;AACpD,MAAIF,CAAC,CAACG,MAAF,GAAWF,CAAC,CAACE,MAAjB,EAAyB,OAAO,KAAP;AACzB,MAAMC,IAAI,GAAGJ,CAAC,CAACK,QAAF,EAAb;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAR,EAAWC,GAAG,GAAGN,CAAC,CAACE,MAAxB,EAAgCG,CAAC,GAAGC,GAApC,EAAyCD,CAAC,IAAI,CAA9C,EAAiD;AAC/C,QAAIF,IAAI,CAACI,OAAL,CAAaP,CAAC,CAACK,CAAD,CAAd,MAAuB,CAAC,CAA5B,EAA+B,OAAO,KAAP;AAChC;;AACD,SAAO,IAAP;AACD,CARD;;AAUA,IAAMG,YAAY,GAAG,SAAfA,YAAe,GAGG;AAAA,MAFtBC,MAEsB,uEAFD,EAEC;AAAA,MADtBC,MACsB,uEADM,EACN;AACtBD,EAAAA,MAAM,CAACE,OAAP,CAAe,UAACC,IAAD,EAAU;AACvBF,IAAAA,MAAM,CAACG,IAAP,CAAYD,IAAI,CAACE,GAAjB;;AACA,QAAIF,IAAI,CAACG,QAAL,IAAiBH,IAAI,CAACG,QAAL,CAAcb,MAAd,GAAuB,CAA5C,EAA+C;AAC7CQ,MAAAA,MAAM,GAAGA,MAAM,CAACM,MAAP,CAAcR,YAAY,CAACI,IAAI,CAACG,QAAN,CAA1B,CAAT;AACD;AACF,GALD;AAMA,SAAOL,MAAP;AACD,CAXD;;AAaA,IAAMO,aAAa,GAAG,SAAhBA,aAAgB,GAGjB;AAAA,MAFHR,MAEG,uEAFgB,EAEhB;AAAA,MADHC,MACG,uEADyB,EACzB;;AACH,MAAID,MAAM,CAACK,GAAX,EAAgB;AACdJ,IAAAA,MAAM,CAACG,IAAP,CAAYJ,MAAM,CAACK,GAAnB;AACD;;AACD,MAAIL,MAAM,CAACS,MAAX,EAAmB;AACjBR,IAAAA,MAAM,GAAGO,aAAa,CAACR,MAAM,CAACS,MAAR,EAAgBR,MAAhB,CAAtB;AACD;;AACD,SAAOA,MAAP;AACD,CAXD;;AAaA,IAAMS,mBAAmB,GAAG,SAAtBA,mBAAsB,GAIvB;AAAA,MAHHV,MAGG,uEAHgB,EAGhB;AAAA,MAFHW,YAEG,uEAF+B,EAE/B;AAAA,MADHV,MACG,uEADyB,EACzB;;AACH,MACED,MAAM,CAACK,GAAP,IACAL,MAAM,CAACM,QADP,IAEAjB,WAAW,CAACsB,YAAD,EAAeZ,YAAY,CAACC,MAAM,CAACM,QAAR,CAA3B,CAHb,EAIE;AACAL,IAAAA,MAAM,CAACG,IAAP,CAAYJ,MAAM,CAACK,GAAnB;;AACA,QAAIL,MAAM,CAACS,MAAP,IAAiB,CAACT,MAAM,CAACS,MAAP,CAAcA,MAApC,EAA4C;AAC1C,UAAIpB,WAAW,CAACsB,YAAD,EAAeZ,YAAY,CAACC,MAAM,CAACM,QAAR,CAA3B,CAAf,EAA8D;AAC5DK,QAAAA,YAAY,GAAGA,YAAY,CAACJ,MAAb,CAAoBN,MAApB,CAAf;AACD;;AACD,UAAIZ,WAAW,CAACsB,YAAD,EAAeZ,YAAY,CAACC,MAAM,CAACS,MAAP,CAAcH,QAAf,CAA3B,CAAf,EAAqE;AACnEL,QAAAA,MAAM,CAACG,IAAP,CAAYJ,MAAM,CAACS,MAAP,CAAcJ,GAA1B;AACD;AACF;AACF;;AACD,MAAIL,MAAM,CAACS,MAAX,EAAmB;AACjBR,IAAAA,MAAM,GAAGS,mBAAmB,CAACV,MAAM,CAACS,MAAR,EAAgBE,YAAhB,EAA8BV,MAA9B,CAA5B;AACD;;AACD,SAAOA,MAAP;AACD,CAxBD;;IA0BqBW,I;;;;;AAgBnB,gBAAYC,KAAZ,EAAiC;AAAA;;AAAA;;AAC/B,8BAAMA,KAAN;;AAD+B,UA4DjCC,MA5DiC,GA4DxB,UAACC,IAAD,EAAuB;AAC9BA,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,aAAuBF,IAAI,CAACG,YAA5B;AACD,KA9DgC;;AAAA,UA+DjCC,SA/DiC,GA+DrB,UAACJ,IAAD,EAAuB;AACjCA,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,GAAoB,KAApB;AACD,KAjEgC;;AAAA,UAkEjCG,OAlEiC,GAkEvB,UAACL,IAAD,EAAoBM,WAApB,EAA6C;AACrDN,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,GAAoB,KAApB;AACD,KApEgC;;AAAA,UAqEjCK,UArEiC,GAqEpB,UAACP,IAAD,EAAoBM,WAApB,EAA6C;AACxDN,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,aAAuBF,IAAI,CAACG,YAA5B;AACD,KAvEgC;;AAAA,UAwEjCK,SAxEiC,GAwErB,UAACR,IAAD,EAAoBM,WAApB,EAA6C;AACvDN,MAAAA,IAAI,CAACC,KAAL,CAAWC,MAAX,GAAoB,SAApB;AACD,KA1EgC;;AAE/B,UAAKO,KAAL,GAAa;AACXC,MAAAA,QAAQ,EAAEZ,KAAK,CAACY,QAAN,IAAkB,EADjB;AAEXd,MAAAA,YAAY,EAAEE,KAAK,CAACF,YAAN,IAAsB,EAFzB;AAGXe,MAAAA,eAAe,EAAEb,KAAK,CAACF,YAAN,IAAsB;AAH5B,KAAb;AAF+B;AAOhC;;;;wCACmB;AAAA,wBACiB,KAAKE,KADtB;AAAA,UACVc,gBADU,eACVA,gBADU;AAAA,UACQC,IADR,eACQA,IADR;AAElB,UAAMH,QAAQ,GAAG1B,YAAY,CAAC6B,IAAD,CAA7B;;AACA,UAAID,gBAAJ,EAAsB;AACpB,aAAKE,QAAL,CAAc;AAAEJ,UAAAA,QAAQ,EAARA;AAAF,SAAd;AACD;AACF;;;qDACgCK,S,EAAyB;AACxD,UAAIA,SAAS,CAACL,QAAV,KAAuB,KAAKZ,KAAL,CAAWY,QAAtC,EAAgD;AAC9C,aAAKI,QAAL,CAAc;AAAEJ,UAAAA,QAAQ,EAAEK,SAAS,CAACL;AAAtB,SAAd;AACD;;AACD,UAAIK,SAAS,CAACnB,YAAV,KAA2B,KAAKE,KAAL,CAAWF,YAA1C,EAAwD;AACtD,aAAKkB,QAAL,CAAc;AAAElB,UAAAA,YAAY,EAAEmB,SAAS,CAACnB;AAA1B,SAAd;AACD;AACF;;;mCACcR,I,EAAgB4B,G,EAAoC;AAAA,yBACjB,KAAKlB,KADY;AAAA,UACzDmB,UADyD,gBACzDA,UADyD;AAAA,UAC7CC,QAD6C,gBAC7CA,QAD6C;AAAA,UACnCC,aADmC,gBACnCA,aADmC;;AAEjE,UAAIC,OAAO,sBAAQ,KAAKX,KAAL,CAAWb,YAAnB,CAAX;;AAEA,UAAMyB,OAAO,GAAGD,OAAO,CAACE,IAAR,CAAa,UAACC,CAAD;AAAA,eAAOA,CAAC,KAAKnC,IAAI,CAACE,GAAlB;AAAA,OAAb,CAAhB;AACA,UAAIkC,QAAQ,GAAG,KAAf;;AACA,UAAI,CAACH,OAAL,EAAc;AACZG,QAAAA,QAAQ,GAAG,IAAX;AACAJ,QAAAA,OAAO,CAAC/B,IAAR,CAAaD,IAAI,CAACE,GAAlB;AACD,OAHD,MAGO;AACL8B,QAAAA,OAAO,GAAGA,OAAO,CAACK,MAAR,CAAe,UAACF,CAAD;AAAA,iBAAOA,CAAC,KAAKnC,IAAI,CAACE,GAAlB;AAAA,SAAf,CAAV;AACD;;AACD,UAAI6B,aAAJ,EAAmB;AACjB,YAAI,CAACE,OAAL,EAAc;AACZD,UAAAA,OAAO,GAAGA,OAAO,CAAC5B,MAAR,CACRR,YAAY,CAACI,IAAI,CAACG,QAAN,CAAZ,CAA4BkC,MAA5B,CACE,UAACC,GAAD;AAAA,mBAASN,OAAO,CAACrC,OAAR,CAAgB2C,GAAhB,MAAyB,CAAC,CAAnC;AAAA,WADF,CADQ,CAAV;AAKAN,UAAAA,OAAO,GAAGA,OAAO,CAAC5B,MAAR,CAAeG,mBAAmB,CAACP,IAAD,EAAOgC,OAAP,CAAlC,CAAV;AACAA,UAAAA,OAAO,GAAG3C,KAAK,CAACkD,IAAN,CAAW,IAAIC,GAAJ,CAAQR,OAAR,CAAX,CAAV,CAPY,CAO4B;AACzC,SARD,MAQO;AACLA,UAAAA,OAAO,GAAGA,OAAO,CAACK,MAAR,CACR,UAACC,GAAD;AAAA,mBAAS1C,YAAY,CAACI,IAAI,CAACG,QAAN,CAAZ,CAA4BR,OAA5B,CAAoC2C,GAApC,MAA6C,CAAC,CAAvD;AAAA,WADQ,CAAV;AAGAN,UAAAA,OAAO,GAAGA,OAAO,CAACK,MAAR,CACR,UAACC,GAAD;AAAA,mBAASjC,aAAa,CAACL,IAAI,CAACM,MAAN,CAAb,CAA2BX,OAA3B,CAAmC2C,GAAnC,MAA4C,CAAC,CAAtD;AAAA,WADQ,CAAV;AAGD;AACF;;AACD,UAAI,CAACR,QAAL,EAAe;AACbE,QAAAA,OAAO,GAAG,CAACC,OAAD,GAAW,CAACjC,IAAI,CAACE,GAAN,CAAX,GAAwB,EAAlC;AACD;;AACD,WAAKwB,QAAL,CAAc;AAAElB,QAAAA,YAAY,EAAEwB;AAAhB,OAAd,EAAyC,YAAM;AAC7CH,QAAAA,UAAU,IAAIA,UAAU,CAACG,OAAD,EAAUhC,IAAI,CAACE,GAAf,EAAoBkC,QAApB,EAA8BpC,IAA9B,EAAoC4B,GAApC,CAAxB;AACD,OAFD;AAGD;;;gCAgBW5B,I,EAAgB4B,G,EAAoC;AAC9D,UAAI,CAAC5B,IAAI,CAACG,QAAV,EAAoB;AAClB;AACD;;AAH6D,UAItDsC,QAJsD,GAIzC,KAAK/B,KAJoC,CAItD+B,QAJsD;AAAA,UAKtDnB,QALsD,GAKzC,KAAKD,KALoC,CAKtDC,QALsD;;AAM9D,UAAIoB,WAAW,sBAAQpB,QAAR,CAAf;;AACA,UAAMpB,GAAG,GAAGwC,WAAW,CAACR,IAAZ,CAAiB,UAACC,CAAD;AAAA,eAAOA,CAAC,KAAKnC,IAAI,CAACE,GAAlB;AAAA,OAAjB,CAAZ;AACA,UAAMyC,GAAG,GAAGf,GAAG,CAACgB,aAAJ,CAAkBC,SAAlB,CAA4BC,OAA5B,CAAoC,WAApC,EAAiD,EAAjD,CAAZ;AACA,UAAIC,QAAQ,GAAG,KAAf;;AACA,UAAI,CAAC7C,GAAD,IAAQF,IAAI,CAACE,GAAjB,EAAsB;AACpBwC,QAAAA,WAAW,CAACzC,IAAZ,CAAiBD,IAAI,CAACE,GAAtB;AACA0B,QAAAA,GAAG,CAACgB,aAAJ,CAAkBC,SAAlB,GAA8BhE,UAAU,CAAC8D,GAAD,EAAM,MAAN,CAAxC;AACAI,QAAAA,QAAQ,GAAG,IAAX;AACD,OAJD,MAIO;AACLL,QAAAA,WAAW,GAAGA,WAAW,CAACL,MAAZ,CAAmB,UAACF,CAAD;AAAA,iBAAOA,CAAC,KAAKnC,IAAI,CAACE,GAAlB;AAAA,SAAnB,CAAd;AACA0B,QAAAA,GAAG,CAACgB,aAAJ,CAAkBC,SAAlB,GAA8BF,GAA9B;AACD;;AACD,WAAKjB,QAAL,CAAc;AAAEJ,QAAAA,QAAQ,EAAEoB;AAAZ,OAAd,EAAyC,YAAM;AAC7CD,QAAAA,QAAQ,IAAIA,QAAQ,CAACzC,IAAI,CAACE,GAAN,EAAW6C,QAAX,EAAqB/C,IAArB,EAA2B4B,GAA3B,CAApB;AACD,OAFD;AAGD;;;mCACcH,I,EAAkBuB,K,EAAe1C,M,EAAmB;AAAA;AAAA;;AAAA,yBAO7D,KAAKI,KAPwD;AAAA,UAE/DuC,SAF+D,gBAE/DA,SAF+D;AAAA,UAG/DC,WAH+D,gBAG/DA,WAH+D;AAAA,UAI/DC,IAJ+D,gBAI/DA,IAJ+D;AAAA,UAK/DC,aAL+D,gBAK/DA,aAL+D;AAAA,UAM/DC,UAN+D,gBAM/DA,UAN+D;AAAA,wBAQ9B,KAAKhC,KARyB;AAAA,UAQzDC,QARyD,eAQzDA,QARyD;AAAA,UAQ/Cd,YAR+C,eAQ/CA,YAR+C;AASjE,UAAI8C,MAAM,GAAG,KAAb;;AAEA,UAAIhD,MAAM,IAAIA,MAAM,CAACJ,GAArB,EAA0B;AACxBoD,QAAAA,MAAM,GAAG,CAAC,EAAEhC,QAAQ,IAAIA,QAAQ,CAAC3B,OAAT,CAAiBW,MAAM,CAACJ,GAAxB,IAA+B,CAAC,CAA9C,CAAV;AACD;;AACD,0BACE,oBAAC,aAAD;AACE,QAAA,UAAU,EAAE+C,SADd;AAEE,QAAA,EAAE,EAAEK,MAFN;AAGE,QAAA,OAAO,EAAE,GAHX;AAIE,QAAA,MAAM,EAAE,KAAK3C,MAJf;AAKE,QAAA,SAAS,EAAE,KAAKK,SALlB;AAME,QAAA,OAAO,EAAE,KAAKC,OANhB;AAOE,QAAA,SAAS,EAAE,KAAKG,SAPlB;AAQE,QAAA,UAAU,EAAE,KAAKD;AARnB,sBAUE;AACE,QAAA,SAAS,EAAEtC,UAAU,2DACfoE,SADe,YACID,KAAK,KAAK,CAAV,IAAeM,MADnB,0CAEfL,SAFe,aAEKD,KAAK,KAAK,CAAV,IAAe,CAACM,MAFrB;AADvB,SAMG7B,IAAI,CAAC8B,GAAL,CAAS,UAACvD,IAAD,EAAOwD,GAAP,EAAuB;AAAA;;AAC/BxD,QAAAA,IAAI,CAACM,MAAL,GAAcA,MAAd;AACA,YAAM8B,QAAQ,GAAG,CAAC,EAChB5B,YAAY,IAAIA,YAAY,CAACb,OAAb,CAAqBK,IAAI,CAACE,GAA1B,IAAiC,CAAC,CADlC,CAAlB;AAGA,YAAMuD,OAAO,GAAG,CAACzD,IAAI,CAACG,QAAtB;AACA,YAAMuD,UAAU,GACdpC,QAAQ,IAAIA,QAAQ,CAAC3B,OAAT,CAAiBK,IAAI,CAACE,GAAtB,IAA6B,CAAC,CAA1C,IAA+C,CAAC,CAACF,IAAI,CAACG,QADxD;AAEA,YAAMwD,QAAQ,GACZ,OAAOR,IAAP,KAAgB,UAAhB,GACIA,IAAI,CAACnD,IAAD,EAAO;AACTsD,UAAAA,MAAM,EAAE,CAAC,CAACI,UADD;AAETD,UAAAA,OAAO,EAAPA,OAFS;AAGTnC,UAAAA,QAAQ,EAARA,QAHS;AAITd,UAAAA,YAAY,EAAZA;AAJS,SAAP,CADR,GAOI2C,IARN;AASA,YAAMS,SAAS,GAAGH,OAAO,GAAG,EAAH,GAAQ7D,YAAY,CAACI,IAAI,CAACG,QAAN,CAA7C;AACA,YAAM0D,WAAW,GAAGrD,YAAY,GAC5BA,YAAY,CAAC6B,MAAb,CAAoB,UAACnC,GAAD;AAAA,iBAAS0D,SAAS,CAACjE,OAAV,CAAkBO,GAAlB,IAAyB,CAAC,CAAnC;AAAA,SAApB,CAD4B,GAE5B,EAFJ;AAGA,YAAM4D,aAAa,GACjBD,WAAW,CAACvE,MAAZ,GAAqB,CAArB,IAA0BsE,SAAS,CAACtE,MAAV,KAAqBuE,WAAW,CAACvE,MAD7D;AAEA,4BACE;AAAI,UAAA,GAAG,EAAEkE;AAAT,wBACE;AAAK,UAAA,SAAS,EAAE3E,UAAU,WAAIoE,SAAJ;AAA1B,wBACE;AACE,UAAA,SAAS,YAAKA,SAAL,cADX;AAEE,UAAA,OAAO,EAAE,MAAI,CAACc,WAAL,CAAiBC,IAAjB,CAAsB,MAAtB,EAA4BhE,IAA5B;AAFX,wBAIE,oBAAC,IAAD;AACE,UAAA,IAAI,EAAE2D,QAAQ,IAAI,aADpB;AAEE,UAAA,SAAS,EAAE9E,UAAU,6DACfoE,SADe,qBAEjB,OAAOE,IAAP,KAAgB,UAFC,iCAGnB,UAHmB,EAGPM,OAHO,iCAInB,cAJmB,EAIH,CAACL,aAJE,yCAKbM,UALa;AAFvB,UAJF,CADF,eAgBE;AACE,UAAA,OAAO,EAAE,MAAI,CAACO,cAAL,CAAoBD,IAApB,CAAyB,MAAzB,EAA+BhE,IAA/B,CADX;AAEE,UAAA,SAAS,EAAEnB,UAAU,WAAIoE,SAAJ,aAAuB;AAC1Cb,YAAAA,QAAQ,EAAEA,QAAQ,IAAIiB,UADoB;AAE1Ca,YAAAA,QAAQ,EAAElE,IAAI,CAACkE;AAF2B,WAAvB;AAFvB,WAOGhB,WAAW,GACVA,WAAW,CAAClD,IAAD,EAAO;AAChBoC,UAAAA,QAAQ,EAARA,QADgB;AAEhBqB,UAAAA,OAAO,EAAPA,OAFgB;AAGhBnC,UAAAA,QAAQ,EAARA,QAHgB;AAIhBwC,UAAAA,aAAa,EAAbA,aAJgB;AAKhBtD,UAAAA,YAAY,EAAZA;AALgB,SAAP,CADD,gBASV,kCAAOR,IAAI,CAACmE,KAAZ,CAhBJ,CAhBF,CADF,EAqCGnE,IAAI,CAACG,QAAL,IACC,MAAI,CAACiE,cAAL,CAAoBpE,IAAI,CAACG,QAAzB,EAAmC6C,KAAK,GAAG,CAA3C,EAA8ChD,IAA9C,CAtCJ,CADF;AA0CD,OAjEA,CANH,CAVF,CADF;AAsFD;;;6BACQ;AAAA,yBAkBH,KAAKU,KAlBF;AAAA,UAELuC,SAFK,gBAELA,SAFK;AAAA,UAGLJ,SAHK,gBAGLA,SAHK;AAAA,UAILM,IAJK,gBAILA,IAJK;AAAA,UAKL1B,IALK,gBAKLA,IALK;AAAA,UAMLH,QANK,gBAMLA,QANK;AAAA,UAOLd,YAPK,gBAOLA,YAPK;AAAA,UAQL6C,UARK,gBAQLA,UARK;AAAA,UASLgB,gBATK,gBASLA,gBATK;AAAA,UAUL7C,gBAVK,gBAULA,gBAVK;AAAA,UAWLO,aAXK,gBAWLA,aAXK;AAAA,UAYLuC,QAZK,gBAYLA,QAZK;AAAA,UAaLlB,aAbK,gBAaLA,aAbK;AAAA,UAcLF,WAdK,gBAcLA,WAdK;AAAA,UAeLT,QAfK,gBAeLA,QAfK;AAAA,UAgBLZ,UAhBK,gBAgBLA,UAhBK;AAAA,UAiBF0C,YAjBE;;AAmBP,UAAM5B,GAAG,GAAG9D,UAAU,CAACgE,SAAD,EAAYI,SAAZ,gCAChBA,SADgB,YACGqB,QADH,EAAtB;AAGA,0BACE;AAAK,QAAA,SAAS,EAAE3B;AAAhB,SAAyB4B,YAAzB,GACG,KAAKH,cAAL,CAAoB3C,IAApB,EAAwC,CAAxC,CADH,CADF;AAKD;;;;EAjPkC7C,KAAK,CAAC4F,S;;AAAtB/D,I,CACLgE,Y,GAA8B;AAC1CxB,EAAAA,SAAS,EAAE,QAD+B;AAE1CE,EAAAA,IAAI,EAAE,aAFoC;AAG1C1B,EAAAA,IAAI,EAAE,EAHoC;AAI1CH,EAAAA,QAAQ,EAAE,EAJgC;AAK1Cd,EAAAA,YAAY,EAAE,EAL4B;AAM1CgB,EAAAA,gBAAgB,EAAE,KANwB;AAO1C8C,EAAAA,QAAQ,EAAE,KAPgC;AAQ1ClB,EAAAA,aAAa,EAAE,IAR2B;AAS1CC,EAAAA,UAAU,EAAE,IAT8B;AAU1CtB,EAAAA,aAAa,EAAE,KAV2B;AAW1CD,EAAAA,QAAQ,EAAE,KAXgC;AAY1CW,EAAAA,QAAQ,EAAEzD,IAZgC;AAa1C6C,EAAAA,UAAU,EAAE7C;AAb8B,C;SADzByB,I","sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport Icon, { IconProps } from '@uiw/react-icon';\nimport { IProps, HTMLDivProps } from '@uiw/utils';\nimport './style/index.less';\n\nexport type TreeRenderTitleNode<T> = {\n selected?: boolean;\n noChild?: boolean;\n isHalfChecked?: boolean;\n openKeys?: TreeProps<T>['openKeys'];\n selectedKeys?: TreeProps<T>['selectedKeys'];\n};\n\nexport interface TreeProps<T> extends IProps, HTMLDivProps {\n icon?: IconProps<T>['type'];\n data?: TreeData[];\n openKeys?: TreeData['key'][];\n selectedKeys?: TreeData['key'][];\n defaultExpandAll?: boolean;\n /**\n * 是否自动展开父节点\n */\n autoExpandParent?: boolean;\n /**\n * 是否展示连接线\n */\n showLine?: boolean;\n iconAnimation?: boolean;\n isSelected?: boolean;\n /**\n * 子节点受父节点控制设置 `true`,需要配合 `multiple` 参数使用。\n */\n checkStrictly?: boolean;\n /**\n * 支持点选多个节点\n */\n multiple?: boolean;\n renderTitle?: (\n item: TreeData,\n node: TreeRenderTitleNode<T>,\n ) => React.ReactElement;\n onExpand?: (\n key: TreeData['key'],\n expanded: boolean,\n item: TreeData,\n evn: React.MouseEvent<HTMLElement>,\n ) => void;\n onSelected?: (\n keys: TreeData['key'][],\n key: TreeData['key'],\n selected: boolean,\n item: TreeData,\n evn: React.MouseEvent<HTMLElement>,\n ) => void;\n}\n\nexport interface TreeData {\n label?: React.ReactNode;\n children?: TreeData[];\n key?: string | number;\n [keyName: string]: any;\n}\n\nexport interface TreeState {\n openKeys?: TreeData['key'][];\n selectedKeys?: TreeData['key'][];\n halfCheckedKeys?: TreeData['key'][];\n}\n\nconst noop = () => undefined;\n\n/**\n * a contains b\n * @param {Array} a\n * @param {Array} b\n */\nconst isContained = (a: any[], b: any[]) => {\n if (!(a instanceof Array) || !(b instanceof Array)) return false;\n if (a.length < b.length) return false;\n const aStr = a.toString();\n for (let i = 0, len = b.length; i < len; i += 1) {\n if (aStr.indexOf(b[i]) === -1) return false;\n }\n return true;\n};\n\nconst getChildKeys = (\n childs: TreeData[] = [],\n result: TreeData['key'][] = [],\n): TreeData['key'][] => {\n childs.forEach((item) => {\n result.push(item.key as string | number);\n if (item.children && item.children.length > 0) {\n result = result.concat(getChildKeys(item.children));\n }\n });\n return result;\n};\n\nconst getParentKeys = (\n childs: TreeData = {},\n result: TreeData['key'][] = [],\n) => {\n if (childs.key) {\n result.push(childs.key);\n }\n if (childs.parent) {\n result = getParentKeys(childs.parent, result);\n }\n return result;\n};\n\nconst getParentSelectKeys = (\n childs: TreeData = {},\n selectedKeys: TreeData['key'][] = [],\n result: TreeData['key'][] = [],\n) => {\n if (\n childs.key &&\n childs.children &&\n isContained(selectedKeys, getChildKeys(childs.children))\n ) {\n result.push(childs.key);\n if (childs.parent && !childs.parent.parent) {\n if (isContained(selectedKeys, getChildKeys(childs.children))) {\n selectedKeys = selectedKeys.concat(result);\n }\n if (isContained(selectedKeys, getChildKeys(childs.parent.children))) {\n result.push(childs.parent.key);\n }\n }\n }\n if (childs.parent) {\n result = getParentSelectKeys(childs.parent, selectedKeys, result);\n }\n return result;\n};\n\nexport default class Tree<T> extends React.Component<TreeProps<T>, TreeState> {\n public static defaultProps: TreeProps<{}> = {\n prefixCls: 'w-tree',\n icon: 'caret-right',\n data: [],\n openKeys: [],\n selectedKeys: [],\n defaultExpandAll: false,\n showLine: false,\n iconAnimation: true,\n isSelected: true,\n checkStrictly: false,\n multiple: false,\n onExpand: noop,\n onSelected: noop,\n };\n constructor(props: TreeProps<T>) {\n super(props);\n this.state = {\n openKeys: props.openKeys || [],\n selectedKeys: props.selectedKeys || [],\n halfCheckedKeys: props.selectedKeys || [],\n };\n }\n componentDidMount() {\n const { defaultExpandAll, data } = this.props;\n const openKeys = getChildKeys(data);\n if (defaultExpandAll) {\n this.setState({ openKeys });\n }\n }\n UNSAFE_componentWillReceiveProps(nextProps: TreeProps<T>) {\n if (nextProps.openKeys !== this.props.openKeys) {\n this.setState({ openKeys: nextProps.openKeys });\n }\n if (nextProps.selectedKeys !== this.props.selectedKeys) {\n this.setState({ selectedKeys: nextProps.selectedKeys });\n }\n }\n onItemSelected(item: TreeData, evn: React.MouseEvent<HTMLElement>) {\n const { onSelected, multiple, checkStrictly } = this.props;\n let selKeys = [...(this.state.selectedKeys as TreeData['key'][])];\n\n const findKey = selKeys.find((v) => v === item.key);\n let selected = false;\n if (!findKey) {\n selected = true;\n selKeys.push(item.key);\n } else {\n selKeys = selKeys.filter((v) => v !== item.key);\n }\n if (checkStrictly) {\n if (!findKey) {\n selKeys = selKeys.concat(\n getChildKeys(item.children).filter(\n (val) => selKeys.indexOf(val) === -1,\n ),\n );\n selKeys = selKeys.concat(getParentSelectKeys(item, selKeys));\n selKeys = Array.from(new Set(selKeys)); // Remove duplicates.\n } else {\n selKeys = selKeys.filter(\n (val) => getChildKeys(item.children).indexOf(val) === -1,\n );\n selKeys = selKeys.filter(\n (val) => getParentKeys(item.parent).indexOf(val) === -1,\n );\n }\n }\n if (!multiple) {\n selKeys = !findKey ? [item.key] : [];\n }\n this.setState({ selectedKeys: selKeys }, () => {\n onSelected && onSelected(selKeys, item.key, selected, item, evn);\n });\n }\n onExit = (node: HTMLElement) => {\n node.style.height = `${node.scrollHeight}px`;\n };\n onExiting = (node: HTMLElement) => {\n node.style.height = '1px';\n };\n onEnter = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = '1px';\n };\n onEntering = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = `${node.scrollHeight}px`;\n };\n onEntered = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = 'initial';\n };\n onItemClick(item: TreeData, evn: React.MouseEvent<HTMLElement>) {\n if (!item.children) {\n return;\n }\n const { onExpand } = this.props;\n const { openKeys } = this.state;\n let currentKeys = [...(openKeys as TreeData['key'][])];\n const key = currentKeys.find((v) => v === item.key);\n const cls = evn.currentTarget.className.replace(/(\\s)open/g, '');\n let expanded = false;\n if (!key && item.key) {\n currentKeys.push(item.key);\n evn.currentTarget.className = classnames(cls, 'open');\n expanded = true;\n } else {\n currentKeys = currentKeys.filter((v) => v !== item.key);\n evn.currentTarget.className = cls;\n }\n this.setState({ openKeys: currentKeys }, () => {\n onExpand && onExpand(item.key, expanded, item, evn);\n });\n }\n renderTreeNode(data: TreeData[], level: number, parent?: TreeData) {\n const {\n prefixCls,\n renderTitle,\n icon,\n iconAnimation,\n isSelected,\n } = this.props;\n const { openKeys, selectedKeys } = this.state;\n let isOpen = false;\n\n if (parent && parent.key) {\n isOpen = !!(openKeys && openKeys.indexOf(parent.key) > -1);\n }\n return (\n <CSSTransition\n classNames={prefixCls}\n in={isOpen}\n timeout={200}\n onExit={this.onExit}\n onExiting={this.onExiting}\n onEnter={this.onEnter}\n onEntered={this.onEntered}\n onEntering={this.onEntering}\n >\n <ul\n className={classnames({\n [`${prefixCls}-open`]: level !== 1 && isOpen,\n [`${prefixCls}-close`]: level !== 1 && !isOpen,\n })}\n >\n {data.map((item, idx: number) => {\n item.parent = parent;\n const selected = !!(\n selectedKeys && selectedKeys.indexOf(item.key) > -1\n );\n const noChild = !item.children;\n const itemIsOpen =\n openKeys && openKeys.indexOf(item.key) > -1 && !!item.children;\n const iconItem =\n typeof icon === 'function'\n ? icon(item, {\n isOpen: !!itemIsOpen,\n noChild,\n openKeys,\n selectedKeys,\n })\n : icon;\n const childKeys = noChild ? [] : getChildKeys(item.children);\n const checkedKeys = selectedKeys\n ? selectedKeys.filter((key) => childKeys.indexOf(key) > -1)\n : [];\n const isHalfChecked =\n checkedKeys.length > 0 && childKeys.length !== checkedKeys.length;\n return (\n <li key={idx}>\n <div className={classnames(`${prefixCls}-label`)}>\n <span\n className={`${prefixCls}-switcher`}\n onClick={this.onItemClick.bind(this, item)}\n >\n <Icon\n type={iconItem || 'caret-right'}\n className={classnames({\n [`${prefixCls}-switcher-noop`]:\n typeof icon === 'function',\n 'no-child': noChild,\n 'no-animation': !iconAnimation,\n open: itemIsOpen,\n })}\n />\n </span>\n <div\n onClick={this.onItemSelected.bind(this, item)}\n className={classnames(`${prefixCls}-title`, {\n selected: selected && isSelected,\n disabled: item.disabled,\n })}\n >\n {renderTitle ? (\n renderTitle(item, {\n selected,\n noChild,\n openKeys,\n isHalfChecked,\n selectedKeys,\n })\n ) : (\n <span>{item.label}</span>\n )}\n </div>\n </div>\n {item.children &&\n this.renderTreeNode(item.children, level + 1, item)}\n </li>\n );\n })}\n </ul>\n </CSSTransition>\n );\n }\n render() {\n const {\n prefixCls,\n className,\n icon,\n data,\n openKeys,\n selectedKeys,\n isSelected,\n autoExpandParent,\n defaultExpandAll,\n checkStrictly,\n showLine,\n iconAnimation,\n renderTitle,\n onExpand,\n onSelected,\n ...elementProps\n } = this.props;\n const cls = classnames(className, prefixCls, {\n [`${prefixCls}-line`]: showLine,\n });\n return (\n <div className={cls} {...elementProps}>\n {this.renderTreeNode(data as TreeData[], 1)}\n </div>\n );\n }\n}\n"]}
{"version":3,"sources":["../../src/index.tsx"],"names":["React","CSSTransition","Icon","noop","undefined","isContained","a","b","Array","length","aStr","toString","i","len","indexOf","getChildKeys","childs","result","forEach","item","push","key","children","concat","getParentKeys","parent","getParentSelectKeys","selectedKeys","Tree","props","onExit","node","style","height","scrollHeight","onExiting","onEnter","isAppearing","onEntering","onEntered","state","openKeys","halfCheckedKeys","defaultExpandAll","data","setState","nextProps","evn","onSelected","multiple","checkStrictly","selKeys","findKey","find","v","selected","filter","val","from","Set","onExpand","currentKeys","cls","currentTarget","className","replace","expanded","Boolean","join","trim","level","prefixCls","renderTitle","icon","iconAnimation","isSelected","isOpen","map","idx","noChild","itemIsOpen","iconItem","childKeys","checkedKeys","isHalfChecked","onItemClick","bind","onItemSelected","disabled","label","renderTreeNode","autoExpandParent","showLine","elementProps","Component","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport Icon, { IconProps } from '@uiw/react-icon';\nimport { IProps, HTMLDivProps } from '@uiw/utils';\nimport './style/index.less';\n\nexport type TreeRenderTitleNode<T> = {\n selected?: boolean;\n noChild?: boolean;\n isHalfChecked?: boolean;\n openKeys?: TreeProps<T>['openKeys'];\n selectedKeys?: TreeProps<T>['selectedKeys'];\n};\n\nexport interface TreeProps<T> extends IProps, HTMLDivProps {\n icon?: IconProps<T>['type'];\n data?: TreeData[];\n openKeys?: TreeData['key'][];\n selectedKeys?: TreeData['key'][];\n defaultExpandAll?: boolean;\n /**\n * 是否自动展开父节点\n */\n autoExpandParent?: boolean;\n /**\n * 是否展示连接线\n */\n showLine?: boolean;\n iconAnimation?: boolean;\n isSelected?: boolean;\n /**\n * 子节点受父节点控制设置 `true`,需要配合 `multiple` 参数使用。\n */\n checkStrictly?: boolean;\n /**\n * 支持点选多个节点\n */\n multiple?: boolean;\n renderTitle?: (\n item: TreeData,\n node: TreeRenderTitleNode<T>,\n ) => React.ReactElement;\n onExpand?: (\n key: TreeData['key'],\n expanded: boolean,\n item: TreeData,\n evn: React.MouseEvent<HTMLElement>,\n ) => void;\n onSelected?: (\n keys: TreeData['key'][],\n key: TreeData['key'],\n selected: boolean,\n item: TreeData,\n evn: React.MouseEvent<HTMLElement>,\n ) => void;\n}\n\nexport interface TreeData {\n label?: React.ReactNode;\n children?: TreeData[];\n key?: string | number;\n [keyName: string]: any;\n}\n\nexport interface TreeState {\n openKeys?: TreeData['key'][];\n selectedKeys?: TreeData['key'][];\n halfCheckedKeys?: TreeData['key'][];\n}\n\nconst noop = () => undefined;\n\n/**\n * a contains b\n * @param {Array} a\n * @param {Array} b\n */\nconst isContained = (a: any[], b: any[]) => {\n if (!(a instanceof Array) || !(b instanceof Array)) return false;\n if (a.length < b.length) return false;\n const aStr = a.toString();\n for (let i = 0, len = b.length; i < len; i += 1) {\n if (aStr.indexOf(b[i]) === -1) return false;\n }\n return true;\n};\n\nconst getChildKeys = (\n childs: TreeData[] = [],\n result: TreeData['key'][] = [],\n): TreeData['key'][] => {\n childs.forEach((item) => {\n result.push(item.key as string | number);\n if (item.children && item.children.length > 0) {\n result = result.concat(getChildKeys(item.children));\n }\n });\n return result;\n};\n\nconst getParentKeys = (\n childs: TreeData = {},\n result: TreeData['key'][] = [],\n) => {\n if (childs.key) {\n result.push(childs.key);\n }\n if (childs.parent) {\n result = getParentKeys(childs.parent, result);\n }\n return result;\n};\n\nconst getParentSelectKeys = (\n childs: TreeData = {},\n selectedKeys: TreeData['key'][] = [],\n result: TreeData['key'][] = [],\n) => {\n if (\n childs.key &&\n childs.children &&\n isContained(selectedKeys, getChildKeys(childs.children))\n ) {\n result.push(childs.key);\n if (childs.parent && !childs.parent.parent) {\n if (isContained(selectedKeys, getChildKeys(childs.children))) {\n selectedKeys = selectedKeys.concat(result);\n }\n if (isContained(selectedKeys, getChildKeys(childs.parent.children))) {\n result.push(childs.parent.key);\n }\n }\n }\n if (childs.parent) {\n result = getParentSelectKeys(childs.parent, selectedKeys, result);\n }\n return result;\n};\n\nexport default class Tree<T> extends React.Component<TreeProps<T>, TreeState> {\n public static defaultProps: TreeProps<{}> = {\n prefixCls: 'w-tree',\n icon: 'caret-right',\n data: [],\n openKeys: [],\n selectedKeys: [],\n defaultExpandAll: false,\n showLine: false,\n iconAnimation: true,\n isSelected: true,\n checkStrictly: false,\n multiple: false,\n onExpand: noop,\n onSelected: noop,\n };\n constructor(props: TreeProps<T>) {\n super(props);\n this.state = {\n openKeys: props.openKeys || [],\n selectedKeys: props.selectedKeys || [],\n halfCheckedKeys: props.selectedKeys || [],\n };\n }\n componentDidMount() {\n const { defaultExpandAll, data } = this.props;\n const openKeys = getChildKeys(data);\n if (defaultExpandAll) {\n this.setState({ openKeys });\n }\n }\n UNSAFE_componentWillReceiveProps(nextProps: TreeProps<T>) {\n if (nextProps.openKeys !== this.props.openKeys) {\n this.setState({ openKeys: nextProps.openKeys });\n }\n if (nextProps.selectedKeys !== this.props.selectedKeys) {\n this.setState({ selectedKeys: nextProps.selectedKeys });\n }\n }\n onItemSelected(item: TreeData, evn: React.MouseEvent<HTMLElement>) {\n const { onSelected, multiple, checkStrictly } = this.props;\n let selKeys = [...(this.state.selectedKeys as TreeData['key'][])];\n\n const findKey = selKeys.find((v) => v === item.key);\n let selected = false;\n if (!findKey) {\n selected = true;\n selKeys.push(item.key);\n } else {\n selKeys = selKeys.filter((v) => v !== item.key);\n }\n if (checkStrictly) {\n if (!findKey) {\n selKeys = selKeys.concat(\n getChildKeys(item.children).filter(\n (val) => selKeys.indexOf(val) === -1,\n ),\n );\n selKeys = selKeys.concat(getParentSelectKeys(item, selKeys));\n selKeys = Array.from(new Set(selKeys)); // Remove duplicates.\n } else {\n selKeys = selKeys.filter(\n (val) => getChildKeys(item.children).indexOf(val) === -1,\n );\n selKeys = selKeys.filter(\n (val) => getParentKeys(item.parent).indexOf(val) === -1,\n );\n }\n }\n if (!multiple) {\n selKeys = !findKey ? [item.key] : [];\n }\n this.setState({ selectedKeys: selKeys }, () => {\n onSelected && onSelected(selKeys, item.key, selected, item, evn);\n });\n }\n onExit = (node: HTMLElement) => {\n node.style.height = `${node.scrollHeight}px`;\n };\n onExiting = (node: HTMLElement) => {\n node.style.height = '1px';\n };\n onEnter = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = '1px';\n };\n onEntering = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = `${node.scrollHeight}px`;\n };\n onEntered = (node: HTMLElement, isAppearing: boolean) => {\n node.style.height = 'initial';\n };\n onItemClick(item: TreeData, evn: React.MouseEvent<HTMLElement>) {\n if (!item.children) {\n return;\n }\n const { onExpand } = this.props;\n const { openKeys } = this.state;\n let currentKeys = [...(openKeys as TreeData['key'][])];\n const key = currentKeys.find((v) => v === item.key);\n const cls = evn.currentTarget.className.replace(/(\\s)open/g, '');\n let expanded = false;\n if (!key && item.key) {\n currentKeys.push(item.key);\n evn.currentTarget.className = [cls, 'open']\n .filter(Boolean)\n .join(' ')\n .trim();\n expanded = true;\n } else {\n currentKeys = currentKeys.filter((v) => v !== item.key);\n evn.currentTarget.className = cls;\n }\n this.setState({ openKeys: currentKeys }, () => {\n onExpand && onExpand(item.key, expanded, item, evn);\n });\n }\n renderTreeNode(data: TreeData[], level: number, parent?: TreeData) {\n const {\n prefixCls,\n renderTitle,\n icon,\n iconAnimation,\n isSelected,\n } = this.props;\n const { openKeys, selectedKeys } = this.state;\n let isOpen = false;\n\n if (parent && parent.key) {\n isOpen = !!(openKeys && openKeys.indexOf(parent.key) > -1);\n }\n return (\n <CSSTransition\n classNames={prefixCls}\n in={isOpen}\n timeout={200}\n onExit={this.onExit}\n onExiting={this.onExiting}\n onEnter={this.onEnter}\n onEntered={this.onEntered}\n onEntering={this.onEntering}\n >\n <ul\n className={[\n level !== 1 && isOpen ? [`${prefixCls}-open`] : null,\n level !== 1 && !isOpen ? [`${prefixCls}-close`] : null,\n ]\n .filter(Boolean)\n .join(' ')\n .trim()}\n >\n {data.map((item, idx: number) => {\n item.parent = parent;\n const selected = !!(\n selectedKeys && selectedKeys.indexOf(item.key) > -1\n );\n const noChild = !item.children;\n const itemIsOpen =\n openKeys && openKeys.indexOf(item.key) > -1 && !!item.children;\n const iconItem =\n typeof icon === 'function'\n ? icon(item, {\n isOpen: !!itemIsOpen,\n noChild,\n openKeys,\n selectedKeys,\n })\n : icon;\n const childKeys = noChild ? [] : getChildKeys(item.children);\n const checkedKeys = selectedKeys\n ? selectedKeys.filter((key) => childKeys.indexOf(key) > -1)\n : [];\n const isHalfChecked =\n checkedKeys.length > 0 && childKeys.length !== checkedKeys.length;\n return (\n <li key={idx}>\n <div className={`${prefixCls}-label`}>\n <span\n className={`${prefixCls}-switcher`}\n onClick={this.onItemClick.bind(this, item)}\n >\n <Icon\n type={iconItem || 'caret-right'}\n className={[\n typeof icon === 'function'\n ? `${prefixCls}-switcher-noop`\n : null,\n noChild ? 'no-child' : null,\n !iconAnimation ? 'no-animation' : null,\n itemIsOpen ? 'open' : null,\n ]\n .filter(Boolean)\n .join(' ')\n .trim()}\n />\n </span>\n <div\n onClick={this.onItemSelected.bind(this, item)}\n className={[\n `${prefixCls}-title`,\n selected && isSelected ? 'selected' : null,\n item.disabled ? 'disabled' : null,\n ]\n .filter(Boolean)\n .join(' ')\n .trim()}\n >\n {renderTitle ? (\n renderTitle(item, {\n selected,\n noChild,\n openKeys,\n isHalfChecked,\n selectedKeys,\n })\n ) : (\n <span>{item.label}</span>\n )}\n </div>\n </div>\n {item.children &&\n this.renderTreeNode(item.children, level + 1, item)}\n </li>\n );\n })}\n </ul>\n </CSSTransition>\n );\n }\n render() {\n const {\n prefixCls,\n className,\n icon,\n data,\n openKeys,\n selectedKeys,\n isSelected,\n autoExpandParent,\n defaultExpandAll,\n checkStrictly,\n showLine,\n iconAnimation,\n renderTitle,\n onExpand,\n onSelected,\n ...elementProps\n } = this.props;\n const cls = [className, prefixCls, showLine ? `${prefixCls}-line` : null]\n .filter(Boolean)\n .join(' ')\n .trim();\n return (\n <div className={cls} {...elementProps}>\n {this.renderTreeNode(data as TreeData[], 1)}\n </div>\n );\n }\n}\n"]}
{
"name": "@uiw/react-tree",
"version": "4.6.9",
"version": "4.6.10",
"description": "Tree component",

@@ -45,5 +45,4 @@ "author": "Kenny Wong <wowohoo@qq.com>",

"dependencies": {
"@uiw/react-icon": "^4.6.9",
"@uiw/utils": "^4.6.9",
"classnames": "2.2.6",
"@uiw/react-icon": "^4.6.10",
"@uiw/utils": "^4.6.10",
"react-transition-group": "^4.3.0"

@@ -53,3 +52,2 @@ },

"@babel/runtime": "7.10.4",
"@types/classnames": "2.2.10",
"@types/jest": "25.2.1",

@@ -62,3 +60,3 @@ "@types/react": "16.9.41",

},
"gitHead": "aff63672294a768b0730a6eaed73463c3b5b3ace"
"gitHead": "dd796bd87132b68aee9dfe1faeb73eccc378bc60"
}
import React from 'react';
import classnames from 'classnames';
import { CSSTransition } from 'react-transition-group';

@@ -244,3 +243,6 @@ import Icon, { IconProps } from '@uiw/react-icon';

currentKeys.push(item.key);
evn.currentTarget.className = classnames(cls, 'open');
evn.currentTarget.className = [cls, 'open']
.filter(Boolean)
.join(' ')
.trim();
expanded = true;

@@ -281,6 +283,9 @@ } else {

<ul
className={classnames({
[`${prefixCls}-open`]: level !== 1 && isOpen,
[`${prefixCls}-close`]: level !== 1 && !isOpen,
})}
className={[
level !== 1 && isOpen ? [`${prefixCls}-open`] : null,
level !== 1 && !isOpen ? [`${prefixCls}-close`] : null,
]
.filter(Boolean)
.join(' ')
.trim()}
>

@@ -312,3 +317,3 @@ {data.map((item, idx: number) => {

<li key={idx}>
<div className={classnames(`${prefixCls}-label`)}>
<div className={`${prefixCls}-label`}>
<span

@@ -320,9 +325,13 @@ className={`${prefixCls}-switcher`}

type={iconItem || 'caret-right'}
className={classnames({
[`${prefixCls}-switcher-noop`]:
typeof icon === 'function',
'no-child': noChild,
'no-animation': !iconAnimation,
open: itemIsOpen,
})}
className={[
typeof icon === 'function'
? `${prefixCls}-switcher-noop`
: null,
noChild ? 'no-child' : null,
!iconAnimation ? 'no-animation' : null,
itemIsOpen ? 'open' : null,
]
.filter(Boolean)
.join(' ')
.trim()}
/>

@@ -332,6 +341,10 @@ </span>

onClick={this.onItemSelected.bind(this, item)}
className={classnames(`${prefixCls}-title`, {
selected: selected && isSelected,
disabled: item.disabled,
})}
className={[
`${prefixCls}-title`,
selected && isSelected ? 'selected' : null,
item.disabled ? 'disabled' : null,
]
.filter(Boolean)
.join(' ')
.trim()}
>

@@ -379,5 +392,6 @@ {renderTitle ? (

} = this.props;
const cls = classnames(className, prefixCls, {
[`${prefixCls}-line`]: showLine,
});
const cls = [className, prefixCls, showLine ? `${prefixCls}-line` : null]
.filter(Boolean)
.join(' ')
.trim();
return (

@@ -384,0 +398,0 @@ <div className={cls} {...elementProps}>