framefields 2.0.9 → 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.
Files changed (241) hide show
  1. package/README.md +17 -6
  2. package/dist/audio/index.d.mts +4 -4
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-BxA0sL9z.d.mts → audio-BHanw8Jb.d.mts} +3 -3
  5. package/dist/{audio-BxA0sL9z.d.mts.map → audio-BHanw8Jb.d.mts.map} +1 -1
  6. package/dist/{audio-Dev4NGPa.mjs → audio-COOMNwL5.mjs} +4 -4
  7. package/dist/{audio-Dev4NGPa.mjs.map → audio-COOMNwL5.mjs.map} +1 -1
  8. package/dist/{dist-CoSg-CWr.mjs → dist-BAVZdFEJ.mjs} +3 -3
  9. package/dist/{dist-CoSg-CWr.mjs.map → dist-BAVZdFEJ.mjs.map} +1 -1
  10. package/dist/{dist-DzUJmIHt.mjs → dist-BYqNNwsl.mjs} +2 -2
  11. package/dist/{dist-DzUJmIHt.mjs.map → dist-BYqNNwsl.mjs.map} +1 -1
  12. package/dist/{dist-B9Afsv83.mjs → dist-CbG3QxDw.mjs} +651 -2
  13. package/dist/dist-CbG3QxDw.mjs.map +1 -0
  14. package/dist/{dist-DgfykO99.mjs → dist-Cxi68OuY.mjs} +5347 -3286
  15. package/dist/dist-Cxi68OuY.mjs.map +1 -0
  16. package/dist/effects/index.d.mts +4 -4
  17. package/dist/effects/index.mjs +25 -25
  18. package/dist/{effects-hxRwxjyC.mjs → effects-DzbjFhyA.mjs} +3 -3
  19. package/dist/{effects-hxRwxjyC.mjs.map → effects-DzbjFhyA.mjs.map} +1 -1
  20. package/dist/fonts/index.d.mts +2 -2
  21. package/dist/fonts/index.mjs +1 -1
  22. package/dist/{fonts-BznIea-I.mjs → fonts-C0W6TgJk.mjs} +52 -5
  23. package/dist/fonts-C0W6TgJk.mjs.map +1 -0
  24. package/dist/{index-J9CIK_nu.d.mts → index-9B8CJowc.d.mts} +2 -2
  25. package/dist/{index-J9CIK_nu.d.mts.map → index-9B8CJowc.d.mts.map} +1 -1
  26. package/dist/{index-CvDVpaKn.d.mts → index-CDoTrMs1.d.mts} +4 -4
  27. package/dist/{index-CvDVpaKn.d.mts.map → index-CDoTrMs1.d.mts.map} +1 -1
  28. package/dist/{index-BXNNJVs8.d.mts → index-CYGpSVsf.d.mts} +2 -2
  29. package/dist/{index-BXNNJVs8.d.mts.map → index-CYGpSVsf.d.mts.map} +1 -1
  30. package/dist/{index-D1zaOwEU.d.mts → index-DDEPvMww.d.mts} +520 -71
  31. package/dist/index-DDEPvMww.d.mts.map +1 -0
  32. package/dist/{index-oodg5k9K.d.mts → index-DGJp1d30.d.mts} +3 -3
  33. package/dist/{index-oodg5k9K.d.mts.map → index-DGJp1d30.d.mts.map} +1 -1
  34. package/dist/{index-fo4E7A6C.d.mts → index-DRZu3ezy.d.mts} +3 -3
  35. package/dist/{index-fo4E7A6C.d.mts.map → index-DRZu3ezy.d.mts.map} +1 -1
  36. package/dist/{index-CQcdKyxF.d.mts → index-DnWsbbuZ.d.mts} +54 -2
  37. package/dist/index-DnWsbbuZ.d.mts.map +1 -0
  38. package/dist/index.d.mts +398 -18
  39. package/dist/index.d.mts.map +1 -1
  40. package/dist/index.mjs +633 -57
  41. package/dist/index.mjs.map +1 -1
  42. package/dist/preview/index.d.mts +2 -2
  43. package/dist/preview/index.mjs +10 -10
  44. package/dist/{preview-DZTbEON9.mjs → preview-BV2C4Fk6.mjs} +2 -2
  45. package/dist/{preview-DZTbEON9.mjs.map → preview-BV2C4Fk6.mjs.map} +1 -1
  46. package/dist/preview-engine/{chunk-VVLM6LZ3.mjs → chunk-6256GQFP.mjs} +1 -1
  47. package/dist/preview-engine/{chunk-VWLR2AZR.mjs → chunk-AEK5BO3J.mjs} +1 -1
  48. package/dist/preview-engine/{chunk-YG35X5R5.mjs → chunk-AWTH2WZO.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-7DIAFPQP.mjs → chunk-ECPP3UG6.mjs} +1 -1
  50. package/dist/preview-engine/{chunk-5JD65JSJ.mjs → chunk-FGHOHCFG.mjs} +1 -1
  51. package/dist/preview-engine/chunk-IMV5SBQV.mjs +1 -0
  52. package/dist/preview-engine/chunk-IQKIHFNZ.mjs +1 -0
  53. package/dist/preview-engine/chunk-L3IEJZ5S.mjs +474 -0
  54. package/dist/preview-engine/chunk-M7NMFDJ3.mjs +3 -0
  55. package/dist/preview-engine/chunk-MJM3NFEC.mjs +315 -0
  56. package/dist/preview-engine/chunk-NFAGEP43.mjs +1448 -0
  57. package/dist/preview-engine/{chunk-5PPSCISJ.mjs → chunk-Q66QQI6N.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-JAOXXYXG.mjs → chunk-QYRDQMNB.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-XCYFPA34.mjs → chunk-RJUAM52F.mjs} +1 -1
  60. package/dist/preview-engine/chunk-VRGREB3V.mjs +1 -0
  61. package/dist/preview-engine/{chunk-AW7HNZKR.mjs → chunk-Y6HWYPKX.mjs} +1 -1
  62. package/dist/preview-engine/effects.mjs +1 -1
  63. package/dist/preview-engine/fonts.mjs +1 -1
  64. package/dist/preview-engine/framefields.mjs +27 -27
  65. package/dist/preview-engine/player.mjs +1 -1
  66. package/dist/preview-engine/renderers-5BV6JGTU.mjs +248 -0
  67. package/dist/preview-engine/renderers-7X2W6QWX.mjs +1 -0
  68. package/dist/preview-engine/renderers-EOJMPPAQ.mjs +1 -0
  69. package/dist/preview-engine/renderers-G5KQISVL.mjs +1 -0
  70. package/dist/preview-engine/renderers-GMX2ZQDG.mjs +1 -0
  71. package/dist/preview-engine/renderers-TVTQ2R74.mjs +1 -0
  72. package/dist/preview-engine/renderers-ZIMBODX6.mjs +1 -0
  73. package/dist/{program-C797QMRL.mjs → program-BmNKgzja.mjs} +281 -23
  74. package/dist/program-BmNKgzja.mjs.map +1 -0
  75. package/dist/renderer/index.d.mts +2 -2
  76. package/dist/renderer/index.mjs +2 -2
  77. package/dist/{renderer-D-4Yh-RK.mjs → renderer-1VuQTY1Z.mjs} +2 -2
  78. package/dist/{renderer-D-4Yh-RK.mjs.map → renderer-1VuQTY1Z.mjs.map} +1 -1
  79. package/dist/renderer-6oMSare3.mjs +3 -0
  80. package/dist/renderer-B1ComPb2.mjs +3 -0
  81. package/dist/{renderer-DgSO5OO0.mjs → renderer-B1YMwl2B.mjs} +1 -1
  82. package/dist/{renderer-9QCHY8Kh.mjs → renderer-B2ieylQ3.mjs} +2 -2
  83. package/dist/{renderer-9QCHY8Kh.mjs.map → renderer-B2ieylQ3.mjs.map} +1 -1
  84. package/dist/{renderer-CuqhAB4i.mjs → renderer-B8-kzZdP.mjs} +2 -2
  85. package/dist/{renderer-CuqhAB4i.mjs.map → renderer-B8-kzZdP.mjs.map} +1 -1
  86. package/dist/{renderer-Dn8v2o9L.mjs → renderer-B8UaFNqb.mjs} +3 -3
  87. package/dist/{renderer-Dn8v2o9L.mjs.map → renderer-B8UaFNqb.mjs.map} +1 -1
  88. package/dist/{renderer-DPpgBTlK.mjs → renderer-BDbTWSpP.mjs} +3 -3
  89. package/dist/{renderer-DPpgBTlK.mjs.map → renderer-BDbTWSpP.mjs.map} +1 -1
  90. package/dist/{renderer-CrVAvP92.mjs → renderer-BIIWCg_J.mjs} +3 -3
  91. package/dist/{renderer-CrVAvP92.mjs.map → renderer-BIIWCg_J.mjs.map} +1 -1
  92. package/dist/{renderer-5jfDUKd4.mjs → renderer-BJ1aTkZf.mjs} +3 -3
  93. package/dist/{renderer-5jfDUKd4.mjs.map → renderer-BJ1aTkZf.mjs.map} +1 -1
  94. package/dist/renderer-BQ5Bz5D0.mjs +3 -0
  95. package/dist/{renderer-D6Gi_h4K.mjs → renderer-BSaYG8aw.mjs} +1 -1
  96. package/dist/{renderer-2NQWaZd7.d.mts → renderer-BTdOMMEx.d.mts} +2 -2
  97. package/dist/{renderer-2NQWaZd7.d.mts.map → renderer-BTdOMMEx.d.mts.map} +1 -1
  98. package/dist/renderer-BZcn_iBl.mjs +3 -0
  99. package/dist/{renderer-DnF3aXPX.mjs → renderer-Bc04fivZ.mjs} +3 -3
  100. package/dist/{renderer-DnF3aXPX.mjs.map → renderer-Bc04fivZ.mjs.map} +1 -1
  101. package/dist/{renderer-B1UeU7lX.mjs → renderer-BfAWZziM.mjs} +193 -12
  102. package/dist/renderer-BfAWZziM.mjs.map +1 -0
  103. package/dist/{renderer-CKJb_Lky.mjs → renderer-Bfgd4N0O.mjs} +3 -3
  104. package/dist/{renderer-CKJb_Lky.mjs.map → renderer-Bfgd4N0O.mjs.map} +1 -1
  105. package/dist/{renderer-b6sZN90h.mjs → renderer-BhZZEyFX.mjs} +2 -2
  106. package/dist/{renderer-b6sZN90h.mjs.map → renderer-BhZZEyFX.mjs.map} +1 -1
  107. package/dist/{renderer-C-PfbkPu.mjs → renderer-Bhdf90Zq.mjs} +2 -2
  108. package/dist/{renderer-C-PfbkPu.mjs.map → renderer-Bhdf90Zq.mjs.map} +1 -1
  109. package/dist/renderer-Bp6sDMa6.mjs +3 -0
  110. package/dist/renderer-Bt7_sb_Y.mjs +3 -0
  111. package/dist/{renderer-CB8hMQgm.mjs → renderer-Bv21DbWy.mjs} +1 -1
  112. package/dist/{renderer-gT0ADXMW.mjs → renderer-Bv6q84TU.mjs} +2 -2
  113. package/dist/{renderer-gT0ADXMW.mjs.map → renderer-Bv6q84TU.mjs.map} +1 -1
  114. package/dist/renderer-C606ZPUn.mjs +3 -0
  115. package/dist/renderer-C9jyKn1i.mjs +3 -0
  116. package/dist/renderer-CERfcxgv.mjs +3 -0
  117. package/dist/renderer-CG5PzNkv.mjs +3 -0
  118. package/dist/{renderer-CpUbDJAV.mjs → renderer-CI7sG_cv.mjs} +2 -2
  119. package/dist/{renderer-CpUbDJAV.mjs.map → renderer-CI7sG_cv.mjs.map} +1 -1
  120. package/dist/renderer-CPoIMVdk.mjs +3 -0
  121. package/dist/{renderer-B4ecTNR7.mjs → renderer-CWTpc4ff.mjs} +2 -2
  122. package/dist/{renderer-B4ecTNR7.mjs.map → renderer-CWTpc4ff.mjs.map} +1 -1
  123. package/dist/{renderer-D3uNI10l.mjs → renderer-CXn5HAnK.mjs} +3 -3
  124. package/dist/{renderer-D3uNI10l.mjs.map → renderer-CXn5HAnK.mjs.map} +1 -1
  125. package/dist/{renderer-DCK73tcD.mjs → renderer-C_TPMHiH.mjs} +2 -2
  126. package/dist/{renderer-DCK73tcD.mjs.map → renderer-C_TPMHiH.mjs.map} +1 -1
  127. package/dist/renderer-Ca7L1EOp.mjs +3 -0
  128. package/dist/{renderer-6PqlYQjC.mjs → renderer-CaaOKMSd.mjs} +2 -2
  129. package/dist/{renderer-6PqlYQjC.mjs.map → renderer-CaaOKMSd.mjs.map} +1 -1
  130. package/dist/{renderer-DX38J6mK.mjs → renderer-CdciwwMI.mjs} +3 -3
  131. package/dist/{renderer-DX38J6mK.mjs.map → renderer-CdciwwMI.mjs.map} +1 -1
  132. package/dist/{renderer-DRpE3ZW4.mjs → renderer-CfC_aiew.mjs} +3 -3
  133. package/dist/{renderer-DRpE3ZW4.mjs.map → renderer-CfC_aiew.mjs.map} +1 -1
  134. package/dist/{renderer-BE4Ns0nw.mjs → renderer-ChdLYS-G.mjs} +3 -3
  135. package/dist/{renderer-BE4Ns0nw.mjs.map → renderer-ChdLYS-G.mjs.map} +1 -1
  136. package/dist/renderer-Cl6GkeHx.mjs +3 -0
  137. package/dist/renderer-ClcjrFyo.mjs +3 -0
  138. package/dist/{renderer-B8gTyU3w.mjs → renderer-CnXW28b9.mjs} +2 -2
  139. package/dist/{renderer-B8gTyU3w.mjs.map → renderer-CnXW28b9.mjs.map} +1 -1
  140. package/dist/{renderer-C2gnWTQZ.mjs → renderer-Ctk2zzfy.mjs} +3 -3
  141. package/dist/{renderer-C2gnWTQZ.mjs.map → renderer-Ctk2zzfy.mjs.map} +1 -1
  142. package/dist/{renderer-EmG34sT2.mjs → renderer-CtyD_Xju.mjs} +2 -2
  143. package/dist/{renderer-EmG34sT2.mjs.map → renderer-CtyD_Xju.mjs.map} +1 -1
  144. package/dist/renderer-CySUP_wk.mjs +3 -0
  145. package/dist/renderer-D2l_Odyg.mjs +3 -0
  146. package/dist/{renderer-CckJJHbM.mjs → renderer-D2nCGcjv.mjs} +2 -2
  147. package/dist/{renderer-CckJJHbM.mjs.map → renderer-D2nCGcjv.mjs.map} +1 -1
  148. package/dist/renderer-DCPCYySt.mjs +3 -0
  149. package/dist/{renderer-BgqjWI7K.mjs → renderer-DIgsilTw.mjs} +3 -3
  150. package/dist/{renderer-BgqjWI7K.mjs.map → renderer-DIgsilTw.mjs.map} +1 -1
  151. package/dist/renderer-DIkpJEOZ.mjs +3 -0
  152. package/dist/{renderer-CxQ5v4fJ.mjs → renderer-DML9qpmS.mjs} +2 -2
  153. package/dist/{renderer-CxQ5v4fJ.mjs.map → renderer-DML9qpmS.mjs.map} +1 -1
  154. package/dist/renderer-DNSXPkf_.mjs +3 -0
  155. package/dist/renderer-DP-CvZ_Z.mjs +3 -0
  156. package/dist/renderer-DeXb8R6h.mjs +3 -0
  157. package/dist/renderer-DezO-ZaP.mjs +4 -0
  158. package/dist/renderer-DhXe04fC.mjs +3 -0
  159. package/dist/{renderer-BwmZUkvd.mjs → renderer-DirxsOjq.mjs} +2 -2
  160. package/dist/{renderer-BwmZUkvd.mjs.map → renderer-DirxsOjq.mjs.map} +1 -1
  161. package/dist/{renderer-BcPpcKDI.mjs → renderer-Djlb4TLO.mjs} +3 -3
  162. package/dist/{renderer-BcPpcKDI.mjs.map → renderer-Djlb4TLO.mjs.map} +1 -1
  163. package/dist/renderer-DnH3SI7w.mjs +3 -0
  164. package/dist/{renderer-xp_J0ln7.mjs → renderer-DpGc-N3G.mjs} +3 -3
  165. package/dist/{renderer-xp_J0ln7.mjs.map → renderer-DpGc-N3G.mjs.map} +1 -1
  166. package/dist/renderer-Dpw4oi33.mjs +3 -0
  167. package/dist/{renderer-DAFyJ4dv.mjs → renderer-DxTs4Iyi.mjs} +2 -2
  168. package/dist/{renderer-DAFyJ4dv.mjs.map → renderer-DxTs4Iyi.mjs.map} +1 -1
  169. package/dist/{renderer-BXaK02qA.mjs → renderer-Dy0utCl7.mjs} +3 -3
  170. package/dist/{renderer-BXaK02qA.mjs.map → renderer-Dy0utCl7.mjs.map} +1 -1
  171. package/dist/renderer-Md-ytU0v.mjs +3 -0
  172. package/dist/{renderer-BTYncYDf.mjs → renderer-RKsXlF_0.mjs} +43 -43
  173. package/dist/{renderer-BTYncYDf.mjs.map → renderer-RKsXlF_0.mjs.map} +1 -1
  174. package/dist/renderer-U-bhWO9Q.mjs +3 -0
  175. package/dist/{renderer-CV8diddR.mjs → renderer-WSGuj_V6.mjs} +2 -2
  176. package/dist/{renderer-CV8diddR.mjs.map → renderer-WSGuj_V6.mjs.map} +1 -1
  177. package/dist/{renderer-_bygZSKk.mjs → renderer-bsWnRNpJ.mjs} +2 -2
  178. package/dist/{renderer-_bygZSKk.mjs.map → renderer-bsWnRNpJ.mjs.map} +1 -1
  179. package/dist/{renderer-lq4n1hSS.mjs → renderer-cgxO2xN6.mjs} +3 -3
  180. package/dist/{renderer-lq4n1hSS.mjs.map → renderer-cgxO2xN6.mjs.map} +1 -1
  181. package/dist/{renderer-zvtpCnqy.mjs → renderer-dncoIVdd.mjs} +1 -1
  182. package/dist/{renderer-BpJgfBQ8.mjs → renderer-kwmlLQOO.mjs} +3 -3
  183. package/dist/{renderer-BpJgfBQ8.mjs.map → renderer-kwmlLQOO.mjs.map} +1 -1
  184. package/dist/{renderer--vY6O19V.mjs → renderer-vqkKWqa5.mjs} +2 -2
  185. package/dist/{renderer--vY6O19V.mjs.map → renderer-vqkKWqa5.mjs.map} +1 -1
  186. package/dist/renderer-zA5okHds.mjs +3 -0
  187. package/dist/{renderers-CP8CFWDs-Ciap7y_j.mjs → renderers-CP8CFWDs-DwQTx8S7.mjs} +3 -3
  188. package/dist/{renderers-CP8CFWDs-Ciap7y_j.mjs.map → renderers-CP8CFWDs-DwQTx8S7.mjs.map} +1 -1
  189. package/dist/signals/index.d.mts +5 -5
  190. package/dist/signals/index.mjs +6 -6
  191. package/dist/{signals-CsxqD2AA.mjs → signals-Bv1OweKd.mjs} +3 -3
  192. package/dist/{signals-CsxqD2AA.mjs.map → signals-Bv1OweKd.mjs.map} +1 -1
  193. package/package.json +55 -55
  194. package/dist/dist-B9Afsv83.mjs.map +0 -1
  195. package/dist/dist-DgfykO99.mjs.map +0 -1
  196. package/dist/fonts-BznIea-I.mjs.map +0 -1
  197. package/dist/index-CQcdKyxF.d.mts.map +0 -1
  198. package/dist/index-D1zaOwEU.d.mts.map +0 -1
  199. package/dist/preview-engine/chunk-BUWK5RJ4.mjs +0 -997
  200. package/dist/preview-engine/chunk-CNSHAFEA.mjs +0 -1
  201. package/dist/preview-engine/chunk-OF75EHTX.mjs +0 -418
  202. package/dist/preview-engine/chunk-UC7CSW2A.mjs +0 -1
  203. package/dist/preview-engine/chunk-WQ7BFSKF.mjs +0 -3
  204. package/dist/preview-engine/chunk-ZJFAGIOM.mjs +0 -315
  205. package/dist/preview-engine/renderers-32PIFHPS.mjs +0 -1
  206. package/dist/preview-engine/renderers-3Y3EMRDJ.mjs +0 -1
  207. package/dist/preview-engine/renderers-CHJWUJVI.mjs +0 -1
  208. package/dist/preview-engine/renderers-CI2GXWLP.mjs +0 -1
  209. package/dist/preview-engine/renderers-EE2GFG7J.mjs +0 -1
  210. package/dist/preview-engine/renderers-LTNTQLWE.mjs +0 -248
  211. package/dist/preview-engine/renderers-UGZUPONY.mjs +0 -1
  212. package/dist/program-C797QMRL.mjs.map +0 -1
  213. package/dist/renderer-3uTfN95I.mjs +0 -3
  214. package/dist/renderer-B1UeU7lX.mjs.map +0 -1
  215. package/dist/renderer-B5GslTP-.mjs +0 -3
  216. package/dist/renderer-BUIWeIKQ.mjs +0 -3
  217. package/dist/renderer-B_LfC88A.mjs +0 -3
  218. package/dist/renderer-B_zmicsE.mjs +0 -3
  219. package/dist/renderer-BtNxtXkR.mjs +0 -3
  220. package/dist/renderer-C-sZSHtf.mjs +0 -3
  221. package/dist/renderer-C1zifktw.mjs +0 -3
  222. package/dist/renderer-CCt2XTSM.mjs +0 -3
  223. package/dist/renderer-CL3evUmF.mjs +0 -3
  224. package/dist/renderer-CMXcaArD.mjs +0 -3
  225. package/dist/renderer-CW9D5zCP.mjs +0 -3
  226. package/dist/renderer-CjY77sB_.mjs +0 -3
  227. package/dist/renderer-D1R7vBUl.mjs +0 -3
  228. package/dist/renderer-D5yawxtJ.mjs +0 -3
  229. package/dist/renderer-DC8jr1Ay.mjs +0 -3
  230. package/dist/renderer-DCv-Abvn.mjs +0 -4
  231. package/dist/renderer-DPLFhzaV.mjs +0 -3
  232. package/dist/renderer-DVsF2FDr.mjs +0 -3
  233. package/dist/renderer-DetDm3ep.mjs +0 -3
  234. package/dist/renderer-DhMhJh_G.mjs +0 -3
  235. package/dist/renderer-DhQld4Qt.mjs +0 -3
  236. package/dist/renderer-Dn3rc3ah.mjs +0 -3
  237. package/dist/renderer-Dw9LxE2f.mjs +0 -3
  238. package/dist/renderer-HvrQZw5E.mjs +0 -3
  239. package/dist/renderer-QdJE56ts.mjs +0 -3
  240. package/dist/renderer-euGyUN2O.mjs +0 -3
  241. package/dist/renderer-p3SmBFP9.mjs +0 -3
