@clipkit/runtime 1.0.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 (219) hide show
  1. package/LICENSE +54 -0
  2. package/README.md +98 -0
  3. package/dist/animation/easings.d.ts +9 -0
  4. package/dist/animation/easings.d.ts.map +1 -0
  5. package/dist/animation/easings.js +230 -0
  6. package/dist/animation/easings.js.map +1 -0
  7. package/dist/animation/expr.d.ts +44 -0
  8. package/dist/animation/expr.d.ts.map +1 -0
  9. package/dist/animation/expr.js +236 -0
  10. package/dist/animation/expr.js.map +1 -0
  11. package/dist/animation/keyframes.d.ts +23 -0
  12. package/dist/animation/keyframes.d.ts.map +1 -0
  13. package/dist/animation/keyframes.js +117 -0
  14. package/dist/animation/keyframes.js.map +1 -0
  15. package/dist/animation/motion-path.d.ts +18 -0
  16. package/dist/animation/motion-path.d.ts.map +1 -0
  17. package/dist/animation/motion-path.js +269 -0
  18. package/dist/animation/motion-path.js.map +1 -0
  19. package/dist/animation/noise1d.d.ts +5 -0
  20. package/dist/animation/noise1d.d.ts.map +1 -0
  21. package/dist/animation/noise1d.js +27 -0
  22. package/dist/animation/noise1d.js.map +1 -0
  23. package/dist/animation/presets.d.ts +60 -0
  24. package/dist/animation/presets.d.ts.map +1 -0
  25. package/dist/animation/presets.js +221 -0
  26. package/dist/animation/presets.js.map +1 -0
  27. package/dist/assets/cache.d.ts +18 -0
  28. package/dist/assets/cache.d.ts.map +1 -0
  29. package/dist/assets/cache.js +56 -0
  30. package/dist/assets/cache.js.map +1 -0
  31. package/dist/assets/fonts.d.ts +20 -0
  32. package/dist/assets/fonts.d.ts.map +1 -0
  33. package/dist/assets/fonts.js +127 -0
  34. package/dist/assets/fonts.js.map +1 -0
  35. package/dist/assets/loader.d.ts +18 -0
  36. package/dist/assets/loader.d.ts.map +1 -0
  37. package/dist/assets/loader.js +87 -0
  38. package/dist/assets/loader.js.map +1 -0
  39. package/dist/assets/lut.d.ts +5 -0
  40. package/dist/assets/lut.d.ts.map +1 -0
  41. package/dist/assets/lut.js +77 -0
  42. package/dist/assets/lut.js.map +1 -0
  43. package/dist/assets/media-time.d.ts +31 -0
  44. package/dist/assets/media-time.d.ts.map +1 -0
  45. package/dist/assets/media-time.js +65 -0
  46. package/dist/assets/media-time.js.map +1 -0
  47. package/dist/assets/mp4-frame-source.d.ts +44 -0
  48. package/dist/assets/mp4-frame-source.d.ts.map +1 -0
  49. package/dist/assets/mp4-frame-source.js +387 -0
  50. package/dist/assets/mp4-frame-source.js.map +1 -0
  51. package/dist/audio/encoder.d.ts +31 -0
  52. package/dist/audio/encoder.d.ts.map +1 -0
  53. package/dist/audio/encoder.js +96 -0
  54. package/dist/audio/encoder.js.map +1 -0
  55. package/dist/audio/fades.d.ts +16 -0
  56. package/dist/audio/fades.d.ts.map +1 -0
  57. package/dist/audio/fades.js +43 -0
  58. package/dist/audio/fades.js.map +1 -0
  59. package/dist/audio/limiter.d.ts +8 -0
  60. package/dist/audio/limiter.d.ts.map +1 -0
  61. package/dist/audio/limiter.js +39 -0
  62. package/dist/audio/limiter.js.map +1 -0
  63. package/dist/audio/loader.d.ts +6 -0
  64. package/dist/audio/loader.d.ts.map +1 -0
  65. package/dist/audio/loader.js +42 -0
  66. package/dist/audio/loader.js.map +1 -0
  67. package/dist/audio/mixer.d.ts +17 -0
  68. package/dist/audio/mixer.d.ts.map +1 -0
  69. package/dist/audio/mixer.js +204 -0
  70. package/dist/audio/mixer.js.map +1 -0
  71. package/dist/audio/varispeed.d.ts +24 -0
  72. package/dist/audio/varispeed.d.ts.map +1 -0
  73. package/dist/audio/varispeed.js +114 -0
  74. package/dist/audio/varispeed.js.map +1 -0
  75. package/dist/audio/wav.d.ts +6 -0
  76. package/dist/audio/wav.d.ts.map +1 -0
  77. package/dist/audio/wav.js +62 -0
  78. package/dist/audio/wav.js.map +1 -0
  79. package/dist/backend/backend.d.ts +579 -0
  80. package/dist/backend/backend.d.ts.map +1 -0
  81. package/dist/backend/backend.js +17 -0
  82. package/dist/backend/backend.js.map +1 -0
  83. package/dist/backend/webgl-backend.d.ts +97 -0
  84. package/dist/backend/webgl-backend.d.ts.map +1 -0
  85. package/dist/backend/webgl-backend.js +2142 -0
  86. package/dist/backend/webgl-backend.js.map +1 -0
  87. package/dist/backend/webgpu-backend.d.ts +121 -0
  88. package/dist/backend/webgpu-backend.d.ts.map +1 -0
  89. package/dist/backend/webgpu-backend.js +2481 -0
  90. package/dist/backend/webgpu-backend.js.map +1 -0
  91. package/dist/compositor/bitfont.d.ts +8 -0
  92. package/dist/compositor/bitfont.d.ts.map +1 -0
  93. package/dist/compositor/bitfont.js +52 -0
  94. package/dist/compositor/bitfont.js.map +1 -0
  95. package/dist/compositor/camera.d.ts +5 -0
  96. package/dist/compositor/camera.d.ts.map +1 -0
  97. package/dist/compositor/camera.js +114 -0
  98. package/dist/compositor/camera.js.map +1 -0
  99. package/dist/compositor/color.d.ts +26 -0
  100. package/dist/compositor/color.d.ts.map +1 -0
  101. package/dist/compositor/color.js +189 -0
  102. package/dist/compositor/color.js.map +1 -0
  103. package/dist/compositor/element-renderers/caption.d.ts +4 -0
  104. package/dist/compositor/element-renderers/caption.d.ts.map +1 -0
  105. package/dist/compositor/element-renderers/caption.js +376 -0
  106. package/dist/compositor/element-renderers/caption.js.map +1 -0
  107. package/dist/compositor/element-renderers/group.d.ts +12 -0
  108. package/dist/compositor/element-renderers/group.d.ts.map +1 -0
  109. package/dist/compositor/element-renderers/group.js +259 -0
  110. package/dist/compositor/element-renderers/group.js.map +1 -0
  111. package/dist/compositor/element-renderers/image.d.ts +4 -0
  112. package/dist/compositor/element-renderers/image.d.ts.map +1 -0
  113. package/dist/compositor/element-renderers/image.js +97 -0
  114. package/dist/compositor/element-renderers/image.js.map +1 -0
  115. package/dist/compositor/element-renderers/lit.d.ts +6 -0
  116. package/dist/compositor/element-renderers/lit.d.ts.map +1 -0
  117. package/dist/compositor/element-renderers/lit.js +82 -0
  118. package/dist/compositor/element-renderers/lit.js.map +1 -0
  119. package/dist/compositor/element-renderers/particles.d.ts +4 -0
  120. package/dist/compositor/element-renderers/particles.d.ts.map +1 -0
  121. package/dist/compositor/element-renderers/particles.js +212 -0
  122. package/dist/compositor/element-renderers/particles.js.map +1 -0
  123. package/dist/compositor/element-renderers/shape.d.ts +4 -0
  124. package/dist/compositor/element-renderers/shape.d.ts.map +1 -0
  125. package/dist/compositor/element-renderers/shape.js +171 -0
  126. package/dist/compositor/element-renderers/shape.js.map +1 -0
  127. package/dist/compositor/element-renderers/svg.d.ts +4 -0
  128. package/dist/compositor/element-renderers/svg.d.ts.map +1 -0
  129. package/dist/compositor/element-renderers/svg.js +210 -0
  130. package/dist/compositor/element-renderers/svg.js.map +1 -0
  131. package/dist/compositor/element-renderers/text.d.ts +25 -0
  132. package/dist/compositor/element-renderers/text.d.ts.map +1 -0
  133. package/dist/compositor/element-renderers/text.js +1358 -0
  134. package/dist/compositor/element-renderers/text.js.map +1 -0
  135. package/dist/compositor/element-renderers/video.d.ts +12 -0
  136. package/dist/compositor/element-renderers/video.d.ts.map +1 -0
  137. package/dist/compositor/element-renderers/video.js +109 -0
  138. package/dist/compositor/element-renderers/video.js.map +1 -0
  139. package/dist/compositor/fit.d.ts +18 -0
  140. package/dist/compositor/fit.d.ts.map +1 -0
  141. package/dist/compositor/fit.js +106 -0
  142. package/dist/compositor/fit.js.map +1 -0
  143. package/dist/compositor/lighting.d.ts +63 -0
  144. package/dist/compositor/lighting.d.ts.map +1 -0
  145. package/dist/compositor/lighting.js +141 -0
  146. package/dist/compositor/lighting.js.map +1 -0
  147. package/dist/compositor/mat4.d.ts +88 -0
  148. package/dist/compositor/mat4.d.ts.map +1 -0
  149. package/dist/compositor/mat4.js +245 -0
  150. package/dist/compositor/mat4.js.map +1 -0
  151. package/dist/compositor/project.d.ts +24 -0
  152. package/dist/compositor/project.d.ts.map +1 -0
  153. package/dist/compositor/project.js +105 -0
  154. package/dist/compositor/project.js.map +1 -0
  155. package/dist/compositor/render-context.d.ts +194 -0
  156. package/dist/compositor/render-context.d.ts.map +1 -0
  157. package/dist/compositor/render-context.js +10 -0
  158. package/dist/compositor/render-context.js.map +1 -0
  159. package/dist/compositor/resolve.d.ts +80 -0
  160. package/dist/compositor/resolve.d.ts.map +1 -0
  161. package/dist/compositor/resolve.js +276 -0
  162. package/dist/compositor/resolve.js.map +1 -0
  163. package/dist/compositor/scene.d.ts +10 -0
  164. package/dist/compositor/scene.d.ts.map +1 -0
  165. package/dist/compositor/scene.js +658 -0
  166. package/dist/compositor/scene.js.map +1 -0
  167. package/dist/compositor/transform.d.ts +73 -0
  168. package/dist/compositor/transform.d.ts.map +1 -0
  169. package/dist/compositor/transform.js +229 -0
  170. package/dist/compositor/transform.js.map +1 -0
  171. package/dist/compositor/unit.d.ts +27 -0
  172. package/dist/compositor/unit.d.ts.map +1 -0
  173. package/dist/compositor/unit.js +74 -0
  174. package/dist/compositor/unit.js.map +1 -0
  175. package/dist/encoder/exporter.d.ts +95 -0
  176. package/dist/encoder/exporter.d.ts.map +1 -0
  177. package/dist/encoder/exporter.js +341 -0
  178. package/dist/encoder/exporter.js.map +1 -0
  179. package/dist/encoder/index.d.ts +3 -0
  180. package/dist/encoder/index.d.ts.map +1 -0
  181. package/dist/encoder/index.js +2 -0
  182. package/dist/encoder/index.js.map +1 -0
  183. package/dist/index.d.ts +12 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +27 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/logger.d.ts +13 -0
  188. package/dist/logger.d.ts.map +1 -0
  189. package/dist/logger.js +32 -0
  190. package/dist/logger.js.map +1 -0
  191. package/dist/runtime.d.ts +216 -0
  192. package/dist/runtime.d.ts.map +1 -0
  193. package/dist/runtime.js +1012 -0
  194. package/dist/runtime.js.map +1 -0
  195. package/dist/svg/morph.d.ts +6 -0
  196. package/dist/svg/morph.d.ts.map +1 -0
  197. package/dist/svg/morph.js +62 -0
  198. package/dist/svg/morph.js.map +1 -0
  199. package/dist/svg/svg-renderer.d.ts +18 -0
  200. package/dist/svg/svg-renderer.d.ts.map +1 -0
  201. package/dist/svg/svg-renderer.js +142 -0
  202. package/dist/svg/svg-renderer.js.map +1 -0
  203. package/dist/text/caption-chunk.d.ts +17 -0
  204. package/dist/text/caption-chunk.d.ts.map +1 -0
  205. package/dist/text/caption-chunk.js +76 -0
  206. package/dist/text/caption-chunk.js.map +1 -0
  207. package/dist/text/font-atlas.d.ts +63 -0
  208. package/dist/text/font-atlas.d.ts.map +1 -0
  209. package/dist/text/font-atlas.js +225 -0
  210. package/dist/text/font-atlas.js.map +1 -0
  211. package/dist/text/measure.d.ts +38 -0
  212. package/dist/text/measure.d.ts.map +1 -0
  213. package/dist/text/measure.js +164 -0
  214. package/dist/text/measure.js.map +1 -0
  215. package/dist/text/text-animation.d.ts +52 -0
  216. package/dist/text/text-animation.d.ts.map +1 -0
  217. package/dist/text/text-animation.js +133 -0
  218. package/dist/text/text-animation.js.map +1 -0
  219. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../src/compositor/scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ export type Mat4 = Float32Array;
