framefields 2.9.3 → 2.11.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 (480) hide show
  1. package/README.md +9 -2
  2. package/dist/audio/index.d.mts +5 -5
  3. package/dist/audio/index.mjs +13 -13
  4. package/dist/{audio-B6RmYOPe.mjs → audio-BuCVk1IQ.mjs} +32 -6
  5. package/dist/audio-BuCVk1IQ.mjs.map +1 -0
  6. package/dist/audio-CYZkDwae.d.mts +62 -0
  7. package/dist/audio-CYZkDwae.d.mts.map +1 -0
  8. package/dist/{audio-BlDbnteH.mjs → audio-KHBadECb.mjs} +1 -1
  9. package/dist/{audio-BlDbnteH.mjs.map → audio-KHBadECb.mjs.map} +1 -1
  10. package/dist/{check-result-Bj7g62ka.mjs → check-result-Culfu7Nx.mjs} +1 -1
  11. package/dist/{check-result-Bj7g62ka.mjs.map → check-result-Culfu7Nx.mjs.map} +1 -1
  12. package/dist/cli/check-worker.mjs +50 -50
  13. package/dist/cli.mjs +179 -3
  14. package/dist/cli.mjs.map +1 -1
  15. package/dist/cloud/index.d.mts +118 -0
  16. package/dist/cloud/index.d.mts.map +1 -0
  17. package/dist/cloud/index.mjs +3 -0
  18. package/dist/cloud-xcfV4J03.mjs +233 -0
  19. package/dist/cloud-xcfV4J03.mjs.map +1 -0
  20. package/dist/components/index.d.mts +14 -14
  21. package/dist/components/index.mjs +47 -47
  22. package/dist/{dist-Cn8bDsQF.mjs → dist-BIE8fvlv.mjs} +1 -1
  23. package/dist/{dist-Cn8bDsQF.mjs.map → dist-BIE8fvlv.mjs.map} +1 -1
  24. package/dist/{dist-ByxHoMQI.mjs → dist-Bf2_efYP.mjs} +1 -1
  25. package/dist/{dist-ByxHoMQI.mjs.map → dist-Bf2_efYP.mjs.map} +1 -1
  26. package/dist/{dist-BlulwErl.mjs → dist-CNGv-JTX.mjs} +1 -1
  27. package/dist/{dist-D12-a3-x.mjs → dist-CWLLnigL.mjs} +375 -15
  28. package/dist/dist-CWLLnigL.mjs.map +1 -0
  29. package/dist/{dist-DL1GwJvs.mjs → dist-CySGkG54.mjs} +2 -2
  30. package/dist/{dist-DL1GwJvs.mjs.map → dist-CySGkG54.mjs.map} +1 -1
  31. package/dist/{dist-Dq5TkNDI.mjs → dist-Dg9LMWoX.mjs} +2 -2
  32. package/dist/{dist-Dq5TkNDI.mjs.map → dist-Dg9LMWoX.mjs.map} +1 -1
  33. package/dist/{dist-DEUU6sNe.mjs → dist-EQX3TUUl.mjs} +4 -4
  34. package/dist/{dist-DEUU6sNe.mjs.map → dist-EQX3TUUl.mjs.map} +1 -1
  35. package/dist/effects/index.d.mts +6 -6
  36. package/dist/effects/index.mjs +36 -36
  37. package/dist/{effects-CViUoQSV.mjs → effects-DKLbLXF7.mjs} +3 -3
  38. package/dist/{effects-CViUoQSV.mjs.map → effects-DKLbLXF7.mjs.map} +1 -1
  39. package/dist/fonts/index.d.mts +1 -1
  40. package/dist/fonts/index.mjs +3 -3
  41. package/dist/{fonts-B0U2KO5I.mjs → fonts-gPbGbShD.mjs} +2 -2
  42. package/dist/{fonts-B0U2KO5I.mjs.map → fonts-gPbGbShD.mjs.map} +1 -1
  43. package/dist/{gpu-zFNrvhV9.mjs → gpu-CpkJJLQP.mjs} +2 -2
  44. package/dist/{gpu-zFNrvhV9.mjs.map → gpu-CpkJJLQP.mjs.map} +1 -1
  45. package/dist/{index-BuYtrhzL.d.mts → index-BW0Q1ygn.d.mts} +1 -1
  46. package/dist/{index-BuYtrhzL.d.mts.map → index-BW0Q1ygn.d.mts.map} +1 -1
  47. package/dist/{index-f4IF1vRH.d.mts → index-Bly-7YM1.d.mts} +3 -3
  48. package/dist/{index-f4IF1vRH.d.mts.map → index-Bly-7YM1.d.mts.map} +1 -1
  49. package/dist/{index-Bzo1uj8h.d.mts → index-BuiZzc6i.d.mts} +23 -3
  50. package/dist/index-BuiZzc6i.d.mts.map +1 -0
  51. package/dist/{index-DBhswLMO.d.mts → index-C8YwZ6k1.d.mts} +2 -2
  52. package/dist/{index-DBhswLMO.d.mts.map → index-C8YwZ6k1.d.mts.map} +1 -1
  53. package/dist/{index-svAgwTY_.d.mts → index-CEU_Zsb9.d.mts} +2 -2
  54. package/dist/{index-svAgwTY_.d.mts.map → index-CEU_Zsb9.d.mts.map} +1 -1
  55. package/dist/{index-9_4X2ro1.d.mts → index-COYNQ_mf.d.mts} +1 -1
  56. package/dist/{index-9_4X2ro1.d.mts.map → index-COYNQ_mf.d.mts.map} +1 -1
  57. package/dist/{index-CgGM31I9.d.mts → index-CdCrae-I.d.mts} +2 -2
  58. package/dist/{index-CgGM31I9.d.mts.map → index-CdCrae-I.d.mts.map} +1 -1
  59. package/dist/{index-B9Lm1x8i.d.mts → index-Cro-818i.d.mts} +297 -283
  60. package/dist/index-Cro-818i.d.mts.map +1 -0
  61. package/dist/{index-w28KUM9A.d.mts → index-D2i9J9Zq.d.mts} +3 -3
  62. package/dist/{index-w28KUM9A.d.mts.map → index-D2i9J9Zq.d.mts.map} +1 -1
  63. package/dist/{index-V0ZQ4JN6.d.mts → index-gOVtTm-P.d.mts} +125 -3
  64. package/dist/index-gOVtTm-P.d.mts.map +1 -0
  65. package/dist/{index-C6GcuYVA.d.mts → index-jSDEM-uE.d.mts} +5 -5
  66. package/dist/{index-C6GcuYVA.d.mts.map → index-jSDEM-uE.d.mts.map} +1 -1
  67. package/dist/index.d.mts +16 -16
  68. package/dist/index.mjs +59 -59
  69. package/dist/preview/index.d.mts +4 -4
  70. package/dist/preview/index.mjs +12 -12
  71. package/dist/{preview-ZKJ_zTmd.mjs → preview-BToKUTtZ.mjs} +3 -3
  72. package/dist/{preview-ZKJ_zTmd.mjs.map → preview-BToKUTtZ.mjs.map} +1 -1
  73. package/dist/preview-engine/audio.mjs +1 -1
  74. package/dist/preview-engine/{chunk-VN36PRVD.mjs → chunk-26XWIHW3.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-BVDWS3D2.mjs → chunk-4AGQN53P.mjs} +1 -1
  76. package/dist/preview-engine/{chunk-IB6GZJOL.mjs → chunk-54Q5CKSV.mjs} +1 -1
  77. package/dist/preview-engine/{chunk-Y5K5LVOR.mjs → chunk-5KSBS3AL.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-ZJ5SWTCW.mjs → chunk-65NANVQL.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-34RJ7GAS.mjs → chunk-6LTINEA4.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-SPJPM43P.mjs → chunk-7GMHSTRP.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-BEYA25UZ.mjs → chunk-ACBBBOUM.mjs} +1 -1
  82. package/dist/preview-engine/{chunk-7U34VKNO.mjs → chunk-BRV7TQDV.mjs} +1 -1
  83. package/dist/preview-engine/{chunk-KHJZMTOS.mjs → chunk-CCORQLMR.mjs} +1 -1
  84. package/dist/preview-engine/{chunk-5AWAOMBR.mjs → chunk-CIVEZJYF.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-FKG27DVO.mjs → chunk-CIVJXFWH.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-JIPMF42Z.mjs → chunk-D6LM7DTJ.mjs} +2 -2
  87. package/dist/preview-engine/{chunk-GA4HNR44.mjs → chunk-DNNGWS2C.mjs} +1 -1
  88. package/dist/preview-engine/{chunk-ZY47XIRK.mjs → chunk-EAWJXW4J.mjs} +1 -1
  89. package/dist/preview-engine/{chunk-6R3UJBL5.mjs → chunk-EPRINA4V.mjs} +1 -1
  90. package/dist/preview-engine/{chunk-GRJJVSOV.mjs → chunk-EXEO245X.mjs} +1 -1
  91. package/dist/preview-engine/{chunk-DVZITDQS.mjs → chunk-FQL4IJZN.mjs} +1 -1
  92. package/dist/preview-engine/{chunk-QCSVT73T.mjs → chunk-GHTG5XV6.mjs} +1 -1
  93. package/dist/preview-engine/{chunk-VVY4PG5E.mjs → chunk-GXFYRMJZ.mjs} +25 -25
  94. package/dist/preview-engine/{chunk-AHQCDTD6.mjs → chunk-IBPYV6HF.mjs} +1 -1
  95. package/dist/preview-engine/{chunk-PM2W4VLT.mjs → chunk-IKVJ4MW5.mjs} +1 -1
  96. package/dist/preview-engine/{chunk-GZWA5QJS.mjs → chunk-JDB7PMRI.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-CC4NNNIY.mjs → chunk-KVOFO273.mjs} +1 -1
  98. package/dist/preview-engine/{chunk-RJIAES3X.mjs → chunk-LFNCWMKS.mjs} +1 -1
  99. package/dist/preview-engine/{chunk-FTCEG3SF.mjs → chunk-LMXMBX4J.mjs} +1 -1
  100. package/dist/preview-engine/{chunk-MIEH74UH.mjs → chunk-M4QANUJI.mjs} +1 -1
  101. package/dist/preview-engine/{chunk-VVE2QHVG.mjs → chunk-NOKPBMIP.mjs} +1 -1
  102. package/dist/preview-engine/{chunk-P5FKRQFU.mjs → chunk-O63FLYWC.mjs} +1 -1
  103. package/dist/preview-engine/chunk-OELPPLML.mjs +107 -0
  104. package/dist/preview-engine/{chunk-GIICZZQI.mjs → chunk-OLB4TQLQ.mjs} +1 -1
  105. package/dist/preview-engine/{chunk-CN2VLYLB.mjs → chunk-PKNUTHPI.mjs} +1 -1
  106. package/dist/preview-engine/{chunk-2B722GXM.mjs → chunk-QF4JWVO3.mjs} +1 -1
  107. package/dist/preview-engine/{chunk-EJJITH6U.mjs → chunk-RDWLLITE.mjs} +1 -1
  108. package/dist/preview-engine/{chunk-K3C6GUQD.mjs → chunk-SE2C623Z.mjs} +1 -1
  109. package/dist/preview-engine/{chunk-34DL53D5.mjs → chunk-TEWRQKX3.mjs} +1 -1
  110. package/dist/preview-engine/{chunk-H7BSN7V7.mjs → chunk-UGB6JKVS.mjs} +1 -1
  111. package/dist/preview-engine/{chunk-BJV2LBII.mjs → chunk-UI3VH33L.mjs} +1 -1
  112. package/dist/preview-engine/{chunk-UXYM2G6J.mjs → chunk-UMJ3VGKN.mjs} +1 -1
  113. package/dist/preview-engine/{chunk-2DWY7UBV.mjs → chunk-VFQH5KVS.mjs} +1 -1
  114. package/dist/preview-engine/{chunk-73CNXGAK.mjs → chunk-VQA4DYZU.mjs} +1 -1
  115. package/dist/preview-engine/{chunk-LVYVXVZO.mjs → chunk-VZLIRYAL.mjs} +1 -1
  116. package/dist/preview-engine/{chunk-4WYM72ZN.mjs → chunk-WFMUDL55.mjs} +1 -1
  117. package/dist/preview-engine/{chunk-Q62GPWGD.mjs → chunk-XF6DYP6B.mjs} +11 -11
  118. package/dist/preview-engine/{chunk-35HMRW4I.mjs → chunk-YHMBGJP6.mjs} +1 -1
  119. package/dist/preview-engine/{chunk-DMSZXG56.mjs → chunk-YKM7JDQY.mjs} +1 -1
  120. package/dist/preview-engine/{chunk-SF37HXAH.mjs → chunk-YVZTRH4Y.mjs} +1 -1
  121. package/dist/preview-engine/{chunk-TNJEZKXM.mjs → chunk-Z24UEN4P.mjs} +1 -1
  122. package/dist/preview-engine/{chunk-2PYTDN2C.mjs → chunk-ZF2MEFKO.mjs} +1 -1
  123. package/dist/preview-engine/{chunk-OH5W5EL6.mjs → chunk-ZIXPWP2B.mjs} +1 -1
  124. package/dist/preview-engine/components.mjs +1 -1
  125. package/dist/preview-engine/effects.mjs +1 -1
  126. package/dist/preview-engine/framefields.mjs +1 -1
  127. package/dist/preview-engine/player.mjs +1 -1
  128. package/dist/preview-engine/renderers-2NGIILMI.mjs +1 -0
  129. package/dist/preview-engine/{renderers-5TO2SXFR.mjs → renderers-33FCFHDR.mjs} +1 -1
  130. package/dist/preview-engine/renderers-466Z77BH.mjs +1 -0
  131. package/dist/preview-engine/{renderers-PIIEUKFE.mjs → renderers-4IBFDW2S.mjs} +1 -1
  132. package/dist/preview-engine/renderers-4KRENGZA.mjs +1 -0
  133. package/dist/preview-engine/renderers-4W52BQEU.mjs +1 -0
  134. package/dist/preview-engine/{renderers-ZACSHGNZ.mjs → renderers-53EI26GL.mjs} +1 -1
  135. package/dist/preview-engine/renderers-55PRAS7G.mjs +1 -0
  136. package/dist/preview-engine/renderers-5LLYINHW.mjs +1 -0
  137. package/dist/preview-engine/{renderers-A24KZK2Q.mjs → renderers-5XLGCEOA.mjs} +1 -1
  138. package/dist/preview-engine/renderers-63N3Y2XO.mjs +1 -0
  139. package/dist/preview-engine/{renderers-V3AQO7AR.mjs → renderers-6LNDAO4B.mjs} +1 -1
  140. package/dist/preview-engine/renderers-6ROVFDIN.mjs +1 -0
  141. package/dist/preview-engine/{renderers-CUMVIVHI.mjs → renderers-6YVZUQOH.mjs} +1 -1
  142. package/dist/preview-engine/renderers-7CAHX35U.mjs +1 -0
  143. package/dist/preview-engine/renderers-A4RVLPMG.mjs +1 -0
  144. package/dist/preview-engine/renderers-A53P4J6O.mjs +1 -0
  145. package/dist/preview-engine/{renderers-WEYAHOBK.mjs → renderers-ACUJMDEK.mjs} +1 -1
  146. package/dist/preview-engine/renderers-AFJ3373L.mjs +1 -0
  147. package/dist/preview-engine/renderers-ATFWTA3U.mjs +1 -0
  148. package/dist/preview-engine/{renderers-TSBV4KPE.mjs → renderers-BOBVXYAA.mjs} +1 -1
  149. package/dist/preview-engine/renderers-BPYJXHBU.mjs +1 -0
  150. package/dist/preview-engine/{renderers-NCGH2WWJ.mjs → renderers-C7SI3NIE.mjs} +1 -1
  151. package/dist/preview-engine/{renderers-FSI5KNGZ.mjs → renderers-CCRZNGVK.mjs} +1 -1
  152. package/dist/preview-engine/{renderers-NUAI4TO5.mjs → renderers-CYJAVWHT.mjs} +1 -1
  153. package/dist/preview-engine/renderers-D3ZF7FXT.mjs +1 -0
  154. package/dist/preview-engine/renderers-D7YN6B4B.mjs +1 -0
  155. package/dist/preview-engine/renderers-DBLASKF5.mjs +1 -0
  156. package/dist/preview-engine/renderers-DC5ZYYHM.mjs +1 -0
  157. package/dist/preview-engine/{renderers-5UZ3YFBD.mjs → renderers-EN7LXJLG.mjs} +1 -1
  158. package/dist/preview-engine/{renderers-L6YDX6GS.mjs → renderers-FY2HOQCS.mjs} +1 -1
  159. package/dist/preview-engine/{renderers-6Z7DWAPH.mjs → renderers-GQM3KMV3.mjs} +1 -1
  160. package/dist/preview-engine/{renderers-QA2HKUJJ.mjs → renderers-H6PBHEYU.mjs} +1 -1
  161. package/dist/preview-engine/{renderers-MD3PRFZL.mjs → renderers-HKLCB4U6.mjs} +1 -1
  162. package/dist/preview-engine/{renderers-TGJSOKDY.mjs → renderers-HSFQIILN.mjs} +1 -1
  163. package/dist/preview-engine/{renderers-7C5RA3R5.mjs → renderers-I6QKZ7CH.mjs} +1 -1
  164. package/dist/preview-engine/renderers-J6ZEXW5L.mjs +1 -0
  165. package/dist/preview-engine/renderers-JV4MF46Q.mjs +1 -0
  166. package/dist/preview-engine/{renderers-SEIAUKJF.mjs → renderers-KCGK33Y2.mjs} +1 -1
  167. package/dist/preview-engine/renderers-KQKH4ZIX.mjs +1 -0
  168. package/dist/preview-engine/renderers-MEITHN4N.mjs +1 -0
  169. package/dist/preview-engine/renderers-MN3HSBTJ.mjs +1 -0
  170. package/dist/preview-engine/renderers-NTG3QGNH.mjs +1 -0
  171. package/dist/preview-engine/{renderers-KC6ZSKCW.mjs → renderers-OGOW3NA4.mjs} +1 -1
  172. package/dist/preview-engine/renderers-OU4SFMB2.mjs +1 -0
  173. package/dist/preview-engine/{renderers-ENMY4DKF.mjs → renderers-P2HORBZ6.mjs} +1 -1
  174. package/dist/preview-engine/renderers-P6TIBJIG.mjs +1 -0
  175. package/dist/preview-engine/renderers-POJWQ7L3.mjs +1 -0
  176. package/dist/preview-engine/renderers-RJ7S6VHD.mjs +1 -0
  177. package/dist/preview-engine/renderers-RJJAJZYN.mjs +1 -0
  178. package/dist/preview-engine/renderers-UEQ733VK.mjs +1 -0
  179. package/dist/preview-engine/{renderers-T74CQCEN.mjs → renderers-UG2C3C7T.mjs} +1 -1
  180. package/dist/preview-engine/renderers-ULO2AW2U.mjs +1 -0
  181. package/dist/preview-engine/renderers-UPVHGHCK.mjs +1 -0
  182. package/dist/preview-engine/renderers-UZHSNNIM.mjs +1 -0
  183. package/dist/preview-engine/renderers-V5KWZL2C.mjs +1 -0
  184. package/dist/preview-engine/{renderers-5KANN7XF.mjs → renderers-VIGZYJYX.mjs} +1 -1
  185. package/dist/preview-engine/{renderers-4F7WLQD5.mjs → renderers-VVP5WQOY.mjs} +1 -1
  186. package/dist/preview-engine/{renderers-7XHO6M3B.mjs → renderers-WL372W36.mjs} +1 -1
  187. package/dist/preview-engine/{renderers-U4M7ZCV4.mjs → renderers-WSABL3QO.mjs} +1 -1
  188. package/dist/preview-engine/{renderers-Y22VSOXF.mjs → renderers-X6CORAES.mjs} +1 -1
  189. package/dist/preview-engine/renderers-YMXKYOHQ.mjs +1 -0
  190. package/dist/preview-engine/renderers-YWDAZ2NZ.mjs +1 -0
  191. package/dist/preview-engine/signals.mjs +1 -1
  192. package/dist/{program-xjIwjKb6.mjs → program-Bc860ko5.mjs} +4 -4
  193. package/dist/{program-xjIwjKb6.mjs.map → program-Bc860ko5.mjs.map} +1 -1
  194. package/dist/registry/focus-zoom.json +9 -2
  195. package/dist/renderer/index.d.mts +4 -4
  196. package/dist/renderer/index.mjs +4 -4
  197. package/dist/renderer--Ymc_4XJ.mjs +5 -0
  198. package/dist/{renderer-Dee8ksIV.mjs → renderer-1uoKiILq.mjs} +3 -3
  199. package/dist/{renderer-Dee8ksIV.mjs.map → renderer-1uoKiILq.mjs.map} +1 -1
  200. package/dist/{renderer-CIB5L_C4.mjs → renderer-4ZUv3X1I.mjs} +5 -5
  201. package/dist/{renderer-CIB5L_C4.mjs.map → renderer-4ZUv3X1I.mjs.map} +1 -1
  202. package/dist/{renderer-BPYIqtNg.mjs → renderer-50JEMaVo.mjs} +5 -5
  203. package/dist/{renderer-BPYIqtNg.mjs.map → renderer-50JEMaVo.mjs.map} +1 -1
  204. package/dist/{renderer-BdbI_u9w.mjs → renderer-7ow5Acsg.mjs} +3 -3
  205. package/dist/{renderer-BdbI_u9w.mjs.map → renderer-7ow5Acsg.mjs.map} +1 -1
  206. package/dist/{renderer-B-inTgyb.d.mts → renderer-88C3QpKL.d.mts} +2 -2
  207. package/dist/{renderer-B-inTgyb.d.mts.map → renderer-88C3QpKL.d.mts.map} +1 -1
  208. package/dist/{renderer-DH7l5WFr.mjs → renderer-B-CMRUag.mjs} +4 -4
  209. package/dist/{renderer-DH7l5WFr.mjs.map → renderer-B-CMRUag.mjs.map} +1 -1
  210. package/dist/renderer-B-OdV-eq.mjs +5 -0
  211. package/dist/{renderer-NTCk1Srf.mjs → renderer-B1LD29TV.mjs} +3 -3
  212. package/dist/{renderer-NTCk1Srf.mjs.map → renderer-B1LD29TV.mjs.map} +1 -1
  213. package/dist/{renderer-ESkPj6pk.mjs → renderer-B1esRxGy.mjs} +4 -4
  214. package/dist/{renderer-ESkPj6pk.mjs.map → renderer-B1esRxGy.mjs.map} +1 -1
  215. package/dist/{renderer-g7fF2AYk.mjs → renderer-B3Dme2es.mjs} +5 -5
  216. package/dist/{renderer-g7fF2AYk.mjs.map → renderer-B3Dme2es.mjs.map} +1 -1
  217. package/dist/renderer-B65fwoA2.mjs +5 -0
  218. package/dist/{renderer-CDVb4OfJ.mjs → renderer-B6Oeahe_.mjs} +5 -5
  219. package/dist/{renderer-CDVb4OfJ.mjs.map → renderer-B6Oeahe_.mjs.map} +1 -1
  220. package/dist/renderer-B92Ahkcv.mjs +5 -0
  221. package/dist/renderer-B9z2AK31.mjs +5 -0
  222. package/dist/{renderer-BZmmekE8.mjs → renderer-BDZC3o3N.mjs} +4 -4
  223. package/dist/{renderer-BZmmekE8.mjs.map → renderer-BDZC3o3N.mjs.map} +1 -1
  224. package/dist/renderer-BIF3Dg3Z.mjs +5 -0
  225. package/dist/{renderer-C06U4c9k.mjs → renderer-BJ-7WRgO.mjs} +3 -3
  226. package/dist/{renderer-C06U4c9k.mjs.map → renderer-BJ-7WRgO.mjs.map} +1 -1
  227. package/dist/renderer-BJUVaIAT.mjs +5 -0
  228. package/dist/renderer-BKRDMbI-.mjs +5 -0
  229. package/dist/{renderer-HnSiwSW8.mjs → renderer-BNHcwxw9.mjs} +4 -4
  230. package/dist/{renderer-HnSiwSW8.mjs.map → renderer-BNHcwxw9.mjs.map} +1 -1
  231. package/dist/{renderer-B78W9uad.mjs → renderer-BNJ6Jk7-.mjs} +4 -4
  232. package/dist/{renderer-B78W9uad.mjs.map → renderer-BNJ6Jk7-.mjs.map} +1 -1
  233. package/dist/{renderer-BVql26Ay.mjs → renderer-BOrMBwQS.mjs} +2 -2
  234. package/dist/{renderer-BVql26Ay.mjs.map → renderer-BOrMBwQS.mjs.map} +1 -1
  235. package/dist/{renderer-Cl8r1LJe.mjs → renderer-BQetXCcZ.mjs} +4 -4
  236. package/dist/{renderer-Cl8r1LJe.mjs.map → renderer-BQetXCcZ.mjs.map} +1 -1
  237. package/dist/{renderer-C4yKI8MT.mjs → renderer-BSELd5vU.mjs} +3 -3
  238. package/dist/{renderer-C4yKI8MT.mjs.map → renderer-BSELd5vU.mjs.map} +1 -1
  239. package/dist/renderer-BSwhyVWa.mjs +5 -0
  240. package/dist/{renderer-CcJyD9Q5.mjs → renderer-BURhYcpA.mjs} +4 -4
  241. package/dist/{renderer-CcJyD9Q5.mjs.map → renderer-BURhYcpA.mjs.map} +1 -1
  242. package/dist/renderer-BUqSZn2X.mjs +5 -0
  243. package/dist/{renderer-DoPEPlbG.d.mts → renderer-BVKOQarx.d.mts} +3 -3
  244. package/dist/{renderer-DoPEPlbG.d.mts.map → renderer-BVKOQarx.d.mts.map} +1 -1
  245. package/dist/{renderer-CwVbHki6.mjs → renderer-BaIJIfJ6.mjs} +5 -5
  246. package/dist/{renderer-CwVbHki6.mjs.map → renderer-BaIJIfJ6.mjs.map} +1 -1
  247. package/dist/renderer-BbmvjqK9.mjs +3 -0
  248. package/dist/{renderer-Be5hfwSd.mjs → renderer-Bbxh4N8Y.mjs} +425 -115
  249. package/dist/renderer-Bbxh4N8Y.mjs.map +1 -0
  250. package/dist/{renderer-BG6bkKtY.mjs → renderer-Bf4-N7k7.mjs} +5 -5
  251. package/dist/{renderer-BG6bkKtY.mjs.map → renderer-Bf4-N7k7.mjs.map} +1 -1
  252. package/dist/{renderer-CpedZNEG.mjs → renderer-BhsrlGKp.mjs} +3 -3
  253. package/dist/{renderer-CpedZNEG.mjs.map → renderer-BhsrlGKp.mjs.map} +1 -1
  254. package/dist/{renderer-AUK_ZS3p.mjs → renderer-Bo7shNdU.mjs} +4 -4
  255. package/dist/{renderer-AUK_ZS3p.mjs.map → renderer-Bo7shNdU.mjs.map} +1 -1
  256. package/dist/renderer-Bpe4k_x6.mjs +5 -0
  257. package/dist/{renderer-BfbSvElt.mjs → renderer-BwrfKKqw.mjs} +4 -4
  258. package/dist/{renderer-BfbSvElt.mjs.map → renderer-BwrfKKqw.mjs.map} +1 -1
  259. package/dist/{renderer-CWLF6cAz.mjs → renderer-Bx14Wnxl.mjs} +3 -3
  260. package/dist/{renderer-CWLF6cAz.mjs.map → renderer-Bx14Wnxl.mjs.map} +1 -1
  261. package/dist/{renderer-CCFHnafT.mjs → renderer-Bxjb0HYU.mjs} +4 -4
  262. package/dist/{renderer-CCFHnafT.mjs.map → renderer-Bxjb0HYU.mjs.map} +1 -1
  263. package/dist/{renderer-5qJPGvVL.mjs → renderer-ByjaseAo.mjs} +5 -5
  264. package/dist/{renderer-5qJPGvVL.mjs.map → renderer-ByjaseAo.mjs.map} +1 -1
  265. package/dist/renderer-C1NjG0CJ.mjs +5 -0
  266. package/dist/renderer-C7Puyst9.mjs +5 -0
  267. package/dist/{renderer-CYX9vKZ-.mjs → renderer-C9BSXyrq.mjs} +4 -4
  268. package/dist/{renderer-CYX9vKZ-.mjs.map → renderer-C9BSXyrq.mjs.map} +1 -1
  269. package/dist/{renderer-CUBDxuxh.mjs → renderer-CAWnCsQc.mjs} +5 -5
  270. package/dist/{renderer-CUBDxuxh.mjs.map → renderer-CAWnCsQc.mjs.map} +1 -1
  271. package/dist/renderer-CGA_7320.mjs +5 -0
  272. package/dist/{renderer-CEfVvcw-.mjs → renderer-CLAvn9c6.mjs} +4 -4
  273. package/dist/{renderer-CEfVvcw-.mjs.map → renderer-CLAvn9c6.mjs.map} +1 -1
  274. package/dist/renderer-CLnFkXO7.mjs +5 -0
  275. package/dist/renderer-CMQIT1Kh.mjs +5 -0
  276. package/dist/{renderer-BYqrtBvd.mjs → renderer-COcKhouz.mjs} +5 -5
  277. package/dist/{renderer-BYqrtBvd.mjs.map → renderer-COcKhouz.mjs.map} +1 -1
  278. package/dist/renderer-CQ1rwjIh.mjs +5 -0
  279. package/dist/{renderer-US4GsamT.mjs → renderer-CR0mDPYY.mjs} +3 -3
  280. package/dist/renderer-CT8h0boY.mjs +5 -0
  281. package/dist/{renderer-VhkubIx_.mjs → renderer-CU8v-LxD.mjs} +5 -5
  282. package/dist/{renderer-VhkubIx_.mjs.map → renderer-CU8v-LxD.mjs.map} +1 -1
  283. package/dist/renderer-Cb0lszt3.mjs +5 -0
  284. package/dist/renderer-Ci7oLye9.mjs +5 -0
  285. package/dist/renderer-CjqXB3CZ.mjs +5 -0
  286. package/dist/{renderer-DIEmK57T.mjs → renderer-Co6UFbZB.mjs} +5 -5
  287. package/dist/{renderer-DIEmK57T.mjs.map → renderer-Co6UFbZB.mjs.map} +1 -1
  288. package/dist/renderer-CqTV04zQ.mjs +5 -0
  289. package/dist/{renderer-xDV2cCkX.mjs → renderer-CrR8Mpxq.mjs} +5 -5
  290. package/dist/{renderer-xDV2cCkX.mjs.map → renderer-CrR8Mpxq.mjs.map} +1 -1
  291. package/dist/renderer-CtWeRtHK.mjs +5 -0
  292. package/dist/{renderer-BRWjLiHX.mjs → renderer-CxGx1Lhi.mjs} +3 -3
  293. package/dist/{renderer-BRWjLiHX.mjs.map → renderer-CxGx1Lhi.mjs.map} +1 -1
  294. package/dist/{renderer-BQOeeXTr.mjs → renderer-Cz-n883J.mjs} +5 -5
  295. package/dist/{renderer-BQOeeXTr.mjs.map → renderer-Cz-n883J.mjs.map} +1 -1
  296. package/dist/renderer-CzolnwCo.mjs +5 -0
  297. package/dist/{renderer-sPI7aY6c.mjs → renderer-D-QVGphn.mjs} +4 -4
  298. package/dist/{renderer-sPI7aY6c.mjs.map → renderer-D-QVGphn.mjs.map} +1 -1
  299. package/dist/{renderer-C3tVrzyT.mjs → renderer-D06HxSXO.mjs} +3 -3
  300. package/dist/{renderer-CXLugAe8.mjs → renderer-D0aAZHC7.mjs} +4 -4
  301. package/dist/{renderer-CXLugAe8.mjs.map → renderer-D0aAZHC7.mjs.map} +1 -1
  302. package/dist/{renderer-mLlgfM7X.mjs → renderer-D4f8f66C.mjs} +4 -4
  303. package/dist/{renderer-mLlgfM7X.mjs.map → renderer-D4f8f66C.mjs.map} +1 -1
  304. package/dist/renderer-D6qhcx_C.mjs +5 -0
  305. package/dist/{renderer-C7MAqpIS.mjs → renderer-DAn9xiQT.mjs} +4 -4
  306. package/dist/{renderer-C7MAqpIS.mjs.map → renderer-DAn9xiQT.mjs.map} +1 -1
  307. package/dist/renderer-DDfEf0jt.mjs +5 -0
  308. package/dist/renderer-DDpa8ztp.mjs +5 -0
  309. package/dist/{renderer-DW7hbluw.mjs → renderer-DE9Jik9K.mjs} +3 -3
  310. package/dist/{renderer-DW7hbluw.mjs.map → renderer-DE9Jik9K.mjs.map} +1 -1
  311. package/dist/{renderer-C6st34I6.mjs → renderer-DFJWPqOJ.mjs} +3 -3
  312. package/dist/{renderer-C6st34I6.mjs.map → renderer-DFJWPqOJ.mjs.map} +1 -1
  313. package/dist/{renderer-D2TTDcgh.mjs → renderer-DLPhfwbR.mjs} +3 -3
  314. package/dist/{renderer-D2TTDcgh.mjs.map → renderer-DLPhfwbR.mjs.map} +1 -1
  315. package/dist/{renderer-D1VsqFf4.mjs → renderer-DOkbn1ot.mjs} +5 -5
  316. package/dist/{renderer-D1VsqFf4.mjs.map → renderer-DOkbn1ot.mjs.map} +1 -1
  317. package/dist/{renderer-BWMzjSgf.mjs → renderer-DaXQgGg3.mjs} +5 -5
  318. package/dist/{renderer-BWMzjSgf.mjs.map → renderer-DaXQgGg3.mjs.map} +1 -1
  319. package/dist/renderer-DbQBqzmx.mjs +5 -0
  320. package/dist/{renderer-DrWeb39d.mjs → renderer-DcvjSolU.mjs} +1 -1
  321. package/dist/{renderer-DrWeb39d.mjs.map → renderer-DcvjSolU.mjs.map} +1 -1
  322. package/dist/renderer-DfUcwMKa.mjs +5 -0
  323. package/dist/renderer-DgIjNANM.mjs +6 -0
  324. package/dist/{renderer-DOKHd37M.mjs → renderer-DgPn_SOC.mjs} +4 -4
  325. package/dist/{renderer-DOKHd37M.mjs.map → renderer-DgPn_SOC.mjs.map} +1 -1
  326. package/dist/{renderer-BgDLCCuq.mjs → renderer-DkqZmfm8.mjs} +5 -5
  327. package/dist/{renderer-BgDLCCuq.mjs.map → renderer-DkqZmfm8.mjs.map} +1 -1
  328. package/dist/{renderer-q4zMFfnY.mjs → renderer-Dpl6poqD.mjs} +2 -2
  329. package/dist/{renderer-q4zMFfnY.mjs.map → renderer-Dpl6poqD.mjs.map} +1 -1
  330. package/dist/renderer-Dsh6Tgu0.mjs +3 -0
  331. package/dist/renderer-DuIwR9GT.mjs +5 -0
  332. package/dist/renderer-Dv4u2c14.mjs +5 -0
  333. package/dist/{renderer-BJKzZwyn.mjs → renderer-DwK9jsER.mjs} +4 -4
  334. package/dist/{renderer-BJKzZwyn.mjs.map → renderer-DwK9jsER.mjs.map} +1 -1
  335. package/dist/{renderer-mQt-y49D.mjs → renderer-HDj9Zb-O.mjs} +5 -5
  336. package/dist/{renderer-mQt-y49D.mjs.map → renderer-HDj9Zb-O.mjs.map} +1 -1
  337. package/dist/renderer-IE1yu3lZ.mjs +5 -0
  338. package/dist/{renderer-B7kOF_Az.mjs → renderer-JHByuUNb.mjs} +3 -3
  339. package/dist/{renderer-B7kOF_Az.mjs.map → renderer-JHByuUNb.mjs.map} +1 -1
  340. package/dist/{renderer-B3IRvukr.mjs → renderer-KKk7myX1.mjs} +5 -5
  341. package/dist/{renderer-B3IRvukr.mjs.map → renderer-KKk7myX1.mjs.map} +1 -1
  342. package/dist/renderer-PY_wnEN0.mjs +5 -0
  343. package/dist/{renderer-BcO7LUla.mjs → renderer-Ros7XQg2.mjs} +3 -3
  344. package/dist/{renderer-BcO7LUla.mjs.map → renderer-Ros7XQg2.mjs.map} +1 -1
  345. package/dist/{renderer-bbaMOD4I.mjs → renderer-RvI3qRUI.mjs} +5 -5
  346. package/dist/{renderer-bbaMOD4I.mjs.map → renderer-RvI3qRUI.mjs.map} +1 -1
  347. package/dist/{renderer-CPTXJs0n.mjs → renderer-Rw87u1Cr.mjs} +6 -6
  348. package/dist/{renderer-CPTXJs0n.mjs.map → renderer-Rw87u1Cr.mjs.map} +1 -1
  349. package/dist/{renderer-Du-GnKLb.mjs → renderer-TKZCA0B9.mjs} +9 -9
  350. package/dist/{renderer-Du-GnKLb.mjs.map → renderer-TKZCA0B9.mjs.map} +1 -1
  351. package/dist/{renderer-C_2UDMEG.mjs → renderer-V4dhrf_h.mjs} +6 -6
  352. package/dist/{renderer-C_2UDMEG.mjs.map → renderer-V4dhrf_h.mjs.map} +1 -1
  353. package/dist/{renderer-eT7Gp7FS.mjs → renderer-_9gbYS-3.mjs} +5 -5
  354. package/dist/{renderer-eT7Gp7FS.mjs.map → renderer-_9gbYS-3.mjs.map} +1 -1
  355. package/dist/{renderer-IQ97z2rw.mjs → renderer-celhuAL7.mjs} +3 -3
  356. package/dist/{renderer-IQ97z2rw.mjs.map → renderer-celhuAL7.mjs.map} +1 -1
  357. package/dist/{renderer-DIqkhsLI.mjs → renderer-eMCTAa9e.mjs} +4 -4
  358. package/dist/{renderer-DIqkhsLI.mjs.map → renderer-eMCTAa9e.mjs.map} +1 -1
  359. package/dist/{renderer-B6TjJi1g.mjs → renderer-fs8f1QeE.mjs} +5 -5
  360. package/dist/{renderer-B6TjJi1g.mjs.map → renderer-fs8f1QeE.mjs.map} +1 -1
  361. package/dist/{renderer-BJQt0RiZ.mjs → renderer-fwKnV9zs.mjs} +5 -5
  362. package/dist/{renderer-BJQt0RiZ.mjs.map → renderer-fwKnV9zs.mjs.map} +1 -1
  363. package/dist/{renderer-F1D9ZJ8I.mjs → renderer-g_1t2je9.mjs} +3 -3
  364. package/dist/renderer-gv24VyzO.mjs +5 -0
  365. package/dist/{renderer-C3Iev6zu.mjs → renderer-h62QaJYz.mjs} +4 -4
  366. package/dist/{renderer-C3Iev6zu.mjs.map → renderer-h62QaJYz.mjs.map} +1 -1
  367. package/dist/{renderer-BNbMi9CI.mjs → renderer-jnAIhWn_.mjs} +5 -5
  368. package/dist/{renderer-BNbMi9CI.mjs.map → renderer-jnAIhWn_.mjs.map} +1 -1
  369. package/dist/{renderer-CyCtm0UV.mjs → renderer-lHNTgiOM.mjs} +3 -3
  370. package/dist/{renderer-CyCtm0UV.mjs.map → renderer-lHNTgiOM.mjs.map} +1 -1
  371. package/dist/renderer-nN6lPZf9.mjs +5 -0
  372. package/dist/{renderer-Dat8opUZ.mjs → renderer-o68mVeyk.mjs} +4 -4
  373. package/dist/{renderer-Dat8opUZ.mjs.map → renderer-o68mVeyk.mjs.map} +1 -1
  374. package/dist/{renderer-Dss7T71q.mjs → renderer-pNmI-A9o.mjs} +5 -5
  375. package/dist/{renderer-Dss7T71q.mjs.map → renderer-pNmI-A9o.mjs.map} +1 -1
  376. package/dist/{renderer-CbhnJi_8.mjs → renderer-q7q6k_cD.mjs} +4 -4
  377. package/dist/{renderer-CbhnJi_8.mjs.map → renderer-q7q6k_cD.mjs.map} +1 -1
  378. package/dist/{renderer-OsQRvOle.mjs → renderer-riIFosX6.mjs} +5 -5
  379. package/dist/{renderer-OsQRvOle.mjs.map → renderer-riIFosX6.mjs.map} +1 -1
  380. package/dist/{renderer-BMP_lYMk.mjs → renderer-sfqZK6L5.mjs} +4 -4
  381. package/dist/{renderer-BMP_lYMk.mjs.map → renderer-sfqZK6L5.mjs.map} +1 -1
  382. package/dist/{renderer-DEQeONTd.mjs → renderer-ynFRJh7G.mjs} +3 -3
  383. package/dist/{renderers-CP8CFWDs-BH1gUTYa.mjs → renderers-CP8CFWDs-DRoslK4F.mjs} +4 -4
  384. package/dist/{renderers-CP8CFWDs-BH1gUTYa.mjs.map → renderers-CP8CFWDs-DRoslK4F.mjs.map} +1 -1
  385. package/dist/sam/index.d.mts +3 -3
  386. package/dist/sam/index.mjs +1 -1
  387. package/dist/signals/index.d.mts +8 -8
  388. package/dist/signals/index.mjs +8 -8
  389. package/dist/{signals-gOd0Ui9B.mjs → signals-BfJ1aqpT.mjs} +4 -4
  390. package/dist/{signals-gOd0Ui9B.mjs.map → signals-BfJ1aqpT.mjs.map} +1 -1
  391. package/dist/{src-BU1VOWSk.mjs → src-BYp6r-cS.mjs} +11 -11
  392. package/dist/{src-BU1VOWSk.mjs.map → src-BYp6r-cS.mjs.map} +1 -1
  393. package/dist/{src-Bnr8DUC--DzkRGA62.mjs → src-Bnr8DUC--BRDqRF6I.mjs} +3 -3
  394. package/dist/{src-Bnr8DUC--DzkRGA62.mjs.map → src-Bnr8DUC--BRDqRF6I.mjs.map} +1 -1
  395. package/package.json +65 -59
  396. package/dist/audio-B6RmYOPe.mjs.map +0 -1
  397. package/dist/audio-D6tBMbHh.d.mts +0 -38
  398. package/dist/audio-D6tBMbHh.d.mts.map +0 -1
  399. package/dist/dist-D12-a3-x.mjs.map +0 -1
  400. package/dist/index-B9Lm1x8i.d.mts.map +0 -1
  401. package/dist/index-Bzo1uj8h.d.mts.map +0 -1
  402. package/dist/index-V0ZQ4JN6.d.mts.map +0 -1
  403. package/dist/preview-engine/chunk-S2ABWY5G.mjs +0 -1
  404. package/dist/preview-engine/renderers-3BOQOUEU.mjs +0 -1
  405. package/dist/preview-engine/renderers-3M2FESR2.mjs +0 -1
  406. package/dist/preview-engine/renderers-5XRKZHVT.mjs +0 -1
  407. package/dist/preview-engine/renderers-6LHIWKMZ.mjs +0 -1
  408. package/dist/preview-engine/renderers-A43VCJ7X.mjs +0 -1
  409. package/dist/preview-engine/renderers-AKY464RY.mjs +0 -1
  410. package/dist/preview-engine/renderers-C5UO6PL5.mjs +0 -1
  411. package/dist/preview-engine/renderers-C64QSZO4.mjs +0 -1
  412. package/dist/preview-engine/renderers-CIRCR6NG.mjs +0 -1
  413. package/dist/preview-engine/renderers-CIWOPETY.mjs +0 -1
  414. package/dist/preview-engine/renderers-CZEZCELP.mjs +0 -1
  415. package/dist/preview-engine/renderers-FSQMWHQM.mjs +0 -1
  416. package/dist/preview-engine/renderers-FZEW5C23.mjs +0 -1
  417. package/dist/preview-engine/renderers-HCET2IML.mjs +0 -1
  418. package/dist/preview-engine/renderers-IUOOC6K7.mjs +0 -1
  419. package/dist/preview-engine/renderers-KYYJLVIJ.mjs +0 -1
  420. package/dist/preview-engine/renderers-L4GE7WV3.mjs +0 -1
  421. package/dist/preview-engine/renderers-LRAFWKCO.mjs +0 -1
  422. package/dist/preview-engine/renderers-LU3XZWEB.mjs +0 -1
  423. package/dist/preview-engine/renderers-ND2WV4K3.mjs +0 -1
  424. package/dist/preview-engine/renderers-NJ5CWVVH.mjs +0 -1
  425. package/dist/preview-engine/renderers-NKXYPR3V.mjs +0 -1
  426. package/dist/preview-engine/renderers-NWR66CGK.mjs +0 -1
  427. package/dist/preview-engine/renderers-O22WTBRM.mjs +0 -1
  428. package/dist/preview-engine/renderers-PBBA7LQB.mjs +0 -1
  429. package/dist/preview-engine/renderers-Q6LJRZ7R.mjs +0 -1
  430. package/dist/preview-engine/renderers-RMEACSRL.mjs +0 -1
  431. package/dist/preview-engine/renderers-SP42LCSI.mjs +0 -1
  432. package/dist/preview-engine/renderers-T7SZA3BX.mjs +0 -1
  433. package/dist/preview-engine/renderers-VADTDAHD.mjs +0 -1
  434. package/dist/preview-engine/renderers-VNNWI5C3.mjs +0 -1
  435. package/dist/preview-engine/renderers-WZ75MLP3.mjs +0 -1
  436. package/dist/preview-engine/renderers-XB5R4UQA.mjs +0 -1
  437. package/dist/preview-engine/renderers-YBIUZDGQ.mjs +0 -1
  438. package/dist/preview-engine/renderers-YESJR4O7.mjs +0 -1
  439. package/dist/preview-engine/renderers-YKSRZRRT.mjs +0 -1
  440. package/dist/renderer-129U3pc9.mjs +0 -5
  441. package/dist/renderer-2phFTFxQ.mjs +0 -5
  442. package/dist/renderer-9muKpDeE.mjs +0 -5
  443. package/dist/renderer-B5Dhv6j9.mjs +0 -5
  444. package/dist/renderer-BBUgCS3C.mjs +0 -5
  445. package/dist/renderer-BKXM28Mx.mjs +0 -5
  446. package/dist/renderer-BKqm6xdf.mjs +0 -5
  447. package/dist/renderer-BMfMMf0R.mjs +0 -5
  448. package/dist/renderer-BPsjEnnl.mjs +0 -5
  449. package/dist/renderer-Be5hfwSd.mjs.map +0 -1
  450. package/dist/renderer-Bofr6f88.mjs +0 -6
  451. package/dist/renderer-BqoGcujR.mjs +0 -5
  452. package/dist/renderer-BvuBt2aH.mjs +0 -5
  453. package/dist/renderer-BxTgXHu1.mjs +0 -5
  454. package/dist/renderer-Bz2Rrz60.mjs +0 -5
  455. package/dist/renderer-CBjG8rjE.mjs +0 -5
  456. package/dist/renderer-CS2zyPyZ.mjs +0 -5
  457. package/dist/renderer-CXnbl_jR.mjs +0 -5
  458. package/dist/renderer-CaF9vod_.mjs +0 -5
  459. package/dist/renderer-CbSBH3lp.mjs +0 -5
  460. package/dist/renderer-CdjuGRbO.mjs +0 -5
  461. package/dist/renderer-CoLbxC13.mjs +0 -5
  462. package/dist/renderer-Cr9G0dXB.mjs +0 -5
  463. package/dist/renderer-D63l6_UC.mjs +0 -5
  464. package/dist/renderer-DCJqnzER.mjs +0 -5
  465. package/dist/renderer-DFBOR5J3.mjs +0 -5
  466. package/dist/renderer-DGAZSzw6.mjs +0 -5
  467. package/dist/renderer-DPLGk1Qk.mjs +0 -5
  468. package/dist/renderer-DTCUzByS.mjs +0 -5
  469. package/dist/renderer-DdGahYi1.mjs +0 -5
  470. package/dist/renderer-DhL4nNPk.mjs +0 -5
  471. package/dist/renderer-DkyTbiVz.mjs +0 -3
  472. package/dist/renderer-DnAZweRX.mjs +0 -5
  473. package/dist/renderer-DpisVnT2.mjs +0 -5
  474. package/dist/renderer-Ds7pAKnE.mjs +0 -3
  475. package/dist/renderer-DxZD5B54.mjs +0 -5
  476. package/dist/renderer-PMHOnbnA.mjs +0 -5
  477. package/dist/renderer-STufNpMx.mjs +0 -5
  478. package/dist/renderer-SdrgfCxH.mjs +0 -5
  479. /package/dist/{chunk-D8S17ehY.mjs → chunk-W71TSjRM.mjs} +0 -0
  480. /package/dist/{renderer-Cputd36d.mjs → renderer-B6rZUBwE.mjs} +0 -0
