UNPKG

22.2 kBJavaScriptView Raw
1import "antd/es/layout/style";
2import _Layout from "antd/es/layout";
3import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
5import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
6import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
7import "antd/es/config-provider/style";
8import _ConfigProvider from "antd/es/config-provider";
9import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
10import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
11import _extends from "@babel/runtime/helpers/esm/extends";
12var _excluded = ["id", "defaultMessage"],
13 _excluded2 = ["fixSiderbar", "navTheme", "layout"];
14import { ConfigProviderWrap } from '@ant-design/pro-provider';
15import { isBrowser, useDocumentTitle, useMountMergeState } from '@ant-design/pro-utils';
16import { getMatchMenu } from '@umijs/route-utils';
17import classNames from 'classnames';
18import Omit from 'omit.js';
19import useMergedState from "rc-util/es/hooks/useMergedState";
20import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
21import useSWR, { useSWRConfig } from 'swr';
22import useAntdMediaQuery from 'use-media-antd-query';
23import warning from 'warning';
24import './BasicLayout.less';
25import PageLoading from './components/PageLoading';
26import SiderMenu from './components/SiderMenu';
27import MenuCounter from './components/SiderMenu/Counter';
28import defaultSettings from './defaultSettings';
29import Footer from './Footer';
30import { getPageTitleInfo } from './getPageTitle';
31import Header from './Header';
32import { gLocaleObject } from './locales';
33import RouteContext from './RouteContext';
34import compatibleLayout from './utils/compatibleLayout';
35import { getBreadcrumbProps } from './utils/getBreadcrumbProps';
36import getMenuData from './utils/getMenuData';
37import useCurrentMenuLayoutProps from './utils/useCurrentMenuLayoutProps';
38import { clearMenuItem } from './utils/utils';
39import WrapContent from './WrapContent';
40var layoutIndex = 0;
41
42var headerRender = function headerRender(props, matchMenuKeys) {
43 if (props.headerRender === false || props.pure) {
44 return null;
45 }
46
47 return /*#__PURE__*/React.createElement(Header, _extends({
48 matchMenuKeys: matchMenuKeys
49 }, props));
50};
51
52var footerRender = function footerRender(props) {
53 if (props.footerRender === false || props.pure) {
54 return null;
55 }
56
57 if (props.footerRender) {
58 return props.footerRender(_objectSpread({}, props), /*#__PURE__*/React.createElement(Footer, null));
59 }
60
61 return null;
62};
63
64var renderSiderMenu = function renderSiderMenu(props, matchMenuKeys) {
65 var layout = props.layout,
66 navTheme = props.navTheme,
67 isMobile = props.isMobile,
68 openKeys = props.openKeys,
69 splitMenus = props.splitMenus,
70 menuRender = props.menuRender;
71
72 if (props.menuRender === false || props.pure) {
73 return null;
74 }
75
76 var menuData = props.menuData;
77 /** 如果是分割菜单模式,需要专门实现一下 */
78
79 if (splitMenus && (openKeys !== false || layout === 'mix') && !isMobile) {
80 var _matchMenuKeys = _slicedToArray(matchMenuKeys, 1),
81 key = _matchMenuKeys[0];
82
83 if (key) {
84 var _props$menuData, _props$menuData$find;
85
86 menuData = ((_props$menuData = props.menuData) === null || _props$menuData === void 0 ? void 0 : (_props$menuData$find = _props$menuData.find(function (item) {
87 return item.key === key;
88 })) === null || _props$menuData$find === void 0 ? void 0 : _props$menuData$find.routes) || [];
89 } else {
90 menuData = [];
91 }
92 } // 这里走了可以少一次循环
93
94
95 var clearMenuData = clearMenuItem(menuData || []);
96
97 if (clearMenuData && (clearMenuData === null || clearMenuData === void 0 ? void 0 : clearMenuData.length) < 1 && splitMenus) {
98 return null;
99 }
100
101 if (layout === 'top' && !isMobile) {
102 return /*#__PURE__*/React.createElement(SiderMenu, _extends({
103 matchMenuKeys: matchMenuKeys
104 }, props, {
105 hide: true
106 }));
107 }
108
109 var defaultDom = /*#__PURE__*/React.createElement(SiderMenu, _extends({
110 matchMenuKeys: matchMenuKeys
111 }, props, {
112 style: navTheme === 'realDark' ? {
113 boxShadow: '0 2px 8px 0 rgba(0, 0, 0, 65%)'
114 } : {} // 这里走了可以少一次循环
115 ,
116 menuData: clearMenuData
117 }));
118
119 if (menuRender) {
120 return menuRender(props, defaultDom);
121 }
122
123 return defaultDom;
124};
125
126var defaultPageTitleRender = function defaultPageTitleRender(pageProps, props) {
127 var pageTitleRender = props.pageTitleRender;
128 var pageTitleInfo = getPageTitleInfo(pageProps);
129
130 if (pageTitleRender === false) {
131 return {
132 title: props.title || '',
133 id: '',
134 pageName: ''
135 };
136 }
137
138 if (pageTitleRender) {
139 var title = pageTitleRender(pageProps, pageTitleInfo.title, pageTitleInfo);
140
141 if (typeof title === 'string') {
142 return _objectSpread(_objectSpread({}, pageTitleInfo), {}, {
143 title: title
144 });
145 }
146
147 warning(typeof title === 'string', 'pro-layout: renderPageTitle return value should be a string');
148 }
149
150 return pageTitleInfo;
151};
152
153var getPaddingLeft = function getPaddingLeft(hasLeftPadding, collapsed, siderWidth) {
154 if (hasLeftPadding) {
155 return collapsed ? 48 : siderWidth;
156 }
157
158 return 0;
159};
160/**
161 * 🌃 Powerful and easy to use beautiful layout 🏄‍ Support multiple topics and layout types
162 *
163 * @param props
164 */
165
166
167var BasicLayout = function BasicLayout(props) {
168 var _props$prefixCls, _classNames, _classNames2, _location$pathname;
169
170 var _ref = props || {},
171 children = _ref.children,
172 propsOnCollapse = _ref.onCollapse,
173 _ref$location = _ref.location,
174 location = _ref$location === void 0 ? {
175 pathname: '/'
176 } : _ref$location,
177 contentStyle = _ref.contentStyle,
178 route = _ref.route,
179 defaultCollapsed = _ref.defaultCollapsed,
180 style = _ref.style,
181 disableContentMargin = _ref.disableContentMargin,
182 _ref$siderWidth = _ref.siderWidth,
183 siderWidth = _ref$siderWidth === void 0 ? 208 : _ref$siderWidth,
184 menu = _ref.menu,
185 propsIsChildrenLayout = _ref.isChildrenLayout,
186 menuDataRender = _ref.menuDataRender,
187 actionRef = _ref.actionRef,
188 propsFormatMessage = _ref.formatMessage,
189 loading = _ref.loading;
190
191 var context = useContext(_ConfigProvider.ConfigContext);
192 var prefixCls = (_props$prefixCls = props.prefixCls) !== null && _props$prefixCls !== void 0 ? _props$prefixCls : context.getPrefixCls('pro');
193
194 var _useMountMergeState = useMountMergeState(false, {
195 value: menu === null || menu === void 0 ? void 0 : menu.loading,
196 onChange: menu === null || menu === void 0 ? void 0 : menu.onLoadingChange
197 }),
198 _useMountMergeState2 = _slicedToArray(_useMountMergeState, 2),
199 menuLoading = _useMountMergeState2[0],
200 setMenuLoading = _useMountMergeState2[1]; // give a default key for swr
201
202
203 var _useState = useState(function () {
204 layoutIndex += 1;
205 return "pro-layout-".concat(layoutIndex);
206 }),
207 _useState2 = _slicedToArray(_useState, 1),
208 defaultId = _useState2[0];
209
210 var formatMessage = useCallback(function (_ref2) {
211 var id = _ref2.id,
212 defaultMessage = _ref2.defaultMessage,
213 restParams = _objectWithoutProperties(_ref2, _excluded);
214
215 if (propsFormatMessage) {
216 return propsFormatMessage(_objectSpread({
217 id: id,
218 defaultMessage: defaultMessage
219 }, restParams));
220 }
221
222 var locales = gLocaleObject();
223 return locales[id] ? locales[id] : defaultMessage;
224 }, [propsFormatMessage]);
225
226 var _useSWR = useSWR(function () {
227 if (!(menu === null || menu === void 0 ? void 0 : menu.params)) return [defaultId, {}];
228 return [defaultId, menu === null || menu === void 0 ? void 0 : menu.params];
229 }, /*#__PURE__*/function () {
230 var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_, params) {
231 var _menu$request;
232
233 var msg;
234 return _regeneratorRuntime().wrap(function _callee$(_context) {
235 while (1) {
236 switch (_context.prev = _context.next) {
237 case 0:
238 setMenuLoading(true);
239 _context.next = 3;
240 return menu === null || menu === void 0 ? 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.routes) || []);
241
242 case 3:
243 msg = _context.sent;
244 setMenuLoading(false);
245 return _context.abrupt("return", msg);
246
247 case 6:
248 case "end":
249 return _context.stop();
250 }
251 }
252 }, _callee);
253 }));
254
255 return function (_x, _x2) {
256 return _ref3.apply(this, arguments);
257 };
258 }(), {
259 revalidateOnFocus: false,
260 shouldRetryOnError: false,
261 revalidateOnReconnect: false
262 }),
263 data = _useSWR.data,
264 mutate = _useSWR.mutate;
265
266 var _useSWRConfig = useSWRConfig(),
267 cache = _useSWRConfig.cache;
268
269 useEffect(function () {
270 return function () {
271 if (cache instanceof Map) cache.clear();
272 }; // eslint-disable-next-line react-hooks/exhaustive-deps
273 }, []);
274 var menuInfoData = useMemo(function () {
275 return getMenuData(data || (route === null || route === void 0 ? void 0 : route.routes) || [], menu, formatMessage, menuDataRender);
276 }, [formatMessage, menu, menuDataRender, data, route === null || route === void 0 ? void 0 : route.routes]);
277
278 var _ref4 = menuInfoData || {},
279 _ref4$breadcrumb = _ref4.breadcrumb,
280 breadcrumb = _ref4$breadcrumb === void 0 ? {} : _ref4$breadcrumb,
281 breadcrumbMap = _ref4.breadcrumbMap,
282 _ref4$menuData = _ref4.menuData,
283 menuData = _ref4$menuData === void 0 ? [] : _ref4$menuData;
284
285 if (actionRef && (menu === null || menu === void 0 ? void 0 : menu.request)) {
286 actionRef.current = {
287 reload: function reload() {
288 mutate();
289 }
290 };
291 }
292
293 var matchMenus = useMemo(function () {
294 return getMatchMenu(location.pathname || '/', menuData || [], true);
295 }, [location.pathname, menuData]);
296 var matchMenuKeys = useMemo(function () {
297 return Array.from(new Set(matchMenus.map(function (item) {
298 return item.key || item.path || '';
299 })));
300 }, [matchMenus]); // 当前选中的menu,一般不会为空
301
302 var currentMenu = matchMenus[matchMenus.length - 1] || {};
303 var currentMenuLayoutProps = useCurrentMenuLayoutProps(currentMenu);
304
305 var _props$currentMenuLay = _objectSpread(_objectSpread({}, props), currentMenuLayoutProps),
306 fixSiderbar = _props$currentMenuLay.fixSiderbar,
307 navTheme = _props$currentMenuLay.navTheme,
308 defaultPropsLayout = _props$currentMenuLay.layout,
309 rest = _objectWithoutProperties(_props$currentMenuLay, _excluded2);
310
311 var propsLayout = compatibleLayout(defaultPropsLayout);
312 var colSize = useAntdMediaQuery();
313 var isMobile = (colSize === 'sm' || colSize === 'xs') && !props.disableMobile; // If it is a fix menu, calculate padding
314 // don't need padding in phone mode
315
316 var hasLeftPadding = propsLayout !== 'top' && !isMobile;
317
318 var _useMergedState = useMergedState(function () {
319 return defaultCollapsed || false;
320 }, {
321 value: props.collapsed,
322 onChange: propsOnCollapse
323 }),
324 _useMergedState2 = _slicedToArray(_useMergedState, 2),
325 collapsed = _useMergedState2[0],
326 onCollapse = _useMergedState2[1]; // Splicing parameters, adding menuData and formatMessage in props
327
328
329 var defaultProps = Omit(_objectSpread(_objectSpread(_objectSpread({
330 prefixCls: prefixCls
331 }, props), {}, {
332 siderWidth: siderWidth
333 }, currentMenuLayoutProps), {}, {
334 formatMessage: formatMessage,
335 breadcrumb: breadcrumb,
336 menu: _objectSpread(_objectSpread({}, menu), {}, {
337 loading: menuLoading
338 }),
339 layout: propsLayout
340 }), ['className', 'style', 'breadcrumbRender']); // gen page title
341
342 var pageTitleInfo = defaultPageTitleRender(_objectSpread(_objectSpread({
343 pathname: location.pathname
344 }, defaultProps), {}, {
345 breadcrumbMap: breadcrumbMap
346 }), props); // gen breadcrumbProps, parameter for pageHeader
347
348 var breadcrumbProps = getBreadcrumbProps(_objectSpread(_objectSpread({}, defaultProps), {}, {
349 breadcrumbRender: props.breadcrumbRender,
350 breadcrumbMap: breadcrumbMap
351 }), props); // render sider dom
352
353 var siderMenuDom = renderSiderMenu(_objectSpread(_objectSpread({}, defaultProps), {}, {
354 menuData: menuData,
355 onCollapse: onCollapse,
356 isMobile: isMobile,
357 theme: navTheme === 'dark' ? 'dark' : 'light',
358 collapsed: collapsed
359 }), matchMenuKeys); // render header dom
360
361 var headerDom = headerRender(_objectSpread(_objectSpread({}, defaultProps), {}, {
362 hasSiderMenu: !!siderMenuDom,
363 menuData: menuData,
364 isMobile: isMobile,
365 collapsed: collapsed,
366 onCollapse: onCollapse,
367 theme: navTheme === 'dark' ? 'dark' : 'light'
368 }), matchMenuKeys); // render footer dom
369
370 var footerDom = footerRender(_objectSpread({
371 isMobile: isMobile,
372 collapsed: collapsed
373 }, defaultProps));
374
375 var _useContext = useContext(RouteContext),
376 contextIsChildrenLayout = _useContext.isChildrenLayout; // 如果 props 中定义,以 props 为准
377
378
379 var isChildrenLayout = propsIsChildrenLayout !== undefined ? propsIsChildrenLayout : contextIsChildrenLayout;
380 var baseClassName = "".concat(prefixCls, "-basicLayout"); // gen className
381
382 var className = classNames(props.className, 'ant-design-pro', baseClassName, (_classNames = {}, _defineProperty(_classNames, "screen-".concat(colSize), colSize), _defineProperty(_classNames, "".concat(baseClassName, "-top-menu"), propsLayout === 'top'), _defineProperty(_classNames, "".concat(baseClassName, "-is-children"), isChildrenLayout), _defineProperty(_classNames, "".concat(baseClassName, "-fix-siderbar"), fixSiderbar), _defineProperty(_classNames, "".concat(baseClassName, "-").concat(propsLayout), propsLayout), _classNames));
383 /** 计算 slider 的宽度 */
384
385 var leftSiderWidth = getPaddingLeft(!!hasLeftPadding, collapsed, siderWidth); // siderMenuDom 为空的时候,不需要 padding
386
387 var genLayoutStyle = {
388 position: 'relative'
389 }; // if is some layout children, don't need min height
390
391 if (isChildrenLayout || contentStyle && contentStyle.minHeight) {
392 genLayoutStyle.minHeight = 0;
393 }
394
395 var contentClassName = classNames("".concat(baseClassName, "-content"), (_classNames2 = {}, _defineProperty(_classNames2, "".concat(baseClassName, "-has-header"), headerDom), _defineProperty(_classNames2, "".concat(baseClassName, "-content-disable-margin"), disableContentMargin), _classNames2));
396 /** 页面切换的时候触发 */
397
398 useEffect(function () {
399 var _props$onPageChange;
400
401 (_props$onPageChange = props.onPageChange) === null || _props$onPageChange === void 0 ? void 0 : _props$onPageChange.call(props, props.location); // eslint-disable-next-line react-hooks/exhaustive-deps
402 }, [location.pathname, (_location$pathname = location.pathname) === null || _location$pathname === void 0 ? void 0 : _location$pathname.search]);
403
404 var _useState3 = useState(false),
405 _useState4 = _slicedToArray(_useState3, 2),
406 hasFooterToolbar = _useState4[0],
407 setHasFooterToolbar = _useState4[1];
408
409 useDocumentTitle(pageTitleInfo, props.title || false);
410 return /*#__PURE__*/React.createElement(MenuCounter.Provider, null, /*#__PURE__*/React.createElement(RouteContext.Provider, {
411 value: _objectSpread(_objectSpread({}, defaultProps), {}, {
412 breadcrumb: breadcrumbProps,
413 menuData: menuData,
414 isMobile: isMobile,
415 collapsed: collapsed,
416 isChildrenLayout: true,
417 title: pageTitleInfo.pageName,
418 hasSiderMenu: !!siderMenuDom,
419 hasHeader: !!headerDom,
420 siderWidth: leftSiderWidth,
421 hasFooter: !!footerDom,
422 hasFooterToolbar: hasFooterToolbar,
423 setHasFooterToolbar: setHasFooterToolbar,
424 pageTitleInfo: pageTitleInfo,
425 matchMenus: matchMenus,
426 matchMenuKeys: matchMenuKeys,
427 currentMenu: currentMenu
428 })
429 }, props.pure ? /*#__PURE__*/React.createElement(ConfigProviderWrap, {
430 autoClearCache: true
431 }, children) : /*#__PURE__*/React.createElement("div", {
432 className: className
433 }, /*#__PURE__*/React.createElement(_Layout, {
434 style: _objectSpread({
435 minHeight: '100%'
436 }, style)
437 }, siderMenuDom, /*#__PURE__*/React.createElement("div", {
438 style: genLayoutStyle,
439 className: context.getPrefixCls('layout')
440 }, headerDom, /*#__PURE__*/React.createElement(WrapContent, _extends({
441 autoClearCache: false,
442 isChildrenLayout: isChildrenLayout
443 }, rest, {
444 className: contentClassName,
445 style: contentStyle
446 }), loading ? /*#__PURE__*/React.createElement(PageLoading, null) : children), footerDom)))));
447};
448
449var Logo = function Logo() {
450 return /*#__PURE__*/React.createElement("svg", {
451 width: "32px",
452 height: "32px",
453 viewBox: "0 0 200 200"
454 }, /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
455 x1: "62.1023273%",
456 y1: "0%",
457 x2: "108.19718%",
458 y2: "37.8635764%",
459 id: "linearGradient-1"
460 }, /*#__PURE__*/React.createElement("stop", {
461 stopColor: "#4285EB",
462 offset: "0%"
463 }), /*#__PURE__*/React.createElement("stop", {
464 stopColor: "#2EC7FF",
465 offset: "100%"
466 })), /*#__PURE__*/React.createElement("linearGradient", {
467 x1: "69.644116%",
468 y1: "0%",
469 x2: "54.0428975%",
470 y2: "108.456714%",
471 id: "linearGradient-2"
472 }, /*#__PURE__*/React.createElement("stop", {
473 stopColor: "#29CDFF",
474 offset: "0%"
475 }), /*#__PURE__*/React.createElement("stop", {
476 stopColor: "#148EFF",
477 offset: "37.8600687%"
478 }), /*#__PURE__*/React.createElement("stop", {
479 stopColor: "#0A60FF",
480 offset: "100%"
481 })), /*#__PURE__*/React.createElement("linearGradient", {
482 x1: "69.6908165%",
483 y1: "-12.9743587%",
484 x2: "16.7228981%",
485 y2: "117.391248%",
486 id: "linearGradient-3"
487 }, /*#__PURE__*/React.createElement("stop", {
488 stopColor: "#FA816E",
489 offset: "0%"
490 }), /*#__PURE__*/React.createElement("stop", {
491 stopColor: "#F74A5C",
492 offset: "41.472606%"
493 }), /*#__PURE__*/React.createElement("stop", {
494 stopColor: "#F51D2C",
495 offset: "100%"
496 })), /*#__PURE__*/React.createElement("linearGradient", {
497 x1: "68.1279872%",
498 y1: "-35.6905737%",
499 x2: "30.4400914%",
500 y2: "114.942679%",
501 id: "linearGradient-4"
502 }, /*#__PURE__*/React.createElement("stop", {
503 stopColor: "#FA8E7D",
504 offset: "0%"
505 }), /*#__PURE__*/React.createElement("stop", {
506 stopColor: "#F74A5C",
507 offset: "51.2635191%"
508 }), /*#__PURE__*/React.createElement("stop", {
509 stopColor: "#F51D2C",
510 offset: "100%"
511 }))), /*#__PURE__*/React.createElement("g", {
512 stroke: "none",
513 strokeWidth: 1,
514 fill: "none",
515 fillRule: "evenodd"
516 }, /*#__PURE__*/React.createElement("g", {
517 transform: "translate(-20.000000, -20.000000)"
518 }, /*#__PURE__*/React.createElement("g", {
519 transform: "translate(20.000000, 20.000000)"
520 }, /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("g", {
521 fillRule: "nonzero"
522 }, /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("path", {
523 d: "M91.5880863,4.17652823 L4.17996544,91.5127728 C-0.519240605,96.2081146 -0.519240605,103.791885 4.17996544,108.487227 L91.5880863,195.823472 C96.2872923,200.518814 103.877304,200.518814 108.57651,195.823472 L145.225487,159.204632 C149.433969,154.999611 149.433969,148.181924 145.225487,143.976903 C141.017005,139.771881 134.193707,139.771881 129.985225,143.976903 L102.20193,171.737352 C101.032305,172.906015 99.2571609,172.906015 98.0875359,171.737352 L28.285908,101.993122 C27.1162831,100.824459 27.1162831,99.050775 28.285908,97.8821118 L98.0875359,28.1378823 C99.2571609,26.9692191 101.032305,26.9692191 102.20193,28.1378823 L129.985225,55.8983314 C134.193707,60.1033528 141.017005,60.1033528 145.225487,55.8983314 C149.433969,51.69331 149.433969,44.8756232 145.225487,40.6706018 L108.58055,4.05574592 C103.862049,-0.537986846 96.2692618,-0.500797906 91.5880863,4.17652823 Z",
524 fill: "url(#linearGradient-1)"
525 }), /*#__PURE__*/React.createElement("path", {
526 d: "M91.5880863,4.17652823 L4.17996544,91.5127728 C-0.519240605,96.2081146 -0.519240605,103.791885 4.17996544,108.487227 L91.5880863,195.823472 C96.2872923,200.518814 103.877304,200.518814 108.57651,195.823472 L145.225487,159.204632 C149.433969,154.999611 149.433969,148.181924 145.225487,143.976903 C141.017005,139.771881 134.193707,139.771881 129.985225,143.976903 L102.20193,171.737352 C101.032305,172.906015 99.2571609,172.906015 98.0875359,171.737352 L28.285908,101.993122 C27.1162831,100.824459 27.1162831,99.050775 28.285908,97.8821118 L98.0875359,28.1378823 C100.999864,25.6271836 105.751642,20.541824 112.729652,19.3524487 C117.915585,18.4685261 123.585219,20.4140239 129.738554,25.1889424 C125.624663,21.0784292 118.571995,14.0340304 108.58055,4.05574592 C103.862049,-0.537986846 96.2692618,-0.500797906 91.5880863,4.17652823 Z",
527 fill: "url(#linearGradient-2)"
528 })), /*#__PURE__*/React.createElement("path", {
529 d: "M153.685633,135.854579 C157.894115,140.0596 164.717412,140.0596 168.925894,135.854579 L195.959977,108.842726 C200.659183,104.147384 200.659183,96.5636133 195.960527,91.8688194 L168.690777,64.7181159 C164.472332,60.5180858 157.646868,60.5241425 153.435895,64.7316526 C149.227413,68.936674 149.227413,75.7543607 153.435895,79.9593821 L171.854035,98.3623765 C173.02366,99.5310396 173.02366,101.304724 171.854035,102.473387 L153.685633,120.626849 C149.47715,124.83187 149.47715,131.649557 153.685633,135.854579 Z",
530 fill: "url(#linearGradient-3)"
531 })), /*#__PURE__*/React.createElement("ellipse", {
532 fill: "url(#linearGradient-4)",
533 cx: "100.519339",
534 cy: "100.436681",
535 rx: "23.6001926",
536 ry: "23.580786"
537 }))))));
538};
539
540BasicLayout.defaultProps = _objectSpread(_objectSpread({
541 logo: /*#__PURE__*/React.createElement(Logo, null)
542}, defaultSettings), {}, {
543 location: isBrowser() ? window.location : undefined
544});
545export default BasicLayout;
\No newline at end of file