@servrox/console-fx 0.1.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 (148) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +253 -0
  4. package/dist/browser/compiler.d.ts +14 -0
  5. package/dist/browser/compiler.d.ts.map +1 -0
  6. package/dist/browser/compiler.js +218 -0
  7. package/dist/browser/compiler.js.map +1 -0
  8. package/dist/browser/index.d.ts +16 -0
  9. package/dist/browser/index.d.ts.map +1 -0
  10. package/dist/browser/index.js +55 -0
  11. package/dist/browser/index.js.map +1 -0
  12. package/dist/browser/measure.d.ts +5 -0
  13. package/dist/browser/measure.d.ts.map +1 -0
  14. package/dist/browser/measure.js +79 -0
  15. package/dist/browser/measure.js.map +1 -0
  16. package/dist/browser/preflight.d.ts +5 -0
  17. package/dist/browser/preflight.d.ts.map +1 -0
  18. package/dist/browser/preflight.js +70 -0
  19. package/dist/browser/preflight.js.map +1 -0
  20. package/dist/codegen/index.d.ts +5 -0
  21. package/dist/codegen/index.d.ts.map +1 -0
  22. package/dist/codegen/index.js +56 -0
  23. package/dist/codegen/index.js.map +1 -0
  24. package/dist/effects/catalog.d.ts +5 -0
  25. package/dist/effects/catalog.d.ts.map +1 -0
  26. package/dist/effects/catalog.js +121 -0
  27. package/dist/effects/catalog.js.map +1 -0
  28. package/dist/index.d.ts +7 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +6 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/layout/bounds.d.ts +16 -0
  33. package/dist/layout/bounds.d.ts.map +1 -0
  34. package/dist/layout/bounds.js +84 -0
  35. package/dist/layout/bounds.js.map +1 -0
  36. package/dist/layout/metrics.d.ts +20 -0
  37. package/dist/layout/metrics.d.ts.map +1 -0
  38. package/dist/layout/metrics.js +92 -0
  39. package/dist/layout/metrics.js.map +1 -0
  40. package/dist/layout/planner.d.ts +32 -0
  41. package/dist/layout/planner.d.ts.map +1 -0
  42. package/dist/layout/planner.js +439 -0
  43. package/dist/layout/planner.js.map +1 -0
  44. package/dist/layout/render.d.ts +4 -0
  45. package/dist/layout/render.d.ts.map +1 -0
  46. package/dist/layout/render.js +98 -0
  47. package/dist/layout/render.js.map +1 -0
  48. package/dist/layout/wrap.d.ts +16 -0
  49. package/dist/layout/wrap.d.ts.map +1 -0
  50. package/dist/layout/wrap.js +67 -0
  51. package/dist/layout/wrap.js.map +1 -0
  52. package/dist/model/layout.d.ts +112 -0
  53. package/dist/model/layout.d.ts.map +1 -0
  54. package/dist/model/layout.js +2 -0
  55. package/dist/model/layout.js.map +1 -0
  56. package/dist/model/limits.d.ts +19 -0
  57. package/dist/model/limits.d.ts.map +1 -0
  58. package/dist/model/limits.js +28 -0
  59. package/dist/model/limits.js.map +1 -0
  60. package/dist/model/types.d.ts +267 -0
  61. package/dist/model/types.d.ts.map +1 -0
  62. package/dist/model/types.js +2 -0
  63. package/dist/model/types.js.map +1 -0
  64. package/dist/presentations/catalog.d.ts +5 -0
  65. package/dist/presentations/catalog.d.ts.map +1 -0
  66. package/dist/presentations/catalog.js +1522 -0
  67. package/dist/presentations/catalog.js.map +1 -0
  68. package/dist/presentations/compact.d.ts +16 -0
  69. package/dist/presentations/compact.d.ts.map +1 -0
  70. package/dist/presentations/compact.js +178 -0
  71. package/dist/presentations/compact.js.map +1 -0
  72. package/dist/presentations/fonts.d.ts +7 -0
  73. package/dist/presentations/fonts.d.ts.map +1 -0
  74. package/dist/presentations/fonts.js +7 -0
  75. package/dist/presentations/fonts.js.map +1 -0
  76. package/dist/presets/cards.d.ts +67 -0
  77. package/dist/presets/cards.d.ts.map +1 -0
  78. package/dist/presets/cards.js +305 -0
  79. package/dist/presets/cards.js.map +1 -0
  80. package/dist/presets/index.d.ts +125 -0
  81. package/dist/presets/index.d.ts.map +1 -0
  82. package/dist/presets/index.js +270 -0
  83. package/dist/presets/index.js.map +1 -0
  84. package/dist/renderers/cinematic/glyphs.d.ts +2 -0
  85. package/dist/renderers/cinematic/glyphs.d.ts.map +1 -0
  86. package/dist/renderers/cinematic/glyphs.js +86 -0
  87. package/dist/renderers/cinematic/glyphs.js.map +1 -0
  88. package/dist/renderers/cinematic/layout.d.ts +23 -0
  89. package/dist/renderers/cinematic/layout.d.ts.map +1 -0
  90. package/dist/renderers/cinematic/layout.js +86 -0
  91. package/dist/renderers/cinematic/layout.js.map +1 -0
  92. package/dist/renderers/cinematic/profiles.d.ts +51 -0
  93. package/dist/renderers/cinematic/profiles.d.ts.map +1 -0
  94. package/dist/renderers/cinematic/profiles.js +78 -0
  95. package/dist/renderers/cinematic/profiles.js.map +1 -0
  96. package/dist/renderers/cinematic/render.d.ts +8 -0
  97. package/dist/renderers/cinematic/render.d.ts.map +1 -0
  98. package/dist/renderers/cinematic/render.js +51 -0
  99. package/dist/renderers/cinematic/render.js.map +1 -0
  100. package/dist/renderers/css.d.ts +12 -0
  101. package/dist/renderers/css.d.ts.map +1 -0
  102. package/dist/renderers/css.js +72 -0
  103. package/dist/renderers/css.js.map +1 -0
  104. package/dist/renderers/presentations/compact-art.d.ts +3 -0
  105. package/dist/renderers/presentations/compact-art.d.ts.map +1 -0
  106. package/dist/renderers/presentations/compact-art.js +80 -0
  107. package/dist/renderers/presentations/compact-art.js.map +1 -0
  108. package/dist/renderers/presentations/layout.d.ts +5 -0
  109. package/dist/renderers/presentations/layout.d.ts.map +1 -0
  110. package/dist/renderers/presentations/layout.js +88 -0
  111. package/dist/renderers/presentations/layout.js.map +1 -0
  112. package/dist/renderers/presentations/render.d.ts +4 -0
  113. package/dist/renderers/presentations/render.d.ts.map +1 -0
  114. package/dist/renderers/presentations/render.js +199 -0
  115. package/dist/renderers/presentations/render.js.map +1 -0
  116. package/dist/renderers/presentations/shapes.d.ts +5 -0
  117. package/dist/renderers/presentations/shapes.d.ts.map +1 -0
  118. package/dist/renderers/presentations/shapes.js +6 -0
  119. package/dist/renderers/presentations/shapes.js.map +1 -0
  120. package/dist/renderers/svg-values.d.ts +3 -0
  121. package/dist/renderers/svg-values.d.ts.map +1 -0
  122. package/dist/renderers/svg-values.js +13 -0
  123. package/dist/renderers/svg-values.js.map +1 -0
  124. package/dist/renderers/svg.d.ts +16 -0
  125. package/dist/renderers/svg.d.ts.map +1 -0
  126. package/dist/renderers/svg.js +260 -0
  127. package/dist/renderers/svg.js.map +1 -0
  128. package/dist/validation/index.d.ts +14 -0
  129. package/dist/validation/index.d.ts.map +1 -0
  130. package/dist/validation/index.js +291 -0
  131. package/dist/validation/index.js.map +1 -0
  132. package/dist/validation/layout.d.ts +10 -0
  133. package/dist/validation/layout.d.ts.map +1 -0
  134. package/dist/validation/layout.js +183 -0
  135. package/dist/validation/layout.js.map +1 -0
  136. package/dist/validation/options.d.ts +6 -0
  137. package/dist/validation/options.d.ts.map +1 -0
  138. package/dist/validation/options.js +29 -0
  139. package/dist/validation/options.js.map +1 -0
  140. package/dist/validation/recipe.d.ts +5 -0
  141. package/dist/validation/recipe.d.ts.map +1 -0
  142. package/dist/validation/recipe.js +30 -0
  143. package/dist/validation/recipe.js.map +1 -0
  144. package/dist/validation/render-options.d.ts +21 -0
  145. package/dist/validation/render-options.d.ts.map +1 -0
  146. package/dist/validation/render-options.js +36 -0
  147. package/dist/validation/render-options.js.map +1 -0
  148. package/package.json +56 -0
