@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/dist/index.js CHANGED
@@ -1,408 +1,297 @@
1
- "use strict";
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
- if (from && typeof from === "object" || typeof from === "function") {
43
- for (let key of __getOwnPropNames(from))
44
- if (!__hasOwnProp.call(to, key) && key !== except)
45
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
- }
47
- return to;
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
- // If the importer is in node compatibility mode or this is not an ESM
51
- // file that has been converted to a CommonJS file using a Babel-
52
- // compatible transform (i.e. "__esModule" has not been set), then set
53
- // "default" to the CommonJS "module.exports" for node compatibility.
54
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
- mod
56
- ));
57
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
- var __async = (__this, __arguments, generator) => {
59
- return new Promise((resolve, reject) => {
60
- var fulfilled = (value) => {
61
- try {
62
- step(generator.next(value));
63
- } catch (e) {
64
- reject(e);
65
- }
66
- };
67
- var rejected = (value) => {
68
- try {
69
- step(generator.throw(value));
70
- } catch (e) {
71
- reject(e);
72
- }
73
- };
74
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
75
- step((generator = generator.apply(__this, __arguments)).next());
76
- });
77
- };
78
-
79
- // src/index.ts
80
- var src_exports = {};
81
- __export(src_exports, {
82
- Editor: () => Editor_default,
83
- LiveContext: () => LiveContext_default,
84
- LiveEditor: () => LiveEditor,
85
- LiveError: () => LiveError,
86
- LivePreview: () => LivePreview_default,
87
- LiveProvider: () => LiveProvider_default,
88
- generateElement: () => generateElement,
89
- renderElementAsync: () => renderElementAsync,
90
- withLive: () => withLive
91
- });
92
- module.exports = __toCommonJS(src_exports);
93
-
94
- // src/components/Editor/index.tsx
95
- var import_prism_react_renderer = require("prism-react-renderer");
96
- var import_react = require("react");
97
- var import_use_editable = require("use-editable");
98
- var import_jsx_runtime = require("react/jsx-runtime");
99
- var CodeEditor = (props) => {
100
- const { tabMode = "indentation" } = props;
101
- const editorRef = (0, import_react.useRef)(null);
102
- const [code, setCode] = (0, import_react.useState)(props.code || "");
103
- const { theme } = props;
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
- var Editor_default = CodeEditor;
159
-
160
- // src/components/Live/LiveProvider.tsx
161
- var import_react5 = require("react");
162
-
163
- // src/components/Live/LiveContext.ts
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
- const transforms = Array.isArray(opts.transforms) ? opts.transforms.filter(Boolean) : defaultTransforms;
176
- return (code) => (0, import_sucrase.transform)(code, { transforms }).code;
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
- // src/utils/transpile/errorBoundary.tsx
180
- var import_react3 = __toESM(require("react"));
181
- var import_jsx_runtime2 = require("react/jsx-runtime");
182
- var errorBoundary = (Element, errorCallback) => {
183
- return class ErrorBoundary extends import_react3.Component {
184
- componentDidCatch(error) {
185
- errorCallback(error);
186
- }
187
- render() {
188
- return typeof Element === "function" ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Element, {}) : import_react3.default.isValidElement(Element) ? Element : null;
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
- var errorBoundary_default = errorBoundary;
193
-
194
- // src/utils/transpile/evalCode.ts
195
- var evalCode = (code, scope) => {
196
- const scopeKeys = Object.keys(scope);
197
- const scopeValues = scopeKeys.map((key) => scope[key]);
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
- var evalCode_default = evalCode;
201
-
202
- // src/utils/transpile/compose.ts
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
- return functions.reduce(
205
- (acc, currentFn) => (...args) => acc(currentFn(...args))
206
- );
118
+ return functions.reduce((acc, currentFn) => (...args) => acc(currentFn(...args)));
207
119
  }
208
-
209
- // src/utils/transpile/index.ts
210
- var jsxConst = 'const _jsxFileName = "";';
211
- var trimCode = (code) => code.trim().replace(/;$/, "");
212
- var spliceJsxConst = (code) => code.replace(jsxConst, "").trim();
213
- var addJsxConst = (code) => jsxConst + code;
214
- var wrapReturn = (code) => `return (${code})`;
215
- var generateElement = ({ code = "", scope = {}, enableTypeScript = true }, errorCallback) => {
216
- const firstPassTransforms = ["jsx"];
217
- enableTypeScript && firstPassTransforms.push("typescript");
218
- const transformed = compose(
219
- addJsxConst,
220
- transform({ transforms: ["imports"] }),
221
- spliceJsxConst,
222
- trimCode,
223
- transform({ transforms: firstPassTransforms }),
224
- wrapReturn,
225
- trimCode
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
- var renderElementAsync = ({ code = "", scope = {}, enableTypeScript = true }, resultCallback, errorCallback) => {
233
- const render = (element) => {
234
- if (typeof element === "undefined") {
235
- errorCallback(new SyntaxError("`render` must be called with valid JSX."));
236
- } else {
237
- resultCallback(errorBoundary_default(element, errorCallback));
238
- }
239
- };
240
- if (!/render\s*\(/.test(code)) {
241
- return errorCallback(
242
- new SyntaxError("No-Inline evaluations must call `render`.")
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
- // src/components/Live/LiveProvider.tsx
251
- var import_jsx_runtime3 = require("react/jsx-runtime");
252
- function LiveProvider({
253
- children,
254
- code = "",
255
- language = "tsx",
256
- theme,
257
- enableTypeScript = true,
258
- disabled = false,
259
- scope,
260
- transformCode,
261
- noInline = false
262
- }) {
263
- const [state, setState] = (0, import_react5.useState)({
264
- error: void 0,
265
- element: void 0
266
- });
267
- function transpileAsync(newCode) {
268
- return __async(this, null, function* () {
269
- const errorCallback = (error) => {
270
- setState((previousState) => __spreadProps(__spreadValues({}, previousState), {
271
- error: error.toString(),
272
- element: void 0
273
- }));
274
- };
275
- try {
276
- const transformResult = transformCode ? transformCode(newCode) : newCode;
277
- try {
278
- const transformedCode = yield Promise.resolve(transformResult);
279
- const renderElement = (element) => setState({ error: void 0, element, newCode });
280
- if (typeof transformedCode !== "string") {
281
- throw new Error("Code failed to transform");
282
- }
283
- const input = {
284
- code: transformedCode,
285
- scope,
286
- enableTypeScript
287
- };
288
- if (noInline) {
289
- setState((previousState) => __spreadProps(__spreadValues({}, previousState), {
290
- error: void 0,
291
- element: null
292
- }));
293
- renderElementAsync(input, renderElement, errorCallback);
294
- } else {
295
- renderElement(generateElement(input, errorCallback));
296
- }
297
- } catch (error) {
298
- return errorCallback(error);
299
- }
300
- } catch (e) {
301
- errorCallback(e);
302
- return Promise.resolve();
303
- }
304
- });
305
- }
306
- const onError = (error) => setState({ error: error.toString() });
307
- (0, import_react5.useEffect)(() => {
308
- transpileAsync(code).catch(onError);
309
- }, [code, scope, noInline, transformCode]);
310
- const onChange = (newCode) => {
311
- transpileAsync(newCode).catch(onError);
312
- };
313
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
314
- LiveContext_default.Provider,
315
- {
316
- value: __spreadProps(__spreadValues({}, state), {
317
- code,
318
- language,
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
- var LiveProvider_default = LiveProvider;
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
- const { code, language, theme, disabled, onChange } = (0, import_react6.useContext)(LiveContext_default);
335
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
336
- Editor_default,
337
- __spreadValues({
338
- theme,
339
- code,
340
- language,
341
- disabled,
342
- onChange
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
- // src/components/Live/LiveError.tsx
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
- const { error } = (0, import_react7.useContext)(LiveContext_default);
352
- return error ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("pre", __spreadProps(__spreadValues({}, props), { children: error })) : null;
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
- // src/components/Live/LivePreview.tsx
356
- var import_react9 = require("react");
357
-
358
- // src/components/Live/ErrorBoundary.tsx
359
- var import_react8 = require("react");
360
- var ErrorBoundary = class extends import_react8.Component {
361
- static getDerivedStateFromError() {
362
- return { hasError: true };
363
- }
364
- constructor(props) {
365
- super(props);
366
- this.state = { hasError: false };
367
- }
368
- componentDidCatch(err) {
369
- var _a, _b;
370
- (_b = (_a = this.props).onError) == null ? void 0 : _b.call(_a, err);
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
- // src/components/Live/LivePreview.tsx
381
- var import_jsx_runtime6 = require("react/jsx-runtime");
382
- function LivePreview(_a) {
383
- var _b = _a, { Component: Component3 = "div" } = _b, rest = __objRest(_b, ["Component"]);
384
- const { element: Element, onError, newCode } = (0, import_react9.useContext)(LiveContext_default);
385
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorBoundary, { onError, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Component3, __spreadProps(__spreadValues({}, rest), { children: Element ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Element, {}) : null })) }, newCode);
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
- var LivePreview_default = LivePreview;
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
- const WithLive = (props) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LiveContext_default.Consumer, { children: (live) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(WrappedComponent, __spreadValues({ live }, props)) });
393
- WithLive.displayName = "WithLive";
394
- return WithLive;
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
- // Annotate the CommonJS export names for ESM import in node:
397
- 0 && (module.exports = {
398
- Editor,
399
- LiveContext,
400
- LiveEditor,
401
- LiveError,
402
- LivePreview,
403
- LiveProvider,
404
- generateElement,
405
- renderElementAsync,
406
- withLive
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