@coldtea/pr-lens-renderer 0.2.6 → 0.3.1

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 (59) hide show
  1. package/README.md +2 -1
  2. package/dist/bounds.d.ts +6 -1
  3. package/dist/bounds.d.ts.map +1 -1
  4. package/dist/bounds.js +21 -0
  5. package/dist/bounds.js.map +1 -1
  6. package/dist/design.d.ts +5 -0
  7. package/dist/design.d.ts.map +1 -1
  8. package/dist/design.js +5 -0
  9. package/dist/design.js.map +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/layout/architecture.d.ts +2 -0
  15. package/dist/layout/architecture.d.ts.map +1 -1
  16. package/dist/layout/architecture.js +5 -0
  17. package/dist/layout/architecture.js.map +1 -1
  18. package/dist/layout/congestion.d.ts +5 -0
  19. package/dist/layout/congestion.d.ts.map +1 -1
  20. package/dist/layout/congestion.js +50 -12
  21. package/dist/layout/congestion.js.map +1 -1
  22. package/dist/layout/edges.d.ts +18 -3
  23. package/dist/layout/edges.d.ts.map +1 -1
  24. package/dist/layout/edges.js +93 -23
  25. package/dist/layout/edges.js.map +1 -1
  26. package/dist/layout/labels.d.ts +15 -4
  27. package/dist/layout/labels.d.ts.map +1 -1
  28. package/dist/layout/labels.js +404 -119
  29. package/dist/layout/labels.js.map +1 -1
  30. package/dist/manifest.d.ts +1 -1
  31. package/dist/manifest.d.ts.map +1 -1
  32. package/dist/manifest.js +3 -1
  33. package/dist/manifest.js.map +1 -1
  34. package/dist/render.d.ts +12 -2
  35. package/dist/render.d.ts.map +1 -1
  36. package/dist/render.js +2 -2
  37. package/dist/render.js.map +1 -1
  38. package/dist/svg/architecture.d.ts.map +1 -1
  39. package/dist/svg/architecture.js +3 -8
  40. package/dist/svg/architecture.js.map +1 -1
  41. package/dist/theme.d.ts +9 -8
  42. package/dist/theme.d.ts.map +1 -1
  43. package/dist/theme.js +61 -8
  44. package/dist/theme.js.map +1 -1
  45. package/dist/version.d.ts +1 -1
  46. package/dist/version.js +1 -1
  47. package/package.json +2 -2
  48. package/src/bounds.ts +29 -1
  49. package/src/design.ts +5 -0
  50. package/src/index.ts +2 -1
  51. package/src/layout/architecture.ts +7 -0
  52. package/src/layout/congestion.ts +71 -12
  53. package/src/layout/edges.ts +126 -21
  54. package/src/layout/labels.ts +495 -136
  55. package/src/manifest.ts +3 -2
  56. package/src/render.ts +19 -4
  57. package/src/svg/architecture.ts +3 -7
  58. package/src/theme.ts +62 -8
  59. package/src/version.ts +1 -1
package/dist/manifest.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { SCHEMA_VERSION } from "@coldtea/pr-lens-schema";
3
+ import { THEMES } from "./theme.js";
3
4
  import { RENDERER_NAME, RENDERER_VERSION } from "./version.js";
4
5
  /**
5
6
  * How many hex characters of the digest an address carries. Long enough that
@@ -49,7 +50,8 @@ const FILE_NAME_ESCAPES = [
49
50
  const escapeForFileName = (id) => FILE_NAME_ESCAPES.reduce((text, [character, escape]) => text.split(character).join(escape), id);
50
51
  /** The contract's ceiling on an `Id`, which an asset id has to stay under. */
51
52
  const ASSET_ID_MAX = 128;
52
- const THEME_SUFFIX_MAX = "-light".length;
53
+ /** The longest theme name, so a stem can never push an asset id over the cap. */
54
+ const THEME_SUFFIX_MAX = Math.max(...THEMES.map((theme) => theme.length)) + "-".length;
53
55
  const STEM_MAX = ASSET_ID_MAX - THEME_SUFFIX_MAX;
54
56
  const DIGEST_LENGTH = 12;
