framefields 2.2.0 → 2.3.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 (322) hide show
  1. package/README.md +11 -2
  2. package/dist/audio/index.d.mts +4 -4
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-BvYmTu5T.d.mts → audio-BNnEclHU.d.mts} +3 -3
  5. package/dist/{audio-BvYmTu5T.d.mts.map → audio-BNnEclHU.d.mts.map} +1 -1
  6. package/dist/{audio-DMUr01vS.mjs → audio-ChRqnFwB.mjs} +3 -3
  7. package/dist/{audio-DMUr01vS.mjs.map → audio-ChRqnFwB.mjs.map} +1 -1
  8. package/dist/{dist-cjxDXQdx.mjs → dist-PwT_Vmax.mjs} +102 -6
  9. package/dist/{dist-cjxDXQdx.mjs.map → dist-PwT_Vmax.mjs.map} +1 -1
  10. package/dist/{dist-CT___nEU.mjs → dist-t-NLlnhM.mjs} +7 -5
  11. package/dist/dist-t-NLlnhM.mjs.map +1 -0
  12. package/dist/effects/index.d.mts +5 -5
  13. package/dist/effects/index.mjs +36 -36
  14. package/dist/{effects-C06-AOge.mjs → effects-Duoqc_Oa.mjs} +532 -4
  15. package/dist/effects-Duoqc_Oa.mjs.map +1 -0
  16. package/dist/fonts/index.d.mts +1 -1
  17. package/dist/fonts/index.mjs +2 -2
  18. package/dist/{fonts-C0UuLQvr.mjs → fonts-CgNmeFXh.mjs} +2 -2
  19. package/dist/{fonts-C0UuLQvr.mjs.map → fonts-CgNmeFXh.mjs.map} +1 -1
  20. package/dist/{gpu-Du7GpVFW.mjs → gpu-1ZpAuQOR.mjs} +2 -2
  21. package/dist/{gpu-Du7GpVFW.mjs.map → gpu-1ZpAuQOR.mjs.map} +1 -1
  22. package/dist/{index-B-oUlLoO.d.mts → index-AdrZIWT0.d.mts} +27 -2
  23. package/dist/index-AdrZIWT0.d.mts.map +1 -0
  24. package/dist/{index-BcA8rep0.d.mts → index-B-55dXDu.d.mts} +1 -1
  25. package/dist/{index-BcA8rep0.d.mts.map → index-B-55dXDu.d.mts.map} +1 -1
  26. package/dist/{index-D-Iek5sq.d.mts → index-B3BwLHa6.d.mts} +3 -3
  27. package/dist/{index-D-Iek5sq.d.mts.map → index-B3BwLHa6.d.mts.map} +1 -1
  28. package/dist/{index-CwbszPDG.d.mts → index-BU51pxZO.d.mts} +956 -9
  29. package/dist/index-BU51pxZO.d.mts.map +1 -0
  30. package/dist/{index-XdQPNJnq.d.mts → index-CeRv1KC0.d.mts} +3 -3
  31. package/dist/{index-XdQPNJnq.d.mts.map → index-CeRv1KC0.d.mts.map} +1 -1
  32. package/dist/{index-DXfp_T-3.d.mts → index-Cg2ptXcs.d.mts} +2 -2
  33. package/dist/{index-DXfp_T-3.d.mts.map → index-Cg2ptXcs.d.mts.map} +1 -1
  34. package/dist/{index-CdyE1tst.d.mts → index-QmkcUL3W.d.mts} +2 -2
  35. package/dist/{index-CdyE1tst.d.mts.map → index-QmkcUL3W.d.mts.map} +1 -1
  36. package/dist/index.d.mts +1383 -11
  37. package/dist/index.d.mts.map +1 -1
  38. package/dist/index.mjs +3122 -83
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/preview/index.d.mts +2 -2
  41. package/dist/preview/index.mjs +10 -10
  42. package/dist/{preview-M0TsUzC6.mjs → preview-CArsjmkd.mjs} +2 -2
  43. package/dist/{preview-M0TsUzC6.mjs.map → preview-CArsjmkd.mjs.map} +1 -1
  44. package/dist/preview-engine/audio.mjs +1 -1
  45. package/dist/preview-engine/chunk-2JKXYG6J.mjs +127 -0
  46. package/dist/preview-engine/chunk-7I7PKKDL.mjs +214 -0
  47. package/dist/preview-engine/chunk-BQY4BUMN.mjs +1 -0
  48. package/dist/preview-engine/{chunk-RSMO7NPN.mjs → chunk-BSOJR4JU.mjs} +1 -1
  49. package/dist/preview-engine/chunk-BVA5NGSH.mjs +1 -0
  50. package/dist/preview-engine/chunk-DLAHSLNX.mjs +1522 -0
  51. package/dist/preview-engine/{chunk-ZTHWCQ2A.mjs → chunk-FNE22WGA.mjs} +1 -1
  52. package/dist/preview-engine/chunk-KERW7QJ4.mjs +174 -0
  53. package/dist/preview-engine/{chunk-7B5S5D4N.mjs → chunk-TPAEN6VV.mjs} +1 -1
  54. package/dist/preview-engine/chunk-YQRKT47I.mjs +1 -0
  55. package/dist/preview-engine/crypto-W5UAWSNT.mjs +1 -0
  56. package/dist/preview-engine/effects.mjs +1 -1
  57. package/dist/preview-engine/framefields.mjs +26 -26
  58. package/dist/preview-engine/player.mjs +5 -5
  59. package/dist/preview-engine/rapier-AHBIGHEL.mjs +1 -0
  60. package/dist/preview-engine/rapier-JD7KNQRV.mjs +1 -0
  61. package/dist/preview-engine/renderers-527ONFIA.mjs +228 -0
  62. package/dist/preview-engine/renderers-6ODPWZ2R.mjs +96 -0
  63. package/dist/preview-engine/renderers-7NCG6BYS.mjs +94 -0
  64. package/dist/preview-engine/renderers-BGGRPAVV.mjs +363 -0
  65. package/dist/preview-engine/renderers-DN2GF3I7.mjs +82 -0
  66. package/dist/preview-engine/renderers-FGHOLJJK.mjs +44 -0
  67. package/dist/preview-engine/renderers-FK72LKQC.mjs +275 -0
  68. package/dist/preview-engine/renderers-FQWWAETX.mjs +203 -0
  69. package/dist/preview-engine/renderers-HMR2NAD7.mjs +81 -0
  70. package/dist/preview-engine/renderers-HUW2ZMS3.mjs +1 -0
  71. package/dist/preview-engine/renderers-JLFGBYN4.mjs +78 -0
  72. package/dist/preview-engine/renderers-LLUEOW5T.mjs +77 -0
  73. package/dist/preview-engine/renderers-NC64EQDE.mjs +1 -0
  74. package/dist/preview-engine/renderers-PVYP2ONH.mjs +76 -0
  75. package/dist/preview-engine/renderers-TPBPNXWH.mjs +26 -0
  76. package/dist/preview-engine/renderers-UJ4YVJZT.mjs +80 -0
  77. package/dist/preview-engine/renderers-WHBDHTRI.mjs +78 -0
  78. package/dist/preview-engine/renderers-WP67KK5K.mjs +89 -0
  79. package/dist/preview-engine/renderers-YNFKFM7D.mjs +67 -0
  80. package/dist/preview-engine/renderers-ZSENYGIY.mjs +84 -0
  81. package/dist/preview-engine/signals.mjs +1 -1
  82. package/dist/{program-DzknMiY0.mjs → program-Dd9tJFkY.mjs} +346 -13
  83. package/dist/program-Dd9tJFkY.mjs.map +1 -0
  84. package/dist/renderer/index.d.mts +2 -2
  85. package/dist/renderer/index.mjs +2 -2
  86. package/dist/{renderer-C8uKdelk.mjs → renderer-0L9MEb3A.mjs} +2 -2
  87. package/dist/{renderer-C8uKdelk.mjs.map → renderer-0L9MEb3A.mjs.map} +1 -1
  88. package/dist/renderer-0lp9ClNc.mjs +5 -0
  89. package/dist/{renderer-BbdZ0YHR.mjs → renderer-257LxOyx.mjs} +3 -3
  90. package/dist/{renderer-BbdZ0YHR.mjs.map → renderer-257LxOyx.mjs.map} +1 -1
  91. package/dist/renderer-2BnBo6CX.mjs +219 -0
  92. package/dist/renderer-2BnBo6CX.mjs.map +1 -0
  93. package/dist/renderer-4g_BfiKp.mjs +5 -0
  94. package/dist/renderer-72A4SvOE.mjs +220 -0
  95. package/dist/renderer-72A4SvOE.mjs.map +1 -0
  96. package/dist/renderer-7Aw6AHqW.mjs +5 -0
  97. package/dist/{renderer-PKQNH21k.mjs → renderer-7OvgLE8w.mjs} +2 -2
  98. package/dist/{renderer-BerD3T-X.mjs → renderer-94byj7Mk.mjs} +2 -2
  99. package/dist/{renderer-BerD3T-X.mjs.map → renderer-94byj7Mk.mjs.map} +1 -1
  100. package/dist/{renderer-D-vRKssW.mjs → renderer-B2aXfdW_.mjs} +2 -2
  101. package/dist/{renderer-D-vRKssW.mjs.map → renderer-B2aXfdW_.mjs.map} +1 -1
  102. package/dist/{renderer-DD8napek.mjs → renderer-B3c-j-e5.mjs} +2 -2
  103. package/dist/{renderer-DD8napek.mjs.map → renderer-B3c-j-e5.mjs.map} +1 -1
  104. package/dist/renderer-B3ypX3MH.mjs +308 -0
  105. package/dist/renderer-B3ypX3MH.mjs.map +1 -0
  106. package/dist/renderer-B82v8PyC.mjs +5 -0
  107. package/dist/renderer-B8BDMJNz.mjs +5 -0
  108. package/dist/renderer-BARst3ZD.mjs +3 -0
  109. package/dist/renderer-BCPRrhP8.mjs +5 -0
  110. package/dist/{renderer-CMT4QcpV.mjs → renderer-BEdc-7JW.mjs} +3 -3
  111. package/dist/{renderer-CMT4QcpV.mjs.map → renderer-BEdc-7JW.mjs.map} +1 -1
  112. package/dist/renderer-BEpANdcO.mjs +204 -0
  113. package/dist/renderer-BEpANdcO.mjs.map +1 -0
  114. package/dist/renderer-BFhzO6En.mjs +5 -0
  115. package/dist/renderer-BH0KF-y-.mjs +6 -0
  116. package/dist/renderer-BHrqEgIA.mjs +541 -0
  117. package/dist/renderer-BHrqEgIA.mjs.map +1 -0
  118. package/dist/{renderer-DpW_LxLO.mjs → renderer-BId5hBLb.mjs} +3 -3
  119. package/dist/{renderer-DpW_LxLO.mjs.map → renderer-BId5hBLb.mjs.map} +1 -1
  120. package/dist/renderer-BK32cV7E.mjs +203 -0
  121. package/dist/renderer-BK32cV7E.mjs.map +1 -0
  122. package/dist/renderer-BTI5ybyH.mjs +5 -0
  123. package/dist/{renderer-0gY4IQhM.mjs → renderer-BVR0mEIT.mjs} +2 -2
  124. package/dist/{renderer-0gY4IQhM.mjs.map → renderer-BVR0mEIT.mjs.map} +1 -1
  125. package/dist/{renderer-CebB0v1y.mjs → renderer-BY08hHFS.mjs} +2 -2
  126. package/dist/{renderer-CebB0v1y.mjs.map → renderer-BY08hHFS.mjs.map} +1 -1
  127. package/dist/renderer-Ba7LH8U2.mjs +5 -0
  128. package/dist/renderer-BcQBlfhC.mjs +5 -0
  129. package/dist/renderer-BdMJzCTz.mjs +5 -0
  130. package/dist/{renderer-D1Cm21eq.mjs → renderer-BmQbSQHf.mjs} +2 -2
  131. package/dist/{renderer-D1Cm21eq.mjs.map → renderer-BmQbSQHf.mjs.map} +1 -1
  132. package/dist/{renderer-DqdhsSwS.mjs → renderer-BmTDXIUI.mjs} +2 -2
  133. package/dist/{renderer-DqdhsSwS.mjs.map → renderer-BmTDXIUI.mjs.map} +1 -1
  134. package/dist/renderer-BpdzhZE7.mjs +224 -0
  135. package/dist/renderer-BpdzhZE7.mjs.map +1 -0
  136. package/dist/renderer-Bxi2j-tG.mjs +5 -0
  137. package/dist/{renderer-D8thCpS7.mjs → renderer-C-Qj0BnT.mjs} +3 -3
  138. package/dist/{renderer-D8thCpS7.mjs.map → renderer-C-Qj0BnT.mjs.map} +1 -1
  139. package/dist/{renderer-BiwIh_w4.mjs → renderer-C4tUATd_.mjs} +3 -3
  140. package/dist/{renderer-BiwIh_w4.mjs.map → renderer-C4tUATd_.mjs.map} +1 -1
  141. package/dist/{renderer-1vhaKMeg.mjs → renderer-CC72sZ8l.mjs} +141 -56
  142. package/dist/renderer-CC72sZ8l.mjs.map +1 -0
  143. package/dist/renderer-CCn5ISVM.mjs +5 -0
  144. package/dist/renderer-CDRsdhg9.mjs +5 -0
  145. package/dist/{renderer-BC8XOVl5.mjs → renderer-CI9Pq77W.mjs} +3 -3
  146. package/dist/{renderer-BC8XOVl5.mjs.map → renderer-CI9Pq77W.mjs.map} +1 -1
  147. package/dist/{renderer-CrABA3lB.mjs → renderer-CIMI33Yd.mjs} +2 -2
  148. package/dist/{renderer-CrABA3lB.mjs.map → renderer-CIMI33Yd.mjs.map} +1 -1
  149. package/dist/renderer-CKSdl0Xf.mjs +331 -0
  150. package/dist/renderer-CKSdl0Xf.mjs.map +1 -0
  151. package/dist/{renderer-Cce2fgpX.mjs → renderer-CKpwEo1w.mjs} +3 -3
  152. package/dist/{renderer-Cce2fgpX.mjs.map → renderer-CKpwEo1w.mjs.map} +1 -1
  153. package/dist/{renderer-CursFKUf.mjs → renderer-CLUyYFqS.mjs} +2 -2
  154. package/dist/{renderer-CursFKUf.mjs.map → renderer-CLUyYFqS.mjs.map} +1 -1
  155. package/dist/{renderer-Br6KyRO_.mjs → renderer-CS-goRD3.mjs} +3 -3
  156. package/dist/{renderer-Br6KyRO_.mjs.map → renderer-CS-goRD3.mjs.map} +1 -1
  157. package/dist/{renderer-DtgMsjyL.mjs → renderer-CSPpKLi3.mjs} +2 -2
  158. package/dist/{renderer-DtgMsjyL.mjs.map → renderer-CSPpKLi3.mjs.map} +1 -1
  159. package/dist/{renderer-CuVPo-wP.mjs → renderer-CWQ-Bct7.mjs} +2 -2
  160. package/dist/{renderer-CuVPo-wP.mjs.map → renderer-CWQ-Bct7.mjs.map} +1 -1
  161. package/dist/{renderer-DHGTzype.mjs → renderer-ChoYV7Ko.mjs} +2 -2
  162. package/dist/{renderer-DHGTzype.mjs.map → renderer-ChoYV7Ko.mjs.map} +1 -1
  163. package/dist/renderer-CiCK8ZG_.mjs +5 -0
  164. package/dist/{renderer-CJB9nU1x.mjs → renderer-Ck2pRec0.mjs} +3 -3
  165. package/dist/{renderer-CJB9nU1x.mjs.map → renderer-Ck2pRec0.mjs.map} +1 -1
  166. package/dist/{renderer-BzDjy1_x.mjs → renderer-CrUudSLP.mjs} +2 -2
  167. package/dist/{renderer-BzDjy1_x.mjs.map → renderer-CrUudSLP.mjs.map} +1 -1
  168. package/dist/{renderer-DupsdRIw.mjs → renderer-CraudZUC.mjs} +3 -3
  169. package/dist/{renderer-DupsdRIw.mjs.map → renderer-CraudZUC.mjs.map} +1 -1
  170. package/dist/renderer-CsEk9TFz.mjs +5 -0
  171. package/dist/renderer-CvOzuDX3.mjs +215 -0
  172. package/dist/renderer-CvOzuDX3.mjs.map +1 -0
  173. package/dist/{renderer-DJfFc-XW.mjs → renderer-Cvysm2Jg.mjs} +3 -3
  174. package/dist/{renderer-DJfFc-XW.mjs.map → renderer-Cvysm2Jg.mjs.map} +1 -1
  175. package/dist/{renderer-Bn2eQE-t.mjs → renderer-CwwmwM7J.mjs} +3 -3
  176. package/dist/{renderer-Bn2eQE-t.mjs.map → renderer-CwwmwM7J.mjs.map} +1 -1
  177. package/dist/{renderer-KnCcN_Nz.mjs → renderer-CxP2e6Ov.mjs} +2 -2
  178. package/dist/{renderer-KnCcN_Nz.mjs.map → renderer-CxP2e6Ov.mjs.map} +1 -1
  179. package/dist/{renderer-BteUC_7n.mjs → renderer-D-yNHLG7.mjs} +3 -3
  180. package/dist/{renderer-BteUC_7n.mjs.map → renderer-D-yNHLG7.mjs.map} +1 -1
  181. package/dist/renderer-D0xLIq1r.mjs +203 -0
  182. package/dist/renderer-D0xLIq1r.mjs.map +1 -0
  183. package/dist/{renderer-id8TbKBY.mjs → renderer-D1MOTlWS.mjs} +2 -2
  184. package/dist/{renderer-id8TbKBY.mjs.map → renderer-D1MOTlWS.mjs.map} +1 -1
  185. package/dist/renderer-D1T7A3NF.mjs +233 -0
  186. package/dist/renderer-D1T7A3NF.mjs.map +1 -0
  187. package/dist/renderer-D1gx_-hi.mjs +5 -0
  188. package/dist/renderer-D5MCGNAF.mjs +5 -0
  189. package/dist/{renderer-Db3JIF1K.mjs → renderer-D6YcQTLI.mjs} +3 -3
  190. package/dist/{renderer-Db3JIF1K.mjs.map → renderer-D6YcQTLI.mjs.map} +1 -1
  191. package/dist/{renderer-BNqwn0gZ.mjs → renderer-D8_UYdDb.mjs} +2 -2
  192. package/dist/{renderer-BNqwn0gZ.mjs.map → renderer-D8_UYdDb.mjs.map} +1 -1
  193. package/dist/renderer-DD_MzvM-.mjs +5 -0
  194. package/dist/{renderer-BHskWZNG.mjs → renderer-DIqwz7dV.mjs} +2 -2
  195. package/dist/{renderer-57ATc_mQ.mjs → renderer-DJQD7tai.mjs} +2 -2
  196. package/dist/{renderer-57ATc_mQ.mjs.map → renderer-DJQD7tai.mjs.map} +1 -1
  197. package/dist/{renderer-CWBHVCvA.mjs → renderer-DKXK5hDm.mjs} +2 -2
  198. package/dist/{renderer-CWBHVCvA.mjs.map → renderer-DKXK5hDm.mjs.map} +1 -1
  199. package/dist/{renderer-p_C_T9Kn.mjs → renderer-DNYSf2Fl.mjs} +2 -2
  200. package/dist/{renderer-p_C_T9Kn.mjs.map → renderer-DNYSf2Fl.mjs.map} +1 -1
  201. package/dist/{renderer-DXqIslFk.mjs → renderer-DNaHFctD.mjs} +2 -2
  202. package/dist/{renderer-DXqIslFk.mjs.map → renderer-DNaHFctD.mjs.map} +1 -1
  203. package/dist/renderer-DO5r7ZV-.mjs +658 -0
  204. package/dist/renderer-DO5r7ZV-.mjs.map +1 -0
  205. package/dist/renderer-DP7YoZ0K.mjs +5 -0
  206. package/dist/{renderer-CE7fwGgw.mjs → renderer-DQtk282o.mjs} +29 -8
  207. package/dist/renderer-DQtk282o.mjs.map +1 -0
  208. package/dist/{renderer-u8ynJtAC.mjs → renderer-DWcbrx2M.mjs} +2 -2
  209. package/dist/{renderer-u8ynJtAC.mjs.map → renderer-DWcbrx2M.mjs.map} +1 -1
  210. package/dist/renderer-DXiWvKij.mjs +5 -0
  211. package/dist/renderer-DZnUiiBp.mjs +222 -0
  212. package/dist/renderer-DZnUiiBp.mjs.map +1 -0
  213. package/dist/renderer-Dc6fW-o1.mjs +5 -0
  214. package/dist/renderer-DiurlsNT.mjs +5 -0
  215. package/dist/{renderer-BmGPTWwV.mjs → renderer-Dju3SEAJ.mjs} +3 -3
  216. package/dist/{renderer-BmGPTWwV.mjs.map → renderer-Dju3SEAJ.mjs.map} +1 -1
  217. package/dist/{renderer-BT-_EoXw.d.mts → renderer-DlESyfg7.d.mts} +2 -2
  218. package/dist/{renderer-BT-_EoXw.d.mts.map → renderer-DlESyfg7.d.mts.map} +1 -1
  219. package/dist/{renderer-aArb4RwJ.mjs → renderer-DpQaiH6C.mjs} +2 -2
  220. package/dist/{renderer-aArb4RwJ.mjs.map → renderer-DpQaiH6C.mjs.map} +1 -1
  221. package/dist/{renderer-CeyAgJnw.mjs → renderer-DuxzqfoE.mjs} +2 -2
  222. package/dist/renderer-DvCUdgVz.mjs +5 -0
  223. package/dist/{renderer-AF884a7T.mjs → renderer-Dvg5nbgU.mjs} +3 -3
  224. package/dist/{renderer-AF884a7T.mjs.map → renderer-Dvg5nbgU.mjs.map} +1 -1
  225. package/dist/{renderer-DvFaC_-7.mjs → renderer-Dvq11SEA.mjs} +2 -2
  226. package/dist/{renderer-DvFaC_-7.mjs.map → renderer-Dvq11SEA.mjs.map} +1 -1
  227. package/dist/renderer-DyPgVl1l.mjs +223 -0
  228. package/dist/renderer-DyPgVl1l.mjs.map +1 -0
  229. package/dist/{renderer-DEuIwr-t.mjs → renderer-DzOzVxNS.mjs} +2 -2
  230. package/dist/{renderer-DEuIwr-t.mjs.map → renderer-DzOzVxNS.mjs.map} +1 -1
  231. package/dist/renderer-EhCkD11e.mjs +208 -0
  232. package/dist/renderer-EhCkD11e.mjs.map +1 -0
  233. package/dist/renderer-IiwAh9-K.mjs +5 -0
  234. package/dist/{renderer-jqByPgkD.mjs → renderer-JiEpssIz.mjs} +2 -2
  235. package/dist/{renderer-jqByPgkD.mjs.map → renderer-JiEpssIz.mjs.map} +1 -1
  236. package/dist/renderer-JlGXqH0E.mjs +5 -0
  237. package/dist/{renderer-Beg7FLt2.mjs → renderer-OxafT7Xm.mjs} +75 -27
  238. package/dist/renderer-OxafT7Xm.mjs.map +1 -0
  239. package/dist/renderer-TZFKKgL1.mjs +5 -0
  240. package/dist/renderer-UT0CcmMZ.mjs +191 -0
  241. package/dist/renderer-UT0CcmMZ.mjs.map +1 -0
  242. package/dist/{renderer-YbaCzPcG.mjs → renderer-YyEBKPcE.mjs} +2 -2
  243. package/dist/{renderer-jYxN4mHn.mjs → renderer-_AuL8mAi.mjs} +3 -3
  244. package/dist/{renderer-jYxN4mHn.mjs.map → renderer-_AuL8mAi.mjs.map} +1 -1
  245. package/dist/{renderer-C6md3msE.mjs → renderer-aCDIEYb3.mjs} +2 -2
  246. package/dist/{renderer-C6md3msE.mjs.map → renderer-aCDIEYb3.mjs.map} +1 -1
  247. package/dist/renderer-aEecoNPX.mjs +5 -0
  248. package/dist/{renderer-BeIUgp1r.mjs → renderer-aN60v8jR.mjs} +2 -2
  249. package/dist/{renderer-BeIUgp1r.mjs.map → renderer-aN60v8jR.mjs.map} +1 -1
  250. package/dist/renderer-ewhliYYP.mjs +5 -0
  251. package/dist/renderer-hQc6GgTi.mjs +5 -0
  252. package/dist/renderer-iuX0RZIi.mjs +5 -0
  253. package/dist/renderer-j4vkTzHa.mjs +5 -0
  254. package/dist/{renderer-EemDpvv3.mjs → renderer-mpInX4Iy.mjs} +3 -3
  255. package/dist/{renderer-EemDpvv3.mjs.map → renderer-mpInX4Iy.mjs.map} +1 -1
  256. package/dist/renderer-msPjwx_9.mjs +5 -0
  257. package/dist/renderer-pI2ndu-b.mjs +5 -0
  258. package/dist/renderer-x1OGMhsC.mjs +5 -0
  259. package/dist/{renderer-DZXbgVMK.mjs → renderer-xezE7IZX.mjs} +3 -3
  260. package/dist/{renderer-DZXbgVMK.mjs.map → renderer-xezE7IZX.mjs.map} +1 -1
  261. package/dist/renderer-yGAk7J9P.mjs +222 -0
  262. package/dist/renderer-yGAk7J9P.mjs.map +1 -0
  263. package/dist/{renderer-Bvx56GR6.mjs → renderer-zQIB2VZZ.mjs} +2 -2
  264. package/dist/{renderer-Bvx56GR6.mjs.map → renderer-zQIB2VZZ.mjs.map} +1 -1
  265. package/dist/{renderers-CP8CFWDs-BA-4l6By.mjs → renderers-CP8CFWDs-i6u_rhCX.mjs} +2 -2
  266. package/dist/{renderers-CP8CFWDs-BA-4l6By.mjs.map → renderers-CP8CFWDs-i6u_rhCX.mjs.map} +1 -1
  267. package/dist/signals/index.d.mts +5 -5
  268. package/dist/signals/index.mjs +4 -4
  269. package/package.json +58 -55
  270. package/dist/dist-CT___nEU.mjs.map +0 -1
  271. package/dist/effects-C06-AOge.mjs.map +0 -1
  272. package/dist/index-B-oUlLoO.d.mts.map +0 -1
  273. package/dist/index-CwbszPDG.d.mts.map +0 -1
  274. package/dist/preview-engine/chunk-G4K6TLNA.mjs +0 -1
  275. package/dist/preview-engine/chunk-HVCAOHNI.mjs +0 -1
  276. package/dist/preview-engine/chunk-KBO6EX3M.mjs +0 -1448
  277. package/dist/preview-engine/chunk-N4LHIPHZ.mjs +0 -340
  278. package/dist/preview-engine/chunk-NECOKNHA.mjs +0 -174
  279. package/dist/preview-engine/renderers-T4JMJXWL.mjs +0 -1
  280. package/dist/preview-engine/renderers-VFV5QWO3.mjs +0 -1
  281. package/dist/preview-engine/renderers-VUL4HBX3.mjs +0 -228
  282. package/dist/program-DzknMiY0.mjs.map +0 -1
  283. package/dist/renderer--IDyGdqT.mjs +0 -5
  284. package/dist/renderer-17K4tjid.mjs +0 -5
  285. package/dist/renderer-1vhaKMeg.mjs.map +0 -1
  286. package/dist/renderer-Ab9Ttn_m.mjs +0 -5
  287. package/dist/renderer-B-roDBBo.mjs +0 -5
  288. package/dist/renderer-B03uwoUX.mjs +0 -5
  289. package/dist/renderer-B3BI_7YJ.mjs +0 -5
  290. package/dist/renderer-BGD4lQ74.mjs +0 -5
  291. package/dist/renderer-BHXhYfeC.mjs +0 -5
  292. package/dist/renderer-BRsTIMFa.mjs +0 -5
  293. package/dist/renderer-Beg7FLt2.mjs.map +0 -1
  294. package/dist/renderer-BjMTtYZw.mjs +0 -5
  295. package/dist/renderer-BoCh3Yts.mjs +0 -5
  296. package/dist/renderer-BqPbR8c4.mjs +0 -5
  297. package/dist/renderer-Bxa4SDm9.mjs +0 -3
  298. package/dist/renderer-C4Da2I1-.mjs +0 -5
  299. package/dist/renderer-C93X6dgl.mjs +0 -5
  300. package/dist/renderer-CE7fwGgw.mjs.map +0 -1
  301. package/dist/renderer-CMAwFfGx.mjs +0 -6
  302. package/dist/renderer-CRXeSuX2.mjs +0 -5
  303. package/dist/renderer-CSp6WYBN.mjs +0 -5
  304. package/dist/renderer-CUXX7HTL.mjs +0 -5
  305. package/dist/renderer-CUgThpka.mjs +0 -5
  306. package/dist/renderer-CeVtufiT.mjs +0 -5
  307. package/dist/renderer-CespkZUk.mjs +0 -5
  308. package/dist/renderer-D1l47xhL.mjs +0 -5
  309. package/dist/renderer-DDuG18J8.mjs +0 -5
  310. package/dist/renderer-DFhrFSMn.mjs +0 -5
  311. package/dist/renderer-DO48vQ7Y.mjs +0 -5
  312. package/dist/renderer-DTC39B_n.mjs +0 -5
  313. package/dist/renderer-DbyU3hNF.mjs +0 -5
  314. package/dist/renderer-DftVpmfu.mjs +0 -5
  315. package/dist/renderer-Dj5jm63K.mjs +0 -5
  316. package/dist/renderer-Dju57ZaF.mjs +0 -5
  317. package/dist/renderer-Dn8TQCw7.mjs +0 -5
  318. package/dist/renderer-ETF46K0D.mjs +0 -5
  319. package/dist/renderer-azYzWGC3.mjs +0 -5
  320. package/dist/renderer-dxNoRW59.mjs +0 -5
  321. package/dist/renderer-fdfelx_I.mjs +0 -5
  322. package/dist/renderer-snwEKwMw.mjs +0 -5
