@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
@@ -9,7 +9,7 @@ export declare type PlaygroundProps = {
9
9
  */
10
10
  rid?: string;
11
11
  /**
12
- * 预览区、代码区的宽度占比,默认为 0.62
12
+ * 预览区、代码区的宽度占比,默认为 0.38
13
13
  */
14
14
  ratio?: number;
15
15
  /**
@@ -17,8 +17,5 @@ export declare type PlaygroundProps = {
17
17
  */
18
18
  height?: number;
19
19
  };
20
- /**
21
- * Markdown 标签插件 Playground
22
- */
23
- declare const Playground: React.FC<PlaygroundProps>;
24
- export default Playground;
20
+ declare const _default: React.FC<PlaygroundProps>;
21
+ export default _default;
@@ -10,9 +10,12 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
10
10
 
11
11
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
 
13
+ import { useSiteData } from 'dumi';
14
+ import { get } from 'lodash-es';
13
15
  import React, { useContext } from 'react';
16
+ import { ErrorBoundary } from 'react-error-boundary';
14
17
  import { ThemeAntVContext } from "../../context";
15
- import { CodeRunner } from "../../slots/CodeRunner";
18
+ import { CodeRunner } from "dumi/theme/slots/CodeRunner";
16
19
  import styles from "./index.module.less";
17
20
 
18
21
  /**
@@ -21,8 +24,7 @@ import styles from "./index.module.less";
21
24
  var Playground = function Playground(_ref) {
22
25
  var rid = _ref.rid,
23
26
  path = _ref.path,
24
- _ref$ratio = _ref.ratio,
25
- ratio = _ref$ratio === void 0 ? 0.62 : _ref$ratio,
27
+ ratio = _ref.ratio,
26
28
  _ref$height = _ref.height,
27
29
  height = _ref$height === void 0 ? 400 : _ref$height;
28
30
 
@@ -30,26 +32,44 @@ var Playground = function Playground(_ref) {
30
32
  var _useContext = useContext(ThemeAntVContext),
31
33
  meta = _useContext.meta;
32
34
 
33
- var exampleTopics = meta.exampleTopics; // '/case/area/demo/area5.ts'
35
+ var exampleTopics = meta.exampleTopics; // 'case/area/demo/area5.ts'
34
36
 
35
- var _ref2 = path.match(/\/([\w-]+)\/([\w-]+)\/demo\/([\w-]+)/i),
37
+ var _ref2 = path.match(/([\w-]+)\/([\w-]+)\/demo\/([\w-]+)/i),
36
38
  _ref3 = _slicedToArray(_ref2, 4),
37
39
  _ = _ref3[0],
38
40
  topic = _ref3[1],
39
41
  example = _ref3[2],
40
42
  demo = _ref3[3];
41
43
 
44
+ var themeConfig = useSiteData();
45
+ var defaultSize = get(themeConfig, 'editor.playgroundSize', 0.38);
46
+ var size = isNaN(Number(ratio)) ? defaultSize : Number(ratio);
42
47
  return /*#__PURE__*/React.createElement("div", {
43
48
  className: styles.container,
44
49
  style: {
45
50
  height: height
46
51
  }
47
52
  }, /*#__PURE__*/React.createElement(CodeRunner, {
53
+ isPlayground: true,
48
54
  exampleTopics: exampleTopics,
49
55
  topic: topic,
50
56
  example: example,
51
- demo: demo
57
+ demo: demo,
58
+ size: size,
59
+ replaceId: rid
52
60
  }));
53
61
  };
54
62
 
55
- export default Playground;
63
+ function ErrorFallback(_ref4) {
64
+ var error = _ref4.error;
65
+ console.log(error);
66
+ return /*#__PURE__*/React.createElement("div", {
67
+ role: "alert"
68
+ }, /*#__PURE__*/React.createElement("p", null, "Something went wrong:"), /*#__PURE__*/React.createElement("pre", null, error.message));
69
+ }
70
+
71
+ export default (function (props) {
72
+ return /*#__PURE__*/React.createElement(ErrorBoundary, {
73
+ FallbackComponent: ErrorFallback
74
+ }, /*#__PURE__*/React.createElement(Playground, props));
75
+ });
package/dist/context.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
+ import { ExampleTopic } from './types';
2
3
  export declare type IThemeAntVContext = {
3
- exampleTopics?: ExamplesPage.ExampleTopic[];
4
+ exampleTopics?: ExampleTopic[];
4
5
  };
