@depup/react-live 4.1.8-depup.0 → 5.0.0-depup.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/README.md +4 -11
- package/changes.json +3 -12
- package/dist/index.d.mts +166 -0
- package/dist/index.d.ts +152 -103
- package/dist/index.js +270 -381
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +244 -345
- package/dist/index.mjs.map +1 -1
- package/package.json +68 -92
package/dist/index.js
CHANGED
|
@@ -1,408 +1,297 @@
|
|
|
1
|
-
"
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region \0rolldown/runtime.js
|
|
2
3
|
var __create = Object.create;
|
|
3
4
|
var __defProp = Object.defineProperty;
|
|
4
|
-
var __defProps = Object.defineProperties;
|
|
5
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
10
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
-
var __spreadValues = (a, b) => {
|
|
14
|
-
for (var prop in b || (b = {}))
|
|
15
|
-
if (__hasOwnProp.call(b, prop))
|
|
16
|
-
__defNormalProp(a, prop, b[prop]);
|
|
17
|
-
if (__getOwnPropSymbols)
|
|
18
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
-
if (__propIsEnum.call(b, prop))
|
|
20
|
-
__defNormalProp(a, prop, b[prop]);
|
|
21
|
-
}
|
|
22
|
-
return a;
|
|
23
|
-
};
|
|
24
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
-
var __objRest = (source, exclude) => {
|
|
26
|
-
var target = {};
|
|
27
|
-
for (var prop in source)
|
|
28
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
29
|
-
target[prop] = source[prop];
|
|
30
|
-
if (source != null && __getOwnPropSymbols)
|
|
31
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
32
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
33
|
-
target[prop] = source[prop];
|
|
34
|
-
}
|
|
35
|
-
return target;
|
|
36
|
-
};
|
|
37
|
-
var __export = (target, all) => {
|
|
38
|
-
for (var name in all)
|
|
39
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
40
|
-
};
|
|
41
9
|
var __copyProps = (to, from, except, desc) => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
11
|
+
key = keys[i];
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
13
|
+
get: ((k) => from[k]).bind(null, key),
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
48
18
|
};
|
|
49
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
(0, import_react.useEffect)(() => {
|
|
105
|
-
setCode(props.code);
|
|
106
|
-
}, [props.code]);
|
|
107
|
-
(0, import_use_editable.useEditable)(
|
|
108
|
-
editorRef,
|
|
109
|
-
(text) => {
|
|
110
|
-
const t = text.slice(0, -1);
|
|
111
|
-
setCode(t);
|
|
112
|
-
if (props.onChange) {
|
|
113
|
-
props.onChange(t);
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
disabled: props.disabled,
|
|
118
|
-
indentation: tabMode === "indentation" ? 2 : void 0
|
|
119
|
-
}
|
|
120
|
-
);
|
|
121
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: props.className, style: props.style, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
122
|
-
import_prism_react_renderer.Highlight,
|
|
123
|
-
{
|
|
124
|
-
code,
|
|
125
|
-
theme: props.theme || import_prism_react_renderer.themes.nightOwl,
|
|
126
|
-
language: props.language,
|
|
127
|
-
children: ({
|
|
128
|
-
className: _className,
|
|
129
|
-
tokens,
|
|
130
|
-
getLineProps,
|
|
131
|
-
getTokenProps,
|
|
132
|
-
style: _style
|
|
133
|
-
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
134
|
-
"pre",
|
|
135
|
-
{
|
|
136
|
-
className: _className,
|
|
137
|
-
style: __spreadValues(__spreadValues({
|
|
138
|
-
margin: 0,
|
|
139
|
-
outline: "none",
|
|
140
|
-
padding: 10,
|
|
141
|
-
fontFamily: "inherit"
|
|
142
|
-
}, theme && typeof theme.plain === "object" ? theme.plain : {}), _style),
|
|
143
|
-
ref: editorRef,
|
|
144
|
-
spellCheck: "false",
|
|
145
|
-
children: tokens.map((line, lineIndex) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", __spreadProps(__spreadValues({}, getLineProps({ line })), { children: [
|
|
146
|
-
line.filter((token) => !token.empty).map((token, tokenIndex) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
147
|
-
"span",
|
|
148
|
-
__spreadValues({}, getTokenProps({ token })),
|
|
149
|
-
`token-${tokenIndex}`
|
|
150
|
-
)),
|
|
151
|
-
"\n"
|
|
152
|
-
] }), `line-${lineIndex}`))
|
|
153
|
-
}
|
|
154
|
-
)
|
|
155
|
-
}
|
|
156
|
-
) });
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
20
|
+
value: mod,
|
|
21
|
+
enumerable: true
|
|
22
|
+
}) : target, mod));
|
|
23
|
+
//#endregion
|
|
24
|
+
let prism_react_renderer = require("prism-react-renderer");
|
|
25
|
+
let react = require("react");
|
|
26
|
+
react = __toESM(react);
|
|
27
|
+
let use_editable = require("use-editable");
|
|
28
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
29
|
+
let sucrase = require("sucrase");
|
|
30
|
+
//#region src/components/Editor/index.tsx
|
|
31
|
+
const CodeEditor = (props) => {
|
|
32
|
+
const { tabMode = "indentation" } = props;
|
|
33
|
+
const editorRef = (0, react.useRef)(null);
|
|
34
|
+
const [code, setCode] = (0, react.useState)(props.code || "");
|
|
35
|
+
const { theme } = props;
|
|
36
|
+
(0, react.useEffect)(() => {
|
|
37
|
+
setCode(props.code);
|
|
38
|
+
}, [props.code]);
|
|
39
|
+
(0, use_editable.useEditable)(editorRef, (text) => {
|
|
40
|
+
const t = text.slice(0, -1);
|
|
41
|
+
setCode(t);
|
|
42
|
+
if (props.onChange) props.onChange(t);
|
|
43
|
+
}, {
|
|
44
|
+
disabled: props.disabled,
|
|
45
|
+
indentation: tabMode === "indentation" ? 2 : void 0
|
|
46
|
+
});
|
|
47
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
48
|
+
className: props.className,
|
|
49
|
+
style: props.style,
|
|
50
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(prism_react_renderer.Highlight, {
|
|
51
|
+
code,
|
|
52
|
+
theme: props.theme || prism_react_renderer.themes.nightOwl,
|
|
53
|
+
language: props.language,
|
|
54
|
+
prism: props.prism,
|
|
55
|
+
children: ({ className: _className, tokens, getLineProps, getTokenProps, style: _style }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
|
|
56
|
+
className: _className,
|
|
57
|
+
style: {
|
|
58
|
+
margin: 0,
|
|
59
|
+
outline: "none",
|
|
60
|
+
padding: 10,
|
|
61
|
+
fontFamily: "inherit",
|
|
62
|
+
...theme && typeof theme.plain === "object" ? theme.plain : {},
|
|
63
|
+
..._style
|
|
64
|
+
},
|
|
65
|
+
ref: editorRef,
|
|
66
|
+
spellCheck: "false",
|
|
67
|
+
children: tokens.map((line, lineIndex) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
68
|
+
...getLineProps({ line }),
|
|
69
|
+
children: [line.filter((token) => !token.empty).map((token, tokenIndex) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { ...getTokenProps({ token }) }, `token-${tokenIndex}`)), "\n"]
|
|
70
|
+
}, `line-${lineIndex}`))
|
|
71
|
+
})
|
|
72
|
+
})
|
|
73
|
+
});
|
|
157
74
|
};
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
var import_react2 = require("react");
|
|
165
|
-
var LiveContext = (0, import_react2.createContext)({});
|
|
166
|
-
var LiveContext_default = LiveContext;
|
|
167
|
-
|
|
168
|
-
// src/utils/transpile/index.ts
|
|
169
|
-
var import_react4 = __toESM(require("react"));
|
|
170
|
-
|
|
171
|
-
// src/utils/transpile/transform.ts
|
|
172
|
-
var import_sucrase = require("sucrase");
|
|
173
|
-
var defaultTransforms = ["jsx", "imports"];
|
|
75
|
+
//#endregion
|
|
76
|
+
//#region src/components/Live/LiveContext.ts
|
|
77
|
+
const LiveContext = (0, react.createContext)({});
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region src/utils/transpile/transform.ts
|
|
80
|
+
const defaultTransforms = ["jsx", "imports"];
|
|
174
81
|
function transform(opts = {}) {
|
|
175
|
-
|
|
176
|
-
|
|
82
|
+
const transforms = Array.isArray(opts.transforms) ? opts.transforms.filter(Boolean) : defaultTransforms;
|
|
83
|
+
return (code) => (0, sucrase.transform)(code, {
|
|
84
|
+
transforms,
|
|
85
|
+
production: true
|
|
86
|
+
}).code;
|
|
177
87
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
88
|
+
//#endregion
|
|
89
|
+
//#region src/utils/transpile/errorBoundary.tsx
|
|
90
|
+
const errorBoundary = (Element, errorCallback) => {
|
|
91
|
+
return class ErrorBoundary extends react.Component {
|
|
92
|
+
state = { hasError: false };
|
|
93
|
+
static getDerivedStateFromError() {
|
|
94
|
+
return { hasError: true };
|
|
95
|
+
}
|
|
96
|
+
componentDidCatch(error) {
|
|
97
|
+
errorCallback(error);
|
|
98
|
+
}
|
|
99
|
+
render() {
|
|
100
|
+
if (this.state.hasError) return null;
|
|
101
|
+
return typeof Element === "function" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Element, {}) : react.default.isValidElement(Element) ? Element : null;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
191
104
|
};
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
return new Function(...scopeKeys, code)(...scopeValues);
|
|
105
|
+
//#endregion
|
|
106
|
+
//#region src/utils/transpile/evalCode.ts
|
|
107
|
+
const evalCode = (code, scope) => {
|
|
108
|
+
const scopeKeys = Object.keys(scope);
|
|
109
|
+
const scopeValues = scopeKeys.map((key) => scope[key]);
|
|
110
|
+
return new Function(...scopeKeys, code)(...scopeValues);
|
|
199
111
|
};
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
112
|
+
//#endregion
|
|
113
|
+
//#region src/utils/transpile/compose.ts
|
|
114
|
+
/**
|
|
115
|
+
* Creates a new composite function that invokes the functions from right to left
|
|
116
|
+
*/
|
|
203
117
|
function compose(...functions) {
|
|
204
|
-
|
|
205
|
-
(acc, currentFn) => (...args) => acc(currentFn(...args))
|
|
206
|
-
);
|
|
118
|
+
return functions.reduce((acc, currentFn) => (...args) => acc(currentFn(...args)));
|
|
207
119
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
)(code);
|
|
227
|
-
return errorBoundary_default(
|
|
228
|
-
evalCode_default(transformed, __spreadValues({ React: import_react4.default }, scope)),
|
|
229
|
-
errorCallback
|
|
230
|
-
);
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/utils/transpile/index.ts
|
|
122
|
+
const trimCode = (code) => code.trim().replace(/;$/, "");
|
|
123
|
+
const wrapReturn = (code) => `return (${code})`;
|
|
124
|
+
const generateElement = ({ code = "", scope = {}, enableTypeScript = true }, errorCallback) => {
|
|
125
|
+
/**
|
|
126
|
+
* To enable TypeScript we need to transform the TS to JS code first,
|
|
127
|
+
* wrap the eval in a return statement, then transform any imports. The
|
|
128
|
+
* two-phase approach is required to do the implicit evaluation and not
|
|
129
|
+
* wrap leading Interface or Type statements in the return.
|
|
130
|
+
*/
|
|
131
|
+
const firstPassTransforms = ["jsx"];
|
|
132
|
+
if (enableTypeScript) firstPassTransforms.push("typescript");
|
|
133
|
+
const transformed = compose(transform({ transforms: ["imports"] }), trimCode, transform({ transforms: firstPassTransforms }), wrapReturn, trimCode)(code);
|
|
134
|
+
return errorBoundary(evalCode(transformed, {
|
|
135
|
+
React: react.default,
|
|
136
|
+
...scope
|
|
137
|
+
}), errorCallback);
|
|
231
138
|
};
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
const transforms = ["jsx", "imports"];
|
|
246
|
-
enableTypeScript && transforms.splice(1, 0, "typescript");
|
|
247
|
-
evalCode_default(transform({ transforms })(code), __spreadProps(__spreadValues({ React: import_react4.default }, scope), { render }));
|
|
139
|
+
const renderElementAsync = ({ code = "", scope = {}, enableTypeScript = true }, resultCallback, errorCallback) => {
|
|
140
|
+
const render = (element) => {
|
|
141
|
+
if (typeof element === "undefined") errorCallback(/* @__PURE__ */ new SyntaxError("`render` must be called with valid JSX."));
|
|
142
|
+
else resultCallback(errorBoundary(element, errorCallback));
|
|
143
|
+
};
|
|
144
|
+
if (!/render\s*\(/.test(code)) return errorCallback(/* @__PURE__ */ new SyntaxError("No-Inline evaluations must call `render`."));
|
|
145
|
+
const transforms = ["jsx", "imports"];
|
|
146
|
+
if (enableTypeScript) transforms.splice(1, 0, "typescript");
|
|
147
|
+
evalCode(transform({ transforms })(code), {
|
|
148
|
+
React: react.default,
|
|
149
|
+
...scope,
|
|
150
|
+
render
|
|
151
|
+
});
|
|
248
152
|
};
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
})
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
theme,
|
|
320
|
-
disabled,
|
|
321
|
-
onError,
|
|
322
|
-
onChange
|
|
323
|
-
}),
|
|
324
|
-
children
|
|
325
|
-
}
|
|
326
|
-
);
|
|
153
|
+
//#endregion
|
|
154
|
+
//#region src/components/Live/LiveProvider.tsx
|
|
155
|
+
function LiveProvider({ children, code = "", language = "tsx", theme, enableTypeScript = true, disabled = false, scope, transformCode, noInline = false }) {
|
|
156
|
+
const [state, setState] = (0, react.useState)({
|
|
157
|
+
error: void 0,
|
|
158
|
+
element: void 0
|
|
159
|
+
});
|
|
160
|
+
async function transpileAsync(newCode) {
|
|
161
|
+
const errorCallback = (error) => {
|
|
162
|
+
setState((previousState) => ({
|
|
163
|
+
...previousState,
|
|
164
|
+
error: error.toString(),
|
|
165
|
+
element: void 0
|
|
166
|
+
}));
|
|
167
|
+
};
|
|
168
|
+
try {
|
|
169
|
+
const transformResult = transformCode ? transformCode(newCode) : newCode;
|
|
170
|
+
try {
|
|
171
|
+
const transformedCode = await Promise.resolve(transformResult);
|
|
172
|
+
const renderElement = (element) => setState({
|
|
173
|
+
error: void 0,
|
|
174
|
+
element,
|
|
175
|
+
newCode
|
|
176
|
+
});
|
|
177
|
+
if (typeof transformedCode !== "string") throw new Error("Code failed to transform");
|
|
178
|
+
const input = {
|
|
179
|
+
code: transformedCode,
|
|
180
|
+
scope,
|
|
181
|
+
enableTypeScript
|
|
182
|
+
};
|
|
183
|
+
if (noInline) {
|
|
184
|
+
setState((previousState) => ({
|
|
185
|
+
...previousState,
|
|
186
|
+
error: void 0,
|
|
187
|
+
element: null
|
|
188
|
+
}));
|
|
189
|
+
renderElementAsync(input, renderElement, errorCallback);
|
|
190
|
+
} else renderElement(generateElement(input, errorCallback));
|
|
191
|
+
} catch (error) {
|
|
192
|
+
return errorCallback(error);
|
|
193
|
+
}
|
|
194
|
+
} catch (e) {
|
|
195
|
+
errorCallback(e);
|
|
196
|
+
return Promise.resolve();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const onError = (error) => setState({ error: error.toString() });
|
|
200
|
+
(0, react.useEffect)(() => {
|
|
201
|
+
transpileAsync(code).catch(onError);
|
|
202
|
+
}, [
|
|
203
|
+
code,
|
|
204
|
+
scope,
|
|
205
|
+
noInline,
|
|
206
|
+
transformCode
|
|
207
|
+
]);
|
|
208
|
+
const onChange = (newCode) => {
|
|
209
|
+
transpileAsync(newCode).catch(onError);
|
|
210
|
+
};
|
|
211
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LiveContext.Provider, {
|
|
212
|
+
value: {
|
|
213
|
+
...state,
|
|
214
|
+
code,
|
|
215
|
+
language,
|
|
216
|
+
theme,
|
|
217
|
+
disabled,
|
|
218
|
+
onError,
|
|
219
|
+
onChange
|
|
220
|
+
},
|
|
221
|
+
children
|
|
222
|
+
});
|
|
327
223
|
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
// src/components/Live/LiveEditor.tsx
|
|
331
|
-
var import_react6 = require("react");
|
|
332
|
-
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
224
|
+
//#endregion
|
|
225
|
+
//#region src/components/Live/LiveEditor.tsx
|
|
333
226
|
function LiveEditor(props) {
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
}, props)
|
|
344
|
-
);
|
|
227
|
+
const { code, language, theme, disabled, onChange } = (0, react.useContext)(LiveContext);
|
|
228
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CodeEditor, {
|
|
229
|
+
theme,
|
|
230
|
+
code,
|
|
231
|
+
language,
|
|
232
|
+
disabled,
|
|
233
|
+
onChange,
|
|
234
|
+
...props
|
|
235
|
+
});
|
|
345
236
|
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
var import_react7 = require("react");
|
|
349
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
237
|
+
//#endregion
|
|
238
|
+
//#region src/components/Live/LiveError.tsx
|
|
350
239
|
function LiveError(props) {
|
|
351
|
-
|
|
352
|
-
|
|
240
|
+
const { error } = (0, react.useContext)(LiveContext);
|
|
241
|
+
return error ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
|
|
242
|
+
...props,
|
|
243
|
+
children: error
|
|
244
|
+
}) : null;
|
|
353
245
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
var
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
}
|
|
372
|
-
render() {
|
|
373
|
-
if (this.state.hasError) {
|
|
374
|
-
return null;
|
|
375
|
-
}
|
|
376
|
-
return this.props.children;
|
|
377
|
-
}
|
|
246
|
+
//#endregion
|
|
247
|
+
//#region src/components/Live/ErrorBoundary.tsx
|
|
248
|
+
var ErrorBoundary = class extends react.Component {
|
|
249
|
+
static getDerivedStateFromError() {
|
|
250
|
+
return { hasError: true };
|
|
251
|
+
}
|
|
252
|
+
constructor(props) {
|
|
253
|
+
super(props);
|
|
254
|
+
this.state = { hasError: false };
|
|
255
|
+
}
|
|
256
|
+
componentDidCatch(err) {
|
|
257
|
+
this.props.onError?.(err);
|
|
258
|
+
}
|
|
259
|
+
render() {
|
|
260
|
+
if (this.state.hasError) return null;
|
|
261
|
+
return this.props.children;
|
|
262
|
+
}
|
|
378
263
|
};
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
264
|
+
//#endregion
|
|
265
|
+
//#region src/components/Live/LivePreview.tsx
|
|
266
|
+
function LivePreview({ Component = "div", ...rest }) {
|
|
267
|
+
const { element: Element, onError, newCode } = (0, react.useContext)(LiveContext);
|
|
268
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ErrorBoundary, {
|
|
269
|
+
onError,
|
|
270
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, {
|
|
271
|
+
...rest,
|
|
272
|
+
children: Element ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Element, {}) : null
|
|
273
|
+
})
|
|
274
|
+
}, newCode);
|
|
386
275
|
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
// src/hoc/withLive.tsx
|
|
390
|
-
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
276
|
+
//#endregion
|
|
277
|
+
//#region src/hoc/withLive.tsx
|
|
391
278
|
function withLive(WrappedComponent) {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
279
|
+
const WithLive = (props) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LiveContext.Consumer, { children: (live) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(WrappedComponent, {
|
|
280
|
+
live,
|
|
281
|
+
...props
|
|
282
|
+
}) });
|
|
283
|
+
WithLive.displayName = "WithLive";
|
|
284
|
+
return WithLive;
|
|
395
285
|
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
});
|
|
286
|
+
//#endregion
|
|
287
|
+
exports.Editor = CodeEditor;
|
|
288
|
+
exports.LiveContext = LiveContext;
|
|
289
|
+
exports.LiveEditor = LiveEditor;
|
|
290
|
+
exports.LiveError = LiveError;
|
|
291
|
+
exports.LivePreview = LivePreview;
|
|
292
|
+
exports.LiveProvider = LiveProvider;
|
|
293
|
+
exports.generateElement = generateElement;
|
|
294
|
+
exports.renderElementAsync = renderElementAsync;
|
|
295
|
+
exports.withLive = withLive;
|
|
296
|
+
|
|
408
297
|
//# sourceMappingURL=index.js.map
|