@antv/dumi-theme-antv 0.7.5 → 0.7.6-beta.0
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/locales/en.json +2 -0
- package/dist/locales/zh.json +2 -0
- package/dist/plugin/rehypeObservable.js +1 -1
- package/dist/slots/Footer/index.js +6 -2
- package/dist/slots/Header/index.js +26 -8
- package/dist/slots/{ManualContent/Preview.js → LiveExample/index.js} +209 -198
- package/dist/slots/ManualContent/index.module.less +1 -0
- package/dist/slots/ManualContent/usePreview.js +30 -14
- package/dist/slots/ManualContent/utils.js +18 -1
- package/package.json +3 -2
- /package/dist/slots/{ManualContent/Preview.module.less → LiveExample/index.module.less} +0 -0
package/dist/locales/en.json
CHANGED
|
@@ -132,6 +132,7 @@
|
|
|
132
132
|
"React Hooks 库": "React Hooks Library",
|
|
133
133
|
"设计动效": "Motion Solution",
|
|
134
134
|
"社区": "Community",
|
|
135
|
+
"资源": "Resource",
|
|
135
136
|
"StackOverflow": "StackOverflow",
|
|
136
137
|
"体验科技专栏": "Ant Financial Experience Tech",
|
|
137
138
|
"帮助": "Help",
|
|
@@ -175,5 +176,6 @@
|
|
|
175
176
|
"语雀": "Yuque",
|
|
176
177
|
"企业级 Node 开发框架": "Enterprise-class Node development framework",
|
|
177
178
|
"Sketch 工具集": "Sketch Tool set",
|
|
179
|
+
"互动图形解决方案": "Interactive solution",
|
|
178
180
|
"蚂蚁体验科技": "Liven Experience technology"
|
|
179
181
|
}
|
package/dist/locales/zh.json
CHANGED
|
@@ -131,6 +131,7 @@
|
|
|
131
131
|
"React Hooks 库": "React Hooks 库",
|
|
132
132
|
"设计动效": "设计动效",
|
|
133
133
|
"社区": "社区",
|
|
134
|
+
"资源": "资源",
|
|
134
135
|
"StackOverflow": "StackOverflow",
|
|
135
136
|
"体验科技专栏": "体验科技专栏",
|
|
136
137
|
"帮助": "帮助",
|
|
@@ -174,5 +175,6 @@
|
|
|
174
175
|
"语雀": "语雀",
|
|
175
176
|
"企业级 Node 开发框架": "企业级 Node 开发框架",
|
|
176
177
|
"Sketch 工具集": "Sketch 工具集",
|
|
178
|
+
"互动图形解决方案": "互动图形解决方案",
|
|
177
179
|
"蚂蚁体验科技": "蚂蚁体验科技"
|
|
178
180
|
}
|
|
@@ -38,7 +38,9 @@ var Footer = function Footer(props) {
|
|
|
38
38
|
var getColumns = function getColumns() {
|
|
39
39
|
// 如果外部没有传入 columns,则默认展示 antv footer
|
|
40
40
|
var col1 = {
|
|
41
|
-
title:
|
|
41
|
+
title: /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
42
|
+
id: "\u8D44\u6E90"
|
|
43
|
+
}),
|
|
42
44
|
items: [{
|
|
43
45
|
title: 'Ant Design',
|
|
44
46
|
url: 'https://ant.design',
|
|
@@ -178,7 +180,9 @@ var Footer = function Footer(props) {
|
|
|
178
180
|
alt: "Galacean"
|
|
179
181
|
}),
|
|
180
182
|
title: 'Galacean',
|
|
181
|
-
description:
|
|
183
|
+
description: /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
184
|
+
id: "\u4E92\u52A8\u56FE\u5F62\u89E3\u51B3\u65B9\u6848"
|
|
185
|
+
}),
|
|
182
186
|
url: 'https://galacean.antgroup.com/',
|
|
183
187
|
openExternal: true
|
|
184
188
|
}, {
|
|
@@ -18,7 +18,7 @@ import { Alert, Button, Dropdown, Menu, Modal, Popover } from 'antd';
|
|
|
18
18
|
import cx from 'classnames';
|
|
19
19
|
import { FormattedMessage, Link, useLocale, useSiteData } from 'dumi';
|
|
20
20
|
import { get, map, size } from 'lodash-es';
|
|
21
|
-
import React, { useEffect, useState } from 'react';
|
|
21
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
22
22
|
import { useMedia } from 'react-use';
|
|
23
23
|
import { getPurePathname } from "../../utils/location";
|
|
24
24
|
import { ic, icWithLocale } from "../hooks";
|
|
@@ -53,6 +53,9 @@ var HeaderComponent = function HeaderComponent(_ref) {
|
|
|
53
53
|
showAntVProductsCard = _ref$showAntVProducts === void 0 ? true : _ref$showAntVProducts,
|
|
54
54
|
_ref$showLanguageSwit = _ref.showLanguageSwitcher,
|
|
55
55
|
showLanguageSwitcher = _ref$showLanguageSwit === void 0 ? true : _ref$showLanguageSwit,
|
|
56
|
+
_ref$showWeavefox = _ref.showWeavefox,
|
|
57
|
+
showWeavefox = _ref$showWeavefox === void 0 ? {} : _ref$showWeavefox,
|
|
58
|
+
isInternalUser = _ref.isInternalUser,
|
|
56
59
|
logo = _ref.logo,
|
|
57
60
|
onLanguageChange = _ref.onLanguageChange,
|
|
58
61
|
_ref$showWxQrcode = _ref.showWxQrcode,
|
|
@@ -182,13 +185,25 @@ var HeaderComponent = function HeaderComponent(_ref) {
|
|
|
182
185
|
var handleSwitchLanguage = function handleSwitchLanguage() {
|
|
183
186
|
onLanguageChange === null || onLanguageChange === void 0 || onLanguageChange(lang);
|
|
184
187
|
};
|
|
188
|
+
var weavefox = useMemo(function () {
|
|
189
|
+
var configKey = isInternalUser ? 'internal' : 'public';
|
|
190
|
+
var configValue = showWeavefox[configKey];
|
|
191
|
+
if (!configValue) return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
192
|
+
var defaultLink = isInternalUser ? 'https://weavefox.antgroup-inc.cn/agent/@huiyu.zjt/AntV' : 'https://weavefox.alipay.com/agent/@ufox-b8tydq-0758/202505AP7vfl00422922';
|
|
193
|
+
var href = typeof configValue === 'string' ? configValue : defaultLink;
|
|
194
|
+
return /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("a", {
|
|
195
|
+
href: href,
|
|
196
|
+
target: "_blank",
|
|
197
|
+
rel: "noreferrer"
|
|
198
|
+
}, "AI\u751F\u7801"));
|
|
199
|
+
}, [isInternalUser, showWeavefox]);
|
|
185
200
|
var menu = /*#__PURE__*/React.createElement("ul", {
|
|
186
201
|
className: cx(styles.menu, _defineProperty(_defineProperty({}, styles.popup, !isWide), styles.popupHidden, !popupMenuVisible))
|
|
187
202
|
}, /** 最左侧的菜单,一般是 教程、API、示例,或者其他自定义,有配置文件中的 `navs` 决定 */
|
|
188
203
|
size(navs) ? /*#__PURE__*/React.createElement(Navs, {
|
|
189
204
|
navs: navs,
|
|
190
205
|
path: pathname
|
|
191
|
-
}) : null, /** 生态产品 */
|
|
206
|
+
}) : null, weavefox, /** 生态产品 */
|
|
192
207
|
size(ecosystems) ? /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement(Dropdown, {
|
|
193
208
|
className: styles.ecoSystems,
|
|
194
209
|
overlay: /*#__PURE__*/React.createElement(Menu, null, map(ecosystems, function (_ref2) {
|
|
@@ -428,7 +443,8 @@ var Header = function Header(props) {
|
|
|
428
443
|
docsearchOptions = themeConfig.docsearchOptions,
|
|
429
444
|
announcement = themeConfig.announcement,
|
|
430
445
|
petercat = themeConfig.petercat,
|
|
431
|
-
links = themeConfig.links
|
|
446
|
+
links = themeConfig.links,
|
|
447
|
+
showWeavefox = themeConfig.showWeavefox;
|
|
432
448
|
var searchOptions = {
|
|
433
449
|
docsearchOptions: docsearchOptions
|
|
434
450
|
};
|
|
@@ -436,6 +452,10 @@ var Header = function Header(props) {
|
|
|
436
452
|
pathname = _useLocation2.pathname;
|
|
437
453
|
var isHomePage = ['/', ''].includes(getPurePathname(pathname));
|
|
438
454
|
var lang = useLocale().id;
|
|
455
|
+
var _useState9 = useState(undefined),
|
|
456
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
457
|
+
isInternalUser = _useState10[0],
|
|
458
|
+
setIsInternalUser = _useState10[1];
|
|
439
459
|
var headerProps = {
|
|
440
460
|
subTitle: icWithLocale(title, lang),
|
|
441
461
|
subTitleHref: subTitleHref,
|
|
@@ -458,12 +478,10 @@ var Header = function Header(props) {
|
|
|
458
478
|
isHomePage: isHomePage,
|
|
459
479
|
transparent: isHomePage && isAntVSite,
|
|
460
480
|
announcement: announcement,
|
|
461
|
-
petercat: petercat
|
|
481
|
+
petercat: petercat,
|
|
482
|
+
showWeavefox: showWeavefox,
|
|
483
|
+
isInternalUser: isInternalUser
|
|
462
484
|
};
|
|
463
|
-
var _useState9 = useState(undefined),
|
|
464
|
-
_useState10 = _slicedToArray(_useState9, 2),
|
|
465
|
-
isInternalUser = _useState10[0],
|
|
466
|
-
setIsInternalUser = _useState10[1];
|
|
467
485
|
var isPetercatShow = petercat === null || petercat === void 0 ? void 0 : petercat.show;
|
|
468
486
|
useEffect(function () {
|
|
469
487
|
var checkUserType = /*#__PURE__*/function () {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
1
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
2
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
3
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
4
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
5
5
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
6
6
|
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."); }
|
|
7
7
|
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); }
|
|
@@ -9,233 +9,244 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
9
9
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
10
10
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
11
11
|
import { PlayCircleOutlined, PushpinOutlined } from '@ant-design/icons';
|
|
12
|
-
import
|
|
13
|
-
import styles from "./Preview.module.less";
|
|
14
|
-
import { safeEval } from "./utils";
|
|
15
|
-
import { compile } from "../CodeEditor/utils";
|
|
12
|
+
import SourceCodeEditor from 'dumi/theme-default/slots/SourceCodeEditor';
|
|
16
13
|
import { uniqueId } from 'lodash-es';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
var
|
|
32
|
-
return d ? parseInt(d) : 0;
|
|
33
|
-
};
|
|
34
|
-
var style = getComputedStyle(dom);
|
|
35
|
-
var wrapperWidth = dom.clientWidth || parseInt10(style.width);
|
|
36
|
-
var wrapperHeight = dom.clientHeight || parseInt10(style.height);
|
|
37
|
-
return {
|
|
38
|
-
width: wrapperWidth,
|
|
39
|
-
height: wrapperHeight
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export var Preview = function Preview(_ref) {
|
|
43
|
-
var source = _ref.source,
|
|
44
|
-
code = _ref.code,
|
|
45
|
-
_ref$pin = _ref.pin,
|
|
46
|
-
pin = _ref$pin === void 0 ? true : _ref$pin,
|
|
47
|
-
_ref$autoMount = _ref.autoMount,
|
|
48
|
-
autoMount = _ref$autoMount === void 0 ? false : _ref$autoMount;
|
|
49
|
-
var containerRef = useRef(null);
|
|
50
|
-
var ulRef = useRef(null);
|
|
51
|
-
var nodeRef = useRef(null);
|
|
52
|
-
var _useState = useState(false),
|
|
14
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
15
|
+
import { compile } from "../CodeEditor/utils";
|
|
16
|
+
import { safeEval } from "../ManualContent/utils";
|
|
17
|
+
import styles from "./index.module.less";
|
|
18
|
+
export default function LiveExample(props) {
|
|
19
|
+
var initialSource = props.source,
|
|
20
|
+
lang = props.lang,
|
|
21
|
+
_props$inject = props.inject,
|
|
22
|
+
inject = _props$inject === void 0 ? false : _props$inject,
|
|
23
|
+
_props$pin = props.pin,
|
|
24
|
+
pin = _props$pin === void 0 ? true : _props$pin;
|
|
25
|
+
var previewRef = useRef(null);
|
|
26
|
+
var codeRef = useRef(null);
|
|
27
|
+
var toolbarRef = useRef(null);
|
|
28
|
+
var _useState = useState(initialSource),
|
|
53
29
|
_useState2 = _slicedToArray(_useState, 2),
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
var _useState3 = useState(
|
|
30
|
+
sourceCode = _useState2[0],
|
|
31
|
+
setSourceCode = _useState2[1];
|
|
32
|
+
var _useState3 = useState({
|
|
33
|
+
isLoading: false,
|
|
34
|
+
error: null
|
|
35
|
+
}),
|
|
57
36
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
var _useState5 = useState(
|
|
37
|
+
executionState = _useState4[0],
|
|
38
|
+
setExecutionState = _useState4[1];
|
|
39
|
+
var _useState5 = useState(pin !== false),
|
|
61
40
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
var _useState7 = useState(
|
|
41
|
+
isCodeVisible = _useState6[0],
|
|
42
|
+
setIsCodeVisible = _useState6[1];
|
|
43
|
+
var _useState7 = useState(function () {
|
|
44
|
+
return "live-example-".concat(uniqueId());
|
|
45
|
+
}),
|
|
65
46
|
_useState8 = _slicedToArray(_useState7, 1),
|
|
66
|
-
|
|
67
|
-
function
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
47
|
+
containerId = _useState8[0];
|
|
48
|
+
var clearPreviewContainer = useCallback(function () {
|
|
49
|
+
if (previewRef.current) {
|
|
50
|
+
previewRef.current.innerHTML = '';
|
|
51
|
+
}
|
|
52
|
+
}, []);
|
|
53
|
+
var showError = useCallback(function (message) {
|
|
54
|
+
if (previewRef.current) {
|
|
55
|
+
previewRef.current.innerHTML = "\n <div style=\"color: #fb1716; padding: 8px; border-left: 3px solid #ff0000; padding-left: 12px;\">\n ".concat(message, "\n </div>\n ");
|
|
56
|
+
}
|
|
57
|
+
}, []);
|
|
58
|
+
var renderResult = useCallback(function (value) {
|
|
59
|
+
var container = previewRef.current;
|
|
60
|
+
if (!container) {
|
|
61
|
+
console.warn('渲染结果时容器不存在');
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (value instanceof HTMLElement || value instanceof SVGElement || value && _typeof(value) === 'object' && value.nodeType) {
|
|
65
|
+
container.appendChild(value);
|
|
66
|
+
} else if (value !== null && value !== undefined) {
|
|
67
|
+
var div = document.createElement('div');
|
|
68
|
+
div.textContent = String(value);
|
|
69
|
+
container.appendChild(div);
|
|
70
|
+
}
|
|
71
|
+
}, []);
|
|
71
72
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
// Inject模式:编译并注入代码
|
|
74
|
+
var executeInjectMode = useCallback(function (code) {
|
|
75
|
+
// 编译代码
|
|
76
|
+
var compiledCode;
|
|
77
|
+
try {
|
|
78
|
+
compiledCode = compile(code, '', true);
|
|
79
|
+
} catch (compileError) {
|
|
80
|
+
var errorMessage = compileError instanceof Error ? compileError.message : String(compileError);
|
|
81
|
+
showError("Compile Error: ".concat(errorMessage));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// 清理容器并注入代码
|
|
86
|
+
clearPreviewContainer();
|
|
87
|
+
var container = previewRef.current;
|
|
88
|
+
container.innerHTML = "<div id=\"".concat(containerId, "\" style=\"width: 100%; height: 100%;\"></div>");
|
|
89
|
+
|
|
90
|
+
// 创建并注入脚本
|
|
76
91
|
var script = document.createElement('script');
|
|
77
|
-
var modifiedCode =
|
|
78
|
-
script.innerHTML =
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
var modifiedCode = compiledCode.replace(/'container'|"container"/g, "'".concat(containerId, "'"));
|
|
93
|
+
script.textContent = "\n try {\n ".concat(modifiedCode, "\n } catch (error) {\n console.error('\u811A\u672C\u6267\u884C\u65F6\u53D1\u751F\u9519\u8BEF:', error);\n const errorContainer = document.getElementById('").concat(containerId, "');\n if (errorContainer) {\n errorContainer.innerHTML = '<div style=\"color: #fb1716; padding: 8px; border-left: 3px solid #ff0000; padding-left: 12px;\">Runtime Error: ' + error.message + '</div>';\n }\n }\n ");
|
|
94
|
+
document.head.appendChild(script);
|
|
95
|
+
|
|
96
|
+
// 延迟清理脚本
|
|
97
|
+
setTimeout(function () {
|
|
98
|
+
if (script.parentNode) {
|
|
99
|
+
script.parentNode.removeChild(script);
|
|
100
|
+
}
|
|
101
|
+
}, 100);
|
|
102
|
+
}, [containerId, clearPreviewContainer, showError]);
|
|
103
|
+
|
|
104
|
+
// Direct模式:直接执行代码
|
|
105
|
+
var executeDirectMode = useCallback(function (code) {
|
|
106
|
+
clearPreviewContainer();
|
|
107
|
+
var result = safeEval(code);
|
|
108
|
+
|
|
109
|
+
// 处理Promise结果
|
|
110
|
+
if (result && typeof result.then === 'function') {
|
|
111
|
+
result.then(function (resolvedValue) {
|
|
112
|
+
renderResult(resolvedValue);
|
|
113
|
+
}).catch(function (error) {
|
|
114
|
+
showError("Promise Error: ".concat(error.message || String(error)));
|
|
115
|
+
});
|
|
116
|
+
} else {
|
|
117
|
+
renderResult(result);
|
|
118
|
+
}
|
|
119
|
+
}, [clearPreviewContainer, renderResult, showError]);
|
|
120
|
+
|
|
121
|
+
// 主执行函数
|
|
122
|
+
var execute = useCallback( /*#__PURE__*/function () {
|
|
123
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(code) {
|
|
124
|
+
var errorMessage;
|
|
88
125
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
89
126
|
while (1) switch (_context.prev = _context.next) {
|
|
90
127
|
case 0:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
128
|
+
setExecutionState({
|
|
129
|
+
isLoading: true,
|
|
130
|
+
error: null
|
|
131
|
+
});
|
|
132
|
+
try {
|
|
133
|
+
if (inject) {
|
|
134
|
+
executeInjectMode(code);
|
|
135
|
+
} else {
|
|
136
|
+
executeDirectMode(code);
|
|
137
|
+
}
|
|
138
|
+
setExecutionState({
|
|
139
|
+
isLoading: false,
|
|
140
|
+
error: null
|
|
141
|
+
});
|
|
142
|
+
} catch (error) {
|
|
143
|
+
errorMessage = error instanceof Error ? error.message : String(error);
|
|
144
|
+
setExecutionState({
|
|
145
|
+
isLoading: false,
|
|
146
|
+
error: errorMessage
|
|
147
|
+
});
|
|
148
|
+
showError("Execution Error: ".concat(errorMessage));
|
|
97
149
|
}
|
|
98
|
-
|
|
99
|
-
compiledCode = compile(source, '', true); // 为每个脚本容器生成唯一ID
|
|
100
|
-
scriptContainerId = "script_container_".concat(uniqueId());
|
|
101
|
-
containerNode = executeScript(compiledCode, scriptContainerId);
|
|
102
|
-
_node = containerNode;
|
|
103
|
-
_context.next = 17;
|
|
104
|
-
break;
|
|
105
|
-
case 10:
|
|
106
|
-
// 自执行函数
|
|
107
|
-
value = safeEval(source);
|
|
108
|
-
if (value instanceof Promise) setLoading(true);
|
|
109
|
-
rendered = normalizeValue(value);
|
|
110
|
-
_context.next = 15;
|
|
111
|
-
return rendered;
|
|
112
|
-
case 15:
|
|
113
|
-
n = _context.sent;
|
|
114
|
-
_node = normalizeDOM(n);
|
|
115
|
-
case 17:
|
|
116
|
-
setNode(_node);
|
|
117
|
-
setLoading(false);
|
|
118
|
-
_context.next = 26;
|
|
119
|
-
break;
|
|
120
|
-
case 21:
|
|
121
|
-
_context.prev = 21;
|
|
122
|
-
_context.t0 = _context["catch"](1);
|
|
123
|
-
setLoading(false);
|
|
124
|
-
setError(_context.t0);
|
|
125
|
-
console.error(_context.t0);
|
|
126
|
-
case 26:
|
|
150
|
+
case 2:
|
|
127
151
|
case "end":
|
|
128
152
|
return _context.stop();
|
|
129
153
|
}
|
|
130
|
-
}, _callee
|
|
154
|
+
}, _callee);
|
|
131
155
|
}));
|
|
132
|
-
return
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
code.style.display = 'none';
|
|
137
|
-
} else {
|
|
138
|
-
code.style.display = 'block';
|
|
139
|
-
}
|
|
140
|
-
updateToolHeight();
|
|
141
|
-
}
|
|
142
|
-
function onRun() {
|
|
143
|
-
execute(source);
|
|
144
|
-
}
|
|
145
|
-
function updateToolHeight() {
|
|
146
|
-
if (!ulRef.current || !containerRef.current) return;
|
|
147
|
-
var _sizeOf = sizeOf(code),
|
|
148
|
-
codeHeight = _sizeOf.height;
|
|
149
|
-
var _sizeOf2 = sizeOf(containerRef.current),
|
|
150
|
-
nodeHeight = _sizeOf2.height;
|
|
151
|
-
var height = codeHeight + nodeHeight;
|
|
152
|
-
ulRef.current.style.height = height + 'px';
|
|
153
|
-
}
|
|
156
|
+
return function (_x) {
|
|
157
|
+
return _ref.apply(this, arguments);
|
|
158
|
+
};
|
|
159
|
+
}(), [inject, executeInjectMode, executeDirectMode, showError]);
|
|
154
160
|
|
|
155
|
-
//
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
161
|
+
// 工具栏高度更新
|
|
162
|
+
var updateToolbarHeight = useCallback(function () {
|
|
163
|
+
if (!toolbarRef.current || !previewRef.current || !codeRef.current) return;
|
|
164
|
+
var codeHeight = codeRef.current.clientHeight;
|
|
165
|
+
var previewHeight = previewRef.current.clientHeight;
|
|
166
|
+
toolbarRef.current.style.height = "".concat(codeHeight + previewHeight, "px");
|
|
167
|
+
}, []);
|
|
159
168
|
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
if (oldChild) {
|
|
168
|
-
oldChild.replaceWith(node);
|
|
169
|
-
} else {
|
|
170
|
-
containerRef.current.appendChild(node);
|
|
171
|
-
}
|
|
172
|
-
updateToolHeight();
|
|
169
|
+
// 事件处理函数
|
|
170
|
+
var toggleCodeVisibility = useCallback(function () {
|
|
171
|
+
var visible = !isCodeVisible;
|
|
172
|
+
setIsCodeVisible(visible);
|
|
173
|
+
if (codeRef.current) {
|
|
174
|
+
codeRef.current.style.display = visible ? 'block' : 'none';
|
|
175
|
+
setTimeout(updateToolbarHeight, 0);
|
|
173
176
|
}
|
|
174
|
-
}, [
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
return (_nodeRef$current2 = nodeRef.current) === null || _nodeRef$current2 === void 0 || (_nodeRef$current2$cle = _nodeRef$current2.clear) === null || _nodeRef$current2$cle === void 0 ? void 0 : _nodeRef$current2$cle.call(_nodeRef$current2);
|
|
181
|
-
};
|
|
177
|
+
}, [isCodeVisible, updateToolbarHeight]);
|
|
178
|
+
var handleRunCode = useCallback(function () {
|
|
179
|
+
execute(sourceCode);
|
|
180
|
+
}, [execute, sourceCode]);
|
|
181
|
+
var handleSourceChange = useCallback(function (code) {
|
|
182
|
+
setSourceCode(code);
|
|
182
183
|
}, []);
|
|
183
184
|
|
|
184
|
-
//
|
|
185
|
+
// Effects
|
|
185
186
|
useEffect(function () {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}, [pin, code]);
|
|
189
|
-
|
|
190
|
-
// 暂时和隐藏 toolbar
|
|
187
|
+
execute(sourceCode);
|
|
188
|
+
}, [execute, sourceCode]);
|
|
191
189
|
useEffect(function () {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
190
|
+
setTimeout(updateToolbarHeight, 100);
|
|
191
|
+
}, [executionState, updateToolbarHeight]);
|
|
192
|
+
useEffect(function () {
|
|
193
|
+
if (!codeRef.current) return;
|
|
194
|
+
if (pin === false) {
|
|
195
|
+
codeRef.current.style.display = 'none';
|
|
196
|
+
setIsCodeVisible(false);
|
|
197
|
+
}
|
|
198
|
+
}, [pin]);
|
|
199
|
+
useEffect(function () {
|
|
200
|
+
var handleMouseEnter = function handleMouseEnter() {
|
|
201
|
+
if (!toolbarRef.current || !codeRef.current) return;
|
|
202
|
+
toolbarRef.current.style.display = 'block';
|
|
203
|
+
codeRef.current.style.borderRadius = '0px';
|
|
204
|
+
setTimeout(updateToolbarHeight, 0);
|
|
199
205
|
};
|
|
200
|
-
var
|
|
201
|
-
if (
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
code.style.borderTopLeftRadius = '';
|
|
205
|
-
}
|
|
206
|
+
var handleMouseLeave = function handleMouseLeave() {
|
|
207
|
+
if (!toolbarRef.current || !codeRef.current) return;
|
|
208
|
+
toolbarRef.current.style.display = '';
|
|
209
|
+
codeRef.current.style.borderRadius = '';
|
|
206
210
|
};
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
211
|
+
var codeEditor = codeRef.current;
|
|
212
|
+
var previewContainer = previewRef.current;
|
|
213
|
+
codeEditor === null || codeEditor === void 0 || codeEditor.addEventListener('mouseenter', handleMouseEnter);
|
|
214
|
+
codeEditor === null || codeEditor === void 0 || codeEditor.addEventListener('mouseleave', handleMouseLeave);
|
|
215
|
+
previewContainer === null || previewContainer === void 0 || previewContainer.addEventListener('mouseenter', handleMouseEnter);
|
|
216
|
+
previewContainer === null || previewContainer === void 0 || previewContainer.addEventListener('mouseleave', handleMouseLeave);
|
|
213
217
|
return function () {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
containerRef.current.removeEventListener('mouseleave', leave);
|
|
219
|
-
}
|
|
218
|
+
codeEditor === null || codeEditor === void 0 || codeEditor.removeEventListener('mouseenter', handleMouseEnter);
|
|
219
|
+
codeEditor === null || codeEditor === void 0 || codeEditor.removeEventListener('mouseleave', handleMouseLeave);
|
|
220
|
+
previewContainer === null || previewContainer === void 0 || previewContainer.removeEventListener('mouseenter', handleMouseEnter);
|
|
221
|
+
previewContainer === null || previewContainer === void 0 || previewContainer.removeEventListener('mouseleave', handleMouseLeave);
|
|
220
222
|
};
|
|
221
|
-
}, [
|
|
223
|
+
}, [updateToolbarHeight]);
|
|
222
224
|
return /*#__PURE__*/React.createElement("div", {
|
|
223
225
|
className: styles.preview
|
|
224
|
-
},
|
|
226
|
+
}, executionState.isLoading ? /*#__PURE__*/React.createElement("div", {
|
|
225
227
|
className: styles.loading
|
|
226
|
-
}, "
|
|
227
|
-
ref:
|
|
228
|
+
}, "Executing...") : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
229
|
+
ref: previewRef,
|
|
228
230
|
className: styles.main
|
|
229
|
-
},
|
|
230
|
-
className: styles.error
|
|
231
|
-
}, error.toString())), /*#__PURE__*/React.createElement("ul", {
|
|
231
|
+
}), /*#__PURE__*/React.createElement("ul", {
|
|
232
232
|
className: styles.ul,
|
|
233
|
-
ref:
|
|
233
|
+
ref: toolbarRef
|
|
234
234
|
}, /*#__PURE__*/React.createElement("li", {
|
|
235
|
-
onClick:
|
|
236
|
-
className: styles.li
|
|
235
|
+
onClick: toggleCodeVisibility,
|
|
236
|
+
className: styles.li,
|
|
237
|
+
title: "Toggle Code Editor"
|
|
237
238
|
}, /*#__PURE__*/React.createElement(PushpinOutlined, null)), /*#__PURE__*/React.createElement("li", {
|
|
238
|
-
onClick:
|
|
239
|
-
className: styles.li
|
|
240
|
-
|
|
241
|
-
}
|
|
239
|
+
onClick: handleRunCode,
|
|
240
|
+
className: styles.li,
|
|
241
|
+
title: "Run Code"
|
|
242
|
+
}, /*#__PURE__*/React.createElement(PlayCircleOutlined, null)))), /*#__PURE__*/React.createElement("div", {
|
|
243
|
+
ref: codeRef,
|
|
244
|
+
style: {
|
|
245
|
+
display: isCodeVisible ? 'block' : 'none'
|
|
246
|
+
}
|
|
247
|
+
}, /*#__PURE__*/React.createElement(SourceCodeEditor, {
|
|
248
|
+
onChange: handleSourceChange,
|
|
249
|
+
initialValue: sourceCode,
|
|
250
|
+
lang: lang
|
|
251
|
+
})));
|
|
252
|
+
}
|
|
@@ -3,17 +3,25 @@ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol
|
|
|
3
3
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
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
5
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
6
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
|
+
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; }
|
|
9
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
10
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
11
|
import React, { useEffect } from 'react';
|
|
7
12
|
import { createRoot } from 'react-dom/client';
|
|
8
|
-
import
|
|
13
|
+
import LiveExample from "dumi/theme/slots/LiveExample";
|
|
9
14
|
import { safeEval } from "./utils";
|
|
10
15
|
function optionsOf(p) {
|
|
11
16
|
try {
|
|
12
17
|
var _meta$match;
|
|
13
18
|
var meta = p.getAttribute('meta');
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
var lang = p.getAttribute('lang');
|
|
20
|
+
var matched = (_meta$match = meta.match(/\|\s*ob\s*({.*})/)) === null || _meta$match === void 0 ? void 0 : _meta$match[1];
|
|
21
|
+
var obOptions = matched ? safeEval(matched) : {};
|
|
22
|
+
return _objectSpread(_objectSpread({}, obOptions), {}, {
|
|
23
|
+
lang: lang
|
|
24
|
+
});
|
|
17
25
|
} catch (e) {
|
|
18
26
|
console.error(e);
|
|
19
27
|
return {};
|
|
@@ -21,12 +29,20 @@ function optionsOf(p) {
|
|
|
21
29
|
}
|
|
22
30
|
function sourceOf(block) {
|
|
23
31
|
var cloned = block.cloneNode(true);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
|
|
33
|
+
// 处理 Prism 语法高亮的 pre 元素
|
|
34
|
+
var preElement = cloned.querySelector('pre.prism-code');
|
|
35
|
+
if (preElement) {
|
|
36
|
+
var lines = Array.from(preElement.children);
|
|
37
|
+
var codeLines = lines.map(function (line) {
|
|
38
|
+
var lineElement = line;
|
|
39
|
+
return lineElement.innerText || lineElement.textContent || '';
|
|
40
|
+
});
|
|
41
|
+
var _code = codeLines.join('\n');
|
|
42
|
+
return _code.replace(/\n\s*\n\s*\n/g, '\n\n');
|
|
43
|
+
}
|
|
44
|
+
var code = cloned.textContent || '';
|
|
45
|
+
return code.replace(/\n\s*\n\s*\n/g, '\n\n');
|
|
30
46
|
}
|
|
31
47
|
function blockOf() {
|
|
32
48
|
if ((typeof document === "undefined" ? "undefined" : _typeof(document)) !== undefined && document) {
|
|
@@ -73,11 +89,11 @@ export function usePreview() {
|
|
|
73
89
|
var wrapper = document.createElement('div');
|
|
74
90
|
var _options = optionsOf(p);
|
|
75
91
|
var root = createRoot(wrapper);
|
|
76
|
-
root.render( /*#__PURE__*/React.createElement(
|
|
77
|
-
source: source
|
|
78
|
-
code: block
|
|
92
|
+
root.render( /*#__PURE__*/React.createElement(LiveExample, _extends({
|
|
93
|
+
source: source
|
|
79
94
|
}, _options)));
|
|
80
|
-
|
|
95
|
+
var container = block.parentElement;
|
|
96
|
+
container.replaceWith(wrapper);
|
|
81
97
|
W[i] = wrapper;
|
|
82
98
|
P[i] = p;
|
|
83
99
|
}
|
|
@@ -52,5 +52,22 @@ export function getNavigateUrl(pathname, first, siderbarMenu) {
|
|
|
52
52
|
return pathname;
|
|
53
53
|
}
|
|
54
54
|
export function safeEval(source) {
|
|
55
|
-
|
|
55
|
+
try {
|
|
56
|
+
// 如果代码以 (() => 或 (function 开头,说明是IIFE,直接执行
|
|
57
|
+
var trimmedSource = source.trim();
|
|
58
|
+
if (trimmedSource.startsWith('(') && (trimmedSource.includes('=>') || trimmedSource.includes('function'))) {
|
|
59
|
+
return new Function("return ".concat(source))();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// 尝试作为表达式执行
|
|
63
|
+
try {
|
|
64
|
+
return new Function("return ".concat(source))();
|
|
65
|
+
} catch (e) {
|
|
66
|
+
// 如果作为表达式失败,尝试作为语句执行
|
|
67
|
+
return new Function(source)();
|
|
68
|
+
}
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.error('代码执行错误:', error);
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
56
73
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antv/dumi-theme-antv",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.6-beta.0",
|
|
4
4
|
"description": "AntV website theme based on dumi2.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dumi",
|
|
@@ -145,7 +145,8 @@
|
|
|
145
145
|
"react-dom": ">=16.9.0"
|
|
146
146
|
},
|
|
147
147
|
"publishConfig": {
|
|
148
|
-
"access": "public"
|
|
148
|
+
"access": "public",
|
|
149
|
+
"tag": "beta"
|
|
149
150
|
},
|
|
150
151
|
"authors": [
|
|
151
152
|
"dumi",
|
|
File without changes
|