5
6
  export declare const ThemeAntVContext: import("react").Context<IThemeAntVContext>;
@@ -1,7 +1,6 @@
1
- import React from 'react';
2
- import { useOutlet, useLocation } from 'dumi';
1
+ import React, { useEffect } from 'react';
2
+ import { useOutlet, useLocation, useSiteData } from 'dumi';
3
3
  import { Index } from "./entry/Index";
4
- import { API } from "./entry/API";
5
4
  import { Manual } from "./entry/Manual"; // 用户手动添加自己的
6
5
 
7
6
  import "../slots/global";
@@ -11,28 +10,38 @@ import "../slots/_.less";
11
10
  */
12
11
 
13
12
  export default (function () {
13
+ var _useSiteData = useSiteData(),
14
+ themeConfig = _useSiteData.themeConfig;
15
+
16
+ var navs = themeConfig.navs; // 打印控制台文案
17
+
18
+ useEffect(function () {
19
+ console.log("%cAntV 让数据栩栩如生", "color:#5B7102; font-size: 20px;"), console.log("%c新一代数据可视化解决方案", "color:#5B7102;"), console.log("--------------------------"), console.log("%c关注我们的微信公众号 %c“数据可视化 AntV”%c,获取我们团队最新的进展、动态、分享,也欢迎加入我们!", "color: red", "color: pink", "color: red");
20
+ }, []);
14
21
  var outlet = useOutlet();
15
22
 
16
23
  var _useLocation = useLocation(),
17
24
  pathname = _useLocation.pathname;
18
25
 
19
- var p = pathname.toLowerCase(); // @todo 南洋
20
- // 做一些跳转,比如:/zh/examples/xxx -> /examples/xxx
21
- // 首页
22
-
23
- if (p === '/' || p === '/en' || p === '/en/') return /*#__PURE__*/React.createElement(Index, null); // API 页面
26
+ var path = pathname; // 统一去掉中英文前缀
24
27
 
25
- if (p.startsWith('/api') || p.startsWith('/en/api') || // 这两个是兼容之前的
26
- p.startsWith('/zh/docs/api') || p.startsWith('/en/docs/api')) {
27
- return /*#__PURE__*/React.createElement(API, null, " ", outlet, " ");
28
- } // 教程页面
28
+ var p = path.replace('/zh/', '/').replace('/en/', '/'); // 首页
29
29
 
30
+ if (p === '/' || p === '/zh' || p === '/en' || p === '/en/') return /*#__PURE__*/React.createElement(Index, null); // 匹配 navs 中的 docs 路由
30
31
 
31
- if (p.startsWith('/manual') || p.startsWith('/en/manual') || // 这两个是兼容之前的
32
- p.startsWith('/zh/docs/manual/') || p.startsWith('/en/docs/manual/')) {
33
- return /*#__PURE__*/React.createElement(Manual, null, " ", outlet, " ");
34
- } // More router, add here...
32
+ var docsRoutes = navs.filter(function (nav) {
33
+ return nav.slug && nav.slug.startsWith('docs/');
34
+ }).map(function (nav) {
35
+ return nav.slug && nav.slug.split('/').find(function (item) {
36
+ return item !== 'docs';
37
+ });
38
+ });
35
39
 
40
+ if (docsRoutes.some(function (route) {
41
+ return p.startsWith("/".concat(route)) || p.startsWith("/docs/".concat(route));
42
+ })) {
43
+ return /*#__PURE__*/React.createElement(Manual, null, outlet);
44
+ }
36
45
 
37
46
  return outlet;
38
47
  });
@@ -5,14 +5,15 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
7
7
  import React from 'react';
