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