framefields 2.14.0 → 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.
- package/NOTICE.md +5 -1
- package/dist/audio/index.d.mts +3 -3
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-DFwRbID_.mjs → audio-6TfPlfl4.mjs} +3 -3
- package/dist/{audio-DFwRbID_.mjs.map → audio-6TfPlfl4.mjs.map} +1 -1
- package/dist/{audio-CdCuGK5d.d.mts → audio-7oqTUi4G.d.mts} +2 -2
- package/dist/{audio-CdCuGK5d.d.mts.map → audio-7oqTUi4G.d.mts.map} +1 -1
- package/dist/cli/check-worker.mjs +44 -44
- package/dist/cli.mjs +1 -1
- package/dist/cloud/index.d.mts.map +1 -1
- package/dist/cloud/index.mjs +1 -1
- package/dist/{cloud-Cj1TIme8.mjs → cloud-jnk1hPYf.mjs} +2 -2
- package/dist/{cloud-Cj1TIme8.mjs.map → cloud-jnk1hPYf.mjs.map} +1 -1
- package/dist/components/index.d.mts +11 -11
- package/dist/components/index.mjs +43 -43
- package/dist/{dist-Kbf-JTry.mjs → dist-BtI6ukB5.mjs} +2 -2
- package/dist/{dist-Kbf-JTry.mjs.map → dist-BtI6ukB5.mjs.map} +1 -1
- package/dist/{dist-B8Nby2CU.mjs → dist-COOpgG9G.mjs} +4 -3
- package/dist/{dist-B8Nby2CU.mjs.map → dist-COOpgG9G.mjs.map} +1 -1
- package/dist/{dist--Uu5bQ_6.mjs → dist-XqlFM2a8.mjs} +13733 -5323
- package/dist/dist-XqlFM2a8.mjs.map +1 -0
- package/dist/{dist-CiTgmfUw.mjs → dist-f1zkl69f.mjs} +4 -4
- package/dist/dist-f1zkl69f.mjs.map +1 -0
- package/dist/{dist-B_rSWeOz.mjs → dist-umQOWz0a.mjs} +1 -1
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +35 -35
- package/dist/{effects-WMgv8ZaD.mjs → effects-DlRMovU5.mjs} +2 -2
- package/dist/{effects-WMgv8ZaD.mjs.map → effects-DlRMovU5.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-OW3yAfO5.mjs → fonts-BWYcXjyK.mjs} +3 -3
- package/dist/fonts-BWYcXjyK.mjs.map +1 -0
- package/dist/{gpu-R4T2Tndu.mjs → gpu-CH1PdM4T.mjs} +2 -2
- package/dist/{gpu-R4T2Tndu.mjs.map → gpu-CH1PdM4T.mjs.map} +1 -1
- package/dist/{index-CEKxvGY-.d.mts → index-BHTycml5.d.mts} +2 -2
- package/dist/{index-CEKxvGY-.d.mts.map → index-BHTycml5.d.mts.map} +1 -1
- package/dist/{index-DoP6EiHj.d.mts → index-BcxxxwhV.d.mts} +4 -4
- package/dist/{index-DoP6EiHj.d.mts.map → index-BcxxxwhV.d.mts.map} +1 -1
- package/dist/{index-Bv7gxGK1.d.mts → index-BnB_Ou2y.d.mts} +2 -2
- package/dist/index-BnB_Ou2y.d.mts.map +1 -0
- package/dist/index-C-V6CAhP.d.mts.map +1 -1
- package/dist/{index-D1FqV1eu.d.mts → index-CMhkkc56.d.mts} +43 -11
- package/dist/index-CMhkkc56.d.mts.map +1 -0
- package/dist/{index-B0Vq8Bwf.d.mts → index-CYVpYGM-.d.mts} +2 -2
- package/dist/{index-B0Vq8Bwf.d.mts.map → index-CYVpYGM-.d.mts.map} +1 -1
- package/dist/{index-C7-p9zwU.d.mts → index-DhL7ckvs.d.mts} +5 -5
- package/dist/index-DhL7ckvs.d.mts.map +1 -0
- package/dist/{index-9xte4JgL.d.mts → index-DkAjKnhW.d.mts} +1464 -559
- package/dist/index-DkAjKnhW.d.mts.map +1 -0
- package/dist/{index-GA9_Z8Fn.d.mts → index-RILu3ULT.d.mts} +2 -2
- package/dist/{index-GA9_Z8Fn.d.mts.map → index-RILu3ULT.d.mts.map} +1 -1
- package/dist/{index-C5sgRLlG.d.mts → index-TCtdSXd7.d.mts} +3 -1
- package/dist/index-TCtdSXd7.d.mts.map +1 -0
- package/dist/{index-CRaydvLi.d.mts → index-s2qQ8ifZ.d.mts} +886 -51
- package/dist/index-s2qQ8ifZ.d.mts.map +1 -0
- package/dist/index.d.mts +13 -13
- package/dist/index.mjs +52 -52
- package/dist/preview/index.d.mts +3 -3
- package/dist/preview/index.mjs +10 -10
- package/dist/preview-BeGF1Bb1.mjs +1002 -0
- package/dist/preview-BeGF1Bb1.mjs.map +1 -0
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-64L4GUOF.mjs → chunk-4F3DG6YB.mjs} +2 -2
- package/dist/preview-engine/chunk-A2OTOW3B.mjs +4694 -0
- package/dist/preview-engine/{chunk-GNDE3OXQ.mjs → chunk-BR56TQBP.mjs} +1 -1
- package/dist/preview-engine/{chunk-ADLIF544.mjs → chunk-H2XKXXAU.mjs} +1 -1
- package/dist/preview-engine/chunk-NDUODAY2.mjs +3 -0
- package/dist/preview-engine/{chunk-FZ4RD7HV.mjs → chunk-QAQJSWUT.mjs} +1 -1
- package/dist/preview-engine/chunk-SWRGQTVC.mjs +138 -0
- package/dist/preview-engine/{chunk-52X7SURQ.mjs → chunk-TEA3GVBJ.mjs} +1 -1
- package/dist/preview-engine/chunk-VM2ZBPLM.mjs +644 -0
- package/dist/preview-engine/{chunk-UBY2UYEL.mjs → chunk-XSHNQJ7L.mjs} +1 -1
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +2 -2
- package/dist/preview-engine/{renderers-DU7KPFVV.mjs → renderers-6C7NWWDX.mjs} +1 -1
- package/dist/preview-engine/renderers-HHVGNMSJ.mjs +206 -0
- package/dist/preview-engine/{src-YXNX4MLK.mjs → src-RCNEKIRP.mjs} +1 -1
- package/dist/preview-page/index.html +19 -0
- package/dist/preview-page/main.css +1 -0
- package/dist/preview-page/main.js +327 -0
- package/dist/{program-tFKCWU2j.mjs → program-CMigyfso.mjs} +829 -52
- package/dist/program-CMigyfso.mjs.map +1 -0
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-DkOuQi84.mjs → renderer-0GMEL_Zi.mjs} +3 -3
- package/dist/{renderer-DkOuQi84.mjs.map → renderer-0GMEL_Zi.mjs.map} +1 -1
- package/dist/{renderer-BGp0An5A.mjs → renderer-3Wv2ZBJG.mjs} +3 -3
- package/dist/{renderer-BGp0An5A.mjs.map → renderer-3Wv2ZBJG.mjs.map} +1 -1
- package/dist/{renderer-BVIXKfbC.mjs → renderer-4nXkaAWu.mjs} +1178 -199
- package/dist/renderer-4nXkaAWu.mjs.map +1 -0
- package/dist/{renderer-Cw6_NL2i.mjs → renderer-6SnfLXeg.mjs} +3 -3
- package/dist/{renderer-Cw6_NL2i.mjs.map → renderer-6SnfLXeg.mjs.map} +1 -1
- package/dist/{renderer-BVU22lBS.mjs → renderer-8gHw3O0P.mjs} +2 -2
- package/dist/{renderer-BVU22lBS.mjs.map → renderer-8gHw3O0P.mjs.map} +1 -1
- package/dist/{renderer-BjDddtw9.mjs → renderer-AOBglZHC.mjs} +2 -2
- package/dist/{renderer-D-KHHWQD.mjs → renderer-B0bSARK3.mjs} +3 -3
- package/dist/{renderer-D-KHHWQD.mjs.map → renderer-B0bSARK3.mjs.map} +1 -1
- package/dist/{renderer-CCxk-RJR.mjs → renderer-B2_tuRfl.mjs} +2 -2
- package/dist/{renderer-CCxk-RJR.mjs.map → renderer-B2_tuRfl.mjs.map} +1 -1
- package/dist/{renderer-k5d7JSbs.mjs → renderer-B82FhkEr.mjs} +3 -3
- package/dist/{renderer-k5d7JSbs.mjs.map → renderer-B82FhkEr.mjs.map} +1 -1
- package/dist/{renderer-I0Hh9cLK.mjs → renderer-B9lzA0PY.mjs} +3 -3
- package/dist/{renderer-I0Hh9cLK.mjs.map → renderer-B9lzA0PY.mjs.map} +1 -1
- package/dist/{renderer-Dwwnx7Dk.mjs → renderer-BBSIWSry.mjs} +2 -2
- package/dist/{renderer-Dwwnx7Dk.mjs.map → renderer-BBSIWSry.mjs.map} +1 -1
- package/dist/{renderer-_pC-jB9O.mjs → renderer-BEKDMxbi.mjs} +2 -2
- package/dist/{renderer-_pC-jB9O.mjs.map → renderer-BEKDMxbi.mjs.map} +1 -1
- package/dist/renderer-BERGAxqA.mjs +5 -0
- package/dist/{renderer-raxwsiGI.mjs → renderer-BF960HY8.mjs} +3 -3
- package/dist/{renderer-raxwsiGI.mjs.map → renderer-BF960HY8.mjs.map} +1 -1
- package/dist/{renderer-Dr0tXA4k.mjs → renderer-BFwyVxCu.mjs} +3 -3
- package/dist/{renderer-Dr0tXA4k.mjs.map → renderer-BFwyVxCu.mjs.map} +1 -1
- package/dist/{renderer-DEjo6dw_.mjs → renderer-BNiwcI3-.mjs} +2 -2
- package/dist/{renderer-DEjo6dw_.mjs.map → renderer-BNiwcI3-.mjs.map} +1 -1
- package/dist/{renderer-DIEeHiQA.mjs → renderer-BPbVb2Q4.mjs} +2 -2
- package/dist/{renderer-DIEeHiQA.mjs.map → renderer-BPbVb2Q4.mjs.map} +1 -1
- package/dist/renderer-BQ_YkBMt.mjs +6 -0
- package/dist/{renderer-BBMtmxks.mjs → renderer-BUWxlA8T.mjs} +3 -3
- package/dist/{renderer-BBMtmxks.mjs.map → renderer-BUWxlA8T.mjs.map} +1 -1
- package/dist/renderer-BW0Tjsv9.mjs +5 -0
- package/dist/{renderer-Dgj46uEU.mjs → renderer-BX8liu-e.mjs} +2 -2
- package/dist/{renderer-ZnrEfkYh.mjs → renderer-BXIwDAr_.mjs} +2 -2
- package/dist/{renderer-ZnrEfkYh.mjs.map → renderer-BXIwDAr_.mjs.map} +1 -1
- package/dist/{renderer-DA8YEo_d.mjs → renderer-B_Hy1W-g.mjs} +3 -3
- package/dist/{renderer-DA8YEo_d.mjs.map → renderer-B_Hy1W-g.mjs.map} +1 -1
- package/dist/{renderer-iMiYStcW.mjs → renderer-Bb6cvSgh.mjs} +2 -2
- package/dist/{renderer-iMiYStcW.mjs.map → renderer-Bb6cvSgh.mjs.map} +1 -1
- package/dist/{renderer-BacY4nh8.mjs → renderer-BdppwWC9.mjs} +2 -2
- package/dist/{renderer-BacY4nh8.mjs.map → renderer-BdppwWC9.mjs.map} +1 -1
- package/dist/{renderer-CrxwW6VQ.mjs → renderer-Bhc24HVe.mjs} +3 -3
- package/dist/{renderer-CrxwW6VQ.mjs.map → renderer-Bhc24HVe.mjs.map} +1 -1
- package/dist/{renderer-BH7UCMPQ.mjs → renderer-BiNA2wF0.mjs} +2 -2
- package/dist/{renderer-BH7UCMPQ.mjs.map → renderer-BiNA2wF0.mjs.map} +1 -1
- package/dist/{renderer-DVPgWHZw.mjs → renderer-BmoBgTp5.mjs} +3 -3
- package/dist/{renderer-DVPgWHZw.mjs.map → renderer-BmoBgTp5.mjs.map} +1 -1
- package/dist/{renderer-C20efMI0.mjs → renderer-BmqFmCWS.mjs} +3 -3
- package/dist/{renderer-C20efMI0.mjs.map → renderer-BmqFmCWS.mjs.map} +1 -1
- package/dist/{renderer-B0yVUOPP.mjs → renderer-BnVwAObV.mjs} +2 -2
- package/dist/{renderer-B0yVUOPP.mjs.map → renderer-BnVwAObV.mjs.map} +1 -1
- package/dist/{renderer-CP8wLzTU.mjs → renderer-BxttZHme.mjs} +2 -2
- package/dist/{renderer-CP8wLzTU.mjs.map → renderer-BxttZHme.mjs.map} +1 -1
- package/dist/renderer-BzyPdUD1.mjs +5 -0
- package/dist/renderer-C0hM-mtY.mjs +5 -0
- package/dist/renderer-C6cyUTvk.mjs +5 -0
- package/dist/{renderer-BOSZAdgF.mjs → renderer-C8E4XsSg.mjs} +2 -2
- package/dist/{renderer-BOSZAdgF.mjs.map → renderer-C8E4XsSg.mjs.map} +1 -1
- package/dist/renderer-C8zY3pzk.mjs +5 -0
- package/dist/{renderer-DWq9gYRw.mjs → renderer-C9U-LY50.mjs} +3 -3
- package/dist/{renderer-DWq9gYRw.mjs.map → renderer-C9U-LY50.mjs.map} +1 -1
- package/dist/{renderer-Dj2H5JPR.mjs → renderer-CB2JVu5x.mjs} +3 -3
- package/dist/{renderer-Dj2H5JPR.mjs.map → renderer-CB2JVu5x.mjs.map} +1 -1
- package/dist/{renderer-Bcu3UrI-.mjs → renderer-CC4YBJ8Z.mjs} +3 -3
- package/dist/{renderer-Bcu3UrI-.mjs.map → renderer-CC4YBJ8Z.mjs.map} +1 -1
- package/dist/renderer-CEkSOyKu.mjs +5 -0
- package/dist/{renderer-DzLrvCB2.mjs → renderer-CIycc5O-.mjs} +2 -2
- package/dist/{renderer-DzLrvCB2.mjs.map → renderer-CIycc5O-.mjs.map} +1 -1
- package/dist/renderer-CJYtfa4x.mjs +5 -0
- package/dist/{renderer-BeNl_6EG.mjs → renderer-CJraQlV-.mjs} +2 -2
- package/dist/{renderer-BeNl_6EG.mjs.map → renderer-CJraQlV-.mjs.map} +1 -1
- package/dist/renderer-CKMtHGZh.mjs +5 -0
- package/dist/renderer-CLzicoiy.mjs +5 -0
- package/dist/renderer-CM2A4BHd.mjs +5 -0
- package/dist/{renderer-DtMVitEF.mjs → renderer-COWGWtob.mjs} +2 -2
- package/dist/{renderer-DtMVitEF.mjs.map → renderer-COWGWtob.mjs.map} +1 -1
- package/dist/{renderer-CT3zkfbf.mjs → renderer-COxG2XGf.mjs} +2 -2
- package/dist/{renderer-CT3zkfbf.mjs.map → renderer-COxG2XGf.mjs.map} +1 -1
- package/dist/{renderer-DNxWOz8Q.mjs → renderer-CQDCIsQm.mjs} +2 -2
- package/dist/{renderer-DNxWOz8Q.mjs.map → renderer-CQDCIsQm.mjs.map} +1 -1
- package/dist/{renderer-C5AoaymD.mjs → renderer-CRUeag8i.mjs} +3 -3
- package/dist/{renderer-C5AoaymD.mjs.map → renderer-CRUeag8i.mjs.map} +1 -1
- package/dist/{renderer-ngmYIIob.mjs → renderer-CWVput06.mjs} +3 -3
- package/dist/{renderer-ngmYIIob.mjs.map → renderer-CWVput06.mjs.map} +1 -1
- package/dist/renderer-CZlHjcxr.mjs +5 -0
- package/dist/{renderer-0rveCDm-.mjs → renderer-CbbnBLOB.mjs} +3 -3
- package/dist/{renderer-0rveCDm-.mjs.map → renderer-CbbnBLOB.mjs.map} +1 -1
- package/dist/renderer-CbimvSU8.mjs +5 -0
- package/dist/renderer-Ccvc63yd.mjs +5 -0
- package/dist/renderer-Cdp-SGfq.mjs +5 -0
- package/dist/renderer-CeTcSs3e.mjs +5 -0
- package/dist/{renderer-Brmbl12Y.mjs → renderer-CfLZein2.mjs} +3 -3
- package/dist/{renderer-Brmbl12Y.mjs.map → renderer-CfLZein2.mjs.map} +1 -1
- package/dist/{renderer-BJ8ea92W.mjs → renderer-Ch-q1O-q.mjs} +3 -3
- package/dist/{renderer-BJ8ea92W.mjs.map → renderer-Ch-q1O-q.mjs.map} +1 -1
- package/dist/{renderer-CP108ABB.mjs → renderer-Ch5JvJWl.mjs} +2 -2
- package/dist/{renderer-CP108ABB.mjs.map → renderer-Ch5JvJWl.mjs.map} +1 -1
- package/dist/{renderer-47y12Z37.mjs → renderer-ChtEzq-R.mjs} +2 -2
- package/dist/{renderer-47y12Z37.mjs.map → renderer-ChtEzq-R.mjs.map} +1 -1
- package/dist/{renderer-DhyMfG1v.mjs → renderer-Cj9nTC5l.mjs} +3 -3
- package/dist/{renderer-DhyMfG1v.mjs.map → renderer-Cj9nTC5l.mjs.map} +1 -1
- package/dist/{renderer-BDzn1AKF.mjs → renderer-CqT8HsSS.mjs} +2 -2
- package/dist/{renderer-BDzn1AKF.mjs.map → renderer-CqT8HsSS.mjs.map} +1 -1
- package/dist/{renderer-B7G1KohJ.mjs → renderer-CuQjMhdV.mjs} +2 -2
- package/dist/renderer-CvNuu52U.mjs +5 -0
- package/dist/renderer-CwciC0oI.mjs +5 -0
- package/dist/renderer-CysLUbIr.mjs +5 -0
- package/dist/{renderer-Cm0tsbQH.mjs → renderer-Cz30EVws.mjs} +2 -2
- package/dist/{renderer-Cm0tsbQH.mjs.map → renderer-Cz30EVws.mjs.map} +1 -1
- package/dist/renderer-D3A22Vxb.mjs +5 -0
- package/dist/renderer-D5SY9EmA.mjs +5 -0
- package/dist/renderer-D8h3ZvaE.mjs +5 -0
- package/dist/renderer-DE-B6N9n.mjs +5 -0
- package/dist/renderer-DETZTI7t.mjs +5 -0
- package/dist/{renderer-nHS3Sius.mjs → renderer-DHoX-5U_.mjs} +3 -3
- package/dist/{renderer-nHS3Sius.mjs.map → renderer-DHoX-5U_.mjs.map} +1 -1
- package/dist/{renderer-BWSRryIA.mjs → renderer-DOkm0Ycd.mjs} +2 -2
- package/dist/{renderer-BWSRryIA.mjs.map → renderer-DOkm0Ycd.mjs.map} +1 -1
- package/dist/{renderer-BHYJlK6H.d.mts → renderer-DU3f6ZrS.d.mts} +2 -2
- package/dist/{renderer-BHYJlK6H.d.mts.map → renderer-DU3f6ZrS.d.mts.map} +1 -1
- package/dist/{renderer-BpVOk9ux.mjs → renderer-DUzv-shq.mjs} +2 -2
- package/dist/{renderer-BpVOk9ux.mjs.map → renderer-DUzv-shq.mjs.map} +1 -1
- package/dist/renderer-DWnDj0IM.mjs +5 -0
- package/dist/renderer-DcGUIbQF.mjs +5 -0
- package/dist/renderer-Dfq6FoNO.mjs +5 -0
- package/dist/renderer-DhasXW6S.mjs +3 -0
- package/dist/{renderer-NRMlYkX6.mjs → renderer-DhnOWnEA.mjs} +3 -3
- package/dist/{renderer-NRMlYkX6.mjs.map → renderer-DhnOWnEA.mjs.map} +1 -1
- package/dist/{renderer-COgwYqev.mjs → renderer-Dhy1XHzz.mjs} +3 -3
- package/dist/{renderer-COgwYqev.mjs.map → renderer-Dhy1XHzz.mjs.map} +1 -1
- package/dist/renderer-DjCvpsV_.mjs +5 -0
- package/dist/{renderer-BfZNIiSv.mjs → renderer-DjJshz9Y.mjs} +2 -2
- package/dist/{renderer-BfZNIiSv.mjs.map → renderer-DjJshz9Y.mjs.map} +1 -1
- package/dist/{renderer-CKo7VR8x.mjs → renderer-DmTUIdus.mjs} +3 -3
- package/dist/{renderer-CKo7VR8x.mjs.map → renderer-DmTUIdus.mjs.map} +1 -1
- package/dist/{renderer-Baw6Utxi.mjs → renderer-Dq7AioJa.mjs} +2 -2
- package/dist/{renderer-Baw6Utxi.mjs.map → renderer-Dq7AioJa.mjs.map} +1 -1
- package/dist/renderer-DrAaM6JD.mjs +5 -0
- package/dist/{renderer-D-GWBoVT.mjs → renderer-Dt4sqNEu.mjs} +2 -2
- package/dist/{renderer-D-GWBoVT.mjs.map → renderer-Dt4sqNEu.mjs.map} +1 -1
- package/dist/{renderer-FYOL5Za6.mjs → renderer-Dtcs4idV.mjs} +3 -3
- package/dist/{renderer-FYOL5Za6.mjs.map → renderer-Dtcs4idV.mjs.map} +1 -1
- package/dist/renderer-Dxlv8LYm.mjs +5 -0
- package/dist/{renderer-D-RhYvVl.mjs → renderer-Gj8SrE2W.mjs} +2 -2
- package/dist/{renderer-D-RhYvVl.mjs.map → renderer-Gj8SrE2W.mjs.map} +1 -1
- package/dist/{renderer-D_j1WKMD.mjs → renderer-KfnXDJS0.mjs} +3 -3
- package/dist/{renderer-D_j1WKMD.mjs.map → renderer-KfnXDJS0.mjs.map} +1 -1
- package/dist/{renderer-Bpm145BW.mjs → renderer-MXVlg4p5.mjs} +3 -3
- package/dist/{renderer-Bpm145BW.mjs.map → renderer-MXVlg4p5.mjs.map} +1 -1
- package/dist/{renderer-Nnmi8Gt6.mjs → renderer-N2b6QZ1E.mjs} +3 -3
- package/dist/{renderer-Nnmi8Gt6.mjs.map → renderer-N2b6QZ1E.mjs.map} +1 -1
- package/dist/renderer-Pb43OO2t.mjs +5 -0
- package/dist/{renderer-Ca1KjNCO.mjs → renderer-Q7gDzm8c.mjs} +2 -2
- package/dist/{renderer-Ca1KjNCO.mjs.map → renderer-Q7gDzm8c.mjs.map} +1 -1
- package/dist/{renderer-D2wNFNRf.mjs → renderer-RCiANtRV.mjs} +2 -2
- package/dist/{renderer-D2wNFNRf.mjs.map → renderer-RCiANtRV.mjs.map} +1 -1
- package/dist/{renderer-Cqb7PGrI.mjs → renderer-Sig9nZcI.mjs} +2 -2
- package/dist/renderer-VQbm-cGr.mjs +5 -0
- package/dist/{renderer-W1bVNVR6.mjs → renderer-fabBgwQX.mjs} +3 -3
- package/dist/{renderer-W1bVNVR6.mjs.map → renderer-fabBgwQX.mjs.map} +1 -1
- package/dist/{renderer-zRq0j6Xy.mjs → renderer-g-0PCNoo.mjs} +3 -3
- package/dist/{renderer-zRq0j6Xy.mjs.map → renderer-g-0PCNoo.mjs.map} +1 -1
- package/dist/{renderer-2PjR3w-q.mjs → renderer-gmHKIbKI.mjs} +3 -3
- package/dist/{renderer-2PjR3w-q.mjs.map → renderer-gmHKIbKI.mjs.map} +1 -1
- package/dist/{renderer-03mYJLgX.mjs → renderer-kVZwiRoK.mjs} +3 -3
- package/dist/{renderer-03mYJLgX.mjs.map → renderer-kVZwiRoK.mjs.map} +1 -1
- package/dist/renderer-oPMypDM1.mjs +5 -0
- package/dist/{renderer-DcAKDAnS.mjs → renderer-p7tgxP-A.mjs} +3 -3
- package/dist/{renderer-DcAKDAnS.mjs.map → renderer-p7tgxP-A.mjs.map} +1 -1
- package/dist/{renderer-jUKdkmG5.mjs → renderer-tvYj306A.mjs} +81 -78
- package/dist/renderer-tvYj306A.mjs.map +1 -0
- package/dist/renderer-xvWGpVyp.mjs +5 -0
- package/dist/renderer-zafZbD6Q.mjs +5 -0
- package/dist/{renderers-CP8CFWDs-CshljORp.mjs → renderers-CP8CFWDs-DLjtjrwx.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-CshljORp.mjs.map → renderers-CP8CFWDs-DLjtjrwx.mjs.map} +1 -1
- package/dist/sam/index.d.mts +2 -2
- package/dist/sam/index.mjs +1 -1
- package/dist/signals/index.d.mts +4 -4
- package/dist/signals/index.mjs +4 -4
- package/dist/{src-BU6vm9sP-DdTHmCr4.mjs → src-B23p_eh7-Cj6-lvV6.mjs} +293 -6
- package/dist/src-B23p_eh7-Cj6-lvV6.mjs.map +1 -0
- package/dist/{src-Dy4gnc6w.mjs → src-CoHAjviq.mjs} +1349 -177
- package/dist/src-CoHAjviq.mjs.map +1 -0
- package/dist/storage/index.mjs +1 -1
- package/package.json +63 -60
- package/dist/dist--Uu5bQ_6.mjs.map +0 -1
- package/dist/dist-CiTgmfUw.mjs.map +0 -1
- package/dist/fonts-OW3yAfO5.mjs.map +0 -1
- package/dist/index-9xte4JgL.d.mts.map +0 -1
- package/dist/index-Bv7gxGK1.d.mts.map +0 -1
- package/dist/index-C5sgRLlG.d.mts.map +0 -1
- package/dist/index-C7-p9zwU.d.mts.map +0 -1
- package/dist/index-CRaydvLi.d.mts.map +0 -1
- package/dist/index-D1FqV1eu.d.mts.map +0 -1
- package/dist/preview-D7BGmE1E.mjs +0 -2446
- package/dist/preview-D7BGmE1E.mjs.map +0 -1
- package/dist/preview-engine/chunk-5DZTPUMH.mjs +0 -2568
- package/dist/preview-engine/chunk-NCQHOGZK.mjs +0 -3
- package/dist/preview-engine/chunk-PH3UUX6A.mjs +0 -138
- package/dist/preview-engine/chunk-UPZURPJY.mjs +0 -2227
- package/dist/preview-engine/renderers-DLJOA3BM.mjs +0 -228
- package/dist/program-tFKCWU2j.mjs.map +0 -1
- package/dist/renderer-6_bzbbXt.mjs +0 -5
- package/dist/renderer-8M-9G6F_.mjs +0 -5
- package/dist/renderer-B5OzKvF8.mjs +0 -5
- package/dist/renderer-BBCZ2qbE.mjs +0 -5
- package/dist/renderer-BChbxCux.mjs +0 -5
- package/dist/renderer-BGeMPr8C.mjs +0 -5
- package/dist/renderer-BPQ8Pkjb.mjs +0 -5
- package/dist/renderer-BTRpA3HD.mjs +0 -5
- package/dist/renderer-BVIXKfbC.mjs.map +0 -1
- package/dist/renderer-BVsECSn-.mjs +0 -5
- package/dist/renderer-Bgos68gc.mjs +0 -6
- package/dist/renderer-BjHOvoqO.mjs +0 -5
- package/dist/renderer-BjXMPPlV.mjs +0 -5
- package/dist/renderer-Byobxqkv.mjs +0 -5
- package/dist/renderer-CKrsg3EG.mjs +0 -5
- package/dist/renderer-Cj875NuH.mjs +0 -5
- package/dist/renderer-CnmzJoMv.mjs +0 -5
- package/dist/renderer-CtklDaMg.mjs +0 -5
- package/dist/renderer-D1tK3in_.mjs +0 -5
- package/dist/renderer-D2yc9P61.mjs +0 -5
- package/dist/renderer-D4v-JvSr.mjs +0 -5
- package/dist/renderer-D5yp74NL.mjs +0 -3
- package/dist/renderer-D7WRWDwB.mjs +0 -5
- package/dist/renderer-DGvA0tdB.mjs +0 -5
- package/dist/renderer-DO7v5Sdm.mjs +0 -5
- package/dist/renderer-DRVvt7-V.mjs +0 -5
- package/dist/renderer-DYMCd3jL.mjs +0 -5
- package/dist/renderer-DmHKw-MM.mjs +0 -5
- package/dist/renderer-DoDsuZ6G.mjs +0 -5
- package/dist/renderer-EpgclS70.mjs +0 -5
- package/dist/renderer-GroKiYyK.mjs +0 -5
- package/dist/renderer-MQ5K_xIS.mjs +0 -5
- package/dist/renderer-U43SflML.mjs +0 -5
- package/dist/renderer-UqOmBgCv.mjs +0 -5
- package/dist/renderer-XLULgJM0.mjs +0 -5
- package/dist/renderer-jUKdkmG5.mjs.map +0 -1
- package/dist/renderer-lNjxY1GG.mjs +0 -5
- package/dist/renderer-ukufL7pl.mjs +0 -5
- package/dist/renderer-wb0NCKdF.mjs +0 -5
- package/dist/src-BU6vm9sP-DdTHmCr4.mjs.map +0 -1
- package/dist/src-Dy4gnc6w.mjs.map +0 -1
|
@@ -1,14 +1,167 @@
|
|
|
1
1
|
import { $ as FrameSignal, $n as ToonShading, At as MediaTimeRemapInput, Et as MediaSourceInput, Ft as MeshAudioDeformConfig, I as Effect$1, Jn as TextSpan, M as DeflickerOptions, Nt as MediaTimeSignalRemap, O as DataType, Sn as Signal, Z as FrameContext, _n as ResolvedMediaTimeRemap, en as NormalRelightingOptions, fn as ProgrammaticSignal, fr as VirtualMediaData, gn as RenderDiagnostic, gr as VisionTask, it as GeometryOutlineOptions, yt as MediaMetadata, z as EffectDomain } from "./index-C-V6CAhP.mjs";
|
|
2
|
-
import { A as PolyhedronGeometryOptions, F as RoundedBoxGeometryOptions,
|
|
3
|
-
import { i as RegisterFontOptions } from "./index-
|
|
4
|
-
import {
|
|
5
|
-
import { S as Sam3Options, p as Sam2Options } from "./index-
|
|
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-
|
|
7
|
-
import { _ as RenderProgress, b as VideoQaOptions, f as HeadlessMediaRenderer, t as FrameGridOptions, x as VideoQaReport } from "./index-
|
|
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<{
|
|
@@ -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
|
|
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 {
|
|
@@ -357,6 +529,7 @@ declare const AnimationTrackSchema: z.ZodObject<{
|
|
|
357
529
|
maxBlurRadius: "maxBlurRadius";
|
|
358
530
|
shakeTranslation: "shakeTranslation";
|
|
359
531
|
shakeRotation: "shakeRotation";
|
|
532
|
+
relativitySpeed: "relativitySpeed";
|
|
360
533
|
orbitRadius: "orbitRadius";
|
|
361
534
|
orbitAzimuth: "orbitAzimuth";
|
|
362
535
|
orbitElevation: "orbitElevation";
|
|
@@ -385,7 +558,24 @@ declare const AnimationTrackSchema: z.ZodObject<{
|
|
|
385
558
|
scaleY: "scaleY";
|
|
386
559
|
emissive: "emissive";
|
|
387
560
|
emissiveIntensity: "emissiveIntensity";
|
|
561
|
+
clearcoat: "clearcoat";
|
|
562
|
+
clearcoatRoughness: "clearcoatRoughness";
|
|
563
|
+
anisotropy: "anisotropy";
|
|
564
|
+
anisotropyRotation: "anisotropyRotation";
|
|
565
|
+
subsurface: "subsurface";
|
|
566
|
+
subsurfaceColor: "subsurfaceColor";
|
|
567
|
+
sheen: "sheen";
|
|
568
|
+
sheenColor: "sheenColor";
|
|
569
|
+
sheenRoughness: "sheenRoughness";
|
|
570
|
+
iridescence: "iridescence";
|
|
571
|
+
iridescenceThickness: "iridescenceThickness";
|
|
572
|
+
iridescenceIor: "iridescenceIor";
|
|
573
|
+
triplanarScale: "triplanarScale";
|
|
574
|
+
triplanarSharpness: "triplanarSharpness";
|
|
388
575
|
exposure: "exposure";
|
|
576
|
+
volumetricFogDensity: "volumetricFogDensity";
|
|
577
|
+
volumetricFogAnisotropy: "volumetricFogAnisotropy";
|
|
578
|
+
volumetricFogNoiseStrength: "volumetricFogNoiseStrength";
|
|
389
579
|
}>;
|
|
390
580
|
source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
391
581
|
type: z.ZodLiteral<"keyframe">;
|
|
@@ -541,6 +731,7 @@ declare const LayerAnimationSchema: z.ZodObject<{
|
|
|
541
731
|
maxBlurRadius: "maxBlurRadius";
|
|
542
732
|
shakeTranslation: "shakeTranslation";
|
|
543
733
|
shakeRotation: "shakeRotation";
|
|
734
|
+
relativitySpeed: "relativitySpeed";
|
|
544
735
|
orbitRadius: "orbitRadius";
|
|
545
736
|
orbitAzimuth: "orbitAzimuth";
|
|
546
737
|
orbitElevation: "orbitElevation";
|
|
@@ -569,7 +760,24 @@ declare const LayerAnimationSchema: z.ZodObject<{
|
|
|
569
760
|
scaleY: "scaleY";
|
|
570
761
|
emissive: "emissive";
|
|
571
762
|
emissiveIntensity: "emissiveIntensity";
|
|
763
|
+
clearcoat: "clearcoat";
|
|
764
|
+
clearcoatRoughness: "clearcoatRoughness";
|
|
765
|
+
anisotropy: "anisotropy";
|
|
766
|
+
anisotropyRotation: "anisotropyRotation";
|
|
767
|
+
subsurface: "subsurface";
|
|
768
|
+
subsurfaceColor: "subsurfaceColor";
|
|
769
|
+
sheen: "sheen";
|
|
770
|
+
sheenColor: "sheenColor";
|
|
771
|
+
sheenRoughness: "sheenRoughness";
|
|
772
|
+
iridescence: "iridescence";
|
|
773
|
+
iridescenceThickness: "iridescenceThickness";
|
|
774
|
+
iridescenceIor: "iridescenceIor";
|
|
775
|
+
triplanarScale: "triplanarScale";
|
|
776
|
+
triplanarSharpness: "triplanarSharpness";
|
|
572
777
|
exposure: "exposure";
|
|
778
|
+
volumetricFogDensity: "volumetricFogDensity";
|
|
779
|
+
volumetricFogAnisotropy: "volumetricFogAnisotropy";
|
|
780
|
+
volumetricFogNoiseStrength: "volumetricFogNoiseStrength";
|
|
573
781
|
}>;
|
|
574
782
|
source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
575
783
|
type: z.ZodLiteral<"keyframe">;
|
|
@@ -661,6 +869,17 @@ type LayerAnimationSpec<TProp extends AnimatableProp = AnimatableProp> = Omit<Ba
|
|
|
661
869
|
};
|
|
662
870
|
declare const ToonShadingSchema: z.ZodType<ToonShading>;
|
|
663
871
|
declare const GeometryOutlineOptionsSchema: z.ZodType<GeometryOutlineOptions>;
|
|
872
|
+
declare const IridescenceConfigSchema: z.ZodObject<{
|
|
873
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
874
|
+
thickness: z.ZodOptional<z.ZodNumber>;
|
|
875
|
+
ior: z.ZodOptional<z.ZodNumber>;
|
|
876
|
+
}, z.core.$strict>;
|
|
877
|
+
type IridescenceConfig = z.infer<typeof IridescenceConfigSchema>;
|
|
878
|
+
declare const TriplanarConfigSchema: z.ZodObject<{
|
|
879
|
+
scale: z.ZodOptional<z.ZodNumber>;
|
|
880
|
+
sharpness: z.ZodOptional<z.ZodNumber>;
|
|
881
|
+
}, z.core.$strict>;
|
|
882
|
+
type TriplanarConfig = z.infer<typeof TriplanarConfigSchema>;
|
|
664
883
|
interface CompositionNodeBase {
|
|
665
884
|
id: string;
|
|
666
885
|
inputHandleId?: string;
|
|
@@ -709,6 +928,21 @@ interface CompositionNodeBase {
|
|
|
709
928
|
fresnelPower?: number;
|
|
710
929
|
emissive?: string;
|
|
711
930
|
emissiveIntensity?: number;
|
|
931
|
+
clearcoat?: number;
|
|
932
|
+
clearcoatRoughness?: number;
|
|
933
|
+
anisotropy?: number;
|
|
934
|
+
anisotropyRotation?: number;
|
|
935
|
+
subsurface?: number;
|
|
936
|
+
subsurfaceColor?: string;
|
|
937
|
+
sheen?: number;
|
|
938
|
+
sheenColor?: string;
|
|
939
|
+
sheenRoughness?: number;
|
|
940
|
+
iridescence?: number | IridescenceConfig;
|
|
941
|
+
iridescenceThickness?: number;
|
|
942
|
+
iridescenceIor?: number;
|
|
943
|
+
triplanar?: boolean | TriplanarConfig;
|
|
944
|
+
triplanarScale?: number;
|
|
945
|
+
triplanarSharpness?: number;
|
|
712
946
|
castShadow?: boolean;
|
|
713
947
|
toon?: ToonShading;
|
|
714
948
|
outline?: boolean;
|
|
@@ -726,6 +960,7 @@ interface CompositionNodeBase {
|
|
|
726
960
|
reliefId?: string;
|
|
727
961
|
reliefOf?: string;
|
|
728
962
|
reliefAmount?: number;
|
|
963
|
+
textureOf?: string;
|
|
729
964
|
envIntensity?: number;
|
|
730
965
|
startFrame?: number;
|
|
731
966
|
durationFrames?: number;
|
|
@@ -885,6 +1120,13 @@ interface TextNode extends CompositionNodeBase {
|
|
|
885
1120
|
fontSize?: number;
|
|
886
1121
|
fontWeight?: number | string;
|
|
887
1122
|
fontStyle?: string;
|
|
1123
|
+
/**
|
|
1124
|
+
* Variable font axes by tag, as CSS `font-variation-settings`: `{ wdth: 68 }`
|
|
1125
|
+
* narrows a font with a width axis, `{ opsz: 72 }` or `{ GRAD: 50 }` set
|
|
1126
|
+
* others. `fontWeight` sets `wght`; `opsz` follows the font size unless set.
|
|
1127
|
+
* Axes the font lacks are ignored. Spans inherit them.
|
|
1128
|
+
*/
|
|
1129
|
+
fontVariations?: Record<string, number>;
|
|
888
1130
|
fill?: string;
|
|
889
1131
|
align?: "start" | "center" | "end";
|
|
890
1132
|
/**
|
|
@@ -976,6 +1218,12 @@ interface ShapeNode extends CompositionNodeBase {
|
|
|
976
1218
|
trimEnd?: number;
|
|
977
1219
|
trimOffset?: number;
|
|
978
1220
|
}
|
|
1221
|
+
/**
|
|
1222
|
+
* The picture a camera draws. `perspective` is an ordinary lens; the others
|
|
1223
|
+
* are cube cameras: the scene is drawn as six 90° faces around the eye and
|
|
1224
|
+
* remapped, so they can show what no single frustum holds.
|
|
1225
|
+
*/
|
|
1226
|
+
|
|
979
1227
|
declare const CameraLensSchema: z.ZodObject<{
|
|
980
1228
|
focalLength: z.ZodDefault<z.ZodNumber>;
|
|
981
1229
|
fov: z.ZodOptional<z.ZodNumber>;
|
|
@@ -983,8 +1231,15 @@ declare const CameraLensSchema: z.ZodObject<{
|
|
|
983
1231
|
near: z.ZodDefault<z.ZodNumber>;
|
|
984
1232
|
far: z.ZodDefault<z.ZodNumber>;
|
|
985
1233
|
zoom: z.ZodDefault<z.ZodNumber>;
|
|
1234
|
+
projection: z.ZodDefault<z.ZodEnum<{
|
|
1235
|
+
perspective: "perspective";
|
|
1236
|
+
equirectangular: "equirectangular";
|
|
1237
|
+
fisheye: "fisheye";
|
|
1238
|
+
}>>;
|
|
1239
|
+
cubeSize: z.ZodOptional<z.ZodNumber>;
|
|
986
1240
|
}, z.core.$strict>;
|
|
987
|
-
|
|
1241
|
+
/** A lens as authored: fields with schema defaults may be left out. */
|
|
1242
|
+
type CameraLens = z.input<typeof CameraLensSchema>;
|
|
988
1243
|
declare const CameraDoFSchema: z.ZodObject<{
|
|
989
1244
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
990
1245
|
focusDistance: z.ZodDefault<z.ZodNumber>;
|
|
@@ -1002,7 +1257,33 @@ declare const CameraShakeSchema: z.ZodObject<{
|
|
|
1002
1257
|
octaves: z.ZodDefault<z.ZodNumber>;
|
|
1003
1258
|
seed: z.ZodDefault<z.ZodNumber>;
|
|
1004
1259
|
}, z.core.$strict>;
|
|
1005
|
-
type CameraShake = z.
|
|
1260
|
+
type CameraShake = z.input<typeof CameraShakeSchema>;
|
|
1261
|
+
/**
|
|
1262
|
+
* Per-object shutter motion blur for the 3D scene: every mesh, skinned
|
|
1263
|
+
* joint, instance and fractured piece streaks by its own motion over the
|
|
1264
|
+
* shutter (and the camera's), reconstructed from a velocity buffer.
|
|
1265
|
+
*/
|
|
1266
|
+
declare const CameraMotionBlurSchema: z.ZodObject<{
|
|
1267
|
+
shutter: z.ZodDefault<z.ZodNumber>;
|
|
1268
|
+
samples: z.ZodDefault<z.ZodNumber>;
|
|
1269
|
+
maxBlur: z.ZodDefault<z.ZodNumber>;
|
|
1270
|
+
}, z.core.$strict>;
|
|
1271
|
+
type CameraMotionBlur = z.input<typeof CameraMotionBlurSchema>;
|
|
1272
|
+
/**
|
|
1273
|
+
* The camera moves through the scene near the speed of light. What it sees
|
|
1274
|
+
* is physics, not grading: rays crowd towards the direction of motion
|
|
1275
|
+
* (aberration), colours shift blue ahead and red behind (Doppler) and ahead
|
|
1276
|
+
* brightens (beaming). Always drawn by a cube camera.
|
|
1277
|
+
*/
|
|
1278
|
+
declare const CameraRelativitySchema: z.ZodObject<{
|
|
1279
|
+
speed: z.ZodDefault<z.ZodNumber>;
|
|
1280
|
+
direction: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
1281
|
+
doppler: z.ZodDefault<z.ZodBoolean>;
|
|
1282
|
+
beaming: z.ZodDefault<z.ZodBoolean>;
|
|
1283
|
+
exposure: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>>;
|
|
1284
|
+
}, z.core.$strict>;
|
|
1285
|
+
/** Relativity as authored: fields with schema defaults may be left out. */
|
|
1286
|
+
type CameraRelativity = z.input<typeof CameraRelativitySchema>;
|
|
1006
1287
|
interface CameraNode {
|
|
1007
1288
|
id: string;
|
|
1008
1289
|
kind: "camera";
|
|
@@ -1019,13 +1300,17 @@ interface CameraNode {
|
|
|
1019
1300
|
lens?: CameraLens;
|
|
1020
1301
|
dof?: CameraDoF;
|
|
1021
1302
|
shake?: CameraShake;
|
|
1303
|
+
/** Shutter motion blur of the 3D scene; `true` takes the defaults. */
|
|
1304
|
+
motionBlur?: boolean | CameraMotionBlur;
|
|
1305
|
+
relativity?: CameraRelativity;
|
|
1022
1306
|
startFrame?: number;
|
|
1023
1307
|
durationFrames?: number;
|
|
1024
1308
|
animation?: LayerAnimationSpec;
|
|
1025
1309
|
}
|
|
1026
1310
|
declare const CameraNodeSchema: z.ZodType<CameraNode>;
|
|
1027
|
-
type LightType = "ambient" | "directional" | "point" | "spot" | "environment";
|
|
1311
|
+
type LightType = "ambient" | "directional" | "point" | "spot" | "rect" | "environment";
|
|
1028
1312
|
declare const LightTypeSchema: z.ZodEnum<{
|
|
1313
|
+
rect: "rect";
|
|
1029
1314
|
ambient: "ambient";
|
|
1030
1315
|
directional: "directional";
|
|
1031
1316
|
point: "point";
|
|
@@ -1035,8 +1320,10 @@ declare const LightTypeSchema: z.ZodEnum<{
|
|
|
1035
1320
|
declare const EnvironmentPresetSchema: z.ZodEnum<{
|
|
1036
1321
|
studio: "studio";
|
|
1037
1322
|
soft: "soft";
|
|
1323
|
+
warm: "warm";
|
|
1038
1324
|
sunset: "sunset";
|
|
1039
1325
|
night: "night";
|
|
1326
|
+
neon: "neon";
|
|
1040
1327
|
neutral: "neutral";
|
|
1041
1328
|
}>;
|
|
1042
1329
|
type EnvironmentPreset = z.infer<typeof EnvironmentPresetSchema>;
|
|
@@ -1070,6 +1357,44 @@ declare const EnvironmentFloorSchema: z.ZodObject<{
|
|
|
1070
1357
|
opacity: z.ZodOptional<z.ZodNumber>;
|
|
1071
1358
|
}, z.core.$strict>;
|
|
1072
1359
|
type EnvironmentFloor = z.infer<typeof EnvironmentFloorSchema>;
|
|
1360
|
+
declare const EnvironmentVolumetricFogNoiseSchema: z.ZodObject<{
|
|
1361
|
+
scale: z.ZodOptional<z.ZodNumber>;
|
|
1362
|
+
strength: z.ZodOptional<z.ZodNumber>;
|
|
1363
|
+
speed: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
1364
|
+
octaves: z.ZodOptional<z.ZodNumber>;
|
|
1365
|
+
}, z.core.$strict>;
|
|
1366
|
+
type EnvironmentVolumetricFogNoise = z.infer<typeof EnvironmentVolumetricFogNoiseSchema>;
|
|
1367
|
+
declare const EnvironmentVolumetricFogSchema: z.ZodObject<{
|
|
1368
|
+
density: z.ZodOptional<z.ZodNumber>;
|
|
1369
|
+
color: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
1370
|
+
anisotropy: z.ZodOptional<z.ZodNumber>;
|
|
1371
|
+
heightFalloff: z.ZodOptional<z.ZodNumber>;
|
|
1372
|
+
baseHeight: z.ZodOptional<z.ZodNumber>;
|
|
1373
|
+
steps: z.ZodOptional<z.ZodNumber>;
|
|
1374
|
+
maxDistance: z.ZodOptional<z.ZodNumber>;
|
|
1375
|
+
lightIntensity: z.ZodOptional<z.ZodNumber>;
|
|
1376
|
+
ambientIntensity: z.ZodOptional<z.ZodNumber>;
|
|
1377
|
+
noise: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
1378
|
+
scale: z.ZodOptional<z.ZodNumber>;
|
|
1379
|
+
strength: z.ZodOptional<z.ZodNumber>;
|
|
1380
|
+
speed: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
1381
|
+
octaves: z.ZodOptional<z.ZodNumber>;
|
|
1382
|
+
}, z.core.$strict>]>>;
|
|
1383
|
+
}, z.core.$strict>;
|
|
1384
|
+
type EnvironmentVolumetricFog = z.infer<typeof EnvironmentVolumetricFogSchema>;
|
|
1385
|
+
declare const EnvironmentSsrSchema: z.ZodObject<{
|
|
1386
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
1387
|
+
maxRoughness: z.ZodOptional<z.ZodNumber>;
|
|
1388
|
+
thickness: z.ZodOptional<z.ZodNumber>;
|
|
1389
|
+
steps: z.ZodOptional<z.ZodNumber>;
|
|
1390
|
+
}, z.core.$strict>;
|
|
1391
|
+
type EnvironmentSsr = z.infer<typeof EnvironmentSsrSchema>;
|
|
1392
|
+
declare const EnvironmentGiSchema: z.ZodObject<{
|
|
1393
|
+
intensity: z.ZodOptional<z.ZodNumber>;
|
|
1394
|
+
radius: z.ZodOptional<z.ZodNumber>;
|
|
1395
|
+
samples: z.ZodOptional<z.ZodNumber>;
|
|
1396
|
+
}, z.core.$strict>;
|
|
1397
|
+
type EnvironmentGi = z.infer<typeof EnvironmentGiSchema>;
|
|
1073
1398
|
interface LightNode {
|
|
1074
1399
|
id: string;
|
|
1075
1400
|
kind: "light";
|
|
@@ -1087,15 +1412,23 @@ interface LightNode {
|
|
|
1087
1412
|
decay?: number;
|
|
1088
1413
|
angle?: number;
|
|
1089
1414
|
penumbra?: number;
|
|
1090
|
-
/**
|
|
1415
|
+
/** Area light width in world px (default 240, rect lights only). */
|
|
1416
|
+
width?: number;
|
|
1417
|
+
/** Area light height in world px (default 140, rect lights only). */
|
|
1418
|
+
height?: number;
|
|
1419
|
+
/** Emit from both faces of a rect light (default false). */
|
|
1420
|
+
twoSided?: boolean;
|
|
1421
|
+
/** Directional / spot / point / rect: render a shadow map. */
|
|
1091
1422
|
castShadow?: boolean;
|
|
1092
1423
|
/** Shadow edge blur in shadow-map texels. Default 2.5. */
|
|
1093
1424
|
shadowSoftness?: number;
|
|
1094
1425
|
/** 0..1, how dark shadows get. Default 1. */
|
|
1095
1426
|
shadowDarkness?: number;
|
|
1096
|
-
/** Shadow map resolution (texels per side). Default 2048. */
|
|
1427
|
+
/** Shadow map resolution (texels per side). Default 2048 (1024 for point). */
|
|
1097
1428
|
shadowMapSize?: number;
|
|
1098
1429
|
preset?: EnvironmentPreset;
|
|
1430
|
+
/** Equirectangular panorama for real HDRI IBL: a `.hdr` (Radiance RGBE) or `.exr` (OpenEXR) path, or the file's bytes. */
|
|
1431
|
+
hdri?: string | Uint8Array;
|
|
1099
1432
|
top?: string;
|
|
1100
1433
|
horizon?: string;
|
|
1101
1434
|
bottom?: string;
|
|
@@ -1105,6 +1438,18 @@ interface LightNode {
|
|
|
1105
1438
|
toneMapping?: ToneMapping;
|
|
1106
1439
|
fog?: EnvironmentFog;
|
|
1107
1440
|
floor?: EnvironmentFloor;
|
|
1441
|
+
/** Froxel-style volumetric participating media & shadowed light shafts (god rays). */
|
|
1442
|
+
volumetricFog?: boolean | EnvironmentVolumetricFog;
|
|
1443
|
+
/** Animatable / signal-driven override for volumetricFog.density. */
|
|
1444
|
+
volumetricFogDensity?: number;
|
|
1445
|
+
/** Animatable / signal-driven override for volumetricFog.anisotropy. */
|
|
1446
|
+
volumetricFogAnisotropy?: number;
|
|
1447
|
+
/** Animatable / signal-driven override for volumetricFog.noise.strength. */
|
|
1448
|
+
volumetricFogNoiseStrength?: number;
|
|
1449
|
+
/** Screen-space reflections of nearby geometry and emissives on glossy surfaces. */
|
|
1450
|
+
ssr?: boolean | EnvironmentSsr;
|
|
1451
|
+
/** Screen-space diffuse GI: occlusion and color bleeding from visible surfaces. */
|
|
1452
|
+
gi?: boolean | EnvironmentGi;
|
|
1108
1453
|
/** Optional depth/normal outlines, before depth of field and bloom. */
|
|
1109
1454
|
outlines?: boolean | GeometryOutlineOptions;
|
|
1110
1455
|
/** Glow around emissive surfaces and hot highlights: `true` or settings. */
|
|
@@ -1141,6 +1486,26 @@ interface Model3DNode {
|
|
|
1141
1486
|
specularIntensity?: number;
|
|
1142
1487
|
ambientIntensity?: number;
|
|
1143
1488
|
metallic?: number;
|
|
1489
|
+
emissive?: string;
|
|
1490
|
+
emissiveIntensity?: number;
|
|
1491
|
+
clearcoat?: number;
|
|
1492
|
+
clearcoatRoughness?: number;
|
|
1493
|
+
anisotropy?: number;
|
|
1494
|
+
anisotropyRotation?: number;
|
|
1495
|
+
subsurface?: number;
|
|
1496
|
+
subsurfaceColor?: string;
|
|
1497
|
+
sheen?: number;
|
|
1498
|
+
sheenColor?: string;
|
|
1499
|
+
sheenRoughness?: number;
|
|
1500
|
+
iridescence?: number | IridescenceConfig;
|
|
1501
|
+
iridescenceThickness?: number;
|
|
1502
|
+
iridescenceIor?: number;
|
|
1503
|
+
triplanar?: boolean | TriplanarConfig;
|
|
1504
|
+
triplanarScale?: number;
|
|
1505
|
+
triplanarSharpness?: number;
|
|
1506
|
+
toon?: ToonShading;
|
|
1507
|
+
outline?: boolean;
|
|
1508
|
+
castShadow?: boolean;
|
|
1144
1509
|
color?: string;
|
|
1145
1510
|
colorTint?: string;
|
|
1146
1511
|
opacity?: number;
|
|
@@ -1161,6 +1526,41 @@ interface Model3DNode {
|
|
|
1161
1526
|
instances3d?: unknown;
|
|
1162
1527
|
/** Layer3D.swarm GPU simulation and instancing options. */
|
|
1163
1528
|
swarm3d?: unknown;
|
|
1529
|
+
/** Layer3D.scatter: instances placed on another model's surface. */
|
|
1530
|
+
scatter3d?: Scatter3DSpec;
|
|
1531
|
+
/** Voronoi destruction: the mesh drawn as pieces posed by physics (`world.fracture`). */
|
|
1532
|
+
fracture3d?: Fracture3DSpec;
|
|
1533
|
+
/** Procedural wind sway (bends vertices downwind by height above the mesh base). */
|
|
1534
|
+
wind?: WindConfig;
|
|
1535
|
+
/** Any layer (image, video, layout) drawn each frame and wrapped onto the mesh by its UVs. */
|
|
1536
|
+
textureLayer?: {
|
|
1537
|
+
node: unknown;
|
|
1538
|
+
};
|
|
1539
|
+
/** Set by the compiler: the id of the hoisted texture layer. */
|
|
1540
|
+
textureLayerId?: string;
|
|
1541
|
+
/** Clips blended in order, each over the pose beneath by its weight (replaces animationName). */
|
|
1542
|
+
animationLayers?: ModelAnimationLayer[];
|
|
1543
|
+
/** Two-bone IK: limbs reach scene-space targets. */
|
|
1544
|
+
ik?: TwoBoneIkConstraint[];
|
|
1545
|
+
/** Joints (heads, eyes) turn toward scene-space targets. */
|
|
1546
|
+
lookAt?: LookAtConstraint[];
|
|
1547
|
+
/** Secondary motion simulated from frame 0 (capes, tails, hair). */
|
|
1548
|
+
springBones?: SpringBoneChain[];
|
|
1549
|
+
/** Joints posed directly by name (local Euler degrees, offsets), over the clips. */
|
|
1550
|
+
pose?: Record<string, JointPose>;
|
|
1551
|
+
/**
|
|
1552
|
+
* Blend shape weights by target name (glTF `extras.targetNames`; case is
|
|
1553
|
+
* ignored): `{ eyeBlinkLeft: blink, jawOpen: speech }`. Each value is a
|
|
1554
|
+
* number, `[[frame, v]]` keys, `(frame) => v` or a signal; it replaces the
|
|
1555
|
+
* clip's weight for that target.
|
|
1556
|
+
*/
|
|
1557
|
+
morphs?: Record<string, NumberTrack>;
|
|
1558
|
+
/** Bones pointed along scene directions, parents first (pose retargeting). */
|
|
1559
|
+
aim?: AimConstraint[];
|
|
1560
|
+
/** Joints driven by other joints, on top of any the model file declares (eyelids, twist bones). */
|
|
1561
|
+
drive?: JointDriver[];
|
|
1562
|
+
/** Instance nodes: every instance a skinned character on its own clip, phase and speed. */
|
|
1563
|
+
crowd?: CrowdConfig;
|
|
1164
1564
|
}
|
|
1165
1565
|
type LayoutNode = FlexNode | BlockNode | BoxNode | TextNode | MediaNode | ShapeNode | CameraNode | LightNode | Model3DNode;
|
|
1166
1566
|
declare const FlexNodeSchema: z.ZodType<FlexNode>;
|
|
@@ -1291,6 +1691,9 @@ declare function computeLayoutSync(yoga: Yoga, input: LayoutInput): LayoutResult
|
|
|
1291
1691
|
declare function computeLayout(input: LayoutInput): Promise<LayoutResult>;
|
|
1292
1692
|
//#endregion
|
|
1293
1693
|
//#region src/program/animation.d.ts
|
|
1694
|
+
/** Common 3D Euler rotation aliases accepted alongside `rotateX` / `rotateY` / `rotateZ`. */
|
|
1695
|
+
type AnimatablePropAlias = "rotationX" | "rotationY" | "rotationZ";
|
|
1696
|
+
type CanonicalAnimatableProp<P extends AnimatableProp | AnimatablePropAlias> = P extends "rotationX" ? "rotateX" : P extends "rotationY" ? "rotateY" : P extends "rotationZ" ? "rotateZ" : P;
|
|
1294
1697
|
/**
|
|
1295
1698
|
* One keyframe as a tuple: `[frame, value]` or `[frame, value, ease]`. The
|
|
1296
1699
|
* ease shapes the motion arriving at this keyframe from the one before.
|
|
@@ -1437,21 +1840,24 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
|
|
|
1437
1840
|
static stepped<P extends AnimatableProp = AnimatableProp>(frames?: number): LayerAnimation<P>;
|
|
1438
1841
|
/** See {@link LayerAnimation.stepped}. */
|
|
1439
1842
|
stepped(frames?: number): this;
|
|
1440
|
-
static fromTo<P extends AnimatableProp = AnimatableProp>(prop: P, fromValue: number | string | boolean, toValue: number | string | boolean, options?: FromToOptions): LayerAnimation<P
|
|
1843
|
+
static fromTo<P extends AnimatableProp | AnimatablePropAlias = AnimatableProp>(prop: P, fromValue: number | string | boolean, toValue: number | string | boolean, options?: FromToOptions): LayerAnimation<CanonicalAnimatableProp<P>>;
|
|
1441
1844
|
/** A track from a list of `[frame, value, ease?]` keyframes; see {@link LayerAnimation.keys}. */
|
|
1442
|
-
static keys<P extends AnimatableProp = AnimatableProp>(prop: P, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): LayerAnimation<P
|
|
1443
|
-
static signal<P extends AnimatableProp = AnimatableProp>(prop: P, signalOrHandleId: unknown, options?: SignalTrackOptions): LayerAnimation<P
|
|
1444
|
-
static colorSignal<P extends AnimatableProp = AnimatableProp>(prop: P, signalOrHandleId: unknown, options: ColorSignalOptions): LayerAnimation<P
|
|
1845
|
+
static keys<P extends AnimatableProp | AnimatablePropAlias = AnimatableProp>(prop: P, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): LayerAnimation<CanonicalAnimatableProp<P>>;
|
|
1846
|
+
static signal<P extends AnimatableProp | AnimatablePropAlias = AnimatableProp>(prop: P, signalOrHandleId: unknown, options?: SignalTrackOptions): LayerAnimation<CanonicalAnimatableProp<P>>;
|
|
1847
|
+
static colorSignal<P extends AnimatableProp | AnimatablePropAlias = AnimatableProp>(prop: P, signalOrHandleId: unknown, options: ColorSignalOptions): LayerAnimation<CanonicalAnimatableProp<P>>;
|
|
1445
1848
|
static kineticSweep(fromOffset?: number, toOffset?: number, startFrame?: number, endFrame?: number, ease?: string | EaseRef): LayerAnimation;
|
|
1446
1849
|
static typewriter(startFrame?: number, endFrame?: number, ease?: string | EaseRef): LayerAnimation;
|
|
1447
1850
|
static letterSpacing(fromSpacing: number, toSpacing: number, startFrame?: number, endFrame?: number, ease?: string | EaseRef): LayerAnimation;
|
|
1448
|
-
static wiggle(prop: AnimatableProp, options?: WiggleOptions): LayerAnimation;
|
|
1449
|
-
static spring(prop: AnimatableProp, options?: SpringOptions): LayerAnimation;
|
|
1851
|
+
static wiggle(prop: AnimatableProp | AnimatablePropAlias, options?: WiggleOptions): LayerAnimation;
|
|
1852
|
+
static spring(prop: AnimatableProp | AnimatablePropAlias, options?: SpringOptions): LayerAnimation;
|
|
1450
1853
|
static firstMargin(fromMargin: number, toMargin: number, options?: FromToOptions): LayerAnimation;
|
|
1451
1854
|
static strokeWidth(fromWidth: number, toWidth: number, options?: FromToOptions): LayerAnimation;
|
|
1452
1855
|
static rotateX(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
|
|
1453
1856
|
static rotateY(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
|
|
1454
1857
|
static rotateZ(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
|
|
1858
|
+
static rotationX(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
|
|
1859
|
+
static rotationY(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
|
|
1860
|
+
static rotationZ(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
|
|
1455
1861
|
static rotation(fromAngle: number, toAngle: number, options?: FromToOptions): LayerAnimation;
|
|
1456
1862
|
static scale(fromScale: number, toScale: number, options?: FromToOptions): LayerAnimation;
|
|
1457
1863
|
static scaleX(fromScale: number, toScale: number, options?: FromToOptions): LayerAnimation;
|
|
@@ -1462,32 +1868,32 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
|
|
|
1462
1868
|
* - `-1`: loops indefinitely.
|
|
1463
1869
|
* - `N`: repeats N times after the initial iteration (total N + 1 iterations).
|
|
1464
1870
|
*/
|
|
1465
|
-
repeat(count?: number, prop?: AnimatableProp): this;
|
|
1871
|
+
repeat(count?: number, prop?: AnimatableProp | AnimatablePropAlias): this;
|
|
1466
1872
|
/**
|
|
1467
1873
|
* Enables or disables yoyo (alternate playback direction on each repeat iteration).
|
|
1468
1874
|
*/
|
|
1469
|
-
yoyo(enable?: boolean, prop?: AnimatableProp): this;
|
|
1875
|
+
yoyo(enable?: boolean, prop?: AnimatableProp | AnimatablePropAlias): this;
|
|
1470
1876
|
/**
|
|
1471
1877
|
* Shorthand to loop keyframed animation continuously (infinite repeat).
|
|
1472
1878
|
* If `options.yoyo` is true, oscillates back and forth.
|
|
1473
1879
|
*/
|
|
1474
1880
|
loop(options?: {
|
|
1475
1881
|
yoyo?: boolean;
|
|
1476
|
-
}, prop?: AnimatableProp): this;
|
|
1882
|
+
}, prop?: AnimatableProp | AnimatablePropAlias): this;
|
|
1477
1883
|
/**
|
|
1478
1884
|
* Creates a keyframed track animating from fromValue to toValue.
|
|
1479
1885
|
*/
|
|
1480
|
-
fromTo(
|
|
1886
|
+
fromTo(rawProp: AnimatableProp | AnimatablePropAlias, fromValue: number | string | boolean, toValue: number | string | boolean, options?: FromToOptions): this;
|
|
1481
1887
|
/**
|
|
1482
1888
|
* Appends a keyframe to an existing track for prop, or creates a new track.
|
|
1483
1889
|
*/
|
|
1484
|
-
keyframe(
|
|
1890
|
+
keyframe(rawProp: AnimatableProp | AnimatablePropAlias, frame: number, value: number | string | boolean, ease?: string | EaseRef): this;
|
|
1485
1891
|
/**
|
|
1486
1892
|
* Adds several keyframes to prop's track at once:
|
|
1487
1893
|
* `.keys("scale", [[0, 0], [12, 1.1, "back.out"], [20, 1]])`.
|
|
1488
1894
|
* Frames are rounded to whole frames, so beat math can be passed straight in.
|
|
1489
1895
|
*/
|
|
1490
|
-
keys(
|
|
1896
|
+
keys(rawProp: AnimatableProp | AnimatablePropAlias, keyframes: readonly KeyframeTuple[], options?: TrackKeyOptions): this;
|
|
1491
1897
|
/**
|
|
1492
1898
|
* Animates opacity from 0 to 1 between startFrame and endFrame.
|
|
1493
1899
|
*/
|
|
@@ -1541,6 +1947,12 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
|
|
|
1541
1947
|
* Animate rotateZ from fromAngle to toAngle.
|
|
1542
1948
|
*/
|
|
1543
1949
|
rotateZ(fromAngle: number, toAngle: number, options?: FromToOptions): this;
|
|
1950
|
+
/** Alias for {@link rotateX}. */
|
|
1951
|
+
rotationX(fromAngle: number, toAngle: number, options?: FromToOptions): this;
|
|
1952
|
+
/** Alias for {@link rotateY}. */
|
|
1953
|
+
rotationY(fromAngle: number, toAngle: number, options?: FromToOptions): this;
|
|
1954
|
+
/** Alias for {@link rotateZ}. */
|
|
1955
|
+
rotationZ(fromAngle: number, toAngle: number, options?: FromToOptions): this;
|
|
1544
1956
|
/**
|
|
1545
1957
|
* Animate scale along the X axis.
|
|
1546
1958
|
*/
|
|
@@ -1573,20 +1985,20 @@ declare class LayerAnimation<TProp extends AnimatableProp = AnimatableProp> impl
|
|
|
1573
1985
|
* registered with the program automatically — or the name of a signal
|
|
1574
1986
|
* registered with `comp.addSignal(name, signal)`.
|
|
1575
1987
|
*/
|
|
1576
|
-
signal(
|
|
1988
|
+
signal(rawProp: AnimatableProp | AnimatablePropAlias, signalOrHandleId: unknown, options?: SignalTrackOptions): this;
|
|
1577
1989
|
/**
|
|
1578
1990
|
* Modulates color interpolation based on an active signal (object or
|
|
1579
1991
|
* registered name, as in {@link LayerAnimation.signal}).
|
|
1580
1992
|
*/
|
|
1581
|
-
colorSignal(
|
|
1993
|
+
colorSignal(rawProp: AnimatableProp | AnimatablePropAlias, signalOrHandleId: unknown, options: ColorSignalOptions): this;
|
|
1582
1994
|
/**
|
|
1583
1995
|
* Adds organic Perlin noise wiggling to a property.
|
|
1584
1996
|
*/
|
|
1585
|
-
wiggle(
|
|
1997
|
+
wiggle(rawProp: AnimatableProp | AnimatablePropAlias, options?: WiggleOptions): this;
|
|
1586
1998
|
/**
|
|
1587
1999
|
* Adds physical harmonic spring overshoot behavior to a property transition.
|
|
1588
2000
|
*/
|
|
1589
|
-
spring(
|
|
2001
|
+
spring(rawProp: AnimatableProp | AnimatablePropAlias, options?: SpringOptions): this;
|
|
1590
2002
|
/**
|
|
1591
2003
|
* Follows a 2D or 3D path with constant arc-length velocity, automatic orientation,
|
|
1592
2004
|
* banking into turns, and optional easing.
|
|
@@ -1720,14 +2132,26 @@ interface LintOptions {
|
|
|
1720
2132
|
* the emoji would draw nothing. Unknown (omitted): not checked.
|
|
1721
2133
|
*/
|
|
1722
2134
|
emojiFont?: boolean;
|
|
2135
|
+
/**
|
|
2136
|
+
* Share of a scatter's surface area its slope and altitude filters keep
|
|
2137
|
+
* (0..1), or undefined when the surface can't be measured here (a model
|
|
2138
|
+
* file not loaded yet). framefields passes the real mesher; this module
|
|
2139
|
+
* has no geometry of its own.
|
|
2140
|
+
*/
|
|
2141
|
+
scatterCoverage?: (scatter: Scatter3DSpec) => number | undefined;
|
|
1723
2142
|
}
|
|
1724
2143
|
declare function lintComposition(config: Pick<CompositorProgramConfig, "width" | "height" | "layout"> & {
|
|
1725
2144
|
backgroundColor?: string;
|
|
1726
2145
|
}, options?: LintOptions): RenderDiagnostic[];
|
|
1727
2146
|
//#endregion
|
|
1728
2147
|
//#region src/program/mattes.d.ts
|
|
1729
|
-
/**
|
|
1730
|
-
|
|
2148
|
+
/** The picture a mesh's UVs read: the frame's size from the top-left corner unless placed. */
|
|
2149
|
+
interface HoistOptions {
|
|
2150
|
+
width?: number;
|
|
2151
|
+
height?: number;
|
|
2152
|
+
}
|
|
2153
|
+
/** Returns the tree with every `matte`, `relief` and `textureLayer` turned into a sibling companion layer. */
|
|
2154
|
+
declare function hoistMattes<T extends LayoutNode>(nodes: readonly T[], size?: HoistOptions): T[];
|
|
1731
2155
|
//#endregion
|
|
1732
2156
|
//#region src/program/media-signal.d.ts
|
|
1733
2157
|
/** Where a signal-driven media layer sits on the composition clock. */
|
|
@@ -1944,158 +2368,428 @@ declare function compositorToProgram(config: CompositorProgramConfig, options: C
|
|
|
1944
2368
|
* Recursively gather every node op from a render tree (in order), stopping at
|
|
1945
2369
|
* nested scene compositions: their layers belong to their own render.
|
|
1946
2370
|
*/
|
|
1947
|
-
declare function collectNodeOps(nodes: VirtualMediaData[]): VirtualMediaData[];
|
|
1948
|
-
//#endregion
|
|
1949
|
-
//#region src/program/validate.d.ts
|
|
1950
|
-
//#endregion
|
|
1951
|
-
//#region ../components/dist/toolkit-HF1uj72e.d.mts
|
|
1952
|
-
//#region src/core/audio.d.ts
|
|
1953
|
-
|
|
1954
|
-
/** A track's spectrum and loudness per frame, every value 0–1. */
|
|
1955
|
-
interface AudioLevels {
|
|
1956
|
-
fps: number;
|
|
1957
|
-
/** Length in frames. */
|
|
1958
|
-
frames: number;
|
|
1959
|
-
/** `[band][frame]`, low → high frequencies. */
|
|
1960
|
-
bands: number[][];
|
|
1961
|
-
/** Loudness envelope, `[frame]`. */
|
|
1962
|
-
level: number[];
|
|
1963
|
-
/** Onset frames (kicks, plosives), from low-band flux. */
|
|
1964
|
-
beats: number[];
|
|
1965
|
-
}
|
|
1966
|
-
interface AnalyzeOptions {
|
|
1967
|
-
/** Frame rate of the composition. Default 30. */
|
|
1968
|
-
fps?: number;
|
|
1969
|
-
/** Log-spaced bands. Default 32. */
|
|
1970
|
-
bands?: number;
|
|
1971
|
-
/** Lowest band edge, Hz. Default 50. */
|
|
1972
|
-
minHz?: number;
|
|
1973
|
-
/** Highest band edge, Hz. Default 12 000 (or Nyquist). */
|
|
1974
|
-
maxHz?: number;
|
|
1975
|
-
}
|
|
1976
|
-
/** Band edges in Hz, log-spaced. */
|
|
1977
|
-
declare function bandEdges(count: number, minHz: number, maxHz: number): number[];
|
|
1978
2371
|
/**
|
|
1979
|
-
*
|
|
1980
|
-
*
|
|
1981
|
-
*
|
|
1982
|
-
* envelope, and onsets from low-band spectral flux.
|
|
2372
|
+
* Every layer, 3D scenes' layers included, with its start on the
|
|
2373
|
+
* composition's clock. A scene's layers run on the scene's own clock, which
|
|
2374
|
+
* starts where the scene's layer does, so their starts are offset by it.
|
|
1983
2375
|
*/
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
declare function resampleBands(bands: readonly (readonly number[])[], count: number): number[][];
|
|
1987
|
-
/** Each value falls no faster than `release` frames from its peak (attack is instant). */
|
|
1988
|
-
declare function smoothRelease(values: readonly number[], release: number): number[];
|
|
1989
|
-
/** The schema for `AudioLevels` props (Waveform, Captions `pulse`). */
|
|
1990
|
-
declare function audioLevelsSchema(): z.ZodType<AudioLevels>;
|
|
2376
|
+
|
|
2377
|
+
declare function collectNodeOps(nodes: VirtualMediaData[]): VirtualMediaData[];
|
|
1991
2378
|
//#endregion
|
|
1992
|
-
//#region src/
|
|
1993
|
-
/**
|
|
1994
|
-
* Turn per-frame values into a few linear keyframes. Components solve motion
|
|
1995
|
-
* offline (springs, camera follow, arc-length travel) and bake it, so the
|
|
1996
|
-
* output stays plain keyframe JSON that seeks exactly.
|
|
1997
|
-
*/
|
|
1998
|
-
/** `[frame, value]`: a linear keyframe, as `LayerAnimation.keys` takes it. */
|
|
1999
|
-
type BakedKey = [frame: number, value: number];
|
|
2000
|
-
interface BakeOptions {
|
|
2001
|
-
/** Max deviation (in the value's units) of the simplified curve. Default 0.25. */
|
|
2002
|
-
tolerance?: number;
|
|
2003
|
-
}
|
|
2004
|
-
/**
|
|
2005
|
-
* Simplify `values` (one per frame, starting at `startFrame`) to linear keys
|
|
2006
|
-
* whose interpolation stays within `tolerance` of every sample
|
|
2007
|
-
* (Ramer–Douglas–Peucker on the frame/value polyline). First and last
|
|
2008
|
-
* samples are always kept.
|
|
2009
|
-
*/
|
|
2010
|
-
declare function bakeSamples(values: readonly number[], startFrame?: number, options?: BakeOptions): BakedKey[];
|
|
2011
|
-
/** Sample `fn` on every frame in [start, end] and bake it. */
|
|
2012
|
-
declare function bakeFunction(fn: (frame: number) => number, start: number, end: number, options?: BakeOptions): BakedKey[];
|
|
2013
|
-
/**
|
|
2014
|
-
* Damped spring from 0 to 1 in closed form: `stiffness` (k), `damping` (c),
|
|
2015
|
-
* `mass` (m), sampled in seconds. Under-damped springs overshoot.
|
|
2016
|
-
*/
|
|
2017
|
-
declare function springAt(seconds: number, {
|
|
2018
|
-
stiffness,
|
|
2019
|
-
damping,
|
|
2020
|
-
mass
|
|
2021
|
-
}?: {
|
|
2022
|
-
stiffness?: number | undefined;
|
|
2023
|
-
damping?: number | undefined;
|
|
2024
|
-
mass?: number | undefined;
|
|
2025
|
-
}): number;
|
|
2026
|
-
/**
|
|
2027
|
-
* Frames until a spring stays within `epsilon` of rest, at `fps`; capped at
|
|
2028
|
-
* `max` frames.
|
|
2029
|
-
*/
|
|
2030
|
-
declare function springSettleFrames(fps: number, options?: Parameters<typeof springAt>[1], epsilon?: number, max?: number): number;
|
|
2379
|
+
//#region src/program/track-sampler.d.ts
|
|
2031
2380
|
/**
|
|
2032
|
-
*
|
|
2033
|
-
*
|
|
2034
|
-
*/
|
|
2035
|
-
declare function springKeys(start: number, from: number, to: number, fps: number, options?: Parameters<typeof springAt>[1], tolerance?: number): BakedKey[];
|
|
2036
|
-
/**
|
|
2037
|
-
* Per-frame values (frames 0…`length`) that spring to each new target from
|
|
2038
|
-
* wherever they are: a retarget mid-flight starts from the current value
|
|
2039
|
-
* (velocity isn't carried over). Bake with `bakeSamples` or bind as a signal.
|
|
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].
|
|
2040
2383
|
*/
|
|
2041
|
-
declare function springTrack(changes: ReadonlyArray<readonly [frame: number, target: number]>, initial: number, length: number, fps: number, options?: {
|
|
2042
|
-
stiffness: number;
|
|
2043
|
-
damping: number;
|
|
2044
|
-
}): number[];
|
|
2045
2384
|
//#endregion
|
|
2046
|
-
//#region
|
|
2385
|
+
//#region ../components/dist/typing-c419Mp0t.d.mts
|
|
2386
|
+
//#region src/core/path.d.ts
|
|
2047
2387
|
/**
|
|
2048
|
-
*
|
|
2049
|
-
*
|
|
2050
|
-
* space syntax) and `white` / `black` / `transparent`. Anything else (a
|
|
2051
|
-
* gradient, `oklch()`, a CSS variable) passes through untouched where a
|
|
2052
|
-
* function returns a color, and counts as unknown where it returns a number.
|
|
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.
|
|
2053
2390
|
*/
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
declare function parseColor(color: string): Rgba | null;
|
|
2058
|
-
/** `color` at `alpha` (replacing its own); unknown formats pass through. */
|
|
2059
|
-
declare function withAlpha(color: string, alpha: number): string;
|
|
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;
|
|
2060
2394
|
/**
|
|
2061
|
-
*
|
|
2062
|
-
*
|
|
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.
|
|
2063
2398
|
*/
|
|
2064
|
-
declare function
|
|
2065
|
-
/**
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
/**
|
|
2070
|
-
|
|
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;
|
|
2071
2412
|
/**
|
|
2072
|
-
*
|
|
2073
|
-
*
|
|
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.
|
|
2074
2416
|
*/
|
|
2075
|
-
declare function
|
|
2076
|
-
/** Whichever of `light` / `dark` ink reads better on `background`. */
|
|
2077
|
-
declare function inkOn(background: string, light?: string, dark?: string): string;
|
|
2417
|
+
declare function transformPathData(d: string, scale: number, dx?: number, dy?: number): string;
|
|
2078
2418
|
//#endregion
|
|
2079
|
-
//#region src/core/
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
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;
|
|
2084
2430
|
}
|
|
2431
|
+
/** Keys for `trimEnd` 0 → 1 between `start` and `start + duration`. */
|
|
2432
|
+
declare function drawOnKeys(start: number, duration: number, ease?: string): KeyframeTuple[];
|
|
2085
2433
|
/**
|
|
2086
|
-
*
|
|
2087
|
-
*
|
|
2434
|
+
* Perturb points with seeded, low-frequency noise: neighbouring points move
|
|
2435
|
+
* together, so lines bend instead of jittering.
|
|
2088
2436
|
*/
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2437
|
+
declare function wobblePoints(points: readonly Vec2$1[], {
|
|
2438
|
+
wobble,
|
|
2439
|
+
seed
|
|
2440
|
+
}?: HandOptions, variant?: number): Vec2$1[];
|
|
2441
|
+
/** An ellipse around `rect` (+ padding); hand-drawn ellipses overshoot their start. */
|
|
2442
|
+
declare function ellipsePath(rect: Rect, {
|
|
2443
|
+
padding,
|
|
2444
|
+
wobble,
|
|
2445
|
+
seed
|
|
2446
|
+
}?: HandOptions & {
|
|
2447
|
+
padding?: number;
|
|
2448
|
+
}, variant?: number): string;
|
|
2449
|
+
/** A rectangle around `rect` (+ padding). */
|
|
2450
|
+
declare function boxPath(rect: Rect, {
|
|
2451
|
+
padding,
|
|
2452
|
+
wobble,
|
|
2453
|
+
seed
|
|
2454
|
+
}?: HandOptions & {
|
|
2455
|
+
padding?: number;
|
|
2456
|
+
}, variant?: number): string;
|
|
2457
|
+
/** A horizontal stroke from `from` to `to`. */
|
|
2458
|
+
declare function linePath(from: Vec2$1, to: Vec2$1, {
|
|
2459
|
+
wobble,
|
|
2460
|
+
seed
|
|
2461
|
+
}?: HandOptions, variant?: number): string;
|
|
2462
|
+
/** A wavy line from `from` to `to`, `waves` crests of `amplitude` px. */
|
|
2463
|
+
declare function squigglePath(from: Vec2$1, to: Vec2$1, {
|
|
2464
|
+
amplitude,
|
|
2465
|
+
waves,
|
|
2466
|
+
wobble,
|
|
2467
|
+
seed
|
|
2468
|
+
}?: HandOptions & {
|
|
2469
|
+
amplitude?: number;
|
|
2470
|
+
waves?: number;
|
|
2471
|
+
}, variant?: number): string;
|
|
2472
|
+
type ArrowCurve = "straight" | "arc" | "swoop";
|
|
2473
|
+
interface ArrowGeometry {
|
|
2474
|
+
/** The shaft, drawn from `from` to just before `to`. */
|
|
2475
|
+
shaft: string;
|
|
2476
|
+
/** The head, two strokes meeting at `to`. */
|
|
2477
|
+
head: string;
|
|
2478
|
+
}
|
|
2479
|
+
/** An arrow from `from` to `to` with a separate head path. */
|
|
2480
|
+
declare function arrowPaths(from: Vec2$1, to: Vec2$1, {
|
|
2481
|
+
curve,
|
|
2482
|
+
headSize,
|
|
2483
|
+
wobble,
|
|
2484
|
+
seed
|
|
2485
|
+
}?: HandOptions & {
|
|
2486
|
+
curve?: ArrowCurve;
|
|
2487
|
+
headSize?: number;
|
|
2488
|
+
}, variant?: number): ArrowGeometry;
|
|
2489
|
+
/**
|
|
2490
|
+
* Hand-drawn "boil": `d` keys that switch between `variants` poses every
|
|
2491
|
+
* `every` frames with hold interpolation, from `start` to `end`.
|
|
2492
|
+
* `makePath(variant)` must be deterministic for a variant index.
|
|
2493
|
+
*/
|
|
2494
|
+
declare function boilKeys(makePath: (variant: number) => string, {
|
|
2495
|
+
start,
|
|
2496
|
+
end,
|
|
2497
|
+
every,
|
|
2498
|
+
variants
|
|
2499
|
+
}: {
|
|
2500
|
+
start: number;
|
|
2501
|
+
end: number;
|
|
2502
|
+
every: number;
|
|
2503
|
+
variants?: number;
|
|
2504
|
+
}): KeyframeTuple[];
|
|
2505
|
+
//#endregion
|
|
2506
|
+
//#region src/core/text.d.ts
|
|
2507
|
+
/** The subset of `FontManager.measure` options components pass. */
|
|
2508
|
+
interface MeasureOptions {
|
|
2509
|
+
fontFamily: string;
|
|
2510
|
+
fontSize?: number;
|
|
2511
|
+
fontWeight?: string | number;
|
|
2512
|
+
letterSpacing?: number;
|
|
2513
|
+
lineHeight?: number;
|
|
2514
|
+
width?: number;
|
|
2515
|
+
align?: "left" | "center" | "right";
|
|
2516
|
+
direction?: "ltr" | "rtl" | "auto";
|
|
2517
|
+
}
|
|
2518
|
+
interface GlyphBox {
|
|
2519
|
+
char: string;
|
|
2520
|
+
index: number;
|
|
2521
|
+
x: number;
|
|
2522
|
+
width: number;
|
|
2523
|
+
line: number;
|
|
2524
|
+
rtl?: boolean;
|
|
2525
|
+
}
|
|
2526
|
+
/** The subset of `FontManager.measure` results components read. */
|
|
2527
|
+
interface Metrics$1 {
|
|
2528
|
+
width: number;
|
|
2529
|
+
height: number;
|
|
2530
|
+
lines: number;
|
|
2531
|
+
lineHeight: number;
|
|
2532
|
+
glyphs: GlyphBox[];
|
|
2533
|
+
caretX(count: number): number;
|
|
2534
|
+
}
|
|
2535
|
+
type MeasureFn = (text: string, options: MeasureOptions) => Metrics$1;
|
|
2536
|
+
interface WordRange {
|
|
2537
|
+
text: string;
|
|
2538
|
+
/** Index of the first character (code units). */
|
|
2539
|
+
start: number;
|
|
2540
|
+
/** Index after the last character. */
|
|
2541
|
+
end: number;
|
|
2542
|
+
index: number;
|
|
2543
|
+
}
|
|
2544
|
+
/** Whitespace-separated words with their character ranges. */
|
|
2545
|
+
declare function wordRanges(text: string): WordRange[];
|
|
2546
|
+
/** Character range of the `nth` match of `match` in `text`, or null. */
|
|
2547
|
+
declare function findRange(text: string, match: string | RegExp, nth?: number): [number, number] | null;
|
|
2548
|
+
/**
|
|
2549
|
+
* Per-line x offset that `align` adds inside a box of `options.width`
|
|
2550
|
+
* (measurement itself lays every line out from the left edge).
|
|
2551
|
+
*/
|
|
2552
|
+
declare function lineShift(metrics: Metrics$1, line: number, options: MeasureOptions): number;
|
|
2553
|
+
/**
|
|
2554
|
+
* The boxes characters [start, end) cover: one rect per line, spanning the
|
|
2555
|
+
* glyphs' advances, `lineHeight` tall. Whitespace at a line's ends is
|
|
2556
|
+
* excluded.
|
|
2557
|
+
*/
|
|
2558
|
+
declare function rangeRects(metrics: Metrics$1, start: number, end: number, options: MeasureOptions): Rect[];
|
|
2559
|
+
//#endregion
|
|
2560
|
+
//#region src/core/targets.d.ts
|
|
2561
|
+
type Anchor = "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right"
|
|
2562
|
+
/** Where a pointer should land: the centre, or mid-left for text. */ | "tip";
|
|
2563
|
+
/** A node as targets read it: absolute numeric geometry, or text. */
|
|
2564
|
+
interface TargetNode {
|
|
2565
|
+
id?: string;
|
|
2566
|
+
kind?: string;
|
|
2567
|
+
x?: unknown;
|
|
2568
|
+
y?: unknown;
|
|
2569
|
+
width?: unknown;
|
|
2570
|
+
height?: unknown;
|
|
2571
|
+
text?: unknown;
|
|
2572
|
+
content?: unknown;
|
|
2573
|
+
[key: string]: unknown;
|
|
2574
|
+
}
|
|
2575
|
+
/** The frame context signals are read with. */
|
|
2576
|
+
interface FrameContextLike {
|
|
2577
|
+
frame: number;
|
|
2578
|
+
fps: number;
|
|
2579
|
+
time: number;
|
|
2580
|
+
duration: number;
|
|
2581
|
+
durationMs: number;
|
|
2582
|
+
progress: number;
|
|
2583
|
+
deltaTime: number;
|
|
2584
|
+
}
|
|
2585
|
+
/** A per-frame value: a signal (what tracked objects expose) or a function. */
|
|
2586
|
+
type FrameValue = {
|
|
2587
|
+
get(ctx?: FrameContextLike): number;
|
|
2588
|
+
} | ((frame: number) => number);
|
|
2589
|
+
interface TrackedObjectLike {
|
|
2590
|
+
x: FrameValue;
|
|
2591
|
+
y: FrameValue;
|
|
2592
|
+
width: FrameValue;
|
|
2593
|
+
height: FrameValue;
|
|
2594
|
+
}
|
|
2595
|
+
type Target = Vec2$1 | Rect | {
|
|
2596
|
+
node: TargetNode;
|
|
2597
|
+
anchor?: Anchor;
|
|
2598
|
+
} | {
|
|
2599
|
+
text: TargetNode;
|
|
2600
|
+
match?: string | RegExp;
|
|
2601
|
+
range?: [number, number];
|
|
2602
|
+
nth?: number;
|
|
2603
|
+
anchor?: Anchor;
|
|
2604
|
+
} | {
|
|
2605
|
+
track: TrackedObjectLike;
|
|
2606
|
+
anchor?: Anchor;
|
|
2607
|
+
} | ((frame: number) => Vec2$1 | Rect);
|
|
2608
|
+
interface TargetContext {
|
|
2609
|
+
measure?: MeasureFn;
|
|
2610
|
+
/** Frame rate signals are sampled at (tracked targets). Default 30. */
|
|
2611
|
+
fps?: number;
|
|
2612
|
+
/** Font defaults for text nodes that don't set them. */
|
|
2613
|
+
textDefaults?: Partial<MeasureOptions>;
|
|
2614
|
+
}
|
|
2615
|
+
type ResolvedTarget = {
|
|
2616
|
+
kind: "static";
|
|
2617
|
+
rects: Rect[];
|
|
2618
|
+
anchor: Anchor;
|
|
2619
|
+
} | {
|
|
2620
|
+
kind: "dynamic";
|
|
2621
|
+
at: (frame: number) => Rect;
|
|
2622
|
+
anchor: Anchor;
|
|
2623
|
+
};
|
|
2624
|
+
/** Resolve a target to rects (static) or a per-frame rect (dynamic). */
|
|
2625
|
+
declare function resolveTarget(target: Target, ctx?: TargetContext): ResolvedTarget;
|
|
2626
|
+
/** A text target's string, measured glyphs and range, and where the node sits. */
|
|
2627
|
+
interface TextLayout {
|
|
2628
|
+
content: string;
|
|
2629
|
+
metrics: ReturnType<MeasureFn>;
|
|
2630
|
+
options: MeasureOptions;
|
|
2631
|
+
range: [number, number];
|
|
2632
|
+
/** The node's x / y: add to measured glyph positions. */
|
|
2633
|
+
x: number;
|
|
2634
|
+
y: number;
|
|
2635
|
+
}
|
|
2636
|
+
/** Measure a text target the way the renderer lays it out. */
|
|
2637
|
+
declare function textLayout(target: Extract<Target, {
|
|
2638
|
+
text: TargetNode;
|
|
2639
|
+
}>, ctx: TargetContext): TextLayout;
|
|
2640
|
+
/** The union rect of `rects`. */
|
|
2641
|
+
declare function boundsOf(rects: readonly Rect[]): Rect;
|
|
2642
|
+
/** The point of `rect` named by `anchor`. `tip` on text = start of the first line, mid-height. */
|
|
2643
|
+
declare function anchorPoint(rect: Rect, anchor?: Anchor, isText?: boolean): Vec2$1;
|
|
2644
|
+
/** The point a resolved target names at `frame` (static targets ignore frame). */
|
|
2645
|
+
declare function targetPoint(resolved: ResolvedTarget, frame?: number, isText?: boolean): Vec2$1;
|
|
2646
|
+
//#endregion
|
|
2647
|
+
//#region src/core/audio.d.ts
|
|
2648
|
+
/** A track's spectrum and loudness per frame, every value 0–1. */
|
|
2649
|
+
interface AudioLevels {
|
|
2650
|
+
fps: number;
|
|
2651
|
+
/** Length in frames. */
|
|
2652
|
+
frames: number;
|
|
2653
|
+
/** `[band][frame]`, low → high frequencies. */
|
|
2654
|
+
bands: number[][];
|
|
2655
|
+
/** Loudness envelope, `[frame]`. */
|
|
2656
|
+
level: number[];
|
|
2657
|
+
/** Onset frames (kicks, plosives), from low-band flux. */
|
|
2658
|
+
beats: number[];
|
|
2659
|
+
}
|
|
2660
|
+
interface AnalyzeOptions {
|
|
2661
|
+
/** Frame rate of the composition. Default 30. */
|
|
2662
|
+
fps?: number;
|
|
2663
|
+
/** Log-spaced bands. Default 32. */
|
|
2664
|
+
bands?: number;
|
|
2665
|
+
/** Lowest band edge, Hz. Default 50. */
|
|
2666
|
+
minHz?: number;
|
|
2667
|
+
/** Highest band edge, Hz. Default 12 000 (or Nyquist). */
|
|
2668
|
+
maxHz?: number;
|
|
2669
|
+
}
|
|
2670
|
+
/** Band edges in Hz, log-spaced. */
|
|
2671
|
+
declare function bandEdges(count: number, minHz: number, maxHz: number): number[];
|
|
2672
|
+
/**
|
|
2673
|
+
* Analyse decoded audio: a Hann-windowed FFT per frame into log-spaced
|
|
2674
|
+
* bands, each normalised to its own 98th percentile (floored 30 dB under the
|
|
2675
|
+
* loudest band's, so a quiet band is not stretched into noise), an RMS level
|
|
2676
|
+
* envelope, and onsets from low-band spectral flux.
|
|
2677
|
+
*/
|
|
2678
|
+
declare function analyzeChannels(channels: readonly Float32Array[], sampleRate: number, options?: AnalyzeOptions): AudioLevels;
|
|
2679
|
+
/** Average adjacent bands down (or repeat them up) to `count` bands. */
|
|
2680
|
+
declare function resampleBands(bands: readonly (readonly number[])[], count: number): number[][];
|
|
2681
|
+
/** Each value falls no faster than `release` frames from its peak (attack is instant). */
|
|
2682
|
+
declare function smoothRelease(values: readonly number[], release: number): number[];
|
|
2683
|
+
/** The schema for `AudioLevels` props (Waveform, Captions `pulse`). */
|
|
2684
|
+
declare function audioLevelsSchema(): z.ZodType<AudioLevels>;
|
|
2685
|
+
//#endregion
|
|
2686
|
+
//#region src/core/bake.d.ts
|
|
2687
|
+
/**
|
|
2688
|
+
* Turn per-frame values into a few linear keyframes. Components solve motion
|
|
2689
|
+
* offline (springs, camera follow, arc-length travel) and bake it, so the
|
|
2690
|
+
* output stays plain keyframe JSON that seeks exactly.
|
|
2691
|
+
*/
|
|
2692
|
+
/** `[frame, value]`: a linear keyframe, as `LayerAnimation.keys` takes it. */
|
|
2693
|
+
type BakedKey = [frame: number, value: number];
|
|
2694
|
+
interface BakeOptions {
|
|
2695
|
+
/** Max deviation (in the value's units) of the simplified curve. Default 0.25. */
|
|
2696
|
+
tolerance?: number;
|
|
2697
|
+
}
|
|
2698
|
+
/**
|
|
2699
|
+
* Simplify `values` (one per frame, starting at `startFrame`) to linear keys
|
|
2700
|
+
* whose interpolation stays within `tolerance` of every sample
|
|
2701
|
+
* (Ramer–Douglas–Peucker on the frame/value polyline). First and last
|
|
2702
|
+
* samples are always kept.
|
|
2703
|
+
*/
|
|
2704
|
+
declare function bakeSamples(values: readonly number[], startFrame?: number, options?: BakeOptions): BakedKey[];
|
|
2705
|
+
/** Sample `fn` on every frame in [start, end] and bake it. */
|
|
2706
|
+
declare function bakeFunction(fn: (frame: number) => number, start: number, end: number, options?: BakeOptions): BakedKey[];
|
|
2707
|
+
/**
|
|
2708
|
+
* Damped spring from 0 to 1 in closed form: `stiffness` (k), `damping` (c),
|
|
2709
|
+
* `mass` (m), sampled in seconds. Under-damped springs overshoot.
|
|
2710
|
+
*/
|
|
2711
|
+
declare function springAt(seconds: number, {
|
|
2712
|
+
stiffness,
|
|
2713
|
+
damping,
|
|
2714
|
+
mass
|
|
2715
|
+
}?: {
|
|
2716
|
+
stiffness?: number | undefined;
|
|
2717
|
+
damping?: number | undefined;
|
|
2718
|
+
mass?: number | undefined;
|
|
2719
|
+
}): number;
|
|
2720
|
+
/**
|
|
2721
|
+
* Frames until a spring stays within `epsilon` of rest, at `fps`; capped at
|
|
2722
|
+
* `max` frames.
|
|
2723
|
+
*/
|
|
2724
|
+
declare function springSettleFrames(fps: number, options?: Parameters<typeof springAt>[1], epsilon?: number, max?: number): number;
|
|
2725
|
+
/**
|
|
2726
|
+
* A spring from `from` to `to` starting at frame `start`, baked to linear
|
|
2727
|
+
* keys (within `tolerance`, default 0.2 % of the distance).
|
|
2728
|
+
*/
|
|
2729
|
+
declare function springKeys(start: number, from: number, to: number, fps: number, options?: Parameters<typeof springAt>[1], tolerance?: number): BakedKey[];
|
|
2730
|
+
/**
|
|
2731
|
+
* Per-frame values (frames 0…`length`) that spring to each new target from
|
|
2732
|
+
* wherever they are: a retarget mid-flight starts from the current value
|
|
2733
|
+
* (velocity isn't carried over). Bake with `bakeSamples` or bind as a signal.
|
|
2734
|
+
*/
|
|
2735
|
+
declare function springTrack(changes: ReadonlyArray<readonly [frame: number, target: number]>, initial: number, length: number, fps: number, options?: {
|
|
2736
|
+
stiffness: number;
|
|
2737
|
+
damping: number;
|
|
2738
|
+
}): number[];
|
|
2739
|
+
//#endregion
|
|
2740
|
+
//#region src/core/color.d.ts
|
|
2741
|
+
/**
|
|
2742
|
+
* Color math for components: parse, fade, mix and judge lightness. Accepts
|
|
2743
|
+
* `#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa`, `rgb()` / `rgba()` (comma or
|
|
2744
|
+
* space syntax) and `white` / `black` / `transparent`. Anything else (a
|
|
2745
|
+
* gradient, `oklch()`, a CSS variable) passes through untouched where a
|
|
2746
|
+
* function returns a color, and counts as unknown where it returns a number.
|
|
2747
|
+
*/
|
|
2748
|
+
/** Red, green, blue (0–255) and alpha (0–1). */
|
|
2749
|
+
type Rgba = [r: number, g: number, b: number, a: number];
|
|
2750
|
+
/** The color's channels, or null when the format isn't one listed above. */
|
|
2751
|
+
declare function parseColor(color: string): Rgba | null;
|
|
2752
|
+
/** `color` at `alpha` (replacing its own); unknown formats pass through. */
|
|
2753
|
+
declare function withAlpha(color: string, alpha: number): string;
|
|
2754
|
+
/**
|
|
2755
|
+
* `color` fully transparent, keeping its hue, so a gradient fading to it has
|
|
2756
|
+
* no dark fringe. Unknown formats give plain `rgba(0,0,0,0)`.
|
|
2757
|
+
*/
|
|
2758
|
+
declare function transparent(color: string): string;
|
|
2759
|
+
/** Mix `a` toward `b` by `t` (0 → a, 1 → b): `#rrggbb` when both are opaque. */
|
|
2760
|
+
declare function mix(a: string, b: string, t: number): string;
|
|
2761
|
+
/** WCAG relative luminance (0 black … 1 white), or null for unknown formats. */
|
|
2762
|
+
declare function luminance(color: string): number | null;
|
|
2763
|
+
/** WCAG contrast ratio of two colors, or null when either is unknown. */
|
|
2764
|
+
declare function contrastRatio(a: string, b: string): number | null;
|
|
2765
|
+
/**
|
|
2766
|
+
* True when black text reads better than white on `color` (luminance above
|
|
2767
|
+
* ~0.18). Unknown formats count as dark.
|
|
2768
|
+
*/
|
|
2769
|
+
declare function isLight(color: string): boolean;
|
|
2770
|
+
/** Whichever of `light` / `dark` ink reads better on `background`. */
|
|
2771
|
+
declare function inkOn(background: string, light?: string, dark?: string): string;
|
|
2772
|
+
//#endregion
|
|
2773
|
+
//#region src/core/theme.d.ts
|
|
2774
|
+
/** A spring, as `springKeys` / `springAt` take it. */
|
|
2775
|
+
interface Spring {
|
|
2776
|
+
stiffness: number;
|
|
2777
|
+
damping: number;
|
|
2778
|
+
}
|
|
2779
|
+
/**
|
|
2780
|
+
* How far a surface sits above what's behind it: a soft drop shadow, plus a
|
|
2781
|
+
* faint highlight along its top edge so it reads as a lit object.
|
|
2782
|
+
*/
|
|
2783
|
+
interface Elevation {
|
|
2784
|
+
/** Shadow opacity, 0–1. */
|
|
2785
|
+
opacity: number;
|
|
2786
|
+
/** Shadow offset (straight down) and blur, px at theme scale 1. */
|
|
2787
|
+
distance: number;
|
|
2788
|
+
size: number;
|
|
2789
|
+
/** Opacity of the 1 px top-edge highlight, 0–1 (0: none). */
|
|
2790
|
+
edge: number;
|
|
2791
|
+
}
|
|
2792
|
+
interface Theme {
|
|
2099
2793
|
/** Whether `bg` is dark or light; components pick shadows and chrome by it. */
|
|
2100
2794
|
mode: "dark" | "light";
|
|
2101
2795
|
color: {
|
|
@@ -2318,257 +3012,83 @@ declare const themes: {
|
|
|
2318
3012
|
mid: Elevation;
|
|
2319
3013
|
high: Elevation;
|
|
2320
3014
|
};
|
|
2321
|
-
readonly motion: {
|
|
2322
|
-
readonly ease: {
|
|
2323
|
-
readonly enter: "back.out(1.8)";
|
|
2324
|
-
readonly exit: string;
|
|
2325
|
-
readonly move: string;
|
|
2326
|
-
readonly snap: string;
|
|
2327
|
-
};
|
|
2328
|
-
readonly speed: {
|
|
2329
|
-
readonly fast: 6;
|
|
2330
|
-
readonly base: 12;
|
|
2331
|
-
readonly slow: 24;
|
|
2332
|
-
};
|
|
2333
|
-
readonly spring: {
|
|
2334
|
-
readonly settle: {
|
|
2335
|
-
readonly stiffness: 300;
|
|
2336
|
-
readonly damping: 26;
|
|
2337
|
-
};
|
|
2338
|
-
readonly base: {
|
|
2339
|
-
readonly stiffness: 340;
|
|
2340
|
-
readonly damping: 22;
|
|
2341
|
-
};
|
|
2342
|
-
readonly pop: {
|
|
2343
|
-
readonly stiffness: 400;
|
|
2344
|
-
readonly damping: 14;
|
|
2345
|
-
};
|
|
2346
|
-
};
|
|
2347
|
-
};
|
|
2348
|
-
readonly scale: 1;
|
|
2349
|
-
readonly radius: {
|
|
2350
|
-
sm: number;
|
|
2351
|
-
md: number;
|
|
2352
|
-
lg: number;
|
|
2353
|
-
pill: number;
|
|
2354
|
-
};
|
|
2355
|
-
readonly stroke: {
|
|
2356
|
-
hair: number;
|
|
2357
|
-
base: number;
|
|
2358
|
-
bold: number;
|
|
2359
|
-
};
|
|
2360
|
-
readonly mode: "dark";
|
|
2361
|
-
readonly color: {
|
|
2362
|
-
readonly bg: "#000000";
|
|
2363
|
-
readonly surface: "#111111";
|
|
2364
|
-
readonly raised: "#1c1c1c";
|
|
2365
|
-
readonly line: "#333333";
|
|
2366
|
-
readonly ink: "#ffffff";
|
|
2367
|
-
readonly muted: "#a3a3a3";
|
|
2368
|
-
readonly accent: "#c6ff00";
|
|
2369
|
-
readonly accent2: "#ff2e88";
|
|
2370
|
-
readonly positive: "#00e676";
|
|
2371
|
-
readonly negative: "#ff1744";
|
|
2372
|
-
readonly highlight: "#c6ff00";
|
|
2373
|
-
readonly shadow: "#000000";
|
|
2374
|
-
};
|
|
2375
|
-
readonly font: {
|
|
2376
|
-
display: string;
|
|
2377
|
-
body: string;
|
|
2378
|
-
mono: string;
|
|
2379
|
-
hand?: string;
|
|
2380
|
-
};
|
|
2381
|
-
readonly weight: {
|
|
2382
|
-
regular: number;
|
|
2383
|
-
medium: number;
|
|
2384
|
-
semibold: number;
|
|
2385
|
-
bold: number;
|
|
2386
|
-
heavy: number;
|
|
2387
|
-
};
|
|
2388
|
-
};
|
|
2389
|
-
};
|
|
2390
|
-
type ThemeName = keyof typeof themes;
|
|
2391
|
-
/**
|
|
2392
|
-
* Merge a partial theme over a base (default `themes.graphite`). Throws when
|
|
2393
|
-
* `ink` on `surface` falls below WCAG 4.5:1 and both are hex colors.
|
|
2394
|
-
*/
|
|
2395
|
-
declare function defineTheme(input?: ThemeInput | Theme, base?: Theme): Theme;
|
|
2396
|
-
/** A theme's duration token in frames at `fps`. */
|
|
2397
|
-
declare function themeFrames(theme: Theme, speed: keyof Theme["motion"]["speed"], fps?: number): number;
|
|
2398
|
-
//#endregion
|
|
2399
|
-
//#region src/core/path.d.ts
|
|
2400
|
-
/**
|
|
2401
|
-
* 2D path math: smooth curves through points, arc-length sampling, and SVG
|
|
2402
|
-
* path strings. Used for pointer travel, camera moves and drawn marks.
|
|
2403
|
-
*/
|
|
2404
|
-
type Vec2$1 = [x: number, y: number];
|
|
2405
|
-
declare const dist: (a: Vec2$1, b: Vec2$1) => number;
|
|
2406
|
-
declare const lerp2: (a: Vec2$1, b: Vec2$1, t: number) => Vec2$1;
|
|
2407
|
-
/**
|
|
2408
|
-
* Centripetal Catmull-Rom through `points`, flattened to a polyline with
|
|
2409
|
-
* `steps` samples per segment. Centripetal (alpha 0.5) never loops or cusps
|
|
2410
|
-
* between close points, which matters for pointer paths.
|
|
2411
|
-
*/
|
|
2412
|
-
declare function catmullRom(points: readonly Vec2$1[], steps?: number): Vec2$1[];
|
|
2413
|
-
/** A polyline with a cumulative arc-length table, sampled by distance. */
|
|
2414
|
-
interface ArcPath {
|
|
2415
|
-
readonly points: readonly Vec2$1[];
|
|
2416
|
-
readonly length: number;
|
|
2417
|
-
/** Point at `u` ∈ [0, 1] of the total length. */
|
|
2418
|
-
at(u: number): Vec2$1;
|
|
2419
|
-
/** Unit tangent direction (radians) at `u`. */
|
|
2420
|
-
angleAt(u: number): number;
|
|
2421
|
-
}
|
|
2422
|
-
declare function arcPath(points: readonly Vec2$1[]): ArcPath;
|
|
2423
|
-
/** SVG path data for a polyline (optionally closed). Rounded to 0.01 px. */
|
|
2424
|
-
declare function toPathData(points: readonly Vec2$1[], closed?: boolean): string;
|
|
2425
|
-
/**
|
|
2426
|
-
* Scale and offset SVG path data: `x' = x × scale + dx`. Absolute commands
|
|
2427
|
-
* move by the offset; relative ones (and arc radii) only scale. Used to
|
|
2428
|
-
* size glyphs designed on a small grid, and logo marks in their viewBox.
|
|
2429
|
-
*/
|
|
2430
|
-
declare function transformPathData(d: string, scale: number, dx?: number, dy?: number): string;
|
|
2431
|
-
//#endregion
|
|
2432
|
-
//#region src/core/draw.d.ts
|
|
2433
|
-
interface Rect {
|
|
2434
|
-
x: number;
|
|
2435
|
-
y: number;
|
|
2436
|
-
width: number;
|
|
2437
|
-
height: number;
|
|
2438
|
-
}
|
|
2439
|
-
interface HandOptions {
|
|
2440
|
-
/** Wobble amount in px at theme scale 1. 0 = clean geometry. */
|
|
2441
|
-
wobble?: number;
|
|
2442
|
-
seed?: number;
|
|
2443
|
-
}
|
|
2444
|
-
/** Keys for `trimEnd` 0 → 1 between `start` and `start + duration`. */
|
|
2445
|
-
declare function drawOnKeys(start: number, duration: number, ease?: string): KeyframeTuple[];
|
|
2446
|
-
/**
|
|
2447
|
-
* Perturb points with seeded, low-frequency noise: neighbouring points move
|
|
2448
|
-
* together, so lines bend instead of jittering.
|
|
2449
|
-
*/
|
|
2450
|
-
declare function wobblePoints(points: readonly Vec2$1[], {
|
|
2451
|
-
wobble,
|
|
2452
|
-
seed
|
|
2453
|
-
}?: HandOptions, variant?: number): Vec2$1[];
|
|
2454
|
-
/** An ellipse around `rect` (+ padding); hand-drawn ellipses overshoot their start. */
|
|
2455
|
-
declare function ellipsePath(rect: Rect, {
|
|
2456
|
-
padding,
|
|
2457
|
-
wobble,
|
|
2458
|
-
seed
|
|
2459
|
-
}?: HandOptions & {
|
|
2460
|
-
padding?: number;
|
|
2461
|
-
}, variant?: number): string;
|
|
2462
|
-
/** A rectangle around `rect` (+ padding). */
|
|
2463
|
-
declare function boxPath(rect: Rect, {
|
|
2464
|
-
padding,
|
|
2465
|
-
wobble,
|
|
2466
|
-
seed
|
|
2467
|
-
}?: HandOptions & {
|
|
2468
|
-
padding?: number;
|
|
2469
|
-
}, variant?: number): string;
|
|
2470
|
-
/** A horizontal stroke from `from` to `to`. */
|
|
2471
|
-
declare function linePath(from: Vec2$1, to: Vec2$1, {
|
|
2472
|
-
wobble,
|
|
2473
|
-
seed
|
|
2474
|
-
}?: HandOptions, variant?: number): string;
|
|
2475
|
-
/** A wavy line from `from` to `to`, `waves` crests of `amplitude` px. */
|
|
2476
|
-
declare function squigglePath(from: Vec2$1, to: Vec2$1, {
|
|
2477
|
-
amplitude,
|
|
2478
|
-
waves,
|
|
2479
|
-
wobble,
|
|
2480
|
-
seed
|
|
2481
|
-
}?: HandOptions & {
|
|
2482
|
-
amplitude?: number;
|
|
2483
|
-
waves?: number;
|
|
2484
|
-
}, variant?: number): string;
|
|
2485
|
-
type ArrowCurve = "straight" | "arc" | "swoop";
|
|
2486
|
-
interface ArrowGeometry {
|
|
2487
|
-
/** The shaft, drawn from `from` to just before `to`. */
|
|
2488
|
-
shaft: string;
|
|
2489
|
-
/** The head, two strokes meeting at `to`. */
|
|
2490
|
-
head: string;
|
|
2491
|
-
}
|
|
2492
|
-
/** An arrow from `from` to `to` with a separate head path. */
|
|
2493
|
-
declare function arrowPaths(from: Vec2$1, to: Vec2$1, {
|
|
2494
|
-
curve,
|
|
2495
|
-
headSize,
|
|
2496
|
-
wobble,
|
|
2497
|
-
seed
|
|
2498
|
-
}?: HandOptions & {
|
|
2499
|
-
curve?: ArrowCurve;
|
|
2500
|
-
headSize?: number;
|
|
2501
|
-
}, variant?: number): ArrowGeometry;
|
|
2502
|
-
/**
|
|
2503
|
-
* Hand-drawn "boil": `d` keys that switch between `variants` poses every
|
|
2504
|
-
* `every` frames with hold interpolation, from `start` to `end`.
|
|
2505
|
-
* `makePath(variant)` must be deterministic for a variant index.
|
|
2506
|
-
*/
|
|
2507
|
-
declare function boilKeys(makePath: (variant: number) => string, {
|
|
2508
|
-
start,
|
|
2509
|
-
end,
|
|
2510
|
-
every,
|
|
2511
|
-
variants
|
|
2512
|
-
}: {
|
|
2513
|
-
start: number;
|
|
2514
|
-
end: number;
|
|
2515
|
-
every: number;
|
|
2516
|
-
variants?: number;
|
|
2517
|
-
}): KeyframeTuple[];
|
|
2518
|
-
//#endregion
|
|
2519
|
-
//#region src/core/text.d.ts
|
|
2520
|
-
/** The subset of `FontManager.measure` options components pass. */
|
|
2521
|
-
interface MeasureOptions {
|
|
2522
|
-
fontFamily: string;
|
|
2523
|
-
fontSize?: number;
|
|
2524
|
-
fontWeight?: string | number;
|
|
2525
|
-
letterSpacing?: number;
|
|
2526
|
-
lineHeight?: number;
|
|
2527
|
-
width?: number;
|
|
2528
|
-
align?: "left" | "center" | "right";
|
|
2529
|
-
direction?: "ltr" | "rtl" | "auto";
|
|
2530
|
-
}
|
|
2531
|
-
interface GlyphBox {
|
|
2532
|
-
char: string;
|
|
2533
|
-
index: number;
|
|
2534
|
-
x: number;
|
|
2535
|
-
width: number;
|
|
2536
|
-
line: number;
|
|
2537
|
-
rtl?: boolean;
|
|
2538
|
-
}
|
|
2539
|
-
/** The subset of `FontManager.measure` results components read. */
|
|
2540
|
-
interface Metrics$1 {
|
|
2541
|
-
width: number;
|
|
2542
|
-
height: number;
|
|
2543
|
-
lines: number;
|
|
2544
|
-
lineHeight: number;
|
|
2545
|
-
glyphs: GlyphBox[];
|
|
2546
|
-
caretX(count: number): number;
|
|
2547
|
-
}
|
|
2548
|
-
type MeasureFn = (text: string, options: MeasureOptions) => Metrics$1;
|
|
2549
|
-
interface WordRange {
|
|
2550
|
-
text: string;
|
|
2551
|
-
/** Index of the first character (code units). */
|
|
2552
|
-
start: number;
|
|
2553
|
-
/** Index after the last character. */
|
|
2554
|
-
end: number;
|
|
2555
|
-
index: number;
|
|
2556
|
-
}
|
|
2557
|
-
/** Whitespace-separated words with their character ranges. */
|
|
2558
|
-
declare function wordRanges(text: string): WordRange[];
|
|
2559
|
-
/** Character range of the `nth` match of `match` in `text`, or null. */
|
|
2560
|
-
declare function findRange(text: string, match: string | RegExp, nth?: number): [number, number] | null;
|
|
2561
|
-
/**
|
|
2562
|
-
* Per-line x offset that `align` adds inside a box of `options.width`
|
|
2563
|
-
* (measurement itself lays every line out from the left edge).
|
|
2564
|
-
*/
|
|
2565
|
-
declare function lineShift(metrics: Metrics$1, line: number, options: MeasureOptions): number;
|
|
3015
|
+
readonly motion: {
|
|
3016
|
+
readonly ease: {
|
|
3017
|
+
readonly enter: "back.out(1.8)";
|
|
3018
|
+
readonly exit: string;
|
|
3019
|
+
readonly move: string;
|
|
3020
|
+
readonly snap: string;
|
|
3021
|
+
};
|
|
3022
|
+
readonly speed: {
|
|
3023
|
+
readonly fast: 6;
|
|
3024
|
+
readonly base: 12;
|
|
3025
|
+
readonly slow: 24;
|
|
3026
|
+
};
|
|
3027
|
+
readonly spring: {
|
|
3028
|
+
readonly settle: {
|
|
3029
|
+
readonly stiffness: 300;
|
|
3030
|
+
readonly damping: 26;
|
|
3031
|
+
};
|
|
3032
|
+
readonly base: {
|
|
3033
|
+
readonly stiffness: 340;
|
|
3034
|
+
readonly damping: 22;
|
|
3035
|
+
};
|
|
3036
|
+
readonly pop: {
|
|
3037
|
+
readonly stiffness: 400;
|
|
3038
|
+
readonly damping: 14;
|
|
3039
|
+
};
|
|
3040
|
+
};
|
|
3041
|
+
};
|
|
3042
|
+
readonly scale: 1;
|
|
3043
|
+
readonly radius: {
|
|
3044
|
+
sm: number;
|
|
3045
|
+
md: number;
|
|
3046
|
+
lg: number;
|
|
3047
|
+
pill: number;
|
|
3048
|
+
};
|
|
3049
|
+
readonly stroke: {
|
|
3050
|
+
hair: number;
|
|
3051
|
+
base: number;
|
|
3052
|
+
bold: number;
|
|
3053
|
+
};
|
|
3054
|
+
readonly mode: "dark";
|
|
3055
|
+
readonly color: {
|
|
3056
|
+
readonly bg: "#000000";
|
|
3057
|
+
readonly surface: "#111111";
|
|
3058
|
+
readonly raised: "#1c1c1c";
|
|
3059
|
+
readonly line: "#333333";
|
|
3060
|
+
readonly ink: "#ffffff";
|
|
3061
|
+
readonly muted: "#a3a3a3";
|
|
3062
|
+
readonly accent: "#c6ff00";
|
|
3063
|
+
readonly accent2: "#ff2e88";
|
|
3064
|
+
readonly positive: "#00e676";
|
|
3065
|
+
readonly negative: "#ff1744";
|
|
3066
|
+
readonly highlight: "#c6ff00";
|
|
3067
|
+
readonly shadow: "#000000";
|
|
3068
|
+
};
|
|
3069
|
+
readonly font: {
|
|
3070
|
+
display: string;
|
|
3071
|
+
body: string;
|
|
3072
|
+
mono: string;
|
|
3073
|
+
hand?: string;
|
|
3074
|
+
};
|
|
3075
|
+
readonly weight: {
|
|
3076
|
+
regular: number;
|
|
3077
|
+
medium: number;
|
|
3078
|
+
semibold: number;
|
|
3079
|
+
bold: number;
|
|
3080
|
+
heavy: number;
|
|
3081
|
+
};
|
|
3082
|
+
};
|
|
3083
|
+
};
|
|
3084
|
+
type ThemeName = keyof typeof themes;
|
|
2566
3085
|
/**
|
|
2567
|
-
*
|
|
2568
|
-
*
|
|
2569
|
-
* excluded.
|
|
3086
|
+
* Merge a partial theme over a base (default `themes.graphite`). Throws when
|
|
3087
|
+
* `ink` on `surface` falls below WCAG 4.5:1 and both are hex colors.
|
|
2570
3088
|
*/
|
|
2571
|
-
declare function
|
|
3089
|
+
declare function defineTheme(input?: ThemeInput | Theme, base?: Theme): Theme;
|
|
3090
|
+
/** A theme's duration token in frames at `fps`. */
|
|
3091
|
+
declare function themeFrames(theme: Theme, speed: keyof Theme["motion"]["speed"], fps?: number): number;
|
|
2572
3092
|
//#endregion
|
|
2573
3093
|
//#region src/core/host.d.ts
|
|
2574
3094
|
/** Photoshop-style layer styles (framefields' `LayerStyle`). Omitted styles are off. */
|
|
@@ -3470,97 +3990,6 @@ interface FontNeed {
|
|
|
3470
3990
|
}
|
|
3471
3991
|
declare function defineMeta(meta: ComponentMeta): ComponentMeta;
|
|
3472
3992
|
//#endregion
|
|
3473
|
-
//#region src/core/targets.d.ts
|
|
3474
|
-
type Anchor = "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right"
|
|
3475
|
-
/** Where a pointer should land: the centre, or mid-left for text. */ | "tip";
|
|
3476
|
-
/** A node as targets read it: absolute numeric geometry, or text. */
|
|
3477
|
-
interface TargetNode {
|
|
3478
|
-
id?: string;
|
|
3479
|
-
kind?: string;
|
|
3480
|
-
x?: unknown;
|
|
3481
|
-
y?: unknown;
|
|
3482
|
-
width?: unknown;
|
|
3483
|
-
height?: unknown;
|
|
3484
|
-
text?: unknown;
|
|
3485
|
-
content?: unknown;
|
|
3486
|
-
[key: string]: unknown;
|
|
3487
|
-
}
|
|
3488
|
-
/** The frame context signals are read with. */
|
|
3489
|
-
interface FrameContextLike {
|
|
3490
|
-
frame: number;
|
|
3491
|
-
fps: number;
|
|
3492
|
-
time: number;
|
|
3493
|
-
duration: number;
|
|
3494
|
-
durationMs: number;
|
|
3495
|
-
progress: number;
|
|
3496
|
-
deltaTime: number;
|
|
3497
|
-
}
|
|
3498
|
-
/** A per-frame value: a signal (what tracked objects expose) or a function. */
|
|
3499
|
-
type FrameValue = {
|
|
3500
|
-
get(ctx?: FrameContextLike): number;
|
|
3501
|
-
} | ((frame: number) => number);
|
|
3502
|
-
interface TrackedObjectLike {
|
|
3503
|
-
x: FrameValue;
|
|
3504
|
-
y: FrameValue;
|
|
3505
|
-
width: FrameValue;
|
|
3506
|
-
height: FrameValue;
|
|
3507
|
-
}
|
|
3508
|
-
type Target = Vec2$1 | Rect | {
|
|
3509
|
-
node: TargetNode;
|
|
3510
|
-
anchor?: Anchor;
|
|
3511
|
-
} | {
|
|
3512
|
-
text: TargetNode;
|
|
3513
|
-
match?: string | RegExp;
|
|
3514
|
-
range?: [number, number];
|
|
3515
|
-
nth?: number;
|
|
3516
|
-
anchor?: Anchor;
|
|
3517
|
-
} | {
|
|
3518
|
-
track: TrackedObjectLike;
|
|
3519
|
-
anchor?: Anchor;
|
|
3520
|
-
} | ((frame: number) => Vec2$1 | Rect);
|
|
3521
|
-
interface TargetContext {
|
|
3522
|
-
measure?: MeasureFn;
|
|
3523
|
-
/** Frame rate signals are sampled at (tracked targets). Default 30. */
|
|
3524
|
-
fps?: number;
|
|
3525
|
-
/** Font defaults for text nodes that don't set them. */
|
|
3526
|
-
textDefaults?: Partial<MeasureOptions>;
|
|
3527
|
-
}
|
|
3528
|
-
type ResolvedTarget = {
|
|
3529
|
-
kind: "static";
|
|
3530
|
-
rects: Rect[];
|
|
3531
|
-
anchor: Anchor;
|
|
3532
|
-
} | {
|
|
3533
|
-
kind: "dynamic";
|
|
3534
|
-
at: (frame: number) => Rect;
|
|
3535
|
-
anchor: Anchor;
|
|
3536
|
-
};
|
|
3537
|
-
/** Resolve a target to rects (static) or a per-frame rect (dynamic). */
|
|
3538
|
-
declare function resolveTarget(target: Target, ctx?: TargetContext): ResolvedTarget;
|
|
3539
|
-
/** A text target's string, measured glyphs and range, and where the node sits. */
|
|
3540
|
-
interface TextLayout {
|
|
3541
|
-
content: string;
|
|
3542
|
-
metrics: ReturnType<MeasureFn>;
|
|
3543
|
-
options: MeasureOptions;
|
|
3544
|
-
range: [number, number];
|
|
3545
|
-
/** The node's x / y: add to measured glyph positions. */
|
|
3546
|
-
x: number;
|
|
3547
|
-
y: number;
|
|
3548
|
-
}
|
|
3549
|
-
/** Measure a text target the way the renderer lays it out. */
|
|
3550
|
-
declare function textLayout(target: Extract<Target, {
|
|
3551
|
-
text: TargetNode;
|
|
3552
|
-
}>, ctx: TargetContext): TextLayout;
|
|
3553
|
-
/** The union rect of `rects`. */
|
|
3554
|
-
declare function boundsOf(rects: readonly Rect[]): Rect;
|
|
3555
|
-
/** The point of `rect` named by `anchor`. `tip` on text = start of the first line, mid-height. */
|
|
3556
|
-
declare function anchorPoint(rect: Rect, anchor?: Anchor, isText?: boolean): Vec2$1;
|
|
3557
|
-
/** The point a resolved target names at `frame` (static targets ignore frame). */
|
|
3558
|
-
declare function targetPoint(resolved: ResolvedTarget, frame?: number, isText?: boolean): Vec2$1;
|
|
3559
|
-
//#endregion
|
|
3560
|
-
//#region src/core/schemas.d.ts
|
|
3561
|
-
/** Any `Target`: [x, y], a rect, { node }, { text }, { track }, or (frame) => point. */
|
|
3562
|
-
declare function targetSchema(): z.ZodType<Target>;
|
|
3563
|
-
//#endregion
|
|
3564
3993
|
//#region src/core/surface.d.ts
|
|
3565
3994
|
type ElevationLevel = keyof Theme["elevation"];
|
|
3566
3995
|
/** Layer styles for `level`: a drop shadow and, when the theme asks, a top-edge highlight. */
|
|
@@ -3617,6 +4046,13 @@ declare function chain(durations: readonly number[], start?: number, gap?: numbe
|
|
|
3617
4046
|
declare function typingFrames(text: string, cps: number, fps: number, r: Rng, start?: number): number[];
|
|
3618
4047
|
//#endregion
|
|
3619
4048
|
//#endregion
|
|
4049
|
+
//#region ../components/dist/toolkit.d.mts
|
|
4050
|
+
//#region src/core/schemas.d.ts
|
|
4051
|
+
|
|
4052
|
+
/** Any `Target`: [x, y], a rect, { node }, { text }, { track }, or (frame) => point. */
|
|
4053
|
+
declare function targetSchema(): z.ZodType<Target>;
|
|
4054
|
+
//#endregion
|
|
4055
|
+
//#endregion
|
|
3620
4056
|
//#region ../ai/dist/index.d.mts
|
|
3621
4057
|
//#region src/types.d.ts
|
|
3622
4058
|
/** Model input or output when its shape isn't declared. Pass a type argument to name it. */
|
|
@@ -3930,6 +4366,86 @@ interface ChartOptions {
|
|
|
3930
4366
|
}
|
|
3931
4367
|
declare const DEFAULT_CHART_COLORS: readonly ["#6366f1", "#22d3ee", "#f59e0b", "#ec4899", "#10b981", "#8b5cf6", "#f97316", "#3b82f6"];
|
|
3932
4368
|
//#endregion
|
|
4369
|
+
//#region src/retarget.d.ts
|
|
4370
|
+
/** Anything that answers where a keypoint is at a frame (a vision `PersonTrack`, a mocap reader). */
|
|
4371
|
+
interface PoseSource {
|
|
4372
|
+
point(name: PoseKeypointName, frame: number): {
|
|
4373
|
+
x: number;
|
|
4374
|
+
y: number;
|
|
4375
|
+
visibility: number;
|
|
4376
|
+
};
|
|
4377
|
+
}
|
|
4378
|
+
/** The bones a performer's 2D pose can aim. */
|
|
4379
|
+
type RetargetBone = "spine" | "neck" | "leftUpperArm" | "leftLowerArm" | "rightUpperArm" | "rightLowerArm" | "leftUpperLeg" | "leftLowerLeg" | "rightUpperLeg" | "rightLowerLeg";
|
|
4380
|
+
/** Joint names per bone; names match without a namespace prefix and case (`"LeftArm"` finds `"mixamorig:LeftArm"`). */
|
|
4381
|
+
type RigMap = Partial<Record<RetargetBone, string>>;
|
|
4382
|
+
/** Joint names of common rigs. */
|
|
4383
|
+
declare const RIG_PRESETS: {
|
|
4384
|
+
/** Mixamo (`mixamorig:` prefix, any number). */
|
|
4385
|
+
readonly mixamo: {
|
|
4386
|
+
readonly spine: "Spine";
|
|
4387
|
+
readonly neck: "Neck";
|
|
4388
|
+
readonly leftUpperArm: "LeftArm";
|
|
4389
|
+
readonly leftLowerArm: "LeftForeArm";
|
|
4390
|
+
readonly rightUpperArm: "RightArm";
|
|
4391
|
+
readonly rightLowerArm: "RightForeArm";
|
|
4392
|
+
readonly leftUpperLeg: "LeftUpLeg";
|
|
4393
|
+
readonly leftLowerLeg: "LeftLeg";
|
|
4394
|
+
readonly rightUpperLeg: "RightUpLeg";
|
|
4395
|
+
readonly rightLowerLeg: "RightLeg";
|
|
4396
|
+
};
|
|
4397
|
+
/** Unity humanoid / VRM bone names. */
|
|
4398
|
+
readonly humanoid: {
|
|
4399
|
+
readonly spine: "Spine";
|
|
4400
|
+
readonly neck: "Neck";
|
|
4401
|
+
readonly leftUpperArm: "LeftUpperArm";
|
|
4402
|
+
readonly leftLowerArm: "LeftLowerArm";
|
|
4403
|
+
readonly rightUpperArm: "RightUpperArm";
|
|
4404
|
+
readonly rightLowerArm: "RightLowerArm";
|
|
4405
|
+
readonly leftUpperLeg: "LeftUpperLeg";
|
|
4406
|
+
readonly leftLowerLeg: "LeftLowerLeg";
|
|
4407
|
+
readonly rightUpperLeg: "RightUpperLeg";
|
|
4408
|
+
readonly rightLowerLeg: "RightLowerLeg";
|
|
4409
|
+
};
|
|
4410
|
+
/** Blender Rigify deform bones. */
|
|
4411
|
+
readonly rigify: {
|
|
4412
|
+
readonly spine: "spine";
|
|
4413
|
+
readonly neck: "neck";
|
|
4414
|
+
readonly leftUpperArm: "upper_arm.L";
|
|
4415
|
+
readonly leftLowerArm: "forearm.L";
|
|
4416
|
+
readonly rightUpperArm: "upper_arm.R";
|
|
4417
|
+
readonly rightLowerArm: "forearm.R";
|
|
4418
|
+
readonly leftUpperLeg: "thigh.L";
|
|
4419
|
+
readonly leftLowerLeg: "shin.L";
|
|
4420
|
+
readonly rightUpperLeg: "thigh.R";
|
|
4421
|
+
readonly rightLowerLeg: "shin.R";
|
|
4422
|
+
};
|
|
4423
|
+
};
|
|
4424
|
+
interface RetargetOptions {
|
|
4425
|
+
/** The character's joint names: a preset or a map. Default "mixamo". */
|
|
4426
|
+
rig?: keyof typeof RIG_PRESETS | RigMap;
|
|
4427
|
+
/** Only these bones (e.g. arms, over a walk clip). Default: every mapped bone. */
|
|
4428
|
+
bones?: RetargetBone[];
|
|
4429
|
+
/**
|
|
4430
|
+
* Drive the character's right side with the performer's left: for a
|
|
4431
|
+
* character seen from behind. Default false (both face the camera).
|
|
4432
|
+
*/
|
|
4433
|
+
mirror?: boolean;
|
|
4434
|
+
/**
|
|
4435
|
+
* Keypoints less sure than this hand their bone back to the animated
|
|
4436
|
+
* pose, fading over the next 0.2 of confidence. Default 0.3.
|
|
4437
|
+
*/
|
|
4438
|
+
minVisibility?: number;
|
|
4439
|
+
/** Overall blend over the animated pose, 0..1: a number, keys, function or signal. Default 1. */
|
|
4440
|
+
weight?: NumberTrack;
|
|
4441
|
+
}
|
|
4442
|
+
/**
|
|
4443
|
+
* Aim constraints that make a character copy `source`'s pose: put them on
|
|
4444
|
+
* a glTF model's `aim`. Bones whose joints the rig map doesn't name, or
|
|
4445
|
+
* whose keypoints the vision isn't sure of, keep the animated pose.
|
|
4446
|
+
*/
|
|
4447
|
+
declare function retargetPose(source: PoseSource, options?: RetargetOptions): AimConstraint[];
|
|
4448
|
+
//#endregion
|
|
3933
4449
|
//#region src/clip-vision.d.ts
|
|
3934
4450
|
type PoseKeypointName = (typeof COCO17_KEYPOINT_NAMES)[number];
|
|
3935
4451
|
interface ClipVisionOptions {
|
|
@@ -3962,6 +4478,14 @@ interface ClipVisionOptions {
|
|
|
3962
4478
|
* clip tracks no pose or silhouette unless `pose` / `mask` ask for them.
|
|
3963
4479
|
*/
|
|
3964
4480
|
depth?: boolean;
|
|
4481
|
+
/**
|
|
4482
|
+
* Resolve the subject's edge to soft alpha (ViTMatte Small): hair, motion
|
|
4483
|
+
* blur and see-through parts that a hard mask cuts off. `true`, or
|
|
4484
|
+
* `{ band, resolution }` (see `MatteRefineOptions`). Matte layers, `signals`
|
|
4485
|
+
* masks and `subject` read the soft alpha; each prompted track keeps its own.
|
|
4486
|
+
* Mattes persist apart from the masks, so turning this on reuses them.
|
|
4487
|
+
*/
|
|
4488
|
+
matting?: boolean | MatteRefineOptions;
|
|
3965
4489
|
/** Silhouette cell size in source pixels (default 8: a 1920×1080 clip gives a 240×135 grid). */
|
|
3966
4490
|
maskCell?: number;
|
|
3967
4491
|
/** Keypoints are averaged over ±`smoothing` frames, weighted by confidence (default 2; 0 = raw). */
|
|
@@ -4052,6 +4576,10 @@ declare class ClipVision implements ClipSubjectSource {
|
|
|
4052
4576
|
private readonly subjects;
|
|
4053
4577
|
private wantSubjects;
|
|
4054
4578
|
private subjectsLoaded?;
|
|
4579
|
+
/** Soft alpha per source frame (`matting`); null when the frame holds no subject. */
|
|
4580
|
+
private readonly mattes;
|
|
4581
|
+
private mattesLoaded?;
|
|
4582
|
+
private unsavedMattes;
|
|
4055
4583
|
/** Depth per source frame; null when the frame did not decode. Bounded when on disk. */
|
|
4056
4584
|
private readonly depths;
|
|
4057
4585
|
/** Source frames whose depth is on disk. */
|
|
@@ -4101,6 +4629,14 @@ declare class ClipVision implements ClipSubjectSource {
|
|
|
4101
4629
|
get tracksPose(): boolean;
|
|
4102
4630
|
/** Whether frames carry the person's silhouette: on by default, off for depth clips. */
|
|
4103
4631
|
get tracksMask(): boolean;
|
|
4632
|
+
/** Whether subjects are matted to soft alpha. */
|
|
4633
|
+
get tracksMatting(): boolean;
|
|
4634
|
+
private get matteSettings();
|
|
4635
|
+
/**
|
|
4636
|
+
* A stored subject's alpha at a source frame: the matte when the clip mattes
|
|
4637
|
+
* (undefined until matted), else the mask. With `id`, that track only.
|
|
4638
|
+
*/
|
|
4639
|
+
private alpha;
|
|
4104
4640
|
/** Whether frames carry relative depth. */
|
|
4105
4641
|
get tracksDepth(): boolean;
|
|
4106
4642
|
/**
|
|
@@ -4129,7 +4665,15 @@ declare class ClipVision implements ClipSubjectSource {
|
|
|
4129
4665
|
/** Loads `@framefields/vision-sam` and validates the prompts once, on first use. */
|
|
4130
4666
|
private prompted;
|
|
4131
4667
|
private compute;
|
|
4668
|
+
/** Pose, silhouette and subject of every frame in `from…to` not analysed yet. */
|
|
4669
|
+
private computeSubjects;
|
|
4132
4670
|
private visionRunner;
|
|
4671
|
+
/**
|
|
4672
|
+
* The soft alpha of every subject in `from…to` not matted yet: one
|
|
4673
|
+
* ViTMatte pass per frame over every track's edge. Prompted label maps grow
|
|
4674
|
+
* into the soft edge, so each track keeps its own alpha.
|
|
4675
|
+
*/
|
|
4676
|
+
private computeMattes;
|
|
4133
4677
|
/** Depth of every source frame in `from…to` not analysed yet, saved one file per frame. */
|
|
4134
4678
|
private computeDepth;
|
|
4135
4679
|
private hasDepth;
|
|
@@ -4178,6 +4722,13 @@ declare class ClipVision implements ClipSubjectSource {
|
|
|
4178
4722
|
/** Subjects live beside the results: large, and only matte layers read them. */
|
|
4179
4723
|
private subjectsPath;
|
|
4180
4724
|
private loadSubjects;
|
|
4725
|
+
/**
|
|
4726
|
+
* Mattes live beside the subjects they refine, keyed by the matting model
|
|
4727
|
+
* and settings, so toggling matting never recomputes the masks.
|
|
4728
|
+
*/
|
|
4729
|
+
private mattesPath;
|
|
4730
|
+
private loadMattes;
|
|
4731
|
+
private saveMattes;
|
|
4181
4732
|
private saveSubjects;
|
|
4182
4733
|
}
|
|
4183
4734
|
/**
|
|
@@ -4201,6 +4752,12 @@ declare class PersonTrack {
|
|
|
4201
4752
|
y: number;
|
|
4202
4753
|
visibility: number;
|
|
4203
4754
|
};
|
|
4755
|
+
/**
|
|
4756
|
+
* Aim constraints that make a 3D character copy this person's pose, for
|
|
4757
|
+
* a glTF model's `aim`: `Layer.glb(src, { aim: person.retarget({ rig: "mixamo" }) })`.
|
|
4758
|
+
* Place the person first (`place()`), so directions read in composition px.
|
|
4759
|
+
*/
|
|
4760
|
+
retarget(options?: RetargetOptions): AimConstraint[];
|
|
4204
4761
|
/** Signals for a keypoint, for `.signal("x", …)`; read while rendering. */
|
|
4205
4762
|
signals(name: PoseKeypointName): {
|
|
4206
4763
|
x: FrameSignal<number>;
|
|
@@ -4396,6 +4953,11 @@ type Shape3D = {
|
|
|
4396
4953
|
/** Flat [x0, y0, z0, …] around the body origin. */ | {
|
|
4397
4954
|
kind: "hull";
|
|
4398
4955
|
points: number[];
|
|
4956
|
+
}
|
|
4957
|
+
/** Exact triangle mesh (static / kinematic bodies: terrain, sculptures). */ | {
|
|
4958
|
+
kind: "trimesh";
|
|
4959
|
+
vertices: number[];
|
|
4960
|
+
indices: number[];
|
|
4399
4961
|
};
|
|
4400
4962
|
interface BodySpecBase extends MaterialSpec {
|
|
4401
4963
|
type: BodyType;
|
|
@@ -4460,6 +5022,10 @@ interface SimBody<V, R> {
|
|
|
4460
5022
|
mass(): number;
|
|
4461
5023
|
setEnabled(enabled: boolean): void;
|
|
4462
5024
|
applyImpulse(impulse: V): void;
|
|
5025
|
+
/** Teleports the body (wakes it): position, and rotation. */
|
|
5026
|
+
setPose(position: V, rotation: R): void;
|
|
5027
|
+
/** Sets linear and angular velocity (wakes the body). */
|
|
5028
|
+
setVelocity(linear: V, angular: R extends number ? number : Vec3): void;
|
|
4463
5029
|
setKinematicTarget(position: V, rotation: R): void;
|
|
4464
5030
|
}
|
|
4465
5031
|
type SimBody2D = SimBody<Vec2, number>;
|
|
@@ -4626,6 +5192,10 @@ declare abstract class WorldCore<V extends number[], R, B extends CoreBody<V, R>
|
|
|
4626
5192
|
targets?: Set<B>;
|
|
4627
5193
|
accel: (body: B, frame: number) => V | null | undefined;
|
|
4628
5194
|
}>;
|
|
5195
|
+
/** Run after each simulated frame with the pairs that started touching in it. */
|
|
5196
|
+
protected readonly stepHooks: Array<(frame: number, pairs: Array<[B, B]>) => void>;
|
|
5197
|
+
/** Run once the whole simulation has finished (not in live worlds). */
|
|
5198
|
+
protected readonly simulatedHooks: Array<() => void>;
|
|
4629
5199
|
private readonly worldRecording;
|
|
4630
5200
|
private readonly allCollisions;
|
|
4631
5201
|
/** No more bodies, joints or forces: the world has started (or finished). */
|
|
@@ -4790,6 +5360,49 @@ declare class Particles extends Effect$1<Record<string, never>> implements Parti
|
|
|
4790
5360
|
particleFrame(frame: number, fps: number): ParticleFrame;
|
|
4791
5361
|
}
|
|
4792
5362
|
//#endregion
|
|
5363
|
+
//#region src/physics/fracture3d.d.ts
|
|
5364
|
+
interface Fracture3DOptions {
|
|
5365
|
+
/** Voronoi pieces (2..256). Default 48. */
|
|
5366
|
+
cells?: number;
|
|
5367
|
+
/** Same seed, same pieces. Default 1. */
|
|
5368
|
+
seed?: number;
|
|
5369
|
+
/** Scene point (px) the pieces crowd around and fly from. */
|
|
5370
|
+
impactPoint?: [number, number, number];
|
|
5371
|
+
/**
|
|
5372
|
+
* Composition frame the layer breaks at, or `"onImpact"` (default): the
|
|
5373
|
+
* first frame a body hits it. An animated layer (position, rotation)
|
|
5374
|
+
* collides along its path while whole and breaks where it is, its pieces
|
|
5375
|
+
* carrying its motion.
|
|
5376
|
+
*/
|
|
5377
|
+
fractureFrame?: number | "onImpact";
|
|
5378
|
+
/** Color of the faces the break exposes. Default "#d8d2c4". */
|
|
5379
|
+
interiorColor?: string;
|
|
5380
|
+
/** Roughness of the exposed faces. Default 0.9. */
|
|
5381
|
+
interiorRoughness?: number;
|
|
5382
|
+
/** Outward speed at the impact point, px/s, fading with distance. Default 0. */
|
|
5383
|
+
explosionSpeed?: number;
|
|
5384
|
+
/** Random tumble, degrees per second. Default a third of `explosionSpeed`. */
|
|
5385
|
+
spin?: number;
|
|
5386
|
+
/** Share of the hitting body's velocity the nearest pieces take. Default 0.35. */
|
|
5387
|
+
momentumTransfer?: number;
|
|
5388
|
+
density?: number;
|
|
5389
|
+
friction?: number;
|
|
5390
|
+
restitution?: number;
|
|
5391
|
+
}
|
|
5392
|
+
/** A fractured layer: its pieces, and the collider that stands in for it while whole. */
|
|
5393
|
+
declare class Fracture3D {
|
|
5394
|
+
readonly node: LayoutNode;
|
|
5395
|
+
readonly pieces: readonly PhysicsBody3D[];
|
|
5396
|
+
readonly intact: PhysicsBody3D;
|
|
5397
|
+
private readonly world;
|
|
5398
|
+
/** @internal */
|
|
5399
|
+
brokeAt?: number;
|
|
5400
|
+
/** @internal */
|
|
5401
|
+
constructor(node: LayoutNode, pieces: readonly PhysicsBody3D[], intact: PhysicsBody3D, world: PhysicsWorld3D);
|
|
5402
|
+
/** Composition frame it broke at (after simulating); undefined if it never did. */
|
|
5403
|
+
get frame(): number | undefined;
|
|
5404
|
+
}
|
|
5405
|
+
//#endregion
|
|
4793
5406
|
//#region src/physics/world3d.d.ts
|
|
4794
5407
|
interface World3DOptions extends PhysicsWorldOptions {
|
|
4795
5408
|
/** px/s², y down. A number pulls straight down. Default 2400. */
|
|
@@ -4831,10 +5444,12 @@ interface Body3DOptions extends Omit<BodyCommonOptions, "lockRotation"> {
|
|
|
4831
5444
|
};
|
|
4832
5445
|
/**
|
|
4833
5446
|
* Collider: `"auto"` (default) reads the Layer3D primitive (box, sphere,
|
|
4834
|
-
* cylinder)
|
|
4835
|
-
*
|
|
5447
|
+
* cylinder), uses the exact triangles of `Layer3D.terrain` / `Layer3D.sdf`
|
|
5448
|
+
* on static bodies, and falls back to the mesh's convex hull for models and
|
|
5449
|
+
* tapered or uneven shapes. Force `"box"`, `"sphere"`, `"cylinder"`,
|
|
5450
|
+
* `"hull"` or `"mesh"` (exact triangles; static or kinematic bodies only).
|
|
4836
5451
|
*/
|
|
4837
|
-
shape?: "auto" | "box" | "sphere" | "cylinder" | "hull";
|
|
5452
|
+
shape?: "auto" | "box" | "sphere" | "cylinder" | "hull" | "mesh";
|
|
4838
5453
|
/** Collider size override `[width, height, depth]`, px (before the layer's scale). */
|
|
4839
5454
|
size?: [number, number, number];
|
|
4840
5455
|
/** px/s. */
|
|
@@ -4851,11 +5466,10 @@ interface Body3DOptions extends Omit<BodyCommonOptions, "lockRotation"> {
|
|
|
4851
5466
|
rotateZ?: PhysicsDriver;
|
|
4852
5467
|
};
|
|
4853
5468
|
}
|
|
5469
|
+
/** @internal */
|
|
4854
5470
|
type LayerLike$1 = Record<string, unknown> & {
|
|
4855
5471
|
kind?: string;
|
|
4856
5472
|
};
|
|
4857
|
-
/** Quaternion of the renderer's Euler order: R = Rz · Ry · Rx (degrees). */
|
|
4858
|
-
|
|
4859
5473
|
/**
|
|
4860
5474
|
* A simulated 3D body. Like {@link PhysicsBody2D}, its signals hold one
|
|
4861
5475
|
* value per composition frame and reading one runs the simulation.
|
|
@@ -4877,6 +5491,16 @@ declare class PhysicsBody3D implements CoreBody<Vec3, Quat> {
|
|
|
4877
5491
|
rotation: Vec3;
|
|
4878
5492
|
}, options: Body3DOptions, recording: Recording);
|
|
4879
5493
|
get startFrame(): number;
|
|
5494
|
+
private wokeAt?;
|
|
5495
|
+
/**
|
|
5496
|
+
* @internal Starts the body now, mid-simulation (`frame` relative to the
|
|
5497
|
+
* world's start): it moves from the next frame, at this velocity (px/s,
|
|
5498
|
+
* degrees per second), from `pose` (px) when given.
|
|
5499
|
+
*/
|
|
5500
|
+
wake(frame: number, velocity: Vec3, angularVelocity: Vec3, pose?: {
|
|
5501
|
+
position: Vec3;
|
|
5502
|
+
rotation: Quat;
|
|
5503
|
+
}): void;
|
|
4880
5504
|
get gravityScale(): number;
|
|
4881
5505
|
get output(): Body3DOptions["output"];
|
|
4882
5506
|
/** Center, px (what Layer3D's `x` / `y` / `z` mean). */
|
|
@@ -4944,6 +5568,20 @@ declare class PhysicsWorld3D extends WorldCore<Vec3, Quat, PhysicsBody3D> {
|
|
|
4944
5568
|
constructor(backend: PhysicsBackend, options: World3DOptions);
|
|
4945
5569
|
/** Adds a body for a Layer3D primitive or model (centered on its `x/y/z`), or a plain box. */
|
|
4946
5570
|
body(target: LayoutNode | PhysicsBox3D, options?: Body3DOptions): PhysicsBody3D;
|
|
5571
|
+
/** @internal A body with an explicit collider (px), at a pose in px and degrees. */
|
|
5572
|
+
shapedBody(layer: LayerLike$1 | undefined, position: Vec3, rotation: Vec3, shape: Shape3D, options: Body3DOptions): PhysicsBody3D;
|
|
5573
|
+
/** @internal Runs after each simulated frame (frame relative to the world's start). */
|
|
5574
|
+
onStep(hook: (frame: number, pairs: Array<[PhysicsBody3D, PhysicsBody3D]>) => void): void;
|
|
5575
|
+
/** @internal Runs once the simulation has finished. */
|
|
5576
|
+
onSimulated(hook: () => void): void;
|
|
5577
|
+
/**
|
|
5578
|
+
* Breaks a Layer3D primitive, extruded text or loaded model into Voronoi
|
|
5579
|
+
* pieces that stay together, looking intact, until the fracture frame (or
|
|
5580
|
+
* until something hits it), then fly apart as rigid bodies. The node is
|
|
5581
|
+
* changed in place: add it to the composition as usual. All pieces draw
|
|
5582
|
+
* in one call per material, the cut faces in `interiorColor`.
|
|
5583
|
+
*/
|
|
5584
|
+
fracture(target: LayoutNode, options?: Fracture3DOptions): Fracture3D;
|
|
4947
5585
|
/** A fixed, very large floor whose top face sits at `y`. */
|
|
4948
5586
|
ground(options: {
|
|
4949
5587
|
y: number;
|
|
@@ -4988,6 +5626,47 @@ declare class PhysicsWorld3D extends WorldCore<Vec3, Quat, PhysicsBody3D> {
|
|
|
4988
5626
|
private endpoints;
|
|
4989
5627
|
}
|
|
4990
5628
|
//#endregion
|
|
5629
|
+
//#region src/procedural3d.d.ts
|
|
5630
|
+
type GeometryKeys = "type" | "color" | "material";
|
|
5631
|
+
type Terrain3DOptions = Primitive3DNodeOptions & Omit<TerrainGeometryOptions, GeometryKeys> & {
|
|
5632
|
+
/**
|
|
5633
|
+
* Custom heights: `(u, v) => 0..1` over the grid (u across x, v across
|
|
5634
|
+
* z, both 0..1 from the near-left corner). Sampled into `heights`.
|
|
5635
|
+
*/
|
|
5636
|
+
heightFn?: (u: number, v: number) => number;
|
|
5637
|
+
};
|
|
5638
|
+
type Sdf3DOptions = Primitive3DNodeOptions & Omit<SdfGeometryOptions, GeometryKeys>;
|
|
5639
|
+
type Scatter3DOptions = Omit<Instances3DOptions, "count" | "instanceAt" | "transforms" | "bodies"> & ScatterOptions & {
|
|
5640
|
+
/** The surface: `Layer3D.terrain`, `Layer3D.sdf`, any primitive or `Layer.model`. */
|
|
5641
|
+
surface: AnimatableNode<Model3DNode>;
|
|
5642
|
+
/** Push each instance this far into the surface, px. Default 0. */
|
|
5643
|
+
sink?: number;
|
|
5644
|
+
/** Procedural wind sway; the meshes bend from their base. */
|
|
5645
|
+
wind?: WindConfig;
|
|
5646
|
+
};
|
|
5647
|
+
/** A terrain node's helpers for standing other layers on it. */
|
|
5648
|
+
interface TerrainSurface {
|
|
5649
|
+
/**
|
|
5650
|
+
* Surface y at (x, z) in the terrain's parent space (where its own x, y,
|
|
5651
|
+
* z live), so a camera, light, video screen or model can stand on it.
|
|
5652
|
+
* Follows the terrain's position and scale; rotation is not applied.
|
|
5653
|
+
*/
|
|
5654
|
+
heightAt(x: number, z: number): number;
|
|
5655
|
+
/** Unit surface normal at (x, z), parent space (unrotated). */
|
|
5656
|
+
normalAt(x: number, z: number): [number, number, number];
|
|
5657
|
+
/** Normalized altitude 0..1 at (x, z). */
|
|
5658
|
+
elevationAt(x: number, z: number): number;
|
|
5659
|
+
}
|
|
5660
|
+
type Terrain3DNode = AnimatableNode<Model3DNode> & TerrainSurface;
|
|
5661
|
+
type Scatter3DNode = AnimatableNode<Model3DNode> & {
|
|
5662
|
+
/**
|
|
5663
|
+
* The scattered points (surface position, normal, rotation, scale) in the
|
|
5664
|
+
* surface's parent space, for placing other layers among the instances.
|
|
5665
|
+
* Empty for a surface loaded from a file (its mesh is read at render).
|
|
5666
|
+
*/
|
|
5667
|
+
points(): ScatterPoint[];
|
|
5668
|
+
};
|
|
5669
|
+
//#endregion
|
|
4991
5670
|
//#region src/swarm3d.d.ts
|
|
4992
5671
|
interface Swarm3DOptions extends Surface3DOptions {
|
|
4993
5672
|
id?: string;
|
|
@@ -5122,6 +5801,36 @@ interface Surface3DOptions {
|
|
|
5122
5801
|
emissiveIntensity?: number;
|
|
5123
5802
|
/** Falls into a `castShadow` light's shadow map (meshes default on, flat layers off). */
|
|
5124
5803
|
castShadow?: boolean;
|
|
5804
|
+
/** Clear varnish layer over the base 0..1 (car paint, lacquer, wet coats). */
|
|
5805
|
+
clearcoat?: SignalOrNumber;
|
|
5806
|
+
/** Roughness of the clearcoat layer 0..1. Default 0.08. */
|
|
5807
|
+
clearcoatRoughness?: SignalOrNumber;
|
|
5808
|
+
/** Stretched highlight -1..1 (brushed metal, satin, hair). 0 = round. */
|
|
5809
|
+
anisotropy?: SignalOrNumber;
|
|
5810
|
+
/** Brush direction in degrees around the surface normal. Default 0. */
|
|
5811
|
+
anisotropyRotation?: SignalOrNumber;
|
|
5812
|
+
/** Light bleeding through the surface 0..1 (wax, jade, skin, leaves). */
|
|
5813
|
+
subsurface?: SignalOrNumber;
|
|
5814
|
+
/** Color of the scattered light (CSS color). Default "#ff6b4a". */
|
|
5815
|
+
subsurfaceColor?: string;
|
|
5816
|
+
/** Velvet / cloth rim glow at grazing angles 0..1. */
|
|
5817
|
+
sheen?: SignalOrNumber;
|
|
5818
|
+
/** Sheen tint (CSS color). Default "#ffffff". */
|
|
5819
|
+
sheenColor?: string;
|
|
5820
|
+
/** Sheen fiber roughness 0.05..1. Default 0.5. */
|
|
5821
|
+
sheenRoughness?: SignalOrNumber;
|
|
5822
|
+
/** Thin-film rainbow (soap, oil, beetle shells): 0..1 or `{ intensity, thickness, ior }`. */
|
|
5823
|
+
iridescence?: SignalOrNumber | IridescenceConfig;
|
|
5824
|
+
/** Film thickness in nanometers 100..1200. Default 400. */
|
|
5825
|
+
iridescenceThickness?: SignalOrNumber;
|
|
5826
|
+
/** Film refractive index 1.05..2.5. Default 1.3. */
|
|
5827
|
+
iridescenceIor?: SignalOrNumber;
|
|
5828
|
+
/** Project textures in world space instead of UVs: `true` or `{ scale, sharpness }`. */
|
|
5829
|
+
triplanar?: boolean | TriplanarConfig;
|
|
5830
|
+
/** Triplanar tiling: repeats per 256 world px (> 0 turns triplanar on). */
|
|
5831
|
+
triplanarScale?: SignalOrNumber;
|
|
5832
|
+
/** Triplanar axis blend sharpness 1..16. Default 4. */
|
|
5833
|
+
triplanarSharpness?: SignalOrNumber;
|
|
5125
5834
|
}
|
|
5126
5835
|
interface CubeFaceConfig extends Surface3DOptions {
|
|
5127
5836
|
background?: string;
|
|
@@ -5152,6 +5861,12 @@ interface Cube3DOptions extends Surface3DOptions {
|
|
|
5152
5861
|
rotateX?: number;
|
|
5153
5862
|
rotateY?: number;
|
|
5154
5863
|
rotateZ?: number;
|
|
5864
|
+
/** Alias for `rotateX`. */
|
|
5865
|
+
rotationX?: number;
|
|
5866
|
+
/** Alias for `rotateY`. */
|
|
5867
|
+
rotationY?: number;
|
|
5868
|
+
/** Alias for `rotateZ`. */
|
|
5869
|
+
rotationZ?: number;
|
|
5155
5870
|
faces?: {
|
|
5156
5871
|
front?: CubeFaceInput;
|
|
5157
5872
|
back?: CubeFaceInput;
|
|
@@ -5184,6 +5899,12 @@ interface Carousel3DOptions {
|
|
|
5184
5899
|
rotateX?: number;
|
|
5185
5900
|
rotateY?: number;
|
|
5186
5901
|
rotateZ?: number;
|
|
5902
|
+
/** Alias for `rotateX`. */
|
|
5903
|
+
rotationX?: number;
|
|
5904
|
+
/** Alias for `rotateY`. */
|
|
5905
|
+
rotationY?: number;
|
|
5906
|
+
/** Alias for `rotateZ`. */
|
|
5907
|
+
rotationZ?: number;
|
|
5187
5908
|
faceInward?: boolean;
|
|
5188
5909
|
itemWidth?: number;
|
|
5189
5910
|
itemHeight?: number;
|
|
@@ -5198,8 +5919,12 @@ interface Prism3DOptions extends Surface3DOptions {
|
|
|
5198
5919
|
radius?: number;
|
|
5199
5920
|
/** Optional top (-y) radius; defaults to `radius`. */
|
|
5200
5921
|
radiusTop?: number;
|
|
5922
|
+
/** Alias for `radiusTop`. */
|
|
5923
|
+
topRadius?: number;
|
|
5201
5924
|
/** Optional bottom (+y) radius; defaults to `radius`. */
|
|
5202
5925
|
radiusBottom?: number;
|
|
5926
|
+
/** Alias for `radiusBottom`. */
|
|
5927
|
+
bottomRadius?: number;
|
|
5203
5928
|
/** Height along Y (default 100). */
|
|
5204
5929
|
height?: number;
|
|
5205
5930
|
x?: number;
|
|
@@ -5208,6 +5933,12 @@ interface Prism3DOptions extends Surface3DOptions {
|
|
|
5208
5933
|
rotateX?: number;
|
|
5209
5934
|
rotateY?: number;
|
|
5210
5935
|
rotateZ?: number;
|
|
5936
|
+
/** Alias for `rotateX`. */
|
|
5937
|
+
rotationX?: number;
|
|
5938
|
+
/** Alias for `rotateY`. */
|
|
5939
|
+
rotationY?: number;
|
|
5940
|
+
/** Alias for `rotateZ`. */
|
|
5941
|
+
rotationZ?: number;
|
|
5211
5942
|
scale?: number;
|
|
5212
5943
|
scaleX?: number;
|
|
5213
5944
|
scaleY?: number;
|
|
@@ -5248,6 +5979,8 @@ interface Pyramid3DOptions extends Surface3DOptions {
|
|
|
5248
5979
|
radius?: number;
|
|
5249
5980
|
/** Optional top (-y) truncation radius for a frustum pyramid (default 0 = sharp apex). */
|
|
5250
5981
|
radiusTop?: number;
|
|
5982
|
+
/** Alias for `radiusTop`. */
|
|
5983
|
+
topRadius?: number;
|
|
5251
5984
|
/** Height from base (+y) to apex (-y) (default 100). */
|
|
5252
5985
|
height?: number;
|
|
5253
5986
|
/** Leave the base cap off (default false = solid capped pyramid). */
|
|
@@ -5260,6 +5993,12 @@ interface Pyramid3DOptions extends Surface3DOptions {
|
|
|
5260
5993
|
rotateX?: number;
|
|
5261
5994
|
rotateY?: number;
|
|
5262
5995
|
rotateZ?: number;
|
|
5996
|
+
/** Alias for `rotateX`. */
|
|
5997
|
+
rotationX?: number;
|
|
5998
|
+
/** Alias for `rotateY`. */
|
|
5999
|
+
rotationY?: number;
|
|
6000
|
+
/** Alias for `rotateZ`. */
|
|
6001
|
+
rotationZ?: number;
|
|
5263
6002
|
scale?: number;
|
|
5264
6003
|
scaleX?: number;
|
|
5265
6004
|
scaleY?: number;
|
|
@@ -5293,6 +6032,12 @@ interface Plane3DOptions extends Surface3DOptions {
|
|
|
5293
6032
|
rotateX?: number;
|
|
5294
6033
|
rotateY?: number;
|
|
5295
6034
|
rotateZ?: number;
|
|
6035
|
+
/** Alias for `rotateX`. */
|
|
6036
|
+
rotationX?: number;
|
|
6037
|
+
/** Alias for `rotateY`. */
|
|
6038
|
+
rotationY?: number;
|
|
6039
|
+
/** Alias for `rotateZ`. */
|
|
6040
|
+
rotationZ?: number;
|
|
5296
6041
|
background?: string;
|
|
5297
6042
|
borderRadius?: number;
|
|
5298
6043
|
twoSided?: boolean;
|
|
@@ -5324,6 +6069,12 @@ interface Grid3DOptions {
|
|
|
5324
6069
|
rotateX?: number;
|
|
5325
6070
|
rotateY?: number;
|
|
5326
6071
|
rotateZ?: number;
|
|
6072
|
+
/** Alias for `rotateX`. */
|
|
6073
|
+
rotationX?: number;
|
|
6074
|
+
/** Alias for `rotateY`. */
|
|
6075
|
+
rotationY?: number;
|
|
6076
|
+
/** Alias for `rotateZ`. */
|
|
6077
|
+
rotationZ?: number;
|
|
5327
6078
|
opacity?: number;
|
|
5328
6079
|
}
|
|
5329
6080
|
interface Text3DOptions extends Surface3DOptions {
|
|
@@ -5340,6 +6091,12 @@ interface Text3DOptions extends Surface3DOptions {
|
|
|
5340
6091
|
rotateX?: number;
|
|
5341
6092
|
rotateY?: number;
|
|
5342
6093
|
rotateZ?: number;
|
|
6094
|
+
/** Alias for `rotateX`. */
|
|
6095
|
+
rotationX?: number;
|
|
6096
|
+
/** Alias for `rotateY`. */
|
|
6097
|
+
rotationY?: number;
|
|
6098
|
+
/** Alias for `rotateZ`. */
|
|
6099
|
+
rotationZ?: number;
|
|
5343
6100
|
scale?: number;
|
|
5344
6101
|
scaleX?: number;
|
|
5345
6102
|
scaleY?: number;
|
|
@@ -5400,6 +6157,12 @@ interface Primitive3DNodeOptions extends Surface3DOptions {
|
|
|
5400
6157
|
rotateX?: number;
|
|
5401
6158
|
rotateY?: number;
|
|
5402
6159
|
rotateZ?: number;
|
|
6160
|
+
/** Alias for `rotateX`. */
|
|
6161
|
+
rotationX?: number;
|
|
6162
|
+
/** Alias for `rotateY`. */
|
|
6163
|
+
rotationY?: number;
|
|
6164
|
+
/** Alias for `rotateZ`. */
|
|
6165
|
+
rotationZ?: number;
|
|
5403
6166
|
scale?: number;
|
|
5404
6167
|
scaleX?: number;
|
|
5405
6168
|
scaleY?: number;
|
|
@@ -5429,6 +6192,16 @@ interface Primitive3DNodeOptions extends Surface3DOptions {
|
|
|
5429
6192
|
opacity?: number;
|
|
5430
6193
|
startFrame?: number;
|
|
5431
6194
|
durationFrames?: number;
|
|
6195
|
+
/**
|
|
6196
|
+
* Base-color texture wrapped by the mesh's UVs: an image path, or any
|
|
6197
|
+
* layer (`Layer.video`, `Layer.image`, a layout tree with text…) drawn
|
|
6198
|
+
* fresh every frame, so video plays on the surface. Without its own
|
|
6199
|
+
* x / y / width / height the layer fills the frame, which maps to the
|
|
6200
|
+
* whole UV square. Combine with `triplanar` to project it in world space.
|
|
6201
|
+
*/
|
|
6202
|
+
texture?: string | LayoutNode;
|
|
6203
|
+
/** Procedural wind sway: vertices bend downwind by height above the mesh base. */
|
|
6204
|
+
wind?: WindConfig;
|
|
5432
6205
|
}
|
|
5433
6206
|
type RoundedBox3DOptions = Primitive3DNodeOptions & Omit<RoundedBoxGeometryOptions, "type" | "color" | "material">;
|
|
5434
6207
|
type Sphere3DOptions = Primitive3DNodeOptions & Omit<SphereGeometryOptions, "type" | "color" | "material">;
|
|
@@ -5470,6 +6243,12 @@ interface InstanceTransform3D {
|
|
|
5470
6243
|
color?: string | [number, number, number, number];
|
|
5471
6244
|
emissive?: string | [number, number, number];
|
|
5472
6245
|
emissiveIntensity?: number;
|
|
6246
|
+
/** Crowds: index into `crowd.clips` (default: instance index % clip count). */
|
|
6247
|
+
clip?: number;
|
|
6248
|
+
/** Crowds: seconds into the clip at frame 0 (default: seeded random, or 0 with `phase: "sync"`). */
|
|
6249
|
+
animOffset?: number;
|
|
6250
|
+
/** Crowds: playback speed (default: seeded within `crowd.speedRange`). */
|
|
6251
|
+
animSpeed?: number;
|
|
5473
6252
|
}
|
|
5474
6253
|
interface Instances3DOptions extends Surface3DOptions {
|
|
5475
6254
|
id?: string;
|
|
@@ -5493,12 +6272,27 @@ interface Instances3DOptions extends Surface3DOptions {
|
|
|
5493
6272
|
color: string;
|
|
5494
6273
|
intensity?: number;
|
|
5495
6274
|
};
|
|
6275
|
+
/** Procedural wind sway: each instance bends downwind from its base. */
|
|
6276
|
+
wind?: WindConfig;
|
|
6277
|
+
/**
|
|
6278
|
+
* Skinned crowd: the mesh is an animated model (`Layer.glb`, `Layer.gltf`)
|
|
6279
|
+
* and every instance plays one of `clips` at its own phase and speed,
|
|
6280
|
+
* skinned on the GPU from a palette baked once: thousands of characters,
|
|
6281
|
+
* one draw call per mesh.
|
|
6282
|
+
*/
|
|
6283
|
+
crowd?: CrowdConfig;
|
|
5496
6284
|
x?: number;
|
|
5497
6285
|
y?: number;
|
|
5498
6286
|
z?: number;
|
|
5499
6287
|
rotateX?: number;
|
|
5500
6288
|
rotateY?: number;
|
|
5501
6289
|
rotateZ?: number;
|
|
6290
|
+
/** Alias for `rotateX`. */
|
|
6291
|
+
rotationX?: number;
|
|
6292
|
+
/** Alias for `rotateY`. */
|
|
6293
|
+
rotationY?: number;
|
|
6294
|
+
/** Alias for `rotateZ`. */
|
|
6295
|
+
rotationZ?: number;
|
|
5502
6296
|
scale?: number;
|
|
5503
6297
|
color?: string;
|
|
5504
6298
|
colorTint?: string;
|
|
@@ -5538,12 +6332,12 @@ declare const Layer3D: {
|
|
|
5538
6332
|
* outward flat-shaded facet normals, and full material options.
|
|
5539
6333
|
* If `sideConfigs` are provided, builds a multi-panel preserve-3d container with all material props applied.
|
|
5540
6334
|
*/
|
|
5541
|
-
prism(options
|
|
6335
|
+
prism(options?: Prism3DOptions): SolidShape3DNode;
|
|
5542
6336
|
/**
|
|
5543
6337
|
* Creates a solid N-sided regular polygonal pyramid (or truncated pyramid when `radiusTop > 0`)
|
|
5544
6338
|
* with a bottom cap and crisp flat-shaded side facets.
|
|
5545
6339
|
*/
|
|
5546
|
-
pyramid(options
|
|
6340
|
+
pyramid(options?: Pyramid3DOptions): AnimatableNode<Model3DNode>;
|
|
5547
6341
|
/**
|
|
5548
6342
|
* Creates a standalone planar 3D card/quad.
|
|
5549
6343
|
*/
|
|
@@ -5638,6 +6432,30 @@ declare const Layer3D: {
|
|
|
5638
6432
|
* Renders hundreds or thousands of 3D meshes in 1 draw call per mesh variant,
|
|
5639
6433
|
* driven by Physics.world3d rigid bodies, procedural callbacks, or transform arrays.
|
|
5640
6434
|
*/
|
|
6435
|
+
/**
|
|
6436
|
+
* Procedural terrain: seeded fractal noise ("fbm" hills, "ridged"
|
|
6437
|
+
* mountains, "terrace" plateaus) or your own heights, optional cliff
|
|
6438
|
+
* overhangs, biome colors by altitude and slope, closed underneath into a
|
|
6439
|
+
* solid block. The node's y is the valley floor; peaks rise `height` px
|
|
6440
|
+
* above it. The node carries `heightAt(x, z)` / `normalAt(x, z)` for
|
|
6441
|
+
* standing cameras, lights, video screens and models on the ground.
|
|
6442
|
+
*/
|
|
6443
|
+
terrain(options: Terrain3DOptions): Terrain3DNode;
|
|
6444
|
+
/**
|
|
6445
|
+
* A sculpture of signed-distance primitives (sphere, box, cylinder,
|
|
6446
|
+
* capsule, torus, gyroid) joined in order by union / subtract /
|
|
6447
|
+
* intersect, hard or smooth (`smoothness` px), meshed watertight inside
|
|
6448
|
+
* `bounds`. Colored primitives blend where their joins blend.
|
|
6449
|
+
*/
|
|
6450
|
+
sdf(options: Sdf3DOptions): AnimatableNode<Model3DNode>;
|
|
6451
|
+
/**
|
|
6452
|
+
* Scatters instances of one or more meshes over a surface (terrain, SDF,
|
|
6453
|
+
* any primitive or `Layer.model` file): area-weighted, deterministic per
|
|
6454
|
+
* `seed`, filtered by slope / altitude / exclusion zones, spaced by
|
|
6455
|
+
* `minDistance`, each standing on its base. One draw call per mesh
|
|
6456
|
+
* variant. `wind` sways them; `.points()` returns where they stand.
|
|
6457
|
+
*/
|
|
6458
|
+
scatter(options: Scatter3DOptions): Scatter3DNode;
|
|
5641
6459
|
instances(options: Instances3DOptions): AnimatableNode<Model3DNode>;
|
|
5642
6460
|
/**
|
|
5643
6461
|
* GPU-simulated 3D particle swarm and shard system.
|
|
@@ -5648,43 +6466,43 @@ declare const Layer3D: {
|
|
|
5648
6466
|
/**
|
|
5649
6467
|
* Creates a 3D model node rendered natively with WebGPU mesh shaders.
|
|
5650
6468
|
*/
|
|
5651
|
-
model(options?:
|
|
6469
|
+
model(options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5652
6470
|
/**
|
|
5653
6471
|
* Convenience helper to create a 3D Wavefront OBJ model node.
|
|
5654
6472
|
*/
|
|
5655
|
-
obj(src: string, options?:
|
|
6473
|
+
obj(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5656
6474
|
/**
|
|
5657
6475
|
* Convenience helper to create a 3D Autodesk FBX model node with skeletal animation support.
|
|
5658
6476
|
*/
|
|
5659
|
-
fbx(src: string, options?:
|
|
6477
|
+
fbx(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5660
6478
|
/**
|
|
5661
6479
|
* Convenience helper to create a 3D glTF 2.0 model node.
|
|
5662
6480
|
*/
|
|
5663
|
-
gltf(src: string, options?:
|
|
6481
|
+
gltf(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5664
6482
|
/**
|
|
5665
6483
|
* Convenience helper to create a 3D GLB binary container model node.
|
|
5666
6484
|
*/
|
|
5667
|
-
glb(src: string, options?:
|
|
6485
|
+
glb(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5668
6486
|
/**
|
|
5669
6487
|
* Convenience helper to create a 3D STL CAD / 3D printing model node.
|
|
5670
6488
|
*/
|
|
5671
|
-
stl(src: string, options?:
|
|
6489
|
+
stl(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5672
6490
|
/**
|
|
5673
6491
|
* Convenience helper to create a 3D Stanford PLY scan model node.
|
|
5674
6492
|
*/
|
|
5675
|
-
ply(src: string, options?:
|
|
6493
|
+
ply(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5676
6494
|
/**
|
|
5677
6495
|
* Convenience helper to create a 3D MagicaVoxel VOX model node.
|
|
5678
6496
|
*/
|
|
5679
|
-
vox(src: string, options?:
|
|
6497
|
+
vox(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5680
6498
|
/**
|
|
5681
6499
|
* Convenience helper to create a 3D Studio (3DS) binary model node.
|
|
5682
6500
|
*/
|
|
5683
|
-
threeDS(src: string, options?:
|
|
6501
|
+
threeDS(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5684
6502
|
/**
|
|
5685
6503
|
* Convenience helper to create a 3D Object File Format (OFF) model node.
|
|
5686
6504
|
*/
|
|
5687
|
-
off(src: string, options?:
|
|
6505
|
+
off(src: string, options?: Model3DOptions): AnimatableNode<Model3DNode>;
|
|
5688
6506
|
};
|
|
5689
6507
|
//#endregion
|
|
5690
6508
|
//#region src/transitions.d.ts
|
|
@@ -5884,6 +6702,8 @@ interface TextMeasureStyle {
|
|
|
5884
6702
|
fontSize?: number;
|
|
5885
6703
|
fontWeight?: string | number;
|
|
5886
6704
|
fontStyle?: string;
|
|
6705
|
+
/** Variable font axes, as `TextNode.fontVariations`. */
|
|
6706
|
+
fontVariations?: Record<string, number>;
|
|
5887
6707
|
letterSpacing?: number;
|
|
5888
6708
|
lineHeight?: number;
|
|
5889
6709
|
padding?: number;
|
|
@@ -5936,6 +6756,12 @@ interface LightingRigOptions {
|
|
|
5936
6756
|
shadowSoftness?: number;
|
|
5937
6757
|
/** Fog fading into the background, e.g. `{ color: BG, start: 2500, end: 6000 }`. */
|
|
5938
6758
|
fog?: EnvironmentOptions["fog"];
|
|
6759
|
+
/** Volumetric fog & shadowed light shafts (god rays): `true` or settings. */
|
|
6760
|
+
volumetricFog?: EnvironmentOptions["volumetricFog"];
|
|
6761
|
+
/** Screen-space reflections of nearby geometry on glossy surfaces: `true` or settings. */
|
|
6762
|
+
ssr?: EnvironmentOptions["ssr"];
|
|
6763
|
+
/** Screen-space diffuse GI (contact occlusion and color bleeding): `true` or settings. */
|
|
6764
|
+
gi?: EnvironmentOptions["gi"];
|
|
5939
6765
|
/** Glow around emissive surfaces and highlights: `true` or settings. */
|
|
5940
6766
|
bloom?: EnvironmentOptions["bloom"];
|
|
5941
6767
|
/** Prefix for the rig's node ids. */
|
|
@@ -6425,13 +7251,15 @@ declare class Media {
|
|
|
6425
7251
|
*/
|
|
6426
7252
|
toVirtualMedia(): VirtualMediaData;
|
|
6427
7253
|
/**
|
|
6428
|
-
* Renders a single frame from this media pipeline to
|
|
7254
|
+
* Renders a single frame from this media pipeline to an image or raw RGBA Buffer.
|
|
6429
7255
|
* Can render either by timestamp in milliseconds (`atMs`) or by frame index (`frame`).
|
|
6430
7256
|
*/
|
|
6431
7257
|
renderFrame(options?: {
|
|
6432
7258
|
atMs?: number;
|
|
6433
7259
|
frame?: number;
|
|
6434
7260
|
fps?: number;
|
|
7261
|
+
renderId?: string;
|
|
7262
|
+
format?: "png" | "rgba" | "raw" | "jpeg" | "jpg" | "webp";
|
|
6435
7263
|
renderer?: HeadlessMediaRenderer;
|
|
6436
7264
|
}): Promise<Buffer>;
|
|
6437
7265
|
get fps(): number | undefined;
|
|
@@ -6702,13 +7530,15 @@ declare class Composition {
|
|
|
6702
7530
|
*/
|
|
6703
7531
|
toVirtualMediaAsync(options?: Partial<CompositorToProgramOptions>): Promise<VirtualMediaData>;
|
|
6704
7532
|
/**
|
|
6705
|
-
* Renders a single frame from the composition to
|
|
7533
|
+
* Renders a single frame from the composition to an image or raw RGBA Buffer.
|
|
6706
7534
|
* Can render either by timestamp in milliseconds (`atMs`) or by frame index (`frame`).
|
|
6707
7535
|
*/
|
|
6708
|
-
renderFrame(
|
|
7536
|
+
renderFrame(frameOrOptions?: number | {
|
|
6709
7537
|
atMs?: number;
|
|
6710
7538
|
fps?: number;
|
|
6711
7539
|
frame?: number;
|
|
7540
|
+
renderId?: string;
|
|
7541
|
+
format?: "png" | "rgba" | "raw" | "jpeg" | "jpg" | "webp";
|
|
6712
7542
|
renderer?: HeadlessMediaRenderer;
|
|
6713
7543
|
}): Promise<Buffer>;
|
|
6714
7544
|
/**
|
|
@@ -6861,9 +7691,9 @@ declare const Layer: {
|
|
|
6861
7691
|
* `props` applies to that box: position, id, timing, effects.
|
|
6862
7692
|
*/
|
|
6863
7693
|
chart: (options: ChartOptions, props?: Partial<BoxNode>) => AnimatableNode<BoxNode>;
|
|
6864
|
-
camera: (options?:
|
|
6865
|
-
light: (options?:
|
|
6866
|
-
ambientLight: (color?: string |
|
|
7694
|
+
camera: (options?: CameraOptions) => AnimatableNode<CameraNode>;
|
|
7695
|
+
light: (options?: LightOptions) => AnimatableNode<LightNode>;
|
|
7696
|
+
ambientLight: (color?: string | LightOptions, intensity?: SignalOrNumber, options?: LightOptions) => AnimatableNode<LightNode>;
|
|
6867
7697
|
/**
|
|
6868
7698
|
* Scenes back to back with transitions between them; see `Transition`.
|
|
6869
7699
|
* `comp.add(Layer.sequence([{ scene: hero(), duration: 90 },
|
|
@@ -6871,40 +7701,115 @@ declare const Layer: {
|
|
|
6871
7701
|
* The result's `totalFrames` is the sequence length.
|
|
6872
7702
|
*/
|
|
6873
7703
|
sequence: (entries: SequenceEntry[], options?: SceneSequenceOptions) => SequenceNode;
|
|
6874
|
-
/** See {@link Light.environment}: `Layer.environment("studio", { exposure: 0.3 })`. */
|
|
6875
|
-
environment: (presetOrOptions?: EnvironmentPreset | EnvironmentOptions, options?: EnvironmentOptions) => AnimatableNode<LightNode>;
|
|
6876
|
-
directionalLight: (options?:
|
|
6877
|
-
pointLight: (options?:
|
|
6878
|
-
spotLight: (options?:
|
|
7704
|
+
/** See {@link Light.environment}: `Layer.environment("studio", { exposure: 0.3 })` or `Layer.environment("sky.hdr")`. */
|
|
7705
|
+
environment: (presetOrOptions?: EnvironmentPreset | HdriPath | EnvironmentOptions, options?: EnvironmentOptions) => AnimatableNode<LightNode>;
|
|
7706
|
+
directionalLight: (options?: LightOptions) => AnimatableNode<LightNode>;
|
|
7707
|
+
pointLight: (options?: LightOptions) => AnimatableNode<LightNode>;
|
|
7708
|
+
spotLight: (options?: LightOptions) => AnimatableNode<LightNode>;
|
|
7709
|
+
rectLight: (options?: LightOptions) => AnimatableNode<LightNode>;
|
|
6879
7710
|
cube: (options: Cube3DOptions) => AnimatableNode<BoxNode>;
|
|
6880
7711
|
carousel3d: (options: Carousel3DOptions) => AnimatableNode<BoxNode>;
|
|
6881
7712
|
plane3d: (options: Plane3DOptions) => AnimatableNode<BoxNode>;
|
|
6882
7713
|
prism3d: (options?: Prism3DOptions) => SolidShape3DNode;
|
|
6883
|
-
model: (options?:
|
|
6884
|
-
obj: (src: string, options?:
|
|
6885
|
-
fbx: (src: string, options?:
|
|
6886
|
-
gltf: (src: string, options?:
|
|
6887
|
-
glb: (src: string, options?:
|
|
6888
|
-
stl: (src: string, options?:
|
|
6889
|
-
ply: (src: string, options?:
|
|
6890
|
-
vox: (src: string, options?:
|
|
6891
|
-
threeDS: (src: string, options?:
|
|
6892
|
-
off: (src: string, options?:
|
|
7714
|
+
model: (options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7715
|
+
obj: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7716
|
+
fbx: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7717
|
+
gltf: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7718
|
+
glb: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7719
|
+
stl: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7720
|
+
ply: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7721
|
+
vox: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7722
|
+
threeDS: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7723
|
+
off: (src: string, options?: Model3DOptions) => AnimatableNode<Model3DNode>;
|
|
7724
|
+
};
|
|
7725
|
+
interface CameraOptions extends Partial<CameraNode> {
|
|
7726
|
+
/** Top-level shorthand for `lens.fov` (vertical field of view in degrees). */
|
|
7727
|
+
fov?: number;
|
|
7728
|
+
/** Top-level shorthand for `lens.focalLength` (mm). */
|
|
7729
|
+
focalLength?: number;
|
|
7730
|
+
/** Top-level shorthand for `lens.sensorWidth` (mm). */
|
|
7731
|
+
sensorWidth?: number;
|
|
7732
|
+
/** Top-level shorthand for `lens.near` clipping plane. */
|
|
7733
|
+
near?: number;
|
|
7734
|
+
/** Top-level shorthand for `lens.far` clipping plane. */
|
|
7735
|
+
far?: number;
|
|
7736
|
+
/** Top-level shorthand for `lens.zoom` multiplier. */
|
|
7737
|
+
zoom?: number;
|
|
7738
|
+
}
|
|
7739
|
+
interface Model3DOptions extends Partial<Model3DNode> {
|
|
7740
|
+
/** Alias for `rotateX`. */
|
|
7741
|
+
rotationX?: number;
|
|
7742
|
+
/** Alias for `rotateY`. */
|
|
7743
|
+
rotationY?: number;
|
|
7744
|
+
/** Alias for `rotateZ`. */
|
|
7745
|
+
rotationZ?: number;
|
|
7746
|
+
}
|
|
7747
|
+
type SignalOrNumber = number | ProgrammaticSignal | Signal<number> | {
|
|
7748
|
+
get: (ctx: FrameContext) => number;
|
|
6893
7749
|
};
|
|
7750
|
+
interface VolumetricFogNoiseOptions extends Omit<EnvironmentVolumetricFogNoise, "strength"> {
|
|
7751
|
+
strength?: SignalOrNumber;
|
|
7752
|
+
}
|
|
7753
|
+
interface VolumetricFogOptions extends Omit<EnvironmentVolumetricFog, "density" | "anisotropy" | "noise"> {
|
|
7754
|
+
density?: SignalOrNumber;
|
|
7755
|
+
anisotropy?: SignalOrNumber;
|
|
7756
|
+
noise?: boolean | VolumetricFogNoiseOptions;
|
|
7757
|
+
}
|
|
7758
|
+
/** An equirectangular panorama path (Radiance `.hdr` or OpenEXR `.exr`), usable in place of a preset name. */
|
|
7759
|
+
type HdriPath = `${string}.hdr` | `${string}.HDR` | `${string}.exr` | `${string}.EXR`;
|
|
6894
7760
|
/** World settings for `Layer.environment` (see `LightNode` for every field). */
|
|
6895
|
-
|
|
7761
|
+
interface EnvironmentOptions extends Partial<Pick<LightNode, "id" | "preset" | "hdri" | "color" | "top" | "horizon" | "bottom" | "softboxes" | "toneMapping" | "fog" | "floor" | "outlines" | "ssr" | "gi" | "bloom" | "startFrame" | "durationFrames">> {
|
|
7762
|
+
intensity?: SignalOrNumber;
|
|
7763
|
+
rotation?: SignalOrNumber;
|
|
7764
|
+
exposure?: SignalOrNumber;
|
|
7765
|
+
volumetricFog?: boolean | VolumetricFogOptions;
|
|
7766
|
+
volumetricFogDensity?: SignalOrNumber;
|
|
7767
|
+
volumetricFogAnisotropy?: SignalOrNumber;
|
|
7768
|
+
volumetricFogNoiseStrength?: SignalOrNumber;
|
|
7769
|
+
}
|
|
7770
|
+
/** Options for `Light.*` and `Layer.*Light` (numeric fields also accept live `Signal`s). */
|
|
7771
|
+
interface LightOptions extends Omit<Partial<LightNode>, "intensity" | "x" | "y" | "z" | "targetX" | "targetY" | "targetZ" | "radius" | "angle" | "penumbra" | "decay" | "width" | "height" | "rotation" | "exposure" | "volumetricFog" | "volumetricFogDensity" | "volumetricFogAnisotropy" | "volumetricFogNoiseStrength"> {
|
|
7772
|
+
intensity?: SignalOrNumber;
|
|
7773
|
+
x?: SignalOrNumber;
|
|
7774
|
+
y?: SignalOrNumber;
|
|
7775
|
+
z?: SignalOrNumber;
|
|
7776
|
+
targetX?: SignalOrNumber;
|
|
7777
|
+
targetY?: SignalOrNumber;
|
|
7778
|
+
targetZ?: SignalOrNumber;
|
|
7779
|
+
radius?: SignalOrNumber;
|
|
7780
|
+
angle?: SignalOrNumber;
|
|
7781
|
+
penumbra?: SignalOrNumber;
|
|
7782
|
+
decay?: SignalOrNumber;
|
|
7783
|
+
width?: SignalOrNumber;
|
|
7784
|
+
height?: SignalOrNumber;
|
|
7785
|
+
rotation?: SignalOrNumber;
|
|
7786
|
+
exposure?: SignalOrNumber;
|
|
7787
|
+
volumetricFog?: boolean | VolumetricFogOptions;
|
|
7788
|
+
volumetricFogDensity?: SignalOrNumber;
|
|
7789
|
+
volumetricFogAnisotropy?: SignalOrNumber;
|
|
7790
|
+
volumetricFogNoiseStrength?: SignalOrNumber;
|
|
7791
|
+
}
|
|
6896
7792
|
declare const Light: {
|
|
6897
7793
|
/**
|
|
6898
7794
|
* The scene's world: a procedural studio environment that lights and
|
|
6899
|
-
* reflects off every surface, plus exposure, tone mapping
|
|
6900
|
-
* one switches the scene to physically
|
|
6901
|
-
* `roughness` / `metallic`, `emissive` that
|
|
6902
|
-
|
|
6903
|
-
|
|
6904
|
-
|
|
6905
|
-
|
|
6906
|
-
|
|
6907
|
-
|
|
7795
|
+
* reflects off every surface, plus exposure, tone mapping, fog and
|
|
7796
|
+
* volumetric light shafts. Adding one switches the scene to physically
|
|
7797
|
+
* based shading (GGX, real `roughness` / `metallic`, `emissive` that
|
|
7798
|
+
* blooms past white). Pass a `.hdr` or `.exr` path instead of a preset name to light
|
|
7799
|
+
* and reflect from a captured equirectangular panorama:
|
|
7800
|
+
* `Light.environment("assets/hdri/studio.hdr", { intensity: 1.5 })`.
|
|
7801
|
+
*/
|
|
7802
|
+
environment: (presetOrOptions?: EnvironmentPreset | HdriPath | EnvironmentOptions, options?: EnvironmentOptions) => AnimatableNode<LightNode>;
|
|
7803
|
+
ambient: (color?: string | LightOptions, intensity?: SignalOrNumber, options?: LightOptions) => AnimatableNode<LightNode>;
|
|
7804
|
+
directional: (options?: LightOptions) => AnimatableNode<LightNode>;
|
|
7805
|
+
point: (options?: LightOptions) => AnimatableNode<LightNode>;
|
|
7806
|
+
spot: (options?: LightOptions) => AnimatableNode<LightNode>;
|
|
7807
|
+
/**
|
|
7808
|
+
* A rectangular area light (studio softbox / LED panel / neon window)
|
|
7809
|
+
* with solid-angle diffuse illumination and representative-point GGX
|
|
7810
|
+
* specular reflections.
|
|
7811
|
+
*/
|
|
7812
|
+
rect: (options?: LightOptions) => AnimatableNode<LightNode>;
|
|
6908
7813
|
};
|
|
6909
7814
|
declare function section(source: string | MediaNode | Composition, targetOrOptions?: ObjectTrackSignals | SectionOptions, options?: SectionOptions): SectionNode;
|
|
6910
7815
|
declare function blurRegion(sourceOrLayer: string | AnimatableNode<MediaNode>, target: ObjectTrackSignals, options?: Partial<BlurProps> & {
|
|
@@ -7003,5 +7908,5 @@ type ComponentNode<C extends Cues = Cues> = AnimatableNode<BoxNode> & ComponentE
|
|
|
7003
7908
|
*/
|
|
7004
7909
|
declare function bindComponent<S$1 extends z.ZodRawShape, C extends Cues, E extends object = object>(definition: ComponentDefinition<S$1, C, E>): (props: z.input<z.ZodObject<S$1>> & BaseProps) => ComponentNode<C> & E;
|
|
7005
7910
|
//#endregion
|
|
7006
|
-
export {
|
|
7007
|
-
//# sourceMappingURL=index-
|
|
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
|