8
- import { useSiteData } from 'dumi';
9
- import { Header } from "../../slots/Header";
10
- import { Detail } from "../../slots/Detail";
11
- import { Features } from "../../slots/Features";
12
- import { Cases } from "../../slots/Cases";
13
- import { Companies } from "../../slots/Companies";
14
- import { Footer } from "../../slots/Footer";
15
- import { useT } from "../../slots/hooks";
8
+ import { useLocale, useSiteData, FormattedMessage } from 'dumi';
9
+ import { SEO } from "dumi/theme/slots/SEO";
10
+ import { Header } from "dumi/theme/slots/Header";
11
+ import { Detail } from 'dumi/theme/slots/Detail';
12
+ import { Features } from "dumi/theme/slots/Features";
13
+ import { Cases } from "dumi/theme/slots/Cases";
14
+ import { Companies } from "dumi/theme/slots/Companies";
15
+ import { Footer } from "dumi/theme/slots/Footer";
16
+ import { size } from 'lodash-es';
16
17
  /**
17
18
  * Index 路由下的入口
18
19
  * - 获取数据
@@ -20,6 +21,8 @@ import { useT } from "../../slots/hooks";
20
21
  */
21
22
 
22
23
  export var Index = function Index() {
24
+ var locale = useLocale();
25
+
23
26
  var _useSiteData = useSiteData(),
24
27
  themeConfig = _useSiteData.themeConfig;
25
28
 
@@ -53,7 +56,6 @@ export var Index = function Index() {
53
56
  }, detail);
54
57
 
55
58
  var featuresProps = {
56
- title: title,
57
59
  features: features,
58
60
  className: className,
59
61
  style: style,
@@ -64,8 +66,15 @@ export var Index = function Index() {
64
66
  style: style,
65
67
  className: className
66
68
  };
67
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Header, null), /*#__PURE__*/React.createElement(Detail, detailProps), /*#__PURE__*/React.createElement(Features, featuresProps), /*#__PURE__*/React.createElement(Cases, casesProps), /*#__PURE__*/React.createElement(Companies, {
68
- title: useT("感谢信赖"),
69
+ var metaTitle = detailProps.title;
70
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SEO, {
71
+ title: "".concat(metaTitle[locale.id]),
72
+ titleSuffix: "AntV",
73
+ lang: locale.id
74
+ }), /*#__PURE__*/React.createElement(Header, null), size(detail) ? /*#__PURE__*/React.createElement(Detail, detailProps) : null, size(features) ? /*#__PURE__*/React.createElement(Features, featuresProps) : null, size(cases) ? /*#__PURE__*/React.createElement(Cases, casesProps) : null, size(companies) ? /*#__PURE__*/React.createElement(Companies, {
75
+ title: /*#__PURE__*/React.createElement(FormattedMessage, {
76
+ id: isAntVSite ? "2000+ 公司正在使用" : "感谢信赖"
77
+ }),
69
78
  companies: companies
70
- }), /*#__PURE__*/React.createElement(Footer, null));
79
+ }) : null, /*#__PURE__*/React.createElement(Footer, null));
71
80
  };
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { ManualContent } from "../../slots/ManualContent";
3
- import { Header } from "../../slots/Header";
4
- import { Footer } from "../../slots/Footer";
2
+ import { ManualContent } from "dumi/theme/slots/ManualContent";
3
+ import { Header } from "dumi/theme/slots/Header";
4
+ import { Footer } from "dumi/theme/slots/Footer";
5
5
 
6
6
  /**
7
7
  * Manual 路由下的入口
@@ -10,5 +10,7 @@ export var Manual = function Manual(_ref) {
10
10
  var children = _ref.children;
11
11
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Header, {
12
12
  isHomePage: false
13
- }), /*#__PURE__*/React.createElement(ManualContent, null, " ", children, " "), /*#__PURE__*/React.createElement(Footer, null));
13
+ }), /*#__PURE__*/React.createElement(ManualContent, null, " ", children, " "), /*#__PURE__*/React.createElement(Footer, {
14
+ isDynamicFooter: true
15
+ }));
14
16
  };
package/dist/pages/404.js CHANGED
@@ -1,13 +1,16 @@
1
1
  import React from 'react';
