1 | "use client";
|
2 |
|
3 | var __rest = this && this.__rest || function (s, e) {
|
4 | var t = {};
|
5 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
6 | if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
7 | if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
8 | }
|
9 | return t;
|
10 | };
|
11 | import * as React from 'react';
|
12 | import classNames from 'classnames';
|
13 | import pickAttrs from "rc-util/es/pickAttrs";
|
14 | function getBreadcrumbName(route, params) {
|
15 | if (route.title === undefined || route.title === null) {
|
16 | return null;
|
17 | }
|
18 | const paramsKeys = Object.keys(params).join('|');
|
19 | return typeof route.title === 'object' ? route.title : String(route.title).replace(new RegExp(`:(${paramsKeys})`, 'g'), (replacement, key) => params[key] || replacement);
|
20 | }
|
21 | export function renderItem(prefixCls, item, children, href) {
|
22 | if (children === null || children === undefined) {
|
23 | return null;
|
24 | }
|
25 | const {
|
26 | className,
|
27 | onClick
|
28 | } = item,
|
29 | restItem = __rest(item, ["className", "onClick"]);
|
30 | const passedProps = Object.assign(Object.assign({}, pickAttrs(restItem, {
|
31 | data: true,
|
32 | aria: true
|
33 | })), {
|
34 | onClick
|
35 | });
|
36 | if (href !== undefined) {
|
37 | return React.createElement("a", Object.assign({}, passedProps, {
|
38 | className: classNames(`${prefixCls}-link`, className),
|
39 | href: href
|
40 | }), children);
|
41 | }
|
42 | return React.createElement("span", Object.assign({}, passedProps, {
|
43 | className: classNames(`${prefixCls}-link`, className)
|
44 | }), children);
|
45 | }
|
46 | export default function useItemRender(prefixCls, itemRender) {
|
47 | const mergedItemRender = (item, params, routes, path, href) => {
|
48 | if (itemRender) {
|
49 | return itemRender(item, params, routes, path);
|
50 | }
|
51 | const name = getBreadcrumbName(item, params);
|
52 | return renderItem(prefixCls, item, name, href);
|
53 | };
|
54 | return mergedItemRender;
|
55 | } |
\ | No newline at end of file |