@coldtea/pr-lens-renderer 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +15 -0
  2. package/dist/glob.d.ts.map +1 -1
  3. package/dist/glob.js +72 -9
  4. package/dist/glob.js.map +1 -1
  5. package/dist/index.d.ts +7 -3
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/manifest.d.ts +11 -3
  10. package/dist/manifest.d.ts.map +1 -1
  11. package/dist/manifest.js +10 -1
  12. package/dist/manifest.js.map +1 -1
  13. package/dist/render-all.d.ts +35 -0
  14. package/dist/render-all.d.ts.map +1 -0
  15. package/dist/render-all.js +110 -0
  16. package/dist/render-all.js.map +1 -0
  17. package/dist/render.d.ts +4 -31
  18. package/dist/render.d.ts.map +1 -1
  19. package/dist/render.js +5 -75
  20. package/dist/render.js.map +1 -1
  21. package/dist/svg/document.d.ts +8 -0
  22. package/dist/svg/document.d.ts.map +1 -1
  23. package/dist/svg/document.js +3 -2
  24. package/dist/svg/document.js.map +1 -1
  25. package/dist/theme.d.ts +2 -0
  26. package/dist/theme.d.ts.map +1 -1
  27. package/dist/theme.js +1 -0
  28. package/dist/theme.js.map +1 -1
  29. package/dist/version.d.ts +1 -1
  30. package/dist/version.js +1 -1
  31. package/dist/walkthrough/camera.d.ts +43 -0
  32. package/dist/walkthrough/camera.d.ts.map +1 -0
  33. package/dist/walkthrough/camera.js +101 -0
  34. package/dist/walkthrough/camera.js.map +1 -0
  35. package/dist/walkthrough/caption.d.ts +5 -0
  36. package/dist/walkthrough/caption.d.ts.map +1 -0
  37. package/dist/walkthrough/caption.js +36 -0
  38. package/dist/walkthrough/caption.js.map +1 -0
  39. package/dist/walkthrough/embed.d.ts +31 -0
  40. package/dist/walkthrough/embed.d.ts.map +1 -0
  41. package/dist/walkthrough/embed.js +297 -0
  42. package/dist/walkthrough/embed.js.map +1 -0
  43. package/dist/walkthrough/index.d.ts +8 -0
  44. package/dist/walkthrough/index.d.ts.map +1 -0
  45. package/dist/walkthrough/index.js +6 -0
  46. package/dist/walkthrough/index.js.map +1 -0
  47. package/dist/walkthrough/layout.d.ts +28 -0
  48. package/dist/walkthrough/layout.d.ts.map +1 -0
  49. package/dist/walkthrough/layout.js +31 -0
  50. package/dist/walkthrough/layout.js.map +1 -0
  51. package/dist/walkthrough/nest.d.ts +4 -0
  52. package/dist/walkthrough/nest.d.ts.map +1 -0
  53. package/dist/walkthrough/nest.js +4 -0
  54. package/dist/walkthrough/nest.js.map +1 -0
  55. package/dist/walkthrough/resolve.d.ts +45 -0
  56. package/dist/walkthrough/resolve.d.ts.map +1 -0
  57. package/dist/walkthrough/resolve.js +189 -0
  58. package/dist/walkthrough/resolve.js.map +1 -0
  59. package/dist/walkthrough/tile-ids.d.ts +8 -0
  60. package/dist/walkthrough/tile-ids.d.ts.map +1 -0
  61. package/dist/walkthrough/tile-ids.js +16 -0
  62. package/dist/walkthrough/tile-ids.js.map +1 -0
  63. package/dist/walkthrough/tiles.d.ts +15 -0
  64. package/dist/walkthrough/tiles.d.ts.map +1 -0
  65. package/dist/walkthrough/tiles.js +80 -0
  66. package/dist/walkthrough/tiles.js.map +1 -0
  67. package/package.json +7 -3
  68. package/src/glob.ts +76 -11
  69. package/src/index.ts +23 -6
  70. package/src/manifest.ts +20 -3
  71. package/src/render-all.ts +195 -0
  72. package/src/render.ts +8 -116
  73. package/src/svg/document.ts +3 -2
  74. package/src/theme.ts +4 -0
  75. package/src/version.ts +1 -1
  76. package/src/walkthrough/camera.ts +142 -0
  77. package/src/walkthrough/caption.ts +35 -0
  78. package/src/walkthrough/embed.ts +436 -0
  79. package/src/walkthrough/index.ts +42 -0
  80. package/src/walkthrough/layout.ts +46 -0
  81. package/src/walkthrough/nest.ts +6 -0
  82. package/src/walkthrough/resolve.ts +268 -0
  83. package/src/walkthrough/tile-ids.ts +17 -0
  84. package/src/walkthrough/tiles.ts +106 -0
