1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.getBreadcrumbProps = exports.getBreadcrumbFromProps = exports.getBreadcrumb = exports.genBreadcrumbProps = void 0;
|
9 |
|
10 | var _react = _interopRequireDefault(require("react"));
|
11 |
|
12 | var _pathToRegexp = _interopRequireDefault(require("path-to-regexp"));
|
13 |
|
14 | var _pathTools = require("./pathTools");
|
15 |
|
16 |
|
17 |
|
18 | var defaultItemRender = function defaultItemRender(_ref) {
|
19 | var breadcrumbName = _ref.breadcrumbName,
|
20 | path = _ref.path;
|
21 | return _react.default.createElement("a", {
|
22 | href: path
|
23 | }, breadcrumbName);
|
24 | };
|
25 |
|
26 | var renderItemLocal = function renderItemLocal(item, props) {
|
27 | var formatMessage = props.formatMessage,
|
28 | menu = props.menu;
|
29 |
|
30 | if (item.locale && formatMessage && (menu === null || menu === void 0 ? void 0 : menu.locale) !== false) {
|
31 | return formatMessage({
|
32 | id: item.locale,
|
33 | defaultMessage: item.name
|
34 | });
|
35 | }
|
36 |
|
37 | return item.name;
|
38 | };
|
39 |
|
40 | var getBreadcrumb = function getBreadcrumb(breadcrumbMap, url) {
|
41 | var breadcrumbItem = breadcrumbMap.get(url);
|
42 |
|
43 | if (!breadcrumbItem) {
|
44 |
|
45 |
|
46 | var keys = Array.from(breadcrumbMap.keys()) || [];
|
47 | var targetPath = keys.find(function (path) {
|
48 | return (
|
49 | (0, _pathToRegexp.default)(path.replace('?', '')).test(url)
|
50 | );
|
51 | });
|
52 | if (targetPath) breadcrumbItem = breadcrumbMap.get(targetPath);
|
53 | }
|
54 |
|
55 | return breadcrumbItem || {
|
56 | path: ''
|
57 | };
|
58 | };
|
59 |
|
60 | exports.getBreadcrumb = getBreadcrumb;
|
61 |
|
62 | var getBreadcrumbFromProps = function getBreadcrumbFromProps(props) {
|
63 | var location = props.location,
|
64 | breadcrumbMap = props.breadcrumbMap;
|
65 | return {
|
66 | location: location,
|
67 | breadcrumbMap: breadcrumbMap
|
68 | };
|
69 | };
|
70 |
|
71 | exports.getBreadcrumbFromProps = getBreadcrumbFromProps;
|
72 |
|
73 | var conversionFromLocation = function conversionFromLocation(routerLocation, breadcrumbMap, props) {
|
74 |
|
75 | var pathSnippets = (0, _pathTools.urlToList)(routerLocation === null || routerLocation === void 0 ? void 0 : routerLocation.pathname);
|
76 |
|
77 | var extraBreadcrumbItems = pathSnippets.map(function (url) {
|
78 | var currentBreadcrumb = getBreadcrumb(breadcrumbMap, url);
|
79 | var name = renderItemLocal(currentBreadcrumb, props);
|
80 | var hideInBreadcrumb = currentBreadcrumb.hideInBreadcrumb;
|
81 | return name && !hideInBreadcrumb ? {
|
82 | path: url,
|
83 | breadcrumbName: name,
|
84 | component: currentBreadcrumb.component
|
85 | } : {
|
86 | path: '',
|
87 | breadcrumbName: ''
|
88 | };
|
89 | }).filter(function (item) {
|
90 | return item && item.path;
|
91 | });
|
92 | return extraBreadcrumbItems;
|
93 | };
|
94 |
|
95 |
|
96 |
|
97 | var genBreadcrumbProps = function genBreadcrumbProps(props) {
|
98 | var _getBreadcrumbFromPro = getBreadcrumbFromProps(props),
|
99 | location = _getBreadcrumbFromPro.location,
|
100 | breadcrumbMap = _getBreadcrumbFromPro.breadcrumbMap;
|
101 |
|
102 |
|
103 |
|
104 | if (location && location.pathname && breadcrumbMap) {
|
105 | return conversionFromLocation(location, breadcrumbMap, props);
|
106 | }
|
107 |
|
108 | return [];
|
109 | };
|
110 |
|
111 |
|
112 | exports.genBreadcrumbProps = genBreadcrumbProps;
|
113 |
|
114 | var getBreadcrumbProps = function getBreadcrumbProps(props, layoutPros) {
|
115 | var breadcrumbRender = props.breadcrumbRender,
|
116 | propsItemRender = props.itemRender;
|
117 |
|
118 | var _ref2 = layoutPros.breadcrumbProps || {},
|
119 | _ref2$minLength = _ref2.minLength,
|
120 | minLength = _ref2$minLength === void 0 ? 2 : _ref2$minLength;
|
121 |
|
122 | var routesArray = genBreadcrumbProps(props);
|
123 | var itemRender = propsItemRender || defaultItemRender;
|
124 | var routes = routesArray;
|
125 |
|
126 | if (breadcrumbRender) {
|
127 | routes = breadcrumbRender(routes) || [];
|
128 | }
|
129 |
|
130 | if (routes && routes.length < minLength || breadcrumbRender === false) {
|
131 | routes = undefined;
|
132 | }
|
133 |
|
134 | return {
|
135 | routes: routes,
|
136 | itemRender: itemRender
|
137 | };
|
138 | };
|
139 |
|
140 | exports.getBreadcrumbProps = getBreadcrumbProps; |
\ | No newline at end of file |