framefields 2.0.10 → 2.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -6
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-BxA0sL9z.d.mts → audio-BHanw8Jb.d.mts} +3 -3
- package/dist/{audio-BxA0sL9z.d.mts.map → audio-BHanw8Jb.d.mts.map} +1 -1
- package/dist/{audio-B7Al-W_0.mjs → audio-COOMNwL5.mjs} +4 -4
- package/dist/{audio-B7Al-W_0.mjs.map → audio-COOMNwL5.mjs.map} +1 -1
- package/dist/{dist-BFjSQP7i.mjs → dist-BAVZdFEJ.mjs} +3 -3
- package/dist/{dist-BFjSQP7i.mjs.map → dist-BAVZdFEJ.mjs.map} +1 -1
- package/dist/{dist-DzUJmIHt.mjs → dist-BYqNNwsl.mjs} +2 -2
- package/dist/{dist-DzUJmIHt.mjs.map → dist-BYqNNwsl.mjs.map} +1 -1
- package/dist/{dist-B9Afsv83.mjs → dist-CbG3QxDw.mjs} +651 -2
- package/dist/dist-CbG3QxDw.mjs.map +1 -0
- package/dist/{dist-B9PkqWnN.mjs → dist-Cxi68OuY.mjs} +5322 -3274
- package/dist/dist-Cxi68OuY.mjs.map +1 -0
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +25 -25
- package/dist/{effects-CREopCyP.mjs → effects-DzbjFhyA.mjs} +3 -3
- package/dist/{effects-CREopCyP.mjs.map → effects-DzbjFhyA.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +2 -2
- package/dist/fonts/index.mjs +1 -1
- package/dist/{fonts-DhEQ5h6E.mjs → fonts-C0W6TgJk.mjs} +52 -5
- package/dist/fonts-C0W6TgJk.mjs.map +1 -0
- package/dist/{index-J9CIK_nu.d.mts → index-9B8CJowc.d.mts} +2 -2
- package/dist/{index-J9CIK_nu.d.mts.map → index-9B8CJowc.d.mts.map} +1 -1
- package/dist/{index-CvDVpaKn.d.mts → index-CDoTrMs1.d.mts} +4 -4
- package/dist/{index-CvDVpaKn.d.mts.map → index-CDoTrMs1.d.mts.map} +1 -1
- package/dist/{index-BXNNJVs8.d.mts → index-CYGpSVsf.d.mts} +2 -2
- package/dist/{index-BXNNJVs8.d.mts.map → index-CYGpSVsf.d.mts.map} +1 -1
- package/dist/{index-D1zaOwEU.d.mts → index-DDEPvMww.d.mts} +520 -71
- package/dist/index-DDEPvMww.d.mts.map +1 -0
- package/dist/{index-oodg5k9K.d.mts → index-DGJp1d30.d.mts} +3 -3
- package/dist/{index-oodg5k9K.d.mts.map → index-DGJp1d30.d.mts.map} +1 -1
- package/dist/{index-fo4E7A6C.d.mts → index-DRZu3ezy.d.mts} +3 -3
- package/dist/{index-fo4E7A6C.d.mts.map → index-DRZu3ezy.d.mts.map} +1 -1
- package/dist/{index-CQcdKyxF.d.mts → index-DnWsbbuZ.d.mts} +54 -2
- package/dist/index-DnWsbbuZ.d.mts.map +1 -0
- package/dist/index.d.mts +398 -18
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +633 -57
- package/dist/index.mjs.map +1 -1
- package/dist/preview/index.d.mts +2 -2
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-9ifxywUM.mjs → preview-BV2C4Fk6.mjs} +2 -2
- package/dist/{preview-9ifxywUM.mjs.map → preview-BV2C4Fk6.mjs.map} +1 -1
- package/dist/preview-engine/{chunk-VVLM6LZ3.mjs → chunk-6256GQFP.mjs} +1 -1
- package/dist/preview-engine/{chunk-YG35X5R5.mjs → chunk-AWTH2WZO.mjs} +1 -1
- package/dist/preview-engine/{chunk-7DIAFPQP.mjs → chunk-ECPP3UG6.mjs} +1 -1
- package/dist/preview-engine/{chunk-5JD65JSJ.mjs → chunk-FGHOHCFG.mjs} +1 -1
- package/dist/preview-engine/chunk-IMV5SBQV.mjs +1 -0
- package/dist/preview-engine/chunk-IQKIHFNZ.mjs +1 -0
- package/dist/preview-engine/chunk-L3IEJZ5S.mjs +474 -0
- package/dist/preview-engine/chunk-M7NMFDJ3.mjs +3 -0
- package/dist/preview-engine/chunk-NFAGEP43.mjs +1448 -0
- package/dist/preview-engine/{chunk-AG5JNZYQ.mjs → chunk-Q66QQI6N.mjs} +1 -1
- package/dist/preview-engine/{chunk-JAOXXYXG.mjs → chunk-QYRDQMNB.mjs} +1 -1
- package/dist/preview-engine/{chunk-XCYFPA34.mjs → chunk-RJUAM52F.mjs} +1 -1
- package/dist/preview-engine/chunk-VRGREB3V.mjs +1 -0
- package/dist/preview-engine/{chunk-AW7HNZKR.mjs → chunk-Y6HWYPKX.mjs} +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +27 -27
- package/dist/preview-engine/player.mjs +1 -1
- package/dist/preview-engine/renderers-5BV6JGTU.mjs +248 -0
- package/dist/preview-engine/renderers-7X2W6QWX.mjs +1 -0
- package/dist/preview-engine/renderers-EOJMPPAQ.mjs +1 -0
- package/dist/preview-engine/renderers-G5KQISVL.mjs +1 -0
- package/dist/preview-engine/renderers-GMX2ZQDG.mjs +1 -0
- package/dist/preview-engine/renderers-TVTQ2R74.mjs +1 -0
- package/dist/preview-engine/renderers-ZIMBODX6.mjs +1 -0
- package/dist/{program-xRfFoPxe.mjs → program-BmNKgzja.mjs} +281 -23
- package/dist/program-BmNKgzja.mjs.map +1 -0
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/{renderer-D-4Yh-RK.mjs → renderer-1VuQTY1Z.mjs} +2 -2
- package/dist/{renderer-D-4Yh-RK.mjs.map → renderer-1VuQTY1Z.mjs.map} +1 -1
- package/dist/renderer-6oMSare3.mjs +3 -0
- package/dist/renderer-B1ComPb2.mjs +3 -0
- package/dist/{renderer-CgmFh6MY.mjs → renderer-B1YMwl2B.mjs} +1 -1
- package/dist/{renderer-BtRfKx5N.mjs → renderer-B2ieylQ3.mjs} +2 -2
- package/dist/{renderer-BtRfKx5N.mjs.map → renderer-B2ieylQ3.mjs.map} +1 -1
- package/dist/{renderer-DYm4duFr.mjs → renderer-B8-kzZdP.mjs} +2 -2
- package/dist/{renderer-DYm4duFr.mjs.map → renderer-B8-kzZdP.mjs.map} +1 -1
- package/dist/{renderer-Dju9CaeL.mjs → renderer-B8UaFNqb.mjs} +3 -3
- package/dist/{renderer-Dju9CaeL.mjs.map → renderer-B8UaFNqb.mjs.map} +1 -1
- package/dist/{renderer-BA8YwBRQ.mjs → renderer-BDbTWSpP.mjs} +3 -3
- package/dist/{renderer-BA8YwBRQ.mjs.map → renderer-BDbTWSpP.mjs.map} +1 -1
- package/dist/{renderer-DxtHmyAa.mjs → renderer-BIIWCg_J.mjs} +3 -3
- package/dist/{renderer-DxtHmyAa.mjs.map → renderer-BIIWCg_J.mjs.map} +1 -1
- package/dist/{renderer-CJNyhr_S.mjs → renderer-BJ1aTkZf.mjs} +3 -3
- package/dist/{renderer-CJNyhr_S.mjs.map → renderer-BJ1aTkZf.mjs.map} +1 -1
- package/dist/renderer-BQ5Bz5D0.mjs +3 -0
- package/dist/{renderer-DBlPbsgi.mjs → renderer-BSaYG8aw.mjs} +1 -1
- package/dist/{renderer-2NQWaZd7.d.mts → renderer-BTdOMMEx.d.mts} +2 -2
- package/dist/{renderer-2NQWaZd7.d.mts.map → renderer-BTdOMMEx.d.mts.map} +1 -1
- package/dist/renderer-BZcn_iBl.mjs +3 -0
- package/dist/{renderer-CroHPOsX.mjs → renderer-Bc04fivZ.mjs} +3 -3
- package/dist/{renderer-CroHPOsX.mjs.map → renderer-Bc04fivZ.mjs.map} +1 -1
- package/dist/{renderer-xKOVmd2O.mjs → renderer-BfAWZziM.mjs} +193 -12
- package/dist/renderer-BfAWZziM.mjs.map +1 -0
- package/dist/{renderer-DTvfYkI9.mjs → renderer-Bfgd4N0O.mjs} +3 -3
- package/dist/{renderer-DTvfYkI9.mjs.map → renderer-Bfgd4N0O.mjs.map} +1 -1
- package/dist/{renderer-b6sZN90h.mjs → renderer-BhZZEyFX.mjs} +2 -2
- package/dist/{renderer-b6sZN90h.mjs.map → renderer-BhZZEyFX.mjs.map} +1 -1
- package/dist/{renderer-wVldKtFU.mjs → renderer-Bhdf90Zq.mjs} +2 -2
- package/dist/{renderer-wVldKtFU.mjs.map → renderer-Bhdf90Zq.mjs.map} +1 -1
- package/dist/renderer-Bp6sDMa6.mjs +3 -0
- package/dist/renderer-Bt7_sb_Y.mjs +3 -0
- package/dist/{renderer-BiSALMQy.mjs → renderer-Bv21DbWy.mjs} +1 -1
- package/dist/{renderer-CoZKST2Y.mjs → renderer-Bv6q84TU.mjs} +2 -2
- package/dist/{renderer-CoZKST2Y.mjs.map → renderer-Bv6q84TU.mjs.map} +1 -1
- package/dist/renderer-C606ZPUn.mjs +3 -0
- package/dist/renderer-C9jyKn1i.mjs +3 -0
- package/dist/renderer-CERfcxgv.mjs +3 -0
- package/dist/renderer-CG5PzNkv.mjs +3 -0
- package/dist/{renderer-BGXbGqY4.mjs → renderer-CI7sG_cv.mjs} +2 -2
- package/dist/{renderer-BGXbGqY4.mjs.map → renderer-CI7sG_cv.mjs.map} +1 -1
- package/dist/renderer-CPoIMVdk.mjs +3 -0
- package/dist/{renderer-DCkSR2Ne.mjs → renderer-CWTpc4ff.mjs} +2 -2
- package/dist/{renderer-DCkSR2Ne.mjs.map → renderer-CWTpc4ff.mjs.map} +1 -1
- package/dist/{renderer-D7ztfQHX.mjs → renderer-CXn5HAnK.mjs} +3 -3
- package/dist/{renderer-D7ztfQHX.mjs.map → renderer-CXn5HAnK.mjs.map} +1 -1
- package/dist/{renderer-DjTiNeAp.mjs → renderer-C_TPMHiH.mjs} +2 -2
- package/dist/{renderer-DjTiNeAp.mjs.map → renderer-C_TPMHiH.mjs.map} +1 -1
- package/dist/renderer-Ca7L1EOp.mjs +3 -0
- package/dist/{renderer-DAMJZNtX.mjs → renderer-CaaOKMSd.mjs} +2 -2
- package/dist/{renderer-DAMJZNtX.mjs.map → renderer-CaaOKMSd.mjs.map} +1 -1
- package/dist/{renderer-CIYcdZuZ.mjs → renderer-CdciwwMI.mjs} +3 -3
- package/dist/{renderer-CIYcdZuZ.mjs.map → renderer-CdciwwMI.mjs.map} +1 -1
- package/dist/{renderer-BZmfKIom.mjs → renderer-CfC_aiew.mjs} +3 -3
- package/dist/{renderer-BZmfKIom.mjs.map → renderer-CfC_aiew.mjs.map} +1 -1
- package/dist/{renderer-8qpGxSSO.mjs → renderer-ChdLYS-G.mjs} +3 -3
- package/dist/{renderer-8qpGxSSO.mjs.map → renderer-ChdLYS-G.mjs.map} +1 -1
- package/dist/renderer-Cl6GkeHx.mjs +3 -0
- package/dist/renderer-ClcjrFyo.mjs +3 -0
- package/dist/{renderer-BgdkEFmv.mjs → renderer-CnXW28b9.mjs} +2 -2
- package/dist/{renderer-BgdkEFmv.mjs.map → renderer-CnXW28b9.mjs.map} +1 -1
- package/dist/{renderer-6GeDT4Mx.mjs → renderer-Ctk2zzfy.mjs} +3 -3
- package/dist/{renderer-6GeDT4Mx.mjs.map → renderer-Ctk2zzfy.mjs.map} +1 -1
- package/dist/{renderer-But0u-xi.mjs → renderer-CtyD_Xju.mjs} +2 -2
- package/dist/{renderer-But0u-xi.mjs.map → renderer-CtyD_Xju.mjs.map} +1 -1
- package/dist/renderer-CySUP_wk.mjs +3 -0
- package/dist/renderer-D2l_Odyg.mjs +3 -0
- package/dist/{renderer-BJ6Y-7ke.mjs → renderer-D2nCGcjv.mjs} +2 -2
- package/dist/{renderer-BJ6Y-7ke.mjs.map → renderer-D2nCGcjv.mjs.map} +1 -1
- package/dist/renderer-DCPCYySt.mjs +3 -0
- package/dist/{renderer-BnvqEqvE.mjs → renderer-DIgsilTw.mjs} +3 -3
- package/dist/{renderer-BnvqEqvE.mjs.map → renderer-DIgsilTw.mjs.map} +1 -1
- package/dist/renderer-DIkpJEOZ.mjs +3 -0
- package/dist/{renderer-BpCxKWQm.mjs → renderer-DML9qpmS.mjs} +2 -2
- package/dist/{renderer-BpCxKWQm.mjs.map → renderer-DML9qpmS.mjs.map} +1 -1
- package/dist/renderer-DNSXPkf_.mjs +3 -0
- package/dist/renderer-DP-CvZ_Z.mjs +3 -0
- package/dist/renderer-DeXb8R6h.mjs +3 -0
- package/dist/renderer-DezO-ZaP.mjs +4 -0
- package/dist/renderer-DhXe04fC.mjs +3 -0
- package/dist/{renderer-jkZ_IQnW.mjs → renderer-DirxsOjq.mjs} +2 -2
- package/dist/{renderer-jkZ_IQnW.mjs.map → renderer-DirxsOjq.mjs.map} +1 -1
- package/dist/{renderer-CfeoxM_3.mjs → renderer-Djlb4TLO.mjs} +3 -3
- package/dist/{renderer-CfeoxM_3.mjs.map → renderer-Djlb4TLO.mjs.map} +1 -1
- package/dist/renderer-DnH3SI7w.mjs +3 -0
- package/dist/{renderer-DdVBt8Rz.mjs → renderer-DpGc-N3G.mjs} +3 -3
- package/dist/{renderer-DdVBt8Rz.mjs.map → renderer-DpGc-N3G.mjs.map} +1 -1
- package/dist/renderer-Dpw4oi33.mjs +3 -0
- package/dist/{renderer-CcU7dVn9.mjs → renderer-DxTs4Iyi.mjs} +2 -2
- package/dist/{renderer-CcU7dVn9.mjs.map → renderer-DxTs4Iyi.mjs.map} +1 -1
- package/dist/{renderer-CNF10fCq.mjs → renderer-Dy0utCl7.mjs} +3 -3
- package/dist/{renderer-CNF10fCq.mjs.map → renderer-Dy0utCl7.mjs.map} +1 -1
- package/dist/renderer-Md-ytU0v.mjs +3 -0
- package/dist/{renderer-CStktK20.mjs → renderer-RKsXlF_0.mjs} +43 -43
- package/dist/{renderer-CStktK20.mjs.map → renderer-RKsXlF_0.mjs.map} +1 -1
- package/dist/renderer-U-bhWO9Q.mjs +3 -0
- package/dist/{renderer-5h0llpx7.mjs → renderer-WSGuj_V6.mjs} +2 -2
- package/dist/{renderer-5h0llpx7.mjs.map → renderer-WSGuj_V6.mjs.map} +1 -1
- package/dist/{renderer-_bygZSKk.mjs → renderer-bsWnRNpJ.mjs} +2 -2
- package/dist/{renderer-_bygZSKk.mjs.map → renderer-bsWnRNpJ.mjs.map} +1 -1
- package/dist/{renderer-DNNqpK7t.mjs → renderer-cgxO2xN6.mjs} +3 -3
- package/dist/{renderer-DNNqpK7t.mjs.map → renderer-cgxO2xN6.mjs.map} +1 -1
- package/dist/{renderer-DryPrxYc.mjs → renderer-dncoIVdd.mjs} +1 -1
- package/dist/{renderer-DffynBHa.mjs → renderer-kwmlLQOO.mjs} +3 -3
- package/dist/{renderer-DffynBHa.mjs.map → renderer-kwmlLQOO.mjs.map} +1 -1
- package/dist/{renderer-9wp5R7PL.mjs → renderer-vqkKWqa5.mjs} +2 -2
- package/dist/{renderer-9wp5R7PL.mjs.map → renderer-vqkKWqa5.mjs.map} +1 -1
- package/dist/renderer-zA5okHds.mjs +3 -0
- package/dist/{renderers-CP8CFWDs-BLgwUYX2.mjs → renderers-CP8CFWDs-DwQTx8S7.mjs} +3 -3
- package/dist/{renderers-CP8CFWDs-BLgwUYX2.mjs.map → renderers-CP8CFWDs-DwQTx8S7.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +6 -6
- package/dist/{signals-CsxqD2AA.mjs → signals-Bv1OweKd.mjs} +3 -3
- package/dist/{signals-CsxqD2AA.mjs.map → signals-Bv1OweKd.mjs.map} +1 -1
- package/package.json +55 -55
- package/dist/dist-B9Afsv83.mjs.map +0 -1
- package/dist/dist-B9PkqWnN.mjs.map +0 -1
- package/dist/fonts-DhEQ5h6E.mjs.map +0 -1
- package/dist/index-CQcdKyxF.d.mts.map +0 -1
- package/dist/index-D1zaOwEU.d.mts.map +0 -1
- package/dist/preview-engine/chunk-CNSHAFEA.mjs +0 -1
- package/dist/preview-engine/chunk-QTKJXDIW.mjs +0 -997
- package/dist/preview-engine/chunk-RNOO4UR5.mjs +0 -3
- package/dist/preview-engine/chunk-T6CC2KCZ.mjs +0 -418
- package/dist/preview-engine/chunk-UC7CSW2A.mjs +0 -1
- package/dist/preview-engine/renderers-32PIFHPS.mjs +0 -1
- package/dist/preview-engine/renderers-3Y3EMRDJ.mjs +0 -1
- package/dist/preview-engine/renderers-7HNVXNAI.mjs +0 -248
- package/dist/preview-engine/renderers-CHJWUJVI.mjs +0 -1
- package/dist/preview-engine/renderers-CI2GXWLP.mjs +0 -1
- package/dist/preview-engine/renderers-EE2GFG7J.mjs +0 -1
- package/dist/preview-engine/renderers-UGZUPONY.mjs +0 -1
- package/dist/program-xRfFoPxe.mjs.map +0 -1
- package/dist/renderer-B4F6wL68.mjs +0 -3
- package/dist/renderer-B4i1jmiT.mjs +0 -3
- package/dist/renderer-B5ylY3uM.mjs +0 -3
- package/dist/renderer-BPw23wiR.mjs +0 -3
- package/dist/renderer-BghW-bSZ.mjs +0 -3
- package/dist/renderer-Bw3oZ9YT.mjs +0 -3
- package/dist/renderer-C2009W-_.mjs +0 -3
- package/dist/renderer-C36yoGXG.mjs +0 -3
- package/dist/renderer-CL3evUmF.mjs +0 -3
- package/dist/renderer-CM1_2ZWA.mjs +0 -3
- package/dist/renderer-CWlzudP8.mjs +0 -3
- package/dist/renderer-Cd5vzrGs.mjs +0 -3
- package/dist/renderer-CeJ_vDXI.mjs +0 -3
- package/dist/renderer-CjY77sB_.mjs +0 -3
- package/dist/renderer-D5Z6mda5.mjs +0 -3
- package/dist/renderer-DCJa7OGk.mjs +0 -3
- package/dist/renderer-DGwSl7g1.mjs +0 -3
- package/dist/renderer-DNoRNfMm.mjs +0 -3
- package/dist/renderer-DOZ8bpyY.mjs +0 -3
- package/dist/renderer-DRHyRNU8.mjs +0 -3
- package/dist/renderer-DlD85Xoi.mjs +0 -3
- package/dist/renderer-Dr0bgOrW.mjs +0 -3
- package/dist/renderer-DurtG-Hc.mjs +0 -3
- package/dist/renderer-eFv9HBmL.mjs +0 -3
- package/dist/renderer-iuV6wQoL.mjs +0 -4
- package/dist/renderer-n-uuWPF4.mjs +0 -3
- package/dist/renderer-rzccTFuY.mjs +0 -3
- package/dist/renderer-xKOVmd2O.mjs.map +0 -1
- package/dist/renderer-y9eGFPFL.mjs +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-xKOVmd2O.mjs","names":[],"sources":["../../../nodes/node-compositor/dist/renderers-DZwweR5N.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveMediaSourceUrl } from \"@framefields/client-utils\";\nimport { decodeAudioSource, resolveLayerDuration } from \"@framefields/compositions\";\nimport { collectNodeOps, computeLayout, evaluateTrackAtFrame, initLayout } from \"@framefields/compositions/program\";\nimport { DEFAULT_DURATION_MS, getActiveMediaMetadata, reportRenderDiagnostic } from \"@framefields/core\";\nimport { measureText } from \"@framefields/renderers\";\nimport { TemporalDeflickerPipeline } from \"@framefields/tensor-webgpu\";\nimport { AudioLatentTrackCache, Camera3D, Matrix4Math, Renderer3D, ScreenSpaceRelightPipeline, SlugFontCache, Vector3Math, generateExtrudedTextGeometry, jointMatrices, measureMaxCaptionHeight, parseColor, poseNodes, srtLoader } from \"@framefields/webgpu-renderers\";\nimport gsapModule from \"gsap\";\nimport { audioRegistry, resolveBoolean, resolveNumber } from \"@framefields/node-sdk\";\n\n//#region src/shared/bezier-solver.ts\n/**\n* Solves a cubic bezier curve defined by control points (x1, y1) and (x2, y2)\n* for a given progress parameter t in [0, 1].\n*/\nfunction solveCubicBezier(x1, y1, x2, y2, t) {\n\tif (t <= 0) return 0;\n\tif (t >= 1) return 1;\n\tif (x1 === y1 && x2 === y2) return t;\n\tlet u = t;\n\tfor (let i = 0; i < 8; i++) {\n\t\tconst oneMinusU$1 = 1 - u;\n\t\tconst oneMinusU2 = oneMinusU$1 * oneMinusU$1;\n\t\tconst u2 = u * u;\n\t\tconst diff = 3 * oneMinusU2 * u * x1 + 3 * oneMinusU$1 * u2 * x2 + u2 * u - t;\n\t\tif (Math.abs(diff) < 1e-6) break;\n\t\tconst dx = 3 * oneMinusU2 * x1 + 6 * oneMinusU$1 * u * (x2 - x1) + 3 * u2 * (1 - x2);\n\t\tif (Math.abs(dx) < 1e-6) break;\n\t\tu -= diff / dx;\n\t\tu = Math.max(0, Math.min(1, u));\n\t}\n\tconst oneMinusU = 1 - u;\n\tconst checkX = 3 * oneMinusU * oneMinusU * u * x1 + 3 * oneMinusU * u * u * x2 + u * u * u;\n\tif (Math.abs(checkX - t) > .001) {\n\t\tlet low = 0;\n\t\tlet high = 1;\n\t\tu = t;\n\t\tfor (let i = 0; i < 16; i++) {\n\t\t\tconst mid = (low + high) * .5;\n\t\t\tconst oMid = 1 - mid;\n\t\t\tconst xMid = 3 * oMid * oMid * mid * x1 + 3 * oMid * mid * mid * x2 + mid * mid * mid;\n\t\t\tif (Math.abs(xMid - t) < 1e-5) {\n\t\t\t\tu = mid;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (xMid < t) low = mid;\n\t\t\telse high = mid;\n\t\t\tu = mid;\n\t\t}\n\t}\n\tconst oU = 1 - u;\n\treturn 3 * oU * oU * u * y1 + 3 * oU * u * u * y2 + u * u * u;\n}\n\n//#endregion\n//#region src/shared/compiler.ts\nconst gsap = gsapModule.timeline ? gsapModule : gsapModule.default || gsapModule;\nconst cache = /* @__PURE__ */ new Map();\nconst nodesHashMemo = /* @__PURE__ */ new WeakMap();\n/** Entries untouched for this long are dropped (and their timeline killed). */\nconst CACHE_TTL_MS = 1e4;\n/** Max compiled timelines retained per cache. */\nconst TIMELINE_CACHE_MAX = 50;\nconst LAYER_TIMELINE_CACHE_MAX = 50;\nfunction fnv1a(str) {\n\tlet hash = 2166136261;\n\tfor (let i = 0; i < str.length; i++) {\n\t\thash ^= str.charCodeAt(i);\n\t\thash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n\t}\n\treturn (hash >>> 0).toString(16);\n}\nconst signalIds = /* @__PURE__ */ new WeakMap();\nlet nextSignalId = 0;\nfunction signalsKey(signals) {\n\tif (!signals || typeof signals !== \"object\") return stableStringify(signals);\n\treturn Object.keys(signals).sort().map((name) => {\n\t\tconst s = signals[name];\n\t\tif (s && typeof s === \"object\" && typeof s.get === \"function\") {\n\t\t\tlet id = signalIds.get(s);\n\t\t\tif (id === void 0) {\n\t\t\t\tid = nextSignalId++;\n\t\t\t\tsignalIds.set(s, id);\n\t\t\t}\n\t\t\treturn `${JSON.stringify(name)}:#${id}`;\n\t\t}\n\t\treturn `${JSON.stringify(name)}:${stableStringify(s)}`;\n\t}).join(\",\");\n}\n/**\n* Paused gsap timelines stay attached to gsap's global timeline until killed,\n* so anything dropped from a cache must be killed or it is never collected.\n*/\nfunction release(value) {\n\tvalue.tl.kill();\n}\n/**\n* Make room for one insertion: drop and kill TTL-expired entries, then evict\n* the least-recently-used entry if the cache is at capacity. Every dropped\n* timeline MUST be killed — see `release`.\n*/\nfunction evictForInsert(cache$1, maxSize) {\n\tconst now = Date.now();\n\tfor (const [key, entry] of cache$1.entries()) if (now - entry.cacheTime > CACHE_TTL_MS) {\n\t\tcache$1.delete(key);\n\t\trelease(entry.value);\n\t}\n\tif (cache$1.size >= maxSize) {\n\t\tconst oldestKey = cache$1.keys().next().value;\n\t\tif (oldestKey !== void 0) {\n\t\t\tconst oldest = cache$1.get(oldestKey);\n\t\t\tcache$1.delete(oldestKey);\n\t\t\tif (oldest) release(oldest.value);\n\t\t}\n\t}\n}\nfunction stableStringify(obj) {\n\tif (obj === null) return \"null\";\n\tif (obj === void 0) return \"undefined\";\n\tif (typeof obj !== \"object\") return JSON.stringify(obj);\n\tif (ArrayBuffer.isView(obj)) return `[TypedArray:${obj.byteLength}]`;\n\tif (Array.isArray(obj)) return \"[\" + obj.map(stableStringify).join(\",\") + \"]\";\n\treturn \"{\" + Object.keys(obj).sort().map((key) => {\n\t\treturn `${JSON.stringify(key)}:${stableStringify(obj[key])}`;\n\t}).join(\",\") + \"}\";\n}\nfunction getCachedTimeline(cacheKey) {\n\tconst entry = cache.get(cacheKey);\n\tif (entry) {\n\t\tif (Date.now() - entry.cacheTime > CACHE_TTL_MS) {\n\t\t\tcache.delete(cacheKey);\n\t\t\trelease(entry.value);\n\t\t\treturn;\n\t\t}\n\t\tentry.cacheTime = Date.now();\n\t\tcache.delete(cacheKey);\n\t\tcache.set(cacheKey, entry);\n\t\treturn entry.value;\n\t}\n}\nfunction setCachedTimeline(cacheKey, value) {\n\tevictForInsert(cache, TIMELINE_CACHE_MAX);\n\tcache.set(cacheKey, {\n\t\tcacheTime: Date.now(),\n\t\tvalue\n\t});\n}\nfunction mappedEase(ease, durationFrames, fps = 24) {\n\tif (!ease) return \"none\";\n\tconst { name, dir, params } = ease;\n\tif (name === \"none\") return \"none\";\n\tif (name === \"spring\") {\n\t\tconst damping = Math.max(.001, params?.[0] ?? 10);\n\t\tconst stiffness = Math.max(.001, params?.[1] ?? 100);\n\t\tconst mass = Math.max(.001, params?.[2] ?? 1);\n\t\treturn (p) => {\n\t\t\tconst t = p * (durationFrames && durationFrames > 0 ? durationFrames / (fps > 0 ? fps : 24) : 1);\n\t\t\tconst m = mass;\n\t\t\tconst k = stiffness;\n\t\t\tconst c = damping;\n\t\t\tconst w0 = Math.sqrt(k / m);\n\t\t\tconst zeta = c / (2 * Math.sqrt(k * m));\n\t\t\tlet x = 0;\n\t\t\tif (zeta < 1) {\n\t\t\t\tconst wd = w0 * Math.sqrt(1 - zeta * zeta);\n\t\t\t\tconst A = -1;\n\t\t\t\tconst B = -zeta * w0 / wd;\n\t\t\t\tx = Math.exp(-zeta * w0 * t) * (A * Math.cos(wd * t) + B * Math.sin(wd * t));\n\t\t\t} else if (zeta === 1) {\n\t\t\t\tconst A = -1;\n\t\t\t\tconst B = -w0;\n\t\t\t\tx = Math.exp(-w0 * t) * (A + B * t);\n\t\t\t} else {\n\t\t\t\tconst r1 = -w0 * (zeta - Math.sqrt(zeta * zeta - 1));\n\t\t\t\tconst r2 = -w0 * (zeta + Math.sqrt(zeta * zeta - 1));\n\t\t\t\tconst C1 = -1 / (1 - r1 / r2);\n\t\t\t\tconst C2 = -1 - C1;\n\t\t\t\tx = C1 * Math.exp(r1 * t) + C2 * Math.exp(r2 * t);\n\t\t\t}\n\t\t\treturn 1 + x;\n\t\t};\n\t}\n\tif (name === \"cubic\") {\n\t\tconst x1 = params?.[0] ?? .25;\n\t\tconst y1 = params?.[1] ?? .1;\n\t\tconst x2 = params?.[2] ?? .25;\n\t\tconst y2 = params?.[3] ?? 1;\n\t\treturn (p) => solveCubicBezier(x1, y1, x2, y2, p);\n\t}\n\tif (name === \"hold\") return (p) => p >= .9999 ? 1 : 0;\n\tconst easeName = name;\n\tlet suffix = \"\";\n\tif (params && params.length > 0) suffix = `(${params.join(\", \")})`;\n\telse if (name === \"back\") suffix = \"(1.7)\";\n\telse if (name === \"elastic\") suffix = \"(1, 0.3)\";\n\treturn `${easeName}.${dir}${suffix}`;\n}\nfunction compileTrackToTimeline(tl, stub, track, startFrame, fps, durationFrames, signals) {\n\tconst prop = track.prop;\n\tif ((track.source ?? { type: \"keyframe\" }).type !== \"keyframe\") {\n\t\tconst endF = Number.isFinite(durationFrames) ? durationFrames : Math.round(fps * 5);\n\t\tconst frameStepSec = 1 / fps;\n\t\tconst kfList = [];\n\t\tconst firstVal = evaluateTrackAtFrame(track, startFrame, fps, {\n\t\t\tstartFrame,\n\t\t\tbaseValues: stub,\n\t\t\tsignals\n\t\t});\n\t\tstub[prop] = firstVal;\n\t\tkfList.push({\n\t\t\t[prop]: firstVal,\n\t\t\tduration: 0\n\t\t});\n\t\tfor (let f = 1; f <= endF; f++) {\n\t\t\tconst val = evaluateTrackAtFrame(track, startFrame + f, fps, {\n\t\t\t\tstartFrame,\n\t\t\t\tbaseValues: stub,\n\t\t\t\tsignals\n\t\t\t});\n\t\t\tkfList.push({\n\t\t\t\t[prop]: val,\n\t\t\t\tduration: frameStepSec,\n\t\t\t\tease: \"none\"\n\t\t\t});\n\t\t}\n\t\ttl.to(stub, {\n\t\t\tkeyframes: kfList,\n\t\t\trepeat: track.repeat ?? 0,\n\t\t\tyoyo: !!track.yoyo,\n\t\t\tlazy: false,\n\t\t\toverwrite: false,\n\t\t\timmediateRender: false\n\t\t}, startFrame / fps);\n\t\treturn {\n\t\t\tdropped: 0,\n\t\t\tmaxAuthoredFrame: 0\n\t\t};\n\t}\n\tconst sortedKeyframes = [...track.keyframes].sort((a, b) => a.frame - b.frame);\n\tconst validKeyframes = sortedKeyframes.filter((kf) => kf.frame >= 0 && kf.frame <= durationFrames);\n\tconst dropped = sortedKeyframes.length - validKeyframes.length;\n\tconst maxAuthoredFrame = dropped > 0 ? sortedKeyframes[sortedKeyframes.length - 1].frame : 0;\n\tif (validKeyframes.length === 0) return {\n\t\tdropped,\n\t\tmaxAuthoredFrame\n\t};\n\tif (prop === \"hidden\" || prop === \"muted\") for (const kf of validKeyframes) {\n\t\tconst absoluteSec = (startFrame + kf.frame) / fps;\n\t\ttl.set(stub, {\n\t\t\t[prop]: kf.value,\n\t\t\timmediateRender: false\n\t\t}, absoluteSec);\n\t}\n\telse {\n\t\tconst repeat = track.repeat ?? 0;\n\t\tconst yoyo = !!track.yoyo;\n\t\tif (validKeyframes.length === 1) {\n\t\t\tconst kf0 = validKeyframes[0];\n\t\t\tconst absoluteSec = (startFrame + kf0.frame) / fps;\n\t\t\ttl.set(stub, {\n\t\t\t\t[prop]: kf0.value,\n\t\t\t\timmediateRender: false\n\t\t\t}, absoluteSec);\n\t\t} else if (validKeyframes.length === 2) {\n\t\t\tconst kf0 = validKeyframes[0];\n\t\t\tconst kf1 = validKeyframes[1];\n\t\t\tconst val0 = kf0.value;\n\t\t\tconst val1 = kf1.value;\n\t\t\tconst startSec = (startFrame + kf0.frame) / fps;\n\t\t\tconst durSec = (kf1.frame - kf0.frame) / fps;\n\t\t\tconst trackDurationFrames = track.durationFrames ?? kf1.frame - kf0.frame;\n\t\t\tconst easeVal = mappedEase(kf1.ease ?? kf0.ease, trackDurationFrames, fps);\n\t\t\tif (val0 === stub[prop]) tl.to(stub, {\n\t\t\t\t[prop]: val1,\n\t\t\t\tduration: durSec,\n\t\t\t\tease: easeVal,\n\t\t\t\trepeat,\n\t\t\t\tyoyo,\n\t\t\t\tlazy: false,\n\t\t\t\toverwrite: false,\n\t\t\t\timmediateRender: false\n\t\t\t}, startSec);\n\t\t\telse tl.fromTo(stub, { [prop]: val0 }, {\n\t\t\t\t[prop]: val1,\n\t\t\t\tduration: durSec,\n\t\t\t\tease: easeVal,\n\t\t\t\trepeat,\n\t\t\t\tyoyo,\n\t\t\t\tlazy: false,\n\t\t\t\toverwrite: false,\n\t\t\t\timmediateRender: false\n\t\t\t}, startSec);\n\t\t} else {\n\t\t\tconst kf0 = validKeyframes[0];\n\t\t\tconst startSec = (startFrame + kf0.frame) / fps;\n\t\t\tconst kfList = [];\n\t\t\tkfList.push({\n\t\t\t\t[prop]: kf0.value,\n\t\t\t\tduration: 0\n\t\t\t});\n\t\t\tfor (let i = 1; i < validKeyframes.length; i++) {\n\t\t\t\tconst prevKf = validKeyframes[i - 1];\n\t\t\t\tconst currKf = validKeyframes[i];\n\t\t\t\tconst deltaFrames = currKf.frame - prevKf.frame;\n\t\t\t\tconst durSec = deltaFrames / fps;\n\t\t\t\tconst easeVal = mappedEase(currKf.ease, deltaFrames, fps);\n\t\t\t\tkfList.push({\n\t\t\t\t\t[prop]: currKf.value,\n\t\t\t\t\tduration: durSec,\n\t\t\t\t\tease: easeVal\n\t\t\t\t});\n\t\t\t}\n\t\t\ttl.to(stub, {\n\t\t\t\tkeyframes: kfList,\n\t\t\t\trepeat,\n\t\t\t\tyoyo,\n\t\t\t\tlazy: false,\n\t\t\t\toverwrite: false,\n\t\t\t\timmediateRender: false\n\t\t\t}, startSec);\n\t\t}\n\t}\n\treturn {\n\t\tdropped,\n\t\tmaxAuthoredFrame\n\t};\n}\n/**\n* Dedupe per compiled cache key — a fresh render of the same broken doc SHOULD\n* re-warn. Single-frame renders are the exception: each `renderFrame` call has\n* its own `img-` render id, so probing a doc frame by frame would repeat the\n* warning on every frame; those dedupe per document instead.\n*/\nconst truncationWarnedKeys = /* @__PURE__ */ new Set();\nconst TRUNCATION_WARNED_CAP = 100;\nfunction warnTruncationOnce(cacheKey, truncations) {\n\tif (truncationWarnedKeys.has(cacheKey)) return;\n\tif (truncationWarnedKeys.size >= TRUNCATION_WARNED_CAP) truncationWarnedKeys.clear();\n\ttruncationWarnedKeys.add(cacheKey);\n\tconst details = truncations.map((t) => `'${t.prop}' (track '${t.trackId}') on '${t.layerId}': ${t.dropped} keyframe(s) past the clip window (last authored frame ${t.maxAuthoredFrame})`).join(\"; \");\n\tconsole.warn(`[compositor] ${truncations.length} track(s) truncated — animation tails will not play: ${details}. Extend durationFrames or move those keyframes.`);\n}\nfunction hashNodes(nodeOps, width, height, fps, durationSec) {\n\treturn fnv1a(stableStringify({\n\t\tnodes: nodeOps.map((vm) => {\n\t\t\tconst lop = vm?.operation || {};\n\t\t\treturn {\n\t\t\t\tid: lop.id,\n\t\t\t\tanimation: lop.animation,\n\t\t\t\tstartFrame: lop.startFrame,\n\t\t\t\tdurationFrames: lop.durationFrames,\n\t\t\t\tx: lop.x,\n\t\t\t\ty: lop.y,\n\t\t\t\tscale: lop.scale,\n\t\t\t\trotation: lop.rotation,\n\t\t\t\topacity: lop.opacity,\n\t\t\t\tvolume: lop.volume,\n\t\t\t\twidth: lop.width,\n\t\t\t\theight: lop.height,\n\t\t\t\thidden: lop.hidden,\n\t\t\t\tmuted: lop.muted,\n\t\t\t\tbackgroundColor: lop.backgroundColor,\n\t\t\t\tfill: lop.fill,\n\t\t\t\tborderColor: lop.borderColor,\n\t\t\t\ttextBackgroundColor: lop.textBackgroundColor,\n\t\t\t\trotateX: lop.rotateX,\n\t\t\t\trotateY: lop.rotateY,\n\t\t\t\trotateZ: lop.rotateZ,\n\t\t\t\tperspective: lop.perspective,\n\t\t\t\tperspectiveOriginX: lop.perspectiveOriginX,\n\t\t\t\tperspectiveOriginY: lop.perspectiveOriginY,\n\t\t\t\ttranslateZ: lop.translateZ,\n\t\t\t\tbackfaceVisibility: lop.backfaceVisibility,\n\t\t\t\ttransformStyle: lop.transformStyle,\n\t\t\t\tis3D: lop.is3D,\n\t\t\t\tz: lop.z,\n\t\t\t\tscaleZ: lop.scaleZ,\n\t\t\t\ttwoSided: lop.twoSided,\n\t\t\t\tcameraX: lop.cameraX,\n\t\t\t\tcameraY: lop.cameraY,\n\t\t\t\tcameraZ: lop.cameraZ,\n\t\t\t\ttargetX: lop.targetX,\n\t\t\t\ttargetY: lop.targetY,\n\t\t\t\ttargetZ: lop.targetZ,\n\t\t\t\tcameraPitch: lop.cameraPitch,\n\t\t\t\tcameraYaw: lop.cameraYaw,\n\t\t\t\tcameraRoll: lop.cameraRoll,\n\t\t\t\tcameraFov: lop.cameraFov,\n\t\t\t\tcameraZoom: lop.cameraZoom,\n\t\t\t\tfocalLength: lop.focalLength,\n\t\t\t\tfocusDistance: lop.focusDistance,\n\t\t\t\tfStop: lop.fStop,\n\t\t\t\tmaxBlurRadius: lop.maxBlurRadius,\n\t\t\t\tshakeTranslation: lop.shakeTranslation,\n\t\t\t\tshakeRotation: lop.shakeRotation,\n\t\t\t\torbitRadius: lop.orbitRadius,\n\t\t\t\torbitAzimuth: lop.orbitAzimuth,\n\t\t\t\torbitElevation: lop.orbitElevation,\n\t\t\t\tmaterial: lop.material,\n\t\t\t\tshininess: lop.shininess,\n\t\t\t\troughness: lop.roughness,\n\t\t\t\tspecularIntensity: lop.specularIntensity,\n\t\t\t\tambientIntensity: lop.ambientIntensity,\n\t\t\t\tmetallic: lop.metallic,\n\t\t\t\tlightType: lop.lightType,\n\t\t\t\tintensity: lop.intensity,\n\t\t\t\tradius: lop.radius,\n\t\t\t\tangle: lop.angle,\n\t\t\t\tpenumbra: lop.penumbra,\n\t\t\t\tanimationProgress: lop.animationProgress,\n\t\t\t\tanimationTime: lop.animationTime,\n\t\t\t\tanimationSpeed: lop.animationSpeed,\n\t\t\t\twireframe: lop.wireframe,\n\t\t\t\tscaleX: lop.scaleX,\n\t\t\t\tscaleY: lop.scaleY,\n\t\t\t\tfontSize: lop.fontSize,\n\t\t\t\ttext: lop.text\n\t\t\t};\n\t\t}),\n\t\twidth,\n\t\theight,\n\t\tfps,\n\t\tdurationSec\n\t}));\n}\nfunction compileTimeline(renderId, virtualMedia, options) {\n\tconst fps = options.fps;\n\tconst durationSec = options.durationSec;\n\tconst width = virtualMedia?.metadata?.width ?? 1920;\n\tconst height = virtualMedia?.metadata?.height ?? 1080;\n\tconst nodeOps = collectNodeOps(virtualMedia?.children ?? []);\n\tconst memoKey = virtualMedia?.children;\n\tconst memo = memoKey ? nodesHashMemo.get(memoKey) : void 0;\n\tlet nodesHash;\n\tif (memo && memo.width === width && memo.height === height && memo.fps === fps && memo.durationSec === durationSec) nodesHash = memo.hash;\n\telse {\n\t\tnodesHash = hashNodes(nodeOps, width, height, fps, durationSec);\n\t\tif (memoKey) nodesHashMemo.set(memoKey, {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tfps,\n\t\t\tdurationSec,\n\t\t\thash: nodesHash\n\t\t});\n\t}\n\tconst irHash = fnv1a(`${nodesHash}|${signalsKey(virtualMedia?.operation?.signals ?? virtualMedia?.signals)}`);\n\tconst cacheKey = `${renderId}_${irHash}`;\n\tconst cached = getCachedTimeline(cacheKey);\n\tif (cached) return cached;\n\tconst tl = gsap.timeline({\n\t\tpaused: true,\n\t\tsmoothChildTiming: false\n\t});\n\tconst targetsById = {};\n\tconst signals = virtualMedia?.operation?.signals ?? virtualMedia?.signals ?? {};\n\tnodeOps.forEach((vm, index) => {\n\t\tconst lop = vm?.operation || {};\n\t\tconst layerId = lop.id || lop.inputHandleId || `layer_${index}`;\n\t\tconst stub = {\n\t\t\tid: layerId,\n\t\t\tinputHandleId: lop.inputHandleId || `layer_${index}`,\n\t\t\ttrackId: layerId,\n\t\t\tx: lop.kind === \"camera\" || lop.kind === \"light\" ? lop.x ?? lop.cameraX : lop.x ?? 0,\n\t\t\ty: lop.kind === \"camera\" || lop.kind === \"light\" ? lop.y ?? lop.cameraY : lop.y ?? 0,\n\t\t\tscale: lop.scale ?? 1,\n\t\t\trotation: lop.rotation ?? 0,\n\t\t\topacity: lop.opacity ?? 1,\n\t\t\tvolume: lop.volume ?? 1,\n\t\t\twidth: lop.width,\n\t\t\theight: lop.height,\n\t\t\thidden: !!lop.hidden,\n\t\t\tmuted: !!lop.muted,\n\t\t\trotateX: lop.rotateX ?? 0,\n\t\t\trotateY: lop.rotateY ?? 0,\n\t\t\trotateZ: lop.rotateZ ?? 0,\n\t\t\tperspective: lop.perspective ?? 0,\n\t\t\tperspectiveOriginX: lop.perspectiveOriginX ?? .5,\n\t\t\tperspectiveOriginY: lop.perspectiveOriginY ?? .5,\n\t\t\ttranslateZ: lop.translateZ ?? 0,\n\t\t\tbackfaceVisibility: lop.backfaceVisibility ?? \"visible\",\n\t\t\ttransformStyle: lop.transformStyle ?? \"flat\",\n\t\t\tfontSize: lop.fontSize,\n\t\t\ttext: 1,\n\t\t\tfill: lop.fill,\n\t\t\tfillColor: lop.fillColor ?? lop.fill,\n\t\t\tstrokeColor: lop.strokeColor ?? lop.stroke,\n\t\t\tstrokeWidth: lop.strokeWidth,\n\t\t\tletterSpacing: lop.letterSpacing,\n\t\t\tfirstMargin: lop.firstMargin ?? lop.pathOptions?.firstMargin,\n\t\t\tlastMargin: lop.lastMargin ?? lop.pathOptions?.lastMargin,\n\t\t\tbaselineShift: lop.baselineShift ?? lop.pathOptions?.baselineShift,\n\t\t\toffset: lop.offset,\n\t\t\trangeStart: lop.rangeStart,\n\t\t\trangeEnd: lop.rangeEnd,\n\t\t\tanimators: lop.animators,\n\t\t\tpathOptions: lop.pathOptions,\n\t\t\ttypewriter: lop.typewriter,\n\t\t\tmarquee: lop.marquee,\n\t\t\tis3D: lop.is3D ?? (lop.kind === \"camera\" || lop.kind === \"light\" || lop.kind === \"model3d\" ? true : false),\n\t\t\tz: lop.z ?? (lop.kind === \"camera\" ? lop.z ?? -1500 : 0),\n\t\t\tscaleZ: lop.scaleZ ?? 1,\n\t\t\ttwoSided: lop.twoSided ?? true,\n\t\t\tmaterial: lop.material,\n\t\t\tshininess: lop.shininess,\n\t\t\troughness: lop.roughness,\n\t\t\tspecularIntensity: lop.specularIntensity,\n\t\t\tambientIntensity: lop.ambientIntensity,\n\t\t\tmetallic: lop.metallic,\n\t\t\tanimationProgress: lop.animationProgress ?? 0,\n\t\t\tanimationTime: lop.animationTime ?? 0,\n\t\t\tanimationSpeed: lop.animationSpeed ?? 1,\n\t\t\twireframe: lop.wireframe ?? false,\n\t\t\tscaleX: lop.scaleX ?? 1,\n\t\t\tscaleY: lop.scaleY ?? 1,\n\t\t\tcameraX: lop.cameraX ?? (lop.kind === \"camera\" ? lop.x : void 0),\n\t\t\tcameraY: lop.cameraY ?? (lop.kind === \"camera\" ? lop.y : void 0),\n\t\t\tcameraZ: lop.cameraZ ?? (lop.kind === \"camera\" ? lop.z : void 0),\n\t\t\ttargetX: lop.targetX,\n\t\t\ttargetY: lop.targetY,\n\t\t\ttargetZ: lop.targetZ,\n\t\t\tcameraPitch: lop.cameraPitch ?? lop.pitch ?? 0,\n\t\t\tcameraYaw: lop.cameraYaw ?? lop.yaw ?? 0,\n\t\t\tcameraRoll: lop.cameraRoll ?? lop.roll ?? 0,\n\t\t\tcameraFov: lop.cameraFov ?? lop.lens?.fov ?? 50,\n\t\t\tcameraZoom: lop.cameraZoom ?? lop.lens?.zoom ?? 1,\n\t\t\tfocalLength: lop.focalLength ?? lop.lens?.focalLength ?? 50,\n\t\t\tfocusDistance: lop.focusDistance ?? lop.dof?.focusDistance,\n\t\t\tfStop: lop.fStop ?? lop.dof?.fStop ?? 2.8,\n\t\t\tmaxBlurRadius: lop.maxBlurRadius ?? lop.dof?.maxBlurRadius ?? 24,\n\t\t\tshakeTranslation: lop.shakeTranslation ?? (lop.shake?.enabled ? lop.shake?.translationAmplitude ?? 0 : 0),\n\t\t\tshakeRotation: lop.shakeRotation ?? (lop.shake?.enabled ? lop.shake?.rotationAmplitude ?? 0 : 0),\n\t\t\torbitRadius: lop.orbitRadius,\n\t\t\torbitAzimuth: lop.orbitAzimuth,\n\t\t\torbitElevation: lop.orbitElevation,\n\t\t\tlightType: lop.lightType,\n\t\t\tintensity: lop.intensity ?? (lop.kind === \"light\" ? 1 : void 0),\n\t\t\tradius: lop.radius,\n\t\t\tangle: lop.angle,\n\t\t\tpenumbra: lop.penumbra,\n\t\t\tdecay: lop.decay\n\t\t};\n\t\tfor (const track of lop.animation?.tracks ?? []) if ((track.source ?? { type: \"keyframe\" }).type !== \"keyframe\") stub[track.prop] = evaluateTrackAtFrame(track, lop.startFrame ?? 0, fps, {\n\t\t\tstartFrame: lop.startFrame ?? 0,\n\t\t\tbaseValues: stub,\n\t\t\tsignals\n\t\t});\n\t\telse if (track.keyframes && track.keyframes.length > 0) {\n\t\t\tconst kf0 = track.keyframes[0];\n\t\t\tconst seeded = stub;\n\t\t\tif (kf0.frame === 0) seeded[track.prop] = kf0.value;\n\t\t\telse if (seeded[track.prop] === void 0) seeded[track.prop] = lop[track.prop] ?? kf0.value;\n\t\t}\n\t\ttargetsById[layerId] = stub;\n\t});\n\tconst truncations = [];\n\tnodeOps.forEach((vm) => {\n\t\tconst lop = vm?.operation || {};\n\t\tconst layerId = lop.id || lop.inputHandleId;\n\t\tconst stub = layerId ? targetsById[layerId] : void 0;\n\t\tif (!stub) return;\n\t\tconst startFrame = lop.startFrame ?? 0;\n\t\tlet durationFrames = lop.durationFrames;\n\t\tif (durationFrames === void 0) {\n\t\t\tconst child = vm.children?.[0];\n\t\t\tconst childMeta = child ? getActiveMediaMetadata(child) : null;\n\t\t\tconst composeDuration = virtualMedia?.metadata?.durationMs ?? DEFAULT_DURATION_MS;\n\t\t\tconst layerType = lop.type ?? (lop.kind === \"text\" ? \"Text\" : lop.kind === \"media\" ? child ? child.operation?.dataType : void 0 : void 0);\n\t\t\tconst durationMs = resolveLayerDuration(void 0, childMeta?.durationMs ?? void 0, composeDuration, layerType);\n\t\t\tdurationFrames = Math.max(1, Math.round(durationMs / 1e3 * fps));\n\t\t}\n\t\tfor (const track of lop.animation?.tracks ?? []) {\n\t\t\tconst { dropped, maxAuthoredFrame } = compileTrackToTimeline(tl, stub, track, startFrame, fps, durationFrames, signals);\n\t\t\tif (dropped > 0) truncations.push({\n\t\t\t\tlayerId,\n\t\t\t\ttrackId: track.id,\n\t\t\t\tprop: track.prop,\n\t\t\t\tdropped,\n\t\t\t\tmaxAuthoredFrame\n\t\t\t});\n\t\t}\n\t});\n\tif (truncations.length > 0) {\n\t\twarnTruncationOnce(renderId.startsWith(\"img-\") ? `frame_${irHash}` : cacheKey, truncations);\n\t\tfor (const t of truncations) reportRenderDiagnostic(renderId, {\n\t\t\tseverity: \"warning\",\n\t\t\tcode: \"animation_truncated\",\n\t\t\tlayerId: t.layerId,\n\t\t\tmessage: `'${t.prop}' on '${t.layerId}': ${t.dropped} keyframe(s) past the clip window (last authored frame ${t.maxAuthoredFrame}) never play`\n\t\t});\n\t}\n\ttl.seek(1e-6);\n\ttl.seek(0);\n\tconst compileResult = {\n\t\ttl,\n\t\ttargetsById,\n\t\tnodes: nodeOps\n\t};\n\tsetCachedTimeline(cacheKey, compileResult);\n\treturn compileResult;\n}\nconst layerTimelineCache = /* @__PURE__ */ new Map();\nfunction compileLayerTimeline(layerId, animation, baseVolume, baseMuted, fps) {\n\tconst cacheKey = `layer_${layerId}_${fnv1a(stableStringify({\n\t\tanimation,\n\t\tbaseVolume,\n\t\tbaseMuted,\n\t\tfps\n\t}))}`;\n\tconst cached = layerTimelineCache.get(cacheKey);\n\tif (cached) {\n\t\tif (Date.now() - cached.cacheTime <= CACHE_TTL_MS) {\n\t\t\tcached.cacheTime = Date.now();\n\t\t\treturn cached.value;\n\t\t}\n\t\tlayerTimelineCache.delete(cacheKey);\n\t\trelease(cached.value);\n\t}\n\tconst tl = gsap.timeline({\n\t\tpaused: true,\n\t\tsmoothChildTiming: false\n\t});\n\tconst stub = {\n\t\tvolume: baseVolume,\n\t\tmuted: baseMuted\n\t};\n\tconst tracks = animation?.tracks ?? [];\n\tfor (const track of tracks) {\n\t\tconst prop = track.prop;\n\t\tif (prop !== \"volume\" && prop !== \"muted\") continue;\n\t\tcompileTrackToTimeline(tl, stub, track, 0, fps, Infinity);\n\t}\n\ttl.seek(1e-6);\n\ttl.seek(0);\n\tconst result = {\n\t\ttl,\n\t\tstub\n\t};\n\tevictForInsert(layerTimelineCache, LAYER_TIMELINE_CACHE_MAX);\n\tlayerTimelineCache.set(cacheKey, {\n\t\tcacheTime: Date.now(),\n\t\tvalue: result\n\t});\n\treturn result;\n}\n\n//#endregion\n//#region src/renderers/container-bg.ts\n/**\n* Which container kinds paint their own background.\n*\n* flex/block/box all accept an optional `background` in the program schema.\n* The renderer must draw the rounded background pass for ALL of them (the old\n* code only painted `box`, so flex/block backgrounds were silently dropped and\n* their \"transparent-optimized\" fast path skipped the fill entirely).\n*/\nfunction shouldPaintContainerBackground(kind, background) {\n\tif (!background) return false;\n\treturn kind === \"flex\" || kind === \"block\" || kind === \"box\";\n}\n\n//#endregion\n//#region src/renderers/transform.ts\nfunction translate(tx, ty) {\n\treturn {\n\t\ta: 1,\n\t\tb: 0,\n\t\tc: 0,\n\t\td: 1,\n\t\te: tx,\n\t\tf: ty\n\t};\n}\n/** Rotation in degrees (screen convention: positive = clockwise, y-down). */\nfunction rotate(degrees) {\n\tconst rad = degrees * Math.PI / 180;\n\tconst cos = Math.cos(rad);\n\tconst sin = Math.sin(rad);\n\treturn {\n\t\ta: cos,\n\t\tb: sin,\n\t\tc: -sin,\n\t\td: cos,\n\t\te: 0,\n\t\tf: 0\n\t};\n}\nfunction scale(sx, sy = sx) {\n\treturn {\n\t\ta: sx,\n\t\tb: 0,\n\t\tc: 0,\n\t\td: sy,\n\t\te: 0,\n\t\tf: 0\n\t};\n}\n/** m1 ∘ m2 (m2 applied first — matches DOMMatrix.multiply ordering). */\nfunction multiply(m1, m2) {\n\treturn {\n\t\ta: m1.a * m2.a + m1.c * m2.b,\n\t\tb: m1.b * m2.a + m1.d * m2.b,\n\t\tc: m1.a * m2.c + m1.c * m2.d,\n\t\td: m1.b * m2.c + m1.d * m2.d,\n\t\te: m1.a * m2.e + m1.c * m2.f + m1.e,\n\t\tf: m1.b * m2.e + m1.d * m2.f + m1.f\n\t};\n}\n/** Materialize into a DOMMatrix for the renderer's transform stack. */\nfunction toDOMMatrix(m) {\n\treturn new DOMMatrix([\n\t\tm.a,\n\t\tm.b,\n\t\tm.c,\n\t\tm.d,\n\t\tm.e,\n\t\tm.f\n\t]);\n}\n/**\n* Layer transform matrix with anchor-aware pivot semantics.\n*\n* The composition node box is drawn at (0, 0, width, height) in local space\n* and positioned at `x`/`y`. `anchorX`/`anchorY` (0–1 fractions of the box)\n* select the pivot point that scale/rotation are applied AROUND:\n*\n* position → pivot → rotate → scale → un-pivot\n*\n* With the default center anchor (0.5, 0.5) a `scale: 2` animation grows the\n* node symmetrically from its middle instead of from its top-left corner.\n* The pivot point itself is invariant under rotation and scale.\n*/\nfunction buildLayerMatrix(params) {\n\tconst ax = params.anchorX ?? .5;\n\tconst ay = params.anchorY ?? .5;\n\tconst px = ax * params.width;\n\tconst py = ay * params.height;\n\treturn multiply(translate(params.x, params.y), multiply(translate(px, py), multiply(rotate(params.rotation), multiply(scale(params.scale), translate(-px, -py)))));\n}\n\n//#endregion\n//#region src/renderers/transform3d.ts\nconst Transform3DMath = {\n\tidentity() {\n\t\treturn [\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\tmultiply(a, b) {\n\t\tconst out = new Array(16);\n\t\tfor (let row = 0; row < 4; row++) for (let col = 0; col < 4; col++) out[col * 4 + row] = a[0 + row] * b[col * 4 + 0] + a[4 + row] * b[col * 4 + 1] + a[8 + row] * b[col * 4 + 2] + a[12 + row] * b[col * 4 + 3];\n\t\treturn out;\n\t},\n\ttranslate(tx, ty, tz = 0) {\n\t\treturn [\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\ttx,\n\t\t\tty,\n\t\t\ttz,\n\t\t\t1\n\t\t];\n\t},\n\tscale(sx, sy, sz = 1) {\n\t\treturn [\n\t\t\tsx,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\tsy,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\tsz,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\trotateX(rad) {\n\t\tconst c = Math.cos(rad);\n\t\tconst s = Math.sin(rad);\n\t\treturn [\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\tc,\n\t\t\ts,\n\t\t\t0,\n\t\t\t0,\n\t\t\t-s,\n\t\t\tc,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\trotateY(rad) {\n\t\tconst c = Math.cos(rad);\n\t\tconst s = Math.sin(rad);\n\t\treturn [\n\t\t\tc,\n\t\t\t0,\n\t\t\t-s,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\ts,\n\t\t\t0,\n\t\t\tc,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\trotateZ(rad) {\n\t\tconst c = Math.cos(rad);\n\t\tconst s = Math.sin(rad);\n\t\treturn [\n\t\t\tc,\n\t\t\ts,\n\t\t\t0,\n\t\t\t0,\n\t\t\t-s,\n\t\t\tc,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t];\n\t},\n\tperspective(d) {\n\t\tif (d <= 0) return Transform3DMath.identity();\n\t\tconst m = Transform3DMath.identity();\n\t\tm[11] = -1 / d;\n\t\treturn m;\n\t},\n\tbuildLayer3DMatrix(config) {\n\t\tconst { x, y, width, height, rotateXDeg = 0, rotateYDeg = 0, rotateZDeg = 0, scaleX = 1, scaleY = 1, perspectivePx = 0, originXRatio = .5, originYRatio = .5, translateZPx = 0 } = config;\n\t\tconst pivotX = x + width * originXRatio;\n\t\tconst pivotY = y + height * originYRatio;\n\t\tconst rxRad = rotateXDeg * Math.PI / 180;\n\t\tconst ryRad = rotateYDeg * Math.PI / 180;\n\t\tconst rzRad = rotateZDeg * Math.PI / 180;\n\t\tlet m = Transform3DMath.identity();\n\t\tm = Transform3DMath.multiply(m, Transform3DMath.translate(pivotX, pivotY, 0));\n\t\tif (perspectivePx > 0) m = Transform3DMath.multiply(m, Transform3DMath.perspective(perspectivePx));\n\t\tif (translateZPx !== 0) m = Transform3DMath.multiply(m, Transform3DMath.translate(0, 0, translateZPx));\n\t\tif (rzRad !== 0) m = Transform3DMath.multiply(m, Transform3DMath.rotateZ(rzRad));\n\t\tif (ryRad !== 0) m = Transform3DMath.multiply(m, Transform3DMath.rotateY(ryRad));\n\t\tif (rxRad !== 0) m = Transform3DMath.multiply(m, Transform3DMath.rotateX(rxRad));\n\t\tm = Transform3DMath.multiply(m, Transform3DMath.translate(-width * originXRatio, -height * originYRatio, 0));\n\t\tif (scaleX !== 1 || scaleY !== 1) m = Transform3DMath.multiply(m, Transform3DMath.scale(scaleX, scaleY, 1));\n\t\treturn m;\n\t},\n\tprojectPoint(m, p) {\n\t\tconst x = p.x;\n\t\tconst y = p.y;\n\t\tconst z = p.z;\n\t\tconst X = m[0] * x + m[4] * y + m[8] * z + m[12];\n\t\tconst Y = m[1] * x + m[5] * y + m[9] * z + m[13];\n\t\tconst W = m[3] * x + m[7] * y + m[11] * z + m[15];\n\t\tconst wInv = Math.abs(W) > 1e-6 ? 1 / W : 1;\n\t\treturn {\n\t\t\tx: X * wInv,\n\t\t\ty: Y * wInv\n\t\t};\n\t},\n\tprojectRectangleCorners(matrix, width, height) {\n\t\treturn {\n\t\t\ttopLeft: Transform3DMath.projectPoint(matrix, {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t\t}),\n\t\t\ttopRight: Transform3DMath.projectPoint(matrix, {\n\t\t\t\tx: width,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t\t}),\n\t\t\tbottomLeft: Transform3DMath.projectPoint(matrix, {\n\t\t\t\tx: 0,\n\t\t\t\ty: height,\n\t\t\t\tz: 0\n\t\t\t}),\n\t\t\tbottomRight: Transform3DMath.projectPoint(matrix, {\n\t\t\t\tx: width,\n\t\t\t\ty: height,\n\t\t\t\tz: 0\n\t\t\t})\n\t\t};\n\t},\n\tcomputeSignedArea(quad) {\n\t\tconst { topLeft: p0, topRight: p1, bottomRight: p2, bottomLeft: p3 } = quad;\n\t\treturn .5 * (p0.x * p1.y - p1.x * p0.y + (p1.x * p2.y - p2.x * p1.y) + (p2.x * p3.y - p3.x * p2.y) + (p3.x * p0.y - p0.x * p3.y));\n\t}\n};\n/**\n* Computes an 8-parameter 3x3 homography matrix mapping destination coordinates (quad)\n* to normalized source coordinates (unit square [0, 1]^2).\n*\n* The homography H maps destination (x, y) to source (u, v):\n* u = (h00*x + h01*y + h02) / (h20*x + h21*y + h22)\n* v = (h10*x + h11*y + h12) / (h20*x + h21*y + h22)\n*\n* Resulting array: [h00, h01, h02, h10, h11, h12, h20, h21, 1.0]\n*/\nfunction solveHomography(dstPoints, srcPoints = [\n\t{\n\t\tx: 0,\n\t\ty: 0\n\t},\n\t{\n\t\tx: 1,\n\t\ty: 0\n\t},\n\t{\n\t\tx: 0,\n\t\ty: 1\n\t},\n\t{\n\t\tx: 1,\n\t\ty: 1\n\t}\n]) {\n\tconst A = [];\n\tconst B = [];\n\tfor (let i = 0; i < 4; i++) {\n\t\tconst xi = dstPoints[i]?.x ?? 0;\n\t\tconst yi = dstPoints[i]?.y ?? 0;\n\t\tconst ui = srcPoints[i]?.x ?? 0;\n\t\tconst vi = srcPoints[i]?.y ?? 0;\n\t\tA.push([\n\t\t\txi,\n\t\t\tyi,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t-xi * ui,\n\t\t\t-yi * ui\n\t\t]);\n\t\tB.push(ui);\n\t\tA.push([\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\txi,\n\t\t\tyi,\n\t\t\t1,\n\t\t\t-xi * vi,\n\t\t\t-yi * vi\n\t\t]);\n\t\tB.push(vi);\n\t}\n\tconst n = 8;\n\tfor (let i = 0; i < n; i++) {\n\t\tlet maxRow = i;\n\t\tlet maxVal = Math.abs(A[i][i]);\n\t\tfor (let k = i + 1; k < n; k++) if (Math.abs(A[k][i]) > maxVal) {\n\t\t\tmaxVal = Math.abs(A[k][i]);\n\t\t\tmaxRow = k;\n\t\t}\n\t\tconst tempRow = A[i];\n\t\tA[i] = A[maxRow];\n\t\tA[maxRow] = tempRow;\n\t\tconst tempB = B[i];\n\t\tB[i] = B[maxRow];\n\t\tB[maxRow] = tempB;\n\t\tconst pivot = A[i][i];\n\t\tif (Math.abs(pivot) < 1e-12) A[i][i] = pivot < 0 ? -1e-12 : 1e-12;\n\t\tfor (let k = i + 1; k < n; k++) {\n\t\t\tconst factor = A[k][i] / A[i][i];\n\t\t\tfor (let j = i; j < n; j++) A[k][j] -= factor * A[i][j];\n\t\t\tB[k] -= factor * B[i];\n\t\t}\n\t}\n\tconst h = new Array(8).fill(0);\n\tfor (let i = n - 1; i >= 0; i--) {\n\t\tlet sum = B[i];\n\t\tfor (let j = i + 1; j < n; j++) sum -= A[i][j] * h[j];\n\t\th[i] = sum / A[i][i];\n\t}\n\treturn [\n\t\th[0],\n\t\th[1],\n\t\th[2],\n\t\th[3],\n\t\th[4],\n\t\th[5],\n\t\th[6],\n\t\th[7],\n\t\t1\n\t];\n}\n/**\n* Checks whether a layer operation or compiled stub activates the 3D perspective path.\n*/\nfunction has3DTransform(target, lop) {\n\tconst rx = target?.rotateX ?? lop?.rotateX ?? 0;\n\tconst ry = target?.rotateY ?? lop?.rotateY ?? 0;\n\tconst rz = target?.rotateZ ?? lop?.rotateZ ?? 0;\n\tconst tz = target?.translateZ ?? lop?.translateZ ?? 0;\n\tconst p = target?.perspective ?? lop?.perspective ?? 0;\n\tif (rx !== 0 || ry !== 0 || tz !== 0 || p > 0 && (rx !== 0 || ry !== 0 || tz !== 0 || rz !== 0)) return true;\n\tif (target?.rotateZ !== void 0 && target.rotateZ !== 0 || lop?.rotateZ !== void 0 && lop.rotateZ !== 0) return true;\n\tconst tracks = lop?.animation?.tracks;\n\tif (tracks && tracks.length > 0) {\n\t\tfor (const t of tracks) if (t.prop === \"rotateX\" || t.prop === \"rotateY\" || t.prop === \"rotateZ\" || t.prop === \"translateZ\" || t.prop === \"perspective\") return true;\n\t}\n\treturn false;\n}\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nconst LAYOUT_PROPS = [\n\t\"width\",\n\t\"height\",\n\t\"gap\",\n\t\"padding\",\n\t\"fontSize\",\n\t\"letterSpacing\"\n];\nconst layoutMemo = /* @__PURE__ */ new WeakMap();\nfunction layoutKey(width, height, targetsById, mediaDims) {\n\tconst parts = [width, height];\n\tfor (const id in targetsById) {\n\t\tconst t = targetsById[id];\n\t\tfor (const k of LAYOUT_PROPS) if (t[k] !== void 0) parts.push(id, k, t[k]);\n\t}\n\tfor (const [id, d] of mediaDims) parts.push(id, d.width, d.height);\n\treturn JSON.stringify(parts);\n}\nconst compositorHomographyWgsl = `\nstruct HomographyUniforms {\n\tmatrix_row0 : vec4<f32>,\n\tmatrix_row1 : vec4<f32>,\n\tmatrix_row2 : vec4<f32>,\n\tparams : vec4<f32>, // params.x = opacity\n};\n\n@group(0) @binding(0) var<uniform> u : HomographyUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\nstruct VSOut {\n\t@builtin(position) pos : vec4<f32>,\n\t@location(0) uv : vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\n\tvar pos = array<vec2<f32>, 4>(\n\t\tvec2<f32>(-1.0, 1.0),\n\t\tvec2<f32>(1.0, 1.0),\n\t\tvec2<f32>(-1.0, -1.0),\n\t\tvec2<f32>(1.0, -1.0)\n\t);\n\tvar uv = array<vec2<f32>, 4>(\n\t\tvec2<f32>(0.0, 0.0),\n\t\tvec2<f32>(1.0, 0.0),\n\t\tvec2<f32>(0.0, 1.0),\n\t\tvec2<f32>(1.0, 1.0)\n\t);\n\treturn VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet x = in.uv.x;\n\tlet y = in.uv.y;\n\n\tlet d = u.matrix_row2.x * x + u.matrix_row2.y * y + u.matrix_row2.z;\n\tif (d <= 1e-6) {\n\t\treturn vec4<f32>(0.0);\n\t}\n\n\tlet src_u = (u.matrix_row0.x * x + u.matrix_row0.y * y + u.matrix_row0.z) / d;\n\tlet src_v = (u.matrix_row1.x * x + u.matrix_row1.y * y + u.matrix_row1.z) / d;\n\n\tif (src_u < 0.0 || src_u > 1.0 || src_v < 0.0 || src_v > 1.0) {\n\t\treturn vec4<f32>(0.0);\n\t}\n\n\tlet color = textureSampleLevel(tex, samp, vec2<f32>(src_u, src_v), 0.0);\n\treturn color * u.params.x;\n}\n`;\nconst deviceHomographyCache = /* @__PURE__ */ new WeakMap();\nfunction getHomographyResources(device, format) {\n\tlet res = deviceHomographyCache.get(device);\n\tif (!res) {\n\t\tconst uniformLayout = device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\tbuffer: { type: \"uniform\" }\n\t\t}] });\n\t\tconst textureLayout = device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\ttexture: { sampleType: \"float\" }\n\t\t}, {\n\t\t\tbinding: 1,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\tsampler: { type: \"filtering\" }\n\t\t}] });\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"compositor_homography.wgsl\",\n\t\t\tcode: compositorHomographyWgsl\n\t\t});\n\t\tres = {\n\t\t\tpipeline: device.createRenderPipeline({\n\t\t\t\tlabel: \"CompositorHomographyPipeline\",\n\t\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [uniformLayout, textureLayout] }),\n\t\t\t\tvertex: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"vs\"\n\t\t\t\t},\n\t\t\t\tfragment: {\n\t\t\t\t\tmodule,\n\t\t\t\t\tentryPoint: \"fs\",\n\t\t\t\t\ttargets: [{\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tblend: {\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\tsrcFactor: \"one\",\n\t\t\t\t\t\t\t\tdstFactor: \"one-minus-src-alpha\",\n\t\t\t\t\t\t\t\toperation: \"add\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\talpha: {\n\t\t\t\t\t\t\t\tsrcFactor: \"one\",\n\t\t\t\t\t\t\t\tdstFactor: \"one-minus-src-alpha\",\n\t\t\t\t\t\t\t\toperation: \"add\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}]\n\t\t\t\t},\n\t\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t\t}),\n\t\t\tuniformLayout,\n\t\t\ttextureLayout\n\t\t};\n\t\tdeviceHomographyCache.set(device, res);\n\t}\n\treturn res;\n}\nconst audioTrackLatentCache = /* @__PURE__ */ new Map();\nconst deviceRenderer3DCache = /* @__PURE__ */ new WeakMap();\n/** One Renderer3D per device, target format and MSAA sample count. */\nfunction getRenderer3D(device, format, sampleCount) {\n\tlet byConfig = deviceRenderer3DCache.get(device);\n\tif (!byConfig) {\n\t\tbyConfig = /* @__PURE__ */ new Map();\n\t\tdeviceRenderer3DCache.set(device, byConfig);\n\t}\n\tconst key = `${format}|${sampleCount}`;\n\tlet r3d = byConfig.get(key);\n\tif (!r3d) {\n\t\tr3d = new Renderer3D(device, format, sampleCount);\n\t\tbyConfig.set(key, r3d);\n\t}\n\treturn r3d;\n}\nconst deviceRelightPipelineCache = /* @__PURE__ */ new WeakMap();\nfunction getScreenSpaceRelightPipeline(device, format) {\n\tlet relight = deviceRelightPipelineCache.get(device);\n\tif (!relight || relight.format !== format) {\n\t\trelight = new ScreenSpaceRelightPipeline(device, format);\n\t\tdeviceRelightPipelineCache.set(device, relight);\n\t}\n\treturn relight;\n}\nconst deviceDeflickerPipelineCache = /* @__PURE__ */ new WeakMap();\nfunction getTemporalDeflickerPipeline(device, layerKey) {\n\tlet map = deviceDeflickerPipelineCache.get(device);\n\tif (!map) {\n\t\tmap = /* @__PURE__ */ new Map();\n\t\tdeviceDeflickerPipelineCache.set(device, map);\n\t}\n\tlet pipe = map.get(layerKey);\n\tif (!pipe) {\n\t\tpipe = new TemporalDeflickerPipeline(device);\n\t\tmap.set(layerKey, pipe);\n\t}\n\treturn pipe;\n}\nfunction resolveVal(val, fallback, frame, fps) {\n\tif (val === void 0 || val === null) return fallback;\n\tif (typeof val === \"number\") return Number.isFinite(val) ? val : fallback;\n\tif (typeof val === \"object\" && val !== null) {\n\t\tif (\"get\" in val && typeof val.get === \"function\") try {\n\t\t\tconst res = val.get({\n\t\t\t\tframe,\n\t\t\t\tfps,\n\t\t\t\ttime: fps > 0 ? frame / fps : 0,\n\t\t\t\tduration: 0,\n\t\t\t\tdurationMs: 0,\n\t\t\t\tprogress: 0,\n\t\t\t\tdeltaTime: fps > 0 ? 1 / fps : 0\n\t\t\t});\n\t\t\tconst n$1 = Number(res);\n\t\t\tif (Number.isFinite(n$1)) return n$1;\n\t\t} catch {}\n\t\tif (\"value\" in val) {\n\t\t\tconst n$1 = Number(val.value);\n\t\t\tif (Number.isFinite(n$1)) return n$1;\n\t\t}\n\t}\n\tif (typeof val === \"function\") try {\n\t\tconst n$1 = Number(val({\n\t\t\tframe,\n\t\t\tfps,\n\t\t\ttime: fps > 0 ? frame / fps : 0\n\t\t}));\n\t\tif (Number.isFinite(n$1)) return n$1;\n\t} catch {}\n\tconst n = Number(val);\n\treturn Number.isFinite(n) ? n : fallback;\n}\nfunction synthesizeRelightLights(relightOpts, sceneLights, bounds, shiftedFrame, fps) {\n\tif (sceneLights.length > 0 || relightOpts.lightType === void 0 && relightOpts.intensity === void 0 && relightOpts.lightPosX === void 0) return sceneLights;\n\tconst lightTypeStr = String(relightOpts.lightType ?? \"point\").toLowerCase();\n\tconst lightKind = lightTypeStr === \"directional\" ? \"directional\" : lightTypeStr === \"spot\" ? \"spot\" : \"point\";\n\tconst intensity = resolveVal(relightOpts.intensity ?? 1, 1, shiftedFrame, fps);\n\tconst normX = resolveVal(relightOpts.lightPosX, .5, shiftedFrame, fps);\n\tconst normY = resolveVal(relightOpts.lightPosY, .5, shiftedFrame, fps);\n\tconst normZ = resolveVal(relightOpts.lightPosZ, .25, shiftedFrame, fps);\n\tconst normRadius = resolveVal(relightOpts.lightRadius, .75, shiftedFrame, fps);\n\tconst lightX = bounds.x + normX * bounds.width;\n\tconst lightY = bounds.y + normY * bounds.height;\n\tconst lightZ = normZ * Math.max(bounds.width, bounds.height);\n\tconst lightRadius = normRadius * Math.max(bounds.width, bounds.height);\n\tconst synthLight = {\n\t\tlightType: lightKind,\n\t\tcolor: relightOpts.lightColor ?? \"#ffffff\",\n\t\tintensity,\n\t\tx: lightX,\n\t\ty: lightY,\n\t\tz: lightZ,\n\t\tradius: lightRadius,\n\t\tdecay: 1\n\t};\n\tconst ambientInt = resolveVal(relightOpts.ambientIntensity, .15, shiftedFrame, fps);\n\treturn [{\n\t\tlightType: \"ambient\",\n\t\tcolor: relightOpts.ambientColor ?? \"#ffffff\",\n\t\tintensity: ambientInt\n\t}, synthLight];\n}\nfunction drawProjectedQuad(ctx, encoder, destView, sourceTex, quad, destWidth, destHeight, opacity) {\n\tif (Math.abs(Transform3DMath.computeSignedArea(quad)) < 1e-4) return;\n\tconst minX = Math.max(0, Math.min(destWidth, Math.floor(Math.min(quad.topLeft.x, quad.topRight.x, quad.bottomLeft.x, quad.bottomRight.x))));\n\tconst minY = Math.max(0, Math.min(destHeight, Math.floor(Math.min(quad.topLeft.y, quad.topRight.y, quad.bottomLeft.y, quad.bottomRight.y))));\n\tconst maxX = Math.max(0, Math.min(destWidth, Math.ceil(Math.max(quad.topLeft.x, quad.topRight.x, quad.bottomLeft.x, quad.bottomRight.x))));\n\tconst maxY = Math.max(0, Math.min(destHeight, Math.ceil(Math.max(quad.topLeft.y, quad.topRight.y, quad.bottomLeft.y, quad.bottomRight.y))));\n\tconst scissorW = maxX - minX;\n\tconst scissorH = maxY - minY;\n\tif (scissorW <= 0 || scissorH <= 0) return;\n\tconst h = solveHomography([\n\t\t{\n\t\t\tx: quad.topLeft.x / destWidth,\n\t\t\ty: quad.topLeft.y / destHeight\n\t\t},\n\t\t{\n\t\t\tx: quad.topRight.x / destWidth,\n\t\t\ty: quad.topRight.y / destHeight\n\t\t},\n\t\t{\n\t\t\tx: quad.bottomLeft.x / destWidth,\n\t\t\ty: quad.bottomLeft.y / destHeight\n\t\t},\n\t\t{\n\t\t\tx: quad.bottomRight.x / destWidth,\n\t\t\ty: quad.bottomRight.y / destHeight\n\t\t}\n\t]);\n\tfor (const val of h) if (!Number.isFinite(val)) return;\n\tconst uniformData = new Float32Array(16);\n\tuniformData[0] = h[0];\n\tuniformData[1] = h[1];\n\tuniformData[2] = h[2];\n\tuniformData[3] = 0;\n\tuniformData[4] = h[3];\n\tuniformData[5] = h[4];\n\tuniformData[6] = h[5];\n\tuniformData[7] = 0;\n\tuniformData[8] = h[6];\n\tuniformData[9] = h[7];\n\tuniformData[10] = h[8];\n\tuniformData[11] = 0;\n\tuniformData[12] = opacity;\n\tuniformData[13] = 0;\n\tuniformData[14] = 0;\n\tuniformData[15] = 0;\n\tconst { pipeline, uniformLayout, textureLayout } = getHomographyResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst uniformBindGroup = ctx.device.createBindGroup({\n\t\tlayout: uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t});\n\tconst textureBindGroup = ctx.renderer.bindGroupCache.getBindGroup(ctx.device, textureLayout, sourceTex, sampler);\n\tconst renderPass = encoder.beginRenderPass({ colorAttachments: [{\n\t\tview: destView,\n\t\tloadOp: \"load\",\n\t\tstoreOp: \"store\"\n\t}] });\n\trenderPass.setPipeline(pipeline);\n\trenderPass.setScissorRect(minX, minY, scissorW, scissorH);\n\trenderPass.setBindGroup(0, uniformBindGroup);\n\trenderPass.setBindGroup(1, textureBindGroup);\n\trenderPass.draw(4);\n\trenderPass.end();\n}\nfunction computeContainerScissor(matrix, width, height) {\n\tconst corners = [\n\t\tmatrix.transformPoint(new DOMPoint(0, 0)),\n\t\tmatrix.transformPoint(new DOMPoint(width, 0)),\n\t\tmatrix.transformPoint(new DOMPoint(0, height)),\n\t\tmatrix.transformPoint(new DOMPoint(width, height))\n\t];\n\tconst xs = corners.map((p) => p.x);\n\tconst ys = corners.map((p) => p.y);\n\tconst minX = Math.min(...xs);\n\tconst minY = Math.min(...ys);\n\tconst maxX = Math.max(...xs);\n\tconst maxY = Math.max(...ys);\n\treturn {\n\t\tx: Math.round(minX),\n\t\ty: Math.round(minY),\n\t\twidth: Math.max(0, Math.round(maxX - minX)),\n\t\theight: Math.max(0, Math.round(maxY - minY))\n\t};\n}\nconst CompositorWebGPURenderer = async (args) => {\n\tconst { ctx, pass, targetView, targetTexture, targetWidth, targetHeight, encoder, props, drawChild } = args;\n\tconst { virtualMedia, fps, frame } = props;\n\tconst op = virtualMedia.operation;\n\tif (!op) return;\n\tpass.end();\n\tif (op.op === \"CompositorLayer\") {\n\t\tconsole.warn(\"CompositorWebGPURenderer called directly with legacy CompositorLayer operation. This is a bug.\");\n\t\targs.pass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"load\");\n\t\treturn;\n\t}\n\tif (op.op === \"Compositor\") {\n\t\tconst vop = op;\n\t\tconst sampleCount3d = vop.antialias3d === false ? 1 : 4;\n\t\tconst containerWidth = props.containerWidth ?? ctx.surface.width;\n\t\tconst containerHeight = props.containerHeight ?? ctx.surface.height;\n\t\tconst nativeWidth = vop.width ?? containerWidth;\n\t\tconst nativeHeight = vop.height ?? containerHeight;\n\t\tconst opacity = typeof vop.opacity === \"number\" ? vop.opacity : 1;\n\t\tconst isVideoMode = props.isVideoMode ?? (vop.mode === \"Video\" || vop.dataType === \"Video\" || virtualMedia?.metadata?.durationMs != null);\n\t\tconst inheritedSeekOffset = props.inheritedSeekOffset ?? 0;\n\t\tconst shiftedFrame = Math.max(0, frame != null && fps != null ? frame + Math.round(inheritedSeekOffset * fps) : frame ?? 0);\n\t\tconst compositionFrame = props.compositionFrame ?? shiftedFrame;\n\t\tconst compTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [...props.excludeTextures || [], targetTexture]);\n\t\tconst compView = compTex.createView();\n\t\tconst composeDuration = virtualMedia?.metadata?.durationMs ?? DEFAULT_DURATION_MS;\n\t\tconst durationSec = composeDuration / 1e3;\n\t\tconst { tl, targetsById } = compileTimeline(props.renderId, virtualMedia, {\n\t\t\tfps: fps ?? 24,\n\t\t\tdurationSec\n\t\t});\n\t\ttl.seek(shiftedFrame / (fps ?? 24));\n\t\tgetRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d).resetPools();\n\t\tgetScreenSpaceRelightPipeline(ctx.device, ctx.renderer.format ?? \"rgba8unorm\").resetPools();\n\t\tconst clearColor = parseColor(vop.backgroundColor);\n\t\tctx.renderer.beginFrame(encoder, compView, clearColor, nativeWidth, nativeHeight, \"clear\").end();\n\t\tlet currentCompTex = compTex;\n\t\tctx.renderer.pushScissor({\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: nativeWidth,\n\t\t\theight: nativeHeight\n\t\t});\n\t\tctx.renderer.pushIdentity();\n\t\tawait initLayout();\n\t\tconst mediaDims = /* @__PURE__ */ new Map();\n\t\tfor (const vm of collectNodeOps(virtualMedia.children)) {\n\t\t\tconst lop = vm.operation;\n\t\t\tif (lop.kind === \"media\") {\n\t\t\t\tconst meta = getActiveMediaMetadata(vm.children?.[0]);\n\t\t\t\tif (meta?.width && meta?.height) mediaDims.set(lop.id, {\n\t\t\t\t\twidth: meta.width,\n\t\t\t\t\theight: meta.height\n\t\t\t\t});\n\t\t\t\telse if (lop.dataType === \"Caption\" || (vm.children?.[0]?.operation)?.dataType === \"Caption\" || (vm.children?.[0]?.operation)?.srtText !== void 0) {\n\t\t\t\t\tconst lopWidth = targetsById[lop.id]?.width ?? lop.width;\n\t\t\t\t\tconst autoWidth = typeof lopWidth === \"number\" ? lopWidth : Math.round(nativeWidth * .8);\n\t\t\t\t\tconst lopHeight = targetsById[lop.id]?.height ?? lop.height;\n\t\t\t\t\tlet autoHeight = typeof lopHeight === \"number\" ? lopHeight : 160;\n\t\t\t\t\tconst contentVM = vm.children?.[0];\n\t\t\t\t\tconst src = resolveMediaSourceUrl(contentVM) ?? (contentVM?.operation)?.url ?? (contentVM?.operation)?.src ?? (contentVM?.operation)?.srtText ?? lop.src ?? lop.url;\n\t\t\t\t\tif (typeof lopHeight !== \"number\" && src) try {\n\t\t\t\t\t\tconst captions = await srtLoader.load(src);\n\t\t\t\t\t\tif (captions && captions.length > 0) autoHeight = measureMaxCaptionHeight(captions, lop, autoWidth);\n\t\t\t\t\t} catch {}\n\t\t\t\t\tmediaDims.set(lop.id, {\n\t\t\t\t\t\twidth: autoWidth,\n\t\t\t\t\t\theight: autoHeight\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst frameResolveNode = (vm) => {\n\t\t\tconst lop = vm?.operation ?? {};\n\t\t\tconst target = targetsById[lop.id];\n\t\t\tconst pick = (k) => target && target[k] !== void 0 ? target[k] : lop[k];\n\t\t\tconst node = {\n\t\t\t\t...lop,\n\t\t\t\twidth: pick(\"width\"),\n\t\t\t\theight: pick(\"height\"),\n\t\t\t\tgap: pick(\"gap\"),\n\t\t\t\tpadding: pick(\"padding\"),\n\t\t\t\tfontSize: pick(\"fontSize\"),\n\t\t\t\tletterSpacing: pick(\"letterSpacing\")\n\t\t\t};\n\t\t\tnode.children = (vm?.children ?? []).map(frameResolveNode);\n\t\t\tif (!node.children.length) node.children = void 0;\n\t\t\treturn node;\n\t\t};\n\t\tconst layoutRoots = () => (virtualMedia.children ?? []).map(frameResolveNode).filter((node) => node?.kind !== \"camera\" && node?.kind !== \"light\");\n\t\tconst memoTree = virtualMedia.children;\n\t\tconst memoKey = layoutKey(nativeWidth, nativeHeight, targetsById, mediaDims);\n\t\tconst memo = memoTree ? layoutMemo.get(memoTree) : void 0;\n\t\tconst { rects } = memo?.key === memoKey ? memo : await computeLayout({\n\t\t\tlayout: layoutRoots(),\n\t\t\tviewport: {\n\t\t\t\twidth: nativeWidth,\n\t\t\t\theight: nativeHeight\n\t\t\t},\n\t\t\tmeasure: (node, constraintWidth) => {\n\t\t\t\tif (node.kind === \"text\") {\n\t\t\t\t\tconst textStyle = {\n\t\t\t\t\t\tfontSize: node.fontSize ?? 48,\n\t\t\t\t\t\tfontWeight: node.fontWeight,\n\t\t\t\t\t\tfontFamily: node.fontFamily,\n\t\t\t\t\t\tletterSpacing: node.letterSpacing,\n\t\t\t\t\t\tlineHeight: node.lineHeight,\n\t\t\t\t\t\tpadding: node.padding\n\t\t\t\t\t};\n\t\t\t\t\tif (constraintWidth !== void 0) {\n\t\t\t\t\t\tconst isAuto = typeof node.width !== \"number\";\n\t\t\t\t\t\tconst wrapped$1 = measureText(node.text ?? \"\", {\n\t\t\t\t\t\t\t...textStyle,\n\t\t\t\t\t\t\twidth: isAuto ? void 0 : constraintWidth,\n\t\t\t\t\t\t\tkeepNaturalWidth: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\twidth: isAuto ? Math.ceil(wrapped$1.width) : Math.min(constraintWidth, Math.ceil(wrapped$1.width)),\n\t\t\t\t\t\t\theight: Math.ceil(wrapped$1.height)\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconst natural = measureText(node.text ?? \"\", textStyle);\n\t\t\t\t\tif (typeof node.width !== \"number\") return {\n\t\t\t\t\t\twidth: Math.ceil(natural.width),\n\t\t\t\t\t\theight: Math.ceil(natural.height)\n\t\t\t\t\t};\n\t\t\t\t\tconst wrapped = measureText(node.text ?? \"\", {\n\t\t\t\t\t\t...textStyle,\n\t\t\t\t\t\twidth: node.width\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\twidth: Math.ceil(wrapped.width),\n\t\t\t\t\t\theight: Math.ceil(wrapped.height)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (node.kind === \"media\") return mediaDims.get(node.id) ?? null;\n\t\t\t\treturn null;\n\t\t\t}\n\t\t});\n\t\tif (memoTree && memo?.key !== memoKey) layoutMemo.set(memoTree, {\n\t\t\tkey: memoKey,\n\t\t\trects\n\t\t});\n\t\tconst allNodeOps = collectNodeOps(virtualMedia.children ?? []);\n\t\tconst cameraVMs = allNodeOps.filter((vm) => vm.operation?.kind === \"camera\");\n\t\tconst cameraVM = isVideoMode ? cameraVMs.filter((vm) => {\n\t\t\tconst op$1 = vm.operation;\n\t\t\tconst start = op$1.startFrame ?? 0;\n\t\t\tconst dur = op$1.durationFrames;\n\t\t\treturn shiftedFrame >= start && (dur === void 0 || shiftedFrame < start + dur);\n\t\t}).sort((a, b) => (b.operation.startFrame ?? 0) - (a.operation.startFrame ?? 0))[0] : cameraVMs[0];\n\t\tconst lightVMs = allNodeOps.filter((vm) => vm.operation?.kind === \"light\");\n\t\tconst has3DLayer = allNodeOps.some((vm) => {\n\t\t\tconst lop = vm.operation;\n\t\t\tconst target = lop.id ? targetsById[lop.id] : void 0;\n\t\t\treturn lop.kind !== \"camera\" && lop.kind !== \"light\" && (Boolean(target?.is3D ?? lop.is3D) || (target?.z ?? lop.z ?? 0) !== 0);\n\t\t});\n\t\tconst is3DScene = Boolean(cameraVM || has3DLayer || lightVMs.length > 0);\n\t\tlet camera = null;\n\t\tlet dofEnabled = false;\n\t\tconst sceneLights = [];\n\t\tif (is3DScene) {\n\t\t\tconst camOp = cameraVM?.operation;\n\t\t\tconst camStub = camOp?.id ? targetsById[camOp.id] : void 0;\n\t\t\tconst fov = camStub?.cameraFov ?? camOp?.lens?.fov ?? 50;\n\t\t\tcamera = Camera3D.createDefaultCamera(nativeWidth, nativeHeight, fov);\n\t\t\tcamera.near = camOp?.lens?.near ?? 1;\n\t\t\tcamera.far = camOp?.lens?.far ?? 5e4;\n\t\t\tcamera.zoom = camStub?.cameraZoom ?? camOp?.lens?.zoom ?? 1;\n\t\t\tconst defaultEye = camera.eye;\n\t\t\tconst defaultTarget = camera.target;\n\t\t\tconst eyeX = camStub?.cameraX ?? camStub?.x ?? camOp?.x ?? defaultEye[0];\n\t\t\tconst eyeY = camStub?.cameraY ?? camStub?.y ?? camOp?.y ?? defaultEye[1];\n\t\t\tconst eyeZ = camStub?.cameraZ ?? camStub?.z ?? camOp?.z ?? defaultEye[2];\n\t\t\tcamera.eye = [\n\t\t\t\teyeX,\n\t\t\t\teyeY,\n\t\t\t\teyeZ\n\t\t\t];\n\t\t\tif (camStub?.targetX !== void 0 || camStub?.targetY !== void 0 || camStub?.targetZ !== void 0 || camOp?.targetX !== void 0 || camOp?.targetY !== void 0 || camOp?.targetZ !== void 0) camera.target = [\n\t\t\t\tcamStub?.targetX ?? camOp?.targetX ?? defaultTarget[0],\n\t\t\t\tcamStub?.targetY ?? camOp?.targetY ?? defaultTarget[1],\n\t\t\t\tcamStub?.targetZ ?? camOp?.targetZ ?? defaultTarget[2]\n\t\t\t];\n\t\t\telse camera.target = [\n\t\t\t\teyeX,\n\t\t\t\teyeY,\n\t\t\t\t0\n\t\t\t];\n\t\t\tconst pitch = camStub?.cameraPitch ?? camOp?.pitch ?? 0;\n\t\t\tconst yaw = camStub?.cameraYaw ?? camOp?.yaw ?? 0;\n\t\t\tconst roll = camStub?.cameraRoll ?? camOp?.roll ?? 0;\n\t\t\tif (pitch !== 0 || yaw !== 0 || roll !== 0) camera = Camera3D.applyOrientation(camera, pitch, yaw, roll);\n\t\t\tconst orbitAzimuth = camStub?.orbitAzimuth;\n\t\t\tconst orbitElevation = camStub?.orbitElevation;\n\t\t\tconst orbitRadius = camStub?.orbitRadius;\n\t\t\tif (orbitAzimuth !== void 0 || orbitElevation !== void 0 || orbitRadius !== void 0) {\n\t\t\t\tconst radius = orbitRadius ?? Vector3Math.distance(camera.eye, camera.target);\n\t\t\t\tcamera.eye = Camera3D.orbit(camera.target, radius, orbitAzimuth ?? 0, orbitElevation ?? 0);\n\t\t\t}\n\t\t\tconst shakeTrans = camStub?.shakeTranslation ?? (camOp?.shake?.enabled ? camOp?.shake?.translationAmplitude : 0) ?? 0;\n\t\t\tconst shakeRot = camStub?.shakeRotation ?? (camOp?.shake?.enabled ? camOp?.shake?.rotationAmplitude : 0) ?? 0;\n\t\t\tif (shakeTrans > 0 || shakeRot > 0) {\n\t\t\t\tconst t = shiftedFrame / (fps ?? 24);\n\t\t\t\tcamera = Camera3D.applyCameraShake(camera, t, {\n\t\t\t\t\ttranslationAmplitude: shakeTrans,\n\t\t\t\t\trotationAmplitude: shakeRot,\n\t\t\t\t\tfrequency: camOp?.shake?.frequency ?? 1.5,\n\t\t\t\t\toctaves: camOp?.shake?.octaves ?? 3,\n\t\t\t\t\tseed: camOp?.shake?.seed ?? 42\n\t\t\t\t});\n\t\t\t}\n\t\t\tdofEnabled = Boolean(camOp?.dof?.enabled || camStub?.focusDistance !== void 0);\n\t\t\tif (dofEnabled) {\n\t\t\t\tcamera.focusDistance = camStub?.focusDistance ?? camOp?.dof?.focusDistance ?? Vector3Math.distance(camera.eye, camera.target);\n\t\t\t\tcamera.fStop = camStub?.fStop ?? camOp?.dof?.fStop ?? 2.8;\n\t\t\t\tcamera.maxBlurRadius = camStub?.maxBlurRadius ?? camOp?.dof?.maxBlurRadius ?? 24;\n\t\t\t}\n\t\t\tfor (const lvm of lightVMs) {\n\t\t\t\tconst lop = lvm.operation;\n\t\t\t\tconst targetId = lop.id || lop.inputHandleId;\n\t\t\t\tconst target = targetId ? targetsById[targetId] : void 0;\n\t\t\t\tif (target?.hidden || lop.hidden) continue;\n\t\t\t\tif (isVideoMode) {\n\t\t\t\t\tconst startFrame = lop.startFrame ?? 0;\n\t\t\t\t\tconst durationFrames = lop.durationFrames;\n\t\t\t\t\tif (shiftedFrame < startFrame) continue;\n\t\t\t\t\tif (durationFrames !== void 0 && shiftedFrame >= startFrame + durationFrames) continue;\n\t\t\t\t}\n\t\t\t\tconst lightType = target?.lightType ?? lop.lightType ?? \"point\";\n\t\t\t\tconst color = parseColor(target?.color ?? lop.color ?? \"#ffffff\");\n\t\t\t\tconst intensity = target?.intensity ?? lop.intensity ?? 1;\n\t\t\t\tconst x = target?.x ?? lop.x ?? 0;\n\t\t\t\tconst y = target?.y ?? lop.y ?? 0;\n\t\t\t\tconst z = target?.z ?? lop.z ?? 0;\n\t\t\t\tconst targetX = target?.targetX ?? lop.targetX ?? 0;\n\t\t\t\tconst targetY = target?.targetY ?? lop.targetY ?? 0;\n\t\t\t\tconst targetZ = target?.targetZ ?? lop.targetZ ?? 0;\n\t\t\t\tconst radius = target?.radius ?? lop.radius ?? 1e3;\n\t\t\t\tconst angle = target?.angle ?? lop.angle ?? 45;\n\t\t\t\tconst penumbra = target?.penumbra ?? lop.penumbra ?? .2;\n\t\t\t\tconst decay = target?.decay ?? lop.decay ?? 1;\n\t\t\t\tsceneLights.push({\n\t\t\t\t\ttype: lightType,\n\t\t\t\t\tcolor,\n\t\t\t\t\tintensity,\n\t\t\t\t\tposition: [\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t\tz\n\t\t\t\t\t],\n\t\t\t\t\ttarget: [\n\t\t\t\t\t\ttargetX,\n\t\t\t\t\t\ttargetY,\n\t\t\t\t\t\ttargetZ\n\t\t\t\t\t],\n\t\t\t\t\tradius,\n\t\t\t\t\tangle,\n\t\t\t\t\tpenumbra,\n\t\t\t\t\tdecay\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst pending3DItems = [];\n\t\tconst flush3DPass = (curTex, curView, curExcludes) => {\n\t\t\tif (pending3DItems.length === 0 || !camera) return {\n\t\t\t\tfinalTex: curTex,\n\t\t\t\tfinalView: curView\n\t\t\t};\n\t\t\tconst r3d = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\tfor (const item of pending3DItems) if (item.kind === \"mesh\" && item.opts.audioDeform) item.meshBuffers = r3d.deformMesh(encoder, item.mesh, item.opts.audioDeform);\n\t\t\tconst itemTextures = pending3DItems.map((q) => q.kind === \"quad\" ? q.texture : q.texture).filter((t) => Boolean(t));\n\t\t\tconst scene3dTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [\n\t\t\t\tcurTex,\n\t\t\t\ttargetTexture,\n\t\t\t\t...curExcludes,\n\t\t\t\t...itemTextures\n\t\t\t]);\n\t\t\tconst scene3dView = scene3dTex.createView();\n\t\t\tlet linearDepthTex;\n\t\t\tlet linearDepthView;\n\t\t\tif (dofEnabled) {\n\t\t\t\tlinearDepthTex = r3d.getOrCreateLinearDepthTexture(nativeWidth, nativeHeight);\n\t\t\t\tlinearDepthView = linearDepthTex.createView();\n\t\t\t}\n\t\t\tconst { pass: pass3d, cameraBindGroup, cameraBuffer, lightsBindGroup } = r3d.beginPass(encoder, scene3dView, nativeWidth, nativeHeight, camera, \"clear\", {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, linearDepthView, sceneLights);\n\t\t\tfor (const item of pending3DItems) if (item.kind === \"quad\") r3d.drawTextureQuad(pass3d, cameraBindGroup, lightsBindGroup, item.texture, item.opts, dofEnabled);\n\t\t\telse if (item.kind === \"slug\") r3d.drawSlugText(pass3d, cameraBindGroup, lightsBindGroup, item.batches, item.opts, item.stackBase, dofEnabled);\n\t\t\telse if (item.kind === \"mesh\") r3d.drawMesh3D(pass3d, cameraBindGroup, lightsBindGroup, item.meshBuffers ?? item.mesh, item.texture, item.opts, dofEnabled);\n\t\t\tpass3d.end();\n\t\t\tlet final3dTex = scene3dTex;\n\t\t\tif (dofEnabled && linearDepthTex) {\n\t\t\t\tconst dofResultTex = ctx.renderer.getTemporaryTexture(nativeWidth, nativeHeight, [\n\t\t\t\t\tcurTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\tscene3dTex,\n\t\t\t\t\t...curExcludes\n\t\t\t\t]);\n\t\t\t\tr3d.applyDepthOfField(encoder, scene3dTex, linearDepthTex, dofResultTex.createView(), cameraBuffer);\n\t\t\t\tfinal3dTex = dofResultTex;\n\t\t\t}\n\t\t\tconst nextTex = ctx.renderer.composite(encoder, curTex, final3dTex, \"normal\", [targetTexture, ...curExcludes]);\n\t\t\tpending3DItems.length = 0;\n\t\t\treturn {\n\t\t\t\tfinalTex: nextTex,\n\t\t\t\tfinalView: nextTex.createView()\n\t\t\t};\n\t\t};\n\t\tlet nodeIndex = 0;\n\t\tconst renderNodeTree = async (vms, initialTex, initialView, excludes, accumulatedOpacity = 1, parentMatrix = new DOMMatrix(), parentRect = null, targetW = nativeWidth, targetH = nativeHeight, parent3DMatrix = null, isRootScene = false) => {\n\t\t\tconst sorted = [...vms].sort((a, b) => {\n\t\t\t\treturn (a.operation?.zIndex ?? 0) - (b.operation?.zIndex ?? 0);\n\t\t\t});\n\t\t\tlet activeTex = initialTex;\n\t\t\tlet activeView = initialView;\n\t\t\tlet activeExcludes = excludes;\n\t\t\tfor (const child of sorted) {\n\t\t\t\tconst lop = child.operation;\n\t\t\t\tif (lop.kind === \"camera\" || lop.kind === \"light\") continue;\n\t\t\t\tconst targetId = lop.id || lop.inputHandleId;\n\t\t\t\tconst target = targetId ? targetsById[targetId] : void 0;\n\t\t\t\tconst isChild3D = Boolean(target?.is3D ?? lop.is3D) || Boolean(camera && ((target?.z ?? lop.z ?? 0) !== 0 || lop.is3D)) || Boolean(parent3DMatrix);\n\t\t\t\tif (isRootScene && !isChild3D && pending3DItems.length > 0) {\n\t\t\t\t\tconst flushed = flush3DPass(activeTex, activeView, activeExcludes);\n\t\t\t\t\tif (flushed.finalTex !== activeTex) activeExcludes = [...activeExcludes, flushed.finalTex];\n\t\t\t\t\tactiveTex = flushed.finalTex;\n\t\t\t\t\tactiveView = flushed.finalView;\n\t\t\t\t}\n\t\t\t\tif (lop.op !== \"CompositorLayer\") {\n\t\t\t\t\tawait drawChild(child, {\n\t\t\t\t\t\tcontainerWidth: targetW,\n\t\t\t\t\t\tcontainerHeight: targetH,\n\t\t\t\t\t\trenderId: `${props.renderId}-c${nodeIndex}-${lop.op}`,\n\t\t\t\t\t\tfps,\n\t\t\t\t\t\tisVideoMode,\n\t\t\t\t\t\tframe: shiftedFrame,\n\t\t\t\t\t\tcompositionFrame,\n\t\t\t\t\t\texcludeTextures: [targetTexture, ...activeExcludes]\n\t\t\t\t\t}, activeView, activeTex, targetW, targetH);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tnodeIndex += 1;\n\t\t\t\tconst res = await renderLayerVM(child, nodeIndex, activeTex, activeView, activeExcludes, accumulatedOpacity, parentMatrix, parentRect, targetW, targetH, parent3DMatrix, isRootScene);\n\t\t\t\tif (res) {\n\t\t\t\t\tif (res.finalTex !== activeTex) activeExcludes = [...activeExcludes, res.finalTex];\n\t\t\t\t\tactiveTex = res.finalTex;\n\t\t\t\t\tactiveView = res.finalView;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isRootScene && pending3DItems.length > 0) {\n\t\t\t\tconst flushed = flush3DPass(activeTex, activeView, activeExcludes);\n\t\t\t\tif (flushed.finalTex !== activeTex) activeExcludes = [...activeExcludes, flushed.finalTex];\n\t\t\t\tactiveTex = flushed.finalTex;\n\t\t\t\tactiveView = flushed.finalView;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tfinalTex: activeTex,\n\t\t\t\tfinalView: activeView\n\t\t\t};\n\t\t};\n\t\tconst renderLayerVM = async (nodeVM, i, destTex, destView, baseExcludes, accumulatedOpacity, parentMatrix, parentRect, targetW = nativeWidth, targetH = nativeHeight, parent3DMatrix = null, isRootScene = false) => {\n\t\t\tconst excludes = [...baseExcludes, ...pending3DItems.map((q) => q.texture).filter((t) => Boolean(t))];\n\t\t\tconst lop = nodeVM.operation;\n\t\t\tif (lop.kind === \"camera\" || lop.kind === \"light\") return;\n\t\t\tconst targetId = lop.id || lop.inputHandleId;\n\t\t\tconst target = targetId ? targetsById[targetId] : void 0;\n\t\t\tif (target?.hidden || lop.hidden) return;\n\t\t\tconst kind = lop.kind;\n\t\t\tconst isContainer = kind === \"flex\" || kind === \"block\" || kind === \"box\";\n\t\t\tif (isVideoMode) {\n\t\t\t\tconst startFrame = lop.startFrame ?? 0;\n\t\t\t\tconst durationFrames = lop.durationFrames;\n\t\t\t\tif (shiftedFrame < startFrame) return;\n\t\t\t\tif (durationFrames !== void 0 && shiftedFrame >= startFrame + durationFrames) return;\n\t\t\t}\n\t\t\tif (kind === \"model3d\") {\n\t\t\t\tconst r3d = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\t\tlet modelSrc = lop.modelData ?? lop.src;\n\t\t\t\tif (!modelSrc && lop.text3dOptions) {\n\t\t\t\t\tconst tOpts = lop.text3dOptions;\n\t\t\t\t\tconst font = (tOpts.fontFamily ? SlugFontCache.getParsed(tOpts.fontFamily) : null) ?? SlugFontCache.getParsed(\"Inter\") ?? SlugFontCache.getParsed(\"Unbounded\") ?? SlugFontCache.getFirstParsed();\n\t\t\t\t\tif (font) {\n\t\t\t\t\t\tmodelSrc = generateExtrudedTextGeometry({\n\t\t\t\t\t\t\t...tOpts,\n\t\t\t\t\t\t\tfont\n\t\t\t\t\t\t}).modelData;\n\t\t\t\t\t\tlop.modelData = modelSrc;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!modelSrc) return;\n\t\t\t\tlet model;\n\t\t\t\ttry {\n\t\t\t\t\tmodel = typeof modelSrc === \"object\" && modelSrc !== null && \"meshes\" in modelSrc ? modelSrc : r3d.loadModel(modelSrc, lop.modelFormat ?? \"auto\", {\n\t\t\t\t\t\tcenter: lop.center,\n\t\t\t\t\t\tnormalizeSize: lop.normalizeSize\n\t\t\t\t\t});\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error(\"Failed to load 3D model:\", err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!model || model.meshes.length === 0) return;\n\t\t\t\tconst posX = target?.x ?? lop.x ?? 0;\n\t\t\t\tconst posY = target?.y ?? lop.y ?? 0;\n\t\t\t\tconst posZ = target?.z ?? lop.z ?? 0;\n\t\t\t\tconst rotX = target?.rotateX ?? lop.rotateX ?? 0;\n\t\t\t\tconst rotY = target?.rotateY ?? lop.rotateY ?? 0;\n\t\t\t\tconst rotZ = (target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : target?.rotation ?? lop.rotation ?? 0;\n\t\t\t\tconst sc = target?.scale ?? lop.scale ?? 1;\n\t\t\t\tconst scX = (target?.scaleX ?? lop.scaleX ?? 1) * sc;\n\t\t\t\tconst scY = (target?.scaleY ?? lop.scaleY ?? 1) * sc;\n\t\t\t\tconst scZ = (target?.scaleZ ?? lop.scaleZ ?? 1) * sc;\n\t\t\t\tlet localM = Matrix4Math.identity();\n\t\t\t\tlocalM = Matrix4Math.multiply(localM, Matrix4Math.translate(posX, posY, posZ));\n\t\t\t\tconst rxRad = rotX * Math.PI / 180;\n\t\t\t\tconst ryRad = rotY * Math.PI / 180;\n\t\t\t\tconst rzRad = rotZ * Math.PI / 180;\n\t\t\t\tif (rzRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateZ(rzRad));\n\t\t\t\tif (ryRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateY(ryRad));\n\t\t\t\tif (rxRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateX(rxRad));\n\t\t\t\tlocalM = Matrix4Math.multiply(localM, Matrix4Math.scale(scX, scY, scZ));\n\t\t\t\tconst finalModelMatrix = parent3DMatrix ? Matrix4Math.multiply(parent3DMatrix, localM) : localM;\n\t\t\t\tconst colorParsed = target?.colorTint || target?.color || lop.colorTint || lop.color ? parseColor(target?.colorTint ?? target?.color ?? lop.colorTint ?? lop.color) : void 0;\n\t\t\t\tconst colorTint = colorParsed ? [\n\t\t\t\t\tcolorParsed.r,\n\t\t\t\t\tcolorParsed.g,\n\t\t\t\t\tcolorParsed.b,\n\t\t\t\t\tcolorParsed.a\n\t\t\t\t] : [\n\t\t\t\t\t1,\n\t\t\t\t\t1,\n\t\t\t\t\t1,\n\t\t\t\t\t1\n\t\t\t\t];\n\t\t\t\tconst modelOpacity = (target?.opacity ?? lop.opacity ?? 1) * accumulatedOpacity;\n\t\t\t\tlet skinningMatrices;\n\t\t\t\tconst animProgress = target?.animationProgress ?? lop.animationProgress ?? 0;\n\t\t\t\tconst animTime = target?.animationTime ?? lop.animationTime ?? 0;\n\t\t\t\tconst animSpeed = target?.animationSpeed ?? lop.animationSpeed ?? 1;\n\t\t\t\tconst clip = (lop.animationName ? model.animations.find((a) => a.name === lop.animationName) : void 0) ?? model.animations[0];\n\t\t\t\tlet clipSec = 0;\n\t\t\t\tif (clip && clip.duration > 0) {\n\t\t\t\t\tclipSec = animProgress > 0 ? animProgress * clip.duration : animTime + (shiftedFrame ?? 0) / (fps || 30) * animSpeed;\n\t\t\t\t\tif (lop.loop ?? true) clipSec %= clip.duration;\n\t\t\t\t}\n\t\t\t\tconst sceneRoot = Matrix4Math.multiply(finalModelMatrix, model.rootTransform ?? Matrix4Math.identity());\n\t\t\t\tconst posed = model.nodes ? poseNodes(model, clip, clipSec) : void 0;\n\t\t\t\tconst skinCache = /* @__PURE__ */ new Map();\n\t\t\t\tconst placeMesh = (mesh) => {\n\t\t\t\t\tif (!posed) return { matrix: sceneRoot };\n\t\t\t\t\tif (mesh.skin !== void 0) {\n\t\t\t\t\t\tlet joints = skinCache.get(mesh.skin);\n\t\t\t\t\t\tif (!joints) {\n\t\t\t\t\t\t\tjoints = jointMatrices(model, mesh.skin, posed);\n\t\t\t\t\t\t\tskinCache.set(mesh.skin, joints);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tmatrix: sceneRoot,\n\t\t\t\t\t\t\tjoints\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (mesh.node !== void 0) return { matrix: Matrix4Math.multiply(sceneRoot, posed[mesh.node]) };\n\t\t\t\t\treturn { matrix: sceneRoot };\n\t\t\t\t};\n\t\t\t\tif (!posed && clip && clip.duration > 0) {\n\t\t\t\t\tconst currentSec = clipSec;\n\t\t\t\t\tif (model.skeleton && model.skeleton.bones.length > 0) {\n\t\t\t\t\t\tconst numBones = Math.min(128, model.skeleton.bones.length);\n\t\t\t\t\t\tskinningMatrices = new Float32Array(2048);\n\t\t\t\t\t\tfor (let b = 0; b < 128; b++) {\n\t\t\t\t\t\t\tskinningMatrices[b * 16] = 1;\n\t\t\t\t\t\t\tskinningMatrices[b * 16 + 5] = 1;\n\t\t\t\t\t\t\tskinningMatrices[b * 16 + 10] = 1;\n\t\t\t\t\t\t\tskinningMatrices[b * 16 + 15] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const track of clip.tracks) {\n\t\t\t\t\t\t\tconst boneIdx = model.skeleton.boneIndicesByName[track.nodeName];\n\t\t\t\t\t\t\tif (boneIdx !== void 0 && boneIdx < numBones) {\n\t\t\t\t\t\t\t\tconst times = track.times;\n\t\t\t\t\t\t\t\tlet sampleIdx = 0;\n\t\t\t\t\t\t\t\tfor (let k = 0; k < times.length - 1; k++) if (currentSec >= times[k] && currentSec <= times[k + 1]) {\n\t\t\t\t\t\t\t\t\tsampleIdx = k;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst t0 = times[sampleIdx] ?? 0;\n\t\t\t\t\t\t\t\tconst t1 = times[sampleIdx + 1] ?? t0;\n\t\t\t\t\t\t\t\tconst alpha = t1 > t0 ? (currentSec - t0) / (t1 - t0) : 0;\n\t\t\t\t\t\t\t\tif (track.translations) {\n\t\t\t\t\t\t\t\t\tconst x0 = track.translations[sampleIdx * 3] ?? 0;\n\t\t\t\t\t\t\t\t\tconst y0 = track.translations[sampleIdx * 3 + 1] ?? 0;\n\t\t\t\t\t\t\t\t\tconst z0 = track.translations[sampleIdx * 3 + 2] ?? 0;\n\t\t\t\t\t\t\t\t\tconst x1 = track.translations[(sampleIdx + 1) * 3] ?? x0;\n\t\t\t\t\t\t\t\t\tconst y1 = track.translations[(sampleIdx + 1) * 3 + 1] ?? y0;\n\t\t\t\t\t\t\t\t\tconst z1 = track.translations[(sampleIdx + 1) * 3 + 2] ?? z0;\n\t\t\t\t\t\t\t\t\tconst curX = x0 + (x1 - x0) * alpha;\n\t\t\t\t\t\t\t\t\tconst curY = y0 + (y1 - y0) * alpha;\n\t\t\t\t\t\t\t\t\tconst curZ = z0 + (z1 - z0) * alpha;\n\t\t\t\t\t\t\t\t\tconst boneMat = Matrix4Math.translate(curX, curY, curZ);\n\t\t\t\t\t\t\t\t\tconst bone = model.skeleton.bones[boneIdx];\n\t\t\t\t\t\t\t\t\tconst skinMat = bone ? Matrix4Math.multiply(boneMat, bone.inverseBindMatrix) : boneMat;\n\t\t\t\t\t\t\t\t\tskinningMatrices.set(skinMat, boneIdx * 16);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst isBlend = (m) => m.materialName ? model.materials[m.materialName]?.alphaMode === \"blend\" : false;\n\t\t\t\tconst drawOrder = [...model.meshes].sort((a, b) => Number(isBlend(a)) - Number(isBlend(b)));\n\t\t\t\tfor (const mesh of drawOrder) {\n\t\t\t\t\tconst mat = mesh.materialName ? model.materials[mesh.materialName] : void 0;\n\t\t\t\t\tconst placed = placeMesh(mesh);\n\t\t\t\t\tconst meshSkin = placed.joints ?? skinningMatrices;\n\t\t\t\t\tlet meshColorTint;\n\t\t\t\t\tif (colorParsed) if (mat?.diffuseColor) meshColorTint = [\n\t\t\t\t\t\tmat.diffuseColor[0] * colorTint[0],\n\t\t\t\t\t\tmat.diffuseColor[1] * colorTint[1],\n\t\t\t\t\t\tmat.diffuseColor[2] * colorTint[2],\n\t\t\t\t\t\t(mat.diffuseColor[3] ?? 1) * colorTint[3]\n\t\t\t\t\t];\n\t\t\t\t\telse meshColorTint = colorTint;\n\t\t\t\t\telse if (mat?.diffuseColor) meshColorTint = mat.diffuseColor;\n\t\t\t\t\telse meshColorTint = [\n\t\t\t\t\t\t.8,\n\t\t\t\t\t\t.8,\n\t\t\t\t\t\t.85,\n\t\t\t\t\t\t1\n\t\t\t\t\t];\n\t\t\t\t\tconst audioDeformConfig = target?.audioDeform ?? lop.audioDeform;\n\t\t\t\t\tlet meshAudioDeform;\n\t\t\t\t\tif (audioDeformConfig) {\n\t\t\t\t\t\tconst currentSec = (shiftedFrame ?? 0) / (fps || 30);\n\t\t\t\t\t\tconst timeMs = currentSec * 1e3;\n\t\t\t\t\t\tlet latentBuffer = audioDeformConfig.latentBuffer;\n\t\t\t\t\t\tif (!latentBuffer && audioDeformConfig.audioBuffer) latentBuffer = audioDeformConfig.audioBuffer;\n\t\t\t\t\t\tif (!latentBuffer) {\n\t\t\t\t\t\t\tconst directAudio = audioDeformConfig.audioData;\n\t\t\t\t\t\t\tif (directAudio) {\n\t\t\t\t\t\t\t\tconst cacheKey = (lop.id ?? \"audio-mesh\") + \"-direct-audio\";\n\t\t\t\t\t\t\t\tlet trackCache = audioTrackLatentCache.get(cacheKey);\n\t\t\t\t\t\t\t\tif (!trackCache) {\n\t\t\t\t\t\t\t\t\tconst chs = Array.isArray(directAudio) ? directAudio : directAudio.channels;\n\t\t\t\t\t\t\t\t\tconst sRate = Array.isArray(directAudio) ? 48e3 : directAudio.sampleRate;\n\t\t\t\t\t\t\t\t\tconst totalF = Math.max(10, Math.ceil((chs[0]?.length ?? 0) / sRate * (fps || 30)) + 10);\n\t\t\t\t\t\t\t\t\ttrackCache = new AudioLatentTrackCache(chs, sRate, fps || 30, totalF);\n\t\t\t\t\t\t\t\t\taudioTrackLatentCache.set(cacheKey, trackCache);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlatentBuffer = trackCache.getGpuBuffer(ctx.device, shiftedFrame ?? 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!latentBuffer && audioDeformConfig.audioTrackId) {\n\t\t\t\t\t\t\tconst trackId = audioDeformConfig.audioTrackId;\n\t\t\t\t\t\t\tlet foundAudioUrl;\n\t\t\t\t\t\t\tconst searchVms = (list) => {\n\t\t\t\t\t\t\t\tfor (const v of list) {\n\t\t\t\t\t\t\t\t\tconst op$1 = v.operation;\n\t\t\t\t\t\t\t\t\tif (op$1) {\n\t\t\t\t\t\t\t\t\t\tif (op$1.id === trackId || op$1.inputHandleId === trackId) {\n\t\t\t\t\t\t\t\t\t\t\tfoundAudioUrl = op$1.inputHandleId || op$1.src || op$1.url;\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (v.children) searchVms(v.children);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tif (virtualMedia.children) searchVms(virtualMedia.children);\n\t\t\t\t\t\t\tif (!foundAudioUrl && (trackId.endsWith(\".mp3\") || trackId.endsWith(\".wav\") || trackId.endsWith(\".ogg\"))) foundAudioUrl = trackId;\n\t\t\t\t\t\t\tif (foundAudioUrl) try {\n\t\t\t\t\t\t\t\tlet trackCache = audioTrackLatentCache.get(foundAudioUrl);\n\t\t\t\t\t\t\t\tif (!trackCache) {\n\t\t\t\t\t\t\t\t\tconst decoded = await decodeAudioSource(foundAudioUrl);\n\t\t\t\t\t\t\t\t\tif (decoded && decoded.channels.length > 0) {\n\t\t\t\t\t\t\t\t\t\tconst sRate = decoded.sampleRate || 48e3;\n\t\t\t\t\t\t\t\t\t\tconst ch0Len = decoded.channels[0]?.length ?? 0;\n\t\t\t\t\t\t\t\t\t\tconst durationSec$1 = decoded.durationSec ?? ch0Len / sRate;\n\t\t\t\t\t\t\t\t\t\tconst totalF = Math.max(10, Math.ceil(durationSec$1 * (fps || 30)) + 10);\n\t\t\t\t\t\t\t\t\t\ttrackCache = new AudioLatentTrackCache(decoded.channels, sRate, fps || 30, totalF);\n\t\t\t\t\t\t\t\t\t\taudioTrackLatentCache.set(foundAudioUrl, trackCache);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (trackCache) latentBuffer = trackCache.getGpuBuffer(ctx.device, shiftedFrame ?? 0);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\tconsole.warn(\"[webgpu-renderer] Failed to decode audio for deformWithAudio:\", err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (latentBuffer) {\n\t\t\t\t\t\t\tlet amplitudeMultiplier = audioDeformConfig.amplitudeMultiplier ?? 1;\n\t\t\t\t\t\t\tif (typeof amplitudeMultiplier !== \"number\" && typeof amplitudeMultiplier?.get === \"function\") {\n\t\t\t\t\t\t\t\tconst frameCtx = {\n\t\t\t\t\t\t\t\t\tframe: shiftedFrame ?? 0,\n\t\t\t\t\t\t\t\t\tfps: fps || 30,\n\t\t\t\t\t\t\t\t\ttime: currentSec,\n\t\t\t\t\t\t\t\t\tduration: 0,\n\t\t\t\t\t\t\t\t\tdurationMs: 0,\n\t\t\t\t\t\t\t\t\tprogress: 0,\n\t\t\t\t\t\t\t\t\tdeltaTime: 1 / (fps || 30)\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tamplitudeMultiplier = Number(amplitudeMultiplier.get(frameCtx));\n\t\t\t\t\t\t\t} else if (typeof amplitudeMultiplier !== \"number\" && typeof amplitudeMultiplier?.value === \"number\") amplitudeMultiplier = amplitudeMultiplier.value;\n\t\t\t\t\t\t\tmeshAudioDeform = {\n\t\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\t\t...audioDeformConfig,\n\t\t\t\t\t\t\t\t\tamplitudeMultiplier: Number.isFinite(amplitudeMultiplier) ? amplitudeMultiplier : 1\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tlatentBuffer,\n\t\t\t\t\t\t\t\ttimeMs,\n\t\t\t\t\t\t\t\tsampleRate: 48e3\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst meshOpts = {\n\t\t\t\t\t\tmodelMatrix: placed.matrix,\n\t\t\t\t\t\topacity: modelOpacity * (mat?.opacity ?? 1),\n\t\t\t\t\t\tcolorTint: meshColorTint,\n\t\t\t\t\t\ttwoSided: target?.twoSided ?? lop.twoSided ?? mat?.twoSided ?? true,\n\t\t\t\t\t\twireframe: Boolean(target?.wireframe ?? lop.wireframe),\n\t\t\t\t\t\tisSkinned: Boolean(meshSkin || mesh.jointIndices && mesh.jointWeights),\n\t\t\t\t\t\tskinningMatrices: meshSkin,\n\t\t\t\t\t\tmaterial: target?.material ?? lop.material ?? mat?.shading ?? \"lit\",\n\t\t\t\t\t\tshadeColor: mat?.shadeColor,\n\t\t\t\t\t\talphaCutoff: mat?.alphaCutoff,\n\t\t\t\t\t\ttextureWrap: mat?.textureWrap,\n\t\t\t\t\t\tshininess: target?.shininess ?? lop.shininess ?? mat?.shininess ?? 32,\n\t\t\t\t\t\troughness: target?.roughness ?? lop.roughness ?? mat?.roughness,\n\t\t\t\t\t\tspecularIntensity: target?.specularIntensity ?? lop.specularIntensity ?? .5,\n\t\t\t\t\t\tambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity ?? 1,\n\t\t\t\t\t\tmetallic: target?.metallic ?? lop.metallic ?? mat?.metallic,\n\t\t\t\t\t\taudioDeform: meshAudioDeform\n\t\t\t\t\t};\n\t\t\t\t\tpending3DItems.push({\n\t\t\t\t\t\tkind: \"mesh\",\n\t\t\t\t\t\tmesh,\n\t\t\t\t\t\ttexture: mat ? await r3d.materialTexture(mat) : void 0,\n\t\t\t\t\t\topts: meshOpts\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tfinalTex: destTex,\n\t\t\t\t\tfinalView: destView\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst rect = rects[lop.id];\n\t\t\tif (!rect) {\n\t\t\t\tif (isContainer) return await renderNodeTree(nodeVM.children ?? [], destTex, destView, excludes, accumulatedOpacity, parentMatrix, parentRect, targetW, targetH, parent3DMatrix, isRootScene);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst baseX = lop.x ?? 0;\n\t\t\tconst baseY = lop.y ?? 0;\n\t\t\tconst sampledX = target?.x ?? baseX;\n\t\t\tconst sampledY = target?.y ?? baseY;\n\t\t\tlet localX = 0;\n\t\t\tlet localY = 0;\n\t\t\tif (parentRect) {\n\t\t\t\tconst localLayoutX = rect.x - parentRect.x;\n\t\t\t\tconst localLayoutY = rect.y - parentRect.y;\n\t\t\t\tlocalX = localLayoutX + (sampledX - baseX);\n\t\t\t\tlocalY = localLayoutY + (sampledY - baseY);\n\t\t\t} else {\n\t\t\t\tlocalX = rect.x + (sampledX - baseX);\n\t\t\t\tlocalY = rect.y + (sampledY - baseY);\n\t\t\t}\n\t\t\tconst scale$1 = target?.scale ?? lop.scale ?? 1;\n\t\t\tconst rotation = target?.rotation ?? lop.rotation ?? 0;\n\t\t\tconst layerOpacity = (target?.opacity ?? lop.opacity ?? 1) * accumulatedOpacity;\n\t\t\tconst rawAnimators = target?.animators ?? lop.animators;\n\t\t\tconst isPathText = kind === \"text\" && Boolean(lop.pathOptions || target?.pathOptions);\n\t\t\tconst hasKineticAnimators = kind === \"text\" && Array.isArray(rawAnimators) && rawAnimators.length > 0;\n\t\t\tconst hasFormation = kind === \"text\" && Array.isArray(rawAnimators) && rawAnimators.some((a) => {\n\t\t\t\tconst anim = a;\n\t\t\t\treturn anim?.props?.formation !== void 0 || anim?.formation !== void 0;\n\t\t\t});\n\t\t\tlet padX = 0;\n\t\t\tlet padY = 0;\n\t\t\tif (hasFormation) {\n\t\t\t\tlet formationRadius = 0;\n\t\t\t\tlet formationPitch = 0;\n\t\t\t\tfor (const a of rawAnimators) {\n\t\t\t\t\tconst anim = a;\n\t\t\t\t\tconst f = anim?.props?.formation ?? anim?.formation;\n\t\t\t\t\tif (f) {\n\t\t\t\t\t\tif (typeof f.radius === \"number\") formationRadius = Math.max(formationRadius, f.radius);\n\t\t\t\t\t\tif (typeof f.pitch === \"number\") formationPitch = Math.max(formationPitch, f.pitch);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpadX = Math.max(160, Math.ceil(formationRadius + 100));\n\t\t\t\tpadY = Math.max(100, Math.ceil(formationRadius + formationPitch * 15 + 100));\n\t\t\t} else if (!isPathText && hasKineticAnimators) {\n\t\t\t\tpadX = Math.max(80, Math.ceil(rect.width * .2));\n\t\t\t\tpadY = Math.max(50, Math.ceil(rect.height * .5));\n\t\t\t}\n\t\t\tconst layerW = isPathText ? targetW : rect.width + padX * 2;\n\t\t\tconst layerH = isPathText ? targetH : rect.height + padY * 2;\n\t\t\tif (!isPathText && hasKineticAnimators) {\n\t\t\t\tlocalX -= padX;\n\t\t\t\tlocalY -= padY;\n\t\t\t}\n\t\t\tconst anchorX = lop.anchorX ?? .5;\n\t\t\tconst anchorY = lop.anchorY ?? .5;\n\t\t\tconst localMatrix = toDOMMatrix(buildLayerMatrix({\n\t\t\t\tx: localX,\n\t\t\t\ty: localY,\n\t\t\t\twidth: layerW,\n\t\t\t\theight: layerH,\n\t\t\t\trotation,\n\t\t\t\tscale: scale$1,\n\t\t\t\tanchorX: isPathText ? anchorX * rect.width / layerW : anchorX,\n\t\t\t\tanchorY: isPathText ? anchorY * rect.height / layerH : anchorY\n\t\t\t}));\n\t\t\tconst layerMatrix = parentMatrix.multiply(localMatrix);\n\t\t\tconst blendMode = lop.blendMode || \"normal\";\n\t\t\tlet activeTex = destTex;\n\t\t\tlet activeView = destView;\n\t\t\tconst is3D = has3DTransform(target, lop);\n\t\t\tconst rotateX = target?.rotateX ?? lop.rotateX ?? 0;\n\t\t\tconst rotateY = target?.rotateY ?? lop.rotateY ?? 0;\n\t\t\tconst rotateZ = target?.rotateZ ?? lop.rotateZ ?? 0;\n\t\t\tconst translateZ = target?.translateZ ?? lop.translateZ ?? 0;\n\t\t\tconst perspective = target?.perspective ?? lop.perspective ?? 0;\n\t\t\tconst perspectiveOriginX = target?.perspectiveOriginX ?? lop.perspectiveOriginX ?? lop.anchorX ?? .5;\n\t\t\tconst perspectiveOriginY = target?.perspectiveOriginY ?? lop.perspectiveOriginY ?? lop.anchorY ?? .5;\n\t\t\tconst backfaceVisibility = target?.backfaceVisibility ?? lop.backfaceVisibility ?? \"visible\";\n\t\t\tlet quad3D = null;\n\t\t\tif (is3D) {\n\t\t\t\tconst m3d = Transform3DMath.buildLayer3DMatrix({\n\t\t\t\t\tx: localX,\n\t\t\t\t\ty: localY,\n\t\t\t\t\twidth: layerW,\n\t\t\t\t\theight: layerH,\n\t\t\t\t\trotateXDeg: rotateX,\n\t\t\t\t\trotateYDeg: rotateY,\n\t\t\t\t\trotateZDeg: rotateZ !== 0 ? rotateZ : rotation,\n\t\t\t\t\tscaleX: scale$1,\n\t\t\t\t\tscaleY: scale$1,\n\t\t\t\t\tperspectivePx: perspective,\n\t\t\t\t\toriginXRatio: perspectiveOriginX,\n\t\t\t\t\toriginYRatio: perspectiveOriginY,\n\t\t\t\t\ttranslateZPx: translateZ\n\t\t\t\t});\n\t\t\t\tlet q = Transform3DMath.projectRectangleCorners(m3d, layerW, layerH);\n\t\t\t\tif (!parentMatrix.isIdentity) q = {\n\t\t\t\t\ttopLeft: parentMatrix.transformPoint(new DOMPoint(q.topLeft.x, q.topLeft.y)),\n\t\t\t\t\ttopRight: parentMatrix.transformPoint(new DOMPoint(q.topRight.x, q.topRight.y)),\n\t\t\t\t\tbottomLeft: parentMatrix.transformPoint(new DOMPoint(q.bottomLeft.x, q.bottomLeft.y)),\n\t\t\t\t\tbottomRight: parentMatrix.transformPoint(new DOMPoint(q.bottomRight.x, q.bottomRight.y))\n\t\t\t\t};\n\t\t\t\tif (backfaceVisibility === \"hidden\" && Transform3DMath.computeSignedArea(q) < 0) return;\n\t\t\t\tquad3D = q;\n\t\t\t}\n\t\t\tconst isTrue3D = Boolean(target?.is3D ?? lop.is3D) || Boolean(camera && ((target?.z ?? lop.z ?? 0) !== 0 || lop.is3D));\n\t\t\tif (isContainer) {\n\t\t\t\tif (lop.transformStyle === \"preserve-3d\" && isTrue3D) {\n\t\t\t\t\tlet current3DMatrix = Matrix4Math.identity();\n\t\t\t\t\tconst containerX = parent3DMatrix !== null ? target?.x ?? lop.x ?? 0 : target?.x ?? lop.x ?? localX + layerW * .5;\n\t\t\t\t\tconst containerY = parent3DMatrix !== null ? target?.y ?? lop.y ?? 0 : target?.y ?? lop.y ?? localY + layerH * .5;\n\t\t\t\t\tconst containerZ = target?.z ?? lop.z ?? 0;\n\t\t\t\t\tcurrent3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.translate(containerX, containerY, containerZ));\n\t\t\t\t\tconst rxRad = (target?.rotateX ?? lop.rotateX ?? 0) * Math.PI / 180;\n\t\t\t\t\tconst ryRad = (target?.rotateY ?? lop.rotateY ?? 0) * Math.PI / 180;\n\t\t\t\t\tconst rzRad = ((target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation) * (Math.PI / 180);\n\t\t\t\t\tif (rzRad !== 0) current3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.rotateZ(rzRad));\n\t\t\t\t\tif (ryRad !== 0) current3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.rotateY(ryRad));\n\t\t\t\t\tif (rxRad !== 0) current3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.rotateX(rxRad));\n\t\t\t\t\tconst csX = (target?.scaleX ?? lop.scaleX ?? 1) * scale$1;\n\t\t\t\t\tconst csY = (target?.scaleY ?? lop.scaleY ?? 1) * scale$1;\n\t\t\t\t\tconst csZ = (target?.scaleZ ?? lop.scaleZ ?? 1) * scale$1;\n\t\t\t\t\tif (csX !== 1 || csY !== 1 || csZ !== 1) current3DMatrix = Matrix4Math.multiply(current3DMatrix, Matrix4Math.scale(csX, csY, csZ));\n\t\t\t\t\tif (parent3DMatrix) current3DMatrix = Matrix4Math.multiply(parent3DMatrix, current3DMatrix);\n\t\t\t\t\tif (nodeVM.children && nodeVM.children.length > 0) {\n\t\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children, activeTex, activeView, excludes, layerOpacity, new DOMMatrix(), null, layerW, layerH, current3DMatrix, false);\n\t\t\t\t\t\tactiveTex = res.finalTex;\n\t\t\t\t\t\tactiveView = res.finalView;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\t\tfinalView: activeView\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (isTrue3D) {\n\t\t\t\t\tconst texW$1 = Math.max(1, Math.ceil(layerW));\n\t\t\t\t\tconst texH$1 = Math.max(1, Math.ceil(layerH));\n\t\t\t\t\tconst groupExcludes$1 = [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes,\n\t\t\t\t\t\t...pending3DItems.map((q) => q.texture).filter((t) => Boolean(t))\n\t\t\t\t\t];\n\t\t\t\t\tconst groupTex$1 = ctx.renderer.getTemporaryTexture(texW$1, texH$1, groupExcludes$1);\n\t\t\t\t\tconst groupView$1 = groupTex$1.createView();\n\t\t\t\t\tctx.renderer.beginFrame(encoder, groupView$1, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, texW$1, texH$1, \"clear\").end();\n\t\t\t\t\tconst br$2 = Math.min(lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\t\t\tif (shouldPaintContainerBackground(kind, lop.background)) {\n\t\t\t\t\t\tconst bgPass = ctx.renderer.beginFrame(encoder, groupView$1, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, texW$1, texH$1, \"load\");\n\t\t\t\t\t\tctx.renderer.drawRect(bgPass, {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\t\theight: layerH\n\t\t\t\t\t\t}, lop.background, 0, { opacity: 1 });\n\t\t\t\t\t\tbgPass.end();\n\t\t\t\t\t}\n\t\t\t\t\tlet activeGroupTex$1 = groupTex$1;\n\t\t\t\t\tlet activeGroupView$1 = groupView$1;\n\t\t\t\t\tif (nodeVM.children && nodeVM.children.length > 0) {\n\t\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children, groupTex$1, groupView$1, [groupTex$1, ...groupExcludes$1], 1, new DOMMatrix(), rect, texW$1, texH$1, null, false);\n\t\t\t\t\t\tactiveGroupTex$1 = res.finalTex;\n\t\t\t\t\t\tactiveGroupView$1 = res.finalView;\n\t\t\t\t\t}\n\t\t\t\t\tconst borderResult$2 = !isTrue3D && lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br$2, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", [activeGroupTex$1, ...groupExcludes$1]) : null;\n\t\t\t\t\tif (borderResult$2) {\n\t\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, activeGroupView$1, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, texW$1, texH$1, \"load\");\n\t\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult$2.borderTex, {\n\t\t\t\t\t\t\tx: borderResult$2.ox,\n\t\t\t\t\t\t\ty: borderResult$2.oy,\n\t\t\t\t\t\t\twidth: borderResult$2.ow,\n\t\t\t\t\t\t\theight: borderResult$2.oh\n\t\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\t\tborderPass.end();\n\t\t\t\t\t}\n\t\t\t\t\tlet modelMatrix;\n\t\t\t\t\tif (parent3DMatrix) {\n\t\t\t\t\t\tlet localM = Matrix4Math.identity();\n\t\t\t\t\t\tconst childX = target?.x ?? lop.x ?? 0;\n\t\t\t\t\t\tconst childY = target?.y ?? lop.y ?? 0;\n\t\t\t\t\t\tconst childZ = target?.z ?? lop.z ?? 0;\n\t\t\t\t\t\tlocalM = Matrix4Math.multiply(localM, Matrix4Math.translate(childX, childY, childZ));\n\t\t\t\t\t\tconst rxRad = (target?.rotateX ?? lop.rotateX ?? 0) * Math.PI / 180;\n\t\t\t\t\t\tconst ryRad = (target?.rotateY ?? lop.rotateY ?? 0) * Math.PI / 180;\n\t\t\t\t\t\tconst rzRad = ((target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation) * (Math.PI / 180);\n\t\t\t\t\t\tif (rzRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateZ(rzRad));\n\t\t\t\t\t\tif (ryRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateY(ryRad));\n\t\t\t\t\t\tif (rxRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateX(rxRad));\n\t\t\t\t\t\tconst sx = layerW * scale$1;\n\t\t\t\t\t\tconst sy = layerH * scale$1;\n\t\t\t\t\t\tconst sz = target?.scaleZ ?? lop.scaleZ ?? 1;\n\t\t\t\t\t\tlocalM = Matrix4Math.multiply(localM, Matrix4Math.scale(sx, sy, sz));\n\t\t\t\t\t\tconst ax = lop.anchorX ?? .5;\n\t\t\t\t\t\tconst ay = lop.anchorY ?? .5;\n\t\t\t\t\t\tconst pivotX = .5 - ax;\n\t\t\t\t\t\tconst pivotY = .5 - ay;\n\t\t\t\t\t\tif (pivotX !== 0 || pivotY !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.translate(pivotX, pivotY, 0));\n\t\t\t\t\t\tmodelMatrix = Matrix4Math.multiply(parent3DMatrix, localM);\n\t\t\t\t\t}\n\t\t\t\t\tconst quadOpts = {\n\t\t\t\t\t\tposition: [\n\t\t\t\t\t\t\tlocalX + layerW * .5,\n\t\t\t\t\t\t\tlocalY + layerH * .5,\n\t\t\t\t\t\t\ttarget?.z ?? lop.z ?? 0\n\t\t\t\t\t\t],\n\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\theight: layerH,\n\t\t\t\t\t\ttextureExtent: [layerW / activeGroupTex$1.width, layerH / activeGroupTex$1.height],\n\t\t\t\t\t\trotation: [\n\t\t\t\t\t\t\ttarget?.rotateX ?? lop.rotateX ?? 0,\n\t\t\t\t\t\t\ttarget?.rotateY ?? lop.rotateY ?? 0,\n\t\t\t\t\t\t\t(target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation\n\t\t\t\t\t\t],\n\t\t\t\t\t\tscale: [\n\t\t\t\t\t\t\tscale$1,\n\t\t\t\t\t\t\tscale$1,\n\t\t\t\t\t\t\ttarget?.scaleZ ?? lop.scaleZ ?? 1\n\t\t\t\t\t\t],\n\t\t\t\t\t\tanchor: [lop.anchorX ?? .5, lop.anchorY ?? .5],\n\t\t\t\t\t\tborderRadius: br$2,\n\t\t\t\t\t\tborderWidth: lop.borderWidth,\n\t\t\t\t\t\tborderColor: lop.borderColor,\n\t\t\t\t\t\topacity: layerOpacity,\n\t\t\t\t\t\ttwoSided: target?.twoSided ?? lop.twoSided ?? true,\n\t\t\t\t\t\tmaterial: target?.material ?? lop.material,\n\t\t\t\t\t\tshininess: target?.shininess ?? lop.shininess,\n\t\t\t\t\t\troughness: target?.roughness ?? lop.roughness,\n\t\t\t\t\t\tspecularIntensity: target?.specularIntensity ?? lop.specularIntensity,\n\t\t\t\t\t\tambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity,\n\t\t\t\t\t\tmetallic: target?.metallic ?? lop.metallic,\n\t\t\t\t\t\t...modelMatrix && { modelMatrix }\n\t\t\t\t\t};\n\t\t\t\t\tpending3DItems.push({\n\t\t\t\t\t\tkind: \"quad\",\n\t\t\t\t\t\ttexture: activeGroupTex$1,\n\t\t\t\t\t\topts: quadOpts\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\t\tfinalView: activeView\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (is3D && quad3D) {\n\t\t\t\t\tconst texW$1 = Math.max(1, Math.ceil(layerW));\n\t\t\t\t\tconst texH$1 = Math.max(1, Math.ceil(layerH));\n\t\t\t\t\tconst groupExcludes$1 = [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t];\n\t\t\t\t\tconst groupTex$1 = ctx.renderer.getTemporaryTexture(texW$1, texH$1, groupExcludes$1);\n\t\t\t\t\tconst groupView$1 = groupTex$1.createView();\n\t\t\t\t\tctx.renderer.beginFrame(encoder, groupView$1, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, texW$1, texH$1, \"clear\").end();\n\t\t\t\t\tconst br$2 = Math.min(lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\t\t\tif (shouldPaintContainerBackground(kind, lop.background)) {\n\t\t\t\t\t\tconst bgPass = ctx.renderer.beginFrame(encoder, groupView$1, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, texW$1, texH$1, \"load\");\n\t\t\t\t\t\tctx.renderer.drawRect(bgPass, {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\t\theight: layerH\n\t\t\t\t\t\t}, lop.background, br$2, { opacity: 1 });\n\t\t\t\t\t\tbgPass.end();\n\t\t\t\t\t}\n\t\t\t\t\tlet activeGroupTex$1 = groupTex$1;\n\t\t\t\t\tlet activeGroupView$1 = groupView$1;\n\t\t\t\t\tif (nodeVM.children && nodeVM.children.length > 0) {\n\t\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children, groupTex$1, groupView$1, [groupTex$1, ...groupExcludes$1], 1, new DOMMatrix(), rect, texW$1, texH$1, null, false);\n\t\t\t\t\t\tactiveGroupTex$1 = res.finalTex;\n\t\t\t\t\t\tactiveGroupView$1 = res.finalView;\n\t\t\t\t\t}\n\t\t\t\t\tconst borderResult$2 = lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br$2, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", [activeGroupTex$1, ...groupExcludes$1]) : null;\n\t\t\t\t\tif (borderResult$2) {\n\t\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, activeGroupView$1, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, texW$1, texH$1, \"load\");\n\t\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult$2.borderTex, {\n\t\t\t\t\t\t\tx: borderResult$2.ox,\n\t\t\t\t\t\t\ty: borderResult$2.oy,\n\t\t\t\t\t\t\twidth: borderResult$2.ow,\n\t\t\t\t\t\t\theight: borderResult$2.oh\n\t\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\t\tborderPass.end();\n\t\t\t\t\t}\n\t\t\t\t\tconst container3DShutter = target?.motionBlurShutter ?? lop.motionBlurShutter ?? 0;\n\t\t\t\t\tif (container3DShutter > 0 && fps && shiftedFrame !== void 0) {\n\t\t\t\t\t\tconst currentT = shiftedFrame / fps;\n\t\t\t\t\t\tconst prevT = (shiftedFrame - 1) / fps;\n\t\t\t\t\t\ttl.seek(prevT);\n\t\t\t\t\t\tconst prevTarget = targetId ? targetsById[targetId] : void 0;\n\t\t\t\t\t\tconst prevX = prevTarget?.x ?? baseX;\n\t\t\t\t\t\tconst prevY = prevTarget?.y ?? baseY;\n\t\t\t\t\t\ttl.seek(currentT);\n\t\t\t\t\t\tconst vx = sampledX - prevX;\n\t\t\t\t\t\tconst vy = sampledY - prevY;\n\t\t\t\t\t\tif (Math.hypot(vx, vy) > .5) {\n\t\t\t\t\t\t\tactiveGroupTex$1 = ctx.renderer.applyMotionBlur(encoder, activeGroupTex$1, vx, vy, container3DShutter, 16, [\n\t\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\tactiveGroupView$1 = activeGroupTex$1.createView();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (blendMode === \"normal\" || blendMode === \"source-over\") drawProjectedQuad(ctx, encoder, activeView, activeGroupTex$1, quad3D, targetW, targetH, layerOpacity);\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst compositeExcludes$1 = [\n\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\tactiveGroupTex$1,\n\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t];\n\t\t\t\t\t\tif (borderResult$2) compositeExcludes$1.push(borderResult$2.borderTex);\n\t\t\t\t\t\tconst layerTex = ctx.renderer.getTemporaryTexture(targetW, targetH, compositeExcludes$1);\n\t\t\t\t\t\tconst layerView = layerTex.createView();\n\t\t\t\t\t\tctx.renderer.beginFrame(encoder, layerView, {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\t\t\tdrawProjectedQuad(ctx, encoder, layerView, activeGroupTex$1, quad3D, targetW, targetH, layerOpacity);\n\t\t\t\t\t\tactiveTex = ctx.renderer.composite(encoder, activeTex, layerTex, blendMode, [targetTexture, ...excludes]);\n\t\t\t\t\t\tactiveView = activeTex.createView();\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\t\tfinalView: activeView\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst shouldClip = lop.overflow !== \"visible\";\n\t\t\t\tconst scissorRect = shouldClip ? computeContainerScissor(layerMatrix, layerW, layerH) : null;\n\t\t\t\tconst clipRadius = shouldClip ? Math.min(target?.borderRadius ?? lop.borderRadius ?? 0, layerW / 2, layerH / 2) : 0;\n\t\t\t\tif ((kind === \"flex\" || kind === \"block\") && clipRadius <= 0 && !shouldPaintContainerBackground(kind, lop.background) && layerOpacity === 1 && blendMode === \"normal\" && !lop.borderWidth && !lop.borderColor && (typeof lop.relighting !== \"object\" || !lop.relighting) && (typeof lop.relight !== \"object\" || !lop.relight) && (typeof target?.relighting !== \"object\" || !target?.relighting) && (typeof target?.relight !== \"object\" || !target?.relight) && (typeof lop.deflicker !== \"object\" || !lop.deflicker) && (typeof target?.deflicker !== \"object\" || !target?.deflicker)) {\n\t\t\t\t\tif (scissorRect) ctx.renderer.pushScissor(scissorRect);\n\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children ?? [], activeTex, activeView, excludes, accumulatedOpacity, layerMatrix, rect, targetW, targetH, null, isRootScene);\n\t\t\t\t\tif (scissorRect) ctx.renderer.popScissor();\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tconst groupExcludes = [\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t];\n\t\t\t\tconst groupTex = ctx.renderer.getTemporaryTexture(targetW, targetH, groupExcludes);\n\t\t\t\tconst groupView = groupTex.createView();\n\t\t\t\tctx.renderer.beginFrame(encoder, groupView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\tconst br$1 = Math.min(target?.borderRadius ?? lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\t\tif (shouldPaintContainerBackground(kind, lop.background)) {\n\t\t\t\t\tconst bgPass = ctx.renderer.beginFrame(encoder, groupView, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\t\tctx.renderer.drawRect(bgPass, {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\theight: layerH\n\t\t\t\t\t}, lop.background, br$1, { opacity: layerOpacity });\n\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\tbgPass.end();\n\t\t\t\t}\n\t\t\t\tlet activeGroupTex = groupTex;\n\t\t\t\tlet activeGroupView = groupView;\n\t\t\t\tif (nodeVM.children && nodeVM.children.length > 0) {\n\t\t\t\t\tif (scissorRect) ctx.renderer.pushScissor(scissorRect);\n\t\t\t\t\tconst res = await renderNodeTree(nodeVM.children, groupTex, groupView, [groupTex, ...groupExcludes], layerOpacity, layerMatrix, rect, targetW, targetH, null, false);\n\t\t\t\t\tif (scissorRect) ctx.renderer.popScissor();\n\t\t\t\t\tactiveGroupTex = res.finalTex;\n\t\t\t\t\tactiveGroupView = res.finalView;\n\t\t\t\t}\n\t\t\t\tif (clipRadius > 0) {\n\t\t\t\t\tconst maskTex = ctx.renderer.getTemporaryTexture(targetW, targetH, [activeGroupTex, ...groupExcludes]);\n\t\t\t\t\tconst maskPass = ctx.renderer.beginFrame(encoder, maskTex.createView(), {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, targetW, targetH, \"clear\");\n\t\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\t\tctx.renderer.drawRect(maskPass, {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\twidth: layerW,\n\t\t\t\t\t\theight: layerH\n\t\t\t\t\t}, \"#ffffff\", clipRadius);\n\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\tmaskPass.end();\n\t\t\t\t\tactiveGroupTex = ctx.renderer.composite(encoder, activeGroupTex, maskTex, \"mask-in\", [\n\t\t\t\t\t\tactiveGroupTex,\n\t\t\t\t\t\tmaskTex,\n\t\t\t\t\t\t...groupExcludes\n\t\t\t\t\t]);\n\t\t\t\t\tactiveGroupView = activeGroupTex.createView();\n\t\t\t\t}\n\t\t\t\tconst borderResult$1 = lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br$1, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", [activeGroupTex, ...groupExcludes]) : null;\n\t\t\t\tif (borderResult$1) {\n\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, activeGroupView, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult$1.borderTex, {\n\t\t\t\t\t\tx: borderResult$1.ox,\n\t\t\t\t\t\ty: borderResult$1.oy,\n\t\t\t\t\t\twidth: borderResult$1.ow,\n\t\t\t\t\t\theight: borderResult$1.oh\n\t\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\t\tctx.renderer.popTransform();\n\t\t\t\t\tborderPass.end();\n\t\t\t\t}\n\t\t\t\tconst containerShutter = target?.motionBlurShutter ?? lop.motionBlurShutter ?? 0;\n\t\t\t\tif (containerShutter > 0 && fps && shiftedFrame !== void 0) {\n\t\t\t\t\tconst currentT = shiftedFrame / fps;\n\t\t\t\t\tconst prevT = (shiftedFrame - 1) / fps;\n\t\t\t\t\ttl.seek(prevT);\n\t\t\t\t\tconst prevTarget = targetId ? targetsById[targetId] : void 0;\n\t\t\t\t\tconst prevX = prevTarget?.x ?? baseX;\n\t\t\t\t\tconst prevY = prevTarget?.y ?? baseY;\n\t\t\t\t\ttl.seek(currentT);\n\t\t\t\t\tconst vx = sampledX - prevX;\n\t\t\t\t\tconst vy = sampledY - prevY;\n\t\t\t\t\tif (Math.hypot(vx, vy) > .5) {\n\t\t\t\t\t\tactiveGroupTex = ctx.renderer.applyMotionBlur(encoder, activeGroupTex, vx, vy, containerShutter, 16, [\n\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tactiveGroupView = activeGroupTex.createView();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst deflickerFromEffects = Array.isArray(lop.effects) ? lop.effects.find((e) => e?.op === \"TemporalDeflicker\" || e?.op === \"Deflicker\" || e?.constructor?.name === \"TemporalDeflicker\") : void 0;\n\t\t\t\tconst rawDeflicker = target?.deflicker ?? lop.deflicker ?? deflickerFromEffects;\n\t\t\t\tconst deflickerOpts$1 = typeof rawDeflicker === \"object\" && rawDeflicker !== null ? rawDeflicker : void 0;\n\t\t\t\tif (deflickerOpts$1) {\n\t\t\t\t\tconst deflickerPipe = getTemporalDeflickerPipeline(ctx.device, lop.id || `layer_${i}`);\n\t\t\t\t\tif (shiftedFrame === 0) deflickerPipe.reset();\n\t\t\t\t\tactiveGroupTex = deflickerPipe.execute(activeGroupTex, deflickerOpts$1, encoder);\n\t\t\t\t\tactiveGroupView = activeGroupTex.createView();\n\t\t\t\t}\n\t\t\t\tconst relightEffect = Array.isArray(lop.effects) ? lop.effects.find((e) => e?.op === \"Relight3D\" || e?.constructor?.name === \"Relight3D\") : void 0;\n\t\t\t\tconst rawRelight = target?.relighting ?? lop.relighting ?? (typeof lop.relight === \"object\" ? lop.relight : void 0) ?? relightEffect;\n\t\t\t\tconst relightOpts$1 = typeof rawRelight === \"object\" && rawRelight !== null ? rawRelight : void 0;\n\t\t\t\tif (relightOpts$1) {\n\t\t\t\t\tconst relightPipeline = getScreenSpaceRelightPipeline(ctx.device, ctx.renderer.format ?? \"rgba8unorm\");\n\t\t\t\t\tconst r3dInstance = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\t\t\tconst activeLights = synthesizeRelightLights(relightOpts$1, sceneLights, rect, compositionFrame, fps ?? 24);\n\t\t\t\t\tconst lightsBuffer = r3dInstance.getOrCreateLightsBuffer(activeLights);\n\t\t\t\t\tconst relitTex = ctx.renderer.getTemporaryTexture(targetW, targetH, [\n\t\t\t\t\t\tactiveGroupTex,\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t]);\n\t\t\t\t\tconst relitView = relitTex.createView();\n\t\t\t\t\tconst normalTex = relightOpts$1.normalTexture ?? relightOpts$1.normalMap;\n\t\t\t\t\trelightPipeline.execute(encoder, relitView, activeGroupTex, normalTex, lightsBuffer, {\n\t\t\t\t\t\tviewportWidth: targetW,\n\t\t\t\t\t\tviewportHeight: targetH,\n\t\t\t\t\t\tlayerX: 0,\n\t\t\t\t\t\tlayerY: 0,\n\t\t\t\t\t\troughness: resolveVal(target?.roughness ?? target?.relightRoughness ?? relightOpts$1.specularRoughness ?? relightOpts$1.roughness, .35, compositionFrame, fps ?? 24),\n\t\t\t\t\t\tspecularStrength: resolveVal(target?.specularStrength ?? target?.relightSpecularStrength ?? relightOpts$1.specularStrength, .7, compositionFrame, fps ?? 24),\n\t\t\t\t\t\tmetallic: resolveVal(target?.metallic ?? target?.relightMetallic ?? relightOpts$1.metallic, 0, compositionFrame, fps ?? 24),\n\t\t\t\t\t\tambientIntensity: resolveVal(target?.ambientIntensity ?? target?.relightAmbientIntensity ?? relightOpts$1.ambientIntensity, .15, compositionFrame, fps ?? 24),\n\t\t\t\t\t\tdepthScale: resolveVal(target?.depthScale ?? target?.relightDepthScale ?? relightOpts$1.depthScale, 1, compositionFrame, fps ?? 24),\n\t\t\t\t\t\topacity: 1\n\t\t\t\t\t}, \"clear\");\n\t\t\t\t\tactiveGroupTex = relitTex;\n\t\t\t\t\tactiveGroupView = relitView;\n\t\t\t\t}\n\t\t\t\tconst compositeExcludes = [\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t];\n\t\t\t\tif (borderResult$1) compositeExcludes.push(borderResult$1.borderTex);\n\t\t\t\tactiveTex = ctx.renderer.composite(encoder, activeTex, activeGroupTex, blendMode, compositeExcludes);\n\t\t\t\tactiveView = activeTex.createView();\n\t\t\t\treturn {\n\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\tfinalView: activeView\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!(layerW > 0 && layerH > 0)) return {\n\t\t\t\tfinalTex: activeTex,\n\t\t\t\tfinalView: activeView\n\t\t\t};\n\t\t\tconst br = Math.min(lop.borderRadius ?? lop.strokeRadius ?? 0, layerW / 2, layerH / 2);\n\t\t\tconst texW = Math.ceil(layerW);\n\t\t\tconst texH = Math.ceil(layerH);\n\t\t\tconst savedScissors = ctx.renderer.suspendScissors?.() ?? [];\n\t\t\tconst localTex = ctx.renderer.getTemporaryTexture(texW, texH, [\n\t\t\t\tactiveTex,\n\t\t\t\ttargetTexture,\n\t\t\t\t...excludes\n\t\t\t]);\n\t\t\tconst localView = localTex.createView();\n\t\t\tctx.renderer.beginFrame(encoder, localView, {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, texW, texH, \"clear\").end();\n\t\t\tlet content;\n\t\t\tlet isCaption = false;\n\t\t\tif (kind === \"media\") {\n\t\t\t\tcontent = nodeVM.children?.[0];\n\t\t\t\tisCaption = content?.operation?.dataType === \"Caption\" || lop.dataType === \"Caption\" || (content?.operation)?.srtText !== void 0;\n\t\t\t} else if (kind === \"text\") {\n\t\t\t\tconst fullText = lop.text ?? \"\";\n\t\t\t\tlet displayText = fullText;\n\t\t\t\tlet resolvedAnimators = rawAnimators;\n\t\t\t\tif (Array.isArray(rawAnimators) && rawAnimators.length > 0) resolvedAnimators = rawAnimators.map((animator, idx) => {\n\t\t\t\t\tconst a = {\n\t\t\t\t\t\t...animator,\n\t\t\t\t\t\ttransform: { ...animator.transform ?? {} }\n\t\t\t\t\t};\n\t\t\t\t\tif (idx === 0) {\n\t\t\t\t\t\tconst offsetVal = typeof target?.offset === \"number\" ? target.offset : typeof target?.animatorOffset === \"number\" ? target.animatorOffset : void 0;\n\t\t\t\t\t\tconst rangeStartVal = typeof target?.rangeStart === \"number\" ? target.rangeStart : typeof target?.animatorRangeStart === \"number\" ? target.animatorRangeStart : void 0;\n\t\t\t\t\t\tconst rangeEndVal = typeof target?.rangeEnd === \"number\" ? target.rangeEnd : typeof target?.animatorRangeEnd === \"number\" ? target.animatorRangeEnd : void 0;\n\t\t\t\t\t\tif (offsetVal !== void 0) a.offset = offsetVal;\n\t\t\t\t\t\tif (rangeStartVal !== void 0) a.rangeStart = rangeStartVal;\n\t\t\t\t\t\tif (rangeEndVal !== void 0) a.rangeEnd = rangeEndVal;\n\t\t\t\t\t\tif (Array.isArray(a.selectors)) a.selectors = a.selectors.map((s) => {\n\t\t\t\t\t\t\tif (s.type === \"range\") return {\n\t\t\t\t\t\t\t\t...s,\n\t\t\t\t\t\t\t\t...offsetVal !== void 0 ? { offset: offsetVal } : {},\n\t\t\t\t\t\t\t\t...rangeStartVal !== void 0 ? { start: rangeStartVal } : {},\n\t\t\t\t\t\t\t\t...rangeEndVal !== void 0 ? { end: rangeEndVal } : {}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\treturn s;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn a;\n\t\t\t\t});\n\t\t\t\tconst hasKineticAnimators$1 = Array.isArray(resolvedAnimators) && resolvedAnimators.length > 0;\n\t\t\t\tconst hasTypewriter = Boolean(lop.typewriter || target?.typewriter);\n\t\t\t\tconst textTrack = lop.animation?.tracks?.find((t) => t.prop === \"text\");\n\t\t\t\tif (!hasKineticAnimators$1 && !hasTypewriter && (textTrack !== void 0 || typeof target?.text === \"number\") && fullText.length > 0) {\n\t\t\t\t\tconst progress = typeof target?.text === \"number\" ? Math.max(0, Math.min(1, target.text)) : 1;\n\t\t\t\t\tif (progress >= 1) displayText = fullText;\n\t\t\t\t\telse if (progress <= 0) displayText = \"\";\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst presetType = textTrack?.keyframes?.find((k) => k.presetType)?.presetType ?? \"typewriter\";\n\t\t\t\t\t\tconst textNumeric = typeof target?.text === \"number\" ? target.text : null;\n\t\t\t\t\t\tconst isDirectCount = textNumeric !== null && textNumeric > 1.0001;\n\t\t\t\t\t\tif (presetType === \"word-reveal\" || presetType === \"karaoke\") {\n\t\t\t\t\t\t\tconst tokens = fullText.split(/(\\s+)/);\n\t\t\t\t\t\t\tconst wordIndices = [];\n\t\t\t\t\t\t\ttokens.forEach((token, idx) => {\n\t\t\t\t\t\t\t\tif (token.trim().length > 0) wordIndices.push(idx);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst visibleWordCount = isDirectCount && textNumeric !== null ? Math.min(wordIndices.length, Math.round(textNumeric)) : Math.round(wordIndices.length * progress);\n\t\t\t\t\t\t\tif (visibleWordCount === 0) displayText = \"\";\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconst lastTokenIdx = wordIndices[Math.min(wordIndices.length - 1, visibleWordCount - 1)];\n\t\t\t\t\t\t\t\tdisplayText = tokens.slice(0, lastTokenIdx + 1).join(\"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (presetType === \"line-reveal\") {\n\t\t\t\t\t\t\tconst lines = fullText.split(\"\\n\");\n\t\t\t\t\t\t\tconst visibleLineCount = isDirectCount && textNumeric !== null ? Math.min(lines.length, Math.round(textNumeric)) : Math.round(lines.length * progress);\n\t\t\t\t\t\t\tdisplayText = lines.slice(0, Math.max(0, visibleLineCount)).join(\"\\n\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst visibleChars = isDirectCount && textNumeric !== null ? Math.min(fullText.length, Math.round(textNumeric)) : Math.round(fullText.length * progress);\n\t\t\t\t\t\t\tdisplayText = fullText.slice(0, visibleChars);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontent = {\n\t\t\t\t\tmetadata: {},\n\t\t\t\t\toperation: {\n\t\t\t\t\t\top: \"text\",\n\t\t\t\t\t\ttext: displayText,\n\t\t\t\t\t\tanimators: resolvedAnimators,\n\t\t\t\t\t\tpathOptions: target?.pathOptions ?? lop.pathOptions,\n\t\t\t\t\t\ttypewriter: target?.typewriter ?? lop.typewriter,\n\t\t\t\t\t\tmarquee: target?.marquee ?? lop.marquee,\n\t\t\t\t\t\ttextProgress: typeof target?.text === \"number\" ? target.text : void 0,\n\t\t\t\t\t\tfirstMargin: target?.firstMargin ?? lop.firstMargin,\n\t\t\t\t\t\tlastMargin: target?.lastMargin ?? lop.lastMargin,\n\t\t\t\t\t\tbaselineShift: target?.baselineShift ?? lop.baselineShift,\n\t\t\t\t\t\tsignals: virtualMedia?.operation?.signals ?? virtualMedia?.signals,\n\t\t\t\t\t\tfontSize: target?.fontSize ?? lop.fontSize,\n\t\t\t\t\t\tfontFamily: lop.fontFamily,\n\t\t\t\t\t\tfontStyle: lop.fontStyle,\n\t\t\t\t\t\tfontWeight: lop.fontWeight,\n\t\t\t\t\t\tfill: target?.fill ?? target?.color ?? lop.fill,\n\t\t\t\t\t\talign: lop.align === \"start\" ? \"left\" : lop.align === \"end\" ? \"right\" : lop.align,\n\t\t\t\t\t\tverticalAlign: lop.verticalAlign,\n\t\t\t\t\t\tletterSpacing: target?.letterSpacing ?? lop.letterSpacing,\n\t\t\t\t\t\tlineHeight: lop.lineHeight,\n\t\t\t\t\t\tpadding: lop.padding,\n\t\t\t\t\t\ttextBackgroundColor: target?.textBackgroundColor ?? target?.background ?? lop.background,\n\t\t\t\t\t\tborderRadius: lop.borderRadius,\n\t\t\t\t\t\tstroke: target?.stroke ?? target?.strokeColor ?? lop.stroke,\n\t\t\t\t\t\tstrokeWidth: target?.strokeWidth ?? lop.strokeWidth,\n\t\t\t\t\t\tstrokeAlign: lop.strokeAlign,\n\t\t\t\t\t\ttextShadow: lop.textShadow,\n\t\t\t\t\t\tshadows: lop.shadows,\n\t\t\t\t\t\tx: isPathText ? 0 : padX,\n\t\t\t\t\t\ty: isPathText ? 0 : padY,\n\t\t\t\t\t\twidth: isPathText ? targetW : lop.width !== void 0 ? rect.width : void 0,\n\t\t\t\t\t\theight: isPathText ? targetH : lop.height !== void 0 ? rect.height : void 0\n\t\t\t\t\t},\n\t\t\t\t\tchildren: []\n\t\t\t\t};\n\t\t\t}\n\t\t\tlet glyphBatches = null;\n\t\t\tlet layerHasRaster = true;\n\t\t\tif (content) {\n\t\t\t\tconst contentDurationMs = getActiveMediaMetadata(content)?.durationMs ?? composeDuration;\n\t\t\t\tconst layerDurationInMS = Math.max(1, Math.round(contentDurationMs / 1e3 * (fps ?? 24))) / (fps ?? 24) * 1e3;\n\t\t\t\tconst contentIsImageCompositor = content.operation?.op === \"Compositor\" && content.operation?.dataType === \"Image\";\n\t\t\t\tconst captureGlyphs = isTrue3D && kind === \"text\";\n\t\t\t\tconst rasterDrawsBefore = ctx.renderer.rasterDrawCount;\n\t\t\t\tif (captureGlyphs) ctx.renderer.slugPipeline.beginCapture();\n\t\t\t\ttry {\n\t\t\t\t\tawait drawChild(content, {\n\t\t\t\t\t\tcontainerWidth: layerW,\n\t\t\t\t\t\tcontainerHeight: layerH,\n\t\t\t\t\t\trenderId: `${props.renderId}-l${i}`,\n\t\t\t\t\t\tdurationMs: layerDurationInMS,\n\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\tfps,\n\t\t\t\t\t\texcludeTextures: [\n\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t],\n\t\t\t\t\t\tisVideoMode: isVideoMode && !contentIsImageCompositor,\n\t\t\t\t\t\t...isVideoMode && { frame: Math.max(0, shiftedFrame - (lop.startFrame ?? 0)) + (lop.mediaStartFrame ?? lop.trimStartFrames ?? (lop.trimStartSec != null ? Math.round(lop.trimStartSec * (fps ?? 24)) : 0)) },\n\t\t\t\t\t\tcompositionFrame,\n\t\t\t\t\t\t...isCaption && {\n\t\t\t\t\t\t\tfontFamily: lop.fontFamily,\n\t\t\t\t\t\t\tfontSize: target?.fontSize ?? lop.fontSize,\n\t\t\t\t\t\t\tfontWeight: lop.fontWeight,\n\t\t\t\t\t\t\tfontStyle: lop.fontStyle,\n\t\t\t\t\t\t\tfill: lop.fill,\n\t\t\t\t\t\t\tcolor: lop.fill,\n\t\t\t\t\t\t\talign: lop.align === \"start\" ? \"left\" : lop.align === \"end\" ? \"right\" : lop.align ?? \"center\",\n\t\t\t\t\t\t\tverticalAlign: lop.verticalAlign ?? lop.textAlignVertical,\n\t\t\t\t\t\t\tlineHeight: lop.lineHeight,\n\t\t\t\t\t\t\tletterSpacing: lop.letterSpacing,\n\t\t\t\t\t\t\ttextBackgroundColor: lop.background ?? lop.textBackgroundColor,\n\t\t\t\t\t\t\tborderRadius: lop.borderRadius ?? lop.strokeRadius,\n\t\t\t\t\t\t\tstrokeRadius: lop.strokeRadius ?? lop.borderRadius,\n\t\t\t\t\t\t\tstroke: lop.stroke,\n\t\t\t\t\t\t\tstrokeWidth: lop.strokeWidth,\n\t\t\t\t\t\t\tshadows: lop.shadows,\n\t\t\t\t\t\t\tpadding: lop.padding,\n\t\t\t\t\t\t\tmaxWidth: lop.maxWidth ?? layerW\n\t\t\t\t\t\t}\n\t\t\t\t\t}, localView, localTex, texW, texH);\n\t\t\t\t} finally {\n\t\t\t\t\tif (captureGlyphs) glyphBatches = ctx.renderer.slugPipeline.endCapture();\n\t\t\t\t}\n\t\t\t\tlayerHasRaster = ctx.renderer.rasterDrawCount !== rasterDrawsBefore;\n\t\t\t} else if (kind === \"shape\") {\n\t\t\t\tconst shapePass = ctx.renderer.beginFrame(encoder, localView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\tconst shapeConfig = {\n\t\t\t\t\tshapeType: lop.shapeType ?? lop.shape ?? \"rect\",\n\t\t\t\t\twidth: layerW,\n\t\t\t\t\theight: layerH,\n\t\t\t\t\tpath: lop.d ?? lop.path,\n\t\t\t\t\tcornerRadius: target?.cornerRadius ?? lop.cornerRadius ?? lop.borderRadius ?? lop.radius ?? 0,\n\t\t\t\t\tstarPoints: lop.starPoints ?? 5,\n\t\t\t\t\tstarInnerRadiusRatio: target?.starInnerRadiusRatio ?? lop.starInnerRadiusRatio ?? .5,\n\t\t\t\t\tpolygonSides: lop.polygonSides ?? 5\n\t\t\t\t};\n\t\t\t\tconst fillType = lop.fillType ?? \"solid\";\n\t\t\t\tconst fillColor = target?.fillColor ?? target?.fill ?? lop.fillColor ?? lop.fill ?? \"#38bdf8\";\n\t\t\t\tconst color2 = target?.gradientEndColor ?? lop.gradientEndColor ?? lop.fillColor2 ?? \"#9333ea\";\n\t\t\t\tlet startX = lop.fillStartX;\n\t\t\t\tlet startY = lop.fillStartY;\n\t\t\t\tlet endX = lop.fillEndX;\n\t\t\t\tlet endY = lop.fillEndY;\n\t\t\t\tif (fillType === \"linear\" && startX === void 0 && lop.gradientAngle !== void 0) {\n\t\t\t\t\tconst rad = lop.gradientAngle * Math.PI / 180;\n\t\t\t\t\tconst cx = layerW / 2;\n\t\t\t\t\tconst cy = layerH / 2;\n\t\t\t\t\tconst half = (Math.abs(layerW * Math.cos(rad)) + Math.abs(layerH * Math.sin(rad))) / 2;\n\t\t\t\t\tstartX = cx - Math.cos(rad) * half;\n\t\t\t\t\tstartY = cy - Math.sin(rad) * half;\n\t\t\t\t\tendX = cx + Math.cos(rad) * half;\n\t\t\t\t\tendY = cy + Math.sin(rad) * half;\n\t\t\t\t}\n\t\t\t\tconst fillConfig = {\n\t\t\t\t\ttype: fillType,\n\t\t\t\t\tcolor: fillColor,\n\t\t\t\t\tcolor2,\n\t\t\t\t\tstartX,\n\t\t\t\t\tstartY,\n\t\t\t\t\tendX,\n\t\t\t\t\tendY,\n\t\t\t\t\tcx: lop.fillCx,\n\t\t\t\t\tcy: lop.fillCy,\n\t\t\t\t\tradius: lop.fillRadius\n\t\t\t\t};\n\t\t\t\tconst strokeWidth = target?.strokeWidth ?? lop.strokeWidth ?? 0;\n\t\t\t\tconst strokeColor = target?.strokeColor ?? lop.strokeColor ?? lop.stroke ?? \"#ffffff\";\n\t\t\t\tconst strokeLineCap = lop.strokeLineCap ?? \"round\";\n\t\t\t\tconst strokeDashArray = lop.strokeDashArray;\n\t\t\t\tconst strokeDashOffset = target?.strokeDashOffset ?? lop.strokeDashOffset ?? 0;\n\t\t\t\tconst trimStart = target?.trimStart ?? lop.trimStart ?? 0;\n\t\t\t\tconst trimEnd = target?.trimEnd ?? lop.trimEnd ?? 1;\n\t\t\t\tconst trimOffset = target?.trimOffset ?? lop.trimOffset ?? 0;\n\t\t\t\tctx.renderer.drawShape(shapePass, shapeConfig, fillConfig, strokeWidth > 0 ? {\n\t\t\t\t\tcolor: strokeColor,\n\t\t\t\t\twidth: strokeWidth,\n\t\t\t\t\tcap: strokeLineCap,\n\t\t\t\t\ttrimStart,\n\t\t\t\t\ttrimEnd,\n\t\t\t\t\ttrimOffset,\n\t\t\t\t\tdashArray: strokeDashArray,\n\t\t\t\t\tdashOffset: strokeDashOffset\n\t\t\t\t} : void 0);\n\t\t\t\tshapePass.end();\n\t\t\t}\n\t\t\tconst leafDeflickerEffect = Array.isArray(lop.effects) ? lop.effects.find((e) => e?.op === \"TemporalDeflicker\" || e?.constructor?.name === \"TemporalDeflicker\") : void 0;\n\t\t\tconst deflickerOpts = target?.deflicker ?? lop.deflicker ?? leafDeflickerEffect;\n\t\t\tconst leafRelightEffect = Array.isArray(lop.effects) ? lop.effects.find((e) => e?.op === \"Relight3D\" || e?.constructor?.name === \"Relight3D\") : void 0;\n\t\t\tconst rawLeafRelight = target?.relighting ?? lop.relighting ?? (typeof lop.relight === \"object\" ? lop.relight : void 0) ?? leafRelightEffect;\n\t\t\tconst relightOpts = typeof rawLeafRelight === \"object\" && rawLeafRelight !== null ? rawLeafRelight : void 0;\n\t\t\tconst shutterAngle = target?.motionBlurShutter ?? lop.motionBlurShutter ?? 0;\n\t\t\tif (glyphBatches && glyphBatches.length > 0 && (deflickerOpts || relightOpts || shutterAngle > 0)) {\n\t\t\t\tconst glyphPass = ctx.renderer.beginFrame(encoder, localView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\tctx.renderer.slugPipeline.drawBatches(glyphPass, glyphBatches, texW, texH);\n\t\t\t\tglyphPass.end();\n\t\t\t\tglyphBatches = null;\n\t\t\t\tlayerHasRaster = true;\n\t\t\t}\n\t\t\tlet finalTex = localTex;\n\t\t\tif (!isTrue3D && br > 0 && !isCaption && kind !== \"shape\") {\n\t\t\t\tconst maskTex = ctx.renderer.getTemporaryTexture(texW, texH, [\n\t\t\t\t\tlocalTex,\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t]);\n\t\t\t\tconst maskView = maskTex.createView();\n\t\t\t\tctx.renderer.beginFrame(encoder, maskView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, texW, texH, \"clear\").end();\n\t\t\t\tconst maskPass = ctx.renderer.beginFrame(encoder, maskView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\tctx.renderer.drawRect(maskPass, {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0,\n\t\t\t\t\twidth: layerW,\n\t\t\t\t\theight: layerH\n\t\t\t\t}, {\n\t\t\t\t\tr: 1,\n\t\t\t\t\tg: 1,\n\t\t\t\t\tb: 1,\n\t\t\t\t\ta: 1\n\t\t\t\t}, br);\n\t\t\t\tmaskPass.end();\n\t\t\t\tfinalTex = ctx.renderer.composite(encoder, localTex, maskTex, \"mask-in\", [\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t]);\n\t\t\t}\n\t\t\tif (deflickerOpts) {\n\t\t\t\tconst deflickerPipe = getTemporalDeflickerPipeline(ctx.device, lop.id || `layer_${i}`);\n\t\t\t\tif (shiftedFrame === 0) deflickerPipe.reset();\n\t\t\t\tfinalTex = deflickerPipe.execute(finalTex, deflickerOpts, encoder);\n\t\t\t}\n\t\t\tif (relightOpts) {\n\t\t\t\tconst relightPipeline = getScreenSpaceRelightPipeline(ctx.device, ctx.renderer.format ?? \"rgba8unorm\");\n\t\t\t\tconst r3dInstance = getRenderer3D(ctx.device, ctx.renderer.format ?? \"rgba8unorm\", sampleCount3d);\n\t\t\t\tconst activeLights = synthesizeRelightLights(relightOpts, sceneLights, {\n\t\t\t\t\tx: sampledX,\n\t\t\t\t\ty: sampledY,\n\t\t\t\t\twidth: texW,\n\t\t\t\t\theight: texH\n\t\t\t\t}, compositionFrame, fps ?? 24);\n\t\t\t\tconst lightsBuffer = r3dInstance.getOrCreateLightsBuffer(activeLights);\n\t\t\t\tconst relitTex = ctx.renderer.getTemporaryTexture(texW, texH, [\n\t\t\t\t\tfinalTex,\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t]);\n\t\t\t\tconst relitView = relitTex.createView();\n\t\t\t\tconst normalTex = relightOpts.normalTexture ?? relightOpts.normalMap;\n\t\t\t\trelightPipeline.execute(encoder, relitView, finalTex, normalTex, lightsBuffer, {\n\t\t\t\t\tviewportWidth: texW,\n\t\t\t\t\tviewportHeight: texH,\n\t\t\t\t\tlayerX: sampledX,\n\t\t\t\t\tlayerY: sampledY,\n\t\t\t\t\troughness: resolveVal(target?.roughness ?? target?.relightRoughness ?? relightOpts.specularRoughness ?? relightOpts.roughness, .35, compositionFrame, fps ?? 24),\n\t\t\t\t\tspecularStrength: resolveVal(target?.specularStrength ?? target?.relightSpecularStrength ?? relightOpts.specularStrength, .7, compositionFrame, fps ?? 24),\n\t\t\t\t\tmetallic: resolveVal(target?.metallic ?? target?.relightMetallic ?? relightOpts.metallic, 0, compositionFrame, fps ?? 24),\n\t\t\t\t\tambientIntensity: resolveVal(target?.ambientIntensity ?? target?.relightAmbientIntensity ?? relightOpts.ambientIntensity, .15, compositionFrame, fps ?? 24),\n\t\t\t\t\tdepthScale: resolveVal(target?.depthScale ?? target?.relightDepthScale ?? relightOpts.depthScale, 1, compositionFrame, fps ?? 24),\n\t\t\t\t\topacity: 1\n\t\t\t\t}, \"clear\");\n\t\t\t\tfinalTex = relitTex;\n\t\t\t}\n\t\t\tlet blurPadX = 0;\n\t\t\tlet blurPadY = 0;\n\t\t\tif (shutterAngle > 0 && fps && shiftedFrame !== void 0) {\n\t\t\t\tconst currentT = shiftedFrame / fps;\n\t\t\t\tconst prevT = (shiftedFrame - 1) / fps;\n\t\t\t\ttl.seek(prevT);\n\t\t\t\tconst prevTarget = targetId ? targetsById[targetId] : void 0;\n\t\t\t\tconst prevX = prevTarget?.x ?? baseX;\n\t\t\t\tconst prevY = prevTarget?.y ?? baseY;\n\t\t\t\ttl.seek(currentT);\n\t\t\t\tconst vx = sampledX - prevX;\n\t\t\t\tconst vy = sampledY - prevY;\n\t\t\t\tif (Math.hypot(vx, vy) > .5) {\n\t\t\t\t\tif (!isTrue3D && !(is3D && quad3D)) {\n\t\t\t\t\t\tconst reach = shutterAngle / 360;\n\t\t\t\t\t\tblurPadX = Math.ceil(Math.abs(vx) * reach);\n\t\t\t\t\t\tblurPadY = Math.ceil(Math.abs(vy) * reach);\n\t\t\t\t\t\tconst paddedTex = ctx.renderer.getTemporaryTexture(texW + blurPadX * 2, texH + blurPadY * 2, [\n\t\t\t\t\t\t\tfinalTex,\n\t\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t\t...excludes\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tconst padPass = ctx.renderer.beginFrame(encoder, paddedTex.createView(), {\n\t\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\t\ta: 0\n\t\t\t\t\t\t}, paddedTex.width, paddedTex.height, \"clear\");\n\t\t\t\t\t\tctx.renderer.drawTexture(padPass, finalTex, {\n\t\t\t\t\t\t\tx: blurPadX,\n\t\t\t\t\t\t\ty: blurPadY,\n\t\t\t\t\t\t\twidth: texW,\n\t\t\t\t\t\t\theight: texH\n\t\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\t\tpadPass.end();\n\t\t\t\t\t\tfinalTex = paddedTex;\n\t\t\t\t\t}\n\t\t\t\t\tconst streakPx = Math.hypot(vx, vy) * (shutterAngle / 360) * 2;\n\t\t\t\t\tconst samples = Math.min(128, Math.max(16, Math.ceil(streakPx / 2)));\n\t\t\t\t\tfinalTex = ctx.renderer.applyMotionBlur(encoder, finalTex, vx, vy, shutterAngle, samples, [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst borderExcludes = [\n\t\t\t\tlocalTex,\n\t\t\t\tfinalTex,\n\t\t\t\tactiveTex,\n\t\t\t\ttargetTexture,\n\t\t\t\t...excludes\n\t\t\t];\n\t\t\tconst borderResult = !isTrue3D && lop.borderWidth !== void 0 && lop.borderColor ? createBorderTexture(ctx, encoder, layerW, layerH, br, lop.borderWidth, lop.borderColor, lop.strokeAlign ?? \"inside\", borderExcludes) : null;\n\t\t\tif (savedScissors.length > 0) ctx.renderer.resumeScissors?.(savedScissors);\n\t\t\tif (isTrue3D) {\n\t\t\t\tconst renderedTex = finalTex;\n\t\t\t\tif (borderResult) {\n\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, renderedTex.createView(), {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult.borderTex, {\n\t\t\t\t\t\tx: borderResult.ox,\n\t\t\t\t\t\ty: borderResult.oy,\n\t\t\t\t\t\twidth: borderResult.ow,\n\t\t\t\t\t\theight: borderResult.oh\n\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\tborderPass.end();\n\t\t\t\t}\n\t\t\t\tlet modelMatrix;\n\t\t\t\tif (parent3DMatrix) {\n\t\t\t\t\tlet localM = Matrix4Math.identity();\n\t\t\t\t\tconst childX = target?.x ?? lop.x ?? 0;\n\t\t\t\t\tconst childY = target?.y ?? lop.y ?? 0;\n\t\t\t\t\tconst childZ = target?.z ?? lop.z ?? 0;\n\t\t\t\t\tlocalM = Matrix4Math.multiply(localM, Matrix4Math.translate(childX, childY, childZ));\n\t\t\t\t\tconst rxRad = (target?.rotateX ?? lop.rotateX ?? 0) * Math.PI / 180;\n\t\t\t\t\tconst ryRad = (target?.rotateY ?? lop.rotateY ?? 0) * Math.PI / 180;\n\t\t\t\t\tconst rzRad = ((target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation) * (Math.PI / 180);\n\t\t\t\t\tif (rzRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateZ(rzRad));\n\t\t\t\t\tif (ryRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateY(ryRad));\n\t\t\t\t\tif (rxRad !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.rotateX(rxRad));\n\t\t\t\t\tconst sx = layerW * scale$1;\n\t\t\t\t\tconst sy = layerH * scale$1;\n\t\t\t\t\tconst sz = target?.scaleZ ?? lop.scaleZ ?? 1;\n\t\t\t\t\tlocalM = Matrix4Math.multiply(localM, Matrix4Math.scale(sx, sy, sz));\n\t\t\t\t\tconst ax = lop.anchorX ?? .5;\n\t\t\t\t\tconst ay = lop.anchorY ?? .5;\n\t\t\t\t\tconst pivotX = .5 - ax;\n\t\t\t\t\tconst pivotY = .5 - ay;\n\t\t\t\t\tif (pivotX !== 0 || pivotY !== 0) localM = Matrix4Math.multiply(localM, Matrix4Math.translate(pivotX, pivotY, 0));\n\t\t\t\t\tmodelMatrix = Matrix4Math.multiply(parent3DMatrix, localM);\n\t\t\t\t}\n\t\t\t\tconst quadOpts = {\n\t\t\t\t\tposition: [\n\t\t\t\t\t\tlocalX + layerW * .5,\n\t\t\t\t\t\tlocalY + layerH * .5,\n\t\t\t\t\t\ttarget?.z ?? lop.z ?? 0\n\t\t\t\t\t],\n\t\t\t\t\twidth: layerW,\n\t\t\t\t\theight: layerH,\n\t\t\t\t\ttextureExtent: [layerW / texW, layerH / texH],\n\t\t\t\t\trotation: [\n\t\t\t\t\t\ttarget?.rotateX ?? lop.rotateX ?? 0,\n\t\t\t\t\t\ttarget?.rotateY ?? lop.rotateY ?? 0,\n\t\t\t\t\t\t(target?.rotateZ ?? lop.rotateZ ?? 0) !== 0 ? target?.rotateZ ?? lop.rotateZ ?? 0 : rotation\n\t\t\t\t\t],\n\t\t\t\t\tscale: [\n\t\t\t\t\t\tscale$1,\n\t\t\t\t\t\tscale$1,\n\t\t\t\t\t\ttarget?.scaleZ ?? lop.scaleZ ?? 1\n\t\t\t\t\t],\n\t\t\t\t\tanchor: [lop.anchorX ?? .5, lop.anchorY ?? .5],\n\t\t\t\t\tborderRadius: br,\n\t\t\t\t\tborderWidth: lop.borderWidth,\n\t\t\t\t\tborderColor: lop.borderColor,\n\t\t\t\t\topacity: layerOpacity,\n\t\t\t\t\ttwoSided: target?.twoSided ?? lop.twoSided ?? true,\n\t\t\t\t\tmaterial: target?.material ?? lop.material,\n\t\t\t\t\tshininess: target?.shininess ?? lop.shininess,\n\t\t\t\t\troughness: target?.roughness ?? lop.roughness,\n\t\t\t\t\tspecularIntensity: target?.specularIntensity ?? lop.specularIntensity,\n\t\t\t\t\tambientIntensity: target?.ambientIntensity ?? lop.ambientIntensity,\n\t\t\t\t\tmetallic: target?.metallic ?? lop.metallic,\n\t\t\t\t\t...modelMatrix && { modelMatrix }\n\t\t\t\t};\n\t\t\t\tconst quadHasContent = layerHasRaster || Boolean(quadOpts.borderWidth && quadOpts.borderWidth > 0 && quadOpts.borderColor);\n\t\t\t\tif (!glyphBatches || quadHasContent) pending3DItems.push({\n\t\t\t\t\tkind: \"quad\",\n\t\t\t\t\ttexture: renderedTex,\n\t\t\t\t\topts: quadOpts\n\t\t\t\t});\n\t\t\t\tif (glyphBatches && glyphBatches.length > 0) pending3DItems.push({\n\t\t\t\t\tkind: \"slug\",\n\t\t\t\t\tbatches: glyphBatches,\n\t\t\t\t\topts: quadOpts,\n\t\t\t\t\tstackBase: quadHasContent ? 1 : 0\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\tfinalView: activeView\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (is3D && quad3D) {\n\t\t\t\tconst renderedTex = finalTex;\n\t\t\t\tif (borderResult) {\n\t\t\t\t\tconst borderPass = ctx.renderer.beginFrame(encoder, renderedTex.createView(), {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, texW, texH, \"load\");\n\t\t\t\t\tctx.renderer.drawTexture(borderPass, borderResult.borderTex, {\n\t\t\t\t\t\tx: borderResult.ox,\n\t\t\t\t\t\ty: borderResult.oy,\n\t\t\t\t\t\twidth: borderResult.ow,\n\t\t\t\t\t\theight: borderResult.oh\n\t\t\t\t\t}, { opacity: 1 });\n\t\t\t\t\tborderPass.end();\n\t\t\t\t}\n\t\t\t\tif (blendMode === \"normal\" || blendMode === \"source-over\") drawProjectedQuad(ctx, encoder, activeView, renderedTex, quad3D, targetW, targetH, layerOpacity);\n\t\t\t\telse {\n\t\t\t\t\tconst layerExcludes = [\n\t\t\t\t\t\tactiveTex,\n\t\t\t\t\t\ttargetTexture,\n\t\t\t\t\t\trenderedTex,\n\t\t\t\t\t\t...excludes\n\t\t\t\t\t];\n\t\t\t\t\tif (borderResult) layerExcludes.push(borderResult.borderTex);\n\t\t\t\t\tconst layerTex = ctx.renderer.getTemporaryTexture(targetW, targetH, layerExcludes);\n\t\t\t\t\tconst layerView = layerTex.createView();\n\t\t\t\t\tctx.renderer.beginFrame(encoder, layerView, {\n\t\t\t\t\t\tr: 0,\n\t\t\t\t\t\tg: 0,\n\t\t\t\t\t\tb: 0,\n\t\t\t\t\t\ta: 0\n\t\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\t\tdrawProjectedQuad(ctx, encoder, layerView, renderedTex, quad3D, targetW, targetH, layerOpacity);\n\t\t\t\t\tactiveTex = ctx.renderer.composite(encoder, activeTex, layerTex, blendMode, [targetTexture, ...excludes]);\n\t\t\t\t\tactiveView = activeTex.createView();\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tfinalTex: activeTex,\n\t\t\t\t\tfinalView: activeView\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (blendMode === \"normal\" || blendMode === \"source-over\") {\n\t\t\t\tconst drawPass = ctx.renderer.beginFrame(encoder, activeView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\tctx.renderer.drawTexture(drawPass, finalTex, {\n\t\t\t\t\tx: -blurPadX,\n\t\t\t\t\ty: -blurPadY,\n\t\t\t\t\twidth: layerW + blurPadX * 2,\n\t\t\t\t\theight: layerH + blurPadY * 2\n\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\tif (borderResult) ctx.renderer.drawTexture(drawPass, borderResult.borderTex, {\n\t\t\t\t\tx: borderResult.ox,\n\t\t\t\t\ty: borderResult.oy,\n\t\t\t\t\twidth: borderResult.ow,\n\t\t\t\t\theight: borderResult.oh\n\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\tctx.renderer.popTransform();\n\t\t\t\tdrawPass.end();\n\t\t\t} else {\n\t\t\t\tconst layerExcludes = [\n\t\t\t\t\tfinalTex,\n\t\t\t\t\tactiveTex,\n\t\t\t\t\ttargetTexture,\n\t\t\t\t\t...excludes\n\t\t\t\t];\n\t\t\t\tif (borderResult) layerExcludes.push(borderResult.borderTex);\n\t\t\t\tconst layerTex = ctx.renderer.getTemporaryTexture(targetW, targetH, layerExcludes);\n\t\t\t\tconst layerView = layerTex.createView();\n\t\t\t\tctx.renderer.beginFrame(encoder, layerView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, targetW, targetH, \"clear\").end();\n\t\t\t\tconst drawPass = ctx.renderer.beginFrame(encoder, layerView, {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}, targetW, targetH, \"load\");\n\t\t\t\tctx.renderer.pushTransform(layerMatrix);\n\t\t\t\tctx.renderer.drawTexture(drawPass, finalTex, {\n\t\t\t\t\tx: -blurPadX,\n\t\t\t\t\ty: -blurPadY,\n\t\t\t\t\twidth: layerW + blurPadX * 2,\n\t\t\t\t\theight: layerH + blurPadY * 2\n\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\tif (borderResult) ctx.renderer.drawTexture(drawPass, borderResult.borderTex, {\n\t\t\t\t\tx: borderResult.ox,\n\t\t\t\t\ty: borderResult.oy,\n\t\t\t\t\twidth: borderResult.ow,\n\t\t\t\t\theight: borderResult.oh\n\t\t\t\t}, { opacity: layerOpacity });\n\t\t\t\tctx.renderer.popTransform();\n\t\t\t\tdrawPass.end();\n\t\t\t\tactiveTex = ctx.renderer.composite(encoder, activeTex, layerTex, blendMode, [targetTexture, ...excludes]);\n\t\t\t\tactiveView = activeTex.createView();\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tfinalTex: activeTex,\n\t\t\t\tfinalView: activeView\n\t\t\t};\n\t\t};\n\t\tconst initialExcludes = [\n\t\t\tcompTex,\n\t\t\ttargetTexture,\n\t\t\t...props.excludeTextures || []\n\t\t];\n\t\tcurrentCompTex = (await renderNodeTree(virtualMedia.children ?? [], compTex, compView, initialExcludes, 1, new DOMMatrix(), null, nativeWidth, nativeHeight, null, true)).finalTex;\n\t\tctx.renderer.popTransform();\n\t\tctx.renderer.popScissor();\n\t\tconst finalPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"load\");\n\t\tctx.renderer.drawTexture(finalPass, currentCompTex, {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: props.containerWidth ?? targetWidth,\n\t\t\theight: props.containerHeight ?? targetHeight\n\t\t}, { opacity });\n\t\targs.pass = finalPass;\n\t}\n};\nfunction createBorderTexture(ctx, encoder, w, h, br, borderWidth, borderColor, strokeAlign, excludeTextures) {\n\tif (w <= 0 || h <= 0 || !borderColor || !borderWidth || borderWidth <= 0) return null;\n\tlet ox = 0;\n\tlet oy = 0;\n\tlet ow = w;\n\tlet oh = h;\n\tlet outerRadius = br;\n\tlet innerRadius = br;\n\tif (strokeAlign === \"inside\") {\n\t\tox = 0;\n\t\toy = 0;\n\t\tow = w;\n\t\toh = h;\n\t\touterRadius = br;\n\t\tinnerRadius = Math.max(0, br - borderWidth);\n\t} else if (strokeAlign === \"outside\") {\n\t\tox = -borderWidth;\n\t\toy = -borderWidth;\n\t\tow = w + 2 * borderWidth;\n\t\toh = h + 2 * borderWidth;\n\t\touterRadius = br + borderWidth;\n\t\tinnerRadius = br;\n\t} else {\n\t\tox = -borderWidth / 2;\n\t\toy = -borderWidth / 2;\n\t\tow = w + borderWidth;\n\t\toh = h + borderWidth;\n\t\touterRadius = br + borderWidth / 2;\n\t\tinnerRadius = Math.max(0, br - borderWidth / 2);\n\t}\n\tif (br <= 0) {\n\t\touterRadius = 0;\n\t\tinnerRadius = 0;\n\t}\n\tif (ow <= 0 || oh <= 0) return null;\n\tconst borderTexW = Math.ceil(ow);\n\tconst borderTexH = Math.ceil(oh);\n\tconst outerTex = ctx.renderer.getTemporaryTexture(borderTexW, borderTexH, excludeTextures);\n\tconst outerView = outerTex.createView();\n\tctx.renderer.beginFrame(encoder, outerView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, borderTexW, borderTexH, \"clear\").end();\n\tconst outerDrawPass = ctx.renderer.beginFrame(encoder, outerView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, borderTexW, borderTexH, \"load\");\n\tctx.renderer.drawRect(outerDrawPass, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth: ow,\n\t\theight: oh\n\t}, borderColor, outerRadius);\n\touterDrawPass.end();\n\tconst innerW = ow - 2 * borderWidth;\n\tconst innerH = oh - 2 * borderWidth;\n\tif (innerW > 0 && innerH > 0) {\n\t\tconst innerTex = ctx.renderer.getTemporaryTexture(borderTexW, borderTexH, [outerTex, ...excludeTextures]);\n\t\tconst innerView = innerTex.createView();\n\t\tctx.renderer.beginFrame(encoder, innerView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, borderTexW, borderTexH, \"clear\").end();\n\t\tconst innerDrawPass = ctx.renderer.beginFrame(encoder, innerView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, borderTexW, borderTexH, \"load\");\n\t\tctx.renderer.drawRect(innerDrawPass, {\n\t\t\tx: borderWidth,\n\t\t\ty: borderWidth,\n\t\t\twidth: innerW,\n\t\t\theight: innerH\n\t\t}, {\n\t\t\tr: 1,\n\t\t\tg: 1,\n\t\t\tb: 1,\n\t\t\ta: 1\n\t\t}, innerRadius);\n\t\tinnerDrawPass.end();\n\t\treturn {\n\t\t\tborderTex: ctx.renderer.composite(encoder, outerTex, innerTex, \"mask-out\", excludeTextures),\n\t\t\tox,\n\t\t\toy,\n\t\t\tow,\n\t\t\toh\n\t\t};\n\t}\n\treturn {\n\t\tborderTex: outerTex,\n\t\tox,\n\t\toy,\n\t\tow,\n\t\toh\n\t};\n}\n\n//#endregion\n//#region src/renderers/audio-processor.ts\nconst compositorLayerAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {\n\tconst op = virtualMedia.operation;\n\tif (!op) return;\n\tconst numChannels = channels.length;\n\tif (numChannels === 0) return;\n\tconst numSamples = channels[0].length;\n\tif (numSamples === 0) return;\n\tif (op.op === \"Compositor\") {\n\t\tconst master = resolveNumber(op.volume, 1);\n\t\tif (master === 1) return;\n\t\tfor (let c = 0; c < numChannels; c++) {\n\t\t\tconst ch = channels[c];\n\t\t\tfor (let i = 0; i < ch.length; i++) ch[i] *= master;\n\t\t}\n\t\treturn;\n\t}\n\tconst volume = resolveNumber(op.volume, 1);\n\tconst muted = resolveBoolean(op.muted, false);\n\tconst animation = op.animation;\n\tconst fps = ctx?.fps ?? 24;\n\tconst tracks = animation?.tracks || [];\n\tconst hasVolumeKeys = tracks.some((t) => t.prop === \"volume\" && t.keyframes && t.keyframes.length > 0);\n\tconst hasMutedKeys = tracks.some((t) => t.prop === \"muted\" && t.keyframes && t.keyframes.length > 0);\n\tif (!hasVolumeKeys && !hasMutedKeys) return;\n\tconst { tl, stub } = compileLayerTimeline(op.id || op.inputHandleId || \"layer\", animation, volume, muted, fps);\n\tconst startTimeSec = (ctx?.elapsedMs ?? 0) / 1e3;\n\tconst subChunkSize = 128;\n\ttl.seek(startTimeSec);\n\tlet lastVol = stub.volume;\n\tlet lastMuted = stub.muted;\n\tconst baseGain = muted ? 0 : volume;\n\tfor (let i = 0; i < numSamples; i += subChunkSize) {\n\t\tconst nextI = Math.min(numSamples, i + subChunkSize);\n\t\tconst tNext = startTimeSec + nextI / sampleRate;\n\t\ttl.seek(tNext);\n\t\tconst nextVol = stub.volume;\n\t\tconst nextMuted = stub.muted;\n\t\tfor (let j = i; j < nextI; j++) {\n\t\t\tconst p = (j - i) / (nextI - i);\n\t\t\tconst currentVol = Math.min(1, Math.max(0, lastVol + (nextVol - lastVol) * p));\n\t\t\tconst finalGain = (j - i < (nextI - i) / 2 ? lastMuted : nextMuted) ? 0 : currentVol;\n\t\t\tconst relativeGain = baseGain === 0 ? 0 : finalGain / baseGain;\n\t\t\tif (relativeGain !== 1) for (let c = 0; c < numChannels; c++) channels[c][j] *= relativeGain;\n\t\t}\n\t\tlastVol = nextVol;\n\t\tlastMuted = nextMuted;\n\t}\n};\naudioRegistry.register(\"CompositorLayer\", compositorLayerAudioProcessor);\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: CompositorWebGPURenderer });\n\n//#endregion\nexport { compileLayerTimeline as a, mappedEase as c, solveHomography as i, setCachedTimeline as l, Transform3DMath as n, compileTimeline as o, has3DTransform as r, getCachedTimeline as s, renderers_default as t };\n//# sourceMappingURL=renderers-DZwweR5N.mjs.map"],"mappings":"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"}
|