2
- import { Header } from "../slots/Header";
3
- import { NotFound as NotFoundPage } from "../slots/404";
4
- import { Footer } from "../slots/Footer";
2
+ import { SEO } from "dumi/theme/slots/SEO";
3
+ import { Header } from "dumi/theme/slots/Header";
4
+ import { NotFound as NotFoundPage } from "dumi/theme/slots/404";
5
+ import { Footer } from "dumi/theme/slots/Footer";
5
6
  /**
6
7
  * 404 页面
7
8
  */
8
9
 
9
10
  var NotFound = function NotFound() {
10
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Header, {
11
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SEO, {
12
+ title: "404: Not found"
13
+ }), /*#__PURE__*/React.createElement(Header, {
11
14
  isHomePage: false
12
15
  }), /*#__PURE__*/React.createElement(NotFoundPage, null), /*#__PURE__*/React.createElement(Footer, null));
13
16
  };
@@ -1,9 +1,3 @@
1
- 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; }
2
-
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
-
5
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
1
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
2
 
9
3
  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."); }
@@ -18,14 +12,17 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
12
 
19
13
  import React, { useContext, useEffect, useState } from 'react';
20
14
  import { useParams, useLocation, useNavigate } from 'react-router-dom';
15
+ import { get } from 'lodash-es';
21
16
  import { Layout } from 'antd';
22
- import { useLocale } from 'dumi';
23
- import { Header } from "../../slots/Header";
24
- import { ExampleSider } from "../../slots/ExampleSider";
25
- import { CodeRunner } from "../../slots/CodeRunner";
17
+ import { useLocale, useSiteData } from 'dumi';
18
+ import { SEO } from "dumi/theme/slots/SEO";
19
+ import { Header } from "dumi/theme/slots/Header";
20
+ import { ExampleSider } from "dumi/theme/slots/ExampleSider";
21
+ import { CodeRunner } from "dumi/theme/slots/CodeRunner";
26
22
  import { getDemoInfo } from "../../slots/CodeRunner/utils";
27
23
  import { ThemeAntVContext } from "../../context";
28
24
  import styles from "./index.module.less";
25
+ import { getCurrentTitle } from "./utils";
29
26
  var Sider = Layout.Sider,
30
27
  Content = Layout.Content;
31
28
 
