dumi 2.3.0-beta.0 → 2.3.0-beta.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/dist/client/pages/Demo/index.js +4 -4
- package/dist/client/theme-api/useLiveDemo.d.ts +1 -1
- package/dist/client/theme-api/useLiveDemo.js +4 -4
- package/dist/features/configPlugins/schema.js +3 -1
- package/dist/features/derivative.js +5 -0
- package/dist/features/theme/index.js +1 -1
- package/dist/loaders/markdown/transformer/index.js +3 -1
- package/dist/templates/meta/exports.ts.tpl +16 -11
- package/dist/types.d.ts +2 -2
- package/package.json +1 -1
- package/theme-default/builtins/Previewer/index.js +6 -6
- package/theme-default/slots/PreviewerActions/index.d.ts +3 -3
- package/theme-default/slots/PreviewerActions/index.js +5 -5
|
@@ -8,19 +8,19 @@ var DemoRenderPage = function DemoRenderPage() {
|
|
|
8
8
|
component = _ref.component;
|
|
9
9
|
var _useLiveDemo = useLiveDemo(id),
|
|
10
10
|
liveDemoNode = _useLiveDemo.node,
|
|
11
|
-
|
|
11
|
+
setSource = _useLiveDemo.setSource;
|
|
12
12
|
var finalNode = liveDemoNode || component && /*#__PURE__*/createElement(component);
|
|
13
13
|
useEffect(function () {
|
|
14
14
|
var handler = function handler(ev) {
|
|
15
|
-
if (ev.data.type === 'dumi.liveDemo.
|
|
16
|
-
|
|
15
|
+
if (ev.data.type === 'dumi.liveDemo.setSource') {
|
|
16
|
+
setSource(ev.data.value);
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
19
|
window.addEventListener('message', handler);
|
|
20
20
|
return function () {
|
|
21
21
|
return window.removeEventListener('message', handler);
|
|
22
22
|
};
|
|
23
|
-
}, [
|
|
23
|
+
}, [setSource]);
|
|
24
24
|
return finalNode;
|
|
25
25
|
};
|
|
26
26
|
export default DemoRenderPage;
|
|
@@ -19,11 +19,11 @@ export var useLiveDemo = function useLiveDemo(id) {
|
|
|
19
19
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
20
20
|
error = _useState4[0],
|
|
21
21
|
setError = _useState4[1];
|
|
22
|
-
var
|
|
22
|
+
var setSource = useCallback(function (source) {
|
|
23
23
|
var entryFileName = Object.keys(asset.dependencies).find(function (k) {
|
|
24
24
|
return asset.dependencies[k].type === 'FILE';
|
|
25
25
|
});
|
|
26
|
-
var entryFileCode =
|
|
26
|
+
var entryFileCode = source[entryFileName];
|
|
27
27
|
var require = function require(v) {
|
|
28
28
|
if (v in context) return context[v];
|
|
29
29
|
throw new Error("Cannot find module: ".concat(v));
|
|
@@ -54,7 +54,7 @@ export var useLiveDemo = function useLiveDemo(id) {
|
|
|
54
54
|
renderToStaticMarkup(newDemoNode);
|
|
55
55
|
console.error = oError;
|
|
56
56
|
|
|
57
|
-
// set new demo node with passing
|
|
57
|
+
// set new demo node with passing source
|
|
58
58
|
setDemoNode(newDemoNode);
|
|
59
59
|
setError(null);
|
|
60
60
|
} catch (err) {
|
|
@@ -65,6 +65,6 @@ export var useLiveDemo = function useLiveDemo(id) {
|
|
|
65
65
|
return {
|
|
66
66
|
node: demoNode,
|
|
67
67
|
error: error,
|
|
68
|
-
|
|
68
|
+
setSource: setSource
|
|
69
69
|
};
|
|
70
70
|
};
|
|
@@ -54,7 +54,9 @@ function getSchemas() {
|
|
|
54
54
|
extraRemarkPlugins: getUnifiedPluginSchema,
|
|
55
55
|
extraRehypePlugins: getUnifiedPluginSchema,
|
|
56
56
|
themeConfig: (Joi) => Joi.object().optional(),
|
|
57
|
-
logo: (Joi) => Joi.string()
|
|
57
|
+
logo: (Joi) => Joi.string(),
|
|
58
|
+
// FIXME: remove before 2.3.0
|
|
59
|
+
live: (Joi) => Joi.bool().optional()
|
|
58
60
|
};
|
|
59
61
|
}
|
|
60
62
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -158,6 +158,11 @@ var derivative_default = (api) => {
|
|
|
158
158
|
}
|
|
159
159
|
} catch {
|
|
160
160
|
}
|
|
161
|
+
if ("live" in api.config) {
|
|
162
|
+
import_plugin_utils.logger.warn(
|
|
163
|
+
"`live` config is deprecated and live demo is always enabled now, please remove it."
|
|
164
|
+
);
|
|
165
|
+
}
|
|
161
166
|
});
|
|
162
167
|
safeExcludeInMFSU(api, [
|
|
163
168
|
new RegExp("dumi/dist/client"),
|
|
@@ -86,7 +86,7 @@ function checkMinor2ByPkg(pkg) {
|
|
|
86
86
|
if ((_a = pkg.name) == null ? void 0 : _a.startsWith("@examples/"))
|
|
87
87
|
return true;
|
|
88
88
|
const ver = ((_b = pkg.peerDependencies) == null ? void 0 : _b.dumi) || ((_c = pkg.devDependencies) == null ? void 0 : _c.dumi) || "^2.0.0";
|
|
89
|
-
return import_plugin_utils.semver.subset(ver, import_constants.VERSION_2_LEVEL_NAV);
|
|
89
|
+
return import_plugin_utils.semver.subset(ver, import_constants.VERSION_2_LEVEL_NAV, { includePrerelease: true });
|
|
90
90
|
}
|
|
91
91
|
var theme_default = (api) => {
|
|
92
92
|
const defaultThemeData = (0, import_loader.default)(DEFAULT_THEME_PATH);
|
|
@@ -56,7 +56,9 @@ function keepSoftBreak(pkg) {
|
|
|
56
56
|
if (((_a = pkg == null ? void 0 : pkg.name) == null ? void 0 : _a.startsWith("@examples/")) || (pkg == null ? void 0 : pkg.name) === "dumi")
|
|
57
57
|
return false;
|
|
58
58
|
const ver = ((_b = pkg == null ? void 0 : pkg.devDependencies) == null ? void 0 : _b.dumi) ?? ((_c = pkg == null ? void 0 : pkg.dependencies) == null ? void 0 : _c.dumi) ?? "^2.0.0";
|
|
59
|
-
return !import_plugin_utils.semver.subset(ver, import_constants.VERSION_2_DEPRECATE_SOFT_BREAKS
|
|
59
|
+
return !import_plugin_utils.semver.subset(ver, import_constants.VERSION_2_DEPRECATE_SOFT_BREAKS, {
|
|
60
|
+
includePrerelease: true
|
|
61
|
+
});
|
|
60
62
|
}
|
|
61
63
|
async function applyUnifiedPlugin(opts) {
|
|
62
64
|
const [plugin, options] = Array.isArray(opts.plugin) ? opts.plugin : [opts.plugin];
|
|
@@ -109,7 +109,7 @@ export function getRouteMetaById<T extends { syncOnly?: boolean }>(
|
|
|
109
109
|
? undefined | IRouteMeta
|
|
110
110
|
: Promise<undefined | IRouteMeta> | undefined {
|
|
111
111
|
if (filesMeta[id]) {
|
|
112
|
-
const { frontmatter, toc, textGetter, tabs
|
|
112
|
+
const { frontmatter, toc, textGetter, tabs } = filesMeta[id];
|
|
113
113
|
const routeMeta: IRouteMeta = {
|
|
114
114
|
frontmatter,
|
|
115
115
|
toc: toc,
|
|
@@ -117,25 +117,30 @@ export function getRouteMetaById<T extends { syncOnly?: boolean }>(
|
|
|
117
117
|
};
|
|
118
118
|
|
|
119
119
|
if (opts?.syncOnly) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
if (tabs) {
|
|
121
|
+
routeMeta.tabs = tabs.map((tabId) =>
|
|
122
|
+
genTab(tabId, getRouteMetaById(tabId, opts)),
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return routeMeta;
|
|
123
127
|
} else {
|
|
124
128
|
return new Promise(async (resolve) => {
|
|
125
129
|
if (textGetter) {
|
|
126
130
|
({ texts: routeMeta.texts } = await textGetter());
|
|
127
131
|
}
|
|
128
132
|
|
|
129
|
-
|
|
130
|
-
tabs.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
if (tabs) {
|
|
134
|
+
routeMeta.tabs = await Promise.all(
|
|
135
|
+
tabs.map(async (tabId) =>
|
|
136
|
+
genTab(tabId, await getRouteMetaById(tabId, opts)),
|
|
137
|
+
),
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
134
141
|
resolve(routeMeta);
|
|
135
142
|
});
|
|
136
143
|
}
|
|
137
|
-
|
|
138
|
-
return routeMeta;
|
|
139
144
|
}
|
|
140
145
|
}
|
|
141
146
|
|
package/dist/types.d.ts
CHANGED
|
@@ -78,9 +78,9 @@ export declare abstract class IDumiTechStack {
|
|
|
78
78
|
*/
|
|
79
79
|
abstract generatePreviewerProps?(props: IDumiDemoProps['previewerProps'], opts: Parameters<NonNullable<IDumiTechStack['generateMetadata']>>[1]): Promise<IDumiDemoProps['previewerProps']> | IDumiDemoProps['previewerProps'];
|
|
80
80
|
/**
|
|
81
|
-
* generator for return file path of demo
|
|
81
|
+
* generator for return file path of demo source
|
|
82
82
|
*/
|
|
83
|
-
abstract generateSources?(
|
|
83
|
+
abstract generateSources?(source: IParsedBlockAsset['resolveMap'], opts: Parameters<NonNullable<IDumiTechStack['generateMetadata']>>[1]): Promise<IParsedBlockAsset['resolveMap']> | IParsedBlockAsset['resolveMap'];
|
|
84
84
|
}
|
|
85
85
|
export type IApi = IUmiApi & {
|
|
86
86
|
config: IDumiConfig & {
|
package/package.json
CHANGED
|
@@ -21,7 +21,7 @@ var Previewer = function Previewer(props) {
|
|
|
21
21
|
var _useLiveDemo = useLiveDemo(props.asset.id),
|
|
22
22
|
liveDemoNode = _useLiveDemo.node,
|
|
23
23
|
liveDemoError = _useLiveDemo.error,
|
|
24
|
-
|
|
24
|
+
setLiveDemoSource = _useLiveDemo.setSource;
|
|
25
25
|
var _useState = useState(null),
|
|
26
26
|
_useState2 = _slicedToArray(_useState, 2),
|
|
27
27
|
editorError = _useState2[0],
|
|
@@ -61,18 +61,18 @@ var Previewer = function Previewer(props) {
|
|
|
61
61
|
__html: props.description
|
|
62
62
|
}
|
|
63
63
|
})), /*#__PURE__*/React.createElement(PreviewerActions, _extends({}, props, {
|
|
64
|
-
|
|
64
|
+
onSourceTranspile: function onSourceTranspile(_ref) {
|
|
65
65
|
var err = _ref.err,
|
|
66
|
-
|
|
66
|
+
source = _ref.source;
|
|
67
67
|
if (err) {
|
|
68
68
|
setEditorError(err);
|
|
69
69
|
} else {
|
|
70
70
|
setEditorError(null);
|
|
71
|
-
|
|
71
|
+
setLiveDemoSource(source);
|
|
72
72
|
if (props.iframe) {
|
|
73
73
|
demoContainer.current.querySelector('iframe').contentWindow.postMessage({
|
|
74
|
-
type: 'dumi.liveDemo.
|
|
75
|
-
value:
|
|
74
|
+
type: 'dumi.liveDemo.setSource',
|
|
75
|
+
value: source
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -9,12 +9,12 @@ export interface IPreviewerActionsProps extends IPreviewerProps {
|
|
|
9
9
|
extra?: ReactNode;
|
|
10
10
|
forceShowCode?: boolean;
|
|
11
11
|
demoContainer: HTMLDivElement | HTMLIFrameElement;
|
|
12
|
-
|
|
12
|
+
onSourceTranspile?: (args: {
|
|
13
13
|
err: Error;
|
|
14
|
-
|
|
14
|
+
source?: null;
|
|
15
15
|
} | {
|
|
16
16
|
err?: null;
|
|
17
|
-
|
|
17
|
+
source: Record<string, string>;
|
|
18
18
|
}) => void;
|
|
19
19
|
}
|
|
20
20
|
declare const PreviewerActions: FC<IPreviewerActionsProps>;
|
|
@@ -182,14 +182,14 @@ var PreviewerActions = function PreviewerActions(props) {
|
|
|
182
182
|
var err = _ref5.err,
|
|
183
183
|
code = _ref5.code;
|
|
184
184
|
if (err) {
|
|
185
|
-
var _props$
|
|
186
|
-
(_props$
|
|
185
|
+
var _props$onSourceTransp;
|
|
186
|
+
(_props$onSourceTransp = props.onSourceTranspile) === null || _props$onSourceTransp === void 0 ? void 0 : _props$onSourceTransp.call(props, {
|
|
187
187
|
err: err
|
|
188
188
|
});
|
|
189
189
|
} else {
|
|
190
|
-
var _props$
|
|
191
|
-
(_props$
|
|
192
|
-
|
|
190
|
+
var _props$onSourceTransp2;
|
|
191
|
+
(_props$onSourceTransp2 = props.onSourceTranspile) === null || _props$onSourceTransp2 === void 0 ? void 0 : _props$onSourceTransp2.call(props, {
|
|
192
|
+
source: _defineProperty({}, files[i][0], code)
|
|
193
193
|
});
|
|
194
194
|
}
|
|
195
195
|
},
|