@antv/dumi-theme-antv 0.5.3 → 0.5.4-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builtins/Playground/index.js +1 -1
- package/dist/common/Link.js +78 -0
- package/dist/common/SEO.js +61 -0
- package/dist/hooks/useMenu.js +122 -0
- package/dist/layouts/DocLayout.js +6 -7
- package/dist/layouts/entry/API.js +1 -0
- package/dist/layouts/entry/Index.js +12 -25
- package/dist/layouts/entry/Manual.js +7 -5
- package/dist/pages/404.js +4 -5
- package/dist/pages/Example/index.js +6 -7
- package/dist/pages/Examples/index.js +6 -5
- package/dist/plugin/rehypeObservable.js +6 -3
- package/dist/slots/CodeEditor/index.js +1 -1
- package/dist/slots/CodeRunner/index.js +3 -3
- package/dist/slots/ManualContent/Main.js +90 -0
- package/dist/slots/ManualContent/Sidebar.js +77 -0
- package/dist/slots/ManualContent/index.js +8 -305
- package/dist/slots/ManualContent/index.module.less +63 -29
- package/dist/slots/ManualContent/utils.js +19 -15
- package/dist/slots/utils.js +7 -0
- package/dist/utils/menu.js +46 -0
- package/package.json +47 -43
- package/dist/builtins/Playground/index.d.ts +0 -21
- package/dist/context.d.ts +0 -6
- package/dist/layouts/DocLayout.d.ts +0 -7
- package/dist/layouts/entry/API.d.ts +0 -10
- package/dist/layouts/entry/Index.d.ts +0 -6
- package/dist/layouts/entry/Manual.d.ts +0 -8
- package/dist/model/index.d.ts +0 -5
- package/dist/pages/404.d.ts +0 -5
- package/dist/pages/Example/components/CollapsedIcon/index.d.ts +0 -8
- package/dist/pages/Example/index.d.ts +0 -6
- package/dist/pages/Example/utils.d.ts +0 -1
- package/dist/pages/Examples/components/Accouncement/index.d.ts +0 -6
- package/dist/pages/Examples/components/Article/index.d.ts +0 -2
- package/dist/pages/Examples/components/ExampleTopicMenu/components/LeftMenu/index.d.ts +0 -10
- package/dist/pages/Examples/components/ExampleTopicMenu/index.d.ts +0 -9
- package/dist/pages/Examples/components/GalleryPageContent/DemoCard/index.d.ts +0 -10
- package/dist/pages/Examples/components/GalleryPageContent/index.d.ts +0 -10
- package/dist/pages/Examples/index.d.ts +0 -7
- package/dist/pages/Examples/types.d.ts +0 -34
- package/dist/pages/Examples/utils.d.ts +0 -1
- package/dist/plugin/api.d.ts +0 -7
- package/dist/plugin/examples.d.ts +0 -21
- package/dist/plugin/index.d.ts +0 -3
- package/dist/plugin/rehypeObservable.d.ts +0 -1
- package/dist/slots/404.d.ts +0 -1
- package/dist/slots/API/index.d.ts +0 -14
- package/dist/slots/Article/index.d.ts +0 -3
- package/dist/slots/Banner/Notification.d.ts +0 -10
- package/dist/slots/Banner/index.d.ts +0 -26
- package/dist/slots/Cases/index.d.ts +0 -19
- package/dist/slots/CodeEditor/Toolbar.d.ts +0 -72
- package/dist/slots/CodeEditor/index.d.ts +0 -62
- package/dist/slots/CodeEditor/utils.d.ts +0 -42
- package/dist/slots/CodePreview/CodeHeader.d.ts +0 -19
- package/dist/slots/CodePreview/index.d.ts +0 -25
- package/dist/slots/CodeRunner/index.d.ts +0 -17
- package/dist/slots/CodeRunner/utils.d.ts +0 -11
- package/dist/slots/Companies/index.d.ts +0 -13
- package/dist/slots/ContentTable/index.d.ts +0 -6
- package/dist/slots/Detail/News.d.ts +0 -12
- package/dist/slots/Detail/index.d.ts +0 -30
- package/dist/slots/ExampleSider/index.d.ts +0 -21
- package/dist/slots/Features/FeatureCard.d.ts +0 -9
- package/dist/slots/Features/index.d.ts +0 -15
- package/dist/slots/Footer/index.d.ts +0 -18
- package/dist/slots/Header/Navs.d.ts +0 -27
- package/dist/slots/Header/Products/NavigatorBanner.d.ts +0 -10
- package/dist/slots/Header/Products/Product.d.ts +0 -14
- package/dist/slots/Header/Products/getProducts.d.ts +0 -48
- package/dist/slots/Header/Products/index.d.ts +0 -10
- package/dist/slots/Header/Search/SearchResult.d.ts +0 -21
- package/dist/slots/Header/Search/helper.d.ts +0 -8
- package/dist/slots/Header/Search/index.d.ts +0 -1
- package/dist/slots/Header/index.d.ts +0 -84
- package/dist/slots/Header/utils.d.ts +0 -10
- package/dist/slots/Loading/index.d.ts +0 -5
- package/dist/slots/ManualContent/NavigatorBanner.d.ts +0 -9
- package/dist/slots/ManualContent/Preview.d.ts +0 -7
- package/dist/slots/ManualContent/ReadingTime.d.ts +0 -3
- package/dist/slots/ManualContent/index.d.ts +0 -9
- package/dist/slots/ManualContent/usePreview.d.ts +0 -1
- package/dist/slots/ManualContent/utils.d.ts +0 -19
- package/dist/slots/SEO.d.ts +0 -10
- package/dist/slots/SEO.js +0 -57
- package/dist/slots/global.d.ts +0 -1
- package/dist/slots/hooks.d.ts +0 -16
- package/dist/slots/utils.d.ts +0 -5
- package/dist/types.d.ts +0 -86
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
4
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
5
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
6
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
7
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
8
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
9
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
10
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
11
|
+
import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons';
|
|
12
|
+
import { Affix, Drawer, Layout, Menu } from 'antd';
|
|
13
|
+
import React, { useEffect, useState } from 'react';
|
|
14
|
+
import { useMedia } from 'react-use';
|
|
15
|
+
import { useMenu } from "../../hooks/useMenu";
|
|
16
|
+
import { getAncestorMenuItems } from "../../utils/menu";
|
|
17
|
+
import styles from "./index.module.less";
|
|
18
|
+
export var Sidebar = function Sidebar() {
|
|
19
|
+
var _useState = useState(false),
|
|
20
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
21
|
+
drawOpen = _useState2[0],
|
|
22
|
+
setDrawOpen = _useState2[1];
|
|
23
|
+
var _useMenu = useMenu(),
|
|
24
|
+
_useMenu2 = _slicedToArray(_useMenu, 2),
|
|
25
|
+
menuItems = _useMenu2[0],
|
|
26
|
+
selectedKey = _useMenu2[1];
|
|
27
|
+
var is767Wide = useMedia('(min-width: 767.99px)', true);
|
|
28
|
+
var _useState3 = useState([]),
|
|
29
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
30
|
+
openKeys = _useState4[0],
|
|
31
|
+
setOpenKeys = _useState4[1];
|
|
32
|
+
useEffect(function () {
|
|
33
|
+
var items = getAncestorMenuItems(menuItems, selectedKey);
|
|
34
|
+
setOpenKeys(function (prev) {
|
|
35
|
+
return _toConsumableArray(new Set([].concat(_toConsumableArray(prev), _toConsumableArray(items.map(function (item) {
|
|
36
|
+
return item.key;
|
|
37
|
+
})))));
|
|
38
|
+
});
|
|
39
|
+
}, [menuItems, selectedKey]);
|
|
40
|
+
var menu = /*#__PURE__*/React.createElement(Menu, {
|
|
41
|
+
key: "sider-menu",
|
|
42
|
+
openKeys: openKeys,
|
|
43
|
+
onOpenChange: function onOpenChange(openKeys) {
|
|
44
|
+
return setOpenKeys(openKeys);
|
|
45
|
+
},
|
|
46
|
+
selectedKeys: [selectedKey],
|
|
47
|
+
mode: "inline",
|
|
48
|
+
items: menuItems,
|
|
49
|
+
inlineIndent: 16,
|
|
50
|
+
style: {
|
|
51
|
+
height: '100%'
|
|
52
|
+
},
|
|
53
|
+
triggerSubMenuAction: "click",
|
|
54
|
+
forceSubMenuRender: true
|
|
55
|
+
});
|
|
56
|
+
var Icon = drawOpen ? MenuFoldOutlined : MenuUnfoldOutlined;
|
|
57
|
+
return /*#__PURE__*/React.createElement(Affix, {
|
|
58
|
+
offsetTop: 0,
|
|
59
|
+
className: styles.affix,
|
|
60
|
+
style: {
|
|
61
|
+
height: is767Wide ? '100vh' : 'inherit'
|
|
62
|
+
}
|
|
63
|
+
}, is767Wide ? /*#__PURE__*/React.createElement(Layout.Sider, {
|
|
64
|
+
width: "auto",
|
|
65
|
+
theme: "light",
|
|
66
|
+
className: styles.sider
|
|
67
|
+
}, menu) : /*#__PURE__*/React.createElement(Drawer, {
|
|
68
|
+
handler: /*#__PURE__*/React.createElement(Icon, {
|
|
69
|
+
className: styles.menuSwitch
|
|
70
|
+
}),
|
|
71
|
+
wrapperClassName: styles.menuDrawer,
|
|
72
|
+
onChange: function onChange(open) {
|
|
73
|
+
return setDrawOpen(!!open);
|
|
74
|
+
},
|
|
75
|
+
width: 280
|
|
76
|
+
}, menu));
|
|
77
|
+
};
|
|
@@ -1,311 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
9
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
12
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
13
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
|
-
import { MenuFoldOutlined, MenuUnfoldOutlined, VerticalAlignTopOutlined } from '@ant-design/icons';
|
|
15
|
-
import { get } from 'lodash';
|
|
16
|
-
import { Affix, BackTop, Layout, Menu } from 'antd';
|
|
17
|
-
import { useFullSidebarData, useLocale, useRouteMeta, useSiteData } from 'dumi';
|
|
18
|
-
import Drawer from 'rc-drawer';
|
|
19
|
-
import React, { useEffect, useState } from 'react';
|
|
20
|
-
import { useNavigate } from 'react-router-dom';
|
|
21
|
-
import { useMedia } from 'react-use';
|
|
22
|
-
import readingTime from 'reading-time';
|
|
23
|
-
import URI from 'uri-parse';
|
|
24
|
-
import { ContentTable } from "../ContentTable";
|
|
25
|
-
import { SEO } from "../SEO";
|
|
26
|
-
import { useScrollToTop } from "../hooks";
|
|
27
|
-
import { NavigatorBanner } from "./NavigatorBanner";
|
|
28
|
-
import ReadingTime from "./ReadingTime";
|
|
29
|
-
import { usePreview } from "./usePreview";
|
|
30
|
-
import { getBaseRoute, getIndexRoute, getNavigateUrl, getOpenKeys } from "./utils";
|
|
31
|
-
import 'rc-drawer/assets/index.css';
|
|
1
|
+
import { Layout } from 'antd';
|
|
2
|
+
import React, { Suspense } from 'react';
|
|
32
3
|
import styles from "./index.module.less";
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
*/
|
|
4
|
+
import { Main } from "./Main";
|
|
5
|
+
import { Sidebar } from "./Sidebar";
|
|
36
6
|
export var ManualContent = function ManualContent(_ref) {
|
|
37
7
|
var children = _ref.children;
|
|
38
|
-
|
|
39
|
-
var currentLocale = locale.id;
|
|
40
|
-
var _useSiteData = useSiteData(),
|
|
41
|
-
_useSiteData$themeCon = _useSiteData.themeConfig,
|
|
42
|
-
githubUrl = _useSiteData$themeCon.githubUrl,
|
|
43
|
-
relativePath = _useSiteData$themeCon.relativePath,
|
|
44
|
-
docs = _useSiteData$themeCon.docs;
|
|
45
|
-
var sidebar = useFullSidebarData();
|
|
46
|
-
var is767Wide = useMedia('(min-width: 767.99px)', true);
|
|
47
|
-
var is991Wide = useMedia('(min-width: 991.99px)', true);
|
|
48
|
-
var _useState = useState(false),
|
|
49
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
50
|
-
drawOpen = _useState2[0],
|
|
51
|
-
setDrawOpen = _useState2[1];
|
|
52
|
-
var navigate = useNavigate();
|
|
53
|
-
|
|
54
|
-
// 获取阅读时间
|
|
55
|
-
var mdInfo = useRouteMeta();
|
|
56
|
-
var text = mdInfo.texts.reduce(function (prev, next) {
|
|
57
|
-
return prev + next.value;
|
|
58
|
-
}, '');
|
|
59
|
-
var _readingTime = readingTime(text),
|
|
60
|
-
time = _readingTime.time;
|
|
61
|
-
|
|
62
|
-
// linkoTitle用来映射路由和Title
|
|
63
|
-
var linkoTitle = {};
|
|
64
|
-
for (var _i = 0, _Object$values = Object.values(sidebar); _i < _Object$values.length; _i++) {
|
|
65
|
-
var route = _Object$values[_i];
|
|
66
|
-
route[0].children.forEach(function (item) {
|
|
67
|
-
linkoTitle[item.link] = item.title;
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* /api/xxx --> /api
|
|
72
|
-
* /en/api --> /en/api
|
|
73
|
-
*/
|
|
74
|
-
var baseRoute = getBaseRoute();
|
|
75
|
-
|
|
76
|
-
// 获取最终的 MenuData
|
|
77
|
-
var renderSidebar = getMenuData(sidebar, docs, baseRoute, []);
|
|
78
|
-
function getMenuData(funllSidebarData, rootList, hrefId, list) {
|
|
79
|
-
function fullSidebarDataToMenuData(rootList, hrefId, list) {
|
|
80
|
-
// 递归
|
|
81
|
-
rootList.forEach(function (item) {
|
|
82
|
-
var href = (!baseRoute.startsWith('/en') ? "/".concat(item.slug) : "/en/".concat(item.slug)).toLocaleLowerCase();
|
|
83
|
-
var id = href.split('/').slice(0, href.split('/').length - 1).join('/');
|
|
84
|
-
if (href.includes(baseRoute)) {
|
|
85
|
-
if (id === hrefId) {
|
|
86
|
-
list.push(_objectSpread(_objectSpread({}, item), {}, {
|
|
87
|
-
key: href,
|
|
88
|
-
label: item.title[currentLocale]
|
|
89
|
-
}));
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
var _iterator = _createForOfIteratorHelper(list),
|
|
94
|
-
_step;
|
|
95
|
-
try {
|
|
96
|
-
var _loop = function _loop() {
|
|
97
|
-
var _funllSidebarData$ite;
|
|
98
|
-
var item = _step.value;
|
|
99
|
-
item.children = [];
|
|
100
|
-
fullSidebarDataToMenuData(rootList, item.key, item.children);
|
|
101
|
-
funllSidebarData[item.key] && ((_funllSidebarData$ite = funllSidebarData[item.key][0].children) === null || _funllSidebarData$ite === void 0 ? void 0 : _funllSidebarData$ite.forEach(function (itemChild) {
|
|
102
|
-
var label = itemChild.title;
|
|
103
|
-
var key = itemChild.link;
|
|
104
|
-
var tag = get(itemChild, ['frontmatter', 'tag']);
|
|
105
|
-
item.children.push(_objectSpread(_objectSpread({}, itemChild), {}, {
|
|
106
|
-
label: tag ? /*#__PURE__*/React.createElement("div", {
|
|
107
|
-
className: styles.memuLabel
|
|
108
|
-
}, label, /*#__PURE__*/React.createElement("div", {
|
|
109
|
-
className: styles.tag
|
|
110
|
-
}, tag)) : label,
|
|
111
|
-
key: key
|
|
112
|
-
}));
|
|
113
|
-
}));
|
|
114
|
-
// children 的 order 排序
|
|
115
|
-
item.children.sort(function (a, b) {
|
|
116
|
-
return a.order - b.order;
|
|
117
|
-
});
|
|
118
|
-
if (item.children.length == 0) {
|
|
119
|
-
delete item.children;
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
123
|
-
_loop();
|
|
124
|
-
}
|
|
125
|
-
} catch (err) {
|
|
126
|
-
_iterator.e(err);
|
|
127
|
-
} finally {
|
|
128
|
-
_iterator.f();
|
|
129
|
-
}
|
|
130
|
-
if (hrefId == baseRoute) {
|
|
131
|
-
var _funllSidebarData$bas;
|
|
132
|
-
funllSidebarData[baseRoute] && ((_funllSidebarData$bas = funllSidebarData[baseRoute][0].children) === null || _funllSidebarData$bas === void 0 ? void 0 : _funllSidebarData$bas.forEach(function (itemChild) {
|
|
133
|
-
var key = itemChild.link;
|
|
134
|
-
var label = itemChild.title;
|
|
135
|
-
list.push(_objectSpread(_objectSpread({}, itemChild), {}, {
|
|
136
|
-
label: label,
|
|
137
|
-
key: key
|
|
138
|
-
}));
|
|
139
|
-
}));
|
|
140
|
-
list.sort(function (a, b) {
|
|
141
|
-
return a.order - b.order;
|
|
142
|
-
});
|
|
143
|
-
return list;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
return fullSidebarDataToMenuData(rootList, hrefId, list);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// 获取打开的菜单栏
|
|
150
|
-
var _useState3 = useState(function () {
|
|
151
|
-
return getOpenKeys();
|
|
152
|
-
}),
|
|
153
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
154
|
-
defaultOpenKeys = _useState4[0],
|
|
155
|
-
setDefaultOpenKeys = _useState4[1];
|
|
156
|
-
|
|
157
|
-
// 获取第一个md文件的路由
|
|
158
|
-
var indexRoute = getIndexRoute(renderSidebar);
|
|
159
|
-
|
|
160
|
-
// 点击菜单栏
|
|
161
|
-
var onClick = function onClick(e) {
|
|
162
|
-
navigate(e.key);
|
|
163
|
-
useScrollToTop();
|
|
164
|
-
};
|
|
165
|
-
var _useState5 = useState(),
|
|
166
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
167
|
-
defaultSelectedKey = _useState6[0],
|
|
168
|
-
setDefaultSelectedKey = _useState6[1];
|
|
169
|
-
//上一夜下一页
|
|
170
|
-
var _useState7 = useState(undefined),
|
|
171
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
172
|
-
prev = _useState8[0],
|
|
173
|
-
setPrev = _useState8[1];
|
|
174
|
-
var _useState9 = useState(undefined),
|
|
175
|
-
_useState10 = _slicedToArray(_useState9, 2),
|
|
176
|
-
next = _useState10[0],
|
|
177
|
-
setNext = _useState10[1];
|
|
178
|
-
|
|
179
|
-
// 所有的 sidebar 路由
|
|
180
|
-
var sidebarRoutes = [];
|
|
181
|
-
for (var _i2 = 0, _Object$keys = Object.keys(linkoTitle); _i2 < _Object$keys.length; _i2++) {
|
|
182
|
-
var _route = _Object$keys[_i2];
|
|
183
|
-
sidebarRoutes.push(_route);
|
|
184
|
-
}
|
|
185
|
-
var uri = new URI(location.href);
|
|
186
|
-
uri.path = getNavigateUrl("/".concat(uri.path), indexRoute, sidebarRoutes);
|
|
187
|
-
if ("".concat(uri.path) !== window.location.pathname) {
|
|
188
|
-
uri.path = uri.path.slice(1);
|
|
189
|
-
navigate(uri.toURI().replace(location.origin, ''));
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// 改变菜单栏选中和 openKeys 状态
|
|
193
|
-
useEffect(function () {
|
|
194
|
-
if (window.location.pathname == indexRoute) {
|
|
195
|
-
setDefaultOpenKeys(getOpenKeys());
|
|
196
|
-
}
|
|
197
|
-
setDefaultSelectedKey(window.location.pathname);
|
|
198
|
-
}, [window.location.pathname]);
|
|
199
|
-
useEffect(function () {
|
|
200
|
-
// 监听选中的menu-item 拿到 prev and next
|
|
201
|
-
getPreAndNext();
|
|
202
|
-
}, [defaultSelectedKey]);
|
|
203
|
-
usePreview({}, defaultSelectedKey);
|
|
204
|
-
function getPreAndNext() {
|
|
205
|
-
var menuNodes = document.querySelectorAll('aside .ant-menu-item');
|
|
206
|
-
var currentMenuNode = document.querySelector('aside .ant-menu-item-selected');
|
|
207
|
-
// @ts-ignore
|
|
208
|
-
var currentIndex = Array.from(menuNodes).findIndex(function (node) {
|
|
209
|
-
return node === currentMenuNode;
|
|
210
|
-
});
|
|
211
|
-
var prevNode = currentIndex - 1 >= 0 ? menuNodes[currentIndex - 1] : undefined;
|
|
212
|
-
var nextNode = currentIndex + 1 < menuNodes.length ? menuNodes[currentIndex + 1] : undefined;
|
|
213
|
-
setPrev(prevNode ? {
|
|
214
|
-
slug: prevNode.getAttribute('link') || undefined,
|
|
215
|
-
title: prevNode.textContent || undefined
|
|
216
|
-
} : undefined);
|
|
217
|
-
setNext(nextNode ? {
|
|
218
|
-
slug: nextNode.getAttribute('link') || undefined,
|
|
219
|
-
title: nextNode.textContent || undefined
|
|
220
|
-
} : undefined);
|
|
221
|
-
}
|
|
222
|
-
var getGithubSourceUrl = function getGithubSourceUrl(_ref2) {
|
|
223
|
-
var githubUrl = _ref2.githubUrl,
|
|
224
|
-
relativePath = _ref2.relativePath,
|
|
225
|
-
prefix = _ref2.prefix;
|
|
226
|
-
// https://github.com/antvis/x6/tree/master/packages/x6-sites
|
|
227
|
-
if (githubUrl.includes('/tree/master/')) {
|
|
228
|
-
return "".concat(githubUrl.replace('/tree/master/', '/edit/master/'), "/").concat(prefix, "/").concat(relativePath);
|
|
229
|
-
}
|
|
230
|
-
return "".concat(githubUrl, "/edit/master/").concat(prefix, "/").concat(relativePath);
|
|
231
|
-
};
|
|
232
|
-
var menu = /*#__PURE__*/React.createElement(Menu, {
|
|
233
|
-
onClick: onClick,
|
|
234
|
-
onOpenChange: function onOpenChange(openKeys) {
|
|
235
|
-
setDefaultOpenKeys(openKeys);
|
|
236
|
-
},
|
|
237
|
-
selectedKeys: [defaultSelectedKey],
|
|
238
|
-
openKeys: defaultOpenKeys,
|
|
239
|
-
mode: "inline",
|
|
240
|
-
items: renderSidebar,
|
|
241
|
-
inlineIndent: 16,
|
|
242
|
-
style: {
|
|
243
|
-
height: '100%'
|
|
244
|
-
},
|
|
245
|
-
forceSubMenuRender: true,
|
|
246
|
-
triggerSubMenuAction: "click"
|
|
247
|
-
});
|
|
248
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SEO, {
|
|
249
|
-
title: linkoTitle[window.location.pathname],
|
|
250
|
-
lang: locale.id
|
|
251
|
-
}), /*#__PURE__*/React.createElement(Layout, {
|
|
252
|
-
style: {
|
|
253
|
-
background: '#fff'
|
|
254
|
-
},
|
|
8
|
+
return /*#__PURE__*/React.createElement(Layout, {
|
|
255
9
|
hasSider: true,
|
|
256
10
|
className: styles.layout
|
|
257
|
-
}, /*#__PURE__*/React.createElement(
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
style: {
|
|
261
|
-
height: is767Wide ? '100vh' : 'inherit'
|
|
262
|
-
}
|
|
263
|
-
}, is767Wide ? /*#__PURE__*/React.createElement(Layout.Sider, {
|
|
264
|
-
width: "auto",
|
|
265
|
-
theme: "light",
|
|
266
|
-
className: styles.sider
|
|
267
|
-
}, menu) : /*#__PURE__*/React.createElement(Drawer, {
|
|
268
|
-
handler: drawOpen ? /*#__PURE__*/React.createElement(MenuFoldOutlined, {
|
|
269
|
-
className: styles.menuSwitch
|
|
270
|
-
}) : /*#__PURE__*/React.createElement(MenuUnfoldOutlined, {
|
|
271
|
-
className: styles.menuSwitch
|
|
272
|
-
}),
|
|
273
|
-
wrapperClassName: styles.menuDrawer,
|
|
274
|
-
onChange: function onChange(open) {
|
|
275
|
-
return setDrawOpen(!!open);
|
|
276
|
-
},
|
|
277
|
-
width: 280
|
|
278
|
-
}, menu)), /*#__PURE__*/React.createElement(Layout.Content, {
|
|
279
|
-
className: styles.content
|
|
280
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
281
|
-
className: styles.main
|
|
282
|
-
}, /*#__PURE__*/React.createElement("h1", {
|
|
283
|
-
className: styles.contentTitle
|
|
284
|
-
}, linkoTitle[window.location.pathname]), /*#__PURE__*/React.createElement("div", {
|
|
285
|
-
className: styles.readtimeContainer
|
|
286
|
-
}, /*#__PURE__*/React.createElement(ReadingTime, {
|
|
287
|
-
readingTime: time,
|
|
288
|
-
className: styles.readtime
|
|
289
|
-
})), /*#__PURE__*/React.createElement("div", {
|
|
290
|
-
className: styles.markdown
|
|
291
|
-
}, children), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
|
|
292
|
-
className: styles.preandnext
|
|
293
|
-
}, /*#__PURE__*/React.createElement(NavigatorBanner, {
|
|
294
|
-
type: "prev",
|
|
295
|
-
post: prev
|
|
296
|
-
}), /*#__PURE__*/React.createElement(NavigatorBanner, {
|
|
297
|
-
type: "next",
|
|
298
|
-
post: next
|
|
299
|
-
}), /*#__PURE__*/React.createElement(BackTop, {
|
|
300
|
-
style: {
|
|
301
|
-
right: 32
|
|
302
|
-
}
|
|
303
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
304
|
-
className: styles.backTop
|
|
305
|
-
}, /*#__PURE__*/React.createElement(VerticalAlignTopOutlined, null))))))), is991Wide ? /*#__PURE__*/React.createElement(Layout.Sider, {
|
|
306
|
-
theme: "light",
|
|
307
|
-
width: 260
|
|
308
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
309
|
-
className: styles.toc
|
|
310
|
-
}, /*#__PURE__*/React.createElement(ContentTable, null))) : /*#__PURE__*/React.createElement("div", null)));
|
|
11
|
+
}, /*#__PURE__*/React.createElement(Sidebar, null), /*#__PURE__*/React.createElement(Suspense, {
|
|
12
|
+
fallback: null
|
|
13
|
+
}, /*#__PURE__*/React.createElement(Main, null, children)));
|
|
311
14
|
};
|
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
// 参考 yuque 右侧 tabOfContent 宽度
|
|
5
5
|
@toc-width: 260px;
|
|
6
6
|
|
|
7
|
+
.mainContainer {
|
|
8
|
+
display: flex;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.layout {
|
|
12
|
+
margin: 24px 0 32px;
|
|
13
|
+
min-height: 100vh;
|
|
14
|
+
}
|
|
15
|
+
|
|
7
16
|
.markdown {
|
|
8
17
|
font-size: 14px;
|
|
9
18
|
line-height: 2;
|
|
@@ -76,7 +85,7 @@
|
|
|
76
85
|
margin: 0.6em 0;
|
|
77
86
|
}
|
|
78
87
|
|
|
79
|
-
pre>code[class*='language-'] {
|
|
88
|
+
pre > code[class*='language-'] {
|
|
80
89
|
line-height: 1.8;
|
|
81
90
|
}
|
|
82
91
|
|
|
@@ -125,7 +134,7 @@
|
|
|
125
134
|
padding: 0;
|
|
126
135
|
}
|
|
127
136
|
|
|
128
|
-
ul:not(:global(.ant-skeleton-paragraph))>li {
|
|
137
|
+
ul:not(:global(.ant-skeleton-paragraph)) > li {
|
|
129
138
|
margin-left: 20px;
|
|
130
139
|
padding-left: 4px;
|
|
131
140
|
list-style-type: circle;
|
|
@@ -135,14 +144,14 @@
|
|
|
135
144
|
}
|
|
136
145
|
}
|
|
137
146
|
|
|
138
|
-
ol>li {
|
|
147
|
+
ol > li {
|
|
139
148
|
margin-left: 20px;
|
|
140
149
|
padding-left: 4px;
|
|
141
150
|
list-style-type: decimal;
|
|
142
151
|
}
|
|
143
152
|
|
|
144
|
-
ul>li>p,
|
|
145
|
-
ol>li>p {
|
|
153
|
+
ul > li > p,
|
|
154
|
+
ol > li > p {
|
|
146
155
|
margin: 0.2em 0;
|
|
147
156
|
}
|
|
148
157
|
|
|
@@ -201,8 +210,8 @@
|
|
|
201
210
|
margin: 0;
|
|
202
211
|
}
|
|
203
212
|
|
|
204
|
-
>br,
|
|
205
|
-
>p>br {
|
|
213
|
+
> br,
|
|
214
|
+
> p > br {
|
|
206
215
|
clear: both;
|
|
207
216
|
}
|
|
208
217
|
|
|
@@ -211,10 +220,6 @@
|
|
|
211
220
|
}
|
|
212
221
|
}
|
|
213
222
|
|
|
214
|
-
.layout {
|
|
215
|
-
margin: 24px 0 32px;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
223
|
.main {
|
|
219
224
|
width: 100%;
|
|
220
225
|
padding-left: 48px;
|
|
@@ -228,23 +233,21 @@
|
|
|
228
233
|
.contentReset() {
|
|
229
234
|
min-height: 400px;
|
|
230
235
|
|
|
231
|
-
>img,
|
|
232
|
-
>p>img {
|
|
236
|
+
> img,
|
|
237
|
+
> p > img {
|
|
233
238
|
max-width: 100%;
|
|
234
239
|
margin: 0.5em 0;
|
|
235
240
|
}
|
|
236
241
|
|
|
237
|
-
>br,
|
|
238
|
-
>p>br {
|
|
242
|
+
> br,
|
|
243
|
+
> p > br {
|
|
239
244
|
clear: both;
|
|
240
245
|
}
|
|
241
246
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
247
|
}
|
|
245
248
|
|
|
246
249
|
.tocSider {
|
|
247
|
-
width: @toc-width !
|
|
250
|
+
width: @toc-width !important;
|
|
248
251
|
}
|
|
249
252
|
|
|
250
253
|
// reference yuque UI
|
|
@@ -259,7 +262,7 @@
|
|
|
259
262
|
position: sticky;
|
|
260
263
|
top: 0;
|
|
261
264
|
|
|
262
|
-
ul>li {
|
|
265
|
+
ul > li {
|
|
263
266
|
list-style: none !important;
|
|
264
267
|
padding: 0 !important;
|
|
265
268
|
margin-left: -1px !important;
|
|
@@ -280,7 +283,21 @@
|
|
|
280
283
|
margin-bottom: 20px;
|
|
281
284
|
font-weight: 500;
|
|
282
285
|
font-size: 30px;
|
|
283
|
-
font-family:
|
|
286
|
+
font-family:
|
|
287
|
+
Avenir,
|
|
288
|
+
-apple-system,
|
|
289
|
+
BlinkMacSystemFont,
|
|
290
|
+
Segoe UI,
|
|
291
|
+
PingFang SC,
|
|
292
|
+
Hiragino Sans GB,
|
|
293
|
+
Microsoft YaHei,
|
|
294
|
+
Helvetica Neue,
|
|
295
|
+
Helvetica,
|
|
296
|
+
Arial,
|
|
297
|
+
sans-serif,
|
|
298
|
+
Apple Color Emoji,
|
|
299
|
+
Segoe UI Emoji,
|
|
300
|
+
Segoe UI Symbol;
|
|
284
301
|
line-height: 38px;
|
|
285
302
|
}
|
|
286
303
|
|
|
@@ -301,7 +318,7 @@
|
|
|
301
318
|
}
|
|
302
319
|
|
|
303
320
|
.affix {
|
|
304
|
-
|
|
321
|
+
& > div {
|
|
305
322
|
height: 100%;
|
|
306
323
|
}
|
|
307
324
|
|
|
@@ -404,7 +421,7 @@
|
|
|
404
421
|
transition: all 0.3s;
|
|
405
422
|
margin: 12px;
|
|
406
423
|
|
|
407
|
-
>div {
|
|
424
|
+
> div {
|
|
408
425
|
border: 1px solid @border-color-split;
|
|
409
426
|
border-radius: 6px;
|
|
410
427
|
overflow: hidden;
|
|
@@ -423,7 +440,7 @@
|
|
|
423
440
|
}
|
|
424
441
|
}
|
|
425
442
|
|
|
426
|
-
&:hover>div {
|
|
443
|
+
&:hover > div {
|
|
427
444
|
transform: translateY(-4px);
|
|
428
445
|
border-color: transparent;
|
|
429
446
|
box-shadow: 0 6px 16px rgba(107, 147, 224, 0.14);
|
|
@@ -624,8 +641,10 @@
|
|
|
624
641
|
transition: color 0.3s;
|
|
625
642
|
color: #868484;
|
|
626
643
|
background-color: #fff;
|
|
627
|
-
box-shadow:
|
|
628
|
-
0 6px
|
|
644
|
+
box-shadow:
|
|
645
|
+
0 3px 6px -4px rgba(0, 0, 0, 0.12),
|
|
646
|
+
0 6px 16px 0 rgba(0, 0, 0, 0.08),
|
|
647
|
+
0 9px 28px 8px rgba(0, 0, 0, 0.05);
|
|
629
648
|
transition: color 0.3s;
|
|
630
649
|
width: 44px;
|
|
631
650
|
height: 44px;
|
|
@@ -648,6 +667,7 @@
|
|
|
648
667
|
width: 100% !important;
|
|
649
668
|
min-width: 400px;
|
|
650
669
|
justify-content: center;
|
|
670
|
+
background-color: #fff;
|
|
651
671
|
}
|
|
652
672
|
|
|
653
673
|
.menuSwitch {
|
|
@@ -677,8 +697,8 @@
|
|
|
677
697
|
color: #0d1a26;
|
|
678
698
|
line-height: 1.5715;
|
|
679
699
|
list-style: none;
|
|
680
|
-
-webkit-font-feature-settings:
|
|
681
|
-
font-feature-settings:
|
|
700
|
+
-webkit-font-feature-settings: 'tnum';
|
|
701
|
+
font-feature-settings: 'tnum';
|
|
682
702
|
display: inline-block;
|
|
683
703
|
height: auto;
|
|
684
704
|
margin: 0 8px 0 0;
|
|
@@ -690,7 +710,21 @@
|
|
|
690
710
|
border: 1px solid #d9d9d9;
|
|
691
711
|
border-radius: 2px;
|
|
692
712
|
opacity: 1;
|
|
693
|
-
transition: all .3s;
|
|
713
|
+
transition: all 0.3s;
|
|
694
714
|
background-color: #fff;
|
|
695
|
-
font-family:
|
|
715
|
+
font-family:
|
|
716
|
+
Avenir,
|
|
717
|
+
-apple-system,
|
|
718
|
+
BlinkMacSystemFont,
|
|
719
|
+
Segoe UI,
|
|
720
|
+
PingFang SC,
|
|
721
|
+
Hiragino Sans GB,
|
|
722
|
+
Microsoft YaHei,
|
|
723
|
+
Helvetica Neue,
|
|
724
|
+
Helvetica,
|
|
725
|
+
Arial,
|
|
726
|
+
sans-serif,
|
|
727
|
+
Apple Color Emoji,
|
|
728
|
+
Segoe UI Emoji,
|
|
729
|
+
Segoe UI Symbol;
|
|
696
730
|
}
|
|
@@ -1,33 +1,37 @@
|
|
|
1
|
+
import { isEmpty } from "lodash-es";
|
|
1
2
|
export function getOpenKeys() {
|
|
2
|
-
var pathname = window.location.pathname.replace(
|
|
3
|
-
var pathArr = pathname.split(
|
|
3
|
+
var pathname = window.location.pathname.replace("/docs/", "/").replace("/zh/", "/");
|
|
4
|
+
var pathArr = pathname.split("/");
|
|
4
5
|
var openKeys = [];
|
|
5
6
|
for (var i = pathArr.length; i > 0; i--) {
|
|
6
7
|
var tem = pathArr.slice(0, i);
|
|
7
|
-
openKeys.push(tem.join(
|
|
8
|
+
openKeys.push(tem.join("/"));
|
|
8
9
|
}
|
|
9
10
|
return openKeys;
|
|
10
11
|
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* /api/xxx --> /api
|
|
15
|
+
* /en/api --> /en/api
|
|
16
|
+
*/
|
|
11
17
|
export function getBaseRoute() {
|
|
12
18
|
var matchRoute = window.location.pathname;
|
|
13
19
|
// 兼容 zh
|
|
14
|
-
matchRoute = matchRoute.replace(
|
|
20
|
+
matchRoute = matchRoute.replace("/zh/", "/");
|
|
15
21
|
// 兼容带有docs的route
|
|
16
|
-
matchRoute = matchRoute.replace(
|
|
22
|
+
matchRoute = matchRoute.replace("/docs", "");
|
|
17
23
|
// 查找 baseRoute
|
|
18
|
-
var reg = window.location.pathname.startsWith(
|
|
24
|
+
var reg = window.location.pathname.startsWith("/en") ? /(\/[A-z]*\/?\/[A-z]*)\/?/ : /(\/[A-z]*)\/?/;
|
|
19
25
|
var mainRoute = matchRoute.match(reg);
|
|
20
26
|
return mainRoute[1];
|
|
21
27
|
}
|
|
22
|
-
export function getIndexRoute(
|
|
23
|
-
|
|
24
|
-
var topRoute =
|
|
25
|
-
|
|
26
|
-
while (topRoute.children) {
|
|
28
|
+
export function getIndexRoute(menuData) {
|
|
29
|
+
if (isEmpty(menuData)) return undefined;
|
|
30
|
+
var topRoute = menuData[0];
|
|
31
|
+
while (!isEmpty(topRoute.children)) {
|
|
27
32
|
topRoute = topRoute.children[0];
|
|
28
|
-
defaultOpenKeys.push(topRoute.key);
|
|
29
33
|
}
|
|
30
|
-
return
|
|
34
|
+
return topRoute.key;
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
/**
|
|
@@ -46,8 +50,8 @@ export function getIndexRoute(MenuData) {
|
|
|
46
50
|
*/
|
|
47
51
|
export function getNavigateUrl(pathname, first, siderbarMenu) {
|
|
48
52
|
// 兜底 如果 nav 指定有误则自动重定向到 indexDocRoute
|
|
49
|
-
if (pathname.includes(
|
|
50
|
-
return pathname.replace(
|
|
53
|
+
if (pathname.includes("/docs/") || pathname.includes("/zh/")) {
|
|
54
|
+
return pathname.replace("/docs/", "/").replace("/zh/", "/");
|
|
51
55
|
}
|
|
52
56
|
if (siderbarMenu.every(function (item) {
|
|
53
57
|
var itemLowerCase = "".concat(item).toLowerCase();
|