framefields 2.0.8 → 2.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio--hi7MiZt.mjs → audio-B7Al-W_0.mjs} +3 -3
- package/dist/{audio--hi7MiZt.mjs.map → audio-B7Al-W_0.mjs.map} +1 -1
- package/dist/{audio-a6pY05g2.d.mts → audio-BxA0sL9z.d.mts} +3 -3
- package/dist/{audio-a6pY05g2.d.mts.map → audio-BxA0sL9z.d.mts.map} +1 -1
- package/dist/{client-C74hb7fy.mjs → client-CwRhflHE.mjs} +1 -1
- package/dist/{client-C74hb7fy.mjs.map → client-CwRhflHE.mjs.map} +1 -1
- package/dist/{dist-BQFap0wr.mjs → dist-B9PkqWnN.mjs} +78 -17
- package/dist/dist-B9PkqWnN.mjs.map +1 -0
- package/dist/{dist-ZVlYkuR4.mjs → dist-BFjSQP7i.mjs} +17 -8
- package/dist/dist-BFjSQP7i.mjs.map +1 -0
- package/dist/{dist-cjs-qEJrwjGk.mjs → dist-cjs--lfMLs3U.mjs} +4 -4
- package/dist/{dist-cjs-qEJrwjGk.mjs.map → dist-cjs--lfMLs3U.mjs.map} +1 -1
- package/dist/{dist-cjs-x5cwlqA5.mjs → dist-cjs--pxyGFw2.mjs} +1 -1
- package/dist/{dist-cjs-x5cwlqA5.mjs.map → dist-cjs--pxyGFw2.mjs.map} +1 -1
- package/dist/dist-cjs-3pon9kTt.mjs +6 -0
- package/dist/{dist-cjs-Dzs5P3K0.mjs → dist-cjs-BDpO-TH_.mjs} +1 -1
- package/dist/{dist-cjs-Dzs5P3K0.mjs.map → dist-cjs-BDpO-TH_.mjs.map} +1 -1
- package/dist/{dist-cjs-lYvO8aDo.mjs → dist-cjs-BiKQozdJ.mjs} +3 -3
- package/dist/{dist-cjs-lYvO8aDo.mjs.map → dist-cjs-BiKQozdJ.mjs.map} +1 -1
- package/dist/{dist-cjs-BUwe2XhR.mjs → dist-cjs-BmyyWYWv.mjs} +2 -2
- package/dist/{dist-cjs-BUwe2XhR.mjs.map → dist-cjs-BmyyWYWv.mjs.map} +1 -1
- package/dist/{dist-cjs-DgxjcvBN.mjs → dist-cjs-CND_ghfH.mjs} +1 -1
- package/dist/{dist-cjs-DgxjcvBN.mjs.map → dist-cjs-CND_ghfH.mjs.map} +1 -1
- package/dist/{dist-cjs-BWgoUCXJ.mjs → dist-cjs-CQwmMllY.mjs} +6 -6
- package/dist/{dist-cjs-BWgoUCXJ.mjs.map → dist-cjs-CQwmMllY.mjs.map} +1 -1
- package/dist/{dist-cjs-B5EVqDFp.mjs → dist-cjs-CgFzrgj8.mjs} +1 -1
- package/dist/{dist-cjs-B5EVqDFp.mjs.map → dist-cjs-CgFzrgj8.mjs.map} +1 -1
- package/dist/{dist-cjs-ECMuIF57.mjs → dist-cjs-CsU2sZoX.mjs} +4 -4
- package/dist/{dist-cjs-ECMuIF57.mjs.map → dist-cjs-CsU2sZoX.mjs.map} +1 -1
- package/dist/{dist-cjs-BKmGCgtm.mjs → dist-cjs-DJ8fcQEe.mjs} +11 -11
- package/dist/{dist-cjs-BKmGCgtm.mjs.map → dist-cjs-DJ8fcQEe.mjs.map} +1 -1
- package/dist/{dist-cjs-D7kEM-Mj.mjs → dist-cjs-DT2jJlcK.mjs} +5 -5
- package/dist/{dist-cjs-D7kEM-Mj.mjs.map → dist-cjs-DT2jJlcK.mjs.map} +1 -1
- package/dist/{dist-cjs-BUc0_kg-.mjs → dist-cjs-DjzmP0-x.mjs} +13 -13
- package/dist/{dist-cjs-BUc0_kg-.mjs.map → dist-cjs-DjzmP0-x.mjs.map} +1 -1
- package/dist/{dist-cjs-BGJkdexX.mjs → dist-cjs-DzjrlfbE.mjs} +14 -14
- package/dist/{dist-cjs-BGJkdexX.mjs.map → dist-cjs-DzjrlfbE.mjs.map} +1 -1
- package/dist/{dist-cjs-Df7144zM.mjs → dist-cjs-M-8QOgS_.mjs} +2 -2
- package/dist/{dist-cjs-Df7144zM.mjs.map → dist-cjs-M-8QOgS_.mjs.map} +1 -1
- package/dist/{dist-cjs-DFUmy89O.mjs → dist-cjs-TsA8LFXC.mjs} +3 -3
- package/dist/{dist-cjs-DFUmy89O.mjs.map → dist-cjs-TsA8LFXC.mjs.map} +1 -1
- package/dist/{dist-cjs-DsMdld8l.mjs → dist-cjs-agQl9T8M.mjs} +6 -6
- package/dist/{dist-cjs-DsMdld8l.mjs.map → dist-cjs-agQl9T8M.mjs.map} +1 -1
- package/dist/effects/index.d.mts +5 -5
- package/dist/effects/index.mjs +27 -26
- package/dist/{effects-axfL_C3a.mjs → effects-CREopCyP.mjs} +27 -3
- package/dist/effects-CREopCyP.mjs.map +1 -0
- package/dist/{event-streams-D-APZ7Ke.mjs → event-streams-BaNGaLxh.mjs} +2 -2
- package/dist/{event-streams-D-APZ7Ke.mjs.map → event-streams-BaNGaLxh.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +1 -1
- package/dist/{fonts-Cy26mbrO.mjs → fonts-DhEQ5h6E.mjs} +2 -2
- package/dist/{fonts-Cy26mbrO.mjs.map → fonts-DhEQ5h6E.mjs.map} +1 -1
- package/dist/{index-BJUS4Nx6.d.mts → index-BXNNJVs8.d.mts} +2 -2
- package/dist/{index-BJUS4Nx6.d.mts.map → index-BXNNJVs8.d.mts.map} +1 -1
- package/dist/{index-CbzEM_o6.d.mts → index-CQcdKyxF.d.mts} +1 -1
- package/dist/{index-CbzEM_o6.d.mts.map → index-CQcdKyxF.d.mts.map} +1 -1
- package/dist/{index-BJx_Qxc_.d.mts → index-CvDVpaKn.d.mts} +69 -27
- package/dist/index-CvDVpaKn.d.mts.map +1 -0
- package/dist/{index-WIPHLy5m.d.mts → index-D1zaOwEU.d.mts} +1 -1
- package/dist/index-D1zaOwEU.d.mts.map +1 -0
- package/dist/{index-CZChQhXZ.d.mts → index-J9CIK_nu.d.mts} +4 -2
- package/dist/index-J9CIK_nu.d.mts.map +1 -0
- package/dist/{index-Bi2nRZ_g.d.mts → index-fo4E7A6C.d.mts} +3 -3
- package/dist/{index-Bi2nRZ_g.d.mts.map → index-fo4E7A6C.d.mts.map} +1 -1
- package/dist/{index-BLbUQolI.d.mts → index-oodg5k9K.d.mts} +3 -3
- package/dist/{index-BLbUQolI.d.mts.map → index-oodg5k9K.d.mts.map} +1 -1
- package/dist/index.d.mts +11 -10
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +43 -42
- package/dist/index.mjs.map +1 -1
- package/dist/{package-C58KmGKw.mjs → package-XpCRbTOA.mjs} +1 -1
- package/dist/{package-C58KmGKw.mjs.map → package-XpCRbTOA.mjs.map} +1 -1
- package/dist/preview/index.d.mts +2 -2
- package/dist/preview/index.mjs +11 -11
- package/dist/{preview-BUPB38Kk.mjs → preview-9ifxywUM.mjs} +2 -2
- package/dist/{preview-BUPB38Kk.mjs.map → preview-9ifxywUM.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-3ROJ7JVY.mjs → chunk-25IW7NYO.mjs} +1 -1
- package/dist/preview-engine/chunk-36YGYLKD.mjs +58 -0
- package/dist/preview-engine/chunk-4VOHF3FF.mjs +1 -0
- package/dist/preview-engine/{chunk-TNZENER3.mjs → chunk-7DIAFPQP.mjs} +2 -2
- package/dist/preview-engine/{chunk-CXFEQ5PM.mjs → chunk-7O24H4YT.mjs} +2 -2
- package/dist/preview-engine/{chunk-VWLR2AZR.mjs → chunk-AEK5BO3J.mjs} +1 -1
- package/dist/preview-engine/{chunk-5PPSCISJ.mjs → chunk-AG5JNZYQ.mjs} +1 -1
- package/dist/preview-engine/{chunk-BE3CEVJB.mjs → chunk-AUFSM5KI.mjs} +2 -2
- package/dist/preview-engine/chunk-AW7HNZKR.mjs +98 -0
- package/dist/preview-engine/chunk-BHFI3Y4T.mjs +1 -0
- package/dist/preview-engine/chunk-DLXQDDIN.mjs +46 -0
- package/dist/preview-engine/chunk-EJGLUZMW.mjs +1 -0
- package/dist/preview-engine/{chunk-XSMK5E2V.mjs → chunk-JAOXXYXG.mjs} +2 -2
- package/dist/preview-engine/{chunk-PO4VAAQC.mjs → chunk-K52S5DJX.mjs} +1 -1
- package/dist/preview-engine/{chunk-IGFT3XLN.mjs → chunk-MDDF2GCF.mjs} +2 -2
- package/dist/preview-engine/chunk-MJM3NFEC.mjs +315 -0
- package/dist/preview-engine/{chunk-BUWK5RJ4.mjs → chunk-QTKJXDIW.mjs} +1 -1
- package/dist/preview-engine/{chunk-WQ7BFSKF.mjs → chunk-RNOO4UR5.mjs} +1 -1
- package/dist/preview-engine/{chunk-POPVFC5P.mjs → chunk-S4CSX6K5.mjs} +10 -10
- package/dist/preview-engine/chunk-SNYAHQ25.mjs +186 -0
- package/dist/preview-engine/{chunk-JNEVSC4I.mjs → chunk-T6CC2KCZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-MC7TZZLD.mjs → chunk-T6COGNOW.mjs} +2 -2
- package/dist/preview-engine/chunk-VVLM6LZ3.mjs +1 -0
- package/dist/preview-engine/chunk-XUM42I4R.mjs +1 -0
- package/dist/preview-engine/chunk-ZDCA6NVT.mjs +82 -0
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +13 -13
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/{renderers-Q2ZDD5K2.mjs → renderers-2US2NIUG.mjs} +2 -2
- package/dist/preview-engine/{renderers-54AQK6RF.mjs → renderers-32PIFHPS.mjs} +1 -1
- package/dist/preview-engine/{renderers-O6HOYIPS.mjs → renderers-76PQY2SO.mjs} +1 -1
- package/dist/preview-engine/renderers-7HNVXNAI.mjs +248 -0
- package/dist/preview-engine/{renderers-PXGLEFZO.mjs → renderers-CI2GXWLP.mjs} +1 -1
- package/dist/preview-engine/{renderers-GC7EGB5Z.mjs → renderers-CRKRWR2Y.mjs} +1 -1
- package/dist/preview-engine/{renderers-47UITXLZ.mjs → renderers-EE2GFG7J.mjs} +1 -1
- package/dist/preview-engine/{renderers-E3JYRLSD.mjs → renderers-GJSUN5HU.mjs} +1 -1
- package/dist/preview-engine/{renderers-KCP4TFHG.mjs → renderers-IHKORHMT.mjs} +1 -1
- package/dist/preview-engine/{renderers-OBMTU3QY.mjs → renderers-NQUDQEHY.mjs} +1 -1
- package/dist/preview-engine/{renderers-QECJP22T.mjs → renderers-NSY2SDIE.mjs} +1 -1
- package/dist/preview-engine/{renderers-KS4HPV6Q.mjs → renderers-PWLWOZY4.mjs} +1 -1
- package/dist/preview-engine/{renderers-TUYQLKHJ.mjs → renderers-W5CVDJVH.mjs} +1 -1
- package/dist/preview-engine/{renderers-N5UPJY73.mjs → renderers-WLLJFZTF.mjs} +1 -1
- package/dist/preview-engine/renderers-WN4SYFCU.mjs +1 -0
- package/dist/preview-engine/{renderers-TG62LZTF.mjs → renderers-XFBSGTHU.mjs} +1 -1
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-Jt07Tx1J.mjs → program-xRfFoPxe.mjs} +2 -2
- package/dist/{program-Jt07Tx1J.mjs.map → program-xRfFoPxe.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +3 -3
- package/dist/{renderer-Bal8734U.d.mts → renderer-2NQWaZd7.d.mts} +2 -2
- package/dist/{renderer-Bal8734U.d.mts.map → renderer-2NQWaZd7.d.mts.map} +1 -1
- package/dist/{renderer-CIMjMFGm.mjs → renderer-5h0llpx7.mjs} +2 -2
- package/dist/{renderer-CIMjMFGm.mjs.map → renderer-5h0llpx7.mjs.map} +1 -1
- package/dist/{renderer-U0LJuM9D.mjs → renderer-6GeDT4Mx.mjs} +2 -2
- package/dist/{renderer-U0LJuM9D.mjs.map → renderer-6GeDT4Mx.mjs.map} +1 -1
- package/dist/{renderer-CIQYTiT9.mjs → renderer-8qpGxSSO.mjs} +2 -2
- package/dist/{renderer-CIQYTiT9.mjs.map → renderer-8qpGxSSO.mjs.map} +1 -1
- package/dist/{renderer-BkOXe6o6.mjs → renderer-9wp5R7PL.mjs} +2 -2
- package/dist/{renderer-BkOXe6o6.mjs.map → renderer-9wp5R7PL.mjs.map} +1 -1
- package/dist/renderer-B4F6wL68.mjs +3 -0
- package/dist/renderer-B4i1jmiT.mjs +3 -0
- package/dist/renderer-B5ylY3uM.mjs +3 -0
- package/dist/{renderer-B6Q5e9CU.mjs → renderer-BA8YwBRQ.mjs} +2 -2
- package/dist/{renderer-B6Q5e9CU.mjs.map → renderer-BA8YwBRQ.mjs.map} +1 -1
- package/dist/{renderer-DVQp5fLG.mjs → renderer-BGXbGqY4.mjs} +5 -4
- package/dist/{renderer-DVQp5fLG.mjs.map → renderer-BGXbGqY4.mjs.map} +1 -1
- package/dist/{renderer-Dgg6pQGI.mjs → renderer-BJ6Y-7ke.mjs} +2 -2
- package/dist/{renderer-Dgg6pQGI.mjs.map → renderer-BJ6Y-7ke.mjs.map} +1 -1
- package/dist/{renderer-BDLnExoP.mjs → renderer-BM05sB8m.mjs} +8 -7
- package/dist/renderer-BM05sB8m.mjs.map +1 -0
- package/dist/renderer-BPw23wiR.mjs +3 -0
- package/dist/{renderer-DP-xNaYX.mjs → renderer-BZmfKIom.mjs} +2 -2
- package/dist/{renderer-DP-xNaYX.mjs.map → renderer-BZmfKIom.mjs.map} +1 -1
- package/dist/{renderer-DXyaswab.mjs → renderer-BgdkEFmv.mjs} +18 -17
- package/dist/renderer-BgdkEFmv.mjs.map +1 -0
- package/dist/renderer-BghW-bSZ.mjs +3 -0
- package/dist/{renderer-BdSHGzHj.mjs → renderer-BiSALMQy.mjs} +1 -1
- package/dist/{renderer-C-Bv9nVB.mjs → renderer-BnvqEqvE.mjs} +2 -2
- package/dist/{renderer-C-Bv9nVB.mjs.map → renderer-BnvqEqvE.mjs.map} +1 -1
- package/dist/{renderer-CmIySXSN.mjs → renderer-BpCxKWQm.mjs} +11 -5
- package/dist/renderer-BpCxKWQm.mjs.map +1 -0
- package/dist/{renderer-CceiI6P7.mjs → renderer-BtRfKx5N.mjs} +18 -4
- package/dist/renderer-BtRfKx5N.mjs.map +1 -0
- package/dist/{renderer-CXZe0lfI.mjs → renderer-But0u-xi.mjs} +2 -2
- package/dist/{renderer-CXZe0lfI.mjs.map → renderer-But0u-xi.mjs.map} +1 -1
- package/dist/renderer-Bw3oZ9YT.mjs +3 -0
- package/dist/renderer-C2009W-_.mjs +3 -0
- package/dist/renderer-C36yoGXG.mjs +3 -0
- package/dist/{renderer-VPK8JnSw.mjs → renderer-CIYcdZuZ.mjs} +7 -6
- package/dist/{renderer-VPK8JnSw.mjs.map → renderer-CIYcdZuZ.mjs.map} +1 -1
- package/dist/{renderer-D49-PYDo.mjs → renderer-CJNyhr_S.mjs} +2 -2
- package/dist/{renderer-D49-PYDo.mjs.map → renderer-CJNyhr_S.mjs.map} +1 -1
- package/dist/renderer-CM1_2ZWA.mjs +3 -0
- package/dist/{renderer-0uccAKQe.mjs → renderer-CNF10fCq.mjs} +2 -2
- package/dist/{renderer-0uccAKQe.mjs.map → renderer-CNF10fCq.mjs.map} +1 -1
- package/dist/{renderer-DxBUppHf.mjs → renderer-CStktK20.mjs} +74 -63
- package/dist/{renderer-DxBUppHf.mjs.map → renderer-CStktK20.mjs.map} +1 -1
- package/dist/renderer-CWlzudP8.mjs +3 -0
- package/dist/{renderer-D5GsF1LT.mjs → renderer-CcU7dVn9.mjs} +2 -2
- package/dist/{renderer-D5GsF1LT.mjs.map → renderer-CcU7dVn9.mjs.map} +1 -1
- package/dist/renderer-Cd5vzrGs.mjs +3 -0
- package/dist/renderer-CeJ_vDXI.mjs +3 -0
- package/dist/{renderer-DFKsLrUs.mjs → renderer-CepMDQ06.mjs} +1 -1
- package/dist/{renderer-DFKsLrUs.mjs.map → renderer-CepMDQ06.mjs.map} +1 -1
- package/dist/{renderer-DrgNyCSx.mjs → renderer-CfeoxM_3.mjs} +2 -2
- package/dist/{renderer-DrgNyCSx.mjs.map → renderer-CfeoxM_3.mjs.map} +1 -1
- package/dist/{renderer-BENX0vRC.mjs → renderer-CgmFh6MY.mjs} +1 -1
- package/dist/renderer-CjY77sB_.mjs +3 -0
- package/dist/{renderer-Bu0xOP_v.mjs → renderer-CoZKST2Y.mjs} +2 -2
- package/dist/{renderer-Bu0xOP_v.mjs.map → renderer-CoZKST2Y.mjs.map} +1 -1
- package/dist/{renderer-BQZniXw0.mjs → renderer-CroHPOsX.mjs} +2 -2
- package/dist/{renderer-BQZniXw0.mjs.map → renderer-CroHPOsX.mjs.map} +1 -1
- package/dist/{renderer-DabG62XS.mjs → renderer-D2XD4QYk.mjs} +1 -1
- package/dist/{renderer-DabG62XS.mjs.map → renderer-D2XD4QYk.mjs.map} +1 -1
- package/dist/renderer-D5Z6mda5.mjs +3 -0
- package/dist/{renderer-Bv-ljXHc.mjs → renderer-D7ztfQHX.mjs} +2 -2
- package/dist/{renderer-Bv-ljXHc.mjs.map → renderer-D7ztfQHX.mjs.map} +1 -1
- package/dist/{renderer-DjI45OYC.mjs → renderer-D7zvPHKn.mjs} +1 -1
- package/dist/{renderer-DjI45OYC.mjs.map → renderer-D7zvPHKn.mjs.map} +1 -1
- package/dist/renderer-D9NnIx7o.mjs +3 -0
- package/dist/{renderer-C5RhNQdr.mjs → renderer-DAMJZNtX.mjs} +10 -9
- package/dist/{renderer-C5RhNQdr.mjs.map → renderer-DAMJZNtX.mjs.map} +1 -1
- package/dist/{renderer-Bq3Geqe3.mjs → renderer-DBlPbsgi.mjs} +1 -1
- package/dist/renderer-DCJa7OGk.mjs +3 -0
- package/dist/{renderer-DDd3cjaz.mjs → renderer-DCkSR2Ne.mjs} +18 -11
- package/dist/renderer-DCkSR2Ne.mjs.map +1 -0
- package/dist/{renderer-B80s47yo.mjs → renderer-DEJwPRkR.mjs} +1 -1
- package/dist/{renderer-B80s47yo.mjs.map → renderer-DEJwPRkR.mjs.map} +1 -1
- package/dist/renderer-DGwSl7g1.mjs +3 -0
- package/dist/{renderer-DbaSgadp.mjs → renderer-DNNqpK7t.mjs} +2 -2
- package/dist/{renderer-DbaSgadp.mjs.map → renderer-DNNqpK7t.mjs.map} +1 -1
- package/dist/renderer-DNoRNfMm.mjs +3 -0
- package/dist/renderer-DOZ8bpyY.mjs +3 -0
- package/dist/renderer-DRHyRNU8.mjs +3 -0
- package/dist/{renderer-BjROyv5F.mjs → renderer-DTvfYkI9.mjs} +2 -2
- package/dist/{renderer-BjROyv5F.mjs.map → renderer-DTvfYkI9.mjs.map} +1 -1
- package/dist/{renderer-CboM4tba.mjs → renderer-DYm4duFr.mjs} +11 -5
- package/dist/renderer-DYm4duFr.mjs.map +1 -0
- package/dist/{renderer-CIvaRnP_.mjs → renderer-D_1oDOCP.mjs} +1 -1
- package/dist/{renderer-CIvaRnP_.mjs.map → renderer-D_1oDOCP.mjs.map} +1 -1
- package/dist/renderer-DdVBt8Rz.mjs +263 -0
- package/dist/renderer-DdVBt8Rz.mjs.map +1 -0
- package/dist/{renderer-BPbNLPcz.mjs → renderer-DffynBHa.mjs} +2 -2
- package/dist/{renderer-BPbNLPcz.mjs.map → renderer-DffynBHa.mjs.map} +1 -1
- package/dist/{renderer-CXJxK7HP.mjs → renderer-DjTiNeAp.mjs} +17 -4
- package/dist/renderer-DjTiNeAp.mjs.map +1 -0
- package/dist/{renderer-DP948J9X.mjs → renderer-Dju9CaeL.mjs} +18 -4
- package/dist/renderer-Dju9CaeL.mjs.map +1 -0
- package/dist/renderer-DlD85Xoi.mjs +3 -0
- package/dist/renderer-Dr0bgOrW.mjs +3 -0
- package/dist/{renderer-BTFPC3UJ.mjs → renderer-DryPrxYc.mjs} +1 -1
- package/dist/renderer-DurtG-Hc.mjs +3 -0
- package/dist/{renderer-zwxwjWqa.mjs → renderer-DxtHmyAa.mjs} +2 -2
- package/dist/{renderer-zwxwjWqa.mjs.map → renderer-DxtHmyAa.mjs.map} +1 -1
- package/dist/{renderer-h-HOoLwD.mjs → renderer-_bygZSKk.mjs} +1 -1
- package/dist/{renderer-h-HOoLwD.mjs.map → renderer-_bygZSKk.mjs.map} +1 -1
- package/dist/{renderer-BD6Jkc8j.mjs → renderer-b6sZN90h.mjs} +4 -3
- package/dist/{renderer-BD6Jkc8j.mjs.map → renderer-b6sZN90h.mjs.map} +1 -1
- package/dist/renderer-d5-F_48R.mjs +3 -0
- package/dist/renderer-eFv9HBmL.mjs +3 -0
- package/dist/renderer-iuV6wQoL.mjs +4 -0
- package/dist/{renderer-D5xelwpw.mjs → renderer-jkZ_IQnW.mjs} +2 -2
- package/dist/{renderer-D5xelwpw.mjs.map → renderer-jkZ_IQnW.mjs.map} +1 -1
- package/dist/renderer-n-uuWPF4.mjs +3 -0
- package/dist/renderer-rzccTFuY.mjs +3 -0
- package/dist/{renderer-DIfk6m2O.mjs → renderer-wVldKtFU.mjs} +2 -2
- package/dist/{renderer-DIfk6m2O.mjs.map → renderer-wVldKtFU.mjs.map} +1 -1
- package/dist/{renderer-o4wOvjEC.mjs → renderer-xKOVmd2O.mjs} +21 -18
- package/dist/renderer-xKOVmd2O.mjs.map +1 -0
- package/dist/renderer-y9eGFPFL.mjs +3 -0
- package/dist/{renderers-CP8CFWDs-BQBjaV9O.mjs → renderers-CP8CFWDs-BLgwUYX2.mjs} +2 -2
- package/dist/{renderers-CP8CFWDs-BQBjaV9O.mjs.map → renderers-CP8CFWDs-BLgwUYX2.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +4 -4
- package/dist/{signin-CZj4Oc5s.mjs → signin-Db08vl-g.mjs} +9 -9
- package/dist/{signin-CZj4Oc5s.mjs.map → signin-Db08vl-g.mjs.map} +1 -1
- package/dist/{sso-oidc-C0_31ThY.mjs → sso-oidc-CpLz_lIu.mjs} +9 -9
- package/dist/{sso-oidc-C0_31ThY.mjs.map → sso-oidc-CpLz_lIu.mjs.map} +1 -1
- package/dist/{sts-DD4ggEXC.mjs → sts-BQefGuml.mjs} +2 -2
- package/dist/{sts-nXw8RDJI.mjs → sts-Dgl0kH-t.mjs} +9 -9
- package/dist/{sts-nXw8RDJI.mjs.map → sts-Dgl0kH-t.mjs.map} +1 -1
- package/package.json +55 -54
- package/dist/dist-BQFap0wr.mjs.map +0 -1
- package/dist/dist-ZVlYkuR4.mjs.map +0 -1
- package/dist/dist-cjs-CmZEMtO6.mjs +0 -6
- package/dist/effects-axfL_C3a.mjs.map +0 -1
- package/dist/index-BJx_Qxc_.d.mts.map +0 -1
- package/dist/index-CZChQhXZ.d.mts.map +0 -1
- package/dist/index-WIPHLy5m.d.mts.map +0 -1
- package/dist/preview-engine/chunk-2XXICKQV.mjs +0 -82
- package/dist/preview-engine/chunk-66NVL4BN.mjs +0 -58
- package/dist/preview-engine/chunk-7MJVROKR.mjs +0 -98
- package/dist/preview-engine/chunk-7NVDTELW.mjs +0 -1
- package/dist/preview-engine/chunk-DMWSTYFF.mjs +0 -1
- package/dist/preview-engine/chunk-FKZ4XXPE.mjs +0 -1
- package/dist/preview-engine/chunk-JQ4WY6BZ.mjs +0 -186
- package/dist/preview-engine/chunk-S3P3MJYU.mjs +0 -1
- package/dist/preview-engine/chunk-ZJFAGIOM.mjs +0 -315
- package/dist/preview-engine/renderers-MZBR3MSR.mjs +0 -248
- package/dist/renderer-1mNREW16.mjs +0 -3
- package/dist/renderer-4tKI3p9c.mjs +0 -3
- package/dist/renderer-B3XeKN-e.mjs +0 -3
- package/dist/renderer-B7_6SHd8.mjs +0 -3
- package/dist/renderer-BDLnExoP.mjs.map +0 -1
- package/dist/renderer-BENF6Wts.mjs +0 -3
- package/dist/renderer-BMovYRoR.mjs +0 -3
- package/dist/renderer-BPiLdwI1.mjs +0 -3
- package/dist/renderer-BdyMrzUX.mjs +0 -3
- package/dist/renderer-BfpdekRn.mjs +0 -3
- package/dist/renderer-BfvBHHNr.mjs +0 -3
- package/dist/renderer-BtdnLjKZ.mjs +0 -3
- package/dist/renderer-C0q5UUY7.mjs +0 -3
- package/dist/renderer-CXJxK7HP.mjs.map +0 -1
- package/dist/renderer-CboM4tba.mjs.map +0 -1
- package/dist/renderer-CceiI6P7.mjs.map +0 -1
- package/dist/renderer-Cg-rJgwM.mjs +0 -3
- package/dist/renderer-CkgQArsi.mjs +0 -3
- package/dist/renderer-CmIySXSN.mjs.map +0 -1
- package/dist/renderer-CnO9KcmP.mjs +0 -3
- package/dist/renderer-Cnp5JCwi.mjs +0 -3
- package/dist/renderer-CwiCQzjW.mjs +0 -4
- package/dist/renderer-D2LCMZ0l.mjs +0 -3
- package/dist/renderer-D6bWQtr-.mjs +0 -3
- package/dist/renderer-DBGy4qIh.mjs +0 -3
- package/dist/renderer-DBRnvHBV.mjs +0 -3
- package/dist/renderer-DDd3cjaz.mjs.map +0 -1
- package/dist/renderer-DJgrcu3v.mjs +0 -3
- package/dist/renderer-DP948J9X.mjs.map +0 -1
- package/dist/renderer-DTpBOlDA.mjs +0 -3
- package/dist/renderer-DWwIX4Mr.mjs +0 -3
- package/dist/renderer-DXyaswab.mjs.map +0 -1
- package/dist/renderer-DfnacE0H.mjs +0 -3
- package/dist/renderer-RA8pee2T.mjs +0 -3
- package/dist/renderer-eH4u4-2c.mjs +0 -3
- package/dist/renderer-eWOqFUz9.mjs +0 -3
- package/dist/renderer-o4wOvjEC.mjs.map +0 -1
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import{a as Ee}from"./chunk-VXUJWPIK.mjs";import{a as ut}from"./chunk-XKO4RYKN.mjs";import{c as mt}from"./chunk-UC7CSW2A.mjs";import{I as rt,a as S,b as C}from"./chunk-NQZKBFC6.mjs";import{b as nt,h as ge,i as Le,l as te,t as ot}from"./chunk-ZNGOAGAI.mjs";import{a as at,e as ct,i as je,j as lt}from"./chunk-4GEWSUX5.mjs";import{b as pe,c as st,e as it}from"./chunk-MTJHQATU.mjs";import{d as dt,e as be,g as Ve}from"./chunk-YAQFFQPG.mjs";import{a as Jt,c as Qt,d as B,e as y}from"./chunk-BVF64D6H.mjs";var Vt=Jt((ko,jt)=>{y();var _e=()=>new Proxy(function(){},{get:(r,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":_e(),apply:()=>_e(),construct:()=>_e()});jt.exports=_e()});y();y();var ft=class{signals;config;_frameHooks=[];constructor(e){this.config={...e},this.signals={};for(let[t,n]of Object.entries(e))ge(n)?this.signals[t]=n:this.signals[t]=Le(n);return new Proxy(this,{get(t,n,o){if(typeof n=="string"&&n in t.signals){let s=t.signals[n];return s?s.value:void 0}return Reflect.get(t,n,o)},set(t,n,o,s){if(typeof n=="string"&&n in t.signals){let i=t.signals[n];return ge(o)?(t.signals[n]=o,t.config[n]=o):i&&typeof i.set=="function"?(i.set(o),t.config[n]=o):(t.signals[n]=Le(o),t.config[n]=o),!0}return Reflect.set(t,n,o,s)}})}onRequestFrame(e){return this._frameHooks.push(e),this}notifyFrame(e){for(let t of this._frameHooks)t(e)}resolveUniforms(e){let t={};for(let[n,o]of Object.entries(this.signals))t[n]=o.get(e);return t}resolveTextures(){let e={};for(let[t,n]of Object.entries(this.signals)){let o=n.gpuBinding;o?.textureView&&(e[`${t}TextureView`]=o.textureView),o?.texture&&(e[`${t}Texture`]=o.texture)}return e}toOperation(){let e={op:this.op,effect:this,onRequestFrame:t=>this.notifyFrame(t),signals:this.signals,...this.config};for(let[t,n]of Object.entries(this.signals)){let o=this.config[t];!ge(o)&&(typeof o=="string"||typeof o=="boolean")?e[t]=n.value:e[t]=n}return e}};y();var ht=class extends Error{constructor(e){super(e),this.name="ModerationError"}},gt=class extends Error{constructor(e){super(e),this.name="ModerationUnrefundableError"}};y();y();y();var pt="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var bt=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r|=0));for(;r--;)e+=pt[t[r]&63];return e};var Zn=r=>bt(r);y();var yt=C.object({dataTypes:C.custom(),label:C.string(),required:C.boolean().optional(),order:C.number(),description:C.string().optional()}),en=C.object({configKey:C.string(),dataTypes:C.custom(),label:C.string(),description:C.string().optional()}),tr=C.object({type:C.string().min(1),version:C.number().int().positive().optional(),baseType:C.string().optional(),displayName:C.string().min(1),description:C.string().optional(),showInQuickAccess:C.boolean().optional(),showInSidebar:C.boolean().optional(),advanced:C.boolean().optional(),category:C.string().min(1),subcategory:C.string().optional(),defaultDimensions:C.object({width:C.number().positive().optional(),height:C.number().positive().optional()}).optional(),handles:C.object({inputs:C.array(yt),outputs:C.array(yt)}),variableInputs:C.discriminatedUnion("enabled",[C.object({enabled:C.literal(!0),dataTypes:C.custom()}),C.object({enabled:C.literal(!1),dataTypes:C.custom().optional()})]).optional(),variableOutputs:C.discriminatedUnion("enabled",[C.object({enabled:C.literal(!0),dataTypes:C.custom()}),C.object({enabled:C.literal(!1),dataTypes:C.custom().optional()})]).optional(),isTerminal:C.boolean().optional(),isTransient:C.boolean().optional(),configSchema:C.custom().optional(),defaultConfig:C.record(C.string(),C.unknown()).optional(),validation:C.any().optional(),resultSchema:C.custom().optional(),configHandles:C.array(en).optional()});y();var or={Text:{bg:"bg-blue-500",stroke:"stroke-blue-500",hex:"#3b82f6",text:"text-blue-500",border:"border-blue-500"},Image:{bg:"bg-purple-500",stroke:"stroke-purple-500",hex:"#a855f7",text:"text-purple-500",border:"border-purple-500"},Video:{bg:"bg-teal-500",stroke:"stroke-teal-500",hex:"oklch(60% 0.118 184.704)",text:"text-teal-500",border:"border-teal-500"},Audio:{bg:"bg-orange-500",stroke:"stroke-orange-500",hex:"#f97316",text:"text-orange-500",border:"border-orange-500"},Number:{bg:"bg-green-600",stroke:"stroke-green-600",hex:"#16a34a",text:"text-green-600",border:"border-green-600"},Boolean:{bg:"bg-amber-600",stroke:"stroke-amber-600",hex:"#d97706",text:"text-amber-600",border:"border-amber-600"},SVG:{bg:"bg-lime-600",stroke:"stroke-lime-600",hex:"#65a30d",text:"text-lime-600",border:"border-lime-600"},Caption:{bg:"bg-rose-500",stroke:"stroke-rose-500",hex:"#f43f5e",text:"text-rose-500",border:"border-rose-500"},GIF:{bg:"bg-pink-500",stroke:"stroke-pink-500",hex:"#ec4899",text:"text-pink-500",border:"border-pink-500"},Lottie:{bg:"bg-indigo-500",stroke:"stroke-indigo-500",hex:"#6366f1",text:"text-indigo-500",border:"border-indigo-500"},Signal:{bg:"bg-fuchsia-500",stroke:"stroke-fuchsia-500",hex:"#d946ef",text:"text-fuchsia-500",border:"border-fuchsia-500"},LUT:{bg:"bg-cyan-600",stroke:"stroke-cyan-600",hex:"#0891b2",text:"text-cyan-600",border:"border-cyan-600"}};y();var cr={Image:"png",Video:"mp4",Audio:"mp3",Text:"txt",Number:"txt",Boolean:"txt",SVG:"svg",Caption:"srt",Lottie:"json",ThreeD:"glb",GIF:"gif",Signal:"txt",LUT:"cube"},lr={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",mp4:"video/mp4",webm:"video/webm",mov:"video/quicktime",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",pdf:"application/pdf",json:"application/json",txt:"text/plain",srt:"text/srt",aac:"audio/aac",flac:"audio/flac"},tn=["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"],kt=S.enum(tn),xt=class r{static schemas=new Map;static register(e,t){r.schemas.set(e,t)}static get(e){return r.schemas.get(e)}static clear(){r.schemas.clear()}};y();var mr={FONT_FAMILY:"Inter",FONT_SIZE:64,FILL:"#ffffff",LINE_HEIGHT:1.1,ALIGN:"left",VERTICAL_ALIGN:"top",LETTER_SPACING:0,STROKE_WIDTH:0,STROKE:"#000000",CORNER_RADIUS:0,PADDING:0};y();var nn=S.enum(["fade-in","fade-out","slide-in-left","slide-in-right","slide-in-top","slide-in-bottom","zoom-in","zoom-out","rotate-cw","rotate-ccw","bounce","shake"]),rn=S.object({id:S.string(),type:nn,value:S.number()}),on=S.object({x:S.number().default(0),y:S.number().default(0),width:S.number().optional(),height:S.number().optional(),rotation:S.number().default(0),scale:S.number().min(0).default(1),opacity:S.number().min(0).max(1).default(1),zIndex:S.number().int().optional(),blendMode:kt.optional()}),sn=S.object({startFrame:S.number().int().min(0).default(0),durationInMS:S.number().int().min(1).optional(),trimStart:S.number().int().min(0).optional(),trimEnd:S.number().int().min(0).optional(),speed:S.number().min(.25).max(4).optional()}),an=S.object({text:S.string().optional(),fontSize:S.number().optional(),fontFamily:S.string().optional(),fontStyle:S.string().optional(),fontWeight:S.union([S.number(),S.string()]).optional(),fill:S.string().optional(),align:S.string().optional(),verticalAlign:S.string().optional(),letterSpacing:S.number().optional(),lineHeight:S.number().optional(),padding:S.number().optional(),stroke:S.string().optional(),strokeWidth:S.number().optional(),strokeAlign:S.enum(["inside","center","outside"]).optional(),textShadow:S.string().optional(),textBackgroundColor:S.string().optional(),shadows:S.array(S.object({color:S.string(),offset:S.object({x:S.number(),y:S.number()}).optional(),blurRadius:S.number().optional()})).optional(),textAnimation:S.any().optional(),bottomPadding:S.number().optional(),maxWidth:S.number().optional()}),cn=S.object({backgroundColor:S.string().optional(),borderColor:S.string().optional(),borderWidth:S.number().optional(),strokeRadius:S.number().optional(),autoDimensions:S.boolean().optional()}),Ae=S.enum(["Video","Image","Audio","Text","Caption","SVG","GIF","Lottie"]),Tt=on.merge(sn).merge(an).merge(cn).extend({type:Ae.optional(),animations:S.array(rn).optional()});y();y();var ln=S.enum(["none","crossfade","wipe-left","wipe-right","slide-up","slide-down"]),Be=S.object({type:ln,durationFrames:S.number().min(1)});var Mr=Tt.extend({id:S.string(),name:S.string().optional(),type:Ae,virtualMedia:rt.optional(),transitionIn:Be.optional(),transitionOut:Be.optional(),durationInMS:S.number(),maxDurationInMS:S.number().optional(),src:S.string().optional(),volume:S.number().default(1),inputHandleId:S.string().optional(),isPlaceholder:S.boolean().optional(),lockAspect:S.boolean().optional(),lockRatio:S.boolean().optional(),zIndex:S.number().optional()}).strict();y();function _t(r,e){if(r===e||typeof r=="number"&&typeof e=="number"&&Number.isNaN(r)&&Number.isNaN(e))return!0;if(r&&e&&typeof r=="object"&&typeof e=="object"){if(r.constructor!==e.constructor)return!1;if(Array.isArray(r)){if(r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(!_t(r[n],e[n]))return!1;return!0}if(r instanceof Date)return r.getTime()===e.getTime();if(r instanceof RegExp)return r.toString()===e.toString();let t=Object.keys(r);if(t.length!==Object.keys(e).length)return!1;for(let n of t)if(!Object.hasOwn(e,n)||!_t(r[n],e[n]))return!1;return!0}return!1}y();function Lr(r,e){if(!r?.sourceFingerprint)return null;let t=Ee(e);return r.sourceFingerprint!==t?null:r}function Er(r,e){return{...r,sourceFingerprint:Ee(e)}}y();function Ar(r){try{let t=r.toString("utf-8").match(/<svg[^>]*>/i);if(!t)return null;let n=t[0],o=a=>{let c=n.match(new RegExp(`${a}=["']([^"']+)["']`,"i"));if(!c)return null;let h=parseFloat(c[1].replace(/[a-z%]/gi,""));return isNaN(h)?null:h},s=o("width"),i=o("height"),f=n.match(/viewBox=["']([^"']+)["']/i);if(f){let a=f[1].split(/[\s,]+/).map(parseFloat);if(a.length>=4&&!isNaN(a[2])&&!isNaN(a[3])){let c=a[2],h=a[3];s==null&&i==null?(s=c,i=h):s!=null&&i==null?i=s*(h/c):i!=null&&s==null&&(s=i*(c/h))}}return s!=null&&i!=null&&s>0&&i>0?{w:s,h:i}:null}catch(e){return console.error("Error parsing SVG dimensions",e),null}}y();y();y();y();var se=(r,e,t)=>`https://huggingface.co/${r}/resolve/${e}/${t}`,De="tori29umai/rtmdet-ins-onnx-person-masks",Fe="e5218e8d47d7c50077f27f9893a28e0ef2ad5656",Ue="RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdeploy ONNX export",He="RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export",St="MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export",re={"rtmdet-ins-t":{key:"rtmdet-ins-t",family:"rtmdet-ins",filename:"rtmdet-ins-t.onnx",url:se(De,Fe,"models/tiny/rtmdet-ins_tiny_640x640.onnx"),bytes:24032356,sha256:"99ee670820c4493aa13e20578b6a8e39781c319846dc41796a77765734beac5c",input:[640,640],source:Ue},"rtmdet-ins-s":{key:"rtmdet-ins-s",family:"rtmdet-ins",filename:"rtmdet-ins-s.onnx",url:se(De,Fe,"models/s/rtmdet-ins_s_640x640.onnx"),bytes:43236976,sha256:"9cd1787fbf3eb2bd64cc2d8154f41c036f5484b85599e1cbe0227a2dc5a4a08b",input:[640,640],source:Ue},"rtmdet-ins-m":{key:"rtmdet-ins-m",family:"rtmdet-ins",filename:"rtmdet-ins-m.onnx",url:se(De,Fe,"models/m/rtmdet-ins_m_640x640.onnx"),bytes:115735979,sha256:"a003bce80316e03467c2c2b483df2d5c0398220c2357a44f9bf985929f7eb052",input:[640,640],source:Ue},"rtmo-t":{key:"rtmo-t",family:"rtmo",filename:"rtmo-t.onnx",url:se("Xenova/RTMO-t","f29d13ce5ee291fbe505e9d06a049992f05699dc","onnx/model.onnx"),bytes:27360569,sha256:"cb54dd042bf997df86d938721c94238940f2bff98ba8d2ccc834430de5c65c13",input:[416,416],source:He},"rtmo-s":{key:"rtmo-s",family:"rtmo",filename:"rtmo-s.onnx",url:se("Xenova/RTMO-s","d8c526187f341d287753831c9c8b1ecc4855bba1","onnx/model.onnx"),bytes:39636400,sha256:"1cd6a3517658903233e9ccb78666554862f57f0944b6886e2048093594aef4e7",input:[640,640],source:He},"rtmo-m":{key:"rtmo-m",family:"rtmo",filename:"rtmo-m.onnx",url:se("Xenova/RTMO-m","3aba1280472b98ee2bf663482e27e243038d23fe","onnx/model.onnx"),bytes:89291929,sha256:"76d82c45e5c4810baf587ecf2638d15cbf7ed196afb2055e977382532021b59e",input:[640,640],source:He},"selfie-square":{key:"selfie-square",family:"selfie",filename:"selfie-square.onnx",url:se("onnx-community/mediapipe_selfie_segmentation","be49485c8e027524be38591817fc5cd31bd9d00e","onnx/model.onnx"),bytes:462352,sha256:"3241ac4ad8aa35bdaf33946776db29f7c283a413aa0b0dacb9483594b4531aad",input:[256,256],source:St},"selfie-landscape":{key:"selfie-landscape",family:"selfie",filename:"selfie-landscape.onnx",url:se("onnx-community/mediapipe_selfie_segmentation_landscape","2497d5bec26c626c7b3c4edc6e1fefc21b64f6c3","onnx/model.onnx"),bytes:462338,sha256:"7a0adcfdb1715d3b0ff0f61486d8a181c33f4a208343a5abfccbc6540e872d24",input:[256,144],source:St}};function wt(r,e="s",t=1){return r==="pose"?`rtmo-${e}`:r==="matte"?t>1.3?"selfie-landscape":"selfie-square":`rtmdet-ins-${e}`}var ye=["person","bicycle","car","motorcycle","airplane","bus","train","truck","boat","traffic light","fire hydrant","stop sign","parking meter","bench","bird","cat","dog","horse","sheep","cow","elephant","bear","zebra","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sports ball","kite","baseball bat","baseball glove","skateboard","surfboard","tennis racket","bottle","wine glass","cup","fork","knife","spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hot dog","pizza","donut","cake","chair","couch","potted plant","bed","dining table","toilet","tv","laptop","mouse","remote","keyboard","cell phone","microwave","oven","toaster","sink","refrigerator","book","clock","vase","scissors","teddy bear","hair drier","toothbrush"];y();function ae(r,e){let t=Math.max(r.originX,e.originX),n=Math.max(r.originY,e.originY),o=Math.min(r.originX+r.width,e.originX+e.width),s=Math.min(r.originY+r.height,e.originY+e.height),i=Math.max(0,o-t),f=Math.max(0,s-n),a=i*f;if(a<=0)return 0;let c=r.width*r.height,h=e.width*e.height,u=c+h-a;return u>0?a/u:0}var ue=class{_nextTrackId=1;_tracks=[];_iouThreshold;_maxMissedFrames;_minHits;_positionSmoothing;_activeDuringCoast;constructor(e={}){this._iouThreshold=e.iouThreshold??.25,this._maxMissedFrames=e.maxMissedFrames??15,this._minHits=e.minHits??1,this._positionSmoothing=Math.max(.1,Math.min(1,e.positionSmoothing??.75)),this._activeDuringCoast=e.activeDuringCoast!==!1}update(e,t,n=24){let o=n>0?1/n:.0416;for(let a of this._tracks)if(a.age++,a.timeSinceUpdate++,a.timeSinceUpdate>0){let c=a.centerX+a.vx*o,h=a.centerY+a.vy*o;a.centerX=c,a.centerY=h;let u=a.box.width,p=a.box.height,T=a.box.normalizedWidth,E=a.box.normalizedHeight,P=a.box.normalizedX+T/2+a.vx*o/Math.max(1,a.box.width/T),L=a.box.normalizedY+E/2+a.vy*o/Math.max(1,a.box.height/E);a.box={originX:c-u/2,originY:h-p/2,width:u,height:p,normalizedX:P-T/2,normalizedY:L-E/2,normalizedWidth:T,normalizedHeight:E},a.vx*=.92,a.vy*=.92,a.isCoasting=!0}let s=new Set,i=new Set,f=[];for(let a=0;a<this._tracks.length;a++){let c=this._tracks[a];for(let h=0;h<e.length;h++){let u=e[h];if(c.category!==u.category)continue;let p=ae(c.box,u.boundingBox);p>=this._iouThreshold&&f.push({trackIdx:a,detIdx:h,iou:p})}}f.sort((a,c)=>c.iou-a.iou);for(let a of f){if(i.has(a.trackIdx)||s.has(a.detIdx))continue;i.add(a.trackIdx),s.add(a.detIdx);let c=this._tracks[a.trackIdx],h=e[a.detIdx],u=h.boundingBox,p=u.originX+u.width/2,T=u.originY+u.height/2,E=(p-c.centerX)/o,P=(T-c.centerY)/o;c.vx=c.vx*.4+E*.6,c.vy=c.vy*.4+P*.6;let L=this._positionSmoothing,g=c.box.width*(1-L)+u.width*L,_=c.box.height*(1-L)+u.height*L,b=c.centerX*(1-L)+p*L,j=c.centerY*(1-L)+T*L;c.centerX=b,c.centerY=j,c.score=h.score,c.timeSinceUpdate=0,c.hits++,c.isCoasting=!1,c.hits>=this._minHits&&(c.active=!0),c.box={originX:b-g/2,originY:j-_/2,width:g,height:_,normalizedX:u.normalizedX,normalizedY:u.normalizedY,normalizedWidth:u.normalizedWidth,normalizedHeight:u.normalizedHeight}}for(let a=0;a<e.length;a++){if(s.has(a))continue;let c=e[a],h=c.boundingBox,u=h.originX+h.width/2,p=h.originY+h.height/2;this._tracks.push({trackId:this._nextTrackId++,category:c.category,score:c.score,box:h,centerX:u,centerY:p,vx:0,vy:0,age:1,hits:1,timeSinceUpdate:0,active:this._minHits<=1,isCoasting:!1})}return this._tracks=this._tracks.filter(a=>a.timeSinceUpdate<=this._maxMissedFrames),this._tracks.filter(a=>a.active).map(a=>{let c=a.box.normalizedWidth,h=a.box.normalizedHeight,u=a.box.normalizedX+c/2,p=a.box.normalizedY+h/2,T=Math.sqrt(a.vx*a.vx+a.vy*a.vy);return{trackId:a.trackId,category:a.category,score:a.score,boundingBox:a.box,centerX:a.centerX,centerY:a.centerY,normalizedCenterX:u,normalizedCenterY:p,velocity:{vx:a.vx,vy:a.vy},speed:T,age:a.age,hits:a.hits,active:this._activeDuringCoast?!0:a.timeSinceUpdate===0,isCoasting:a.isCoasting}})}trackSequence(e,t,n=24){this.reset();let o=n>0?1/n:.0416,s=new Map;for(let a=0;a<t;a++){let c=e[a]??[],h=this.update(c,a,n);for(let u of h)s.has(u.trackId)||s.set(u.trackId,{category:u.category,observations:[]}),u.isCoasting||s.get(u.trackId).observations.push({frame:a,box:u.boundingBox,score:u.score})}let i=new Map;for(let[a,c]of s.entries()){let h=c.observations;if(h.length===0)continue;h.sort((g,_)=>g.frame-_.frame);let u=new Array(t).fill(null);for(let g of h)u[g.frame]={box:g.box,score:g.score};let p=h[0];for(let g=0;g<p.frame;g++)u[g]={box:{...p.box},score:p.score*.9};for(let g=0;g<h.length-1;g++){let _=h[g],b=h[g+1],j=b.frame-_.frame;if(!(j<=1))for(let l=_.frame+1;l<b.frame;l++){let m=(l-_.frame)/j,x=_.box.originX+(b.box.originX-_.box.originX)*m,v=_.box.originY+(b.box.originY-_.box.originY)*m,w=_.box.width+(b.box.width-_.box.width)*m,O=_.box.height+(b.box.height-_.box.height)*m,H=_.box.normalizedX+(b.box.normalizedX-_.box.normalizedX)*m,R=_.box.normalizedY+(b.box.normalizedY-_.box.normalizedY)*m,M=_.box.normalizedWidth+(b.box.normalizedWidth-_.box.normalizedWidth)*m,d=_.box.normalizedHeight+(b.box.normalizedHeight-_.box.normalizedHeight)*m;u[l]={box:{originX:x,originY:v,width:w,height:O,normalizedX:H,normalizedY:R,normalizedWidth:M,normalizedHeight:d},score:_.score*(1-m)+b.score*m}}}let T=h[h.length-1];for(let g=T.frame+1;g<t;g++)u[g]={box:{...T.box},score:T.score*.9};let E=[],P=2,L=[.06136,.24477,.38774,.24477,.06136];for(let g=0;g<t;g++){let _=0,b=0,j=0,l=0,m=0,x=0,v=0,w=0,O=0,H=0;for(let M=-P;M<=P;M++){let d=Math.max(0,Math.min(t-1,g+M)),I=u[d];if(I){let U=L[M+P];_+=U,b+=I.box.originX*U,j+=I.box.originY*U,l+=I.box.width*U,m+=I.box.height*U,x+=I.box.normalizedX*U,v+=I.box.normalizedY*U,w+=I.box.normalizedWidth*U,O+=I.box.normalizedHeight*U,H+=I.score*U}}let R=_>0?1/_:1;E.push({box:{originX:b*R,originY:j*R,width:l*R,height:m*R,normalizedX:x*R,normalizedY:v*R,normalizedWidth:w*R,normalizedHeight:O*R},score:H*R})}i.set(a,{category:c.category,frames:E})}let f=[];for(let a=0;a<t;a++){let c=[];for(let[h,u]of i.entries()){let p=u.frames[a];if(!p)continue;let T=u.frames[Math.max(0,a-1)]??p,E=u.frames[Math.min(t-1,a+1)]??p,P=p.box.originX+p.box.width/2,L=p.box.originY+p.box.height/2,g=T.box.originX+T.box.width/2,_=T.box.originY+T.box.height/2,b=E.box.originX+E.box.width/2,j=E.box.originY+E.box.height/2,l=a===0||a===t-1?o:2*o,m=(b-g)/l,x=(j-_)/l,v=Math.sqrt(m*m+x*x),w=p.box.normalizedWidth,O=p.box.normalizedHeight;c.push({trackId:h,category:u.category,score:p.score,boundingBox:p.box,centerX:P,centerY:L,normalizedCenterX:p.box.normalizedX+w/2,normalizedCenterY:p.box.normalizedY+O/2,velocity:{vx:m,vy:x},speed:v,age:a+1,hits:10,active:!0,isCoasting:!1})}f.push(c)}return f}reset(){this._tracks=[],this._nextTrackId=1}};var vt=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();async function Xr(r,e){let{runner:t}=e,n=e.fps??24,o=e.tasks&&e.tasks.length>0?e.tasks:["detect"],s=new Set(o),i=e.categories?new Set(e.categories.map(M=>M.toLowerCase())):null,f=e.includeMasks===!0&&s.has("segment"),a=s.has("detect")||s.has("segment"),c=[],h={},u=new Map,p=0,T=0,E=M=>!i||i.has(M.toLowerCase()),P=async(M,d,I)=>{let U=t.modelKeyFor(M,d.width/d.height),A=t.downloadStatus.get(U)==="ready",V=vt(),D=await I(),X=vt()-V;return p+=X,!A&&!h[U]&&(h[U]={bytes:re[U].bytes,ms:X}),D},L=M=>{for(let d of M){if(!E(d.category))continue;let I=u.get(d.category)??{sum:0,count:0};I.sum+=d.coverage,I.count++,u.set(d.category,I)}};for await(let M of r){let d=[];if(f){let I=await P("segment",M,()=>t.segment(M));L(I.masks),d=I.detections}else a&&(d=await P("detect",M,()=>t.detect(M)));s.has("pose")&&await P("pose",M,()=>t.pose(M)),s.has("matte")&&await P("matte",M,()=>t.matte(M)),c.push(i?d.filter(I=>E(I.category)):d),T++}let g=T,b=new ue({iouThreshold:e.iouThreshold??.25,maxMissedFrames:e.maxMissedFrames??15}).trackSequence(c,g,n),j=e.pathStride??Math.max(1,Math.ceil(g/50)),l=new Map,m=new Map,x=new Map,v=new Map,w=(M,d,I)=>{let U=M.get(d);return U===void 0&&(U=I(),M.set(d,U)),U};for(let M=0;M<g;M++)for(let d of b[M]??[]){if(!E(d.category))continue;let I=l.get(d.trackId);I||(I={category:d.category,firstFrame:M,lastFrame:M,speedSum:0,speedCount:0,centers:[]},l.set(d.trackId,I)),I.lastFrame=M,Number.isFinite(d.speed)&&(I.speedSum+=d.speed,I.speedCount++),(M-I.firstFrame)%j===0&&I.centers.push({frame:M,x:d.centerX,y:d.centerY}),w(m,d.category,()=>new Set).add(M),x.set(d.category,Math.max(x.get(d.category)??0,d.score)),w(v,d.category,()=>new Set).add(d.trackId)}let O=Array.from(l.entries()).map(([M,d])=>({trackId:M,category:d.category,frames:[d.firstFrame,d.lastFrame],speedMeanPxS:d.speedCount>0?d.speedSum/d.speedCount:0,centerPath:d.centers.map(I=>[I.x,I.y])})).sort((M,d)=>M.trackId-d.trackId),H={};for(let[M,d]of m)H[M]={framesPresent:d.size,totalFrames:g,maxConfidence:x.get(M)??0,tracks:v.get(M)?.size??0};let R={};for(let[M,d]of u)R[M]={meanCoverage:d.count>0?d.sum/d.count:0};return{source:e.source??"frames",totalFrames:g,fps:n,durationSec:n>0?g/n:0,tasks:Array.from(s),modelDownloads:h,inferenceMs:p,trackCount:O.length,classes:H,tracks:O,masks:R}}y();var dn=[103.53,116.28,123.675],un=[57.375,57.12,58.395],mn={"rtmdet-ins":{fit:"topLeft",channels:"bgr",mean:dn,std:un,padValue:114},rtmo:{fit:"center",channels:"bgr",mean:[0,0,0],std:[1,1,1],padValue:114},selfie:{fit:"stretch",channels:"rgb",mean:[0,0,0],std:[255,255,255],padValue:0}};function Mt(r,e){return{...mn[r],width:e[0],height:e[1]}}function fn(r,e,t){if(t.fit==="stretch")return{scaleX:t.width/r,scaleY:t.height/e,offsetX:0,offsetY:0,inputWidth:t.width,inputHeight:t.height};let n=Math.min(t.width/r,t.height/e),o=Math.round(r*n),s=Math.round(e*n),i=t.fit==="center";return{scaleX:n,scaleY:n,offsetX:i?(t.width-o)/2:0,offsetY:i?(t.height-s)/2:0,inputWidth:t.width,inputHeight:t.height}}function ce(r,e,t){return{x:(r-t.offsetX)/t.scaleX,y:(e-t.offsetY)/t.scaleY}}function Pt(r,e,t){let{width:n,height:o,data:s}=r,{width:i,height:f}=e,a=fn(n,o,e),{scaleX:c,scaleY:h,offsetX:u,offsetY:p}=a,T=i*f;(!t||t.length<3*T)&&(t=new Float32Array(3*T));let E=e.channels==="bgr"?[2,1,0]:[0,1,2],[P,L,g]=e.mean,_=1/e.std[0],b=1/e.std[1],j=1/e.std[2],l=(e.padValue-P)*_,m=(e.padValue-L)*b,x=(e.padValue-g)*j,[v,w,O]=E,H=Math.ceil(u),R=Math.ceil(p),M=Math.min(i,Math.floor(u+n*c))-1,d=Math.min(f,Math.floor(p+o*h))-1;for(let I=0;I<f;I++){let U=I*i,A=I<R||I>d,V=Math.max(0,(I+.5-p)/h-.5),D=Math.min(o-1,Math.floor(V)),X=Math.min(o-1,D+1),q=V-D;for(let $=0;$<i;$++){let N=U+$;if(A||$<H||$>M){t[N]=l,t[T+N]=m,t[2*T+N]=x;continue}let K=Math.max(0,($+.5-u)/c-.5),G=Math.min(n-1,Math.floor(K)),ne=Math.min(n-1,G+1),z=K-G,Q=(D*n+G)*4,F=(D*n+ne)*4,Y=(X*n+G)*4,Z=(X*n+ne)*4,J=(1-z)*(1-q),ee=z*(1-q),W=(1-z)*q,oe=z*q;t[N]=(s[Q+v]*J+s[F+v]*ee+s[Y+v]*W+s[Z+v]*oe-P)*_,t[T+N]=(s[Q+w]*J+s[F+w]*ee+s[Y+w]*W+s[Z+w]*oe-L)*b,t[2*T+N]=(s[Q+O]*J+s[F+O]*ee+s[Y+O]*W+s[Z+O]*oe-g)*j}}return{tensor:t,transform:a}}y();var xe=8;function ze(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=e.classes?new Set(e.classes.map(P=>P.toLowerCase())):null,i=[];for(let P=0;P<r.count;P++){let L=r.dets[P*5+4];if(!(L>=e.confidence))continue;let g=Number(r.labels[P]),_=e.classNames[g]??`class_${g}`;if(s&&!s.has(_.toLowerCase()))continue;let b=ce(r.dets[P*5],r.dets[P*5+1],o),j=ce(r.dets[P*5+2],r.dets[P*5+3],o),l=ie(b.x,0,t),m=ie(b.y,0,n),x=ie(j.x,0,t)-l,v=ie(j.y,0,n)-m;x<=0||v<=0||i.push({index:P,detection:{category:_,score:L,boundingBox:{originX:l,originY:m,width:x,height:v,normalizedX:l/t,normalizedY:m/n,normalizedWidth:x/t,normalizedHeight:v/n}}})}i.sort((P,L)=>L.detection.score-P.detection.score);let f=i.map(P=>P.detection),a=[];if(!r.masks)return{detections:f,masks:a};let c=Ye(e.maskThreshold??.5,e.featherRadius??.05),{maskWidth:h,maskHeight:u}=r,p=h*u,T=h/o.inputWidth,E=u/o.inputHeight;for(let P=0;P<i.length;P++){let{index:L,detection:g}=i[P],_=g.boundingBox,b=L*p,j=Math.max(0,Math.floor(_.originX)-xe),l=Math.max(0,Math.floor(_.originY)-xe),m=Math.min(t-1,Math.ceil(_.originX+_.width)+xe),x=Math.min(n-1,Math.ceil(_.originY+_.height)+xe),v=new Uint8Array(t*n),w=0;for(let O=l;O<=x;O++){let H=((O+.5)*o.scaleY+o.offsetY)*E-.5,R=ie(Math.floor(H),0,u-1),M=Math.min(u-1,R+1),d=ie(H-R,0,1),I=O*t;for(let U=j;U<=m;U++){let A=((U+.5)*o.scaleX+o.offsetX)*T-.5,V=ie(Math.floor(A),0,h-1),D=Math.min(h-1,V+1),X=ie(A-V,0,1),q=r.masks[b+R*h+V]*(1-X)*(1-d)+r.masks[b+R*h+D]*X*(1-d)+r.masks[b+M*h+V]*(1-X)*d+r.masks[b+M*h+D]*X*d,$=c(q);$>0&&(v[I+U]=$,w+=$/255)}}w=Math.round(w),w!==0&&a.push({category:g.category,mask:v,width:t,height:n,area:w,coverage:w/(t*n),detectionIndex:P})}return{detections:f,masks:a}}function Ye(r,e){if(e<=0)return o=>o>r?255:0;let t=r-e,n=255/(2*e);return o=>o<=t?0:o>=r+e?255:(o-t)*n}function ie(r,e,t){return r<e?e:r>t?t:r}y();var Rt=17,Ne=.3;function It(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=r.keypointStride,i=[];for(let c=0;c<r.count;c++){let h=r.dets[c*5+4];if(!(h>=e.confidence))continue;let u=ce(r.dets[c*5],r.dets[c*5+1],o),p=ce(r.dets[c*5+2],r.dets[c*5+3],o),T=le(u.x,0,t),E=le(u.y,0,n),P=le(p.x,0,t)-T,L=le(p.y,0,n)-E;if(P<=0||L<=0)continue;let g=[],_=c*Rt*s;for(let j=0;j<Rt;j++){let l=_+j*s,m=ce(r.keypoints[l],r.keypoints[l+1],o);g.push({x:le(m.x,0,t),y:le(m.y,0,n),visibility:le(r.keypoints[l+2],0,1)})}let b=0;for(let j of g)j.visibility>=Ne&&b++;b<(e.minVisibleKeypoints??3)||i.push({score:h,boundingBox:{originX:T,originY:E,width:P,height:L,normalizedX:T/t,normalizedY:E/n,normalizedWidth:P/t,normalizedHeight:L/n},keypoints:g})}i.sort((c,h)=>h.score-c.score);let f=e.iouThreshold??.6,a=[];for(let c of i)a.some(h=>hn(h,c,f))||a.push(c);return{people:a}}function le(r,e,t){return r<e?e:r>t?t:r}function hn(r,e,t){if(ae(r.boundingBox,e.boundingBox)>t)return!0;let n=Math.sqrt(r.boundingBox.width*r.boundingBox.height),o=0,s=0;for(let i=0;i<r.keypoints.length;i++){let f=r.keypoints[i],a=e.keypoints[i];f.visibility<Ne||a.visibility<Ne||(o+=Math.hypot(f.x-a.x,f.y-a.y),s++)}return s>=3&&o/s<.1*n}y();function Ct(r,e,t,n){let{sourceWidth:o,sourceHeight:s}=n,i=Ye(n.maskThreshold??.5,n.featherRadius??.2),f=new Uint8Array(o*s),a=e/o,c=t/s,h=0;for(let u=0;u<s;u++){let p=Math.max(0,(u+.5)*c-.5),T=Math.min(t-1,Math.floor(p)),E=Math.min(t-1,T+1),P=p-T;for(let L=0;L<o;L++){let g=Math.max(0,(L+.5)*a-.5),_=Math.min(e-1,Math.floor(g)),b=Math.min(e-1,_+1),j=g-_,l=r[T*e+_]*(1-j)*(1-P)+r[T*e+b]*j*(1-P)+r[E*e+_]*(1-j)*P+r[E*e+b]*j*P,m=i(l);f[u*o+L]=m,h+=m}}return{mask:f,width:o,height:s,coverage:o*s>0?h/(255*o*s):0}}y();y();y();var Ot=`
|
|
2
|
-
struct Bone {
|
|
3
|
-
start: vec2<f32>,
|
|
4
|
-
end: vec2<f32>,
|
|
5
|
-
color: vec4<f32>,
|
|
6
|
-
radius: f32,
|
|
7
|
-
enabled: f32,
|
|
8
|
-
pad: vec2<f32>,
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
struct SkeletonParams {
|
|
12
|
-
width: u32,
|
|
13
|
-
height: u32,
|
|
14
|
-
numBones: u32,
|
|
15
|
-
pad: u32,
|
|
16
|
-
bones: array<Bone, 24>,
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
@group(0) @binding(0) var outputTex: texture_storage_2d<rgba8unorm, write>;
|
|
20
|
-
@group(0) @binding(1) var<uniform> params: SkeletonParams;
|
|
21
|
-
|
|
22
|
-
@compute @workgroup_size(16, 16)
|
|
23
|
-
fn computePoseSkeleton(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
24
|
-
if (id.x >= params.width || id.y >= params.height) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
let p = vec2<f32>(f32(id.x) + 0.5, f32(id.y) + 0.5);
|
|
29
|
-
var outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
|
30
|
-
|
|
31
|
-
let count = min(params.numBones, 24u);
|
|
32
|
-
for (var i = 0u; i < count; i = i + 1u) {
|
|
33
|
-
let bone = params.bones[i];
|
|
34
|
-
if (bone.enabled < 0.5) {
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
let ab = bone.end - bone.start;
|
|
39
|
-
let ap = p - bone.start;
|
|
40
|
-
let l2 = dot(ab, ab);
|
|
41
|
-
|
|
42
|
-
var t: f32 = 0.0;
|
|
43
|
-
if (l2 > 0.0001) {
|
|
44
|
-
t = clamp(dot(ap, ab) / l2, 0.0, 1.0);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
let closest = bone.start + t * ab;
|
|
48
|
-
let dist = length(p - closest);
|
|
49
|
-
|
|
50
|
-
if (dist <= bone.radius) {
|
|
51
|
-
// Sub-pixel edge antialiasing
|
|
52
|
-
let edgeAlpha = clamp(bone.radius - dist + 0.5, 0.0, 1.0);
|
|
53
|
-
let a = edgeAlpha * bone.color.a;
|
|
54
|
-
outColor = vec4<f32>(mix(outColor.rgb, bone.color.rgb, a), max(outColor.a, a));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
textureStore(outputTex, id.xy, outColor);
|
|
59
|
-
}
|
|
60
|
-
`;var gn=[{from:0,to:11,color:[0,1,1,1]},{from:0,to:12,color:[0,1,1,1]},{from:11,to:12,color:[1,0,0,1]},{from:11,to:13,color:[1,.333,0,1]},{from:13,to:15,color:[1,.667,0,1]},{from:12,to:14,color:[1,1,0,1]},{from:14,to:16,color:[.667,1,0,1]},{from:11,to:23,color:[.333,1,0,1]},{from:12,to:24,color:[0,1,0,1]},{from:23,to:24,color:[0,1,.333,1]},{from:23,to:25,color:[0,1,.667,1]},{from:25,to:27,color:[0,1,1,1]},{from:24,to:26,color:[0,.667,1,1]},{from:26,to:28,color:[0,.333,1,1]}],ke=class{constructor(e){this.device=e;let t=e.createShaderModule({label:"pose_skeleton.wgsl",code:Ot});this.computePipeline=e.createComputePipeline({label:"PoseSkeletonComputePipeline",layout:"auto",compute:{module:t,entryPoint:"computePoseSkeleton"}}),this.uniformBuffer=e.createBuffer({size:1280,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"pose_skeleton_uniform_buffer"})}device;computePipeline;uniformBuffer;cachedOutputTexture;execute(e,t={},n){let o=n??gn,s=t.width??1024,i=t.height??1024,f=t.lineWidth??6,a=Math.max(1,f/2),c=1280,h=new ArrayBuffer(c),u=new Uint32Array(h),p=new Float32Array(h);u[0]=s,u[1]=i,u[2]=o.length,u[3]=0;let T=4;for(let g=0;g<o.length;g++){let _=o[g],b=e[_.from],j=e[_.to],l=T+g*12;if(!b||!j||(b.visibility??1)<.2||(j.visibility??1)<.2){p[l+9]=0;continue}p[l+0]=b.x*s,p[l+1]=b.y*i,p[l+2]=j.x*s,p[l+3]=j.y*i,p[l+4]=_.color[0],p[l+5]=_.color[1],p[l+6]=_.color[2],p[l+7]=_.color[3],p[l+8]=a,p[l+9]=1}this.device.queue.writeBuffer(this.uniformBuffer,0,h),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==s||this.cachedOutputTexture.height!==i)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:"openpose_skeleton_texture",size:[s,i],format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let E=this.device.createCommandEncoder({label:"pose_skeleton_command_encoder"}),P=this.device.createBindGroup({label:"pose_skeleton_bind_group",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedOutputTexture.createView({label:"pose_skeleton_output_view"})},{binding:1,resource:{buffer:this.uniformBuffer}}]}),L=E.beginComputePass({label:"pose_skeleton_compute_pass"});return L.setPipeline(this.computePipeline),L.setBindGroup(0,P),L.dispatchWorkgroups(Math.ceil(s/16),Math.ceil(i/16),1),L.end(),this.device.queue.submit([E.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=void 0,this.uniformBuffer.destroy()}};y();var k={NOSE:0,LEFT_EYE:1,RIGHT_EYE:2,LEFT_EAR:3,RIGHT_EAR:4,LEFT_SHOULDER:5,RIGHT_SHOULDER:6,LEFT_ELBOW:7,RIGHT_ELBOW:8,LEFT_WRIST:9,RIGHT_WRIST:10,LEFT_HIP:11,RIGHT_HIP:12,LEFT_KNEE:13,RIGHT_KNEE:14,LEFT_ANKLE:15,RIGHT_ANKLE:16},Xe=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],Lt=[{from:k.NOSE,to:k.LEFT_SHOULDER,color:[0,1,1,1]},{from:k.NOSE,to:k.RIGHT_SHOULDER,color:[0,1,1,1]},{from:k.LEFT_SHOULDER,to:k.RIGHT_SHOULDER,color:[1,0,0,1]},{from:k.LEFT_SHOULDER,to:k.LEFT_ELBOW,color:[1,.333,0,1]},{from:k.LEFT_ELBOW,to:k.LEFT_WRIST,color:[1,.667,0,1]},{from:k.RIGHT_SHOULDER,to:k.RIGHT_ELBOW,color:[1,1,0,1]},{from:k.RIGHT_ELBOW,to:k.RIGHT_WRIST,color:[.667,1,0,1]},{from:k.LEFT_SHOULDER,to:k.LEFT_HIP,color:[.333,1,0,1]},{from:k.RIGHT_SHOULDER,to:k.RIGHT_HIP,color:[0,1,0,1]},{from:k.LEFT_HIP,to:k.RIGHT_HIP,color:[0,1,.333,1]},{from:k.LEFT_HIP,to:k.LEFT_KNEE,color:[0,1,.667,1]},{from:k.LEFT_KNEE,to:k.LEFT_ANKLE,color:[0,1,1,1]},{from:k.RIGHT_HIP,to:k.RIGHT_KNEE,color:[0,.667,1,1]},{from:k.RIGHT_KNEE,to:k.RIGHT_ANKLE,color:[0,.333,1,1]}];var Te=class{pipeline;constructor(e){this.pipeline=new ke(e)}renderToTexture(e,t,n=Lt){return this.pipeline.execute(e,t,n)}destroy(){this.pipeline.destroy()}};y();var Et=class{device;pool=new Map;constructor(e){this.device=e}getOrCreateTexture(e,t){let n=this.pool.get(e);if(n&&n.width===t.width&&n.height===t.height)return n;n&&n.destroy();let o=t.format??"rgba8unorm",s=this.device.createTexture({label:t.label??`vision_segmentation_${e}`,size:[t.width,t.height,1],format:o,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return this.pool.set(e,s),s}uploadMask(e,t,n,o){let s=t.length>=n*o*4,i=s?"rgba8unorm":"r8unorm",f=this.getOrCreateTexture(e,{width:n,height:o,format:i}),a;if(t instanceof Float32Array){a=new Uint8Array(t.length);for(let T=0;T<t.length;T++)a[T]=Math.round(Math.max(0,Math.min(1,t[T]))*255)}else a=t;let h=n*(s?4:1),u=Math.ceil(h/256)*256,p;if(u===h)p=a;else{p=new Uint8Array(u*o);for(let T=0;T<o;T++)p.set(a.subarray(T*h,(T+1)*h),T*u)}return this.device.queue.writeTexture({texture:f},p.buffer,{offset:p.byteOffset,bytesPerRow:u,rowsPerImage:o},{width:n,height:o}),f}destroy(){for(let e of this.pool.values())e.destroy();this.pool.clear()}};y();var At=Qt(Vt(),1);function pn(){return B.env.FRAMEFIELDS_MODELS_DIR?be(B.env.FRAMEFIELDS_MODELS_DIR):be(ut(),".cache/framefields/models")}var Se=class{_modelsDir;_baseUrl;_timeoutMs;_retries;_retryDelayMs;_verify;_fetch;_onProgress;_inflight=new Map;_buffers=new Map;_status=new Map;constructor(e={}){this._modelsDir=e.modelsDir?be(e.modelsDir):pn(),this._baseUrl=e.baseUrl??B.env.FRAMEFIELDS_MODELS_BASE_URL??void 0,this._timeoutMs=e.timeoutMs,this._retries=Math.max(0,e.retries??2),this._retryDelayMs=e.retryDelayMs??1e3,this._verify=e.verify!==!1,this._fetch=e.fetchImpl??globalThis.fetch,this._onProgress=e.onProgress}get modelsDir(){return this._modelsDir}pathFor(e){return dt(this._modelsDir,re[e].filename)}descriptor(e){return re[e]}urlFor(e){let t=re[e];return this._baseUrl?`${this._baseUrl.replace(/\/+$/,"")}/${t.filename}`:t.url}has(e){let t=this.pathFor(e);if(!pe(t))return!1;try{let n=st(t).size;return this._verify?n===re[e].bytes:n>0}catch{return!1}}async evict(e){this._buffers.delete(e),this._status.set(e,"pending"),await je(this.pathFor(e)).catch(()=>{})}status(e){return this._status.get(e)??"pending"}statuses(){return new Map(this._status)}isLoaded(e){return this._buffers.has(e)}async ensure(e){let t=this._buffers.get(e);if(t)return t;let n=this._inflight.get(e);if(n)return n;let o=this.load(e).finally(()=>this._inflight.delete(e));return this._inflight.set(e,o),o}async preload(e){await Promise.all([...new Set(e)].map(t=>this.ensure(t)))}async load(e){let t=this.pathFor(e);if(this.has(e))return this._status.set(e,"ready"),this.readBuffer(e,t);let n=this.urlFor(e);this._status.set(e,"downloading"),pe(Ve(t))||it(Ve(t),{recursive:!0});let o=`${t}.tmp.${Date.now()}`;try{let{buffer:s,totalBytes:i}=await this.download(e,n);if(s.byteLength===0)throw new Error(`Downloaded vision model '${e}' is empty (0 bytes).`);return this._verify&&this.verifyBytes(e,s,n),this._onProgress?.(e,s.byteLength,i||s.byteLength),await ct(o,s),await lt(o,t),this._buffers.set(e,s),this._status.set(e,"ready"),s}catch(s){throw this._status.set(e,"error"),pe(o)&&await je(o).catch(()=>{}),s}}async download(e,t){for(let n=0;;n++){let o;try{let s=await this._fetch(t,{signal:this._timeoutMs?AbortSignal.timeout(this._timeoutMs):void 0});if(s.ok){let f=Number(s.headers.get("content-length")??0);return{buffer:new Uint8Array(await s.arrayBuffer()),totalBytes:f}}let i=new Error(`Failed to download vision model '${e}' from ${t}: HTTP ${s.status} ${s.statusText}`);if(s.status!==429&&s.status<500)throw i;o=i}catch(s){if(!(s instanceof TypeError))throw s;o=s}if(n>=this._retries)throw new Error(`Failed to download vision model '${e}' from ${t} after ${n+1} attempts: ${String(o)}`,{cause:o});await new Promise(s=>setTimeout(s,this._retryDelayMs*2**n))}}verifyBytes(e,t,n){let o=re[e];if(t.byteLength!==o.bytes)throw new Error(`Vision model '${e}' from ${n} is ${t.byteLength} bytes, expected ${o.bytes}.`);let s=(0,At.createHash)("sha256").update(t).digest("hex");if(s!==o.sha256)throw new Error(`Vision model '${e}' from ${n} failed its SHA-256 check (got ${s}, expected ${o.sha256}).`)}async readBuffer(e,t){let n=await at(t),o=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);return this._buffers.set(e,o),o}clearMemoryCache(){this._buffers.clear()}};y();function Bt(){return{objects:[],rawDetections:[]}}function Dt(){return{people:[]}}function Ft(){let r=[];for(let e=0;e<17;e++)r.push({x:.5,y:.5,z:0,visibility:0});return r}y();var fe=class r{variant;confidence;classes;maskThreshold;featherRadius;_store;_provider;_sessions=new Map;_tensorScratch=new Map;_instancePass;constructor(e){this.variant=e.variant??"s",this.confidence=e.confidence??.3,this.classes=e.classes,this.maskThreshold=e.maskThreshold??.5,this.featherRadius=e.featherRadius,this._store=e.store??new Se({modelsDir:e.modelsDir,baseUrl:e.baseUrl,timeoutMs:e.timeoutMs,onProgress:e.onProgress}),this._provider=e.provider??mt()}static create(e={}){return new r(e)}get modelsDir(){return this._store.modelsDir}get downloadStatus(){let e=new Map;for(let t of Object.keys(re))e.set(t,"pending");for(let[t,n]of this._store.statuses())e.set(t,n);return e}modelKeyFor(e,t=1){return wt(e,this.variant,t)}async preload(e=["detect"]){let t=new Set;for(let n of e)n==="matte"?(t.add("selfie-square"),t.add("selfie-landscape")):t.add(this.modelKeyFor(n));await this._store.preload([...t]),await Promise.all([...t].map(n=>this.session(n)))}async detect(e){let t=await this.instancePass(e);return ze({...t.outputs,masks:void 0},this.instanceDecodeOptions(e,t.transform)).detections}async segment(e){let t=await this.instancePass(e);return ze(t.outputs,this.instanceDecodeOptions(e,t.transform))}async pose(e){let t=this.modelKeyFor("pose"),{outputs:n,transform:o}=await this.infer(t,e),s=me(n,"dets",t),i=me(n,"keypoints",t);return It({dets:s.data,keypoints:i.data,count:s.dims[1]??0,keypointStride:i.dims[3]??3},{confidence:this.confidence,transform:o,sourceWidth:e.width,sourceHeight:e.height})}async matte(e){let t=this.modelKeyFor("matte",e.width/e.height),[n,o]=re[t].input,{outputs:s}=await this.infer(t,e),i=me(s,"alphas",t);return Ct(i.data,n,o,{sourceWidth:e.width,sourceHeight:e.height,maskThreshold:this.maskThreshold,...this.featherRadius!==void 0?{featherRadius:this.featherRadius}:{}})}close(){for(let e of this._sessions.values())e.then(t=>t.release()).catch(()=>{});this._sessions.clear(),this._instancePass=void 0,this._store.clearMemoryCache()}instancePass(e){if(this._instancePass?.frame===e.data)return this._instancePass.result;let t=this.modelKeyFor("segment"),n=this.infer(t,e).then(({outputs:o,transform:s})=>{let i=me(o,"dets",t),f=me(o,"masks",t);return{transform:s,outputs:{dets:i.data,labels:me(o,"labels",t).data,masks:f.data,count:i.dims[1]??0,maskHeight:f.dims[f.dims.length-2]??0,maskWidth:f.dims[f.dims.length-1]??0}}});return this._instancePass={frame:e.data,result:n},n.catch(()=>{this._instancePass?.result===n&&(this._instancePass=void 0)}),n}instanceDecodeOptions(e,t){return{confidence:this.confidence,classes:this.classes,classNames:ye,transform:t,sourceWidth:e.width,sourceHeight:e.height,maskThreshold:this.maskThreshold,...this.featherRadius!==void 0?{featherRadius:this.featherRadius}:{}}}async infer(e,t){let n=await this.session(e),o=re[e],s=Mt(o.family,o.input),i=3*s.width*s.height,f=this._tensorScratch.get(e);(!f||f.length<i)&&(f=new Float32Array(i),this._tensorScratch.set(e,f));let{tensor:a,transform:c}=Pt(t,s,f);return{outputs:await n.run({name:"input",data:a,dims:[1,3,s.height,s.width]}),transform:c}}session(e){let t=this._sessions.get(e);return t||(t=this._store.ensure(e).then(n=>this._provider.createSession(n)).catch(n=>{throw this._sessions.delete(e),this._store.evict(e),n}),this._sessions.set(e,t)),t}};function me(r,e,t){let n=r[e];if(!n)throw new Error(`Vision model '${t}' returned no '${e}' output (got: ${Object.keys(r).join(", ")||"none"}). Expected the ${re[t].source}.`);return n}y();function Ge(r){let e;for(let t of r){if(!e){e=t;continue}let n=Ut(t),o=Ut(e);n!==o?n&&(e=t):(n?t.area>e.area:t.detectionIndex<e.detectionIndex)&&(e=t)}return e}function Ut(r){return r.category.toLowerCase()==="person"}function we(r){let{mask:e,width:t,height:n}=r,o=t,s=n,i=-1,f=-1;for(let a=0;a<n;a++){let c=a*t;for(let h=0;h<t;h++)e[c+h]!==0&&(h<o&&(o=h),h>i&&(i=h),a<s&&(s=a),a>f&&(f=a))}return i<0?null:{x0:o,y0:s,x1:i,y1:f}}function Ht(r,e=.5,t=2){let n=Ge(r);if(!n)return;let o=we(n);if(!o)return n;let s=ve(o),i=r.filter(c=>{if(c===n)return!1;let h=we(c);return h!==null&&ve(h)<=s*t&&bn(o,h)>=e});if(i.length===0)return n;let f=n.mask.slice();for(let c of i){let h=c.mask;for(let u=0;u<f.length;u++)h[u]>f[u]&&(f[u]=h[u])}let a=0;for(let c=0;c<f.length;c++)a+=f[c];return a=Math.round(a/255),{...n,mask:f,area:a,coverage:a/(n.width*n.height)}}function ve(r){return(r.x1-r.x0+1)*(r.y1-r.y0+1)}function bn(r,e){let t=Math.min(r.x1,e.x1)-Math.max(r.x0,e.x0)+1,n=Math.min(r.y1,e.y1)-Math.max(r.y0,e.y0)+1;return t<=0||n<=0?0:t*n/Math.min(ve(r),ve(e))}y();y();var Me=class{width;height;fovRad;focalDistance;constructor(e){this.width=e.width,this.height=e.height;let t=e.fov??60;this.fovRad=t*Math.PI/180,this.focalDistance=e.cameraDistance??this.height/2/Math.tan(this.fovRad/2)}projectNormalizedLandmark(e,t=0){let n=e.x*this.width,o=e.y*this.height,s=e.z*this.width+t,i=Math.min(s,this.focalDistance-10),f=this.focalDistance/(this.focalDistance-i);return{x:n,y:o,z:s,scale:Math.max(.1,f)}}projectWorldLandmark(e,t=2,n=800){let o=this.width/2,s=this.height/2,i=e.x*n,f=e.y*n,a=(e.z+t)*n,c=Math.min(a,this.focalDistance-10),h=this.focalDistance/(this.focalDistance-c);return{x:o+i*h,y:s+f*h,z:a,scale:Math.max(.1,h)}}};y();function $e(r){if(r.boundingBox&&r.boundingBox.width>0&&r.boundingBox.height>0)return{originX:r.boundingBox.originX,originY:r.boundingBox.originY,width:r.boundingBox.width,height:r.boundingBox.height};let e=1/0,t=1/0,n=-1/0,o=-1/0,s=0;for(let i of r.keypoints)i.visibility>.1&&(s++,i.x<e&&(e=i.x),i.y<t&&(t=i.y),i.x>n&&(n=i.x),i.y>o&&(o=i.y));return s===0||e>=n||t>=o?{originX:r.boundingBox?.originX??0,originY:r.boundingBox?.originY??0,width:r.boundingBox?.width??0,height:r.boundingBox?.height??0}:{originX:e,originY:t,width:n-e,height:o-t}}function zt(r,e,t=.15){if(r.length===0)return[];let n=e.filter(a=>a.category.toLowerCase()==="person"&&a.active);if(n.length===0)return[...r];let o=[];for(let a=0;a<r.length;a++){let c=r[a];if(c.trackId!==void 0)continue;let h=$e(c),u=h.width<=1.05&&h.height<=1.05;for(let p of n){let T=u&&p.boundingBox.normalizedWidth>0?{originX:p.boundingBox.normalizedX,originY:p.boundingBox.normalizedY,width:p.boundingBox.normalizedWidth,height:p.boundingBox.normalizedHeight}:p.boundingBox,E=ae(h,T);E>=t&&o.push({personIdx:a,trackId:p.trackId,iou:E})}}o.sort((a,c)=>c.iou-a.iou);let s=new Set,i=new Set,f=new Map;for(let a of o)s.has(a.personIdx)||i.has(a.trackId)||(s.add(a.personIdx),i.add(a.trackId),f.set(a.personIdx,a.trackId));return r.length===1&&n.length===1&&!f.has(0)&&r[0].trackId===void 0&&f.set(0,n[0].trackId),r.map((a,c)=>{if(a.trackId!==void 0)return a;let h=f.get(c);return h!==void 0?{...a,trackId:h}:a})}var Pe=class{objects;poseLandmarks;masks;segmentation;classes;poseLandmarksTensor;objectsTensor;masksTensor;histogramTensor;_totalFrames;_fps;_width;_height;_transformer;_stencilTexture;_poseCache=new Map;_objectCache=new Map;_maskCache=new Map;_matteCache=new Map;_poseLmCache=new Map;_trackCache=new Map;_categoryCache=new Map;_classCache=new Map;_maskTrackCache=new Map;_registeredSignals=new Set;constructor(e={}){this._totalFrames=e.totalFrames??120,this._fps=e.fps??24,this._width=e.width??1920,this._height=e.height??1080,this._transformer=new Me({width:this._width,height:this._height,fov:e.cameraFov??60});let t=this,n=(l,m)=>{let x=nt(l,m);return this._registeredSignals.add(x),x},o=l=>this.getPoseResult(l).people[0]?.keypoints??Ft(),s=(l,m)=>{let x=M=>o(M)[l]??{x:.5,y:.5,z:0},v=n(M=>x(M.frame).x,{fps:this._fps,label:`${m}_x`}),w=n(M=>x(M.frame).y,{fps:this._fps,label:`${m}_y`}),O=n(M=>x(M.frame).z??0,{fps:this._fps,label:`${m}_z`}),H=n(M=>this._transformer.projectNormalizedLandmark(x(M.frame)).x,{fps:this._fps,label:`${m}_screenX`}),R=n(M=>this._transformer.projectNormalizedLandmark(x(M.frame)).y,{fps:this._fps,label:`${m}_screenY`});return{x:v,y:w,z:O,screenX:H,screenY:R}},i=l=>{let m=this._poseLmCache.get(l);return m||(m=s(l,Xe[l]??`kpt_${l}`),this._poseLmCache.set(l,m)),m},f={nose:i(k.NOSE),leftEye:i(k.LEFT_EYE),rightEye:i(k.RIGHT_EYE),leftEar:i(k.LEFT_EAR),rightEar:i(k.RIGHT_EAR),shoulder:i(k.LEFT_SHOULDER),leftShoulder:i(k.LEFT_SHOULDER),rightShoulder:i(k.RIGHT_SHOULDER),leftElbow:i(k.LEFT_ELBOW),rightElbow:i(k.RIGHT_ELBOW),leftWrist:i(k.LEFT_WRIST),rightWrist:i(k.RIGHT_WRIST),leftHip:i(k.LEFT_HIP),rightHip:i(k.RIGHT_HIP),leftKnee:i(k.LEFT_KNEE),rightKnee:i(k.RIGHT_KNEE),leftAnkle:i(k.LEFT_ANKLE),rightAnkle:i(k.RIGHT_ANKLE),get:i};this.poseLandmarks=new Proxy(f,{get(l,m,x){return typeof m=="string"&&/^\d+$/.test(m)?l.get(Number(m)):typeof m=="number"?l.get(m):Reflect.get(l,m,x)}});let a=(l,m="unknown")=>({trackId:l,category:m,score:0,boundingBox:{originX:this._width/2,originY:this._height/2,width:0,height:0,normalizedX:.5,normalizedY:.5,normalizedWidth:0,normalizedHeight:0},centerX:this._width/2,centerY:this._height/2,normalizedCenterX:.5,normalizedCenterY:.5,velocity:{vx:0,vy:0},speed:0,age:0,hits:0,active:!1,isCoasting:!1}),c=(l,m)=>{let x=n(R=>l(R.frame).sx,{fps:this._fps,label:`${m}_screenX`}),v=n(R=>l(R.frame).sy,{fps:this._fps,label:`${m}_screenY`}),w=n(R=>this._width>0?l(R.frame).sx/this._width:0,{fps:this._fps,label:`${m}_x`}),O=n(R=>this._height>0?l(R.frame).sy/this._height:0,{fps:this._fps,label:`${m}_y`}),H=n(()=>0,{fps:this._fps,label:`${m}_z`});return{x:w,y:O,z:H,screenX:x,screenY:v}},h=(l,m,x)=>{let v=A=>{let V=t.getPoseResult(A);if(V.people.length===0)return;let D=l(A),X=x??D.trackId,q=V.people.find(K=>K.trackId===X);if(q)return q;if(!D.active&&V.people.length>1)return;if(V.people.length===1)return V.people[0];let $,N=.1;for(let K of V.people){let G=$e(K),z=G.width<=1.05&&G.height<=1.05&&D.boundingBox.normalizedWidth>0?{originX:D.boundingBox.normalizedX,originY:D.boundingBox.normalizedY,width:D.boundingBox.normalizedWidth,height:D.boundingBox.normalizedHeight}:D.boundingBox,Q=ae(G,z);Q>N&&(N=Q,$=K)}return $},w=n(A=>v(A.frame)?1:0,{fps:this._fps,label:`${m}_hasPose`}),O=(A,V)=>{let D=G=>{let z=v(G)?.keypoints[A];if(z&&z.visibility>.05)return{x:z.x,y:z.y,z:0};let Q=l(G);return{x:Q.normalizedCenterX,y:Q.normalizedCenterY,z:0}},X=n(G=>D(G.frame).x,{fps:this._fps,label:`${m}_${V}_x`}),q=n(G=>D(G.frame).y,{fps:this._fps,label:`${m}_${V}_y`}),$=n(G=>D(G.frame).z??0,{fps:this._fps,label:`${m}_${V}_z`}),N=n(G=>t._transformer.projectNormalizedLandmark(D(G.frame)).x,{fps:this._fps,label:`${m}_${V}_screenX`}),K=n(G=>t._transformer.projectNormalizedLandmark(D(G.frame)).y,{fps:this._fps,label:`${m}_${V}_screenY`});return{x:X,y:q,z:$,screenX:N,screenY:K}},H=new Map,R=A=>{let V=H.get(A);return V||(V=O(A,Xe[A]??`kpt_${A}`),H.set(A,V)),V},M=n(A=>{let V=A.frame,D=v(V);if(!D)return 0;let X=v(Math.max(0,V-1)),q=D.keypoints,$=X?.keypoints,N=q[k.RIGHT_WRIST],K=$?.[k.RIGHT_WRIST],G=0;if(N&&K&&N.visibility>.1&&K.visibility>.1){let F=(N.x-K.x)*this._width,Y=(N.y-K.y)*this._height;G=Math.sqrt(F*F+Y*Y)*this._fps}let ne=q[k.LEFT_WRIST],z=$?.[k.LEFT_WRIST],Q=0;if(ne&&z&&ne.visibility>.1&&z.visibility>.1){let F=(ne.x-z.x)*this._width,Y=(ne.y-z.y)*this._height;Q=Math.sqrt(F*F+Y*Y)*this._fps}return Math.max(G,Q)},{fps:this._fps,label:`${m}_wristSpeed`}),d=n(A=>{let V=v(A.frame);if(!V)return 0;let D=V.keypoints,X=D[k.LEFT_WRIST],q=D[k.LEFT_SHOULDER],$=D[k.RIGHT_WRIST],N=D[k.RIGHT_SHOULDER],K=X&&q&&X.visibility>.1&&q.visibility>.1&&X.y<q.y,G=$&&N&&$.visibility>.1&&N.visibility>.1&&$.y<N.y;return K||G?1:0},{fps:this._fps,label:`${m}_handRaised`}),I=n(A=>{let V=v(A.frame);if(!V)return 0;let D=V.keypoints,X=D[k.LEFT_SHOULDER],q=D[k.RIGHT_SHOULDER],$=D[k.LEFT_HIP],N=D[k.RIGHT_HIP];if(!X||!q||!$||!N)return 0;let K=(X.x+q.x)/2*this._width,G=(X.y+q.y)/2*this._height,ne=($.x+N.x)/2*this._width,z=($.y+N.y)/2*this._height,Q=K-ne,F=G-z;return Q===0&&F===0?0:Math.atan2(Q,-F)},{fps:this._fps,label:`${m}_bodyTiltAngle`}),U={hasPose:w,wristSpeed:M,handRaised:d,bodyTiltAngle:I,nose:R(k.NOSE),leftEye:R(k.LEFT_EYE),rightEye:R(k.RIGHT_EYE),leftEar:R(k.LEFT_EAR),rightEar:R(k.RIGHT_EAR),shoulder:R(k.LEFT_SHOULDER),leftShoulder:R(k.LEFT_SHOULDER),rightShoulder:R(k.RIGHT_SHOULDER),leftElbow:R(k.LEFT_ELBOW),rightElbow:R(k.RIGHT_ELBOW),leftWrist:R(k.LEFT_WRIST),rightWrist:R(k.RIGHT_WRIST),leftHip:R(k.LEFT_HIP),rightHip:R(k.RIGHT_HIP),leftKnee:R(k.LEFT_KNEE),rightKnee:R(k.RIGHT_KNEE),leftAnkle:R(k.LEFT_ANKLE),rightAnkle:R(k.RIGHT_ANKLE),get:R};return new Proxy(U,{get(A,V,D){return typeof V=="string"&&/^\d+$/.test(V)?A.get(Number(V)):typeof V=="number"?A.get(V):Reflect.get(A,V,D)}})},u=(l,m,x,v)=>{let w=d=>l(d).boundingBox,O=h(l,`${m}_pose`,v),H=(d,I,U)=>c(A=>({sx:I(w(A)),sy:U(w(A))}),`${m}_${d}`),R=H("center",d=>d.originX+d.width/2,d=>d.originY+d.height/2),M=n(d=>l(d.frame).speed,{fps:this._fps,label:`${m}_speed`});return{get trackId(){return v??l(0).trackId},get category(){return x??l(0).category},bounds:{x:n(d=>w(d.frame).normalizedX,{fps:this._fps,label:`${m}_normX`}),y:n(d=>w(d.frame).normalizedY,{fps:this._fps,label:`${m}_normY`}),width:n(d=>w(d.frame).normalizedWidth,{fps:this._fps,label:`${m}_normWidth`}),height:n(d=>w(d.frame).normalizedHeight,{fps:this._fps,label:`${m}_normHeight`}),screenX:n(d=>w(d.frame).originX,{fps:this._fps,label:`${m}_screenX`}),screenY:n(d=>w(d.frame).originY,{fps:this._fps,label:`${m}_screenY`}),screenWidth:n(d=>w(d.frame).width,{fps:this._fps,label:`${m}_screenWidth`}),screenHeight:n(d=>w(d.frame).height,{fps:this._fps,label:`${m}_screenHeight`}),aspectRatio:n(d=>{let I=w(d.frame);return I.height>0?I.width/I.height:1},{fps:this._fps,label:`${m}_aspectRatio`}),area:n(d=>{let I=w(d.frame);return I.width*I.height},{fps:this._fps,label:`${m}_area`})},anchors:{topLeft:H("topLeft",d=>d.originX,d=>d.originY),topCenter:H("topCenter",d=>d.originX+d.width/2,d=>d.originY),topRight:H("topRight",d=>d.originX+d.width,d=>d.originY),centerLeft:H("centerLeft",d=>d.originX,d=>d.originY+d.height/2),center:R,centerRight:H("centerRight",d=>d.originX+d.width,d=>d.originY+d.height/2),bottomLeft:H("bottomLeft",d=>d.originX,d=>d.originY+d.height),bottomCenter:H("bottomCenter",d=>d.originX+d.width/2,d=>d.originY+d.height),bottomRight:H("bottomRight",d=>d.originX+d.width,d=>d.originY+d.height)},kinematics:{vx:n(d=>l(d.frame).velocity.vx,{fps:this._fps,label:`${m}_vx`}),vy:n(d=>l(d.frame).velocity.vy,{fps:this._fps,label:`${m}_vy`}),speed:M,acceleration:M.velocity(1),headingRad:n(d=>{let I=l(d.frame).velocity;return Math.atan2(I.vy,I.vx)},{fps:this._fps,label:`${m}_headingRad`}),headingDeg:n(d=>{let I=l(d.frame).velocity;return Math.atan2(I.vy,I.vx)*180/Math.PI},{fps:this._fps,label:`${m}_headingDeg`})},confidence:n(d=>l(d.frame).score,{fps:this._fps,label:`${m}_score`}),active:n(d=>l(d.frame).active?1:0,{fps:this._fps,label:`${m}_active`}),isCoasting:n(d=>l(d.frame).isCoasting?1:0,{fps:this._fps,label:`${m}_isCoasting`}),age:n(d=>l(d.frame).age,{fps:this._fps,label:`${m}_age`}),pose:O,center:R,topCenter:this.__pending,bottomCenter:R,topLeft:R,bottomLeft:R}},p=(l,m,x,v)=>{let w=u(l,m,x,v),O=w.anchors;return Object.assign(w,{topCenter:O.topCenter,bottomCenter:O.bottomCenter,topLeft:O.topLeft,bottomLeft:O.bottomLeft}),w},T=l=>{let m=this._trackCache.get(l);return m||(m=p(x=>this.getObjectResult(x).objects.find(v=>v.trackId===l)??a(l),`track_${l}`,void 0,l),this._trackCache.set(l,m)),m},E=(l,m=0)=>{let x=`${l.toLowerCase()}_${m}`,v=this._categoryCache.get(x);return v||(v=p(w=>this.getObjectResult(w).objects.filter(R=>R.category.toLowerCase()===l.toLowerCase()&&R.active)[m]??a(0,l),`cat_${l}_${m}`,l),this._categoryCache.set(x,v)),v},P=p(l=>{let m=this.getObjectResult(l);if(m.objects.length===0)return a(0);let x=m.objects[0];for(let v=1;v<m.objects.length;v++)m.objects[v].score>x.score&&(x=m.objects[v]);return x},"primary_object"),L=l=>{let m=new Set;for(let x of this.getObjectResult(l).objects)x.active&&m.add(x.category);return Array.from(m).sort()},g=l=>{let m=l.toLowerCase(),x=this._classCache.get(m);return x||(x={count:n(v=>this.getObjectResult(v.frame).objects.filter(w=>w.active&&w.category.toLowerCase()===m).length,{fps:this._fps,label:`class_${m}_count`}),maxConfidence:n(v=>{let w=0;for(let O of this.getObjectResult(v.frame).objects)O.active&&O.category.toLowerCase()===m&&O.score>w&&(w=O.score);return w},{fps:this._fps,label:`class_${m}_maxConf`}),present:n(v=>this.getObjectResult(v.frame).objects.some(w=>w.active&&w.category.toLowerCase()===m)?1:0,{fps:this._fps,label:`class_${m}_present`}),primary:E(l)},this._classCache.set(m,x),x)};this.classes={get:g,get names(){return L(te.value)},histogram:{get:l=>t.getClassHistogramTensor(l?.frame??te.value),get value(){return t.getClassHistogramTensor(te.value)}}},this.objects={get:T,byCategory:E,primary:P,count:n(l=>this.getObjectResult(l.frame).objects.filter(m=>m.active).length,{fps:this._fps,label:"tracked_objects_count"}),hasCategory:l=>g(l).present,getActiveTracks:l=>this.getObjectResult(l).objects.filter(m=>m.active),get detectedCategories(){return L(te.value)}};let _=(l,m)=>this.getMaskResult(l).find(x=>x.trackId===m),b=l=>Ge(this.getMaskResult(l)),j=(l,m)=>{let x=v=>{let w=l(v);if(!(!w||w.trackId===void 0))return this.getObjectResult(v).objects.find(O=>O.trackId===w.trackId)};return{get trackId(){return l(te.value)?.trackId??0},get category(){return l(te.value)?.category??"unknown"},area:n(v=>l(v.frame)?.area??0,{fps:this._fps,label:`${m}_area`}),coverage:n(v=>l(v.frame)?.coverage??0,{fps:this._fps,label:`${m}_coverage`}),solidity:n(v=>{let w=l(v.frame),O=x(v.frame);if(!w||!O)return 0;let H=O.boundingBox.width*O.boundingBox.height;return H>0?w.area/H:0},{fps:this._fps,label:`${m}_solidity`}),bboxFill:n(v=>{let w=l(v.frame);if(!w||w.width*w.height===0)return 0;let O=x(v.frame);return O?O.boundingBox.width*O.boundingBox.height/(w.width*w.height):0},{fps:this._fps,label:`${m}_bboxFill`})}};this.masks={get:l=>{let m=this._maskTrackCache.get(l);return m||(m=j(x=>_(x,l),`mask_${l}`),this._maskTrackCache.set(l,m)),m},subject:j(b,"subject"),count:n(l=>new Set(this.getMaskResult(l.frame).map(m=>m.trackId??-1)).size,{fps:this._fps,label:"mask_count"})},this.segmentation={humanSilhouette:this.masks.subject,subject:this.masks.subject,instanceMasks:this.masks,matte:{coverage:n(l=>t.getMatteResult(l.frame)?.coverage??0,{fps:this._fps,label:"matte_coverage"}),at:l=>t.getMatteResult(l)},get stencilTexture(){return t._stencilTexture}},this.poseLandmarksTensor={get:l=>t.getPoseLandmarksTensor(l?.frame??te.value),get value(){return t.getPoseLandmarksTensor(te.value)}},this.objectsTensor={get:l=>t.getObjectsTensor(l?.frame??te.value),get value(){return t.getObjectsTensor(te.value)}},this.masksTensor={get:l=>t.getMasksTensor(l?.frame??te.value),get value(){return t.getMasksTensor(te.value)}},this.histogramTensor={get:l=>t.getClassHistogramTensor(l?.frame??te.value),get value(){return t.getClassHistogramTensor(te.value)}}}setStencilTexture(e){this._stencilTexture=e}get stencilTexture(){return this._stencilTexture}latestAtOrBefore(e,t,n=8){let o=this.clamp(t),s=Math.max(0,o-n);for(let i=o;i>=s;i--){let f=e.get(i);if(f!==void 0)return f}}invalidateSignals(){for(let e of this._registeredSignals)e.invalidate()}setPoseResult(e,t){this._poseCache.set(this.clamp(e),t),this.invalidateSignals()}getPoseResult(e){return this.latestAtOrBefore(this._poseCache,e)??Dt()}setObjectResult(e,t){let n="objects"in t?t:{objects:t,rawDetections:[]};this._objectCache.set(this.clamp(e),{objects:n.objects,rawDetections:n.rawDetections??[]}),this.invalidateSignals()}getObjectResult(e){return this.latestAtOrBefore(this._objectCache,e)??Bt()}setMaskResult(e,t){this._maskCache.set(this.clamp(e),t),this.invalidateSignals()}getMaskResult(e){return this.latestAtOrBefore(this._maskCache,e)??[]}setMatteResult(e,t){this._matteCache.set(this.clamp(e),t),this.invalidateSignals()}getMatteResult(e){return this.latestAtOrBefore(this._matteCache,e)}summary(e=te.value){let t=this.clamp(e),n=this.getObjectResult(t),o=n.objects.map(f=>({trackId:f.trackId,category:f.category,score:f.score,center:[f.centerX,f.centerY],speed:f.speed,active:f.active})),s=new Set;for(let f of n.objects)f.active&&s.add(f.category);let i={};for(let f of this.getMaskResult(t))i[f.category]=(i[f.category]??0)+1;return{frame:t,objects:o,classes:Array.from(s).sort(),masks:i}}getPoseLandmarksTensor(e){let n=this.getPoseResult(e).people[0]?.keypoints??[],o=new Float32Array(51);for(let s=0;s<17;s++)o[s*3]=n[s]?.x??.5,o[s*3+1]=n[s]?.y??.5,o[s*3+2]=n[s]?.visibility??0;return{data:o,shape:[17,3],dtype:"float32"}}getObjectsTensor(e,t=16){let n=this.getObjectResult(e),o=new Float32Array(t*8),s=Math.min(t,n.objects.length);for(let i=0;i<s;i++){let f=n.objects[i],a=i*8,c=0;for(let h=0;h<f.category.length;h++)c=c*31+f.category.charCodeAt(h)&65535;o[a]=f.active?1:0,o[a+1]=c,o[a+2]=f.centerX,o[a+3]=f.centerY,o[a+4]=f.boundingBox.width,o[a+5]=f.boundingBox.height,o[a+6]=f.velocity.vx,o[a+7]=f.velocity.vy}return{data:o,shape:[t,8],dtype:"float32"}}getMasksTensor(e,t=16){let n=this.getMaskResult(e),o=new Float32Array(t*2),s=Math.min(t,n.length);for(let i=0;i<s;i++){let f=n[i];o[i*2]=f.coverage;let a=this.getObjectResult(e).objects.find(h=>h.trackId===f.trackId),c=a?a.boundingBox.width*a.boundingBox.height:0;o[i*2+1]=c>0?f.area/c:0}return{data:o,shape:[t,2],dtype:"float32"}}getClassHistogramTensor(e,t=80){let n=new Float32Array(t);for(let o of this.getObjectResult(e).objects)if(o.active){let s=yn.get(o.category.toLowerCase());s!==void 0&&(n[s]+=1)}return{data:n,shape:[t],dtype:"float32"}}clamp(e){return Math.max(0,Math.min(this._totalFrames-1,Math.round(e)))}};var yn=new Map(ye.map((r,e)=>[r,e]));y();function Yt(r,e,t={}){let n=t.offsetX??0,o=t.offsetY??0,s=t.offsetZ??0;if(!e||typeof e!="object")return r;if("screenX"in e&&e.screenX&&typeof e.screenX=="object"){let i=e;r.x=n!==0?i.screenX.add(n):i.screenX,r.y=o!==0?i.screenY.add(o):i.screenY,r.z=s!==0?i.z.add(s):i.z}else if("x"in e&&typeof e.x=="object"&&e.x!==null){let i=e;r.x=n!==0?i.x.add(n):i.x,r.y=o!==0?i.y.add(o):i.y,r.z=s!==0?i.z.add(s):i.z}else{let i=e;r.x=(i.screenX??i.x)+n,r.y=(i.screenY??i.y)+o,r.z=(i.z??0)+s}return r}function rs(r,e,t={}){if(!e||typeof e!="object")return r;if("anchors"in e&&e.anchors){let n=e,o=t.anchor??(t.matchWidth||t.matchHeight?"topLeft":"center"),s=n.anchors[o]??n.center,i=s;return t.smoothFrames&&t.smoothFrames>1&&(i={x:s.x.smooth(t.smoothFrames),y:s.y.smooth(t.smoothFrames),z:s.z,screenX:s.screenX.smooth(t.smoothFrames),screenY:s.screenY.smooth(t.smoothFrames)}),t.matchWidth&&(r.width=t.smoothFrames&&t.smoothFrames>1?n.bounds.screenWidth.smooth(t.smoothFrames):n.bounds.screenWidth),t.matchHeight&&(r.height=t.smoothFrames&&t.smoothFrames>1?n.bounds.screenHeight.smooth(t.smoothFrames):n.bounds.screenHeight),t.hideWhenLost&&(r.opacity=n.active),Yt(r,i,t)}return Yt(r,e,t)}y();function xn(r){let e=[];return r.enableDetection===!0&&e.push("detect"),r.enableSegmentation===!0&&e.push("segment"),r.enablePose===!0&&e.push("pose"),r.enableMatte===!0&&e.push("matte"),e.length>0?e:["detect"]}var We=class r{id;kind="vision";source;config;vision;_runner;_runnerOptions;constructor(e,t={},n={},o={}){this.id=`vision-${Math.random().toString(36).slice(2,9)}`,this.source=e,this.config=t,this._runnerOptions=o,this.vision=new Pe({...n,config:t})}runner(){if(!this._runner){let{variant:e,confidence:t,classes:n,modelsDir:o,baseUrl:s,maskThreshold:i,featherRadius:f}=this.config;this._runner=fe.create({...this._runnerOptions,...e!==void 0?{variant:e}:{},...t!==void 0?{confidence:t}:{},...n!==void 0?{classes:n}:{},...o!==void 0?{modelsDir:o}:{},...s!==void 0?{baseUrl:s}:{},...i!==void 0?{maskThreshold:i}:{},...f!==void 0?{featherRadius:f}:{}})}return this._runner}async ready(){let e=this.runner();return await e.preload(xn(this.config)),e}close(){this._runner?.close(),this._runner=void 0}static attach(e,t={},n={}){let o=new r(e,t,n),s=o.vision;return Object.defineProperties(s,{node:{value:o.toNode(),enumerable:!0},ready:{value:()=>o.ready()},runner:{value:()=>o.runner()},close:{value:()=>o.close()}}),s}toNode(){return{id:this.id,kind:"vision",source:this.source,config:this.config}}};y();var Ke=new Uint8Array(0),Nt=new Uint32Array(0);function kn(r,e,t){Ke.length<r.length&&(Ke=new Uint8Array(r.length),Nt=new Uint32Array(r.length));let n=Ke,o=Nt,s=0,i=0;for(let f=1;f<=r.length;f++)(f===r.length||r[f]!==r[i])&&(n[s]=r[i],o[s]=f-i,s++,i=f);return{width:e,height:t,values:n.slice(0,s),lengths:o.slice(0,s)}}function Tn(r){let e=new Uint8Array(r.width*r.height),t=0;for(let n=0;n<r.values.length;n++){let o=t+r.lengths[n];r.values[n]!==0&&e.fill(r.values[n],t,o),t=o}return e}function Xt(r){return r.values.byteLength+r.lengths.byteLength}function Ze(r){let{mask:e,...t}=r;return{...t,rle:kn(e,r.width,r.height)}}function Je(r){let{rle:e,...t}=r;return{...t,mask:Tn(e)}}function qe(r){let e=512+r.detections.length*128+r.objects.length*256;for(let t of r.masks??[])e+=Xt(t.rle);return r.subject&&(e+=Xt(r.subject.mask.rle)),e}var Re=class{constructor(e=256*1024*1024){this.maxBytes=e}maxBytes;entries=new Map;bytes=0;get(e,t){let n=`${e}#${t}`,o=this.entries.get(n);return o&&(this.entries.delete(n),this.entries.set(n,o)),o}set(e,t,n){let o=`${e}#${t}`,s=this.entries.get(o);s&&(this.bytes-=qe(s),this.entries.delete(o)),this.entries.set(o,n),this.bytes+=qe(n);for(let[i,f]of this.entries){if(this.bytes<=this.maxBytes)break;this.entries.delete(i),this.bytes-=qe(f)}}clear(){this.entries.clear(),this.bytes=0}get size(){return this.entries.size}};y();var _n=`
|
|
61
|
-
struct Params {
|
|
62
|
-
mode: u32, // 0 matte, 1 mask, 2 crop
|
|
63
|
-
_pad: u32,
|
|
64
|
-
cropMin: vec2<f32>, // uv of the subject bounds (crop)
|
|
65
|
-
cropMax: vec2<f32>,
|
|
66
|
-
_pad2: vec2<f32>,
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
@group(0) @binding(0) var<uniform> params: Params;
|
|
70
|
-
@group(0) @binding(1) var picture: texture_2d<f32>;
|
|
71
|
-
@group(0) @binding(2) var mask: texture_2d<f32>;
|
|
72
|
-
@group(0) @binding(3) var samp: sampler;
|
|
73
|
-
|
|
74
|
-
struct VSOut {
|
|
75
|
-
@builtin(position) pos: vec4<f32>,
|
|
76
|
-
@location(0) uv: vec2<f32>,
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
@vertex fn vs(@builtin(vertex_index) i: u32) -> VSOut {
|
|
80
|
-
var p = array<vec2<f32>, 3>(vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0));
|
|
81
|
-
var out: VSOut;
|
|
82
|
-
out.pos = vec4(p[i], 0.0, 1.0);
|
|
83
|
-
out.uv = vec2(p[i].x * 0.5 + 0.5, 0.5 - p[i].y * 0.5);
|
|
84
|
-
return out;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {
|
|
88
|
-
var uv = in.uv;
|
|
89
|
-
if (params.mode == 2u) {
|
|
90
|
-
uv = mix(params.cropMin, params.cropMax, uv);
|
|
91
|
-
}
|
|
92
|
-
let m = textureSampleLevel(mask, samp, uv, 0.0).r;
|
|
93
|
-
if (params.mode == 1u) {
|
|
94
|
-
return vec4(m, m, m, 1.0);
|
|
95
|
-
}
|
|
96
|
-
return textureSampleLevel(picture, samp, uv, 0.0) * m;
|
|
97
|
-
}
|
|
98
|
-
`,Ie=class{constructor(e,t){this.device=e;let n=e.createShaderModule({label:"vision_matte_composite",code:_n});this.pipeline=e.createRenderPipeline({label:"vision_matte_composite",layout:"auto",vertex:{module:n,entryPoint:"vs"},fragment:{module:n,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-list"}}),this.sampler=e.createSampler({magFilter:"linear",minFilter:"linear"})}device;pipeline;sampler;uniforms=[];uniformIndex=0;masks=new Map;uploadMask(e,t,n,o){let s=this.masks.get(e);(!s||s.width!==n||s.height!==o)&&(s?.destroy(),s=this.device.createTexture({label:`vision_mask_${e}`,size:[n,o],format:"r8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),this.masks.set(e,s));let i=Math.ceil(n/256)*256,f=t;if(i!==n){f=new Uint8Array(i*o);for(let a=0;a<o;a++)f.set(t.subarray(a*n,(a+1)*n),a*i)}return this.device.queue.writeTexture({texture:s},f.buffer,{offset:f.byteOffset,bytesPerRow:i,rowsPerImage:o},{width:n,height:o}),s}draw(e,t,n,o,s,i){let f=o.width,a=o.height,c=new Float32Array(8),h=new Uint32Array(c.buffer);h[0]=s==="matte"?0:s==="mask"?1:2,s==="crop"&&i?(c[2]=i.x0/f,c[3]=i.y0/a,c[4]=(i.x1+1)/f,c[5]=(i.y1+1)/a):(c[2]=0,c[3]=0,c[4]=1,c[5]=1,s==="crop"&&(h[0]=0)),this.uniformIndex>=this.uniforms.length&&this.uniforms.push(this.device.createBuffer({size:c.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}));let u=this.uniforms[this.uniformIndex];this.uniformIndex=(this.uniformIndex+1)%16,this.device.queue.writeBuffer(u,0,c);let p=this.device.createBindGroup({layout:this.pipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:u}},{binding:1,resource:n.createView()},{binding:2,resource:o.createView()},{binding:3,resource:this.sampler}]}),T=e.beginRenderPass({label:"vision_matte_composite",colorAttachments:[{view:t,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});T.setPipeline(this.pipeline),T.setBindGroup(0,p),T.draw(3),T.end()}};var Ce=null,Qe=null,Oe=null,Gt=null,$t=new Re,Wt=new Map,Sn=new Map,wn=new Map,Kt=new Map,et=new WeakMap,de=new Map,tt=new Map,vn=3;function qt(r,e,t,n,o,s){let i=r.get(t);return(!i||i.width!==n.width||i.height!==n.height||i.format!==n.format)&&(i?.destroy(),i=e.createTexture({size:[n.width,n.height],format:n.format,usage:o,label:s}),r.set(t,i)),i}var Mn=(r,e,t)=>qt(Sn,r,e,t,GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING,"vision_held_frame"),Pn=(r,e,t)=>qt(wn,r,e,t,GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,"vision_matte");function Rn(r,e,t,n,o){let s=e;return JSON.stringify([r,s?.operation?.id??s?.id??null,n,o,t.mode??"passthrough",t.variant,t.confidence,t.classes,t.maskThreshold,t.featherRadius,t.matteSource,t.keyBackground===!0,t.maxMissedFrames])}function In(r,e,t){let n=r.backgroundKeyThreshold;return typeof n=="number"?n:typeof n?.get=="function"?Number(n.get({frame:e,fps:t})):typeof n?._value=="number"?Number(n._value):70}function Cn(r,e,t){if(r)return tt.set(e,{mask:r,frame:t}),r;let n=tt.get(e);if(n&&t-n.frame<=vn)return n.mask}function On(r){let e={variant:r.variant,confidence:r.confidence,classes:r.classes,maskThreshold:r.maskThreshold,featherRadius:r.featherRadius,modelsDir:r.modelsDir,baseUrl:r.baseUrl},t=JSON.stringify(e);return Ce?.key!==t&&(Ce?.runner.close(),Ce={key:t,runner:fe.create(e)}),Ce.runner}function Ln(r,e){let t=Kt.get(r);return t||(t=new ue({maxMissedFrames:e.maxMissedFrames??15}),Kt.set(r,t)),t}function En(r,e,t){return e<=0||t<=0?r:{people:r.people.map(n=>({...n,keypoints:n.keypoints.map(o=>({x:o.x/e,y:o.y/t,visibility:o.visibility}))}))}}function jn(r,e){return r.map(t=>{let{cx:n,cy:o}=Dn(t),s=null;for(let i of e){let f=i.centerX-n,a=i.centerY-o,c=f*f+a*a;(!s||c<s.distance)&&(s={trackId:i.trackId,distance:c})}return s?{...t,trackId:s.trackId}:t})}function Vn(r,e,t){let n=e*t,o=new Uint8Array(n),s=new Int32Array(n),i=0,f=c=>{o[c]||r[c]>0||(o[c]=1,s[i++]=c)};for(let c=0;c<e;c++)f(c),f((t-1)*e+c);for(let c=0;c<t;c++)f(c*e),f(c*e+e-1);let a=0;for(;a<i;){let c=s[a++],h=c%e,u=c+1;h+1<e&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-1,h>0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c+e,u<n&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-e,u>=0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u)}for(let c=0;c<n;c++)r[c]===0&&o[c]===0&&(r[c]=255)}function An(r,e,t,n=2){if(n<=0)return r;let o=new Uint8Array(e*t),s=new Uint8Array(e*t),i=2*n+1;for(let a=0;a<t;a++){let c=a*e,h=0;for(let u=-n;u<=n;u++){let p=Math.max(0,Math.min(e-1,u));h+=r[c+p]}for(let u=0;u<e;u++){o[c+u]=Math.round(h/i);let p=Math.max(0,u-n),T=Math.min(e-1,u+n+1);h+=r[c+T]-r[c+p]}}let f=new Float64Array(e);for(let a=-n;a<=n;a++){let c=Math.max(0,Math.min(t-1,a))*e;for(let h=0;h<e;h++)f[h]+=o[c+h]}for(let a=0;a<t;a++){let c=a*e,h=Math.max(0,a-n)*e,u=Math.min(t-1,a+n+1)*e;for(let p=0;p<e;p++)s[c+p]=Math.round(f[p]/i),f[p]+=o[u+p]-o[h+p]}return s}function Bn(r,e,t,n,o,s){let i=0,f=0,a=0,c=0,h=(g,_)=>{let b=_*e+g;if(r[b])return;let j=b*4;i+=n[j],f+=n[j+1],a+=n[j+2],c++};for(let g=0;g<e;g+=4)h(g,0),h(g,t-1);for(let g=0;g<t;g+=4)h(0,g),h(e-1,g);if(c===0)return r;i/=c,f/=c,a/=c;let u=e*t,p=new Uint8Array(u);for(let g=0,_=0;g<u;g++,_+=4)p[g]=Math.max(Math.abs(n[_]-i),Math.abs(n[_+1]-f),Math.abs(n[_+2]-a))>o?1:0;let T=new Int32Array(u),E=0;for(let g=0;g<u;g++)r[g]>0&&(p[g]&&(r[g]=255),T[E++]=g);let P=0;for(;P<E;){let g=T[P++],_=g%e,b=g+1;_+1<e&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-1,_>0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g+e,b<u&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-e,b>=0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b)}Vn(r,e,t);let L=s!==void 0&&s>0?Math.max(1,Math.min(8,Math.round(s*50))):2;return An(r,e,t,L)}function Dn(r){let{mask:e,width:t,height:n}=r,o=0,s=0,i=0;for(let f=0;f<n;f++){let a=f*t;for(let c=0;c<t;c++)e[a+c]>0&&(o+=c,s+=f,i++)}return i===0?{cx:0,cy:0}:{cx:o/i,cy:s/i}}var Zt=async r=>{let{ctx:e,encoder:t,pass:n,targetView:o,targetWidth:s,targetHeight:i,props:f,drawChild:a}=r,{virtualMedia:c}=f,h=c?.operation;if(h?.op!=="Vision")return;let u=h;n.end();let p=c?.children?.[0];if(!p)return;let T=u.effect,E=T!=null,P=c?.id??h?.id??`${s}x${i}_${u.mode}_${u.variant}_${u.keyBackground}_${u.backgroundKeyThreshold}`,L=`vision-${P}`,g=E?et.get(T):de.get(L);g&&(g.width!==s||g.height!==i)&&(g.destroy(),g=void 0,E?et.delete(T):de.delete(L));let _=g!==void 0;if(!g&&(g=e.device.createTexture({size:[s,i],format:e.renderer.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,label:"vision_child_persistent"}),E?et.set(T,g):de.set(L,g),de.size>4)){let F=de.keys().next().value;F&&F!==L&&(de.get(F)?.destroy(),de.delete(F))}let b=f.frame??0,j=f.fps??24,l=u.mode??"passthrough",m=l==="mask"||l==="matte"||l==="crop",x=u.visionBundle??c.visionBundle,v=u.enableDetection!==!1||l==="boxes"||l==="tracking",w=u.enableSegmentation===!0||m&&u.matteSource!=="selfie",O=u.enableMatte===!0||m&&u.matteSource==="selfie",H=u.enablePose===!0||l==="skeleton",R=!O&&!H&&(v||w),M=R?Rn(P,p,u,s,i):"",d=F=>u.keyBackground===!0?In(u,F,j):void 0,I=F=>{if(!R||F===void 0)return;let Y=$t.get(M,F);if(!(!Y||Y.keyThreshold!==d(F))&&!(w&&x&&!Y.masks))return Y},U=_?Wt.get(P):void 0,A=I(b),V=A!==void 0;A||(A=I(U));let D;m&&_&&!V&&(D=Mn(e.device,P,g),t.copyTextureToTexture({texture:g},{texture:D},[s,i,1]));let X=null;if(_&&!A){let Y=s*4,Z=Math.ceil(Y/256)*256,J=Z*i,ee=e.device.createBuffer({size:J,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:"vision_frame_staging"}),W=e.device.createCommandEncoder({label:"vision_readback_encoder"});W.copyTextureToBuffer({texture:g},{buffer:ee,bytesPerRow:Z,rowsPerImage:i},[s,i,1]),e.device.queue.submit([W.finish()]),await ee.mapAsync(GPUMapMode.READ);let oe=new Uint8Array(ee.getMappedRange());if(X=new Uint8ClampedArray(s*i*4),Z===Y)X.set(oe.subarray(0,X.length));else for(let he=0;he<i;he++)X.set(oe.subarray(he*Z,he*Z+Y),he*Y);ee.unmap(),ee.destroy()}let q=g.createView();e.renderer.beginFrame(t,q,{r:0,g:0,b:0,a:0},s,i,"clear").end(),await a(p,{...f},q,g,s,i),Wt.set(P,b);let N=[],K=[],G,ne,z;if(A)N=A.objects,v&&x?.setObjectResult(b,{objects:A.objects,rawDetections:A.detections}),w&&x&&A.masks&&(K=A.masks.map(Je),x.setMaskResult(b,K)),A.subject&&(z=Je(A.subject.mask),tt.set(P,{mask:z,frame:b}));else if(X){let F=On(u),Y={data:X,width:s,height:i},Z=[];if(v){Z=await F.detect(Y);let J=Ln(P,u);b===0&&J.reset(),N=J.update(Z,b,j),x?.setObjectResult(b,{objects:N,rawDetections:Z})}if(w){let J=await F.segment(Y);K=jn(J.masks,N),x?.setMaskResult(b,K)}if(O&&(G=await F.matte(Y),x?.setMatteResult(b,G)),H){let J=await F.pose(Y),ee=En(J,Y.width,Y.height);ne={people:zt(ee.people,N)},x?.setPoseResult(b,ne)}if(m){z=Cn(u.matteSource==="selfie"?Fn(G):Ht(K.length>0?K:x?.getMaskResult(b)??[]),P,b);let J=d(U??b);z&&J!==void 0&&(z={...z,mask:Bn(z.mask,z.width,z.height,X,J,u.featherRadius)})}R&&U!==void 0&&$t.set(M,U,{detections:Z,objects:N,masks:x?K.map(Ze):null,subject:z?{mask:Ze(z)}:null,keyThreshold:d(U)})}if(m){let F=V?g:D;if(!z||!F){e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear").end();return}(!Oe||Gt!==e.renderer.format)&&(Oe=new Ie(e.device,e.renderer.format),Gt=e.renderer.format);let Y=Oe.uploadMask(P,z.mask,z.width,z.height),Z=Pn(e.device,P,g);Oe.draw(t,Z.createView(),F,Y,l,l==="crop"?we(z)??void 0:void 0),x?.setStencilTexture(Z);let J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}if(l==="skeleton"){Qe||(Qe=new Te(e.device));let Y=(x?.getPoseResult(b)??ne)?.people[0];if(Y&&Y.keypoints.length>0){let Z=Qe.renderToTexture(Y.keypoints,{width:s,height:i}),J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}}if(l==="boxes"||l==="tracking"){let F=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(F,g,{x:0,y:0,width:s,height:i});let Y=N.length>0?N:x?.getObjectResult(b).objects??[];if(Y.length>0){let Z="#38bdf8";for(let ee of Y){if(!ee.active)continue;let W=ee.boundingBox;e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY+W.height-2,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:2,height:W.height},Z),e.renderer.drawRect(F,{x:W.originX+W.width-2,y:W.originY,width:2,height:W.height},Z);let oe=Math.min(16,W.width/4,W.height/4);e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:oe,height:4},"#ffffff"),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:4,height:oe},"#ffffff"),l==="tracking"&&e.renderer.drawRect(F,{x:ee.centerX-3,y:ee.centerY-3,width:6,height:6},"#ef4444",3)}}F.end();return}let Q=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(Q,g,{x:0,y:0,width:s,height:i}),Q.end()};function Fn(r){if(!r||r.coverage<=0)return;let e=Math.round(r.coverage*r.width*r.height);return{category:"person",mask:r.mask,width:r.width,height:r.height,area:e,coverage:r.coverage,detectionIndex:-1}}var Xs=ot({WebGPURenderer:Zt});export{ft as a,ht as b,gt as c,Zn as d,en as e,tr as f,or as g,cr as h,lr as i,tn as j,kt as k,xt as l,mr as m,nn as n,rn as o,on as p,sn as q,an as r,cn as s,Ae as t,Tt as u,ln as v,Be as w,Mr as x,_t as y,Lr as z,Er as A,Ar as B,ke as C,ye as D,ue as E,Xr as F,k as G,Xe as H,Lt as I,Te as J,Et as K,Vt as L,fe as M,Me as N,Pe as O,Yt as P,rs as Q,We as R,Xs as S};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as P}from"./chunk-N4LHIPHZ.mjs";import{t as y}from"./chunk-ZNGOAGAI.mjs";import{e as g}from"./chunk-BVF64D6H.mjs";g();g();function V(e,n,r,i){if(e==null)return n;if(typeof e=="number")return Number.isFinite(e)?e:n;if(typeof e=="object"&&e!==null){if("get"in e&&typeof e.get=="function")try{let s=e.get({frame:r,fps:i,time:i>0?r/i:0,duration:0,durationMs:0,progress:0,deltaTime:i>0?1/i:0}),l=Number(s);if(Number.isFinite(l))return l}catch{}if("value"in e){let s=Number(e.value);if(Number.isFinite(s))return s}}if(typeof e=="function")try{let s=Number(e({frame:r,fps:i,time:i>0?r/i:0}));if(Number.isFinite(s))return s}catch{}let u=Number(e);return Number.isFinite(u)?u:n}function b(e,n,r,i,u,s,l){let h=`${n}HandleId`,c=e[h],a=c?e.inputs?.[c]:null,t;if(a?.connectionValid&&a.outputItem){let o=a.outputItem.data;t=o&&typeof o=="object"&&"offset"in o?o.offset:a.outputItem.data}else t=e[n];let m=V(t,r,s,l);return Math.max(i,Math.min(u,m))}var D=new Map;function C(e,n){let r=D.get(n);return r||(r=new P(e),D.set(n,r)),r}var M=async e=>{let{ctx:n,encoder:r,pass:i,targetView:u,targetTexture:s,targetWidth:l,targetHeight:h,props:c,drawChild:a}=e,t=c.virtualMedia?.operation;if(!t||t.op!=="TemporalDeflicker"&&t.op!=="Deflicker")return;let m=c.virtualMedia?.children?.[0];if(!m)return;i.end();let o=l,d=h,p=c.frame??0,f=c.fps||30,w=n.renderer.getTemporaryTexture(o,d,[...c.excludeTextures||[],s]),k=w.createView();n.renderer.beginFrame(r,k,{r:0,g:0,b:0,a:0},o,d,"clear").end(),n.renderer.pushScissor({x:0,y:0,width:o,height:d}),n.renderer.pushIdentity(),await a(m,{...c,virtualMedia:m,containerWidth:o,containerHeight:d},k,w,o,d),n.renderer.popTransform(),n.renderer.popScissor(),e.pass.end();let I=b(t,"blendWeight",.35,0,1,p,f),W=b(t,"disocclusionThreshold",.15,.01,1,p,f),N=b(t,"maxMotionPixels",64,1,256,p,f),R=b(t,"scale",.5,.1,1,p,f),F=Math.round(b(t,"windowSize",2,1,5,p,f)),G=c.virtualMedia?.metadata?.id||t.id||`deflicker_${c.renderId??"global"}`,x=C(n.device,G);p===0&&x.reset();let H=x.execute(w,{blendWeight:I,disocclusionThreshold:W,maxMotionPixels:N,scale:R,windowSize:F},r),T=n.renderer.beginFrame(r,u,{r:0,g:0,b:0,a:0},o,d,"load"),S=typeof t.opacity=="number"?t.opacity:1;n.renderer.drawTexture(T,H,{x:0,y:0,width:o,height:d},{opacity:S}),e.pass=T};var q=y({WebGPURenderer:M});export{q as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as lt}from"./chunk-37EFVZWT.mjs";import{c as ut,e as tt,f as dt}from"./chunk-66NVL4BN.mjs";import{i as st,l as N}from"./chunk-24P6DAB3.mjs";import{w as ct}from"./chunk-ZNGOAGAI.mjs";import{d as C,e as H}from"./chunk-BVF64D6H.mjs";H();H();H();function mt(e,n){return Math.round(e*n)}function Q(e,n,s={timeOffsetSec:0}){if(!e)return e;let{operation:b,metadata:u={},children:c=[]}=e,{timeOffsetSec:h,durationLimitMs:i}=s;if(!b)return{...e,children:(c||[]).map(t=>Q(t,n,s))};let d=b.timeline,p=d?.segments||[],m=N(e)?.durationMs??0;if(p.length>0){let t=p.reduce((a,A)=>{let z=A.endSec!=null?A.endSec-A.startSec:0,v=Math.max(1,Math.round(z*n));return a+v},0);t>0&&(m=t/n*1e3)}let f={...b},o=d?.startFrame??f.startFrame;if(typeof o=="number"){let t=mt(h,n);f.startFrame=o-t}let M={...u,durationMs:m},r=typeof o=="number"||f.op==="compose"?{timeOffsetSec:0,durationLimitMs:void 0}:{timeOffsetSec:h,durationLimitMs:i},S=(c||[]).map(t=>Q(t,n,r));return{metadata:M,operation:f,children:S}}var gt=typeof C<"u"&&/^(debug|trace)$/i.test(C.env?.LOG_LEVEL??""),y={debug:(e,...n)=>{gt&&(typeof e=="object"&&e!==null?console.info("[AudioExtractor]",e,...n):console.info(`[AudioExtractor] ${e}`,...n))},warn:(e,...n)=>{typeof e=="object"&&e!==null?console.warn("[AudioExtractor]",e,...n):console.warn(`[AudioExtractor] ${e}`,...n)},error:(e,...n)=>{typeof e=="object"&&e!==null?console.error("[AudioExtractor]",e,...n):console.error(`[AudioExtractor] ${e}`,...n)}};(typeof window>"u"||typeof C<"u"&&C.versions?.node)&&import("./server-utils-2FAIV45N.mjs").then(e=>{e.mediaLogger&&(y=e.mediaLogger)}).catch(()=>{});var ht=()=>{if(typeof window>"u")return Promise.resolve();let e=globalThis.scheduler;return typeof e?.yield=="function"?e.yield():new Promise(n=>setTimeout(n,0))},St=async(e=3e4)=>{await new Promise(s=>setTimeout(s,100));let n=Date.now();return new Promise(s=>{let b=()=>{let u=typeof window<"u"&&window.renderer_delayRenderHandles?window.renderer_delayRenderHandles:[],c=typeof globalThis<"u"?globalThis.__GATEWAI_DELAYS__:null,h=u.length>0,i=c instanceof Set&&c.size>0;if(!h&&!i){s();return}if(Date.now()-n>e){y.warn(`[AudioExtractor] waitForDelayRender timed out waiting for handles: ${JSON.stringify({browserHandles:u,globalDelays:c?Array.from(c):[]})}`),s();return}setTimeout(b,50)};b()})};async function Mt(e){y.debug(`[AudioExtractor] decodeAudioSource started for url: ${e}`);try{if(typeof window<"u"&&typeof window.document<"u"&&!(typeof C<"u"&&C.versions&&C.versions.node)){y.debug(`[AudioExtractor] Browser detected. Fetching arrayBuffer for ${e}...`);let b=window.AudioContext||window.webkitAudioContext;if(!b)throw new Error("AudioContext is not supported in this browser");let u=new b;try{let c=await fetch(e);if(y.debug(`[AudioExtractor] Fetch response status for ${e}: ${c.status} (${c.statusText})`),!c.ok)throw new Error(`Failed to fetch audio source: ${c.statusText}`);let h=await c.arrayBuffer();y.debug(`[AudioExtractor] Fetched ${h.byteLength} bytes. Decoding audio data...`);let i=await u.decodeAudioData(h);y.debug(`[AudioExtractor] Decoded successfully: ${i.numberOfChannels} channels, sampleRate: ${i.sampleRate}, duration: ${i.duration}s`);let d=[];for(let p=0;p<i.numberOfChannels;p++)d.push(new Float32Array(i.getChannelData(p)));return{channels:d,sampleRate:i.sampleRate}}finally{u.close(),y.debug(`[AudioExtractor] AudioContext closed for ${e}`)}}let s=!1;try{y.debug(`[AudioExtractor] Server / Node.js detected. Acquiring from inputStore for ${e}...`);let b=await tt.acquire(e);s=!0,y.debug("[AudioExtractor] inputStore acquired. Retrieving primary audio track...");let u=await b.getPrimaryAudioTrack();if(!u)return y.warn(`[AudioExtractor] No primary audio track found in input for ${e}`),null;let h=new ut(u).samples(0),i=[],d=0,p=48e3,m=1;y.debug(`[AudioExtractor] Starting mediabunny generator loop for ${e}...`);for await(let o of h){p=o.sampleRate,m=o.numberOfChannels;let M=o.numberOfFrames;if(i.length===0)for(let l=0;l<m;l++)i.push([]);for(let l=0;l<m;l++){let r;try{let S=o.allocationSize({planeIndex:l,format:"f32-planar"});r=new Float32Array(S/4),o.copyTo(r,{planeIndex:l,format:"f32-planar"})}catch{let S=o.allocationSize({planeIndex:l});if(o.format==="s16"||o.format==="s16-planar"){let t=new Int16Array(S/2);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/32768}else if(o.format==="s32"||o.format==="s32-planar"){let t=new Int32Array(S/4);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/2147483648}else if(o.format==="u8"||o.format==="u8-planar"){let t=new Uint8Array(S);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=((t[a]??128)-128)/128}else r=new Float32Array(S/4),o.copyTo(r,{planeIndex:l})}i[l].push(r)}d+=M,o.close()}return y.debug(`[AudioExtractor] Generator loop finished. Decoded total frames: ${d}`),d===0||i.length===0?null:{channels:i.map(o=>{let M=new Float32Array(d),l=0;for(let r of o)M.set(r,l),l+=r.length;return M}),sampleRate:p}}catch(b){if(typeof C<"u"&&C.versions?.node)try{let{execSync:u}=await import("./child_process-AIL2NBWS.mjs"),c=u(`ffmpeg -v error -i "${e}" -f f32le -ar 48000 -ac 2 pipe:1`,{maxBuffer:100*1024*1024}),h=c.byteLength/4,i=h/2,d=new Float32Array(c.buffer,c.byteOffset,h),p=new Float32Array(i),m=new Float32Array(i);for(let f=0;f<i;f++)p[f]=d[f*2],m[f]=d[f*2+1];return{channels:[p,m],sampleRate:48e3}}catch(u){y.warn({ffmpegErr:u},`[AudioExtractor] ffmpeg fallback decode failed for ${e}`)}return y.error({err:b},`[AudioExtractor] Failed to decode source ${e}`),null}finally{s&&tt.release(e)}}catch(n){return y.error({err:n},`[AudioExtractor] Failed to decode source ${e}`),null}}async function ft(e,n,s,b,u,c){let h=new Float32Array(u),d=n/s*b,p=1e5;for(let m=0;m<u;m++){m>0&&m%p===0&&await ht();let f=c+m*d,o=Math.floor(f),M=Math.ceil(f);if(o<0){h[m]=0;continue}if(o>=e.length)break;let l=f-o,r=e[o]??0,S=M>=0&&M<e.length?e[M]??r:r,t=r+l*(S-r);h[m]=Number.isFinite(t)?t:0}return h}async function Ot(e,n,s=48e3,b,u){y.debug(`[AudioExtractor] mixAudioTracks started. FPS: ${n}, targetSampleRate: ${s}`),await St(),lt.registerSignalsFromComposition(u,e);let c=N(e)?.durationMs||1e3,h=c/1e3,i=Math.ceil(h*s);y.debug(`[AudioExtractor] Composition total duration: ${c}ms (${h}s). Total mixed samples to allocate: ${i}`);let d=new Float32Array(i),p=new Float32Array(i),m=[d,p],f=new Map;async function o(t,a,A,z,v,B){if(!t)return null;let k=t.operation;if(!k){let D=N(t)?.durationMs??0,P=Math.round(D/1e3*n),V=B!==null?P>0?Math.min(B,P):B:P,O=Math.ceil(V/n*s);if(O<=0)return null;let j=new Float32Array(O),U=new Float32Array(O),G=[j,U];for(let x of t.children){let q=await o(x,a,A,z,v,V);if(q){let F=x.operation,g=F?.startFrame??F?.timeline?.startFrame??0,E=Math.round(g/n*s);for(let R=0;R<2;R++){let w=G[R],L=q[R],$=Math.min(L.length,w.length-E);for(let T=0;T<$;T++)E+T>=0&&(w[E+T]+=L[T])}}}return G}let J=z*(k.volume??1)*(k.opacity===0?0:1)*(k.muted?0:1),et=v,pt=k.startFrame??k.timeline?.startFrame??0,yt=A+pt,nt=k.timeline?.segments||[],wt=N(t)?.durationMs??0,W=Math.round(wt/1e3*n),bt=B!==null?W>0?Math.min(B,W):B:W,I=Math.ceil(bt/n*s);if(I<=0)return null;let ot=new Float32Array(I),rt=new Float32Array(I),X=[ot,rt],at=async(D,P)=>{let V=D?D.startSec:0,O=a+V,j=yt+P,U=0;D?U=Math.max(1,Math.round(((D.endSec??0)-D.startSec)*n)):U=W;let G=B!==null?Math.min(B,U):U,x=Math.round(P/n*s);if(k.op==="source"){let F=st(t),g=dt(t);if(g.sourceUrl&&(F==="Audio"||F==="Video")&&J>0){let E=Math.max(.5,et*(Number(g.speed)||1)),R=Math.max(0,(Number(g.trimStartSec)||0)+O),w=f.get(g.sourceUrl);if(w===void 0&&(w=await Mt(g.sourceUrl),f.set(g.sourceUrl,w)),w){let L=G/n,$=Math.min(I-x,Math.ceil(L*s));if($>0&&x<I){let T=Math.round(R*w.sampleRate),K=w.channels[0],Z=w.channels.length>1?w.channels[1]:w.channels[0],_=await ft(K,w.sampleRate,s,E,$,T),At=await ft(Z,w.sampleRate,s,E,$,T);for(let Y=0;Y<$;Y++){let it=x+Y;ot[it]+=_[Y]*J,rt[it]+=At[Y]*J}}}await ht()}}if(t.children)for(let F of t.children){let g=await o(F,O,j,J,et,G);if(g){let E=F.operation,R=E?.startFrame??E?.timeline?.startFrame??0,w=Math.round(R/n*s),L=x+w;for(let $=0;$<2;$++){let T=X[$],K=g[$],Z=Math.min(K.length,T.length-L);for(let _=0;_<Z;_++)L+_>=0&&(T[L+_]+=K[_])}}}let q=ct.get(k.op);if(q)try{let F=G/n,g=Math.min(I-x,Math.ceil(F*s));if(g>0&&x<I&&x>=0){let E=X.map(L=>L.subarray(x,x+g)),R=(j/n+O)*1e3,w=N(t)?.durationMs??void 0;await q(E,s,t,{device:b,frame:j,fps:n,renderId:u,elapsedMs:R,durationMs:w})}}catch(F){y.error({err:F},`[AudioExtractor] Custom plugin for operation '${k.op}' failed`)}};if(nt.length>0){let D=0;for(let P of nt){let V=(P.endSec??0)-P.startSec,O=Math.max(1,Math.round(V*n));await at(P,D),D+=O}}else await at(null,0);return X}let M=Q(e,n),l=await o(M,0,0,1,1,null);if(l)for(let t=0;t<2;t++){let a=m[t],A=l[t],z=Math.min(A.length,a.length);for(let v=0;v<z;v++)a[v]=A[v]}f.clear();let r=0;for(let t=0;t<i;t++){let a=Math.abs(d[t]??0),A=Math.abs(p[t]??0);a>r&&(r=a),A>r&&(r=A)}let S=r>.95?.92/r:1;for(let t=0;t<i;t++){let a=(d[t]??0)*S,A=(p[t]??0)*S;d[t]=Number.isFinite(a)?Math.tanh(a):0,p[t]=Number.isFinite(A)?Math.tanh(A):0}return{channels:m,sampleRate:s}}export{Mt as a,Ot as b};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{e as G}from"./chunk-BVF64D6H.mjs";G();var M=class{deviceCaches=new WeakMap;devicePromises=new WeakMap;rawDataCache=new Map;rawDataPromises=new Map;listeners=new Set;onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}emit(e){for(let t of this.listeners)try{t(e)}catch{}}getAnyMatching(e,t){let a=this.getCache(t),r=Array.from(a.keys());for(let o=r.length-1;o>=0;o--){let u=r[o];if(u.startsWith(e))return a.get(u)}}getOrCreateRawDataPromise(e){let t=this.rawDataPromises.get(e);if(!t){let a,r;t={promise:new Promise((u,f)=>{a=u,r=f}),resolve:a,reject:r},this.rawDataPromises.set(e,t)}return t}rejectRawDataPromise(e,t){let a=this.rawDataPromises.get(e);a&&(a.reject(t),this.rawDataPromises.delete(e)),this.emit(e)}getCache(e){let t=this.deviceCaches.get(e);return t||(t=new Map,this.deviceCaches.set(e,t)),t}getPromises(e){let t=this.devicePromises.get(e);return t||(t=new Map,this.devicePromises.set(e,t)),t}get(e,t){return this.getCache(t).get(e)}set(e,t,a){let r=this.getCache(t),o=r.get(e);if(o&&o!==a){if(o.texture!==a.texture){let u=o.texture;t.queue.onSubmittedWorkDone().then(()=>{try{u.destroy()}catch{}}).catch(()=>{})}if(o.vertexBuffer!==a.vertexBuffer){let u=o.vertexBuffer;t.queue.onSubmittedWorkDone().then(()=>{try{u.destroy()}catch{}}).catch(()=>{})}}r.set(e,a)}getRawData(e){return this.rawDataCache.get(e)}getAnyRawData(){let e=Array.from(this.rawDataCache.values());return e[e.length-1]}createOrUpdate(e,t,a,r,o){let u={points:a,size:r,type:o};this.rawDataCache.set(e,u);let f=this.rawDataPromises.get(e);f&&(f.resolve(u),this.rawDataPromises.delete(e));let P=[];if(o==="3D"){let c=0;for(let s=0;s<r;s++)for(let n=0;n<r;n++)for(let i=0;i<r;i++){let h=i/(r-1||1),l=n/(r-1||1),d=s/(r-1||1),D=a[c]||[h,l,d];c++,P.push(h-.5,l-.5,d-.5),P.push(D[0],D[1],D[2])}}else for(let c=0;c<a.length;c++){let s=c/(a.length-1||1),n=a[c];P.push(s-.5,0,0),P.push(n[0],n[1],n[2])}let v=new Float32Array(P),m=this.get(e,t),g=m?.texture;if(!g||m?.size!==r||m?.type!==o){if(m){let c=m.texture;t.queue.onSubmittedWorkDone().then(()=>{try{c.destroy()}catch{}}).catch(()=>{})}o==="3D"?g=t.createTexture({size:[r,r,r],dimension:"3d",format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}):g=t.createTexture({size:[r,1,1],dimension:"1d",format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST})}if(o==="3D"){let s=Math.ceil(r*4/256)*256,n=new Uint8Array(s*r*r),i=0;for(let h=0;h<r;h++)for(let l=0;l<r;l++)for(let d=0;d<r;d++){let D=d/(r-1||1),T=l/(r-1||1),p=h/(r-1||1),b=a[i]||[D,T,p];i++;let y=d*4+l*s+h*s*r;n[y]=Math.max(0,Math.min(255,Math.round(b[0]*255))),n[y+1]=Math.max(0,Math.min(255,Math.round(b[1]*255))),n[y+2]=Math.max(0,Math.min(255,Math.round(b[2]*255))),n[y+3]=255}t.queue.writeTexture({texture:g},n,{bytesPerRow:s,rowsPerImage:r},[r,r,r])}else{let s=new Uint8Array(r*4);for(let n=0;n<r;n++){let i=a[n]||[n/(r-1||1),0,0],h=n*4;s[h]=Math.max(0,Math.min(255,Math.round(i[0]*255))),s[h+1]=Math.max(0,Math.min(255,Math.round(i[1]*255))),s[h+2]=Math.max(0,Math.min(255,Math.round(i[2]*255))),s[h+3]=255}t.queue.writeTexture({texture:g},s,{},[r,1,1])}let w=m?.vertexBuffer;if(!w||w.size<v.byteLength){if(m){let c=m.vertexBuffer;t.queue.onSubmittedWorkDone().then(()=>{try{c.destroy()}catch{}}).catch(()=>{})}w=t.createBuffer({size:v.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST})}t.queue.writeBuffer(w,0,v);let x={texture:g,type:o,size:r,vertexBuffer:w,vertexCount:a.length};return this.set(e,t,x),this.emit(e),x}async getOrLoad(e,t,a){if(a?.aborted)throw new DOMException("The operation was aborted.","AbortError");let r=this.get(e,t);if(r)return r;let o=this.rawDataCache.get(e);if(o)return this.createOrUpdate(e,t,o.points,o.size,o.type);let u=this.getPromises(t),f=u.get(e);return f||(f=(async()=>{if(e.startsWith("runtime://")){let c=this.getOrCreateRawDataPromise(e),s,n=new Promise((l,d)=>{let D=()=>{s=setTimeout(()=>{(()=>{if(typeof window<"u"){let p=window.renderer_delayRenderHandles;if(Array.isArray(p)&&p.length>0)return!0}if(typeof globalThis<"u"){let p=globalThis.__GATEWAI_DELAYS__;if(p instanceof Set&&p.size>0)return!0}return!1})()?D():d(new Error(`Timeout waiting for runtime LUT "${e}" after 5000ms.`))},5e3)};D()}),i,h;a&&(h=new Promise((l,d)=>{i=()=>{d(new DOMException("The operation was aborted.","AbortError"))},a.addEventListener("abort",i)}));try{let l=[c.promise,n];h&&l.push(h);let d=await Promise.race(l);return this.createOrUpdate(e,t,d.points,d.size,d.type)}finally{clearTimeout(s),i&&a&&a.removeEventListener("abort",i)}}let P=await fetch(e,{signal:a});if(!P.ok)throw new Error(`Failed to load LUT file: ${P.statusText}`);let m=(await P.text()).split(/\r?\n/),g=33,w="3D",x=[];for(let c of m){let s=c.trim();if(!s||s.startsWith("#"))continue;if(s.startsWith("LUT_3D_SIZE")){let i=s.split(/\s+/);g=parseInt(i[1],10),w="3D";continue}if(s.startsWith("LUT_1D_SIZE")){let i=s.split(/\s+/);g=parseInt(i[1],10),w="1D";continue}if(s.match(/^[a-zA-Z]/))continue;let n=s.split(/\s+/).map(Number);n.length===3&&n.every(i=>!isNaN(i))&&x.push([n[0],n[1],n[2]])}if(x.length===0)throw new Error("No valid color mappings found in LUT file.");return this.createOrUpdate(e,t,x,g,w)})(),u.set(e,f),f.catch(()=>{u.delete(e)})),f}evict(e,t){let a=this.getCache(t),r=a.get(e);if(r){let o=r.texture,u=r.vertexBuffer;t.queue.onSubmittedWorkDone().then(()=>{try{o.destroy()}catch{}try{u.destroy()}catch{}}).catch(()=>{}),a.delete(e)}this.getPromises(t).delete(e)}hasPending(e){let t=this.devicePromises.get(e);return t!==void 0&&t.size>0||this.rawDataPromises.size>0}async awaitAllPending(e){let t=Array.from(this.getPromises(e).values());await Promise.all(t)}destroy(){this.deviceCaches=new WeakMap,this.devicePromises=new WeakMap,this.rawDataCache.clear(),this.rawDataPromises.clear()}},U="__GATEWAI_LUT_STORE__",A=(globalThis[U]||(globalThis[U]=new M),globalThis[U]);export{A as a};
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import{a as K}from"./chunk-XOEEGC4Z.mjs";import{b as J,c as Q}from"./chunk-IYVN2QEL.mjs";import{a as s}from"./chunk-NQZKBFC6.mjs";import{t as j}from"./chunk-ZNGOAGAI.mjs";import{d as q}from"./chunk-6YJP57MZ.mjs";import{e as b}from"./chunk-BVF64D6H.mjs";b();b();b();b();var R=500,I=100,c=4096,Pe=s.object({id:s.string().default("patch"),centerX:s.number().min(0).max(1).default(.5),centerY:s.number().min(0).max(1).default(.5),offsetX:s.number().min(-c).max(c).default(50),offsetY:s.number().min(-c).max(c).default(0),radius:s.number().min(1).max(R).default(25),sourceRadius:s.number().min(1).max(R).default(25),feather:s.number().min(0).max(I).default(50),opacity:s.number().min(0).max(1).default(1),mode:s.enum(["Clone","SeamlessHeal","TextureTransfer"]).default("SeamlessHeal")}),Ge=K().field("patches",s.array(Pe).optional(),{label:"Patches",description:"List of patch healing operations applied sequentially."}).field("centerX",s.number().min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Center X Signal",description:"Horizontal normalized position of destination patch (0.0 to 1.0)."}).field("centerY",s.number().min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Center Y Signal",description:"Vertical normalized position of destination patch (0.0 to 1.0)."}).field("offsetX",s.number().min(-c).max(c).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Source Offset X Signal",description:"Horizontal pixel distance from destination to sample source patch."}).field("offsetY",s.number().min(-c).max(c).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Source Offset Y Signal",description:"Vertical pixel distance from destination to sample source patch."}).field("radius",s.number().min(1).max(R).default(25),{bindable:!0,dataTypes:["Number","Signal"],label:"Target Radius Signal",description:"Radius of the destination circular patch in pixels (used when no explicit Mask input is connected)."}).field("sourceRadius",s.number().min(1).max(R).default(25),{bindable:!0,dataTypes:["Number","Signal"],label:"Source Radius Signal",description:"Radius of the source sample circular patch in pixels."}).field("feather",s.number().min(0).max(I).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Feather Signal",description:"Softness edge falloff percentage (0\u2013100%)."}).field("opacity",s.number().min(0).max(1).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Opacity Signal",description:"Blending opacity of the healed patch (0.0\u20131.0)."}).field("mode",s.enum(["Clone","SeamlessHeal","TextureTransfer"]).default("SeamlessHeal"),{label:"Healing Mode",description:"Healing algorithm: Clone (direct stamp), SeamlessHeal (Poisson color/lighting blend), TextureTransfer (luminance structure matching)."}).build(),Ve=Ge.schema;function Z(a){if(a?.patches&&a.patches.length>0)return a.patches.map((r,P)=>({id:r.id||`patch-${P+1}`,centerX:r.centerX??.5,centerY:r.centerY??.5,offsetX:r.offsetX??50,offsetY:r.offsetY??0,radius:r.radius??25,sourceRadius:r.sourceRadius??r.radius??25,feather:r.feather??50,opacity:r.opacity??1,mode:r.mode??"SeamlessHeal"}));let e=a?.radius??25;return[{id:"patch-1",centerX:a?.centerX??.5,centerY:a?.centerY??.5,offsetX:a?.offsetX??50,offsetY:a?.offsetY??0,radius:e,sourceRadius:a?.sourceRadius??e,feather:a?.feather??50,opacity:a?.opacity??1,mode:a?.mode??"SeamlessHeal"}]}var _e=s.union([J,Q]);var Ce=`
|
|
2
|
-
struct VertexOutput {
|
|
3
|
-
@builtin(position) position : vec4<f32>,
|
|
4
|
-
@location(0) uv : vec2<f32>,
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
@vertex
|
|
8
|
-
fn vs_main(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {
|
|
9
|
-
var pos = array<vec2<f32>, 4>(
|
|
10
|
-
vec2<f32>(-1.0, 1.0),
|
|
11
|
-
vec2<f32>( 1.0, 1.0),
|
|
12
|
-
vec2<f32>(-1.0, -1.0),
|
|
13
|
-
vec2<f32>( 1.0, -1.0)
|
|
14
|
-
);
|
|
15
|
-
var uvs = array<vec2<f32>, 4>(
|
|
16
|
-
vec2<f32>(0.0, 0.0),
|
|
17
|
-
vec2<f32>(1.0, 0.0),
|
|
18
|
-
vec2<f32>(0.0, 1.0),
|
|
19
|
-
vec2<f32>(1.0, 1.0)
|
|
20
|
-
);
|
|
21
|
-
var output : VertexOutput;
|
|
22
|
-
output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);
|
|
23
|
-
output.uv = uvs[vertexIndex];
|
|
24
|
-
return output;
|
|
25
|
-
}
|
|
26
|
-
`,Me=`
|
|
27
|
-
struct PatchHealUniforms {
|
|
28
|
-
offsetX : f32,
|
|
29
|
-
offsetY : f32,
|
|
30
|
-
centerX : f32,
|
|
31
|
-
centerY : f32,
|
|
32
|
-
|
|
33
|
-
radius : f32,
|
|
34
|
-
sourceRadius : f32,
|
|
35
|
-
feather : f32,
|
|
36
|
-
opacity : f32,
|
|
37
|
-
|
|
38
|
-
mode : f32,
|
|
39
|
-
hasMask : f32,
|
|
40
|
-
hasOffsetXSig : f32,
|
|
41
|
-
hasOffsetYSig : f32,
|
|
42
|
-
|
|
43
|
-
hasCenterXSig : f32,
|
|
44
|
-
hasCenterYSig : f32,
|
|
45
|
-
hasRadiusSig : f32,
|
|
46
|
-
hasSourceRadSig : f32,
|
|
47
|
-
|
|
48
|
-
hasFeatherSig : f32,
|
|
49
|
-
hasOpacitySig : f32,
|
|
50
|
-
pad0 : f32,
|
|
51
|
-
pad1 : f32,
|
|
52
|
-
};
|
|
53
|
-
`,Xe=`
|
|
54
|
-
${Me}
|
|
55
|
-
|
|
56
|
-
@group(0) @binding(0) var<uniform> u : PatchHealUniforms;
|
|
57
|
-
|
|
58
|
-
@group(1) @binding(0) var srcTex : texture_2d<f32>;
|
|
59
|
-
@group(1) @binding(1) var maskTex : texture_2d<f32>;
|
|
60
|
-
@group(1) @binding(2) var samp : sampler;
|
|
61
|
-
|
|
62
|
-
@group(2) @binding(0) var offsetXSigTex : texture_2d<f32>;
|
|
63
|
-
@group(2) @binding(1) var offsetYSigTex : texture_2d<f32>;
|
|
64
|
-
@group(2) @binding(2) var centerXSigTex : texture_2d<f32>;
|
|
65
|
-
@group(2) @binding(3) var centerYSigTex : texture_2d<f32>;
|
|
66
|
-
@group(2) @binding(4) var radiusSigTex : texture_2d<f32>;
|
|
67
|
-
@group(2) @binding(5) var sourceRadSigTex : texture_2d<f32>;
|
|
68
|
-
@group(2) @binding(6) var featherSigTex : texture_2d<f32>;
|
|
69
|
-
@group(2) @binding(7) var opacitySigTex : texture_2d<f32>;
|
|
70
|
-
@group(2) @binding(8) var signalSamp : sampler;
|
|
71
|
-
|
|
72
|
-
fn getLuminance(c : vec3<f32>) -> f32 {
|
|
73
|
-
return dot(c, vec3<f32>(0.2126, 0.7152, 0.0722));
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
fn sampleBoxBlur(tex : texture_2d<f32>, smp : sampler, centerUv : vec2<f32>, blurPx : f32, dims : vec2<f32>) -> vec4<f32> {
|
|
77
|
-
let texel = 1.0 / dims;
|
|
78
|
-
let stepSize = max(1.0, blurPx / 3.0);
|
|
79
|
-
var accum = vec4<f32>(0.0);
|
|
80
|
-
var count = 0.0;
|
|
81
|
-
|
|
82
|
-
for (var y = -2; y <= 2; y++) {
|
|
83
|
-
for (var x = -2; x <= 2; x++) {
|
|
84
|
-
let offset = vec2<f32>(f32(x) * stepSize, f32(y) * stepSize) * texel;
|
|
85
|
-
let sampleUv = clamp(centerUv + offset, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
86
|
-
accum += textureSampleLevel(tex, smp, sampleUv, 0.0);
|
|
87
|
-
count += 1.0;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return accum / count;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
@fragment
|
|
94
|
-
fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
|
|
95
|
-
let dimensions = vec2<f32>(textureDimensions(srcTex));
|
|
96
|
-
|
|
97
|
-
var offsetX = u.offsetX;
|
|
98
|
-
if (u.hasOffsetXSig > 0.5) {
|
|
99
|
-
offsetX = textureSampleLevel(offsetXSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
100
|
-
}
|
|
101
|
-
var offsetY = u.offsetY;
|
|
102
|
-
if (u.hasOffsetYSig > 0.5) {
|
|
103
|
-
offsetY = textureSampleLevel(offsetYSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
104
|
-
}
|
|
105
|
-
var centerX = u.centerX;
|
|
106
|
-
if (u.hasCenterXSig > 0.5) {
|
|
107
|
-
centerX = textureSampleLevel(centerXSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
108
|
-
}
|
|
109
|
-
var centerY = u.centerY;
|
|
110
|
-
if (u.hasCenterYSig > 0.5) {
|
|
111
|
-
centerY = textureSampleLevel(centerYSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
112
|
-
}
|
|
113
|
-
var radius = u.radius;
|
|
114
|
-
if (u.hasRadiusSig > 0.5) {
|
|
115
|
-
radius = textureSampleLevel(radiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
116
|
-
}
|
|
117
|
-
var sourceRadius = u.sourceRadius;
|
|
118
|
-
if (u.hasSourceRadSig > 0.5) {
|
|
119
|
-
sourceRadius = textureSampleLevel(sourceRadSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
120
|
-
}
|
|
121
|
-
var feather = u.feather;
|
|
122
|
-
if (u.hasFeatherSig > 0.5) {
|
|
123
|
-
feather = textureSampleLevel(featherSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
124
|
-
}
|
|
125
|
-
var opacity = u.opacity;
|
|
126
|
-
if (u.hasOpacitySig > 0.5) {
|
|
127
|
-
opacity = textureSampleLevel(opacitySigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
let dstCol = textureSampleLevel(srcTex, samp, in.uv, 0.0);
|
|
131
|
-
|
|
132
|
-
// Calculate mask weight (either from explicit mask or procedural circular patch)
|
|
133
|
-
var maskWeight = 0.0;
|
|
134
|
-
let targetCenterUV = vec2<f32>(centerX, centerY);
|
|
135
|
-
|
|
136
|
-
if (u.hasMask > 0.5) {
|
|
137
|
-
let maskCol = textureSampleLevel(maskTex, samp, in.uv, 0.0);
|
|
138
|
-
maskWeight = max(maskCol.a, max(maskCol.r, max(maskCol.g, maskCol.b)));
|
|
139
|
-
} else {
|
|
140
|
-
let distPx = length((in.uv - targetCenterUV) * dimensions);
|
|
141
|
-
let innerRadius = radius * max(0.0, 1.0 - feather / 100.0);
|
|
142
|
-
maskWeight = 1.0 - smoothstep(innerRadius, max(innerRadius + 0.001, radius), distPx);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
let blendWeight = clamp(maskWeight * opacity, 0.0, 1.0);
|
|
146
|
-
if (blendWeight < 1e-4) {
|
|
147
|
-
return dstCol;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Compute source sample coordinate (scaling from sourceRadius to target radius if different)
|
|
151
|
-
let sourceCenterUV = targetCenterUV + vec2<f32>(offsetX, offsetY) / dimensions;
|
|
152
|
-
let srcScale = max(1.0, sourceRadius) / max(1.0, radius);
|
|
153
|
-
let uvFromTargetCenter = in.uv - targetCenterUV;
|
|
154
|
-
let srcUV = clamp(sourceCenterUV + uvFromTargetCenter * srcScale, vec2<f32>(0.0), vec2<f32>(1.0));
|
|
155
|
-
let srcCol = textureSampleLevel(srcTex, samp, srcUV, 0.0);
|
|
156
|
-
|
|
157
|
-
var healedCol = srcCol;
|
|
158
|
-
|
|
159
|
-
if (u.mode > 0.5 && u.mode < 1.5) {
|
|
160
|
-
// Mode 1: Seamless Heal (Poisson gradient / local illumination matching)
|
|
161
|
-
let blurRadius = max(4.0, radius * 0.4);
|
|
162
|
-
let srcBlur = sampleBoxBlur(srcTex, samp, srcUV, blurRadius, dimensions);
|
|
163
|
-
let dstBlur = sampleBoxBlur(srcTex, samp, in.uv, blurRadius, dimensions);
|
|
164
|
-
|
|
165
|
-
let srcDetail = srcCol.rgb - srcBlur.rgb;
|
|
166
|
-
let healedRgb = dstBlur.rgb + srcDetail;
|
|
167
|
-
let clampedRgb = clamp(healedRgb, vec3<f32>(0.0), vec3<f32>(srcCol.a));
|
|
168
|
-
healedCol = vec4<f32>(clampedRgb, srcCol.a);
|
|
169
|
-
} else if (u.mode >= 1.5) {
|
|
170
|
-
// Mode 2: Texture Transfer (Luminance structure matching)
|
|
171
|
-
let blurRadius = max(4.0, radius * 0.4);
|
|
172
|
-
let srcBlur = sampleBoxBlur(srcTex, samp, srcUV, blurRadius, dimensions);
|
|
173
|
-
|
|
174
|
-
let lumaSrc = getLuminance(srcCol.rgb);
|
|
175
|
-
let lumaSrcBlur = getLuminance(srcBlur.rgb);
|
|
176
|
-
let lumaDelta = lumaSrc - lumaSrcBlur;
|
|
177
|
-
|
|
178
|
-
let healedRgb = dstCol.rgb + vec3<f32>(lumaDelta);
|
|
179
|
-
let clampedRgb = clamp(healedRgb, vec3<f32>(0.0), vec3<f32>(dstCol.a));
|
|
180
|
-
healedCol = vec4<f32>(clampedRgb, dstCol.a);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
return mix(dstCol, healedCol, blendWeight);
|
|
184
|
-
}
|
|
185
|
-
`,ee=new WeakMap;function He(a,e){let r=ee.get(a);if(r)return r;let P=a.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),U=a.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),v=a.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:5,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:6,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:7,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:8,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),L=a.createShaderModule({code:`${Ce}
|
|
186
|
-
${Xe}`}),F=a.createPipelineLayout({bindGroupLayouts:[P,U,v]}),i=a.createRenderPipeline({layout:F,vertex:{module:L,entryPoint:"vs_main"},fragment:{module:L,entryPoint:"fs_main",targets:[{format:e,blend:{color:{srcFactor:"one",dstFactor:"zero",operation:"add"},alpha:{srcFactor:"one",dstFactor:"zero",operation:"add"}}}]},primitive:{topology:"triangle-strip"}});return r={uniformLayout:P,textureLayout:U,signalTextureLayout:v,pipeline:i},ee.set(a,r),r}var te=async a=>{let{ctx:e,encoder:r,pass:P,targetView:U,targetTexture:v,targetWidth:L,targetHeight:F,props:i,drawChild:E}=a,m=i.virtualMedia?.operation;if(m?.op!=="PatchHeal"||!m)return;let N=i.virtualMedia?.children?.[0];if(!N)return;P.end();let l=L,u=F,D=i.frame??0,O=i.fps||30,ae=m.inputs?Object.keys(m.inputs)[0]:"patch_heal_node",Y=q,h=e.renderer.getTemporaryTexture(l,u,[...i.excludeTextures||[],v]),V=h.createView();e.renderer.beginFrame(r,V,{r:0,g:0,b:0,a:0},l,u,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:l,height:u}),e.renderer.pushIdentity(),await E(N,{...i,virtualMedia:N,renderId:`${i.renderId}-src`,excludeTextures:[...i.excludeTextures||[],h]},V,h,l,u),e.renderer.popTransform(),e.renderer.popScissor();let f=null;if(m.maskMedia){f=e.renderer.getTemporaryTexture(l,u,[...i.excludeTextures||[],v,h]);let p=f.createView();e.renderer.beginFrame(r,p,{r:0,g:0,b:0,a:0},l,u,"clear").end(),e.renderer.pushScissor({x:0,y:0,width:l,height:u}),e.renderer.pushIdentity(),await E(m.maskMedia,{...i,virtualMedia:m.maskMedia,renderId:`${i.renderId}-mask`,excludeTextures:[...i.excludeTextures||[],h,f]},p,f,l,u),e.renderer.popTransform(),e.renderer.popScissor()}let{pipeline:re,uniformLayout:ie,textureLayout:se,signalTextureLayout:ne}=He(e.device,e.renderer.format),W=e.renderer.samplerCache.getSampler(e.device),oe=i.elapsedMs!==void 0?i.elapsedMs/1e3:D/O,le=i.virtualMedia?.metadata?.durationMs?i.virtualMedia.metadata.durationMs/1e3:i.durationMs!==void 0?i.durationMs/1e3:0,B=Z(m),S=(p,t,d,y)=>{let H=`${p}HandleId`,G=m[H],o=G?m.inputs?.[G]:null,C=!!(o?.connectionValid&&(o.outputItem?.type==="Signal"||o.outputItem?.type==="Numeric")),T=C&&o?.outputItem?.data?o.outputItem.data:null,x=t,M=!1;if(C)T&&(x=Math.max(d,Math.min(y,Number(T.offset??0))),M=!0);else if(o?.connectionValid&&o.outputItem?.type==="Number"){let g=typeof o.outputItem.data=="number"?o.outputItem.data:o.outputItem.data?.value??t;x=Math.max(d,Math.min(y,Number(g)))}else x=Math.max(d,Math.min(y,t));return{val:x,hasStaticSig:M,sd:T}},ue=f?f.createView():V,w=h,A=e.renderer.getTemporaryTexture(l,u,[h,...f?[f]:[],v,...i.excludeTextures||[]]),ce=B.length>1?e.renderer.getTemporaryTexture(l,u,[h,A,...f?[f]:[],v,...i.excludeTextures||[]]):A;for(let p=0;p<B.length;p++){let t=B[p],d=p===0,y=d?S("centerX",t.centerX,0,1):{val:t.centerX,hasStaticSig:!1,sd:null},H=d?S("centerY",t.centerY,0,1):{val:t.centerY,hasStaticSig:!1,sd:null},G=d?S("offsetX",t.offsetX,-c,c):{val:t.offsetX,hasStaticSig:!1,sd:null},o=d?S("offsetY",t.offsetY,-c,c):{val:t.offsetY,hasStaticSig:!1,sd:null},C=d?S("radius",t.radius,1,R):{val:t.radius,hasStaticSig:!1,sd:null},T=d?S("sourceRadius",t.sourceRadius??t.radius,1,R):{val:t.sourceRadius??t.radius,hasStaticSig:!1,sd:null},x=d?S("feather",t.feather,0,I):{val:t.feather,hasStaticSig:!1,sd:null},M=d?S("opacity",t.opacity,0,1):{val:t.opacity,hasStaticSig:!1,sd:null},g=(_,Re)=>_.hasStaticSig&&_.sd&&Y?Y.getOrCreate2DTextureView(e.device,r,_.sd.nodeId??`${ae}_${Re}`,oe,le,_.sd,l,u,i.renderId,D,O):Y?Y.getDummy1x1TextureView(e.device):V,de=g(G,"offsetX_sig"),fe=g(o,"offsetY_sig"),me=g(y,"centerX_sig"),pe=g(H,"centerY_sig"),ge=g(C,"radius_sig"),he=g(T,"sourceRadius_sig"),Se=g(x,"feather_sig"),xe=g(M,"opacity_sig"),be=t.mode==="Clone"?0:t.mode==="TextureTransfer"?2:1,n=new Float32Array(20);n[0]=G.val,n[1]=o.val,n[2]=y.val,n[3]=H.val,n[4]=C.val,n[5]=T.val,n[6]=x.val,n[7]=M.val,n[8]=be,n[9]=f?1:0,n[10]=G.hasStaticSig?1:0,n[11]=o.hasStaticSig?1:0,n[12]=y.hasStaticSig?1:0,n[13]=H.hasStaticSig?1:0,n[14]=C.hasStaticSig?1:0,n[15]=T.hasStaticSig?1:0,n[16]=x.hasStaticSig?1:0,n[17]=M.hasStaticSig?1:0,n[18]=0,n[19]=0;let ve=e.renderer.getTemporaryBuffer(n),$=p%2===0?A:ce,ye=e.device.createBindGroup({layout:se,entries:[{binding:0,resource:w.createView()},{binding:1,resource:ue},{binding:2,resource:W}]}),Te=e.device.createBindGroup({layout:ne,entries:[{binding:0,resource:de},{binding:1,resource:fe},{binding:2,resource:me},{binding:3,resource:pe},{binding:4,resource:ge},{binding:5,resource:he},{binding:6,resource:Se},{binding:7,resource:xe},{binding:8,resource:W}]}),X=r.beginRenderPass({colorAttachments:[{view:$.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});X.setPipeline(re),X.setBindGroup(0,e.device.createBindGroup({layout:ie,entries:[{binding:0,resource:{buffer:ve}}]})),X.setBindGroup(1,ye),X.setBindGroup(2,Te),X.draw(4),X.end(),w=$}let z=e.renderer.beginFrame(r,U,{r:0,g:0,b:0,a:0},l,u,"load");e.renderer.drawTexture(z,w,{x:0,y:0,width:l,height:u},{opacity:1}),a.pass=z};var ze=j({WebGPURenderer:te});export{te as a,ze as b};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as t}from"./chunk-7MJVROKR.mjs";import{a as U}from"./chunk-3ROJ7JVY.mjs";import{h as N}from"./chunk-ZNGOAGAI.mjs";import{d,e as c}from"./chunk-BVF64D6H.mjs";c();c();c();c();c();c();function Z(r){return typeof d<"u"?d.env?.[r]:void 0}function _(){let r=Z("FRAMEFIELDS_STRICT_PROPS");return r==="1"||r==="true"}function Ce(){return _()||Z("NODE_ENV")!=="production"}var $=new Set;function j(r){if(_())throw new Error(r);$.has(r)||($.add(r),console.warn(`[framefields] ${r}`))}function K(r){if(typeof r!="object"||r===null||Array.isArray(r)||N(r))return!1;let e=Object.getPrototypeOf(r);return e===Object.prototype||e===null}function Ee(r,e){let n=Array.from({length:e.length+1},(l,i)=>i);for(let l=1;l<=r.length;l++){let i=n[0];n[0]=l;for(let s=1;s<=e.length;s++){let u=n[s];n[s]=Math.min(n[s]+1,n[s-1]+1,i+(r[l-1]===e[s-1]?0:1)),i=u}}return n[e.length]}function we(r,e){let n,l=Number.POSITIVE_INFINITY,i=r.toLowerCase();for(let u of e){let p=u.toLowerCase(),m=p.includes(i)||i.includes(p)?1:Ee(i,p);m<l&&(l=m,n=u)}return n&&l<=Math.max(2,Math.ceil(r.length/2))?` Did you mean "${n}"?`:` Known props: ${e.join(", ")}.`}function Me(r,e,n){if(typeof e=="number"){let{min:l,max:i}=n,s=l!==void 0&&e<l,u=i!==void 0&&e>i;if(s||u||Number.isNaN(e)){let p=l!==void 0&&i!==void 0?`${l} to ${i}`:l!==void 0?`\u2265 ${l}`:`\u2264 ${i}`;j(Number.isNaN(e)?`${r} is NaN`:`${r} = ${e} is outside ${p}`)}return}n.enum&&(typeof e=="string"||typeof e=="boolean")&&!n.enum.includes(e)&&j(`${r} = ${JSON.stringify(e)} is not one of ${n.enum.map(l=>JSON.stringify(l)).join(", ")}`)}function J(r,e,n){let l=Object.keys(n);for(let[i,s]of Object.entries(e)){if(s===void 0)continue;let u=n[i];if(!u){j(`${r}: unknown prop "${i}".${we(i,l)}`);continue}N(s)||typeof s=="function"||(u.props&&K(s)?J(`${r}.${i}`,s,u.props):Me(`${r}.${i}`,s,u))}}function ve(r){return typeof r=="object"&&r!==null?structuredClone(r):r}function o(r,e,n,l){let i=n;Ce()&&J(r,i,l);let s={};for(let[u,p]of Object.entries(e))s[u]=ve(p);for(let[u,p]of Object.entries(i)){if(p===void 0)continue;let m=s[u];s[u]=K(m)&&K(p)?{...m,...Object.fromEntries(Object.entries(p).filter(([,Se])=>Se!==void 0))}:p}return s}c();var a={AudioCompressor:{threshold:{min:-60,max:0},ratio:{min:1,max:100},attack:{min:1e-4,max:1},release:{min:.01,max:5},knee:{min:0,max:24},makeupGain:{min:0,max:24}},AudioDelay:{delayTime:{min:.001,max:5},feedback:{min:0,max:.95},wet:{min:0,max:1},dry:{min:0,max:1},pingPong:{}},AudioFade:{fadeInDuration:{min:0,max:60},fadeOutDuration:{min:0,max:60},fadeInCurve:{enum:["linear","exponential","scurve"]},fadeOutCurve:{enum:["linear","exponential","scurve"]}},AudioNoiseGate:{threshold:{min:-120,max:0},attack:{min:1e-4,max:1},hold:{min:.001,max:5},release:{min:.01,max:5},range:{min:-120,max:0}},AudioParametricEq:{type:{enum:["lowShelf","highShelf","peak","lowPass","highPass","notch"]},frequency:{min:20,max:2e4},gain:{min:-24,max:24},q:{min:.01,max:10}},AudioReverb:{roomSize:{min:0,max:.98},damping:{min:0,max:1},wet:{min:0,max:1},dry:{min:0,max:1},width:{min:0,max:1}},Blur:{blurType:{enum:["Gaussian","Box","Median","Motion","Bilateral","Edge-preserving","Radial","Zoom"]},strength:{min:0,max:100},angle:{min:0,max:360},sigmaColor:{min:.01,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1},partialBlur:{},radius:{min:.01,max:1},radiusY:{min:0,max:1},shape:{enum:["ellipse","circle","rect"]}},CameraParallax3D:{motionPreset:{enum:["Custom","DollyZoom","Orbit","FlyThrough","HandheldShake","RackFocus"]},panX:{min:-1,max:1},panY:{min:-1,max:1},dollyZ:{min:-1,max:1},fov:{min:15,max:120},parallaxAmount:{min:0,max:2},dofAperture:{min:0,max:1},focusPlane:{min:0,max:1},edgeDilation:{min:0,max:1},depthInvert:{}},ChannelMerger:{colorSpace:{enum:["RGBA","HSLA","CMYK","LAB"]},defaultChannel4:{min:0,max:1}},ChannelSplitter:{colorSpace:{enum:["RGBA","HSLA","CMYK","LAB"]}},ColorBalance:{shadows:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},midtones:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},highlights:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},preserveLuminosity:{}},ColorKey:{keyColor:{},similarity:{min:0,max:1},smoothness:{min:0,max:1},spillSuppression:{min:0,max:1},colorSpace:{enum:["YUV","RGB"]},spillSuppressionType:{enum:["Desaturate","Neutralize","None"]}},CornerPin:{points:{}},DisplacementMap:{strengthX:{min:0,max:500},strengthY:{min:0,max:500},xChannel:{enum:["Red","Green","Blue","Alpha","Luminance"]},yChannel:{enum:["Red","Green","Blue","Alpha","Luminance"]},wrapMode:{enum:["Clamp","Repeat","Mirror"]}},ExtractLUT:{strategy:{enum:["deterministic","statistical"]},samplePoints:{min:10,max:500}},Flip:{horizontal:{},vertical:{},diagonal:{},mode:{enum:["horizontal","vertical","both","diagonal","antiDiagonal","custom"]},symmetry:{enum:["none","leftToRight","rightToLeft","topToBottom","bottomToTop","quadrant"]}},KenBurns:{keyframes:{},motionBlurSize:{min:0,max:10},movementStyle:{enum:["spline","direct"]},aspectRatio:{enum:["input","16:9","9:16","21:9","9:21","1:1","4:3","3:2","2:3","4:5","5:4"]}},LayerStyle:{dropShadow:{props:{enabled:{},color:{},opacity:{min:0,max:1},angle:{min:0,max:360},distance:{min:0,max:500},spread:{min:0,max:100},size:{min:0,max:250},blendMode:{}}},innerShadow:{props:{enabled:{},color:{},opacity:{min:0,max:1},angle:{min:0,max:360},distance:{min:0,max:500},choke:{min:0,max:100},size:{min:0,max:250},blendMode:{}}},outerGlow:{props:{enabled:{},color:{},opacity:{min:0,max:1},size:{min:0,max:250},spread:{min:0,max:100},blendMode:{}}},innerGlow:{props:{enabled:{},color:{},opacity:{min:0,max:1},size:{min:0,max:250},spread:{min:0,max:100},blendMode:{}}},stroke:{props:{enabled:{},size:{min:0,max:100},position:{enum:["inside","center","outside"]},color:{},opacity:{min:0,max:1},blendMode:{}}},bevelEmboss:{props:{enabled:{},style:{enum:["InnerBevel","OuterBevel","Emboss","PillowEmboss"]},technique:{enum:["Smooth","ChiselHard","ChiselSoft"]},depth:{min:1,max:1e3},direction:{enum:["Up","Down"]},size:{min:0,max:250},soften:{min:0,max:50},angle:{min:0,max:360},altitude:{min:0,max:90},highlightColor:{},highlightOpacity:{min:0,max:1},shadowColor:{},shadowOpacity:{min:0,max:1}}},colorOverlay:{props:{enabled:{},color:{},opacity:{min:0,max:1},blendMode:{}}},dropShadowAngleHandleId:{},dropShadowDistanceHandleId:{},dropShadowSpreadHandleId:{},dropShadowSizeHandleId:{},dropShadowOpacityHandleId:{},innerShadowAngleHandleId:{},innerShadowDistanceHandleId:{},innerShadowChokeHandleId:{},innerShadowSizeHandleId:{},innerShadowOpacityHandleId:{},outerGlowSizeHandleId:{},outerGlowSpreadHandleId:{},outerGlowOpacityHandleId:{},innerGlowSizeHandleId:{},innerGlowSpreadHandleId:{},innerGlowOpacityHandleId:{},strokeSizeHandleId:{},strokeOpacityHandleId:{},bevelEmbossDepthHandleId:{},bevelEmbossSizeHandleId:{},bevelEmbossSoftenHandleId:{},bevelEmbossAngleHandleId:{},bevelEmbossAltitudeHandleId:{},bevelEmbossHighlightOpacityHandleId:{},bevelEmbossShadowOpacityHandleId:{},colorOverlayOpacityHandleId:{}},Liquify:{operations:{}},MaskMath:{operation:{enum:["Union","Intersect","Subtract","Difference","Invert","Dilate","Erode","Choke","Feather"]},radius:{min:0,max:200},threshold:{min:0,max:1},clampMin:{min:0,max:1},clampMax:{min:0,max:1},channelA:{enum:["Alpha","Luminance","Red","Green","Blue"]},channelB:{enum:["Alpha","Luminance","Red","Green","Blue"]},binarize:{},invertResult:{},outputFormat:{enum:["WhiteWithAlpha","GrayscaleRGB","AlphaOnly","PassthroughRGB"]}},MeshWarp:{cols:{min:2,max:12},rows:{min:2,max:12},points:{}},NoiseGenerator:{noiseType:{enum:["Perlin","Simplex","Voronoi"]},outputType:{enum:["Image","Video"]},width:{min:16,max:4096},height:{min:16,max:4096},scale:{min:.1,max:100},octaves:{min:1,max:8},persistence:{min:0,max:1},lacunarity:{min:1,max:4},speed:{min:0,max:10},colorStart:{},colorEnd:{},durationMs:{min:1,max:6e4},fps:{min:1,max:120}},Paint:{width:{min:1,max:16384},height:{min:1,max:16384},maintainAspect:{},aspectRatio:{},backgroundColor:{},strokes:{}},PatchHeal:{patches:{},centerX:{min:0,max:1},centerY:{min:0,max:1},offsetX:{min:-4096,max:4096},offsetY:{min:-4096,max:4096},radius:{min:1,max:500},sourceRadius:{min:1,max:500},feather:{min:0,max:100},opacity:{min:0,max:1},mode:{enum:["Clone","SeamlessHeal","TextureTransfer"]}},ProceduralVFX:{effectType:{enum:["Smoke","Fire","Rain","Sparks","Snow","Dust","Lightning","Magic","LensFlare","Embers","EnergyBeam"]},outputType:{enum:["Image","Video"]},width:{min:16,max:4096},height:{min:16,max:4096},density:{min:0,max:1},scale:{min:.001,max:10},speed:{min:0,max:10},intensity:{min:0,max:1},seed:{min:0,max:1e6},colorStart:{},colorEnd:{},durationMs:{min:100,max:1e5},fps:{min:1,max:120}},RefineEdge:{decontaminateAmount:{min:0,max:1},radius:{min:.5,max:50},smooth:{min:0,max:100},feather:{min:0,max:50},shiftEdge:{min:-100,max:100},matteChannel:{enum:["Alpha","Luminance","Red","Green","Blue"]},outputMode:{enum:["Composite","MatteOnly","DecontaminatedRGB"]}},RefractionCaustics3D:{ior:{min:1,max:2.5},dispersion:{min:0,max:.2},refractionScale:{min:0,max:2},causticBrightness:{min:0,max:2},causticScale:{min:.1,max:5},fluidRipples:{min:0,max:1},rippleSpeed:{min:0,max:5},roughness:{min:0,max:1},specularIntensity:{min:0,max:2},lightPosX:{min:0,max:1},lightPosY:{min:0,max:1},tintColor:{},tintStrength:{min:0,max:1},depthInvert:{},depthScale:{min:.1,max:5}},ResizerScaler:{aspectRatioPreset:{enum:["9:16","16:9","1:1","4:5","21:9","custom"]},resolutionPreset:{enum:["4k","1080p","720p","480p","custom"]},targetWidth:{min:1,max:8192},targetHeight:{min:1,max:8192},fitMode:{enum:["cover","contain","stretch","manual"]},zoom:{min:1,max:1e3},offsetX:{min:-8192,max:8192},offsetY:{min:-8192,max:8192},backgroundMode:{enum:["solid","blurred","gradient","transparent"]},backgroundColor:{},backgroundColor2:{},blurRadius:{min:0,max:100},backgroundBrightness:{min:0,max:1},anchorX:{enum:["left","center","right"]},anchorY:{enum:["top","center","bottom"]}},StereoPanning:{pan:{min:-1,max:1}},Vignette:{strength:{min:0,max:100},radius:{min:.1,max:2},softness:{min:0,max:1},roundness:{min:0,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1}}};var Ae={threshold:-24,ratio:4,attack:.003,release:.25,knee:6,makeupGain:0},b=class extends t{op="AudioCompressor";constructor(e={}){super(o("AudioCompressor",Ae,e,a.AudioCompressor))}},Re={delayTime:.25,feedback:.4,wet:.3,dry:1,pingPong:!1},f=class extends t{op="AudioDelay";constructor(e={}){super(o("AudioDelay",Re,e,a.AudioDelay))}},ke={fadeInDuration:0,fadeOutDuration:0,fadeInCurve:"linear",fadeOutCurve:"linear"},h=class extends t{op="AudioFade";constructor(e={}){super(o("AudioFade",ke,e,a.AudioFade))}},De={threshold:-40,attack:.005,hold:.05,release:.1,range:-80},P=class extends t{op="AudioNoiseGate";constructor(e={}){super(o("AudioNoiseGate",De,e,a.AudioNoiseGate))}},Be={type:"peak",frequency:1e3,gain:0,q:1},y=class extends t{op="AudioParametricEq";constructor(e={}){super(o("AudioParametricEq",Be,e,a.AudioParametricEq))}},Ie={roomSize:.5,damping:.5,wet:.3,dry:1,width:1},g=class extends t{op="AudioReverb";constructor(e={}){super(o("AudioReverb",Ie,e,a.AudioReverb))}},Te={blurType:"Gaussian",strength:5,angle:0,sigmaColor:.1,centerX:.5,centerY:.5,partialBlur:!1,radius:.3,radiusY:0,shape:"circle"},W=class extends t{op="Blur";constructor(e={}){super(o("Blur",Te,e,a.Blur))}},He={motionPreset:"DollyZoom",panX:0,panY:0,dollyZ:0,fov:50,parallaxAmount:.6,dofAperture:.3,focusPlane:.4,edgeDilation:.5,depthInvert:!1},x=class extends t{op="CameraParallax3D";constructor(e={}){super(o("CameraParallax3D",He,e,a.CameraParallax3D))}},Le={colorSpace:"RGBA",defaultChannel4:1},S=class extends t{op="ChannelMerger";constructor(e={}){super(o("ChannelMerger",Le,e,a.ChannelMerger))}},Ge={colorSpace:"RGBA"},C=class extends t{op="ChannelSplitter";constructor(e={}){super(o("ChannelSplitter",Ge,e,a.ChannelSplitter))}},Oe={shadows:{cyanRed:0,magentaGreen:0,yellowBlue:0},midtones:{cyanRed:0,magentaGreen:0,yellowBlue:0},highlights:{cyanRed:0,magentaGreen:0,yellowBlue:0},preserveLuminosity:!0},E=class extends t{op="ColorBalance";constructor(e={}){super(o("ColorBalance",Oe,e,a.ColorBalance))}},ze={keyColor:"#00ff00",similarity:.4,smoothness:.1,spillSuppression:.2,colorSpace:"YUV",spillSuppressionType:"Desaturate"},w=class extends t{op="ColorKey";constructor(e={}){super(o("ColorKey",ze,e,a.ColorKey))}},Fe={},M=class extends t{op="CornerPin";constructor(e={}){super(o("CornerPin",Fe,e,a.CornerPin))}},Ve={strengthX:50,strengthY:50,xChannel:"Red",yChannel:"Green",wrapMode:"Clamp"},v=class extends t{op="DisplacementMap";constructor(e={}){super(o("DisplacementMap",Ve,e,a.DisplacementMap))}},Ye={strategy:"deterministic",samplePoints:150},A=class extends t{op="ExtractLUT";constructor(e={}){super(o("ExtractLUT",Ye,e,a.ExtractLUT))}},Xe={horizontal:!0,vertical:!1,diagonal:!1,mode:"horizontal",symmetry:"none"},R=class extends t{op="Flip";constructor(e={}){super(o("Flip",Xe,e,a.Flip))}},qe={keyframes:[],motionBlurSize:1.5,movementStyle:"spline",aspectRatio:"input"},k=class extends t{op="KenBurns";constructor(e={}){super(o("KenBurns",qe,e,a.KenBurns))}},We={dropShadow:{enabled:!1,color:"#000000",opacity:.75,angle:120,distance:10,spread:0,size:10,blendMode:"multiply"},innerShadow:{enabled:!1,color:"#000000",opacity:.75,angle:120,distance:5,choke:0,size:5,blendMode:"multiply"},outerGlow:{enabled:!1,color:"#ffffff",opacity:.75,size:15,spread:0,blendMode:"screen"},innerGlow:{enabled:!1,color:"#ffffff",opacity:.75,size:15,spread:0,blendMode:"screen"},stroke:{enabled:!1,size:2,position:"outside",color:"#ffffff",opacity:1,blendMode:"normal"},bevelEmboss:{enabled:!1,style:"InnerBevel",technique:"Smooth",depth:100,direction:"Up",size:5,soften:0,angle:120,altitude:30,highlightColor:"#ffffff",highlightOpacity:.75,shadowColor:"#000000",shadowOpacity:.75},colorOverlay:{enabled:!1,color:"#ff0000",opacity:1,blendMode:"normal"}},D=class extends t{op="LayerStyle";constructor(e={}){super(o("LayerStyle",We,e,a.LayerStyle))}},Ne={operations:[]},B=class extends t{op="Liquify";constructor(e={}){super(o("Liquify",Ne,e,a.Liquify))}},je={operation:"Union",radius:0,threshold:.5,clampMin:0,clampMax:1,channelA:"Alpha",channelB:"Alpha",binarize:!1,invertResult:!1,outputFormat:"WhiteWithAlpha"},I=class extends t{op="MaskMath";constructor(e={}){super(o("MaskMath",je,e,a.MaskMath))}},Ke={cols:3,rows:3},T=class extends t{op="MeshWarp";constructor(e={}){super(o("MeshWarp",Ke,e,a.MeshWarp))}},Ue={noiseType:"Perlin",outputType:"Image",width:512,height:512,scale:10,octaves:4,persistence:.5,lacunarity:2,speed:1,colorStart:"#000000",colorEnd:"#ffffff",durationMs:5e3,fps:30},H=class extends t{op="NoiseGenerator";constructor(e={}){super(o("NoiseGenerator",Ue,e,a.NoiseGenerator))}},$e={width:1080,height:1080,maintainAspect:!0,backgroundColor:"#ffffff"},L=class extends t{op="Paint";constructor(e={}){super(o("Paint",$e,e,a.Paint))}},Ze={centerX:.5,centerY:.5,offsetX:50,offsetY:0,radius:25,sourceRadius:25,feather:50,opacity:1,mode:"SeamlessHeal"},G=class extends t{op="PatchHeal";constructor(e={}){super(o("PatchHeal",Ze,e,a.PatchHeal))}},_e={effectType:"Smoke",outputType:"Video",width:1080,height:1080,density:.6,scale:.01,speed:1,intensity:.8,seed:1234,colorStart:"#ffffff",colorEnd:"#ff5500",durationMs:5e3,fps:30},O=class extends t{op="ProceduralVFX";constructor(e={}){super(o("ProceduralVFX",_e,e,a.ProceduralVFX))}},Je={decontaminateAmount:.7,radius:2,smooth:5,feather:.5,shiftEdge:0,matteChannel:"Alpha",outputMode:"Composite"},z=class extends t{op="RefineEdge";constructor(e={}){super(o("RefineEdge",Je,e,a.RefineEdge))}},Qe={ior:1.52,dispersion:.04,refractionScale:.5,causticBrightness:.6,causticScale:1,fluidRipples:0,rippleSpeed:1,roughness:0,specularIntensity:.8,lightPosX:.5,lightPosY:.2,tintColor:"#ffffff",tintStrength:0,depthInvert:!1,depthScale:1},F=class extends t{op="RefractionCaustics3D";constructor(e={}){super(o("RefractionCaustics3D",Qe,e,a.RefractionCaustics3D))}},er={aspectRatioPreset:"16:9",resolutionPreset:"1080p",targetWidth:1920,targetHeight:1080,fitMode:"contain",zoom:100,offsetX:0,offsetY:0,backgroundMode:"solid",backgroundColor:"#000000FF",backgroundColor2:"#000000FF",blurRadius:40,backgroundBrightness:.6,anchorX:"center",anchorY:"center"},V=class extends t{op="ResizerScaler";constructor(e={}){super(o("ResizerScaler",er,e,a.ResizerScaler))}},rr={pan:0},Y=class extends t{op="StereoPanning";constructor(e={}){super(o("StereoPanning",rr,e,a.StereoPanning))}},tr={strength:50,radius:1,softness:.5,roundness:.5,centerX:.5,centerY:.5},X=class extends t{op="Vignette";constructor(e={}){super(o("Vignette",tr,e,a.Vignette))}};function nr(r){return{partialBlur:!0,centerX:r.center.x,centerY:r.center.y,radius:r.bounds.width.multiply(.55),radiusY:r.bounds.height.multiply(.55),shape:"ellipse",strength:r.active.multiply(25)}}var q=class extends W{constructor(e={}){let{track:n,...l}=e;super(n?{...nr(n),...ar(l)}:l)}};function ar(r){return Object.fromEntries(Object.entries(r).filter(([,e])=>e!==void 0))}c();var or={audioCompressor:r=>new b(r),audioDelay:r=>new f(r),audioFade:r=>new h(r),audioNoiseGate:r=>new P(r),audioParametricEq:r=>new y(r),audioReverb:r=>new g(r),blur:r=>new q(r),cameraParallax3D:r=>new x(r),channelMerger:r=>new S(r),channelSplitter:r=>new C(r),colorBalance:r=>new E(r),colorKey:r=>new w(r),cornerPin:r=>new M(r),displacementMap:r=>new v(r),extractLUT:r=>new A(r),flip:r=>new R(r),kenBurns:r=>new k(r),layerStyle:r=>new D(r),liquify:r=>new B(r),maskMath:r=>new I(r),meshWarp:r=>new T(r),noiseGenerator:r=>new H(r),paint:r=>new L(r),patchHeal:r=>new G(r),proceduralVFX:r=>new O(r),refineEdge:r=>new z(r),refractionCaustics3D:r=>new F(r),resizerScaler:r=>new V(r),stereoPanning:r=>new Y(r),vignette:r=>new X(r)};var Q=class extends t{op="Levels";constructor(e={}){let n={inBlack:0,inWhite:1,outBlack:0,outWhite:1};super({master:e.master??{...n},red:e.red??{...n},green:e.green??{...n},blue:e.blue??{...n},...e})}},ee=class extends t{op="FilmGrain";constructor(e={}){super({strength:e.strength??15,size:e.size??1.5,monochrome:e.monochrome??!0,animated:e.animated??!0,speed:e.speed??50,shadows:e.shadows??.2,midtones:e.midtones??1,highlights:e.highlights??.2,...e})}},re=class extends t{op;constructor(e,n={}){super(n),this.op=e}},te=class extends t{op="AudioSignalExtractor";constructor(e={}){super({extractionMode:e.extractionMode??"rms_envelope",attackMs:e.attackMs??10,releaseMs:e.releaseMs??120,sensitivity:e.sensitivity??1,noiseFloorDb:e.noiseFloorDb??-48,dynamicRangeDb:e.dynamicRangeDb??48,autoRange:e.autoRange??!0,smoothing:e.smoothing??.15,curve:e.curve??"linear",beatThreshold:e.beatThreshold??.08,beatDecayMs:e.beatDecayMs??80,previewMode:e.previewMode??"envelope",nodeId:e.nodeId??"audio_extractor",...e})}async extract(e,n={}){return U.extract(e,{extractionMode:this.extractionMode,attackMs:this.attackMs,releaseMs:this.releaseMs,sensitivity:this.sensitivity,noiseFloorDb:this.noiseFloorDb,dynamicRangeDb:this.dynamicRangeDb,smoothing:this.smoothing,curve:this.curve,beatThreshold:this.beatThreshold,beatDecayMs:this.beatDecayMs,previewMode:this.previewMode,...n})}},ne=class extends t{op="Curves";constructor(e={}){super({...e,curveType:e.curveType??"rgb",master:e.master??[{x:0,y:0},{x:1,y:1}],red:e.red??[{x:0,y:0},{x:1,y:1}],green:e.green??[{x:0,y:0},{x:1,y:1}],blue:e.blue??[{x:0,y:0},{x:1,y:1}],hueVsHue:e.hueVsHue??[{x:0,y:.5},{x:1,y:.5}],hueVsSat:e.hueVsSat??[{x:0,y:1},{x:1,y:1}],lumVsSat:e.lumVsSat??[{x:0,y:1},{x:1,y:1}],satVsSat:e.satVsSat??[{x:0,y:1},{x:1,y:1}]})}},ae=class extends t{op="SelectiveColor";constructor(e={}){let n={cyan:0,magenta:0,yellow:0,black:0};super({...e,method:e.method??"Relative",reds:{...n,...e.reds},yellows:{...n,...e.yellows},greens:{...n,...e.greens},cyans:{...n,...e.cyans},blues:{...n,...e.blues},magentas:{...n,...e.magentas},whites:{...n,...e.whites},neutrals:{...n,...e.neutrals},blacks:{...n,...e.blacks}})}},oe=class extends t{op="GradientMap";constructor(e={}){let n=[{position:0,color:"#000000"},{position:1,color:"#ffffff"}];super({...e,stops:e.stops??n,smooth:e.smooth??!0,dither:e.dither??!0,opacity:e.opacity??1})}},le=class extends t{op="ShadowsHighlights";constructor(e={}){super({...e,shadowAmount:e.shadowAmount??0,shadowTonalWidth:e.shadowTonalWidth??50,shadowRadius:e.shadowRadius??30,highlightAmount:e.highlightAmount??0,highlightTonalWidth:e.highlightTonalWidth??50,highlightRadius:e.highlightRadius??30,colorCorrection:e.colorCorrection??0,midtoneContrast:e.midtoneContrast??0})}},ie=class extends t{op="ApplyLUT";constructor(e={}){super({...e,lutUrl:e.lutUrl??"",intensity:e.intensity??1})}},se=class extends t{op="UnsharpMask";constructor(e={}){super({...e,amount:e.amount??100,radius:e.radius??1.5,threshold:e.threshold??3})}},ue=class extends t{op="HighPass";constructor(e={}){super({...e,radius:e.radius??3,contrastBoost:e.contrastBoost??1,monochrome:e.monochrome??!0})}},ce=class extends t{op="HalftoneScreen";constructor(e={}){super({...e,mode:e.mode??"Monochrome",dotShape:e.dotShape??"Circle",frequency:e.frequency??30,angle:e.angle??45,contrast:e.contrast??1,dotColor:e.dotColor??"#000000",paperColor:e.paperColor??"#ffffff",smooth:e.smooth??!0,invert:e.invert??!1,cyanAngle:e.cyanAngle??15,magentaAngle:e.magentaAngle??75,yellowAngle:e.yellowAngle??0,blackAngle:e.blackAngle??45,opacity:e.opacity??1})}},pe=class extends t{op="TileOffset";constructor(e={}){super({...e,offsetX:e.offsetX??0,offsetY:e.offsetY??0,wrap:e.wrap??!0,edgeMode:e.edgeMode??"wrap"})}},de=class extends t{op="MotionBlur";constructor(e={}){super({...e,shutterAngle:e.shutterAngle??180,samples:e.samples??16,maxVelocity:e.maxVelocity??64,shutterCurve:e.shutterCurve??"gaussian",depthAware:e.depthAware??!0})}},me=class extends t{op="SSAO";constructor(e={}){super({...e,radius:e.radius??45,bias:e.bias??.025,intensity:e.intensity??1.5,kernelSamples:e.kernelSamples??16,blurRadius:e.blurRadius??4})}},be=class extends t{op="PBRGlass";constructor(e={}){super({...e,ior:e.ior??1.49,roughness:e.roughness??.15,transmission:e.transmission??.92,dispersion:e.dispersion??.015,fresnelPower:e.fresnelPower??5,tintColor:e.tintColor??"#ffffff"})}},fe=class extends t{op="DepthOfField";constructor(e={}){super({...e,focusDistance:e.focusDistance??500,focalLength:e.focalLength??50,aperture:e.aperture??2.8,maxBlur:e.maxBlur??16,quality:e.quality??"high"})}},he=class extends t{op="Crop";constructor(e={}){super({cropType:e.cropType??"rect",leftPercentage:e.leftPercentage??0,topPercentage:e.topPercentage??0,widthPercentage:e.widthPercentage??100,heightPercentage:e.heightPercentage??100,roundness:e.roundness??0,...e})}},Pe=class extends t{op="Vision";constructor(e={}){super({enableDetection:e.enableDetection!==!1,enableSegmentation:e.enableSegmentation===!0,enablePose:e.enablePose===!0,enableMatte:e.enableMatte===!0,confidence:e.confidence??.3,variant:e.variant??"s",mode:e.mode??"passthrough",matteSource:e.matteSource??"instance",...e})}},ye=class extends t{op="Relight3D";constructor(e={}){super({lightType:e.lightType??"Point",intensity:e.intensity??1,lightPosX:e.lightPosX??.5,lightPosY:e.lightPosY??.5,lightPosZ:e.lightPosZ??.3,lightRadius:e.lightRadius??.8,spotConeAngle:e.spotConeAngle??45,specularRoughness:e.specularRoughness??.35,specularStrength:e.specularStrength??.7,metallic:e.metallic??0,ambientIntensity:e.ambientIntensity??.4,volumetricDensity:e.volumetricDensity??.2,depthScale:e.depthScale??1,depthInvert:e.depthInvert??!1,lightColor:e.lightColor??"#ffffff",ambientColor:e.ambientColor??"#ffffff",normalMap:e.normalMap,...e})}},ge=class extends t{op="TemporalDeflicker";constructor(e={}){super({blendWeight:e.blendWeight??.35,disocclusionThreshold:e.disocclusionThreshold??.15,maxMotionPixels:e.maxMotionPixels??64,scale:e.scale??.5,windowSize:e.windowSize??2,...e})}},xe=class extends t{op="Modulate";constructor(e={}){super({hue:e.hue??0,brightness:e.brightness??1,contrast:e.contrast??1,exposure:e.exposure??0,saturation:e.saturation??1,sepia:e.sepia??0,...e})}};export{a,b,f as c,h as d,P as e,y as f,g,x as h,S as i,C as j,E as k,w as l,M as m,v as n,A as o,R as p,k as q,D as r,B as s,I as t,T as u,H as v,L as w,G as x,O as y,z,F as A,V as B,Y as C,X as D,q as E,or as F,Q as G,ee as H,re as I,te as J,ne as K,ae as L,oe as M,le as N,ie as O,se as P,ue as Q,ce as R,pe as S,de as T,me as U,be as V,fe as W,he as X,Pe as Y,ye as Z,ge as _,xe as $};
|