framefields 2.0.11 → 2.1.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/README.md +22 -5
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +13 -12
- package/dist/{audio-BHanw8Jb.d.mts → audio-C2fLC3Tx.d.mts} +3 -3
- package/dist/{audio-BHanw8Jb.d.mts.map → audio-C2fLC3Tx.d.mts.map} +1 -1
- package/dist/{audio-TAvPwzLR.mjs → audio-DJeVoE8b.mjs} +1 -1
- package/dist/{audio-TAvPwzLR.mjs.map → audio-DJeVoE8b.mjs.map} +1 -1
- package/dist/{audio-COOMNwL5.mjs → audio-D_4SeMRK.mjs} +4 -4
- package/dist/{audio-COOMNwL5.mjs.map → audio-D_4SeMRK.mjs.map} +1 -1
- package/dist/{client-CwRhflHE.mjs → client-dVxUnmHz.mjs} +1 -1
- package/dist/{client-CwRhflHE.mjs.map → client-dVxUnmHz.mjs.map} +1 -1
- package/dist/{dist-C_hjvkdN.mjs → dist-0QGroRYZ.mjs} +1 -1
- package/dist/{dist-C_hjvkdN.mjs.map → dist-0QGroRYZ.mjs.map} +1 -1
- package/dist/{dist-BYqNNwsl.mjs → dist-BY0bIWgr.mjs} +10 -2
- package/dist/dist-BY0bIWgr.mjs.map +1 -0
- package/dist/{dist-Cxi68OuY.mjs → dist-Bun_TUvZ.mjs} +26862 -25638
- package/dist/dist-Bun_TUvZ.mjs.map +1 -0
- package/dist/{dist-BAVZdFEJ.mjs → dist-DlzqyRar.mjs} +75 -618
- package/dist/dist-DlzqyRar.mjs.map +1 -0
- package/dist/{dist-cjs-TsA8LFXC.mjs → dist-cjs-91nR6B7Z.mjs} +3 -3
- package/dist/{dist-cjs-TsA8LFXC.mjs.map → dist-cjs-91nR6B7Z.mjs.map} +1 -1
- package/dist/{dist-cjs-DJ8fcQEe.mjs → dist-cjs-BAIenEMC.mjs} +11 -11
- package/dist/{dist-cjs-DJ8fcQEe.mjs.map → dist-cjs-BAIenEMC.mjs.map} +1 -1
- package/dist/{dist-cjs-BmyyWYWv.mjs → dist-cjs-BEQhh76X.mjs} +2 -2
- package/dist/{dist-cjs-BmyyWYWv.mjs.map → dist-cjs-BEQhh76X.mjs.map} +1 -1
- package/dist/{dist-cjs--pxyGFw2.mjs → dist-cjs-BYPq7pfw.mjs} +1 -1
- package/dist/{dist-cjs--pxyGFw2.mjs.map → dist-cjs-BYPq7pfw.mjs.map} +1 -1
- package/dist/{dist-cjs--lfMLs3U.mjs → dist-cjs-BocDqSCX.mjs} +4 -4
- package/dist/{dist-cjs--lfMLs3U.mjs.map → dist-cjs-BocDqSCX.mjs.map} +1 -1
- package/dist/{dist-cjs-CsU2sZoX.mjs → dist-cjs-CWiNggTl.mjs} +4 -4
- package/dist/{dist-cjs-CsU2sZoX.mjs.map → dist-cjs-CWiNggTl.mjs.map} +1 -1
- package/dist/{dist-cjs-DjzmP0-x.mjs → dist-cjs-CwabutT6.mjs} +13 -13
- package/dist/{dist-cjs-DjzmP0-x.mjs.map → dist-cjs-CwabutT6.mjs.map} +1 -1
- package/dist/{dist-cjs-BDpO-TH_.mjs → dist-cjs-D-EE4Ahy.mjs} +1 -1
- package/dist/{dist-cjs-BDpO-TH_.mjs.map → dist-cjs-D-EE4Ahy.mjs.map} +1 -1
- package/dist/{dist-cjs-CQwmMllY.mjs → dist-cjs-DNtDUWfk.mjs} +6 -6
- package/dist/{dist-cjs-CQwmMllY.mjs.map → dist-cjs-DNtDUWfk.mjs.map} +1 -1
- package/dist/{dist-cjs-CND_ghfH.mjs → dist-cjs-DbZhsgS0.mjs} +1 -1
- package/dist/{dist-cjs-CND_ghfH.mjs.map → dist-cjs-DbZhsgS0.mjs.map} +1 -1
- package/dist/{dist-cjs-CgFzrgj8.mjs → dist-cjs-Dh7REKcN.mjs} +1 -1
- package/dist/{dist-cjs-CgFzrgj8.mjs.map → dist-cjs-Dh7REKcN.mjs.map} +1 -1
- package/dist/{dist-cjs-DT2jJlcK.mjs → dist-cjs-Dobx0Nz-.mjs} +5 -5
- package/dist/{dist-cjs-DT2jJlcK.mjs.map → dist-cjs-Dobx0Nz-.mjs.map} +1 -1
- package/dist/{dist-cjs-DzjrlfbE.mjs → dist-cjs-Du0UpNof.mjs} +14 -14
- package/dist/{dist-cjs-DzjrlfbE.mjs.map → dist-cjs-Du0UpNof.mjs.map} +1 -1
- package/dist/dist-cjs-DyHiUfsr.mjs +6 -0
- package/dist/{dist-cjs-M-8QOgS_.mjs → dist-cjs-HHMfMF5a.mjs} +2 -2
- package/dist/{dist-cjs-M-8QOgS_.mjs.map → dist-cjs-HHMfMF5a.mjs.map} +1 -1
- package/dist/{dist-cjs-BiKQozdJ.mjs → dist-cjs-UJYQzLNT.mjs} +3 -3
- package/dist/{dist-cjs-BiKQozdJ.mjs.map → dist-cjs-UJYQzLNT.mjs.map} +1 -1
- package/dist/{dist-cjs-agQl9T8M.mjs → dist-cjs-UKxm5cFR.mjs} +6 -6
- package/dist/{dist-cjs-agQl9T8M.mjs.map → dist-cjs-UKxm5cFR.mjs.map} +1 -1
- package/dist/{dist-CbG3QxDw.mjs → dist-fjKpBYkc.mjs} +12 -27
- package/dist/dist-fjKpBYkc.mjs.map +1 -0
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +36 -34
- package/dist/{effects-DzbjFhyA.mjs → effects-FTlu0dri.mjs} +3 -3
- package/dist/{effects-DzbjFhyA.mjs.map → effects-FTlu0dri.mjs.map} +1 -1
- package/dist/{event-streams-BaNGaLxh.mjs → event-streams-DnRe8uwT.mjs} +2 -2
- package/dist/{event-streams-BaNGaLxh.mjs.map → event-streams-DnRe8uwT.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +3 -1
- package/dist/{fonts-C0W6TgJk.mjs → fonts-UM5xaBOx.mjs} +24 -11
- package/dist/fonts-UM5xaBOx.mjs.map +1 -0
- package/dist/gpu-RkpiFGOA.mjs +215 -0
- package/dist/gpu-RkpiFGOA.mjs.map +1 -0
- package/dist/{index-CYGpSVsf.d.mts → index-CHQ39_Oe.d.mts} +2 -2
- package/dist/{index-CYGpSVsf.d.mts.map → index-CHQ39_Oe.d.mts.map} +1 -1
- package/dist/{index-CDoTrMs1.d.mts → index-CzQseCtg.d.mts} +8 -8
- package/dist/{index-CDoTrMs1.d.mts.map → index-CzQseCtg.d.mts.map} +1 -1
- package/dist/{index-DDEPvMww.d.mts → index-D67p-rHX.d.mts} +3452 -1675
- package/dist/index-D67p-rHX.d.mts.map +1 -0
- package/dist/{index-9B8CJowc.d.mts → index-DPicEt8H.d.mts} +10 -2
- package/dist/index-DPicEt8H.d.mts.map +1 -0
- package/dist/{index-DGJp1d30.d.mts → index-Db8Z3AtX.d.mts} +3 -3
- package/dist/{index-DGJp1d30.d.mts.map → index-Db8Z3AtX.d.mts.map} +1 -1
- package/dist/{index-DRZu3ezy.d.mts → index-DsOqONsj.d.mts} +3 -3
- package/dist/{index-DRZu3ezy.d.mts.map → index-DsOqONsj.d.mts.map} +1 -1
- package/dist/{index-DnWsbbuZ.d.mts → index-l03NV8JS.d.mts} +7 -2
- package/dist/index-l03NV8JS.d.mts.map +1 -0
- package/dist/index.d.mts +28 -1841
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +79 -65
- package/dist/index.mjs.map +1 -1
- package/dist/{package-XpCRbTOA.mjs → package-CudzAF-n.mjs} +1 -1
- package/dist/{package-XpCRbTOA.mjs.map → package-CudzAF-n.mjs.map} +1 -1
- package/dist/preview/index.d.mts +2 -2
- package/dist/preview/index.mjs +13 -12
- package/dist/{preview-BV2C4Fk6.mjs → preview-DwClLMlU.mjs} +3 -3
- package/dist/{preview-BV2C4Fk6.mjs.map → preview-DwClLMlU.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-Y6HWYPKX.mjs → chunk-3GNP7TJH.mjs} +3 -3
- package/dist/preview-engine/{chunk-LIHUEYI5.mjs → chunk-44CQSOYE.mjs} +2 -2
- package/dist/preview-engine/{chunk-6JW37VJA.mjs → chunk-5AUB4Y3L.mjs} +3 -23
- package/dist/preview-engine/chunk-5DOD2NVY.mjs +26 -0
- package/dist/preview-engine/chunk-5FC7GOWW.mjs +474 -0
- package/dist/preview-engine/chunk-5W4AFQP7.mjs +97 -0
- package/dist/preview-engine/chunk-63SFBHEH.mjs +1 -0
- package/dist/preview-engine/chunk-7EPIRODI.mjs +91 -0
- package/dist/preview-engine/{chunk-PQD5UPHG.mjs → chunk-7G3XIOP7.mjs} +1 -1
- package/dist/preview-engine/chunk-7J2FWGVD.mjs +1 -0
- package/dist/preview-engine/chunk-AXHB4J37.mjs +147 -0
- package/dist/preview-engine/chunk-AY7UX37L.mjs +450 -0
- package/dist/preview-engine/chunk-B43Z3J7J.mjs +5 -0
- package/dist/preview-engine/chunk-BWJS6G7R.mjs +314 -0
- package/dist/preview-engine/{chunk-24DXIKXL.mjs → chunk-DIGIQ5MJ.mjs} +2 -2
- package/dist/preview-engine/{chunk-AEK5BO3J.mjs → chunk-E4RAFHZM.mjs} +1 -1
- package/dist/preview-engine/chunk-ENKKLU7B.mjs +22 -0
- package/dist/preview-engine/{chunk-XLFYM7KH.mjs → chunk-EVXWDOCL.mjs} +2 -2
- package/dist/preview-engine/{chunk-EQ4QZRXB.mjs → chunk-EYWPOCZW.mjs} +2 -2
- package/dist/preview-engine/{chunk-IYVN2QEL.mjs → chunk-FLPSWDX4.mjs} +1 -1
- package/dist/preview-engine/chunk-FU7AIAMM.mjs +88 -0
- package/dist/preview-engine/{chunk-CBM7B7EW.mjs → chunk-GMGGDADT.mjs} +1 -1
- package/dist/preview-engine/chunk-GSFN4WCH.mjs +62 -0
- package/dist/preview-engine/chunk-HE4R7EZM.mjs +121 -0
- package/dist/preview-engine/chunk-IQC2I5A5.mjs +1 -0
- package/dist/preview-engine/{chunk-RJUAM52F.mjs → chunk-IR5DNNWR.mjs} +3 -23
- package/dist/preview-engine/chunk-IUPDOATX.mjs +114 -0
- package/dist/preview-engine/{chunk-GHMCGTJ2.mjs → chunk-J2R5R7YY.mjs} +3 -23
- package/dist/preview-engine/chunk-JAJOZG5P.mjs +1 -0
- package/dist/preview-engine/chunk-JXNG2ACR.mjs +118 -0
- package/dist/preview-engine/{chunk-V6VU46ZG.mjs → chunk-L6BH5J4P.mjs} +1 -1
- package/dist/preview-engine/chunk-LGVEFPOG.mjs +3 -0
- package/dist/preview-engine/{chunk-MDDF2GCF.mjs → chunk-MLY5M7Y5.mjs} +3 -23
- package/dist/preview-engine/chunk-NPD6W3RP.mjs +1 -0
- package/dist/preview-engine/chunk-OCX5AD23.mjs +1 -0
- package/dist/preview-engine/{chunk-D3TETPLI.mjs → chunk-OG62XGCT.mjs} +1 -1
- package/dist/preview-engine/chunk-OJ2PKBXE.mjs +40 -0
- package/dist/preview-engine/chunk-OKH2VU2U.mjs +97 -0
- package/dist/preview-engine/chunk-PAQNDZQB.mjs +83 -0
- package/dist/preview-engine/chunk-PEWYB6WP.mjs +43 -0
- package/dist/preview-engine/chunk-PL4IH5V4.mjs +89 -0
- package/dist/preview-engine/chunk-PSRQA3QW.mjs +84 -0
- package/dist/preview-engine/{chunk-QYRDQMNB.mjs → chunk-PXT52LEH.mjs} +3 -23
- package/dist/preview-engine/chunk-Q22PJXFJ.mjs +69 -0
- package/dist/preview-engine/chunk-Q4Z54DQ7.mjs +1 -0
- package/dist/preview-engine/{chunk-BHFI3Y4T.mjs → chunk-QBEUICZD.mjs} +1 -1
- package/dist/preview-engine/chunk-RQLMW6MA.mjs +4 -0
- package/dist/preview-engine/chunk-RSMO7NPN.mjs +1 -0
- package/dist/preview-engine/chunk-RW2F3XLQ.mjs +90 -0
- package/dist/preview-engine/{chunk-25IW7NYO.mjs → chunk-S2CTIJSI.mjs} +1 -1
- package/dist/preview-engine/chunk-SGPRLTNF.mjs +52 -0
- package/dist/preview-engine/{chunk-Y6FEU4TV.mjs → chunk-SZW5J72T.mjs} +3 -23
- package/dist/preview-engine/{chunk-ECPP3UG6.mjs → chunk-T2FE5VOW.mjs} +3 -23
- package/dist/preview-engine/{chunk-ZSIJB76A.mjs → chunk-TS3JI3BH.mjs} +2 -2
- package/dist/preview-engine/{chunk-AMBSW6OA.mjs → chunk-U4JIFQRR.mjs} +2 -2
- package/dist/preview-engine/{chunk-BJKH76OM.mjs → chunk-VXS5SIEC.mjs} +3 -23
- package/dist/preview-engine/chunk-WFGJXCZT.mjs +53 -0
- package/dist/preview-engine/chunk-WH5Q2NFN.mjs +32 -0
- package/dist/preview-engine/{chunk-AWTH2WZO.mjs → chunk-WUKH7BD7.mjs} +1 -1
- package/dist/preview-engine/chunk-XC5WZNOY.mjs +1448 -0
- package/dist/preview-engine/chunk-YQZOGEPZ.mjs +186 -0
- package/dist/preview-engine/{chunk-6256GQFP.mjs → chunk-ZDQF3OTC.mjs} +1 -1
- package/dist/preview-engine/chunk-ZIIFTWDH.mjs +58 -0
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +127 -130
- package/dist/preview-engine/player.mjs +6 -6
- package/dist/preview-engine/renderers-2H7YEUTD.mjs +1 -0
- package/dist/preview-engine/renderers-2ILG23ED.mjs +1 -0
- package/dist/preview-engine/renderers-2P6KXWEZ.mjs +1 -0
- package/dist/preview-engine/renderers-2SVWAB42.mjs +1 -0
- package/dist/preview-engine/renderers-2VN3AH45.mjs +104 -0
- package/dist/preview-engine/renderers-3RC5FDWX.mjs +1 -0
- package/dist/preview-engine/renderers-57WDL6XN.mjs +1 -0
- package/dist/preview-engine/{renderers-CAUWP4XH.mjs → renderers-6OGFUSH6.mjs} +3 -23
- package/dist/preview-engine/renderers-6WH7NZCC.mjs +1 -0
- package/dist/preview-engine/renderers-7VJN5L3Z.mjs +1 -0
- package/dist/preview-engine/renderers-A6HM64UZ.mjs +1 -0
- package/dist/preview-engine/{renderers-WLH4HRUE.mjs → renderers-A7VH3ON5.mjs} +1 -1
- package/dist/preview-engine/renderers-B7DSGUMI.mjs +1 -0
- package/dist/preview-engine/renderers-BFNJ7VCI.mjs +1 -0
- package/dist/preview-engine/renderers-BSKZXITT.mjs +35 -0
- package/dist/preview-engine/renderers-CGYIDAVV.mjs +1 -0
- package/dist/preview-engine/renderers-CRRLV7IO.mjs +1 -0
- package/dist/preview-engine/{renderers-JQHUBWLL.mjs → renderers-D6T6IPER.mjs} +3 -23
- package/dist/preview-engine/renderers-DXHJAMZR.mjs +1 -0
- package/dist/preview-engine/renderers-ECA3P4ON.mjs +1 -0
- package/dist/preview-engine/{renderers-W5CVDJVH.mjs → renderers-F55XFVMP.mjs} +1 -1
- package/dist/preview-engine/renderers-FWGMNPYB.mjs +1 -0
- package/dist/preview-engine/renderers-H46TS3IG.mjs +228 -0
- package/dist/preview-engine/renderers-HXFRTIJD.mjs +1 -0
- package/dist/preview-engine/renderers-IWQ3V6AJ.mjs +1 -0
- package/dist/preview-engine/renderers-JHFT27YU.mjs +1 -0
- package/dist/preview-engine/renderers-KZWGSKRF.mjs +1 -0
- package/dist/preview-engine/renderers-MON4QFRF.mjs +1 -0
- package/dist/preview-engine/renderers-NQXMYNSY.mjs +1 -0
- package/dist/preview-engine/renderers-NWHS7N2L.mjs +1 -0
- package/dist/preview-engine/renderers-ORAIXUL3.mjs +1 -0
- package/dist/preview-engine/renderers-OT7D3BUA.mjs +1 -0
- package/dist/preview-engine/renderers-Q4OFCMXI.mjs +1 -0
- package/dist/preview-engine/renderers-QVZVEYP5.mjs +1 -0
- package/dist/preview-engine/renderers-RJO6H4FC.mjs +1 -0
- package/dist/preview-engine/renderers-RKDPX5JU.mjs +1 -0
- package/dist/preview-engine/{renderers-2US2NIUG.mjs → renderers-RLHTNLRE.mjs} +3 -23
- package/dist/preview-engine/renderers-SBFF7JP5.mjs +1 -0
- package/dist/preview-engine/renderers-SCJ6OKTB.mjs +1 -0
- package/dist/preview-engine/renderers-T4JMJXWL.mjs +1 -0
- package/dist/preview-engine/renderers-TAWT3ZSS.mjs +1 -0
- package/dist/preview-engine/renderers-U6KY34TP.mjs +100 -0
- package/dist/preview-engine/renderers-UHTO6BQA.mjs +1 -0
- package/dist/preview-engine/renderers-UNK6I4JJ.mjs +1 -0
- package/dist/preview-engine/renderers-UPTJJE5F.mjs +1 -0
- package/dist/preview-engine/renderers-W773SBPV.mjs +1 -0
- package/dist/preview-engine/renderers-XHTMRXC5.mjs +1 -0
- package/dist/preview-engine/renderers-YECY2YFT.mjs +1 -0
- package/dist/preview-engine/renderers-YMN6QXK7.mjs +1 -0
- package/dist/preview-engine/renderers-ZANPE3OK.mjs +1 -0
- package/dist/preview-engine/renderers-ZHTX73PR.mjs +1 -0
- package/dist/preview-engine/renderers-ZJTRANIX.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/preview-engine/skia-canvas-QBXAOGPB.mjs +1 -0
- package/dist/{program-BmNKgzja.mjs → program-BqFVw5Mu.mjs} +93 -2335
- package/dist/program-BqFVw5Mu.mjs.map +1 -0
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +3 -3
- package/dist/{renderer-CnXW28b9.mjs → renderer-2Nf9ypST.mjs} +85 -279
- package/dist/renderer-2Nf9ypST.mjs.map +1 -0
- package/dist/{renderer-BREIjsUU.mjs → renderer-2uN2cd0y.mjs} +14 -40
- package/dist/renderer-2uN2cd0y.mjs.map +1 -0
- package/dist/renderer-31jAuNzF.mjs +5 -0
- package/dist/renderer-36EI7Rsz.mjs +5 -0
- package/dist/renderer-3io-cjTt.mjs +5 -0
- package/dist/renderer-9_zWTHbg.mjs +5 -0
- package/dist/{renderer-WSGuj_V6.mjs → renderer-B12_76qk.mjs} +4 -3
- package/dist/{renderer-WSGuj_V6.mjs.map → renderer-B12_76qk.mjs.map} +1 -1
- package/dist/{renderer-bsWnRNpJ.mjs → renderer-B4oS8ZFO.mjs} +29 -98
- package/dist/renderer-B4oS8ZFO.mjs.map +1 -0
- package/dist/renderer-B6KnbfdA.mjs +5 -0
- package/dist/renderer-B7Y2bmRc.mjs +5 -0
- package/dist/renderer-BA6miaaI.mjs +5 -0
- package/dist/{renderer-Bv6q84TU.mjs → renderer-BGr_cBKV.mjs} +61 -208
- package/dist/renderer-BGr_cBKV.mjs.map +1 -0
- package/dist/renderer-BHi-Q6Z_.mjs +5 -0
- package/dist/{renderer-Bv21DbWy.mjs → renderer-BLcu9RDt.mjs} +3 -1
- package/dist/{renderer-D2XD4QYk.mjs → renderer-BO2lYmtE.mjs} +34 -147
- package/dist/renderer-BO2lYmtE.mjs.map +1 -0
- package/dist/renderer-BOlN9HeG.mjs +5 -0
- package/dist/renderer-BSitV56h.mjs +268 -0
- package/dist/renderer-BSitV56h.mjs.map +1 -0
- package/dist/renderer-BTOW-ceB.mjs +5 -0
- package/dist/{renderer-Bhdf90Zq.mjs → renderer-BYqfkwLf.mjs} +51 -163
- package/dist/renderer-BYqfkwLf.mjs.map +1 -0
- package/dist/{renderer-bZU_ndxf.mjs → renderer-BajIOuZH.mjs} +2 -2
- package/dist/{renderer-bZU_ndxf.mjs.map → renderer-BajIOuZH.mjs.map} +1 -1
- package/dist/{renderer-DirxsOjq.mjs → renderer-BgnJUx24.mjs} +80 -258
- package/dist/renderer-BgnJUx24.mjs.map +1 -0
- package/dist/renderer-BiQ0PYOp.mjs +5 -0
- package/dist/{renderer-DIgsilTw.mjs → renderer-BjTq3a0L.mjs} +5 -4
- package/dist/{renderer-DIgsilTw.mjs.map → renderer-BjTq3a0L.mjs.map} +1 -1
- package/dist/{renderer-DEJwPRkR.mjs → renderer-BkN20ZKO.mjs} +15 -51
- package/dist/renderer-BkN20ZKO.mjs.map +1 -0
- package/dist/renderer-Bla7GDyV.mjs +5 -0
- package/dist/renderer-BoYyLVKy.mjs +5 -0
- package/dist/{renderer-D7zvPHKn.mjs → renderer-BpZaHFRc.mjs} +18 -28
- package/dist/renderer-BpZaHFRc.mjs.map +1 -0
- package/dist/renderer-BqOgb7bM.mjs +5 -0
- package/dist/{renderer-cgxO2xN6.mjs → renderer-Bq_dO0LG.mjs} +10 -17
- package/dist/renderer-Bq_dO0LG.mjs.map +1 -0
- package/dist/renderer-BqeM8yTJ.mjs +5 -0
- package/dist/{renderer-dncoIVdd.mjs → renderer-BqsV75Ml.mjs} +3 -1
- package/dist/{renderer-ChdLYS-G.mjs → renderer-Bs4tz_pw.mjs} +20 -87
- package/dist/renderer-Bs4tz_pw.mjs.map +1 -0
- package/dist/{renderer-DpGc-N3G.mjs → renderer-Bsaokil3.mjs} +24 -104
- package/dist/renderer-Bsaokil3.mjs.map +1 -0
- package/dist/{renderer-CXn5HAnK.mjs → renderer-BvG1GF1c.mjs} +10 -16
- package/dist/renderer-BvG1GF1c.mjs.map +1 -0
- package/dist/{renderer-CI7sG_cv.mjs → renderer-BvpSIFkw.mjs} +83 -266
- package/dist/renderer-BvpSIFkw.mjs.map +1 -0
- package/dist/{renderer-B8UaFNqb.mjs → renderer-BwAqwTQq.mjs} +62 -209
- package/dist/renderer-BwAqwTQq.mjs.map +1 -0
- package/dist/{renderer-CzPWB0Ss.mjs → renderer-BwVfhrEx.mjs} +13 -45
- package/dist/renderer-BwVfhrEx.mjs.map +1 -0
- package/dist/renderer-BzpRe50i.mjs +5 -0
- package/dist/renderer-C0eAPwpr.mjs +5 -0
- package/dist/{renderer-CtyD_Xju.mjs → renderer-C3RfT8Gv.mjs} +59 -194
- package/dist/renderer-C3RfT8Gv.mjs.map +1 -0
- package/dist/{renderer-B1YMwl2B.mjs → renderer-C3cYDT3m.mjs} +3 -1
- package/dist/{renderer-1VuQTY1Z.mjs → renderer-CEGbqT2m.mjs} +236 -96
- package/dist/renderer-CEGbqT2m.mjs.map +1 -0
- package/dist/{renderer-DxTs4Iyi.mjs → renderer-CGldH-Zx.mjs} +40 -142
- package/dist/renderer-CGldH-Zx.mjs.map +1 -0
- package/dist/renderer-CGn8V63v.mjs +5 -0
- package/dist/{renderer-kwmlLQOO.mjs → renderer-CH9Qtpy7.mjs} +4 -4
- package/dist/{renderer-kwmlLQOO.mjs.map → renderer-CH9Qtpy7.mjs.map} +1 -1
- package/dist/{renderer-ho_jXJ0H.mjs → renderer-CLyuu_19.mjs} +23 -117
- package/dist/renderer-CLyuu_19.mjs.map +1 -0
- package/dist/renderer-CM5Syo9r.mjs +5 -0
- package/dist/{renderer-D2nCGcjv.mjs → renderer-CRIM_XRK.mjs} +3 -3
- package/dist/{renderer-D2nCGcjv.mjs.map → renderer-CRIM_XRK.mjs.map} +1 -1
- package/dist/{renderer-BTdOMMEx.d.mts → renderer-CTGe8SqQ.d.mts} +2 -2
- package/dist/{renderer-BTdOMMEx.d.mts.map → renderer-CTGe8SqQ.d.mts.map} +1 -1
- package/dist/renderer-CWCEW6Wv.mjs +5 -0
- package/dist/{renderer-Dy0utCl7.mjs → renderer-CgyOylPO.mjs} +10 -17
- package/dist/renderer-CgyOylPO.mjs.map +1 -0
- package/dist/{renderer-C_TPMHiH.mjs → renderer-CjT5Zy-J.mjs} +81 -221
- package/dist/renderer-CjT5Zy-J.mjs.map +1 -0
- package/dist/{renderer-_uvdg48N.mjs → renderer-Cjq1s3br.mjs} +24 -93
- package/dist/renderer-Cjq1s3br.mjs.map +1 -0
- package/dist/renderer-Cl70zxkP.mjs +5 -0
- package/dist/renderer-ClJjoVpB.mjs +6 -0
- package/dist/{renderer-BSaYG8aw.mjs → renderer-CpKNqciR.mjs} +3 -1
- package/dist/{renderer-Bfgd4N0O.mjs → renderer-Cwhux4VX.mjs} +9 -16
- package/dist/renderer-Cwhux4VX.mjs.map +1 -0
- package/dist/{renderer-BJ1aTkZf.mjs → renderer-D0nWLogn.mjs} +99 -282
- package/dist/renderer-D0nWLogn.mjs.map +1 -0
- package/dist/{renderer-vqkKWqa5.mjs → renderer-D1lynYuy.mjs} +23 -107
- package/dist/renderer-D1lynYuy.mjs.map +1 -0
- package/dist/{renderer-B8-kzZdP.mjs → renderer-D4sYVV-I.mjs} +41 -140
- package/dist/renderer-D4sYVV-I.mjs.map +1 -0
- package/dist/{renderer-Bc04fivZ.mjs → renderer-D5z3WDkm.mjs} +99 -287
- package/dist/renderer-D5z3WDkm.mjs.map +1 -0
- package/dist/renderer-D8C-pamu.mjs +148 -0
- package/dist/renderer-D8C-pamu.mjs.map +1 -0
- package/dist/{renderer-D_1oDOCP.mjs → renderer-DAtBnNGC.mjs} +14 -69
- package/dist/renderer-DAtBnNGC.mjs.map +1 -0
- package/dist/{renderer-DZGtBUCx.mjs → renderer-DG1NFsSV.mjs} +35 -185
- package/dist/renderer-DG1NFsSV.mjs.map +1 -0
- package/dist/{renderer-BM05sB8m.mjs → renderer-DHAErBtJ.mjs} +11 -74
- package/dist/renderer-DHAErBtJ.mjs.map +1 -0
- package/dist/{renderer-RKsXlF_0.mjs → renderer-DIDSmoFA.mjs} +73 -73
- package/dist/{renderer-RKsXlF_0.mjs.map → renderer-DIDSmoFA.mjs.map} +1 -1
- package/dist/{renderer-BDbTWSpP.mjs → renderer-DKtP7-fr.mjs} +58 -234
- package/dist/renderer-DKtP7-fr.mjs.map +1 -0
- package/dist/renderer-DLnF-V_h.mjs +5 -0
- package/dist/renderer-DN1rjmcL.mjs +5 -0
- package/dist/{renderer-CfC_aiew.mjs → renderer-DOEsFT7Q.mjs} +57 -192
- package/dist/renderer-DOEsFT7Q.mjs.map +1 -0
- package/dist/{renderer-Ctk2zzfy.mjs → renderer-DPYB6ZcB.mjs} +57 -197
- package/dist/renderer-DPYB6ZcB.mjs.map +1 -0
- package/dist/{renderer-CWTpc4ff.mjs → renderer-DRsPCkxr.mjs} +76 -210
- package/dist/renderer-DRsPCkxr.mjs.map +1 -0
- package/dist/renderer-DXTw9Oqb.mjs +5 -0
- package/dist/{renderer-CaaOKMSd.mjs → renderer-DZLJnnU2.mjs} +63 -190
- package/dist/renderer-DZLJnnU2.mjs.map +1 -0
- package/dist/{renderer-B2ieylQ3.mjs → renderer-DZrQffIP.mjs} +56 -167
- package/dist/renderer-DZrQffIP.mjs.map +1 -0
- package/dist/renderer-DbAVSBNI.mjs +5 -0
- package/dist/renderer-Dg8rD--8.mjs +5 -0
- package/dist/{renderer-DML9qpmS.mjs → renderer-DhEyjn6Q.mjs} +52 -202
- package/dist/renderer-DhEyjn6Q.mjs.map +1 -0
- package/dist/{renderer-CdciwwMI.mjs → renderer-Dmv_Aj6x.mjs} +161 -457
- package/dist/renderer-Dmv_Aj6x.mjs.map +1 -0
- package/dist/renderer-DnFxegGu.mjs +5 -0
- package/dist/renderer-DnfmelHn.mjs +5 -0
- package/dist/{renderer-BIIWCg_J.mjs → renderer-Dpj68gTn.mjs} +11 -18
- package/dist/renderer-Dpj68gTn.mjs.map +1 -0
- package/dist/renderer-DuOjzggd.mjs +5 -0
- package/dist/renderer-DuuOlYIG.mjs +3 -0
- package/dist/renderer-DvYql0Cl.mjs +5 -0
- package/dist/{renderer-BfAWZziM.mjs → renderer-DzhRNdBS.mjs} +58 -225
- package/dist/renderer-DzhRNdBS.mjs.map +1 -0
- package/dist/renderer-GSFP7v2z.mjs +3 -0
- package/dist/renderer-LfUdjgjF.mjs +5 -0
- package/dist/{renderer-Djlb4TLO.mjs → renderer-Q63y7HP_.mjs} +8 -15
- package/dist/renderer-Q63y7HP_.mjs.map +1 -0
- package/dist/renderer-SecCv3U8.mjs +5 -0
- package/dist/{renderer-BhZZEyFX.mjs → renderer-mp1NN5zk.mjs} +4 -4
- package/dist/{renderer-BhZZEyFX.mjs.map → renderer-mp1NN5zk.mjs.map} +1 -1
- package/dist/renderer-oZyoB4CT.mjs +5 -0
- package/dist/renderer-rzci_kTy.mjs +5 -0
- package/dist/{renderer-CpkiHRhh.mjs → renderer-to9DwqXK.mjs} +17 -99
- package/dist/renderer-to9DwqXK.mjs.map +1 -0
- package/dist/{renderer-CepMDQ06.mjs → renderer-v0vuUUUI.mjs} +19 -106
- package/dist/renderer-v0vuUUUI.mjs.map +1 -0
- package/dist/renderer-vLaZuZbX.mjs +5 -0
- package/dist/{renderers-CP8CFWDs-DwQTx8S7.mjs → renderers-CP8CFWDs-DlFq8jmz.mjs} +4 -4
- package/dist/{renderers-CP8CFWDs-DwQTx8S7.mjs.map → renderers-CP8CFWDs-DlFq8jmz.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +7 -7
- package/dist/{signals-Bv1OweKd.mjs → signals-BDkO0xcZ.mjs} +3 -3
- package/dist/{signals-Bv1OweKd.mjs.map → signals-BDkO0xcZ.mjs.map} +1 -1
- package/dist/{signin-Db08vl-g.mjs → signin-SVSXQw9i.mjs} +9 -9
- package/dist/{signin-Db08vl-g.mjs.map → signin-SVSXQw9i.mjs.map} +1 -1
- package/dist/{sso-oidc-CpLz_lIu.mjs → sso-oidc-B3Sagl43.mjs} +9 -9
- package/dist/{sso-oidc-CpLz_lIu.mjs.map → sso-oidc-B3Sagl43.mjs.map} +1 -1
- package/dist/{sts-BQefGuml.mjs → sts-CYeWec9i.mjs} +2 -2
- package/dist/{sts-Dgl0kH-t.mjs → sts-ClVtt-bV.mjs} +9 -9
- package/dist/{sts-Dgl0kH-t.mjs.map → sts-ClVtt-bV.mjs.map} +1 -1
- package/package.json +55 -55
- package/dist/dist-BAVZdFEJ.mjs.map +0 -1
- package/dist/dist-BYqNNwsl.mjs.map +0 -1
- package/dist/dist-CbG3QxDw.mjs.map +0 -1
- package/dist/dist-Cxi68OuY.mjs.map +0 -1
- package/dist/dist-cjs-3pon9kTt.mjs +0 -6
- package/dist/fonts-C0W6TgJk.mjs.map +0 -1
- package/dist/index-9B8CJowc.d.mts.map +0 -1
- package/dist/index-DDEPvMww.d.mts.map +0 -1
- package/dist/index-DnWsbbuZ.d.mts.map +0 -1
- package/dist/preview-engine/chunk-36YGYLKD.mjs +0 -58
- package/dist/preview-engine/chunk-7O24H4YT.mjs +0 -117
- package/dist/preview-engine/chunk-AUFSM5KI.mjs +0 -141
- package/dist/preview-engine/chunk-BQ65MU6H.mjs +0 -138
- package/dist/preview-engine/chunk-BWDARDO6.mjs +0 -117
- package/dist/preview-engine/chunk-DLXQDDIN.mjs +0 -46
- package/dist/preview-engine/chunk-EJGLUZMW.mjs +0 -1
- package/dist/preview-engine/chunk-FE6RSVKZ.mjs +0 -73
- package/dist/preview-engine/chunk-FGHOHCFG.mjs +0 -110
- package/dist/preview-engine/chunk-HPIULG7P.mjs +0 -111
- package/dist/preview-engine/chunk-HRIKNYPF.mjs +0 -60
- package/dist/preview-engine/chunk-IMV5SBQV.mjs +0 -1
- package/dist/preview-engine/chunk-JPXQPP6J.mjs +0 -1
- package/dist/preview-engine/chunk-K52S5DJX.mjs +0 -109
- package/dist/preview-engine/chunk-L3IEJZ5S.mjs +0 -474
- package/dist/preview-engine/chunk-M7NMFDJ3.mjs +0 -3
- package/dist/preview-engine/chunk-MJM3NFEC.mjs +0 -315
- package/dist/preview-engine/chunk-NFAGEP43.mjs +0 -1448
- package/dist/preview-engine/chunk-NRHSNPZV.mjs +0 -182
- package/dist/preview-engine/chunk-OWOSYNMF.mjs +0 -104
- package/dist/preview-engine/chunk-Q66QQI6N.mjs +0 -8
- package/dist/preview-engine/chunk-QGBSLNFI.mjs +0 -52
- package/dist/preview-engine/chunk-QM3XFEJN.mjs +0 -63
- package/dist/preview-engine/chunk-R3ZH7YF3.mjs +0 -89
- package/dist/preview-engine/chunk-R6YNSBKL.mjs +0 -108
- package/dist/preview-engine/chunk-S4CSX6K5.mjs +0 -610
- package/dist/preview-engine/chunk-SNYAHQ25.mjs +0 -186
- package/dist/preview-engine/chunk-SRT2OCQW.mjs +0 -1
- package/dist/preview-engine/chunk-SUUUYXXT.mjs +0 -1
- package/dist/preview-engine/chunk-T6COGNOW.mjs +0 -134
- package/dist/preview-engine/chunk-XFYXT76H.mjs +0 -52
- package/dist/preview-engine/chunk-XUM42I4R.mjs +0 -1
- package/dist/preview-engine/chunk-YITWSOG4.mjs +0 -103
- package/dist/preview-engine/chunk-ZDCA6NVT.mjs +0 -82
- package/dist/preview-engine/chunk-ZNGOAGAI.mjs +0 -1
- package/dist/preview-engine/renderers-27Q5X3U6.mjs +0 -1
- package/dist/preview-engine/renderers-4AHH6BHF.mjs +0 -1
- package/dist/preview-engine/renderers-5BV6JGTU.mjs +0 -248
- package/dist/preview-engine/renderers-6PRVCTYV.mjs +0 -1
- package/dist/preview-engine/renderers-76PQY2SO.mjs +0 -1
- package/dist/preview-engine/renderers-7X2W6QWX.mjs +0 -1
- package/dist/preview-engine/renderers-B52QT6MT.mjs +0 -55
- package/dist/preview-engine/renderers-BE6RVJSE.mjs +0 -1
- package/dist/preview-engine/renderers-BMM2BH56.mjs +0 -1
- package/dist/preview-engine/renderers-CHOGQHVQ.mjs +0 -1
- package/dist/preview-engine/renderers-CRKRWR2Y.mjs +0 -1
- package/dist/preview-engine/renderers-DEYDSGJX.mjs +0 -1
- package/dist/preview-engine/renderers-DZTNRCR7.mjs +0 -1
- package/dist/preview-engine/renderers-ELO3KWTK.mjs +0 -1
- package/dist/preview-engine/renderers-EOJMPPAQ.mjs +0 -1
- package/dist/preview-engine/renderers-F2KJNDWA.mjs +0 -124
- package/dist/preview-engine/renderers-FCV4COVB.mjs +0 -1
- package/dist/preview-engine/renderers-G5KQISVL.mjs +0 -1
- package/dist/preview-engine/renderers-GJSUN5HU.mjs +0 -1
- package/dist/preview-engine/renderers-GMX2ZQDG.mjs +0 -1
- package/dist/preview-engine/renderers-GXCRINGC.mjs +0 -1
- package/dist/preview-engine/renderers-IHKORHMT.mjs +0 -1
- package/dist/preview-engine/renderers-JA4SLMG3.mjs +0 -1
- package/dist/preview-engine/renderers-JLN77CFZ.mjs +0 -1
- package/dist/preview-engine/renderers-KBFW7B5F.mjs +0 -1
- package/dist/preview-engine/renderers-LJRJMFCR.mjs +0 -1
- package/dist/preview-engine/renderers-LPAPZ5QS.mjs +0 -1
- package/dist/preview-engine/renderers-NQUDQEHY.mjs +0 -1
- package/dist/preview-engine/renderers-NS3AIJVG.mjs +0 -1
- package/dist/preview-engine/renderers-NSY2SDIE.mjs +0 -1
- package/dist/preview-engine/renderers-PW4OJWHF.mjs +0 -120
- package/dist/preview-engine/renderers-PWLWOZY4.mjs +0 -1
- package/dist/preview-engine/renderers-Q3MD34JN.mjs +0 -1
- package/dist/preview-engine/renderers-RXGNA2Q7.mjs +0 -1
- package/dist/preview-engine/renderers-TVTQ2R74.mjs +0 -1
- package/dist/preview-engine/renderers-VTTGFO55.mjs +0 -1
- package/dist/preview-engine/renderers-W3VVM5HB.mjs +0 -1
- package/dist/preview-engine/renderers-WG7QBD4D.mjs +0 -1
- package/dist/preview-engine/renderers-WLLJFZTF.mjs +0 -1
- package/dist/preview-engine/renderers-WN4SYFCU.mjs +0 -1
- package/dist/preview-engine/renderers-WSMLLSWX.mjs +0 -1
- package/dist/preview-engine/renderers-XFBSGTHU.mjs +0 -1
- package/dist/preview-engine/renderers-XFC6ZPO5.mjs +0 -1
- package/dist/preview-engine/renderers-XUHRY3XH.mjs +0 -1
- package/dist/preview-engine/renderers-YAOB5XU6.mjs +0 -1
- package/dist/preview-engine/renderers-YTB4FOHT.mjs +0 -1
- package/dist/preview-engine/renderers-ZIMBODX6.mjs +0 -1
- package/dist/program-BmNKgzja.mjs.map +0 -1
- package/dist/renderer-1VuQTY1Z.mjs.map +0 -1
- package/dist/renderer-6oMSare3.mjs +0 -3
- package/dist/renderer-B1ComPb2.mjs +0 -3
- package/dist/renderer-B2XzjK0z.mjs +0 -3
- package/dist/renderer-B2ieylQ3.mjs.map +0 -1
- package/dist/renderer-B8-kzZdP.mjs.map +0 -1
- package/dist/renderer-B8UaFNqb.mjs.map +0 -1
- package/dist/renderer-BDbTWSpP.mjs.map +0 -1
- package/dist/renderer-BIIWCg_J.mjs.map +0 -1
- package/dist/renderer-BJ1aTkZf.mjs.map +0 -1
- package/dist/renderer-BM05sB8m.mjs.map +0 -1
- package/dist/renderer-BQ5Bz5D0.mjs +0 -3
- package/dist/renderer-BREIjsUU.mjs.map +0 -1
- package/dist/renderer-BTu2EVhF.mjs +0 -3
- package/dist/renderer-BZcn_iBl.mjs +0 -3
- package/dist/renderer-Bc04fivZ.mjs.map +0 -1
- package/dist/renderer-BfAWZziM.mjs.map +0 -1
- package/dist/renderer-BfJSUjPN.mjs +0 -3
- package/dist/renderer-Bfgd4N0O.mjs.map +0 -1
- package/dist/renderer-Bhdf90Zq.mjs.map +0 -1
- package/dist/renderer-Bp6sDMa6.mjs +0 -3
- package/dist/renderer-Bt7_sb_Y.mjs +0 -3
- package/dist/renderer-Bv6q84TU.mjs.map +0 -1
- package/dist/renderer-C-H680_l.mjs +0 -3
- package/dist/renderer-C606ZPUn.mjs +0 -3
- package/dist/renderer-C9jyKn1i.mjs +0 -3
- package/dist/renderer-CDLrNgfo.mjs +0 -3
- package/dist/renderer-CERfcxgv.mjs +0 -3
- package/dist/renderer-CG5PzNkv.mjs +0 -3
- package/dist/renderer-CI7sG_cv.mjs.map +0 -1
- package/dist/renderer-CPoIMVdk.mjs +0 -3
- package/dist/renderer-CQdVj2JS.mjs +0 -3
- package/dist/renderer-CQiTodg9.mjs +0 -337
- package/dist/renderer-CQiTodg9.mjs.map +0 -1
- package/dist/renderer-CWTpc4ff.mjs.map +0 -1
- package/dist/renderer-CXn5HAnK.mjs.map +0 -1
- package/dist/renderer-CZgB5st8.mjs +0 -3
- package/dist/renderer-C_TPMHiH.mjs.map +0 -1
- package/dist/renderer-Ca7L1EOp.mjs +0 -3
- package/dist/renderer-CaaOKMSd.mjs.map +0 -1
- package/dist/renderer-CdciwwMI.mjs.map +0 -1
- package/dist/renderer-CepMDQ06.mjs.map +0 -1
- package/dist/renderer-CfC_aiew.mjs.map +0 -1
- package/dist/renderer-ChdLYS-G.mjs.map +0 -1
- package/dist/renderer-CkykdR_D.mjs +0 -3
- package/dist/renderer-Cl6GkeHx.mjs +0 -3
- package/dist/renderer-ClcjrFyo.mjs +0 -3
- package/dist/renderer-CnXW28b9.mjs.map +0 -1
- package/dist/renderer-CpkiHRhh.mjs.map +0 -1
- package/dist/renderer-CtVkU_GA.mjs +0 -44
- package/dist/renderer-CtVkU_GA.mjs.map +0 -1
- package/dist/renderer-Ctk2zzfy.mjs.map +0 -1
- package/dist/renderer-CtyD_Xju.mjs.map +0 -1
- package/dist/renderer-CySUP_wk.mjs +0 -3
- package/dist/renderer-CzPWB0Ss.mjs.map +0 -1
- package/dist/renderer-D2XD4QYk.mjs.map +0 -1
- package/dist/renderer-D2l_Odyg.mjs +0 -3
- package/dist/renderer-D7zvPHKn.mjs.map +0 -1
- package/dist/renderer-D9NnIx7o.mjs +0 -3
- package/dist/renderer-DCPCYySt.mjs +0 -3
- package/dist/renderer-DEJwPRkR.mjs.map +0 -1
- package/dist/renderer-DIkpJEOZ.mjs +0 -3
- package/dist/renderer-DML9qpmS.mjs.map +0 -1
- package/dist/renderer-DNSXPkf_.mjs +0 -3
- package/dist/renderer-DP-CvZ_Z.mjs +0 -3
- package/dist/renderer-DZGtBUCx.mjs.map +0 -1
- package/dist/renderer-D_1oDOCP.mjs.map +0 -1
- package/dist/renderer-DeXb8R6h.mjs +0 -3
- package/dist/renderer-DezO-ZaP.mjs +0 -4
- package/dist/renderer-DhXe04fC.mjs +0 -3
- package/dist/renderer-DirxsOjq.mjs.map +0 -1
- package/dist/renderer-Djlb4TLO.mjs.map +0 -1
- package/dist/renderer-DnH3SI7w.mjs +0 -3
- package/dist/renderer-DpGc-N3G.mjs.map +0 -1
- package/dist/renderer-Dpw4oi33.mjs +0 -3
- package/dist/renderer-DxTs4Iyi.mjs.map +0 -1
- package/dist/renderer-Dy0utCl7.mjs.map +0 -1
- package/dist/renderer-Md-ytU0v.mjs +0 -3
- package/dist/renderer-U-bhWO9Q.mjs +0 -3
- package/dist/renderer-_uvdg48N.mjs.map +0 -1
- package/dist/renderer-bsWnRNpJ.mjs.map +0 -1
- package/dist/renderer-cgxO2xN6.mjs.map +0 -1
- package/dist/renderer-d5-F_48R.mjs +0 -3
- package/dist/renderer-ho_jXJ0H.mjs.map +0 -1
- package/dist/renderer-vqkKWqa5.mjs.map +0 -1
- package/dist/renderer-zA5okHds.mjs +0 -3
- /package/dist/{renderer-C2n-EHxg.mjs → renderer-B-BcgA6d.mjs} +0 -0
package/README.md
CHANGED
|
@@ -16,8 +16,6 @@
|
|
|
16
16
|
[](#monorepo-architecture)
|
|
17
17
|
[](#6-on-device-vision--tracking)
|
|
18
18
|
|
|
19
|
-
> **⚠️ Beta:** framefields is under active development. APIs may change between releases and some features may be incomplete or unstable.
|
|
20
|
-
|
|
21
19
|
Framefields is built for coding agents. It packs the work people usually split across three desktop apps (Photoshop-inspired compositing and VFX, After Effects-style motion, typography and keyframing, and Blender-style 3D scenes, cameras and models) into one lightweight npm package. Your agent writes a TypeScript composition, checks frames, and renders an MP4, and nobody has to install or license a multi-gigabyte creative suite.
|
|
22
20
|
|
|
23
21
|
**Code-first video as pure software engineering** — no headless browser, no DOM reflow, no screenshot pipeline.
|
|
@@ -178,7 +176,25 @@ Layer.chart(
|
|
|
178
176
|
);
|
|
179
177
|
```
|
|
180
178
|
|
|
181
|
-
### 6.
|
|
179
|
+
### 6. Vector Animations & Lottie
|
|
180
|
+
[`Layer.lottie`](https://github.com/gatewai-dev/framefields/blob/main/packages/framefields/src/index.ts) plays Lottie JSON (`.json`) and dotLottie (`.lottie`) vector animations natively via ThorVG without browser overhead:
|
|
181
|
+
- **Headless vector decoding** — renders directly on WebGPU in Node.js via WASM/ThorVG.
|
|
182
|
+
- **Unified compositing** — positions with flex/box layout, animates with `LayerAnimation`, tilts into 3D scenes, masks (`.withMatte`), and applies GPU post-processing effects.
|
|
183
|
+
- **Configurable playback** — supports `fit` (`"contain"` | `"cover"` | `"fill"`), `loop`, `speed`, `autoplay`, and lifecycle frames.
|
|
184
|
+
- **Strict format boundary** — raster formats (`.png`, `.jpg`, `.webp`) use `Layer.image()`; passing `.json` or `.lottie` to `Layer.image()` throws/warns and is flagged by `comp.lint()`.
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
comp.add(
|
|
188
|
+
Layer.lottie("assets/animations/badge.json", {
|
|
189
|
+
width: 400,
|
|
190
|
+
height: 400,
|
|
191
|
+
fit: "contain",
|
|
192
|
+
loop: true,
|
|
193
|
+
})
|
|
194
|
+
);
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### 7. On-Device Vision & Tracking
|
|
182
198
|
[`@framefields/vision`](https://github.com/gatewai-dev/framefields/blob/main/packages/vision) runs ONNX models via `onnxruntime-node` (CPU) or `onnxruntime-web` (WebGPU) and wires every result into the same reactive signal surface the rest of Framefields consumes.
|
|
183
199
|
|
|
184
200
|
> [!TIP]
|
|
@@ -244,11 +260,11 @@ Project normalized landmarks to screen space with a configurable camera FOV, the
|
|
|
244
260
|
- **Clear failures** — a model that is the wrong size, fails its checksum, or lacks an expected output raises an error naming the model and its source.
|
|
245
261
|
- **Browser entry** — `@framefields/vision/web` re-exports the engine plus `createWebGPUProvider()` / `hasWebGPU()`; `onnxruntime-web` is an optional lazy peer.
|
|
246
262
|
|
|
247
|
-
###
|
|
263
|
+
### 8. Headless Conformance & FrameGrid Testing
|
|
248
264
|
- **Pixel-sampling invariant assertions** — test compositions in Vitest with `skia-canvas` to verify shader math, font coverage, and Mean Squared Error (MSE) temporal deltas.
|
|
249
265
|
- **FrameGrid contact sheets** — `comp.renderFrameGrid(...)` outputs sequential-frame contact sheets for instant review of easing, kinetic type, and transitions.
|
|
250
266
|
|
|
251
|
-
###
|
|
267
|
+
### 9. Live Preview in the Browser
|
|
252
268
|
- **Runs your composition, not a video** — `startPreview({ entry, export })` serves a localhost WebGPU player that loads the composition's own module and renders its frames live in the browser. Nothing is streamed: the server only hands over the bundle, the project's assets, and the soundtrack mixed by the export engine.
|
|
253
269
|
- **Timeline, waveform & frame stepping** — play/pause, scrub, step frame by frame, and read resolution, FPS, duration, and audio status at a glance.
|
|
254
270
|
- **One stable URL per project** — the port is derived from the working directory, so re-running the preview replaces the running server and any open tab reloads into the new version by itself. Close the tab and the server shuts down about five seconds later. A reload comes back at the same moment, and `#t=12.5` links to one.
|
|
@@ -591,6 +607,7 @@ console.log(`Video rendered successfully to: ${filePath}`);
|
|
|
591
607
|
3. **Carrier match cuts** — carry a visual element (badge, card, cursor, container) across scene boundaries with continuous velocity and position to avoid jarring cuts.
|
|
592
608
|
4. **Physical easing vocabulary** — `back.out(1.4–1.7)` for snap-overshoot entrances, `spring` / `expo.out` for decelerating motion, `power2.in` for exits. Reserve `linear` for infinite spinners and time counters.
|
|
593
609
|
5. **Headless invariant verification** — verify shader transforms, glyph coverage, and temporal MSE deltas with `skia-canvas` pixel sampling in Vitest before shipping.
|
|
610
|
+
6. **Image vs. Lottie layers** — raster images (`.png`, `.jpg`, `.webp`) use `Layer.image()`. Vector animations (`.json`, `.lottie`) must use `Layer.lottie()` — passing `.json` or `.lottie` to `Layer.image()` throws/warns and is rejected by `comp.lint()` with `unsupported_image_format`.
|
|
594
611
|
|
|
595
612
|
---
|
|
596
613
|
|
package/dist/audio/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as SfxTrigger, c as softLimit, d as _default$5, f as _default$4, g as mixAudioTracks, h as _default$2, i as SfxRenderContext, l as _default$7, m as _default$3, n as encodeStereoWav, o as mixSfxInto, p as _default, r as RenderedSfx, s as renderSfx, t as EncodeWavOptions, u as _default$6 } from "../index-
|
|
3
|
-
import "../index-
|
|
4
|
-
import { t as _default$1 } from "../renderer-
|
|
1
|
+
import { M as WebGPUAudioProcessor } from "../index-D67p-rHX.mjs";
|
|
2
|
+
import { a as SfxTrigger, c as softLimit, d as _default$5, f as _default$4, g as mixAudioTracks, h as _default$2, i as SfxRenderContext, l as _default$7, m as _default$3, n as encodeStereoWav, o as mixSfxInto, p as _default, r as RenderedSfx, s as renderSfx, t as EncodeWavOptions, u as _default$6 } from "../index-DsOqONsj.mjs";
|
|
3
|
+
import "../index-DPicEt8H.mjs";
|
|
4
|
+
import { t as _default$1 } from "../renderer-CTGe8SqQ.mjs";
|
|
5
5
|
export { EncodeWavOptions, RenderedSfx, SfxRenderContext, SfxTrigger, WebGPUAudioProcessor, _default as audioFadeRenderer, _default$1 as audioSignalExtractorRenderer, _default$2 as compressorRenderer, _default$3 as delayRenderer, encodeStereoWav, mixAudioTracks, mixSfxInto, _default$4 as noiseGateRenderer, _default$5 as parametricEqRenderer, renderSfx, _default$6 as reverbRenderer, softLimit, _default$7 as stereoPanningRenderer };
|
package/dist/audio/index.mjs
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { t as renderers_default$
|
|
6
|
-
import { t as renderers_default } from "../renderer-
|
|
7
|
-
import { t as renderers_default
|
|
8
|
-
import { t as renderers_default$
|
|
9
|
-
import { t as renderers_default$
|
|
10
|
-
import "../renderer-
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
1
|
+
import "../chunk-GMkBE123.mjs";
|
|
2
|
+
import { g as WebGPUAudioProcessor } from "../dist-Bun_TUvZ.mjs";
|
|
3
|
+
import { t as renderers_default$1 } from "../renderers-CP8CFWDs-DlFq8jmz.mjs";
|
|
4
|
+
import { i as mixAudioTracks } from "../dist-DlzqyRar.mjs";
|
|
5
|
+
import { t as renderers_default$2 } from "../renderer-Dpj68gTn.mjs";
|
|
6
|
+
import { t as renderers_default$3 } from "../renderer-Cwhux4VX.mjs";
|
|
7
|
+
import { t as renderers_default } from "../renderer-BvG1GF1c.mjs";
|
|
8
|
+
import { t as renderers_default$4 } from "../renderer-Bq_dO0LG.mjs";
|
|
9
|
+
import { t as renderers_default$5 } from "../renderer-Q63y7HP_.mjs";
|
|
10
|
+
import { t as renderers_default$6 } from "../renderer-CgyOylPO.mjs";
|
|
11
|
+
import "../renderer-B-BcgA6d.mjs";
|
|
12
|
+
import { t as renderers_default$7 } from "../renderer-CH9Qtpy7.mjs";
|
|
13
|
+
import { i as softLimit, n as mixSfxInto, r as renderSfx, t as encodeStereoWav } from "../audio-DJeVoE8b.mjs";
|
|
13
14
|
|
|
14
15
|
export { WebGPUAudioProcessor, renderers_default as audioFadeRenderer, renderers_default$1 as audioSignalExtractorRenderer, renderers_default$2 as compressorRenderer, renderers_default$3 as delayRenderer, encodeStereoWav, mixAudioTracks, mixSfxInto, renderers_default$4 as noiseGateRenderer, renderers_default$5 as parametricEqRenderer, renderSfx, renderers_default$6 as reverbRenderer, softLimit, renderers_default$7 as stereoPanningRenderer };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as NodeRendererPlugin } from "./index-
|
|
1
|
+
import { o as AudioSignalComputeConfig, xi as FrameSignal } from "./index-D67p-rHX.mjs";
|
|
2
|
+
import { n as NodeRendererPlugin } from "./index-DPicEt8H.mjs";
|
|
3
3
|
|
|
4
4
|
//#region ../../nodes/node-modulate/dist/renderer.d.mts
|
|
5
5
|
//#region src/renderers/index.d.ts
|
|
@@ -34,4 +34,4 @@ declare const AudioSignal: {
|
|
|
34
34
|
};
|
|
35
35
|
//#endregion
|
|
36
36
|
export { _default as i, AudioSignalOptions as n, ExtractedAudioSignalsBundle as r, AudioSignal as t };
|
|
37
|
-
//# sourceMappingURL=audio-
|
|
37
|
+
//# sourceMappingURL=audio-C2fLC3Tx.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-
|
|
1
|
+
{"version":3,"file":"audio-C2fLC3Tx.d.mts","names":["_framefields_node_sdk_renderer0","_default","NodeRendererPlugin","Readonly","default"],"sources":["../../../nodes/node-modulate/dist/renderer.d.mts","../src/signals/audio.ts"],"sourcesContent":["import * as _framefields_node_sdk_renderer0 from \"@framefields/node-sdk/renderer\";\n\n//#region src/renderers/index.d.ts\ndeclare const _default: Readonly<_framefields_node_sdk_renderer0.NodeRendererPlugin>;\n//#endregion\nexport { _default as default };\n//# sourceMappingURL=renderer.d.mts.map"],"mappings":";;;;;cAGcC,UAAUE,SAASH;AAHiD;;;UCYjE,kBAAA,SAA2B;;EDT9BC,WAAsE,CAAA,EAAA,MAAA;;;UCenE,2BAAA;EANA,OAAA,EAOP,WAPO,CAAmB,MAAA,CAAA;EAMnB,IAAA,EAEV,WAFU,CAAA,MAAA,CAAA;EACP,IAAA,EAEH,WAFG,CAAA,MAAA,CAAA;EACH,MAAA,EAEE,WAFF,CAAA,MAAA,CAAA;EACA,WAAA,EAAA,MAAA;EACE,SAAA,EAAA,MAAA;EAAW,UAAA,EAAA,MAAA;EAaP,WAAA,EAAA,OAuGZ;EArGW,OAAA,EAAA,OAAA;EAED,aAAA,EAAA,OAAA;EACC,UAAA,EAAA,OAAA;EAAR,UAAA,EAAA,OAAA;EAoFO,YAAA,EAAA,OAAA;EACC,SAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAAD,cA1FE,WA0FF,EAAA;gCAxFC,8CAED,qBACP,QAAQ;oCAoFD,qBACP,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-TAvPwzLR.mjs","names":[],"sources":["../src/audio/synth/sfx.ts","../src/audio/synth/wav-encoder.ts"],"sourcesContent":["/**\n * @file packages/framefields/src/audio/synth/sfx.ts\n * Deterministic procedural transition effects (whoosh, riser, impact, downshifter, glitch).\n * Pure CPU DSP: the same trigger always renders the same samples.\n */\n\n/**\n * Procedural sound effect transition event, synthesized deterministically on the CPU.\n * Default durations: whoosh 0.7s, riser 2s, impact 1.8s, downshifter 1.2s, glitch 0.35s.\n */\nexport interface SfxTrigger {\n\ttype: \"whoosh\" | \"riser\" | \"impact\" | \"downshifter\" | \"glitch\";\n\t/** Bar (fractional allowed) where the effect *starts*. A riser landing on a cut starts `durationSec` earlier. */\n\tatBar: number;\n\tdurationSec?: number;\n\tvolume?: number;\n}\n\nexport type StereoBuffer = [Float32Array, Float32Array];\n\nexport interface RenderedSfx {\n\t/** First sample of the effect on the score timeline. */\n\tstartSample: number;\n\tchannels: StereoBuffer;\n}\n\nexport interface SfxRenderContext {\n\tsampleRate: number;\n\tsecondsPerBar: number;\n\t/** Distinguishes otherwise identical triggers so noise differs between them. */\n\tseed: number;\n}\n\nconst DEFAULT_DURATION_SEC: Record<SfxTrigger[\"type\"], number> = {\n\twhoosh: 0.7,\n\triser: 2,\n\timpact: 1.8,\n\tdownshifter: 1.2,\n\tglitch: 0.35,\n};\n\n/** Small, fast, seedable PRNG returning values in [-1, 1). */\nfunction createNoise(seed: number): () => number {\n\tlet state = (seed ^ 0x9e3779b9) >>> 0;\n\treturn () => {\n\t\tstate = (state + 0x6d2b79f5) >>> 0;\n\t\tlet t = state;\n\t\tt = Math.imul(t ^ (t >>> 15), t | 1);\n\t\tt ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n\t\treturn (((t ^ (t >>> 14)) >>> 0) / 4294967296) * 2 - 1;\n\t};\n}\n\n/** Chamberlin state-variable filter; returns the band-pass output of one sample. */\nclass BandPass {\n\tprivate low = 0;\n\tprivate band = 0;\n\n\tpublic process(\n\t\tinput: number,\n\t\tfreq: number,\n\t\tq: number,\n\t\tsampleRate: number,\n\t): number {\n\t\tconst f =\n\t\t\t2 * Math.sin((Math.PI * Math.min(freq, sampleRate * 0.45)) / sampleRate);\n\t\tthis.low += f * this.band;\n\t\tconst high = input - this.low - q * this.band;\n\t\tthis.band += f * high;\n\t\treturn this.band;\n\t}\n}\n\n/** Exponential sweep from `a` to `b` as `x` moves 0 → 1. */\nconst expSweep = (a: number, b: number, x: number): number => a * (b / a) ** x;\n\n/** Fast rise, longer fall: a bell centred at `peak` in 0..1. */\nconst bell = (x: number, peak: number): number =>\n\tx < peak\n\t\t? Math.sin((x / peak) * (Math.PI / 2)) ** 2\n\t\t: Math.cos(((x - peak) / (1 - peak)) * (Math.PI / 2)) ** 2;\n\nfunction whoosh(\n\tn: number,\n\tsr: number,\n\tnoise: () => number,\n\treverse: boolean,\n): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst filter = new BandPass();\n\tfor (let i = 0; i < n; i++) {\n\t\tconst x = i / n;\n\t\tconst sweep = reverse ? 1 - x : x;\n\t\tconst env = bell(x, reverse ? 0.35 : 0.6);\n\t\tconst s =\n\t\t\tfilter.process(noise(), expSweep(250, 7000, sweep), 0.35, sr) * env * 0.9;\n\t\tconst pan = (reverse ? 1 - x : x) * 2 - 1;\n\t\tleft[i] = s * Math.sqrt((1 - pan) / 2) * 1.4;\n\t\tright[i] = s * Math.sqrt((1 + pan) / 2) * 1.4;\n\t}\n\treturn [left, right];\n}\n\nfunction riser(\n\tn: number,\n\tsr: number,\n\tnoise: () => number,\n\treverse: boolean,\n): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst air = new BandPass();\n\tlet phase = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst x = i / n;\n\t\tconst sweep = reverse ? 1 - x : x;\n\t\tconst env = reverse ? (1 - x) ** 1.5 : x ** 2.2;\n\t\tconst freq = expSweep(110, 880, sweep);\n\t\tphase += (2 * Math.PI * freq) / sr;\n\t\t// Band-limited enough at these pitches: two detuned-free partials of a saw.\n\t\tconst tone =\n\t\t\t(Math.sin(phase) +\n\t\t\t\t0.5 * Math.sin(phase * 2) +\n\t\t\t\t0.25 * Math.sin(phase * 3)) *\n\t\t\t0.3;\n\t\tconst hiss =\n\t\t\tair.process(noise(), expSweep(300, 9000, sweep), 0.5, sr) * 1.2;\n\t\tconst s = (tone + hiss) * env * 0.6;\n\t\tleft[i] = s;\n\t\tright[i] = s;\n\t}\n\treturn [left, right];\n}\n\nfunction impact(n: number, sr: number, noise: () => number): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst burst = new BandPass();\n\tlet phase = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst t = i / sr;\n\t\tconst freq = 38 + 62 * Math.exp(-t * 14);\n\t\tphase += (2 * Math.PI * freq) / sr;\n\t\tconst sub = Math.sin(phase) * Math.exp(-t * 2.6);\n\t\tconst body =\n\t\t\tburst.process(noise(), 900 * Math.exp(-t * 6) + 120, 0.6, sr) *\n\t\t\tMath.exp(-t * 9) *\n\t\t\t1.6;\n\t\tconst click = i < 96 ? noise() * (1 - i / 96) * 0.5 : 0;\n\t\tconst s = (sub * 1.1 + body + click) * 0.85;\n\t\t// Slight decorrelated tail widens the hit without smearing the transient.\n\t\tconst tail = noise() * Math.exp(-t * 5) * 0.08;\n\t\tleft[i] = s + tail;\n\t\tright[i] = s - tail;\n\t}\n\treturn [left, right];\n}\n\nfunction glitch(n: number, sr: number, noise: () => number): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst slice = Math.max(1, Math.round(sr * 0.022));\n\tlet held = 0;\n\tlet gate = 1;\n\tlet crush = 1;\n\tfor (let i = 0; i < n; i++) {\n\t\tif (i % slice === 0) {\n\t\t\tgate = noise() > -0.2 ? 1 : 0;\n\t\t\tcrush = 2 + Math.floor((noise() + 1) * 6);\n\t\t}\n\t\tif (i % crush === 0) held = noise() > 0 ? 1 : -1;\n\t\tconst env = 1 - i / n;\n\t\tconst s = held * gate * env * 0.45;\n\t\tleft[i] = s;\n\t\tright[i] = gate ? -s * 0.6 : 0;\n\t}\n\treturn [left, right];\n}\n\n/**\n * Renders one trigger to stereo PCM positioned at `atBar` on the score timeline.\n * `atBar` is where the effect *starts*; a riser meant to land on a cut starts\n * `durationSec / secondsPerBar` bars before it.\n */\nexport function renderSfx(\n\ttrigger: SfxTrigger,\n\tctx: SfxRenderContext,\n): RenderedSfx {\n\tconst durationSec = trigger.durationSec ?? DEFAULT_DURATION_SEC[trigger.type];\n\tconst sr = ctx.sampleRate;\n\tconst n = Math.max(1, Math.round(durationSec * sr));\n\tconst noise = createNoise(ctx.seed + n);\n\n\tlet channels: StereoBuffer;\n\tswitch (trigger.type) {\n\t\tcase \"whoosh\":\n\t\t\tchannels = whoosh(n, sr, noise, false);\n\t\t\tbreak;\n\t\tcase \"riser\":\n\t\t\tchannels = riser(n, sr, noise, false);\n\t\t\tbreak;\n\t\tcase \"downshifter\":\n\t\t\tchannels = riser(n, sr, noise, true);\n\t\t\tbreak;\n\t\tcase \"impact\":\n\t\t\tchannels = impact(n, sr, noise);\n\t\t\tbreak;\n\t\tcase \"glitch\":\n\t\t\tchannels = glitch(n, sr, noise);\n\t\t\tbreak;\n\t}\n\n\tconst gain = trigger.volume ?? 0.8;\n\tfor (const channel of channels) {\n\t\tfor (let i = 0; i < n; i++)\n\t\t\tchannel[i] = Math.tanh((channel[i] ?? 0) * gain);\n\t}\n\treturn {\n\t\tstartSample: Math.max(\n\t\t\t0,\n\t\t\tMath.round(trigger.atBar * ctx.secondsPerBar * sr),\n\t\t),\n\t\tchannels,\n\t};\n}\n\n/** Adds rendered effects into `target` in place, clipping to its length. */\nexport function mixSfxInto(\n\ttarget: StereoBuffer,\n\teffects: readonly RenderedSfx[],\n): void {\n\tfor (const fx of effects) {\n\t\tfor (let c = 0; c < 2; c++) {\n\t\t\tconst dst = target[c];\n\t\t\tconst src = fx.channels[c];\n\t\t\tif (!dst || !src) continue;\n\t\t\tconst limit = Math.min(src.length, dst.length - fx.startSample);\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst val = dst[fx.startSample + i];\n\t\t\t\tconst s = src[i];\n\t\t\t\tif (val !== undefined && s !== undefined) {\n\t\t\t\t\tdst[fx.startSample + i] = val + s;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Soft-knee limiter for sums that may exceed full scale (impacts stacked on a\n * loud mix): transparent below the knee, asymptotically bounded by 1.0 above it.\n */\nexport function softLimit(\n\ttarget: StereoBuffer,\n\tknee = 0.7,\n\tceiling = 0.97,\n): void {\n\tconst headroom = ceiling - knee;\n\tfor (const channel of target) {\n\t\tfor (let i = 0; i < channel.length; i++) {\n\t\t\tconst x = channel[i] ?? 0;\n\t\t\tconst a = Math.abs(x);\n\t\t\tif (a > knee)\n\t\t\t\tchannel[i] =\n\t\t\t\t\tMath.sign(x) * (knee + headroom * Math.tanh((a - knee) / headroom));\n\t\t}\n\t}\n}\n","/**\n * @file packages/framefields/src/audio/synth/wav-encoder.ts\n * High-performance 16-bit PCM RIFF/WAVE stereo audio encoder.\n */\n\nexport interface EncodeWavOptions {\n\tsampleRate?: number;\n}\n\n/**\n * Encodes stereo Float32Array PCM channels (-1.0 to +1.0) into a standard 16-bit RIFF/WAVE Buffer.\n */\nexport function encodeStereoWav(\n\tchannels: [Float32Array, Float32Array],\n\toptions: EncodeWavOptions = {},\n): Buffer {\n\tconst sampleRate = options.sampleRate ?? 48000;\n\tconst numChannels = 2;\n\tconst left = channels[0];\n\tconst right = channels[1];\n\tconst numSamples = Math.min(left.length, right.length);\n\n\tconst bytesPerSample = 2; // 16-bit\n\tconst blockAlign = numChannels * bytesPerSample;\n\tconst byteRate = sampleRate * blockAlign;\n\tconst dataSize = numSamples * blockAlign;\n\tconst totalSize = 44 + dataSize;\n\n\tconst buffer = Buffer.alloc(totalSize);\n\n\t// RIFF Header\n\tbuffer.write(\"RIFF\", 0, \"ascii\");\n\tbuffer.writeUInt32LE(36 + dataSize, 4);\n\tbuffer.write(\"WAVE\", 8, \"ascii\");\n\n\t// \"fmt \" chunk\n\tbuffer.write(\"fmt \", 12, \"ascii\");\n\tbuffer.writeUInt32LE(16, 16); // PCM header size\n\tbuffer.writeUInt16LE(1, 20); // AudioFormat 1 = PCM\n\tbuffer.writeUInt16LE(numChannels, 22);\n\tbuffer.writeUInt32LE(sampleRate, 24);\n\tbuffer.writeUInt32LE(byteRate, 28);\n\tbuffer.writeUInt16LE(blockAlign, 32);\n\tbuffer.writeUInt16LE(16, 34); // Bits per sample\n\n\t// \"data\" chunk\n\tbuffer.write(\"data\", 36, \"ascii\");\n\tbuffer.writeUInt32LE(dataSize, 40);\n\n\tlet offset = 44;\n\tfor (let i = 0; i < numSamples; i++) {\n\t\t// Left channel\n\t\tconst sl = Math.max(-1, Math.min(1, left[i] ?? 0));\n\t\tconst intL = sl < 0 ? sl * 0x8000 : sl * 0x7fff;\n\t\tbuffer.writeInt16LE(Math.round(intL), offset);\n\t\toffset += 2;\n\n\t\t// Right channel\n\t\tconst sr = Math.max(-1, Math.min(1, right[i] ?? 0));\n\t\tconst intR = sr < 0 ? sr * 0x8000 : sr * 0x7fff;\n\t\tbuffer.writeInt16LE(Math.round(intR), offset);\n\t\toffset += 2;\n\t}\n\n\treturn buffer;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audio-DJeVoE8b.mjs","names":[],"sources":["../src/audio/synth/sfx.ts","../src/audio/synth/wav-encoder.ts"],"sourcesContent":["/**\n * @file packages/framefields/src/audio/synth/sfx.ts\n * Deterministic procedural transition effects (whoosh, riser, impact, downshifter, glitch).\n * Pure CPU DSP: the same trigger always renders the same samples.\n */\n\n/**\n * Procedural sound effect transition event, synthesized deterministically on the CPU.\n * Default durations: whoosh 0.7s, riser 2s, impact 1.8s, downshifter 1.2s, glitch 0.35s.\n */\nexport interface SfxTrigger {\n\ttype: \"whoosh\" | \"riser\" | \"impact\" | \"downshifter\" | \"glitch\";\n\t/** Bar (fractional allowed) where the effect *starts*. A riser landing on a cut starts `durationSec` earlier. */\n\tatBar: number;\n\tdurationSec?: number;\n\tvolume?: number;\n}\n\nexport type StereoBuffer = [Float32Array, Float32Array];\n\nexport interface RenderedSfx {\n\t/** First sample of the effect on the score timeline. */\n\tstartSample: number;\n\tchannels: StereoBuffer;\n}\n\nexport interface SfxRenderContext {\n\tsampleRate: number;\n\tsecondsPerBar: number;\n\t/** Distinguishes otherwise identical triggers so noise differs between them. */\n\tseed: number;\n}\n\nconst DEFAULT_DURATION_SEC: Record<SfxTrigger[\"type\"], number> = {\n\twhoosh: 0.7,\n\triser: 2,\n\timpact: 1.8,\n\tdownshifter: 1.2,\n\tglitch: 0.35,\n};\n\n/** Small, fast, seedable PRNG returning values in [-1, 1). */\nfunction createNoise(seed: number): () => number {\n\tlet state = (seed ^ 0x9e3779b9) >>> 0;\n\treturn () => {\n\t\tstate = (state + 0x6d2b79f5) >>> 0;\n\t\tlet t = state;\n\t\tt = Math.imul(t ^ (t >>> 15), t | 1);\n\t\tt ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n\t\treturn (((t ^ (t >>> 14)) >>> 0) / 4294967296) * 2 - 1;\n\t};\n}\n\n/** Chamberlin state-variable filter; returns the band-pass output of one sample. */\nclass BandPass {\n\tprivate low = 0;\n\tprivate band = 0;\n\n\tpublic process(\n\t\tinput: number,\n\t\tfreq: number,\n\t\tq: number,\n\t\tsampleRate: number,\n\t): number {\n\t\tconst f =\n\t\t\t2 * Math.sin((Math.PI * Math.min(freq, sampleRate * 0.45)) / sampleRate);\n\t\tthis.low += f * this.band;\n\t\tconst high = input - this.low - q * this.band;\n\t\tthis.band += f * high;\n\t\treturn this.band;\n\t}\n}\n\n/** Exponential sweep from `a` to `b` as `x` moves 0 → 1. */\nconst expSweep = (a: number, b: number, x: number): number => a * (b / a) ** x;\n\n/** Fast rise, longer fall: a bell centred at `peak` in 0..1. */\nconst bell = (x: number, peak: number): number =>\n\tx < peak\n\t\t? Math.sin((x / peak) * (Math.PI / 2)) ** 2\n\t\t: Math.cos(((x - peak) / (1 - peak)) * (Math.PI / 2)) ** 2;\n\nfunction whoosh(\n\tn: number,\n\tsr: number,\n\tnoise: () => number,\n\treverse: boolean,\n): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst filter = new BandPass();\n\tfor (let i = 0; i < n; i++) {\n\t\tconst x = i / n;\n\t\tconst sweep = reverse ? 1 - x : x;\n\t\tconst env = bell(x, reverse ? 0.35 : 0.6);\n\t\tconst s =\n\t\t\tfilter.process(noise(), expSweep(250, 7000, sweep), 0.35, sr) * env * 0.9;\n\t\tconst pan = (reverse ? 1 - x : x) * 2 - 1;\n\t\tleft[i] = s * Math.sqrt((1 - pan) / 2) * 1.4;\n\t\tright[i] = s * Math.sqrt((1 + pan) / 2) * 1.4;\n\t}\n\treturn [left, right];\n}\n\nfunction riser(\n\tn: number,\n\tsr: number,\n\tnoise: () => number,\n\treverse: boolean,\n): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst air = new BandPass();\n\tlet phase = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst x = i / n;\n\t\tconst sweep = reverse ? 1 - x : x;\n\t\tconst env = reverse ? (1 - x) ** 1.5 : x ** 2.2;\n\t\tconst freq = expSweep(110, 880, sweep);\n\t\tphase += (2 * Math.PI * freq) / sr;\n\t\t// Band-limited enough at these pitches: two detuned-free partials of a saw.\n\t\tconst tone =\n\t\t\t(Math.sin(phase) +\n\t\t\t\t0.5 * Math.sin(phase * 2) +\n\t\t\t\t0.25 * Math.sin(phase * 3)) *\n\t\t\t0.3;\n\t\tconst hiss =\n\t\t\tair.process(noise(), expSweep(300, 9000, sweep), 0.5, sr) * 1.2;\n\t\tconst s = (tone + hiss) * env * 0.6;\n\t\tleft[i] = s;\n\t\tright[i] = s;\n\t}\n\treturn [left, right];\n}\n\nfunction impact(n: number, sr: number, noise: () => number): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst burst = new BandPass();\n\tlet phase = 0;\n\tfor (let i = 0; i < n; i++) {\n\t\tconst t = i / sr;\n\t\tconst freq = 38 + 62 * Math.exp(-t * 14);\n\t\tphase += (2 * Math.PI * freq) / sr;\n\t\tconst sub = Math.sin(phase) * Math.exp(-t * 2.6);\n\t\tconst body =\n\t\t\tburst.process(noise(), 900 * Math.exp(-t * 6) + 120, 0.6, sr) *\n\t\t\tMath.exp(-t * 9) *\n\t\t\t1.6;\n\t\tconst click = i < 96 ? noise() * (1 - i / 96) * 0.5 : 0;\n\t\tconst s = (sub * 1.1 + body + click) * 0.85;\n\t\t// Slight decorrelated tail widens the hit without smearing the transient.\n\t\tconst tail = noise() * Math.exp(-t * 5) * 0.08;\n\t\tleft[i] = s + tail;\n\t\tright[i] = s - tail;\n\t}\n\treturn [left, right];\n}\n\nfunction glitch(n: number, sr: number, noise: () => number): StereoBuffer {\n\tconst left = new Float32Array(n);\n\tconst right = new Float32Array(n);\n\tconst slice = Math.max(1, Math.round(sr * 0.022));\n\tlet held = 0;\n\tlet gate = 1;\n\tlet crush = 1;\n\tfor (let i = 0; i < n; i++) {\n\t\tif (i % slice === 0) {\n\t\t\tgate = noise() > -0.2 ? 1 : 0;\n\t\t\tcrush = 2 + Math.floor((noise() + 1) * 6);\n\t\t}\n\t\tif (i % crush === 0) held = noise() > 0 ? 1 : -1;\n\t\tconst env = 1 - i / n;\n\t\tconst s = held * gate * env * 0.45;\n\t\tleft[i] = s;\n\t\tright[i] = gate ? -s * 0.6 : 0;\n\t}\n\treturn [left, right];\n}\n\n/**\n * Renders one trigger to stereo PCM positioned at `atBar` on the score timeline.\n * `atBar` is where the effect *starts*; a riser meant to land on a cut starts\n * `durationSec / secondsPerBar` bars before it.\n */\nexport function renderSfx(\n\ttrigger: SfxTrigger,\n\tctx: SfxRenderContext,\n): RenderedSfx {\n\tconst durationSec = trigger.durationSec ?? DEFAULT_DURATION_SEC[trigger.type];\n\tconst sr = ctx.sampleRate;\n\tconst n = Math.max(1, Math.round(durationSec * sr));\n\tconst noise = createNoise(ctx.seed + n);\n\n\tlet channels: StereoBuffer;\n\tswitch (trigger.type) {\n\t\tcase \"whoosh\":\n\t\t\tchannels = whoosh(n, sr, noise, false);\n\t\t\tbreak;\n\t\tcase \"riser\":\n\t\t\tchannels = riser(n, sr, noise, false);\n\t\t\tbreak;\n\t\tcase \"downshifter\":\n\t\t\tchannels = riser(n, sr, noise, true);\n\t\t\tbreak;\n\t\tcase \"impact\":\n\t\t\tchannels = impact(n, sr, noise);\n\t\t\tbreak;\n\t\tcase \"glitch\":\n\t\t\tchannels = glitch(n, sr, noise);\n\t\t\tbreak;\n\t}\n\n\tconst gain = trigger.volume ?? 0.8;\n\tfor (const channel of channels) {\n\t\tfor (let i = 0; i < n; i++)\n\t\t\tchannel[i] = Math.tanh((channel[i] ?? 0) * gain);\n\t}\n\treturn {\n\t\tstartSample: Math.max(\n\t\t\t0,\n\t\t\tMath.round(trigger.atBar * ctx.secondsPerBar * sr),\n\t\t),\n\t\tchannels,\n\t};\n}\n\n/** Adds rendered effects into `target` in place, clipping to its length. */\nexport function mixSfxInto(\n\ttarget: StereoBuffer,\n\teffects: readonly RenderedSfx[],\n): void {\n\tfor (const fx of effects) {\n\t\tfor (let c = 0; c < 2; c++) {\n\t\t\tconst dst = target[c];\n\t\t\tconst src = fx.channels[c];\n\t\t\tif (!dst || !src) continue;\n\t\t\tconst limit = Math.min(src.length, dst.length - fx.startSample);\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst val = dst[fx.startSample + i];\n\t\t\t\tconst s = src[i];\n\t\t\t\tif (val !== undefined && s !== undefined) {\n\t\t\t\t\tdst[fx.startSample + i] = val + s;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Soft-knee limiter for sums that may exceed full scale (impacts stacked on a\n * loud mix): transparent below the knee, asymptotically bounded by 1.0 above it.\n */\nexport function softLimit(\n\ttarget: StereoBuffer,\n\tknee = 0.7,\n\tceiling = 0.97,\n): void {\n\tconst headroom = ceiling - knee;\n\tfor (const channel of target) {\n\t\tfor (let i = 0; i < channel.length; i++) {\n\t\t\tconst x = channel[i] ?? 0;\n\t\t\tconst a = Math.abs(x);\n\t\t\tif (a > knee)\n\t\t\t\tchannel[i] =\n\t\t\t\t\tMath.sign(x) * (knee + headroom * Math.tanh((a - knee) / headroom));\n\t\t}\n\t}\n}\n","/**\n * @file packages/framefields/src/audio/synth/wav-encoder.ts\n * High-performance 16-bit PCM RIFF/WAVE stereo audio encoder.\n */\n\nexport interface EncodeWavOptions {\n\tsampleRate?: number;\n}\n\n/**\n * Encodes stereo Float32Array PCM channels (-1.0 to +1.0) into a standard 16-bit RIFF/WAVE Buffer.\n */\nexport function encodeStereoWav(\n\tchannels: [Float32Array, Float32Array],\n\toptions: EncodeWavOptions = {},\n): Buffer {\n\tconst sampleRate = options.sampleRate ?? 48000;\n\tconst numChannels = 2;\n\tconst left = channels[0];\n\tconst right = channels[1];\n\tconst numSamples = Math.min(left.length, right.length);\n\n\tconst bytesPerSample = 2; // 16-bit\n\tconst blockAlign = numChannels * bytesPerSample;\n\tconst byteRate = sampleRate * blockAlign;\n\tconst dataSize = numSamples * blockAlign;\n\tconst totalSize = 44 + dataSize;\n\n\tconst buffer = Buffer.alloc(totalSize);\n\n\t// RIFF Header\n\tbuffer.write(\"RIFF\", 0, \"ascii\");\n\tbuffer.writeUInt32LE(36 + dataSize, 4);\n\tbuffer.write(\"WAVE\", 8, \"ascii\");\n\n\t// \"fmt \" chunk\n\tbuffer.write(\"fmt \", 12, \"ascii\");\n\tbuffer.writeUInt32LE(16, 16); // PCM header size\n\tbuffer.writeUInt16LE(1, 20); // AudioFormat 1 = PCM\n\tbuffer.writeUInt16LE(numChannels, 22);\n\tbuffer.writeUInt32LE(sampleRate, 24);\n\tbuffer.writeUInt32LE(byteRate, 28);\n\tbuffer.writeUInt16LE(blockAlign, 32);\n\tbuffer.writeUInt16LE(16, 34); // Bits per sample\n\n\t// \"data\" chunk\n\tbuffer.write(\"data\", 36, \"ascii\");\n\tbuffer.writeUInt32LE(dataSize, 40);\n\n\tlet offset = 44;\n\tfor (let i = 0; i < numSamples; i++) {\n\t\t// Left channel\n\t\tconst sl = Math.max(-1, Math.min(1, left[i] ?? 0));\n\t\tconst intL = sl < 0 ? sl * 0x8000 : sl * 0x7fff;\n\t\tbuffer.writeInt16LE(Math.round(intL), offset);\n\t\toffset += 2;\n\n\t\t// Right channel\n\t\tconst sr = Math.max(-1, Math.min(1, right[i] ?? 0));\n\t\tconst intR = sr < 0 ? sr * 0x8000 : sr * 0x7fff;\n\t\tbuffer.writeInt16LE(Math.round(intR), offset);\n\t\toffset += 2;\n\t}\n\n\treturn buffer;\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { xt as frameArraySignal } from "./dist-
|
|
2
|
-
import {
|
|
3
|
-
import { n as decodeAudioSource } from "./dist-
|
|
1
|
+
import { xt as frameArraySignal } from "./dist-fjKpBYkc.mjs";
|
|
2
|
+
import { D as ensureDevice, yt as AudioSignalComputePipeline } from "./dist-Bun_TUvZ.mjs";
|
|
3
|
+
import { n as decodeAudioSource } from "./dist-DlzqyRar.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/signals/audio.ts
|
|
6
6
|
const AudioSignal = {
|
|
@@ -82,4 +82,4 @@ const AudioSignal = {
|
|
|
82
82
|
|
|
83
83
|
//#endregion
|
|
84
84
|
export { AudioSignal as t };
|
|
85
|
-
//# sourceMappingURL=audio-
|
|
85
|
+
//# sourceMappingURL=audio-D_4SeMRK.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-
|
|
1
|
+
{"version":3,"file":"audio-D_4SeMRK.mjs","names":[],"sources":["../src/signals/audio.ts"],"sourcesContent":["import { decodeAudioSource } from \"@framefields/compositions\";\nimport {\n\ttype FrameSignal,\n\tframeArraySignal,\n\ttype GPUTextureBinding,\n} from \"@framefields/core\";\nimport {\n\ttype AudioSignalComputeConfig,\n\tAudioSignalComputePipeline,\n\tensureDevice,\n} from \"@framefields/webgpu-renderers\";\n\nexport interface AudioSignalOptions extends AudioSignalComputeConfig {\n\tfps?: number;\n\ttargetWidth?: number;\n\tpreviewMode?: \"waveform\" | \"envelope\" | \"beat_markers\" | \"spectrum\";\n}\n\nexport interface ExtractedAudioSignalsBundle {\n\tprimary: FrameSignal<number>;\n\tbeat: FrameSignal<number>;\n\tbass: FrameSignal<number>;\n\tenergy: FrameSignal<number>;\n\tdurationSec: number;\n\tnumFrames: number;\n\tsampleRate: number;\n\ttextureView: unknown;\n\ttexture: unknown;\n\tprimaryBuffer: unknown;\n\tbeatBuffer: unknown;\n\tbassBuffer: unknown;\n\tenergyBuffer: unknown;\n\tseekFrame(frame: number): void;\n}\n\nexport const AudioSignal = {\n\tasync extractFromChannels(\n\t\tchannels: Float32Array[],\n\t\tsampleRate: number,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst device = await ensureDevice();\n\t\tconst fps = options.fps ?? 24;\n\t\tconst targetWidth = options.targetWidth ?? 512;\n\n\t\tconst extracted = await AudioSignalComputePipeline.extractFeatures(\n\t\t\tdevice,\n\t\t\tchannels,\n\t\t\tsampleRate,\n\t\t\tfps,\n\t\t\toptions,\n\t\t\ttargetWidth,\n\t\t);\n\n\t\tconst samples = extracted.channelSamples ?? {\n\t\t\tprimary: new Float32Array(extracted.numFrames),\n\t\t\tbeat: new Float32Array(extracted.numFrames),\n\t\t\tbass: new Float32Array(extracted.numFrames),\n\t\t\tenergy: new Float32Array(extracted.numFrames),\n\t\t};\n\n\t\tconst primaryBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_primary\",\n\t\t\tchannel: \"primary\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.primaryBuffer,\n\t\t\tstats: extracted.stats.primary,\n\t\t};\n\t\tconst beatBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_beat\",\n\t\t\tchannel: \"beat\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.beatBuffer,\n\t\t\tstats: extracted.stats.beat,\n\t\t};\n\t\tconst bassBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_bass\",\n\t\t\tchannel: \"bass\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.bassBuffer,\n\t\t\tstats: extracted.stats.bass,\n\t\t};\n\t\tconst energyBinding: GPUTextureBinding = {\n\t\t\tnodeId: \"audio_energy\",\n\t\t\tchannel: \"energy\",\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tbuffer: extracted.energyBuffer,\n\t\t\tstats: extracted.stats.energy,\n\t\t};\n\n\t\tconst primary = frameArraySignal(samples.primary, fps, primaryBinding);\n\t\tconst beat = frameArraySignal(samples.beat, fps, beatBinding);\n\t\tconst bass = frameArraySignal(samples.bass, fps, bassBinding);\n\t\tconst energy = frameArraySignal(samples.energy, fps, energyBinding);\n\n\t\treturn {\n\t\t\tprimary,\n\t\t\tbeat,\n\t\t\tbass,\n\t\t\tenergy,\n\t\t\tdurationSec: extracted.durationSec,\n\t\t\tnumFrames: extracted.numFrames,\n\t\t\tsampleRate,\n\t\t\ttextureView: extracted.textureView,\n\t\t\ttexture: extracted.texture,\n\t\t\tprimaryBuffer: extracted.primaryBuffer,\n\t\t\tbeatBuffer: extracted.beatBuffer,\n\t\t\tbassBuffer: extracted.bassBuffer,\n\t\t\tenergyBuffer: extracted.energyBuffer,\n\t\t\tseekFrame(frame: number) {\n\t\t\t\tprimary.seekFrame?.(frame);\n\t\t\t\tbeat.seekFrame?.(frame);\n\t\t\t\tbass.seekFrame?.(frame);\n\t\t\t\tenergy.seekFrame?.(frame);\n\t\t\t},\n\t\t};\n\t},\n\n\tasync extract(\n\t\tsource: string,\n\t\toptions: AudioSignalOptions = {},\n\t): Promise<ExtractedAudioSignalsBundle> {\n\t\tconst decoded = await decodeAudioSource(source);\n\t\tif (!decoded || decoded.channels.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to decode audio source for feature extraction: ${source}`,\n\t\t\t);\n\t\t}\n\t\treturn AudioSignal.extractFromChannels(\n\t\t\tdecoded.channels,\n\t\t\tdecoded.sampleRate,\n\t\t\toptions,\n\t\t);\n\t},\n};\n"],"mappings":";;;;;AAmCA,MAAa,cAAc;CAC1B,MAAM,oBACL,UACA,YACA,UAA8B,EAAE,EACO;EACvC,MAAM,SAAS,MAAM,cAAc;EACnC,MAAM,MAAM,QAAQ,OAAO;EAC3B,MAAM,cAAc,QAAQ,eAAe;EAE3C,MAAM,YAAY,MAAM,2BAA2B,gBAClD,QACA,UACA,YACA,KACA,SACA,YACA;EAED,MAAM,UAAU,UAAU,kBAAkB;GAC3C,SAAS,IAAI,aAAa,UAAU,UAAU;GAC9C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,MAAM,IAAI,aAAa,UAAU,UAAU;GAC3C,QAAQ,IAAI,aAAa,UAAU,UAAU;GAC7C;EAED,MAAM,iBAAoC;GACzC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,cAAiC;GACtC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EACD,MAAM,gBAAmC;GACxC,QAAQ;GACR,SAAS;GACT,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,OAAO,UAAU,MAAM;GACvB;EAED,MAAM,UAAU,iBAAiB,QAAQ,SAAS,KAAK,eAAe;EACtE,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,OAAO,iBAAiB,QAAQ,MAAM,KAAK,YAAY;EAC7D,MAAM,SAAS,iBAAiB,QAAQ,QAAQ,KAAK,cAAc;AAEnE,SAAO;GACN;GACA;GACA;GACA;GACA,aAAa,UAAU;GACvB,WAAW,UAAU;GACrB;GACA,aAAa,UAAU;GACvB,SAAS,UAAU;GACnB,eAAe,UAAU;GACzB,YAAY,UAAU;GACtB,YAAY,UAAU;GACtB,cAAc,UAAU;GACxB,UAAU,OAAe;AACxB,YAAQ,YAAY,MAAM;AAC1B,SAAK,YAAY,MAAM;AACvB,SAAK,YAAY,MAAM;AACvB,WAAO,YAAY,MAAM;;GAE1B;;CAGF,MAAM,QACL,QACA,UAA8B,EAAE,EACO;EACvC,MAAM,UAAU,MAAM,kBAAkB,OAAO;AAC/C,MAAI,CAAC,WAAW,QAAQ,SAAS,WAAW,EAC3C,OAAM,IAAI,MACT,yDAAyD,SACzD;AAEF,SAAO,YAAY,oBAClB,QAAQ,UACR,QAAQ,YACR,QACA;;CAEF"}
|
|
@@ -63,4 +63,4 @@ var init_client = __esmMin((() => {
|
|
|
63
63
|
|
|
64
64
|
//#endregion
|
|
65
65
|
export { setCredentialFeature as a, setFeature as i, init_client as n, emitWarningIfUnsupportedVersion as o, setTokenFeature as r, state as s, client_exports as t };
|
|
66
|
-
//# sourceMappingURL=client-
|
|
66
|
+
//# sourceMappingURL=client-dVxUnmHz.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-
|
|
1
|
+
{"version":3,"file":"client-dVxUnmHz.mjs","names":[],"sources":["../../../node_modules/.pnpm/@aws-sdk+core@3.973.20/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js","../../../node_modules/.pnpm/@aws-sdk+core@3.973.20/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js","../../../node_modules/.pnpm/@aws-sdk+core@3.973.20/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js","../../../node_modules/.pnpm/@aws-sdk+core@3.973.20/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js","../../../node_modules/.pnpm/@aws-sdk+core@3.973.20/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js"],"sourcesContent":["export const state = {\n warningEmitted: false,\n};\nexport const emitWarningIfUnsupportedVersion = (version) => {\n if (version && !state.warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 20) {\n state.warningEmitted = true;\n process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will\nno longer support Node.js ${version} in January 2026.\n\nTo continue receiving updates to AWS services, bug fixes, and security\nupdates please upgrade to a supported Node.js LTS version.\n\nMore information can be found at: https://a.co/c895JFp`);\n }\n};\n","export function setCredentialFeature(credentials, feature, value) {\n if (!credentials.$source) {\n credentials.$source = {};\n }\n credentials.$source[feature] = value;\n return credentials;\n}\n","export function setFeature(context, feature, value) {\n if (!context.__aws_sdk_context) {\n context.__aws_sdk_context = {\n features: {},\n };\n }\n else if (!context.__aws_sdk_context.features) {\n context.__aws_sdk_context.features = {};\n }\n context.__aws_sdk_context.features[feature] = value;\n}\n","export function setTokenFeature(token, feature, value) {\n if (!token.$source) {\n token.$source = {};\n }\n token.$source[feature] = value;\n return token;\n}\n","export * from \"./emitWarningIfUnsupportedVersion\";\nexport * from \"./setCredentialFeature\";\nexport * from \"./setFeature\";\nexport * from \"./setTokenFeature\";\n"],"x_google_ignoreList":[0,1,2,3,4],"mappings":";;;;;CAAa,QAAQ,EACjB,gBAAgB,OACnB;CACY,mCAAmC,YAAY;AACxD,MAAI,WAAW,CAAC,MAAM,kBAAkB,SAAS,QAAQ,UAAU,GAAG,QAAQ,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI;AAC/F,SAAM,iBAAiB;AACvB,WAAQ,YAAY;4BACA,QAAQ;;;;;wDAKoB;;;;;;;ACZxD,SAAgB,qBAAqB,aAAa,SAAS,OAAO;AAC9D,KAAI,CAAC,YAAY,QACb,aAAY,UAAU,EAAE;AAE5B,aAAY,QAAQ,WAAW;AAC/B,QAAO;;;;;;ACLX,SAAgB,WAAW,SAAS,SAAS,OAAO;AAChD,KAAI,CAAC,QAAQ,kBACT,SAAQ,oBAAoB,EACxB,UAAU,EAAE,EACf;UAEI,CAAC,QAAQ,kBAAkB,SAChC,SAAQ,kBAAkB,WAAW,EAAE;AAE3C,SAAQ,kBAAkB,SAAS,WAAW;;;;;;ACTlD,SAAgB,gBAAgB,OAAO,SAAS,OAAO;AACnD,KAAI,CAAC,MAAM,QACP,OAAM,UAAU,EAAE;AAEtB,OAAM,QAAQ,WAAW;AACzB,QAAO"}
|
|
@@ -2217,4 +2217,4 @@ var TensorPipeline = class TensorPipeline$1 {
|
|
|
2217
2217
|
|
|
2218
2218
|
//#endregion
|
|
2219
2219
|
export { PoseSkeletonComputePipeline as a, OpticalFlowComputePipeline as i, ControlNetMultiplexer as n, TemporalDeflickerPipeline as o, DepthNormalsComputePipeline as r, TensorPipeline as s, CannyComputePipeline as t };
|
|
2220
|
-
//# sourceMappingURL=dist-
|
|
2220
|
+
//# sourceMappingURL=dist-0QGroRYZ.mjs.map
|