framefields 2.13.1 → 2.15.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 (339) hide show
  1. package/NOTICE.md +5 -1
  2. package/dist/audio/index.d.mts +5 -5
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-DIvi6hTD.mjs → audio-6TfPlfl4.mjs} +3 -3
  5. package/dist/{audio-DIvi6hTD.mjs.map → audio-6TfPlfl4.mjs.map} +1 -1
  6. package/dist/{audio-C4B9p_yq.d.mts → audio-7oqTUi4G.d.mts} +3 -3
  7. package/dist/{audio-C4B9p_yq.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.d.mts.map +1 -1
  11. package/dist/cloud/index.mjs +1 -1
  12. package/dist/{cloud-Cj1TIme8.mjs → cloud-jnk1hPYf.mjs} +2 -2
  13. package/dist/{cloud-Cj1TIme8.mjs.map → cloud-jnk1hPYf.mjs.map} +1 -1
  14. package/dist/components/index.d.mts +13 -13
  15. package/dist/components/index.mjs +43 -43
  16. package/dist/{dist-Kbf-JTry.mjs → dist-BtI6ukB5.mjs} +2 -2
  17. package/dist/{dist-Kbf-JTry.mjs.map → dist-BtI6ukB5.mjs.map} +1 -1
  18. package/dist/{dist-CCrYOkcc.mjs → dist-COOpgG9G.mjs} +4 -3
  19. package/dist/{dist-CCrYOkcc.mjs.map → dist-COOpgG9G.mjs.map} +1 -1
  20. package/dist/{dist-DtPPPsZV.mjs → dist-XqlFM2a8.mjs} +14063 -5308
  21. package/dist/dist-XqlFM2a8.mjs.map +1 -0
  22. package/dist/{dist-CiTgmfUw.mjs → dist-f1zkl69f.mjs} +4 -4
  23. package/dist/dist-f1zkl69f.mjs.map +1 -0
  24. package/dist/{dist-B_rSWeOz.mjs → dist-umQOWz0a.mjs} +1 -1
  25. package/dist/effects/index.d.mts +5 -5
  26. package/dist/effects/index.mjs +35 -35
  27. package/dist/{effects-B-L3rLs6.mjs → effects-DlRMovU5.mjs} +2 -2
  28. package/dist/{effects-B-L3rLs6.mjs.map → effects-DlRMovU5.mjs.map} +1 -1
  29. package/dist/fonts/index.d.mts +1 -1
  30. package/dist/fonts/index.mjs +2 -2
  31. package/dist/{fonts-k5ll8NTE.mjs → fonts-BWYcXjyK.mjs} +3 -3
  32. package/dist/fonts-BWYcXjyK.mjs.map +1 -0
  33. package/dist/{gpu-D2HT3KcE.mjs → gpu-CH1PdM4T.mjs} +2 -2
  34. package/dist/{gpu-D2HT3KcE.mjs.map → gpu-CH1PdM4T.mjs.map} +1 -1
  35. package/dist/{index-rtCXNxGO.d.mts → index-BHTycml5.d.mts} +2 -2
  36. package/dist/{index-rtCXNxGO.d.mts.map → index-BHTycml5.d.mts.map} +1 -1
  37. package/dist/{index-BFTtXosj.d.mts → index-BVd6nXd5.d.mts} +2 -2
  38. package/dist/{index-BFTtXosj.d.mts.map → index-BVd6nXd5.d.mts.map} +1 -1
  39. package/dist/{index-ByhlTwxh.d.mts → index-BcxxxwhV.d.mts} +5 -5
  40. package/dist/{index-ByhlTwxh.d.mts.map → index-BcxxxwhV.d.mts.map} +1 -1
  41. package/dist/{index-CnZhBlob.d.mts → index-BnB_Ou2y.d.mts} +2 -2
  42. package/dist/index-BnB_Ou2y.d.mts.map +1 -0
  43. package/dist/{index-a6JrbAK0.d.mts → index-C-V6CAhP.d.mts} +32 -2
  44. package/dist/index-C-V6CAhP.d.mts.map +1 -0
  45. package/dist/{index-DBh3WphX.d.mts → index-CMhkkc56.d.mts} +44 -12
  46. package/dist/index-CMhkkc56.d.mts.map +1 -0
  47. package/dist/{index-BGlaws7-.d.mts → index-CYVpYGM-.d.mts} +3 -3
  48. package/dist/{index-BGlaws7-.d.mts.map → index-CYVpYGM-.d.mts.map} +1 -1
  49. package/dist/{index-DQ1U3HC3.d.mts → index-DhL7ckvs.d.mts} +7 -7
  50. package/dist/index-DhL7ckvs.d.mts.map +1 -0
  51. package/dist/{index-CtKUQ2VG.d.mts → index-DkAjKnhW.d.mts} +1487 -533
  52. package/dist/index-DkAjKnhW.d.mts.map +1 -0
  53. package/dist/{index-B08eSpaI.d.mts → index-RILu3ULT.d.mts} +2 -2
  54. package/dist/{index-B08eSpaI.d.mts.map → index-RILu3ULT.d.mts.map} +1 -1
  55. package/dist/{index-C5sgRLlG.d.mts → index-TCtdSXd7.d.mts} +3 -1
  56. package/dist/index-TCtdSXd7.d.mts.map +1 -0
  57. package/dist/{index-C2yaponf.d.mts → index-s2qQ8ifZ.d.mts} +911 -57
  58. package/dist/index-s2qQ8ifZ.d.mts.map +1 -0
  59. package/dist/index.d.mts +15 -15
  60. package/dist/index.mjs +52 -52
  61. package/dist/preview/index.d.mts +5 -5
  62. package/dist/preview/index.mjs +10 -10
  63. package/dist/preview-BeGF1Bb1.mjs +1002 -0
  64. package/dist/preview-BeGF1Bb1.mjs.map +1 -0
  65. package/dist/preview-engine/audio.mjs +1 -1
  66. package/dist/preview-engine/{chunk-64L4GUOF.mjs → chunk-4F3DG6YB.mjs} +2 -2
  67. package/dist/preview-engine/chunk-A2OTOW3B.mjs +4694 -0
  68. package/dist/preview-engine/chunk-BR56TQBP.mjs +5 -0
  69. package/dist/preview-engine/{chunk-ADLIF544.mjs → chunk-H2XKXXAU.mjs} +1 -1
  70. package/dist/preview-engine/chunk-NDUODAY2.mjs +3 -0
  71. package/dist/preview-engine/{chunk-FZ4RD7HV.mjs → chunk-QAQJSWUT.mjs} +1 -1
  72. package/dist/preview-engine/chunk-SWRGQTVC.mjs +138 -0
  73. package/dist/preview-engine/{chunk-52X7SURQ.mjs → chunk-TEA3GVBJ.mjs} +1 -1
  74. package/dist/preview-engine/chunk-VM2ZBPLM.mjs +644 -0
  75. package/dist/preview-engine/{chunk-UBY2UYEL.mjs → chunk-XSHNQJ7L.mjs} +1 -1
  76. package/dist/preview-engine/components.mjs +1 -1
  77. package/dist/preview-engine/effects.mjs +1 -1
  78. package/dist/preview-engine/fonts.mjs +1 -1
  79. package/dist/preview-engine/framefields.mjs +1 -1
  80. package/dist/preview-engine/player.mjs +2 -2
  81. package/dist/preview-engine/{renderers-DU7KPFVV.mjs → renderers-6C7NWWDX.mjs} +1 -1
  82. package/dist/preview-engine/renderers-HHVGNMSJ.mjs +206 -0
  83. package/dist/preview-engine/{src-YXNX4MLK.mjs → src-RCNEKIRP.mjs} +1 -1
  84. package/dist/preview-page/index.html +19 -0
  85. package/dist/preview-page/main.css +1 -0
  86. package/dist/preview-page/main.js +327 -0
  87. package/dist/{program-BfiB9ttP.mjs → program-CMigyfso.mjs} +919 -58
  88. package/dist/program-CMigyfso.mjs.map +1 -0
  89. package/dist/renderer/index.d.mts +4 -4
  90. package/dist/renderer/index.mjs +2 -2
  91. package/dist/{renderer-CoC64eam.mjs → renderer-0GMEL_Zi.mjs} +3 -3
  92. package/dist/{renderer-CoC64eam.mjs.map → renderer-0GMEL_Zi.mjs.map} +1 -1
  93. package/dist/{renderer-CSu_vYPn.mjs → renderer-3Wv2ZBJG.mjs} +3 -3
  94. package/dist/{renderer-CSu_vYPn.mjs.map → renderer-3Wv2ZBJG.mjs.map} +1 -1
  95. package/dist/{renderer-Dv_iRIyx.mjs → renderer-4nXkaAWu.mjs} +1280 -285
  96. package/dist/renderer-4nXkaAWu.mjs.map +1 -0
  97. package/dist/{renderer-TfeohPxt.mjs → renderer-6SnfLXeg.mjs} +3 -3
  98. package/dist/{renderer-TfeohPxt.mjs.map → renderer-6SnfLXeg.mjs.map} +1 -1
  99. package/dist/{renderer-D0xM67cK.mjs → renderer-8gHw3O0P.mjs} +2 -2
  100. package/dist/{renderer-D0xM67cK.mjs.map → renderer-8gHw3O0P.mjs.map} +1 -1
  101. package/dist/{renderer-C64_B8It.mjs → renderer-AOBglZHC.mjs} +2 -2
  102. package/dist/{renderer-B10HDC13.mjs → renderer-B0bSARK3.mjs} +3 -3
  103. package/dist/{renderer-B10HDC13.mjs.map → renderer-B0bSARK3.mjs.map} +1 -1
  104. package/dist/{renderer-DWYmJSrl.mjs → renderer-B2_tuRfl.mjs} +2 -2
  105. package/dist/{renderer-DWYmJSrl.mjs.map → renderer-B2_tuRfl.mjs.map} +1 -1
  106. package/dist/{renderer-mDBoz0zT.mjs → renderer-B82FhkEr.mjs} +3 -3
  107. package/dist/{renderer-mDBoz0zT.mjs.map → renderer-B82FhkEr.mjs.map} +1 -1
  108. package/dist/{renderer-DYeNNc_G.mjs → renderer-B9lzA0PY.mjs} +3 -3
  109. package/dist/{renderer-DYeNNc_G.mjs.map → renderer-B9lzA0PY.mjs.map} +1 -1
  110. package/dist/{renderer-BGchUBW_.mjs → renderer-BBSIWSry.mjs} +2 -2
  111. package/dist/{renderer-BGchUBW_.mjs.map → renderer-BBSIWSry.mjs.map} +1 -1
  112. package/dist/{renderer-GIlQ9lZq.mjs → renderer-BEKDMxbi.mjs} +2 -2
  113. package/dist/{renderer-GIlQ9lZq.mjs.map → renderer-BEKDMxbi.mjs.map} +1 -1
  114. package/dist/renderer-BERGAxqA.mjs +5 -0
  115. package/dist/{renderer-Bw0O--gW.mjs → renderer-BF960HY8.mjs} +3 -3
  116. package/dist/{renderer-Bw0O--gW.mjs.map → renderer-BF960HY8.mjs.map} +1 -1
  117. package/dist/{renderer-BhcTYhaP.mjs → renderer-BFwyVxCu.mjs} +3 -3
  118. package/dist/{renderer-BhcTYhaP.mjs.map → renderer-BFwyVxCu.mjs.map} +1 -1
  119. package/dist/{renderer-DYlx7VHo.mjs → renderer-BNiwcI3-.mjs} +2 -2
  120. package/dist/{renderer-DYlx7VHo.mjs.map → renderer-BNiwcI3-.mjs.map} +1 -1
  121. package/dist/{renderer-B3_GddgJ.mjs → renderer-BPbVb2Q4.mjs} +2 -2
  122. package/dist/{renderer-B3_GddgJ.mjs.map → renderer-BPbVb2Q4.mjs.map} +1 -1
  123. package/dist/renderer-BQ_YkBMt.mjs +6 -0
  124. package/dist/{renderer-Y1kjtOto.mjs → renderer-BUWxlA8T.mjs} +3 -3
  125. package/dist/{renderer-Y1kjtOto.mjs.map → renderer-BUWxlA8T.mjs.map} +1 -1
  126. package/dist/renderer-BW0Tjsv9.mjs +5 -0
  127. package/dist/{renderer-DtFZbE1j.mjs → renderer-BX8liu-e.mjs} +2 -2
  128. package/dist/{renderer-BOlHW3Mi.mjs → renderer-BXIwDAr_.mjs} +2 -2
  129. package/dist/{renderer-BOlHW3Mi.mjs.map → renderer-BXIwDAr_.mjs.map} +1 -1
  130. package/dist/{renderer-DzON3wDZ.mjs → renderer-B_Hy1W-g.mjs} +3 -3
  131. package/dist/{renderer-DzON3wDZ.mjs.map → renderer-B_Hy1W-g.mjs.map} +1 -1
  132. package/dist/{renderer-BM19iK8v.mjs → renderer-Bb6cvSgh.mjs} +2 -2
  133. package/dist/{renderer-BM19iK8v.mjs.map → renderer-Bb6cvSgh.mjs.map} +1 -1
  134. package/dist/{renderer-D0h1hTOo.mjs → renderer-BdppwWC9.mjs} +2 -2
  135. package/dist/{renderer-D0h1hTOo.mjs.map → renderer-BdppwWC9.mjs.map} +1 -1
  136. package/dist/{renderer-BTwuM9u-.mjs → renderer-Bhc24HVe.mjs} +3 -3
  137. package/dist/{renderer-BTwuM9u-.mjs.map → renderer-Bhc24HVe.mjs.map} +1 -1
  138. package/dist/{renderer-BZX932Lj.mjs → renderer-BiNA2wF0.mjs} +2 -2
  139. package/dist/{renderer-BZX932Lj.mjs.map → renderer-BiNA2wF0.mjs.map} +1 -1
  140. package/dist/{renderer-CkTehyRX.mjs → renderer-BmoBgTp5.mjs} +3 -3
  141. package/dist/{renderer-CkTehyRX.mjs.map → renderer-BmoBgTp5.mjs.map} +1 -1
  142. package/dist/{renderer-B3un4Pdi.mjs → renderer-BmqFmCWS.mjs} +3 -3
  143. package/dist/{renderer-B3un4Pdi.mjs.map → renderer-BmqFmCWS.mjs.map} +1 -1
  144. package/dist/{renderer-CHCRcCKw.mjs → renderer-BnVwAObV.mjs} +2 -2
  145. package/dist/{renderer-CHCRcCKw.mjs.map → renderer-BnVwAObV.mjs.map} +1 -1
  146. package/dist/{renderer-Cv9CKKWG.mjs → renderer-BxttZHme.mjs} +2 -2
  147. package/dist/{renderer-Cv9CKKWG.mjs.map → renderer-BxttZHme.mjs.map} +1 -1
  148. package/dist/renderer-BzyPdUD1.mjs +5 -0
  149. package/dist/renderer-C0hM-mtY.mjs +5 -0
  150. package/dist/renderer-C6cyUTvk.mjs +5 -0
  151. package/dist/{renderer-B6bK9rXm.mjs → renderer-C8E4XsSg.mjs} +2 -2
  152. package/dist/{renderer-B6bK9rXm.mjs.map → renderer-C8E4XsSg.mjs.map} +1 -1
  153. package/dist/renderer-C8zY3pzk.mjs +5 -0
  154. package/dist/{renderer-4nsuReW2.mjs → renderer-C9U-LY50.mjs} +3 -3
  155. package/dist/{renderer-4nsuReW2.mjs.map → renderer-C9U-LY50.mjs.map} +1 -1
  156. package/dist/{renderer-BvBqTAtk.mjs → renderer-CB2JVu5x.mjs} +3 -3
  157. package/dist/{renderer-BvBqTAtk.mjs.map → renderer-CB2JVu5x.mjs.map} +1 -1
  158. package/dist/{renderer-CQ4h8n7p.mjs → renderer-CC4YBJ8Z.mjs} +3 -3
  159. package/dist/{renderer-CQ4h8n7p.mjs.map → renderer-CC4YBJ8Z.mjs.map} +1 -1
  160. package/dist/renderer-CEkSOyKu.mjs +5 -0
  161. package/dist/{renderer-zLi2qFGT.mjs → renderer-CIycc5O-.mjs} +2 -2
  162. package/dist/{renderer-zLi2qFGT.mjs.map → renderer-CIycc5O-.mjs.map} +1 -1
  163. package/dist/renderer-CJYtfa4x.mjs +5 -0
  164. package/dist/{renderer-yNWYqvvq.mjs → renderer-CJraQlV-.mjs} +2 -2
  165. package/dist/{renderer-yNWYqvvq.mjs.map → renderer-CJraQlV-.mjs.map} +1 -1
  166. package/dist/renderer-CKMtHGZh.mjs +5 -0
  167. package/dist/renderer-CLzicoiy.mjs +5 -0
  168. package/dist/renderer-CM2A4BHd.mjs +5 -0
  169. package/dist/{renderer-BrEeUw7T.mjs → renderer-COWGWtob.mjs} +2 -2
  170. package/dist/{renderer-BrEeUw7T.mjs.map → renderer-COWGWtob.mjs.map} +1 -1
  171. package/dist/{renderer-uER8kn7f.mjs → renderer-COxG2XGf.mjs} +2 -2
  172. package/dist/{renderer-uER8kn7f.mjs.map → renderer-COxG2XGf.mjs.map} +1 -1
  173. package/dist/{renderer-C4hd6Cqi.mjs → renderer-CQDCIsQm.mjs} +2 -2
  174. package/dist/{renderer-C4hd6Cqi.mjs.map → renderer-CQDCIsQm.mjs.map} +1 -1
  175. package/dist/{renderer-Cfx_FCSf.mjs → renderer-CRUeag8i.mjs} +3 -3
  176. package/dist/{renderer-Cfx_FCSf.mjs.map → renderer-CRUeag8i.mjs.map} +1 -1
  177. package/dist/{renderer-CXrnzihz.mjs → renderer-CWVput06.mjs} +3 -3
  178. package/dist/{renderer-CXrnzihz.mjs.map → renderer-CWVput06.mjs.map} +1 -1
  179. package/dist/renderer-CZlHjcxr.mjs +5 -0
  180. package/dist/{renderer-BmyFfvVA.mjs → renderer-CbbnBLOB.mjs} +3 -3
  181. package/dist/{renderer-BmyFfvVA.mjs.map → renderer-CbbnBLOB.mjs.map} +1 -1
  182. package/dist/renderer-CbimvSU8.mjs +5 -0
  183. package/dist/renderer-Ccvc63yd.mjs +5 -0
  184. package/dist/renderer-Cdp-SGfq.mjs +5 -0
  185. package/dist/renderer-CeTcSs3e.mjs +5 -0
  186. package/dist/{renderer-_J9JcCMR.mjs → renderer-CfLZein2.mjs} +3 -3
  187. package/dist/{renderer-_J9JcCMR.mjs.map → renderer-CfLZein2.mjs.map} +1 -1
  188. package/dist/{renderer-D-mX1EVA.mjs → renderer-Ch-q1O-q.mjs} +3 -3
  189. package/dist/{renderer-D-mX1EVA.mjs.map → renderer-Ch-q1O-q.mjs.map} +1 -1
  190. package/dist/{renderer-uzU6dsdR.mjs → renderer-Ch5JvJWl.mjs} +2 -2
  191. package/dist/{renderer-uzU6dsdR.mjs.map → renderer-Ch5JvJWl.mjs.map} +1 -1
  192. package/dist/{renderer-BZMh2io2.mjs → renderer-ChtEzq-R.mjs} +2 -2
  193. package/dist/{renderer-BZMh2io2.mjs.map → renderer-ChtEzq-R.mjs.map} +1 -1
  194. package/dist/{renderer-B2IUPjhw.mjs → renderer-Cj9nTC5l.mjs} +3 -3
  195. package/dist/{renderer-B2IUPjhw.mjs.map → renderer-Cj9nTC5l.mjs.map} +1 -1
  196. package/dist/{renderer-CdXBRdFf.mjs → renderer-CqT8HsSS.mjs} +2 -2
  197. package/dist/{renderer-CdXBRdFf.mjs.map → renderer-CqT8HsSS.mjs.map} +1 -1
  198. package/dist/{renderer-CldjJmRR.mjs → renderer-CuQjMhdV.mjs} +2 -2
  199. package/dist/renderer-CvNuu52U.mjs +5 -0
  200. package/dist/renderer-CwciC0oI.mjs +5 -0
  201. package/dist/renderer-CysLUbIr.mjs +5 -0
  202. package/dist/{renderer-BsrKj6Td.mjs → renderer-Cz30EVws.mjs} +2 -2
  203. package/dist/{renderer-BsrKj6Td.mjs.map → renderer-Cz30EVws.mjs.map} +1 -1
  204. package/dist/renderer-D3A22Vxb.mjs +5 -0
  205. package/dist/renderer-D5SY9EmA.mjs +5 -0
  206. package/dist/renderer-D8h3ZvaE.mjs +5 -0
  207. package/dist/renderer-DE-B6N9n.mjs +5 -0
  208. package/dist/renderer-DETZTI7t.mjs +5 -0
  209. package/dist/{renderer-CC22Djgi.mjs → renderer-DHoX-5U_.mjs} +3 -3
  210. package/dist/{renderer-CC22Djgi.mjs.map → renderer-DHoX-5U_.mjs.map} +1 -1
  211. package/dist/{renderer-HKv5cBdp.mjs → renderer-DOkm0Ycd.mjs} +2 -2
  212. package/dist/{renderer-HKv5cBdp.mjs.map → renderer-DOkm0Ycd.mjs.map} +1 -1
  213. package/dist/{renderer-fG8Jy8Rx.d.mts → renderer-DU3f6ZrS.d.mts} +2 -2
  214. package/dist/{renderer-fG8Jy8Rx.d.mts.map → renderer-DU3f6ZrS.d.mts.map} +1 -1
  215. package/dist/{renderer-C98XwEIr.mjs → renderer-DUzv-shq.mjs} +2 -2
  216. package/dist/{renderer-C98XwEIr.mjs.map → renderer-DUzv-shq.mjs.map} +1 -1
  217. package/dist/renderer-DWnDj0IM.mjs +5 -0
  218. package/dist/renderer-DcGUIbQF.mjs +5 -0
  219. package/dist/renderer-Dfq6FoNO.mjs +5 -0
  220. package/dist/renderer-DhasXW6S.mjs +3 -0
  221. package/dist/{renderer-BEuXJY-C.mjs → renderer-DhnOWnEA.mjs} +3 -3
  222. package/dist/{renderer-BEuXJY-C.mjs.map → renderer-DhnOWnEA.mjs.map} +1 -1
  223. package/dist/{renderer-BIKkxw_Z.mjs → renderer-Dhy1XHzz.mjs} +3 -3
  224. package/dist/{renderer-BIKkxw_Z.mjs.map → renderer-Dhy1XHzz.mjs.map} +1 -1
  225. package/dist/renderer-DjCvpsV_.mjs +5 -0
  226. package/dist/{renderer-pn52dzZz.mjs → renderer-DjJshz9Y.mjs} +2 -2
  227. package/dist/{renderer-pn52dzZz.mjs.map → renderer-DjJshz9Y.mjs.map} +1 -1
  228. package/dist/{renderer-DhGZ41hQ.mjs → renderer-DmTUIdus.mjs} +3 -3
  229. package/dist/{renderer-DhGZ41hQ.mjs.map → renderer-DmTUIdus.mjs.map} +1 -1
  230. package/dist/{renderer-D_m6Qbsi.mjs → renderer-Dq7AioJa.mjs} +2 -2
  231. package/dist/{renderer-D_m6Qbsi.mjs.map → renderer-Dq7AioJa.mjs.map} +1 -1
  232. package/dist/renderer-DrAaM6JD.mjs +5 -0
  233. package/dist/{renderer-D-GWBoVT.mjs → renderer-Dt4sqNEu.mjs} +2 -2
  234. package/dist/{renderer-D-GWBoVT.mjs.map → renderer-Dt4sqNEu.mjs.map} +1 -1
  235. package/dist/{renderer-DCrKEVjb.mjs → renderer-Dtcs4idV.mjs} +3 -3
  236. package/dist/{renderer-DCrKEVjb.mjs.map → renderer-Dtcs4idV.mjs.map} +1 -1
  237. package/dist/renderer-Dxlv8LYm.mjs +5 -0
  238. package/dist/{renderer-CO9vE3sd.mjs → renderer-Gj8SrE2W.mjs} +2 -2
  239. package/dist/{renderer-CO9vE3sd.mjs.map → renderer-Gj8SrE2W.mjs.map} +1 -1
  240. package/dist/{renderer-DvHi_wXE.mjs → renderer-KfnXDJS0.mjs} +3 -3
  241. package/dist/{renderer-DvHi_wXE.mjs.map → renderer-KfnXDJS0.mjs.map} +1 -1
  242. package/dist/{renderer-7xQmXXMH.mjs → renderer-MXVlg4p5.mjs} +3 -3
  243. package/dist/{renderer-7xQmXXMH.mjs.map → renderer-MXVlg4p5.mjs.map} +1 -1
  244. package/dist/{renderer-YONlI6W-.mjs → renderer-N2b6QZ1E.mjs} +3 -3
  245. package/dist/{renderer-YONlI6W-.mjs.map → renderer-N2b6QZ1E.mjs.map} +1 -1
  246. package/dist/renderer-Pb43OO2t.mjs +5 -0
  247. package/dist/{renderer-DNynPM6X.mjs → renderer-Q7gDzm8c.mjs} +2 -2
  248. package/dist/{renderer-DNynPM6X.mjs.map → renderer-Q7gDzm8c.mjs.map} +1 -1
  249. package/dist/{renderer-BEhZiOT4.mjs → renderer-RCiANtRV.mjs} +2 -2
  250. package/dist/{renderer-BEhZiOT4.mjs.map → renderer-RCiANtRV.mjs.map} +1 -1
  251. package/dist/{renderer-Dm57W73p.mjs → renderer-Sig9nZcI.mjs} +2 -2
  252. package/dist/renderer-VQbm-cGr.mjs +5 -0
  253. package/dist/{renderer-DiZkZ0Pr.mjs → renderer-fabBgwQX.mjs} +3 -3
  254. package/dist/{renderer-DiZkZ0Pr.mjs.map → renderer-fabBgwQX.mjs.map} +1 -1
  255. package/dist/{renderer-Bw-_GZVw.mjs → renderer-g-0PCNoo.mjs} +3 -3
  256. package/dist/{renderer-Bw-_GZVw.mjs.map → renderer-g-0PCNoo.mjs.map} +1 -1
  257. package/dist/{renderer-QbSrnPZU.mjs → renderer-gmHKIbKI.mjs} +3 -3
  258. package/dist/{renderer-QbSrnPZU.mjs.map → renderer-gmHKIbKI.mjs.map} +1 -1
  259. package/dist/{renderer-CU6WT5jW.mjs → renderer-kVZwiRoK.mjs} +3 -3
  260. package/dist/{renderer-CU6WT5jW.mjs.map → renderer-kVZwiRoK.mjs.map} +1 -1
  261. package/dist/renderer-oPMypDM1.mjs +5 -0
  262. package/dist/{renderer-CRhEGqW4.mjs → renderer-p7tgxP-A.mjs} +3 -3
  263. package/dist/{renderer-CRhEGqW4.mjs.map → renderer-p7tgxP-A.mjs.map} +1 -1
  264. package/dist/{renderer-CO4NGvAh.mjs → renderer-tvYj306A.mjs} +81 -78
  265. package/dist/renderer-tvYj306A.mjs.map +1 -0
  266. package/dist/renderer-xvWGpVyp.mjs +5 -0
  267. package/dist/renderer-zafZbD6Q.mjs +5 -0
  268. package/dist/{renderers-CP8CFWDs-BufiCyn7.mjs → renderers-CP8CFWDs-DLjtjrwx.mjs} +2 -2
  269. package/dist/{renderers-CP8CFWDs-BufiCyn7.mjs.map → renderers-CP8CFWDs-DLjtjrwx.mjs.map} +1 -1
  270. package/dist/sam/index.d.mts +3 -3
  271. package/dist/sam/index.mjs +1 -1
  272. package/dist/signals/index.d.mts +5 -5
  273. package/dist/signals/index.mjs +4 -4
  274. package/dist/{src-BU6vm9sP-DdTHmCr4.mjs → src-B23p_eh7-Cj6-lvV6.mjs} +293 -6
  275. package/dist/src-B23p_eh7-Cj6-lvV6.mjs.map +1 -0
  276. package/dist/{src-DrP7fGJX.mjs → src-CoHAjviq.mjs} +1355 -178
  277. package/dist/src-CoHAjviq.mjs.map +1 -0
  278. package/dist/storage/index.mjs +1 -1
  279. package/package.json +63 -60
  280. package/dist/dist-CiTgmfUw.mjs.map +0 -1
  281. package/dist/dist-DtPPPsZV.mjs.map +0 -1
  282. package/dist/fonts-k5ll8NTE.mjs.map +0 -1
  283. package/dist/index-C2yaponf.d.mts.map +0 -1
  284. package/dist/index-C5sgRLlG.d.mts.map +0 -1
  285. package/dist/index-CnZhBlob.d.mts.map +0 -1
  286. package/dist/index-CtKUQ2VG.d.mts.map +0 -1
  287. package/dist/index-DBh3WphX.d.mts.map +0 -1
  288. package/dist/index-DQ1U3HC3.d.mts.map +0 -1
  289. package/dist/index-a6JrbAK0.d.mts.map +0 -1
  290. package/dist/preview-engine/chunk-5ZS46EFB.mjs +0 -5
  291. package/dist/preview-engine/chunk-N3XTDAL6.mjs +0 -2227
  292. package/dist/preview-engine/chunk-NCQHOGZK.mjs +0 -3
  293. package/dist/preview-engine/chunk-PH3UUX6A.mjs +0 -138
  294. package/dist/preview-engine/chunk-XCPRRMMW.mjs +0 -2462
  295. package/dist/preview-engine/renderers-ZMMQ7S2A.mjs +0 -228
  296. package/dist/preview-lHH8Tv4j.mjs +0 -2446
  297. package/dist/preview-lHH8Tv4j.mjs.map +0 -1
  298. package/dist/program-BfiB9ttP.mjs.map +0 -1
  299. package/dist/renderer-0rLmztAv.mjs +0 -5
  300. package/dist/renderer-B0pjOXFY.mjs +0 -5
  301. package/dist/renderer-B7J13reL.mjs +0 -5
  302. package/dist/renderer-BPGIKGgl.mjs +0 -5
  303. package/dist/renderer-Bv-Artj1.mjs +0 -5
  304. package/dist/renderer-BvLjbhcL.mjs +0 -5
  305. package/dist/renderer-By6awWaf.mjs +0 -5
  306. package/dist/renderer-C0rvsz7m.mjs +0 -5
  307. package/dist/renderer-CDgud_HB.mjs +0 -5
  308. package/dist/renderer-CDiRF3bG.mjs +0 -6
  309. package/dist/renderer-CIIEQd4B.mjs +0 -5
  310. package/dist/renderer-CJblwOA9.mjs +0 -5
  311. package/dist/renderer-CNMOXtXE.mjs +0 -5
  312. package/dist/renderer-CO4NGvAh.mjs.map +0 -1
  313. package/dist/renderer-COeSeNGg.mjs +0 -5
  314. package/dist/renderer-CUfElmtZ.mjs +0 -5
  315. package/dist/renderer-CYh2lFoJ.mjs +0 -5
  316. package/dist/renderer-CYtVZYMH.mjs +0 -5
  317. package/dist/renderer-CjxZlkjb.mjs +0 -5
  318. package/dist/renderer-Cpd6TvTC.mjs +0 -5
  319. package/dist/renderer-D3ziOPhX.mjs +0 -5
  320. package/dist/renderer-D5yp74NL.mjs +0 -3
  321. package/dist/renderer-DL-phtL5.mjs +0 -5
  322. package/dist/renderer-DSnmYnHg.mjs +0 -5
  323. package/dist/renderer-DUGfsT-E.mjs +0 -5
  324. package/dist/renderer-DW5af9x1.mjs +0 -5
  325. package/dist/renderer-DYMrol1t.mjs +0 -5
  326. package/dist/renderer-DekeUHaz.mjs +0 -5
  327. package/dist/renderer-Dt5uyJdZ.mjs +0 -5
  328. package/dist/renderer-Dv_iRIyx.mjs.map +0 -1
  329. package/dist/renderer-DwLQAnaK.mjs +0 -5
  330. package/dist/renderer-IXQP2CWM.mjs +0 -5
  331. package/dist/renderer-K-Pkw63O.mjs +0 -5
  332. package/dist/renderer-MPw2KH9P.mjs +0 -5
  333. package/dist/renderer-RPu8RMav.mjs +0 -5
  334. package/dist/renderer-dCqxd5N2.mjs +0 -5
  335. package/dist/renderer-lhjmE-Fp.mjs +0 -5
  336. package/dist/renderer-u9cmBuvM.mjs +0 -5
  337. package/dist/renderer-vH12jcpz.mjs +0 -5
  338. package/dist/src-BU6vm9sP-DdTHmCr4.mjs.map +0 -1
  339. package/dist/src-DrP7fGJX.mjs.map +0 -1
@@ -1,14 +1,167 @@
1
- import { $ as FrameSignal, $t as NormalRelightingOptions, I as Effect$1, M as DeflickerOptions, Mt as MediaTimeSignalRemap, O as DataType, Pt as MeshAudioDeformConfig, Tt as MediaSourceInput, Z as FrameContext, dn as ProgrammaticSignal, gn as ResolvedMediaTimeRemap, hn as RenderDiagnostic, kt as MediaTimeRemapInput, mr as VisionTask, qn as TextSpan, ur as VirtualMediaData, vt as MediaMetadata, xn as Signal, z as EffectDomain } from "./index-a6JrbAK0.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-C2yaponf.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-DBh3WphX.mjs";
5
- import { S as Sam3Options, p as Sam2Options } from "./index-rtCXNxGO.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-ByhlTwxh.mjs";
7
- import { _ as RenderProgress, b as VideoQaOptions, f as HeadlessMediaRenderer, t as FrameGridOptions, x as VideoQaReport } from "./index-DQ1U3HC3.mjs";
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 { $ 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
- width: "width";
41
- height: "height";
42
- rotation: "rotation";
43
193
  scale: "scale";
194
+ rotation: "rotation";
44
195
  opacity: "opacity";
45
- trimStart: "trimStart";
46
- trimEnd: "trimEnd";
47
- text: "text";
48
- fontSize: "fontSize";
49
- fill: "fill";
50
- letterSpacing: "letterSpacing";
51
- padding: "padding";
52
- strokeWidth: "strokeWidth";
53
- borderColor: "borderColor";
54
- borderWidth: "borderWidth";
196
+ width: "width";
197
+ height: "height";
55
198
  volume: "volume";
56
- color: "color";
57
- offset: "offset";
58
199
  hidden: "hidden";
59
200
  muted: "muted";
60
201
  gap: "gap";
202
+ padding: "padding";
61
203
  borderRadius: "borderRadius";
204
+ fontSize: "fontSize";
205
+ text: "text";
206
+ fill: "fill";
207
+ color: "color";
208
+ letterSpacing: "letterSpacing";
62
209
  d: "d";
210
+ trimStart: "trimStart";
211
+ trimEnd: "trimEnd";
63
212
  trimOffset: "trimOffset";
213
+ strokeWidth: "strokeWidth";
64
214
  strokeDashOffset: "strokeDashOffset";
65
215
  cornerRadius: "cornerRadius";
66
216
  starInnerRadiusRatio: "starInnerRadiusRatio";
67
217
  fillColor: "fillColor";
68
218
  strokeColor: "strokeColor";
219
+ borderColor: "borderColor";
220
+ borderWidth: "borderWidth";
69
221
  motionBlurShutter: "motionBlurShutter";
70
222
  rangeStart: "rangeStart";
71
223
  rangeEnd: "rangeEnd";
224
+ 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,7 +350,6 @@ 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<{
181
- bounce: "bounce";
182
353
  none: "none";
183
354
  power1: "power1";
184
355
  power2: "power2";
@@ -188,6 +359,7 @@ declare const EaseRefSchema: z.ZodObject<{
188
359
  expo: "expo";
189
360
  back: "back";
190
361
  elastic: "elastic";
362
+ bounce: "bounce";
191
363
  spring: "spring";
192
364
  cubic: "cubic";
193
365
  hold: "hold";
@@ -206,7 +378,6 @@ 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<{
209
- bounce: "bounce";
210
381
  none: "none";
211
382
  power1: "power1";
212
383
  power2: "power2";
@@ -216,6 +387,7 @@ declare const KeyframeSchema: z.ZodObject<{
216
387
  expo: "expo";
217
388
  back: "back";
218
389
  elastic: "elastic";
390
+ bounce: "bounce";
219
391
  spring: "spring";
220
392
  cubic: "cubic";
221
393
  hold: "hold";
@@ -239,6 +411,16 @@ declare const KeyframeSchema: z.ZodObject<{
239
411
  }, z.core.$strip>>;
240
412
  }, z.core.$strict>;
241
413
  type Keyframe = z.infer<typeof KeyframeSchema>;
414
+ /**
415
+ * Which clock a signal track reads: the composition's (default), as audio
416
+ * analysis and shared signals need, or its layer's own, from the layer's
417
+ * start frame, as keyframes do: motion authored for one scene of a sequence.
418
+ */
419
+ declare const SignalClockSchema: z.ZodEnum<{
420
+ composition: "composition";
421
+ layer: "layer";
422
+ }>;
423
+ type SignalClock = z.infer<typeof SignalClockSchema>;
242
424
  declare const RawTrackSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
243
425
  type: z.ZodLiteral<"keyframe">;
244
426
  }, z.core.$strip>, z.ZodObject<{
@@ -263,6 +445,10 @@ declare const RawTrackSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
263
445
  accumulateThreshold: z.ZodOptional<z.ZodNumber>;
264
446
  debounceFrames: z.ZodOptional<z.ZodNumber>;
265
447
  channel: z.ZodOptional<z.ZodString>;
448
+ clock: z.ZodOptional<z.ZodEnum<{
449
+ composition: "composition";
450
+ layer: "layer";
451
+ }>>;
266
452
  }, z.core.$strip>, z.ZodObject<{
267
453
  type: z.ZodLiteral<"wiggle">;
268
454
  frequency: z.ZodDefault<z.ZodNumber>;
@@ -281,38 +467,38 @@ declare const AnimationTrackSchema: z.ZodObject<{
281
467
  prop: z.ZodEnum<{
282
468
  x: "x";
283
469
  y: "y";
284
- width: "width";
285
- height: "height";
286
- rotation: "rotation";
287
470
  scale: "scale";
471
+ rotation: "rotation";
288
472
  opacity: "opacity";
289
- trimStart: "trimStart";
290
- trimEnd: "trimEnd";
291
- text: "text";
292
- fontSize: "fontSize";
293
- fill: "fill";
294
- letterSpacing: "letterSpacing";
295
- padding: "padding";
296
- strokeWidth: "strokeWidth";
297
- borderColor: "borderColor";
298
- borderWidth: "borderWidth";
473
+ width: "width";
474
+ height: "height";
299
475
  volume: "volume";
300
- color: "color";
301
- offset: "offset";
302
476
  hidden: "hidden";
303
477
  muted: "muted";
304
478
  gap: "gap";
479
+ padding: "padding";
305
480
  borderRadius: "borderRadius";
481
+ fontSize: "fontSize";
482
+ text: "text";
483
+ fill: "fill";
484
+ color: "color";
485
+ letterSpacing: "letterSpacing";
306
486
  d: "d";
487
+ trimStart: "trimStart";
488
+ trimEnd: "trimEnd";
307
489
  trimOffset: "trimOffset";
490
+ strokeWidth: "strokeWidth";
308
491
  strokeDashOffset: "strokeDashOffset";
309
492
  cornerRadius: "cornerRadius";
310
493
  starInnerRadiusRatio: "starInnerRadiusRatio";
311
494
  fillColor: "fillColor";
312
495
  strokeColor: "strokeColor";
496
+ borderColor: "borderColor";
497
+ borderWidth: "borderWidth";
313
498
  motionBlurShutter: "motionBlurShutter";
314
499
  rangeStart: "rangeStart";
315
500
  rangeEnd: "rangeEnd";
501
+ offset: "offset";
316
502
  animatorRangeStart: "animatorRangeStart";
317
503
  animatorRangeEnd: "animatorRangeEnd";
318
504
  animatorOffset: "animatorOffset";
@@ -343,6 +529,7 @@ declare const AnimationTrackSchema: z.ZodObject<{
343
529
  maxBlurRadius: "maxBlurRadius";
344
530
  shakeTranslation: "shakeTranslation";
345
531
  shakeRotation: "shakeRotation";
532
+ relativitySpeed: "relativitySpeed";
346
533
  orbitRadius: "orbitRadius";
347
534
  orbitAzimuth: "orbitAzimuth";
348
535
  orbitElevation: "orbitElevation";
@@ -371,7 +558,24 @@ declare const AnimationTrackSchema: z.ZodObject<{
371
558
  scaleY: "scaleY";
372
559
  emissive: "emissive";
373
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";
374
575
  exposure: "exposure";
576
+ volumetricFogDensity: "volumetricFogDensity";
577
+ volumetricFogAnisotropy: "volumetricFogAnisotropy";
578
+ volumetricFogNoiseStrength: "volumetricFogNoiseStrength";
375
579
  }>;
376
580
  source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
377
581
  type: z.ZodLiteral<"keyframe">;
@@ -397,6 +601,10 @@ declare const AnimationTrackSchema: z.ZodObject<{
397
601
  accumulateThreshold: z.ZodOptional<z.ZodNumber>;
398
602
  debounceFrames: z.ZodOptional<z.ZodNumber>;
399
603
  channel: z.ZodOptional<z.ZodString>;
604
+ clock: z.ZodOptional<z.ZodEnum<{
605
+ composition: "composition";
606
+ layer: "layer";
607
+ }>>;
400
608
  }, z.core.$strip>, z.ZodObject<{
401
609
  type: z.ZodLiteral<"wiggle">;
402
610
  frequency: z.ZodDefault<z.ZodNumber>;
@@ -415,7 +623,6 @@ declare const AnimationTrackSchema: z.ZodObject<{
415
623
  value: z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString]>;
416
624
  ease: z.ZodOptional<z.ZodObject<{
417
625
  name: z.ZodEnum<{
418
- bounce: "bounce";
419
626
  none: "none";
420
627
  power1: "power1";
421
628
  power2: "power2";
@@ -425,6 +632,7 @@ declare const AnimationTrackSchema: z.ZodObject<{
425
632
  expo: "expo";
426
633
  back: "back";
427
634
  elastic: "elastic";
635
+ bounce: "bounce";
428
636
  spring: "spring";
429
637
  cubic: "cubic";
430
638
  hold: "hold";
@@ -461,38 +669,38 @@ declare const LayerAnimationSchema: z.ZodObject<{
461
669
  prop: z.ZodEnum<{
462
670
  x: "x";
463
671
  y: "y";
464
- width: "width";
465
- height: "height";
466
- rotation: "rotation";
467
672
  scale: "scale";
673
+ rotation: "rotation";
468
674
  opacity: "opacity";
469
- trimStart: "trimStart";
470
- trimEnd: "trimEnd";
471
- text: "text";
472
- fontSize: "fontSize";
473
- fill: "fill";
474
- letterSpacing: "letterSpacing";
475
- padding: "padding";
476
- strokeWidth: "strokeWidth";
477
- borderColor: "borderColor";
478
- borderWidth: "borderWidth";
675
+ width: "width";
676
+ height: "height";
479
677
  volume: "volume";
480
- color: "color";
481
- offset: "offset";
482
678
  hidden: "hidden";
483
679
  muted: "muted";
484
680
  gap: "gap";
681
+ padding: "padding";
485
682
  borderRadius: "borderRadius";
683
+ fontSize: "fontSize";
684
+ text: "text";
685
+ fill: "fill";
686
+ color: "color";
687
+ letterSpacing: "letterSpacing";
486
688
  d: "d";
689
+ trimStart: "trimStart";
690
+ trimEnd: "trimEnd";
487
691
  trimOffset: "trimOffset";
692
+ strokeWidth: "strokeWidth";
488
693
  strokeDashOffset: "strokeDashOffset";
489
694
  cornerRadius: "cornerRadius";
490
695
  starInnerRadiusRatio: "starInnerRadiusRatio";
491
696
  fillColor: "fillColor";
492
697
  strokeColor: "strokeColor";
698
+ borderColor: "borderColor";
699
+ borderWidth: "borderWidth";
493
700
  motionBlurShutter: "motionBlurShutter";
494
701
  rangeStart: "rangeStart";
495
702
  rangeEnd: "rangeEnd";
703
+ offset: "offset";
496
704
  animatorRangeStart: "animatorRangeStart";
497
705
  animatorRangeEnd: "animatorRangeEnd";
498
706
  animatorOffset: "animatorOffset";
@@ -523,6 +731,7 @@ declare const LayerAnimationSchema: z.ZodObject<{
523
731
  maxBlurRadius: "maxBlurRadius";
524
732
  shakeTranslation: "shakeTranslation";
525
733
  shakeRotation: "shakeRotation";
734
+ relativitySpeed: "relativitySpeed";
526
735
  orbitRadius: "orbitRadius";
527
736
  orbitAzimuth: "orbitAzimuth";
528
737
  orbitElevation: "orbitElevation";
@@ -551,7 +760,24 @@ declare const LayerAnimationSchema: z.ZodObject<{
551
760
  scaleY: "scaleY";
552
761
  emissive: "emissive";
553
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";
554
777
  exposure: "exposure";
778
+ volumetricFogDensity: "volumetricFogDensity";
779
+ volumetricFogAnisotropy: "volumetricFogAnisotropy";
780
+ volumetricFogNoiseStrength: "volumetricFogNoiseStrength";
555
781
  }>;
556
782
  source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
557
783
  type: z.ZodLiteral<"keyframe">;
@@ -577,6 +803,10 @@ declare const LayerAnimationSchema: z.ZodObject<{
577
803
  accumulateThreshold: z.ZodOptional<z.ZodNumber>;
578
804
  debounceFrames: z.ZodOptional<z.ZodNumber>;
579
805
  channel: z.ZodOptional<z.ZodString>;
806
+ clock: z.ZodOptional<z.ZodEnum<{
807
+ composition: "composition";
808
+ layer: "layer";
809
+ }>>;
580
810
  }, z.core.$strip>, z.ZodObject<{
581
811
  type: z.ZodLiteral<"wiggle">;
582
812
  frequency: z.ZodDefault<z.ZodNumber>;
@@ -595,7 +825,6 @@ declare const LayerAnimationSchema: z.ZodObject<{
595
825
  value: z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString]>;
596
826
  ease: z.ZodOptional<z.ZodObject<{
597
827
  name: z.ZodEnum<{
598
- bounce: "bounce";
599
828
  none: "none";
600
829
  power1: "power1";
601
830
  power2: "power2";
@@ -605,6 +834,7 @@ declare const LayerAnimationSchema: z.ZodObject<{
605
834
  expo: "expo";
606
835
  back: "back";
607
836
  elastic: "elastic";
837
+ bounce: "bounce";
608
838
  spring: "spring";
609
839
  cubic: "cubic";
610
840
  hold: "hold";
@@ -637,6 +867,19 @@ type BaseLayerAnimationSpec = z.infer<typeof LayerAnimationSchema>;
637
867
  type LayerAnimationSpec<TProp extends AnimatableProp = AnimatableProp> = Omit<BaseLayerAnimationSpec, "tracks"> & {
638
868
  tracks: AnimationTrack<TProp>[];
639
869
  };
870
+ declare const ToonShadingSchema: z.ZodType<ToonShading>;
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>;
640
883
  interface CompositionNodeBase {
641
884
  id: string;
642
885
  inputHandleId?: string;
@@ -685,7 +928,24 @@ interface CompositionNodeBase {
685
928
  fresnelPower?: number;
686
929
  emissive?: string;
687
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;
688
946
  castShadow?: boolean;
947
+ toon?: ToonShading;
948
+ outline?: boolean;
689
949
  matte?: {
690
950
  node: unknown;
691
951
  mode?: MatteMode;
@@ -700,6 +960,7 @@ interface CompositionNodeBase {
700
960
  reliefId?: string;
701
961
  reliefOf?: string;
702
962
  reliefAmount?: number;
963
+ textureOf?: string;
703
964
  envIntensity?: number;
704
965
  startFrame?: number;
705
966
  durationFrames?: number;
@@ -859,6 +1120,13 @@ interface TextNode extends CompositionNodeBase {
859
1120
  fontSize?: number;
860
1121
  fontWeight?: number | string;
861
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>;
862
1130
  fill?: string;
863
1131
  align?: "start" | "center" | "end";
864
1132
  /**
@@ -950,6 +1218,12 @@ interface ShapeNode extends CompositionNodeBase {
950
1218
  trimEnd?: number;
951
1219
  trimOffset?: number;
952
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
+
953
1227
  declare const CameraLensSchema: z.ZodObject<{
954
1228
  focalLength: z.ZodDefault<z.ZodNumber>;
955
1229
  fov: z.ZodOptional<z.ZodNumber>;
@@ -957,8 +1231,15 @@ declare const CameraLensSchema: z.ZodObject<{
957
1231
  near: z.ZodDefault<z.ZodNumber>;
958
1232
  far: z.ZodDefault<z.ZodNumber>;
959
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>;
960
1240
  }, z.core.$strict>;
961
- 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>;
962
1243
  declare const CameraDoFSchema: z.ZodObject<{
963
1244
  enabled: z.ZodDefault<z.ZodBoolean>;
964
1245
  focusDistance: z.ZodDefault<z.ZodNumber>;
@@ -976,7 +1257,33 @@ declare const CameraShakeSchema: z.ZodObject<{
976
1257
  octaves: z.ZodDefault<z.ZodNumber>;
977
1258
  seed: z.ZodDefault<z.ZodNumber>;
978
1259
  }, z.core.$strict>;
979
- 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>;
980
1287
  interface CameraNode {
981
1288
  id: string;
982
1289
  kind: "camera";
@@ -993,13 +1300,17 @@ interface CameraNode {
993
1300
  lens?: CameraLens;
994
1301
  dof?: CameraDoF;
995
1302
  shake?: CameraShake;
1303
+ /** Shutter motion blur of the 3D scene; `true` takes the defaults. */
1304
+ motionBlur?: boolean | CameraMotionBlur;
1305
+ relativity?: CameraRelativity;
996
1306
  startFrame?: number;
997
1307
  durationFrames?: number;
998
1308
  animation?: LayerAnimationSpec;
999
1309
  }
1000
1310
  declare const CameraNodeSchema: z.ZodType<CameraNode>;
1001
- type LightType = "ambient" | "directional" | "point" | "spot" | "environment";
1311
+ type LightType = "ambient" | "directional" | "point" | "spot" | "rect" | "environment";
1002
1312
  declare const LightTypeSchema: z.ZodEnum<{
1313
+ rect: "rect";
1003
1314
  ambient: "ambient";
1004
1315
  directional: "directional";
1005
1316
  point: "point";
@@ -1009,8 +1320,10 @@ declare const LightTypeSchema: z.ZodEnum<{
1009
1320
  declare const EnvironmentPresetSchema: z.ZodEnum<{
1010
1321
  studio: "studio";
1011
1322
  soft: "soft";
1323
+ warm: "warm";
1012
1324
  sunset: "sunset";
1013
1325
  night: "night";
1326
+ neon: "neon";
1014
1327
  neutral: "neutral";
1015
1328
  }>;
1016
1329
  type EnvironmentPreset = z.infer<typeof EnvironmentPresetSchema>;
@@ -1044,6 +1357,44 @@ declare const EnvironmentFloorSchema: z.ZodObject<{
1044
1357
  opacity: z.ZodOptional<z.ZodNumber>;
1045
1358
  }, z.core.$strict>;
1046
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>;
1047
1398
  interface LightNode {
1048
1399
  id: string;
1049
1400
  kind: "light";
@@ -1061,15 +1412,23 @@ interface LightNode {
1061
1412
  decay?: number;
1062
1413
  angle?: number;
1063
1414
  penumbra?: number;
1064
- /** 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. */
1065
1422
  castShadow?: boolean;
1066
1423
  /** Shadow edge blur in shadow-map texels. Default 2.5. */
1067
1424
  shadowSoftness?: number;
1068
1425
  /** 0..1, how dark shadows get. Default 1. */
1069
1426
  shadowDarkness?: number;
1070
- /** Shadow map resolution (texels per side). Default 2048. */
1427
+ /** Shadow map resolution (texels per side). Default 2048 (1024 for point). */
1071
1428
  shadowMapSize?: number;
1072
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;
1073
1432
  top?: string;
1074
1433
  horizon?: string;
1075
1434
  bottom?: string;
@@ -1079,6 +1438,20 @@ interface LightNode {
1079
1438
  toneMapping?: ToneMapping;
1080
1439
  fog?: EnvironmentFog;
1081
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;
1453
+ /** Optional depth/normal outlines, before depth of field and bloom. */
1454
+ outlines?: boolean | GeometryOutlineOptions;
1082
1455
  /** Glow around emissive surfaces and hot highlights: `true` or settings. */
1083
1456
  bloom?: boolean | BloomConfig;
1084
1457
  startFrame?: number;
@@ -1113,6 +1486,26 @@ interface Model3DNode {
1113
1486
  specularIntensity?: number;
1114
1487
  ambientIntensity?: number;
1115
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;
1116
1509
  color?: string;
1117
1510
  colorTint?: string;
1118
1511
  opacity?: number;
@@ -1133,6 +1526,41 @@ interface Model3DNode {
1133
1526
  instances3d?: unknown;
1134
1527
  /** Layer3D.swarm GPU simulation and instancing options. */
1135
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;
1136
1564
  }
1137
1565
  type LayoutNode = FlexNode | BlockNode | BoxNode | TextNode | MediaNode | ShapeNode | CameraNode | LightNode | Model3DNode;
1138
1566
  declare const FlexNodeSchema: z.ZodType<FlexNode>;
@@ -1263,6 +1691,9 @@ declare function computeLayoutSync(yoga: Yoga, input: LayoutInput): LayoutResult
1263
1691
  declare function computeLayout(input: LayoutInput): Promise<LayoutResult>;
1264
1692
  //#endregion
1265
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;
1266
1697
  /**
1267
1698
  * One keyframe as a tuple: `[frame, value]` or `[frame, value, ease]`. The
1268
1699
  * ease shapes the motion arriving at this keyframe from the one before.
@@ -1314,6 +1745,13 @@ interface SignalTrackOptions {
1314
1745
  mode?: "continuous" | "accumulate";
1315
1746
  threshold?: number;
1316
1747
  debounceFrames?: number;
1748
+ /**
1749
+ * `"composition"` (default) samples the signal at the composition frame,
1750
+ * as audio analysis and shared signals need. `"layer"` samples it at the
1751
+ * layer's own frame, counted from its start like keyframes: for motion
1752
+ * authored per scene, which then plays right inside `Layer.sequence`.
1753
+ */
1754
+ clock?: SignalClock;
1317
1755
  }
1318
1756
  interface ColorSignalOptions {
1319
1757
  colorA: string;
@@ -1402,21 +1840,24 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
1402
1840
  static stepped<P extends AnimatableProp = AnimatableProp>(frames?: number): LayerAnimation<P>;
1403
1841
  /** See {@link LayerAnimation.stepped}. */
1404
1842
  stepped(frames?: number): this;
1405
- 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>>;
1406
1844
  /** A track from a list of `[frame, value, ease?]` keyframes; see {@link LayerAnimation.keys}. */
1407
- static keys<P extends AnimatableProp = AnimatableProp>(prop: P, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): LayerAnimation<P>;
1408
- static signal<P extends AnimatableProp = AnimatableProp>(prop: P, signalOrHandleId: unknown, options?: SignalTrackOptions): LayerAnimation<P>;
1409
- 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>>;
1410
1848
  static kineticSweep(fromOffset?: number, toOffset?: number, startFrame?: number, endFrame?: number, ease?: string | EaseRef): LayerAnimation;
1411
1849
  static typewriter(startFrame?: number, endFrame?: number, ease?: string | EaseRef): LayerAnimation;
1412
1850
  static letterSpacing(fromSpacing: number, toSpacing: number, startFrame?: number, endFrame?: number, ease?: string | EaseRef): LayerAnimation;
1413
- static wiggle(prop: AnimatableProp, options?: WiggleOptions): LayerAnimation;
1414
- 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;
1415
1853
  static firstMargin(fromMargin: number, toMargin: number, options?: FromToOptions): LayerAnimation;
1416
1854
  static strokeWidth(fromWidth: number, toWidth: number, options?: FromToOptions): LayerAnimation;
1417
1855
  static rotateX(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1418
1856
  static rotateY(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1419
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;
1420
1861
  static rotation(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
1421
1862
  static scale(fromScale: number, toScale: number, options?: FromToOptions): LayerAnimation;
1422
1863
  static scaleX(fromScale: number, toScale: number, options?: FromToOptions): LayerAnimation;
@@ -1427,32 +1868,32 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
1427
1868
  * - `-1`: loops indefinitely.
1428
1869
  * - `N`: repeats N times after the initial iteration (total N + 1 iterations).
1429
1870
  */
1430
- repeat(count?: number, prop?: AnimatableProp): this;
1871
+ repeat(count?: number, prop?: AnimatableProp | AnimatablePropAlias): this;
1431
1872
  /**
1432
1873
  * Enables or disables yoyo (alternate playback direction on each repeat iteration).
1433
1874
  */
1434
- yoyo(enable?: boolean, prop?: AnimatableProp): this;
1875
+ yoyo(enable?: boolean, prop?: AnimatableProp | AnimatablePropAlias): this;
1435
1876
  /**
1436
1877
  * Shorthand to loop keyframed animation continuously (infinite repeat).
1437
1878
  * If `options.yoyo` is true, oscillates back and forth.
1438
1879
  */
1439
1880
  loop(options?: {
1440
1881
  yoyo?: boolean;
1441
- }, prop?: AnimatableProp): this;
1882
+ }, prop?: AnimatableProp | AnimatablePropAlias): this;
1442
1883
  /**
1443
1884
  * Creates a keyframed track animating from fromValue to toValue.
1444
1885
  */
1445
- 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;
1446
1887
  /**
1447
1888
  * Appends a keyframe to an existing track for prop, or creates a new track.
1448
1889
  */
1449
- 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;
1450
1891
  /**
1451
1892
  * Adds several keyframes to prop's track at once:
1452
1893
  * `.keys("scale", [[0, 0], [12, 1.1, "back.out"], [20, 1]])`.
1453
1894
  * Frames are rounded to whole frames, so beat math can be passed straight in.
1454
1895
  */
1455
- keys(prop: AnimatableProp, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): this;
1896
+ keys(rawProp: AnimatableProp | AnimatablePropAlias, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): this;
1456
1897
  /**
1457
1898
  * Animates opacity from 0 to 1 between startFrame and endFrame.
1458
1899
  */
@@ -1506,6 +1947,12 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
1506
1947
  * Animate rotateZ from fromAngle to toAngle.
1507
1948
  */
1508
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;
1509
1956
  /**
1510
1957
  * Animate scale along the X axis.
1511
1958
  */
@@ -1538,20 +1985,20 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
1538
1985
  * registered with the program automatically — or the name of a signal
1539
1986
  * registered with `comp.addSignal(name, signal)`.
1540
1987
  */
1541
- signal(prop: AnimatableProp, signalOrHandleId: unknown, options?: SignalTrackOptions): this;
1988
+ signal(rawProp: AnimatableProp | AnimatablePropAlias, signalOrHandleId: unknown, options?: SignalTrackOptions): this;
1542
1989
  /**
1543
1990
  * Modulates color interpolation based on an active signal (object or
1544
1991
  * registered name, as in {@link LayerAnimation.signal}).
1545
1992
  */
1546
- colorSignal(prop: AnimatableProp, signalOrHandleId: unknown, options: ColorSignalOptions): this;
1993
+ colorSignal(rawProp: AnimatableProp | AnimatablePropAlias, signalOrHandleId: unknown, options: ColorSignalOptions): this;
1547
1994
  /**
1548
1995
  * Adds organic Perlin noise wiggling to a property.
1549
1996
  */
1550
- wiggle(prop: AnimatableProp, options?: WiggleOptions): this;
1997
+ wiggle(rawProp: AnimatableProp | AnimatablePropAlias, options?: WiggleOptions): this;
1551
1998
  /**
1552
1999
  * Adds physical harmonic spring overshoot behavior to a property transition.
1553
2000
  */
1554
- spring(prop: AnimatableProp, options?: SpringOptions): this;
2001
+ spring(rawProp: AnimatableProp | AnimatablePropAlias, options?: SpringOptions): this;
1555
2002
  /**
1556
2003
  * Follows a 2D or 3D path with constant arc-length velocity, automatic orientation,
1557
2004
  * banking into turns, and optional easing.
@@ -1685,14 +2132,26 @@ interface LintOptions {
1685
2132
  * the emoji would draw nothing. Unknown (omitted): not checked.
1686
2133
  */
1687
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;
1688
2142
  }
1689
2143
  declare function lintComposition(config: Pick<CompositorProgramConfig, "width" | "height" | "layout"> & {
1690
2144
  backgroundColor?: string;
1691
2145
  }, options?: LintOptions): RenderDiagnostic[];
1692
2146
  //#endregion
1693
2147
  //#region src/program/mattes.d.ts
1694
- /** Returns the tree with every `matte` and `relief` turned into a sibling companion layer. */
1695
- 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[];
1696
2155
  //#endregion
1697
2156
  //#region src/program/media-signal.d.ts
1698
2157
  /** Where a signal-driven media layer sits on the composition clock. */
@@ -1897,75 +2356,355 @@ interface CompositorToProgramOptions {
1897
2356
  resolveMediaSignal?: MediaSignalResolver;
1898
2357
  }
1899
2358
  type MediaSignalResolver = (binding: MediaTimeSignalRemap, layer: MediaSignalLayer) => ResolvedMediaTimeRemap;
2359
+ /**
2360
+ * A container holding a camera and the layers it films is a 3D scene of its
2361
+ * own: its camera, lights and environment see only its layers. It needs a
2362
+ * fixed size to render at. A container holding only a camera (and lights) is
2363
+ * a shot in a camera cut list over the shared world, and stays one.
2364
+ */
2365
+
1900
2366
  declare function compositorToProgram(config: CompositorProgramConfig, options: CompositorToProgramOptions): VirtualMediaData;
1901
- /** Recursively gather every node op from a render tree (in order). */
2367
+ /**
2368
+ * Recursively gather every node op from a render tree (in order), stopping at
2369
+ * nested scene compositions: their layers belong to their own render.
2370
+ */
2371
+ /**
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.
2375
+ */
2376
+
1902
2377
  declare function collectNodeOps(nodes: VirtualMediaData[]): VirtualMediaData[];
1903
2378
  //#endregion
1904
- //#region src/program/validate.d.ts
1905
- //#endregion
1906
- //#region ../components/dist/toolkit-HF1uj72e.d.mts
1907
- //#region src/core/audio.d.ts
1908
-
1909
- /** A track's spectrum and loudness per frame, every value 0–1. */
1910
- interface AudioLevels {
1911
- fps: number;
1912
- /** Length in frames. */
1913
- frames: number;
1914
- /** `[band][frame]`, low → high frequencies. */
1915
- bands: number[][];
1916
- /** Loudness envelope, `[frame]`. */
1917
- level: number[];
1918
- /** Onset frames (kicks, plosives), from low-band flux. */
1919
- beats: number[];
1920
- }
1921
- interface AnalyzeOptions {
1922
- /** Frame rate of the composition. Default 30. */
1923
- fps?: number;
1924
- /** Log-spaced bands. Default 32. */
1925
- bands?: number;
1926
- /** Lowest band edge, Hz. Default 50. */
1927
- minHz?: number;
1928
- /** Highest band edge, Hz. Default 12 000 (or Nyquist). */
1929
- maxHz?: number;
1930
- }
1931
- /** Band edges in Hz, log-spaced. */
1932
- declare function bandEdges(count: number, minHz: number, maxHz: number): number[];
2379
+ //#region src/program/track-sampler.d.ts
1933
2380
  /**
1934
- * Analyse decoded audio: a Hann-windowed FFT per frame into log-spaced
1935
- * bands, each normalised to its own 98th percentile (floored 30 dB under the
1936
- * loudest band's, so a quiet band is not stretched into noise), an RMS level
1937
- * envelope, and onsets from low-band spectral flux.
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].
1938
2383
  */
1939
- declare function analyzeChannels(channels: readonly Float32Array[], sampleRate: number, options?: AnalyzeOptions): AudioLevels;
1940
- /** Average adjacent bands down (or repeat them up) to `count` bands. */
1941
- declare function resampleBands(bands: readonly (readonly number[])[], count: number): number[][];
1942
- /** Each value falls no faster than `release` frames from its peak (attack is instant). */
1943
- declare function smoothRelease(values: readonly number[], release: number): number[];
1944
- /** The schema for `AudioLevels` props (Waveform, Captions `pulse`). */
1945
- declare function audioLevelsSchema(): z.ZodType<AudioLevels>;
1946
2384
  //#endregion
1947
- //#region src/core/bake.d.ts
2385
+ //#region ../components/dist/typing-c419Mp0t.d.mts
2386
+ //#region src/core/path.d.ts
1948
2387
  /**
1949
- * Turn per-frame values into a few linear keyframes. Components solve motion
1950
- * offline (springs, camera follow, arc-length travel) and bake it, so the
1951
- * output stays plain keyframe JSON that seeks exactly.
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.
1952
2390
  */
1953
- /** `[frame, value]`: a linear keyframe, as `LayerAnimation.keys` takes it. */
1954
- type BakedKey = [frame: number, value: number];
1955
- interface BakeOptions {
1956
- /** Max deviation (in the value's units) of the simplified curve. Default 0.25. */
1957
- tolerance?: number;
1958
- }
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;
1959
2394
  /**
1960
- * Simplify `values` (one per frame, starting at `startFrame`) to linear keys
1961
- * whose interpolation stays within `tolerance` of every sample
1962
- * (Ramer–Douglas–Peucker on the frame/value polyline). First and last
1963
- * samples are always kept.
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.
1964
2398
  */
1965
- declare function bakeSamples(values: readonly number[], startFrame?: number, options?: BakeOptions): BakedKey[];
1966
- /** Sample `fn` on every frame in [start, end] and bake it. */
1967
- declare function bakeFunction(fn: (frame: number) => number, start: number, end: number, options?: BakeOptions): BakedKey[];
1968
- /**
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
+ /**
1969
2708
  * Damped spring from 0 to 1 in closed form: `stiffness` (k), `damping` (c),
1970
2709
  * `mass` (m), sampled in seconds. Under-damped springs overshoot.
1971
2710
  */
@@ -2273,257 +3012,83 @@ declare const themes: {
2273
3012
  mid: Elevation;
2274
3013
  high: Elevation;
2275
3014
  };
2276
- readonly motion: {
2277
- readonly ease: {
2278
- readonly enter: "back.out(1.8)";
2279
- readonly exit: string;
2280
- readonly move: string;
2281
- readonly snap: string;
2282
- };
2283
- readonly speed: {
2284
- readonly fast: 6;
2285
- readonly base: 12;
2286
- readonly slow: 24;
2287
- };
2288
- readonly spring: {
2289
- readonly settle: {
2290
- readonly stiffness: 300;
2291
- readonly damping: 26;
2292
- };
2293
- readonly base: {
2294
- readonly stiffness: 340;
2295
- readonly damping: 22;
2296
- };
2297
- readonly pop: {
2298
- readonly stiffness: 400;
2299
- readonly damping: 14;
2300
- };
2301
- };
2302
- };
2303
- readonly scale: 1;
2304
- readonly radius: {
2305
- sm: number;
2306
- md: number;
2307
- lg: number;
2308
- pill: number;
2309
- };
2310
- readonly stroke: {
2311
- hair: number;
2312
- base: number;
2313
- bold: number;
2314
- };
2315
- readonly mode: "dark";
2316
- readonly color: {
2317
- readonly bg: "#000000";
2318
- readonly surface: "#111111";
2319
- readonly raised: "#1c1c1c";
2320
- readonly line: "#333333";
2321
- readonly ink: "#ffffff";
2322
- readonly muted: "#a3a3a3";
2323
- readonly accent: "#c6ff00";
2324
- readonly accent2: "#ff2e88";
2325
- readonly positive: "#00e676";
2326
- readonly negative: "#ff1744";
2327
- readonly highlight: "#c6ff00";
2328
- readonly shadow: "#000000";
2329
- };
2330
- readonly font: {
2331
- display: string;
2332
- body: string;
2333
- mono: string;
2334
- hand?: string;
2335
- };
2336
- readonly weight: {
2337
- regular: number;
2338
- medium: number;
2339
- semibold: number;
2340
- bold: number;
2341
- heavy: number;
2342
- };
2343
- };
2344
- };
2345
- type ThemeName = keyof typeof themes;
2346
- /**
2347
- * Merge a partial theme over a base (default `themes.graphite`). Throws when
2348
- * `ink` on `surface` falls below WCAG 4.5:1 and both are hex colors.
2349
- */
2350
- declare function defineTheme(input?: ThemeInput | Theme, base?: Theme): Theme;
2351
- /** A theme's duration token in frames at `fps`. */
2352
- declare function themeFrames(theme: Theme, speed: keyof Theme["motion"]["speed"], fps?: number): number;
2353
- //#endregion
2354
- //#region src/core/path.d.ts
2355
- /**
2356
- * 2D path math: smooth curves through points, arc-length sampling, and SVG
2357
- * path strings. Used for pointer travel, camera moves and drawn marks.
2358
- */
2359
- type Vec2$1 = [x: number, y: number];
2360
- declare const dist: (a: Vec2$1, b: Vec2$1) => number;
2361
- declare const lerp2: (a: Vec2$1, b: Vec2$1, t: number) => Vec2$1;
2362
- /**
2363
- * Centripetal Catmull-Rom through `points`, flattened to a polyline with
2364
- * `steps` samples per segment. Centripetal (alpha 0.5) never loops or cusps
2365
- * between close points, which matters for pointer paths.
2366
- */
2367
- declare function catmullRom(points: readonly Vec2$1[], steps?: number): Vec2$1[];
2368
- /** A polyline with a cumulative arc-length table, sampled by distance. */
2369
- interface ArcPath {
2370
- readonly points: readonly Vec2$1[];
2371
- readonly length: number;
2372
- /** Point at `u` ∈ [0, 1] of the total length. */
2373
- at(u: number): Vec2$1;
2374
- /** Unit tangent direction (radians) at `u`. */
2375
- angleAt(u: number): number;
2376
- }
2377
- declare function arcPath(points: readonly Vec2$1[]): ArcPath;
2378
- /** SVG path data for a polyline (optionally closed). Rounded to 0.01 px. */
2379
- declare function toPathData(points: readonly Vec2$1[], closed?: boolean): string;
2380
- /**
2381
- * Scale and offset SVG path data: `x' = x × scale + dx`. Absolute commands
2382
- * move by the offset; relative ones (and arc radii) only scale. Used to
2383
- * size glyphs designed on a small grid, and logo marks in their viewBox.
2384
- */
2385
- declare function transformPathData(d: string, scale: number, dx?: number, dy?: number): string;
2386
- //#endregion
2387
- //#region src/core/draw.d.ts
2388
- interface Rect {
2389
- x: number;
2390
- y: number;
2391
- width: number;
2392
- height: number;
2393
- }
2394
- interface HandOptions {
2395
- /** Wobble amount in px at theme scale 1. 0 = clean geometry. */
2396
- wobble?: number;
2397
- seed?: number;
2398
- }
2399
- /** Keys for `trimEnd` 0 → 1 between `start` and `start + duration`. */
2400
- declare function drawOnKeys(start: number, duration: number, ease?: string): KeyframeTuple[];
2401
- /**
2402
- * Perturb points with seeded, low-frequency noise: neighbouring points move
2403
- * together, so lines bend instead of jittering.
2404
- */
2405
- declare function wobblePoints(points: readonly Vec2$1[], {
2406
- wobble,
2407
- seed
2408
- }?: HandOptions, variant?: number): Vec2$1[];
2409
- /** An ellipse around `rect` (+ padding); hand-drawn ellipses overshoot their start. */
2410
- declare function ellipsePath(rect: Rect, {
2411
- padding,
2412
- wobble,
2413
- seed
2414
- }?: HandOptions & {
2415
- padding?: number;
2416
- }, variant?: number): string;
2417
- /** A rectangle around `rect` (+ padding). */
2418
- declare function boxPath(rect: Rect, {
2419
- padding,
2420
- wobble,
2421
- seed
2422
- }?: HandOptions & {
2423
- padding?: number;
2424
- }, variant?: number): string;
2425
- /** A horizontal stroke from `from` to `to`. */
2426
- declare function linePath(from: Vec2$1, to: Vec2$1, {
2427
- wobble,
2428
- seed
2429
- }?: HandOptions, variant?: number): string;
2430
- /** A wavy line from `from` to `to`, `waves` crests of `amplitude` px. */
2431
- declare function squigglePath(from: Vec2$1, to: Vec2$1, {
2432
- amplitude,
2433
- waves,
2434
- wobble,
2435
- seed
2436
- }?: HandOptions & {
2437
- amplitude?: number;
2438
- waves?: number;
2439
- }, variant?: number): string;
2440
- type ArrowCurve = "straight" | "arc" | "swoop";
2441
- interface ArrowGeometry {
2442
- /** The shaft, drawn from `from` to just before `to`. */
2443
- shaft: string;
2444
- /** The head, two strokes meeting at `to`. */
2445
- head: string;
2446
- }
2447
- /** An arrow from `from` to `to` with a separate head path. */
2448
- declare function arrowPaths(from: Vec2$1, to: Vec2$1, {
2449
- curve,
2450
- headSize,
2451
- wobble,
2452
- seed
2453
- }?: HandOptions & {
2454
- curve?: ArrowCurve;
2455
- headSize?: number;
2456
- }, variant?: number): ArrowGeometry;
2457
- /**
2458
- * Hand-drawn "boil": `d` keys that switch between `variants` poses every
2459
- * `every` frames with hold interpolation, from `start` to `end`.
2460
- * `makePath(variant)` must be deterministic for a variant index.
2461
- */
2462
- declare function boilKeys(makePath: (variant: number) => string, {
2463
- start,
2464
- end,
2465
- every,
2466
- variants
2467
- }: {
2468
- start: number;
2469
- end: number;
2470
- every: number;
2471
- variants?: number;
2472
- }): KeyframeTuple[];
2473
- //#endregion
2474
- //#region src/core/text.d.ts
2475
- /** The subset of `FontManager.measure` options components pass. */
2476
- interface MeasureOptions {
2477
- fontFamily: string;
2478
- fontSize?: number;
2479
- fontWeight?: string | number;
2480
- letterSpacing?: number;
2481
- lineHeight?: number;
2482
- width?: number;
2483
- align?: "left" | "center" | "right";
2484
- direction?: "ltr" | "rtl" | "auto";
2485
- }
2486
- interface GlyphBox {
2487
- char: string;
2488
- index: number;
2489
- x: number;
2490
- width: number;
2491
- line: number;
2492
- rtl?: boolean;
2493
- }
2494
- /** The subset of `FontManager.measure` results components read. */
2495
- interface Metrics$1 {
2496
- width: number;
2497
- height: number;
2498
- lines: number;
2499
- lineHeight: number;
2500
- glyphs: GlyphBox[];
2501
- caretX(count: number): number;
2502
- }
2503
- type MeasureFn = (text: string, options: MeasureOptions) => Metrics$1;
2504
- interface WordRange {
2505
- text: string;
2506
- /** Index of the first character (code units). */
2507
- start: number;
2508
- /** Index after the last character. */
2509
- end: number;
2510
- index: number;
2511
- }
2512
- /** Whitespace-separated words with their character ranges. */
2513
- declare function wordRanges(text: string): WordRange[];
2514
- /** Character range of the `nth` match of `match` in `text`, or null. */
2515
- declare function findRange(text: string, match: string | RegExp, nth?: number): [number, number] | null;
2516
- /**
2517
- * Per-line x offset that `align` adds inside a box of `options.width`
2518
- * (measurement itself lays every line out from the left edge).
2519
- */
2520
- 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;
2521
3085
  /**
2522
- * The boxes characters [start, end) cover: one rect per line, spanning the
2523
- * glyphs' advances, `lineHeight` tall. Whitespace at a line's ends is
2524
- * 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.
2525
3088
  */
2526
- 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;
2527
3092
  //#endregion
2528
3093
  //#region src/core/host.d.ts
2529
3094
  /** Photoshop-style layer styles (framefields' `LayerStyle`). Omitted styles are off. */
@@ -3425,97 +3990,6 @@ interface FontNeed {
3425
3990
  }
3426
3991
  declare function defineMeta(meta: ComponentMeta): ComponentMeta;
3427
3992
  //#endregion
3428
- //#region src/core/targets.d.ts
3429
- type Anchor = "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right"
3430
- /** Where a pointer should land: the centre, or mid-left for text. */ | "tip";
3431
- /** A node as targets read it: absolute numeric geometry, or text. */
3432
- interface TargetNode {
3433
- id?: string;
3434
- kind?: string;
3435
- x?: unknown;
3436
- y?: unknown;
3437
- width?: unknown;
3438
- height?: unknown;
3439
- text?: unknown;
3440
- content?: unknown;
3441
- [key: string]: unknown;
3442
- }
3443
- /** The frame context signals are read with. */
3444
- interface FrameContextLike {
3445
- frame: number;
3446
- fps: number;
3447
- time: number;
3448
- duration: number;
3449
- durationMs: number;
3450
- progress: number;
3451
- deltaTime: number;
3452
- }
3453
- /** A per-frame value: a signal (what tracked objects expose) or a function. */
3454
- type FrameValue = {
3455
- get(ctx?: FrameContextLike): number;
3456
- } | ((frame: number) => number);
3457
- interface TrackedObjectLike {
3458
- x: FrameValue;
3459
- y: FrameValue;
3460
- width: FrameValue;
3461
- height: FrameValue;
3462
- }
3463
- type Target = Vec2$1 | Rect | {
3464
- node: TargetNode;
3465
- anchor?: Anchor;
3466
- } | {
3467
- text: TargetNode;
3468
- match?: string | RegExp;
3469
- range?: [number, number];
3470
- nth?: number;
3471
- anchor?: Anchor;
3472
- } | {
3473
- track: TrackedObjectLike;
3474
- anchor?: Anchor;
3475
- } | ((frame: number) => Vec2$1 | Rect);
3476
- interface TargetContext {
3477
- measure?: MeasureFn;
3478
- /** Frame rate signals are sampled at (tracked targets). Default 30. */
3479
- fps?: number;
3480
- /** Font defaults for text nodes that don't set them. */
3481
- textDefaults?: Partial<MeasureOptions>;
3482
- }
3483
- type ResolvedTarget = {
3484
- kind: "static";
3485
- rects: Rect[];
3486
- anchor: Anchor;
3487
- } | {
3488
- kind: "dynamic";
3489
- at: (frame: number) => Rect;
3490
- anchor: Anchor;
3491
- };
3492
- /** Resolve a target to rects (static) or a per-frame rect (dynamic). */
3493
- declare function resolveTarget(target: Target, ctx?: TargetContext): ResolvedTarget;
3494
- /** A text target's string, measured glyphs and range, and where the node sits. */
3495
- interface TextLayout {
3496
- content: string;
3497
- metrics: ReturnType<MeasureFn>;
3498
- options: MeasureOptions;
3499
- range: [number, number];
3500
- /** The node's x / y: add to measured glyph positions. */
3501
- x: number;
3502
- y: number;
3503
- }
3504
- /** Measure a text target the way the renderer lays it out. */
3505
- declare function textLayout(target: Extract<Target, {
3506
- text: TargetNode;
3507
- }>, ctx: TargetContext): TextLayout;
3508
- /** The union rect of `rects`. */
3509
- declare function boundsOf(rects: readonly Rect[]): Rect;
3510
- /** The point of `rect` named by `anchor`. `tip` on text = start of the first line, mid-height. */
3511
- declare function anchorPoint(rect: Rect, anchor?: Anchor, isText?: boolean): Vec2$1;
3512
- /** The point a resolved target names at `frame` (static targets ignore frame). */
3513
- declare function targetPoint(resolved: ResolvedTarget, frame?: number, isText?: boolean): Vec2$1;
3514
- //#endregion
3515
- //#region src/core/schemas.d.ts
3516
- /** Any `Target`: [x, y], a rect, { node }, { text }, { track }, or (frame) => point. */
3517
- declare function targetSchema(): z.ZodType<Target>;
3518
- //#endregion
3519
3993
  //#region src/core/surface.d.ts
3520
3994
  type ElevationLevel = keyof Theme["elevation"];
3521
3995
  /** Layer styles for `level`: a drop shadow and, when the theme asks, a top-edge highlight. */
@@ -3572,6 +4046,13 @@ declare function chain(durations: readonly number[], start?: number, gap?: numbe
3572
4046
  declare function typingFrames(text: string, cps: number, fps: number, r: Rng, start?: number): number[];
3573
4047
  //#endregion
3574
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
3575
4056
  //#region ../ai/dist/index.d.mts
3576
4057
  //#region src/types.d.ts
3577
4058
  /** Model input or output when its shape isn't declared. Pass a type argument to name it. */
@@ -3885,6 +4366,86 @@ interface ChartOptions {
3885
4366
  }
3886
4367
  declare const DEFAULT_CHART_COLORS: readonly ["#6366f1", "#22d3ee", "#f59e0b", "#ec4899", "#10b981", "#8b5cf6", "#f97316", "#3b82f6"];
3887
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
3888
4449
  //#region src/clip-vision.d.ts
3889
4450
  type PoseKeypointName = (typeof COCO17_KEYPOINT_NAMES)[number];
3890
4451
  interface ClipVisionOptions {
@@ -3917,6 +4478,14 @@ interface ClipVisionOptions {
3917
4478
  * clip tracks no pose or silhouette unless `pose` / `mask` ask for them.
3918
4479
  */
3919
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;
3920
4489
  /** Silhouette cell size in source pixels (default 8: a 1920×1080 clip gives a 240×135 grid). */
3921
4490
  maskCell?: number;
3922
4491
  /** Keypoints are averaged over ±`smoothing` frames, weighted by confidence (default 2; 0 = raw). */
@@ -4007,6 +4576,10 @@ declare class ClipVision implements ClipSubjectSource {
4007
4576
  private readonly subjects;
4008
4577
  private wantSubjects;
4009
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;
4010
4583
  /** Depth per source frame; null when the frame did not decode. Bounded when on disk. */
4011
4584
  private readonly depths;
4012
4585
  /** Source frames whose depth is on disk. */
@@ -4056,6 +4629,14 @@ declare class ClipVision implements ClipSubjectSource {
4056
4629
  get tracksPose(): boolean;
4057
4630
  /** Whether frames carry the person's silhouette: on by default, off for depth clips. */
4058
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;
4059
4640
  /** Whether frames carry relative depth. */
4060
4641
  get tracksDepth(): boolean;
4061
4642
  /**
@@ -4084,7 +4665,15 @@ declare class ClipVision implements ClipSubjectSource {
4084
4665
  /** Loads `@framefields/vision-sam` and validates the prompts once, on first use. */
4085
4666
  private prompted;
4086
4667
  private compute;
4668
+ /** Pose, silhouette and subject of every frame in `from…to` not analysed yet. */
4669
+ private computeSubjects;
4087
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;
4088
4677
  /** Depth of every source frame in `from…to` not analysed yet, saved one file per frame. */
4089
4678
  private computeDepth;
4090
4679
  private hasDepth;
@@ -4133,6 +4722,13 @@ declare class ClipVision implements ClipSubjectSource {
4133
4722
  /** Subjects live beside the results: large, and only matte layers read them. */
4134
4723
  private subjectsPath;
4135
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;
4136
4732
  private saveSubjects;
4137
4733
  }
4138
4734
  /**
@@ -4156,6 +4752,12 @@ declare class PersonTrack {
4156
4752
  y: number;
4157
4753
  visibility: number;
4158
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[];
4159
4761
  /** Signals for a keypoint, for `.signal("x", …)`; read while rendering. */
4160
4762
  signals(name: PoseKeypointName): {
4161
4763
  x: FrameSignal<number>;
@@ -4351,6 +4953,11 @@ type Shape3D = {
4351
4953
  /** Flat [x0, y0, z0, …] around the body origin. */ | {
4352
4954
  kind: "hull";
4353
4955
  points: number[];
4956
+ }
4957
+ /** Exact triangle mesh (static / kinematic bodies: terrain, sculptures). */ | {
4958
+ kind: "trimesh";
4959
+ vertices: number[];
4960
+ indices: number[];
4354
4961
  };
4355
4962
  interface BodySpecBase extends MaterialSpec {
4356
4963
  type: BodyType;
@@ -4415,6 +5022,10 @@ interface SimBody<V, R> {
4415
5022
  mass(): number;
4416
5023
  setEnabled(enabled: boolean): void;
4417
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;
4418
5029
  setKinematicTarget(position: V, rotation: R): void;
4419
5030
  }
4420
5031
  type SimBody2D = SimBody<Vec2, number>;
@@ -4581,6 +5192,10 @@ declare abstract class WorldCore<V extends number[], R, B extends CoreBody<V, R>
4581
5192
  targets?: Set<B>;
4582
5193
  accel: (body: B, frame: number) => V | null | undefined;
4583
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>;
4584
5199
  private readonly worldRecording;
4585
5200
  private readonly allCollisions;
4586
5201
  /** No more bodies, joints or forces: the world has started (or finished). */
@@ -4745,6 +5360,49 @@ declare class Particles extends Effect$1<Record<string, never>> implements Parti
4745
5360
  particleFrame(frame: number, fps: number): ParticleFrame;
4746
5361
  }
4747
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
4748
5406
  //#region src/physics/world3d.d.ts
4749
5407
  interface World3DOptions extends PhysicsWorldOptions {
4750
5408
  /** px/s², y down. A number pulls straight down. Default 2400. */
@@ -4786,10 +5444,12 @@ interface Body3DOptions extends Omit<BodyCommonOptions, "lockRotation"> {
4786
5444
  };
4787
5445
  /**
4788
5446
  * Collider: `"auto"` (default) reads the Layer3D primitive (box, sphere,
4789
- * cylinder) and falls back to the mesh's convex hull for models and
4790
- * 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).
4791
5451
  */
4792
- shape?: "auto" | "box" | "sphere" | "cylinder" | "hull";
5452
+ shape?: "auto" | "box" | "sphere" | "cylinder" | "hull" | "mesh";
4793
5453
  /** Collider size override `[width, height, depth]`, px (before the layer's scale). */
4794
5454
  size?: [number, number, number];
4795
5455
  /** px/s. */
@@ -4806,11 +5466,10 @@ interface Body3DOptions extends Omit<BodyCommonOptions, "lockRotation"> {
4806
5466
  rotateZ?: PhysicsDriver;
4807
5467
  };
4808
5468
  }
5469
+ /** @internal */
4809
5470
  type LayerLike$1 = Record<string, unknown> & {
4810
5471
  kind?: string;
4811
5472
  };
4812
- /** Quaternion of the renderer's Euler order: R = Rz · Ry · Rx (degrees). */
4813
-
4814
5473
  /**
4815
5474
  * A simulated 3D body. Like {@link PhysicsBody2D}, its signals hold one
4816
5475
  * value per composition frame and reading one runs the simulation.
@@ -4832,6 +5491,16 @@ declare class PhysicsBody3D implements CoreBody<Vec3, Quat> {
4832
5491
  rotation: Vec3;
4833
5492
  }, options: Body3DOptions, recording: Recording);
4834
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;
4835
5504
  get gravityScale(): number;
4836
5505
  get output(): Body3DOptions["output"];
4837
5506
  /** Center, px (what Layer3D's `x` / `y` / `z` mean). */
@@ -4899,6 +5568,20 @@ declare class PhysicsWorld3D extends WorldCore<Vec3, Quat, PhysicsBody3D> {
4899
5568
  constructor(backend: PhysicsBackend, options: World3DOptions);
4900
5569
  /** Adds a body for a Layer3D primitive or model (centered on its `x/y/z`), or a plain box. */
4901
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;
4902
5585
  /** A fixed, very large floor whose top face sits at `y`. */
4903
5586
  ground(options: {
4904
5587
  y: number;
@@ -4943,6 +5626,47 @@ declare class PhysicsWorld3D extends WorldCore<Vec3, Quat, PhysicsBody3D> {
4943
5626
  private endpoints;
4944
5627
  }
4945
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
4946
5670
  //#region src/swarm3d.d.ts
4947
5671
  interface Swarm3DOptions extends Surface3DOptions {
4948
5672
  id?: string;
@@ -5067,12 +5791,46 @@ interface Swarm3DOptions extends Surface3DOptions {
5067
5791
  //#region src/shapes3d.d.ts
5068
5792
  /** Physically based surface options every 3D builder accepts. */
5069
5793
  interface Surface3DOptions {
5794
+ /** Art-directed lighting for material: "toon". */
5795
+ toon?: ToonShading;
5796
+ /** Opt out of the scene's geometry outlines while retaining depth occlusion. */
5797
+ outline?: boolean;
5070
5798
  /** Light the surface gives off: a CSS color added on top of lighting. */
5071
5799
  emissive?: string;
5072
5800
  /** Emissive multiplier; above 1 glows past white and blooms. Default 1. */
5073
5801
  emissiveIntensity?: number;
5074
5802
  /** Falls into a `castShadow` light's shadow map (meshes default on, flat layers off). */
5075
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;
5076
5834
  }
5077
5835
  interface CubeFaceConfig extends Surface3DOptions {
5078
5836
  background?: string;
@@ -5103,6 +5861,12 @@ interface Cube3DOptions extends Surface3DOptions {
5103
5861
  rotateX?: number;
5104
5862
  rotateY?: number;
5105
5863
  rotateZ?: number;
5864
+ /** Alias for `rotateX`. */
5865
+ rotationX?: number;
5866
+ /** Alias for `rotateY`. */
5867
+ rotationY?: number;
5868
+ /** Alias for `rotateZ`. */
5869
+ rotationZ?: number;
5106
5870
  faces?: {
5107
5871
  front?: CubeFaceInput;
5108
5872
  back?: CubeFaceInput;
@@ -5135,6 +5899,12 @@ interface Carousel3DOptions {
5135
5899
  rotateX?: number;
5136
5900
  rotateY?: number;
5137
5901
  rotateZ?: number;
5902
+ /** Alias for `rotateX`. */
5903
+ rotationX?: number;
5904
+ /** Alias for `rotateY`. */
5905
+ rotationY?: number;
5906
+ /** Alias for `rotateZ`. */
5907
+ rotationZ?: number;
5138
5908
  faceInward?: boolean;
5139
5909
  itemWidth?: number;
5140
5910
  itemHeight?: number;
@@ -5149,8 +5919,12 @@ interface Prism3DOptions extends Surface3DOptions {
5149
5919
  radius?: number;
5150
5920
  /** Optional top (-y) radius; defaults to `radius`. */
5151
5921
  radiusTop?: number;
5922
+ /** Alias for `radiusTop`. */
5923
+ topRadius?: number;
5152
5924
  /** Optional bottom (+y) radius; defaults to `radius`. */
5153
5925
  radiusBottom?: number;
5926
+ /** Alias for `radiusBottom`. */
5927
+ bottomRadius?: number;
5154
5928
  /** Height along Y (default 100). */
5155
5929
  height?: number;
5156
5930
  x?: number;
@@ -5159,6 +5933,12 @@ interface Prism3DOptions extends Surface3DOptions {
5159
5933
  rotateX?: number;
5160
5934
  rotateY?: number;
5161
5935
  rotateZ?: number;
5936
+ /** Alias for `rotateX`. */
5937
+ rotationX?: number;
5938
+ /** Alias for `rotateY`. */
5939
+ rotationY?: number;
5940
+ /** Alias for `rotateZ`. */
5941
+ rotationZ?: number;
5162
5942
  scale?: number;
5163
5943
  scaleX?: number;
5164
5944
  scaleY?: number;
@@ -5199,6 +5979,8 @@ interface Pyramid3DOptions extends Surface3DOptions {
5199
5979
  radius?: number;
5200
5980
  /** Optional top (-y) truncation radius for a frustum pyramid (default 0 = sharp apex). */
5201
5981
  radiusTop?: number;
5982
+ /** Alias for `radiusTop`. */
5983
+ topRadius?: number;
5202
5984
  /** Height from base (+y) to apex (-y) (default 100). */
5203
5985
  height?: number;
5204
5986
  /** Leave the base cap off (default false = solid capped pyramid). */
@@ -5211,6 +5993,12 @@ interface Pyramid3DOptions extends Surface3DOptions {
5211
5993
  rotateX?: number;
5212
5994
  rotateY?: number;
5213
5995
  rotateZ?: number;
5996
+ /** Alias for `rotateX`. */
5997
+ rotationX?: number;
5998
+ /** Alias for `rotateY`. */
5999
+ rotationY?: number;
6000
+ /** Alias for `rotateZ`. */
6001
+ rotationZ?: number;
5214
6002
  scale?: number;
5215
6003
  scaleX?: number;
5216
6004
  scaleY?: number;
@@ -5244,6 +6032,12 @@ interface Plane3DOptions extends Surface3DOptions {
5244
6032
  rotateX?: number;
5245
6033
  rotateY?: number;
5246
6034
  rotateZ?: number;
6035
+ /** Alias for `rotateX`. */
6036
+ rotationX?: number;
6037
+ /** Alias for `rotateY`. */
6038
+ rotationY?: number;
6039
+ /** Alias for `rotateZ`. */
6040
+ rotationZ?: number;
5247
6041
  background?: string;
5248
6042
  borderRadius?: number;
5249
6043
  twoSided?: boolean;
@@ -5275,6 +6069,12 @@ interface Grid3DOptions {
5275
6069
  rotateX?: number;
5276
6070
  rotateY?: number;
5277
6071
  rotateZ?: number;
6072
+ /** Alias for `rotateX`. */
6073
+ rotationX?: number;
6074
+ /** Alias for `rotateY`. */
6075
+ rotationY?: number;
6076
+ /** Alias for `rotateZ`. */
6077
+ rotationZ?: number;
5278
6078
  opacity?: number;
5279
6079
  }
5280
6080
  interface Text3DOptions extends Surface3DOptions {
@@ -5291,6 +6091,12 @@ interface Text3DOptions extends Surface3DOptions {
5291
6091
  rotateX?: number;
5292
6092
  rotateY?: number;
5293
6093
  rotateZ?: number;
6094
+ /** Alias for `rotateX`. */
6095
+ rotationX?: number;
6096
+ /** Alias for `rotateY`. */
6097
+ rotationY?: number;
6098
+ /** Alias for `rotateZ`. */
6099
+ rotationZ?: number;
5294
6100
  scale?: number;
5295
6101
  scaleX?: number;
5296
6102
  scaleY?: number;
@@ -5351,6 +6157,12 @@ interface Primitive3DNodeOptions extends Surface3DOptions {
5351
6157
  rotateX?: number;
5352
6158
  rotateY?: number;
5353
6159
  rotateZ?: number;
6160
+ /** Alias for `rotateX`. */
6161
+ rotationX?: number;
6162
+ /** Alias for `rotateY`. */
6163
+ rotationY?: number;
6164
+ /** Alias for `rotateZ`. */
6165
+ rotationZ?: number;
5354
6166
  scale?: number;
5355
6167
  scaleX?: number;
5356
6168
  scaleY?: number;
@@ -5380,6 +6192,16 @@ interface Primitive3DNodeOptions extends Surface3DOptions {
5380
6192
  opacity?: number;
5381
6193
  startFrame?: number;
5382
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;
5383
6205
  }
5384
6206
  type RoundedBox3DOptions = Primitive3DNodeOptions & Omit<RoundedBoxGeometryOptions, "type" | "color" | "material">;
5385
6207
  type Sphere3DOptions = Primitive3DNodeOptions & Omit<SphereGeometryOptions, "type" | "color" | "material">;
@@ -5421,6 +6243,12 @@ interface InstanceTransform3D {
5421
6243
  color?: string | [number, number, number, number];
5422
6244
  emissive?: string | [number, number, number];
5423
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;
5424
6252
  }
5425
6253
  interface Instances3DOptions extends Surface3DOptions {
5426
6254
  id?: string;
@@ -5444,12 +6272,27 @@ interface Instances3DOptions extends Surface3DOptions {
5444
6272
  color: string;
5445
6273
  intensity?: number;
5446
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;
5447
6284
  x?: number;
5448
6285
  y?: number;
5449
6286
  z?: number;
5450
6287
  rotateX?: number;
5451
6288
  rotateY?: number;
5452
6289
  rotateZ?: number;
6290
+ /** Alias for `rotateX`. */
6291
+ rotationX?: number;
6292
+ /** Alias for `rotateY`. */
6293
+ rotationY?: number;
6294
+ /** Alias for `rotateZ`. */
6295
+ rotationZ?: number;
5453
6296
  scale?: number;
5454
6297
  color?: string;
5455
6298
  colorTint?: string;
@@ -5489,12 +6332,12 @@ declare const Layer3D: {
5489
6332
  * outward flat-shaded facet normals, and full material options.
5490
6333
  * If `sideConfigs` are provided, builds a multi-panel preserve-3d container with all material props applied.
5491
6334
  */
5492
- prism(options: Prism3DOptions): Shape3DContainer;
6335
+ prism(options?: Prism3DOptions): SolidShape3DNode;
5493
6336
  /**
5494
6337
  * Creates a solid N-sided regular polygonal pyramid (or truncated pyramid when `radiusTop > 0`)
5495
6338
  * with a bottom cap and crisp flat-shaded side facets.
5496
6339
  */
5497
- pyramid(options: Pyramid3DOptions): AnimatableNode<Model3DNode>;
6340
+ pyramid(options?: Pyramid3DOptions): AnimatableNode<Model3DNode>;
5498
6341
  /**
5499
6342
  * Creates a standalone planar 3D card/quad.
5500
6343
  */
@@ -5589,6 +6432,30 @@ declare const Layer3D: {
5589
6432
  * Renders hundreds or thousands of 3D meshes in 1 draw call per mesh variant,
5590
6433
  * driven by Physics.world3d rigid bodies, procedural callbacks, or transform arrays.
5591
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;
5592
6459
  instances(options: Instances3DOptions): AnimatableNode<Model3DNode>;
5593
6460
  /**
5594
6461
  * GPU-simulated 3D particle swarm and shard system.
@@ -5599,43 +6466,43 @@ declare const Layer3D: {
5599
6466
  /**
5600
6467
  * Creates a 3D model node rendered natively with WebGPU mesh shaders.
5601
6468
  */
5602
- model(options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6469
+ model(options?: Model3DOptions): AnimatableNode<Model3DNode>;
5603
6470
  /**
5604
6471
  * Convenience helper to create a 3D Wavefront OBJ model node.
5605
6472
  */
5606
- obj(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6473
+ obj(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5607
6474
  /**
5608
6475
  * Convenience helper to create a 3D Autodesk FBX model node with skeletal animation support.
5609
6476
  */
5610
- fbx(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6477
+ fbx(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5611
6478
  /**
5612
6479
  * Convenience helper to create a 3D glTF 2.0 model node.
5613
6480
  */
5614
- gltf(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6481
+ gltf(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5615
6482
  /**
5616
6483
  * Convenience helper to create a 3D GLB binary container model node.
5617
6484
  */
5618
- glb(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6485
+ glb(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5619
6486
  /**
5620
6487
  * Convenience helper to create a 3D STL CAD / 3D printing model node.
5621
6488
  */
5622
- stl(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6489
+ stl(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5623
6490
  /**
5624
6491
  * Convenience helper to create a 3D Stanford PLY scan model node.
5625
6492
  */
5626
- ply(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6493
+ ply(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5627
6494
  /**
5628
6495
  * Convenience helper to create a 3D MagicaVoxel VOX model node.
5629
6496
  */
5630
- vox(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6497
+ vox(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5631
6498
  /**
5632
6499
  * Convenience helper to create a 3D Studio (3DS) binary model node.
5633
6500
  */
5634
- threeDS(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6501
+ threeDS(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5635
6502
  /**
5636
6503
  * Convenience helper to create a 3D Object File Format (OFF) model node.
5637
6504
  */
5638
- off(src: string, options?: Partial<Model3DNode>): AnimatableNode<Model3DNode>;
6505
+ off(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
5639
6506
  };
5640
6507
  //#endregion
5641
6508
  //#region src/transitions.d.ts
@@ -5835,6 +6702,8 @@ interface TextMeasureStyle {
5835
6702
  fontSize?: number;
5836
6703
  fontWeight?: string | number;
5837
6704
  fontStyle?: string;
6705
+ /** Variable font axes, as `TextNode.fontVariations`. */
6706
+ fontVariations?: Record<string, number>;
5838
6707
  letterSpacing?: number;
5839
6708
  lineHeight?: number;
5840
6709
  padding?: number;
@@ -5887,6 +6756,12 @@ interface LightingRigOptions {
5887
6756
  shadowSoftness?: number;
5888
6757
  /** Fog fading into the background, e.g. `{ color: BG, start: 2500, end: 6000 }`. */
5889
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"];
5890
6765
  /** Glow around emissive surfaces and highlights: `true` or settings. */
5891
6766
  bloom?: EnvironmentOptions["bloom"];
5892
6767
  /** Prefix for the rig's node ids. */
@@ -6202,7 +7077,7 @@ declare const Physics: {
6202
7077
  };
6203
7078
  //#endregion
6204
7079
  //#region src/styles.d.ts
6205
- type Look = Effect$1<object>[];
7080
+ type Look = AnyVisualEffect[];
6206
7081
  declare const Styles: {
6207
7082
  /** 8-bit game: PICO-8 palette, chunky pixels, light dithering. */
6208
7083
  pixelArt: (o?: {
@@ -6376,13 +7251,15 @@ declare class Media {
6376
7251
  */
6377
7252
  toVirtualMedia(): VirtualMediaData;
6378
7253
  /**
6379
- * 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.
6380
7255
  * Can render either by timestamp in milliseconds (`atMs`) or by frame index (`frame`).
6381
7256
  */
6382
7257
  renderFrame(options?: {
6383
7258
  atMs?: number;
6384
7259
  frame?: number;
6385
7260
  fps?: number;
7261
+ renderId?: string;
7262
+ format?: "png" | "rgba" | "raw" | "jpeg" | "jpg" | "webp";
6386
7263
  renderer?: HeadlessMediaRenderer;
6387
7264
  }): Promise<Buffer>;
6388
7265
  get fps(): number | undefined;
@@ -6653,13 +7530,15 @@ declare class Composition {
6653
7530
  */
6654
7531
  toVirtualMediaAsync(options?: Partial<CompositorToProgramOptions>): Promise<VirtualMediaData>;
6655
7532
  /**
6656
- * 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.
6657
7534
  * Can render either by timestamp in milliseconds (`atMs`) or by frame index (`frame`).
6658
7535
  */
6659
- renderFrame(options?: {
7536
+ renderFrame(frameOrOptions?: number | {
6660
7537
  atMs?: number;
6661
7538
  fps?: number;
6662
7539
  frame?: number;
7540
+ renderId?: string;
7541
+ format?: "png" | "rgba" | "raw" | "jpeg" | "jpg" | "webp";
6663
7542
  renderer?: HeadlessMediaRenderer;
6664
7543
  }): Promise<Buffer>;
6665
7544
  /**
@@ -6812,9 +7691,9 @@ declare const Layer: {
6812
7691
  * `props` applies to that box: position, id, timing, effects.
6813
7692
  */
6814
7693
  chart: (options: ChartOptions, props?: Partial<BoxNode>) => AnimatableNode<BoxNode>;
6815
- camera: (options?: Partial<CameraNode>) => AnimatableNode<CameraNode>;
6816
- light: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6817
- 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>;
6818
7697
  /**
6819
7698
  * Scenes back to back with transitions between them; see `Transition`.
6820
7699
  * `comp.add(Layer.sequence([{ scene: hero(), duration: 90 },
@@ -6822,40 +7701,115 @@ declare const Layer: {
6822
7701
  * The result's `totalFrames` is the sequence length.
6823
7702
  */
6824
7703
  sequence: (entries: SequenceEntry[], options?: SceneSequenceOptions) => SequenceNode;
6825
- /** See {@link Light.environment}: `Layer.environment("studio", { exposure: 0.3 })`. */
6826
- environment: (presetOrOptions?: EnvironmentPreset | EnvironmentOptions, options?: EnvironmentOptions) => AnimatableNode<LightNode>;
6827
- directionalLight: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6828
- pointLight: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6829
- 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>;
6830
7710
  cube: (options: Cube3DOptions) => AnimatableNode<BoxNode>;
6831
7711
  carousel3d: (options: Carousel3DOptions) => AnimatableNode<BoxNode>;
6832
7712
  plane3d: (options: Plane3DOptions) => AnimatableNode<BoxNode>;
6833
7713
  prism3d: (options?: Prism3DOptions) => SolidShape3DNode;
6834
- model: (options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6835
- obj: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6836
- fbx: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6837
- gltf: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6838
- glb: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6839
- stl: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6840
- ply: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6841
- vox: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6842
- threeDS: (src: string, options?: Partial<Model3DNode>) => AnimatableNode<Model3DNode>;
6843
- 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;
6844
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`;
6845
7760
  /** World settings for `Layer.environment` (see `LightNode` for every field). */
6846
- type EnvironmentOptions = Partial<Pick<LightNode, "id" | "preset" | "top" | "horizon" | "bottom" | "intensity" | "softboxes" | "rotation" | "exposure" | "toneMapping" | "fog" | "floor" | "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
+ }
6847
7792
  declare const Light: {
6848
7793
  /**
6849
7794
  * The scene's world: a procedural studio environment that lights and
6850
- * reflects off every surface, plus exposure, tone mapping and fog. Adding
6851
- * one switches the scene to physically based shading (GGX, real
6852
- * `roughness` / `metallic`, `emissive` that blooms past white).
6853
- */
6854
- environment: (presetOrOptions?: EnvironmentPreset | EnvironmentOptions, options?: EnvironmentOptions) => AnimatableNode<LightNode>;
6855
- ambient: (color?: string | Partial<LightNode>, intensity?: number, options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6856
- directional: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6857
- point: (options?: Partial<LightNode>) => AnimatableNode<LightNode>;
6858
- 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>;
6859
7813
  };
6860
7814
  declare function section(source: string | MediaNode | Composition, targetOrOptions?: ObjectTrackSignals | SectionOptions, options?: SectionOptions): SectionNode;
6861
7815
  declare function blurRegion(sourceOrLayer: string | AnimatableNode<MediaNode>, target: ObjectTrackSignals, options?: Partial<BlurProps> & {
@@ -6954,5 +7908,5 @@ type ComponentNode<C extends Cues = Cues> = AnimatableNode<BoxNode> & ComponentE
6954
7908
  */
6955
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;
6956
7910
  //#endregion
6957
- export { mapBlendModeToSkia as $, withDefaults as $a, exitAnimation as $i, Animatable as $n, Model3DNode 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, compositorToProgram as As, Points3DOptions as At, World2DOptions as B, targetSchema as Ba, cover as Bi, sub as Bn, LayoutNodeSchema as Bo, MediaOptions as Br, Sphere3DOptions as Bt, TrackEditing as C, rng as Ca, arcPath as Ci, ChartSlice as Cn, CompositorProgramConfig as Co, FontNeed as Cr, ToneMapping as Cs, Icosphere3DOptions as Ct, section as D, scheduleExpression as Da, bakeFunction as Di, MarkOptions as Dn, EnvironmentFloor as Do, FrameWindow as Dr, applyStaggerToChildren 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, WiggleOptions as Es, Lathe3DOptions as Et, PhysicsRect as F, staggerRanks as Fa, boxPath as Fi, normalizeTextSpans as Fn, FromToOptions as Fo, KeyBook as Fr, evaluateAnimationAtFrame as Fs, Ring3DOptions as Ft, InterpolateOptions as G, toPathData as Ga, drawOnKeys as Gi, FRAMEFIELDS_AI_PROXY_URL as Gn, MaterialType as Go, MotionSize as Gr, Swarm3DOptions as Gt, LightingRig as H, themeFrames as Ha, defineMeta as Hi, Ai as Hn, LightNodeSchema as Ho, MotionOptions as Hr, Text3DOptions as Ht, PhysicsRopeOptions as I, stepExpression as Ia, catmullRom as Ii, parseMarkup as In, Keyframe as Io, LayerStyleConfig as Ir, evaluateTrackAtFrame as Is, RoundedBox3DOptions as It, TextMeasureResult as J, transparent as Ja, elevationStyle as Ji, RunOptions as Jn, MatteModeSchema as Jo, ProjectDefaults as Jr, PhysicsBody3D as Jt, SpringConfig as K, toSeconds as Ka, ease$1 as Ki, QueueStatus as Kn, MaterialTypeSchema as Ko, ParticleOptions as Kr, Body3DOptions as Kt, PhysicsSpringOptions as L, supersede as La, chain as Li, rich as Ln, KeyframeTuple as Lo, MOTION_PRESETS as Lr, hoistMattes as Ls, Shape3DContainer as Lt, FieldSample2D as M, springTrack as Ma, bind as Mi, color as Mn, EnvironmentPresetSchema as Mo, GrainOptions as Mr, computeLayout as Ms, Primitive3DNodeOptions as Mt, PhysicsBody2D as N, squigglePath as Na, boilKeys as Ni, italic as Nn, FlexNode as No, HandOptions as Nr, computeLayoutSync as Ns, Prism3DOptions as Nt, StyleName as O, smoothRelease as Oa, bakeSamples as Oi, TextSpanItem as On, EnvironmentFloorSchema as Oo, GlyphAnimator as Or, calculateSequenceTimeline as Os, Line3DOptions as Ot, PhysicsGroundOptions as P, staggerOffsets as Pa, boundsOf as Pi, mark as Pn, FlexNodeSchema as Po, Host as Pr, computeStaggerDelay as Ps, Pyramid3DOptions as Pt, interpolate as Q, withAlpha as Qa, evaluateGlyphExpression as Qi, Anchor as Qn, Model3DAnimatableProp as Qo, ResolvedMotion as Qr, PhysicsWorld3D as Qt, PhysicsWallsOptions as R, surfaceFill as Ra, constantExpression as Ri, size as Rn, LayerAnimation as Ro, MeasureFn as Rr, lintComposition as Rs, Shard3DOptions as Rt, SubjectSandwichOptions as S, resolveTarget as Sa, anchorPoint as Si, ChartSeries as Sn, ColorStopSchema as So, ExtrudedTextOptions as Sr, TextSpanSchema as Ss, Grid3DOptions as St, blurRegion as T, safeArea as Ta, ascending as Ti, ChartX as Tn, CompositorToProgramOptions as To, FrameContextLike as Tr, TrackSource as Ts, Instances3DOptions as Tt, LightingRigOptions as U, themes as Ua, defineTheme as Ui, AiConfig as Un, LightType as Uo, MotionPreset as Ur, Torus3DOptions as Ut, Lighting as V, textLayout as Va, defineComponent as Vi, sup as Vn, LightNode as Vo, Metrics$1 as Vr, Surface3DOptions as Vt, Easing as W, toFrames as Wa, dist as Wi, ApiError as Wn, LightTypeSchema as Wo, MotionPresetName as Wr, Tube3DOptions as Wt, bezier as X, valueAt as Xa, enterAnimation as Xi, ai as Xn, MediaNode as Xo, PulseOptions as Xr, PhysicsRope3DOptions as Xt, TextMeasureStyle as Y, typingFrames as Ya, ellipsePath as Yi, ValidationError as Yn, MediaAnimatableProp as Yo, PropsOf as Yr, PhysicsBox3D as Yt, computeStrokeRect as Z, windowExpression as Za, evaluateEase as Zi, AnalyzeOptions as Zn, MediaNodeSchema 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, TextAnimator as _s, CubeFaceConfig as _t, AnimatableNode as a, holdFirstKeys as aa, StaggerOrder as ai, PhysicsDriver as an, AnimationTrack as ao, BakeOptions as ar, SceneTransitionType as as, requiresIsolation as at, SmartFramingOptions as b, resampleBands as ba, after as bi, ChartOptions as bn, ColorSignalOptions as bo, Elevation as br, TextNodeSchema as bs, ExtrudeShape3DOptions as bt, CompositionOptions as c, last as ca, TargetContext as ci, ParticleBlend as cn, BloomConfigSchema as co, BuildContext as cr, SequenceOptions as cs, SceneSequenceOptions as ct, EnvironmentOptions as d, lineShift as da, Theme as di, ClipVision as dn, CameraAnimation as do, ComponentDefaults as dr, ShapeNode as ds, Transition as dt, findRange as ea, Rgba as ei, Particles as en, within as eo, AnimatableMethods as er, Model3DNodeSchema as es, measureSpring as et, Layer as f, luminance as fa, ThemeInput as fi, ClipVisionOptions as fn, CameraDoF as fo, ComponentDefinition as fr, ShapeNodeSchema as fs, TransitionDirection as ft, RenderVideoOptions as g, pulseKeys as ga, UNIT_INDEX as gi, ChartAnimationOptions as gn, CameraShake as go, Cues as gr, TextAnimatableProp as gs, Cube3DOptions as gt, NodeCapability as h, parseColor as ha, TrackedObjectLike as hi, PoseKeypointName as hn, CameraNodeSchema as ho, Cue as hr, SpringOptions as hs, Carousel3DOptions as ht, analyzeAudio as i, hashString as ia, Spring as ii, PhysicsCollision as in, AnimatablePropsFor as io, AudioLevels as ir, SceneOptions as is, preloadFont as it, Body2DOptions as j, springSettleFrames as ja, beats as ji, code as jn, EnvironmentPreset as jo, GlyphUnit as jr, computeCarrierContinuity as js, Polyhedron3DOptions as jt, Styles as k, springAt as ka, bandEdges as ki, accent as kn, EnvironmentFog as ko, GlyphBox as kr, collectNodeOps as ks, Plane3DOptions as kt, EditableObjectTrack as l, lerp2 as la, TargetNode as li, ParticleBounds as ln, BoxNode as lo, BuildResult as lr, SequenceTimelineResult as ls, SequenceEntry as lt, Media as m, offsetCues as ma, Track as mi, PersonTrack as mn, CameraNode as mo, ComponentMeta as mr, SizeSpec as ms, Capsule3DOptions as mt, bindComponent as n, glyphAnimator as na, SAFE_INSETS as ni, BodyCommonOptions as nn, wordRanges as no, ArrowCurve as nr, SceneDefinition as ns, measureTextAsync as nt, CompatibleEffect as o, inkOn as oa, SyntaxKind as oi, PhysicsWorldOptions as on, BlockNode as oo, BakedKey as or, SceneTransitionTypeSchema as os, spring as ot, Light as p, mix as pa, ThemeName as pi, PersonPlacement as pn, CameraLens as po, ComponentExtras as pr, SignalTrackOptions as ps, TransitionSpec as pt, StrokeRect as q, transformPathData as qa, elevate as qi, Result as qn, MatteMode 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, SceneDefinitionSchema as rs, preloadCompositionFonts as rt, Composition as s, isLight as sa, Target as si, EmitterShape as sn, BloomConfig as so, BaseProps as sr, Sequence as ss, springCalculation as st, ComponentNode as t, frameSpan as ta, Rng as ti, ParticlesOptions as tn, wobblePoints as to, ArcPath as tr, Scene as ts, measureText as tt, Effect as u, linePath as ua, TextLayout as ui, ParticleShape as un, BoxNodeSchema as uo, CanvasSize as ur, ShapeAnimatableProp as us, SequenceNode as ut, SectionNode as v, rangeRects as va, Vec2$1 as vi, ChartCandle as vn, CarrierHandoffConfigSchema as vo, CutoutOptions as vr, TextAnimatorSchema as vs, CubeFaceInput as vt, TrackedRegionOptions as w, round as wa, arrowPaths as wi, ChartType as wn, CompositorProgramSchema as wo, FontRole as wr, ToneMappingSchema as ws, InstanceTransform3D as wt, SubjectOutlineOptions as x, resolveMotion as xa, analyzeChannels as xi, ChartPadding as xn, ColorStop as xo, ElevationLevel as xr, TextSpanMarkSchema as xs, ExtrudedText3DOptions as xt, SectionOptions as y, rendererChars as ya, WordRange as yi, ChartDatum as yn, CarrierState as yo, EaseFn as yr, TextNode as ys, Cylinder3DOptions as yt, PhysicsWorld2D as z, targetPoint as za, contrastRatio as zi, span as zn, LayoutNode as zo, MeasureOptions as zr, mergeAnimationTracks as zs, SolidShape3DNode as zt };
6958
- //# sourceMappingURL=index-CtKUQ2VG.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-DkAjKnhW.d.mts.map