UNPKG

qt-public-ui

Version:

新设计规范下业务组件库

45 lines 1.55 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { matchPath } from 'react-router-dom'; export var isMenuTitle = function isMenuTitle(menu) { return 'children' in menu && menu.children.length > 0; }; export var isAnchor = function isAnchor(menu) { var target = menu.target, link = menu.link; var isTarget = !!target && target !== '_self'; var isHttp = /^(https?:)?\/\//.test(link || ''); return isHttp || isTarget; }; var getFlatMenu = function getFlatMenu(options, flat, _parent) { if (flat === void 0) { flat = []; } options.forEach(function (menu) { if (isMenuTitle(menu)) { getFlatMenu(menu.children, flat, menu.title); } else { var _menu = _parent ? _extends({}, menu, { _parent: _parent }) : _extends({}, menu); flat.push(_menu); } }); return flat; }; export var matchMenu = function matchMenu(options, pathname) { var flatMenu = getFlatMenu(options); var result = {}; flatMenu.some(function (menu) { var _menu$pattern, _menu$pattern$test; // 如果有 pattern 则根据 pattern var matches = menu.pattern ? (_menu$pattern = menu.pattern) === null || _menu$pattern === void 0 ? void 0 : (_menu$pattern$test = _menu$pattern.test) === null || _menu$pattern$test === void 0 ? void 0 : _menu$pattern$test.call(_menu$pattern, pathname) : matchPath(pathname, { path: menu.link }); if (matches) { result.openKey = menu._parent; result.selectedKey = menu.title; } return !!matches; }); return result; };