@@ -39,8 +36,6 @@ var Example = function Example() {
39
36
  var nav = useNavigate();
40
37
 
41
38
  var _useParams = useParams(),
42
- _useParams$language = _useParams.language,
43
- language = _useParams$language === void 0 ? 'zh' : _useParams$language,
44
39
  topic = _useParams.topic,
45
40
  example = _useParams.example;
46
41
  /** 示例页面的元数据信息 */
@@ -48,6 +43,10 @@ var Example = function Example() {
48
43
 
49
44
  var metaData = useContext(ThemeAntVContext);
50
45
  var locale = useLocale();
46
+
47
+ var _useSiteData = useSiteData(),
48
+ themeConfig = _useSiteData.themeConfig;
49
+
51
50
  var exampleTopics = metaData.meta.exampleTopics;
52
51
  var demo = hash.slice(1);
53
52
 
@@ -56,54 +55,29 @@ var Example = function Example() {
56
55
  currentDemo = _useState2[0],
57
56
  setCurrentDemo = _useState2[1];
58
57
 
58
+ var _useState3 = useState(false),
59
+ _useState4 = _slicedToArray(_useState3, 2),
60
+ isCollapsed = _useState4[0],
61
+ setIsCollapsed = _useState4[1];
62
+
63
+ var _useState5 = useState({}),
64
+ _useState6 = _slicedToArray(_useState5, 2),
65
+ title = _useState6[0],
66
+ setTitle = _useState6[1];
67
+
59
68
  useEffect(function () {
60
69
  if (topic && example && demo) {
61
70
  var targetDemoInfo = getDemoInfo(exampleTopics, topic, example, demo);
62
71
  setCurrentDemo(targetDemoInfo);
72
+ setTitle(getCurrentTitle(exampleTopics, topic, example));
63
73
  }
64
- }, [topic, example, hash]); // 提取出来获取 唯一value值的 方法
65
-
66
- var getPath = function getPath(item) {
67
- var _item$relativePath;
68
-
69
- if (!item) {// @todo 怀策
70
- // debugger
71
- }
72
-
73
- var demoSlug = (_item$relativePath = item.relativePath) === null || _item$relativePath === void 0 ? void 0 : _item$relativePath.replace(/\/demo\/(.*)\..*/, function (_, filename) {
74
- return "#".concat(filename);
75
- });
76
- return "/".concat(locale.id, "/examples/").concat(demoSlug);
77
- }; // 一级菜单,二级菜单 数据 treeData + 二级菜单,示例 数据 result 写成一个 一级,二级,示例的三层树结构 数据
78
-
79
-
80
- var transformNode = function transformNode(data, result) {
81
- return data.map(function (item) {
82
- var _result$find;
83
-
84
- if (item.children && !item.node) {
85
- return _objectSpread(_objectSpread({}, item), {}, {
86
- children: transformNode(item.children, result)
87
- });
88
- }
89
-
90
- var _item$node = item.node,
91
- frontmatter = _item$node.frontmatter,
92
- fields = _item$node.fields;
93
- return _objectSpread(_objectSpread({}, frontmatter), {}, {
94
- // 提前给二级菜单的key值加入 特殊值 好辨别
95
- value: "secondaryKey-".concat(fields === null || fields === void 0 ? void 0 : fields.slug),
96
- children: (_result$find = result.find(function (_ref) {
97
- var k = _ref.title;
98
- return k === frontmatter.title;
99
- })) === null || _result$find === void 0 ? void 0 : _result$find.children
100
- });
101
- });
102
- };
103
-
74
+ }, [topic, example, hash]);
104
75
  return /*#__PURE__*/React.createElement("div", {
105
76
  className: styles.example
106
- }, /*#__PURE__*/React.createElement(Header, {
77
+ }, /*#__PURE__*/React.createElement(SEO, {
78
+ title: title[locale.id],
79
+ lang: locale.id
80
+ }), /*#__PURE__*/React.createElement(Header, {
107
81
  isHomePage: false
108
82
  }), /*#__PURE__*/React.createElement(Layout, {
109
83
  className: styles.container
@@ -112,7 +86,8 @@ var Example = function Example() {
112
86
  width: 250,
113
87
  trigger: null,
114
88
  collapsible: true,
115
- className: styles.sider,
89
+ collapsed: isCollapsed,
90
+ className: styles.menuSider,
116
91
  theme: "light"
117
92
  }, currentDemo && /*#__PURE__*/React.createElement(ExampleSider, {
118
93
  showExampleDemoTitle: true,
@@ -132,7 +107,8 @@ var Example = function Example() {
132
107
  exampleTopics: exampleTopics,
133
108
  topic: topic,
134
109
  example: example,
135
- demo: demo
110
+ demo: demo,
111
+ size: get(themeConfig, 'editor.size', 0.38)
136
112
  }))));
137
113
  };
138
114
 
@@ -16,14 +16,6 @@
16
16
  flex: 1;
17
17
  background-color: #fff;
18
18
 
19
- .sider {
20
- height: 100%;
21
-
22
- .exampleList {
23
-
24
- }
25
- }
26
-
27
19
  .content {
28
20
  position: relative;
29
21
  height: 100%;
@@ -38,3 +30,53 @@
38
30
  }
39
31
  }
40
32
  }
