UNPKG

@ant-design/x

Version:

Craft AI-driven interfaces effortlessly

136 lines (125 loc) 4.83 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _pickAttrs = _interopRequireDefault(require("@rc-component/util/lib/pickAttrs")); var _clsx = require("clsx"); var _react = _interopRequireDefault(require("react")); var _useCollapsible = _interopRequireDefault(require("../_util/hooks/use-collapsible")); var _useProxyImperativeHandle = _interopRequireDefault(require("../_util/hooks/use-proxy-imperative-handle")); var _useXComponentConfig = _interopRequireDefault(require("../_util/hooks/use-x-component-config")); var _xProvider = require("../x-provider"); var _Item = _interopRequireDefault(require("./Item")); var _Node = _interopRequireWildcard(require("./Node")); var _style = _interopRequireDefault(require("./style")); const ForwardThoughtChain = /*#__PURE__*/_react.default.forwardRef((props, ref) => { const { prefixCls: customizePrefixCls, className, items, defaultExpandedKeys, expandedKeys: customExpandedKeys, onExpand, rootClassName, styles = {}, classNames = {}, line = true, style, ...restProps } = props; const domProps = (0, _pickAttrs.default)(restProps, { attr: true, aria: true, data: true }); // ============================ Prefix ============================ const { direction, getPrefixCls } = (0, _xProvider.useXProviderContext)(); const prefixCls = getPrefixCls('thought-chain', customizePrefixCls); // ===================== Component Config ========================= const contextConfig = (0, _useXComponentConfig.default)('thoughtChain'); // ============================ Style ============================ const [hashId, cssVarCls] = (0, _style.default)(prefixCls); const mergedCls = (0, _clsx.clsx)(className, prefixCls, contextConfig.className, contextConfig.classNames.root, rootClassName, hashId, cssVarCls, className, classNames.root, `${prefixCls}-box`, { [`${prefixCls}-rtl`]: direction === 'rtl' }); // ============================ Item Collapsible ============================ const rootPrefixCls = getPrefixCls(); const collapsibleOptions = { defaultExpandedKeys, expandedKeys: customExpandedKeys, onExpand }; const [_, expandedKeys, onItemExpand, collapseMotion] = (0, _useCollapsible.default)(collapsibleOptions, prefixCls, rootPrefixCls); // ============================= Refs ============================= const thoughtChainRef = _react.default.useRef(null); (0, _useProxyImperativeHandle.default)(ref, () => { return { nativeElement: thoughtChainRef.current }; }); // ============================ Render ============================ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ ref: thoughtChainRef, className: mergedCls }, domProps, { style: { ...contextConfig.style, ...styles.root, ...style } }), /*#__PURE__*/_react.default.createElement(_Node.ThoughtChainContext.Provider, { value: { prefixCls, expandedKeys, onItemExpand, collapseMotion, classNames: { itemHeader: (0, _clsx.clsx)(contextConfig.classNames.itemHeader, classNames.itemHeader), itemContent: (0, _clsx.clsx)(contextConfig.classNames.itemContent, classNames.itemContent), itemFooter: (0, _clsx.clsx)(contextConfig.classNames.itemFooter, classNames.itemFooter), itemIcon: (0, _clsx.clsx)(contextConfig.classNames.itemIcon, classNames.itemIcon) }, styles: { itemHeader: { ...contextConfig.styles.itemHeader, ...styles.itemHeader }, itemContent: { ...contextConfig.styles.itemContent, ...styles.itemContent }, itemFooter: { ...contextConfig.styles.itemFooter, ...styles.itemFooter }, itemIcon: { ...contextConfig.styles.itemIcon, ...styles.itemIcon } } } }, items?.map((item, index) => /*#__PURE__*/_react.default.createElement(_Node.default, { key: item.key || `key_${index}`, index: index, line: line, className: (0, _clsx.clsx)(contextConfig.classNames.item, classNames.item), style: { ...contextConfig.styles.item, ...styles.item }, info: item })))); }); const ThoughtChain = ForwardThoughtChain; ThoughtChain.Item = _Item.default; if (process.env.NODE_ENV !== 'production') { ThoughtChain.displayName = 'ThoughtChain'; } var _default = exports.default = ThoughtChain;