dumi 2.0.0-alpha.3 → 2.0.0-alpha.4
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.
- package/dist/client/pages/404.d.ts +1 -0
- package/dist/client/pages/404.js +2 -0
- package/dist/client/pages/Demo.d.ts +3 -0
- package/dist/client/pages/Demo.js +17 -0
- package/dist/client/theme-api/DumiDemo.js +8 -5
- package/dist/client/theme-api/DumiDemoGrid.d.ts +1 -1
- package/dist/client/theme-api/DumiDemoGrid.js +9 -8
- package/dist/client/theme-api/context.d.ts +4 -2
- package/dist/client/theme-api/context.js +6 -3
- package/dist/client/theme-api/index.d.ts +8 -7
- package/dist/client/theme-api/index.js +7 -7
- package/dist/client/theme-api/types.d.ts +45 -14
- package/dist/client/theme-api/useLocale.d.ts +1 -0
- package/dist/client/theme-api/useLocale.js +31 -0
- package/dist/client/theme-api/useNavData.d.ts +1 -1
- package/dist/client/theme-api/useNavData.js +11 -11
- package/dist/client/theme-api/useRouteMeta.js +4 -1
- package/dist/client/theme-api/useSidebarData.js +11 -12
- package/dist/client/theme-api/utils.d.ts +0 -1
- package/dist/client/theme-api/utils.js +7 -25
- package/dist/client/tsconfig.json +2 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +3 -0
- package/dist/features/compile.js +1 -1
- package/dist/features/configPlugins/schema.js +1 -4
- package/dist/features/exports.d.ts +3 -0
- package/dist/features/exports.js +45 -0
- package/dist/features/locales.js +2 -2
- package/dist/features/meta.js +2 -2
- package/dist/features/routes.js +28 -1
- package/dist/features/theme/index.js +6 -6
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/loaders/markdown/index.js +4 -2
- package/dist/loaders/markdown/transformer/index.d.ts +5 -2
- package/dist/loaders/markdown/transformer/index.js +4 -2
- package/dist/loaders/markdown/transformer/rehypeDemo.d.ts +3 -0
- package/dist/loaders/markdown/transformer/rehypeDemo.js +14 -6
- package/dist/loaders/markdown/transformer/rehypeEmbed.d.ts +9 -1
- package/dist/loaders/markdown/transformer/rehypeEmbed.js +16 -4
- package/dist/loaders/markdown/transformer/rehypeRaw.js +2 -2
- package/dist/loaders/markdown/transformer/rehypeSlug.d.ts +4 -0
- package/dist/loaders/markdown/transformer/rehypeSlug.js +105 -0
- package/dist/loaders/markdown/transformer/remarkMeta.d.ts +4 -2
- package/dist/loaders/markdown/transformer/remarkMeta.js +24 -3
- package/dist/preset.js +1 -0
- package/dist/types.d.ts +2 -1
- package/package.json +14 -1
- package/theme-default/builtins/{Previewer.d.ts → Previewer/index.d.ts} +2 -1
- package/theme-default/builtins/Previewer/index.js +162 -0
- package/theme-default/builtins/Previewer/index.less +297 -0
- package/theme-default/builtins/SourceCode/index.d.ts +9 -0
- package/theme-default/builtins/SourceCode/index.js +87 -0
- package/theme-default/builtins/SourceCode/index.less +50 -0
- package/theme-default/layouts/DocLayout/index.d.ts +1 -0
- package/theme-default/layouts/DocLayout/index.js +20 -19
- package/theme-default/layouts/DocLayout/index.less +17 -0
- package/theme-default/locales/en-US.json +9 -1
- package/theme-default/locales/zh-CN.json +9 -1
- package/theme-default/slots/Content/heti.scss +3 -0
- package/theme-default/slots/Content/index.d.ts +2 -0
- package/theme-default/slots/Content/index.js +6 -5
- package/theme-default/slots/Content/index.less +31 -0
- package/theme-default/slots/Header/index.d.ts +1 -0
- package/theme-default/slots/Header/index.js +10 -7
- package/theme-default/slots/Header/index.less +22 -0
- package/theme-default/slots/LangSwitch/index.d.ts +4 -0
- package/theme-default/slots/LangSwitch/index.js +81 -0
- package/theme-default/slots/LangSwitch/index.less +13 -0
- package/theme-default/slots/Logo/index.d.ts +1 -0
- package/theme-default/slots/Logo/index.js +13 -1
- package/theme-default/slots/Logo/index.less +16 -0
- package/theme-default/slots/Navbar/index.d.ts +1 -0
- package/theme-default/slots/Navbar/index.js +20 -1
- package/theme-default/slots/Navbar/index.less +33 -0
- package/theme-default/slots/NotFound/index.d.ts +4 -0
- package/theme-default/slots/NotFound/index.js +20 -0
- package/theme-default/slots/NotFound/index.less +26 -0
- package/theme-default/slots/SearchBar/index.d.ts +1 -0
- package/theme-default/slots/SearchBar/index.js +32 -4
- package/theme-default/slots/SearchBar/index.less +61 -0
- package/theme-default/slots/Sidebar/index.d.ts +1 -0
- package/theme-default/slots/Sidebar/index.js +23 -8
- package/theme-default/slots/Sidebar/index.less +57 -0
- package/theme-default/slots/Toc/index.d.ts +4 -0
- package/theme-default/slots/Toc/index.js +30 -0
- package/theme-default/slots/Toc/index.less +31 -0
- package/theme-default/styles/utils.less +46 -0
- package/theme-default/styles/variables.less +13 -0
- package/theme-default/builtins/Previewer.js +0 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from 'dumi/theme/slots/NotFound';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useParams, useSiteData } from 'dumi';
|
|
2
|
+
import { createElement } from 'react';
|
|
3
|
+
|
|
4
|
+
var DemoRenderPage = function DemoRenderPage() {
|
|
5
|
+
var _useParams = useParams(),
|
|
6
|
+
id = _useParams.id;
|
|
7
|
+
|
|
8
|
+
var _useSiteData = useSiteData(),
|
|
9
|
+
demos = _useSiteData.demos;
|
|
10
|
+
|
|
11
|
+
var _ref = demos[id] || {},
|
|
12
|
+
component = _ref.component;
|
|
13
|
+
|
|
14
|
+
return component && /*#__PURE__*/createElement(component);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default DemoRenderPage;
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
|
|
3
|
+
import { SP_ROUTE_PREFIX } from "../../constants";
|
|
4
|
+
import { useSiteData } from 'dumi';
|
|
3
5
|
import Previewer from 'dumi/theme/builtins/Previewer';
|
|
4
|
-
import React, { createElement
|
|
5
|
-
import { Context } from "./context";
|
|
6
|
+
import React, { createElement } from 'react';
|
|
6
7
|
export var DumiDemo = function DumiDemo(props) {
|
|
7
|
-
var
|
|
8
|
-
demos =
|
|
8
|
+
var _useSiteData = useSiteData(),
|
|
9
|
+
demos = _useSiteData.demos;
|
|
9
10
|
|
|
10
11
|
var _demos$props$demo$id = demos[props.demo.id],
|
|
11
12
|
component = _demos$props$demo$id.component,
|
|
12
13
|
asset = _demos$props$demo$id.asset;
|
|
13
14
|
return /*#__PURE__*/React.createElement(Previewer, _extends({
|
|
14
|
-
asset: asset
|
|
15
|
+
asset: asset,
|
|
16
|
+
demoUrl: // allow user override demoUrl by frontmatter
|
|
17
|
+
props.previewerProps.demoUrl || "".concat(SP_ROUTE_PREFIX, "demos/").concat(props.demo.id)
|
|
15
18
|
}, props.previewerProps), /*#__PURE__*/createElement(component));
|
|
16
19
|
};
|
|
@@ -12,20 +12,20 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
12
12
|
|
|
13
13
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
14
|
|
|
15
|
-
import { useRouteMeta } from 'dumi
|
|
15
|
+
import { DumiDemo, useRouteMeta } from 'dumi';
|
|
16
16
|
import React, { useState } from 'react';
|
|
17
|
-
import { DumiDemo } from "./DumiDemo";
|
|
18
17
|
export var DumiDemoGrid = function DumiDemoGrid(props) {
|
|
19
|
-
var
|
|
18
|
+
var _useRouteMeta = useRouteMeta(),
|
|
19
|
+
fm = _useRouteMeta.frontmatter;
|
|
20
20
|
|
|
21
21
|
var _useState = useState(function () {
|
|
22
|
-
var
|
|
22
|
+
var _fm$demo;
|
|
23
23
|
|
|
24
24
|
var cols = [];
|
|
25
25
|
|
|
26
|
-
if ((
|
|
27
|
-
for (var i = 0; i < props.items.length; i +=
|
|
28
|
-
props.items.slice(i, i +
|
|
26
|
+
if ((_fm$demo = fm.demo) !== null && _fm$demo !== void 0 && _fm$demo.cols && fm.demo.cols > 1) {
|
|
27
|
+
for (var i = 0; i < props.items.length; i += fm.demo.cols) {
|
|
28
|
+
props.items.slice(i, i + fm.demo.cols).forEach(function (item, j) {
|
|
29
29
|
var _cols$j;
|
|
30
30
|
|
|
31
31
|
(_cols$j = cols[j]) !== null && _cols$j !== void 0 ? _cols$j : cols[j] = [];
|
|
@@ -47,7 +47,8 @@ export var DumiDemoGrid = function DumiDemoGrid(props) {
|
|
|
47
47
|
style: {
|
|
48
48
|
display: 'flex',
|
|
49
49
|
margin: -8
|
|
50
|
-
}
|
|
50
|
+
},
|
|
51
|
+
"data-dumi-demo-grid": true
|
|
51
52
|
}, cols.map(function (col, i) {
|
|
52
53
|
return /*#__PURE__*/React.createElement("section", {
|
|
53
54
|
style: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ComponentType } from 'react';
|
|
2
2
|
import type { ILocalesConfig, IPreviewerProps, IThemeConfig } from './types';
|
|
3
|
-
|
|
3
|
+
interface ISiteContext {
|
|
4
4
|
demos: Record<string, {
|
|
5
5
|
component: ComponentType;
|
|
6
6
|
asset: IPreviewerProps['asset'];
|
|
@@ -8,4 +8,6 @@ export interface IThemeContext {
|
|
|
8
8
|
locales: NonNullable<ILocalesConfig>;
|
|
9
9
|
themeConfig: IThemeConfig;
|
|
10
10
|
}
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const SiteContext: import("react").Context<ISiteContext>;
|
|
12
|
+
export declare const useSiteData: () => ISiteContext;
|
|
13
|
+
export {};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { createContext } from 'react';
|
|
2
|
-
export var
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
export var SiteContext = /*#__PURE__*/createContext({
|
|
3
3
|
demos: {},
|
|
4
4
|
locales: [],
|
|
5
5
|
themeConfig: {}
|
|
6
|
-
});
|
|
6
|
+
});
|
|
7
|
+
export var useSiteData = function useSiteData() {
|
|
8
|
+
return useContext(SiteContext);
|
|
9
|
+
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { useIntl } from 'react-intl';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
2
|
+
export { useSiteData } from './context';
|
|
3
|
+
export { DumiDemo } from './DumiDemo';
|
|
4
|
+
export { DumiDemoGrid } from './DumiDemoGrid';
|
|
5
|
+
export type { IPreviewerProps } from './types';
|
|
6
|
+
export { useLocale } from './useLocale';
|
|
7
|
+
export { useNavData } from './useNavData';
|
|
8
|
+
export { useRouteMeta } from './useRouteMeta';
|
|
9
|
+
export { useFullSidebarData, useSidebarData } from './useSidebarData';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { useIntl } from 'react-intl';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
2
|
+
export { useSiteData } from "./context";
|
|
3
|
+
export { DumiDemo } from "./DumiDemo";
|
|
4
|
+
export { DumiDemoGrid } from "./DumiDemoGrid";
|
|
5
|
+
export { useLocale } from "./useLocale";
|
|
6
|
+
export { useNavData } from "./useNavData";
|
|
7
|
+
export { useRouteMeta } from "./useRouteMeta";
|
|
8
|
+
export { useFullSidebarData, useSidebarData } from "./useSidebarData";
|
|
@@ -13,6 +13,26 @@ export interface IPreviewerProps {
|
|
|
13
13
|
* file path of current demo
|
|
14
14
|
*/
|
|
15
15
|
filePath?: string;
|
|
16
|
+
/**
|
|
17
|
+
* use iframe to render demo
|
|
18
|
+
*/
|
|
19
|
+
iframe?: boolean | number;
|
|
20
|
+
/**
|
|
21
|
+
* debug mark (will only render in dev by default)
|
|
22
|
+
*/
|
|
23
|
+
debug?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* disable demo content padding
|
|
26
|
+
*/
|
|
27
|
+
compact?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* add transform property for handle absolute/fixed position element
|
|
30
|
+
*/
|
|
31
|
+
transform?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* background color for demo content
|
|
34
|
+
*/
|
|
35
|
+
background?: string;
|
|
16
36
|
/**
|
|
17
37
|
* asset metadata of current demo
|
|
18
38
|
*/
|
|
@@ -24,22 +44,30 @@ export interface IPreviewerProps {
|
|
|
24
44
|
[key: string]: any;
|
|
25
45
|
}
|
|
26
46
|
export interface IRouteMeta {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
47
|
+
frontmatter: {
|
|
48
|
+
title: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
keywords?: string[];
|
|
51
|
+
nav?: string | {
|
|
52
|
+
title?: string;
|
|
53
|
+
order?: number;
|
|
54
|
+
};
|
|
55
|
+
group?: string | {
|
|
56
|
+
title?: string;
|
|
57
|
+
order?: number;
|
|
58
|
+
};
|
|
32
59
|
order?: number;
|
|
60
|
+
toc?: boolean | 'content' | 'menu';
|
|
61
|
+
demo?: {
|
|
62
|
+
cols?: number;
|
|
63
|
+
tocDepth?: number;
|
|
64
|
+
};
|
|
33
65
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
toc?: boolean | 'content' | 'menu';
|
|
40
|
-
demo?: {
|
|
41
|
-
cols?: number;
|
|
42
|
-
};
|
|
66
|
+
toc: {
|
|
67
|
+
id: string;
|
|
68
|
+
depth: number;
|
|
69
|
+
title: string;
|
|
70
|
+
}[];
|
|
43
71
|
[key: string]: any;
|
|
44
72
|
}
|
|
45
73
|
declare type IBasicLocale = {
|
|
@@ -54,6 +82,7 @@ export declare type ILocalesConfig = ((IBasicLocale & {
|
|
|
54
82
|
export interface INavItem {
|
|
55
83
|
title: string;
|
|
56
84
|
link: string;
|
|
85
|
+
activePath?: string;
|
|
57
86
|
[key: string]: any;
|
|
58
87
|
}
|
|
59
88
|
interface ISidebarItem {
|
|
@@ -67,6 +96,8 @@ export interface ISidebarGroup {
|
|
|
67
96
|
[key: string]: any;
|
|
68
97
|
}
|
|
69
98
|
export interface IThemeConfig {
|
|
99
|
+
name?: string;
|
|
100
|
+
logo?: string;
|
|
70
101
|
nav?: (INavItem & {
|
|
71
102
|
children?: INavItem[];
|
|
72
103
|
})[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useLocale: () => any;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
|
|
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."); }
|
|
4
|
+
|
|
5
|
+
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
|
+
|
|
11
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
|
+
|
|
13
|
+
import { useIntl, useSiteData } from 'dumi';
|
|
14
|
+
import { useState } from 'react';
|
|
15
|
+
export var useLocale = function useLocale() {
|
|
16
|
+
var intl = useIntl();
|
|
17
|
+
|
|
18
|
+
var _useSiteData = useSiteData(),
|
|
19
|
+
locales = _useSiteData.locales;
|
|
20
|
+
|
|
21
|
+
var _useState = useState(function () {
|
|
22
|
+
return locales.find(function (_ref) {
|
|
23
|
+
var id = _ref.id;
|
|
24
|
+
return id === intl.locale;
|
|
25
|
+
});
|
|
26
|
+
}),
|
|
27
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
28
|
+
locale = _useState2[0];
|
|
29
|
+
|
|
30
|
+
return locale;
|
|
31
|
+
};
|
|
@@ -12,9 +12,8 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
12
12
|
|
|
13
13
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
14
|
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { useFullSidebarData } from "./useSidebarData";
|
|
15
|
+
import { useFullSidebarData, useSiteData } from 'dumi';
|
|
16
|
+
import { useState } from 'react';
|
|
18
17
|
import { useLocaleDocRoutes } from "./utils";
|
|
19
18
|
/**
|
|
20
19
|
* hook for get nav data
|
|
@@ -23,8 +22,8 @@ import { useLocaleDocRoutes } from "./utils";
|
|
|
23
22
|
export var useNavData = function useNavData() {
|
|
24
23
|
var routes = useLocaleDocRoutes();
|
|
25
24
|
|
|
26
|
-
var
|
|
27
|
-
themeConfig =
|
|
25
|
+
var _useSiteData = useSiteData(),
|
|
26
|
+
themeConfig = _useSiteData.themeConfig;
|
|
28
27
|
|
|
29
28
|
var sidebar = useFullSidebarData();
|
|
30
29
|
|
|
@@ -38,18 +37,18 @@ export var useNavData = function useNavData() {
|
|
|
38
37
|
groups = _ref2[1];
|
|
39
38
|
|
|
40
39
|
var meta = Object.values(routes).reduce(function (ret, route) {
|
|
41
|
-
var
|
|
40
|
+
var _frontmatter$nav$orde;
|
|
42
41
|
|
|
43
42
|
// find routes which within the nav path
|
|
44
43
|
if (route.path.startsWith(link.slice(1))) {
|
|
45
|
-
switch (_typeof(route.meta.nav)) {
|
|
44
|
+
switch (_typeof(route.meta.frontmatter.nav)) {
|
|
46
45
|
case 'object':
|
|
47
|
-
ret.title = route.meta.nav.title || ret.title;
|
|
48
|
-
ret.order = (
|
|
46
|
+
ret.title = route.meta.frontmatter.nav.title || ret.title;
|
|
47
|
+
ret.order = (_frontmatter$nav$orde = route.meta.frontmatter.nav.order) !== null && _frontmatter$nav$orde !== void 0 ? _frontmatter$nav$orde : ret.order;
|
|
49
48
|
break;
|
|
50
49
|
|
|
51
50
|
case 'string':
|
|
52
|
-
ret.title = route.meta.nav || ret.title;
|
|
51
|
+
ret.title = route.meta.frontmatter.nav || ret.title;
|
|
53
52
|
break;
|
|
54
53
|
|
|
55
54
|
default:
|
|
@@ -61,7 +60,8 @@ export var useNavData = function useNavData() {
|
|
|
61
60
|
return {
|
|
62
61
|
title: meta.title || groups[0].title || groups[0].children[0].title,
|
|
63
62
|
order: meta.order || 0,
|
|
64
|
-
link: groups[0].children[0].link
|
|
63
|
+
link: groups[0].children[0].link,
|
|
64
|
+
activePath: link
|
|
65
65
|
};
|
|
66
66
|
}); // TODO: 2-level nav data
|
|
67
67
|
|
|
@@ -40,7 +40,10 @@ export var useRouteMeta = function useRouteMeta() {
|
|
|
40
40
|
ret = matched === null || matched === void 0 ? void 0 : (_matched$route = matched.route) === null || _matched$route === void 0 ? void 0 : _matched$route.meta;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
return ret || {
|
|
43
|
+
return ret || {
|
|
44
|
+
frontmatter: {},
|
|
45
|
+
toc: []
|
|
46
|
+
};
|
|
44
47
|
}, [clientRoutes.length, pathname]);
|
|
45
48
|
|
|
46
49
|
var _useState = useState(getter),
|
|
@@ -20,10 +20,9 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
20
20
|
|
|
21
21
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
22
22
|
|
|
23
|
-
import { useLocation } from 'dumi';
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import { useLocale, useLocaleDocRoutes } from "./utils";
|
|
23
|
+
import { useLocale, useLocation, useSiteData } from 'dumi';
|
|
24
|
+
import { useState } from 'react';
|
|
25
|
+
import { useLocaleDocRoutes } from "./utils";
|
|
27
26
|
var DEFAULT_GROUP_STUB_TITLE = '$default-group-title';
|
|
28
27
|
|
|
29
28
|
var getLocaleClearPath = function getLocaleClearPath(routePath, locale) {
|
|
@@ -38,15 +37,15 @@ export var useFullSidebarData = function useFullSidebarData() {
|
|
|
38
37
|
var locale = useLocale();
|
|
39
38
|
var routes = useLocaleDocRoutes();
|
|
40
39
|
|
|
41
|
-
var
|
|
42
|
-
themeConfig =
|
|
40
|
+
var _useSiteData = useSiteData(),
|
|
41
|
+
themeConfig = _useSiteData.themeConfig;
|
|
43
42
|
|
|
44
43
|
var _useState = useState(function () {
|
|
45
44
|
// auto generate sidebar data from routes
|
|
46
45
|
var data = Object.values(routes).reduce(function (ret, route) {
|
|
47
46
|
var clearPath = getLocaleClearPath(route.path, locale); // skip index routes
|
|
48
47
|
|
|
49
|
-
if (clearPath) {
|
|
48
|
+
if (clearPath && route.meta) {
|
|
50
49
|
var _ret$parentPath, _ret$parentPath$title, _ret$parentPath$title2;
|
|
51
50
|
|
|
52
51
|
// extract parent path from route path
|
|
@@ -56,8 +55,8 @@ export var useFullSidebarData = function useFullSidebarData() {
|
|
|
56
55
|
// en-US/a/b => /en-US/a
|
|
57
56
|
var parentPath = "/".concat(route.path.replace(/\/[^/]+$/, ''));
|
|
58
57
|
|
|
59
|
-
var _ref = _typeof(route.meta.group) === 'object' ? route.meta.group : {
|
|
60
|
-
title: route.meta.group
|
|
58
|
+
var _ref = _typeof(route.meta.frontmatter.group) === 'object' ? route.meta.frontmatter.group : {
|
|
59
|
+
title: route.meta.frontmatter.group
|
|
61
60
|
},
|
|
62
61
|
title = _ref.title,
|
|
63
62
|
_ref$order = _ref.order,
|
|
@@ -70,9 +69,9 @@ export var useFullSidebarData = function useFullSidebarData() {
|
|
|
70
69
|
title: title,
|
|
71
70
|
order: ((_ret$parentPath$title = ret[parentPath][titleKey]) === null || _ret$parentPath$title === void 0 ? void 0 : _ret$parentPath$title.order) || order,
|
|
72
71
|
children: [].concat(_toConsumableArray(((_ret$parentPath$title2 = ret[parentPath][titleKey]) === null || _ret$parentPath$title2 === void 0 ? void 0 : _ret$parentPath$title2.children) || []), [{
|
|
73
|
-
title: route.meta.title,
|
|
72
|
+
title: route.meta.frontmatter.title,
|
|
74
73
|
link: "/".concat(route.path),
|
|
75
|
-
order: route.meta.order || 0
|
|
74
|
+
order: route.meta.frontmatter.order || 0
|
|
76
75
|
}])
|
|
77
76
|
};
|
|
78
77
|
}
|
|
@@ -91,7 +90,7 @@ export var useFullSidebarData = function useFullSidebarData() {
|
|
|
91
90
|
return (// sort by group order
|
|
92
91
|
a.order - b.order || (a.title ? // sort by group title
|
|
93
92
|
(_a$title = a.title) === null || _a$title === void 0 ? void 0 : _a$title.localeCompare(b.title || '') : // put non-title group at the end
|
|
94
|
-
|
|
93
|
+
1)
|
|
95
94
|
);
|
|
96
95
|
}); // sort group children by order or title
|
|
97
96
|
|
|
@@ -10,36 +10,18 @@ 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 { useAppData } from 'dumi';
|
|
14
|
-
import {
|
|
15
|
-
import { useContext, useState } from 'react';
|
|
16
|
-
export var useLocale = function useLocale() {
|
|
17
|
-
var intl = useIntl();
|
|
18
|
-
|
|
19
|
-
var _useContext = useContext(Context),
|
|
20
|
-
locales = _useContext.locales;
|
|
21
|
-
|
|
22
|
-
var _useState = useState(function () {
|
|
23
|
-
return locales.find(function (_ref) {
|
|
24
|
-
var id = _ref.id;
|
|
25
|
-
return id === intl.locale;
|
|
26
|
-
});
|
|
27
|
-
}),
|
|
28
|
-
_useState2 = _slicedToArray(_useState, 1),
|
|
29
|
-
locale = _useState2[0];
|
|
30
|
-
|
|
31
|
-
return locale;
|
|
32
|
-
};
|
|
13
|
+
import { useAppData, useIntl, useSiteData } from 'dumi';
|
|
14
|
+
import { useState } from 'react';
|
|
33
15
|
export var useLocaleDocRoutes = function useLocaleDocRoutes() {
|
|
34
16
|
var intl = useIntl();
|
|
35
17
|
|
|
36
18
|
var _useAppData = useAppData(),
|
|
37
19
|
routes = _useAppData.routes;
|
|
38
20
|
|
|
39
|
-
var
|
|
40
|
-
locales =
|
|
21
|
+
var _useSiteData = useSiteData(),
|
|
22
|
+
locales = _useSiteData.locales;
|
|
41
23
|
|
|
42
|
-
var
|
|
24
|
+
var _useState = useState(function () {
|
|
43
25
|
var reversedLocales = locales.slice().reverse();
|
|
44
26
|
return Object.values(routes).reduce(function (ret, route) {
|
|
45
27
|
var matched = reversedLocales.find(function (locale) {
|
|
@@ -55,8 +37,8 @@ export var useLocaleDocRoutes = function useLocaleDocRoutes() {
|
|
|
55
37
|
return ret;
|
|
56
38
|
}, {});
|
|
57
39
|
}),
|
|
58
|
-
|
|
59
|
-
localeDocRoutes =
|
|
40
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
41
|
+
localeDocRoutes = _useState2[0];
|
|
60
42
|
|
|
61
43
|
return localeDocRoutes;
|
|
62
44
|
};
|
package/dist/constants.d.ts
CHANGED
package/dist/constants.js
CHANGED
|
@@ -20,13 +20,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
var constants_exports = {};
|
|
21
21
|
__export(constants_exports, {
|
|
22
22
|
LOCAL_THEME_DIR: () => LOCAL_THEME_DIR,
|
|
23
|
+
SP_ROUTE_PREFIX: () => SP_ROUTE_PREFIX,
|
|
23
24
|
THEME_PREFIX: () => THEME_PREFIX
|
|
24
25
|
});
|
|
25
26
|
module.exports = __toCommonJS(constants_exports);
|
|
26
27
|
var LOCAL_THEME_DIR = ".dumi/theme";
|
|
27
28
|
var THEME_PREFIX = "dumi-theme-";
|
|
29
|
+
var SP_ROUTE_PREFIX = "~";
|
|
28
30
|
// Annotate the CommonJS export names for ESM import in node:
|
|
29
31
|
0 && (module.exports = {
|
|
30
32
|
LOCAL_THEME_DIR,
|
|
33
|
+
SP_ROUTE_PREFIX,
|
|
31
34
|
THEME_PREFIX
|
|
32
35
|
});
|
package/dist/features/compile.js
CHANGED
|
@@ -50,7 +50,7 @@ var compile_default = (api) => {
|
|
|
50
50
|
extraRemarkPlugins: api.config.extraRemarkPlugins,
|
|
51
51
|
extraRehypePlugins: api.config.extraRehypePlugins
|
|
52
52
|
};
|
|
53
|
-
memo.module.rule("dumi-md").type("javascript/auto").test(/\.md$/).oneOf("
|
|
53
|
+
memo.module.rule("dumi-md").type("javascript/auto").test(/\.md$/).oneOf("md-meta").resourceQuery(/meta$/).use("md-meta-loader").loader(loaderPath).options({
|
|
54
54
|
...loaderBaseOpts,
|
|
55
55
|
mode: "meta"
|
|
56
56
|
}).end().end().oneOf("md").use("babel-loader").loader(babelInUmi.loader).options(babelInUmi.options).end().use("md-loader").loader(loaderPath).options({
|
|
@@ -34,10 +34,7 @@ function getSchemas() {
|
|
|
34
34
|
}).optional(),
|
|
35
35
|
extraRemarkPlugins: getUnifiedPluginSchema,
|
|
36
36
|
extraRehypePlugins: getUnifiedPluginSchema,
|
|
37
|
-
themeConfig: (Joi) => Joi.object(
|
|
38
|
-
nav: Joi.array().items(Joi.object()).optional(),
|
|
39
|
-
sidebar: Joi.object().optional()
|
|
40
|
-
}).optional()
|
|
37
|
+
themeConfig: (Joi) => Joi.object().optional()
|
|
41
38
|
};
|
|
42
39
|
}
|
|
43
40
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
|
|
22
|
+
// src/features/exports.ts
|
|
23
|
+
var exports_exports = {};
|
|
24
|
+
__export(exports_exports, {
|
|
25
|
+
default: () => exports_default
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(exports_exports);
|
|
28
|
+
var import_plugin_utils = require("umi/plugin-utils");
|
|
29
|
+
var exports_default = (api) => {
|
|
30
|
+
api.describe({ key: void 0 });
|
|
31
|
+
api.modifyConfig((memo) => {
|
|
32
|
+
memo.alias["dumi$"] = "@@/dumi/exports";
|
|
33
|
+
return memo;
|
|
34
|
+
});
|
|
35
|
+
api.onGenerateFiles(() => {
|
|
36
|
+
api.writeTmpFile({
|
|
37
|
+
noPluginDir: true,
|
|
38
|
+
path: "dumi/exports.ts",
|
|
39
|
+
content: `export * from '../exports.ts';
|
|
40
|
+
export * from '${(0, import_plugin_utils.winPath)(require.resolve("../client/theme-api"))}';`
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
45
|
+
0 && (module.exports = {});
|
package/dist/features/locales.js
CHANGED
|
@@ -69,7 +69,7 @@ export const messages = ${JSON.stringify(api.service.themeData.locales, null, 2)
|
|
|
69
69
|
noPluginDir: true,
|
|
70
70
|
path: "dumi/locales/runtime.tsx",
|
|
71
71
|
content: `
|
|
72
|
-
import { history } from '
|
|
72
|
+
import { history } from 'dumi';
|
|
73
73
|
import React, { useState, type ReactNode } from 'react';
|
|
74
74
|
import { RawIntlProvider, createIntl, createIntlCache } from 'react-intl';
|
|
75
75
|
import { locales, messages } from './config';
|
|
@@ -88,7 +88,7 @@ const LocalesContainer: FC<{ children: ReactNode }> = (props) => {
|
|
|
88
88
|
|
|
89
89
|
return matched ? matched.id : locales[0].id;
|
|
90
90
|
});
|
|
91
|
-
const [intl] = useState(() => createIntl({ locale, messages: messages[locale] || {} }, cache))
|
|
91
|
+
const [intl] = useState(() => createIntl({ locale, messages: messages[locale] || {} }, cache));
|
|
92
92
|
|
|
93
93
|
return <RawIntlProvider value={intl}>{props.children}</RawIntlProvider>;
|
|
94
94
|
}
|
package/dist/features/meta.js
CHANGED
|
@@ -42,7 +42,7 @@ var meta_default = (api) => {
|
|
|
42
42
|
noPluginDir: true,
|
|
43
43
|
path: "dumi/meta/index.ts",
|
|
44
44
|
content: import_plugin_utils.Mustache.render(`{{#mdRouteFiles}}
|
|
45
|
-
import { demos as d{{{index}}}, frontmatter as fm{{{index}}} } from '{{{file}}}?type=meta';
|
|
45
|
+
import { demos as d{{{index}}}, frontmatter as fm{{{index}}}, toc as toc{{{index}}} } from '{{{file}}}?type=meta';
|
|
46
46
|
{{/mdRouteFiles}}
|
|
47
47
|
|
|
48
48
|
export const demos = {
|
|
@@ -53,7 +53,7 @@ export const demos = {
|
|
|
53
53
|
|
|
54
54
|
export const routesMeta = {
|
|
55
55
|
{{#mdRouteFiles}}
|
|
56
|
-
'{{{id}}}': fm{{{index}}},
|
|
56
|
+
'{{{id}}}': { frontmatter: fm{{{index}}}, toc: toc{{{index}}} },
|
|
57
57
|
{{/mdRouteFiles}}
|
|
58
58
|
}`, { mdRouteFiles })
|
|
59
59
|
});
|