@@ -1,4 +1,4 @@
1
- import{g as O}from"./chunk-Y4NIR77Z.mjs";O();var _e=`
1
+ import{g as O}from"./chunk-Y4NIR77Z.mjs";O();var de=`
2
2
  struct BiquadUniforms {
3
3
  b0 : f32,
4
4
  b1 : f32,
@@ -36,7 +36,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
36
36
  outAudio[i] = y0;
37
37
  }
38
38
  }
39
- `,ye=`
39
+ `,he=`
40
40
  struct FeatureUniforms {
41
41
  sampleRate : f32,
42
42
  numSamples : u32,
@@ -202,7 +202,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
202
202
  outStats[7] = 1.0f;
203
203
  }
204
204
  }
205
- `,ve=`
205
+ `,xe=`
206
206
  struct TexturePackUniforms {
207
207
  numFrames : u32,
208
208
  texWidth : u32,
@@ -235,7 +235,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
235
235
 
236
236
  textureStore(outTex, vec2<i32>(i32(x), 0), vec4<f32>(prim, beat, bass, nrg));
237
237
  }
238
- `,Pe=`
238
+ `,_e=`
239
239
  struct PaceUniforms {
240
240
  baseSpeed : f32,
241
241
  gain : f32,
@@ -261,23 +261,23 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
261
261
  outSourceTimestamps[f] = accumulatedTime;
262
262
  }
263
263
  }
