framefields 2.12.0 → 2.13.1
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 -4
- package/dist/audio/index.d.mts +6 -5
- package/dist/audio/index.mjs +13 -13
- package/dist/{audio-afTBdB3U.d.mts → audio-C4B9p_yq.d.mts} +3 -4
- package/dist/audio-C4B9p_yq.d.mts.map +1 -0
- package/dist/{audio-DHLoNcxD.mjs → audio-DIvi6hTD.mjs} +4 -4
- package/dist/{audio-DHLoNcxD.mjs.map → audio-DIvi6hTD.mjs.map} +1 -1
- package/dist/{audio-KHBadECb.mjs → audio-DS9Jg2ls.mjs} +1 -1
- package/dist/{audio-KHBadECb.mjs.map → audio-DS9Jg2ls.mjs.map} +1 -1
- package/dist/{check-result-Culfu7Nx.mjs → check-result-DZWx73V8.mjs} +1 -1
- package/dist/{check-result-Culfu7Nx.mjs.map → check-result-DZWx73V8.mjs.map} +1 -1
- package/dist/cli/check-worker.mjs +51 -51
- package/dist/cli/check-worker.mjs.map +1 -1
- package/dist/cli/local-worker.d.mts +28 -0
- package/dist/cli/local-worker.d.mts.map +1 -0
- package/dist/cli/local-worker.mjs +83 -0
- package/dist/cli/local-worker.mjs.map +1 -0
- package/dist/cli.mjs +229 -54
- package/dist/cli.mjs.map +1 -1
- package/dist/cloud/index.d.mts +2 -0
- package/dist/cloud/index.d.mts.map +1 -1
- package/dist/cloud/index.mjs +1 -1
- package/dist/{cloud-COid1Ipa.mjs → cloud-Cj1TIme8.mjs} +306 -7
- package/dist/cloud-Cj1TIme8.mjs.map +1 -0
- package/dist/components/index.d.mts +15 -14
- package/dist/components/index.mjs +47 -47
- package/dist/{dist-CySGkG54.mjs → dist-BSKAbyea.mjs} +2 -2
- package/dist/{dist-CySGkG54.mjs.map → dist-BSKAbyea.mjs.map} +1 -1
- package/dist/{dist-BwtxciN4.mjs → dist-B_rSWeOz.mjs} +1 -1
- package/dist/{dist-Bf2_efYP.mjs → dist-C8XSqfTx.mjs} +1 -1
- package/dist/{dist-Bf2_efYP.mjs.map → dist-C8XSqfTx.mjs.map} +1 -1
- package/dist/{dist-BSqeChht.mjs → dist-CCrYOkcc.mjs} +145 -84
- package/dist/dist-CCrYOkcc.mjs.map +1 -0
- package/dist/dist-CiTgmfUw.mjs +502 -0
- package/dist/dist-CiTgmfUw.mjs.map +1 -0
- package/dist/{dist-BIE8fvlv.mjs → dist-DgZpN6IK.mjs} +1 -1
- package/dist/{dist-BIE8fvlv.mjs.map → dist-DgZpN6IK.mjs.map} +1 -1
- package/dist/{dist-B-OPY7Cs.mjs → dist-DtPPPsZV.mjs} +356 -145
- package/dist/dist-DtPPPsZV.mjs.map +1 -0
- package/dist/{dist-2_lT3Dwc.mjs → dist-Kbf-JTry.mjs} +2 -2
- package/dist/{dist-2_lT3Dwc.mjs.map → dist-Kbf-JTry.mjs.map} +1 -1
- package/dist/effects/index.d.mts +6 -6
- package/dist/effects/index.mjs +36 -36
- package/dist/{effects-C8CL9cOq.mjs → effects-B-L3rLs6.mjs} +3 -3
- package/dist/{effects-C8CL9cOq.mjs.map → effects-B-L3rLs6.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +3 -3
- package/dist/{fonts-BQrDjnpV.mjs → fonts-k5ll8NTE.mjs} +2 -2
- package/dist/{fonts-BQrDjnpV.mjs.map → fonts-k5ll8NTE.mjs.map} +1 -1
- package/dist/{gpu-DHa-3Dou.mjs → gpu-D2HT3KcE.mjs} +2 -2
- package/dist/{gpu-DHa-3Dou.mjs.map → gpu-D2HT3KcE.mjs.map} +1 -1
- package/dist/{index-CTv9ZieD.d.mts → index-B08eSpaI.d.mts} +3 -30
- package/dist/index-B08eSpaI.d.mts.map +1 -0
- package/dist/index-BFTtXosj.d.mts +63 -0
- package/dist/index-BFTtXosj.d.mts.map +1 -0
- package/dist/{index-Drk6HC2k.d.mts → index-BGlaws7-.d.mts} +3 -3
- package/dist/{index-Drk6HC2k.d.mts.map → index-BGlaws7-.d.mts.map} +1 -1
- package/dist/{index-CAuNuvIg.d.mts → index-ByhlTwxh.d.mts} +5 -5
- package/dist/{index-CAuNuvIg.d.mts.map → index-ByhlTwxh.d.mts.map} +1 -1
- package/dist/{index-Fliv2Z-w.d.mts → index-C2yaponf.d.mts} +132 -7
- package/dist/index-C2yaponf.d.mts.map +1 -0
- package/dist/{index-BW0Q1ygn.d.mts → index-C5sgRLlG.d.mts} +1 -1
- package/dist/{index-BW0Q1ygn.d.mts.map → index-C5sgRLlG.d.mts.map} +1 -1
- package/dist/{index-CdCrae-I.d.mts → index-CnZhBlob.d.mts} +2 -2
- package/dist/index-CnZhBlob.d.mts.map +1 -0
- package/dist/{index-BNClElng.d.mts → index-CtKUQ2VG.d.mts} +281 -283
- package/dist/index-CtKUQ2VG.d.mts.map +1 -0
- package/dist/{index-WwuuX8ZJ.d.mts → index-DBh3WphX.d.mts} +2 -2
- package/dist/{index-WwuuX8ZJ.d.mts.map → index-DBh3WphX.d.mts.map} +1 -1
- package/dist/{index-gOVtTm-P.d.mts → index-DQ1U3HC3.d.mts} +14 -6
- package/dist/index-DQ1U3HC3.d.mts.map +1 -0
- package/dist/{index-COYNQ_mf.d.mts → index-a6JrbAK0.d.mts} +1 -1
- package/dist/{index-COYNQ_mf.d.mts.map → index-a6JrbAK0.d.mts.map} +1 -1
- package/dist/{index-DQa7mhzq.d.mts → index-rtCXNxGO.d.mts} +2 -2
- package/dist/{index-DQa7mhzq.d.mts.map → index-rtCXNxGO.d.mts.map} +1 -1
- package/dist/index.d.mts +16 -15
- package/dist/index.mjs +58 -58
- package/dist/preview/index.d.mts +5 -4
- package/dist/preview/index.mjs +12 -12
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-FJTURGJV.mjs → chunk-3C2XT64C.mjs} +1 -1
- package/dist/preview-engine/chunk-52X7SURQ.mjs +494 -0
- package/dist/preview-engine/{chunk-4JNIEQS2.mjs → chunk-5ZS46EFB.mjs} +1 -1
- package/dist/preview-engine/{chunk-KBCZKIIQ.mjs → chunk-CYM75INB.mjs} +1 -1
- package/dist/preview-engine/chunk-FZ4RD7HV.mjs +1 -0
- package/dist/preview-engine/chunk-LZNHGH56.mjs +5 -0
- package/dist/preview-engine/{chunk-RGKS6YIA.mjs → chunk-N2VISDTG.mjs} +1 -1
- package/dist/preview-engine/chunk-N3XTDAL6.mjs +2227 -0
- package/dist/preview-engine/{chunk-O75BFM4S.mjs → chunk-NVXFEDJS.mjs} +1 -1
- package/dist/preview-engine/chunk-OBIJIQCZ.mjs +1 -0
- package/dist/preview-engine/{chunk-VUO4K52B.mjs → chunk-PD2HKW2S.mjs} +1 -1
- package/dist/preview-engine/{chunk-HTAHYSCW.mjs → chunk-R4H52Q7S.mjs} +1 -1
- package/dist/preview-engine/{chunk-6O7UDVNL.mjs → chunk-RYSV44B4.mjs} +1 -1
- package/dist/preview-engine/{chunk-TKXOSEIJ.mjs → chunk-SV3ZNZQU.mjs} +1 -1
- package/dist/preview-engine/{chunk-JAUMCOOJ.mjs → chunk-UBY2UYEL.mjs} +1 -1
- package/dist/preview-engine/{chunk-32WC4FRR.mjs → chunk-UE7Y65C3.mjs} +3 -3
- package/dist/preview-engine/{chunk-M4QVCQ3O.mjs → chunk-VMXJZ4KQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-EYKN2VET.mjs → chunk-XCPRRMMW.mjs} +31 -31
- 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 +5 -5
- package/dist/preview-engine/{renderers-L6GFGHS6.mjs → renderers-AFTUFMQQ.mjs} +1 -1
- package/dist/preview-engine/renderers-DU7KPFVV.mjs +1 -1
- package/dist/preview-engine/{renderers-PREFONJG.mjs → renderers-EPSF5CSQ.mjs} +1 -1
- package/dist/preview-engine/{renderers-R22CDFO4.mjs → renderers-OJWWIVNW.mjs} +1 -1
- package/dist/preview-engine/{renderers-TS32FDV7.mjs → renderers-RHMRWX46.mjs} +1 -1
- package/dist/preview-engine/renderers-VEHYARKY.mjs +1 -0
- package/dist/preview-engine/renderers-VRXAG3FR.mjs +1 -0
- package/dist/preview-engine/renderers-ZHSOWEMQ.mjs +1 -0
- package/dist/preview-engine/renderers-ZMDRNYSS.mjs +1 -0
- package/dist/preview-engine/renderers-ZMMQ7S2A.mjs +228 -0
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/preview-engine/{src-GPF7RIBU.mjs → src-YXNX4MLK.mjs} +1 -1
- package/dist/{preview-BUtt481A.mjs → preview-lHH8Tv4j.mjs} +323 -35
- package/dist/preview-lHH8Tv4j.mjs.map +1 -0
- package/dist/{program-Cvv_nb9T.mjs → program-BfiB9ttP.mjs} +17 -4
- package/dist/program-BfiB9ttP.mjs.map +1 -0
- package/dist/renderer/index.d.mts +4 -3
- package/dist/renderer/index.mjs +3 -3
- package/dist/renderer-0rLmztAv.mjs +5 -0
- package/dist/{renderer-D3QPNBEj.mjs → renderer-4nsuReW2.mjs} +5 -5
- package/dist/{renderer-D3QPNBEj.mjs.map → renderer-4nsuReW2.mjs.map} +1 -1
- package/dist/{renderer-DO1SZ5xY.mjs → renderer-7xQmXXMH.mjs} +5 -5
- package/dist/{renderer-DO1SZ5xY.mjs.map → renderer-7xQmXXMH.mjs.map} +1 -1
- package/dist/renderer-B0pjOXFY.mjs +5 -0
- package/dist/{renderer-BSsKlcHk.mjs → renderer-B10HDC13.mjs} +5 -5
- package/dist/{renderer-BSsKlcHk.mjs.map → renderer-B10HDC13.mjs.map} +1 -1
- package/dist/{renderer-DaY04IyU.mjs → renderer-B2IUPjhw.mjs} +5 -5
- package/dist/{renderer-DaY04IyU.mjs.map → renderer-B2IUPjhw.mjs.map} +1 -1
- package/dist/{renderer-O4y02xkD.mjs → renderer-B3_GddgJ.mjs} +4 -4
- package/dist/{renderer-O4y02xkD.mjs.map → renderer-B3_GddgJ.mjs.map} +1 -1
- package/dist/{renderer-DQJHjU0L.mjs → renderer-B3un4Pdi.mjs} +5 -5
- package/dist/{renderer-DQJHjU0L.mjs.map → renderer-B3un4Pdi.mjs.map} +1 -1
- package/dist/{renderer-PnnkUWm-.mjs → renderer-B6bK9rXm.mjs} +4 -4
- package/dist/{renderer-PnnkUWm-.mjs.map → renderer-B6bK9rXm.mjs.map} +1 -1
- package/dist/renderer-B7J13reL.mjs +5 -0
- package/dist/{renderer-HXw4cJZx.mjs → renderer-BEhZiOT4.mjs} +3 -3
- package/dist/{renderer-HXw4cJZx.mjs.map → renderer-BEhZiOT4.mjs.map} +1 -1
- package/dist/{renderer-xNOKSN3V.mjs → renderer-BEuXJY-C.mjs} +5 -5
- package/dist/{renderer-xNOKSN3V.mjs.map → renderer-BEuXJY-C.mjs.map} +1 -1
- package/dist/{renderer-IAffbHXx.mjs → renderer-BGchUBW_.mjs} +4 -4
- package/dist/{renderer-IAffbHXx.mjs.map → renderer-BGchUBW_.mjs.map} +1 -1
- package/dist/{renderer-CZClDMgF.mjs → renderer-BIKkxw_Z.mjs} +5 -5
- package/dist/{renderer-CZClDMgF.mjs.map → renderer-BIKkxw_Z.mjs.map} +1 -1
- package/dist/{renderer-BvRM3OZ6.mjs → renderer-BM19iK8v.mjs} +3 -3
- package/dist/{renderer-BvRM3OZ6.mjs.map → renderer-BM19iK8v.mjs.map} +1 -1
- package/dist/{renderer-CtpEzVBn.mjs → renderer-BOlHW3Mi.mjs} +3 -3
- package/dist/{renderer-CtpEzVBn.mjs.map → renderer-BOlHW3Mi.mjs.map} +1 -1
- package/dist/renderer-BPGIKGgl.mjs +5 -0
- package/dist/{renderer-4uZGSmUD.mjs → renderer-BTwuM9u-.mjs} +5 -5
- package/dist/{renderer-4uZGSmUD.mjs.map → renderer-BTwuM9u-.mjs.map} +1 -1
- package/dist/{renderer-DO_zXwMJ.mjs → renderer-BZMh2io2.mjs} +5 -5
- package/dist/{renderer-DO_zXwMJ.mjs.map → renderer-BZMh2io2.mjs.map} +1 -1
- package/dist/{renderer-rKw5_EjG.mjs → renderer-BZX932Lj.mjs} +4 -4
- package/dist/{renderer-rKw5_EjG.mjs.map → renderer-BZX932Lj.mjs.map} +1 -1
- package/dist/{renderer-5fGj_tqN.mjs → renderer-BhcTYhaP.mjs} +6 -6
- package/dist/{renderer-5fGj_tqN.mjs.map → renderer-BhcTYhaP.mjs.map} +1 -1
- package/dist/{renderer-DL3o_lG1.mjs → renderer-BmyFfvVA.mjs} +5 -5
- package/dist/{renderer-DL3o_lG1.mjs.map → renderer-BmyFfvVA.mjs.map} +1 -1
- package/dist/{renderer-DX60Kr20.mjs → renderer-BrEeUw7T.mjs} +3 -3
- package/dist/{renderer-DX60Kr20.mjs.map → renderer-BrEeUw7T.mjs.map} +1 -1
- package/dist/{renderer-Bf7Z7WT5.mjs → renderer-BsrKj6Td.mjs} +4 -4
- package/dist/{renderer-Bf7Z7WT5.mjs.map → renderer-BsrKj6Td.mjs.map} +1 -1
- package/dist/{renderer-BOg8i8eF.mjs → renderer-BuvKGwk3.mjs} +1 -1
- package/dist/{renderer-BOg8i8eF.mjs.map → renderer-BuvKGwk3.mjs.map} +1 -1
- package/dist/renderer-Bv-Artj1.mjs +5 -0
- package/dist/{renderer-_KIBvES8.mjs → renderer-BvBqTAtk.mjs} +5 -5
- package/dist/{renderer-_KIBvES8.mjs.map → renderer-BvBqTAtk.mjs.map} +1 -1
- package/dist/renderer-BvLjbhcL.mjs +5 -0
- package/dist/{renderer-BC_Nse6h.mjs → renderer-Bw-_GZVw.mjs} +4 -4
- package/dist/{renderer-BC_Nse6h.mjs.map → renderer-Bw-_GZVw.mjs.map} +1 -1
- package/dist/{renderer-CLTRTtQ8.mjs → renderer-Bw0O--gW.mjs} +5 -5
- package/dist/{renderer-CLTRTtQ8.mjs.map → renderer-Bw0O--gW.mjs.map} +1 -1
- package/dist/renderer-By6awWaf.mjs +5 -0
- package/dist/{renderer-DsPLMzy1.mjs → renderer-C-3qhk5x.mjs} +2 -2
- package/dist/{renderer-DsPLMzy1.mjs.map → renderer-C-3qhk5x.mjs.map} +1 -1
- package/dist/renderer-C0rvsz7m.mjs +5 -0
- package/dist/{renderer-DP9ScNM6.mjs → renderer-C4hd6Cqi.mjs} +3 -3
- package/dist/{renderer-DP9ScNM6.mjs.map → renderer-C4hd6Cqi.mjs.map} +1 -1
- package/dist/{renderer-B09I95bo.mjs → renderer-C64_B8It.mjs} +3 -3
- package/dist/{renderer-DrL3J9ci.mjs → renderer-C98XwEIr.mjs} +4 -4
- package/dist/{renderer-DrL3J9ci.mjs.map → renderer-C98XwEIr.mjs.map} +1 -1
- package/dist/{renderer-6g1ri445.mjs → renderer-CC22Djgi.mjs} +5 -5
- package/dist/{renderer-6g1ri445.mjs.map → renderer-CC22Djgi.mjs.map} +1 -1
- package/dist/renderer-CDgud_HB.mjs +5 -0
- package/dist/renderer-CDiRF3bG.mjs +6 -0
- package/dist/{renderer-FvvywNvv.mjs → renderer-CHCRcCKw.mjs} +3 -3
- package/dist/{renderer-FvvywNvv.mjs.map → renderer-CHCRcCKw.mjs.map} +1 -1
- package/dist/renderer-CIIEQd4B.mjs +5 -0
- package/dist/renderer-CJblwOA9.mjs +5 -0
- package/dist/renderer-CNMOXtXE.mjs +5 -0
- package/dist/{renderer-D3YbHjRG.mjs → renderer-CO4NGvAh.mjs} +95 -80
- package/dist/renderer-CO4NGvAh.mjs.map +1 -0
- package/dist/{renderer-ByFPmHBC.mjs → renderer-CO9vE3sd.mjs} +4 -4
- package/dist/{renderer-ByFPmHBC.mjs.map → renderer-CO9vE3sd.mjs.map} +1 -1
- package/dist/renderer-COeSeNGg.mjs +5 -0
- package/dist/{renderer-CN-mCIoI.mjs → renderer-CQ4h8n7p.mjs} +5 -5
- package/dist/{renderer-CN-mCIoI.mjs.map → renderer-CQ4h8n7p.mjs.map} +1 -1
- package/dist/{renderer-DEoerd-j.mjs → renderer-CRhEGqW4.mjs} +4 -4
- package/dist/{renderer-DEoerd-j.mjs.map → renderer-CRhEGqW4.mjs.map} +1 -1
- package/dist/{renderer-CiHVnhUk.mjs → renderer-CSu_vYPn.mjs} +5 -5
- package/dist/{renderer-CiHVnhUk.mjs.map → renderer-CSu_vYPn.mjs.map} +1 -1
- package/dist/{renderer-BJEexai1.mjs → renderer-CU6WT5jW.mjs} +5 -5
- package/dist/{renderer-BJEexai1.mjs.map → renderer-CU6WT5jW.mjs.map} +1 -1
- package/dist/renderer-CUfElmtZ.mjs +5 -0
- package/dist/{renderer-BwJ0nXXu.mjs → renderer-CXrnzihz.mjs} +5 -5
- package/dist/{renderer-BwJ0nXXu.mjs.map → renderer-CXrnzihz.mjs.map} +1 -1
- package/dist/renderer-CYh2lFoJ.mjs +5 -0
- package/dist/renderer-CYtVZYMH.mjs +5 -0
- package/dist/{renderer-BwV-o_1b.mjs → renderer-CdXBRdFf.mjs} +4 -4
- package/dist/{renderer-BwV-o_1b.mjs.map → renderer-CdXBRdFf.mjs.map} +1 -1
- package/dist/{renderer-DrK6pyfz.mjs → renderer-Cfx_FCSf.mjs} +5 -5
- package/dist/{renderer-DrK6pyfz.mjs.map → renderer-Cfx_FCSf.mjs.map} +1 -1
- package/dist/renderer-CjxZlkjb.mjs +5 -0
- package/dist/{renderer-CInMMs5x.mjs → renderer-CkTehyRX.mjs} +6 -6
- package/dist/{renderer-CInMMs5x.mjs.map → renderer-CkTehyRX.mjs.map} +1 -1
- package/dist/{renderer-DGXqspB9.mjs → renderer-CldjJmRR.mjs} +3 -3
- package/dist/{renderer-HhJPFidU.mjs → renderer-CoC64eam.mjs} +5 -5
- package/dist/{renderer-HhJPFidU.mjs.map → renderer-CoC64eam.mjs.map} +1 -1
- package/dist/renderer-Cpd6TvTC.mjs +5 -0
- package/dist/{renderer-DLaUT6JZ.mjs → renderer-Cv9CKKWG.mjs} +4 -4
- package/dist/{renderer-DLaUT6JZ.mjs.map → renderer-Cv9CKKWG.mjs.map} +1 -1
- package/dist/renderer-CzgcZXKH.mjs +3 -0
- package/dist/{renderer-DCMoBppL.mjs → renderer-D-GWBoVT.mjs} +3 -3
- package/dist/{renderer-DCMoBppL.mjs.map → renderer-D-GWBoVT.mjs.map} +1 -1
- package/dist/{renderer-C3CGYjrC.mjs → renderer-D-mX1EVA.mjs} +5 -5
- package/dist/{renderer-C3CGYjrC.mjs.map → renderer-D-mX1EVA.mjs.map} +1 -1
- package/dist/{renderer-C2kFIZ4r.mjs → renderer-D0h1hTOo.mjs} +4 -4
- package/dist/{renderer-C2kFIZ4r.mjs.map → renderer-D0h1hTOo.mjs.map} +1 -1
- package/dist/{renderer-C_gR2H3R.mjs → renderer-D0xM67cK.mjs} +3 -3
- package/dist/{renderer-C_gR2H3R.mjs.map → renderer-D0xM67cK.mjs.map} +1 -1
- package/dist/renderer-D3ziOPhX.mjs +5 -0
- package/dist/renderer-D5yp74NL.mjs +3 -0
- package/dist/{renderer-BTd6tFcS.mjs → renderer-DCrKEVjb.mjs} +5 -5
- package/dist/{renderer-BTd6tFcS.mjs.map → renderer-DCrKEVjb.mjs.map} +1 -1
- package/dist/{renderer-Dak_wVh9.mjs → renderer-DGOMfyh8.mjs} +2 -2
- package/dist/{renderer-Dak_wVh9.mjs.map → renderer-DGOMfyh8.mjs.map} +1 -1
- package/dist/renderer-DKJOon6y.d.mts +1 -0
- package/dist/renderer-DL-phtL5.mjs +5 -0
- package/dist/{renderer-uA0UCxjA.mjs → renderer-DNynPM6X.mjs} +4 -4
- package/dist/{renderer-uA0UCxjA.mjs.map → renderer-DNynPM6X.mjs.map} +1 -1
- package/dist/renderer-DSnmYnHg.mjs +5 -0
- package/dist/renderer-DUGfsT-E.mjs +5 -0
- package/dist/renderer-DW5af9x1.mjs +5 -0
- package/dist/{renderer-CMCmljb0.mjs → renderer-DWYmJSrl.mjs} +3 -3
- package/dist/{renderer-CMCmljb0.mjs.map → renderer-DWYmJSrl.mjs.map} +1 -1
- package/dist/renderer-DYMrol1t.mjs +5 -0
- package/dist/{renderer-CGpi8CDT.mjs → renderer-DYeNNc_G.mjs} +4 -4
- package/dist/{renderer-CGpi8CDT.mjs.map → renderer-DYeNNc_G.mjs.map} +1 -1
- package/dist/{renderer-DKFaVaRJ.mjs → renderer-DYlx7VHo.mjs} +4 -4
- package/dist/{renderer-DKFaVaRJ.mjs.map → renderer-DYlx7VHo.mjs.map} +1 -1
- package/dist/{renderer-DZIxduEt.mjs → renderer-D_m6Qbsi.mjs} +3 -3
- package/dist/{renderer-DZIxduEt.mjs.map → renderer-D_m6Qbsi.mjs.map} +1 -1
- package/dist/renderer-DekeUHaz.mjs +5 -0
- package/dist/{renderer-snjhPaP-.mjs → renderer-DhGZ41hQ.mjs} +4 -4
- package/dist/{renderer-snjhPaP-.mjs.map → renderer-DhGZ41hQ.mjs.map} +1 -1
- package/dist/{renderer-BXGuCnCJ.mjs → renderer-DiZkZ0Pr.mjs} +4 -4
- package/dist/{renderer-BXGuCnCJ.mjs.map → renderer-DiZkZ0Pr.mjs.map} +1 -1
- package/dist/{renderer-BBjkX0Vt.mjs → renderer-Dm57W73p.mjs} +3 -3
- package/dist/renderer-Dt5uyJdZ.mjs +5 -0
- package/dist/{renderer-DwH5e3hx.mjs → renderer-DtFZbE1j.mjs} +3 -3
- package/dist/{renderer-Bxiiar50.mjs → renderer-DvHi_wXE.mjs} +4 -4
- package/dist/{renderer-Bxiiar50.mjs.map → renderer-DvHi_wXE.mjs.map} +1 -1
- package/dist/{renderer-DaLy1dFA.mjs → renderer-Dv_iRIyx.mjs} +21 -21
- package/dist/renderer-Dv_iRIyx.mjs.map +1 -0
- package/dist/renderer-DwLQAnaK.mjs +5 -0
- package/dist/{renderer-qVJdxbXB.mjs → renderer-DzON3wDZ.mjs} +4 -4
- package/dist/{renderer-qVJdxbXB.mjs.map → renderer-DzON3wDZ.mjs.map} +1 -1
- package/dist/{renderer-Dj54y3h3.mjs → renderer-GIlQ9lZq.mjs} +3 -3
- package/dist/{renderer-Dj54y3h3.mjs.map → renderer-GIlQ9lZq.mjs.map} +1 -1
- package/dist/{renderer-b0H3oDae.mjs → renderer-HKv5cBdp.mjs} +3 -3
- package/dist/{renderer-b0H3oDae.mjs.map → renderer-HKv5cBdp.mjs.map} +1 -1
- package/dist/renderer-IXQP2CWM.mjs +5 -0
- package/dist/renderer-K-Pkw63O.mjs +5 -0
- package/dist/renderer-MPw2KH9P.mjs +5 -0
- package/dist/{renderer-t1sXDiqm.mjs → renderer-QbSrnPZU.mjs} +3 -3
- package/dist/{renderer-t1sXDiqm.mjs.map → renderer-QbSrnPZU.mjs.map} +1 -1
- package/dist/renderer-RPu8RMav.mjs +5 -0
- package/dist/{renderer-Dp9FQKVP.mjs → renderer-TfeohPxt.mjs} +5 -5
- package/dist/{renderer-Dp9FQKVP.mjs.map → renderer-TfeohPxt.mjs.map} +1 -1
- package/dist/{renderer-BzTj_CeK.mjs → renderer-Y1kjtOto.mjs} +4 -4
- package/dist/{renderer-BzTj_CeK.mjs.map → renderer-Y1kjtOto.mjs.map} +1 -1
- package/dist/{renderer-LrAldCWN.mjs → renderer-YONlI6W-.mjs} +5 -5
- package/dist/{renderer-LrAldCWN.mjs.map → renderer-YONlI6W-.mjs.map} +1 -1
- package/dist/{renderer-tRi3KNoG.mjs → renderer-_J9JcCMR.mjs} +5 -5
- package/dist/{renderer-tRi3KNoG.mjs.map → renderer-_J9JcCMR.mjs.map} +1 -1
- package/dist/renderer-dCqxd5N2.mjs +5 -0
- package/dist/{renderer-CcmxR6Fy.d.mts → renderer-fG8Jy8Rx.d.mts} +2 -2
- package/dist/{renderer-CcmxR6Fy.d.mts.map → renderer-fG8Jy8Rx.d.mts.map} +1 -1
- package/dist/renderer-lhjmE-Fp.mjs +5 -0
- package/dist/{renderer-TiaHrU5z.mjs → renderer-mDBoz0zT.mjs} +5 -5
- package/dist/{renderer-TiaHrU5z.mjs.map → renderer-mDBoz0zT.mjs.map} +1 -1
- package/dist/{renderer-smP1F57W.mjs → renderer-pn52dzZz.mjs} +4 -4
- package/dist/{renderer-smP1F57W.mjs.map → renderer-pn52dzZz.mjs.map} +1 -1
- package/dist/renderer-u9cmBuvM.mjs +5 -0
- package/dist/{renderer-CNpq7rL-.mjs → renderer-uER8kn7f.mjs} +3 -3
- package/dist/{renderer-CNpq7rL-.mjs.map → renderer-uER8kn7f.mjs.map} +1 -1
- package/dist/{renderer-sMFJtt_H.mjs → renderer-uzU6dsdR.mjs} +3 -3
- package/dist/{renderer-sMFJtt_H.mjs.map → renderer-uzU6dsdR.mjs.map} +1 -1
- package/dist/renderer-vH12jcpz.mjs +5 -0
- package/dist/{renderer-oBgCEqaM.mjs → renderer-yNWYqvvq.mjs} +4 -4
- package/dist/{renderer-oBgCEqaM.mjs.map → renderer-yNWYqvvq.mjs.map} +1 -1
- package/dist/{renderer-Dy1xQOTu.mjs → renderer-zLi2qFGT.mjs} +4 -4
- package/dist/{renderer-Dy1xQOTu.mjs.map → renderer-zLi2qFGT.mjs.map} +1 -1
- package/dist/{renderers-CP8CFWDs-DWRjjeUg.mjs → renderers-CP8CFWDs-BufiCyn7.mjs} +4 -4
- package/dist/{renderers-CP8CFWDs-DWRjjeUg.mjs.map → renderers-CP8CFWDs-BufiCyn7.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 +7 -7
- package/dist/signals/index.mjs +8 -8
- package/dist/{signals-BfJ1aqpT.mjs → signals-tiho_9fp.mjs} +4 -4
- package/dist/{signals-BfJ1aqpT.mjs.map → signals-tiho_9fp.mjs.map} +1 -1
- package/dist/{src-BU6vm9sP-DFJ3phW0.mjs → src-BU6vm9sP-DdTHmCr4.mjs} +3 -3
- package/dist/{src-BU6vm9sP-DFJ3phW0.mjs.map → src-BU6vm9sP-DdTHmCr4.mjs.map} +1 -1
- package/dist/{src-D7M8VTzv.mjs → src-DrP7fGJX.mjs} +41 -16
- package/dist/{src-D7M8VTzv.mjs.map → src-DrP7fGJX.mjs.map} +1 -1
- package/dist/storage/index.d.mts +206 -0
- package/dist/storage/index.d.mts.map +1 -0
- package/dist/storage/index.mjs +3 -0
- package/package.json +67 -59
- package/dist/audio-afTBdB3U.d.mts.map +0 -1
- package/dist/cloud-COid1Ipa.mjs.map +0 -1
- package/dist/dist-B-OPY7Cs.mjs.map +0 -1
- package/dist/dist-BSqeChht.mjs.map +0 -1
- package/dist/index-BNClElng.d.mts.map +0 -1
- package/dist/index-CTv9ZieD.d.mts.map +0 -1
- package/dist/index-CdCrae-I.d.mts.map +0 -1
- package/dist/index-Fliv2Z-w.d.mts.map +0 -1
- package/dist/index-gOVtTm-P.d.mts.map +0 -1
- package/dist/preview-BUtt481A.mjs.map +0 -1
- package/dist/preview-engine/chunk-5SLBE2FX.mjs +0 -1
- package/dist/preview-engine/chunk-74J4DJQA.mjs +0 -1
- package/dist/preview-engine/chunk-KIPXBOYG.mjs +0 -1974
- package/dist/preview-engine/chunk-P4Y3PMJF.mjs +0 -1
- package/dist/preview-engine/chunk-SE2C623Z.mjs +0 -5
- package/dist/preview-engine/chunk-UKZVUYB6.mjs +0 -483
- package/dist/preview-engine/renderers-PSBTV2DO.mjs +0 -228
- package/dist/preview-engine/renderers-TEKHQHCL.mjs +0 -1
- package/dist/preview-engine/renderers-U3RLYFCN.mjs +0 -1
- package/dist/preview-engine/renderers-V5HM6PZ2.mjs +0 -1
- package/dist/preview-engine/renderers-ZGX3A3QZ.mjs +0 -1
- package/dist/program-Cvv_nb9T.mjs.map +0 -1
- package/dist/renderer--RJepuOy.mjs +0 -5
- package/dist/renderer-B1U6YRRV.d.mts +0 -117
- package/dist/renderer-B1U6YRRV.d.mts.map +0 -1
- package/dist/renderer-B4NFnaty.mjs +0 -5
- package/dist/renderer-B6g4ts0e.mjs +0 -5
- package/dist/renderer-BGoAr-tl.mjs +0 -5
- package/dist/renderer-BSOdBgdE.mjs +0 -5
- package/dist/renderer-BU6O0fpM.mjs +0 -5
- package/dist/renderer-BZ97iidG.mjs +0 -5
- package/dist/renderer-B_Klh1VT.mjs +0 -5
- package/dist/renderer-BaWQM1y-.mjs +0 -5
- package/dist/renderer-Bc0jvAj0.mjs +0 -5
- package/dist/renderer-Bd-NuU3M.mjs +0 -3
- package/dist/renderer-Bm077kZ6.mjs +0 -5
- package/dist/renderer-BtzE_e_Y.mjs +0 -5
- package/dist/renderer-C225eCAo.mjs +0 -5
- package/dist/renderer-CC4fhNup.mjs +0 -3
- package/dist/renderer-CLXdR4vz.mjs +0 -5
- package/dist/renderer-CszM8B3C.mjs +0 -5
- package/dist/renderer-Ctp8ZYfk.mjs +0 -5
- package/dist/renderer-CxQdSp8I.mjs +0 -5
- package/dist/renderer-D3YbHjRG.mjs.map +0 -1
- package/dist/renderer-D4GMRtDd.mjs +0 -6
- package/dist/renderer-DEsGIvTZ.mjs +0 -5
- package/dist/renderer-DIaUQ0EP.mjs +0 -5
- package/dist/renderer-DLjqcNzQ.mjs +0 -5
- package/dist/renderer-DMuQZa51.mjs +0 -5
- package/dist/renderer-DOgi2aF2.mjs +0 -5
- package/dist/renderer-DSh7cvi4.mjs +0 -5
- package/dist/renderer-DV1LVBBP.mjs +0 -5
- package/dist/renderer-DaLy1dFA.mjs.map +0 -1
- package/dist/renderer-Dhrj2bJz.mjs +0 -5
- package/dist/renderer-DoFUu1R4.mjs +0 -5
- package/dist/renderer-DsydX3cx.mjs +0 -5
- package/dist/renderer-DxVSoeYi.mjs +0 -5
- package/dist/renderer-Nc9bHb0n.mjs +0 -5
- package/dist/renderer-TFaSD2Db.mjs +0 -5
- package/dist/renderer-Z61ctppe.mjs +0 -5
- package/dist/renderer-awXf3sNS.mjs +0 -5
- package/dist/renderer-cHT28oYI.mjs +0 -5
- package/dist/renderer-g7Y3bFot.mjs +0 -5
- package/dist/renderer-qVv0OzVc.mjs +0 -5
- /package/dist/{chunk-W71TSjRM.mjs → chunk-DOL2i2sR.mjs} +0 -0
- /package/dist/{renderer-B6rZUBwE.mjs → renderer-Co2YqWX0.mjs} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-
|
|
2
|
-
import { $t as limitGradientStops, Et as emojiPresentation, Ht as gradientStopsToOklab, Xt as isSignal, Zt as isValueSignal, dn as parseCssGradient, un as parseCssColor } from "./dist-
|
|
1
|
+
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-DOL2i2sR.mjs";
|
|
2
|
+
import { $t as limitGradientStops, Et as emojiPresentation, Ht as gradientStopsToOklab, Xt as isSignal, Zt as isValueSignal, dn as parseCssGradient, un as parseCssColor } from "./dist-C8XSqfTx.mjs";
|
|
3
3
|
import { ALL_FORMATS, AudioBufferSink, CanvasSink, FilePathSource, Input, UrlSource, VideoSampleSink } from "mediabunny";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
@@ -1537,15 +1537,15 @@ var SignalRegistry = class {
|
|
|
1537
1537
|
res.lastProcessedFrame = cacheFrame;
|
|
1538
1538
|
res.lastFingerprint = fingerprint;
|
|
1539
1539
|
if (isSamplesArray(rawSamples) && rawSamples.length > 0) {
|
|
1540
|
-
const flat = new Float32Array(numSamples);
|
|
1540
|
+
const flat$1 = new Float32Array(numSamples);
|
|
1541
1541
|
const total = rawSamples.length;
|
|
1542
1542
|
const srcFps = Number(normalizedSd?.fps) || 24;
|
|
1543
1543
|
for (let i = 0; i < numSamples; i++) {
|
|
1544
1544
|
const t = elapsedTime + i / sampleRate;
|
|
1545
1545
|
const sIdx = Math.min(total - 1, Math.max(0, Math.round(t * srcFps)));
|
|
1546
|
-
flat[i] = Number(rawSamples[sIdx]) || 0;
|
|
1546
|
+
flat$1[i] = Number(rawSamples[sIdx]) || 0;
|
|
1547
1547
|
}
|
|
1548
|
-
device.queue.writeBuffer(res.buffer, 0, flat);
|
|
1548
|
+
device.queue.writeBuffer(res.buffer, 0, flat$1);
|
|
1549
1549
|
} else if (normalizedSd?.type === "generator" && (normalizedSd.customWGSL || normalizedSd.fnBody)) {
|
|
1550
1550
|
const signalEncoder = device.createCommandEncoder({ label: `signal_1d_encoder_${nodeId}` });
|
|
1551
1551
|
this.dispatch1DGenerator(device, signalEncoder, res, elapsedTime, duration$2, normalizedSd, numSamples, sampleRate, frame, fps);
|
|
@@ -1560,8 +1560,8 @@ var SignalRegistry = class {
|
|
|
1560
1560
|
device.queue.submit([signalEncoder.finish()]);
|
|
1561
1561
|
} else {
|
|
1562
1562
|
const val = Number(normalizedSd?.offset ?? 0);
|
|
1563
|
-
const flat = new Float32Array(numSamples).fill(val);
|
|
1564
|
-
device.queue.writeBuffer(res.buffer, 0, flat);
|
|
1563
|
+
const flat$1 = new Float32Array(numSamples).fill(val);
|
|
1564
|
+
device.queue.writeBuffer(res.buffer, 0, flat$1);
|
|
1565
1565
|
}
|
|
1566
1566
|
} else if (normalizedSd?.type === "signal_math") {
|
|
1567
1567
|
const sigAId = normalizedSd.signalA?.nodeId ?? `${nodeId}_a`;
|
|
@@ -1582,8 +1582,8 @@ var SignalRegistry = class {
|
|
|
1582
1582
|
device.queue.submit([signalEncoder.finish()]);
|
|
1583
1583
|
} else {
|
|
1584
1584
|
const val = Number(normalizedSd?.offset ?? 0);
|
|
1585
|
-
const flat = new Float32Array(numSamples).fill(val);
|
|
1586
|
-
device.queue.writeBuffer(res.buffer, 0, flat);
|
|
1585
|
+
const flat$1 = new Float32Array(numSamples).fill(val);
|
|
1586
|
+
device.queue.writeBuffer(res.buffer, 0, flat$1);
|
|
1587
1587
|
}
|
|
1588
1588
|
return res.buffer;
|
|
1589
1589
|
}
|
|
@@ -1649,7 +1649,7 @@ var SignalRegistry = class {
|
|
|
1649
1649
|
device.queue.submit([signalEncoder.finish()]);
|
|
1650
1650
|
return res.textureView;
|
|
1651
1651
|
} else if (isSamplesArray(rawSamples) && rawSamples.length > 0) {
|
|
1652
|
-
const flat = new Float32Array(targetWidth * targetHeight * 4);
|
|
1652
|
+
const flat$1 = new Float32Array(targetWidth * targetHeight * 4);
|
|
1653
1653
|
const total = rawSamples.length;
|
|
1654
1654
|
const baseTime = frame !== void 0 && fps !== void 0 && fps > 0 ? frame / fps : elapsedTime;
|
|
1655
1655
|
for (let i = 0; i < targetWidth; i++) {
|
|
@@ -1659,13 +1659,13 @@ var SignalRegistry = class {
|
|
|
1659
1659
|
const val = Number(rawSamples[sIdx]) || 0;
|
|
1660
1660
|
for (let row = 0; row < targetHeight; row++) {
|
|
1661
1661
|
const idx = (row * targetWidth + i) * 4;
|
|
1662
|
-
flat[idx] = val;
|
|
1663
|
-
flat[idx + 1] = val;
|
|
1664
|
-
flat[idx + 2] = val;
|
|
1665
|
-
flat[idx + 3] = val;
|
|
1662
|
+
flat$1[idx] = val;
|
|
1663
|
+
flat$1[idx + 1] = val;
|
|
1664
|
+
flat$1[idx + 2] = val;
|
|
1665
|
+
flat$1[idx + 3] = val;
|
|
1666
1666
|
}
|
|
1667
1667
|
}
|
|
1668
|
-
const halfFlat = encodeFloat32ToFloat16(flat);
|
|
1668
|
+
const halfFlat = encodeFloat32ToFloat16(flat$1);
|
|
1669
1669
|
device.queue.writeTexture({ texture: res.texture }, halfFlat, {
|
|
1670
1670
|
bytesPerRow: targetWidth * 8,
|
|
1671
1671
|
rowsPerImage: targetHeight
|
|
@@ -1691,14 +1691,14 @@ var SignalRegistry = class {
|
|
|
1691
1691
|
device.queue.submit([signalEncoder.finish()]);
|
|
1692
1692
|
} else {
|
|
1693
1693
|
const val = Number(normalizedSd?.offset ?? 0);
|
|
1694
|
-
const flat = new Float32Array(targetWidth * targetHeight * 4);
|
|
1694
|
+
const flat$1 = new Float32Array(targetWidth * targetHeight * 4);
|
|
1695
1695
|
for (let i = 0; i < targetWidth * targetHeight; i++) {
|
|
1696
|
-
flat[i * 4] = val;
|
|
1697
|
-
flat[i * 4 + 1] = val;
|
|
1698
|
-
flat[i * 4 + 2] = val;
|
|
1699
|
-
flat[i * 4 + 3] = 1;
|
|
1696
|
+
flat$1[i * 4] = val;
|
|
1697
|
+
flat$1[i * 4 + 1] = val;
|
|
1698
|
+
flat$1[i * 4 + 2] = val;
|
|
1699
|
+
flat$1[i * 4 + 3] = 1;
|
|
1700
1700
|
}
|
|
1701
|
-
const halfFlat = encodeFloat32ToFloat16(flat);
|
|
1701
|
+
const halfFlat = encodeFloat32ToFloat16(flat$1);
|
|
1702
1702
|
device.queue.writeTexture({ texture: res.texture }, halfFlat, {
|
|
1703
1703
|
bytesPerRow: targetWidth * 8,
|
|
1704
1704
|
rowsPerImage: targetHeight
|
|
@@ -16210,6 +16210,20 @@ var WebGPUAudioProcessor = class WebGPUAudioProcessor$1 {
|
|
|
16210
16210
|
const cacheKey = `${renderId ?? "global"}_${nodeId}_${activeSignalsKey}_${stateFloatCount}`;
|
|
16211
16211
|
return WebGPUAudioProcessor$1.devicePipelineCache.get(device)?.get(cacheKey);
|
|
16212
16212
|
}
|
|
16213
|
+
/**
|
|
16214
|
+
* Zeroes the state every effect keeps for `renderId` (delay lines,
|
|
16215
|
+
* envelopes, reverb tails), as on its first use. Pipelines and buffers
|
|
16216
|
+
* stay, so a mix that starts again doesn't compile them again.
|
|
16217
|
+
*/
|
|
16218
|
+
static resetState(renderId, device) {
|
|
16219
|
+
const cache = WebGPUAudioProcessor$1.devicePipelineCache.get(device);
|
|
16220
|
+
if (!cache) return;
|
|
16221
|
+
const prefix = `${renderId}_`;
|
|
16222
|
+
for (const [key, cached$1] of cache.entries()) {
|
|
16223
|
+
if (!key.startsWith(prefix)) continue;
|
|
16224
|
+
device.queue.writeBuffer(cached$1.stateBuffer, 0, new Float32Array(cached$1.stateBuffer.size / 4));
|
|
16225
|
+
}
|
|
16226
|
+
}
|
|
16213
16227
|
static clearCache(renderId, device) {
|
|
16214
16228
|
if (!device) return;
|
|
16215
16229
|
const cache = WebGPUAudioProcessor$1.devicePipelineCache.get(device);
|
|
@@ -17106,10 +17120,13 @@ async function toLocalPath(src) {
|
|
|
17106
17120
|
);
|
|
17107
17121
|
return resolve$1$1(src);
|
|
17108
17122
|
}
|
|
17109
|
-
/**
|
|
17123
|
+
/**
|
|
17124
|
+
* In the browser (a page or a worker), local paths are served through the
|
|
17125
|
+
* dev server's `/@fs`.
|
|
17126
|
+
*/
|
|
17110
17127
|
function resolveInputUrl(url, isNode) {
|
|
17111
17128
|
let resolvedUrl = url;
|
|
17112
|
-
if (!isNode && typeof
|
|
17129
|
+
if (!isNode && typeof location !== "undefined") {
|
|
17113
17130
|
if (resolvedUrl.startsWith("file://")) resolvedUrl = resolvedUrl.slice(7);
|
|
17114
17131
|
if (resolvedUrl.startsWith("/") && !resolvedUrl.startsWith("/@fs/") && !resolvedUrl.startsWith("/api/")) resolvedUrl = "/@fs" + resolvedUrl;
|
|
17115
17132
|
}
|
|
@@ -17138,6 +17155,15 @@ async function assertReadableFile(filePath, url) {
|
|
|
17138
17155
|
}
|
|
17139
17156
|
var InputStore = class {
|
|
17140
17157
|
store = /* @__PURE__ */ new Map();
|
|
17158
|
+
resolveMissing;
|
|
17159
|
+
/**
|
|
17160
|
+
* Reads local files that are missing from disk from the URL `resolver`
|
|
17161
|
+
* gives, with HTTP range requests, so a clip pinned on a bucket plays
|
|
17162
|
+
* without being downloaded. Unset with no argument.
|
|
17163
|
+
*/
|
|
17164
|
+
setMissingMediaResolver(resolver) {
|
|
17165
|
+
this.resolveMissing = resolver;
|
|
17166
|
+
}
|
|
17141
17167
|
async acquire(url) {
|
|
17142
17168
|
if (!url) throw new Error("Cannot acquire Input for empty URL");
|
|
17143
17169
|
const resolvedUrl = resolveInputUrl(url, isNodeRuntime());
|
|
@@ -17146,10 +17172,8 @@ var InputStore = class {
|
|
|
17146
17172
|
const promise = (async () => {
|
|
17147
17173
|
const filePath = await toLocalPath(resolvedUrl.startsWith("file:") ? resolvedUrl : safeDecode(resolvedUrl));
|
|
17148
17174
|
let source;
|
|
17149
|
-
if (filePath !== null)
|
|
17150
|
-
|
|
17151
|
-
source = new FilePathSource(filePath);
|
|
17152
|
-
} else source = new UrlSource(resolvedUrl);
|
|
17175
|
+
if (filePath !== null) source = await this.localSource(filePath, url);
|
|
17176
|
+
else source = new UrlSource(resolvedUrl);
|
|
17153
17177
|
return new Input({
|
|
17154
17178
|
source,
|
|
17155
17179
|
formats: ALL_FORMATS
|
|
@@ -17180,6 +17204,16 @@ var InputStore = class {
|
|
|
17180
17204
|
} catch (_) {}
|
|
17181
17205
|
}, () => {});
|
|
17182
17206
|
}
|
|
17207
|
+
async localSource(filePath, url) {
|
|
17208
|
+
try {
|
|
17209
|
+
await assertReadableFile(filePath, url);
|
|
17210
|
+
return new FilePathSource(filePath);
|
|
17211
|
+
} catch (err) {
|
|
17212
|
+
const remote = await this.resolveMissing?.(filePath);
|
|
17213
|
+
if (remote) return new UrlSource(remote);
|
|
17214
|
+
throw err;
|
|
17215
|
+
}
|
|
17216
|
+
}
|
|
17183
17217
|
release(url) {
|
|
17184
17218
|
if (!url) return;
|
|
17185
17219
|
const resolvedUrl = resolveInputUrl(url, isNodeRuntime());
|
|
@@ -27956,6 +27990,118 @@ var ClipStack = class {
|
|
|
27956
27990
|
}
|
|
27957
27991
|
};
|
|
27958
27992
|
/**
|
|
27993
|
+
* Filling compound paths: every subpath is a contour, contours nest, and a
|
|
27994
|
+
* region is filled by SVG's nonzero rule (the windings of the contours
|
|
27995
|
+
* around it, summed, are not zero). Each filled contour is triangulated with
|
|
27996
|
+
* its direct children as holes, so a map's coastlines and islands, a
|
|
27997
|
+
* letter's counter or a ring fill as drawn instead of being bridged into
|
|
27998
|
+
* one polygon.
|
|
27999
|
+
*
|
|
28000
|
+
* Contours are taken not to cross each other (each pair is nested or
|
|
28001
|
+
* apart), which holds for maps, glyphs and icons; a contour that crosses
|
|
28002
|
+
* itself is still triangulated as well as earcut can.
|
|
28003
|
+
*/
|
|
28004
|
+
function signedArea(points) {
|
|
28005
|
+
let area = 0;
|
|
28006
|
+
for (let i = 0; i < points.length; i++) {
|
|
28007
|
+
const a = points[i];
|
|
28008
|
+
const b = points[(i + 1) % points.length];
|
|
28009
|
+
area += a.x * b.y - b.x * a.y;
|
|
28010
|
+
}
|
|
28011
|
+
return area / 2;
|
|
28012
|
+
}
|
|
28013
|
+
function flat(points) {
|
|
28014
|
+
const out = [];
|
|
28015
|
+
for (const p of points) out.push(p.x, p.y);
|
|
28016
|
+
return out;
|
|
28017
|
+
}
|
|
28018
|
+
function boxOf(points) {
|
|
28019
|
+
const box = {
|
|
28020
|
+
x0: Infinity,
|
|
28021
|
+
y0: Infinity,
|
|
28022
|
+
x1: -Infinity,
|
|
28023
|
+
y1: -Infinity
|
|
28024
|
+
};
|
|
28025
|
+
for (const p of points) {
|
|
28026
|
+
box.x0 = Math.min(box.x0, p.x);
|
|
28027
|
+
box.y0 = Math.min(box.y0, p.y);
|
|
28028
|
+
box.x1 = Math.max(box.x1, p.x);
|
|
28029
|
+
box.y1 = Math.max(box.y1, p.y);
|
|
28030
|
+
}
|
|
28031
|
+
return box;
|
|
28032
|
+
}
|
|
28033
|
+
/** The centroid of the contour's largest triangle: inside it, away from its edges. */
|
|
28034
|
+
function insidePoint(points) {
|
|
28035
|
+
const coords = flat(points);
|
|
28036
|
+
const tris = earcut(coords);
|
|
28037
|
+
const at = (k) => ({
|
|
28038
|
+
x: coords[k * 2],
|
|
28039
|
+
y: coords[k * 2 + 1]
|
|
28040
|
+
});
|
|
28041
|
+
let best = -1;
|
|
28042
|
+
let inside = points[0];
|
|
28043
|
+
for (let i = 0; i < tris.length; i += 3) {
|
|
28044
|
+
const a = at(tris[i]);
|
|
28045
|
+
const b = at(tris[i + 1]);
|
|
28046
|
+
const c = at(tris[i + 2]);
|
|
28047
|
+
const size = Math.abs((b.x - a.x) * (c.y - a.y) - (c.x - a.x) * (b.y - a.y));
|
|
28048
|
+
if (size > best) {
|
|
28049
|
+
best = size;
|
|
28050
|
+
inside = {
|
|
28051
|
+
x: (a.x + b.x + c.x) / 3,
|
|
28052
|
+
y: (a.y + b.y + c.y) / 3
|
|
28053
|
+
};
|
|
28054
|
+
}
|
|
28055
|
+
}
|
|
28056
|
+
return inside;
|
|
28057
|
+
}
|
|
28058
|
+
function contains(points, p) {
|
|
28059
|
+
let inside = false;
|
|
28060
|
+
for (let i = 0, j = points.length - 1; i < points.length; j = i++) {
|
|
28061
|
+
const a = points[i];
|
|
28062
|
+
const b = points[j];
|
|
28063
|
+
if (a.y > p.y !== b.y > p.y && p.x < (b.x - a.x) * (p.y - a.y) / (b.y - a.y) + a.x) inside = !inside;
|
|
28064
|
+
}
|
|
28065
|
+
return inside;
|
|
28066
|
+
}
|
|
28067
|
+
const encloses = (p, c) => p.box.x0 <= c.box.x0 && p.box.y0 <= c.box.y0 && p.box.x1 >= c.box.x1 && p.box.y1 >= c.box.y1 && contains(p.points, c.inside);
|
|
28068
|
+
/** Triangles filling closed `contours` by the nonzero rule, as flat [x, y, …] vertices. */
|
|
28069
|
+
function fillContours(contours) {
|
|
28070
|
+
const all = contours.map((points) => ({
|
|
28071
|
+
points,
|
|
28072
|
+
area: signedArea(points),
|
|
28073
|
+
box: boxOf(points),
|
|
28074
|
+
inside: insidePoint(points),
|
|
28075
|
+
parent: -1,
|
|
28076
|
+
winding: 0
|
|
28077
|
+
}));
|
|
28078
|
+
const order = all.map((_, i) => i).sort((a, b) => Math.abs(all[b].area) - Math.abs(all[a].area));
|
|
28079
|
+
order.forEach((ci, rank) => {
|
|
28080
|
+
const c = all[ci];
|
|
28081
|
+
for (let r = rank - 1; r >= 0; r--) {
|
|
28082
|
+
const pi = order[r];
|
|
28083
|
+
if (encloses(all[pi], c)) {
|
|
28084
|
+
c.parent = pi;
|
|
28085
|
+
break;
|
|
28086
|
+
}
|
|
28087
|
+
}
|
|
28088
|
+
c.winding = (c.parent >= 0 ? all[c.parent].winding : 0) + Math.sign(c.area);
|
|
28089
|
+
});
|
|
28090
|
+
const out = [];
|
|
28091
|
+
all.forEach((c, ci) => {
|
|
28092
|
+
if (c.winding === 0) return;
|
|
28093
|
+
const coords = flat(c.points);
|
|
28094
|
+
const holeStarts = [];
|
|
28095
|
+
for (const h of all) {
|
|
28096
|
+
if (h.parent !== ci) continue;
|
|
28097
|
+
holeStarts.push(coords.length / 2);
|
|
28098
|
+
for (const p of h.points) coords.push(p.x, p.y);
|
|
28099
|
+
}
|
|
28100
|
+
for (const k of earcut(coords, holeStarts)) out.push(coords[k * 2], coords[k * 2 + 1]);
|
|
28101
|
+
});
|
|
28102
|
+
return new Float32Array(out);
|
|
28103
|
+
}
|
|
28104
|
+
/**
|
|
27959
28105
|
* Sample a cubic bezier curve into linear segments.
|
|
27960
28106
|
*/
|
|
27961
28107
|
function sampleCubicBezier(p0, p1, p2, p3, steps = 24) {
|
|
@@ -28063,8 +28209,26 @@ function sampleSvgArc(p0, rxIn, ryIn, rotationDeg, largeArc, sweep, p1) {
|
|
|
28063
28209
|
* Parse an SVG path string (M, L, H, V, C, S, Q, T, A, Z) into line segments.
|
|
28064
28210
|
*/
|
|
28065
28211
|
function parseSvgPathToSegments(d) {
|
|
28212
|
+
return parseSvgPath(d).segments;
|
|
28213
|
+
}
|
|
28214
|
+
/**
|
|
28215
|
+
* The path's segments, and for each the subpath it belongs to (every M
|
|
28216
|
+
* starts one): fills need to know where each subpath begins.
|
|
28217
|
+
*/
|
|
28218
|
+
function parseSvgPath(d) {
|
|
28066
28219
|
const segments = [];
|
|
28067
|
-
|
|
28220
|
+
const subpaths = [];
|
|
28221
|
+
if (!d || typeof d !== "string") return {
|
|
28222
|
+
segments,
|
|
28223
|
+
subpaths
|
|
28224
|
+
};
|
|
28225
|
+
let subpath = -1;
|
|
28226
|
+
const emit = (...added) => {
|
|
28227
|
+
for (const seg of added) {
|
|
28228
|
+
segments.push(seg);
|
|
28229
|
+
subpaths.push(subpath);
|
|
28230
|
+
}
|
|
28231
|
+
};
|
|
28068
28232
|
const tokens = [];
|
|
28069
28233
|
const regex = /([a-df-z])|([-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)/gi;
|
|
28070
28234
|
let match;
|
|
@@ -28110,9 +28274,10 @@ function parseSvgPathToSegments(d) {
|
|
|
28110
28274
|
x,
|
|
28111
28275
|
y
|
|
28112
28276
|
};
|
|
28277
|
+
subpath++;
|
|
28113
28278
|
first = false;
|
|
28114
28279
|
} else {
|
|
28115
|
-
|
|
28280
|
+
emit({
|
|
28116
28281
|
p0: current,
|
|
28117
28282
|
p1: {
|
|
28118
28283
|
x,
|
|
@@ -28137,7 +28302,7 @@ function parseSvgPathToSegments(d) {
|
|
|
28137
28302
|
x += current.x;
|
|
28138
28303
|
y += current.y;
|
|
28139
28304
|
}
|
|
28140
|
-
|
|
28305
|
+
emit({
|
|
28141
28306
|
p0: current,
|
|
28142
28307
|
p1: {
|
|
28143
28308
|
x,
|
|
@@ -28160,7 +28325,7 @@ function parseSvgPathToSegments(d) {
|
|
|
28160
28325
|
x,
|
|
28161
28326
|
y: current.y
|
|
28162
28327
|
};
|
|
28163
|
-
|
|
28328
|
+
emit({
|
|
28164
28329
|
p0: current,
|
|
28165
28330
|
p1: next
|
|
28166
28331
|
});
|
|
@@ -28177,7 +28342,7 @@ function parseSvgPathToSegments(d) {
|
|
|
28177
28342
|
x: current.x,
|
|
28178
28343
|
y
|
|
28179
28344
|
};
|
|
28180
|
-
|
|
28345
|
+
emit({
|
|
28181
28346
|
p0: current,
|
|
28182
28347
|
p1: next
|
|
28183
28348
|
});
|
|
@@ -28214,7 +28379,7 @@ function parseSvgPathToSegments(d) {
|
|
|
28214
28379
|
x,
|
|
28215
28380
|
y
|
|
28216
28381
|
};
|
|
28217
|
-
|
|
28382
|
+
emit(...sampleCubicBezier(current, p1, p2, end));
|
|
28218
28383
|
current = end;
|
|
28219
28384
|
lastCubicControl = p2;
|
|
28220
28385
|
}
|
|
@@ -28249,7 +28414,7 @@ function parseSvgPathToSegments(d) {
|
|
|
28249
28414
|
x,
|
|
28250
28415
|
y
|
|
28251
28416
|
};
|
|
28252
|
-
|
|
28417
|
+
emit(...sampleCubicBezier(current, p1, p2, end));
|
|
28253
28418
|
current = end;
|
|
28254
28419
|
lastCubicControl = p2;
|
|
28255
28420
|
}
|
|
@@ -28275,7 +28440,7 @@ function parseSvgPathToSegments(d) {
|
|
|
28275
28440
|
x,
|
|
28276
28441
|
y
|
|
28277
28442
|
};
|
|
28278
|
-
|
|
28443
|
+
emit(...sampleQuadraticBezier(current, p1, end));
|
|
28279
28444
|
current = end;
|
|
28280
28445
|
lastQuadControl = p1;
|
|
28281
28446
|
}
|
|
@@ -28302,7 +28467,7 @@ function parseSvgPathToSegments(d) {
|
|
|
28302
28467
|
x,
|
|
28303
28468
|
y
|
|
28304
28469
|
};
|
|
28305
|
-
|
|
28470
|
+
emit(...sampleQuadraticBezier(current, p1, end));
|
|
28306
28471
|
current = end;
|
|
28307
28472
|
lastQuadControl = p1;
|
|
28308
28473
|
}
|
|
@@ -28325,14 +28490,14 @@ function parseSvgPathToSegments(d) {
|
|
|
28325
28490
|
x,
|
|
28326
28491
|
y
|
|
28327
28492
|
};
|
|
28328
|
-
|
|
28493
|
+
emit(...sampleSvgArc(current, rx, ry, rotation, largeArc, sweep, end));
|
|
28329
28494
|
current = end;
|
|
28330
28495
|
}
|
|
28331
28496
|
lastCubicControl = null;
|
|
28332
28497
|
lastQuadControl = null;
|
|
28333
28498
|
break;
|
|
28334
28499
|
case "Z":
|
|
28335
|
-
if (Math.hypot(current.x - subpathStart.x, current.y - subpathStart.y) > 1e-5)
|
|
28500
|
+
if (Math.hypot(current.x - subpathStart.x, current.y - subpathStart.y) > 1e-5) emit({
|
|
28336
28501
|
p0: current,
|
|
28337
28502
|
p1: subpathStart
|
|
28338
28503
|
});
|
|
@@ -28343,7 +28508,10 @@ function parseSvgPathToSegments(d) {
|
|
|
28343
28508
|
default: break;
|
|
28344
28509
|
}
|
|
28345
28510
|
}
|
|
28346
|
-
return
|
|
28511
|
+
return {
|
|
28512
|
+
segments,
|
|
28513
|
+
subpaths
|
|
28514
|
+
};
|
|
28347
28515
|
}
|
|
28348
28516
|
/**
|
|
28349
28517
|
* Trim linear path segments using arc-length parameterization.
|
|
@@ -28404,6 +28572,19 @@ function trimPathSegments(segments, trimStart, trimEnd, trimOffset = 0) {
|
|
|
28404
28572
|
}
|
|
28405
28573
|
}
|
|
28406
28574
|
/**
|
|
28575
|
+
* A dash pattern as SVG's `stroke-dasharray` writes it ("16 12", "4,8") or as
|
|
28576
|
+
* numbers, ready for {@link dashPathSegments}. Following SVG, an odd list is
|
|
28577
|
+
* repeated to make it even, and a negative or unreadable entry, or a pattern
|
|
28578
|
+
* of zero length, means a solid stroke (`undefined`).
|
|
28579
|
+
*/
|
|
28580
|
+
function parseDashArray(value) {
|
|
28581
|
+
if (value === void 0) return void 0;
|
|
28582
|
+
const parts = typeof value === "string" ? value.trim().split(/[\s,]+/).filter(Boolean).map(Number) : [...value];
|
|
28583
|
+
if (parts.length === 0 || parts.some((n) => !Number.isFinite(n) || n < 0)) return void 0;
|
|
28584
|
+
if (parts.reduce((sum, n) => sum + n, 0) <= 0) return void 0;
|
|
28585
|
+
return parts.length % 2 === 1 ? [...parts, ...parts] : parts;
|
|
28586
|
+
}
|
|
28587
|
+
/**
|
|
28407
28588
|
* Apply dash patterns along linear path segments.
|
|
28408
28589
|
*/
|
|
28409
28590
|
function dashPathSegments(segments, dashArray, dashOffset = 0) {
|
|
@@ -28615,6 +28796,44 @@ function triangulatePolygon(contour) {
|
|
|
28615
28796
|
if (rem.length === 3) triangles.push(rem[0], rem[1], rem[2]);
|
|
28616
28797
|
return triangles;
|
|
28617
28798
|
}
|
|
28799
|
+
/** A path's subpaths as closed point lists, degenerate ones dropped. */
|
|
28800
|
+
function pathContours(d) {
|
|
28801
|
+
const bySubpath = /* @__PURE__ */ new Map();
|
|
28802
|
+
const { segments, subpaths } = parseSvgPath(d);
|
|
28803
|
+
segments.forEach((seg, i) => {
|
|
28804
|
+
const id = subpaths[i] ?? 0;
|
|
28805
|
+
let points = bySubpath.get(id);
|
|
28806
|
+
if (!points) {
|
|
28807
|
+
points = [seg.p0];
|
|
28808
|
+
bySubpath.set(id, points);
|
|
28809
|
+
}
|
|
28810
|
+
points.push(seg.p1);
|
|
28811
|
+
});
|
|
28812
|
+
const contours = [];
|
|
28813
|
+
for (const points of bySubpath.values()) {
|
|
28814
|
+
const first = points[0];
|
|
28815
|
+
const last = points[points.length - 1];
|
|
28816
|
+
if (Math.hypot(last.x - first.x, last.y - first.y) < 1e-5) points.pop();
|
|
28817
|
+
if (points.length >= 3 && Math.abs(signedArea(points)) > 1e-6) contours.push(points);
|
|
28818
|
+
}
|
|
28819
|
+
return contours;
|
|
28820
|
+
}
|
|
28821
|
+
/** Path fills are redrawn every frame from the same data: keep the last few. */
|
|
28822
|
+
const PATH_FILL_CACHE = 64;
|
|
28823
|
+
const pathFills = /* @__PURE__ */ new Map();
|
|
28824
|
+
/** Triangles filling path `d` by the nonzero rule (see {@link fillContours}). */
|
|
28825
|
+
function cachedPathFill(d) {
|
|
28826
|
+
const hit = pathFills.get(d);
|
|
28827
|
+
if (hit) {
|
|
28828
|
+
pathFills.delete(d);
|
|
28829
|
+
pathFills.set(d, hit);
|
|
28830
|
+
return hit;
|
|
28831
|
+
}
|
|
28832
|
+
const tris = fillContours(pathContours(d));
|
|
28833
|
+
pathFills.set(d, tris);
|
|
28834
|
+
if (pathFills.size > PATH_FILL_CACHE) pathFills.delete(pathFills.keys().next().value);
|
|
28835
|
+
return tris;
|
|
28836
|
+
}
|
|
28618
28837
|
/**
|
|
28619
28838
|
* Triangulate a shape geometry into a flat Float32Array of 2D vertex pairs [x, y, x, y, ...].
|
|
28620
28839
|
*/
|
|
@@ -28739,19 +28958,16 @@ function triangulateShape(config$1) {
|
|
|
28739
28958
|
yBotHead
|
|
28740
28959
|
]);
|
|
28741
28960
|
}
|
|
28742
|
-
if (shapeType === "path" && config$1.path)
|
|
28743
|
-
const segments = parseSvgPathToSegments(config$1.path);
|
|
28744
|
-
if (segments.length === 0) return new Float32Array(0);
|
|
28745
|
-
const tris = triangulatePolygon(segments.map((s) => s.p0));
|
|
28746
|
-
const out = new Float32Array(tris.length * 2);
|
|
28747
|
-
for (let i = 0; i < tris.length; i++) {
|
|
28748
|
-
out[i * 2] = tris[i].x;
|
|
28749
|
-
out[i * 2 + 1] = tris[i].y;
|
|
28750
|
-
}
|
|
28751
|
-
return out;
|
|
28752
|
-
}
|
|
28961
|
+
if (shapeType === "path" && config$1.path) return cachedPathFill(config$1.path);
|
|
28753
28962
|
return new Float32Array(0);
|
|
28754
28963
|
}
|
|
28964
|
+
/**
|
|
28965
|
+
* Strokes a path in one instanced draw: each instance is one straight
|
|
28966
|
+
* segment (p0, p1), expanded by the vertex shader into a quad that covers it
|
|
28967
|
+
* plus half the stroke width and 2 px of antialiasing; the fragment shader
|
|
28968
|
+
* shades the segment's capped distance field. Everything shared by the
|
|
28969
|
+
* path (transform, colour, width, cap) is in the uniforms.
|
|
28970
|
+
*/
|
|
28755
28971
|
const pathWgsl = `
|
|
28756
28972
|
struct Uniforms {
|
|
28757
28973
|
transformCol0 : vec4<f32>,
|
|
@@ -28760,8 +28976,6 @@ struct Uniforms {
|
|
|
28760
28976
|
params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = strokeWidth
|
|
28761
28977
|
color : vec4<f32>,
|
|
28762
28978
|
style : vec4<f32>, // x = capType (0 = round, 1 = butt, 2 = square)
|
|
28763
|
-
p0 : vec2<f32>,
|
|
28764
|
-
p1 : vec2<f32>,
|
|
28765
28979
|
};
|
|
28766
28980
|
|
|
28767
28981
|
@group(0) @binding(0) var<uniform> u : Uniforms;
|
|
@@ -28769,17 +28983,30 @@ struct Uniforms {
|
|
|
28769
28983
|
struct VSOut {
|
|
28770
28984
|
@builtin(position) pos : vec4<f32>,
|
|
28771
28985
|
@location(0) localPos : vec2<f32>,
|
|
28986
|
+
@location(1) @interpolate(flat) p0 : vec2<f32>,
|
|
28987
|
+
@location(2) @interpolate(flat) p1 : vec2<f32>,
|
|
28772
28988
|
};
|
|
28773
28989
|
|
|
28774
|
-
@vertex fn vs(@location(0)
|
|
28990
|
+
@vertex fn vs(@builtin(vertex_index) corner : u32, @location(0) seg : vec4<f32>) -> VSOut {
|
|
28991
|
+
let p0 = seg.xy;
|
|
28992
|
+
let p1 = seg.zw;
|
|
28993
|
+
let d = p1 - p0;
|
|
28994
|
+
let len = max(length(d), 1e-6);
|
|
28995
|
+
let padding = u.params.w * 0.5 + 2.0;
|
|
28996
|
+
let along = (d / len) * padding;
|
|
28997
|
+
let across = vec2<f32>(-along.y, along.x);
|
|
28998
|
+
// Triangle strip: p0 −along ∓across, then p1 +along ∓across.
|
|
28999
|
+
let atEnd = corner >= 2u;
|
|
29000
|
+
let side = select(-1.0, 1.0, (corner & 1u) == 1u);
|
|
29001
|
+
let xy = select(p0 - along, p1 + along, atEnd) + across * side;
|
|
29002
|
+
|
|
28775
29003
|
let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
|
|
28776
29004
|
let p = transform * vec3<f32>(xy, 1.0);
|
|
28777
|
-
|
|
28778
29005
|
let surfaceSize = u.params.yz;
|
|
28779
29006
|
let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
|
|
28780
29007
|
let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
|
|
28781
29008
|
|
|
28782
|
-
return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
|
|
29009
|
+
return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy, p0, p1);
|
|
28783
29010
|
}
|
|
28784
29011
|
|
|
28785
29012
|
fn sdSegmentWithCap(p: vec2<f32>, a: vec2<f32>, b: vec2<f32>, radius: f32, capType: f32) -> f32 {
|
|
@@ -28791,10 +29018,10 @@ fn sdSegmentWithCap(p: vec2<f32>, a: vec2<f32>, b: vec2<f32>, radius: f32, capTy
|
|
|
28791
29018
|
let dir = ba / len;
|
|
28792
29019
|
let normal = vec2<f32>(-dir.y, dir.x);
|
|
28793
29020
|
let pa = p - a;
|
|
28794
|
-
|
|
29021
|
+
|
|
28795
29022
|
let proj = dot(pa, dir);
|
|
28796
29023
|
let perp = abs(dot(pa, normal));
|
|
28797
|
-
|
|
29024
|
+
|
|
28798
29025
|
if (capType > 0.5 && capType < 1.5) {
|
|
28799
29026
|
// Butt cap: terminates strictly at endpoints a and b
|
|
28800
29027
|
let dx = max(-proj, proj - len);
|
|
@@ -28818,15 +29045,15 @@ fn sdSegmentWithCap(p: vec2<f32>, a: vec2<f32>, b: vec2<f32>, radius: f32, capTy
|
|
|
28818
29045
|
|
|
28819
29046
|
@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
|
|
28820
29047
|
let radius = u.params.w * 0.5;
|
|
28821
|
-
let d = sdSegmentWithCap(in.localPos,
|
|
28822
|
-
|
|
29048
|
+
let d = sdSegmentWithCap(in.localPos, in.p0, in.p1, radius, u.style.x);
|
|
29049
|
+
|
|
28823
29050
|
let fw = max(fwidth(d), 1e-5);
|
|
28824
29051
|
let edgeAlpha = clamp(0.5 - d / fw, 0.0, 1.0);
|
|
28825
29052
|
let alpha = u.color.a * u.params.x * edgeAlpha;
|
|
28826
29053
|
if (alpha <= 0.0) {
|
|
28827
29054
|
discard;
|
|
28828
29055
|
}
|
|
28829
|
-
|
|
29056
|
+
|
|
28830
29057
|
return vec4<f32>(u.color.rgb * alpha, alpha);
|
|
28831
29058
|
}
|
|
28832
29059
|
`;
|
|
@@ -28883,127 +29110,111 @@ function createVec2Pipeline(device, options) {
|
|
|
28883
29110
|
primitive: { topology: options.topology }
|
|
28884
29111
|
});
|
|
28885
29112
|
}
|
|
29113
|
+
/** A straight segment's two ends, the instance the stroke shader expands into a quad. */
|
|
29114
|
+
const SEGMENT_FLOATS = 4;
|
|
28886
29115
|
var PathPipeline = class {
|
|
28887
29116
|
device;
|
|
28888
29117
|
pipeline;
|
|
28889
29118
|
maxPipeline;
|
|
28890
29119
|
uniformLayout;
|
|
28891
29120
|
uniformPool;
|
|
28892
|
-
|
|
29121
|
+
segmentPool;
|
|
28893
29122
|
uniformBindGroupCache = new UniformBindGroupCache();
|
|
28894
|
-
scratchData = new Float32Array(
|
|
29123
|
+
scratchData = new Float32Array(24);
|
|
28895
29124
|
constructor(device, format) {
|
|
28896
29125
|
this.device = device;
|
|
28897
29126
|
this.uniformPool = new BufferPool(4096, GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST);
|
|
28898
|
-
this.
|
|
29127
|
+
this.segmentPool = new BufferPool(4096, GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST);
|
|
28899
29128
|
const module$1 = device.createShaderModule({
|
|
28900
29129
|
label: "path.wgsl",
|
|
28901
29130
|
code: pathWgsl
|
|
28902
29131
|
});
|
|
28903
29132
|
this.uniformLayout = createUniformLayout(device);
|
|
28904
|
-
|
|
28905
|
-
label
|
|
28906
|
-
|
|
28907
|
-
|
|
28908
|
-
|
|
28909
|
-
|
|
29133
|
+
const create = (label, blend) => device.createRenderPipeline({
|
|
29134
|
+
label,
|
|
29135
|
+
layout: device.createPipelineLayout({ bindGroupLayouts: [this.uniformLayout] }),
|
|
29136
|
+
vertex: {
|
|
29137
|
+
module: module$1,
|
|
29138
|
+
entryPoint: "vs",
|
|
29139
|
+
buffers: [{
|
|
29140
|
+
arrayStride: SEGMENT_FLOATS * 4,
|
|
29141
|
+
stepMode: "instance",
|
|
29142
|
+
attributes: [{
|
|
29143
|
+
shaderLocation: 0,
|
|
29144
|
+
offset: 0,
|
|
29145
|
+
format: "float32x4"
|
|
29146
|
+
}]
|
|
29147
|
+
}]
|
|
29148
|
+
},
|
|
29149
|
+
fragment: {
|
|
29150
|
+
module: module$1,
|
|
29151
|
+
entryPoint: "fs",
|
|
29152
|
+
targets: [{
|
|
29153
|
+
format,
|
|
29154
|
+
blend
|
|
29155
|
+
}]
|
|
29156
|
+
},
|
|
29157
|
+
primitive: { topology: "triangle-strip" }
|
|
28910
29158
|
});
|
|
28911
|
-
this.
|
|
28912
|
-
|
|
28913
|
-
|
|
28914
|
-
|
|
28915
|
-
|
|
28916
|
-
|
|
28917
|
-
|
|
28918
|
-
|
|
28919
|
-
|
|
28920
|
-
|
|
28921
|
-
|
|
28922
|
-
},
|
|
28923
|
-
alpha: {
|
|
28924
|
-
srcFactor: "one",
|
|
28925
|
-
dstFactor: "one",
|
|
28926
|
-
operation: "max"
|
|
28927
|
-
}
|
|
29159
|
+
this.pipeline = create("PathPipeline", PREMULTIPLIED_OVER);
|
|
29160
|
+
this.maxPipeline = create("PathPipeline.max", {
|
|
29161
|
+
color: {
|
|
29162
|
+
srcFactor: "one",
|
|
29163
|
+
dstFactor: "one",
|
|
29164
|
+
operation: "max"
|
|
29165
|
+
},
|
|
29166
|
+
alpha: {
|
|
29167
|
+
srcFactor: "one",
|
|
29168
|
+
dstFactor: "one",
|
|
29169
|
+
operation: "max"
|
|
28928
29170
|
}
|
|
28929
29171
|
});
|
|
28930
29172
|
}
|
|
28931
29173
|
resetPools() {
|
|
28932
29174
|
this.uniformPool.reset();
|
|
28933
|
-
this.
|
|
29175
|
+
this.segmentPool.reset();
|
|
28934
29176
|
}
|
|
28935
29177
|
drawPath(pass, transformStack, pathStr, color, strokeWidth, surfaceWidth, surfaceHeight, opts) {
|
|
28936
|
-
|
|
28937
|
-
if (segments.length === 0) return;
|
|
28938
|
-
if (opts?.trimStart !== void 0 || opts?.trimEnd !== void 0 || opts?.trimOffset !== void 0) segments = trimPathSegments(segments, opts.trimStart ?? 0, opts.trimEnd ?? 1, opts.trimOffset ?? 0);
|
|
28939
|
-
if (opts?.strokeDashArray && opts.strokeDashArray.length > 0) segments = dashPathSegments(segments, opts.strokeDashArray, opts.strokeDashOffset ?? 0);
|
|
28940
|
-
if (segments.length === 0) return;
|
|
28941
|
-
const c = parseColor(color);
|
|
28942
|
-
const opacity = opts?.opacity ?? 1;
|
|
28943
|
-
let capType = 0;
|
|
28944
|
-
if (opts?.strokeLineCap === "butt") capType = 1;
|
|
28945
|
-
else if (opts?.strokeLineCap === "square") capType = 2;
|
|
28946
|
-
for (const segment of segments) this.drawSegment(pass, transformStack, segment.p0, segment.p1, c, strokeWidth, capType, surfaceWidth, surfaceHeight, opacity, opts);
|
|
29178
|
+
this.drawSegments(pass, transformStack, parseSvgPathToSegments(pathStr), color, strokeWidth, surfaceWidth, surfaceHeight, opts);
|
|
28947
29179
|
}
|
|
28948
29180
|
drawSegments(pass, transformStack, segments, color, strokeWidth, surfaceWidth, surfaceHeight, opts) {
|
|
28949
29181
|
let activeSegments = segments;
|
|
28950
29182
|
if (opts?.trimStart !== void 0 || opts?.trimEnd !== void 0 || opts?.trimOffset !== void 0) activeSegments = trimPathSegments(activeSegments, opts.trimStart ?? 0, opts.trimEnd ?? 1, opts.trimOffset ?? 0);
|
|
28951
29183
|
if (opts?.strokeDashArray && opts.strokeDashArray.length > 0) activeSegments = dashPathSegments(activeSegments, opts.strokeDashArray, opts.strokeDashOffset ?? 0);
|
|
28952
|
-
|
|
29184
|
+
const ends = new Float32Array(activeSegments.length * SEGMENT_FLOATS);
|
|
29185
|
+
let count = 0;
|
|
29186
|
+
for (const { p0, p1 } of activeSegments) {
|
|
29187
|
+
if (Math.hypot(p1.x - p0.x, p1.y - p0.y) < 1e-6) continue;
|
|
29188
|
+
const at = count++ * SEGMENT_FLOATS;
|
|
29189
|
+
ends[at] = p0.x;
|
|
29190
|
+
ends[at + 1] = p0.y;
|
|
29191
|
+
ends[at + 2] = p1.x;
|
|
29192
|
+
ends[at + 3] = p1.y;
|
|
29193
|
+
}
|
|
29194
|
+
if (count === 0) return;
|
|
28953
29195
|
const c = parseColor(color);
|
|
28954
|
-
const opacity = opts?.opacity ?? 1;
|
|
28955
|
-
let capType = 0;
|
|
28956
|
-
if (opts?.strokeLineCap === "butt") capType = 1;
|
|
28957
|
-
else if (opts?.strokeLineCap === "square") capType = 2;
|
|
28958
|
-
for (const segment of activeSegments) this.drawSegment(pass, transformStack, segment.p0, segment.p1, c, strokeWidth, capType, surfaceWidth, surfaceHeight, opacity, opts);
|
|
28959
|
-
}
|
|
28960
|
-
drawSegment(pass, transformStack, p0, p1, color, strokeWidth, capType, surfaceWidth, surfaceHeight, opacity, opts) {
|
|
28961
29196
|
const data = this.scratchData;
|
|
28962
|
-
transformStack.packIntoBuffer(data, opacity, surfaceWidth, surfaceHeight, opts?.transform);
|
|
29197
|
+
transformStack.packIntoBuffer(data, opts?.opacity ?? 1, surfaceWidth, surfaceHeight, opts?.transform);
|
|
28963
29198
|
data[15] = strokeWidth;
|
|
28964
|
-
data[16] =
|
|
28965
|
-
data[17] =
|
|
28966
|
-
data[18] =
|
|
28967
|
-
data[19] =
|
|
28968
|
-
data[20] =
|
|
29199
|
+
data[16] = c.r;
|
|
29200
|
+
data[17] = c.g;
|
|
29201
|
+
data[18] = c.b;
|
|
29202
|
+
data[19] = c.a;
|
|
29203
|
+
data[20] = opts?.strokeLineCap === "butt" ? 1 : opts?.strokeLineCap === "square" ? 2 : 0;
|
|
28969
29204
|
data[21] = 0;
|
|
28970
29205
|
data[22] = 0;
|
|
28971
29206
|
data[23] = 0;
|
|
28972
|
-
data[24] = p0.x;
|
|
28973
|
-
data[25] = p0.y;
|
|
28974
|
-
data[26] = p1.x;
|
|
28975
|
-
data[27] = p1.y;
|
|
28976
29207
|
const uniformBuffer = this.uniformPool.getBuffer(this.device, data);
|
|
28977
|
-
const
|
|
28978
|
-
const
|
|
28979
|
-
|
|
28980
|
-
|
|
28981
|
-
|
|
28982
|
-
|
|
28983
|
-
const ny = dy / len * padding;
|
|
28984
|
-
const px = -ny;
|
|
28985
|
-
const py = nx;
|
|
28986
|
-
const vertexData = new Float32Array([
|
|
28987
|
-
p0.x - nx - px,
|
|
28988
|
-
p0.y - ny - py,
|
|
28989
|
-
p0.x - nx + px,
|
|
28990
|
-
p0.y - ny + py,
|
|
28991
|
-
p1.x + nx - px,
|
|
28992
|
-
p1.y + ny - py,
|
|
28993
|
-
p1.x + nx + px,
|
|
28994
|
-
p1.y + ny + py
|
|
28995
|
-
]);
|
|
28996
|
-
const vertexBuffer = this.vertexPool.getBuffer(this.device, vertexData);
|
|
28997
|
-
const pipeline = opts?.blendMode === "max" ? this.maxPipeline : this.pipeline;
|
|
28998
|
-
pass.setPipeline(pipeline);
|
|
28999
|
-
const uniformBindGroup = this.uniformBindGroupCache.getBindGroup(this.device, this.uniformLayout, uniformBuffer);
|
|
29000
|
-
pass.setBindGroup(0, uniformBindGroup);
|
|
29001
|
-
pass.setVertexBuffer(0, vertexBuffer);
|
|
29002
|
-
pass.draw(4);
|
|
29208
|
+
const segmentBuffer = this.segmentPool.getBuffer(this.device, ends.subarray(0, count * SEGMENT_FLOATS));
|
|
29209
|
+
const useMax = opts?.blendMode === "max";
|
|
29210
|
+
pass.setPipeline(useMax ? this.maxPipeline : this.pipeline);
|
|
29211
|
+
pass.setBindGroup(0, this.uniformBindGroupCache.getBindGroup(this.device, this.uniformLayout, uniformBuffer));
|
|
29212
|
+
pass.setVertexBuffer(0, segmentBuffer);
|
|
29213
|
+
pass.draw(4, count);
|
|
29003
29214
|
}
|
|
29004
29215
|
destroy() {
|
|
29005
29216
|
this.uniformPool.destroy();
|
|
29006
|
-
this.
|
|
29217
|
+
this.segmentPool.destroy();
|
|
29007
29218
|
this.uniformBindGroupCache.destroy();
|
|
29008
29219
|
}
|
|
29009
29220
|
};
|
|
@@ -41574,5 +41785,5 @@ var NodeSurfaceProvider = class {
|
|
|
41574
41785
|
if (typeof globalThis !== "undefined") globalThis.__GATEWAI_DELAYS__ = globalThis.__GATEWAI_DELAYS__ || /* @__PURE__ */ new Set();
|
|
41575
41786
|
|
|
41576
41787
|
//#endregion
|
|
41577
|
-
export {
|
|
41578
|
-
//# sourceMappingURL=dist-
|
|
41788
|
+
export { poseNodes as $, TextAnchorConfigSchema as $t, emojiGraphemes as A, evaluateSkewMatrix as An, AnimatableGlyphPropsSchema as At, jointMatrices as B, sampleCurveGeometry as Bn, GlyphAnchorPointSchema as Bt, drawGifNode as C, distanceToCurveParameter as Cn, parseColorToRgb as Ct, drawSignalNode as D, evaluateExpressionSelector as Dn, AdvancedTextAnimatorSchema as Dt, drawParagraphNode as E, evaluateCubicBezierDerivative as En, AdvancedTextAnimatorBuilder as Et, getPrimitiveGeometry as F, generatePathSegments as Fn, DynamicStrokePropertiesSchema as Ft, measureMaxCaptionHeight as G, SelectorBasedOnSchema as Gt, loadModel3D as H, signalRegistry as Hn, LineSpacingDynamicsSchema as Ht, getRegisteredFontSource as I, getScramblePool as In, EnhancedTextNodeSchema as It, parseDashArray as J, SelectorUnitsSchema as Jt, mediaDecoderCache as K, SelectorModeSchema as Kt, getRenderer2D as L, getShuffledOrder as Ln, ExpressionSelectorSchema as Lt, fitSpansToText as M, evaluateTypewriterState as Mn, AudioSpectrumTypographySchema as Mt, generateExtrudedTextGeometry as N, evaluateVolumetricFormation as Nn, ChromaticGlitchConfigSchema as Nt, drawSvgNode as O, evaluateMarqueeOffset as On, AnchorGroupingSchema as Ot, getHeadlessFontPath as P, generateArcLengthLUT as Pn, CubicBezierSegmentSchema as Pt, parseSvgPathToSegments as Q, SpringPhysicsSchema as Qt, initHeadlessWebGPU as R, parseSvgPathToCubicBeziers as Rn, ExtendedGlyphPropertiesSchema as Rt, drawCaptionNode as S, deterministicWigglyNoise as Sn, linearRgb as St, drawLottieNode as T, evaluateCubicBezier as Tn, AETextAnimatorSchema as Tt, loadOBJ as U, waveToCubicBeziers as Un, LongShadowConfigSchema as Ut, loadFBX as V, samplePathChainGeometry as Vn, KineticMarqueeConfigSchema as Vt, lutStore as W, ParticleDissolveConfigSchema as Wt, parseMTL as X, SkewPropertiesSchema as Xt, parseFBX as Y, SignalRegistry as Yt, parseOBJ as Z, Spatial3DPropertiesSchema as Zt, buildShapeSvgPath as _, buildPathLUT as _n, Light3D as _t, GlassPipeline as a, TextPathSourceSchema as an, setRegisteredFontSource as at, colorMatrixWgsl as b, computeLineLeadingDisplacement as bn, Path3D as bt, Renderer2D as c, TextSelectorSchema as cn, srtLoader as ct, ScreenSpaceRelightPipeline as d, TypewriterAnimatorSchema as dn, transformScale as dt, TextAnimatorBuilder as en, probeVideoSize as et, ShadowPipeline as f, TypingCadenceSchema as fn, GetFontAssetUrl as ft, WebGPUAudioProcessor as g, VolumetricFormationModeSchema as gn, LIGHT_UNIFORM_SIZE_BYTES as gt, SlugPipeline as h, VolumetricFormationConfigSchema as hn, ENVIRONMENT_PRESETS as ht, EffectPipeline as i, TextPathOptionsSchema as in, sampleMorphWeights as it, ensureDevice as j, evaluateSpringProgress as jn, AudioSignalComputePipeline as jt, drawVideoNode as k, evaluateSelectorCombination as kn, AnchorPresetSchema as kt, Renderer3D as l, TextSignalSelectorSchema as ln, textureCache as lt, SlugGeometry as m, Vec2Schema as mn, Camera3D as mt, AudioLatentTrackCache as n, TextCursorStyleSchema as nn, resolveInputUrl as nt, MotionBlurPipeline as o, TextRangeSelectorSchema as on, shaderStore as ot, SlugFontCache as p, VariableFontAxesSchema as pn, resolveMediaSourceUrl as pt, parseColor as q, SelectorShapeSchema as qt, AudioMeshDeformPipeline as r, TextPathBuilder as rn, resolveTextSpans as rt, NodeSurfaceProvider as s, TextScrambleConfigSchema as sn, spansText as st, AudioLatentEngine as t, TextCursorConfigSchema as tn, registerHeadlessFont as tt, SSAOPipeline as u, TextWigglySelectorSchema as un, trackAudioPitch as ut, clearAllVideoCache as v, buildWGSLSignalFn as vn, MAX_LIGHTS as vt, drawImageNode as w, ellipseToCubicBeziers as wn, resolveEnvironment as wt, describeGpu as x, computeRangeSelectorWeight as xn, Vector3Math as xt, clearHeadlessFonts as y, computeAnchorPivotOffset as yn, Matrix4Math as yt, inputStore as z, sampleAudioSpectrumScale as zn, GlyphAnchorGroupingSchema as zt };
|
|
41789
|
+
//# sourceMappingURL=dist-DtPPPsZV.mjs.map
|