framefields 2.6.1 → 2.7.0

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 (471) hide show
  1. package/dist/audio/index.d.mts +4 -4
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-CYrO9q9P.mjs → audio-j3ttoRDX.mjs} +4 -4
  4. package/dist/{audio-CYrO9q9P.mjs.map → audio-j3ttoRDX.mjs.map} +1 -1
  5. package/dist/{audio-B5mdR8vv.d.mts → audio-tL8CcPra.d.mts} +3 -3
  6. package/dist/{audio-B5mdR8vv.d.mts.map → audio-tL8CcPra.d.mts.map} +1 -1
  7. package/dist/components/index.d.mts +10 -10
  8. package/dist/components/index.mjs +44 -44
  9. package/dist/{dist-cC6nOaMR.mjs → dist-BHTd-EC1.mjs} +164 -34
  10. package/dist/dist-BHTd-EC1.mjs.map +1 -0
  11. package/dist/{dist-DSKhnhDk.mjs → dist-BM0ilHvQ.mjs} +115 -21
  12. package/dist/dist-BM0ilHvQ.mjs.map +1 -0
  13. package/dist/{dist-D021IFfp.mjs → dist-BRXsfWKQ.mjs} +444 -8
  14. package/dist/dist-BRXsfWKQ.mjs.map +1 -0
  15. package/dist/{dist-BPOi5xb_.mjs → dist-CPtFZxtu.mjs} +2 -2
  16. package/dist/{dist-BPOi5xb_.mjs.map → dist-CPtFZxtu.mjs.map} +1 -1
  17. package/dist/effects/index.d.mts +4 -4
  18. package/dist/effects/index.mjs +35 -35
  19. package/dist/{effects-Dvdwndk0.mjs → effects-Dy661XS_.mjs} +3 -3
  20. package/dist/{effects-Dvdwndk0.mjs.map → effects-Dy661XS_.mjs.map} +1 -1
  21. package/dist/fonts/index.mjs +2 -2
  22. package/dist/{fonts-B6a4CyoM.mjs → fonts-BcFhAqqO.mjs} +2 -2
  23. package/dist/{fonts-B6a4CyoM.mjs.map → fonts-BcFhAqqO.mjs.map} +1 -1
  24. package/dist/{gpu-CrQADlcf.mjs → gpu-zIhSz_0X.mjs} +2 -2
  25. package/dist/{gpu-CrQADlcf.mjs.map → gpu-zIhSz_0X.mjs.map} +1 -1
  26. package/dist/{index-ocZc12ZS.d.mts → index-B1ENegOQ.d.mts} +224 -2
  27. package/dist/index-B1ENegOQ.d.mts.map +1 -0
  28. package/dist/{index-D-Gnyffj.d.mts → index-CJRTBLZ4.d.mts} +4 -4
  29. package/dist/{index-D-Gnyffj.d.mts.map → index-CJRTBLZ4.d.mts.map} +1 -1
  30. package/dist/{index-BhzlG_1Q.d.mts → index-Cg30slle.d.mts} +2 -2
  31. package/dist/{index-BhzlG_1Q.d.mts.map → index-Cg30slle.d.mts.map} +1 -1
  32. package/dist/{index-B4o6F1JC.d.mts → index-DeeMmoEA.d.mts} +2 -2
  33. package/dist/{index-B4o6F1JC.d.mts.map → index-DeeMmoEA.d.mts.map} +1 -1
  34. package/dist/{index-CWG19cm-.d.mts → index-ePGQ_C7f.d.mts} +39 -16
  35. package/dist/index-ePGQ_C7f.d.mts.map +1 -0
  36. package/dist/{index-o8LxWdwz.d.mts → index-l1yRugLc.d.mts} +3 -3
  37. package/dist/{index-o8LxWdwz.d.mts.map → index-l1yRugLc.d.mts.map} +1 -1
  38. package/dist/{index-3Vdef2KE.d.mts → index-uDZ9Yuv-.d.mts} +5 -8
  39. package/dist/index-uDZ9Yuv-.d.mts.map +1 -0
  40. package/dist/index.d.mts +11 -11
  41. package/dist/index.mjs +53 -53
  42. package/dist/preview/index.d.mts +3 -3
  43. package/dist/preview/index.mjs +10 -10
  44. package/dist/{preview-OTsGYyOU.mjs → preview-IpdVFuxv.mjs} +3 -2
  45. package/dist/{preview-OTsGYyOU.mjs.map → preview-IpdVFuxv.mjs.map} +1 -1
  46. package/dist/preview-engine/audio.mjs +1 -1
  47. package/dist/preview-engine/{chunk-RF62TV3G.mjs → chunk-25WRUINA.mjs} +1 -1
  48. package/dist/preview-engine/{chunk-MMVFX42U.mjs → chunk-2AEWPT6Y.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-IIOHF7MH.mjs → chunk-2MDTUA3W.mjs} +1 -1
  50. package/dist/preview-engine/{chunk-KWTTANYN.mjs → chunk-2TLABBER.mjs} +1 -1
  51. package/dist/preview-engine/{chunk-MUOJMF7M.mjs → chunk-3QOJVABU.mjs} +1 -1
  52. package/dist/preview-engine/{chunk-RDEQ4LQU.mjs → chunk-4Q3ZUTQC.mjs} +1 -1
  53. package/dist/preview-engine/{chunk-OXXRKNHW.mjs → chunk-5BXCJ2QX.mjs} +1 -1
  54. package/dist/preview-engine/{chunk-JTT3YX7W.mjs → chunk-5R4UF7YK.mjs} +1 -1
  55. package/dist/preview-engine/{chunk-4C26NVQY.mjs → chunk-6THE6J3A.mjs} +1 -1
  56. package/dist/preview-engine/{chunk-SVE3XWO7.mjs → chunk-6VDYWMP5.mjs} +1 -1
  57. package/dist/preview-engine/{chunk-ULPLHKM2.mjs → chunk-7B7QQDPZ.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-ULVX4VYT.mjs → chunk-7ZA36EZE.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-LYSU6S4O.mjs → chunk-AJ6BVUDB.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-J24VHZS6.mjs → chunk-BDXGUSSF.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-B7J72YSP.mjs → chunk-CC5V7UBF.mjs} +1 -1
  62. package/dist/preview-engine/{chunk-JD4TBC6Z.mjs → chunk-CP42LYD7.mjs} +1 -1
  63. package/dist/preview-engine/{chunk-LN3YAWUD.mjs → chunk-DJWDD3OE.mjs} +1 -1
  64. package/dist/preview-engine/{chunk-V3FODTPI.mjs → chunk-DZEWY4PR.mjs} +22 -22
  65. package/dist/preview-engine/{chunk-RKNV5N7D.mjs → chunk-ENGQ55LR.mjs} +1 -1
  66. package/dist/preview-engine/{chunk-AGLAJGQJ.mjs → chunk-FBXKVLTB.mjs} +14 -14
  67. package/dist/preview-engine/{chunk-MJCK5FLZ.mjs → chunk-FMEXTHL7.mjs} +1 -1
  68. package/dist/preview-engine/{chunk-UEQIO6AH.mjs → chunk-FQ7UCMWR.mjs} +1 -1
  69. package/dist/preview-engine/{chunk-TPFDAOW7.mjs → chunk-FRIBHQTM.mjs} +1 -1
  70. package/dist/preview-engine/chunk-FT7HJ6IE.mjs +3 -0
  71. package/dist/preview-engine/{chunk-YEPYVASB.mjs → chunk-G3UOUGIE.mjs} +1 -1
  72. package/dist/preview-engine/{chunk-4JX5LBE2.mjs → chunk-H4GDIVX4.mjs} +1 -1
  73. package/dist/preview-engine/{chunk-LHCEQ77S.mjs → chunk-HU73APZL.mjs} +1 -1
  74. package/dist/preview-engine/{chunk-DDFWN7DI.mjs → chunk-I7QIQURU.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-3KHD67Q3.mjs → chunk-ID344UBN.mjs} +1 -1
  76. package/dist/preview-engine/{chunk-5NT7WWJR.mjs → chunk-IGCXUGHT.mjs} +1 -1
  77. package/dist/preview-engine/{chunk-QPBTLJ5W.mjs → chunk-IK3YA6MC.mjs} +1 -1
  78. package/dist/preview-engine/chunk-J5SKQFJ6.mjs +1 -0
  79. package/dist/preview-engine/{chunk-Q7JN4EHX.mjs → chunk-JOPZNSZJ.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-SQ52PBF3.mjs → chunk-JOSNIMFT.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-SXNCNG4L.mjs → chunk-JR443L5E.mjs} +1 -1
  82. package/dist/preview-engine/{chunk-FZLKPBKS.mjs → chunk-KCAFMWDM.mjs} +1 -1
  83. package/dist/preview-engine/{chunk-QRYCB6E3.mjs → chunk-LAEPNVOE.mjs} +1 -1
  84. package/dist/preview-engine/chunk-MAALUQK3.mjs +1974 -0
  85. package/dist/preview-engine/chunk-MHCXSWK7.mjs +1 -0
  86. package/dist/preview-engine/{chunk-4INGTMZ5.mjs → chunk-MWBARRK2.mjs} +1 -1
  87. package/dist/preview-engine/chunk-MXK2PP6K.mjs +1 -0
  88. package/dist/preview-engine/{chunk-GQIRV466.mjs → chunk-MXPN2GB7.mjs} +1 -1
  89. package/dist/preview-engine/{chunk-W2EZFV4Q.mjs → chunk-NHYB5YC3.mjs} +1 -1
  90. package/dist/preview-engine/{chunk-K3IMPV6T.mjs → chunk-PXSKIGAP.mjs} +6 -6
  91. package/dist/preview-engine/{chunk-SP22JWN2.mjs → chunk-PYM2FBFA.mjs} +1 -1
  92. package/dist/preview-engine/chunk-QDTJ4MOJ.mjs +1 -0
  93. package/dist/preview-engine/{chunk-6PMATELR.mjs → chunk-RQU2GFGH.mjs} +1 -1
  94. package/dist/preview-engine/{chunk-UQD2UE6I.mjs → chunk-RWDPBES3.mjs} +1 -1
  95. package/dist/preview-engine/{chunk-QVW5METG.mjs → chunk-S5ONWSZF.mjs} +1 -1
  96. package/dist/preview-engine/{chunk-2YGR5YCN.mjs → chunk-SIU6JU2R.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-NQZRPPUU.mjs → chunk-SJ3Q4AQP.mjs} +1 -1
  98. package/dist/preview-engine/{chunk-Q6CRERSJ.mjs → chunk-T36SKUWK.mjs} +9 -9
  99. package/dist/preview-engine/chunk-TEBZRQPG.mjs +1 -0
  100. package/dist/preview-engine/{chunk-WDWHOXSA.mjs → chunk-UUDML2SN.mjs} +1 -1
  101. package/dist/preview-engine/{chunk-RHXZXWJ4.mjs → chunk-VAS4IJZR.mjs} +1 -1
  102. package/dist/preview-engine/{chunk-DOCFOSA6.mjs → chunk-WTDK6H46.mjs} +1 -1
  103. package/dist/preview-engine/chunk-XNMEVVQB.mjs +1 -0
  104. package/dist/preview-engine/{chunk-AKT4YQWL.mjs → chunk-YVGT4NK6.mjs} +2 -2
  105. package/dist/preview-engine/{chunk-ZGMA27IG.mjs → chunk-ZR4QFIJR.mjs} +1 -1
  106. package/dist/preview-engine/chunk-ZYTXBBIX.mjs +1 -0
  107. package/dist/preview-engine/components.mjs +1 -1
  108. package/dist/preview-engine/effects.mjs +1 -1
  109. package/dist/preview-engine/fonts.mjs +1 -1
  110. package/dist/preview-engine/framefields.mjs +1 -1
  111. package/dist/preview-engine/player.mjs +2 -2
  112. package/dist/preview-engine/{renderers-FC7G7KU7.mjs → renderers-2AKYMAIK.mjs} +1 -1
  113. package/dist/preview-engine/renderers-363CKEIG.mjs +1 -0
  114. package/dist/preview-engine/{renderers-EJGF3PYQ.mjs → renderers-36L24ZVS.mjs} +1 -1
  115. package/dist/preview-engine/renderers-3FMMVDMA.mjs +1 -0
  116. package/dist/preview-engine/{renderers-56TGEFDK.mjs → renderers-44AANAXR.mjs} +1 -1
  117. package/dist/preview-engine/renderers-4UUU62VV.mjs +1 -0
  118. package/dist/preview-engine/renderers-4ZTZFSAR.mjs +1 -0
  119. package/dist/preview-engine/{renderers-PYDOSDEY.mjs → renderers-5ZSB75GY.mjs} +1 -1
  120. package/dist/preview-engine/renderers-6KDD75BM.mjs +1 -0
  121. package/dist/preview-engine/renderers-7BJRD4G2.mjs +1 -0
  122. package/dist/preview-engine/{renderers-HBIBRZD7.mjs → renderers-AIIHGDJM.mjs} +1 -1
  123. package/dist/preview-engine/{renderers-P2FTCDZ7.mjs → renderers-AU746ORP.mjs} +1 -1
  124. package/dist/preview-engine/renderers-BIF2BETK.mjs +1 -0
  125. package/dist/preview-engine/{renderers-FD3ZT73R.mjs → renderers-BTQCHVHV.mjs} +1 -1
  126. package/dist/preview-engine/{renderers-HMNCIEU3.mjs → renderers-CFHBOAZG.mjs} +1 -1
  127. package/dist/preview-engine/renderers-CU5RW5UA.mjs +1 -0
  128. package/dist/preview-engine/renderers-DK5OBTKE.mjs +1 -0
  129. package/dist/preview-engine/renderers-EAKCDGTY.mjs +1 -0
  130. package/dist/preview-engine/{renderers-FYI6QNUH.mjs → renderers-EGBGC7MU.mjs} +1 -1
  131. package/dist/preview-engine/renderers-EVXCU7G7.mjs +1 -0
  132. package/dist/preview-engine/renderers-EXEYEH3F.mjs +1 -0
  133. package/dist/preview-engine/{renderers-RDHHVXRE.mjs → renderers-EXJDPS3T.mjs} +1 -1
  134. package/dist/preview-engine/renderers-F3WALPWI.mjs +1 -0
  135. package/dist/preview-engine/{renderers-4RVSLTCX.mjs → renderers-FS3EOB4J.mjs} +1 -1
  136. package/dist/preview-engine/{renderers-C3YXNKNM.mjs → renderers-GUL2MXDD.mjs} +1 -1
  137. package/dist/preview-engine/{renderers-EQDINUMT.mjs → renderers-H4HC44B5.mjs} +1 -1
  138. package/dist/preview-engine/renderers-H6565HO4.mjs +1 -0
  139. package/dist/preview-engine/renderers-HT5V6OZ2.mjs +1 -0
  140. package/dist/preview-engine/renderers-HXMOARWO.mjs +1 -0
  141. package/dist/preview-engine/renderers-HZ2Q7BGK.mjs +1 -0
  142. package/dist/preview-engine/renderers-I4N2K2KW.mjs +1 -0
  143. package/dist/preview-engine/renderers-I5J7U6CB.mjs +1 -0
  144. package/dist/preview-engine/renderers-IZV6QXR5.mjs +1 -0
  145. package/dist/preview-engine/renderers-JWGAPHWX.mjs +1 -0
  146. package/dist/preview-engine/renderers-KNDSVQTY.mjs +1 -0
  147. package/dist/preview-engine/renderers-KNDUOO6M.mjs +1 -0
  148. package/dist/preview-engine/renderers-KQAO3QEI.mjs +1 -0
  149. package/dist/preview-engine/{renderers-7SW2AHM2.mjs → renderers-LCSQLXRD.mjs} +1 -1
  150. package/dist/preview-engine/renderers-M34LOEHC.mjs +1 -0
  151. package/dist/preview-engine/renderers-ML6GNCWB.mjs +1 -0
  152. package/dist/preview-engine/renderers-NARG274F.mjs +1 -0
  153. package/dist/preview-engine/renderers-NCFPOSWR.mjs +1 -0
  154. package/dist/preview-engine/{renderers-ZAMSS7QN.mjs → renderers-PCOTECQB.mjs} +1 -1
  155. package/dist/preview-engine/renderers-PG5JHI2S.mjs +1 -0
  156. package/dist/preview-engine/{renderers-LTV5RFDJ.mjs → renderers-Q7MNLQJF.mjs} +1 -1
  157. package/dist/preview-engine/{renderers-GHP7SL5M.mjs → renderers-QXVSJYZL.mjs} +1 -1
  158. package/dist/preview-engine/{renderers-H2UI7YEO.mjs → renderers-R3ERZ3ZY.mjs} +1 -1
  159. package/dist/preview-engine/renderers-RXQKV65L.mjs +1 -0
  160. package/dist/preview-engine/renderers-SA73GD2B.mjs +1 -0
  161. package/dist/preview-engine/renderers-SLIXUHNX.mjs +1 -0
  162. package/dist/preview-engine/renderers-T462JZNA.mjs +1 -0
  163. package/dist/preview-engine/{renderers-LV6LLULR.mjs → renderers-TH2XZAYW.mjs} +1 -1
  164. package/dist/preview-engine/{renderers-ART3EGSZ.mjs → renderers-UHZIERVH.mjs} +1 -1
  165. package/dist/preview-engine/renderers-V7CFVGYK.mjs +1 -0
  166. package/dist/preview-engine/renderers-VY5E7BPK.mjs +1 -0
  167. package/dist/preview-engine/{renderers-ZDMDDWLN.mjs → renderers-WKXGELRG.mjs} +1 -1
  168. package/dist/preview-engine/{renderers-GY4R467B.mjs → renderers-WLDIIFR5.mjs} +1 -1
  169. package/dist/preview-engine/{renderers-NTKSN32T.mjs → renderers-WM6WBRH6.mjs} +1 -1
  170. package/dist/preview-engine/renderers-WT5FQZM7.mjs +228 -0
  171. package/dist/preview-engine/{renderers-YK74777T.mjs → renderers-WTKRLNNR.mjs} +1 -1
  172. package/dist/preview-engine/{renderers-BWRNCXR6.mjs → renderers-X6GKEVP7.mjs} +1 -1
  173. package/dist/preview-engine/renderers-Y47N5EYR.mjs +1 -0
  174. package/dist/preview-engine/renderers-Y4CUVZYI.mjs +1 -0
  175. package/dist/preview-engine/renderers-Y6YC7ZAK.mjs +1 -0
  176. package/dist/preview-engine/renderers-Y6ZYUAQG.mjs +1 -0
  177. package/dist/preview-engine/{renderers-YBTWN76S.mjs → renderers-YRWXYT5A.mjs} +1 -1
  178. package/dist/preview-engine/{renderers-SY435YU3.mjs → renderers-YWC4MXPG.mjs} +1 -1
  179. package/dist/preview-engine/{renderers-7GMW52G3.mjs → renderers-ZWNPYZN6.mjs} +1 -1
  180. package/dist/preview-engine/signals.mjs +1 -1
  181. package/dist/{program-W4CWO2bp.mjs → program-KPBfq9tw.mjs} +95 -21
  182. package/dist/program-KPBfq9tw.mjs.map +1 -0
  183. package/dist/registry/index.json +1 -1
  184. package/dist/registry/lower-third.json +1 -1
  185. package/dist/registry/terminal.json +1 -1
  186. package/dist/registry/text-reveal.json +2 -2
  187. package/dist/registry/title-card.json +1 -1
  188. package/dist/renderer/index.d.mts +2 -2
  189. package/dist/renderer/index.mjs +2 -2
  190. package/dist/{renderer-CX4rvqm9.mjs → renderer-1-FLx8kd.mjs} +3 -3
  191. package/dist/{renderer-CX4rvqm9.mjs.map → renderer-1-FLx8kd.mjs.map} +1 -1
  192. package/dist/{renderer-BIMm7lYG.mjs → renderer-47d3etrX.mjs} +4 -4
  193. package/dist/{renderer-BIMm7lYG.mjs.map → renderer-47d3etrX.mjs.map} +1 -1
  194. package/dist/{renderer-CPtyQrJI.mjs → renderer-6GCG6JxD.mjs} +3 -3
  195. package/dist/{renderer-CPtyQrJI.mjs.map → renderer-6GCG6JxD.mjs.map} +1 -1
  196. package/dist/{renderer-BE6K88VR.mjs → renderer-8BIDdgjt.mjs} +3 -3
  197. package/dist/{renderer-BE6K88VR.mjs.map → renderer-8BIDdgjt.mjs.map} +1 -1
  198. package/dist/renderer-B-5TlncB.mjs +5 -0
  199. package/dist/{renderer-FgP_1OgD.mjs → renderer-B1yzSbvC.mjs} +4 -4
  200. package/dist/{renderer-FgP_1OgD.mjs.map → renderer-B1yzSbvC.mjs.map} +1 -1
  201. package/dist/{renderer-158rymL0.mjs → renderer-B2YiXpp-.mjs} +2 -2
  202. package/dist/{renderer-158rymL0.mjs.map → renderer-B2YiXpp-.mjs.map} +1 -1
  203. package/dist/{renderer-eQP0fvgc.mjs → renderer-B55ljMI_.mjs} +2 -2
  204. package/dist/{renderer-eQP0fvgc.mjs.map → renderer-B55ljMI_.mjs.map} +1 -1
  205. package/dist/{renderer-Duorbrb8.mjs → renderer-B6Tg4UgH.mjs} +4 -4
  206. package/dist/{renderer-Duorbrb8.mjs.map → renderer-B6Tg4UgH.mjs.map} +1 -1
  207. package/dist/{renderer-DmrP4dsn.mjs → renderer-BFnf-8Yt.mjs} +3 -3
  208. package/dist/{renderer-DmrP4dsn.mjs.map → renderer-BFnf-8Yt.mjs.map} +1 -1
  209. package/dist/{renderer-CLP6Lm7y.mjs → renderer-BGHHoPiD.mjs} +2 -2
  210. package/dist/{renderer-BO5u8eFS.mjs → renderer-BHUjPi24.mjs} +2 -2
  211. package/dist/{renderer-BO5u8eFS.mjs.map → renderer-BHUjPi24.mjs.map} +1 -1
  212. package/dist/renderer-BHXtDg5_.mjs +3 -0
  213. package/dist/{renderer-HPBahXjt.mjs → renderer-BIk67-jU.mjs} +2 -2
  214. package/dist/{renderer-HPBahXjt.mjs.map → renderer-BIk67-jU.mjs.map} +1 -1
  215. package/dist/{renderer-C-dcd14F.d.mts → renderer-BLEmr0Lt.d.mts} +2 -2
  216. package/dist/{renderer-C-dcd14F.d.mts.map → renderer-BLEmr0Lt.d.mts.map} +1 -1
  217. package/dist/{renderer-tYmQUp4d.mjs → renderer-BLs5sDdk.mjs} +3 -3
  218. package/dist/{renderer-tYmQUp4d.mjs.map → renderer-BLs5sDdk.mjs.map} +1 -1
  219. package/dist/renderer-BPd3gvEt.mjs +5 -0
  220. package/dist/{renderer-BiH29MS6.mjs → renderer-BXul0Wy6.mjs} +3 -3
  221. package/dist/{renderer-BiH29MS6.mjs.map → renderer-BXul0Wy6.mjs.map} +1 -1
  222. package/dist/{renderer-DVdRzDwX.mjs → renderer-B_1SLBPa.mjs} +3 -3
  223. package/dist/{renderer-DVdRzDwX.mjs.map → renderer-B_1SLBPa.mjs.map} +1 -1
  224. package/dist/renderer-B_ep98BH.mjs +5 -0
  225. package/dist/renderer-Ba_KUbKW.mjs +5 -0
  226. package/dist/{renderer-dX7Fy1NR.mjs → renderer-BbyNUjE_.mjs} +3 -3
  227. package/dist/{renderer-dX7Fy1NR.mjs.map → renderer-BbyNUjE_.mjs.map} +1 -1
  228. package/dist/{renderer-0n4A8P2_.mjs → renderer-BcVr_cIk.mjs} +2 -2
  229. package/dist/{renderer-0n4A8P2_.mjs.map → renderer-BcVr_cIk.mjs.map} +1 -1
  230. package/dist/renderer-BeL2hstU.mjs +5 -0
  231. package/dist/renderer-Bj81osPQ.mjs +5 -0
  232. package/dist/{renderer-ZM2jwJbX.mjs → renderer-BjL7sKGU.mjs} +3 -3
  233. package/dist/{renderer-ZM2jwJbX.mjs.map → renderer-BjL7sKGU.mjs.map} +1 -1
  234. package/dist/{renderer-Bh7d3RSt.mjs → renderer-BjNcuJ4H.mjs} +3 -3
  235. package/dist/{renderer-Bh7d3RSt.mjs.map → renderer-BjNcuJ4H.mjs.map} +1 -1
  236. package/dist/{renderer-Sdsy27LH.mjs → renderer-Br8aDmf0.mjs} +2 -2
  237. package/dist/renderer-BvZQngSm.mjs +5 -0
  238. package/dist/renderer-BxgN8oXx.mjs +5 -0
  239. package/dist/{renderer-BQ-pHSPI.mjs → renderer-ByOvGGzp.mjs} +3 -3
  240. package/dist/{renderer-BQ-pHSPI.mjs.map → renderer-ByOvGGzp.mjs.map} +1 -1
  241. package/dist/{renderer-KkDYCAkn.mjs → renderer-C11qLlrz.mjs} +3 -3
  242. package/dist/{renderer-KkDYCAkn.mjs.map → renderer-C11qLlrz.mjs.map} +1 -1
  243. package/dist/{renderer-D52KWsb8.mjs → renderer-C5dyPQjG.mjs} +3 -3
  244. package/dist/{renderer-D52KWsb8.mjs.map → renderer-C5dyPQjG.mjs.map} +1 -1
  245. package/dist/renderer-C5jDrTBc.mjs +5 -0
  246. package/dist/{renderer-DTKtkgTO.mjs → renderer-C6TbU8U5.mjs} +3 -3
  247. package/dist/{renderer-DTKtkgTO.mjs.map → renderer-C6TbU8U5.mjs.map} +1 -1
  248. package/dist/{renderer-aT6MUYPr.mjs → renderer-C9bcEaBE.mjs} +3 -3
  249. package/dist/{renderer-aT6MUYPr.mjs.map → renderer-C9bcEaBE.mjs.map} +1 -1
  250. package/dist/{renderer-CsxO_wBG.mjs → renderer-CAH00Lub.mjs} +2 -2
  251. package/dist/{renderer-Cb74SQHm.mjs → renderer-CAhsBEpU.mjs} +2 -2
  252. package/dist/{renderer-Cb74SQHm.mjs.map → renderer-CAhsBEpU.mjs.map} +1 -1
  253. package/dist/renderer-CBK4M82Y.mjs +5 -0
  254. package/dist/{renderer-CFSh2eG-.mjs → renderer-CCH0gSF7.mjs} +3 -3
  255. package/dist/{renderer-CFSh2eG-.mjs.map → renderer-CCH0gSF7.mjs.map} +1 -1
  256. package/dist/{renderer-CHvEgLHy.mjs → renderer-CCbOp0BM.mjs} +3 -3
  257. package/dist/{renderer-CHvEgLHy.mjs.map → renderer-CCbOp0BM.mjs.map} +1 -1
  258. package/dist/{renderer-DrrWvz8l.mjs → renderer-CEb5GjcU.mjs} +3 -3
  259. package/dist/{renderer-DrrWvz8l.mjs.map → renderer-CEb5GjcU.mjs.map} +1 -1
  260. package/dist/{renderer-1KfQICGK.mjs → renderer-CIL9zh-a.mjs} +3 -3
  261. package/dist/{renderer-1KfQICGK.mjs.map → renderer-CIL9zh-a.mjs.map} +1 -1
  262. package/dist/{renderer-CEvj79Wg.mjs → renderer-CIbXIFOb.mjs} +4 -4
  263. package/dist/{renderer-CEvj79Wg.mjs.map → renderer-CIbXIFOb.mjs.map} +1 -1
  264. package/dist/renderer-CLHtCctc.mjs +5 -0
  265. package/dist/{renderer-DxOJv_G7.mjs → renderer-CLX33fIK.mjs} +3 -3
  266. package/dist/{renderer-DxOJv_G7.mjs.map → renderer-CLX33fIK.mjs.map} +1 -1
  267. package/dist/{renderer-BcaT2j3R.mjs → renderer-CLXpWDqx.mjs} +2 -2
  268. package/dist/{renderer-BcaT2j3R.mjs.map → renderer-CLXpWDqx.mjs.map} +1 -1
  269. package/dist/renderer-CLin7MNN.mjs +5 -0
  270. package/dist/{renderer-COcFh5bK.mjs → renderer-CLypsmiH.mjs} +3 -3
  271. package/dist/{renderer-COcFh5bK.mjs.map → renderer-CLypsmiH.mjs.map} +1 -1
  272. package/dist/renderer-CN7TypOB.mjs +5 -0
  273. package/dist/renderer-CV5Jfwq7.mjs +5 -0
  274. package/dist/renderer-Ca5E46WK.mjs +5 -0
  275. package/dist/renderer-CdbOtoOU.mjs +5 -0
  276. package/dist/renderer-CeD_bqWj.mjs +5 -0
  277. package/dist/{renderer-BnpMAub0.mjs → renderer-CfEuoZ7b.mjs} +3 -3
  278. package/dist/{renderer-BnpMAub0.mjs.map → renderer-CfEuoZ7b.mjs.map} +1 -1
  279. package/dist/renderer-CfzNNUOd.mjs +5 -0
  280. package/dist/{renderer-0W-Ty55h.mjs → renderer-Cg3h0Mz9.mjs} +3 -3
  281. package/dist/{renderer-0W-Ty55h.mjs.map → renderer-Cg3h0Mz9.mjs.map} +1 -1
  282. package/dist/renderer-Cl8TmdU8.mjs +5 -0
  283. package/dist/{renderer-CoaDDIS6.mjs → renderer-ClHqvIps.mjs} +10 -10
  284. package/dist/renderer-ClHqvIps.mjs.map +1 -0
  285. package/dist/renderer-CosBP_IM.mjs +5 -0
  286. package/dist/renderer-CpwVs5Fh.mjs +5 -0
  287. package/dist/renderer-Cq7baxNb.mjs +5 -0
  288. package/dist/{renderer-B_Oz9L3g.mjs → renderer-CqMz_iXy.mjs} +2 -2
  289. package/dist/{renderer-B_Oz9L3g.mjs.map → renderer-CqMz_iXy.mjs.map} +1 -1
  290. package/dist/{renderer-DORydJHm.mjs → renderer-CqSmfrE1.mjs} +3 -3
  291. package/dist/{renderer-DORydJHm.mjs.map → renderer-CqSmfrE1.mjs.map} +1 -1
  292. package/dist/{renderer-WTvo3wo9.d.mts → renderer-CrhJJKFY.d.mts} +5 -3
  293. package/dist/renderer-CrhJJKFY.d.mts.map +1 -0
  294. package/dist/{renderer-Bt3F1tmP.mjs → renderer-CxxwhUwy.mjs} +3 -3
  295. package/dist/{renderer-Bt3F1tmP.mjs.map → renderer-CxxwhUwy.mjs.map} +1 -1
  296. package/dist/{renderer-Cba208C9.mjs → renderer-D24aiXmB.mjs} +3 -3
  297. package/dist/{renderer-Cba208C9.mjs.map → renderer-D24aiXmB.mjs.map} +1 -1
  298. package/dist/renderer-D6GkxwAx.mjs +5 -0
  299. package/dist/renderer-D7SfGdzX.mjs +5 -0
  300. package/dist/renderer-D7wt09_l.mjs +5 -0
  301. package/dist/{renderer-CdJoOfQw.mjs → renderer-DBslE7fc.mjs} +2 -2
  302. package/dist/{renderer-CdJoOfQw.mjs.map → renderer-DBslE7fc.mjs.map} +1 -1
  303. package/dist/{renderer-Df-rf7RC.mjs → renderer-DE3Ki96C.mjs} +3 -3
  304. package/dist/{renderer-Df-rf7RC.mjs.map → renderer-DE3Ki96C.mjs.map} +1 -1
  305. package/dist/{renderer-DqIrYB0P.mjs → renderer-DJCqc98W.mjs} +3 -3
  306. package/dist/{renderer-DqIrYB0P.mjs.map → renderer-DJCqc98W.mjs.map} +1 -1
  307. package/dist/{renderer-E54Vv1_W.mjs → renderer-DODOyrty.mjs} +3 -3
  308. package/dist/{renderer-E54Vv1_W.mjs.map → renderer-DODOyrty.mjs.map} +1 -1
  309. package/dist/{renderer-DuFwDHHF.mjs → renderer-DRYxcfgi.mjs} +2 -2
  310. package/dist/renderer-DSuDMYqY.mjs +5 -0
  311. package/dist/{renderer-BGDKxfsM.mjs → renderer-DYreml_A.mjs} +3 -3
  312. package/dist/{renderer-BGDKxfsM.mjs.map → renderer-DYreml_A.mjs.map} +1 -1
  313. package/dist/{renderer-BGnMRdUK.mjs → renderer-DZJnNISO.mjs} +2 -2
  314. package/dist/{renderer-BGnMRdUK.mjs.map → renderer-DZJnNISO.mjs.map} +1 -1
  315. package/dist/renderer-DaIstCIs.mjs +5 -0
  316. package/dist/renderer-DbOD3Nc0.mjs +5 -0
  317. package/dist/{renderer-B3gQT1uq.mjs → renderer-DbenSRjl.mjs} +3 -3
  318. package/dist/{renderer-B3gQT1uq.mjs.map → renderer-DbenSRjl.mjs.map} +1 -1
  319. package/dist/{renderer-DGsWlXjl.mjs → renderer-DcXxkxds.mjs} +75 -72
  320. package/dist/renderer-DcXxkxds.mjs.map +1 -0
  321. package/dist/renderer-DdRCA1bn.mjs +6 -0
  322. package/dist/{renderer-PDs21Gsq.mjs → renderer-DdUtL-qF.mjs} +3 -3
  323. package/dist/{renderer-PDs21Gsq.mjs.map → renderer-DdUtL-qF.mjs.map} +1 -1
  324. package/dist/renderer-DfO37haf.mjs +5 -0
  325. package/dist/renderer-DjZwzxZ7.mjs +5 -0
  326. package/dist/renderer-DnAvySNy.mjs +5 -0
  327. package/dist/{renderer-BwnQRuce.mjs → renderer-DnbY04Qk.mjs} +3 -3
  328. package/dist/{renderer-BwnQRuce.mjs.map → renderer-DnbY04Qk.mjs.map} +1 -1
  329. package/dist/renderer-DnvEPm5E.mjs +5 -0
  330. package/dist/{renderer-C_-hWBF1.mjs → renderer-Do9mW_-B.mjs} +3 -3
  331. package/dist/{renderer-C_-hWBF1.mjs.map → renderer-Do9mW_-B.mjs.map} +1 -1
  332. package/dist/{renderer-PDAlUGKG.mjs → renderer-Dqg8qxjq.mjs} +3 -3
  333. package/dist/{renderer-PDAlUGKG.mjs.map → renderer-Dqg8qxjq.mjs.map} +1 -1
  334. package/dist/{renderer-wrXFfvpJ.mjs → renderer-DvkRbmb2.mjs} +3 -3
  335. package/dist/{renderer-wrXFfvpJ.mjs.map → renderer-DvkRbmb2.mjs.map} +1 -1
  336. package/dist/renderer-DwNpKnWf.mjs +5 -0
  337. package/dist/{renderer-Cv6od7Be.mjs → renderer-Dw_xy3zx.mjs} +3 -3
  338. package/dist/{renderer-Cv6od7Be.mjs.map → renderer-Dw_xy3zx.mjs.map} +1 -1
  339. package/dist/renderer-Dx3Dghus.mjs +5 -0
  340. package/dist/{renderer-lP23pU1s.mjs → renderer-DyrNti45.mjs} +3 -3
  341. package/dist/{renderer-lP23pU1s.mjs.map → renderer-DyrNti45.mjs.map} +1 -1
  342. package/dist/renderer-KvaoEwIk.mjs +5 -0
  343. package/dist/{renderer-Cw7R1U43.mjs → renderer-SwUFJ4aA.mjs} +3 -3
  344. package/dist/{renderer-Cw7R1U43.mjs.map → renderer-SwUFJ4aA.mjs.map} +1 -1
  345. package/dist/{renderer-C4Jfgjm5.mjs → renderer-XEoQnDs5.mjs} +3 -3
  346. package/dist/{renderer-C4Jfgjm5.mjs.map → renderer-XEoQnDs5.mjs.map} +1 -1
  347. package/dist/{renderer-BXGr426R.mjs → renderer-Xw9Zn3pD.mjs} +2 -2
  348. package/dist/{renderer-BXGr426R.mjs.map → renderer-Xw9Zn3pD.mjs.map} +1 -1
  349. package/dist/{renderer-BEpA2g1_.mjs → renderer-ZWIDTOLV.mjs} +2 -2
  350. package/dist/{renderer-BEpA2g1_.mjs.map → renderer-ZWIDTOLV.mjs.map} +1 -1
  351. package/dist/{renderer-D36Pjp0B.mjs → renderer-bGhRdKB7.mjs} +2 -2
  352. package/dist/{renderer-D36Pjp0B.mjs.map → renderer-bGhRdKB7.mjs.map} +1 -1
  353. package/dist/{renderer-ZarULMvJ.mjs → renderer-d4weUlVq.mjs} +2 -2
  354. package/dist/{renderer-ZarULMvJ.mjs.map → renderer-d4weUlVq.mjs.map} +1 -1
  355. package/dist/{renderer-YEDoDnsE.mjs → renderer-g7CMgD1v.mjs} +3 -3
  356. package/dist/{renderer-YEDoDnsE.mjs.map → renderer-g7CMgD1v.mjs.map} +1 -1
  357. package/dist/{renderer-CZGpETnc.mjs → renderer-gjLFqdv-.mjs} +4 -4
  358. package/dist/{renderer-CZGpETnc.mjs.map → renderer-gjLFqdv-.mjs.map} +1 -1
  359. package/dist/{renderer-H-Adf8Za.mjs → renderer-gv0u9XmU.mjs} +3 -3
  360. package/dist/{renderer-H-Adf8Za.mjs.map → renderer-gv0u9XmU.mjs.map} +1 -1
  361. package/dist/{renderer-FPYVmSf6.mjs → renderer-jJWwrha1.mjs} +3 -3
  362. package/dist/{renderer-FPYVmSf6.mjs.map → renderer-jJWwrha1.mjs.map} +1 -1
  363. package/dist/{renderer-BKhdqykZ.mjs → renderer-kl_pAczD.mjs} +3 -3
  364. package/dist/{renderer-BKhdqykZ.mjs.map → renderer-kl_pAczD.mjs.map} +1 -1
  365. package/dist/{renderer-BKL3UEzN.mjs → renderer-lrKwPhZi.mjs} +2 -2
  366. package/dist/{renderer-BKL3UEzN.mjs.map → renderer-lrKwPhZi.mjs.map} +1 -1
  367. package/dist/{renderer-C2O4nK9x.mjs → renderer-pnYj1REL.mjs} +3 -3
  368. package/dist/{renderer-C2O4nK9x.mjs.map → renderer-pnYj1REL.mjs.map} +1 -1
  369. package/dist/{renderers-CP8CFWDs-CZJ7NRsl.mjs → renderers-CP8CFWDs-CDikhBRO.mjs} +3 -3
  370. package/dist/{renderers-CP8CFWDs-CZJ7NRsl.mjs.map → renderers-CP8CFWDs-CDikhBRO.mjs.map} +1 -1
  371. package/dist/signals/index.d.mts +5 -5
  372. package/dist/signals/index.mjs +6 -6
  373. package/dist/{signals-BrNF9l9s.mjs → signals-BeAWA_1Y.mjs} +3 -3
  374. package/dist/{signals-BrNF9l9s.mjs.map → signals-BeAWA_1Y.mjs.map} +1 -1
  375. package/dist/{src-_l81YkMD.mjs → src-LYcH_X8o.mjs} +233 -27
  376. package/dist/src-LYcH_X8o.mjs.map +1 -0
  377. package/package.json +58 -58
  378. package/dist/dist-D021IFfp.mjs.map +0 -1
  379. package/dist/dist-DSKhnhDk.mjs.map +0 -1
  380. package/dist/dist-cC6nOaMR.mjs.map +0 -1
  381. package/dist/index-3Vdef2KE.d.mts.map +0 -1
  382. package/dist/index-CWG19cm-.d.mts.map +0 -1
  383. package/dist/index-ocZc12ZS.d.mts.map +0 -1
  384. package/dist/preview-engine/chunk-3SR6BI4B.mjs +0 -1
  385. package/dist/preview-engine/chunk-5NLDETDV.mjs +0 -1974
  386. package/dist/preview-engine/chunk-ALSOO22Q.mjs +0 -1
  387. package/dist/preview-engine/chunk-NKGXINCU.mjs +0 -1
  388. package/dist/preview-engine/chunk-PJMX2GFY.mjs +0 -1
  389. package/dist/preview-engine/chunk-SIXIF5QZ.mjs +0 -3
  390. package/dist/preview-engine/renderers-4CRXZJ5G.mjs +0 -1
  391. package/dist/preview-engine/renderers-5QF4OLFQ.mjs +0 -1
  392. package/dist/preview-engine/renderers-5SOW6OVE.mjs +0 -1
  393. package/dist/preview-engine/renderers-6M2HPY2J.mjs +0 -1
  394. package/dist/preview-engine/renderers-7HT5NW7W.mjs +0 -1
  395. package/dist/preview-engine/renderers-ATTGUTYY.mjs +0 -1
  396. package/dist/preview-engine/renderers-AYWCRBQC.mjs +0 -1
  397. package/dist/preview-engine/renderers-BA6ZCPI5.mjs +0 -1
  398. package/dist/preview-engine/renderers-BAS7RXTC.mjs +0 -1
  399. package/dist/preview-engine/renderers-CZTCW4FC.mjs +0 -1
  400. package/dist/preview-engine/renderers-D2XEQ2YY.mjs +0 -1
  401. package/dist/preview-engine/renderers-DFIJYBW2.mjs +0 -1
  402. package/dist/preview-engine/renderers-EJN6M6DO.mjs +0 -1
  403. package/dist/preview-engine/renderers-EK3HQUUF.mjs +0 -1
  404. package/dist/preview-engine/renderers-G34C5J27.mjs +0 -1
  405. package/dist/preview-engine/renderers-GKVTNDVH.mjs +0 -1
  406. package/dist/preview-engine/renderers-HZBYQKIQ.mjs +0 -1
  407. package/dist/preview-engine/renderers-IK7ZJJKJ.mjs +0 -1
  408. package/dist/preview-engine/renderers-ISASPH6T.mjs +0 -1
  409. package/dist/preview-engine/renderers-IT5ISWSA.mjs +0 -228
  410. package/dist/preview-engine/renderers-IW5MWDBI.mjs +0 -1
  411. package/dist/preview-engine/renderers-K2PI4WJS.mjs +0 -1
  412. package/dist/preview-engine/renderers-KESHVFL2.mjs +0 -1
  413. package/dist/preview-engine/renderers-KTZZVAB2.mjs +0 -1
  414. package/dist/preview-engine/renderers-KY5CJEOV.mjs +0 -1
  415. package/dist/preview-engine/renderers-M5W6SUQD.mjs +0 -1
  416. package/dist/preview-engine/renderers-MEM3REMI.mjs +0 -1
  417. package/dist/preview-engine/renderers-N36R42RL.mjs +0 -1
  418. package/dist/preview-engine/renderers-O5XMWFPY.mjs +0 -1
  419. package/dist/preview-engine/renderers-QJA35PKC.mjs +0 -1
  420. package/dist/preview-engine/renderers-TJIFTQHV.mjs +0 -1
  421. package/dist/preview-engine/renderers-TN4XN436.mjs +0 -1
  422. package/dist/preview-engine/renderers-UDYLCYCB.mjs +0 -1
  423. package/dist/preview-engine/renderers-WZ7SFIBZ.mjs +0 -1
  424. package/dist/preview-engine/renderers-X6QNDC6R.mjs +0 -1
  425. package/dist/preview-engine/renderers-X6RNTJOV.mjs +0 -1
  426. package/dist/preview-engine/renderers-Y3N7236P.mjs +0 -1
  427. package/dist/preview-engine/renderers-YP3ASXIJ.mjs +0 -1
  428. package/dist/preview-engine/renderers-YVJAG3PD.mjs +0 -1
  429. package/dist/preview-engine/renderers-ZPPZNMKJ.mjs +0 -1
  430. package/dist/program-W4CWO2bp.mjs.map +0 -1
  431. package/dist/renderer-8HnHWqYj.mjs +0 -5
  432. package/dist/renderer-8itujues.mjs +0 -5
  433. package/dist/renderer-BFods-7v.mjs +0 -5
  434. package/dist/renderer-BbQygRwc.mjs +0 -5
  435. package/dist/renderer-Bq_sPaCg.mjs +0 -5
  436. package/dist/renderer-BrkDrvqS.mjs +0 -5
  437. package/dist/renderer-C1diVT5Q.mjs +0 -5
  438. package/dist/renderer-C8E7ajTR.mjs +0 -5
  439. package/dist/renderer-CAz8JW5c.mjs +0 -5
  440. package/dist/renderer-CKfrUdGw.mjs +0 -5
  441. package/dist/renderer-CL0rqBA4.mjs +0 -5
  442. package/dist/renderer-COyavIEv.mjs +0 -5
  443. package/dist/renderer-CUrShvUZ.mjs +0 -5
  444. package/dist/renderer-CWvJ_GaL.mjs +0 -5
  445. package/dist/renderer-Ck0mGIo9.mjs +0 -5
  446. package/dist/renderer-CoaDDIS6.mjs.map +0 -1
  447. package/dist/renderer-CqIXqdf0.mjs +0 -5
  448. package/dist/renderer-Csod6biL.mjs +0 -5
  449. package/dist/renderer-CueO924-.mjs +0 -5
  450. package/dist/renderer-D1vM4obC.mjs +0 -5
  451. package/dist/renderer-DB7QUt90.mjs +0 -5
  452. package/dist/renderer-DGsWlXjl.mjs.map +0 -1
  453. package/dist/renderer-DLMDnKlA.mjs +0 -6
  454. package/dist/renderer-DNs7yWMr.mjs +0 -5
  455. package/dist/renderer-DOrtuoa9.mjs +0 -5
  456. package/dist/renderer-D_JgOawb.mjs +0 -5
  457. package/dist/renderer-DdLo1uoa.mjs +0 -5
  458. package/dist/renderer-DeX3JEZV.mjs +0 -5
  459. package/dist/renderer-DfgZVACG.mjs +0 -5
  460. package/dist/renderer-DoYG7Pn6.mjs +0 -5
  461. package/dist/renderer-Jwqa-BUN.mjs +0 -5
  462. package/dist/renderer-WTvo3wo9.d.mts.map +0 -1
  463. package/dist/renderer-WyaqnVMz.mjs +0 -3
  464. package/dist/renderer-Z2Vs-IqP.mjs +0 -5
  465. package/dist/renderer-ZnyCpdWE.mjs +0 -5
  466. package/dist/renderer-emCnsnTH.mjs +0 -5
  467. package/dist/renderer-ioxa4-Dy.mjs +0 -5
  468. package/dist/renderer-iyIwrDWO.mjs +0 -5
  469. package/dist/renderer-tuudA_RZ.mjs +0 -5
  470. package/dist/renderer-yyn8S821.mjs +0 -5
  471. package/dist/src-_l81YkMD.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { ko as VirtualMediaData } from "./index-ocZc12ZS.mjs";
