@vizhub/runtime 0.7.0 → 1.0.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.
Files changed (43) hide show
  1. package/README.md +71 -21
  2. package/dist/build/build.d.ts.map +1 -1
  3. package/dist/build/determineRuntimeVersion.d.ts.map +1 -1
  4. package/dist/build/index.d.ts +1 -0
  5. package/dist/build/index.d.ts.map +1 -1
  6. package/dist/common/sucrasePlugin.d.ts +1 -1
  7. package/dist/common/sucrasePlugin.d.ts.map +1 -1
  8. package/dist/common/virtualFileSystem.d.ts +2 -1
  9. package/dist/common/virtualFileSystem.d.ts.map +1 -1
  10. package/dist/index.cjs +206 -1
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +591 -129
  15. package/dist/index.js.map +1 -1
  16. package/dist/orchestration/createRuntime.d.ts.map +1 -1
  17. package/dist/orchestration/types.d.ts.map +1 -1
  18. package/dist/slugCache-C1nrdh7e.js +151 -0
  19. package/dist/slugCache-C1nrdh7e.js.map +1 -0
  20. package/dist/slugCache-Dz-ZY2WW.cjs +2 -0
  21. package/dist/slugCache-Dz-ZY2WW.cjs.map +1 -0
  22. package/dist/test/fixtures/v4/index.d.ts +2 -0
  23. package/dist/test/fixtures/v4/index.d.ts.map +1 -1
  24. package/dist/test/fixtures/v4/jsScriptTagTypeModulesRelative.d.ts +6 -0
  25. package/dist/test/fixtures/v4/jsScriptTagTypeModulesRelative.d.ts.map +1 -0
  26. package/dist/test/fixtures/v4/reactJsx.d.ts +0 -1
  27. package/dist/test/fixtures/v4/reactJsx.d.ts.map +1 -1
  28. package/dist/test/fixtures/v4/reactJsxWithoutImport.d.ts +6 -0
  29. package/dist/test/fixtures/v4/reactJsxWithoutImport.d.ts.map +1 -0
  30. package/dist/test/testInBrowser.d.ts +1 -1
  31. package/dist/test/testInBrowser.d.ts.map +1 -1
  32. package/dist/v3/slugCache.d.ts.map +1 -1
  33. package/dist/v4/bundleModule.d.ts.map +1 -1
  34. package/dist/v4/catchAll.d.ts +8 -0
  35. package/dist/v4/catchAll.d.ts.map +1 -0
  36. package/dist/worker.cjs +1 -1
  37. package/dist/worker.cjs.map +1 -1
  38. package/dist/worker.js +4 -4
  39. package/package.json +3 -3
  40. package/dist/build-BAZMN_vU.cjs +0 -214
  41. package/dist/build-BAZMN_vU.cjs.map +0 -1
  42. package/dist/build-NWFvyYnC.js +0 -866
  43. package/dist/build-NWFvyYnC.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,212 +1,674 @@
