dumi-theme-antd
Version:
Ant Design 5.0 官网风格类似的 dumi2 主题插件
88 lines • 10.8 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import { LeftOutlined, RightOutlined } from '@ant-design/icons';
import { ClassNames, css } from '@emotion/react';
import React, { useMemo, useContext } from 'react';
import useMenu from "../hooks/useMenu";
import useSiteToken from "../hooks/useSiteToken";
import SiteContext from "dumi/theme/slots/SiteContext";
import { jsx as ___EmotionJSX } from "@emotion/react";
var useStyle = function useStyle() {
var _useSiteToken = useSiteToken(),
token = _useSiteToken.token;
var colorSplit = token.colorSplit,
iconCls = token.iconCls,
fontSizeIcon = token.fontSizeIcon;
return {
prevNextNav: /*#__PURE__*/css("width:calc(100% - 234px);margin-inline-end:170px;margin-inline-start:64px;overflow:hidden;font-size:14px;border-top:1px solid ", colorSplit, ";display:flex;" + (process.env.NODE_ENV === "production" ? "" : ";label:prevNextNav;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZXZBbmROZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQm9CIiwiZmlsZSI6IlByZXZBbmROZXh0LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExlZnRPdXRsaW5lZCwgUmlnaHRPdXRsaW5lZCB9IGZyb20gJ0BhbnQtZGVzaWduL2ljb25zJztcbmltcG9ydCB7IENsYXNzTmFtZXMsIGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTWVudVByb3BzIH0gZnJvbSAnYW50ZCc7XG5pbXBvcnQgdHlwZSB7IE1lbnVJdGVtVHlwZSB9IGZyb20gJ2FudGQvbGliL21lbnUvaG9va3MvdXNlSXRlbXMnO1xuaW1wb3J0IHR5cGUgeyBSZWFjdEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZW51IGZyb20gJy4uL2hvb2tzL3VzZU1lbnUnO1xuaW1wb3J0IHVzZVNpdGVUb2tlbiBmcm9tICcuLi9ob29rcy91c2VTaXRlVG9rZW4nO1xuaW1wb3J0IFNpdGVDb250ZXh0IGZyb20gJy4uL3Nsb3RzL1NpdGVDb250ZXh0JztcbmltcG9ydCB0eXBlIHsgU2l0ZUNvbnRleHRQcm9wcyB9IGZyb20gJy4uL3Nsb3RzL1NpdGVDb250ZXh0JztcblxuY29uc3QgdXNlU3R5bGUgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdG9rZW4gfSA9IHVzZVNpdGVUb2tlbigpO1xuXG4gIGNvbnN0IHsgY29sb3JTcGxpdCwgaWNvbkNscywgZm9udFNpemVJY29uIH0gPSB0b2tlbjtcblxuICByZXR1cm4ge1xuICAgIHByZXZOZXh0TmF2OiBjc3NgXG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjM0cHgpO1xuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDE3MHB4O1xuICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogNjRweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtjb2xvclNwbGl0fTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYCxcbiAgICBwYWdlTmF2OiBgXG4gICAgICBmbGV4OiAxO1xuICAgICAgaGVpZ2h0OiA3MnB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDcycHg7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICR7aWNvbkNsc30ge1xuICAgICAgICBjb2xvcjogIzk5OTtcbiAgICAgICAgZm9udC1zaXplOiAke2ZvbnRTaXplSWNvbn1weDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gICAgICB9XG5cbiAgICAgIC5jaGluZXNlIHtcbiAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogNHB4O1xuICAgICAgfVxuICAgIGAsXG4gICAgcHJldk5hdjogYFxuICAgICAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgYWxpZ24taXRlbTogY2VudGVyO1xuXG4gICAgICAuZm9vdGVyLW5hdi1pY29uLWFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmZvb3Rlci1uYXYtaWNvbi1iZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB0cmFuc2l0aW9uOiBpbnNldC1pbmxpbmUtZW5kIDAuM3M7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAxZW07XG4gICAgICAgIGluc2V0LWlubGluZS1lbmQ6IDA7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIgLmZvb3Rlci1uYXYtaWNvbi1iZWZvcmUge1xuICAgICAgICBpbnNldC1pbmxpbmUtZW5kOiAwLjJlbTtcbiAgICAgIH1cbiAgICBgLFxuICAgIG5leHROYXY6IGBcbiAgICAgIHRleHQtYWxpZ246IGVuZDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgLmZvb3Rlci1uYXYtaWNvbi1iZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuZm9vdGVyLW5hdi1pY29uLWFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAxZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4zcztcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciAuZm9vdGVyLW5hdi1pY29uLWFmdGVyIHtcbiAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwLjJlbTtcbiAgICAgIH1cbiAgICBgXG4gIH07XG59O1xuXG5jb25zdCBmbGF0dGVuTWVudSA9IChtZW51SXRlbXM6IE1lbnVQcm9wc1snaXRlbXMnXSk6IE1lbnVQcm9wc1snaXRlbXMnXSB8IG51bGwgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShtZW51SXRlbXMpKSB7XG4gICAgcmV0dXJuIG1lbnVJdGVtcy5yZWR1Y2U8RXhjbHVkZTxNZW51UHJvcHNbJ2l0ZW1zJ10sIHVuZGVmaW5lZD4+KChhY2MsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghaXRlbSkge1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuICAgICAgaWYgKCdjaGlsZHJlbicgaW4gaXRlbSAmJiBpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KGZsYXR0ZW5NZW51KGl0ZW0uY2hpbGRyZW4pID8/IFtdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2MuY29uY2F0KGl0ZW0pO1xuICAgIH0sIFtdKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IFByZXZBbmROZXh0OiBSZWFjdC5GQzx7IHJ0bDogYm9vbGVhbiB9PiA9ICh7IHJ0bCB9KSA9PiB7XG4gIGNvbnN0IHN0eWxlcyA9IHVzZVN0eWxlKCk7XG5cbiAgY29uc3QgYmVmb3JlUHJvcHMgPSB7IGNsYXNzTmFtZTogJ2Zvb3Rlci1uYXYtaWNvbi1iZWZvcmUnIH07XG4gIGNvbnN0IGFmdGVyUHJvcHMgPSB7IGNsYXNzTmFtZTogJ2Zvb3Rlci1uYXYtaWNvbi1hZnRlcicgfTtcblxuICBjb25zdCBiZWZvcmUgPSBydGwgPyA8UmlnaHRPdXRsaW5lZCB7Li4uYmVmb3JlUHJvcHN9IC8+IDogPExlZnRPdXRsaW5lZCB7Li4uYmVmb3JlUHJvcHN9IC8+O1xuICBjb25zdCBhZnRlciA9IHJ0bCA/IDxMZWZ0T3V0bGluZWQgey4uLmFmdGVyUHJvcHN9IC8+IDogPFJpZ2h0T3V0bGluZWQgey4uLmFmdGVyUHJvcHN9IC8+O1xuXG4gIGNvbnN0IFttZW51SXRlbXMsIHNlbGVjdGVkS2V5XSA9IHVzZU1lbnUoeyBiZWZvcmUsIGFmdGVyIH0pO1xuXG4gIGNvbnN0IHsgaXNNb2JpbGUgfSA9IHVzZUNvbnRleHQ8U2l0ZUNvbnRleHRQcm9wcz4oU2l0ZUNvbnRleHQpO1xuXG4gIGNvbnN0IFtwcmV2LCBuZXh0XSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZsYXRNZW51ID0gZmxhdHRlbk1lbnUobWVudUl0ZW1zKTtcbiAgICBpZiAoIWZsYXRNZW51KSB7XG4gICAgICByZXR1cm4gW251bGwsIG51bGxdO1xuICAgIH1cbiAgICBsZXQgYWN0aXZlTWVudUl0ZW1JbmRleCA9IC0xO1xuICAgIGZsYXRNZW51LmZvckVhY2goKG1lbnVJdGVtLCBpKSA9PiB7XG4gICAgICBpZiAobWVudUl0ZW0gJiYgbWVudUl0ZW0ua2V5ID09PSBzZWxlY3RlZEtleSkge1xuICAgICAgICBhY3RpdmVNZW51SXRlbUluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gW1xuICAgICAgZmxhdE1lbnVbYWN0aXZlTWVudUl0ZW1JbmRleCAtIDFdIGFzIE1lbnVJdGVtVHlwZSxcbiAgICAgIGZsYXRNZW51W2FjdGl2ZU1lbnVJdGVtSW5kZXggKyAxXSBhcyBNZW51SXRlbVR5cGVcbiAgICBdO1xuICB9LCBbbWVudUl0ZW1zLCBzZWxlY3RlZEtleV0pO1xuXG4gIGlmIChpc01vYmlsZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8c2VjdGlvbiBjc3M9e3N0eWxlcy5wcmV2TmV4dE5hdn0+XG4gICAgICA8Q2xhc3NOYW1lcz5cbiAgICAgICAgeyh7IGNzczogY2xhc3NDc3MsIGN4IH0pID0+IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAge3ByZXYgJiZcbiAgICAgICAgICAgICAgUmVhY3QuY2xvbmVFbGVtZW50KHByZXYubGFiZWwgYXMgUmVhY3RFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjeChjbGFzc0NzcyhzdHlsZXMucGFnZU5hdiksIGNsYXNzQ3NzKHN0eWxlcy5wcmV2TmF2KSlcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICB7bmV4dCAmJlxuICAgICAgICAgICAgICBSZWFjdC5jbG9uZUVsZW1lbnQobmV4dC5sYWJlbCBhcyBSZWFjdEVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGN4KGNsYXNzQ3NzKHN0eWxlcy5wYWdlTmF2KSwgY2xhc3NDc3Moc3R5bGVzLm5leHROYXYpKVxuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvQ2xhc3NOYW1lcz5cbiAgICA8L3NlY3Rpb24+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcmV2QW5kTmV4dDtcbiJdfQ== */"),
pageNav: "\n flex: 1;\n height: 72px;\n line-height: 72px;\n text-decoration: none;\n\n ".concat(iconCls, " {\n color: #999;\n font-size: ").concat(fontSizeIcon, "px;\n transition: all 0.3s;\n }\n\n .chinese {\n margin-inline-start: 4px;\n }\n "),
prevNav: "\n text-align: start;\n display: flex;\n justify-content: flex-start;\n align-item: center;\n\n .footer-nav-icon-after {\n display: none;\n }\n\n .footer-nav-icon-before {\n position: relative;\n line-height: 0;\n vertical-align: middle;\n transition: inset-inline-end 0.3s;\n margin-inline-end: 1em;\n inset-inline-end: 0;\n }\n\n &:hover .footer-nav-icon-before {\n inset-inline-end: 0.2em;\n }\n ",
nextNav: "\n text-align: end;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n\n .footer-nav-icon-before {\n display: none;\n }\n\n .footer-nav-icon-after {\n position: relative;\n margin-inline-start: 1em;\n margin-bottom: 1px;\n vertical-align: middle;\n line-height: 0;\n left: 0;\n transition: left 0.3s;\n }\n\n &:hover .footer-nav-icon-after {\n inset-inline-start: 0.2em;\n }\n "
};
};
var flattenMenu = function flattenMenu(menuItems) {
if (Array.isArray(menuItems)) {
return menuItems.reduce(function (acc, item) {
if (!item) {
return acc;
}
if ('children' in item && item.children) {
var _flattenMenu;
return acc.concat((_flattenMenu = flattenMenu(item.children)) !== null && _flattenMenu !== void 0 ? _flattenMenu : []);
}
return acc.concat(item);
}, []);
}
return null;
};
var PrevAndNext = function PrevAndNext(_ref) {
var rtl = _ref.rtl;
var styles = useStyle();
var beforeProps = {
className: 'footer-nav-icon-before'
};
var afterProps = {
className: 'footer-nav-icon-after'
};
var before = rtl ? ___EmotionJSX(RightOutlined, beforeProps) : ___EmotionJSX(LeftOutlined, beforeProps);
var after = rtl ? ___EmotionJSX(LeftOutlined, afterProps) : ___EmotionJSX(RightOutlined, afterProps);
var _useMenu = useMenu({
before: before,
after: after
}),
_useMenu2 = _slicedToArray(_useMenu, 2),
menuItems = _useMenu2[0],
selectedKey = _useMenu2[1];
var _useContext = useContext(SiteContext),
isMobile = _useContext.isMobile;
var _useMemo = useMemo(function () {
var flatMenu = flattenMenu(menuItems);
if (!flatMenu) {
return [null, null];
}
var activeMenuItemIndex = -1;
flatMenu.forEach(function (menuItem, i) {
if (menuItem && menuItem.key === selectedKey) {
activeMenuItemIndex = i;
}
});
return [flatMenu[activeMenuItemIndex - 1], flatMenu[activeMenuItemIndex + 1]];
}, [menuItems, selectedKey]),
_useMemo2 = _slicedToArray(_useMemo, 2),
prev = _useMemo2[0],
next = _useMemo2[1];
if (isMobile) {
return null;
}
return ___EmotionJSX("section", {
css: styles.prevNextNav
}, ___EmotionJSX(ClassNames, null, function (_ref2) {
var classCss = _ref2.css,
cx = _ref2.cx;
return ___EmotionJSX(React.Fragment, null, prev && /*#__PURE__*/React.cloneElement(prev.label, {
className: cx(classCss(styles.pageNav), classCss(styles.prevNav))
}), next && /*#__PURE__*/React.cloneElement(next.label, {
className: cx(classCss(styles.pageNav), classCss(styles.nextNav))
}));
}));
};
export default PrevAndNext;