dumi 2.2.1 → 2.2.2

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 (128) hide show
  1. package/compiled/crates/swc_plugin_react_demo.wasm +0 -0
  2. package/dist/assetParsers/atom.js +15 -5
  3. package/dist/assetParsers/block.js +27 -9
  4. package/dist/cli.js +8 -1
  5. package/dist/client/pages/Demo/index.js +3 -8
  6. package/dist/client/theme-api/AtomRenderer.d.ts +2 -2
  7. package/dist/client/theme-api/AtomRenderer.js +19 -35
  8. package/dist/client/theme-api/DumiDemo.js +8 -13
  9. package/dist/client/theme-api/DumiDemoGrid.js +12 -26
  10. package/dist/client/theme-api/DumiPage.js +16 -34
  11. package/dist/client/theme-api/openCodeSandbox.js +18 -23
  12. package/dist/client/theme-api/openStackBlitz.js +6 -14
  13. package/dist/client/theme-api/types.d.ts +15 -12
  14. package/dist/client/theme-api/useAtomAssets.js +1 -2
  15. package/dist/client/theme-api/useLocale.js +10 -19
  16. package/dist/client/theme-api/useNavData.js +78 -103
  17. package/dist/client/theme-api/usePrefersColor.d.ts +2 -2
  18. package/dist/client/theme-api/usePrefersColor.js +39 -66
  19. package/dist/client/theme-api/useRouteMeta.js +9 -23
  20. package/dist/client/theme-api/useSidebarData.js +124 -158
  21. package/dist/client/theme-api/useSiteSearch/index.d.ts +1 -1
  22. package/dist/client/theme-api/useSiteSearch/index.js +24 -38
  23. package/dist/client/theme-api/useTabMeta.js +8 -19
  24. package/dist/client/theme-api/utils.d.ts +2 -2
  25. package/dist/client/theme-api/utils.js +33 -47
  26. package/dist/client/typings.d.ts +0 -5
  27. package/dist/features/assets.js +23 -4
  28. package/dist/features/autoAlias.js +8 -3
  29. package/dist/features/compile/babelLoaderCustomize.js +0 -2
  30. package/dist/features/compile/index.js +20 -9
  31. package/dist/features/configPlugins/index.js +3 -4
  32. package/dist/features/configPlugins/schema.d.ts +1 -1
  33. package/dist/features/configPlugins/schema.js +20 -3
  34. package/dist/features/derivative.js +54 -11
  35. package/dist/features/exportStatic.js +11 -7
  36. package/dist/features/exports.js +8 -3
  37. package/dist/features/html2sketch.js +7 -5
  38. package/dist/features/locales.js +53 -17
  39. package/dist/features/meta.js +23 -10
  40. package/dist/features/parser.js +17 -5
  41. package/dist/features/routes.js +63 -24
  42. package/dist/features/sideEffects/docSideEffectsWebpackPlugin.js +27 -16
  43. package/dist/features/sideEffects/index.js +13 -4
  44. package/dist/features/sitemap.js +17 -5
  45. package/dist/features/tabs.js +23 -11
  46. package/dist/features/theme/index.js +133 -38
  47. package/dist/features/theme/loader.js +23 -7
  48. package/dist/index.js +10 -2
  49. package/dist/loaders/demo/index.js +3 -3
  50. package/dist/loaders/markdown/index.d.ts +1 -1
  51. package/dist/loaders/markdown/index.js +36 -24
  52. package/dist/loaders/markdown/transformer/index.d.ts +2 -1
  53. package/dist/loaders/markdown/transformer/index.js +34 -17
  54. package/dist/loaders/markdown/transformer/rehypeDemo.d.ts +3 -1
  55. package/dist/loaders/markdown/transformer/rehypeDemo.js +125 -68
  56. package/dist/loaders/markdown/transformer/rehypeDesc.js +8 -3
  57. package/dist/loaders/markdown/transformer/rehypeEnhancedTag.js +8 -3
  58. package/dist/loaders/markdown/transformer/rehypeHighlightLine.js +8 -3
  59. package/dist/loaders/markdown/transformer/rehypeImg.js +8 -3
  60. package/dist/loaders/markdown/transformer/rehypeIsolation.js +36 -21
  61. package/dist/loaders/markdown/transformer/rehypeJsxify.js +8 -3
  62. package/dist/loaders/markdown/transformer/rehypeLink.d.ts +1 -1
  63. package/dist/loaders/markdown/transformer/rehypeLink.js +24 -9
  64. package/dist/loaders/markdown/transformer/rehypeRaw.d.ts +1 -1
  65. package/dist/loaders/markdown/transformer/rehypeRaw.js +20 -6
  66. package/dist/loaders/markdown/transformer/rehypeSlug.js +16 -3
  67. package/dist/loaders/markdown/transformer/rehypeStrip.js +8 -3
  68. package/dist/loaders/markdown/transformer/rehypeText.js +14 -5
  69. package/dist/loaders/markdown/transformer/remarkBreaks.js +16 -5
  70. package/dist/loaders/markdown/transformer/remarkContainer.js +28 -13
  71. package/dist/loaders/markdown/transformer/remarkEmbed.js +43 -21
  72. package/dist/loaders/markdown/transformer/remarkMeta.d.ts +3 -1
  73. package/dist/loaders/markdown/transformer/remarkMeta.js +39 -9
  74. package/dist/loaders/page/index.js +12 -4
  75. package/dist/loaders/pre-raw/index.js +0 -2
  76. package/dist/preset.js +8 -3
  77. package/dist/registerMethods.js +0 -2
  78. package/dist/service/dev.js +8 -1
  79. package/dist/service/printHelp.js +3 -1
  80. package/dist/techStacks/react.js +8 -3
  81. package/dist/types.d.ts +6 -6
  82. package/dist/utils.d.ts +1 -1
  83. package/dist/utils.js +15 -6
  84. package/package.json +11 -9
  85. package/theme-default/builtins/API/index.js +15 -36
  86. package/theme-default/builtins/Badge/index.js +0 -3
  87. package/theme-default/builtins/Container/index.js +6 -15
  88. package/theme-default/builtins/Previewer/index.js +1 -8
  89. package/theme-default/builtins/SourceCode/index.js +15 -27
  90. package/theme-default/builtins/Table/index.js +10 -25
  91. package/theme-default/builtins/Tree/index.js +13 -44
  92. package/theme-default/layouts/DocLayout/index.js +14 -27
  93. package/theme-default/locales/en-US.json +4 -0
  94. package/theme-default/locales/zh-CN.json +4 -0
  95. package/theme-default/slots/ColorSwitch/index.js +7 -22
  96. package/theme-default/slots/Content/index.js +5 -7
  97. package/theme-default/slots/Content/index.less +16 -1
  98. package/theme-default/slots/ContentFooter/index.d.ts +4 -0
  99. package/theme-default/slots/ContentFooter/index.js +93 -0
  100. package/theme-default/slots/ContentFooter/index.less +163 -0
  101. package/theme-default/slots/ContentTabs/index.d.ts +1 -1
  102. package/theme-default/slots/ContentTabs/index.js +5 -5
  103. package/theme-default/slots/Features/index.js +6 -11
  104. package/theme-default/slots/Footer/index.js +1 -4
  105. package/theme-default/slots/Header/index.js +7 -18
  106. package/theme-default/slots/HeaderExtra/index.js +0 -2
  107. package/theme-default/slots/Hero/index.js +2 -6
  108. package/theme-default/slots/HeroTitle/index.js +0 -2
  109. package/theme-default/slots/LangSwitch/index.js +23 -35
  110. package/theme-default/slots/Logo/index.js +1 -4
  111. package/theme-default/slots/Navbar/index.js +14 -29
  112. package/theme-default/slots/NavbarExtra/index.js +0 -2
  113. package/theme-default/slots/NotFound/index.js +0 -2
  114. package/theme-default/slots/PreviewerActions/index.js +13 -35
  115. package/theme-default/slots/PreviewerActionsExtra/index.js +0 -2
  116. package/theme-default/slots/RtlSwitch/index.js +6 -20
  117. package/theme-default/slots/RtlSwitch/index.less +5 -0
  118. package/theme-default/slots/SearchBar/Input.d.ts +1 -1
  119. package/theme-default/slots/SearchBar/Input.js +6 -5
  120. package/theme-default/slots/SearchBar/Mask.d.ts +1 -1
  121. package/theme-default/slots/SearchBar/Mask.js +0 -1
  122. package/theme-default/slots/SearchBar/index.js +20 -41
  123. package/theme-default/slots/SearchResult/index.d.ts +1 -1
  124. package/theme-default/slots/SearchResult/index.js +13 -36
  125. package/theme-default/slots/Sidebar/index.js +1 -4
  126. package/theme-default/slots/SocialIcon/index.d.ts +2 -2
  127. package/theme-default/slots/SocialIcon/index.js +1 -3
  128. package/theme-default/slots/Toc/index.js +12 -28