1
+ import { Bo as VirtualMediaData } from "./index-B1ENegOQ.mjs";
2
2
  import { VideoSampleSource } from "mediabunny";
3
3
  import pino from "pino";
4
4
  import { VideoFrame } from "@napi-rs/webcodecs";
@@ -359,4 +359,4 @@ type FrameGridRenderable = {
359
359
  declare function renderFrameGrid(target: FrameGridRenderable, options?: FrameGridOptions): Promise<Buffer>;
360
360
  //#endregion
361
361
  export { renderSemaphore as _, renderFrameGrid as a, HeadlessMediaRenderer as c, QaSegment as d, RenderProgress as f, formatQaReport as g, VideoQaStats as h, computeGridLayout as i, HeadlessWebGPURenderer as l, VideoQaReport as m, FrameGridRenderable as n, resolveSamplePoints as o, VideoQaOptions as p, FrameSamplePoint as r, AudioQaStats as s, FrameGridOptions as t, QaIssue as u, resetRenderCaches as v };
362
- //# sourceMappingURL=index-BhzlG_1Q.d.mts.map
362
+ //# sourceMappingURL=index-Cg30slle.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BhzlG_1Q.d.mts","names":["pino","DestinationStream","VideoColorPrimaries","VideoFrame","VideoMatrixCoefficients","VideoTransferCharacteristics","RenderDiagnostic","VirtualMediaData","VideoSampleSource","preloadFonts","GPUDevice","Promise","StagingSlotStatus","VideoColorSpaceConfig","DmaStagingRingOptions","GPUTextureFormat","StagingSlotInfo","DmaStagingRing","GPUCommandEncoder","GPUTexture","Uint8Array","findNodesDir","discoverAndRegisterNodeRenderers","RenderPhase","RenderProgress","VideoQaOptions","QaSegment","QaIssue","VideoQaStats","AudioQaStats","VideoQaReport","FrameInspector","analyzeAudio","Float32Array","integratedLoudness","buildQaReport","formatQaReport","RenderSemaphore","renderSemaphore","HeadlessWebGPURenderer","Buffer","AbortSignal","HeadlessMediaRenderer","resetRenderCaches","resolveLogFormat","Record","textLogStream","rendererLogger","Logger","NODE_KINDS","NodeKind","NodeRendererExports","NodeManifest","NodeManifestError","Error","parseNodeManifest","loadNodeManifests","ZeroCopyWebCodecsPipelineOptions","WebCodecsPipelineStats","ZeroCopyWebCodecsPipeline"],"sources":["../../renderer/dist/index.d.mts","../src/renderer/framegrid.ts"],"sourcesContent":["import pino, { DestinationStream } from \"pino\";\nimport { VideoColorPrimaries, VideoFrame, VideoMatrixCoefficients, VideoTransferCharacteristics } from \"@napi-rs/webcodecs\";\nimport { RenderDiagnostic, VirtualMediaData } from \"@framefields/core\";\nimport { VideoSampleSource } from \"mediabunny\";\n\n//#region src/asset-preloader.d.ts\n\n/**\n * Preloads only the fonts (and emoji) a VirtualMediaData tree's text uses, so\n * typography renders correctly on Node.js without loading its media. Shared\n * with the browser preview; emoji need a font set with\n * `FontManager.registerEmojiFont()`.\n */\ndeclare function preloadFonts(media: VirtualMediaData, device?: GPUDevice | null): Promise<void>;\n//#endregion\n//#region src/dma-staging-ring.d.ts\ntype StagingSlotStatus = \"idle\" | \"rendering\" | \"mapping\" | \"mapped\";\ninterface VideoColorSpaceConfig {\n readonly primaries?: VideoColorPrimaries;\n readonly transfer?: VideoTransferCharacteristics;\n readonly matrix?: VideoMatrixCoefficients;\n readonly fullRange?: boolean;\n}\ninterface DmaStagingRingOptions {\n readonly width: number;\n readonly height: number;\n readonly capacity?: number;\n readonly format?: GPUTextureFormat;\n}\ninterface StagingSlotInfo {\n readonly index: number;\n readonly status: StagingSlotStatus;\n readonly inFlightFrame: number | null;\n}\n/**\n * Pipelined Asynchronous DMA Staging Ring for WebGPU.\n *\n * Implements double-buffered (or N-buffered) GPU staging buffers to overlap\n * GPU render passes with asynchronous DMA host transfers and WebCodecs hardware encoding.\n * Eliminates GPU stalls by allowing Frame i+1 to execute on the GPU while Frame i\n * is asynchronously mapped and consumed by the hardware video encoder.\n */\ndeclare class DmaStagingRing {\n readonly width: number;\n readonly height: number;\n readonly capacity: number;\n readonly bytesPerRow: number;\n readonly unpaddedBytesPerRow: number;\n readonly bufferSize: number;\n readonly format: GPUTextureFormat;\n readonly device: GPUDevice;\n private readonly slots;\n private isDestroyed;\n constructor(device: GPUDevice, options: DmaStagingRingOptions);\n /**\n * Prepares the staging buffer slot for writing by ensuring any prior mapping\n * from a previous cycle has been completed and unmapped.\n */\n prepareSlot(frameIndex: number): Promise<void>;\n /**\n * Records a GPU-to-buffer DMA copy command into the provided command encoder.\n */\n stageTexture(encoder: GPUCommandEncoder, texture: GPUTexture, frameIndex: number): void;\n /**\n * Initiates asynchronous DMA mapping on the slot for the specified frame.\n * Must be called immediately after submitting the command encoder to the device queue.\n */\n scheduleMap(frameIndex: number): Promise<void>;\n /**\n * Awaits asynchronous mapping and extracts pixels into a tightly packed Uint8Array.\n * The slot remains in the \"mapped\" state until releaseFrame() is called.\n */\n readFramePixels(frameIndex: number): Promise<Uint8Array>;\n /**\n * Awaits asynchronous mapping, extracts pixels, and immediately unmaps the staging buffer,\n * returning the slot to \"idle\" state so it can be reused immediately.\n */\n readAndReleaseFrame(frameIndex: number): Promise<Uint8Array>;\n /**\n * Directly reads the mapped staging buffer into a WebCodecs VideoFrame,\n * bypassing redundant intermediate JS allocations when row pitches align,\n * and immediately unmaps the buffer.\n */\n readFrameToVideoFrame(frameIndex: number, timestampUs: number, colorSpace?: VideoColorSpaceConfig, /** Sees the tightly packed RGBA pixels while they are mapped; must not keep them. */\n inspect?: (rgba: Uint8Array) => void): Promise<VideoFrame>;\n /**\n * Unmaps the staging buffer for the specified frame and marks the slot idle.\n */\n releaseFrame(frameIndex: number): void;\n /**\n * Returns current status info for each slot in the ring.\n */\n getSlotInfos(): readonly StagingSlotInfo[];\n /**\n * Destroys all staging buffers and releases resources.\n */\n destroy(): void;\n private checkDestroyed;\n}\n//#endregion\n//#region src/dynamic-node-discovery.d.ts\n/** Locates the workspace `nodes/` directory by climbing up from this file. */\ndeclare function findNodesDir(startDir?: string): string | null;\n/**\n * Registers the built-in node renderers, then any extra nodes found in the\n * directory named by `FRAMEFIELDS_NODES_DIR` (local node development). A node in\n * that directory overrides the built-in renderer for the same op.\n */\ndeclare function discoverAndRegisterNodeRenderers(): Promise<void>;\n//#endregion\n//#region src/render-reporter.d.ts\n/**\n * Stages of `renderVideo`, in order. Audio-only renders skip \"render\";\n * \"convert\" runs only for GIF output.\n */\ntype RenderPhase = \"prepare\" | \"render\" | \"audio\" | \"audio-encode\" | \"mux\" | \"convert\" | \"done\";\n/** Progress reported by `renderVideo({ onProgress })`. */\ninterface RenderProgress {\n /**\n * \"prepare\" loads fonts and warms the pipeline, \"render\" draws and encodes\n * frames, \"audio\" mixes the soundtrack, \"audio-encode\" encodes it, \"mux\"\n * writes the container, \"convert\" makes the GIF, \"done\" is the last event.\n */\n phase: RenderPhase;\n /** Frames finished so far (1-based); `totalFrames` once frames are done. */\n frame: number;\n totalFrames: number;\n /** Time since the render started. */\n elapsedMs: number;\n /** Share of the current phase done (0–1), when it can be measured. */\n phaseProgress?: number;\n /** Frames per second so far (\"render\" only). */\n fps?: number;\n /** Estimated seconds until the frames are done (\"render\" only). */\n etaSec?: number;\n /** What the phase is working on, e.g. \"3/7 sources: music.mp3\". */\n detail?: string;\n}\n//#endregion\n//#region src/video-qa.d.ts\n/**\n * Quality checks run on a video while it renders: frames are measured as\n * they are read back for the encoder and audio as it is mixed, so the report\n * describes exactly what was encoded without decoding the file again.\n */\ninterface VideoQaOptions {\n /** Luma (0-1) at or below which a pixel counts as black. Default 0.1. */\n readonly blackPixelThreshold?: number;\n /** Share of black pixels that makes a frame black. Default 0.98. */\n readonly blackFrameRatio?: number;\n /** Shortest run of black frames reported. Default 0.5 s. */\n readonly minBlackSec?: number;\n /** Shortest run of unchanging frames reported. Default 2 s. */\n readonly minFrozenSec?: number;\n /** Level (dBFS, 100 ms windows) below which audio counts as silent. Default -60. */\n readonly silenceDbfs?: number;\n /** Shortest silent stretch reported. Default 2 s. */\n readonly minSilenceSec?: number;\n /** Integrated loudness to hit, e.g. -14 for most streaming platforms. Unchecked when unset. */\n readonly targetLufs?: number;\n /** Allowed distance from `targetLufs`, in LU. Default 1. */\n readonly lufsTolerance?: number;\n}\ninterface QaSegment {\n readonly startSec: number;\n readonly endSec: number;\n}\ninterface QaIssue {\n readonly severity: \"error\" | \"warning\" | \"info\";\n /** Stable machine-readable kind, e.g. \"black_frames\", \"audio_clipping\" */\n readonly code: string;\n readonly message: string;\n readonly startSec?: number;\n readonly endSec?: number;\n readonly layerId?: string;\n}\ninterface VideoQaStats {\n readonly expectedFrames: number;\n readonly encodedFrames: number;\n readonly fps: number;\n readonly width: number;\n readonly height: number;\n /** Average luma over the whole video, 0-1 */\n readonly meanLuma: number;\n readonly blackSegments: readonly QaSegment[];\n readonly frozenSegments: readonly QaSegment[];\n}\ninterface AudioQaStats {\n readonly sampleRate: number;\n readonly channels: number;\n readonly durationSec: number;\n /** Highest sample, dBFS (sample peak, not true peak) */\n readonly peakDbfs: number;\n /** Mean level over the whole track, dBFS */\n readonly rmsDbfs: number;\n /** ITU-R BS.1770 integrated loudness; null when the track is silent */\n readonly integratedLufs: number | null;\n /** Samples at or beyond full scale */\n readonly clippedSamples: number;\n readonly silentSegments: readonly QaSegment[];\n}\ninterface VideoQaReport {\n /** No errors or warnings (info issues do not fail a render) */\n readonly passed: boolean;\n readonly video?: VideoQaStats;\n readonly audio?: AudioQaStats;\n readonly issues: readonly QaIssue[];\n}\n/** Measures frames handed to it in order, as RGBA bytes. */\ndeclare class FrameInspector {\n private readonly blackLuma;\n private readonly blackRatio;\n private readonly black;\n private readonly sameAsPrevious;\n private lumaSum;\n private previous;\n constructor(options?: VideoQaOptions);\n get frameCount(): number;\n inspect(rgba: Uint8Array, width: number, height: number): void;\n stats(expectedFrames: number, encodedFrames: number, fps: number, width: number, height: number, options?: VideoQaOptions): VideoQaStats;\n}\n/** Measures a mixed audio track (one Float32Array per channel). */\ndeclare function analyzeAudio(channels: readonly Float32Array[], sampleRate: number, options?: VideoQaOptions): AudioQaStats;\n/**\n * ITU-R BS.1770-4 integrated loudness (LUFS): K-weighted mean square in\n * 400 ms blocks with 75% overlap, gated at -70 LUFS and then at 10 LU below\n * the mean of what passed. Channels weigh 1 (stereo and mono layouts).\n */\ndeclare function integratedLoudness(channels: readonly Float32Array[], sampleRate: number): number | null;\n/** Turn measurements and document diagnostics into a report with issues. */\ndeclare function buildQaReport(parts: {\n video?: VideoQaStats;\n audio?: AudioQaStats;\n diagnostics?: readonly RenderDiagnostic[];\n options?: VideoQaOptions;\n}): VideoQaReport;\n/** A short human- and agent-readable summary of a report. */\ndeclare function formatQaReport(report: VideoQaReport): string;\n//#endregion\n//#region src/headless-webgpu-renderer.d.ts\ndeclare class RenderSemaphore {\n private _running;\n private readonly _max;\n private readonly _queue;\n constructor(max: number);\n acquire(timeoutMs?: number): Promise<void>;\n release(): void;\n get stats(): {\n active: number;\n queued: number;\n max: number;\n };\n}\ndeclare const renderSemaphore: RenderSemaphore;\ndeclare class HeadlessWebGPURenderer {\n private static isInitialized;\n private static initPromise;\n private static initFailureCount;\n private static readonly MAX_INIT_FAILURES;\n private static nextRetryAt;\n static initialize(): Promise<void>;\n renderImage(virtualMedia: VirtualMediaData, frame?: number, fps?: number, options?: {\n renderId?: string;\n /** \"rgba\" skips PNG encoding and returns width*height*4 raw pixels. */\n format?: \"png\" | \"rgba\";\n }): Promise<Buffer>;\n /**\n * Renders a single frame to a PNG buffer at a specified timestamp in milliseconds or frame index.\n */\n renderFrame(source: VirtualMediaData | {\n toVirtualMedia(): VirtualMediaData;\n }, options?: {\n atMs?: number;\n frame?: number;\n fps?: number;\n /** Reuse compiled state across calls; see `renderImage`. */\n renderId?: string;\n /** \"rgba\" returns raw width*height*4 pixels instead of a PNG. */\n format?: \"png\" | \"rgba\";\n }): Promise<Buffer>;\n /**\n * Mixes the composition's full audio timeline (clips, effects, synthesized\n * tracks) to stereo PCM, exactly as `renderVideo` muxes it.\n */\n renderAudio(virtualMedia: VirtualMediaData, options?: {\n fps?: number;\n sampleRate?: number;\n }): Promise<{\n channels: Float32Array[];\n sampleRate: number;\n }>;\n renderLut(virtualMedia: VirtualMediaData, frame?: number, fps?: number): Promise<Buffer>;\n private resolveMediaDuration;\n renderVideo(virtualMedia: VirtualMediaData, options?: {\n codec?: string;\n audioCodec?: string;\n quality?: string;\n concurrency?: number;\n /**\n * Depth of the DMA staging ring (default 2, clamped 2–8). A deeper\n * ring overlaps more encoder latency at the cost of VRAM\n * (~8.3MB/slot at 1080p RGBA). Also settable via\n * `FRAMEFIELDS_RING_CAPACITY`.\n */\n ringCapacity?: number;\n /**\n * Measure the output while it renders (black and frozen frames,\n * dropped frames, loudness, clipping, silence, document warnings)\n * and return the findings as `qa`. `true` uses default thresholds.\n */\n qa?: boolean | VideoQaOptions;\n /**\n * Aborts the render between frames; the promise rejects with\n * `signal.reason` and the partial output is deleted.\n */\n signal?: AbortSignal;\n /**\n * Called as the render moves through its phases: \"prepare\", each\n * frame (\"render\"), \"audio\" (mixing, per clip), \"audio-encode\",\n * \"mux\", \"convert\" (GIF only) and \"done\".\n */\n onProgress?: (progress: RenderProgress) => void;\n }): Promise<{\n filePath: string;\n cleanup: () => Promise<void>;\n qa?: VideoQaReport;\n }>;\n}\ndeclare const HeadlessMediaRenderer: typeof HeadlessWebGPURenderer;\ntype HeadlessMediaRenderer = HeadlessWebGPURenderer;\n//#endregion\n//#region src/job-reset.d.ts\n/**\n * Drops every cache keyed by a file path or URL: media inputs and decoders,\n * textures, LUTs, fonts and downloaded font files. A long-lived worker calls this between jobs,\n * because the next checkout may hold different bytes at the same path. The\n * GPU device and compiled pipelines stay warm.\n */\ndeclare function resetRenderCaches(): void;\n//#endregion\n//#region src/logger.d.ts\n/**\n * \"json\" (pino lines, for log collectors) or \"text\" (one short line each, for\n * people and agents reading a terminal). `FRAMEFIELDS_LOG_FORMAT` picks one;\n * otherwise production is JSON and everything else text.\n */\ndeclare function resolveLogFormat(vars?: Record<string, string | undefined> | undefined): \"json\" | \"text\";\n/**\n * Turns pino's JSON lines into `[framefields] Rendered 40% (…)`: the message\n * without its `[Component]` prefix, the level only for warnings and errors,\n * and an error's message (its stack reaches the caller with the throw).\n */\ndeclare function textLogStream(write?: (line: string) => void): DestinationStream;\ndeclare const rendererLogger: pino.Logger<never, boolean>;\n//#endregion\n//#region src/node-manifest.d.ts\n/**\n * The `framefields` block of a node package's `package.json`.\n *\n * This is the single declaration of a node's op: renderer discovery, the\n * effects generator (`scripts/generate-effects.ts`) and the skill catalog all\n * read it from here. There is deliberately no fallback that derives an op from\n * the package name. See `spec/sync-node.md` §5.1.\n */\ndeclare const NODE_KINDS: readonly [\"effect\", \"audio\", \"source\", \"signal\", \"utility\"];\ntype NodeKind = (typeof NODE_KINDS)[number];\ninterface NodeRendererExports {\n development?: string;\n import?: string;\n default?: string;\n}\ninterface NodeManifest {\n /** Directory name under `nodes/`, e.g. `node-apply-lut`. */\n dir: string;\n /** Absolute path of the node package. */\n path: string;\n /** npm package name, e.g. `@framefields/node-lut`. */\n packageName: string;\n /** Canonical op literal used in the operation AST and the renderer registry. */\n type: string;\n kind: NodeKind;\n /** Legacy ops that resolve to the same renderer. */\n aliases: readonly string[];\n /** Named zod schema export of `src/shared/config.ts`. */\n schema?: string;\n /** Authoring class name. Defaults to `type`. */\n className?: string;\n /** Key on `Effect.*`. Defaults to `className` with a lower-cased first letter. */\n factory?: string;\n /** A hand-written subclass exists under `effects/custom/`. */\n custom: boolean;\n /** `false` when the package opts out of discovery. */\n enabled: boolean;\n rendererExports?: NodeRendererExports;\n}\ndeclare class NodeManifestError extends Error {\n readonly problems: readonly string[];\n constructor(problems: readonly string[]);\n}\n/**\n * Validates one parsed `package.json`. Returns the manifest, or the list of\n * problems that make it unusable. Never throws.\n */\ndeclare function parseNodeManifest(pkg: unknown, dir: string, nodePath?: string): {\n manifest?: NodeManifest;\n problems: string[];\n};\n/**\n * Reads every `nodes/node-*` package and returns its manifest, sorted by\n * directory name. Throws a single {@link NodeManifestError} listing every\n * problem: a missing or malformed block, or an op/alias claimed twice.\n */\ndeclare function loadNodeManifests(nodesDir: string): NodeManifest[];\n//#endregion\n//#region src/zero-copy-webcodecs-pipeline.d.ts\ninterface ZeroCopyWebCodecsPipelineOptions {\n readonly width: number;\n readonly height: number;\n readonly fps: number;\n readonly videoSource: VideoSampleSource;\n readonly ringCapacity?: number;\n readonly colorSpace?: VideoColorSpaceConfig;\n readonly directCanvasSource?: unknown;\n /**\n * Called with each frame's RGBA pixels, in frame order, just before it is\n * encoded (staging-ring path only). The buffer is reused: read, don't keep.\n */\n readonly onFrame?: (rgba: Uint8Array, frameIndex: number) => void;\n}\ninterface WebCodecsPipelineStats {\n readonly totalFramesEnqueued: number;\n readonly totalFramesEncoded: number;\n readonly averageGpuSubmitTimeMs: number;\n readonly averageEncodeTimeMs: number;\n readonly averageCycleTimeMs: number;\n readonly maxCycleTimeMs: number;\n readonly minCycleTimeMs: number;\n readonly throughputFps: number;\n readonly ringCapacity: number;\n readonly isDirectZeroCopy: boolean;\n}\n/**\n * High-performance hardware video encoding pipeline integrating WebGPU textures with WebCodecs.\n *\n * Provides:\n * 1. Direct hardware acceleration when running with WebCodecs / OffscreenCanvas.\n * 2. Pipelined asynchronous double-buffered DMA staging ring for headless Node.js (Dawn native),\n * allowing GPU Frame i+1 rendering to overlap concurrently with Frame i hardware encoding.\n */\ndeclare class ZeroCopyWebCodecsPipeline {\n readonly width: number;\n readonly height: number;\n readonly fps: number;\n readonly ringCapacity: number;\n private readonly device;\n private readonly videoSource;\n private readonly stagingRing;\n private readonly colorSpace?;\n private readonly directCanvasSource?;\n private readonly onFrame?;\n private readonly inFlightFrames;\n private readonly cycleStartTimes;\n private totalFramesEnqueued;\n private totalFramesEncoded;\n private totalGpuSubmitTimeMs;\n private totalEncodeTimeMs;\n private totalCycleTimeMs;\n private maxCycleTimeMs;\n private minCycleTimeMs;\n private pipelineStartTime;\n constructor(device: GPUDevice, options: ZeroCopyWebCodecsPipelineOptions);\n /**\n * Returns true if direct zero-copy from an OffscreenCanvas or texture is active.\n */\n canDirectZeroCopy(): boolean;\n /**\n * Enqueues a rendered GPU texture frame into the pipeline.\n *\n * Uses double-buffered DMA staging: if the staging ring has reached capacity,\n * the oldest in-flight frame is asynchronously consumed and added to the video encoder\n * before staging the new frame, guaranteeing constant bounded VRAM usage and zero GPU stalls.\n */\n enqueueFrame(frameIndex: number, targetTexture: GPUTexture, encoder: GPUCommandEncoder): Promise<void>;\n /**\n * Drains all remaining in-flight frames in the pipeline, ensuring every enqueued\n * frame has been encoded and added to the video sample source.\n */\n drain(): Promise<void>;\n /**\n * Returns runtime throughput, latency, and pipeline statistics.\n */\n getStats(): WebCodecsPipelineStats;\n /**\n * Destroys the pipeline and releases all staging buffers.\n */\n destroy(): void;\n private consumeAndEncode;\n}\n//#endregion\nexport { AudioQaStats, DmaStagingRing, DmaStagingRingOptions, FrameInspector, HeadlessMediaRenderer, HeadlessWebGPURenderer, NODE_KINDS, NodeKind, NodeManifest, NodeManifestError, NodeRendererExports, QaIssue, QaSegment, type RenderPhase, type RenderProgress, StagingSlotInfo, StagingSlotStatus, VideoColorSpaceConfig, VideoQaOptions, VideoQaReport, VideoQaStats, WebCodecsPipelineStats, ZeroCopyWebCodecsPipeline, ZeroCopyWebCodecsPipelineOptions, analyzeAudio, buildQaReport, discoverAndRegisterNodeRenderers, findNodesDir, formatQaReport, integratedLoudness, loadNodeManifests, parseNodeManifest, preloadFonts, renderSemaphore, rendererLogger, resetRenderCaches, resolveLogFormat, textLogStream };\n//# sourceMappingURL=index.d.mts.map"],"mappings":";;;;;;;;;;;;;KAmHKuB,WAAAA;;UAEKC,cAAAA;;;;;;SAMDD;;;;;;;;;;;;;;;;;;;;;;UAsBCE,cAAAA;;;;;;;;;;;;;;;;;;UAkBAC,SAAAA;;;;UAIAC,OAAAA;;;;;;;;;UASAC,YAAAA;;;;;;;;mCAQyBF;oCACCA;;UAE1BG,YAAAA;;;;;;;;;;;;oCAY0BH;;UAE1BI,aAAAA;;;mBAGSF;mBACAC;4BACSF;;;;;iBA+BXS,cAAAA,SAAuBN;;;cAG1BO,eAAAA;;;;;+BAKiB1B;;;;;;;;cAQjB2B,iBAAiBD;cACjBE,sBAAAA;;;;;;uBAMS5B;4BACKJ;;;;MAItBI,QAAQ6B;;;;sBAIQjC;sBACAA;;;;;;;;;MAShBI,QAAQ6B;;;;;4BAKcjC;;;MAGtBI;cACQsB;;;0BAGY1B,iDAAiDI,QAAQ6B;;4BAEvDjC;;;;;;;;;;;;;;;;;mBAiBTkB;;;;;aAKNgB;;;;;;4BAMejB;MACtBb;;mBAEaA;SACVmB;;;cAGKY,8BAA8BH;KACvCG,qBAAAA,GAAwBH;;;;;;;;;iBASZI,iBAAAA,CAAAA;;;;;;;;;;UC7UA,gBAAA;;;;AD8GZpB,UCzGY,gBAAA,CDyGD;EAENC;AAMU;AAsBI;EAsBdG,UAAO,CAAA,EAAA,MAAA;EASPC;AASmC;AAcA;EAK1BA,QAAAA,CAAAA,EAAAA,MAAAA;EACAC;;;EAgCFO,UAAAA,CAAAA,EAAAA,MAAc;EAGjBC;AAKwB;AAQQ;EAOvB1B,MAAAA,CAAAA,EAAAA,MAAAA,EAAAA;EACKJ;;;EAQNA,OAAAA,CAAAA,EAAAA,MAAAA;EACAA;;;EAcMA,KAAAA,CAAAA,EAAAA,MAAAA;EAId0B;;;EAGqEO,MAAAA,CAAAA,EAAAA,MAAAA;EAAR7B;;;EAwB9D8B,OAAAA,CAAAA,EAAAA,MAAAA,EAAAA;EAMejB;;;EACtBb,GAAAA,CAAAA,EAAAA,MAAAA;EAAO;AAAA;AAMqD;EAUjDgC,OAAAA,CAAAA,EAAAA,MAAAA;;;;AC7UjB;EAKiB,SAAA,CAAA,EAAA,MAAA;EA0HD;AAsGhB;AAiFA;EACmB,UAAA,CAAA,EAAA,MAAA;EAKN;;;EACD,GAAA,CAAA,EAAA,MAAA;EAWU;;;EAGX,OAAA,CAAA,EAAA,MAAA;EAAR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAlNS;;;;;iBAMI,mBAAA,UACN;WAGI;;;;;;iBAkGE,iBAAA,mDAGN;;;;;;;;;;;KA8EE,mBAAA;oBACO;;;;;eAKN;MACR,QAAQ;;;;;;;;;;iBAWS,eAAA,SACb,+BACC,mBACP,QAAQ"}
1
+ {"version":3,"file":"index-Cg30slle.d.mts","names":["pino","DestinationStream","VideoColorPrimaries","VideoFrame","VideoMatrixCoefficients","VideoTransferCharacteristics","RenderDiagnostic","VirtualMediaData","VideoSampleSource","preloadFonts","GPUDevice","Promise","StagingSlotStatus","VideoColorSpaceConfig","DmaStagingRingOptions","GPUTextureFormat","StagingSlotInfo","DmaStagingRing","GPUCommandEncoder","GPUTexture","Uint8Array","findNodesDir","discoverAndRegisterNodeRenderers","RenderPhase","RenderProgress","VideoQaOptions","QaSegment","QaIssue","VideoQaStats","AudioQaStats","VideoQaReport","FrameInspector","analyzeAudio","Float32Array","integratedLoudness","buildQaReport","formatQaReport","RenderSemaphore","renderSemaphore","HeadlessWebGPURenderer","Buffer","AbortSignal","HeadlessMediaRenderer","resetRenderCaches","resolveLogFormat","Record","textLogStream","rendererLogger","Logger","NODE_KINDS","NodeKind","NodeRendererExports","NodeManifest","NodeManifestError","Error","parseNodeManifest","loadNodeManifests","ZeroCopyWebCodecsPipelineOptions","WebCodecsPipelineStats","ZeroCopyWebCodecsPipeline"],"sources":["../../renderer/dist/index.d.mts","../src/renderer/framegrid.ts"],"sourcesContent":["import pino, { DestinationStream } from \"pino\";\nimport { VideoColorPrimaries, VideoFrame, VideoMatrixCoefficients, VideoTransferCharacteristics } from \"@napi-rs/webcodecs\";\nimport { RenderDiagnostic, VirtualMediaData } from \"@framefields/core\";\nimport { VideoSampleSource } from \"mediabunny\";\n\n//#region src/asset-preloader.d.ts\n\n/**\n * Preloads only the fonts (and emoji) a VirtualMediaData tree's text uses, so\n * typography renders correctly on Node.js without loading its media. Shared\n * with the browser preview; emoji need a font set with\n * `FontManager.registerEmojiFont()`.\n */\ndeclare function preloadFonts(media: VirtualMediaData, device?: GPUDevice | null): Promise<void>;\n//#endregion\n//#region src/dma-staging-ring.d.ts\ntype StagingSlotStatus = \"idle\" | \"rendering\" | \"mapping\" | \"mapped\";\ninterface VideoColorSpaceConfig {\n readonly primaries?: VideoColorPrimaries;\n readonly transfer?: VideoTransferCharacteristics;\n readonly matrix?: VideoMatrixCoefficients;\n readonly fullRange?: boolean;\n}\ninterface DmaStagingRingOptions {\n readonly width: number;\n readonly height: number;\n readonly capacity?: number;\n readonly format?: GPUTextureFormat;\n}\ninterface StagingSlotInfo {\n readonly index: number;\n readonly status: StagingSlotStatus;\n readonly inFlightFrame: number | null;\n}\n/**\n * Pipelined Asynchronous DMA Staging Ring for WebGPU.\n *\n * Implements double-buffered (or N-buffered) GPU staging buffers to overlap\n * GPU render passes with asynchronous DMA host transfers and WebCodecs hardware encoding.\n * Eliminates GPU stalls by allowing Frame i+1 to execute on the GPU while Frame i\n * is asynchronously mapped and consumed by the hardware video encoder.\n */\ndeclare class DmaStagingRing {\n readonly width: number;\n readonly height: number;\n readonly capacity: number;\n readonly bytesPerRow: number;\n readonly unpaddedBytesPerRow: number;\n readonly bufferSize: number;\n readonly format: GPUTextureFormat;\n readonly device: GPUDevice;\n private readonly slots;\n private isDestroyed;\n constructor(device: GPUDevice, options: DmaStagingRingOptions);\n /**\n * Prepares the staging buffer slot for writing by ensuring any prior mapping\n * from a previous cycle has been completed and unmapped.\n */\n prepareSlot(frameIndex: number): Promise<void>;\n /**\n * Records a GPU-to-buffer DMA copy command into the provided command encoder.\n */\n stageTexture(encoder: GPUCommandEncoder, texture: GPUTexture, frameIndex: number): void;\n /**\n * Initiates asynchronous DMA mapping on the slot for the specified frame.\n * Must be called immediately after submitting the command encoder to the device queue.\n */\n scheduleMap(frameIndex: number): Promise<void>;\n /**\n * Awaits asynchronous mapping and extracts pixels into a tightly packed Uint8Array.\n * The slot remains in the \"mapped\" state until releaseFrame() is called.\n */\n readFramePixels(frameIndex: number): Promise<Uint8Array>;\n /**\n * Awaits asynchronous mapping, extracts pixels, and immediately unmaps the staging buffer,\n * returning the slot to \"idle\" state so it can be reused immediately.\n */\n readAndReleaseFrame(frameIndex: number): Promise<Uint8Array>;\n /**\n * Directly reads the mapped staging buffer into a WebCodecs VideoFrame,\n * bypassing redundant intermediate JS allocations when row pitches align,\n * and immediately unmaps the buffer.\n */\n readFrameToVideoFrame(frameIndex: number, timestampUs: number, colorSpace?: VideoColorSpaceConfig, /** Sees the tightly packed RGBA pixels while they are mapped; must not keep them. */\n inspect?: (rgba: Uint8Array) => void): Promise<VideoFrame>;\n /**\n * Unmaps the staging buffer for the specified frame and marks the slot idle.\n */\n releaseFrame(frameIndex: number): void;\n /**\n * Returns current status info for each slot in the ring.\n */\n getSlotInfos(): readonly StagingSlotInfo[];\n /**\n * Destroys all staging buffers and releases resources.\n */\n destroy(): void;\n private checkDestroyed;\n}\n//#endregion\n//#region src/dynamic-node-discovery.d.ts\n/** Locates the workspace `nodes/` directory by climbing up from this file. */\ndeclare function findNodesDir(startDir?: string): string | null;\n/**\n * Registers the built-in node renderers, then any extra nodes found in the\n * directory named by `FRAMEFIELDS_NODES_DIR` (local node development). A node in\n * that directory overrides the built-in renderer for the same op.\n */\ndeclare function discoverAndRegisterNodeRenderers(): Promise<void>;\n//#endregion\n//#region src/render-reporter.d.ts\n/**\n * Stages of `renderVideo`, in order. Audio-only renders skip \"render\";\n * \"convert\" runs only for GIF output.\n */\ntype RenderPhase = \"prepare\" | \"render\" | \"audio\" | \"audio-encode\" | \"mux\" | \"convert\" | \"done\";\n/** Progress reported by `renderVideo({ onProgress })`. */\ninterface RenderProgress {\n /**\n * \"prepare\" loads fonts and warms the pipeline, \"render\" draws and encodes\n * frames, \"audio\" mixes the soundtrack, \"audio-encode\" encodes it, \"mux\"\n * writes the container, \"convert\" makes the GIF, \"done\" is the last event.\n */\n phase: RenderPhase;\n /** Frames finished so far (1-based); `totalFrames` once frames are done. */\n frame: number;\n totalFrames: number;\n /** Time since the render started. */\n elapsedMs: number;\n /** Share of the current phase done (0–1), when it can be measured. */\n phaseProgress?: number;\n /** Frames per second so far (\"render\" only). */\n fps?: number;\n /** Estimated seconds until the frames are done (\"render\" only). */\n etaSec?: number;\n /** What the phase is working on, e.g. \"3/7 sources: music.mp3\". */\n detail?: string;\n}\n//#endregion\n//#region src/video-qa.d.ts\n/**\n * Quality checks run on a video while it renders: frames are measured as\n * they are read back for the encoder and audio as it is mixed, so the report\n * describes exactly what was encoded without decoding the file again.\n */\ninterface VideoQaOptions {\n /** Luma (0-1) at or below which a pixel counts as black. Default 0.1. */\n readonly blackPixelThreshold?: number;\n /** Share of black pixels that makes a frame black. Default 0.98. */\n readonly blackFrameRatio?: number;\n /** Shortest run of black frames reported. Default 0.5 s. */\n readonly minBlackSec?: number;\n /** Shortest run of unchanging frames reported. Default 2 s. */\n readonly minFrozenSec?: number;\n /** Level (dBFS, 100 ms windows) below which audio counts as silent. Default -60. */\n readonly silenceDbfs?: number;\n /** Shortest silent stretch reported. Default 2 s. */\n readonly minSilenceSec?: number;\n /** Integrated loudness to hit, e.g. -14 for most streaming platforms. Unchecked when unset. */\n readonly targetLufs?: number;\n /** Allowed distance from `targetLufs`, in LU. Default 1. */\n readonly lufsTolerance?: number;\n}\ninterface QaSegment {\n readonly startSec: number;\n readonly endSec: number;\n}\ninterface QaIssue {\n readonly severity: \"error\" | \"warning\" | \"info\";\n /** Stable machine-readable kind, e.g. \"black_frames\", \"audio_clipping\" */\n readonly code: string;\n readonly message: string;\n readonly startSec?: number;\n readonly endSec?: number;\n readonly layerId?: string;\n}\ninterface VideoQaStats {\n readonly expectedFrames: number;\n readonly encodedFrames: number;\n readonly fps: number;\n readonly width: number;\n readonly height: number;\n /** Average luma over the whole video, 0-1 */\n readonly meanLuma: number;\n readonly blackSegments: readonly QaSegment[];\n readonly frozenSegments: readonly QaSegment[];\n}\ninterface AudioQaStats {\n readonly sampleRate: number;\n readonly channels: number;\n readonly durationSec: number;\n /** Highest sample, dBFS (sample peak, not true peak) */\n readonly peakDbfs: number;\n /** Mean level over the whole track, dBFS */\n readonly rmsDbfs: number;\n /** ITU-R BS.1770 integrated loudness; null when the track is silent */\n readonly integratedLufs: number | null;\n /** Samples at or beyond full scale */\n readonly clippedSamples: number;\n readonly silentSegments: readonly QaSegment[];\n}\ninterface VideoQaReport {\n /** No errors or warnings (info issues do not fail a render) */\n readonly passed: boolean;\n readonly video?: VideoQaStats;\n readonly audio?: AudioQaStats;\n readonly issues: readonly QaIssue[];\n}\n/** Measures frames handed to it in order, as RGBA bytes. */\ndeclare class FrameInspector {\n private readonly blackLuma;\n private readonly blackRatio;\n private readonly black;\n private readonly sameAsPrevious;\n private lumaSum;\n private previous;\n constructor(options?: VideoQaOptions);\n get frameCount(): number;\n inspect(rgba: Uint8Array, width: number, height: number): void;\n stats(expectedFrames: number, encodedFrames: number, fps: number, width: number, height: number, options?: VideoQaOptions): VideoQaStats;\n}\n/** Measures a mixed audio track (one Float32Array per channel). */\ndeclare function analyzeAudio(channels: readonly Float32Array[], sampleRate: number, options?: VideoQaOptions): AudioQaStats;\n/**\n * ITU-R BS.1770-4 integrated loudness (LUFS): K-weighted mean square in\n * 400 ms blocks with 75% overlap, gated at -70 LUFS and then at 10 LU below\n * the mean of what passed. Channels weigh 1 (stereo and mono layouts).\n */\ndeclare function integratedLoudness(channels: readonly Float32Array[], sampleRate: number): number | null;\n/** Turn measurements and document diagnostics into a report with issues. */\ndeclare function buildQaReport(parts: {\n video?: VideoQaStats;\n audio?: AudioQaStats;\n diagnostics?: readonly RenderDiagnostic[];\n options?: VideoQaOptions;\n}): VideoQaReport;\n/** A short human- and agent-readable summary of a report. */\ndeclare function formatQaReport(report: VideoQaReport): string;\n//#endregion\n//#region src/headless-webgpu-renderer.d.ts\ndeclare class RenderSemaphore {\n private _running;\n private readonly _max;\n private readonly _queue;\n constructor(max: number);\n acquire(timeoutMs?: number): Promise<void>;\n release(): void;\n get stats(): {\n active: number;\n queued: number;\n max: number;\n };\n}\ndeclare const renderSemaphore: RenderSemaphore;\ndeclare class HeadlessWebGPURenderer {\n private static isInitialized;\n private static initPromise;\n private static initFailureCount;\n private static readonly MAX_INIT_FAILURES;\n private static nextRetryAt;\n static initialize(): Promise<void>;\n renderImage(virtualMedia: VirtualMediaData, frame?: number, fps?: number, options?: {\n renderId?: string;\n /** \"rgba\" skips PNG encoding and returns width*height*4 raw pixels. */\n format?: \"png\" | \"rgba\";\n }): Promise<Buffer>;\n /**\n * Renders a single frame to a PNG buffer at a specified timestamp in milliseconds or frame index.\n */\n renderFrame(source: VirtualMediaData | {\n toVirtualMedia(): VirtualMediaData;\n }, options?: {\n atMs?: number;\n frame?: number;\n fps?: number;\n /** Reuse compiled state across calls; see `renderImage`. */\n renderId?: string;\n /** \"rgba\" returns raw width*height*4 pixels instead of a PNG. */\n format?: \"png\" | \"rgba\";\n }): Promise<Buffer>;\n /**\n * Mixes the composition's full audio timeline (clips, effects, synthesized\n * tracks) to stereo PCM, exactly as `renderVideo` muxes it.\n */\n renderAudio(virtualMedia: VirtualMediaData, options?: {\n fps?: number;\n sampleRate?: number;\n }): Promise<{\n channels: Float32Array[];\n sampleRate: number;\n }>;\n renderLut(virtualMedia: VirtualMediaData, frame?: number, fps?: number): Promise<Buffer>;\n private resolveMediaDuration;\n renderVideo(virtualMedia: VirtualMediaData, options?: {\n codec?: string;\n audioCodec?: string;\n quality?: string;\n concurrency?: number;\n /**\n * Depth of the DMA staging ring (default 2, clamped 2–8). A deeper\n * ring overlaps more encoder latency at the cost of VRAM\n * (~8.3MB/slot at 1080p RGBA). Also settable via\n * `FRAMEFIELDS_RING_CAPACITY`.\n */\n ringCapacity?: number;\n /**\n * Measure the output while it renders (black and frozen frames,\n * dropped frames, loudness, clipping, silence, document warnings)\n * and return the findings as `qa`. `true` uses default thresholds.\n */\n qa?: boolean | VideoQaOptions;\n /**\n * Aborts the render between frames; the promise rejects with\n * `signal.reason` and the partial output is deleted.\n */\n signal?: AbortSignal;\n /**\n * Called as the render moves through its phases: \"prepare\", each\n * frame (\"render\"), \"audio\" (mixing, per clip), \"audio-encode\",\n * \"mux\", \"convert\" (GIF only) and \"done\".\n */\n onProgress?: (progress: RenderProgress) => void;\n }): Promise<{\n filePath: string;\n cleanup: () => Promise<void>;\n qa?: VideoQaReport;\n }>;\n}\ndeclare const HeadlessMediaRenderer: typeof HeadlessWebGPURenderer;\ntype HeadlessMediaRenderer = HeadlessWebGPURenderer;\n//#endregion\n//#region src/job-reset.d.ts\n/**\n * Drops every cache keyed by a file path or URL: media inputs and decoders,\n * textures, LUTs, fonts and downloaded font files. A long-lived worker calls this between jobs,\n * because the next checkout may hold different bytes at the same path. The\n * GPU device and compiled pipelines stay warm.\n */\ndeclare function resetRenderCaches(): void;\n//#endregion\n//#region src/logger.d.ts\n/**\n * \"json\" (pino lines, for log collectors) or \"text\" (one short line each, for\n * people and agents reading a terminal). `FRAMEFIELDS_LOG_FORMAT` picks one;\n * otherwise production is JSON and everything else text.\n */\ndeclare function resolveLogFormat(vars?: Record<string, string | undefined> | undefined): \"json\" | \"text\";\n/**\n * Turns pino's JSON lines into `[framefields] Rendered 40% (…)`: the message\n * without its `[Component]` prefix, the level only for warnings and errors,\n * and an error's message (its stack reaches the caller with the throw).\n */\ndeclare function textLogStream(write?: (line: string) => void): DestinationStream;\ndeclare const rendererLogger: pino.Logger<never, boolean>;\n//#endregion\n//#region src/node-manifest.d.ts\n/**\n * The `framefields` block of a node package's `package.json`.\n *\n * This is the single declaration of a node's op: renderer discovery, the\n * effects generator (`scripts/generate-effects.ts`) and the skill catalog all\n * read it from here. There is deliberately no fallback that derives an op from\n * the package name. See `spec/sync-node.md` §5.1.\n */\ndeclare const NODE_KINDS: readonly [\"effect\", \"audio\", \"source\", \"signal\", \"utility\"];\ntype NodeKind = (typeof NODE_KINDS)[number];\ninterface NodeRendererExports {\n development?: string;\n import?: string;\n default?: string;\n}\ninterface NodeManifest {\n /** Directory name under `nodes/`, e.g. `node-apply-lut`. */\n dir: string;\n /** Absolute path of the node package. */\n path: string;\n /** npm package name, e.g. `@framefields/node-lut`. */\n packageName: string;\n /** Canonical op literal used in the operation AST and the renderer registry. */\n type: string;\n kind: NodeKind;\n /** Legacy ops that resolve to the same renderer. */\n aliases: readonly string[];\n /** Named zod schema export of `src/shared/config.ts`. */\n schema?: string;\n /** Authoring class name. Defaults to `type`. */\n className?: string;\n /** Key on `Effect.*`. Defaults to `className` with a lower-cased first letter. */\n factory?: string;\n /** A hand-written subclass exists under `effects/custom/`. */\n custom: boolean;\n /** `false` when the package opts out of discovery. */\n enabled: boolean;\n rendererExports?: NodeRendererExports;\n}\ndeclare class NodeManifestError extends Error {\n readonly problems: readonly string[];\n constructor(problems: readonly string[]);\n}\n/**\n * Validates one parsed `package.json`. Returns the manifest, or the list of\n * problems that make it unusable. Never throws.\n */\ndeclare function parseNodeManifest(pkg: unknown, dir: string, nodePath?: string): {\n manifest?: NodeManifest;\n problems: string[];\n};\n/**\n * Reads every `nodes/node-*` package and returns its manifest, sorted by\n * directory name. Throws a single {@link NodeManifestError} listing every\n * problem: a missing or malformed block, or an op/alias claimed twice.\n */\ndeclare function loadNodeManifests(nodesDir: string): NodeManifest[];\n//#endregion\n//#region src/zero-copy-webcodecs-pipeline.d.ts\ninterface ZeroCopyWebCodecsPipelineOptions {\n readonly width: number;\n readonly height: number;\n readonly fps: number;\n readonly videoSource: VideoSampleSource;\n readonly ringCapacity?: number;\n readonly colorSpace?: VideoColorSpaceConfig;\n readonly directCanvasSource?: unknown;\n /**\n * Called with each frame's RGBA pixels, in frame order, just before it is\n * encoded (staging-ring path only). The buffer is reused: read, don't keep.\n */\n readonly onFrame?: (rgba: Uint8Array, frameIndex: number) => void;\n}\ninterface WebCodecsPipelineStats {\n readonly totalFramesEnqueued: number;\n readonly totalFramesEncoded: number;\n readonly averageGpuSubmitTimeMs: number;\n readonly averageEncodeTimeMs: number;\n readonly averageCycleTimeMs: number;\n readonly maxCycleTimeMs: number;\n readonly minCycleTimeMs: number;\n readonly throughputFps: number;\n readonly ringCapacity: number;\n readonly isDirectZeroCopy: boolean;\n}\n/**\n * High-performance hardware video encoding pipeline integrating WebGPU textures with WebCodecs.\n *\n * Provides:\n * 1. Direct hardware acceleration when running with WebCodecs / OffscreenCanvas.\n * 2. Pipelined asynchronous double-buffered DMA staging ring for headless Node.js (Dawn native),\n * allowing GPU Frame i+1 rendering to overlap concurrently with Frame i hardware encoding.\n */\ndeclare class ZeroCopyWebCodecsPipeline {\n readonly width: number;\n readonly height: number;\n readonly fps: number;\n readonly ringCapacity: number;\n private readonly device;\n private readonly videoSource;\n private readonly stagingRing;\n private readonly colorSpace?;\n private readonly directCanvasSource?;\n private readonly onFrame?;\n private readonly inFlightFrames;\n private readonly cycleStartTimes;\n private totalFramesEnqueued;\n private totalFramesEncoded;\n private totalGpuSubmitTimeMs;\n private totalEncodeTimeMs;\n private totalCycleTimeMs;\n private maxCycleTimeMs;\n private minCycleTimeMs;\n private pipelineStartTime;\n constructor(device: GPUDevice, options: ZeroCopyWebCodecsPipelineOptions);\n /**\n * Returns true if direct zero-copy from an OffscreenCanvas or texture is active.\n */\n canDirectZeroCopy(): boolean;\n /**\n * Enqueues a rendered GPU texture frame into the pipeline.\n *\n * Uses double-buffered DMA staging: if the staging ring has reached capacity,\n * the oldest in-flight frame is asynchronously consumed and added to the video encoder\n * before staging the new frame, guaranteeing constant bounded VRAM usage and zero GPU stalls.\n */\n enqueueFrame(frameIndex: number, targetTexture: GPUTexture, encoder: GPUCommandEncoder): Promise<void>;\n /**\n * Drains all remaining in-flight frames in the pipeline, ensuring every enqueued\n * frame has been encoded and added to the video sample source.\n */\n drain(): Promise<void>;\n /**\n * Returns runtime throughput, latency, and pipeline statistics.\n */\n getStats(): WebCodecsPipelineStats;\n /**\n * Destroys the pipeline and releases all staging buffers.\n */\n destroy(): void;\n private consumeAndEncode;\n}\n//#endregion\nexport { AudioQaStats, DmaStagingRing, DmaStagingRingOptions, FrameInspector, HeadlessMediaRenderer, HeadlessWebGPURenderer, NODE_KINDS, NodeKind, NodeManifest, NodeManifestError, NodeRendererExports, QaIssue, QaSegment, type RenderPhase, type RenderProgress, StagingSlotInfo, StagingSlotStatus, VideoColorSpaceConfig, VideoQaOptions, VideoQaReport, VideoQaStats, WebCodecsPipelineStats, ZeroCopyWebCodecsPipeline, ZeroCopyWebCodecsPipelineOptions, analyzeAudio, buildQaReport, discoverAndRegisterNodeRenderers, findNodesDir, formatQaReport, integratedLoudness, loadNodeManifests, parseNodeManifest, preloadFonts, renderSemaphore, rendererLogger, resetRenderCaches, resolveLogFormat, textLogStream };\n//# sourceMappingURL=index.d.mts.map"],"mappings":";;;;;;;;;;;;;KAmHKuB,WAAAA;;UAEKC,cAAAA;;;;;;SAMDD;;;;;;;;;;;;;;;;;;;;;;UAsBCE,cAAAA;;;;;;;;;;;;;;;;;;UAkBAC,SAAAA;;;;UAIAC,OAAAA;;;;;;;;;UASAC,YAAAA;;;;;;;;mCAQyBF;oCACCA;;UAE1BG,YAAAA;;;;;;;;;;;;oCAY0BH;;UAE1BI,aAAAA;;;mBAGSF;mBACAC;4BACSF;;;;;iBA+BXS,cAAAA,SAAuBN;;;cAG1BO,eAAAA;;;;;+BAKiB1B;;;;;;;;cAQjB2B,iBAAiBD;cACjBE,sBAAAA;;;;;;uBAMS5B;4BACKJ;;;;MAItBI,QAAQ6B;;;;sBAIQjC;sBACAA;;;;;;;;;MAShBI,QAAQ6B;;;;;4BAKcjC;;;MAGtBI;cACQsB;;;0BAGY1B,iDAAiDI,QAAQ6B;;4BAEvDjC;;;;;;;;;;;;;;;;;mBAiBTkB;;;;;aAKNgB;;;;;;4BAMejB;MACtBb;;mBAEaA;SACVmB;;;cAGKY,8BAA8BH;KACvCG,qBAAAA,GAAwBH;;;;;;;;;iBASZI,iBAAAA,CAAAA;;;;;;;;;;UC7UA,gBAAA;;;;AD8GZpB,UCzGY,gBAAA,CDyGD;EAENC;AAMU;AAsBI;EAsBdG,UAAO,CAAA,EAAA,MAAA;EASPC;AASmC;AAcA;EAK1BA,QAAAA,CAAAA,EAAAA,MAAAA;EACAC;;;EAgCFO,UAAAA,CAAAA,EAAAA,MAAc;EAGjBC;AAKwB;AAQQ;EAOvB1B,MAAAA,CAAAA,EAAAA,MAAAA,EAAAA;EACKJ;;;EAQNA,OAAAA,CAAAA,EAAAA,MAAAA;EACAA;;;EAcMA,KAAAA,CAAAA,EAAAA,MAAAA;EAId0B;;;EAGqEO,MAAAA,CAAAA,EAAAA,MAAAA;EAAR7B;;;EAwB9D8B,OAAAA,CAAAA,EAAAA,MAAAA,EAAAA;EAMejB;;;EACtBb,GAAAA,CAAAA,EAAAA,MAAAA;EAAO;AAAA;AAMqD;EAUjDgC,OAAAA,CAAAA,EAAAA,MAAAA;;;;AC7UjB;EAKiB,SAAA,CAAA,EAAA,MAAA;EA0HD;AAsGhB;AAiFA;EACmB,UAAA,CAAA,EAAA,MAAA;EAKN;;;EACD,GAAA,CAAA,EAAA,MAAA;EAWU;;;EAGX,OAAA,CAAA,EAAA,MAAA;EAAR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAlNS;;;;;iBAMI,mBAAA,UACN;WAGI;;;;;;iBAkGE,iBAAA,mDAGN;;;;;;;;;;;KA8EE,mBAAA;oBACO;;;;;eAKN;MACR,QAAQ;;;;;;;;;;iBAWS,eAAA,SACb,+BACC,mBACP,QAAQ"}
@@ -1,4 +1,4 @@
1
- import { c as HeadlessMediaRenderer } from "./index-BhzlG_1Q.mjs";
1
+ import { c as HeadlessMediaRenderer } from "./index-Cg30slle.mjs";
2
2
 
3
3
  //#region src/preview/index.d.ts
4
4
  /** Where the composition comes from: the module that builds it. */
@@ -86,4 +86,4 @@ interface PreviewSession {
86
86
  declare function startPreview(source: PreviewSource, options?: PreviewOptions): Promise<PreviewSession>;
87
87
  //#endregion
88
88
  export { startPreview as a, PreviewSource as i, PreviewOptions as n, PreviewSession as r, PreviewCloseReason as t };
89
- //# sourceMappingURL=index-B4o6F1JC.d.mts.map
89
+ //# sourceMappingURL=index-DeeMmoEA.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-B4o6F1JC.d.mts","names":[],"sources":["../src/preview/index.ts"],"sourcesContent":[],"mappings":";;;;UAqBiB,aAAA;EAAA;EAqBA,KAAA,EAAA,MAAA,GAnBA,GAmBc;EAoDnB;AAQZ;;;EAIS,MAAA,CAAA,EAAA,MAAA;;AAoCa,UApGL,cAAA,CAoGiB;EACzB;;;;;;;;;;;;;;;;;;;aAjFG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCA,kBAAA;;;;UAQK,cAAA;;WAEP;;UAED,QAAQ;;;;;;;;;;;;;iBAoCK,YAAA,SACb,yBACC,iBACP,QAAQ"}
1
+ {"version":3,"file":"index-DeeMmoEA.d.mts","names":[],"sources":["../src/preview/index.ts"],"sourcesContent":[],"mappings":";;;;UAqBiB,aAAA;EAAA;EAsBA,KAAA,EAAA,MAAA,GApBA,GAoBc;EAoDnB;AAQZ;;;EAIS,MAAA,CAAA,EAAA,MAAA;;AAoCa,UApGL,cAAA,CAoGiB;EACzB;;;;;;;;;;;;;;;;;;;aAjFG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCA,kBAAA;;;;UAQK,cAAA;;WAEP;;UAED,QAAQ;;;;;;;;;;;;;iBAoCK,YAAA,SACb,yBACC,iBACP,QAAQ"}
@@ -1,7 +1,7 @@
1
- import { $i as MediaSourceInput, A as SlugFontCache, Ba as Signal, Ei as FrameContext, Et as KineticMarqueeConfig, Ia as RenderDiagnostic, M as SphereGeometryOptions, Ma as ProgrammaticSignal, No as VisionTask, Oi as FrameSignal, Y as AETextAnimator, Z as AdvancedTextAnimator, ba as NormalRelightingOptions, ci as DeflickerOptions, fi as Effect$1, fo as TextSpan, hi as EffectDomain, ii as DataType, in as TextPathOptions, ko as VirtualMediaData, qi as MediaMetadata, ta as MeshAudioDeformConfig, u as CylinderGeometryOptions, vn as TypewriterAnimator, w as RoundedBoxGeometryOptions } from "./index-ocZc12ZS.mjs";
1
+ import { A as SlugFontCache, Bo as VirtualMediaData, Co as TextSpan, Di as FrameContext, Et as KineticMarqueeConfig, Ga as RenderDiagnostic, Ji as MediaMetadata, Ka as ResolvedMediaTimeRemap, M as SphereGeometryOptions, Va as ProgrammaticSignal, Wo as VisionTask, Y as AETextAnimator, Z as AdvancedTextAnimator, Za as Signal, aa as MediaTimeRemapInput, ca as MediaTimeSignalRemap, ci as DeflickerOptions, fi as Effect$1, hi as EffectDomain, ii as DataType, in as TextPathOptions, ka as NormalRelightingOptions, ki as FrameSignal, ta as MediaSourceInput, u as CylinderGeometryOptions, ua as MeshAudioDeformConfig, vn as TypewriterAnimator, w as RoundedBoxGeometryOptions } from "./index-B1ENegOQ.mjs";
2
2
  import { i as RegisterFontOptions } from "./index-j5LGVVbm.mjs";
3
- import { $n as ResizerScalerProps, $t as FlipProps, An as Paint, At as CameraParallax3DProps, B as PBRGlass, Bn as Pixelate, Bt as ContourProps, C as GradientMapProps, Cn as MeshWarp, Ct as AudioParametricEq, D as HalftoneScreen, Dn as NoiseGeneratorProps, Dt as CRT, Ei as TensorPipeline, En as NoiseGenerator, Et as AudioReverbProps, F as LevelsProps, Fn as Painterly, Ft as ColorBalance, G as SSAOProps, Gn as ProceduralVFXProps, Gt as DatamoshProps, H as Relight3D, Hn as Posterize, I as Modulate, In as PainterlyProps, It as ColorBalanceProps, J as SelectiveColorProps, Jn as RefineEdge, Jr as ClipSubjectSource, Jt as Dither, K as SelectiveColor, Kn as RGBSplit, Kr as COCO17_KEYPOINT_NAMES, Kt as DisplacementMap, L as ModulateProps, Ln as PatchHeal, Lt as ColorKey, M as HighPassProps, Mt as ChannelMergerProps, Nt as ChannelSplitter, O as HalftoneScreenProps, On as OpArt, Ot as CRTProps, P as Levels, Pt as ChannelSplitterProps, Q as TileOffset, Qn as ResizerScaler, Qt as Flip, R as MotionBlur, Rt as ColorKeyProps, S as GradientMap, Sn as MaskMathProps, St as AudioNoiseGateProps, Tn as MeshWarpProps, Tt as AudioReverb, U as Relight3DProps, Un as PosterizeProps, Ut as CornerPinProps, V as PBRGlassProps, Vn as PixelateProps, Vt as CornerPin, W as SSAO, Wn as ProceduralVFX, Wt as Datamosh, X as ShadowsHighlightsProps, Xn as RefractionCaustics3D, Xr as LandmarkCoordinateSignals, Xt as ExtractLUT, Y as ShadowsHighlights, Yn as RefineEdgeProps, Yr as InstanceMask, Yt as DitherProps, Z as TemporalDeflicker, Zn as RefractionCaustics3DProps, Zr as MaskTrackSignals, Zt as ExtractLUTProps, _t as AudioDelay, a as ApplyLUTProps, ai as PinToLandmarkOptions, an as KaleidoscopeProps, ar as Toon, b as FilmGrain, bn as LiquifyProps, bt as AudioFadeProps, c as Crop, cn as KenBurnsProps, cr as TrailsProps, dr as EffectProp, dt as Blur, en as Gooey, er as Rotate, et as TileOffsetProps, f as CurvesProps, ft as BlurProps, g as DepthOfFieldProps, gi as VisionNode, gn as LayerStyleProps, gt as AudioCompressorProps, h as DepthOfField, hi as VisionBundle, ht as AudioCompressor, i as ApplyLUT, in as Kaleidoscope, it as VisionProps, j as HighPass, jn as PaintProps, jt as ChannelMerger, kn as OpArtProps, kt as CameraParallax3D, l as CropProps, ln as LayerStyle, lr as Vignette, m as DeflickerProps, mi as VisionAnalysisReport, mt as AsciiProps, n as AnyEffect, nn as Iridescence, nr as StereoPanning, nt as UnsharpMaskProps, oi as PinToObjectOptions, on as KenBurns, or as ToonProps, p as CustomEffect, pt as Ascii, qn as RGBSplitProps, qt as DisplacementMapProps, r as AnyVisualEffect, ri as ObjectTrackSignals, rn as IridescenceProps, rr as StereoPanningProps, rt as Vision, sr as Trails, t as AnyAudioEffect, tn as GooeyProps, tr as RotateProps, tt as UnsharpMask, u as Curves, ur as VignetteProps, vn as Liquify, vt as AudioDelayProps, wt as AudioParametricEqProps, x as FilmGrainProps, xn as MaskMath, xt as AudioNoiseGate, yt as AudioFade, z as MotionBlurProps, zn as PatchHealProps, zt as Contour } from "./index-D-Gnyffj.mjs";
4
- import { c as HeadlessMediaRenderer, f as RenderProgress, m as VideoQaReport, p as VideoQaOptions, t as FrameGridOptions } from "./index-BhzlG_1Q.mjs";
3
+ import { $n as ResizerScalerProps, $t as FlipProps, An as Paint, At as CameraParallax3DProps, B as PBRGlass, Bn as Pixelate, Bt as ContourProps, C as GradientMapProps, Cn as MeshWarp, Ct as AudioParametricEq, D as HalftoneScreen, Dn as NoiseGeneratorProps, Dt as CRT, Ei as TensorPipeline, En as NoiseGenerator, Et as AudioReverbProps, F as LevelsProps, Fn as Painterly, Ft as ColorBalance, G as SSAOProps, Gn as ProceduralVFXProps, Gt as DatamoshProps, H as Relight3D, Hn as Posterize, I as Modulate, In as PainterlyProps, It as ColorBalanceProps, J as SelectiveColorProps, Jn as RefineEdge, Jr as ClipSubjectSource, Jt as Dither, K as SelectiveColor, Kn as RGBSplit, Kr as COCO17_KEYPOINT_NAMES, Kt as DisplacementMap, L as ModulateProps, Ln as PatchHeal, Lt as ColorKey, M as HighPassProps, Mt as ChannelMergerProps, Nt as ChannelSplitter, O as HalftoneScreenProps, On as OpArt, Ot as CRTProps, P as Levels, Pt as ChannelSplitterProps, Q as TileOffset, Qn as ResizerScaler, Qt as Flip, R as MotionBlur, Rt as ColorKeyProps, S as GradientMap, Sn as MaskMathProps, St as AudioNoiseGateProps, Tn as MeshWarpProps, Tt as AudioReverb, U as Relight3DProps, Un as PosterizeProps, Ut as CornerPinProps, V as PBRGlassProps, Vn as PixelateProps, Vt as CornerPin, W as SSAO, Wn as ProceduralVFX, Wt as Datamosh, X as ShadowsHighlightsProps, Xn as RefractionCaustics3D, Xr as LandmarkCoordinateSignals, Xt as ExtractLUT, Y as ShadowsHighlights, Yn as RefineEdgeProps, Yr as InstanceMask, Yt as DitherProps, Z as TemporalDeflicker, Zn as RefractionCaustics3DProps, Zr as MaskTrackSignals, Zt as ExtractLUTProps, _t as AudioDelay, a as ApplyLUTProps, ai as PinToLandmarkOptions, an as KaleidoscopeProps, ar as Toon, b as FilmGrain, bn as LiquifyProps, bt as AudioFadeProps, c as Crop, cn as KenBurnsProps, cr as TrailsProps, dr as EffectProp, dt as Blur, en as Gooey, er as Rotate, et as TileOffsetProps, f as CurvesProps, ft as BlurProps, g as DepthOfFieldProps, gi as VisionNode, gn as LayerStyleProps, gt as AudioCompressorProps, h as DepthOfField, hi as VisionBundle, ht as AudioCompressor, i as ApplyLUT, in as Kaleidoscope, it as VisionProps, j as HighPass, jn as PaintProps, jt as ChannelMerger, kn as OpArtProps, kt as CameraParallax3D, l as CropProps, ln as LayerStyle, lr as Vignette, m as DeflickerProps, mi as VisionAnalysisReport, mt as AsciiProps, n as AnyEffect, nn as Iridescence, nr as StereoPanning, nt as UnsharpMaskProps, oi as PinToObjectOptions, on as KenBurns, or as ToonProps, p as CustomEffect, pt as Ascii, qn as RGBSplitProps, qt as DisplacementMapProps, r as AnyVisualEffect, ri as ObjectTrackSignals, rn as IridescenceProps, rr as StereoPanningProps, rt as Vision, sr as Trails, t as AnyAudioEffect, tn as GooeyProps, tr as RotateProps, tt as UnsharpMask, u as Curves, ur as VignetteProps, vn as Liquify, vt as AudioDelayProps, wt as AudioParametricEqProps, x as FilmGrainProps, xn as MaskMath, xt as AudioNoiseGate, yt as AudioFade, z as MotionBlurProps, zn as PatchHealProps, zt as Contour } from "./index-CJRTBLZ4.mjs";
4
+ import { c as HeadlessMediaRenderer, f as RenderProgress, m as VideoQaReport, p as VideoQaOptions, t as FrameGridOptions } from "./index-Cg30slle.mjs";
5
5
  import { z, z as z$2 } from "zod";
6
6
  import { Yoga } from "yoga-layout/load";
7
7
 
@@ -890,6 +890,8 @@ interface MediaNode extends CompositionNodeBase {
890
890
  muted?: boolean;
891
891
  /** Source in-point: seconds into the clip that play at the layer's startFrame. */
892
892
  trimStartSec?: number;
893
+ /** Layer-local frame to absolute source time mapping. */
894
+ timeRemap?: MediaTimeRemapInput;
893
895
  fontFamily?: string;
894
896
  fontSize?: number;
895
897
  fontWeight?: number | string;
@@ -1669,17 +1671,13 @@ declare function lintComposition(config: Pick<CompositorProgramConfig, "width" |
1669
1671
  /** Returns the tree with every `matte` turned into a sibling matte layer. */
1670
1672
  declare function hoistMattes<T extends LayoutNode>(nodes: readonly T[]): T[];
1671
1673
  //#endregion
1672
- //#region src/program/path-morph.d.ts
1673
- /**
1674
- * Shape morphing: interpolates between two SVG path strings.
1675
- *
1676
- * Both paths are flattened to polylines, resampled to the same number of
1677
- * points by arc length, and the second is rotated (and reversed if it winds
1678
- * the other way) so its points line up with the first's. Subpaths pair up in
1679
- * order; a subpath with no partner grows from (or shrinks to) the center of
1680
- * the one it pairs with. The result is a polygon path string.
1681
- */
1682
-
1674
+ //#region src/program/media-signal.d.ts
1675
+ /** Where a signal-driven media layer sits on the composition clock. */
1676
+ interface MediaSignalLayer {
1677
+ id?: string;
1678
+ startFrame: number;
1679
+ durationFrames: number;
1680
+ }
1683
1681
  //#endregion
1684
1682
  //#region src/program/sequence.d.ts
1685
1683
  /**
@@ -1867,7 +1865,13 @@ interface CompositorToProgramOptions {
1867
1865
  effects?: ProgramEffect[];
1868
1866
  /** Composition-wide vision config or bundle. */
1869
1867
  vision?: unknown;
1868
+ /**
1869
+ * Resolve a signal `timeRemap` to the history its consumers read. By
1870
+ * default the signal is sampled up front on the composition clock.
1871
+ */
1872
+ resolveMediaSignal?: MediaSignalResolver;
1870
1873
  }
1874
+ type MediaSignalResolver = (binding: MediaTimeSignalRemap, layer: MediaSignalLayer) => ResolvedMediaTimeRemap;
1871
1875
  declare function compositorToProgram(config: CompositorProgramConfig, options: CompositorToProgramOptions): VirtualMediaData;
1872
1876
  /** Recursively gather every node op from a render tree (in order). */
1873
1877
  declare function collectNodeOps(nodes: VirtualMediaData[]): VirtualMediaData[];
@@ -3865,6 +3869,10 @@ interface ClipVisionOptions {
3865
3869
  startFrame?: number;
3866
3870
  /** Seconds trimmed off the clip's start, as on its media layer (default 0). */
3867
3871
  trimStartSec?: number;
3872
+ /** The media layer's source-time mapping. */
3873
+ timeRemap?: ResolvedMediaTimeRemap;
3874
+ /** Media layer duration in composition frames, when known. */
3875
+ durationFrames?: number;
3868
3876
  /** Analysis frame rate (default: the composition's). */
3869
3877
  fps?: number;
3870
3878
  /** Track 17 COCO keypoints (default true). */
@@ -3922,6 +3930,7 @@ interface Transform {
3922
3930
  declare class ClipVision implements ClipSubjectSource {
3923
3931
  readonly source: string;
3924
3932
  readonly fps: number;
3933
+ readonly compositionFps: number;
3925
3934
  readonly startFrame: number;
3926
3935
  readonly trimStartSec: number;
3927
3936
  readonly smoothing: number;
@@ -3971,6 +3980,7 @@ declare class ClipVision implements ClipSubjectSource {
3971
3980
  subject(frame: number, fps: number): InstanceMask | null | undefined;
3972
3981
  /** Composition frame → clip frame (fractional). */
3973
3982
  clipFrame(frame: number): number;
3983
+ private localFrame;
3974
3984
  private window;
3975
3985
  private analysed;
3976
3986
  private compute;
@@ -5982,6 +5992,7 @@ declare class Composition {
5982
5992
  private _frameHooks;
5983
5993
  private _prepareHooks;
5984
5994
  private readonly _clipVision;
5995
+ private _mediaSignals?;
5985
5996
  private _visionConfig?;
5986
5997
  private _visionBundle?;
5987
5998
  private _effects;
@@ -6003,7 +6014,7 @@ declare class Composition {
6003
6014
  * analysed just before it renders, so nothing runs up front. Results
6004
6015
  * persist on disk in Node. The same clip and options return one instance.
6005
6016
  */
6006
- vision(source: string, options?: ClipVisionOptions): ClipVision;
6017
+ vision(sourceOrLayer: string | MediaNode, options?: ClipVisionOptions): ClipVision;
6007
6018
  /**
6008
6019
  * @internal Analyses every `comp.vision` clip up to a composition frame
6009
6020
  * (frames already analysed are skipped), so consumers that step frame by
@@ -6051,6 +6062,18 @@ declare class Composition {
6051
6062
  */
6052
6063
  onPrepareFrame(callback: (ctx: FrameContext) => Promise<void> | void): this;
6053
6064
  notifyFrame(ctx: FrameContext): Promise<void> | undefined;
6065
+ private runFrame;
6066
+ /**
6067
+ * @internal Runs the frame clock through the last frame while a live
6068
+ * signal `timeRemap` history is incomplete, so audio can be mixed before
6069
+ * any frame renders (the preview does). Compile the composition first.
6070
+ */
6071
+ prepareMediaTime(): Promise<void>;
6072
+ /**
6073
+ * Resolves signal `timeRemap`s to one shared history per layer: sampled
6074
+ * when nothing can change a signal mid-render, recorded live otherwise.
6075
+ */
6076
+ private mediaSignalResolver;
6054
6077
  private hasFrameHooks;
6055
6078
  constructor(options: CompositionOptions);
6056
6079
  static create(options: CompositionOptions): Composition;
@@ -6391,4 +6414,4 @@ type ComponentNode<C extends Cues = Cues> = AnimatableNode<BoxNode> & ComponentE
6391
6414
  declare function bindComponent<S$1 extends z.ZodRawShape, C extends Cues, E extends object = object>(definition: ComponentDefinition<S$1, C, E>): (props: z.input<z.ZodObject<S$1>> & BaseProps) => ComponentNode<C> & E;
6392
6415
  //#endregion
6393
6416
  export { InterpolateOptions as $, CameraNodeSchema as $a, offsetCues as $i, ComponentMeta as $n, TextAnimator as $o, Track as $r, PoseKeypointName as $t, Physics as A, toSeconds as Aa, drawOnKeys as Ai, QueueStatus as An, MatteModeSchema as Ao, MotionSize as Ar, Plane3DOptions as At, FieldSample2D as B, wordRanges as Ba, frameSpan as Bi, ArcPath as Bn, SceneOptions as Bo, Rng as Br, BodyCommonOptions as Bt, TrackEditing as C, surfaceFill as Ca, constantExpression as Ci, span as Cn, LightNode as Co, MeasureFn as Cr, Cube3DOptions as Ct, section as D, themes as Da, defineMeta as Di, AiConfig as Dn, MaterialType as Do, MotionOptions as Dr, ExtrudedText3DOptions as Dt, editTrackedRegion as E, themeFrames as Ea, defineComponent as Ei, Ai as En, LightTypeSchema as Eo, Metrics$1 as Er, Cylinder3DOptions as Et, PhysicsRope3DOptions as F, windowExpression as Fa, enterAnimation as Fi, targetSchema as Fn, Model3DNode as Fo, PulseOptions as Fr, Sphere3DOptions as Ft, PhysicsSpringOptions as G, BloomConfig as Ga, inkOn as Gi, BakedKey as Gn, SequenceTimelineResult as Go, SyntaxKind as Gr, EmitterShape as Gt, PhysicsGroundOptions as H, AnimatablePropsFor as Ha, hashRng as Hi, ArrowGeometry as Hn, SceneTransitionTypeSchema as Ho, SafeInsets as Hr, PhysicsCollision as Ht, PhysicsSpring3DOptions as I, withAlpha as Ia, evaluateEase as Ii, AnalyzeOptions as In, Model3DNodeSchema as Io, Rect as Ir, Surface3DOptions as It, World2DOptions as J, BoxNodeSchema as Ja, lerp2 as Ji, BuildResult as Jn, ShapeNodeSchema as Jo, TargetNode as Jr, ParticleShape as Jt, PhysicsWallsOptions as K, BloomConfigSchema as Ka, isLight as Ki, BaseProps as Kn, ShapeAnimatableProp as Ko, Target as Kr, ParticleBlend as Kt, PhysicsWorld3D as L, withDefaults as La, evaluateGlyphExpression as Li, Anchor as Ln, Scene as Lo, ResolvedMotion as Lr, Text3DOptions as Lt, FieldSample3D as M, transparent as Ma, elevate as Mi, RunOptions as Mn, MediaNode as Mo, Placement as Mr, Prism3DOptions as Mt, PhysicsBody3D as N, typingFrames as Na, elevationStyle as Ni, ValidationError as Nn, MediaNodeSchema as No, ProjectDefaults as Nr, RoundedBox3DOptions as Nt, StyleName as O, toFrames as Oa, defineTheme as Oi, ApiError as On, MaterialTypeSchema as Oo, MotionPreset as Or, Grid3DOptions as Ot, PhysicsBox3D as P, valueAt as Pa, ellipsePath as Pi, ai as Pn, Model3DAnimatableProp as Po, PropsOf as Pr, Shape3DContainer as Pt, Easing as Q, CameraNode as Qa, mix as Qi, ComponentExtras as Qn, TextAnimatableProp as Qo, ThemeName as Qr, PersonTrack as Qt, World3DOptions as R, within as Ra, exitAnimation as Ri, Animatable as Rn, SceneDefinition as Ro, ResolvedTarget as Rr, Particles as Rt, SubjectSandwichOptions as S, supersede as Sa, chain as Si, size as Sn, LayoutNodeSchema as So, MOTION_PRESETS as Sr, Carousel3DOptions as St, blurRegion as T, textLayout as Ta, cover as Ti, sup as Tn, LightType as To, MediaOptions as Tr, CubeFaceInput as Tt, PhysicsRect as U, AnimationTrack as Ua, hashString as Ui, AudioLevels as Un, Sequence as Uo, Spring as Ur, PhysicsDriver as Ut, PhysicsBody2D as V, AnimatableProp as Va, glyphAnimator as Vi, ArrowCurve as Vn, SceneTransitionType as Vo, SAFE_INSETS as Vr, PhysicsBakeOptions as Vt, PhysicsRopeOptions as W, BlockNode as Wa, holdFirstKeys as Wi, BakeOptions as Wn, SequenceOptions as Wo, StaggerOrder as Wr, PhysicsWorldOptions as Wt, LightingRig as X, CameraDoF as Xa, lineShift as Xi, ComponentDefaults as Xn, SizeSpec as Xo, Theme as Xr, ClipVisionOptions as Xt, Lighting as Y, CameraAnimation as Ya, linePath as Yi, CanvasSize as Yn, SignalTrackOptions as Yo, TextLayout as Yr, ClipVision as Yt, LightingRigOptions as Z, CameraLens as Za, luminance as Zi, ComponentDefinition as Zn, SpringOptions as Zo, ThemeInput as Zr, PersonPlacement as Zt, RenderVideoResult as _, springTrack as _a, bind as _i, italic as _n, FromToOptions as _o, GrainOptions as _r, evaluateAnimationAtFrame as _s, SequenceEntry as _t, AnimatableNode as a, resampleBands as aa, after as ai, ChartPadding as an, ColorStop as ao, Elevation as ar, ToneMapping as as, computeStrokeRect as at, SmartFramingOptions as b, staggerRanks as ba, boxPath as bi, parseMarkup as bn, LayerAnimation as bo, KeyBook as br, lintComposition as bs, TransitionDirection as bt, CompositionOptions as c, rng as ca, arcPath as ci, ChartType as cn, CompositorProgramSchema as co, FontNeed as cr, WiggleOptions as cs, measureSpring as ct, EnvironmentOptions as d, scaleFrames as da, audioLevelsSchema as di, MarkOptions as dn, EnvironmentFog as do, FrameValue as dr, collectNodeOps as ds, preloadCompositionFonts as dt, parseColor as ea, TrackedObjectLike as ei, ChartAnimationOptions as en, CameraShake as eo, Cue as er, TextAnimatorSchema as es, SpringConfig as et, Layer as f, scheduleExpression as fa, bakeFunction as fi, TextSpanItem as fn, EnvironmentFogSchema as fo, FrameWindow as fr, compositorToProgram as fs, preloadFont as ft, RenderVideoOptions as g, springSettleFrames as ga, beats as gi, color as gn, FlexNodeSchema as go, GlyphUnit as gr, computeStaggerDelay as gs, SceneSequenceOptions as gt, NodeCapability as h, springKeys as ha, basePropsSchema as hi, code as hn, FlexNode as ho, GlyphProps as hr, computeLayoutSync as hs, springCalculation as ht, analyzeAudio as i, rendererChars as ia, WordRange as ii, ChartOptions as in, ColorSignalOptions as io, EaseFn as ir, TextSpanSchema as is, bezier as it, Body3DOptions as j, transformPathData as ja, ease$1 as ji, Result as jn, MediaAnimatableProp as jo, ParticleOptions as jr, Primitive3DNodeOptions as jt, Styles as k, toPathData as ka, dist as ki, FRAMEFIELDS_AI_PROXY_URL as kn, MatteMode as ko, MotionPresetName as kr, Layer3D as kt, EditableObjectTrack as l, round as la, arrowPaths as li, ChartX as ln, CompositorToProgramOptions as lo, FontRole as lr, applyStaggerToChildren as ls, measureText as lt, Media as m, springAt as ma, bandEdges as mi, bold as mn, EnvironmentPresetSchema as mo, GlyphBox as mr, computeLayout as ms, spring as mt, bindComponent as n, quantize as na, UnitSchedule as ni, ChartCandle as nn, CarrierHandoffConfigSchema as no, CuesOf as nr, TextNodeSchema as ns, TextMeasureResult as nt, CompatibleEffect as o, resolveMotion as oa, analyzeChannels as oi, ChartSeries as on, ColorStopSchema as oo, ElevationLevel as or, ToneMappingSchema as os, interpolate as ot, Light as p, smoothRelease as pa, bakeSamples as pi, accent as pn, EnvironmentPreset as po, GlyphAnimator as pr, computeCarrierContinuity as ps, requiresIsolation as pt, PhysicsWorld2D as q, BoxNode as qa, last as qi, BuildContext as qn, ShapeNode as qo, TargetContext as qr, ParticleBounds as qt, z$2 as r, rangeRects as ra, Vec2$1 as ri, ChartDatum as rn, CarrierState as ro, CutoutOptions as rr, TextSpanMarkSchema as rs, TextMeasureStyle as rt, Composition as s, resolveTarget as sa, anchorPoint as si, ChartSlice as sn, CompositorProgramConfig as so, ExtrudedTextOptions as sr, TrackSource as ss, mapBlendModeToSkia as st, ComponentNode as t, pulseKeys as ta, UNIT_INDEX as ti, ChartAxisOptions as tn, CarrierHandoffConfig as to, Cues as tr, TextNode as ts, StrokeRect as tt, Effect as u, safeArea as ua, ascending as ui, DEFAULT_CHART_COLORS as un, EaseRef as uo, FrameContextLike as ur, calculateSequenceTimeline as us, measureTextAsync as ut, SectionNode as v, squigglePath as va, boilKeys as vi, mark as vn, Keyframe as vo, HandOptions as vr, evaluateTrackAtFrame as vs, SequenceNode as vt, TrackedRegionOptions as w, targetPoint as wa, contrastRatio as wi, sub as wn, LightNodeSchema as wo, MeasureOptions as wr, CubeFaceConfig as wt, SubjectOutlineOptions as x, stepExpression as xa, catmullRom as xi, rich as xn, LayoutNode as xo, LayerStyleConfig as xr, mergeAnimationTracks as xs, TransitionSpec as xt, SectionOptions as y, staggerOffsets as ya, boundsOf as yi, normalizeTextSpans as yn, KeyframeTuple as yo, Host as yr, hoistMattes as ys, Transition as yt, Body2DOptions as z, wobblePoints as za, findRange as zi, AnimatableMethods as zn, SceneDefinitionSchema as zo, Rgba as zr, ParticlesOptions as zt };
6394
- //# sourceMappingURL=index-CWG19cm-.d.mts.map
6417
+ //# sourceMappingURL=index-ePGQ_C7f.d.mts.map