dumi 2.2.1-alpha.0 → 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.
- package/compiled/crates/swc_plugin_react_demo.wasm +0 -0
- package/dist/assetParsers/atom.js +15 -5
- package/dist/assetParsers/block.js +27 -9
- package/dist/cli.js +8 -1
- package/dist/client/pages/Demo/index.js +3 -8
- package/dist/client/theme-api/AtomRenderer.d.ts +2 -2
- package/dist/client/theme-api/AtomRenderer.js +19 -35
- package/dist/client/theme-api/DumiDemo.js +8 -13
- package/dist/client/theme-api/DumiDemoGrid.js +12 -26
- package/dist/client/theme-api/DumiPage.js +16 -34
- package/dist/client/theme-api/openCodeSandbox.js +28 -26
- package/dist/client/theme-api/openStackBlitz.js +15 -16
- package/dist/client/theme-api/types.d.ts +15 -12
- package/dist/client/theme-api/useAtomAssets.js +1 -2
- package/dist/client/theme-api/useLocale.js +10 -19
- package/dist/client/theme-api/useNavData.js +78 -103
- package/dist/client/theme-api/usePrefersColor.d.ts +2 -2
- package/dist/client/theme-api/usePrefersColor.js +39 -66
- package/dist/client/theme-api/useRouteMeta.js +9 -23
- package/dist/client/theme-api/useSidebarData.js +124 -158
- package/dist/client/theme-api/useSiteSearch/index.d.ts +1 -1
- package/dist/client/theme-api/useSiteSearch/index.js +24 -38
- package/dist/client/theme-api/useTabMeta.js +8 -19
- package/dist/client/theme-api/utils.d.ts +6 -0
- package/dist/client/theme-api/utils.js +40 -46
- package/dist/client/typings.d.ts +0 -5
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +3 -0
- package/dist/features/assets.js +23 -4
- package/dist/features/autoAlias.js +8 -3
- package/dist/features/compile/babelLoaderCustomize.js +0 -2
- package/dist/features/compile/index.js +22 -10
- package/dist/features/configPlugins/index.js +3 -4
- package/dist/features/configPlugins/schema.d.ts +1 -1
- package/dist/features/configPlugins/schema.js +20 -3
- package/dist/features/derivative.js +54 -11
- package/dist/features/exportStatic.js +11 -7
- package/dist/features/exports.js +8 -3
- package/dist/features/html2sketch.js +7 -5
- package/dist/features/locales.js +53 -17
- package/dist/features/meta.js +23 -10
- package/dist/features/parser.js +17 -5
- package/dist/features/routes.js +63 -24
- package/dist/features/sideEffects/docSideEffectsWebpackPlugin.js +27 -16
- package/dist/features/sideEffects/index.js +13 -4
- package/dist/features/sitemap.js +17 -5
- package/dist/features/tabs.js +23 -11
- package/dist/features/theme/index.js +152 -39
- package/dist/features/theme/loader.js +23 -7
- package/dist/index.js +10 -2
- package/dist/loaders/demo/index.js +3 -3
- package/dist/loaders/markdown/index.d.ts +1 -1
- package/dist/loaders/markdown/index.js +36 -24
- package/dist/loaders/markdown/transformer/index.d.ts +4 -2
- package/dist/loaders/markdown/transformer/index.js +48 -19
- package/dist/loaders/markdown/transformer/rehypeDemo.d.ts +3 -1
- package/dist/loaders/markdown/transformer/rehypeDemo.js +125 -68
- package/dist/loaders/markdown/transformer/rehypeDesc.js +8 -3
- package/dist/loaders/markdown/transformer/rehypeEnhancedTag.js +8 -3
- package/dist/loaders/markdown/transformer/rehypeHighlightLine.js +8 -3
- package/dist/loaders/markdown/transformer/rehypeImg.js +8 -3
- package/dist/loaders/markdown/transformer/rehypeIsolation.js +36 -21
- package/dist/loaders/markdown/transformer/rehypeJsxify.js +8 -3
- package/dist/loaders/markdown/transformer/rehypeLink.d.ts +1 -1
- package/dist/loaders/markdown/transformer/rehypeLink.js +24 -9
- package/dist/loaders/markdown/transformer/rehypeRaw.d.ts +1 -1
- package/dist/loaders/markdown/transformer/rehypeRaw.js +20 -6
- package/dist/loaders/markdown/transformer/rehypeSlug.js +16 -3
- package/dist/loaders/markdown/transformer/rehypeStrip.js +8 -3
- package/dist/loaders/markdown/transformer/rehypeText.js +14 -5
- package/dist/loaders/markdown/transformer/remarkBreaks.d.ts +3 -0
- package/dist/loaders/markdown/transformer/remarkBreaks.js +65 -0
- package/dist/loaders/markdown/transformer/remarkContainer.js +28 -13
- package/dist/loaders/markdown/transformer/remarkEmbed.js +43 -21
- package/dist/loaders/markdown/transformer/remarkMeta.d.ts +3 -1
- package/dist/loaders/markdown/transformer/remarkMeta.js +39 -9
- package/dist/loaders/page/index.js +12 -4
- package/dist/loaders/pre-raw/index.js +0 -2
- package/dist/preset.js +8 -3
- package/dist/registerMethods.js +0 -2
- package/dist/service/dev.js +8 -1
- package/dist/service/printHelp.js +3 -1
- package/dist/techStacks/react.js +8 -3
- package/dist/types.d.ts +6 -6
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +15 -6
- package/package.json +12 -10
- package/theme-default/builtins/API/index.js +15 -36
- package/theme-default/builtins/Badge/index.js +0 -3
- package/theme-default/builtins/Container/index.js +6 -15
- package/theme-default/builtins/Previewer/index.js +1 -8
- package/theme-default/builtins/SourceCode/index.js +15 -27
- package/theme-default/builtins/Table/index.js +10 -25
- package/theme-default/builtins/Tree/index.js +13 -44
- package/theme-default/layouts/DocLayout/index.js +14 -27
- package/theme-default/locales/en-US.json +4 -0
- package/theme-default/locales/zh-CN.json +4 -0
- package/theme-default/slots/ColorSwitch/index.js +7 -22
- package/theme-default/slots/Content/index.js +5 -7
- package/theme-default/slots/Content/index.less +16 -1
- package/theme-default/slots/ContentFooter/index.d.ts +4 -0
- package/theme-default/slots/ContentFooter/index.js +93 -0
- package/theme-default/slots/ContentFooter/index.less +163 -0
- package/theme-default/slots/ContentTabs/index.d.ts +1 -1
- package/theme-default/slots/ContentTabs/index.js +5 -5
- package/theme-default/slots/Features/index.js +6 -11
- package/theme-default/slots/Footer/index.js +1 -4
- package/theme-default/slots/Header/index.js +7 -18
- package/theme-default/slots/HeaderExtra/index.js +0 -2
- package/theme-default/slots/Hero/index.js +2 -6
- package/theme-default/slots/HeroTitle/index.js +0 -2
- package/theme-default/slots/LangSwitch/index.js +23 -35
- package/theme-default/slots/Logo/index.js +1 -4
- package/theme-default/slots/Navbar/index.js +14 -29
- package/theme-default/slots/NavbarExtra/index.js +0 -2
- package/theme-default/slots/NotFound/index.js +0 -2
- package/theme-default/slots/PreviewerActions/index.js +13 -35
- package/theme-default/slots/PreviewerActionsExtra/index.js +0 -2
- package/theme-default/slots/RtlSwitch/index.js +6 -20
- package/theme-default/slots/RtlSwitch/index.less +5 -0
- package/theme-default/slots/SearchBar/Input.d.ts +1 -1
- package/theme-default/slots/SearchBar/Input.js +6 -5
- package/theme-default/slots/SearchBar/Mask.d.ts +1 -1
- package/theme-default/slots/SearchBar/Mask.js +0 -1
- package/theme-default/slots/SearchBar/index.js +20 -41
- package/theme-default/slots/SearchResult/index.d.ts +1 -1
- package/theme-default/slots/SearchResult/index.js +13 -36
- package/theme-default/slots/Sidebar/index.js +1 -4
- package/theme-default/slots/SocialIcon/index.d.ts +2 -2
- package/theme-default/slots/SocialIcon/index.js +1 -3
- package/theme-default/slots/Toc/index.js +12 -28
|
@@ -1,20 +1,14 @@
|
|
|
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
|
|
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 sdk from '@stackblitz/sdk';
|
|
14
|
-
import {
|
|
8
|
+
import { ApplyPluginsType } from 'dumi';
|
|
9
|
+
import { genReactRenderCode, pluginManager } from "./utils";
|
|
15
10
|
export var openStackBlitz = function openStackBlitz(data) {
|
|
16
11
|
var _data$asset$dependenc, _react, _deps$_react, _reactDom, _deps$_reactDom;
|
|
17
|
-
|
|
18
12
|
var isTSX = Boolean((_data$asset$dependenc = data.asset.dependencies) === null || _data$asset$dependenc === void 0 ? void 0 : _data$asset$dependenc['index.tsx']);
|
|
19
13
|
var ext = isTSX ? '.tsx' : '.jsx';
|
|
20
14
|
var deps = {};
|
|
@@ -30,11 +24,10 @@ export var openStackBlitz = function openStackBlitz(data) {
|
|
|
30
24
|
};
|
|
31
25
|
Object.entries(data.asset.dependencies).forEach(function (_ref) {
|
|
32
26
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
name = _ref2[0],
|
|
28
|
+
_ref2$ = _ref2[1],
|
|
29
|
+
type = _ref2$.type,
|
|
30
|
+
value = _ref2$.value;
|
|
38
31
|
if (type === 'NPM') {
|
|
39
32
|
// generate dependencies
|
|
40
33
|
deps[name] = value;
|
|
@@ -56,5 +49,11 @@ export var openStackBlitz = function openStackBlitz(data) {
|
|
|
56
49
|
}, null, 2);
|
|
57
50
|
files[entryFileName] = genReactRenderCode(deps.react);
|
|
58
51
|
config.files = files;
|
|
59
|
-
|
|
52
|
+
var stbOpts = pluginManager.applyPlugins({
|
|
53
|
+
type: ApplyPluginsType.modify,
|
|
54
|
+
key: 'modifyStackBlitzData',
|
|
55
|
+
initialValue: config,
|
|
56
|
+
args: data
|
|
57
|
+
});
|
|
58
|
+
sdk.openProject(stbOpts);
|
|
60
59
|
};
|
|
@@ -90,6 +90,7 @@ export interface IRouteMeta {
|
|
|
90
90
|
};
|
|
91
91
|
atomId?: string;
|
|
92
92
|
filename?: string;
|
|
93
|
+
lastUpdated?: number;
|
|
93
94
|
debug?: boolean;
|
|
94
95
|
/**
|
|
95
96
|
* Control the display of the sidebar menu.
|
|
@@ -140,16 +141,16 @@ export interface IRouteMeta {
|
|
|
140
141
|
*/
|
|
141
142
|
_atom_route?: boolean;
|
|
142
143
|
}
|
|
143
|
-
|
|
144
|
+
type IBasicLocale = {
|
|
144
145
|
id: string;
|
|
145
146
|
name: string;
|
|
146
147
|
};
|
|
147
|
-
export
|
|
148
|
+
export type ILocale = (IBasicLocale & {
|
|
148
149
|
base: string;
|
|
149
150
|
}) | (IBasicLocale & {
|
|
150
151
|
suffix: string;
|
|
151
152
|
});
|
|
152
|
-
export
|
|
153
|
+
export type ILocalesConfig = ILocale[];
|
|
153
154
|
export interface INavItem {
|
|
154
155
|
title: string;
|
|
155
156
|
link?: string;
|
|
@@ -169,18 +170,18 @@ export interface ISidebarGroup {
|
|
|
169
170
|
children: ISidebarItem[];
|
|
170
171
|
[key: string]: any;
|
|
171
172
|
}
|
|
172
|
-
export
|
|
173
|
-
export
|
|
173
|
+
export type SocialTypes = 'github' | 'weibo' | 'twitter' | 'gitlab' | 'facebook' | 'zhihu' | 'yuque' | 'linkedin';
|
|
174
|
+
export type INavItems = (INavItem & {
|
|
174
175
|
children?: INavItem[];
|
|
175
176
|
})[];
|
|
176
|
-
export
|
|
177
|
-
|
|
178
|
-
export
|
|
179
|
-
export
|
|
177
|
+
export type INav = INavItems | Record<string, INavItems>;
|
|
178
|
+
type IUserNavItem = Pick<INavItem, 'title' | 'link'>;
|
|
179
|
+
export type IUserNavMode = 'override' | 'append' | 'prepend';
|
|
180
|
+
export type IUserNavItems = (IUserNavItem & {
|
|
180
181
|
children?: IUserNavItem[];
|
|
181
182
|
})[];
|
|
182
|
-
export
|
|
183
|
-
export
|
|
183
|
+
export type IUserNavValue = IUserNavItems | Record<string, IUserNavItems>;
|
|
184
|
+
export type NavWithMode<T extends IUserNavValue> = {
|
|
184
185
|
/**
|
|
185
186
|
* 扩展导航的模式
|
|
186
187
|
* @description
|
|
@@ -206,9 +207,11 @@ export interface IThemeConfig {
|
|
|
206
207
|
socialLinks?: {
|
|
207
208
|
[key in SocialTypes]?: string;
|
|
208
209
|
};
|
|
210
|
+
editLink?: boolean | string;
|
|
211
|
+
lastUpdated?: boolean;
|
|
209
212
|
[key: string]: any;
|
|
210
213
|
}
|
|
211
|
-
export
|
|
214
|
+
export type IRoutesById = Record<string, {
|
|
212
215
|
path?: string;
|
|
213
216
|
parentId?: string;
|
|
214
217
|
meta?: IRouteMeta;
|
|
@@ -1,31 +1,22 @@
|
|
|
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
|
|
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, useSiteData } from 'dumi';
|
|
14
8
|
import { useState } from 'react';
|
|
15
9
|
export var useLocale = function useLocale() {
|
|
16
10
|
var intl = useIntl();
|
|
17
|
-
|
|
18
11
|
var _useSiteData = useSiteData(),
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
locales = _useSiteData.locales;
|
|
21
13
|
var _useState = useState(function () {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
14
|
+
return locales.find(function (_ref) {
|
|
15
|
+
var id = _ref.id;
|
|
16
|
+
return id === intl.locale;
|
|
17
|
+
});
|
|
18
|
+
}),
|
|
19
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
20
|
+
locale = _useState2[0];
|
|
30
21
|
return locale;
|
|
31
22
|
};
|
|
@@ -1,33 +1,22 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
1
2
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
-
|
|
3
3
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
-
|
|
5
4
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
6
|
-
|
|
7
5
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
8
|
-
|
|
9
6
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
10
|
-
|
|
11
7
|
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."); }
|
|
12
|
-
|
|
13
8
|
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); }
|
|
14
|
-
|
|
15
|
-
function
|
|
16
|
-
|
|
17
|
-
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; }
|
|
18
|
-
|
|
9
|
+
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; }
|
|
10
|
+
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; } }
|
|
19
11
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
20
|
-
|
|
21
12
|
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; }
|
|
22
|
-
|
|
23
13
|
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; }
|
|
24
|
-
|
|
25
|
-
function
|
|
26
|
-
|
|
14
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
16
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
27
17
|
import { useFullSidebarData, useLocale, useSiteData } from 'dumi';
|
|
28
18
|
import { useState } from 'react';
|
|
29
19
|
import { getLocaleNav, pickRouteSortMeta, useLocaleDocRoutes, useRouteDataComparer } from "./utils";
|
|
30
|
-
|
|
31
20
|
function genNavItem(meta, groups, activePath, link) {
|
|
32
21
|
return _objectSpread({
|
|
33
22
|
title: meta.title || groups[0].title || groups[0].children[0].title,
|
|
@@ -37,113 +26,99 @@ function genNavItem(meta, groups, activePath, link) {
|
|
|
37
26
|
link: link
|
|
38
27
|
} : {});
|
|
39
28
|
}
|
|
29
|
+
|
|
40
30
|
/**
|
|
41
31
|
* hook for get nav data
|
|
42
32
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
33
|
export var useNavData = function useNavData() {
|
|
46
34
|
var locale = useLocale();
|
|
47
35
|
var routes = useLocaleDocRoutes();
|
|
48
|
-
|
|
49
36
|
var _useSiteData = useSiteData(),
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
37
|
+
themeConfig = _useSiteData.themeConfig,
|
|
38
|
+
is2LevelNav = _useSiteData._2_level_nav_available;
|
|
53
39
|
var sidebar = useFullSidebarData();
|
|
54
40
|
var sidebarDataComparer = useRouteDataComparer();
|
|
55
|
-
|
|
56
41
|
var _useState = useState(function () {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
42
|
+
// use user config first
|
|
43
|
+
var userNavValue = [];
|
|
44
|
+
var mode;
|
|
45
|
+
if (themeConfig.nav) {
|
|
46
|
+
// 形如:{mode: "append", value: []}
|
|
47
|
+
if ('mode' in themeConfig.nav && typeof themeConfig.nav.mode === 'string') {
|
|
48
|
+
mode = themeConfig.nav.mode;
|
|
49
|
+
userNavValue = getLocaleNav(themeConfig.nav.value, locale);
|
|
50
|
+
} else if (!('mode' in themeConfig.nav)) {
|
|
51
|
+
// 形如:[] 或 {"zh-CN": []}
|
|
52
|
+
userNavValue = getLocaleNav(themeConfig.nav, locale);
|
|
53
|
+
}
|
|
54
|
+
if (!mode || mode === 'override') return userNavValue;
|
|
69
55
|
}
|
|
70
56
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
.sort(function (_ref, _ref2) {
|
|
77
|
-
var _ref3 = _slicedToArray(_ref, 1),
|
|
57
|
+
// fallback to generate nav data from sidebar data
|
|
58
|
+
var data = Object.values(Object.entries(sidebar)
|
|
59
|
+
// make sure shallow nav item before deep
|
|
60
|
+
.sort(function (_ref, _ref2) {
|
|
61
|
+
var _ref3 = _slicedToArray(_ref, 1),
|
|
78
62
|
a = _ref3[0];
|
|
79
|
-
|
|
80
|
-
var _ref4 = _slicedToArray(_ref2, 1),
|
|
63
|
+
var _ref4 = _slicedToArray(_ref2, 1),
|
|
81
64
|
b = _ref4[0];
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
65
|
+
return a.split('/').length - b.split('/').length;
|
|
66
|
+
})
|
|
67
|
+
// convert sidebar data to nav data
|
|
68
|
+
.reduce(function (ret, _ref5) {
|
|
69
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
87
70
|
link = _ref6[0],
|
|
88
71
|
groups = _ref6[1];
|
|
89
|
-
|
|
90
|
-
var _ref7 = link.match(/^(\/[^/]+)([^]+)?$/),
|
|
72
|
+
var _ref7 = link.match(/^(\/[^/]+)([^]+)?$/),
|
|
91
73
|
_ref8 = _slicedToArray(_ref7, 3),
|
|
92
74
|
parentPath = _ref8[1],
|
|
93
75
|
restPath = _ref8[2];
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return ret;
|
|
106
|
-
}, [{}, {}]),
|
|
76
|
+
var isNestedNav = Boolean(restPath) && is2LevelNav;
|
|
77
|
+
var _Object$values$reduce = Object.values(routes).reduce(function (ret, route) {
|
|
78
|
+
// find routes which within the nav path
|
|
79
|
+
if (route.path.startsWith(link.slice(1))) {
|
|
80
|
+
pickRouteSortMeta(ret[0], 'nav', route.meta.frontmatter);
|
|
81
|
+
// generate parent meta for nested nav
|
|
82
|
+
if (isNestedNav) pickRouteSortMeta(ret[1], 'nav.second', route.meta.frontmatter);
|
|
83
|
+
}
|
|
84
|
+
return ret;
|
|
85
|
+
}, [{}, {}]),
|
|
107
86
|
_Object$values$reduce2 = _slicedToArray(_Object$values$reduce, 2),
|
|
108
87
|
firstMeta = _Object$values$reduce2[0],
|
|
109
88
|
secondMeta = _Object$values$reduce2[1];
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}),
|
|
145
|
-
_useState2 = _slicedToArray(_useState, 1),
|
|
146
|
-
nav = _useState2[0];
|
|
147
|
-
|
|
89
|
+
if (isNestedNav) {
|
|
90
|
+
var _firstMeta$title, _ret$parentPath, _second$children;
|
|
91
|
+
// fallback to use parent path as 1-level nav title
|
|
92
|
+
(_firstMeta$title = firstMeta.title) !== null && _firstMeta$title !== void 0 ? _firstMeta$title : firstMeta.title = parentPath.slice(1).replace(/^[a-z]/, function (s) {
|
|
93
|
+
return s.toUpperCase();
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// handle nested nav item as parent children
|
|
97
|
+
var second = (_ret$parentPath = ret[parentPath]) !== null && _ret$parentPath !== void 0 ? _ret$parentPath : ret[parentPath] = genNavItem(firstMeta, groups, parentPath);
|
|
98
|
+
(_second$children = second.children) !== null && _second$children !== void 0 ? _second$children : second.children = [];
|
|
99
|
+
ret[parentPath].children.push(genNavItem(secondMeta, groups, link, groups[0].children[0].link));
|
|
100
|
+
} else {
|
|
101
|
+
// handle root nav item
|
|
102
|
+
ret[link] = genNavItem(firstMeta, groups, link, groups[0].children[0].link);
|
|
103
|
+
}
|
|
104
|
+
return ret;
|
|
105
|
+
}, {}));
|
|
106
|
+
data.forEach(function (item, i) {
|
|
107
|
+
var _item$children;
|
|
108
|
+
if (!item.link && ((_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.length) === 1) {
|
|
109
|
+
// hoist nav item if only one child
|
|
110
|
+
data[i] = item.children[0];
|
|
111
|
+
} else if (item.children) {
|
|
112
|
+
// sort nav item children by order or title
|
|
113
|
+
item.children.sort(sidebarDataComparer);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
// sort nav items by order or title
|
|
117
|
+
data.sort(sidebarDataComparer);
|
|
118
|
+
if (mode === 'prepend') data.unshift.apply(data, _toConsumableArray(userNavValue));else if (mode === 'append') data.push.apply(data, _toConsumableArray(userNavValue));
|
|
119
|
+
return data;
|
|
120
|
+
}),
|
|
121
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
122
|
+
nav = _useState2[0];
|
|
148
123
|
return nav;
|
|
149
124
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export type IColorValue = 'light' | 'dark';
|
|
2
|
+
export type IPrefersColorValue = IColorValue | 'auto';
|
|
3
3
|
/**
|
|
4
4
|
* hook for get/set prefers-color-schema, use to control color mode for theme package
|
|
5
5
|
* @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme
|