UNPKG

dumi-theme-antd

Version:

Ant Design 5.0 官网风格类似的 dumi2 主题插件

81 lines (80 loc) 4.87 kB
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2"; import _typeof from "@babel/runtime/helpers/esm/typeof"; import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import { history } from 'dumi'; export function getTargetLocalePath(_ref) { var _ref$pathname = _ref.pathname, pathname = _ref$pathname === void 0 ? history.location.pathname : _ref$pathname, current = _ref.current, target = _ref.target; var clearPath = 'base' in current ? pathname.replace(current.base.replace(/\/$/, ''), '') : pathname.replace(new RegExp("".concat(current.suffix, "$")), ''); return 'base' in target ? "".concat(target.base).concat(clearPath).replace(/^\/\//, '/') : "".concat(clearPath).concat(target.suffix); } // 删除标题中的 HTML 标签 export var removeTitleCode = function removeTitleCode() { var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; return title.replace(/<\w+>.*<\/\w+>/g, ''); }; export var isExternalLinks = function isExternalLinks(link) { return /^(\w+:)\/\/|^(mailto|tel):/.test(link !== null && link !== void 0 ? link : ''); }; export var handleFullSidebarData = function handleFullSidebarData(fullSidebarData) { var nextFullSidebarData = {}; Object.entries(fullSidebarData).forEach(function (_ref2) { var _ref3 = _slicedToArray(_ref2, 2), key = _ref3[0], value = _ref3[1]; var existedLevelOneNavList = Object.keys(nextFullSidebarData); if (key.split('/').length === 3) { var _value$, _value$$children, _levelTwoNav2, _levelTwoNav2$frontma; // 二级目录 var levelOneNavKey = "/".concat(key.split('/')[1]); var _levelTwoNav = (_value$ = value[0]) === null || _value$ === void 0 ? void 0 : (_value$$children = _value$.children) === null || _value$$children === void 0 ? void 0 : _value$$children.find(function (item) { var _item$frontmatter; var _frontmatterInfo = (_item$frontmatter = item.frontmatter) === null || _item$frontmatter === void 0 ? void 0 : _item$frontmatter.nav; return _typeof(_frontmatterInfo) === 'object' && _typeof(_frontmatterInfo === null || _frontmatterInfo === void 0 ? void 0 : _frontmatterInfo.second) === 'object'; }); // 如果是 second 配置不为对象,直接获取其值即可 if (!_levelTwoNav) { var _value$2; _levelTwoNav = (_value$2 = value[0]) === null || _value$2 === void 0 ? void 0 : _value$2.children[0]; } // 找找二级菜单名称以及顺序 var _levelTwoNavInfo = (_levelTwoNav2 = _levelTwoNav) === null || _levelTwoNav2 === void 0 ? void 0 : (_levelTwoNav2$frontma = _levelTwoNav2.frontmatter) === null || _levelTwoNav2$frontma === void 0 ? void 0 : _levelTwoNav2$frontma.nav; var frontmatterNavSecond = { order: 0, title: undefined }; if (typeof _levelTwoNavInfo !== 'string') { var _levelTwoNavInfo$seco, _levelTwoNavInfo$seco2, _levelTwoNavInfo$seco3, _levelTwoNavInfo$seco4; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore frontmatterNavSecond.order = (_levelTwoNavInfo$seco = _levelTwoNavInfo === null || _levelTwoNavInfo === void 0 ? void 0 : (_levelTwoNavInfo$seco2 = _levelTwoNavInfo.second) === null || _levelTwoNavInfo$seco2 === void 0 ? void 0 : _levelTwoNavInfo$seco2.order) !== null && _levelTwoNavInfo$seco !== void 0 ? _levelTwoNavInfo$seco : 0; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore frontmatterNavSecond.title = (_levelTwoNavInfo$seco3 = _levelTwoNavInfo === null || _levelTwoNavInfo === void 0 ? void 0 : (_levelTwoNavInfo$seco4 = _levelTwoNavInfo.second) === null || _levelTwoNavInfo$seco4 === void 0 ? void 0 : _levelTwoNavInfo$seco4.title) !== null && _levelTwoNavInfo$seco3 !== void 0 ? _levelTwoNavInfo$seco3 : _levelTwoNavInfo === null || _levelTwoNavInfo === void 0 ? void 0 : _levelTwoNavInfo.second; } if (existedLevelOneNavList.includes(levelOneNavKey)) { var _value$3; // 已存在,直接 push 为 children nextFullSidebarData[levelOneNavKey].push({ title: frontmatterNavSecond.title, order: frontmatterNavSecond.order, children: (_value$3 = value[0]) === null || _value$3 === void 0 ? void 0 : _value$3.children }); } else { nextFullSidebarData[levelOneNavKey] = value.map(function (item) { return _objectSpread(_objectSpread({}, item), {}, { title: frontmatterNavSecond.title, order: frontmatterNavSecond.order }); }); } } else if (existedLevelOneNavList.includes(key)) { nextFullSidebarData[key] = nextFullSidebarData[key].concat(value); } else { nextFullSidebarData[key] = value; } }); return nextFullSidebarData; };