framefields 2.0.10 → 2.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 (562) hide show
  1. package/README.md +39 -11
  2. package/dist/audio/index.d.mts +4 -4
  3. package/dist/audio/index.mjs +13 -12
  4. package/dist/{audio-BxA0sL9z.d.mts → audio-C2fLC3Tx.d.mts} +3 -3
  5. package/dist/{audio-BxA0sL9z.d.mts.map → audio-C2fLC3Tx.d.mts.map} +1 -1
  6. package/dist/{audio-TAvPwzLR.mjs → audio-DJeVoE8b.mjs} +1 -1
  7. package/dist/{audio-TAvPwzLR.mjs.map → audio-DJeVoE8b.mjs.map} +1 -1
  8. package/dist/{audio-B7Al-W_0.mjs → audio-D_4SeMRK.mjs} +4 -4
  9. package/dist/{audio-B7Al-W_0.mjs.map → audio-D_4SeMRK.mjs.map} +1 -1
  10. package/dist/{client-CwRhflHE.mjs → client-dVxUnmHz.mjs} +1 -1
  11. package/dist/{client-CwRhflHE.mjs.map → client-dVxUnmHz.mjs.map} +1 -1
  12. package/dist/{dist-C_hjvkdN.mjs → dist-0QGroRYZ.mjs} +1 -1
  13. package/dist/{dist-C_hjvkdN.mjs.map → dist-0QGroRYZ.mjs.map} +1 -1
  14. package/dist/{dist-DzUJmIHt.mjs → dist-BY0bIWgr.mjs} +10 -2
  15. package/dist/dist-BY0bIWgr.mjs.map +1 -0
  16. package/dist/{dist-B9PkqWnN.mjs → dist-Bun_TUvZ.mjs} +24046 -20774
  17. package/dist/dist-Bun_TUvZ.mjs.map +1 -0
  18. package/dist/{dist-BFjSQP7i.mjs → dist-DlzqyRar.mjs} +75 -618
  19. package/dist/dist-DlzqyRar.mjs.map +1 -0
  20. package/dist/{dist-cjs-TsA8LFXC.mjs → dist-cjs-91nR6B7Z.mjs} +3 -3
  21. package/dist/{dist-cjs-TsA8LFXC.mjs.map → dist-cjs-91nR6B7Z.mjs.map} +1 -1
  22. package/dist/{dist-cjs-DJ8fcQEe.mjs → dist-cjs-BAIenEMC.mjs} +11 -11
  23. package/dist/{dist-cjs-DJ8fcQEe.mjs.map → dist-cjs-BAIenEMC.mjs.map} +1 -1
  24. package/dist/{dist-cjs-BmyyWYWv.mjs → dist-cjs-BEQhh76X.mjs} +2 -2
  25. package/dist/{dist-cjs-BmyyWYWv.mjs.map → dist-cjs-BEQhh76X.mjs.map} +1 -1
  26. package/dist/{dist-cjs--pxyGFw2.mjs → dist-cjs-BYPq7pfw.mjs} +1 -1
  27. package/dist/{dist-cjs--pxyGFw2.mjs.map → dist-cjs-BYPq7pfw.mjs.map} +1 -1
  28. package/dist/{dist-cjs--lfMLs3U.mjs → dist-cjs-BocDqSCX.mjs} +4 -4
  29. package/dist/{dist-cjs--lfMLs3U.mjs.map → dist-cjs-BocDqSCX.mjs.map} +1 -1
  30. package/dist/{dist-cjs-CsU2sZoX.mjs → dist-cjs-CWiNggTl.mjs} +4 -4
  31. package/dist/{dist-cjs-CsU2sZoX.mjs.map → dist-cjs-CWiNggTl.mjs.map} +1 -1
  32. package/dist/{dist-cjs-DjzmP0-x.mjs → dist-cjs-CwabutT6.mjs} +13 -13
  33. package/dist/{dist-cjs-DjzmP0-x.mjs.map → dist-cjs-CwabutT6.mjs.map} +1 -1
  34. package/dist/{dist-cjs-BDpO-TH_.mjs → dist-cjs-D-EE4Ahy.mjs} +1 -1
  35. package/dist/{dist-cjs-BDpO-TH_.mjs.map → dist-cjs-D-EE4Ahy.mjs.map} +1 -1
  36. package/dist/{dist-cjs-CQwmMllY.mjs → dist-cjs-DNtDUWfk.mjs} +6 -6
  37. package/dist/{dist-cjs-CQwmMllY.mjs.map → dist-cjs-DNtDUWfk.mjs.map} +1 -1
  38. package/dist/{dist-cjs-CND_ghfH.mjs → dist-cjs-DbZhsgS0.mjs} +1 -1
  39. package/dist/{dist-cjs-CND_ghfH.mjs.map → dist-cjs-DbZhsgS0.mjs.map} +1 -1
  40. package/dist/{dist-cjs-CgFzrgj8.mjs → dist-cjs-Dh7REKcN.mjs} +1 -1
  41. package/dist/{dist-cjs-CgFzrgj8.mjs.map → dist-cjs-Dh7REKcN.mjs.map} +1 -1
  42. package/dist/{dist-cjs-DT2jJlcK.mjs → dist-cjs-Dobx0Nz-.mjs} +5 -5
  43. package/dist/{dist-cjs-DT2jJlcK.mjs.map → dist-cjs-Dobx0Nz-.mjs.map} +1 -1
  44. package/dist/{dist-cjs-DzjrlfbE.mjs → dist-cjs-Du0UpNof.mjs} +14 -14
  45. package/dist/{dist-cjs-DzjrlfbE.mjs.map → dist-cjs-Du0UpNof.mjs.map} +1 -1
  46. package/dist/dist-cjs-DyHiUfsr.mjs +6 -0
  47. package/dist/{dist-cjs-M-8QOgS_.mjs → dist-cjs-HHMfMF5a.mjs} +2 -2
  48. package/dist/{dist-cjs-M-8QOgS_.mjs.map → dist-cjs-HHMfMF5a.mjs.map} +1 -1
  49. package/dist/{dist-cjs-BiKQozdJ.mjs → dist-cjs-UJYQzLNT.mjs} +3 -3
  50. package/dist/{dist-cjs-BiKQozdJ.mjs.map → dist-cjs-UJYQzLNT.mjs.map} +1 -1
  51. package/dist/{dist-cjs-agQl9T8M.mjs → dist-cjs-UKxm5cFR.mjs} +6 -6
  52. package/dist/{dist-cjs-agQl9T8M.mjs.map → dist-cjs-UKxm5cFR.mjs.map} +1 -1
  53. package/dist/{dist-B9Afsv83.mjs → dist-fjKpBYkc.mjs} +662 -28
  54. package/dist/dist-fjKpBYkc.mjs.map +1 -0
  55. package/dist/effects/index.d.mts +4 -4
  56. package/dist/effects/index.mjs +36 -34
  57. package/dist/{effects-CREopCyP.mjs → effects-FTlu0dri.mjs} +3 -3
  58. package/dist/{effects-CREopCyP.mjs.map → effects-FTlu0dri.mjs.map} +1 -1
  59. package/dist/{event-streams-BaNGaLxh.mjs → event-streams-DnRe8uwT.mjs} +2 -2
  60. package/dist/{event-streams-BaNGaLxh.mjs.map → event-streams-DnRe8uwT.mjs.map} +1 -1
  61. package/dist/fonts/index.d.mts +2 -2
  62. package/dist/fonts/index.mjs +3 -1
  63. package/dist/{fonts-DhEQ5h6E.mjs → fonts-UM5xaBOx.mjs} +66 -6
  64. package/dist/fonts-UM5xaBOx.mjs.map +1 -0
  65. package/dist/gpu-RkpiFGOA.mjs +215 -0
  66. package/dist/gpu-RkpiFGOA.mjs.map +1 -0
  67. package/dist/{index-BXNNJVs8.d.mts → index-CHQ39_Oe.d.mts} +2 -2
  68. package/dist/{index-BXNNJVs8.d.mts.map → index-CHQ39_Oe.d.mts.map} +1 -1
  69. package/dist/{index-CvDVpaKn.d.mts → index-CzQseCtg.d.mts} +8 -8
  70. package/dist/{index-CvDVpaKn.d.mts.map → index-CzQseCtg.d.mts.map} +1 -1
  71. package/dist/{index-D1zaOwEU.d.mts → index-D67p-rHX.d.mts} +3506 -1280
  72. package/dist/index-D67p-rHX.d.mts.map +1 -0
  73. package/dist/{index-J9CIK_nu.d.mts → index-DPicEt8H.d.mts} +10 -2
  74. package/dist/index-DPicEt8H.d.mts.map +1 -0
  75. package/dist/{index-oodg5k9K.d.mts → index-Db8Z3AtX.d.mts} +3 -3
  76. package/dist/{index-oodg5k9K.d.mts.map → index-Db8Z3AtX.d.mts.map} +1 -1
  77. package/dist/{index-fo4E7A6C.d.mts → index-DsOqONsj.d.mts} +3 -3
  78. package/dist/{index-fo4E7A6C.d.mts.map → index-DsOqONsj.d.mts.map} +1 -1
  79. package/dist/{index-CQcdKyxF.d.mts → index-l03NV8JS.d.mts} +59 -2
  80. package/dist/index-l03NV8JS.d.mts.map +1 -0
  81. package/dist/index.d.mts +416 -1849
  82. package/dist/index.d.mts.map +1 -1
  83. package/dist/index.mjs +669 -79
  84. package/dist/index.mjs.map +1 -1
  85. package/dist/{package-XpCRbTOA.mjs → package-CudzAF-n.mjs} +1 -1
  86. package/dist/{package-XpCRbTOA.mjs.map → package-CudzAF-n.mjs.map} +1 -1
  87. package/dist/preview/index.d.mts +2 -2
  88. package/dist/preview/index.mjs +13 -12
  89. package/dist/{preview-9ifxywUM.mjs → preview-DwClLMlU.mjs} +3 -3
  90. package/dist/{preview-9ifxywUM.mjs.map → preview-DwClLMlU.mjs.map} +1 -1
  91. package/dist/preview-engine/audio.mjs +1 -1
  92. package/dist/preview-engine/{chunk-AW7HNZKR.mjs → chunk-3GNP7TJH.mjs} +3 -3
  93. package/dist/preview-engine/{chunk-LIHUEYI5.mjs → chunk-44CQSOYE.mjs} +2 -2
  94. package/dist/preview-engine/{chunk-6JW37VJA.mjs → chunk-5AUB4Y3L.mjs} +3 -23
  95. package/dist/preview-engine/chunk-5DOD2NVY.mjs +26 -0
  96. package/dist/preview-engine/chunk-5FC7GOWW.mjs +474 -0
  97. package/dist/preview-engine/chunk-5W4AFQP7.mjs +97 -0
  98. package/dist/preview-engine/chunk-63SFBHEH.mjs +1 -0
  99. package/dist/preview-engine/chunk-7EPIRODI.mjs +91 -0
  100. package/dist/preview-engine/{chunk-PQD5UPHG.mjs → chunk-7G3XIOP7.mjs} +1 -1
  101. package/dist/preview-engine/chunk-7J2FWGVD.mjs +1 -0
  102. package/dist/preview-engine/chunk-AXHB4J37.mjs +147 -0
  103. package/dist/preview-engine/chunk-AY7UX37L.mjs +450 -0
  104. package/dist/preview-engine/chunk-B43Z3J7J.mjs +5 -0
  105. package/dist/preview-engine/chunk-BWJS6G7R.mjs +314 -0
  106. package/dist/preview-engine/{chunk-24DXIKXL.mjs → chunk-DIGIQ5MJ.mjs} +2 -2
  107. package/dist/preview-engine/{chunk-AEK5BO3J.mjs → chunk-E4RAFHZM.mjs} +1 -1
  108. package/dist/preview-engine/chunk-ENKKLU7B.mjs +22 -0
  109. package/dist/preview-engine/{chunk-XLFYM7KH.mjs → chunk-EVXWDOCL.mjs} +2 -2
  110. package/dist/preview-engine/{chunk-EQ4QZRXB.mjs → chunk-EYWPOCZW.mjs} +2 -2
  111. package/dist/preview-engine/{chunk-IYVN2QEL.mjs → chunk-FLPSWDX4.mjs} +1 -1
  112. package/dist/preview-engine/chunk-FU7AIAMM.mjs +88 -0
  113. package/dist/preview-engine/{chunk-CBM7B7EW.mjs → chunk-GMGGDADT.mjs} +1 -1
  114. package/dist/preview-engine/chunk-GSFN4WCH.mjs +62 -0
  115. package/dist/preview-engine/chunk-HE4R7EZM.mjs +121 -0
  116. package/dist/preview-engine/chunk-IQC2I5A5.mjs +1 -0
  117. package/dist/preview-engine/chunk-IQKIHFNZ.mjs +1 -0
  118. package/dist/preview-engine/{chunk-XCYFPA34.mjs → chunk-IR5DNNWR.mjs} +3 -23
  119. package/dist/preview-engine/chunk-IUPDOATX.mjs +114 -0
  120. package/dist/preview-engine/{chunk-GHMCGTJ2.mjs → chunk-J2R5R7YY.mjs} +3 -23
  121. package/dist/preview-engine/chunk-JAJOZG5P.mjs +1 -0
  122. package/dist/preview-engine/chunk-JXNG2ACR.mjs +118 -0
  123. package/dist/preview-engine/{chunk-V6VU46ZG.mjs → chunk-L6BH5J4P.mjs} +1 -1
  124. package/dist/preview-engine/chunk-LGVEFPOG.mjs +3 -0
  125. package/dist/preview-engine/{chunk-MDDF2GCF.mjs → chunk-MLY5M7Y5.mjs} +3 -23
  126. package/dist/preview-engine/chunk-NPD6W3RP.mjs +1 -0
  127. package/dist/preview-engine/chunk-OCX5AD23.mjs +1 -0
  128. package/dist/preview-engine/{chunk-D3TETPLI.mjs → chunk-OG62XGCT.mjs} +1 -1
  129. package/dist/preview-engine/chunk-OJ2PKBXE.mjs +40 -0
  130. package/dist/preview-engine/chunk-OKH2VU2U.mjs +97 -0
  131. package/dist/preview-engine/chunk-PAQNDZQB.mjs +83 -0
  132. package/dist/preview-engine/chunk-PEWYB6WP.mjs +43 -0
  133. package/dist/preview-engine/chunk-PL4IH5V4.mjs +89 -0
  134. package/dist/preview-engine/chunk-PSRQA3QW.mjs +84 -0
  135. package/dist/preview-engine/{chunk-JAOXXYXG.mjs → chunk-PXT52LEH.mjs} +3 -23
  136. package/dist/preview-engine/chunk-Q22PJXFJ.mjs +69 -0
  137. package/dist/preview-engine/chunk-Q4Z54DQ7.mjs +1 -0
  138. package/dist/preview-engine/{chunk-BHFI3Y4T.mjs → chunk-QBEUICZD.mjs} +1 -1
  139. package/dist/preview-engine/chunk-RQLMW6MA.mjs +4 -0
  140. package/dist/preview-engine/chunk-RSMO7NPN.mjs +1 -0
  141. package/dist/preview-engine/chunk-RW2F3XLQ.mjs +90 -0
  142. package/dist/preview-engine/{chunk-25IW7NYO.mjs → chunk-S2CTIJSI.mjs} +1 -1
  143. package/dist/preview-engine/chunk-SGPRLTNF.mjs +52 -0
  144. package/dist/preview-engine/{chunk-Y6FEU4TV.mjs → chunk-SZW5J72T.mjs} +3 -23
  145. package/dist/preview-engine/{chunk-7DIAFPQP.mjs → chunk-T2FE5VOW.mjs} +3 -23
  146. package/dist/preview-engine/{chunk-ZSIJB76A.mjs → chunk-TS3JI3BH.mjs} +2 -2
  147. package/dist/preview-engine/{chunk-AMBSW6OA.mjs → chunk-U4JIFQRR.mjs} +2 -2
  148. package/dist/preview-engine/chunk-VRGREB3V.mjs +1 -0
  149. package/dist/preview-engine/{chunk-BJKH76OM.mjs → chunk-VXS5SIEC.mjs} +3 -23
  150. package/dist/preview-engine/chunk-WFGJXCZT.mjs +53 -0
  151. package/dist/preview-engine/chunk-WH5Q2NFN.mjs +32 -0
  152. package/dist/preview-engine/{chunk-YG35X5R5.mjs → chunk-WUKH7BD7.mjs} +1 -1
  153. package/dist/preview-engine/chunk-XC5WZNOY.mjs +1448 -0
  154. package/dist/preview-engine/chunk-YQZOGEPZ.mjs +186 -0
  155. package/dist/preview-engine/{chunk-VVLM6LZ3.mjs → chunk-ZDQF3OTC.mjs} +1 -1
  156. package/dist/preview-engine/chunk-ZIIFTWDH.mjs +58 -0
  157. package/dist/preview-engine/effects.mjs +1 -1
  158. package/dist/preview-engine/fonts.mjs +1 -1
  159. package/dist/preview-engine/framefields.mjs +127 -130
  160. package/dist/preview-engine/player.mjs +6 -6
  161. package/dist/preview-engine/renderers-2H7YEUTD.mjs +1 -0
  162. package/dist/preview-engine/renderers-2ILG23ED.mjs +1 -0
  163. package/dist/preview-engine/renderers-2P6KXWEZ.mjs +1 -0
  164. package/dist/preview-engine/renderers-2SVWAB42.mjs +1 -0
  165. package/dist/preview-engine/renderers-2VN3AH45.mjs +104 -0
  166. package/dist/preview-engine/renderers-3RC5FDWX.mjs +1 -0
  167. package/dist/preview-engine/renderers-57WDL6XN.mjs +1 -0
  168. package/dist/preview-engine/{renderers-CAUWP4XH.mjs → renderers-6OGFUSH6.mjs} +3 -23
  169. package/dist/preview-engine/renderers-6WH7NZCC.mjs +1 -0
  170. package/dist/preview-engine/renderers-7VJN5L3Z.mjs +1 -0
  171. package/dist/preview-engine/renderers-A6HM64UZ.mjs +1 -0
  172. package/dist/preview-engine/{renderers-WLH4HRUE.mjs → renderers-A7VH3ON5.mjs} +1 -1
  173. package/dist/preview-engine/renderers-B7DSGUMI.mjs +1 -0
  174. package/dist/preview-engine/renderers-BFNJ7VCI.mjs +1 -0
  175. package/dist/preview-engine/renderers-BSKZXITT.mjs +35 -0
  176. package/dist/preview-engine/renderers-CGYIDAVV.mjs +1 -0
  177. package/dist/preview-engine/renderers-CRRLV7IO.mjs +1 -0
  178. package/dist/preview-engine/{renderers-JQHUBWLL.mjs → renderers-D6T6IPER.mjs} +3 -23
  179. package/dist/preview-engine/renderers-DXHJAMZR.mjs +1 -0
  180. package/dist/preview-engine/renderers-ECA3P4ON.mjs +1 -0
  181. package/dist/preview-engine/{renderers-W5CVDJVH.mjs → renderers-F55XFVMP.mjs} +1 -1
  182. package/dist/preview-engine/renderers-FWGMNPYB.mjs +1 -0
  183. package/dist/preview-engine/renderers-H46TS3IG.mjs +228 -0
  184. package/dist/preview-engine/renderers-HXFRTIJD.mjs +1 -0
  185. package/dist/preview-engine/renderers-IWQ3V6AJ.mjs +1 -0
  186. package/dist/preview-engine/renderers-JHFT27YU.mjs +1 -0
  187. package/dist/preview-engine/renderers-KZWGSKRF.mjs +1 -0
  188. package/dist/preview-engine/renderers-MON4QFRF.mjs +1 -0
  189. package/dist/preview-engine/renderers-NQXMYNSY.mjs +1 -0
  190. package/dist/preview-engine/renderers-NWHS7N2L.mjs +1 -0
  191. package/dist/preview-engine/renderers-ORAIXUL3.mjs +1 -0
  192. package/dist/preview-engine/renderers-OT7D3BUA.mjs +1 -0
  193. package/dist/preview-engine/renderers-Q4OFCMXI.mjs +1 -0
  194. package/dist/preview-engine/renderers-QVZVEYP5.mjs +1 -0
  195. package/dist/preview-engine/renderers-RJO6H4FC.mjs +1 -0
  196. package/dist/preview-engine/renderers-RKDPX5JU.mjs +1 -0
  197. package/dist/preview-engine/{renderers-2US2NIUG.mjs → renderers-RLHTNLRE.mjs} +3 -23
  198. package/dist/preview-engine/renderers-SBFF7JP5.mjs +1 -0
  199. package/dist/preview-engine/renderers-SCJ6OKTB.mjs +1 -0
  200. package/dist/preview-engine/renderers-T4JMJXWL.mjs +1 -0
  201. package/dist/preview-engine/renderers-TAWT3ZSS.mjs +1 -0
  202. package/dist/preview-engine/renderers-U6KY34TP.mjs +100 -0
  203. package/dist/preview-engine/renderers-UHTO6BQA.mjs +1 -0
  204. package/dist/preview-engine/renderers-UNK6I4JJ.mjs +1 -0
  205. package/dist/preview-engine/renderers-UPTJJE5F.mjs +1 -0
  206. package/dist/preview-engine/renderers-W773SBPV.mjs +1 -0
  207. package/dist/preview-engine/renderers-XHTMRXC5.mjs +1 -0
  208. package/dist/preview-engine/renderers-YECY2YFT.mjs +1 -0
  209. package/dist/preview-engine/renderers-YMN6QXK7.mjs +1 -0
  210. package/dist/preview-engine/renderers-ZANPE3OK.mjs +1 -0
  211. package/dist/preview-engine/renderers-ZHTX73PR.mjs +1 -0
  212. package/dist/preview-engine/renderers-ZJTRANIX.mjs +1 -0
  213. package/dist/preview-engine/signals.mjs +1 -1
  214. package/dist/preview-engine/skia-canvas-QBXAOGPB.mjs +1 -0
  215. package/dist/{program-xRfFoPxe.mjs → program-BqFVw5Mu.mjs} +295 -2279
  216. package/dist/program-BqFVw5Mu.mjs.map +1 -0
  217. package/dist/renderer/index.d.mts +2 -2
  218. package/dist/renderer/index.mjs +3 -3
  219. package/dist/{renderer-BgdkEFmv.mjs → renderer-2Nf9ypST.mjs} +85 -279
  220. package/dist/renderer-2Nf9ypST.mjs.map +1 -0
  221. package/dist/{renderer-BREIjsUU.mjs → renderer-2uN2cd0y.mjs} +14 -40
  222. package/dist/renderer-2uN2cd0y.mjs.map +1 -0
  223. package/dist/renderer-31jAuNzF.mjs +5 -0
  224. package/dist/renderer-36EI7Rsz.mjs +5 -0
  225. package/dist/renderer-3io-cjTt.mjs +5 -0
  226. package/dist/renderer-9_zWTHbg.mjs +5 -0
  227. package/dist/{renderer-5h0llpx7.mjs → renderer-B12_76qk.mjs} +4 -3
  228. package/dist/{renderer-5h0llpx7.mjs.map → renderer-B12_76qk.mjs.map} +1 -1
  229. package/dist/{renderer-_bygZSKk.mjs → renderer-B4oS8ZFO.mjs} +29 -98
  230. package/dist/renderer-B4oS8ZFO.mjs.map +1 -0
  231. package/dist/renderer-B6KnbfdA.mjs +5 -0
  232. package/dist/renderer-B7Y2bmRc.mjs +5 -0
  233. package/dist/renderer-BA6miaaI.mjs +5 -0
  234. package/dist/{renderer-CoZKST2Y.mjs → renderer-BGr_cBKV.mjs} +61 -208
  235. package/dist/renderer-BGr_cBKV.mjs.map +1 -0
  236. package/dist/renderer-BHi-Q6Z_.mjs +5 -0
  237. package/dist/{renderer-BiSALMQy.mjs → renderer-BLcu9RDt.mjs} +3 -1
  238. package/dist/{renderer-D2XD4QYk.mjs → renderer-BO2lYmtE.mjs} +34 -147
  239. package/dist/renderer-BO2lYmtE.mjs.map +1 -0
  240. package/dist/renderer-BOlN9HeG.mjs +5 -0
  241. package/dist/renderer-BSitV56h.mjs +268 -0
  242. package/dist/renderer-BSitV56h.mjs.map +1 -0
  243. package/dist/renderer-BTOW-ceB.mjs +5 -0
  244. package/dist/{renderer-wVldKtFU.mjs → renderer-BYqfkwLf.mjs} +51 -163
  245. package/dist/renderer-BYqfkwLf.mjs.map +1 -0
  246. package/dist/{renderer-bZU_ndxf.mjs → renderer-BajIOuZH.mjs} +2 -2
  247. package/dist/{renderer-bZU_ndxf.mjs.map → renderer-BajIOuZH.mjs.map} +1 -1
  248. package/dist/{renderer-jkZ_IQnW.mjs → renderer-BgnJUx24.mjs} +80 -258
  249. package/dist/renderer-BgnJUx24.mjs.map +1 -0
  250. package/dist/renderer-BiQ0PYOp.mjs +5 -0
  251. package/dist/{renderer-BnvqEqvE.mjs → renderer-BjTq3a0L.mjs} +5 -4
  252. package/dist/{renderer-BnvqEqvE.mjs.map → renderer-BjTq3a0L.mjs.map} +1 -1
  253. package/dist/{renderer-DEJwPRkR.mjs → renderer-BkN20ZKO.mjs} +15 -51
  254. package/dist/renderer-BkN20ZKO.mjs.map +1 -0
  255. package/dist/renderer-Bla7GDyV.mjs +5 -0
  256. package/dist/renderer-BoYyLVKy.mjs +5 -0
  257. package/dist/{renderer-D7zvPHKn.mjs → renderer-BpZaHFRc.mjs} +18 -28
  258. package/dist/renderer-BpZaHFRc.mjs.map +1 -0
  259. package/dist/renderer-BqOgb7bM.mjs +5 -0
  260. package/dist/{renderer-DNNqpK7t.mjs → renderer-Bq_dO0LG.mjs} +10 -17
  261. package/dist/renderer-Bq_dO0LG.mjs.map +1 -0
  262. package/dist/renderer-BqeM8yTJ.mjs +5 -0
  263. package/dist/{renderer-DryPrxYc.mjs → renderer-BqsV75Ml.mjs} +3 -1
  264. package/dist/{renderer-8qpGxSSO.mjs → renderer-Bs4tz_pw.mjs} +20 -87
  265. package/dist/renderer-Bs4tz_pw.mjs.map +1 -0
  266. package/dist/{renderer-DdVBt8Rz.mjs → renderer-Bsaokil3.mjs} +24 -104
  267. package/dist/renderer-Bsaokil3.mjs.map +1 -0
  268. package/dist/{renderer-D7ztfQHX.mjs → renderer-BvG1GF1c.mjs} +10 -16
  269. package/dist/renderer-BvG1GF1c.mjs.map +1 -0
  270. package/dist/{renderer-BGXbGqY4.mjs → renderer-BvpSIFkw.mjs} +83 -266
  271. package/dist/renderer-BvpSIFkw.mjs.map +1 -0
  272. package/dist/{renderer-Dju9CaeL.mjs → renderer-BwAqwTQq.mjs} +62 -209
  273. package/dist/renderer-BwAqwTQq.mjs.map +1 -0
  274. package/dist/{renderer-CzPWB0Ss.mjs → renderer-BwVfhrEx.mjs} +13 -45
  275. package/dist/renderer-BwVfhrEx.mjs.map +1 -0
  276. package/dist/renderer-BzpRe50i.mjs +5 -0
  277. package/dist/renderer-C0eAPwpr.mjs +5 -0
  278. package/dist/{renderer-But0u-xi.mjs → renderer-C3RfT8Gv.mjs} +59 -194
  279. package/dist/renderer-C3RfT8Gv.mjs.map +1 -0
  280. package/dist/{renderer-CgmFh6MY.mjs → renderer-C3cYDT3m.mjs} +3 -1
  281. package/dist/{renderer-D-4Yh-RK.mjs → renderer-CEGbqT2m.mjs} +236 -96
  282. package/dist/renderer-CEGbqT2m.mjs.map +1 -0
  283. package/dist/{renderer-CcU7dVn9.mjs → renderer-CGldH-Zx.mjs} +40 -142
  284. package/dist/renderer-CGldH-Zx.mjs.map +1 -0
  285. package/dist/renderer-CGn8V63v.mjs +5 -0
  286. package/dist/{renderer-DffynBHa.mjs → renderer-CH9Qtpy7.mjs} +4 -4
  287. package/dist/{renderer-DffynBHa.mjs.map → renderer-CH9Qtpy7.mjs.map} +1 -1
  288. package/dist/{renderer-ho_jXJ0H.mjs → renderer-CLyuu_19.mjs} +23 -117
  289. package/dist/renderer-CLyuu_19.mjs.map +1 -0
  290. package/dist/renderer-CM5Syo9r.mjs +5 -0
  291. package/dist/{renderer-BJ6Y-7ke.mjs → renderer-CRIM_XRK.mjs} +3 -3
  292. package/dist/{renderer-BJ6Y-7ke.mjs.map → renderer-CRIM_XRK.mjs.map} +1 -1
  293. package/dist/{renderer-2NQWaZd7.d.mts → renderer-CTGe8SqQ.d.mts} +2 -2
  294. package/dist/{renderer-2NQWaZd7.d.mts.map → renderer-CTGe8SqQ.d.mts.map} +1 -1
  295. package/dist/renderer-CWCEW6Wv.mjs +5 -0
  296. package/dist/{renderer-CNF10fCq.mjs → renderer-CgyOylPO.mjs} +10 -17
  297. package/dist/renderer-CgyOylPO.mjs.map +1 -0
  298. package/dist/{renderer-DjTiNeAp.mjs → renderer-CjT5Zy-J.mjs} +81 -221
  299. package/dist/renderer-CjT5Zy-J.mjs.map +1 -0
  300. package/dist/{renderer-_uvdg48N.mjs → renderer-Cjq1s3br.mjs} +24 -93
  301. package/dist/renderer-Cjq1s3br.mjs.map +1 -0
  302. package/dist/renderer-Cl70zxkP.mjs +5 -0
  303. package/dist/renderer-ClJjoVpB.mjs +6 -0
  304. package/dist/{renderer-DBlPbsgi.mjs → renderer-CpKNqciR.mjs} +3 -1
  305. package/dist/{renderer-DTvfYkI9.mjs → renderer-Cwhux4VX.mjs} +9 -16
  306. package/dist/renderer-Cwhux4VX.mjs.map +1 -0
  307. package/dist/{renderer-CJNyhr_S.mjs → renderer-D0nWLogn.mjs} +99 -282
  308. package/dist/renderer-D0nWLogn.mjs.map +1 -0
  309. package/dist/{renderer-9wp5R7PL.mjs → renderer-D1lynYuy.mjs} +23 -107
  310. package/dist/renderer-D1lynYuy.mjs.map +1 -0
  311. package/dist/{renderer-DYm4duFr.mjs → renderer-D4sYVV-I.mjs} +41 -140
  312. package/dist/renderer-D4sYVV-I.mjs.map +1 -0
  313. package/dist/{renderer-CroHPOsX.mjs → renderer-D5z3WDkm.mjs} +99 -287
  314. package/dist/renderer-D5z3WDkm.mjs.map +1 -0
  315. package/dist/renderer-D8C-pamu.mjs +148 -0
  316. package/dist/renderer-D8C-pamu.mjs.map +1 -0
  317. package/dist/{renderer-D_1oDOCP.mjs → renderer-DAtBnNGC.mjs} +14 -69
  318. package/dist/renderer-DAtBnNGC.mjs.map +1 -0
  319. package/dist/{renderer-DZGtBUCx.mjs → renderer-DG1NFsSV.mjs} +35 -185
  320. package/dist/renderer-DG1NFsSV.mjs.map +1 -0
  321. package/dist/{renderer-BM05sB8m.mjs → renderer-DHAErBtJ.mjs} +11 -74
  322. package/dist/renderer-DHAErBtJ.mjs.map +1 -0
  323. package/dist/{renderer-CStktK20.mjs → renderer-DIDSmoFA.mjs} +73 -73
  324. package/dist/{renderer-CStktK20.mjs.map → renderer-DIDSmoFA.mjs.map} +1 -1
  325. package/dist/{renderer-BA8YwBRQ.mjs → renderer-DKtP7-fr.mjs} +58 -234
  326. package/dist/renderer-DKtP7-fr.mjs.map +1 -0
  327. package/dist/renderer-DLnF-V_h.mjs +5 -0
  328. package/dist/renderer-DN1rjmcL.mjs +5 -0
  329. package/dist/{renderer-BZmfKIom.mjs → renderer-DOEsFT7Q.mjs} +57 -192
  330. package/dist/renderer-DOEsFT7Q.mjs.map +1 -0
  331. package/dist/{renderer-6GeDT4Mx.mjs → renderer-DPYB6ZcB.mjs} +57 -197
  332. package/dist/renderer-DPYB6ZcB.mjs.map +1 -0
  333. package/dist/{renderer-DCkSR2Ne.mjs → renderer-DRsPCkxr.mjs} +76 -210
  334. package/dist/renderer-DRsPCkxr.mjs.map +1 -0
  335. package/dist/renderer-DXTw9Oqb.mjs +5 -0
  336. package/dist/{renderer-DAMJZNtX.mjs → renderer-DZLJnnU2.mjs} +63 -190
  337. package/dist/renderer-DZLJnnU2.mjs.map +1 -0
  338. package/dist/{renderer-BtRfKx5N.mjs → renderer-DZrQffIP.mjs} +56 -167
  339. package/dist/renderer-DZrQffIP.mjs.map +1 -0
  340. package/dist/renderer-DbAVSBNI.mjs +5 -0
  341. package/dist/renderer-Dg8rD--8.mjs +5 -0
  342. package/dist/{renderer-BpCxKWQm.mjs → renderer-DhEyjn6Q.mjs} +52 -202
  343. package/dist/renderer-DhEyjn6Q.mjs.map +1 -0
  344. package/dist/{renderer-CIYcdZuZ.mjs → renderer-Dmv_Aj6x.mjs} +161 -457
  345. package/dist/renderer-Dmv_Aj6x.mjs.map +1 -0
  346. package/dist/renderer-DnFxegGu.mjs +5 -0
  347. package/dist/renderer-DnfmelHn.mjs +5 -0
  348. package/dist/{renderer-DxtHmyAa.mjs → renderer-Dpj68gTn.mjs} +11 -18
  349. package/dist/renderer-Dpj68gTn.mjs.map +1 -0
  350. package/dist/renderer-DuOjzggd.mjs +5 -0
  351. package/dist/renderer-DuuOlYIG.mjs +3 -0
  352. package/dist/renderer-DvYql0Cl.mjs +5 -0
  353. package/dist/{renderer-xKOVmd2O.mjs → renderer-DzhRNdBS.mjs} +245 -231
  354. package/dist/renderer-DzhRNdBS.mjs.map +1 -0
  355. package/dist/renderer-GSFP7v2z.mjs +3 -0
  356. package/dist/renderer-LfUdjgjF.mjs +5 -0
  357. package/dist/{renderer-CfeoxM_3.mjs → renderer-Q63y7HP_.mjs} +8 -15
  358. package/dist/renderer-Q63y7HP_.mjs.map +1 -0
  359. package/dist/renderer-SecCv3U8.mjs +5 -0
  360. package/dist/{renderer-b6sZN90h.mjs → renderer-mp1NN5zk.mjs} +4 -4
  361. package/dist/{renderer-b6sZN90h.mjs.map → renderer-mp1NN5zk.mjs.map} +1 -1
  362. package/dist/renderer-oZyoB4CT.mjs +5 -0
  363. package/dist/renderer-rzci_kTy.mjs +5 -0
  364. package/dist/{renderer-CpkiHRhh.mjs → renderer-to9DwqXK.mjs} +17 -99
  365. package/dist/renderer-to9DwqXK.mjs.map +1 -0
  366. package/dist/{renderer-CepMDQ06.mjs → renderer-v0vuUUUI.mjs} +19 -106
  367. package/dist/renderer-v0vuUUUI.mjs.map +1 -0
  368. package/dist/renderer-vLaZuZbX.mjs +5 -0
  369. package/dist/{renderers-CP8CFWDs-BLgwUYX2.mjs → renderers-CP8CFWDs-DlFq8jmz.mjs} +4 -4
  370. package/dist/{renderers-CP8CFWDs-BLgwUYX2.mjs.map → renderers-CP8CFWDs-DlFq8jmz.mjs.map} +1 -1
  371. package/dist/signals/index.d.mts +5 -5
  372. package/dist/signals/index.mjs +7 -7
  373. package/dist/{signals-CsxqD2AA.mjs → signals-BDkO0xcZ.mjs} +3 -3
  374. package/dist/{signals-CsxqD2AA.mjs.map → signals-BDkO0xcZ.mjs.map} +1 -1
  375. package/dist/{signin-Db08vl-g.mjs → signin-SVSXQw9i.mjs} +9 -9
  376. package/dist/{signin-Db08vl-g.mjs.map → signin-SVSXQw9i.mjs.map} +1 -1
  377. package/dist/{sso-oidc-CpLz_lIu.mjs → sso-oidc-B3Sagl43.mjs} +9 -9
  378. package/dist/{sso-oidc-CpLz_lIu.mjs.map → sso-oidc-B3Sagl43.mjs.map} +1 -1
  379. package/dist/{sts-BQefGuml.mjs → sts-CYeWec9i.mjs} +2 -2
  380. package/dist/{sts-Dgl0kH-t.mjs → sts-ClVtt-bV.mjs} +9 -9
  381. package/dist/{sts-Dgl0kH-t.mjs.map → sts-ClVtt-bV.mjs.map} +1 -1
  382. package/package.json +55 -55
  383. package/dist/dist-B9Afsv83.mjs.map +0 -1
  384. package/dist/dist-B9PkqWnN.mjs.map +0 -1
  385. package/dist/dist-BFjSQP7i.mjs.map +0 -1
  386. package/dist/dist-DzUJmIHt.mjs.map +0 -1
  387. package/dist/dist-cjs-3pon9kTt.mjs +0 -6
  388. package/dist/fonts-DhEQ5h6E.mjs.map +0 -1
  389. package/dist/index-CQcdKyxF.d.mts.map +0 -1
  390. package/dist/index-D1zaOwEU.d.mts.map +0 -1
  391. package/dist/index-J9CIK_nu.d.mts.map +0 -1
  392. package/dist/preview-engine/chunk-36YGYLKD.mjs +0 -58
  393. package/dist/preview-engine/chunk-5JD65JSJ.mjs +0 -110
  394. package/dist/preview-engine/chunk-7O24H4YT.mjs +0 -117
  395. package/dist/preview-engine/chunk-AG5JNZYQ.mjs +0 -8
  396. package/dist/preview-engine/chunk-AUFSM5KI.mjs +0 -141
  397. package/dist/preview-engine/chunk-BQ65MU6H.mjs +0 -138
  398. package/dist/preview-engine/chunk-BWDARDO6.mjs +0 -117
  399. package/dist/preview-engine/chunk-CNSHAFEA.mjs +0 -1
  400. package/dist/preview-engine/chunk-DLXQDDIN.mjs +0 -46
  401. package/dist/preview-engine/chunk-EJGLUZMW.mjs +0 -1
  402. package/dist/preview-engine/chunk-FE6RSVKZ.mjs +0 -73
  403. package/dist/preview-engine/chunk-HPIULG7P.mjs +0 -111
  404. package/dist/preview-engine/chunk-HRIKNYPF.mjs +0 -60
  405. package/dist/preview-engine/chunk-JPXQPP6J.mjs +0 -1
  406. package/dist/preview-engine/chunk-K52S5DJX.mjs +0 -109
  407. package/dist/preview-engine/chunk-MJM3NFEC.mjs +0 -315
  408. package/dist/preview-engine/chunk-NRHSNPZV.mjs +0 -182
  409. package/dist/preview-engine/chunk-OWOSYNMF.mjs +0 -104
  410. package/dist/preview-engine/chunk-QGBSLNFI.mjs +0 -52
  411. package/dist/preview-engine/chunk-QM3XFEJN.mjs +0 -63
  412. package/dist/preview-engine/chunk-QTKJXDIW.mjs +0 -997
  413. package/dist/preview-engine/chunk-R3ZH7YF3.mjs +0 -89
  414. package/dist/preview-engine/chunk-R6YNSBKL.mjs +0 -108
  415. package/dist/preview-engine/chunk-RNOO4UR5.mjs +0 -3
  416. package/dist/preview-engine/chunk-S4CSX6K5.mjs +0 -610
  417. package/dist/preview-engine/chunk-SNYAHQ25.mjs +0 -186
  418. package/dist/preview-engine/chunk-SRT2OCQW.mjs +0 -1
  419. package/dist/preview-engine/chunk-SUUUYXXT.mjs +0 -1
  420. package/dist/preview-engine/chunk-T6CC2KCZ.mjs +0 -418
  421. package/dist/preview-engine/chunk-T6COGNOW.mjs +0 -134
  422. package/dist/preview-engine/chunk-UC7CSW2A.mjs +0 -1
  423. package/dist/preview-engine/chunk-XFYXT76H.mjs +0 -52
  424. package/dist/preview-engine/chunk-XUM42I4R.mjs +0 -1
  425. package/dist/preview-engine/chunk-YITWSOG4.mjs +0 -103
  426. package/dist/preview-engine/chunk-ZDCA6NVT.mjs +0 -82
  427. package/dist/preview-engine/chunk-ZNGOAGAI.mjs +0 -1
  428. package/dist/preview-engine/renderers-27Q5X3U6.mjs +0 -1
  429. package/dist/preview-engine/renderers-32PIFHPS.mjs +0 -1
  430. package/dist/preview-engine/renderers-3Y3EMRDJ.mjs +0 -1
  431. package/dist/preview-engine/renderers-4AHH6BHF.mjs +0 -1
  432. package/dist/preview-engine/renderers-6PRVCTYV.mjs +0 -1
  433. package/dist/preview-engine/renderers-76PQY2SO.mjs +0 -1
  434. package/dist/preview-engine/renderers-7HNVXNAI.mjs +0 -248
  435. package/dist/preview-engine/renderers-B52QT6MT.mjs +0 -55
  436. package/dist/preview-engine/renderers-BE6RVJSE.mjs +0 -1
  437. package/dist/preview-engine/renderers-BMM2BH56.mjs +0 -1
  438. package/dist/preview-engine/renderers-CHJWUJVI.mjs +0 -1
  439. package/dist/preview-engine/renderers-CHOGQHVQ.mjs +0 -1
  440. package/dist/preview-engine/renderers-CI2GXWLP.mjs +0 -1
  441. package/dist/preview-engine/renderers-CRKRWR2Y.mjs +0 -1
  442. package/dist/preview-engine/renderers-DEYDSGJX.mjs +0 -1
  443. package/dist/preview-engine/renderers-DZTNRCR7.mjs +0 -1
  444. package/dist/preview-engine/renderers-EE2GFG7J.mjs +0 -1
  445. package/dist/preview-engine/renderers-ELO3KWTK.mjs +0 -1
  446. package/dist/preview-engine/renderers-F2KJNDWA.mjs +0 -124
  447. package/dist/preview-engine/renderers-FCV4COVB.mjs +0 -1
  448. package/dist/preview-engine/renderers-GJSUN5HU.mjs +0 -1
  449. package/dist/preview-engine/renderers-GXCRINGC.mjs +0 -1
  450. package/dist/preview-engine/renderers-IHKORHMT.mjs +0 -1
  451. package/dist/preview-engine/renderers-JA4SLMG3.mjs +0 -1
  452. package/dist/preview-engine/renderers-JLN77CFZ.mjs +0 -1
  453. package/dist/preview-engine/renderers-KBFW7B5F.mjs +0 -1
  454. package/dist/preview-engine/renderers-LJRJMFCR.mjs +0 -1
  455. package/dist/preview-engine/renderers-LPAPZ5QS.mjs +0 -1
  456. package/dist/preview-engine/renderers-NQUDQEHY.mjs +0 -1
  457. package/dist/preview-engine/renderers-NS3AIJVG.mjs +0 -1
  458. package/dist/preview-engine/renderers-NSY2SDIE.mjs +0 -1
  459. package/dist/preview-engine/renderers-PW4OJWHF.mjs +0 -120
  460. package/dist/preview-engine/renderers-PWLWOZY4.mjs +0 -1
  461. package/dist/preview-engine/renderers-Q3MD34JN.mjs +0 -1
  462. package/dist/preview-engine/renderers-RXGNA2Q7.mjs +0 -1
  463. package/dist/preview-engine/renderers-UGZUPONY.mjs +0 -1
  464. package/dist/preview-engine/renderers-VTTGFO55.mjs +0 -1
  465. package/dist/preview-engine/renderers-W3VVM5HB.mjs +0 -1
  466. package/dist/preview-engine/renderers-WG7QBD4D.mjs +0 -1
  467. package/dist/preview-engine/renderers-WLLJFZTF.mjs +0 -1
  468. package/dist/preview-engine/renderers-WN4SYFCU.mjs +0 -1
  469. package/dist/preview-engine/renderers-WSMLLSWX.mjs +0 -1
  470. package/dist/preview-engine/renderers-XFBSGTHU.mjs +0 -1
  471. package/dist/preview-engine/renderers-XFC6ZPO5.mjs +0 -1
  472. package/dist/preview-engine/renderers-XUHRY3XH.mjs +0 -1
  473. package/dist/preview-engine/renderers-YAOB5XU6.mjs +0 -1
  474. package/dist/preview-engine/renderers-YTB4FOHT.mjs +0 -1
  475. package/dist/program-xRfFoPxe.mjs.map +0 -1
  476. package/dist/renderer-6GeDT4Mx.mjs.map +0 -1
  477. package/dist/renderer-8qpGxSSO.mjs.map +0 -1
  478. package/dist/renderer-9wp5R7PL.mjs.map +0 -1
  479. package/dist/renderer-B2XzjK0z.mjs +0 -3
  480. package/dist/renderer-B4F6wL68.mjs +0 -3
  481. package/dist/renderer-B4i1jmiT.mjs +0 -3
  482. package/dist/renderer-B5ylY3uM.mjs +0 -3
  483. package/dist/renderer-BA8YwBRQ.mjs.map +0 -1
  484. package/dist/renderer-BGXbGqY4.mjs.map +0 -1
  485. package/dist/renderer-BM05sB8m.mjs.map +0 -1
  486. package/dist/renderer-BPw23wiR.mjs +0 -3
  487. package/dist/renderer-BREIjsUU.mjs.map +0 -1
  488. package/dist/renderer-BTu2EVhF.mjs +0 -3
  489. package/dist/renderer-BZmfKIom.mjs.map +0 -1
  490. package/dist/renderer-BfJSUjPN.mjs +0 -3
  491. package/dist/renderer-BgdkEFmv.mjs.map +0 -1
  492. package/dist/renderer-BghW-bSZ.mjs +0 -3
  493. package/dist/renderer-BpCxKWQm.mjs.map +0 -1
  494. package/dist/renderer-BtRfKx5N.mjs.map +0 -1
  495. package/dist/renderer-But0u-xi.mjs.map +0 -1
  496. package/dist/renderer-Bw3oZ9YT.mjs +0 -3
  497. package/dist/renderer-C-H680_l.mjs +0 -3
  498. package/dist/renderer-C2009W-_.mjs +0 -3
  499. package/dist/renderer-C36yoGXG.mjs +0 -3
  500. package/dist/renderer-CDLrNgfo.mjs +0 -3
  501. package/dist/renderer-CIYcdZuZ.mjs.map +0 -1
  502. package/dist/renderer-CJNyhr_S.mjs.map +0 -1
  503. package/dist/renderer-CL3evUmF.mjs +0 -3
  504. package/dist/renderer-CM1_2ZWA.mjs +0 -3
  505. package/dist/renderer-CNF10fCq.mjs.map +0 -1
  506. package/dist/renderer-CQdVj2JS.mjs +0 -3
  507. package/dist/renderer-CQiTodg9.mjs +0 -337
  508. package/dist/renderer-CQiTodg9.mjs.map +0 -1
  509. package/dist/renderer-CWlzudP8.mjs +0 -3
  510. package/dist/renderer-CZgB5st8.mjs +0 -3
  511. package/dist/renderer-CcU7dVn9.mjs.map +0 -1
  512. package/dist/renderer-Cd5vzrGs.mjs +0 -3
  513. package/dist/renderer-CeJ_vDXI.mjs +0 -3
  514. package/dist/renderer-CepMDQ06.mjs.map +0 -1
  515. package/dist/renderer-CfeoxM_3.mjs.map +0 -1
  516. package/dist/renderer-CjY77sB_.mjs +0 -3
  517. package/dist/renderer-CkykdR_D.mjs +0 -3
  518. package/dist/renderer-CoZKST2Y.mjs.map +0 -1
  519. package/dist/renderer-CpkiHRhh.mjs.map +0 -1
  520. package/dist/renderer-CroHPOsX.mjs.map +0 -1
  521. package/dist/renderer-CtVkU_GA.mjs +0 -44
  522. package/dist/renderer-CtVkU_GA.mjs.map +0 -1
  523. package/dist/renderer-CzPWB0Ss.mjs.map +0 -1
  524. package/dist/renderer-D-4Yh-RK.mjs.map +0 -1
  525. package/dist/renderer-D2XD4QYk.mjs.map +0 -1
  526. package/dist/renderer-D5Z6mda5.mjs +0 -3
  527. package/dist/renderer-D7ztfQHX.mjs.map +0 -1
  528. package/dist/renderer-D7zvPHKn.mjs.map +0 -1
  529. package/dist/renderer-D9NnIx7o.mjs +0 -3
  530. package/dist/renderer-DAMJZNtX.mjs.map +0 -1
  531. package/dist/renderer-DCJa7OGk.mjs +0 -3
  532. package/dist/renderer-DCkSR2Ne.mjs.map +0 -1
  533. package/dist/renderer-DEJwPRkR.mjs.map +0 -1
  534. package/dist/renderer-DGwSl7g1.mjs +0 -3
  535. package/dist/renderer-DNNqpK7t.mjs.map +0 -1
  536. package/dist/renderer-DNoRNfMm.mjs +0 -3
  537. package/dist/renderer-DOZ8bpyY.mjs +0 -3
  538. package/dist/renderer-DRHyRNU8.mjs +0 -3
  539. package/dist/renderer-DTvfYkI9.mjs.map +0 -1
  540. package/dist/renderer-DYm4duFr.mjs.map +0 -1
  541. package/dist/renderer-DZGtBUCx.mjs.map +0 -1
  542. package/dist/renderer-D_1oDOCP.mjs.map +0 -1
  543. package/dist/renderer-DdVBt8Rz.mjs.map +0 -1
  544. package/dist/renderer-DjTiNeAp.mjs.map +0 -1
  545. package/dist/renderer-Dju9CaeL.mjs.map +0 -1
  546. package/dist/renderer-DlD85Xoi.mjs +0 -3
  547. package/dist/renderer-Dr0bgOrW.mjs +0 -3
  548. package/dist/renderer-DurtG-Hc.mjs +0 -3
  549. package/dist/renderer-DxtHmyAa.mjs.map +0 -1
  550. package/dist/renderer-_bygZSKk.mjs.map +0 -1
  551. package/dist/renderer-_uvdg48N.mjs.map +0 -1
  552. package/dist/renderer-d5-F_48R.mjs +0 -3
  553. package/dist/renderer-eFv9HBmL.mjs +0 -3
  554. package/dist/renderer-ho_jXJ0H.mjs.map +0 -1
  555. package/dist/renderer-iuV6wQoL.mjs +0 -4
  556. package/dist/renderer-jkZ_IQnW.mjs.map +0 -1
  557. package/dist/renderer-n-uuWPF4.mjs +0 -3
  558. package/dist/renderer-rzccTFuY.mjs +0 -3
  559. package/dist/renderer-wVldKtFU.mjs.map +0 -1
  560. package/dist/renderer-xKOVmd2O.mjs.map +0 -1
  561. package/dist/renderer-y9eGFPFL.mjs +0 -3
  562. /package/dist/{renderer-C2n-EHxg.mjs → renderer-B-BcgA6d.mjs} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"program-xRfFoPxe.mjs","names":["LayerAnimation","CameraAnimation","AdvancedTextAnimatorBuilder","TextPathBuilder","TextAnimatorBuilder","z$1","Scene","Sequence"],"sources":["../../compositions/dist/program/index.mjs"],"sourcesContent":["import { createVirtualMedia, getActiveMediaMetadata } from \"@framefields/core\";\nimport { ColorSchema } from \"@framefields/node-sdk\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\nimport { loadYoga } from \"yoga-layout/load\";\nimport { z } from \"zod\";\n\n//#region src/utils/layout/resolve-layout.ts\nlet yogaInstance = null;\n/**\n* Ensure the Yoga WASM module is loaded. Safe to call multiple times —\n* subsequent calls return the cached instance immediately.\n*/\nasync function initLayout() {\n\tif (yogaInstance) return yogaInstance;\n\tyogaInstance = await loadYoga();\n\treturn yogaInstance;\n}\nfunction mapJustify(yoga, value) {\n\tswitch (value) {\n\t\tcase \"center\": return yoga.JUSTIFY_CENTER;\n\t\tcase \"end\": return yoga.JUSTIFY_FLEX_END;\n\t\tcase \"space-between\": return yoga.JUSTIFY_SPACE_BETWEEN;\n\t\tcase \"space-around\": return yoga.JUSTIFY_SPACE_AROUND;\n\t\tdefault: return yoga.JUSTIFY_FLEX_START;\n\t}\n}\nfunction mapAlign(yoga, value) {\n\tswitch (value) {\n\t\tcase \"center\": return yoga.ALIGN_CENTER;\n\t\tcase \"end\": return yoga.ALIGN_FLEX_END;\n\t\tcase \"stretch\": return yoga.ALIGN_STRETCH;\n\t\tdefault: return yoga.ALIGN_FLEX_START;\n\t}\n}\nfunction mapAlignSelf(yoga, value) {\n\tswitch (value) {\n\t\tcase \"start\": return yoga.ALIGN_FLEX_START;\n\t\tcase \"center\": return yoga.ALIGN_CENTER;\n\t\tcase \"end\": return yoga.ALIGN_FLEX_END;\n\t\tcase \"stretch\": return yoga.ALIGN_STRETCH;\n\t\tcase \"baseline\": return yoga.ALIGN_BASELINE;\n\t\tdefault: return yoga.ALIGN_AUTO;\n\t}\n}\nfunction toYogaValue(val) {\n\tif (val === void 0 || val === null) return void 0;\n\tif (typeof val === \"number\" || typeof val === \"string\") return val;\n\tif (typeof val === \"object\") {\n\t\tif (\"unit\" in val && typeof val.unit === \"number\") return val;\n\t\tconst num = Number(val);\n\t\tif (!Number.isNaN(num)) return num;\n\t}\n}\n/** Container main dir; leaves return null. */\nfunction dirOf(node) {\n\tswitch (node.kind) {\n\t\tcase \"flex\": return node.dir ?? \"row\";\n\t\tcase \"block\": return \"column\";\n\t\tcase \"box\": return node.children && node.children.length > 0 ? \"column\" : null;\n\t\tdefault: return null;\n\t}\n}\n/** Container default width spec (block fills like HTML). */\nfunction defaultWidthSpec(node) {\n\tif (node.kind === \"block\") return \"fill\";\n}\nfunction containerStyle(node) {\n\tlet gap = 0;\n\tif (node.kind === \"flex\" || node.kind === \"block\") {\n\t\tconst g = toYogaValue(node.gap);\n\t\tgap = typeof g === \"number\" ? g : 0;\n\t}\n\tlet padding = 0;\n\tif (node.kind === \"flex\" || node.kind === \"block\" || node.kind === \"box\" || node.kind === \"text\") {\n\t\tconst p = toYogaValue(node.padding);\n\t\tpadding = typeof p === \"number\" ? p : 0;\n\t}\n\tlet justify = \"start\";\n\tif (node.kind === \"flex\") justify = node.justify ?? \"start\";\n\tlet align = \"start\";\n\tif (node.kind === \"flex\" || node.kind === \"block\") align = node.align ?? \"start\";\n\tlet wrap = false;\n\tif (node.kind === \"flex\") wrap = typeof node.wrap === \"boolean\" ? node.wrap : false;\n\treturn {\n\t\tgap,\n\t\tpadding,\n\t\tjustify,\n\t\talign,\n\t\twrap\n\t};\n}\nfunction isAbsolutePositioned(layoutNode) {\n\tconst node = layoutNode;\n\treturn node.position === \"absolute\" || node.position === void 0 && (node.x !== void 0 || node.y !== void 0);\n}\n/** Flow children (non-absolute). */\nfunction flowChildren(node) {\n\tif (\"children\" in node && node.children) return node.children.filter((c) => !isAbsolutePositioned(c));\n\treturn [];\n}\nfunction absoluteChildren(node) {\n\tif (\"children\" in node && node.children) return node.children.filter((c) => isAbsolutePositioned(c));\n\treturn [];\n}\nfunction buildYogaNode(yoga, layoutNode, parentExtent, measure, parentDir) {\n\tconst node = layoutNode;\n\tconst yn = yoga.Node.create();\n\tconst dir = dirOf(node);\n\tconst isContainer = dir !== null;\n\tconst children = [];\n\tif (isAbsolutePositioned(node)) {\n\t\tyn.setPositionType(yoga.POSITION_TYPE_ABSOLUTE);\n\t\tconst posX = toYogaValue(node.x);\n\t\tconst posY = toYogaValue(node.y);\n\t\tif (posX !== void 0) yn.setPosition(yoga.EDGE_LEFT, posX);\n\t\tif (posY !== void 0) yn.setPosition(yoga.EDGE_TOP, posY);\n\t} else yn.setPositionType(yoga.POSITION_TYPE_RELATIVE);\n\tconst grow = toYogaValue(node.grow);\n\tif (grow !== void 0) yn.setFlexGrow(typeof grow === \"number\" ? grow : parseFloat(grow));\n\tconst flexShrink = toYogaValue(node.flexShrink);\n\tif (flexShrink !== void 0) yn.setFlexShrink(typeof flexShrink === \"number\" ? flexShrink : parseFloat(flexShrink));\n\telse yn.setFlexShrink(parentDir !== null ? 1 : 0);\n\tif (node.flexBasis !== void 0) yn.setFlexBasis(node.flexBasis);\n\tif (node.alignSelf !== void 0) yn.setAlignSelf(mapAlignSelf(yoga, node.alignSelf));\n\tconst wSpec = node.width ?? defaultWidthSpec(node);\n\tconst hSpec = node.height;\n\tconst isWidthMain = parentDir === \"row\";\n\tconst isHeightMain = parentDir === \"column\";\n\tapplySizeSpec(yn, \"width\", wSpec, parentExtent?.width, isWidthMain);\n\tapplySizeSpec(yn, \"height\", hSpec, parentExtent?.height, isHeightMain);\n\tif (isContainer) {\n\t\tconst cs = containerStyle(node);\n\t\tyn.setFlexDirection(dir === \"row\" ? yoga.FLEX_DIRECTION_ROW : yoga.FLEX_DIRECTION_COLUMN);\n\t\tyn.setJustifyContent(mapJustify(yoga, cs.justify));\n\t\tyn.setAlignItems(mapAlign(yoga, cs.align));\n\t\tyn.setFlexWrap(cs.wrap ? yoga.WRAP_WRAP : yoga.WRAP_NO_WRAP);\n\t\tif (cs.padding > 0) yn.setPadding(yoga.EDGE_ALL, cs.padding);\n\t\tif (cs.gap > 0) yn.setGap(yoga.GUTTER_ALL, cs.gap);\n\t\tconst flow = flowChildren(node);\n\t\tconst abs = absoluteChildren(node);\n\t\tconst allChildren = [...flow, ...abs];\n\t\tfor (let i = 0; i < allChildren.length; i++) {\n\t\t\tconst childMapping = buildYogaNode(yoga, allChildren[i], void 0, measure, isAbsolutePositioned(node) ? null : dir);\n\t\t\tyn.insertChild(childMapping.yogaNode, i);\n\t\t\tchildren.push(childMapping);\n\t\t}\n\t} else if (node.kind === \"text\" || node.kind === \"media\" && node.dataType === \"Caption\") yn.setMeasureFunc((width, widthMode, height, heightMode) => {\n\t\tlet constraintWidth;\n\t\tif (widthMode === 1 || widthMode === 2) constraintWidth = width;\n\t\tconst measured = measure?.(node, constraintWidth) ?? {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t\tlet resolvedWidth = measured.width;\n\t\tlet resolvedHeight = measured.height;\n\t\tif (widthMode === 1) resolvedWidth = width;\n\t\tif (heightMode === 1) resolvedHeight = height;\n\t\treturn {\n\t\t\twidth: resolvedWidth,\n\t\t\theight: resolvedHeight\n\t\t};\n\t});\n\telse {\n\t\tconst measured = measure?.(node) ?? null;\n\t\tif (measured) {\n\t\t\tconst hasRatio = node.aspectRatio !== void 0;\n\t\t\tconst isCaption = node.dataType === \"Caption\";\n\t\t\tconst intrinsicRatio = measured.height > 0 ? measured.width / measured.height : 1;\n\t\t\tif (node.kind === \"media\" && !isCaption && !hasRatio) yn.setAspectRatio(intrinsicRatio);\n\t\t\tconst isWAuto = wSpec === void 0 || wSpec === \"auto\" || wSpec === \"fit\";\n\t\t\tconst isHAuto = hSpec === void 0 || hSpec === \"auto\" || hSpec === \"fit\";\n\t\t\tif (isWAuto && isHAuto) {\n\t\t\t\tconst ar = node.aspectRatio ?? (node.kind === \"media\" ? intrinsicRatio : void 0) ?? 1;\n\t\t\t\tyn.setMeasureFunc((width, widthMode, height, heightMode) => {\n\t\t\t\t\tlet resW = measured.width;\n\t\t\t\t\tlet resH = measured.height;\n\t\t\t\t\tif (widthMode === 1 && heightMode === 1) {\n\t\t\t\t\t\tresW = width;\n\t\t\t\t\t\tresH = height;\n\t\t\t\t\t} else if (widthMode === 1) {\n\t\t\t\t\t\tresW = width;\n\t\t\t\t\t\tresH = ar > 0 ? Math.round(width / ar) : measured.height;\n\t\t\t\t\t} else if (heightMode === 1) {\n\t\t\t\t\t\tresH = height;\n\t\t\t\t\t\tresW = ar > 0 ? Math.round(height * ar) : measured.width;\n\t\t\t\t\t} else if (widthMode === 2 && heightMode === 2) {\n\t\t\t\t\t\tconst scale = Math.min(1, width / measured.width, height / measured.height);\n\t\t\t\t\t\tresW = Math.round(measured.width * scale);\n\t\t\t\t\t\tresH = Math.round(measured.height * scale);\n\t\t\t\t\t} else if (widthMode === 2) {\n\t\t\t\t\t\tif (measured.width > width) {\n\t\t\t\t\t\t\tresW = width;\n\t\t\t\t\t\t\tresH = ar > 0 ? Math.round(width / ar) : measured.height;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (heightMode === 2) {\n\t\t\t\t\t\tif (measured.height > height) {\n\t\t\t\t\t\t\tresH = height;\n\t\t\t\t\t\t\tresW = ar > 0 ? Math.round(height * ar) : measured.width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\twidth: resW,\n\t\t\t\t\t\theight: resH\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t} else if (isWAuto) {\n\t\t\t\tconst ar = node.aspectRatio ?? (node.kind === \"media\" ? intrinsicRatio : void 0);\n\t\t\t\tif (ar === void 0 || ar <= 0) yn.setWidth(measured.width);\n\t\t\t} else if (isHAuto) {\n\t\t\t\tconst ar = node.aspectRatio ?? (node.kind === \"media\" ? intrinsicRatio : void 0);\n\t\t\t\tif (ar === void 0 || ar <= 0) yn.setHeight(measured.height);\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tyogaNode: yn,\n\t\tlayoutNode: node,\n\t\tchildren\n\t};\n}\nfunction applySizeSpec(yn, dim, spec, parentExtent, isFlexChild) {\n\tif (spec === void 0 || spec === \"auto\" || spec === \"fit\") return;\n\tconst resolvedSpec = toYogaValue(spec);\n\tif (typeof resolvedSpec === \"number\") {\n\t\tif (dim === \"width\") yn.setWidth(resolvedSpec);\n\t\telse yn.setHeight(resolvedSpec);\n\t\treturn;\n\t}\n\tif (resolvedSpec === \"fill\") {\n\t\tif (isFlexChild) {\n\t\t\tif (yn.getFlexGrow() === 0) yn.setFlexGrow(1);\n\t\t\tyn.setFlexBasis(0);\n\t\t\treturn;\n\t\t}\n\t\tif (parentExtent !== void 0) if (dim === \"width\") yn.setWidth(parentExtent);\n\t\telse yn.setHeight(parentExtent);\n\t\telse if (dim === \"width\") yn.setWidthPercent(100);\n\t\telse yn.setHeightPercent(100);\n\t}\n}\nfunction readLayout(mapping, parentX, parentY, rects, sizes) {\n\tconst layout = mapping.yogaNode.getComputedLayout();\n\tlet x = parentX + layout.left;\n\tlet y = parentY + layout.top;\n\tconst width = layout.width;\n\tconst height = layout.height;\n\tconst node = mapping.layoutNode;\n\tif (!isAbsolutePositioned(node)) {\n\t\tx += Number(node.x ?? 0);\n\t\ty += Number(node.y ?? 0);\n\t}\n\trects[mapping.layoutNode.id] = {\n\t\tx: Math.round(x * 1e3) / 1e3,\n\t\ty: Math.round(y * 1e3) / 1e3,\n\t\twidth: Math.round(width * 1e3) / 1e3,\n\t\theight: Math.round(height * 1e3) / 1e3\n\t};\n\tsizes[mapping.layoutNode.id] = {\n\t\twidth: Math.round(width * 1e3) / 1e3,\n\t\theight: Math.round(height * 1e3) / 1e3\n\t};\n\tfor (const child of mapping.children) readLayout(child, x, y, rects, sizes);\n}\nfunction freeYogaTree(mapping) {\n\tfor (const child of mapping.children) freeYogaTree(child);\n\tmapping.yogaNode.free();\n}\n/** Deterministic layout (synchronous): document + viewport (+ measure) → rects. */\nfunction computeLayoutSync(yoga, input) {\n\tconst { layout, viewport, measure } = input;\n\tconst rects = {};\n\tconst sizesMap = {};\n\tfor (const root of layout) {\n\t\tconst wrapperNode = yoga.Node.create();\n\t\twrapperNode.setWidth(viewport.width);\n\t\twrapperNode.setHeight(viewport.height);\n\t\twrapperNode.setFlexDirection(yoga.FLEX_DIRECTION_COLUMN);\n\t\tconst mapping = buildYogaNode(yoga, root, {\n\t\t\twidth: viewport.width,\n\t\t\theight: viewport.height\n\t\t}, measure, null);\n\t\twrapperNode.insertChild(mapping.yogaNode, 0);\n\t\twrapperNode.calculateLayout(viewport.width, viewport.height);\n\t\tconst rootLayout = mapping.yogaNode.getComputedLayout();\n\t\tconst isRootAbsolute = root.position === \"absolute\" || root.position === void 0 && (root.x !== void 0 || root.y !== void 0);\n\t\tconst rootX = isRootAbsolute ? rootLayout.left : Number(root.x ?? 0);\n\t\tconst rootY = isRootAbsolute ? rootLayout.top : Number(root.y ?? 0);\n\t\trects[root.id] = {\n\t\t\tx: Math.round(rootX * 1e3) / 1e3,\n\t\t\ty: Math.round(rootY * 1e3) / 1e3,\n\t\t\twidth: Math.round(rootLayout.width * 1e3) / 1e3,\n\t\t\theight: Math.round(rootLayout.height * 1e3) / 1e3\n\t\t};\n\t\tsizesMap[root.id] = {\n\t\t\twidth: Math.round(rootLayout.width * 1e3) / 1e3,\n\t\t\theight: Math.round(rootLayout.height * 1e3) / 1e3\n\t\t};\n\t\tfor (const child of mapping.children) readLayout(child, rootX, rootY, rects, sizesMap);\n\t\tfreeYogaTree(mapping);\n\t\twrapperNode.free();\n\t}\n\treturn {\n\t\trects,\n\t\tsizes: sizesMap\n\t};\n}\n/** Deterministic layout: document + viewport (+ measure) → rects. */\nasync function computeLayout(input) {\n\treturn computeLayoutSync(await initLayout(), input);\n}\n\n//#endregion\n//#region src/program/inline-signals.ts\n/**\n* Inline signal objects on animation tracks.\n*\n* `LayerAnimation.signal(prop, Signal.fromArray(...))` binds a track to a\n* signal object instead of a name registered with `comp.addSignal`. The spec\n* stays plain data: the track's `inputHandleId` gets a generated name and the\n* object rides on the source under a non-enumerable symbol (invisible to JSON,\n* zod and hashing). `compositorToProgram` walks the layout and folds those\n* objects into the program's `signals` map under their generated names, so\n* every evaluator (which only looks signals up by name) sees them.\n*/\nconst INLINE_SIGNAL = Symbol.for(\"framefields.inlineSignal\");\nconst handleIds = /* @__PURE__ */ new WeakMap();\nlet nextHandle = 0;\n/**\n* The generated handle id for a signal object. The same object always gets\n* the same id, so reusing one signal across tracks registers it once.\n*/\nfunction inlineSignalHandleId(signal) {\n\tlet id = handleIds.get(signal);\n\tif (id === void 0) {\n\t\tid = `inline_signal_${nextHandle++}`;\n\t\thandleIds.set(signal, id);\n\t}\n\treturn id;\n}\n/**\n* Resolves the `signalOrHandleId` argument of `LayerAnimation.signal` /\n* `colorSignal` to a handle id, plus the signal object to carry inline (when\n* it is not a registered name).\n*/\nfunction resolveSignalArg(signalOrHandleId) {\n\tif (typeof signalOrHandleId === \"string\") return { handleId: signalOrHandleId };\n\tif (signalOrHandleId === null || typeof signalOrHandleId !== \"object\" && typeof signalOrHandleId !== \"function\") throw new TypeError(`LayerAnimation.signal: expected a signal object or a signal name, got ${String(signalOrHandleId)}. Pass a signal (Signal.fromArray / Signal.builder / an audio channel …) or register it with comp.addSignal(name, signal) and pass the name.`);\n\tconst obj = signalOrHandleId;\n\tif (typeof obj.inputHandleId === \"string\") return { handleId: obj.inputHandleId };\n\tif (typeof obj.gpuBinding?.nodeId === \"string\") return typeof obj.get === \"function\" ? {\n\t\thandleId: obj.gpuBinding.nodeId,\n\t\tinline: signalOrHandleId\n\t} : { handleId: obj.gpuBinding.nodeId };\n\treturn {\n\t\thandleId: inlineSignalHandleId(signalOrHandleId),\n\t\tinline: signalOrHandleId\n\t};\n}\n/** Attaches an inline signal object to a track source without making it enumerable. */\nfunction attachInlineSignal(source, signal) {\n\tObject.defineProperty(source, INLINE_SIGNAL, {\n\t\tvalue: signal,\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t\twritable: true\n\t});\n}\n/** The inline signal object carried by a track source, if any. */\nfunction getInlineSignal(source) {\n\tif (!source || typeof source !== \"object\") return void 0;\n\treturn source[INLINE_SIGNAL];\n}\n/**\n* Collects every inline signal object under `nodes` (animation tracks of each\n* node, recursing into `children`) keyed by its generated handle id.\n*/\nfunction collectInlineSignals(nodes, out = {}) {\n\tfor (const node of nodes) {\n\t\tif (!node || typeof node !== \"object\") continue;\n\t\tconst { animation, children } = node;\n\t\tconst tracks = animation?.tracks;\n\t\tif (Array.isArray(tracks)) for (const track of tracks) {\n\t\t\tconst source = track?.source;\n\t\t\tconst signal = getInlineSignal(source);\n\t\t\tif (signal && typeof source?.inputHandleId === \"string\") out[source.inputHandleId] = signal;\n\t\t}\n\t\tif (Array.isArray(children)) collectInlineSignals(children, out);\n\t}\n\treturn out;\n}\n\n//#endregion\n//#region src/program/animation.ts\nfunction evaluateEasingProgress(ease, t) {\n\tif (!ease) return t;\n\tconst ref = parseEase(ease);\n\tif (!ref || ref.name === \"none\") return t;\n\tconst { name, dir, params } = ref;\n\tconst s = Math.max(0, Math.min(1, t));\n\tconst applyDir = (fn) => {\n\t\tif (dir === \"in\") return fn(s);\n\t\tif (dir === \"out\") return 1 - fn(1 - s);\n\t\treturn s < .5 ? fn(s * 2) / 2 : 1 - fn((1 - s) * 2) / 2;\n\t};\n\tswitch (name) {\n\t\tcase \"power1\": return applyDir((x) => x * x);\n\t\tcase \"power2\": return applyDir((x) => x * x * x);\n\t\tcase \"power3\": return applyDir((x) => x * x * x * x);\n\t\tcase \"sine\": return applyDir((x) => 1 - Math.cos(x * Math.PI / 2));\n\t\tcase \"circ\": return applyDir((x) => 1 - Math.sqrt(Math.max(0, 1 - x * x)));\n\t\tcase \"expo\": return applyDir((x) => x === 0 ? 0 : 2 ** (10 * (x - 1)));\n\t\tcase \"back\": {\n\t\t\tconst c1 = params?.[0] ?? 1.70158;\n\t\t\tconst c3 = c1 + 1;\n\t\t\treturn applyDir((x) => c3 * x * x * x - c1 * x * x);\n\t\t}\n\t\tcase \"bounce\": {\n\t\t\tconst bounceOut = (x) => {\n\t\t\t\tconst n1 = 7.5625;\n\t\t\t\tconst d1 = 2.75;\n\t\t\t\tif (x < 1 / d1) return n1 * x * x;\n\t\t\t\tif (x < 2 / d1) {\n\t\t\t\t\tconst x2$1 = x - 1.5 / d1;\n\t\t\t\t\treturn n1 * x2$1 * x2$1 + .75;\n\t\t\t\t}\n\t\t\t\tif (x < 2.5 / d1) {\n\t\t\t\t\tconst x2$1 = x - 2.25 / d1;\n\t\t\t\t\treturn n1 * x2$1 * x2$1 + .9375;\n\t\t\t\t}\n\t\t\t\tconst x2 = x - 2.625 / d1;\n\t\t\t\treturn n1 * x2 * x2 + .984375;\n\t\t\t};\n\t\t\tif (dir === \"out\") return bounceOut(s);\n\t\t\tif (dir === \"in\") return 1 - bounceOut(1 - s);\n\t\t\treturn s < .5 ? (1 - bounceOut(1 - 2 * s)) / 2 : (1 + bounceOut(2 * s - 1)) / 2;\n\t\t}\n\t\tdefault: return s;\n\t}\n}\nfunction parseEase(ease) {\n\tif (!ease) return void 0;\n\tif (typeof ease === \"object\" && \"name\" in ease && \"dir\" in ease) return ease;\n\tif (typeof ease === \"string\") {\n\t\tconst trimmed = ease.trim();\n\t\tconst match = trimmed.match(/^([a-zA-Z0-9]+)(?:\\.([a-zA-Z]+))?(?:\\(([^)]+)\\))?$/);\n\t\tif (match) {\n\t\t\tconst rawName$1 = match[1].toLowerCase();\n\t\t\tconst name$1 = rawName$1 === \"linear\" ? \"none\" : rawName$1;\n\t\t\tconst rawDir$1 = (match[2] || \"out\").toLowerCase();\n\t\t\tlet dir$1 = \"out\";\n\t\t\tif (rawDir$1 === \"in\") dir$1 = \"in\";\n\t\t\telse if (rawDir$1 === \"out\") dir$1 = \"out\";\n\t\t\telse if (rawDir$1 === \"inout\") dir$1 = \"inOut\";\n\t\t\tlet params;\n\t\t\tif (match[3]) params = match[3].split(\",\").map((s) => Number.parseFloat(s.trim())).filter((n) => !Number.isNaN(n));\n\t\t\treturn {\n\t\t\t\tname: name$1,\n\t\t\t\tdir: dir$1,\n\t\t\t\t...params && params.length > 0 ? { params } : {}\n\t\t\t};\n\t\t}\n\t\tconst dotIdx = trimmed.indexOf(\".\");\n\t\tif (dotIdx === -1) {\n\t\t\tconst raw = trimmed.toLowerCase();\n\t\t\treturn {\n\t\t\t\tname: raw === \"linear\" ? \"none\" : raw,\n\t\t\t\tdir: \"out\"\n\t\t\t};\n\t\t}\n\t\tconst rawName = trimmed.slice(0, dotIdx).toLowerCase();\n\t\tconst name = rawName === \"linear\" ? \"none\" : rawName;\n\t\tconst rawDir = trimmed.slice(dotIdx + 1).toLowerCase();\n\t\tlet dir = \"out\";\n\t\tif (rawDir === \"in\") dir = \"in\";\n\t\telse if (rawDir === \"out\") dir = \"out\";\n\t\telse if (rawDir === \"inout\") dir = \"inOut\";\n\t\treturn {\n\t\t\tname,\n\t\t\tdir\n\t\t};\n\t}\n}\n/**\n* Fluent builder and runtime representation for layer animations.\n* Supports chainable keyframes, reactive signal binding, Perlin wiggles, and springs.\n*/\nvar LayerAnimation = class LayerAnimation {\n\ttracks = [];\n\tconstructor(tracks = []) {\n\t\tthis.tracks = [...tracks];\n\t}\n\tstatic create() {\n\t\treturn new LayerAnimation();\n\t}\n\tstatic fromTo(prop, fromValue, toValue, options = {}) {\n\t\treturn new LayerAnimation().fromTo(prop, fromValue, toValue, options);\n\t}\n\t/** A track from a list of `[frame, value, ease?]` keyframes; see {@link LayerAnimation.keys}. */\n\tstatic keys(prop, keyframes) {\n\t\treturn new LayerAnimation().keys(prop, keyframes);\n\t}\n\tstatic signal(prop, signalOrHandleId, options = {}) {\n\t\treturn new LayerAnimation().signal(prop, signalOrHandleId, options);\n\t}\n\tstatic colorSignal(prop, signalOrHandleId, options) {\n\t\treturn new LayerAnimation().colorSignal(prop, signalOrHandleId, options);\n\t}\n\tstatic kineticSweep(fromOffset = -1, toOffset = 1, startFrame = 0, endFrame = 24, ease = \"power2.out\") {\n\t\treturn new LayerAnimation().kineticSweep(fromOffset, toOffset, startFrame, endFrame, ease);\n\t}\n\tstatic typewriter(startFrame = 0, endFrame = 30, ease = \"linear\") {\n\t\treturn new LayerAnimation().typewriter(startFrame, endFrame, ease);\n\t}\n\tstatic letterSpacing(fromSpacing, toSpacing, startFrame = 0, endFrame = 24, ease = \"power2.out\") {\n\t\treturn new LayerAnimation().letterSpacing(fromSpacing, toSpacing, startFrame, endFrame, ease);\n\t}\n\tstatic wiggle(prop, options = {}) {\n\t\treturn new LayerAnimation().wiggle(prop, options);\n\t}\n\tstatic spring(prop, options = {}) {\n\t\treturn new LayerAnimation().spring(prop, options);\n\t}\n\tstatic firstMargin(fromMargin, toMargin, options = {}) {\n\t\treturn new LayerAnimation().firstMargin(fromMargin, toMargin, options);\n\t}\n\tstatic strokeWidth(fromWidth, toWidth, options = {}) {\n\t\treturn new LayerAnimation().fromTo(\"strokeWidth\", fromWidth, toWidth, options);\n\t}\n\tstatic rotateX(fromAngle, toAngle, options = {}) {\n\t\treturn new LayerAnimation().fromTo(\"rotateX\", fromAngle, toAngle, options);\n\t}\n\tstatic rotateY(fromAngle, toAngle, options = {}) {\n\t\treturn new LayerAnimation().fromTo(\"rotateY\", fromAngle, toAngle, options);\n\t}\n\tstatic rotateZ(fromAngle, toAngle, options = {}) {\n\t\treturn new LayerAnimation().fromTo(\"rotateZ\", fromAngle, toAngle, options);\n\t}\n\tstatic rotation(fromAngle, toAngle, options = {}) {\n\t\treturn new LayerAnimation().fromTo(\"rotation\", fromAngle, toAngle, options);\n\t}\n\taddTrack(track) {\n\t\tthis.tracks.push(track);\n\t\treturn this;\n\t}\n\t/**\n\t* Creates a keyframed track animating from fromValue to toValue.\n\t*/\n\tfromTo(prop, fromValue, toValue, options = {}) {\n\t\tconst start = options.from ?? options.start ?? options.fromFrame ?? 0;\n\t\tconst end = options.to ?? options.end ?? options.toFrame ?? (options.durationFrames !== void 0 ? start + options.durationFrames : start + 24);\n\t\tconst ease = parseEase(options.ease);\n\t\tlet track = this.tracks.find((t) => t.prop === prop && (!t.source || t.source.type === \"keyframe\"));\n\t\tif (!track) {\n\t\t\ttrack = {\n\t\t\t\tid: `${prop}_fromTo_${this.tracks.length}`,\n\t\t\t\tprop,\n\t\t\t\tkeyframes: []\n\t\t\t};\n\t\t\tthis.tracks.push(track);\n\t\t}\n\t\tconst id = track.id;\n\t\tif (track.keyframes.length === 0 && start > 0) track.keyframes.push({\n\t\t\tid: `${id}_k0`,\n\t\t\tframe: 0,\n\t\t\tvalue: fromValue\n\t\t});\n\t\tif (track.keyframes.length === 0 || track.keyframes[track.keyframes.length - 1].frame < start) track.keyframes.push({\n\t\t\tid: `${id}_k_${start}`,\n\t\t\tframe: start,\n\t\t\tvalue: fromValue\n\t\t});\n\t\ttrack.keyframes.push({\n\t\t\tid: `${id}_k_${end}`,\n\t\t\tframe: end,\n\t\t\tvalue: toValue,\n\t\t\t...ease && { ease }\n\t\t});\n\t\ttrack.keyframes.sort((a, b) => a.frame - b.frame);\n\t\treturn this;\n\t}\n\t/**\n\t* Appends a keyframe to an existing track for prop, or creates a new track.\n\t*/\n\tkeyframe(prop, frame, value, ease) {\n\t\tlet track = this.tracks.find((t) => t.prop === prop && (!t.source || t.source.type === \"keyframe\"));\n\t\tif (!track) {\n\t\t\ttrack = {\n\t\t\t\tid: `${prop}_track_${this.tracks.length}`,\n\t\t\t\tprop,\n\t\t\t\tkeyframes: []\n\t\t\t};\n\t\t\tthis.tracks.push(track);\n\t\t}\n\t\tconst parsedEase = parseEase(ease);\n\t\ttrack.keyframes.push({\n\t\t\tid: `k_${track.keyframes.length}_f${frame}`,\n\t\t\tframe,\n\t\t\tvalue,\n\t\t\t...parsedEase && { ease: parsedEase }\n\t\t});\n\t\ttrack.keyframes.sort((a, b) => a.frame - b.frame);\n\t\treturn this;\n\t}\n\t/**\n\t* Adds several keyframes to prop's track at once:\n\t* `.keys(\"scale\", [[0, 0], [12, 1.1, \"back.out\"], [20, 1]])`.\n\t* Frames are rounded to whole frames, so beat math can be passed straight in.\n\t*/\n\tkeys(prop, keyframes) {\n\t\tfor (const [frame, value, ease] of keyframes) this.keyframe(prop, Math.round(frame), value, ease);\n\t\treturn this;\n\t}\n\t/**\n\t* Animates opacity from 0 to 1 between startFrame and endFrame.\n\t*/\n\tfadeIn(startFrame = 0, endFrame = 20, ease = \"power2.out\") {\n\t\treturn this.fromTo(\"opacity\", 0, 1, {\n\t\t\tfrom: startFrame,\n\t\t\tto: endFrame,\n\t\t\tease\n\t\t});\n\t}\n\t/**\n\t* Animates opacity from 1 to 0 between startFrame and endFrame.\n\t*/\n\tfadeOut(startFrame, endFrame, ease = \"power2.in\") {\n\t\treturn this.fromTo(\"opacity\", 1, 0, {\n\t\t\tfrom: startFrame,\n\t\t\tto: endFrame,\n\t\t\tease\n\t\t});\n\t}\n\t/**\n\t* Slides in Y coordinate from fromY to toY.\n\t*/\n\tslideInY(fromY, toY, startFrame = 0, endFrame = 24, ease = \"power2.out\") {\n\t\treturn this.fromTo(\"y\", fromY, toY, {\n\t\t\tfrom: startFrame,\n\t\t\tto: endFrame,\n\t\t\tease\n\t\t});\n\t}\n\t/**\n\t* Slides in X coordinate from fromX to toX.\n\t*/\n\tslideInX(fromX, toX, startFrame = 0, endFrame = 24, ease = \"power2.out\") {\n\t\treturn this.fromTo(\"x\", fromX, toX, {\n\t\t\tfrom: startFrame,\n\t\t\tto: endFrame,\n\t\t\tease\n\t\t});\n\t}\n\t/**\n\t* Sweeps kinetic typography animator offset from fromOffset to toOffset.\n\t* Cascades per-glyph or per-word transforms across the text.\n\t*/\n\tkineticSweep(fromOffset = -1, toOffset = 1, startFrame = 0, endFrame = 24, ease = \"power2.out\") {\n\t\treturn this.fromTo(\"offset\", fromOffset, toOffset, {\n\t\t\tfrom: startFrame,\n\t\t\tto: endFrame,\n\t\t\tease\n\t\t});\n\t}\n\t/**\n\t* Progressive character write-on / typewriter text reveal.\n\t*/\n\ttypewriter(startFrame = 0, endFrame = 30, ease = \"linear\") {\n\t\treturn this.fromTo(\"text\", 0, 1, {\n\t\t\tfrom: startFrame,\n\t\t\tto: endFrame,\n\t\t\tease\n\t\t});\n\t}\n\t/**\n\t* Animates letter-spacing (tracking expansion or compression).\n\t*/\n\tletterSpacing(fromSpacing, toSpacing, startFrame = 0, endFrame = 24, ease = \"power2.out\") {\n\t\treturn this.fromTo(\"letterSpacing\", fromSpacing, toSpacing, {\n\t\t\tfrom: startFrame,\n\t\t\tto: endFrame,\n\t\t\tease\n\t\t});\n\t}\n\t/**\n\t* Animates text position along a path via First Margin.\n\t*/\n\tfirstMargin(fromMargin, toMargin, options = {}) {\n\t\treturn this.fromTo(\"firstMargin\", fromMargin, toMargin, options);\n\t}\n\t/**\n\t* Animates Last Margin spatial limit along a path.\n\t*/\n\tlastMargin(fromMargin, toMargin, options = {}) {\n\t\treturn this.fromTo(\"lastMargin\", fromMargin, toMargin, options);\n\t}\n\t/**\n\t* Animates baseline shift perpendicular to curve tangent.\n\t*/\n\tbaselineShift(fromShift, toShift, options = {}) {\n\t\treturn this.fromTo(\"baselineShift\", fromShift, toShift, options);\n\t}\n\t/**\n\t* Animate rotateX from fromAngle to toAngle.\n\t*/\n\trotateX(fromAngle, toAngle, options = {}) {\n\t\treturn this.fromTo(\"rotateX\", fromAngle, toAngle, options);\n\t}\n\t/**\n\t* Animate rotateY from fromAngle to toAngle.\n\t*/\n\trotateY(fromAngle, toAngle, options = {}) {\n\t\treturn this.fromTo(\"rotateY\", fromAngle, toAngle, options);\n\t}\n\t/**\n\t* Animate rotateZ from fromAngle to toAngle.\n\t*/\n\trotateZ(fromAngle, toAngle, options = {}) {\n\t\treturn this.fromTo(\"rotateZ\", fromAngle, toAngle, options);\n\t}\n\t/**\n\t* Animate perspective camera distance in pixels.\n\t*/\n\tperspective(fromDist, toDist, options = {}) {\n\t\treturn this.fromTo(\"perspective\", fromDist, toDist, options);\n\t}\n\t/**\n\t* Animate depth translation (translateZ) in pixels.\n\t*/\n\ttranslateZ(fromZ, toZ, options = {}) {\n\t\treturn this.fromTo(\"translateZ\", fromZ, toZ, options);\n\t}\n\t/**\n\t* Composite helper to tilt a container across multiple 3D axes simultaneously.\n\t*/\n\ttilt3D(options) {\n\t\tconst start = options.start ?? options.fromFrame;\n\t\tconst end = options.end ?? options.toFrame;\n\t\tconst ease = options.ease;\n\t\tconst from = options.from ?? {};\n\t\tconst to = options.to;\n\t\tfor (const prop of [\n\t\t\t\"rotateX\",\n\t\t\t\"rotateY\",\n\t\t\t\"rotateZ\",\n\t\t\t\"translateZ\",\n\t\t\t\"perspective\"\n\t\t]) {\n\t\t\tconst toVal = to[prop];\n\t\t\tif (toVal !== void 0) {\n\t\t\t\tconst fromVal = from[prop] ?? 0;\n\t\t\t\tthis.fromTo(prop, fromVal, toVal, {\n\t\t\t\t\tfrom: start,\n\t\t\t\t\tto: end,\n\t\t\t\t\tfromFrame: start,\n\t\t\t\t\ttoFrame: end,\n\t\t\t\t\tease\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t* Binds an animatable property to a reactive continuous Signal (e.g. LFO, speech energy, audio pitch).\n\t*\n\t* `signalOrHandleId` is either a signal object (`Signal.fromArray`,\n\t* `Signal.builder`, an audio channel …) — carried on the track and\n\t* registered with the program automatically — or the name of a signal\n\t* registered with `comp.addSignal(name, signal)`.\n\t*/\n\tsignal(prop, signalOrHandleId, options = {}) {\n\t\tconst { handleId, inline } = resolveSignalArg(signalOrHandleId);\n\t\tconst id = `${prop}_sig_${handleId}_${this.tracks.length}`;\n\t\tconst source = {\n\t\t\ttype: \"signal\",\n\t\t\tinputHandleId: handleId,\n\t\t\tmultiplier: options.multiplier ?? 1,\n\t\t\toffset: options.offset ?? 0,\n\t\t\tsmoothingWindowFrames: options.smoothing ?? 0,\n\t\t\tsignalMode: options.mode ?? \"continuous\",\n\t\t\tthreshold: options.threshold ?? .15,\n\t\t\taccumulateThreshold: options.threshold ?? .15,\n\t\t\tdebounceFrames: options.debounceFrames ?? 2,\n\t\t\tchannel: options.channel ?? \"primary\"\n\t\t};\n\t\tif (inline) attachInlineSignal(source, inline);\n\t\tthis.tracks.push({\n\t\t\tid,\n\t\t\tprop,\n\t\t\tsource,\n\t\t\tkeyframes: []\n\t\t});\n\t\treturn this;\n\t}\n\t/**\n\t* Modulates color interpolation based on an active signal (object or\n\t* registered name, as in {@link LayerAnimation.signal}).\n\t*/\n\tcolorSignal(prop, signalOrHandleId, options) {\n\t\tconst { handleId, inline } = resolveSignalArg(signalOrHandleId);\n\t\tconst id = `${prop}_colorSig_${handleId}_${this.tracks.length}`;\n\t\tconst source = {\n\t\t\ttype: \"signal\",\n\t\t\tinputHandleId: handleId,\n\t\t\tmultiplier: 1,\n\t\t\toffset: 0,\n\t\t\tsmoothingWindowFrames: options.smoothing ?? 0,\n\t\t\tcolorMode: options.colorMode ?? \"interpolate\",\n\t\t\tcolorA: options.colorA,\n\t\t\tcolorB: options.colorB,\n\t\t\tcolorThreshold: options.threshold,\n\t\t\tchannel: \"primary\"\n\t\t};\n\t\tif (inline) attachInlineSignal(source, inline);\n\t\tthis.tracks.push({\n\t\t\tid,\n\t\t\tprop,\n\t\t\tsource,\n\t\t\tkeyframes: []\n\t\t});\n\t\treturn this;\n\t}\n\t/**\n\t* Adds organic Perlin noise wiggling to a property.\n\t*/\n\twiggle(prop, options = {}) {\n\t\tconst id = `${prop}_wiggle_${this.tracks.length}`;\n\t\tconst source = {\n\t\t\ttype: \"wiggle\",\n\t\t\tfrequency: options.frequency ?? 2,\n\t\t\tamplitude: options.amplitude ?? 20,\n\t\t\toctaves: options.octaves ?? 1,\n\t\t\tseed: options.seed ?? 1234\n\t\t};\n\t\tthis.tracks.push({\n\t\t\tid,\n\t\t\tprop,\n\t\t\tsource,\n\t\t\tkeyframes: []\n\t\t});\n\t\treturn this;\n\t}\n\t/**\n\t* Adds physical harmonic spring overshoot behavior to a property transition.\n\t*/\n\tspring(prop, options = {}) {\n\t\tconst id = `${prop}_spring_${this.tracks.length}`;\n\t\tconst source = {\n\t\t\ttype: \"springOvershoot\",\n\t\t\tdamping: options.damping ?? 12,\n\t\t\tstiffness: options.stiffness ?? 180,\n\t\t\tmass: options.mass ?? 1\n\t\t};\n\t\tthis.tracks.push({\n\t\t\tid,\n\t\t\tprop,\n\t\t\tsource,\n\t\t\tkeyframes: []\n\t\t});\n\t\treturn this;\n\t}\n\t/**\n\t* Follows a 2D or 3D path with constant arc-length velocity, automatic orientation,\n\t* banking into turns, and optional easing.\n\t*/\n\tfollowPath(path, options = {}) {\n\t\tconst startFrame = options.start ?? options.fromFrame ?? 0;\n\t\tconst endFrame = options.end ?? options.toFrame ?? 60;\n\t\tconst duration = Math.max(1, endFrame - startFrame);\n\t\tconst sampleCount = options.samples ?? Math.max(8, Math.min(60, Math.round(duration / 2)));\n\t\tconst totalLen = path.totalLength ?? 1;\n\t\tlet fromProg = options.fromProgress ?? 0;\n\t\tlet toProg = options.toProgress ?? 1;\n\t\tif (options.fromDistance !== void 0 && totalLen > 0) fromProg = options.fromDistance / totalLen;\n\t\tif (options.toDistance !== void 0 && totalLen > 0) toProg = options.toDistance / totalLen;\n\t\tconst autoOrient = options.autoOrient ?? true;\n\t\tconst banking = options.banking ?? 0;\n\t\tconst pitchOffset = options.pitchOffset ?? 0;\n\t\tconst yawOffset = options.yawOffset ?? 0;\n\t\tconst rollOffset = options.rollOffset ?? 0;\n\t\tlet hasZ = false;\n\t\tlet hasRx = false;\n\t\tlet hasRy = false;\n\t\tconst samples = [];\n\t\tfor (let i = 0; i <= sampleCount; i++) {\n\t\t\tconst t = i / sampleCount;\n\t\t\tconst easedT = evaluateEasingProgress(options.ease, t);\n\t\t\tconst u = fromProg + easedT * (toProg - fromProg);\n\t\t\tconst f = Math.round(startFrame + t * duration);\n\t\t\tlet pos = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t0\n\t\t\t];\n\t\t\tlet tan = [\n\t\t\t\t1,\n\t\t\t\t0,\n\t\t\t\t0\n\t\t\t];\n\t\t\tlet rot = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t0\n\t\t\t];\n\t\t\tif (typeof path.getFrameAt === \"function\") {\n\t\t\t\tconst frameData = path.getFrameAt(u);\n\t\t\t\tpos = frameData.position;\n\t\t\t\ttan = frameData.tangent;\n\t\t\t\trot = frameData.rotation ?? [\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t} else {\n\t\t\t\tconst pt = path.getPointAt(u);\n\t\t\t\tpos = pt.position;\n\t\t\t\tif (pt.tangent) tan = pt.tangent;\n\t\t\t\trot = [\n\t\t\t\t\tMath.asin(Math.max(-1, Math.min(1, -tan[1]))) * (180 / Math.PI),\n\t\t\t\t\tMath.atan2(tan[0], tan[2]) * (180 / Math.PI),\n\t\t\t\t\tMath.atan2(tan[1], tan[0]) * (180 / Math.PI)\n\t\t\t\t];\n\t\t\t}\n\t\t\tconst rx = rot[0] + pitchOffset;\n\t\t\tconst ry = rot[1] + yawOffset;\n\t\t\tlet rz = (Math.abs(tan[2]) < 1e-4 ? Math.atan2(tan[1], tan[0]) * (180 / Math.PI) : rot[2]) + rollOffset;\n\t\t\tif (banking !== 0) {\n\t\t\t\tconst uAhead = Math.min(1, u + .02);\n\t\t\t\tconst uBehind = Math.max(0, u - .02);\n\t\t\t\tconst ptAhead = path.getPointAt(uAhead);\n\t\t\t\tconst ptBehind = path.getPointAt(uBehind);\n\t\t\t\tconst tAhead = ptAhead.tangent ?? [\n\t\t\t\t\t1,\n\t\t\t\t\t0,\n\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst tBehind = ptBehind.tangent ?? [\n\t\t\t\t\t1,\n\t\t\t\t\t0,\n\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst dYaw = Math.atan2(tAhead[0], tAhead[2]) - Math.atan2(tBehind[0], tBehind[2]);\n\t\t\t\trz -= dYaw * banking * 57.2958;\n\t\t\t}\n\t\t\tif (Math.abs(pos[2]) > 1e-4) hasZ = true;\n\t\t\tif (Math.abs(rx) > 1e-4) hasRx = true;\n\t\t\tif (Math.abs(ry) > 1e-4) hasRy = true;\n\t\t\tsamples.push({\n\t\t\t\tf,\n\t\t\t\tx: pos[0],\n\t\t\t\ty: pos[1],\n\t\t\t\tz: pos[2],\n\t\t\t\trx,\n\t\t\t\try,\n\t\t\t\trz\n\t\t\t});\n\t\t}\n\t\tfor (const s of samples) {\n\t\t\tthis.keyframe(\"x\", s.f, s.x);\n\t\t\tthis.keyframe(\"y\", s.f, s.y);\n\t\t\tif (hasZ) this.keyframe(\"z\", s.f, s.z);\n\t\t\tif (autoOrient) {\n\t\t\t\tthis.keyframe(\"rotateZ\", s.f, s.rz);\n\t\t\t\tif (hasRx) this.keyframe(\"rotateX\", s.f, s.rx);\n\t\t\t\tif (hasRy) this.keyframe(\"rotateY\", s.f, s.ry);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t* Attaches this animation to a target LayoutNode and returns the node.\n\t*/\n\tapplyTo(node) {\n\t\tnode.animation = this.toSpec();\n\t\treturn node;\n\t}\n\t/**\n\t* Returns the validated LayerAnimation specification object.\n\t*/\n\ttoSpec() {\n\t\treturn { tracks: this.tracks };\n\t}\n\ttoJSON() {\n\t\treturn this.toSpec();\n\t}\n};\nvar CameraAnimation = class CameraAnimation extends LayerAnimation {\n\tstatic camera() {\n\t\treturn new CameraAnimation();\n\t}\n\tdolly(fromDistanceOrOptions, toDistance, options = {}) {\n\t\tif (typeof fromDistanceOrOptions === \"object\") {\n\t\t\tconst opts = fromDistanceOrOptions;\n\t\t\tconst start = opts.start ?? opts.fromFrame ?? 0;\n\t\t\tconst end = opts.end ?? opts.toFrame ?? 0;\n\t\t\treturn this.fromTo(\"cameraZ\", opts.fromDistance, opts.toDistance, {\n\t\t\t\tfrom: start,\n\t\t\t\tto: end,\n\t\t\t\tease: opts.ease\n\t\t\t});\n\t\t}\n\t\treturn this.fromTo(\"cameraZ\", fromDistanceOrOptions, toDistance ?? fromDistanceOrOptions, options);\n\t}\n\torbit(options) {\n\t\tconst start = options.start ?? options.fromFrame ?? 0;\n\t\tconst end = options.end ?? options.toFrame ?? 0;\n\t\tif (options.azimuth) this.fromTo(\"orbitAzimuth\", options.azimuth.from ?? 0, options.azimuth.to, {\n\t\t\tfrom: start,\n\t\t\tto: end,\n\t\t\tease: options.ease\n\t\t});\n\t\tif (options.elevation) this.fromTo(\"orbitElevation\", options.elevation.from ?? 0, options.elevation.to, {\n\t\t\tfrom: start,\n\t\t\tto: end,\n\t\t\tease: options.ease\n\t\t});\n\t\tif (options.radius) this.fromTo(\"orbitRadius\", options.radius.from ?? 1500, options.radius.to, {\n\t\t\tfrom: start,\n\t\t\tto: end,\n\t\t\tease: options.ease\n\t\t});\n\t\treturn this;\n\t}\n\ttruck(fromX, toX, options = {}) {\n\t\treturn this.fromTo(\"cameraX\", fromX, toX, options);\n\t}\n\tpedestal(fromY, toY, options = {}) {\n\t\treturn this.fromTo(\"cameraY\", fromY, toY, options);\n\t}\n\tpan(fromAngleDeg, toAngleDeg, options = {}) {\n\t\treturn this.fromTo(\"cameraYaw\", fromAngleDeg, toAngleDeg, options);\n\t}\n\ttilt(fromAngleDeg, toAngleDeg, options = {}) {\n\t\treturn this.fromTo(\"cameraPitch\", fromAngleDeg, toAngleDeg, options);\n\t}\n\troll(fromAngleDeg, toAngleDeg, options = {}) {\n\t\treturn this.fromTo(\"cameraRoll\", fromAngleDeg, toAngleDeg, options);\n\t}\n\trackFocus(options) {\n\t\tconst start = options.start ?? options.fromFrame ?? 0;\n\t\tconst end = options.end ?? options.toFrame ?? 0;\n\t\tthis.fromTo(\"focusDistance\", options.fromDistance, options.toDistance, {\n\t\t\tfrom: start,\n\t\t\tto: end,\n\t\t\tease: options.ease ?? \"power2.inOut\"\n\t\t});\n\t\tif (options.toFStop !== void 0) this.fromTo(\"fStop\", options.fromFStop ?? 2.8, options.toFStop, {\n\t\t\tfrom: start,\n\t\t\tto: end,\n\t\t\tease: options.ease ?? \"power2.inOut\"\n\t\t});\n\t\treturn this;\n\t}\n\thandheld(options) {\n\t\tconst start = options.start ?? options.fromFrame ?? 0;\n\t\tconst end = options.end ?? options.toFrame ?? 0;\n\t\tthis.fromTo(\"shakeTranslation\", 0, options.translationAmplitude, {\n\t\t\tfrom: start,\n\t\t\tto: end\n\t\t});\n\t\tthis.fromTo(\"shakeRotation\", 0, options.rotationAmplitude, {\n\t\t\tfrom: start,\n\t\t\tto: end\n\t\t});\n\t\treturn this;\n\t}\n\t/**\n\t* Animates camera eye and lookAt target along a 3D path with constant velocity,\n\t* leading target look-ahead, or path tangent orientation.\n\t*/\n\tfollowPath3D(path, options = {}) {\n\t\tconst startFrame = options.start ?? options.fromFrame ?? 0;\n\t\tconst endFrame = options.end ?? options.toFrame ?? 60;\n\t\tconst duration = Math.max(1, endFrame - startFrame);\n\t\tconst sampleCount = options.samples ?? Math.max(8, Math.min(60, Math.round(duration / 2)));\n\t\tconst mode = options.mode ?? (options.target ? \"lookAtTarget\" : \"leadTarget\");\n\t\tconst fromProg = options.fromProgress ?? 0;\n\t\tconst toProg = options.toProgress ?? 1;\n\t\tconst lookAhead = options.lookAhead ?? .05;\n\t\tfor (let i = 0; i <= sampleCount; i++) {\n\t\t\tconst t = i / sampleCount;\n\t\t\tconst u = fromProg + evaluateEasingProgress(options.ease, t) * (toProg - fromProg);\n\t\t\tconst f = Math.round(startFrame + t * duration);\n\t\t\tlet pos = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t0\n\t\t\t];\n\t\t\tlet rot = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t0\n\t\t\t];\n\t\t\tif (typeof path.getFrameAt === \"function\") {\n\t\t\t\tconst frameData = path.getFrameAt(u);\n\t\t\t\tpos = frameData.position;\n\t\t\t\trot = frameData.rotation ?? [\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t} else pos = path.getPointAt(u).position;\n\t\t\tthis.keyframe(\"cameraX\", f, pos[0]);\n\t\t\tthis.keyframe(\"cameraY\", f, pos[1]);\n\t\t\tthis.keyframe(\"cameraZ\", f, pos[2]);\n\t\t\tif (mode === \"lookAtTarget\") {\n\t\t\t\tconst tgt = options.target ?? [\n\t\t\t\t\tpos[0],\n\t\t\t\t\tpos[1],\n\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.keyframe(\"targetX\", f, tgt[0]);\n\t\t\t\tthis.keyframe(\"targetY\", f, tgt[1]);\n\t\t\t\tthis.keyframe(\"targetZ\", f, tgt[2]);\n\t\t\t} else if (mode === \"leadTarget\") {\n\t\t\t\tconst leadU = Math.min(1, u + lookAhead);\n\t\t\t\tconst leadPt = path.getPointAt(leadU);\n\t\t\t\tthis.keyframe(\"targetX\", f, leadPt.position[0]);\n\t\t\t\tthis.keyframe(\"targetY\", f, leadPt.position[1]);\n\t\t\t\tthis.keyframe(\"targetZ\", f, leadPt.position[2]);\n\t\t\t} else if (mode === \"orientAlongPath\") {\n\t\t\t\tthis.keyframe(\"cameraPitch\", f, rot[0]);\n\t\t\t\tthis.keyframe(\"cameraYaw\", f, rot[1]);\n\t\t\t\tthis.keyframe(\"cameraRoll\", f, rot[2]);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n};\n\n//#endregion\n//#region src/program/evaluator.ts\nfunction hash1D(n, seed) {\n\tlet x = Math.floor(n) ^ seed * 1013 | 0;\n\tx = Math.imul(x ^ x >>> 15, x | 1);\n\tx ^= x + Math.imul(x ^ x >>> 7, x | 61);\n\treturn ((x ^ x >>> 14) >>> 0) / 4294967295 * 2 - 1;\n}\nfunction smoothNoise1D(x, seed) {\n\tconst i0 = Math.floor(x);\n\tconst i1 = i0 + 1;\n\tconst f = x - i0;\n\tconst u = f * f * (3 - 2 * f);\n\tconst g0 = hash1D(i0, seed);\n\tconst g1 = hash1D(i1, seed);\n\tconst v0 = g0 * f;\n\tconst v1 = g1 * (f - 1);\n\treturn (v0 * (1 - u) + v1 * u) * 2;\n}\n/**\n* Procedural wiggle generator using multi-octave coherent 1D gradient noise.\n*/\nfunction evaluateWiggle(source, tSec, baseValue = 0) {\n\tconst freq = source.frequency ?? 2;\n\tconst amp = source.amplitude ?? 50;\n\tconst octaves = Math.max(1, Math.min(4, source.octaves ?? 1));\n\tconst seed = source.seed ?? 1234;\n\tlet total = 0;\n\tlet maxAmp = 0;\n\tlet currentAmp = 1;\n\tlet currentFreq = freq;\n\tfor (let i = 0; i < octaves; i++) {\n\t\tconst noiseVal = smoothNoise1D(tSec * currentFreq, seed + i * 7919);\n\t\ttotal += noiseVal * currentAmp;\n\t\tmaxAmp += currentAmp;\n\t\tcurrentAmp *= .5;\n\t\tcurrentFreq *= 2;\n\t}\n\treturn baseValue + (maxAmp > 0 ? total / maxAmp : 0) * amp;\n}\n/**\n* Analytical solution to the second-order damped harmonic oscillator ODE:\n* m*x'' + c*x' + k*x = 0\n*/\nfunction evaluateSpringOvershoot(source, tSec, v0, v1) {\n\tif (tSec <= 0) return v0;\n\tconst m = Math.max(.001, source.mass ?? 1);\n\tconst k = Math.max(.001, source.stiffness ?? 180);\n\tconst c = Math.max(.001, source.damping ?? 12);\n\tconst w0 = Math.sqrt(k / m);\n\tconst zeta = c / (2 * Math.sqrt(k * m));\n\tlet progress = 1;\n\tif (zeta < 1) {\n\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\tconst A = -1;\n\t\tconst B = -zeta * w0 / wd;\n\t\tprogress = 1 + Math.exp(-zeta * w0 * tSec) * (A * Math.cos(wd * tSec) + B * Math.sin(wd * tSec));\n\t} else if (Math.abs(zeta - 1) < 1e-4) progress = 1 + Math.exp(-w0 * tSec) * (-1 - w0 * tSec);\n\telse {\n\t\tconst sq = Math.sqrt(zeta * zeta - 1);\n\t\tconst r1 = -w0 * (zeta - sq);\n\t\tconst r2 = -w0 * (zeta + sq);\n\t\tconst c1 = -1 / (1 - r1 / r2);\n\t\tconst c2 = -1 - c1;\n\t\tprogress = 1 + c1 * Math.exp(r1 * tSec) + c2 * Math.exp(r2 * tSec);\n\t}\n\treturn v0 + (v1 - v0) * progress;\n}\nfunction extractRawSignalSample(signalData, frame, fps) {\n\tif (signalData === null || signalData === void 0) return 0;\n\tif (typeof signalData === \"number\") return signalData;\n\tif (typeof signalData === \"function\") return Number(signalData(frame, fps)) || 0;\n\tif (Array.isArray(signalData) || ArrayBuffer.isView(signalData)) {\n\t\tconst arr = signalData;\n\t\tif (arr.length === 0) return 0;\n\t\tconst idx = Math.max(0, Math.min(arr.length - 1, Math.round(frame)));\n\t\treturn Number(arr[idx]) || 0;\n\t}\n\tif (typeof signalData === \"object\") {\n\t\tconst sd = signalData;\n\t\tif (typeof sd.get === \"function\") return Number(sd.get({\n\t\t\tframe,\n\t\t\tfps,\n\t\t\ttime: fps > 0 ? frame / fps : 0\n\t\t})) || 0;\n\t\tif (sd.type === \"Signal\" && sd.data) return extractRawSignalSample(sd.data, frame, fps);\n\t\tconst rawSamples = sd.samples ?? (typeof sd.channel === \"string\" && sd[sd.channel] !== void 0 ? sd[sd.channel] : void 0);\n\t\tif (Array.isArray(rawSamples) || ArrayBuffer.isView(rawSamples)) {\n\t\t\tconst arr = rawSamples;\n\t\t\tif (arr.length === 0) return 0;\n\t\t\tconst srcFps = Number(sd.fps) || 24;\n\t\t\tconst t = frame / (fps > 0 ? fps : 24);\n\t\t\tconst idx = Math.max(0, Math.min(arr.length - 1, Math.round(t * srcFps)));\n\t\t\treturn Number(arr[idx]) || 0;\n\t\t}\n\t\tif (sd.type === \"audio_extractor\" || sd.extractionMode !== void 0) {\n\t\t\tconst nodeId = sd.nodeId;\n\t\t\tif (nodeId) {\n\t\t\t\tconst ch = sd.channel ?? \"primary\";\n\t\t\t\tconst channelSamples = signalRegistry.getChannelSamples(nodeId, ch);\n\t\t\t\tif (channelSamples && channelSamples.length > 0) {\n\t\t\t\t\tconst srcFps = Number(sd.fps) || 24;\n\t\t\t\t\tconst t = frame / (fps > 0 ? fps : 24);\n\t\t\t\t\tconst idx = Math.max(0, Math.min(channelSamples.length - 1, Math.round(t * srcFps)));\n\t\t\t\t\treturn Number(channelSamples[idx]) || 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tif (sd.type === \"generator\") {\n\t\t\tconst amp = typeof sd.amplitude === \"number\" ? sd.amplitude : 1;\n\t\t\tlet freq = typeof sd.frequency === \"number\" ? sd.frequency : 1;\n\t\t\tif (sd.syncToBpm && typeof sd.bpm === \"number\" && sd.bpm > 0) {\n\t\t\t\tconst bars = typeof sd.bars === \"number\" && sd.bars > 0 ? sd.bars : 1;\n\t\t\t\tfreq = sd.bpm / 60 / bars;\n\t\t\t}\n\t\t\tconst phase = typeof sd.phase === \"number\" ? sd.phase : 0;\n\t\t\tconst offset = typeof sd.offset === \"number\" ? sd.offset : 0;\n\t\t\tconst t = frame / (fps > 0 ? fps : 24);\n\t\t\tconst baseType = sd.baseType ?? \"sine\";\n\t\t\tconst fmEnabled = Boolean(sd.fmEnabled);\n\t\t\tlet tMod = t;\n\t\t\tif (fmEnabled) {\n\t\t\t\tconst fmAmp = Number(sd.fmAmplitude) || 1;\n\t\t\t\tconst fmFreq = Number(sd.fmFrequency) || .5;\n\t\t\t\ttMod = t + Math.sin(t * fmFreq * Math.PI * 2) * fmAmp;\n\t\t\t}\n\t\t\tlet val = 0;\n\t\t\tconst phaseNorm = (tMod * freq + phase / (Math.PI * 2)) % 1;\n\t\t\tconst normT = phaseNorm < 0 ? phaseNorm + 1 : phaseNorm;\n\t\t\tconst fract = (x) => (x % 1 + 1) % 1;\n\t\t\tswitch (baseType) {\n\t\t\t\tcase \"triangle\":\n\t\t\t\t\tval = 4 * Math.abs(normT - .5) - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"sawtooth\":\n\t\t\t\t\tval = 2 * normT - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"square\":\n\t\t\t\t\tval = normT < .5 ? 1 : -1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"constant\":\n\t\t\t\t\tval = 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"noise_smooth\": {\n\t\t\t\t\tconst noiseT = tMod * freq + phase;\n\t\t\t\t\tconst noiseI = Math.floor(noiseT);\n\t\t\t\t\tconst noiseF = noiseT - noiseI;\n\t\t\t\t\tconst noiseU = noiseF * noiseF * (3 - 2 * noiseF);\n\t\t\t\t\tconst n0 = fract(Math.sin(noiseI * 12.9898) * 43758.5453);\n\t\t\t\t\tconst n1 = fract(Math.sin((noiseI + 1) * 12.9898) * 43758.5453);\n\t\t\t\t\tval = (n0 * (1 - noiseU) + n1 * noiseU) * 2 - 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"noise_white\":\n\t\t\t\t\tval = fract(Math.sin(tMod * 12.9898 + phase) * 43758.5453) * 2 - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pulse\": {\n\t\t\t\t\tconst pulseDuty = phase === 0 ? .5 : Math.max(.01, Math.min(.99, phase));\n\t\t\t\t\tval = fract(tMod * freq) < pulseDuty ? 1 : -1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"bounce\":\n\t\t\t\t\tval = Math.abs(Math.sin(tMod * freq * Math.PI + phase));\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"staircase\":\n\t\t\t\t\tval = Math.floor(normT * 8) / 7 * 2 - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tval = Math.sin(tMod * freq * Math.PI * 2 + phase);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn val * amp + offset;\n\t\t}\n\t\tif (sd.type === \"gate\") {\n\t\t\tconst source = sd.sourceSignal ?? sd.signal;\n\t\t\tconst thresh = typeof sd.threshold === \"number\" ? sd.threshold : .5;\n\t\t\tconst mode = sd.mode ?? \"gate\";\n\t\t\tconst invert = Boolean(sd.invert);\n\t\t\tconst debounceMs = typeof sd.debounceMs === \"number\" ? sd.debounceMs : 0;\n\t\t\tconst debounceFrames = Math.max(1, Math.round(debounceMs / 1e3 * fps));\n\t\t\tconst holdFrames = Math.max(1, Number(sd.holdFrames) || 4);\n\t\t\tlet output = 0;\n\t\t\tif (mode === \"gate\") output = extractRawSignalSample(source, frame, fps) >= thresh ? 1 : 0;\n\t\t\telse if (mode === \"trigger\") {\n\t\t\t\tlet lastTrigger = -Infinity;\n\t\t\t\tconst startF = Math.max(0, frame - 300);\n\t\t\t\tfor (let f = startF; f <= frame; f++) {\n\t\t\t\t\tconst val = extractRawSignalSample(source, f, fps);\n\t\t\t\t\tconst prev = f > 0 ? extractRawSignalSample(source, f - 1, fps) : 0;\n\t\t\t\t\tif (val >= thresh && prev < thresh && f - lastTrigger >= debounceFrames) lastTrigger = f;\n\t\t\t\t}\n\t\t\t\toutput = frame >= lastTrigger && frame < lastTrigger + holdFrames ? 1 : 0;\n\t\t\t} else if (mode === \"toggle\") {\n\t\t\t\tlet toggleCount = 0;\n\t\t\t\tlet lastTrigger = -Infinity;\n\t\t\t\tfor (let f = 0; f <= frame; f++) {\n\t\t\t\t\tconst val = extractRawSignalSample(source, f, fps);\n\t\t\t\t\tconst prev = f > 0 ? extractRawSignalSample(source, f - 1, fps) : 0;\n\t\t\t\t\tif (val >= thresh && prev < thresh && f - lastTrigger >= debounceFrames) {\n\t\t\t\t\t\ttoggleCount++;\n\t\t\t\t\t\tlastTrigger = f;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\toutput = toggleCount % 2 === 1 ? 1 : 0;\n\t\t\t}\n\t\t\treturn invert ? 1 - output : output;\n\t\t}\n\t\tif (sd.type === \"signal_math\") {\n\t\t\tconst valA = extractRawSignalSample(sd.signalA, frame, fps);\n\t\t\tconst valB = sd.signalB !== void 0 ? extractRawSignalSample(sd.signalB, frame, fps) : Number(sd.bValue) || 0;\n\t\t\tswitch (sd.operation) {\n\t\t\t\tcase \"add\": return valA + valB;\n\t\t\t\tcase \"subtract\": return valA - valB;\n\t\t\t\tcase \"multiply\": return valA * valB;\n\t\t\t\tcase \"divide\": return valB !== 0 ? valA / valB : 0;\n\t\t\t\tcase \"min\": return Math.min(valA, valB);\n\t\t\t\tcase \"max\": return Math.max(valA, valB);\n\t\t\t\tcase \"clamp\": {\n\t\t\t\t\tconst cMin = Number(sd.clampMin) || 0;\n\t\t\t\t\tconst cMax = Number(sd.clampMax) || 1;\n\t\t\t\t\treturn Math.max(cMin, Math.min(cMax, valA));\n\t\t\t\t}\n\t\t\t\tcase \"abs\": return Math.abs(valA);\n\t\t\t\tcase \"negate\": return -valA;\n\t\t\t\tcase \"invert\": return 1 - valA;\n\t\t\t\tcase \"power\": return valA ** (Number(sd.exponent) || 2);\n\t\t\t\tcase \"modulo\": return valB !== 0 ? valA % valB : 0;\n\t\t\t\tcase \"remap\": {\n\t\t\t\t\tconst inMin = Number(sd.inMin) || 0;\n\t\t\t\t\tconst inMax = Number(sd.inMax) || 1;\n\t\t\t\t\tconst outMin = Number(sd.outMin) || 0;\n\t\t\t\t\tconst outMax = Number(sd.outMax) || 1;\n\t\t\t\t\tconst rangeIn = inMax - inMin;\n\t\t\t\t\treturn outMin + (rangeIn !== 0 ? (valA - inMin) / rangeIn : 0) * (outMax - outMin);\n\t\t\t\t}\n\t\t\t\tcase \"normalize\": {\n\t\t\t\t\tconst minVal = Number(sd.aMin ?? sd.inMin) || 0;\n\t\t\t\t\tconst range = (Number(sd.aMax ?? sd.inMax) || 1) - minVal;\n\t\t\t\t\treturn range !== 0 ? Math.max(0, Math.min(1, (valA - minVal) / range)) : 0;\n\t\t\t\t}\n\t\t\t\tcase \"smoothstep\": {\n\t\t\t\t\tconst e0 = Number(sd.edge0) || 0;\n\t\t\t\t\tconst range = (Number(sd.edge1) || 1) - e0;\n\t\t\t\t\tconst x = range !== 0 ? Math.max(0, Math.min(1, (valA - e0) / range)) : 0;\n\t\t\t\t\treturn x * x * (3 - 2 * x);\n\t\t\t\t}\n\t\t\t\tcase \"custom\": return valA;\n\t\t\t\tdefault: return valA;\n\t\t\t}\n\t\t}\n\t\tif (typeof sd.value === \"number\") return sd.value;\n\t}\n\treturn 0;\n}\n/**\n* Evaluates an external Signal as an event accumulator / integrator.\n* On each rising edge above `threshold` (with `debounceFrames` guard),\n* the accumulator increments by 1.\n*/\nfunction evaluateSignalAccumulator(rawSource, currentFrame, fps, threshold = .15, debounceFrames = 2) {\n\tif (currentFrame < 0 || !rawSource) return 0;\n\tconst src = rawSource;\n\tlet count = 0;\n\tlet lastTriggerFrame = -Infinity;\n\tfor (let f = 0; f <= currentFrame; f++) {\n\t\tconst val = extractRawSignalSample(src, f, fps);\n\t\tconst prevVal = f > 0 ? extractRawSignalSample(src, f - 1, fps) : 0;\n\t\tif (val >= threshold && prevVal < threshold && f - lastTriggerFrame >= debounceFrames) {\n\t\t\tcount++;\n\t\t\tlastTriggerFrame = f;\n\t\t}\n\t}\n\treturn count;\n}\n/**\n* Evaluates an external Signal with smoothing window and linear remapping,\n* or as a discrete event accumulator.\n*/\nfunction evaluateSignal(source, frame, fps, signals = {}) {\n\tlet rawSource = signals[source.inputHandleId];\n\tif (rawSource === void 0 && signals) {\n\t\tconst signalKeys = Object.keys(signals);\n\t\tif (signalKeys.length === 1) rawSource = signals[signalKeys[0]];\n\t\telse if (signalKeys.length > 1) {\n\t\t\tconst matched = signalKeys.find((k) => k === source.inputHandleId);\n\t\t\trawSource = matched ? signals[matched] : signals[signalKeys[0]];\n\t\t}\n\t}\n\tif (source.channel && rawSource && typeof rawSource === \"object\") {\n\t\tconst candidate = rawSource[source.channel];\n\t\tif (candidate !== void 0) rawSource = candidate;\n\t\telse if (typeof rawSource.get !== \"function\") rawSource = {\n\t\t\t...rawSource,\n\t\t\tchannel: source.channel\n\t\t};\n\t}\n\tif (source.signalMode === \"accumulate\") {\n\t\tconst threshold = source.threshold ?? source.accumulateThreshold ?? .15;\n\t\tconst debounce = source.debounceFrames ?? 2;\n\t\tconst count$1 = evaluateSignalAccumulator(rawSource, frame, fps, threshold, debounce);\n\t\tconst mult = source.multiplier ?? 1;\n\t\tconst off = source.offset ?? 0;\n\t\treturn count$1 * mult + off;\n\t}\n\tconst multiplier = source.multiplier ?? 1;\n\tconst offset = source.offset ?? 0;\n\tconst windowFrames = Math.max(0, Math.round(source.smoothingWindowFrames ?? 0));\n\tif (windowFrames <= 1) return extractRawSignalSample(rawSource, frame, fps) * multiplier + offset;\n\tlet sum = 0;\n\tlet count = 0;\n\tconst startF = Math.max(0, frame - windowFrames + 1);\n\tfor (let f = startF; f <= frame; f++) {\n\t\tsum += extractRawSignalSample(rawSource, f, fps);\n\t\tcount++;\n\t}\n\treturn (count > 0 ? sum / count : 0) * multiplier + offset;\n}\nfunction lerp(a, b, t) {\n\treturn a + (b - a) * t;\n}\nfunction parseHexColor(hex) {\n\tlet h = hex.trim().replace(\"#\", \"\");\n\tif (h.length === 3) h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];\n\tif (h.length === 6) {\n\t\tconst num = parseInt(h, 16);\n\t\treturn [\n\t\t\tnum >> 16 & 255,\n\t\t\tnum >> 8 & 255,\n\t\t\tnum & 255,\n\t\t\t1\n\t\t];\n\t}\n\tif (h.length === 8) {\n\t\tconst num = parseInt(h, 16);\n\t\treturn [\n\t\t\tnum >> 24 & 255,\n\t\t\tnum >> 16 & 255,\n\t\t\tnum >> 8 & 255,\n\t\t\t(num & 255) / 255\n\t\t];\n\t}\n\treturn [\n\t\t255,\n\t\t255,\n\t\t255,\n\t\t1\n\t];\n}\nfunction lerpColor(c1, c2, t) {\n\tif (!c1.startsWith(\"#\") || !c2.startsWith(\"#\")) return t < .5 ? c1 : c2;\n\tconst [r1, g1, b1, a1] = parseHexColor(c1);\n\tconst [r2, g2, b2, a2] = parseHexColor(c2);\n\tconst r = Math.round(lerp(r1, r2, t));\n\tconst g = Math.round(lerp(g1, g2, t));\n\tconst b = Math.round(lerp(b1, b2, t));\n\tconst a = lerp(a1, a2, t);\n\tconst toHex = (n) => n.toString(16).padStart(2, \"0\");\n\tif (a >= .999) return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n\treturn `rgba(${r}, ${g}, ${b}, ${Math.round(a * 100) / 100})`;\n}\nfunction hueToRgb(p, q, t) {\n\tlet tt = t;\n\tif (tt < 0) tt += 1;\n\tif (tt > 1) tt -= 1;\n\tif (tt < 1 / 6) return p + (q - p) * 6 * tt;\n\tif (tt < 1 / 2) return q;\n\tif (tt < 2 / 3) return p + (q - p) * (2 / 3 - tt) * 6;\n\treturn p;\n}\nfunction rotateHue(hex, delta) {\n\tconst [r255, g255, b255, a] = parseHexColor(hex);\n\tconst r = r255 / 255;\n\tconst g = g255 / 255;\n\tconst b = b255 / 255;\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tlet h = 0;\n\tlet s = 0;\n\tconst l = (max + min) / 2;\n\tif (max !== min) {\n\t\tconst d = max - min;\n\t\ts = l > .5 ? d / (2 - max - min) : d / (max + min);\n\t\tswitch (max) {\n\t\t\tcase r:\n\t\t\t\th = (g - b) / d + (g < b ? 6 : 0);\n\t\t\t\tbreak;\n\t\t\tcase g:\n\t\t\t\th = (b - r) / d + 2;\n\t\t\t\tbreak;\n\t\t\tcase b:\n\t\t\t\th = (r - g) / d + 4;\n\t\t\t\tbreak;\n\t\t}\n\t\th /= 6;\n\t}\n\th = (h + delta % 1 + 1) % 1;\n\tlet newR = l;\n\tlet newG = l;\n\tlet newB = l;\n\tif (s !== 0) {\n\t\tconst q = l < .5 ? l * (1 + s) : l + s - l * s;\n\t\tconst p = 2 * l - q;\n\t\tnewR = hueToRgb(p, q, h + 1 / 3);\n\t\tnewG = hueToRgb(p, q, h);\n\t\tnewB = hueToRgb(p, q, h - 1 / 3);\n\t}\n\tconst toHex = (n) => Math.round(Math.max(0, Math.min(255, n * 255))).toString(16).padStart(2, \"0\");\n\tif (a >= .999) return `#${toHex(newR)}${toHex(newG)}${toHex(newB)}`;\n\treturn `rgba(${Math.round(newR * 255)}, ${Math.round(newG * 255)}, ${Math.round(newB * 255)}, ${Math.round(a * 100) / 100})`;\n}\nconst COLOR_PROPS = new Set([\n\t\"fill\",\n\t\"fillColor\",\n\t\"strokeColor\",\n\t\"textBackgroundColor\",\n\t\"color\"\n]);\n/**\n* Standard keyframe track evaluation.\n*/\nfunction evaluateKeyframes(track, localFrame) {\n\tconst keyframes = track.keyframes ?? [];\n\tif (keyframes.length === 0) return 0;\n\tif (keyframes.length === 1) return keyframes[0].value;\n\tif (localFrame <= keyframes[0].frame) return keyframes[0].value;\n\tif (localFrame >= keyframes[keyframes.length - 1].frame) return keyframes[keyframes.length - 1].value;\n\tfor (let i = 0; i < keyframes.length - 1; i++) {\n\t\tconst kf0 = keyframes[i];\n\t\tconst kf1 = keyframes[i + 1];\n\t\tif (localFrame >= kf0.frame && localFrame <= kf1.frame) {\n\t\t\tconst delta = kf1.frame - kf0.frame;\n\t\t\tconst t = delta > 0 ? (localFrame - kf0.frame) / delta : 0;\n\t\t\tif (typeof kf0.value === \"boolean\") return t >= 1 ? kf1.value : kf0.value;\n\t\t\tif (typeof kf0.value === \"string\" && typeof kf1.value === \"string\") return lerpColor(kf0.value, kf1.value, t);\n\t\t\treturn lerp(Number(kf0.value) || 0, Number(kf1.value) || 0, t);\n\t\t}\n\t}\n\treturn keyframes[keyframes.length - 1].value;\n}\n/**\n* Evaluates an AnimationTrack at a given global or local frame.\n*/\nfunction evaluateTrackAtFrame(track, frame, fps = 24, context = {}) {\n\tconst localFrame = frame - (context.startFrame ?? 0);\n\tconst source = track.source ?? { type: \"keyframe\" };\n\tconst basePropVal = context.baseValues?.[track.prop];\n\tswitch (source.type) {\n\t\tcase \"keyframe\": return evaluateKeyframes(track, localFrame);\n\t\tcase \"wiggle\": {\n\t\t\tconst fallbackNum = typeof basePropVal === \"number\" ? basePropVal : 0;\n\t\t\tconst base = track.keyframes && track.keyframes.length > 0 ? Number(evaluateKeyframes(track, localFrame)) || 0 : fallbackNum;\n\t\t\treturn evaluateWiggle(source, localFrame / (fps > 0 ? fps : 24), base);\n\t\t}\n\t\tcase \"springOvershoot\": {\n\t\t\tlet v0 = 0;\n\t\t\tlet v1 = 1;\n\t\t\tif (track.keyframes && track.keyframes.length >= 2) {\n\t\t\t\tv0 = Number(track.keyframes[0].value) || 0;\n\t\t\t\tv1 = Number(track.keyframes[1].value) || 1;\n\t\t\t} else if (track.keyframes && track.keyframes.length === 1) {\n\t\t\t\tv0 = Number(basePropVal) || 0;\n\t\t\t\tv1 = Number(track.keyframes[0].value) || 0;\n\t\t\t} else if (typeof basePropVal === \"number\") {\n\t\t\t\tv0 = basePropVal;\n\t\t\t\tv1 = basePropVal;\n\t\t\t}\n\t\t\treturn evaluateSpringOvershoot(source, localFrame / (fps > 0 ? fps : 24), v0, v1);\n\t\t}\n\t\tcase \"signal\": {\n\t\t\tconst sigVal = evaluateSignal(source, frame, fps, context.signals);\n\t\t\tif (COLOR_PROPS.has(track.prop)) {\n\t\t\t\tconst src = source;\n\t\t\t\tconst colorA = src.colorA ?? \"#ffffff\";\n\t\t\t\tconst colorB = src.colorB ?? \"#ffffff\";\n\t\t\t\tconst mode = src.colorMode ?? \"interpolate\";\n\t\t\t\tif (mode === \"threshold\") return sigVal >= (src.colorThreshold ?? .5) ? colorB : colorA;\n\t\t\t\tif (mode === \"hueRotate\") return rotateHue(colorA, sigVal);\n\t\t\t\treturn lerpColor(colorA, colorB, Math.max(0, Math.min(1, sigVal)));\n\t\t\t}\n\t\t\treturn sigVal;\n\t\t}\n\t\tdefault: return evaluateKeyframes(track, localFrame);\n\t}\n}\n/**\n* Evaluates all animation tracks for a layer at `frame`.\n*/\nfunction evaluateAnimationAtFrame(animation, frame, fps = 24, context = {}) {\n\tconst result = {};\n\tif (!animation?.tracks) return result;\n\tfor (const track of animation.tracks) result[track.prop] = evaluateTrackAtFrame(track, frame, fps, context);\n\treturn result;\n}\n\n//#endregion\n//#region src/program/text-animations/advanced-builder.ts\n/**\n* Fluent Builder for Extended Text Animators.\n*/\nvar AdvancedTextAnimatorBuilder = class AdvancedTextAnimatorBuilder {\n\tname;\n\tprops = {};\n\tselectors = [];\n\tconstructor(name) {\n\t\tthis.name = name;\n\t}\n\tstatic create(name) {\n\t\treturn new AdvancedTextAnimatorBuilder(name);\n\t}\n\t/** Directional Skew */\n\tskew(angleDeg, axisDeg = 0) {\n\t\tthis.props.skew = angleDeg;\n\t\tthis.props.skewAxis = axisDeg;\n\t\treturn this;\n\t}\n\t/** Anchor Point Grouping and Preset Pivot */\n\tanchor(preset, grouping = \"character\", offsetX = 0, offsetY = 0) {\n\t\tthis.props.anchor = {\n\t\t\tgrouping,\n\t\t\tpreset,\n\t\t\tanchorX: .5,\n\t\t\tanchorY: .5,\n\t\t\toffsetX,\n\t\t\toffsetY\n\t\t};\n\t\treturn this;\n\t}\n\t/** Custom Anchor Point Coordinates (0 to 1 normalized) */\n\tanchorNormalized(ax, ay, grouping = \"character\") {\n\t\tthis.props.anchor = {\n\t\t\tgrouping,\n\t\t\tpreset: \"custom\",\n\t\t\tanchorX: ax,\n\t\t\tanchorY: ay,\n\t\t\toffsetX: 0,\n\t\t\toffsetY: 0\n\t\t};\n\t\treturn this;\n\t}\n\t/** 3D Spatial Z-Depth */\n\ttranslateZ(zPixels) {\n\t\tthis.props.translateZ = zPixels;\n\t\treturn this;\n\t}\n\t/** 3D Tilts */\n\ttilt3D(rx = 0, ry = 0, rz = 0) {\n\t\tthis.props.rotationX = rx;\n\t\tthis.props.rotationY = ry;\n\t\tthis.props.rotationZ = rz;\n\t\treturn this;\n\t}\n\t/** 3D Rotation along X axis */\n\trotationX(deg) {\n\t\tthis.props.rotationX = deg;\n\t\treturn this;\n\t}\n\t/** 3D Rotation along Y axis */\n\trotationY(deg) {\n\t\tthis.props.rotationY = deg;\n\t\treturn this;\n\t}\n\t/** 3D Rotation along Z axis */\n\trotationZ(deg) {\n\t\tthis.props.rotationZ = deg;\n\t\treturn this;\n\t}\n\t/** 3D Volumetric Formations */\n\tvolumetricFormation(mode = \"cylinder\", radius = 300, pitch = 120, totalAngle = 360, perspective = 1200, axis = \"y\") {\n\t\tthis.props.formation = {\n\t\t\tmode,\n\t\t\tradius,\n\t\t\tpitch,\n\t\t\ttotalAngle,\n\t\t\tperspective,\n\t\t\taxis\n\t\t};\n\t\treturn this;\n\t}\n\t/** Dynamic Line Spacing (Leading) */\n\tlineSpacing(extraLeadingPixels, lineAnchor = 0) {\n\t\tthis.props.lineSpacing = extraLeadingPixels;\n\t\tthis.props.lineAnchor = lineAnchor;\n\t\treturn this;\n\t}\n\t/** Normalized Line Anchor (0=top, 0.5=center, 1=bottom) */\n\tlineAnchor(anchor) {\n\t\tthis.props.lineAnchor = anchor;\n\t\treturn this;\n\t}\n\t/** Inertial Spring Settling Physics */\n\tspring(stiffness = 180, damping = 12, mass = 1, initialVelocity = 0) {\n\t\tthis.props.spring = {\n\t\t\tstiffness,\n\t\t\tdamping,\n\t\t\tmass,\n\t\t\tinitialVelocity,\n\t\t\tovershootMultiplier: 1\n\t\t};\n\t\treturn this;\n\t}\n\t/** Dynamic Stroke & Wireframe Properties */\n\tstroke(widthPixels, color = \"#ffffff\", fillOpacity = 1) {\n\t\tthis.props.stroke = {\n\t\t\tstrokeWidth: widthPixels,\n\t\t\tstrokeColor: color,\n\t\t\tstrokeAlign: \"center\",\n\t\t\tfillOpacity,\n\t\t\tdashOffset: 0\n\t\t};\n\t\treturn this;\n\t}\n\t/** Variable Font Axes */\n\tvariableFont(axes) {\n\t\tthis.props.variableAxes = axes;\n\t\treturn this;\n\t}\n\t/** Chromatic Aberration / Cyberpunk Glitch */\n\tchromaticGlitch(redShiftX, redShiftY = 0, blueShiftX = -redShiftX, blueShiftY = 0) {\n\t\tthis.props.chromaticGlitch = {\n\t\t\tredShiftX,\n\t\t\tredShiftY,\n\t\t\tblueShiftX,\n\t\t\tblueShiftY,\n\t\t\tsliceProbability: 0,\n\t\t\tsliceAmplitude: 0\n\t\t};\n\t\treturn this;\n\t}\n\t/** Multi-Band Audio Spectrum Equalizer */\n\taudioSpectrum(signalChannel, minFreqHz = 60, maxFreqHz = 16e3, maxScale = 2.5) {\n\t\tthis.props.audioSpectrum = {\n\t\t\tsignalChannel,\n\t\t\tminFreqHz,\n\t\t\tmaxFreqHz,\n\t\t\tscaleAxis: \"scaleY\",\n\t\t\tminScale: .2,\n\t\t\tmaxScale,\n\t\t\tpeakDecay: .8\n\t\t};\n\t\treturn this;\n\t}\n\t/** Long Shadow Extrusion */\n\tlongShadow(angle = 45, length = 40, color = \"#000000\", startOpacity = .8, endOpacity = 0, steps = 16) {\n\t\tthis.props.longShadow = {\n\t\t\tangle,\n\t\t\tlength,\n\t\t\tcolor,\n\t\t\tstartOpacity,\n\t\t\tendOpacity,\n\t\t\tsteps\n\t\t};\n\t\treturn this;\n\t}\n\t/** Particle Dust / Quantum Dissolve */\n\tparticleDissolve(progress = 0, dispersalAngle = 90, maxDisplacement = 120) {\n\t\tthis.props.particleDissolve = {\n\t\t\tprogress,\n\t\t\tdispersalAngle,\n\t\t\tmaxDisplacement,\n\t\t\tturbulence: .5,\n\t\t\tparticleSize: 2\n\t\t};\n\t\treturn this;\n\t}\n\t/** Add Expression Selector */\n\taddExpressionSelector(expression, mode = \"add\") {\n\t\tthis.selectors.push({\n\t\t\ttype: \"expression\",\n\t\t\texpression,\n\t\t\tmode,\n\t\t\tamount: 1\n\t\t});\n\t\treturn this;\n\t}\n\t/** Alias for addExpressionSelector */\n\texpressionSelector(expression, mode = \"add\") {\n\t\treturn this.addExpressionSelector(expression, mode);\n\t}\n\t/** Standard 2D Transforms */\n\tx(v) {\n\t\tthis.props.x = v;\n\t\treturn this;\n\t}\n\ty(v) {\n\t\tthis.props.y = v;\n\t\treturn this;\n\t}\n\tscale(v) {\n\t\tthis.props.scale = v;\n\t\treturn this;\n\t}\n\tscaleX(v) {\n\t\tthis.props.scaleX = v;\n\t\treturn this;\n\t}\n\tscaleY(v) {\n\t\tthis.props.scaleY = v;\n\t\treturn this;\n\t}\n\trotation(deg) {\n\t\tthis.props.rotation = deg;\n\t\treturn this;\n\t}\n\topacity(v) {\n\t\tthis.props.opacity = v;\n\t\treturn this;\n\t}\n\tblur(v) {\n\t\tthis.props.blur = v;\n\t\treturn this;\n\t}\n\tfillColor(hex) {\n\t\tthis.props.fillColor = hex;\n\t\treturn this;\n\t}\n\tbuild() {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tselectors: this.selectors,\n\t\t\tprops: this.props\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/program/text-animations/advanced-types.ts\n/**\n* @file packages/compositions/src/program/text-animations/advanced-types.ts\n* Data contracts and Zod schemas for Advanced Motion Design & After Effects Extended Typography Engine.\n*/\nconst AnchorGroupingSchema = z.enum([\n\t\"character\",\n\t\"word\",\n\t\"line\",\n\t\"all\"\n]);\nconst AnchorPresetSchema = z.enum([\n\t\"center\",\n\t\"baseline\",\n\t\"bottom_left\",\n\t\"bottom_center\",\n\t\"bottom_right\",\n\t\"top_left\",\n\t\"top_center\",\n\t\"top_right\",\n\t\"custom\"\n]);\nconst TextAnchorConfigSchema = z.object({\n\tgrouping: AnchorGroupingSchema.default(\"character\"),\n\tpreset: AnchorPresetSchema.default(\"center\"),\n\tanchorX: z.number().default(.5),\n\tanchorY: z.number().default(.5),\n\toffsetX: z.number().default(0),\n\toffsetY: z.number().default(0)\n});\nconst SkewPropertiesSchema = z.object({\n\tskew: z.number().min(-90).max(90),\n\tskewAxis: z.number().default(0)\n});\nconst LineSpacingDynamicsSchema = z.object({\n\tlineSpacing: z.number(),\n\tlineAnchor: z.number().min(0).max(1).default(0)\n});\nconst VolumetricFormationModeSchema = z.enum([\n\t\"planar\",\n\t\"vortex\",\n\t\"cylinder\",\n\t\"helix\"\n]);\nconst VolumetricFormationConfigSchema = z.object({\n\tmode: VolumetricFormationModeSchema.default(\"planar\"),\n\tradius: z.number().default(300),\n\tpitch: z.number().default(120),\n\ttotalAngle: z.number().default(360),\n\taxis: z.enum([\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"z\"\n\t]).default(\"y\"),\n\tperspective: z.number().positive().default(1200)\n});\nconst Spatial3DPropertiesSchema = z.object({\n\ttranslateZ: z.number().optional(),\n\trotationX: z.number().optional(),\n\trotationY: z.number().optional(),\n\trotationZ: z.number().optional(),\n\tformation: VolumetricFormationConfigSchema.optional()\n});\nconst SpringPhysicsSchema = z.object({\n\tstiffness: z.number().positive().default(180),\n\tdamping: z.number().positive().default(12),\n\tmass: z.number().positive().default(1),\n\tinitialVelocity: z.number().default(0),\n\tovershootMultiplier: z.number().min(.5).max(3).default(1)\n});\nconst ExpressionSelectorSchema = z.object({\n\ttype: z.literal(\"expression\"),\n\tname: z.string().optional(),\n\texpression: z.string(),\n\tmode: z.enum([\n\t\t\"add\",\n\t\t\"subtract\",\n\t\t\"intersect\",\n\t\t\"min\",\n\t\t\"max\",\n\t\t\"difference\"\n\t]).default(\"add\"),\n\tamount: z.number().default(1)\n});\nconst DynamicStrokePropertiesSchema = z.object({\n\tstrokeWidth: z.number().min(0).default(0),\n\tstrokeColor: z.string().default(\"#ffffff\"),\n\tstrokeAlign: z.enum([\n\t\t\"center\",\n\t\t\"inside\",\n\t\t\"outside\"\n\t]).default(\"center\"),\n\tfillOpacity: z.number().min(0).max(1).default(1),\n\tdashArray: z.tuple([z.number(), z.number()]).optional(),\n\tdashOffset: z.number().default(0)\n});\nconst KineticMarqueeConfigSchema = z.object({\n\tdirection: z.enum([\n\t\t\"left\",\n\t\t\"right\",\n\t\t\"up\",\n\t\t\"down\"\n\t]).default(\"left\"),\n\tvelocity: z.number().default(120),\n\tloop: z.boolean().default(true),\n\trepeatGap: z.number().default(80),\n\tsnap: z.object({\n\t\tenabled: z.boolean().default(false),\n\t\tgranularity: z.enum([\n\t\t\t\"character\",\n\t\t\t\"word\",\n\t\t\t\"line\"\n\t\t]).default(\"word\"),\n\t\tstopIndex: z.number().default(0),\n\t\tdecelEase: z.string().default(\"cubic.out\")\n\t}).optional()\n});\nconst VariableFontAxesSchema = z.object({\n\tweight: z.number().min(100).max(1e3).optional(),\n\twidth: z.number().min(50).max(200).optional(),\n\tslant: z.number().min(-25).max(25).optional(),\n\titalic: z.number().min(0).max(1).optional(),\n\topticalSize: z.number().min(6).max(144).optional()\n});\nconst ChromaticGlitchConfigSchema = z.object({\n\tredShiftX: z.number().default(0),\n\tredShiftY: z.number().default(0),\n\tblueShiftX: z.number().default(0),\n\tblueShiftY: z.number().default(0),\n\tsliceProbability: z.number().min(0).max(1).default(0),\n\tsliceAmplitude: z.number().default(0)\n});\nconst AudioSpectrumTypographySchema = z.object({\n\tsignalChannel: z.string(),\n\tminFreqHz: z.number().default(60),\n\tmaxFreqHz: z.number().default(16e3),\n\tscaleAxis: z.enum([\n\t\t\"scaleY\",\n\t\t\"scaleX\",\n\t\t\"scale\",\n\t\t\"y\"\n\t]).default(\"scaleY\"),\n\tminScale: z.number().default(.2),\n\tmaxScale: z.number().default(2.5),\n\tpeakDecay: z.number().min(0).max(.99).default(.8)\n});\nconst LongShadowConfigSchema = z.object({\n\tangle: z.number().default(45),\n\tlength: z.number().min(0).default(0),\n\tcolor: z.string().default(\"#000000\"),\n\tstartOpacity: z.number().min(0).max(1).default(.8),\n\tendOpacity: z.number().min(0).max(1).default(0),\n\tsteps: z.number().int().min(4).max(64).default(16)\n});\nconst ParticleDissolveConfigSchema = z.object({\n\tprogress: z.number().min(0).max(1).default(0),\n\tdispersalAngle: z.number().default(90),\n\tmaxDisplacement: z.number().default(120),\n\tturbulence: z.number().default(.5),\n\tparticleSize: z.number().default(2)\n});\nconst ExtendedGlyphPropertiesSchema = z.object({\n\tx: z.number().optional(),\n\ty: z.number().optional(),\n\ttranslateZ: z.number().optional(),\n\tscale: z.number().optional(),\n\tscaleX: z.number().optional(),\n\tscaleY: z.number().optional(),\n\trotation: z.number().optional(),\n\trotationX: z.number().optional(),\n\trotationY: z.number().optional(),\n\trotationZ: z.number().optional(),\n\tformation: VolumetricFormationConfigSchema.optional(),\n\tskew: z.number().optional(),\n\tskewAxis: z.number().optional(),\n\ttracking: z.number().optional(),\n\tlineSpacing: z.number().optional(),\n\tlineAnchor: z.number().optional(),\n\tanchor: TextAnchorConfigSchema.optional(),\n\topacity: z.number().optional(),\n\tblur: z.number().optional(),\n\tfillColor: z.string().optional(),\n\tstroke: DynamicStrokePropertiesSchema.optional(),\n\tvariableAxes: VariableFontAxesSchema.optional(),\n\tchromaticGlitch: ChromaticGlitchConfigSchema.optional(),\n\tlongShadow: LongShadowConfigSchema.optional(),\n\tparticleDissolve: ParticleDissolveConfigSchema.optional(),\n\taudioSpectrum: AudioSpectrumTypographySchema.optional(),\n\tspring: SpringPhysicsSchema.optional()\n});\nconst AdvancedTextAnimatorSchema = z.object({\n\tname: z.string().default(\"AdvancedAnimator\"),\n\tselectors: z.array(z.record(z.string(), z.unknown())).default([]),\n\tprops: ExtendedGlyphPropertiesSchema\n});\n\n//#endregion\n//#region src/program/text-animations/types.ts\n/**\n* @file packages/compositions/src/program/text-animations/types.ts\n* Data contracts and Zod schemas for After Effects Parity Text Animation Engine.\n*/\nconst Vec2Schema = z.object({\n\tx: z.number(),\n\ty: z.number()\n});\nconst CubicBezierSegmentSchema = z.object({\n\tp0: Vec2Schema,\n\tp1: Vec2Schema,\n\tp2: Vec2Schema,\n\tp3: Vec2Schema\n});\nconst TextPathSourceSchema = z.discriminatedUnion(\"type\", [\n\tz.object({\n\t\ttype: z.literal(\"svg\"),\n\t\td: z.string().min(1, \"SVG path string cannot be empty\")\n\t}),\n\tz.object({\n\t\ttype: z.literal(\"bezier\"),\n\t\tsegments: z.array(CubicBezierSegmentSchema).min(1)\n\t}),\n\tz.object({\n\t\ttype: z.literal(\"ellipse\"),\n\t\tcx: z.number(),\n\t\tcy: z.number(),\n\t\trx: z.number().positive(),\n\t\try: z.number().positive(),\n\t\tstartAngleDeg: z.number().default(0),\n\t\tendAngleDeg: z.number().default(360)\n\t}),\n\tz.object({\n\t\ttype: z.literal(\"wave\"),\n\t\tstartX: z.number(),\n\t\tstartY: z.number(),\n\t\tlength: z.number().positive(),\n\t\tamplitude: z.number(),\n\t\tfrequency: z.number().positive(),\n\t\tphaseDeg: z.number().default(0)\n\t})\n]);\nconst TextPathOptionsSchema = z.object({\n\tpath: TextPathSourceSchema,\n\tfirstMargin: z.number().default(0),\n\tlastMargin: z.number().default(0),\n\treversePath: z.boolean().default(false),\n\tperpendicularToPath: z.boolean().default(true),\n\tforceAlignment: z.boolean().default(false),\n\tloop: z.boolean().default(false),\n\tbaselineOffset: z.enum([\n\t\t\"baseline\",\n\t\t\"center\",\n\t\t\"ascender\",\n\t\t\"descender\"\n\t]).default(\"baseline\"),\n\tbaselineShift: z.number().default(0)\n});\nconst TextCursorStyleSchema = z.enum([\n\t\"bar\",\n\t\"underscore\",\n\t\"block\",\n\t\"custom\"\n]);\nconst TextCursorConfigSchema = z.object({\n\tenabled: z.boolean().default(true),\n\tstyle: TextCursorStyleSchema.default(\"bar\"),\n\tcustomChar: z.string().default(\"|\"),\n\tcolor: z.string().optional(),\n\tblinkFrequency: z.number().min(0).default(2),\n\thideOnComplete: z.boolean().default(false),\n\twidth: z.number().positive().default(2.5),\n\tspacing: z.number().default(3)\n});\nconst TypingCadenceSchema = z.discriminatedUnion(\"mode\", [z.object({ mode: z.literal(\"constant\") }), z.object({\n\tmode: z.literal(\"human\"),\n\tjitter: z.number().min(0).max(1).default(.35),\n\tcommaPauseMultiplier: z.number().min(1).default(3),\n\tsentencePauseMultiplier: z.number().min(1).default(5.5),\n\tparagraphPauseMultiplier: z.number().min(1).default(7)\n})]);\nconst TextScrambleConfigSchema = z.object({\n\tenabled: z.boolean().default(false),\n\tcharset: z.enum([\n\t\t\"ascii\",\n\t\t\"alphanumeric\",\n\t\t\"matrix\",\n\t\t\"binary\",\n\t\t\"hex\",\n\t\t\"custom\"\n\t]).default(\"alphanumeric\"),\n\tcustomCharset: z.string().optional(),\n\tscrambleFramesPerChar: z.number().int().min(1).default(8),\n\thighlightProbability: z.number().min(0).max(1).default(.25),\n\tscrambleColor: z.string().optional()\n});\nconst TypewriterAnimatorSchema = z.object({\n\tgranularity: z.enum([\n\t\t\"character\",\n\t\t\"word\",\n\t\t\"line\"\n\t]).default(\"character\"),\n\tcursor: TextCursorConfigSchema.default({\n\t\tenabled: true,\n\t\tstyle: \"bar\",\n\t\tcustomChar: \"|\",\n\t\tblinkFrequency: 2,\n\t\thideOnComplete: false,\n\t\twidth: 2.5,\n\t\tspacing: 3\n\t}),\n\tcadence: TypingCadenceSchema.default({\n\t\tmode: \"human\",\n\t\tjitter: .35,\n\t\tcommaPauseMultiplier: 3,\n\t\tsentencePauseMultiplier: 5.5,\n\t\tparagraphPauseMultiplier: 7\n\t}),\n\tscramble: TextScrambleConfigSchema.default({\n\t\tenabled: false,\n\t\tcharset: \"alphanumeric\",\n\t\tscrambleFramesPerChar: 8,\n\t\thighlightProbability: .25\n\t}),\n\tsoundSync: z.boolean().default(false)\n});\nconst SelectorBasedOnSchema = z.enum([\n\t\"characters\",\n\t\"characters_excluding_spaces\",\n\t\"words\",\n\t\"lines\"\n]);\nconst SelectorUnitsSchema = z.enum([\"percentage\", \"index\"]);\nconst SelectorShapeSchema = z.enum([\n\t\"square\",\n\t\"ramp_up\",\n\t\"ramp_down\",\n\t\"triangle\",\n\t\"round\",\n\t\"smooth\"\n]);\nconst SelectorModeSchema = z.enum([\n\t\"add\",\n\t\"subtract\",\n\t\"intersect\",\n\t\"min\",\n\t\"max\",\n\t\"difference\"\n]);\nconst TextRangeSelectorSchema = z.object({\n\ttype: z.literal(\"range\"),\n\tstart: z.number().default(0),\n\tend: z.number().default(1),\n\toffset: z.number().default(0),\n\tunits: SelectorUnitsSchema.default(\"percentage\"),\n\tbasedOn: SelectorBasedOnSchema.default(\"characters\"),\n\tshape: SelectorShapeSchema.default(\"square\"),\n\tmode: SelectorModeSchema.default(\"add\"),\n\tamount: z.number().min(-1).max(1).default(1),\n\teaseHigh: z.number().min(-1).max(1).default(0),\n\teaseLow: z.number().min(-1).max(1).default(0),\n\trandomizeOrder: z.boolean().default(false),\n\trandomSeed: z.number().int().default(12345)\n});\nconst TextWigglySelectorSchema = z.object({\n\ttype: z.literal(\"wiggly\"),\n\twigglesPerSecond: z.number().positive().default(2),\n\tcorrelation: z.number().min(0).max(1).default(.5),\n\ttemporalPhaseDeg: z.number().default(0),\n\tspatialPhaseDeg: z.number().default(0),\n\tminAmount: z.number().min(-1).max(1).default(-1),\n\tmaxAmount: z.number().min(-1).max(1).default(1),\n\trandomSeed: z.number().int().default(42),\n\tbasedOn: SelectorBasedOnSchema.default(\"characters\"),\n\tmode: SelectorModeSchema.default(\"intersect\")\n});\nconst TextSignalSelectorSchema = z.object({\n\ttype: z.literal(\"signal\"),\n\tsignalId: z.string(),\n\tmultiplier: z.number().default(1),\n\toffset: z.number().default(0),\n\tphaseSpread: z.number().default(0),\n\tbasedOn: SelectorBasedOnSchema.default(\"characters\"),\n\tmode: SelectorModeSchema.default(\"add\")\n});\nconst TextSelectorSchema = z.discriminatedUnion(\"type\", [\n\tTextRangeSelectorSchema,\n\tTextWigglySelectorSchema,\n\tTextSignalSelectorSchema\n]);\nconst AnimatableGlyphPropsSchema = z.object({\n\tx: z.number().optional(),\n\ty: z.number().optional(),\n\tz: z.number().optional(),\n\tscale: z.number().optional(),\n\tscaleX: z.number().optional(),\n\tscaleY: z.number().optional(),\n\trotation: z.number().optional(),\n\trotationX: z.number().optional(),\n\trotationY: z.number().optional(),\n\tskew: z.number().optional(),\n\tskewAxis: z.number().optional(),\n\ttracking: z.number().optional(),\n\tlineSpacing: z.number().optional(),\n\topacity: z.number().min(0).max(1).optional(),\n\tfillColor: z.string().optional(),\n\tstrokeColor: z.string().optional(),\n\tstrokeWidth: z.number().min(0).optional(),\n\tblur: z.number().min(0).optional(),\n\tcharacterOffset: z.number().int().optional()\n});\nconst GlyphAnchorGroupingSchema = z.enum([\n\t\"character\",\n\t\"word\",\n\t\"line\",\n\t\"all\"\n]);\nconst GlyphAnchorPointSchema = z.object({\n\tgrouping: GlyphAnchorGroupingSchema.default(\"character\"),\n\tanchorX: z.number().default(.5),\n\tanchorY: z.number().default(.8)\n});\nconst AETextAnimatorSchema = z.object({\n\tname: z.string().default(\"Animator\"),\n\tselectors: z.array(TextSelectorSchema).min(1),\n\tprops: AnimatableGlyphPropsSchema,\n\tanchor: GlyphAnchorPointSchema.default({\n\t\tgrouping: \"character\",\n\t\tanchorX: .5,\n\t\tanchorY: .8\n\t})\n});\nconst EnhancedTextNodeSchema = z.object({\n\ttext: z.string(),\n\tfontFamily: z.string().default(\"Inter\"),\n\tfontSize: z.number().positive().default(24),\n\tfontWeight: z.union([z.number(), z.string()]).default(400),\n\tfill: z.string().default(\"#ffffff\"),\n\tletterSpacing: z.number().default(0),\n\tlineHeight: z.number().positive().default(1.2),\n\ttextAlign: z.enum([\n\t\t\"left\",\n\t\t\"center\",\n\t\t\"right\"\n\t]).default(\"left\"),\n\tpathOptions: TextPathOptionsSchema.optional(),\n\ttypewriter: TypewriterAnimatorSchema.optional(),\n\tanimators: z.array(AETextAnimatorSchema).default([])\n});\n\n//#endregion\n//#region src/program/text-animations/builder.ts\n/**\n* @file packages/compositions/src/program/text-animations/builder.ts\n* Fluent builders for Path-Following Text and After Effects Text Animators.\n*/\n/**\n* Fluent builder for creating Path-Following Text configurations.\n*/\nvar TextPathBuilder = class TextPathBuilder {\n\toptions = {\n\t\tfirstMargin: 0,\n\t\tlastMargin: 0,\n\t\treversePath: false,\n\t\tperpendicularToPath: true,\n\t\tforceAlignment: false,\n\t\tloop: false,\n\t\tbaselineOffset: \"baseline\",\n\t\tbaselineShift: 0\n\t};\n\tstatic fromSvg(svgPath) {\n\t\tconst builder = new TextPathBuilder();\n\t\tbuilder.options.path = {\n\t\t\ttype: \"svg\",\n\t\t\td: svgPath\n\t\t};\n\t\treturn builder;\n\t}\n\tstatic fromBezier(segments) {\n\t\tconst builder = new TextPathBuilder();\n\t\tbuilder.options.path = {\n\t\t\ttype: \"bezier\",\n\t\t\tsegments\n\t\t};\n\t\treturn builder;\n\t}\n\tstatic fromCurve(curve) {\n\t\treturn TextPathBuilder.fromBezier([curve]);\n\t}\n\tstatic circularBadge(cx, cy, radius) {\n\t\tconst builder = new TextPathBuilder();\n\t\tbuilder.options.path = {\n\t\t\ttype: \"ellipse\",\n\t\t\tcx,\n\t\t\tcy,\n\t\t\trx: radius,\n\t\t\try: radius,\n\t\t\tstartAngleDeg: 0,\n\t\t\tendAngleDeg: 360\n\t\t};\n\t\tbuilder.options.loop = true;\n\t\treturn builder;\n\t}\n\tstatic ellipse(cx, cy, rx, ry, startAngleDeg = 0, endAngleDeg = 360) {\n\t\tconst builder = new TextPathBuilder();\n\t\tbuilder.options.path = {\n\t\t\ttype: \"ellipse\",\n\t\t\tcx,\n\t\t\tcy,\n\t\t\trx,\n\t\t\try,\n\t\t\tstartAngleDeg,\n\t\t\tendAngleDeg\n\t\t};\n\t\tbuilder.options.loop = Math.abs(endAngleDeg - startAngleDeg) >= 360;\n\t\treturn builder;\n\t}\n\tstatic wave(startX, startY, length, amplitude, frequency, phaseDeg = 0) {\n\t\tconst builder = new TextPathBuilder();\n\t\tbuilder.options.path = {\n\t\t\ttype: \"wave\",\n\t\t\tstartX,\n\t\t\tstartY,\n\t\t\tlength,\n\t\t\tamplitude,\n\t\t\tfrequency,\n\t\t\tphaseDeg\n\t\t};\n\t\treturn builder;\n\t}\n\tfirstMargin(margin) {\n\t\tthis.options.firstMargin = margin;\n\t\treturn this;\n\t}\n\tlastMargin(margin) {\n\t\tthis.options.lastMargin = margin;\n\t\treturn this;\n\t}\n\treversePath(reverse) {\n\t\tthis.options.reversePath = reverse;\n\t\treturn this;\n\t}\n\tperpendicularToPath(perpendicular) {\n\t\tthis.options.perpendicularToPath = perpendicular;\n\t\treturn this;\n\t}\n\tforceAlignment(force) {\n\t\tthis.options.forceAlignment = force;\n\t\treturn this;\n\t}\n\tloop(isLoop) {\n\t\tthis.options.loop = isLoop;\n\t\treturn this;\n\t}\n\tbaselineOffset(offset) {\n\t\tthis.options.baselineOffset = offset;\n\t\treturn this;\n\t}\n\tbaselineShift(shiftPixels) {\n\t\tthis.options.baselineShift = shiftPixels;\n\t\treturn this;\n\t}\n\tbuild() {\n\t\treturn TextPathOptionsSchema.parse(this.options);\n\t}\n};\n/**\n* Fluent builder for After Effects Range, Wiggly, and Signal Animators.\n*/\nvar TextAnimatorBuilder = class TextAnimatorBuilder {\n\tname = \"Animator\";\n\tselectors = [];\n\tprops = {};\n\tanchor = {\n\t\tgrouping: \"character\",\n\t\tanchorX: .5,\n\t\tanchorY: .8\n\t};\n\tstatic create(name) {\n\t\tconst builder = new TextAnimatorBuilder();\n\t\tbuilder.name = name;\n\t\treturn builder;\n\t}\n\t/** Adds an After Effects Range Selector */\n\taddRangeSelector(config) {\n\t\tconst rawHigh = config.easeHigh ?? 0;\n\t\tconst easeHigh = Math.abs(rawHigh) > 1 ? rawHigh / 100 : rawHigh;\n\t\tconst rawLow = config.easeLow ?? 0;\n\t\tconst easeLow = Math.abs(rawLow) > 1 ? rawLow / 100 : rawLow;\n\t\tthis.selectors.push({\n\t\t\ttype: \"range\",\n\t\t\tstart: config.start ?? 0,\n\t\t\tend: config.end ?? 1,\n\t\t\toffset: config.offset ?? 0,\n\t\t\tunits: \"percentage\",\n\t\t\tbasedOn: config.basedOn ?? \"characters\",\n\t\t\tshape: config.shape ?? \"smooth\",\n\t\t\tmode: config.mode ?? \"add\",\n\t\t\tamount: 1,\n\t\t\teaseHigh: Math.max(-1, Math.min(1, easeHigh)),\n\t\t\teaseLow: Math.max(-1, Math.min(1, easeLow)),\n\t\t\trandomizeOrder: config.randomizeOrder ?? false,\n\t\t\trandomSeed: config.randomSeed ?? 12345\n\t\t});\n\t\treturn this;\n\t}\n\t/** Adds an After Effects Wiggly Selector for procedural organic flutter */\n\taddWigglySelector(config) {\n\t\tthis.selectors.push({\n\t\t\ttype: \"wiggly\",\n\t\t\twigglesPerSecond: config.wigglesPerSecond ?? 2,\n\t\t\tcorrelation: config.correlation ?? .5,\n\t\t\ttemporalPhaseDeg: 0,\n\t\t\tspatialPhaseDeg: 0,\n\t\t\tminAmount: config.minAmount ?? -1,\n\t\t\tmaxAmount: config.maxAmount ?? 1,\n\t\t\trandomSeed: config.randomSeed ?? 42,\n\t\t\tbasedOn: \"characters\",\n\t\t\tmode: config.mode ?? \"intersect\"\n\t\t});\n\t\treturn this;\n\t}\n\t/** Adds a reactive signal selector */\n\taddSignalSelector(signalId, multiplier = 1, phaseSpread = 0, offset = 0, mode = \"add\") {\n\t\tthis.selectors.push({\n\t\t\ttype: \"signal\",\n\t\t\tsignalId,\n\t\t\tmultiplier,\n\t\t\toffset,\n\t\t\tphaseSpread,\n\t\t\tbasedOn: \"characters\",\n\t\t\tmode\n\t\t});\n\t\treturn this;\n\t}\n\tx(pixels) {\n\t\tthis.props.x = pixels;\n\t\treturn this;\n\t}\n\ty(pixels) {\n\t\tthis.props.y = pixels;\n\t\treturn this;\n\t}\n\tz(pixels) {\n\t\tthis.props.z = pixels;\n\t\treturn this;\n\t}\n\tscale(scaleValue) {\n\t\tthis.props.scale = scaleValue;\n\t\treturn this;\n\t}\n\tscaleX(scaleValue) {\n\t\tthis.props.scaleX = scaleValue;\n\t\treturn this;\n\t}\n\tscaleY(scaleValue) {\n\t\tthis.props.scaleY = scaleValue;\n\t\treturn this;\n\t}\n\trotation(degrees) {\n\t\tthis.props.rotation = degrees;\n\t\treturn this;\n\t}\n\trotationX(degrees) {\n\t\tthis.props.rotationX = degrees;\n\t\treturn this;\n\t}\n\trotationY(degrees) {\n\t\tthis.props.rotationY = degrees;\n\t\treturn this;\n\t}\n\tskew(degrees) {\n\t\tthis.props.skew = degrees;\n\t\treturn this;\n\t}\n\tskewAxis(degrees) {\n\t\tthis.props.skewAxis = degrees;\n\t\treturn this;\n\t}\n\topacity(value) {\n\t\tthis.props.opacity = value;\n\t\treturn this;\n\t}\n\tblur(pixels) {\n\t\tthis.props.blur = pixels;\n\t\treturn this;\n\t}\n\tfill(colorHex) {\n\t\treturn this.fillColor(colorHex);\n\t}\n\tfillColor(colorHex) {\n\t\tthis.props.fillColor = colorHex;\n\t\treturn this;\n\t}\n\tstrokeColor(colorHex) {\n\t\tthis.props.strokeColor = colorHex;\n\t\treturn this;\n\t}\n\tstrokeWidth(pixels) {\n\t\tthis.props.strokeWidth = pixels;\n\t\treturn this;\n\t}\n\ttracking(spacingPixels) {\n\t\tthis.props.tracking = spacingPixels;\n\t\treturn this;\n\t}\n\tlineSpacing(spacingPixels) {\n\t\tthis.props.lineSpacing = spacingPixels;\n\t\treturn this;\n\t}\n\tcharacterOffset(offset) {\n\t\tthis.props.characterOffset = offset;\n\t\treturn this;\n\t}\n\tanchorGrouping(grouping, anchorX = .5, anchorY = .8) {\n\t\tthis.anchor = {\n\t\t\tgrouping,\n\t\t\tanchorX,\n\t\t\tanchorY\n\t\t};\n\t\treturn this;\n\t}\n\tbuild() {\n\t\treturn AETextAnimatorSchema.parse({\n\t\t\tname: this.name,\n\t\t\tselectors: this.selectors,\n\t\t\tprops: this.props,\n\t\t\tanchor: this.anchor\n\t\t});\n\t}\n};\n\n//#endregion\n//#region src/program/text-animations/math.ts\n/**\n* Evaluates closed-form underdamped harmonic oscillator for spring physics:\n*\n* x(t) = target + (x0 - target) * exp(-zeta * omega_n * t) *\n* [ cos(omega_d * t) + (zeta / sqrt(1 - zeta^2)) * sin(omega_d * t) ]\n*\n* @param t Time in seconds since excitation\n* @param stiffness Spring stiffness (k)\n* @param damping Damping coefficient (c)\n* @param mass Mass of glyph (m)\n* @param initialVelocity Initial velocity (v0)\n* @returns Settled scalar progress in [0, 1] with overshoot\n*/\nfunction evaluateSpringProgress(t, stiffness = 180, damping = 12, mass = 1, initialVelocity = 0) {\n\tif (t <= 0) return 0;\n\tconst omega_n = Math.sqrt(Math.max(1e-4, stiffness) / Math.max(1e-4, mass));\n\tconst zeta = damping / (2 * Math.sqrt(Math.max(1e-4, stiffness * mass)));\n\tif (zeta < 1) {\n\t\tconst omega_d = omega_n * Math.sqrt(1 - zeta * zeta);\n\t\tconst decay = Math.exp(-zeta * omega_n * t);\n\t\tconst c1 = -1;\n\t\tconst c2 = (initialVelocity - zeta * omega_n * -1) / Math.max(1e-6, omega_d);\n\t\tconst displacement = decay * (c1 * Math.cos(omega_d * t) + c2 * Math.sin(omega_d * t));\n\t\treturn Math.min(2, Math.max(-1, 1 + displacement));\n\t} else if (Math.abs(zeta - 1) < 1e-4) {\n\t\tconst decay = Math.exp(-omega_n * t);\n\t\treturn 1 + (-1 + (initialVelocity - omega_n) * t) * decay;\n\t} else {\n\t\tconst s1 = -omega_n * (zeta - Math.sqrt(zeta * zeta - 1));\n\t\tconst s2 = -omega_n * (zeta + Math.sqrt(zeta * zeta - 1));\n\t\tconst c1 = (initialVelocity + s2) / Math.max(1e-6, s1 - s2);\n\t\tconst c2 = -1 - c1;\n\t\treturn 1 + (c1 * Math.exp(s1 * t) + c2 * Math.exp(s2 * t));\n\t}\n}\n/**\n* Evaluates 2D Directional Skew matrix components:\n*\n* S(theta, phi) = R(phi) * [ 1 tan(theta) ] * R(-phi)\n* [ 0 1 ]\n*\n* @param skewDeg Skew angle in degrees\n* @param skewAxisDeg Skew axis in degrees\n* @returns 2x2 affine shear matrix components [m00, m01, m10, m11]\n*/\nfunction evaluateSkewMatrix(skewDeg, skewAxisDeg = 0) {\n\tif (skewDeg === 0) return [\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t1\n\t];\n\tconst theta = skewDeg * Math.PI / 180;\n\tconst phi = skewAxisDeg * Math.PI / 180;\n\tconst cosPhi = Math.cos(phi);\n\tconst sinPhi = Math.sin(phi);\n\tconst tanTheta = Math.tan(theta);\n\treturn [\n\t\t1 - tanTheta * cosPhi * sinPhi,\n\t\ttanTheta * cosPhi * cosPhi,\n\t\t-tanTheta * sinPhi * sinPhi,\n\t\t1 + tanTheta * sinPhi * cosPhi\n\t];\n}\n/**\n* Computes anchor pivot coordinates relative to glyph bounding box:\n*\n* @param bbox Glyph bounding box { width, height, ascender, descender }\n* @param config Text anchor configuration\n* @returns Pivot offset (px, py) relative to glyph quad center\n*/\nfunction computeAnchorPivotOffset(bbox, config) {\n\tlet normX = config.anchorX;\n\tlet normY = config.anchorY;\n\tswitch (config.preset) {\n\t\tcase \"center\":\n\t\t\tnormX = .5;\n\t\t\tnormY = .5;\n\t\t\tbreak;\n\t\tcase \"baseline\":\n\t\t\tnormX = .5;\n\t\t\tnormY = bbox.height > 0 ? bbox.ascender / bbox.height : .8;\n\t\t\tbreak;\n\t\tcase \"bottom_left\":\n\t\t\tnormX = 0;\n\t\t\tnormY = 1;\n\t\t\tbreak;\n\t\tcase \"bottom_center\":\n\t\t\tnormX = .5;\n\t\t\tnormY = 1;\n\t\t\tbreak;\n\t\tcase \"bottom_right\":\n\t\t\tnormX = 1;\n\t\t\tnormY = 1;\n\t\t\tbreak;\n\t\tcase \"top_left\":\n\t\t\tnormX = 0;\n\t\t\tnormY = 0;\n\t\t\tbreak;\n\t\tcase \"top_center\":\n\t\t\tnormX = .5;\n\t\t\tnormY = 0;\n\t\t\tbreak;\n\t\tcase \"top_right\":\n\t\t\tnormX = 1;\n\t\t\tnormY = 0;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tnormX = .5;\n\t\t\tnormY = .5;\n\t\t\tbreak;\n\t}\n\treturn {\n\t\tpx: (normX - .5) * bbox.width + config.offsetX,\n\t\tpy: (normY - .5) * bbox.height + config.offsetY\n\t};\n}\n/**\n* Computes leading displacement per line based on lineAnchor:\n*\n* @param lineIndex 0-based index of current line\n* @param lineCount Total lines in paragraph\n* @param lineSpacing Additional leading in pixels\n* @param lineAnchor Pivot line anchor in [0, 1]\n* @returns Y displacement in pixels\n*/\nfunction computeLineLeadingDisplacement(lineIndex, lineCount, lineSpacing, lineAnchor = 0) {\n\tif (lineSpacing === 0 || lineCount <= 1) return 0;\n\treturn (lineIndex - lineAnchor * (lineCount - 1)) * lineSpacing;\n}\n/**\n* Evaluates an Expression Selector formula safely in a sandboxed numeric scope.\n*\n* @param expression Formula string (e.g. \"Math.sin(time * 4 + textIndex * 0.2)\")\n* @param ctx Glyph evaluation context\n* @returns Numeric selector weight clamped to [-1, 1]\n*/\nfunction evaluateExpressionSelector(expression, ctx) {\n\ttry {\n\t\tconst scope = {\n\t\t\ttextIndex: ctx.charIndex,\n\t\t\ttextTotal: Math.max(1, ctx.totalChars),\n\t\t\twordIndex: ctx.wordIndex,\n\t\t\twordTotal: Math.max(1, ctx.totalWords),\n\t\t\tlineIndex: ctx.lineIndex,\n\t\t\tlineTotal: Math.max(1, ctx.totalLines),\n\t\t\ttime: ctx.time,\n\t\t\tframe: ctx.frame,\n\t\t\tfps: ctx.fps,\n\t\t\tsin: Math.sin,\n\t\t\tcos: Math.cos,\n\t\t\ttan: Math.tan,\n\t\t\texp: Math.exp,\n\t\t\tlog: Math.log,\n\t\t\tabs: Math.abs,\n\t\t\tmin: Math.min,\n\t\t\tmax: Math.max,\n\t\t\tsqrt: Math.sqrt,\n\t\t\tpow: Math.pow,\n\t\t\tfloor: Math.floor,\n\t\t\tceil: Math.ceil,\n\t\t\tround: Math.round,\n\t\t\tPI: Math.PI,\n\t\t\tclamp: (v, lo, hi) => Math.max(lo, Math.min(hi, v)),\n\t\t\tnoise: (seed) => {\n\t\t\t\tconst n = Math.sin(seed * 12.9898 + ctx.frame * .1) * 43758.5453;\n\t\t\t\treturn (n - Math.floor(n)) * 2 - 1;\n\t\t\t},\n\t\t\tsignals: ctx.signals ?? {}\n\t\t};\n\t\tconst keys = Object.keys(scope);\n\t\tconst values = Object.values(scope);\n\t\tconst fn = new Function(...keys, `return (${expression});`);\n\t\tconst result = Number(fn(...values));\n\t\treturn Number.isFinite(result) ? Math.max(-1, Math.min(1, result)) : 0;\n\t} catch {\n\t\treturn 0;\n\t}\n}\n/**\n* Evaluates 3D Volumetric Formation parametric coordinates.\n*/\nfunction evaluateVolumetricFormation(glyphIndex, totalGlyphs, config) {\n\tconst n = Math.max(1, totalGlyphs);\n\tconst norm = n > 1 ? glyphIndex / (n - 1) : 0;\n\tconst totalAngleRad = config.totalAngle * Math.PI / 180;\n\tconst phi = norm * totalAngleRad;\n\tlet x = 0;\n\tlet y = 0;\n\tlet z$1 = 0;\n\tlet rotX = 0;\n\tlet rotY = 0;\n\tlet rotZ = 0;\n\tlet depthOpacity = 1;\n\tswitch (config.mode) {\n\t\tcase \"cylinder\": {\n\t\t\tconst theta = config.totalAngle < 360 ? (norm - .5) * totalAngleRad : phi;\n\t\t\tif (config.axis === \"y\") {\n\t\t\t\tx = config.radius * Math.sin(theta);\n\t\t\t\tz$1 = config.radius * Math.cos(theta) - config.radius;\n\t\t\t\trotY = theta * 180 / Math.PI;\n\t\t\t} else if (config.axis === \"x\") {\n\t\t\t\ty = config.radius * Math.sin(theta);\n\t\t\t\tz$1 = config.radius * Math.cos(theta) - config.radius;\n\t\t\t\trotX = theta * 180 / Math.PI;\n\t\t\t} else {\n\t\t\t\tx = config.radius * Math.sin(theta);\n\t\t\t\ty = config.radius * Math.cos(theta);\n\t\t\t\trotZ = theta * 180 / Math.PI;\n\t\t\t}\n\t\t\tconst facing = Math.cos(theta);\n\t\t\tdepthOpacity = Math.max(.25, (facing + 1) * .5);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"vortex\": {\n\t\t\tconst spiralPhi = -Math.PI / 2 + phi;\n\t\t\tconst r = config.radius * (1 - norm * .35);\n\t\t\tx = r * Math.cos(spiralPhi);\n\t\t\ty = r * Math.sin(spiralPhi);\n\t\t\tz$1 = -glyphIndex * config.pitch || 0;\n\t\t\tconst dr = -.35 * config.radius / (totalAngleRad || 1);\n\t\t\tconst dx = dr * Math.cos(spiralPhi) - r * Math.sin(spiralPhi);\n\t\t\tconst dy = dr * Math.sin(spiralPhi) + r * Math.cos(spiralPhi);\n\t\t\trotZ = Math.atan2(dy, dx) * 180 / Math.PI;\n\t\t\tdepthOpacity = Math.max(.65, 1 - norm * .35);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"helix\":\n\t\t\tif (config.axis === \"x\") {\n\t\t\t\tconst pitchX = config.pitch > 10 ? config.pitch : 28;\n\t\t\t\tx = (glyphIndex - (n - 1) / 2) * pitchX;\n\t\t\t\ty = config.radius * Math.sin(phi);\n\t\t\t\tz$1 = config.radius * Math.cos(phi) - config.radius;\n\t\t\t\trotX = Math.sin(phi) * 22;\n\t\t\t\tdepthOpacity = .75 + .25 * ((Math.cos(phi) + 1) * .5);\n\t\t\t} else {\n\t\t\t\tconst theta = (norm - .5) * totalAngleRad;\n\t\t\t\tx = config.radius * Math.sin(theta);\n\t\t\t\ty = (glyphIndex - (n - 1) / 2) * config.pitch;\n\t\t\t\tz$1 = config.radius * Math.cos(theta) - config.radius;\n\t\t\t\trotY = theta * 180 / Math.PI;\n\t\t\t\tconst facing = Math.cos(theta);\n\t\t\t\tdepthOpacity = Math.max(.65, (facing + 1) * .5);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tz$1 = 0;\n\t\t\tbreak;\n\t}\n\tconst perspective = Math.max(100, config.perspective ?? 1200);\n\tconst depthDist = perspective - z$1;\n\tconst scaleMult = depthDist > 1 ? perspective / depthDist : 1;\n\treturn {\n\t\tx: x * scaleMult,\n\t\ty: y * scaleMult,\n\t\tz: z$1,\n\t\trotX,\n\t\trotY,\n\t\trotZ,\n\t\tscaleMult: Math.max(.1, scaleMult),\n\t\tdepthOpacity\n\t};\n}\n/**\n* Evaluates infinite kinetic marquee translation and snapping.\n*/\nfunction evaluateMarqueeOffset(baseX, containerWidth, contentWidth, config, elapsedSec) {\n\tconst totalSpan = (containerWidth > 0 ? Math.max(containerWidth, contentWidth) : contentWidth) + config.repeatGap;\n\tif (totalSpan <= 0) return baseX;\n\tlet travel = config.velocity * elapsedSec;\n\tif (config.snap?.enabled) {\n\t\tconst targetPos = (config.snap.stopIndex ?? 0) * (config.snap.granularity === \"character\" ? 40 : 120);\n\t\tconst decelFactor = Math.min(1, elapsedSec * 1.5);\n\t\ttravel = travel * (1 - decelFactor) + targetPos * decelFactor;\n\t}\n\tif (config.direction === \"right\" || config.direction === \"down\") travel = -travel;\n\tif (config.loop) {\n\t\tconst wrapped = (baseX - travel) % totalSpan;\n\t\treturn wrapped < -contentWidth ? wrapped + totalSpan : wrapped;\n\t}\n\treturn baseX - travel;\n}\n/**\n* Samples audio FFT frequency bin and computes scale factor for Audio Spectrum Typography.\n*/\nfunction sampleAudioSpectrumScale(glyphIndex, totalGlyphs, config, signals, frame, fps) {\n\tconst n = Math.max(1, totalGlyphs);\n\tconst norm = n > 1 ? glyphIndex / (n - 1) : .5;\n\tconst minFreq = Math.max(20, config.minFreqHz);\n\tconst targetFreq = minFreq * (Math.max(minFreq + 100, config.maxFreqHz) / minFreq) ** norm;\n\tlet magnitude = 0;\n\tif (signals) {\n\t\tconst sig = signals[config.signalChannel];\n\t\tif (typeof sig === \"number\") magnitude = sig;\n\t\telse if (typeof sig === \"function\") magnitude = Number(sig(frame, fps, targetFreq)) || 0;\n\t\telse if (typeof sig === \"object\" && sig !== null) {\n\t\t\tconst sObj = sig;\n\t\t\tif (typeof sObj.get === \"function\") magnitude = Number(sObj.get({\n\t\t\t\tframe,\n\t\t\t\tfps,\n\t\t\t\tfreq: targetFreq\n\t\t\t})) || 0;\n\t\t\telse if (Array.isArray(sObj.samples) || ArrayBuffer.isView(sObj.samples)) {\n\t\t\t\tconst arr = sObj.samples;\n\t\t\t\tconst binIdx = Math.floor(norm * (arr.length - 1));\n\t\t\t\tmagnitude = Number(arr[binIdx]) || 0;\n\t\t\t}\n\t\t}\n\t}\n\tconst clampedMag = Math.max(0, Math.min(1, magnitude));\n\treturn config.minScale + clampedMag * (config.maxScale - config.minScale);\n}\n\n//#endregion\n//#region src/program/text-animations/path.ts\n/**\n* Evaluates a point on a cubic Bezier curve at parameter t in [0, 1].\n*/\nfunction evaluateCubicBezier(segment, t) {\n\tconst u = 1 - t;\n\tconst tt = t * t;\n\tconst uu = u * u;\n\tconst uuu = uu * u;\n\tconst ttt = tt * t;\n\treturn {\n\t\tx: uuu * segment.p0.x + 3 * uu * t * segment.p1.x + 3 * u * tt * segment.p2.x + ttt * segment.p3.x,\n\t\ty: uuu * segment.p0.y + 3 * uu * t * segment.p1.y + 3 * u * tt * segment.p2.y + ttt * segment.p3.y\n\t};\n}\n/**\n* Evaluates the first derivative (tangent velocity vector) of a cubic Bezier curve at parameter t.\n*/\nfunction evaluateCubicBezierDerivative(segment, t) {\n\tconst u = 1 - t;\n\treturn {\n\t\tx: 3 * u * u * (segment.p1.x - segment.p0.x) + 6 * u * t * (segment.p2.x - segment.p1.x) + 3 * t * t * (segment.p3.x - segment.p2.x),\n\t\ty: 3 * u * u * (segment.p1.y - segment.p0.y) + 6 * u * t * (segment.p2.y - segment.p1.y) + 3 * t * t * (segment.p3.y - segment.p2.y)\n\t};\n}\n/**\n* Generates an arc-length parameterization lookup table (LUT) for a cubic Bezier segment.\n* Ensures glyphs travel with uniform speed and do not bunch up on tight curve bends.\n*/\nfunction generateArcLengthLUT(segment, samples = 100) {\n\tconst lut = [{\n\t\tdistance: 0,\n\t\tt: 0\n\t}];\n\tlet accumulatedDist = 0;\n\tlet prevPoint = segment.p0;\n\tfor (let i = 1; i <= samples; i++) {\n\t\tconst t = i / samples;\n\t\tconst currentPoint = evaluateCubicBezier(segment, t);\n\t\tconst dx = currentPoint.x - prevPoint.x;\n\t\tconst dy = currentPoint.y - prevPoint.y;\n\t\taccumulatedDist += Math.hypot(dx, dy);\n\t\tlut.push({\n\t\t\tdistance: accumulatedDist,\n\t\t\tt\n\t\t});\n\t\tprevPoint = currentPoint;\n\t}\n\treturn {\n\t\tlut,\n\t\ttotalLength: accumulatedDist\n\t};\n}\n/**\n* Maps a distance along the curve (in pixels) to normalized curve parameter t via binary search on the LUT.\n*/\nfunction distanceToCurveParameter(lut, distance, totalLength) {\n\tif (distance <= 0) return 0;\n\tif (distance >= totalLength) return 1;\n\tlet low = 0;\n\tlet high = lut.length - 1;\n\twhile (low <= high) {\n\t\tconst mid = low + high >> 1;\n\t\tif (lut[mid].distance < distance) low = mid + 1;\n\t\telse high = mid - 1;\n\t}\n\tconst index = Math.max(1, Math.min(low, lut.length - 1));\n\tconst prev = lut[index - 1];\n\tconst curr = lut[index];\n\tconst segmentDist = curr.distance - prev.distance;\n\tif (segmentDist <= 1e-6) return prev.t;\n\tconst ratio = (distance - prev.distance) / segmentDist;\n\treturn prev.t + ratio * (curr.t - prev.t);\n}\n/**\n* Samples position and baseline tangent orientation angle along a curve at distance `dist`.\n*/\nfunction sampleCurveGeometry(segment, lut, totalLength, distance) {\n\tconst t = distanceToCurveParameter(lut, distance, totalLength);\n\tconst pos = evaluateCubicBezier(segment, t);\n\tconst deriv = evaluateCubicBezierDerivative(segment, t);\n\tconst length = Math.hypot(deriv.x, deriv.y);\n\tconst nx = length > 1e-6 ? -deriv.y / length : 0;\n\tconst ny = length > 1e-6 ? deriv.x / length : 1;\n\treturn {\n\t\tposition: pos,\n\t\ttangentAngleDeg: Math.atan2(deriv.y, deriv.x) * 180 / Math.PI,\n\t\tnormal: {\n\t\t\tx: nx,\n\t\t\ty: ny\n\t\t}\n\t};\n}\n/**\n* Builds a cumulative Arc-Length LUT across a chain of Cubic Bezier segments.\n*/\nfunction buildPathLUT(segments, samplesPerSegment = 50) {\n\tif (segments.length === 0) return {\n\t\ttotalLength: 0,\n\t\tentries: [{\n\t\t\tdistance: 0,\n\t\t\tsegmentIndex: 0,\n\t\t\tt: 0\n\t\t}],\n\t\tsegments: []\n\t};\n\tconst segLuts = [];\n\tconst entries = [];\n\tlet accumulatedDist = 0;\n\tfor (let segIdx = 0; segIdx < segments.length; segIdx++) {\n\t\tconst seg = segments[segIdx];\n\t\tconst { lut: segLut, totalLength: segLength } = generateArcLengthLUT(seg, samplesPerSegment);\n\t\tsegLuts.push({\n\t\t\tsegmentIndex: segIdx,\n\t\t\tstartDistance: accumulatedDist,\n\t\t\tlength: segLength,\n\t\t\tlut: segLut\n\t\t});\n\t\tfor (let i = 0; i < segLut.length; i++) entries.push({\n\t\t\tdistance: accumulatedDist + segLut[i].distance,\n\t\t\tsegmentIndex: segIdx,\n\t\t\tt: segLut[i].t\n\t\t});\n\t\taccumulatedDist += segLength;\n\t}\n\treturn {\n\t\ttotalLength: accumulatedDist,\n\t\tentries,\n\t\tsegments: segLuts\n\t};\n}\n/**\n* Samples position, tangent angle, and normal across a chain of Cubic Bezier segments.\n*/\nfunction samplePathChainGeometry(segments, chainLUT, distance) {\n\tif (segments.length === 0) return {\n\t\tposition: {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t},\n\t\ttangentAngleDeg: 0,\n\t\tnormal: {\n\t\t\tx: 0,\n\t\t\ty: 1\n\t\t}\n\t};\n\tconst totalLength = chainLUT.totalLength;\n\tif (distance <= 0) {\n\t\tconst seg = segments[0];\n\t\tconst deriv$1 = evaluateCubicBezierDerivative(seg, 0);\n\t\tconst length$1 = Math.hypot(deriv$1.x, deriv$1.y);\n\t\tconst ux = length$1 > 1e-6 ? deriv$1.x / length$1 : 1;\n\t\tconst uy = length$1 > 1e-6 ? deriv$1.y / length$1 : 0;\n\t\tconst pos$1 = {\n\t\t\tx: seg.p0.x + ux * distance,\n\t\t\ty: seg.p0.y + uy * distance\n\t\t};\n\t\tconst nx$1 = length$1 > 1e-6 ? -deriv$1.y / length$1 : 0;\n\t\tconst ny$1 = length$1 > 1e-6 ? deriv$1.x / length$1 : 1;\n\t\treturn {\n\t\t\tposition: pos$1,\n\t\t\ttangentAngleDeg: Math.atan2(deriv$1.y, deriv$1.x) * 180 / Math.PI,\n\t\t\tnormal: {\n\t\t\t\tx: nx$1,\n\t\t\t\ty: ny$1\n\t\t\t}\n\t\t};\n\t}\n\tif (distance >= totalLength) {\n\t\tconst lastSeg = segments[segments.length - 1];\n\t\tconst deriv$1 = evaluateCubicBezierDerivative(lastSeg, 1);\n\t\tconst length$1 = Math.hypot(deriv$1.x, deriv$1.y);\n\t\tconst ux = length$1 > 1e-6 ? deriv$1.x / length$1 : 1;\n\t\tconst uy = length$1 > 1e-6 ? deriv$1.y / length$1 : 0;\n\t\tconst overflow = distance - totalLength;\n\t\tconst pos$1 = {\n\t\t\tx: lastSeg.p3.x + ux * overflow,\n\t\t\ty: lastSeg.p3.y + uy * overflow\n\t\t};\n\t\tconst nx$1 = length$1 > 1e-6 ? -deriv$1.y / length$1 : 0;\n\t\tconst ny$1 = length$1 > 1e-6 ? deriv$1.x / length$1 : 1;\n\t\treturn {\n\t\t\tposition: pos$1,\n\t\t\ttangentAngleDeg: Math.atan2(deriv$1.y, deriv$1.x) * 180 / Math.PI,\n\t\t\tnormal: {\n\t\t\t\tx: nx$1,\n\t\t\t\ty: ny$1\n\t\t\t}\n\t\t};\n\t}\n\tlet segIdx = 0;\n\tlet t = 0;\n\tif (chainLUT.segments && chainLUT.segments.length > 0) {\n\t\tlet low = 0;\n\t\tlet high = chainLUT.segments.length - 1;\n\t\twhile (low <= high) {\n\t\t\tconst mid = low + high >> 1;\n\t\t\tconst segLUT$1 = chainLUT.segments[mid];\n\t\t\tif (distance < segLUT$1.startDistance) high = mid - 1;\n\t\t\telse if (distance > segLUT$1.startDistance + segLUT$1.length) low = mid + 1;\n\t\t\telse {\n\t\t\t\tlow = mid;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tconst sIdx = Math.max(0, Math.min(low, chainLUT.segments.length - 1));\n\t\tconst segLUT = chainLUT.segments[sIdx];\n\t\tsegIdx = segLUT.segmentIndex;\n\t\tconst localDist = distance - segLUT.startDistance;\n\t\tt = distanceToCurveParameter(segLUT.lut, localDist, segLUT.length);\n\t} else {\n\t\tlet low = 0;\n\t\tlet high = chainLUT.entries.length - 1;\n\t\twhile (low <= high) {\n\t\t\tconst mid = low + high >> 1;\n\t\t\tif (chainLUT.entries[mid].distance < distance) low = mid + 1;\n\t\t\telse high = mid - 1;\n\t\t}\n\t\tconst index = Math.max(1, Math.min(low, chainLUT.entries.length - 1));\n\t\tconst prev = chainLUT.entries[index - 1];\n\t\tconst curr = chainLUT.entries[index];\n\t\tconst segmentDist = curr.distance - prev.distance;\n\t\tconst ratio = segmentDist > 1e-6 ? (distance - prev.distance) / segmentDist : 0;\n\t\tsegIdx = curr.segmentIndex;\n\t\tt = prev.segmentIndex === curr.segmentIndex ? prev.t + ratio * (curr.t - prev.t) : curr.t;\n\t}\n\tconst segment = segments[segIdx] ?? segments[0];\n\tconst pos = evaluateCubicBezier(segment, t);\n\tconst deriv = evaluateCubicBezierDerivative(segment, t);\n\tconst length = Math.hypot(deriv.x, deriv.y);\n\tconst nx = length > 1e-6 ? -deriv.y / length : 0;\n\tconst ny = length > 1e-6 ? deriv.x / length : 1;\n\treturn {\n\t\tposition: pos,\n\t\ttangentAngleDeg: Math.atan2(deriv.y, deriv.x) * 180 / Math.PI,\n\t\tnormal: {\n\t\t\tx: nx,\n\t\t\ty: ny\n\t\t}\n\t};\n}\n/**\n* Converts an ellipse arc into cubic Bezier segments (up to 90 degrees per segment).\n*/\nfunction ellipseToCubicBeziers(cx, cy, rx, ry, startAngleDeg = 0, endAngleDeg = 360) {\n\tconst startRad = startAngleDeg * Math.PI / 180;\n\tconst totalSweep = endAngleDeg * Math.PI / 180 - startRad;\n\tconst numSegments = Math.max(1, Math.ceil(Math.abs(totalSweep) / (Math.PI / 2)));\n\tconst sweepStep = totalSweep / numSegments;\n\tconst segments = [];\n\tfor (let i = 0; i < numSegments; i++) {\n\t\tconst a0 = startRad + i * sweepStep;\n\t\tconst a1 = a0 + sweepStep;\n\t\tconst halfSweep = sweepStep / 2;\n\t\tconst k = 4 / 3 * Math.tan(halfSweep / 2);\n\t\tconst cos0 = Math.cos(a0);\n\t\tconst sin0 = Math.sin(a0);\n\t\tconst cos1 = Math.cos(a1);\n\t\tconst sin1 = Math.sin(a1);\n\t\tconst p0 = {\n\t\t\tx: cx + rx * cos0,\n\t\t\ty: cy + ry * sin0\n\t\t};\n\t\tconst p1 = {\n\t\t\tx: p0.x - k * rx * sin0,\n\t\t\ty: p0.y + k * ry * cos0\n\t\t};\n\t\tconst p3 = {\n\t\t\tx: cx + rx * cos1,\n\t\t\ty: cy + ry * sin1\n\t\t};\n\t\tconst p2 = {\n\t\t\tx: p3.x + k * rx * sin1,\n\t\t\ty: p3.y - k * ry * cos1\n\t\t};\n\t\tsegments.push({\n\t\t\tp0,\n\t\t\tp1,\n\t\t\tp2,\n\t\t\tp3\n\t\t});\n\t}\n\treturn segments;\n}\n/**\n* Converts a sinusoidal wave into cubic Bezier segments per half-cycle.\n*/\nfunction waveToCubicBeziers(startX, startY, length, amplitude, frequency, phaseDeg = 0) {\n\tconst phaseRad = phaseDeg * Math.PI / 180;\n\tconst totalCycles = frequency < .1 && frequency * length >= .25 ? frequency * length : Math.max(.5, frequency);\n\tconst halfCycles = Math.max(1, Math.round(totalCycles * 2));\n\tconst dx = length / halfCycles;\n\tconst segments = [];\n\tfor (let i = 0; i < halfCycles; i++) {\n\t\tconst t0 = i / halfCycles * (2 * Math.PI * totalCycles) + phaseRad;\n\t\tconst t1 = (i + 1) / halfCycles * (2 * Math.PI * totalCycles) + phaseRad;\n\t\tconst x0 = startX + i * dx;\n\t\tconst x3 = startX + (i + 1) * dx;\n\t\tconst y0 = startY + amplitude * Math.sin(t0);\n\t\tconst y3 = startY + amplitude * Math.sin(t1);\n\t\tconst slope0 = amplitude * Math.cos(t0) * (Math.PI / 3);\n\t\tconst slope1 = amplitude * Math.cos(t1) * (Math.PI / 3);\n\t\tconst p0 = {\n\t\t\tx: x0,\n\t\t\ty: y0\n\t\t};\n\t\tconst p1 = {\n\t\t\tx: x0 + dx / 3,\n\t\t\ty: y0 + slope0\n\t\t};\n\t\tconst p2 = {\n\t\t\tx: x3 - dx / 3,\n\t\t\ty: y3 - slope1\n\t\t};\n\t\tconst p3 = {\n\t\t\tx: x3,\n\t\t\ty: y3\n\t\t};\n\t\tsegments.push({\n\t\t\tp0,\n\t\t\tp1,\n\t\t\tp2,\n\t\t\tp3\n\t\t});\n\t}\n\treturn segments;\n}\n/**\n* An SVG elliptical arc (endpoint form, SVG 1.1 F.6.5) as cubic Bezier\n* segments of at most 90° each.\n*/\nfunction svgArcToCubicBeziers(x1, y1, rxIn, ryIn, rotationDeg, largeArc, sweep, x2, y2) {\n\tif (x1 === x2 && y1 === y2) return [];\n\tlet rx = Math.abs(rxIn);\n\tlet ry = Math.abs(ryIn);\n\tif (rx === 0 || ry === 0) return [{\n\t\tp0: {\n\t\t\tx: x1,\n\t\t\ty: y1\n\t\t},\n\t\tp1: {\n\t\t\tx: x1 + (x2 - x1) / 3,\n\t\t\ty: y1 + (y2 - y1) / 3\n\t\t},\n\t\tp2: {\n\t\t\tx: x1 + 2 * (x2 - x1) / 3,\n\t\t\ty: y1 + 2 * (y2 - y1) / 3\n\t\t},\n\t\tp3: {\n\t\t\tx: x2,\n\t\t\ty: y2\n\t\t}\n\t}];\n\tconst phi = rotationDeg * Math.PI / 180;\n\tconst cosPhi = Math.cos(phi);\n\tconst sinPhi = Math.sin(phi);\n\tconst dx = (x1 - x2) / 2;\n\tconst dy = (y1 - y2) / 2;\n\tconst x1p = cosPhi * dx + sinPhi * dy;\n\tconst y1p = -sinPhi * dx + cosPhi * dy;\n\tconst lambda = x1p * x1p / (rx * rx) + y1p * y1p / (ry * ry);\n\tif (lambda > 1) {\n\t\trx *= Math.sqrt(lambda);\n\t\try *= Math.sqrt(lambda);\n\t}\n\tconst num = rx * rx * ry * ry - rx * rx * y1p * y1p - ry * ry * x1p * x1p;\n\tconst den = rx * rx * y1p * y1p + ry * ry * x1p * x1p;\n\tconst coef = (largeArc !== sweep ? 1 : -1) * Math.sqrt(Math.max(0, num / den));\n\tconst cxp = coef * rx * y1p / ry;\n\tconst cyp = -coef * ry * x1p / rx;\n\tconst cx = cosPhi * cxp - sinPhi * cyp + (x1 + x2) / 2;\n\tconst cy = sinPhi * cxp + cosPhi * cyp + (y1 + y2) / 2;\n\tconst angle = (ux, uy, vx, vy) => Math.atan2(ux * vy - uy * vx, ux * vx + uy * vy);\n\tconst theta1 = angle(1, 0, (x1p - cxp) / rx, (y1p - cyp) / ry);\n\tlet delta = angle((x1p - cxp) / rx, (y1p - cyp) / ry, (-x1p - cxp) / rx, (-y1p - cyp) / ry);\n\tif (!sweep && delta > 0) delta -= 2 * Math.PI;\n\tif (sweep && delta < 0) delta += 2 * Math.PI;\n\tconst n = Math.max(1, Math.ceil(Math.abs(delta) / (Math.PI / 2)));\n\tconst step = delta / n;\n\tconst k = 4 / 3 * Math.tan(step / 4);\n\tconst point = (a) => ({\n\t\tx: cx + rx * Math.cos(a) * cosPhi - ry * Math.sin(a) * sinPhi,\n\t\ty: cy + rx * Math.cos(a) * sinPhi + ry * Math.sin(a) * cosPhi\n\t});\n\tconst tangent = (a) => ({\n\t\tx: -rx * Math.sin(a) * cosPhi - ry * Math.cos(a) * sinPhi,\n\t\ty: -rx * Math.sin(a) * sinPhi + ry * Math.cos(a) * cosPhi\n\t});\n\tconst segments = [];\n\tfor (let s = 0; s < n; s++) {\n\t\tconst a0 = theta1 + s * step;\n\t\tconst a1 = a0 + step;\n\t\tconst p0 = point(a0);\n\t\tconst p3 = point(a1);\n\t\tconst t0 = tangent(a0);\n\t\tconst t1 = tangent(a1);\n\t\tsegments.push({\n\t\t\tp0,\n\t\t\tp1: {\n\t\t\t\tx: p0.x + k * t0.x,\n\t\t\t\ty: p0.y + k * t0.y\n\t\t\t},\n\t\t\tp2: {\n\t\t\t\tx: p3.x - k * t1.x,\n\t\t\t\ty: p3.y - k * t1.y\n\t\t\t},\n\t\t\tp3\n\t\t});\n\t}\n\tsegments[segments.length - 1].p3 = {\n\t\tx: x2,\n\t\ty: y2\n\t};\n\treturn segments;\n}\n/**\n* Converts SVG path data string into a chain of Cubic Bezier segments.\n*/\nfunction parseSvgPathToCubicBeziers(d) {\n\tconst segments = [];\n\tconst tokens = d.match(/[a-df-z]|[-+]?(?:\\d*\\.\\d+|\\d+)(?:[eE][-+]?\\d+)?/gi);\n\tif (!tokens || tokens.length === 0) return segments;\n\tlet currentX = 0;\n\tlet currentY = 0;\n\tlet startX = 0;\n\tlet startY = 0;\n\tlet lastControlX = 0;\n\tlet lastControlY = 0;\n\tlet lastCommand = \"\";\n\tlet i = 0;\n\tconst nextNum = () => {\n\t\tif (i >= tokens.length) return 0;\n\t\treturn Number.parseFloat(tokens[i++]);\n\t};\n\twhile (i < tokens.length) {\n\t\tconst token = tokens[i++];\n\t\tconst isCommand = /^[a-df-z]$/i.test(token);\n\t\tconst cmd = isCommand ? token : lastCommand;\n\t\tif (!isCommand) i--;\n\t\tswitch (cmd) {\n\t\t\tcase \"M\":\n\t\t\t\tcurrentX = nextNum();\n\t\t\t\tcurrentY = nextNum();\n\t\t\t\tstartX = currentX;\n\t\t\t\tstartY = currentY;\n\t\t\t\tlastCommand = \"L\";\n\t\t\t\tbreak;\n\t\t\tcase \"m\":\n\t\t\t\tcurrentX += nextNum();\n\t\t\t\tcurrentY += nextNum();\n\t\t\t\tstartX = currentX;\n\t\t\t\tstartY = currentY;\n\t\t\t\tlastCommand = \"l\";\n\t\t\t\tbreak;\n\t\t\tcase \"L\": {\n\t\t\t\tconst x = nextNum();\n\t\t\t\tconst y = nextNum();\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: currentX + (x - currentX) / 3,\n\t\t\t\t\t\ty: currentY + (y - currentY) / 3\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: currentX + 2 * (x - currentX) / 3,\n\t\t\t\t\t\ty: currentY + 2 * (y - currentY) / 3\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcurrentX = x;\n\t\t\t\tcurrentY = y;\n\t\t\t\tlastCommand = \"L\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"l\": {\n\t\t\t\tconst dx = nextNum();\n\t\t\t\tconst dy = nextNum();\n\t\t\t\tconst x = currentX + dx;\n\t\t\t\tconst y = currentY + dy;\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: currentX + dx / 3,\n\t\t\t\t\t\ty: currentY + dy / 3\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: currentX + 2 * dx / 3,\n\t\t\t\t\t\ty: currentY + 2 * dy / 3\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcurrentX = x;\n\t\t\t\tcurrentY = y;\n\t\t\t\tlastCommand = \"l\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"H\": {\n\t\t\t\tconst x = nextNum();\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: currentX + (x - currentX) / 3,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: currentX + 2 * (x - currentX) / 3,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcurrentX = x;\n\t\t\t\tlastCommand = \"H\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"h\": {\n\t\t\t\tconst dx = nextNum();\n\t\t\t\tconst x = currentX + dx;\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: currentX + dx / 3,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: currentX + 2 * dx / 3,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcurrentX = x;\n\t\t\t\tlastCommand = \"h\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"V\": {\n\t\t\t\tconst y = nextNum();\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY + (y - currentY) / 3\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY + 2 * (y - currentY) / 3\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcurrentY = y;\n\t\t\t\tlastCommand = \"V\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"v\": {\n\t\t\t\tconst dy = nextNum();\n\t\t\t\tconst y = currentY + dy;\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY + dy / 3\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY + 2 * dy / 3\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcurrentY = y;\n\t\t\t\tlastCommand = \"v\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"C\": {\n\t\t\t\tconst x1 = nextNum();\n\t\t\t\tconst y1 = nextNum();\n\t\t\t\tconst x2 = nextNum();\n\t\t\t\tconst y2 = nextNum();\n\t\t\t\tconst x = nextNum();\n\t\t\t\tconst y = nextNum();\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: x1,\n\t\t\t\t\t\ty: y1\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: x2,\n\t\t\t\t\t\ty: y2\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlastControlX = x2;\n\t\t\t\tlastControlY = y2;\n\t\t\t\tcurrentX = x;\n\t\t\t\tcurrentY = y;\n\t\t\t\tlastCommand = \"C\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"c\": {\n\t\t\t\tconst dx1 = nextNum();\n\t\t\t\tconst dy1 = nextNum();\n\t\t\t\tconst dx2 = nextNum();\n\t\t\t\tconst dy2 = nextNum();\n\t\t\t\tconst dx = nextNum();\n\t\t\t\tconst dy = nextNum();\n\t\t\t\tconst x1 = currentX + dx1;\n\t\t\t\tconst y1 = currentY + dy1;\n\t\t\t\tconst x2 = currentX + dx2;\n\t\t\t\tconst y2 = currentY + dy2;\n\t\t\t\tconst x = currentX + dx;\n\t\t\t\tconst y = currentY + dy;\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: x1,\n\t\t\t\t\t\ty: y1\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: x2,\n\t\t\t\t\t\ty: y2\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlastControlX = x2;\n\t\t\t\tlastControlY = y2;\n\t\t\t\tcurrentX = x;\n\t\t\t\tcurrentY = y;\n\t\t\t\tlastCommand = \"c\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"S\":\n\t\t\tcase \"s\": {\n\t\t\t\tconst isRel = cmd === \"s\";\n\t\t\t\tconst dx2 = nextNum();\n\t\t\t\tconst dy2 = nextNum();\n\t\t\t\tconst dx = nextNum();\n\t\t\t\tconst dy = nextNum();\n\t\t\t\tconst x2 = isRel ? currentX + dx2 : dx2;\n\t\t\t\tconst y2 = isRel ? currentY + dy2 : dy2;\n\t\t\t\tconst x = isRel ? currentX + dx : dx;\n\t\t\t\tconst y = isRel ? currentY + dy : dy;\n\t\t\t\tlet x1 = currentX;\n\t\t\t\tlet y1 = currentY;\n\t\t\t\tif (/^[cs]$/i.test(lastCommand)) {\n\t\t\t\t\tx1 = 2 * currentX - lastControlX;\n\t\t\t\t\ty1 = 2 * currentY - lastControlY;\n\t\t\t\t}\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: x1,\n\t\t\t\t\t\ty: y1\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: x2,\n\t\t\t\t\t\ty: y2\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlastControlX = x2;\n\t\t\t\tlastControlY = y2;\n\t\t\t\tcurrentX = x;\n\t\t\t\tcurrentY = y;\n\t\t\t\tlastCommand = cmd;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Q\":\n\t\t\tcase \"q\": {\n\t\t\t\tconst isRel = cmd === \"q\";\n\t\t\t\tconst qx = nextNum();\n\t\t\t\tconst qy = nextNum();\n\t\t\t\tconst x = nextNum();\n\t\t\t\tconst y = nextNum();\n\t\t\t\tconst cx1 = isRel ? currentX + qx : qx;\n\t\t\t\tconst cy1 = isRel ? currentY + qy : qy;\n\t\t\t\tconst ex = isRel ? currentX + x : x;\n\t\t\t\tconst ey = isRel ? currentY + y : y;\n\t\t\t\tconst p1x = currentX + 2 / 3 * (cx1 - currentX);\n\t\t\t\tconst p1y = currentY + 2 / 3 * (cy1 - currentY);\n\t\t\t\tconst p2x = ex + 2 / 3 * (cx1 - ex);\n\t\t\t\tconst p2y = ey + 2 / 3 * (cy1 - ey);\n\t\t\t\tsegments.push({\n\t\t\t\t\tp0: {\n\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\ty: currentY\n\t\t\t\t\t},\n\t\t\t\t\tp1: {\n\t\t\t\t\t\tx: p1x,\n\t\t\t\t\t\ty: p1y\n\t\t\t\t\t},\n\t\t\t\t\tp2: {\n\t\t\t\t\t\tx: p2x,\n\t\t\t\t\t\ty: p2y\n\t\t\t\t\t},\n\t\t\t\t\tp3: {\n\t\t\t\t\t\tx: ex,\n\t\t\t\t\t\ty: ey\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlastControlX = cx1;\n\t\t\t\tlastControlY = cy1;\n\t\t\t\tcurrentX = ex;\n\t\t\t\tcurrentY = ey;\n\t\t\t\tlastCommand = cmd;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"A\":\n\t\t\tcase \"a\": {\n\t\t\t\tconst rx = nextNum();\n\t\t\t\tconst ry = nextNum();\n\t\t\t\tconst rotation = nextNum();\n\t\t\t\tconst largeArc = nextNum() !== 0;\n\t\t\t\tconst sweep = nextNum() !== 0;\n\t\t\t\tlet x = nextNum();\n\t\t\t\tlet y = nextNum();\n\t\t\t\tif (cmd === \"a\") {\n\t\t\t\t\tx += currentX;\n\t\t\t\t\ty += currentY;\n\t\t\t\t}\n\t\t\t\tsegments.push(...svgArcToCubicBeziers(currentX, currentY, rx, ry, rotation, largeArc, sweep, x, y));\n\t\t\t\tcurrentX = x;\n\t\t\t\tcurrentY = y;\n\t\t\t\tlastControlX = x;\n\t\t\t\tlastControlY = y;\n\t\t\t\tlastCommand = cmd;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Z\":\n\t\t\tcase \"z\":\n\t\t\t\tif (currentX !== startX || currentY !== startY) {\n\t\t\t\t\tsegments.push({\n\t\t\t\t\t\tp0: {\n\t\t\t\t\t\t\tx: currentX,\n\t\t\t\t\t\t\ty: currentY\n\t\t\t\t\t\t},\n\t\t\t\t\t\tp1: {\n\t\t\t\t\t\t\tx: currentX + (startX - currentX) / 3,\n\t\t\t\t\t\t\ty: currentY + (startY - currentY) / 3\n\t\t\t\t\t\t},\n\t\t\t\t\t\tp2: {\n\t\t\t\t\t\t\tx: currentX + 2 * (startX - currentX) / 3,\n\t\t\t\t\t\t\ty: currentY + 2 * (startY - currentY) / 3\n\t\t\t\t\t\t},\n\t\t\t\t\t\tp3: {\n\t\t\t\t\t\t\tx: startX,\n\t\t\t\t\t\t\ty: startY\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tcurrentX = startX;\n\t\t\t\t\tcurrentY = startY;\n\t\t\t\t}\n\t\t\t\tlastCommand = cmd;\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\t}\n\treturn segments;\n}\n/**\n* Universal path source converter to Cubic Bezier segments.\n*/\nfunction generatePathSegments(source) {\n\tswitch (source.type) {\n\t\tcase \"bezier\": return source.segments;\n\t\tcase \"svg\": return parseSvgPathToCubicBeziers(source.d);\n\t\tcase \"ellipse\": return ellipseToCubicBeziers(source.cx, source.cy, source.rx, source.ry, source.startAngleDeg ?? 0, source.endAngleDeg ?? 360);\n\t\tcase \"wave\": return waveToCubicBeziers(source.startX, source.startY, source.length, source.amplitude, source.frequency, source.phaseDeg ?? 0);\n\t}\n}\n\n//#endregion\n//#region src/program/text-animations/selectors.ts\n/**\n* Computes After Effects Range Selector weight for a single glyph index.\n*\n* @param index Normalized position of the glyph in the string (0.0 to 1.0)\n* @param start Start boundary (0.0 to 1.0)\n* @param end End boundary (0.0 to 1.0)\n* @param offset Window shift (-1.0 to 1.0)\n* @param shape Falloff curve\n* @param easeHigh Non-linear easing for high values\n* @param easeLow Non-linear easing for low values\n* @returns Weight in [0.0, 1.0]\n*/\nfunction computeRangeSelectorWeight(index, start, end, offset, shape, easeHigh = 0, easeLow = 0) {\n\tconst effStart = start + offset;\n\tconst effEnd = end + offset;\n\tif (effEnd <= effStart) return 0;\n\tconst relativePos = (index - effStart) / (effEnd - effStart);\n\tlet baseWeight = 0;\n\tswitch (shape) {\n\t\tcase \"square\":\n\t\t\tbaseWeight = relativePos >= 0 && relativePos <= 1 ? 1 : 0;\n\t\t\tbreak;\n\t\tcase \"ramp_up\":\n\t\t\tbaseWeight = Math.max(0, Math.min(1, relativePos));\n\t\t\tbreak;\n\t\tcase \"ramp_down\":\n\t\t\tbaseWeight = 1 - Math.max(0, Math.min(1, relativePos));\n\t\t\tbreak;\n\t\tcase \"triangle\":\n\t\t\tif (relativePos < 0 || relativePos > 1) baseWeight = 0;\n\t\t\telse if (relativePos < .5) baseWeight = relativePos * 2;\n\t\t\telse baseWeight = (1 - relativePos) * 2;\n\t\t\tbreak;\n\t\tcase \"round\":\n\t\t\tif (relativePos < 0 || relativePos > 1) baseWeight = 0;\n\t\t\telse baseWeight = .5 - .5 * Math.cos(relativePos * 2 * Math.PI);\n\t\t\tbreak;\n\t\tcase \"smooth\":\n\t\t\tif (relativePos <= 0) baseWeight = 0;\n\t\t\telse if (relativePos >= 1) baseWeight = 1;\n\t\t\telse baseWeight = relativePos * relativePos * (3 - 2 * relativePos);\n\t\t\tbreak;\n\t}\n\tif (baseWeight > 0 && baseWeight < 1) {\n\t\tif (easeHigh !== 0 && baseWeight > .5) baseWeight = .5 + .5 * ((baseWeight - .5) * 2) ** (easeHigh > 0 ? 1 + easeHigh * 3 : 1 / (1 - easeHigh * 3));\n\t\tif (easeLow !== 0 && baseWeight <= .5) baseWeight = .5 * (baseWeight * 2) ** (easeLow > 0 ? 1 + easeLow * 3 : 1 / (1 - easeLow * 3));\n\t}\n\treturn Math.max(0, Math.min(1, baseWeight));\n}\n/**\n* 1D Gradient deterministic hash noise for Wiggly Selectors.\n*/\nfunction deterministicWigglyNoise(seed, glyphIndex, phase, correlation) {\n\tconst coord = (glyphIndex * (1 - correlation) + correlation) * 12.9898 + phase + seed * 78.233;\n\tconst raw = Math.sin(coord) * 43758.5453;\n\treturn (raw - Math.floor(raw)) * 2 - 1;\n}\n/**\n* Deterministic pseudo-random number generator for seeded order shuffling.\n*/\nfunction getShuffledOrder(count, seed) {\n\tlet s = seed;\n\tconst nextRand = () => {\n\t\ts = (s * 9301 + 49297) % 233280;\n\t\treturn s / 233280;\n\t};\n\tconst arr = Array.from({ length: count }, (_, i) => i);\n\tfor (let i = arr.length - 1; i > 0; i--) {\n\t\tconst j = Math.floor(nextRand() * (i + 1));\n\t\tconst temp = arr[i];\n\t\tarr[i] = arr[j];\n\t\tarr[j] = temp;\n\t}\n\treturn arr;\n}\n/**\n* Combines consecutive selector weights using After Effects Selector Mode logic.\n*/\nfunction evaluateSelectorCombination(prevWeight, currWeight, mode) {\n\tswitch (mode) {\n\t\tcase \"add\": return Math.max(0, Math.min(1, prevWeight + currWeight));\n\t\tcase \"subtract\": return Math.max(0, Math.min(1, prevWeight - currWeight));\n\t\tcase \"intersect\": return prevWeight * currWeight;\n\t\tcase \"min\": return Math.min(prevWeight, currWeight);\n\t\tcase \"max\": return Math.max(prevWeight, currWeight);\n\t\tcase \"difference\": return Math.abs(prevWeight - currWeight);\n\t}\n}\n\n//#endregion\n//#region src/program/text-animations/typewriter.ts\nconst SCRAMBLE_POOLS = {\n\tascii: \"!@#$%^&*()_+{}[]:;<>,.?\",\n\talphanumeric: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\",\n\tmatrix: \"010101<>[]{}+=*~#%&!?/\\\\:;|X0123456789\",\n\tbinary: \"01\",\n\thex: \"0123456789ABCDEF\"\n};\nfunction getScramblePool(charset, customCharset) {\n\tif (charset === \"custom\" && customCharset && customCharset.length > 0) return customCharset;\n\treturn SCRAMBLE_POOLS[charset] ?? SCRAMBLE_POOLS.alphanumeric;\n}\n/**\n* Evaluates typewriter visible character count and scramble state for frame `currentFrame`.\n*/\nfunction evaluateTypewriterState(fullText, currentFrame, startFrame, durationFrames, cadence = {\n\tmode: \"human\",\n\tjitter: .35,\n\tcommaPauseMultiplier: 3,\n\tsentencePauseMultiplier: 5.5,\n\tparagraphPauseMultiplier: 7\n}, scramble = {\n\tenabled: false,\n\tcharset: \"alphanumeric\",\n\tscrambleFramesPerChar: 8,\n\thighlightProbability: .25\n}, blinkFrequency = 2, granularity = \"character\", progressOverride) {\n\tif (progressOverride === void 0 && currentFrame < startFrame) return {\n\t\tvisibleChars: 0,\n\t\tcurrentDisplayString: \"\",\n\t\tisCursorVisible: false\n\t};\n\tconst progress = progressOverride !== void 0 ? Math.max(0, Math.min(1, progressOverride)) : Math.min(1, (currentFrame - startFrame) / Math.max(1, durationFrames));\n\tconst elapsed = progressOverride !== void 0 ? progress * durationFrames : currentFrame - startFrame;\n\tconst totalChars = fullText.length;\n\tlet visibleCount = Math.floor(progress * totalChars);\n\tif (granularity === \"word\") {\n\t\tconst tokens = fullText.split(/(\\s+)/);\n\t\tconst wordIndices = [];\n\t\ttokens.forEach((t, i) => {\n\t\t\tif (t.trim().length > 0) wordIndices.push(i);\n\t\t});\n\t\tconst visibleWords = Math.min(wordIndices.length, Math.floor(progress * (wordIndices.length + 1)));\n\t\tif (visibleWords <= 0) visibleCount = 0;\n\t\telse {\n\t\t\tconst lastIdx = wordIndices[Math.min(wordIndices.length - 1, visibleWords - 1)];\n\t\t\tvisibleCount = tokens.slice(0, lastIdx + 1).join(\"\").length;\n\t\t}\n\t} else if (granularity === \"line\") {\n\t\tconst lines = fullText.split(\"\\n\");\n\t\tconst visibleLines = Math.min(lines.length, Math.floor(progress * (lines.length + 1)));\n\t\tvisibleCount = lines.slice(0, visibleLines).join(\"\\n\").length;\n\t} else if (cadence.mode === \"human\" && progress < 1) {\n\t\tlet simulatedCharIndex = 0;\n\t\tlet simulatedElapsed = 0;\n\t\tconst baseFramesPerChar = durationFrames / Math.max(1, totalChars);\n\t\tfor (let i = 0; i < totalChars; i++) {\n\t\t\tconst char = fullText[i];\n\t\t\tlet multiplier = 1;\n\t\t\tconst commaMult = cadence.commaPauseMultiplier ?? 3;\n\t\t\tconst sentenceMult = cadence.sentencePauseMultiplier ?? 5.5;\n\t\t\tconst paraMult = cadence.paragraphPauseMultiplier ?? 7;\n\t\t\tconst jitter = cadence.jitter ?? .35;\n\t\t\tif (char === \",\" || char === \";\") multiplier = commaMult;\n\t\t\telse if (char === \".\" || char === \"!\" || char === \"?\") multiplier = sentenceMult;\n\t\t\telse if (char === \"\\n\") multiplier = paraMult;\n\t\t\tconst jitterVal = 1 + Math.sin(i * 17.3 + 42) * .5 * jitter;\n\t\t\tconst charDuration = baseFramesPerChar * multiplier * jitterVal;\n\t\t\tsimulatedElapsed += charDuration;\n\t\t\tif (simulatedElapsed <= elapsed) simulatedCharIndex = i + 1;\n\t\t\telse break;\n\t\t}\n\t\tvisibleCount = Math.min(totalChars, simulatedCharIndex);\n\t}\n\tlet displayStr = fullText.slice(0, visibleCount);\n\tif (scramble.enabled && visibleCount < totalChars && visibleCount > 0) {\n\t\tconst pool = getScramblePool(scramble.charset, scramble.customCharset);\n\t\tconst trailCount = Math.min(visibleCount, Math.max(1, scramble.scrambleFramesPerChar > 4 ? 3 : 2));\n\t\tlet scrambledTail = \"\";\n\t\tfor (let t = 0; t < trailCount; t++) {\n\t\t\tconst idx = Math.floor(Math.abs(Math.sin(currentFrame * 7 + t * 13)) * pool.length) % pool.length;\n\t\t\tscrambledTail += pool[idx];\n\t\t}\n\t\tdisplayStr = displayStr.slice(0, displayStr.length - trailCount) + scrambledTail;\n\t}\n\tlet isCursorVisible = true;\n\tif (blinkFrequency > 0) {\n\t\tconst halfPeriodFrames = Math.max(1, Math.round(30 / (2 * blinkFrequency)));\n\t\tisCursorVisible = Math.floor(elapsed / halfPeriodFrames) % 2 === 0;\n\t}\n\treturn {\n\t\tvisibleChars: visibleCount,\n\t\tcurrentDisplayString: displayStr,\n\t\tisCursorVisible\n\t};\n}\n\n//#endregion\n//#region src/program/schema.ts\n/** number px | \"auto\" (intrinsic) | \"fit\" (shrink-wrap) | \"fill\" (parent extent). */\nconst SizeSpecSchema = z.union([\n\tz.number().min(0),\n\tz.enum([\n\t\t\"auto\",\n\t\t\"fit\",\n\t\t\"fill\"\n\t]),\n\tz.custom()\n]);\nconst ShapeTypeSchema = z.enum([\n\t\"rect\",\n\t\"circle\",\n\t\"ellipse\",\n\t\"polygon\",\n\t\"star\",\n\t\"arrow\",\n\t\"path\"\n]);\nconst AnimatablePropSchema = z.enum([\n\t\"x\",\n\t\"y\",\n\t\"scale\",\n\t\"rotation\",\n\t\"opacity\",\n\t\"width\",\n\t\"height\",\n\t\"volume\",\n\t\"hidden\",\n\t\"muted\",\n\t\"gap\",\n\t\"padding\",\n\t\"borderRadius\",\n\t\"fontSize\",\n\t\"text\",\n\t\"fill\",\n\t\"color\",\n\t\"letterSpacing\",\n\t\"trimStart\",\n\t\"trimEnd\",\n\t\"trimOffset\",\n\t\"strokeWidth\",\n\t\"strokeDashOffset\",\n\t\"cornerRadius\",\n\t\"starInnerRadiusRatio\",\n\t\"fillColor\",\n\t\"strokeColor\",\n\t\"borderColor\",\n\t\"borderWidth\",\n\t\"motionBlurShutter\",\n\t\"rangeStart\",\n\t\"rangeEnd\",\n\t\"offset\",\n\t\"animatorRangeStart\",\n\t\"animatorRangeEnd\",\n\t\"animatorOffset\",\n\t\"firstMargin\",\n\t\"lastMargin\",\n\t\"baselineShift\",\n\t\"rotateX\",\n\t\"rotateY\",\n\t\"rotateZ\",\n\t\"perspective\",\n\t\"translateZ\",\n\t\"perspectiveOriginX\",\n\t\"perspectiveOriginY\",\n\t\"cameraX\",\n\t\"cameraY\",\n\t\"cameraZ\",\n\t\"targetX\",\n\t\"targetY\",\n\t\"targetZ\",\n\t\"cameraPitch\",\n\t\"cameraYaw\",\n\t\"cameraRoll\",\n\t\"cameraFov\",\n\t\"cameraZoom\",\n\t\"focalLength\",\n\t\"focusDistance\",\n\t\"fStop\",\n\t\"maxBlurRadius\",\n\t\"shakeTranslation\",\n\t\"shakeRotation\",\n\t\"orbitRadius\",\n\t\"orbitAzimuth\",\n\t\"orbitElevation\",\n\t\"z\",\n\t\"scaleZ\",\n\t\"intensity\",\n\t\"angle\",\n\t\"radius\",\n\t\"penumbra\",\n\t\"decay\",\n\t\"shininess\",\n\t\"roughness\",\n\t\"specularIntensity\",\n\t\"ambientIntensity\",\n\t\"metallic\",\n\t\"ior\",\n\t\"dispersion\",\n\t\"transmission\",\n\t\"fresnelPower\",\n\t\"envIntensity\",\n\t\"animationProgress\",\n\t\"animationTime\",\n\t\"animationSpeed\",\n\t\"wireframe\",\n\t\"scaleX\",\n\t\"scaleY\"\n]);\nconst MaterialTypeSchema = z.enum([\n\t\"lit\",\n\t\"unlit\",\n\t\"toon\",\n\t\"glass\",\n\t\"acrylic\",\n\t\"frosted\",\n\t\"metallic\"\n]);\nconst EXTENDED_3D_ANIMATABLE_PROPS = [\n\t\"rotateX\",\n\t\"rotateY\",\n\t\"rotateZ\",\n\t\"perspective\",\n\t\"translateZ\",\n\t\"perspectiveOriginX\",\n\t\"perspectiveOriginY\",\n\t\"cameraX\",\n\t\"cameraY\",\n\t\"cameraZ\",\n\t\"targetX\",\n\t\"targetY\",\n\t\"targetZ\",\n\t\"cameraPitch\",\n\t\"cameraYaw\",\n\t\"cameraRoll\",\n\t\"cameraFov\",\n\t\"cameraZoom\",\n\t\"focalLength\",\n\t\"focusDistance\",\n\t\"fStop\",\n\t\"maxBlurRadius\",\n\t\"shakeTranslation\",\n\t\"shakeRotation\",\n\t\"orbitRadius\",\n\t\"orbitAzimuth\",\n\t\"orbitElevation\",\n\t\"z\",\n\t\"scaleZ\",\n\t\"intensity\",\n\t\"angle\",\n\t\"radius\",\n\t\"penumbra\",\n\t\"decay\",\n\t\"shininess\",\n\t\"roughness\",\n\t\"specularIntensity\",\n\t\"ambientIntensity\",\n\t\"metallic\"\n];\nconst SignalColorModeSchema = z.enum([\n\t\"interpolate\",\n\t\"hueRotate\",\n\t\"threshold\"\n]);\nconst EaseRefSchema = z.object({\n\tname: z.enum([\n\t\t\"none\",\n\t\t\"power1\",\n\t\t\"power2\",\n\t\t\"power3\",\n\t\t\"sine\",\n\t\t\"circ\",\n\t\t\"expo\",\n\t\t\"back\",\n\t\t\"elastic\",\n\t\t\"bounce\",\n\t\t\"spring\",\n\t\t\"cubic\",\n\t\t\"hold\"\n\t]),\n\tdir: z.enum([\n\t\t\"in\",\n\t\t\"out\",\n\t\t\"inOut\"\n\t]),\n\tparams: z.array(z.number()).optional()\n}).strict().superRefine((data, ctx) => {\n\tif (data.name === \"spring\" && data.params) {\n\t\tconst [damping, stiffness, mass] = data.params;\n\t\tif (damping !== void 0 && damping <= 0) ctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: \"Spring damping must be greater than 0.\",\n\t\t\tpath: [\"params\", 0]\n\t\t});\n\t\tif (stiffness !== void 0 && stiffness <= 0) ctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: \"Spring stiffness must be greater than 0.\",\n\t\t\tpath: [\"params\", 1]\n\t\t});\n\t\tif (mass !== void 0 && mass <= 0) ctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: \"Spring mass must be greater than 0.\",\n\t\t\tpath: [\"params\", 2]\n\t\t});\n\t}\n});\nconst KeyframeSchema = z.object({\n\tid: z.string().min(1),\n\tframe: z.number().int().min(0),\n\tvalue: z.union([\n\t\tz.number(),\n\t\tz.boolean(),\n\t\tz.string()\n\t]),\n\tease: EaseRefSchema.optional(),\n\tpresetGroupId: z.string().optional(),\n\tpresetType: z.string().optional(),\n\tspatialTangentIn: z.object({\n\t\tx: z.number(),\n\t\ty: z.number()\n\t}).optional(),\n\tspatialTangentOut: z.object({\n\t\tx: z.number(),\n\t\ty: z.number()\n\t}).optional()\n}).strict();\nconst SignalModeSchema = z.enum([\"continuous\", \"accumulate\"]);\nconst RawTrackSourceSchema = z.discriminatedUnion(\"type\", [\n\tz.object({ type: z.literal(\"keyframe\") }),\n\tz.object({\n\t\ttype: z.literal(\"signal\"),\n\t\tinputHandleId: z.string(),\n\t\tmultiplier: z.number().default(1),\n\t\toffset: z.number().default(0),\n\t\tsmoothingWindowFrames: z.number().min(0).default(0),\n\t\tcolorMode: SignalColorModeSchema.optional(),\n\t\tcolorA: z.string().optional(),\n\t\tcolorB: z.string().optional(),\n\t\tcolorThreshold: z.number().optional(),\n\t\tsignalMode: SignalModeSchema.optional(),\n\t\tthreshold: z.number().optional(),\n\t\taccumulateThreshold: z.number().optional(),\n\t\tdebounceFrames: z.number().int().min(0).optional(),\n\t\tchannel: z.string().optional()\n\t}),\n\tz.object({\n\t\ttype: z.literal(\"wiggle\"),\n\t\tfrequency: z.number().default(2),\n\t\tamplitude: z.number().default(50),\n\t\toctaves: z.number().int().min(1).max(4).default(1),\n\t\tseed: z.number().default(1234)\n\t}),\n\tz.object({\n\t\ttype: z.literal(\"springOvershoot\"),\n\t\tdamping: z.number().default(12),\n\t\tstiffness: z.number().default(180),\n\t\tmass: z.number().default(1)\n\t})\n]);\nconst TrackSourceSchema = z.preprocess((val) => {\n\tif (!val || typeof val !== \"object\") return val;\n\tconst obj = val;\n\tif (obj.type === \"signal\") {\n\t\tconst thresh = typeof obj.threshold === \"number\" ? obj.threshold : typeof obj.accumulateThreshold === \"number\" ? obj.accumulateThreshold : .15;\n\t\treturn {\n\t\t\ttype: \"signal\",\n\t\t\tinputHandleId: obj.inputHandleId ?? obj.handleId,\n\t\t\tmultiplier: obj.multiplier ?? obj.amplitude ?? 1,\n\t\t\toffset: obj.offset ?? 0,\n\t\t\tsmoothingWindowFrames: obj.smoothingWindowFrames ?? obj.smoothing ?? 0,\n\t\t\tcolorMode: obj.colorMode,\n\t\t\tcolorA: obj.colorA,\n\t\t\tcolorB: obj.colorB,\n\t\t\tcolorThreshold: obj.colorThreshold,\n\t\t\tsignalMode: obj.signalMode ?? \"continuous\",\n\t\t\tthreshold: thresh,\n\t\t\taccumulateThreshold: thresh,\n\t\t\tdebounceFrames: obj.debounceFrames ?? 2,\n\t\t\tchannel: typeof obj.channel === \"string\" ? obj.channel : \"primary\"\n\t\t};\n\t}\n\treturn val;\n}, RawTrackSourceSchema);\nconst animationInvariants = (anim, ctx) => {\n\tif (!anim?.tracks) return;\n\tlet totalKeyframes = 0;\n\tfor (let tIdx = 0; tIdx < anim.tracks.length; tIdx++) {\n\t\tconst track = anim.tracks[tIdx];\n\t\tconst keyframes = track.keyframes ?? [];\n\t\ttotalKeyframes += keyframes.length;\n\t\tif ((!track.source || track.source.type === \"keyframe\") && keyframes.length < 1) ctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: `Track for property '${track.prop}' must have at least 1 keyframe.`,\n\t\t\tpath: [\n\t\t\t\t\"tracks\",\n\t\t\t\ttIdx,\n\t\t\t\t\"keyframes\"\n\t\t\t]\n\t\t});\n\t\tconst isDiscrete = track.prop === \"hidden\" || track.prop === \"muted\";\n\t\tconst isColor = track.prop === \"fillColor\" || track.prop === \"strokeColor\" || track.prop === \"fill\" || track.prop === \"color\";\n\t\tfor (let kIdx = 0; kIdx < keyframes.length; kIdx++) {\n\t\t\tconst kf = keyframes[kIdx];\n\t\t\tif (kIdx > 0) {\n\t\t\t\tconst prevKf = keyframes[kIdx - 1];\n\t\t\t\tif (kf.frame < prevKf.frame) ctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: \"Keyframes must be sorted in ascending order of frame.\",\n\t\t\t\t\tpath: [\n\t\t\t\t\t\t\"tracks\",\n\t\t\t\t\t\ttIdx,\n\t\t\t\t\t\t\"keyframes\",\n\t\t\t\t\t\tkIdx\n\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t\telse if (kf.frame === prevKf.frame) ctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: \"Duplicate keyframes at the same frame are not allowed.\",\n\t\t\t\t\tpath: [\n\t\t\t\t\t\t\"tracks\",\n\t\t\t\t\t\ttIdx,\n\t\t\t\t\t\t\"keyframes\",\n\t\t\t\t\t\tkIdx\n\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst valType = typeof kf.value;\n\t\t\tif (isDiscrete) {\n\t\t\t\tif (valType !== \"boolean\") ctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: `Keyframe value for discrete property '${track.prop}' must be a boolean.`,\n\t\t\t\t\tpath: [\n\t\t\t\t\t\t\"tracks\",\n\t\t\t\t\t\ttIdx,\n\t\t\t\t\t\t\"keyframes\",\n\t\t\t\t\t\tkIdx,\n\t\t\t\t\t\t\"value\"\n\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t} else if (isColor) {\n\t\t\t\tif (valType !== \"string\") ctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: `Keyframe value for color property '${track.prop}' must be a string.`,\n\t\t\t\t\tpath: [\n\t\t\t\t\t\t\"tracks\",\n\t\t\t\t\t\ttIdx,\n\t\t\t\t\t\t\"keyframes\",\n\t\t\t\t\t\tkIdx,\n\t\t\t\t\t\t\"value\"\n\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t} else if (valType !== \"number\" || Number.isNaN(kf.value) || !Number.isFinite(kf.value)) ctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: `Keyframe value for numeric property '${track.prop}' must be a finite number.`,\n\t\t\t\tpath: [\n\t\t\t\t\t\"tracks\",\n\t\t\t\t\ttIdx,\n\t\t\t\t\t\"keyframes\",\n\t\t\t\t\tkIdx,\n\t\t\t\t\t\"value\"\n\t\t\t\t]\n\t\t\t});\n\t\t\telse if ((track.prop === \"volume\" || track.prop === \"trimStart\" || track.prop === \"trimEnd\") && (kf.value < 0 || kf.value > 1)) ctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: `Keyframe value for property '${track.prop}' must be between 0 and 1.`,\n\t\t\t\tpath: [\n\t\t\t\t\t\"tracks\",\n\t\t\t\t\ttIdx,\n\t\t\t\t\t\"keyframes\",\n\t\t\t\t\tkIdx,\n\t\t\t\t\t\"value\"\n\t\t\t\t]\n\t\t\t});\n\t\t}\n\t}\n\tif (totalKeyframes > 128) ctx.addIssue({\n\t\tcode: z.ZodIssueCode.custom,\n\t\tmessage: `Total keyframes across all tracks (${totalKeyframes}) exceeds the limit of 128.`,\n\t\tpath: [\"tracks\"]\n\t});\n};\nconst AnimationTrackSchema = z.object({\n\tid: z.string().min(1),\n\tprop: AnimatablePropSchema,\n\tsource: TrackSourceSchema.optional(),\n\tkeyframes: z.array(KeyframeSchema).default([]),\n\trepeat: z.number().int().optional(),\n\tyoyo: z.boolean().optional(),\n\tdurationFrames: z.number().int().min(1).optional()\n}).strict();\nconst LayerAnimationSchema = z.object({ tracks: z.array(AnimationTrackSchema).max(24) }).strict().superRefine(animationInvariants);\nconst BaseNodeFields = {\n\tid: z.string().min(1),\n\tinputHandleId: z.string().optional(),\n\tposition: z.enum([\"relative\", \"absolute\"]).default(\"relative\"),\n\tx: z.union([z.number(), z.custom()]).default(0),\n\ty: z.union([z.number(), z.custom()]).default(0),\n\twidth: SizeSpecSchema.optional(),\n\theight: SizeSpecSchema.optional(),\n\tgrow: z.number().min(0).optional(),\n\tflexShrink: z.number().min(0).optional(),\n\tflexBasis: z.number().min(0).optional(),\n\talignSelf: z.enum([\n\t\t\"auto\",\n\t\t\"start\",\n\t\t\"center\",\n\t\t\"end\",\n\t\t\"stretch\",\n\t\t\"baseline\"\n\t]).optional(),\n\taspectRatio: z.number().positive().optional(),\n\tzIndex: z.number().int().default(0),\n\thidden: z.boolean().default(false),\n\topacity: z.number().min(0).max(1).default(1),\n\tblendMode: z.string().optional(),\n\teffects: z.array(z.unknown()).optional(),\n\trotation: z.number().default(0),\n\tscale: z.number().min(0).default(1),\n\tanchorX: z.number().min(0).max(1).default(.5),\n\tanchorY: z.number().min(0).max(1).default(.5),\n\tstartFrame: z.number().int().min(0).default(0),\n\tdurationFrames: z.number().int().min(1).optional(),\n\tmotionBlurShutter: z.number().min(0).max(360).optional(),\n\trotateX: z.number().default(0),\n\trotateY: z.number().default(0),\n\trotateZ: z.number().default(0),\n\tperspective: z.number().min(0).default(0),\n\tperspectiveOriginX: z.number().default(.5),\n\tperspectiveOriginY: z.number().default(.5),\n\ttranslateZ: z.number().default(0),\n\tbackfaceVisibility: z.enum([\"visible\", \"hidden\"]).default(\"visible\"),\n\ttransformStyle: z.enum([\"flat\", \"preserve-3d\"]).default(\"flat\"),\n\tis3D: z.boolean().default(false),\n\tz: z.union([z.number(), z.custom()]).default(0),\n\tscaleZ: z.number().default(1),\n\ttwoSided: z.boolean().default(true),\n\tmaterial: MaterialTypeSchema.default(\"lit\"),\n\tior: z.number().min(1).max(3).optional(),\n\troughness: z.number().min(0).max(1).optional(),\n\tshininess: z.number().min(1).max(512).default(32),\n\tspecularIntensity: z.number().min(0).default(.5),\n\tmetallic: z.number().min(0).max(1).optional(),\n\tambientIntensity: z.number().min(0).default(1),\n\ttransmission: z.number().min(0).max(1).optional(),\n\tdispersion: z.number().min(0).max(1).optional(),\n\tfresnelPower: z.number().min(1).max(10).optional(),\n\tenvIntensity: z.number().min(0).max(10).optional(),\n\tanimation: LayerAnimationSchema.default({ tracks: [] }),\n\tvision: z.unknown().optional(),\n\trelighting: z.unknown().optional()\n};\nconst TextShadowSchema = z.object({\n\tcolor: ColorSchema,\n\toffset: z.object({\n\t\tx: z.number(),\n\t\ty: z.number()\n\t}).optional(),\n\tblurRadius: z.number().min(0).optional()\n}).strict();\nconst TextAnimatorTransformSchema = z.object({\n\tx: z.number().optional(),\n\ty: z.number().optional(),\n\tscale: z.number().optional(),\n\tscaleX: z.number().optional(),\n\tscaleY: z.number().optional(),\n\trotation: z.number().optional(),\n\trotationX: z.number().optional(),\n\trotationY: z.number().optional(),\n\topacity: z.number().optional(),\n\tblur: z.number().optional(),\n\tcolor: z.string().optional()\n}).strict();\nconst TextAnimatorSchema = z.object({\n\tid: z.string(),\n\tunit: z.enum([\n\t\t\"character\",\n\t\t\"word\",\n\t\t\"line\"\n\t]).default(\"character\"),\n\trangeStart: z.number().min(0).max(1).default(0),\n\trangeEnd: z.number().min(0).max(1).default(1),\n\toffset: z.number().min(-1).max(1).default(0),\n\teasing: z.string().default(\"power2.out\"),\n\ttransform: TextAnimatorTransformSchema.optional()\n});\nconst TextAnimator = {\n\twaveRise(options = {}) {\n\t\treturn {\n\t\t\tid: options.id ?? \"wave-rise\",\n\t\t\tunit: options.unit ?? \"character\",\n\t\t\trangeStart: options.rangeStart ?? 0,\n\t\t\trangeEnd: options.rangeEnd ?? 1,\n\t\t\toffset: options.offset ?? -1,\n\t\t\teasing: options.easing ?? \"power2.out\",\n\t\t\ttransform: {\n\t\t\t\ty: options.y ?? 40,\n\t\t\t\trotationX: options.rotationX ?? 45,\n\t\t\t\topacity: options.opacity ?? 0,\n\t\t\t\tblur: options.blur ?? 0\n\t\t\t}\n\t\t};\n\t},\n\twordPop(options = {}) {\n\t\treturn {\n\t\t\tid: options.id ?? \"word-pop\",\n\t\t\tunit: \"word\",\n\t\t\trangeStart: 0,\n\t\t\trangeEnd: 1,\n\t\t\toffset: -1,\n\t\t\teasing: options.easing ?? \"back.out(1.6)\",\n\t\t\ttransform: {\n\t\t\t\tscale: options.scale ?? 0,\n\t\t\t\ty: options.y ?? 20,\n\t\t\t\topacity: 0\n\t\t\t}\n\t\t};\n\t},\n\tblurIn(options = {}) {\n\t\treturn {\n\t\t\tid: options.id ?? \"blur-in\",\n\t\t\tunit: options.unit ?? \"character\",\n\t\t\trangeStart: 0,\n\t\t\trangeEnd: 1,\n\t\t\toffset: -1,\n\t\t\teasing: options.easing ?? \"power3.out\",\n\t\t\ttransform: {\n\t\t\t\tblur: options.blur ?? 16,\n\t\t\t\ty: options.y ?? 20,\n\t\t\t\topacity: options.opacity ?? 0\n\t\t\t}\n\t\t};\n\t},\n\tflip3D(options = {}) {\n\t\treturn {\n\t\t\tid: options.id ?? \"flip-3d\",\n\t\t\tunit: options.unit ?? \"character\",\n\t\t\trangeStart: 0,\n\t\t\trangeEnd: 1,\n\t\t\toffset: -1,\n\t\t\teasing: options.easing ?? \"back.out(1.4)\",\n\t\t\ttransform: {\n\t\t\t\trotationX: options.rotationX ?? 90,\n\t\t\t\topacity: 0\n\t\t\t}\n\t\t};\n\t},\n\tcolorSweep(options) {\n\t\treturn {\n\t\t\tid: options.id ?? \"color-sweep\",\n\t\t\tunit: options.unit ?? \"character\",\n\t\t\trangeStart: 0,\n\t\t\trangeEnd: .5,\n\t\t\toffset: -.5,\n\t\t\teasing: options.easing ?? \"power2.inOut\",\n\t\t\ttransform: { color: options.color }\n\t\t};\n\t}\n};\nconst CameraLensSchema = z.object({\n\tfocalLength: z.number().min(5).max(500).default(50),\n\tfov: z.number().min(5).max(160).optional(),\n\tsensorWidth: z.number().default(36),\n\tnear: z.number().min(.1).default(1),\n\tfar: z.number().min(10).default(5e4),\n\tzoom: z.number().min(.01).default(1)\n}).strict();\nconst CameraDoFSchema = z.object({\n\tenabled: z.boolean().default(false),\n\tfocusDistance: z.number().min(1).default(1e3),\n\tfStop: z.number().min(.5).max(64).default(2.8),\n\tmaxBlurRadius: z.number().min(0).max(128).default(32),\n\tapertureBlades: z.number().int().min(0).max(12).default(0),\n\tanamorphicRatio: z.number().min(.5).max(3).default(1)\n}).strict();\nconst CameraShakeSchema = z.object({\n\ttranslationAmplitude: z.number().min(0).default(0),\n\trotationAmplitude: z.number().min(0).default(0),\n\tfrequency: z.number().min(.1).max(60).default(2.5),\n\toctaves: z.number().int().min(1).max(6).default(3),\n\tseed: z.number().default(42)\n}).strict();\nconst CameraNodeSchema = z.object({\n\tid: z.string().min(1),\n\tkind: z.literal(\"camera\"),\n\tmode: z.enum([\n\t\t\"lookAt\",\n\t\t\"free\",\n\t\t\"orbit\"\n\t]).default(\"lookAt\"),\n\tx: z.number().optional(),\n\ty: z.number().optional(),\n\tz: z.number().optional(),\n\ttargetX: z.number().optional(),\n\ttargetY: z.number().optional(),\n\ttargetZ: z.number().optional(),\n\tpitch: z.number().default(0),\n\tyaw: z.number().default(0),\n\troll: z.number().default(0),\n\tlens: CameraLensSchema.optional(),\n\tdof: CameraDoFSchema.optional(),\n\tshake: CameraShakeSchema.optional(),\n\tstartFrame: z.number().int().min(0).default(0),\n\tdurationFrames: z.number().int().min(1).optional(),\n\tanimation: LayerAnimationSchema.default({ tracks: [] })\n}).strict();\nconst LightTypeSchema = z.enum([\n\t\"ambient\",\n\t\"directional\",\n\t\"point\",\n\t\"spot\"\n]);\nconst LightNodeSchema = z.object({\n\tid: z.string().min(1),\n\tkind: z.literal(\"light\"),\n\tlightType: LightTypeSchema.default(\"directional\"),\n\tcolor: ColorSchema.default(\"#ffffff\"),\n\tintensity: z.number().default(1),\n\tx: z.number().optional(),\n\ty: z.number().optional(),\n\tz: z.number().optional(),\n\ttargetX: z.number().optional(),\n\ttargetY: z.number().optional(),\n\ttargetZ: z.number().optional(),\n\tdirection: z.tuple([\n\t\tz.number(),\n\t\tz.number(),\n\t\tz.number()\n\t]).optional(),\n\tradius: z.number().min(0).default(1e3),\n\tdecay: z.number().min(0).default(2),\n\tangle: z.number().min(0).max(180).default(45),\n\tpenumbra: z.number().min(0).max(1).default(.2),\n\tstartFrame: z.number().int().min(0).default(0),\n\tdurationFrames: z.number().int().min(1).optional(),\n\tanimation: LayerAnimationSchema.default({ tracks: [] })\n}).strict();\nconst containerChildren = () => z.array(z.lazy(() => LayoutNodeSchema));\nconst FlexNodeSchema = z.object({\n\t...BaseNodeFields,\n\tkind: z.literal(\"flex\"),\n\tdir: z.enum([\"row\", \"column\"]).default(\"row\"),\n\tgap: z.number().min(0).default(0),\n\tpadding: z.number().min(0).default(0),\n\tjustify: z.enum([\n\t\t\"start\",\n\t\t\"center\",\n\t\t\"end\",\n\t\t\"space-between\",\n\t\t\"space-around\"\n\t]).default(\"start\"),\n\talign: z.enum([\n\t\t\"start\",\n\t\t\"center\",\n\t\t\"end\",\n\t\t\"stretch\"\n\t]).default(\"start\"),\n\twrap: z.boolean().default(false),\n\tstaggerFrames: z.number().min(0).default(0),\n\tstaggerDirection: z.enum([\n\t\t\"forward\",\n\t\t\"reverse\",\n\t\t\"center-out\"\n\t]).default(\"forward\"),\n\toverflow: z.enum([\"visible\", \"hidden\"]).default(\"hidden\"),\n\tbackground: ColorSchema.optional(),\n\tborderRadius: z.number().min(0).optional(),\n\tborderColor: ColorSchema.optional(),\n\tborderWidth: z.number().min(0).optional(),\n\tstrokeAlign: z.enum([\n\t\t\"inside\",\n\t\t\"center\",\n\t\t\"outside\"\n\t]).optional(),\n\tstrokeRadius: z.number().min(0).optional(),\n\tchildren: containerChildren().optional()\n}).strict();\nconst BlockNodeSchema = z.object({\n\t...BaseNodeFields,\n\tkind: z.literal(\"block\"),\n\tgap: z.number().min(0).default(0),\n\tpadding: z.number().min(0).default(0),\n\talign: z.enum([\n\t\t\"start\",\n\t\t\"center\",\n\t\t\"end\",\n\t\t\"stretch\"\n\t]).default(\"start\"),\n\tstaggerFrames: z.number().min(0).default(0),\n\tstaggerDirection: z.enum([\n\t\t\"forward\",\n\t\t\"reverse\",\n\t\t\"center-out\"\n\t]).default(\"forward\"),\n\toverflow: z.enum([\"visible\", \"hidden\"]).default(\"hidden\"),\n\tbackground: ColorSchema.optional(),\n\tborderRadius: z.number().min(0).optional(),\n\tborderColor: ColorSchema.optional(),\n\tborderWidth: z.number().min(0).optional(),\n\tstrokeAlign: z.enum([\n\t\t\"inside\",\n\t\t\"center\",\n\t\t\"outside\"\n\t]).optional(),\n\tstrokeRadius: z.number().min(0).optional(),\n\tchildren: containerChildren().optional()\n}).strict();\nconst BoxNodeSchema = z.object({\n\t...BaseNodeFields,\n\tkind: z.literal(\"box\"),\n\tbackground: ColorSchema,\n\tborderRadius: z.number().min(0).optional(),\n\tpadding: z.number().min(0).default(0),\n\tstaggerFrames: z.number().min(0).default(0),\n\tstaggerDirection: z.enum([\n\t\t\"forward\",\n\t\t\"reverse\",\n\t\t\"center-out\"\n\t]).default(\"forward\"),\n\toverflow: z.enum([\"visible\", \"hidden\"]).default(\"hidden\"),\n\tborderColor: ColorSchema.optional(),\n\tborderWidth: z.number().min(0).optional(),\n\tstrokeAlign: z.enum([\n\t\t\"inside\",\n\t\t\"center\",\n\t\t\"outside\"\n\t]).optional(),\n\tstrokeRadius: z.number().min(0).optional(),\n\tchildren: containerChildren().optional()\n}).strict();\nconst TextSpanMarkSchema = z.object({\n\tbackground: ColorSchema,\n\tborderRadius: z.number().min(0).optional(),\n\tpaddingX: z.number().min(0).optional(),\n\tpaddingY: z.number().min(0).optional()\n}).strict();\nconst TextSpanSchema = z.object({\n\ttext: z.union([z.string(), z.custom((v) => Boolean(v && typeof v === \"object\" && \"get\" in v))]),\n\tfontFamily: z.string().optional(),\n\tfontSize: z.union([z.number().positive(), z.custom((v) => Boolean(v && typeof v === \"object\" && \"get\" in v))]).optional(),\n\tfontWeight: z.union([z.number().int(), z.string()]).optional(),\n\tfontStyle: z.enum([\"normal\", \"italic\"]).optional(),\n\tfill: z.union([ColorSchema, z.custom((v) => Boolean(v && typeof v === \"object\" && \"get\" in v))]).optional(),\n\tletterSpacing: z.number().optional(),\n\tbaselineShift: z.number().optional(),\n\topacity: z.union([z.number().min(0).max(1), z.custom((v) => Boolean(v && typeof v === \"object\" && \"get\" in v))]).optional(),\n\tmark: TextSpanMarkSchema.optional()\n}).strict();\nconst TextFields = {\n\ttext: z.string().default(\"\"),\n\tspans: z.array(TextSpanSchema).optional(),\n\tfontFamily: z.string().optional(),\n\tfontSize: z.number().positive().optional(),\n\tfontWeight: z.union([z.number().int(), z.string()]).optional(),\n\tfontStyle: z.string().optional(),\n\tfill: ColorSchema,\n\talign: z.enum([\n\t\t\"start\",\n\t\t\"center\",\n\t\t\"end\"\n\t]).optional(),\n\tverticalAlign: z.enum([\n\t\t\"top\",\n\t\t\"middle\",\n\t\t\"bottom\"\n\t]).optional(),\n\tlineHeight: z.number().positive().optional(),\n\tletterSpacing: z.number().optional(),\n\tbackground: ColorSchema,\n\tborderRadius: z.number().min(0).optional(),\n\tpadding: z.number().min(0).optional(),\n\tstroke: ColorSchema,\n\tstrokeWidth: z.number().min(0).optional(),\n\tstrokeAlign: z.enum([\n\t\t\"inside\",\n\t\t\"center\",\n\t\t\"outside\"\n\t]).optional(),\n\ttextShadow: z.string().optional(),\n\tshadows: z.array(TextShadowSchema).optional(),\n\tpathOptions: TextPathOptionsSchema.optional(),\n\ttypewriter: TypewriterAnimatorSchema.optional(),\n\tmarquee: KineticMarqueeConfigSchema.optional(),\n\tanimators: z.array(z.union([\n\t\tTextAnimatorSchema,\n\t\tAETextAnimatorSchema,\n\t\tAdvancedTextAnimatorSchema\n\t])).optional()\n};\nconst TextNodeSchema = z.object({\n\t...BaseNodeFields,\n\t...TextFields,\n\tkind: z.literal(\"text\")\n}).strict();\nconst MediaNodeSchema = z.object({\n\t...BaseNodeFields,\n\tkind: z.literal(\"media\"),\n\tinputHandleId: z.string().min(1),\n\tdataType: z.string().optional(),\n\tfit: z.enum([\n\t\t\"cover\",\n\t\t\"contain\",\n\t\t\"fill\",\n\t\t\"none\"\n\t]).default(\"contain\"),\n\tborderRadius: z.number().min(0).optional(),\n\tborderColor: ColorSchema.optional(),\n\tborderWidth: z.number().min(0).optional(),\n\tstrokeAlign: z.enum([\n\t\t\"inside\",\n\t\t\"center\",\n\t\t\"outside\"\n\t]).optional(),\n\tstrokeRadius: z.number().min(0).optional(),\n\tvolume: z.number().min(0).max(1).default(1),\n\tmuted: z.boolean().default(false),\n\ttrimStartSec: z.number().min(0).optional(),\n\tfontFamily: z.string().optional(),\n\tfontSize: z.number().positive().optional(),\n\tfontWeight: z.union([z.number().int(), z.string()]).optional(),\n\tfontStyle: z.string().optional(),\n\tfill: ColorSchema,\n\talign: z.enum([\n\t\t\"start\",\n\t\t\"center\",\n\t\t\"end\"\n\t]).optional(),\n\tverticalAlign: z.enum([\n\t\t\"top\",\n\t\t\"middle\",\n\t\t\"bottom\"\n\t]).optional(),\n\tlineHeight: z.number().positive().optional(),\n\tletterSpacing: z.number().optional(),\n\tbackground: ColorSchema,\n\tpadding: z.number().min(0).optional(),\n\tstroke: ColorSchema,\n\tstrokeWidth: z.number().min(0).optional(),\n\ttextShadow: z.string().optional(),\n\tshadows: z.array(TextShadowSchema).optional(),\n\tmaxWidth: z.number().optional()\n}).strict();\nconst ShapeFields = {\n\tshapeType: ShapeTypeSchema.default(\"rect\"),\n\tborderRadius: z.number().min(0).optional(),\n\tradiusTL: z.number().min(0).optional(),\n\tradiusTR: z.number().min(0).optional(),\n\tradiusBR: z.number().min(0).optional(),\n\tradiusBL: z.number().min(0).optional(),\n\tpolygonSides: z.number().int().min(3).max(64).optional(),\n\tstarPoints: z.number().int().min(3).max(64).optional(),\n\tstarInnerRadiusRatio: z.number().min(.01).max(.99).optional(),\n\tarrowHeadWidth: z.number().min(0).optional(),\n\tarrowHeadLength: z.number().min(0).optional(),\n\tarrowShaftWidth: z.number().min(1).optional(),\n\td: z.string().optional(),\n\tfillType: z.enum([\n\t\t\"solid\",\n\t\t\"linear\",\n\t\t\"radial\",\n\t\t\"none\"\n\t]).default(\"solid\"),\n\tfillColor: ColorSchema.default(\"#3b82f6\"),\n\tgradientEndColor: ColorSchema.optional(),\n\tgradientAngle: z.number().default(0),\n\tstrokeColor: ColorSchema.default(\"#ffffff\"),\n\tstrokeWidth: z.number().min(0).default(0),\n\tstrokeDashArray: z.string().optional(),\n\tstrokeDashOffset: z.number().default(0),\n\tstrokeLineCap: z.enum([\n\t\t\"butt\",\n\t\t\"round\",\n\t\t\"square\"\n\t]).default(\"round\"),\n\tstrokeLineJoin: z.enum([\n\t\t\"miter\",\n\t\t\"round\",\n\t\t\"bevel\"\n\t]).default(\"round\"),\n\tstrokeAlign: z.enum([\n\t\t\"inside\",\n\t\t\"center\",\n\t\t\"outside\"\n\t]).optional(),\n\ttrimStart: z.number().min(0).max(1).default(0),\n\ttrimEnd: z.number().min(0).max(1).default(1),\n\ttrimOffset: z.number().default(0)\n};\nconst ShapeNodeSchema = z.object({\n\t...BaseNodeFields,\n\t...ShapeFields,\n\tkind: z.literal(\"shape\")\n}).strict();\nconst ColorStopSchema = z.object({\n\toffset: z.number().min(0).max(1),\n\tcolor: z.string()\n});\nconst Model3DNodeSchema = z.object({\n\t...BaseNodeFields,\n\tkind: z.literal(\"model3d\"),\n\tsrc: z.string().default(\"\"),\n\tmodelFormat: z.enum([\n\t\t\"obj\",\n\t\t\"fbx\",\n\t\t\"gltf\",\n\t\t\"glb\",\n\t\t\"stl\",\n\t\t\"ply\",\n\t\t\"vox\",\n\t\t\"3ds\",\n\t\t\"off\",\n\t\t\"auto\"\n\t]).default(\"auto\"),\n\tmodelData: z.unknown().optional(),\n\tanimationName: z.string().optional(),\n\tanimationProgress: z.number().min(0).max(1).default(0),\n\tanimationTime: z.number().min(0).default(0),\n\tanimationSpeed: z.number().default(1),\n\tloop: z.boolean().default(true),\n\twireframe: z.boolean().default(false),\n\ttexture: z.string().optional(),\n\tcenter: z.boolean().optional(),\n\tnormalizeSize: z.number().optional(),\n\tscaleX: z.number().default(1),\n\tscaleY: z.number().default(1),\n\taudioDeform: z.record(z.string(), z.unknown()).optional(),\n\ttext3dOptions: z.unknown().optional()\n}).strict();\nconst LayoutNodeSchema = z.lazy(() => z.union([\n\tFlexNodeSchema,\n\tBlockNodeSchema,\n\tBoxNodeSchema,\n\tTextNodeSchema,\n\tMediaNodeSchema,\n\tShapeNodeSchema,\n\tCameraNodeSchema,\n\tLightNodeSchema,\n\tModel3DNodeSchema\n]));\nconst CompositorProgramSchema = z.object({\n\twidth: z.number().int().min(1).max(4096),\n\theight: z.number().int().min(1).max(4096),\n\tbackgroundColor: ColorSchema,\n\tvolume: z.number().min(0).max(1).default(1),\n\tfps: z.number().int().min(1).max(120).default(24),\n\tmode: z.enum([\"Video\", \"Image\"]).default(\"Video\"),\n\tantialias3d: z.boolean().optional(),\n\tlayout: z.array(LayoutNodeSchema).default([]),\n\tfonts: z.array(z.string()).optional(),\n\tsignals: z.record(z.string(), z.unknown()).optional(),\n\teffects: z.array(z.unknown()).optional(),\n\tvision: z.unknown().optional(),\n\tonRequestFrame: z.custom().optional()\n}).strict();\n\n//#endregion\n//#region src/program/sequence.ts\n/**\n* @file program/sequence.ts\n* @module @framefields/compositions/program/sequence\n*\n* Multi-Scene Timeline Orchestration, Camera Choreography & Carrier Match Cuts.\n* Complies with specs/cinematic-sequencing.ts.\n*/\n/**\n* Camera Transition Type across scene boundaries.\n*/\nconst SceneTransitionTypeSchema = z.enum([\n\t\"cut\",\n\t\"carrierMatchCut\",\n\t\"cameraWhip\",\n\t\"focusPullDissolve\",\n\t\"irisAperture\",\n\t\"pushDirectional\"\n]);\n/**\n* Carrier Object Handoff Configuration Schema.\n*/\nconst CarrierHandoffConfigSchema = z.object({\n\tsourceLayerId: z.string(),\n\ttargetLayerId: z.string(),\n\tmode: z.enum([\n\t\t\"exact\",\n\t\t\"preserveVelocity\",\n\t\t\"morph\"\n\t]).default(\"preserveVelocity\"),\n\tblendFrames: z.number().int().min(0).max(30).default(0)\n}).strict();\n/**\n* Individual Scene Definition Schema.\n*/\nconst SceneDefinitionSchema = z.object({\n\tid: z.string(),\n\tchapter: z.enum([\n\t\t\"hook\",\n\t\t\"tension\",\n\t\t\"solution\",\n\t\t\"feature_spotlight\",\n\t\t\"outro\",\n\t\t\"custom\"\n\t]).default(\"custom\"),\n\tdurationMs: z.number().positive().optional(),\n\tdurationFrames: z.number().int().positive().optional(),\n\ttransitionOut: z.object({\n\t\ttype: SceneTransitionTypeSchema.default(\"cut\"),\n\t\tdurationFrames: z.number().int().min(0).default(0),\n\t\tcarrier: CarrierHandoffConfigSchema.optional(),\n\t\twhipDirection: z.enum([\n\t\t\t\"left\",\n\t\t\t\"right\",\n\t\t\t\"up\",\n\t\t\t\"down\"\n\t\t]).default(\"left\")\n\t}).default({\n\t\ttype: \"cut\",\n\t\tdurationFrames: 0,\n\t\twhipDirection: \"left\"\n\t})\n}).passthrough();\nfunction computeCarrierContinuity(stateAtCut, targetInitialState) {\n\treturn {\n\t\tx: stateAtCut.x,\n\t\ty: stateAtCut.y,\n\t\tscale: stateAtCut.scale,\n\t\tvx: stateAtCut.vx,\n\t\tvy: stateAtCut.vy,\n\t\t...targetInitialState\n\t};\n}\n/**\n* Calculates global scene offsets and handoff frames across a sequence.\n*/\nfunction calculateSequenceTimeline(scenes, fps = 60) {\n\tlet accumulatedFrame = 0;\n\tconst offsets = [];\n\tfor (const scene of scenes) {\n\t\tconst startFrame = accumulatedFrame;\n\t\tconst dur = scene.durationFrames ?? (scene.durationMs ? Math.round(scene.durationMs / 1e3 * fps) : 60);\n\t\toffsets.push({\n\t\t\tsceneId: scene.id,\n\t\t\tstartFrame,\n\t\t\tdurationFrames: dur\n\t\t});\n\t\tconst overlap = scene.transitionOverlap ?? scene.transitionOut?.durationFrames ?? 0;\n\t\taccumulatedFrame += Math.max(1, dur - overlap);\n\t}\n\tconst totalFrames = accumulatedFrame;\n\treturn {\n\t\ttotalFrames,\n\t\ttotalDurationMs: Math.round(totalFrames / fps * 1e3),\n\t\tsceneOffsets: offsets\n\t};\n}\nvar Scene = class Scene {\n\tid;\n\tchapter;\n\tdurationMs;\n\tdurationFrames;\n\ttransitionOut;\n\tlayout;\n\tconstructor(options) {\n\t\tthis.id = options.id;\n\t\tthis.chapter = options.chapter ?? \"custom\";\n\t\tthis.durationMs = options.durationMs;\n\t\tthis.durationFrames = options.durationFrames;\n\t\tthis.transitionOut = {\n\t\t\ttype: options.transitionOut?.type ?? \"cut\",\n\t\t\tdurationFrames: options.transitionOut?.durationFrames ?? 0,\n\t\t\tcarrier: options.transitionOut?.carrier,\n\t\t\twhipDirection: options.transitionOut?.whipDirection ?? \"left\"\n\t\t};\n\t\tthis.layout = options.layout ?? [];\n\t}\n\tstatic create(options) {\n\t\treturn new Scene(options);\n\t}\n};\nvar Sequence = class Sequence {\n\tfps;\n\twidth;\n\theight;\n\tbackgroundColor;\n\tfonts;\n\tsignals;\n\tscenes = [];\n\tconstructor(options = {}) {\n\t\tthis.fps = options.fps ?? 60;\n\t\tthis.width = options.width ?? 1920;\n\t\tthis.height = options.height ?? 1080;\n\t\tthis.backgroundColor = options.backgroundColor ?? \"#ffffff\";\n\t\tthis.fonts = options.fonts;\n\t\tthis.signals = options.signals;\n\t\tif (options.scenes) for (const sc of options.scenes) this.addScene(sc);\n\t}\n\tstatic create(options = {}) {\n\t\treturn new Sequence(options);\n\t}\n\taddScene(scene) {\n\t\tconst s = scene instanceof Scene ? scene : new Scene(scene);\n\t\tthis.scenes.push(s);\n\t\treturn this;\n\t}\n\tgetScenes() {\n\t\treturn this.scenes;\n\t}\n\tcalculateTimeline() {\n\t\treturn calculateSequenceTimeline(this.scenes, this.fps);\n\t}\n\ttoProgram() {\n\t\tconst timeline = this.calculateTimeline();\n\t\tconst rootLayout = [];\n\t\tfor (let i = 0; i < this.scenes.length; i++) {\n\t\t\tconst scene = this.scenes[i];\n\t\t\tconst offset = timeline.sceneOffsets[i];\n\t\t\tif (!offset) continue;\n\t\t\tfor (const node of scene.layout) {\n\t\t\t\tconst cloned = { ...node };\n\t\t\t\tcloned.startFrame = (cloned.startFrame ?? 0) + offset.startFrame;\n\t\t\t\tif (cloned.durationFrames === void 0) cloned.durationFrames = offset.durationFrames;\n\t\t\t\trootLayout.push(cloned);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\twidth: this.width,\n\t\t\theight: this.height,\n\t\t\tbackgroundColor: this.backgroundColor,\n\t\t\tfps: this.fps,\n\t\t\tvolume: 1,\n\t\t\tmode: \"Video\",\n\t\t\tlayout: rootLayout,\n\t\t\tfonts: this.fonts,\n\t\t\tsignals: this.signals\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/program/stagger.ts\n/**\n* Calculates the frame delay offset for a child at `index` in a container of `totalCount` items.\n*/\nfunction computeStaggerDelay(index, totalCount, staggerFrames, direction = \"forward\") {\n\tif (staggerFrames <= 0 || totalCount <= 1) return 0;\n\tswitch (direction) {\n\t\tcase \"reverse\": return (totalCount - 1 - index) * staggerFrames;\n\t\tcase \"center-out\": {\n\t\t\tconst center = (totalCount - 1) / 2;\n\t\t\tconst dist = Math.abs(index - center);\n\t\t\treturn Math.round(dist * staggerFrames);\n\t\t}\n\t\tcase \"forward\":\n\t\tdefault: return index * staggerFrames;\n\t}\n}\n/**\n* Applies stagger timing offsets to child nodes, returning cloned objects with adjusted `startFrame`.\n*/\nfunction applyStaggerToChildren(children, staggerFrames, direction = \"forward\", baseOffset = 0) {\n\tif (!children || children.length === 0) return [];\n\tif (staggerFrames <= 0 && baseOffset === 0) return [...children];\n\treturn children.map((child, idx) => {\n\t\tconst delay = computeStaggerDelay(idx, children.length, staggerFrames, direction);\n\t\tconst currentStart = child.startFrame ?? 0;\n\t\treturn {\n\t\t\t...child,\n\t\t\tstartFrame: currentStart + delay + baseOffset\n\t\t};\n\t});\n}\n\n//#endregion\n//#region src/program/to-virtual-media.ts\n/**\n* The ONE constructor from document to render tree (spec: SKILL.md).\n*\n* A validated v2 program (`CompositorProgramConfig`) becomes the\n* `VirtualMediaData` tree the compositor renderer consumes. Every layout node\n* becomes a `CompositorLayer` op carrying its document fields verbatim\n* (id/kind/style/timing/animation); containers carry nested node ops as\n* children; media nodes bind their graph source as the content child when\n* resolved.\n*\n* Pure + deterministic: same doc → same tree. No width/height resolution\n* here — geometry comes from `computeLayout` at render time.\n*/\nfunction nodeToVirtualMedia(node, resolveMedia, fps, inheritedOffset = 0, compDurationMs, inheritedDurationFrames) {\n\tlet children = [];\n\tconst sourceRef = node.src ?? node.inputHandleId;\n\tconst isDirectMediaSource = (s) => typeof s === \"string\" && (s.startsWith(\"http://\") || s.startsWith(\"https://\") || s.startsWith(\"file://\") || s.startsWith(\"/\") || s.startsWith(\"./\") || s.startsWith(\"blob:\") || s.startsWith(\"data:\") || /\\.(png|jpe?g|webp|gif|svg|mp4|webm|mov|mkv|mp3|wav|ogg|m4a|srt|vtt)$/i.test(s));\n\tlet media;\n\tif (node.kind === \"media\") {\n\t\tif (resolveMedia) media = resolveMedia(node.inputHandleId);\n\t\tif (!media && sourceRef && (isDirectMediaSource(sourceRef) || node.src)) media = createVirtualMedia(sourceRef, node.dataType ?? \"Video\");\n\t\tif (media && node.crop) {\n\t\t\tconst cropRaw = node.crop;\n\t\t\tconst cropOp = typeof cropRaw.toOperation === \"function\" ? cropRaw.toOperation() : cropRaw;\n\t\t\tmedia = {\n\t\t\t\tmetadata: { ...media.metadata },\n\t\t\t\toperation: {\n\t\t\t\t\top: \"Crop\",\n\t\t\t\t\t...cropOp,\n\t\t\t\t\tdataType: media.operation.dataType\n\t\t\t\t},\n\t\t\t\tchildren: [media]\n\t\t\t};\n\t\t}\n\t\tif (media && Array.isArray(node.effects)) for (const eff of node.effects) {\n\t\t\tconst effOp = typeof eff.toOperation === \"function\" ? eff.toOperation() : eff;\n\t\t\tmedia = {\n\t\t\t\tmetadata: { ...media.metadata },\n\t\t\t\toperation: {\n\t\t\t\t\tid: node.id ? `${node.id}-${effOp.op ?? \"effect\"}` : void 0,\n\t\t\t\t\teffect: eff,\n\t\t\t\t\t...effOp,\n\t\t\t\t\tdataType: media.operation.dataType\n\t\t\t\t},\n\t\t\t\tchildren: [media]\n\t\t\t};\n\t\t}\n\t\tif (media && node.vision) {\n\t\t\tconst visionRaw = node.vision;\n\t\t\tconst visionOp = typeof visionRaw.toOperation === \"function\" ? visionRaw.toOperation() : visionRaw;\n\t\t\tmedia = {\n\t\t\t\tmetadata: { ...media.metadata },\n\t\t\t\toperation: {\n\t\t\t\t\top: \"Vision\",\n\t\t\t\t\tid: node.id,\n\t\t\t\t\teffect: visionRaw,\n\t\t\t\t\t...visionOp,\n\t\t\t\t\tdataType: media.operation.dataType\n\t\t\t\t},\n\t\t\t\tchildren: [media]\n\t\t\t};\n\t\t}\n\t}\n\tif (node.kind === \"media\") children = media ? [media] : [];\n\telse if (\"children\" in node && node.children) {\n\t\tconst staggerFrames = \"staggerFrames\" in node && typeof node.staggerFrames === \"number\" ? node.staggerFrames : 0;\n\t\tconst staggerDirection = \"staggerDirection\" in node && typeof node.staggerDirection === \"string\" ? node.staggerDirection : \"forward\";\n\t\tconst nodeStart = typeof node.startFrame === \"number\" && Number.isFinite(node.startFrame) ? Math.round(node.startFrame) : 0;\n\t\tconst nodeDuration = typeof node.durationFrames === \"number\" && Number.isFinite(node.durationFrames) ? Math.round(node.durationFrames) : inheritedDurationFrames;\n\t\tchildren = node.children.map((c, idx) => {\n\t\t\tconst delay = computeStaggerDelay(idx, node.children.length, staggerFrames, staggerDirection);\n\t\t\treturn nodeToVirtualMedia(c, resolveMedia, fps, inheritedOffset + nodeStart + delay, compDurationMs, c.durationFrames === void 0 ? nodeDuration : void 0);\n\t\t});\n\t}\n\tlet dataType = \"Image\";\n\tlet limit;\n\tif (media) {\n\t\tdataType = media.operation?.dataType ?? \"Image\";\n\t\tconst durationMs$1 = dataType === \"Image\" || dataType === \"SVG\" ? void 0 : getActiveMediaMetadata(media)?.durationMs;\n\t\tif (durationMs$1 !== void 0 && durationMs$1 !== null) limit = Math.max(1, Math.round(durationMs$1 / 1e3 * fps));\n\t}\n\tconst isCaption = media?.operation?.dataType === \"Caption\";\n\tconst isContainer = node.kind === \"flex\" || node.kind === \"block\" || node.kind === \"box\";\n\tconst startFrame = (typeof node.startFrame === \"number\" && Number.isFinite(node.startFrame) && node.startFrame >= 0 ? Math.round(node.startFrame) : 0) + inheritedOffset;\n\tlet dur = typeof node.durationFrames === \"number\" && Number.isFinite(node.durationFrames) && node.durationFrames > 0 ? Math.round(node.durationFrames) : void 0;\n\tconst defaultCompDuration = inheritedDurationFrames ?? Math.round((compDurationMs ?? 1e4) / 1e3 * fps);\n\tif (isContainer && children.length > 0) {\n\t\tif (dur === void 0) {\n\t\t\tconst childEnds = children.map((c) => (c.operation?.startFrame ?? 0) + (c.operation?.durationFrames ?? defaultCompDuration));\n\t\t\tdur = Math.max(1, Math.max(...childEnds) - startFrame);\n\t\t}\n\t} else if (isCaption && limit !== void 0 && limit > 0) dur = limit;\n\telse if (dur !== void 0) {\n\t\tif ((dataType === \"Video\" || dataType === \"Audio\") && limit !== void 0 && limit > 0) dur = Math.min(dur, limit);\n\t} else dur = limit ?? inheritedDurationFrames ?? Math.round((compDurationMs ?? 1e4) / 1e3 * fps);\n\tconst durationMs = dur / fps * 1e3;\n\tif (node.kind === \"media\" && media) {\n\t\tlet curr = media;\n\t\twhile (curr) {\n\t\t\tif (!curr.metadata?.durationMs || curr.metadata.durationMs <= 0) {\n\t\t\t\tif (!curr.metadata) curr.metadata = {};\n\t\t\t\tcurr.metadata.durationMs = durationMs;\n\t\t\t}\n\t\t\tif (curr.operation?.sourceMeta && !curr.operation.sourceMeta.durationMs) curr.operation.sourceMeta.durationMs = durationMs;\n\t\t\tcurr = curr.children?.[0];\n\t\t}\n\t}\n\treturn {\n\t\tmetadata: { durationMs },\n\t\toperation: {\n\t\t\top: \"CompositorLayer\",\n\t\t\t...node,\n\t\t\tstartFrame,\n\t\t\tdurationFrames: dur,\n\t\t\tdataType\n\t\t},\n\t\tchildren\n\t};\n}\nfunction compositorToProgram(config, options) {\n\tconst { isVideoMode, fps, durationMs, resolveMedia, signals } = options;\n\tlet rootMedia = {\n\t\tmetadata: {\n\t\t\twidth: config.width,\n\t\t\theight: config.height,\n\t\t\tfps,\n\t\t\t...durationMs !== void 0 && { durationMs }\n\t\t},\n\t\toperation: {\n\t\t\top: \"Compositor\",\n\t\t\twidth: config.width,\n\t\t\theight: config.height,\n\t\t\tfps,\n\t\t\tmode: config.mode ?? \"Video\",\n\t\t\tbackgroundColor: config.backgroundColor,\n\t\t\t...config.antialias3d !== void 0 && { antialias3d: config.antialias3d },\n\t\t\tvolume: config.volume ?? 1,\n\t\t\tdataType: isVideoMode ? \"Video\" : \"Image\",\n\t\t\tlayout: config.layout,\n\t\t\tsignals: {\n\t\t\t\t...collectInlineSignals(config.layout),\n\t\t\t\t...signals ?? config.signals ?? {}\n\t\t\t},\n\t\t\t...(config.onRequestFrame || options.onRequestFrame) && { onRequestFrame: config.onRequestFrame ?? options.onRequestFrame }\n\t\t},\n\t\tchildren: config.layout.map((n) => nodeToVirtualMedia(n, resolveMedia, fps, 0, durationMs))\n\t};\n\tconst effectsList = Array.isArray(options.effects) ? options.effects : Array.isArray(config.effects) ? config.effects : [];\n\tfor (const eff of effectsList) {\n\t\tconst effOp = typeof eff.toOperation === \"function\" ? eff.toOperation() : eff;\n\t\trootMedia = {\n\t\t\tmetadata: { ...rootMedia.metadata },\n\t\t\toperation: {\n\t\t\t\t...effOp,\n\t\t\t\tdataType: rootMedia.operation.dataType\n\t\t\t},\n\t\t\tchildren: [rootMedia]\n\t\t};\n\t}\n\tconst visionRaw = config.vision ?? options.vision;\n\tif (visionRaw) {\n\t\tconst visionOp = typeof visionRaw.toOperation === \"function\" ? visionRaw.toOperation() : visionRaw;\n\t\trootMedia = {\n\t\t\tmetadata: { ...rootMedia.metadata },\n\t\t\toperation: {\n\t\t\t\top: \"Vision\",\n\t\t\t\t...visionOp,\n\t\t\t\tdataType: rootMedia.operation.dataType\n\t\t\t},\n\t\t\tchildren: [rootMedia]\n\t\t};\n\t}\n\treturn rootMedia;\n}\n/** Recursively gather every node op from a render tree (in order). */\nfunction collectNodeOps(nodes) {\n\tconst out = [];\n\tconst walk = (vm) => {\n\t\tif (vm?.operation?.op === \"CompositorLayer\") out.push(vm);\n\t\tfor (const c of vm?.children ?? []) walk(c);\n\t};\n\tfor (const n of nodes) walk(n);\n\treturn out;\n}\n\n//#endregion\n//#region src/program/validate.ts\n/**\n* Coded validation for the v2 program document (spec: SKILL.md).\n*\n* Runs on the RAW input BEFORE zod: zod strips unknown keys silently, so\n* v1 shapes (`layers`, `layerUpdates`, `FPS`) and structural errors must be\n* caught in a pre-parse walk or the E-codes never fire. The zod schema then\n* handles shape/refinement errors (mapped to E1xxx-style issues).\n*/\nconst KIND_SET = new Set([\n\t\"flex\",\n\t\"block\",\n\t\"box\",\n\t\"text\",\n\t\"media\",\n\t\"shape\"\n]);\nconst MAX_NODES = 512;\nconst MAX_DEPTH = 64;\nconst issue = (code, path, message) => ({\n\tcode,\n\tpath,\n\tmessage\n});\nfunction validateLayoutProgram(raw) {\n\tconst issues = [];\n\tif (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return {\n\t\tok: false,\n\t\tissues: [issue(\"E1001\", [], \"Compositor config must be an object.\")]\n\t};\n\tconst obj = raw;\n\tif (\"layers\" in obj) issues.push(issue(\"E1001\", [\"layers\"], \"Config v2 uses `layout` — `layers` is removed.\"));\n\tif (\"layerUpdates\" in obj) issues.push(issue(\"E1001\", [\"layerUpdates\"], \"Config v2 uses `layout` — `layerUpdates` is removed.\"));\n\tif (\"FPS\" in obj) issues.push(issue(\"E1001\", [\"FPS\"], \"Config v2 uses `fps` — `FPS` is removed.\"));\n\tconst seenIds = /* @__PURE__ */ new Set();\n\tlet nodeCount = 0;\n\tconst isImageMode = obj.mode === \"Image\";\n\tconst walk = (node, path, depth) => {\n\t\tif (depth > MAX_DEPTH) {\n\t\t\tissues.push(issue(\"E1212\", [...path, \"children\"], `Layout nesting exceeds ${MAX_DEPTH} levels.`));\n\t\t\treturn;\n\t\t}\n\t\tif (!node || typeof node !== \"object\" || Array.isArray(node)) {\n\t\t\tissues.push(issue(\"E1201\", path, \"Layout node must be an object.\"));\n\t\t\treturn;\n\t\t}\n\t\tnodeCount += 1;\n\t\tif (nodeCount > MAX_NODES) {\n\t\t\tissues.push(issue(\"E1211\", path, `Composition exceeds ${MAX_NODES} nodes.`));\n\t\t\treturn;\n\t\t}\n\t\tconst n = node;\n\t\tconst kind = n.kind;\n\t\tif (typeof kind !== \"string\" || !KIND_SET.has(kind)) issues.push(issue(\"E1201\", [...path, \"kind\"], `Unknown layout node kind '${String(kind)}'. Expected one of: flex, block, box, text, media, shape.`));\n\t\tconst id = n.id;\n\t\tif (typeof id !== \"string\" || id.length === 0) issues.push(issue(\"E1203\", [...path, \"id\"], \"Layout node requires a non-empty `id`.\"));\n\t\telse if (seenIds.has(id)) issues.push(issue(\"E1202\", [...path, \"id\"], `Duplicate node id '${id}'.`));\n\t\telse seenIds.add(id);\n\t\tfor (const axis of [\"width\", \"height\"]) {\n\t\t\tconst v = n[axis];\n\t\t\tif (typeof v === \"number\" && (!Number.isFinite(v) || v < 0)) issues.push(issue(\"E1205\", [...path, axis], `SizeSpec must be a finite number >= 0 or one of \"auto\" | \"fit\" | \"fill\".`));\n\t\t\telse if (typeof v === \"string\" && v !== \"auto\" && v !== \"fit\" && v !== \"fill\") issues.push(issue(\"E1205\", [...path, axis], `SizeSpec must be a finite number >= 0 or one of \"auto\" | \"fit\" | \"fill\".`));\n\t\t}\n\t\tif (n.position === \"absolute\") {\n\t\t\tif (typeof n.x !== \"number\" || typeof n.y !== \"number\") issues.push(issue(\"E1206\", [...path], \"An absolute node requires numeric `x` and `y`.\"));\n\t\t\tif (n.grow !== void 0) issues.push(issue(\"E1209\", [...path, \"grow\"], \"`grow` is not allowed on an absolute node (it is out of flow).\"));\n\t\t}\n\t\tif (kind === \"media\" && (typeof n.inputHandleId !== \"string\" || n.inputHandleId.length === 0)) issues.push(issue(\"E1204\", [...path, \"inputHandleId\"], \"A media node requires a non-empty `inputHandleId`.\"));\n\t\tif (kind === \"text\" && typeof n.fontSize === \"number\" && n.fontSize <= 0) issues.push(issue(\"E1210\", [...path, \"fontSize\"], \"A text node requires fontSize > 0.\"));\n\t\tif (kind === \"shape\") {\n\t\t\tif (n.trimStart !== void 0) {\n\t\t\t\tconst ts = n.trimStart;\n\t\t\t\tif (typeof ts !== \"number\" || !Number.isFinite(ts) || Number.isNaN(ts) || ts < 0 || ts > 1) issues.push(issue(\"E1208\", [...path, \"trimStart\"], \"`trimStart` must be a finite number between 0 and 1.\"));\n\t\t\t}\n\t\t\tif (n.trimEnd !== void 0) {\n\t\t\t\tconst te = n.trimEnd;\n\t\t\t\tif (typeof te !== \"number\" || !Number.isFinite(te) || Number.isNaN(te) || te < 0 || te > 1) issues.push(issue(\"E1208\", [...path, \"trimEnd\"], \"`trimEnd` must be a finite number between 0 and 1.\"));\n\t\t\t}\n\t\t}\n\t\tif (!isImageMode) {\n\t\t\tif (n.durationFrames !== void 0) {\n\t\t\t\tconst df = n.durationFrames;\n\t\t\t\tif (typeof df !== \"number\" || !Number.isFinite(df) || Number.isNaN(df) || df < 1 || !Number.isInteger(df)) issues.push(issue(\"E1207\", [...path, \"durationFrames\"], `\\`durationFrames\\` must be a positive integer (>= 1). Received: ${String(df)}.`));\n\t\t\t}\n\t\t\tif (n.startFrame !== void 0) {\n\t\t\t\tconst sf = n.startFrame;\n\t\t\t\tif (typeof sf !== \"number\" || !Number.isFinite(sf) || Number.isNaN(sf) || sf < 0 || !Number.isInteger(sf)) issues.push(issue(\"E1207\", [...path, \"startFrame\"], `\\`startFrame\\` must be a non-negative integer (>= 0). Received: ${String(sf)}.`));\n\t\t\t}\n\t\t}\n\t\tif (n.opacity !== void 0) {\n\t\t\tconst op = n.opacity;\n\t\t\tif (typeof op !== \"number\" || !Number.isFinite(op) || Number.isNaN(op) || op < 0 || op > 1) issues.push(issue(\"E1213\", [...path, \"opacity\"], `\\`opacity\\` must be a number between 0 and 1. Received: ${String(op)}.`));\n\t\t}\n\t\tconst anim = n.animation;\n\t\tif (anim && Array.isArray(anim.tracks) && kind !== void 0) {\n\t\t\tconst props = /* @__PURE__ */ new Set();\n\t\t\tfor (let tIdx = 0; tIdx < anim.tracks.length; tIdx++) {\n\t\t\t\tconst prop = anim.tracks[tIdx]?.prop;\n\t\t\t\tif (typeof prop === \"string\") {\n\t\t\t\t\tif (props.has(prop)) issues.push(issue(\"E1208\", [\n\t\t\t\t\t\t...path,\n\t\t\t\t\t\t\"animation\",\n\t\t\t\t\t\t\"tracks\",\n\t\t\t\t\t\ttIdx\n\t\t\t\t\t], `Duplicate track property '${prop}' on node '${String(id)}'.`));\n\t\t\t\t\tprops.add(prop);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst children = n.children;\n\t\tif (Array.isArray(children)) for (let i = 0; i < children.length; i++) walk(children[i], [\n\t\t\t...path,\n\t\t\t\"children\",\n\t\t\ti\n\t\t], depth + 1);\n\t};\n\tconst layout = obj.layout;\n\tif (Array.isArray(layout)) for (let i = 0; i < layout.length; i++) walk(layout[i], [\"layout\", i], 0);\n\telse if (layout !== void 0) issues.push(issue(\"E1001\", [\"layout\"], \"`layout` must be an array of nodes.\"));\n\tif (issues.length > 0) return {\n\t\tok: false,\n\t\tissues\n\t};\n\treturn { ok: true };\n}\nfunction cleanImageModeTiming(raw) {\n\tif (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return raw;\n\tconst obj = raw;\n\tif (obj.mode !== \"Image\" || !Array.isArray(obj.layout)) return raw;\n\tconst sanitizeNode = (node) => {\n\t\tif (!node || typeof node !== \"object\" || Array.isArray(node)) return node;\n\t\tconst n = { ...node };\n\t\tif (n.durationFrames !== void 0 && (typeof n.durationFrames !== \"number\" || !Number.isFinite(n.durationFrames) || n.durationFrames < 1 || !Number.isInteger(n.durationFrames))) delete n.durationFrames;\n\t\tif (n.startFrame !== void 0 && (typeof n.startFrame !== \"number\" || !Number.isFinite(n.startFrame) || n.startFrame < 0 || !Number.isInteger(n.startFrame))) delete n.startFrame;\n\t\tif (Array.isArray(n.children)) n.children = n.children.map(sanitizeNode);\n\t\treturn n;\n\t};\n\treturn {\n\t\t...obj,\n\t\tlayout: obj.layout.map(sanitizeNode)\n\t};\n}\n/** Fast-fail shape gate used by processors: validate raw config then parse. */\nfunction parseProgram(raw) {\n\tconst pre = validateLayoutProgram(raw);\n\tif (!pre.ok) return {\n\t\tok: false,\n\t\tissues: pre.issues\n\t};\n\tconst cleaned = cleanImageModeTiming(raw);\n\tconst parsed = CompositorProgramSchema.safeParse(cleaned);\n\tif (!parsed.success) return {\n\t\tok: false,\n\t\tissues: parsed.error.issues.map((i) => issue(\"E1001\", i.path.map((p) => typeof p === \"symbol\" ? p.toString() : p), i.message))\n\t};\n\treturn {\n\t\tok: true,\n\t\tconfig: parsed.data\n\t};\n}\n/** Collect every node id in the tree (depth-first, in order). */\nfunction collectNodeIds(nodes) {\n\tconst ids = [];\n\tconst walk = (n) => {\n\t\tids.push(n.id);\n\t\tif (\"children\" in n && n.children) walkChildren(n.children);\n\t};\n\tconst walkChildren = (list) => {\n\t\tfor (const n of list) walk(n);\n\t};\n\twalkChildren(nodes);\n\treturn ids;\n}\n/** Collect media node bindings: inputHandleId -> node id. */\nfunction collectMediaBindings(nodes) {\n\tconst bindings = /* @__PURE__ */ new Map();\n\tconst walk = (n) => {\n\t\tif (n.kind === \"media\") bindings.set(n.inputHandleId, n.id);\n\t\tif (\"children\" in n && n.children) for (const c of n.children) walk(c);\n\t};\n\tfor (const n of nodes) walk(n);\n\treturn bindings;\n}\n\n//#endregion\nexport { AETextAnimatorSchema, AdvancedTextAnimatorBuilder, AdvancedTextAnimatorSchema, AnchorGroupingSchema, AnchorPresetSchema, AnimatableGlyphPropsSchema, AnimatablePropSchema, AnimationTrackSchema, AudioSpectrumTypographySchema, BlockNodeSchema, BoxNodeSchema, CameraAnimation, CameraDoFSchema, CameraLensSchema, CameraNodeSchema, CameraShakeSchema, CarrierHandoffConfigSchema, ChromaticGlitchConfigSchema, ColorStopSchema, CompositorProgramSchema, CubicBezierSegmentSchema, DynamicStrokePropertiesSchema, EXTENDED_3D_ANIMATABLE_PROPS, EaseRefSchema, EnhancedTextNodeSchema, ExpressionSelectorSchema, ExtendedGlyphPropertiesSchema, FlexNodeSchema, GlyphAnchorGroupingSchema, GlyphAnchorPointSchema, KeyframeSchema, KineticMarqueeConfigSchema, LayerAnimation, LayerAnimationSchema, LayoutNodeSchema, LightNodeSchema, LightTypeSchema, LineSpacingDynamicsSchema, LongShadowConfigSchema, MaterialTypeSchema, MediaNodeSchema, Model3DNodeSchema, ParticleDissolveConfigSchema, Scene, SceneDefinitionSchema, SceneTransitionTypeSchema, SelectorBasedOnSchema, SelectorModeSchema, SelectorShapeSchema, SelectorUnitsSchema, Sequence, ShapeFields, ShapeNodeSchema, ShapeTypeSchema, SignalColorModeSchema, SignalModeSchema, SizeSpecSchema, SkewPropertiesSchema, Spatial3DPropertiesSchema, SpringPhysicsSchema, TextAnchorConfigSchema, TextAnimator, TextAnimatorBuilder, TextAnimatorSchema, TextAnimatorTransformSchema, TextCursorConfigSchema, TextCursorStyleSchema, TextNodeSchema, TextPathBuilder, TextPathOptionsSchema, TextPathSourceSchema, TextRangeSelectorSchema, TextScrambleConfigSchema, TextSelectorSchema, TextShadowSchema, TextSignalSelectorSchema, TextSpanMarkSchema, TextSpanSchema, TextWigglySelectorSchema, TrackSourceSchema, TypewriterAnimatorSchema, TypingCadenceSchema, VariableFontAxesSchema, Vec2Schema, VolumetricFormationConfigSchema, VolumetricFormationModeSchema, applyStaggerToChildren, buildPathLUT, calculateSequenceTimeline, collectMediaBindings, collectNodeIds, collectNodeOps, compositorToProgram, computeAnchorPivotOffset, computeCarrierContinuity, computeLayout, computeLayoutSync, computeLineLeadingDisplacement, computeRangeSelectorWeight, computeStaggerDelay, containerChildren, deterministicWigglyNoise, distanceToCurveParameter, ellipseToCubicBeziers, evaluateAnimationAtFrame, evaluateCubicBezier, evaluateCubicBezierDerivative, evaluateExpressionSelector, evaluateKeyframes, evaluateMarqueeOffset, evaluateSelectorCombination, evaluateSignal, evaluateSignalAccumulator, evaluateSkewMatrix, evaluateSpringOvershoot, evaluateSpringProgress, evaluateTrackAtFrame, evaluateTypewriterState, evaluateVolumetricFormation, evaluateWiggle, generateArcLengthLUT, generatePathSegments, getScramblePool, getShuffledOrder, initLayout, parseProgram, parseSvgPathToCubicBeziers, rotateHue, sampleAudioSpectrumScale, sampleCurveGeometry, samplePathChainGeometry, svgArcToCubicBeziers, validateLayoutProgram, waveToCubicBeziers };\n//# sourceMappingURL=index.mjs.map"],"mappings":"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,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,GAAG,KAAK;AAC3F,oBAAiB,KAAK;;AAEvB,eAAa,WAAW,MAAM,GAAG,WAAW,SAAS,WAAW,GAAG;;CAEpE,IAAI,kBAAkB;AACtB,KAAI,iBAAiB,GAAG;EACvB,MAAM,mBAAmB,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC;AAC3E,oBAAkB,KAAK,MAAM,UAAU,iBAAiB,GAAG,MAAM;;AAElE,QAAO;EACN,cAAc;EACd,sBAAsB;EACtB;EACA;;;AAMF,MAAM,iBAAiB,EAAE,MAAM;CAC9B,EAAE,QAAQ,CAAC,IAAI,EAAE;CACjB,EAAE,KAAK;EACN;EACA;EACA;EACA,CAAC;CACF,EAAE,QAAQ;CACV,CAAC;AACF,MAAM,kBAAkB,EAAE,KAAK;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC;AACF,MAAM,uBAAuB,EAAE,KAAK;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC;AACF,MAAM,qBAAqB,EAAE,KAAK;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC;AA0CF,MAAM,wBAAwB,EAAE,KAAK;CACpC;CACA;CACA;CACA,CAAC;AACF,MAAM,gBAAgB,EAAE,OAAO;CAC9B,MAAM,EAAE,KAAK;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;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"}