@@ -1,15 +1,10 @@
1
1
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
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."); }
4
-
5
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); }
6
-
7
- 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; }
8
-
9
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
-
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(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
11
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
-
7
+ import ContentFooter from "../../slots/ContentFooter";
13
8
  import { ReactComponent as IconSidebar } from '@ant-design/icons-svg/inline-svg/outlined/align-left.svg';
14
9
  import animateScrollTo from 'animated-scroll-to';
15
10
  import { Helmet, useIntl, useLocation, useOutlet, useRouteMeta, useSidebarData, useSiteData } from 'dumi';
@@ -22,37 +17,30 @@ import Sidebar from 'dumi/theme/slots/Sidebar';
22
17
  import Toc from 'dumi/theme/slots/Toc';
23
18
  import React, { useEffect, useState } from 'react';
24
19
  import "./index.less";
25
-
26
20
  var DocLayout = function DocLayout() {
27
21
  var intl = useIntl();
28
22
  var outlet = useOutlet();
29
23
  var sidebar = useSidebarData();
30
-
31
24
  var _useLocation = useLocation(),
32
- hash = _useLocation.hash,
33
- pathname = _useLocation.pathname;
34
-
25
+ hash = _useLocation.hash,
26
+ pathname = _useLocation.pathname;
35
27
  var _useSiteData = useSiteData(),
36
- loading = _useSiteData.loading,
37
- hostname = _useSiteData.hostname;
38
-
28
+ loading = _useSiteData.loading,
29
+ hostname = _useSiteData.hostname;
39
30
  var _useState = useState(false),
40
- _useState2 = _slicedToArray(_useState, 2),
41
- activateSidebar = _useState2[0],
42
- updateActivateSidebar = _useState2[1];
43
-
31
+ _useState2 = _slicedToArray(_useState, 2),
32
+ activateSidebar = _useState2[0],
33
+ updateActivateSidebar = _useState2[1];
44
34
  var _useRouteMeta = useRouteMeta(),
45
- fm = _useRouteMeta.frontmatter;
46
-
47
- var showSidebar = fm.sidebar !== false && (sidebar === null || sidebar === void 0 ? void 0 : sidebar.length) > 0; // handle hash change or visit page hash after async chunk loaded
35
+ fm = _useRouteMeta.frontmatter;
36
+ var showSidebar = fm.sidebar !== false && (sidebar === null || sidebar === void 0 ? void 0 : sidebar.length) > 0;
48
37
 
38
+ // handle hash change or visit page hash after async chunk loaded
49
39
  useEffect(function () {
50
40
  var id = hash.replace('#', '');
51
-
52
41
  if (id) {
53
42
  setTimeout(function () {
54
43
  var elm = document.getElementById(decodeURIComponent(id));
55
-
56
44
  if (elm) {
57
45
  // animated-scroll-to instead of native scroll
58
46
  animateScrollTo(elm.offsetTop - 80, {
@@ -104,9 +92,8 @@ var DocLayout = function DocLayout() {
104
92
  }
105
93
  }, /*#__PURE__*/React.createElement(IconSidebar, null), intl.formatMessage({
106
94
  id: 'layout.sidebar.btn'
107
- }))), /*#__PURE__*/React.createElement("main", null, showSidebar && /*#__PURE__*/React.createElement(Sidebar, null), /*#__PURE__*/React.createElement(Content, null, outlet, /*#__PURE__*/React.createElement(Footer, null)), fm.toc === 'content' && /*#__PURE__*/React.createElement("div", {
95
+ }))), /*#__PURE__*/React.createElement("main", null, showSidebar && /*#__PURE__*/React.createElement(Sidebar, null), /*#__PURE__*/React.createElement(Content, null, /*#__PURE__*/React.createElement("article", null, outlet), /*#__PURE__*/React.createElement(ContentFooter, null), /*#__PURE__*/React.createElement(Footer, null)), fm.toc === 'content' && /*#__PURE__*/React.createElement("div", {
108
96
  className: "dumi-default-doc-layout-toc-wrapper"
109
97
  }, /*#__PURE__*/React.createElement("h4", null, "TABLE OF CONTENTS"), /*#__PURE__*/React.createElement(Toc, null))));
110
98
  };
111
-
112
99
  export default DocLayout;
@@ -33,6 +33,10 @@
33
33
  "api.component.loading": "Properties definition is resolving, wait a moment...",
34
34
  "api.component.not.found": "Properties definition not found for {id} component",
35
35
  "content.tabs.default": "Doc",
36
+ "content.footer.last.updated": "Last updated: ",
37
+ "content.footer.actions.edit": "Improve this documentation",
38
+ "content.footer.actions.previous": "PREV",
39
+ "content.footer.actions.next": "NEXT",
36
40
  "search.not.found": "No content was found",
37
41
  "layout.sidebar.btn": "Sidebar"
38
42
  }
@@ -32,6 +32,10 @@
32
32
  "api.component.loading": "属性定义正在解析中,稍等片刻...",
33
33
  "api.component.not.found": "未找到 {id} 组件的属性定义",
34
34
  "content.tabs.default": "文档",
35
+ "content.footer.last.updated": "最后更新时间:",
36
+ "content.footer.actions.edit": "帮助改进此文档",
37
+ "content.footer.actions.previous": "上一篇",
38
+ "content.footer.actions.next": "下一篇",
35
39
  "search.not.found": "未找到相关内容",
36
40
  "layout.sidebar.btn": "侧边菜单"
37
41
  }
@@ -1,19 +1,12 @@
1
1
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
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."); }
4
-
5
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); }
6
-
7
- 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; }
8
-
9
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
-
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(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
11
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
-
13
7
  import { useIntl, usePrefersColor, useSiteData } from 'dumi';
14
8
  import React from 'react';
15
9
  import "./index.less";
16
-
17
10
  var IconDark = function IconDark() {
18
11
  return /*#__PURE__*/React.createElement("svg", {
19
12
  viewBox: "0 0 16 16"
@@ -21,7 +14,6 @@ var IconDark = function IconDark() {
21
14
  d: "M8.218 1.455c3.527.109 6.327 3.018 6.327 6.545 0 3.6-2.945 6.545-6.545 6.545a6.562 6.562 0 0 1-6.036-4h.218c3.6 0 6.545-2.945 6.545-6.545 0-.91-.182-1.745-.509-2.545m0-1.455c-.473 0-.909.218-1.2.618-.29.4-.327.946-.145 1.382.254.655.4 1.31.4 2 0 2.8-2.291 5.09-5.091 5.09h-.218c-.473 0-.91.22-1.2.62-.291.4-.328.945-.146 1.38C1.891 14.074 4.764 16 8 16c4.4 0 8-3.6 8-8a7.972 7.972 0 0 0-7.745-8h-.037Z"
22
15
  }));
23
16
  };
24
-
25
17
  var IconLight = function IconLight() {
26
18
  return /*#__PURE__*/React.createElement("svg", {
27
19
  viewBox: "0 0 16 16"
@@ -29,7 +21,6 @@ var IconLight = function IconLight() {
29
21
  d: "M8 13a1 1 0 0 1 1 1v1a1 1 0 1 1-2 0v-1a1 1 0 0 1 1-1ZM8 3a1 1 0 0 1-1-1V1a1 1 0 1 1 2 0v1a1 1 0 0 1-1 1Zm7 4a1 1 0 1 1 0 2h-1a1 1 0 1 1 0-2h1ZM3 8a1 1 0 0 1-1 1H1a1 1 0 1 1 0-2h1a1 1 0 0 1 1 1Zm9.95 3.536.707.707a1 1 0 0 1-1.414 1.414l-.707-.707a1 1 0 0 1 1.414-1.414Zm-9.9-7.072-.707-.707a1 1 0 0 1 1.414-1.414l.707.707A1 1 0 0 1 3.05 4.464Zm9.9 0a1 1 0 0 1-1.414-1.414l.707-.707a1 1 0 0 1 1.414 1.414l-.707.707Zm-9.9 7.072a1 1 0 0 1 1.414 1.414l-.707.707a1 1 0 0 1-1.414-1.414l.707-.707ZM8 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm0 6.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5Z"
30
22
  }));
31
23
  };
32
-
33
24
  var IconAuto = function IconAuto() {
34
25
  return /*#__PURE__*/React.createElement("svg", {
35
26
  viewBox: "0 0 16 16"
@@ -37,25 +28,20 @@ var IconAuto = function IconAuto() {
37
28
  d: "M14.595 8a6.595 6.595 0 1 1-13.19 0 6.595 6.595 0 0 1 13.19 0ZM8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm0 2.014v11.972A5.986 5.986 0 0 0 8 2.014Z"
38
29
  }));
39
30
  };
40
-
41
31
  var ICON_MAPPING = {
42
32
  light: IconLight,
43
33
  dark: IconDark,
44
34
  auto: IconAuto
45
35
  };
46
-
47
36
  var ColorSwitch = function ColorSwitch() {
48
37
  var _useSiteData = useSiteData(),
49
- defaultColor = _useSiteData.themeConfig.prefersColor.default;
50
-
38
+ defaultColor = _useSiteData.themeConfig.prefersColor.default;
51
39
  var intl = useIntl();
52
-
53
40
  var _usePrefersColor = usePrefersColor(),
54
- _usePrefersColor2 = _slicedToArray(_usePrefersColor, 3),
55
- _usePrefersColor2$ = _usePrefersColor2[1],
56
- prefersColor = _usePrefersColor2$ === void 0 ? defaultColor : _usePrefersColor2$,
57
- setPrefersColor = _usePrefersColor2[2];
58
-
41
+ _usePrefersColor2 = _slicedToArray(_usePrefersColor, 3),
42
+ _usePrefersColor2$ = _usePrefersColor2[1],
43
+ prefersColor = _usePrefersColor2$ === void 0 ? defaultColor : _usePrefersColor2$,
44
+ setPrefersColor = _usePrefersColor2[2];
59
45
  var Icon = ICON_MAPPING[prefersColor];
60
46
  return /*#__PURE__*/React.createElement("span", {
61
47
  className: "dumi-default-color-switch",
@@ -77,5 +63,4 @@ var ColorSwitch = function ColorSwitch() {
77
63
  }));
78
64
  })));