55
57
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
package/dist/render.d.ts CHANGED
@@ -29,10 +29,20 @@ export type RenderedSvg = {
29
29
  * from rearranging itself between two pushes that barely changed anything.
30
30
  */
31
31
  export declare const render: (doc: GraphDoc, options: RenderOptions) => RenderedSvg;
32
+ /**
33
+ * What a render may be asked for: the `<picture>` pair, one half of it, or
34
+ * the single self-contained render.
35
+ *
36
+ * Not `readonly Theme[]`, which would admit all three at once — three assets
37
+ * per view against a view cap derived from two, so a document that validates
38
+ * could produce a manifest that does not. The contract's promise is that if
39
+ * it parses, it renders; this is the boundary that keeps it true.
40
+ */
41
+ export type RenderThemes = readonly ["light", "dark"] | readonly ["light"] | readonly ["dark"] | readonly ["neutral"];
32
42
  export type RenderAllOptions = {
33
43
  config?: Config;
34
- /** Which halves of the theme pair to produce. Both, by default. */
35
- themes?: readonly Theme[];
44
+ /** The `<picture>` pair by default; `['neutral']` for a single-image surface. */
45
+ themes?: RenderThemes;
36
46
  };
37
47
  export type RenderedAsset = RenderedSvg & {
38
48
  asset: RenderAsset;
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAmB,MAAM,yBAAyB,CAAC;AAEpH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,OAAO,EAAsB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAK5D,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAoCF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,QAAS,QAAQ,WAAW,aAAa,KAAG,WAwC9D,CAAC;AASF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,MAAM,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,QAAS,QAAQ,YAAW,gBAAgB,KAAQ,eA8DzE,CAAC"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAmB,MAAM,yBAAyB,CAAC;AAEpH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,OAAO,EAA0B,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAKhE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAoCF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,QAAS,QAAQ,WAAW,aAAa,KAAG,WAwC9D,CAAC;AASF;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,GAC1B,SAAS,CAAC,OAAO,CAAC,GAClB,SAAS,CAAC,MAAM,CAAC,GACjB,SAAS,CAAC,SAAS,CAAC,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,QAAS,QAAQ,YAAW,gBAAgB,KAAQ,eA8DzE,CAAC"}
package/dist/render.js CHANGED
@@ -3,7 +3,7 @@ import { applyCorrections } from "./corrections.js";
3
3
  import { PrLensRenderError } from "./errors.js";
4
4
  import { buildManifest, contentHash, renderAssetFileName, renderAssetId } from "./manifest.js";
5
5
  import { findView, flattenViews, resolveScope } from "./scope.js";
6
- import { paletteFor, THEMES } from "./theme.js";
6
+ import { paletteFor, THEME_PAIR } from "./theme.js";
7
7
  import { paintArchitecture } from "./svg/architecture.js";
8
8
  import { paintDataFlow } from "./svg/dataflow.js";
9
9
  import { svgDocument } from "./svg/document.js";
@@ -81,7 +81,7 @@ const requireView = (views, id) => {
81
81
  */
82
82
  export const renderAll = (doc, options = {}) => {
83
83
  const prepared = prepare(doc, options.config);
84
- const themes = options.themes ?? THEMES;
84
+ const themes = options.themes ?? THEME_PAIR;
85
85
  const targets = prepared.views.length > 0
86
86
  ? flattenViews(prepared.views)
87
87
  .filter((view) => prepared.lenses.includes(view.lens))
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/svg/architecture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAS,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAKjD,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAA2C,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAQnF,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AA4EnC,eAAO,MAAM,SAAS,WAAY,UAAU,WAAW,OAAO,KAAG,MAoEhE,CAAC;AAsDF,eAAO,MAAM,cAAc,SAAU,MAAM,OAAO,GAAG,QAAQ,IAAI,WAAW,OAAO,KAAG,MA0BrF,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACrB,WAAW,SACX,WAAW,GAAG,SAAS,WACrB,OAAO,KACf,oBA2EF,CAAC"}
1
+ {"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/svg/architecture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAS,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAIjD,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAA2C,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAQnF,OAAO,EAQL,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AA4EnC,eAAO,MAAM,SAAS,WAAY,UAAU,WAAW,OAAO,KAAG,MAoEhE,CAAC;AAsDF,eAAO,MAAM,cAAc,SAAU,MAAM,OAAO,GAAG,QAAQ,IAAI,WAAW,OAAO,KAAG,MA0BrF,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACrB,WAAW,SACX,WAAW,GAAG,SAAS,WACrB,OAAO,KACf,oBAuEF,CAAC"}
@@ -5,14 +5,13 @@ import { DIAGRAM_MARGIN } from "../design.js";
5
5
  import { travellingPulses } from "./pulse.js";
6
6
  import { canvasFor, union } from "../bounds.js";
7
7
  import { coord } from "../geometry.js";
8
- import { placeLabelPills } from "../layout/labels.js";
9
8
  import { relieveCongestion } from "../layout/congestion.js";
10
9
  import { lines, tag, textNode, wrap } from "./primitives.js";
11
10
  import { curveBounds } from "../layout/edges.js";
12
11
  import { atlasBoxes, emptyAtlas } from "../atlas.js";
13
12
  import { markerFor, shifted, toneColour, toneFor } from "./document.js";
14
13
  import { badgeColours, cardAttributes, cardGroupAttributes, edgeAttributes, stylesFor, } from "./styles.js";
15
- import { badgeRow, badgeWidth, cardBadges, cardTextWidth, deltaBadgeText, laneHeaderText, } from "../layout/architecture.js";
14
+ import { badgeRow, badgeWidth, cardBadges, cardTextWidth, deltaBadgeText, laneHeaderText, occupiedBoxes, } from "../layout/architecture.js";
16
15
  import { BADGE_GAP, BADGE_HEIGHT, BADGE_RADIUS, BADGE_RISE, CARD_PADDING_X, CARD_RADIUS, HERO_PULSE_COUNT, ICON_CHIP_GAP, ICON_CHIP_RADIUS, ICON_CHIP_SIZE, LANE_HEADER_BASELINE, LANE_PADDING_X, LANE_RADIUS, SUBTITLE_SIZE, } from "../design.js";
17
16
  const badgeTone = (node, text) => text === deltaBadgeText(node.delta) ? toneFor(node.delta) : "neutral";
18
17
  /** The badge row, laid left to right across the strip the layout reserved. */
@@ -171,13 +170,9 @@ export const paintLabelPill = (text, box, tone, palette) => {
171
170
  }, text));
172
171
  };
