@ttsc/playground 0.18.4 → 0.19.1
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 +1 -1
- package/lib/src/compiler/createWorkerCompiler.js +7 -191
- package/lib/src/compiler/createWorkerCompiler.js.map +1 -1
- package/lib/src/compiler/internal/createWorkerCompilerService.d.ts +18 -0
- package/lib/src/compiler/internal/createWorkerCompilerService.js +272 -0
- package/lib/src/compiler/internal/createWorkerCompilerService.js.map +1 -0
- package/lib/src/npm/collectExternalPackageNames.js +253 -9
- package/lib/src/npm/collectExternalPackageNames.js.map +1 -1
- package/lib/src/react/ConsoleViewer.js +17 -17
- package/lib/src/react/ConsoleViewer.js.map +1 -1
- package/lib/src/react/DependencyProgressModal.js +1 -1
- package/lib/src/react/DependencyProgressModal.js.map +1 -1
- package/lib/src/react/DiagnosticsPanel.js +2 -2
- package/lib/src/react/DiagnosticsPanel.js.map +1 -1
- package/lib/src/react/ExamplePicker.js +2 -2
- package/lib/src/react/ExamplePicker.js.map +1 -1
- package/lib/src/react/LintPane.js +3 -3
- package/lib/src/react/LintPane.js.map +1 -1
- package/lib/src/react/OptionsPanel.js +1 -1
- package/lib/src/react/OptionsPanel.js.map +1 -1
- package/lib/src/react/PlaygroundShell.js +14 -13
- package/lib/src/react/PlaygroundShell.js.map +1 -1
- package/lib/src/react/ResultViewer.d.ts +2 -2
- package/lib/src/react/ResultViewer.js +3 -3
- package/lib/src/react/ResultViewer.js.map +1 -1
- package/lib/src/react/SourceEditor.js +1 -1
- package/lib/src/react/SourceEditor.js.map +1 -1
- package/lib/src/sandbox/createSandboxRequire.js +34 -9
- package/lib/src/sandbox/createSandboxRequire.js.map +1 -1
- package/package.json +3 -3
- package/src/compiler/createWorkerCompiler.ts +8 -236
- package/src/compiler/internal/createWorkerCompilerService.ts +358 -0
- package/src/npm/collectExternalPackageNames.ts +262 -9
- package/src/react/ConsoleViewer.tsx +18 -18
- package/src/react/DependencyProgressModal.tsx +11 -11
- package/src/react/DiagnosticsPanel.tsx +11 -11
- package/src/react/ExamplePicker.tsx +7 -7
- package/src/react/LintPane.tsx +5 -5
- package/src/react/OptionsPanel.tsx +10 -10
- package/src/react/PlaygroundShell.tsx +64 -74
- package/src/react/ResultViewer.tsx +4 -4
- package/src/react/SourceEditor.tsx +2 -3
- package/src/sandbox/createSandboxRequire.ts +32 -9
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.collectExternalPackageNames = collectExternalPackageNames;
|
|
4
4
|
const BUILT_IN_PLAYGROUND_PACKAGES_1 = require("./BUILT_IN_PLAYGROUND_PACKAGES");
|
|
5
5
|
const packageNameFromSpecifier_1 = require("./packageNameFromSpecifier");
|
|
6
|
-
const MODULE_SPECIFIER_REGEXP = /\b(?:import|export)\s+(?:type\s+)?(?:[^"'()]*?\s+from\s*)?["']([^"']+)["']|import\s*\(\s*["']([^"']+)["']\s*\)|require\s*\(\s*["']([^"']+)["']\s*\)/g;
|
|
7
6
|
/**
|
|
8
7
|
* Scan `source` for `import` / `require` specifiers and return the unique
|
|
9
8
|
* sorted list of bare npm package names that are not in `ignoredPackages`.
|
|
@@ -18,17 +17,262 @@ function collectExternalPackageNames(source, ignoredPackages = BUILT_IN_PLAYGROU
|
|
|
18
17
|
}
|
|
19
18
|
return [...found].sort();
|
|
20
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Collect the string specifiers of every executable module-loading construct in
|
|
22
|
+
* `source`: `import`/`export ... from`, side-effect `import "x"`, dynamic
|
|
23
|
+
* `import("x")`, and `require("x")` calls.
|
|
24
|
+
*
|
|
25
|
+
* The scan tokenizes `source` first so import/export/require lookalikes that
|
|
26
|
+
* live inside comments, string or template contents, or regular-expression
|
|
27
|
+
* literals never become package requests — only real code-level string
|
|
28
|
+
* arguments are returned. Specifiers that cannot be resolved statically (a
|
|
29
|
+
* template-literal or computed argument) are intentionally skipped so inert
|
|
30
|
+
* text cannot drive a network install.
|
|
31
|
+
*/
|
|
21
32
|
function collectModuleSpecifiers(source) {
|
|
33
|
+
const tokens = tokenize(source);
|
|
22
34
|
const out = [];
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
const asString = (token) => token && token.kind === "string" ? token.value : null;
|
|
36
|
+
const isOpenParen = (token) => token !== undefined && token.kind === "punct" && token.value === "(";
|
|
37
|
+
const isMemberAccess = (token) => token !== undefined && token.kind === "punct" && token.value === ".";
|
|
38
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
39
|
+
const token = tokens[i];
|
|
40
|
+
if (!token || token.kind !== "word")
|
|
41
|
+
continue;
|
|
42
|
+
if (token.value === "require") {
|
|
43
|
+
// `obj.require(...)` is an unrelated method call, not CommonJS require.
|
|
44
|
+
if (isMemberAccess(tokens[i - 1]))
|
|
45
|
+
continue;
|
|
46
|
+
if (isOpenParen(tokens[i + 1])) {
|
|
47
|
+
const spec = asString(tokens[i + 2]);
|
|
48
|
+
if (spec !== null)
|
|
49
|
+
out.push(spec);
|
|
50
|
+
}
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (token.value === "import" || token.value === "export") {
|
|
54
|
+
// `foo.import(...)` / `import.meta` are not module-loading imports.
|
|
55
|
+
if (token.value === "import" && isMemberAccess(tokens[i - 1]))
|
|
56
|
+
continue;
|
|
57
|
+
// Dynamic `import("x")`.
|
|
58
|
+
if (token.value === "import" && isOpenParen(tokens[i + 1])) {
|
|
59
|
+
const spec = asString(tokens[i + 2]);
|
|
60
|
+
if (spec !== null)
|
|
61
|
+
out.push(spec);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
// Side-effect `import "x"`.
|
|
65
|
+
if (token.value === "import") {
|
|
66
|
+
const bare = asString(tokens[i + 1]);
|
|
67
|
+
if (bare !== null) {
|
|
68
|
+
out.push(bare);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// `import ... from "x"` / `export ... from "x"`.
|
|
73
|
+
const spec = findFromSpecifier(tokens, i + 1);
|
|
74
|
+
if (spec !== null)
|
|
75
|
+
out.push(spec);
|
|
76
|
+
}
|
|
31
77
|
}
|
|
32
78
|
return out;
|
|
33
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* From token index `start`, find the specifier of a `... from "x"` clause,
|
|
82
|
+
* bounded to the current statement. Stops at a `;` terminator or the start of
|
|
83
|
+
* another `import`/`export` so a local `export const x = ...` never borrows a
|
|
84
|
+
* later statement's `from`.
|
|
85
|
+
*/
|
|
86
|
+
function findFromSpecifier(tokens, start) {
|
|
87
|
+
for (let i = start; i < tokens.length; i++) {
|
|
88
|
+
const token = tokens[i];
|
|
89
|
+
if (!token)
|
|
90
|
+
break;
|
|
91
|
+
if (token.kind === "punct" && token.value === ";")
|
|
92
|
+
return null;
|
|
93
|
+
if (token.kind === "word" &&
|
|
94
|
+
(token.value === "import" || token.value === "export"))
|
|
95
|
+
return null;
|
|
96
|
+
if (token.kind === "word" && token.value === "from") {
|
|
97
|
+
const next = tokens[i + 1];
|
|
98
|
+
return next && next.kind === "string" ? next.value : null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
// Keywords after which a `/` begins a regular-expression literal rather than a
|
|
104
|
+
// division operator. After any other word (an identifier or value keyword such
|
|
105
|
+
// as `this`), `/` is division.
|
|
106
|
+
const REGEX_PRECEDING_KEYWORDS = new Set([
|
|
107
|
+
"return",
|
|
108
|
+
"typeof",
|
|
109
|
+
"instanceof",
|
|
110
|
+
"in",
|
|
111
|
+
"of",
|
|
112
|
+
"new",
|
|
113
|
+
"delete",
|
|
114
|
+
"void",
|
|
115
|
+
"do",
|
|
116
|
+
"else",
|
|
117
|
+
"yield",
|
|
118
|
+
"await",
|
|
119
|
+
"case",
|
|
120
|
+
"throw",
|
|
121
|
+
]);
|
|
122
|
+
/**
|
|
123
|
+
* Lexically tokenize `source` into the coarse token stream the specifier
|
|
124
|
+
* collector needs. Comments are dropped; strings, templates, regex literals,
|
|
125
|
+
* and numbers become single tokens so their contents cannot leak into the
|
|
126
|
+
* grammar match.
|
|
127
|
+
*/
|
|
128
|
+
function tokenize(source) {
|
|
129
|
+
const tokens = [];
|
|
130
|
+
const n = source.length;
|
|
131
|
+
const isIdStart = (c) => (c >= "a" && c <= "z") || (c >= "A" && c <= "Z") || c === "_" || c === "$";
|
|
132
|
+
const isIdPart = (c) => isIdStart(c) || (c >= "0" && c <= "9");
|
|
133
|
+
const isDigit = (c) => c >= "0" && c <= "9";
|
|
134
|
+
// A `/` opens a regex only in operator/statement position — never right after
|
|
135
|
+
// a value (identifier, number, string, template, regex, `)` or `]`).
|
|
136
|
+
const regexAllowed = () => {
|
|
137
|
+
const prev = tokens[tokens.length - 1];
|
|
138
|
+
if (!prev)
|
|
139
|
+
return true;
|
|
140
|
+
if (prev.kind === "string" || prev.kind === "other")
|
|
141
|
+
return false;
|
|
142
|
+
if (prev.kind === "word")
|
|
143
|
+
return REGEX_PRECEDING_KEYWORDS.has(prev.value);
|
|
144
|
+
return prev.value !== ")" && prev.value !== "]";
|
|
145
|
+
};
|
|
146
|
+
let i = 0;
|
|
147
|
+
while (i < n) {
|
|
148
|
+
const c = source[i];
|
|
149
|
+
// Whitespace.
|
|
150
|
+
if (c === " " ||
|
|
151
|
+
c === "\t" ||
|
|
152
|
+
c === "\r" ||
|
|
153
|
+
c === "\n" ||
|
|
154
|
+
c === "\f" ||
|
|
155
|
+
c === "\v") {
|
|
156
|
+
i++;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
// Line comment.
|
|
160
|
+
if (c === "/" && source[i + 1] === "/") {
|
|
161
|
+
i += 2;
|
|
162
|
+
while (i < n && source[i] !== "\n")
|
|
163
|
+
i++;
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
// Block comment.
|
|
167
|
+
if (c === "/" && source[i + 1] === "*") {
|
|
168
|
+
i += 2;
|
|
169
|
+
while (i < n && !(source[i] === "*" && source[i + 1] === "/"))
|
|
170
|
+
i++;
|
|
171
|
+
i += 2;
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
// Regular-expression literal.
|
|
175
|
+
if (c === "/" && regexAllowed()) {
|
|
176
|
+
i++;
|
|
177
|
+
let inClass = false;
|
|
178
|
+
while (i < n) {
|
|
179
|
+
const d = source[i];
|
|
180
|
+
if (d === "\\") {
|
|
181
|
+
i += 2;
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
if (d === "\n")
|
|
185
|
+
break;
|
|
186
|
+
if (d === "[")
|
|
187
|
+
inClass = true;
|
|
188
|
+
else if (d === "]")
|
|
189
|
+
inClass = false;
|
|
190
|
+
else if (d === "/" && !inClass) {
|
|
191
|
+
i++;
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
i++;
|
|
195
|
+
}
|
|
196
|
+
while (i < n && isIdPart(source[i]))
|
|
197
|
+
i++; // flags
|
|
198
|
+
tokens.push({ kind: "other" });
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
// String literal.
|
|
202
|
+
if (c === '"' || c === "'") {
|
|
203
|
+
i++;
|
|
204
|
+
let value = "";
|
|
205
|
+
while (i < n) {
|
|
206
|
+
const d = source[i];
|
|
207
|
+
if (d === "\\") {
|
|
208
|
+
value += source[i + 1] ?? "";
|
|
209
|
+
i += 2;
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
if (d === c) {
|
|
213
|
+
i++;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
if (d === "\n")
|
|
217
|
+
break; // unterminated single-line string
|
|
218
|
+
value += d;
|
|
219
|
+
i++;
|
|
220
|
+
}
|
|
221
|
+
tokens.push({ kind: "string", value });
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
// Template literal. Contents (including `${...}` expressions) are treated as
|
|
225
|
+
// opaque: a template specifier is not statically resolvable.
|
|
226
|
+
if (c === "`") {
|
|
227
|
+
i++;
|
|
228
|
+
let depth = 0;
|
|
229
|
+
while (i < n) {
|
|
230
|
+
const d = source[i];
|
|
231
|
+
if (d === "\\") {
|
|
232
|
+
i += 2;
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
if (depth === 0 && d === "`") {
|
|
236
|
+
i++;
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
if (d === "$" && source[i + 1] === "{") {
|
|
240
|
+
depth++;
|
|
241
|
+
i += 2;
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
if (depth > 0 && d === "}") {
|
|
245
|
+
depth--;
|
|
246
|
+
i++;
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
i++;
|
|
250
|
+
}
|
|
251
|
+
tokens.push({ kind: "other" });
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
// Identifier / keyword.
|
|
255
|
+
if (isIdStart(c)) {
|
|
256
|
+
let j = i + 1;
|
|
257
|
+
while (j < n && isIdPart(source[j]))
|
|
258
|
+
j++;
|
|
259
|
+
tokens.push({ kind: "word", value: source.slice(i, j) });
|
|
260
|
+
i = j;
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
// Numeric literal.
|
|
264
|
+
if (isDigit(c) || (c === "." && isDigit(source[i + 1] ?? ""))) {
|
|
265
|
+
let j = i + 1;
|
|
266
|
+
while (j < n && /[0-9a-fA-FxXoObBeE._]/.test(source[j]))
|
|
267
|
+
j++;
|
|
268
|
+
tokens.push({ kind: "other" });
|
|
269
|
+
i = j;
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
// Single punctuation character.
|
|
273
|
+
tokens.push({ kind: "punct", value: c });
|
|
274
|
+
i++;
|
|
275
|
+
}
|
|
276
|
+
return tokens;
|
|
277
|
+
}
|
|
34
278
|
//# sourceMappingURL=collectExternalPackageNames.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectExternalPackageNames.js","sourceRoot":"","sources":["../../../src/npm/collectExternalPackageNames.ts"],"names":[],"mappings":";;;AAAA,iFAA8E;AAC9E,yEAAsE;AAEtE
|
|
1
|
+
{"version":3,"file":"collectExternalPackageNames.js","sourceRoot":"","sources":["../../../src/npm/collectExternalPackageNames.ts"],"names":[],"mappings":";;;AAAA,iFAA8E;AAC9E,yEAAsE;AAEtE;;;GAGG;AACH,qCACE,MAAc,EACd,eAAe,GAAqB,2DAA4B;IAEhE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,IAAA,mDAAwB,EAAC,SAAS,CAAC,CAAC;QACxD,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,uBAAuB,CAAC,MAAc;IAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,KAAwB,EAAiB,EAAE,CAC3D,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,MAAM,WAAW,GAAG,CAAC,KAAwB,EAAW,EAAE,CACxD,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;IACvE,MAAM,cAAc,GAAG,CAAC,KAAwB,EAAW,EAAE,CAC3D,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;IAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAE9C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,wEAAwE;YACxE,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC5C,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,IAAI,KAAK,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACzD,oEAAoE;YACpE,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YACxE,yBAAyB;YACzB,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,IAAI,KAAK,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClC,SAAS;YACX,CAAC;YACD,4BAA4B;YAC5B,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACf,SAAS;gBACX,CAAC;YACH,CAAC;YACD,iDAAiD;YACjD,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,IAAI,KAAK,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAe,EAAE,KAAa;IACvD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAC/D,IACE,KAAK,CAAC,IAAI,KAAK,MAAM;YACrB,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC;YAEtD,OAAO,IAAI,CAAC;QACd,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAcD,+EAA+E;AAC/E,+EAA+E;AAC/E,+BAA+B;AAC/B,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,MAAc;IAC9B,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,MAAM,SAAS,GAAG,CAAC,CAAS,EAAW,EAAE,CACvC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;IAC7E,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAW,EAAE,CACtC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;IAE7D,8EAA8E;IAC9E,qEAAqE;IACrE,MAAM,YAAY,GAAG,GAAY,EAAE;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QAClE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;IAClD,CAAC,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACrB,cAAc;QACd,IACE,CAAC,KAAK,GAAG;YACT,CAAC,KAAK,IAAI;YACV,CAAC,KAAK,IAAI;YACV,CAAC,KAAK,IAAI;YACV,CAAC,KAAK,IAAI;YACV,CAAC,KAAK,IAAI,EACV,CAAC;YACD,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,gBAAgB;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvC,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;gBAAE,CAAC,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QACD,iBAAiB;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvC,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;gBAAE,CAAC,EAAE,CAAC;YACnE,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,8BAA8B;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,EAAE,EAAE,CAAC;YAChC,CAAC,EAAE,CAAC;YACJ,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,KAAK,IAAI;oBAAE,MAAM;gBACtB,IAAI,CAAC,KAAK,GAAG;oBAAE,OAAO,GAAG,IAAI,CAAC;qBACzB,IAAI,CAAC,KAAK,GAAG;oBAAE,OAAO,GAAG,KAAK,CAAC;qBAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC/B,CAAC,EAAE,CAAC;oBACJ,MAAM;gBACR,CAAC;gBACD,CAAC,EAAE,CAAC;YACN,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;gBAAE,CAAC,EAAE,CAAC,CAAC,QAAQ;YACnD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,kBAAkB;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3B,CAAC,EAAE,CAAC;YACJ,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC7B,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACZ,CAAC,EAAE,CAAC;oBACJ,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,KAAK,IAAI;oBAAE,MAAM,CAAC,kCAAkC;gBACzD,KAAK,IAAI,CAAC,CAAC;gBACX,CAAC,EAAE,CAAC;YACN,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QACD,6EAA6E;QAC7E,6DAA6D;QAC7D,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,CAAC,EAAE,CAAC;YACJ,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC7B,CAAC,EAAE,CAAC;oBACJ,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACvC,KAAK,EAAE,CAAC;oBACR,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC3B,KAAK,EAAE,CAAC;oBACR,CAAC,EAAE,CAAC;oBACJ,SAAS;gBACX,CAAC;gBACD,CAAC,EAAE,CAAC;YACN,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,wBAAwB;QACxB,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;gBAAE,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC,GAAG,CAAC,CAAC;YACN,SAAS;QACX,CAAC;QACD,mBAAmB;QACnB,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;gBAAE,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/B,CAAC,GAAG,CAAC,CAAC;YACN,SAAS;QACX,CAAC;QACD,gCAAgC;QAChC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -5,50 +5,50 @@ exports.ConsoleViewer = ConsoleViewer;
|
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
6
|
function ConsoleViewer({ messages, empty = "No output yet. Click Execute to run the compiled JavaScript.", }) {
|
|
7
7
|
if (messages.length === 0)
|
|
8
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "h-full w-full
|
|
9
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "h-full w-full overflow-auto p-3 font-mono text-[12px] leading-snug", children: messages.map((msg, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "
|
|
8
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "flex h-full w-full items-center justify-center px-4 text-center font-mono text-[11px] text-slate-400", children: empty }));
|
|
9
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "h-full w-full overflow-auto p-3 font-mono text-[12px] leading-snug", children: messages.map((msg, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-2 border-b border-[#d8e7f4] py-1 last:border-b-0", children: [(0, jsx_runtime_1.jsx)("span", { className: `shrink-0 text-[10px] uppercase tracking-wider w-12 ${typeColor(msg.type)}`, children: msg.type }), (0, jsx_runtime_1.jsx)("span", { className: "flex-1 whitespace-pre-wrap break-words text-slate-700", children: (Array.isArray(msg.value) ? msg.value : [msg.value]).map((arg, idx) => ((0, jsx_runtime_1.jsxs)("span", { children: [idx > 0 ? " " : "", formatValue(arg)] }, idx))) })] }, i))) }));
|
|
10
10
|
}
|
|
11
11
|
function typeColor(type) {
|
|
12
12
|
switch (type) {
|
|
13
13
|
case "error":
|
|
14
|
-
return "text-red-
|
|
14
|
+
return "text-red-600";
|
|
15
15
|
case "warn":
|
|
16
|
-
return "text-
|
|
16
|
+
return "text-amber-600";
|
|
17
17
|
case "info":
|
|
18
|
-
return "text-sky-
|
|
18
|
+
return "text-sky-700";
|
|
19
19
|
case "debug":
|
|
20
|
-
return "text-fuchsia-
|
|
20
|
+
return "text-fuchsia-700";
|
|
21
21
|
case "dir":
|
|
22
22
|
case "table":
|
|
23
|
-
return "text-cyan-
|
|
23
|
+
return "text-cyan-700";
|
|
24
24
|
default:
|
|
25
|
-
return "text-emerald-
|
|
25
|
+
return "text-emerald-700";
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
function formatValue(value, depth = 0) {
|
|
29
29
|
if (typeof value === "string")
|
|
30
|
-
return (0, jsx_runtime_1.jsx)("span", { className: "text-amber-
|
|
30
|
+
return (0, jsx_runtime_1.jsx)("span", { className: "text-amber-700", children: JSON.stringify(value) });
|
|
31
31
|
if (typeof value === "number")
|
|
32
|
-
return (0, jsx_runtime_1.jsx)("span", { className: "text-purple-
|
|
32
|
+
return (0, jsx_runtime_1.jsx)("span", { className: "text-purple-700", children: String(value) });
|
|
33
33
|
if (typeof value === "boolean")
|
|
34
|
-
return (0, jsx_runtime_1.jsx)("span", { className: "text-sky-
|
|
34
|
+
return (0, jsx_runtime_1.jsx)("span", { className: "text-sky-700", children: String(value) });
|
|
35
35
|
if (value === null)
|
|
36
|
-
return (0, jsx_runtime_1.jsx)("span", { className: "text-
|
|
36
|
+
return (0, jsx_runtime_1.jsx)("span", { className: "text-slate-500", children: "null" });
|
|
37
37
|
if (value === undefined)
|
|
38
|
-
return (0, jsx_runtime_1.jsx)("span", { className: "text-
|
|
38
|
+
return (0, jsx_runtime_1.jsx)("span", { className: "text-slate-500", children: "undefined" });
|
|
39
39
|
if (typeof value === "function")
|
|
40
|
-
return (0, jsx_runtime_1.jsx)("span", { className: "text-
|
|
40
|
+
return (0, jsx_runtime_1.jsx)("span", { className: "text-slate-500", children: "[Function]" });
|
|
41
41
|
if (Array.isArray(value))
|
|
42
42
|
return ((0, jsx_runtime_1.jsxs)("span", { children: ["[", value.map((item, idx) => ((0, jsx_runtime_1.jsxs)("span", { children: [idx > 0 ? ", " : "", formatValue(item, depth + 1)] }, idx))), "]"] }));
|
|
43
43
|
if (value instanceof Error)
|
|
44
|
-
return ((0, jsx_runtime_1.jsxs)("span", { className: "text-red-
|
|
44
|
+
return ((0, jsx_runtime_1.jsxs)("span", { className: "text-red-700", children: [value.name, ": ", value.message] }));
|
|
45
45
|
try {
|
|
46
46
|
const entries = Object.entries(value);
|
|
47
47
|
if (entries.length === 0)
|
|
48
48
|
return (0, jsx_runtime_1.jsx)("span", { children: "{}" });
|
|
49
49
|
if (depth > 4)
|
|
50
|
-
return (0, jsx_runtime_1.jsx)("span", { className: "text-
|
|
51
|
-
return ((0, jsx_runtime_1.jsxs)("span", { children: ["{", entries.map(([k, v], idx) => ((0, jsx_runtime_1.jsxs)("span", { children: [idx > 0 ? ", " : " ", (0, jsx_runtime_1.jsx)("span", { className: "text-
|
|
50
|
+
return (0, jsx_runtime_1.jsx)("span", { className: "text-slate-500", children: "[...]" });
|
|
51
|
+
return ((0, jsx_runtime_1.jsxs)("span", { children: ["{", entries.map(([k, v], idx) => ((0, jsx_runtime_1.jsxs)("span", { children: [idx > 0 ? ", " : " ", (0, jsx_runtime_1.jsx)("span", { className: "text-[#3178c6]", children: k }), ":", " ", formatValue(v, depth + 1)] }, k))), " }"] }));
|
|
52
52
|
}
|
|
53
53
|
catch {
|
|
54
54
|
return (0, jsx_runtime_1.jsx)("span", { children: String(value) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleViewer.js","sourceRoot":"","sources":["../../../src/react/ConsoleViewer.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAWb,uBAA8B,EAC5B,QAAQ,EACR,KAAK,GAAG,8DAA8D,GACnD;IACnB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QACvB,OAAO,CACL,gCAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"ConsoleViewer.js","sourceRoot":"","sources":["../../../src/react/ConsoleViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,6 @@ function DependencyProgressModal({ progress, packages, }) {
|
|
|
11
11
|
const activePackage = progress.packageName && progress.version
|
|
12
12
|
? `${progress.packageName}@${progress.version}`
|
|
13
13
|
: progress.packageName;
|
|
14
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-
|
|
14
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-[#102a43]/35 px-4 backdrop-blur-sm", children: (0, jsx_runtime_1.jsxs)("div", { className: "w-full max-w-md rounded-2xl border border-[#b9d5ee] bg-white p-5 shadow-[0_28px_70px_rgba(35,90,151,0.25)]", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start justify-between gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "font-mono text-[11px] uppercase text-[#3178c6]", children: "Dependencies" }), (0, jsx_runtime_1.jsx)("h2", { className: "mt-1 font-mono text-base text-[#102a43]", children: "Installing npm packages" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "font-mono text-[11px] text-slate-500", children: [progress.completed, "/", total] })] }), (0, jsx_runtime_1.jsx)("div", { className: "mt-4 h-2 overflow-hidden rounded-full bg-[#e7f0f8]", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-[#3178c6] transition-[width]", style: { width: `${Math.max(8, ratio * 100)}%` } }) }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-4 space-y-1 font-mono", children: [activePackage && ((0, jsx_runtime_1.jsx)("div", { className: "text-[12px] text-slate-700", children: activePackage })), (0, jsx_runtime_1.jsx)("div", { className: "text-[11px] text-slate-500", children: progress.message })] }), packages.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "mt-4 flex flex-wrap gap-1.5", children: [packages.slice(0, 8).map((name) => ((0, jsx_runtime_1.jsx)("span", { className: "rounded border border-[#d2e4f4] bg-[#f7fbff] px-2 py-1 font-mono text-[10px] text-slate-600", children: name }, name))), packages.length > 8 && ((0, jsx_runtime_1.jsxs)("span", { className: "rounded border border-[#d2e4f4] bg-[#f7fbff] px-2 py-1 font-mono text-[10px] text-slate-500", children: ["+", packages.length - 8] }))] }))] }) }));
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=DependencyProgressModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyProgressModal.js","sourceRoot":"","sources":["../../../src/react/DependencyProgressModal.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AASb,iCAAwC,EACtC,QAAQ,EACR,QAAQ,GACqB;IAC7B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,aAAa,GACjB,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO;QACtC,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE;QAC/C,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAE3B,OAAO,CACL,gCAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"DependencyProgressModal.js","sourceRoot":"","sources":["../../../src/react/DependencyProgressModal.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AASb,iCAAwC,EACtC,QAAQ,EACR,QAAQ,GACqB;IAC7B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,aAAa,GACjB,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO;QACtC,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE;QAC/C,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAE3B,OAAO,CACL,gCAAK,SAAS,EAAC,2FAA2F,YACxG,iCAAK,SAAS,EAAC,4GAA4G,aACzH,iCAAK,SAAS,EAAC,wCAAwC,aACrD,4CACE,gCAAK,SAAS,EAAC,gDAAgD,6BAEzD,EACN,+BAAI,SAAS,EAAC,yCAAyC,wCAElD,IACD,EACN,iCAAK,SAAS,EAAC,sCAAsC,aAClD,QAAQ,CAAC,SAAS,OAAG,KAAK,IACvB,IACF,EAEN,gCAAK,SAAS,EAAC,oDAAoD,YACjE,gCACE,SAAS,EAAC,wCAAwC,EAClD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,GAChD,GACE,EAEN,iCAAK,SAAS,EAAC,0BAA0B,aACtC,aAAa,IAAI,CAChB,gCAAK,SAAS,EAAC,4BAA4B,YAAE,aAAa,GAAO,CAClE,EACD,gCAAK,SAAS,EAAC,4BAA4B,YAAE,QAAQ,CAAC,OAAO,GAAO,IAChE,EAEL,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,iCAAK,SAAS,EAAC,6BAA6B,aACzC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClC,iCAEE,SAAS,EAAC,6FAA6F,YAEtG,IAAI,IAHA,IAAI,CAIJ,CACR,CAAC,EACD,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,kCAAM,SAAS,EAAC,6FAA6F,kBACzG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAChB,CACR,IACG,CACP,IACG,GACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -9,7 +9,7 @@ function DiagnosticsPanel({ diagnostics, }) {
|
|
|
9
9
|
const errorCount = diagnostics.filter((d) => d.severity === "error").length;
|
|
10
10
|
const warnCount = diagnostics.filter((d) => d.severity === "warning").length;
|
|
11
11
|
if (diagnostics.length === 0)
|
|
12
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "shrink-0
|
|
13
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "shrink-0 border-t border-
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "flex shrink-0 items-center gap-3 border-t border-[#c7dff4] bg-[#eef6ff] px-4 py-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-emerald-400 text-xs", children: "\u25CF" }), (0, jsx_runtime_1.jsx)("span", { className: "font-mono text-[12px] text-slate-600", children: "0 errors \u00B7 0 warnings" })] }));
|
|
13
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "shrink-0 border-t border-[#c7dff4] bg-[#eef6ff]", children: [(0, jsx_runtime_1.jsxs)("button", { onClick: () => setExpanded((v) => !v), className: "flex w-full items-center gap-3 px-4 py-2 text-left transition-colors hover:bg-[#e1effc]", children: [(0, jsx_runtime_1.jsx)("span", { className: `text-xs ${errorCount > 0 ? "text-red-400" : "text-yellow-400"}`, children: "\u25CF" }), (0, jsx_runtime_1.jsxs)("span", { className: "font-mono text-[12px] text-slate-700", children: [errorCount, " error", errorCount === 1 ? "" : "s", " \u00B7 ", warnCount, " warning", warnCount === 1 ? "" : "s"] }), (0, jsx_runtime_1.jsx)("span", { className: "ml-auto font-mono text-[10px] text-slate-400", children: expanded ? "▲ collapse" : "▼ expand" })] }), expanded && ((0, jsx_runtime_1.jsx)("div", { className: "max-h-48 overflow-auto border-t border-[#c7dff4]", children: diagnostics.map((d, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-3 border-b border-[#d8e7f4] px-4 py-2 font-mono text-[12px] last:border-b-0", children: [(0, jsx_runtime_1.jsx)("span", { className: `shrink-0 ${d.severity === "error" ? "text-red-400" : "text-yellow-400"}`, children: d.severity === "error" ? "✗" : "!" }), (0, jsx_runtime_1.jsxs)("span", { className: "w-16 shrink-0 text-slate-500", children: [d.line, ":", d.column] }), (0, jsx_runtime_1.jsx)("span", { className: "w-16 shrink-0 text-slate-400", children: d.code ?? "" }), (0, jsx_runtime_1.jsx)("span", { className: "text-slate-700", children: d.message })] }, i))) }))] }));
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=DiagnosticsPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagnosticsPanel.js","sourceRoot":"","sources":["../../../src/react/DiagnosticsPanel.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCAAiC;AAIjC,0BAAiC,EAC/B,WAAW,GAGZ;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAE7E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO,CACL,iCAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"DiagnosticsPanel.js","sourceRoot":"","sources":["../../../src/react/DiagnosticsPanel.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCAAiC;AAIjC,0BAAiC,EAC/B,WAAW,GAGZ;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAE7E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO,CACL,iCAAK,SAAS,EAAC,mFAAmF,aAChG,iCAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,iCAAM,SAAS,EAAC,sCAAsC,2CAE/C,IACH,CACP,CAAC;IAEJ,OAAO,CACL,iCAAK,SAAS,EAAC,iDAAiD,aAC9D,oCACE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACrC,SAAS,EAAC,yFAAyF,aAEnG,iCACE,SAAS,EAAE,WACT,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBACpC,EAAE,uBAGG,EACP,kCAAM,SAAS,EAAC,sCAAsC,aACnD,UAAU,YAAQ,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,cAAK,SAAS,cAC3D,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IACtB,EACP,iCAAM,SAAS,EAAC,8CAA8C,YAC3D,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,GAChC,IACA,EACR,QAAQ,IAAI,CACX,gCAAK,SAAS,EAAC,kDAAkD,YAC9D,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,iCAEE,SAAS,EAAC,sFAAsF,aAEhG,iCACE,SAAS,EAAE,YACT,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAC5C,EAAE,YAED,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAC9B,EACP,kCAAM,SAAS,EAAC,8BAA8B,aAC3C,CAAC,CAAC,IAAI,OAAG,CAAC,CAAC,MAAM,IACb,EACP,iCAAM,SAAS,EAAC,8BAA8B,YAC3C,CAAC,CAAC,IAAI,IAAI,EAAE,GACR,EACP,iCAAM,SAAS,EAAC,gBAAgB,YAAE,CAAC,CAAC,OAAO,GAAQ,KAhB9C,CAAC,CAiBF,CACP,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -35,9 +35,9 @@ function ExamplePicker({ examples, onPick, groupLabels, }) {
|
|
|
35
35
|
}, [examples]);
|
|
36
36
|
if (examples.length === 0)
|
|
37
37
|
return null;
|
|
38
|
-
return ((0, jsx_runtime_1.jsxs)("div", { ref: ref, className: "relative", children: [(0, jsx_runtime_1.jsx)("button", { "data-playground-examples-toggle": true, onClick: () => setOpen((v) => !v), className: "px-3 py-1.5
|
|
38
|
+
return ((0, jsx_runtime_1.jsxs)("div", { ref: ref, className: "relative", children: [(0, jsx_runtime_1.jsx)("button", { "data-playground-examples-toggle": true, onClick: () => setOpen((v) => !v), className: "rounded-md border border-[#b9d5ee] bg-white px-3 py-1.5 font-mono text-xs text-[#235a97] transition-colors hover:border-[#3178c6] hover:bg-[#eaf4ff]", title: "Cmd/Ctrl+K", children: "Examples \u25BE" }), open && ((0, jsx_runtime_1.jsx)("div", { className: "absolute right-0 top-full z-10 mt-2 w-80 overflow-hidden rounded-xl border border-[#b9d5ee] bg-white shadow-[0_14px_42px_rgba(49,120,198,0.18)]", children: Object.entries(grouped).map(([group, items]) => ((0, jsx_runtime_1.jsxs)("div", { className: "border-b border-[#d8e7f4] last:border-b-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-[#f7fbff] px-3 py-1.5 font-mono text-[10px] uppercase tracking-wider text-slate-500", children: groupLabels?.[group] ?? group }), items.map((item) => ((0, jsx_runtime_1.jsxs)("button", { onClick: () => {
|
|
39
39
|
onPick(item.id);
|
|
40
40
|
setOpen(false);
|
|
41
|
-
}, className: "w-full
|
|
41
|
+
}, className: "w-full px-3 py-2 text-left transition-colors hover:bg-[#eaf4ff]", children: [(0, jsx_runtime_1.jsx)("div", { className: "font-mono text-[12px] text-[#102a43]", children: item.title }), (0, jsx_runtime_1.jsx)("div", { className: "mt-0.5 text-[10px] leading-snug text-slate-500", children: item.description })] }, item.id)))] }, group))) }))] }));
|
|
42
42
|
}
|
|
43
43
|
//# sourceMappingURL=ExamplePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExamplePicker.js","sourceRoot":"","sources":["../../../src/react/ExamplePicker.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCAA6D;AAW7D,uBAA8B,EAC5B,QAAQ,EACR,MAAM,EACN,WAAW,GACQ;IACnB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAEzC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,KAAK,GAAG,CAAC,CAAa,EAAE,EAAE;YAC9B,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,EAAE,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE;YACjC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9C,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC3B,OAAO,QAAQ,CAAC,MAAM,CAAuC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtE,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC;YAClC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,OAAO,CACL,iCAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,UAAU,aACjC,4EAEE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"ExamplePicker.js","sourceRoot":"","sources":["../../../src/react/ExamplePicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
9
9
|
*/
|
|
10
10
|
function LintPane({ diagnostics, emptyHint = "Powered by @ttsc/lint inside playground.wasm.", }) {
|
|
11
11
|
if (diagnostics.length === 0)
|
|
12
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center justify-center
|
|
13
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "overflow-auto h-full p-4 space-y-2", children: diagnostics.map((d, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-3
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col items-center justify-center gap-2 font-mono text-sm text-slate-500", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-emerald-400 text-xl", children: "\u2713" }), (0, jsx_runtime_1.jsx)("span", { children: "No lint diagnostics." }), (0, jsx_runtime_1.jsx)("span", { className: "max-w-xs text-center text-[10px] text-slate-400", children: emptyHint })] }));
|
|
13
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "overflow-auto h-full p-4 space-y-2", children: diagnostics.map((d, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-3 rounded-lg border border-[#d2e4f4] bg-[#f7fbff] p-3", children: [(0, jsx_runtime_1.jsx)("span", { className: `mt-0.5 text-[10px] font-mono px-1.5 py-0.5 rounded shrink-0 ${d.severity === "error"
|
|
14
14
|
? "text-red-300 bg-red-500/10"
|
|
15
|
-
: "text-yellow-300 bg-yellow-500/10"}`, children: d.severity }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-[11px]
|
|
15
|
+
: "text-yellow-300 bg-yellow-500/10"}`, children: d.severity }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-1 flex items-center gap-2 font-mono text-[11px] text-slate-500", children: [(0, jsx_runtime_1.jsx)("span", { children: d.code }), (0, jsx_runtime_1.jsx)("span", { children: "\u00B7" }), (0, jsx_runtime_1.jsxs)("span", { children: [d.line, ":", d.column] })] }), (0, jsx_runtime_1.jsx)("div", { className: "font-mono text-[13px] text-slate-700", children: d.message })] })] }, i))) }));
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=LintPane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LintPane.js","sourceRoot":"","sources":["../../../src/react/LintPane.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAIb;;;GAGG;AACH,kBAAyB,EACvB,WAAW,EACX,SAAS,GAAG,+CAA+C,GAI5D;IACC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO,CACL,iCAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"LintPane.js","sourceRoot":"","sources":["../../../src/react/LintPane.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAIb;;;GAGG;AACH,kBAAyB,EACvB,WAAW,EACX,SAAS,GAAG,+CAA+C,GAI5D;IACC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO,CACL,iCAAK,SAAS,EAAC,yFAAyF,aACtG,iCAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,oEAAiC,EACjC,iCAAM,SAAS,EAAC,iDAAiD,YAC9D,SAAS,GACL,IACH,CACP,CAAC;IACJ,OAAO,CACL,gCAAK,SAAS,EAAC,oCAAoC,YAChD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,iCAEE,SAAS,EAAC,gEAAgE,aAE1E,iCACE,SAAS,EAAE,+DACT,CAAC,CAAC,QAAQ,KAAK,OAAO;wBACpB,CAAC,CAAC,4BAA4B;wBAC9B,CAAC,CAAC,kCACN,EAAE,YAED,CAAC,CAAC,QAAQ,GACN,EACP,iCAAK,SAAS,EAAC,gBAAgB,aAC7B,iCAAK,SAAS,EAAC,mEAAmE,aAChF,2CAAO,CAAC,CAAC,IAAI,GAAQ,EACrB,sDAAc,EACd,6CACG,CAAC,CAAC,IAAI,OAAG,CAAC,CAAC,MAAM,IACb,IACH,EACN,gCAAK,SAAS,EAAC,sCAAsC,YAClD,CAAC,CAAC,OAAO,GACN,IACF,KAvBD,CAAC,CAwBF,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -38,6 +38,6 @@ function OptionsPanel({ options, onChange, onClose, toggles = DEFAULT_OPTION_TOG
|
|
|
38
38
|
focusable?.focus();
|
|
39
39
|
return () => window.removeEventListener("keydown", onKey);
|
|
40
40
|
}, [onClose]);
|
|
41
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-50 bg-
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-[#102a43]/35 backdrop-blur-sm", onClick: onClose, children: (0, jsx_runtime_1.jsxs)("div", { ref: dialogRef, role: "dialog", "aria-modal": "true", "aria-labelledby": "playground-options-title", className: "w-[480px] max-w-[90vw] rounded-2xl border border-[#b9d5ee] bg-white shadow-[0_30px_80px_rgba(35,90,151,0.25)]", onClick: (e) => e.stopPropagation(), children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between border-b border-[#c7dff4] bg-[#f7fbff] px-6 py-4", children: [(0, jsx_runtime_1.jsx)("h2", { id: "playground-options-title", className: "text-base font-semibold text-[#102a43]", children: title }), (0, jsx_runtime_1.jsx)("button", { onClick: onClose, className: "text-slate-400 transition-colors hover:text-[#235a97]", "aria-label": "Close options", children: "\u2715" })] }), (0, jsx_runtime_1.jsx)("div", { className: "p-6 space-y-6", children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "mb-3 font-mono text-[10px] uppercase tracking-wider text-slate-500", children: "Plugins" }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-3", children: toggles.map((t) => ((0, jsx_runtime_1.jsxs)("label", { className: "flex items-start gap-3 cursor-pointer group", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: !!options[t.key], onChange: () => toggle(t.key), className: "mt-1 w-4 h-4 accent-blue-500" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1", children: [(0, jsx_runtime_1.jsx)("div", { className: "font-mono text-sm text-slate-800 transition-colors group-hover:text-[#235a97]", children: t.label }), (0, jsx_runtime_1.jsx)("div", { className: "text-[11px] leading-snug text-slate-500", children: t.description })] })] }, t.key))) })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex justify-end border-t border-[#c7dff4] bg-[#f7fbff] px-6 py-4", children: (0, jsx_runtime_1.jsx)("button", { onClick: onClose, className: "rounded-md bg-[#3178c6] px-4 py-2 font-mono text-xs text-white transition-colors hover:bg-[#235a97]", children: "Done" }) })] }) }));
|
|
42
42
|
}
|
|
43
43
|
//# sourceMappingURL=OptionsPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OptionsPanel.js","sourceRoot":"","sources":["../../../src/react/OptionsPanel.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCAA0C;AAI1C,qEAAkE;AAYlE,sBAA6B,EAC3B,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,GAAG,+CAAsB,EAChC,KAAK,GAAG,mBAAmB,GACT;IAClB,MAAM,SAAS,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAC7B,QAAQ,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEjD,gDAAgD;IAChD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE;YACjC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,OAAO;YAClD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAClD,0EAA0E,CAC3E,CAAC;YACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACnC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YAC9C,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;gBACnD,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;iBAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC1D,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,2CAA2C;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,aAAa,CAChD,gDAAgD,CACjD,CAAC;QACF,SAAS,EAAE,KAAK,EAAE,CAAC;QACnB,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,gCACE,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"OptionsPanel.js","sourceRoot":"","sources":["../../../src/react/OptionsPanel.tsx"],"names":[],"mappings":"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"}
|