33
+
34
+ .menuSider {
35
+ background-color: #f8f9fc;
36
+ border-right: 1px solid #ececec;
37
+
38
+ :global {
39
+ .ant-layout-sider-children {
40
+ overflow-y: hidden;
41
+ overflow-x: hidden;
42
+
43
+ &:hover {
44
+ overflow-y: auto;
45
+ }
46
+ }
47
+ }
48
+ }
49
+
50
+ .trigger {
51
+ font-size: 12px;
52
+ position: relative;
53
+ margin: auto;
54
+ color: #6c7f90;
55
+ left: -1px;
56
+ z-index: 4;
57
+ width: 22px;
58
+ cursor: pointer;
59
+ transition: color 0.3s;
60
+ border: 1px solid #ececec;
61
+ border-left: none;
62
+ background-color: #fff;
63
+ height: 66px;
64
+ box-sizing: border-box;
65
+ border-bottom-right-radius: 4px;
66
+ border-top-right-radius: 4px;
67
+ text-align: center;
68
+
69
+ &[type='menu-unfold'] {
70
+ background-color: #f8f9fc;
71
+ }
72
+
73
+ svg {
74
+ position: absolute;
75
+ left: 3px;
76
+ top: 25px;
77
+ }
78
+ }
79
+
80
+ .trigger:hover {
81
+ color: @primary-color;
82
+ }
@@ -0,0 +1 @@
1
+ export declare function getCurrentTitle(exampleTopics: any, topic: any, example: any): any;
@@ -0,0 +1,9 @@
1
+ export function getCurrentTitle(exampleTopics, topic, example) {
2
+ var topicItem = exampleTopics.find(function (item) {
3
+ return item.id === topic;
4
+ });
5
+ var exmapleItem = topicItem.examples.find(function (item) {
6
+ return item.id === example;
7
+ });
8
+ return exmapleItem.title;
9
+ }
@@ -19,6 +19,10 @@ var MenuIcon = createFromIconfontCN({
19
19
  scriptUrl: '//at.alicdn.com/t/font_470089_1lnym745udm.js' // generated by iconfont.cn
20
20
 
21
21
  });
22
+
23
+ function getCategoryId(tid, eid) {
24
+ return [tid, eid].join('-').replace(/\s/g, '');
25
+ }
22
26
  /**
23
27
  * LeftMenu
24
28
  *
@@ -27,6 +31,7 @@ var MenuIcon = createFromIconfontCN({
27
31
  * @author YuZhanglong <loveyzl1123@gmail.com>
28
32
  */
29
33
 
34
+
30
35
  export var LeftMenu = function LeftMenu(props) {
31
36
  var exampleTopics = props.exampleTopics;
32
37
 
@@ -66,7 +71,7 @@ export var LeftMenu = function LeftMenu(props) {
66
71
  return /*#__PURE__*/React.createElement(Menu.Item, {
67
72
  key: example.id
68
73
  }, /*#__PURE__*/React.createElement(Anchor.Link, {
69
- href: "#category-".concat(example.id.replace(/\s/g, '')),
74
+ href: "#".concat(getCategoryId(topic.id, example.id)),
70
75
  title: /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", null, example.title[locale.id]))
71
76
  }));
72
77
  }));
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
2
  import { Link, useLocale } from 'dumi';
3
+ import cx from 'classnames';
3
4
  import { Badge } from 'antd';
5
+ import { ic } from "../../../../../slots/hooks";
4
6
  import styles from "../../../index.module.less";
5
7
  /**
6
8
  * DEMO 的卡片预览
@@ -17,17 +19,20 @@ export var DemoCard = function DemoCard(props) {
17
19
  var locale = useLocale();
18
20
 
19
21
  var renderCardInternal = function renderCardInternal() {
20
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("img", {
21
- src: demo.screenshot || 'https://gw.alipayobjects.com/os/s/prod/antv/assets/image/screenshot-placeholder-b8e70.png',
22
- alt: demo.title[locale.id]
23
- })));
22
+ var img = demo.screenshot || 'https://gw.alipayobjects.com/os/s/prod/antv/assets/image/screenshot-placeholder-b8e70.png';
23
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
24
+ className: cx('demo-card-screenshot', styles.screenshot),
25
+ style: {
26
+ backgroundImage: "url(\"".concat(img, "\")")
27
+ }
28
+ }));
24
29
  };
25
30
 
26
31
  return /*#__PURE__*/React.createElement(Link, {
27
32
  className: styles.galleryCardLink,
28
- to: "/".concat(locale.id, "/examples/").concat(topicId, "/").concat(exampleId, "/#").concat(demo.id)
33
+ to: "".concat(locale.id == 'zh' ? '' : '/en', "/examples/").concat(topicId, "/").concat(exampleId, "/#").concat(demo.id)
29
34
  }, demo.isNew ? /*#__PURE__*/React.createElement(Badge.Ribbon, {
30
35
  text: "new",
31
36
  className: styles.customRibbon
32
- }, renderCardInternal()) : renderCardInternal(), /*#__PURE__*/React.createElement("h4", null, demo.title[locale.id]));
37
+ }, renderCardInternal()) : renderCardInternal(), /*#__PURE__*/React.createElement("h4", null, ic(demo.title)));
33
38
  };
