@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.
Files changed (90) hide show
  1. package/dist/builtins/Playground/index.js +1 -1
  2. package/dist/common/Link.js +78 -0
  3. package/dist/common/SEO.js +61 -0
  4. package/dist/hooks/useMenu.js +122 -0
  5. package/dist/layouts/DocLayout.js +6 -7
  6. package/dist/layouts/entry/API.js +1 -0
  7. package/dist/layouts/entry/Index.js +12 -25
  8. package/dist/layouts/entry/Manual.js +7 -5
  9. package/dist/pages/404.js +4 -5
  10. package/dist/pages/Example/index.js +6 -7
  11. package/dist/pages/Examples/index.js +6 -5
  12. package/dist/plugin/rehypeObservable.js +6 -3
  13. package/dist/slots/CodeEditor/index.js +1 -1
  14. package/dist/slots/CodeRunner/index.js +3 -3
  15. package/dist/slots/ManualContent/Main.js +90 -0
  16. package/dist/slots/ManualContent/Sidebar.js +77 -0
  17. package/dist/slots/ManualContent/index.js +8 -305
  18. package/dist/slots/ManualContent/index.module.less +63 -29
  19. package/dist/slots/ManualContent/utils.js +19 -15
  20. package/dist/slots/utils.js +7 -0
  21. package/dist/utils/menu.js +46 -0
  22. package/package.json +47 -43
  23. package/dist/builtins/Playground/index.d.ts +0 -21
  24. package/dist/context.d.ts +0 -6
  25. package/dist/layouts/DocLayout.d.ts +0 -7
  26. package/dist/layouts/entry/API.d.ts +0 -10
  27. package/dist/layouts/entry/Index.d.ts +0 -6
  28. package/dist/layouts/entry/Manual.d.ts +0 -8
  29. package/dist/model/index.d.ts +0 -5
  30. package/dist/pages/404.d.ts +0 -5
  31. package/dist/pages/Example/components/CollapsedIcon/index.d.ts +0 -8
  32. package/dist/pages/Example/index.d.ts +0 -6
  33. package/dist/pages/Example/utils.d.ts +0 -1
  34. package/dist/pages/Examples/components/Accouncement/index.d.ts +0 -6
  35. package/dist/pages/Examples/components/Article/index.d.ts +0 -2
  36. package/dist/pages/Examples/components/ExampleTopicMenu/components/LeftMenu/index.d.ts +0 -10
  37. package/dist/pages/Examples/components/ExampleTopicMenu/index.d.ts +0 -9
  38. package/dist/pages/Examples/components/GalleryPageContent/DemoCard/index.d.ts +0 -10
  39. package/dist/pages/Examples/components/GalleryPageContent/index.d.ts +0 -10
  40. package/dist/pages/Examples/index.d.ts +0 -7
  41. package/dist/pages/Examples/types.d.ts +0 -34
  42. package/dist/pages/Examples/utils.d.ts +0 -1
  43. package/dist/plugin/api.d.ts +0 -7
  44. package/dist/plugin/examples.d.ts +0 -21
  45. package/dist/plugin/index.d.ts +0 -3
  46. package/dist/plugin/rehypeObservable.d.ts +0 -1
  47. package/dist/slots/404.d.ts +0 -1
  48. package/dist/slots/API/index.d.ts +0 -14
  49. package/dist/slots/Article/index.d.ts +0 -3
  50. package/dist/slots/Banner/Notification.d.ts +0 -10
  51. package/dist/slots/Banner/index.d.ts +0 -26
  52. package/dist/slots/Cases/index.d.ts +0 -19
  53. package/dist/slots/CodeEditor/Toolbar.d.ts +0 -72
  54. package/dist/slots/CodeEditor/index.d.ts +0 -62
  55. package/dist/slots/CodeEditor/utils.d.ts +0 -42
  56. package/dist/slots/CodePreview/CodeHeader.d.ts +0 -19
  57. package/dist/slots/CodePreview/index.d.ts +0 -25
  58. package/dist/slots/CodeRunner/index.d.ts +0 -17
  59. package/dist/slots/CodeRunner/utils.d.ts +0 -11
  60. package/dist/slots/Companies/index.d.ts +0 -13
  61. package/dist/slots/ContentTable/index.d.ts +0 -6
  62. package/dist/slots/Detail/News.d.ts +0 -12
  63. package/dist/slots/Detail/index.d.ts +0 -30
  64. package/dist/slots/ExampleSider/index.d.ts +0 -21
  65. package/dist/slots/Features/FeatureCard.d.ts +0 -9
  66. package/dist/slots/Features/index.d.ts +0 -15
  67. package/dist/slots/Footer/index.d.ts +0 -18
  68. package/dist/slots/Header/Navs.d.ts +0 -27
  69. package/dist/slots/Header/Products/NavigatorBanner.d.ts +0 -10
  70. package/dist/slots/Header/Products/Product.d.ts +0 -14
  71. package/dist/slots/Header/Products/getProducts.d.ts +0 -48
  72. package/dist/slots/Header/Products/index.d.ts +0 -10
  73. package/dist/slots/Header/Search/SearchResult.d.ts +0 -21
  74. package/dist/slots/Header/Search/helper.d.ts +0 -8
  75. package/dist/slots/Header/Search/index.d.ts +0 -1
  76. package/dist/slots/Header/index.d.ts +0 -84
  77. package/dist/slots/Header/utils.d.ts +0 -10
  78. package/dist/slots/Loading/index.d.ts +0 -5
  79. package/dist/slots/ManualContent/NavigatorBanner.d.ts +0 -9
  80. package/dist/slots/ManualContent/Preview.d.ts +0 -7
  81. package/dist/slots/ManualContent/ReadingTime.d.ts +0 -3
  82. package/dist/slots/ManualContent/index.d.ts +0 -9
  83. package/dist/slots/ManualContent/usePreview.d.ts +0 -1
  84. package/dist/slots/ManualContent/utils.d.ts +0 -19
  85. package/dist/slots/SEO.d.ts +0 -10
  86. package/dist/slots/SEO.js +0 -57
  87. package/dist/slots/global.d.ts +0 -1
  88. package/dist/slots/hooks.d.ts +0 -16
  89. package/dist/slots/utils.d.ts +0 -5
  90. 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
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
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
- var locale = useLocale();
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(Affix, {
258
- offsetTop: 0,
259
- className: styles.affix,
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 ! important;
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: Avenir, -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
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
- &>div {
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: 0 3px 6px -4px rgba(0, 0, 0, 0.12),
628
- 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
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: "tnum";
681
- font-feature-settings: "tnum";
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: Avenir, -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
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('/docs/', '/').replace('/zh/', '/');
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('/zh/', '/');
20
+ matchRoute = matchRoute.replace("/zh/", "/");
15
21
  // 兼容带有docs的route
16
- matchRoute = matchRoute.replace('/docs', '');
22
+ matchRoute = matchRoute.replace("/docs", "");
17
23
  // 查找 baseRoute
18
- var reg = window.location.pathname.startsWith('/en') ? /(\/[A-z]*\/?\/[A-z]*)\/?/ : /(\/[A-z]*)\/?/;
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(MenuData) {
23
- var defaultOpenKeys = [];
24
- var topRoute = MenuData[0];
25
- defaultOpenKeys.push(topRoute.key);
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 defaultOpenKeys[defaultOpenKeys.length - 1];
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('/docs/') || pathname.includes('/zh/')) {
50
- return pathname.replace('/docs/', '/').replace('/zh/', '/');
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();