@meltemi/diagrams-render 1.9.0 → 1.10.18

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/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export declare const PACKAGE_NAME = "@meltemi/diagrams-render";
2
2
  export { embeddableFaces, escapeXml, fontFaceRule, fontFaceRules, renderSvg, type EmbeddableFace, type FontPolicy, type FontProvider, type RenderOptions, } from "./svg.js";
3
+ export { sketchItems, type SketchLevel } from "./sketch.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,6BAA6B,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,6BAA6B,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export const PACKAGE_NAME = "@meltemi/diagrams-render";
2
2
  export { embeddableFaces, escapeXml, fontFaceRule, fontFaceRules, renderSvg, } from "./svg.js";
3
+ export { sketchItems } from "./sketch.js";
3
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAS,GAKV,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAS,GAKV,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAoB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { SceneItem } from "@meltemi/diagrams-layout";
2
+ /** A sketch level that paints: `light` or `rough`. */
3
+ export type SketchLevel = "light" | "rough";
4
+ /**
5
+ * The items of a scene with every stroke painted by hand: each stroked `rect`, `path` and
6
+ * `polyline` of a group whose role is `element`, `relation`, `label`, `frame`, `lifeline`, `event`
7
+ * or `tag` becomes its fill alone (when it has one) followed by two stroke-only paths, its outline
8
+ * sampled every 16 px (`light`) or 12 px (`rough`) and each sample moved along the outline's
9
+ * normal by at most 0.6 px or 1.4 px. The jitter comes from a pseudo-random sequence seeded by the
10
+ * group's id (with its index for a tag, whose group carries its owner's id) and the pass, so the
11
+ * same text paints the same bytes and an edit elsewhere leaves a shape's wobble alone. Text, images, icons, gradient strokes and invisible overlays are kept, and
12
+ * so are pen strokes (`GroupItem.freehand`), whole.
13
+ */
14
+ export declare function sketchItems(items: readonly SceneItem[], level: SketchLevel): SceneItem[];
15
+ //# sourceMappingURL=sketch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sketch.d.ts","sourceRoot":"","sources":["../src/sketch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,SAAS,EAEV,MAAM,0BAA0B,CAAC;AAElC,sDAAsD;AACtD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAoC5C;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,CAExF"}
package/dist/sketch.js ADDED
@@ -0,0 +1,563 @@
1
+ /** How far apart the samples of a stroke are, and how far each moves off the outline. */
2
+ const LEVELS = {
3
+ light: { step: 16, jitter: 0.6 },
4
+ rough: { step: 12, jitter: 1.4 },
5
+ };
6
+ /** The roles whose strokes are painted by hand; icons, the mark and motion overlays are not. */
7
+ const SKETCHED = new Set([
8
+ "element",
9
+ "relation",
10
+ "label",
11
+ "frame",
12
+ "lifeline",
13
+ "event",
14
+ "tag",
15
+ ]);
16
+ /** A turn sharper than this, in radians, is a corner the samples keep. */
17
+ const CORNER = Math.PI / 6;
18
+ /** How finely curves are flattened before they are sampled again, in pixels. */
19
+ const FLATTEN = 2;
20
+ /**
21
+ * The items of a scene with every stroke painted by hand: each stroked `rect`, `path` and
22
+ * `polyline` of a group whose role is `element`, `relation`, `label`, `frame`, `lifeline`, `event`
23
+ * or `tag` becomes its fill alone (when it has one) followed by two stroke-only paths, its outline
24
+ * sampled every 16 px (`light`) or 12 px (`rough`) and each sample moved along the outline's
25
+ * normal by at most 0.6 px or 1.4 px. The jitter comes from a pseudo-random sequence seeded by the
26
+ * group's id (with its index for a tag, whose group carries its owner's id) and the pass, so the
27
+ * same text paints the same bytes and an edit elsewhere leaves a shape's wobble alone. Text, images, icons, gradient strokes and invisible overlays are kept, and
28
+ * so are pen strokes (`GroupItem.freehand`), whole.
29
+ */
30
+ export function sketchItems(items, level) {
31
+ return items.map((item) => (item.kind === "group" ? sketchGroup(item, level) : item));
32
+ }
33
+ function sketchGroup(group, level) {
34
+ // A pen stroke is drawn by hand already: jittered twice, it would be another drawing.
35
+ if (!SKETCHED.has(group.role) || group.freehand)
36
+ return group;
37
+ // The pills of one owner carry its id: each wobbles its own way.
38
+ const seed = group.tag === undefined ? group.id : `${group.id}\u0000tag\u0000${group.tag}`;
39
+ const passes = [random(hash(`${seed}\u0000${0}`)), random(hash(`${seed}\u0000${1}`))];
40
+ const items = [];
41
+ for (const item of group.items) {
42
+ if (item.kind === "group") {
43
+ items.push(sketchGroup(item, level));
44
+ continue;
45
+ }
46
+ if (!sketchable(item)) {
47
+ items.push(item);
48
+ continue;
49
+ }
50
+ const outline = subpathsOf(item);
51
+ if (outline.length === 0) {
52
+ items.push(item);
53
+ continue;
54
+ }
55
+ const fill = fillOf(item);
56
+ if (fill)
57
+ items.push(fill);
58
+ for (const next of passes) {
59
+ items.push(strokePass(item, sketchPath(outline, LEVELS[level], next)));
60
+ }
61
+ }
62
+ return { ...group, items };
63
+ }
64
+ /** Whether an item has a stroke the hand paints: seen, solid in colour, without a transform. */
65
+ function sketchable(item) {
66
+ if (item.kind !== "rect" && item.kind !== "path" && item.kind !== "polyline")
67
+ return false;
68
+ if (item.stroke === "none" || item.stroke.startsWith("url(") || !(item.strokeWidth > 0)) {
69
+ return false;
70
+ }
71
+ if (item.opacity === 0)
72
+ return false;
73
+ return !(item.kind === "path" && item.transform);
74
+ }
75
+ /** The item's fill alone, without its stroke; none for a polyline or an unfilled shape. */
76
+ function fillOf(item) {
77
+ if (item.kind === "polyline" || item.fill === "none")
78
+ return undefined;
79
+ const { className: _class, dash: _dash, ...rest } = item;
80
+ return { ...rest, stroke: "none", strokeWidth: 0, dashed: false };
81
+ }
82
+ /** One stroke-only pass of an item, with its width, dash, class and opacity. */
83
+ function strokePass(item, d) {
84
+ return {
85
+ kind: "path",
86
+ d,
87
+ fill: "none",
88
+ stroke: item.stroke,
89
+ strokeWidth: item.strokeWidth,
90
+ dashed: item.dashed,
91
+ rounded: true,
92
+ ...(item.dash ? { dash: item.dash } : {}),
93
+ ...(item.opacity !== undefined ? { opacity: item.opacity } : {}),
94
+ ...(item.kind === "path" && item.strokeOpacity !== undefined
95
+ ? { strokeOpacity: item.strokeOpacity }
96
+ : {}),
97
+ ...(item.className ? { className: item.className } : {}),
98
+ };
99
+ }
100
+ // ------------------------------------------------------------------ outlines
101
+ function subpathsOf(item) {
102
+ if (item.kind === "polyline")
103
+ return item.points.length >= 2 ? [{ points: [...item.points], closed: false }] : [];
104
+ if (item.kind === "rect")
105
+ return [rectOutline(item)];
106
+ return parsePath(item.d);
107
+ }
108
+ /** A rectangle's outline: four sides with a quarter arc at each corner for its radius. */
109
+ function rectOutline(rect) {
110
+ const { x, y, width, height } = rect;
111
+ const r = Math.max(0, Math.min(rect.radius, width / 2, height / 2));
112
+ const points = [];
113
+ const arc = (cx, cy, from) => {
114
+ const steps = Math.max(2, Math.ceil((r * Math.PI) / 2 / FLATTEN));
115
+ for (let i = 0; i <= steps; i++) {
116
+ const a = from + (i / steps) * (Math.PI / 2);
117
+ points.push({ x: cx + r * Math.cos(a), y: cy + r * Math.sin(a) });
118
+ }
119
+ };
120
+ if (r === 0) {
121
+ points.push({ x, y }, { x: x + width, y }, { x: x + width, y: y + height }, { x, y: y + height });
122
+ }
123
+ else {
124
+ arc(x + width - r, y + r, -Math.PI / 2);
125
+ arc(x + width - r, y + height - r, 0);
126
+ arc(x + r, y + height - r, Math.PI / 2);
127
+ arc(x + r, y + r, Math.PI);
128
+ }
129
+ return { points, closed: true };
130
+ }
131
+ const COMMAND = /[MmLlHhVvCcSsQqTtAaZz]/;
132
+ const NUMBER = /[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y;
133
+ /** The tokens of path data: command letters and numbers. */
134
+ function tokens(d) {
135
+ const out = [];
136
+ let i = 0;
137
+ while (i < d.length) {
138
+ const c = d[i];
139
+ if (COMMAND.test(c)) {
140
+ out.push(c);
141
+ i++;
142
+ continue;
143
+ }
144
+ if (c === " " || c === "," || c === "\n" || c === "\t" || c === "\r") {
145
+ i++;
146
+ continue;
147
+ }
148
+ NUMBER.lastIndex = i;
149
+ const match = NUMBER.exec(d);
150
+ if (!match)
151
+ return out;
152
+ out.push(Number(match[0]));
153
+ i = NUMBER.lastIndex;
154
+ }
155
+ return out;
156
+ }
157
+ /** Path data flattened into subpaths: lines kept, curves and arcs sampled every few pixels. */
158
+ function parsePath(d) {
159
+ const list = tokens(d);
160
+ const subpaths = [];
161
+ let current;
162
+ let start = { x: 0, y: 0 };
163
+ let at = { x: 0, y: 0 };
164
+ let control;
165
+ let command = "";
166
+ let i = 0;
167
+ const number = () => {
168
+ const value = list[i];
169
+ i++;
170
+ return typeof value === "number" ? value : NaN;
171
+ };
172
+ const finish = (closed) => {
173
+ if (current && current.length >= 2)
174
+ subpaths.push({ points: current, closed });
175
+ current = undefined;
176
+ };
177
+ const lineTo = (p) => {
178
+ if (!current)
179
+ current = [at];
180
+ current.push(p);
181
+ at = p;
182
+ };
183
+ while (i < list.length) {
184
+ const token = list[i];
185
+ if (typeof token === "string") {
186
+ command = token;
187
+ i++;
188
+ if (command === "Z" || command === "z") {
189
+ if (current) {
190
+ finish(true);
191
+ }
192
+ at = start;
193
+ control = undefined;
194
+ continue;
195
+ }
196
+ }
197
+ else if (command === "") {
198
+ return subpaths;
199
+ }
200
+ const relative = command === command.toLowerCase();
201
+ const base = relative ? at : { x: 0, y: 0 };
202
+ switch (command.toUpperCase()) {
203
+ case "M": {
204
+ finish(false);
205
+ const p = { x: base.x + number(), y: base.y + number() };
206
+ at = p;
207
+ start = p;
208
+ current = [p];
209
+ // Pairs after a move are lines.
210
+ command = relative ? "l" : "L";
211
+ control = undefined;
212
+ break;
213
+ }
214
+ case "L":
215
+ lineTo({ x: base.x + number(), y: base.y + number() });
216
+ control = undefined;
217
+ break;
218
+ case "H":
219
+ lineTo({ x: (relative ? at.x : 0) + number(), y: at.y });
220
+ control = undefined;
221
+ break;
222
+ case "V":
223
+ lineTo({ x: at.x, y: (relative ? at.y : 0) + number() });
224
+ control = undefined;
225
+ break;
226
+ case "C":
227
+ case "S": {
228
+ const c1 = command.toUpperCase() === "C"
229
+ ? { x: base.x + number(), y: base.y + number() }
230
+ : control
231
+ ? { x: 2 * at.x - control.x, y: 2 * at.y - control.y }
232
+ : at;
233
+ const c2 = { x: base.x + number(), y: base.y + number() };
234
+ const end = { x: base.x + number(), y: base.y + number() };
235
+ const from = at;
236
+ const steps = curveSteps([from, c1, c2, end]);
237
+ for (let k = 1; k <= steps; k++)
238
+ lineTo(cubic(from, c1, c2, end, k / steps));
239
+ control = c2;
240
+ break;
241
+ }
242
+ case "Q":
243
+ case "T": {
244
+ const c = command.toUpperCase() === "Q"
245
+ ? { x: base.x + number(), y: base.y + number() }
246
+ : control
247
+ ? { x: 2 * at.x - control.x, y: 2 * at.y - control.y }
248
+ : at;
249
+ const end = { x: base.x + number(), y: base.y + number() };
250
+ const from = at;
251
+ const steps = curveSteps([from, c, end]);
252
+ for (let k = 1; k <= steps; k++)
253
+ lineTo(quadratic(from, c, end, k / steps));
254
+ control = c;
255
+ break;
256
+ }
257
+ case "A": {
258
+ const rx = number();
259
+ const ry = number();
260
+ const rotation = number();
261
+ const large = number() !== 0;
262
+ const sweep = number() !== 0;
263
+ const end = { x: base.x + number(), y: base.y + number() };
264
+ for (const p of arcPoints(at, end, rx, ry, rotation, large, sweep))
265
+ lineTo(p);
266
+ control = undefined;
267
+ break;
268
+ }
269
+ default:
270
+ return subpaths;
271
+ }
272
+ if ([at.x, at.y].some((v) => !Number.isFinite(v)))
273
+ return subpaths;
274
+ }
275
+ finish(false);
276
+ return subpaths;
277
+ }
278
+ function curveSteps(points) {
279
+ let length = 0;
280
+ for (let k = 1; k < points.length; k++)
281
+ length += distance(points[k - 1], points[k]);
282
+ return Math.max(4, Math.min(64, Math.ceil(length / FLATTEN)));
283
+ }
284
+ function cubic(a, b, c, d, t) {
285
+ const u = 1 - t;
286
+ return {
287
+ x: u * u * u * a.x + 3 * u * u * t * b.x + 3 * u * t * t * c.x + t * t * t * d.x,
288
+ y: u * u * u * a.y + 3 * u * u * t * b.y + 3 * u * t * t * c.y + t * t * t * d.y,
289
+ };
290
+ }
291
+ function quadratic(a, b, c, t) {
292
+ const u = 1 - t;
293
+ return {
294
+ x: u * u * a.x + 2 * u * t * b.x + t * t * c.x,
295
+ y: u * u * a.y + 2 * u * t * b.y + t * t * c.y,
296
+ };
297
+ }
298
+ /** The points of an elliptical arc after its start, by the SVG endpoint parameterization. */
299
+ function arcPoints(from, to, rxIn, ryIn, degrees, large, sweep) {
300
+ let rx = Math.abs(rxIn);
301
+ let ry = Math.abs(ryIn);
302
+ if (rx === 0 || ry === 0 || (from.x === to.x && from.y === to.y))
303
+ return [to];
304
+ const phi = (degrees * Math.PI) / 180;
305
+ const cos = Math.cos(phi);
306
+ const sin = Math.sin(phi);
307
+ const dx = (from.x - to.x) / 2;
308
+ const dy = (from.y - to.y) / 2;
309
+ const x1 = cos * dx + sin * dy;
310
+ const y1 = -sin * dx + cos * dy;
311
+ const scale = (x1 * x1) / (rx * rx) + (y1 * y1) / (ry * ry);
312
+ if (scale > 1) {
313
+ rx *= Math.sqrt(scale);
314
+ ry *= Math.sqrt(scale);
315
+ }
316
+ const numerator = rx * rx * ry * ry - rx * rx * y1 * y1 - ry * ry * x1 * x1;
317
+ const denominator = rx * rx * y1 * y1 + ry * ry * x1 * x1;
318
+ const factor = (large === sweep ? -1 : 1) * Math.sqrt(Math.max(0, numerator / denominator));
319
+ const cx1 = (factor * rx * y1) / ry;
320
+ const cy1 = (-factor * ry * x1) / rx;
321
+ const cx = cos * cx1 - sin * cy1 + (from.x + to.x) / 2;
322
+ const cy = sin * cx1 + cos * cy1 + (from.y + to.y) / 2;
323
+ const angle = (ux, uy, vx, vy) => {
324
+ const a = Math.atan2(ux * vy - uy * vx, ux * vx + uy * vy);
325
+ return a;
326
+ };
327
+ const start = angle(1, 0, (x1 - cx1) / rx, (y1 - cy1) / ry);
328
+ let delta = angle((x1 - cx1) / rx, (y1 - cy1) / ry, (-x1 - cx1) / rx, (-y1 - cy1) / ry);
329
+ if (!sweep && delta > 0)
330
+ delta -= 2 * Math.PI;
331
+ if (sweep && delta < 0)
332
+ delta += 2 * Math.PI;
333
+ const steps = Math.max(4, Math.min(96, Math.ceil((Math.abs(delta) * Math.max(rx, ry)) / FLATTEN)));
334
+ const points = [];
335
+ for (let k = 1; k <= steps; k++) {
336
+ const t = start + (delta * k) / steps;
337
+ const ex = rx * Math.cos(t);
338
+ const ey = ry * Math.sin(t);
339
+ points.push(k === steps ? to : { x: cos * ex - sin * ey + cx, y: sin * ex + cos * ey + cy });
340
+ }
341
+ return points;
342
+ }
343
+ // ------------------------------------------------------------------ the hand
344
+ /**
345
+ * One pass of the hand over an outline: each subpath sampled every `step` pixels between the
346
+ * corners it keeps, each sample moved along the normal by at most `jitter`, drawn through the
347
+ * middles of its samples so the line bends smoothly, and a closed outline carried a little past
348
+ * its start.
349
+ */
350
+ function sketchPath(outline, level, next) {
351
+ const parts = [];
352
+ for (const subpath of outline) {
353
+ const points = dedupe(subpath.points, subpath.closed);
354
+ if (points.length < 2)
355
+ continue;
356
+ const runs = runsOf(points, subpath.closed, level.step);
357
+ if (subpath.closed && runs.length === 1 && !hasCorner(points)) {
358
+ // A loop without a corner (an ellipse, a circle): drawn smoothly all the way round.
359
+ const samples = runs[0].slice(0, -1).map((sample) => ({
360
+ x: sample.point.x + sample.normal.x * level.jitter * (2 * next() - 1),
361
+ y: sample.point.y + sample.normal.y * level.jitter * (2 * next() - 1),
362
+ }));
363
+ parts.push(...smoothLoop(samples, level.jitter * (1 + next())));
364
+ continue;
365
+ }
366
+ const moved = runs.map((run) => run.map((sample) => ({
367
+ x: sample.point.x + sample.normal.x * level.jitter * (2 * next() - 1),
368
+ y: sample.point.y + sample.normal.y * level.jitter * (2 * next() - 1),
369
+ })));
370
+ // Runs share their corners: each run's first point is the last of the one before.
371
+ for (let r = 1; r < moved.length; r++)
372
+ moved[r][0] = moved[r - 1][moved[r - 1].length - 1];
373
+ if (subpath.closed && moved.length > 0) {
374
+ const first = moved[0][0];
375
+ const last = moved[moved.length - 1];
376
+ // The hand goes a little past where it started.
377
+ const second = moved[0][1] ?? first;
378
+ const length = distance(first, second) || 1;
379
+ const over = level.jitter * (1 + next());
380
+ last[last.length - 1] = {
381
+ x: first.x + ((second.x - first.x) / length) * over,
382
+ y: first.y + ((second.y - first.y) / length) * over,
383
+ };
384
+ }
385
+ const start = moved[0][0];
386
+ parts.push(`M${f(start.x)} ${f(start.y)}`);
387
+ for (const run of moved)
388
+ parts.push(...smooth(run));
389
+ }
390
+ return parts.join(" ");
391
+ }
392
+ /** A run of samples drawn through the middles of its inner samples: corners stay corners. */
393
+ function smooth(run) {
394
+ if (run.length === 2)
395
+ return [`L${f(run[1].x)} ${f(run[1].y)}`];
396
+ const out = [];
397
+ const mid = (a, b) => ({ x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 });
398
+ const first = mid(run[0], run[1]);
399
+ out.push(`L${f(first.x)} ${f(first.y)}`);
400
+ for (let k = 1; k < run.length - 1; k++) {
401
+ const end = k === run.length - 2 ? run[k + 1] : mid(run[k], run[k + 1]);
402
+ out.push(`Q${f(run[k].x)} ${f(run[k].y)} ${f(end.x)} ${f(end.y)}`);
403
+ }
404
+ return out;
405
+ }
406
+ /**
407
+ * A closed loop of samples drawn through their middles, each sample a control: no corner where it
408
+ * starts, and the hand carried `over` pixels past the start along the loop.
409
+ */
410
+ function smoothLoop(samples, over) {
411
+ const count = samples.length;
412
+ if (count < 3) {
413
+ return samples.map((p, k) => `${k === 0 ? "M" : "L"}${f(p.x)} ${f(p.y)}`).concat("Z");
414
+ }
415
+ const at = (k) => samples[k % count];
416
+ const mid = (k) => ({ x: (at(k).x + at(k + 1).x) / 2, y: (at(k).y + at(k + 1).y) / 2 });
417
+ const start = mid(0);
418
+ const out = [`M${f(start.x)} ${f(start.y)}`];
419
+ for (let k = 1; k <= count; k++) {
420
+ const end = mid(k);
421
+ out.push(`Q${f(at(k).x)} ${f(at(k).y)} ${f(end.x)} ${f(end.y)}`);
422
+ }
423
+ // Past the start, along the way the loop set off.
424
+ const next = at(1);
425
+ const length = distance(start, next) || 1;
426
+ out.push(`L${f(start.x + ((next.x - start.x) / length) * over)} ${f(start.y + ((next.y - start.y) / length) * over)}`);
427
+ return out;
428
+ }
429
+ /** Whether a closed outline turns sharply anywhere. */
430
+ function hasCorner(points) {
431
+ const count = points.length;
432
+ for (let k = 0; k < count; k++) {
433
+ const a = points[(k + count - 1) % count];
434
+ const b = points[k];
435
+ const c = points[(k + 1) % count];
436
+ const turn = Math.abs(Math.atan2((b.x - a.x) * (c.y - b.y) - (b.y - a.y) * (c.x - b.x), (b.x - a.x) * (c.x - b.x) + (b.y - a.y) * (c.y - b.y)));
437
+ if (turn > CORNER)
438
+ return true;
439
+ }
440
+ return false;
441
+ }
442
+ /**
443
+ * The outline cut at its corners into runs, each sampled evenly every `step` pixels at most: a
444
+ * run's first and last samples are its corners (or the ends of an open outline). A closed
445
+ * outline without a corner, a circle, starts at its first point.
446
+ */
447
+ function runsOf(points, closed, step) {
448
+ const count = points.length;
449
+ const at = (k) => points[((k % count) + count) % count];
450
+ const isCorner = (k) => {
451
+ if (!closed && (k === 0 || k === count - 1))
452
+ return true;
453
+ const a = at(k - 1);
454
+ const b = at(k);
455
+ const c = at(k + 1);
456
+ const turn = Math.abs(Math.atan2((b.x - a.x) * (c.y - b.y) - (b.y - a.y) * (c.x - b.x), (b.x - a.x) * (c.x - b.x) + (b.y - a.y) * (c.y - b.y)));
457
+ return turn > CORNER;
458
+ };
459
+ const corners = [];
460
+ for (let k = 0; k < count; k++)
461
+ if (isCorner(k))
462
+ corners.push(k);
463
+ if (closed && corners.length === 0)
464
+ corners.push(0);
465
+ // The corner indices in order, a closed outline coming back to its first corner.
466
+ const stops = closed ? [...corners, corners[0] + count] : corners;
467
+ const runs = [];
468
+ for (let r = 0; r < stops.length - 1; r++) {
469
+ const from = stops[r];
470
+ const to = stops[r + 1];
471
+ const path = [];
472
+ for (let k = from; k <= to; k++)
473
+ path.push(at(k));
474
+ runs.push(sampleRun(path, step, closed || r > 0 ? at(from - 1) : undefined, closed || r < stops.length - 2 ? at(to + 1) : undefined));
475
+ }
476
+ return runs;
477
+ }
478
+ /** A run's samples, evenly spaced along it, each with the unit normal of the outline there. */
479
+ function sampleRun(path, step, before, after) {
480
+ const starts = [0];
481
+ for (let k = 1; k < path.length; k++)
482
+ starts.push(starts[k - 1] + distance(path[k - 1], path[k]));
483
+ const total = starts[starts.length - 1];
484
+ const pieces = Math.max(1, Math.ceil(total / step));
485
+ const samples = [];
486
+ const first = path[0];
487
+ const last = path[path.length - 1];
488
+ samples.push({ point: first, normal: cornerNormal(before, first, path[1]) });
489
+ let segment = 1;
490
+ for (let k = 1; k < pieces; k++) {
491
+ const along = (total * k) / pieces;
492
+ while (segment < path.length - 1 && starts[segment] < along)
493
+ segment++;
494
+ const a = path[segment - 1];
495
+ const b = path[segment];
496
+ const length = starts[segment] - starts[segment - 1];
497
+ const t = length === 0 ? 0 : (along - starts[segment - 1]) / length;
498
+ samples.push({
499
+ point: { x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t },
500
+ normal: normalOf(a, b),
501
+ });
502
+ }
503
+ samples.push({ point: last, normal: cornerNormal(path[path.length - 2], last, after) });
504
+ return samples;
505
+ }
506
+ /** The unit normal of a segment. */
507
+ function normalOf(a, b) {
508
+ const length = distance(a, b);
509
+ return length === 0 ? { x: 0, y: 0 } : { x: -(b.y - a.y) / length, y: (b.x - a.x) / length };
510
+ }
511
+ /** The normal at a corner: halfway between the normals of the segments that meet there. */
512
+ function cornerNormal(before, at, after) {
513
+ const a = before ? normalOf(before, at) : undefined;
514
+ const b = after ? normalOf(at, after) : undefined;
515
+ if (!a)
516
+ return b ?? { x: 0, y: 0 };
517
+ if (!b)
518
+ return a;
519
+ const sum = { x: a.x + b.x, y: a.y + b.y };
520
+ const length = Math.hypot(sum.x, sum.y);
521
+ return length < 1e-6 ? a : { x: sum.x / length, y: sum.y / length };
522
+ }
523
+ /** The points without repeats, a closed outline without its start repeated at the end. */
524
+ function dedupe(points, closed) {
525
+ const out = [];
526
+ for (const p of points) {
527
+ const last = out[out.length - 1];
528
+ if (!last || distance(last, p) > 1e-6)
529
+ out.push(p);
530
+ }
531
+ if (closed && out.length > 1 && distance(out[0], out[out.length - 1]) <= 1e-6)
532
+ out.pop();
533
+ return out;
534
+ }
535
+ function distance(a, b) {
536
+ return Math.hypot(b.x - a.x, b.y - a.y);
537
+ }
538
+ /** A coordinate to two decimals, without a trailing zero. */
539
+ function f(value) {
540
+ const rounded = Math.round(value * 100) / 100;
541
+ return String(Object.is(rounded, -0) ? 0 : rounded);
542
+ }
543
+ /** FNV-1a, 32 bits: the seed of a group's passes. */
544
+ function hash(text) {
545
+ let h = 0x811c9dc5;
546
+ for (let k = 0; k < text.length; k++) {
547
+ h ^= text.charCodeAt(k);
548
+ h = Math.imul(h, 0x01000193);
549
+ }
550
+ return h >>> 0;
551
+ }
552
+ /** mulberry32: a small seeded generator of numbers in [0, 1). */
553
+ function random(seed) {
554
+ let state = seed >>> 0;
555
+ return () => {
556
+ state = (state + 0x6d2b79f5) >>> 0;
557
+ let t = state;
558
+ t = Math.imul(t ^ (t >>> 15), t | 1);
559
+ t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
560
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
561
+ };
562
+ }
563
+ //# sourceMappingURL=sketch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sketch.js","sourceRoot":"","sources":["../src/sketch.ts"],"names":[],"mappings":"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"}
package/dist/svg.d.ts CHANGED
@@ -5,6 +5,12 @@ export type FontPolicy = "system" | "embedded" | "outlined";
5
5
  export interface EmbeddableFace {
6
6
  readonly family: string;
7
7
  readonly weight: number;
8
+ /**
9
+ * The heaviest weight this file stands for, when the family has no heavier face: the rule then
10
+ * covers `weight` to `weightTo`, so a browser draws heavier text with this file as it is
11
+ * measured and outlined, not in a synthesized bold.
12
+ */
13
+ readonly weightTo?: number;
8
14
  readonly subset: string;
9
15
  readonly format: "woff2" | "woff" | "truetype" | "opentype";
10
16
  readonly data: Uint8Array;
@@ -32,8 +38,9 @@ export interface RenderOptions {
32
38
  export declare function escapeXml(text: string): string;
33
39
  /**
34
40
  * Serialises a scene to standalone SVG. Portable by construction: inline presentation attributes,
35
- * linear gradients and patterns in `<defs>` only when the scene declares them, no markers, no
36
- * `dominant-baseline`, and no CSS except the `@font-face` rules of the `embedded` font policy.
41
+ * linear gradients and patterns in `<defs>` only when the scene declares them, a `<clipPath>` in
42
+ * the group of a sticky whose text it clips, no markers, no `dominant-baseline`, and no CSS except
43
+ * the `@font-face` rules of the `embedded` font policy.
37
44
  */
38
45
  export declare function renderSvg(scene: Scene, options?: RenderOptions): string;
39
46
  /**
package/dist/svg.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAKN,MAAM,0BAA0B,CAAC;AAIlC,kFAAkF;AAClF,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D,kGAAkG;AAClG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5D,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AASD,2FAA2F;AAC3F,MAAM,WAAW,YAAY;IAC3B,iFAAiF;IACjF,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE,CAAC;IAC/E,sEAAsE;IACtE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,8FAA8F;IAC9F,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAOD,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAiD3E;AA6FD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,QAAQ,EAAE,YAAY,GACrB,cAAc,EAAE,CAqBlB;AAED,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAGzD;AAED,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE,CAE5E"}
1
+ {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,KAAK,EAKN,MAAM,0BAA0B,CAAC;AAKlC,kFAAkF;AAClF,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D,kGAAkG;AAClG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5D,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AASD,2FAA2F;AAC3F,MAAM,WAAW,YAAY;IAC3B,iFAAiF;IACjF,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE,CAAC;IAC/E,sEAAsE;IACtE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,8FAA8F;IAC9F,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAOD,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAmD3E;AA6HD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,QAAQ,EAAE,YAAY,GACrB,cAAc,EAAE,CAwClB;AAED,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAOzD;AAED,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE,CAE5E"}
package/dist/svg.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { sketchItems } from "./sketch.js";
1
2
  const DASH = "5 4";
2
3
  const FONT_MIME = {
3
4
  woff2: "font/woff2",
@@ -19,8 +20,9 @@ export function escapeXml(text) {
19
20
  }
20
21
  /**
21
22
  * Serialises a scene to standalone SVG. Portable by construction: inline presentation attributes,
22
- * linear gradients and patterns in `<defs>` only when the scene declares them, no markers, no
23
- * `dominant-baseline`, and no CSS except the `@font-face` rules of the `embedded` font policy.
23
+ * linear gradients and patterns in `<defs>` only when the scene declares them, a `<clipPath>` in
24
+ * the group of a sticky whose text it clips, no markers, no `dominant-baseline`, and no CSS except
25
+ * the `@font-face` rules of the `embedded` font policy.
24
26
  */
25
27
  export function renderSvg(scene, options = {}) {
26
28
  const policy = options.fonts ?? "system";
@@ -63,26 +65,37 @@ export function renderSvg(scene, options = {}) {
63
65
  }
64
66
  out.push(` <rect x="0" y="0" width="${w}" height="${h}" fill="${escapeXml(scene.background)}"/>`);
65
67
  const outline = fonts?.policy === "outlined" ? fonts.provider : null;
68
+ // A sketch theme's strokes are painted by hand here, over the clean scene everyone else reads.
69
+ const items = scene.sketch ? sketchItems(scene.items, scene.sketch) : scene.items;
66
70
  // A picture that links somewhere is one link around everything drawn.
67
71
  if (scene.link) {
68
72
  out.push(` <a href="${escapeXml(scene.link)}">`);
69
- for (const item of scene.items)
73
+ for (const item of items)
70
74
  emit(item, out, " ", scene, outline);
71
75
  out.push(" </a>");
72
76
  }
73
77
  else {
74
- for (const item of scene.items)
78
+ for (const item of items)
75
79
  emit(item, out, " ", scene, outline);
76
80
  }
77
81
  out.push("</svg>");
78
82
  return `${out.join("\n")}\n`;
79
83
  }
84
+ /**
85
+ * The dash of a pen's stroke, which is round-capped: each dash grows by half the width at both
86
+ * ends, so a fixed `5 4` closes from width 4. The dash is at least twice the width and the gap the
87
+ * width plus room for the caps, so a gap of at least 4 (or of the width) stays visible.
88
+ */
89
+ function penDash(width) {
90
+ return `${n(Math.max(5, 2 * width))} ${n(Math.max(4, width) + width)}`;
91
+ }
80
92
  /**
81
93
  * The dash of a stroke: an explicit pattern and offset, the default dash, round dots, or none.
82
94
  * Dots are dashes of length 0 with round caps, spaced by the line's width; `roundCaps` says the
83
- * element already writes them.
95
+ * element already writes them. `freehand` says the stroke is a pen's (`GroupItem.freehand`),
96
+ * whose dashes scale with its width.
84
97
  */
85
- function dashOf(item, roundCaps = false) {
98
+ function dashOf(item, roundCaps = false, freehand = false) {
86
99
  if (item.dash) {
87
100
  return ` stroke-dasharray="${item.dash.array.map(n).join(" ")}" stroke-dashoffset="${n(item.dash.offset)}"`;
88
101
  }
@@ -90,11 +103,24 @@ function dashOf(item, roundCaps = false) {
90
103
  const caps = roundCaps ? "" : ' stroke-linecap="round"';
91
104
  return ` stroke-dasharray="0 ${n(1.5 * item.strokeWidth + 3)}"${caps}`;
92
105
  }
93
- return item.dashed ? ` stroke-dasharray="${DASH}"` : "";
106
+ if (!item.dashed)
107
+ return "";
108
+ return ` stroke-dasharray="${freehand ? penDash(item.strokeWidth) : DASH}"`;
94
109
  }
95
110
  function opacityOf(opacity) {
96
111
  return opacity !== undefined ? ` opacity="${n(opacity)}"` : "";
97
112
  }
113
+ /**
114
+ * The opacity a group is drawn at: a story's `opacity` times its style's `styleOpacity`, or
115
+ * undefined when neither is set.
116
+ */
117
+ function groupOpacity(group) {
118
+ if (group.opacity === undefined)
119
+ return group.styleOpacity;
120
+ if (group.styleOpacity === undefined)
121
+ return group.opacity;
122
+ return group.opacity * group.styleOpacity;
123
+ }
98
124
  function classOf(item) {
99
125
  return item.className ? ` class="${escapeXml(item.className)}"` : "";
100
126
  }
@@ -145,9 +171,18 @@ function patternDef(pattern) {
145
171
  }
146
172
  return [open, shape, " </pattern>"];
147
173
  }
148
- function stackOf(item, scene) {
174
+ /** The scene's stack of a text's role: the theme's body or mono font. */
175
+ function roleStack(item, scene) {
149
176
  return item.font === "mono" ? scene.fonts.mono : scene.fonts.body;
150
177
  }
178
+ /**
179
+ * The stack a text is embedded and outlined with: the one its style writes, alone, so that a
180
+ * written family nobody has is left to the viewer rather than drawn in the theme's font; else
181
+ * its role's.
182
+ */
183
+ function stackOf(item, scene) {
184
+ return item.stack ?? roleStack(item, scene);
185
+ }
151
186
  function textItems(items) {
152
187
  return items.flatMap((item) => item.kind === "text" ? [item] : item.kind === "group" ? textItems(item.items) : []);
153
188
  }
@@ -168,7 +203,22 @@ export function embeddableFaces(scenes, provider) {
168
203
  texts.set(key, entry);
169
204
  }
170
205
  }
171
- const faces = [...texts.values()].flatMap((entry) => provider.faces(entry.family, entry.weight, entry.text));
206
+ // A family without the weight asked for gives the same file for several weights: it is embedded
207
+ // once, limited to the characters of them all.
208
+ const merged = new Map();
209
+ for (const face of [...texts.values()].flatMap((entry) => provider.faces(entry.family, entry.weight, entry.text))) {
210
+ const key = `${face.family}|${face.weight}|${face.subset}`;
211
+ const known = merged.get(key);
212
+ merged.set(key, known
213
+ ? {
214
+ ...known,
215
+ unicodeRange: known.unicodeRange === "" || face.unicodeRange === ""
216
+ ? ""
217
+ : `${known.unicodeRange},${face.unicodeRange}`,
218
+ }
219
+ : face);
220
+ }
221
+ const faces = [...merged.values()];
172
222
  return faces.sort((a, b) => (a.family < b.family ? -1 : a.family > b.family ? 1 : 0) ||
173
223
  a.weight - b.weight ||
174
224
  (a.subset < b.subset ? -1 : a.subset > b.subset ? 1 : 0));
@@ -176,7 +226,10 @@ export function embeddableFaces(scenes, provider) {
176
226
  /** The `@font-face` rule of a face, with its file inline. */
177
227
  export function fontFaceRule(face) {
178
228
  const range = face.unicodeRange === "" ? "" : `;unicode-range:${face.unicodeRange}`;
179
- return `@font-face{font-family:"${face.family}";font-weight:${face.weight};src:url(data:${FONT_MIME[face.format]};base64,${base64(face.data)}) format("${face.format}")${range}}`;
229
+ const weight = face.weightTo !== undefined && face.weightTo > face.weight
230
+ ? `${face.weight} ${face.weightTo}`
231
+ : String(face.weight);
232
+ return `@font-face{font-family:"${face.family}";font-weight:${weight};src:url(data:${FONT_MIME[face.format]};base64,${base64(face.data)}) format("${face.format}")${range}}`;
180
233
  }
181
234
  /** `@font-face` rules for the faces the scene's text needs, ordered by family, weight, subset. */
182
235
  export function fontFaceRules(scene, provider) {
@@ -191,22 +244,39 @@ function base64(bytes) {
191
244
  }
192
245
  return btoa(binary);
193
246
  }
194
- function emit(item, out, indent, scene, outline) {
247
+ /**
248
+ * Writes one scene item. `clip` is the id of the `<clipPath>` the item is drawn through when it is
249
+ * a text of a group with a `textClip`; `freehand` says the item is drawn by a pen's group.
250
+ */
251
+ function emit(item, out, indent, scene, outline, clip, freehand = false) {
195
252
  switch (item.kind) {
196
253
  case "group": {
197
254
  const transform = item.transform ? ` transform="${escapeXml(item.transform)}"` : "";
198
255
  const layer = item.layer ? ` data-layer="${escapeXml(item.layer)}"` : "";
199
- out.push(`${indent}<g data-id="${escapeXml(item.id)}" data-role="${item.role}"${layer}${transform}${opacityOf(item.opacity)}${classOf(item)}>`);
256
+ // A sequence tag's pill says which of its owner's tags it is.
257
+ const tag = item.tag !== undefined ? ` data-tag="${item.tag}"` : "";
258
+ out.push(`${indent}<g data-id="${escapeXml(item.id)}" data-role="${item.role}"${tag}${layer}${transform}${opacityOf(groupOpacity(item))}${classOf(item)}>`);
259
+ // A sticky's text that does not fit is clipped to its card, in the group's own coordinates;
260
+ // its own texts take the clip, nested groups (its icon) do not.
261
+ const textClip = item.textClip?.id;
262
+ // A pen's stroke, and its drawing so far in a story, dash by its width.
263
+ const pen = freehand || item.freehand === true;
264
+ if (item.textClip) {
265
+ const { x, y, width, height, radius } = item.textClip;
266
+ out.push(`${indent} <clipPath id="${escapeXml(item.textClip.id)}"><rect x="${n(x)}" y="${n(y)}" width="${n(width)}" height="${n(height)}" rx="${n(radius)}"/></clipPath>`);
267
+ }
200
268
  if (item.href) {
201
269
  // The element's drawing is a link; its group keeps its identity for tools.
202
270
  out.push(`${indent} <a href="${escapeXml(item.href)}">`);
203
- for (const child of item.items)
204
- emit(child, out, `${indent} `, scene, outline);
271
+ for (const child of item.items) {
272
+ emit(child, out, `${indent} `, scene, outline, textClip, pen);
273
+ }
205
274
  out.push(`${indent} </a>`);
206
275
  }
207
276
  else {
208
- for (const child of item.items)
209
- emit(child, out, `${indent} `, scene, outline);
277
+ for (const child of item.items) {
278
+ emit(child, out, `${indent} `, scene, outline, textClip, pen);
279
+ }
210
280
  }
211
281
  out.push(`${indent}</g>`);
212
282
  return;
@@ -223,7 +293,7 @@ function emit(item, out, indent, scene, outline) {
223
293
  item.strokeOpacity !== undefined ? ` stroke-opacity="${n(item.strokeOpacity)}"` : "",
224
294
  item.fillRule === "evenodd" ? ' fill-rule="evenodd"' : "",
225
295
  ].join("");
226
- out.push(`${indent}<path d="${escapeXml(item.d)}"${extra} fill="${escapeXml(item.fill)}" stroke="${escapeXml(item.stroke)}" stroke-width="${n(item.strokeWidth)}"${rounded}${dashOf(item, !!item.rounded)}${classOf(item)}/>`);
296
+ out.push(`${indent}<path d="${escapeXml(item.d)}"${extra} fill="${escapeXml(item.fill)}" stroke="${escapeXml(item.stroke)}" stroke-width="${n(item.strokeWidth)}"${rounded}${dashOf(item, !!item.rounded, freehand)}${classOf(item)}/>`);
227
297
  return;
228
298
  }
229
299
  case "image": {
@@ -234,20 +304,32 @@ function emit(item, out, indent, scene, outline) {
234
304
  return;
235
305
  }
236
306
  case "polyline":
237
- out.push(`${indent}<polyline points="${item.points.map((p) => `${n(p.x)},${n(p.y)}`).join(" ")}" fill="none" stroke="${escapeXml(item.stroke)}" stroke-width="${n(item.strokeWidth)}" stroke-linejoin="round" stroke-linecap="round"${dashOf(item, true)}${opacityOf(item.opacity)}${classOf(item)}/>`);
307
+ out.push(`${indent}<polyline points="${item.points.map((p) => `${n(p.x)},${n(p.y)}`).join(" ")}" fill="none" stroke="${escapeXml(item.stroke)}" stroke-width="${n(item.strokeWidth)}" stroke-linejoin="round" stroke-linecap="round"${dashOf(item, true, freehand)}${opacityOf(item.opacity)}${classOf(item)}/>`);
238
308
  return;
239
309
  case "text": {
310
+ const clipped = clip === undefined ? "" : ` clip-path="url(#${escapeXml(clip)})"`;
240
311
  const family = outline?.family(stackOf(item, scene));
241
312
  if (outline && family && (outline.embeddable?.(family) ?? true)) {
242
313
  const shape = outline.outline(item.text, family, item.weight, item.size);
243
314
  if (shape.d === "")
244
315
  return;
245
316
  const shift = item.anchor === "start" ? 0 : item.anchor === "middle" ? shape.width / 2 : shape.width;
246
- out.push(`${indent}<path transform="translate(${n(item.x - shift)} ${n(item.baseline)})" d="${shape.d}" fill="${escapeXml(item.fill)}" aria-label="${escapeXml(item.text)}"/>`);
317
+ // The clip is in the group's coordinates, so a translated outline is wrapped to keep them.
318
+ if (clipped)
319
+ out.push(`${indent}<g${clipped}>`);
320
+ out.push(`${clipped ? `${indent} ` : indent}<path transform="translate(${n(item.x - shift)} ${n(item.baseline)})" d="${shape.d}" fill="${escapeXml(item.fill)}" aria-label="${escapeXml(item.text)}"/>`);
321
+ if (clipped)
322
+ out.push(`${indent}</g>`);
247
323
  return;
248
324
  }
249
- const familyAttribute = item.font === "mono" ? ` font-family="${escapeXml(scene.fonts.mono)}"` : "";
250
- out.push(`${indent}<text x="${n(item.x)}" y="${n(item.baseline)}" text-anchor="${item.anchor}" font-size="${n(item.size)}" font-weight="${item.weight}"${familyAttribute} fill="${escapeXml(item.fill)}">${escapeXml(item.text)}</text>`);
325
+ // A written stack comes first and the role's stack after it, so a viewer without the family
326
+ // falls back as the theme does; mono text names the mono stack; the rest inherits the svg's.
327
+ const familyAttribute = item.stack !== undefined
328
+ ? ` font-family="${escapeXml(`${item.stack}, ${roleStack(item, scene)}`)}"`
329
+ : item.font === "mono"
330
+ ? ` font-family="${escapeXml(scene.fonts.mono)}"`
331
+ : "";
332
+ out.push(`${indent}<text x="${n(item.x)}" y="${n(item.baseline)}" text-anchor="${item.anchor}" font-size="${n(item.size)}" font-weight="${item.weight}"${familyAttribute} fill="${escapeXml(item.fill)}"${clipped}>${escapeXml(item.text)}</text>`);
251
333
  return;
252
334
  }
253
335
  }
package/dist/svg.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"svg.js","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svg.js","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meltemi/diagrams-render",
3
- "version": "1.9.0",
3
+ "version": "1.10.18",
4
4
  "description": "Renders a vector scene to portable SVG.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,18 +26,23 @@
26
26
  "dist"
27
27
  ],
28
28
  "dependencies": {
29
- "@meltemi/diagrams-language": "1.9.0",
30
- "@meltemi/diagrams-model": "1.9.0",
31
- "@meltemi/diagrams-layout": "1.9.0"
29
+ "@meltemi/diagrams-model": "1.10.18",
30
+ "@meltemi/diagrams-layout": "1.10.18",
31
+ "@meltemi/diagrams-language": "1.10.18"
32
32
  },
33
33
  "devDependencies": {
34
- "@meltemi/diagrams-assets": "1.9.0",
35
- "@meltemi/diagrams-layout-elk": "1.9.0",
36
- "@meltemi/diagrams-fonts": "1.9.0"
34
+ "@meltemi/diagrams-assets": "1.10.18",
35
+ "@meltemi/diagrams-fonts": "1.10.18",
36
+ "@meltemi/diagrams-layout-elk": "1.10.18"
37
37
  },
38
38
  "publishConfig": {
39
39
  "access": "public"
40
40
  },
41
+ "meltemiRelease": {
42
+ "repository": "askenaz-dev/meltemi-diagrams",
43
+ "sha": "23cb4b445db4d6d7c91fbb018db844a4c72601ab",
44
+ "tag": "v1.10.18"
45
+ },
41
46
  "scripts": {
42
47
  "build": "tsc -p tsconfig.build.json",
43
48
  "typecheck": "tsc -p tsconfig.json"