@@ -9,6 +9,14 @@ import type { Palette } from "../theme.js";
9
9
  export type Tone = "added" | "modified" | "removed" | "neutral";
10
10
  export declare const toneFor: (delta: Delta) => Tone;
11
11
  export declare const toneColour: (palette: Palette, tone: Tone) => string;
12
+ /**
13
+ * Two arrowhead forms per tone, the classic sequence-diagram pair: a filled
14
+ * head for a message the sender waits on, an open line-form head for one it
15
+ * fires and forgets. The open head anchors at its tip so the line runs all
16
+ * the way into the point, where a filled head covers its own line end.
17
+ */
18
+ /** Exported so a document nesting several pictures can define the arrowheads once. */
19
+ export declare const markerDefs: (palette: Palette) => string;
12
20
  export declare const markerFor: (tone: Tone) => string;
13
21
  export declare const openMarkerFor: (tone: Tone) => string;
14
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/svg/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAIrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C;;;;GAIG;AACH,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhE,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,IAatC,CAAC;AAEF,eAAO,MAAM,UAAU,YAAa,OAAO,QAAQ,IAAI,KAAG,MAazD,CAAC;AAgDF,eAAO,MAAM,SAAS,SAAU,IAAI,KAAG,MAA4B,CAAC;AAEpE,eAAO,MAAM,aAAa,SAAU,IAAI,KAAG,MAA6B,CAAC;AAIzE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,UAAW;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,KAAG,MAyBH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,WAAY,MAAM,QAAQ,MAAM,KAAG,MAG2C,CAAC"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/svg/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAIrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C;;;;GAIG;AACH,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhE,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,IAatC,CAAC;AAEF,eAAO,MAAM,UAAU,YAAa,OAAO,QAAQ,IAAI,KAAG,MAazD,CAAC;AAIF;;;;;GAKG;AACH,sFAAsF;AACtF,eAAO,MAAM,UAAU,YAAa,OAAO,KAAG,MAoClC,CAAC;AAEb,eAAO,MAAM,SAAS,SAAU,IAAI,KAAG,MAA4B,CAAC;AAEpE,eAAO,MAAM,aAAa,SAAU,IAAI,KAAG,MAA6B,CAAC;AAIzE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,UAAW;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,KAAG,MAyBH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,WAAY,MAAM,QAAQ,MAAM,KAAG,MAG2C,CAAC"}
@@ -37,7 +37,8 @@ const TONES = ["added", "modified", "removed", "neutral"];
37
37
  * fires and forgets. The open head anchors at its tip so the line runs all
38
38
  * the way into the point, where a filled head covers its own line end.
39
39
  */
