dumi-theme-antd
Version:
Ant Design 5.0 官网风格类似的 dumi2 主题插件
81 lines (80 loc) • 4.87 kB
JavaScript
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;
};