@draftably/runtime 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/viewer.js CHANGED
@@ -1,5 +1,7 @@
1
- import { r as ce, F as ee } from "./render-ZzhO-2H6.js";
2
- import { f as Ee, a as ke } from "./render-ZzhO-2H6.js";
1
+ import { r as ce } from "./render-Dgo42PR4.js";
2
+ import { a as ke } from "./render-Dgo42PR4.js";
3
+ import { F as ee } from "./compile-Csfz4rk4.js";
4
+ import { h as Ae } from "./compile-Csfz4rk4.js";
3
5
  const de = "http://www.w3.org/2000/svg", le = new Set(
4
6
  "svg title desc metadata defs style marker g a path rect ellipse circle line polyline polygon text tspan".split(
5
7
  " "
@@ -84,7 +86,7 @@ function K(y, c, V) {
84
86
  diagnostics: [{ code: c, severity: "error", message: V, itemIds: [] }]
85
87
  };
86
88
  }
87
- function ve(y, c = {}) {
89
+ function be(y, c = {}) {
88
90
  const V = y?.ownerDocument?.defaultView;
89
91
  if (!V || !(y instanceof V.HTMLElement))
90
92
  throw new TypeError("host must be an HTMLElement.");
@@ -102,9 +104,9 @@ function ve(y, c = {}) {
102
104
  const w = s.createElement("ol");
103
105
  w.className = "draft-viewer__outline", w.setAttribute("aria-label", "Diagram outline"), l.append(b, o, f, w), y.append(l);
104
106
  const p = `draftViewer${(++me).toString(36)}${Math.random().toString(36).slice(2, 9)}`;
105
- let m = 0, x = !1, a = { centerX: 0, centerY: 0, zoom: 1 }, _ = !1, u, F, q, te = 0;
106
- const N = /* @__PURE__ */ new Map(), G = /* @__PURE__ */ new Map(), B = /* @__PURE__ */ new Map(), L = (e, r) => {
107
- for (const t of G.get(e) ?? [])
107
+ let m = 0, x = !1, a = { centerX: 0, centerY: 0, zoom: 1 }, _ = !1, u, C, q, te = 0;
108
+ const N = /* @__PURE__ */ new Map(), U = /* @__PURE__ */ new Map(), B = /* @__PURE__ */ new Map(), L = (e, r) => {
109
+ for (const t of U.get(e) ?? [])
108
110
  try {
109
111
  t(r);
110
112
  } catch {
@@ -161,9 +163,9 @@ function ve(y, c = {}) {
161
163
  if (!g) throw new Error("The browser cannot load embedded diagram fonts.");
162
164
  return Promise.all(
163
165
  S.map(async (n) => {
164
- const h = `${n.family}:${n.weight}`, C = N.get(h);
165
- if (C?.status === "loaded" && Array.from(s.fonts).includes(C))
166
- return { key: h, face: C };
166
+ const h = `${n.family}:${n.weight}`, F = N.get(h);
167
+ if (F?.status === "loaded" && Array.from(s.fonts).includes(F))
168
+ return { key: h, face: F };
167
169
  const d = new g(n.family, `url("${n.data}")`, { weight: n.weight });
168
170
  if (await d.load(), d.status !== "loaded")
169
171
  throw new Error(`Embedded font ${n.family} ${n.weight} did not load.`);
@@ -172,12 +174,12 @@ function ve(y, c = {}) {
172
174
  );
173
175
  }, z = (e) => {
174
176
  const r = q;
175
- q = void 0, r && (v.clearTimeout(r.timer), r.cleanup(), r.finish(void 0, e ?? new Error("Viewer render was cancelled."))), F?.terminate(), F = void 0;
177
+ q = void 0, r && (v.clearTimeout(r.timer), r.cleanup(), r.finish(void 0, e ?? new Error("Viewer render was cancelled."))), C?.terminate(), C = void 0;
176
178
  }, ae = (e, r, t) => (c.execution ?? { mode: "worker" }).mode === "main" ? ce(e, { ...r, signal: t }) : new Promise((S, g) => {
177
179
  const n = ++te;
178
180
  let h = !1;
179
- const C = () => {
180
- F && (F.removeEventListener("message", E), F.removeEventListener("error", W), F.removeEventListener("messageerror", U), t?.removeEventListener("abort", H));
181
+ const F = () => {
182
+ C && (C.removeEventListener("message", E), C.removeEventListener("error", W), C.removeEventListener("messageerror", G), t?.removeEventListener("abort", H));
181
183
  }, d = (k, D) => {
182
184
  if (h) return;
183
185
  h = !0;
@@ -187,18 +189,18 @@ function ve(y, c = {}) {
187
189
  k.data?.id === n && d(k.data.result);
188
190
  }, W = (k) => {
189
191
  k.preventDefault(), z(new Error(k.message || "Viewer render worker failed."));
190
- }, U = () => z(new Error("Viewer render worker returned an unreadable result.")), H = () => z(new Error("Viewer render was aborted."));
192
+ }, G = () => z(new Error("Viewer render worker returned an unreadable result.")), H = () => z(new Error("Viewer render was aborted."));
191
193
  try {
192
- F ??= c.execution?.mode === "worker" && c.execution.createWorker ? c.execution.createWorker() : new Worker(new URL(
194
+ C ??= c.execution?.mode === "worker" && c.execution.createWorker ? c.execution.createWorker() : new Worker(new URL(
193
195
  /* @vite-ignore */
194
- "" + new URL("assets/render.worker-fWW85Tf9.js", import.meta.url).href,
196
+ "" + new URL("assets/render.worker-dvseyGmC.js", import.meta.url).href,
195
197
  import.meta.url
196
- ), { type: "module" }), F.addEventListener("message", E), F.addEventListener("error", W), F.addEventListener("messageerror", U), t?.addEventListener("abort", H, { once: !0 });
198
+ ), { type: "module" }), C.addEventListener("message", E), C.addEventListener("error", W), C.addEventListener("messageerror", G), t?.addEventListener("abort", H, { once: !0 });
197
199
  const k = c.execution?.mode === "worker" ? c.execution.timeoutMs ?? 5e3 : 5e3, D = v.setTimeout(
198
200
  () => z(new Error("Viewer render worker timed out.")),
199
201
  k
200
202
  );
201
- q = { id: n, timer: D, finish: d, cleanup: C }, F.postMessage({ id: n, source: e, options: r });
203
+ q = { id: n, timer: D, finish: d, cleanup: F }, C.postMessage({ id: n, source: e, options: r });
202
204
  } catch (k) {
203
205
  z(
204
206
  k instanceof Error ? k : new Error("Viewer render worker could not start.")
@@ -276,14 +278,14 @@ function ve(y, c = {}) {
276
278
  return;
277
279
  }
278
280
  r.signal?.addEventListener("abort", h, { once: !0 });
279
- const C = {
281
+ const F = {
280
282
  ...c.render ?? {},
281
283
  target: "inline",
282
284
  idPrefix: p,
283
285
  fonts: c.render?.fonts ?? "embed",
284
286
  ...r.state !== void 0 ? { state: r.state } : {}
285
287
  };
286
- ae(e, C, r.signal).then(async (d) => {
288
+ ae(e, F, r.signal).then(async (d) => {
287
289
  if (x || t !== m || r.signal?.aborted) {
288
290
  n({ status: "superseded", revision: t });
289
291
  return;
@@ -294,7 +296,7 @@ function ve(y, c = {}) {
294
296
  }
295
297
  let E;
296
298
  try {
297
- E = await oe(d.value.svg, C.fonts ?? "embed");
299
+ E = await oe(d.value.svg, F.fonts ?? "embed");
298
300
  } catch (i) {
299
301
  if (x || t !== m || r.signal?.aborted) {
300
302
  n({
@@ -317,18 +319,18 @@ function ve(y, c = {}) {
317
319
  }
318
320
  let W;
319
321
  try {
320
- W = ge(s, d.value.svg, C.fonts !== "host");
322
+ W = ge(s, d.value.svg, F.fonts !== "host");
321
323
  } catch (i) {
322
324
  const $ = i instanceof Error ? i.message : "Could not build safe SVG.", M = K("internal", "DRAFT_VIEWER_DOM", $);
323
325
  X(t, M.diagnostics), n({ status: "error", revision: t, error: M });
324
326
  return;
325
327
  }
326
- const U = [];
328
+ const G = [];
327
329
  try {
328
330
  for (const i of E)
329
- N.has(i.key) || (s.fonts.add(i.face), N.set(i.key, i.face), U.push(i));
331
+ N.has(i.key) || (s.fonts.add(i.face), N.set(i.key, i.face), G.push(i));
330
332
  } catch (i) {
331
- for (const { key: M, face: Z } of U)
333
+ for (const { key: M, face: Z } of G)
332
334
  s.fonts.delete(Z), N.delete(M);
333
335
  const $ = K(
334
336
  "environment",
@@ -396,8 +398,8 @@ function ve(y, c = {}) {
396
398
  on(e, r) {
397
399
  if (x) return () => {
398
400
  };
399
- const t = G.get(e) ?? /* @__PURE__ */ new Set();
400
- return t.add(r), G.set(e, t), () => t.delete(r);
401
+ const t = U.get(e) ?? /* @__PURE__ */ new Set();
402
+ return t.add(r), U.set(e, t), () => t.delete(r);
401
403
  },
402
404
  getCamera: () => ({ ...a }),
403
405
  setCamera(e) {
@@ -426,13 +428,13 @@ function ve(y, c = {}) {
426
428
  r.resolve({ status: "destroyed", revision: e });
427
429
  B.clear(), z(new Error("Viewer was destroyed."));
428
430
  for (const e of N.values()) s.fonts.delete(e);
429
- N.clear(), J.disconnect(), G.clear(), y.replaceChildren(), u = void 0;
431
+ N.clear(), J.disconnect(), U.clear(), y.replaceChildren(), u = void 0;
430
432
  }
431
433
  }
432
434
  };
433
435
  }
434
436
  export {
435
- Ee as fontMetricsVersion,
436
- ve as mountViewer,
437
+ Ae as fontMetricsVersion,
438
+ be as mountViewer,
437
439
  ke as runtimeVersion
438
440
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@draftably/runtime",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "private": false,
5
5
  "description": "Portable native Draftably SVG rendering, validation, and optional viewer.",
6
6
  "type": "module",
@@ -26,6 +26,10 @@
26
26
  "types": "./dist/types/src/runtime/element.d.ts",
27
27
  "import": "./dist/element.js"
28
28
  },
29
+ "./graph": {
30
+ "types": "./dist/types/src/graph-api/index.d.ts",
31
+ "import": "./dist/graph.js"
32
+ },
29
33
  "./viewer.css": "./dist/viewer.css",
30
34
  "./fonts.css": "./dist/fonts.css",
31
35
  "./browser": {