framefields 2.14.0 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/NOTICE.md +5 -1
  2. package/dist/audio/index.d.mts +3 -3
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-DFwRbID_.mjs → audio-6TfPlfl4.mjs} +3 -3
  5. package/dist/{audio-DFwRbID_.mjs.map → audio-6TfPlfl4.mjs.map} +1 -1
  6. package/dist/{audio-CdCuGK5d.d.mts → audio-7oqTUi4G.d.mts} +2 -2
  7. package/dist/{audio-CdCuGK5d.d.mts.map → audio-7oqTUi4G.d.mts.map} +1 -1
  8. package/dist/cli/check-worker.mjs +44 -44
  9. package/dist/cli.mjs +1 -1
  10. package/dist/cloud/index.mjs +1 -1
  11. package/dist/{cloud-Cj1TIme8.mjs → cloud-jnk1hPYf.mjs} +2 -2
  12. package/dist/{cloud-Cj1TIme8.mjs.map → cloud-jnk1hPYf.mjs.map} +1 -1
  13. package/dist/components/index.d.mts +11 -11
  14. package/dist/components/index.mjs +43 -43
  15. package/dist/{dist-Kbf-JTry.mjs → dist-BtI6ukB5.mjs} +2 -2
  16. package/dist/{dist-Kbf-JTry.mjs.map → dist-BtI6ukB5.mjs.map} +1 -1
  17. package/dist/{dist-B8Nby2CU.mjs → dist-COOpgG9G.mjs} +4 -3
  18. package/dist/{dist-B8Nby2CU.mjs.map → dist-COOpgG9G.mjs.map} +1 -1
  19. package/dist/{dist--Uu5bQ_6.mjs → dist-XqlFM2a8.mjs} +13733 -5323
  20. package/dist/dist-XqlFM2a8.mjs.map +1 -0
  21. package/dist/{dist-CiTgmfUw.mjs → dist-f1zkl69f.mjs} +4 -4
  22. package/dist/dist-f1zkl69f.mjs.map +1 -0
  23. package/dist/{dist-B_rSWeOz.mjs → dist-umQOWz0a.mjs} +1 -1
  24. package/dist/effects/index.d.mts +4 -4
  25. package/dist/effects/index.mjs +35 -35
  26. package/dist/{effects-WMgv8ZaD.mjs → effects-DlRMovU5.mjs} +2 -2
  27. package/dist/{effects-WMgv8ZaD.mjs.map → effects-DlRMovU5.mjs.map} +1 -1
  28. package/dist/fonts/index.d.mts +1 -1
  29. package/dist/fonts/index.mjs +2 -2
  30. package/dist/{fonts-OW3yAfO5.mjs → fonts-BWYcXjyK.mjs} +3 -3
  31. package/dist/fonts-BWYcXjyK.mjs.map +1 -0
  32. package/dist/{gpu-R4T2Tndu.mjs → gpu-CH1PdM4T.mjs} +2 -2
  33. package/dist/{gpu-R4T2Tndu.mjs.map → gpu-CH1PdM4T.mjs.map} +1 -1
  34. package/dist/{index-CEKxvGY-.d.mts → index-BHTycml5.d.mts} +2 -2
  35. package/dist/{index-CEKxvGY-.d.mts.map → index-BHTycml5.d.mts.map} +1 -1
  36. package/dist/{index-DoP6EiHj.d.mts → index-BcxxxwhV.d.mts} +4 -4
  37. package/dist/{index-DoP6EiHj.d.mts.map → index-BcxxxwhV.d.mts.map} +1 -1
  38. package/dist/index-C-V6CAhP.d.mts.map +1 -1
  39. package/dist/{index-D1FqV1eu.d.mts → index-CMhkkc56.d.mts} +43 -11
  40. package/dist/index-CMhkkc56.d.mts.map +1 -0
  41. package/dist/{index-B0Vq8Bwf.d.mts → index-CYVpYGM-.d.mts} +2 -2
  42. package/dist/{index-B0Vq8Bwf.d.mts.map → index-CYVpYGM-.d.mts.map} +1 -1
  43. package/dist/{index-Bv7gxGK1.d.mts → index-Cq8jgdNY.d.mts} +90 -3
  44. package/dist/index-Cq8jgdNY.d.mts.map +1 -0
  45. package/dist/{index-9xte4JgL.d.mts → index-Dg5BAtDq.d.mts} +1446 -541
  46. package/dist/index-Dg5BAtDq.d.mts.map +1 -0
  47. package/dist/{index-C7-p9zwU.d.mts → index-DhL7ckvs.d.mts} +5 -5
  48. package/dist/index-DhL7ckvs.d.mts.map +1 -0
  49. package/dist/{index-GA9_Z8Fn.d.mts → index-RILu3ULT.d.mts} +2 -2
  50. package/dist/{index-GA9_Z8Fn.d.mts.map → index-RILu3ULT.d.mts.map} +1 -1
  51. package/dist/{index-C5sgRLlG.d.mts → index-TCtdSXd7.d.mts} +3 -1
  52. package/dist/index-TCtdSXd7.d.mts.map +1 -0
  53. package/dist/{index-CRaydvLi.d.mts → index-s2qQ8ifZ.d.mts} +886 -51
  54. package/dist/index-s2qQ8ifZ.d.mts.map +1 -0
  55. package/dist/index.d.mts +13 -13
  56. package/dist/index.mjs +52 -52
  57. package/dist/preview/index.d.mts +4 -4
  58. package/dist/preview/index.mjs +11 -11
  59. package/dist/preview-Dm912wly.mjs +1037 -0
  60. package/dist/preview-Dm912wly.mjs.map +1 -0
  61. package/dist/preview-engine/audio.mjs +1 -1
  62. package/dist/preview-engine/{chunk-64L4GUOF.mjs → chunk-4F3DG6YB.mjs} +2 -2
  63. package/dist/preview-engine/chunk-A2OTOW3B.mjs +4694 -0
  64. package/dist/preview-engine/{chunk-GNDE3OXQ.mjs → chunk-BR56TQBP.mjs} +1 -1
  65. package/dist/preview-engine/{chunk-ADLIF544.mjs → chunk-H2XKXXAU.mjs} +1 -1
  66. package/dist/preview-engine/chunk-NDUODAY2.mjs +3 -0
  67. package/dist/preview-engine/{chunk-FZ4RD7HV.mjs → chunk-QAQJSWUT.mjs} +1 -1
  68. package/dist/preview-engine/chunk-SWRGQTVC.mjs +138 -0
  69. package/dist/preview-engine/{chunk-52X7SURQ.mjs → chunk-TEA3GVBJ.mjs} +1 -1
  70. package/dist/preview-engine/chunk-VZUVB3BP.mjs +644 -0
  71. package/dist/preview-engine/{chunk-UBY2UYEL.mjs → chunk-XSHNQJ7L.mjs} +1 -1
  72. package/dist/preview-engine/components.mjs +1 -1
  73. package/dist/preview-engine/effects.mjs +1 -1
  74. package/dist/preview-engine/fonts.mjs +1 -1
  75. package/dist/preview-engine/framefields.mjs +1 -1
  76. package/dist/preview-engine/player.mjs +3 -3
  77. package/dist/preview-engine/{renderers-DU7KPFVV.mjs → renderers-6C7NWWDX.mjs} +1 -1
  78. package/dist/preview-engine/renderers-HHVGNMSJ.mjs +206 -0
  79. package/dist/preview-engine/{src-YXNX4MLK.mjs → src-RCNEKIRP.mjs} +1 -1
  80. package/dist/preview-page/index.html +19 -0
  81. package/dist/preview-page/main.css +1 -0
  82. package/dist/preview-page/main.js +326 -0
  83. package/dist/{program-tFKCWU2j.mjs → program-CMigyfso.mjs} +829 -52
  84. package/dist/program-CMigyfso.mjs.map +1 -0
  85. package/dist/renderer/index.d.mts +2 -2
  86. package/dist/renderer/index.mjs +2 -2
  87. package/dist/{renderer-DkOuQi84.mjs → renderer-0GMEL_Zi.mjs} +3 -3
  88. package/dist/{renderer-DkOuQi84.mjs.map → renderer-0GMEL_Zi.mjs.map} +1 -1
  89. package/dist/{renderer-BGp0An5A.mjs → renderer-3Wv2ZBJG.mjs} +3 -3
  90. package/dist/{renderer-BGp0An5A.mjs.map → renderer-3Wv2ZBJG.mjs.map} +1 -1
  91. package/dist/{renderer-BVIXKfbC.mjs → renderer-4nXkaAWu.mjs} +1178 -199
  92. package/dist/renderer-4nXkaAWu.mjs.map +1 -0
  93. package/dist/{renderer-Cw6_NL2i.mjs → renderer-6SnfLXeg.mjs} +3 -3
  94. package/dist/{renderer-Cw6_NL2i.mjs.map → renderer-6SnfLXeg.mjs.map} +1 -1
  95. package/dist/{renderer-BVU22lBS.mjs → renderer-8gHw3O0P.mjs} +2 -2
  96. package/dist/{renderer-BVU22lBS.mjs.map → renderer-8gHw3O0P.mjs.map} +1 -1
  97. package/dist/{renderer-BjDddtw9.mjs → renderer-AOBglZHC.mjs} +2 -2
  98. package/dist/{renderer-D-KHHWQD.mjs → renderer-B0bSARK3.mjs} +3 -3
  99. package/dist/{renderer-D-KHHWQD.mjs.map → renderer-B0bSARK3.mjs.map} +1 -1
  100. package/dist/{renderer-CCxk-RJR.mjs → renderer-B2_tuRfl.mjs} +2 -2
  101. package/dist/{renderer-CCxk-RJR.mjs.map → renderer-B2_tuRfl.mjs.map} +1 -1
  102. package/dist/{renderer-k5d7JSbs.mjs → renderer-B82FhkEr.mjs} +3 -3
  103. package/dist/{renderer-k5d7JSbs.mjs.map → renderer-B82FhkEr.mjs.map} +1 -1
  104. package/dist/{renderer-I0Hh9cLK.mjs → renderer-B9lzA0PY.mjs} +3 -3
  105. package/dist/{renderer-I0Hh9cLK.mjs.map → renderer-B9lzA0PY.mjs.map} +1 -1
  106. package/dist/{renderer-Dwwnx7Dk.mjs → renderer-BBSIWSry.mjs} +2 -2
  107. package/dist/{renderer-Dwwnx7Dk.mjs.map → renderer-BBSIWSry.mjs.map} +1 -1
  108. package/dist/{renderer-_pC-jB9O.mjs → renderer-BEKDMxbi.mjs} +2 -2
  109. package/dist/{renderer-_pC-jB9O.mjs.map → renderer-BEKDMxbi.mjs.map} +1 -1
  110. package/dist/renderer-BERGAxqA.mjs +5 -0
  111. package/dist/{renderer-raxwsiGI.mjs → renderer-BF960HY8.mjs} +3 -3
  112. package/dist/{renderer-raxwsiGI.mjs.map → renderer-BF960HY8.mjs.map} +1 -1
  113. package/dist/{renderer-Dr0tXA4k.mjs → renderer-BFwyVxCu.mjs} +3 -3
  114. package/dist/{renderer-Dr0tXA4k.mjs.map → renderer-BFwyVxCu.mjs.map} +1 -1
  115. package/dist/{renderer-DEjo6dw_.mjs → renderer-BNiwcI3-.mjs} +2 -2
  116. package/dist/{renderer-DEjo6dw_.mjs.map → renderer-BNiwcI3-.mjs.map} +1 -1
  117. package/dist/{renderer-DIEeHiQA.mjs → renderer-BPbVb2Q4.mjs} +2 -2
  118. package/dist/{renderer-DIEeHiQA.mjs.map → renderer-BPbVb2Q4.mjs.map} +1 -1
  119. package/dist/renderer-BQ_YkBMt.mjs +6 -0
  120. package/dist/{renderer-BBMtmxks.mjs → renderer-BUWxlA8T.mjs} +3 -3
  121. package/dist/{renderer-BBMtmxks.mjs.map → renderer-BUWxlA8T.mjs.map} +1 -1
  122. package/dist/renderer-BW0Tjsv9.mjs +5 -0
  123. package/dist/{renderer-Dgj46uEU.mjs → renderer-BX8liu-e.mjs} +2 -2
  124. package/dist/{renderer-ZnrEfkYh.mjs → renderer-BXIwDAr_.mjs} +2 -2
  125. package/dist/{renderer-ZnrEfkYh.mjs.map → renderer-BXIwDAr_.mjs.map} +1 -1
  126. package/dist/{renderer-DA8YEo_d.mjs → renderer-B_Hy1W-g.mjs} +3 -3
  127. package/dist/{renderer-DA8YEo_d.mjs.map → renderer-B_Hy1W-g.mjs.map} +1 -1
  128. package/dist/{renderer-iMiYStcW.mjs → renderer-Bb6cvSgh.mjs} +2 -2
  129. package/dist/{renderer-iMiYStcW.mjs.map → renderer-Bb6cvSgh.mjs.map} +1 -1
  130. package/dist/{renderer-BacY4nh8.mjs → renderer-BdppwWC9.mjs} +2 -2
  131. package/dist/{renderer-BacY4nh8.mjs.map → renderer-BdppwWC9.mjs.map} +1 -1
  132. package/dist/{renderer-CrxwW6VQ.mjs → renderer-Bhc24HVe.mjs} +3 -3
  133. package/dist/{renderer-CrxwW6VQ.mjs.map → renderer-Bhc24HVe.mjs.map} +1 -1
  134. package/dist/{renderer-BH7UCMPQ.mjs → renderer-BiNA2wF0.mjs} +2 -2
  135. package/dist/{renderer-BH7UCMPQ.mjs.map → renderer-BiNA2wF0.mjs.map} +1 -1
  136. package/dist/{renderer-DVPgWHZw.mjs → renderer-BmoBgTp5.mjs} +3 -3
  137. package/dist/{renderer-DVPgWHZw.mjs.map → renderer-BmoBgTp5.mjs.map} +1 -1
  138. package/dist/{renderer-C20efMI0.mjs → renderer-BmqFmCWS.mjs} +3 -3
  139. package/dist/{renderer-C20efMI0.mjs.map → renderer-BmqFmCWS.mjs.map} +1 -1
  140. package/dist/{renderer-B0yVUOPP.mjs → renderer-BnVwAObV.mjs} +2 -2
  141. package/dist/{renderer-B0yVUOPP.mjs.map → renderer-BnVwAObV.mjs.map} +1 -1
  142. package/dist/{renderer-CP8wLzTU.mjs → renderer-BxttZHme.mjs} +2 -2
  143. package/dist/{renderer-CP8wLzTU.mjs.map → renderer-BxttZHme.mjs.map} +1 -1
  144. package/dist/renderer-BzyPdUD1.mjs +5 -0
  145. package/dist/renderer-C0hM-mtY.mjs +5 -0
  146. package/dist/renderer-C6cyUTvk.mjs +5 -0
  147. package/dist/{renderer-BOSZAdgF.mjs → renderer-C8E4XsSg.mjs} +2 -2
  148. package/dist/{renderer-BOSZAdgF.mjs.map → renderer-C8E4XsSg.mjs.map} +1 -1
  149. package/dist/renderer-C8zY3pzk.mjs +5 -0
  150. package/dist/{renderer-DWq9gYRw.mjs → renderer-C9U-LY50.mjs} +3 -3
  151. package/dist/{renderer-DWq9gYRw.mjs.map → renderer-C9U-LY50.mjs.map} +1 -1
  152. package/dist/{renderer-Dj2H5JPR.mjs → renderer-CB2JVu5x.mjs} +3 -3
  153. package/dist/{renderer-Dj2H5JPR.mjs.map → renderer-CB2JVu5x.mjs.map} +1 -1
  154. package/dist/{renderer-Bcu3UrI-.mjs → renderer-CC4YBJ8Z.mjs} +3 -3
  155. package/dist/{renderer-Bcu3UrI-.mjs.map → renderer-CC4YBJ8Z.mjs.map} +1 -1
  156. package/dist/renderer-CEkSOyKu.mjs +5 -0
  157. package/dist/{renderer-DzLrvCB2.mjs → renderer-CIycc5O-.mjs} +2 -2
  158. package/dist/{renderer-DzLrvCB2.mjs.map → renderer-CIycc5O-.mjs.map} +1 -1
  159. package/dist/renderer-CJYtfa4x.mjs +5 -0
  160. package/dist/{renderer-BeNl_6EG.mjs → renderer-CJraQlV-.mjs} +2 -2
  161. package/dist/{renderer-BeNl_6EG.mjs.map → renderer-CJraQlV-.mjs.map} +1 -1
  162. package/dist/renderer-CKMtHGZh.mjs +5 -0
  163. package/dist/renderer-CLzicoiy.mjs +5 -0
  164. package/dist/renderer-CM2A4BHd.mjs +5 -0
  165. package/dist/{renderer-DtMVitEF.mjs → renderer-COWGWtob.mjs} +2 -2
  166. package/dist/{renderer-DtMVitEF.mjs.map → renderer-COWGWtob.mjs.map} +1 -1
  167. package/dist/{renderer-CT3zkfbf.mjs → renderer-COxG2XGf.mjs} +2 -2
  168. package/dist/{renderer-CT3zkfbf.mjs.map → renderer-COxG2XGf.mjs.map} +1 -1
  169. package/dist/{renderer-DNxWOz8Q.mjs → renderer-CQDCIsQm.mjs} +2 -2
  170. package/dist/{renderer-DNxWOz8Q.mjs.map → renderer-CQDCIsQm.mjs.map} +1 -1
  171. package/dist/{renderer-C5AoaymD.mjs → renderer-CRUeag8i.mjs} +3 -3
  172. package/dist/{renderer-C5AoaymD.mjs.map → renderer-CRUeag8i.mjs.map} +1 -1
  173. package/dist/{renderer-ngmYIIob.mjs → renderer-CWVput06.mjs} +3 -3
  174. package/dist/{renderer-ngmYIIob.mjs.map → renderer-CWVput06.mjs.map} +1 -1
  175. package/dist/renderer-CZlHjcxr.mjs +5 -0
  176. package/dist/{renderer-0rveCDm-.mjs → renderer-CbbnBLOB.mjs} +3 -3
  177. package/dist/{renderer-0rveCDm-.mjs.map → renderer-CbbnBLOB.mjs.map} +1 -1
  178. package/dist/renderer-CbimvSU8.mjs +5 -0
  179. package/dist/renderer-Ccvc63yd.mjs +5 -0
  180. package/dist/renderer-Cdp-SGfq.mjs +5 -0
  181. package/dist/renderer-CeTcSs3e.mjs +5 -0
  182. package/dist/{renderer-Brmbl12Y.mjs → renderer-CfLZein2.mjs} +3 -3
  183. package/dist/{renderer-Brmbl12Y.mjs.map → renderer-CfLZein2.mjs.map} +1 -1
  184. package/dist/{renderer-BJ8ea92W.mjs → renderer-Ch-q1O-q.mjs} +3 -3
  185. package/dist/{renderer-BJ8ea92W.mjs.map → renderer-Ch-q1O-q.mjs.map} +1 -1
  186. package/dist/{renderer-CP108ABB.mjs → renderer-Ch5JvJWl.mjs} +2 -2
  187. package/dist/{renderer-CP108ABB.mjs.map → renderer-Ch5JvJWl.mjs.map} +1 -1
  188. package/dist/{renderer-47y12Z37.mjs → renderer-ChtEzq-R.mjs} +2 -2
  189. package/dist/{renderer-47y12Z37.mjs.map → renderer-ChtEzq-R.mjs.map} +1 -1
  190. package/dist/{renderer-DhyMfG1v.mjs → renderer-Cj9nTC5l.mjs} +3 -3
  191. package/dist/{renderer-DhyMfG1v.mjs.map → renderer-Cj9nTC5l.mjs.map} +1 -1
  192. package/dist/{renderer-BDzn1AKF.mjs → renderer-CqT8HsSS.mjs} +2 -2
  193. package/dist/{renderer-BDzn1AKF.mjs.map → renderer-CqT8HsSS.mjs.map} +1 -1
  194. package/dist/{renderer-B7G1KohJ.mjs → renderer-CuQjMhdV.mjs} +2 -2
  195. package/dist/renderer-CvNuu52U.mjs +5 -0
  196. package/dist/renderer-CwciC0oI.mjs +5 -0
  197. package/dist/renderer-CysLUbIr.mjs +5 -0
  198. package/dist/{renderer-Cm0tsbQH.mjs → renderer-Cz30EVws.mjs} +2 -2
  199. package/dist/{renderer-Cm0tsbQH.mjs.map → renderer-Cz30EVws.mjs.map} +1 -1
  200. package/dist/renderer-D3A22Vxb.mjs +5 -0
  201. package/dist/renderer-D5SY9EmA.mjs +5 -0
  202. package/dist/renderer-D8h3ZvaE.mjs +5 -0
  203. package/dist/renderer-DE-B6N9n.mjs +5 -0
  204. package/dist/renderer-DETZTI7t.mjs +5 -0
  205. package/dist/{renderer-nHS3Sius.mjs → renderer-DHoX-5U_.mjs} +3 -3
  206. package/dist/{renderer-nHS3Sius.mjs.map → renderer-DHoX-5U_.mjs.map} +1 -1
  207. package/dist/{renderer-BWSRryIA.mjs → renderer-DOkm0Ycd.mjs} +2 -2
  208. package/dist/{renderer-BWSRryIA.mjs.map → renderer-DOkm0Ycd.mjs.map} +1 -1
  209. package/dist/{renderer-BHYJlK6H.d.mts → renderer-DU3f6ZrS.d.mts} +2 -2
  210. package/dist/{renderer-BHYJlK6H.d.mts.map → renderer-DU3f6ZrS.d.mts.map} +1 -1
  211. package/dist/{renderer-BpVOk9ux.mjs → renderer-DUzv-shq.mjs} +2 -2
  212. package/dist/{renderer-BpVOk9ux.mjs.map → renderer-DUzv-shq.mjs.map} +1 -1
  213. package/dist/renderer-DWnDj0IM.mjs +5 -0
  214. package/dist/renderer-DcGUIbQF.mjs +5 -0
  215. package/dist/renderer-Dfq6FoNO.mjs +5 -0
  216. package/dist/renderer-DhasXW6S.mjs +3 -0
  217. package/dist/{renderer-NRMlYkX6.mjs → renderer-DhnOWnEA.mjs} +3 -3
  218. package/dist/{renderer-NRMlYkX6.mjs.map → renderer-DhnOWnEA.mjs.map} +1 -1
  219. package/dist/{renderer-COgwYqev.mjs → renderer-Dhy1XHzz.mjs} +3 -3
  220. package/dist/{renderer-COgwYqev.mjs.map → renderer-Dhy1XHzz.mjs.map} +1 -1
  221. package/dist/renderer-DjCvpsV_.mjs +5 -0
  222. package/dist/{renderer-BfZNIiSv.mjs → renderer-DjJshz9Y.mjs} +2 -2
  223. package/dist/{renderer-BfZNIiSv.mjs.map → renderer-DjJshz9Y.mjs.map} +1 -1
  224. package/dist/{renderer-CKo7VR8x.mjs → renderer-DmTUIdus.mjs} +3 -3
  225. package/dist/{renderer-CKo7VR8x.mjs.map → renderer-DmTUIdus.mjs.map} +1 -1
  226. package/dist/{renderer-Baw6Utxi.mjs → renderer-Dq7AioJa.mjs} +2 -2
  227. package/dist/{renderer-Baw6Utxi.mjs.map → renderer-Dq7AioJa.mjs.map} +1 -1
  228. package/dist/renderer-DrAaM6JD.mjs +5 -0
  229. package/dist/{renderer-D-GWBoVT.mjs → renderer-Dt4sqNEu.mjs} +2 -2
  230. package/dist/{renderer-D-GWBoVT.mjs.map → renderer-Dt4sqNEu.mjs.map} +1 -1
  231. package/dist/{renderer-FYOL5Za6.mjs → renderer-Dtcs4idV.mjs} +3 -3
  232. package/dist/{renderer-FYOL5Za6.mjs.map → renderer-Dtcs4idV.mjs.map} +1 -1
  233. package/dist/renderer-Dxlv8LYm.mjs +5 -0
  234. package/dist/{renderer-D-RhYvVl.mjs → renderer-Gj8SrE2W.mjs} +2 -2
  235. package/dist/{renderer-D-RhYvVl.mjs.map → renderer-Gj8SrE2W.mjs.map} +1 -1
  236. package/dist/{renderer-D_j1WKMD.mjs → renderer-KfnXDJS0.mjs} +3 -3
  237. package/dist/{renderer-D_j1WKMD.mjs.map → renderer-KfnXDJS0.mjs.map} +1 -1
  238. package/dist/{renderer-Bpm145BW.mjs → renderer-MXVlg4p5.mjs} +3 -3
  239. package/dist/{renderer-Bpm145BW.mjs.map → renderer-MXVlg4p5.mjs.map} +1 -1
  240. package/dist/{renderer-Nnmi8Gt6.mjs → renderer-N2b6QZ1E.mjs} +3 -3
  241. package/dist/{renderer-Nnmi8Gt6.mjs.map → renderer-N2b6QZ1E.mjs.map} +1 -1
  242. package/dist/renderer-Pb43OO2t.mjs +5 -0
  243. package/dist/{renderer-Ca1KjNCO.mjs → renderer-Q7gDzm8c.mjs} +2 -2
  244. package/dist/{renderer-Ca1KjNCO.mjs.map → renderer-Q7gDzm8c.mjs.map} +1 -1
  245. package/dist/{renderer-D2wNFNRf.mjs → renderer-RCiANtRV.mjs} +2 -2
  246. package/dist/{renderer-D2wNFNRf.mjs.map → renderer-RCiANtRV.mjs.map} +1 -1
  247. package/dist/{renderer-Cqb7PGrI.mjs → renderer-Sig9nZcI.mjs} +2 -2
  248. package/dist/renderer-VQbm-cGr.mjs +5 -0
  249. package/dist/{renderer-W1bVNVR6.mjs → renderer-fabBgwQX.mjs} +3 -3
  250. package/dist/{renderer-W1bVNVR6.mjs.map → renderer-fabBgwQX.mjs.map} +1 -1
  251. package/dist/{renderer-zRq0j6Xy.mjs → renderer-g-0PCNoo.mjs} +3 -3
  252. package/dist/{renderer-zRq0j6Xy.mjs.map → renderer-g-0PCNoo.mjs.map} +1 -1
  253. package/dist/{renderer-2PjR3w-q.mjs → renderer-gmHKIbKI.mjs} +3 -3
  254. package/dist/{renderer-2PjR3w-q.mjs.map → renderer-gmHKIbKI.mjs.map} +1 -1
  255. package/dist/{renderer-03mYJLgX.mjs → renderer-kVZwiRoK.mjs} +3 -3
  256. package/dist/{renderer-03mYJLgX.mjs.map → renderer-kVZwiRoK.mjs.map} +1 -1
  257. package/dist/renderer-oPMypDM1.mjs +5 -0
  258. package/dist/{renderer-DcAKDAnS.mjs → renderer-p7tgxP-A.mjs} +3 -3
  259. package/dist/{renderer-DcAKDAnS.mjs.map → renderer-p7tgxP-A.mjs.map} +1 -1
  260. package/dist/{renderer-jUKdkmG5.mjs → renderer-tvYj306A.mjs} +81 -78
  261. package/dist/renderer-tvYj306A.mjs.map +1 -0
  262. package/dist/renderer-xvWGpVyp.mjs +5 -0
  263. package/dist/renderer-zafZbD6Q.mjs +5 -0
  264. package/dist/{renderers-CP8CFWDs-CshljORp.mjs → renderers-CP8CFWDs-DLjtjrwx.mjs} +2 -2
  265. package/dist/{renderers-CP8CFWDs-CshljORp.mjs.map → renderers-CP8CFWDs-DLjtjrwx.mjs.map} +1 -1
  266. package/dist/sam/index.d.mts +2 -2
  267. package/dist/sam/index.mjs +1 -1
  268. package/dist/signals/index.d.mts +4 -4
  269. package/dist/signals/index.mjs +4 -4
  270. package/dist/{src-BU6vm9sP-DdTHmCr4.mjs → src-B23p_eh7-Cj6-lvV6.mjs} +293 -6
  271. package/dist/src-B23p_eh7-Cj6-lvV6.mjs.map +1 -0
  272. package/dist/{src-Dy4gnc6w.mjs → src-CoHAjviq.mjs} +1349 -177
  273. package/dist/src-CoHAjviq.mjs.map +1 -0
  274. package/dist/storage/index.mjs +1 -1
  275. package/package.json +63 -60
  276. package/dist/dist--Uu5bQ_6.mjs.map +0 -1
  277. package/dist/dist-CiTgmfUw.mjs.map +0 -1
  278. package/dist/fonts-OW3yAfO5.mjs.map +0 -1
  279. package/dist/index-9xte4JgL.d.mts.map +0 -1
  280. package/dist/index-Bv7gxGK1.d.mts.map +0 -1
  281. package/dist/index-C5sgRLlG.d.mts.map +0 -1
  282. package/dist/index-C7-p9zwU.d.mts.map +0 -1
  283. package/dist/index-CRaydvLi.d.mts.map +0 -1
  284. package/dist/index-D1FqV1eu.d.mts.map +0 -1
  285. package/dist/preview-D7BGmE1E.mjs +0 -2446
  286. package/dist/preview-D7BGmE1E.mjs.map +0 -1
  287. package/dist/preview-engine/chunk-5DZTPUMH.mjs +0 -2568
  288. package/dist/preview-engine/chunk-NCQHOGZK.mjs +0 -3
  289. package/dist/preview-engine/chunk-PH3UUX6A.mjs +0 -138
  290. package/dist/preview-engine/chunk-UPZURPJY.mjs +0 -2227
  291. package/dist/preview-engine/renderers-DLJOA3BM.mjs +0 -228
  292. package/dist/program-tFKCWU2j.mjs.map +0 -1
  293. package/dist/renderer-6_bzbbXt.mjs +0 -5
  294. package/dist/renderer-8M-9G6F_.mjs +0 -5
  295. package/dist/renderer-B5OzKvF8.mjs +0 -5
  296. package/dist/renderer-BBCZ2qbE.mjs +0 -5
  297. package/dist/renderer-BChbxCux.mjs +0 -5
  298. package/dist/renderer-BGeMPr8C.mjs +0 -5
  299. package/dist/renderer-BPQ8Pkjb.mjs +0 -5
  300. package/dist/renderer-BTRpA3HD.mjs +0 -5
  301. package/dist/renderer-BVIXKfbC.mjs.map +0 -1
  302. package/dist/renderer-BVsECSn-.mjs +0 -5
  303. package/dist/renderer-Bgos68gc.mjs +0 -6
  304. package/dist/renderer-BjHOvoqO.mjs +0 -5
  305. package/dist/renderer-BjXMPPlV.mjs +0 -5
  306. package/dist/renderer-Byobxqkv.mjs +0 -5
  307. package/dist/renderer-CKrsg3EG.mjs +0 -5
  308. package/dist/renderer-Cj875NuH.mjs +0 -5
  309. package/dist/renderer-CnmzJoMv.mjs +0 -5
  310. package/dist/renderer-CtklDaMg.mjs +0 -5
  311. package/dist/renderer-D1tK3in_.mjs +0 -5
  312. package/dist/renderer-D2yc9P61.mjs +0 -5
  313. package/dist/renderer-D4v-JvSr.mjs +0 -5
  314. package/dist/renderer-D5yp74NL.mjs +0 -3
  315. package/dist/renderer-D7WRWDwB.mjs +0 -5
  316. package/dist/renderer-DGvA0tdB.mjs +0 -5
  317. package/dist/renderer-DO7v5Sdm.mjs +0 -5
  318. package/dist/renderer-DRVvt7-V.mjs +0 -5
  319. package/dist/renderer-DYMCd3jL.mjs +0 -5
  320. package/dist/renderer-DmHKw-MM.mjs +0 -5
  321. package/dist/renderer-DoDsuZ6G.mjs +0 -5
  322. package/dist/renderer-EpgclS70.mjs +0 -5
  323. package/dist/renderer-GroKiYyK.mjs +0 -5
  324. package/dist/renderer-MQ5K_xIS.mjs +0 -5
  325. package/dist/renderer-U43SflML.mjs +0 -5
  326. package/dist/renderer-UqOmBgCv.mjs +0 -5
  327. package/dist/renderer-XLULgJM0.mjs +0 -5
  328. package/dist/renderer-jUKdkmG5.mjs.map +0 -1
  329. package/dist/renderer-lNjxY1GG.mjs +0 -5
  330. package/dist/renderer-ukufL7pl.mjs +0 -5
  331. package/dist/renderer-wb0NCKdF.mjs +0 -5
  332. package/dist/src-BU6vm9sP-DdTHmCr4.mjs.map +0 -1
  333. package/dist/src-Dy4gnc6w.mjs.map +0 -1
