dumi-theme-antd
Version:
Ant Design 5.0 官网风格类似的 dumi2 主题插件
90 lines (89 loc) • 8.17 kB
JavaScript
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
import { css } from '@emotion/react';
import { Helmet, Outlet, useLocale, useLocation, useOutlet, useRouteMeta, useSiteData } from 'dumi';
import React, { useEffect, useContext, useMemo } from 'react';
import classNames from 'classnames';
import GlobalStyles from "../../common/GlobalStyles";
import useLocaleValue from "../../hooks/useLocaleValue";
import Footer from "dumi/theme/slots/Footer";
import Header from "dumi/theme/slots/Header";
import Homepage from "../HomePageLayout";
import SidebarLayout from "../SidebarLayout";
import SiteContext from "dumi/theme/slots/SiteContext";
import "../../static/style";
import { jsx as ___EmotionJSX } from "@emotion/react";
var _ref = process.env.NODE_ENV === "production" ? {
name: "11pfcjj",
styles: "display:flex;flex-direction:column;min-height:100vh"
} : {
name: "rorlea-layoutWrap",
styles: "display:flex;flex-direction:column;min-height:100vh;label:layoutWrap;",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlbUIiLCJmaWxlIjoiaW5kZXgudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgSGVsbWV0LCBPdXRsZXQsIHVzZUxvY2FsZSwgdXNlTG9jYXRpb24sIHVzZU91dGxldCwgdXNlUm91dGVNZXRhLCB1c2VTaXRlRGF0YSB9IGZyb20gJ2R1bWknO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlQ29udGV4dCwgdXNlTWVtbywgdHlwZSBGQyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuLi8uLi9jb21tb24vR2xvYmFsU3R5bGVzJztcbmltcG9ydCB1c2VMb2NhbGVWYWx1ZSBmcm9tICcuLi8uLi9ob29rcy91c2VMb2NhbGVWYWx1ZSc7XG5pbXBvcnQgRm9vdGVyIGZyb20gJy4uLy4uL3Nsb3RzL0Zvb3Rlcic7XG5pbXBvcnQgSGVhZGVyIGZyb20gJy4uLy4uL3Nsb3RzL0hlYWRlcic7XG5pbXBvcnQgSG9tZXBhZ2UgZnJvbSAnLi4vSG9tZVBhZ2VMYXlvdXQnO1xuaW1wb3J0IFNpZGViYXJMYXlvdXQgZnJvbSAnLi4vU2lkZWJhckxheW91dCc7XG5pbXBvcnQgU2l0ZUNvbnRleHQgZnJvbSAnLi4vLi4vc2xvdHMvU2l0ZUNvbnRleHQnO1xuaW1wb3J0ICcuLi8uLi9zdGF0aWMvc3R5bGUnO1xuXG5jb25zdCB1c2VTdHlsZXMgPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgbGF5b3V0V3JhcDogY3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBgXG4gIH07XG59O1xuXG5jb25zdCBEb2NMYXlvdXQ6IEZDID0gKCkgPT4ge1xuICBjb25zdCBvdXRsZXQgPSB1c2VPdXRsZXQoKTtcbiAgY29uc3QgbG9jYWxlID0gdXNlTG9jYWxlKCk7XG4gIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgY29uc3Qgc3R5bGVzID0gdXNlU3R5bGVzKCk7XG4gIGNvbnN0IHJvdXRlTWV0YSA9IHVzZVJvdXRlTWV0YSgpO1xuICBjb25zdCB0aXRsZSA9IHVzZUxvY2FsZVZhbHVlKCd0aXRsZScpO1xuICBjb25zdCBkZXNjcmlwdGlvbiA9IHVzZUxvY2FsZVZhbHVlKCdkZXNjcmlwdGlvbicpO1xuICBjb25zdCB7IHBhdGhuYW1lLCBoYXNoIH0gPSBsb2NhdGlvbjtcbiAgY29uc3QgeyBsb2FkaW5nIH0gPSB1c2VTaXRlRGF0YSgpO1xuICBjb25zdCB7IGRpcmVjdGlvbiB9ID0gdXNlQ29udGV4dChTaXRlQ29udGV4dCk7XG5cbiAgY29uc3QgY29udGVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIFsnJywgJy8nXS5zb21lKChwYXRoKSA9PiBwYXRoID09PSBwYXRobmFtZSkgfHxcbiAgICAgIFsnL2luZGV4J10uc29tZSgocGF0aCkgPT4gcGF0aG5hbWUuc3RhcnRzV2l0aChwYXRoKSlcbiAgICApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICB7b3V0bGV0IHx8IDxIb21lcGFnZSAvPn1cbiAgICAgICAgICA8Rm9vdGVyIC8+XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGVNZXRhLmZyb250bWF0dGVyPy5zaWRlYmFyID09PSBmYWxzZSA/IChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxPdXRsZXQgLz5cbiAgICAgIDwvZGl2PlxuICAgICkgOiAoXG4gICAgICA8U2lkZWJhckxheW91dD5cbiAgICAgICAgPE91dGxldCAvPlxuICAgICAgPC9TaWRlYmFyTGF5b3V0PlxuICAgICk7XG4gIH0sIFtvdXRsZXQsIHBhdGhuYW1lLCByb3V0ZU1ldGFdKTtcblxuICAvLyBoYW5kbGUgaGFzaCBjaGFuZ2Ugb3IgdmlzaXQgcGFnZSBoYXNoIGZyb20gTGluayBjb21wb25lbnQsIGFuZCBqdW1wIGFmdGVyIGFzeW5jIGNodW5rIGxvYWRlZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlkID0gaGFzaC5yZXBsYWNlKCcjJywgJycpO1xuICAgIGlmIChpZCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVjb2RlVVJJQ29tcG9uZW50KGlkKSk/LnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuICB9LCBbbG9hZGluZywgaGFzaF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e3N0eWxlcy5sYXlvdXRXcmFwfT5cbiAgICAgIDxIZWxtZXQgZW5jb2RlU3BlY2lhbENoYXJhY3RlcnM9e2ZhbHNlfT5cbiAgICAgICAgPGh0bWxcbiAgICAgICAgICBsYW5nPXtsb2NhbGUuaWR9XG4gICAgICAgICAgZGF0YS1kaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoWydkdW1pLXRoZW1lLWFudGQtcm9vdCcsIHsgcnRsOiBkaXJlY3Rpb24gPT09ICdydGwnIH1dKX1cbiAgICAgICAgLz5cbiAgICAgICAgPHRpdGxlPntgJHt0aXRsZSB8fCAnZHVtaS10aGVtZS1hbnRkJ30ke2Rlc2NyaXB0aW9uID8gYC0ke2Rlc2NyaXB0aW9ufWAgOiAnJ31gfTwvdGl0bGU+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgc2l6ZXM9XCIxNDR4MTQ0XCJcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS96b3MvYW50ZmluY2RuL1VtVm50M3Q0VDAvYW50ZC5wbmdcIlxuICAgICAgICAvPlxuICAgICAgICA8bWV0YSBuYW1lPVwiZGVzY3JpcHRpb25cIiBjb250ZW50PXtkZXNjcmlwdGlvbn0gLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzp0aXRsZVwiIGNvbnRlbnQ9e3RpdGxlfSAvPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOnR5cGVcIiBjb250ZW50PVwid2Vic2l0ZVwiIC8+XG4gICAgICAgIDxtZXRhXG4gICAgICAgICAgcHJvcGVydHk9XCJvZzppbWFnZVwiXG4gICAgICAgICAgY29udGVudD1cImh0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL3Jtc3BvcnRhbC9ybHBUTGxiTXpUTll1WkdHQ1ZZTS5wbmdcIlxuICAgICAgICAvPlxuICAgICAgPC9IZWxtZXQ+XG4gICAgICA8R2xvYmFsU3R5bGVzIC8+XG4gICAgICA8SGVhZGVyIC8+XG4gICAgICB7Y29udGVudH1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERvY0xheW91dDtcbiJdfQ== */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
};
var useStyles = function useStyles() {
return {
layoutWrap: _ref
};
};
var DocLayout = function DocLayout() {
var outlet = useOutlet();
var locale = useLocale();
var location = useLocation();
var styles = useStyles();
var routeMeta = useRouteMeta();
var title = useLocaleValue('title');
var description = useLocaleValue('description');
var pathname = location.pathname,
hash = location.hash;
var _useSiteData = useSiteData(),
loading = _useSiteData.loading;
var _useContext = useContext(SiteContext),
direction = _useContext.direction;
var content = useMemo(function () {
var _routeMeta$frontmatte;
if (['', '/'].some(function (path) {
return path === pathname;
}) || ['/index'].some(function (path) {
return pathname.startsWith(path);
})) {
return ___EmotionJSX(React.Fragment, null, outlet || ___EmotionJSX(Homepage, null), ___EmotionJSX(Footer, null));
}
return ((_routeMeta$frontmatte = routeMeta.frontmatter) === null || _routeMeta$frontmatte === void 0 ? void 0 : _routeMeta$frontmatte.sidebar) === false ? ___EmotionJSX("div", null, ___EmotionJSX(Outlet, null)) : ___EmotionJSX(SidebarLayout, null, ___EmotionJSX(Outlet, null));
}, [outlet, pathname, routeMeta]);
// handle hash change or visit page hash from Link component, and jump after async chunk loaded
useEffect(function () {
var id = hash.replace('#', '');
if (id) {
var _document$getElementB;
(_document$getElementB = document.getElementById(decodeURIComponent(id))) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.scrollIntoView();
}
}, [loading, hash]);
return ___EmotionJSX("div", {
css: styles.layoutWrap
}, ___EmotionJSX(Helmet, {
encodeSpecialCharacters: false
}, ___EmotionJSX("html", {
lang: locale.id,
"data-direction": direction,
className: classNames(['dumi-theme-antd-root', {
rtl: direction === 'rtl'
}])
}), ___EmotionJSX("title", null, "".concat(title || 'dumi-theme-antd').concat(description ? "-".concat(description) : '')), ___EmotionJSX("link", {
sizes: "144x144",
href: "https://gw.alipayobjects.com/zos/antfincdn/UmVnt3t4T0/antd.png"
}), ___EmotionJSX("meta", {
name: "description",
content: description
}), ___EmotionJSX("meta", {
property: "og:title",
content: title
}), ___EmotionJSX("meta", {
property: "og:type",
content: "website"
}), ___EmotionJSX("meta", {
property: "og:image",
content: "https://gw.alipayobjects.com/zos/rmsportal/rlpTLlbMzTNYuZGGCVYM.png"
})), ___EmotionJSX(GlobalStyles, null), ___EmotionJSX(Header, null), content);
};
export default DocLayout;