@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.
- package/README.md +2 -1
- package/dist/bounds.d.ts +6 -1
- package/dist/bounds.d.ts.map +1 -1
- package/dist/bounds.js +21 -0
- package/dist/bounds.js.map +1 -1
- package/dist/design.d.ts +5 -0
- package/dist/design.d.ts.map +1 -1
- package/dist/design.js +5 -0
- package/dist/design.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/layout/architecture.d.ts +2 -0
- package/dist/layout/architecture.d.ts.map +1 -1
- package/dist/layout/architecture.js +5 -0
- package/dist/layout/architecture.js.map +1 -1
- package/dist/layout/congestion.d.ts +5 -0
- package/dist/layout/congestion.d.ts.map +1 -1
- package/dist/layout/congestion.js +50 -12
- package/dist/layout/congestion.js.map +1 -1
- package/dist/layout/edges.d.ts +18 -3
- package/dist/layout/edges.d.ts.map +1 -1
- package/dist/layout/edges.js +93 -23
- package/dist/layout/edges.js.map +1 -1
- package/dist/layout/labels.d.ts +15 -4
- package/dist/layout/labels.d.ts.map +1 -1
- package/dist/layout/labels.js +404 -119
- package/dist/layout/labels.js.map +1 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +3 -1
- package/dist/manifest.js.map +1 -1
- package/dist/render.d.ts +12 -2
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +2 -2
- package/dist/render.js.map +1 -1
- package/dist/svg/architecture.d.ts.map +1 -1
- package/dist/svg/architecture.js +3 -8
- package/dist/svg/architecture.js.map +1 -1
- package/dist/theme.d.ts +9 -8
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +61 -8
- package/dist/theme.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/src/bounds.ts +29 -1
- package/src/design.ts +5 -0
- package/src/index.ts +2 -1
- package/src/layout/architecture.ts +7 -0
- package/src/layout/congestion.ts +71 -12
- package/src/layout/edges.ts +126 -21
- package/src/layout/labels.ts +495 -136
- package/src/manifest.ts +3 -2
- package/src/render.ts +19 -4
- package/src/svg/architecture.ts +3 -7
- package/src/theme.ts +62 -8
- 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
|
-
|
|
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
|
/**
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
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
|
-
/**
|
|
35
|
-
themes?:
|
|
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;
|
package/dist/render.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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 ??
|
|
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))
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,
|
|
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;
|
|
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"}
|
package/dist/svg/architecture.js
CHANGED
|
@@ -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
|
|
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
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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
|
package/dist/theme.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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;
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coldtea/pr-lens-renderer",
|
|
3
|
-
"version": "0.
|
|
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.
|
|
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
|
package/src/layout/congestion.ts
CHANGED
|
@@ -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 {
|
|
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
|
|
37
|
-
//
|
|
38
|
-
for (let round = 0; round <
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
expansions
|
|
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
|
-
|
|
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 = (
|
|
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
|
|
57
|
-
const
|
|
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
|
|