@@ -11,10 +11,13 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
11
11
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
 
13
13
  import React from 'react';
14
- import { useContext } from 'react';
14
+ import { useContext, useEffect } from 'react';
15
+ import { useNavigate } from 'react-router-dom';
15
16
  import { BackTop, Layout as AntLayout } from 'antd';
16
- import { Header } from "../../slots/Header";
17
- import { Footer } from "../../slots/Footer";
17
+ import { useLocale } from 'dumi';
18
+ import { SEO } from "dumi/theme/slots/SEO";
19
+ import { Header } from "dumi/theme/slots/Header";
20
+ import { Footer } from "dumi/theme/slots/Footer";
18
21
  import NavigatorBanner from "../../slots/Header/Products/NavigatorBanner";
19
22
  import { VerticalAlignTopOutlined } from '@ant-design/icons';
20
23
  import { Article } from "./components/Article";
@@ -30,7 +33,10 @@ import styles from "./index.module.less";
30
33
  */
31
34
 
32
35
  var Example = function Example() {
36
+ var nav = useNavigate();
37
+ var locale = useLocale();
33
38
  /** 示例页面的元数据信息 */
39
+
34
40
  var metaData = useContext(ThemeAntVContext);
35
41
  var exampleTopics = metaData.meta.exampleTopics;
36
42
 
@@ -39,7 +45,21 @@ var Example = function Example() {
39
45
  prev = _usePrevAndNext2[0],
40
46
  next = _usePrevAndNext2[1];
41
47
 
42
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Header, {
48
+ var title = {
49
+ zh: '所有图表',
50
+ en: "Gallery"
51
+ }; // 为 zh 做兜底
52
+
53
+ useEffect(function () {
54
+ var p = window.location.pathname;
55
+
56
+ if (p.includes('/zh/')) {
57
+ nav(p.replace('/zh/', '/'));
58
+ }
59
+ }, []);
60
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SEO, {
61
+ title: title[locale.id]
62
+ }), /*#__PURE__*/React.createElement(Header, {
43
63
  isHomePage: false
44
64
  }), /*#__PURE__*/React.createElement(AntLayout, {
45
65
  hasSider: true,
@@ -199,6 +199,11 @@
199
199
 
200
200
  .layout {
201
201
  margin: 24px 0 32px;
202
+ :global {
203
+ .ant-layout-content {
204
+ background-color: #ffffff;
205
+ }
206
+ }
202
207
  }
203
208
 
204
209
  .main {
@@ -206,6 +211,7 @@
206
211
  width: calc(100% - @toc-width);
207
212
  padding-left: 48px;
208
213
  padding-right: 24px;
214
+ padding-bottom: 24px;
209
215
  overflow: hidden;
210
216
 
211
217
  .meta {
@@ -268,6 +274,7 @@
268
274
  .sider {
269
275
  width: 280px !important;
270
276
  height: inherit;
277
+ background-color: #fff;
271
278
 
272
279
  // menu 滚动
273
280
  :global {
@@ -282,6 +289,7 @@
282
289
  }
283
290
 
284
291
  .affix {
292
+ background-color: #fff;
285
293
  & > div {
286
294
  height: 100%;
287
295
  }
@@ -367,6 +375,12 @@
367
375
  transition: all 0.3s;
368
376
  margin: 12px;
369
377
 
378
+ .screenshot {
379
+ background-size: contain;
380
+ background-repeat: no-repeat;
381
+ background-position: center;
382
+ }
383
+
370
384
  > div {
371
385
  border: 1px solid @border-color-split;
372
386
  border-radius: 6px;
@@ -513,6 +527,7 @@
513
527
  margin-top: 30px;
514
528
  padding-left: 24px;
515
529
  padding-right: 24px;
530
+ margin-bottom: 30px;
516
531
  }
517
532
  }
518
533
  }