@@ -0,0 +1,51 @@
1
+ import { GLYPHS } from "./glyphs.js";
2
+ import { PROFILES } from "./profiles.js";
3
+ import { escapeXml as xml, svgNumber } from "../svg-values.js";
4
+ export function renderCinematic(run, effect, layout, id, x, baseline, fontStack, fitted = false) {
5
+ const n = fitted ? String : svgNumber;
6
+ if (layout.empty)
7
+ return { definitions: "", markup: "" };
8
+ const profile = PROFILES[effect.profile];
9
+ const { faceWidth: w, faceHeight: h, depth, blur } = layout;
10
+ const originX = x + layout.insetX;
11
+ const originY = baseline - h;
12
+ const glyphDefinitions = [];
13
+ let letters = "";
14
+ if (profile.angular) {
15
+ for (const c of new Set(layout.letters)) {
16
+ if (GLYPHS[c][1])
17
+ glyphDefinitions.push(`<path id="${id}-g${c.codePointAt(0)}" d="${GLYPHS[c][1]}"/>`);
18
+ }
19
+ let advance = 0;
20
+ layout.letters.forEach((c, index) => {
21
+ if (GLYPHS[c][1])
22
+ letters += `<use href="#${id}-g${c.codePointAt(0)}" transform="translate(${n(advance)} 0) scale(${n(run.style.fontSize / 100)})"/>`;
23
+ advance += layout.advances[index] + run.style.letterSpacing;
24
+ });
25
+ }
26
+ else {
27
+ letters = `<text x="${n(w / profile.xScale / 2)}" text-anchor="middle" y="${run.style.fontSize}" font-family="${fontStack}" font-size="${run.style.fontSize}" font-weight="${run.style.fontWeight}" font-style="${profile.italic ? "italic" : "normal"}" letter-spacing="${run.style.letterSpacing}" xml:space="preserve"${layout.direction ? ` direction="${layout.direction}"` : ""} transform="scale(${profile.xScale} ${profile.yScale})">${xml(run.text)}</text>`;
28
+ }
29
+ const use = (fill, extra = "") => `<use href="#${id}-face" fill="${fill}" ${extra}/>`;
30
+ let ornament = "";
31
+ if (effect.ornaments) {
32
+ ornament = `<path d="${profile.ornamentPath}" transform="scale(${n(w / 100)} ${n(h / 100)})" vector-effect="non-scaling-stroke"/>`;
33
+ ornament = `<g fill="url(#${id}-metal)" stroke="${effect.color}" stroke-width=".8">${ornament}</g>`;
34
+ }
35
+ let markup = ornament;
36
+ if (blur > 0)
37
+ markup += use(effect.color, `filter="url(#${id}-bloom)" opacity="${n(effect.glow * 0.7)}" stroke="${effect.color}" stroke-width="3"`);
38
+ for (let layer = depth; layer > 0; layer--)
39
+ markup += use(profile.shadow, `transform="translate(${layer} ${layer})" stroke="${profile.edge}" stroke-width="1"`);
40
+ markup += use(profile.edge, 'stroke="' + profile.edge + '" stroke-width="4"');
41
+ markup += use(`url(#${id}-metal)`, `stroke="${effect.color}" stroke-width="1.5"`);
42
+ markup += use("none", 'stroke="#ffffff" stroke-width=".5" opacity=".65" transform="translate(0 -.6)"');
43
+ const filter = blur > 0
44
+ ? `<filter id="${id}-bloom" filterUnits="userSpaceOnUse" x="${n(-layout.insetX)}" y="${n(h - layout.ascent)}" width="${n(layout.width)}" height="${n(layout.ascent + layout.descent)}"><feGaussianBlur stdDeviation="${n(blur)}"/></filter>`
45
+ : "";
46
+ return {
47
+ definitions: `${glyphDefinitions.join("")}<g id="${id}-face" fill-rule="evenodd" stroke-linejoin="bevel">${letters}</g><linearGradient id="${id}-metal" x1="0" y1="0" x2="0" y2="1">${profile.stops.map(([offset, color]) => `<stop offset="${offset}" stop-color="${color}"/>`).join("")}</linearGradient>${filter}`,
48
+ markup: `<g transform="translate(${n(originX)} ${n(originY)})">${markup}</g>`,
49
+ };
50
+ }
51
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/renderers/cinematic/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CompiledPreview, ConsoleArgs, SceneV1 } from "../model/types.js";
2
+ export declare const FONT_STACKS: {
3
+ readonly sans: "Arial,Helvetica,sans-serif";
4
+ readonly mono: "Consolas,Liberation Mono,monospace";
5
+ readonly serif: "Georgia,Times New Roman,serif";
6
+ };
7
+ export declare function literalPercent(value: string): string;
8
+ export declare function renderCss(scene: SceneV1): {
9
+ args: ConsoleArgs;
10
+ preview: CompiledPreview;
11
+ };
12
+ //# sourceMappingURL=css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/renderers/css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,OAAO,EAER,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAkDD,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG;IACzC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;CAC1B,CAsBA"}
@@ -0,0 +1,72 @@
1
+ export const FONT_STACKS = {
2
+ sans: "Arial,Helvetica,sans-serif",
3
+ mono: "Consolas,Liberation Mono,monospace",
4
+ serif: "Georgia,Times New Roman,serif",
5
+ };
6
+ export function literalPercent(value) {
7
+ return value.replaceAll("%", "%%");
8
+ }
9
+ function runStyle(run) {
10
+ const style = {
11
+ color: run.style.color,
12
+ "font-size": `${run.style.fontSize}px`,
13
+ "font-weight": String(run.style.fontWeight),
14
+ "font-family": FONT_STACKS[run.style.fontFamily],
15
+ "letter-spacing": `${run.style.letterSpacing}px`,
16
+ "line-height": "1.5",
17
+ };
18
+ const shadows = [];
19
+ for (const effect of run.effects) {
20
+ switch (effect.kind) {
21
+ case "badge":
22
+ style.background = effect.color;
23
+ style.color = "#071014";
24
+ style.padding = "4px 12px";
25
+ style["border-radius"] = "6px";
26
+ break;
27
+ case "neon": {
28
+ const blur = Number((4 + effect.intensity * 12).toFixed(2));
29
+ style.color = effect.color;
30
+ // DevTools applies paint containment to styled spans. Reserve room for
31
+ // the halo so it is not cut off at the first/last glyph.
32
+ style.padding = `${Math.ceil(blur)}px`;
33
+ shadows.push(`0 0 ${Number((2 + effect.intensity * 4).toFixed(2))}px ${effect.color}`, `0 0 ${blur}px ${effect.color}`);
34
+ break;
35
+ }
36
+ case "rgbSplit":
37
+ style.padding = `${effect.offset + 1}px`;
38
+ shadows.push(`${-effect.offset}px 0 #ff526f`, `${effect.offset}px 0 #35dfff`);
39
+ break;
40
+ case "extruded":
41
+ style.padding = `${effect.depth + 1}px`;
42
+ for (let depth = 1; depth <= effect.depth; depth++)
43
+ shadows.push(`${depth}px ${depth}px ${effect.color}`);
44
+ break;
45
+ }
46
+ }
47
+ if (shadows.length)
48
+ style["text-shadow"] = shadows.join(",");
49
+ return style;
50
+ }
51
+ export function renderCss(scene) {
52
+ let format = "";
53
+ const values = [];
54
+ const lines = scene.lines.map((line, index) => {
55
+ if (index > 0)
56
+ format += "\n";
57
+ return {
58
+ runs: line.runs.map((run) => {
59
+ const style = runStyle(run);
60
+ format += "%c%s";
61
+ values.push(Object.entries(style)
62
+ .map(([key, value]) => `${key}:${value}`)
63
+ .join(";"), literalPercent(run.text));
64
+ return { text: run.text, style };
65
+ }),
66
+ };
67
+ });
68
+ format += "%c";
69
+ values.push("");
70
+ return { args: [format, ...values], preview: { kind: "css", lines } };
71
+ }
72
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sourceRoot":"","sources":["../../src/renderers/css.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CardPresetId, PresentationStatus } from "../../model/types.js";
2
+ export declare function compactArtwork(id: CardPresetId, bg: string, accent: string, height: number, detailed: boolean, palette: PresentationStatus["palettes"][string] | undefined, status: string): string;
3
+ //# sourceMappingURL=compact-art.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact-art.d.ts","sourceRoot":"","sources":["../../../src/renderers/presentations/compact-art.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK7E,wBAAgB,cAAc,CAC5B,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,EAC3D,MAAM,EAAE,MAAM,GACb,MAAM,CAyFR"}
@@ -0,0 +1,80 @@
1
+ import { rect as r, circle as c, path } from "./shapes.js";
2
+ const p = (d, stroke, extra = "") => path(d, "none", stroke, extra);
3
+ // Accepted original compact artwork. Geometry is immutable under fit/v1.
4
+ export function compactArtwork(id, bg, accent, height, detailed, palette, status) {
5
+ let value = r(0, 0, 360, height, bg, 12);
6
+ if (id === "buildReceipt")
7
+ value +=
8
+ r(4, 4, 352, height - 8, "#efeee5", 9) +
9
+ r(4, 15, 4, height - 30, accent, 2) +
10
+ r(238, 54, 88, 32, palette.background, 6, palette.stroke) +
11
+ p("M24 104H336M24 220H336", "#9ba99f", 'stroke-dasharray="3 4"') +
12
+ p(status === "PASSED"
13
+ ? "M245 69l4 4 6-8"
14
+ : status === "FAILED"
15
+ ? "M244 64l10 12m0-12-10 12"
16
+ : "M249 63l6 12h-12Zm0 4v3m0 2v1", palette.marker, 'stroke-width="1.5"') +
17
+ [...Array(detailed ? 22 : 0)]
18
+ .map((_, i) => p(`M354 ${12 + i * 12}l6 6-6 6`, bg))
19
+ .join("");
20
+ else if (id === "requestTrace")
21
+ value +=
22
+ r(246, 16, 88, 26, palette.background, 6) +
23
+ p("M24 96H336M24 242H336", "#35434d") +
24
+ p("M32 121V209", "#33434f", 'stroke-width="2"') +
25
+ [121, 165, 209]
26
+ .map((y) => c(32, y, 5, bg, accent, 'stroke-width="2"'))
27
+ .join("");
28
+ else if (id === "serviceReady")
29
+ value +=
30
+ r(249, 15, 88, 28, palette.background, 6) +
31
+ c(260, 28, 2.5, palette.marker) +
32
+ p("M24 137H336M24 271H336", "#3a4650") +
33
+ p("M144 150v107", "#39454e");
34
+ else if (id === "commandCard")
35
+ value +=
36
+ r(24, 156, 312, 64, "#101920", 8, "#374950") +
37
+ p("M27 163v50", "#4eaaad", 'stroke-width="2"') +
38
+ p("M34 181l6 7-6 7", accent, 'stroke-width="2"');
39
+ else if (id === "releaseBulletin")
40
+ value +=
41
+ r(270, 17, 67, 25, "#d7e3d7", 4) +
42
+ p("M24 52H336M24 216H336", "#becac0") +
43
+ r(24, 212, 54, 4, accent) +
44
+ c(27, 146, 2, "#38816e") +
45
+ c(27, 181, 2, "#38816e");
46
+ else if (id === "blueprint")
47
+ value +=
48
+ p("M50 74l37-21 39 21v45l-39 22-37-22ZM50 74l37 22 39-22M87 96v45M87 53v43", accent, 'stroke-width="1.4"') +
49
+ p("M50 119l37-23 39 23", "#72939e", 'stroke-dasharray="3 3"') +
50
+ p("M37 52v90M32 54h10M32 141h10M24 256H336", "#638b99") +
51
+ c(87, 96, 4, bg, "#c1e0e3") +
52
+ r(24, 253, 28, 3, accent);
53
+ else if (id === "contourMap")
54
+ value +=
55
+ Array.from({ length: detailed ? 5 : 2 }, (_, i) => p(`M${220 + i * 18} 48c-12 9 26 12 18 26s-30 13-9 21`, i === 2 ? accent : "#345448", 'stroke-width="1.1"')).join("") + r(24, 202, 38, 2, "#6cc4ac");
56
+ else if (id === "letterpress")
57
+ value +=
58
+ r(8, 8, 344, height - 16, "none", 8, "#f7f6ec") +
59
+ p("M24 53H336", "#d4d5c7") +
60
+ p("M24 55H336", "#f4f4e9") +
61
+ r(24, 201, 51, 3, accent) +
62
+ (detailed ? c(329, 238, 4, "#d5d9cd", "#f5f5ea") : "");
63
+ else if (id === "signalHalftone")
64
+ value +=
65
+ c(271, 76, 25, "#386c60") +
66
+ `<defs><pattern id="compact-dots" width="6" height="6" patternUnits="userSpaceOnUse">${c(2.7, 2.7, 1.65, accent)}</pattern></defs>` +
67
+ (detailed ? c(300, 69, 29, "url(#compact-dots)") : "") +
68
+ p("M24 254H336", "#ccd0be");
69
+ else if (id === "orbital")
70
+ value +=
71
+ c(84, 77, 42, "none", "#354d5b") +
72
+ (detailed ? c(84, 77, 27, "none", "#405e6b") : "") +
73
+ `<ellipse cx="84" cy="77" rx="60" ry="18" fill="none" stroke="#62888f" transform="rotate(-32 84 77)"/>` +
74
+ p("M61 41A42 42 0 0 1 111 43", accent, 'stroke-width="2"') +
75
+ c(129, 51, 4, "#deb578") +
76
+ c(84, 77, 2, "#a0c3c8") +
77
+ p("M24 267H336", "#31434f");
78
+ return value;
79
+ }
80
+ //# sourceMappingURL=compact-art.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact-art.js","sourceRoot":"","sources":["../../../src/renderers/presentations/compact-art.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Diagnostic, SceneV1, TextStyle } from "../../model/types.js";
2
+ /** Conservative local-font estimate; never a claim of portable exact metrics. */
3
+ export declare function estimatedTextWidth(text: string, style: TextStyle): number;
4
+ export declare function presentationDiagnostics(scene: SceneV1, fitting?: boolean): Diagnostic[];
5
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/renderers/presentations/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAqB3E,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAazE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,OAAO,UAAQ,GACd,UAAU,EAAE,CAwFd"}
@@ -0,0 +1,88 @@
1
+ import { presentationDescriptor, SEPARATOR_STYLE, } from "../../presentations/catalog.js";
2
+ /** Conservative advances for the bold members of the closed local-font stacks. */
3
+ function estimatedAdvance(c, family) {
4
+ // Spacing and combining marks may have advance or overhang; neither is free.
5
+ if (c.codePointAt(0) > 127)
6
+ return 2;
7
+ if (family === "mono")
8
+ return 0.66;
9
+ if (/\s/u.test(c))
10
+ return 0.36;
11
+ if (/[il]/u.test(c))
12
+ return 0.4;
13
+ if (c === "I")
14
+ return 0.6;
15
+ if (c === "W")
16
+ return 1.3;
17
+ if (/[Mmw@%]/u.test(c))
18
+ return 1.15;
19
+ if (/[A-Z]/u.test(c))
20
+ return family === "serif" ? 1 : 0.9;
21
+ if (/[a-z0-9]/u.test(c))
22
+ return family === "serif" ? 0.78 : 0.8;
23
+ return /[.,'!]/u.test(c) ? 0.5 : 0.95;
24
+ }
25
+ /** Conservative local-font estimate; never a claim of portable exact metrics. */
26
+ export function estimatedTextWidth(text, style) {
27
+ let units = 0, letters = 0;
28
+ for (const c of text) {
29
+ if (c === "\u200d")
30
+ continue;
31
+ letters++;
32
+ units += estimatedAdvance(c, style.fontFamily);
33
+ }
34
+ return (units * style.fontSize +
35
+ Math.max(0, letters - 1) * style.letterSpacing +
36
+ (letters ? style.fontSize * 0.12 : 0));
37
+ }
38
+ export function presentationDiagnostics(scene, fitting = false) {
39
+ if (!scene.presentation)
40
+ return [];
41
+ const descriptor = presentationDescriptor(scene.presentation.profile);
42
+ const diagnostics = [];
43
+ const error = (code, message, path) => diagnostics.push({ code, message, path, severity: "error" });
44
+ if (scene.lines.length !== descriptor.rows.length ||
45
+ scene.lines.some((l, i) => l.align !== "left" || l.runs.length !== descriptor.rows[i])) {
46
+ error("unsupported-presentation-structure", "Restore the card's named slots or detach it to edit structure.", ["lines"]);
47
+ return diagnostics;
48
+ }
49
+ for (const [li, line] of scene.lines.entries())
50
+ for (const [ri, run] of line.runs.entries()) {
51
+ const path = ["lines", li, "runs", ri];
52
+ const slot = descriptor.slots.find((s) => s.line === li && s.run === ri);
53
+ if (run.effects.length)
54
+ error("unsupported-combination", "Detach the card before adding effects or motion.", [...path, "effects"]);
55
+ const status = descriptor.status;
56
+ const statusKey = status?.source === "tone" &&
57
+ scene.presentation.profile === "requestTrace/v1"
58
+ ? scene.presentation.tone
59
+ : run.text;
60
+ const palette = status &&
61
+ slot &&
62
+ status.slot === slot.id &&
63
+ Object.hasOwn(status.palettes, statusKey)
64
+ ? status.palettes[statusKey]
65
+ : undefined;
66
+ const style = palette
67
+ ? { ...slot.style, color: palette.ink }
68
+ : (slot?.style ?? SEPARATOR_STYLE);
69
+ const editable = slot
70
+ ? (slot.editableStyleKeys ?? descriptor.editableStyleKeys)
71
+ : [];
72
+ if (Object.keys(style).some((k) => !editable.includes(k) && run.style[k] !== style[k]))
73
+ error("unsupported-presentation-style", "This card owns typography. Restore its style or detach it.", [...path, "style"]);
74
+ if (!slot) {
75
+ if (run.text !== " ")
76
+ error("unsupported-presentation-structure", "Restore the card's two-space separators or detach it.", [...path, "text"]);
77
+ continue;
78
+ }
79
+ if (slot.values && !slot.values.includes(run.text))
80
+ error("unsupported-presentation-content", "Choose a documented status word or use plain text.", [...path, "text"]);
81
+ if ([...run.text].length > slot.maxCodePoints ||
82
+ /[\t\n\u2028\u2029]/u.test(run.text) ||
83
+ (!fitting && estimatedTextWidth(run.text, run.style) > slot.safeWidth))
84
+ error("presentation-overflow", `${slot.label} exceeds its rich layout. Shorten it or choose plain text.`, [...path, "text"]);
85
+ }
86
+ return diagnostics;
87
+ }
88
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/renderers/presentations/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SceneV1 } from "../../model/types.js";
2
+ import type { SvgLayoutPlan } from "../../layout/planner.js";
3
+ export declare function renderPresentation(scene: SceneV1, plan?: SvgLayoutPlan): string;
4
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/renderers/presentations/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAI7D,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,aAAa,GACnB,MAAM,CA0OR"}
@@ -0,0 +1,199 @@
1
+ import { presentationDescriptor } from "../../presentations/catalog.js";
2
+ import { escapeXml as xml, svgNumber } from "../svg-values.js";
3
+ import { CARD_FONT_STACKS as fonts } from "../../presentations/fonts.js";
4
+ import { textDirection } from "../../layout/metrics.js";
5
+ import { compactArtwork } from "./compact-art.js";
6
+ import { rect, line, path, circle } from "./shapes.js";
7
+ export function renderPresentation(scene, plan) {
8
+ const n = plan ? String : svgNumber;
9
+ const presentation = scene.presentation;
10
+ const descriptor = presentationDescriptor(presentation.profile);
11
+ const { width, height, padding, background, borderRadius } = scene.surface;
12
+ const cardWidth = plan?.cardLayout?.width ?? 720;
13
+ const cardHeight = plan?.cardLayout?.height ?? 240;
14
+ const scale = Math.min((width - 2 * padding) / cardWidth, (height - 2 * padding) / cardHeight);
15
+ const accent = presentation.accent;
16
+ const detailed = presentation.detail === "standard";
17
+ const status = descriptor.status;
18
+ const statusSlot = descriptor.slots.find((s) => s.id === status?.slot);
19
+ const palette = status && statusSlot
20
+ ? status.palettes[status.source === "tone" && presentation.profile === "requestTrace/v1"
21
+ ? presentation.tone
22
+ : scene.lines[statusSlot.line].runs[statusSlot.run].text]
23
+ : undefined;
24
+ let art = "";
25
+ if (plan?.cardLayout?.compact) {
26
+ art = compactArtwork(descriptor.id, background, accent, cardHeight, detailed, palette, descriptor.id === "buildReceipt" ? scene.lines[1].runs[2].text : "");
27
+ }
28
+ else if (descriptor.id === "buildReceipt") {
29
+ const status = scene.lines[1].runs[2].text;
30
+ art =
31
+ rect(0, 0, 720, 240, background, borderRadius) +
32
+ rect(4, 4, 712, 232, "#efeee5", 9) +
33
+ rect(4, 14, 5, 212, accent, 2) +
34
+ line(32, 108, 677, 108, "#9ba99f", 'stroke-dasharray="3 4"') +
35
+ line(32, 187, 677, 187, "#9ba99f", 'stroke-dasharray="3 4"') +
36
+ rect(540, 34, 123, 40, palette.background, 7, palette.stroke);
37
+ art +=
38
+ status === "PASSED"
39
+ ? path("M551 52l5 5 8-11", "none", palette.marker, 'stroke-width="2"')
40
+ : status === "FAILED"
41
+ ? path("M552 47l10 12m0-12-10 12", "none", palette.marker, 'stroke-width="2"')
42
+ : path("M557 44l7 15h-14Zm0 5v4m0 2v1", "none", palette.marker, 'stroke-width="1.5"');
43
+ art +=
44
+ line(216, 126, 216, 168, "#d4d8cc") + line(417, 126, 417, 168, "#d4d8cc");
45
+ if (detailed)
46
+ for (let y = 12; y <= 216; y += 12)
47
+ art += path(`M710 ${y}l10 6-10 6`, background, background, 'stroke-width="1"');
48
+ }
49
+ else if (descriptor.id === "letterpress") {
50
+ art =
51
+ rect(0, 0, 720, 240, background, borderRadius, "#d5d5c8") +
52
+ rect(9, 9, 702, 222, "none", 8, "#f7f6ec") +
53
+ line(36, 51, 684, 51, "#d4d5c7") +
54
+ line(36, 53, 684, 53, "#f4f4e9") +
55
+ rect(38, 182, 51, 3, accent);
56
+ if (detailed)
57
+ art +=
58
+ '<circle cx="678" cy="213" r="5" fill="#d5d9cd" stroke="#f5f5ea"/>';
59
+ }
60
+ else if (descriptor.id === "requestTrace") {
61
+ art =
62
+ rect(0, 0, 720, 240, background, borderRadius, "#31414c") +
63
+ rect(555, 13, 123, 29, palette.background, 7) +
64
+ line(32, 98, 686, 98, "#35434d") +
65
+ line(62, 126, 616, 126, "#33434f", 'stroke-width="2"') +
66
+ [62, 295, 540]
67
+ .map((x) => circle(x, 126, 6, "#151f26", accent, 'stroke-width="2"'))
68
+ .join("") +
69
+ line(32, 202, 686, 202, "#303e47");
70
+ if (detailed)
71
+ art += path("M645 121l5 5-5 5", "none", "#627781", 'stroke-width="1.5"');
72
+ }
73
+ else if (descriptor.id === "serviceReady") {
74
+ art =
75
+ rect(0, 0, 720, 240, background, borderRadius, "#3c4a54") +
76
+ rect(26, 23, 78, 92, "#111b22", 12, "#334650") +
77
+ rect(42, 44, 45, 46, "#1a2b34", 7, "#588e98") +
78
+ path("M51 57h26M51 68h17M51 79h26", "none", accent, 'stroke-width="2"') +
79
+ rect(551, 24, 112, 34, palette.background, 7) +
80
+ circle(565, 41, 3, palette.marker) +
81
+ line(32, 142, 684, 142, "#3a4650") +
82
+ line(262, 158, 262, 193, "#39454e") +
83
+ line(499, 158, 499, 193, "#39454e") +
84
+ line(32, 205, 684, 205, "#303e46");
85
+ }
86
+ else if (descriptor.id === "commandCard") {
87
+ art =
88
+ rect(0, 0, 720, 240, background, borderRadius, "#3c4952") +
89
+ line(109, 48, 109, 105, "#3d5057") +
90
+ rect(28, 126, 664, 64, "#101920", 8, "#374950") +
91
+ line(31, 133, 31, 183, "#4eaaad", 'stroke-width="2"') +
92
+ path("M45 149l8 7-8 7", "none", accent, 'stroke-width="2"');
93
+ if (detailed)
94
+ art += line(630, 163, 645, 163, "#5a747e", 'stroke-width="2"');
95
+ }
96
+ else if (descriptor.id === "releaseBulletin") {
97
+ art =
98
+ rect(0, 0, 720, 240, background, borderRadius, "#ced3c7") +
99
+ line(32, 50, 688, 50, "#bbc8bd") +
100
+ rect(589, 14, 98, 29, "#d7e3d7", 4) +
101
+ circle(37, 151, 2, "#38816e") +
102
+ circle(337, 151, 2, "#38816e") +
103
+ line(32, 184, 688, 184, "#becac0") +
104
+ rect(32, 180, 62, 4, accent);
105
+ if (detailed)
106
+ art += line(32, 58, 688, 58, "#dee2d6");
107
+ }
108
+ else if (descriptor.id === "blueprint") {
109
+ art = rect(0, 0, 720, 240, background, borderRadius, "#3b5660");
110
+ if (detailed)
111
+ art +=
112
+ `<defs><pattern id="card-grid" width="24" height="24" patternUnits="userSpaceOnUse">${path("M24 0H0V24", "none", "#24424c", 'stroke-width="0.6"')}</pattern></defs>` +
113
+ rect(12, 12, 216, 216, "url(#card-grid)", 6);
114
+ art +=
115
+ path("M58 96l62-35 64 35v73l-64 36-62-36ZM58 96l62 36 64-36M120 132v73M120 61v71", "none", accent, 'stroke-width="1.4"') +
116
+ path("M58 169l62-37 64 37", "none", "#72939e", 'stroke-width="0.8" stroke-dasharray="4 4"');
117
+ if (detailed)
118
+ art +=
119
+ line(48, 53, 48, 209, "#638b99", 'stroke-width="0.8"') +
120
+ line(42, 61, 54, 61, "#86a9b4") +
121
+ line(42, 205, 54, 205, "#86a9b4") +
122
+ line(66, 224, 176, 224, "#638b99", 'stroke-width="0.8"') +
123
+ line(63, 220, 70, 228, "#86a9b4") +
124
+ line(172, 220, 180, 228, "#86a9b4");
125
+ art +=
126
+ circle(120, 132, 6, background, "#c1e0e3") +
127
+ line(248, 166, 675, 166, "#395563") +
128
+ rect(249, 181, 30, 3, "#6cbabf");
129
+ }
130
+ else if (descriptor.id === "contourMap") {
131
+ art = rect(0, 0, 720, 240, background, borderRadius, "#3b5149");
132
+ // Fourteen authored curves at most, independent of input text or time.
133
+ for (let i = 0; i < 14; i++) {
134
+ if (!detailed && i !== 3 && i % 3 !== 0)
135
+ continue;
136
+ const x = 498 + 13 * i;
137
+ art += path(`M${x} 0C${x - 35} 41 ${x + 88} 61 ${x + 52} 111S${x - 49} 183 ${x} 240`, "none", i === 3 ? accent : "#345448", `stroke-width="${i === 3 ? 1.5 : 0.8}"`);
138
+ }
139
+ art += rect(30, 181, 38, 2, "#6cc4ac");
140
+ if (detailed)
141
+ art +=
142
+ circle(596, 160, 4, background, "#9ecfb9", 'stroke-width="1.2"') +
143
+ line(586, 160, 606, 160, "#89b9a7", 'stroke-width="0.6"') +
144
+ line(596, 150, 596, 170, "#89b9a7", 'stroke-width="0.6"');
145
+ }
146
+ else if (descriptor.id === "signalHalftone") {
147
+ art =
148
+ rect(0, 0, 720, 240, background, borderRadius, "#d6d2c1") +
149
+ circle(114, 123, 79, "#386c60");
150
+ if (detailed)
151
+ art +=
152
+ `<defs><pattern id="card-dots" width="6" height="6" patternUnits="userSpaceOnUse">${circle(2.7, 2.7, 1.65, accent)}</pattern></defs>` +
153
+ circle(151, 117, 84, "url(#card-dots)");
154
+ art +=
155
+ path("M28 204h190M244 24v192", "none", "#b5bbab", 'stroke-width="0.8"') +
156
+ line(271, 195, 678, 195, "#ccd0be");
157
+ }
158
+ else if (descriptor.id === "orbital") {
159
+ art =
160
+ rect(0, 0, 720, 240, background, borderRadius, "#344551") +
161
+ circle(128, 126, 77, "none", "#354d5b");
162
+ if (detailed)
163
+ art +=
164
+ circle(128, 126, 57, "none", "#405e6b") +
165
+ circle(128, 126, 33, "none", "#506d77");
166
+ art +=
167
+ '<ellipse cx="128" cy="126" rx="107" ry="32" fill="none" stroke="#62888f" stroke-width="1.1" transform="rotate(-32 128 126)"/>' +
168
+ path("M87 61A77 77 0 0 1 178 68", "none", accent, 'stroke-width="2"') +
169
+ circle(207, 80, 5, "#deb578") +
170
+ circle(128, 126, 3, "#a0c3c8") +
171
+ line(128, 113, 128, 139, "#668895", 'stroke-width="0.8"') +
172
+ line(115, 126, 141, 126, "#668895", 'stroke-width="0.8"') +
173
+ line(264, 174, 681, 174, "#31434f");
174
+ }
175
+ const texts = (plan?.cardTexts ??
176
+ descriptor.slots.map((slot) => ({
177
+ slot,
178
+ text: scene.lines[slot.line].runs[slot.run].text,
179
+ baseline: slot.y,
180
+ })))
181
+ .map(({ slot, text: value, baseline }) => {
182
+ const run = scene.lines[slot.line].runs[slot.run];
183
+ const direction = plan ? textDirection(value) : undefined;
184
+ const anchor = direction === "rtl"
185
+ ? slot.anchor === "start"
186
+ ? "end"
187
+ : slot.anchor === "middle"
188
+ ? "middle"
189
+ : "start"
190
+ : slot.anchor;
191
+ const text = (x, y, color, decoration = false) => `<text ${decoration ? 'aria-hidden="true"' : `data-slot="${slot.id}"`} x="${x}" y="${y}" fill="${color}" font-size="${run.style.fontSize}" font-family="${fonts[run.style.fontFamily]}" font-weight="${run.style.fontWeight}" letter-spacing="${run.style.letterSpacing}" text-anchor="${anchor}" xml:space="preserve"${direction ? ` direction="${direction}"` : ""}>${xml(value)}</text>`;
192
+ return ((descriptor.id === "letterpress" && slot.id === "title"
193
+ ? text(plan?.cardLayout?.compact ? slot.x - 0.2 : 35.8, baseline + 1.3, "#faf9ef", true)
194
+ : "") + text(slot.x, baseline, run.style.color));
195
+ })
196
+ .join("");
197
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">${rect(0, 0, width, height, background, borderRadius)}<g transform="translate(${n((width - cardWidth * scale) / 2)} ${n((height - cardHeight * scale) / 2)}) scale(${n(scale)})">${art}${texts}</g></svg>`;
198
+ }
199
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/renderers/presentations/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const rect: (x: number, y: number, w: number, h: number, fill: string, radius?: number, stroke?: string) => string;
2
+ export declare const line: (x1: number, y1: number, x2: number, y2: number, color: string, extra?: string) => string;
3
+ export declare const path: (d: string, fill: string, stroke: string, extra?: string) => string;
4
+ export declare const circle: (x: number, y: number, r: number, fill: string, stroke?: string, extra?: string) => string;
5
+ //# sourceMappingURL=shapes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../../../src/renderers/presentations/shapes.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,IAAI,GACf,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,EACT,MAAM,MAAM,EACZ,eAAU,EACV,eAAe,WAEwF,CAAC;AAC1G,eAAO,MAAM,IAAI,GACf,IAAI,MAAM,EACV,IAAI,MAAM,EACV,IAAI,MAAM,EACV,IAAI,MAAM,EACV,OAAO,MAAM,EACb,cAAU,WAEsE,CAAC;AACnF,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,EAAE,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,cAAU,WACT,CAAC;AAChE,eAAO,MAAM,MAAM,GACjB,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,EACT,MAAM,MAAM,EACZ,eAAe,EACf,cAAU,WAEyE,CAAC"}