173
172
  export const paintArchitecture = (graph, hints, palette) => {
174
- const { layout, routed } = relieveCongestion(graph, hints);
173
+ const { layout, routed, pills } = relieveCongestion(graph, hints);
175
174
  const styles = stylesFor(palette);
176
- const pills = placeLabelPills(routed);
177
- const drawn = layout.nodes.flatMap((node) => {
178
- const row = badgeRow(node);
179
- return row === undefined ? [node.box] : [node.box, row.box];
180
- });
175
+ const drawn = occupiedBoxes(layout.nodes);
181
176
  const edgeMarkup = [];
182
177
  const pillMarkup = [];
183
178
  for (const edge of routed) {
@@ -1 +1 @@
1
- {"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/svg/architecture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/svg/architecture.ts"],"names":[],"mappings":"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"}
package/dist/theme.d.ts CHANGED
@@ -1,14 +1,15 @@
1
- import { THEMES, type Theme } from "@coldtea/pr-lens-schema";
1
+ import { THEMES, THEME_PAIR, type Theme } from "@coldtea/pr-lens-schema";
2
2
  /**
3
- * The two halves of a GitHub `<picture>` pair. A comment ships both and the
4
- * client picks; neither half may depend on the page it lands in, because an
5
- * SVG served as an image cannot see it.
3
+ * Every theme a render can target, and the two that make a GitHub
4
+ * `<picture>` pair. A paired comment ships both halves and the client picks;
5
+ * no render may depend on the page it lands in, because an SVG served as an
6
+ * image cannot see it.
6
7
  *
7
- * The contract owns the pair, because the number of themes is one half of the
8
- * arithmetic that bounds a document's view tree. Re-exported here so a caller
9
- * rendering a diagram does not have to reach into the schema for it.
8
+ * The contract owns the pair, because its size is one half of the arithmetic
9
+ * that bounds a document's view tree. Re-exported here so a caller rendering
10
+ * a diagram does not have to reach into the schema for it.
10
11
  */
11
- export { THEMES, type Theme };
12
+ export { THEMES, THEME_PAIR, type Theme };
12
13
  /**
13
14
  * Every colour the renderer can paint, resolved to a literal before it
14
15
  * reaches the document. CSS custom properties would be shorter, but GitHub
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAE1E;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB;mDAC+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA4DF,eAAO,MAAM,UAAU,UAAW,KAAK,KAAG,OASzC,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,UAAU,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEtF;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,KAAK,EAAE,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB;mDAC+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA+GF,eAAO,MAAM,UAAU,UAAW,KAAK,KAAG,OAWzC,CAAC"}
package/dist/theme.js CHANGED
@@ -1,14 +1,15 @@
1
- import { assertNever, THEMES } from "@coldtea/pr-lens-schema";
1
+ import { assertNever, THEMES, THEME_PAIR } from "@coldtea/pr-lens-schema";
2
2
  /**
3
- * The two halves of a GitHub `<picture>` pair. A comment ships both and the
4
- * client picks; neither half may depend on the page it lands in, because an
5
- * SVG served as an image cannot see it.
3
+ * Every theme a render can target, and the two that make a GitHub
4
+ * `<picture>` pair. A paired comment ships both halves and the client picks;
5
+ * no render may depend on the page it lands in, because an SVG served as an
6
+ * image cannot see it.
6
7
  *
7
- * The contract owns the pair, because the number of themes is one half of the
8
- * arithmetic that bounds a document's view tree. Re-exported here so a caller
9
- * rendering a diagram does not have to reach into the schema for it.
8
+ * The contract owns the pair, because its size is one half of the arithmetic
9
+ * that bounds a document's view tree. Re-exported here so a caller rendering
10
+ * a diagram does not have to reach into the schema for it.
10
11
  */
11
- export { THEMES };
12
+ export { THEMES, THEME_PAIR };
12
13
  const LIGHT = {
13
14
  background: "#f4f5f7",
14
15
  dot: "rgba(140,149,159,.5)",
@@ -65,12 +66,64 @@ const DARK = {
65
66
  neutralFill: "rgba(110,118,129,.18)",
66
67
  shadow: "rgba(0,0,0,.28)",
67
68
  };
69
+ /**
70
+ * The one render for a surface that shows a single image and cannot swap on
71
+ * the reader's theme — GitLab and Bitbucket both.
72
+ *
73
+ * Handing such a surface the light asset is what it used to do, and it put a
74
+ * glaring white rectangle in front of every dark-mode reader, with strokes
75
+ * tuned for a light ground washing out against a dark page.
76
+ *
77
+ * A transparent render does not solve it either, and the arithmetic says why:
78
+ * for any flat colour, contrast against white is `1.05 / (L + 0.05)` and
79
+ * against black is `(L + 0.05) / 0.05`, which are equal only at L ≈ 0.179,
80
+ * where both are 4.58:1. That is the ceiling for text meant to sit directly
81
+ * on either page — barely over AA in the best case, and under it against a
82
+ * near-black like #0d1117.
83
+ *
84
+ * So this render is opaque and self-contained: it brings its own ground, and
85
+ * every contrast ratio inside it is fixed regardless of where it lands. The
86
+ * ground is dimmed rather than light — on a dark page it sits naturally, and
87
+ * on a light page it reads as a deliberately dark figure, the way a
88
+ * screenshot or a code block does. Its border is visible against both, so it
89
+ * never bleeds into the page.
90
+ */
91
+ const NEUTRAL = {
92
+ background: "#22272e",
93
+ dot: "rgba(144,157,171,.2)",
94
+ lane: "rgba(144,157,171,.06)",
95
+ card: "#2d333b",
96
+ cardBorder: "#444c56",
97
+ foreground: "#cdd9e5",
98
+ muted: "#909dab",
99
+ edge: "#768390",
100
+ chip: "rgba(144,157,171,.16)",
101
+ pill: "#22272e",
102
+ pillBorder: "#373e47",
103
+ lifeline: "#444c56",
104
+ added: "#57ab5a",
105
+ addedText: "#6bc46d",
106
+ addedFill: "rgba(70,149,74,.18)",
107
+ addedBorder: "rgba(87,171,90,.45)",
108
+ modified: "#c69026",
109
+ modifiedText: "#daaa3f",
110
+ modifiedFill: "rgba(174,124,20,.18)",
111
+ modifiedBorder: "rgba(198,144,38,.45)",
112
+ removed: "#e5534b",
113
+ removedText: "#ff938a",
114
+ removedFill: "rgba(229,83,75,.14)",
115
+ removedBorder: "rgba(229,83,75,.45)",
116
+ neutralFill: "rgba(144,157,171,.16)",
117
+ shadow: "rgba(0,0,0,.3)",
118
+ };
68
119
  export const paletteFor = (theme) => {
69
120
  switch (theme) {
70
121
  case "light":
71
122
  return LIGHT;
72
123
  case "dark":
73
124
  return DARK;
125
+ case "neutral":
126
+ return NEUTRAL;
74
127
  default:
75
128
  return assertNever(theme, "Unhandled theme");
76
129
  }
package/dist/theme.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAc,MAAM,yBAAyB,CAAC;AAE1E;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAc,CAAC;AAuC9B,MAAM,KAAK,GAAY;IACrB,UAAU,EAAE,SAAS;IACrB,GAAG,EAAE,sBAAsB;IAC3B,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,qBAAqB;IAClC,QAAQ,EAAE,SAAS;IACnB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,qBAAqB;IACrC,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,aAAa,EAAE,oBAAoB;IACnC,WAAW,EAAE,SAAS;IACtB,MAAM,EAAE,oBAAoB;CAC7B,CAAC;AAEF,MAAM,IAAI,GAAY;IACpB,UAAU,EAAE,SAAS;IACrB,GAAG,EAAE,uBAAuB;IAC5B,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,qBAAqB;IAChC,WAAW,EAAE,oBAAoB;IACjC,QAAQ,EAAE,SAAS;IACnB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,qBAAqB;IACnC,cAAc,EAAE,qBAAqB;IACrC,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,qBAAqB;IAClC,aAAa,EAAE,oBAAoB;IACnC,WAAW,EAAE,uBAAuB;IACpC,MAAM,EAAE,iBAAiB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAY,EAAW,EAAE;IAClD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd;YACE,OAAO,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACjD,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.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.6";
8
+ export declare const RENDERER_VERSION = "0.3.1";
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.6";
8
+ export const RENDERER_VERSION = "0.3.1";
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.6",
3
+ "version": "0.3.1",
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",
@@ -40,7 +40,7 @@
40
40
  "node": ">=20.11"
41
41
  },
42
42
  "dependencies": {
43
- "@coldtea/pr-lens-schema": "0.4.0"
43
+ "@coldtea/pr-lens-schema": "0.6.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/node": "^20.19.0",
package/src/bounds.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Box } from "./geometry.js";
1
+ import type { Box, Point } from "./geometry.js";
2
2
 
3
3
  /** The smallest box containing both of them. */
4
4
  export const covering = (a: Box, b: Box): Box => {
@@ -17,6 +17,34 @@ export const union = (boxes: readonly Box[]): Box | undefined =>
17
17
  undefined,
18
18
  );
19
19
 
20
+ /** Zero-sized at the origin when there are no points. */
21
+ export const boundsOf = (points: readonly Point[]): Box => {
22
+ const xs = points.map(({ x }) => x);
23
+ const ys = points.map(({ y }) => y);
24
+ const left = xs.length === 0 ? 0 : Math.min(...xs);
25
+ const top = ys.length === 0 ? 0 : Math.min(...ys);
26
+ return {
27
+ x: left,
28
+ y: top,
29
+ width: xs.length === 0 ? 0 : Math.max(...xs) - left,
30
+ height: ys.length === 0 ? 0 : Math.max(...ys) - top,
31
+ };
32
+ };
33
+
34
+ export const inflate = (box: Box, by: number): Box => ({
35
+ x: box.x - by,
36
+ y: box.y - by,
37
+ width: box.width + by * 2,
38
+ height: box.height + by * 2,
39
+ });
40
+
41
+ /** Zero when the boxes touch or overlap. */
42
+ export const gapBetween = (a: Box, b: Box): number =>
43
+ Math.hypot(
44
+ Math.max(b.x - (a.x + a.width), a.x - (b.x + b.width), 0),
45
+ Math.max(b.y - (a.y + a.height), a.y - (b.y + b.height), 0),
46
+ );
47
+
20
48
  export type Canvas = { width: number; height: number; shiftX: number; shiftY: number };
21
49
 
22
50
  /**
package/src/design.ts CHANGED
@@ -76,6 +76,11 @@ export const PILL_PADDING_X = 8;
76
76
  export const PILL_TEXT_SIZE = 9.5;
77
77
  /** Two label pills never sit closer than this, in either direction. */
78
78
  export const PILL_CLEARANCE = 2;
79
+ /**
80
+ * A pill never comes closer than this to a card or its badges: any nearer and
81
+ * the label reads as part of the card instead of the line it rides.
82
+ */
83
+ export const PILL_CARD_CLEARANCE = 6;
79
84
 
80
85
  /**
81
86
  * Routes travel in the gaps of the grid: vertical corridors beside lanes and
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ export {
4
4
  render,
5
5
  renderAll,
6
6
  type RenderAllOptions,
7
+ type RenderThemes,
7
8
  type RenderAllResult,
8
9
  type RenderedAsset,
9
10
  type RenderedSvg,
@@ -16,7 +17,7 @@ export { PrLensRenderError, type RenderErrorCode } from "./errors.js";
16
17
 
17
18
  export type { Box } from "./geometry.js";
18
19
 
19
- export { paletteFor, THEMES, type Palette, type Theme } from "./theme.js";
20
+ export { paletteFor, THEMES, THEME_PAIR, type Palette, type Theme } from "./theme.js";
20
21
 
21
22
  export {
22
23
  buildManifest,
@@ -122,6 +122,13 @@ export const badgeRow = (placed: PlacedNode): { badges: string[]; box: Box } | u
122
122
  };
123
123
  };
124
124
 
125
+ /** Every card and badge strip: what a label pill must keep clear of. */
126
+ export const occupiedBoxes = (nodes: readonly PlacedNode[]): Box[] =>
127
+ nodes.flatMap((node) => {
128
+ const row = badgeRow(node);
129
+ return row === undefined ? [node.box] : [node.box, row.box];
130
+ });
131
+
125
132
  /**
126
133
  * The gaps of the grid, for the router: the vertical corridors beside each
127
134
  * lane's cards and the horizontal extents of every row. Corridor `i` runs to
@@ -7,14 +7,24 @@ import {
7
7
  TRACK_CLEARANCE,
8
8
  TRACK_PITCH_MIN,
9
9
  } from "../design.js";
10
+ import { union } from "../bounds.js";
11
+ import type { Box } from "../geometry.js";
10
12
  import type { ScopedGraph } from "../scope.js";
11
13
  import {
12
14
  layoutArchitecture,
15
+ occupiedBoxes,
13
16
  type ArchitectureLayout,
14
17
  type GapExpansions,
15
18
  type LayoutGrid,
16
19
  } from "./architecture.js";
17
- import { channelTraffic, routeEdges, type ChannelTraffic, type RoutedEdge } from "./edges.js";
20
+ import {
21
+ chooseRetiredRoutes,
22
+ routeAndCount,
23
+ routeEdges,
24
+ type ChannelTraffic,
25
+ type RoutedEdge,
26
+ } from "./edges.js";
27
+ import { placeLabelPills, type LabelPlacement } from "./labels.js";
18
28
 
19
29
  /**
20
30
  * Layout and routing with the pitch floor held: any gap whose traffic would
@@ -24,25 +34,68 @@ import { channelTraffic, routeEdges, type ChannelTraffic, type RoutedEdge } from
24
34
  * moves the lanes or rows beside a saturated gap by one pitch step — a small
25
35
  * change staying a small move — and an uncrowded document is laid out
26
36
  * exactly as if this pass did not exist.
37
+ *
38
+ * A corridor is also widened when a label has nowhere on or beside its line
39
+ * to sit — a straight line across a corridor has only its width for a pill.
27
40
  */
28
41
  export const relieveCongestion = (
29
42
  graph: ScopedGraph,
30
43
  hints: LayoutHints | undefined,
31
- ): { layout: ArchitectureLayout; routed: RoutedEdge[] } => {
44
+ ): { layout: ArchitectureLayout; routed: RoutedEdge[]; pills: Map<string, Box> } => {
32
45
  let expansions: GapExpansions = { corridors: new Map(), bands: new Map() };
46
+ let labelRoom = new Map<number, number>();
33
47
  let layout = layoutArchitecture(graph, hints, expansions);
48
+ const retired = chooseRetiredRoutes(graph.edges, layout);
49
+ let placed: { routed: RoutedEdge[]; labels: LabelPlacement } | undefined;
34
50
 
35
51
  // Widening never changes which gaps the routes choose — plans are made of
36
- // lane and row indices, and cards keep their in-lane positions — so the
37
- // second round sees the same traffic and settles. The bound is a backstop.
38
- for (let round = 0; round < 3; round += 1) {
39
- const needed = expansionsFor(channelTraffic(graph.edges, layout), layout.grid);
40
- if (sameExpansions(needed, expansions)) break;
41
- expansions = needed;
52
+ // lane and row indices — so traffic settles after one widening. Label room
53
+ // only grows, so that settles too. The bound is a backstop.
54
+ for (let round = 0; round < 6; round += 1) {
55
+ const { routed, traffic } = routeAndCount(graph.edges, layout, retired);
56
+ const needed = expansionsFor(traffic, layout.grid, labelRoom);
57
+ if (!sameExpansions(needed, expansions)) {
58
+ expansions = needed;
59
+ layout = layoutArchitecture(graph, hints, expansions);
60
+ placed = undefined;
61
+ continue;
62
+ }
63
+
64
+ placed = { routed, labels: labelsOn(layout, routed) };
65
+ const grown = grownRoom(labelRoom, placed.labels.cramped, traffic);
66
+ if (sameEntries(grown, labelRoom)) break;
67
+ labelRoom = grown;
68
+ expansions = expansionsFor(traffic, layout.grid, labelRoom);
42
69
  layout = layoutArchitecture(graph, hints, expansions);
70
+ placed = undefined;
71
+ }
72
+
73
+ if (placed === undefined) {
74
+ const routed = routeEdges(graph.edges, layout, retired);
75
+ placed = { routed, labels: labelsOn(layout, routed) };
43
76
  }
77
+ return { layout, routed: placed.routed, pills: placed.labels.boxes };
78
+ };
79
+
80
+ const labelsOn = (layout: ArchitectureLayout, routed: readonly RoutedEdge[]): LabelPlacement =>
81
+ placeLabelPills(routed, occupiedBoxes(layout.nodes), union(layout.lanes.map(({ box }) => box)));
44
82
 
45
- return { layout, routed: routeEdges(graph.edges, layout) };
83
+ /** Air either side of a corridor-filling pill, so the arrowheads still show. */
84
+ const LABEL_CORRIDOR_AIR = 12;
85
+
86
+ /** Only ever grows, which is what lets the loop settle. */
87
+ const grownRoom = (
88
+ room: ReadonlyMap<number, number>,
89
+ cramped: ReadonlyMap<string, number>,
90
+ traffic: ChannelTraffic,
91
+ ): Map<number, number> => {
92
+ const grown = new Map(room);
93
+ for (const [id, pillWidth] of cramped) {
94
+ const width = pillWidth + LABEL_CORRIDOR_AIR * 2;
95
+ for (const index of traffic.corridorsByEdge.get(id) ?? [])
96
+ grown.set(index, Math.max(grown.get(index) ?? 0, width));
97
+ }
98
+ return grown;
46
99
  };
47
100
 
48
101
  /** Room for this many tracks at the floor pitch, plus clearance to the cards. */
@@ -51,10 +104,16 @@ const widthNeeded = (traffic: number): number =>
51
104
 
52
105
  const CORRIDOR_WIDTH = LANE_PADDING_X * 2 + LANE_GAP;
53
106
 
54
- const expansionsFor = (traffic: ChannelTraffic, grid: LayoutGrid): GapExpansions => {
107
+ const expansionsFor = (
108
+ traffic: ChannelTraffic,
109
+ grid: LayoutGrid,
110
+ labelRoom: ReadonlyMap<number, number>,
111
+ ): GapExpansions => {
55
112
  const corridors = new Map<number, number>();
56
- for (const [index, count] of traffic.corridors) {
57
- const extra = widthNeeded(count) - CORRIDOR_WIDTH;
113
+ for (const index of new Set([...traffic.corridors.keys(), ...labelRoom.keys()])) {
114
+ const count = traffic.corridors.get(index) ?? 0;
115
+ const width = Math.max(count > 0 ? widthNeeded(count) : 0, labelRoom.get(index) ?? 0);
116
+ const extra = width - CORRIDOR_WIDTH;
58
117
  if (extra > 0) corridors.set(index, extra);
59
118
  }
60
119