package/dist/index.mjs CHANGED
@@ -1,60 +1,60 @@
1
1
  import "./chunk-GMkBE123.mjs";
2
- import { $ as VideoAnimationSchema, A as MediaSourceSchema, At as programmaticSignal, B as SignalChannelMetaSchema, Bt as signal, C as GeneratorSignalDataSchema, Ct as getLeafMediaType, D as MIME_TYPES, Dt as isEqual, E as JsonValueSchema, Et as hasOnlySingleSource, F as NodeResultSchema, Ft as resolveMediaMimeType, G as SingleOutputGenericSchema, Gt as timeSignal, H as SignalGateDataSchema, Ht as sineSignal, I as NodeVisualConfigSchema, It as resolveNumber, J as TextOperationSchema, K as SourceOperationSchema, Kt as updateClockSignals, L as OutputItemSchema, Lt as resolveParam, M as ModerationUnrefundableError, Mt as registerSignalDependency, N as MultiOutputGenericSchema, Nt as reportRenderDiagnostic, O as MediaMetadataSchema, Ot as isSignal, P as NodeMetadataSchema, Pt as resolveBoolean, Q as TransitionTypeSchema, R as ProgrammaticSignal, Rt as resolveString, S as FileDataSchema, St as getFingerprint, T as HandleTypeVal, Tt as getRenderFingerprint, U as SignalMathDataSchema, Ut as stampResult, V as SignalDataSchema, Vt as signalBuilder, W as SignalStatsSchema, Wt as takeRenderDiagnostics, X as TimelineTransformSchema, Y as TimelineSegmentSchema, Z as TransitionSchema, _ as DataTypes, _t as frameArraySignal, a as BaseVideoLayerPropsSchema, at as VirtualMediaDataSchema, b as ExtendedLayerSchema, bt as getActiveMediaMetadata, c as COMPOSITOR_DEFAULTS, ct as computeVideoCropRenderProps, d as DATA_TYPE_EXTENSIONS, dt as createOutputItemSchema, et as VideoLayerTypeSchema, f as DEFAULT_DURATION_MS, ft as createVirtualMedia, g as DataTypeVal, gt as findSourceAsset, h as DataType, ht as extractSvgDimensions, i as BaseMediaOperationPropsSchema, it as VideoTimingPropsSchema, j as ModerationError, jt as progressSignal, k as MediaOperationSchema, kt as isVirtualMediaData, l as ConfigHandleSchema, lt as computed, m as DEFAULT_MEDIA_DIMENSION, mt as deserializeSignalData, n as AnyOutputUnionSchema, nt as VideoStylePropsSchema, o as CAPTION_LAYER_DEFAULTS, ot as appendOperation, p as DEFAULT_FPS, pt as dataTypeColors, q as TEXT_LAYER_DEFAULTS, r as AudioExtractorSignalDataSchema, rt as VideoTextPropsSchema, s as COMPOSITE_OPERATIONS, st as checkNodeResultCache, t as AnimationTypeSchema, tt as VideoSpatialPropsSchema, u as ConfigSchemaRegistry, ut as cosineSignal, v as Effect$1, vt as frameSignal, w as GlobalCompositeOperation, wt as getMediaType, x as FileAssetSchema, xt as getFileDataMetadata, y as ExportResultSchema, yt as generateId, z as Signal, zt as serializeSignalData } from "./dist-B9Afsv83.mjs";
3
- import { B as inputStore, F as ensureDevice, G as lutStore, H as loadFBX, I as generateExtrudedTextGeometry, U as loadModel3D, W as loadOBJ, X as parseMTL, Y as parseFBX, Z as parseOBJ, _ as ShadowPipeline, a as Camera3D, c as Light3D, f as Path3D, h as SSAOPipeline, it as textureCache, m as Renderer3D, n as AudioLatentTrackCache, nt as signalRegistry, o as EffectPipeline, p as Renderer2D, q as mediaDecoderCache, r as AudioMeshDeformPipeline, s as GlassPipeline, t as AudioLatentEngine, tt as shaderStore, u as MotionBlurPipeline, x as SlugPipeline, y as SlugFontCache } from "./dist-DgfykO99.mjs";
4
- import "./renderers-CP8CFWDs-Ciap7y_j.mjs";
5
- import "./signals-CsxqD2AA.mjs";
6
- import "./renderer-6PqlYQjC.mjs";
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-CoSg-CWr.mjs";
9
- import { t as AudioSignal } from "./audio-Dev4NGPa.mjs";
10
- import { t as FontManager } from "./fonts-BznIea-I.mjs";
11
- import "./renderer-CrVAvP92.mjs";
12
- import "./renderer-CKJb_Lky.mjs";
13
- import "./renderer-D3uNI10l.mjs";
14
- import "./renderer-lq4n1hSS.mjs";
15
- import "./renderer-BcPpcKDI.mjs";
16
- import "./renderer-BXaK02qA.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-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-BpJgfBQ8.mjs";
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-b6sZN90h.mjs";
22
- import { $ as TextPathBuilder, A as MaterialTypeSchema, At as evaluateAnimationAtFrame, B as SelectorUnitsSchema, Bt as evaluateVolumetricFormation, C as KineticMarqueeConfigSchema, Ct as computeLayoutSync, D as LightTypeSchema, Dt as deterministicWigglyNoise, E as LightNodeSchema, Et as computeStaggerDelay, F as SceneDefinitionSchema, Ft as evaluateSelectorCombination, G as SpringPhysicsSchema, H as ShapeNodeSchema, Ht as generatePathSegments, I as SceneTransitionTypeSchema, It as evaluateSkewMatrix, J as TextAnimatorBuilder, Jt as sampleCurveGeometry, K as TextAnchorConfigSchema, Kt as parseSvgPathToCubicBeziers, L as SelectorBasedOnSchema, Lt as evaluateSpringProgress, M as Model3DNodeSchema, Mt as evaluateCubicBezierDerivative, N as ParticleDissolveConfigSchema, Nt as evaluateExpressionSelector, O as LineSpacingDynamicsSchema, Ot as distanceToCurveParameter, P as Scene, Pt as evaluateMarqueeOffset, Q as TextNodeSchema, R as SelectorModeSchema, Rt as evaluateTrackAtFrame, S as GlyphAnchorPointSchema, St as computeLayout, T as LayoutNodeSchema, Tt as computeRangeSelectorWeight, U as SkewPropertiesSchema, Ut as getScramblePool, V as Sequence, Vt as generateArcLengthLUT, W as Spatial3DPropertiesSchema, Wt as getShuffledOrder, X as TextCursorConfigSchema, Xt as waveToCubicBeziers, Y as TextAnimatorSchema, Yt as samplePathChainGeometry, Z as TextCursorStyleSchema, _ as EnhancedTextNodeSchema, _t as calculateSequenceTimeline, a as AnchorPresetSchema, at as TextSignalSelectorSchema, b as FlexNodeSchema, bt as computeAnchorPivotOffset, c as BoxNodeSchema, ct as TextWigglySelectorSchema, d as CarrierHandoffConfigSchema, dt as VariableFontAxesSchema, et as TextPathOptionsSchema, f as ChromaticGlitchConfigSchema, ft as Vec2Schema, g as DynamicStrokePropertiesSchema, gt as buildPathLUT, h as CubicBezierSegmentSchema, ht as applyStaggerToChildren, i as AnchorGroupingSchema, it as TextSelectorSchema, j as MediaNodeSchema, jt as evaluateCubicBezier, k as LongShadowConfigSchema, kt as ellipseToCubicBeziers, l as CameraAnimation, lt as TypewriterAnimatorSchema, m as CompositorProgramSchema, mt as VolumetricFormationModeSchema, n as AdvancedTextAnimatorBuilder, nt as TextRangeSelectorSchema, o as AnimatableGlyphPropsSchema, ot as TextSpanMarkSchema, p as ColorStopSchema, pt as VolumetricFormationConfigSchema, q as TextAnimator, qt as sampleAudioSpectrumScale, r as AdvancedTextAnimatorSchema, rt as TextScrambleConfigSchema, s as AudioSpectrumTypographySchema, st as TextSpanSchema, t as AETextAnimatorSchema, tt as TextPathSourceSchema, u as CameraNodeSchema, ut as TypingCadenceSchema, v as ExpressionSelectorSchema, vt as collectNodeOps, w as LayerAnimation, wt as computeLineLeadingDisplacement, x as GlyphAnchorGroupingSchema, xt as computeCarrierContinuity, y as ExtendedGlyphPropertiesSchema, yt as compositorToProgram, z as SelectorShapeSchema, zt as evaluateTypewriterState } from "./program-C797QMRL.mjs";
23
- import "./renderer-DX38J6mK.mjs";
24
- import "./renderer-CxQ5v4fJ.mjs";
25
- import "./renderer-C-PfbkPu.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-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-EmG34sT2.mjs";
31
- import "./renderer-CuqhAB4i.mjs";
30
+ import "./renderer-CtyD_Xju.mjs";
31
+ import "./renderer-B8-kzZdP.mjs";
32
32
  import "./renderer-ho_jXJ0H.mjs";
