framefields 2.0.8 → 2.0.9

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 (310) hide show
  1. package/dist/audio/index.d.mts +4 -4
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-a6pY05g2.d.mts → audio-BxA0sL9z.d.mts} +3 -3
  4. package/dist/{audio-a6pY05g2.d.mts.map → audio-BxA0sL9z.d.mts.map} +1 -1
  5. package/dist/{audio--hi7MiZt.mjs → audio-Dev4NGPa.mjs} +3 -3
  6. package/dist/{audio--hi7MiZt.mjs.map → audio-Dev4NGPa.mjs.map} +1 -1
  7. package/dist/{client-C74hb7fy.mjs → client-CwRhflHE.mjs} +1 -1
  8. package/dist/{client-C74hb7fy.mjs.map → client-CwRhflHE.mjs.map} +1 -1
  9. package/dist/{dist-ZVlYkuR4.mjs → dist-CoSg-CWr.mjs} +17 -8
  10. package/dist/dist-CoSg-CWr.mjs.map +1 -0
  11. package/dist/{dist-BQFap0wr.mjs → dist-DgfykO99.mjs} +53 -5
  12. package/dist/dist-DgfykO99.mjs.map +1 -0
  13. package/dist/{dist-cjs-qEJrwjGk.mjs → dist-cjs--lfMLs3U.mjs} +4 -4
  14. package/dist/{dist-cjs-qEJrwjGk.mjs.map → dist-cjs--lfMLs3U.mjs.map} +1 -1
  15. package/dist/{dist-cjs-x5cwlqA5.mjs → dist-cjs--pxyGFw2.mjs} +1 -1
  16. package/dist/{dist-cjs-x5cwlqA5.mjs.map → dist-cjs--pxyGFw2.mjs.map} +1 -1
  17. package/dist/dist-cjs-3pon9kTt.mjs +6 -0
  18. package/dist/{dist-cjs-Dzs5P3K0.mjs → dist-cjs-BDpO-TH_.mjs} +1 -1
  19. package/dist/{dist-cjs-Dzs5P3K0.mjs.map → dist-cjs-BDpO-TH_.mjs.map} +1 -1
  20. package/dist/{dist-cjs-lYvO8aDo.mjs → dist-cjs-BiKQozdJ.mjs} +3 -3
  21. package/dist/{dist-cjs-lYvO8aDo.mjs.map → dist-cjs-BiKQozdJ.mjs.map} +1 -1
  22. package/dist/{dist-cjs-BUwe2XhR.mjs → dist-cjs-BmyyWYWv.mjs} +2 -2
  23. package/dist/{dist-cjs-BUwe2XhR.mjs.map → dist-cjs-BmyyWYWv.mjs.map} +1 -1
  24. package/dist/{dist-cjs-DgxjcvBN.mjs → dist-cjs-CND_ghfH.mjs} +1 -1
  25. package/dist/{dist-cjs-DgxjcvBN.mjs.map → dist-cjs-CND_ghfH.mjs.map} +1 -1
  26. package/dist/{dist-cjs-BWgoUCXJ.mjs → dist-cjs-CQwmMllY.mjs} +6 -6
  27. package/dist/{dist-cjs-BWgoUCXJ.mjs.map → dist-cjs-CQwmMllY.mjs.map} +1 -1
  28. package/dist/{dist-cjs-B5EVqDFp.mjs → dist-cjs-CgFzrgj8.mjs} +1 -1
  29. package/dist/{dist-cjs-B5EVqDFp.mjs.map → dist-cjs-CgFzrgj8.mjs.map} +1 -1
  30. package/dist/{dist-cjs-ECMuIF57.mjs → dist-cjs-CsU2sZoX.mjs} +4 -4
  31. package/dist/{dist-cjs-ECMuIF57.mjs.map → dist-cjs-CsU2sZoX.mjs.map} +1 -1
  32. package/dist/{dist-cjs-BKmGCgtm.mjs → dist-cjs-DJ8fcQEe.mjs} +11 -11
  33. package/dist/{dist-cjs-BKmGCgtm.mjs.map → dist-cjs-DJ8fcQEe.mjs.map} +1 -1
  34. package/dist/{dist-cjs-D7kEM-Mj.mjs → dist-cjs-DT2jJlcK.mjs} +5 -5
  35. package/dist/{dist-cjs-D7kEM-Mj.mjs.map → dist-cjs-DT2jJlcK.mjs.map} +1 -1
  36. package/dist/{dist-cjs-BUc0_kg-.mjs → dist-cjs-DjzmP0-x.mjs} +13 -13
  37. package/dist/{dist-cjs-BUc0_kg-.mjs.map → dist-cjs-DjzmP0-x.mjs.map} +1 -1
  38. package/dist/{dist-cjs-BGJkdexX.mjs → dist-cjs-DzjrlfbE.mjs} +14 -14
  39. package/dist/{dist-cjs-BGJkdexX.mjs.map → dist-cjs-DzjrlfbE.mjs.map} +1 -1
  40. package/dist/{dist-cjs-Df7144zM.mjs → dist-cjs-M-8QOgS_.mjs} +2 -2
  41. package/dist/{dist-cjs-Df7144zM.mjs.map → dist-cjs-M-8QOgS_.mjs.map} +1 -1
  42. package/dist/{dist-cjs-DFUmy89O.mjs → dist-cjs-TsA8LFXC.mjs} +3 -3
  43. package/dist/{dist-cjs-DFUmy89O.mjs.map → dist-cjs-TsA8LFXC.mjs.map} +1 -1
  44. package/dist/{dist-cjs-DsMdld8l.mjs → dist-cjs-agQl9T8M.mjs} +6 -6
  45. package/dist/{dist-cjs-DsMdld8l.mjs.map → dist-cjs-agQl9T8M.mjs.map} +1 -1
  46. package/dist/effects/index.d.mts +5 -5
  47. package/dist/effects/index.mjs +27 -26
  48. package/dist/{effects-axfL_C3a.mjs → effects-hxRwxjyC.mjs} +27 -3
  49. package/dist/effects-hxRwxjyC.mjs.map +1 -0
  50. package/dist/{event-streams-D-APZ7Ke.mjs → event-streams-BaNGaLxh.mjs} +2 -2
  51. package/dist/{event-streams-D-APZ7Ke.mjs.map → event-streams-BaNGaLxh.mjs.map} +1 -1
  52. package/dist/fonts/index.d.mts +1 -1
  53. package/dist/fonts/index.mjs +1 -1
  54. package/dist/{fonts-Cy26mbrO.mjs → fonts-BznIea-I.mjs} +2 -2
  55. package/dist/{fonts-Cy26mbrO.mjs.map → fonts-BznIea-I.mjs.map} +1 -1
  56. package/dist/{index-BJUS4Nx6.d.mts → index-BXNNJVs8.d.mts} +2 -2
  57. package/dist/{index-BJUS4Nx6.d.mts.map → index-BXNNJVs8.d.mts.map} +1 -1
  58. package/dist/{index-CbzEM_o6.d.mts → index-CQcdKyxF.d.mts} +1 -1
  59. package/dist/{index-CbzEM_o6.d.mts.map → index-CQcdKyxF.d.mts.map} +1 -1
  60. package/dist/{index-BJx_Qxc_.d.mts → index-CvDVpaKn.d.mts} +69 -27
  61. package/dist/index-CvDVpaKn.d.mts.map +1 -0
  62. package/dist/{index-WIPHLy5m.d.mts → index-D1zaOwEU.d.mts} +1 -1
  63. package/dist/index-D1zaOwEU.d.mts.map +1 -0
  64. package/dist/{index-CZChQhXZ.d.mts → index-J9CIK_nu.d.mts} +4 -2
  65. package/dist/index-J9CIK_nu.d.mts.map +1 -0
  66. package/dist/{index-Bi2nRZ_g.d.mts → index-fo4E7A6C.d.mts} +3 -3
  67. package/dist/{index-Bi2nRZ_g.d.mts.map → index-fo4E7A6C.d.mts.map} +1 -1
  68. package/dist/{index-BLbUQolI.d.mts → index-oodg5k9K.d.mts} +3 -3
  69. package/dist/{index-BLbUQolI.d.mts.map → index-oodg5k9K.d.mts.map} +1 -1
  70. package/dist/index.d.mts +11 -10
  71. package/dist/index.d.mts.map +1 -1
  72. package/dist/index.mjs +43 -42
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/{package-C58KmGKw.mjs → package-XpCRbTOA.mjs} +1 -1
  75. package/dist/{package-C58KmGKw.mjs.map → package-XpCRbTOA.mjs.map} +1 -1
  76. package/dist/preview/index.d.mts +2 -2
  77. package/dist/preview/index.mjs +11 -11
  78. package/dist/{preview-BUPB38Kk.mjs → preview-DZTbEON9.mjs} +2 -2
  79. package/dist/{preview-BUPB38Kk.mjs.map → preview-DZTbEON9.mjs.map} +1 -1
  80. package/dist/preview-engine/audio.mjs +1 -1
  81. package/dist/preview-engine/{chunk-3ROJ7JVY.mjs → chunk-25IW7NYO.mjs} +1 -1
  82. package/dist/preview-engine/chunk-36YGYLKD.mjs +58 -0
  83. package/dist/preview-engine/chunk-4VOHF3FF.mjs +1 -0
  84. package/dist/preview-engine/{chunk-TNZENER3.mjs → chunk-7DIAFPQP.mjs} +2 -2
  85. package/dist/preview-engine/{chunk-CXFEQ5PM.mjs → chunk-7O24H4YT.mjs} +2 -2
  86. package/dist/preview-engine/{chunk-BE3CEVJB.mjs → chunk-AUFSM5KI.mjs} +2 -2
  87. package/dist/preview-engine/chunk-AW7HNZKR.mjs +98 -0
  88. package/dist/preview-engine/chunk-BHFI3Y4T.mjs +1 -0
  89. package/dist/preview-engine/chunk-DLXQDDIN.mjs +46 -0
  90. package/dist/preview-engine/chunk-EJGLUZMW.mjs +1 -0
  91. package/dist/preview-engine/{chunk-XSMK5E2V.mjs → chunk-JAOXXYXG.mjs} +2 -2
  92. package/dist/preview-engine/{chunk-PO4VAAQC.mjs → chunk-K52S5DJX.mjs} +1 -1
  93. package/dist/preview-engine/{chunk-IGFT3XLN.mjs → chunk-MDDF2GCF.mjs} +2 -2
  94. package/dist/preview-engine/{chunk-JNEVSC4I.mjs → chunk-OF75EHTX.mjs} +1 -1
  95. package/dist/preview-engine/{chunk-POPVFC5P.mjs → chunk-S4CSX6K5.mjs} +10 -10
  96. package/dist/preview-engine/chunk-SNYAHQ25.mjs +186 -0
  97. package/dist/preview-engine/{chunk-MC7TZZLD.mjs → chunk-T6COGNOW.mjs} +2 -2
  98. package/dist/preview-engine/chunk-VVLM6LZ3.mjs +1 -0
  99. package/dist/preview-engine/chunk-XUM42I4R.mjs +1 -0
  100. package/dist/preview-engine/chunk-ZDCA6NVT.mjs +82 -0
  101. package/dist/preview-engine/effects.mjs +1 -1
  102. package/dist/preview-engine/framefields.mjs +13 -13
  103. package/dist/preview-engine/player.mjs +5 -5
  104. package/dist/preview-engine/{renderers-Q2ZDD5K2.mjs → renderers-2US2NIUG.mjs} +2 -2
  105. package/dist/preview-engine/{renderers-54AQK6RF.mjs → renderers-32PIFHPS.mjs} +1 -1
  106. package/dist/preview-engine/{renderers-O6HOYIPS.mjs → renderers-76PQY2SO.mjs} +1 -1
  107. package/dist/preview-engine/{renderers-PXGLEFZO.mjs → renderers-CI2GXWLP.mjs} +1 -1
  108. package/dist/preview-engine/{renderers-GC7EGB5Z.mjs → renderers-CRKRWR2Y.mjs} +1 -1
  109. package/dist/preview-engine/{renderers-47UITXLZ.mjs → renderers-EE2GFG7J.mjs} +1 -1
  110. package/dist/preview-engine/{renderers-E3JYRLSD.mjs → renderers-GJSUN5HU.mjs} +1 -1
  111. package/dist/preview-engine/{renderers-KCP4TFHG.mjs → renderers-IHKORHMT.mjs} +1 -1
  112. package/dist/preview-engine/renderers-LTNTQLWE.mjs +248 -0
  113. package/dist/preview-engine/{renderers-OBMTU3QY.mjs → renderers-NQUDQEHY.mjs} +1 -1
  114. package/dist/preview-engine/{renderers-QECJP22T.mjs → renderers-NSY2SDIE.mjs} +1 -1
  115. package/dist/preview-engine/{renderers-KS4HPV6Q.mjs → renderers-PWLWOZY4.mjs} +1 -1
  116. package/dist/preview-engine/{renderers-TUYQLKHJ.mjs → renderers-W5CVDJVH.mjs} +1 -1
  117. package/dist/preview-engine/{renderers-N5UPJY73.mjs → renderers-WLLJFZTF.mjs} +1 -1
  118. package/dist/preview-engine/renderers-WN4SYFCU.mjs +1 -0
  119. package/dist/preview-engine/{renderers-TG62LZTF.mjs → renderers-XFBSGTHU.mjs} +1 -1
  120. package/dist/preview-engine/signals.mjs +1 -1
  121. package/dist/{program-Jt07Tx1J.mjs → program-C797QMRL.mjs} +2 -2
  122. package/dist/{program-Jt07Tx1J.mjs.map → program-C797QMRL.mjs.map} +1 -1
  123. package/dist/renderer/index.d.mts +2 -2
  124. package/dist/renderer/index.mjs +3 -3
  125. package/dist/{renderer-BkOXe6o6.mjs → renderer--vY6O19V.mjs} +2 -2
  126. package/dist/{renderer-BkOXe6o6.mjs.map → renderer--vY6O19V.mjs.map} +1 -1
  127. package/dist/{renderer-Bal8734U.d.mts → renderer-2NQWaZd7.d.mts} +2 -2
  128. package/dist/{renderer-Bal8734U.d.mts.map → renderer-2NQWaZd7.d.mts.map} +1 -1
  129. package/dist/renderer-3uTfN95I.mjs +3 -0
  130. package/dist/{renderer-D49-PYDo.mjs → renderer-5jfDUKd4.mjs} +2 -2
  131. package/dist/{renderer-D49-PYDo.mjs.map → renderer-5jfDUKd4.mjs.map} +1 -1
  132. package/dist/{renderer-C5RhNQdr.mjs → renderer-6PqlYQjC.mjs} +10 -9
  133. package/dist/{renderer-C5RhNQdr.mjs.map → renderer-6PqlYQjC.mjs.map} +1 -1
  134. package/dist/{renderer-CceiI6P7.mjs → renderer-9QCHY8Kh.mjs} +18 -4
  135. package/dist/renderer-9QCHY8Kh.mjs.map +1 -0
  136. package/dist/{renderer-o4wOvjEC.mjs → renderer-B1UeU7lX.mjs} +21 -18
  137. package/dist/renderer-B1UeU7lX.mjs.map +1 -0
  138. package/dist/{renderer-DDd3cjaz.mjs → renderer-B4ecTNR7.mjs} +18 -11
  139. package/dist/renderer-B4ecTNR7.mjs.map +1 -0
  140. package/dist/renderer-B5GslTP-.mjs +3 -0
  141. package/dist/{renderer-DXyaswab.mjs → renderer-B8gTyU3w.mjs} +18 -17
  142. package/dist/renderer-B8gTyU3w.mjs.map +1 -0
  143. package/dist/{renderer-CIQYTiT9.mjs → renderer-BE4Ns0nw.mjs} +2 -2
  144. package/dist/{renderer-CIQYTiT9.mjs.map → renderer-BE4Ns0nw.mjs.map} +1 -1
  145. package/dist/{renderer-BDLnExoP.mjs → renderer-BM05sB8m.mjs} +8 -7
  146. package/dist/renderer-BM05sB8m.mjs.map +1 -0
  147. package/dist/{renderer-DxBUppHf.mjs → renderer-BTYncYDf.mjs} +74 -63
  148. package/dist/{renderer-DxBUppHf.mjs.map → renderer-BTYncYDf.mjs.map} +1 -1
  149. package/dist/renderer-BUIWeIKQ.mjs +3 -0
  150. package/dist/{renderer-0uccAKQe.mjs → renderer-BXaK02qA.mjs} +2 -2
  151. package/dist/{renderer-0uccAKQe.mjs.map → renderer-BXaK02qA.mjs.map} +1 -1
  152. package/dist/renderer-B_LfC88A.mjs +3 -0
  153. package/dist/renderer-B_zmicsE.mjs +3 -0
  154. package/dist/{renderer-DrgNyCSx.mjs → renderer-BcPpcKDI.mjs} +2 -2
  155. package/dist/{renderer-DrgNyCSx.mjs.map → renderer-BcPpcKDI.mjs.map} +1 -1
  156. package/dist/{renderer-C-Bv9nVB.mjs → renderer-BgqjWI7K.mjs} +2 -2
  157. package/dist/{renderer-C-Bv9nVB.mjs.map → renderer-BgqjWI7K.mjs.map} +1 -1
  158. package/dist/{renderer-BPbNLPcz.mjs → renderer-BpJgfBQ8.mjs} +2 -2
  159. package/dist/{renderer-BPbNLPcz.mjs.map → renderer-BpJgfBQ8.mjs.map} +1 -1
  160. package/dist/renderer-BtNxtXkR.mjs +3 -0
  161. package/dist/{renderer-D5xelwpw.mjs → renderer-BwmZUkvd.mjs} +2 -2
  162. package/dist/{renderer-D5xelwpw.mjs.map → renderer-BwmZUkvd.mjs.map} +1 -1
  163. package/dist/{renderer-DIfk6m2O.mjs → renderer-C-PfbkPu.mjs} +2 -2
  164. package/dist/{renderer-DIfk6m2O.mjs.map → renderer-C-PfbkPu.mjs.map} +1 -1
  165. package/dist/renderer-C-sZSHtf.mjs +3 -0
  166. package/dist/renderer-C1zifktw.mjs +3 -0
  167. package/dist/{renderer-U0LJuM9D.mjs → renderer-C2gnWTQZ.mjs} +2 -2
  168. package/dist/{renderer-U0LJuM9D.mjs.map → renderer-C2gnWTQZ.mjs.map} +1 -1
  169. package/dist/{renderer-BdSHGzHj.mjs → renderer-CB8hMQgm.mjs} +1 -1
  170. package/dist/renderer-CCt2XTSM.mjs +3 -0
  171. package/dist/{renderer-BjROyv5F.mjs → renderer-CKJb_Lky.mjs} +2 -2
  172. package/dist/{renderer-BjROyv5F.mjs.map → renderer-CKJb_Lky.mjs.map} +1 -1
  173. package/dist/renderer-CMXcaArD.mjs +3 -0
  174. package/dist/{renderer-CIMjMFGm.mjs → renderer-CV8diddR.mjs} +2 -2
  175. package/dist/{renderer-CIMjMFGm.mjs.map → renderer-CV8diddR.mjs.map} +1 -1
  176. package/dist/renderer-CW9D5zCP.mjs +3 -0
  177. package/dist/{renderer-Dgg6pQGI.mjs → renderer-CckJJHbM.mjs} +2 -2
  178. package/dist/{renderer-Dgg6pQGI.mjs.map → renderer-CckJJHbM.mjs.map} +1 -1
  179. package/dist/{renderer-DFKsLrUs.mjs → renderer-CepMDQ06.mjs} +1 -1
  180. package/dist/{renderer-DFKsLrUs.mjs.map → renderer-CepMDQ06.mjs.map} +1 -1
  181. package/dist/renderer-CjY77sB_.mjs +3 -0
  182. package/dist/{renderer-DVQp5fLG.mjs → renderer-CpUbDJAV.mjs} +5 -4
  183. package/dist/{renderer-DVQp5fLG.mjs.map → renderer-CpUbDJAV.mjs.map} +1 -1
  184. package/dist/{renderer-zwxwjWqa.mjs → renderer-CrVAvP92.mjs} +2 -2
  185. package/dist/{renderer-zwxwjWqa.mjs.map → renderer-CrVAvP92.mjs.map} +1 -1
  186. package/dist/{renderer-CboM4tba.mjs → renderer-CuqhAB4i.mjs} +11 -5
  187. package/dist/renderer-CuqhAB4i.mjs.map +1 -0
  188. package/dist/{renderer-CmIySXSN.mjs → renderer-CxQ5v4fJ.mjs} +11 -5
  189. package/dist/renderer-CxQ5v4fJ.mjs.map +1 -0
  190. package/dist/renderer-D1R7vBUl.mjs +3 -0
  191. package/dist/{renderer-DabG62XS.mjs → renderer-D2XD4QYk.mjs} +1 -1
  192. package/dist/{renderer-DabG62XS.mjs.map → renderer-D2XD4QYk.mjs.map} +1 -1
  193. package/dist/{renderer-Bv-ljXHc.mjs → renderer-D3uNI10l.mjs} +2 -2
  194. package/dist/{renderer-Bv-ljXHc.mjs.map → renderer-D3uNI10l.mjs.map} +1 -1
  195. package/dist/renderer-D5yawxtJ.mjs +3 -0
  196. package/dist/{renderer-Bq3Geqe3.mjs → renderer-D6Gi_h4K.mjs} +1 -1
  197. package/dist/{renderer-DjI45OYC.mjs → renderer-D7zvPHKn.mjs} +1 -1
  198. package/dist/{renderer-DjI45OYC.mjs.map → renderer-D7zvPHKn.mjs.map} +1 -1
  199. package/dist/renderer-D9NnIx7o.mjs +3 -0
  200. package/dist/{renderer-D5GsF1LT.mjs → renderer-DAFyJ4dv.mjs} +2 -2
  201. package/dist/{renderer-D5GsF1LT.mjs.map → renderer-DAFyJ4dv.mjs.map} +1 -1
  202. package/dist/renderer-DC8jr1Ay.mjs +3 -0
  203. package/dist/{renderer-CXJxK7HP.mjs → renderer-DCK73tcD.mjs} +17 -4
  204. package/dist/renderer-DCK73tcD.mjs.map +1 -0
  205. package/dist/renderer-DCv-Abvn.mjs +4 -0
  206. package/dist/{renderer-B80s47yo.mjs → renderer-DEJwPRkR.mjs} +1 -1
  207. package/dist/{renderer-B80s47yo.mjs.map → renderer-DEJwPRkR.mjs.map} +1 -1
  208. package/dist/renderer-DPLFhzaV.mjs +3 -0
  209. package/dist/{renderer-B6Q5e9CU.mjs → renderer-DPpgBTlK.mjs} +2 -2
  210. package/dist/{renderer-B6Q5e9CU.mjs.map → renderer-DPpgBTlK.mjs.map} +1 -1
  211. package/dist/{renderer-DP-xNaYX.mjs → renderer-DRpE3ZW4.mjs} +2 -2
  212. package/dist/{renderer-DP-xNaYX.mjs.map → renderer-DRpE3ZW4.mjs.map} +1 -1
  213. package/dist/renderer-DVsF2FDr.mjs +3 -0
  214. package/dist/{renderer-VPK8JnSw.mjs → renderer-DX38J6mK.mjs} +7 -6
  215. package/dist/{renderer-VPK8JnSw.mjs.map → renderer-DX38J6mK.mjs.map} +1 -1
  216. package/dist/{renderer-CIvaRnP_.mjs → renderer-D_1oDOCP.mjs} +1 -1
  217. package/dist/{renderer-CIvaRnP_.mjs.map → renderer-D_1oDOCP.mjs.map} +1 -1
  218. package/dist/renderer-DetDm3ep.mjs +3 -0
  219. package/dist/{renderer-BENX0vRC.mjs → renderer-DgSO5OO0.mjs} +1 -1
  220. package/dist/renderer-DhMhJh_G.mjs +3 -0
  221. package/dist/renderer-DhQld4Qt.mjs +3 -0
  222. package/dist/renderer-Dn3rc3ah.mjs +3 -0
  223. package/dist/{renderer-DP948J9X.mjs → renderer-Dn8v2o9L.mjs} +18 -4
  224. package/dist/renderer-Dn8v2o9L.mjs.map +1 -0
  225. package/dist/{renderer-BQZniXw0.mjs → renderer-DnF3aXPX.mjs} +2 -2
  226. package/dist/{renderer-BQZniXw0.mjs.map → renderer-DnF3aXPX.mjs.map} +1 -1
  227. package/dist/renderer-Dw9LxE2f.mjs +3 -0
  228. package/dist/{renderer-CXZe0lfI.mjs → renderer-EmG34sT2.mjs} +2 -2
  229. package/dist/{renderer-CXZe0lfI.mjs.map → renderer-EmG34sT2.mjs.map} +1 -1
  230. package/dist/renderer-HvrQZw5E.mjs +3 -0
  231. package/dist/renderer-QdJE56ts.mjs +3 -0
  232. package/dist/{renderer-h-HOoLwD.mjs → renderer-_bygZSKk.mjs} +1 -1
  233. package/dist/{renderer-h-HOoLwD.mjs.map → renderer-_bygZSKk.mjs.map} +1 -1
  234. package/dist/{renderer-BD6Jkc8j.mjs → renderer-b6sZN90h.mjs} +4 -3
  235. package/dist/{renderer-BD6Jkc8j.mjs.map → renderer-b6sZN90h.mjs.map} +1 -1
  236. package/dist/renderer-d5-F_48R.mjs +3 -0
  237. package/dist/renderer-euGyUN2O.mjs +3 -0
  238. package/dist/{renderer-Bu0xOP_v.mjs → renderer-gT0ADXMW.mjs} +2 -2
  239. package/dist/{renderer-Bu0xOP_v.mjs.map → renderer-gT0ADXMW.mjs.map} +1 -1
  240. package/dist/{renderer-DbaSgadp.mjs → renderer-lq4n1hSS.mjs} +2 -2
  241. package/dist/{renderer-DbaSgadp.mjs.map → renderer-lq4n1hSS.mjs.map} +1 -1
  242. package/dist/renderer-p3SmBFP9.mjs +3 -0
  243. package/dist/renderer-xp_J0ln7.mjs +263 -0
  244. package/dist/renderer-xp_J0ln7.mjs.map +1 -0
  245. package/dist/{renderer-BTFPC3UJ.mjs → renderer-zvtpCnqy.mjs} +1 -1
  246. package/dist/{renderers-CP8CFWDs-BQBjaV9O.mjs → renderers-CP8CFWDs-Ciap7y_j.mjs} +2 -2
  247. package/dist/{renderers-CP8CFWDs-BQBjaV9O.mjs.map → renderers-CP8CFWDs-Ciap7y_j.mjs.map} +1 -1
  248. package/dist/signals/index.d.mts +5 -5
  249. package/dist/signals/index.mjs +4 -4
  250. package/dist/{signin-CZj4Oc5s.mjs → signin-Db08vl-g.mjs} +9 -9
  251. package/dist/{signin-CZj4Oc5s.mjs.map → signin-Db08vl-g.mjs.map} +1 -1
  252. package/dist/{sso-oidc-C0_31ThY.mjs → sso-oidc-CpLz_lIu.mjs} +9 -9
  253. package/dist/{sso-oidc-C0_31ThY.mjs.map → sso-oidc-CpLz_lIu.mjs.map} +1 -1
  254. package/dist/{sts-DD4ggEXC.mjs → sts-BQefGuml.mjs} +2 -2
  255. package/dist/{sts-nXw8RDJI.mjs → sts-Dgl0kH-t.mjs} +9 -9
  256. package/dist/{sts-nXw8RDJI.mjs.map → sts-Dgl0kH-t.mjs.map} +1 -1
  257. package/package.json +55 -54
  258. package/dist/dist-BQFap0wr.mjs.map +0 -1
  259. package/dist/dist-ZVlYkuR4.mjs.map +0 -1
  260. package/dist/dist-cjs-CmZEMtO6.mjs +0 -6
  261. package/dist/effects-axfL_C3a.mjs.map +0 -1
  262. package/dist/index-BJx_Qxc_.d.mts.map +0 -1
  263. package/dist/index-CZChQhXZ.d.mts.map +0 -1
  264. package/dist/index-WIPHLy5m.d.mts.map +0 -1
  265. package/dist/preview-engine/chunk-2XXICKQV.mjs +0 -82
  266. package/dist/preview-engine/chunk-66NVL4BN.mjs +0 -58
  267. package/dist/preview-engine/chunk-7MJVROKR.mjs +0 -98
  268. package/dist/preview-engine/chunk-7NVDTELW.mjs +0 -1
  269. package/dist/preview-engine/chunk-DMWSTYFF.mjs +0 -1
  270. package/dist/preview-engine/chunk-FKZ4XXPE.mjs +0 -1
  271. package/dist/preview-engine/chunk-JQ4WY6BZ.mjs +0 -186
  272. package/dist/preview-engine/chunk-S3P3MJYU.mjs +0 -1
  273. package/dist/preview-engine/renderers-MZBR3MSR.mjs +0 -248
  274. package/dist/renderer-1mNREW16.mjs +0 -3
  275. package/dist/renderer-4tKI3p9c.mjs +0 -3
  276. package/dist/renderer-B3XeKN-e.mjs +0 -3
  277. package/dist/renderer-B7_6SHd8.mjs +0 -3
  278. package/dist/renderer-BDLnExoP.mjs.map +0 -1
  279. package/dist/renderer-BENF6Wts.mjs +0 -3
  280. package/dist/renderer-BMovYRoR.mjs +0 -3
  281. package/dist/renderer-BPiLdwI1.mjs +0 -3
  282. package/dist/renderer-BdyMrzUX.mjs +0 -3
  283. package/dist/renderer-BfpdekRn.mjs +0 -3
  284. package/dist/renderer-BfvBHHNr.mjs +0 -3
  285. package/dist/renderer-BtdnLjKZ.mjs +0 -3
  286. package/dist/renderer-C0q5UUY7.mjs +0 -3
  287. package/dist/renderer-CXJxK7HP.mjs.map +0 -1
  288. package/dist/renderer-CboM4tba.mjs.map +0 -1
  289. package/dist/renderer-CceiI6P7.mjs.map +0 -1
  290. package/dist/renderer-Cg-rJgwM.mjs +0 -3
  291. package/dist/renderer-CkgQArsi.mjs +0 -3
  292. package/dist/renderer-CmIySXSN.mjs.map +0 -1
  293. package/dist/renderer-CnO9KcmP.mjs +0 -3
  294. package/dist/renderer-Cnp5JCwi.mjs +0 -3
  295. package/dist/renderer-CwiCQzjW.mjs +0 -4
  296. package/dist/renderer-D2LCMZ0l.mjs +0 -3
  297. package/dist/renderer-D6bWQtr-.mjs +0 -3
  298. package/dist/renderer-DBGy4qIh.mjs +0 -3
  299. package/dist/renderer-DBRnvHBV.mjs +0 -3
  300. package/dist/renderer-DDd3cjaz.mjs.map +0 -1
  301. package/dist/renderer-DJgrcu3v.mjs +0 -3
  302. package/dist/renderer-DP948J9X.mjs.map +0 -1
  303. package/dist/renderer-DTpBOlDA.mjs +0 -3
  304. package/dist/renderer-DWwIX4Mr.mjs +0 -3
  305. package/dist/renderer-DXyaswab.mjs.map +0 -1
  306. package/dist/renderer-DfnacE0H.mjs +0 -3
  307. package/dist/renderer-RA8pee2T.mjs +0 -3
  308. package/dist/renderer-eH4u4-2c.mjs +0 -3
  309. package/dist/renderer-eWOqFUz9.mjs +0 -3
  310. package/dist/renderer-o4wOvjEC.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"program-Jt07Tx1J.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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"}
1
+ {"version":3,"file":"program-C797QMRL.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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"}