79
65
  };
80
-
81
66
  export default ColorSwitch;
@@ -1,19 +1,17 @@
1
- import { useSidebarData, useSiteData } from 'dumi';
1
+ import { useRouteMeta, useSidebarData, useSiteData } from 'dumi';
2
2
  import React from 'react';
3
3
  import "./heti.scss";
4
4
  import "./index.less";
5
-
6
5
  var Content = function Content(props) {
7
6
  var sidebar = useSidebarData();
8
-
9
7
  var _useSiteData = useSiteData(),
10
- themeConfig = _useSiteData.themeConfig;
11
-
8
+ themeConfig = _useSiteData.themeConfig;
9
+ var _useRouteMeta = useRouteMeta(),
10
+ frontmatter = _useRouteMeta.frontmatter;
12
11
  return /*#__PURE__*/React.createElement("div", {
13
12
  className: "dumi-default-content",
14
- "data-no-sidebar": !sidebar || undefined,
13
+ "data-no-sidebar": !sidebar || frontmatter.sidebar === false || undefined,
15
14
  "data-no-footer": themeConfig.footer === false || undefined
16
15
  }, props.children);
17
16
  };
18
-
19
17
  export default Content;
@@ -139,10 +139,21 @@
139
139
  visibility: hidden;
140
140
  }
