dumi-theme-nocobase
Version:
<h1 align="center">dumi-theme-nocobase</h1>
77 lines • 9.2 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 } from 'react';
import useMenu from "../hooks/useMenu";
import useSiteToken from "../hooks/useSiteToken";
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZXZBbmROZXh0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlb0IiLCJmaWxlIjoiUHJldkFuZE5leHQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGVmdE91dGxpbmVkLCBSaWdodE91dGxpbmVkIH0gZnJvbSAnQGFudC1kZXNpZ24vaWNvbnMnO1xuaW1wb3J0IHsgQ2xhc3NOYW1lcywgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBNZW51UHJvcHMgfSBmcm9tICdhbnRkJztcbmltcG9ydCB0eXBlIHsgTWVudUl0ZW1UeXBlIH0gZnJvbSAnYW50ZC9lcy9tZW51L2hvb2tzL3VzZUl0ZW1zJztcbmltcG9ydCB0eXBlIHsgUmVhY3RFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVudSBmcm9tICcuLi9ob29rcy91c2VNZW51JztcbmltcG9ydCB1c2VTaXRlVG9rZW4gZnJvbSAnLi4vaG9va3MvdXNlU2l0ZVRva2VuJztcblxuY29uc3QgdXNlU3R5bGUgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdG9rZW4gfSA9IHVzZVNpdGVUb2tlbigpO1xuXG4gIGNvbnN0IHsgY29sb3JTcGxpdCwgaWNvbkNscywgZm9udFNpemVJY29uIH0gPSB0b2tlbjtcblxuICByZXR1cm4ge1xuICAgIHByZXZOZXh0TmF2OiBjc3NgXG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjM0cHgpO1xuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDE3MHB4O1xuICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogNjRweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtjb2xvclNwbGl0fTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYCxcbiAgICBwYWdlTmF2OiBgXG4gICAgICBmbGV4OiAxO1xuICAgICAgaGVpZ2h0OiA3MnB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDcycHg7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICR7aWNvbkNsc30ge1xuICAgICAgICBmb250LXNpemU6ICR7Zm9udFNpemVJY29ufXB4O1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgICAgIH1cblxuICAgICAgLmNoaW5lc2Uge1xuICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiA0cHg7XG4gICAgICB9XG4gICAgYCxcbiAgICBwcmV2TmF2OiBgXG4gICAgICB0ZXh0LWFsaWduOiBzdGFydDtcblxuICAgICAgLmZvb3Rlci1uYXYtaWNvbi1hZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5mb290ZXItbmF2LWljb24tYmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogMWVtO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IHJpZ2h0IDAuM3M7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIgLmZvb3Rlci1uYXYtaWNvbi1iZWZvcmUge1xuICAgICAgICByaWdodDogMC4yZW07XG4gICAgICB9XG4gICAgYCxcbiAgICBuZXh0TmF2OiBgXG4gICAgICB0ZXh0LWFsaWduOiBlbmQ7XG5cbiAgICAgIC5mb290ZXItbmF2LWljb24tYmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmZvb3Rlci1uYXYtaWNvbi1hZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogMWVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxcHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuM3M7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIgLmZvb3Rlci1uYXYtaWNvbi1hZnRlciB7XG4gICAgICAgIGxlZnQ6IDAuMmVtO1xuICAgICAgfVxuICAgIGBcbiAgfTtcbn07XG5cbmNvbnN0IGZsYXR0ZW5NZW51ID0gKG1lbnVJdGVtczogTWVudVByb3BzWydpdGVtcyddKTogTWVudVByb3BzWydpdGVtcyddIHwgbnVsbCA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KG1lbnVJdGVtcykpIHtcbiAgICByZXR1cm4gbWVudUl0ZW1zLnJlZHVjZTxFeGNsdWRlPE1lbnVQcm9wc1snaXRlbXMnXSwgdW5kZWZpbmVkPj4oKGFjYywgaXRlbSkgPT4ge1xuICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG4gICAgICBpZiAoJ2NoaWxkcmVuJyBpbiBpdGVtICYmIGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQoZmxhdHRlbk1lbnUoaXRlbS5jaGlsZHJlbikgPz8gW10pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYy5jb25jYXQoaXRlbSk7XG4gICAgfSwgW10pO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuY29uc3QgUHJldkFuZE5leHQ6IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCBzdHlsZXMgPSB1c2VTdHlsZSgpO1xuXG4gIGNvbnN0IFttZW51SXRlbXMsIHNlbGVjdGVkS2V5XSA9IHVzZU1lbnUoe1xuICAgIGJlZm9yZTogPExlZnRPdXRsaW5lZCBjbGFzc05hbWU9XCJmb290ZXItbmF2LWljb24tYmVmb3JlXCIgLz4sXG4gICAgYWZ0ZXI6IDxSaWdodE91dGxpbmVkIGNsYXNzTmFtZT1cImZvb3Rlci1uYXYtaWNvbi1hZnRlclwiIC8+XG4gIH0pO1xuXG4gIGNvbnN0IFtwcmV2LCBuZXh0XSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZsYXRNZW51ID0gZmxhdHRlbk1lbnUobWVudUl0ZW1zKTtcbiAgICBpZiAoIWZsYXRNZW51KSB7XG4gICAgICByZXR1cm4gW251bGwsIG51bGxdO1xuICAgIH1cbiAgICBsZXQgYWN0aXZlTWVudUl0ZW1JbmRleCA9IC0xO1xuICAgIGZsYXRNZW51LmZvckVhY2goKG1lbnVJdGVtLCBpKSA9PiB7XG4gICAgICBpZiAobWVudUl0ZW0gJiYgbWVudUl0ZW0ua2V5ID09PSBzZWxlY3RlZEtleSkge1xuICAgICAgICBhY3RpdmVNZW51SXRlbUluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gW1xuICAgICAgZmxhdE1lbnVbYWN0aXZlTWVudUl0ZW1JbmRleCAtIDFdIGFzIE1lbnVJdGVtVHlwZSxcbiAgICAgIGZsYXRNZW51W2FjdGl2ZU1lbnVJdGVtSW5kZXggKyAxXSBhcyBNZW51SXRlbVR5cGVcbiAgICBdO1xuICB9LCBbbWVudUl0ZW1zLCBzZWxlY3RlZEtleV0pO1xuXG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gY3NzPXtzdHlsZXMucHJldk5leHROYXZ9PlxuICAgICAgPENsYXNzTmFtZXM+XG4gICAgICAgIHsoeyBjc3M6IGNsYXNzQ3NzLCBjeCB9KSA9PiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHtwcmV2ICYmXG4gICAgICAgICAgICAgIFJlYWN0LmNsb25lRWxlbWVudChwcmV2LmxhYmVsIGFzIFJlYWN0RWxlbWVudCwge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY3goY2xhc3NDc3Moc3R5bGVzLnBhZ2VOYXYpLCBjbGFzc0NzcyhzdHlsZXMucHJldk5hdikpXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAge25leHQgJiZcbiAgICAgICAgICAgICAgUmVhY3QuY2xvbmVFbGVtZW50KG5leHQubGFiZWwgYXMgUmVhY3RFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjeChjbGFzc0NzcyhzdHlsZXMucGFnZU5hdiksIGNsYXNzQ3NzKHN0eWxlcy5uZXh0TmF2KSlcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0NsYXNzTmFtZXM+XG4gICAgPC9zZWN0aW9uPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJldkFuZE5leHQ7XG4iXX0= */"),
pageNav: "\n flex: 1;\n height: 72px;\n line-height: 72px;\n text-decoration: none;\n\n ".concat(iconCls, " {\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\n .footer-nav-icon-after {\n display: none;\n }\n\n .footer-nav-icon-before {\n position: relative;\n margin-inline-end: 1em;\n vertical-align: middle;\n line-height: 0;\n right: 0;\n transition: right 0.3s;\n }\n\n &:hover .footer-nav-icon-before {\n right: 0.2em;\n }\n ",
nextNav: "\n text-align: end;\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 left: 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() {
var styles = useStyle();
var _useMenu = useMenu({
before: ___EmotionJSX(LeftOutlined, {
className: "footer-nav-icon-before"
}),
after: ___EmotionJSX(RightOutlined, {
className: "footer-nav-icon-after"
})
}),
_useMenu2 = _slicedToArray(_useMenu, 2),
menuItems = _useMenu2[0],
selectedKey = _useMenu2[1];
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];
return ___EmotionJSX("section", {
css: styles.prevNextNav
}, ___EmotionJSX(ClassNames, null, function (_ref) {
var classCss = _ref.css,
cx = _ref.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;