@antv/dumi-theme-antv 0.3.0-beta.2 → 0.3.0-beta.21

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 (89) hide show
  1. package/dist/builtins/Playground/index.d.ts +3 -6
  2. package/dist/builtins/Playground/index.js +27 -7
  3. package/dist/context.d.ts +2 -1
  4. package/dist/layouts/DocLayout.js +25 -16
  5. package/dist/layouts/entry/Index.js +21 -12
  6. package/dist/layouts/entry/Manual.js +6 -4
  7. package/dist/pages/404.js +7 -4
  8. package/dist/pages/Example/index.js +31 -55
  9. package/dist/pages/Example/index.module.less +50 -8
  10. package/dist/pages/Example/utils.d.ts +1 -0
  11. package/dist/pages/Example/utils.js +9 -0
  12. package/dist/pages/Examples/components/ExampleTopicMenu/components/LeftMenu/index.js +6 -1
  13. package/dist/pages/Examples/components/GalleryPageContent/DemoCard/index.js +11 -6
  14. package/dist/pages/Examples/index.js +24 -4
  15. package/dist/pages/Examples/index.module.less +15 -0
  16. package/dist/pages/Examples/types.d.ts +7 -6
  17. package/dist/plugin/examples.d.ts +14 -5
  18. package/dist/plugin/examples.js +17 -3
  19. package/dist/plugin/index.js +31 -8
  20. package/dist/plugin/utils.js +3 -2
  21. package/dist/slots/Article/index.d.ts +3 -0
  22. package/dist/slots/Article/index.js +11 -0
  23. package/dist/slots/Article/index.module.less +8 -0
  24. package/dist/slots/Banner/Notification.d.ts +10 -0
  25. package/dist/slots/Banner/Notification.js +43 -0
  26. package/dist/slots/Banner/Notification.module.less +120 -0
  27. package/dist/slots/Banner/index.d.ts +26 -0
  28. package/dist/slots/Banner/index.js +184 -0
  29. package/dist/slots/Banner/index.module.less +449 -0
  30. package/dist/slots/Cases/index.d.ts +1 -0
  31. package/dist/slots/Cases/index.js +13 -7
  32. package/dist/slots/Cases/index.module.less +2 -1
  33. package/dist/slots/CodeEditor/Toolbar.js +17 -22
  34. package/dist/slots/CodeEditor/index.d.ts +4 -0
  35. package/dist/slots/CodeEditor/index.js +71 -23
  36. package/dist/slots/CodeEditor/utils.js +2 -2
  37. package/dist/slots/CodePreview/CodeHeader.js +15 -14
  38. package/dist/slots/CodePreview/index.d.ts +8 -0
  39. package/dist/slots/CodePreview/index.js +15 -6
  40. package/dist/slots/CodePreview/index.module.less +17 -7
  41. package/dist/slots/CodeRunner/index.d.ts +5 -2
  42. package/dist/slots/CodeRunner/index.js +19 -8
  43. package/dist/slots/CodeRunner/utils.d.ts +3 -2
  44. package/dist/slots/CodeRunner/utils.js +1 -1
  45. package/dist/slots/Companies/index.d.ts +1 -1
  46. package/dist/slots/{TOC.d.ts → ContentTable/index.d.ts} +2 -1
  47. package/dist/slots/{TOC.js → ContentTable/index.js} +2 -1
  48. package/dist/slots/ContentTable/index.module.less +11 -0
  49. package/dist/slots/Detail/News.d.ts +1 -0
  50. package/dist/slots/Detail/News.js +3 -2
  51. package/dist/slots/Detail/index.d.ts +1 -0
  52. package/dist/slots/Detail/index.js +4 -2
  53. package/dist/slots/ExampleSider/index.d.ts +4 -38
  54. package/dist/slots/ExampleSider/index.js +28 -49
  55. package/dist/slots/ExampleSider/index.module.less +1 -1
  56. package/dist/slots/Features/FeatureCard.d.ts +1 -0
  57. package/dist/slots/Features/index.js +7 -3
  58. package/dist/slots/Features/index.module.less +1 -1
  59. package/dist/slots/Footer/index.js +34 -14
  60. package/dist/slots/Header/LogoWhite.js +1 -2
  61. package/dist/slots/Header/Navs.d.ts +10 -1
  62. package/dist/slots/Header/Navs.js +36 -19
  63. package/dist/slots/Header/Products/NavigatorBanner.js +4 -3
  64. package/dist/slots/Header/Products/Product.js +7 -3
  65. package/dist/slots/Header/Products/index.js +5 -3
  66. package/dist/slots/Header/Search.js +5 -3
  67. package/dist/slots/Header/index.d.ts +7 -2
  68. package/dist/slots/Header/index.js +135 -30
  69. package/dist/slots/Loading/index.d.ts +6 -1
  70. package/dist/slots/Loading/index.js +24 -10
  71. package/dist/slots/Loading/index.module.less +276 -9
  72. package/dist/slots/ManualContent/NavigatorBanner.js +5 -3
  73. package/dist/slots/ManualContent/ReadingTime.js +6 -2
  74. package/dist/slots/ManualContent/index.js +143 -126
  75. package/dist/slots/ManualContent/index.module.less +52 -33
  76. package/dist/slots/ManualContent/utils.d.ts +18 -0
  77. package/dist/slots/ManualContent/utils.js +64 -0
  78. package/dist/slots/SEO.d.ts +10 -0
  79. package/dist/slots/SEO.js +59 -0
  80. package/dist/slots/_.less +1 -1
  81. package/dist/slots/hooks.d.ts +4 -4
  82. package/dist/slots/hooks.js +5 -8
  83. package/dist/slots/utils.d.ts +4 -19
  84. package/dist/slots/utils.js +82 -119
  85. package/dist/types.d.ts +83 -0
  86. package/dist/typings.d.ts +0 -116
  87. package/package.json +9 -5
  88. package/dist/slots/Loading.d.ts +0 -5
  89. package/dist/slots/Loading.js +0 -8