1
- import { g as D } from "./build-NWFvyYnC.js";
2
- import { b as x, c as G, d as _, a as A, e as F, s as J, v as T } from "./build-NWFvyYnC.js";
3
- const S = (n) => async (t) => {
4
- const i = D();
1
+ import { g as L, p as N, t as $ } from "./slugCache-C1nrdh7e.js";
2
+ import { b as de, a as pe, c as fe, d as me, s as ve } from "./slugCache-C1nrdh7e.js";
3
+ import { isVizId as F, getFileText as z, generateVizId as T, fileCollectionToVizFiles as D } from "@vizhub/viz-utils";
4
+ import { transform as V } from "sucrase";
5
+ const W = (e) => async (t) => {
6
+ const n = L();
5
7
  return new Promise((r) => {
6
- const u = (l) => {
7
- l.data.type === "invalidateVizCacheResponse" && l.data.requestId === i && (n.removeEventListener(
8
+ const s = (o) => {
9
+ o.data.type === "invalidateVizCacheResponse" && o.data.requestId === n && (e.removeEventListener(
8
10
  "message",
9
- u
11
+ s
10
12
  ), r());
11
13
  };
12
- n.addEventListener(
14
+ e.addEventListener(
13
15
  "message",
14
- u
15
- ), n.postMessage({
16
+ s
17
+ ), e.postMessage({
16
18
  type: "invalidateVizCacheRequest",
17
19
  changedVizIds: t,
18
- requestId: i
20
+ requestId: n
19
21
  });
20
22
  });
21
- }, b = ({
22
- worker: n,
23
+ }, P = ({
24
+ worker: e,
23
25
  setBuildErrorMessage: t
24
26
  }) => ({
25
- files: i,
27
+ files: n,
26
28
  enableSourcemap: r,
27
- vizId: u
29
+ vizId: s
28
30
  }) => {
29
- const l = D();
31
+ const o = L();
30
32
  return new Promise(
31
- (s) => {
32
- const c = (v) => {
33
- const d = v.data;
34
- if (d.type === "buildResponse" && d.requestId === l) {
35
- n.removeEventListener(
33
+ (c) => {
34
+ const a = (m) => {
35
+ const p = m.data;
36
+ if (p.type === "buildResponse" && p.requestId === o) {
37
+ e.removeEventListener(
36
38
  "message",
37
- c
39
+ a
38
40
  );
39
- const E = d.buildResult, f = d.error;
40
- f ? t == null || t(f) : t == null || t(null), s(E);
41
+ const g = p.buildResult, v = p.error;
42
+ v ? t == null || t(v) : t == null || t(null), c(g);
41
43
  }
42
44
  };
43
- n.addEventListener("message", c);
44
- const h = {
45
+ e.addEventListener("message", a);
46
+ const u = {
45
47
  type: "buildRequest",
46
- files: i,
48
+ files: n,
47
49
  enableSourcemap: r,
48
- requestId: l,
49
- vizId: u
50
+ requestId: o,
51
+ vizId: s
50
52
  };
51
- n.postMessage(h);
53
+ e.postMessage(u);
52
54
  }
53
55
  );
54
- }, R = "IDLE", y = "ENQUEUED", L = "PENDING_CLEAN", g = "PENDING_DIRTY", P = ({
55
- iframe: n,
56
+ }, S = "IDLE", b = "ENQUEUED", R = "PENDING_CLEAN", x = "PENDING_DIRTY", oe = ({
57
+ iframe: e,
56
58
  worker: t,
57
- setBuildErrorMessage: i,
59
+ setBuildErrorMessage: n,
58
60
  getLatestContent: r,
59
- resolveSlugKey: u,
60
- writeFile: l
61
+ resolveSlugKey: s,
62
+ writeFile: o
61
63
  }) => {
62
- let s = R, c = null;
63
- const h = b({
64
+ let c = S, a = null;
65
+ const u = P({
64
66
  worker: t,
65
- setBuildErrorMessage: i
66
- }), v = ({
67
- data: o
67
+ setBuildErrorMessage: n
68
+ }), m = ({
69
+ data: l
68
70
  }) => {
69
- if (o.type === "contentRequest" && r) {
70
- const { vizId: e } = o;
71
- r(e).then((a) => {
71
+ if (l.type === "contentRequest" && r) {
72
+ const { vizId: i } = l;
73
+ r(i).then((d) => {
72
74
  t.postMessage({
73
75
  type: "contentResponse",
74
- vizId: e,
75
- content: a
76
+ vizId: i,
77
+ content: d
76
78
  });
77
79
  });
78
- } else if (o.type === "resolveSlugRequest") {
79
- const { slugKey: e, requestId: a } = o;
80
- if (u)
81
- u(e).then(
82
- (p) => {
83
- const m = {
80
+ } else if (l.type === "resolveSlugRequest") {
81
+ const { slugKey: i, requestId: d } = l;
82
+ if (s)
83
+ s(i).then(
84
+ (f) => {
85
+ const h = {
84
86
  type: "resolveSlugResponse",
85
- vizId: p,
86
- requestId: a
87
+ vizId: f,
88
+ requestId: d
87
89
  };
88
- t.postMessage(m);
90
+ t.postMessage(h);
89
91
  }
90
92
  );
91
93
  else {
92
- const p = {
94
+ const f = {
93
95
  type: "resolveSlugResponse",
94
96
  vizId: null,
95
- requestId: a
97
+ requestId: d
96
98
  };
97
- t.postMessage(p);
99
+ t.postMessage(f);
98
100
  }
99
101
  }
100
102
  };
101
- t.addEventListener("message", v);
102
- const d = (o) => {
103
- const e = o.data;
104
- (e.type === "runDone" || e.type === "runError") && e.type === "runError" && i && i(e.error.message), e.type === "writeFile" && l && e.fileName && e.content && l(e.fileName, e.content);
103
+ t.addEventListener("message", m);
104
+ const p = (l) => {
105
+ const i = l.data;
106
+ (i.type === "runDone" || i.type === "runError") && i.type === "runError" && n && n(i.error.message), i.type === "writeFile" && o && i.fileName && i.content && o(i.fileName, i.content);
105
107
  };
106
- window.addEventListener("message", d);
107
- const E = () => {
108
- t.removeEventListener("message", v), window.removeEventListener("message", d);
109
- }, f = async ({
110
- files: o,
111
- enableHotReloading: e = !1,
112
- enableSourcemap: a = !1,
113
- vizId: p
108
+ window.addEventListener("message", p);
109
+ const g = () => {
110
+ t.removeEventListener("message", m), window.removeEventListener("message", p);
111
+ }, v = async ({
112
+ files: l,
113
+ enableHotReloading: i = !1,
114
+ enableSourcemap: d = !1,
115
+ vizId: f
114
116
  }) => {
115
- s = L;
116
- const m = await h({
117
- files: o,
118
- enableSourcemap: a,
119
- vizId: p
117
+ c = R;
118
+ const h = await u({
119
+ files: l,
120
+ enableSourcemap: d,
121
+ vizId: f
120
122
  });
121
- if (m) {
122
- const { html: C, js: N, css: w } = m;
123
- if (console.clear(), e) {
124
- if (w) {
123
+ if (h) {
124
+ const { html: w, js: y, css: j } = h;
125
+ if (console.clear(), i) {
126
+ if (j) {
125
127
  const I = {
126
128
  type: "runCSS",
127
- css: w
129
+ css: j
128
130
  };
129
- if (!n.contentWindow)
131
+ if (!e.contentWindow)
130
132
  throw new Error(
131
133
  "iframe.contentWindow is null - this should never happen"
132
134
  );
133
- n.contentWindow.postMessage(
135
+ e.contentWindow.postMessage(
134
136
  I,
135
137
  window.location.origin
136
138
  );
137
139
  }
138
- if (N) {
140
+ if (y) {
139
141
  const I = {
140
142
  type: "runJS",
141
- js: N
143
+ js: y
142
144
  };
143
- if (!n.contentWindow)
145
+ if (!e.contentWindow)
144
146
  throw new Error(
145
147
  "iframe.contentWindow is null - this should never happen"
146
148
  );
147
- n.contentWindow.postMessage(
149
+ e.contentWindow.postMessage(
148
150
  I,
149
151
  window.location.origin
150
152
  );
151
153
  }
152
154
  } else
153
- n.srcdoc = C || "";
155
+ e.srcdoc = w || "";
154
156
  }
155
- s === g ? (requestAnimationFrame(() => {
156
- if (!c)
157
+ c === x ? (requestAnimationFrame(() => {
158
+ if (!a)
157
159
  throw new Error(
158
160
  "latestFiles is not defined and state is PENDING_DIRTY - this should never happen"
159
161
  );
160
- f({
161
- files: c,
162
- enableHotReloading: e,
163
- enableSourcemap: a,
164
- vizId: p
162
+ v({
163
+ files: a,
164
+ enableHotReloading: i,
165
+ enableSourcemap: d,
166
+ vizId: f
165
167
  });
166
- }), s = y) : s = R;
167
- }, q = ({
168
- files: o,
169
- enableHotReloading: e = !1,
170
- enableSourcemap: a = !1,
171
- vizId: p = void 0
168
+ }), c = b) : c = S;
169
+ }, E = ({
170
+ files: l,
171
+ enableHotReloading: i = !1,
172
+ enableSourcemap: d = !1,
173
+ vizId: f = void 0
172
174
  }) => {
173
- if (c = null, s === R)
174
- s = y, f({
175
- files: o,
176
- enableHotReloading: e,
177
- enableSourcemap: a,
178
- vizId: p
175
+ if (a = null, c === S)
176
+ c = b, v({
177
+ files: l,
178
+ enableHotReloading: i,
179
+ enableSourcemap: d,
180
+ vizId: f
179
181
  });
180
- else if (s === L)
181
- c = o, s = g;
182
- else if (s === g)
183
- c = o;
184
- else if (s === y)
185
- c = o;
182
+ else if (c === R)
183
+ a = l, c = x;
184
+ else if (c === x)
185
+ a = l;
186
+ else if (c === b)
187
+ a = l;
186
188
  else
187
- throw new Error(`Unexpected state: ${s}`);
189
+ throw new Error(`Unexpected state: ${c}`);
188
190
  };
189
191
  return {
190
- invalidateVizCache: S(t),
191
- run: q,
192
- cleanup: E
192
+ invalidateVizCache: W(t),
193
+ run: E,
194
+ cleanup: g
193
195
  };
194
- }, V = ({
195
- rawMessage: n,
196
- vizId: t
196
+ };
197
+ function A(e = {}) {
198
+ return {
199
+ name: "sucrase",
200
+ transform(t, n) {
201
+ if (!n.match(/\.(?:js|[jt]sx)$/))
202
+ return null;
203
+ const r = V(t, {
204
+ transforms: ["jsx", "typescript"],
205
+ // For source maps
206
+ filePath: n,
207
+ sourceMapOptions: {
208
+ compiledFilename: "bundle.js"
209
+ },
210
+ production: !0,
211
+ ...e
212
+ });
213
+ return {
214
+ code: r.code,
215
+ map: r.sourceMap
216
+ };
217
+ }
218
+ };
219
+ }
220
+ const O = {
221
+ dependencies: {},
222
+ vizhub: {},
223
+ license: "MIT"
224
+ }, U = !1, C = (e) => {
225
+ const t = e["package.json"];
226
+ try {
227
+ const n = t ? JSON.parse(t) : O;
228
+ return U && console.log(
229
+ "[packageJSON] pkg:",
230
+ JSON.stringify(n, null, 2)
231
+ ), n;
232
+ } catch {
233
+ return O;
234
+ }
235
+ }, J = (e) => C(e).dependencies || {}, q = (e) => (C(e).vizhub || {}).libraries || {}, G = ({ name: e, version: t }, n, r = "jsdelivr") => {
236
+ const s = n[e] && n[e].path || "";
237
+ return r === "jsdelivr" ? `https://cdn.jsdelivr.net/npm/${e}@${t}${s}` : `https://unpkg.com/${e}@${t}${s}`;
238
+ }, k = (e) => {
239
+ var n;
240
+ const t = (n = e == null ? void 0 : e.vizhub) == null ? void 0 : n.libraries;
241
+ return t ? Object.entries(t).reduce(
242
+ (r, [s, o]) => (o.global && (r[s] = o.global), r),
243
+ {}
244
+ ) : {};
245
+ }, _ = {
246
+ d3: "d3",
247
+ react: "React",
248
+ "react-dom": "ReactDOM"
249
+ }, M = (e) => {
250
+ const t = k(e);
251
+ return {
252
+ ..._,
253
+ ...t
254
+ };
255
+ }, Q = `var EOL = {},
256
+ EOF = {},
257
+ QUOTE = 34,
258
+ NEWLINE = 10,
259
+ RETURN = 13;
260
+
261
+ function objectConverter(columns) {
262
+ return new Function(
263
+ 'd',
264
+ 'return {' +
265
+ columns
266
+ .map(function (name, i) {
267
+ return (
268
+ JSON.stringify(name) + ': d[' + i + '] || ""'
269
+ );
270
+ })
271
+ .join(',') +
272
+ '}',
273
+ );
274
+ }
275
+
276
+ function customConverter(columns, f) {
277
+ var object = objectConverter(columns);
278
+ return function (row, i) {
279
+ return f(object(row), i, columns);
280
+ };
281
+ }
282
+
283
+ function dsv(delimiter) {
284
+ var DELIMITER = delimiter.charCodeAt(0);
285
+
286
+ function parse(text, f) {
287
+ var convert,
288
+ columns,
289
+ rows = parseRows(text, function (row, i) {
290
+ if (convert) return convert(row, i - 1);
291
+ (columns = row),
292
+ (convert = f
293
+ ? customConverter(row, f)
294
+ : objectConverter(row));
295
+ });
296
+ rows.columns = columns || [];
297
+ return rows;
298
+ }
299
+
300
+ function parseRows(text, f) {
301
+ var rows = [], // output rows
302
+ N = text.length,
303
+ I = 0, // current character index
304
+ n = 0, // current line number
305
+ t, // current token
306
+ eof = N <= 0, // current token followed by EOF?
307
+ eol = false; // current token followed by EOL?
308
+
309
+ // Strip the trailing newline.
310
+ if (text.charCodeAt(N - 1) === NEWLINE) --N;
311
+ if (text.charCodeAt(N - 1) === RETURN) --N;
312
+
313
+ function token() {
314
+ if (eof) return EOF;
315
+ if (eol) return (eol = false), EOL;
316
+
317
+ // Unescape quotes.
318
+ var i,
319
+ j = I,
320
+ c;
321
+ if (text.charCodeAt(j) === QUOTE) {
322
+ while (
323
+ (I++ < N && text.charCodeAt(I) !== QUOTE) ||
324
+ text.charCodeAt(++I) === QUOTE
325
+ );
326
+ if ((i = I) >= N) eof = true;
327
+ else if ((c = text.charCodeAt(I++)) === NEWLINE)
328
+ eol = true;
329
+ else if (c === RETURN) {
330
+ eol = true;
331
+ if (text.charCodeAt(I) === NEWLINE) ++I;
332
+ }
333
+ return text.slice(j + 1, i - 1).replace(/""/g, '"');
334
+ }
335
+
336
+ // Find next delimiter or newline.
337
+ while (I < N) {
338
+ if ((c = text.charCodeAt((i = I++))) === NEWLINE)
339
+ eol = true;
340
+ else if (c === RETURN) {
341
+ eol = true;
342
+ if (text.charCodeAt(I) === NEWLINE) ++I;
343
+ } else if (c !== DELIMITER) continue;
344
+ return text.slice(j, i);
345
+ }
346
+
347
+ // Return last token before EOF.
348
+ return (eof = true), text.slice(j, N);
349
+ }
350
+
351
+ while ((t = token()) !== EOF) {
352
+ var row = [];
353
+ while (t !== EOL && t !== EOF)
354
+ row.push(t), (t = token());
355
+ if (f && (row = f(row, n++)) == null) continue;
356
+ rows.push(row);
357
+ }
358
+
359
+ return rows;
360
+ }
361
+
362
+ return {
363
+ parse: parse,
364
+ };
365
+ }
366
+
367
+ var csv = dsv(',');
368
+
369
+ var csvParse = csv.parse;
370
+
371
+ var tsv = dsv(' ');
372
+
373
+ var tsvParse = tsv.parse;
374
+
375
+ export { csvParse, tsvParse };`, Y = (e) => (
376
+ // str.replace(/`/g, '\\`');
377
+ e.replace(/\\/g, "\\\\").replace(/`/g, "\\`")
378
+ ), Z = () => ({
379
+ name: "transformDSV",
380
+ // `id` here is of the form
381
+ // `{vizId}/{fileName}`
382
+ transform: async (e, t) => {
383
+ const { fileName: n } = N(t), r = n.endsWith(".csv"), s = n.endsWith(".tsv");
384
+ if (r || s)
385
+ return {
386
+ code: `
387
+ ${Q}
388
+ const data = ${r ? "csvParse" : "tsvParse"}(\`${Y(e)}\`);
389
+ export default data;
390
+ `,
391
+ map: { mappings: "" }
392
+ };
393
+ }
394
+ }), K = (e) => {
395
+ const t = /^@([a-zA-Z0-9_-]+)\/([a-zA-Z0-9_-]+)$/, n = e.match(t);
396
+ return n ? {
397
+ userName: n[1],
398
+ idOrSlug: n[2]
399
+ } : null;
400
+ }, X = ({
401
+ vizId: e,
402
+ slugCache: t
403
+ }) => ({
404
+ name: "vizResolve",
405
+ resolveId: async (n, r) => {
406
+ if (n.startsWith("./") && !(r != null && r.startsWith("https://"))) {
407
+ let o = n.substring(2);
408
+ if (!o.endsWith(".js") && !o.endsWith(".css") && !o.endsWith(".csv") && !o.endsWith(".svelte") && (o += ".js"), r) {
409
+ const {
410
+ vizId: c,
411
+ fileName: a
412
+ } = N(r), u = a.split("/").slice(0, -1).join("/"), m = u ? `${u}/${o}` : o;
413
+ return `${c}/${m}`;
414
+ }
415
+ return e + "/" + o;
416
+ }
417
+ const s = K(n);
418
+ if (s) {
419
+ let o;
420
+ if (F(s.idOrSlug))
421
+ o = s.idOrSlug;
422
+ else {
423
+ if (!t)
424
+ throw new Error(
425
+ "slugCache is required to import by slug in v3 runtime"
426
+ );
427
+ o = await t.get(
428
+ `${s.userName}/${s.idOrSlug}`
429
+ );
430
+ }
431
+ return o + "/index.js";
432
+ }
433
+ }
434
+ }), H = ({
435
+ vizCache: e,
436
+ trackCSSImport: t,
437
+ vizId: n,
438
+ files: r
439
+ }) => ({
440
+ name: "vizLoad",
441
+ // `id` here is of the form
442
+ // `{vizId}/{fileName}`
443
+ load: async (s) => {
444
+ const o = N(s), c = o.vizId, a = o.fileName;
445
+ if (a.endsWith(".css"))
446
+ return t(s), "";
447
+ let u = null;
448
+ if (c === n && r)
449
+ u = r[a] || null;
450
+ else {
451
+ const m = await e.get(c);
452
+ u = z(m, a);
453
+ }
454
+ if (u === null)
455
+ throw new Error(
456
+ `Imported file "${a}" not found.`
457
+ );
458
+ return u;
459
+ }
460
+ }), B = async ({
461
+ files: e,
462
+ rollup: t,
463
+ enableSourcemap: n = !0,
464
+ vizCache: r,
465
+ vizId: s,
466
+ slugCache: o,
467
+ getSvelteCompiler: c
197
468
  }) => {
198
- const i = new RegExp(t, "g");
199
- return n == null ? void 0 : n.replace(i, ".");
469
+ const a = /* @__PURE__ */ new Set(), u = (i) => {
470
+ a.add(i);
471
+ };
472
+ if (!e["index.js"])
473
+ throw new Error("Missing index.js");
474
+ const p = {
475
+ input: "./index.js",
476
+ plugins: [
477
+ ...s ? [X({ vizId: s, slugCache: o })] : [],
478
+ Z(),
479
+ A(),
480
+ $({ getSvelteCompiler: c }),
481
+ ...r ? [
482
+ H({
483
+ vizCache: r,
484
+ trackCSSImport: u,
485
+ vizId: s,
486
+ files: e
487
+ })
488
+ ] : []
489
+ ],
490
+ onwarn(i, d) {
491
+ i.code !== "UNRESOLVED_IMPORT" && d(i);
492
+ }
493
+ }, g = {
494
+ format: "umd",
495
+ name: "Viz",
496
+ sourcemap: !!n,
497
+ compact: !0
498
+ }, v = C(e);
499
+ if (v) {
500
+ const i = M(v);
501
+ i && (p.external = Object.keys(i), g.globals = i);
502
+ }
503
+ const E = await t(p), { output: l } = await E.generate(g);
504
+ return {
505
+ src: l[0].code,
506
+ cssFiles: Array.from(a)
507
+ };
200
508
  };
509
+ function ee() {
510
+ return Math.random().toString().slice(2, 7);
511
+ }
512
+ const te = ({
513
+ cdn: e,
514
+ src: t,
515
+ styles: n
516
+ }) => {
517
+ const s = `viz-container-${ee()}`;
518
+ return `<!DOCTYPE html>
519
+ <html>
520
+ <head>
521
+ <meta charset="utf-8">${e}${n}
522
+ <style>
523
+ body {
524
+ margin: 0;
525
+ overflow: hidden;
526
+ }
527
+ #${s} {
528
+ height: 100vh;
529
+ }
530
+ </style>
531
+ </head>
532
+ <body>
533
+ <div id="${s}"></div>
534
+ <script id="injected-script">${t}<\/script>
535
+ <script>
536
+ (() => {
537
+ let cleanup;
538
+ const render = () => {
539
+ const container = document.getElementById('${s}');
540
+ typeof cleanup === 'function' && cleanup();
541
+ cleanup = Viz.main(container, { state: window.state, setState, writeFile });
542
+ };
543
+ const setState = (next) => {
544
+ window.state = next(window.state);
545
+ render();
546
+ };
547
+ const writeFile = (fileName, content) => {
548
+ parent.postMessage({ type: 'writeFile', fileName, content }, "*");
549
+ };
550
+ const run = () => {
551
+ try {
552
+ setState((state) => state || {});
553
+ } catch (error) {
554
+ console.error(error);
555
+ parent.postMessage({ type: 'runError', error }, "*");
556
+ }
557
+ }
558
+ run();
559
+ const runJS = (src) => {
560
+ document.getElementById('injected-script')?.remove();
561
+ const script = document.createElement('script');
562
+ script.textContent = src;
563
+ script.id = 'injected-script';
564
+ document.body.appendChild(script);
565
+ run();
566
+ };
567
+ const runCSS = (css) => {
568
+ let style = document.getElementById('injected-style');
569
+ if (!style) {
570
+ style = document.createElement('style');
571
+ style.type = 'text/css';
572
+ style.id = 'injected-style';
573
+ document.head.appendChild(style);
574
+ }
575
+ style.textContent = css;
576
+ };
577
+ onmessage = (message) => {
578
+ switch (message.data.type) {
579
+ case 'runJS':
580
+ runJS(message.data.js);
581
+ parent.postMessage({ type: 'runDone' }, "*");
582
+ break;
583
+ case 'runCSS':
584
+ runCSS(message.data.css);
585
+ break;
586
+ case 'ping':
587
+ parent.postMessage({ type: 'pong' }, "*");
588
+ break;
589
+ default:
590
+ break;
591
+ }
592
+ }
593
+ })();
594
+ <\/script>
595
+ </body>
596
+ </html>`;
597
+ }, ie = async ({
598
+ files: e,
599
+ rollup: t,
600
+ enableSourcemap: n = !0,
601
+ vizCache: r,
602
+ vizId: s,
603
+ slugCache: o,
604
+ getSvelteCompiler: c
605
+ }) => {
606
+ const { src: a, cssFiles: u } = await B({
607
+ files: e,
608
+ rollup: t,
609
+ enableSourcemap: n,
610
+ vizCache: r,
611
+ vizId: s,
612
+ slugCache: o,
613
+ getSvelteCompiler: c
614
+ });
615
+ let m = [];
616
+ if (u.length > 0)
617
+ for (let l = 0; l < u.length; l++) {
618
+ const i = u[l], d = N(i), f = d.vizId, h = d.fileName;
619
+ let w = null;
620
+ if (f === s && e)
621
+ w = e[h] || null;
622
+ else {
623
+ const y = await r.get(f);
624
+ w = z(y, h);
625
+ }
626
+ w && m.push(w);
627
+ }
628
+ const p = m.join(`
629
+ `), g = `
630
+ <style id="injected-style">${p}</style>`;
631
+ let v = "";
632
+ const E = Object.entries(
633
+ J(e)
634
+ );
635
+ if (E.length > 0) {
636
+ const l = q(e);
637
+ v = E.map(([i, d], f) => {
638
+ const h = G(
639
+ { name: i, version: d },
640
+ l
641
+ );
642
+ return `${f > 0 ? " " : `
643
+ `}<script src="${h}"><\/script>`;
644
+ }).join("");
645
+ }
646
+ return {
647
+ html: te({ cdn: v, src: a, styles: g }),
648
+ css: p,
649
+ js: a
650
+ };
651
+ }, ce = ({
652
+ rawMessage: e,
653
+ vizId: t
654
+ }) => {
655
+ const n = new RegExp(t, "g");
656
+ return e == null ? void 0 : e.replace(n, ".");
657
+ }, ae = (e, t = "Sample Content for Exporting", n = T()) => ({
658
+ id: n,
659
+ files: D(e),
660
+ title: t
661
+ });
201
662
  export {
202
- x as build,
203
- V as cleanRollupErrorMessage,
204
- G as computeBundleJSV3,
205
- P as createRuntime,
206
- _ as createSlugCache,
207
- A as createVizCache,
208
- F as createVizContent,
209
- J as svelteCompilerUrl,
210
- T as v3Build
663
+ de as build,
664
+ ce as cleanRollupErrorMessage,
665
+ B as computeBundleJSV3,
666
+ oe as createRuntime,
667
+ pe as createSlugCache,
668
+ fe as createVizCache,
669
+ ae as createVizContent,
670
+ me as determineRuntimeVersion,
671
+ ve as svelteCompilerUrl,
672
+ ie as v3Build
211
673
  };
212
674
  //# sourceMappingURL=index.js.map