@@ -1,14 +1,167 @@
1
1
  import { $ as FrameSignal, $n as ToonShading, At as MediaTimeRemapInput, Et as MediaSourceInput, Ft as MeshAudioDeformConfig, I as Effect$1, Jn as TextSpan, M as DeflickerOptions, Nt as MediaTimeSignalRemap, O as DataType, Sn as Signal, Z as FrameContext, _n as ResolvedMediaTimeRemap, en as NormalRelightingOptions, fn as ProgrammaticSignal, fr as VirtualMediaData, gn as RenderDiagnostic, gr as VisionTask, it as GeometryOutlineOptions, yt as MediaMetadata, z as EffectDomain } from "./index-C-V6CAhP.mjs";
2
- import { A as PolyhedronGeometryOptions, F as RoundedBoxGeometryOptions, G as TorusGeometryOptions, H as SlugFontCache, K as TubeGeometryOptions, Nn as TypewriterAnimator, P as RingGeometryOptions, R as ShardGeometryOptions, Rr as Path3D, Vt as KineticMarqueeConfig, W as SphereGeometryOptions, _ as ExtrudeShapeGeometryOptions, b as LatheGeometryOptions, ft as AdvancedTextAnimator, h as CylinderGeometryOptions, k as Points3DGeometryOptions, m as CapsuleGeometryOptions, q as TubePathSpec, ut as AETextAnimator, x as Line3DGeometryOptions, yn as TextPathOptions } from "./index-CRaydvLi.mjs";
3
- import { i as RegisterFontOptions } from "./index-C5sgRLlG.mjs";
4
- import { F as VisionNode, J as TensorPipeline, O as VisionAnalysisReport, a as ClipPose, c as InstanceMask, g as ObjectTrackSignals, k as VisionBundle, l as LandmarkCoordinateSignals, o as ClipSubjectSource, r as COCO17_KEYPOINT_NAMES, s as DepthMap, u as MaskTrackSignals, v as PinToLandmarkOptions, y as PinToObjectOptions } from "./index-D1FqV1eu.mjs";
5
- import { S as Sam3Options, p as Sam2Options } from "./index-CEKxvGY-.mjs";
6
- import { $n as ResizerScalerProps, $t as FlipProps, An as Paint, At as CameraParallax3DProps, B as PBRGlass, Bn as Pixelate, Bt as ContourProps, C as GradientMapProps, Cn as MeshWarp, Ct as AudioParametricEq, D as HalftoneScreen, Dn as NoiseGeneratorProps, Dt as CRT, En as NoiseGenerator, Et as AudioReverbProps, F as LevelsProps, Fn as Painterly, Ft as ColorBalance, G as SSAOProps, Gn as ProceduralVFXProps, Gt as DatamoshProps, H as Relight3D, Hn as Posterize, I as Modulate, In as PainterlyProps, It as ColorBalanceProps, J as SelectiveColorProps, Jn as RefineEdge, Jt as Dither, K as SelectiveColor, Kn as RGBSplit, Kt as DisplacementMap, L as ModulateProps, Ln as PatchHeal, Lt as ColorKey, M as HighPassProps, Mt as ChannelMergerProps, Nt as ChannelSplitter, O as HalftoneScreenProps, On as OpArt, Ot as CRTProps, P as Levels, Pt as ChannelSplitterProps, Q as TileOffset, Qn as ResizerScaler, Qt as Flip, R as MotionBlur, Rt as ColorKeyProps, S as GradientMap, Sn as MaskMathProps, St as AudioNoiseGateProps, Tn as MeshWarpProps, Tt as AudioReverb, U as Relight3DProps, Un as PosterizeProps, Ut as CornerPinProps, V as PBRGlassProps, Vn as PixelateProps, Vt as CornerPin, W as SSAO, Wn as ProceduralVFX, Wt as Datamosh, X as ShadowsHighlightsProps, Xn as RefractionCaustics3D, Xt as ExtractLUT, Y as ShadowsHighlights, Yn as RefineEdgeProps, Yt as DitherProps, Z as TemporalDeflicker, Zn as RefractionCaustics3DProps, Zt as ExtractLUTProps, _t as AudioDelay, a as ApplyLUTProps, an as KaleidoscopeProps, ar as Toon, b as FilmGrain, bn as LiquifyProps, bt as AudioFadeProps, c as Crop, cn as KenBurnsProps, cr as TrailsProps, dr as EffectProp, dt as Blur, en as Gooey, er as Rotate, et as TileOffsetProps, f as CurvesProps, ft as BlurProps, g as DepthOfFieldProps, gn as LayerStyleProps, gt as AudioCompressorProps, h as DepthOfField, ht as AudioCompressor, i as ApplyLUT, in as Kaleidoscope, it as VisionProps, j as HighPass, jn as PaintProps, jt as ChannelMerger, kn as OpArtProps, kt as CameraParallax3D, l as CropProps, ln as LayerStyle, lr as Vignette, m as DeflickerProps, mt as AsciiProps, n as AnyEffect, nn as Iridescence, nr as StereoPanning, nt as UnsharpMaskProps, on as KenBurns, or as ToonProps, p as CustomEffect, pt as Ascii, qn as RGBSplitProps, qt as DisplacementMapProps, r as AnyVisualEffect, rn as IridescenceProps, rr as StereoPanningProps, rt as Vision, sr as Trails, t as AnyAudioEffect, tn as GooeyProps, tr as RotateProps, tt as UnsharpMask, u as Curves, ur as VignetteProps, vn as Liquify, vt as AudioDelayProps, wt as AudioParametricEqProps, x as FilmGrainProps, xn as MaskMath, xt as AudioNoiseGate, yt as AudioFade, z as MotionBlurProps, zn as PatchHealProps, zt as Contour } from "./index-DoP6EiHj.mjs";
7
- import { _ as RenderProgress, b as VideoQaOptions, f as HeadlessMediaRenderer, t as FrameGridOptions, x as VideoQaReport } from "./index-C7-p9zwU.mjs";
2
+ import { $ as TubeGeometryOptions, A as PolyhedronGeometryOptions, Dn as TextPathOptions, F as RoundedBoxGeometryOptions, H as ShardGeometryOptions, J as SphereGeometryOptions, K as SlugFontCache, L as ScatterOptions, P as RingGeometryOptions, Q as TorusGeometryOptions, R as ScatterPoint, Vn as TypewriterAnimator, X as TerrainGeometryOptions, Yt as KineticMarqueeConfig, _ as ExtrudeShapeGeometryOptions, b as LatheGeometryOptions, bt as AdvancedTextAnimator, et as TubePathSpec, h as CylinderGeometryOptions, k as Points3DGeometryOptions, m as CapsuleGeometryOptions, oi as Path3D, vt as AETextAnimator, x as Line3DGeometryOptions, z as SdfGeometryOptions } from "./index-s2qQ8ifZ.mjs";
3
+ import { i as RegisterFontOptions } from "./index-TCtdSXd7.mjs";
4
+ import { A as VisionBundle, I as VisionNode, Y as TensorPipeline, _ as ObjectTrackSignals, a as ClipPose, b as PinToObjectOptions, c as InstanceMask, d as MatteRefineOptions, k as VisionAnalysisReport, l as LandmarkCoordinateSignals, o as ClipSubjectSource, r as COCO17_KEYPOINT_NAMES, s as DepthMap, u as MaskTrackSignals, y as PinToLandmarkOptions } from "./index-CMhkkc56.mjs";
5
+ import { S as Sam3Options, p as Sam2Options } from "./index-BHTycml5.mjs";
6
+ import { $n as ResizerScalerProps, $t as FlipProps, An as Paint, At as CameraParallax3DProps, B as PBRGlass, Bn as Pixelate, Bt as ContourProps, C as GradientMapProps, Cn as MeshWarp, Ct as AudioParametricEq, D as HalftoneScreen, Dn as NoiseGeneratorProps, Dt as CRT, En as NoiseGenerator, Et as AudioReverbProps, F as LevelsProps, Fn as Painterly, Ft as ColorBalance, G as SSAOProps, Gn as ProceduralVFXProps, Gt as DatamoshProps, H as Relight3D, Hn as Posterize, I as Modulate, In as PainterlyProps, It as ColorBalanceProps, J as SelectiveColorProps, Jn as RefineEdge, Jt as Dither, K as SelectiveColor, Kn as RGBSplit, Kt as DisplacementMap, L as ModulateProps, Ln as PatchHeal, Lt as ColorKey, M as HighPassProps, Mt as ChannelMergerProps, Nt as ChannelSplitter, O as HalftoneScreenProps, On as OpArt, Ot as CRTProps, P as Levels, Pt as ChannelSplitterProps, Q as TileOffset, Qn as ResizerScaler, Qt as Flip, R as MotionBlur, Rt as ColorKeyProps, S as GradientMap, Sn as MaskMathProps, St as AudioNoiseGateProps, Tn as MeshWarpProps, Tt as AudioReverb, U as Relight3DProps, Un as PosterizeProps, Ut as CornerPinProps, V as PBRGlassProps, Vn as PixelateProps, Vt as CornerPin, W as SSAO, Wn as ProceduralVFX, Wt as Datamosh, X as ShadowsHighlightsProps, Xn as RefractionCaustics3D, Xt as ExtractLUT, Y as ShadowsHighlights, Yn as RefineEdgeProps, Yt as DitherProps, Z as TemporalDeflicker, Zn as RefractionCaustics3DProps, Zt as ExtractLUTProps, _t as AudioDelay, a as ApplyLUTProps, an as KaleidoscopeProps, ar as Toon, b as FilmGrain, bn as LiquifyProps, bt as AudioFadeProps, c as Crop, cn as KenBurnsProps, cr as TrailsProps, dr as EffectProp, dt as Blur, en as Gooey, er as Rotate, et as TileOffsetProps, f as CurvesProps, ft as BlurProps, g as DepthOfFieldProps, gn as LayerStyleProps, gt as AudioCompressorProps, h as DepthOfField, ht as AudioCompressor, i as ApplyLUT, in as Kaleidoscope, it as VisionProps, j as HighPass, jn as PaintProps, jt as ChannelMerger, kn as OpArtProps, kt as CameraParallax3D, l as CropProps, ln as LayerStyle, lr as Vignette, m as DeflickerProps, mt as AsciiProps, n as AnyEffect, nn as Iridescence, nr as StereoPanning, nt as UnsharpMaskProps, on as KenBurns, or as ToonProps, p as CustomEffect, pt as Ascii, qn as RGBSplitProps, qt as DisplacementMapProps, r as AnyVisualEffect, rn as IridescenceProps, rr as StereoPanningProps, rt as Vision, sr as Trails, t as AnyAudioEffect, tn as GooeyProps, tr as RotateProps, tt as UnsharpMask, u as Curves, ur as VignetteProps, vn as Liquify, vt as AudioDelayProps, wt as AudioParametricEqProps, x as FilmGrainProps, xn as MaskMath, xt as AudioNoiseGate, yt as AudioFade, z as MotionBlurProps, zn as PatchHealProps, zt as Contour } from "./index-BcxxxwhV.mjs";
7
+ import { _ as RenderProgress, b as VideoQaOptions, f as HeadlessMediaRenderer, t as FrameGridOptions, x as VideoQaReport } from "./index-DhL7ckvs.mjs";
8
8
  import { z, z as z$2 } from "zod";
9
9
  import { Yoga } from "yoga-layout/load";
10
10
 
11
11
  //#region ../compositions/dist/program/index.d.mts
12
+ //#region src/program/character-schema.d.ts
13
+ /** A frame signal: anything with `get(ctx)` (`Signal.*`, audio, physics, vision). */
14
+ interface TrackSignal {
15
+ get(ctx?: unknown): number;
16
+ }
17
+ /**
18
+ * A number over time: constant, `[[frame, value], …]` keys, `(frame) =>
19
+ * value`, or a signal.
20
+ */
21
+ declare const NumberTrackSchema: z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>;
22
+ type NumberTrack = z.infer<typeof NumberTrackSchema>;
23
+ /**
24
+ * A point over time: `[x, y, z]` where each axis is a {@link NumberTrack}
25
+ * (so a constant, keys, a function or a signal per axis), `[[frame, x, y,
26
+ * z], …]` keys, or `(frame) => [x, y, z]`.
27
+ */
28
+ declare const Vec3TrackSchema: z.ZodUnion<readonly [z.ZodTuple<[z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>], null>, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => [number, number, number], (frame: number) => [number, number, number]>]>;
29
+ type Vec3Track = z.infer<typeof Vec3TrackSchema>;
30
+ declare const ModelAnimationLayerSchema: z.ZodObject<{
31
+ clip: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
32
+ weight: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
33
+ speed: z.ZodOptional<z.ZodNumber>;
34
+ timeOffset: z.ZodOptional<z.ZodNumber>;
35
+ mask: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
+ loop: z.ZodOptional<z.ZodBoolean>;
37
+ }, z.core.$strict>;
38
+ type ModelAnimationLayer = z.infer<typeof ModelAnimationLayerSchema>;
39
+ declare const TwoBoneIkSchema: z.ZodObject<{
40
+ chain: z.ZodTuple<[z.ZodString, z.ZodString, z.ZodString], null>;
41
+ target: z.ZodUnion<readonly [z.ZodTuple<[z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>], null>, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => [number, number, number], (frame: number) => [number, number, number]>]>;
42
+ poleTarget: z.ZodOptional<z.ZodUnion<readonly [z.ZodTuple<[z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>], null>, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => [number, number, number], (frame: number) => [number, number, number]>]>>;
43
+ weight: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
44
+ }, z.core.$strict>;
45
+ type TwoBoneIkConstraint = z.infer<typeof TwoBoneIkSchema>;
46
+ declare const LookAtSchema: z.ZodObject<{
47
+ joint: z.ZodString;
48
+ target: z.ZodUnion<readonly [z.ZodTuple<[z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>], null>, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => [number, number, number], (frame: number) => [number, number, number]>]>;
49
+ weight: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
50
+ maxAngleDeg: z.ZodOptional<z.ZodNumber>;
51
+ axis: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
52
+ }, z.core.$strict>;
53
+ type LookAtConstraint = z.infer<typeof LookAtSchema>;
54
+ /**
55
+ * A joint posed directly, in its own local frame: Euler degrees (applied
56
+ * Z, then Y, then X, like layers) and a translation offset in model units,
57
+ * on top of the animated pose (`"additive"`, default) or of the joint's rest
58
+ * pose (`"rest"`: clips no longer move it).
59
+ */
60
+ declare const JointPoseSchema: z.ZodObject<{
61
+ rotateX: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
62
+ rotateY: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
63
+ rotateZ: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
64
+ x: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
65
+ y: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
66
+ z: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
67
+ weight: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
68
+ mode: z.ZodOptional<z.ZodEnum<{
69
+ additive: "additive";
70
+ rest: "rest";
71
+ }>>;
72
+ }, z.core.$strict>;
73
+ type JointPose = z.infer<typeof JointPoseSchema>;
74
+ /**
75
+ * Points a bone along a scene direction (the joint turns so the bone,
76
+ * toward its first child, or its local `axis` lies along it). Retargeting a
77
+ * performer's pose is a chain of aims, parents first.
78
+ */
79
+ declare const AimSchema: z.ZodObject<{
80
+ joint: z.ZodString;
81
+ direction: z.ZodUnion<readonly [z.ZodTuple<[z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>, z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>], null>, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => [number, number, number], (frame: number) => [number, number, number]>]>;
82
+ weight: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>, z.ZodCustom<(frame: number) => number, (frame: number) => number>, z.ZodCustom<TrackSignal, TrackSignal>]>>;
83
+ axis: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
84
+ }, z.core.$strict>;
85
+ type AimConstraint = z.infer<typeof AimSchema>;
86
+ /**
87
+ * A joint driven by another: it turns by a share of the source joint's turn
88
+ * from its rest, per local axis (Euler degrees, Z then Y then X). Applied
89
+ * after look-ats, before IK, so eyelids follow eyes a `lookAt` aims.
90
+ */
91
+ declare const JointDriverSchema: z.ZodObject<{
92
+ joint: z.ZodString;
93
+ from: z.ZodString;
94
+ rotate: z.ZodObject<{
95
+ x: z.ZodOptional<z.ZodNumber>;
96
+ y: z.ZodOptional<z.ZodNumber>;
97
+ z: z.ZodOptional<z.ZodNumber>;
98
+ }, z.core.$strict>;
99
+ }, z.core.$strict>;
100
+ type JointDriver = z.infer<typeof JointDriverSchema>;
101
+ declare const SpringBoneChainSchema: z.ZodObject<{
102
+ joints: z.ZodArray<z.ZodString>;
103
+ stiffness: z.ZodOptional<z.ZodNumber>;
104
+ damping: z.ZodOptional<z.ZodNumber>;
105
+ gravity: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
106
+ }, z.core.$strict>;
107
+ type SpringBoneChain = z.infer<typeof SpringBoneChainSchema>;
108
+ declare const CrowdSchema: z.ZodObject<{
109
+ clips: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
110
+ fps: z.ZodOptional<z.ZodNumber>;
111
+ seed: z.ZodOptional<z.ZodNumber>;
112
+ speedRange: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
113
+ phase: z.ZodOptional<z.ZodEnum<{
114
+ random: "random";
115
+ sync: "sync";
116
+ }>>;
117
+ }, z.core.$strict>;
118
+ type CrowdConfig = z.infer<typeof CrowdSchema>;
119
+ //#endregion
120
+ //#region src/program/procedural-schema.d.ts
121
+
122
+ declare const WindSchema: z.ZodObject<{
123
+ amplitudeDeg: z.ZodOptional<z.ZodNumber>;
124
+ frequency: z.ZodOptional<z.ZodNumber>;
125
+ direction: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
126
+ waveScale: z.ZodOptional<z.ZodNumber>;
127
+ }, z.core.$strict>;
128
+ type WindConfig = z.infer<typeof WindSchema>;
129
+ declare const Scatter3DSchema: z.ZodObject<{
130
+ surface: z.ZodCustom<Record<string, unknown>, Record<string, unknown>>;
131
+ count: z.ZodNumber;
132
+ minDistance: z.ZodOptional<z.ZodNumber>;
133
+ seed: z.ZodOptional<z.ZodNumber>;
134
+ slopeRange: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
135
+ elevationRange: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
136
+ alignToNormal: z.ZodOptional<z.ZodNumber>;
137
+ scaleRange: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
138
+ randomYaw: z.ZodOptional<z.ZodBoolean>;
139
+ exclude: z.ZodOptional<z.ZodArray<z.ZodObject<{
140
+ x: z.ZodNumber;
141
+ z: z.ZodNumber;
142
+ radius: z.ZodNumber;
143
+ falloff: z.ZodOptional<z.ZodNumber>;
144
+ }, z.core.$strict>>>;
145
+ sink: z.ZodOptional<z.ZodNumber>;
146
+ }, z.core.$strict>;
147
+ type Scatter3DSpec = z.infer<typeof Scatter3DSchema>;
148
+ /** A layer drawn offscreen every frame and wrapped onto a model's surface. */
149
+
150
+ /**
151
+ * Voronoi destruction (`world.fracture`): the model is cut into `cells`
152
+ * pieces, drawn as one rigidly skinned mesh posed per frame from `track`.
153
+ * Without a track the pieces rest in place and the model looks whole.
154
+ */
155
+ declare const Fracture3DSchema: z.ZodObject<{
156
+ cells: z.ZodOptional<z.ZodNumber>;
157
+ seed: z.ZodOptional<z.ZodNumber>;
158
+ impactPoint: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
159
+ interiorColor: z.ZodOptional<z.ZodString>;
160
+ interiorRoughness: z.ZodOptional<z.ZodNumber>;
161
+ track: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
162
+ }, z.core.$strict>;
163
+ type Fracture3DSpec = z.infer<typeof Fracture3DSchema>;
164
+ //#endregion
12
165
  //#region src/program/schema.d.ts
13
166
  /** number px | "auto" (intrinsic) | "fit" (shrink-wrap) | "fill" (parent extent). */
