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
package/dist/index.mjs
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
1
|
import "./chunk-GMkBE123.mjs";
|
|
2
|
-
import { $ as
|
|
3
|
-
import {
|
|
4
|
-
import "./renderers-CP8CFWDs-
|
|
5
|
-
import "./signals-
|
|
6
|
-
import "./renderer-
|
|
2
|
+
import { $ as TimelineTransformSchema, $t as serializeSignalData, A as MIME_TYPES, At as gradientStopsToOklab, B as OutputItemSchema, Bt as parseCssColor, C as FileDataSchema, Ct as generateId, D as HandleTypeVal, Dt as getLeafMediaType, E as Gradient, Et as getFingerprint, F as ModerationUnrefundableError, Ft as isVirtualMediaData, G as SignalGateDataSchema, Gt as reportRenderDiagnostic, H as Signal, Ht as programmaticSignal, I as MultiOutputGenericSchema, It as limitGradientStops, J as SingleOutputGenericSchema, Jt as resolveNumber, K as SignalMathDataSchema, Kt as resolveBoolean, L as NodeMetadataSchema, Lt as mixColors, M as MediaOperationSchema, Mt as isCssGradient, N as MediaSourceSchema, Nt as isEqual, O as JsonValueSchema, Ot as getMediaType, P as ModerationError, Pt as isSignal, Q as TimelineSegmentSchema, Qt as sampleColorStops, R as NodeResultSchema, Rt as normalizeColorStops, S as FileAssetSchema, St as frameSignal, T as GlobalCompositeOperation, Tt as getFileDataMetadata, U as SignalChannelMetaSchema, Ut as progressSignal, V as ProgrammaticSignal, Vt as parseCssGradient, W as SignalDataSchema, Wt as registerSignalDependency, X as TEXT_LAYER_DEFAULTS, Xt as resolveString, Y as SourceOperationSchema, Yt as resolveParam, Z as TextOperationSchema, Zt as rgbToOklab, _ as DataTypeVal, _t as deserializeSignalData, a as BaseVideoLayerPropsSchema, an as timeSignal, at as VideoStylePropsSchema, b as ExportResultSchema, bt as formatHex, c as COMPOSITOR_DEFAULTS, ct as VirtualMediaDataSchema, d as ConfigSchemaRegistry, dt as computeVideoCropRenderProps, en as signal, et as TransitionSchema, f as DATA_TYPE_EXTENSIONS, ft as computed, g as DataType, gt as dataTypeColors, h as DEFAULT_MEDIA_DIMENSION, ht as createVirtualMedia, i as BaseMediaOperationPropsSchema, in as takeRenderDiagnostics, it as VideoSpatialPropsSchema, j as MediaMetadataSchema, jt as hasOnlySingleSource, k as MAX_GRADIENT_STOPS, kt as getRenderFingerprint, l as Color, lt as appendOperation, m as DEFAULT_FPS, mt as createOutputItemSchema, n as AnyOutputUnionSchema, nn as sineSignal, nt as VideoAnimationSchema, o as CAPTION_LAYER_DEFAULTS, on as updateClockSignals, ot as VideoTextPropsSchema, p as DEFAULT_DURATION_MS, pt as cosineSignal, q as SignalStatsSchema, qt as resolveMediaMimeType, r as AudioExtractorSignalDataSchema, rn as stampResult, rt as VideoLayerTypeSchema, s as COMPOSITE_OPERATIONS, st as VideoTimingPropsSchema, t as AnimationTypeSchema, tn as signalBuilder, tt as TransitionTypeSchema, u as ConfigHandleSchema, ut as checkNodeResultCache, v as DataTypes, vt as extractSvgDimensions, w as GeneratorSignalDataSchema, wt as getActiveMediaMetadata, x as ExtendedLayerSchema, xt as frameArraySignal, y as Effect$1, yt as findSourceAsset, z as NodeVisualConfigSchema, zt as oklabToRgb } from "./dist-CbG3QxDw.mjs";
|
|
3
|
+
import { F as ensureDevice, G as loadOBJ, I as generateExtrudedTextGeometry, J as mediaDecoderCache, K as lutStore, Q as parseOBJ, R as getPrimitiveGeometry, U as loadFBX, V as inputStore, W as loadModel3D, X as parseFBX, Z as parseMTL, _ as ShadowPipeline, a as Camera3D, at as textureCache, c as Light3D, f as Path3D, h as SSAOPipeline, m as Renderer3D, n as AudioLatentTrackCache, nt as shaderStore, o as EffectPipeline, p as Renderer2D, r as AudioMeshDeformPipeline, rt as signalRegistry, s as GlassPipeline, t as AudioLatentEngine, u as MotionBlurPipeline, x as SlugPipeline, y as SlugFontCache } from "./dist-Cxi68OuY.mjs";
|
|
4
|
+
import "./renderers-CP8CFWDs-DwQTx8S7.mjs";
|
|
5
|
+
import "./signals-Bv1OweKd.mjs";
|
|
6
|
+
import "./renderer-CaaOKMSd.mjs";
|
|
7
7
|
import "./renderer-bZU_ndxf.mjs";
|
|
8
|
-
import { C as springCalculation, S as spring, _ as measureTextAsync, b as preloadFont, c as MAX_LIGHTS, d as bezier, f as computeStrokeRect, g as measureText, h as measureSpring, i as mixAudioTracks, l as Matrix4Math, m as mapBlendModeToSkia, o as Easing, p as interpolate, s as LIGHT_UNIFORM_SIZE_BYTES, u as Vector3Math, v as parseColorToRgb, x as requiresIsolation, y as preloadCompositionFonts } from "./dist-
|
|
9
|
-
import { t as AudioSignal } from "./audio-
|
|
10
|
-
import { t as FontManager } from "./fonts-
|
|
11
|
-
import "./renderer-
|
|
12
|
-
import "./renderer-
|
|
13
|
-
import "./renderer-
|
|
14
|
-
import "./renderer-
|
|
15
|
-
import "./renderer-
|
|
16
|
-
import "./renderer-
|
|
8
|
+
import { C as springCalculation, S as spring, _ as measureTextAsync, b as preloadFont, c as MAX_LIGHTS, d as bezier, f as computeStrokeRect, g as measureText, h as measureSpring, i as mixAudioTracks, l as Matrix4Math, m as mapBlendModeToSkia, o as Easing, p as interpolate, s as LIGHT_UNIFORM_SIZE_BYTES, u as Vector3Math, v as parseColorToRgb, x as requiresIsolation, y as preloadCompositionFonts } from "./dist-BAVZdFEJ.mjs";
|
|
9
|
+
import { t as AudioSignal } from "./audio-COOMNwL5.mjs";
|
|
10
|
+
import { t as FontManager } from "./fonts-C0W6TgJk.mjs";
|
|
11
|
+
import "./renderer-BIIWCg_J.mjs";
|
|
12
|
+
import "./renderer-Bfgd4N0O.mjs";
|
|
13
|
+
import "./renderer-CXn5HAnK.mjs";
|
|
14
|
+
import "./renderer-cgxO2xN6.mjs";
|
|
15
|
+
import "./renderer-Djlb4TLO.mjs";
|
|
16
|
+
import "./renderer-Dy0utCl7.mjs";
|
|
17
17
|
import "./renderer-C2n-EHxg.mjs";
|
|
18
|
-
import "./renderer-
|
|
18
|
+
import "./renderer-kwmlLQOO.mjs";
|
|
19
19
|
import { i as softLimit, n as mixSfxInto, r as renderSfx, t as encodeStereoWav } from "./audio-TAvPwzLR.mjs";
|
|
20
20
|
import { i as OpticalFlowComputePipeline, n as ControlNetMultiplexer, o as TemporalDeflickerPipeline, r as DepthNormalsComputePipeline, s as TensorPipeline, t as CannyComputePipeline } from "./dist-C_hjvkdN.mjs";
|
|
21
|
-
import { a as PoseSkeletonRenderer, c as TemporalObjectTracker, d as VisionRunner, f as analyzeSequence, h as COCO_CLASSES, i as COCO17_KEYPOINT_NAMES, l as VisionBundle, m as pinNodeToObject, n as COCO17_BONES, o as SegmentationTexturePool, p as pinNodeToLandmark, r as COCO17_KEYPOINTS, s as SpatialLandmarkTransformer, u as VisionNode } from "./renderer-
|
|
22
|
-
import { $ as
|
|
23
|
-
import "./renderer-
|
|
24
|
-
import "./renderer-
|
|
25
|
-
import "./renderer-
|
|
21
|
+
import { a as PoseSkeletonRenderer, c as TemporalObjectTracker, d as VisionRunner, f as analyzeSequence, h as COCO_CLASSES, i as COCO17_KEYPOINT_NAMES, l as VisionBundle, m as pinNodeToObject, n as COCO17_BONES, o as SegmentationTexturePool, p as pinNodeToLandmark, r as COCO17_KEYPOINTS, s as SpatialLandmarkTransformer, u as VisionNode } from "./renderer-BhZZEyFX.mjs";
|
|
22
|
+
import { $ as TextAnimatorSchema, $t as mergeAnimationTracks, A as LightTypeSchema, At as computeRangeSelectorWeight, B as SceneTransitionTypeSchema, Bt as evaluateSelectorCombination, C as FlexNodeSchema, Ct as collectNodeOps, D as LayerAnimation, Dt as computeLayout, E as KineticMarqueeConfigSchema, Et as computeCarrierContinuity, F as MediaNodeSchema, Ft as evaluateAnimationAtFrame, G as Sequence, Gt as evaluateVolumetricFormation, H as SelectorModeSchema, Ht as evaluateSpringProgress, I as Model3DNodeSchema, It as evaluateCubicBezier, J as Spatial3DPropertiesSchema, Jt as getScramblePool, K as ShapeNodeSchema, Kt as generateArcLengthLUT, L as ParticleDissolveConfigSchema, Lt as evaluateCubicBezierDerivative, M as LongShadowConfigSchema, Mt as deterministicWigglyNoise, N as MaterialTypeSchema, Nt as distanceToCurveParameter, O as LayoutNodeSchema, Ot as computeLayoutSync, P as MatteModeSchema, Pt as ellipseToCubicBeziers, Q as TextAnimatorBuilder, Qt as lintComposition, R as Scene, Rt as evaluateExpressionSelector, S as ExtendedGlyphPropertiesSchema, St as calculateSequenceTimeline, T as GlyphAnchorPointSchema, Tt as computeAnchorPivotOffset, U as SelectorShapeSchema, Ut as evaluateTrackAtFrame, V as SelectorBasedOnSchema, Vt as evaluateSkewMatrix, W as SelectorUnitsSchema, Wt as evaluateTypewriterState, X as TextAnchorConfigSchema, Xt as hoistMattes, Y as SpringPhysicsSchema, Yt as getShuffledOrder, Z as TextAnimator, _ as DynamicStrokePropertiesSchema, _t as Vec2Schema, a as AnchorPresetSchema, at as TextPathSourceSchema, b as EnvironmentPresetSchema, bt as applyStaggerToChildren, c as BloomConfigSchema, ct as TextSelectorSchema, d as CameraNodeSchema, dt as TextSpanSchema, en as parseSvgPathToCubicBeziers, et as TextCursorConfigSchema, f as CarrierHandoffConfigSchema, ft as TextWigglySelectorSchema, g as CubicBezierSegmentSchema, gt as VariableFontAxesSchema, h as CompositorProgramSchema, ht as TypingCadenceSchema, i as AnchorGroupingSchema, in as waveToCubicBeziers, it as TextPathOptionsSchema, j as LineSpacingDynamicsSchema, jt as computeStaggerDelay, k as LightNodeSchema, kt as computeLineLeadingDisplacement, l as BoxNodeSchema, lt as TextSignalSelectorSchema, m as ColorStopSchema, mt as TypewriterAnimatorSchema, n as AdvancedTextAnimatorBuilder, nn as sampleCurveGeometry, nt as TextNodeSchema, o as AnimatableGlyphPropsSchema, ot as TextRangeSelectorSchema, p as ChromaticGlitchConfigSchema, pt as ToneMappingSchema, q as SkewPropertiesSchema, qt as generatePathSegments, r as AdvancedTextAnimatorSchema, rn as samplePathChainGeometry, rt as TextPathBuilder, s as AudioSpectrumTypographySchema, st as TextScrambleConfigSchema, t as AETextAnimatorSchema, tn as sampleAudioSpectrumScale, tt as TextCursorStyleSchema, u as CameraAnimation, ut as TextSpanMarkSchema, v as EnhancedTextNodeSchema, vt as VolumetricFormationConfigSchema, w as GlyphAnchorGroupingSchema, wt as compositorToProgram, x as ExpressionSelectorSchema, xt as buildPathLUT, y as EnvironmentFogSchema, yt as VolumetricFormationModeSchema, z as SceneDefinitionSchema, zt as evaluateMarqueeOffset } from "./program-BmNKgzja.mjs";
|
|
23
|
+
import "./renderer-CdciwwMI.mjs";
|
|
24
|
+
import "./renderer-DML9qpmS.mjs";
|
|
25
|
+
import "./renderer-Bhdf90Zq.mjs";
|
|
26
26
|
import "./renderer-CQiTodg9.mjs";
|
|
27
27
|
import "./renderer-CzPWB0Ss.mjs";
|
|
28
28
|
import "./renderer-DZGtBUCx.mjs";
|
|
29
29
|
import "./renderer-BM05sB8m.mjs";
|
|
30
|
-
import "./renderer-
|
|
31
|
-
import "./renderer-
|
|
30
|
+
import "./renderer-CtyD_Xju.mjs";
|
|
31
|
+
import "./renderer-B8-kzZdP.mjs";
|
|
32
32
|
import "./renderer-ho_jXJ0H.mjs";
|
|
33
|
-
import "./renderer-
|
|
34
|
-
import "./renderer-
|
|
35
|
-
import "./renderer-
|
|
33
|
+
import "./renderer-DxTs4Iyi.mjs";
|
|
34
|
+
import "./renderer-C_TPMHiH.mjs";
|
|
35
|
+
import "./renderer-CfC_aiew.mjs";
|
|
36
36
|
import "./renderer-_uvdg48N.mjs";
|
|
37
|
-
import "./renderer-
|
|
38
|
-
import "./renderer-
|
|
37
|
+
import "./renderer-1VuQTY1Z.mjs";
|
|
38
|
+
import "./renderer-ChdLYS-G.mjs";
|
|
39
39
|
import "./renderer-CpkiHRhh.mjs";
|
|
40
|
-
import "./renderer-
|
|
41
|
-
import "./renderer-
|
|
40
|
+
import "./renderer-Bv6q84TU.mjs";
|
|
41
|
+
import "./renderer-BJ1aTkZf.mjs";
|
|
42
42
|
import "./renderer-BREIjsUU.mjs";
|
|
43
|
-
import "./renderer-
|
|
44
|
-
import "./renderer-
|
|
45
|
-
import "./renderer-
|
|
46
|
-
import "./renderer-
|
|
47
|
-
import "./renderer-
|
|
48
|
-
import "./renderer-
|
|
43
|
+
import "./renderer-D2nCGcjv.mjs";
|
|
44
|
+
import "./renderer-B8UaFNqb.mjs";
|
|
45
|
+
import "./renderer-Bc04fivZ.mjs";
|
|
46
|
+
import "./renderer-DirxsOjq.mjs";
|
|
47
|
+
import "./renderer-DpGc-N3G.mjs";
|
|
48
|
+
import "./renderer-CnXW28b9.mjs";
|
|
49
49
|
import "./renderer-CepMDQ06.mjs";
|
|
50
|
-
import "./renderer-
|
|
51
|
-
import "./renderer-
|
|
52
|
-
import "./renderer-
|
|
53
|
-
import "./renderer-
|
|
54
|
-
import { $ as StereoPanning, A as AudioReverb, B as KenBurns, C as effectFactories, D as AudioFade, E as AudioDelay, F as ColorKey, G as NoiseGenerator, H as Liquify, I as CornerPin, J as ProceduralVFX, K as Paint, L as DisplacementMap, M as ChannelMerger, N as ChannelSplitter, O as AudioNoiseGate, P as ColorBalance, Q as Rotate, R as ExtractLUT, S as Vision, T as AudioCompressor, U as MaskMath, V as LayerStyle, W as MeshWarp, X as RefractionCaustics3D, Y as RefineEdge, Z as ResizerScaler, _ as SelectiveColor, a as CustomEffect, b as TileOffset, c as GradientMap, d as Levels, et as Vignette, f as Modulate, g as SSAO, h as Relight3D, i as Curves, j as CameraParallax3D, k as AudioParametricEq, l as HalftoneScreen, m as PBRGlass, n as AudioSignalExtractor, o as DepthOfField, p as MotionBlur, q as PatchHeal, r as Crop, s as FilmGrain, t as ApplyLUT, tt as effectMeta, u as HighPass, v as ShadowsHighlights, w as Blur, x as UnsharpMask, y as TemporalDeflicker, z as Flip } from "./effects-
|
|
55
|
-
import { a as HeadlessWebGPURenderer, i as HeadlessMediaRenderer, n as renderFrameGrid, o as formatQaReport, r as resolveSamplePoints, s as renderSemaphore, t as computeGridLayout } from "./renderer-
|
|
50
|
+
import "./renderer-BDbTWSpP.mjs";
|
|
51
|
+
import "./renderer-B2ieylQ3.mjs";
|
|
52
|
+
import "./renderer-Ctk2zzfy.mjs";
|
|
53
|
+
import "./renderer-CWTpc4ff.mjs";
|
|
54
|
+
import { $ as StereoPanning, A as AudioReverb, B as KenBurns, C as effectFactories, D as AudioFade, E as AudioDelay, F as ColorKey, G as NoiseGenerator, H as Liquify, I as CornerPin, J as ProceduralVFX, K as Paint, L as DisplacementMap, M as ChannelMerger, N as ChannelSplitter, O as AudioNoiseGate, P as ColorBalance, Q as Rotate, R as ExtractLUT, S as Vision, T as AudioCompressor, U as MaskMath, V as LayerStyle, W as MeshWarp, X as RefractionCaustics3D, Y as RefineEdge, Z as ResizerScaler, _ as SelectiveColor, a as CustomEffect, b as TileOffset, c as GradientMap, d as Levels, et as Vignette, f as Modulate, g as SSAO, h as Relight3D, i as Curves, j as CameraParallax3D, k as AudioParametricEq, l as HalftoneScreen, m as PBRGlass, n as AudioSignalExtractor, o as DepthOfField, p as MotionBlur, q as PatchHeal, r as Crop, s as FilmGrain, t as ApplyLUT, tt as effectMeta, u as HighPass, v as ShadowsHighlights, w as Blur, x as UnsharpMask, y as TemporalDeflicker, z as Flip } from "./effects-DzbjFhyA.mjs";
|
|
55
|
+
import { a as HeadlessWebGPURenderer, i as HeadlessMediaRenderer, n as renderFrameGrid, o as formatQaReport, r as resolveSamplePoints, s as renderSemaphore, t as computeGridLayout } from "./renderer-RKsXlF_0.mjs";
|
|
56
56
|
import "./dist-cjs-DJ8fcQEe.mjs";
|
|
57
|
-
import { t as startPreview } from "./preview-
|
|
57
|
+
import { t as startPreview } from "./preview-BV2C4Fk6.mjs";
|
|
58
58
|
import path from "node:path";
|
|
59
59
|
import fs from "node:fs/promises";
|
|
60
60
|
import { format } from "d3-format";
|
|
@@ -986,6 +986,75 @@ function translatePath(d, dx, dy) {
|
|
|
986
986
|
|
|
987
987
|
//#endregion
|
|
988
988
|
//#region src/shapes3d.ts
|
|
989
|
+
const MATERIAL_KEYS = [
|
|
990
|
+
"material",
|
|
991
|
+
"shininess",
|
|
992
|
+
"roughness",
|
|
993
|
+
"specularIntensity",
|
|
994
|
+
"metallic",
|
|
995
|
+
"ambientIntensity",
|
|
996
|
+
"ior",
|
|
997
|
+
"transmission",
|
|
998
|
+
"dispersion",
|
|
999
|
+
"fresnelPower",
|
|
1000
|
+
"envIntensity",
|
|
1001
|
+
"emissive",
|
|
1002
|
+
"emissiveIntensity",
|
|
1003
|
+
"castShadow"
|
|
1004
|
+
];
|
|
1005
|
+
/** The material and surface options that were actually given. */
|
|
1006
|
+
function materialProps(o) {
|
|
1007
|
+
const src = o;
|
|
1008
|
+
const out = {};
|
|
1009
|
+
for (const k of MATERIAL_KEYS) if (src[k] !== void 0) out[k] = src[k];
|
|
1010
|
+
return out;
|
|
1011
|
+
}
|
|
1012
|
+
/** Mesh shading the geometry can bake in; layer materials (glass, …) apply on the node. */
|
|
1013
|
+
function meshShading(material) {
|
|
1014
|
+
return material === "lit" || material === "unlit" || material === "toon" ? material : void 0;
|
|
1015
|
+
}
|
|
1016
|
+
function primitiveNode(prefix, geometry, o) {
|
|
1017
|
+
const spec$1 = Object.fromEntries(Object.entries({
|
|
1018
|
+
...geometry,
|
|
1019
|
+
color: o.color,
|
|
1020
|
+
material: meshShading(o.material),
|
|
1021
|
+
shininess: o.shininess,
|
|
1022
|
+
roughness: o.roughness,
|
|
1023
|
+
metallic: o.metallic
|
|
1024
|
+
}).filter(([, v]) => v !== void 0));
|
|
1025
|
+
return Layer.model({
|
|
1026
|
+
id: o.id ?? autoId(prefix),
|
|
1027
|
+
modelData: getPrimitiveGeometry(spec$1),
|
|
1028
|
+
primitive3d: spec$1,
|
|
1029
|
+
is3D: true,
|
|
1030
|
+
x: o.x ?? 0,
|
|
1031
|
+
y: o.y ?? 0,
|
|
1032
|
+
z: o.z ?? 0,
|
|
1033
|
+
rotateX: o.rotateX ?? 0,
|
|
1034
|
+
rotateY: o.rotateY ?? 0,
|
|
1035
|
+
rotateZ: o.rotateZ ?? 0,
|
|
1036
|
+
scale: o.scale ?? 1,
|
|
1037
|
+
scaleX: o.scaleX ?? 1,
|
|
1038
|
+
scaleY: o.scaleY ?? 1,
|
|
1039
|
+
scaleZ: o.scaleZ ?? 1,
|
|
1040
|
+
opacity: o.opacity ?? 1,
|
|
1041
|
+
color: o.tint,
|
|
1042
|
+
material: o.material,
|
|
1043
|
+
shininess: o.shininess ?? 32,
|
|
1044
|
+
roughness: o.roughness,
|
|
1045
|
+
specularIntensity: o.specularIntensity ?? .5,
|
|
1046
|
+
ambientIntensity: o.ambientIntensity ?? 1,
|
|
1047
|
+
metallic: o.metallic,
|
|
1048
|
+
...materialProps({
|
|
1049
|
+
emissive: o.emissive,
|
|
1050
|
+
emissiveIntensity: o.emissiveIntensity,
|
|
1051
|
+
castShadow: o.castShadow
|
|
1052
|
+
}),
|
|
1053
|
+
twoSided: false,
|
|
1054
|
+
startFrame: o.startFrame,
|
|
1055
|
+
durationFrames: o.durationFrames
|
|
1056
|
+
});
|
|
1057
|
+
}
|
|
989
1058
|
/**
|
|
990
1059
|
* Attaches the faces/items handles as non-enumerable properties, like
|
|
991
1060
|
* `animate`, so they stay out of `toSpec()` and schema validation.
|
|
@@ -1058,6 +1127,11 @@ const Layer3D = {
|
|
|
1058
1127
|
roughness: cfg.roughness ?? options.roughness,
|
|
1059
1128
|
metallic: cfg.metallic ?? options.metallic,
|
|
1060
1129
|
ambientIntensity: cfg.ambientIntensity ?? options.ambientIntensity ?? 1,
|
|
1130
|
+
...materialProps({
|
|
1131
|
+
emissive: cfg.emissive ?? options.emissive,
|
|
1132
|
+
emissiveIntensity: cfg.emissiveIntensity ?? options.emissiveIntensity,
|
|
1133
|
+
castShadow: cfg.castShadow ?? options.castShadow
|
|
1134
|
+
}),
|
|
1061
1135
|
background: cfg.background ?? defaultColor,
|
|
1062
1136
|
borderRadius: cfg.borderRadius ?? 0,
|
|
1063
1137
|
borderWidth: cfg.borderWidth,
|
|
@@ -1238,6 +1312,7 @@ const Layer3D = {
|
|
|
1238
1312
|
background: options.background ?? "#3b82f6",
|
|
1239
1313
|
borderRadius: options.borderRadius ?? 0,
|
|
1240
1314
|
opacity: options.opacity ?? 1,
|
|
1315
|
+
...materialProps(options),
|
|
1241
1316
|
children: options.children ?? []
|
|
1242
1317
|
});
|
|
1243
1318
|
},
|
|
@@ -1326,6 +1401,7 @@ const Layer3D = {
|
|
|
1326
1401
|
specularIntensity: options.specularIntensity ?? .8,
|
|
1327
1402
|
ambientIntensity: options.ambientIntensity ?? 1,
|
|
1328
1403
|
metallic: options.metallic,
|
|
1404
|
+
...materialProps(options),
|
|
1329
1405
|
opacity: options.opacity ?? 1,
|
|
1330
1406
|
background: options.background,
|
|
1331
1407
|
borderRadius: options.borderRadius,
|
|
@@ -1377,6 +1453,7 @@ const Layer3D = {
|
|
|
1377
1453
|
specularIntensity: options.specularIntensity ?? .8,
|
|
1378
1454
|
ambientIntensity: options.ambientIntensity ?? 1,
|
|
1379
1455
|
metallic: options.metallic,
|
|
1456
|
+
...materialProps(options),
|
|
1380
1457
|
twoSided: options.twoSided ?? true,
|
|
1381
1458
|
text3dOptions: {
|
|
1382
1459
|
...options,
|
|
@@ -1388,6 +1465,35 @@ const Layer3D = {
|
|
|
1388
1465
|
items: [modelNode]
|
|
1389
1466
|
});
|
|
1390
1467
|
},
|
|
1468
|
+
roundedBox(options) {
|
|
1469
|
+
return primitiveNode("rounded-box", {
|
|
1470
|
+
type: "roundedBox",
|
|
1471
|
+
width: options.width,
|
|
1472
|
+
height: options.height,
|
|
1473
|
+
depth: options.depth,
|
|
1474
|
+
radius: options.radius,
|
|
1475
|
+
segments: options.segments,
|
|
1476
|
+
taper: options.taper
|
|
1477
|
+
}, options);
|
|
1478
|
+
},
|
|
1479
|
+
sphere(options) {
|
|
1480
|
+
return primitiveNode("sphere", {
|
|
1481
|
+
type: "sphere",
|
|
1482
|
+
radius: options.radius,
|
|
1483
|
+
segments: options.segments
|
|
1484
|
+
}, options);
|
|
1485
|
+
},
|
|
1486
|
+
cylinder(options) {
|
|
1487
|
+
return primitiveNode("cylinder", {
|
|
1488
|
+
type: "cylinder",
|
|
1489
|
+
radius: options.radius,
|
|
1490
|
+
radiusTop: options.radiusTop,
|
|
1491
|
+
radiusBottom: options.radiusBottom,
|
|
1492
|
+
height: options.height,
|
|
1493
|
+
segments: options.segments,
|
|
1494
|
+
openEnded: options.openEnded
|
|
1495
|
+
}, options);
|
|
1496
|
+
},
|
|
1391
1497
|
model(options = {}) {
|
|
1392
1498
|
return Layer.model(options);
|
|
1393
1499
|
},
|
|
@@ -1420,6 +1526,432 @@ const Layer3D = {
|
|
|
1420
1526
|
}
|
|
1421
1527
|
};
|
|
1422
1528
|
|
|
1529
|
+
//#endregion
|
|
1530
|
+
//#region src/transitions.ts
|
|
1531
|
+
/**
|
|
1532
|
+
* Scene sequencing with transitions. `Layer.sequence` lays scenes end to end
|
|
1533
|
+
* and overlaps neighbours by each transition's length; the transition itself
|
|
1534
|
+
* is plain keyframes (and, for wipes and irises, a track matte) merged into
|
|
1535
|
+
* the scenes, so it renders like anything else and stays editable.
|
|
1536
|
+
*/
|
|
1537
|
+
const offsetFor = (dir, w, h) => {
|
|
1538
|
+
switch (dir) {
|
|
1539
|
+
case "left": return {
|
|
1540
|
+
dx: -w,
|
|
1541
|
+
dy: 0
|
|
1542
|
+
};
|
|
1543
|
+
case "right": return {
|
|
1544
|
+
dx: w,
|
|
1545
|
+
dy: 0
|
|
1546
|
+
};
|
|
1547
|
+
case "up": return {
|
|
1548
|
+
dx: 0,
|
|
1549
|
+
dy: -h
|
|
1550
|
+
};
|
|
1551
|
+
default: return {
|
|
1552
|
+
dx: 0,
|
|
1553
|
+
dy: h
|
|
1554
|
+
};
|
|
1555
|
+
}
|
|
1556
|
+
};
|
|
1557
|
+
function spec(kind, frames, build) {
|
|
1558
|
+
return {
|
|
1559
|
+
kind,
|
|
1560
|
+
frames: Math.max(0, Math.round(frames)),
|
|
1561
|
+
build
|
|
1562
|
+
};
|
|
1563
|
+
}
|
|
1564
|
+
/**
|
|
1565
|
+
* Scene-to-scene transitions for `Layer.sequence`. `frames` is how long the
|
|
1566
|
+
* two scenes overlap; `ease` shapes the move (default "power3.inOut").
|
|
1567
|
+
*/
|
|
1568
|
+
const Transition = {
|
|
1569
|
+
cut: () => spec("cut", 0, () => ({})),
|
|
1570
|
+
crossfade: (frames = 15, ease = "sine.inOut") => spec("crossfade", frames, (c) => ({ incoming: LayerAnimation.keys("opacity", [[0, 0], [
|
|
1571
|
+
c.frames,
|
|
1572
|
+
1,
|
|
1573
|
+
ease
|
|
1574
|
+
]]) })),
|
|
1575
|
+
fadeThrough: (frames = 20, ease = "sine.inOut") => spec("fadeThrough", frames, (c) => {
|
|
1576
|
+
const half = Math.max(1, Math.floor(c.frames / 2));
|
|
1577
|
+
return {
|
|
1578
|
+
outgoing: LayerAnimation.keys("opacity", [[c.outStart, 1], [
|
|
1579
|
+
c.outStart + half,
|
|
1580
|
+
0,
|
|
1581
|
+
ease
|
|
1582
|
+
]]),
|
|
1583
|
+
incoming: LayerAnimation.keys("opacity", [
|
|
1584
|
+
[0, 0],
|
|
1585
|
+
[half, 0],
|
|
1586
|
+
[
|
|
1587
|
+
c.frames,
|
|
1588
|
+
1,
|
|
1589
|
+
ease
|
|
1590
|
+
]
|
|
1591
|
+
])
|
|
1592
|
+
};
|
|
1593
|
+
}),
|
|
1594
|
+
push: (direction = "left", frames = 18, ease = "power3.inOut") => spec("push", frames, (c) => {
|
|
1595
|
+
const { dx, dy } = offsetFor(direction, c.width, c.height);
|
|
1596
|
+
const out = LayerAnimation.create();
|
|
1597
|
+
const inc = LayerAnimation.create();
|
|
1598
|
+
if (dx !== 0) {
|
|
1599
|
+
out.keys("x", [[c.outStart, c.outRest.x], [
|
|
1600
|
+
c.outStart + c.frames,
|
|
1601
|
+
c.outRest.x + dx,
|
|
1602
|
+
ease
|
|
1603
|
+
]]);
|
|
1604
|
+
inc.keys("x", [[0, c.inRest.x - dx], [
|
|
1605
|
+
c.frames,
|
|
1606
|
+
c.inRest.x,
|
|
1607
|
+
ease
|
|
1608
|
+
]]);
|
|
1609
|
+
} else {
|
|
1610
|
+
out.keys("y", [[c.outStart, c.outRest.y], [
|
|
1611
|
+
c.outStart + c.frames,
|
|
1612
|
+
c.outRest.y + dy,
|
|
1613
|
+
ease
|
|
1614
|
+
]]);
|
|
1615
|
+
inc.keys("y", [[0, c.inRest.y - dy], [
|
|
1616
|
+
c.frames,
|
|
1617
|
+
c.inRest.y,
|
|
1618
|
+
ease
|
|
1619
|
+
]]);
|
|
1620
|
+
}
|
|
1621
|
+
return {
|
|
1622
|
+
outgoing: out,
|
|
1623
|
+
incoming: inc
|
|
1624
|
+
};
|
|
1625
|
+
}),
|
|
1626
|
+
slide: (direction = "left", frames = 18, ease = "power3.out") => spec("slide", frames, (c) => {
|
|
1627
|
+
const { dx, dy } = offsetFor(direction, c.width, c.height);
|
|
1628
|
+
const prop = dx !== 0 ? "x" : "y";
|
|
1629
|
+
const rest = dx !== 0 ? c.inRest.x : c.inRest.y;
|
|
1630
|
+
return {
|
|
1631
|
+
outgoing: LayerAnimation.keys("opacity", [[c.outStart, 1], [
|
|
1632
|
+
c.outStart + c.frames,
|
|
1633
|
+
.6,
|
|
1634
|
+
ease
|
|
1635
|
+
]]),
|
|
1636
|
+
incoming: LayerAnimation.keys(prop, [[0, rest - (dx || dy)], [
|
|
1637
|
+
c.frames,
|
|
1638
|
+
rest,
|
|
1639
|
+
ease
|
|
1640
|
+
]])
|
|
1641
|
+
};
|
|
1642
|
+
}),
|
|
1643
|
+
zoom: (frames = 18, ease = "power2.inOut") => spec("zoom", frames, (c) => ({
|
|
1644
|
+
outgoing: LayerAnimation.create().keys("scale", [[c.outStart, 1], [
|
|
1645
|
+
c.outStart + c.frames,
|
|
1646
|
+
1.25,
|
|
1647
|
+
ease
|
|
1648
|
+
]]).keys("opacity", [[c.outStart, 1], [
|
|
1649
|
+
c.outStart + c.frames,
|
|
1650
|
+
0,
|
|
1651
|
+
ease
|
|
1652
|
+
]]),
|
|
1653
|
+
incoming: LayerAnimation.create().keys("scale", [[0, .85], [
|
|
1654
|
+
c.frames,
|
|
1655
|
+
1,
|
|
1656
|
+
ease
|
|
1657
|
+
]]).keys("opacity", [[0, 0], [
|
|
1658
|
+
c.frames,
|
|
1659
|
+
1,
|
|
1660
|
+
ease
|
|
1661
|
+
]])
|
|
1662
|
+
})),
|
|
1663
|
+
whip: (direction = "left", frames = 10) => {
|
|
1664
|
+
const push = Transition.push(direction, frames, "expo.inOut");
|
|
1665
|
+
return spec("whip", frames, (c) => ({
|
|
1666
|
+
...push.build(c),
|
|
1667
|
+
sceneProps: { motionBlurShutter: 360 }
|
|
1668
|
+
}));
|
|
1669
|
+
},
|
|
1670
|
+
wipe: (direction = "left", frames = 18, ease = "power2.inOut") => spec("wipe", frames, (c) => {
|
|
1671
|
+
const { dx, dy } = offsetFor(direction, c.width, c.height);
|
|
1672
|
+
const prop = dx !== 0 ? "x" : "y";
|
|
1673
|
+
const rest = dx !== 0 ? c.inRest.x : c.inRest.y;
|
|
1674
|
+
return { incomingMatte: Layer.box({
|
|
1675
|
+
id: autoId("wipe-matte"),
|
|
1676
|
+
position: "absolute",
|
|
1677
|
+
x: c.inRest.x,
|
|
1678
|
+
y: c.inRest.y,
|
|
1679
|
+
width: c.width,
|
|
1680
|
+
height: c.height,
|
|
1681
|
+
background: "#ffffff"
|
|
1682
|
+
}).animate(LayerAnimation.keys(prop, [[0, rest - (dx || dy)], [
|
|
1683
|
+
c.frames,
|
|
1684
|
+
rest,
|
|
1685
|
+
ease
|
|
1686
|
+
]])) };
|
|
1687
|
+
}),
|
|
1688
|
+
iris: (frames = 20, options = {}) => spec("iris", frames, (c) => {
|
|
1689
|
+
const [fx, fy] = options.at ?? [.5, .5];
|
|
1690
|
+
const cx = c.inRest.x + fx * c.width;
|
|
1691
|
+
const cy = c.inRest.y + fy * c.height;
|
|
1692
|
+
const r = Math.hypot(Math.max(fx, 1 - fx) * c.width, Math.max(fy, 1 - fy) * c.height);
|
|
1693
|
+
return { incomingMatte: Layer.shape("circle", {
|
|
1694
|
+
id: autoId("iris-matte"),
|
|
1695
|
+
position: "absolute",
|
|
1696
|
+
x: cx - r,
|
|
1697
|
+
y: cy - r,
|
|
1698
|
+
width: r * 2,
|
|
1699
|
+
height: r * 2,
|
|
1700
|
+
fillColor: "#ffffff"
|
|
1701
|
+
}).animate(LayerAnimation.keys("scale", [[0, 0], [
|
|
1702
|
+
c.frames,
|
|
1703
|
+
1,
|
|
1704
|
+
options.ease ?? "power2.inOut"
|
|
1705
|
+
]])) };
|
|
1706
|
+
})
|
|
1707
|
+
};
|
|
1708
|
+
function sizeOf(node, axis, fallback) {
|
|
1709
|
+
const v = node[axis];
|
|
1710
|
+
return typeof v === "number" ? v : fallback;
|
|
1711
|
+
}
|
|
1712
|
+
/**
|
|
1713
|
+
* Scenes back to back, each overlapping the previous one by its transition.
|
|
1714
|
+
* Scene timing is set for you (`startFrame` / `durationFrames`), so every
|
|
1715
|
+
* scene keys its own animation from its local frame 0.
|
|
1716
|
+
*/
|
|
1717
|
+
function sequence(entries, options = {}) {
|
|
1718
|
+
const scenes = [];
|
|
1719
|
+
const starts = [];
|
|
1720
|
+
let cursor = 0;
|
|
1721
|
+
entries.forEach((entry, i) => {
|
|
1722
|
+
const t = i === 0 ? void 0 : entry.transition;
|
|
1723
|
+
const overlap = Math.min(t?.frames ?? 0, entries[i - 1]?.duration ?? 0);
|
|
1724
|
+
const start = Math.max(0, cursor - overlap);
|
|
1725
|
+
const duration = Math.max(1, Math.round(entry.duration));
|
|
1726
|
+
starts.push(start);
|
|
1727
|
+
const node = entry.scene;
|
|
1728
|
+
if (node.position === void 0 || node.position === "relative") {
|
|
1729
|
+
node.position = "absolute";
|
|
1730
|
+
node.x ??= 0;
|
|
1731
|
+
node.y ??= 0;
|
|
1732
|
+
}
|
|
1733
|
+
node.startFrame = start;
|
|
1734
|
+
node.durationFrames = duration;
|
|
1735
|
+
scenes.push(node);
|
|
1736
|
+
cursor = start + duration;
|
|
1737
|
+
});
|
|
1738
|
+
entries.forEach((entry, i) => {
|
|
1739
|
+
if (i === 0 || !entry.transition || entry.transition.frames === 0) return;
|
|
1740
|
+
const prev = scenes[i - 1];
|
|
1741
|
+
const cur = scenes[i];
|
|
1742
|
+
const frames = Math.min(entry.transition.frames, entries[i - 1].duration);
|
|
1743
|
+
const width = options.width ?? sizeOf(cur, "width", 1920);
|
|
1744
|
+
const height = options.height ?? sizeOf(cur, "height", 1080);
|
|
1745
|
+
const parts = entry.transition.build({
|
|
1746
|
+
width,
|
|
1747
|
+
height,
|
|
1748
|
+
frames,
|
|
1749
|
+
outStart: entries[i - 1].duration - frames,
|
|
1750
|
+
outRest: {
|
|
1751
|
+
x: typeof prev.x === "number" ? prev.x : 0,
|
|
1752
|
+
y: typeof prev.y === "number" ? prev.y : 0
|
|
1753
|
+
},
|
|
1754
|
+
inRest: {
|
|
1755
|
+
x: typeof cur.x === "number" ? cur.x : 0,
|
|
1756
|
+
y: typeof cur.y === "number" ? cur.y : 0
|
|
1757
|
+
}
|
|
1758
|
+
});
|
|
1759
|
+
const merge = (node, anim) => {
|
|
1760
|
+
if (!anim) return;
|
|
1761
|
+
const existing = node.animation?.tracks ?? [];
|
|
1762
|
+
node.animation = LayerAnimation.merge({ tracks: existing }, anim).toSpec();
|
|
1763
|
+
};
|
|
1764
|
+
merge(prev, parts.outgoing);
|
|
1765
|
+
merge(cur, parts.incoming);
|
|
1766
|
+
if (parts.sceneProps) {
|
|
1767
|
+
Object.assign(prev, parts.sceneProps);
|
|
1768
|
+
Object.assign(cur, parts.sceneProps);
|
|
1769
|
+
}
|
|
1770
|
+
if (parts.incomingMatte) cur.matte = {
|
|
1771
|
+
node: parts.incomingMatte,
|
|
1772
|
+
mode: "alpha"
|
|
1773
|
+
};
|
|
1774
|
+
});
|
|
1775
|
+
const root = Layer.box({
|
|
1776
|
+
id: options.id ?? autoId("sequence"),
|
|
1777
|
+
position: "absolute",
|
|
1778
|
+
x: 0,
|
|
1779
|
+
y: 0,
|
|
1780
|
+
width: options.width ?? sizeOf(scenes[0] ?? {}, "width", 1920),
|
|
1781
|
+
height: options.height ?? sizeOf(scenes[0] ?? {}, "height", 1080),
|
|
1782
|
+
startFrame: options.startFrame ?? 0,
|
|
1783
|
+
durationFrames: Math.max(1, cursor),
|
|
1784
|
+
children: scenes
|
|
1785
|
+
});
|
|
1786
|
+
Object.defineProperty(root, "totalFrames", {
|
|
1787
|
+
value: cursor,
|
|
1788
|
+
enumerable: false
|
|
1789
|
+
});
|
|
1790
|
+
Object.defineProperty(root, "sceneStarts", {
|
|
1791
|
+
value: starts,
|
|
1792
|
+
enumerable: false
|
|
1793
|
+
});
|
|
1794
|
+
return root;
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1797
|
+
//#endregion
|
|
1798
|
+
//#region src/lighting.ts
|
|
1799
|
+
const RIGS = {
|
|
1800
|
+
studio: {
|
|
1801
|
+
environment: "studio",
|
|
1802
|
+
envIntensity: 1,
|
|
1803
|
+
key: {
|
|
1804
|
+
dir: [
|
|
1805
|
+
-.55,
|
|
1806
|
+
-1,
|
|
1807
|
+
-.7
|
|
1808
|
+
],
|
|
1809
|
+
color: "#fff6ec",
|
|
1810
|
+
intensity: 1.1
|
|
1811
|
+
},
|
|
1812
|
+
rim: {
|
|
1813
|
+
dir: [
|
|
1814
|
+
.9,
|
|
1815
|
+
-.5,
|
|
1816
|
+
.9
|
|
1817
|
+
],
|
|
1818
|
+
color: "#dbe8ff",
|
|
1819
|
+
intensity: .9
|
|
1820
|
+
}
|
|
1821
|
+
},
|
|
1822
|
+
soft: {
|
|
1823
|
+
environment: "soft",
|
|
1824
|
+
envIntensity: 1,
|
|
1825
|
+
key: {
|
|
1826
|
+
dir: [
|
|
1827
|
+
-.4,
|
|
1828
|
+
-1,
|
|
1829
|
+
-.8
|
|
1830
|
+
],
|
|
1831
|
+
color: "#ffffff",
|
|
1832
|
+
intensity: 1
|
|
1833
|
+
}
|
|
1834
|
+
},
|
|
1835
|
+
sunset: {
|
|
1836
|
+
environment: "sunset",
|
|
1837
|
+
envIntensity: .9,
|
|
1838
|
+
key: {
|
|
1839
|
+
dir: [
|
|
1840
|
+
-1,
|
|
1841
|
+
-.35,
|
|
1842
|
+
-.3
|
|
1843
|
+
],
|
|
1844
|
+
color: "#ffb27a",
|
|
1845
|
+
intensity: 2.2
|
|
1846
|
+
},
|
|
1847
|
+
fill: {
|
|
1848
|
+
dir: [
|
|
1849
|
+
.8,
|
|
1850
|
+
-.6,
|
|
1851
|
+
-.4
|
|
1852
|
+
],
|
|
1853
|
+
color: "#7f9cff",
|
|
1854
|
+
intensity: .35
|
|
1855
|
+
}
|
|
1856
|
+
},
|
|
1857
|
+
dramatic: {
|
|
1858
|
+
environment: "night",
|
|
1859
|
+
envIntensity: .8,
|
|
1860
|
+
key: {
|
|
1861
|
+
dir: [
|
|
1862
|
+
-.8,
|
|
1863
|
+
-1,
|
|
1864
|
+
-.35
|
|
1865
|
+
],
|
|
1866
|
+
color: "#ffffff",
|
|
1867
|
+
intensity: 2.4
|
|
1868
|
+
},
|
|
1869
|
+
rim: {
|
|
1870
|
+
dir: [
|
|
1871
|
+
.7,
|
|
1872
|
+
-.4,
|
|
1873
|
+
1
|
|
1874
|
+
],
|
|
1875
|
+
color: "#8fb4ff",
|
|
1876
|
+
intensity: 1.8
|
|
1877
|
+
}
|
|
1878
|
+
}
|
|
1879
|
+
};
|
|
1880
|
+
function rotateY([x, y, z], degrees) {
|
|
1881
|
+
const r = degrees * Math.PI / 180;
|
|
1882
|
+
const c = Math.cos(r);
|
|
1883
|
+
const s = Math.sin(r);
|
|
1884
|
+
return [
|
|
1885
|
+
c * x + s * z,
|
|
1886
|
+
y,
|
|
1887
|
+
-s * x + c * z
|
|
1888
|
+
];
|
|
1889
|
+
}
|
|
1890
|
+
function aim(dir, target, distance, rotation) {
|
|
1891
|
+
const [dx, dy, dz] = rotateY(dir, rotation);
|
|
1892
|
+
const len = Math.hypot(dx, dy, dz) || 1;
|
|
1893
|
+
return {
|
|
1894
|
+
x: target[0] + dx / len * distance,
|
|
1895
|
+
y: target[1] + dy / len * distance,
|
|
1896
|
+
z: target[2] + dz / len * distance,
|
|
1897
|
+
targetX: target[0],
|
|
1898
|
+
targetY: target[1],
|
|
1899
|
+
targetZ: target[2]
|
|
1900
|
+
};
|
|
1901
|
+
}
|
|
1902
|
+
function rig(name, options) {
|
|
1903
|
+
const spec$1 = RIGS[name];
|
|
1904
|
+
const target = options.target ?? [
|
|
1905
|
+
960,
|
|
1906
|
+
540,
|
|
1907
|
+
0
|
|
1908
|
+
];
|
|
1909
|
+
const distance = options.distance ?? 1600;
|
|
1910
|
+
const rotation = options.rotation ?? 0;
|
|
1911
|
+
const k = options.intensity ?? 1;
|
|
1912
|
+
const id = options.id ?? autoId(`lighting-${name}`);
|
|
1913
|
+
const nodes = [Light.environment(spec$1.environment, {
|
|
1914
|
+
id: `${id}-environment`,
|
|
1915
|
+
intensity: spec$1.envIntensity * k,
|
|
1916
|
+
rotation,
|
|
1917
|
+
exposure: options.exposure,
|
|
1918
|
+
toneMapping: options.toneMapping,
|
|
1919
|
+
fog: options.fog,
|
|
1920
|
+
bloom: options.bloom
|
|
1921
|
+
}), Light.directional({
|
|
1922
|
+
id: `${id}-key`,
|
|
1923
|
+
color: spec$1.key.color,
|
|
1924
|
+
intensity: spec$1.key.intensity * k,
|
|
1925
|
+
...aim(spec$1.key.dir, target, distance, rotation),
|
|
1926
|
+
castShadow: options.shadows ?? true,
|
|
1927
|
+
shadowSoftness: options.shadowSoftness ?? 3
|
|
1928
|
+
})];
|
|
1929
|
+
for (const [part, light] of [["rim", spec$1.rim], ["fill", spec$1.fill]]) {
|
|
1930
|
+
if (!light) continue;
|
|
1931
|
+
nodes.push(Light.directional({
|
|
1932
|
+
id: `${id}-${part}`,
|
|
1933
|
+
color: light.color,
|
|
1934
|
+
intensity: light.intensity * k,
|
|
1935
|
+
...aim(light.dir, target, distance, rotation)
|
|
1936
|
+
}));
|
|
1937
|
+
}
|
|
1938
|
+
return nodes;
|
|
1939
|
+
}
|
|
1940
|
+
/**
|
|
1941
|
+
* Ready-made lighting: an environment (physical shading, tone mapping) plus
|
|
1942
|
+
* placed key / rim / fill lights, the key casting a soft shadow. Add the
|
|
1943
|
+
* returned nodes to the composition: `comp.add(Lighting.studio({ target }))`.
|
|
1944
|
+
*
|
|
1945
|
+
* Tweak from there rather than starting from zero: `intensity`, `exposure`,
|
|
1946
|
+
* `rotation` (turns the rig), `shadowSoftness`, `fog`.
|
|
1947
|
+
*/
|
|
1948
|
+
const Lighting = {
|
|
1949
|
+
studio: (options = {}) => rig("studio", options),
|
|
1950
|
+
soft: (options = {}) => rig("soft", options),
|
|
1951
|
+
sunset: (options = {}) => rig("sunset", options),
|
|
1952
|
+
dramatic: (options = {}) => rig("dramatic", options)
|
|
1953
|
+
};
|
|
1954
|
+
|
|
1423
1955
|
//#endregion
|
|
1424
1956
|
//#region src/index.ts
|
|
1425
1957
|
function decorateTrackSignals(track, source) {
|
|
@@ -2070,19 +2602,40 @@ var Composition = class Composition {
|
|
|
2070
2602
|
...options,
|
|
2071
2603
|
outputPath: outputPathOrOptions
|
|
2072
2604
|
} : outputPathOrOptions;
|
|
2073
|
-
|
|
2605
|
+
const result = await (opts.renderer ?? new HeadlessMediaRenderer()).renderVideo(this.toVirtualMedia(), opts);
|
|
2606
|
+
if (result.qa) {
|
|
2607
|
+
const lint = this.lint();
|
|
2608
|
+
const issues = [...result.qa.issues, ...lint.map((d) => ({
|
|
2609
|
+
severity: d.severity,
|
|
2610
|
+
code: d.code,
|
|
2611
|
+
message: d.message,
|
|
2612
|
+
...d.layerId !== void 0 && { layerId: d.layerId }
|
|
2613
|
+
}))];
|
|
2614
|
+
result.qa = {
|
|
2615
|
+
...result.qa,
|
|
2616
|
+
issues,
|
|
2617
|
+
passed: result.qa.passed && !lint.some((d) => d.severity === "error")
|
|
2618
|
+
};
|
|
2619
|
+
}
|
|
2620
|
+
return deliverToOutputPath(result, opts.outputPath);
|
|
2621
|
+
}
|
|
2622
|
+
/**
|
|
2623
|
+
* Checks the document for things that render without error but not as
|
|
2624
|
+
* intended: unreadable colors or gradients (drawn transparent),
|
|
2625
|
+
* low-contrast text, layers parked off-canvas, shadows on lights that
|
|
2626
|
+
* cannot cast them, physical materials without an environment, tracks that
|
|
2627
|
+
* never change. `renderVideo({ qa })` includes these automatically.
|
|
2628
|
+
*/
|
|
2629
|
+
lint() {
|
|
2630
|
+
return lintComposition(this.toSpec());
|
|
2074
2631
|
}
|
|
2075
2632
|
};
|
|
2076
2633
|
function withAnimation(node) {
|
|
2077
2634
|
const target = node;
|
|
2078
2635
|
Object.defineProperty(target, "animate", {
|
|
2079
2636
|
value: (...anims) => {
|
|
2080
|
-
const
|
|
2081
|
-
|
|
2082
|
-
else if (flatAnims.length === 1) {
|
|
2083
|
-
const anim = flatAnims[0];
|
|
2084
|
-
target.animation = anim instanceof LayerAnimation ? anim.toSpec() : anim;
|
|
2085
|
-
}
|
|
2637
|
+
const incoming = anims.flat().flatMap((a) => a instanceof LayerAnimation ? a.tracks : a.tracks ?? []);
|
|
2638
|
+
target.animation = { tracks: mergeAnimationTracks([...target.animation?.tracks ?? [], ...incoming]) };
|
|
2086
2639
|
return target;
|
|
2087
2640
|
},
|
|
2088
2641
|
enumerable: false,
|
|
@@ -2107,11 +2660,15 @@ function withAnimation(node) {
|
|
|
2107
2660
|
writable: true,
|
|
2108
2661
|
configurable: true
|
|
2109
2662
|
});
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
}
|
|
2663
|
+
const withMatte = (matte, mode) => {
|
|
2664
|
+
target.matte = {
|
|
2665
|
+
node: matte,
|
|
2666
|
+
...mode && { mode }
|
|
2667
|
+
};
|
|
2668
|
+
return target;
|
|
2669
|
+
};
|
|
2670
|
+
for (const name of ["withMatte", "withMask"]) Object.defineProperty(target, name, {
|
|
2671
|
+
value: withMatte,
|
|
2115
2672
|
enumerable: false,
|
|
2116
2673
|
writable: true,
|
|
2117
2674
|
configurable: true
|
|
@@ -2323,8 +2880,8 @@ const Layer = {
|
|
|
2323
2880
|
id: options.id ?? autoId("shape"),
|
|
2324
2881
|
kind: "shape",
|
|
2325
2882
|
shapeType: options.shapeType ?? shapeType,
|
|
2326
|
-
|
|
2327
|
-
|
|
2883
|
+
...options,
|
|
2884
|
+
fillColor: options.fillColor ?? options.fill ?? "#3b82f6"
|
|
2328
2885
|
}),
|
|
2329
2886
|
flex: (options = {}) => withAnimation({
|
|
2330
2887
|
id: options.id ?? autoId("flex"),
|
|
@@ -2467,6 +3024,8 @@ const Layer = {
|
|
|
2467
3024
|
...options
|
|
2468
3025
|
}),
|
|
2469
3026
|
ambientLight: (color$1 = "#ffffff", intensity = .5, options = {}) => Light.ambient(color$1, intensity, options),
|
|
3027
|
+
sequence: (entries, options) => sequence(entries, options),
|
|
3028
|
+
environment: (presetOrOptions = "studio", options = {}) => Light.environment(presetOrOptions, options),
|
|
2470
3029
|
directionalLight: (options = {}) => Light.directional(options),
|
|
2471
3030
|
pointLight: (options = {}) => Light.point(options),
|
|
2472
3031
|
spotLight: (options = {}) => Light.spot(options),
|
|
@@ -2534,6 +3093,23 @@ const Layer = {
|
|
|
2534
3093
|
})
|
|
2535
3094
|
};
|
|
2536
3095
|
const Light = {
|
|
3096
|
+
environment: (presetOrOptions = "studio", options = {}) => {
|
|
3097
|
+
const opts = typeof presetOrOptions === "string" ? {
|
|
3098
|
+
preset: presetOrOptions,
|
|
3099
|
+
...options
|
|
3100
|
+
} : {
|
|
3101
|
+
...presetOrOptions,
|
|
3102
|
+
...options
|
|
3103
|
+
};
|
|
3104
|
+
return withAnimation({
|
|
3105
|
+
kind: "light",
|
|
3106
|
+
lightType: "environment",
|
|
3107
|
+
preset: "studio",
|
|
3108
|
+
intensity: 1,
|
|
3109
|
+
...opts,
|
|
3110
|
+
id: opts.id ?? autoId("environment")
|
|
3111
|
+
});
|
|
3112
|
+
},
|
|
2537
3113
|
ambient: (color$1 = "#ffffff", intensity = .5, options = {}) => withAnimation({
|
|
2538
3114
|
id: options.id ?? autoId("light-ambient"),
|
|
2539
3115
|
kind: "light",
|
|
@@ -2627,5 +3203,5 @@ const Effect = Object.assign(Effect$1, effectFactories, {
|
|
|
2627
3203
|
});
|
|
2628
3204
|
|
|
2629
3205
|
//#endregion
|
|
2630
|
-
export { AETextAnimatorSchema, AdvancedTextAnimatorBuilder, AdvancedTextAnimatorSchema, AnchorGroupingSchema, AnchorPresetSchema, AnimatableGlyphPropsSchema, AnimationTypeSchema, AnyOutputUnionSchema, ApplyLUT, AudioCompressor, AudioDelay, AudioExtractorSignalDataSchema, AudioFade, AudioLatentEngine, AudioLatentTrackCache, AudioMeshDeformPipeline, AudioNoiseGate, AudioParametricEq, AudioReverb, AudioSignal, AudioSignalExtractor, AudioSpectrumTypographySchema, BaseMediaOperationPropsSchema, BaseVideoLayerPropsSchema, Blur, BoxNodeSchema, CAPTION_LAYER_DEFAULTS, COCO17_BONES, COCO17_KEYPOINTS, COCO17_KEYPOINT_NAMES, COCO_CLASSES, COMPOSITE_OPERATIONS, COMPOSITOR_DEFAULTS, Camera3D, CameraAnimation, CameraNodeSchema, CameraParallax3D, CannyComputePipeline, CarrierHandoffConfigSchema, ChannelMerger, ChannelSplitter, ChromaticGlitchConfigSchema, ColorBalance, ColorKey, ColorStopSchema, Composition, CompositorProgramSchema, ConfigHandleSchema, ConfigSchemaRegistry, ControlNetMultiplexer, CornerPin, Crop, CubicBezierSegmentSchema, Curves, CustomEffect, DATA_TYPE_EXTENSIONS, DEFAULT_CHART_COLORS, DEFAULT_DURATION_MS, DEFAULT_FPS, DEFAULT_MEDIA_DIMENSION, DataType, DataTypeVal, DataTypes, DepthNormalsComputePipeline, DepthOfField, DisplacementMap, DynamicStrokePropertiesSchema, Easing, Effect, EffectPipeline, EnhancedTextNodeSchema, ExportResultSchema, ExpressionSelectorSchema, ExtendedGlyphPropertiesSchema, ExtendedLayerSchema, ExtractLUT, FileAssetSchema, FileDataSchema, FilmGrain, FlexNodeSchema, Flip, FontManager, GeneratorSignalDataSchema, GlassPipeline, GlobalCompositeOperation, GlyphAnchorGroupingSchema, GlyphAnchorPointSchema, GradientMap, HalftoneScreen, HandleTypeVal, HeadlessMediaRenderer, HeadlessWebGPURenderer, HighPass, JsonValueSchema, KenBurns, KineticMarqueeConfigSchema, LIGHT_UNIFORM_SIZE_BYTES, Layer, Layer3D, LayerAnimation, LayerStyle, LayoutNodeSchema, Levels, Light, Light3D, LightNodeSchema, LightTypeSchema, LineSpacingDynamicsSchema, Liquify, LongShadowConfigSchema, MAX_LIGHTS, MIME_TYPES, MaskMath, MaterialTypeSchema, Matrix4Math, Media, MediaMetadataSchema, MediaNodeSchema, MediaOperationSchema, MediaSourceSchema, MeshWarp, Model3DNodeSchema, ModerationError, ModerationUnrefundableError, Modulate, MotionBlur, MotionBlurPipeline, MultiOutputGenericSchema, NodeMetadataSchema, NodeResultSchema, NodeVisualConfigSchema, NoiseGenerator, OpticalFlowComputePipeline, OutputItemSchema, PBRGlass, Paint, ParticleDissolveConfigSchema, PatchHeal, Path3D, PoseSkeletonRenderer, ProceduralVFX, ProgrammaticSignal, RefineEdge, RefractionCaustics3D, Relight3D, Renderer2D, Renderer3D, ResizerScaler, Rotate, SSAO, SSAOPipeline, Scene, SceneDefinitionSchema, SceneTransitionTypeSchema, SegmentationTexturePool, SelectiveColor, SelectorBasedOnSchema, SelectorModeSchema, SelectorShapeSchema, SelectorUnitsSchema, Sequence, ShadowPipeline, ShadowsHighlights, ShapeNodeSchema, Signal, SignalChannelMetaSchema, SignalDataSchema, SignalGateDataSchema, SignalMathDataSchema, SignalStatsSchema, SingleOutputGenericSchema, SkewPropertiesSchema, SlugFontCache, SlugPipeline, SourceOperationSchema, Spatial3DPropertiesSchema, SpatialLandmarkTransformer, SpringPhysicsSchema, StereoPanning, TEXT_LAYER_DEFAULTS, TemporalDeflicker, TemporalDeflickerPipeline, TemporalObjectTracker, TensorPipeline, TextAnchorConfigSchema, TextAnimator, TextAnimatorBuilder, TextAnimatorSchema, TextCursorConfigSchema, TextCursorStyleSchema, TextNodeSchema, TextOperationSchema, TextPathBuilder, TextPathOptionsSchema, TextPathSourceSchema, TextRangeSelectorSchema, TextScrambleConfigSchema, TextSelectorSchema, TextSignalSelectorSchema, TextSpanMarkSchema, TextSpanSchema, TextWigglySelectorSchema, TileOffset, TimelineSegmentSchema, TimelineTransformSchema, TransitionSchema, TransitionTypeSchema, TypewriterAnimatorSchema, TypingCadenceSchema, UnsharpMask, VariableFontAxesSchema, Vec2Schema, Vector3Math, VideoAnimationSchema, VideoLayerTypeSchema, VideoSpatialPropsSchema, VideoStylePropsSchema, VideoTextPropsSchema, VideoTimingPropsSchema, Vignette, VirtualMediaDataSchema, Vision, VisionBundle, VisionNode, VisionRunner, VolumetricFormationConfigSchema, VolumetricFormationModeSchema, accent, analyzeSequence, appendOperation, applyStaggerToChildren, bezier, blurRegion, bold, buildPathLUT, calculateSequenceTimeline, checkNodeResultCache, code, collectNodeOps, color, compositorToProgram, computeAnchorPivotOffset, computeCarrierContinuity, computeGridLayout, computeLayout, computeLayoutSync, computeLineLeadingDisplacement, computeRangeSelectorWeight, computeStaggerDelay, computeStrokeRect, computeVideoCropRenderProps, computed, cosineSignal, createOutputItemSchema, createVirtualMedia, dataTypeColors, deserializeSignalData, deterministicWigglyNoise, distanceToCurveParameter, editTrackedRegion, effectFactories, effectMeta, ellipseToCubicBeziers, encodeStereoWav, ensureDevice, evaluateAnimationAtFrame, evaluateCubicBezier, evaluateCubicBezierDerivative, evaluateExpressionSelector, evaluateMarqueeOffset, evaluateSelectorCombination, evaluateSkewMatrix, evaluateSpringProgress, evaluateTrackAtFrame, evaluateTypewriterState, evaluateVolumetricFormation, extractSvgDimensions, findSourceAsset, formatQaReport, frameArraySignal, frameSignal, generateArcLengthLUT, generateId, generatePathSegments, getActiveMediaMetadata, getFileDataMetadata, getFingerprint, getLeafMediaType, getMediaType, getRenderFingerprint, getScramblePool, getShuffledOrder, hasOnlySingleSource, inputStore, interpolate, isEqual, isSignal, isVirtualMediaData, italic, loadFBX, loadModel3D, loadOBJ, lutStore, mapBlendModeToSkia, mark, measureSpring, measureText, measureTextAsync, mixAudioTracks, mixSfxInto, normalizeTextSpans, parseColorToRgb, parseFBX, parseMTL, parseMarkup, parseOBJ, parseSvgPathToCubicBeziers, pinNodeToLandmark, pinNodeToObject, preloadCompositionFonts, preloadFont, programmaticSignal, progressSignal, registerSignalDependency, renderFrameGrid, renderSemaphore, renderSfx, reportRenderDiagnostic, requiresIsolation, resolveBoolean, resolveMediaMimeType, resolveNumber, resolveParam, resolveSamplePoints, resolveString, rich, sampleAudioSpectrumScale, sampleCurveGeometry, samplePathChainGeometry, section, serializeSignalData, shaderStore, signal, signalBuilder, signalRegistry, sineSignal, size, softLimit, span, spring, springCalculation, stampResult, startPreview, sub, sup, takeRenderDiagnostics, textureCache, timeSignal, updateClockSignals, waveToCubicBeziers };
|
|
3206
|
+
export { AETextAnimatorSchema, AdvancedTextAnimatorBuilder, AdvancedTextAnimatorSchema, AnchorGroupingSchema, AnchorPresetSchema, AnimatableGlyphPropsSchema, AnimationTypeSchema, AnyOutputUnionSchema, ApplyLUT, AudioCompressor, AudioDelay, AudioExtractorSignalDataSchema, AudioFade, AudioLatentEngine, AudioLatentTrackCache, AudioMeshDeformPipeline, AudioNoiseGate, AudioParametricEq, AudioReverb, AudioSignal, AudioSignalExtractor, AudioSpectrumTypographySchema, BaseMediaOperationPropsSchema, BaseVideoLayerPropsSchema, BloomConfigSchema, Blur, BoxNodeSchema, CAPTION_LAYER_DEFAULTS, COCO17_BONES, COCO17_KEYPOINTS, COCO17_KEYPOINT_NAMES, COCO_CLASSES, COMPOSITE_OPERATIONS, COMPOSITOR_DEFAULTS, Camera3D, CameraAnimation, CameraNodeSchema, CameraParallax3D, CannyComputePipeline, CarrierHandoffConfigSchema, ChannelMerger, ChannelSplitter, ChromaticGlitchConfigSchema, Color, ColorBalance, ColorKey, ColorStopSchema, Composition, CompositorProgramSchema, ConfigHandleSchema, ConfigSchemaRegistry, ControlNetMultiplexer, CornerPin, Crop, CubicBezierSegmentSchema, Curves, CustomEffect, DATA_TYPE_EXTENSIONS, DEFAULT_CHART_COLORS, DEFAULT_DURATION_MS, DEFAULT_FPS, DEFAULT_MEDIA_DIMENSION, DataType, DataTypeVal, DataTypes, DepthNormalsComputePipeline, DepthOfField, DisplacementMap, DynamicStrokePropertiesSchema, Easing, Effect, EffectPipeline, EnhancedTextNodeSchema, EnvironmentFogSchema, EnvironmentPresetSchema, ExportResultSchema, ExpressionSelectorSchema, ExtendedGlyphPropertiesSchema, ExtendedLayerSchema, ExtractLUT, FileAssetSchema, FileDataSchema, FilmGrain, FlexNodeSchema, Flip, FontManager, GeneratorSignalDataSchema, GlassPipeline, GlobalCompositeOperation, GlyphAnchorGroupingSchema, GlyphAnchorPointSchema, Gradient, GradientMap, HalftoneScreen, HandleTypeVal, HeadlessMediaRenderer, HeadlessWebGPURenderer, HighPass, JsonValueSchema, KenBurns, KineticMarqueeConfigSchema, LIGHT_UNIFORM_SIZE_BYTES, Layer, Layer3D, LayerAnimation, LayerStyle, LayoutNodeSchema, Levels, Light, Light3D, LightNodeSchema, LightTypeSchema, Lighting, LineSpacingDynamicsSchema, Liquify, LongShadowConfigSchema, MAX_GRADIENT_STOPS, MAX_LIGHTS, MIME_TYPES, MaskMath, MaterialTypeSchema, Matrix4Math, MatteModeSchema, Media, MediaMetadataSchema, MediaNodeSchema, MediaOperationSchema, MediaSourceSchema, MeshWarp, Model3DNodeSchema, ModerationError, ModerationUnrefundableError, Modulate, MotionBlur, MotionBlurPipeline, MultiOutputGenericSchema, NodeMetadataSchema, NodeResultSchema, NodeVisualConfigSchema, NoiseGenerator, OpticalFlowComputePipeline, OutputItemSchema, PBRGlass, Paint, ParticleDissolveConfigSchema, PatchHeal, Path3D, PoseSkeletonRenderer, ProceduralVFX, ProgrammaticSignal, RefineEdge, RefractionCaustics3D, Relight3D, Renderer2D, Renderer3D, ResizerScaler, Rotate, SSAO, SSAOPipeline, Scene, SceneDefinitionSchema, SceneTransitionTypeSchema, SegmentationTexturePool, SelectiveColor, SelectorBasedOnSchema, SelectorModeSchema, SelectorShapeSchema, SelectorUnitsSchema, Sequence, ShadowPipeline, ShadowsHighlights, ShapeNodeSchema, Signal, SignalChannelMetaSchema, SignalDataSchema, SignalGateDataSchema, SignalMathDataSchema, SignalStatsSchema, SingleOutputGenericSchema, SkewPropertiesSchema, SlugFontCache, SlugPipeline, SourceOperationSchema, Spatial3DPropertiesSchema, SpatialLandmarkTransformer, SpringPhysicsSchema, StereoPanning, TEXT_LAYER_DEFAULTS, TemporalDeflicker, TemporalDeflickerPipeline, TemporalObjectTracker, TensorPipeline, TextAnchorConfigSchema, TextAnimator, TextAnimatorBuilder, TextAnimatorSchema, TextCursorConfigSchema, TextCursorStyleSchema, TextNodeSchema, TextOperationSchema, TextPathBuilder, TextPathOptionsSchema, TextPathSourceSchema, TextRangeSelectorSchema, TextScrambleConfigSchema, TextSelectorSchema, TextSignalSelectorSchema, TextSpanMarkSchema, TextSpanSchema, TextWigglySelectorSchema, TileOffset, TimelineSegmentSchema, TimelineTransformSchema, ToneMappingSchema, Transition, TransitionSchema, TransitionTypeSchema, TypewriterAnimatorSchema, TypingCadenceSchema, UnsharpMask, VariableFontAxesSchema, Vec2Schema, Vector3Math, VideoAnimationSchema, VideoLayerTypeSchema, VideoSpatialPropsSchema, VideoStylePropsSchema, VideoTextPropsSchema, VideoTimingPropsSchema, Vignette, VirtualMediaDataSchema, Vision, VisionBundle, VisionNode, VisionRunner, VolumetricFormationConfigSchema, VolumetricFormationModeSchema, accent, analyzeSequence, appendOperation, applyStaggerToChildren, bezier, blurRegion, bold, buildPathLUT, calculateSequenceTimeline, checkNodeResultCache, code, collectNodeOps, color, compositorToProgram, computeAnchorPivotOffset, computeCarrierContinuity, computeGridLayout, computeLayout, computeLayoutSync, computeLineLeadingDisplacement, computeRangeSelectorWeight, computeStaggerDelay, computeStrokeRect, computeVideoCropRenderProps, computed, cosineSignal, createOutputItemSchema, createVirtualMedia, dataTypeColors, deserializeSignalData, deterministicWigglyNoise, distanceToCurveParameter, editTrackedRegion, effectFactories, effectMeta, ellipseToCubicBeziers, encodeStereoWav, ensureDevice, evaluateAnimationAtFrame, evaluateCubicBezier, evaluateCubicBezierDerivative, evaluateExpressionSelector, evaluateMarqueeOffset, evaluateSelectorCombination, evaluateSkewMatrix, evaluateSpringProgress, evaluateTrackAtFrame, evaluateTypewriterState, evaluateVolumetricFormation, extractSvgDimensions, findSourceAsset, formatHex, formatQaReport, frameArraySignal, frameSignal, generateArcLengthLUT, generateId, generatePathSegments, getActiveMediaMetadata, getFileDataMetadata, getFingerprint, getLeafMediaType, getMediaType, getRenderFingerprint, getScramblePool, getShuffledOrder, gradientStopsToOklab, hasOnlySingleSource, hoistMattes, inputStore, interpolate, isCssGradient, isEqual, isSignal, isVirtualMediaData, italic, limitGradientStops, lintComposition, loadFBX, loadModel3D, loadOBJ, lutStore, mapBlendModeToSkia, mark, measureSpring, measureText, measureTextAsync, mergeAnimationTracks, mixAudioTracks, mixColors, mixSfxInto, normalizeColorStops, normalizeTextSpans, oklabToRgb, parseColorToRgb, parseCssColor, parseCssGradient, parseFBX, parseMTL, parseMarkup, parseOBJ, parseSvgPathToCubicBeziers, pinNodeToLandmark, pinNodeToObject, preloadCompositionFonts, preloadFont, programmaticSignal, progressSignal, registerSignalDependency, renderFrameGrid, renderSemaphore, renderSfx, reportRenderDiagnostic, requiresIsolation, resolveBoolean, resolveMediaMimeType, resolveNumber, resolveParam, resolveSamplePoints, resolveString, rgbToOklab, rich, sampleAudioSpectrumScale, sampleColorStops, sampleCurveGeometry, samplePathChainGeometry, section, serializeSignalData, shaderStore, signal, signalBuilder, signalRegistry, sineSignal, size, softLimit, span, spring, springCalculation, stampResult, startPreview, sub, sup, takeRenderDiagnostics, textureCache, timeSignal, updateClockSignals, waveToCubicBeziers };
|
|
2631
3207
|
//# sourceMappingURL=index.mjs.map
|