@antv/dumi-theme-antv 0.5.2 → 0.5.4-beta.0

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 (88) hide show
  1. package/dist/common/Link.js +78 -0
  2. package/dist/common/SEO.js +61 -0
  3. package/dist/hooks/useMenu.js +117 -0
  4. package/dist/layouts/DocLayout.js +6 -7
  5. package/dist/layouts/entry/API.js +1 -0
  6. package/dist/layouts/entry/Index.js +9 -22
  7. package/dist/layouts/entry/Manual.js +6 -4
  8. package/dist/locales/en.json +49 -1
  9. package/dist/locales/zh.json +48 -1
  10. package/dist/pages/404.js +1 -2
  11. package/dist/pages/Example/index.js +2 -3
  12. package/dist/pages/Examples/index.js +4 -3
  13. package/dist/slots/ManualContent/Main.js +90 -0
  14. package/dist/slots/ManualContent/Sidebar.js +77 -0
  15. package/dist/slots/ManualContent/index.js +8 -305
  16. package/dist/slots/ManualContent/index.module.less +63 -29
  17. package/dist/slots/ManualContent/utils.js +19 -15
  18. package/dist/slots/utils.js +7 -0
  19. package/dist/utils/menu.js +46 -0
  20. package/package.json +56 -56
  21. package/dist/builtins/Playground/index.d.ts +0 -21
  22. package/dist/context.d.ts +0 -6
  23. package/dist/layouts/DocLayout.d.ts +0 -8
  24. package/dist/layouts/entry/API.d.ts +0 -10
  25. package/dist/layouts/entry/Index.d.ts +0 -7
  26. package/dist/layouts/entry/Manual.d.ts +0 -8
  27. package/dist/model/index.d.ts +0 -5
  28. package/dist/pages/404.d.ts +0 -6
  29. package/dist/pages/Example/components/CollapsedIcon/index.d.ts +0 -8
  30. package/dist/pages/Example/index.d.ts +0 -6
  31. package/dist/pages/Example/utils.d.ts +0 -1
  32. package/dist/pages/Examples/components/Accouncement/index.d.ts +0 -6
  33. package/dist/pages/Examples/components/Article/index.d.ts +0 -2
  34. package/dist/pages/Examples/components/ExampleTopicMenu/components/LeftMenu/index.d.ts +0 -10
  35. package/dist/pages/Examples/components/ExampleTopicMenu/index.d.ts +0 -9
  36. package/dist/pages/Examples/components/GalleryPageContent/DemoCard/index.d.ts +0 -10
  37. package/dist/pages/Examples/components/GalleryPageContent/index.d.ts +0 -10
  38. package/dist/pages/Examples/index.d.ts +0 -8
  39. package/dist/pages/Examples/types.d.ts +0 -34
  40. package/dist/pages/Examples/utils.d.ts +0 -1
  41. package/dist/plugin/api.d.ts +0 -7
  42. package/dist/plugin/examples.d.ts +0 -21
  43. package/dist/plugin/index.d.ts +0 -3
  44. package/dist/plugin/rehypeObservable.d.ts +0 -1
  45. package/dist/slots/404.d.ts +0 -2
  46. package/dist/slots/API/index.d.ts +0 -15
  47. package/dist/slots/Article/index.d.ts +0 -3
  48. package/dist/slots/Banner/Notification.d.ts +0 -10
  49. package/dist/slots/Banner/index.d.ts +0 -26
  50. package/dist/slots/Cases/index.d.ts +0 -19
  51. package/dist/slots/CodeEditor/Toolbar.d.ts +0 -72
  52. package/dist/slots/CodeEditor/index.d.ts +0 -62
  53. package/dist/slots/CodeEditor/utils.d.ts +0 -42
  54. package/dist/slots/CodePreview/CodeHeader.d.ts +0 -19
  55. package/dist/slots/CodePreview/index.d.ts +0 -25
  56. package/dist/slots/CodeRunner/index.d.ts +0 -17
  57. package/dist/slots/CodeRunner/utils.d.ts +0 -11
  58. package/dist/slots/Companies/index.d.ts +0 -13
  59. package/dist/slots/ContentTable/index.d.ts +0 -6
  60. package/dist/slots/Detail/News.d.ts +0 -12
  61. package/dist/slots/Detail/index.d.ts +0 -30
  62. package/dist/slots/ExampleSider/index.d.ts +0 -21
  63. package/dist/slots/Features/FeatureCard.d.ts +0 -9
  64. package/dist/slots/Features/index.d.ts +0 -15
  65. package/dist/slots/Footer/index.d.ts +0 -18
  66. package/dist/slots/Header/Navs.d.ts +0 -27
  67. package/dist/slots/Header/Products/NavigatorBanner.d.ts +0 -10
  68. package/dist/slots/Header/Products/Product.d.ts +0 -14
  69. package/dist/slots/Header/Products/getProducts.d.ts +0 -48
  70. package/dist/slots/Header/Products/index.d.ts +0 -10
  71. package/dist/slots/Header/Search/SearchResult.d.ts +0 -21
  72. package/dist/slots/Header/Search/helper.d.ts +0 -8
  73. package/dist/slots/Header/Search/index.d.ts +0 -2
  74. package/dist/slots/Header/index.d.ts +0 -84
  75. package/dist/slots/Header/utils.d.ts +0 -10
  76. package/dist/slots/Loading/index.d.ts +0 -6
  77. package/dist/slots/ManualContent/NavigatorBanner.d.ts +0 -9
  78. package/dist/slots/ManualContent/Preview.d.ts +0 -7
  79. package/dist/slots/ManualContent/ReadingTime.d.ts +0 -3
  80. package/dist/slots/ManualContent/index.d.ts +0 -9
  81. package/dist/slots/ManualContent/usePreview.d.ts +0 -1
  82. package/dist/slots/ManualContent/utils.d.ts +0 -19
  83. package/dist/slots/SEO.d.ts +0 -10
  84. package/dist/slots/SEO.js +0 -57
  85. package/dist/slots/global.d.ts +0 -1
  86. package/dist/slots/hooks.d.ts +0 -16
  87. package/dist/slots/utils.d.ts +0 -5
  88. package/dist/types.d.ts +0 -86
