framefields 2.6.2 → 2.7.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/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-BHuVoNc-.mjs → audio-j3ttoRDX.mjs} +4 -4
- package/dist/{audio-BHuVoNc-.mjs.map → audio-j3ttoRDX.mjs.map} +1 -1
- package/dist/{audio-WcPMxtcz.d.mts → audio-tL8CcPra.d.mts} +3 -3
- package/dist/{audio-WcPMxtcz.d.mts.map → audio-tL8CcPra.d.mts.map} +1 -1
- package/dist/components/index.d.mts +10 -10
- package/dist/components/index.mjs +44 -44
- package/dist/{dist-Wsjx_Rza.mjs → dist-BHTd-EC1.mjs} +92 -19
- package/dist/{dist-Wsjx_Rza.mjs.map → dist-BHTd-EC1.mjs.map} +1 -1
- package/dist/{dist-CSU_2yUb.mjs → dist-BM0ilHvQ.mjs} +115 -21
- package/dist/dist-BM0ilHvQ.mjs.map +1 -0
- package/dist/{dist-CL5JOMSp.mjs → dist-BRXsfWKQ.mjs} +424 -8
- package/dist/dist-BRXsfWKQ.mjs.map +1 -0
- package/dist/{dist-PlaSQJ43.mjs → dist-CPtFZxtu.mjs} +2 -2
- package/dist/{dist-PlaSQJ43.mjs.map → dist-CPtFZxtu.mjs.map} +1 -1
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +35 -35
- package/dist/{effects-BvloJaPQ.mjs → effects-Dy661XS_.mjs} +3 -3
- package/dist/{effects-BvloJaPQ.mjs.map → effects-Dy661XS_.mjs.map} +1 -1
- package/dist/fonts/index.mjs +2 -2
- package/dist/{fonts-DpnBDAqM.mjs → fonts-BcFhAqqO.mjs} +2 -2
- package/dist/{fonts-DpnBDAqM.mjs.map → fonts-BcFhAqqO.mjs.map} +1 -1
- package/dist/{gpu-BvYDrqOC.mjs → gpu-zIhSz_0X.mjs} +2 -2
- package/dist/{gpu-BvYDrqOC.mjs.map → gpu-zIhSz_0X.mjs.map} +1 -1
- package/dist/{index-kj5uSzaI.d.mts → index-B1ENegOQ.d.mts} +204 -2
- package/dist/index-B1ENegOQ.d.mts.map +1 -0
- package/dist/{index-DsGBouQM.d.mts → index-CJRTBLZ4.d.mts} +4 -4
- package/dist/{index-DsGBouQM.d.mts.map → index-CJRTBLZ4.d.mts.map} +1 -1
- package/dist/{index-DcIR_DgU.d.mts → index-Cg30slle.d.mts} +2 -2
- package/dist/{index-DcIR_DgU.d.mts.map → index-Cg30slle.d.mts.map} +1 -1
- package/dist/{index-wUhS1_4W.d.mts → index-DeeMmoEA.d.mts} +2 -2
- package/dist/{index-wUhS1_4W.d.mts.map → index-DeeMmoEA.d.mts.map} +1 -1
- package/dist/{index-C541Ol1N.d.mts → index-ePGQ_C7f.d.mts} +39 -16
- package/dist/index-ePGQ_C7f.d.mts.map +1 -0
- package/dist/{index-C6ihzCpZ.d.mts → index-l1yRugLc.d.mts} +3 -3
- package/dist/{index-C6ihzCpZ.d.mts.map → index-l1yRugLc.d.mts.map} +1 -1
- package/dist/{index-BCzXnNpb.d.mts → index-uDZ9Yuv-.d.mts} +5 -8
- package/dist/index-uDZ9Yuv-.d.mts.map +1 -0
- package/dist/index.d.mts +11 -11
- package/dist/index.mjs +53 -53
- package/dist/preview/index.d.mts +3 -3
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-UMG4Colu.mjs → preview-IpdVFuxv.mjs} +3 -2
- package/dist/{preview-UMG4Colu.mjs.map → preview-IpdVFuxv.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-RF62TV3G.mjs → chunk-25WRUINA.mjs} +1 -1
- package/dist/preview-engine/{chunk-MMVFX42U.mjs → chunk-2AEWPT6Y.mjs} +1 -1
- package/dist/preview-engine/{chunk-IIOHF7MH.mjs → chunk-2MDTUA3W.mjs} +1 -1
- package/dist/preview-engine/{chunk-KWTTANYN.mjs → chunk-2TLABBER.mjs} +1 -1
- package/dist/preview-engine/{chunk-MUOJMF7M.mjs → chunk-3QOJVABU.mjs} +1 -1
- package/dist/preview-engine/{chunk-RDEQ4LQU.mjs → chunk-4Q3ZUTQC.mjs} +1 -1
- package/dist/preview-engine/{chunk-OXXRKNHW.mjs → chunk-5BXCJ2QX.mjs} +1 -1
- package/dist/preview-engine/{chunk-JTT3YX7W.mjs → chunk-5R4UF7YK.mjs} +1 -1
- package/dist/preview-engine/{chunk-SVE3XWO7.mjs → chunk-6VDYWMP5.mjs} +1 -1
- package/dist/preview-engine/{chunk-ULPLHKM2.mjs → chunk-7B7QQDPZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-ULVX4VYT.mjs → chunk-7ZA36EZE.mjs} +1 -1
- package/dist/preview-engine/{chunk-LYSU6S4O.mjs → chunk-AJ6BVUDB.mjs} +1 -1
- package/dist/preview-engine/{chunk-J24VHZS6.mjs → chunk-BDXGUSSF.mjs} +1 -1
- package/dist/preview-engine/{chunk-B7J72YSP.mjs → chunk-CC5V7UBF.mjs} +1 -1
- package/dist/preview-engine/{chunk-JD4TBC6Z.mjs → chunk-CP42LYD7.mjs} +1 -1
- package/dist/preview-engine/{chunk-LN3YAWUD.mjs → chunk-DJWDD3OE.mjs} +1 -1
- package/dist/preview-engine/{chunk-V3FODTPI.mjs → chunk-DZEWY4PR.mjs} +22 -22
- package/dist/preview-engine/{chunk-RKNV5N7D.mjs → chunk-ENGQ55LR.mjs} +1 -1
- package/dist/preview-engine/{chunk-NIILFJKE.mjs → chunk-FBXKVLTB.mjs} +14 -14
- package/dist/preview-engine/{chunk-MJCK5FLZ.mjs → chunk-FMEXTHL7.mjs} +1 -1
- package/dist/preview-engine/{chunk-UEQIO6AH.mjs → chunk-FQ7UCMWR.mjs} +1 -1
- package/dist/preview-engine/{chunk-TPFDAOW7.mjs → chunk-FRIBHQTM.mjs} +1 -1
- package/dist/preview-engine/chunk-FT7HJ6IE.mjs +3 -0
- package/dist/preview-engine/{chunk-YEPYVASB.mjs → chunk-G3UOUGIE.mjs} +1 -1
- package/dist/preview-engine/{chunk-4JX5LBE2.mjs → chunk-H4GDIVX4.mjs} +1 -1
- package/dist/preview-engine/{chunk-DDFWN7DI.mjs → chunk-I7QIQURU.mjs} +1 -1
- package/dist/preview-engine/{chunk-3KHD67Q3.mjs → chunk-ID344UBN.mjs} +1 -1
- package/dist/preview-engine/{chunk-5NT7WWJR.mjs → chunk-IGCXUGHT.mjs} +1 -1
- package/dist/preview-engine/{chunk-QPBTLJ5W.mjs → chunk-IK3YA6MC.mjs} +1 -1
- package/dist/preview-engine/chunk-J5SKQFJ6.mjs +1 -0
- package/dist/preview-engine/{chunk-Q7JN4EHX.mjs → chunk-JOPZNSZJ.mjs} +1 -1
- package/dist/preview-engine/{chunk-SQ52PBF3.mjs → chunk-JOSNIMFT.mjs} +1 -1
- package/dist/preview-engine/{chunk-SXNCNG4L.mjs → chunk-JR443L5E.mjs} +1 -1
- package/dist/preview-engine/{chunk-FZLKPBKS.mjs → chunk-KCAFMWDM.mjs} +1 -1
- package/dist/preview-engine/{chunk-QRYCB6E3.mjs → chunk-LAEPNVOE.mjs} +1 -1
- package/dist/preview-engine/chunk-MAALUQK3.mjs +1974 -0
- package/dist/preview-engine/chunk-MHCXSWK7.mjs +1 -0
- package/dist/preview-engine/{chunk-4INGTMZ5.mjs → chunk-MWBARRK2.mjs} +1 -1
- package/dist/preview-engine/{chunk-GQIRV466.mjs → chunk-MXPN2GB7.mjs} +1 -1
- package/dist/preview-engine/{chunk-W2EZFV4Q.mjs → chunk-NHYB5YC3.mjs} +1 -1
- package/dist/preview-engine/{chunk-22BLMBWX.mjs → chunk-PXSKIGAP.mjs} +6 -6
- package/dist/preview-engine/{chunk-SP22JWN2.mjs → chunk-PYM2FBFA.mjs} +1 -1
- package/dist/preview-engine/chunk-QDTJ4MOJ.mjs +1 -0
- package/dist/preview-engine/{chunk-6PMATELR.mjs → chunk-RQU2GFGH.mjs} +1 -1
- package/dist/preview-engine/{chunk-UQD2UE6I.mjs → chunk-RWDPBES3.mjs} +1 -1
- package/dist/preview-engine/{chunk-QVW5METG.mjs → chunk-S5ONWSZF.mjs} +1 -1
- package/dist/preview-engine/{chunk-2YGR5YCN.mjs → chunk-SIU6JU2R.mjs} +1 -1
- package/dist/preview-engine/{chunk-NQZRPPUU.mjs → chunk-SJ3Q4AQP.mjs} +1 -1
- package/dist/preview-engine/chunk-TEBZRQPG.mjs +1 -0
- package/dist/preview-engine/{chunk-WDWHOXSA.mjs → chunk-UUDML2SN.mjs} +1 -1
- package/dist/preview-engine/{chunk-RHXZXWJ4.mjs → chunk-VAS4IJZR.mjs} +1 -1
- package/dist/preview-engine/{chunk-DOCFOSA6.mjs → chunk-WTDK6H46.mjs} +1 -1
- package/dist/preview-engine/chunk-XNMEVVQB.mjs +1 -0
- package/dist/preview-engine/{chunk-AKT4YQWL.mjs → chunk-YVGT4NK6.mjs} +2 -2
- package/dist/preview-engine/chunk-ZYTXBBIX.mjs +1 -0
- package/dist/preview-engine/components.mjs +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +1 -1
- package/dist/preview-engine/player.mjs +2 -2
- package/dist/preview-engine/{renderers-FC7G7KU7.mjs → renderers-2AKYMAIK.mjs} +1 -1
- package/dist/preview-engine/renderers-363CKEIG.mjs +1 -0
- package/dist/preview-engine/{renderers-EJGF3PYQ.mjs → renderers-36L24ZVS.mjs} +1 -1
- package/dist/preview-engine/renderers-3FMMVDMA.mjs +1 -0
- package/dist/preview-engine/{renderers-56TGEFDK.mjs → renderers-44AANAXR.mjs} +1 -1
- package/dist/preview-engine/renderers-4UUU62VV.mjs +1 -0
- package/dist/preview-engine/renderers-4ZTZFSAR.mjs +1 -0
- package/dist/preview-engine/{renderers-PYDOSDEY.mjs → renderers-5ZSB75GY.mjs} +1 -1
- package/dist/preview-engine/renderers-6KDD75BM.mjs +1 -0
- package/dist/preview-engine/renderers-7BJRD4G2.mjs +1 -0
- package/dist/preview-engine/{renderers-HBIBRZD7.mjs → renderers-AIIHGDJM.mjs} +1 -1
- package/dist/preview-engine/{renderers-P2FTCDZ7.mjs → renderers-AU746ORP.mjs} +1 -1
- package/dist/preview-engine/renderers-BIF2BETK.mjs +1 -0
- package/dist/preview-engine/{renderers-FD3ZT73R.mjs → renderers-BTQCHVHV.mjs} +1 -1
- package/dist/preview-engine/{renderers-HMNCIEU3.mjs → renderers-CFHBOAZG.mjs} +1 -1
- package/dist/preview-engine/renderers-CU5RW5UA.mjs +1 -0
- package/dist/preview-engine/renderers-DK5OBTKE.mjs +1 -0
- package/dist/preview-engine/renderers-EAKCDGTY.mjs +1 -0
- package/dist/preview-engine/{renderers-FYI6QNUH.mjs → renderers-EGBGC7MU.mjs} +1 -1
- package/dist/preview-engine/renderers-EVXCU7G7.mjs +1 -0
- package/dist/preview-engine/renderers-EXEYEH3F.mjs +1 -0
- package/dist/preview-engine/{renderers-RDHHVXRE.mjs → renderers-EXJDPS3T.mjs} +1 -1
- package/dist/preview-engine/renderers-F3WALPWI.mjs +1 -0
- package/dist/preview-engine/{renderers-4RVSLTCX.mjs → renderers-FS3EOB4J.mjs} +1 -1
- package/dist/preview-engine/{renderers-C3YXNKNM.mjs → renderers-GUL2MXDD.mjs} +1 -1
- package/dist/preview-engine/{renderers-EQDINUMT.mjs → renderers-H4HC44B5.mjs} +1 -1
- package/dist/preview-engine/renderers-H6565HO4.mjs +1 -0
- package/dist/preview-engine/renderers-HT5V6OZ2.mjs +1 -0
- package/dist/preview-engine/renderers-HXMOARWO.mjs +1 -0
- package/dist/preview-engine/renderers-HZ2Q7BGK.mjs +1 -0
- package/dist/preview-engine/renderers-I4N2K2KW.mjs +1 -0
- package/dist/preview-engine/renderers-I5J7U6CB.mjs +1 -0
- package/dist/preview-engine/renderers-IZV6QXR5.mjs +1 -0
- package/dist/preview-engine/renderers-JWGAPHWX.mjs +1 -0
- package/dist/preview-engine/renderers-KNDSVQTY.mjs +1 -0
- package/dist/preview-engine/renderers-KNDUOO6M.mjs +1 -0
- package/dist/preview-engine/renderers-KQAO3QEI.mjs +1 -0
- package/dist/preview-engine/{renderers-7SW2AHM2.mjs → renderers-LCSQLXRD.mjs} +1 -1
- package/dist/preview-engine/renderers-M34LOEHC.mjs +1 -0
- package/dist/preview-engine/renderers-ML6GNCWB.mjs +1 -0
- package/dist/preview-engine/renderers-NARG274F.mjs +1 -0
- package/dist/preview-engine/renderers-NCFPOSWR.mjs +1 -0
- package/dist/preview-engine/{renderers-ZAMSS7QN.mjs → renderers-PCOTECQB.mjs} +1 -1
- package/dist/preview-engine/renderers-PG5JHI2S.mjs +1 -0
- package/dist/preview-engine/{renderers-LTV5RFDJ.mjs → renderers-Q7MNLQJF.mjs} +1 -1
- package/dist/preview-engine/{renderers-GHP7SL5M.mjs → renderers-QXVSJYZL.mjs} +1 -1
- package/dist/preview-engine/{renderers-H2UI7YEO.mjs → renderers-R3ERZ3ZY.mjs} +1 -1
- package/dist/preview-engine/renderers-RXQKV65L.mjs +1 -0
- package/dist/preview-engine/renderers-SA73GD2B.mjs +1 -0
- package/dist/preview-engine/renderers-SLIXUHNX.mjs +1 -0
- package/dist/preview-engine/renderers-T462JZNA.mjs +1 -0
- package/dist/preview-engine/{renderers-LV6LLULR.mjs → renderers-TH2XZAYW.mjs} +1 -1
- package/dist/preview-engine/{renderers-ART3EGSZ.mjs → renderers-UHZIERVH.mjs} +1 -1
- package/dist/preview-engine/renderers-V7CFVGYK.mjs +1 -0
- package/dist/preview-engine/renderers-VY5E7BPK.mjs +1 -0
- package/dist/preview-engine/{renderers-ZDMDDWLN.mjs → renderers-WKXGELRG.mjs} +1 -1
- package/dist/preview-engine/{renderers-GY4R467B.mjs → renderers-WLDIIFR5.mjs} +1 -1
- package/dist/preview-engine/{renderers-NTKSN32T.mjs → renderers-WM6WBRH6.mjs} +1 -1
- package/dist/preview-engine/renderers-WT5FQZM7.mjs +228 -0
- package/dist/preview-engine/{renderers-YK74777T.mjs → renderers-WTKRLNNR.mjs} +1 -1
- package/dist/preview-engine/{renderers-BWRNCXR6.mjs → renderers-X6GKEVP7.mjs} +1 -1
- package/dist/preview-engine/renderers-Y47N5EYR.mjs +1 -0
- package/dist/preview-engine/renderers-Y4CUVZYI.mjs +1 -0
- package/dist/preview-engine/renderers-Y6YC7ZAK.mjs +1 -0
- package/dist/preview-engine/renderers-Y6ZYUAQG.mjs +1 -0
- package/dist/preview-engine/{renderers-YBTWN76S.mjs → renderers-YRWXYT5A.mjs} +1 -1
- package/dist/preview-engine/{renderers-SY435YU3.mjs → renderers-YWC4MXPG.mjs} +1 -1
- package/dist/preview-engine/{renderers-7GMW52G3.mjs → renderers-ZWNPYZN6.mjs} +1 -1
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-B6YvXPhj.mjs → program-KPBfq9tw.mjs} +84 -15
- package/dist/program-KPBfq9tw.mjs.map +1 -0
- package/dist/registry/index.json +1 -1
- package/dist/registry/lower-third.json +1 -1
- package/dist/registry/text-reveal.json +2 -2
- package/dist/registry/title-card.json +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-DFGSy_ay.mjs → renderer-1-FLx8kd.mjs} +3 -3
- package/dist/{renderer-DFGSy_ay.mjs.map → renderer-1-FLx8kd.mjs.map} +1 -1
- package/dist/{renderer-Ck74BZ_L.mjs → renderer-47d3etrX.mjs} +4 -4
- package/dist/{renderer-Ck74BZ_L.mjs.map → renderer-47d3etrX.mjs.map} +1 -1
- package/dist/{renderer-Cs8Od5S8.mjs → renderer-6GCG6JxD.mjs} +3 -3
- package/dist/{renderer-Cs8Od5S8.mjs.map → renderer-6GCG6JxD.mjs.map} +1 -1
- package/dist/{renderer-BLn9MrDC.mjs → renderer-8BIDdgjt.mjs} +3 -3
- package/dist/{renderer-BLn9MrDC.mjs.map → renderer-8BIDdgjt.mjs.map} +1 -1
- package/dist/renderer-B-5TlncB.mjs +5 -0
- package/dist/{renderer-CkbIz6M-.mjs → renderer-B1yzSbvC.mjs} +4 -4
- package/dist/{renderer-CkbIz6M-.mjs.map → renderer-B1yzSbvC.mjs.map} +1 -1
- package/dist/{renderer-BYNbtv_d.mjs → renderer-B2YiXpp-.mjs} +2 -2
- package/dist/{renderer-BYNbtv_d.mjs.map → renderer-B2YiXpp-.mjs.map} +1 -1
- package/dist/{renderer-DXfYdQ2o.mjs → renderer-B55ljMI_.mjs} +2 -2
- package/dist/{renderer-DXfYdQ2o.mjs.map → renderer-B55ljMI_.mjs.map} +1 -1
- package/dist/{renderer-CopRZnwp.mjs → renderer-B6Tg4UgH.mjs} +4 -4
- package/dist/{renderer-CopRZnwp.mjs.map → renderer-B6Tg4UgH.mjs.map} +1 -1
- package/dist/{renderer-CuQceSLi.mjs → renderer-BFnf-8Yt.mjs} +3 -3
- package/dist/{renderer-CuQceSLi.mjs.map → renderer-BFnf-8Yt.mjs.map} +1 -1
- package/dist/{renderer-BmarvBo8.mjs → renderer-BGHHoPiD.mjs} +2 -2
- package/dist/{renderer-CLvXiFPk.mjs → renderer-BHUjPi24.mjs} +2 -2
- package/dist/{renderer-CLvXiFPk.mjs.map → renderer-BHUjPi24.mjs.map} +1 -1
- package/dist/renderer-BHXtDg5_.mjs +3 -0
- package/dist/{renderer-CTQTbvWR.mjs → renderer-BIk67-jU.mjs} +2 -2
- package/dist/{renderer-CTQTbvWR.mjs.map → renderer-BIk67-jU.mjs.map} +1 -1
- package/dist/{renderer-BHjw4EdY.d.mts → renderer-BLEmr0Lt.d.mts} +2 -2
- package/dist/{renderer-BHjw4EdY.d.mts.map → renderer-BLEmr0Lt.d.mts.map} +1 -1
- package/dist/{renderer-BcH6-FsA.mjs → renderer-BLs5sDdk.mjs} +3 -3
- package/dist/{renderer-BcH6-FsA.mjs.map → renderer-BLs5sDdk.mjs.map} +1 -1
- package/dist/renderer-BPd3gvEt.mjs +5 -0
- package/dist/{renderer-Hs9t2qY-.mjs → renderer-BXul0Wy6.mjs} +3 -3
- package/dist/{renderer-Hs9t2qY-.mjs.map → renderer-BXul0Wy6.mjs.map} +1 -1
- package/dist/{renderer-BX2tt7zA.mjs → renderer-B_1SLBPa.mjs} +3 -3
- package/dist/{renderer-BX2tt7zA.mjs.map → renderer-B_1SLBPa.mjs.map} +1 -1
- package/dist/renderer-B_ep98BH.mjs +5 -0
- package/dist/renderer-Ba_KUbKW.mjs +5 -0
- package/dist/{renderer-v779MqRx.mjs → renderer-BbyNUjE_.mjs} +3 -3
- package/dist/{renderer-v779MqRx.mjs.map → renderer-BbyNUjE_.mjs.map} +1 -1
- package/dist/{renderer-rLhze-dj.mjs → renderer-BcVr_cIk.mjs} +2 -2
- package/dist/{renderer-rLhze-dj.mjs.map → renderer-BcVr_cIk.mjs.map} +1 -1
- package/dist/renderer-BeL2hstU.mjs +5 -0
- package/dist/renderer-Bj81osPQ.mjs +5 -0
- package/dist/{renderer-Cy_rrWEC.mjs → renderer-BjL7sKGU.mjs} +3 -3
- package/dist/{renderer-Cy_rrWEC.mjs.map → renderer-BjL7sKGU.mjs.map} +1 -1
- package/dist/{renderer-BZ9zGp0Z.mjs → renderer-BjNcuJ4H.mjs} +3 -3
- package/dist/{renderer-BZ9zGp0Z.mjs.map → renderer-BjNcuJ4H.mjs.map} +1 -1
- package/dist/{renderer-Da5Xcwx5.mjs → renderer-Br8aDmf0.mjs} +2 -2
- package/dist/renderer-BvZQngSm.mjs +5 -0
- package/dist/renderer-BxgN8oXx.mjs +5 -0
- package/dist/{renderer-CptS_UFe.mjs → renderer-ByOvGGzp.mjs} +3 -3
- package/dist/{renderer-CptS_UFe.mjs.map → renderer-ByOvGGzp.mjs.map} +1 -1
- package/dist/{renderer-C3gJco03.mjs → renderer-C11qLlrz.mjs} +3 -3
- package/dist/{renderer-C3gJco03.mjs.map → renderer-C11qLlrz.mjs.map} +1 -1
- package/dist/{renderer-D4KKtfTl.mjs → renderer-C5dyPQjG.mjs} +3 -3
- package/dist/{renderer-D4KKtfTl.mjs.map → renderer-C5dyPQjG.mjs.map} +1 -1
- package/dist/renderer-C5jDrTBc.mjs +5 -0
- package/dist/{renderer-Dk88a53K.mjs → renderer-C6TbU8U5.mjs} +3 -3
- package/dist/{renderer-Dk88a53K.mjs.map → renderer-C6TbU8U5.mjs.map} +1 -1
- package/dist/{renderer-DKkXBsVx.mjs → renderer-C9bcEaBE.mjs} +3 -3
- package/dist/{renderer-DKkXBsVx.mjs.map → renderer-C9bcEaBE.mjs.map} +1 -1
- package/dist/{renderer-COAYUhv2.mjs → renderer-CAH00Lub.mjs} +2 -2
- package/dist/{renderer-GNgSEbBu.mjs → renderer-CAhsBEpU.mjs} +2 -2
- package/dist/{renderer-GNgSEbBu.mjs.map → renderer-CAhsBEpU.mjs.map} +1 -1
- package/dist/renderer-CBK4M82Y.mjs +5 -0
- package/dist/{renderer-876_ArdD.mjs → renderer-CCH0gSF7.mjs} +3 -3
- package/dist/{renderer-876_ArdD.mjs.map → renderer-CCH0gSF7.mjs.map} +1 -1
- package/dist/{renderer-DNNxsVQh.mjs → renderer-CCbOp0BM.mjs} +3 -3
- package/dist/{renderer-DNNxsVQh.mjs.map → renderer-CCbOp0BM.mjs.map} +1 -1
- package/dist/{renderer-UPRkHFPp.mjs → renderer-CEb5GjcU.mjs} +3 -3
- package/dist/{renderer-UPRkHFPp.mjs.map → renderer-CEb5GjcU.mjs.map} +1 -1
- package/dist/{renderer-Cwhm9oQe.mjs → renderer-CIL9zh-a.mjs} +3 -3
- package/dist/{renderer-Cwhm9oQe.mjs.map → renderer-CIL9zh-a.mjs.map} +1 -1
- package/dist/{renderer-URxsYx_I.mjs → renderer-CIbXIFOb.mjs} +4 -4
- package/dist/{renderer-URxsYx_I.mjs.map → renderer-CIbXIFOb.mjs.map} +1 -1
- package/dist/renderer-CLHtCctc.mjs +5 -0
- package/dist/{renderer-Q6A9dB56.mjs → renderer-CLX33fIK.mjs} +3 -3
- package/dist/{renderer-Q6A9dB56.mjs.map → renderer-CLX33fIK.mjs.map} +1 -1
- package/dist/{renderer-DJJXvO27.mjs → renderer-CLXpWDqx.mjs} +2 -2
- package/dist/{renderer-DJJXvO27.mjs.map → renderer-CLXpWDqx.mjs.map} +1 -1
- package/dist/renderer-CLin7MNN.mjs +5 -0
- package/dist/{renderer-BBnurLTw.mjs → renderer-CLypsmiH.mjs} +3 -3
- package/dist/{renderer-BBnurLTw.mjs.map → renderer-CLypsmiH.mjs.map} +1 -1
- package/dist/renderer-CN7TypOB.mjs +5 -0
- package/dist/renderer-CV5Jfwq7.mjs +5 -0
- package/dist/renderer-Ca5E46WK.mjs +5 -0
- package/dist/renderer-CdbOtoOU.mjs +5 -0
- package/dist/renderer-CeD_bqWj.mjs +5 -0
- package/dist/{renderer-nIKvk_ij.mjs → renderer-CfEuoZ7b.mjs} +3 -3
- package/dist/{renderer-nIKvk_ij.mjs.map → renderer-CfEuoZ7b.mjs.map} +1 -1
- package/dist/renderer-CfzNNUOd.mjs +5 -0
- package/dist/{renderer-I-KtRtuL.mjs → renderer-Cg3h0Mz9.mjs} +3 -3
- package/dist/{renderer-I-KtRtuL.mjs.map → renderer-Cg3h0Mz9.mjs.map} +1 -1
- package/dist/renderer-Cl8TmdU8.mjs +5 -0
- package/dist/{renderer-CW05KUXE.mjs → renderer-ClHqvIps.mjs} +10 -10
- package/dist/renderer-ClHqvIps.mjs.map +1 -0
- package/dist/renderer-CosBP_IM.mjs +5 -0
- package/dist/renderer-CpwVs5Fh.mjs +5 -0
- package/dist/renderer-Cq7baxNb.mjs +5 -0
- package/dist/{renderer-PTV0M2HP.mjs → renderer-CqMz_iXy.mjs} +2 -2
- package/dist/{renderer-PTV0M2HP.mjs.map → renderer-CqMz_iXy.mjs.map} +1 -1
- package/dist/{renderer-DGUL7JlO.mjs → renderer-CqSmfrE1.mjs} +3 -3
- package/dist/{renderer-DGUL7JlO.mjs.map → renderer-CqSmfrE1.mjs.map} +1 -1
- package/dist/{renderer-D1fjdDVu.d.mts → renderer-CrhJJKFY.d.mts} +5 -3
- package/dist/renderer-CrhJJKFY.d.mts.map +1 -0
- package/dist/{renderer-sQjiRkiF.mjs → renderer-CxxwhUwy.mjs} +3 -3
- package/dist/{renderer-sQjiRkiF.mjs.map → renderer-CxxwhUwy.mjs.map} +1 -1
- package/dist/{renderer-BsSZdDHQ.mjs → renderer-D24aiXmB.mjs} +3 -3
- package/dist/{renderer-BsSZdDHQ.mjs.map → renderer-D24aiXmB.mjs.map} +1 -1
- package/dist/renderer-D6GkxwAx.mjs +5 -0
- package/dist/renderer-D7SfGdzX.mjs +5 -0
- package/dist/renderer-D7wt09_l.mjs +5 -0
- package/dist/{renderer-BHJzeFp9.mjs → renderer-DBslE7fc.mjs} +2 -2
- package/dist/{renderer-BHJzeFp9.mjs.map → renderer-DBslE7fc.mjs.map} +1 -1
- package/dist/{renderer-DfQWeysg.mjs → renderer-DE3Ki96C.mjs} +3 -3
- package/dist/{renderer-DfQWeysg.mjs.map → renderer-DE3Ki96C.mjs.map} +1 -1
- package/dist/{renderer-C6YcfNbV.mjs → renderer-DJCqc98W.mjs} +3 -3
- package/dist/{renderer-C6YcfNbV.mjs.map → renderer-DJCqc98W.mjs.map} +1 -1
- package/dist/{renderer-CdxHmvvf.mjs → renderer-DODOyrty.mjs} +3 -3
- package/dist/{renderer-CdxHmvvf.mjs.map → renderer-DODOyrty.mjs.map} +1 -1
- package/dist/{renderer-B51lS0Zb.mjs → renderer-DRYxcfgi.mjs} +2 -2
- package/dist/renderer-DSuDMYqY.mjs +5 -0
- package/dist/{renderer-BfYAlY63.mjs → renderer-DYreml_A.mjs} +3 -3
- package/dist/{renderer-BfYAlY63.mjs.map → renderer-DYreml_A.mjs.map} +1 -1
- package/dist/{renderer-Byp6c5Y4.mjs → renderer-DZJnNISO.mjs} +2 -2
- package/dist/{renderer-Byp6c5Y4.mjs.map → renderer-DZJnNISO.mjs.map} +1 -1
- package/dist/renderer-DaIstCIs.mjs +5 -0
- package/dist/renderer-DbOD3Nc0.mjs +5 -0
- package/dist/{renderer-Bpm12fcQ.mjs → renderer-DbenSRjl.mjs} +3 -3
- package/dist/{renderer-Bpm12fcQ.mjs.map → renderer-DbenSRjl.mjs.map} +1 -1
- package/dist/{renderer-56T9Wf1N.mjs → renderer-DcXxkxds.mjs} +75 -72
- package/dist/renderer-DcXxkxds.mjs.map +1 -0
- package/dist/renderer-DdRCA1bn.mjs +6 -0
- package/dist/{renderer-15a6H6Yg.mjs → renderer-DdUtL-qF.mjs} +3 -3
- package/dist/{renderer-15a6H6Yg.mjs.map → renderer-DdUtL-qF.mjs.map} +1 -1
- package/dist/renderer-DfO37haf.mjs +5 -0
- package/dist/renderer-DjZwzxZ7.mjs +5 -0
- package/dist/renderer-DnAvySNy.mjs +5 -0
- package/dist/{renderer-IP6Iy2RQ.mjs → renderer-DnbY04Qk.mjs} +3 -3
- package/dist/{renderer-IP6Iy2RQ.mjs.map → renderer-DnbY04Qk.mjs.map} +1 -1
- package/dist/renderer-DnvEPm5E.mjs +5 -0
- package/dist/{renderer-HW-6FmmO.mjs → renderer-Do9mW_-B.mjs} +3 -3
- package/dist/{renderer-HW-6FmmO.mjs.map → renderer-Do9mW_-B.mjs.map} +1 -1
- package/dist/{renderer-DlboTFM8.mjs → renderer-Dqg8qxjq.mjs} +3 -3
- package/dist/{renderer-DlboTFM8.mjs.map → renderer-Dqg8qxjq.mjs.map} +1 -1
- package/dist/{renderer-BfuMCx2c.mjs → renderer-DvkRbmb2.mjs} +3 -3
- package/dist/{renderer-BfuMCx2c.mjs.map → renderer-DvkRbmb2.mjs.map} +1 -1
- package/dist/renderer-DwNpKnWf.mjs +5 -0
- package/dist/{renderer-Djpx4utT.mjs → renderer-Dw_xy3zx.mjs} +3 -3
- package/dist/{renderer-Djpx4utT.mjs.map → renderer-Dw_xy3zx.mjs.map} +1 -1
- package/dist/renderer-Dx3Dghus.mjs +5 -0
- package/dist/{renderer-SPq9BbnG.mjs → renderer-DyrNti45.mjs} +3 -3
- package/dist/{renderer-SPq9BbnG.mjs.map → renderer-DyrNti45.mjs.map} +1 -1
- package/dist/renderer-KvaoEwIk.mjs +5 -0
- package/dist/{renderer-BxtbwOSp.mjs → renderer-SwUFJ4aA.mjs} +3 -3
- package/dist/{renderer-BxtbwOSp.mjs.map → renderer-SwUFJ4aA.mjs.map} +1 -1
- package/dist/{renderer-DF_TswHB.mjs → renderer-XEoQnDs5.mjs} +3 -3
- package/dist/{renderer-DF_TswHB.mjs.map → renderer-XEoQnDs5.mjs.map} +1 -1
- package/dist/{renderer-QYjSQL80.mjs → renderer-Xw9Zn3pD.mjs} +2 -2
- package/dist/{renderer-QYjSQL80.mjs.map → renderer-Xw9Zn3pD.mjs.map} +1 -1
- package/dist/{renderer-XU08U1If.mjs → renderer-ZWIDTOLV.mjs} +2 -2
- package/dist/{renderer-XU08U1If.mjs.map → renderer-ZWIDTOLV.mjs.map} +1 -1
- package/dist/{renderer-8ZxKRprN.mjs → renderer-bGhRdKB7.mjs} +2 -2
- package/dist/{renderer-8ZxKRprN.mjs.map → renderer-bGhRdKB7.mjs.map} +1 -1
- package/dist/{renderer-DUx7rcc5.mjs → renderer-d4weUlVq.mjs} +2 -2
- package/dist/{renderer-DUx7rcc5.mjs.map → renderer-d4weUlVq.mjs.map} +1 -1
- package/dist/{renderer-Bf0Bhqot.mjs → renderer-g7CMgD1v.mjs} +3 -3
- package/dist/{renderer-Bf0Bhqot.mjs.map → renderer-g7CMgD1v.mjs.map} +1 -1
- package/dist/{renderer-BUj6OsWX.mjs → renderer-gjLFqdv-.mjs} +4 -4
- package/dist/{renderer-BUj6OsWX.mjs.map → renderer-gjLFqdv-.mjs.map} +1 -1
- package/dist/{renderer-DLpjygMO.mjs → renderer-gv0u9XmU.mjs} +3 -3
- package/dist/{renderer-DLpjygMO.mjs.map → renderer-gv0u9XmU.mjs.map} +1 -1
- package/dist/{renderer-KS_JYan2.mjs → renderer-jJWwrha1.mjs} +3 -3
- package/dist/{renderer-KS_JYan2.mjs.map → renderer-jJWwrha1.mjs.map} +1 -1
- package/dist/{renderer-C7BxBoHC.mjs → renderer-kl_pAczD.mjs} +3 -3
- package/dist/{renderer-C7BxBoHC.mjs.map → renderer-kl_pAczD.mjs.map} +1 -1
- package/dist/{renderer-Bxs9zUIN.mjs → renderer-lrKwPhZi.mjs} +2 -2
- package/dist/{renderer-Bxs9zUIN.mjs.map → renderer-lrKwPhZi.mjs.map} +1 -1
- package/dist/{renderer-DJy8V_nb.mjs → renderer-pnYj1REL.mjs} +3 -3
- package/dist/{renderer-DJy8V_nb.mjs.map → renderer-pnYj1REL.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-CPfe6IN0.mjs → renderers-CP8CFWDs-CDikhBRO.mjs} +3 -3
- package/dist/{renderers-CP8CFWDs-CPfe6IN0.mjs.map → renderers-CP8CFWDs-CDikhBRO.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +6 -6
- package/dist/{signals-BRgYyspQ.mjs → signals-BeAWA_1Y.mjs} +3 -3
- package/dist/{signals-BRgYyspQ.mjs.map → signals-BeAWA_1Y.mjs.map} +1 -1
- package/dist/{src-Be7rjknf.mjs → src-LYcH_X8o.mjs} +233 -27
- package/dist/src-LYcH_X8o.mjs.map +1 -0
- package/package.json +58 -58
- package/dist/dist-CL5JOMSp.mjs.map +0 -1
- package/dist/dist-CSU_2yUb.mjs.map +0 -1
- package/dist/index-BCzXnNpb.d.mts.map +0 -1
- package/dist/index-C541Ol1N.d.mts.map +0 -1
- package/dist/index-kj5uSzaI.d.mts.map +0 -1
- package/dist/preview-engine/chunk-3SR6BI4B.mjs +0 -1
- package/dist/preview-engine/chunk-ALSOO22Q.mjs +0 -1
- package/dist/preview-engine/chunk-NKGXINCU.mjs +0 -1
- package/dist/preview-engine/chunk-PJMX2GFY.mjs +0 -1
- package/dist/preview-engine/chunk-SIXIF5QZ.mjs +0 -3
- package/dist/preview-engine/chunk-TXX2POD2.mjs +0 -1974
- package/dist/preview-engine/renderers-3HFRWF2G.mjs +0 -1
- package/dist/preview-engine/renderers-4CRXZJ5G.mjs +0 -1
- package/dist/preview-engine/renderers-5QF4OLFQ.mjs +0 -1
- package/dist/preview-engine/renderers-5SOW6OVE.mjs +0 -1
- package/dist/preview-engine/renderers-6M2HPY2J.mjs +0 -1
- package/dist/preview-engine/renderers-7HT5NW7W.mjs +0 -1
- package/dist/preview-engine/renderers-ATTGUTYY.mjs +0 -1
- package/dist/preview-engine/renderers-AYWCRBQC.mjs +0 -1
- package/dist/preview-engine/renderers-BA6ZCPI5.mjs +0 -1
- package/dist/preview-engine/renderers-BAS7RXTC.mjs +0 -1
- package/dist/preview-engine/renderers-CZTCW4FC.mjs +0 -1
- package/dist/preview-engine/renderers-D2XEQ2YY.mjs +0 -1
- package/dist/preview-engine/renderers-DFIJYBW2.mjs +0 -1
- package/dist/preview-engine/renderers-EJN6M6DO.mjs +0 -1
- package/dist/preview-engine/renderers-EK3HQUUF.mjs +0 -1
- package/dist/preview-engine/renderers-G34C5J27.mjs +0 -1
- package/dist/preview-engine/renderers-GKVTNDVH.mjs +0 -1
- package/dist/preview-engine/renderers-HZBYQKIQ.mjs +0 -1
- package/dist/preview-engine/renderers-IK7ZJJKJ.mjs +0 -1
- package/dist/preview-engine/renderers-ISASPH6T.mjs +0 -1
- package/dist/preview-engine/renderers-IW5MWDBI.mjs +0 -1
- package/dist/preview-engine/renderers-JBRPKCKF.mjs +0 -228
- package/dist/preview-engine/renderers-K2PI4WJS.mjs +0 -1
- package/dist/preview-engine/renderers-KESHVFL2.mjs +0 -1
- package/dist/preview-engine/renderers-KTZZVAB2.mjs +0 -1
- package/dist/preview-engine/renderers-KY5CJEOV.mjs +0 -1
- package/dist/preview-engine/renderers-M5W6SUQD.mjs +0 -1
- package/dist/preview-engine/renderers-MEM3REMI.mjs +0 -1
- package/dist/preview-engine/renderers-O5XMWFPY.mjs +0 -1
- package/dist/preview-engine/renderers-QJA35PKC.mjs +0 -1
- package/dist/preview-engine/renderers-TJIFTQHV.mjs +0 -1
- package/dist/preview-engine/renderers-TN4XN436.mjs +0 -1
- package/dist/preview-engine/renderers-UDYLCYCB.mjs +0 -1
- package/dist/preview-engine/renderers-WZ7SFIBZ.mjs +0 -1
- package/dist/preview-engine/renderers-X6QNDC6R.mjs +0 -1
- package/dist/preview-engine/renderers-X6RNTJOV.mjs +0 -1
- package/dist/preview-engine/renderers-Y3N7236P.mjs +0 -1
- package/dist/preview-engine/renderers-YP3ASXIJ.mjs +0 -1
- package/dist/preview-engine/renderers-YVJAG3PD.mjs +0 -1
- package/dist/preview-engine/renderers-ZPPZNMKJ.mjs +0 -1
- package/dist/program-B6YvXPhj.mjs.map +0 -1
- package/dist/renderer-1qAST5qk.mjs +0 -5
- package/dist/renderer-2dntY9lQ.mjs +0 -5
- package/dist/renderer-56T9Wf1N.mjs.map +0 -1
- package/dist/renderer-83Knj3DI.mjs +0 -5
- package/dist/renderer-B2GWXOwP.mjs +0 -5
- package/dist/renderer-B3LlOjNo.mjs +0 -5
- package/dist/renderer-B5cPLblQ.mjs +0 -5
- package/dist/renderer-B7uorwdR.mjs +0 -5
- package/dist/renderer-BJ6LDZlX.mjs +0 -5
- package/dist/renderer-BaQC4ylR.mjs +0 -5
- package/dist/renderer-BfQzj_uW.mjs +0 -5
- package/dist/renderer-Bl9uy1ra.mjs +0 -6
- package/dist/renderer-Bu4FyXDo.mjs +0 -5
- package/dist/renderer-BxbJwS3T.mjs +0 -5
- package/dist/renderer-C51hhQ7B.mjs +0 -5
- package/dist/renderer-C8ZShnSH.mjs +0 -5
- package/dist/renderer-CQh1RgN8.mjs +0 -5
- package/dist/renderer-CRYaMhGd.mjs +0 -5
- package/dist/renderer-CULThR_r.mjs +0 -5
- package/dist/renderer-CW05KUXE.mjs.map +0 -1
- package/dist/renderer-C_KDGeMJ.mjs +0 -5
- package/dist/renderer-Ce4Gam_S.mjs +0 -5
- package/dist/renderer-CkZ6xcN6.mjs +0 -5
- package/dist/renderer-Co4C29rw.mjs +0 -5
- package/dist/renderer-CyReVcsb.mjs +0 -3
- package/dist/renderer-CzgPat6y.mjs +0 -5
- package/dist/renderer-D-pFBDki.mjs +0 -5
- package/dist/renderer-D1fjdDVu.d.mts.map +0 -1
- package/dist/renderer-DELCePyB.mjs +0 -5
- package/dist/renderer-DWijRKGh.mjs +0 -5
- package/dist/renderer-Di-PH-vG.mjs +0 -5
- package/dist/renderer-Dn9CR9KL.mjs +0 -5
- package/dist/renderer-ICmKc1Bq.mjs +0 -5
- package/dist/renderer-IR3rE4TW.mjs +0 -5
- package/dist/renderer-Qyc4xLZY.mjs +0 -5
- package/dist/renderer-Riuen1UO.mjs +0 -5
- package/dist/renderer-YKJt5oPu.mjs +0 -5
- package/dist/renderer-asS1sOXb.mjs +0 -5
- package/dist/renderer-mAQErqBN.mjs +0 -5
- package/dist/renderer-pZazoCK-.mjs +0 -5
- package/dist/src-Be7rjknf.mjs.map +0 -1
|
@@ -10,6 +10,7 @@ var ProgrammaticSignal = class ProgrammaticSignal$1 {
|
|
|
10
10
|
_fps;
|
|
11
11
|
_durationFrames;
|
|
12
12
|
_cachedFrame = -1;
|
|
13
|
+
_cachedContext;
|
|
13
14
|
_cachedValue = 0;
|
|
14
15
|
_seekedFrame = -1;
|
|
15
16
|
_subscribers = /* @__PURE__ */ new Set();
|
|
@@ -49,20 +50,25 @@ var ProgrammaticSignal = class ProgrammaticSignal$1 {
|
|
|
49
50
|
registerSignalDependency(this._subscribers);
|
|
50
51
|
frameSignal.get();
|
|
51
52
|
const currentFrame = ctx?.frame ?? (this._seekedFrame >= 0 ? this._seekedFrame : frameSignal.value);
|
|
52
|
-
if (this._cachedFrame === currentFrame) return this._cachedValue;
|
|
53
53
|
const fps$1 = ctx?.fps ?? this._fps;
|
|
54
54
|
const time = ctx?.time ?? (fps$1 > 0 ? currentFrame / fps$1 : 0);
|
|
55
55
|
const duration = ctx?.duration ?? this._durationFrames ?? 100;
|
|
56
|
+
const durationMs = ctx?.durationMs ?? duration / fps$1 * 1e3;
|
|
57
|
+
const progress = ctx?.progress ?? (duration > 0 ? currentFrame / duration : 0);
|
|
58
|
+
const deltaTime = ctx?.deltaTime ?? (fps$1 > 0 ? 1 / fps$1 : .0416);
|
|
56
59
|
const resolvedCtx = {
|
|
57
60
|
frame: currentFrame,
|
|
58
61
|
fps: fps$1,
|
|
59
62
|
time,
|
|
60
63
|
duration,
|
|
61
|
-
durationMs
|
|
62
|
-
progress
|
|
63
|
-
deltaTime
|
|
64
|
+
durationMs,
|
|
65
|
+
progress,
|
|
66
|
+
deltaTime
|
|
64
67
|
};
|
|
68
|
+
const cached = this._cachedContext;
|
|
69
|
+
if (this._cachedFrame === currentFrame && cached && cached.fps === fps$1 && cached.time === time && cached.duration === duration && cached.durationMs === durationMs && cached.progress === progress && cached.deltaTime === deltaTime) return this._cachedValue;
|
|
65
70
|
this._cachedFrame = currentFrame;
|
|
71
|
+
this._cachedContext = resolvedCtx;
|
|
66
72
|
this._cachedValue = this._evaluator(resolvedCtx);
|
|
67
73
|
return this._cachedValue;
|
|
68
74
|
}
|
|
@@ -437,6 +443,7 @@ var FrameArraySignalImpl = class {
|
|
|
437
443
|
fps;
|
|
438
444
|
_samples;
|
|
439
445
|
_cachedFrame = -1;
|
|
446
|
+
_cachedFps = 0;
|
|
440
447
|
_cachedValue = 0;
|
|
441
448
|
_seekedFrame = -1;
|
|
442
449
|
_subscribers = /* @__PURE__ */ new Set();
|
|
@@ -456,13 +463,14 @@ var FrameArraySignalImpl = class {
|
|
|
456
463
|
}
|
|
457
464
|
frameSignal.get();
|
|
458
465
|
const currentFrame = ctx?.frame ?? (this._seekedFrame >= 0 ? this._seekedFrame : frameSignal.value);
|
|
459
|
-
|
|
466
|
+
const compFps = ctx?.fps ?? this.fps;
|
|
467
|
+
if (this._cachedFrame === currentFrame && this._cachedFps === compFps) return this._cachedValue;
|
|
460
468
|
this._cachedFrame = currentFrame;
|
|
469
|
+
this._cachedFps = compFps;
|
|
461
470
|
if (!this._samples || this._samples.length === 0) {
|
|
462
471
|
this._cachedValue = 0;
|
|
463
472
|
return 0;
|
|
464
473
|
}
|
|
465
|
-
const compFps = ctx?.fps ?? this.fps;
|
|
466
474
|
const targetFrame = compFps !== this.fps && compFps > 0 ? currentFrame / compFps * this.fps : currentFrame;
|
|
467
475
|
const idx = Math.max(0, Math.min(this._samples.length - 1, Math.round(targetFrame)));
|
|
468
476
|
this._cachedValue = Number(this._samples[idx]) || 0;
|
|
@@ -474,6 +482,7 @@ var FrameArraySignalImpl = class {
|
|
|
474
482
|
seekFrame(frame$1) {
|
|
475
483
|
this._seekedFrame = frame$1;
|
|
476
484
|
this._cachedFrame = frame$1;
|
|
485
|
+
this._cachedFps = this.fps;
|
|
477
486
|
if (!this._samples || this._samples.length === 0) this._cachedValue = 0;
|
|
478
487
|
else {
|
|
479
488
|
const idx = Math.max(0, Math.min(this._samples.length - 1, Math.round(frame$1)));
|
|
@@ -733,6 +742,413 @@ var ModerationUnrefundableError = class extends Error {
|
|
|
733
742
|
const generateId = (size) => {
|
|
734
743
|
return nanoid(size);
|
|
735
744
|
};
|
|
745
|
+
/**
|
|
746
|
+
* Sample a signal at every composition-frame boundary in layer order.
|
|
747
|
+
* Values between boundaries are linearly interpolated; speeds are integrated
|
|
748
|
+
* analytically, so picture and audio can query the same fractional frame.
|
|
749
|
+
*/
|
|
750
|
+
function sampleMediaSignal(options) {
|
|
751
|
+
const recorder = new MediaSignalRecorder(options);
|
|
752
|
+
for (let i = 0; i <= options.durationFrames; i++) {
|
|
753
|
+
const frame$1 = options.startFrame + i;
|
|
754
|
+
recorder.record(frame$1, options.sample(frame$1));
|
|
755
|
+
}
|
|
756
|
+
return recorder.finish();
|
|
757
|
+
}
|
|
758
|
+
/** Sample an engine signal with its composition clock and full frame context. */
|
|
759
|
+
function sampleFrameMediaSignal(options) {
|
|
760
|
+
const { fps: fps$1, compositionDurationFrames, signal: signal$1 } = options;
|
|
761
|
+
if (!Number.isInteger(compositionDurationFrames) || compositionDurationFrames <= 0) throw new Error("Invalid composition duration");
|
|
762
|
+
return sampleMediaSignal({
|
|
763
|
+
...options,
|
|
764
|
+
sample: (frame$1) => signal$1.get(compositionFrameContext(frame$1, fps$1, compositionDurationFrames))
|
|
765
|
+
});
|
|
766
|
+
}
|
|
767
|
+
/** The frame context a composition-clock signal sees at a composition frame. */
|
|
768
|
+
function compositionFrameContext(frame$1, fps$1, compositionDurationFrames) {
|
|
769
|
+
return {
|
|
770
|
+
frame: frame$1,
|
|
771
|
+
fps: fps$1,
|
|
772
|
+
time: frame$1 / fps$1,
|
|
773
|
+
duration: compositionDurationFrames / fps$1,
|
|
774
|
+
durationMs: compositionDurationFrames / fps$1 * 1e3,
|
|
775
|
+
progress: Math.min(1, frame$1 / compositionDurationFrames),
|
|
776
|
+
deltaTime: 1 / fps$1
|
|
777
|
+
};
|
|
778
|
+
}
|
|
779
|
+
/** Evaluate at any fractional local frame, independent of query order. */
|
|
780
|
+
function sampledMediaSourceTime(map, frame$1) {
|
|
781
|
+
if (!Number.isFinite(frame$1)) throw new Error("Invalid media signal frame");
|
|
782
|
+
const max = map.values.length - 1;
|
|
783
|
+
const f = Math.max(0, Math.min(max, frame$1));
|
|
784
|
+
const i = Math.min(Math.floor(f), max - 1);
|
|
785
|
+
const t = f - i;
|
|
786
|
+
const a = map.values[i];
|
|
787
|
+
const b = map.values[i + 1];
|
|
788
|
+
if (map.mode === "source-time") return a * (1 - t) + b * t;
|
|
789
|
+
return map.positions[i] + (a * (t - t * t / 2) + b * (t * t / 2)) / map.fps;
|
|
790
|
+
}
|
|
791
|
+
/** Range includes direction changes inside a speed-signal interval. */
|
|
792
|
+
function sampledMediaSourceRange(map, from, to) {
|
|
793
|
+
if (!Number.isFinite(from) || !Number.isFinite(to)) throw new Error("Invalid media signal range");
|
|
794
|
+
const endFrame = map.values.length - 1;
|
|
795
|
+
const start = Math.max(0, Math.min(endFrame, Math.min(from, to)));
|
|
796
|
+
const end = Math.max(0, Math.min(endFrame, Math.max(from, to)));
|
|
797
|
+
let min = sampledMediaSourceTime(map, start);
|
|
798
|
+
let max = min;
|
|
799
|
+
let maxIncluded = start < end;
|
|
800
|
+
const add = (frame$1) => {
|
|
801
|
+
const value = sampledMediaSourceTime(map, frame$1);
|
|
802
|
+
min = Math.min(min, value);
|
|
803
|
+
if (value > max) {
|
|
804
|
+
max = value;
|
|
805
|
+
maxIncluded = frame$1 < end;
|
|
806
|
+
} else if (value === max && frame$1 < end) maxIncluded = true;
|
|
807
|
+
};
|
|
808
|
+
add(end);
|
|
809
|
+
for (let i = Math.floor(start); i < end; i++) {
|
|
810
|
+
if (i > start) add(i);
|
|
811
|
+
if (map.mode === "speed") {
|
|
812
|
+
const a = map.values[i], b = map.values[i + 1];
|
|
813
|
+
if (a < 0 && b > 0 || a > 0 && b < 0) {
|
|
814
|
+
const halfA = Math.abs(a) / 2;
|
|
815
|
+
const turn = i + halfA / (halfA + Math.abs(b) / 2);
|
|
816
|
+
if (turn > start && turn < end) add(turn);
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
return {
|
|
821
|
+
min,
|
|
822
|
+
max,
|
|
823
|
+
maxIncluded
|
|
824
|
+
};
|
|
825
|
+
}
|
|
826
|
+
/**
|
|
827
|
+
* Records a live signal at each composition-frame boundary, so its history can
|
|
828
|
+
* be replayed for audio, seeks and vision without evaluating it a second time.
|
|
829
|
+
* With a sampler, boundaries are evaluated on demand, but never past the
|
|
830
|
+
* frame the composition has reached ({@link advance}): no look-ahead.
|
|
831
|
+
*/
|
|
832
|
+
var MediaSignalRecorder = class {
|
|
833
|
+
values;
|
|
834
|
+
positions;
|
|
835
|
+
recorded = 0;
|
|
836
|
+
evaluating = false;
|
|
837
|
+
horizon = -1;
|
|
838
|
+
sampler;
|
|
839
|
+
check;
|
|
840
|
+
startFrame;
|
|
841
|
+
durationFrames;
|
|
842
|
+
fps;
|
|
843
|
+
mode;
|
|
844
|
+
constructor(options) {
|
|
845
|
+
if (!Number.isFinite(options.fps) || options.fps <= 0 || !Number.isInteger(options.startFrame) || options.startFrame < 0 || !Number.isInteger(options.durationFrames) || options.durationFrames <= 0) throw new Error("Invalid media signal timing");
|
|
846
|
+
const start = options.sourceStartSec ?? 0;
|
|
847
|
+
if (!Number.isFinite(start) || start < 0) throw new Error("Invalid media signal source start");
|
|
848
|
+
this.mode = options.mode;
|
|
849
|
+
this.fps = options.fps;
|
|
850
|
+
this.startFrame = options.startFrame;
|
|
851
|
+
this.durationFrames = options.durationFrames;
|
|
852
|
+
this.sampler = options.sample;
|
|
853
|
+
this.values = new Float64Array(options.durationFrames + 1);
|
|
854
|
+
if (options.mode === "speed") {
|
|
855
|
+
this.positions = new Float64Array(options.durationFrames + 1);
|
|
856
|
+
this.positions[0] = start;
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
/** The first composition frame whose boundary is not yet recorded. */
|
|
860
|
+
get nextFrame() {
|
|
861
|
+
return this.startFrame + this.recorded;
|
|
862
|
+
}
|
|
863
|
+
get complete() {
|
|
864
|
+
return this.recorded === this.values.length;
|
|
865
|
+
}
|
|
866
|
+
/** Allow on-demand sampling through a composition frame the clock has reached. */
|
|
867
|
+
advance(frame$1) {
|
|
868
|
+
if (frame$1 > this.horizon) this.horizon = frame$1;
|
|
869
|
+
}
|
|
870
|
+
/**
|
|
871
|
+
* Validate source bounds as history arrives: the recorded part now, each
|
|
872
|
+
* further interval as it is recorded.
|
|
873
|
+
*/
|
|
874
|
+
checkRange(check) {
|
|
875
|
+
this.check = check;
|
|
876
|
+
if (this.recorded > 1) check(this.range(0, this.recorded - 1));
|
|
877
|
+
}
|
|
878
|
+
/** Each boundary is recorded once in composition-frame order. */
|
|
879
|
+
record(frame$1, value) {
|
|
880
|
+
const index = frame$1 - this.startFrame;
|
|
881
|
+
if (!Number.isInteger(frame$1) || index < 0 || index > this.durationFrames) throw new Error(`Media signal frame ${frame$1} is outside the layer`);
|
|
882
|
+
if (!Number.isFinite(value)) throw new Error(`Non-finite media signal at composition frame ${frame$1}`);
|
|
883
|
+
if (index < this.recorded) {
|
|
884
|
+
if (this.values[index] !== value) throw new Error(`Media signal frame ${frame$1} was already recorded with a different value`);
|
|
885
|
+
return;
|
|
886
|
+
}
|
|
887
|
+
if (index !== this.recorded) throw new Error(`Media signal frame ${frame$1} was recorded out of order`);
|
|
888
|
+
this.values[index] = value;
|
|
889
|
+
if (this.positions && index > 0) {
|
|
890
|
+
const position = this.positions[index - 1] + (this.values[index - 1] / 2 + value / 2) / this.fps;
|
|
891
|
+
if (!Number.isFinite(position)) throw new Error(`Media signal integration overflow at composition frame ${frame$1}`);
|
|
892
|
+
this.positions[index] = position;
|
|
893
|
+
}
|
|
894
|
+
if (this.check && index > 0) this.check(this.interval(index - 1));
|
|
895
|
+
this.recorded++;
|
|
896
|
+
}
|
|
897
|
+
/**
|
|
898
|
+
* Evaluate a boundary once, reporting recursive time dependencies. A
|
|
899
|
+
* boundary already recorded is kept, and `sample` is not called again.
|
|
900
|
+
*/
|
|
901
|
+
recordFrom(frame$1, sample) {
|
|
902
|
+
if (this.evaluating) throw new Error(`Circular media signal dependency at composition frame ${frame$1}`);
|
|
903
|
+
if (frame$1 - this.startFrame < this.recorded) return;
|
|
904
|
+
this.evaluating = true;
|
|
905
|
+
try {
|
|
906
|
+
this.record(frame$1, sample());
|
|
907
|
+
} finally {
|
|
908
|
+
this.evaluating = false;
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
/** Sample every boundary through `frame` that the clock has reached. */
|
|
912
|
+
ensure(frame$1) {
|
|
913
|
+
const sampler = this.sampler;
|
|
914
|
+
if (!sampler) return;
|
|
915
|
+
const last = Math.min(frame$1, this.horizon, this.startFrame + this.durationFrames);
|
|
916
|
+
if (this.evaluating && frame$1 >= this.nextFrame) throw new Error(`Circular media signal dependency at composition frame ${this.nextFrame}`);
|
|
917
|
+
for (let f = this.nextFrame; f <= last; f++) this.recordFrom(f, () => sampler(f));
|
|
918
|
+
}
|
|
919
|
+
/**
|
|
920
|
+
* Close a layer that outlives the clock: the boundaries past the last
|
|
921
|
+
* rendered frame hold the last recorded value.
|
|
922
|
+
*/
|
|
923
|
+
close() {
|
|
924
|
+
if (this.recorded === 0) throw new Error("Media signal history has no recorded frames");
|
|
925
|
+
const last = this.values[this.recorded - 1];
|
|
926
|
+
while (!this.complete) this.record(this.nextFrame, last);
|
|
927
|
+
}
|
|
928
|
+
/** The known source position at an already-recorded frame boundary. */
|
|
929
|
+
at(frame$1) {
|
|
930
|
+
this.ensure(frame$1);
|
|
931
|
+
const index = frame$1 - this.startFrame;
|
|
932
|
+
if (!Number.isInteger(frame$1) || index < 0 || index >= this.recorded) throw new Error(`Media signal frame ${frame$1} has not been recorded`);
|
|
933
|
+
return this.positions ? this.positions[index] : this.values[index];
|
|
934
|
+
}
|
|
935
|
+
/** Read a recorded local frame, including fractional audio sample positions. */
|
|
936
|
+
sourceTime(localFrame) {
|
|
937
|
+
if (Number.isFinite(localFrame)) this.ensure(this.startFrame + Math.ceil(localFrame));
|
|
938
|
+
if (!Number.isFinite(localFrame) || localFrame < 0 || localFrame > this.recorded - 1) throw new Error(`Media signal local frame ${localFrame} has not been recorded`);
|
|
939
|
+
if (Number.isInteger(localFrame)) return this.at(this.startFrame + localFrame);
|
|
940
|
+
const i = Math.floor(localFrame);
|
|
941
|
+
const t = localFrame - i;
|
|
942
|
+
const a = this.values[i];
|
|
943
|
+
const b = this.values[i + 1];
|
|
944
|
+
return this.positions ? this.positions[i] + (a * (t - t * t / 2) + b * (t * t / 2)) / this.fps : a * (1 - t) + b * t;
|
|
945
|
+
}
|
|
946
|
+
/** Read the instantaneous speed for an interval whose endpoints are known. */
|
|
947
|
+
rate(localFrame) {
|
|
948
|
+
const i = this.knownInterval(localFrame);
|
|
949
|
+
const a = this.values[i];
|
|
950
|
+
const b = this.values[i + 1];
|
|
951
|
+
const t = localFrame - i;
|
|
952
|
+
return this.positions ? a * (1 - t) + b * t : (b - a) * this.fps;
|
|
953
|
+
}
|
|
954
|
+
isHold(localFrame) {
|
|
955
|
+
const i = this.knownInterval(localFrame);
|
|
956
|
+
return this.positions ? this.values[i] === 0 && this.values[i + 1] === 0 : this.values[i] === this.values[i + 1];
|
|
957
|
+
}
|
|
958
|
+
range(from, to) {
|
|
959
|
+
if (Number.isFinite(from) && Number.isFinite(to)) this.ensure(this.startFrame + Math.ceil(Math.max(from, to)));
|
|
960
|
+
if (!Number.isFinite(from) || !Number.isFinite(to) || from < 0 || to < 0 || Math.max(from, to) > this.recorded - 1) throw new Error("Media signal range has not been recorded");
|
|
961
|
+
if (this.recorded === 1) {
|
|
962
|
+
const value = this.sourceTime(0);
|
|
963
|
+
return {
|
|
964
|
+
min: value,
|
|
965
|
+
max: value,
|
|
966
|
+
maxIncluded: false
|
|
967
|
+
};
|
|
968
|
+
}
|
|
969
|
+
return sampledMediaSourceRange(this.history(0, this.recorded), from, to);
|
|
970
|
+
}
|
|
971
|
+
/** A self-contained snapshot, available only when every boundary was recorded. */
|
|
972
|
+
finish() {
|
|
973
|
+
if (!this.complete) throw new Error("Media signal history is incomplete");
|
|
974
|
+
const values = this.values.slice();
|
|
975
|
+
return this.positions ? {
|
|
976
|
+
mode: "speed",
|
|
977
|
+
fps: this.fps,
|
|
978
|
+
values,
|
|
979
|
+
positions: this.positions.slice()
|
|
980
|
+
} : {
|
|
981
|
+
mode: "source-time",
|
|
982
|
+
fps: this.fps,
|
|
983
|
+
values
|
|
984
|
+
};
|
|
985
|
+
}
|
|
986
|
+
knownInterval(localFrame) {
|
|
987
|
+
const i = Math.floor(localFrame);
|
|
988
|
+
if (Number.isFinite(localFrame)) this.ensure(this.startFrame + i + 1);
|
|
989
|
+
if (!Number.isFinite(localFrame) || i < 0 || i + 1 >= this.recorded) throw new Error(`Media signal interval ${localFrame} has not been recorded`);
|
|
990
|
+
return i;
|
|
991
|
+
}
|
|
992
|
+
/** Bounds of the interval starting at boundary `i`, its end exclusive. */
|
|
993
|
+
interval(i) {
|
|
994
|
+
return sampledMediaSourceRange(this.history(i, i + 2), 0, 1);
|
|
995
|
+
}
|
|
996
|
+
history(from, to) {
|
|
997
|
+
const values = this.values.subarray(from, to);
|
|
998
|
+
return this.positions ? {
|
|
999
|
+
mode: "speed",
|
|
1000
|
+
fps: this.fps,
|
|
1001
|
+
values,
|
|
1002
|
+
positions: this.positions.subarray(from, to)
|
|
1003
|
+
} : {
|
|
1004
|
+
mode: "source-time",
|
|
1005
|
+
fps: this.fps,
|
|
1006
|
+
values
|
|
1007
|
+
};
|
|
1008
|
+
}
|
|
1009
|
+
};
|
|
1010
|
+
/** Maps layer-local frames to absolute source seconds. */
|
|
1011
|
+
const MediaTimeRemapSchema = z.discriminatedUnion("kind", [z.object({
|
|
1012
|
+
kind: z.literal("rate"),
|
|
1013
|
+
sourceStartSec: z.number().finite().nonnegative(),
|
|
1014
|
+
rate: z.number().finite().refine((v) => v !== 0, "rate must not be zero")
|
|
1015
|
+
}).strict(), z.object({
|
|
1016
|
+
kind: z.literal("keyframes"),
|
|
1017
|
+
keyframes: z.array(z.object({
|
|
1018
|
+
frame: z.number().int().nonnegative(),
|
|
1019
|
+
sourceSec: z.number().finite().nonnegative(),
|
|
1020
|
+
interpolation: z.enum([
|
|
1021
|
+
"linear",
|
|
1022
|
+
"ease-in",
|
|
1023
|
+
"ease-out",
|
|
1024
|
+
"smooth"
|
|
1025
|
+
]).optional()
|
|
1026
|
+
}).strict()).min(2)
|
|
1027
|
+
}).strict()]);
|
|
1028
|
+
const MediaTimeSignalRemapSchema = z.object({
|
|
1029
|
+
kind: z.literal("signal"),
|
|
1030
|
+
mode: z.enum(["speed", "source-time"]),
|
|
1031
|
+
signal: z.union([z.string().min(1), z.custom(isSignal, "signal must be a Signal or the name of a composition signal")]),
|
|
1032
|
+
sourceStartSec: z.number().finite().nonnegative().optional()
|
|
1033
|
+
}).strict();
|
|
1034
|
+
const MediaTimeRemapInputSchema = z.discriminatedUnion("kind", [...MediaTimeRemapSchema.options, MediaTimeSignalRemapSchema]);
|
|
1035
|
+
function assertSampledFps(history, fps$1) {
|
|
1036
|
+
if (history.fps !== fps$1) throw new Error(`Media signal history fps ${history.fps} does not match composition fps ${fps$1}`);
|
|
1037
|
+
}
|
|
1038
|
+
/** Validate the map against its explicit, exclusive layer duration. */
|
|
1039
|
+
function validateMediaTimeRemap(map, durationFrames) {
|
|
1040
|
+
if (!Number.isInteger(durationFrames) || durationFrames <= 0) return "durationFrames must be a positive integer";
|
|
1041
|
+
if (map.kind === "signal") return map.mode === "source-time" && map.sourceStartSec !== void 0 ? "sourceStartSec applies only to speed signals" : void 0;
|
|
1042
|
+
if (map.kind === "rate") return;
|
|
1043
|
+
const keys = map.keyframes;
|
|
1044
|
+
if (keys.length < 2 || keys[0].frame !== 0 || keys[keys.length - 1].frame !== durationFrames) return "time remap keyframes must start at frame 0 and end at durationFrames";
|
|
1045
|
+
for (let i = 1; i < keys.length; i++) if (keys[i].frame <= keys[i - 1].frame) return "time remap keyframes must have strictly increasing frames";
|
|
1046
|
+
}
|
|
1047
|
+
/** Find the segment containing a layer-local frame. */
|
|
1048
|
+
function segmentIndex(map, frame$1) {
|
|
1049
|
+
let lo = 0;
|
|
1050
|
+
let hi = map.keyframes.length - 1;
|
|
1051
|
+
while (hi - lo > 1) {
|
|
1052
|
+
const mid = Math.floor((lo + hi) / 2);
|
|
1053
|
+
if (map.keyframes[mid].frame <= frame$1) lo = mid;
|
|
1054
|
+
else hi = mid;
|
|
1055
|
+
}
|
|
1056
|
+
return lo;
|
|
1057
|
+
}
|
|
1058
|
+
/** Evaluate the monotonic easing assigned to the starting keyframe. */
|
|
1059
|
+
function shapeTime(t, interpolation) {
|
|
1060
|
+
switch (interpolation) {
|
|
1061
|
+
case "ease-in": return t * t;
|
|
1062
|
+
case "ease-out": return 1 - (1 - t) * (1 - t);
|
|
1063
|
+
case "smooth": return t * t * (3 - 2 * t);
|
|
1064
|
+
default: return t;
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
/** Absolute source seconds at a fractional layer-local frame. */
|
|
1068
|
+
function mediaSourceTime(map, localFrame, fps$1) {
|
|
1069
|
+
if (!Number.isFinite(localFrame) || !Number.isFinite(fps$1) || fps$1 <= 0) throw new Error("Invalid media time or fps");
|
|
1070
|
+
if (map.kind === "recorded") {
|
|
1071
|
+
if (map.recorder.fps !== fps$1) throw new Error("Media signal recorder fps does not match composition fps");
|
|
1072
|
+
return map.recorder.sourceTime(localFrame);
|
|
1073
|
+
}
|
|
1074
|
+
if (map.kind === "sampled") {
|
|
1075
|
+
assertSampledFps(map.history, fps$1);
|
|
1076
|
+
return sampledMediaSourceTime(map.history, localFrame);
|
|
1077
|
+
}
|
|
1078
|
+
if (map.kind === "rate") return map.sourceStartSec + localFrame / fps$1 * map.rate;
|
|
1079
|
+
const keys = map.keyframes;
|
|
1080
|
+
if (keys.length < 2) throw new Error("Time remap needs at least two keyframes");
|
|
1081
|
+
if (localFrame <= keys[0].frame) return keys[0].sourceSec;
|
|
1082
|
+
if (localFrame >= keys[keys.length - 1].frame) return keys[keys.length - 1].sourceSec;
|
|
1083
|
+
const i = segmentIndex(map, localFrame);
|
|
1084
|
+
const a = keys[i];
|
|
1085
|
+
const b = keys[i + 1];
|
|
1086
|
+
const t = (localFrame - a.frame) / (b.frame - a.frame);
|
|
1087
|
+
return a.sourceSec + (b.sourceSec - a.sourceSec) * shapeTime(t, a.interpolation ?? "linear");
|
|
1088
|
+
}
|
|
1089
|
+
/** True only for a constant source-time interval, not a ramp with zero instantaneous velocity. */
|
|
1090
|
+
function mediaSourceIsHold(map, frame$1) {
|
|
1091
|
+
if (map.kind === "rate") return false;
|
|
1092
|
+
if (map.kind === "recorded") return map.recorder.isHold(frame$1);
|
|
1093
|
+
if (map.kind === "sampled") {
|
|
1094
|
+
const values = map.history.values;
|
|
1095
|
+
const i$1 = Math.max(0, Math.min(values.length - 2, Math.floor(frame$1)));
|
|
1096
|
+
return map.history.mode === "speed" ? values[i$1] === 0 && values[i$1 + 1] === 0 : values[i$1] === values[i$1 + 1];
|
|
1097
|
+
}
|
|
1098
|
+
const i = segmentIndex(map, frame$1);
|
|
1099
|
+
return map.keyframes[i].sourceSec === map.keyframes[i + 1].sourceSec;
|
|
1100
|
+
}
|
|
1101
|
+
/** Source seconds per output second at a layer-local frame. */
|
|
1102
|
+
function mediaSourceRate(map, frame$1, fps$1) {
|
|
1103
|
+
if (map.kind === "rate") return map.rate;
|
|
1104
|
+
if (map.kind === "recorded") {
|
|
1105
|
+
if (map.recorder.fps !== fps$1) throw new Error("Media signal recorder fps does not match composition fps");
|
|
1106
|
+
return map.recorder.rate(frame$1);
|
|
1107
|
+
}
|
|
1108
|
+
if (map.kind === "sampled") {
|
|
1109
|
+
assertSampledFps(map.history, fps$1);
|
|
1110
|
+
const values = map.history.values;
|
|
1111
|
+
const i$1 = Math.max(0, Math.min(values.length - 2, Math.floor(frame$1)));
|
|
1112
|
+
const t$1 = Math.max(0, Math.min(1, frame$1 - i$1));
|
|
1113
|
+
return map.history.mode === "speed" ? values[i$1] * (1 - t$1) + values[i$1 + 1] * t$1 : (values[i$1 + 1] - values[i$1]) * map.history.fps;
|
|
1114
|
+
}
|
|
1115
|
+
const i = segmentIndex(map, frame$1);
|
|
1116
|
+
const a = map.keyframes[i];
|
|
1117
|
+
const b = map.keyframes[i + 1];
|
|
1118
|
+
const t = Math.max(0, Math.min(1, (frame$1 - a.frame) / (b.frame - a.frame)));
|
|
1119
|
+
const derivative = a.interpolation === "ease-in" ? 2 * t : a.interpolation === "ease-out" ? 2 * (1 - t) : a.interpolation === "smooth" ? 6 * t * (1 - t) : 1;
|
|
1120
|
+
return (b.sourceSec - a.sourceSec) / (b.frame - a.frame) * fps$1 * derivative;
|
|
1121
|
+
}
|
|
1122
|
+
/** Bounds over a local-frame interval, including intermediate turns. */
|
|
1123
|
+
function mediaSourceRange(map, fromFrame, toFrame, fps$1) {
|
|
1124
|
+
if (map.kind === "recorded") {
|
|
1125
|
+
if (map.recorder.fps !== fps$1) throw new Error("Media signal recorder fps does not match composition fps");
|
|
1126
|
+
return map.recorder.range(fromFrame, toFrame);
|
|
1127
|
+
}
|
|
1128
|
+
if (map.kind === "sampled") {
|
|
1129
|
+
assertSampledFps(map.history, fps$1);
|
|
1130
|
+
return sampledMediaSourceRange(map.history, fromFrame, toFrame);
|
|
1131
|
+
}
|
|
1132
|
+
const start = Math.min(fromFrame, toFrame), end = Math.max(fromFrame, toFrame);
|
|
1133
|
+
const first = mediaSourceTime(map, start, fps$1);
|
|
1134
|
+
const last = mediaSourceTime(map, end, fps$1);
|
|
1135
|
+
let min = Math.min(first, last);
|
|
1136
|
+
let max = Math.max(first, last);
|
|
1137
|
+
let maxIncluded = start < end && first === max;
|
|
1138
|
+
if (map.kind === "keyframes") for (const key of map.keyframes) {
|
|
1139
|
+
if (key.frame <= start || key.frame >= end) continue;
|
|
1140
|
+
min = Math.min(min, key.sourceSec);
|
|
1141
|
+
if (key.sourceSec > max) {
|
|
1142
|
+
max = key.sourceSec;
|
|
1143
|
+
maxIncluded = true;
|
|
1144
|
+
} else if (key.sourceSec === max) maxIncluded = true;
|
|
1145
|
+
}
|
|
1146
|
+
return {
|
|
1147
|
+
min,
|
|
1148
|
+
max,
|
|
1149
|
+
maxIncluded
|
|
1150
|
+
};
|
|
1151
|
+
}
|
|
736
1152
|
const HandleDefinitionSchema = z$1.object({
|
|
737
1153
|
dataTypes: z$1.custom(),
|
|
738
1154
|
label: z$1.string(),
|
|
@@ -2640,5 +3056,5 @@ function extractSvgDimensions(buffer) {
|
|
|
2640
3056
|
}
|
|
2641
3057
|
|
|
2642
3058
|
//#endregion
|
|
2643
|
-
export {
|
|
2644
|
-
//# sourceMappingURL=dist-
|
|
3059
|
+
export { SourceOperationSchema as $, mediaSourceRange as $t, MIME_TYPES as A, signalBuilder as An, frame as At, MultiOutputGenericSchema as B, gradientStopsToOklab as Bt, FileDataSchema as C, sampleFrameMediaSignal as Cn, degrees as Ct, HandleTypeVal as D, seconds as Dn, findSourceAsset as Dt, Gradient as E, sampledMediaSourceTime as En, extractSvgDimensions as Et, MediaTimeRemapInputSchema as F, updateClockSignals as Fn, getFileDataMetadata as Ft, ProgrammaticSignal as G, isEqual as Gt, NodeResultSchema as H, handleLabel as Ht, MediaTimeRemapSchema as I, validateMediaTimeRemap as In, getFingerprint as It, SignalDataSchema as J, isSignal as Jt, Signal as K, isFrameIndex as Kt, MediaTimeSignalRemapSchema as L, getLeafMediaType as Lt, MediaOperationSchema as M, stampResult as Mn, frameSignal as Mt, MediaSignalRecorder as N, takeRenderDiagnostics as Nn, generateId as Nt, JsonValueSchema as O, serializeSignalData as On, formatHex as Ot, MediaSourceSchema as P, timeSignal as Pn, getActiveMediaMetadata as Pt, SingleOutputGenericSchema as Q, mediaSourceIsHold as Qt, ModerationError as R, getMediaType as Rt, FileAssetSchema as S, sampleColorStops as Sn, dataTypeColors as St, GlobalCompositeOperation as T, sampledMediaSourceRange as Tn, emojiPresentation as Tt, NodeVisualConfigSchema as U, hasOnlySingleSource as Ut, NodeMetadataSchema as V, handleId as Vt, OutputItemSchema as W, isCssGradient as Wt, SignalMathDataSchema as X, isVirtualMediaData as Xt, SignalGateDataSchema as Y, isValueSignal as Yt, SignalStatsSchema as Z, limitGradientStops as Zt, DataTypeVal as _, resolveMediaMimeType as _n, computeVideoCropRenderProps as _t, BaseVideoLayerPropsSchema as a, normalizeColorStops as an, TransitionTypeSchema as at, ExportResultSchema as b, resolveString as bn, createOutputItemSchema as bt, COMPOSITOR_DEFAULTS as c, parseCssColor as cn, VideoSpatialPropsSchema as ct, ConfigSchemaRegistry as d, programmaticSignal as dn, VideoTimingPropsSchema as dt, mediaSourceRate as en, TEXT_LAYER_DEFAULTS as et, DATA_TYPE_EXTENSIONS as f, progressSignal as fn, VirtualMediaDataSchema as ft, DataType as g, resolveBoolean as gn, compositionFrameContext as gt, DEFAULT_MEDIA_DIMENSION as h, reportRenderDiagnostic as hn, checkNodeResultCache as ht, BaseMediaOperationPropsSchema as i, nodeId as in, TransitionSchema as it, MediaMetadataSchema as j, sineSignal as jn, frameArraySignal as jt, MAX_GRADIENT_STOPS as k, signal as kn, fps as kt, Color as l, parseCssGradient as ln, VideoStylePropsSchema as lt, DEFAULT_FPS as m, registerSignalDependency as mn, assertNever as mt, AnyOutputUnionSchema as n, mixColors as nn, TimelineSegmentSchema as nt, CAPTION_LAYER_DEFAULTS as o, normalized as on, VideoAnimationSchema as ot, DEFAULT_DURATION_MS as p, radians as pn, appendOperation as pt, SignalChannelMetaSchema as q, isNormalized as qt, AudioExtractorSignalDataSchema as r, ms as rn, TimelineTransformSchema as rt, COMPOSITE_OPERATIONS as s, oklabToRgb as sn, VideoLayerTypeSchema as st, AnimationTypeSchema as t, mediaSourceTime as tn, TextOperationSchema as tt, ConfigHandleSchema as u, pixels as un, VideoTextPropsSchema as ut, DataTypes as v, resolveNumber as vn, computed as vt, GeneratorSignalDataSchema as w, sampleMediaSignal as wn, deserializeSignalData as wt, ExtendedLayerSchema as x, rgbToOklab as xn, createVirtualMedia as xt, Effect as y, resolveParam as yn, cosineSignal as yt, ModerationUnrefundableError as z, getRenderFingerprint as zt };
|
|
3060
|
+
//# sourceMappingURL=dist-BRXsfWKQ.mjs.map
|