UNPKG

tdesign-react

Version:
173 lines (169 loc) 7.42 kB
/** * tdesign v1.15.1 * (c) 2025 tdesign * @license MIT */ import { _ as _toConsumableArray } from '../_chunks/dep-87d110df.js'; import { _ as _defineProperty } from '../_chunks/dep-cb0a3966.js'; import { _ as _objectWithoutProperties } from '../_chunks/dep-6b660ef0.js'; import React, { useCallback, useMemo, Children } from 'react'; import classNames from 'classnames'; import { EllipsisIcon } from 'tdesign-icons-react'; import { isFunction } from 'lodash-es'; import { l as log } from '../_chunks/dep-b908e1fe.js'; import useConfig from '../hooks/useConfig.js'; import forwardRefWithStatics from '../_util/forwardRefWithStatics.js'; import BreadcrumbItem from './BreadcrumbItem.js'; import { BreadcrumbContext } from './BreadcrumbContext.js'; import { breadcrumbDefaultProps } from './defaultProps.js'; import useDefaultProps from '../hooks/useDefaultProps.js'; import '../_chunks/dep-026a4c6b.js'; import '../_chunks/dep-eca3a3de.js'; import '../config-provider/ConfigContext.js'; import '../_chunks/dep-f97636ce.js'; import '../_chunks/dep-9dbbf468.js'; import 'dayjs'; import 'hoist-non-react-statics'; import '../_chunks/dep-48805ab8.js'; import '../hooks/useGlobalIcon.js'; import '../hooks/useCommonClassName.js'; import '../_util/parseTNode.js'; import '../tooltip/index.js'; import '../tooltip/Tooltip.js'; import '../popup/index.js'; import '../popup/Popup.js'; import 'react-transition-group'; import '../_util/ref.js'; import 'react-is'; import '../_util/isFragment.js'; import '../_chunks/dep-3a09424a.js'; import '../common/Portal.js'; import 'react-dom'; import '../hooks/useLayoutEffect.js'; import '../hooks/useAnimation.js'; import '../hooks/useAttach.js'; import '../hooks/useControlled.js'; import '../_util/noop.js'; import '../hooks/useMutationObserver.js'; import '../hooks/useLatest.js'; import '../hooks/usePopper.js'; import '@popperjs/core'; import 'react-fast-compare'; import '../hooks/useWindowSize.js'; import '../popup/defaultProps.js'; import '../popup/hooks/useTrigger.js'; import '../_util/composeRefs.js'; import '../_util/listener.js'; import '../popup/utils/transition.js'; import '../popup/PopupPlugin.js'; import '../_chunks/dep-52ff3837.js'; import '../_util/react-render.js'; import '../common/PluginContainer.js'; import '../config-provider/ConfigProvider.js'; import '../tooltip/defaultProps.js'; import '../tooltip/TooltipLite.js'; import '../hooks/useSwitch.js'; import '../hooks/usePersistFn.js'; import '../_util/scroll.js'; import 'raf'; import '../_util/easing.js'; var _excluded = ["children", "options", "separator", "maxItemWidth", "className", "maxItems", "itemsAfterCollapse", "itemsBeforeCollapse", "ellipsis"]; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var Breadcrumb = forwardRefWithStatics(function (props, ref) { var _useDefaultProps = useDefaultProps(props, breadcrumbDefaultProps), children = _useDefaultProps.children, options = _useDefaultProps.options, separator = _useDefaultProps.separator, maxItemWidth = _useDefaultProps.maxItemWidth, className = _useDefaultProps.className, maxItems = _useDefaultProps.maxItems, itemsAfterCollapse = _useDefaultProps.itemsAfterCollapse, itemsBeforeCollapse = _useDefaultProps.itemsBeforeCollapse, ellipsis = _useDefaultProps.ellipsis, restProps = _objectWithoutProperties(_useDefaultProps, _excluded); var _useConfig = useConfig(), classPrefix = _useConfig.classPrefix; var renderOptionsToItems = useCallback(function (options2) { if (!options2 || !options2.length) { return void 0; } return options2.map(function (option, index) { var targetProps = {}; if (option.target) { targetProps.target = option.target; } return /* @__PURE__ */React.createElement(BreadcrumbItem, _objectSpread(_objectSpread({}, targetProps), {}, { key: index, maxWidth: option.maxWidth, disabled: option.disabled, href: option.href, to: option.to, router: option.router, replace: option.replace, separator: separator, maxItemWidth: maxItemWidth, icon: option.icon, content: option.content }), option.content || option.children); }); }, [maxItemWidth, separator]); var renderEllipsis = useCallback(function (items) { if (!ellipsis) { return /* @__PURE__ */React.createElement(EllipsisIcon, null); } if (isFunction(ellipsis)) { return ellipsis({ items: items, separator: separator }); } return ellipsis; }, [ellipsis, separator]); var content = useMemo(function () { var _items; var items = renderOptionsToItems(options) || Children.toArray(children); var itemsCount = ((_items = items) === null || _items === void 0 ? void 0 : _items.length) || 0; if (!items || !maxItems) { return items; } if (maxItems >= itemsCount) { return items; } if (maxItems && (!itemsBeforeCollapse || !itemsAfterCollapse)) { log.error("Breadcrumb", "\u9700\u8981\u8BBE\u7F6E itemsBeforeCollapse \u548C itemsAfterCollapse \u5C5E\u6027\u6765\u63A7\u5236\u7701\u7565\u53F7\u524D\u540E\u7684\u663E\u793A\u9879\u6570\u3002"); return items; } if (maxItems && maxItems < (itemsAfterCollapse || 0) + (itemsBeforeCollapse || 0)) { log.error("Breadcrumb", "maxItems={".concat(maxItems, "} \u5FC5\u987B\u5927\u4E8E\u6216\u7B49\u4E8E itemsBeforeCollapse={").concat(itemsBeforeCollapse, "} + itemsAfterCollapse={").concat(itemsAfterCollapse, "}")); return items; } var startCount = itemsBeforeCollapse; var endCount = itemsAfterCollapse; var collapsedItems = items.slice(startCount, itemsCount - endCount); var beforeItems = items.slice(0, startCount); var afterItems = items.slice(itemsCount - endCount); var ellipsis2 = renderEllipsis(collapsedItems.map(function (item) { return item.props; })); items = [].concat(_toConsumableArray(beforeItems), [/* @__PURE__ */React.createElement(BreadcrumbItem, { key: "ellipsis", readOnly: true }, ellipsis2)], _toConsumableArray(afterItems)); return items; }, [renderOptionsToItems, options, children, maxItems, itemsBeforeCollapse, itemsAfterCollapse, renderEllipsis]); return /* @__PURE__ */React.createElement(BreadcrumbContext.Provider, { value: { maxItemWidthInContext: maxItemWidth, separator: separator } }, /* @__PURE__ */React.createElement("div", _objectSpread({ ref: ref, className: classNames("".concat(classPrefix, "-breadcrumb"), className) }, restProps), content)); }, { BreadcrumbItem: BreadcrumbItem }); Breadcrumb.displayName = "Breadcrumb"; export { Breadcrumb as default }; //# sourceMappingURL=Breadcrumb.js.map