@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/README.md +13 -0
- package/dist/assets/render.worker-dvseyGmC.js +8310 -0
- package/dist/compile-Csfz4rk4.js +7267 -0
- package/dist/{font-data-tnqJ-kTK.js → font-data-DLXJur0j.js} +1 -1
- package/dist/graph.js +669 -0
- package/dist/index.js +5 -4
- package/dist/render-Dgo42PR4.js +1146 -0
- package/dist/types/src/dsl/compile.d.ts +13 -0
- package/dist/types/src/dsl/corridors.d.ts +38 -0
- package/dist/types/src/graph-api/core.d.ts +125 -0
- package/dist/types/src/graph-api/cytoscape.d.ts +48 -0
- package/dist/types/src/graph-api/dagre.d.ts +33 -0
- package/dist/types/src/graph-api/elk.d.ts +91 -0
- package/dist/types/src/graph-api/index.d.ts +60 -0
- package/dist/types/src/graph-api/react-flow.d.ts +100 -0
- package/dist/types/src/graph-api/transform.d.ts +6 -0
- package/dist/types/src/model/types.d.ts +9 -0
- package/dist/viewer.js +31 -29
- package/package.json +5 -1
- package/dist/assets/render.worker-fWW85Tf9.js +0 -7661
- package/dist/render-ZzhO-2H6.js +0 -7676
package/dist/viewer.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { r as ce
|
|
2
|
-
import {
|
|
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
|
|
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,
|
|
106
|
-
const N = /* @__PURE__ */ new Map(),
|
|
107
|
-
for (const t of
|
|
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}`,
|
|
165
|
-
if (
|
|
166
|
-
return { key: h, face:
|
|
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."))),
|
|
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
|
|
180
|
-
|
|
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
|
-
},
|
|
192
|
+
}, G = () => z(new Error("Viewer render worker returned an unreadable result.")), H = () => z(new Error("Viewer render was aborted."));
|
|
191
193
|
try {
|
|
192
|
-
|
|
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-
|
|
196
|
+
"" + new URL("assets/render.worker-dvseyGmC.js", import.meta.url).href,
|
|
195
197
|
import.meta.url
|
|
196
|
-
), { type: "module" }),
|
|
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:
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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),
|
|
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
|
|
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 =
|
|
400
|
-
return t.add(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(),
|
|
431
|
+
N.clear(), J.disconnect(), U.clear(), y.replaceChildren(), u = void 0;
|
|
430
432
|
}
|
|
431
433
|
}
|
|
432
434
|
};
|
|
433
435
|
}
|
|
434
436
|
export {
|
|
435
|
-
|
|
436
|
-
|
|
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.
|
|
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": {
|