@cheetah-coder/react 1.0.0-next.14

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 ADDED
@@ -0,0 +1,56 @@
1
+ # @cheetah-coder/react
2
+
3
+ React UI layer for `code-runner` — provides a `useRunner` hook, a `RunnerShell` component, per-language wrapper components, and a unified `CodeRunner` component for running JavaScript, Python, Go, Rust, and Java in the browser.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ npm install @cheetah-coder/react
9
+ ```
10
+
11
+ React 18 or 19 is required as a peer dependency.
12
+
13
+ ## Quick start
14
+
15
+ ```tsx
16
+ import { CodeRunner } from '@cheetah-coder/react';
17
+
18
+ export function Demo() {
19
+ return (
20
+ <CodeRunner
21
+ lang="python"
22
+ code={`print('Hello from Python!')`}
23
+ />
24
+ );
25
+ }
26
+ ```
27
+
28
+ Language-specific components are also exported for direct use:
29
+
30
+ ```tsx
31
+ import { JsRunner, PythonRunner, GoRunner, RustRunner, JavaRunner } from '@cheetah-coder/react';
32
+ ```
33
+
34
+ ## API
35
+
36
+ | Name | Kind | Description |
37
+ |---|---|---|
38
+ | `CodeRunner` | component | Unified runner. Props: `lang: Language`, `code?: string`, `title?: string`, `height?: string` |
39
+ | `JsRunner` | component | JavaScript runner shell |
40
+ | `PythonRunner` | component | Python runner shell |
41
+ | `GoRunner` | component | Go runner shell (includes Open in Playground link) |
42
+ | `RustRunner` | component | Rust runner shell (includes Open in Playground link) |
43
+ | `JavaRunner` | component | Java runner shell |
44
+ | `RunnerShell` | component | Low-level shell. Props: `lang`, `code`, `title`, `runner: RunnerFn`, `playgroundUrl?`, `height?` |
45
+ | `useRunner` | hook | `({ originalCode, runner }) => { code, setCode, output, runState, statusMessage, run, reset }` |
46
+ | `RunState` | type | `'idle' \| 'loading' \| 'ok' \| 'error'` |
47
+
48
+ ## Notes
49
+
50
+ - No CSS is bundled. Add your own styles targeting the class names on `RunnerShell` elements (`.code-runner`, `.runner-header`, `.runner-editor`, `.runner-output`, etc.).
51
+ - The Python runner downloads Pyodide (~12 MB) from CDN on first use. Use the `onStatus` callback via `useRunner` to show progress.
52
+ - Go, Rust, and Java runners require an internet connection.
53
+
54
+ ## License
55
+
56
+ MIT
@@ -0,0 +1,11 @@
1
+ export { useRunner } from './lib/useRunner.js';
2
+ export type { UseRunnerOptions, UseRunnerReturn, RunState } from './lib/useRunner.js';
3
+ export { RunnerShell } from './lib/RunnerShell.js';
4
+ export type { RunnerShellProps } from './lib/RunnerShell.js';
5
+ export { JsRunner } from './lib/JsRunner.js';
6
+ export { PythonRunner } from './lib/PythonRunner.js';
7
+ export { GoRunner } from './lib/GoRunner.js';
8
+ export { RustRunner } from './lib/RustRunner.js';
9
+ export { JavaRunner } from './lib/JavaRunner.js';
10
+ export { CodeRunner } from './lib/CodeRunner.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,399 @@
1
+ import { useCallback as e, useState as t } from "react";
2
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
+ //#region src/lib/useRunner.ts
4
+ function i({ originalCode: n, runner: r }) {
5
+ let [i, a] = t(n), [o, s] = t("(click ▶ Run)"), [c, l] = t("idle"), [u, d] = t("");
6
+ return {
7
+ code: i,
8
+ setCode: a,
9
+ output: o,
10
+ runState: c,
11
+ statusMessage: u,
12
+ run: e(async () => {
13
+ l("loading"), s(""), d("Running…");
14
+ let e = await r(i, (e) => d(e));
15
+ d(""), e.ok ? (l("ok"), s(e.stdout)) : (l("error"), s(e.stderr || e.stdout || "An error occurred."));
16
+ }, [i, r]),
17
+ reset: e(() => {
18
+ a(n), s("(click ▶ Run)"), l("idle"), d("");
19
+ }, [n])
20
+ };
21
+ }
22
+ //#endregion
23
+ //#region src/lib/RunnerShell.tsx
24
+ function a({ lang: e, code: t = "", title: a, playgroundUrl: o, height: s = "160px", runner: c }) {
25
+ let { code: l, setCode: u, output: d, runState: f, statusMessage: p, run: m, reset: h } = i({
26
+ originalCode: t.trim(),
27
+ runner: c
28
+ }), g = f === "ok" ? "runner-output ok" : f === "error" ? "runner-output err" : "runner-output";
29
+ return /* @__PURE__ */ r("div", {
30
+ className: "code-runner",
31
+ "data-lang": e,
32
+ children: [
33
+ /* @__PURE__ */ r("div", {
34
+ className: "runner-header",
35
+ children: [
36
+ /* @__PURE__ */ n("span", {
37
+ className: "runner-badge",
38
+ children: a
39
+ }),
40
+ /* @__PURE__ */ n("span", { style: { flex: 1 } }),
41
+ /* @__PURE__ */ n("button", {
42
+ className: "runner-btn-reset",
43
+ type: "button",
44
+ onClick: h,
45
+ title: "Reset to original code",
46
+ "aria-label": "Reset to original code",
47
+ children: "↺"
48
+ }),
49
+ /* @__PURE__ */ n("button", {
50
+ className: "runner-btn-run",
51
+ type: "button",
52
+ onClick: m,
53
+ disabled: f === "loading",
54
+ children: "▶\xA0Run"
55
+ })
56
+ ]
57
+ }),
58
+ /* @__PURE__ */ n("textarea", {
59
+ className: "runner-editor",
60
+ style: { height: s },
61
+ value: l,
62
+ onChange: (e) => u(e.target.value),
63
+ spellCheck: !1,
64
+ autoComplete: "off",
65
+ autoCorrect: "off",
66
+ autoCapitalize: "off"
67
+ }),
68
+ /* @__PURE__ */ r("div", {
69
+ className: "runner-output-bar",
70
+ children: [
71
+ /* @__PURE__ */ n("span", {
72
+ className: "runner-output-label",
73
+ children: "stdout"
74
+ }),
75
+ /* @__PURE__ */ n("span", {
76
+ className: "runner-status",
77
+ "aria-live": "polite",
78
+ children: p
79
+ }),
80
+ o && /* @__PURE__ */ n("a", {
81
+ className: "runner-playground-link",
82
+ href: o,
83
+ target: "_blank",
84
+ rel: "noopener noreferrer",
85
+ children: "Open in Playground ↗"
86
+ })
87
+ ]
88
+ }),
89
+ /* @__PURE__ */ n("pre", {
90
+ className: g,
91
+ role: "log",
92
+ "aria-live": "polite",
93
+ children: d
94
+ })
95
+ ]
96
+ });
97
+ }
98
+ //#endregion
99
+ //#region ../../core/dist/lib/core.js
100
+ var o = {
101
+ javascript: { label: "JavaScript" },
102
+ python: { label: "Python" },
103
+ go: {
104
+ label: "Go",
105
+ playgroundUrl: "https://go.dev/play/"
106
+ },
107
+ rust: {
108
+ label: "Rust",
109
+ playgroundUrl: "https://play.rust-lang.org/"
110
+ },
111
+ java: {
112
+ label: "Java",
113
+ playgroundUrl: "https://teavm.org/playground.html"
114
+ }
115
+ };
116
+ //#endregion
117
+ //#region ../../runners/js/dist/lib/runner-js.js
118
+ function s(...e) {
119
+ return e.map((e) => typeof e == "object" && e ? JSON.stringify(e, null, 2) : String(e)).join(" ");
120
+ }
121
+ var c = async (e) => {
122
+ let t = [], n = {
123
+ log: console.log.bind(console),
124
+ warn: console.warn.bind(console),
125
+ error: console.error.bind(console)
126
+ };
127
+ console.log = (...e) => {
128
+ t.push(s(...e)), n.log(...e);
129
+ }, console.warn = (...e) => {
130
+ t.push("warn: " + s(...e)), n.warn(...e);
131
+ }, console.error = (...e) => {
132
+ t.push("error: " + s(...e)), n.error(...e);
133
+ };
134
+ try {
135
+ let n = await Function(`return (async () => { ${e} })();`)(), r = t.join("\n");
136
+ return !r && n !== void 0 && (r = String(n)), r ||= "(no output)", {
137
+ stdout: r,
138
+ stderr: "",
139
+ ok: !0
140
+ };
141
+ } catch (e) {
142
+ let n = e instanceof Error ? `${e.name}: ${e.message}` : String(e);
143
+ return {
144
+ stdout: t.join("\n"),
145
+ stderr: n,
146
+ ok: !1
147
+ };
148
+ } finally {
149
+ Object.assign(console, n);
150
+ }
151
+ };
152
+ //#endregion
153
+ //#region src/lib/JsRunner.tsx
154
+ function l({ title: e, ...t }) {
155
+ return /* @__PURE__ */ n(a, {
156
+ ...t,
157
+ lang: "javascript",
158
+ runner: c,
159
+ title: e ?? o.javascript.label
160
+ });
161
+ }
162
+ //#endregion
163
+ //#region ../../runners/python/dist/lib/runner-python.js
164
+ function u(e) {
165
+ return new Promise((t, n) => {
166
+ if (document.querySelector(`script[src="${CSS.escape(e)}"]`)) {
167
+ t();
168
+ return;
169
+ }
170
+ let r = document.createElement("script");
171
+ r.src = e, r.onload = () => t(), r.onerror = () => n(/* @__PURE__ */ Error(`Failed to load script: ${e}`)), document.head.appendChild(r);
172
+ });
173
+ }
174
+ async function d(e) {
175
+ if (window.__codeRunnerPyodide) return window.__codeRunnerPyodide;
176
+ window.loadPyodide || (e?.("Downloading Python runtime (~12 MB, first use only)…"), await u("https://cdn.jsdelivr.net/pyodide/v0.27.0/full/pyodide.js")), e?.("Initialising Python runtime…");
177
+ let t = await window.loadPyodide();
178
+ return window.__codeRunnerPyodide = t, t;
179
+ }
180
+ async function f(e, t) {
181
+ try {
182
+ let n = await d(t);
183
+ n.runPython("import sys, io as _io\n_buf = _io.StringIO()\n_prev_out, _prev_err = sys.stdout, sys.stderr\nsys.stdout = sys.stderr = _buf");
184
+ try {
185
+ return n.runPython(e), {
186
+ stdout: n.runPython("_buf.getvalue()") || "(no output)",
187
+ stderr: "",
188
+ ok: !0
189
+ };
190
+ } catch (e) {
191
+ return {
192
+ stdout: n.runPython("_buf.getvalue()"),
193
+ stderr: e instanceof Error ? e.message : String(e),
194
+ ok: !1
195
+ };
196
+ } finally {
197
+ n.runPython("sys.stdout, sys.stderr = _prev_out, _prev_err");
198
+ }
199
+ } catch (e) {
200
+ return {
201
+ stdout: "",
202
+ stderr: e instanceof Error ? e.message : String(e),
203
+ ok: !1
204
+ };
205
+ }
206
+ }
207
+ //#endregion
208
+ //#region src/lib/PythonRunner.tsx
209
+ function p({ title: e, ...t }) {
210
+ return /* @__PURE__ */ n(a, {
211
+ ...t,
212
+ lang: "python",
213
+ runner: f,
214
+ title: e ?? o.python.label
215
+ });
216
+ }
217
+ //#endregion
218
+ //#region ../../runners/go/dist/lib/runner-go.js
219
+ var m = async (e) => {
220
+ let t;
221
+ try {
222
+ t = await fetch("https://go.dev/play/compile", {
223
+ method: "POST",
224
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
225
+ body: new URLSearchParams({
226
+ body: e,
227
+ withVet: "false"
228
+ })
229
+ });
230
+ } catch (e) {
231
+ return {
232
+ stdout: "",
233
+ stderr: `Network error: ${e instanceof Error ? e.message : String(e)}\nUse the "Open in Playground" link to run this code online.`,
234
+ ok: !1
235
+ };
236
+ }
237
+ if (!t.ok) return {
238
+ stdout: "",
239
+ stderr: `Go playground returned HTTP ${t.status}.`,
240
+ ok: !1
241
+ };
242
+ let n = await t.json();
243
+ return n.Errors ? {
244
+ stdout: "",
245
+ stderr: n.Errors,
246
+ ok: !1
247
+ } : {
248
+ stdout: (n.Events ?? []).map((e) => e.Message).join("") || "(no output)",
249
+ stderr: "",
250
+ ok: !0
251
+ };
252
+ };
253
+ //#endregion
254
+ //#region src/lib/GoRunner.tsx
255
+ function h({ title: e, ...t }) {
256
+ return /* @__PURE__ */ n(a, {
257
+ ...t,
258
+ lang: "go",
259
+ runner: m,
260
+ title: e ?? o.go.label,
261
+ playgroundUrl: o.go.playgroundUrl
262
+ });
263
+ }
264
+ //#endregion
265
+ //#region ../../runners/rust/dist/lib/runner-rust.js
266
+ var g = async (e) => {
267
+ let t;
268
+ try {
269
+ t = await fetch("https://play.rust-lang.org/execute", {
270
+ method: "POST",
271
+ headers: { "Content-Type": "application/json" },
272
+ body: JSON.stringify({
273
+ channel: "stable",
274
+ mode: "debug",
275
+ edition: "2021",
276
+ crateType: "bin",
277
+ tests: !1,
278
+ code: e,
279
+ backtrace: !1
280
+ })
281
+ });
282
+ } catch (e) {
283
+ return {
284
+ stdout: "",
285
+ stderr: `Network error: ${e instanceof Error ? e.message : String(e)}\nUse the "Open in Playground" link to run this code online.`,
286
+ ok: !1
287
+ };
288
+ }
289
+ if (!t.ok) return {
290
+ stdout: "",
291
+ stderr: `Rust playground returned HTTP ${t.status}.`,
292
+ ok: !1
293
+ };
294
+ let n = await t.json();
295
+ return n.success ? {
296
+ stdout: n.stdout || "(no output)",
297
+ stderr: "",
298
+ ok: !0
299
+ } : {
300
+ stdout: "",
301
+ stderr: n.stderr || "Compilation failed.",
302
+ ok: !1
303
+ };
304
+ };
305
+ //#endregion
306
+ //#region src/lib/RustRunner.tsx
307
+ function _({ title: e, ...t }) {
308
+ return /* @__PURE__ */ n(a, {
309
+ ...t,
310
+ lang: "rust",
311
+ runner: g,
312
+ title: e ?? o.rust.label,
313
+ playgroundUrl: o.rust.playgroundUrl
314
+ });
315
+ }
316
+ //#endregion
317
+ //#region ../../runners/java/dist/lib/runner-java.js
318
+ var v = async (e) => {
319
+ let t;
320
+ try {
321
+ t = await fetch("https://emkc.org/api/v2/piston/execute", {
322
+ method: "POST",
323
+ headers: { "Content-Type": "application/json" },
324
+ body: JSON.stringify({
325
+ language: "java",
326
+ version: "*",
327
+ files: [{
328
+ name: "Main.java",
329
+ content: e
330
+ }]
331
+ })
332
+ });
333
+ } catch (e) {
334
+ return {
335
+ stdout: "",
336
+ stderr: `Network error: ${e instanceof Error ? e.message : String(e)}\nUse the "Open in Playground" link to run this code online.`,
337
+ ok: !1
338
+ };
339
+ }
340
+ if (!t.ok) return {
341
+ stdout: "",
342
+ stderr: `Piston API returned HTTP ${t.status}.`,
343
+ ok: !1
344
+ };
345
+ let n = await t.json();
346
+ if (n.message) return {
347
+ stdout: "",
348
+ stderr: n.message,
349
+ ok: !1
350
+ };
351
+ let r = n.run ?? {
352
+ code: 1,
353
+ stdout: "",
354
+ stderr: "No response from executor.",
355
+ signal: null
356
+ };
357
+ return r.code !== 0 || r.stderr ? {
358
+ stdout: r.stdout,
359
+ stderr: r.stderr,
360
+ ok: !1
361
+ } : {
362
+ stdout: r.stdout || "(no output)",
363
+ stderr: "",
364
+ ok: !0
365
+ };
366
+ };
367
+ //#endregion
368
+ //#region src/lib/JavaRunner.tsx
369
+ function y({ title: e, ...t }) {
370
+ return /* @__PURE__ */ n(a, {
371
+ ...t,
372
+ lang: "java",
373
+ runner: v,
374
+ title: e ?? o.java.label,
375
+ playgroundUrl: o.java.playgroundUrl
376
+ });
377
+ }
378
+ //#endregion
379
+ //#region src/lib/CodeRunner.tsx
380
+ var b = {
381
+ javascript: l,
382
+ python: p,
383
+ go: h,
384
+ rust: _,
385
+ java: y
386
+ };
387
+ function x({ lang: e, ...t }) {
388
+ let r = b[e];
389
+ return r ? /* @__PURE__ */ n(r, { ...t }) : /* @__PURE__ */ n("pre", {
390
+ style: {
391
+ color: "red",
392
+ padding: "0.5rem",
393
+ background: "#1a0000"
394
+ },
395
+ children: `No runner configured for language: "${e}".\nSupported: javascript, python, go, rust, java`
396
+ });
397
+ }
398
+ //#endregion
399
+ export { x as CodeRunner, h as GoRunner, y as JavaRunner, l as JsRunner, p as PythonRunner, a as RunnerShell, _ as RustRunner, i as useRunner };
@@ -0,0 +1,9 @@
1
+ import { Language } from '@cheetah-coder/core';
2
+ import { RunnerShellProps } from './RunnerShell.js';
3
+ type CodeRunnerProps = Omit<RunnerShellProps, 'runner' | 'lang'> & {
4
+ lang: Language;
5
+ title?: string;
6
+ };
7
+ export declare function CodeRunner({ lang, ...rest }: CodeRunnerProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=CodeRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeRunner.d.ts","sourceRoot":"","sources":["../../src/lib/CodeRunner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOzD,KAAK,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG;IACjE,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAUF,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,2CAY5D"}
@@ -0,0 +1,7 @@
1
+ import { RunnerShellProps } from './RunnerShell.js';
2
+ type Props = Omit<RunnerShellProps, 'runner' | 'lang' | 'title' | 'playgroundUrl'> & {
3
+ title?: string;
4
+ };
5
+ export declare function GoRunner({ title, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=GoRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoRunner.d.ts","sourceRoot":"","sources":["../../src/lib/GoRunner.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,KAAK,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExG,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,2CAUjD"}
@@ -0,0 +1,7 @@
1
+ import { RunnerShellProps } from './RunnerShell.js';
2
+ type Props = Omit<RunnerShellProps, 'runner' | 'lang' | 'title' | 'playgroundUrl'> & {
3
+ title?: string;
4
+ };
5
+ export declare function JavaRunner({ title, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=JavaRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JavaRunner.d.ts","sourceRoot":"","sources":["../../src/lib/JavaRunner.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,KAAK,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExG,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,2CAUnD"}
@@ -0,0 +1,7 @@
1
+ import { RunnerShellProps } from './RunnerShell.js';
2
+ type Props = Omit<RunnerShellProps, 'runner' | 'lang' | 'title'> & {
3
+ title?: string;
4
+ };
5
+ export declare function JsRunner({ title, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=JsRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsRunner.d.ts","sourceRoot":"","sources":["../../src/lib/JsRunner.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,KAAK,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,2CASjD"}
@@ -0,0 +1,7 @@
1
+ import { RunnerShellProps } from './RunnerShell.js';
2
+ type Props = Omit<RunnerShellProps, 'runner' | 'lang' | 'title'> & {
3
+ title?: string;
4
+ };
5
+ export declare function PythonRunner({ title, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=PythonRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PythonRunner.d.ts","sourceRoot":"","sources":["../../src/lib/PythonRunner.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,KAAK,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,2CASrD"}
@@ -0,0 +1,11 @@
1
+ import { RunResult } from '@cheetah-coder/core';
2
+ export interface RunnerShellProps {
3
+ lang: string;
4
+ code?: string;
5
+ title: string;
6
+ playgroundUrl?: string;
7
+ height?: string;
8
+ runner: (code: string, onStatus?: (msg: string) => void) => Promise<RunResult>;
9
+ }
10
+ export declare function RunnerShell({ lang, code, title, playgroundUrl, height, runner, }: RunnerShellProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=RunnerShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunnerShell.d.ts","sourceRoot":"","sources":["../../src/lib/RunnerShell.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;CAChF;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,IAAS,EACT,KAAK,EACL,aAAa,EACb,MAAgB,EAChB,MAAM,GACP,EAAE,gBAAgB,2CAsElB"}
@@ -0,0 +1,7 @@
1
+ import { RunnerShellProps } from './RunnerShell.js';
2
+ type Props = Omit<RunnerShellProps, 'runner' | 'lang' | 'title' | 'playgroundUrl'> & {
3
+ title?: string;
4
+ };
5
+ export declare function RustRunner({ title, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=RustRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RustRunner.d.ts","sourceRoot":"","sources":["../../src/lib/RustRunner.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,KAAK,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExG,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,2CAUnD"}
@@ -0,0 +1,17 @@
1
+ import { RunResult } from '@cheetah-coder/core';
2
+ export type RunState = 'idle' | 'loading' | 'ok' | 'error';
3
+ export interface UseRunnerOptions {
4
+ originalCode: string;
5
+ runner: (code: string, onStatus?: (msg: string) => void) => Promise<RunResult>;
6
+ }
7
+ export interface UseRunnerReturn {
8
+ code: string;
9
+ setCode: (code: string) => void;
10
+ output: string;
11
+ runState: RunState;
12
+ statusMessage: string;
13
+ run: () => Promise<void>;
14
+ reset: () => void;
15
+ }
16
+ export declare function useRunner({ originalCode, runner, }: UseRunnerOptions): UseRunnerReturn;
17
+ //# sourceMappingURL=useRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRunner.d.ts","sourceRoot":"","sources":["../../src/lib/useRunner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;CAChF;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,YAAY,EACZ,MAAM,GACP,EAAE,gBAAgB,GAAG,eAAe,CA+BpC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=test-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-setup.d.ts","sourceRoot":"","sources":["../src/test-setup.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@cheetah-coder/react",
3
+ "version": "1.0.0-next.14",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ "./package.json": "./package.json",
10
+ ".": {
11
+ "@cheetah-coder/source": "./src/index.ts",
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "default": "./dist/index.js"
15
+ }
16
+ },
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/docexp/code-runner.git",
26
+ "directory": "packages/adapters/react"
27
+ },
28
+ "nx": {
29
+ "name": "react"
30
+ },
31
+ "dependencies": {
32
+ "@cheetah-coder/core": "1.0.0-next.14",
33
+ "@cheetah-coder/js": "1.0.0-next.14",
34
+ "@cheetah-coder/python": "1.0.0-next.14",
35
+ "@cheetah-coder/go": "1.0.0-next.14",
36
+ "@cheetah-coder/rust": "1.0.0-next.14",
37
+ "@cheetah-coder/java": "1.0.0-next.14"
38
+ },
39
+ "peerDependencies": {
40
+ "react": ">=18"
41
+ }
42
+ }