2
+ /** Identity 4×4 matrix. */
3
+ export declare function identity(): Mat4;
4
+ /**
5
+ * Build the transform that places a unit quad (-1..+1) at a pixel-space
6
+ * rectangle, expressed in NDC.
7
+ *
8
+ * @param cx Rectangle center X in canvas pixels.
9
+ * @param cy Rectangle center Y in canvas pixels.
10
+ * @param w Rectangle width in canvas pixels.
11
+ * @param h Rectangle height in canvas pixels.
12
+ * @param rotation Rotation in degrees, around the rectangle center.
13
+ * @param canvasW Canvas (composition) width in pixels.
14
+ * @param canvasH Canvas (composition) height in pixels.
15
+ */
16
+ export declare function composeQuadTransform(cx: number, cy: number, w: number, h: number, rotation: number, canvasW: number, canvasH: number, skewXDeg?: number, skewYDeg?: number,
17
+ /**
18
+ * Negate the output Y axis. Used when rendering into a WebGL
19
+ * framebuffer texture: GL stores texel row 0 at the BOTTOM, so
20
+ * without the flip the rendered layer samples upside-down relative
21
+ * to uploaded images. WebGPU render targets don't need this.
22
+ */
23
+ flipY?: boolean): Mat4;
24
+ /**
25
+ * Build the PIXEL-SPACE matrix that places the shared unit quad
26
+ * (a_pos ∈ [-1, +1]², Y-up) at a pixel rectangle with the full CKP/1.0
27
+ * 3D local transform (§4.4.1):
28
+ *
29
+ * L = T(cx, cy, z) · Rz(θ) · Ry(β) · Rx(α) · K(skewX, skewY) · S(w/2, h/2) · F
30
+ *
31
+ * F converts the quad's Y-up convention to Y-down pixel space; K is the
32
+ * CSS skew (x += tan(skewX)·y, y += tan(skewY)·x in Y-down pixels) —
33
+ * for α = β = z = 0 this reproduces composeQuadTransform's geometry
34
+ * exactly (verified by the 3D probes' z_rotation-alias hash check at
35
+ * the resolution level — the 2D fast path never routes through here).
36
+ *
37
+ * Output is f64 number[16] column-major, Y-down pixel coords, z in
38
+ * pixels (+z toward the viewer). Multiply with the model chain, then
39
+ * feed projectPixelMatrix to reach the shader.
40
+ */
41
+ export declare function quadMatrix3D(cx: number, cy: number, w: number, h: number, rotationDeg: number, skewXDeg: number, skewYDeg: number, xRotDeg: number, yRotDeg: number, z: number): number[];
42
+ /**
43
+ * Project a pixel-space matrix (from quadMatrix3D · model chain ·
44
+ * optional camera) to the surface's clip space: x/y map to NDC, w is
45
+ * preserved for the rasterizer's perspective divide, and clip z is
46
+ * zeroed (paint-order compositing — depth never clips, §4.4.3).
47
+ */
48
+ export declare function projectPixelMatrix(m: ArrayLike<number>, surfaceW: number, surfaceH: number, flipY?: boolean): Mat4;
49
+ /**
50
+ * Convert an anchor-based pixel position to the rectangle center.
51
+ *
52
+ * The schema places elements by their anchor (0..1) within the element.
53
+ * x_anchor: 0 means `x` is the left edge; 0.5 means `x` is the center;
54
+ * 1 means `x` is the right edge.
55
+ */
56
+ export declare function anchorToCenter(x: number, y: number, w: number, h: number, xAnchor: number, yAnchor: number): {
57
+ cx: number;
58
+ cy: number;
59
+ };
60
+ /**
61
+ * Rescale a pane→surface homography (column-major 3×3, LOGICAL px on
62
+ * both sides) to physical px on both sides:
63
+ * H' = diag(pr, pr, 1) · H · diag(1/pr, 1/pr, 1).
64
+ * The glass shader works in physical px throughout (paneHalf, radii
65
+ * and shadow params are pre-scaled by the pixel ratio).
66
+ */
67
+ export declare function homographyToPhysical(h: ArrayLike<number>, pr: number): Float32Array;
68
+ /**
69
+ * Invert a column-major 3×3. Returns null when singular (edge-on
70
+ * pane — the §4.7 degenerate case: draw nothing).
71
+ */
72
+ export declare function invertHomography(m: ArrayLike<number>): Float32Array | null;
73
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/compositor/transform.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC;AAEhC,2BAA2B;AAC3B,wBAAgB,QAAQ,IAAI,IAAI,CAQ/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAU,EACpB,QAAQ,GAAE,MAAU;AACpB;;;;;GAKG;AACH,KAAK,GAAE,OAAe,GACrB,IAAI,CAiEN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,GACR,MAAM,EAAE,CA2CV;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,OAAe,GACrB,IAAI,CAeN;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAK5B;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAMnF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,GAAG,IAAI,CAgB1E"}
@@ -0,0 +1,229 @@
1
+ // 4×4 transform matrix utilities for compositor → NDC.
2
+ //
3
+ // The matrix is column-major (matching WGSL `mat4x4<f32>` and GLSL ES 3.0
4
+ // `mat4`). All operations return new Float32Array(16) values — no mutation.
5
+ //
6
+ // The unit quad we draw spans NDC (-1, -1) to (+1, +1). composeQuadTransform
7
+ // takes a pixel-space rectangle (centerX, centerY, width, height) plus
8
+ // rotation and produces a matrix that maps the unit quad to that rectangle
9
+ // in NDC space. Y is flipped (canvas Y grows down, NDC Y grows up).
10
+ /** Identity 4×4 matrix. */
11
+ export function identity() {
12
+ // prettier-ignore
13
+ return new Float32Array([
14
+ 1, 0, 0, 0,
15
+ 0, 1, 0, 0,
16
+ 0, 0, 1, 0,
17
+ 0, 0, 0, 1,
18
+ ]);
19
+ }
20
+ /**
21
+ * Build the transform that places a unit quad (-1..+1) at a pixel-space
22
+ * rectangle, expressed in NDC.
23
+ *
24
+ * @param cx Rectangle center X in canvas pixels.
25
+ * @param cy Rectangle center Y in canvas pixels.
26
+ * @param w Rectangle width in canvas pixels.
27
+ * @param h Rectangle height in canvas pixels.
28
+ * @param rotation Rotation in degrees, around the rectangle center.
29
+ * @param canvasW Canvas (composition) width in pixels.
30
+ * @param canvasH Canvas (composition) height in pixels.
31
+ */
32
+ export function composeQuadTransform(cx, cy, w, h, rotation, canvasW, canvasH, skewXDeg = 0, skewYDeg = 0,
33
+ /**
34
+ * Negate the output Y axis. Used when rendering into a WebGL
35
+ * framebuffer texture: GL stores texel row 0 at the BOTTOM, so
36
+ * without the flip the rendered layer samples upside-down relative
37
+ * to uploaded images. WebGPU render targets don't need this.
38
+ */
39
+ flipY = false) {
40
+ // Pixel center → NDC. NDC X spans [-1, +1] over [0, canvasW] pixels.
41
+ // Y is flipped: pixel y=0 → NDC y=+1, pixel y=canvasH → NDC y=-1.
42
+ const ndcX = (cx / canvasW) * 2 - 1;
43
+ const ndcY = -((cy / canvasH) * 2 - 1);
44
+ // Composition (right-to-left, applied to the unit-quad input):
45
+ //
46
+ // D(2/canvasW, -2/canvasH) · R(θ) · D(w/2, h/2) · SkewX(φ)
47
+ // └─ pixel → NDC + Y flip ┘ └─ rotate┘ └─ pixel size ┘ └─ shear ─┘
48
+ //
49
+ // SkewX runs on the un-scaled unit quad: a vertex (px, py) becomes
50
+ // (px + py·tan(φ), py). Composing with scale + rotate + NDC produces
51
+ // a parallelogram in screen space whose top edge is sheared by w·tan(φ)
52
+ // pixels relative to the bottom.
53
+ //
54
+ // R is [[cos, -sin], [sin, cos]] in Y-down screen space — same CW
55
+ // convention CSS rotate() uses. The unit quad's Y-up convention is
56
+ // absorbed by the Y flip in the NDC step (the -2/canvasH below).
57
+ const rad = (rotation * Math.PI) / 180;
58
+ const cos = Math.cos(rad);
59
+ const sin = Math.sin(rad);
60
+ // CSS skewX uses Y-down (positive Y = bottom) while our unit quad is
61
+ // Y-up (a_pos.y = +1 = top). Negate so the protocol's `skew_x`
62
+ // follows CSS semantics: positive shears bottom right, negative
63
+ // shears bottom left — matching `transform: skewX(...)`.
64
+ const tanSkew = Math.tan((-skewXDeg * Math.PI) / 180);
65
+ const col0x = (w * cos) / canvasW;
66
+ const col0y = -(w * sin) / canvasH;
67
+ const col1xNoSkew = (h * sin) / canvasW;
68
+ const col1yNoSkew = (h * cos) / canvasH;
69
+ // CSS skewX shifts X by `tan(angle) · height`, not `tan(angle) ·
70
+ // width`. The skew offset vector points along the rotated X axis
71
+ // with magnitude proportional to h — using col0 (which is w-scaled)
72
+ // would make the slant grow with the band's WIDTH, so longer text
73
+ // looked dramatically more tilted than short text at the same
74
+ // nominal angle. Scale by h/w to get the height-scaled X direction.
75
+ const hOverW = w !== 0 ? h / w : 0;
76
+ const col1x = col1xNoSkew + tanSkew * col0x * hOverW;
77
+ const col1y = col1yNoSkew + tanSkew * col0y * hOverW;
78
+ // CSS skewY shifts Y by `tan(angle) · width` — the mirror of skewX.
79
+ // The local +Y(down) direction in output space is -col1NoSkew (the
80
+ // unit quad's uy=+1 maps to local -h/2 after the Y flip), so a
81
+ // CSS-positive skewY (right edge moves down) subtracts the
82
+ // width-scaled col1NoSkew direction from col0.
83
+ const tanSkewY = Math.tan((skewYDeg * Math.PI) / 180);
84
+ const wOverH = h !== 0 ? w / h : 0;
85
+ const col0xSkewed = col0x - tanSkewY * col1xNoSkew * wOverH;
86
+ const col0ySkewed = col0y - tanSkewY * col1yNoSkew * wOverH;
87
+ const ySign = flipY ? -1 : 1;
88
+ // prettier-ignore
89
+ return new Float32Array([
90
+ // column 0 — what unit-quad (1, 0) contributes (skewY-sheared)
91
+ col0xSkewed, col0ySkewed * ySign, 0, 0,
92
+ // column 1 — what unit-quad (0, 1) contributes (skewX-sheared)
93
+ col1x, col1y * ySign, 0, 0,
94
+ // column 2 — Z axis untouched
95
+ 0, 0, 1, 0,
96
+ // column 3 — translation to NDC center
97
+ ndcX, ndcY * ySign, 0, 1,
98
+ ]);
99
+ }
100
+ /**
101
+ * Build the PIXEL-SPACE matrix that places the shared unit quad
102
+ * (a_pos ∈ [-1, +1]², Y-up) at a pixel rectangle with the full CKP/1.0
103
+ * 3D local transform (§4.4.1):
104
+ *
105
+ * L = T(cx, cy, z) · Rz(θ) · Ry(β) · Rx(α) · K(skewX, skewY) · S(w/2, h/2) · F
106
+ *
107
+ * F converts the quad's Y-up convention to Y-down pixel space; K is the
108
+ * CSS skew (x += tan(skewX)·y, y += tan(skewY)·x in Y-down pixels) —
109
+ * for α = β = z = 0 this reproduces composeQuadTransform's geometry
110
+ * exactly (verified by the 3D probes' z_rotation-alias hash check at
111
+ * the resolution level — the 2D fast path never routes through here).
112
+ *
113
+ * Output is f64 number[16] column-major, Y-down pixel coords, z in
114
+ * pixels (+z toward the viewer). Multiply with the model chain, then
115
+ * feed projectPixelMatrix to reach the shader.
116
+ */
117
+ export function quadMatrix3D(cx, cy, w, h, rotationDeg, skewXDeg, skewYDeg, xRotDeg, yRotDeg, z) {
118
+ const rz = (rotationDeg * Math.PI) / 180;
119
+ const rx = (xRotDeg * Math.PI) / 180;
120
+ const ry = (yRotDeg * Math.PI) / 180;
121
+ const cz = Math.cos(rz), sz = Math.sin(rz);
122
+ const cxr = Math.cos(rx), sxr = Math.sin(rx);
123
+ const cyr = Math.cos(ry), syr = Math.sin(ry);
124
+ const tanX = Math.tan((skewXDeg * Math.PI) / 180);
125
+ const tanY = Math.tan((skewYDeg * Math.PI) / 180);
126
+ // Basis vectors of K·S·F applied to a_pos (1,0) and (0,1), plus z.
127
+ // a_pos (1,0) → S·F → (w/2, 0) → K → (w/2, tanY·w/2)
128
+ // a_pos (0,1) → S·F → (0, -h/2) → K → (-tanX·h/2, -h/2)
129
+ const b0x = w / 2, b0y = (tanY * w) / 2;
130
+ const b1x = (-tanX * h) / 2, b1y = -h / 2;
131
+ // Rotate each basis vector (z = 0 in the element plane) through
132
+ // Rz·Ry·Rx. Rx: (x, y·c−z·s, y·s+z·c); Ry: (x·c+z·s, y, −x·s+z·c);
133
+ // Rz (CW in Y-down): (x·c − y·s, x·s + y·c, z).
134
+ const rot = (x, y) => {
135
+ // Rx
136
+ const y1 = y * cxr;
137
+ const z1 = y * sxr;
138
+ // Ry
139
+ const x2 = x * cyr + z1 * syr;
140
+ const z2 = -x * syr + z1 * cyr;
141
+ // Rz
142
+ return [x2 * cz - y1 * sz, x2 * sz + y1 * cz, z2];
143
+ };
144
+ const [c0x, c0y, c0z] = rot(b0x, b0y);
145
+ const [c1x, c1y, c1z] = rot(b1x, b1y);
146
+ // prettier-ignore
147
+ return [
148
+ c0x, c0y, c0z, 0,
149
+ c1x, c1y, c1z, 0,
150
+ // The element plane's normal (Rz·Ry·Rx applied to ẑ). The flat quad
151
+ // itself never reads it (a_pos has z = 0), but parent·child mat4
152
+ // multiplication does — nested 3D chains route the child's z
153
+ // components through this column, so it must be exact.
154
+ syr * cxr * cz + sxr * sz, syr * cxr * sz - sxr * cz, cyr * cxr, 0,
155
+ cx, cy, z, 1,
156
+ ];
157
+ }
158
+ /**
159
+ * Project a pixel-space matrix (from quadMatrix3D · model chain ·
160
+ * optional camera) to the surface's clip space: x/y map to NDC, w is
161
+ * preserved for the rasterizer's perspective divide, and clip z is
162
+ * zeroed (paint-order compositing — depth never clips, §4.4.3).
163
+ */
164
+ export function projectPixelMatrix(m, surfaceW, surfaceH, flipY = false) {
165
+ const sy = flipY ? -1 : 1;
166
+ const kx = 2 / surfaceW;
167
+ const ky = (-2 / surfaceH) * sy;
168
+ const out = new Float32Array(16);
169
+ for (let c = 0; c < 4; c++) {
170
+ const mx = m[c * 4];
171
+ const my = m[c * 4 + 1];
172
+ const mw = m[c * 4 + 3];
173
+ out[c * 4] = kx * mx - mw;
174
+ out[c * 4 + 1] = ky * my + sy * mw;
175
+ out[c * 4 + 2] = 0;
176
+ out[c * 4 + 3] = mw;
177
+ }
178
+ return out;
179
+ }
180
+ /**
181
+ * Convert an anchor-based pixel position to the rectangle center.
182
+ *
183
+ * The schema places elements by their anchor (0..1) within the element.
184
+ * x_anchor: 0 means `x` is the left edge; 0.5 means `x` is the center;
185
+ * 1 means `x` is the right edge.
186
+ */
187
+ export function anchorToCenter(x, y, w, h, xAnchor, yAnchor) {
188
+ return {
189
+ cx: x + w * (0.5 - xAnchor),
190
+ cy: y + h * (0.5 - yAnchor),
191
+ };
192
+ }
193
+ /**
194
+ * Rescale a pane→surface homography (column-major 3×3, LOGICAL px on
195
+ * both sides) to physical px on both sides:
196
+ * H' = diag(pr, pr, 1) · H · diag(1/pr, 1/pr, 1).
197
+ * The glass shader works in physical px throughout (paneHalf, radii
198
+ * and shadow params are pre-scaled by the pixel ratio).
199
+ */
200
+ export function homographyToPhysical(h, pr) {
201
+ return new Float32Array([
202
+ h[0], h[1], h[2] / pr,
203
+ h[3], h[4], h[5] / pr,
204
+ h[6] * pr, h[7] * pr, h[8],
205
+ ]);
206
+ }
207
+ /**
208
+ * Invert a column-major 3×3. Returns null when singular (edge-on
209
+ * pane — the §4.7 degenerate case: draw nothing).
210
+ */
211
+ export function invertHomography(m) {
212
+ // Row-major view of the column-major array.
213
+ const m00 = m[0], m10 = m[1], m20 = m[2];
214
+ const m01 = m[3], m11 = m[4], m21 = m[5];
215
+ const m02 = m[6], m12 = m[7], m22 = m[8];
216
+ const c00 = m11 * m22 - m12 * m21;
217
+ const c01 = m12 * m20 - m10 * m22;
218
+ const c02 = m10 * m21 - m11 * m20;
219
+ const det = m00 * c00 + m01 * c01 + m02 * c02;
220
+ if (!Number.isFinite(det) || Math.abs(det) < 1e-12)
221
+ return null;
222
+ const id = 1 / det;
223
+ return new Float32Array([
224
+ c00 * id, c01 * id, c02 * id,
225
+ (m02 * m21 - m01 * m22) * id, (m00 * m22 - m02 * m20) * id, (m01 * m20 - m00 * m21) * id,
226
+ (m01 * m12 - m02 * m11) * id, (m02 * m10 - m00 * m12) * id, (m00 * m11 - m01 * m10) * id,
227
+ ]);
228
+ }
229
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/compositor/transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export type LengthValue = number | string;
2
+ export interface CanvasDimensions {
3
+ /** Composition width in pixels. */
4
+ width: number;
5
+ /** Composition height in pixels. */
6
+ height: number;
7
+ }
8
+ /**
9
+ * Resolve a schema length (number or string with unit) to pixels.
10
+ *
11
+ * @param value The schema value (e.g. `100`, `"50%"`, `"10vw"`).
12
+ * @param ref The reference value `%` is relative to (e.g. element width).
13
+ * @param canvas Composition dimensions (drive vw/vh/vmin/vmax).
14
+ * @param fallback Returned when the value cannot be parsed.
15
+ */
16
+ export declare function resolveLength(value: LengthValue | undefined | null, ref: number, canvas: CanvasDimensions, fallback?: number): number;
17
+ /**
18
+ * Resolve an anchor value (0..1, unitless or percentage).
19
+ *
20
+ * Anchors default to 0 (TOP-LEFT) so that `x`/`y` mean the element's top-left
21
+ * corner, matching CSS (`left`/`top`), SVG (`<rect x y>`), and Canvas — the
22
+ * convention agents and humans reach for. See ANCHOR-CONVENTION-PLAN.md.
23
+ * Callers that want a center default (transform pivots, group rotation/scale)
24
+ * pass `fallback: 0.5` explicitly. A string like "50%" maps to 0.5.
25
+ */
26
+ export declare function resolveAnchor(value: LengthValue | undefined | null, fallback?: number): number;
27
+ //# sourceMappingURL=unit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit.d.ts","sourceRoot":"","sources":["../../src/compositor/unit.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,EACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,EACxB,QAAQ,GAAE,MAAU,GACnB,MAAM,CA4BR;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,EACrC,QAAQ,GAAE,MAAU,GACnB,MAAM,CAUR"}
@@ -0,0 +1,74 @@
1
+ // Schema length values can be numbers (pixels) or strings with units.
2
+ // resolveLength converts them to pixels relative to a reference axis.
3
+ //
4
+ // Units (matching the Clipkit Protocol spec):
5
+ // px absolute pixels
6
+ // % percentage of the reference axis (e.g. element width)
7
+ // vw percentage of the composition width
8
+ // vh percentage of the composition height
9
+ // vmin percentage of the smaller composition dimension
10
+ // vmax percentage of the larger composition dimension
11
+ //
12
+ // A bare number is interpreted as pixels.
13
+ /**
14
+ * Resolve a schema length (number or string with unit) to pixels.
15
+ *
16
+ * @param value The schema value (e.g. `100`, `"50%"`, `"10vw"`).
17
+ * @param ref The reference value `%` is relative to (e.g. element width).
18
+ * @param canvas Composition dimensions (drive vw/vh/vmin/vmax).
19
+ * @param fallback Returned when the value cannot be parsed.
20
+ */
21
+ export function resolveLength(value, ref, canvas, fallback = 0) {
22
+ if (value == null)
23
+ return fallback;
24
+ if (typeof value === 'number')
25
+ return Number.isFinite(value) ? value : fallback;
26
+ // A Tier-A expression value ({ expr }) reaches here as an object — it isn't a
27
+ // static length. Return the fallback; applyAnimation() reads the raw property
28
+ // and overrides this with the evaluated expression.
29
+ if (typeof value !== 'string')
30
+ return fallback;
31
+ const s = value.trim();
32
+ if (s === '')
33
+ return fallback;
34
+ // Strip a trailing unit suffix.
35
+ const match = s.match(/^(-?\d*\.?\d+)\s*(px|%|vw|vh|vmin|vmax)?$/i);
36
+ if (!match)
37
+ return fallback;
38
+ const num = parseFloat(match[1]);
39
+ if (!Number.isFinite(num))
40
+ return fallback;
41
+ const unit = (match[2] || 'px').toLowerCase();
42
+ switch (unit) {
43
+ case 'px': return num;
44
+ case '%': return (num / 100) * ref;
45
+ case 'vw': return (num / 100) * canvas.width;
46
+ case 'vh': return (num / 100) * canvas.height;
47
+ case 'vmin': return (num / 100) * Math.min(canvas.width, canvas.height);
48
+ case 'vmax': return (num / 100) * Math.max(canvas.width, canvas.height);
49
+ default: return fallback;
50
+ }
51
+ }
52
+ /**
53
+ * Resolve an anchor value (0..1, unitless or percentage).
54
+ *
55
+ * Anchors default to 0 (TOP-LEFT) so that `x`/`y` mean the element's top-left
56
+ * corner, matching CSS (`left`/`top`), SVG (`<rect x y>`), and Canvas — the
57
+ * convention agents and humans reach for. See ANCHOR-CONVENTION-PLAN.md.
58
+ * Callers that want a center default (transform pivots, group rotation/scale)
59
+ * pass `fallback: 0.5` explicitly. A string like "50%" maps to 0.5.
60
+ */
61
+ export function resolveAnchor(value, fallback = 0) {
62
+ if (value == null)
63
+ return fallback;
64
+ if (typeof value === 'number')
65
+ return Number.isFinite(value) ? value : fallback;
66
+ const s = value.trim();
67
+ if (s.endsWith('%')) {
68
+ const n = parseFloat(s);
69
+ return Number.isFinite(n) ? n / 100 : fallback;
70
+ }
71
+ const n = parseFloat(s);
72
+ return Number.isFinite(n) ? n : fallback;
73
+ }
74
+ //# sourceMappingURL=unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit.js","sourceRoot":"","sources":["../../src/compositor/unit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import type { Source } from "@clipkit/protocol";
2
+ export interface ExportAudioOptions {
3
+ /** Pre-mixed audio buffer ready to encode. Runtime produces this via mixSourceAudio. */
4
+ buffer: AudioBuffer;
5
+ /** AAC bitrate in bits/second. Default 128 kbps. */
6
+ bitrate?: number;
7
+ /** Codec string. Default 'mp4a.40.2' (AAC-LC). */
8
+ codec?: string;
9
+ }
10
+ /**
11
+ * Named output resolutions. Render-time choice — the Source's
12
+ * width/height stay as the authoring coordinate space; this multiplies
13
+ * the canvas backing store so the encoder pulls higher-density frames.
14
+ *
15
+ * 'source' (default) renders at the Source's declared dimensions —
16
+ * unchanged from the pre-resolution behavior.
17
+ *
18
+ * The named tiers anchor on output height and derive width from the
19
+ * Source's aspect ratio:
20
+ * 480p → height 480
21
+ * 720p → height 720
22
+ * 1080p → height 1080
23
+ * 1440p → height 1440
24
+ * 4k → height 2160
25
+ */
26
+ export type RenderResolution = 'source' | '480p' | '720p' | '1080p' | '1440p' | '4k';
27
+ export interface ExportOptions {
28
+ codec?: string;
29
+ bitrate?: number;
30
+ framerate?: number;
31
+ onProgress?: (progress: number) => void;
32
+ /** Optional audio track. When present, the muxer adds an audio stream. */
33
+ audio?: ExportAudioOptions;
34
+ /**
35
+ * Output resolution. Defaults to 'source' (no upscaling). When set
36
+ * to a named tier, the exporter resizes the backend canvas to a
37
+ * higher pixel density and the encoder produces an MP4 at that size.
38
+ * Bitrate auto-scales unless overridden.
39
+ */
40
+ renderResolution?: RenderResolution;
41
+ }
42
+ /**
43
+ * Resolve a RenderResolution + Source dimensions into the concrete
44
+ * physical canvas size, pixel ratio, and a sensible default bitrate.
45
+ */
46
+ export declare function resolveRenderResolution(resolution: RenderResolution, sourceWidth: number, sourceHeight: number): {
47
+ physicalWidth: number;
48
+ physicalHeight: number;
49
+ pixelRatio: number;
50
+ defaultBitrate: number;
51
+ defaultCodec: string;
52
+ };
53
+ /**
54
+ * Minimal interface the exporter needs from the runtime. Decouples the
55
+ * encoder from the specific renderer implementation. The new ClipkitRuntime
56
+ * will satisfy this interface.
57
+ */
58
+ export interface FrameProducer {
59
+ readonly canvas: HTMLCanvasElement | OffscreenCanvas;
60
+ renderAsync(source: Source, time: number): Promise<void>;
61
+ /**
62
+ * Block until the GPU has finished drawing the current frame. MUST be awaited
63
+ * between renderAsync() and any canvas read-back (drawImage/getImageData/
64
+ * toDataURL/new VideoFrame). On async hardware GL (ANGLE → NVIDIA L4)
65
+ * renderAsync() returns once commands are QUEUED, not executed, so a read-back
66
+ * without this barrier captures a half-drawn or stale frame → periodic dimming
67
+ * + ghosting (worst on thin text). It's a no-op on synchronous SwiftShader, so
68
+ * it's safe everywhere. (The still path already does this — see harness.ts.)
69
+ */
70
+ gpuFinish(): Promise<void>;
71
+ }
72
+ export declare class ClipkitExporter {
73
+ private canvas;
74
+ private renderer;
75
+ private encoder;
76
+ private muxer;
77
+ private tempCanvas;
78
+ private tempCtx;
79
+ constructor(canvas: HTMLCanvasElement | OffscreenCanvas, renderer: FrameProducer);
80
+ export(source: Source, options?: ExportOptions): Promise<Blob>;
81
+ /**
82
+ * Render each frame and hand its PNG bytes (base64, with alpha) to `onFrame`.
83
+ * No encoder/muxer — this feeds the transparent export path (ProRes 4444 /
84
+ * VP9-alpha), which assembles the PNGs with a server-side ffmpeg. `alpha`
85
+ * relies on the renderer having been told to clear transparent (the runtime
86
+ * arranges that). Returns the frame count.
87
+ */
88
+ exportFrames(source: Source, options: {
89
+ framerate?: number;
90
+ alpha?: boolean;
91
+ onFrame: (index: number, pngBase64: string) => void | Promise<void>;
92
+ onProgress?: (progress: number) => void;
93
+ }): Promise<number>;
94
+ }
95
+ //# sourceMappingURL=exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../src/encoder/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI/C,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,MAAM,EAAE,WAAW,CAAA;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;AAErF,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACpC;AAwDD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,CAsBA;AAeD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAA;IACpD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD;;;;;;;;OAQG;IACH,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,OAAO,CAA0B;gBAE7B,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAAE,QAAQ,EAAE,aAAa;IAQ1E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2PxE;;;;;;OAMG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACnE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;KACxC,GACA,OAAO,CAAC,MAAM,CAAC;CAsBnB"}