264
- `;function Be(f,e,a){let t=2*Math.PI*e/f,r=Math.sin(t)/(2*a),n=Math.cos(t),s=r,u=0,o=-r,p=1+r,g=-2*n,d=1-r;return{b0:s/p,b1:u/p,b2:o/p,a1:g/p,a2:d/p}}var Se=f=>{switch(f){case"exponential":return 1;case"logarithmic":return 2;case"square":return 3;case"smoothstep":return 4;default:return 0}},we=f=>{switch(f){case"transient_beat":return 1;case"sub_bass":return 2;case"bass":return 3;case"mid":return 4;case"high":return 5;case"spectral_flux":return 6;default:return 0}},Z=class f{static pipelineCache=new WeakMap;static getPipeline(e,a,t){let r=f.pipelineCache.get(e);r||(r=new Map,f.pipelineCache.set(e,r));let n=r.get(a);if(!n){let s=e.createShaderModule({label:`${a}.wgsl`,code:t});n=e.createComputePipeline({label:a,layout:"auto",compute:{module:s,entryPoint:"main"}}),r.set(a,n)}return n}static async extractFeatures(e,a,t,r,n={},s=512){let u=a.length;if(u===0||a[0].length===0)throw new Error("Empty audio buffer supplied to AudioSignalComputePipeline.");let o=a[0].length,p=o/t,g=Math.max(1,Math.ceil(p*r)),d=Math.max(1,Math.round(t/r)),i=Math.max(32,Math.round(d*2)),_=new Float32Array(o);for(let ae=0;ae<u;ae++){let xe=a[ae];for(let Q=0;Q<o;Q++)_[Q]+=xe[Q]/u}let S=e.createBuffer({size:o*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"audio_raw_pcm_buffer"});e.queue.writeBuffer(S,0,_);let l=e.createBuffer({size:o*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"audio_bass_filtered_buffer"}),h=e.createBuffer({size:g*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_primary_signal_buffer"}),y=e.createBuffer({size:g*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_beat_signal_buffer"}),B=e.createBuffer({size:g*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_bass_signal_buffer"}),v=e.createBuffer({size:g*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_energy_signal_buffer"}),b=f.getPipeline(e,"AudioBiquadFilterPipeline",_e),m=Be(t,120,1.2),c=new Float32Array([m.b0,m.b1,m.b2,m.a1,m.a2,0,0,0]);new Uint32Array(c.buffer)[5]=o;let x=e.createBuffer({size:c.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_biquad_uniform_buffer"});e.queue.writeBuffer(x,0,c);let M=e.createBindGroup({layout:b.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:x}},{binding:1,resource:{buffer:S}},{binding:2,resource:{buffer:l}}]}),P=f.getPipeline(e,"AudioFeatureExtractionPipeline",ye),U=n.attackMs??10,A=n.releaseMs??120,$=1-Math.exp(-1/(U/1e3*r)),G=1-Math.exp(-1/(A/1e3*r)),w=n.beatDecayMs??80,F=Math.exp(-1/(w/1e3*r)),T=n.noiseFloorDb??-48,R=n.dynamicRangeDb??48,D=new ArrayBuffer(64),E=new Float32Array(D),k=new Uint32Array(D);E[0]=t,k[1]=o,k[2]=g,k[3]=d,k[4]=i,E[5]=$,E[6]=G,E[7]=n.sensitivity??1,E[8]=T,E[9]=R,k[10]=Se(n.curve),E[11]=n.beatThreshold??.08,E[12]=F,k[13]=we(n.extractionMode),E[14]=0,E[15]=0;let q=e.createBuffer({size:D.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_feature_uniform_buffer"});e.queue.writeBuffer(q,0,D);let N=e.createBuffer({size:32,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_feature_stats_buffer"}),W=e.createBuffer({size:32,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_feature_stats_read_buffer"}),pe=e.createBindGroup({layout:P.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:q}},{binding:1,resource:{buffer:S}},{binding:2,resource:{buffer:l}},{binding:3,resource:{buffer:h}},{binding:4,resource:{buffer:y}},{binding:5,resource:{buffer:B}},{binding:6,resource:{buffer:v}},{binding:7,resource:{buffer:N}}]}),ee=Math.max(s,128),te=e.createTexture({size:[ee,1,1],format:"rgba16float",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,label:"audio_extracted_signal_texture"}),oe=f.getPipeline(e,"AudioTexturePackPipeline",ve),le=new Uint32Array([g,ee,0,0]),re=e.createBuffer({size:le.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_pack_uniform_buffer"});e.queue.writeBuffer(re,0,le);let be=e.createBindGroup({layout:oe.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:re}},{binding:1,resource:{buffer:h}},{binding:2,resource:{buffer:y}},{binding:3,resource:{buffer:B}},{binding:4,resource:{buffer:v}},{binding:5,resource:te.createView()}]}),C=e.createCommandEncoder({label:"audio_signal_extractor_encoder"}),H=C.beginComputePass({label:"audio_biquad_pass"});H.setPipeline(b),H.setBindGroup(0,M),H.dispatchWorkgroups(1),H.end();let X=C.beginComputePass({label:"audio_feature_pass"});X.setPipeline(P),X.setBindGroup(0,pe),X.dispatchWorkgroups(1),X.end(),C.copyBufferToBuffer(N,0,W,0,32);let z=e.createBuffer({size:g*4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_primary_readback"}),Y=e.createBuffer({size:g*4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_beat_readback"}),I=e.createBuffer({size:g*4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_bass_readback"}),j=e.createBuffer({size:g*4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_energy_readback"});C.copyBufferToBuffer(h,0,z,0,g*4),C.copyBufferToBuffer(y,0,Y,0,g*4),C.copyBufferToBuffer(B,0,I,0,g*4),C.copyBufferToBuffer(v,0,j,0,g*4);let J=C.beginComputePass({label:"audio_pack_pass"});J.setPipeline(oe),J.setBindGroup(0,be),J.dispatchWorkgroups(Math.ceil(ee/64)),J.end(),e.queue.submit([C.finish()]),await Promise.all([W.mapAsync(GPUMapMode.READ),z.mapAsync(GPUMapMode.READ),Y.mapAsync(GPUMapMode.READ),I.mapAsync(GPUMapMode.READ),j.mapAsync(GPUMapMode.READ)]);let V=new Float32Array(W.getMappedRange().slice(0)),de={primary:new Float32Array(z.getMappedRange().slice(0)),beat:new Float32Array(Y.getMappedRange().slice(0)),bass:new Float32Array(I.getMappedRange().slice(0)),energy:new Float32Array(j.getMappedRange().slice(0))};W.unmap(),W.destroy(),N.destroy(),z.unmap(),z.destroy(),Y.unmap(),Y.destroy(),I.unmap(),I.destroy(),j.unmap(),j.destroy();let he={primary:{min:V[0],max:V[1]},beat:{min:V[2],max:V[3]},bass:{min:V[4],max:V[5]},energy:{min:V[6],max:V[7]}};return x.destroy(),q.destroy(),re.destroy(),S.destroy(),l.destroy(),{primaryBuffer:h,beatBuffer:y,bassBuffer:B,energyBuffer:v,texture:te,textureView:te.createView(),numFrames:g,durationSec:p,stats:he,channelSamples:de}}static computePaceTimestamps(e,a,t,r,n=1,s=1){let u=e.createBuffer({size:t*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_pace_timestamps_buffer"}),o=f.getPipeline(e,"AudioPaceIntegralPipeline",Pe),p=1/r,g=new Float32Array([n,s,p,0]);new Uint32Array(g.buffer)[3]=t;let d=e.createBuffer({size:g.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_pace_uniform_buffer"});e.queue.writeBuffer(d,0,g);let i=e.createBindGroup({layout:o.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:d}},{binding:1,resource:{buffer:a}},{binding:2,resource:{buffer:u}}]}),_=e.createCommandEncoder({label:"audio_pace_integral_encoder"}),S=_.beginComputePass({label:"audio_pace_pass"});return S.setPipeline(o),S.setBindGroup(0,i),S.dispatchWorkgroups(1),S.end(),e.queue.submit([_.finish()]),d.destroy(),u}};O();var Ue=`const PI: f32 = ${Math.PI}f;
264
+ `;function ye(l){let e=new Float32Array(l[0]?.length??0);for(let a of l)for(let t=0;t<e.length;t++)e[t]+=a[t]/l.length;return e}function ve(l,e,a){let t=2*Math.PI*e/l,r=Math.sin(t)/(2*a),n=Math.cos(t),s=r,u=0,o=-r,p=1+r,g=-2*n,d=1-r;return{b0:s/p,b1:u/p,b2:o/p,a1:g/p,a2:d/p}}var Pe=l=>{switch(l){case"exponential":return 1;case"logarithmic":return 2;case"square":return 3;case"smoothstep":return 4;default:return 0}},Be=l=>{switch(l){case"transient_beat":return 1;case"sub_bass":return 2;case"bass":return 3;case"mid":return 4;case"high":return 5;case"spectral_flux":return 6;default:return 0}},Q=class l{static pipelineCache=new WeakMap;static getPipeline(e,a,t){let r=l.pipelineCache.get(e);r||(r=new Map,l.pipelineCache.set(e,r));let n=r.get(a);if(!n){let s=e.createShaderModule({label:`${a}.wgsl`,code:t});n=e.createComputePipeline({label:a,layout:"auto",compute:{module:s,entryPoint:"main"}}),r.set(a,n)}return n}static async extractFeatures(e,a,t,r,n={},s=512){if(a.length===0||a[0].length===0)throw new Error("Empty audio buffer supplied to AudioSignalComputePipeline.");let o=a[0].length,p=o/t,g=Math.max(1,Math.ceil(p*r)),d=Math.max(1,Math.round(t/r)),i=Math.max(32,Math.round(d*2)),_=ye(a),S=e.createBuffer({size:o*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"audio_raw_pcm_buffer"});e.queue.writeBuffer(S,0,_);let f=e.createBuffer({size:o*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"audio_bass_filtered_buffer"}),h=e.createBuffer({size:g*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_primary_signal_buffer"}),y=e.createBuffer({size:g*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_beat_signal_buffer"}),B=e.createBuffer({size:g*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_bass_signal_buffer"}),v=e.createBuffer({size:g*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_energy_signal_buffer"}),b=l.getPipeline(e,"AudioBiquadFilterPipeline",de),m=ve(t,120,1.2),c=new Float32Array([m.b0,m.b1,m.b2,m.a1,m.a2,0,0,0]);new Uint32Array(c.buffer)[5]=o;let x=e.createBuffer({size:c.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_biquad_uniform_buffer"});e.queue.writeBuffer(x,0,c);let M=e.createBindGroup({layout:b.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:x}},{binding:1,resource:{buffer:S}},{binding:2,resource:{buffer:f}}]}),P=l.getPipeline(e,"AudioFeatureExtractionPipeline",he),U=n.attackMs??10,A=n.releaseMs??120,$=1-Math.exp(-1/(U/1e3*r)),G=1-Math.exp(-1/(A/1e3*r)),w=n.beatDecayMs??80,F=Math.exp(-1/(w/1e3*r)),T=n.noiseFloorDb??-48,R=n.dynamicRangeDb??48,D=new ArrayBuffer(64),E=new Float32Array(D),k=new Uint32Array(D);E[0]=t,k[1]=o,k[2]=g,k[3]=d,k[4]=i,E[5]=$,E[6]=G,E[7]=n.sensitivity??1,E[8]=T,E[9]=R,k[10]=Pe(n.curve),E[11]=n.beatThreshold??.08,E[12]=F,k[13]=Be(n.extractionMode),E[14]=0,E[15]=0;let q=e.createBuffer({size:D.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_feature_uniform_buffer"});e.queue.writeBuffer(q,0,D);let N=e.createBuffer({size:32,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_feature_stats_buffer"}),W=e.createBuffer({size:32,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_feature_stats_read_buffer"}),me=e.createBindGroup({layout:P.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:q}},{binding:1,resource:{buffer:S}},{binding:2,resource:{buffer:f}},{binding:3,resource:{buffer:h}},{binding:4,resource:{buffer:y}},{binding:5,resource:{buffer:B}},{binding:6,resource:{buffer:v}},{binding:7,resource:{buffer:N}}]}),Z=Math.max(s,128),ee=e.createTexture({size:[Z,1,1],format:"rgba16float",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,label:"audio_extracted_signal_texture"}),ie=l.getPipeline(e,"AudioTexturePackPipeline",xe),ue=new Uint32Array([g,Z,0,0]),te=e.createBuffer({size:ue.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_pack_uniform_buffer"});e.queue.writeBuffer(te,0,ue);let ge=e.createBindGroup({layout:ie.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:te}},{binding:1,resource:{buffer:h}},{binding:2,resource:{buffer:y}},{binding:3,resource:{buffer:B}},{binding:4,resource:{buffer:v}},{binding:5,resource:ee.createView()}]}),C=e.createCommandEncoder({label:"audio_signal_extractor_encoder"}),H=C.beginComputePass({label:"audio_biquad_pass"});H.setPipeline(b),H.setBindGroup(0,M),H.dispatchWorkgroups(1),H.end();let X=C.beginComputePass({label:"audio_feature_pass"});X.setPipeline(P),X.setBindGroup(0,me),X.dispatchWorkgroups(1),X.end(),C.copyBufferToBuffer(N,0,W,0,32);let z=e.createBuffer({size:g*4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_primary_readback"}),Y=e.createBuffer({size:g*4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_beat_readback"}),I=e.createBuffer({size:g*4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_bass_readback"}),j=e.createBuffer({size:g*4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST,label:"audio_energy_readback"});C.copyBufferToBuffer(h,0,z,0,g*4),C.copyBufferToBuffer(y,0,Y,0,g*4),C.copyBufferToBuffer(B,0,I,0,g*4),C.copyBufferToBuffer(v,0,j,0,g*4);let J=C.beginComputePass({label:"audio_pack_pass"});J.setPipeline(ie),J.setBindGroup(0,ge),J.dispatchWorkgroups(Math.ceil(Z/64)),J.end(),e.queue.submit([C.finish()]),await Promise.all([W.mapAsync(GPUMapMode.READ),z.mapAsync(GPUMapMode.READ),Y.mapAsync(GPUMapMode.READ),I.mapAsync(GPUMapMode.READ),j.mapAsync(GPUMapMode.READ)]);let V=new Float32Array(W.getMappedRange().slice(0)),pe={primary:new Float32Array(z.getMappedRange().slice(0)),beat:new Float32Array(Y.getMappedRange().slice(0)),bass:new Float32Array(I.getMappedRange().slice(0)),energy:new Float32Array(j.getMappedRange().slice(0))};W.unmap(),W.destroy(),N.destroy(),z.unmap(),z.destroy(),Y.unmap(),Y.destroy(),I.unmap(),I.destroy(),j.unmap(),j.destroy();let be={primary:{min:V[0],max:V[1]},beat:{min:V[2],max:V[3]},bass:{min:V[4],max:V[5]},energy:{min:V[6],max:V[7]}};return x.destroy(),q.destroy(),te.destroy(),S.destroy(),f.destroy(),{primaryBuffer:h,beatBuffer:y,bassBuffer:B,energyBuffer:v,texture:ee,textureView:ee.createView(),numFrames:g,durationSec:p,stats:be,channelSamples:pe}}static computePaceTimestamps(e,a,t,r,n=1,s=1){let u=e.createBuffer({size:t*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST,label:"audio_pace_timestamps_buffer"}),o=l.getPipeline(e,"AudioPaceIntegralPipeline",_e),p=1/r,g=new Float32Array([n,s,p,0]);new Uint32Array(g.buffer)[3]=t;let d=e.createBuffer({size:g.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_pace_uniform_buffer"});e.queue.writeBuffer(d,0,g);let i=e.createBindGroup({layout:o.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:d}},{binding:1,resource:{buffer:a}},{binding:2,resource:{buffer:u}}]}),_=e.createCommandEncoder({label:"audio_pace_integral_encoder"}),S=_.beginComputePass({label:"audio_pace_pass"});return S.setPipeline(o),S.setBindGroup(0,i),S.dispatchWorkgroups(1),S.end(),e.queue.submit([_.finish()]),d.destroy(),u}};O();var Se=`const PI: f32 = ${Math.PI}f;
265
265
  const TAU: f32 = ${Math.PI*2}f;
266
- const E: f32 = ${Math.E}f;`,$e=["t: f32","x: f32","y: f32","z: f32","i: u32","n: u32","frame: u32","color: vec4f","t_elapsed: f32","duration: f32"];function se(f,e){let a=Te(e),t=f.fnOutputType||"f32",r=f.fnParams??[],n=r.map(l=>`${l.name}: ${l.type}`),s=[...$e,...n].join(", "),u=`fn ${a}(${s}) -> ${t}`,o=f.fnBody??"",p={...f};if(!f.baseType||f.baseType==="custom"){let l=Fe(f.fnBody??"",f);l.baseType&&(p={...f,...l})}p.baseType&&p.baseType!=="custom"&&(o=Me(p));let g=o.split(`
267
- `).map(l=>` ${l}`).join(`
268
- `),{valid:d,validationWarning:i}=Ee(g,t),_=g;!d&&i==="Function body has no return statement."&&(t==="vec2f"?_+=`
266
+ const E: f32 = ${Math.E}f;`,we=["t: f32","x: f32","y: f32","z: f32","i: u32","n: u32","frame: u32","color: vec4f","t_elapsed: f32","duration: f32"];function ae(l,e){let a=Ae(e),t=l.fnOutputType||"f32",r=l.fnParams??[],n=r.map(f=>`${f.name}: ${f.type}`),s=[...we,...n].join(", "),u=`fn ${a}(${s}) -> ${t}`,o=l.fnBody??"",p={...l};if(!l.baseType||l.baseType==="custom"){let f=Me(l.fnBody??"",l);f.baseType&&(p={...l,...f})}p.baseType&&p.baseType!=="custom"&&(o=$e(p));let g=o.split(`
267
+ `).map(f=>` ${f}`).join(`
268
+ `),{valid:d,validationWarning:i}=Fe(g,t),_=g;!d&&i==="Function body has no return statement."&&(t==="vec2f"?_+=`
269
269
  return vec2<f32>(0.0);`:t==="vec3f"?_+=`
270
270
  return vec3<f32>(0.0);`:t==="vec4f"?_+=`
271
271
  return vec4<f32>(0.0);`:_+=`