40
- const markers = (palette) => TONES.map((tone) => wrap("marker", {
40
+ /** Exported so a document nesting several pictures can define the arrowheads once. */
41
+ export const markerDefs = (palette) => TONES.map((tone) => wrap("marker", {
41
42
  id: `mk-${tone}`,
42
43
  viewBox: "0 0 10 10",
43
44
  refX: 8,
@@ -75,7 +76,7 @@ const DOT_PITCH = 18;
75
76
  */
76
77
  export const svgDocument = (input) => {
77
78
  const { width, height, palette, title, description, body } = input;
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));
79
+ 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 })) + markerDefs(palette));
79
80
  return lines([
80
81
  `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${coord(width)} ${coord(height)}" ` +
81
82
  `width="${coord(width)}" height="${coord(height)}" role="img" aria-label="${escapeXml(title)}" ` +
@@ -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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"}
package/dist/theme.d.ts CHANGED
@@ -10,6 +10,8 @@ import { THEMES, THEME_PAIR, type Theme } from "@coldtea/pr-lens-schema";
10
10
  * a diagram does not have to reach into the schema for it.
11
11
  */
12
12
  export { THEMES, THEME_PAIR, type Theme };
13
+ export type PairTheme = (typeof THEME_PAIR)[number];
14
+ export declare const isPairTheme: (theme: Theme) => theme is PairTheme;
13
15
  /**
14
16
  * Every colour the renderer can paint, resolved to a literal before it
15
17
  * 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,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"}
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,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,eAAO,MAAM,WAAW,UAAW,KAAK,KAAG,KAAK,IAAI,SAAsD,CAAC;AAE3G;;;;;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
@@ -10,6 +10,7 @@ import { assertNever, THEMES, THEME_PAIR } from "@coldtea/pr-lens-schema";
10
10
  * a diagram does not have to reach into the schema for it.
11
11
  */
12
12
  export { THEMES, THEME_PAIR };
13
+ export const isPairTheme = (theme) => THEME_PAIR.some((half) => half === theme);
13
14
  const LIGHT = {
14
15
  background: "#f4f5f7",
15
16
  dot: "rgba(140,149,159,.5)",
package/dist/theme.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
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.4.1";
8
+ export declare const RENDERER_VERSION = "0.5.0";
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.4.1";
8
+ export const RENDERER_VERSION = "0.5.0";
9
9
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,43 @@
1
+ import type { Box } from "../geometry.js";
2
+ /** The canvas and the embed both frame steps here, so a step lands the same way in both. */
3
+ export type FramingPolicy = {
4
+ kind: "strip";
5
+ } | {
6
+ kind: "diagram";
7
+ } | {
8
+ kind: "selection";
9
+ } | {
10
+ kind: "component";
11
+ };
12
+ export type Flight = {
13
+ kind: "cut";
14
+ } | {
15
+ kind: "smooth";
16
+ durationMs: number;
17
+ };
18
+ /** The transform a stage applies to the strip. Translate first, then scale. */
19
+ export type Viewport = {
20
+ x: number;
21
+ y: number;
22
+ scale: number;
23
+ };
24
+ /** The part of the window the pictures get. */
25
+ export type Stage = {
26
+ left: number;
27
+ top: number;
28
+ width: number;
29
+ height: number;
30
+ };
31
+ /** The transform that shows `rect` whole and centred in the stage. */
32
+ export declare function frame(policy: FramingPolicy, rect: Box, stage: Stage): Viewport;
33
+ export declare function flightFor(distance: number, reducedMotion: boolean): Flight;
34
+ export declare const easeInOut: (t: number) => number;
35
+ export declare const lerpRect: (from: Box, to: Box, t: number) => Box;
36
+ export type FlightPath = {
37
+ at: (t: number) => Viewport;
38
+ /** The path's length in the interpolation's units. It sets the duration. */
39
+ distance: number;
40
+ };
41
+ /** The van Wijk and Nuij path, as d3-interpolate spells it out: out far enough to see both ends, then back in. */
42
+ export declare function interpolateFlight(from: Viewport, to: Viewport, stage: Stage): FlightPath;
43
+ //# sourceMappingURL=camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../src/walkthrough/camera.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAG1C,4FAA4F;AAC5F,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAEpH,MAAM,MAAM,MAAM,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E,+EAA+E;AAC/E,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D,+CAA+C;AAC/C,MAAM,MAAM,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAqBjF,sEAAsE;AACtE,wBAAgB,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,CAgB9E;AAOD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAG1E;AAED,eAAO,MAAM,SAAS,MAAO,MAAM,KAAG,MAAqE,CAAC;AAE5G,eAAO,MAAM,QAAQ,SAAU,GAAG,MAAM,GAAG,KAAK,MAAM,KAAG,GAKvD,CAAC;AAsBH,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,QAAQ,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAWF,kHAAkH;AAClH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,CAiCxF"}
@@ -0,0 +1,101 @@
1
+ import { assertNever } from "@coldtea/pr-lens-schema";
2
+ import { MAX_SCALE, MIN_SCALE } from "./layout.js";
3
+ const framing = (policy) => {
4
+ switch (policy.kind) {
5
+ // A small render is never enlarged to fill the window.
6
+ case "strip":
7
+ case "diagram":
8
+ return { maxScale: 1, padding: 80 };
9
+ // A selection fills the stage. It is already padded, so it gets less air.
10
+ case "selection":
11
+ return { maxScale: 2, padding: 56 };
12
+ // One component with its neighbours still in view.
13
+ case "component":
14
+ return { maxScale: 1, padding: 220 };
15
+ default:
16
+ return assertNever(policy, "Unhandled framing policy");
17
+ }
18
+ };
19
+ /** The transform that shows `rect` whole and centred in the stage. */
20
+ export function frame(policy, rect, stage) {
21
+ const { maxScale, padding } = framing(policy);
22
+ // On a stage smaller than the padding, the padding shrinks instead of the picture.
23
+ const air = Math.min(padding, stage.width / 6, stage.height / 6);
24
+ const fitted = Math.min((stage.width - air * 2) / rect.width, (stage.height - air * 2) / rect.height, maxScale);
25
+ const scale = Math.min(Math.max(fitted, MIN_SCALE), MAX_SCALE);
26
+ return {
27
+ x: stage.left + (stage.width - rect.width * scale) / 2 - rect.x * scale,
28
+ y: stage.top + (stage.height - rect.height * scale) / 2 - rect.y * scale,
29
+ scale,
30
+ };
31
+ }
32
+ /** Short enough not to feel like a wait, long enough that a jump across the strip reads as travel. */
33
+ const MIN_FLIGHT_MS = 560;
34
+ const MAX_FLIGHT_MS = 1500;
35
+ const MS_PER_UNIT = 420;
36
+ export function flightFor(distance, reducedMotion) {
37
+ if (reducedMotion)
38
+ return { kind: "cut" };
39
+ return { kind: "smooth", durationMs: Math.min(Math.max(distance * MS_PER_UNIT, MIN_FLIGHT_MS), MAX_FLIGHT_MS) };
40
+ }
41
+ export const easeInOut = (t) => (t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2);
42
+ export const lerpRect = (from, to, t) => ({
43
+ x: from.x + (to.x - from.x) * t,
44
+ y: from.y + (to.y - from.y) * t,
45
+ width: from.width + (to.width - from.width) * t,
46
+ height: from.height + (to.height - from.height) * t,
47
+ });
48
+ const centre = (stage) => ({ x: stage.left + stage.width / 2, y: stage.top + stage.height / 2 });
49
+ const toView = (viewport, stage) => {
50
+ const middle = centre(stage);
51
+ return [
52
+ (middle.x - viewport.x) / viewport.scale,
53
+ (middle.y - viewport.y) / viewport.scale,
54
+ stage.width / viewport.scale,
55
+ ];
56
+ };
57
+ const fromView = (view, stage) => {
58
+ const middle = centre(stage);
59
+ const scale = stage.width / view[2];
60
+ return { x: middle.x - view[0] * scale, y: middle.y - view[1] * scale, scale };
61
+ };
62
+ const cosh = (x) => (Math.exp(x) + Math.exp(-x)) / 2;
63
+ const sinh = (x) => (Math.exp(x) - Math.exp(-x)) / 2;
64
+ const tanh = (x) => {
65
+ const e = Math.exp(2 * x);
66
+ return (e - 1) / (e + 1);
67
+ };
68
+ const RHO = Math.SQRT2;
69
+ /** The van Wijk and Nuij path, as d3-interpolate spells it out: out far enough to see both ends, then back in. */
70
+ export function interpolateFlight(from, to, stage) {
71
+ const [ux0, uy0, w0] = toView(from, stage);
72
+ const [ux1, uy1, w1] = toView(to, stage);
73
+ const dx = ux1 - ux0;
74
+ const dy = uy1 - uy0;
75
+ const d2 = dx * dx + dy * dy;
76
+ const rho2 = RHO * RHO;
77
+ const rho4 = rho2 * rho2;
78
+ if (d2 < 1e-12) {
79
+ const distance = Math.abs(Math.log(w1 / w0) / RHO);
80
+ return {
81
+ distance,
82
+ at: (t) => fromView([ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(RHO * t * (Math.log(w1 / w0) / RHO))], stage),
83
+ };
84
+ }
85
+ const d1 = Math.sqrt(d2);
86
+ const b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1);
87
+ const b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1);
88
+ const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);
89
+ const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
90
+ const S = (r1 - r0) / RHO;
91
+ const c0 = cosh(r0);
92
+ return {
93
+ distance: Math.abs(S),
94
+ at: (t) => {
95
+ const s = t * S;
96
+ const u = (w0 / (rho2 * d1)) * (c0 * tanh(RHO * s + r0) - sinh(r0));
97
+ return fromView([ux0 + u * dx, uy0 + u * dy, (w0 * c0) / cosh(RHO * s + r0)], stage);
98
+ },
99
+ };
100
+ }
101
+ //# sourceMappingURL=camera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../src/walkthrough/camera.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type Face } from "../text.js";
2
+ export declare const words: (text: string) => string[];
3
+ /** The fewest lines that fit, evened out by narrowing the column as far as it goes without adding a line. */
4
+ export declare const balancedLines: (text: string, face: Face, size: number, maxWidth: number) => string[];
5
+ //# sourceMappingURL=caption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caption.d.ts","sourceRoot":"","sources":["../../src/walkthrough/caption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,KAAK,SAAU,MAAM,KAAG,MAAM,EAAyD,CAAC;AAkBrG,6GAA6G;AAC7G,eAAO,MAAM,aAAa,SAAU,MAAM,QAAQ,IAAI,QAAQ,MAAM,YAAY,MAAM,KAAG,MAAM,EAa9F,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { measure } from "../text.js";
2
+ export const words = (text) => text.split(/\s+/).filter((word) => word.length > 0);
3
+ /** Greedy wrapping, which is also the fewest lines any wrapping needs. */
4
+ const wrapAt = (parts, face, size, width) => {
5
+ const lines = [];
6
+ let line = "";
7
+ for (const word of parts) {
8
+ const joined = line === "" ? word : `${line} ${word}`;
9
+ if (line !== "" && measure(joined, face, size) > width) {
10
+ lines.push(line);
11
+ line = word;
12
+ }
13
+ else {
14
+ line = joined;
15
+ }
16
+ }
17
+ return line === "" ? lines : [...lines, line];
18
+ };
19
+ /** The fewest lines that fit, evened out by narrowing the column as far as it goes without adding a line. */
20
+ export const balancedLines = (text, face, size, maxWidth) => {
21
+ const parts = words(text);
22
+ const widest = wrapAt(parts, face, size, maxWidth);
23
+ if (widest.length < 2)
24
+ return widest;
25
+ let low = 1;
26
+ let high = maxWidth;
27
+ while (low < high) {
28
+ const middle = Math.floor((low + high) / 2);
29
+ if (wrapAt(parts, face, size, middle).length === widest.length)
30
+ high = middle;
31
+ else
32
+ low = middle + 1;
33
+ }
34
+ return wrapAt(parts, face, size, low);
35
+ };
36
+ //# sourceMappingURL=caption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caption.js","sourceRoot":"","sources":["../../src/walkthrough/caption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAa,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAErG,0EAA0E;AAC1E,MAAM,MAAM,GAAG,CAAC,KAAwB,EAAE,IAAU,EAAE,IAAY,EAAE,KAAa,EAAY,EAAE;IAC7F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;QACtD,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,6GAA6G;AAC7G,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,IAAU,EAAE,IAAY,EAAE,QAAgB,EAAY,EAAE;IAClG,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAErC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,IAAI,GAAG,MAAM,CAAC;;YACzE,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { GraphDoc } from "@coldtea/pr-lens-schema";
2
+ import type { RenderedSvg } from "../render.js";
3
+ import { type PairTheme } from "../theme.js";
4
+ import { type WalkthroughIssue } from "./resolve.js";
5
+ /** The walkthrough as one animated SVG: CSS keyframes fly the canvas's own strip twice, then rest on the last step. */
6
+ export type WalkthroughEmbedOptions = {
7
+ theme: PairTheme;
8
+ /** Tiles the caller already drew in this theme, by tile id. */
9
+ tiles?: ReadonlyMap<string, RenderedSvg>;
10
+ };
11
+ export type WalkthroughEmbed = {
12
+ svg: string;
13
+ width: number;
14
+ height: number;
15
+ theme: PairTheme;
16
+ steps: number;
17
+ };
18
+ export type WalkthroughEmbedResult = {
19
+ type: "absent";
20
+ } | {
21
+ type: "unresolvable";
22
+ issues: WalkthroughIssue[];
23
+ } | {
24
+ type: "rendered";
25
+ embed: WalkthroughEmbed;
26
+ };
27
+ export declare const EMBED_WIDTH = 870;
28
+ /** The embed's accessible name, and the alt text of any image showing it. */
29
+ export declare const walkthroughLabel: (title: string, steps: number) => string;
30
+ export declare const renderWalkthroughEmbed: (doc: GraphDoc, options: WalkthroughEmbedOptions) => WalkthroughEmbedResult;
31
+ //# sourceMappingURL=embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/walkthrough/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAczD,OAAO,EAA6D,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhH,uHAAuH;AAEvH,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAElD,eAAO,MAAM,WAAW,MAAM,CAAC;AAqU/B,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,UAAW,MAAM,SAAS,MAAM,KAAG,MACe,CAAC;AAEhF,eAAO,MAAM,sBAAsB,QAAS,QAAQ,WAAW,uBAAuB,KAAG,sBA6DxF,CAAC"}