@ant-design/pro-layout
Version:
533 lines (514 loc) • 26.4 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ProLayout = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _proProvider = require("@ant-design/pro-provider");
var _proUtils = require("@ant-design/pro-utils");
var _routeUtils = require("@umijs/route-utils");
var _antd = require("antd");
var _classnames = _interopRequireDefault(require("classnames"));
var _useMergedState3 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
var _omit = _interopRequireDefault(require("rc-util/lib/omit"));
var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
var _react = _interopRequireWildcard(require("react"));
var _swr = _interopRequireWildcard(require("swr"));
var _WrapContent = require("./WrapContent");
var _Logo = require("./assert/Logo");
var _Footer = require("./components/Footer");
var _Header = require("./components/Header");
var _PageLoading = require("./components/PageLoading");
var _SiderMenu = require("./components/SiderMenu");
var _RouteContext = require("./context/RouteContext");
var _defaultSettings = require("./defaultSettings");
var _getPageTitle = require("./getPageTitle");
var _locales = require("./locales");
var _style = require("./style");
var _getBreadcrumbProps = require("./utils/getBreadcrumbProps");
var _getMenuData = require("./utils/getMenuData");
var _useCurrentMenuLayoutProps = require("./utils/useCurrentMenuLayoutProps");
var _utils = require("./utils/utils");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["id", "defaultMessage"],
_excluded2 = ["fixSiderbar", "navTheme", "layout"];
var layoutIndex = 0;
var headerRender = function headerRender(props, matchMenuKeys) {
var _props$stylish;
if (props.headerRender === false || props.pure) {
return null;
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.DefaultHeader, (0, _objectSpread2.default)((0, _objectSpread2.default)({
matchMenuKeys: matchMenuKeys
}, props), {}, {
stylish: (_props$stylish = props.stylish) === null || _props$stylish === void 0 ? void 0 : _props$stylish.header
}));
};
var footerRender = function footerRender(props) {
if (props.footerRender === false || props.pure) {
return null;
}
if (props.footerRender) {
return props.footerRender((0, _objectSpread2.default)({}, props), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Footer.DefaultFooter, {}));
}
return null;
};
var renderSiderMenu = function renderSiderMenu(props, matchMenuKeys) {
var _props$stylish3;
var layout = props.layout,
isMobile = props.isMobile,
selectedKeys = props.selectedKeys,
openKeys = props.openKeys,
splitMenus = props.splitMenus,
suppressSiderWhenMenuEmpty = props.suppressSiderWhenMenuEmpty,
menuRender = props.menuRender;
if (props.menuRender === false || props.pure) {
return null;
}
var menuData = props.menuData;
/** 如果是分割菜单模式,需要专门实现一下 */
if (splitMenus && (openKeys !== false || layout === 'mix') && !isMobile) {
var _ref = selectedKeys || matchMenuKeys,
_ref2 = (0, _slicedToArray2.default)(_ref, 1),
key = _ref2[0];
if (key) {
var _props$menuData;
menuData = ((_props$menuData = props.menuData) === null || _props$menuData === void 0 || (_props$menuData = _props$menuData.find(function (item) {
return item.key === key;
})) === null || _props$menuData === void 0 ? void 0 : _props$menuData.children) || [];
} else {
menuData = [];
}
}
// 这里走了可以少一次循环
var clearMenuData = (0, _utils.clearMenuItem)(menuData || []);
if (clearMenuData && (clearMenuData === null || clearMenuData === void 0 ? void 0 : clearMenuData.length) < 1 && (splitMenus || suppressSiderWhenMenuEmpty)) {
return null;
}
if (layout === 'top' && !isMobile) {
var _props$stylish2;
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SiderMenu.SiderMenu, (0, _objectSpread2.default)((0, _objectSpread2.default)({
matchMenuKeys: matchMenuKeys
}, props), {}, {
hide: true,
stylish: (_props$stylish2 = props.stylish) === null || _props$stylish2 === void 0 ? void 0 : _props$stylish2.sider
}));
}
var defaultDom = /*#__PURE__*/(0, _jsxRuntime.jsx)(_SiderMenu.SiderMenu, (0, _objectSpread2.default)((0, _objectSpread2.default)({
matchMenuKeys: matchMenuKeys
}, props), {}, {
// 这里走了可以少一次循环
menuData: clearMenuData,
stylish: (_props$stylish3 = props.stylish) === null || _props$stylish3 === void 0 ? void 0 : _props$stylish3.sider
}));
if (menuRender) {
return menuRender(props, defaultDom);
}
return defaultDom;
};
var defaultPageTitleRender = function defaultPageTitleRender(pageProps, props) {
var pageTitleRender = props.pageTitleRender;
var pageTitleInfo = (0, _getPageTitle.getPageTitleInfo)(pageProps);
if (pageTitleRender === false) {
return {
title: props.title || '',
id: '',
pageName: ''
};
}
if (pageTitleRender) {
var title = pageTitleRender(pageProps, pageTitleInfo.title, pageTitleInfo);
if (typeof title === 'string') {
return (0, _getPageTitle.getPageTitleInfo)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, pageTitleInfo), {}, {
title: title
}));
}
(0, _warning.default)(typeof title === 'string', 'pro-layout: renderPageTitle return value should be a string');
}
return pageTitleInfo;
};
var getPaddingInlineStart = function getPaddingInlineStart(hasLeftPadding, collapsed, siderWidth) {
if (hasLeftPadding) {
return collapsed ? 64 : siderWidth;
}
return 0;
};
/**
* 🌃 Powerful and easy to use beautiful layout 🏄 Support multiple topics and layout types
*
* @param props
*/
var BaseProLayout = function BaseProLayout(props) {
var _props$prefixCls, _location$pathname, _token$layout, _token$layout2, _token$layout3, _token$layout4, _token$layout5, _token$layout6, _token$layout7, _token$layout8, _token$layout9, _token$layout10, _token$layout11, _token$layout12;
var _ref3 = props || {},
children = _ref3.children,
propsOnCollapse = _ref3.onCollapse,
_ref3$location = _ref3.location,
location = _ref3$location === void 0 ? {
pathname: '/'
} : _ref3$location,
contentStyle = _ref3.contentStyle,
route = _ref3.route,
defaultCollapsed = _ref3.defaultCollapsed,
style = _ref3.style,
propsSiderWidth = _ref3.siderWidth,
menu = _ref3.menu,
siderMenuType = _ref3.siderMenuType,
propsIsChildrenLayout = _ref3.isChildrenLayout,
menuDataRender = _ref3.menuDataRender,
actionRef = _ref3.actionRef,
bgLayoutImgList = _ref3.bgLayoutImgList,
propsFormatMessage = _ref3.formatMessage,
loading = _ref3.loading;
var siderWidth = (0, _react.useMemo)(function () {
if (propsSiderWidth) return propsSiderWidth;
if (props.layout === 'mix') return 215;
return 256;
}, [props.layout, propsSiderWidth]);
var context = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext);
var prefixCls = (_props$prefixCls = props.prefixCls) !== null && _props$prefixCls !== void 0 ? _props$prefixCls : context.getPrefixCls('pro');
var _useMountMergeState = (0, _proUtils.useMountMergeState)(false, {
value: menu === null || menu === void 0 ? void 0 : menu.loading,
onChange: menu === null || menu === void 0 ? void 0 : menu.onLoadingChange
}),
_useMountMergeState2 = (0, _slicedToArray2.default)(_useMountMergeState, 2),
menuLoading = _useMountMergeState2[0],
setMenuLoading = _useMountMergeState2[1];
// give a default key for swr
var _useState = (0, _react.useState)(function () {
layoutIndex += 1;
return "pro-layout-".concat(layoutIndex);
}),
_useState2 = (0, _slicedToArray2.default)(_useState, 1),
defaultId = _useState2[0];
/**
* 处理国际化相关 formatMessage
* 如果有用户配置的以用户为主
* 如果没有用自己实现的
*/
var formatMessage = (0, _react.useCallback)(function (_ref4) {
var id = _ref4.id,
defaultMessage = _ref4.defaultMessage,
restParams = (0, _objectWithoutProperties2.default)(_ref4, _excluded);
if (propsFormatMessage) {
return propsFormatMessage((0, _objectSpread2.default)({
id: id,
defaultMessage: defaultMessage
}, restParams));
}
var locales = (0, _locales.gLocaleObject)();
return locales[id] ? locales[id] : defaultMessage;
}, [propsFormatMessage]);
var _useSWR = (0, _swr.default)([defaultId, menu === null || menu === void 0 ? void 0 : menu.params], /*#__PURE__*/function () {
var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(_ref5) {
var _menu$request;
var _ref7, params, menuDataItems;
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_ref7 = (0, _slicedToArray2.default)(_ref5, 2), params = _ref7[1];
setMenuLoading(true);
_context.next = 4;
return menu === null || menu === void 0 || (_menu$request = menu.request) === null || _menu$request === void 0 ? void 0 : _menu$request.call(menu, params || {}, (route === null || route === void 0 ? void 0 : route.children) || (route === null || route === void 0 ? void 0 : route.routes) || []);
case 4:
menuDataItems = _context.sent;
setMenuLoading(false);
return _context.abrupt("return", menuDataItems);
case 7:
case "end":
return _context.stop();
}
}, _callee);
}));
return function (_x) {
return _ref6.apply(this, arguments);
};
}(), {
revalidateOnFocus: false,
shouldRetryOnError: false,
revalidateOnReconnect: false
}),
data = _useSWR.data,
mutate = _useSWR.mutate,
isLoading = _useSWR.isLoading;
(0, _react.useEffect)(function () {
setMenuLoading(isLoading);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isLoading]);
var _useSWRConfig = (0, _swr.useSWRConfig)(),
cache = _useSWRConfig.cache;
(0, _react.useEffect)(function () {
return function () {
if (cache instanceof Map) cache.delete(defaultId);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
var menuInfoData = (0, _react.useMemo)(function () {
return (0, _getMenuData.getMenuData)(data || (route === null || route === void 0 ? void 0 : route.children) || (route === null || route === void 0 ? void 0 : route.routes) || [], menu, formatMessage, menuDataRender);
}, [formatMessage, menu, menuDataRender, data, route === null || route === void 0 ? void 0 : route.children, route === null || route === void 0 ? void 0 : route.routes]);
var _ref8 = menuInfoData || {},
breadcrumb = _ref8.breadcrumb,
breadcrumbMap = _ref8.breadcrumbMap,
_ref8$menuData = _ref8.menuData,
menuData = _ref8$menuData === void 0 ? [] : _ref8$menuData;
if (actionRef && menu !== null && menu !== void 0 && menu.request) {
actionRef.current = {
reload: function reload() {
mutate();
}
};
}
var matchMenus = (0, _react.useMemo)(function () {
return (0, _routeUtils.getMatchMenu)(location.pathname || '/', menuData || [], true);
}, [location.pathname, menuData]);
var matchMenuKeys = (0, _react.useMemo)(function () {
return Array.from(new Set(matchMenus.map(function (item) {
return item.key || item.path || '';
})));
}, [matchMenus]);
// 当前选中的menu,一般不会为空
var currentMenu = matchMenus[matchMenus.length - 1] || {};
var currentMenuLayoutProps = (0, _useCurrentMenuLayoutProps.useCurrentMenuLayoutProps)(currentMenu);
var _props$currentMenuLay = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), currentMenuLayoutProps),
fixSiderbar = _props$currentMenuLay.fixSiderbar,
navTheme = _props$currentMenuLay.navTheme,
propsLayout = _props$currentMenuLay.layout,
rest = (0, _objectWithoutProperties2.default)(_props$currentMenuLay, _excluded2);
var colSize = (0, _proUtils.useBreakpoint)();
var isMobile = (0, _react.useMemo)(function () {
return (colSize === 'sm' || colSize === 'xs') && !props.disableMobile;
}, [colSize, props.disableMobile]);
// If it is a fix menu, calculate padding
// don't need padding in phone mode
/* Checking if the menu is loading and if it is, it will return a skeleton loading screen. */
var hasLeftPadding = propsLayout !== 'top' && !isMobile;
var _useMergedState = (0, _useMergedState3.default)(function () {
if (defaultCollapsed !== undefined) return defaultCollapsed;
if (process.env.NODE_ENV === 'TEST') return false;
if (isMobile) return true;
if (colSize === 'md') return true;
return false;
}, {
value: props.collapsed,
onChange: propsOnCollapse
}),
_useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
collapsed = _useMergedState2[0],
onCollapse = _useMergedState2[1];
// Splicing parameters, adding menuData and formatMessage in props
var defaultProps = (0, _omit.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
prefixCls: prefixCls
}, props), {}, {
siderWidth: siderWidth
}, currentMenuLayoutProps), {}, {
formatMessage: formatMessage,
breadcrumb: breadcrumb,
menu: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, menu), {}, {
type: siderMenuType || (menu === null || menu === void 0 ? void 0 : menu.type),
loading: menuLoading
}),
layout: propsLayout
}), ['className', 'style', 'breadcrumbRender']);
// gen page title
var pageTitleInfo = defaultPageTitleRender((0, _objectSpread2.default)((0, _objectSpread2.default)({
pathname: location.pathname
}, defaultProps), {}, {
breadcrumbMap: breadcrumbMap
}), props);
// gen breadcrumbProps, parameter for pageHeader
var breadcrumbProps = (0, _getBreadcrumbProps.getBreadcrumbProps)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultProps), {}, {
breadcrumbRender: props.breadcrumbRender,
breadcrumbMap: breadcrumbMap
}), props);
// render sider dom
var siderMenuDom = renderSiderMenu((0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultProps), {}, {
menuData: menuData,
onCollapse: onCollapse,
isMobile: isMobile,
collapsed: collapsed
}), matchMenuKeys);
// render header dom
var headerDom = headerRender((0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultProps), {}, {
children: null,
hasSiderMenu: !!siderMenuDom,
menuData: menuData,
isMobile: isMobile,
collapsed: collapsed,
onCollapse: onCollapse
}), matchMenuKeys);
// render footer dom
var footerDom = footerRender((0, _objectSpread2.default)({
isMobile: isMobile,
collapsed: collapsed
}, defaultProps));
var _useContext = (0, _react.useContext)(_RouteContext.RouteContext),
contextIsChildrenLayout = _useContext.isChildrenLayout;
// 如果 props 中定义,以 props 为准
var isChildrenLayout = propsIsChildrenLayout !== undefined ? propsIsChildrenLayout : contextIsChildrenLayout;
var proLayoutClassName = "".concat(prefixCls, "-layout");
var _useStyle = (0, _style.useStyle)(proLayoutClassName),
wrapSSR = _useStyle.wrapSSR,
hashId = _useStyle.hashId;
// gen className
var className = (0, _classnames.default)(props.className, hashId, 'ant-design-pro', proLayoutClassName, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "screen-".concat(colSize), colSize), "".concat(proLayoutClassName, "-top-menu"), propsLayout === 'top'), "".concat(proLayoutClassName, "-is-children"), isChildrenLayout), "".concat(proLayoutClassName, "-fix-siderbar"), fixSiderbar), "".concat(proLayoutClassName, "-").concat(propsLayout), propsLayout));
/** 计算 slider 的宽度 */
var leftSiderWidth = getPaddingInlineStart(!!hasLeftPadding, collapsed, siderWidth);
// siderMenuDom 为空的时候,不需要 padding
var genLayoutStyle = {
position: 'relative'
};
// if is some layout children, don't need min height
if (isChildrenLayout || contentStyle && contentStyle.minHeight) {
genLayoutStyle.minHeight = 0;
}
/** 页面切换的时候触发 */
(0, _react.useEffect)(function () {
var _props$onPageChange;
(_props$onPageChange = props.onPageChange) === null || _props$onPageChange === void 0 || _props$onPageChange.call(props, props.location);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [location.pathname, (_location$pathname = location.pathname) === null || _location$pathname === void 0 ? void 0 : _location$pathname.search]);
var _useState3 = (0, _react.useState)(false),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
hasFooterToolbar = _useState4[0],
setHasFooterToolbar = _useState4[1];
/**
* 使用number是因为多标签页的时候有多个 PageContainer,只有有任意一个就应该展示这个className
*/
var _useState5 = (0, _react.useState)(0),
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
hasPageContainer = _useState6[0],
setHasPageContainer = _useState6[1];
(0, _proUtils.useDocumentTitle)(pageTitleInfo, props.title || false);
var _useContext2 = (0, _react.useContext)(_proProvider.ProProvider),
token = _useContext2.token;
var bgImgStyleList = (0, _react.useMemo)(function () {
if (bgLayoutImgList && bgLayoutImgList.length > 0) {
return bgLayoutImgList === null || bgLayoutImgList === void 0 ? void 0 : bgLayoutImgList.map(function (item, index) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
src: item.src,
style: (0, _objectSpread2.default)({
position: 'absolute'
}, item)
}, index);
});
}
return null;
}, [bgLayoutImgList]);
return wrapSSR( /*#__PURE__*/(0, _jsxRuntime.jsx)(_RouteContext.RouteContext.Provider, {
value: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultProps), {}, {
breadcrumb: breadcrumbProps,
menuData: menuData,
isMobile: isMobile,
collapsed: collapsed,
hasPageContainer: hasPageContainer,
setHasPageContainer: setHasPageContainer,
isChildrenLayout: true,
title: pageTitleInfo.pageName,
hasSiderMenu: !!siderMenuDom,
hasHeader: !!headerDom,
siderWidth: leftSiderWidth,
hasFooter: !!footerDom,
hasFooterToolbar: hasFooterToolbar,
setHasFooterToolbar: setHasFooterToolbar,
pageTitleInfo: pageTitleInfo,
matchMenus: matchMenus,
matchMenuKeys: matchMenuKeys,
currentMenu: currentMenu
}),
children: props.pure ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
children: children
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
className: className,
children: [bgImgStyleList || (_token$layout = token.layout) !== null && _token$layout !== void 0 && _token$layout.bgLayout ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: (0, _classnames.default)("".concat(proLayoutClassName, "-bg-list"), hashId),
children: bgImgStyleList
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_antd.Layout, {
style: (0, _objectSpread2.default)({
minHeight: '100%',
// hack style
flexDirection: siderMenuDom ? 'row' : undefined
}, style),
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.ConfigProvider
// @ts-ignore
, {
theme: {
hashed: (0, _proProvider.isNeedOpenHash)(),
token: {
controlHeightLG: ((_token$layout2 = token.layout) === null || _token$layout2 === void 0 || (_token$layout2 = _token$layout2.sider) === null || _token$layout2 === void 0 ? void 0 : _token$layout2.menuHeight) || (token === null || token === void 0 ? void 0 : token.controlHeightLG)
},
components: {
Menu: (0, _proUtils.coverToNewToken)({
colorItemBg: ((_token$layout3 = token.layout) === null || _token$layout3 === void 0 || (_token$layout3 = _token$layout3.sider) === null || _token$layout3 === void 0 ? void 0 : _token$layout3.colorMenuBackground) || 'transparent',
colorSubItemBg: ((_token$layout4 = token.layout) === null || _token$layout4 === void 0 || (_token$layout4 = _token$layout4.sider) === null || _token$layout4 === void 0 ? void 0 : _token$layout4.colorMenuBackground) || 'transparent',
radiusItem: token.borderRadius,
colorItemBgSelected: ((_token$layout5 = token.layout) === null || _token$layout5 === void 0 || (_token$layout5 = _token$layout5.sider) === null || _token$layout5 === void 0 ? void 0 : _token$layout5.colorBgMenuItemSelected) || (token === null || token === void 0 ? void 0 : token.colorBgTextHover),
colorItemBgHover: ((_token$layout6 = token.layout) === null || _token$layout6 === void 0 || (_token$layout6 = _token$layout6.sider) === null || _token$layout6 === void 0 ? void 0 : _token$layout6.colorBgMenuItemHover) || (token === null || token === void 0 ? void 0 : token.colorBgTextHover),
colorItemBgActive: ((_token$layout7 = token.layout) === null || _token$layout7 === void 0 || (_token$layout7 = _token$layout7.sider) === null || _token$layout7 === void 0 ? void 0 : _token$layout7.colorBgMenuItemActive) || (token === null || token === void 0 ? void 0 : token.colorBgTextActive),
colorItemBgSelectedHorizontal: ((_token$layout8 = token.layout) === null || _token$layout8 === void 0 || (_token$layout8 = _token$layout8.sider) === null || _token$layout8 === void 0 ? void 0 : _token$layout8.colorBgMenuItemSelected) || (token === null || token === void 0 ? void 0 : token.colorBgTextHover),
colorActiveBarWidth: 0,
colorActiveBarHeight: 0,
colorActiveBarBorderSize: 0,
colorItemText: ((_token$layout9 = token.layout) === null || _token$layout9 === void 0 || (_token$layout9 = _token$layout9.sider) === null || _token$layout9 === void 0 ? void 0 : _token$layout9.colorTextMenu) || (token === null || token === void 0 ? void 0 : token.colorTextSecondary),
colorItemTextHover: ((_token$layout10 = token.layout) === null || _token$layout10 === void 0 || (_token$layout10 = _token$layout10.sider) === null || _token$layout10 === void 0 ? void 0 : _token$layout10.colorTextMenuItemHover) || 'rgba(0, 0, 0, 0.85)',
// 悬浮态
colorItemTextSelected: ((_token$layout11 = token.layout) === null || _token$layout11 === void 0 || (_token$layout11 = _token$layout11.sider) === null || _token$layout11 === void 0 ? void 0 : _token$layout11.colorTextMenuSelected) || 'rgba(0, 0, 0, 1)',
popupBg: token === null || token === void 0 ? void 0 : token.colorBgElevated,
subMenuItemBg: token === null || token === void 0 ? void 0 : token.colorBgElevated,
darkSubMenuItemBg: 'transparent',
darkPopupBg: token === null || token === void 0 ? void 0 : token.colorBgElevated
})
}
},
children: siderMenuDom
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
style: genLayoutStyle,
className: "".concat(proLayoutClassName, "-container ").concat(hashId).trim(),
children: [headerDom, /*#__PURE__*/(0, _jsxRuntime.jsx)(_WrapContent.WrapContent, (0, _objectSpread2.default)((0, _objectSpread2.default)({
hasPageContainer: hasPageContainer,
isChildrenLayout: isChildrenLayout
}, rest), {}, {
hasHeader: !!headerDom,
prefixCls: proLayoutClassName,
style: contentStyle,
children: loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_PageLoading.PageLoading, {}) : children
})), footerDom, hasFooterToolbar && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: "".concat(proLayoutClassName, "-has-footer"),
style: {
height: 64,
marginBlockStart: (_token$layout12 = token.layout) === null || _token$layout12 === void 0 || (_token$layout12 = _token$layout12.pageContainer) === null || _token$layout12 === void 0 ? void 0 : _token$layout12.paddingBlockPageContainerContent
}
})]
})]
})]
})
}));
};
var ProLayout = exports.ProLayout = function ProLayout(props) {
var colorPrimary = props.colorPrimary;
var darkProps = props.navTheme !== undefined ? {
dark: props.navTheme === 'realDark'
} : {};
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.ConfigProvider, {
theme: colorPrimary ? {
token: {
colorPrimary: colorPrimary
}
} : undefined,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_proProvider.ProConfigProvider, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, darkProps), {}, {
token: props.token,
prefixCls: props.prefixCls,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BaseProLayout, (0, _objectSpread2.default)((0, _objectSpread2.default)({
logo: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Logo.Logo, {})
}, _defaultSettings.defaultSettings), {}, {
location: (0, _proUtils.isBrowser)() ? window.location : undefined
}, props))
}))
});
};