@coldtea/pr-lens-renderer 0.2.2 → 0.2.4

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.
@@ -1,6 +1,6 @@
1
1
  import { assertNever } from "@coldtea/pr-lens-schema";
2
2
  import { coord } from "../geometry.js";
3
- import { MONO_STACK, SANS_STACK } from "../text.js";
3
+ import { SANS_STACK } from "../text.js";
4
4
  import { escapeXml, lines, tag, wrap } from "./primitives.js";
5
5
  export const toneFor = (delta) => {
6
6
  switch (delta) {
@@ -31,53 +31,6 @@ export const toneColour = (palette, tone) => {
31
31
  }
32
32
  };
33
33
  const TONES = ["added", "modified", "removed", "neutral"];
34
- const stylesheet = (palette) => [
35
- `text{font-family:${SANS_STACK}}`,
36
- `.lanebox{fill:${palette.lane}}`,
37
- `.lanelabel{font-size:10px;font-weight:700;letter-spacing:.12em;fill:${palette.muted}}`,
38
- `.card{fill:${palette.card};stroke:${palette.cardBorder};stroke-width:1}`,
39
- `.card-added{stroke:${palette.added};stroke-opacity:.55}`,
40
- `.card-modified{stroke:${palette.modified};stroke-opacity:.5}`,
41
- `.ghost{opacity:.55}`,
42
- `.ghost .card{stroke:${palette.removed};stroke-dasharray:4 3;stroke-opacity:.6}`,
43
- `.context{opacity:.82}`,
44
- `.ntitle{font-weight:600;fill:${palette.foreground}}`,
45
- `.strike{text-decoration:line-through}`,
46
- `.nsub{font-size:9.5px;fill:${palette.muted};font-family:${MONO_STACK}}`,
47
- `.chip{fill:${palette.chip}}`,
48
- `.glyph{fill:${palette.muted}}`,
49
- `.glyph-stroke{stroke:${palette.muted};stroke-width:1.4;fill:none}`,
50
- `.bdg text{font-size:8.5px;font-weight:700;letter-spacing:.06em}`,
51
- `.bdg rect{stroke-width:1}`,
52
- `.bdg-added rect{fill:${palette.addedFill};stroke:${palette.addedBorder}}`,
53
- `.bdg-added text{fill:${palette.addedText}}`,
54
- `.bdg-modified rect{fill:${palette.modifiedFill};stroke:${palette.modifiedBorder}}`,
55
- `.bdg-modified text{fill:${palette.modifiedText}}`,
56
- `.bdg-removed rect{fill:${palette.removedFill};stroke:${palette.removedBorder}}`,
57
- `.bdg-removed text{fill:${palette.removedText}}`,
58
- `.bdg-neutral rect{fill:${palette.neutralFill};stroke:${palette.cardBorder}}`,
59
- `.bdg-neutral text{fill:${palette.muted}}`,
60
- `.edge{fill:none;stroke-width:1.5}`,
61
- `.edge-added{stroke:${palette.added}}`,
62
- `.edge-modified{stroke:${palette.modified}}`,
63
- `.edge-removed{stroke:${palette.removed};stroke-dasharray:5 4;opacity:.7}`,
64
- `.edge-neutral{stroke:${palette.edge}}`,
65
- `.hero{stroke-width:2.25}`,
66
- `.faded{opacity:.45}`,
67
- `.glow{fill:none;stroke-width:7;opacity:.14}`,
68
- `.msg-self{font-size:11px;fill:${palette.foreground}}`,
69
- `.lpill{fill:${palette.pill};stroke:${palette.pillBorder};stroke-width:1}`,
70
- `.ltext{font-size:9.5px;font-weight:600;fill:${palette.muted}}`,
71
- `.ltext-added{fill:${palette.addedText}}`,
72
- `.ltext-modified{fill:${palette.modifiedText}}`,
73
- `.ltext-removed{fill:${palette.removedText}}`,
74
- `.cardsh{filter:drop-shadow(0 1px 2px ${palette.shadow})}`,
75
- `.lifeline{stroke:${palette.lifeline};stroke-width:1;stroke-dasharray:3 4}`,
76
- `.actbar{fill:${palette.addedFill};stroke:${palette.addedBorder}}`,
77
- `.msg{fill:none;stroke-width:1.5}`,
78
- `.msg-return{stroke-dasharray:4 3;opacity:.8}`,
79
- `.msg-strong{stroke-width:2.25}`,
80
- ].join("");
81
34
  /**
82
35
  * Two arrowhead forms per tone, the classic sequence-diagram pair: a filled
83
36
  * head for a message the sender waits on, an open line-form head for one it
@@ -125,10 +78,10 @@ export const svgDocument = (input) => {
125
78
  const defs = wrap("defs", {}, wrap("pattern", { id: "dots", width: DOT_PITCH, height: DOT_PITCH, patternUnits: "userSpaceOnUse" }, tag("circle", { cx: 1.5, cy: 1.5, r: 1, fill: palette.dot })) + markers(palette));
126
79
  return lines([
127
80
  `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${coord(width)} ${coord(height)}" ` +
128
- `width="${coord(width)}" height="${coord(height)}" role="img" aria-label="${escapeXml(title)}">`,
81
+ `width="${coord(width)}" height="${coord(height)}" role="img" aria-label="${escapeXml(title)}" ` +
82
+ `font-family="${escapeXml(SANS_STACK)}">`,
129
83
  wrap("title", {}, escapeXml(title)),
130
84
  description === undefined ? "" : wrap("desc", {}, escapeXml(description)),
131
- wrap("style", {}, stylesheet(palette)),
132
85
  defs,
133
86
  tag("rect", { x: 0, y: 0, width: coord(width), height: coord(height), rx: 12, fill: palette.background }),
134
87
  tag("rect", { x: 0, y: 0, width: coord(width), height: coord(height), rx: 12, fill: "url(#dots)" }),
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/svg/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/svg/document.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { NodeKind } from "@coldtea/pr-lens-schema";
2
- export declare const glyphGroup: (kind: NodeKind, cx: number, cy: number) => string;
2
+ import type { SvgStyles } from "./styles.js";
3
+ export declare const glyphGroup: (kind: NodeKind, cx: number, cy: number, styles: SvgStyles) => string;
3
4
  //# sourceMappingURL=icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/svg/icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAuHxD,eAAO,MAAM,UAAU,SAAU,QAAQ,MAAM,MAAM,MAAM,MAAM,KAAG,MAC5B,CAAC"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/svg/icons.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA8H7C,eAAO,MAAM,UAAU,SAAU,QAAQ,MAAM,MAAM,MAAM,MAAM,UAAU,SAAS,KAAG,MACvC,CAAC"}
package/dist/svg/icons.js CHANGED
@@ -2,22 +2,13 @@ import { assertNever } from "@coldtea/pr-lens-schema";
2
2
  import { coord } from "../geometry.js";
3
3
  import { MONO_STACK } from "../text.js";
4
4
  import { lines, tag, textNode, wrap } from "./primitives.js";
5
- const stroked = (path) => tag("path", { class: "glyph-stroke", d: path });
6
- const glyphText = (cx, cy, content, style) => textNode({
5
+ const glyphText = (cx, cy, content, attributes) => textNode({
7
6
  class: "glyph",
8
7
  x: coord(cx),
9
8
  y: coord(cy + 4.5),
10
9
  "text-anchor": "middle",
11
- style,
10
+ ...attributes,
12
11
  }, content);
13
- const box = (cx, cy, width, height, radius) => tag("rect", {
14
- class: "glyph-stroke",
15
- x: coord(cx - width / 2),
16
- y: coord(cy - height / 2),
17
- width: coord(width),
18
- height: coord(height),
19
- rx: radius === undefined ? undefined : coord(radius),
20
- });
21
12
  /**
22
13
  * The chip glyph for a node's kind, centred on a point.
23
14
  *
@@ -25,12 +16,22 @@ const box = (cx, cy, width, height, radius) => tag("rect", {
25
16
  * is why the kind enum is coarse. Every kind draws something: a card with an
26
17
  * empty chip reads as a rendering fault rather than as an unknown kind.
27
18
  */
28
- const kindGlyph = (kind, cx, cy) => {
19
+ const kindGlyph = (kind, cx, cy, styles) => {
20
+ const stroked = (path) => tag("path", { class: "glyph-stroke", d: path, ...styles.glyphStroke });
21
+ const box = (cx, cy, width, height, radius) => tag("rect", {
22
+ class: "glyph-stroke",
23
+ x: coord(cx - width / 2),
24
+ y: coord(cy - height / 2),
25
+ width: coord(width),
26
+ height: coord(height),
27
+ rx: radius === undefined ? undefined : coord(radius),
28
+ ...styles.glyphStroke,
29
+ });
29
30
  switch (kind) {
30
31
  case "service":
31
32
  return lines([
32
33
  box(cx, cy, 13, 13, 3),
33
- tag("circle", { class: "glyph", cx: coord(cx), cy: coord(cy), r: 2 }),
34
+ tag("circle", { class: "glyph", ...styles.glyph, cx: coord(cx), cy: coord(cy), r: 2 }),
34
35
  ]);
35
36
  case "app":
36
37
  return lines([
@@ -38,17 +39,23 @@ const kindGlyph = (kind, cx, cy) => {
38
39
  stroked(`M${coord(cx - 7)},${coord(cy - 2)} h14`),
39
40
  ]);
40
41
  case "module":
41
- return glyphText(cx, cy, "{ }", `font-size:11px;font-family:${MONO_STACK}`);
42
+ return glyphText(cx, cy, "{ }", { ...styles.glyph, "font-size": 11, "font-family": MONO_STACK });
42
43
  case "function":
43
- return glyphText(cx, cy, "ƒ", "font-size:14px;font-style:italic;font-family:Georgia,serif");
44
+ return glyphText(cx, cy, "ƒ", {
45
+ ...styles.glyph,
46
+ "font-size": 14,
47
+ "font-style": "italic",
48
+ "font-family": "Georgia,serif",
49
+ });
44
50
  case "route":
45
51
  return tag("path", {
46
52
  class: "glyph",
53
+ ...styles.glyph,
47
54
  d: `M${coord(cx - 7)},${coord(cy - 6)} L${coord(cx + 7)},${coord(cy)} L${coord(cx - 7)},${coord(cy + 6)} Z`,
48
55
  });
49
56
  case "job":
50
57
  return lines([
51
- tag("circle", { class: "glyph-stroke", cx: coord(cx), cy: coord(cy), r: 6.5 }),
58
+ tag("circle", { class: "glyph-stroke", ...styles.glyphStroke, cx: coord(cx), cy: coord(cy), r: 6.5 }),
52
59
  stroked(`M${coord(cx)},${coord(cy - 3.5)} V${coord(cy)} H${coord(cx + 3)}`),
53
60
  ]);
54
61
  case "queue":
@@ -59,12 +66,13 @@ const kindGlyph = (kind, cx, cy) => {
59
66
  ]);
60
67
  case "datastore":
61
68
  return lines([
62
- tag("ellipse", { class: "glyph-stroke", cx: coord(cx), cy: coord(cy - 4.5), rx: 6.5, ry: 2.6 }),
69
+ tag("ellipse", { class: "glyph-stroke", ...styles.glyphStroke, cx: coord(cx), cy: coord(cy - 4.5), rx: 6.5, ry: 2.6 }),
63
70
  stroked(`M${coord(cx - 6.5)},${coord(cy - 4.5)} v9 a6.5,2.6 0 0 0 13 0 v-9`),
64
71
  ]);
65
72
  case "cache":
66
73
  return tag("path", {
67
74
  class: "glyph",
75
+ ...styles.glyph,
68
76
  d: `M${coord(cx + 1)},${coord(cy - 7)} L${coord(cx - 6)},${coord(cy + 1)} H${coord(cx - 1)} L${coord(cx - 1)},${coord(cy + 7)} L${coord(cx + 6)},${coord(cy - 1)} H${coord(cx + 1)} Z`,
69
77
  });
70
78
  case "external":
@@ -81,8 +89,8 @@ const kindGlyph = (kind, cx, cy) => {
81
89
  return lines([
82
90
  stroked(`M${coord(cx - 7)},${coord(cy - 4)} h14`),
83
91
  stroked(`M${coord(cx - 7)},${coord(cy + 4)} h14`),
84
- tag("circle", { class: "glyph", cx: coord(cx - 2), cy: coord(cy - 4), r: 2.2 }),
85
- tag("circle", { class: "glyph", cx: coord(cx + 3), cy: coord(cy + 4), r: 2.2 }),
92
+ tag("circle", { class: "glyph", ...styles.glyph, cx: coord(cx - 2), cy: coord(cy - 4), r: 2.2 }),
93
+ tag("circle", { class: "glyph", ...styles.glyph, cx: coord(cx + 3), cy: coord(cy + 4), r: 2.2 }),
86
94
  ]);
87
95
  case "test":
88
96
  return stroked(`M${coord(cx - 6)},${coord(cy)} l4,4 l8,-8`);
@@ -94,13 +102,13 @@ const kindGlyph = (kind, cx, cy) => {
94
102
  ]);
95
103
  case "other":
96
104
  return lines([
97
- tag("circle", { class: "glyph", cx: coord(cx - 5), cy: coord(cy), r: 1.8 }),
98
- tag("circle", { class: "glyph", cx: coord(cx), cy: coord(cy), r: 1.8 }),
99
- tag("circle", { class: "glyph", cx: coord(cx + 5), cy: coord(cy), r: 1.8 }),
105
+ tag("circle", { class: "glyph", ...styles.glyph, cx: coord(cx - 5), cy: coord(cy), r: 1.8 }),
106
+ tag("circle", { class: "glyph", ...styles.glyph, cx: coord(cx), cy: coord(cy), r: 1.8 }),
107
+ tag("circle", { class: "glyph", ...styles.glyph, cx: coord(cx + 5), cy: coord(cy), r: 1.8 }),
100
108
  ]);
101
109
  default:
102
110
  return assertNever(kind, "Unhandled node kind");
103
111
  }
104
112
  };
105
- export const glyphGroup = (kind, cx, cy) => wrap("g", {}, kindGlyph(kind, cx, cy));
113
+ export const glyphGroup = (kind, cx, cy, styles) => wrap("g", {}, kindGlyph(kind, cx, cy, styles));
106
114
  //# sourceMappingURL=icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/svg/icons.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/svg/icons.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { Delta, FlowMessage, GraphEdge } from "@coldtea/pr-lens-schema";
2
+ import type { Palette } from "../theme.js";
3
+ import type { Attributes } from "./primitives.js";
4
+ import { type Tone } from "./document.js";
5
+ export declare const stylesFor: (palette: Palette) => {
6
+ lane: {
7
+ fill: string;
8
+ };
9
+ laneLabel: {
10
+ "font-size": number;
11
+ "font-weight": number;
12
+ "letter-spacing": string;
13
+ fill: string;
14
+ };
15
+ title: {
16
+ "font-weight": number;
17
+ fill: string;
18
+ };
19
+ subtitle: {
20
+ "font-size": number;
21
+ fill: string;
22
+ "font-family": string;
23
+ };
24
+ chip: {
25
+ fill: string;
26
+ };
27
+ glyph: {
28
+ fill: string;
29
+ };
30
+ glyphStroke: {
31
+ stroke: string;
32
+ "stroke-width": number;
33
+ fill: string;
34
+ };
35
+ badgeText: {
36
+ "font-size": number;
37
+ "font-weight": number;
38
+ "letter-spacing": string;
39
+ };
40
+ glow: {
41
+ fill: string;
42
+ "stroke-width": number;
43
+ opacity: number;
44
+ };
45
+ pill: {
46
+ fill: string;
47
+ stroke: string;
48
+ "stroke-width": number;
49
+ };
50
+ pillText: {
51
+ "font-size": number;
52
+ "font-weight": number;
53
+ };
54
+ lifeline: {
55
+ stroke: string;
56
+ "stroke-width": number;
57
+ "stroke-dasharray": string;
58
+ };
59
+ activation: {
60
+ fill: string;
61
+ stroke: string;
62
+ };
63
+ };
64
+ export type SvgStyles = ReturnType<typeof stylesFor>;
65
+ export declare const cardAttributes: (delta: Delta, palette: Palette) => Attributes;
66
+ export declare const cardGroupAttributes: (delta: Delta, palette: Palette) => Attributes;
67
+ export declare const badgeColours: (tone: Tone, palette: Palette) => {
68
+ fill: string;
69
+ stroke: string;
70
+ text: string;
71
+ };
72
+ export declare const edgeAttributes: (edge: GraphEdge, palette: Palette) => Attributes;
73
+ export declare const messageAttributes: (message: FlowMessage, palette: Palette) => Attributes;
74
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/svg/styles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAG/D,eAAO,MAAM,SAAS,YAAa,OAAO;;QAChC,IAAI;;;QACC,WAAW;QAAM,aAAa;QAAO,gBAAgB;QAAW,IAAI;;;QACxE,aAAa;QAAO,IAAI;;;;;;;;QAEzB,IAAI;;;QACH,IAAI;;;QACE,MAAM;QAAiB,cAAc;QAAO,IAAI;;;QAClD,WAAW;QAAO,aAAa;QAAO,gBAAgB;;;QAC3D,IAAI;QAAU,cAAc;QAAK,OAAO;;;QACxC,IAAI;QAAgB,MAAM;QAAsB,cAAc;;;QAC1D,WAAW;QAAO,aAAa;;;QAC/B,MAAM;QAAoB,cAAc;QAAK,kBAAkB;;;QAC7D,IAAI;QAAqB,MAAM;;CAC7C,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAiBrD,eAAO,MAAM,cAAc,UAAW,KAAK,WAAW,OAAO,KAAG,UAI9D,CAAC;AAgBH,eAAO,MAAM,mBAAmB,UAAW,KAAK,WAAW,OAAO,KAAG,UAGnE,CAAC;AAEH,eAAO,MAAM,YAAY,SAAU,IAAI,WAAW,OAAO;;;;CAaxD,CAAC;AAUF,eAAO,MAAM,cAAc,SAAU,SAAS,WAAW,OAAO,KAAG,UAelE,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,WAAW,WAAW,OAAO,KAAG,UAe1E,CAAC"}
@@ -0,0 +1,109 @@
1
+ import { assertNever } from "@coldtea/pr-lens-schema";
2
+ import { MONO_STACK } from "../text.js";
3
+ import { toneColour, toneFor } from "./document.js";
4
+ // GitHub's attachment viewer can ignore CSS, so appearance lives on the elements.
5
+ export const stylesFor = (palette) => ({
6
+ lane: { fill: palette.lane },
7
+ laneLabel: { "font-size": 10, "font-weight": 700, "letter-spacing": ".12em", fill: palette.muted },
8
+ title: { "font-weight": 600, fill: palette.foreground },
9
+ subtitle: { "font-size": 9.5, fill: palette.muted, "font-family": MONO_STACK },
10
+ chip: { fill: palette.chip },
11
+ glyph: { fill: palette.muted },
12
+ glyphStroke: { stroke: palette.muted, "stroke-width": 1.4, fill: "none" },
13
+ badgeText: { "font-size": 8.5, "font-weight": 700, "letter-spacing": ".06em" },
14
+ glow: { fill: "none", "stroke-width": 7, opacity: 0.14 },
15
+ pill: { fill: palette.pill, stroke: palette.pillBorder, "stroke-width": 1 },
16
+ pillText: { "font-size": 9.5, "font-weight": 600 },
17
+ lifeline: { stroke: palette.lifeline, "stroke-width": 1, "stroke-dasharray": "3 4" },
18
+ activation: { fill: palette.addedFill, stroke: palette.addedBorder },
19
+ });
20
+ const cardStroke = (delta, palette) => {
21
+ switch (delta) {
22
+ case "added":
23
+ return { stroke: palette.added, "stroke-opacity": 0.55 };
24
+ case "modified":
25
+ return { stroke: palette.modified, "stroke-opacity": 0.5 };
26
+ case "removed":
27
+ return { stroke: palette.removed, "stroke-dasharray": "4 3", "stroke-opacity": 0.6 };
28
+ case "unchanged":
29
+ return { stroke: palette.cardBorder };
30
+ default:
31
+ return assertNever(delta);
32
+ }
33
+ };
34
+ export const cardAttributes = (delta, palette) => ({
35
+ fill: palette.card,
36
+ "stroke-width": 1,
37
+ ...cardStroke(delta, palette),
38
+ });
39
+ const cardOpacity = (delta) => {
40
+ switch (delta) {
41
+ case "removed":
42
+ return 0.55;
43
+ case "unchanged":
44
+ return 0.82;
45
+ case "added":
46
+ case "modified":
47
+ return undefined;
48
+ default:
49
+ return assertNever(delta);
50
+ }
51
+ };
52
+ export const cardGroupAttributes = (delta, palette) => ({
53
+ filter: `drop-shadow(0 1px 2px ${palette.shadow})`,
54
+ opacity: cardOpacity(delta),
55
+ });
56
+ export const badgeColours = (tone, palette) => {
57
+ switch (tone) {
58
+ case "added":
59
+ return { fill: palette.addedFill, stroke: palette.addedBorder, text: palette.addedText };
60
+ case "modified":
61
+ return { fill: palette.modifiedFill, stroke: palette.modifiedBorder, text: palette.modifiedText };
62
+ case "removed":
63
+ return { fill: palette.removedFill, stroke: palette.removedBorder, text: palette.removedText };
64
+ case "neutral":
65
+ return { fill: palette.neutralFill, stroke: palette.cardBorder, text: palette.muted };
66
+ default:
67
+ return assertNever(tone);
68
+ }
69
+ };
70
+ const strokeAttributes = (delta, palette) => ({
71
+ fill: "none",
72
+ stroke: toneColour(palette, toneFor(delta)),
73
+ "stroke-width": 1.5,
74
+ "stroke-dasharray": delta === "removed" ? "5 4" : undefined,
75
+ opacity: delta === "removed" ? 0.7 : undefined,
76
+ });
77
+ export const edgeAttributes = (edge, palette) => {
78
+ const attributes = {
79
+ ...strokeAttributes(edge.delta, palette),
80
+ ...(edge.delta === "unchanged" ? { opacity: 0.82 } : {}),
81
+ };
82
+ switch (edge.emphasis) {
83
+ case "hero":
84
+ return { ...attributes, "stroke-width": 2.25 };
85
+ case "muted":
86
+ return { ...attributes, opacity: 0.45 };
87
+ case "normal":
88
+ return attributes;
89
+ default:
90
+ return assertNever(edge.emphasis);
91
+ }
92
+ };
93
+ export const messageAttributes = (message, palette) => {
94
+ const attributes = {
95
+ ...strokeAttributes(message.delta, palette),
96
+ "stroke-width": message.delta === "added" ? 2.25 : 1.5,
97
+ };
98
+ switch (message.kind) {
99
+ case "return":
100
+ return { ...attributes, "stroke-dasharray": "4 3", opacity: 0.8 };
101
+ case "sync":
102
+ case "async":
103
+ case "self":
104
+ return attributes;
105
+ default:
106
+ return assertNever(message.kind);
107
+ }
108
+ };
109
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/svg/styles.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAEjD,eAAO,MAAM,UAAU,iGACqE,CAAC;AAC7F,eAAO,MAAM,UAAU,0EACgD,CAAC;AA0CxE,6EAA6E;AAC7E,eAAO,MAAM,OAAO,SAAU,MAAM,QAAQ,IAAI,YAAY,MAAM,KAAG,MAIpE,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,SACb,MAAM,QACN,IAAI,YACA,MAAM,YACN,MAAM,KACf,MAiBF,CAAC"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAEjD,eAAO,MAAM,UAAU,iGACqE,CAAC;AAC7F,eAAO,MAAM,UAAU,0EACgD,CAAC;AAkExE,6EAA6E;AAC7E,eAAO,MAAM,OAAO,SAAU,MAAM,QAAQ,IAAI,YAAY,MAAM,KAAG,MAIpE,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,SACb,MAAM,QACN,IAAI,YACA,MAAM,YACN,MAAM,KACf,MAiBF,CAAC"}
package/dist/text.js CHANGED
@@ -15,8 +15,26 @@ const SANS_ADVANCE = {
15
15
  o: 556, p: 556, q: 556, r: 333, s: 500, t: 278, u: 556, v: 500, w: 722, x: 500,
16
16
  y: 500, z: 500, "{": 334, "|": 260, "}": 334, "~": 584,
17
17
  };
18
- /** What a character outside the table is assumed to cost, in the same units. */
18
+ /** What a narrow character outside the table is assumed to cost, in the same units. */
19
19
  const FALLBACK_ADVANCE = 600;
20
+ /**
21
+ * East Asian Wide and Fullwidth glyphs occupy a full em. Measuring them at
22
+ * the narrow fallback puts every CJK label about 38% short of its real width,
23
+ * which is enough for an edge label's plate to stop covering its own text.
24
+ */
25
+ const isWide = (character) => {
26
+ const point = character.codePointAt(0) ?? 0;
27
+ return ((point >= 0x1100 && point <= 0x115f) ||
28
+ (point >= 0x2e80 && point <= 0xa4cf) ||
29
+ (point >= 0xac00 && point <= 0xd7a3) ||
30
+ (point >= 0xf900 && point <= 0xfaff) ||
31
+ (point >= 0xfe30 && point <= 0xfe6f) ||
32
+ (point >= 0xff00 && point <= 0xff60) ||
33
+ (point >= 0xffe0 && point <= 0xffe6) ||
34
+ (point >= 0x20000 && point <= 0x3fffd));
35
+ };
36
+ const FULL_WIDTH_ADVANCE = 1000;
37
+ const fallbackAdvance = (character) => isWide(character) ? FULL_WIDTH_ADVANCE : FALLBACK_ADVANCE;
20
38
  /**
21
39
  * The bold face of the same family runs a little wider at every weight step.
22
40
  * One factor over the regular table is close enough for boxes that already
@@ -27,9 +45,9 @@ const MONO_ADVANCE = 600;
27
45
  const advanceFor = (face, character) => {
28
46
  switch (face) {
29
47
  case "sans":
30
- return SANS_ADVANCE[character] ?? FALLBACK_ADVANCE;
48
+ return SANS_ADVANCE[character] ?? fallbackAdvance(character);
31
49
  case "sans-bold":
32
- return (SANS_ADVANCE[character] ?? FALLBACK_ADVANCE) * BOLD_WIDENING;
50
+ return (SANS_ADVANCE[character] ?? fallbackAdvance(character)) * BOLD_WIDENING;
33
51
  case "mono":
34
52
  return MONO_ADVANCE;
35
53
  default:
package/dist/text.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -5,5 +5,5 @@
5
5
  * not otherwise need.
6
6
  */
7
7
  export declare const RENDERER_NAME = "@coldtea/pr-lens-renderer";
8
- export declare const RENDERER_VERSION = "0.2.2";
8
+ export declare const RENDERER_VERSION = "0.2.4";
9
9
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -5,5 +5,5 @@
5
5
  * not otherwise need.
6
6
  */
7
7
  export const RENDERER_NAME = "@coldtea/pr-lens-renderer";
8
- export const RENDERER_VERSION = "0.2.2";
8
+ export const RENDERER_VERSION = "0.2.4";
9
9
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coldtea/pr-lens-renderer",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "The PR Lens renderer: a schema-valid graph document in, a self-contained animated SVG out.",
5
5
  "license": "MIT",
6
6
  "author": "Coldtea AI",
@@ -60,10 +60,18 @@ const trackedWidth = (
60
60
  export const badgeWidth = (text: string): number =>
61
61
  trackedWidth(text, "sans-bold", BADGE_TEXT_SIZE, BADGE_TRACKING) + BADGE_PADDING_X * 2;
62
62
 
63
- /** Every badge a card carries, its own first and the delta badge last. */
63
+ /**
64
+ * Every badge a card carries, its own first and the delta badge last.
65
+ *
66
+ * A producer badge that already says the same thing as the delta badge
67
+ * (e.g. "new" on a node whose delta is "added") is dropped so the card
68
+ * does not show it twice.
69
+ */
64
70
  export const cardBadges = (node: GraphNode): string[] => {
65
71
  const delta = deltaBadgeText(node.delta);
66
- return delta === undefined ? [...node.badges] : [...node.badges, delta];
72
+ if (delta === undefined) return [...node.badges];
73
+ const own = node.badges.filter((text) => text.toLowerCase() !== delta.toLowerCase());
74
+ return [...own, delta];
67
75
  };
68
76
 
69
77
  export type PlacedNode = {