@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,270 @@
1
+ import { defineScene, fail, SceneValidationError, } from "../validation/index.js";
2
+ import { deepFreeze } from "../model/limits.js";
3
+ import { getPresentationDescriptors } from "../presentations/catalog.js";
4
+ import { buildReceipt, requestTrace, serviceReady, commandCard, releaseBulletin, blueprint, contourMap, letterpress, signalHalftone, orbital, cardExample, } from "./cards.js";
5
+ export { buildReceipt, requestTrace, serviceReady, commandCard, releaseBulletin, blueprint, contourMap, letterpress, signalHalftone, orbital, } from "./cards.js";
6
+ export const PRESETS = deepFreeze([
7
+ {
8
+ id: "badge",
9
+ name: "Badge",
10
+ description: "A small message with presence.",
11
+ renderer: "css",
12
+ group: "Classic",
13
+ },
14
+ {
15
+ id: "neon",
16
+ name: "Neon",
17
+ description: "A crisp line with a soft glow.",
18
+ renderer: "css",
19
+ group: "Classic",
20
+ },
21
+ {
22
+ id: "rgbSplit",
23
+ name: "RGB split",
24
+ description: "Three channels, slightly apart.",
25
+ renderer: "css",
26
+ group: "Classic",
27
+ },
28
+ {
29
+ id: "extruded",
30
+ name: "Extruded text",
31
+ description: "A little depth goes a long way.",
32
+ renderer: "css",
33
+ group: "Classic",
34
+ },
35
+ {
36
+ id: "holographic",
37
+ name: "Holographic",
38
+ description: "Iridescent color, held in light.",
39
+ renderer: "svg",
40
+ group: "Classic",
41
+ },
42
+ {
43
+ id: "gold",
44
+ name: "Gold",
45
+ description: "Warm metal and sharp highlights.",
46
+ renderer: "svg",
47
+ group: "Classic",
48
+ },
49
+ {
50
+ id: "chrome",
51
+ name: "Chrome",
52
+ description: "Cool reflections, polished edges.",
53
+ renderer: "svg",
54
+ group: "Classic",
55
+ },
56
+ {
57
+ id: "crt",
58
+ name: "CRT",
59
+ description: "A quiet nod to the phosphor screen.",
60
+ renderer: "svg",
61
+ group: "Classic",
62
+ },
63
+ {
64
+ id: "rainbow",
65
+ name: "Rainbow",
66
+ description: "The whole spectrum in one line.",
67
+ renderer: "svg",
68
+ group: "Classic",
69
+ },
70
+ {
71
+ id: "lightningMetal",
72
+ name: "Lightning Metal",
73
+ description: "Angular lettering, cold reflections and electric edges.",
74
+ renderer: "svg",
75
+ group: "Cinematic Metal",
76
+ },
77
+ {
78
+ id: "iceCathedral",
79
+ name: "Ice Cathedral",
80
+ description: "Tall ice-blue serifs between pointed ornaments.",
81
+ renderer: "svg",
82
+ group: "Cinematic Metal",
83
+ },
84
+ {
85
+ id: "liquidChrome",
86
+ name: "Liquid Chrome",
87
+ description: "Swept chrome lettering and a hard reflection break.",
88
+ renderer: "svg",
89
+ group: "Cinematic Metal",
90
+ },
91
+ {
92
+ id: "moltenGold",
93
+ name: "Molten Gold",
94
+ description: "Sharp gold faces above deep red metal.",
95
+ renderer: "svg",
96
+ group: "Cinematic Metal",
97
+ },
98
+ ...getPresentationDescriptors().map((descriptor) => ({
99
+ id: descriptor.id,
100
+ name: descriptor.name,
101
+ description: descriptor.group === "Useful"
102
+ ? "A supplied snapshot. Sample data."
103
+ : "An original, static graphic signature.",
104
+ renderer: "svg",
105
+ group: descriptor.group,
106
+ })),
107
+ ]);
108
+ function create(effect, options = {}) {
109
+ const text = options.text ?? "Hello, developer.";
110
+ const effects = [effect];
111
+ if (options.motion && options.motion !== "none")
112
+ effects.push({ kind: options.motion });
113
+ return defineScene({
114
+ schemaVersion: 1,
115
+ label: text,
116
+ surface: {
117
+ width: 600,
118
+ height: 180,
119
+ background: "#0c1117",
120
+ padding: 34,
121
+ borderRadius: 16,
122
+ },
123
+ lines: [
124
+ {
125
+ align: "center",
126
+ runs: [
127
+ {
128
+ text,
129
+ style: {
130
+ color: options.color ?? "#e8f3f5",
131
+ fontFamily: "mono",
132
+ fontSize: 42,
133
+ fontWeight: 700,
134
+ },
135
+ effects,
136
+ },
137
+ ],
138
+ },
139
+ ],
140
+ motion: { durationMs: 4800, finish: "freeze" },
141
+ });
142
+ }
143
+ export function badge(options = {}) {
144
+ return create({ kind: "badge", color: options.color ?? "#22d3ee" }, options);
145
+ }
146
+ export function neon(options = {}) {
147
+ return create({ kind: "neon", color: options.color ?? "#22d3ee" }, options);
148
+ }
149
+ export function rgbSplit(options = {}) {
150
+ return create({ kind: "rgbSplit" }, options);
151
+ }
152
+ export function extruded(options = {}) {
153
+ return create({ kind: "extruded", color: options.color ?? "#168da5" }, options);
154
+ }
155
+ export function holographic(options = {}) {
156
+ return create({ kind: "holographic" }, options);
157
+ }
158
+ export function gold(options = {}) {
159
+ return create({ kind: "metallic", variant: "gold" }, options);
160
+ }
161
+ export function chrome(options = {}) {
162
+ return create({ kind: "metallic", variant: "chrome" }, options);
163
+ }
164
+ export function crt(options = {}) {
165
+ return create({ kind: "crt" }, options);
166
+ }
167
+ export function rainbow(options = {}) {
168
+ return create({ kind: "rainbow" }, options);
169
+ }
170
+ function cinematic(profile, text, color, depth, glow, fontSize, options = {}) {
171
+ if (options.motion !== undefined && options.motion !== "none")
172
+ throw new SceneValidationError([
173
+ {
174
+ code: "unsupported-combination",
175
+ severity: "error",
176
+ path: ["motion"],
177
+ message: "Cinematic Metal presets support static output only.",
178
+ },
179
+ ]);
180
+ const title = options.text ?? text;
181
+ const angular = profile === "lightning-metal-v1" || profile === "molten-gold-v1";
182
+ return defineScene({
183
+ schemaVersion: 1,
184
+ label: title,
185
+ surface: {
186
+ width: 840,
187
+ height: 270,
188
+ padding: 32,
189
+ background: "#0c1117",
190
+ borderRadius: 16,
191
+ },
192
+ lines: [
193
+ {
194
+ align: "center",
195
+ runs: [
196
+ {
197
+ text: title,
198
+ style: {
199
+ fontFamily: angular ? "mono" : "serif",
200
+ fontSize,
201
+ fontWeight: angular ? 700 : 900,
202
+ letterSpacing: angular ? 1 : 0,
203
+ },
204
+ effects: [
205
+ {
206
+ kind: "cinematicMetal",
207
+ profile,
208
+ color: options.color ?? color,
209
+ depth: options.depth ?? depth,
210
+ glow: options.glow ?? glow,
211
+ ornaments: options.ornaments ?? true,
212
+ },
213
+ ],
214
+ },
215
+ ],
216
+ },
217
+ ],
218
+ motion: { durationMs: 4800, finish: "freeze" },
219
+ });
220
+ }
221
+ export function lightningMetal(options = {}) {
222
+ return cinematic("lightning-metal-v1", "CONSOLE FX", "#69dcff", 7, 0.25, 84, options);
223
+ }
224
+ export function iceCathedral(options = {}) {
225
+ return cinematic("ice-cathedral-v1", "STARK AI", "#a8edff", 3, 0.15, 90, options);
226
+ }
227
+ export function liquidChrome(options = {}) {
228
+ return cinematic("liquid-chrome-v1", "Overdrive", "#a9d5ed", 5, 0.1, 96, options);
229
+ }
230
+ export function moltenGold(options = {}) {
231
+ return cinematic("molten-gold-v1", "HOT RELOAD", "#ffba52", 8, 0.2, 84, options);
232
+ }
233
+ export function preset(id, options) {
234
+ const factories = {
235
+ badge,
236
+ neon,
237
+ rgbSplit,
238
+ extruded,
239
+ holographic,
240
+ gold,
241
+ chrome,
242
+ crt,
243
+ rainbow,
244
+ lightningMetal,
245
+ iceCathedral,
246
+ liquidChrome,
247
+ moltenGold,
248
+ buildReceipt,
249
+ requestTrace,
250
+ serviceReady,
251
+ commandCard,
252
+ releaseBulletin,
253
+ blueprint,
254
+ contourMap,
255
+ letterpress,
256
+ signalHalftone,
257
+ orbital,
258
+ };
259
+ if (!Object.hasOwn(factories, id))
260
+ fail("invalid-preset", "Choose a documented preset.", ["id"]);
261
+ // The public ID/options overload preserves correlation; each factory validates data at runtime.
262
+ return factories[id](options);
263
+ }
264
+ /** Materialize an explicit authored catalog example, including synthetic useful facts. */
265
+ export function createPresetExample(id) {
266
+ return getPresentationDescriptors().some((d) => d.id === id)
267
+ ? cardExample(id)
268
+ : preset(id);
269
+ }
270
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,IAAI,EACJ,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,SAAS,EACT,UAAU,EACV,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,GACZ,MAAM,YAAY,CAAC;AASpB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,SAAS,EACT,UAAU,EACV,WAAW,EACX,cAAc,EACd,OAAO,GACR,MAAM,YAAY,CAAC;AAuCpB,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;IAChC;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,kCAAkC;QAC/C,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,kCAAkC;QAC/C,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,iBAAiB;KACzB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,iBAAiB;KACzB;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,qDAAqD;QAClE,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,iBAAiB;KACzB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,wCAAwC;QACrD,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,iBAAiB;KACzB;IACD,GAAG,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,WAAW,EACT,UAAU,CAAC,KAAK,KAAK,QAAQ;YAC3B,CAAC,CAAC,mCAAmC;YACrC,CAAC,CAAC,wCAAwC;QAC9C,QAAQ,EAAE,KAAc;QACxB,KAAK,EAAE,UAAU,CAAC,KAAK;KACxB,CAAC,CAAC;CACK,CAAC,CAAC;AAEZ,SAAS,MAAM,CAAC,MAAmB,EAAE,UAAyB,EAAE;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,mBAAmB,CAAC;IACjD,MAAM,OAAO,GAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,WAAW,CAAC;QACjB,aAAa,EAAE,CAAC;QAChB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE;YACP,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,EAAE;SACjB;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE;oBACJ;wBACE,IAAI;wBACJ,KAAK,EAAE;4BACL,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;4BACjC,UAAU,EAAE,MAAM;4BAClB,QAAQ,EAAE,EAAE;4BACZ,UAAU,EAAE,GAAG;yBAChB;wBACD,OAAO;qBACR;iBACF;aACF;SACF;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,UAAyB,EAAE;IAC/C,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/E,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,UAAyB,EAAE;IAC9C,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,UAAyB,EAAE;IAClD,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,UAAyB,EAAE;IAClD,OAAO,MAAM,CACX,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,EACvD,OAAO,CACR,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,UAAyB,EAAE;IACrD,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,UAAyB,EAAE;IAC9C,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AACD,MAAM,UAAU,MAAM,CAAC,UAAyB,EAAE;IAChD,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,UAAyB,EAAE;IAC7C,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,UAAyB,EAAE;IACjD,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,SAAS,CAChB,OAAyB,EACzB,IAAY,EACZ,KAAa,EACb,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,UAAkC,EAAE;IAEpC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAC3D,MAAM,IAAI,oBAAoB,CAAC;YAC7B;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,CAAC,QAAQ,CAAC;gBAChB,OAAO,EAAE,qDAAqD;aAC/D;SACF,CAAC,CAAC;IACL,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IACnC,MAAM,OAAO,GACX,OAAO,KAAK,oBAAoB,IAAI,OAAO,KAAK,gBAAgB,CAAC;IACnE,OAAO,WAAW,CAAC;QACjB,aAAa,EAAE,CAAC;QAChB,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE;YACP,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,EAAE;SACjB;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE;oBACJ;wBACE,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE;4BACL,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;4BACtC,QAAQ;4BACR,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;4BAC/B,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;yBAC/B;wBACD,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,gBAAgB;gCACtB,OAAO;gCACP,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;gCAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;gCAC7B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;gCAC1B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;6BACrC;yBACF;qBACF;iBACF;aACF;SACF;QACD,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,UAAkC,EAAE;IACjE,OAAO,SAAS,CACd,oBAAoB,EACpB,YAAY,EACZ,SAAS,EACT,CAAC,EACD,IAAI,EACJ,EAAE,EACF,OAAO,CACR,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,UAAkC,EAAE;IAC/D,OAAO,SAAS,CACd,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,CAAC,EACD,IAAI,EACJ,EAAE,EACF,OAAO,CACR,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,UAAkC,EAAE;IAC/D,OAAO,SAAS,CACd,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,CAAC,EACD,GAAG,EACH,EAAE,EACF,OAAO,CACR,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,UAAkC,EAAE;IAC7D,OAAO,SAAS,CACd,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,CAAC,EACD,GAAG,EACH,EAAE,EACF,OAAO,CACR,CAAC;AACJ,CAAC;AA+BD,MAAM,UAAU,MAAM,CACpB,EAAY,EACZ,OAAoC;IAEpC,MAAM,SAAS,GAAG;QAChB,KAAK;QACL,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,IAAI;QACJ,MAAM;QACN,GAAG;QACH,OAAO;QACP,cAAc;QACd,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,WAAW;QACX,eAAe;QACf,SAAS;QACT,UAAU;QACV,WAAW;QACX,cAAc;QACd,OAAO;KACR,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,6BAA6B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,gGAAgG;IAChG,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,OAAgB,CAAC,CAAC;AACzC,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,mBAAmB,CAAC,EAAY;IAC9C,OAAO,0BAA0B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QAC1D,CAAC,CAAC,WAAW,CAAC,EAAkB,CAAC;QACjC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const GLYPHS: Readonly<Record<string, readonly [number, string, number]>>;
2
+ //# sourceMappingURL=glyphs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyphs.d.ts","sourceRoot":"","sources":["../../../src/renderers/cinematic/glyphs.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM,EAAE,QAAQ,CAC3B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAgFjD,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { deepFreeze } from "../../model/limits.js";
2
+ // Original ConsoleFX polygon lettering, authored on a ten-unit grid in a 100-unit design space.
3
+ // These are not extracted font outlines. Counters use the even-odd fill rule.
4
+ // Each tuple contains its advance, ink path and rightmost ink coordinate.
5
+ // All authored ink stays at x >= 0 and y in [0, 100]; only used glyphs serialize.
6
+ export const GLYPHS = deepFreeze({
7
+ A: [76, "M0 100L30 0H50L70 100H50V80H30L20 100ZM30 60H40V30Z", 70],
8
+ B: [
9
+ 76,
10
+ "M0 0H50L70 20V40L60 50 70 60V90L60 100H0ZM20 20V40H50V30L40 20ZM20 60V80H50V60Z",
11
+ 70,
12
+ ],
13
+ C: [76, "M20 0H70V20H30L20 30V70L30 80H70V100H20L0 80V20Z", 70],
14
+ D: [78, "M0 0H50L80 30V80L50 100H0ZM20 20V80H40L60 70V40L40 20Z", 80],
15
+ E: [70, "M0 0H70V20H20V40H60V60H20V80H70V100H0Z", 70],
16
+ F: [70, "M0 0H70V20H20V40H60V60H20V100H0Z", 70],
17
+ G: [78, "M20 0H80V20H30L20 30V70L30 80H60V60H40V40H80V100H20L0 80V20Z", 80],
18
+ H: [78, "M0 0H20V40H60V0H80V100H60V60H20V100H0Z", 80],
19
+ I: [40, "M0 0H40V20H30V90H40V100H0V90H10V20H0Z", 40],
20
+ J: [68, "M10 0H70V80L50 100H20L0 90V70H20V80H50V20H10Z", 70],
21
+ K: [78, "M0 0H20V40L50 0H80L40 50 80 100H50L20 60V100H0Z", 80],
22
+ L: [68, "M0 0H20V80H70V100H0Z", 70],
23
+ M: [94, "M0 100V0H20L50 50 70 0H90V100H70V40L50 80 20 40V100Z", 90],
24
+ N: [80, "M0 100V0H20L60 60V0H80V100H60L20 40V100Z", 80],
25
+ O: [
26
+ 78,
27
+ "M20 0H60L80 20V80L60 100H20L0 80V20ZM30 20L20 30V80H60V30L50 20Z",
28
+ 80,
29
+ ],
30
+ P: [76, "M0 100V0H50L70 20V50L50 70H20V100ZM20 20V50H50V20Z", 70],
31
+ Q: [
32
+ 82,
33
+ "M20 0H60L80 20V100H60V90L50 100H20L0 80V20ZM30 20L20 30V80H50L40 60H60V30L50 20Z",
34
+ 80,
35
+ ],
36
+ R: [
37
+ 78,
38
+ "M0 100V0H50L70 20V50L60 60 80 100H50L40 70H20V100ZM20 20V50H50V20Z",
39
+ 80,
40
+ ],
41
+ S: [
42
+ 76,
43
+ "M20 0H70V20H30L20 30V40H60L70 60V80L60 100H0V80H50V60H20L0 40V20Z",
44
+ 70,
45
+ ],
46
+ T: [76, "M0 0H70V20H50V100H30V20H0Z", 70],
47
+ U: [78, "M0 0H20V70L30 80H50L60 70V0H80V80L60 100H20L0 80Z", 80],
48
+ V: [78, "M0 0H20L40 70 50 0H80L50 100H30Z", 80],
49
+ W: [
50
+ 104,
51
+ "M0 0H20L30 70 40 20H60L70 70 80 0H100L90 100H70L50 60 40 100H20Z",
52
+ 100,
53
+ ],
54
+ X: [78, "M0 0H30L40 30 50 0H80L50 50 80 100H50L40 70 30 100H0L30 50Z", 80],
55
+ Y: [78, "M0 0H30L40 40 50 0H80L50 60V100H30V60Z", 80],
56
+ Z: [76, "M0 0H70V20L30 80H70V100H0V80L50 20H0Z", 70],
57
+ "0": [76, "M20 0H60L70 20V90L60 100H20L0 90V20ZM30 20L20 30V80H50V20Z", 70],
58
+ "1": [54, "M10 20L30 0H50V100H10V80H20V30L10 40Z", 50],
59
+ "2": [74, "M0 0H50L70 20V40L30 80H70V100H0V80L50 40V30L40 20H0Z", 70],
60
+ "3": [
61
+ 74,
62
+ "M0 0H50L70 20V40L60 50 70 60V80L50 100H0V80H50V70L40 60H20V40H50V20H0Z",
63
+ 70,
64
+ ],
65
+ "4": [76, "M40 0H60V60H70V80H60V100H40V80H0V60ZM40 30L20 60H40Z", 70],
66
+ "5": [74, "M0 0H70V20H20V40H50L70 60V80L50 100H0V80H50V70L40 60H0Z", 70],
67
+ "6": [
68
+ 76,
69
+ "M20 0H70V20H30L20 30V40H60L70 60V80L60 100H20L0 80V20ZM30 60L20 70V80H50V60Z",
70
+ 70,
71
+ ],
72
+ "7": [74, "M0 0H70V20L40 100H10L50 20H0Z", 70],
73
+ "8": [
74
+ 76,
75
+ "M20 0H60L70 20V40L60 50 70 60V80L60 100H20L0 80V60L10 50 0 40V20ZM30 20L20 30V40H50V20ZM30 60L20 70V80H50V60Z",
76
+ 70,
77
+ ],
78
+ "9": [
79
+ 76,
80
+ "M20 0H60L70 20V80L50 100H10V80H50V60L40 70H20L0 50V20ZM30 20L20 30V40L30 50H50V20Z",
81
+ 70,
82
+ ],
83
+ "-": [54, "M0 40H50V60H0Z", 50],
84
+ " ": [38, "", 0],
85
+ });
86
+ //# sourceMappingURL=glyphs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyphs.js","sourceRoot":"","sources":["../../../src/renderers/cinematic/glyphs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { TextRun } from "../../model/types.js";
2
+ import { type CinematicEffect } from "./profiles.js";
3
+ import type { FontMetric } from "../../layout/metrics.js";
4
+ export declare function cinematicEffect(run: TextRun): CinematicEffect | undefined;
5
+ export declare function cinematicLayout(run: TextRun, effect: CinematicEffect, metrics?: FontMetric): {
6
+ direction?: "ltr" | "rtl";
7
+ letters: string[];
8
+ advances: number[];
9
+ faceWidth: number;
10
+ faceHeight: number;
11
+ blur: number;
12
+ depth: number;
13
+ guard: number;
14
+ insetX: number;
15
+ width: number;
16
+ ascent: number;
17
+ descent: number;
18
+ empty: boolean;
19
+ };
20
+ export type CinematicLayout = ReturnType<typeof cinematicLayout>;
21
+ /** Count bounded instances before geometry or SVG strings are allocated. */
22
+ export declare function cinematicElementBound(run: TextRun, effect: CinematicEffect): number;
23
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/renderers/cinematic/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAIzE;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,UAAU;;;;;;;;;;;;;;EAiFrB;AACD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAEjE,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,eAAe,GACtB,MAAM,CAaR"}
@@ -0,0 +1,86 @@
1
+ import { GLYPHS } from "./glyphs.js";
2
+ import { PROFILES } from "./profiles.js";
3
+ export function cinematicEffect(run) {
4
+ return run.effects.find((effect) => effect.kind === "cinematicMetal");
5
+ }
6
+ export function cinematicLayout(run, effect, metrics) {
7
+ const profile = PROFILES[effect.profile];
8
+ const display = profile.angular
9
+ ? run.text.replace(/[a-z]/g, (c) => c.toUpperCase())
10
+ : run.text;
11
+ const empty = !display.trim();
12
+ const letters = empty ? [] : [...display];
13
+ const scale = run.style.fontSize / 100;
14
+ let cursor = 0;
15
+ let inkRight = 0;
16
+ const advances = letters.map((letter) => {
17
+ const advance = profile.angular
18
+ ? GLYPHS[letter][0] * scale
19
+ : run.style.fontSize *
20
+ (/[\silI1.,']/u.test(letter)
21
+ ? 0.32
22
+ : /[MW@]/u.test(letter)
23
+ ? 0.92
24
+ : 0.65);
25
+ inkRight = Math.max(inkRight, cursor + (profile.angular ? GLYPHS[letter][2] * scale : advance));
26
+ cursor += advance + run.style.letterSpacing;
27
+ return advance;
28
+ });
29
+ const faceWidth = metrics && !profile.angular
30
+ ? metrics.advance * profile.xScale
31
+ : Math.max(0, inkRight, cursor - (letters.length ? run.style.letterSpacing : 0)) * profile.xScale;
32
+ const faceHeight = run.style.fontSize * profile.yScale;
33
+ const blur = effect.glow * 6;
34
+ const guard = 3 + blur * 3;
35
+ const depth = Math.floor(effect.depth);
36
+ const side = effect.ornaments
37
+ ? faceWidth * (profile.ornament === "spires" ? 0.07 : 0.03)
38
+ : 0;
39
+ const above = effect.ornaments && profile.ornament === "spires" ? faceHeight * 0.12 : 0;
40
+ const below = effect.ornaments
41
+ ? faceHeight * (profile.ornament === "sweep" ? 0.24 : 0.16)
42
+ : 0;
43
+ const overhang = metrics && !profile.angular
44
+ ? Math.max(0, metrics.inkLeft, metrics.inkRight - metrics.advance) *
45
+ profile.xScale
46
+ : profile.angular
47
+ ? 0
48
+ : run.style.fontSize * (profile.italic ? 0.25 : 0.08);
49
+ const insetX = guard + side + overhang;
50
+ const ascent = Math.max(faceHeight + above, (metrics?.ascent ?? 0) * profile.yScale) +
51
+ guard;
52
+ const descent = Math.max(run.style.fontSize * (profile.angular ? 0 : 0.25), (metrics?.descent ?? 0) * profile.yScale) +
53
+ below +
54
+ depth +
55
+ guard;
56
+ return {
57
+ letters,
58
+ advances,
59
+ faceWidth,
60
+ faceHeight,
61
+ blur,
62
+ depth,
63
+ guard,
64
+ insetX,
65
+ width: empty ? 0 : faceWidth + insetX * 2 + depth,
66
+ ascent: empty ? 0 : ascent,
67
+ descent: empty ? 0 : descent,
68
+ empty,
69
+ ...(metrics?.direction ? { direction: metrics.direction } : {}),
70
+ };
71
+ }
72
+ /** Count bounded instances before geometry or SVG strings are allocated. */
73
+ export function cinematicElementBound(run, effect) {
74
+ if (!run.text.trim())
75
+ return 0;
76
+ const profile = PROFILES[effect.profile];
77
+ const visible = [...run.text.toUpperCase()].filter((c) => c !== " ");
78
+ const letters = profile.angular ? visible.length + new Set(visible).size : 1;
79
+ return (letters +
80
+ Math.floor(effect.depth) +
81
+ 6 +
82
+ profile.stops.length +
83
+ (effect.glow > 0 ? 3 : 0) +
84
+ (effect.ornaments ? 2 : 0));
85
+ }
86
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/renderers/cinematic/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { Effect } from "../../model/types.js";
2
+ export type CinematicEffect = Extract<Effect, {
3
+ kind: "cinematicMetal";
4
+ }>;
5
+ export declare const PROFILES: {
6
+ readonly "lightning-metal-v1": {
7
+ readonly angular: true;
8
+ readonly xScale: 1;
9
+ readonly yScale: 1;
10
+ readonly italic: false;
11
+ readonly stops: readonly [readonly [0, "#eff"], readonly [0.27, "#8bd"], readonly [0.48, "#fff"], readonly [0.5, "#246"], readonly [0.73, "#48b"], readonly [1, "#def"]];
12
+ readonly shadow: "#123";
13
+ readonly edge: "#011";
14
+ readonly ornament: "bolts";
15
+ readonly ornamentPath: "M-3 22L15 34H6L30 55L-1 47H2ZM103 20L85 36H95L73 60L102 45H99Z";
16
+ };
17
+ readonly "ice-cathedral-v1": {
18
+ readonly angular: false;
19
+ readonly xScale: 0.82;
20
+ readonly yScale: 1.3;
21
+ readonly italic: false;
22
+ readonly stops: readonly [readonly [0, "#fff"], readonly [0.38, "#cef"], readonly [0.5, "#7ac"], readonly [0.52, "#eff"], readonly [0.79, "#8ce"], readonly [1, "#eff"]];
23
+ readonly shadow: "#146";
24
+ readonly edge: "#023";
25
+ readonly ornament: "spires";
26
+ readonly ornamentPath: "M-7 112L-5 -12L-3 112L-5 80ZM103 112L105 -12L107 112L105 80Z";
27
+ };
28
+ readonly "liquid-chrome-v1": {
29
+ readonly angular: false;
30
+ readonly xScale: 1;
31
+ readonly yScale: 1;
32
+ readonly italic: true;
33
+ readonly stops: readonly [readonly [0, "#fff"], readonly [0.38, "#9ab"], readonly [0.48, "#eff"], readonly [0.49, "#123"], readonly [0.55, "#345"], readonly [0.86, "#bcd"], readonly [1, "#eff"]];
34
+ readonly shadow: "#245";
35
+ readonly edge: "#011";
36
+ readonly ornament: "sweep";
37
+ readonly ornamentPath: "M-3 120Q46 109 103 103L85 116Q38 118 -3 124Z";
38
+ };
39
+ readonly "molten-gold-v1": {
40
+ readonly angular: true;
41
+ readonly xScale: 1;
42
+ readonly yScale: 1;
43
+ readonly italic: false;
44
+ readonly stops: readonly [readonly [0, "#ffc"], readonly [0.32, "#fd8"], readonly [0.48, "#fb3"], readonly [0.5, "#921"], readonly [0.69, "#e51"], readonly [0.86, "#fb4"], readonly [1, "#fea"]];
45
+ readonly shadow: "#610";
46
+ readonly edge: "#200";
47
+ readonly ornament: "flames";
48
+ readonly ornamentPath: "M-3 112L14 40L10 80L28 60L19 116ZM103 112L86 40L90 80L72 60L81 116Z";
49
+ };
50
+ };
51
+ //# sourceMappingURL=profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../src/renderers/cinematic/profiles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAC;AAC1E,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EkC,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { deepFreeze } from "../../model/limits.js";
2
+ export const PROFILES = deepFreeze({
3
+ "lightning-metal-v1": {
4
+ angular: true,
5
+ xScale: 1,
6
+ yScale: 1,
7
+ italic: false,
8
+ stops: [
9
+ [0, "#eff"],
10
+ [0.27, "#8bd"],
11
+ [0.48, "#fff"],
12
+ [0.5, "#246"],
13
+ [0.73, "#48b"],
14
+ [1, "#def"],
15
+ ],
16
+ shadow: "#123",
17
+ edge: "#011",
18
+ ornament: "bolts",
19
+ ornamentPath: "M-3 22L15 34H6L30 55L-1 47H2ZM103 20L85 36H95L73 60L102 45H99Z",
20
+ },
21
+ "ice-cathedral-v1": {
22
+ angular: false,
23
+ xScale: 0.82,
24
+ yScale: 1.3,
25
+ italic: false,
26
+ stops: [
27
+ [0, "#fff"],
28
+ [0.38, "#cef"],
29
+ [0.5, "#7ac"],
30
+ [0.52, "#eff"],
31
+ [0.79, "#8ce"],
32
+ [1, "#eff"],
33
+ ],
34
+ shadow: "#146",
35
+ edge: "#023",
36
+ ornament: "spires",
37
+ ornamentPath: "M-7 112L-5 -12L-3 112L-5 80ZM103 112L105 -12L107 112L105 80Z",
38
+ },
39
+ "liquid-chrome-v1": {
40
+ angular: false,
41
+ xScale: 1,
42
+ yScale: 1,
43
+ italic: true,
44
+ stops: [
45
+ [0, "#fff"],
46
+ [0.38, "#9ab"],
47
+ [0.48, "#eff"],
48
+ [0.49, "#123"],
49
+ [0.55, "#345"],
50
+ [0.86, "#bcd"],
51
+ [1, "#eff"],
52
+ ],
53
+ shadow: "#245",
54
+ edge: "#011",
55
+ ornament: "sweep",
56
+ ornamentPath: "M-3 120Q46 109 103 103L85 116Q38 118 -3 124Z",
57
+ },
58
+ "molten-gold-v1": {
59
+ angular: true,
60
+ xScale: 1,
61
+ yScale: 1,
62
+ italic: false,
63
+ stops: [
64
+ [0, "#ffc"],
65
+ [0.32, "#fd8"],
66
+ [0.48, "#fb3"],
67
+ [0.5, "#921"],
68
+ [0.69, "#e51"],
69
+ [0.86, "#fb4"],
70
+ [1, "#fea"],
71
+ ],
72
+ shadow: "#610",
73
+ edge: "#200",
74
+ ornament: "flames",
75
+ ornamentPath: "M-3 112L14 40L10 80L28 60L19 116ZM103 112L86 40L90 80L72 60L81 116Z",
76
+ },
77
+ });
78
+ //# sourceMappingURL=profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/renderers/cinematic/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;IACjC,oBAAoB,EAAE;QACpB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,KAAK;QACb,KAAK,EAAE;YACL,CAAC,CAAC,EAAE,MAAM,CAAC;YACX,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,GAAG,EAAE,MAAM,CAAC;YACb,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,CAAC,EAAE,MAAM,CAAC;SACZ;QACD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO;QACjB,YAAY,EACV,gEAAgE;KACnE;IACD,kBAAkB,EAAE;QAClB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,KAAK;QACb,KAAK,EAAE;YACL,CAAC,CAAC,EAAE,MAAM,CAAC;YACX,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,GAAG,EAAE,MAAM,CAAC;YACb,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,CAAC,EAAE,MAAM,CAAC;SACZ;QACD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ;QAClB,YAAY,EACV,8DAA8D;KACjE;IACD,kBAAkB,EAAE;QAClB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE;YACL,CAAC,CAAC,EAAE,MAAM,CAAC;YACX,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,CAAC,EAAE,MAAM,CAAC;SACZ;QACD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,8CAA8C;KAC7D;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,KAAK;QACb,KAAK,EAAE;YACL,CAAC,CAAC,EAAE,MAAM,CAAC;YACX,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,GAAG,EAAE,MAAM,CAAC;YACb,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,CAAC,EAAE,MAAM,CAAC;SACZ;QACD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ;QAClB,YAAY,EACV,qEAAqE;KACxE;CACmD,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TextRun } from "../../model/types.js";
2
+ import { type CinematicEffect } from "./profiles.js";
3
+ import type { CinematicLayout } from "./layout.js";
4
+ export declare function renderCinematic(run: TextRun, effect: CinematicEffect, layout: CinematicLayout, id: string, x: number, baseline: number, fontStack: string, fitted?: boolean): {
5
+ definitions: string;
6
+ markup: string;
7
+ };
8
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/renderers/cinematic/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,UAAQ;;;EA6Df"}