You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
var __rest = (this && this.__rest) || function (s, e) { |
|
var t = {}; |
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) |
|
t[p] = s[p]; |
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") |
|
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { |
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) |
|
t[p[i]] = s[p[i]]; |
|
} |
|
return t; |
|
}; |
|
import { createContext } from 'react'; |
|
import { isEmpty, head, map } from 'lodash'; |
|
import LRU from 'lru-cache'; |
|
export const urlCacheData = new LRU({}); |
|
export const UserMenuContext = createContext(null); |
|
//获取首个路由path |
|
export function getPath(menu) { |
|
let path; |
|
(function getRoute(menu = []) { |
|
if (isEmpty(menu.routes)) { |
|
path = menu.path; |
|
} |
|
else { |
|
getRoute(head(menu.routes)); |
|
} |
|
})(head(menu)); |
|
return path; |
|
} |
|
//展开菜单 |
|
export function analysisTree(menus, key) { |
|
if (isEmpty(menus)) { |
|
return []; |
|
} |
|
const menu = new Map(); |
|
const convertMenu = (list) => { |
|
list.forEach((item) => { |
|
const { routes = [] } = item, other = __rest(item, ["routes"]); |
|
menu.set(item[key], other); |
|
if (!isEmpty(routes)) { |
|
convertMenu(routes); |
|
} |
|
}); |
|
}; |
|
convertMenu(menus); |
|
return map(Array.from(menu.values()), key); |
|
}
|
|
|