UNPKG

auto-breadcrumb

Version:

Auto generate breadcrumb for React-Router 4.xx

58 lines (49 loc) 1.79 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceParams = undefined; var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _reactRouterDom = require('react-router-dom'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var paramRegx = /{{([a-zA-Z_$][a-zA-Z0-9_$]*)}}/; var replaceParams = exports.replaceParams = function replaceParams(names, params) { var match = paramRegx.exec(names); while (match) { names = names.replace(match[0], params[match[1]]); match = paramRegx.exec(names); } return names; }; exports.default = function (url, _ref) { var _ref$staticRoutesMap = _ref.staticRoutesMap, staticRoutesMap = _ref$staticRoutesMap === undefined ? {} : _ref$staticRoutesMap, _ref$dynamicRoutesMap = _ref.dynamicRoutesMap, dynamicRoutesMap = _ref$dynamicRoutesMap === undefined ? {} : _ref$dynamicRoutesMap; var names = staticRoutesMap[url]; if (!names) { (0, _keys2.default)(dynamicRoutesMap).some(function (pathname) { var pathMatchResult = (0, _reactRouterDom.matchPath)(url, { path: pathname, exact: true, strict: true }); if (pathMatchResult) { var params = pathMatchResult.params; names = dynamicRoutesMap[pathname]; if (Array.isArray(names)) { names = names.map(function (name) { return typeof name === 'function' ? name(params) : replaceParams(name, params); }); } else if (typeof names === 'function') { names = names(params); } else { names = replaceParams(names, params); } } return pathMatchResult; }); } return names; };