14
167
  declare const SizeSpecSchema: z.ZodUnion<readonly [z.ZodNumber, z.ZodEnum<{
@@ -37,38 +190,38 @@ type ProgramEffect = Effect$1<object, string, EffectDomain> | EffectSpec | (Reco
37
190
  declare const AnimatablePropSchema: z.ZodEnum<{
38
191
  x: "x";
39
192
  y: "y";
40
- scale: "scale";
41
- rotation: "rotation";
42
- opacity: "opacity";
43
193
  width: "width";
44
194
  height: "height";
195
+ rotation: "rotation";
196
+ scale: "scale";
197
+ opacity: "opacity";
198
+ trimStart: "trimStart";
199
+ trimEnd: "trimEnd";
200
+ text: "text";
201
+ fontSize: "fontSize";
202
+ fill: "fill";
203
+ letterSpacing: "letterSpacing";
204
+ padding: "padding";
205
+ strokeWidth: "strokeWidth";
206
+ borderColor: "borderColor";
207
+ borderWidth: "borderWidth";
45
208
  volume: "volume";
209
+ color: "color";
210
+ offset: "offset";
46
211
  hidden: "hidden";
47
212
  muted: "muted";
48
213
  gap: "gap";
49
- padding: "padding";
50
214
  borderRadius: "borderRadius";
51
- fontSize: "fontSize";
52
- text: "text";
53
- fill: "fill";
54
- color: "color";
55
- letterSpacing: "letterSpacing";
56
215
  d: "d";
57
- trimStart: "trimStart";
58
- trimEnd: "trimEnd";
59
216
  trimOffset: "trimOffset";
60
- strokeWidth: "strokeWidth";
61
217
  strokeDashOffset: "strokeDashOffset";
62
218
  cornerRadius: "cornerRadius";
63
219
  starInnerRadiusRatio: "starInnerRadiusRatio";
64
220
  fillColor: "fillColor";
65
221
  strokeColor: "strokeColor";
66
- borderColor: "borderColor";
67
- borderWidth: "borderWidth";
68
222
  motionBlurShutter: "motionBlurShutter";
69
223
  rangeStart: "rangeStart";
70
224
  rangeEnd: "rangeEnd";
71
- offset: "offset";
72
225
  animatorRangeStart: "animatorRangeStart";
73
226
  animatorRangeEnd: "animatorRangeEnd";
74
227
  animatorOffset: "animatorOffset";
@@ -99,6 +252,7 @@ declare const AnimatablePropSchema: z.ZodEnum<{
99
252
  maxBlurRadius: "maxBlurRadius";
100
253
  shakeTranslation: "shakeTranslation";
101
254
  shakeRotation: "shakeRotation";
255
+ relativitySpeed: "relativitySpeed";
102
256
  orbitRadius: "orbitRadius";
103
257
  orbitAzimuth: "orbitAzimuth";
104
258
  orbitElevation: "orbitElevation";
@@ -127,17 +281,35 @@ declare const AnimatablePropSchema: z.ZodEnum<{
127
281
  scaleY: "scaleY";
128
282
  emissive: "emissive";
129
283
  emissiveIntensity: "emissiveIntensity";
284
+ clearcoat: "clearcoat";
285
+ clearcoatRoughness: "clearcoatRoughness";
286
+ anisotropy: "anisotropy";
287
+ anisotropyRotation: "anisotropyRotation";
288
+ subsurface: "subsurface";
289
+ subsurfaceColor: "subsurfaceColor";
290
+ sheen: "sheen";
291
+ sheenColor: "sheenColor";
292
+ sheenRoughness: "sheenRoughness";
293
+ iridescence: "iridescence";
294
+ iridescenceThickness: "iridescenceThickness";
295
+ iridescenceIor: "iridescenceIor";
296
+ triplanarScale: "triplanarScale";
297
+ triplanarSharpness: "triplanarSharpness";
130
298
  exposure: "exposure";
299
+ volumetricFogDensity: "volumetricFogDensity";
300
+ volumetricFogAnisotropy: "volumetricFogAnisotropy";
301
+ volumetricFogNoiseStrength: "volumetricFogNoiseStrength";
131
302
  }>;
132
303
  type AnimatableProp = z.infer<typeof AnimatablePropSchema>;
133
304
  type SpatialAnimatableProp = "x" | "y" | "z" | "scale" | "scaleX" | "scaleY" | "scaleZ" | "rotation" | "rotateX" | "rotateY" | "rotateZ" | "opacity" | "width" | "height" | "hidden" | "perspective" | "perspectiveOriginX" | "perspectiveOriginY" | "translateZ" | "motionBlurShutter";
134
- type BoxAnimatableProp = SpatialAnimatableProp | "gap" | "padding" | "borderRadius" | "fill" | "color" | "borderColor" | "borderWidth" | "shininess" | "roughness" | "specularIntensity" | "ambientIntensity" | "metallic" | "ior" | "dispersion" | "transmission" | "fresnelPower" | "emissive" | "emissiveIntensity" | "envIntensity" | "exposure";
305
+ type MaterialAnimatableProp = "shininess" | "roughness" | "specularIntensity" | "ambientIntensity" | "metallic" | "ior" | "dispersion" | "transmission" | "fresnelPower" | "emissive" | "emissiveIntensity" | "clearcoat" | "clearcoatRoughness" | "anisotropy" | "anisotropyRotation" | "subsurface" | "subsurfaceColor" | "sheen" | "sheenColor" | "sheenRoughness" | "iridescence" | "iridescenceThickness" | "iridescenceIor" | "triplanarScale" | "triplanarSharpness" | "envIntensity" | "exposure";
306
+ type BoxAnimatableProp = SpatialAnimatableProp | MaterialAnimatableProp | "gap" | "padding" | "borderRadius" | "fill" | "color" | "borderColor" | "borderWidth";
135
307
  type TextAnimatableProp = SpatialAnimatableProp | "text" | "fontSize" | "letterSpacing" | "fill" | "color" | "rangeStart" | "rangeEnd" | "offset" | "animatorRangeStart" | "animatorRangeEnd" | "animatorOffset" | "firstMargin" | "lastMargin" | "baselineShift";
136
308
  type ShapeAnimatableProp = SpatialAnimatableProp | "d" | "trimStart" | "trimEnd" | "trimOffset" | "strokeWidth" | "strokeDashOffset" | "cornerRadius" | "starInnerRadiusRatio" | "fillColor" | "strokeColor" | "borderColor" | "borderWidth";
137
309
  type MediaAnimatableProp = SpatialAnimatableProp | "volume" | "muted";
138
- type CameraAnimatableProp = SpatialAnimatableProp | "cameraX" | "cameraY" | "cameraZ" | "targetX" | "targetY" | "targetZ" | "cameraPitch" | "cameraYaw" | "cameraRoll" | "cameraFov" | "cameraZoom" | "focalLength" | "focusDistance" | "fStop" | "maxBlurRadius" | "shakeTranslation" | "shakeRotation" | "orbitRadius" | "orbitAzimuth" | "orbitElevation";
139
- type LightAnimatableProp = SpatialAnimatableProp | "intensity" | "angle" | "radius" | "penumbra" | "decay" | "color";
140
- type Model3DAnimatableProp = SpatialAnimatableProp | "animationProgress" | "animationTime" | "animationSpeed" | "wireframe";
310
+ type CameraAnimatableProp = SpatialAnimatableProp | "cameraX" | "cameraY" | "cameraZ" | "targetX" | "targetY" | "targetZ" | "cameraPitch" | "cameraYaw" | "cameraRoll" | "cameraFov" | "cameraZoom" | "focalLength" | "focusDistance" | "fStop" | "maxBlurRadius" | "shakeTranslation" | "shakeRotation" | "relativitySpeed" | "orbitRadius" | "orbitAzimuth" | "orbitElevation";
311
+ type LightAnimatableProp = SpatialAnimatableProp | "targetX" | "targetY" | "targetZ" | "intensity" | "angle" | "radius" | "penumbra" | "decay" | "color" | "exposure" | "volumetricFogDensity" | "volumetricFogAnisotropy" | "volumetricFogNoiseStrength";
312
+ type Model3DAnimatableProp = SpatialAnimatableProp | MaterialAnimatableProp | "color" | "animationProgress" | "animationTime" | "animationSpeed" | "wireframe";
141
313
  type AnimatablePropsFor<TNode> = TNode extends {
142
314
  kind: "text";
143
315
  } ? TextAnimatableProp : TNode extends {
@@ -178,6 +350,7 @@ declare const MaterialTypeSchema: z.ZodEnum<{
178
350
  type MaterialType = z.infer<typeof MaterialTypeSchema>;
179
351
  declare const EaseRefSchema: z.ZodObject<{
180
352
  name: z.ZodEnum<{
353
+ bounce: "bounce";
181
354
  none: "none";
182
355
  power1: "power1";
183
356
  power2: "power2";
@@ -187,7 +360,6 @@ declare const EaseRefSchema: z.ZodObject<{
187
360
  expo: "expo";
188
361
  back: "back";
189
362
  elastic: "elastic";
190
- bounce: "bounce";
191
363
  spring: "spring";
192
364
  cubic: "cubic";
193
365
  hold: "hold";
@@ -206,6 +378,7 @@ declare const KeyframeSchema: z.ZodObject<{
206
378
  value: z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString]>;
207
379
  ease: z.ZodOptional<z.ZodObject<{
208
380
  name: z.ZodEnum<{
381
+ bounce: "bounce";
209
382
  none: "none";
210
383
  power1: "power1";
211
384
  power2: "power2";
@@ -215,7 +388,6 @@ declare const KeyframeSchema: z.ZodObject<{
215
388
  expo: "expo";
216
389
  back: "back";
217
390
  elastic: "elastic";
218
- bounce: "bounce";
219
391
  spring: "spring";
220
392
  cubic: "cubic";
221
393
  hold: "hold";
@@ -295,38 +467,38 @@ declare const AnimationTrackSchema: z.ZodObject<{
295
467
  prop: z.ZodEnum<{
296
468
  x: "x";
297
469
  y: "y";
298
- scale: "scale";
299
- rotation: "rotation";
300
- opacity: "opacity";
301
470
  width: "width";
302
471
  height: "height";
472
+ rotation: "rotation";
473
+ scale: "scale";
474
+ opacity: "opacity";
475
+ trimStart: "trimStart";
476
+ trimEnd: "trimEnd";
477
+ text: "text";
478
+ fontSize: "fontSize";
479
+ fill: "fill";
480
+ letterSpacing: "letterSpacing";
481
+ padding: "padding";
482
+ strokeWidth: "strokeWidth";
483
+ borderColor: "borderColor";
484
+ borderWidth: "borderWidth";
303
485
  volume: "volume";
486
+ color: "color";
487
+ offset: "offset";
304
488
  hidden: "hidden";
305
489
  muted: "muted";
306
490
  gap: "gap";
307
- padding: "padding";
308
491
  borderRadius: "borderRadius";
309
- fontSize: "fontSize";
310
- text: "text";
311
- fill: "fill";
312
- color: "color";
313
- letterSpacing: "letterSpacing";
314
492
  d: "d";
315
- trimStart: "trimStart";
316
- trimEnd: "trimEnd";
317
493
  trimOffset: "trimOffset";
318
- strokeWidth: "strokeWidth";
319
494
  strokeDashOffset: "strokeDashOffset";
320
495
  cornerRadius: "cornerRadius";
321
496
  starInnerRadiusRatio: "starInnerRadiusRatio";
322
497
  fillColor: "fillColor";
323
498
  strokeColor: "strokeColor";
324
- borderColor: "borderColor";
325
- borderWidth: "borderWidth";
326
499
  motionBlurShutter: "motionBlurShutter";
327
500
  rangeStart: "rangeStart";
328
501
  rangeEnd: "rangeEnd";
329
- offset: "offset";
330
502
  animatorRangeStart: "animatorRangeStart";
331
503
  animatorRangeEnd: "animatorRangeEnd";
332
504
  animatorOffset: "animatorOffset";
@@ -357,6 +529,7 @@ declare const AnimationTrackSchema: z.ZodObject<{
357
529
  maxBlurRadius: "maxBlurRadius";
358
530
  shakeTranslation: "shakeTranslation";
359
531
  shakeRotation: "shakeRotation";
532
+ relativitySpeed: "relativitySpeed";
360
533
  orbitRadius: "orbitRadius";
361
534
  orbitAzimuth: "orbitAzimuth";
362
535
  orbitElevation: "orbitElevation";
@@ -385,7 +558,24 @@ declare const AnimationTrackSchema: z.ZodObject<{
385
558
  scaleY: "scaleY";
386
559
  emissive: "emissive";
387
560
  emissiveIntensity: "emissiveIntensity";
561
+ clearcoat: "clearcoat";
562
+ clearcoatRoughness: "clearcoatRoughness";
563
+ anisotropy: "anisotropy";
564
+ anisotropyRotation: "anisotropyRotation";
565
+ subsurface: "subsurface";
566
+ subsurfaceColor: "subsurfaceColor";
567
+ sheen: "sheen";
568
+ sheenColor: "sheenColor";
569
+ sheenRoughness: "sheenRoughness";
570
+ iridescence: "iridescence";
571
+ iridescenceThickness: "iridescenceThickness";
572
+ iridescenceIor: "iridescenceIor";
573
+ triplanarScale: "triplanarScale";
574
+ triplanarSharpness: "triplanarSharpness";
388
575
  exposure: "exposure";
576
+ volumetricFogDensity: "volumetricFogDensity";
577
+ volumetricFogAnisotropy: "volumetricFogAnisotropy";
578
+ volumetricFogNoiseStrength: "volumetricFogNoiseStrength";
389
579
  }>;
390
580
  source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
391
581
  type: z.ZodLiteral<"keyframe">;
@@ -433,6 +623,7 @@ declare const AnimationTrackSchema: z.ZodObject<{
433
623
  value: z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString]>;
434
624
  ease: z.ZodOptional<z.ZodObject<{
435
625
  name: z.ZodEnum<{
626
+ bounce: "bounce";
436
627
  none: "none";
437
628
  power1: "power1";
438
629
  power2: "power2";
@@ -442,7 +633,6 @@ declare const AnimationTrackSchema: z.ZodObject<{
442
633
  expo: "expo";
443
634
  back: "back";
444
635
  elastic: "elastic";
445
- bounce: "bounce";
446
636
  spring: "spring";
447
637
  cubic: "cubic";
448
638
  hold: "hold";
@@ -479,38 +669,38 @@ declare const LayerAnimationSchema: z.ZodObject<{
479
669
  prop: z.ZodEnum<{
480
670
  x: "x";
481
671
  y: "y";
482
- scale: "scale";
483
- rotation: "rotation";
484
- opacity: "opacity";
485
672
  width: "width";
486
673
  height: "height";
674
+ rotation: "rotation";
675
+ scale: "scale";
676
+ opacity: "opacity";
677
+ trimStart: "trimStart";
678
+ trimEnd: "trimEnd";
679
+ text: "text";
680
+ fontSize: "fontSize";
681
+ fill: "fill";
682
+ letterSpacing: "letterSpacing";
683
+ padding: "padding";
684
+ strokeWidth: "strokeWidth";
685
+ borderColor: "borderColor";
686
+ borderWidth: "borderWidth";
487
687
  volume: "volume";
688
+ color: "color";
689
+ offset: "offset";
488
690
  hidden: "hidden";
489
691
  muted: "muted";
490
692
  gap: "gap";
491
- padding: "padding";
492
693
  borderRadius: "borderRadius";
493
- fontSize: "fontSize";
494
- text: "text";
495
- fill: "fill";
496
- color: "color";
497
- letterSpacing: "letterSpacing";
498
694
  d: "d";
499
- trimStart: "trimStart";
500
- trimEnd: "trimEnd";
501
695
  trimOffset: "trimOffset";
502
- strokeWidth: "strokeWidth";
503
696
  strokeDashOffset: "strokeDashOffset";
504
697
  cornerRadius: "cornerRadius";
505
698
  starInnerRadiusRatio: "starInnerRadiusRatio";
506
699
  fillColor: "fillColor";
507
700
  strokeColor: "strokeColor";
508
- borderColor: "borderColor";
509
- borderWidth: "borderWidth";
510
701
  motionBlurShutter: "motionBlurShutter";
511
702
  rangeStart: "rangeStart";
512
703
  rangeEnd: "rangeEnd";
513
- offset: "offset";
514
704
  animatorRangeStart: "animatorRangeStart";
515
705
  animatorRangeEnd: "animatorRangeEnd";
516
706
  animatorOffset: "animatorOffset";
@@ -541,6 +731,7 @@ declare const LayerAnimationSchema: z.ZodObject<{
541
731
  maxBlurRadius: "maxBlurRadius";
542
732
  shakeTranslation: "shakeTranslation";
543
733
  shakeRotation: "shakeRotation";
734
+ relativitySpeed: "relativitySpeed";
544
735
  orbitRadius: "orbitRadius";
545
736
  orbitAzimuth: "orbitAzimuth";
546
737
  orbitElevation: "orbitElevation";
@@ -569,7 +760,24 @@ declare const LayerAnimationSchema: z.ZodObject<{
569
760
  scaleY: "scaleY";
570
761
  emissive: "emissive";
571
762
  emissiveIntensity: "emissiveIntensity";
763
+ clearcoat: "clearcoat";
764
+ clearcoatRoughness: "clearcoatRoughness";
765
+ anisotropy: "anisotropy";
766
+ anisotropyRotation: "anisotropyRotation";
767
+ subsurface: "subsurface";
768
+ subsurfaceColor: "subsurfaceColor";
769
+ sheen: "sheen";
770
+ sheenColor: "sheenColor";
771
+ sheenRoughness: "sheenRoughness";
772
+ iridescence: "iridescence";
773
+ iridescenceThickness: "iridescenceThickness";
774
+ iridescenceIor: "iridescenceIor";
775
+ triplanarScale: "triplanarScale";
776
+ triplanarSharpness: "triplanarSharpness";
572
777
  exposure: "exposure";
778
+ volumetricFogDensity: "volumetricFogDensity";
779
+ volumetricFogAnisotropy: "volumetricFogAnisotropy";
780
+ volumetricFogNoiseStrength: "volumetricFogNoiseStrength";
573
781
  }>;
574
782
  source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
575
783
  type: z.ZodLiteral<"keyframe">;
@@ -617,6 +825,7 @@ declare const LayerAnimationSchema: z.ZodObject<{
617
825
  value: z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString]>;
618
826
  ease: z.ZodOptional<z.ZodObject<{
619
827
  name: z.ZodEnum<{
828
+ bounce: "bounce";
620
829
  none: "none";
621
830
  power1: "power1";
622
831
  power2: "power2";
@@ -626,7 +835,6 @@ declare const LayerAnimationSchema: z.ZodObject<{
626
835
  expo: "expo";
627
836
  back: "back";
628
837
  elastic: "elastic";
629
- bounce: "bounce";
630
838
  spring: "spring";
631
839
  cubic: "cubic";
632
840
  hold: "hold";
@@ -661,6 +869,17 @@ type LayerAnimationSpec<TProp extends AnimatableProp = AnimatableProp> = Omit<Ba
661
869
  };
662
870
  declare const ToonShadingSchema: z.ZodType<ToonShading>;
663
871
  declare const GeometryOutlineOptionsSchema: z.ZodType<GeometryOutlineOptions>;
872
+ declare const IridescenceConfigSchema: z.ZodObject<{
873
+ intensity: z.ZodOptional<z.ZodNumber>;
874
+ thickness: z.ZodOptional<z.ZodNumber>;
875
+ ior: z.ZodOptional<z.ZodNumber>;
876
+ }, z.core.$strict>;
877
+ type IridescenceConfig = z.infer<typeof IridescenceConfigSchema>;
878
+ declare const TriplanarConfigSchema: z.ZodObject<{
879
+ scale: z.ZodOptional<z.ZodNumber>;
880
+ sharpness: z.ZodOptional<z.ZodNumber>;
881
+ }, z.core.$strict>;
882
+ type TriplanarConfig = z.infer<typeof TriplanarConfigSchema>;
664
883
  interface CompositionNodeBase {
665
884
  id: string;
666
885
  inputHandleId?: string;
@@ -709,6 +928,21 @@ interface CompositionNodeBase {
709
928
  fresnelPower?: number;
710
929
  emissive?: string;
711
930
  emissiveIntensity?: number;
931
+ clearcoat?: number;
932
+ clearcoatRoughness?: number;
933
+ anisotropy?: number;
934
+ anisotropyRotation?: number;
935
+ subsurface?: number;
936
+ subsurfaceColor?: string;
937
+ sheen?: number;
938
+ sheenColor?: string;
939
+ sheenRoughness?: number;
940
+ iridescence?: number | IridescenceConfig;
941
+ iridescenceThickness?: number;
942
+ iridescenceIor?: number;
943
+ triplanar?: boolean | TriplanarConfig;
944
+ triplanarScale?: number;
945
+ triplanarSharpness?: number;
712
946
  castShadow?: boolean;
713
947
  toon?: ToonShading;
714
948
  outline?: boolean;
@@ -726,6 +960,7 @@ interface CompositionNodeBase {
726
960
  reliefId?: string;
727
961
  reliefOf?: string;
728
962
  reliefAmount?: number;
963
+ textureOf?: string;
729
964
  envIntensity?: number;
730
965
  startFrame?: number;
731
966
  durationFrames?: number;
@@ -885,6 +1120,13 @@ interface TextNode extends CompositionNodeBase {
885
1120
  fontSize?: number;
886
1121
  fontWeight?: number | string;
887
1122
  fontStyle?: string;
1123
+ /**
1124
+ * Variable font axes by tag, as CSS `font-variation-settings`: `{ wdth: 68 }`
1125
+ * narrows a font with a width axis, `{ opsz: 72 }` or `{ GRAD: 50 }` set
1126
+ * others. `fontWeight` sets `wght`; `opsz` follows the font size unless set.
1127
+ * Axes the font lacks are ignored. Spans inherit them.
1128
+ */
1129
+ fontVariations?: Record<string, number>;
888
1130
  fill?: string;
889
1131
  align?: "start" | "center" | "end";
890
1132
  /**
@@ -976,6 +1218,12 @@ interface ShapeNode extends CompositionNodeBase {
976
1218
  trimEnd?: number;
977
1219
  trimOffset?: number;
978
1220
  }
1221
+ /**
1222
+ * The picture a camera draws. `perspective` is an ordinary lens; the others
1223
+ * are cube cameras: the scene is drawn as six 90° faces around the eye and
1224
+ * remapped, so they can show what no single frustum holds.
1225
+ */
1226
+
979
1227
  declare const CameraLensSchema: z.ZodObject<{
980
1228
  focalLength: z.ZodDefault<z.ZodNumber>;
981
1229
  fov: z.ZodOptional<z.ZodNumber>;
@@ -983,8 +1231,15 @@ declare const CameraLensSchema: z.ZodObject<{
983
1231
  near: z.ZodDefault<z.ZodNumber>;
984
1232
  far: z.ZodDefault<z.ZodNumber>;
985
1233
  zoom: z.ZodDefault<z.ZodNumber>;
1234
+ projection: z.ZodDefault<z.ZodEnum<{
1235
+ perspective: "perspective";
1236
+ equirectangular: "equirectangular";
1237
+ fisheye: "fisheye";
1238
+ }>>;
1239
+ cubeSize: z.ZodOptional<z.ZodNumber>;
986
1240
  }, z.core.$strict>;
987
- type CameraLens = z.infer<typeof CameraLensSchema>;
1241
+ /** A lens as authored: fields with schema defaults may be left out. */
1242
+ type CameraLens = z.input<typeof CameraLensSchema>;
988
1243
  declare const CameraDoFSchema: z.ZodObject<{
989
1244
  enabled: z.ZodDefault<z.ZodBoolean>;
990
1245
  focusDistance: z.ZodDefault<z.ZodNumber>;
@@ -1002,7 +1257,33 @@ declare const CameraShakeSchema: z.ZodObject<{
1002
1257
  octaves: z.ZodDefault<z.ZodNumber>;
1003
1258
  seed: z.ZodDefault<z.ZodNumber>;
1004
1259
  }, z.core.$strict>;
1005
- type CameraShake = z.infer<typeof CameraShakeSchema>;
1260
+ type CameraShake = z.input<typeof CameraShakeSchema>;
1261
+ /**
1262
+ * Per-object shutter motion blur for the 3D scene: every mesh, skinned
1263
+ * joint, instance and fractured piece streaks by its own motion over the
1264
+ * shutter (and the camera's), reconstructed from a velocity buffer.
1265
+ */
1266
+ declare const CameraMotionBlurSchema: z.ZodObject<{
1267
+ shutter: z.ZodDefault<z.ZodNumber>;
1268
+ samples: z.ZodDefault<z.ZodNumber>;
1269
+ maxBlur: z.ZodDefault<z.ZodNumber>;
1270
+ }, z.core.$strict>;
1271
+ type CameraMotionBlur = z.input<typeof CameraMotionBlurSchema>;
1272
+ /**
1273
+ * The camera moves through the scene near the speed of light. What it sees
1274
+ * is physics, not grading: rays crowd towards the direction of motion
1275
+ * (aberration), colours shift blue ahead and red behind (Doppler) and ahead
1276
+ * brightens (beaming). Always drawn by a cube camera.
1277
+ */
1278
+ declare const CameraRelativitySchema: z.ZodObject<{
1279
+ speed: z.ZodDefault<z.ZodNumber>;
1280
+ direction: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
1281
+ doppler: z.ZodDefault<z.ZodBoolean>;
1282
+ beaming: z.ZodDefault<z.ZodBoolean>;
1283
+ exposure: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>>;
1284
+ }, z.core.$strict>;
1285
+ /** Relativity as authored: fields with schema defaults may be left out. */
1286
+ type CameraRelativity = z.input<typeof CameraRelativitySchema>;
1006
1287
  interface CameraNode {
1007
1288
  id: string;
1008
1289
  kind: "camera";
@@ -1019,13 +1300,17 @@ interface CameraNode {
1019
1300
  lens?: CameraLens;
1020
1301
  dof?: CameraDoF;
1021
1302
  shake?: CameraShake;
1303
+ /** Shutter motion blur of the 3D scene; `true` takes the defaults. */
1304
+ motionBlur?: boolean | CameraMotionBlur;
1305
+ relativity?: CameraRelativity;
1022
1306
  startFrame?: number;
1023
1307
  durationFrames?: number;
1024
1308
  animation?: LayerAnimationSpec;
1025
1309
  }
1026
1310
  declare const CameraNodeSchema: z.ZodType<CameraNode>;
1027
- type LightType = "ambient" | "directional" | "point" | "spot" | "environment";
1311
+ type LightType = "ambient" | "directional" | "point" | "spot" | "rect" | "environment";
1028
1312
  declare const LightTypeSchema: z.ZodEnum<{
1313
+ rect: "rect";
1029
1314
  ambient: "ambient";
1030
1315
  directional: "directional";
1031
1316
  point: "point";
@@ -1035,8 +1320,10 @@ declare const LightTypeSchema: z.ZodEnum<{
1035
1320
  declare const EnvironmentPresetSchema: z.ZodEnum<{
1036
1321
  studio: "studio";
1037
1322
  soft: "soft";
1323
+ warm: "warm";
1038
1324
  sunset: "sunset";
1039
1325
  night: "night";
1326
+ neon: "neon";
1040
1327
  neutral: "neutral";
1041
1328
  }>;
1042
1329
  type EnvironmentPreset = z.infer<typeof EnvironmentPresetSchema>;
@@ -1070,6 +1357,44 @@ declare const EnvironmentFloorSchema: z.ZodObject<{
1070
1357
  opacity: z.ZodOptional<z.ZodNumber>;
1071
1358
  }, z.core.$strict>;
1072
1359
  type EnvironmentFloor = z.infer<typeof EnvironmentFloorSchema>;
1360
+ declare const EnvironmentVolumetricFogNoiseSchema: z.ZodObject<{
1361
+ scale: z.ZodOptional<z.ZodNumber>;
1362
+ strength: z.ZodOptional<z.ZodNumber>;
1363
+ speed: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
1364
+ octaves: z.ZodOptional<z.ZodNumber>;
1365
+ }, z.core.$strict>;
1366
+ type EnvironmentVolumetricFogNoise = z.infer<typeof EnvironmentVolumetricFogNoiseSchema>;
1367
+ declare const EnvironmentVolumetricFogSchema: z.ZodObject<{
1368
+ density: z.ZodOptional<z.ZodNumber>;
1369
+ color: z.ZodOptional<z.ZodOptional<z.ZodString>>;
1370
+ anisotropy: z.ZodOptional<z.ZodNumber>;
1371
+ heightFalloff: z.ZodOptional<z.ZodNumber>;
1372
+ baseHeight: z.ZodOptional<z.ZodNumber>;
1373
+ steps: z.ZodOptional<z.ZodNumber>;
1374
+ maxDistance: z.ZodOptional<z.ZodNumber>;
1375
+ lightIntensity: z.ZodOptional<z.ZodNumber>;
1376
+ ambientIntensity: z.ZodOptional<z.ZodNumber>;
1377
+ noise: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
1378
+ scale: z.ZodOptional<z.ZodNumber>;
1379
+ strength: z.ZodOptional<z.ZodNumber>;
1380
+ speed: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
1381
+ octaves: z.ZodOptional<z.ZodNumber>;
1382
+ }, z.core.$strict>]>>;
1383
+ }, z.core.$strict>;
1384
+ type EnvironmentVolumetricFog = z.infer<typeof EnvironmentVolumetricFogSchema>;
1385
+ declare const EnvironmentSsrSchema: z.ZodObject<{
1386
+ intensity: z.ZodOptional<z.ZodNumber>;
1387
+ maxRoughness: z.ZodOptional<z.ZodNumber>;
1388
+ thickness: z.ZodOptional<z.ZodNumber>;
1389
+ steps: z.ZodOptional<z.ZodNumber>;
1390
+ }, z.core.$strict>;
1391
+ type EnvironmentSsr = z.infer<typeof EnvironmentSsrSchema>;
1392
+ declare const EnvironmentGiSchema: z.ZodObject<{
1393
+ intensity: z.ZodOptional<z.ZodNumber>;
1394
+ radius: z.ZodOptional<z.ZodNumber>;
1395
+ samples: z.ZodOptional<z.ZodNumber>;
1396
+ }, z.core.$strict>;
1397
+ type EnvironmentGi = z.infer<typeof EnvironmentGiSchema>;
1073
1398
  interface LightNode {
1074
1399
  id: string;
1075
1400
  kind: "light";
@@ -1087,15 +1412,23 @@ interface LightNode {
1087
1412
  decay?: number;
1088
1413
  angle?: number;
1089
1414
  penumbra?: number;
1090
- /** Directional / spot: render a shadow map. */
1415
+ /** Area light width in world px (default 240, rect lights only). */
1416
+ width?: number;
1417
+ /** Area light height in world px (default 140, rect lights only). */
1418
+ height?: number;
1419
+ /** Emit from both faces of a rect light (default false). */
1420
+ twoSided?: boolean;
1421
+ /** Directional / spot / point / rect: render a shadow map. */
1091
1422
  castShadow?: boolean;
1092
1423
  /** Shadow edge blur in shadow-map texels. Default 2.5. */
1093
1424
  shadowSoftness?: number;
1094
1425
  /** 0..1, how dark shadows get. Default 1. */
1095
1426
  shadowDarkness?: number;
1096
- /** Shadow map resolution (texels per side). Default 2048. */
1427
+ /** Shadow map resolution (texels per side). Default 2048 (1024 for point). */
1097
1428
  shadowMapSize?: number;
1098
1429
  preset?: EnvironmentPreset;
1430
+ /** Equirectangular panorama for real HDRI IBL: a `.hdr` (Radiance RGBE) or `.exr` (OpenEXR) path, or the file's bytes. */
1431
+ hdri?: string | Uint8Array;
1099
1432
  top?: string;
1100
1433
  horizon?: string;
1101
1434
  bottom?: string;
@@ -1105,6 +1438,18 @@ interface LightNode {
1105
1438
  toneMapping?: ToneMapping;
1106
1439
  fog?: EnvironmentFog;
1107
1440
  floor?: EnvironmentFloor;
1441
+ /** Froxel-style volumetric participating media & shadowed light shafts (god rays). */
1442
+ volumetricFog?: boolean | EnvironmentVolumetricFog;
1443
+ /** Animatable / signal-driven override for volumetricFog.density. */
1444
+ volumetricFogDensity?: number;
1445
+ /** Animatable / signal-driven override for volumetricFog.anisotropy. */
1446
+ volumetricFogAnisotropy?: number;
1447
+ /** Animatable / signal-driven override for volumetricFog.noise.strength. */
1448
+ volumetricFogNoiseStrength?: number;
1449
+ /** Screen-space reflections of nearby geometry and emissives on glossy surfaces. */
1450
+ ssr?: boolean | EnvironmentSsr;
1451
+ /** Screen-space diffuse GI: occlusion and color bleeding from visible surfaces. */
1452
+ gi?: boolean | EnvironmentGi;
1108
1453
  /** Optional depth/normal outlines, before depth of field and bloom. */
1109
1454
  outlines?: boolean | GeometryOutlineOptions;
1110
1455
  /** Glow around emissive surfaces and hot highlights: `true` or settings. */
@@ -1141,6 +1486,26 @@ interface Model3DNode {
1141
1486
  specularIntensity?: number;
1142
1487
  ambientIntensity?: number;
1143
1488
  metallic?: number;
1489
+ emissive?: string;
1490
+ emissiveIntensity?: number;
1491
+ clearcoat?: number;
1492
+ clearcoatRoughness?: number;
1493
+ anisotropy?: number;
1494
+ anisotropyRotation?: number;
1495
+ subsurface?: number;
1496
+ subsurfaceColor?: string;
1497
+ sheen?: number;
1498
+ sheenColor?: string;
1499
+ sheenRoughness?: number;
1500
+ iridescence?: number | IridescenceConfig;
1501
+ iridescenceThickness?: number;
1502
+ iridescenceIor?: number;
1503
+ triplanar?: boolean | TriplanarConfig;
1504
+ triplanarScale?: number;
1505
+ triplanarSharpness?: number;
1506
+ toon?: ToonShading;
1507
+ outline?: boolean;
1508
+ castShadow?: boolean;
1144
1509
  color?: string;
1145
1510
  colorTint?: string;
1146
1511
  opacity?: number;
@@ -1161,6 +1526,41 @@ interface Model3DNode {
1161
1526
  instances3d?: unknown;
1162
1527
  /** Layer3D.swarm GPU simulation and instancing options. */
1163
1528
  swarm3d?: unknown;
1529
+ /** Layer3D.scatter: instances placed on another model's surface. */
1530
+ scatter3d?: Scatter3DSpec;
1531
+ /** Voronoi destruction: the mesh drawn as pieces posed by physics (`world.fracture`). */
1532
+ fracture3d?: Fracture3DSpec;
1533
+ /** Procedural wind sway (bends vertices downwind by height above the mesh base). */
1534
+ wind?: WindConfig;
1535
+ /** Any layer (image, video, layout) drawn each frame and wrapped onto the mesh by its UVs. */
1536
+ textureLayer?: {
1537
+ node: unknown;
1538
+ };
1539
+ /** Set by the compiler: the id of the hoisted texture layer. */
1540
+ textureLayerId?: string;
1541
+ /** Clips blended in order, each over the pose beneath by its weight (replaces animationName). */
1542
+ animationLayers?: ModelAnimationLayer[];
1543
+ /** Two-bone IK: limbs reach scene-space targets. */
1544
+ ik?: TwoBoneIkConstraint[];
1545
+ /** Joints (heads, eyes) turn toward scene-space targets. */
1546
+ lookAt?: LookAtConstraint[];
1547
+ /** Secondary motion simulated from frame 0 (capes, tails, hair). */
1548
+ springBones?: SpringBoneChain[];
1549
+ /** Joints posed directly by name (local Euler degrees, offsets), over the clips. */
1550
+ pose?: Record<string, JointPose>;
1551
+ /**
1552
+ * Blend shape weights by target name (glTF `extras.targetNames`; case is
1553
+ * ignored): `{ eyeBlinkLeft: blink, jawOpen: speech }`. Each value is a
1554
+ * number, `[[frame, v]]` keys, `(frame) => v` or a signal; it replaces the
1555
+ * clip's weight for that target.
1556
+ */
1557
+ morphs?: Record<string, NumberTrack>;
1558
+ /** Bones pointed along scene directions, parents first (pose retargeting). */
1559
+ aim?: AimConstraint[];
1560
+ /** Joints driven by other joints, on top of any the model file declares (eyelids, twist bones). */
1561
+ drive?: JointDriver[];
1562
+ /** Instance nodes: every instance a skinned character on its own clip, phase and speed. */
1563
+ crowd?: CrowdConfig;
1164
1564
  }
1165
1565
  type LayoutNode = FlexNode | BlockNode | BoxNode | TextNode | MediaNode | ShapeNode | CameraNode | LightNode | Model3DNode;
1166
1566
  declare const FlexNodeSchema: z.ZodType<FlexNode>;
@@ -1291,6 +1691,9 @@ declare function computeLayoutSync(yoga: Yoga, input: LayoutInput): LayoutResult
1291
1691
  declare function computeLayout(input: LayoutInput): Promise<LayoutResult>;
1292
1692
  //#endregion
1293
1693
  //#region src/program/animation.d.ts
1694
+ /** Common 3D Euler rotation aliases accepted alongside `rotateX` / `rotateY` / `rotateZ`. */
1695
+ type AnimatablePropAlias = "rotationX" | "rotationY" | "rotationZ";
1696
+ type CanonicalAnimatableProp<P extends AnimatableProp | AnimatablePropAlias> = P extends "rotationX" ? "rotateX" : P extends "rotationY" ? "rotateY" : P extends "rotationZ" ? "rotateZ" : P;
1294
1697
  /**
1295
1698
  * One keyframe as a tuple: `[frame, value]` or `[frame, value, ease]`. The
1296
1699
  * ease shapes the motion arriving at this keyframe from the one before.
@@ -1437,21 +1840,24 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
1437
1840
  static stepped<P extends AnimatableProp = AnimatableProp>(frames?: number): LayerAnimation<P>;
1438
1841
  /** See {@link LayerAnimation.stepped}. */
1439
1842
  stepped(frames?: number): this;
1440
- static fromTo<P extends AnimatableProp = AnimatableProp>(prop: P, fromValue: number | string | boolean, toValue: number | string | boolean, options?: FromToOptions): LayerAnimation<P>;
1843
+ static fromTo<P extends AnimatableProp | AnimatablePropAlias = AnimatableProp>(prop: P, fromValue: number | string | boolean, toValue: number | string | boolean, options?: FromToOptions): LayerAnimation<CanonicalAnimatableProp<P>>;
1441
1844
  /** A track from a list of `[frame, value, ease?]` keyframes; see {@link LayerAnimation.keys}. */
1442
- static keys<P extends AnimatableProp = AnimatableProp>(prop: P, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): LayerAnimation<P>;
1443
- static signal<P extends AnimatableProp = AnimatableProp>(prop: P, signalOrHandleId: unknown, options?: SignalTrackOptions): LayerAnimation<P>;
1444
- static colorSignal<P extends AnimatableProp = AnimatableProp>(prop: P, signalOrHandleId: unknown, options: ColorSignalOptions): LayerAnimation<P>;
1845
+ static keys<P extends AnimatableProp | AnimatablePropAlias = AnimatableProp>(prop: P, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): LayerAnimation<CanonicalAnimatableProp<P>>;
1846
+ static signal<P extends AnimatableProp | AnimatablePropAlias = AnimatableProp>(prop: P, signalOrHandleId: unknown, options?: SignalTrackOptions): LayerAnimation<CanonicalAnimatableProp<P>>;
1847
+ static colorSignal<P extends AnimatableProp | AnimatablePropAlias = AnimatableProp>(prop: P, signalOrHandleId: unknown, options: ColorSignalOptions): LayerAnimation<CanonicalAnimatableProp<P>>;
1445
1848
  static kineticSweep(fromOffset?: number, toOffset?: number, startFrame?: number, endFrame?: number, ease?: string | EaseRef): LayerAnimation;
1446
1849
  static typewriter(startFrame?: number, endFrame?: number, ease?: string | EaseRef): LayerAnimation;
1447
1850
  static letterSpacing(fromSpacing: number, toSpacing: number, startFrame?: number, endFrame?: number, ease?: string | EaseRef): LayerAnimation;
1448
- static wiggle(prop: AnimatableProp, options?: WiggleOptions): LayerAnimation;
1449
- static spring(prop: AnimatableProp, options?: SpringOptions): LayerAnimation;
1851
+ static wiggle(prop: AnimatableProp | AnimatablePropAlias, options?: WiggleOptions): LayerAnimation;
1852
+ static spring(prop: AnimatableProp | AnimatablePropAlias, options?: SpringOptions): LayerAnimation;
1450
1853
  static firstMargin(fromMargin: number, toMargin: number, options?: FromToOptions): LayerAnimation;
1451
1854
  static strokeWidth(fromWidth: number, toWidth: number, options?: FromToOptions): LayerAnimation;
1452
1855
  static rotateX(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1453
1856
  static rotateY(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1454
1857
  static rotateZ(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1858
+ static rotationX(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1859
+ static rotationY(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1860
+ static rotationZ(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1455
1861
  static rotation(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1456
1862
  static scale(fromScale: number, toScale: number, options?: FromToOptions): LayerAnimation;
1457
1863
  static scaleX(fromScale: number, toScale: number, options?: FromToOptions): LayerAnimation;
@@ -1462,32 +1868,32 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
1462
1868
  * - `-1`: loops indefinitely.
1463
1869
  * - `N`: repeats N times after the initial iteration (total N + 1 iterations).
1464
1870
  */
1465
- repeat(count?: number, prop?: AnimatableProp): this;
1871
+ repeat(count?: number, prop?: AnimatableProp | AnimatablePropAlias): this;
1466
1872
  /**
1467
1873
  * Enables or disables yoyo (alternate playback direction on each repeat iteration).
1468
1874
  */
1469
- yoyo(enable?: boolean, prop?: AnimatableProp): this;
1875
+ yoyo(enable?: boolean, prop?: AnimatableProp | AnimatablePropAlias): this;
1470
1876
  /**
1471
1877
  * Shorthand to loop keyframed animation continuously (infinite repeat).
1472
1878
  * If `options.yoyo` is true, oscillates back and forth.
1473
1879
  */
1474
1880
  loop(options?: {
1475
1881
  yoyo?: boolean;
1476
- }, prop?: AnimatableProp): this;
1882
+ }, prop?: AnimatableProp | AnimatablePropAlias): this;
1477
1883
  /**
1478
1884
  * Creates a keyframed track animating from fromValue to toValue.
1479
1885
  */
1480
- fromTo(prop: AnimatableProp, fromValue: number | string | boolean, toValue: number | string | boolean, options?: FromToOptions): this;
1886
+ fromTo(rawProp: AnimatableProp | AnimatablePropAlias, fromValue: number | string | boolean, toValue: number | string | boolean, options?: FromToOptions): this;
1481
1887
  /**
1482
1888
  * Appends a keyframe to an existing track for prop, or creates a new track.
1483
1889
  */
1484
- keyframe(prop: AnimatableProp, frame: number, value: number | string | boolean, ease?: string | EaseRef): this;
1890
+ keyframe(rawProp: AnimatableProp | AnimatablePropAlias, frame: number, value: number | string | boolean, ease?: string | EaseRef): this;
1485
1891
  /**
1486
1892
  * Adds several keyframes to prop's track at once:
1487
1893
  * `.keys("scale", [[0, 0], [12, 1.1, "back.out"], [20, 1]])`.
1488
1894
  * Frames are rounded to whole frames, so beat math can be passed straight in.
1489
1895
  */
1490
- keys(prop: AnimatableProp, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): this;
1896
+ keys(rawProp: AnimatableProp | AnimatablePropAlias, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): this;
1491
1897
  /**
1492
1898
  * Animates opacity from 0 to 1 between startFrame and endFrame.
1493
1899
  */
@@ -1541,6 +1947,12 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
1541
1947
  * Animate rotateZ from fromAngle to toAngle.
1542
1948
  */
1543
1949
  rotateZ(fromAngle: number, toAngle: number, options?: FromToOptions): this;
1950
+ /** Alias for {@link rotateX}. */
1951
+ rotationX(fromAngle: number, toAngle: number, options?: FromToOptions): this;
1952
+ /** Alias for {@link rotateY}. */
1953
+ rotationY(fromAngle: number, toAngle: number, options?: FromToOptions): this;
1954
+ /** Alias for {@link rotateZ}. */
1955
+ rotationZ(fromAngle: number, toAngle: number, options?: FromToOptions): this;
1544
1956
  /**
1545
1957
  * Animate scale along the X axis.
1546
1958
  */
@@ -1573,20 +1985,20 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
1573
1985
  * registered with the program automatically — or the name of a signal
1574
1986
  * registered with `comp.addSignal(name, signal)`.
1575
1987
  */
1576
- signal(prop: AnimatableProp, signalOrHandleId: unknown, options?: SignalTrackOptions): this;
1988
+ signal(rawProp: AnimatableProp | AnimatablePropAlias, signalOrHandleId: unknown, options?: SignalTrackOptions): this;
1577
1989
  /**
1578
1990
  * Modulates color interpolation based on an active signal (object or
1579
1991
  * registered name, as in {@link LayerAnimation.signal}).
1580
1992
  */
1581
- colorSignal(prop: AnimatableProp, signalOrHandleId: unknown, options: ColorSignalOptions): this;
1993
+ colorSignal(rawProp: AnimatableProp | AnimatablePropAlias, signalOrHandleId: unknown, options: ColorSignalOptions): this;
1582
1994
  /**
1583
1995
  * Adds organic Perlin noise wiggling to a property.
1584
1996
  */
1585
- wiggle(prop: AnimatableProp, options?: WiggleOptions): this;
1997
+ wiggle(rawProp: AnimatableProp | AnimatablePropAlias, options?: WiggleOptions): this;
1586
1998
  /**
1587
1999
  * Adds physical harmonic spring overshoot behavior to a property transition.
1588
2000
  */
1589
- spring(prop: AnimatableProp, options?: SpringOptions): this;
2001
+ spring(rawProp: AnimatableProp | AnimatablePropAlias, options?: SpringOptions): this;
1590
2002
  /**
1591
2003
  * Follows a 2D or 3D path with constant arc-length velocity, automatic orientation,
1592
2004
  * banking into turns, and optional easing.
@@ -1720,14 +2132,26 @@ interface LintOptions {
1720
2132
  * the emoji would draw nothing. Unknown (omitted): not checked.
1721
2133
  */
1722
2134
  emojiFont?: boolean;
2135
+ /**
2136
+ * Share of a scatter's surface area its slope and altitude filters keep
2137
+ * (0..1), or undefined when the surface can't be measured here (a model
2138
+ * file not loaded yet). framefields passes the real mesher; this module
2139
+ * has no geometry of its own.
2140
+ */
2141
+ scatterCoverage?: (scatter: Scatter3DSpec) => number | undefined;
1723
2142
  }
1724
2143
  declare function lintComposition(config: Pick<CompositorProgramConfig, "width" | "height" | "layout"> & {
1725
2144
  backgroundColor?: string;
1726
2145
  }, options?: LintOptions): RenderDiagnostic[];
1727
2146
  //#endregion
1728
2147
  //#region src/program/mattes.d.ts
1729
- /** Returns the tree with every `matte` and `relief` turned into a sibling companion layer. */
1730
- declare function hoistMattes<T extends LayoutNode>(nodes: readonly T[]): T[];
2148
+ /** The picture a mesh's UVs read: the frame's size from the top-left corner unless placed. */
2149
+ interface HoistOptions {
2150
+ width?: number;
2151
+ height?: number;
2152
+ }
2153
+ /** Returns the tree with every `matte`, `relief` and `textureLayer` turned into a sibling companion layer. */
2154
+ declare function hoistMattes<T extends LayoutNode>(nodes: readonly T[], size?: HoistOptions): T[];
1731
2155
  //#endregion
1732
2156
  //#region src/program/media-signal.d.ts
1733
2157
  /** Where a signal-driven media layer sits on the composition clock. */
@@ -1944,84 +2368,354 @@ declare function compositorToProgram(config: CompositorProgramConfig, options: C
1944
2368
  * Recursively gather every node op from a render tree (in order), stopping at
1945
2369
  * nested scene compositions: their layers belong to their own render.
1946
2370
  */
1947
- declare function collectNodeOps(nodes: VirtualMediaData[]): VirtualMediaData[];
1948
- //#endregion
1949
- //#region src/program/validate.d.ts
1950
- //#endregion
1951
- //#region ../components/dist/toolkit-HF1uj72e.d.mts
1952
- //#region src/core/audio.d.ts
1953
-
1954
- /** A track's spectrum and loudness per frame, every value 0–1. */
1955
- interface AudioLevels {
1956
- fps: number;
1957
- /** Length in frames. */
1958
- frames: number;
1959
- /** `[band][frame]`, low → high frequencies. */
1960
- bands: number[][];
1961
- /** Loudness envelope, `[frame]`. */
1962
- level: number[];
1963
- /** Onset frames (kicks, plosives), from low-band flux. */
1964
- beats: number[];
1965
- }
1966
- interface AnalyzeOptions {
1967
- /** Frame rate of the composition. Default 30. */
1968
- fps?: number;
1969
- /** Log-spaced bands. Default 32. */
1970
- bands?: number;
1971
- /** Lowest band edge, Hz. Default 50. */
1972
- minHz?: number;
1973
- /** Highest band edge, Hz. Default 12 000 (or Nyquist). */
1974
- maxHz?: number;
1975
- }
1976
- /** Band edges in Hz, log-spaced. */
1977
- declare function bandEdges(count: number, minHz: number, maxHz: number): number[];
1978
2371
  /**
1979
- * Analyse decoded audio: a Hann-windowed FFT per frame into log-spaced
1980
- * bands, each normalised to its own 98th percentile (floored 30 dB under the
1981
- * loudest band's, so a quiet band is not stretched into noise), an RMS level
1982
- * envelope, and onsets from low-band spectral flux.
2372
+ * Every layer, 3D scenes' layers included, with its start on the
2373
+ * composition's clock. A scene's layers run on the scene's own clock, which
2374
+ * starts where the scene's layer does, so their starts are offset by it.
1983
2375
  */
1984
- declare function analyzeChannels(channels: readonly Float32Array[], sampleRate: number, options?: AnalyzeOptions): AudioLevels;
1985
- /** Average adjacent bands down (or repeat them up) to `count` bands. */
1986
- declare function resampleBands(bands: readonly (readonly number[])[], count: number): number[][];
1987
- /** Each value falls no faster than `release` frames from its peak (attack is instant). */
1988
- declare function smoothRelease(values: readonly number[], release: number): number[];
1989
- /** The schema for `AudioLevels` props (Waveform, Captions `pulse`). */
1990
- declare function audioLevelsSchema(): z.ZodType<AudioLevels>;
2376
+
2377
+ declare function collectNodeOps(nodes: VirtualMediaData[]): VirtualMediaData[];
1991
2378
  //#endregion
1992
- //#region src/core/bake.d.ts
2379
+ //#region src/program/track-sampler.d.ts
1993
2380
  /**
1994
- * Turn per-frame values into a few linear keyframes. Components solve motion
1995
- * offline (springs, camera follow, arc-length travel) and bake it, so the
1996
- * output stays plain keyframe JSON that seeks exactly.
2381
+ * Solves a cubic bezier curve defined by control points (x1, y1) and (x2, y2)
2382
+ * for a given progress parameter t in [0, 1].
1997
2383
  */
1998
- /** `[frame, value]`: a linear keyframe, as `LayerAnimation.keys` takes it. */
1999
- type BakedKey = [frame: number, value: number];
2000
- interface BakeOptions {
2001
- /** Max deviation (in the value's units) of the simplified curve. Default 0.25. */
2002
- tolerance?: number;
2003
- }
2384
+ //#endregion
2385
+ //#region ../components/dist/typing-c419Mp0t.d.mts
2386
+ //#region src/core/path.d.ts
2004
2387
  /**
2005
- * Simplify `values` (one per frame, starting at `startFrame`) to linear keys
2006
- * whose interpolation stays within `tolerance` of every sample
2007
- * (Ramer–Douglas–Peucker on the frame/value polyline). First and last
2008
- * samples are always kept.
2388
+ * 2D path math: smooth curves through points, arc-length sampling, and SVG
2389
+ * path strings. Used for pointer travel, camera moves and drawn marks.
2009
2390
  */
2010
- declare function bakeSamples(values: readonly number[], startFrame?: number, options?: BakeOptions): BakedKey[];
2011
- /** Sample `fn` on every frame in [start, end] and bake it. */
2012
- declare function bakeFunction(fn: (frame: number) => number, start: number, end: number, options?: BakeOptions): BakedKey[];
2391
+ type Vec2$1 = [x: number, y: number];
2392
+ declare const dist: (a: Vec2$1, b: Vec2$1) => number;
2393
+ declare const lerp2: (a: Vec2$1, b: Vec2$1, t: number) => Vec2$1;
2013
2394
  /**
2014
- * Damped spring from 0 to 1 in closed form: `stiffness` (k), `damping` (c),
2015
- * `mass` (m), sampled in seconds. Under-damped springs overshoot.
2395
+ * Centripetal Catmull-Rom through `points`, flattened to a polyline with
2396
+ * `steps` samples per segment. Centripetal (alpha 0.5) never loops or cusps
2397
+ * between close points, which matters for pointer paths.
2016
2398
  */
2017
- declare function springAt(seconds: number, {
2018
- stiffness,
2019
- damping,
2020
- mass
2021
- }?: {
2022
- stiffness?: number | undefined;
2023
- damping?: number | undefined;
2024
- mass?: number | undefined;
2399
+ declare function catmullRom(points: readonly Vec2$1[], steps?: number): Vec2$1[];
2400
+ /** A polyline with a cumulative arc-length table, sampled by distance. */
2401
+ interface ArcPath {
2402
+ readonly points: readonly Vec2$1[];
2403
+ readonly length: number;
2404
+ /** Point at `u` ∈ [0, 1] of the total length. */
2405
+ at(u: number): Vec2$1;
2406
+ /** Unit tangent direction (radians) at `u`. */
2407
+ angleAt(u: number): number;
2408
+ }
2409
+ declare function arcPath(points: readonly Vec2$1[]): ArcPath;
2410
+ /** SVG path data for a polyline (optionally closed). Rounded to 0.01 px. */
2411
+ declare function toPathData(points: readonly Vec2$1[], closed?: boolean): string;
2412
+ /**
2413
+ * Scale and offset SVG path data: `x' = x × scale + dx`. Absolute commands
2414
+ * move by the offset; relative ones (and arc radii) only scale. Used to
2415
+ * size glyphs designed on a small grid, and logo marks in their viewBox.
2416
+ */
2417
+ declare function transformPathData(d: string, scale: number, dx?: number, dy?: number): string;
2418
+ //#endregion
2419
+ //#region src/core/draw.d.ts
2420
+ interface Rect {
2421
+ x: number;
2422
+ y: number;
2423
+ width: number;
2424
+ height: number;
2425
+ }
2426
+ interface HandOptions {
2427
+ /** Wobble amount in px at theme scale 1. 0 = clean geometry. */
2428
+ wobble?: number;
2429
+ seed?: number;
2430
+ }
2431
+ /** Keys for `trimEnd` 0 → 1 between `start` and `start + duration`. */
2432
+ declare function drawOnKeys(start: number, duration: number, ease?: string): KeyframeTuple[];
2433
+ /**
2434
+ * Perturb points with seeded, low-frequency noise: neighbouring points move
2435
+ * together, so lines bend instead of jittering.
2436
+ */
2437
+ declare function wobblePoints(points: readonly Vec2$1[], {
2438
+ wobble,
2439
+ seed
2440
+ }?: HandOptions, variant?: number): Vec2$1[];
2441
+ /** An ellipse around `rect` (+ padding); hand-drawn ellipses overshoot their start. */
2442
+ declare function ellipsePath(rect: Rect, {
2443
+ padding,
2444
+ wobble,
2445
+ seed
2446
+ }?: HandOptions & {
2447
+ padding?: number;
2448
+ }, variant?: number): string;
2449
+ /** A rectangle around `rect` (+ padding). */
2450
+ declare function boxPath(rect: Rect, {
2451
+ padding,
2452
+ wobble,
2453
+ seed
2454
+ }?: HandOptions & {
2455
+ padding?: number;
2456
+ }, variant?: number): string;
2457
+ /** A horizontal stroke from `from` to `to`. */
2458
+ declare function linePath(from: Vec2$1, to: Vec2$1, {
2459
+ wobble,
2460
+ seed
2461
+ }?: HandOptions, variant?: number): string;
2462
+ /** A wavy line from `from` to `to`, `waves` crests of `amplitude` px. */
2463
+ declare function squigglePath(from: Vec2$1, to: Vec2$1, {
2464
+ amplitude,
2465
+ waves,
2466
+ wobble,
2467
+ seed
2468
+ }?: HandOptions & {
2469
+ amplitude?: number;
2470
+ waves?: number;
2471
+ }, variant?: number): string;
2472
+ type ArrowCurve = "straight" | "arc" | "swoop";
2473
+ interface ArrowGeometry {
2474
+ /** The shaft, drawn from `from` to just before `to`. */
2475
+ shaft: string;
2476
+ /** The head, two strokes meeting at `to`. */
2477
+ head: string;
2478
+ }
2479
+ /** An arrow from `from` to `to` with a separate head path. */
2480
+ declare function arrowPaths(from: Vec2$1, to: Vec2$1, {
2481
+ curve,
2482
+ headSize,
2483
+ wobble,
2484
+ seed
2485
+ }?: HandOptions & {
2486
+ curve?: ArrowCurve;
2487
+ headSize?: number;
2488
+ }, variant?: number): ArrowGeometry;
2489
+ /**
2490
+ * Hand-drawn "boil": `d` keys that switch between `variants` poses every
2491
+ * `every` frames with hold interpolation, from `start` to `end`.
2492
+ * `makePath(variant)` must be deterministic for a variant index.
2493
+ */
2494
+ declare function boilKeys(makePath: (variant: number) => string, {
2495
+ start,
2496
+ end,
2497
+ every,
2498
+ variants
2499
+ }: {
2500
+ start: number;
2501
+ end: number;
2502
+ every: number;
2503
+ variants?: number;
2504
+ }): KeyframeTuple[];
2505
+ //#endregion
2506
+ //#region src/core/text.d.ts
2507
+ /** The subset of `FontManager.measure` options components pass. */
2508
+ interface MeasureOptions {
2509
+ fontFamily: string;
2510
+ fontSize?: number;
2511
+ fontWeight?: string | number;
2512
+ letterSpacing?: number;
2513
+ lineHeight?: number;
2514
+ width?: number;
2515
+ align?: "left" | "center" | "right";
2516
+ direction?: "ltr" | "rtl" | "auto";
2517
+ }
2518
+ interface GlyphBox {
2519
+ char: string;
2520
+ index: number;
2521
+ x: number;
2522
+ width: number;
2523
+ line: number;
2524
+ rtl?: boolean;
2525
+ }
2526
+ /** The subset of `FontManager.measure` results components read. */
2527
+ interface Metrics$1 {
2528
+ width: number;
2529
+ height: number;
2530
+ lines: number;
2531
+ lineHeight: number;
2532
+ glyphs: GlyphBox[];
2533
+ caretX(count: number): number;
2534
+ }
2535
+ type MeasureFn = (text: string, options: MeasureOptions) => Metrics$1;
2536
+ interface WordRange {
2537
+ text: string;
2538
+ /** Index of the first character (code units). */
2539
+ start: number;
2540
+ /** Index after the last character. */
2541
+ end: number;
2542
+ index: number;
2543
+ }
2544
+ /** Whitespace-separated words with their character ranges. */
2545
+ declare function wordRanges(text: string): WordRange[];
2546
+ /** Character range of the `nth` match of `match` in `text`, or null. */
2547
+ declare function findRange(text: string, match: string | RegExp, nth?: number): [number, number] | null;
2548
+ /**
2549
+ * Per-line x offset that `align` adds inside a box of `options.width`
2550
+ * (measurement itself lays every line out from the left edge).
2551
+ */
2552
+ declare function lineShift(metrics: Metrics$1, line: number, options: MeasureOptions): number;
2553
+ /**
2554
+ * The boxes characters [start, end) cover: one rect per line, spanning the
2555
+ * glyphs' advances, `lineHeight` tall. Whitespace at a line's ends is
2556
+ * excluded.
2557
+ */
2558
+ declare function rangeRects(metrics: Metrics$1, start: number, end: number, options: MeasureOptions): Rect[];
2559
+ //#endregion
2560
+ //#region src/core/targets.d.ts
2561
+ type Anchor = "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right"
2562
+ /** Where a pointer should land: the centre, or mid-left for text. */ | "tip";
2563
+ /** A node as targets read it: absolute numeric geometry, or text. */
2564
+ interface TargetNode {
2565
+ id?: string;
2566
+ kind?: string;
2567
+ x?: unknown;
2568
+ y?: unknown;
2569
+ width?: unknown;
2570
+ height?: unknown;
2571
+ text?: unknown;
2572
+ content?: unknown;
2573
+ [key: string]: unknown;
2574
+ }
2575
+ /** The frame context signals are read with. */
2576
+ interface FrameContextLike {
2577
+ frame: number;
2578
+ fps: number;
2579
+ time: number;
2580
+ duration: number;
2581
+ durationMs: number;
2582
+ progress: number;
2583
+ deltaTime: number;
2584
+ }
2585
+ /** A per-frame value: a signal (what tracked objects expose) or a function. */
2586
+ type FrameValue = {
2587
+ get(ctx?: FrameContextLike): number;
2588
+ } | ((frame: number) => number);
2589
+ interface TrackedObjectLike {
2590
+ x: FrameValue;
2591
+ y: FrameValue;
2592
+ width: FrameValue;
2593
+ height: FrameValue;
2594
+ }
2595
+ type Target = Vec2$1 | Rect | {
2596
+ node: TargetNode;
2597
+ anchor?: Anchor;
2598
+ } | {
2599
+ text: TargetNode;
2600
+ match?: string | RegExp;
2601
+ range?: [number, number];
2602
+ nth?: number;
2603
+ anchor?: Anchor;
2604
+ } | {
2605
+ track: TrackedObjectLike;
2606
+ anchor?: Anchor;
2607
+ } | ((frame: number) => Vec2$1 | Rect);
2608
+ interface TargetContext {
2609
+ measure?: MeasureFn;
2610
+ /** Frame rate signals are sampled at (tracked targets). Default 30. */
2611
+ fps?: number;
2612
+ /** Font defaults for text nodes that don't set them. */
2613
+ textDefaults?: Partial<MeasureOptions>;
2614
+ }
2615
+ type ResolvedTarget = {
2616
+ kind: "static";
2617
+ rects: Rect[];
2618
+ anchor: Anchor;
2619
+ } | {
2620
+ kind: "dynamic";
2621
+ at: (frame: number) => Rect;
2622
+ anchor: Anchor;
2623
+ };
2624
+ /** Resolve a target to rects (static) or a per-frame rect (dynamic). */
2625
+ declare function resolveTarget(target: Target, ctx?: TargetContext): ResolvedTarget;
2626
+ /** A text target's string, measured glyphs and range, and where the node sits. */
2627
+ interface TextLayout {
2628
+ content: string;
2629
+ metrics: ReturnType<MeasureFn>;
2630
+ options: MeasureOptions;
2631
+ range: [number, number];
2632
+ /** The node's x / y: add to measured glyph positions. */
2633
+ x: number;
2634
+ y: number;
2635
+ }
2636
+ /** Measure a text target the way the renderer lays it out. */
2637
+ declare function textLayout(target: Extract<Target, {
2638
+ text: TargetNode;
2639
+ }>, ctx: TargetContext): TextLayout;
2640
+ /** The union rect of `rects`. */
2641
+ declare function boundsOf(rects: readonly Rect[]): Rect;
2642
+ /** The point of `rect` named by `anchor`. `tip` on text = start of the first line, mid-height. */
2643
+ declare function anchorPoint(rect: Rect, anchor?: Anchor, isText?: boolean): Vec2$1;
2644
+ /** The point a resolved target names at `frame` (static targets ignore frame). */
2645
+ declare function targetPoint(resolved: ResolvedTarget, frame?: number, isText?: boolean): Vec2$1;
2646
+ //#endregion
2647
+ //#region src/core/audio.d.ts
2648
+ /** A track's spectrum and loudness per frame, every value 0–1. */
2649
+ interface AudioLevels {
2650
+ fps: number;
2651
+ /** Length in frames. */
2652
+ frames: number;
2653
+ /** `[band][frame]`, low → high frequencies. */
2654
+ bands: number[][];
2655
+ /** Loudness envelope, `[frame]`. */
2656
+ level: number[];
2657
+ /** Onset frames (kicks, plosives), from low-band flux. */
2658
+ beats: number[];
2659
+ }
2660
+ interface AnalyzeOptions {
2661
+ /** Frame rate of the composition. Default 30. */
2662
+ fps?: number;
2663
+ /** Log-spaced bands. Default 32. */
2664
+ bands?: number;
2665
+ /** Lowest band edge, Hz. Default 50. */
2666
+ minHz?: number;
2667
+ /** Highest band edge, Hz. Default 12 000 (or Nyquist). */
2668
+ maxHz?: number;
2669
+ }
2670
+ /** Band edges in Hz, log-spaced. */
2671
+ declare function bandEdges(count: number, minHz: number, maxHz: number): number[];
2672
+ /**
2673
+ * Analyse decoded audio: a Hann-windowed FFT per frame into log-spaced
2674
+ * bands, each normalised to its own 98th percentile (floored 30 dB under the
2675
+ * loudest band's, so a quiet band is not stretched into noise), an RMS level
2676
+ * envelope, and onsets from low-band spectral flux.
2677
+ */
2678
+ declare function analyzeChannels(channels: readonly Float32Array[], sampleRate: number, options?: AnalyzeOptions): AudioLevels;
2679
+ /** Average adjacent bands down (or repeat them up) to `count` bands. */
2680
+ declare function resampleBands(bands: readonly (readonly number[])[], count: number): number[][];
2681
+ /** Each value falls no faster than `release` frames from its peak (attack is instant). */
2682
+ declare function smoothRelease(values: readonly number[], release: number): number[];
2683
+ /** The schema for `AudioLevels` props (Waveform, Captions `pulse`). */
2684
+ declare function audioLevelsSchema(): z.ZodType<AudioLevels>;
2685
+ //#endregion
2686
+ //#region src/core/bake.d.ts
2687
+ /**
2688
+ * Turn per-frame values into a few linear keyframes. Components solve motion
2689
+ * offline (springs, camera follow, arc-length travel) and bake it, so the
2690
+ * output stays plain keyframe JSON that seeks exactly.
2691
+ */
2692
+ /** `[frame, value]`: a linear keyframe, as `LayerAnimation.keys` takes it. */
2693
+ type BakedKey = [frame: number, value: number];
2694
+ interface BakeOptions {
2695
+ /** Max deviation (in the value's units) of the simplified curve. Default 0.25. */
2696
+ tolerance?: number;
2697
+ }
2698
+ /**
2699
+ * Simplify `values` (one per frame, starting at `startFrame`) to linear keys
2700
+ * whose interpolation stays within `tolerance` of every sample
2701
+ * (Ramer–Douglas–Peucker on the frame/value polyline). First and last
2702
+ * samples are always kept.
2703
+ */
2704
+ declare function bakeSamples(values: readonly number[], startFrame?: number, options?: BakeOptions): BakedKey[];
2705
+ /** Sample `fn` on every frame in [start, end] and bake it. */
2706
+ declare function bakeFunction(fn: (frame: number) => number, start: number, end: number, options?: BakeOptions): BakedKey[];
2707
+ /**
2708
+ * Damped spring from 0 to 1 in closed form: `stiffness` (k), `damping` (c),
2709
+ * `mass` (m), sampled in seconds. Under-damped springs overshoot.
2710
+ */
2711
+ declare function springAt(seconds: number, {
2712
+ stiffness,
2713
+ damping,
2714
+ mass
2715
+ }?: {
2716
+ stiffness?: number | undefined;
2717
+ damping?: number | undefined;
2718
+ mass?: number | undefined;
2025
2719
  }): number;
2026
2720
  /**
2027
2721
  * Frames until a spring stays within `epsilon` of rest, at `fps`; capped at
@@ -2318,257 +3012,83 @@ declare const themes: {
2318
3012
  mid: Elevation;
2319
3013
  high: Elevation;
2320
3014
  };
2321
- readonly motion: {
2322
- readonly ease: {
2323
- readonly enter: "back.out(1.8)";
2324
- readonly exit: string;
2325
- readonly move: string;
2326
- readonly snap: string;
2327
- };
2328
- readonly speed: {
2329
- readonly fast: 6;
2330
- readonly base: 12;
2331
- readonly slow: 24;
2332
- };
2333
- readonly spring: {
2334
- readonly settle: {
2335
- readonly stiffness: 300;
2336
- readonly damping: 26;
2337
- };
2338
- readonly base: {
2339
- readonly stiffness: 340;
2340
- readonly damping: 22;
2341
- };
2342
- readonly pop: {
2343
- readonly stiffness: 400;
2344
- readonly damping: 14;
2345
- };
2346
- };
2347
- };
2348
- readonly scale: 1;
2349
- readonly radius: {
2350
- sm: number;
2351
- md: number;
2352
- lg: number;
2353
- pill: number;
2354
- };
2355
- readonly stroke: {
2356
- hair: number;
2357
- base: number;
2358
- bold: number;
2359
- };
2360
- readonly mode: "dark";
2361
- readonly color: {
2362
- readonly bg: "#000000";
2363
- readonly surface: "#111111";
2364
- readonly raised: "#1c1c1c";
2365
- readonly line: "#333333";
2366
- readonly ink: "#ffffff";
2367
- readonly muted: "#a3a3a3";
2368
- readonly accent: "#c6ff00";
2369
- readonly accent2: "#ff2e88";
2370
- readonly positive: "#00e676";
2371
- readonly negative: "#ff1744";
2372
- readonly highlight: "#c6ff00";
2373
- readonly shadow: "#000000";
2374
- };
2375
- readonly font: {
2376
- display: string;
2377
- body: string;
2378
- mono: string;
2379
- hand?: string;
2380
- };
2381
- readonly weight: {
2382
- regular: number;
2383
- medium: number;
2384
- semibold: number;
2385
- bold: number;
2386
- heavy: number;
2387
- };
2388
- };
2389
- };
2390
- type ThemeName = keyof typeof themes;
2391
- /**
2392
- * Merge a partial theme over a base (default `themes.graphite`). Throws when
2393
- * `ink` on `surface` falls below WCAG 4.5:1 and both are hex colors.
2394
- */
2395
- declare function defineTheme(input?: ThemeInput | Theme, base?: Theme): Theme;
2396
- /** A theme's duration token in frames at `fps`. */
2397
- declare function themeFrames(theme: Theme, speed: keyof Theme["motion"]["speed"], fps?: number): number;
2398
- //#endregion
2399
- //#region src/core/path.d.ts
2400
- /**
2401
- * 2D path math: smooth curves through points, arc-length sampling, and SVG
2402
- * path strings. Used for pointer travel, camera moves and drawn marks.
2403
- */
2404
- type Vec2$1 = [x: number, y: number];
2405
- declare const dist: (a: Vec2$1, b: Vec2$1) => number;
2406
- declare const lerp2: (a: Vec2$1, b: Vec2$1, t: number) => Vec2$1;
2407
- /**
2408
- * Centripetal Catmull-Rom through `points`, flattened to a polyline with
2409
- * `steps` samples per segment. Centripetal (alpha 0.5) never loops or cusps
2410
- * between close points, which matters for pointer paths.
2411
- */
2412
- declare function catmullRom(points: readonly Vec2$1[], steps?: number): Vec2$1[];
2413
- /** A polyline with a cumulative arc-length table, sampled by distance. */
2414
- interface ArcPath {
2415
- readonly points: readonly Vec2$1[];
2416
- readonly length: number;
2417
- /** Point at `u` ∈ [0, 1] of the total length. */
2418
- at(u: number): Vec2$1;
2419
- /** Unit tangent direction (radians) at `u`. */
2420
- angleAt(u: number): number;
2421
- }
2422
- declare function arcPath(points: readonly Vec2$1[]): ArcPath;
2423
- /** SVG path data for a polyline (optionally closed). Rounded to 0.01 px. */
2424
- declare function toPathData(points: readonly Vec2$1[], closed?: boolean): string;
2425
- /**
2426
- * Scale and offset SVG path data: `x' = x × scale + dx`. Absolute commands
2427
- * move by the offset; relative ones (and arc radii) only scale. Used to
2428
- * size glyphs designed on a small grid, and logo marks in their viewBox.
2429
- */
2430
- declare function transformPathData(d: string, scale: number, dx?: number, dy?: number): string;
2431
- //#endregion
2432
- //#region src/core/draw.d.ts
2433
- interface Rect {
2434
- x: number;
2435
- y: number;
2436
- width: number;
2437
- height: number;
2438
- }
2439
- interface HandOptions {
2440
- /** Wobble amount in px at theme scale 1. 0 = clean geometry. */
2441
- wobble?: number;
2442
- seed?: number;
2443
- }
2444
- /** Keys for `trimEnd` 0 → 1 between `start` and `start + duration`. */
2445
- declare function drawOnKeys(start: number, duration: number, ease?: string): KeyframeTuple[];
2446
- /**
2447
- * Perturb points with seeded, low-frequency noise: neighbouring points move
2448
- * together, so lines bend instead of jittering.
2449
- */
2450
- declare function wobblePoints(points: readonly Vec2$1[], {
2451
- wobble,
2452
- seed
2453
- }?: HandOptions, variant?: number): Vec2$1[];
2454
- /** An ellipse around `rect` (+ padding); hand-drawn ellipses overshoot their start. */
2455
- declare function ellipsePath(rect: Rect, {
2456
- padding,
2457
- wobble,
2458
- seed
2459
- }?: HandOptions & {
2460
- padding?: number;
2461
- }, variant?: number): string;
2462
- /** A rectangle around `rect` (+ padding). */
2463
- declare function boxPath(rect: Rect, {
2464
- padding,
2465
- wobble,
2466
- seed
2467
- }?: HandOptions & {
2468
- padding?: number;
2469
- }, variant?: number): string;
2470
- /** A horizontal stroke from `from` to `to`. */
2471
- declare function linePath(from: Vec2$1, to: Vec2$1, {
2472
- wobble,
2473
- seed
2474
- }?: HandOptions, variant?: number): string;
2475
- /** A wavy line from `from` to `to`, `waves` crests of `amplitude` px. */
2476
- declare function squigglePath(from: Vec2$1, to: Vec2$1, {
2477
- amplitude,
2478
- waves,
2479
- wobble,
2480
- seed
2481
- }?: HandOptions & {
2482
- amplitude?: number;
2483
- waves?: number;
2484
- }, variant?: number): string;
2485
- type ArrowCurve = "straight" | "arc" | "swoop";
2486
- interface ArrowGeometry {
2487
- /** The shaft, drawn from `from` to just before `to`. */
2488
- shaft: string;
2489
- /** The head, two strokes meeting at `to`. */
2490
- head: string;
2491
- }
2492
- /** An arrow from `from` to `to` with a separate head path. */
2493
- declare function arrowPaths(from: Vec2$1, to: Vec2$1, {
2494
- curve,
2495
- headSize,
2496
- wobble,
2497
- seed
2498
- }?: HandOptions & {
2499
- curve?: ArrowCurve;
2500
- headSize?: number;
2501
- }, variant?: number): ArrowGeometry;
2502
- /**
2503
- * Hand-drawn "boil": `d` keys that switch between `variants` poses every
2504
- * `every` frames with hold interpolation, from `start` to `end`.
2505
- * `makePath(variant)` must be deterministic for a variant index.
2506
- */
2507
- declare function boilKeys(makePath: (variant: number) => string, {
2508
- start,
2509
- end,
2510
- every,
2511
- variants
2512
- }: {
2513
- start: number;
2514
- end: number;
2515
- every: number;
2516
- variants?: number;
2517
- }): KeyframeTuple[];
2518
- //#endregion
2519
- //#region src/core/text.d.ts
2520
- /** The subset of `FontManager.measure` options components pass. */
2521
- interface MeasureOptions {
2522
- fontFamily: string;
2523
- fontSize?: number;
2524
- fontWeight?: string | number;
2525
- letterSpacing?: number;
2526
- lineHeight?: number;
2527
- width?: number;
2528
- align?: "left" | "center" | "right";
2529
- direction?: "ltr" | "rtl" | "auto";
2530
- }
2531
- interface GlyphBox {
2532
- char: string;
2533
- index: number;
2534
- x: number;
2535
- width: number;
2536
- line: number;
2537
- rtl?: boolean;
2538
- }
2539
- /** The subset of `FontManager.measure` results components read. */
2540
- interface Metrics$1 {
2541
- width: number;
2542
- height: number;
2543
- lines: number;
2544
- lineHeight: number;
2545
- glyphs: GlyphBox[];
2546
- caretX(count: number): number;
2547
- }
2548
- type MeasureFn = (text: string, options: MeasureOptions) => Metrics$1;
2549
- interface WordRange {
2550
- text: string;
2551
- /** Index of the first character (code units). */
2552
- start: number;
2553
- /** Index after the last character. */
2554
- end: number;
2555
- index: number;
2556
- }
2557
- /** Whitespace-separated words with their character ranges. */
2558
- declare function wordRanges(text: string): WordRange[];
2559
- /** Character range of the `nth` match of `match` in `text`, or null. */
2560
- declare function findRange(text: string, match: string | RegExp, nth?: number): [number, number] | null;
2561
- /**
2562
- * Per-line x offset that `align` adds inside a box of `options.width`
2563
- * (measurement itself lays every line out from the left edge).
2564
- */
2565
- declare function lineShift(metrics: Metrics$1, line: number, options: MeasureOptions): number;
3015
+ readonly motion: {
3016
+ readonly ease: {
3017
+ readonly enter: "back.out(1.8)";
3018
+ readonly exit: string;
3019
+ readonly move: string;
3020
+ readonly snap: string;
3021
+ };
3022
+ readonly speed: {
3023
+ readonly fast: 6;
3024
+ readonly base: 12;
3025
+ readonly slow: 24;
3026
+ };
3027
+ readonly spring: {
3028
+ readonly settle: {
3029
+ readonly stiffness: 300;
3030
+ readonly damping: 26;
3031
+ };
3032
+ readonly base: {
3033
+ readonly stiffness: 340;
3034
+ readonly damping: 22;
3035
+ };
3036
+ readonly pop: {
3037
+ readonly stiffness: 400;
3038
+ readonly damping: 14;
3039
+ };
3040
+ };
3041
+ };
3042
+ readonly scale: 1;
3043
+ readonly radius: {
3044
+ sm: number;
3045
+ md: number;
3046
+ lg: number;
3047
+ pill: number;
3048
+ };
3049
+ readonly stroke: {
3050
+ hair: number;
3051
+ base: number;
3052
+ bold: number;
3053
+ };
3054
+ readonly mode: "dark";
3055
+ readonly color: {
3056
+ readonly bg: "#000000";
3057
+ readonly surface: "#111111";
3058
+ readonly raised: "#1c1c1c";
3059
+ readonly line: "#333333";
3060
+ readonly ink: "#ffffff";
3061
+ readonly muted: "#a3a3a3";
3062
+ readonly accent: "#c6ff00";
3063
+ readonly accent2: "#ff2e88";
3064
+ readonly positive: "#00e676";
3065
+ readonly negative: "#ff1744";
3066
+ readonly highlight: "#c6ff00";
3067
+ readonly shadow: "#000000";
3068
+ };
3069
+ readonly font: {
3070
+ display: string;
3071
+ body: string;
3072
+ mono: string;
3073
+ hand?: string;
3074
+ };
3075
+ readonly weight: {
3076
+ regular: number;
3077
+ medium: number;
3078
+ semibold: number;
3079
+ bold: number;
3080
+ heavy: number;
3081
+ };
3082
+ };
3083
+ };
3084
+ type ThemeName = keyof typeof themes;
2566
3085
  /**
2567
- * The boxes characters [start, end) cover: one rect per line, spanning the
2568
- * glyphs' advances, `lineHeight` tall. Whitespace at a line's ends is
2569
- * excluded.
3086
+ * Merge a partial theme over a base (default `themes.graphite`). Throws when
3087
+ * `ink` on `surface` falls below WCAG 4.5:1 and both are hex colors.
2570
3088
  */
2571
- declare function rangeRects(metrics: Metrics$1, start: number, end: number, options: MeasureOptions): Rect[];
3089
+ declare function defineTheme(input?: ThemeInput | Theme, base?: Theme): Theme;
3090
+ /** A theme's duration token in frames at `fps`. */
3091
+ declare function themeFrames(theme: Theme, speed: keyof Theme["motion"]["speed"], fps?: number): number;
2572
3092
  //#endregion
2573
3093
  //#region src/core/host.d.ts
2574
3094
  /** Photoshop-style layer styles (framefields' `LayerStyle`). Omitted styles are off. */
@@ -3470,97 +3990,6 @@ interface FontNeed {
3470
3990
  }
3471
3991
  declare function defineMeta(meta: ComponentMeta): ComponentMeta;
3472
3992
  //#endregion
3473
- //#region src/core/targets.d.ts
3474
- type Anchor = "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right"
3475
- /** Where a pointer should land: the centre, or mid-left for text. */ | "tip";
3476
- /** A node as targets read it: absolute numeric geometry, or text. */
3477
- interface TargetNode {
3478
- id?: string;
3479
- kind?: string;
3480
- x?: unknown;
3481
- y?: unknown;
3482
- width?: unknown;
3483
- height?: unknown;
3484
- text?: unknown;
3485
- content?: unknown;
3486
- [key: string]: unknown;
3487
- }
3488
- /** The frame context signals are read with. */
3489
- interface FrameContextLike {
3490
- frame: number;
3491
- fps: number;
3492
- time: number;
3493
- duration: number;
3494
- durationMs: number;
3495
- progress: number;
3496
- deltaTime: number;
3497
- }
3498
- /** A per-frame value: a signal (what tracked objects expose) or a function. */
3499
- type FrameValue = {
3500
- get(ctx?: FrameContextLike): number;
3501
- } | ((frame: number) => number);
3502
- interface TrackedObjectLike {
3503
- x: FrameValue;
3504
- y: FrameValue;
3505
- width: FrameValue;
3506
- height: FrameValue;
3507
- }
3508
- type Target = Vec2$1 | Rect | {
3509
- node: TargetNode;
3510
- anchor?: Anchor;
3511
- } | {
3512
- text: TargetNode;
3513
- match?: string | RegExp;
3514
- range?: [number, number];
3515
- nth?: number;
3516
- anchor?: Anchor;
3517
- } | {
3518
- track: TrackedObjectLike;
3519
- anchor?: Anchor;
3520
- } | ((frame: number) => Vec2$1 | Rect);
3521
- interface TargetContext {
3522
- measure?: MeasureFn;
3523
- /** Frame rate signals are sampled at (tracked targets). Default 30. */
3524
- fps?: number;
3525
- /** Font defaults for text nodes that don't set them. */
3526
- textDefaults?: Partial<MeasureOptions>;
3527
- }
3528
- type ResolvedTarget = {
3529
- kind: "static";
3530
- rects: Rect[];
3531
- anchor: Anchor;
3532
- } | {
3533
- kind: "dynamic";
3534
- at: (frame: number) => Rect;
3535
- anchor: Anchor;
3536
- };
3537
- /** Resolve a target to rects (static) or a per-frame rect (dynamic). */
3538
- declare function resolveTarget(target: Target, ctx?: TargetContext): ResolvedTarget;
3539
- /** A text target's string, measured glyphs and range, and where the node sits. */
3540
- interface TextLayout {
3541
- content: string;
3542
- metrics: ReturnType<MeasureFn>;
3543
- options: MeasureOptions;
3544
- range: [number, number];
3545
- /** The node's x / y: add to measured glyph positions. */
3546
- x: number;
3547
- y: number;
3548
- }
3549
- /** Measure a text target the way the renderer lays it out. */
3550
- declare function textLayout(target: Extract<Target, {
3551
- text: TargetNode;
3552
- }>, ctx: TargetContext): TextLayout;
3553
- /** The union rect of `rects`. */
3554
- declare function boundsOf(rects: readonly Rect[]): Rect;
3555
- /** The point of `rect` named by `anchor`. `tip` on text = start of the first line, mid-height. */
3556
- declare function anchorPoint(rect: Rect, anchor?: Anchor, isText?: boolean): Vec2$1;
3557
- /** The point a resolved target names at `frame` (static targets ignore frame). */
3558
- declare function targetPoint(resolved: ResolvedTarget, frame?: number, isText?: boolean): Vec2$1;
3559
- //#endregion
3560
- //#region src/core/schemas.d.ts
3561
- /** Any `Target`: [x, y], a rect, { node }, { text }, { track }, or (frame) => point. */
3562
- declare function targetSchema(): z.ZodType<Target>;
3563
- //#endregion
3564
3993
  //#region src/core/surface.d.ts
3565
3994
  type ElevationLevel = keyof Theme["elevation"];
3566
3995
  /** Layer styles for `level`: a drop shadow and, when the theme asks, a top-edge highlight. */
@@ -3617,6 +4046,13 @@ declare function chain(durations: readonly number[], start?: number, gap?: numbe
3617
4046
  declare function typingFrames(text: string, cps: number, fps: number, r: Rng, start?: number): number[];
3618
4047
  //#endregion
3619
4048
  //#endregion
4049
+ //#region ../components/dist/toolkit.d.mts
4050
+ //#region src/core/schemas.d.ts
4051
+
4052
+ /** Any `Target`: [x, y], a rect, { node }, { text }, { track }, or (frame) => point. */
4053
+ declare function targetSchema(): z.ZodType<Target>;
4054
+ //#endregion
4055
+ //#endregion
3620
4056
  //#region ../ai/dist/index.d.mts
3621
4057
  //#region src/types.d.ts
3622
4058
  /** Model input or output when its shape isn't declared. Pass a type argument to name it. */
@@ -3930,6 +4366,86 @@ interface ChartOptions {
3930
4366
  }
3931
4367
  declare const DEFAULT_CHART_COLORS: readonly ["#6366f1", "#22d3ee", "#f59e0b", "#ec4899", "#10b981", "#8b5cf6", "#f97316", "#3b82f6"];
3932
4368
  //#endregion
4369
+ //#region src/retarget.d.ts
4370
+ /** Anything that answers where a keypoint is at a frame (a vision `PersonTrack`, a mocap reader). */
4371
+ interface PoseSource {
4372
+ point(name: PoseKeypointName, frame: number): {
4373
+ x: number;
4374
+ y: number;
4375
+ visibility: number;
4376
+ };
4377
+ }
4378
+ /** The bones a performer's 2D pose can aim. */
4379
+ type RetargetBone = "spine" | "neck" | "leftUpperArm" | "leftLowerArm" | "rightUpperArm" | "rightLowerArm" | "leftUpperLeg" | "leftLowerLeg" | "rightUpperLeg" | "rightLowerLeg";
4380
+ /** Joint names per bone; names match without a namespace prefix and case (`"LeftArm"` finds `"mixamorig:LeftArm"`). */
4381
+ type RigMap = Partial<Record<RetargetBone, string>>;
4382
+ /** Joint names of common rigs. */
4383
+ declare const RIG_PRESETS: {
4384
+ /** Mixamo (`mixamorig:` prefix, any number). */
4385
+ readonly mixamo: {
4386
+ readonly spine: "Spine";
4387
+ readonly neck: "Neck";
4388
+ readonly leftUpperArm: "LeftArm";
4389
+ readonly leftLowerArm: "LeftForeArm";
4390
+ readonly rightUpperArm: "RightArm";
4391
+ readonly rightLowerArm: "RightForeArm";
4392
+ readonly leftUpperLeg: "LeftUpLeg";
4393
+ readonly leftLowerLeg: "LeftLeg";
4394
+ readonly rightUpperLeg: "RightUpLeg";
4395
+ readonly rightLowerLeg: "RightLeg";
4396
+ };
4397
+ /** Unity humanoid / VRM bone names. */
4398
+ readonly humanoid: {
4399
+ readonly spine: "Spine";
4400
+ readonly neck: "Neck";
4401
+ readonly leftUpperArm: "LeftUpperArm";
4402
+ readonly leftLowerArm: "LeftLowerArm";
4403
+ readonly rightUpperArm: "RightUpperArm";
4404
+ readonly rightLowerArm: "RightLowerArm";
4405
+ readonly leftUpperLeg: "LeftUpperLeg";
4406
+ readonly leftLowerLeg: "LeftLowerLeg";
4407
+ readonly rightUpperLeg: "RightUpperLeg";
4408
+ readonly rightLowerLeg: "RightLowerLeg";
4409
+ };
4410
+ /** Blender Rigify deform bones. */
4411
+ readonly rigify: {
4412
+ readonly spine: "spine";
4413
+ readonly neck: "neck";
4414
+ readonly leftUpperArm: "upper_arm.L";
4415
+ readonly leftLowerArm: "forearm.L";
4416
+ readonly rightUpperArm: "upper_arm.R";
4417
+ readonly rightLowerArm: "forearm.R";
4418
+ readonly leftUpperLeg: "thigh.L";
4419
+ readonly leftLowerLeg: "shin.L";
4420
+ readonly rightUpperLeg: "thigh.R";
4421
+ readonly rightLowerLeg: "shin.R";
4422
+ };
4423
+ };
4424
+ interface RetargetOptions {
4425
+ /** The character's joint names: a preset or a map. Default "mixamo". */
4426
+ rig?: keyof typeof RIG_PRESETS | RigMap;
4427
+ /** Only these bones (e.g. arms, over a walk clip). Default: every mapped bone. */
4428
+ bones?: RetargetBone[];
4429
+ /**
4430
+ * Drive the character's right side with the performer's left: for a
4431
+ * character seen from behind. Default false (both face the camera).
4432
+ */
4433
+ mirror?: boolean;
4434
+ /**
4435
+ * Keypoints less sure than this hand their bone back to the animated
4436
+ * pose, fading over the next 0.2 of confidence. Default 0.3.
4437
+ */
4438
+ minVisibility?: number;
4439
+ /** Overall blend over the animated pose, 0..1: a number, keys, function or signal. Default 1. */
4440
+ weight?: NumberTrack;
4441
+ }
4442
+ /**
4443
+ * Aim constraints that make a character copy `source`'s pose: put them on
4444
+ * a glTF model's `aim`. Bones whose joints the rig map doesn't name, or
4445
+ * whose keypoints the vision isn't sure of, keep the animated pose.
4446
+ */
4447
+ declare function retargetPose(source: PoseSource, options?: RetargetOptions): AimConstraint[];
4448
+ //#endregion
3933
4449
  //#region src/clip-vision.d.ts
3934
4450
  type PoseKeypointName = (typeof COCO17_KEYPOINT_NAMES)[number];
3935
4451
  interface ClipVisionOptions {
@@ -3962,6 +4478,14 @@ interface ClipVisionOptions {
3962
4478
  * clip tracks no pose or silhouette unless `pose` / `mask` ask for them.
3963
4479
  */
3964
4480
  depth?: boolean;
4481
+ /**
4482
+ * Resolve the subject's edge to soft alpha (ViTMatte Small): hair, motion
4483
+ * blur and see-through parts that a hard mask cuts off. `true`, or
4484
+ * `{ band, resolution }` (see `MatteRefineOptions`). Matte layers, `signals`
4485
+ * masks and `subject` read the soft alpha; each prompted track keeps its own.
4486
+ * Mattes persist apart from the masks, so turning this on reuses them.
4487
+ */
4488
+ matting?: boolean | MatteRefineOptions;
3965
4489
  /** Silhouette cell size in source pixels (default 8: a 1920×1080 clip gives a 240×135 grid). */
3966
4490
  maskCell?: number;
3967
4491
  /** Keypoints are averaged over ±`smoothing` frames, weighted by confidence (default 2; 0 = raw). */
@@ -4052,6 +4576,10 @@ declare class ClipVision implements ClipSubjectSource {
4052
4576
  private readonly subjects;
4053
4577
  private wantSubjects;
4054
4578
  private subjectsLoaded?;
4579
+ /** Soft alpha per source frame (`matting`); null when the frame holds no subject. */
4580
+ private readonly mattes;
4581
+ private mattesLoaded?;
4582
+ private unsavedMattes;
4055
4583
  /** Depth per source frame; null when the frame did not decode. Bounded when on disk. */
4056
4584
  private readonly depths;
4057
4585
  /** Source frames whose depth is on disk. */
@@ -4101,6 +4629,14 @@ declare class ClipVision implements ClipSubjectSource {
4101
4629
  get tracksPose(): boolean;
4102
4630
  /** Whether frames carry the person's silhouette: on by default, off for depth clips. */
4103
4631
  get tracksMask(): boolean;
4632
+ /** Whether subjects are matted to soft alpha. */
4633
+ get tracksMatting(): boolean;
4634
+ private get matteSettings();
4635
+ /**
4636
+ * A stored subject's alpha at a source frame: the matte when the clip mattes
4637
+ * (undefined until matted), else the mask. With `id`, that track only.
4638
+ */
4639
+ private alpha;
4104
4640
  /** Whether frames carry relative depth. */
4105
4641
  get tracksDepth(): boolean;
4106
4642
  /**
@@ -4129,7 +4665,15 @@ declare class ClipVision implements ClipSubjectSource {
4129
4665
  /** Loads `@framefields/vision-sam` and validates the prompts once, on first use. */
4130
4666
  private prompted;
4131
4667
  private compute;
4668
+ /** Pose, silhouette and subject of every frame in `from…to` not analysed yet. */
4669
+ private computeSubjects;
4132
4670
  private visionRunner;
4671
+ /**
4672
+ * The soft alpha of every subject in `from…to` not matted yet: one
4673
+ * ViTMatte pass per frame over every track's edge. Prompted label maps grow
4674
+ * into the soft edge, so each track keeps its own alpha.
4675
+ */
4676
+ private computeMattes;
4133
4677
  /** Depth of every source frame in `from…to` not analysed yet, saved one file per frame. */
4134
4678
  private computeDepth;
4135
4679
  private hasDepth;
@@ -4178,6 +4722,13 @@ declare class ClipVision implements ClipSubjectSource {
4178
4722
  /** Subjects live beside the results: large, and only matte layers read them. */
4179
4723
  private subjectsPath;
4180
4724
  private loadSubjects;
4725
+ /**
4726
+ * Mattes live beside the subjects they refine, keyed by the matting model
4727
+ * and settings, so toggling matting never recomputes the masks.
4728
+ */
4729
+ private mattesPath;
4730
+ private loadMattes;
4731
+ private saveMattes;
4181
4732
  private saveSubjects;
4182
4733
  }
4183
4734
  /**
@@ -4201,6 +4752,12 @@ declare class PersonTrack {
4201
4752
  y: number;
4202
4753
  visibility: number;
4203
4754
  };
4755
+ /**
4756
+ * Aim constraints that make a 3D character copy this person's pose, for
4757
+ * a glTF model's `aim`: `Layer.glb(src, { aim: person.retarget({ rig: "mixamo" }) })`.
4758
+ * Place the person first (`place()`), so directions read in composition px.
4759
+ */
4760
+ retarget(options?: RetargetOptions): AimConstraint[];
4204
4761
  /** Signals for a keypoint, for `.signal("x", …)`; read while rendering. */
4205
4762
  signals(name: PoseKeypointName): {
4206
4763
  x: FrameSignal<number>;
@@ -4396,6 +4953,11 @@ type Shape3D = {
4396
4953
  /** Flat [x0, y0, z0, …] around the body origin. */ | {
4397
4954
  kind: "hull";
4398
4955
  points: number[];
4956
+ }
4957
+ /** Exact triangle mesh (static / kinematic bodies: terrain, sculptures). */ | {
4958
+ kind: "trimesh";
4959
+ vertices: number[];
4960
+ indices: number[];
4399
4961
  };
4400
4962
  interface BodySpecBase extends MaterialSpec {
4401
4963
  type: BodyType;
@@ -4460,6 +5022,10 @@ interface SimBody<V, R> {
4460
5022
  mass(): number;
4461
5023
  setEnabled(enabled: boolean): void;
4462
5024
  applyImpulse(impulse: V): void;
5025
+ /** Teleports the body (wakes it): position, and rotation. */
5026
+ setPose(position: V, rotation: R): void;
5027
+ /** Sets linear and angular velocity (wakes the body). */
5028
+ setVelocity(linear: V, angular: R extends number ? number : Vec3): void;
4463
5029
  setKinematicTarget(position: V, rotation: R): void;
4464
5030
  }
4465
5031
  type SimBody2D = SimBody<Vec2, number>;
@@ -4626,6 +5192,10 @@ declare abstract class WorldCore<V extends number[], R, B extends CoreBody<V, R>
4626
5192
  targets?: Set<B>;
4627
5193
  accel: (body: B, frame: number) => V | null | undefined;
4628
5194
  }>;
5195
+ /** Run after each simulated frame with the pairs that started touching in it. */
5196
+ protected readonly stepHooks: Array<(frame: number, pairs: Array<[B, B]>) => void>;
5197
+ /** Run once the whole simulation has finished (not in live worlds). */
5198
+ protected readonly simulatedHooks: Array<() => void>;
4629
5199
  private readonly worldRecording;
4630
5200
  private readonly allCollisions;
4631
5201
  /** No more bodies, joints or forces: the world has started (or finished). */
@@ -4790,6 +5360,49 @@ declare class Particles extends Effect$1<Record<string, never>> implements Parti
4790
5360
  particleFrame(frame: number, fps: number): ParticleFrame;
4791
5361
  }
4792
5362
  //#endregion
5363
+ //#region src/physics/fracture3d.d.ts
5364
+ interface Fracture3DOptions {
5365
+ /** Voronoi pieces (2..256). Default 48. */
5366
+ cells?: number;
5367
+ /** Same seed, same pieces. Default 1. */
5368
+ seed?: number;
5369
+ /** Scene point (px) the pieces crowd around and fly from. */
5370
+ impactPoint?: [number, number, number];
5371
+ /**
5372
+ * Composition frame the layer breaks at, or `"onImpact"` (default): the
5373
+ * first frame a body hits it. An animated layer (position, rotation)
5374
+ * collides along its path while whole and breaks where it is, its pieces
5375
+ * carrying its motion.
5376
+ */
5377
+ fractureFrame?: number | "onImpact";
5378
+ /** Color of the faces the break exposes. Default "#d8d2c4". */
5379
+ interiorColor?: string;
5380
+ /** Roughness of the exposed faces. Default 0.9. */
5381
+ interiorRoughness?: number;
5382
+ /** Outward speed at the impact point, px/s, fading with distance. Default 0. */
5383
+ explosionSpeed?: number;
5384
+ /** Random tumble, degrees per second. Default a third of `explosionSpeed`. */
5385
+ spin?: number;
5386
+ /** Share of the hitting body's velocity the nearest pieces take. Default 0.35. */
5387
+ momentumTransfer?: number;
5388
+ density?: number;
5389
+ friction?: number;
5390
+ restitution?: number;
5391
+ }
5392
+ /** A fractured layer: its pieces, and the collider that stands in for it while whole. */
5393
+ declare class Fracture3D {
5394
+ readonly node: LayoutNode;
5395
+ readonly pieces: readonly PhysicsBody3D[];
5396
+ readonly intact: PhysicsBody3D;
5397
+ private readonly world;
5398
+ /** @internal */
5399
+ brokeAt?: number;
5400
+ /** @internal */
5401
+ constructor(node: LayoutNode, pieces: readonly PhysicsBody3D[], intact: PhysicsBody3D, world: PhysicsWorld3D);
5402
+ /** Composition frame it broke at (after simulating); undefined if it never did. */
5403
+ get frame(): number | undefined;
5404
+ }
5405
+ //#endregion
4793
5406
  //#region src/physics/world3d.d.ts
4794
5407
  interface World3DOptions extends PhysicsWorldOptions {
4795
5408
  /** px/s², y down. A number pulls straight down. Default 2400. */
@@ -4831,10 +5444,12 @@ interface Body3DOptions extends Omit<BodyCommonOptions, "lockRotation"> {
4831
5444
  };
4832
5445
  /**
4833
5446
  * Collider: `"auto"` (default) reads the Layer3D primitive (box, sphere,
4834
- * cylinder) and falls back to the mesh's convex hull for models and
4835
- * tapered or uneven shapes. Force `"box"`, `"sphere"`, `"cylinder"` or `"hull"`.
5447
+ * cylinder), uses the exact triangles of `Layer3D.terrain` / `Layer3D.sdf`
5448
+ * on static bodies, and falls back to the mesh's convex hull for models and
5449
+ * tapered or uneven shapes. Force `"box"`, `"sphere"`, `"cylinder"`,
5450
+ * `"hull"` or `"mesh"` (exact triangles; static or kinematic bodies only).
4836
5451
  */
4837
- shape?: "auto" | "box" | "sphere" | "cylinder" | "hull";
5452
+ shape?: "auto" | "box" | "sphere" | "cylinder" | "hull" | "mesh";
4838
5453
  /** Collider size override `[width, height, depth]`, px (before the layer's scale). */
4839
5454
  size?: [number, number, number];
4840
5455
  /** px/s. */
@@ -4851,11 +5466,10 @@ interface Body3DOptions extends Omit<BodyCommonOptions, "lockRotation"> {
4851
5466
  rotateZ?: PhysicsDriver;
4852
5467
  };
4853
5468
  }
5469
+ /** @internal */
4854
5470
  type LayerLike$1 = Record<string, unknown> & {
4855
5471
  kind?: string;
4856
5472
  };
4857
- /** Quaternion of the renderer's Euler order: R = Rz · Ry · Rx (degrees). */
4858
-
4859
5473
  /**
4860
5474
  * A simulated 3D body. Like {@link PhysicsBody2D}, its signals hold one
4861
5475
  * value per composition frame and reading one runs the simulation.
@@ -4877,6 +5491,16 @@ declare class PhysicsBody3D implements CoreBody<Vec3, Quat> {
4877
5491
  rotation: Vec3;
4878
5492
  }, options: Body3DOptions, recording: Recording);
4879
5493
  get startFrame(): number;
5494
+ private wokeAt?;
5495
+ /**
5496
+ * @internal Starts the body now, mid-simulation (`frame` relative to the
5497
+ * world's start): it moves from the next frame, at this velocity (px/s,
5498
+ * degrees per second), from `pose` (px) when given.
5499
+ */
5500
+ wake(frame: number, velocity: Vec3, angularVelocity: Vec3, pose?: {
5501
+ position: Vec3;
5502
+ rotation: Quat;
5503
+ }): void;
4880
5504
  get gravityScale(): number;
4881
5505
  get output(): Body3DOptions["output"];
4882
5506
  /** Center, px (what Layer3D's `x` / `y` / `z` mean). */
@@ -4944,6 +5568,20 @@ declare class PhysicsWorld3D extends WorldCore<Vec3, Quat, PhysicsBody3D> {
4944
5568
  constructor(backend: PhysicsBackend, options: World3DOptions);
4945
5569
  /** Adds a body for a Layer3D primitive or model (centered on its `x/y/z`), or a plain box. */
4946
5570
  body(target: LayoutNode | PhysicsBox3D, options?: Body3DOptions): PhysicsBody3D;
5571
+ /** @internal A body with an explicit collider (px), at a pose in px and degrees. */
5572
+ shapedBody(layer: LayerLike$1 | undefined, position: Vec3, rotation: Vec3, shape: Shape3D, options: Body3DOptions): PhysicsBody3D;
5573
+ /** @internal Runs after each simulated frame (frame relative to the world's start). */
5574
+ onStep(hook: (frame: number, pairs: Array<[PhysicsBody3D, PhysicsBody3D]>) => void): void;
5575
+ /** @internal Runs once the simulation has finished. */
5576
+ onSimulated(hook: () => void): void;
5577
+ /**
5578
+ * Breaks a Layer3D primitive, extruded text or loaded model into Voronoi
5579
+ * pieces that stay together, looking intact, until the fracture frame (or
5580
+ * until something hits it), then fly apart as rigid bodies. The node is
5581
+ * changed in place: add it to the composition as usual. All pieces draw
5582
+ * in one call per material, the cut faces in `interiorColor`.
5583
+ */
5584
+ fracture(target: LayoutNode, options?: Fracture3DOptions): Fracture3D;
4947
5585
  /** A fixed, very large floor whose top face sits at `y`. */
4948
5586
  ground(options: {
4949
5587
  y: number;
@@ -4988,6 +5626,47 @@ declare class PhysicsWorld3D extends WorldCore<Vec3, Quat, PhysicsBody3D> {
4988
5626
  private endpoints;
4989
5627
  }
4990
5628
  //#endregion
5629
+ //#region src/procedural3d.d.ts
5630
+ type GeometryKeys = "type" | "color" | "material";
5631
+ type Terrain3DOptions = Primitive3DNodeOptions & Omit<TerrainGeometryOptions, GeometryKeys> & {
5632
+ /**
5633
+ * Custom heights: `(u, v) => 0..1` over the grid (u across x, v across
5634
+ * z, both 0..1 from the near-left corner). Sampled into `heights`.
5635
+ */
5636
+ heightFn?: (u: number, v: number) => number;
5637
+ };
5638
+ type Sdf3DOptions = Primitive3DNodeOptions & Omit<SdfGeometryOptions, GeometryKeys>;
5639
+ type Scatter3DOptions = Omit<Instances3DOptions, "count" | "instanceAt" | "transforms" | "bodies"> & ScatterOptions & {
5640
+ /** The surface: `Layer3D.terrain`, `Layer3D.sdf`, any primitive or `Layer.model`. */
5641
+ surface: AnimatableNode<Model3DNode>;
5642
+ /** Push each instance this far into the surface, px. Default 0. */
5643
+ sink?: number;
5644
+ /** Procedural wind sway; the meshes bend from their base. */
5645
+ wind?: WindConfig;
5646
+ };
5647
+ /** A terrain node's helpers for standing other layers on it. */
5648
+ interface TerrainSurface {
5649
+ /**
5650
+ * Surface y at (x, z) in the terrain's parent space (where its own x, y,
5651
+ * z live), so a camera, light, video screen or model can stand on it.
5652
+ * Follows the terrain's position and scale; rotation is not applied.
5653
+ */
5654
+ heightAt(x: number, z: number): number;
5655
+ /** Unit surface normal at (x, z), parent space (unrotated). */
5656
+ normalAt(x: number, z: number): [number, number, number];
5657
+ /** Normalized altitude 0..1 at (x, z). */
5658
+ elevationAt(x: number, z: number): number;
5659
+ }
5660
+ type Terrain3DNode = AnimatableNode<Model3DNode> & TerrainSurface;
5661
+ type Scatter3DNode = AnimatableNode<Model3DNode> & {
5662
+ /**
5663
+ * The scattered points (surface position, normal, rotation, scale) in the
5664
+ * surface's parent space, for placing other layers among the instances.
5665
+ * Empty for a surface loaded from a file (its mesh is read at render).
5666
+ */
5667
+ points(): ScatterPoint[];
5668
+ };
5669
+ //#endregion
4991
5670
  //#region src/swarm3d.d.ts
4992
5671
  interface Swarm3DOptions extends Surface3DOptions {
4993
5672
  id?: string;
@@ -5122,6 +5801,36 @@ interface Surface3DOptions {
5122
5801
  emissiveIntensity?: number;
5123
5802
  /** Falls into a `castShadow` light's shadow map (meshes default on, flat layers off). */
5124
5803
  castShadow?: boolean;
5804
+ /** Clear varnish layer over the base 0..1 (car paint, lacquer, wet coats). */
5805
+ clearcoat?: SignalOrNumber;
5806
+ /** Roughness of the clearcoat layer 0..1. Default 0.08. */
5807
+ clearcoatRoughness?: SignalOrNumber;
5808
+ /** Stretched highlight -1..1 (brushed metal, satin, hair). 0 = round. */
5809
+ anisotropy?: SignalOrNumber;
5810
+ /** Brush direction in degrees around the surface normal. Default 0. */
5811
+ anisotropyRotation?: SignalOrNumber;
5812
+ /** Light bleeding through the surface 0..1 (wax, jade, skin, leaves). */
5813
+ subsurface?: SignalOrNumber;
5814
+ /** Color of the scattered light (CSS color). Default "#ff6b4a". */
5815
+ subsurfaceColor?: string;
5816
+ /** Velvet / cloth rim glow at grazing angles 0..1. */
5817
+ sheen?: SignalOrNumber;
5818
+ /** Sheen tint (CSS color). Default "#ffffff". */
5819
+ sheenColor?: string;
5820
+ /** Sheen fiber roughness 0.05..1. Default 0.5. */
5821
+ sheenRoughness?: SignalOrNumber;
5822
+ /** Thin-film rainbow (soap, oil, beetle shells): 0..1 or `{ intensity, thickness, ior }`. */
5823
+ iridescence?: SignalOrNumber | IridescenceConfig;
5824
+ /** Film thickness in nanometers 100..1200. Default 400. */
5825
+ iridescenceThickness?: SignalOrNumber;
5826
+ /** Film refractive index 1.05..2.5. Default 1.3. */
5827
+ iridescenceIor?: SignalOrNumber;
5828
+ /** Project textures in world space instead of UVs: `true` or `{ scale, sharpness }`. */
5829
+ triplanar?: boolean | TriplanarConfig;
5830
+ /** Triplanar tiling: repeats per 256 world px (> 0 turns triplanar on). */
5831
+ triplanarScale?: SignalOrNumber;
5832
+ /** Triplanar axis blend sharpness 1..16. Default 4. */
5833
+ triplanarSharpness?: SignalOrNumber;
5125
5834
  }
5126
5835
  interface CubeFaceConfig extends Surface3DOptions {
5127
5836
  background?: string;
@@ -5152,6 +5861,12 @@ interface Cube3DOptions extends Surface3DOptions {
5152
5861
  rotateX?: number;
5153
5862
  rotateY?: number;
5154
5863
  rotateZ?: number;
5864
+ /** Alias for `rotateX`. */
5865
+ rotationX?: number;
5866
+ /** Alias for `rotateY`. */
5867
+ rotationY?: number;
5868
+ /** Alias for `rotateZ`. */
5869
+ rotationZ?: number;
5155
5870
  faces?: {
5156
5871
  front?: CubeFaceInput;
5157
5872
  back?: CubeFaceInput;
@@ -5184,6 +5899,12 @@ interface Carousel3DOptions {
5184
5899
  rotateX?: number;
5185
5900
  rotateY?: number;
5186
5901
  rotateZ?: number;
5902
+ /** Alias for `rotateX`. */
5903
+ rotationX?: number;
5904
+ /** Alias for `rotateY`. */
5905
+ rotationY?: number;
5906
+ /** Alias for `rotateZ`. */
5907
+ rotationZ?: number;
5187
5908
  faceInward?: boolean;
5188
5909
  itemWidth?: number;
5189
5910
  itemHeight?: number;
@@ -5198,8 +5919,12 @@ interface Prism3DOptions extends Surface3DOptions {
5198
5919
  radius?: number;
5199
5920
  /** Optional top (-y) radius; defaults to `radius`. */
5200
5921
  radiusTop?: number;
5922
+ /** Alias for `radiusTop`. */
5923
+ topRadius?: number;
5201
5924
  /** Optional bottom (+y) radius; defaults to `radius`. */
5202
5925
  radiusBottom?: number;
5926
+ /** Alias for `radiusBottom`. */
5927
+ bottomRadius?: number;
5203
5928
  /** Height along Y (default 100). */
5204
5929
  height?: number;
5205
5930
  x?: number;
@@ -5208,6 +5933,12 @@ interface Prism3DOptions extends Surface3DOptions {
5208
5933
  rotateX?: number;
5209
5934
  rotateY?: number;
5210
5935
  rotateZ?: number;
5936
+ /** Alias for `rotateX`. */
5937
+ rotationX?: number;
5938
+ /** Alias for `rotateY`. */
5939
+ rotationY?: number;
5940
+ /** Alias for `rotateZ`. */
5941
+ rotationZ?: number;
5211
5942
  scale?: number;
5212
5943
  scaleX?: number;
5213
5944
  scaleY?: number;
@@ -5248,6 +5979,8 @@ interface Pyramid3DOptions extends Surface3DOptions {
5248
5979
  radius?: number;
5249
5980
  /** Optional top (-y) truncation radius for a frustum pyramid (default 0 = sharp apex). */
5250
5981
  radiusTop?: number;
5982
+ /** Alias for `radiusTop`. */
5983
+ topRadius?: number;
5251
5984
  /** Height from base (+y) to apex (-y) (default 100). */
5252
5985
  height?: number;
5253
5986
  /** Leave the base cap off (default false = solid capped pyramid). */
@@ -5260,6 +5993,12 @@ interface Pyramid3DOptions extends Surface3DOptions {
5260
5993
  rotateX?: number;
5261
5994
  rotateY?: number;
5262
5995
  rotateZ?: number;
5996
+ /** Alias for `rotateX`. */
5997
+ rotationX?: number;
5998
+ /** Alias for `rotateY`. */
5999
+ rotationY?: number;
6000
+ /** Alias for `rotateZ`. */
6001
+ rotationZ?: number;
5263
6002
  scale?: number;
5264
6003
  scaleX?: number;
5265
6004
  scaleY?: number;
@@ -5293,6 +6032,12 @@ interface Plane3DOptions extends Surface3DOptions {
5293
6032
  rotateX?: number;
5294
6033
  rotateY?: number;
5295
6034
  rotateZ?: number;
6035
+ /** Alias for `rotateX`. */
6036
+ rotationX?: number;
6037
+ /** Alias for `rotateY`. */
6038
+ rotationY?: number;
6039
+ /** Alias for `rotateZ`. */
6040
+ rotationZ?: number;
5296
6041
  background?: string;
5297
6042
  borderRadius?: number;
5298
6043
  twoSided?: boolean;
@@ -5324,6 +6069,12 @@ interface Grid3DOptions {
5324
6069
  rotateX?: number;
5325
6070
  rotateY?: number;
5326
6071
  rotateZ?: number;
6072
+ /** Alias for `rotateX`. */
6073
+ rotationX?: number;
6074
+ /** Alias for `rotateY`. */
6075
+ rotationY?: number;
6076
+ /** Alias for `rotateZ`. */
6077
+ rotationZ?: number;
5327
6078
  opacity?: number;
5328
6079
  }
5329
6080
  interface Text3DOptions extends Surface3DOptions {
@@ -5340,6 +6091,12 @@ interface Text3DOptions extends Surface3DOptions {
5340
6091
  rotateX?: number;
5341
6092
  rotateY?: number;
5342
6093
  rotateZ?: number;
6094
+ /** Alias for `rotateX`. */
6095
+ rotationX?: number;
6096
+ /** Alias for `rotateY`. */
6097
+ rotationY?: number;
6098
+ /** Alias for `rotateZ`. */
6099
+ rotationZ?: number;
5343
6100
  scale?: number;
5344
6101
  scaleX?: number;
5345
6102
  scaleY?: number;
@@ -5400,6 +6157,12 @@ interface Primitive3DNodeOptions extends Surface3DOptions {
5400
6157
  rotateX?: number;
5401
6158
  rotateY?: number;
5402
6159
  rotateZ?: number;
6160
+ /** Alias for `rotateX`. */
6161
+ rotationX?: number;
6162
+ /** Alias for `rotateY`. */
6163
+ rotationY?: number;
6164
+ /** Alias for `rotateZ`. */
6165
+ rotationZ?: number;
5403
6166
  scale?: number;
5404
6167
  scaleX?: number;
5405
6168
  scaleY?: number;
@@ -5429,6 +6192,16 @@ interface Primitive3DNodeOptions extends Surface3DOptions {
5429
6192
  opacity?: number;
5430
6193
  startFrame?: number;
5431
6194
  durationFrames?: number;
6195
+ /**
6196
+ * Base-color texture wrapped by the mesh's UVs: an image path, or any
6197
+ * layer (`Layer.video`, `Layer.image`, a layout tree with text…) drawn
6198
+ * fresh every frame, so video plays on the surface. Without its own
6199
+ * x / y / width / height the layer fills the frame, which maps to the
6200
+ * whole UV square. Combine with `triplanar` to project it in world space.
6201
+ */
6202
+ texture?: string | LayoutNode;
6203
+ /** Procedural wind sway: vertices bend downwind by height above the mesh base. */
6204
+ wind?: WindConfig;
5432
6205
  }
5433
6206
  type RoundedBox3DOptions = Primitive3DNodeOptions & Omit<RoundedBoxGeometryOptions, "type" | "color" | "material">;
5434
6207
  type Sphere3DOptions = Primitive3DNodeOptions & Omit<SphereGeometryOptions, "type" | "color" | "material">;
@@ -5470,6 +6243,12 @@ interface InstanceTransform3D {
5470
6243
  color?: string | [number, number, number, number];
5471
6244
  emissive?: string | [number, number, number];
5472
6245
  emissiveIntensity?: number;
6246
+ /** Crowds: index into `crowd.clips` (default: instance index % clip count). */
6247
+ clip?: number;
6248
+ /** Crowds: seconds into the clip at frame 0 (default: seeded random, or 0 with `phase: "sync"`). */
6249
+ animOffset?: number;
6250
+ /** Crowds: playback speed (default: seeded within `crowd.speedRange`). */
6251
+ animSpeed?: number;
5473
6252
  }
5474
6253
  interface Instances3DOptions extends Surface3DOptions {
5475
6254
  id?: string;
@@ -5493,12 +6272,27 @@ interface Instances3DOptions extends Surface3DOptions {
5493
6272
  color: string;
5494
6273
  intensity?: number;
5495
6274
  };
6275
+ /** Procedural wind sway: each instance bends downwind from its base. */
6276
+ wind?: WindConfig;
6277
+ /**
6278
+ * Skinned crowd: the mesh is an animated model (`Layer.glb`, `Layer.gltf`)
6279
+ * and every instance plays one of `clips` at its own phase and speed,
6280
+ * skinned on the GPU from a palette baked once: thousands of characters,
6281
+ * one draw call per mesh.
6282
+ */
6283
+ crowd?: CrowdConfig;
5496
6284
  x?: number;
5497
6285
  y?: number;
5498
6286
  z?: number;
5499
6287
  rotateX?: number;
5500
6288
  rotateY?: number;
5501
6289
  rotateZ?: number;
6290
+ /** Alias for `rotateX`. */
6291
+ rotationX?: number;
6292
+ /** Alias for `rotateY`. */
6293
+ rotationY?: number;
6294
+ /** Alias for `rotateZ`. */
6295
+ rotationZ?: number;
5502
6296
  scale?: number;
5503
6297
  color?: string;
5504
6298
  colorTint?: string;
@@ -5538,12 +6332,12 @@ declare const Layer3D: {
5538
6332
  * outward flat-shaded facet normals, and full material options.
5539
6333
  * If `sideConfigs` are provided, builds a multi-panel preserve-3d container with all material props applied.
5540
6334
  */
5541
- prism(options: Prism3DOptions): Shape3DContainer;
6335
+ prism(options?: Prism3DOptions): SolidShape3DNode;
5542
6336
  /**
5543
6337
  * Creates a solid N-sided regular polygonal pyramid (or truncated pyramid when `radiusTop > 0`)
5544
6338
  * with a bottom cap and crisp flat-shaded side facets.
5545
6339
  */
5546
- pyramid(options: Pyramid3DOptions): AnimatableNode<Model3DNode>;
6340
+ pyramid(options?: Pyramid3DOptions): AnimatableNode<Model3DNode>;
5547
6341
  /**
5548
6342
  * Creates a standalone planar 3D card/quad.
5549
6343
  */
@@ -5638,6 +6432,30 @@ declare const Layer3D: {
5638
6432
  * Renders hundreds or thousands of 3D meshes in 1 draw call per mesh variant,
5639
6433
  * driven by Physics.world3d rigid bodies, procedural callbacks, or transform arrays.
5640
6434
  */
6435
+ /**
6436
+ * Procedural terrain: seeded fractal noise ("fbm" hills, "ridged"
6437
+ * mountains, "terrace" plateaus) or your own heights, optional cliff
6438
+ * overhangs, biome colors by altitude and slope, closed underneath into a
6439
+ * solid block. The node's y is the valley floor; peaks rise `height` px
6440
+ * above it. The node carries `heightAt(x, z)` / `normalAt(x, z)` for
6441
+ * standing cameras, lights, video screens and models on the ground.
6442
+ */
6443
+ terrain(options: Terrain3DOptions): Terrain3DNode;
6444
+ /**
6445
+ * A sculpture of signed-distance primitives (sphere, box, cylinder,
6446
+ * capsule, torus, gyroid) joined in order by union / subtract /
6447
+ * intersect, hard or smooth (`smoothness` px), meshed watertight inside
6448
+ * `bounds`. Colored primitives blend where their joins blend.
6449
+ */
6450
+ sdf(options: Sdf3DOptions): AnimatableNode<Model3DNode>;
6451
+ /**
6452
+ * Scatters instances of one or more meshes over a surface (terrain, SDF,
6453
+ * any primitive or `Layer.model` file): area-weighted, deterministic per
6454
+ * `seed`, filtered by slope / altitude / exclusion zones, spaced by
6455
+ * `minDistance`, each standing on its base. One draw call per mesh
6456
+ * variant. `wind` sways them; `.points()` returns where they stand.
6457
+ */
6458
+ scatter(options: Scatter3DOptions): Scatter3DNode;
5641
6459
  instances(options: Instances3DOptions): AnimatableNode<Model3DNode>;
5642
6460
  /**
5643
6461
  * GPU-simulated 3D particle swarm and shard system.
@@ -5648,43 +6466,43 @@ declare const Layer3D: {
5648
6466
  /**
5649
6467
  * Creates a 3D model node rendered natively with WebGPU mesh shaders.
5650
6468
  */
5651
- model(options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6469
+ model(options?: Model3DOptions): AnimatableNode<Model3DNode>;
5652
6470
  /**
5653
6471
  * Convenience helper to create a 3D Wavefront OBJ model node.
5654
6472
  */
5655
- obj(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6473
+ obj(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5656
6474
  /**
5657
6475
  * Convenience helper to create a 3D Autodesk FBX model node with skeletal animation support.
5658
6476
  */
5659
- fbx(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6477
+ fbx(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5660
6478
  /**
5661
6479
  * Convenience helper to create a 3D glTF 2.0 model node.
5662
6480
  */
5663
- gltf(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6481
+ gltf(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5664
6482
  /**
5665
6483
  * Convenience helper to create a 3D GLB binary container model node.
5666
6484
  */
5667
- glb(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6485
+ glb(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5668
6486
  /**
5669
6487
  * Convenience helper to create a 3D STL CAD / 3D printing model node.
5670
6488
  */
5671
- stl(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6489
+ stl(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5672
6490
  /**
5673
6491
  * Convenience helper to create a 3D Stanford PLY scan model node.
5674
6492
  */
5675
- ply(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6493
+ ply(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5676
6494
  /**
5677
6495
  * Convenience helper to create a 3D MagicaVoxel VOX model node.
5678
6496
  */
5679
- vox(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6497
+ vox(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5680
6498
  /**
5681
6499
  * Convenience helper to create a 3D Studio (3DS) binary model node.
5682
6500
  */
5683
- threeDS(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6501
+ threeDS(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5684
6502
  /**
5685
6503
  * Convenience helper to create a 3D Object File Format (OFF) model node.
5686
6504
  */
5687
- off(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6505
+ off(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5688
6506
  };
5689
6507
  //#endregion
5690
6508
  //#region src/transitions.d.ts
@@ -5884,6 +6702,8 @@ interface TextMeasureStyle {
5884
6702
  fontSize?: number;
5885
6703
  fontWeight?: string | number;
5886
6704
  fontStyle?: string;
6705
+ /** Variable font axes, as `TextNode.fontVariations`. */
6706
+ fontVariations?: Record<string, number>;
5887
6707
  letterSpacing?: number;
5888
6708
  lineHeight?: number;
5889
6709
  padding?: number;
@@ -5936,6 +6756,12 @@ interface LightingRigOptions {
5936
6756
  shadowSoftness?: number;
5937
6757
  /** Fog fading into the background, e.g. `{ color: BG, start: 2500, end: 6000 }`. */
5938
6758
  fog?: EnvironmentOptions["fog"];
6759
+ /** Volumetric fog & shadowed light shafts (god rays): `true` or settings. */
6760
+ volumetricFog?: EnvironmentOptions["volumetricFog"];
6761
+ /** Screen-space reflections of nearby geometry on glossy surfaces: `true` or settings. */
6762
+ ssr?: EnvironmentOptions["ssr"];
6763
+ /** Screen-space diffuse GI (contact occlusion and color bleeding): `true` or settings. */
6764
+ gi?: EnvironmentOptions["gi"];
5939
6765
  /** Glow around emissive surfaces and highlights: `true` or settings. */
5940
6766
  bloom?: EnvironmentOptions["bloom"];
5941
6767
  /** Prefix for the rig's node ids. */
@@ -6425,13 +7251,15 @@ declare class Media {
6425
7251
  */
6426
7252
  toVirtualMedia(): VirtualMediaData;
6427
7253
  /**
6428
- * Renders a single frame from this media pipeline to a PNG Buffer.
7254
+ * Renders a single frame from this media pipeline to an image or raw RGBA Buffer.
6429
7255
  * Can render either by timestamp in milliseconds (`atMs`) or by frame index (`frame`).
6430
7256
  */
6431
7257
  renderFrame(options?: {
6432
7258
  atMs?: number;
6433
7259
  frame?: number;
6434
7260
  fps?: number;
7261
+ renderId?: string;
7262
+ format?: "png" | "rgba" | "raw" | "jpeg" | "jpg" | "webp";
6435
7263
  renderer?: HeadlessMediaRenderer;
6436
7264
  }): Promise<Buffer>;
6437
7265
  get fps(): number | undefined;
@@ -6702,13 +7530,15 @@ declare class Composition {
6702
7530
  */
6703
7531
  toVirtualMediaAsync(options?: Partial<CompositorToProgramOptions>): Promise<VirtualMediaData>;
6704
7532
  /**
6705
- * Renders a single frame from the composition to a PNG Buffer.
7533
+ * Renders a single frame from the composition to an image or raw RGBA Buffer.
6706
7534
  * Can render either by timestamp in milliseconds (`atMs`) or by frame index (`frame`).
6707
7535
  */
6708
- renderFrame(options?: {
7536
+ renderFrame(frameOrOptions?: number | {
6709
7537
  atMs?: number;
6710
7538
  fps?: number;
6711
7539
  frame?: number;
7540
+ renderId?: string;
7541
+ format?: "png" | "rgba" | "raw" | "jpeg" | "jpg" | "webp";
6712
7542
  renderer?: HeadlessMediaRenderer;
6713
7543
  }): Promise<Buffer>;
6714
7544
  /**
@@ -6861,9 +7691,9 @@ declare const Layer: {
6861
7691
  * `props` applies to that box: position, id, timing, effects.
6862
7692
  */
6863
7693
  chart: (options: ChartOptions, props?: Partial<BoxNode>) => AnimatableNode<BoxNode>;
6864
- camera: (options?: Partial<CameraNode>) => AnimatableNode<CameraNode>;
6865
- light: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6866
- ambientLight: (color?: string | Partial<LightNode>, intensity?: number, options?: Partial<LightNode>) => AnimatableNode<LightNode>;
7694
+ camera: (options?: CameraOptions) => AnimatableNode<CameraNode>;
7695
+ light: (options?: LightOptions) => AnimatableNode<LightNode>;
7696
+ ambientLight: (color?: string | LightOptions, intensity?: SignalOrNumber, options?: LightOptions) => AnimatableNode<LightNode>;
6867
7697
  /**
6868
7698
  * Scenes back to back with transitions between them; see `Transition`.
6869
7699
  * `comp.add(Layer.sequence([{ scene: hero(), duration: 90 },
@@ -6871,40 +7701,115 @@ declare const Layer: {
6871
7701
  * The result's `totalFrames` is the sequence length.
6872
7702
  */
6873
7703
  sequence: (entries: SequenceEntry[], options?: SceneSequenceOptions) => SequenceNode;
6874
- /** See {@link Light.environment}: `Layer.environment("studio", { exposure: 0.3 })`. */
6875
- environment: (presetOrOptions?: EnvironmentPreset | EnvironmentOptions, options?: EnvironmentOptions) => AnimatableNode<LightNode>;
6876
- directionalLight: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6877
- pointLight: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6878
- spotLight: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
7704
+ /** See {@link Light.environment}: `Layer.environment("studio", { exposure: 0.3 })` or `Layer.environment("sky.hdr")`. */
7705
+ environment: (presetOrOptions?: EnvironmentPreset | HdriPath | EnvironmentOptions, options?: EnvironmentOptions) => AnimatableNode<LightNode>;
7706
+ directionalLight: (options?: LightOptions) => AnimatableNode<LightNode>;
7707
+ pointLight: (options?: LightOptions) => AnimatableNode<LightNode>;
7708
+ spotLight: (options?: LightOptions) => AnimatableNode<LightNode>;
7709
+ rectLight: (options?: LightOptions) => AnimatableNode<LightNode>;
6879
7710
  cube: (options: Cube3DOptions) => AnimatableNode<BoxNode>;
6880
7711
  carousel3d: (options: Carousel3DOptions) => AnimatableNode<BoxNode>;
6881
7712
  plane3d: (options: Plane3DOptions) => AnimatableNode<BoxNode>;
6882
7713
  prism3d: (options?: Prism3DOptions) => SolidShape3DNode;
6883
- model: (options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6884
- obj: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6885
- fbx: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6886
- gltf: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6887
- glb: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6888
- stl: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6889
- ply: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6890
- vox: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6891
- threeDS: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6892
- off: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
7714
+ model: (options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7715
+ obj: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7716
+ fbx: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7717
+ gltf: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7718
+ glb: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7719
+ stl: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7720
+ ply: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7721
+ vox: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7722
+ threeDS: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7723
+ off: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
7724
+ };
7725
+ interface CameraOptions extends Partial<CameraNode> {
7726
+ /** Top-level shorthand for `lens.fov` (vertical field of view in degrees). */
7727
+ fov?: number;
7728
+ /** Top-level shorthand for `lens.focalLength` (mm). */
7729
+ focalLength?: number;
7730
+ /** Top-level shorthand for `lens.sensorWidth` (mm). */
7731
+ sensorWidth?: number;
7732
+ /** Top-level shorthand for `lens.near` clipping plane. */
7733
+ near?: number;
7734
+ /** Top-level shorthand for `lens.far` clipping plane. */
7735
+ far?: number;
7736
+ /** Top-level shorthand for `lens.zoom` multiplier. */
7737
+ zoom?: number;
7738
+ }
7739
+ interface Model3DOptions extends Partial<Model3DNode> {
7740
+ /** Alias for `rotateX`. */
7741
+ rotationX?: number;
7742
+ /** Alias for `rotateY`. */
7743
+ rotationY?: number;
7744
+ /** Alias for `rotateZ`. */
7745
+ rotationZ?: number;
7746
+ }
7747
+ type SignalOrNumber = number | ProgrammaticSignal | Signal<number> | {
7748
+ get: (ctx: FrameContext) => number;
6893
7749
  };
7750
+ interface VolumetricFogNoiseOptions extends Omit<EnvironmentVolumetricFogNoise, "strength"> {
7751
+ strength?: SignalOrNumber;
7752
+ }
7753
+ interface VolumetricFogOptions extends Omit<EnvironmentVolumetricFog, "density" | "anisotropy" | "noise"> {
7754
+ density?: SignalOrNumber;
7755
+ anisotropy?: SignalOrNumber;
7756
+ noise?: boolean | VolumetricFogNoiseOptions;
7757
+ }
7758
+ /** An equirectangular panorama path (Radiance `.hdr` or OpenEXR `.exr`), usable in place of a preset name. */
7759
+ type HdriPath = `${string}.hdr` | `${string}.HDR` | `${string}.exr` | `${string}.EXR`;
6894
7760
  /** World settings for `Layer.environment` (see `LightNode` for every field). */
6895
- type EnvironmentOptions = Partial<Pick<LightNode, "id" | "preset" | "top" | "horizon" | "bottom" | "intensity" | "softboxes" | "rotation" | "exposure" | "toneMapping" | "fog" | "floor" | "outlines" | "bloom" | "startFrame" | "durationFrames">>;
7761
+ interface EnvironmentOptions extends Partial<Pick<LightNode, "id" | "preset" | "hdri" | "color" | "top" | "horizon" | "bottom" | "softboxes" | "toneMapping" | "fog" | "floor" | "outlines" | "ssr" | "gi" | "bloom" | "startFrame" | "durationFrames">> {
7762
+ intensity?: SignalOrNumber;
7763
+ rotation?: SignalOrNumber;
7764
+ exposure?: SignalOrNumber;
7765
+ volumetricFog?: boolean | VolumetricFogOptions;
7766
+ volumetricFogDensity?: SignalOrNumber;
7767
+ volumetricFogAnisotropy?: SignalOrNumber;
7768
+ volumetricFogNoiseStrength?: SignalOrNumber;
7769
+ }
7770
+ /** Options for `Light.*` and `Layer.*Light` (numeric fields also accept live `Signal`s). */
7771
+ interface LightOptions extends Omit<Partial<LightNode>, "intensity" | "x" | "y" | "z" | "targetX" | "targetY" | "targetZ" | "radius" | "angle" | "penumbra" | "decay" | "width" | "height" | "rotation" | "exposure" | "volumetricFog" | "volumetricFogDensity" | "volumetricFogAnisotropy" | "volumetricFogNoiseStrength"> {
7772
+ intensity?: SignalOrNumber;
7773
+ x?: SignalOrNumber;
7774
+ y?: SignalOrNumber;
7775
+ z?: SignalOrNumber;
7776
+ targetX?: SignalOrNumber;
7777
+ targetY?: SignalOrNumber;
7778
+ targetZ?: SignalOrNumber;
7779
+ radius?: SignalOrNumber;
7780
+ angle?: SignalOrNumber;
7781
+ penumbra?: SignalOrNumber;
7782
+ decay?: SignalOrNumber;
7783
+ width?: SignalOrNumber;
7784
+ height?: SignalOrNumber;
7785
+ rotation?: SignalOrNumber;
7786
+ exposure?: SignalOrNumber;
7787
+ volumetricFog?: boolean | VolumetricFogOptions;
7788
+ volumetricFogDensity?: SignalOrNumber;
7789
+ volumetricFogAnisotropy?: SignalOrNumber;
7790
+ volumetricFogNoiseStrength?: SignalOrNumber;
7791
+ }
6896
7792
  declare const Light: {
6897
7793
  /**
6898
7794
  * The scene's world: a procedural studio environment that lights and
6899
- * reflects off every surface, plus exposure, tone mapping and fog. Adding
6900
- * one switches the scene to physically based shading (GGX, real
6901
- * `roughness` / `metallic`, `emissive` that blooms past white).
6902
- */
6903
- environment: (presetOrOptions?: EnvironmentPreset | EnvironmentOptions, options?: EnvironmentOptions) => AnimatableNode<LightNode>;
6904
- ambient: (color?: string | Partial<LightNode>, intensity?: number, options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6905
- directional: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6906
- point: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6907
- spot: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
7795
+ * reflects off every surface, plus exposure, tone mapping, fog and
7796
+ * volumetric light shafts. Adding one switches the scene to physically
7797
+ * based shading (GGX, real `roughness` / `metallic`, `emissive` that
7798
+ * blooms past white). Pass a `.hdr` or `.exr` path instead of a preset name to light
7799
+ * and reflect from a captured equirectangular panorama:
7800
+ * `Light.environment("assets/hdri/studio.hdr", { intensity: 1.5 })`.
7801
+ */
7802
+ environment: (presetOrOptions?: EnvironmentPreset | HdriPath | EnvironmentOptions, options?: EnvironmentOptions) => AnimatableNode<LightNode>;
7803
+ ambient: (color?: string | LightOptions, intensity?: SignalOrNumber, options?: LightOptions) => AnimatableNode<LightNode>;
7804
+ directional: (options?: LightOptions) => AnimatableNode<LightNode>;
7805
+ point: (options?: LightOptions) => AnimatableNode<LightNode>;
7806
+ spot: (options?: LightOptions) => AnimatableNode<LightNode>;
7807
+ /**
7808
+ * A rectangular area light (studio softbox / LED panel / neon window)
7809
+ * with solid-angle diffuse illumination and representative-point GGX
7810
+ * specular reflections.
7811
+ */
7812
+ rect: (options?: LightOptions) => AnimatableNode<LightNode>;
6908
7813
  };
6909
7814
  declare function section(source: string | MediaNode | Composition, targetOrOptions?: ObjectTrackSignals | SectionOptions, options?: SectionOptions): SectionNode;
6910
7815
  declare function blurRegion(sourceOrLayer: string | AnimatableNode<MediaNode>, target: ObjectTrackSignals, options?: Partial<BlurProps> & {
@@ -7003,5 +7908,5 @@ type ComponentNode<C extends Cues = Cues> = AnimatableNode<BoxNode> & ComponentE
7003
7908
  */
7004
7909
  declare function bindComponent<S$1 extends z.ZodRawShape, C extends Cues, E extends object = object>(definition: ComponentDefinition<S$1, C, E>): (props: z.input<z.ZodObject<S$1>> & BaseProps) => ComponentNode<C> & E;
7005
7910
  //#endregion
7006
- export { mapBlendModeToSkia as $, withDefaults as $a, exitAnimation as $i, Animatable as $n, Model3DAnimatableProp as $o, ResolvedTarget as $r, World3DOptions as $t, Physics as A, springKeys as Aa, basePropsSchema as Ai, bold as An, EnvironmentFogSchema as Ao, GlyphProps as Ar, calculateSequenceTimeline as As, Points3DOptions as At, World2DOptions as B, targetSchema as Ba, cover as Bi, sub as Bn, LayoutNode as Bo, MediaOptions as Br, lintComposition as Bs, Sphere3DOptions as Bt, TrackEditing as C, rng as Ca, arcPath as Ci, ChartSlice as Cn, CompositorProgramConfig as Co, FontNeed as Cr, TextSpanSchema as Cs, Icosphere3DOptions as Ct, section as D, scheduleExpression as Da, bakeFunction as Di, MarkOptions as Dn, EnvironmentFloor as Do, FrameWindow as Dr, TrackSource as Ds, Layer3D as Dt, editTrackedRegion as E, scaleFrames as Ea, audioLevelsSchema as Ei, DEFAULT_CHART_COLORS as En, EaseRef as Eo, FrameValue as Er, ToonShadingSchema as Es, Lathe3DOptions as Et, PhysicsRect as F, staggerRanks as Fa, boxPath as Fi, normalizeTextSpans as Fn, FromToOptions as Fo, KeyBook as Fr, computeLayoutSync as Fs, Ring3DOptions as Ft, InterpolateOptions as G, toPathData as Ga, drawOnKeys as Gi, FRAMEFIELDS_AI_PROXY_URL as Gn, LightTypeSchema as Go, MotionSize as Gr, Swarm3DOptions as Gt, LightingRig as H, themeFrames as Ha, defineMeta as Hi, Ai as Hn, LightNode as Ho, MotionOptions as Hr, Text3DOptions as Ht, PhysicsRopeOptions as I, stepExpression as Ia, catmullRom as Ii, parseMarkup as In, GeometryOutlineOptionsSchema as Io, LayerStyleConfig as Ir, computeStaggerDelay as Is, RoundedBox3DOptions as It, TextMeasureResult as J, transparent as Ja, elevationStyle as Ji, RunOptions as Jn, MatteMode as Jo, ProjectDefaults as Jr, PhysicsBody3D as Jt, SpringConfig as K, toSeconds as Ka, ease$1 as Ki, QueueStatus as Kn, MaterialType as Ko, ParticleOptions as Kr, Body3DOptions as Kt, PhysicsSpringOptions as L, supersede as La, chain as Li, rich as Ln, Keyframe as Lo, MOTION_PRESETS as Lr, evaluateAnimationAtFrame as Ls, Shape3DContainer as Lt, FieldSample2D as M, springTrack as Ma, bind as Mi, color as Mn, EnvironmentPresetSchema as Mo, GrainOptions as Mr, compositorToProgram as Ms, Primitive3DNodeOptions as Mt, PhysicsBody2D as N, squigglePath as Na, boilKeys as Ni, italic as Nn, FlexNode as No, HandOptions as Nr, computeCarrierContinuity as Ns, Prism3DOptions as Nt, StyleName as O, smoothRelease as Oa, bakeSamples as Oi, TextSpanItem as On, EnvironmentFloorSchema as Oo, GlyphAnimator as Or, WiggleOptions as Os, Line3DOptions as Ot, PhysicsGroundOptions as P, staggerOffsets as Pa, boundsOf as Pi, mark as Pn, FlexNodeSchema as Po, Host as Pr, computeLayout as Ps, Pyramid3DOptions as Pt, interpolate as Q, withAlpha as Qa, evaluateGlyphExpression as Qi, Anchor as Qn, MediaNodeSchema as Qo, ResolvedMotion as Qr, PhysicsWorld3D as Qt, PhysicsWallsOptions as R, surfaceFill as Ra, constantExpression as Ri, size as Rn, KeyframeTuple as Ro, MeasureFn as Rr, evaluateTrackAtFrame as Rs, Shard3DOptions as Rt, SubjectSandwichOptions as S, resolveTarget as Sa, anchorPoint as Si, ChartSeries as Sn, ColorStopSchema as So, ExtrudedTextOptions as Sr, TextSpanMarkSchema as Ss, Grid3DOptions as St, blurRegion as T, safeArea as Ta, ascending as Ti, ChartX as Tn, CompositorToProgramOptions as To, FrameContextLike as Tr, ToneMappingSchema as Ts, Instances3DOptions as Tt, LightingRigOptions as U, themes as Ua, defineTheme as Ui, AiConfig as Un, LightNodeSchema as Uo, MotionPreset as Ur, Torus3DOptions as Ut, Lighting as V, textLayout as Va, defineComponent as Vi, sup as Vn, LayoutNodeSchema as Vo, Metrics$1 as Vr, mergeAnimationTracks as Vs, Surface3DOptions as Vt, Easing as W, toFrames as Wa, dist as Wi, ApiError as Wn, LightType as Wo, MotionPresetName as Wr, Tube3DOptions as Wt, bezier as X, valueAt as Xa, enterAnimation as Xi, ai as Xn, MediaAnimatableProp as Xo, PulseOptions as Xr, PhysicsRope3DOptions as Xt, TextMeasureStyle as Y, typingFrames as Ya, ellipsePath as Yi, ValidationError as Yn, MatteModeSchema as Yo, PropsOf as Yr, PhysicsBox3D as Yt, computeStrokeRect as Z, windowExpression as Za, evaluateEase as Zi, AnalyzeOptions as Zn, MediaNode as Zo, Rect as Zr, PhysicsSpring3DOptions as Zt, RenderVideoResult as _, quantize as _a, UnitSchedule as _i, ChartAxisOptions as _n, CarrierHandoffConfig as _o, CuesOf as _r, TextAnimatableProp as _s, CubeFaceConfig as _t, AnimatableNode as a, holdFirstKeys as aa, StaggerOrder as ai, PhysicsDriver as an, AnimationTrack as ao, BakeOptions as ar, SceneOptions as as, requiresIsolation as at, SmartFramingOptions as b, resampleBands as ba, after as bi, ChartOptions as bn, ColorSignalOptions as bo, Elevation as br, TextNode as bs, ExtrudeShape3DOptions as bt, CompositionOptions as c, last as ca, TargetContext as ci, ParticleBlend as cn, BloomConfigSchema as co, BuildContext as cr, Sequence as cs, SceneSequenceOptions as ct, EnvironmentOptions as d, lineShift as da, Theme as di, ClipVision as dn, CameraAnimation as do, ComponentDefaults as dr, ShapeAnimatableProp as ds, Transition as dt, findRange as ea, Rgba as ei, Particles as en, within as eo, AnimatableMethods as er, Model3DNode as es, measureSpring as et, Layer as f, luminance as fa, ThemeInput as fi, ClipVisionOptions as fn, CameraDoF as fo, ComponentDefinition as fr, ShapeNode as fs, TransitionDirection as ft, RenderVideoOptions as g, pulseKeys as ga, UNIT_INDEX as gi, ChartAnimationOptions as gn, CameraShake as go, Cues as gr, SpringOptions as gs, Cube3DOptions as gt, NodeCapability as h, parseColor as ha, TrackedObjectLike as hi, PoseKeypointName as hn, CameraNodeSchema as ho, Cue as hr, SizeSpec as hs, Carousel3DOptions as ht, analyzeAudio as i, hashString as ia, Spring as ii, PhysicsCollision as in, AnimatablePropsFor as io, AudioLevels as ir, SceneDefinitionSchema as is, preloadFont as it, Body2DOptions as j, springSettleFrames as ja, beats as ji, code as jn, EnvironmentPreset as jo, GlyphUnit as jr, collectNodeOps as js, Polyhedron3DOptions as jt, Styles as k, springAt as ka, bandEdges as ki, accent as kn, EnvironmentFog as ko, GlyphBox as kr, applyStaggerToChildren as ks, Plane3DOptions as kt, EditableObjectTrack as l, lerp2 as la, TargetNode as li, ParticleBounds as ln, BoxNode as lo, BuildResult as lr, SequenceOptions as ls, SequenceEntry as lt, Media as m, offsetCues as ma, Track as mi, PersonTrack as mn, CameraNode as mo, ComponentMeta as mr, SignalTrackOptions as ms, Capsule3DOptions as mt, bindComponent as n, glyphAnimator as na, SAFE_INSETS as ni, BodyCommonOptions as nn, wordRanges as no, ArrowCurve as nr, Scene as ns, measureTextAsync as nt, CompatibleEffect as o, inkOn as oa, SyntaxKind as oi, PhysicsWorldOptions as on, BlockNode as oo, BakedKey as or, SceneTransitionType as os, spring as ot, Light as p, mix as pa, ThemeName as pi, PersonPlacement as pn, CameraLens as po, ComponentExtras as pr, ShapeNodeSchema as ps, TransitionSpec as pt, StrokeRect as q, transformPathData as qa, elevate as qi, Result as qn, MaterialTypeSchema as qo, Placement as qr, FieldSample3D as qt, z$2 as r, hashRng as ra, SafeInsets as ri, PhysicsBakeOptions as rn, AnimatableProp as ro, ArrowGeometry as rr, SceneDefinition as rs, preloadCompositionFonts as rt, Composition as s, isLight as sa, Target as si, EmitterShape as sn, BloomConfig as so, BaseProps as sr, SceneTransitionTypeSchema as ss, springCalculation as st, ComponentNode as t, frameSpan as ta, Rng as ti, ParticlesOptions as tn, wobblePoints as to, ArcPath as tr, Model3DNodeSchema as ts, measureText as tt, Effect as u, linePath as ua, TextLayout as ui, ParticleShape as un, BoxNodeSchema as uo, CanvasSize as ur, SequenceTimelineResult as us, SequenceNode as ut, SectionNode as v, rangeRects as va, Vec2$1 as vi, ChartCandle as vn, CarrierHandoffConfigSchema as vo, CutoutOptions as vr, TextAnimator as vs, CubeFaceInput as vt, TrackedRegionOptions as w, round as wa, arrowPaths as wi, ChartType as wn, CompositorProgramSchema as wo, FontRole as wr, ToneMapping as ws, InstanceTransform3D as wt, SubjectOutlineOptions as x, resolveMotion as xa, analyzeChannels as xi, ChartPadding as xn, ColorStop as xo, ElevationLevel as xr, TextNodeSchema as xs, ExtrudedText3DOptions as xt, SectionOptions as y, rendererChars as ya, WordRange as yi, ChartDatum as yn, CarrierState as yo, EaseFn as yr, TextAnimatorSchema as ys, Cylinder3DOptions as yt, PhysicsWorld2D as z, targetPoint as za, contrastRatio as zi, span as zn, LayerAnimation as zo, MeasureOptions as zr, hoistMattes as zs, SolidShape3DNode as zt };
7007
- //# sourceMappingURL=index-9xte4JgL.d.mts.map
7911
+ export { SpringConfig as $, springSettleFrames as $a, beats as $i, color as $n, EnvironmentFogSchema as $o, GlyphUnit as $r, SpringOptions as $s, Scatter3DNode as $t, VolumetricFogNoiseOptions as A, last as Aa, type TargetContext as Ai, PoseKeypointName as An, BloomConfigSchema as Ao, BuildContext as Ar, MediaAnimatableProp as As, Icosphere3DOptions as At, PhysicsBody2D as B, rangeRects as Ba, Vec2$1 as Bi, ChartDatum as Bn, CarrierHandoffConfigSchema as Bo, CutoutOptions as Br, SceneDefinitionSchema as Bs, Prism3DOptions as Bt, SectionOptions as C, frameSpan as Ca, computeStaggerDelay as Cc, Rng as Ci, ParticleBlend as Cn, wordRanges as Co, ArcPath as Cr, LightType as Cs, Cube3DOptions as Ct, SubjectSandwichOptions as D, holdFirstKeys as Da, lintComposition as Dc, StaggerOrder as Di, ClipVisionOptions as Dn, AnimationTrack as Do, BakeOptions as Dr, MaterialTypeSchema as Ds, ExtrudeShape3DOptions as Dt, SubjectOutlineOptions as E, hashString as Ea, hoistMattes as Ec, Spring as Ei, ClipVision as En, AnimatablePropsFor as Eo, AudioLevels as Er, MaterialType as Es, Cylinder3DOptions as Et, StyleName as F, mix as Fa, ThemeName as Fi, RigMap as Fn, CameraLens as Fo, ComponentExtras as Fr, Model3DNodeSchema as Fs, Line3DOptions as Ft, PhysicsWallsOptions as G, rng as Ga, arcPath as Gi, ChartType as Gn, CompositorProgramConfig as Go, FontNeed as Gr, SequenceOptions as Gs, Shard3DOptions as Gt, PhysicsRect as H, resampleBands as Ha, after as Hi, ChartPadding as Hn, ColorSignalOptions as Ho, Elevation as Hr, SceneTransitionType as Hs, Ring3DOptions as Ht, Styles as I, offsetCues as Ia, Track as Ii, retargetPose as In, CameraNode as Io, ComponentMeta as Ir, ModelAnimationLayer as Is, Plane3DOptions as It, Lighting as J, scaleFrames as Ja, audioLevelsSchema as Ji, MarkOptions as Jn, CrowdConfig as Jo, FrameValue as Jr, ShapeNode as Js, Surface3DOptions as Jt, PhysicsWorld2D as K, round as Ka, arrowPaths as Ki, ChartX as Kn, CompositorProgramSchema as Ko, FontRole as Kr, SequenceTimelineResult as Ks, SolidShape3DNode as Kt, Physics as L, parseColor as La, TrackedObjectLike as Li, ChartAnimationOptions as Ln, CameraNodeSchema as Lo, Cue as Lr, NumberTrack as Ls, Points3DOptions as Lt, blurRegion as M, linePath as Ma, TextLayout as Mi, RIG_PRESETS as Mn, BoxNodeSchema as Mo, CanvasSize as Mr, MediaNodeSchema as Ms, Instances3DOptions as Mt, editTrackedRegion as N, lineShift as Na, Theme as Ni, RetargetBone as Nn, CameraAnimation as No, ComponentDefaults as Nr, Model3DAnimatableProp as Ns, Lathe3DOptions as Nt, TrackEditing as O, inkOn as Oa, mergeAnimationTracks as Oc, SyntaxKind as Oi, PersonPlacement as On, BlockNode as Oo, BakedKey as Or, MatteMode as Os, ExtrudedText3DOptions as Ot, section as P, luminance as Pa, ThemeInput as Pi, RetargetOptions as Pn, CameraDoF as Po, ComponentDefinition as Pr, Model3DNode as Ps, Layer3D as Pt, InterpolateOptions as Q, springKeys as Qa, basePropsSchema as Qi, code as Qn, EnvironmentFog as Qo, GlyphProps as Qr, SpringBoneChain as Qs, Swarm3DOptions as Qt, Body2DOptions as R, pulseKeys as Ra, UNIT_INDEX as Ri, ChartAxisOptions as Rn, CameraShake as Ro, Cues as Rr, Scene as Rs, Polyhedron3DOptions as Rt, SectionNode as S, findRange as Sa, computeLayoutSync as Sc, Rgba as Si, EmitterShape as Sn, wobblePoints as So, AnimatableMethods as Sr, LightNodeSchema as Ss, Carousel3DOptions as St, SmartFramingOptions as T, hashRng as Ta, evaluateTrackAtFrame as Tc, SafeInsets as Ti, ParticleShape as Tn, AnimatableProp as To, ArrowGeometry as Tr, LookAtConstraint as Ts, CubeFaceInput as Tt, PhysicsRopeOptions as U, resolveMotion as Ua, analyzeChannels as Ui, ChartSeries as Un, ColorStop as Uo, ElevationLevel as Ur, SceneTransitionTypeSchema as Us, RoundedBox3DOptions as Ut, PhysicsGroundOptions as V, rendererChars as Va, WordRange as Vi, ChartOptions as Vn, CarrierState as Vo, EaseFn as Vr, SceneOptions as Vs, Pyramid3DOptions as Vt, PhysicsSpringOptions as W, resolveTarget as Wa, anchorPoint as Wi, ChartSlice as Wn, ColorStopSchema as Wo, ExtrudedTextOptions as Wr, Sequence as Ws, Shape3DContainer as Wt, LightingRigOptions as X, smoothRelease as Xa, bakeSamples as Xi, accent as Xn, EnvironmentFloor as Xo, GlyphAnimator as Xr, SignalTrackOptions as Xs, Torus3DOptions as Xt, LightingRig as Y, scheduleExpression as Ya, bakeFunction as Yi, TextSpanItem as Yn, EaseRef as Yo, FrameWindow as Yr, ShapeNodeSchema as Ys, Text3DOptions as Yt, Easing as Z, springAt as Za, bandEdges as Zi, bold as Zn, EnvironmentFloorSchema as Zo, GlyphBox as Zr, SizeSpec as Zs, Tube3DOptions as Zt, Media as _, ellipsePath as _a, calculateSequenceTimeline as _c, PropsOf as _i, BodyCommonOptions as _n, valueAt as _o, ai as _r, LayerAnimation as _s, SequenceNode as _t, AnimatableNode as a, chain as aa, TextSpanMarkSchema as ac, MOTION_PRESETS as ai, Body3DOptions as an, supersede as ao, size as ar, EnvironmentSsrSchema as as, interpolate as at, RenderVideoOptions as b, evaluateGlyphExpression as ba, computeCarrierContinuity as bc, ResolvedMotion as bi, PhysicsDriver as bn, withDefaults as bo, Anchor as br, LightAnimatableProp as bs, TransitionSpec as bt, Composition as c, cover as ca, ToneMappingSchema as cc, MediaOptions as ci, PhysicsBox3D as cn, textLayout as co, sup as cr, EnvironmentVolumetricFogNoiseSchema as cs, measureText as ct, Effect as d, defineTheme as da, TrackSource as dc, MotionPreset as di, PhysicsWorld3D as dn, toFrames as do, ApiError as dr, FlexNodeSchema as ds, preloadFont as dt, bind as ea, TextAnimatableProp as ec, GrainOptions as ei, Scatter3DOptions as en, springTrack as eo, italic as er, EnvironmentGi as es, StrokeRect as et, EnvironmentOptions as f, dist as fa, TwoBoneIkConstraint as fc, MotionPresetName as fi, World3DOptions as fn, toPathData as fo, FRAMEFIELDS_AI_PROXY_URL as fr, FromToOptions as fs, requiresIsolation as ft, LightOptions as g, elevationStyle as ga, applyStaggerToChildren as gc, ProjectDefaults as gi, ParticlesOptions as gn, typingFrames as go, ValidationError as gr, KeyframeTuple as gs, SequenceEntry as gt, Light as h, elevate as ha, WindConfig as hc, Placement as hi, Particles as hn, transparent as ho, RunOptions as hr, Keyframe as hs, SceneSequenceOptions as ht, analyzeAudio as i, catmullRom as ia, TextNodeSchema as ic, LayerStyleConfig as ii, TerrainSurface as in, stepExpression as io, rich as ir, EnvironmentSsr as is, computeStrokeRect as it, VolumetricFogOptions as j, lerp2 as ja, TargetNode as ji, PoseSource as jn, BoxNode as jo, BuildResult as jr, MediaNode as js, InstanceTransform3D as jt, TrackedRegionOptions as k, isLight as ka, Target as ki, PersonTrack as kn, BloomConfig as ko, BaseProps as kr, MatteModeSchema as ks, Grid3DOptions as kt, CompositionOptions as l, defineComponent as la, ToonShadingSchema as lc, Metrics$1 as li, PhysicsRope3DOptions as ln, themeFrames as lo, Ai as lr, EnvironmentVolumetricFogSchema as ls, measureTextAsync as lt, Layer as m, ease$1 as ma, WiggleOptions as mc, ParticleOptions as mi, Fracture3DOptions as mn, transformPathData as mo, Result as mr, JointPose as ms, springCalculation as mt, bindComponent as n, boundsOf as na, TextAnimatorSchema as nc, Host as ni, Terrain3DNode as nn, staggerOffsets as no, normalizeTextSpans as nr, EnvironmentPreset as ns, TextMeasureStyle as nt, CameraOptions as o, constantExpression as oa, TextSpanSchema as oc, MeasureFn as oi, FieldSample3D as on, surfaceFill as oo, span as or, EnvironmentVolumetricFog as os, mapBlendModeToSkia as ot, HdriPath as p, drawOnKeys as pa, Vec3Track as pc, MotionSize as pi, Fracture3D as pn, toSeconds as po, QueueStatus as pr, GeometryOutlineOptionsSchema as ps, spring as pt, World2DOptions as q, safeArea as qa, ascending as qi, DEFAULT_CHART_COLORS as qn, CompositorToProgramOptions as qo, FrameContextLike as qr, ShapeAnimatableProp as qs, Sphere3DOptions as qt, z$2 as r, boxPath as ra, TextNode as rc, KeyBook as ri, Terrain3DOptions as rn, staggerRanks as ro, parseMarkup as rr, EnvironmentPresetSchema as rs, bezier as rt, CompatibleEffect as s, contrastRatio as sa, ToneMapping as sc, MeasureOptions as si, PhysicsBody3D as sn, targetPoint as so, sub as sr, EnvironmentVolumetricFogNoise as ss, measureSpring as st, ComponentNode as t, boilKeys as ta, TextAnimator as tc, HandOptions as ti, Sdf3DOptions as tn, squigglePath as to, mark as tr, EnvironmentGiSchema as ts, TextMeasureResult as tt, EditableObjectTrack as u, defineMeta as ua, TrackSignal as uc, MotionOptions as ui, PhysicsSpring3DOptions as un, themes as uo, AiConfig as ur, FlexNode as us, preloadCompositionFonts as ut, Model3DOptions as v, enterAnimation as va, collectNodeOps as vc, PulseOptions as vi, PhysicsBakeOptions as vn, windowExpression as vo, targetSchema as vr, LayoutNode as vs, Transition as vt, SignalOrNumber as w, glyphAnimator as wa, evaluateAnimationAtFrame as wc, SAFE_INSETS as wi, ParticleBounds as wn, AimConstraint as wo, ArrowCurve as wr, LightTypeSchema as ws, CubeFaceConfig as wt, RenderVideoResult as x, exitAnimation as xa, computeLayout as xc, ResolvedTarget as xi, PhysicsWorldOptions as xn, within as xo, Animatable as xr, LightNode as xs, Capsule3DOptions as xt, NodeCapability as y, evaluateEase as ya, compositorToProgram as yc, Rect as yi, PhysicsCollision as yn, withAlpha as yo, AnalyzeOptions as yr, LayoutNodeSchema as ys, TransitionDirection as yt, FieldSample2D as z, quantize as za, UnitSchedule as zi, ChartCandle as zn, CarrierHandoffConfig as zo, CuesOf as zr, SceneDefinition as zs, Primitive3DNodeOptions as zt };
7912
+ //# sourceMappingURL=index-Dg5BAtDq.d.mts.map