272
- return 0.0;`);let S=[Ue,"",`${u} {`,_,"}"].join(`
273
- `);return{name:a,wgsl:S,signature:u,outputType:t,params:r,valid:d,validationWarning:i}}function Ge(f,e){return[` let ${e}_n1: f32 = 7.5625;`,` let ${e}_d1: f32 = 2.75;`,` let ${e}_r1: f32 = ${e}_n1 * (${f}) * (${f});`,` let ${e}_x2: f32 = (${f}) - 1.5 / ${e}_d1;`,` let ${e}_r2: f32 = ${e}_n1 * ${e}_x2 * ${e}_x2 + 0.75;`,` let ${e}_x3: f32 = (${f}) - 2.25 / ${e}_d1;`,` let ${e}_r3: f32 = ${e}_n1 * ${e}_x3 * ${e}_x3 + 0.9375;`,` let ${e}_x4: f32 = (${f}) - 2.625 / ${e}_d1;`,` let ${e}_r4: f32 = ${e}_n1 * ${e}_x4 * ${e}_x4 + 0.984375;`,` let ${e}_s1: f32 = select(${e}_r4, ${e}_r3, (${f}) < 2.5 / ${e}_d1);`,` let ${e}_s2: f32 = select(${e}_s1, ${e}_r2, (${f}) < 2.0 / ${e}_d1);`,` let ${e}: f32 = select(${e}_s2, ${e}_r1, (${f}) < 1.0 / ${e}_d1);`].join(`
274
- `)}function K(f,e,a){switch(f){case"linear":return` let ${a}: f32 = ${e};`;case"smoothstep":return` let ${a}: f32 = (${e}) * (${e}) * (3.0 - 2.0 * (${e}));`;case"smootherstep":return` let ${a}: f32 = (${e}) * (${e}) * (${e}) * ((${e}) * ((${e}) * 6.0 - 15.0) + 10.0);`;case"sine":return` let ${a}: f32 = 1.0 - cos((${e}) * PI * 0.5);`;case"quad":return` let ${a}: f32 = (${e}) * (${e});`;case"cubic":return` let ${a}: f32 = (${e}) * (${e}) * (${e});`;case"quart":return` let ${a}: f32 = pow(${e}, 4.0);`;case"quint":return` let ${a}: f32 = pow(${e}, 5.0);`;case"expo":return` let ${a}: f32 = select(pow(2.0, 10.0 * (${e}) - 10.0), 0.0, (${e}) <= 0.0001);`;case"circ":return` let ${a}: f32 = 1.0 - sqrt(clamp(1.0 - (${e}) * (${e}), 0.0, 1.0));`;case"back":return[` let ${a}_c1: f32 = 1.70158;`,` let ${a}_c3: f32 = ${a}_c1 + 1.0;`,` let ${a}: f32 = ${a}_c3 * (${e}) * (${e}) * (${e}) - ${a}_c1 * (${e}) * (${e});`].join(`
272
+ return 0.0;`);let S=[Se,"",`${u} {`,_,"}"].join(`
273
+ `);return{name:a,wgsl:S,signature:u,outputType:t,params:r,valid:d,validationWarning:i}}function Ue(l,e){return[` let ${e}_n1: f32 = 7.5625;`,` let ${e}_d1: f32 = 2.75;`,` let ${e}_r1: f32 = ${e}_n1 * (${l}) * (${l});`,` let ${e}_x2: f32 = (${l}) - 1.5 / ${e}_d1;`,` let ${e}_r2: f32 = ${e}_n1 * ${e}_x2 * ${e}_x2 + 0.75;`,` let ${e}_x3: f32 = (${l}) - 2.25 / ${e}_d1;`,` let ${e}_r3: f32 = ${e}_n1 * ${e}_x3 * ${e}_x3 + 0.9375;`,` let ${e}_x4: f32 = (${l}) - 2.625 / ${e}_d1;`,` let ${e}_r4: f32 = ${e}_n1 * ${e}_x4 * ${e}_x4 + 0.984375;`,` let ${e}_s1: f32 = select(${e}_r4, ${e}_r3, (${l}) < 2.5 / ${e}_d1);`,` let ${e}_s2: f32 = select(${e}_s1, ${e}_r2, (${l}) < 2.0 / ${e}_d1);`,` let ${e}: f32 = select(${e}_s2, ${e}_r1, (${l}) < 1.0 / ${e}_d1);`].join(`
274
+ `)}function K(l,e,a){switch(l){case"linear":return` let ${a}: f32 = ${e};`;case"smoothstep":return` let ${a}: f32 = (${e}) * (${e}) * (3.0 - 2.0 * (${e}));`;case"smootherstep":return` let ${a}: f32 = (${e}) * (${e}) * (${e}) * ((${e}) * ((${e}) * 6.0 - 15.0) + 10.0);`;case"sine":return` let ${a}: f32 = 1.0 - cos((${e}) * PI * 0.5);`;case"quad":return` let ${a}: f32 = (${e}) * (${e});`;case"cubic":return` let ${a}: f32 = (${e}) * (${e}) * (${e});`;case"quart":return` let ${a}: f32 = pow(${e}, 4.0);`;case"quint":return` let ${a}: f32 = pow(${e}, 5.0);`;case"expo":return` let ${a}: f32 = select(pow(2.0, 10.0 * (${e}) - 10.0), 0.0, (${e}) <= 0.0001);`;case"circ":return` let ${a}: f32 = 1.0 - sqrt(clamp(1.0 - (${e}) * (${e}), 0.0, 1.0));`;case"back":return[` let ${a}_c1: f32 = 1.70158;`,` let ${a}_c3: f32 = ${a}_c1 + 1.0;`,` let ${a}: f32 = ${a}_c3 * (${e}) * (${e}) * (${e}) - ${a}_c1 * (${e}) * (${e});`].join(`
275
275
  `);case"elastic":return[` let ${a}_c4: f32 = (2.0 * PI) / 3.0;`,` let ${a}_raw: f32 = -pow(2.0, 10.0 * (${e}) - 10.0) * sin(((${e}) * 10.0 - 10.75) * ${a}_c4);`,` let ${a}_lo: f32 = select(${a}_raw, 0.0, (${e}) <= 0.0001);`,` let ${a}: f32 = select(${a}_lo, 1.0, (${e}) >= 0.9999);`].join(`
276
- `);case"bounce":{let t=`${a}_bx`,r=`${a}_bo`;return[` let ${t}: f32 = 1.0 - (${e});`,Ge(t,r),` let ${a}: f32 = 1.0 - ${r};`].join(`
277
- `)}}}function fe(f,e,a,t){if(f==="linear"||f==="smoothstep"||f==="smootherstep"||e==="in")return K(f,a,t);if(e==="out"){let s=`${t}_src`;return[K(f,`1.0 - (${a})`,s),` let ${t}: f32 = 1.0 - ${s};`].join(`
278
- `)}let r=`${t}_in`,n=`${t}_out`;return[K(f,`(${a}) * 2.0`,r),K(f,`2.0 - (${a}) * 2.0`,n),` let ${t}: f32 = select(1.0 - ${n} * 0.5, ${r} * 0.5, (${a}) < 0.5);`].join(`
279
- `)}function Me(f){let e=[],a=f.baseEnabled??!0,t=f.fmEnabled??!1;if(a&&t){let s=(f.fmAmplitude??1).toFixed(5),u=(f.fmFrequency??.5).toFixed(5);e.push(" // Frequency Modulation"),e.push(` let modulator = sin(t * ${u} * TAU) * ${s};`),e.push(" let t_mod = t + modulator;")}else e.push(" let t_mod = t;");if(e.push(" // Base Waveform"),!a)e.push(" var val: f32 = 0.0;");else{let s=f.baseType??"sine";s==="noise_smooth"?(e.push(" let noise_t = t_mod * u.frequency + u.phase;"),e.push(" let noise_i = floor(noise_t);"),e.push(" let noise_f = fract(noise_t);"),e.push(" let noise_u = noise_f * noise_f * (3.0 - 2.0 * noise_f);"),e.push(" let n0 = fract(sin(noise_i * 12.9898) * 43758.5453);"),e.push(" let n1 = fract(sin((noise_i + 1.0) * 12.9898) * 43758.5453);"),e.push(" let noise_val = mix(n0, n1, noise_u) * 2.0 - 1.0;")):s==="noise_white"?e.push(" let noise_val = fract(sin(t_mod * 12.9898 + u.phase) * 43758.5453) * 2.0 - 1.0;"):s==="pulse"?(e.push(" let pulse_duty = select(clamp(u.phase, 0.01, 0.99), 0.5, u.phase == 0.0);"),e.push(" let pulse_val = select(-1.0, 1.0, fract(t_mod * u.frequency) < pulse_duty);")):s==="bounce"?e.push(" let bounce_val = abs(sin(t_mod * u.frequency * PI + u.phase));"):s==="staircase"&&e.push(" let stair_val = floor(fract(t_mod * u.frequency + u.phase / TAU) * 8.0) / 7.0 * 2.0 - 1.0;");let u="";switch(s){case"sine":u="u.amplitude * sin(t_mod * u.frequency * TAU + u.phase) + u.offset";break;case"triangle":u="u.amplitude * (2.0 * abs(2.0 * fract(t_mod * u.frequency + u.phase / TAU) - 1.0) - 1.0) + u.offset";break;case"sawtooth":u="u.amplitude * (2.0 * (t_mod * u.frequency + u.phase / TAU - floor(t_mod * u.frequency + u.phase / TAU + 0.5))) + u.offset";break;case"square":u="u.amplitude * sign(sin(t_mod * u.frequency * TAU + u.phase)) + u.offset";break;case"constant":u="u.offset";break;case"noise_smooth":u="u.amplitude * noise_val + u.offset";break;case"noise_white":u="u.amplitude * noise_val + u.offset";break;case"pulse":u="u.amplitude * pulse_val + u.offset";break;case"bounce":u="u.amplitude * bounce_val + u.offset";break;case"staircase":u="u.amplitude * stair_val + u.offset";break;default:u="u.amplitude * sin(t_mod * u.frequency * TAU + u.phase) + u.offset";break}e.push(` var val: f32 = ${u};`)}let r=f.envelopeEnabled??!1,n=f.gateEnabled??!1;if(r){e.push(" // Time Envelope");let s=f.gateStartFrame??0,u=f.gateEndFrame??100;(f.envelopeUseFrame??!0)&&n?e.push(` let progress = select(0.0, clamp((f32(frame) - ${s.toFixed(1)}) / (${u.toFixed(1)} - ${s.toFixed(1)}), 0.0, 1.0), ${u}u > ${s}u);`):e.push(" let progress = select(0.0, clamp(t_elapsed / duration, 0.0, 1.0), duration > 0.0);");let p=f.envelopeFamily??"sine",g=f.envelopeMode??"in_out",d=f.envelopePattern??"ramp_up",i=f.envelopeCycles??2;if(d==="bell"||d==="loop"){if(d==="loop"){let _=Math.max(1,i).toFixed(1);e.push(` let env_loop: f32 = fract(progress * ${_});`),e.push(" let env_folded: f32 = 1.0 - abs(env_loop * 2.0 - 1.0);")}else e.push(" let env_folded: f32 = 1.0 - abs(progress * 2.0 - 1.0);");e.push(fe(p,g,"env_folded","env_eased")),e.push(" let env_factor: f32 = env_eased;")}else e.push(fe(p,g,"progress","env_eased")),e.push(d==="ramp_up"?" let env_factor: f32 = env_eased;":" let env_factor: f32 = 1.0 - env_eased;");e.push(" val = mix(u.offset - u.amplitude, val, env_factor);")}if(n){let s=f.gateStartFrame??0,u=f.gateEndFrame??100,o=f.gateIdleValue??0;e.push(" // Time Gate"),e.push(` if (frame < ${s}u || frame > ${u}u) {`),e.push(` val = ${o.toFixed(5)};`),e.push(" }")}return e.push(""),e.push(" return val;"),e.join(`
280
- `)}var ce={fade_in:{family:"linear",mode:"in",pattern:"ramp_up"},fade_out:{family:"linear",mode:"in",pattern:"ramp_down"},ping_pong:{family:"linear",mode:"in",pattern:"bell"},expo_decay:{family:"expo",mode:"in",pattern:"ramp_down"},smooth_in:{family:"smoothstep",mode:"in",pattern:"ramp_up"},smooth_out:{family:"smoothstep",mode:"in",pattern:"ramp_down"},sine_bell:{family:"sine",mode:"in",pattern:"bell"},spring:{family:"elastic",mode:"out",pattern:"ramp_up"}};function Ae(f){return f&&f in ce?ce[f]:{family:"sine",mode:"in_out",pattern:"ramp_up"}}function Fe(f,e){let a=f.match(/\/\* SIGNAL_BUILDER_STATE:\s*([\s\S]*?)\s*\*\//);if(a)try{let t=JSON.parse(a[1]),r=!!t.envelope?.family,n=r?{family:t.envelope.family,mode:t.envelope.mode??"in",pattern:t.envelope.pattern??"ramp_up"}:Ae(t.envelope?.type);return{baseEnabled:t.base?.enabled??!0,baseType:t.base?.type??"sine",fmEnabled:t.fm?.enabled??!1,fmAmplitude:e?.fmAmplitude??t.fm?.amplitude??1,fmFrequency:e?.fmFrequency??t.fm?.frequency??.5,envelopeEnabled:t.envelope?.enabled??!1,envelopeFamily:n.family,envelopeMode:n.mode,envelopePattern:n.pattern,envelopeCycles:r?t.envelope?.cycles??2:2,envelopeUseFrame:e?.envelopeUseFrame??t.envelope?.useFrame??!0,gateEnabled:e?.gateEnabled??t.gate?.enabled??!1,gateStartFrame:e?.gateStartFrame??t.gate?.startFrame??0,gateEndFrame:e?.gateEndFrame??t.gate?.endFrame??100,gateIdleValue:e?.gateIdleValue??t.gate?.idleValue??0}}catch{}return{}}function Te(f){return`signal_${f.replace(/[^a-zA-Z0-9]/g,"_")}`}function Ee(f,e){if(!/\breturn\b/.test(f))return{valid:!1,validationWarning:"Function body has no return statement."};let t=/\breturn\s+vec(\d)f?\(/.exec(f);if(t){let r=parseInt(t[1],10);if(e==="f32")return{valid:!1,validationWarning:`Returning vec${r}f but output type is f32.`}}return{valid:!0}}O();O();function De(f){let e=new Float32Array([f]),a=new Uint32Array(e.buffer)[0],t=a>>>16&32768,r=(a>>>23&255)-127+15,n=a&8388607;return r<=0?r<-10?t:(n=(n|8388608)>>1-r,t|n+4096>>13):r>=31?t|31744:t|r<<10|n+4096>>13}function ie(f){if(typeof Float16Array<"u")return new Uint16Array(new Float16Array(f).buffer);let e=f.length,a=new Uint16Array(e);for(let t=0;t<e;t++)a[t]=De(f[t]);return a}function me(f){return Array.isArray(f)||ArrayBuffer.isView(f)&&!(f instanceof DataView)}var ue=class{deviceCache=new WeakMap;statsMap=new Map;statsListeners=new Map;setStats(e,a){this.statsMap.set(e,a);let t=this.statsListeners.get(e);if(t)for(let r of t)r(a)}getStats(e){return this.statsMap.get(e)}onStats(e,a){let t=this.statsListeners.get(e);t||(t=new Set,this.statsListeners.set(e,t)),t.add(a);let r=this.statsMap.get(e);return r&&a(r),()=>{t?.delete(a),t?.size===0&&this.statsListeners.delete(e)}}computeSignalFingerprint(e,a=0,t=new Set){if(e==null)return"";if(typeof e=="number")return`num:${e}`;if(typeof e=="string")return`str:${e}`;if(typeof e=="boolean")return`bool:${e}`;if(typeof e!="object")return"";if(t.has(e)||a>8){let d=e;return`ref:${d.nodeId||d.virtualMedia?.operation?.nodeId||"seen"}`}t.add(e);let r=e,n=r.samples??r.data?.samples,s=(typeof r.nodeId=="string"?r.nodeId:void 0)||(typeof r.virtualMedia?.operation?.nodeId=="string"?r.virtualMedia.operation?.nodeId:void 0),u;a>0&&s&&(u=this.getStats(s));let o=r.signalConfig,p=r.operation??o?.operation??r.config?.operation??r.data?.operation,g={type:r.type,op:r.op,operation:p,bValue:r.bValue??o?.bValue??r.config?.bValue??r.data?.bValue,value:r.value,inMin:r.inMin??o?.inMin,inMax:r.inMax??o?.inMax,outMin:r.outMin??o?.outMin,outMax:r.outMax??o?.outMax,clampMin:r.clampMin??o?.clampMin,clampMax:r.clampMax??o?.clampMax,exponent:r.exponent??o?.exponent,edge0:r.edge0??o?.edge0,edge1:r.edge1??o?.edge1,customWGSL:r.customWGSL||r.fnBody||r.wgsl||o?.customWGSL||o?.fnBody,amplitude:r.amplitude,frequency:r.frequency,phase:r.phase,offset:r.offset,fnParams:r.fnParams,sourceUrl:r.sourceUrl??r.url,extractionMode:r.extractionMode,channel:r.channel,nodeId:s,samplesLen:n?.length,sample0:n?.[0],sampleMid:n&&n.length>1?n[Math.floor(n.length/2)]:void 0,sampleLast:n&&n.length>2?n[n.length-1]:void 0,upstreamStats:u?`${u.min}:${u.max}`:void 0,sigA:r.signalA?this.computeSignalFingerprint(r.signalA,a+1,t):void 0,sigB:r.signalB?this.computeSignalFingerprint(r.signalB,a+1,t):void 0};return JSON.stringify(g)}getDeviceResources(e){let a=this.deviceCache.get(e);return a||(a={resources:new Map,masterAudioTextures:new Map,dummy1x1TextureView:null,dummyBuffer:null,pipelineCache:new Map,defaultSampler:null},this.deviceCache.set(e,a)),a}getSampler(e){let a=this.getDeviceResources(e);return a.defaultSampler||(a.defaultSampler=e.createSampler({magFilter:"linear",minFilter:"linear"})),a.defaultSampler}clear(e,a){if(!a)return;let t=this.deviceCache.get(a);if(!t)return;let r=`${e}:`;for(let[n,s]of t.resources.entries())n.startsWith(r)&&(s.buffer?.destroy(),s.texture?.destroy(),s.uniformBuffer?.destroy(),t.resources.delete(n));for(let[n,s]of t.masterAudioTextures.entries())n.startsWith(r)&&(s.texture.destroy(),t.masterAudioTextures.delete(n))}getDummy1x1TextureView(e){let a=this.getDeviceResources(e);if(a.dummy1x1TextureView)return a.dummy1x1TextureView;let t=e.createTexture({size:[1,1,1],format:"rgba16float",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,label:"dummy_1x1_signal_texture"});return e.queue.writeTexture({texture:t},new Uint16Array([0,0,0,15360]),{bytesPerRow:8,rowsPerImage:1},[1,1,1]),a.dummy1x1TextureView=t.createView(),a.dummy1x1TextureView}getDummyBuffer(e){let a=this.getDeviceResources(e);return a.dummyBuffer||(a.dummyBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"dummy_signal_buffer"})),a.dummyBuffer}registerBuffer(e,a,t,r){let n=this.getDeviceResources(e),s=`${r??"global"}:${a}`,u=n.resources.get(s)??n.resources.get(`global:${a}`),o={...u,type:u?.texture?"combined":"1d-buffer",buffer:t,lastProcessedFrame:-1,isExternal:!0};n.resources.set(s,o),r&&n.resources.set(`global:${a}`,o)}registerTexture(e,a,t,r,n,s){let u=this.getDeviceResources(e),o=`${n??"global"}:${a}`,p=u.resources.get(o)??u.resources.get(`global:${a}`),g={...p,type:p?.buffer?"combined":"2d-texture",texture:t,textureView:r,lastProcessedFrame:-1,isExternal:!0,duration:s!==void 0?s:p?.duration};u.resources.set(o,g),n&&u.resources.set(`global:${a}`,g)}getMasterTextureView(e,a,t){let r=this.getDeviceResources(e),n=`${t??"global"}:${a}`,s=a.replace(/_(beat|bass|energy)$/,"");return r.masterAudioTextures.get(n)?.textureView??r.masterAudioTextures.get(`global:${a}`)?.textureView??r.masterAudioTextures.get(`${t??"global"}:${s}`)?.textureView??r.masterAudioTextures.get(`global:${s}`)?.textureView??r.resources.get(n)?.textureView??r.resources.get(`global:${a}`)?.textureView??r.resources.get(`${t??"global"}:${s}`)?.textureView??r.resources.get(`global:${s}`)?.textureView}getMasterTexture(e,a,t){let r=this.getDeviceResources(e),n=`${t??"global"}:${a}`,s=a.replace(/_(beat|bass|energy)$/,"");return r.masterAudioTextures.get(n)?.texture??r.masterAudioTextures.get(`global:${a}`)?.texture??r.masterAudioTextures.get(`${t??"global"}:${s}`)?.texture??r.masterAudioTextures.get(`global:${s}`)?.texture??r.resources.get(n)?.texture??r.resources.get(`global:${a}`)?.texture??r.resources.get(`${t??"global"}:${s}`)?.texture??r.resources.get(`global:${s}`)?.texture}channelSamplesMap=new Map;setChannelSamples(e,a,t){let r=`${t??"global"}:${e}`,n=e.replace(/_(beat|bass|energy)$/,"");this.channelSamplesMap.set(r,a),this.channelSamplesMap.set(`global:${e}`,a),n!==e&&(this.channelSamplesMap.set(`${t??"global"}:${n}`,a),this.channelSamplesMap.set(`global:${n}`,a))}getChannelSamples(e,a="primary",t){let r=`${t??"global"}:${e}`,n=e.replace(/_(beat|bass|energy)$/,""),s=this.channelSamplesMap.get(r)??this.channelSamplesMap.get(`global:${e}`)??this.channelSamplesMap.get(`${t??"global"}:${n}`)??this.channelSamplesMap.get(`global:${n}`);return s?s[a]??s.primary:void 0}getDuration(e,a,t){let r=this.getDeviceResources(e),n=`${t??"global"}:${a}`,s=r.resources.get(n)??r.resources.get(`global:${a}`);if(s?.duration!==void 0)return s.duration;let u=a.replace(/_(beat|bass|energy)$/,"");return(r.masterAudioTextures.get(n)??r.masterAudioTextures.get(`global:${a}`)??r.masterAudioTextures.get(`${t??"global"}:${u}`)??r.masterAudioTextures.get(`global:${u}`))?.durationSec}extractionPromises=new Map;has(e,a,t){let r=this.getDeviceResources(e),n=`${t??"global"}:${a}`,s=a.replace(/_(beat|bass|energy)$/,"");return r.resources.has(n)||r.resources.has(`global:${a}`)||r.masterAudioTextures.has(n)||r.masterAudioTextures.has(`global:${a}`)||r.masterAudioTextures.has(`${t??"global"}:${s}`)||r.masterAudioTextures.has(`global:${s}`)}async ensureAudioSourcesExtracted(e,a,t=24,r,n=new Set){if(!a||typeof a!="object"||n.has(a))return;n.add(a);let s=a;if(s.signalA&&await this.ensureAudioSourcesExtracted(e,s.signalA,t,r,n),s.signalB&&typeof s.signalB=="object"&&await this.ensureAudioSourcesExtracted(e,s.signalB,t,r,n),!!(s.extractionMode||s.op==="AudioSignalExtractor"||s.virtualMedia?.operation?.op==="AudioSignalExtractor")){let o=s.sourceUrl||s.virtualMedia?.operation?.sourceUrl;if(!o&&s.virtualMedia){let g=s.virtualMedia;o=g.operation?.sourceUrl||g.operation?.url||g.children?.[0]?.operation?.sourceUrl||g.children?.[0]?.operation?.url}let p=s.nodeId||s.virtualMedia?.operation?.nodeId;o&&p&&await this.extractFromAudioSource(e,o,s,p,t,r)}}async extractFromAudioSource(e,a,t={},r,n=24,s){let u=this.getDeviceResources(e),o=`${s??"global"}:${r}`,p=JSON.stringify({sourceUrl:a,mode:t.extractionMode,sens:t.sensitivity,att:t.attackMs,rel:t.releaseMs,smooth:t.smoothing,curve:t.curve,beatThresh:t.beatThreshold,noiseFloor:t.noiseFloorDb,dynRange:t.dynamicRangeDb,beatDecay:t.beatDecayMs,fps:n});if((u.masterAudioTextures.get(o)??u.masterAudioTextures.get(`global:${r}`))?.lastFingerprint===p)return;if(this.extractionPromises.has(o)){await this.extractionPromises.get(o);return}let d=(async()=>{try{let i=[],_=44100;if(typeof window<"u"){let b=window.AudioContext||window.webkitAudioContext;if(b){let m=a;m.startsWith("file://")&&(m=m.replace(/^file:\/\//,"")),m.startsWith("/")&&!m.startsWith("/@fs/")&&!m.startsWith("/api/")&&(m=`/@fs${m}`);let c=new b;try{let x=await fetch(m);if(!x.ok)throw new Error(`HTTP ${x.status}`);let M=await x.arrayBuffer(),P=await c.decodeAudioData(M);_=P.sampleRate;for(let U=0;U<P.numberOfChannels;U++)i.push(new Float32Array(P.getChannelData(U)))}finally{c.close()}}}else try{let b=await import("./shims/fs.mjs"),m=a.replace(/^file:\/\//,"");if(b.existsSync(m)){let c=b.readFileSync(m),x=c.readUInt16LE(22);_=c.readUInt32LE(24);let M=c.readUInt16LE(34),P=12;for(;P<c.length-8;){let $=c.toString("ascii",P,P+4),G=c.readUInt32LE(P+4);if($==="data"){P+=8;break}P+=8+G}let U=Math.max(1,Math.floor(M/8)),A=Math.floor((c.length-P)/(x*U));i=[];for(let $=0;$<x;$++)i.push(new Float32Array(A));if(M===16)for(let $=0;$<A;$++)for(let G=0;G<x;G++){let w=P+($*x+G)*2;w+2<=c.length&&(i[G][$]=c.readInt16LE(w)/32768)}else if(M===32)for(let $=0;$<A;$++)for(let G=0;G<x;G++){let w=P+($*x+G)*4;w+4<=c.length&&(i[G][$]=c.readFloatLE(w))}}}catch{}if(i.length===0||i[0].length===0)return;let l=i[0].length/_,h=await Z.extractFeatures(e,i,_,n,t,512),y=new Set;r&&y.add(r);let B=t?.nodeId;B&&y.add(B);for(let b of y){let m=b.replace(/_(beat|bass|energy)$/,""),c={texture:h.texture,textureView:h.textureView,durationSec:l,stats:h.stats.primary,lastFingerprint:p};u.masterAudioTextures.set(`${s??"global"}:${m}`,c),u.masterAudioTextures.set(`global:${m}`,c),u.masterAudioTextures.set(`${s??"global"}:${m}_beat`,{...c,stats:h.stats.beat}),u.masterAudioTextures.set(`global:${m}_beat`,{...c,stats:h.stats.beat}),u.masterAudioTextures.set(`${s??"global"}:${m}_bass`,{...c,stats:h.stats.bass}),u.masterAudioTextures.set(`global:${m}_bass`,{...c,stats:h.stats.bass}),u.masterAudioTextures.set(`${s??"global"}:${m}_energy`,{...c,stats:h.stats.energy}),u.masterAudioTextures.set(`global:${m}_energy`,{...c,stats:h.stats.energy}),b!==m&&(u.masterAudioTextures.set(`${s??"global"}:${b}`,c),u.masterAudioTextures.set(`global:${b}`,c)),this.registerBuffer(e,m,h.primaryBuffer,s),this.setStats(m,h.stats.primary),this.registerBuffer(e,`${m}_beat`,h.beatBuffer,s),this.setStats(`${m}_beat`,h.stats.beat),this.registerBuffer(e,`${m}_bass`,h.bassBuffer,s),this.setStats(`${m}_bass`,h.stats.bass),this.registerBuffer(e,`${m}_energy`,h.energyBuffer,s),this.setStats(`${m}_energy`,h.stats.energy),h.channelSamples&&this.setChannelSamples(m,h.channelSamples,s)}let v=u.resources.get(o)??u.resources.get(`global:${r}`);v&&(v.lastFingerprint=p)}catch(i){console.warn(`[SignalRegistry] Failed to extract audio signal from ${a}:`,i)}finally{this.extractionPromises.delete(o)}})();this.extractionPromises.set(o,d),await d}getOrCreate1DBuffer(e,a,t,r,n,s,u,o,p,g,d){let i=s;if(s&&!s.customWGSL&&!s.wgsl&&s.fnBody){let b=se(s,t);i={...s,customWGSL:b.wgsl,signalFnName:b.name,fnOutputType:b.outputType,outputType:b.outputType}}let _=this.getDeviceResources(e),S=`${p??"global"}:${t}`,l=_.resources.get(S)??_.resources.get(`global:${t}`),h=u*4;if(l?.isExternal&&l.buffer&&l.buffer.size===h)return l.buffer;if(!l||!l.buffer||l.buffer.size<h){l?.buffer&&!l.isExternal&&l.buffer.destroy();let b=e.createBuffer({size:h,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,label:`signal_1d_buffer_${t}`});l={...l,type:l?.texture?"combined":"1d-buffer",buffer:b,lastProcessedFrame:-1},_.resources.set(S,l)}let y=i?.samples??i?.data?.samples,B=i?this.computeSignalFingerprint(i):"",v=g!==void 0?g:r;if(l.lastProcessedFrame===v&&l.lastFingerprint===B)return l.buffer;if(l.lastFingerprint!==B&&(l.bindGroup=void 0),l.lastProcessedFrame=v,l.lastFingerprint=B,me(y)&&y.length>0){let b=new Float32Array(u),m=y.length,c=Number(i?.fps)||24;for(let x=0;x<u;x++){let M=r+x/o,P=Math.min(m-1,Math.max(0,Math.round(M*c)));b[x]=Number(y[P])||0}e.queue.writeBuffer(l.buffer,0,b)}else if(i?.type==="generator"&&(i.customWGSL||i.fnBody)){let b=e.createCommandEncoder({label:`signal_1d_encoder_${t}`});this.dispatch1DGenerator(e,b,l,r,n,i,u,o,g,d),e.queue.submit([b.finish()])}else if(i?.type==="audio_extractor"||i?.extractionMode!==void 0){let b=this.getMasterTexture(e,t,p);if(b){let m=i.channel==="beat"||t.endsWith("_beat")?1:i.channel==="bass"||t.endsWith("_bass")?2:i.channel==="energy"||t.endsWith("_energy")?3:0,c=this.getDuration(e,t,p)??(typeof i.durationMs=="number"?i.durationMs/1e3:n),x=e.createCommandEncoder({label:`signal_1d_audio_encoder_${t}`});this.dispatch1DAudioSignal(e,x,l,b,m,r,c,u,o),e.queue.submit([x.finish()])}else{let m=Number(i?.offset??0),c=new Float32Array(u).fill(m);e.queue.writeBuffer(l.buffer,0,c)}}else if(i?.type==="signal_math"){let b=i.signalA?.nodeId??`${t}_a`,m=this.getOrCreate1DBuffer(e,a,b,r,n,i.signalA,u,o,p,g,d),c=i.signalB&&typeof i.signalB=="object"&&i.signalB.type!==void 0,x=c?i.signalB.nodeId??`${t}_b`:`${t}_b_dummy`,M=c?this.getOrCreate1DBuffer(e,a,x,r,n,i.signalB,u,o,p,g,d):this.getDummyBuffer(e),P=L(i),U=e.createCommandEncoder({label:`signal_1d_math_encoder_${t}`});this.dispatch1DMathSignal(e,U,l,m,M,!!c,P,i,r,n,u,o,g,d),e.queue.submit([U.finish()])}else if(i?.type==="gate"||i?.op==="SignalGate"||i?.signalConfig?.type==="gate"||i?.signalConfig?.op==="SignalGate"){let b=i.sourceSignal??i.signalConfig?.sourceSignal??i.signal,m=b?.nodeId??`${t}_in`,c=this.getOrCreate1DBuffer(e,a,m,r,n,b,u,o,p,g,d),x=e.createCommandEncoder({label:`signal_1d_gate_encoder_${t}`});this.dispatch1DGateSignal(e,x,l,c,i,r,n,u,o,g,d),e.queue.submit([x.finish()])}else{let b=Number(i?.offset??0),m=new Float32Array(u).fill(b);e.queue.writeBuffer(l.buffer,0,m)}return l.buffer}getOrCreate2DTextureView(e,a,t,r,n,s,u,o,p,g,d){let i=s;if(s&&!s.customWGSL&&!s.wgsl&&s.fnBody){let c=se(s,t);i={...s,customWGSL:c.wgsl,signalFnName:c.name,fnOutputType:c.outputType,outputType:c.outputType}}let _=this.getDeviceResources(e),S=`${p??"global"}:${t}`,l=_.resources.get(S)??_.resources.get(`global:${t}`),h=_.masterAudioTextures.get(S)??_.masterAudioTextures.get(`global:${t}`)??_.masterAudioTextures.get(`${p??"global"}:${t.replace(/_(beat|bass|energy)$/,"")}`)??_.masterAudioTextures.get(`global:${t.replace(/_(beat|bass|energy)$/,"")}`);if(l?.isExternal&&l.textureView&&!h)return l.textureView;let y=l?.texture?l.texture.width:Math.max(16,u>0?u:256),B=1;if(!l||!l.texture){let c=e.createTexture({size:[y,B,1],format:"rgba16float",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_DST,label:`signal_2d_texture_${t}`});l={...l,type:l?.buffer?"combined":"2d-texture",texture:c,textureView:c.createView(),lastProcessedFrame:-1},_.resources.set(S,l),p&&_.resources.set(`global:${t}`,l)}let v=i?.samples??i?.data?.samples,b=i?this.computeSignalFingerprint(i):"",m=g!==void 0?g:r;if(l.lastProcessedFrame===m&&l.lastFingerprint===b)return l.textureView;if(l.lastFingerprint!==b&&(l.bindGroup=void 0),l.lastProcessedFrame=m,l.lastFingerprint=b,h){let c=0;typeof i?.channel=="number"?c=i.channel:t.endsWith("_beat")?c=1:t.endsWith("_bass")?c=2:t.endsWith("_energy")&&(c=3);let x=e.createCommandEncoder({label:`audio_signal_2d_encoder_${t}`});return this.dispatch2DAudioSignal(e,x,l,h,c,r,n>0?n:h.durationSec,g,d),e.queue.submit([x.finish()]),l.textureView}else if(me(v)&&v.length>0){let c=new Float32Array(y*B*4),x=v.length,M=g!==void 0&&d!==void 0&&d>0?g/d:r;for(let U=0;U<y;U++){let A=y>1?U/(y-1):.5,$=M+(A-.5)*2,G=n>0?Math.min(1,Math.max(0,$/n)):.5,w=Math.min(x-1,Math.max(0,Math.round(G*(x-1)))),F=Number(v[w])||0;for(let T=0;T<B;T++){let R=(T*y+U)*4;c[R]=F,c[R+1]=F,c[R+2]=F,c[R+3]=F}}let P=ie(c);return e.queue.writeTexture({texture:l.texture},P,{bytesPerRow:y*8,rowsPerImage:B},[y,B,1]),l.textureView}else if(i&&(i.type==="signal_math"||i.op==="SignalMath"||i.operation||i.signalConfig?.operation)){let c=e.createCommandEncoder({label:`signal_math_2d_encoder_${t}`});return this.dispatch2DSignalMath(e,c,l,t,i,r,n,y,g,d,p),e.queue.submit([c.finish()]),l.textureView}else if(i&&(i.type==="gate"||i.op==="SignalGate"||i.signalConfig?.type==="gate"||i.signalConfig?.op==="SignalGate")){let c=e.createCommandEncoder({label:`signal_gate_2d_encoder_${t}`});return this.dispatch2DSignalGate(e,c,l,t,i,r,n,y,g,d,p),e.queue.submit([c.finish()]),l.textureView}else if(i&&i.type==="generator"&&(i.customWGSL||i.fnBody)){let c=e.createCommandEncoder({label:`signal_2d_encoder_${t}`});this.dispatch2DGenerator(e,c,l,r,n,i,y,B,g,d),e.queue.submit([c.finish()])}else{let c=Number(i?.offset??0),x=new Float32Array(y*B*4);for(let P=0;P<y*B;P++)x[P*4]=c,x[P*4+1]=c,x[P*4+2]=c,x[P*4+3]=1;let M=ie(x);e.queue.writeTexture({texture:l.texture},M,{bytesPerRow:y*8,rowsPerImage:B},[y,B,1])}return l.textureView}dispatch1DGenerator(e,a,t,r,n,s,u,o,p,g){let d=s.customWGSL??s.wgsl??"",i=s.signalFnName??s.name??"signal_fn",_=s.fnOutputType??s.outputType??"f32",S=this.getDeviceResources(e),l=`1d_${s.nodeId}_${d}`,h=S.pipelineCache.get(l);if(!h){let M=s.fnParams??[],P=[];for(let w of M){let F=w.defaultValue;P.push(F%1===0?`${F.toFixed(1)}f`:`${F}f`)}let U=["t","progress","0.0","0.0","idx","u.numSamples","u.frame","vec4<f32>(progress, 0.5, 0.5, 1.0)","u.t_elapsed","u.duration",...P],A=`${i}(${U.join(", ")})`;(_==="vec2f"||_==="vec3f"||_==="vec4f")&&(A=`${A}.x`);let $=`
276
+ `);case"bounce":{let t=`${a}_bx`,r=`${a}_bo`;return[` let ${t}: f32 = 1.0 - (${e});`,Ue(t,r),` let ${a}: f32 = 1.0 - ${r};`].join(`
277
+ `)}}}function oe(l,e,a,t){if(l==="linear"||l==="smoothstep"||l==="smootherstep"||e==="in")return K(l,a,t);if(e==="out"){let s=`${t}_src`;return[K(l,`1.0 - (${a})`,s),` let ${t}: f32 = 1.0 - ${s};`].join(`
278
+ `)}let r=`${t}_in`,n=`${t}_out`;return[K(l,`(${a}) * 2.0`,r),K(l,`2.0 - (${a}) * 2.0`,n),` let ${t}: f32 = select(1.0 - ${n} * 0.5, ${r} * 0.5, (${a}) < 0.5);`].join(`
279
+ `)}function $e(l){let e=[],a=l.baseEnabled??!0,t=l.fmEnabled??!1;if(a&&t){let s=(l.fmAmplitude??1).toFixed(5),u=(l.fmFrequency??.5).toFixed(5);e.push(" // Frequency Modulation"),e.push(` let modulator = sin(t * ${u} * TAU) * ${s};`),e.push(" let t_mod = t + modulator;")}else e.push(" let t_mod = t;");if(e.push(" // Base Waveform"),!a)e.push(" var val: f32 = 0.0;");else{let s=l.baseType??"sine";s==="noise_smooth"?(e.push(" let noise_t = t_mod * u.frequency + u.phase;"),e.push(" let noise_i = floor(noise_t);"),e.push(" let noise_f = fract(noise_t);"),e.push(" let noise_u = noise_f * noise_f * (3.0 - 2.0 * noise_f);"),e.push(" let n0 = fract(sin(noise_i * 12.9898) * 43758.5453);"),e.push(" let n1 = fract(sin((noise_i + 1.0) * 12.9898) * 43758.5453);"),e.push(" let noise_val = mix(n0, n1, noise_u) * 2.0 - 1.0;")):s==="noise_white"?e.push(" let noise_val = fract(sin(t_mod * 12.9898 + u.phase) * 43758.5453) * 2.0 - 1.0;"):s==="pulse"?(e.push(" let pulse_duty = select(clamp(u.phase, 0.01, 0.99), 0.5, u.phase == 0.0);"),e.push(" let pulse_val = select(-1.0, 1.0, fract(t_mod * u.frequency) < pulse_duty);")):s==="bounce"?e.push(" let bounce_val = abs(sin(t_mod * u.frequency * PI + u.phase));"):s==="staircase"&&e.push(" let stair_val = floor(fract(t_mod * u.frequency + u.phase / TAU) * 8.0) / 7.0 * 2.0 - 1.0;");let u="";switch(s){case"sine":u="u.amplitude * sin(t_mod * u.frequency * TAU + u.phase) + u.offset";break;case"triangle":u="u.amplitude * (2.0 * abs(2.0 * fract(t_mod * u.frequency + u.phase / TAU) - 1.0) - 1.0) + u.offset";break;case"sawtooth":u="u.amplitude * (2.0 * (t_mod * u.frequency + u.phase / TAU - floor(t_mod * u.frequency + u.phase / TAU + 0.5))) + u.offset";break;case"square":u="u.amplitude * sign(sin(t_mod * u.frequency * TAU + u.phase)) + u.offset";break;case"constant":u="u.offset";break;case"noise_smooth":u="u.amplitude * noise_val + u.offset";break;case"noise_white":u="u.amplitude * noise_val + u.offset";break;case"pulse":u="u.amplitude * pulse_val + u.offset";break;case"bounce":u="u.amplitude * bounce_val + u.offset";break;case"staircase":u="u.amplitude * stair_val + u.offset";break;default:u="u.amplitude * sin(t_mod * u.frequency * TAU + u.phase) + u.offset";break}e.push(` var val: f32 = ${u};`)}let r=l.envelopeEnabled??!1,n=l.gateEnabled??!1;if(r){e.push(" // Time Envelope");let s=l.gateStartFrame??0,u=l.gateEndFrame??100;(l.envelopeUseFrame??!0)&&n?e.push(` let progress = select(0.0, clamp((f32(frame) - ${s.toFixed(1)}) / (${u.toFixed(1)} - ${s.toFixed(1)}), 0.0, 1.0), ${u}u > ${s}u);`):e.push(" let progress = select(0.0, clamp(t_elapsed / duration, 0.0, 1.0), duration > 0.0);");let p=l.envelopeFamily??"sine",g=l.envelopeMode??"in_out",d=l.envelopePattern??"ramp_up",i=l.envelopeCycles??2;if(d==="bell"||d==="loop"){if(d==="loop"){let _=Math.max(1,i).toFixed(1);e.push(` let env_loop: f32 = fract(progress * ${_});`),e.push(" let env_folded: f32 = 1.0 - abs(env_loop * 2.0 - 1.0);")}else e.push(" let env_folded: f32 = 1.0 - abs(progress * 2.0 - 1.0);");e.push(oe(p,g,"env_folded","env_eased")),e.push(" let env_factor: f32 = env_eased;")}else e.push(oe(p,g,"progress","env_eased")),e.push(d==="ramp_up"?" let env_factor: f32 = env_eased;":" let env_factor: f32 = 1.0 - env_eased;");e.push(" val = mix(u.offset - u.amplitude, val, env_factor);")}if(n){let s=l.gateStartFrame??0,u=l.gateEndFrame??100,o=l.gateIdleValue??0;e.push(" // Time Gate"),e.push(` if (frame < ${s}u || frame > ${u}u) {`),e.push(` val = ${o.toFixed(5)};`),e.push(" }")}return e.push(""),e.push(" return val;"),e.join(`
280
+ `)}var le={fade_in:{family:"linear",mode:"in",pattern:"ramp_up"},fade_out:{family:"linear",mode:"in",pattern:"ramp_down"},ping_pong:{family:"linear",mode:"in",pattern:"bell"},expo_decay:{family:"expo",mode:"in",pattern:"ramp_down"},smooth_in:{family:"smoothstep",mode:"in",pattern:"ramp_up"},smooth_out:{family:"smoothstep",mode:"in",pattern:"ramp_down"},sine_bell:{family:"sine",mode:"in",pattern:"bell"},spring:{family:"elastic",mode:"out",pattern:"ramp_up"}};function Ge(l){return l&&l in le?le[l]:{family:"sine",mode:"in_out",pattern:"ramp_up"}}function Me(l,e){let a=l.match(/\/\* SIGNAL_BUILDER_STATE:\s*([\s\S]*?)\s*\*\//);if(a)try{let t=JSON.parse(a[1]),r=!!t.envelope?.family,n=r?{family:t.envelope.family,mode:t.envelope.mode??"in",pattern:t.envelope.pattern??"ramp_up"}:Ge(t.envelope?.type);return{baseEnabled:t.base?.enabled??!0,baseType:t.base?.type??"sine",fmEnabled:t.fm?.enabled??!1,fmAmplitude:e?.fmAmplitude??t.fm?.amplitude??1,fmFrequency:e?.fmFrequency??t.fm?.frequency??.5,envelopeEnabled:t.envelope?.enabled??!1,envelopeFamily:n.family,envelopeMode:n.mode,envelopePattern:n.pattern,envelopeCycles:r?t.envelope?.cycles??2:2,envelopeUseFrame:e?.envelopeUseFrame??t.envelope?.useFrame??!0,gateEnabled:e?.gateEnabled??t.gate?.enabled??!1,gateStartFrame:e?.gateStartFrame??t.gate?.startFrame??0,gateEndFrame:e?.gateEndFrame??t.gate?.endFrame??100,gateIdleValue:e?.gateIdleValue??t.gate?.idleValue??0}}catch{}return{}}function Ae(l){return`signal_${l.replace(/[^a-zA-Z0-9]/g,"_")}`}function Fe(l,e){if(!/\breturn\b/.test(l))return{valid:!1,validationWarning:"Function body has no return statement."};let t=/\breturn\s+vec(\d)f?\(/.exec(l);if(t){let r=parseInt(t[1],10);if(e==="f32")return{valid:!1,validationWarning:`Returning vec${r}f but output type is f32.`}}return{valid:!0}}O();O();function Te(l){let e=new Float32Array([l]),a=new Uint32Array(e.buffer)[0],t=a>>>16&32768,r=(a>>>23&255)-127+15,n=a&8388607;return r<=0?r<-10?t:(n=(n|8388608)>>1-r,t|n+4096>>13):r>=31?t|31744:t|r<<10|n+4096>>13}function ne(l){if(typeof Float16Array<"u")return new Uint16Array(new Float16Array(l).buffer);let e=l.length,a=new Uint16Array(e);for(let t=0;t<e;t++)a[t]=Te(l[t]);return a}function fe(l){return Array.isArray(l)||ArrayBuffer.isView(l)&&!(l instanceof DataView)}var se=class{deviceCache=new WeakMap;statsMap=new Map;statsListeners=new Map;setStats(e,a){this.statsMap.set(e,a);let t=this.statsListeners.get(e);if(t)for(let r of t)r(a)}getStats(e){return this.statsMap.get(e)}onStats(e,a){let t=this.statsListeners.get(e);t||(t=new Set,this.statsListeners.set(e,t)),t.add(a);let r=this.statsMap.get(e);return r&&a(r),()=>{t?.delete(a),t?.size===0&&this.statsListeners.delete(e)}}computeSignalFingerprint(e,a=0,t=new Set){if(e==null)return"";if(typeof e=="number")return`num:${e}`;if(typeof e=="string")return`str:${e}`;if(typeof e=="boolean")return`bool:${e}`;if(typeof e!="object")return"";if(t.has(e)||a>8){let d=e;return`ref:${d.nodeId||d.virtualMedia?.operation?.nodeId||"seen"}`}t.add(e);let r=e,n=r.samples??r.data?.samples,s=(typeof r.nodeId=="string"?r.nodeId:void 0)||(typeof r.virtualMedia?.operation?.nodeId=="string"?r.virtualMedia.operation?.nodeId:void 0),u;a>0&&s&&(u=this.getStats(s));let o=r.signalConfig,p=r.operation??o?.operation??r.config?.operation??r.data?.operation,g={type:r.type,op:r.op,operation:p,bValue:r.bValue??o?.bValue??r.config?.bValue??r.data?.bValue,value:r.value,inMin:r.inMin??o?.inMin,inMax:r.inMax??o?.inMax,outMin:r.outMin??o?.outMin,outMax:r.outMax??o?.outMax,clampMin:r.clampMin??o?.clampMin,clampMax:r.clampMax??o?.clampMax,exponent:r.exponent??o?.exponent,edge0:r.edge0??o?.edge0,edge1:r.edge1??o?.edge1,customWGSL:r.customWGSL||r.fnBody||r.wgsl||o?.customWGSL||o?.fnBody,amplitude:r.amplitude,frequency:r.frequency,phase:r.phase,offset:r.offset,fnParams:r.fnParams,sourceUrl:r.sourceUrl??r.url,extractionMode:r.extractionMode,channel:r.channel,nodeId:s,samplesLen:n?.length,sample0:n?.[0],sampleMid:n&&n.length>1?n[Math.floor(n.length/2)]:void 0,sampleLast:n&&n.length>2?n[n.length-1]:void 0,upstreamStats:u?`${u.min}:${u.max}`:void 0,sigA:r.signalA?this.computeSignalFingerprint(r.signalA,a+1,t):void 0,sigB:r.signalB?this.computeSignalFingerprint(r.signalB,a+1,t):void 0};return JSON.stringify(g)}getDeviceResources(e){let a=this.deviceCache.get(e);return a||(a={resources:new Map,masterAudioTextures:new Map,dummy1x1TextureView:null,dummyBuffer:null,pipelineCache:new Map,defaultSampler:null},this.deviceCache.set(e,a)),a}getSampler(e){let a=this.getDeviceResources(e);return a.defaultSampler||(a.defaultSampler=e.createSampler({magFilter:"linear",minFilter:"linear"})),a.defaultSampler}clear(e,a){if(!a)return;let t=this.deviceCache.get(a);if(!t)return;let r=`${e}:`;for(let[n,s]of t.resources.entries())n.startsWith(r)&&(s.buffer?.destroy(),s.texture?.destroy(),s.uniformBuffer?.destroy(),t.resources.delete(n));for(let[n,s]of t.masterAudioTextures.entries())n.startsWith(r)&&(s.texture.destroy(),t.masterAudioTextures.delete(n))}getDummy1x1TextureView(e){let a=this.getDeviceResources(e);if(a.dummy1x1TextureView)return a.dummy1x1TextureView;let t=e.createTexture({size:[1,1,1],format:"rgba16float",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,label:"dummy_1x1_signal_texture"});return e.queue.writeTexture({texture:t},new Uint16Array([0,0,0,15360]),{bytesPerRow:8,rowsPerImage:1},[1,1,1]),a.dummy1x1TextureView=t.createView(),a.dummy1x1TextureView}getDummyBuffer(e){let a=this.getDeviceResources(e);return a.dummyBuffer||(a.dummyBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,label:"dummy_signal_buffer"})),a.dummyBuffer}registerBuffer(e,a,t,r){let n=this.getDeviceResources(e),s=`${r??"global"}:${a}`,u=n.resources.get(s)??n.resources.get(`global:${a}`),o={...u,type:u?.texture?"combined":"1d-buffer",buffer:t,lastProcessedFrame:-1,isExternal:!0};n.resources.set(s,o),r&&n.resources.set(`global:${a}`,o)}registerTexture(e,a,t,r,n,s){let u=this.getDeviceResources(e),o=`${n??"global"}:${a}`,p=u.resources.get(o)??u.resources.get(`global:${a}`),g={...p,type:p?.buffer?"combined":"2d-texture",texture:t,textureView:r,lastProcessedFrame:-1,isExternal:!0,duration:s!==void 0?s:p?.duration};u.resources.set(o,g),n&&u.resources.set(`global:${a}`,g)}getMasterTextureView(e,a,t){let r=this.getDeviceResources(e),n=`${t??"global"}:${a}`,s=a.replace(/_(beat|bass|energy)$/,"");return r.masterAudioTextures.get(n)?.textureView??r.masterAudioTextures.get(`global:${a}`)?.textureView??r.masterAudioTextures.get(`${t??"global"}:${s}`)?.textureView??r.masterAudioTextures.get(`global:${s}`)?.textureView??r.resources.get(n)?.textureView??r.resources.get(`global:${a}`)?.textureView??r.resources.get(`${t??"global"}:${s}`)?.textureView??r.resources.get(`global:${s}`)?.textureView}getMasterTexture(e,a,t){let r=this.getDeviceResources(e),n=`${t??"global"}:${a}`,s=a.replace(/_(beat|bass|energy)$/,"");return r.masterAudioTextures.get(n)?.texture??r.masterAudioTextures.get(`global:${a}`)?.texture??r.masterAudioTextures.get(`${t??"global"}:${s}`)?.texture??r.masterAudioTextures.get(`global:${s}`)?.texture??r.resources.get(n)?.texture??r.resources.get(`global:${a}`)?.texture??r.resources.get(`${t??"global"}:${s}`)?.texture??r.resources.get(`global:${s}`)?.texture}channelSamplesMap=new Map;setChannelSamples(e,a,t){let r=`${t??"global"}:${e}`,n=e.replace(/_(beat|bass|energy)$/,"");this.channelSamplesMap.set(r,a),this.channelSamplesMap.set(`global:${e}`,a),n!==e&&(this.channelSamplesMap.set(`${t??"global"}:${n}`,a),this.channelSamplesMap.set(`global:${n}`,a))}getChannelSamples(e,a="primary",t){let r=`${t??"global"}:${e}`,n=e.replace(/_(beat|bass|energy)$/,""),s=this.channelSamplesMap.get(r)??this.channelSamplesMap.get(`global:${e}`)??this.channelSamplesMap.get(`${t??"global"}:${n}`)??this.channelSamplesMap.get(`global:${n}`);return s?s[a]??s.primary:void 0}getDuration(e,a,t){let r=this.getDeviceResources(e),n=`${t??"global"}:${a}`,s=r.resources.get(n)??r.resources.get(`global:${a}`);if(s?.duration!==void 0)return s.duration;let u=a.replace(/_(beat|bass|energy)$/,"");return(r.masterAudioTextures.get(n)??r.masterAudioTextures.get(`global:${a}`)??r.masterAudioTextures.get(`${t??"global"}:${u}`)??r.masterAudioTextures.get(`global:${u}`))?.durationSec}extractionPromises=new Map;has(e,a,t){let r=this.getDeviceResources(e),n=`${t??"global"}:${a}`,s=a.replace(/_(beat|bass|energy)$/,"");return r.resources.has(n)||r.resources.has(`global:${a}`)||r.masterAudioTextures.has(n)||r.masterAudioTextures.has(`global:${a}`)||r.masterAudioTextures.has(`${t??"global"}:${s}`)||r.masterAudioTextures.has(`global:${s}`)}async ensureAudioSourcesExtracted(e,a,t=24,r,n=new Set){if(!a||typeof a!="object"||n.has(a))return;n.add(a);let s=a;if(s.signalA&&await this.ensureAudioSourcesExtracted(e,s.signalA,t,r,n),s.signalB&&typeof s.signalB=="object"&&await this.ensureAudioSourcesExtracted(e,s.signalB,t,r,n),!!(s.extractionMode||s.op==="AudioSignalExtractor"||s.virtualMedia?.operation?.op==="AudioSignalExtractor")){let o=s.sourceUrl||s.virtualMedia?.operation?.sourceUrl;if(!o&&s.virtualMedia){let g=s.virtualMedia;o=g.operation?.sourceUrl||g.operation?.url||g.children?.[0]?.operation?.sourceUrl||g.children?.[0]?.operation?.url}let p=s.nodeId||s.virtualMedia?.operation?.nodeId;o&&p&&await this.extractFromAudioSource(e,o,s,p,t,r)}}async extractFromAudioSource(e,a,t={},r,n=24,s){let u=this.getDeviceResources(e),o=`${s??"global"}:${r}`,p=JSON.stringify({sourceUrl:a,mode:t.extractionMode,sens:t.sensitivity,att:t.attackMs,rel:t.releaseMs,smooth:t.smoothing,curve:t.curve,beatThresh:t.beatThreshold,noiseFloor:t.noiseFloorDb,dynRange:t.dynamicRangeDb,beatDecay:t.beatDecayMs,fps:n});if((u.masterAudioTextures.get(o)??u.masterAudioTextures.get(`global:${r}`))?.lastFingerprint===p)return;if(this.extractionPromises.has(o)){await this.extractionPromises.get(o);return}let d=(async()=>{try{let i=[],_=44100;if(typeof window<"u"){let b=window.AudioContext||window.webkitAudioContext;if(b){let m=a;m.startsWith("file://")&&(m=m.replace(/^file:\/\//,"")),m.startsWith("/")&&!m.startsWith("/@fs/")&&!m.startsWith("/api/")&&(m=`/@fs${m}`);let c=new b;try{let x=await fetch(m);if(!x.ok)throw new Error(`HTTP ${x.status}`);let M=await x.arrayBuffer(),P=await c.decodeAudioData(M);_=P.sampleRate;for(let U=0;U<P.numberOfChannels;U++)i.push(new Float32Array(P.getChannelData(U)))}finally{c.close()}}}else try{let b=await import("./shims/fs.mjs"),m=a.replace(/^file:\/\//,"");if(b.existsSync(m)){let c=b.readFileSync(m),x=c.readUInt16LE(22);_=c.readUInt32LE(24);let M=c.readUInt16LE(34),P=12;for(;P<c.length-8;){let $=c.toString("ascii",P,P+4),G=c.readUInt32LE(P+4);if($==="data"){P+=8;break}P+=8+G}let U=Math.max(1,Math.floor(M/8)),A=Math.floor((c.length-P)/(x*U));i=[];for(let $=0;$<x;$++)i.push(new Float32Array(A));if(M===16)for(let $=0;$<A;$++)for(let G=0;G<x;G++){let w=P+($*x+G)*2;w+2<=c.length&&(i[G][$]=c.readInt16LE(w)/32768)}else if(M===32)for(let $=0;$<A;$++)for(let G=0;G<x;G++){let w=P+($*x+G)*4;w+4<=c.length&&(i[G][$]=c.readFloatLE(w))}}}catch{}if(i.length===0||i[0].length===0)return;let f=i[0].length/_,h=await Q.extractFeatures(e,i,_,n,t,512),y=new Set;r&&y.add(r);let B=t?.nodeId;B&&y.add(B);for(let b of y){let m=b.replace(/_(beat|bass|energy)$/,""),c={texture:h.texture,textureView:h.textureView,durationSec:f,stats:h.stats.primary,lastFingerprint:p};u.masterAudioTextures.set(`${s??"global"}:${m}`,c),u.masterAudioTextures.set(`global:${m}`,c),u.masterAudioTextures.set(`${s??"global"}:${m}_beat`,{...c,stats:h.stats.beat}),u.masterAudioTextures.set(`global:${m}_beat`,{...c,stats:h.stats.beat}),u.masterAudioTextures.set(`${s??"global"}:${m}_bass`,{...c,stats:h.stats.bass}),u.masterAudioTextures.set(`global:${m}_bass`,{...c,stats:h.stats.bass}),u.masterAudioTextures.set(`${s??"global"}:${m}_energy`,{...c,stats:h.stats.energy}),u.masterAudioTextures.set(`global:${m}_energy`,{...c,stats:h.stats.energy}),b!==m&&(u.masterAudioTextures.set(`${s??"global"}:${b}`,c),u.masterAudioTextures.set(`global:${b}`,c)),this.registerBuffer(e,m,h.primaryBuffer,s),this.setStats(m,h.stats.primary),this.registerBuffer(e,`${m}_beat`,h.beatBuffer,s),this.setStats(`${m}_beat`,h.stats.beat),this.registerBuffer(e,`${m}_bass`,h.bassBuffer,s),this.setStats(`${m}_bass`,h.stats.bass),this.registerBuffer(e,`${m}_energy`,h.energyBuffer,s),this.setStats(`${m}_energy`,h.stats.energy),h.channelSamples&&this.setChannelSamples(m,h.channelSamples,s)}let v=u.resources.get(o)??u.resources.get(`global:${r}`);v&&(v.lastFingerprint=p)}catch(i){console.warn(`[SignalRegistry] Failed to extract audio signal from ${a}:`,i)}finally{this.extractionPromises.delete(o)}})();this.extractionPromises.set(o,d),await d}getOrCreate1DBuffer(e,a,t,r,n,s,u,o,p,g,d){let i=s;if(s&&!s.customWGSL&&!s.wgsl&&s.fnBody){let b=ae(s,t);i={...s,customWGSL:b.wgsl,signalFnName:b.name,fnOutputType:b.outputType,outputType:b.outputType}}let _=this.getDeviceResources(e),S=`${p??"global"}:${t}`,f=_.resources.get(S)??_.resources.get(`global:${t}`),h=u*4;if(f?.isExternal&&f.buffer&&f.buffer.size===h)return f.buffer;if(!f||!f.buffer||f.buffer.size<h){f?.buffer&&!f.isExternal&&f.buffer.destroy();let b=e.createBuffer({size:h,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,label:`signal_1d_buffer_${t}`});f={...f,type:f?.texture?"combined":"1d-buffer",buffer:b,lastProcessedFrame:-1},_.resources.set(S,f)}let y=i?.samples??i?.data?.samples,B=i?this.computeSignalFingerprint(i):"",v=g!==void 0?g:r;if(f.lastProcessedFrame===v&&f.lastFingerprint===B)return f.buffer;if(f.lastFingerprint!==B&&(f.bindGroup=void 0),f.lastProcessedFrame=v,f.lastFingerprint=B,fe(y)&&y.length>0){let b=new Float32Array(u),m=y.length,c=Number(i?.fps)||24;for(let x=0;x<u;x++){let M=r+x/o,P=Math.min(m-1,Math.max(0,Math.round(M*c)));b[x]=Number(y[P])||0}e.queue.writeBuffer(f.buffer,0,b)}else if(i?.type==="generator"&&(i.customWGSL||i.fnBody)){let b=e.createCommandEncoder({label:`signal_1d_encoder_${t}`});this.dispatch1DGenerator(e,b,f,r,n,i,u,o,g,d),e.queue.submit([b.finish()])}else if(i?.type==="audio_extractor"||i?.extractionMode!==void 0){let b=this.getMasterTexture(e,t,p);if(b){let m=i.channel==="beat"||t.endsWith("_beat")?1:i.channel==="bass"||t.endsWith("_bass")?2:i.channel==="energy"||t.endsWith("_energy")?3:0,c=this.getDuration(e,t,p)??(typeof i.durationMs=="number"?i.durationMs/1e3:n),x=e.createCommandEncoder({label:`signal_1d_audio_encoder_${t}`});this.dispatch1DAudioSignal(e,x,f,b,m,r,c,u,o),e.queue.submit([x.finish()])}else{let m=Number(i?.offset??0),c=new Float32Array(u).fill(m);e.queue.writeBuffer(f.buffer,0,c)}}else if(i?.type==="signal_math"){let b=i.signalA?.nodeId??`${t}_a`,m=this.getOrCreate1DBuffer(e,a,b,r,n,i.signalA,u,o,p,g,d),c=i.signalB&&typeof i.signalB=="object"&&i.signalB.type!==void 0,x=c?i.signalB.nodeId??`${t}_b`:`${t}_b_dummy`,M=c?this.getOrCreate1DBuffer(e,a,x,r,n,i.signalB,u,o,p,g,d):this.getDummyBuffer(e),P=L(i),U=e.createCommandEncoder({label:`signal_1d_math_encoder_${t}`});this.dispatch1DMathSignal(e,U,f,m,M,!!c,P,i,r,n,u,o,g,d),e.queue.submit([U.finish()])}else if(i?.type==="gate"||i?.op==="SignalGate"||i?.signalConfig?.type==="gate"||i?.signalConfig?.op==="SignalGate"){let b=i.sourceSignal??i.signalConfig?.sourceSignal??i.signal,m=b?.nodeId??`${t}_in`,c=this.getOrCreate1DBuffer(e,a,m,r,n,b,u,o,p,g,d),x=e.createCommandEncoder({label:`signal_1d_gate_encoder_${t}`});this.dispatch1DGateSignal(e,x,f,c,i,r,n,u,o,g,d),e.queue.submit([x.finish()])}else{let b=Number(i?.offset??0),m=new Float32Array(u).fill(b);e.queue.writeBuffer(f.buffer,0,m)}return f.buffer}getOrCreate2DTextureView(e,a,t,r,n,s,u,o,p,g,d){let i=s;if(s&&!s.customWGSL&&!s.wgsl&&s.fnBody){let c=ae(s,t);i={...s,customWGSL:c.wgsl,signalFnName:c.name,fnOutputType:c.outputType,outputType:c.outputType}}let _=this.getDeviceResources(e),S=`${p??"global"}:${t}`,f=_.resources.get(S)??_.resources.get(`global:${t}`),h=_.masterAudioTextures.get(S)??_.masterAudioTextures.get(`global:${t}`)??_.masterAudioTextures.get(`${p??"global"}:${t.replace(/_(beat|bass|energy)$/,"")}`)??_.masterAudioTextures.get(`global:${t.replace(/_(beat|bass|energy)$/,"")}`);if(f?.isExternal&&f.textureView&&!h)return f.textureView;let y=f?.texture?f.texture.width:Math.max(16,u>0?u:256),B=1;if(!f||!f.texture){let c=e.createTexture({size:[y,B,1],format:"rgba16float",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_DST,label:`signal_2d_texture_${t}`});f={...f,type:f?.buffer?"combined":"2d-texture",texture:c,textureView:c.createView(),lastProcessedFrame:-1},_.resources.set(S,f),p&&_.resources.set(`global:${t}`,f)}let v=i?.samples??i?.data?.samples,b=i?this.computeSignalFingerprint(i):"",m=g!==void 0?g:r;if(f.lastProcessedFrame===m&&f.lastFingerprint===b)return f.textureView;if(f.lastFingerprint!==b&&(f.bindGroup=void 0),f.lastProcessedFrame=m,f.lastFingerprint=b,h){let c=0;typeof i?.channel=="number"?c=i.channel:t.endsWith("_beat")?c=1:t.endsWith("_bass")?c=2:t.endsWith("_energy")&&(c=3);let x=e.createCommandEncoder({label:`audio_signal_2d_encoder_${t}`});return this.dispatch2DAudioSignal(e,x,f,h,c,r,n>0?n:h.durationSec,g,d),e.queue.submit([x.finish()]),f.textureView}else if(fe(v)&&v.length>0){let c=new Float32Array(y*B*4),x=v.length,M=g!==void 0&&d!==void 0&&d>0?g/d:r;for(let U=0;U<y;U++){let A=y>1?U/(y-1):.5,$=M+(A-.5)*2,G=n>0?Math.min(1,Math.max(0,$/n)):.5,w=Math.min(x-1,Math.max(0,Math.round(G*(x-1)))),F=Number(v[w])||0;for(let T=0;T<B;T++){let R=(T*y+U)*4;c[R]=F,c[R+1]=F,c[R+2]=F,c[R+3]=F}}let P=ne(c);return e.queue.writeTexture({texture:f.texture},P,{bytesPerRow:y*8,rowsPerImage:B},[y,B,1]),f.textureView}else if(i&&(i.type==="signal_math"||i.op==="SignalMath"||i.operation||i.signalConfig?.operation)){let c=e.createCommandEncoder({label:`signal_math_2d_encoder_${t}`});return this.dispatch2DSignalMath(e,c,f,t,i,r,n,y,g,d,p),e.queue.submit([c.finish()]),f.textureView}else if(i&&(i.type==="gate"||i.op==="SignalGate"||i.signalConfig?.type==="gate"||i.signalConfig?.op==="SignalGate")){let c=e.createCommandEncoder({label:`signal_gate_2d_encoder_${t}`});return this.dispatch2DSignalGate(e,c,f,t,i,r,n,y,g,d,p),e.queue.submit([c.finish()]),f.textureView}else if(i&&i.type==="generator"&&(i.customWGSL||i.fnBody)){let c=e.createCommandEncoder({label:`signal_2d_encoder_${t}`});this.dispatch2DGenerator(e,c,f,r,n,i,y,B,g,d),e.queue.submit([c.finish()])}else{let c=Number(i?.offset??0),x=new Float32Array(y*B*4);for(let P=0;P<y*B;P++)x[P*4]=c,x[P*4+1]=c,x[P*4+2]=c,x[P*4+3]=1;let M=ne(x);e.queue.writeTexture({texture:f.texture},M,{bytesPerRow:y*8,rowsPerImage:B},[y,B,1])}return f.textureView}dispatch1DGenerator(e,a,t,r,n,s,u,o,p,g){let d=s.customWGSL??s.wgsl??"",i=s.signalFnName??s.name??"signal_fn",_=s.fnOutputType??s.outputType??"f32",S=this.getDeviceResources(e),f=`1d_${s.nodeId}_${d}`,h=S.pipelineCache.get(f);if(!h){let M=s.fnParams??[],P=[];for(let w of M){let F=w.defaultValue;P.push(F%1===0?`${F.toFixed(1)}f`:`${F}f`)}let U=["t","progress","0.0","0.0","idx","u.numSamples","u.frame","vec4<f32>(progress, 0.5, 0.5, 1.0)","u.t_elapsed","u.duration",...P],A=`${i}(${U.join(", ")})`;(_==="vec2f"||_==="vec3f"||_==="vec4f")&&(A=`${A}.x`);let $=`
281
281
  struct GeneratorUniforms {
282
282
  sampleRate : f32,
283
283
  baseTime : f32,
@@ -310,7 +310,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
310
310
  let val = ${A};
311
311
  outSignal[idx] = val;
312
312
  }
313
- `,G=e.createShaderModule({label:`signal_1d_generator_${s.nodeId}.wgsl`,code:$});h=e.createComputePipeline({label:`Signal1DComputePipeline_${s.nodeId}`,layout:"auto",compute:{module:G,entryPoint:"main"}}),S.pipelineCache.set(l,h)}let y=p!==void 0&&g!==void 0&&g>0?p/g:r,B=p!==void 0?p:0,v=new ArrayBuffer(48),b=new Float32Array(v),m=new Uint32Array(v);b[0]=o,b[1]=y,m[2]=B,m[3]=u,b[4]=s.amplitude??1,b[5]=s.frequency??1,b[6]=s.phase??0,b[7]=s.offset??0,b[8]=r,b[9]=n,b[10]=0,b[11]=0,t.uniformBuffer||(t.uniformBuffer=e.createBuffer({size:v.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:`signal_1d_uniform_buffer_${s.nodeId}`})),e.queue.writeBuffer(t.uniformBuffer,0,v),t.bindGroup||(t.bindGroup=e.createBindGroup({layout:h.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}},{binding:1,resource:{buffer:t.buffer}}]}));let c=a.beginComputePass({label:`signal_1d_compute_pass_${s.nodeId}`});c.setPipeline(h),c.setBindGroup(0,t.bindGroup);let x=Math.ceil(u/64);c.dispatchWorkgroups(x),c.end()}dispatch1DAudioSignal(e,a,t,r,n,s,u,o,p){let g=this.getDeviceResources(e),d="audio_signal_1d",i=g.pipelineCache.get(d),_=this.getSampler(e);if(!i){let m=e.createShaderModule({code:`
313
+ `,G=e.createShaderModule({label:`signal_1d_generator_${s.nodeId}.wgsl`,code:$});h=e.createComputePipeline({label:`Signal1DComputePipeline_${s.nodeId}`,layout:"auto",compute:{module:G,entryPoint:"main"}}),S.pipelineCache.set(f,h)}let y=p!==void 0&&g!==void 0&&g>0?p/g:r,B=p!==void 0?p:0,v=new ArrayBuffer(48),b=new Float32Array(v),m=new Uint32Array(v);b[0]=o,b[1]=y,m[2]=B,m[3]=u,b[4]=s.amplitude??1,b[5]=s.frequency??1,b[6]=s.phase??0,b[7]=s.offset??0,b[8]=r,b[9]=n,b[10]=0,b[11]=0,t.uniformBuffer||(t.uniformBuffer=e.createBuffer({size:v.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:`signal_1d_uniform_buffer_${s.nodeId}`})),e.queue.writeBuffer(t.uniformBuffer,0,v),t.bindGroup||(t.bindGroup=e.createBindGroup({layout:h.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}},{binding:1,resource:{buffer:t.buffer}}]}));let c=a.beginComputePass({label:`signal_1d_compute_pass_${s.nodeId}`});c.setPipeline(h),c.setBindGroup(0,t.bindGroup);let x=Math.ceil(u/64);c.dispatchWorkgroups(x),c.end()}dispatch1DAudioSignal(e,a,t,r,n,s,u,o,p){let g=this.getDeviceResources(e),d="audio_signal_1d",i=g.pipelineCache.get(d),_=this.getSampler(e);if(!i){let m=e.createShaderModule({code:`
314
314
  struct Audio1DUniforms {
315
315
  sampleRate : f32,
316
316
  baseTime : f32,
@@ -350,7 +350,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
350
350
 
351
351
  outSignal[idx] = val;
352
352
  }
353
- `,label:"dispatch1DAudioSignal_module"});i=e.createComputePipeline({label:"dispatch1DAudioSignal_pipeline",layout:"auto",compute:{module:m,entryPoint:"main"}}),g.pipelineCache.set(d,i)}let S=new ArrayBuffer(32),l=new Float32Array(S),h=new Uint32Array(S);l[0]=p,l[1]=s,l[2]=u>0?u:1,h[3]=o,h[4]=n;let y=e.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_1d_uniform_buffer"});e.queue.writeBuffer(y,0,S);let B=e.createBindGroup({layout:i.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:y}},{binding:1,resource:r.createView()},{binding:2,resource:_},{binding:3,resource:{buffer:t.buffer}}]}),v=a.beginComputePass({label:"audio_1d_compute_pass"});v.setPipeline(i),v.setBindGroup(0,B),v.dispatchWorkgroups(Math.ceil(o/64)),v.end()}dispatch1DMathSignal(e,a,t,r,n,s,u,o,p,g,d,i,_,S){let l=this.getDeviceResources(e),h=o.operation??"add",y=o.customWGSL??o.wgsl??"",B=`1d_math_${h}_${s}_${y}`,v=l.pipelineCache.get(B);if(!v){let{evalExpr:U,extraFn:A}=ge(h,y),$=`
353
+ `,label:"dispatch1DAudioSignal_module"});i=e.createComputePipeline({label:"dispatch1DAudioSignal_pipeline",layout:"auto",compute:{module:m,entryPoint:"main"}}),g.pipelineCache.set(d,i)}let S=new ArrayBuffer(32),f=new Float32Array(S),h=new Uint32Array(S);f[0]=p,f[1]=s,f[2]=u>0?u:1,h[3]=o,h[4]=n;let y=e.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_1d_uniform_buffer"});e.queue.writeBuffer(y,0,S);let B=e.createBindGroup({layout:i.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:y}},{binding:1,resource:r.createView()},{binding:2,resource:_},{binding:3,resource:{buffer:t.buffer}}]}),v=a.beginComputePass({label:"audio_1d_compute_pass"});v.setPipeline(i),v.setBindGroup(0,B),v.dispatchWorkgroups(Math.ceil(o/64)),v.end()}dispatch1DMathSignal(e,a,t,r,n,s,u,o,p,g,d,i,_,S){let f=this.getDeviceResources(e),h=o.operation??"add",y=o.customWGSL??o.wgsl??"",B=`1d_math_${h}_${s}_${y}`,v=f.pipelineCache.get(B);if(!v){let{evalExpr:U,extraFn:A}=ce(h,y),$=`
354
354
  struct MathUniforms {
355
355
  bValue : f32,
356
356
  inMin : f32,
@@ -416,7 +416,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
416
416
  let val = ${U};
417
417
  outSignal[idx] = val;
418
418
  }
419
- `,G=e.createShaderModule({label:`signal_1d_math_${h}.wgsl`,code:$});v=e.createComputePipeline({label:`Signal1DMathPipeline_${h}`,layout:"auto",compute:{module:G,entryPoint:"main"}}),l.pipelineCache.set(B,v)}let b=new ArrayBuffer(Math.max(80,256)),m=new Float32Array(b),c=new Uint32Array(b);m[0]=u,m[1]=Number(o.inMin)||0,m[2]=Number(o.inMax)||1,m[3]=Number(o.outMin)||0,m[4]=Number(o.outMax)||1,m[5]=Number(o.clampMin)||0,m[6]=Number(o.clampMax)||1,m[7]=Number(o.exponent)||2,m[8]=Number(o.edge0)||0,m[9]=Number(o.edge1)||1,m[10]=Number(o.aMin??o.inMin)||0,m[11]=Number(o.aMax??o.inMax)||1,m[12]=p,m[13]=g>0?g:1,m[14]=i,c[15]=d,m[16]=s?1:0,c[17]=_!==void 0?Math.max(0,Math.floor(_)):0;let x=e.createBuffer({size:Math.max(80,256),usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"math_1d_uniform_buffer"});e.queue.writeBuffer(x,0,b);let M=e.createBindGroup({layout:v.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:x}},{binding:1,resource:{buffer:r}},{binding:2,resource:{buffer:n}},{binding:3,resource:{buffer:t.buffer}}]}),P=a.beginComputePass({label:"math_1d_compute_pass"});P.setPipeline(v),P.setBindGroup(0,M),P.dispatchWorkgroups(Math.ceil(d/64)),P.end()}dispatch2DGenerator(e,a,t,r,n,s,u,o,p,g){let d=s.customWGSL??s.wgsl??"",i=s.signalFnName??s.name??"signal_fn",_=this.getDeviceResources(e),S=`2d_${s.nodeId}_${d}`,l=_.pipelineCache.get(S);if(!l){let c=s.fnParams??[],x=[];for(let F of c){let T=F.defaultValue;x.push(T%1===0?`${T.toFixed(1)}f`:`${T}f`)}let U=["u.baseTime + (in.uv.x - 0.5) * 2.0","in.uv.x","1.0 - in.uv.y","0.0","0u","1u","u.frame","vec4<f32>(in.uv.x, 1.0 - in.uv.y, 0.5, 1.0)","u.t_elapsed + (in.uv.x - 0.5) * 2.0","u.duration",...x],$=`let val = f32(${`${i}(${U.join(", ")})`}); return vec4<f32>(val, val, val, val);`,G=`
419
+ `,G=e.createShaderModule({label:`signal_1d_math_${h}.wgsl`,code:$});v=e.createComputePipeline({label:`Signal1DMathPipeline_${h}`,layout:"auto",compute:{module:G,entryPoint:"main"}}),f.pipelineCache.set(B,v)}let b=new ArrayBuffer(Math.max(80,256)),m=new Float32Array(b),c=new Uint32Array(b);m[0]=u,m[1]=Number(o.inMin)||0,m[2]=Number(o.inMax)||1,m[3]=Number(o.outMin)||0,m[4]=Number(o.outMax)||1,m[5]=Number(o.clampMin)||0,m[6]=Number(o.clampMax)||1,m[7]=Number(o.exponent)||2,m[8]=Number(o.edge0)||0,m[9]=Number(o.edge1)||1,m[10]=Number(o.aMin??o.inMin)||0,m[11]=Number(o.aMax??o.inMax)||1,m[12]=p,m[13]=g>0?g:1,m[14]=i,c[15]=d,m[16]=s?1:0,c[17]=_!==void 0?Math.max(0,Math.floor(_)):0;let x=e.createBuffer({size:Math.max(80,256),usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"math_1d_uniform_buffer"});e.queue.writeBuffer(x,0,b);let M=e.createBindGroup({layout:v.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:x}},{binding:1,resource:{buffer:r}},{binding:2,resource:{buffer:n}},{binding:3,resource:{buffer:t.buffer}}]}),P=a.beginComputePass({label:"math_1d_compute_pass"});P.setPipeline(v),P.setBindGroup(0,M),P.dispatchWorkgroups(Math.ceil(d/64)),P.end()}dispatch2DGenerator(e,a,t,r,n,s,u,o,p,g){let d=s.customWGSL??s.wgsl??"",i=s.signalFnName??s.name??"signal_fn",_=this.getDeviceResources(e),S=`2d_${s.nodeId}_${d}`,f=_.pipelineCache.get(S);if(!f){let c=s.fnParams??[],x=[];for(let F of c){let T=F.defaultValue;x.push(T%1===0?`${T.toFixed(1)}f`:`${T}f`)}let U=["u.baseTime + (in.uv.x - 0.5) * 2.0","in.uv.x","1.0 - in.uv.y","0.0","0u","1u","u.frame","vec4<f32>(in.uv.x, 1.0 - in.uv.y, 0.5, 1.0)","u.t_elapsed + (in.uv.x - 0.5) * 2.0","u.duration",...x],$=`let val = f32(${`${i}(${U.join(", ")})`}); return vec4<f32>(val, val, val, val);`,G=`
420
420
  struct VSOut {
421
421
  @builtin(position) pos : vec4<f32>,
422
422
  @location(0) uv : vec2<f32>,
@@ -456,7 +456,7 @@ ${d}
456
456
  @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
457
457
  ${$}
458
458
  }
459
- `,w=e.createShaderModule({label:`signal_2d_generator_${s.nodeId}.wgsl`,code:G});l=e.createRenderPipeline({label:`Signal2DPipeline_${s.nodeId}`,layout:"auto",vertex:{module:w,entryPoint:"vs"},fragment:{module:w,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-strip"}}),_.pipelineCache.set(S,l)}let h=p!==void 0&&g!==void 0&&g>0?p/g:r,y=p!==void 0?p:0,B=new ArrayBuffer(32),v=new Float32Array(B),b=new Uint32Array(B);v[0]=h,b[1]=y,v[2]=s.amplitude??1,v[3]=s.frequency??1,v[4]=s.phase??0,v[5]=s.offset??0,v[6]=r,v[7]=n,(!t.uniformBuffer||t.uniformBuffer.size<256)&&(t.uniformBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:`signal_2d_uniform_buffer_${s.nodeId}`}),t.bindGroup=void 0),e.queue.writeBuffer(t.uniformBuffer,0,B),t.bindGroup||(t.bindGroup=e.createBindGroup({layout:l.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}}]}));let m=a.beginRenderPass({label:`signal_2d_render_pass_${s.nodeId}`,colorAttachments:[{view:t.textureView,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});m.setPipeline(l),m.setBindGroup(0,t.bindGroup),m.draw(4),m.end()}dispatch2DAudioSignal(e,a,t,r,n,s,u,o,p){let g=this.getDeviceResources(e),d="audio_signal_2d",i=g.pipelineCache.get(d),_=this.getSampler(e);if(!i){let c=e.createShaderModule({code:`
459
+ `,w=e.createShaderModule({label:`signal_2d_generator_${s.nodeId}.wgsl`,code:G});f=e.createRenderPipeline({label:`Signal2DPipeline_${s.nodeId}`,layout:"auto",vertex:{module:w,entryPoint:"vs"},fragment:{module:w,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-strip"}}),_.pipelineCache.set(S,f)}let h=p!==void 0&&g!==void 0&&g>0?p/g:r,y=p!==void 0?p:0,B=new ArrayBuffer(32),v=new Float32Array(B),b=new Uint32Array(B);v[0]=h,b[1]=y,v[2]=s.amplitude??1,v[3]=s.frequency??1,v[4]=s.phase??0,v[5]=s.offset??0,v[6]=r,v[7]=n,(!t.uniformBuffer||t.uniformBuffer.size<256)&&(t.uniformBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:`signal_2d_uniform_buffer_${s.nodeId}`}),t.bindGroup=void 0),e.queue.writeBuffer(t.uniformBuffer,0,B),t.bindGroup||(t.bindGroup=e.createBindGroup({layout:f.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}}]}));let m=a.beginRenderPass({label:`signal_2d_render_pass_${s.nodeId}`,colorAttachments:[{view:t.textureView,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});m.setPipeline(f),m.setBindGroup(0,t.bindGroup),m.draw(4),m.end()}dispatch2DAudioSignal(e,a,t,r,n,s,u,o,p){let g=this.getDeviceResources(e),d="audio_signal_2d",i=g.pipelineCache.get(d),_=this.getSampler(e);if(!i){let c=e.createShaderModule({code:`
460
460
  struct VSOut {
461
461
  @builtin(position) pos : vec4<f32>,
462
462
  @location(0) uv : vec2<f32>,
@@ -505,7 +505,7 @@ struct AudioUniforms {
505
505
  }
506
506
  return s;
507
507
  }
508
- `,label:"dispatch2DAudioSignal_module"});i=e.createRenderPipeline({label:"dispatch2DAudioSignal_pipeline",layout:"auto",vertex:{module:c,entryPoint:"vs"},fragment:{module:c,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-strip"}}),g.pipelineCache.set(d,i)}let S=o!==void 0&&p!==void 0&&p>0?o/p:s,l=u>0?u:r.durationSec??0,h=new ArrayBuffer(16),y=new Float32Array(h),B=new Uint32Array(h);y[0]=S,y[1]=l,B[2]=n,y[3]=0,(!t.uniformBuffer||t.uniformBuffer.size<256)&&(t.uniformBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_signal_2d_uniform_buffer"}),t.bindGroup=void 0),e.queue.writeBuffer(t.uniformBuffer,0,h);let v=e.createBindGroup({layout:i.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}},{binding:1,resource:r.textureView},{binding:2,resource:_}]}),b=a.beginRenderPass({label:"audio_signal_2d_render_pass",colorAttachments:[{view:t.textureView,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});b.setPipeline(i),b.setBindGroup(0,v),b.draw(4),b.end()}dispatch2DSignalMath(e,a,t,r,n,s,u,o,p,g,d){let i=n.signalConfig,_=n.operation??i?.operation??"remap",S=n.customWGSL??i?.customWGSL??"",l=this.getDeviceResources(e),h=`math_${r}_${_}_${S}`,y=l.pipelineCache.get(h),B=n.signalA?.nodeId||n.signalA?.virtualMedia?.operation?.nodeId,v=n.signalB&&typeof n.signalB=="object"?n.signalB.nodeId||n.signalB.virtualMedia?.operation?.nodeId:void 0,b=!!v,m=B?this.getOrCreate2DTextureView(e,a,B,s,u,n.signalA,o,1,d,p,g):this.getDummy1x1TextureView(e),c=v?this.getOrCreate2DTextureView(e,a,v,s,u,n.signalB,o,1,d,p,g):this.getDummy1x1TextureView(e),x=this.getSampler(e);if(!y){let{evalExpr:E,extraFn:k}=ge(_,S),q=`
508
+ `,label:"dispatch2DAudioSignal_module"});i=e.createRenderPipeline({label:"dispatch2DAudioSignal_pipeline",layout:"auto",vertex:{module:c,entryPoint:"vs"},fragment:{module:c,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-strip"}}),g.pipelineCache.set(d,i)}let S=o!==void 0&&p!==void 0&&p>0?o/p:s,f=u>0?u:r.durationSec??0,h=new ArrayBuffer(16),y=new Float32Array(h),B=new Uint32Array(h);y[0]=S,y[1]=f,B[2]=n,y[3]=0,(!t.uniformBuffer||t.uniformBuffer.size<256)&&(t.uniformBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"audio_signal_2d_uniform_buffer"}),t.bindGroup=void 0),e.queue.writeBuffer(t.uniformBuffer,0,h);let v=e.createBindGroup({layout:i.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}},{binding:1,resource:r.textureView},{binding:2,resource:_}]}),b=a.beginRenderPass({label:"audio_signal_2d_render_pass",colorAttachments:[{view:t.textureView,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});b.setPipeline(i),b.setBindGroup(0,v),b.draw(4),b.end()}dispatch2DSignalMath(e,a,t,r,n,s,u,o,p,g,d){let i=n.signalConfig,_=n.operation??i?.operation??"remap",S=n.customWGSL??i?.customWGSL??"",f=this.getDeviceResources(e),h=`math_${r}_${_}_${S}`,y=f.pipelineCache.get(h),B=n.signalA?.nodeId||n.signalA?.virtualMedia?.operation?.nodeId,v=n.signalB&&typeof n.signalB=="object"?n.signalB.nodeId||n.signalB.virtualMedia?.operation?.nodeId:void 0,b=!!v,m=B?this.getOrCreate2DTextureView(e,a,B,s,u,n.signalA,o,1,d,p,g):this.getDummy1x1TextureView(e),c=v?this.getOrCreate2DTextureView(e,a,v,s,u,n.signalB,o,1,d,p,g):this.getDummy1x1TextureView(e),x=this.getSampler(e);if(!y){let{evalExpr:E,extraFn:k}=ce(_,S),q=`
509
509
  struct VSOut {
510
510
  @builtin(position) pos : vec4<f32>,
511
511
  @location(0) uv : vec2<f32>,
@@ -581,7 +581,7 @@ ${k}
581
581
  var val: f32 = ${E};
582
582
  return vec4<f32>(val, val, val, val);
583
583
  }
584
- `,N=e.createShaderModule({label:`signal_math_${r}.wgsl`,code:q});y=e.createRenderPipeline({label:`SignalMathPipeline_${r}`,layout:"auto",vertex:{module:N,entryPoint:"vs"},fragment:{module:N,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-strip"}}),l.pipelineCache.set(h,y)}let M=B?this.getStats(B):void 0,P=M?.min??0,U=M?.max??1,A=v?this.getStats(v):void 0,$=Ce(_,P,U,n,b,A);this.setStats(r,$),n.nodeId&&n.nodeId!==r&&this.setStats(n.nodeId,$);let G=new ArrayBuffer(64),w=new Float32Array(G),F=new Uint32Array(G),T=p!==void 0&&g!==void 0&&g>0?p/g:s;w[0]=L(n),w[1]=n.inMin??i?.inMin??0,w[2]=n.inMax??i?.inMax??1,w[3]=n.outMin??i?.outMin??0,w[4]=n.outMax??i?.outMax??1,w[5]=n.clampMin??i?.clampMin??0,w[6]=n.clampMax??i?.clampMax??1,w[7]=n.exponent??i?.exponent??2,w[8]=n.edge0??i?.edge0??0,w[9]=n.edge1??i?.edge1??1,w[10]=P,w[11]=U,w[12]=T,w[13]=u>0?T/u:0,F[14]=p??0,w[15]=b?1:0,(!t.uniformBuffer||t.uniformBuffer.size<256)&&(t.uniformBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:`signal_math_uniform_${r}`}),t.bindGroup=void 0),e.queue.writeBuffer(t.uniformBuffer,0,G);let R=e.createBindGroup({layout:y.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}},{binding:1,resource:m},{binding:2,resource:c},{binding:3,resource:x}]}),D=a.beginRenderPass({label:`signal_math_pass_${r}`,colorAttachments:[{view:t.textureView,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});D.setPipeline(y),D.setBindGroup(0,R),D.draw(4),D.end()}dispatch2DSignalGate(e,a,t,r,n,s,u,o,p,g,d){let i=n.signalConfig,_=Number(n.threshold??i?.threshold??.5),S=n.mode??i?.mode??"gate",l=!!(n.invert??i?.invert??!1),h=Math.max(1,Number(n.holdFrames??i?.holdFrames??4)),y=n.sourceSignal??i?.sourceSignal??n.signal,v=y?.virtualMedia?.operation,b=y?.nodeId||v?.nodeId,m=b?this.getOrCreate2DTextureView(e,a,b,s,u,y,o,1,d,p,g):this.getDummy1x1TextureView(e),c=this.getSampler(e),x=this.getDeviceResources(e),M=`gate_2d_${S}_${l}`,P=x.pipelineCache.get(M);if(!P){let T=e.createShaderModule({label:`signal_gate_${r}.wgsl`,code:`
584
+ `,N=e.createShaderModule({label:`signal_math_${r}.wgsl`,code:q});y=e.createRenderPipeline({label:`SignalMathPipeline_${r}`,layout:"auto",vertex:{module:N,entryPoint:"vs"},fragment:{module:N,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-strip"}}),f.pipelineCache.set(h,y)}let M=B?this.getStats(B):void 0,P=M?.min??0,U=M?.max??1,A=v?this.getStats(v):void 0,$=Ee(_,P,U,n,b,A);this.setStats(r,$),n.nodeId&&n.nodeId!==r&&this.setStats(n.nodeId,$);let G=new ArrayBuffer(64),w=new Float32Array(G),F=new Uint32Array(G),T=p!==void 0&&g!==void 0&&g>0?p/g:s;w[0]=L(n),w[1]=n.inMin??i?.inMin??0,w[2]=n.inMax??i?.inMax??1,w[3]=n.outMin??i?.outMin??0,w[4]=n.outMax??i?.outMax??1,w[5]=n.clampMin??i?.clampMin??0,w[6]=n.clampMax??i?.clampMax??1,w[7]=n.exponent??i?.exponent??2,w[8]=n.edge0??i?.edge0??0,w[9]=n.edge1??i?.edge1??1,w[10]=P,w[11]=U,w[12]=T,w[13]=u>0?T/u:0,F[14]=p??0,w[15]=b?1:0,(!t.uniformBuffer||t.uniformBuffer.size<256)&&(t.uniformBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:`signal_math_uniform_${r}`}),t.bindGroup=void 0),e.queue.writeBuffer(t.uniformBuffer,0,G);let R=e.createBindGroup({layout:y.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}},{binding:1,resource:m},{binding:2,resource:c},{binding:3,resource:x}]}),D=a.beginRenderPass({label:`signal_math_pass_${r}`,colorAttachments:[{view:t.textureView,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});D.setPipeline(y),D.setBindGroup(0,R),D.draw(4),D.end()}dispatch2DSignalGate(e,a,t,r,n,s,u,o,p,g,d){let i=n.signalConfig,_=Number(n.threshold??i?.threshold??.5),S=n.mode??i?.mode??"gate",f=!!(n.invert??i?.invert??!1),h=Math.max(1,Number(n.holdFrames??i?.holdFrames??4)),y=n.sourceSignal??i?.sourceSignal??n.signal,v=y?.virtualMedia?.operation,b=y?.nodeId||v?.nodeId,m=b?this.getOrCreate2DTextureView(e,a,b,s,u,y,o,1,d,p,g):this.getDummy1x1TextureView(e),c=this.getSampler(e),x=this.getDeviceResources(e),M=`gate_2d_${S}_${f}`,P=x.pipelineCache.get(M);if(!P){let T=e.createShaderModule({label:`signal_gate_${r}.wgsl`,code:`
585
585
  struct VSOut {
586
586
  @builtin(position) pos : vec4<f32>,
587
587
  @location(0) uv : vec2<f32>,
@@ -657,7 +657,7 @@ struct GateUniforms {
657
657
  }
658
658
  return vec4<f32>(high, high, high, 1.0f);
659
659
  }
660
- `});P=e.createRenderPipeline({label:`SignalGatePipeline_${r}`,layout:"auto",vertex:{module:T,entryPoint:"vs"},fragment:{module:T,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-strip"}}),x.pipelineCache.set(M,P)}let U=new ArrayBuffer(256),A=new Float32Array(U),$=new Uint32Array(U);A[0]=_,$[1]=S==="trigger"?1:S==="toggle"?2:0,A[2]=l?1:0,$[3]=h,A[4]=1/Math.max(1,o),(!t.uniformBuffer||t.uniformBuffer.size<256)&&(t.uniformBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:`signal_gate_uniform_${r}`}),t.bindGroup=void 0),e.queue.writeBuffer(t.uniformBuffer,0,U);let G=e.createBindGroup({layout:P.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}},{binding:1,resource:m},{binding:2,resource:c}]}),w=a.beginRenderPass({label:`signal_gate_pass_${r}`,colorAttachments:[{view:t.textureView,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});w.setPipeline(P),w.setBindGroup(0,G),w.draw(4),w.end(),this.setStats(r,{min:0,max:1})}dispatch1DGateSignal(e,a,t,r,n,s,u,o,p,g,d){let i=this.getDeviceResources(e),_=n.signalConfig,S=Number(n.threshold??_?.threshold??.5),l=n.mode??_?.mode??"gate",h=!!(n.invert??_?.invert??!1),y=Math.max(1,Number(n.holdFrames??_?.holdFrames??4)),B=Number(n.debounceMs??_?.debounceMs??100),v=Math.max(1,Math.round(B/1e3*p)),m=Math.max(1,Math.round(y/(d??24)*p)),c=`1d_gate_${l}_${S}_${h}`,x=i.pipelineCache.get(c);if(!x){let F=e.createShaderModule({label:"signal_1d_gate.wgsl",code:`
660
+ `});P=e.createRenderPipeline({label:`SignalGatePipeline_${r}`,layout:"auto",vertex:{module:T,entryPoint:"vs"},fragment:{module:T,entryPoint:"fs",targets:[{format:"rgba16float"}]},primitive:{topology:"triangle-strip"}}),x.pipelineCache.set(M,P)}let U=new ArrayBuffer(256),A=new Float32Array(U),$=new Uint32Array(U);A[0]=_,$[1]=S==="trigger"?1:S==="toggle"?2:0,A[2]=f?1:0,$[3]=h,A[4]=1/Math.max(1,o),(!t.uniformBuffer||t.uniformBuffer.size<256)&&(t.uniformBuffer=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:`signal_gate_uniform_${r}`}),t.bindGroup=void 0),e.queue.writeBuffer(t.uniformBuffer,0,U);let G=e.createBindGroup({layout:P.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:t.uniformBuffer}},{binding:1,resource:m},{binding:2,resource:c}]}),w=a.beginRenderPass({label:`signal_gate_pass_${r}`,colorAttachments:[{view:t.textureView,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});w.setPipeline(P),w.setBindGroup(0,G),w.draw(4),w.end(),this.setStats(r,{min:0,max:1})}dispatch1DGateSignal(e,a,t,r,n,s,u,o,p,g,d){let i=this.getDeviceResources(e),_=n.signalConfig,S=Number(n.threshold??_?.threshold??.5),f=n.mode??_?.mode??"gate",h=!!(n.invert??_?.invert??!1),y=Math.max(1,Number(n.holdFrames??_?.holdFrames??4)),B=Number(n.debounceMs??_?.debounceMs??100),v=Math.max(1,Math.round(B/1e3*p)),m=Math.max(1,Math.round(y/(d??24)*p)),c=`1d_gate_${f}_${S}_${h}`,x=i.pipelineCache.get(c);if(!x){let F=e.createShaderModule({label:"signal_1d_gate.wgsl",code:`
661
661
  struct Gate1DUniforms {
662
662
  threshold : f32,
663
663
  mode : u32,
@@ -722,8 +722,8 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
722
722
  }
723
723
  outSignal[idx] = high;
724
724
  }
725
- `});x=e.createComputePipeline({label:`Signal1DGatePipeline_${l}`,layout:"auto",compute:{module:F,entryPoint:"main"}}),i.pipelineCache.set(c,x)}let M=new ArrayBuffer(256),P=new Float32Array(M),U=new Uint32Array(M);P[0]=S,U[1]=l==="trigger"?1:l==="toggle"?2:0,P[2]=h?1:0,U[3]=m,U[4]=v,U[5]=o;let A=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"gate_1d_uniform"});e.queue.writeBuffer(A,0,M);let $=e.createBindGroup({layout:x.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:A}},{binding:1,resource:{buffer:r}},{binding:2,resource:{buffer:t.buffer}}]}),G=a.beginComputePass({label:"gate_1d_compute_pass"});G.setPipeline(x),G.setBindGroup(0,$),G.dispatchWorkgroups(Math.ceil(o/64)),G.end()}};function ge(f,e){switch(f){case"remap":return{evalExpr:"mix(u.outMin, u.outMax, clamp((a - u.inMin) / max(1e-5, u.inMax - u.inMin), 0.0, 1.0))",extraFn:""};case"normalize":return{evalExpr:"clamp((a - u.a_min) / max(1e-5, u.a_max - u.a_min), 0.0, 1.0)",extraFn:""};case"add":return{evalExpr:"a + b",extraFn:""};case"subtract":return{evalExpr:"a - b",extraFn:""};case"multiply":return{evalExpr:"a * b",extraFn:""};case"divide":return{evalExpr:"a / select(b, 1e-5, abs(b) < 1e-5)",extraFn:""};case"invert":return{evalExpr:"1.0 - a",extraFn:""};case"clamp":return{evalExpr:"clamp(a, u.clampMin, u.clampMax)",extraFn:""};case"power":return{evalExpr:"pow(max(0.0, a), u.exponent)",extraFn:""};case"smoothstep":return{evalExpr:"smoothstep(u.edge0, u.edge1, a)",extraFn:""};case"custom":return{extraFn:`
725
+ `});x=e.createComputePipeline({label:`Signal1DGatePipeline_${f}`,layout:"auto",compute:{module:F,entryPoint:"main"}}),i.pipelineCache.set(c,x)}let M=new ArrayBuffer(256),P=new Float32Array(M),U=new Uint32Array(M);P[0]=S,U[1]=f==="trigger"?1:f==="toggle"?2:0,P[2]=h?1:0,U[3]=m,U[4]=v,U[5]=o;let A=e.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"gate_1d_uniform"});e.queue.writeBuffer(A,0,M);let $=e.createBindGroup({layout:x.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:A}},{binding:1,resource:{buffer:r}},{binding:2,resource:{buffer:t.buffer}}]}),G=a.beginComputePass({label:"gate_1d_compute_pass"});G.setPipeline(x),G.setBindGroup(0,$),G.dispatchWorkgroups(Math.ceil(o/64)),G.end()}};function ce(l,e){switch(l){case"remap":return{evalExpr:"mix(u.outMin, u.outMax, clamp((a - u.inMin) / max(1e-5, u.inMax - u.inMin), 0.0, 1.0))",extraFn:""};case"normalize":return{evalExpr:"clamp((a - u.a_min) / max(1e-5, u.a_max - u.a_min), 0.0, 1.0)",extraFn:""};case"add":return{evalExpr:"a + b",extraFn:""};case"subtract":return{evalExpr:"a - b",extraFn:""};case"multiply":return{evalExpr:"a * b",extraFn:""};case"divide":return{evalExpr:"a / select(b, 1e-5, abs(b) < 1e-5)",extraFn:""};case"invert":return{evalExpr:"1.0 - a",extraFn:""};case"clamp":return{evalExpr:"clamp(a, u.clampMin, u.clampMax)",extraFn:""};case"power":return{evalExpr:"pow(max(0.0, a), u.exponent)",extraFn:""};case"smoothstep":return{evalExpr:"smoothstep(u.edge0, u.edge1, a)",extraFn:""};case"custom":return{extraFn:`
726
726
  fn user_signal_calc(a: f32, b: f32, a_min: f32, a_max: f32, t: f32, t_norm: f32, frame: u32) -> f32 {
727
727
  ${e}
728
728
  }
729
- `,evalExpr:"user_signal_calc(a, b, a_min, a_max, t, t_norm, frame)"};default:return{evalExpr:"a",extraFn:""}}}function L(f){if(typeof f.signalB=="number"&&!Number.isNaN(f.signalB))return f.signalB;if(f.signalB&&typeof f.signalB=="object"&&typeof f.signalB.value=="number"&&!Number.isNaN(f.signalB.value))return f.signalB.value;if(typeof f.bValue=="number"&&!Number.isNaN(f.bValue))return f.bValue;let e=f.signalConfig;return typeof e?.bValue=="number"&&!Number.isNaN(e.bValue)?e.bValue:1}function Ce(f,e,a,t,r,n){let s=t.signalConfig;switch(f){case"remap":{let u=Number(t.outMin??s?.outMin??0),o=Number(t.outMax??s?.outMax??1);return{min:Math.min(u,o),max:Math.max(u,o)}}case"normalize":return{min:0,max:1};case"invert":return{min:1-a,max:1-e};case"clamp":{let u=Number(t.clampMin??s?.clampMin??0),o=Number(t.clampMax??s?.clampMax??1);return{min:u,max:o}}case"power":{let u=Number(t.exponent??s?.exponent??2);return{min:Math.max(0,e)**u,max:Math.max(0,a)**u}}case"add":{if(r&&n)return{min:e+n.min,max:a+n.max};let u=r?0:L(t);return{min:e+u,max:a+u}}case"subtract":{if(r&&n)return{min:e-n.max,max:a-n.min};let u=r?0:L(t);return{min:e-u,max:a-u}}case"multiply":{if(r&&n){let o=[e*n.min,e*n.max,a*n.min,a*n.max];return{min:Math.min(...o),max:Math.max(...o)}}let u=r?1:L(t);return{min:Math.min(e*u,a*u),max:Math.max(e*u,a*u)}}case"divide":{if(r&&n){let p=Math.abs(n.min)<1e-5?1e-5:n.min,g=Math.abs(n.max)<1e-5?1e-5:n.max,d=[e/p,e/g,a/p,a/g];return{min:Math.min(...d),max:Math.max(...d)}}let u=r?1:L(t),o=Math.abs(u)<1e-5?1e-5:u;return{min:Math.min(e/o,a/o),max:Math.max(e/o,a/o)}}default:return{min:0,max:1}}}var Ye=new ue;export{Z as a,se as b,ue as c,Ye as d};
729
+ `,evalExpr:"user_signal_calc(a, b, a_min, a_max, t, t_norm, frame)"};default:return{evalExpr:"a",extraFn:""}}}function L(l){if(typeof l.signalB=="number"&&!Number.isNaN(l.signalB))return l.signalB;if(l.signalB&&typeof l.signalB=="object"&&typeof l.signalB.value=="number"&&!Number.isNaN(l.signalB.value))return l.signalB.value;if(typeof l.bValue=="number"&&!Number.isNaN(l.bValue))return l.bValue;let e=l.signalConfig;return typeof e?.bValue=="number"&&!Number.isNaN(e.bValue)?e.bValue:1}function Ee(l,e,a,t,r,n){let s=t.signalConfig;switch(l){case"remap":{let u=Number(t.outMin??s?.outMin??0),o=Number(t.outMax??s?.outMax??1);return{min:Math.min(u,o),max:Math.max(u,o)}}case"normalize":return{min:0,max:1};case"invert":return{min:1-a,max:1-e};case"clamp":{let u=Number(t.clampMin??s?.clampMin??0),o=Number(t.clampMax??s?.clampMax??1);return{min:u,max:o}}case"power":{let u=Number(t.exponent??s?.exponent??2);return{min:Math.max(0,e)**u,max:Math.max(0,a)**u}}case"add":{if(r&&n)return{min:e+n.min,max:a+n.max};let u=r?0:L(t);return{min:e+u,max:a+u}}case"subtract":{if(r&&n)return{min:e-n.max,max:a-n.min};let u=r?0:L(t);return{min:e-u,max:a-u}}case"multiply":{if(r&&n){let o=[e*n.min,e*n.max,a*n.min,a*n.max];return{min:Math.min(...o),max:Math.max(...o)}}let u=r?1:L(t);return{min:Math.min(e*u,a*u),max:Math.max(e*u,a*u)}}case"divide":{if(r&&n){let p=Math.abs(n.min)<1e-5?1e-5:n.min,g=Math.abs(n.max)<1e-5?1e-5:n.max,d=[e/p,e/g,a/p,a/g];return{min:Math.min(...d),max:Math.max(...d)}}let u=r?1:L(t),o=Math.abs(u)<1e-5?1e-5:u;return{min:Math.min(e/o,a/o),max:Math.max(e/o,a/o)}}default:return{min:0,max:1}}}var We=new se;export{ye as a,Q as b,ae as c,se as d,We as e};
@@ -1,4 +1,4 @@
1
- import{a as F,d as L,e as N,f as W,g as C,h as V,j as B,k as H,l as $,m as E}from"./chunk-IB6GZJOL.mjs";import{c as U,g as D}from"./chunk-KOVN277Z.mjs";import{g as p}from"./chunk-Y4NIR77Z.mjs";p();p();var fe=`
1
+ import{a as F,d as L,e as N,f as W,g as C,h as V,j as B,k as H,l as $,m as E}from"./chunk-54Q5CKSV.mjs";import{c as U,g as D}from"./chunk-KOVN277Z.mjs";import{g as p}from"./chunk-Y4NIR77Z.mjs";p();p();var fe=`
2
2
  struct TileOffsetUniforms {
3
3
  offsetX : f32,
4
4
  offsetY : f32,
@@ -1,4 +1,4 @@
1
- import{a as q}from"./chunk-2GA735OZ.mjs";import{b as J,c as Z}from"./chunk-3DXMWDQ3.mjs";import{a as $,d as X,e as L,g as K,h as V,j as Y,k as j,l as Q,m as w}from"./chunk-IB6GZJOL.mjs";import{a as r}from"./chunk-6FULVULN.mjs";import{d as E,g as H}from"./chunk-KOVN277Z.mjs";import{g as l}from"./chunk-Y4NIR77Z.mjs";l();l();l();l();var I=200,be=r.enum(["Union","Intersect","Subtract","Difference","Invert","Dilate","Erode","Choke","Feather"]),ee=r.enum(["Alpha","Luminance","Red","Green","Blue"]),ke=r.enum(["WhiteWithAlpha","GrayscaleRGB","AlphaOnly","PassthroughRGB"]),Re=q().field("operation",be.default("Union"),{label:"Operation",description:"Morphological or Boolean set operation applied to input alpha masks."}).field("radius",r.number().min(0).max(I).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Radius / Width (px)",description:"Kernel radius in pixels for Dilate, Erode, Choke, or Feather operations."}).field("threshold",r.number().multipleOf(.01).min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Threshold",description:"Cutoff threshold level (0.0\u20131.0) for binarization step or non-linear choke."}).field("clampMin",r.number().multipleOf(.01).min(0).max(1).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Min",description:"Minimum alpha matte cutoff limit (0.0\u20131.0)."}).field("clampMax",r.number().multipleOf(.01).min(0).max(1).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Max",description:"Maximum alpha matte cutoff limit (0.0\u20131.0)."}).field("channelA",ee.default("Alpha"),{label:"Mask A Channel",description:"Source channel to extract mask from Mask A (Alpha, Luminance, Red, Green, Blue)."}).field("channelB",ee.default("Alpha"),{label:"Mask B Channel",description:"Source channel to extract mask from Mask B (Alpha, Luminance, Red, Green, Blue)."}).field("binarize",r.boolean().default(!1),{label:"Binarize",description:"When enabled, outputs crisp 1-bit binary matte based on threshold."}).field("invertResult",r.boolean().default(!1),{label:"Invert Result",description:"Inverts final matte output."}).field("outputFormat",ke.default("WhiteWithAlpha"),{label:"Output Format",description:"WhiteWithAlpha (rgba(1,1,1,a)), GrayscaleRGB (rgba(a,a,a,1)), AlphaOnly (rgba(0,0,0,a)), PassthroughRGB (Mask A RGB with new alpha)."}).build(),Le=Re.schema,Ve=r.union([J,Z]);l();var Ae={Union:0,Intersect:1,Subtract:2,Difference:3,Invert:4,Dilate:5,Erode:6,Choke:7,Feather:8},ae={Alpha:0,Luminance:1,Red:2,Green:3,Blue:4},ye={WhiteWithAlpha:0,GrayscaleRGB:1,AlphaOnly:2,PassthroughRGB:3},Be=`
1
+ import{a as q}from"./chunk-2GA735OZ.mjs";import{b as J,c as Z}from"./chunk-3DXMWDQ3.mjs";import{a as $,d as X,e as L,g as K,h as V,j as Y,k as j,l as Q,m as w}from"./chunk-54Q5CKSV.mjs";import{a as r}from"./chunk-6FULVULN.mjs";import{d as E,g as H}from"./chunk-KOVN277Z.mjs";import{g as l}from"./chunk-Y4NIR77Z.mjs";l();l();l();l();var I=200,be=r.enum(["Union","Intersect","Subtract","Difference","Invert","Dilate","Erode","Choke","Feather"]),ee=r.enum(["Alpha","Luminance","Red","Green","Blue"]),ke=r.enum(["WhiteWithAlpha","GrayscaleRGB","AlphaOnly","PassthroughRGB"]),Re=q().field("operation",be.default("Union"),{label:"Operation",description:"Morphological or Boolean set operation applied to input alpha masks."}).field("radius",r.number().min(0).max(I).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Radius / Width (px)",description:"Kernel radius in pixels for Dilate, Erode, Choke, or Feather operations."}).field("threshold",r.number().multipleOf(.01).min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Threshold",description:"Cutoff threshold level (0.0\u20131.0) for binarization step or non-linear choke."}).field("clampMin",r.number().multipleOf(.01).min(0).max(1).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Min",description:"Minimum alpha matte cutoff limit (0.0\u20131.0)."}).field("clampMax",r.number().multipleOf(.01).min(0).max(1).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Max",description:"Maximum alpha matte cutoff limit (0.0\u20131.0)."}).field("channelA",ee.default("Alpha"),{label:"Mask A Channel",description:"Source channel to extract mask from Mask A (Alpha, Luminance, Red, Green, Blue)."}).field("channelB",ee.default("Alpha"),{label:"Mask B Channel",description:"Source channel to extract mask from Mask B (Alpha, Luminance, Red, Green, Blue)."}).field("binarize",r.boolean().default(!1),{label:"Binarize",description:"When enabled, outputs crisp 1-bit binary matte based on threshold."}).field("invertResult",r.boolean().default(!1),{label:"Invert Result",description:"Inverts final matte output."}).field("outputFormat",ke.default("WhiteWithAlpha"),{label:"Output Format",description:"WhiteWithAlpha (rgba(1,1,1,a)), GrayscaleRGB (rgba(a,a,a,1)), AlphaOnly (rgba(0,0,0,a)), PassthroughRGB (Mask A RGB with new alpha)."}).build(),Le=Re.schema,Ve=r.union([J,Z]);l();var Ae={Union:0,Intersect:1,Subtract:2,Difference:3,Invert:4,Dilate:5,Erode:6,Choke:7,Feather:8},ae={Alpha:0,Luminance:1,Red:2,Green:3,Blue:4},ye={WhiteWithAlpha:0,GrayscaleRGB:1,AlphaOnly:2,PassthroughRGB:3},Be=`
2
2
  struct MaskMathUniforms {
3
3
  dirX : f32,
4
4
  dirY : f32,
@@ -1,4 +1,4 @@
1
- import{a as z,h as D}from"./chunk-IB6GZJOL.mjs";import{g as q}from"./chunk-KOVN277Z.mjs";import{g as W}from"./chunk-Y4NIR77Z.mjs";W();W();var A=`
1
+ import{a as z,h as D}from"./chunk-54Q5CKSV.mjs";import{g as q}from"./chunk-KOVN277Z.mjs";import{g as W}from"./chunk-Y4NIR77Z.mjs";W();W();var A=`
2
2
  struct MaskUniforms {
3
3
  rect : vec4<f32>,
4
4
  roundness : f32,
@@ -1,4 +1,4 @@
1
- import{b as S,c as G}from"./chunk-3DXMWDQ3.mjs";import{d as g,g as M,h as C,j as R,m as P}from"./chunk-IB6GZJOL.mjs";import{a}from"./chunk-6FULVULN.mjs";import{g as k}from"./chunk-KOVN277Z.mjs";import{g as c}from"./chunk-Y4NIR77Z.mjs";c();c();c();var w=`
1
+ import{b as S,c as G}from"./chunk-3DXMWDQ3.mjs";import{d as g,g as M,h as C,j as R,m as P}from"./chunk-54Q5CKSV.mjs";import{a}from"./chunk-6FULVULN.mjs";import{g as k}from"./chunk-KOVN277Z.mjs";import{g as c}from"./chunk-Y4NIR77Z.mjs";c();c();c();var w=`
2
2
  struct ColorMatrixUniforms {
3
3
  row0 : vec4<f32>,
4
4
  row1 : vec4<f32>,
@@ -1,4 +1,4 @@
1
- import{a as q}from"./chunk-2GA735OZ.mjs";import{b as Q,c as Z}from"./chunk-3DXMWDQ3.mjs";import{a as j,d as y,e as E,g as K,h as X,j as P,k as Y,l as $,m as _}from"./chunk-IB6GZJOL.mjs";import{a as o}from"./chunk-6FULVULN.mjs";import{d as z}from"./chunk-KOVN277Z.mjs";import{g as r}from"./chunk-Y4NIR77Z.mjs";r();r();r();var V=250,I=1,N=100,ve=q().field("shadowAmount",o.number().min(0).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Shadow Boost (%)",description:"Percentage to lift and recover crushed shadow details (0\u2013100%)."}).field("shadowTonalWidth",o.number().min(0).max(100).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Shadow Range (%)",description:"Range of dark tones affected by shadow adjustments (0\u2013100%)."}).field("shadowRadius",o.number().min(1).max(250).default(30),{bindable:!0,dataTypes:["Number","Signal"],label:"Shadow Radius (px)",description:"Local neighborhood radius in pixels to determine shadow illumination (1\u2013250px)."}).field("highlightAmount",o.number().min(0).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Highlight Suppression (%)",description:"Percentage to suppress and recover blown highlight details (0\u2013100%)."}).field("highlightTonalWidth",o.number().min(0).max(100).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Highlight Range (%)",description:"Range of bright tones affected by highlight adjustments (0\u2013100%)."}).field("highlightRadius",o.number().min(1).max(250).default(30),{bindable:!0,dataTypes:["Number","Signal"],label:"Highlight Radius (px)",description:"Local neighborhood radius in pixels to determine highlight exposure (1\u2013250px)."}).field("colorCorrection",o.number().min(-100).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Color Correction (%)",description:"Fine-tunes color saturation in recovered shadow/highlight zones (-100 to +100%)."}).field("midtoneContrast",o.number().min(-100).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Midtone Contrast (%)",description:"Adjusts contrast centered on the midtones (-100 to +100%)."}).build(),ee=ve.schema,We=o.union([Q,Z]),Le=ee.extend({op:o.literal("ShadowsHighlights"),metadata:o.unknown().optional()}),ye=ee.parse({});var Te=`
1
+ import{a as q}from"./chunk-2GA735OZ.mjs";import{b as Q,c as Z}from"./chunk-3DXMWDQ3.mjs";import{a as j,d as y,e as E,g as K,h as X,j as P,k as Y,l as $,m as _}from"./chunk-54Q5CKSV.mjs";import{a as o}from"./chunk-6FULVULN.mjs";import{d as z}from"./chunk-KOVN277Z.mjs";import{g as r}from"./chunk-Y4NIR77Z.mjs";r();r();r();var V=250,I=1,N=100,ve=q().field("shadowAmount",o.number().min(0).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Shadow Boost (%)",description:"Percentage to lift and recover crushed shadow details (0\u2013100%)."}).field("shadowTonalWidth",o.number().min(0).max(100).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Shadow Range (%)",description:"Range of dark tones affected by shadow adjustments (0\u2013100%)."}).field("shadowRadius",o.number().min(1).max(250).default(30),{bindable:!0,dataTypes:["Number","Signal"],label:"Shadow Radius (px)",description:"Local neighborhood radius in pixels to determine shadow illumination (1\u2013250px)."}).field("highlightAmount",o.number().min(0).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Highlight Suppression (%)",description:"Percentage to suppress and recover blown highlight details (0\u2013100%)."}).field("highlightTonalWidth",o.number().min(0).max(100).default(50),{bindable:!0,dataTypes:["Number","Signal"],label:"Highlight Range (%)",description:"Range of bright tones affected by highlight adjustments (0\u2013100%)."}).field("highlightRadius",o.number().min(1).max(250).default(30),{bindable:!0,dataTypes:["Number","Signal"],label:"Highlight Radius (px)",description:"Local neighborhood radius in pixels to determine highlight exposure (1\u2013250px)."}).field("colorCorrection",o.number().min(-100).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Color Correction (%)",description:"Fine-tunes color saturation in recovered shadow/highlight zones (-100 to +100%)."}).field("midtoneContrast",o.number().min(-100).max(100).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Midtone Contrast (%)",description:"Adjusts contrast centered on the midtones (-100 to +100%)."}).build(),ee=ve.schema,We=o.union([Q,Z]),Le=ee.extend({op:o.literal("ShadowsHighlights"),metadata:o.unknown().optional()}),ye=ee.parse({});var Te=`
2
2
  struct ShadowsHighlightsUniforms {
3
3
  dirX : f32,
4
4
  dirY : f32,
@@ -1,4 +1,4 @@
1
- import{a as N,d as K,e as $,f as z,g as E,h as j,j as Q,k as J,l as X,m as Z}from"./chunk-IB6GZJOL.mjs";import{c as F,g as W}from"./chunk-KOVN277Z.mjs";import{a as w}from"./chunk-354GX6IB.mjs";import{g as S}from"./chunk-Y4NIR77Z.mjs";S();S();var Me=`
1
+ import{a as N,d as K,e as $,f as z,g as E,h as j,j as Q,k as J,l as X,m as Z}from"./chunk-54Q5CKSV.mjs";import{c as F,g as W}from"./chunk-KOVN277Z.mjs";import{a as w}from"./chunk-354GX6IB.mjs";import{g as S}from"./chunk-Y4NIR77Z.mjs";S();S();var Me=`
2
2
  struct HalftoneUniforms {
3
3
  mode : f32, // 0 = Monochrome, 1 = CMYK
4
4
  dotShape : f32, // 0 = Circle, 1 = Diamond, 2 = Line, 3 = Square
@@ -1,4 +1,4 @@
1
- import{a as q}from"./chunk-AGAZJZWI.mjs";import{p as ce,q as Q,r as Y,s as $,t as he,u as de,v as U,w as k,x as pe,y as fe,z as me}from"./chunk-FKG27DVO.mjs";import{c as re,d as ie,e as T}from"./chunk-BXPM5SJ3.mjs";import{a as ae,b as j,d as ne,e as F}from"./chunk-32WC4FRR.mjs";import{B as le,b as oe,j as C,v as ue,y as v,z as w}from"./chunk-BJXNKMSY.mjs";import{a as G,b as se}from"./chunk-354GX6IB.mjs";import{g as p}from"./chunk-Y4NIR77Z.mjs";p();var M=class{constructor(e,t){this.url=e;this.isHeadless=t}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let e=await F.acquire(this.url);this.destroyed?F.release(this.url):this.input=e}catch(e){throw this.initPromise=null,e}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(F.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},X=class extends M{canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];backwardFrames=[];backwardBytes=0;backwardEnd;lastHeadlessTimestamp;isDecoding=!1;decodeBuffer=null;nextRequest=null;async durationSec(){await this.init();let e=await this.input?.getPrimaryVideoTrack();if(!e)throw new Error(`No video track in ${this.url}`);return e.computeDuration()}pushHeadlessQueue(e){let t=this.headlessQueue.findIndex(r=>r.timestamp>e.timestamp);t===-1?this.headlessQueue.push(e):this.headlessQueue.splice(t,0,e)}async fillHeadlessQueue(e){if(this.iterator)for(;this.headlessQueue.length<2;){let t=await this.iterator.next();if(this.currentFetchId!==e){t.value?.close?.();return}if(t.done||!t.value)break;this.pushHeadlessQueue(t.value)}}async closeIterator(e){if(e)try{await e.return()}catch{}}resetSinks(){let e=this.iterator;if(this.iterator=null,e)try{e.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let t of this.headlessQueue)try{t.close()}catch{}this.headlessQueue=[],this.clearBackwardFrames(),this.lastHeadlessTimestamp=void 0,this.decodeBuffer=null,this.iteratorStartTimestamp=-1}clearBackwardFrames(){for(let e of this.backwardFrames)e.close();this.backwardFrames=[],this.backwardBytes=0,this.backwardEnd=void 0}async copyHeadlessSample(e,t){let r=e.displayWidth,i=e.displayHeight,o=r*i*4,s=this.decodeBuffer;return(!s||s.length!==o)&&(s=new Uint8Array(o),this.decodeBuffer=s),await e.copyTo(s,{format:"RGBA"}),this.currentFetchId!==t||this.destroyed||!this.input?null:(se(s),{width:r,height:i,buffer:s})}cachedBackwardFrame(e){let t,r=-1;for(let[o,s]of this.backwardFrames.entries()){if(s.timestamp>e+1e-4)break;t=s,r=o}let i=this.backwardFrames[r+1]?.timestamp??this.backwardEnd;if(!(!t||!(t.duration>0)||e+1e-4>=Math.min(t.timestamp+t.duration,i??1/0)))return t}async fillBackwardFrames(e,t){if(!this.videoSampleSink)return;await this.closeIterator(this.iterator),this.iterator=null;for(let i of this.headlessQueue)i.close();this.headlessQueue=[],this.clearBackwardFrames();let r=this.videoSampleSink.samples(Math.max(0,e-.5));try{for await(let i of r){if(i.timestamp>e+1e-4&&(this.backwardEnd=i.timestamp),this.destroyed||this.currentFetchId!==t||i.timestamp>e+1e-4){i.close();break}let o=i.displayWidth*i.displayHeight*4;if(o>48*1024*1024){i.close();break}for(this.backwardFrames.push(i),this.backwardBytes+=o;this.backwardBytes>48*1024*1024&&this.backwardFrames.length>1;){let s=this.backwardFrames.shift();s&&(this.backwardBytes-=s.displayWidth*s.displayHeight*4,s.close())}}}finally{await this.closeIterator(r)}}onDestroy(){this.resetSinks()}async startIterator(e,t){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let o=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed)return;this.currentFrame=o.value??null;let s=await this.iterator.next();this.currentFetchId!==t||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(e,t){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let o=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(o),await this.fillHeadlessQueue(t),!(this.currentFetchId!==t||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(e){if(await this.init(),this.destroyed||!this.input)return null;let t=Math.max(0,Number.isFinite(e)?e:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:t,resolve:r,reject:i}})):this.executeDecode(t)}async executeDecode(e){this.isDecoding=!0;try{return await this.performDecode(e)}finally{if(this.isDecoding=!1,this.nextRequest){let t=this.nextRequest;this.nextRequest=null,this.executeDecode(t.timestampSec).then(t.resolve).catch(t.reject)}}}async performDecodeHeadless(e,t){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let l=await this.input.getPrimaryVideoTrack();if(!l)return null;this.videoSampleSink=new ae(l)}let r=1e-4,i=1,o=.01,s=this.lastHeadlessTimestamp!==void 0&&e<this.lastHeadlessTimestamp-1e-4;this.lastHeadlessTimestamp=e;let n=this.cachedBackwardFrame(e);if(!n&&s&&(await this.fillBackwardFrames(e,t),n=this.cachedBackwardFrame(e)),n)return this.copyHeadlessSample(n,t);if((!this.iterator||e<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&e<this.headlessQueue[0].timestamp-o||this.headlessQueue.length>0&&e-this.headlessQueue[0].timestamp>i)&&(await this.startIteratorHeadless(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(t),this.currentFetchId!==t||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=e+r){this.headlessQueue.shift()?.close();continue}break}let a=this.headlessQueue[0];return a?this.copyHeadlessSample(a,t):null}async performDecodeInternal(e){this.currentFetchId++;let t=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(e,t);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let n=await this.input.getPrimaryVideoTrack();if(!n)return null;this.canvasSink=new j(n,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||e<this.iteratorStartTimestamp-r||this.currentFrame&&e<this.currentFrame.timestamp-.01||this.currentFrame&&e-this.currentFrame.timestamp>1)&&(await this.startIterator(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=e+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let n=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed||!this.input)return null;this.nextFrame=n.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(e){let t=Math.max(0,Number.isFinite(e)?e:0);try{return await this.performDecodeInternal(t)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let o=await this.input.getPrimaryVideoTrack();if(o&&!this.destroyed)return this.canvasSink=new j(o,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(t)}}catch{}throw r}}},K=class extends M{audioSink=null;onDestroy(){this.audioSink=null}async startIterator(e,t){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(e),this.iteratorStartTimestamp=e)}async*getBuffers(e){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new ne(i)}(!this.iterator||Math.abs(e-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(e,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(t){let r=t;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw t}finally{let t=this.currentFetchId;this.currentFetchId===t&&(this.iterator=null)}}},J=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;ticks=0;lastTick=new Map;touchKey(e){this.lastAccessed.set(e,Date.now()),this.lastTick.set(e,this.ticks)}dropKey(e){let t=this.videoDecoders.get(e);if(t){try{t.destroy()}catch{}this.videoDecoders.delete(e)}let r=this.audioDecoders.get(e);if(r){try{r.destroy()}catch{}this.audioDecoders.delete(e)}this.lastAccessed.delete(e),this.lastTick.delete(e)}tick(e=120){this.ticks++;for(let[t,r]of this.lastTick)this.ticks-r>e&&this.dropKey(t)}destroy(){for(let e of this.videoDecoders.values())try{e.destroy()}catch{}this.videoDecoders.clear();for(let e of this.audioDecoders.values())try{e.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear(),this.lastTick.clear()}get size(){return this.videoDecoders.size+this.audioDecoders.size}prune(e=3e5){let t=Date.now();for(let[r,i]of this.lastAccessed.entries())t-i>e&&this.dropKey(r)}getVideo(e,t,r){let i=`${e}-${t}-${r??"default"}`,o=this.videoDecoders.get(i);return o||(o=new X(e,t),this.videoDecoders.set(i,o)),this.touchKey(i),this.prune(),o}getAudio(e,t){let r=`${e}-${t??"default"}`,i=this.audioDecoders.get(r);return i||(i=new K(e,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(e){let t=[...this.videoDecoders.keys(),...this.audioDecoders.keys()];for(let r of t)r.includes(e)&&this.dropKey(r)}},Ee=new J;p();p();var ye=`
1
+ import{a as q}from"./chunk-AGAZJZWI.mjs";import{p as ce,q as Q,r as Y,s as $,t as he,u as de,v as U,w as k,x as pe,y as fe,z as me}from"./chunk-CIVJXFWH.mjs";import{c as re,d as ie,e as T}from"./chunk-BXPM5SJ3.mjs";import{a as ae,b as j,d as ne,e as F}from"./chunk-32WC4FRR.mjs";import{B as le,b as oe,j as C,v as ue,y as v,z as w}from"./chunk-BJXNKMSY.mjs";import{a as G,b as se}from"./chunk-354GX6IB.mjs";import{g as p}from"./chunk-Y4NIR77Z.mjs";p();var M=class{constructor(e,t){this.url=e;this.isHeadless=t}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let e=await F.acquire(this.url);this.destroyed?F.release(this.url):this.input=e}catch(e){throw this.initPromise=null,e}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(F.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},X=class extends M{canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];backwardFrames=[];backwardBytes=0;backwardEnd;lastHeadlessTimestamp;isDecoding=!1;decodeBuffer=null;nextRequest=null;async durationSec(){await this.init();let e=await this.input?.getPrimaryVideoTrack();if(!e)throw new Error(`No video track in ${this.url}`);return e.computeDuration()}pushHeadlessQueue(e){let t=this.headlessQueue.findIndex(r=>r.timestamp>e.timestamp);t===-1?this.headlessQueue.push(e):this.headlessQueue.splice(t,0,e)}async fillHeadlessQueue(e){if(this.iterator)for(;this.headlessQueue.length<2;){let t=await this.iterator.next();if(this.currentFetchId!==e){t.value?.close?.();return}if(t.done||!t.value)break;this.pushHeadlessQueue(t.value)}}async closeIterator(e){if(e)try{await e.return()}catch{}}resetSinks(){let e=this.iterator;if(this.iterator=null,e)try{e.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let t of this.headlessQueue)try{t.close()}catch{}this.headlessQueue=[],this.clearBackwardFrames(),this.lastHeadlessTimestamp=void 0,this.decodeBuffer=null,this.iteratorStartTimestamp=-1}clearBackwardFrames(){for(let e of this.backwardFrames)e.close();this.backwardFrames=[],this.backwardBytes=0,this.backwardEnd=void 0}async copyHeadlessSample(e,t){let r=e.displayWidth,i=e.displayHeight,o=r*i*4,s=this.decodeBuffer;return(!s||s.length!==o)&&(s=new Uint8Array(o),this.decodeBuffer=s),await e.copyTo(s,{format:"RGBA"}),this.currentFetchId!==t||this.destroyed||!this.input?null:(se(s),{width:r,height:i,buffer:s})}cachedBackwardFrame(e){let t,r=-1;for(let[o,s]of this.backwardFrames.entries()){if(s.timestamp>e+1e-4)break;t=s,r=o}let i=this.backwardFrames[r+1]?.timestamp??this.backwardEnd;if(!(!t||!(t.duration>0)||e+1e-4>=Math.min(t.timestamp+t.duration,i??1/0)))return t}async fillBackwardFrames(e,t){if(!this.videoSampleSink)return;await this.closeIterator(this.iterator),this.iterator=null;for(let i of this.headlessQueue)i.close();this.headlessQueue=[],this.clearBackwardFrames();let r=this.videoSampleSink.samples(Math.max(0,e-.5));try{for await(let i of r){if(i.timestamp>e+1e-4&&(this.backwardEnd=i.timestamp),this.destroyed||this.currentFetchId!==t||i.timestamp>e+1e-4){i.close();break}let o=i.displayWidth*i.displayHeight*4;if(o>48*1024*1024){i.close();break}for(this.backwardFrames.push(i),this.backwardBytes+=o;this.backwardBytes>48*1024*1024&&this.backwardFrames.length>1;){let s=this.backwardFrames.shift();s&&(this.backwardBytes-=s.displayWidth*s.displayHeight*4,s.close())}}}finally{await this.closeIterator(r)}}onDestroy(){this.resetSinks()}async startIterator(e,t){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let o=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed)return;this.currentFrame=o.value??null;let s=await this.iterator.next();this.currentFetchId!==t||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(e,t){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let o=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(o),await this.fillHeadlessQueue(t),!(this.currentFetchId!==t||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(e){if(await this.init(),this.destroyed||!this.input)return null;let t=Math.max(0,Number.isFinite(e)?e:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:t,resolve:r,reject:i}})):this.executeDecode(t)}async executeDecode(e){this.isDecoding=!0;try{return await this.performDecode(e)}finally{if(this.isDecoding=!1,this.nextRequest){let t=this.nextRequest;this.nextRequest=null,this.executeDecode(t.timestampSec).then(t.resolve).catch(t.reject)}}}async performDecodeHeadless(e,t){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let l=await this.input.getPrimaryVideoTrack();if(!l)return null;this.videoSampleSink=new ae(l)}let r=1e-4,i=1,o=.01,s=this.lastHeadlessTimestamp!==void 0&&e<this.lastHeadlessTimestamp-1e-4;this.lastHeadlessTimestamp=e;let n=this.cachedBackwardFrame(e);if(!n&&s&&(await this.fillBackwardFrames(e,t),n=this.cachedBackwardFrame(e)),n)return this.copyHeadlessSample(n,t);if((!this.iterator||e<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&e<this.headlessQueue[0].timestamp-o||this.headlessQueue.length>0&&e-this.headlessQueue[0].timestamp>i)&&(await this.startIteratorHeadless(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(t),this.currentFetchId!==t||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=e+r){this.headlessQueue.shift()?.close();continue}break}let a=this.headlessQueue[0];return a?this.copyHeadlessSample(a,t):null}async performDecodeInternal(e){this.currentFetchId++;let t=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(e,t);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let n=await this.input.getPrimaryVideoTrack();if(!n)return null;this.canvasSink=new j(n,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||e<this.iteratorStartTimestamp-r||this.currentFrame&&e<this.currentFrame.timestamp-.01||this.currentFrame&&e-this.currentFrame.timestamp>1)&&(await this.startIterator(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=e+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let n=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed||!this.input)return null;this.nextFrame=n.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(e){let t=Math.max(0,Number.isFinite(e)?e:0);try{return await this.performDecodeInternal(t)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let o=await this.input.getPrimaryVideoTrack();if(o&&!this.destroyed)return this.canvasSink=new j(o,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(t)}}catch{}throw r}}},K=class extends M{audioSink=null;onDestroy(){this.audioSink=null}async startIterator(e,t){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(e),this.iteratorStartTimestamp=e)}async*getBuffers(e){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new ne(i)}(!this.iterator||Math.abs(e-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(e,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(t){let r=t;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw t}finally{let t=this.currentFetchId;this.currentFetchId===t&&(this.iterator=null)}}},J=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;ticks=0;lastTick=new Map;touchKey(e){this.lastAccessed.set(e,Date.now()),this.lastTick.set(e,this.ticks)}dropKey(e){let t=this.videoDecoders.get(e);if(t){try{t.destroy()}catch{}this.videoDecoders.delete(e)}let r=this.audioDecoders.get(e);if(r){try{r.destroy()}catch{}this.audioDecoders.delete(e)}this.lastAccessed.delete(e),this.lastTick.delete(e)}tick(e=120){this.ticks++;for(let[t,r]of this.lastTick)this.ticks-r>e&&this.dropKey(t)}destroy(){for(let e of this.videoDecoders.values())try{e.destroy()}catch{}this.videoDecoders.clear();for(let e of this.audioDecoders.values())try{e.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear(),this.lastTick.clear()}get size(){return this.videoDecoders.size+this.audioDecoders.size}prune(e=3e5){let t=Date.now();for(let[r,i]of this.lastAccessed.entries())t-i>e&&this.dropKey(r)}getVideo(e,t,r){let i=`${e}-${t}-${r??"default"}`,o=this.videoDecoders.get(i);return o||(o=new X(e,t),this.videoDecoders.set(i,o)),this.touchKey(i),this.prune(),o}getAudio(e,t){let r=`${e}-${t??"default"}`,i=this.audioDecoders.get(r);return i||(i=new K(e,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(e){let t=[...this.videoDecoders.keys(),...this.audioDecoders.keys()];for(let r of t)r.includes(e)&&this.dropKey(r)}},Ee=new J;p();p();var ye=`
2
2
  struct CompositeUniforms {
3
3
  blendMode : u32,
4
4
  padding1 : u32,
@@ -1,4 +1,4 @@
1
- import{a as V,d as p,g as D,h as I,j as k,k as W,l as F,m as O}from"./chunk-IB6GZJOL.mjs";import{d as U}from"./chunk-KOVN277Z.mjs";import{g as f}from"./chunk-Y4NIR77Z.mjs";f();f();var j=new WeakMap,me=`
1
+ import{a as V,d as p,g as D,h as I,j as k,k as W,l as F,m as O}from"./chunk-54Q5CKSV.mjs";import{d as U}from"./chunk-KOVN277Z.mjs";import{g as f}from"./chunk-Y4NIR77Z.mjs";f();f();var j=new WeakMap,me=`
2
2
  struct ColorBalanceUniforms {
3
3
  shadows : vec4<f32>,
4
4
  midtones : vec4<f32>,
@@ -1,4 +1,4 @@
1
- import{a as g}from"./chunk-K3C6GUQD.mjs";import{g as l}from"./chunk-KOVN277Z.mjs";import{c as m,h as u}from"./chunk-ULOFDFHJ.mjs";import{g as t}from"./chunk-Y4NIR77Z.mjs";t();t();var x=["pan"],w=()=>`
1
+ import{a as g}from"./chunk-SE2C623Z.mjs";import{g as l}from"./chunk-KOVN277Z.mjs";import{c as m,h as u}from"./chunk-ULOFDFHJ.mjs";import{g as t}from"./chunk-Y4NIR77Z.mjs";t();t();var x=["pan"],w=()=>`
2
2
  struct Uniforms {
3
3
  sampleRate : f32,
4
4
  pan : f32,