33
- import "./renderer-DAFyJ4dv.mjs";
34
- import "./renderer-DCK73tcD.mjs";
35
- import "./renderer-DRpE3ZW4.mjs";
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-D-4Yh-RK.mjs";
38
- import "./renderer-BE4Ns0nw.mjs";
37
+ import "./renderer-1VuQTY1Z.mjs";
38
+ import "./renderer-ChdLYS-G.mjs";
39
39
  import "./renderer-CpkiHRhh.mjs";
40
- import "./renderer-gT0ADXMW.mjs";
41
- import "./renderer-5jfDUKd4.mjs";
40
+ import "./renderer-Bv6q84TU.mjs";
41
+ import "./renderer-BJ1aTkZf.mjs";
42
42
  import "./renderer-BREIjsUU.mjs";
43
- import "./renderer-CckJJHbM.mjs";
44
- import "./renderer-Dn8v2o9L.mjs";
45
- import "./renderer-DnF3aXPX.mjs";
46
- import "./renderer-BwmZUkvd.mjs";
47
- import "./renderer-xp_J0ln7.mjs";
48
- import "./renderer-B8gTyU3w.mjs";
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-DPpgBTlK.mjs";
51
- import "./renderer-9QCHY8Kh.mjs";
52
- import "./renderer-C2gnWTQZ.mjs";
53
- import "./renderer-B4ecTNR7.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-hxRwxjyC.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-BTYncYDf.mjs";
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-DZTbEON9.mjs";
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
- return deliverToOutputPath(await (opts.renderer ?? new HeadlessMediaRenderer()).renderVideo(this.toVirtualMedia(), opts), opts.outputPath);
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 flatAnims = anims.flat();
2081
- if (flatAnims.length > 1 || flatAnims.length === 1 && Array.isArray(anims[0])) target.animation = { tracks: flatAnims.flatMap((a) => a instanceof LayerAnimation ? a.tracks : a.tracks ?? []) };
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
- Object.defineProperty(target, "withMask", {
2111
- value: (mask) => {
2112
- target.mask = mask;
2113
- return target;
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
- fillColor: options.fillColor ?? "#3b82f6",
2327
- ...options
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