qt-public-ui
Version:
新设计规范下业务组件库
92 lines (91 loc) • 4.18 kB
JavaScript
;
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);
});
};