framefields 2.9.3 → 2.11.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 +9 -2
- package/dist/audio/index.d.mts +5 -5
- package/dist/audio/index.mjs +13 -13
- package/dist/{audio-B6RmYOPe.mjs → audio-BuCVk1IQ.mjs} +32 -6
- package/dist/audio-BuCVk1IQ.mjs.map +1 -0
- package/dist/audio-CYZkDwae.d.mts +62 -0
- package/dist/audio-CYZkDwae.d.mts.map +1 -0
- package/dist/{audio-BlDbnteH.mjs → audio-KHBadECb.mjs} +1 -1
- package/dist/{audio-BlDbnteH.mjs.map → audio-KHBadECb.mjs.map} +1 -1
- package/dist/{check-result-Bj7g62ka.mjs → check-result-Culfu7Nx.mjs} +1 -1
- package/dist/{check-result-Bj7g62ka.mjs.map → check-result-Culfu7Nx.mjs.map} +1 -1
- package/dist/cli/check-worker.mjs +50 -50
- package/dist/cli.mjs +179 -3
- package/dist/cli.mjs.map +1 -1
- package/dist/cloud/index.d.mts +118 -0
- package/dist/cloud/index.d.mts.map +1 -0
- package/dist/cloud/index.mjs +3 -0
- package/dist/cloud-xcfV4J03.mjs +233 -0
- package/dist/cloud-xcfV4J03.mjs.map +1 -0
- package/dist/components/index.d.mts +14 -14
- package/dist/components/index.mjs +47 -47
- package/dist/{dist-Cn8bDsQF.mjs → dist-BIE8fvlv.mjs} +1 -1
- package/dist/{dist-Cn8bDsQF.mjs.map → dist-BIE8fvlv.mjs.map} +1 -1
- package/dist/{dist-ByxHoMQI.mjs → dist-Bf2_efYP.mjs} +1 -1
- package/dist/{dist-ByxHoMQI.mjs.map → dist-Bf2_efYP.mjs.map} +1 -1
- package/dist/{dist-BlulwErl.mjs → dist-CNGv-JTX.mjs} +1 -1
- package/dist/{dist-D12-a3-x.mjs → dist-CWLLnigL.mjs} +375 -15
- package/dist/dist-CWLLnigL.mjs.map +1 -0
- package/dist/{dist-DL1GwJvs.mjs → dist-CySGkG54.mjs} +2 -2
- package/dist/{dist-DL1GwJvs.mjs.map → dist-CySGkG54.mjs.map} +1 -1
- package/dist/{dist-Dq5TkNDI.mjs → dist-Dg9LMWoX.mjs} +2 -2
- package/dist/{dist-Dq5TkNDI.mjs.map → dist-Dg9LMWoX.mjs.map} +1 -1
- package/dist/{dist-DEUU6sNe.mjs → dist-EQX3TUUl.mjs} +4 -4
- package/dist/{dist-DEUU6sNe.mjs.map → dist-EQX3TUUl.mjs.map} +1 -1
- package/dist/effects/index.d.mts +6 -6
- package/dist/effects/index.mjs +36 -36
- package/dist/{effects-CViUoQSV.mjs → effects-DKLbLXF7.mjs} +3 -3
- package/dist/{effects-CViUoQSV.mjs.map → effects-DKLbLXF7.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +3 -3
- package/dist/{fonts-B0U2KO5I.mjs → fonts-gPbGbShD.mjs} +2 -2
- package/dist/{fonts-B0U2KO5I.mjs.map → fonts-gPbGbShD.mjs.map} +1 -1
- package/dist/{gpu-zFNrvhV9.mjs → gpu-CpkJJLQP.mjs} +2 -2
- package/dist/{gpu-zFNrvhV9.mjs.map → gpu-CpkJJLQP.mjs.map} +1 -1
- package/dist/{index-BuYtrhzL.d.mts → index-BW0Q1ygn.d.mts} +1 -1
- package/dist/{index-BuYtrhzL.d.mts.map → index-BW0Q1ygn.d.mts.map} +1 -1
- package/dist/{index-f4IF1vRH.d.mts → index-Bly-7YM1.d.mts} +3 -3
- package/dist/{index-f4IF1vRH.d.mts.map → index-Bly-7YM1.d.mts.map} +1 -1
- package/dist/{index-Bzo1uj8h.d.mts → index-BuiZzc6i.d.mts} +23 -3
- package/dist/index-BuiZzc6i.d.mts.map +1 -0
- package/dist/{index-DBhswLMO.d.mts → index-C8YwZ6k1.d.mts} +2 -2
- package/dist/{index-DBhswLMO.d.mts.map → index-C8YwZ6k1.d.mts.map} +1 -1
- package/dist/{index-svAgwTY_.d.mts → index-CEU_Zsb9.d.mts} +2 -2
- package/dist/{index-svAgwTY_.d.mts.map → index-CEU_Zsb9.d.mts.map} +1 -1
- package/dist/{index-9_4X2ro1.d.mts → index-COYNQ_mf.d.mts} +1 -1
- package/dist/{index-9_4X2ro1.d.mts.map → index-COYNQ_mf.d.mts.map} +1 -1
- package/dist/{index-CgGM31I9.d.mts → index-CdCrae-I.d.mts} +2 -2
- package/dist/{index-CgGM31I9.d.mts.map → index-CdCrae-I.d.mts.map} +1 -1
- package/dist/{index-B9Lm1x8i.d.mts → index-Cro-818i.d.mts} +297 -283
- package/dist/index-Cro-818i.d.mts.map +1 -0
- package/dist/{index-w28KUM9A.d.mts → index-D2i9J9Zq.d.mts} +3 -3
- package/dist/{index-w28KUM9A.d.mts.map → index-D2i9J9Zq.d.mts.map} +1 -1
- package/dist/{index-V0ZQ4JN6.d.mts → index-gOVtTm-P.d.mts} +125 -3
- package/dist/index-gOVtTm-P.d.mts.map +1 -0
- package/dist/{index-C6GcuYVA.d.mts → index-jSDEM-uE.d.mts} +5 -5
- package/dist/{index-C6GcuYVA.d.mts.map → index-jSDEM-uE.d.mts.map} +1 -1
- package/dist/index.d.mts +16 -16
- package/dist/index.mjs +59 -59
- package/dist/preview/index.d.mts +4 -4
- package/dist/preview/index.mjs +12 -12
- package/dist/{preview-ZKJ_zTmd.mjs → preview-BToKUTtZ.mjs} +3 -3
- package/dist/{preview-ZKJ_zTmd.mjs.map → preview-BToKUTtZ.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-VN36PRVD.mjs → chunk-26XWIHW3.mjs} +1 -1
- package/dist/preview-engine/{chunk-BVDWS3D2.mjs → chunk-4AGQN53P.mjs} +1 -1
- package/dist/preview-engine/{chunk-IB6GZJOL.mjs → chunk-54Q5CKSV.mjs} +1 -1
- package/dist/preview-engine/{chunk-Y5K5LVOR.mjs → chunk-5KSBS3AL.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZJ5SWTCW.mjs → chunk-65NANVQL.mjs} +1 -1
- package/dist/preview-engine/{chunk-34RJ7GAS.mjs → chunk-6LTINEA4.mjs} +1 -1
- package/dist/preview-engine/{chunk-SPJPM43P.mjs → chunk-7GMHSTRP.mjs} +1 -1
- package/dist/preview-engine/{chunk-BEYA25UZ.mjs → chunk-ACBBBOUM.mjs} +1 -1
- package/dist/preview-engine/{chunk-7U34VKNO.mjs → chunk-BRV7TQDV.mjs} +1 -1
- package/dist/preview-engine/{chunk-KHJZMTOS.mjs → chunk-CCORQLMR.mjs} +1 -1
- package/dist/preview-engine/{chunk-5AWAOMBR.mjs → chunk-CIVEZJYF.mjs} +1 -1
- package/dist/preview-engine/{chunk-FKG27DVO.mjs → chunk-CIVJXFWH.mjs} +1 -1
- package/dist/preview-engine/{chunk-JIPMF42Z.mjs → chunk-D6LM7DTJ.mjs} +2 -2
- package/dist/preview-engine/{chunk-GA4HNR44.mjs → chunk-DNNGWS2C.mjs} +1 -1
- package/dist/preview-engine/{chunk-ZY47XIRK.mjs → chunk-EAWJXW4J.mjs} +1 -1
- package/dist/preview-engine/{chunk-6R3UJBL5.mjs → chunk-EPRINA4V.mjs} +1 -1
- package/dist/preview-engine/{chunk-GRJJVSOV.mjs → chunk-EXEO245X.mjs} +1 -1
- package/dist/preview-engine/{chunk-DVZITDQS.mjs → chunk-FQL4IJZN.mjs} +1 -1
- package/dist/preview-engine/{chunk-QCSVT73T.mjs → chunk-GHTG5XV6.mjs} +1 -1
- package/dist/preview-engine/{chunk-VVY4PG5E.mjs → chunk-GXFYRMJZ.mjs} +25 -25
- package/dist/preview-engine/{chunk-AHQCDTD6.mjs → chunk-IBPYV6HF.mjs} +1 -1
- package/dist/preview-engine/{chunk-PM2W4VLT.mjs → chunk-IKVJ4MW5.mjs} +1 -1
- package/dist/preview-engine/{chunk-GZWA5QJS.mjs → chunk-JDB7PMRI.mjs} +1 -1
- package/dist/preview-engine/{chunk-CC4NNNIY.mjs → chunk-KVOFO273.mjs} +1 -1
- package/dist/preview-engine/{chunk-RJIAES3X.mjs → chunk-LFNCWMKS.mjs} +1 -1
- package/dist/preview-engine/{chunk-FTCEG3SF.mjs → chunk-LMXMBX4J.mjs} +1 -1
- package/dist/preview-engine/{chunk-MIEH74UH.mjs → chunk-M4QANUJI.mjs} +1 -1
- package/dist/preview-engine/{chunk-VVE2QHVG.mjs → chunk-NOKPBMIP.mjs} +1 -1
- package/dist/preview-engine/{chunk-P5FKRQFU.mjs → chunk-O63FLYWC.mjs} +1 -1
- package/dist/preview-engine/chunk-OELPPLML.mjs +107 -0
- package/dist/preview-engine/{chunk-GIICZZQI.mjs → chunk-OLB4TQLQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-CN2VLYLB.mjs → chunk-PKNUTHPI.mjs} +1 -1
- package/dist/preview-engine/{chunk-2B722GXM.mjs → chunk-QF4JWVO3.mjs} +1 -1
- package/dist/preview-engine/{chunk-EJJITH6U.mjs → chunk-RDWLLITE.mjs} +1 -1
- package/dist/preview-engine/{chunk-K3C6GUQD.mjs → chunk-SE2C623Z.mjs} +1 -1
- package/dist/preview-engine/{chunk-34DL53D5.mjs → chunk-TEWRQKX3.mjs} +1 -1
- package/dist/preview-engine/{chunk-H7BSN7V7.mjs → chunk-UGB6JKVS.mjs} +1 -1
- package/dist/preview-engine/{chunk-BJV2LBII.mjs → chunk-UI3VH33L.mjs} +1 -1
- package/dist/preview-engine/{chunk-UXYM2G6J.mjs → chunk-UMJ3VGKN.mjs} +1 -1
- package/dist/preview-engine/{chunk-2DWY7UBV.mjs → chunk-VFQH5KVS.mjs} +1 -1
- package/dist/preview-engine/{chunk-73CNXGAK.mjs → chunk-VQA4DYZU.mjs} +1 -1
- package/dist/preview-engine/{chunk-LVYVXVZO.mjs → chunk-VZLIRYAL.mjs} +1 -1
- package/dist/preview-engine/{chunk-4WYM72ZN.mjs → chunk-WFMUDL55.mjs} +1 -1
- package/dist/preview-engine/{chunk-Q62GPWGD.mjs → chunk-XF6DYP6B.mjs} +11 -11
- package/dist/preview-engine/{chunk-35HMRW4I.mjs → chunk-YHMBGJP6.mjs} +1 -1
- package/dist/preview-engine/{chunk-DMSZXG56.mjs → chunk-YKM7JDQY.mjs} +1 -1
- package/dist/preview-engine/{chunk-SF37HXAH.mjs → chunk-YVZTRH4Y.mjs} +1 -1
- package/dist/preview-engine/{chunk-TNJEZKXM.mjs → chunk-Z24UEN4P.mjs} +1 -1
- package/dist/preview-engine/{chunk-2PYTDN2C.mjs → chunk-ZF2MEFKO.mjs} +1 -1
- package/dist/preview-engine/{chunk-OH5W5EL6.mjs → chunk-ZIXPWP2B.mjs} +1 -1
- 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 +1 -1
- package/dist/preview-engine/renderers-2NGIILMI.mjs +1 -0
- package/dist/preview-engine/{renderers-5TO2SXFR.mjs → renderers-33FCFHDR.mjs} +1 -1
- package/dist/preview-engine/renderers-466Z77BH.mjs +1 -0
- package/dist/preview-engine/{renderers-PIIEUKFE.mjs → renderers-4IBFDW2S.mjs} +1 -1
- package/dist/preview-engine/renderers-4KRENGZA.mjs +1 -0
- package/dist/preview-engine/renderers-4W52BQEU.mjs +1 -0
- package/dist/preview-engine/{renderers-ZACSHGNZ.mjs → renderers-53EI26GL.mjs} +1 -1
- package/dist/preview-engine/renderers-55PRAS7G.mjs +1 -0
- package/dist/preview-engine/renderers-5LLYINHW.mjs +1 -0
- package/dist/preview-engine/{renderers-A24KZK2Q.mjs → renderers-5XLGCEOA.mjs} +1 -1
- package/dist/preview-engine/renderers-63N3Y2XO.mjs +1 -0
- package/dist/preview-engine/{renderers-V3AQO7AR.mjs → renderers-6LNDAO4B.mjs} +1 -1
- package/dist/preview-engine/renderers-6ROVFDIN.mjs +1 -0
- package/dist/preview-engine/{renderers-CUMVIVHI.mjs → renderers-6YVZUQOH.mjs} +1 -1
- package/dist/preview-engine/renderers-7CAHX35U.mjs +1 -0
- package/dist/preview-engine/renderers-A4RVLPMG.mjs +1 -0
- package/dist/preview-engine/renderers-A53P4J6O.mjs +1 -0
- package/dist/preview-engine/{renderers-WEYAHOBK.mjs → renderers-ACUJMDEK.mjs} +1 -1
- package/dist/preview-engine/renderers-AFJ3373L.mjs +1 -0
- package/dist/preview-engine/renderers-ATFWTA3U.mjs +1 -0
- package/dist/preview-engine/{renderers-TSBV4KPE.mjs → renderers-BOBVXYAA.mjs} +1 -1
- package/dist/preview-engine/renderers-BPYJXHBU.mjs +1 -0
- package/dist/preview-engine/{renderers-NCGH2WWJ.mjs → renderers-C7SI3NIE.mjs} +1 -1
- package/dist/preview-engine/{renderers-FSI5KNGZ.mjs → renderers-CCRZNGVK.mjs} +1 -1
- package/dist/preview-engine/{renderers-NUAI4TO5.mjs → renderers-CYJAVWHT.mjs} +1 -1
- package/dist/preview-engine/renderers-D3ZF7FXT.mjs +1 -0
- package/dist/preview-engine/renderers-D7YN6B4B.mjs +1 -0
- package/dist/preview-engine/renderers-DBLASKF5.mjs +1 -0
- package/dist/preview-engine/renderers-DC5ZYYHM.mjs +1 -0
- package/dist/preview-engine/{renderers-5UZ3YFBD.mjs → renderers-EN7LXJLG.mjs} +1 -1
- package/dist/preview-engine/{renderers-L6YDX6GS.mjs → renderers-FY2HOQCS.mjs} +1 -1
- package/dist/preview-engine/{renderers-6Z7DWAPH.mjs → renderers-GQM3KMV3.mjs} +1 -1
- package/dist/preview-engine/{renderers-QA2HKUJJ.mjs → renderers-H6PBHEYU.mjs} +1 -1
- package/dist/preview-engine/{renderers-MD3PRFZL.mjs → renderers-HKLCB4U6.mjs} +1 -1
- package/dist/preview-engine/{renderers-TGJSOKDY.mjs → renderers-HSFQIILN.mjs} +1 -1
- package/dist/preview-engine/{renderers-7C5RA3R5.mjs → renderers-I6QKZ7CH.mjs} +1 -1
- package/dist/preview-engine/renderers-J6ZEXW5L.mjs +1 -0
- package/dist/preview-engine/renderers-JV4MF46Q.mjs +1 -0
- package/dist/preview-engine/{renderers-SEIAUKJF.mjs → renderers-KCGK33Y2.mjs} +1 -1
- package/dist/preview-engine/renderers-KQKH4ZIX.mjs +1 -0
- package/dist/preview-engine/renderers-MEITHN4N.mjs +1 -0
- package/dist/preview-engine/renderers-MN3HSBTJ.mjs +1 -0
- package/dist/preview-engine/renderers-NTG3QGNH.mjs +1 -0
- package/dist/preview-engine/{renderers-KC6ZSKCW.mjs → renderers-OGOW3NA4.mjs} +1 -1
- package/dist/preview-engine/renderers-OU4SFMB2.mjs +1 -0
- package/dist/preview-engine/{renderers-ENMY4DKF.mjs → renderers-P2HORBZ6.mjs} +1 -1
- package/dist/preview-engine/renderers-P6TIBJIG.mjs +1 -0
- package/dist/preview-engine/renderers-POJWQ7L3.mjs +1 -0
- package/dist/preview-engine/renderers-RJ7S6VHD.mjs +1 -0
- package/dist/preview-engine/renderers-RJJAJZYN.mjs +1 -0
- package/dist/preview-engine/renderers-UEQ733VK.mjs +1 -0
- package/dist/preview-engine/{renderers-T74CQCEN.mjs → renderers-UG2C3C7T.mjs} +1 -1
- package/dist/preview-engine/renderers-ULO2AW2U.mjs +1 -0
- package/dist/preview-engine/renderers-UPVHGHCK.mjs +1 -0
- package/dist/preview-engine/renderers-UZHSNNIM.mjs +1 -0
- package/dist/preview-engine/renderers-V5KWZL2C.mjs +1 -0
- package/dist/preview-engine/{renderers-5KANN7XF.mjs → renderers-VIGZYJYX.mjs} +1 -1
- package/dist/preview-engine/{renderers-4F7WLQD5.mjs → renderers-VVP5WQOY.mjs} +1 -1
- package/dist/preview-engine/{renderers-7XHO6M3B.mjs → renderers-WL372W36.mjs} +1 -1
- package/dist/preview-engine/{renderers-U4M7ZCV4.mjs → renderers-WSABL3QO.mjs} +1 -1
- package/dist/preview-engine/{renderers-Y22VSOXF.mjs → renderers-X6CORAES.mjs} +1 -1
- package/dist/preview-engine/renderers-YMXKYOHQ.mjs +1 -0
- package/dist/preview-engine/renderers-YWDAZ2NZ.mjs +1 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-xjIwjKb6.mjs → program-Bc860ko5.mjs} +4 -4
- package/dist/{program-xjIwjKb6.mjs.map → program-Bc860ko5.mjs.map} +1 -1
- package/dist/registry/focus-zoom.json +9 -2
- package/dist/renderer/index.d.mts +4 -4
- package/dist/renderer/index.mjs +4 -4
- package/dist/renderer--Ymc_4XJ.mjs +5 -0
- package/dist/{renderer-Dee8ksIV.mjs → renderer-1uoKiILq.mjs} +3 -3
- package/dist/{renderer-Dee8ksIV.mjs.map → renderer-1uoKiILq.mjs.map} +1 -1
- package/dist/{renderer-CIB5L_C4.mjs → renderer-4ZUv3X1I.mjs} +5 -5
- package/dist/{renderer-CIB5L_C4.mjs.map → renderer-4ZUv3X1I.mjs.map} +1 -1
- package/dist/{renderer-BPYIqtNg.mjs → renderer-50JEMaVo.mjs} +5 -5
- package/dist/{renderer-BPYIqtNg.mjs.map → renderer-50JEMaVo.mjs.map} +1 -1
- package/dist/{renderer-BdbI_u9w.mjs → renderer-7ow5Acsg.mjs} +3 -3
- package/dist/{renderer-BdbI_u9w.mjs.map → renderer-7ow5Acsg.mjs.map} +1 -1
- package/dist/{renderer-B-inTgyb.d.mts → renderer-88C3QpKL.d.mts} +2 -2
- package/dist/{renderer-B-inTgyb.d.mts.map → renderer-88C3QpKL.d.mts.map} +1 -1
- package/dist/{renderer-DH7l5WFr.mjs → renderer-B-CMRUag.mjs} +4 -4
- package/dist/{renderer-DH7l5WFr.mjs.map → renderer-B-CMRUag.mjs.map} +1 -1
- package/dist/renderer-B-OdV-eq.mjs +5 -0
- package/dist/{renderer-NTCk1Srf.mjs → renderer-B1LD29TV.mjs} +3 -3
- package/dist/{renderer-NTCk1Srf.mjs.map → renderer-B1LD29TV.mjs.map} +1 -1
- package/dist/{renderer-ESkPj6pk.mjs → renderer-B1esRxGy.mjs} +4 -4
- package/dist/{renderer-ESkPj6pk.mjs.map → renderer-B1esRxGy.mjs.map} +1 -1
- package/dist/{renderer-g7fF2AYk.mjs → renderer-B3Dme2es.mjs} +5 -5
- package/dist/{renderer-g7fF2AYk.mjs.map → renderer-B3Dme2es.mjs.map} +1 -1
- package/dist/renderer-B65fwoA2.mjs +5 -0
- package/dist/{renderer-CDVb4OfJ.mjs → renderer-B6Oeahe_.mjs} +5 -5
- package/dist/{renderer-CDVb4OfJ.mjs.map → renderer-B6Oeahe_.mjs.map} +1 -1
- package/dist/renderer-B92Ahkcv.mjs +5 -0
- package/dist/renderer-B9z2AK31.mjs +5 -0
- package/dist/{renderer-BZmmekE8.mjs → renderer-BDZC3o3N.mjs} +4 -4
- package/dist/{renderer-BZmmekE8.mjs.map → renderer-BDZC3o3N.mjs.map} +1 -1
- package/dist/renderer-BIF3Dg3Z.mjs +5 -0
- package/dist/{renderer-C06U4c9k.mjs → renderer-BJ-7WRgO.mjs} +3 -3
- package/dist/{renderer-C06U4c9k.mjs.map → renderer-BJ-7WRgO.mjs.map} +1 -1
- package/dist/renderer-BJUVaIAT.mjs +5 -0
- package/dist/renderer-BKRDMbI-.mjs +5 -0
- package/dist/{renderer-HnSiwSW8.mjs → renderer-BNHcwxw9.mjs} +4 -4
- package/dist/{renderer-HnSiwSW8.mjs.map → renderer-BNHcwxw9.mjs.map} +1 -1
- package/dist/{renderer-B78W9uad.mjs → renderer-BNJ6Jk7-.mjs} +4 -4
- package/dist/{renderer-B78W9uad.mjs.map → renderer-BNJ6Jk7-.mjs.map} +1 -1
- package/dist/{renderer-BVql26Ay.mjs → renderer-BOrMBwQS.mjs} +2 -2
- package/dist/{renderer-BVql26Ay.mjs.map → renderer-BOrMBwQS.mjs.map} +1 -1
- package/dist/{renderer-Cl8r1LJe.mjs → renderer-BQetXCcZ.mjs} +4 -4
- package/dist/{renderer-Cl8r1LJe.mjs.map → renderer-BQetXCcZ.mjs.map} +1 -1
- package/dist/{renderer-C4yKI8MT.mjs → renderer-BSELd5vU.mjs} +3 -3
- package/dist/{renderer-C4yKI8MT.mjs.map → renderer-BSELd5vU.mjs.map} +1 -1
- package/dist/renderer-BSwhyVWa.mjs +5 -0
- package/dist/{renderer-CcJyD9Q5.mjs → renderer-BURhYcpA.mjs} +4 -4
- package/dist/{renderer-CcJyD9Q5.mjs.map → renderer-BURhYcpA.mjs.map} +1 -1
- package/dist/renderer-BUqSZn2X.mjs +5 -0
- package/dist/{renderer-DoPEPlbG.d.mts → renderer-BVKOQarx.d.mts} +3 -3
- package/dist/{renderer-DoPEPlbG.d.mts.map → renderer-BVKOQarx.d.mts.map} +1 -1
- package/dist/{renderer-CwVbHki6.mjs → renderer-BaIJIfJ6.mjs} +5 -5
- package/dist/{renderer-CwVbHki6.mjs.map → renderer-BaIJIfJ6.mjs.map} +1 -1
- package/dist/renderer-BbmvjqK9.mjs +3 -0
- package/dist/{renderer-Be5hfwSd.mjs → renderer-Bbxh4N8Y.mjs} +425 -115
- package/dist/renderer-Bbxh4N8Y.mjs.map +1 -0
- package/dist/{renderer-BG6bkKtY.mjs → renderer-Bf4-N7k7.mjs} +5 -5
- package/dist/{renderer-BG6bkKtY.mjs.map → renderer-Bf4-N7k7.mjs.map} +1 -1
- package/dist/{renderer-CpedZNEG.mjs → renderer-BhsrlGKp.mjs} +3 -3
- package/dist/{renderer-CpedZNEG.mjs.map → renderer-BhsrlGKp.mjs.map} +1 -1
- package/dist/{renderer-AUK_ZS3p.mjs → renderer-Bo7shNdU.mjs} +4 -4
- package/dist/{renderer-AUK_ZS3p.mjs.map → renderer-Bo7shNdU.mjs.map} +1 -1
- package/dist/renderer-Bpe4k_x6.mjs +5 -0
- package/dist/{renderer-BfbSvElt.mjs → renderer-BwrfKKqw.mjs} +4 -4
- package/dist/{renderer-BfbSvElt.mjs.map → renderer-BwrfKKqw.mjs.map} +1 -1
- package/dist/{renderer-CWLF6cAz.mjs → renderer-Bx14Wnxl.mjs} +3 -3
- package/dist/{renderer-CWLF6cAz.mjs.map → renderer-Bx14Wnxl.mjs.map} +1 -1
- package/dist/{renderer-CCFHnafT.mjs → renderer-Bxjb0HYU.mjs} +4 -4
- package/dist/{renderer-CCFHnafT.mjs.map → renderer-Bxjb0HYU.mjs.map} +1 -1
- package/dist/{renderer-5qJPGvVL.mjs → renderer-ByjaseAo.mjs} +5 -5
- package/dist/{renderer-5qJPGvVL.mjs.map → renderer-ByjaseAo.mjs.map} +1 -1
- package/dist/renderer-C1NjG0CJ.mjs +5 -0
- package/dist/renderer-C7Puyst9.mjs +5 -0
- package/dist/{renderer-CYX9vKZ-.mjs → renderer-C9BSXyrq.mjs} +4 -4
- package/dist/{renderer-CYX9vKZ-.mjs.map → renderer-C9BSXyrq.mjs.map} +1 -1
- package/dist/{renderer-CUBDxuxh.mjs → renderer-CAWnCsQc.mjs} +5 -5
- package/dist/{renderer-CUBDxuxh.mjs.map → renderer-CAWnCsQc.mjs.map} +1 -1
- package/dist/renderer-CGA_7320.mjs +5 -0
- package/dist/{renderer-CEfVvcw-.mjs → renderer-CLAvn9c6.mjs} +4 -4
- package/dist/{renderer-CEfVvcw-.mjs.map → renderer-CLAvn9c6.mjs.map} +1 -1
- package/dist/renderer-CLnFkXO7.mjs +5 -0
- package/dist/renderer-CMQIT1Kh.mjs +5 -0
- package/dist/{renderer-BYqrtBvd.mjs → renderer-COcKhouz.mjs} +5 -5
- package/dist/{renderer-BYqrtBvd.mjs.map → renderer-COcKhouz.mjs.map} +1 -1
- package/dist/renderer-CQ1rwjIh.mjs +5 -0
- package/dist/{renderer-US4GsamT.mjs → renderer-CR0mDPYY.mjs} +3 -3
- package/dist/renderer-CT8h0boY.mjs +5 -0
- package/dist/{renderer-VhkubIx_.mjs → renderer-CU8v-LxD.mjs} +5 -5
- package/dist/{renderer-VhkubIx_.mjs.map → renderer-CU8v-LxD.mjs.map} +1 -1
- package/dist/renderer-Cb0lszt3.mjs +5 -0
- package/dist/renderer-Ci7oLye9.mjs +5 -0
- package/dist/renderer-CjqXB3CZ.mjs +5 -0
- package/dist/{renderer-DIEmK57T.mjs → renderer-Co6UFbZB.mjs} +5 -5
- package/dist/{renderer-DIEmK57T.mjs.map → renderer-Co6UFbZB.mjs.map} +1 -1
- package/dist/renderer-CqTV04zQ.mjs +5 -0
- package/dist/{renderer-xDV2cCkX.mjs → renderer-CrR8Mpxq.mjs} +5 -5
- package/dist/{renderer-xDV2cCkX.mjs.map → renderer-CrR8Mpxq.mjs.map} +1 -1
- package/dist/renderer-CtWeRtHK.mjs +5 -0
- package/dist/{renderer-BRWjLiHX.mjs → renderer-CxGx1Lhi.mjs} +3 -3
- package/dist/{renderer-BRWjLiHX.mjs.map → renderer-CxGx1Lhi.mjs.map} +1 -1
- package/dist/{renderer-BQOeeXTr.mjs → renderer-Cz-n883J.mjs} +5 -5
- package/dist/{renderer-BQOeeXTr.mjs.map → renderer-Cz-n883J.mjs.map} +1 -1
- package/dist/renderer-CzolnwCo.mjs +5 -0
- package/dist/{renderer-sPI7aY6c.mjs → renderer-D-QVGphn.mjs} +4 -4
- package/dist/{renderer-sPI7aY6c.mjs.map → renderer-D-QVGphn.mjs.map} +1 -1
- package/dist/{renderer-C3tVrzyT.mjs → renderer-D06HxSXO.mjs} +3 -3
- package/dist/{renderer-CXLugAe8.mjs → renderer-D0aAZHC7.mjs} +4 -4
- package/dist/{renderer-CXLugAe8.mjs.map → renderer-D0aAZHC7.mjs.map} +1 -1
- package/dist/{renderer-mLlgfM7X.mjs → renderer-D4f8f66C.mjs} +4 -4
- package/dist/{renderer-mLlgfM7X.mjs.map → renderer-D4f8f66C.mjs.map} +1 -1
- package/dist/renderer-D6qhcx_C.mjs +5 -0
- package/dist/{renderer-C7MAqpIS.mjs → renderer-DAn9xiQT.mjs} +4 -4
- package/dist/{renderer-C7MAqpIS.mjs.map → renderer-DAn9xiQT.mjs.map} +1 -1
- package/dist/renderer-DDfEf0jt.mjs +5 -0
- package/dist/renderer-DDpa8ztp.mjs +5 -0
- package/dist/{renderer-DW7hbluw.mjs → renderer-DE9Jik9K.mjs} +3 -3
- package/dist/{renderer-DW7hbluw.mjs.map → renderer-DE9Jik9K.mjs.map} +1 -1
- package/dist/{renderer-C6st34I6.mjs → renderer-DFJWPqOJ.mjs} +3 -3
- package/dist/{renderer-C6st34I6.mjs.map → renderer-DFJWPqOJ.mjs.map} +1 -1
- package/dist/{renderer-D2TTDcgh.mjs → renderer-DLPhfwbR.mjs} +3 -3
- package/dist/{renderer-D2TTDcgh.mjs.map → renderer-DLPhfwbR.mjs.map} +1 -1
- package/dist/{renderer-D1VsqFf4.mjs → renderer-DOkbn1ot.mjs} +5 -5
- package/dist/{renderer-D1VsqFf4.mjs.map → renderer-DOkbn1ot.mjs.map} +1 -1
- package/dist/{renderer-BWMzjSgf.mjs → renderer-DaXQgGg3.mjs} +5 -5
- package/dist/{renderer-BWMzjSgf.mjs.map → renderer-DaXQgGg3.mjs.map} +1 -1
- package/dist/renderer-DbQBqzmx.mjs +5 -0
- package/dist/{renderer-DrWeb39d.mjs → renderer-DcvjSolU.mjs} +1 -1
- package/dist/{renderer-DrWeb39d.mjs.map → renderer-DcvjSolU.mjs.map} +1 -1
- package/dist/renderer-DfUcwMKa.mjs +5 -0
- package/dist/renderer-DgIjNANM.mjs +6 -0
- package/dist/{renderer-DOKHd37M.mjs → renderer-DgPn_SOC.mjs} +4 -4
- package/dist/{renderer-DOKHd37M.mjs.map → renderer-DgPn_SOC.mjs.map} +1 -1
- package/dist/{renderer-BgDLCCuq.mjs → renderer-DkqZmfm8.mjs} +5 -5
- package/dist/{renderer-BgDLCCuq.mjs.map → renderer-DkqZmfm8.mjs.map} +1 -1
- package/dist/{renderer-q4zMFfnY.mjs → renderer-Dpl6poqD.mjs} +2 -2
- package/dist/{renderer-q4zMFfnY.mjs.map → renderer-Dpl6poqD.mjs.map} +1 -1
- package/dist/renderer-Dsh6Tgu0.mjs +3 -0
- package/dist/renderer-DuIwR9GT.mjs +5 -0
- package/dist/renderer-Dv4u2c14.mjs +5 -0
- package/dist/{renderer-BJKzZwyn.mjs → renderer-DwK9jsER.mjs} +4 -4
- package/dist/{renderer-BJKzZwyn.mjs.map → renderer-DwK9jsER.mjs.map} +1 -1
- package/dist/{renderer-mQt-y49D.mjs → renderer-HDj9Zb-O.mjs} +5 -5
- package/dist/{renderer-mQt-y49D.mjs.map → renderer-HDj9Zb-O.mjs.map} +1 -1
- package/dist/renderer-IE1yu3lZ.mjs +5 -0
- package/dist/{renderer-B7kOF_Az.mjs → renderer-JHByuUNb.mjs} +3 -3
- package/dist/{renderer-B7kOF_Az.mjs.map → renderer-JHByuUNb.mjs.map} +1 -1
- package/dist/{renderer-B3IRvukr.mjs → renderer-KKk7myX1.mjs} +5 -5
- package/dist/{renderer-B3IRvukr.mjs.map → renderer-KKk7myX1.mjs.map} +1 -1
- package/dist/renderer-PY_wnEN0.mjs +5 -0
- package/dist/{renderer-BcO7LUla.mjs → renderer-Ros7XQg2.mjs} +3 -3
- package/dist/{renderer-BcO7LUla.mjs.map → renderer-Ros7XQg2.mjs.map} +1 -1
- package/dist/{renderer-bbaMOD4I.mjs → renderer-RvI3qRUI.mjs} +5 -5
- package/dist/{renderer-bbaMOD4I.mjs.map → renderer-RvI3qRUI.mjs.map} +1 -1
- package/dist/{renderer-CPTXJs0n.mjs → renderer-Rw87u1Cr.mjs} +6 -6
- package/dist/{renderer-CPTXJs0n.mjs.map → renderer-Rw87u1Cr.mjs.map} +1 -1
- package/dist/{renderer-Du-GnKLb.mjs → renderer-TKZCA0B9.mjs} +9 -9
- package/dist/{renderer-Du-GnKLb.mjs.map → renderer-TKZCA0B9.mjs.map} +1 -1
- package/dist/{renderer-C_2UDMEG.mjs → renderer-V4dhrf_h.mjs} +6 -6
- package/dist/{renderer-C_2UDMEG.mjs.map → renderer-V4dhrf_h.mjs.map} +1 -1
- package/dist/{renderer-eT7Gp7FS.mjs → renderer-_9gbYS-3.mjs} +5 -5
- package/dist/{renderer-eT7Gp7FS.mjs.map → renderer-_9gbYS-3.mjs.map} +1 -1
- package/dist/{renderer-IQ97z2rw.mjs → renderer-celhuAL7.mjs} +3 -3
- package/dist/{renderer-IQ97z2rw.mjs.map → renderer-celhuAL7.mjs.map} +1 -1
- package/dist/{renderer-DIqkhsLI.mjs → renderer-eMCTAa9e.mjs} +4 -4
- package/dist/{renderer-DIqkhsLI.mjs.map → renderer-eMCTAa9e.mjs.map} +1 -1
- package/dist/{renderer-B6TjJi1g.mjs → renderer-fs8f1QeE.mjs} +5 -5
- package/dist/{renderer-B6TjJi1g.mjs.map → renderer-fs8f1QeE.mjs.map} +1 -1
- package/dist/{renderer-BJQt0RiZ.mjs → renderer-fwKnV9zs.mjs} +5 -5
- package/dist/{renderer-BJQt0RiZ.mjs.map → renderer-fwKnV9zs.mjs.map} +1 -1
- package/dist/{renderer-F1D9ZJ8I.mjs → renderer-g_1t2je9.mjs} +3 -3
- package/dist/renderer-gv24VyzO.mjs +5 -0
- package/dist/{renderer-C3Iev6zu.mjs → renderer-h62QaJYz.mjs} +4 -4
- package/dist/{renderer-C3Iev6zu.mjs.map → renderer-h62QaJYz.mjs.map} +1 -1
- package/dist/{renderer-BNbMi9CI.mjs → renderer-jnAIhWn_.mjs} +5 -5
- package/dist/{renderer-BNbMi9CI.mjs.map → renderer-jnAIhWn_.mjs.map} +1 -1
- package/dist/{renderer-CyCtm0UV.mjs → renderer-lHNTgiOM.mjs} +3 -3
- package/dist/{renderer-CyCtm0UV.mjs.map → renderer-lHNTgiOM.mjs.map} +1 -1
- package/dist/renderer-nN6lPZf9.mjs +5 -0
- package/dist/{renderer-Dat8opUZ.mjs → renderer-o68mVeyk.mjs} +4 -4
- package/dist/{renderer-Dat8opUZ.mjs.map → renderer-o68mVeyk.mjs.map} +1 -1
- package/dist/{renderer-Dss7T71q.mjs → renderer-pNmI-A9o.mjs} +5 -5
- package/dist/{renderer-Dss7T71q.mjs.map → renderer-pNmI-A9o.mjs.map} +1 -1
- package/dist/{renderer-CbhnJi_8.mjs → renderer-q7q6k_cD.mjs} +4 -4
- package/dist/{renderer-CbhnJi_8.mjs.map → renderer-q7q6k_cD.mjs.map} +1 -1
- package/dist/{renderer-OsQRvOle.mjs → renderer-riIFosX6.mjs} +5 -5
- package/dist/{renderer-OsQRvOle.mjs.map → renderer-riIFosX6.mjs.map} +1 -1
- package/dist/{renderer-BMP_lYMk.mjs → renderer-sfqZK6L5.mjs} +4 -4
- package/dist/{renderer-BMP_lYMk.mjs.map → renderer-sfqZK6L5.mjs.map} +1 -1
- package/dist/{renderer-DEQeONTd.mjs → renderer-ynFRJh7G.mjs} +3 -3
- package/dist/{renderers-CP8CFWDs-BH1gUTYa.mjs → renderers-CP8CFWDs-DRoslK4F.mjs} +4 -4
- package/dist/{renderers-CP8CFWDs-BH1gUTYa.mjs.map → renderers-CP8CFWDs-DRoslK4F.mjs.map} +1 -1
- package/dist/sam/index.d.mts +3 -3
- package/dist/sam/index.mjs +1 -1
- package/dist/signals/index.d.mts +8 -8
- package/dist/signals/index.mjs +8 -8
- package/dist/{signals-gOd0Ui9B.mjs → signals-BfJ1aqpT.mjs} +4 -4
- package/dist/{signals-gOd0Ui9B.mjs.map → signals-BfJ1aqpT.mjs.map} +1 -1
- package/dist/{src-BU1VOWSk.mjs → src-BYp6r-cS.mjs} +11 -11
- package/dist/{src-BU1VOWSk.mjs.map → src-BYp6r-cS.mjs.map} +1 -1
- package/dist/{src-Bnr8DUC--DzkRGA62.mjs → src-Bnr8DUC--BRDqRF6I.mjs} +3 -3
- package/dist/{src-Bnr8DUC--DzkRGA62.mjs.map → src-Bnr8DUC--BRDqRF6I.mjs.map} +1 -1
- package/package.json +65 -59
- package/dist/audio-B6RmYOPe.mjs.map +0 -1
- package/dist/audio-D6tBMbHh.d.mts +0 -38
- package/dist/audio-D6tBMbHh.d.mts.map +0 -1
- package/dist/dist-D12-a3-x.mjs.map +0 -1
- package/dist/index-B9Lm1x8i.d.mts.map +0 -1
- package/dist/index-Bzo1uj8h.d.mts.map +0 -1
- package/dist/index-V0ZQ4JN6.d.mts.map +0 -1
- package/dist/preview-engine/chunk-S2ABWY5G.mjs +0 -1
- package/dist/preview-engine/renderers-3BOQOUEU.mjs +0 -1
- package/dist/preview-engine/renderers-3M2FESR2.mjs +0 -1
- package/dist/preview-engine/renderers-5XRKZHVT.mjs +0 -1
- package/dist/preview-engine/renderers-6LHIWKMZ.mjs +0 -1
- package/dist/preview-engine/renderers-A43VCJ7X.mjs +0 -1
- package/dist/preview-engine/renderers-AKY464RY.mjs +0 -1
- package/dist/preview-engine/renderers-C5UO6PL5.mjs +0 -1
- package/dist/preview-engine/renderers-C64QSZO4.mjs +0 -1
- package/dist/preview-engine/renderers-CIRCR6NG.mjs +0 -1
- package/dist/preview-engine/renderers-CIWOPETY.mjs +0 -1
- package/dist/preview-engine/renderers-CZEZCELP.mjs +0 -1
- package/dist/preview-engine/renderers-FSQMWHQM.mjs +0 -1
- package/dist/preview-engine/renderers-FZEW5C23.mjs +0 -1
- package/dist/preview-engine/renderers-HCET2IML.mjs +0 -1
- package/dist/preview-engine/renderers-IUOOC6K7.mjs +0 -1
- package/dist/preview-engine/renderers-KYYJLVIJ.mjs +0 -1
- package/dist/preview-engine/renderers-L4GE7WV3.mjs +0 -1
- package/dist/preview-engine/renderers-LRAFWKCO.mjs +0 -1
- package/dist/preview-engine/renderers-LU3XZWEB.mjs +0 -1
- package/dist/preview-engine/renderers-ND2WV4K3.mjs +0 -1
- package/dist/preview-engine/renderers-NJ5CWVVH.mjs +0 -1
- package/dist/preview-engine/renderers-NKXYPR3V.mjs +0 -1
- package/dist/preview-engine/renderers-NWR66CGK.mjs +0 -1
- package/dist/preview-engine/renderers-O22WTBRM.mjs +0 -1
- package/dist/preview-engine/renderers-PBBA7LQB.mjs +0 -1
- package/dist/preview-engine/renderers-Q6LJRZ7R.mjs +0 -1
- package/dist/preview-engine/renderers-RMEACSRL.mjs +0 -1
- package/dist/preview-engine/renderers-SP42LCSI.mjs +0 -1
- package/dist/preview-engine/renderers-T7SZA3BX.mjs +0 -1
- package/dist/preview-engine/renderers-VADTDAHD.mjs +0 -1
- package/dist/preview-engine/renderers-VNNWI5C3.mjs +0 -1
- package/dist/preview-engine/renderers-WZ75MLP3.mjs +0 -1
- package/dist/preview-engine/renderers-XB5R4UQA.mjs +0 -1
- package/dist/preview-engine/renderers-YBIUZDGQ.mjs +0 -1
- package/dist/preview-engine/renderers-YESJR4O7.mjs +0 -1
- package/dist/preview-engine/renderers-YKSRZRRT.mjs +0 -1
- package/dist/renderer-129U3pc9.mjs +0 -5
- package/dist/renderer-2phFTFxQ.mjs +0 -5
- package/dist/renderer-9muKpDeE.mjs +0 -5
- package/dist/renderer-B5Dhv6j9.mjs +0 -5
- package/dist/renderer-BBUgCS3C.mjs +0 -5
- package/dist/renderer-BKXM28Mx.mjs +0 -5
- package/dist/renderer-BKqm6xdf.mjs +0 -5
- package/dist/renderer-BMfMMf0R.mjs +0 -5
- package/dist/renderer-BPsjEnnl.mjs +0 -5
- package/dist/renderer-Be5hfwSd.mjs.map +0 -1
- package/dist/renderer-Bofr6f88.mjs +0 -6
- package/dist/renderer-BqoGcujR.mjs +0 -5
- package/dist/renderer-BvuBt2aH.mjs +0 -5
- package/dist/renderer-BxTgXHu1.mjs +0 -5
- package/dist/renderer-Bz2Rrz60.mjs +0 -5
- package/dist/renderer-CBjG8rjE.mjs +0 -5
- package/dist/renderer-CS2zyPyZ.mjs +0 -5
- package/dist/renderer-CXnbl_jR.mjs +0 -5
- package/dist/renderer-CaF9vod_.mjs +0 -5
- package/dist/renderer-CbSBH3lp.mjs +0 -5
- package/dist/renderer-CdjuGRbO.mjs +0 -5
- package/dist/renderer-CoLbxC13.mjs +0 -5
- package/dist/renderer-Cr9G0dXB.mjs +0 -5
- package/dist/renderer-D63l6_UC.mjs +0 -5
- package/dist/renderer-DCJqnzER.mjs +0 -5
- package/dist/renderer-DFBOR5J3.mjs +0 -5
- package/dist/renderer-DGAZSzw6.mjs +0 -5
- package/dist/renderer-DPLGk1Qk.mjs +0 -5
- package/dist/renderer-DTCUzByS.mjs +0 -5
- package/dist/renderer-DdGahYi1.mjs +0 -5
- package/dist/renderer-DhL4nNPk.mjs +0 -5
- package/dist/renderer-DkyTbiVz.mjs +0 -3
- package/dist/renderer-DnAZweRX.mjs +0 -5
- package/dist/renderer-DpisVnT2.mjs +0 -5
- package/dist/renderer-Ds7pAKnE.mjs +0 -3
- package/dist/renderer-DxZD5B54.mjs +0 -5
- package/dist/renderer-PMHOnbnA.mjs +0 -5
- package/dist/renderer-STufNpMx.mjs +0 -5
- package/dist/renderer-SdrgfCxH.mjs +0 -5
- /package/dist/{chunk-D8S17ehY.mjs → chunk-W71TSjRM.mjs} +0 -0
- /package/dist/{renderer-Cputd36d.mjs → renderer-B6rZUBwE.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-DoPEPlbG.d.mts","names":["MediaOperation","NodeInputConnection","NodeOperation","SignalData","VirtualMediaData","isSignal","resolveBoolean","resolveNumber","resolveParam","resolveString","RenderContextValue","WebGPUNodeRendererArgs","WebGPUNodeRenderer","Parameters","FULLSCREEN_QUAD_WGSL","PREMULTIPLIED_BLEND","GPUBlendState","STRAIGHT_ALPHA_BLEND","FragmentBinding","GPUBindGroupLayoutEntry","Omit","fragmentBindGroupLayout","GPUDevice","GPUBindGroupLayout","texturesLayout","perDevice","T","FullscreenPipelineOptions","GPUShaderModule","GPUPipelineLayout","GPUTextureFormat","createFullscreenPipeline","GPURenderPipeline","DrawChildToTextureOptions","NodeRenderProps","Partial","GPUTexture","drawChildToTexture","GPUTextureView","Promise","beginTargetPass","GPURenderPassEncoder","drawTextureToTarget","signalTiming","NodeSignalData","SignalTextureContext","signalTextureView","drawFullscreenPass","GPUCommandEncoder","GPUBindGroup","Point2D","solveHomography","GPUCommandEncoder$1","globalThis","GPURenderPassEncoder$1","GPUTextureView$1","GPUTexture$1","TOperation","Record","EffectReach","WebGPUNodeRenderFn","AudioProcessorContext","AudioProcessor","Float32Array","resolveFrameNumber","unwrapFrameParam","NodeOperationInputs","HandleParam","SD","resolveHandleParam","resolveSignalField","isHandleConnected","NodeRendererPlugin","defineRenderer","Readonly","WebGPURegistry","webgpuRegistry","registerWebGPURenderer","effectReach","TextureSourceOp","AudioProcessorRegistry","audioRegistry","$","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","U","V","W","X","Y","Z","_","a","b","c","d","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","resolveString","C","registerWebGPURenderer","D","resolveNumber","E","resolveHandleParam","M","webgpuRegistry","N","Point2D","O","resolveParam","P","solveHomography","S","isSignal","T","resolveFrameNumber","U","WebGPUNodeRendererArgs","_","WebGPURegistry","a","GPURenderPassEncoder","b","effectReach","c","HandleParam","d","NodeOperation","f","NodeOperationInputs","g","WebGPUNodeRenderer","h","TextureSourceOp","i","GPUCommandEncoder","j","unwrapFrameParam","k","resolveSignalField","l","MediaOperation","m","NodeRendererPlugin","n","AudioProcessorContext","o","GPUTexture","p","NodeRenderProps","r","EffectReach","s","GPUTextureView","t","AudioProcessor","u","NodeInputConnection","v","audioRegistry","w","resolveBoolean","x","isHandleConnected","y","defineRenderer","_framefields_core0","FileDataSchema","MultiOutputGenericSchema","SingleOutputGenericSchema","VirtualMediaDataSchema","createOutputItemSchema","z","FieldMeta","FieldOptions","ConfigBuilder","TKey","TType","TShape","ZodRawShape","Record","ZodTypeAny","core","$strip","ZodObject","configBuilder","COMPOSITE_OPERATIONS","GlobalCompositeOperation","ZodEnum","ColorSchema","ZodString","ZodOptional","PercentageSchema","ZodNumber","DimensionSchema","AnimationSchema","ZodArray","StrokeSchema","ZodDefault","ImageResultSchema","ZodLiteral","OutputItem","$ZodTypeInternals","ZodType","ZodTuple","ImageResult","infer","VideoResultSchema","VideoResult","AudioResultSchema","AudioResult","TextResultSchema","TextResult","NumberResultSchema","NumberResult","SignalResultSchema","SignalResult","OperationInputsSchema","ZodBoolean","ZodUnknown","ZodNullable","ZodRecord"],"sources":["../../node-sdk/dist/index-BwBRn_wY.d.mts","../../node-sdk/dist/index.d.mts"],"sourcesContent":["import { MediaOperation, NodeInputConnection, NodeOperation, SignalData, VirtualMediaData, isSignal, resolveBoolean, resolveNumber, resolveParam, resolveString } from \"@framefields/core\";\nimport { RenderContextValue } from \"@framefields/webgpu-renderers\";\n\n//#region renderer/gpu.d.ts\n/** The argument object every WebGPU node renderer receives. */\ntype WebGPUNodeRendererArgs = Parameters<WebGPUNodeRenderer>[0];\n/**\n * Full-screen quad vertex stage: a 4-vertex triangle strip (draw(4)) that\n * hands `in.uv` (0,0 top-left → 1,1 bottom-right) to an `fs` reading `VSOut`.\n */\ndeclare const FULLSCREEN_QUAD_WGSL = \"\\nstruct VSOut {\\n @builtin(position) pos : vec4<f32>,\\n @location(0) uv : vec2<f32>,\\n};\\n\\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\\n var pos = array<vec2<f32>, 4>(\\n vec2<f32>(-1.0, 1.0),\\n vec2<f32>(1.0, 1.0),\\n vec2<f32>(-1.0, -1.0),\\n vec2<f32>(1.0, -1.0)\\n );\\n var uv = array<vec2<f32>, 4>(\\n vec2<f32>(0.0, 0.0),\\n vec2<f32>(1.0, 0.0),\\n vec2<f32>(0.0, 1.0),\\n vec2<f32>(1.0, 1.0)\\n );\\n return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);\\n}\\n\";\n/** Premultiplied-alpha \"over\" blending. */\ndeclare const PREMULTIPLIED_BLEND: GPUBlendState;\n/** Straight-alpha color over a premultiplied-alpha accumulation. */\ndeclare const STRAIGHT_ALPHA_BLEND: GPUBlendState;\n/**\n * One bind-group entry, visible to the fragment stage unless it says\n * otherwise: `\"uniform\"` buffer, `\"texture\"` (filterable float 2D) or\n * `\"sampler\"` (filtering), or any other entry minus its binding index.\n */\ntype FragmentBinding = \"uniform\" | \"texture\" | \"sampler\" | Omit<GPUBindGroupLayoutEntry, \"binding\" | \"visibility\"> | Omit<GPUBindGroupLayoutEntry, \"binding\">;\n/** A bind group layout whose entries are bound at 0, 1, 2… in order. */\ndeclare function fragmentBindGroupLayout(device: GPUDevice, bindings: FragmentBinding[], label?: string): GPUBindGroupLayout;\n/** `count` float textures followed by one filtering sampler. */\ndeclare function texturesLayout(device: GPUDevice, count: number): GPUBindGroupLayout;\n/** Memoizes `create` per GPUDevice (resources can't cross devices). */\ndeclare function perDevice<T>(create: (device: GPUDevice) => T): (device: GPUDevice) => T;\ninterface FullscreenPipelineOptions {\n label?: string;\n module: GPUShaderModule;\n layouts: GPUBindGroupLayout[] | GPUPipelineLayout;\n format: GPUTextureFormat;\n blend?: GPUBlendState;\n /** Defaults to \"vs\". */\n vertexEntryPoint?: string;\n /** Defaults to \"fs\". */\n fragmentEntryPoint?: string;\n}\n/** A triangle-strip pipeline drawing one full-screen quad (`draw(4)`). */\ndeclare function createFullscreenPipeline(device: GPUDevice, options: FullscreenPipelineOptions): GPURenderPipeline;\ninterface DrawChildToTextureOptions {\n /** Defaults to the target's size. */\n width?: number;\n height?: number;\n /** Props for the child; defaults to the node's props with the child as media. */\n props?: Partial<NodeRenderProps>;\n /** Textures still in use that the temporary texture must not alias. */\n exclude?: GPUTexture[];\n}\n/**\n * Renders `child` into a cleared temporary texture with an identity\n * transform and a full-size scissor, and returns that texture.\n */\ndeclare function drawChildToTexture(args: WebGPUNodeRendererArgs, child: VirtualMediaData, options?: DrawChildToTextureOptions): Promise<{\n texture: GPUTexture;\n view: GPUTextureView;\n}>;\n/**\n * Opens a \"load\" pass on the node's target and makes it the node's current\n * pass (the caller hands it back to the compositor).\n */\ndeclare function beginTargetPass(args: WebGPUNodeRendererArgs, width?: number, height?: number): GPURenderPassEncoder;\n/** Draws `texture` over the whole target at `opacity` (the node's output). */\ndeclare function drawTextureToTarget(args: WebGPUNodeRendererArgs, texture: GPUTexture, opacity?: number): void;\n/** Clock a signal texture is evaluated at, in seconds. */\ndeclare function signalTiming(props: NodeRenderProps, frame: number, fps: number, fallbackDurationSeconds?: number): {\n elapsedSeconds: number;\n durationSeconds: number;\n};\ntype NodeSignalData = SignalData & {\n nodeId?: string;\n};\ninterface SignalTextureContext {\n args: WebGPUNodeRendererArgs;\n width: number;\n height: number;\n frame: number;\n fps: number;\n elapsedSeconds: number;\n durationSeconds: number;\n}\n/**\n * The texture a bound parameter samples: its own GPU binding, the signal's\n * texture (cached under `sd.nodeId`, else `fallbackId`), or a 1×1 dummy.\n */\ndeclare function signalTextureView(sc: SignalTextureContext, param: {\n hasStaticSig: boolean;\n sd: NodeSignalData | null;\n gpuTextureView?: GPUTextureView;\n}, fallbackId: string): GPUTextureView;\n/** Clears `target` to transparent and draws one full-screen quad into it. */\ndeclare function drawFullscreenPass(encoder: GPUCommandEncoder, target: GPUTextureView, pipeline: GPURenderPipeline, bindGroups: GPUBindGroup[]): void;\n//#endregion\n//#region renderer/homography.d.ts\ninterface Point2D {\n x: number;\n y: number;\n}\n/**\n * Computes an 8-parameter 3x3 homography matrix mapping destination coordinates (quad)\n * to normalized source coordinates (unit square [0, 1]^2).\n *\n * The homography H maps destination (x, y) to source (u, v):\n * u = (h00*x + h01*y + h02) / (h20*x + h21*y + h22)\n * v = (h10*x + h11*y + h12) / (h20*x + h21*y + h22)\n *\n * Resulting array: [h00, h01, h02, h10, h11, h12, h20, h21, 1.0]\n */\ndeclare function solveHomography(dstPoints: Point2D[], srcPoints?: Point2D[]): number[];\n//#endregion\n//#region renderer/index.d.ts\ntype GPUCommandEncoder$1 = globalThis.GPUCommandEncoder;\ntype GPURenderPassEncoder$1 = globalThis.GPURenderPassEncoder;\ntype GPUTextureView$1 = globalThis.GPUTextureView;\ntype GPUTexture$1 = globalThis.GPUTexture;\ninterface NodeRenderProps<TOperation extends MediaOperation = MediaOperation> {\n renderId: string;\n virtualMedia: VirtualMediaData<TOperation>;\n volume?: number;\n playbackRateOverride?: number;\n trimStartOverride?: number;\n trimEndOverride?: number;\n containerWidth: number;\n containerHeight: number;\n opacity?: number;\n frame?: number;\n compositionFrame?: number;\n /** Absolute source time for a remapped media leaf; effect clocks stay unchanged. */\n sourceTimeSec?: number;\n fps?: number;\n elapsedMs?: number;\n durationMs?: number;\n timestampSec?: number;\n renderingContext?: \"visual\" | \"audio\";\n inheritedSeekOffset?: number;\n inheritedClockOffset?: number;\n isHeadless?: boolean;\n forceWait?: boolean;\n isVideoMode?: boolean;\n isPlaying?: boolean;\n excludeTextures?: GPUTexture$1[];\n /** Signal values that override the node's own (text animators read them). */\n signals?: Record<string, unknown>;\n renderChild?: (child: VirtualMediaData, overrides?: Partial<NodeRenderProps>) => unknown;\n}\n/**\n * How far an effect draws past the pixels it is given, px, for one of its\n * operations; `null` when it isn't local (it reads or writes pixels anywhere,\n * like a mirror or a portal) or can't tell (a size driven by a signal).\n */\ntype EffectReach = (operation: Record<string, unknown>) => number | null;\n/**\n * A node's GPU renderer. An effect renderer may carry `reach`: a compositor\n * then runs it over the layer's own region plus that margin instead of the\n * whole target. Without it the effect always gets the whole target.\n */\ntype WebGPUNodeRenderer<TOperation extends MediaOperation = MediaOperation> = WebGPUNodeRenderFn<TOperation> & {\n reach?: EffectReach;\n};\ntype WebGPUNodeRenderFn<TOperation extends MediaOperation> = (args: {\n ctx: RenderContextValue;\n encoder: GPUCommandEncoder$1;\n pass: GPURenderPassEncoder$1;\n targetView: GPUTextureView$1;\n targetTexture: GPUTexture$1;\n targetWidth: number;\n targetHeight: number;\n props: NodeRenderProps<TOperation>;\n drawChild: (child: VirtualMediaData, overrides?: Partial<NodeRenderProps>, targetViewOverride?: GPUTextureView$1, targetTextureOverride?: GPUTexture$1, targetWidthOverride?: number, targetHeightOverride?: number) => Promise<void>;\n}) => Promise<void> | void;\ninterface AudioProcessorContext {\n device?: GPUDevice;\n frame?: number;\n compositionFrame?: number;\n fps?: number;\n elapsedMs?: number;\n durationMs?: number;\n renderId?: string;\n}\ntype AudioProcessor<TOperation extends MediaOperation = MediaOperation> = (channels: Float32Array[], sampleRate: number, virtualMedia: VirtualMediaData<TOperation>, ctx?: AudioProcessorContext) => void | Promise<void>;\n/**\n * A numeric node parameter at `frame`: a number, a signal-like `get(ctx)` or\n * `{ value }`, a `(ctx) => number` function, or anything `Number()` accepts;\n * `fallback` when none of those yields a finite number.\n */\ndeclare function resolveFrameNumber(val: unknown, fallback: number, frame: number, fps: number): number;\n/**\n * A static node parameter at `frame`: calls `get(ctx)` / `(frame, fps)`\n * functions and reads `{ value }` wrappers, keeping a signal's GPU texture\n * binding when it has one. Anything else is returned as-is.\n */\ndeclare function unwrapFrameParam(raw: unknown, frame: number, fps: number): {\n value: unknown;\n gpuTextureView?: GPUTextureView$1;\n};\n/** The `inputs` map node operations carry: one entry per connected handle. */\ntype NodeOperationInputs = Record<string, {\n connectionValid: boolean;\n outputItem: {\n type: string;\n data: unknown;\n } | null;\n}>;\ninterface HandleParam<SD> {\n val: number;\n /** The value comes from a signal (`sd`) sampled on the GPU. */\n hasStaticSig: boolean;\n sd: SD | null;\n handleId: string | null | undefined;\n}\n/**\n * A numeric parameter fed through `handleId`: a connected Number (clamped), a\n * connected Signal (sampled on the GPU, `val` stays `fallbackVal`), or else\n * `fallbackVal` clamped to [clampMin, clampMax].\n */\ndeclare function resolveHandleParam<SD>(inputs: NodeOperationInputs | undefined, handleId: string | null | undefined, fallbackVal: number, clampMin: number, clampMax: number): HandleParam<SD>;\n/**\n * A numeric field `fieldName` of a node operation, fed through its\n * `${fieldName}HandleId` input: a connected Signal/Numeric (`sd`, sampled on\n * the GPU; `value` is its offset), a connected Number, or the operation's own\n * value — each clamped to [minVal, maxVal].\n */\ndeclare function resolveSignalField<SD>(op: {\n inputs?: NodeOperationInputs;\n}, fieldName: string, defaultValue: number, minVal?: number, maxVal?: number): {\n hasSignal: boolean;\n sd: SD | null;\n value: number;\n};\n/**\n * Whether the handle whose id is stored at `op[handleIdKey]` has a valid\n * Signal or Number connection.\n */\ndeclare function isHandleConnected(op: Record<string, unknown>, handleIdKey: string): boolean;\ninterface NodeRendererPlugin {\n WebGPURenderer?: WebGPUNodeRenderer;\n audioProcessor?: AudioProcessor;\n}\ndeclare function defineRenderer(plugin: NodeRendererPlugin): Readonly<NodeRendererPlugin>;\ndeclare class WebGPURegistry {\n private renderers;\n register(op: string, renderer: WebGPUNodeRenderer): void;\n get(op: string): WebGPUNodeRenderer | undefined;\n has(op: string): boolean;\n}\ndeclare const webgpuRegistry: WebGPURegistry;\ndeclare function registerWebGPURenderer(op: string, renderer: WebGPUNodeRenderer): void;\n/**\n * How far an operation's effect draws past its pixels, from its registered\n * renderer; `null` when unknown: no renderer, no `reach`, or no answer.\n */\ndeclare function effectReach(operation: Record<string, unknown>): number | null;\ninterface TextureSourceOp {\n op: \"TextureSource\";\n sourceTexture: GPUTexture$1;\n opacity?: number;\n dataType?: \"Image\";\n}\ndeclare class AudioProcessorRegistry {\n private processors;\n register(opType: string, processor: AudioProcessor): void;\n get(opType: string): AudioProcessor | null;\n}\ndeclare const audioRegistry: AudioProcessorRegistry;\n//#endregion\nexport { texturesLayout as $, resolveString as A, PREMULTIPLIED_BLEND as B, registerWebGPURenderer as C, resolveNumber as D, resolveHandleParam as E, DrawChildToTextureOptions as F, createFullscreenPipeline as G, SignalTextureContext as H, FULLSCREEN_QUAD_WGSL as I, drawTextureToTarget as J, drawChildToTexture as K, FragmentBinding as L, webgpuRegistry as M, Point2D as N, resolveParam as O, solveHomography as P, signalTiming as Q, FullscreenPipelineOptions as R, isSignal as S, resolveFrameNumber as T, WebGPUNodeRendererArgs as U, STRAIGHT_ALPHA_BLEND as V, beginTargetPass as W, perDevice as X, fragmentBindGroupLayout as Y, signalTextureView as Z, WebGPURegistry as _, GPURenderPassEncoder$1 as a, effectReach as b, HandleParam as c, NodeOperation as d, NodeOperationInputs as f, WebGPUNodeRenderer as g, TextureSourceOp as h, GPUCommandEncoder$1 as i, unwrapFrameParam as j, resolveSignalField as k, MediaOperation as l, NodeRendererPlugin as m, AudioProcessorContext as n, GPUTexture$1 as o, NodeRenderProps as p, drawFullscreenPass as q, EffectReach as r, GPUTextureView$1 as s, AudioProcessor as t, NodeInputConnection as u, audioRegistry as v, resolveBoolean as w, isHandleConnected as x, defineRenderer as y, NodeSignalData as z };\n//# sourceMappingURL=index-BwBRn_wY.d.mts.map","import { A as resolveString, C as registerWebGPURenderer, D as resolveNumber, E as resolveHandleParam, M as webgpuRegistry, N as Point2D, O as resolveParam, P as solveHomography, S as isSignal, T as resolveFrameNumber, U as WebGPUNodeRendererArgs, _ as WebGPURegistry, a as GPURenderPassEncoder, b as effectReach, c as HandleParam, d as NodeOperation, f as NodeOperationInputs, g as WebGPUNodeRenderer, h as TextureSourceOp, i as GPUCommandEncoder, j as unwrapFrameParam, k as resolveSignalField, l as MediaOperation, m as NodeRendererPlugin, n as AudioProcessorContext, o as GPUTexture, p as NodeRenderProps, r as EffectReach, s as GPUTextureView, t as AudioProcessor, u as NodeInputConnection, v as audioRegistry, w as resolveBoolean, x as isHandleConnected, y as defineRenderer } from \"./index-BwBRn_wY.mjs\";\nimport * as _framefields_core0 from \"@framefields/core\";\nimport { FileDataSchema, MultiOutputGenericSchema, SingleOutputGenericSchema, VirtualMediaDataSchema, createOutputItemSchema } from \"@framefields/core\";\nimport { z } from \"zod\";\n\n//#region shared/config-builder.d.ts\n\n/**\n * Per-field metadata, attached to the field's zod schema with `.meta()`.\n *\n * It is readable from the schema itself (`z.globalRegistry.get(schema)`) and\n * from `z.toJSONSchema(schema)`, which is what `scripts/generate-effects.mts`\n * uses to emit the authoring classes. Raw `z.object` configs can call\n * `.meta({...})` with these keys directly; `configBuilder().field()` is sugar\n * for the same thing. See `spec/sync-node.md` §5.2.\n */\ninterface FieldMeta {\n label?: string;\n description?: string;\n dataTypes?: string[];\n /** Editor: the node shows an input handle for this field. */\n bindable?: boolean;\n /**\n * Authoring: the prop is typed `EffectProp<T>` (value, signal or frame\n * function). Defaults to `bindable`. Set it explicitly where the two differ.\n */\n signal?: boolean;\n /** Editor wiring only. Excluded from the generated authoring surface. */\n editorOnly?: boolean;\n /** Escape hatch for a value zod cannot type, e.g. a GPU texture handle. */\n tsType?: {\n name: string;\n from: string;\n };\n}\n/** @deprecated Use {@link FieldMeta}. */\ntype FieldOptions = FieldMeta;\ndeclare class ConfigBuilder<TShape extends z.ZodRawShape = Record<string, never>> {\n private shape;\n private options;\n constructor(shape?: TShape, options?: {\n strict?: boolean;\n });\n field<TKey extends string, TType extends z.ZodTypeAny>(key: TKey, schema: TType, options?: FieldMeta): ConfigBuilder<TShape & { [K in TKey]: TType }>;\n build(): {\n schema: z.ZodObject<{ -readonly [P in keyof TShape]: TShape[P] }, z.core.$strip>;\n };\n}\ndeclare function configBuilder(options?: {\n strict?: boolean;\n}): ConfigBuilder<{}>;\n//#endregion\n//#region shared/schemas.d.ts\ndeclare const COMPOSITE_OPERATIONS: readonly [\"source-over\", \"source-in\", \"source-out\", \"source-atop\", \"destination-over\", \"destination-in\", \"destination-out\", \"destination-atop\", \"lighter\", \"copy\", \"xor\", \"multiply\", \"screen\", \"overlay\", \"darken\", \"lighten\", \"color-dodge\", \"color-burn\", \"hard-light\", \"soft-light\", \"difference\", \"exclusion\", \"hue\", \"saturation\", \"color\", \"luminosity\"];\ndeclare const GlobalCompositeOperation: z.ZodEnum<{\n \"source-over\": \"source-over\";\n \"source-in\": \"source-in\";\n \"source-out\": \"source-out\";\n \"source-atop\": \"source-atop\";\n \"destination-over\": \"destination-over\";\n \"destination-in\": \"destination-in\";\n \"destination-out\": \"destination-out\";\n \"destination-atop\": \"destination-atop\";\n lighter: \"lighter\";\n copy: \"copy\";\n xor: \"xor\";\n multiply: \"multiply\";\n screen: \"screen\";\n overlay: \"overlay\";\n darken: \"darken\";\n lighten: \"lighten\";\n \"color-dodge\": \"color-dodge\";\n \"color-burn\": \"color-burn\";\n \"hard-light\": \"hard-light\";\n \"soft-light\": \"soft-light\";\n difference: \"difference\";\n exclusion: \"exclusion\";\n hue: \"hue\";\n saturation: \"saturation\";\n color: \"color\";\n luminosity: \"luminosity\";\n}>;\ndeclare const ColorSchema: z.ZodOptional<z.ZodString>;\ndeclare const PercentageSchema: z.ZodNumber;\ndeclare const DimensionSchema: z.ZodOptional<z.ZodNumber>;\ndeclare const AnimationSchema: z.ZodObject<{\n animations: z.ZodOptional<z.ZodArray<z.ZodObject<{\n id: z.ZodString;\n type: z.ZodEnum<{\n \"fade-in\": \"fade-in\";\n \"fade-out\": \"fade-out\";\n \"slide-in-left\": \"slide-in-left\";\n \"slide-in-right\": \"slide-in-right\";\n \"slide-in-top\": \"slide-in-top\";\n \"slide-in-bottom\": \"slide-in-bottom\";\n \"zoom-in\": \"zoom-in\";\n \"zoom-out\": \"zoom-out\";\n \"rotate-cw\": \"rotate-cw\";\n \"rotate-ccw\": \"rotate-ccw\";\n bounce: \"bounce\";\n shake: \"shake\";\n }>;\n value: z.ZodNumber;\n }, z.core.$strip>>>;\n}, z.core.$strip>;\ndeclare const StrokeSchema: z.ZodObject<{\n stroke: z.ZodOptional<z.ZodString>;\n strokeWidth: z.ZodOptional<z.ZodNumber>;\n strokeAlign: z.ZodDefault<z.ZodOptional<z.ZodEnum<{\n inside: \"inside\";\n center: \"center\";\n outside: \"outside\";\n }>>>;\n strokeRadius: z.ZodOptional<z.ZodNumber>;\n}, z.core.$strip>;\ndeclare const ImageResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Image\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Image\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype ImageResult = z.infer<typeof ImageResultSchema>;\ndeclare const VideoResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Video\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Video\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype VideoResult = z.infer<typeof VideoResultSchema>;\ndeclare const AudioResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Audio\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Audio\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype AudioResult = z.infer<typeof AudioResultSchema>;\ndeclare const TextResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Text\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Text\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype TextResult = z.infer<typeof TextResultSchema>;\ndeclare const NumberResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Number\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Number\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype NumberResult = z.infer<typeof NumberResultSchema>;\ndeclare const SignalResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Signal\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Signal\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype SignalResult = z.infer<typeof SignalResultSchema>;\n/** The `inputs` map an operation carries: one entry per connected handle. */\ndeclare const OperationInputsSchema: z.ZodRecord<z.ZodString, z.ZodObject<{\n connectionValid: z.ZodBoolean;\n outputItem: z.ZodOptional<z.ZodNullable<z.ZodObject<{\n type: z.ZodString;\n data: z.ZodUnknown;\n }, z.core.$strip>>>;\n}, z.core.$strip>>;\n//#endregion\nexport { AnimationSchema, AudioProcessor, AudioProcessorContext, AudioResult, AudioResultSchema, COMPOSITE_OPERATIONS, ColorSchema, ConfigBuilder, DimensionSchema, EffectReach, FieldMeta, FieldOptions, FileDataSchema, GPUCommandEncoder, GPURenderPassEncoder, GPUTexture, GPUTextureView, GlobalCompositeOperation, HandleParam, ImageResult, ImageResultSchema, MediaOperation, MultiOutputGenericSchema, NodeInputConnection, NodeOperation, NodeOperationInputs, NodeRenderProps, NodeRendererPlugin, NumberResult, NumberResultSchema, OperationInputsSchema, PercentageSchema, Point2D, SignalResult, SignalResultSchema, SingleOutputGenericSchema, StrokeSchema, TextResult, TextResultSchema, TextureSourceOp, VideoResult, VideoResultSchema, VirtualMediaDataSchema, WebGPUNodeRenderer, WebGPUNodeRendererArgs, WebGPURegistry, audioRegistry, configBuilder, createOutputItemSchema, defineRenderer, effectReach, isHandleConnected, isSignal, registerWebGPURenderer, resolveBoolean, resolveFrameNumber, resolveHandleParam, resolveNumber, resolveParam, resolveSignalField, resolveString, solveHomography, unwrapFrameParam, webgpuRegistry };\n//# sourceMappingURL=index.d.mts.map"],"mappings":";;;;;;;;KA+GKoD,mBAAAA,GAAsBC,UAAAA,CAAWL;KACjCM,sBAAAA,GAAyBD,UAAAA,CAAWZ;KACpCc,gBAAAA,GAAmBF,UAAAA,CAAWf;KAC9BkB,YAAAA,GAAeH,UAAAA,CAAWjB;UACrBF,mCAAmClC,iBAAiBA;;gBAE9CI,iBAAiBqD;;;;;;;;;;;;;;;;;;;;;;;oBAuBbD;;YAERE;wBACYtD,8BAA8B+B,QAAQD;;;;;;;KAOzDyB,WAAAA,eAA0BD;;;;;;KAM1B9C,sCAAsCZ,iBAAiBA,kBAAkB4D,mBAAmBH;UACvFE;;KAELC,sCAAsC5D;OACpCU;WACI0C;QACHE;cACMC;iBACGC;;;SAGRtB,gBAAgBuB;qBACJrD,8BAA8B+B,QAAQD,uCAAuCqB,0CAA0CC,8EAA8EjB;MACpNA;UACIsB,qBAAAA;WACCvC;;;;;;;;KAQNwC,kCAAkC9D,iBAAiBA,6BAA6B+D,kDAAkD3D,iBAAiBqD,mBAAmBI,iCAAiCtB;;;;;;;UAuDlMiC,kBAAAA;mBACS5D;mBACAkD;;;;;cCtFL+L,oBAAoB3C,CAAAA,CAAEY;uBACbZ,CAAAA,CAAE4B;WACd5B,CAAAA,CAAEgC,UAAUhC,CAAAA,CAAEY;WACdZ,CAAAA,CAAEgC,UAAUhC,CAAAA,CAAE+B,QAAQrC,+BAAkDM,CAAAA,CAAEU,IAAAA,CAAKoB,kBAAkBpC;KACvGM,CAAAA,CAAEU,IAAAA,CAAKC;GACTX,CAAAA,CAAEU,IAAAA,CAAKC"}
|
|
1
|
+
{"version":3,"file":"renderer-BVKOQarx.d.mts","names":["MediaOperation","NodeInputConnection","NodeOperation","SignalData","VirtualMediaData","isSignal","resolveBoolean","resolveNumber","resolveParam","resolveString","RenderContextValue","WebGPUNodeRendererArgs","WebGPUNodeRenderer","Parameters","FULLSCREEN_QUAD_WGSL","PREMULTIPLIED_BLEND","GPUBlendState","STRAIGHT_ALPHA_BLEND","FragmentBinding","GPUBindGroupLayoutEntry","Omit","fragmentBindGroupLayout","GPUDevice","GPUBindGroupLayout","texturesLayout","perDevice","T","FullscreenPipelineOptions","GPUShaderModule","GPUPipelineLayout","GPUTextureFormat","createFullscreenPipeline","GPURenderPipeline","DrawChildToTextureOptions","NodeRenderProps","Partial","GPUTexture","drawChildToTexture","GPUTextureView","Promise","beginTargetPass","GPURenderPassEncoder","drawTextureToTarget","signalTiming","NodeSignalData","SignalTextureContext","signalTextureView","drawFullscreenPass","GPUCommandEncoder","GPUBindGroup","Point2D","solveHomography","GPUCommandEncoder$1","globalThis","GPURenderPassEncoder$1","GPUTextureView$1","GPUTexture$1","TOperation","Record","EffectReach","WebGPUNodeRenderFn","AudioProcessorContext","AudioProcessor","Float32Array","resolveFrameNumber","unwrapFrameParam","NodeOperationInputs","HandleParam","SD","resolveHandleParam","resolveSignalField","isHandleConnected","NodeRendererPlugin","defineRenderer","Readonly","WebGPURegistry","webgpuRegistry","registerWebGPURenderer","effectReach","TextureSourceOp","AudioProcessorRegistry","audioRegistry","$","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","U","V","W","X","Y","Z","_","a","b","c","d","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","resolveString","C","registerWebGPURenderer","D","resolveNumber","E","resolveHandleParam","M","webgpuRegistry","N","Point2D","O","resolveParam","P","solveHomography","S","isSignal","T","resolveFrameNumber","U","WebGPUNodeRendererArgs","_","WebGPURegistry","a","GPURenderPassEncoder","b","effectReach","c","HandleParam","d","NodeOperation","f","NodeOperationInputs","g","WebGPUNodeRenderer","h","TextureSourceOp","i","GPUCommandEncoder","j","unwrapFrameParam","k","resolveSignalField","l","MediaOperation","m","NodeRendererPlugin","n","AudioProcessorContext","o","GPUTexture","p","NodeRenderProps","r","EffectReach","s","GPUTextureView","t","AudioProcessor","u","NodeInputConnection","v","audioRegistry","w","resolveBoolean","x","isHandleConnected","y","defineRenderer","_framefields_core0","FileDataSchema","MultiOutputGenericSchema","SingleOutputGenericSchema","VirtualMediaDataSchema","createOutputItemSchema","z","FieldMeta","FieldOptions","ConfigBuilder","TKey","TType","TShape","ZodRawShape","Record","ZodTypeAny","core","$strip","ZodObject","configBuilder","COMPOSITE_OPERATIONS","GlobalCompositeOperation","ZodEnum","ColorSchema","ZodString","ZodOptional","PercentageSchema","ZodNumber","DimensionSchema","AnimationSchema","ZodArray","StrokeSchema","ZodDefault","ImageResultSchema","ZodLiteral","OutputItem","$ZodTypeInternals","ZodType","ZodTuple","ImageResult","infer","VideoResultSchema","VideoResult","AudioResultSchema","AudioResult","TextResultSchema","TextResult","NumberResultSchema","NumberResult","SignalResultSchema","SignalResult","OperationInputsSchema","ZodBoolean","ZodUnknown","ZodNullable","ZodRecord"],"sources":["../../node-sdk/dist/index-BwBRn_wY.d.mts","../../node-sdk/dist/index.d.mts"],"sourcesContent":["import { MediaOperation, NodeInputConnection, NodeOperation, SignalData, VirtualMediaData, isSignal, resolveBoolean, resolveNumber, resolveParam, resolveString } from \"@framefields/core\";\nimport { RenderContextValue } from \"@framefields/webgpu-renderers\";\n\n//#region renderer/gpu.d.ts\n/** The argument object every WebGPU node renderer receives. */\ntype WebGPUNodeRendererArgs = Parameters<WebGPUNodeRenderer>[0];\n/**\n * Full-screen quad vertex stage: a 4-vertex triangle strip (draw(4)) that\n * hands `in.uv` (0,0 top-left → 1,1 bottom-right) to an `fs` reading `VSOut`.\n */\ndeclare const FULLSCREEN_QUAD_WGSL = \"\\nstruct VSOut {\\n @builtin(position) pos : vec4<f32>,\\n @location(0) uv : vec2<f32>,\\n};\\n\\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\\n var pos = array<vec2<f32>, 4>(\\n vec2<f32>(-1.0, 1.0),\\n vec2<f32>(1.0, 1.0),\\n vec2<f32>(-1.0, -1.0),\\n vec2<f32>(1.0, -1.0)\\n );\\n var uv = array<vec2<f32>, 4>(\\n vec2<f32>(0.0, 0.0),\\n vec2<f32>(1.0, 0.0),\\n vec2<f32>(0.0, 1.0),\\n vec2<f32>(1.0, 1.0)\\n );\\n return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);\\n}\\n\";\n/** Premultiplied-alpha \"over\" blending. */\ndeclare const PREMULTIPLIED_BLEND: GPUBlendState;\n/** Straight-alpha color over a premultiplied-alpha accumulation. */\ndeclare const STRAIGHT_ALPHA_BLEND: GPUBlendState;\n/**\n * One bind-group entry, visible to the fragment stage unless it says\n * otherwise: `\"uniform\"` buffer, `\"texture\"` (filterable float 2D) or\n * `\"sampler\"` (filtering), or any other entry minus its binding index.\n */\ntype FragmentBinding = \"uniform\" | \"texture\" | \"sampler\" | Omit<GPUBindGroupLayoutEntry, \"binding\" | \"visibility\"> | Omit<GPUBindGroupLayoutEntry, \"binding\">;\n/** A bind group layout whose entries are bound at 0, 1, 2… in order. */\ndeclare function fragmentBindGroupLayout(device: GPUDevice, bindings: FragmentBinding[], label?: string): GPUBindGroupLayout;\n/** `count` float textures followed by one filtering sampler. */\ndeclare function texturesLayout(device: GPUDevice, count: number): GPUBindGroupLayout;\n/** Memoizes `create` per GPUDevice (resources can't cross devices). */\ndeclare function perDevice<T>(create: (device: GPUDevice) => T): (device: GPUDevice) => T;\ninterface FullscreenPipelineOptions {\n label?: string;\n module: GPUShaderModule;\n layouts: GPUBindGroupLayout[] | GPUPipelineLayout;\n format: GPUTextureFormat;\n blend?: GPUBlendState;\n /** Defaults to \"vs\". */\n vertexEntryPoint?: string;\n /** Defaults to \"fs\". */\n fragmentEntryPoint?: string;\n}\n/** A triangle-strip pipeline drawing one full-screen quad (`draw(4)`). */\ndeclare function createFullscreenPipeline(device: GPUDevice, options: FullscreenPipelineOptions): GPURenderPipeline;\ninterface DrawChildToTextureOptions {\n /** Defaults to the target's size. */\n width?: number;\n height?: number;\n /** Props for the child; defaults to the node's props with the child as media. */\n props?: Partial<NodeRenderProps>;\n /** Textures still in use that the temporary texture must not alias. */\n exclude?: GPUTexture[];\n}\n/**\n * Renders `child` into a cleared temporary texture with an identity\n * transform and a full-size scissor, and returns that texture.\n */\ndeclare function drawChildToTexture(args: WebGPUNodeRendererArgs, child: VirtualMediaData, options?: DrawChildToTextureOptions): Promise<{\n texture: GPUTexture;\n view: GPUTextureView;\n}>;\n/**\n * Opens a \"load\" pass on the node's target and makes it the node's current\n * pass (the caller hands it back to the compositor).\n */\ndeclare function beginTargetPass(args: WebGPUNodeRendererArgs, width?: number, height?: number): GPURenderPassEncoder;\n/** Draws `texture` over the whole target at `opacity` (the node's output). */\ndeclare function drawTextureToTarget(args: WebGPUNodeRendererArgs, texture: GPUTexture, opacity?: number): void;\n/** Clock a signal texture is evaluated at, in seconds. */\ndeclare function signalTiming(props: NodeRenderProps, frame: number, fps: number, fallbackDurationSeconds?: number): {\n elapsedSeconds: number;\n durationSeconds: number;\n};\ntype NodeSignalData = SignalData & {\n nodeId?: string;\n};\ninterface SignalTextureContext {\n args: WebGPUNodeRendererArgs;\n width: number;\n height: number;\n frame: number;\n fps: number;\n elapsedSeconds: number;\n durationSeconds: number;\n}\n/**\n * The texture a bound parameter samples: its own GPU binding, the signal's\n * texture (cached under `sd.nodeId`, else `fallbackId`), or a 1×1 dummy.\n */\ndeclare function signalTextureView(sc: SignalTextureContext, param: {\n hasStaticSig: boolean;\n sd: NodeSignalData | null;\n gpuTextureView?: GPUTextureView;\n}, fallbackId: string): GPUTextureView;\n/** Clears `target` to transparent and draws one full-screen quad into it. */\ndeclare function drawFullscreenPass(encoder: GPUCommandEncoder, target: GPUTextureView, pipeline: GPURenderPipeline, bindGroups: GPUBindGroup[]): void;\n//#endregion\n//#region renderer/homography.d.ts\ninterface Point2D {\n x: number;\n y: number;\n}\n/**\n * Computes an 8-parameter 3x3 homography matrix mapping destination coordinates (quad)\n * to normalized source coordinates (unit square [0, 1]^2).\n *\n * The homography H maps destination (x, y) to source (u, v):\n * u = (h00*x + h01*y + h02) / (h20*x + h21*y + h22)\n * v = (h10*x + h11*y + h12) / (h20*x + h21*y + h22)\n *\n * Resulting array: [h00, h01, h02, h10, h11, h12, h20, h21, 1.0]\n */\ndeclare function solveHomography(dstPoints: Point2D[], srcPoints?: Point2D[]): number[];\n//#endregion\n//#region renderer/index.d.ts\ntype GPUCommandEncoder$1 = globalThis.GPUCommandEncoder;\ntype GPURenderPassEncoder$1 = globalThis.GPURenderPassEncoder;\ntype GPUTextureView$1 = globalThis.GPUTextureView;\ntype GPUTexture$1 = globalThis.GPUTexture;\ninterface NodeRenderProps<TOperation extends MediaOperation = MediaOperation> {\n renderId: string;\n virtualMedia: VirtualMediaData<TOperation>;\n volume?: number;\n playbackRateOverride?: number;\n trimStartOverride?: number;\n trimEndOverride?: number;\n containerWidth: number;\n containerHeight: number;\n opacity?: number;\n frame?: number;\n compositionFrame?: number;\n /** Absolute source time for a remapped media leaf; effect clocks stay unchanged. */\n sourceTimeSec?: number;\n fps?: number;\n elapsedMs?: number;\n durationMs?: number;\n timestampSec?: number;\n renderingContext?: \"visual\" | \"audio\";\n inheritedSeekOffset?: number;\n inheritedClockOffset?: number;\n isHeadless?: boolean;\n forceWait?: boolean;\n isVideoMode?: boolean;\n isPlaying?: boolean;\n excludeTextures?: GPUTexture$1[];\n /** Signal values that override the node's own (text animators read them). */\n signals?: Record<string, unknown>;\n renderChild?: (child: VirtualMediaData, overrides?: Partial<NodeRenderProps>) => unknown;\n}\n/**\n * How far an effect draws past the pixels it is given, px, for one of its\n * operations; `null` when it isn't local (it reads or writes pixels anywhere,\n * like a mirror or a portal) or can't tell (a size driven by a signal).\n */\ntype EffectReach = (operation: Record<string, unknown>) => number | null;\n/**\n * A node's GPU renderer. An effect renderer may carry `reach`: a compositor\n * then runs it over the layer's own region plus that margin instead of the\n * whole target. Without it the effect always gets the whole target.\n */\ntype WebGPUNodeRenderer<TOperation extends MediaOperation = MediaOperation> = WebGPUNodeRenderFn<TOperation> & {\n reach?: EffectReach;\n};\ntype WebGPUNodeRenderFn<TOperation extends MediaOperation> = (args: {\n ctx: RenderContextValue;\n encoder: GPUCommandEncoder$1;\n pass: GPURenderPassEncoder$1;\n targetView: GPUTextureView$1;\n targetTexture: GPUTexture$1;\n targetWidth: number;\n targetHeight: number;\n props: NodeRenderProps<TOperation>;\n drawChild: (child: VirtualMediaData, overrides?: Partial<NodeRenderProps>, targetViewOverride?: GPUTextureView$1, targetTextureOverride?: GPUTexture$1, targetWidthOverride?: number, targetHeightOverride?: number) => Promise<void>;\n}) => Promise<void> | void;\ninterface AudioProcessorContext {\n device?: GPUDevice;\n frame?: number;\n compositionFrame?: number;\n fps?: number;\n elapsedMs?: number;\n durationMs?: number;\n renderId?: string;\n}\ntype AudioProcessor<TOperation extends MediaOperation = MediaOperation> = (channels: Float32Array[], sampleRate: number, virtualMedia: VirtualMediaData<TOperation>, ctx?: AudioProcessorContext) => void | Promise<void>;\n/**\n * A numeric node parameter at `frame`: a number, a signal-like `get(ctx)` or\n * `{ value }`, a `(ctx) => number` function, or anything `Number()` accepts;\n * `fallback` when none of those yields a finite number.\n */\ndeclare function resolveFrameNumber(val: unknown, fallback: number, frame: number, fps: number): number;\n/**\n * A static node parameter at `frame`: calls `get(ctx)` / `(frame, fps)`\n * functions and reads `{ value }` wrappers, keeping a signal's GPU texture\n * binding when it has one. Anything else is returned as-is.\n */\ndeclare function unwrapFrameParam(raw: unknown, frame: number, fps: number): {\n value: unknown;\n gpuTextureView?: GPUTextureView$1;\n};\n/** The `inputs` map node operations carry: one entry per connected handle. */\ntype NodeOperationInputs = Record<string, {\n connectionValid: boolean;\n outputItem: {\n type: string;\n data: unknown;\n } | null;\n}>;\ninterface HandleParam<SD> {\n val: number;\n /** The value comes from a signal (`sd`) sampled on the GPU. */\n hasStaticSig: boolean;\n sd: SD | null;\n handleId: string | null | undefined;\n}\n/**\n * A numeric parameter fed through `handleId`: a connected Number (clamped), a\n * connected Signal (sampled on the GPU, `val` stays `fallbackVal`), or else\n * `fallbackVal` clamped to [clampMin, clampMax].\n */\ndeclare function resolveHandleParam<SD>(inputs: NodeOperationInputs | undefined, handleId: string | null | undefined, fallbackVal: number, clampMin: number, clampMax: number): HandleParam<SD>;\n/**\n * A numeric field `fieldName` of a node operation, fed through its\n * `${fieldName}HandleId` input: a connected Signal/Numeric (`sd`, sampled on\n * the GPU; `value` is its offset), a connected Number, or the operation's own\n * value — each clamped to [minVal, maxVal].\n */\ndeclare function resolveSignalField<SD>(op: {\n inputs?: NodeOperationInputs;\n}, fieldName: string, defaultValue: number, minVal?: number, maxVal?: number): {\n hasSignal: boolean;\n sd: SD | null;\n value: number;\n};\n/**\n * Whether the handle whose id is stored at `op[handleIdKey]` has a valid\n * Signal or Number connection.\n */\ndeclare function isHandleConnected(op: Record<string, unknown>, handleIdKey: string): boolean;\ninterface NodeRendererPlugin {\n WebGPURenderer?: WebGPUNodeRenderer;\n audioProcessor?: AudioProcessor;\n}\ndeclare function defineRenderer(plugin: NodeRendererPlugin): Readonly<NodeRendererPlugin>;\ndeclare class WebGPURegistry {\n private renderers;\n register(op: string, renderer: WebGPUNodeRenderer): void;\n get(op: string): WebGPUNodeRenderer | undefined;\n has(op: string): boolean;\n}\ndeclare const webgpuRegistry: WebGPURegistry;\ndeclare function registerWebGPURenderer(op: string, renderer: WebGPUNodeRenderer): void;\n/**\n * How far an operation's effect draws past its pixels, from its registered\n * renderer; `null` when unknown: no renderer, no `reach`, or no answer.\n */\ndeclare function effectReach(operation: Record<string, unknown>): number | null;\ninterface TextureSourceOp {\n op: \"TextureSource\";\n sourceTexture: GPUTexture$1;\n opacity?: number;\n dataType?: \"Image\";\n}\ndeclare class AudioProcessorRegistry {\n private processors;\n register(opType: string, processor: AudioProcessor): void;\n get(opType: string): AudioProcessor | null;\n}\ndeclare const audioRegistry: AudioProcessorRegistry;\n//#endregion\nexport { texturesLayout as $, resolveString as A, PREMULTIPLIED_BLEND as B, registerWebGPURenderer as C, resolveNumber as D, resolveHandleParam as E, DrawChildToTextureOptions as F, createFullscreenPipeline as G, SignalTextureContext as H, FULLSCREEN_QUAD_WGSL as I, drawTextureToTarget as J, drawChildToTexture as K, FragmentBinding as L, webgpuRegistry as M, Point2D as N, resolveParam as O, solveHomography as P, signalTiming as Q, FullscreenPipelineOptions as R, isSignal as S, resolveFrameNumber as T, WebGPUNodeRendererArgs as U, STRAIGHT_ALPHA_BLEND as V, beginTargetPass as W, perDevice as X, fragmentBindGroupLayout as Y, signalTextureView as Z, WebGPURegistry as _, GPURenderPassEncoder$1 as a, effectReach as b, HandleParam as c, NodeOperation as d, NodeOperationInputs as f, WebGPUNodeRenderer as g, TextureSourceOp as h, GPUCommandEncoder$1 as i, unwrapFrameParam as j, resolveSignalField as k, MediaOperation as l, NodeRendererPlugin as m, AudioProcessorContext as n, GPUTexture$1 as o, NodeRenderProps as p, drawFullscreenPass as q, EffectReach as r, GPUTextureView$1 as s, AudioProcessor as t, NodeInputConnection as u, audioRegistry as v, resolveBoolean as w, isHandleConnected as x, defineRenderer as y, NodeSignalData as z };\n//# sourceMappingURL=index-BwBRn_wY.d.mts.map","import { A as resolveString, C as registerWebGPURenderer, D as resolveNumber, E as resolveHandleParam, M as webgpuRegistry, N as Point2D, O as resolveParam, P as solveHomography, S as isSignal, T as resolveFrameNumber, U as WebGPUNodeRendererArgs, _ as WebGPURegistry, a as GPURenderPassEncoder, b as effectReach, c as HandleParam, d as NodeOperation, f as NodeOperationInputs, g as WebGPUNodeRenderer, h as TextureSourceOp, i as GPUCommandEncoder, j as unwrapFrameParam, k as resolveSignalField, l as MediaOperation, m as NodeRendererPlugin, n as AudioProcessorContext, o as GPUTexture, p as NodeRenderProps, r as EffectReach, s as GPUTextureView, t as AudioProcessor, u as NodeInputConnection, v as audioRegistry, w as resolveBoolean, x as isHandleConnected, y as defineRenderer } from \"./index-BwBRn_wY.mjs\";\nimport * as _framefields_core0 from \"@framefields/core\";\nimport { FileDataSchema, MultiOutputGenericSchema, SingleOutputGenericSchema, VirtualMediaDataSchema, createOutputItemSchema } from \"@framefields/core\";\nimport { z } from \"zod\";\n\n//#region shared/config-builder.d.ts\n\n/**\n * Per-field metadata, attached to the field's zod schema with `.meta()`.\n *\n * It is readable from the schema itself (`z.globalRegistry.get(schema)`) and\n * from `z.toJSONSchema(schema)`, which is what `scripts/generate-effects.mts`\n * uses to emit the authoring classes. Raw `z.object` configs can call\n * `.meta({...})` with these keys directly; `configBuilder().field()` is sugar\n * for the same thing. See `spec/sync-node.md` §5.2.\n */\ninterface FieldMeta {\n label?: string;\n description?: string;\n dataTypes?: string[];\n /** Editor: the node shows an input handle for this field. */\n bindable?: boolean;\n /**\n * Authoring: the prop is typed `EffectProp<T>` (value, signal or frame\n * function). Defaults to `bindable`. Set it explicitly where the two differ.\n */\n signal?: boolean;\n /** Editor wiring only. Excluded from the generated authoring surface. */\n editorOnly?: boolean;\n /** Escape hatch for a value zod cannot type, e.g. a GPU texture handle. */\n tsType?: {\n name: string;\n from: string;\n };\n}\n/** @deprecated Use {@link FieldMeta}. */\ntype FieldOptions = FieldMeta;\ndeclare class ConfigBuilder<TShape extends z.ZodRawShape = Record<string, never>> {\n private shape;\n private options;\n constructor(shape?: TShape, options?: {\n strict?: boolean;\n });\n field<TKey extends string, TType extends z.ZodTypeAny>(key: TKey, schema: TType, options?: FieldMeta): ConfigBuilder<TShape & { [K in TKey]: TType }>;\n build(): {\n schema: z.ZodObject<{ -readonly [P in keyof TShape]: TShape[P] }, z.core.$strip>;\n };\n}\ndeclare function configBuilder(options?: {\n strict?: boolean;\n}): ConfigBuilder<{}>;\n//#endregion\n//#region shared/schemas.d.ts\ndeclare const COMPOSITE_OPERATIONS: readonly [\"source-over\", \"source-in\", \"source-out\", \"source-atop\", \"destination-over\", \"destination-in\", \"destination-out\", \"destination-atop\", \"lighter\", \"copy\", \"xor\", \"multiply\", \"screen\", \"overlay\", \"darken\", \"lighten\", \"color-dodge\", \"color-burn\", \"hard-light\", \"soft-light\", \"difference\", \"exclusion\", \"hue\", \"saturation\", \"color\", \"luminosity\"];\ndeclare const GlobalCompositeOperation: z.ZodEnum<{\n \"source-over\": \"source-over\";\n \"source-in\": \"source-in\";\n \"source-out\": \"source-out\";\n \"source-atop\": \"source-atop\";\n \"destination-over\": \"destination-over\";\n \"destination-in\": \"destination-in\";\n \"destination-out\": \"destination-out\";\n \"destination-atop\": \"destination-atop\";\n lighter: \"lighter\";\n copy: \"copy\";\n xor: \"xor\";\n multiply: \"multiply\";\n screen: \"screen\";\n overlay: \"overlay\";\n darken: \"darken\";\n lighten: \"lighten\";\n \"color-dodge\": \"color-dodge\";\n \"color-burn\": \"color-burn\";\n \"hard-light\": \"hard-light\";\n \"soft-light\": \"soft-light\";\n difference: \"difference\";\n exclusion: \"exclusion\";\n hue: \"hue\";\n saturation: \"saturation\";\n color: \"color\";\n luminosity: \"luminosity\";\n}>;\ndeclare const ColorSchema: z.ZodOptional<z.ZodString>;\ndeclare const PercentageSchema: z.ZodNumber;\ndeclare const DimensionSchema: z.ZodOptional<z.ZodNumber>;\ndeclare const AnimationSchema: z.ZodObject<{\n animations: z.ZodOptional<z.ZodArray<z.ZodObject<{\n id: z.ZodString;\n type: z.ZodEnum<{\n \"fade-in\": \"fade-in\";\n \"fade-out\": \"fade-out\";\n \"slide-in-left\": \"slide-in-left\";\n \"slide-in-right\": \"slide-in-right\";\n \"slide-in-top\": \"slide-in-top\";\n \"slide-in-bottom\": \"slide-in-bottom\";\n \"zoom-in\": \"zoom-in\";\n \"zoom-out\": \"zoom-out\";\n \"rotate-cw\": \"rotate-cw\";\n \"rotate-ccw\": \"rotate-ccw\";\n bounce: \"bounce\";\n shake: \"shake\";\n }>;\n value: z.ZodNumber;\n }, z.core.$strip>>>;\n}, z.core.$strip>;\ndeclare const StrokeSchema: z.ZodObject<{\n stroke: z.ZodOptional<z.ZodString>;\n strokeWidth: z.ZodOptional<z.ZodNumber>;\n strokeAlign: z.ZodDefault<z.ZodOptional<z.ZodEnum<{\n inside: \"inside\";\n center: \"center\";\n outside: \"outside\";\n }>>>;\n strokeRadius: z.ZodOptional<z.ZodNumber>;\n}, z.core.$strip>;\ndeclare const ImageResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Image\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Image\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype ImageResult = z.infer<typeof ImageResultSchema>;\ndeclare const VideoResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Video\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Video\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype VideoResult = z.infer<typeof VideoResultSchema>;\ndeclare const AudioResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Audio\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Audio\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype AudioResult = z.infer<typeof AudioResultSchema>;\ndeclare const TextResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Text\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Text\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype TextResult = z.infer<typeof TextResultSchema>;\ndeclare const NumberResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Number\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Number\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype NumberResult = z.infer<typeof NumberResultSchema>;\ndeclare const SignalResultSchema: z.ZodObject<{\n selectedOutputIndex: z.ZodLiteral<0>;\n outputs: z.ZodTuple<[z.ZodObject<{\n items: z.ZodTuple<[z.ZodType<_framefields_core0.OutputItem<\"Signal\">, unknown, z.core.$ZodTypeInternals<_framefields_core0.OutputItem<\"Signal\">, unknown>>], null>;\n }, z.core.$strip>], null>;\n}, z.core.$strip>;\ntype SignalResult = z.infer<typeof SignalResultSchema>;\n/** The `inputs` map an operation carries: one entry per connected handle. */\ndeclare const OperationInputsSchema: z.ZodRecord<z.ZodString, z.ZodObject<{\n connectionValid: z.ZodBoolean;\n outputItem: z.ZodOptional<z.ZodNullable<z.ZodObject<{\n type: z.ZodString;\n data: z.ZodUnknown;\n }, z.core.$strip>>>;\n}, z.core.$strip>>;\n//#endregion\nexport { AnimationSchema, AudioProcessor, AudioProcessorContext, AudioResult, AudioResultSchema, COMPOSITE_OPERATIONS, ColorSchema, ConfigBuilder, DimensionSchema, EffectReach, FieldMeta, FieldOptions, FileDataSchema, GPUCommandEncoder, GPURenderPassEncoder, GPUTexture, GPUTextureView, GlobalCompositeOperation, HandleParam, ImageResult, ImageResultSchema, MediaOperation, MultiOutputGenericSchema, NodeInputConnection, NodeOperation, NodeOperationInputs, NodeRenderProps, NodeRendererPlugin, NumberResult, NumberResultSchema, OperationInputsSchema, PercentageSchema, Point2D, SignalResult, SignalResultSchema, SingleOutputGenericSchema, StrokeSchema, TextResult, TextResultSchema, TextureSourceOp, VideoResult, VideoResultSchema, VirtualMediaDataSchema, WebGPUNodeRenderer, WebGPUNodeRendererArgs, WebGPURegistry, audioRegistry, configBuilder, createOutputItemSchema, defineRenderer, effectReach, isHandleConnected, isSignal, registerWebGPURenderer, resolveBoolean, resolveFrameNumber, resolveHandleParam, resolveNumber, resolveParam, resolveSignalField, resolveString, solveHomography, unwrapFrameParam, webgpuRegistry };\n//# sourceMappingURL=index.d.mts.map"],"mappings":";;;;;;;;KA+GKoD,mBAAAA,GAAsBC,UAAAA,CAAWL;KACjCM,sBAAAA,GAAyBD,UAAAA,CAAWZ;KACpCc,gBAAAA,GAAmBF,UAAAA,CAAWf;KAC9BkB,YAAAA,GAAeH,UAAAA,CAAWjB;UACrBF,mCAAmClC,iBAAiBA;;gBAE9CI,iBAAiBqD;;;;;;;;;;;;;;;;;;;;;;;oBAuBbD;;YAERE;wBACYtD,8BAA8B+B,QAAQD;;;;;;;KAOzDyB,WAAAA,eAA0BD;;;;;;KAM1B9C,sCAAsCZ,iBAAiBA,kBAAkB4D,mBAAmBH;UACvFE;;KAELC,sCAAsC5D;OACpCU;WACI0C;QACHE;cACMC;iBACGC;;;SAGRtB,gBAAgBuB;qBACJrD,8BAA8B+B,QAAQD,uCAAuCqB,0CAA0CC,8EAA8EjB;MACpNA;UACIsB,qBAAAA;WACCvC;;;;;;;;KAQNwC,kCAAkC9D,iBAAiBA,6BAA6B+D,kDAAkD3D,iBAAiBqD,mBAAmBI,iCAAiCtB;;;;;;;UAuDlMiC,kBAAAA;mBACS5D;mBACAkD;;;;;cCtFL+L,oBAAoB3C,CAAAA,CAAEY;uBACbZ,CAAAA,CAAE4B;WACd5B,CAAAA,CAAEgC,UAAUhC,CAAAA,CAAEY;WACdZ,CAAAA,CAAEgC,UAAUhC,CAAAA,CAAE+B,QAAQrC,+BAAkDM,CAAAA,CAAEU,IAAAA,CAAKoB,kBAAkBpC;KACvGM,CAAAA,CAAEU,IAAAA,CAAKC;GACTX,CAAAA,CAAEU,IAAAA,CAAKC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./chunk-
|
|
2
|
-
import { n as defineRenderer } from "./renderer-
|
|
3
|
-
import "./dist-
|
|
4
|
-
import { c as drawTextureToTarget, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-
|
|
1
|
+
import "./chunk-W71TSjRM.mjs";
|
|
2
|
+
import { n as defineRenderer } from "./renderer-DcvjSolU.mjs";
|
|
3
|
+
import "./dist-CWLLnigL.mjs";
|
|
4
|
+
import { c as drawTextureToTarget, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-CpkJJLQP.mjs";
|
|
5
5
|
|
|
6
6
|
//#region ../../nodes/node-ascii/dist/renderers-Cc5sWRRu.mjs
|
|
7
7
|
const OP = "Ascii";
|
|
@@ -220,4 +220,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: AsciiWebGPURenderer });
|
|
|
220
220
|
|
|
221
221
|
//#endregion
|
|
222
222
|
export { AsciiWebGPURenderer, renderers_default as default };
|
|
223
|
-
//# sourceMappingURL=renderer-
|
|
223
|
+
//# sourceMappingURL=renderer-BaIJIfJ6.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-CwVbHki6.mjs","names":[],"sources":["../../../nodes/node-ascii/dist/renderers-Cc5sWRRu.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst OP = \"Ascii\";\nconst UNIFORM_FLOATS = 16;\n/** One fragment shader per pass; pass 0 reads the layer, later passes read the previous pass. */\nconst PASSES = [`struct U { v : array<vec4<f32>, 4> };\n@group(0) @binding(0) var<uniform> u : U;\n@group(0) @binding(1) var src : texture_2d<f32>;\n@group(0) @binding(2) var prev : texture_2d<f32>;\n@group(0) @binding(3) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn straight(c : vec4<f32>) -> vec4<f32> {\n\tif (c.a <= 0.0001) { return vec4<f32>(0.0); }\n\treturn vec4<f32>(c.rgb / c.a, c.a);\n}\nfn premul(c : vec4<f32>) -> vec4<f32> { return vec4<f32>(c.rgb * c.a, c.a); }\nfn res() -> vec2<f32> { return vec2<f32>(textureDimensions(src)); }\n/** Straight-alpha color of the layer at a uv (filtered). */\nfn sampleS(uv : vec2<f32>) -> vec4<f32> { return straight(textureSampleLevel(src, samp, uv, 0.0)); }\n/** Premultiplied color of the layer at a uv (filtered). */\nfn sampleP(uv : vec2<f32>) -> vec4<f32> { return textureSampleLevel(src, samp, uv, 0.0); }\n/** Straight-alpha color of the layer's texel at a pixel position (nearest). */\nfn texelS(p : vec2<f32>) -> vec4<f32> {\n\tlet d = vec2<i32>(textureDimensions(src));\n\tlet q = clamp(vec2<i32>(floor(p)), vec2<i32>(0), d - vec2<i32>(1));\n\treturn straight(textureLoad(src, q, 0));\n}\nfn luma(c : vec3<f32>) -> f32 { return dot(c, vec3<f32>(0.2126, 0.7152, 0.0722)); }\nfn hash12(p : vec2<f32>) -> f32 {\n\tvar p3 = fract(vec3<f32>(p.xyx) * 0.1031);\n\tp3 += dot(p3, p3.yzx + 33.33);\n\treturn fract((p3.x + p3.y) * p3.z);\n}\nfn vnoise(p : vec2<f32>) -> f32 {\n\tlet i = floor(p);\n\tlet f = fract(p);\n\tlet u = f * f * (3.0 - 2.0 * f);\n\treturn mix(mix(hash12(i), hash12(i + vec2<f32>(1.0, 0.0)), u.x),\n\t\tmix(hash12(i + vec2<f32>(0.0, 1.0)), hash12(i + vec2<f32>(1.0, 1.0)), u.x), u.y);\n}\n/** 8x8 ordered-dither threshold, 0..1. */\nfn bayer8(p : vec2<f32>) -> f32 {\n\tlet x = u32(p.x) & 7u;\n\tlet y = u32(p.y) & 7u;\n\tvar v = 0u;\n\tfor (var k = 0u; k < 3u; k++) {\n\t\tlet bx = (x >> k) & 1u;\n\t\tlet by = (y >> k) & 1u;\n\t\tlet m = ((bx ^ by) << 1u) | by;\n\t\tv += m * (1u << (2u * (2u - k)));\n\t}\n\treturn (f32(v) + 0.5) / 64.0;\n}\nfn rot2(a : f32) -> mat2x2<f32> { let c = cos(a); let s = sin(a); return mat2x2<f32>(c, s, -s, c); }\nconst GLYPH_BITS = array<u32, 10>(0u, 4194304u, 131200u, 14336u, 459200u, 145536u, 332096u, 11512810u, 27070835u, 15652782u);\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet time = u.v[0].x;\n\tlet frame = u.v[0].y;\n\tlet cellSize = u.v[1].x;\n\tlet colorMode = u32(u.v[1].y + 0.5);\n\tlet fg = u.v[2];\n\tlet bg = u.v[3];\n\tlet contrast = u.v[1].z;\n\tlet invert = u.v[1].w;\n\n\tlet R = res();\n\tlet cs = max(cellSize, 2.0);\n\tlet cp = floor(in.uv * R / cs);\n\tlet col = sampleS((cp + 0.5) * cs / R);\n\tvar l = clamp((luma(col.rgb) - 0.5) * contrast + 0.5, 0.0, 1.0) * col.a;\n\tif (invert > 0.5) { l = 1.0 - l; }\n\tlet idx = min(u32(l * 9.999), 9u);\n\tlet f = in.uv * R / cs - cp;\n\tlet gx = i32(floor(f.x * 6.0));\n\tlet gy = i32(floor(f.y * 6.0));\n\tvar on = 0.0;\n\tif (gx < 5 && gy < 5) {\n\t\ton = f32((GLYPH_BITS[idx] >> u32(gy * 5 + gx)) & 1u);\n\t}\n\tvar fgc = fg.rgb;\n\tif (colorMode == 1u) { fgc = col.rgb * 1.25; }\n\tif (colorMode == 2u) { fgc = vec3<f32>(0.25, 1.0, 0.45) * (0.4 + 0.6 * l); }\n\treturn vec4<f32>(mix(bg.rgb, fgc, on), 1.0);\n}\n`];\nconst resources = perDevice((device) => ({\n\tlayout: fragmentBindGroupLayout(device, [\n\t\t\"uniform\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"sampler\"\n\t], `${OP}_layout`),\n\tpipelines: /* @__PURE__ */ new Map(),\n\tsampler: device.createSampler({\n\t\tmagFilter: \"linear\",\n\t\tminFilter: \"linear\",\n\t\taddressModeU: \"clamp-to-edge\",\n\t\taddressModeV: \"clamp-to-edge\"\n\t})\n}));\nfunction pipelinesFor(device, format) {\n\tconst r = resources(device);\n\tlet list = r.pipelines.get(format);\n\tif (!list) {\n\t\tlist = PASSES.map((code, i) => {\n\t\t\tconst module = device.createShaderModule({\n\t\t\t\tcode,\n\t\t\t\tlabel: `${OP}_${i}.wgsl`\n\t\t\t});\n\t\t\treturn device.createRenderPipeline({\n\t\t\t\tlabel: `${OP}_${i}`,\n\t\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [r.layout] }),\n\t\t\t\tvertex: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"vs\"\n\t\t\t\t},\n\t\t\t\tfragment: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"fs\",\n\t\t\t\t\ttargets: [{ format }]\n\t\t\t\t},\n\t\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t\t});\n\t\t});\n\t\tr.pipelines.set(format, list);\n\t}\n\treturn list;\n}\nfunction num(v, fallback) {\n\tconst n = typeof v === \"number\" ? v : Number(v);\n\treturn Number.isFinite(n) ? n : fallback;\n}\nfunction hexToRgba(hex) {\n\tlet h = hex.trim().replace(\"#\", \"\");\n\tif (h.length === 3 || h.length === 4) h = [...h].map((c) => c + c).join(\"\");\n\tconst n = (i) => Number.parseInt(h.slice(i, i + 2), 16) / 255;\n\treturn [\n\t\tn(0),\n\t\tn(2),\n\t\tn(4),\n\t\th.length >= 8 ? n(6) : 1\n\t];\n}\n/** Packs the effect's resolved props into the uniform block the shaders read. */\nfunction pack(raw, data, time, frame) {\n\tdata.fill(0);\n\tdata[0] = time;\n\tdata[1] = frame;\n\tdata[4] = num(raw.cellSize, 10);\n\tdata[5] = Math.max(0, [\n\t\t\"mono\",\n\t\t\"source\",\n\t\t\"green\"\n\t].indexOf(String(raw.colorMode ?? \"mono\")));\n\tdata.set(hexToRgba(String(raw.fg ?? \"#e8e8e8\")), 8);\n\tdata.set(hexToRgba(String(raw.bg ?? \"#0b0b0b\")), 12);\n\tdata[6] = num(raw.contrast, 1.2);\n\tdata[7] = raw.invert === void 0 ? 0 : raw.invert ? 1 : 0;\n}\nconst AsciiWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== OP) return;\n\tconst child = props.virtualMedia?.children?.[0];\n\tif (!child) return;\n\tpass.end();\n\tconst fps = props.fps || 30;\n\tconst frame = Math.round(props.compositionFrame ?? props.frame ?? 0);\n\tconst raw = op.effect?.resolveUniforms ? op.effect.resolveUniforms({\n\t\tframe,\n\t\tfps,\n\t\ttime: frame / fps\n\t}) : op;\n\tconst data = new Float32Array(UNIFORM_FLOATS);\n\tpack(raw, data, frame / fps, frame);\n\tconst { texture: childTex } = await drawChildToTexture(args, child);\n\tconst device = ctx.device;\n\tconst r = resources(device);\n\tconst pipelines = pipelinesFor(device, ctx.renderer.format);\n\tconst ubo = ctx.renderer.getTemporaryBuffer(data);\n\tlet prev = childTex;\n\tfor (const pipeline of pipelines) {\n\t\tconst out = ctx.renderer.getTemporaryTexture(targetWidth, targetHeight, [\n\t\t\tchildTex,\n\t\t\tprev,\n\t\t\ttargetTexture,\n\t\t\t...props.excludeTextures || []\n\t\t]);\n\t\tdrawFullscreenPass(encoder, out.createView(), pipeline, [device.createBindGroup({\n\t\t\tlayout: r.layout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: { buffer: ubo }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: childTex.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: prev.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: r.sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})]);\n\t\tprev = out;\n\t}\n\tdrawTextureToTarget(args, prev);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: AsciiWebGPURenderer });\n\n//#endregion\nexport { AsciiWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-Cc5sWRRu.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-BaIJIfJ6.mjs","names":[],"sources":["../../../nodes/node-ascii/dist/renderers-Cc5sWRRu.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst OP = \"Ascii\";\nconst UNIFORM_FLOATS = 16;\n/** One fragment shader per pass; pass 0 reads the layer, later passes read the previous pass. */\nconst PASSES = [`struct U { v : array<vec4<f32>, 4> };\n@group(0) @binding(0) var<uniform> u : U;\n@group(0) @binding(1) var src : texture_2d<f32>;\n@group(0) @binding(2) var prev : texture_2d<f32>;\n@group(0) @binding(3) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn straight(c : vec4<f32>) -> vec4<f32> {\n\tif (c.a <= 0.0001) { return vec4<f32>(0.0); }\n\treturn vec4<f32>(c.rgb / c.a, c.a);\n}\nfn premul(c : vec4<f32>) -> vec4<f32> { return vec4<f32>(c.rgb * c.a, c.a); }\nfn res() -> vec2<f32> { return vec2<f32>(textureDimensions(src)); }\n/** Straight-alpha color of the layer at a uv (filtered). */\nfn sampleS(uv : vec2<f32>) -> vec4<f32> { return straight(textureSampleLevel(src, samp, uv, 0.0)); }\n/** Premultiplied color of the layer at a uv (filtered). */\nfn sampleP(uv : vec2<f32>) -> vec4<f32> { return textureSampleLevel(src, samp, uv, 0.0); }\n/** Straight-alpha color of the layer's texel at a pixel position (nearest). */\nfn texelS(p : vec2<f32>) -> vec4<f32> {\n\tlet d = vec2<i32>(textureDimensions(src));\n\tlet q = clamp(vec2<i32>(floor(p)), vec2<i32>(0), d - vec2<i32>(1));\n\treturn straight(textureLoad(src, q, 0));\n}\nfn luma(c : vec3<f32>) -> f32 { return dot(c, vec3<f32>(0.2126, 0.7152, 0.0722)); }\nfn hash12(p : vec2<f32>) -> f32 {\n\tvar p3 = fract(vec3<f32>(p.xyx) * 0.1031);\n\tp3 += dot(p3, p3.yzx + 33.33);\n\treturn fract((p3.x + p3.y) * p3.z);\n}\nfn vnoise(p : vec2<f32>) -> f32 {\n\tlet i = floor(p);\n\tlet f = fract(p);\n\tlet u = f * f * (3.0 - 2.0 * f);\n\treturn mix(mix(hash12(i), hash12(i + vec2<f32>(1.0, 0.0)), u.x),\n\t\tmix(hash12(i + vec2<f32>(0.0, 1.0)), hash12(i + vec2<f32>(1.0, 1.0)), u.x), u.y);\n}\n/** 8x8 ordered-dither threshold, 0..1. */\nfn bayer8(p : vec2<f32>) -> f32 {\n\tlet x = u32(p.x) & 7u;\n\tlet y = u32(p.y) & 7u;\n\tvar v = 0u;\n\tfor (var k = 0u; k < 3u; k++) {\n\t\tlet bx = (x >> k) & 1u;\n\t\tlet by = (y >> k) & 1u;\n\t\tlet m = ((bx ^ by) << 1u) | by;\n\t\tv += m * (1u << (2u * (2u - k)));\n\t}\n\treturn (f32(v) + 0.5) / 64.0;\n}\nfn rot2(a : f32) -> mat2x2<f32> { let c = cos(a); let s = sin(a); return mat2x2<f32>(c, s, -s, c); }\nconst GLYPH_BITS = array<u32, 10>(0u, 4194304u, 131200u, 14336u, 459200u, 145536u, 332096u, 11512810u, 27070835u, 15652782u);\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet time = u.v[0].x;\n\tlet frame = u.v[0].y;\n\tlet cellSize = u.v[1].x;\n\tlet colorMode = u32(u.v[1].y + 0.5);\n\tlet fg = u.v[2];\n\tlet bg = u.v[3];\n\tlet contrast = u.v[1].z;\n\tlet invert = u.v[1].w;\n\n\tlet R = res();\n\tlet cs = max(cellSize, 2.0);\n\tlet cp = floor(in.uv * R / cs);\n\tlet col = sampleS((cp + 0.5) * cs / R);\n\tvar l = clamp((luma(col.rgb) - 0.5) * contrast + 0.5, 0.0, 1.0) * col.a;\n\tif (invert > 0.5) { l = 1.0 - l; }\n\tlet idx = min(u32(l * 9.999), 9u);\n\tlet f = in.uv * R / cs - cp;\n\tlet gx = i32(floor(f.x * 6.0));\n\tlet gy = i32(floor(f.y * 6.0));\n\tvar on = 0.0;\n\tif (gx < 5 && gy < 5) {\n\t\ton = f32((GLYPH_BITS[idx] >> u32(gy * 5 + gx)) & 1u);\n\t}\n\tvar fgc = fg.rgb;\n\tif (colorMode == 1u) { fgc = col.rgb * 1.25; }\n\tif (colorMode == 2u) { fgc = vec3<f32>(0.25, 1.0, 0.45) * (0.4 + 0.6 * l); }\n\treturn vec4<f32>(mix(bg.rgb, fgc, on), 1.0);\n}\n`];\nconst resources = perDevice((device) => ({\n\tlayout: fragmentBindGroupLayout(device, [\n\t\t\"uniform\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"sampler\"\n\t], `${OP}_layout`),\n\tpipelines: /* @__PURE__ */ new Map(),\n\tsampler: device.createSampler({\n\t\tmagFilter: \"linear\",\n\t\tminFilter: \"linear\",\n\t\taddressModeU: \"clamp-to-edge\",\n\t\taddressModeV: \"clamp-to-edge\"\n\t})\n}));\nfunction pipelinesFor(device, format) {\n\tconst r = resources(device);\n\tlet list = r.pipelines.get(format);\n\tif (!list) {\n\t\tlist = PASSES.map((code, i) => {\n\t\t\tconst module = device.createShaderModule({\n\t\t\t\tcode,\n\t\t\t\tlabel: `${OP}_${i}.wgsl`\n\t\t\t});\n\t\t\treturn device.createRenderPipeline({\n\t\t\t\tlabel: `${OP}_${i}`,\n\t\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [r.layout] }),\n\t\t\t\tvertex: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"vs\"\n\t\t\t\t},\n\t\t\t\tfragment: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"fs\",\n\t\t\t\t\ttargets: [{ format }]\n\t\t\t\t},\n\t\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t\t});\n\t\t});\n\t\tr.pipelines.set(format, list);\n\t}\n\treturn list;\n}\nfunction num(v, fallback) {\n\tconst n = typeof v === \"number\" ? v : Number(v);\n\treturn Number.isFinite(n) ? n : fallback;\n}\nfunction hexToRgba(hex) {\n\tlet h = hex.trim().replace(\"#\", \"\");\n\tif (h.length === 3 || h.length === 4) h = [...h].map((c) => c + c).join(\"\");\n\tconst n = (i) => Number.parseInt(h.slice(i, i + 2), 16) / 255;\n\treturn [\n\t\tn(0),\n\t\tn(2),\n\t\tn(4),\n\t\th.length >= 8 ? n(6) : 1\n\t];\n}\n/** Packs the effect's resolved props into the uniform block the shaders read. */\nfunction pack(raw, data, time, frame) {\n\tdata.fill(0);\n\tdata[0] = time;\n\tdata[1] = frame;\n\tdata[4] = num(raw.cellSize, 10);\n\tdata[5] = Math.max(0, [\n\t\t\"mono\",\n\t\t\"source\",\n\t\t\"green\"\n\t].indexOf(String(raw.colorMode ?? \"mono\")));\n\tdata.set(hexToRgba(String(raw.fg ?? \"#e8e8e8\")), 8);\n\tdata.set(hexToRgba(String(raw.bg ?? \"#0b0b0b\")), 12);\n\tdata[6] = num(raw.contrast, 1.2);\n\tdata[7] = raw.invert === void 0 ? 0 : raw.invert ? 1 : 0;\n}\nconst AsciiWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== OP) return;\n\tconst child = props.virtualMedia?.children?.[0];\n\tif (!child) return;\n\tpass.end();\n\tconst fps = props.fps || 30;\n\tconst frame = Math.round(props.compositionFrame ?? props.frame ?? 0);\n\tconst raw = op.effect?.resolveUniforms ? op.effect.resolveUniforms({\n\t\tframe,\n\t\tfps,\n\t\ttime: frame / fps\n\t}) : op;\n\tconst data = new Float32Array(UNIFORM_FLOATS);\n\tpack(raw, data, frame / fps, frame);\n\tconst { texture: childTex } = await drawChildToTexture(args, child);\n\tconst device = ctx.device;\n\tconst r = resources(device);\n\tconst pipelines = pipelinesFor(device, ctx.renderer.format);\n\tconst ubo = ctx.renderer.getTemporaryBuffer(data);\n\tlet prev = childTex;\n\tfor (const pipeline of pipelines) {\n\t\tconst out = ctx.renderer.getTemporaryTexture(targetWidth, targetHeight, [\n\t\t\tchildTex,\n\t\t\tprev,\n\t\t\ttargetTexture,\n\t\t\t...props.excludeTextures || []\n\t\t]);\n\t\tdrawFullscreenPass(encoder, out.createView(), pipeline, [device.createBindGroup({\n\t\t\tlayout: r.layout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: { buffer: ubo }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: childTex.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: prev.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: r.sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})]);\n\t\tprev = out;\n\t}\n\tdrawTextureToTarget(args, prev);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: AsciiWebGPURenderer });\n\n//#endregion\nexport { AsciiWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-Cc5sWRRu.mjs.map"],"mappings":";;;;;;AAIA,MAAM,KAAK;AACX,MAAM,iBAAiB;;AAEvB,MAAM,SAAS,CAAC;;;;;EAKd,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2ErB;AACF,MAAM,YAAY,WAAW,YAAY;CACxC,QAAQ,wBAAwB,QAAQ;EACvC;EACA;EACA;EACA;EACA,EAAE,GAAG,GAAG,SAAS;CAClB,2BAA2B,IAAI,KAAK;CACpC,SAAS,OAAO,cAAc;EAC7B,WAAW;EACX,WAAW;EACX,cAAc;EACd,cAAc;EACd,CAAC;CACF,EAAE;AACH,SAAS,aAAa,QAAQ,QAAQ;CACrC,MAAM,IAAI,UAAU,OAAO;CAC3B,IAAI,OAAO,EAAE,UAAU,IAAI,OAAO;AAClC,KAAI,CAAC,MAAM;AACV,SAAO,OAAO,KAAK,MAAM,MAAM;GAC9B,MAAM,SAAS,OAAO,mBAAmB;IACxC;IACA,OAAO,GAAG,GAAG,GAAG,EAAE;IAClB,CAAC;AACF,UAAO,OAAO,qBAAqB;IAClC,OAAO,GAAG,GAAG,GAAG;IAChB,QAAQ,OAAO,qBAAqB,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC;IACrE,QAAQ;KACP;KACA,YAAY;KACZ;IACD,UAAU;KACT;KACA,YAAY;KACZ,SAAS,CAAC,EAAE,QAAQ,CAAC;KACrB;IACD,WAAW,EAAE,UAAU,kBAAkB;IACzC,CAAC;IACD;AACF,IAAE,UAAU,IAAI,QAAQ,KAAK;;AAE9B,QAAO;;AAER,SAAS,IAAI,GAAG,UAAU;CACzB,MAAM,IAAI,OAAO,MAAM,WAAW,IAAI,OAAO,EAAE;AAC/C,QAAO,OAAO,SAAS,EAAE,GAAG,IAAI;;AAEjC,SAAS,UAAU,KAAK;CACvB,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG;AACnC,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,EAAG,KAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,IAAI,EAAE,CAAC,KAAK,GAAG;CAC3E,MAAM,KAAK,MAAM,OAAO,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG;AAC1D,QAAO;EACN,EAAE,EAAE;EACJ,EAAE,EAAE;EACJ,EAAE,EAAE;EACJ,EAAE,UAAU,IAAI,EAAE,EAAE,GAAG;EACvB;;;AAGF,SAAS,KAAK,KAAK,MAAM,MAAM,OAAO;AACrC,MAAK,KAAK,EAAE;AACZ,MAAK,KAAK;AACV,MAAK,KAAK;AACV,MAAK,KAAK,IAAI,IAAI,UAAU,GAAG;AAC/B,MAAK,KAAK,KAAK,IAAI,GAAG;EACrB;EACA;EACA;EACA,CAAC,QAAQ,OAAO,IAAI,aAAa,OAAO,CAAC,CAAC;AAC3C,MAAK,IAAI,UAAU,OAAO,IAAI,MAAM,UAAU,CAAC,EAAE,EAAE;AACnD,MAAK,IAAI,UAAU,OAAO,IAAI,MAAM,UAAU,CAAC,EAAE,GAAG;AACpD,MAAK,KAAK,IAAI,IAAI,UAAU,IAAI;AAChC,MAAK,KAAK,IAAI,WAAW,KAAK,IAAI,IAAI,IAAI,SAAS,IAAI;;AAExD,MAAM,sBAAsB,OAAO,SAAS;CAC3C,MAAM,EAAE,KAAK,SAAS,MAAM,eAAe,aAAa,cAAc,UAAU;CAChF,MAAM,KAAK,MAAM,cAAc;AAC/B,KAAI,IAAI,OAAO,GAAI;CACnB,MAAM,QAAQ,MAAM,cAAc,WAAW;AAC7C,KAAI,CAAC,MAAO;AACZ,MAAK,KAAK;CACV,MAAM,MAAM,MAAM,OAAO;CACzB,MAAM,QAAQ,KAAK,MAAM,MAAM,oBAAoB,MAAM,SAAS,EAAE;CACpE,MAAM,MAAM,GAAG,QAAQ,kBAAkB,GAAG,OAAO,gBAAgB;EAClE;EACA;EACA,MAAM,QAAQ;EACd,CAAC,GAAG;CACL,MAAM,OAAO,IAAI,aAAa,eAAe;AAC7C,MAAK,KAAK,MAAM,QAAQ,KAAK,MAAM;CACnC,MAAM,EAAE,SAAS,aAAa,MAAM,mBAAmB,MAAM,MAAM;CACnE,MAAM,SAAS,IAAI;CACnB,MAAM,IAAI,UAAU,OAAO;CAC3B,MAAM,YAAY,aAAa,QAAQ,IAAI,SAAS,OAAO;CAC3D,MAAM,MAAM,IAAI,SAAS,mBAAmB,KAAK;CACjD,IAAI,OAAO;AACX,MAAK,MAAM,YAAY,WAAW;EACjC,MAAM,MAAM,IAAI,SAAS,oBAAoB,aAAa,cAAc;GACvE;GACA;GACA;GACA,GAAG,MAAM,mBAAmB,EAAE;GAC9B,CAAC;AACF,qBAAmB,SAAS,IAAI,YAAY,EAAE,UAAU,CAAC,OAAO,gBAAgB;GAC/E,QAAQ,EAAE;GACV,SAAS;IACR;KACC,SAAS;KACT,UAAU,EAAE,QAAQ,KAAK;KACzB;IACD;KACC,SAAS;KACT,UAAU,SAAS,YAAY;KAC/B;IACD;KACC,SAAS;KACT,UAAU,KAAK,YAAY;KAC3B;IACD;KACC,SAAS;KACT,UAAU,EAAE;KACZ;IACD;GACD,CAAC,CAAC,CAAC;AACJ,SAAO;;AAER,qBAAoB,MAAM,KAAK;;AAKhC,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,qBAAqB,CAAC"}
|