@@ -1,11 +1,3 @@
1
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
-
3
- 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."); }
4
-
5
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
6
-
7
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
8
-
9
1
  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(_e2) { throw _e2; }, 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(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
10
2
 
11
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -27,16 +19,19 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
27
19
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
28
20
 
29
21
  import React, { useEffect, useState } from 'react';
30
- import { Layout, Affix, BackTop, Menu, Tooltip } from 'antd';
22
+ import { Layout, Affix, BackTop, Menu } from 'antd';
31
23
  import { useMedia } from 'react-use';
32
24
  import Drawer from 'rc-drawer';
33
25
  import { useLocale, useSiteData, useFullSidebarData, useRouteMeta } from 'dumi';
34
26
  import { useNavigate } from "react-router-dom";
35
- import { EditOutlined, MenuFoldOutlined, MenuUnfoldOutlined, VerticalAlignTopOutlined } from '@ant-design/icons';
27
+ import { MenuFoldOutlined, MenuUnfoldOutlined, VerticalAlignTopOutlined } from '@ant-design/icons';
36
28
  import readingTime from 'reading-time';
29
+ import URI from 'uri-parse';
30
+ import { SEO } from "dumi/theme/slots/SEO";
31
+ import { getBaseRoute, getIndexRoute, getOpenKeys, getNavigateUrl } from "./utils";
37
32
  import { NavigatorBanner } from "./NavigatorBanner";
38
33
  import ReadingTime from "./ReadingTime";
39
- import { TOC } from "../TOC";
34
+ import { ContentTable } from "dumi/theme/slots/ContentTable";
40
35
  import { useScrollToTop } from "../hooks";
41
36
  import 'rc-drawer/assets/index.css';
42
37
  import styles from "./index.module.less";
@@ -56,14 +51,15 @@ export var ManualContent = function ManualContent(_ref) {
56
51
  docs = _useSiteData$themeCon.docs;
57
52
 
58
53
  var sidebar = useFullSidebarData();
59
- var isWide = useMedia('(min-width: 767.99px)', true);
54
+ var is767Wide = useMedia('(min-width: 767.99px)', true);
55
+ var is991Wide = useMedia('(min-width: 991.99px)', true);
60
56
 
61
57
  var _useState = useState(false),
62
58
  _useState2 = _slicedToArray(_useState, 2),
63
59
  drawOpen = _useState2[0],
64
60
  setDrawOpen = _useState2[1];
65
61
 
66
- var navigate = useNavigate(); // 获取阅读时间
62
+ var navigate = useNavigate(); // 获取阅读时间
67
63
 
68
64
  var mdInfo = useRouteMeta();
69
65
  var text = mdInfo.texts.reduce(function (prev, next) {
@@ -71,132 +67,154 @@ export var ManualContent = function ManualContent(_ref) {
71
67
  }, '');
72
68
 
73
69
  var _readingTime = readingTime(text),
74
- time = _readingTime.time; // menu渲染
75
- // linkoTitle用来映射路由和Title
70
+ time = _readingTime.time; // linkoTitle用来映射路由和Title
76
71
 
77
72
 
78
73
  var linkoTitle = {};
79
74
 
80
- function getBaseRoute() {
81
- var matchRoute = window.location.pathname;
82
- var reg = window.location.pathname.startsWith('/en') ? /(\/[A-z]*\/?\/[A-z]*)\/?/ : /(\/[A-z]*)\/?/;
83
- var mainRoute = matchRoute.match(reg);
84
- return mainRoute[1];
75
+ for (var _i2 = 0, _Object$values = Object.values(sidebar); _i2 < _Object$values.length; _i2++) {
76
+ var route = _Object$values[_i2];
77
+ route[0].children.forEach(function (item) {
78
+ linkoTitle[item.link] = item.title;
79
+ });
85
80
  }
81
+ /**
82
+ * /api/xxx --> /api
83
+ * /en/api --> /en/api
84
+ */
85
+
86
+
87
+ var baseRoute = getBaseRoute(); // 获取最终的 MenuData
88
+
89
+ var renderSidebar = getMenuData(sidebar, docs, baseRoute, []);
90
+
91
+ function getMenuData(funllSidebarData, rootList, hrefId, list) {
92
+ function fullSidebarDataToMenuData(rootList, hrefId, list) {
93
+ // 递归
94
+ rootList.forEach(function (item) {
95
+ var href = (!baseRoute.startsWith('/en') ? "/".concat(item.slug) : "/en/".concat(item.slug)).toLocaleLowerCase();
96
+ var id = href.split("/").slice(0, href.split("/").length - 1).join("/");
97
+
98
+ if (href.includes(baseRoute)) {
99
+ if (id === hrefId) {
100
+ list.push(_objectSpread(_objectSpread({}, item), {}, {
101
+ key: href,
102
+ label: item.title[currentLocale]
103
+ }));
104
+ }
105
+ }
106
+ });
86
107
 
87
- var baseRoute = getBaseRoute();
88
-
89
- function fullSidebarDataToMenuData(rootList, hrefId, list) {
90
- // 递归
91
- rootList.forEach(function (item) {
92
- var href = !baseRoute.startsWith('/en') ? "/".concat(item.slug) : "/en/".concat(item.slug);
93
- var id = href.split("/").slice(0, href.split("/").length - 1).join("/");
94
-
95
- if (href.includes(baseRoute)) {
96
- if (id === hrefId) {
97
- list.push(_objectSpread(_objectSpread({}, item), {}, {
98
- key: href,
99
- label: item.title[currentLocale]
100
- }));
108
+ var _iterator = _createForOfIteratorHelper(list),
109
+ _step;
110
+
111
+ try {
112
+ var _loop = function _loop() {
113
+ var _funllSidebarData$ite;
114
+
115
+ var item = _step.value;
116
+ item.children = [];
117
+ fullSidebarDataToMenuData(rootList, item.key, item.children);
118
+ funllSidebarData[item.key] && ((_funllSidebarData$ite = funllSidebarData[item.key][0].children) === null || _funllSidebarData$ite === void 0 ? void 0 : _funllSidebarData$ite.forEach(function (itemChild) {
119
+ var label = itemChild.title;
120
+ var key = itemChild.link;
121
+ item.children.push(_objectSpread(_objectSpread({}, itemChild), {}, {
122
+ label: label,
123
+ key: key
124
+ }));
125
+ })); // children 的 order 排序
126
+
127
+ item.children.sort(function (a, b) {
128
+ return a.order - b.order;
129
+ });
130
+
131
+ if (item.children.length == 0) {
132
+ delete item.children;
133
+ }
134
+ };
135
+
136
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
137
+ _loop();
101
138
  }
139
+ } catch (err) {
140
+ _iterator.e(err);
141
+ } finally {
142
+ _iterator.f();
102
143
  }
103
- });
104
-
105
- var _iterator = _createForOfIteratorHelper(list),
106
- _step;
107
144
 
108
- try {
109
- var _loop = function _loop() {
110
- var _sidebar$item$key$0$c;
145
+ if (hrefId == baseRoute) {
146
+ var _funllSidebarData$bas;
111
147
 
112
- var item = _step.value;
113
- item.children = [];
114
- fullSidebarDataToMenuData(rootList, item.key, item.children);
115
- (_sidebar$item$key$0$c = sidebar[item.key][0].children) === null || _sidebar$item$key$0$c === void 0 ? void 0 : _sidebar$item$key$0$c.forEach(function (itemChild) {
116
- var label = itemChild.title;
148
+ funllSidebarData[baseRoute] && ((_funllSidebarData$bas = funllSidebarData[baseRoute][0].children) === null || _funllSidebarData$bas === void 0 ? void 0 : _funllSidebarData$bas.forEach(function (itemChild) {
117
149
  var key = itemChild.link;
118
- item.children.push(_objectSpread(_objectSpread({}, itemChild), {}, {
150
+ var label = itemChild.title;
151
+ list.push(_objectSpread(_objectSpread({}, itemChild), {}, {
119
152
  label: label,
120
153
  key: key
121
154
  }));
122
- linkoTitle[key] = label;
155
+ }));
156
+ list.sort(function (a, b) {
157
+ return a.order - b.order;
123
158
  });
124
-
125
- if (item.children.length == 0) {
126
- delete item.children;
127
- }
128
- };
129
-
130
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
131
- _loop();
159
+ return list;
132
160
  }
133
- } catch (err) {
134
- _iterator.e(err);
135
- } finally {
136
- _iterator.f();
137
- }
138
-
139
- if (hrefId == baseRoute) {
140
- var _sidebar$baseRoute$0$;
141
-
142
- sidebar[baseRoute] && ((_sidebar$baseRoute$0$ = sidebar[baseRoute][0].children) === null || _sidebar$baseRoute$0$ === void 0 ? void 0 : _sidebar$baseRoute$0$.forEach(function (itemChild) {
143
- var label = itemChild.title;
144
- list.push(_objectSpread(_objectSpread({}, itemChild), {}, {
145
- label: label,
146
- key: itemChild.link
147
- }));
148
- }));
149
- list.sort(function (a, b) {
150
- return a.order - b.order;
151
- });
152
- return list;
153
161
  }
154
- } // 获取最终的MenuData
155
162
 
163
+ return fullSidebarDataToMenuData(rootList, hrefId, list);
164
+ } // 获取打开的菜单栏
156
165
 
157
- var renderSidebar = fullSidebarDataToMenuData(docs, baseRoute, []); // 获取默认打开的菜单栏
158
166
 
159
- function getDefaultOpenKeys(MenuData) {
160
- var defaultOpenKeys = [];
161
- var topRoute = MenuData[0];
162
- defaultOpenKeys.push(topRoute.key);
163
-
164
- while (topRoute.children) {
165
- topRoute = topRoute.children[0];
166
- defaultOpenKeys.push(topRoute.key);
167
- }
167
+ var _useState3 = useState(function () {
168
+ return getOpenKeys();
169
+ }),
170
+ _useState4 = _slicedToArray(_useState3, 2),
171
+ defaultOpenKeys = _useState4[0],
172
+ setDefaultOpenKeys = _useState4[1]; // 获取第一个md文件的路由
168
173
 
169
- return defaultOpenKeys;
170
- }
171
174
 
172
- var defaultOpenKeys = getDefaultOpenKeys(renderSidebar); // 点击菜单栏
175
+ var indexRoute = getIndexRoute(renderSidebar); // 点击菜单栏
173
176
 
174
177
  var onClick = function onClick(e) {
175
178
  navigate(e.key);
176
179
  useScrollToTop();
177
180
  };
178
181
 
179
- var _useState3 = useState([renderSidebar[0].key]),
180
- _useState4 = _slicedToArray(_useState3, 2),
181
- defaultSelectedKey = _useState4[0],
182
- setDefaultSelectedKey = _useState4[1]; //上一夜下一页
183
-
184
-
185
- var _useState5 = useState(undefined),
182
+ var _useState5 = useState(),
186
183
  _useState6 = _slicedToArray(_useState5, 2),
187
- prev = _useState6[0],
188
- setPrev = _useState6[1];
184
+ defaultSelectedKey = _useState6[0],
185
+ setDefaultSelectedKey = _useState6[1]; //上一夜下一页
186
+
189
187
 
190
188
  var _useState7 = useState(undefined),
191
189
  _useState8 = _slicedToArray(_useState7, 2),
192
- next = _useState8[0],
193
- setNext = _useState8[1]; // 监听路由去改变selected menu-item
190
+ prev = _useState8[0],
191
+ setPrev = _useState8[1];
192
+
193
+ var _useState9 = useState(undefined),
194
+ _useState10 = _slicedToArray(_useState9, 2),
195
+ next = _useState10[0],
196
+ setNext = _useState10[1]; // 所有的 sidebar 路由
197
+
198
+
199
+ var sidebarRoutes = [];
200
+
201
+ for (var _i3 = 0, _Object$keys = Object.keys(linkoTitle); _i3 < _Object$keys.length; _i3++) {
202
+ var route = _Object$keys[_i3];
203
+ sidebarRoutes.push(route);
204
+ }
205
+
206
+ var uri = new URI(location.href);
207
+ uri.path = getNavigateUrl("/".concat(uri.path), indexRoute, sidebarRoutes);
208
+
209
+ if ("".concat(uri.path) !== window.location.pathname) {
210
+ uri.path = uri.path.slice(1);
211
+ navigate(uri.toURI().replace(location.origin, ''));
212
+ } // 改变菜单栏选中和 openKeys 状态
194
213
 
195
214
 
196
215
  useEffect(function () {
197
- if (window.location.pathname == baseRoute) {
198
- navigate(renderSidebar[0].key);
199
- return;
216
+ if (window.location.pathname == indexRoute) {
217
+ setDefaultOpenKeys(getOpenKeys());
200
218
  }
201
219
 
202
220
  setDefaultSelectedKey([window.location.pathname]);
@@ -240,18 +258,24 @@ export var ManualContent = function ManualContent(_ref) {
240
258
 
241
259
  var menu = /*#__PURE__*/React.createElement(Menu, {
242
260
  onClick: onClick,
243
- defaultSelectedKeys: defaultSelectedKey,
261
+ onOpenChange: function onOpenChange(openKeys) {
262
+ setDefaultOpenKeys(openKeys);
263
+ },
244
264
  selectedKeys: defaultSelectedKey,
245
- defaultOpenKeys: _toConsumableArray(defaultOpenKeys),
265
+ openKeys: defaultOpenKeys,
246
266
  mode: "inline",
247
267
  items: renderSidebar,
248
268
  inlineIndent: 16,
249
269
  style: {
250
270
  height: '100%'
251
271
  },
252
- forceSubMenuRender: true
272
+ forceSubMenuRender: true,
273
+ triggerSubMenuAction: "click"
253
274
  });
254
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Layout, {
275
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SEO, {
276
+ title: linkoTitle[window.location.pathname],
277
+ lang: locale.id
278
+ }), /*#__PURE__*/React.createElement(Layout, {
255
279
  style: {
256
280
  background: '#fff'
257
281
  },
@@ -261,9 +285,9 @@ export var ManualContent = function ManualContent(_ref) {
261
285
  offsetTop: 0,
262
286
  className: styles.affix,
263
287
  style: {
264
- height: isWide ? '100vh' : 'inherit'
288
+ height: is767Wide ? '100vh' : 'inherit'
265
289
  }
266
- }, isWide ? /*#__PURE__*/React.createElement(Layout.Sider, {
290
+ }, is767Wide ? /*#__PURE__*/React.createElement(Layout.Sider, {
267
291
  width: "auto",
268
292
  theme: "light",
269
293
  className: styles.sider
@@ -281,22 +305,15 @@ export var ManualContent = function ManualContent(_ref) {
281
305
  }, menu)), /*#__PURE__*/React.createElement(Layout.Content, {
282
306
  className: styles.content
283
307
  }, /*#__PURE__*/React.createElement("div", {
284
- className: styles.contentMain
285
- }, /*#__PURE__*/React.createElement("h1", null, linkoTitle[window.location.pathname], /*#__PURE__*/React.createElement(Tooltip, {
286
- title: '在 GitHub 上编辑'
287
- }, /*#__PURE__*/React.createElement("a", {
288
- href: getGithubSourceUrl({
289
- githubUrl: githubUrl,
290
- relativePath: relativePath,
291
- prefix: 'docs'
292
- }),
293
- target: "_blank",
294
- rel: "noopener noreferrer",
295
- className: styles.editOnGtiHubButton
296
- }, /*#__PURE__*/React.createElement(EditOutlined, null)))), /*#__PURE__*/React.createElement(ReadingTime, {
308
+ className: styles.main
309
+ }, /*#__PURE__*/React.createElement("h1", {
310
+ className: styles.contentTitle
311
+ }, linkoTitle[window.location.pathname]), /*#__PURE__*/React.createElement("div", {
312
+ className: styles.readtimeContainer
313
+ }, /*#__PURE__*/React.createElement(ReadingTime, {
297
314
  readingTime: time,
298
315
  className: styles.readtime
299
- }), /*#__PURE__*/React.createElement("div", {
316
+ })), /*#__PURE__*/React.createElement("div", {
300
317
  className: styles.markdown
301
318
  }, children), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
302
319
  className: styles.preandnext
@@ -312,10 +329,10 @@ export var ManualContent = function ManualContent(_ref) {
312
329
  }
313
330
  }, /*#__PURE__*/React.createElement("div", {
314
331
  className: styles.backTop
315
- }, /*#__PURE__*/React.createElement(VerticalAlignTopOutlined, null))))))), /*#__PURE__*/React.createElement(Layout.Sider, {
332
+ }, /*#__PURE__*/React.createElement(VerticalAlignTopOutlined, null))))))), is991Wide ? /*#__PURE__*/React.createElement(Layout.Sider, {
316
333
  theme: "light",
317
334
  width: 260
318
335
  }, /*#__PURE__*/React.createElement(Affix, {
319
336
  className: styles.toc
320
- }, /*#__PURE__*/React.createElement(TOC, null)))));
337
+ }, /*#__PURE__*/React.createElement(ContentTable, null))) : /*#__PURE__*/React.createElement("div", null)));
321
338
  };
@@ -7,6 +7,7 @@
7
7
  .markdown {
8
8
  font-size: 14px;
9
9
  line-height: 2;
10
+ min-height: 600px; // 大概一屏幕占位,防止切换文档的时候,有黑影!
10
11
 
11
12
  h1 {
12
13
  margin-bottom: 20px;
@@ -83,6 +84,14 @@
83
84
  background-color: rgba(0, 0, 0, 0.03);
84
85
  }
85
86
 
87
+ code {
88
+ padding: 0.2em 0.4em;
89
+ margin: 0;
90
+ font-size: 85%;
91
+ background-color: rgba(175, 184, 193, 0.2);
92
+ border-radius: 6px;
93
+ }
94
+
86
95
  code[class*='language-'] {
87
96
  background: none;
88
97
  }
@@ -196,6 +205,10 @@
196
205
  > p > br {
197
206
  clear: both;
198
207
  }
208
+
209
+ img {
210
+ max-width: 100%;
211
+ }
199
212
  }
200
213
 
201
214
  .layout {
@@ -203,7 +216,7 @@
203
216
  }
204
217
 
205
218
  .main {
206
- width: calc(100% - @toc-width);
219
+ width: 100%;
207
220
  padding-left: 48px;
208
221
  padding-right: 24px;
209
222
  overflow: hidden;
@@ -236,21 +249,39 @@
236
249
 
237
250
  // reference yuque UI
238
251
  .toc {
239
- :global {
240
- .dumi-default-toc {
241
- > li {
242
- > a {
243
- font-size: 12px;
244
-
245
- &.active {
246
- border-left: 1px solid @primary-color !important;
247
- }
248
- }
249
- }
252
+ width: @toc-width;
253
+ float: right;
254
+ font-size: 12px;
255
+ background: #fff;
256
+ max-height: 100vh;
257
+ overflow: scroll;
258
+
259
+ position: sticky;
260
+ top: 0;
261
+
262
+ ul>li {
263
+ list-style: none !important;
264
+ padding: 0 !important;
265
+ margin-left: -1px !important;
266
+
267
+ // 超出部分省略号显示
268
+ text-overflow: ellipsis;
269
+ overflow: hidden;
270
+ white-space: nowrap;
271
+
272
+ a {
273
+ color: @text-color;
250
274
  }
251
275
  }
252
276
  }
253
-
277
+ .contentTitle {
278
+ margin-top: 8px;
279
+ margin-bottom: 20px;
280
+ font-weight: 500;
281
+ font-size: 30px;
282
+ 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;
283
+ line-height: 38px;
284
+ }
254
285
  .sider {
255
286
  width: 280px !important;
256
287
  height: inherit;
@@ -460,16 +491,11 @@
460
491
  padding-left: 32px;
461
492
  padding-right: 32px;
462
493
  }
463
-
464
- .toc {
465
- display: none;
466
- }
467
494
  }
468
-
469
- .sider {
470
- width: 240px !important;
495
+ .tocSiderbar {
496
+ display: none;
471
497
  }
472
-
498
+
473
499
  .gallery {
474
500
  .galleryCard {
475
501
  width: 50%;
@@ -487,11 +513,9 @@
487
513
  }
488
514
 
489
515
  .sider {
490
- width: 100% !important;
491
516
  margin-bottom: 32px;
492
517
  padding-bottom: 32px;
493
518
  border-bottom: 1px solid #e8e8e8;
494
- display: none;
495
519
  }
496
520
 
497
521
  .markdown {
@@ -596,19 +620,13 @@
596
620
  margin-bottom: 20px;
597
621
  font-weight: 500;
598
622
  font-size: 30px;
599
- 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;
600
623
  line-height: 38px;
601
624
  }
602
625
 
603
626
  .content {
604
- display: flex;
605
- justify-content: center;
627
+ width: 100% !important;
606
628
  min-width: 400px;
607
-
608
- .contentMain {
609
- width: 100%;
610
- padding: 0 24px 0 48px;
611
- }
629
+ justify-content: center;
612
630
  }
613
631
 
614
632
  .menuSwitch {
@@ -630,10 +648,11 @@
630
648
  border-radius: 0 4px 4px 0;
631
649
  }
632
650
 
633
-
651
+ .readtimeContainer {
652
+ margin-bottom: 1.2em;
653
+ }
634
654
 
635
655
  .readtime {
636
- margin-bottom: 1.2em;
637
656
  color: #0d1a26;
638
657
  line-height: 1.5715;
639
658
  list-style: none;
@@ -0,0 +1,18 @@
1
+ export declare function getOpenKeys(): any[];
2
+ export declare function getBaseRoute(): string;
3
+ export declare function getIndexRoute(MenuData: any): any;
4
+ /**
5
+ * 返回需要跳转的 pathname
6
+ * /en/api/ ----> /en/api/[first-doc]
7
+ * /zh/api/ ----> /api/[first-doc]
8
+ * /en/docs/api/ ----> /en/api/[first-doc]
9
+ * /zh/docs/api/ ----> /api/[first-doc]
10
+ *
11
+ * /en/docs/api/xxx ----> /en/api/xxx
12
+ * /zh/docs/api/xxx ----> /api/xxx
13
+ *
14
+ * /docs/api/xxx -----> /api/xxx
15
+ *
16
+ * @param p
17
+ */
18
+ export declare function getNavigateUrl(pathname: string, first: string, siderbarMenu: any[]): string;
@@ -0,0 +1,64 @@
1
+ export function getOpenKeys() {
2
+ var pathname = window.location.pathname.replace('/docs/', '/').replace('/zh/', '/');
3
+ var pathArr = pathname.split('/');
4
+ var openKeys = [];
5
+
6
+ for (var i = pathArr.length; i > 0; i--) {
7
+ var tem = pathArr.slice(0, i);
8
+ openKeys.push(tem.join('/'));
9
+ }
10
+
11
+ return openKeys;
12
+ }
13
+ export function getBaseRoute() {
14
+ var matchRoute = window.location.pathname; // 兼容 zh
15
+
16
+ matchRoute = matchRoute.replace('/zh/', '/'); // 兼容带有docs的route
17
+
18
+ matchRoute = matchRoute.replace('/docs', ''); // 查找 baseRoute
19
+
20
+ var reg = window.location.pathname.startsWith('/en') ? /(\/[A-z]*\/?\/[A-z]*)\/?/ : /(\/[A-z]*)\/?/;
21
+ var mainRoute = matchRoute.match(reg);
22
+ return mainRoute[1];
23
+ }
24
+ export function getIndexRoute(MenuData) {
25
+ var defaultOpenKeys = [];
26
+ var topRoute = MenuData[0];
27
+ defaultOpenKeys.push(topRoute.key);
28
+
29
+ while (topRoute.children) {
30
+ topRoute = topRoute.children[0];
31
+ defaultOpenKeys.push(topRoute.key);
32
+ }
33
+
34
+ return defaultOpenKeys[defaultOpenKeys.length - 1];
35
+ }
36
+ /**
37
+ * 返回需要跳转的 pathname
38
+ * /en/api/ ----> /en/api/[first-doc]
39
+ * /zh/api/ ----> /api/[first-doc]
40
+ * /en/docs/api/ ----> /en/api/[first-doc]
41
+ * /zh/docs/api/ ----> /api/[first-doc]
42
+ *
43
+ * /en/docs/api/xxx ----> /en/api/xxx
44
+ * /zh/docs/api/xxx ----> /api/xxx
45
+ *
46
+ * /docs/api/xxx -----> /api/xxx
47
+ *
48
+ * @param p
49
+ */
50
+
51
+ export function getNavigateUrl(pathname, first, siderbarMenu) {
52
+ // 兜底 如果 nav 指定有误则自动重定向到 indexDocRoute
53
+ if (pathname.includes('/docs/') || pathname.includes('/zh/')) {
54
+ return pathname.replace('/docs/', '/').replace('/zh/', '/');
55
+ }
56
+
57
+ if (siderbarMenu.every(function (item) {
58
+ return ![item, "".concat(item, "/")].includes(pathname);
59
+ })) {
60
+ return first;
61
+ }
62
+
63
+ return pathname;
64
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface SEOProps {
3
+ description?: string;
4
+ lang?: string;
5
+ meta?: any[];
6
+ title?: string;
7
+ titleSuffix?: string;
8
+ }
9
+ export declare const SEO: React.FC<SEOProps>;
10
+ export {};