@antdp/basic-layouts
Version:
71 lines • 2.27 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
var _excluded = ["intlLanguage", "children"];
import DocumentTitleDom from '@antdp/document-title';
import { createContext, createElement, useContext, useMemo, useState } from 'react';
import { useLocation } from 'react-router-dom';
// @ts-ignore
import { useAppData } from '@umijs/max';
import { LayoutModel } from './interface';
import { HandleMenu } from './utils';
export var LayoutsContext = /*#__PURE__*/createContext({
HandleMenu: new HandleMenu({
routers: []
}),
collapsed: false,
setCollapsed: () => null,
layout: LayoutModel.MIX
});
export var useLayouts = () => useContext(LayoutsContext);
export var LayoutsProvider = props => {
var {
intlLanguage,
children
} = props,
rest = _objectWithoutPropertiesLoose(props, _excluded);
var [collapsed, setCollapsed] = useState(false);
var location = useLocation();
var {
clientRoutes
} = useAppData();
var layout = props.layout;
var routes = useMemo(() => {
var routes = clientRoutes.find(item => item.path === '/');
return (routes == null ? void 0 : routes.routes) || [];
}, [clientRoutes]);
var Menus = useMemo(() => {
return new HandleMenu({
routers: routes || [],
intlLanguage: intlLanguage,
isCheckAuth: !!ANTD_AUTH_CONF,
isTOPLEFT: layout === LayoutModel.TOPLEFT
});
}, [routes, intlLanguage, layout]);
var title = useMemo(() => {
var item = Menus.getPathItem(location.pathname);
return (item == null ? void 0 : item.name) || '';
}, [location.pathname]);
var renderTitle = useMemo(() => {
var arr = [];
if (title) {
arr.push(title);
}
if (props.projectName) {
arr.push(props.projectName);
}
return arr.filter(Boolean).join('-');
}, [title, props.projectName]);
return /*#__PURE__*/createElement(DocumentTitleDom, {
title: renderTitle,
children: /*#__PURE__*/createElement(LayoutsContext.Provider, {
value: _extends({
HandleMenu: Menus,
collapsed,
setCollapsed,
layout: LayoutModel.MIX,
defultOpenMenus: false
}, rest),
children
})
});
};