Tree.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _react = _interopRequireDefault(require("react"));
  9. var _HolderOutlined = _interopRequireDefault(require("@ant-design/icons/HolderOutlined"));
  10. var _classnames = _interopRequireDefault(require("classnames"));
  11. var _rcTree = _interopRequireDefault(require("rc-tree"));
  12. var _motion = _interopRequireDefault(require("../_util/motion"));
  13. var _configProvider = require("../config-provider");
  14. var _internal = require("../theme/internal");
  15. var _style = _interopRequireDefault(require("./style"));
  16. var _dropIndicator = _interopRequireDefault(require("./utils/dropIndicator"));
  17. var _iconUtil = _interopRequireDefault(require("./utils/iconUtil"));
  18. const Tree = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
  19. var _a;
  20. const {
  21. getPrefixCls,
  22. direction,
  23. virtual,
  24. tree
  25. } = _react.default.useContext(_configProvider.ConfigContext);
  26. const {
  27. prefixCls: customizePrefixCls,
  28. className,
  29. showIcon = false,
  30. showLine,
  31. switcherIcon,
  32. switcherLoadingIcon,
  33. blockNode = false,
  34. children,
  35. checkable = false,
  36. selectable = true,
  37. draggable,
  38. motion: customMotion,
  39. style
  40. } = props;
  41. const prefixCls = getPrefixCls('tree', customizePrefixCls);
  42. const rootPrefixCls = getPrefixCls();
  43. const motion = customMotion !== null && customMotion !== void 0 ? customMotion : Object.assign(Object.assign({}, (0, _motion.default)(rootPrefixCls)), {
  44. motionAppear: false
  45. });
  46. const newProps = Object.assign(Object.assign({}, props), {
  47. checkable,
  48. selectable,
  49. showIcon,
  50. motion,
  51. blockNode,
  52. showLine: Boolean(showLine),
  53. dropIndicatorRender: _dropIndicator.default
  54. });
  55. const [wrapCSSVar, hashId, cssVarCls] = (0, _style.default)(prefixCls);
  56. const [, token] = (0, _internal.useToken)();
  57. const itemHeight = token.paddingXS / 2 + (((_a = token.Tree) === null || _a === void 0 ? void 0 : _a.titleHeight) || token.controlHeightSM);
  58. const draggableConfig = _react.default.useMemo(() => {
  59. if (!draggable) {
  60. return false;
  61. }
  62. let mergedDraggable = {};
  63. switch (typeof draggable) {
  64. case 'function':
  65. mergedDraggable.nodeDraggable = draggable;
  66. break;
  67. case 'object':
  68. mergedDraggable = Object.assign({}, draggable);
  69. break;
  70. default:
  71. break;
  72. // Do nothing
  73. }
  74. if (mergedDraggable.icon !== false) {
  75. mergedDraggable.icon = mergedDraggable.icon || /*#__PURE__*/_react.default.createElement(_HolderOutlined.default, null);
  76. }
  77. return mergedDraggable;
  78. }, [draggable]);
  79. const renderSwitcherIcon = nodeProps => (/*#__PURE__*/_react.default.createElement(_iconUtil.default, {
  80. prefixCls: prefixCls,
  81. switcherIcon: switcherIcon,
  82. switcherLoadingIcon: switcherLoadingIcon,
  83. treeNodeProps: nodeProps,
  84. showLine: showLine
  85. }));
  86. return wrapCSSVar(
  87. /*#__PURE__*/
  88. // @ts-ignore
  89. _react.default.createElement(_rcTree.default, Object.assign({
  90. itemHeight: itemHeight,
  91. ref: ref,
  92. virtual: virtual
  93. }, newProps, {
  94. // newProps may contain style so declare style below it
  95. style: Object.assign(Object.assign({}, tree === null || tree === void 0 ? void 0 : tree.style), style),
  96. prefixCls: prefixCls,
  97. className: (0, _classnames.default)({
  98. [`${prefixCls}-icon-hide`]: !showIcon,
  99. [`${prefixCls}-block-node`]: blockNode,
  100. [`${prefixCls}-unselectable`]: !selectable,
  101. [`${prefixCls}-rtl`]: direction === 'rtl'
  102. }, tree === null || tree === void 0 ? void 0 : tree.className, className, hashId, cssVarCls),
  103. direction: direction,
  104. checkable: checkable ? /*#__PURE__*/_react.default.createElement("span", {
  105. className: `${prefixCls}-checkbox-inner`
  106. }) : checkable,
  107. selectable: selectable,
  108. switcherIcon: renderSwitcherIcon,
  109. draggable: draggableConfig
  110. }), children));
  111. });
  112. if (process.env.NODE_ENV !== 'production') {
  113. Tree.displayName = 'Tree';
  114. }
  115. var _default = exports.default = Tree;