UNPKG

@angeloreppucci/ant-design-pro-layout

Version:

ant-design-pro layout, easy to use pro scaffolding.

156 lines (120 loc) 4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSelectedMenuKeys = exports.getMenuMatches = exports.genKeysToArray = exports.getFlatMenus = exports.getFlatMenuKeys = void 0; var _pathToRegexp = _interopRequireDefault(require("path-to-regexp")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } /** * Recursively flatten the data * [{path:string},{path:string}] => {path,path2} * @param menus */ var getFlatMenuKeys = function getFlatMenuKeys() { var menuData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var keys = []; menuData.forEach(function (item) { if (!item) { return; } keys.push(item.path || '/'); if (item.children) { keys = keys.concat(getFlatMenuKeys(item.children)); } }); return keys; }; /** * 获取打平的 menuData * 已 path 为key * @param menuData */ exports.getFlatMenuKeys = getFlatMenuKeys; var getFlatMenus = function getFlatMenus() { var menuData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var menus = {}; menuData.forEach(function (item) { if (!item || item.hideInMenu) { return; } menus[item.path || '/'] = item; if (item.children && !item.hideChildrenInMenu) { menus = Object.assign(Object.assign({}, menus), getFlatMenus(item.children)); } }); return menus; }; /** * a-b-c * [ * "a", * "a-b", * "a-b-c" * ] * @param menuKey */ exports.getFlatMenus = getFlatMenus; var genKeysToArray = function genKeysToArray(menuKey) { var keys = menuKey.split('-'); var keyArray = []; keys.forEach(function (key, index) { if (index === 0) { keyArray.push(key); return; } keyArray.push(keys.slice(0, index + 1).join('-')); }); return keyArray; }; exports.genKeysToArray = genKeysToArray; var getMenuMatches = function getMenuMatches() { var flatMenuKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var path = arguments.length > 1 ? arguments[1] : undefined; return flatMenuKeys.filter(function (item) { if (item === '/' && path === '/') { return true; } if (item !== '/' && item) { // /a if ((0, _pathToRegexp.default)("".concat(item)).test(path)) { return true; } // /a/b/b if ((0, _pathToRegexp.default)("".concat(item, "(.*)")).test(path)) { return true; } } return false; }).sort(function (a, b) { // 如果完全匹配放到最后面 if (a === path) { return 10; } if (b === path) { return -10; } return a.substr(1).split('/').length - b.substr(1).split('/').length; }).pop(); }; // 获取当前的选中菜单 exports.getMenuMatches = getMenuMatches; var getSelectedMenuKeys = function getSelectedMenuKeys(pathname) { var flatMenus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var flatMenuKeys = arguments.length > 2 ? arguments[2] : undefined; var menuPathKey = getMenuMatches(flatMenuKeys, pathname || '/'); if (!menuPathKey) { return []; } var menuItem = flatMenus[menuPathKey] || { parentKeys: '', key: '' }; var keys = _toConsumableArray(menuItem.parentKeys || []); if (menuItem.key) { keys.push(menuItem.key); } return keys; }; exports.getSelectedMenuKeys = getSelectedMenuKeys;