UNPKG

qt-public-ui

Version:

新设计规范下业务组件库

92 lines (91 loc) 4.18 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.resolvePath = exports["default"] = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = require("react"); var _utils = require("./utils"); var _cloneDeep = _interopRequireDefault(require("clone-deep")); var _reactRouterDom = require("react-router-dom"); var _excluded = ["children"]; /* eslint-disable no-param-reassign */ 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) { (0, _defineProperty2["default"])(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 resolvePath = exports.resolvePath = function resolvePath(path) { var _path = ''; if (path) { _path = path.replace(/\/$/, ''); _path = /^\//.test(_path) ? _path : "/".concat(_path); } for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return args.length >= 1 ? "".concat(_path).concat(resolvePath.apply(void 0, args)) : _path; }; var joinConfigPath = function joinConfigPath(config, parent) { var _ref = config, children = _ref.children, cfg = (0, _objectWithoutProperties2["default"])(_ref, _excluded); var _link = resolvePath(parent, config.link); var _config = _objectSpread(_objectSpread({}, cfg), {}, { link: _link }); if (Array.isArray(config.children)) { _config.children = config.children.map(function (child) { return joinConfigPath(child, _link); }); } return _config; }; var replaceParams = function replaceParams(item, params, defaultParams) { if ((0, _utils.isMenuTitle)(item)) { item.children.forEach(function (it) { replaceParams(it, params, defaultParams); }); } else { var _item$link; var matched = ((_item$link = item.link) === null || _item$link === void 0 ? void 0 : _item$link.match(/:([^/]+)/g)) || []; matched.forEach(function (m) { var key = m.slice(1); item.link = item.link.replace(m, params[key] || defaultParams[key]); }); } return item; }; var _default = exports["default"] = function _default(config) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var deepclone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var _config = deepclone ? (0, _cloneDeep["default"])(config) : config; var _useLocation = (0, _reactRouterDom.useLocation)(), path = _useLocation.pathname; var _options$defaultParam = options.defaultParams, defaultParams = _options$defaultParam === void 0 ? {} : _options$defaultParam; var params = (0, _reactRouterDom.useParams)(); var menu = (0, _react.useRef)([]); if (Array.isArray(_config)) { menu.current = _config.map(function (m) { return joinConfigPath(m); }); } else { Object.entries(_config).some(function (_ref2) { var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2), key = _ref3[0], value = _ref3[1]; var match = (0, _reactRouterDom.matchPath)(path, { path: key }); if (match) { menu.current = value; return true; } return false; }); } return menu.current.map(function (m) { return replaceParams(m, params, defaultParams); }); };