@@ -0,0 +1,90 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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); }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { VerticalAlignTopOutlined } from '@ant-design/icons';
8
+ import { BackTop, Layout } from 'antd';
9
+ import { useRouteMeta } from 'dumi';
10
+ import React, { useMemo } from 'react';
11
+ import { useMedia } from 'react-use';
12
+ import readingTime from 'reading-time';
13
+ import { useMenu } from "../../hooks/useMenu";
14
+ import { ContentTable } from "dumi/theme/slots/ContentTable";
15
+ import { NavigatorBanner } from "./NavigatorBanner";
16
+ import ReadingTime from "./ReadingTime";
17
+ import styles from "./index.module.less";
18
+ import { usePreview } from "./usePreview";
19
+ export var Main = function Main(_ref) {
20
+ var children = _ref.children;
21
+ var meta = useRouteMeta();
22
+ var text = meta.texts.reduce(function (prev, next) {
23
+ return prev + next.value;
24
+ }, '');
25
+ var _readingTime = readingTime(text),
26
+ time = _readingTime.time;
27
+ var _useMenu = useMenu(),
28
+ _useMenu2 = _slicedToArray(_useMenu, 3),
29
+ selectedKey = _useMenu2[1],
30
+ flattenMenuItems = _useMenu2[2];
31
+ var _useMemo = useMemo(function () {
32
+ if (!flattenMenuItems) {
33
+ return [undefined, undefined];
34
+ }
35
+ var activeMenuItemIndex = -1;
36
+ flattenMenuItems.forEach(function (menuItem, i) {
37
+ if (menuItem && menuItem.key === selectedKey) {
38
+ activeMenuItemIndex = i;
39
+ }
40
+ });
41
+ var prevItem = flattenMenuItems[activeMenuItemIndex - 1];
42
+ var nextItem = flattenMenuItems[activeMenuItemIndex + 1];
43
+ return [prevItem ? {
44
+ slug: prevItem.link,
45
+ title: prevItem.title
46
+ } : undefined, nextItem ? {
47
+ slug: nextItem.link,
48
+ title: nextItem.title
49
+ } : undefined];
50
+ }, [flattenMenuItems, selectedKey]),
51
+ _useMemo2 = _slicedToArray(_useMemo, 2),
52
+ prev = _useMemo2[0],
53
+ next = _useMemo2[1];
54
+ var is991Wide = useMedia('(min-width: 991.99px)', true);
55
+ var showToc = is991Wide && meta.frontmatter.showToc !== false;
56
+ usePreview({}, selectedKey);
57
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Layout.Content, {
58
+ className: styles.content
59
+ }, /*#__PURE__*/React.createElement("div", {
60
+ className: styles.main
61
+ }, /*#__PURE__*/React.createElement("h1", {
62
+ className: styles.contentTitle
63
+ }, meta.frontmatter.title), /*#__PURE__*/React.createElement("div", {
64
+ className: styles.readtimeContainer
65
+ }, /*#__PURE__*/React.createElement(ReadingTime, {
66
+ readingTime: time,
67
+ className: styles.readtime
68
+ })), /*#__PURE__*/React.createElement("div", {
69
+ className: styles.markdown
70
+ }, children), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
71
+ className: styles.preandnext
72
+ }, /*#__PURE__*/React.createElement(NavigatorBanner, {
73
+ type: "prev",
74
+ post: prev
75
+ }), /*#__PURE__*/React.createElement(NavigatorBanner, {
76
+ type: "next",
77
+ post: next
78
+ }), /*#__PURE__*/React.createElement(BackTop, {
79
+ style: {
80
+ right: 32
81
+ }
82
+ }, /*#__PURE__*/React.createElement("div", {
83
+ className: styles.backTop
84
+ }, /*#__PURE__*/React.createElement(VerticalAlignTopOutlined, null))))))), showToc && /*#__PURE__*/React.createElement(Layout.Sider, {
85
+ theme: "light",
86
+ width: 260
87
+ }, /*#__PURE__*/React.createElement("div", {
88
+ className: styles.toc
89
+ }, /*#__PURE__*/React.createElement(ContentTable, null))));
90
+ };
@@ -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 "dumi/theme/slots/ContentTable";
25
- import { SEO } from "dumi/theme/slots/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
  };