141
141
  }
142
+
143
+ // horizontal line
144
+ hr {
145
+ background-color: @c-border-light;
146
+
147
+ @{dark-selector} & {
148
+ background-color: @c-border-less-dark;
149
+ }
150
+ }
142
151
  }
143
152
 
144
153
  .@{prefix}-content {
154
+ display: flex;
145
155
  flex: 1;
156
+ flex-direction: column;
146
157
  min-width: 0;
147
158
  max-width: 100%;
148
159
  box-sizing: border-box;
@@ -175,12 +186,16 @@
175
186
  }
176
187
  }
177
188
 
189
+ article {
190
+ flex: 1;
191
+ }
192
+
178
193
  .@{prefix}-header + main > &,
179
194
  .@{prefix}-doc-layout-mobile-bar + main > & {
180
195
  min-height: calc(100vh - @s-header-height);
181
196
 
182
197
  @media @mobile {
183
- min-height: calc(100vh - @s-header-height-m);
198
+ min-height: calc(100vh - @s-header-height-m - 40px);
184
199
  }
185
200
  }
186
201
 
@@ -0,0 +1,4 @@
1
+ import { type FC } from 'react';
2
+ import './index.less';
3
+ declare const ContentFooter: FC;
4
+ export default ContentFooter;
@@ -0,0 +1,93 @@
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(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { ReactComponent as IconLeft } from '@ant-design/icons-svg/inline-svg/outlined/arrow-left.svg';
8
+ import { ReactComponent as IconClock } from '@ant-design/icons-svg/inline-svg/outlined/clock-circle.svg';
9
+ import { ReactComponent as IconEdit } from '@ant-design/icons-svg/inline-svg/outlined/edit.svg';
10
+ import { FormattedMessage, Link, useIntl, useLocation, useRouteMeta, useSidebarData, useSiteData } from 'dumi';
11
+ import React, { useLayoutEffect, useState } from 'react';
12
+ import "./index.less";
13
+ var ContentFooter = function ContentFooter() {
14
+ var _useLocation = useLocation(),
15
+ pathname = _useLocation.pathname;
16
+ var sidebar = useSidebarData();
17
+ var _useSiteData = useSiteData(),
18
+ themeConfig = _useSiteData.themeConfig;
19
+ var _useRouteMeta = useRouteMeta(),
20
+ frontmatter = _useRouteMeta.frontmatter;
21
+ var intl = useIntl();
22
+ var _useState = useState(undefined),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ prev = _useState2[0],
25
+ setPrev = _useState2[1];
26
+ var _useState3 = useState(undefined),
27
+ _useState4 = _slicedToArray(_useState3, 2),
28
+ next = _useState4[0],
29
+ setNext = _useState4[1];
30
+ var _useState5 = useState(''),
31
+ _useState6 = _slicedToArray(_useState5, 2),
32
+ isoLastUpdated = _useState6[0],
33
+ setIsoLastUpdated = _useState6[1];
34
+ var _useState7 = useState(''),
35
+ _useState8 = _slicedToArray(_useState7, 2),
36
+ lastUpdated = _useState8[0],
37
+ setLastUpdated = _useState8[1];
38
+ var showEditLink = themeConfig.editLink && frontmatter.filename;
39
+ var showLastUpdated = themeConfig.lastUpdated && frontmatter.lastUpdated;
40
+
41
+ // calculate the previous and next page
42
+ useLayoutEffect(function () {
43
+ if (sidebar) {
44
+ var items = sidebar.reduce(function (ret, group) {
45
+ return ret.concat(group.children);
46
+ }, []);
47
+ var current = items.findIndex(function (item) {
48
+ return item.link === pathname;
49
+ });
50
+ setPrev(items[current - 1]);
51
+ setNext(items[current + 1]);
52
+ }
53
+ }, [pathname, sidebar]);
54
+
55
+ // to avoid timestamp mismatched between server and client
56
+ useLayoutEffect(function () {
57
+ if (showLastUpdated) {
58
+ setIsoLastUpdated(new Date(frontmatter.lastUpdated).toISOString());
59
+ setLastUpdated(new Intl.DateTimeFormat(undefined, {
60
+ dateStyle: 'short',
61
+ timeStyle: 'short'
62
+ }).format(frontmatter.lastUpdated));
63
+ }
64
+ }, [showLastUpdated]);
65
+ return /*#__PURE__*/React.createElement("footer", {
66
+ className: "dumi-default-content-footer"
67
+ }, /*#__PURE__*/React.createElement("dl", null, showLastUpdated && /*#__PURE__*/React.createElement("dd", null, /*#__PURE__*/React.createElement(IconClock, null), /*#__PURE__*/React.createElement(FormattedMessage, {
68
+ id: "content.footer.last.updated"
69
+ }), /*#__PURE__*/React.createElement("time", {
70
+ dateTime: isoLastUpdated
71
+ }, lastUpdated)), showEditLink && /*#__PURE__*/React.createElement("dd", null, /*#__PURE__*/React.createElement("a", {
72
+ target: "_blank",
73
+ href: "".concat(intl.formatMessage({
74
+ id: '$internal.edit.link'
75
+ }, {
76
+ filename: frontmatter.filename
77
+ })),
78
+ rel: "noreferrer"
79
+ }, /*#__PURE__*/React.createElement(IconEdit, null), /*#__PURE__*/React.createElement(FormattedMessage, {
80
+ id: "content.footer.actions.edit"
81
+ })))), /*#__PURE__*/React.createElement("nav", null, prev && /*#__PURE__*/React.createElement(Link, {
82
+ to: prev.link,
83
+ "data-prev": true
84
+ }, /*#__PURE__*/React.createElement("small", null, /*#__PURE__*/React.createElement(IconLeft, null), /*#__PURE__*/React.createElement(FormattedMessage, {
85
+ id: "content.footer.actions.previous"
86
+ })), prev.title), next && /*#__PURE__*/React.createElement(Link, {
87
+ to: next.link,
88
+ "data-next": true
89
+ }, /*#__PURE__*/React.createElement("small", null, /*#__PURE__*/React.createElement(FormattedMessage, {
90
+ id: "content.footer.actions.next"
91
+ }), /*#__PURE__*/React.createElement(IconLeft, null)), next.title)));
92
+ };
93
+ export default ContentFooter;
@@ -0,0 +1,163 @@
1
+ @import (reference) '../../styles/variables.less';
2
+
3
+ .@{prefix}-content-footer {
4
+ margin-top: 48px;
5
+ color: @c-text-note;
6
+ font-size: 14px;
7
+ line-height: 1;
8
+
9
+ @{dark-selector} & {
10
+ color: @c-text-note-dark;
11
+ }
12
+
13
+ svg {
14
+ fill: @c-text-note;
15
+ width: 14px;
16
+ vertical-align: -0.13em;
17
+ transition: fill 0.2s;
18
+
19
+ @{dark-selector} & {
20
+ fill: @c-text-note-dark;
21
+ }
22
+ }
23
+
24
+ > dl {
25
+ display: flex;
26
+ justify-content: space-between;
27
+ margin: 0;
28
+ padding-bottom: 12px;
29
+
30
+ &:empty {
31
+ display: none;
32
+ }
33
+
34
+ dd {
35
+ margin: 0;
36
+
37
+ svg {
38
+ margin-inline-end: 4px;
39
+ }
40
+
41
+ > a {
42
+ color: @c-primary;
43
+
44
+ @{dark-selector} & {
45
+ color: @c-primary-dark;
46
+ }
47
+
48
+ &:not(:hover) {
49
+ text-decoration: none;
50
+ }
51
+
52
+ > svg {
53
+ fill: @c-primary;
54
+
55
+ @{dark-selector} & {
56
+ fill: @c-primary-dark;
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ > nav {
64
+ padding: 12px 0;
65
+ border-block-start: 1px solid @c-border-light;
66
+ overflow: hidden;
67
+
68
+ &:empty {
69
+ display: none;
70
+ }
71
+
72
+ @{dark-selector} & {
73
+ border-block-start-color: @c-border-less-dark;
74
+ }
75
+
76
+ > a {
77
+ max-width: 180px;
78
+ min-width: 120px;
79
+ color: @c-primary;
80
+ font-size: 16px;
81
+ text-decoration: none;
82
+ border-radius: 2px;
83
+ overflow: hidden;
84
+ white-space: nowrap;
85
+ text-overflow: ellipsis;
86
+
87
+ @media @tablet {
88
+ min-width: initial;
89
+ max-width: 80px;
90
+ }
91
+
92
+ @{dark-selector} & {
93
+ color: @c-primary-dark;
94
+ }
95
+
96
+ &[data-prev] {
97
+ float: inline-start;
98
+ padding-inline-end: 24px;
99
+
100
+ svg {
101
+ margin-inline-end: 4px;
102
+
103
+ [data-direction='rtl'] & {
104
+ transform: rotate(180deg);
105
+ }
106
+ }
107
+ }
108
+
109
+ &[data-next] {
110
+ float: inline-end;
111
+ text-align: end;
112
+ padding-inline-start: 24px;
113
+
114
+ svg {
115
+ margin-inline-start: 4px;
116
+ transform: rotate(180deg);
117
+
118
+ [data-direction='rtl'] & {
119
+ transform: rotate(0);
120
+ }
121
+ }
122
+ }
123
+
124
+ small {
125
+ display: block;
126
+ margin-bottom: 5px;
127
+ color: @c-text-note;
128
+ font-size: 14px;
129
+ transition: color 0.2s;
130
+
131
+ @{dark-selector} & {
132
+ color: @c-text-note-dark;
133
+ }
134
+ }
135
+
136
+ &:hover {
137
+ small {
138
+ color: @c-text-secondary;
139
+
140
+ @{dark-selector} & {
141
+ color: @c-text-secondary-dark;
142
+ }
143
+ }
144
+
145
+ svg {
146
+ fill: @c-text-secondary;
147
+
148
+ @{dark-selector} & {
149
+ fill: @c-text-secondary-dark;
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+
156
+ [data-no-sidebar] > & {
157
+ display: none;
158
+ }
159
+
160
+ :not([data-no-sidebar]) > & + .@{prefix}-footer {
161
+ margin-top: 0;
162
+ }
163
+ }
@@ -1,7 +1,7 @@
1
1
  import { useRouteMeta } from 'dumi';
2
2
  import { type FC } from 'react';
3
3
  import './index.less';
4
- declare type IContentTabs = ReturnType<typeof useRouteMeta>['tabs'];
4
+ type IContentTabs = ReturnType<typeof useRouteMeta>['tabs'];
5
5
  export interface IContentTabsProps {
6
6
  tabs: IContentTabs;
7
7
  tabKey: string | null;
@@ -1,12 +1,13 @@
1
1
  import { useIntl } from 'dumi';
2
2
  import React from 'react';
3
3
  import "./index.less";
4
-
5
4
  var ContentTabs = function ContentTabs(_ref) {
6
5
  var tabs = _ref.tabs,
7
- key = _ref.tabKey,
8
- onChange = _ref.onChange;
9
- var intl = useIntl(); // TODO: tab.Extra & tab.Action render
6
+ key = _ref.tabKey,
7
+ onChange = _ref.onChange;
8
+ var intl = useIntl();
9
+
10
+ // TODO: tab.Extra & tab.Action render
10
11
 
11
12
  return Boolean(tabs === null || tabs === void 0 ? void 0 : tabs.length) ? /*#__PURE__*/React.createElement("ul", {
12
13
  className: "dumi-default-content-tabs"
@@ -33,5 +34,4 @@ var ContentTabs = function ContentTabs(_ref) {
33
34
  }) : tab.meta.frontmatter.title));
34
35
  })) : null;
35
36
  };
36
-
37
37
  export default ContentTabs;
@@ -1,26 +1,23 @@
1
1
  import { Link, useRouteMeta } from 'dumi';
2
2
  import React from 'react';
3
3
  import "./index.less";
4
-
5
4
  var Features = function Features() {
6
5
  var _frontmatter$features;
7
-
8
6
  var _useRouteMeta = useRouteMeta(),
9
- frontmatter = _useRouteMeta.frontmatter;
10
-
7
+ frontmatter = _useRouteMeta.frontmatter;
11
8
  return Boolean((_frontmatter$features = frontmatter.features) === null || _frontmatter$features === void 0 ? void 0 : _frontmatter$features.length) ? /*#__PURE__*/React.createElement("div", {
12
- className: "dumi-default-features" // auto render 2 or 3 cols by feature count
9
+ className: "dumi-default-features"
10
+ // auto render 2 or 3 cols by feature count
13
11
  ,
14
12
  "data-cols": [3, 2].find(function (n) {
15
13
  return frontmatter.features.length % n === 0;
16
14
  }) || 3
17
15
  }, frontmatter.features.map(function (_ref) {
18
16
  var title = _ref.title,
19
- description = _ref.description,
20
- emoji = _ref.emoji,
21
- link = _ref.link;
17
+ description = _ref.description,
18
+ emoji = _ref.emoji,
19
+ link = _ref.link;
22
20
  var titleWithLink;
23
-
24
21
  if (link) {
25
22
  titleWithLink = /^(\w+:)\/\/|^(mailto|tel):/.test(link) ? /*#__PURE__*/React.createElement("a", {
26
23
  href: link,
@@ -30,7 +27,6 @@ var Features = function Features() {
30
27
  to: link
31
28
  }, title);
32
29
  }
33
-
34
30
  return /*#__PURE__*/React.createElement("div", {
35
31
  key: title,
36
32
  className: "dumi-default-features-item"
@@ -41,5 +37,4 @@ var Features = function Features() {
41
37
  }));
42
38
  })) : null;
43
39
  };
44
-
45
40
  export default Features;
@@ -1,11 +1,9 @@
1
1
  import { useSiteData } from 'dumi';
2
2
  import React from 'react';
3
3
  import "./index.less";
4
-
5
4
  var Footer = function Footer() {
6
5
  var _useSiteData = useSiteData(),
7
- themeConfig = _useSiteData.themeConfig;
8
-
6
+ themeConfig = _useSiteData.themeConfig;
9
7
  if (!themeConfig.footer) return null;
10
8
  return /*#__PURE__*/React.createElement("div", {
11
9
  className: "dumi-default-footer",
@@ -14,5 +12,4 @@ var Footer = function Footer() {
14
12
  }
15
13
  });
16
14
  };
17
-
18
15
  export default Footer;
@@ -1,15 +1,9 @@
1
1
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
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."); }
4
-
5
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); }
6
-
7
- 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; }
8
-
9
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
-
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(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
11
6
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
-
13
7
  import { ReactComponent as IconClose } from '@ant-design/icons-svg/inline-svg/outlined/close.svg';
14
8
  import { ReactComponent as IconMenu } from '@ant-design/icons-svg/inline-svg/outlined/menu.svg';
15
9
  import { useRouteMeta, useSiteData } from 'dumi';
@@ -23,19 +17,15 @@ import SearchBar from 'dumi/theme/slots/SearchBar';
23
17
  import SocialIcon from 'dumi/theme/slots/SocialIcon';
24
18
  import React, { useMemo, useState } from 'react';
25
19
  import "./index.less";
26
-
27
20
  var Header = function Header() {
28
21
  var _useRouteMeta = useRouteMeta(),
29
- frontmatter = _useRouteMeta.frontmatter;
30
-
22
+ frontmatter = _useRouteMeta.frontmatter;
31
23
  var _useState = useState(false),
32
- _useState2 = _slicedToArray(_useState, 2),
33
- showMenu = _useState2[0],
34
- setShowMenu = _useState2[1];
35
-
24
+ _useState2 = _slicedToArray(_useState, 2),
25
+ showMenu = _useState2[0],
26
+ setShowMenu = _useState2[1];
36
27
  var _useSiteData = useSiteData(),
37
- themeConfig = _useSiteData.themeConfig;
38
-
28
+ themeConfig = _useSiteData.themeConfig;
39
29
  var socialIcons = useMemo(function () {
40
30
  return themeConfig.socialLinks ? Object.keys(themeConfig.socialLinks).slice(0, 5).map(function (key) {
41
31
  return {
@@ -76,5 +66,4 @@ var Header = function Header() {
76
66
  }
77
67
  }, showMenu ? /*#__PURE__*/React.createElement(IconClose, null) : /*#__PURE__*/React.createElement(IconMenu, null))));
78
68
  };
79
-
80
69
  export default Header;