@@ -1 +1 @@
1
- import{a as k,b as l,c as m,d as n}from"./chunk-CURR5X7D.mjs";import{a as j}from"./chunk-O2RNIQXT.mjs";import{a as b}from"./chunk-FPRXK2WD.mjs";import{a as c}from"./chunk-VO2R3DWV.mjs";import{a as d}from"./chunk-Q2DPNVIA.mjs";import{a as e}from"./chunk-ZNL4W4DK.mjs";import{a as f}from"./chunk-NEE3KQTX.mjs";import{a as g}from"./chunk-K773AOF3.mjs";import{a}from"./chunk-ZH5MZQTZ.mjs";import{a as h}from"./chunk-PR2BUYCL.mjs";import{b as i}from"./chunk-G4K6TLNA.mjs";import"./chunk-37EFVZWT.mjs";import"./chunk-2SJ4BBMT.mjs";import"./chunk-24P6DAB3.mjs";import"./chunk-NIRW77QA.mjs";import"./chunk-Q4Z54DQ7.mjs";import"./chunk-6YJP57MZ.mjs";import"./chunk-63SFBHEH.mjs";import"./chunk-BVF64D6H.mjs";export{a as WebGPUAudioProcessor,d as audioFadeRenderer,h as audioSignalExtractorRenderer,b as compressorRenderer,c as delayRenderer,n as encodeStereoWav,i as mixAudioTracks,l as mixSfxInto,e as noiseGateRenderer,f as parametricEqRenderer,k as renderSfx,g as reverbRenderer,m as softLimit,j as stereoPanningRenderer};
1
+ import{a as k,b as l,c as m,d as n}from"./chunk-CURR5X7D.mjs";import{a as j}from"./chunk-O2RNIQXT.mjs";import{a as b}from"./chunk-FPRXK2WD.mjs";import{a as c}from"./chunk-VO2R3DWV.mjs";import{a as d}from"./chunk-Q2DPNVIA.mjs";import{a as e}from"./chunk-ZNL4W4DK.mjs";import{a as f}from"./chunk-NEE3KQTX.mjs";import{a as g}from"./chunk-K773AOF3.mjs";import{a}from"./chunk-ZH5MZQTZ.mjs";import{a as h}from"./chunk-PR2BUYCL.mjs";import{b as i}from"./chunk-BVA5NGSH.mjs";import"./chunk-37EFVZWT.mjs";import"./chunk-2SJ4BBMT.mjs";import"./chunk-24P6DAB3.mjs";import"./chunk-NIRW77QA.mjs";import"./chunk-Q4Z54DQ7.mjs";import"./chunk-6YJP57MZ.mjs";import"./chunk-63SFBHEH.mjs";import"./chunk-BVF64D6H.mjs";export{a as WebGPUAudioProcessor,d as audioFadeRenderer,h as audioSignalExtractorRenderer,b as compressorRenderer,c as delayRenderer,n as encodeStereoWav,i as mixAudioTracks,l as mixSfxInto,e as noiseGateRenderer,f as parametricEqRenderer,k as renderSfx,g as reverbRenderer,m as softLimit,j as stereoPanningRenderer};
@@ -0,0 +1,127 @@
1
+ import{a as m}from"./chunk-7I7PKKDL.mjs";import{e as u}from"./chunk-BVF64D6H.mjs";u();u();var g=`
2
+ struct WarpBlendParams {
3
+ width: u32,
4
+ height: u32,
5
+ blendWeight: f32, // Base current frame weight alpha (e.g. 0.35)
6
+ disocclusionThreshold: f32, // Photometric error cutoff for fallback to curr frame
7
+ maxMotionPixels: f32, // Speed cutoff for fallback to curr frame
8
+ isFirstFrame: f32, // 1.0 = pass-through first frame, 0.0 = temporal blend
9
+ _pad0: f32,
10
+ _pad1: f32,
11
+ };
12
+
13
+ @group(0) @binding(0) var prevTex: texture_2d<f32>;
14
+ @group(0) @binding(1) var currTex: texture_2d<f32>;
15
+ @group(0) @binding(2) var flowTex: texture_2d<f32>;
16
+ @group(0) @binding(3) var outTex: texture_storage_2d<rgba8unorm, write>;
17
+ @group(0) @binding(4) var<uniform> params: WarpBlendParams;
18
+ @group(0) @binding(5) var bilinearSamp: sampler;
19
+
20
+ @compute @workgroup_size(16, 16)
21
+ fn warpBlend(@builtin(global_invocation_id) id: vec3<u32>) {
22
+ if (id.x >= params.width || id.y >= params.height) {
23
+ return;
24
+ }
25
+
26
+ let coord = vec2<i32>(i32(id.x), i32(id.y));
27
+ let currColor = textureLoad(currTex, coord, 0);
28
+
29
+ // If first frame or scene cut reset, pass through current frame directly
30
+ if (params.isFirstFrame > 0.5) {
31
+ textureStore(outTex, id.xy, currColor);
32
+ return;
33
+ }
34
+
35
+ let dims = vec2<f32>(f32(params.width), f32(params.height));
36
+ let invDims = vec2<f32>(1.0 / dims.x, 1.0 / dims.y);
37
+ let uv = (vec2<f32>(id.xy) + 0.5) * invDims;
38
+
39
+ // Read motion vector (u, v) in pixel units
40
+ let flowSample = textureLoad(flowTex, coord, 0);
41
+ let flow = flowSample.xy;
42
+ let speed = length(flow);
43
+
44
+ // Motion-compensated backward warp coordinate pointing to previous frame
45
+ let warpedUv = clamp(uv - flow * invDims, vec2<f32>(0.0), vec2<f32>(1.0));
46
+ let warpedPrev = textureSampleLevel(prevTex, bilinearSamp, warpedUv, 0.0);
47
+
48
+ // Photometric consistency error normalized to [0, 1] range (1 / sqrt(3) ~= 0.57735027)
49
+ let colorDiff = length(currColor.rgb - warpedPrev.rgb) * 0.57735027;
50
+
51
+ // Adaptive blend weight:
52
+ // - Coherent motion (low diff, low speed): alpha = blendWeight (strong deflicker smoothing)
53
+ // - Disocclusion or extreme motion (high diff): alpha -> 1.0 (fall back to curr frame, no ghosting)
54
+ let tLow = params.disocclusionThreshold;
55
+ let tHigh = params.disocclusionThreshold * 1.5;
56
+ let errFactor = smoothstep(tLow, tHigh, colorDiff);
57
+ let speedFactor = smoothstep(params.maxMotionPixels * 0.5, params.maxMotionPixels, speed);
58
+
59
+ let fallbackFactor = max(errFactor, speedFactor);
60
+ let alpha = clamp(mix(params.blendWeight, 1.0, fallbackFactor), 0.0, 1.0);
61
+
62
+ let blendedRgb = mix(warpedPrev.rgb, currColor.rgb, alpha);
63
+ let blendedA = mix(warpedPrev.a, currColor.a, alpha);
64
+
65
+ textureStore(outTex, id.xy, vec4<f32>(blendedRgb, blendedA));
66
+ }
67
+ `,x=`
68
+ struct WarpBlendParams {
69
+ width: u32,
70
+ height: u32,
71
+ blendWeight: f32,
72
+ disocclusionThreshold: f32,
73
+ maxMotionPixels: f32,
74
+ isFirstFrame: f32,
75
+ _pad0: f32,
76
+ _pad1: f32,
77
+ };
78
+
79
+ @group(0) @binding(0) var prevTex: texture_2d<f32>;
80
+ @group(0) @binding(1) var currTex: texture_2d<f32>;
81
+ @group(0) @binding(2) var flowTex: texture_2d<f32>;
82
+ @group(0) @binding(3) var outTex: texture_storage_2d<rgba16float, write>;
83
+ @group(0) @binding(4) var<uniform> params: WarpBlendParams;
84
+ @group(0) @binding(5) var bilinearSamp: sampler;
85
+
86
+ @compute @workgroup_size(16, 16)
87
+ fn warpBlend(@builtin(global_invocation_id) id: vec3<u32>) {
88
+ if (id.x >= params.width || id.y >= params.height) {
89
+ return;
90
+ }
91
+
92
+ let coord = vec2<i32>(i32(id.x), i32(id.y));
93
+ let currColor = textureLoad(currTex, coord, 0);
94
+
95
+ if (params.isFirstFrame > 0.5) {
96
+ textureStore(outTex, id.xy, currColor);
97
+ return;
98
+ }
99
+
100
+ let dims = vec2<f32>(f32(params.width), f32(params.height));
101
+ let invDims = vec2<f32>(1.0 / dims.x, 1.0 / dims.y);
102
+ let uv = (vec2<f32>(id.xy) + 0.5) * invDims;
103
+
104
+ let flowSample = textureLoad(flowTex, coord, 0);
105
+ let flow = flowSample.xy;
106
+ let speed = length(flow);
107
+
108
+ let warpedUv = clamp(uv - flow * invDims, vec2<f32>(0.0), vec2<f32>(1.0));
109
+ let warpedPrev = textureSampleLevel(prevTex, bilinearSamp, warpedUv, 0.0);
110
+
111
+ // Photometric consistency error normalized to [0, 1] range (1 / sqrt(3) ~= 0.57735027)
112
+ let colorDiff = length(currColor.rgb - warpedPrev.rgb) * 0.57735027;
113
+
114
+ let tLow = params.disocclusionThreshold;
115
+ let tHigh = params.disocclusionThreshold * 1.5;
116
+ let errFactor = smoothstep(tLow, tHigh, colorDiff);
117
+ let speedFactor = smoothstep(params.maxMotionPixels * 0.5, params.maxMotionPixels, speed);
118
+
119
+ let fallbackFactor = max(errFactor, speedFactor);
120
+ let alpha = clamp(mix(params.blendWeight, 1.0, fallbackFactor), 0.0, 1.0);
121
+
122
+ let blendedRgb = mix(warpedPrev.rgb, currColor.rgb, alpha);
123
+ let blendedA = mix(warpedPrev.a, currColor.a, alpha);
124
+
125
+ textureStore(outTex, id.xy, vec4<f32>(blendedRgb, blendedA));
126
+ }
127
+ `;var b=class{constructor(e){this.device=e;this.flowPipeline=new m(e);let a=e.createShaderModule({label:"temporal_warp_blend_rgba8.wgsl",code:g});this.rgba8Pipeline=e.createComputePipeline({label:"TemporalWarpBlendRgba8Pipeline",layout:"auto",compute:{module:a,entryPoint:"warpBlend"}});let i=e.createShaderModule({label:"temporal_warp_blend_rgba16f.wgsl",code:x});this.rgba16fPipeline=e.createComputePipeline({label:"TemporalWarpBlendRgba16fPipeline",layout:"auto",compute:{module:i,entryPoint:"warpBlend"}}),this.uniformBuffer=e.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"temporal_deflicker_uniform"}),this.bilinearSampler=e.createSampler({label:"temporal_deflicker_sampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"})}device;flowPipeline;rgba8Pipeline;rgba16fPipeline;uniformBuffer;bilinearSampler;historyTexture;cachedOutputTexture;execute(e,a={},i){let r=e.width,t=e.height,d=a.blendWeight??.35,T=typeof d=="number"?d:Number(d),w=a.disocclusionThreshold??.15,v=a.maxMotionPixels??64,o=e.format,P=o==="rgba16float";if((!this.cachedOutputTexture||this.cachedOutputTexture.width!==r||this.cachedOutputTexture.height!==t||this.cachedOutputTexture.format!==o)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`deflickered_output_${o}`,size:[r,t],format:o,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT})),!this.historyTexture||this.historyTexture.width!==r||this.historyTexture.height!==t){this.historyTexture?.destroy(),this.historyTexture=this.device.createTexture({label:"deflicker_history_texture",size:[r,t],format:o,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC});let c=i??this.device.createCommandEncoder({label:"deflicker_first_frame_encoder"});return c.copyTextureToTexture({texture:e},{texture:this.historyTexture},[r,t]),c.copyTextureToTexture({texture:e},{texture:this.cachedOutputTexture},[r,t]),i||this.device.queue.submit([c.finish()]),this.cachedOutputTexture}let y=this.flowPipeline.execute(this.historyTexture,e,a.opticalFlow,i),n=new ArrayBuffer(32),f=new Uint32Array(n),l=new Float32Array(n);f[0]=r,f[1]=t,l[2]=T,l[3]=w,l[4]=v,l[5]=0,this.device.queue.writeBuffer(this.uniformBuffer,0,n);let h=P?this.rgba16fPipeline:this.rgba8Pipeline,p=i??this.device.createCommandEncoder({label:"deflicker_blend_encoder"}),_=this.device.createBindGroup({layout:h.getBindGroupLayout(0),entries:[{binding:0,resource:this.historyTexture.createView()},{binding:1,resource:e.createView()},{binding:2,resource:y.createView()},{binding:3,resource:this.cachedOutputTexture.createView()},{binding:4,resource:{buffer:this.uniformBuffer}},{binding:5,resource:this.bilinearSampler}]}),s=p.beginComputePass({label:"deflicker_blend_pass"});return s.setPipeline(h),s.setBindGroup(0,_),s.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(t/16)),s.end(),p.copyTextureToTexture({texture:this.cachedOutputTexture},{texture:this.historyTexture},[r,t]),i||this.device.queue.submit([p.finish()]),this.cachedOutputTexture}reset(){this.historyTexture?.destroy(),this.historyTexture=void 0}destroy(){this.flowPipeline.destroy(),this.historyTexture?.destroy(),this.cachedOutputTexture?.destroy(),this.uniformBuffer.destroy()}};export{b as a};
@@ -0,0 +1,214 @@
1
+ import{e as x}from"./chunk-BVF64D6H.mjs";x();x();var P=`
2
+ struct FlowParams {
3
+ width: u32,
4
+ height: u32,
5
+ windowSize: u32, // Half-window radius W (e.g. 2 for 5x5 window)
6
+ regularization: f32, // Tikhonov regularization lambda
7
+ maxDisplacement: f32, // Maximum allowable flow vector length
8
+ _pad0: f32,
9
+ _pad1: f32,
10
+ _pad2: f32,
11
+ };
12
+
13
+ @group(0) @binding(0) var prevTex: texture_2d<f32>;
14
+ @group(0) @binding(1) var currTex: texture_2d<f32>;
15
+ @group(0) @binding(2) var flowTex: texture_storage_2d<rgba16float, write>;
16
+ @group(0) @binding(3) var<uniform> params: FlowParams;
17
+
18
+ fn rgbToLuminance(rgb: vec3<f32>) -> f32 {
19
+ return dot(rgb, vec3<f32>(0.299, 0.587, 0.114));
20
+ }
21
+
22
+ fn sampleLuma(tex: texture_2d<f32>, coord: vec2<i32>) -> f32 {
23
+ let inDims = vec2<f32>(textureDimensions(tex));
24
+ let scaleRatio = inDims / vec2<f32>(f32(params.width), f32(params.height));
25
+ let actualCoord = vec2<i32>(vec2<f32>(coord) * scaleRatio);
26
+ let clamped = clamp(actualCoord, vec2<i32>(0, 0), vec2<i32>(inDims) - vec2<i32>(1, 1));
27
+ let color = textureLoad(tex, clamped, 0);
28
+ return rgbToLuminance(color.rgb);
29
+ }
30
+
31
+ @compute @workgroup_size(16, 16)
32
+ fn computeFlow(@builtin(global_invocation_id) id: vec3<u32>) {
33
+ if (id.x >= params.width || id.y >= params.height) {
34
+ return;
35
+ }
36
+
37
+ let centerCoord = vec2<i32>(i32(id.x), i32(id.y));
38
+ let w = i32(max(params.windowSize, 1u));
39
+
40
+ var sxx: f32 = 0.0;
41
+ var syy: f32 = 0.0;
42
+ var sxy: f32 = 0.0;
43
+ var sxt: f32 = 0.0;
44
+ var syt: f32 = 0.0;
45
+
46
+ for (var dy = -w; dy <= w; dy = dy + 1) {
47
+ for (var dx = -w; dx <= w; dx = dx + 1) {
48
+ let p = centerCoord + vec2<i32>(dx, dy);
49
+
50
+ // Central difference spatial gradients on current frame
51
+ let lx = sampleLuma(currTex, p - vec2<i32>(1, 0));
52
+ let rx = sampleLuma(currTex, p + vec2<i32>(1, 0));
53
+ let uy = sampleLuma(currTex, p - vec2<i32>(0, 1));
54
+ let dyL = sampleLuma(currTex, p + vec2<i32>(0, 1));
55
+
56
+ let ix = (rx - lx) * 0.5;
57
+ let iy = (dyL - uy) * 0.5;
58
+
59
+ // Temporal gradient: difference between current and previous frame
60
+ let cCurr = sampleLuma(currTex, p);
61
+ let cPrev = sampleLuma(prevTex, p);
62
+ let it = cCurr - cPrev;
63
+
64
+ // Gaussian spatial falloff weight
65
+ let distSq = f32(dx * dx + dy * dy);
66
+ let weight = exp(-distSq / (2.0 * f32(w * w) + 0.1));
67
+
68
+ sxx += ix * ix * weight;
69
+ syy += iy * iy * weight;
70
+ sxy += ix * iy * weight;
71
+ sxt += ix * it * weight;
72
+ syt += iy * it * weight;
73
+ }
74
+ }
75
+
76
+ // Tikhonov regularization prevents singularity in flat/homogeneous regions
77
+ let trace = sxx + syy;
78
+ let reg = max(params.regularization, 1e-4) * max(trace, 1.0);
79
+ let A = sxx + reg;
80
+ let B = sxy;
81
+ let C = syy + reg;
82
+
83
+ let det = A * C - B * B;
84
+ var u: f32 = 0.0;
85
+ var v: f32 = 0.0;
86
+
87
+ if (det > 1e-6) {
88
+ u = (-sxt * C + syt * B) / det;
89
+ v = (-syt * A + sxt * B) / det;
90
+ }
91
+
92
+ let mag = length(vec2<f32>(u, v));
93
+ let maxD = max(params.maxDisplacement, 1.0);
94
+ if (mag > maxD) {
95
+ let scale = maxD / mag;
96
+ u *= scale;
97
+ v *= scale;
98
+ }
99
+
100
+ textureStore(flowTex, id.xy, vec4<f32>(u, v, min(mag, maxD), 1.0));
101
+ }
102
+ `,U=`
103
+ struct FlowParams {
104
+ width: u32,
105
+ height: u32,
106
+ windowSize: u32,
107
+ regularization: f32,
108
+ maxDisplacement: f32,
109
+ coarseWidth: u32,
110
+ coarseHeight: u32,
111
+ _pad0: f32,
112
+ };
113
+
114
+ @group(0) @binding(0) var prevTex: texture_2d<f32>;
115
+ @group(0) @binding(1) var currTex: texture_2d<f32>;
116
+ @group(0) @binding(2) var coarseFlowTex: texture_2d<f32>;
117
+ @group(0) @binding(3) var fineFlowTex: texture_storage_2d<rgba16float, write>;
118
+ @group(0) @binding(4) var<uniform> params: FlowParams;
119
+ @group(0) @binding(5) var bilinearSamp: sampler;
120
+
121
+ fn rgbToLuminance(rgb: vec3<f32>) -> f32 {
122
+ return dot(rgb, vec3<f32>(0.299, 0.587, 0.114));
123
+ }
124
+
125
+ fn sampleLuma(tex: texture_2d<f32>, coord: vec2<i32>) -> f32 {
126
+ let clamped = clamp(coord, vec2<i32>(0, 0), vec2<i32>(i32(params.width) - 1, i32(params.height) - 1));
127
+ let color = textureLoad(tex, clamped, 0);
128
+ return rgbToLuminance(color.rgb);
129
+ }
130
+
131
+ fn sampleWarpedPrevLuma(uv: vec2<f32>, priorFlow: vec2<f32>) -> f32 {
132
+ let invDims = vec2<f32>(1.0 / f32(params.width), 1.0 / f32(params.height));
133
+ let warpedUv = clamp(uv - priorFlow * invDims, vec2<f32>(0.0), vec2<f32>(1.0));
134
+ let sampleColor = textureSampleLevel(prevTex, bilinearSamp, warpedUv, 0.0);
135
+ return rgbToLuminance(sampleColor.rgb);
136
+ }
137
+
138
+ @compute @workgroup_size(16, 16)
139
+ fn refineFlow(@builtin(global_invocation_id) id: vec3<u32>) {
140
+ if (id.x >= params.width || id.y >= params.height) {
141
+ return;
142
+ }
143
+
144
+ let centerCoord = vec2<i32>(i32(id.x), i32(id.y));
145
+ let w = i32(max(params.windowSize, 1u));
146
+ let invDims = vec2<f32>(1.0 / f32(params.width), 1.0 / f32(params.height));
147
+ let centerUv = (vec2<f32>(id.xy) + 0.5) * invDims;
148
+
149
+ // Read upsampled prior flow from coarse scale (scaled by 2x)
150
+ let coarseCoord = vec2<i32>(centerCoord / 2);
151
+ let coarseSample = textureLoad(coarseFlowTex, coarseCoord, 0);
152
+ let priorFlow = coarseSample.xy * 2.0;
153
+
154
+ var sxx: f32 = 0.0;
155
+ var syy: f32 = 0.0;
156
+ var sxy: f32 = 0.0;
157
+ var sxt: f32 = 0.0;
158
+ var syt: f32 = 0.0;
159
+
160
+ for (var dy = -w; dy <= w; dy = dy + 1) {
161
+ for (var dx = -w; dx <= w; dx = dx + 1) {
162
+ let p = centerCoord + vec2<i32>(dx, dy);
163
+ let pUv = (vec2<f32>(p) + 0.5) * invDims;
164
+
165
+ let lx = sampleLuma(currTex, p - vec2<i32>(1, 0));
166
+ let rx = sampleLuma(currTex, p + vec2<i32>(1, 0));
167
+ let uy = sampleLuma(currTex, p - vec2<i32>(0, 1));
168
+ let dyL = sampleLuma(currTex, p + vec2<i32>(0, 1));
169
+
170
+ let ix = (rx - lx) * 0.5;
171
+ let iy = (dyL - uy) * 0.5;
172
+
173
+ // Temporal residual against warped previous frame
174
+ let cCurr = sampleLuma(currTex, p);
175
+ let cWarpedPrev = sampleWarpedPrevLuma(pUv, priorFlow);
176
+ let it = cCurr - cWarpedPrev;
177
+
178
+ let distSq = f32(dx * dx + dy * dy);
179
+ let weight = exp(-distSq / (2.0 * f32(w * w) + 0.1));
180
+
181
+ sxx += ix * ix * weight;
182
+ syy += iy * iy * weight;
183
+ sxy += ix * iy * weight;
184
+ sxt += ix * it * weight;
185
+ syt += iy * it * weight;
186
+ }
187
+ }
188
+
189
+ let trace = sxx + syy;
190
+ let reg = max(params.regularization, 1e-4) * max(trace, 1.0);
191
+ let A = sxx + reg;
192
+ let B = sxy;
193
+ let C = syy + reg;
194
+
195
+ let det = A * C - B * B;
196
+ var du: f32 = 0.0;
197
+ var dv: f32 = 0.0;
198
+
199
+ if (det > 1e-6) {
200
+ du = (-sxt * C + syt * B) / det;
201
+ dv = (-syt * A + sxt * B) / det;
202
+ }
203
+
204
+ // Combine coarse prior flow with fine residual flow
205
+ var totalFlow = priorFlow + vec2<f32>(du, dv);
206
+ let mag = length(totalFlow);
207
+ let maxD = max(params.maxDisplacement, 1.0);
208
+ if (mag > maxD) {
209
+ totalFlow *= (maxD / mag);
210
+ }
211
+
212
+ textureStore(fineFlowTex, id.xy, vec4<f32>(totalFlow.x, totalFlow.y, min(mag, maxD), 1.0));
213
+ }
214
+ `;var _=class{constructor(e){this.device=e;let o=e.createShaderModule({label:"optical_flow_direct.wgsl",code:P});this.directPipeline=e.createComputePipeline({label:"OpticalFlowDirectPipeline",layout:"auto",compute:{module:o,entryPoint:"computeFlow"}});let l=e.createShaderModule({label:"optical_flow_refine.wgsl",code:U});this.refinePipeline=e.createComputePipeline({label:"OpticalFlowRefinePipeline",layout:"auto",compute:{module:l,entryPoint:"refineFlow"}}),this.directUniformBuffer=e.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"optical_flow_direct_uniform"}),this.refineUniformBuffer=e.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"optical_flow_refine_uniform"}),this.bilinearSampler=e.createSampler({label:"optical_flow_bilinear_sampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"})}device;directPipeline;refinePipeline;directUniformBuffer;refineUniformBuffer;bilinearSampler;cachedCoarseTexture;cachedOutputTexture;execute(e,o,l={},b){let i=o.width,a=o.height,g=l?.windowSize??3,h=l?.regularization??l?.lambda??.05,u=l?.scale??.5,w=64,v=l.outputFormat??"rgba16float";(!this.cachedOutputTexture||this.cachedOutputTexture.width!==i||this.cachedOutputTexture.height!==a||this.cachedOutputTexture.format!==v)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:`optical_flow_output_${v}`,size:[i,a],format:v,usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let f=b??this.device.createCommandEncoder({label:"optical_flow_command_encoder"});if(u>.1&&u<.95&&i>=64&&a>=64){let r=Math.max(16,Math.floor(i*u)),t=Math.max(16,Math.floor(a*u));(!this.cachedCoarseTexture||this.cachedCoarseTexture.width!==r||this.cachedCoarseTexture.height!==t)&&(this.cachedCoarseTexture?.destroy(),this.cachedCoarseTexture=this.device.createTexture({label:"optical_flow_coarse",size:[r,t],format:"rgba16float",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let c=new ArrayBuffer(32),n=new Uint32Array(c),s=new Float32Array(c);n[0]=r,n[1]=t,n[2]=g,s[3]=h,s[4]=w*u,this.device.queue.writeBuffer(this.directUniformBuffer,0,c);let B=this.device.createBindGroup({layout:this.directPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:o.createView()},{binding:2,resource:this.cachedCoarseTexture.createView()},{binding:3,resource:{buffer:this.directUniformBuffer}}]}),p=f.beginComputePass({label:"optical_flow_coarse_pass"});p.setPipeline(this.directPipeline),p.setBindGroup(0,B),p.dispatchWorkgroups(Math.ceil(r/16),Math.ceil(t/16)),p.end();let y=new ArrayBuffer(32),d=new Uint32Array(y),T=new Float32Array(y);d[0]=i,d[1]=a,d[2]=g,T[3]=h,T[4]=w,d[5]=r,d[6]=t,this.device.queue.writeBuffer(this.refineUniformBuffer,0,y);let C=this.device.createBindGroup({layout:this.refinePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:o.createView()},{binding:2,resource:this.cachedCoarseTexture.createView()},{binding:3,resource:this.cachedOutputTexture.createView()},{binding:4,resource:{buffer:this.refineUniformBuffer}},{binding:5,resource:this.bilinearSampler}]}),m=f.beginComputePass({label:"optical_flow_fine_pass"});m.setPipeline(this.refinePipeline),m.setBindGroup(0,C),m.dispatchWorkgroups(Math.ceil(i/16),Math.ceil(a/16)),m.end()}else{let r=new ArrayBuffer(32),t=new Uint32Array(r),c=new Float32Array(r);t[0]=i,t[1]=a,t[2]=g,c[3]=h,c[4]=w,this.device.queue.writeBuffer(this.directUniformBuffer,0,r);let n=this.device.createBindGroup({layout:this.directPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.createView()},{binding:1,resource:o.createView()},{binding:2,resource:this.cachedOutputTexture.createView()},{binding:3,resource:{buffer:this.directUniformBuffer}}]}),s=f.beginComputePass({label:"optical_flow_direct_pass"});s.setPipeline(this.directPipeline),s.setBindGroup(0,n),s.dispatchWorkgroups(Math.ceil(i/16),Math.ceil(a/16)),s.end()}return b||this.device.queue.submit([f.finish()]),this.cachedOutputTexture}destroy(){this.cachedCoarseTexture?.destroy(),this.cachedOutputTexture?.destroy(),this.directUniformBuffer.destroy(),this.refineUniformBuffer.destroy()}};export{_ as a};
@@ -0,0 +1 @@
1
+ import{a as t}from"./chunk-KERW7QJ4.mjs";import{a as pe}from"./chunk-TPAEN6VV.mjs";import{h as ie}from"./chunk-63SFBHEH.mjs";import{d,e as p}from"./chunk-BVF64D6H.mjs";p();p();p();p();p();p();function de(r){return typeof d<"u"?d.env?.[r]:void 0}function me(){let r=de("FRAMEFIELDS_STRICT_PROPS");return r==="1"||r==="true"}function ze(){return me()||de("NODE_ENV")!=="production"}var ue=new Set;function se(r){if(me())throw new Error(r);ue.has(r)||(ue.add(r),console.warn(`[framefields] ${r}`))}function ce(r){if(typeof r!="object"||r===null||Array.isArray(r)||ie(r))return!1;let e=Object.getPrototypeOf(r);return e===Object.prototype||e===null}function Fe(r,e){let a=Array.from({length:e.length+1},(l,i)=>i);for(let l=1;l<=r.length;l++){let i=a[0];a[0]=l;for(let s=1;s<=e.length;s++){let c=a[s];a[s]=Math.min(a[s]+1,a[s-1]+1,i+(r[l-1]===e[s-1]?0:1)),i=c}}return a[e.length]}function Ye(r,e){let a,l=Number.POSITIVE_INFINITY,i=r.toLowerCase();for(let c of e){let u=c.toLowerCase(),m=u.includes(i)||i.includes(u)?1:Fe(i,u);m<l&&(l=m,a=c)}return a&&l<=Math.max(2,Math.ceil(r.length/2))?` Did you mean "${a}"?`:` Known props: ${e.join(", ")}.`}function Ve(r,e,a){if(typeof e=="number"){let{min:l,max:i}=a,s=l!==void 0&&e<l,c=i!==void 0&&e>i;if(s||c||Number.isNaN(e)){let u=l!==void 0&&i!==void 0?`${l} to ${i}`:l!==void 0?`\u2265 ${l}`:`\u2264 ${i}`;se(Number.isNaN(e)?`${r} is NaN`:`${r} = ${e} is outside ${u}`)}return}a.enum&&(typeof e=="string"||typeof e=="boolean")&&!a.enum.includes(e)&&se(`${r} = ${JSON.stringify(e)} is not one of ${a.enum.map(l=>JSON.stringify(l)).join(", ")}`)}function be(r,e,a){let l=Object.keys(a);for(let[i,s]of Object.entries(e)){if(s===void 0)continue;let c=a[i];if(!c){se(`${r}: unknown prop "${i}".${Ye(i,l)}`);continue}ie(s)||typeof s=="function"||(c.props&&ce(s)?be(`${r}.${i}`,s,c.props):Ve(`${r}.${i}`,s,c))}}function Xe(r){return typeof r=="object"&&r!==null?structuredClone(r):r}function o(r,e,a,l){let i=a;ze()&&be(r,i,l);let s={};for(let[c,u]of Object.entries(e))s[c]=Xe(u);for(let[c,u]of Object.entries(i)){if(u===void 0)continue;let m=s[c];s[c]=ce(m)&&ce(u)?{...m,...Object.fromEntries(Object.entries(u).filter(([,Oe])=>Oe!==void 0))}:u}return s}p();var n={Ascii:{cellSize:{min:4,max:64},colorMode:{enum:["mono","source","green"]},fg:{},bg:{},contrast:{min:.5,max:3},invert:{}},AudioCompressor:{threshold:{min:-60,max:0},ratio:{min:1,max:100},attack:{min:1e-4,max:1},release:{min:.01,max:5},knee:{min:0,max:24},makeupGain:{min:0,max:24}},AudioDelay:{delayTime:{min:.001,max:5},feedback:{min:0,max:.95},wet:{min:0,max:1},dry:{min:0,max:1},pingPong:{}},AudioFade:{fadeInDuration:{min:0,max:60},fadeOutDuration:{min:0,max:60},fadeInCurve:{enum:["linear","exponential","scurve"]},fadeOutCurve:{enum:["linear","exponential","scurve"]}},AudioNoiseGate:{threshold:{min:-120,max:0},attack:{min:1e-4,max:1},hold:{min:.001,max:5},release:{min:.01,max:5},range:{min:-120,max:0}},AudioParametricEq:{type:{enum:["lowShelf","highShelf","peak","lowPass","highPass","notch"]},frequency:{min:20,max:2e4},gain:{min:-24,max:24},q:{min:.01,max:10}},AudioReverb:{roomSize:{min:0,max:.98},damping:{min:0,max:1},wet:{min:0,max:1},dry:{min:0,max:1},width:{min:0,max:1}},Blur:{blurType:{enum:["Gaussian","Box","Median","Motion","Bilateral","Edge-preserving","Radial","Zoom"]},strength:{min:0,max:100},angle:{min:0,max:360},sigmaColor:{min:.01,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1},partialBlur:{},radius:{min:.01,max:1},radiusY:{min:0,max:1},shape:{enum:["ellipse","circle","rect"]}},CameraParallax3D:{motionPreset:{enum:["Custom","DollyZoom","Orbit","FlyThrough","HandheldShake","RackFocus"]},panX:{min:-1,max:1},panY:{min:-1,max:1},dollyZ:{min:-1,max:1},fov:{min:15,max:120},parallaxAmount:{min:0,max:2},dofAperture:{min:0,max:1},focusPlane:{min:0,max:1},edgeDilation:{min:0,max:1},depthInvert:{}},ChannelMerger:{colorSpace:{enum:["RGBA","HSLA","CMYK","LAB"]},defaultChannel4:{min:0,max:1}},ChannelSplitter:{colorSpace:{enum:["RGBA","HSLA","CMYK","LAB"]}},ColorBalance:{shadows:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},midtones:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},highlights:{props:{cyanRed:{min:-100,max:100},magentaGreen:{min:-100,max:100},yellowBlue:{min:-100,max:100}}},preserveLuminosity:{}},ColorKey:{keyColor:{},similarity:{min:0,max:1},smoothness:{min:0,max:1},spillSuppression:{min:0,max:1},colorSpace:{enum:["YUV","RGB"]},spillSuppressionType:{enum:["Desaturate","Neutralize","None"]}},Contour:{levels:{min:2,max:64},lineWidth:{min:.5,max:8},lineColor:{},fill:{enum:["source","flat","none"]},fillColor:{},smoothing:{min:0,max:8}},CornerPin:{points:{}},CRT:{scanlines:{min:0,max:1},lineCount:{min:100,max:2160},curvature:{min:0,max:1},mask:{min:0,max:1},vignette:{min:0,max:1},noise:{min:0,max:1},flicker:{min:0,max:1},tracking:{min:0,max:1},chroma:{min:0,max:20}},Datamosh:{keyframes:{},strength:{min:0,max:10},bleed:{min:0,max:1},warmup:{min:1,max:240}},DisplacementMap:{strengthX:{min:0,max:500},strengthY:{min:0,max:500},xChannel:{enum:["Red","Green","Blue","Alpha","Luminance"]},yChannel:{enum:["Red","Green","Blue","Alpha","Luminance"]},wrapMode:{enum:["Clamp","Repeat","Mirror"]}},Dither:{mode:{enum:["bayer","noise","halftone"]},levels:{min:2,max:16},scale:{min:1,max:16},monochrome:{},dark:{},light:{}},ExtractLUT:{strategy:{enum:["deterministic","statistical"]},samplePoints:{min:10,max:500}},Flip:{horizontal:{},vertical:{},diagonal:{},mode:{enum:["horizontal","vertical","both","diagonal","antiDiagonal","custom"]},symmetry:{enum:["none","leftToRight","rightToLeft","topToBottom","bottomToTop","quadrant"]}},Gooey:{radius:{min:1,max:60},threshold:{min:0,max:1},softness:{min:.001,max:.5}},Iridescence:{strength:{min:0,max:1},scale:{min:.1,max:10},shift:{min:-3600,max:3600},mode:{enum:["luminance","relief"]}},Kaleidoscope:{segments:{min:2,max:32},rotation:{min:-3600,max:3600},centerX:{min:0,max:1},centerY:{min:0,max:1},zoom:{min:.2,max:4}},KenBurns:{keyframes:{},motionBlurSize:{min:0,max:10},movementStyle:{enum:["spline","direct"]},aspectRatio:{enum:["input","16:9","9:16","21:9","9:21","1:1","4:3","3:2","2:3","4:5","5:4"]}},LayerStyle:{dropShadow:{props:{enabled:{},color:{},opacity:{min:0,max:1},angle:{min:0,max:360},distance:{min:0,max:500},spread:{min:0,max:100},size:{min:0,max:250},blendMode:{}}},innerShadow:{props:{enabled:{},color:{},opacity:{min:0,max:1},angle:{min:0,max:360},distance:{min:0,max:500},choke:{min:0,max:100},size:{min:0,max:250},blendMode:{}}},outerGlow:{props:{enabled:{},color:{},opacity:{min:0,max:1},size:{min:0,max:250},spread:{min:0,max:100},blendMode:{}}},innerGlow:{props:{enabled:{},color:{},opacity:{min:0,max:1},size:{min:0,max:250},spread:{min:0,max:100},blendMode:{}}},stroke:{props:{enabled:{},size:{min:0,max:100},position:{enum:["inside","center","outside"]},color:{},opacity:{min:0,max:1},blendMode:{}}},bevelEmboss:{props:{enabled:{},style:{enum:["InnerBevel","OuterBevel","Emboss","PillowEmboss"]},technique:{enum:["Smooth","ChiselHard","ChiselSoft"]},depth:{min:1,max:1e3},direction:{enum:["Up","Down"]},size:{min:0,max:250},soften:{min:0,max:50},angle:{min:0,max:360},altitude:{min:0,max:90},highlightColor:{},highlightOpacity:{min:0,max:1},shadowColor:{},shadowOpacity:{min:0,max:1}}},colorOverlay:{props:{enabled:{},color:{},opacity:{min:0,max:1},blendMode:{}}},dropShadowAngleHandleId:{},dropShadowDistanceHandleId:{},dropShadowSpreadHandleId:{},dropShadowSizeHandleId:{},dropShadowOpacityHandleId:{},innerShadowAngleHandleId:{},innerShadowDistanceHandleId:{},innerShadowChokeHandleId:{},innerShadowSizeHandleId:{},innerShadowOpacityHandleId:{},outerGlowSizeHandleId:{},outerGlowSpreadHandleId:{},outerGlowOpacityHandleId:{},innerGlowSizeHandleId:{},innerGlowSpreadHandleId:{},innerGlowOpacityHandleId:{},strokeSizeHandleId:{},strokeOpacityHandleId:{},bevelEmbossDepthHandleId:{},bevelEmbossSizeHandleId:{},bevelEmbossSoftenHandleId:{},bevelEmbossAngleHandleId:{},bevelEmbossAltitudeHandleId:{},bevelEmbossHighlightOpacityHandleId:{},bevelEmbossShadowOpacityHandleId:{},colorOverlayOpacityHandleId:{}},Liquify:{operations:{}},MaskMath:{operation:{enum:["Union","Intersect","Subtract","Difference","Invert","Dilate","Erode","Choke","Feather"]},radius:{min:0,max:200},threshold:{min:0,max:1},clampMin:{min:0,max:1},clampMax:{min:0,max:1},channelA:{enum:["Alpha","Luminance","Red","Green","Blue"]},channelB:{enum:["Alpha","Luminance","Red","Green","Blue"]},binarize:{},invertResult:{},outputFormat:{enum:["WhiteWithAlpha","GrayscaleRGB","AlphaOnly","PassthroughRGB"]}},MeshWarp:{cols:{min:2,max:12},rows:{min:2,max:12},points:{}},NoiseGenerator:{noiseType:{enum:["Perlin","Simplex","Voronoi"]},outputType:{enum:["Image","Video"]},width:{min:16,max:4096},height:{min:16,max:4096},scale:{min:.1,max:100},octaves:{min:1,max:8},persistence:{min:0,max:1},lacunarity:{min:1,max:4},speed:{min:0,max:10},colorStart:{},colorEnd:{},durationMs:{min:1,max:6e4},fps:{min:1,max:120}},OpArt:{pattern:{enum:["stripes","rings","checker","waves"]},frequency:{min:2,max:300},angle:{min:-360,max:360},warp:{min:0,max:3},source:{min:0,max:1},colorA:{},colorB:{}},Paint:{width:{min:1,max:16384},height:{min:1,max:16384},maintainAspect:{},aspectRatio:{},backgroundColor:{},strokes:{}},Painterly:{style:{enum:["oil","watercolor"]},radius:{min:2,max:12},edgeDarkening:{min:0,max:1},paper:{min:0,max:1},saturation:{min:0,max:2}},PatchHeal:{patches:{},centerX:{min:0,max:1},centerY:{min:0,max:1},offsetX:{min:-4096,max:4096},offsetY:{min:-4096,max:4096},radius:{min:1,max:500},sourceRadius:{min:1,max:500},feather:{min:0,max:100},opacity:{min:0,max:1},mode:{enum:["Clone","SeamlessHeal","TextureTransfer"]}},Pixelate:{size:{min:1,max:256},shape:{enum:["square","circle","diamond"]},gap:{min:0,max:.9}},Posterize:{levels:{min:2,max:64},palette:{enum:["none","gameboy","teletext","cga","pico8","c64","grayscale","sepia","custom"]},colors:{},dither:{min:0,max:1},pixelSize:{min:1,max:64}},ProceduralVFX:{effectType:{enum:["Smoke","Fire","Rain","Sparks","Snow","Dust","Lightning","Magic","LensFlare","Embers","EnergyBeam","Aurora"]},outputType:{enum:["Image","Video"]},width:{min:16,max:4096},height:{min:16,max:4096},density:{min:0,max:1},scale:{min:.001,max:10},speed:{min:0,max:10},intensity:{min:0,max:1},seed:{min:0,max:1e6},colorStart:{},colorEnd:{},durationMs:{min:100,max:1e5},fps:{min:1,max:120}},RefineEdge:{decontaminateAmount:{min:0,max:1},radius:{min:.5,max:50},smooth:{min:0,max:100},feather:{min:0,max:50},shiftEdge:{min:-100,max:100},matteChannel:{enum:["Alpha","Luminance","Red","Green","Blue"]},outputMode:{enum:["Composite","MatteOnly","DecontaminatedRGB"]}},RefractionCaustics3D:{ior:{min:1,max:2.5},dispersion:{min:0,max:.2},refractionScale:{min:0,max:2},causticBrightness:{min:0,max:2},causticScale:{min:.1,max:5},fluidRipples:{min:0,max:1},rippleSpeed:{min:0,max:5},roughness:{min:0,max:1},specularIntensity:{min:0,max:2},lightPosX:{min:0,max:1},lightPosY:{min:0,max:1},tintColor:{},tintStrength:{min:0,max:1},depthInvert:{},depthScale:{min:.1,max:5}},ResizerScaler:{aspectRatioPreset:{enum:["9:16","16:9","1:1","4:5","21:9","custom"]},resolutionPreset:{enum:["4k","1080p","720p","480p","custom"]},targetWidth:{min:1,max:8192},targetHeight:{min:1,max:8192},fitMode:{enum:["cover","contain","stretch","manual"]},zoom:{min:1,max:1e3},offsetX:{min:-8192,max:8192},offsetY:{min:-8192,max:8192},backgroundMode:{enum:["solid","blurred","gradient","transparent"]},backgroundColor:{},backgroundColor2:{},blurRadius:{min:0,max:100},backgroundBrightness:{min:0,max:1},anchorX:{enum:["left","center","right"]},anchorY:{enum:["top","center","bottom"]}},RGBSplit:{amount:{min:0,max:200},angle:{min:-360,max:360},radial:{}},Rotate:{angle:{},fit:{enum:["cover","contain","fill"]},scale:{min:.01,max:20}},StereoPanning:{pan:{min:-1,max:1}},Toon:{levels:{min:2,max:12},edgeThreshold:{min:0,max:1},edgeWidth:{min:.5,max:4},edgeColor:{},saturation:{min:0,max:2}},Trails:{decay:{min:0,max:1},mode:{enum:["blend","over","add","max"]},zoom:{min:.5,max:2},rotation:{min:-45,max:45},offsetX:{min:-500,max:500},offsetY:{min:-500,max:500},hueShift:{min:-180,max:180},warmup:{min:0,max:240}},Vignette:{strength:{min:0,max:100},radius:{min:.1,max:2},softness:{min:0,max:1},roundness:{min:0,max:1},centerX:{min:0,max:1},centerY:{min:0,max:1}}};var qe={cellSize:10,colorMode:"mono",fg:"#e8e8e8",bg:"#0b0b0b",contrast:1.2,invert:!1},b=class extends t{op="Ascii";constructor(e={}){super(o("Ascii",qe,e,n.Ascii))}},We={threshold:-24,ratio:4,attack:.003,release:.25,knee:6,makeupGain:0},f=class extends t{op="AudioCompressor";constructor(e={}){super(o("AudioCompressor",We,e,n.AudioCompressor))}},Ke={delayTime:.25,feedback:.4,wet:.3,dry:1,pingPong:!1},h=class extends t{op="AudioDelay";constructor(e={}){super(o("AudioDelay",Ke,e,n.AudioDelay))}},Ne={fadeInDuration:0,fadeOutDuration:0,fadeInCurve:"linear",fadeOutCurve:"linear"},P=class extends t{op="AudioFade";constructor(e={}){super(o("AudioFade",Ne,e,n.AudioFade))}},je={threshold:-40,attack:.005,hold:.05,release:.1,range:-80},y=class extends t{op="AudioNoiseGate";constructor(e={}){super(o("AudioNoiseGate",je,e,n.AudioNoiseGate))}},Ue={type:"peak",frequency:1e3,gain:0,q:1},g=class extends t{op="AudioParametricEq";constructor(e={}){super(o("AudioParametricEq",Ue,e,n.AudioParametricEq))}},$e={roomSize:.5,damping:.5,wet:.3,dry:1,width:1},x=class extends t{op="AudioReverb";constructor(e={}){super(o("AudioReverb",$e,e,n.AudioReverb))}},Ze={blurType:"Gaussian",strength:5,angle:0,sigmaColor:.1,centerX:.5,centerY:.5,partialBlur:!1,radius:.3,radiusY:0,shape:"circle"},le=class extends t{op="Blur";constructor(e={}){super(o("Blur",Ze,e,n.Blur))}},_e={motionPreset:"DollyZoom",panX:0,panY:0,dollyZ:0,fov:50,parallaxAmount:.6,dofAperture:.3,focusPlane:.4,edgeDilation:.5,depthInvert:!1},S=class extends t{op="CameraParallax3D";constructor(e={}){super(o("CameraParallax3D",_e,e,n.CameraParallax3D))}},Je={colorSpace:"RGBA",defaultChannel4:1},C=class extends t{op="ChannelMerger";constructor(e={}){super(o("ChannelMerger",Je,e,n.ChannelMerger))}},Qe={colorSpace:"RGBA"},E=class extends t{op="ChannelSplitter";constructor(e={}){super(o("ChannelSplitter",Qe,e,n.ChannelSplitter))}},er={shadows:{cyanRed:0,magentaGreen:0,yellowBlue:0},midtones:{cyanRed:0,magentaGreen:0,yellowBlue:0},highlights:{cyanRed:0,magentaGreen:0,yellowBlue:0},preserveLuminosity:!0},w=class extends t{op="ColorBalance";constructor(e={}){super(o("ColorBalance",er,e,n.ColorBalance))}},rr={keyColor:"#00ff00",similarity:.4,smoothness:.1,spillSuppression:.2,colorSpace:"YUV",spillSuppressionType:"Desaturate"},v=class extends t{op="ColorKey";constructor(e={}){super(o("ColorKey",rr,e,n.ColorKey))}},tr={levels:14,lineWidth:1.2,lineColor:"#2b1d0e",fill:"source",fillColor:"#f3ead8",smoothing:2},R=class extends t{op="Contour";constructor(e={}){super(o("Contour",tr,e,n.Contour))}},nr={},A=class extends t{op="CornerPin";constructor(e={}){super(o("CornerPin",nr,e,n.CornerPin))}},or={scanlines:.45,lineCount:540,curvature:.12,mask:.25,vignette:.35,noise:.08,flicker:.03,tracking:0,chroma:0},M=class extends t{op="CRT";constructor(e={}){super(o("CRT",or,e,n.CRT))}},ar={keyframes:[],strength:1,bleed:0,warmup:48},D=class extends t{op="Datamosh";constructor(e={}){super(o("Datamosh",ar,e,n.Datamosh))}},lr={strengthX:50,strengthY:50,xChannel:"Red",yChannel:"Green",wrapMode:"Clamp"},k=class extends t{op="DisplacementMap";constructor(e={}){super(o("DisplacementMap",lr,e,n.DisplacementMap))}},ir={mode:"bayer",levels:2,scale:2,monochrome:!0,dark:"#111111",light:"#f2efe6"},B=class extends t{op="Dither";constructor(e={}){super(o("Dither",ir,e,n.Dither))}},sr={strategy:"deterministic",samplePoints:150},I=class extends t{op="ExtractLUT";constructor(e={}){super(o("ExtractLUT",sr,e,n.ExtractLUT))}},cr={horizontal:!0,vertical:!1,diagonal:!1,mode:"horizontal",symmetry:"none"},T=class extends t{op="Flip";constructor(e={}){super(o("Flip",cr,e,n.Flip))}},pr={radius:12,threshold:.5,softness:.04},G=class extends t{op="Gooey";constructor(e={}){super(o("Gooey",pr,e,n.Gooey))}},ur={strength:.6,scale:2,shift:0,mode:"relief"},H=class extends t{op="Iridescence";constructor(e={}){super(o("Iridescence",ur,e,n.Iridescence))}},dr={segments:6,rotation:0,centerX:.5,centerY:.5,zoom:1},L=class extends t{op="Kaleidoscope";constructor(e={}){super(o("Kaleidoscope",dr,e,n.Kaleidoscope))}},mr={keyframes:[],motionBlurSize:1.5,movementStyle:"spline",aspectRatio:"input"},O=class extends t{op="KenBurns";constructor(e={}){super(o("KenBurns",mr,e,n.KenBurns))}},br={dropShadow:{enabled:!1,color:"#000000",opacity:.75,angle:120,distance:10,spread:0,size:10,blendMode:"multiply"},innerShadow:{enabled:!1,color:"#000000",opacity:.75,angle:120,distance:5,choke:0,size:5,blendMode:"multiply"},outerGlow:{enabled:!1,color:"#ffffff",opacity:.75,size:15,spread:0,blendMode:"screen"},innerGlow:{enabled:!1,color:"#ffffff",opacity:.75,size:15,spread:0,blendMode:"screen"},stroke:{enabled:!1,size:2,position:"outside",color:"#ffffff",opacity:1,blendMode:"normal"},bevelEmboss:{enabled:!1,style:"InnerBevel",technique:"Smooth",depth:100,direction:"Up",size:5,soften:0,angle:120,altitude:30,highlightColor:"#ffffff",highlightOpacity:.75,shadowColor:"#000000",shadowOpacity:.75},colorOverlay:{enabled:!1,color:"#ff0000",opacity:1,blendMode:"normal"}},z=class extends t{op="LayerStyle";constructor(e={}){super(o("LayerStyle",br,e,n.LayerStyle))}},fr={operations:[]},F=class extends t{op="Liquify";constructor(e={}){super(o("Liquify",fr,e,n.Liquify))}},hr={operation:"Union",radius:0,threshold:.5,clampMin:0,clampMax:1,channelA:"Alpha",channelB:"Alpha",binarize:!1,invertResult:!1,outputFormat:"WhiteWithAlpha"},Y=class extends t{op="MaskMath";constructor(e={}){super(o("MaskMath",hr,e,n.MaskMath))}},Pr={cols:3,rows:3},V=class extends t{op="MeshWarp";constructor(e={}){super(o("MeshWarp",Pr,e,n.MeshWarp))}},yr={noiseType:"Perlin",outputType:"Image",width:512,height:512,scale:10,octaves:4,persistence:.5,lacunarity:2,speed:1,colorStart:"#000000",colorEnd:"#ffffff",durationMs:5e3,fps:30},X=class extends t{op="NoiseGenerator";constructor(e={}){super(o("NoiseGenerator",yr,e,n.NoiseGenerator))}},gr={pattern:"stripes",frequency:48,angle:0,warp:.6,source:1,colorA:"#0a0a0a",colorB:"#f5f5f5"},q=class extends t{op="OpArt";constructor(e={}){super(o("OpArt",gr,e,n.OpArt))}},xr={width:1080,height:1080,maintainAspect:!0,backgroundColor:"#ffffff"},W=class extends t{op="Paint";constructor(e={}){super(o("Paint",xr,e,n.Paint))}},Sr={style:"oil",radius:5,edgeDarkening:.5,paper:.3,saturation:1.05},K=class extends t{op="Painterly";constructor(e={}){super(o("Painterly",Sr,e,n.Painterly))}},Cr={centerX:.5,centerY:.5,offsetX:50,offsetY:0,radius:25,sourceRadius:25,feather:50,opacity:1,mode:"SeamlessHeal"},N=class extends t{op="PatchHeal";constructor(e={}){super(o("PatchHeal",Cr,e,n.PatchHeal))}},Er={size:12,shape:"square",gap:0},j=class extends t{op="Pixelate";constructor(e={}){super(o("Pixelate",Er,e,n.Pixelate))}},wr={levels:6,palette:"none",colors:[],dither:0,pixelSize:1},U=class extends t{op="Posterize";constructor(e={}){super(o("Posterize",wr,e,n.Posterize))}},vr={effectType:"Smoke",outputType:"Video",width:1080,height:1080,density:.6,scale:.01,speed:1,intensity:.8,seed:1234,colorStart:"#ffffff",colorEnd:"#ff5500",durationMs:5e3,fps:30},$=class extends t{op="ProceduralVFX";constructor(e={}){super(o("ProceduralVFX",vr,e,n.ProceduralVFX))}},Rr={decontaminateAmount:.7,radius:2,smooth:5,feather:.5,shiftEdge:0,matteChannel:"Alpha",outputMode:"Composite"},Z=class extends t{op="RefineEdge";constructor(e={}){super(o("RefineEdge",Rr,e,n.RefineEdge))}},Ar={ior:1.52,dispersion:.04,refractionScale:.5,causticBrightness:.6,causticScale:1,fluidRipples:0,rippleSpeed:1,roughness:0,specularIntensity:.8,lightPosX:.5,lightPosY:.2,tintColor:"#ffffff",tintStrength:0,depthInvert:!1,depthScale:1},_=class extends t{op="RefractionCaustics3D";constructor(e={}){super(o("RefractionCaustics3D",Ar,e,n.RefractionCaustics3D))}},Mr={aspectRatioPreset:"16:9",resolutionPreset:"1080p",targetWidth:1920,targetHeight:1080,fitMode:"contain",zoom:100,offsetX:0,offsetY:0,backgroundMode:"solid",backgroundColor:"#000000FF",backgroundColor2:"#000000FF",blurRadius:40,backgroundBrightness:.6,anchorX:"center",anchorY:"center"},J=class extends t{op="ResizerScaler";constructor(e={}){super(o("ResizerScaler",Mr,e,n.ResizerScaler))}},Dr={amount:8,angle:0,radial:!1},Q=class extends t{op="RGBSplit";constructor(e={}){super(o("RGBSplit",Dr,e,n.RGBSplit))}},kr={angle:90,fit:"cover",scale:1},ee=class extends t{op="Rotate";constructor(e={}){super(o("Rotate",kr,e,n.Rotate))}},Br={pan:0},re=class extends t{op="StereoPanning";constructor(e={}){super(o("StereoPanning",Br,e,n.StereoPanning))}},Ir={levels:4,edgeThreshold:.2,edgeWidth:1,edgeColor:"#111111",saturation:1.15},te=class extends t{op="Toon";constructor(e={}){super(o("Toon",Ir,e,n.Toon))}},Tr={decay:.9,mode:"blend",zoom:1,rotation:0,offsetX:0,offsetY:0,hueShift:0,warmup:60},ne=class extends t{op="Trails";constructor(e={}){super(o("Trails",Tr,e,n.Trails))}},Gr={strength:50,radius:1,softness:.5,roundness:.5,centerX:.5,centerY:.5},oe=class extends t{op="Vignette";constructor(e={}){super(o("Vignette",Gr,e,n.Vignette))}};function Hr(r){return{partialBlur:!0,centerX:r.center.x,centerY:r.center.y,radius:r.bounds.width.multiply(.55),radiusY:r.bounds.height.multiply(.55),shape:"ellipse",strength:r.active.multiply(25)}}var ae=class extends le{constructor(e={}){let{track:a,...l}=e;super(a?{...Hr(a),...Lr(l)}:l)}};function Lr(r){return Object.fromEntries(Object.entries(r).filter(([,e])=>e!==void 0))}p();var Or={ascii:r=>new b(r),audioCompressor:r=>new f(r),audioDelay:r=>new h(r),audioFade:r=>new P(r),audioNoiseGate:r=>new y(r),audioParametricEq:r=>new g(r),audioReverb:r=>new x(r),blur:r=>new ae(r),cameraParallax3D:r=>new S(r),channelMerger:r=>new C(r),channelSplitter:r=>new E(r),colorBalance:r=>new w(r),colorKey:r=>new v(r),contour:r=>new R(r),cornerPin:r=>new A(r),cRT:r=>new M(r),datamosh:r=>new D(r),displacementMap:r=>new k(r),dither:r=>new B(r),extractLUT:r=>new I(r),flip:r=>new T(r),gooey:r=>new G(r),iridescence:r=>new H(r),kaleidoscope:r=>new L(r),kenBurns:r=>new O(r),layerStyle:r=>new z(r),liquify:r=>new F(r),maskMath:r=>new Y(r),meshWarp:r=>new V(r),noiseGenerator:r=>new X(r),opArt:r=>new q(r),paint:r=>new W(r),painterly:r=>new K(r),patchHeal:r=>new N(r),pixelate:r=>new j(r),posterize:r=>new U(r),proceduralVFX:r=>new $(r),refineEdge:r=>new Z(r),refractionCaustics3D:r=>new _(r),resizerScaler:r=>new J(r),rGBSplit:r=>new Q(r),rotate:r=>new ee(r),stereoPanning:r=>new re(r),toon:r=>new te(r),trails:r=>new ne(r),vignette:r=>new oe(r)};var fe=class extends t{op="Levels";constructor(e={}){let a={inBlack:0,inWhite:1,outBlack:0,outWhite:1};super({master:e.master??{...a},red:e.red??{...a},green:e.green??{...a},blue:e.blue??{...a},...e})}},he=class extends t{op="FilmGrain";constructor(e={}){super({strength:e.strength??15,size:e.size??1.5,monochrome:e.monochrome??!0,animated:e.animated??!0,speed:e.speed??50,shadows:e.shadows??.2,midtones:e.midtones??1,highlights:e.highlights??.2,...e})}},Pe=class extends t{op;constructor(e,a={}){super(a),this.op=e}},ye=class extends t{op="AudioSignalExtractor";constructor(e={}){super({extractionMode:e.extractionMode??"rms_envelope",attackMs:e.attackMs??10,releaseMs:e.releaseMs??120,sensitivity:e.sensitivity??1,noiseFloorDb:e.noiseFloorDb??-48,dynamicRangeDb:e.dynamicRangeDb??48,autoRange:e.autoRange??!0,smoothing:e.smoothing??.15,curve:e.curve??"linear",beatThreshold:e.beatThreshold??.08,beatDecayMs:e.beatDecayMs??80,previewMode:e.previewMode??"envelope",nodeId:e.nodeId??"audio_extractor",...e})}async extract(e,a={}){return pe.extract(e,{extractionMode:this.extractionMode,attackMs:this.attackMs,releaseMs:this.releaseMs,sensitivity:this.sensitivity,noiseFloorDb:this.noiseFloorDb,dynamicRangeDb:this.dynamicRangeDb,smoothing:this.smoothing,curve:this.curve,beatThreshold:this.beatThreshold,beatDecayMs:this.beatDecayMs,previewMode:this.previewMode,...a})}},ge=class extends t{op="Curves";constructor(e={}){super({...e,curveType:e.curveType??"rgb",master:e.master??[{x:0,y:0},{x:1,y:1}],red:e.red??[{x:0,y:0},{x:1,y:1}],green:e.green??[{x:0,y:0},{x:1,y:1}],blue:e.blue??[{x:0,y:0},{x:1,y:1}],hueVsHue:e.hueVsHue??[{x:0,y:.5},{x:1,y:.5}],hueVsSat:e.hueVsSat??[{x:0,y:1},{x:1,y:1}],lumVsSat:e.lumVsSat??[{x:0,y:1},{x:1,y:1}],satVsSat:e.satVsSat??[{x:0,y:1},{x:1,y:1}]})}},xe=class extends t{op="SelectiveColor";constructor(e={}){let a={cyan:0,magenta:0,yellow:0,black:0};super({...e,method:e.method??"Relative",reds:{...a,...e.reds},yellows:{...a,...e.yellows},greens:{...a,...e.greens},cyans:{...a,...e.cyans},blues:{...a,...e.blues},magentas:{...a,...e.magentas},whites:{...a,...e.whites},neutrals:{...a,...e.neutrals},blacks:{...a,...e.blacks}})}},Se=class extends t{op="GradientMap";constructor(e={}){let a=[{position:0,color:"#000000"},{position:1,color:"#ffffff"}];super({...e,stops:e.stops??a,smooth:e.smooth??!0,dither:e.dither??!0,opacity:e.opacity??1})}},Ce=class extends t{op="ShadowsHighlights";constructor(e={}){super({...e,shadowAmount:e.shadowAmount??0,shadowTonalWidth:e.shadowTonalWidth??50,shadowRadius:e.shadowRadius??30,highlightAmount:e.highlightAmount??0,highlightTonalWidth:e.highlightTonalWidth??50,highlightRadius:e.highlightRadius??30,colorCorrection:e.colorCorrection??0,midtoneContrast:e.midtoneContrast??0})}},Ee=class extends t{op="ApplyLUT";constructor(e={}){super({...e,lutUrl:e.lutUrl??"",intensity:e.intensity??1})}},we=class extends t{op="UnsharpMask";constructor(e={}){super({...e,amount:e.amount??100,radius:e.radius??1.5,threshold:e.threshold??3})}},ve=class extends t{op="HighPass";constructor(e={}){super({...e,radius:e.radius??3,contrastBoost:e.contrastBoost??1,monochrome:e.monochrome??!0})}},Re=class extends t{op="HalftoneScreen";constructor(e={}){super({...e,mode:e.mode??"Monochrome",dotShape:e.dotShape??"Circle",frequency:e.frequency??30,angle:e.angle??45,contrast:e.contrast??1,dotColor:e.dotColor??"#000000",paperColor:e.paperColor??"#ffffff",smooth:e.smooth??!0,invert:e.invert??!1,cyanAngle:e.cyanAngle??15,magentaAngle:e.magentaAngle??75,yellowAngle:e.yellowAngle??0,blackAngle:e.blackAngle??45,opacity:e.opacity??1})}},Ae=class extends t{op="TileOffset";constructor(e={}){super({...e,offsetX:e.offsetX??0,offsetY:e.offsetY??0,wrap:e.wrap??!0,edgeMode:e.edgeMode??"wrap"})}},Me=class extends t{op="MotionBlur";constructor(e={}){super({...e,shutterAngle:e.shutterAngle??180,samples:e.samples??16,maxVelocity:e.maxVelocity??64,shutterCurve:e.shutterCurve??"gaussian",depthAware:e.depthAware??!0})}},De=class extends t{op="SSAO";constructor(e={}){super({...e,radius:e.radius??45,bias:e.bias??.025,intensity:e.intensity??1.5,kernelSamples:e.kernelSamples??16,blurRadius:e.blurRadius??4})}},ke=class extends t{op="PBRGlass";constructor(e={}){super({...e,ior:e.ior??1.49,roughness:e.roughness??.15,transmission:e.transmission??.92,dispersion:e.dispersion??.015,fresnelPower:e.fresnelPower??5,tintColor:e.tintColor??"#ffffff"})}},Be=class extends t{op="DepthOfField";constructor(e={}){super({...e,focusDistance:e.focusDistance??500,focalLength:e.focalLength??50,aperture:e.aperture??2.8,maxBlur:e.maxBlur??16,quality:e.quality??"high"})}},Ie=class extends t{op="Crop";constructor(e={}){super({cropType:e.cropType??"rect",leftPercentage:e.leftPercentage??0,topPercentage:e.topPercentage??0,widthPercentage:e.widthPercentage??100,heightPercentage:e.heightPercentage??100,roundness:e.roundness??0,...e})}},Te=class extends t{op="Vision";constructor(e={}){super({enableDetection:e.enableDetection!==!1,enableSegmentation:e.enableSegmentation===!0,enablePose:e.enablePose===!0,enableMatte:e.enableMatte===!0,confidence:e.confidence??.3,variant:e.variant??"s",mode:e.mode??"passthrough",matteSource:e.matteSource??"instance",...e})}},Ge=class extends t{op="Relight3D";constructor(e={}){super({lightType:e.lightType??"Point",intensity:e.intensity??1,lightPosX:e.lightPosX??.5,lightPosY:e.lightPosY??.5,lightPosZ:e.lightPosZ??.3,lightRadius:e.lightRadius??.8,spotConeAngle:e.spotConeAngle??45,specularRoughness:e.specularRoughness??.35,specularStrength:e.specularStrength??.7,metallic:e.metallic??0,ambientIntensity:e.ambientIntensity??.4,volumetricDensity:e.volumetricDensity??.2,depthScale:e.depthScale??1,depthInvert:e.depthInvert??!1,lightColor:e.lightColor??"#ffffff",ambientColor:e.ambientColor??"#ffffff",normalMap:e.normalMap,...e})}},He=class extends t{op="TemporalDeflicker";constructor(e={}){super({blendWeight:e.blendWeight??.35,disocclusionThreshold:e.disocclusionThreshold??.15,maxMotionPixels:e.maxMotionPixels??64,scale:e.scale??.5,windowSize:e.windowSize??2,...e})}},Le=class extends t{op="Modulate";constructor(e={}){super({hue:e.hue??0,brightness:e.brightness??1,contrast:e.contrast??1,exposure:e.exposure??0,saturation:e.saturation??1,sepia:e.sepia??0,...e})}};export{n as a,b,f as c,h as d,P as e,y as f,g,x as h,S as i,C as j,E as k,w as l,v as m,R as n,A as o,M as p,D as q,k as r,B as s,I as t,T as u,G as v,H as w,L as x,O as y,z,F as A,Y as B,V as C,X as D,q as E,W as F,K as G,N as H,j as I,U as J,$ as K,Z as L,_ as M,J as N,Q as O,ee as P,re as Q,te as R,ne as S,oe as T,ae as U,Or as V,fe as W,he as X,Pe as Y,ye as Z,ge as _,xe as $,Se as aa,Ce as ba,Ee as ca,we as da,ve as ea,Re as fa,Ae as ga,Me as ha,De as ia,ke as ja,Be as ka,Ie as la,Te as ma,Ge as na,He as oa,Le as pa};
@@ -1 +1 @@
1
- import{b as x}from"./chunk-N4LHIPHZ.mjs";import{h as b,j as g}from"./chunk-ENKKLU7B.mjs";import{u as w,z as T}from"./chunk-63SFBHEH.mjs";import{e as u}from"./chunk-BVF64D6H.mjs";u();u();function d(n,r,i,m,f,h,o){let e=`${r}HandleId`,l=n[e],c=l?n.inputs?.[l]:null,s;if(c?.connectionValid&&c.outputItem){let t=c.outputItem.data;s=t&&typeof t=="object"&&"offset"in t?t.offset:c.outputItem.data}else s=n[r];let p=w(s,i,h,o);return Math.max(m,Math.min(f,p))}var P=new Map;function z(n,r){let i=P.get(r);return i||(i=new x(n),P.set(r,i)),i}var D=async n=>{let{ctx:r,encoder:i,pass:m,targetWidth:f,targetHeight:h,props:o}=n,e=o.virtualMedia?.operation;if(!e||e.op!=="TemporalDeflicker"&&e.op!=="Deflicker")return;let l=o.virtualMedia?.children?.[0];if(!l)return;m.end();let c=f,s=h,p=o.frame??0,t=o.compositionFrame??p,a=o.fps||30,{texture:M}=await b(n,l,{props:{...o,virtualMedia:l,containerWidth:c,containerHeight:s}});n.pass.end();let W=d(e,"blendWeight",.35,0,1,t,a),y=d(e,"disocclusionThreshold",.15,.01,1,t,a),I=d(e,"maxMotionPixels",64,1,256,t,a),v=d(e,"scale",.5,.1,1,t,a),R=Math.round(d(e,"windowSize",2,1,5,t,a)),G=o.virtualMedia?.metadata?.id||e.id||`deflicker_${o.renderId??"global"}`,k=z(r.device,G);p===0&&k.reset();let H=k.execute(M,{blendWeight:W,disocclusionThreshold:y,maxMotionPixels:I,scale:v,windowSize:R},i),U=typeof e.opacity=="number"?e.opacity:1;g(n,H,U)};var j=T({WebGPURenderer:D});export{j as a};
1
+ import{a as x}from"./chunk-2JKXYG6J.mjs";import{h as b,j as g}from"./chunk-ENKKLU7B.mjs";import{u as w,z as T}from"./chunk-63SFBHEH.mjs";import{e as u}from"./chunk-BVF64D6H.mjs";u();u();function d(n,r,i,m,f,h,o){let e=`${r}HandleId`,l=n[e],c=l?n.inputs?.[l]:null,s;if(c?.connectionValid&&c.outputItem){let t=c.outputItem.data;s=t&&typeof t=="object"&&"offset"in t?t.offset:c.outputItem.data}else s=n[r];let p=w(s,i,h,o);return Math.max(m,Math.min(f,p))}var P=new Map;function z(n,r){let i=P.get(r);return i||(i=new x(n),P.set(r,i)),i}var D=async n=>{let{ctx:r,encoder:i,pass:m,targetWidth:f,targetHeight:h,props:o}=n,e=o.virtualMedia?.operation;if(!e||e.op!=="TemporalDeflicker"&&e.op!=="Deflicker")return;let l=o.virtualMedia?.children?.[0];if(!l)return;m.end();let c=f,s=h,p=o.frame??0,t=o.compositionFrame??p,a=o.fps||30,{texture:M}=await b(n,l,{props:{...o,virtualMedia:l,containerWidth:c,containerHeight:s}});n.pass.end();let W=d(e,"blendWeight",.35,0,1,t,a),y=d(e,"disocclusionThreshold",.15,.01,1,t,a),I=d(e,"maxMotionPixels",64,1,256,t,a),v=d(e,"scale",.5,.1,1,t,a),R=Math.round(d(e,"windowSize",2,1,5,t,a)),G=o.virtualMedia?.metadata?.id||e.id||`deflicker_${o.renderId??"global"}`,k=z(r.device,G);p===0&&k.reset();let H=k.execute(M,{blendWeight:W,disocclusionThreshold:y,maxMotionPixels:I,scale:v,windowSize:R},i),U=typeof e.opacity=="number"?e.opacity:1;g(n,H,U)};var j=T({WebGPURenderer:D});export{j as a};
@@ -0,0 +1 @@
1
+ import{a as mt}from"./chunk-37EFVZWT.mjs";import{c as ht}from"./chunk-2SJ4BBMT.mjs";import{i as ut,l as N}from"./chunk-24P6DAB3.mjs";import{c as ft,e as et}from"./chunk-NIRW77QA.mjs";import{C as dt}from"./chunk-63SFBHEH.mjs";import{d as L,e as j}from"./chunk-BVF64D6H.mjs";j();j();j();function pt(e,n){return Math.round(e*n)}function X(e,n,i={timeOffsetSec:0}){if(!e)return e;let{operation:u,metadata:d={},children:c=[]}=e,{timeOffsetSec:p,durationLimitMs:s}=i;if(!u)return{...e,children:(c||[]).map(t=>X(t,n,i))};let m=u.timeline,y=m?.segments||[],f=N(e)?.durationMs??0;if(y.length>0){let t=y.reduce((a,A)=>{let z=A.endSec!=null?A.endSec-A.startSec:0,v=Math.max(1,Math.round(z*n));return a+v},0);t>0&&(f=t/n*1e3)}let h={...u},o=m?.startFrame??h.startFrame;if(typeof o=="number"){let t=pt(p,n);h.startFrame=o-t}let M={...d,durationMs:f},r=typeof o=="number"||h.op==="compose"?{timeOffsetSec:0,durationLimitMs:void 0}:{timeOffsetSec:p,durationLimitMs:s},F=(c||[]).map(t=>X(t,n,r));return{metadata:M,operation:h,children:F}}var gt=typeof L<"u"&&/^(debug|trace)$/i.test(L.env?.LOG_LEVEL??""),b={debug:(e,...n)=>{gt&&(typeof e=="object"&&e!==null?console.info("[AudioExtractor]",e,...n):console.info(`[AudioExtractor] ${e}`,...n))},warn:(e,...n)=>{typeof e=="object"&&e!==null?console.warn("[AudioExtractor]",e,...n):console.warn(`[AudioExtractor] ${e}`,...n)},error:(e,...n)=>{typeof e=="object"&&e!==null?console.error("[AudioExtractor]",e,...n):console.error(`[AudioExtractor] ${e}`,...n)}},wt=()=>{if(typeof window>"u")return Promise.resolve();let e=globalThis.scheduler;return typeof e?.yield=="function"?e.yield():new Promise(n=>setTimeout(n,0))},Mt=async(e=3e4)=>{await new Promise(i=>setTimeout(i,100));let n=Date.now();return new Promise(i=>{let u=()=>{let d=typeof window<"u"&&window.renderer_delayRenderHandles?window.renderer_delayRenderHandles:[],c=typeof globalThis<"u"?globalThis.__GATEWAI_DELAYS__:null,p=d.length>0,s=c instanceof Set&&c.size>0;if(!p&&!s){i();return}if(Date.now()-n>e){b.warn(`[AudioExtractor] waitForDelayRender timed out waiting for handles: ${JSON.stringify({browserHandles:d,globalDelays:c?Array.from(c):[]})}`),i();return}setTimeout(u,50)};u()})};async function xt(e){b.debug(`[AudioExtractor] decodeAudioSource started for url: ${e}`);try{if(typeof window<"u"&&typeof window.document<"u"&&!(typeof L<"u"&&L.versions&&L.versions.node)){b.debug(`[AudioExtractor] Browser detected. Fetching arrayBuffer for ${e}...`);let u=window.AudioContext||window.webkitAudioContext;if(!u)throw new Error("AudioContext is not supported in this browser");let d=new u;try{let c=await fetch(e);if(b.debug(`[AudioExtractor] Fetch response status for ${e}: ${c.status} (${c.statusText})`),!c.ok)throw new Error(`Failed to fetch audio source: ${c.statusText}`);let p=await c.arrayBuffer();b.debug(`[AudioExtractor] Fetched ${p.byteLength} bytes. Decoding audio data...`);let s=await d.decodeAudioData(p);b.debug(`[AudioExtractor] Decoded successfully: ${s.numberOfChannels} channels, sampleRate: ${s.sampleRate}, duration: ${s.duration}s`);let m=[];for(let y=0;y<s.numberOfChannels;y++)m.push(new Float32Array(s.getChannelData(y)));return{channels:m,sampleRate:s.sampleRate}}finally{d.close(),b.debug(`[AudioExtractor] AudioContext closed for ${e}`)}}let i=!1;try{b.debug(`[AudioExtractor] Server / Node.js detected. Acquiring from inputStore for ${e}...`);let u=await et.acquire(e);i=!0,b.debug("[AudioExtractor] inputStore acquired. Retrieving primary audio track...");let d=await u.getPrimaryAudioTrack();if(!d)return b.warn(`[AudioExtractor] No primary audio track found in input for ${e}`),null;let p=new ft(d).samples(0),s=[],m=0,y=48e3,f=1;b.debug(`[AudioExtractor] Starting mediabunny generator loop for ${e}...`);for await(let o of p){y=o.sampleRate,f=o.numberOfChannels;let M=o.numberOfFrames;if(s.length===0)for(let l=0;l<f;l++)s.push([]);for(let l=0;l<f;l++){let r;try{let F=o.allocationSize({planeIndex:l,format:"f32-planar"});r=new Float32Array(F/4),o.copyTo(r,{planeIndex:l,format:"f32-planar"})}catch{let F=o.allocationSize({planeIndex:l});if(o.format==="s16"||o.format==="s16-planar"){let t=new Int16Array(F/2);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/32768}else if(o.format==="s32"||o.format==="s32-planar"){let t=new Int32Array(F/4);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/2147483648}else if(o.format==="u8"||o.format==="u8-planar"){let t=new Uint8Array(F);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=((t[a]??128)-128)/128}else r=new Float32Array(F/4),o.copyTo(r,{planeIndex:l})}s[l].push(r)}m+=M,o.close()}return b.debug(`[AudioExtractor] Generator loop finished. Decoded total frames: ${m}`),m===0||s.length===0?null:{channels:s.map(o=>{let M=new Float32Array(m),l=0;for(let r of o)M.set(r,l),l+=r.length;return M}),sampleRate:y}}catch(u){if(u instanceof Error&&u.message.includes("Cannot open local media file"))throw u;if(typeof L<"u"&&L.versions?.node)try{let{execSync:d}=await import("./child_process-AIL2NBWS.mjs"),c=d(`ffmpeg -v error -i "${e}" -f f32le -ar 48000 -ac 2 pipe:1`,{maxBuffer:100*1024*1024}),p=c.byteLength/4,s=p/2,m=new Float32Array(c.buffer,c.byteOffset,p),y=new Float32Array(s),f=new Float32Array(s);for(let h=0;h<s;h++)y[h]=m[h*2],f[h]=m[h*2+1];return{channels:[y,f],sampleRate:48e3}}catch(d){b.warn({ffmpegErr:d},`[AudioExtractor] ffmpeg fallback decode failed for ${e}`)}return b.error({err:u},`[AudioExtractor] Failed to decode source ${e}`),null}finally{i&&et.release(e)}}catch(n){if(n instanceof Error&&n.message.includes("Cannot open local media file"))throw n;return b.error({err:n},`[AudioExtractor] Failed to decode source ${e}`),null}}async function yt(e,n,i,u,d,c){let p=new Float32Array(d),m=n/i*u,y=1e5;for(let f=0;f<d;f++){f>0&&f%y===0&&await wt();let h=c+f*m,o=Math.floor(h),M=Math.ceil(h);if(o<0){p[f]=0;continue}if(o>=e.length)break;let l=h-o,r=e[o]??0,F=M>=0&&M<e.length?e[M]??r:r,t=r+l*(F-r);p[f]=Number.isFinite(t)?t:0}return p}async function It(e,n,i=48e3,u,d){b.debug(`[AudioExtractor] mixAudioTracks started. FPS: ${n}, targetSampleRate: ${i}`),await Mt(),mt.registerSignalsFromComposition(d,e);let c=N(e)?.durationMs||1e3,p=c/1e3,s=Math.ceil(p*i);b.debug(`[AudioExtractor] Composition total duration: ${c}ms (${p}s). Total mixed samples to allocate: ${s}`);let m=new Float32Array(s),y=new Float32Array(s),f=[m,y],h=new Map;async function o(t,a,A,z,v,B){if(!t)return null;let x=t.operation;if(!x){let k=N(t)?.durationMs??0,D=Math.round(k/1e3*n),U=B!==null?D>0?Math.min(B,D):B:D,O=Math.ceil(U/n*i);if(O<=0)return null;let q=new Float32Array(O),G=new Float32Array(O),H=[q,G];for(let C of t.children){let Y=await o(C,a,A,z,v,U);if(Y){let E=C.operation,S=E?.startFrame??E?.timeline?.startFrame??0,T=Math.round(S/n*i);for(let P=0;P<2;P++){let w=H[P],R=Y[P],g=Math.min(R.length,w.length-T);for(let $=0;$<g;$++)T+$>=0&&(w[T+$]+=R[$])}}}return H}let W=z*(x.volume??1)*(x.opacity===0?0:1)*(x.muted?0:1),nt=v,bt=x.startFrame??x.timeline?.startFrame??0,ot=A+bt,rt=x.timeline?.segments||[],V=x,at=V.op==="CompositorLayer"?(V.mediaStartFrame??V.trimStartFrames??null)!==null?(V.mediaStartFrame??V.trimStartFrames??0)/n:Math.round((V.trimStartSec??0)*n)/n:0,At=N(t)?.durationMs??0,K=Math.round(At/1e3*n),St=B!==null?K>0?Math.min(B,K):B:K,I=Math.ceil(St/n*i);if(I<=0)return null;let st=new Float32Array(I),it=new Float32Array(I),Z=[st,it],ct=async(k,D)=>{let U=k?k.startSec:0,O=a+at+U,q=ot+D,G=0;k?G=Math.max(1,Math.round(((k.endSec??0)-k.startSec)*n)):G=K;let H=B!==null?Math.min(B,G):G,C=Math.round(D/n*i);if(x.op==="source"){let E=ut(t),S=ht(t);if(S.sourceUrl&&(E==="Audio"||E==="Video")&&W>0){let T=Math.max(.5,nt*(Number(S.speed)||1)),P=Math.max(0,(Number(S.trimStartSec)||0)+O),w=h.get(S.sourceUrl);if(w===void 0&&(w=await xt(S.sourceUrl),h.set(S.sourceUrl,w)),w){let R=H/n,g=Math.min(I-C,Math.ceil(R*i));if(g>0&&C<I){let $=Math.round(P*w.sampleRate),Q=w.channels[0],tt=w.channels.length>1?w.channels[1]:w.channels[0],_=await yt(Q,w.sampleRate,i,T,g,$),Ft=await yt(tt,w.sampleRate,i,T,g,$);for(let J=0;J<g;J++){let lt=C+J;st[lt]+=_[J]*W,it[lt]+=Ft[J]*W}}}await wt()}}if(t.children)for(let E of t.children){let S=await o(E,O,q,W,nt,H);if(S){let T=E.operation,P=T?.startFrame??T?.timeline?.startFrame??0,w=Math.round(P/n*i),R=C+w;for(let g=0;g<2;g++){let $=Z[g],Q=S[g],tt=Math.min(Q.length,$.length-R);for(let _=0;_<tt;_++)R+_>=0&&($[R+_]+=Q[_])}}}let Y=dt.get(x.op);if(Y)try{let E=H/n,S=Math.min(I-C,Math.ceil(E*i));if(S>0&&C<I&&C>=0){let T=Z.map(g=>g.subarray(C,C+S)),P=x.op==="CompositorLayer"?ot:0,w=((q-P)/n+O-at)*1e3,R=N(t)?.durationMs??void 0;await Y(T,i,t,{device:u,frame:q,fps:n,renderId:d,elapsedMs:w,durationMs:R})}}catch(E){b.error({err:E},`[AudioExtractor] Custom plugin for operation '${x.op}' failed`)}};if(rt.length>0){let k=0;for(let D of rt){let U=(D.endSec??0)-D.startSec,O=Math.max(1,Math.round(U*n));await ct(D,k),k+=O}}else await ct(null,0);return Z}let M=X(e,n),l=await o(M,0,0,1,1,null);if(l)for(let t=0;t<2;t++){let a=f[t],A=l[t],z=Math.min(A.length,a.length);for(let v=0;v<z;v++)a[v]=A[v]}h.clear();let r=0;for(let t=0;t<s;t++){let a=Math.abs(m[t]??0),A=Math.abs(y[t]??0);a>r&&(r=a),A>r&&(r=A)}let F=r>.95?.92/r:1;for(let t=0;t<s;t++){let a=(m[t]??0)*F,A=(y[t]??0)*F;m[t]=Number.isFinite(a)?Math.tanh(a):0,y[t]=Number.isFinite(A)?Math.tanh(A):0}return{channels:f,sampleRate:i}}export{xt as a,It as b};