framefields 2.0.2

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 (408) hide show
  1. package/LICENCE +202 -0
  2. package/README.md +740 -0
  3. package/dist/audio/index.d.mts +5 -0
  4. package/dist/audio/index.mjs +14 -0
  5. package/dist/audio-Dvwwz8xU.d.mts +37 -0
  6. package/dist/audio-Dvwwz8xU.d.mts.map +1 -0
  7. package/dist/audio-TAvPwzLR.mjs +214 -0
  8. package/dist/audio-TAvPwzLR.mjs.map +1 -0
  9. package/dist/audio-x28ZgQBP.mjs +85 -0
  10. package/dist/audio-x28ZgQBP.mjs.map +1 -0
  11. package/dist/chunk-GMkBE123.mjs +47 -0
  12. package/dist/client-C74hb7fy.mjs +66 -0
  13. package/dist/client-C74hb7fy.mjs.map +1 -0
  14. package/dist/dist-1iUYuPct.mjs +1859 -0
  15. package/dist/dist-1iUYuPct.mjs.map +1 -0
  16. package/dist/dist-Bx6J0VcM.mjs +1859 -0
  17. package/dist/dist-Bx6J0VcM.mjs.map +1 -0
  18. package/dist/dist-C_hjvkdN.mjs +2220 -0
  19. package/dist/dist-C_hjvkdN.mjs.map +1 -0
  20. package/dist/dist-DKm2IyEJ.mjs +94 -0
  21. package/dist/dist-DKm2IyEJ.mjs.map +1 -0
  22. package/dist/dist-cjs-B5EVqDFp.mjs +85 -0
  23. package/dist/dist-cjs-B5EVqDFp.mjs.map +1 -0
  24. package/dist/dist-cjs-BGJkdexX.mjs +437 -0
  25. package/dist/dist-cjs-BGJkdexX.mjs.map +1 -0
  26. package/dist/dist-cjs-BKmGCgtm.mjs +9069 -0
  27. package/dist/dist-cjs-BKmGCgtm.mjs.map +1 -0
  28. package/dist/dist-cjs-BUc0_kg-.mjs +1091 -0
  29. package/dist/dist-cjs-BUc0_kg-.mjs.map +1 -0
  30. package/dist/dist-cjs-BUwe2XhR.mjs +153 -0
  31. package/dist/dist-cjs-BUwe2XhR.mjs.map +1 -0
  32. package/dist/dist-cjs-BWgoUCXJ.mjs +137 -0
  33. package/dist/dist-cjs-BWgoUCXJ.mjs.map +1 -0
  34. package/dist/dist-cjs-CmZEMtO6.mjs +6 -0
  35. package/dist/dist-cjs-D7kEM-Mj.mjs +181 -0
  36. package/dist/dist-cjs-D7kEM-Mj.mjs.map +1 -0
  37. package/dist/dist-cjs-DFUmy89O.mjs +48 -0
  38. package/dist/dist-cjs-DFUmy89O.mjs.map +1 -0
  39. package/dist/dist-cjs-Df7144zM.mjs +209 -0
  40. package/dist/dist-cjs-Df7144zM.mjs.map +1 -0
  41. package/dist/dist-cjs-DgxjcvBN.mjs +98 -0
  42. package/dist/dist-cjs-DgxjcvBN.mjs.map +1 -0
  43. package/dist/dist-cjs-DsMdld8l.mjs +5015 -0
  44. package/dist/dist-cjs-DsMdld8l.mjs.map +1 -0
  45. package/dist/dist-cjs-Dzs5P3K0.mjs +51 -0
  46. package/dist/dist-cjs-Dzs5P3K0.mjs.map +1 -0
  47. package/dist/dist-cjs-ECMuIF57.mjs +323 -0
  48. package/dist/dist-cjs-ECMuIF57.mjs.map +1 -0
  49. package/dist/dist-cjs-lYvO8aDo.mjs +64 -0
  50. package/dist/dist-cjs-lYvO8aDo.mjs.map +1 -0
  51. package/dist/dist-cjs-qEJrwjGk.mjs +66 -0
  52. package/dist/dist-cjs-qEJrwjGk.mjs.map +1 -0
  53. package/dist/dist-cjs-x5cwlqA5.mjs +43 -0
  54. package/dist/dist-cjs-x5cwlqA5.mjs.map +1 -0
  55. package/dist/dist-gjHmorxL.mjs +27479 -0
  56. package/dist/dist-gjHmorxL.mjs.map +1 -0
  57. package/dist/effects/index.d.mts +5 -0
  58. package/dist/effects/index.mjs +35 -0
  59. package/dist/effects-CHWORCYd.mjs +811 -0
  60. package/dist/effects-CHWORCYd.mjs.map +1 -0
  61. package/dist/event-streams-D-APZ7Ke.mjs +204 -0
  62. package/dist/event-streams-D-APZ7Ke.mjs.map +1 -0
  63. package/dist/fonts/index.d.mts +2 -0
  64. package/dist/fonts/index.mjs +3 -0
  65. package/dist/fonts-DrGTBJJk.mjs +188 -0
  66. package/dist/fonts-DrGTBJJk.mjs.map +1 -0
  67. package/dist/index-B0BNPEoH.d.mts +2117 -0
  68. package/dist/index-B0BNPEoH.d.mts.map +1 -0
  69. package/dist/index-BMVVmc4G.d.mts +72 -0
  70. package/dist/index-BMVVmc4G.d.mts.map +1 -0
  71. package/dist/index-D1ZsMpke.d.mts +264 -0
  72. package/dist/index-D1ZsMpke.d.mts.map +1 -0
  73. package/dist/index-D2jDC7O5.d.mts +3643 -0
  74. package/dist/index-D2jDC7O5.d.mts.map +1 -0
  75. package/dist/index-D2wJqSl5.d.mts +114 -0
  76. package/dist/index-D2wJqSl5.d.mts.map +1 -0
  77. package/dist/index-DKFGNyMB.d.mts +309 -0
  78. package/dist/index-DKFGNyMB.d.mts.map +1 -0
  79. package/dist/index-DiSKzDGR.d.mts +65 -0
  80. package/dist/index-DiSKzDGR.d.mts.map +1 -0
  81. package/dist/index.d.mts +4425 -0
  82. package/dist/index.d.mts.map +1 -0
  83. package/dist/index.mjs +2623 -0
  84. package/dist/index.mjs.map +1 -0
  85. package/dist/package-C58KmGKw.mjs +6 -0
  86. package/dist/package-C58KmGKw.mjs.map +1 -0
  87. package/dist/preview/index.d.mts +90 -0
  88. package/dist/preview/index.d.mts.map +1 -0
  89. package/dist/preview/index.mjs +15 -0
  90. package/dist/preview-engine/audio.mjs +1 -0
  91. package/dist/preview-engine/child_process-AIL2NBWS.mjs +1 -0
  92. package/dist/preview-engine/chunk-24P6DAB3.mjs +1 -0
  93. package/dist/preview-engine/chunk-37EFVZWT.mjs +1 -0
  94. package/dist/preview-engine/chunk-3O5OKR6D.mjs +223 -0
  95. package/dist/preview-engine/chunk-47VT677S.mjs +8 -0
  96. package/dist/preview-engine/chunk-4BEJJKEU.mjs +315 -0
  97. package/dist/preview-engine/chunk-4GEWSUX5.mjs +1 -0
  98. package/dist/preview-engine/chunk-55CCFPUX.mjs +237 -0
  99. package/dist/preview-engine/chunk-5JD65JSJ.mjs +110 -0
  100. package/dist/preview-engine/chunk-5UP7FSGT.mjs +294 -0
  101. package/dist/preview-engine/chunk-5XDHHOF2.mjs +367 -0
  102. package/dist/preview-engine/chunk-6YJP57MZ.mjs +729 -0
  103. package/dist/preview-engine/chunk-6ZOXGAYA.mjs +112 -0
  104. package/dist/preview-engine/chunk-AOLAHYVV.mjs +529 -0
  105. package/dist/preview-engine/chunk-B6PLCMBM.mjs +1 -0
  106. package/dist/preview-engine/chunk-BJKH76OM.mjs +264 -0
  107. package/dist/preview-engine/chunk-BUIQ5TUH.mjs +104 -0
  108. package/dist/preview-engine/chunk-BVF64D6H.mjs +1 -0
  109. package/dist/preview-engine/chunk-CA5N7JRZ.mjs +138 -0
  110. package/dist/preview-engine/chunk-CNSHAFEA.mjs +1 -0
  111. package/dist/preview-engine/chunk-CURR5X7D.mjs +1 -0
  112. package/dist/preview-engine/chunk-CVGM2U4J.mjs +47 -0
  113. package/dist/preview-engine/chunk-CYY366IE.mjs +1 -0
  114. package/dist/preview-engine/chunk-D5PHI6ET.mjs +109 -0
  115. package/dist/preview-engine/chunk-D7MZHP2Y.mjs +275 -0
  116. package/dist/preview-engine/chunk-DPPH3NK2.mjs +182 -0
  117. package/dist/preview-engine/chunk-DPST2XLC.mjs +418 -0
  118. package/dist/preview-engine/chunk-DRLEOHN5.mjs +1 -0
  119. package/dist/preview-engine/chunk-EDIZNO3P.mjs +1 -0
  120. package/dist/preview-engine/chunk-EHIIT4ZR.mjs +52 -0
  121. package/dist/preview-engine/chunk-FKZ4XXPE.mjs +1 -0
  122. package/dist/preview-engine/chunk-G3HW4VER.mjs +60 -0
  123. package/dist/preview-engine/chunk-G76HSKOS.mjs +184 -0
  124. package/dist/preview-engine/chunk-GYG2IIBR.mjs +1 -0
  125. package/dist/preview-engine/chunk-H2F5NVQ6.mjs +63 -0
  126. package/dist/preview-engine/chunk-H5BPCY7N.mjs +188 -0
  127. package/dist/preview-engine/chunk-HAXK42HG.mjs +997 -0
  128. package/dist/preview-engine/chunk-HXMDPMLB.mjs +1 -0
  129. package/dist/preview-engine/chunk-HYBAPT6I.mjs +1 -0
  130. package/dist/preview-engine/chunk-I4FH6HYU.mjs +73 -0
  131. package/dist/preview-engine/chunk-IYVN2QEL.mjs +1 -0
  132. package/dist/preview-engine/chunk-JPXQPP6J.mjs +1 -0
  133. package/dist/preview-engine/chunk-JWNHTRED.mjs +164 -0
  134. package/dist/preview-engine/chunk-KZOLCZIV.mjs +103 -0
  135. package/dist/preview-engine/chunk-L62MRHGZ.mjs +89 -0
  136. package/dist/preview-engine/chunk-LEEZXHQO.mjs +117 -0
  137. package/dist/preview-engine/chunk-LKYN3BM2.mjs +1 -0
  138. package/dist/preview-engine/chunk-LP3EP33S.mjs +610 -0
  139. package/dist/preview-engine/chunk-M2GRYRLM.mjs +111 -0
  140. package/dist/preview-engine/chunk-MC7TZZLD.mjs +134 -0
  141. package/dist/preview-engine/chunk-MT2DZQHO.mjs +1 -0
  142. package/dist/preview-engine/chunk-MTJHQATU.mjs +1 -0
  143. package/dist/preview-engine/chunk-N4LHIPHZ.mjs +340 -0
  144. package/dist/preview-engine/chunk-N4PWLBZ7.mjs +5 -0
  145. package/dist/preview-engine/chunk-NQZKBFC6.mjs +40 -0
  146. package/dist/preview-engine/chunk-NWRSVVTF.mjs +186 -0
  147. package/dist/preview-engine/chunk-P3HBP725.mjs +1 -0
  148. package/dist/preview-engine/chunk-PIAJWALT.mjs +1 -0
  149. package/dist/preview-engine/chunk-PJ3DVG45.mjs +1 -0
  150. package/dist/preview-engine/chunk-QP2NI4XD.mjs +82 -0
  151. package/dist/preview-engine/chunk-SA3JUR6D.mjs +52 -0
  152. package/dist/preview-engine/chunk-SRT2OCQW.mjs +1 -0
  153. package/dist/preview-engine/chunk-SWD76532.mjs +98 -0
  154. package/dist/preview-engine/chunk-SXX7HX34.mjs +191 -0
  155. package/dist/preview-engine/chunk-SZ7YRPKO.mjs +3 -0
  156. package/dist/preview-engine/chunk-TMRLZV5X.mjs +1 -0
  157. package/dist/preview-engine/chunk-U446SQP3.mjs +292 -0
  158. package/dist/preview-engine/chunk-UDNCEHUI.mjs +141 -0
  159. package/dist/preview-engine/chunk-V3H7WWOT.mjs +271 -0
  160. package/dist/preview-engine/chunk-V7ZVVUQU.mjs +108 -0
  161. package/dist/preview-engine/chunk-VJGK7MLJ.mjs +3 -0
  162. package/dist/preview-engine/chunk-VSSB73UU.mjs +58 -0
  163. package/dist/preview-engine/chunk-VXUJWPIK.mjs +1 -0
  164. package/dist/preview-engine/chunk-XD4GKD6H.mjs +5 -0
  165. package/dist/preview-engine/chunk-XKO4RYKN.mjs +3 -0
  166. package/dist/preview-engine/chunk-XOEEGC4Z.mjs +1 -0
  167. package/dist/preview-engine/chunk-YAQFFQPG.mjs +1 -0
  168. package/dist/preview-engine/chunk-YKMBRUAE.mjs +1 -0
  169. package/dist/preview-engine/chunk-YSTLMWCG.mjs +1 -0
  170. package/dist/preview-engine/chunk-Z4ERCLNF.mjs +1 -0
  171. package/dist/preview-engine/chunk-ZEYUXJIV.mjs +1 -0
  172. package/dist/preview-engine/chunk-ZX6APG6E.mjs +117 -0
  173. package/dist/preview-engine/effects.mjs +1 -0
  174. package/dist/preview-engine/esbuild-GWV7CM7D.mjs +1 -0
  175. package/dist/preview-engine/fonts.mjs +1 -0
  176. package/dist/preview-engine/framefields.mjs +1959 -0
  177. package/dist/preview-engine/onnxruntime-node-56GSZEH3.mjs +1 -0
  178. package/dist/preview-engine/player.mjs +155 -0
  179. package/dist/preview-engine/renderers-2AUSIYZN.mjs +1 -0
  180. package/dist/preview-engine/renderers-2QN6KZJP.mjs +1 -0
  181. package/dist/preview-engine/renderers-32SKW7ML.mjs +1 -0
  182. package/dist/preview-engine/renderers-5QYK6766.mjs +1 -0
  183. package/dist/preview-engine/renderers-6BJA6MSU.mjs +251 -0
  184. package/dist/preview-engine/renderers-6QAF3LQ2.mjs +1 -0
  185. package/dist/preview-engine/renderers-7AO5746S.mjs +296 -0
  186. package/dist/preview-engine/renderers-AFYKNM6N.mjs +1 -0
  187. package/dist/preview-engine/renderers-AGMH5CRH.mjs +1 -0
  188. package/dist/preview-engine/renderers-AHSGP6LY.mjs +126 -0
  189. package/dist/preview-engine/renderers-ASTBICLA.mjs +1 -0
  190. package/dist/preview-engine/renderers-BHVPLYNN.mjs +1 -0
  191. package/dist/preview-engine/renderers-D7PVQFVU.mjs +1 -0
  192. package/dist/preview-engine/renderers-DB4ABTNA.mjs +1 -0
  193. package/dist/preview-engine/renderers-F2NFJI5L.mjs +1 -0
  194. package/dist/preview-engine/renderers-FI7YHNLY.mjs +1 -0
  195. package/dist/preview-engine/renderers-GBHULMPH.mjs +1 -0
  196. package/dist/preview-engine/renderers-GUKQUMGG.mjs +55 -0
  197. package/dist/preview-engine/renderers-HGT7QDY3.mjs +1 -0
  198. package/dist/preview-engine/renderers-HOYLA7ZK.mjs +1 -0
  199. package/dist/preview-engine/renderers-KKI2D3MZ.mjs +1 -0
  200. package/dist/preview-engine/renderers-KRAJNV4E.mjs +1 -0
  201. package/dist/preview-engine/renderers-KUGZKSVE.mjs +1 -0
  202. package/dist/preview-engine/renderers-L2EQQIOC.mjs +1 -0
  203. package/dist/preview-engine/renderers-LK3NRMGR.mjs +1 -0
  204. package/dist/preview-engine/renderers-LX654SZ3.mjs +1 -0
  205. package/dist/preview-engine/renderers-MCFQFYEL.mjs +1 -0
  206. package/dist/preview-engine/renderers-O6HOYIPS.mjs +1 -0
  207. package/dist/preview-engine/renderers-OEVXCGE2.mjs +1 -0
  208. package/dist/preview-engine/renderers-QVD6C4CS.mjs +1 -0
  209. package/dist/preview-engine/renderers-R3XEYD5V.mjs +248 -0
  210. package/dist/preview-engine/renderers-RBFWJWVM.mjs +1 -0
  211. package/dist/preview-engine/renderers-RX3VLVLO.mjs +1 -0
  212. package/dist/preview-engine/renderers-SM6JP64K.mjs +1 -0
  213. package/dist/preview-engine/renderers-TKMAATVS.mjs +1 -0
  214. package/dist/preview-engine/renderers-UGZUPONY.mjs +1 -0
  215. package/dist/preview-engine/renderers-UTFXZE3G.mjs +1 -0
  216. package/dist/preview-engine/renderers-UWPH7HBH.mjs +1 -0
  217. package/dist/preview-engine/renderers-UZGECFVO.mjs +1 -0
  218. package/dist/preview-engine/renderers-VGU3LNLT.mjs +1 -0
  219. package/dist/preview-engine/renderers-W3VVM5HB.mjs +1 -0
  220. package/dist/preview-engine/renderers-WJUTT5BB.mjs +1 -0
  221. package/dist/preview-engine/renderers-XA2M4YXK.mjs +1 -0
  222. package/dist/preview-engine/renderers-XIHRFEFQ.mjs +1 -0
  223. package/dist/preview-engine/renderers-XJTA5MFG.mjs +1 -0
  224. package/dist/preview-engine/renderers-XLTY5APF.mjs +1 -0
  225. package/dist/preview-engine/renderers-XZ3VXFGZ.mjs +1 -0
  226. package/dist/preview-engine/renderers-YKUQUCTO.mjs +124 -0
  227. package/dist/preview-engine/renderers-YVN3EIOP.mjs +1 -0
  228. package/dist/preview-engine/renderers-YWRP23SZ.mjs +125 -0
  229. package/dist/preview-engine/renderers-ZPWOUWZJ.mjs +120 -0
  230. package/dist/preview-engine/resvg-js-VMU4A77S.mjs +1 -0
  231. package/dist/preview-engine/server-utils-2FAIV45N.mjs +1 -0
  232. package/dist/preview-engine/sharp-V6ZTBNDW.mjs +1 -0
  233. package/dist/preview-engine/shims/fs-promises.mjs +1 -0
  234. package/dist/preview-engine/shims/fs.mjs +1 -0
  235. package/dist/preview-engine/shims/module.mjs +1 -0
  236. package/dist/preview-engine/shims/os.mjs +1 -0
  237. package/dist/preview-engine/shims/path.mjs +1 -0
  238. package/dist/preview-engine/shims/url.mjs +1 -0
  239. package/dist/preview-engine/signals.mjs +1 -0
  240. package/dist/preview-engine/webgpu-NSSANM4F.mjs +1 -0
  241. package/dist/preview-uQM210iy.mjs +2149 -0
  242. package/dist/preview-uQM210iy.mjs.map +1 -0
  243. package/dist/program-Dl510wmI.mjs +5183 -0
  244. package/dist/program-Dl510wmI.mjs.map +1 -0
  245. package/dist/renderer/index.d.mts +3 -0
  246. package/dist/renderer/index.mjs +6 -0
  247. package/dist/renderer-3BNskNuJ.mjs +3 -0
  248. package/dist/renderer-7DOcIxFG.mjs +288 -0
  249. package/dist/renderer-7DOcIxFG.mjs.map +1 -0
  250. package/dist/renderer-9dHlMQGX.mjs +3 -0
  251. package/dist/renderer-B1CvhW4p.mjs +677 -0
  252. package/dist/renderer-B1CvhW4p.mjs.map +1 -0
  253. package/dist/renderer-B2XzjK0z.mjs +3 -0
  254. package/dist/renderer-B80s47yo.mjs +166 -0
  255. package/dist/renderer-B80s47yo.mjs.map +1 -0
  256. package/dist/renderer-B9-QSJcG.mjs +479 -0
  257. package/dist/renderer-B9-QSJcG.mjs.map +1 -0
  258. package/dist/renderer-BAQmR0Zo.mjs +3 -0
  259. package/dist/renderer-BDLnExoP.mjs +127 -0
  260. package/dist/renderer-BDLnExoP.mjs.map +1 -0
  261. package/dist/renderer-BGXU6vcW.mjs +270 -0
  262. package/dist/renderer-BGXU6vcW.mjs.map +1 -0
  263. package/dist/renderer-BGvORwkQ.mjs +3 -0
  264. package/dist/renderer-BLikd6BK.mjs +3 -0
  265. package/dist/renderer-BMovYRoR.mjs +3 -0
  266. package/dist/renderer-BQHbp-Sp.mjs +243 -0
  267. package/dist/renderer-BQHbp-Sp.mjs.map +1 -0
  268. package/dist/renderer-BREIjsUU.mjs +252 -0
  269. package/dist/renderer-BREIjsUU.mjs.map +1 -0
  270. package/dist/renderer-BSbTJBWc.mjs +3 -0
  271. package/dist/renderer-BTu2EVhF.mjs +3 -0
  272. package/dist/renderer-BU1rwNRT.mjs +3 -0
  273. package/dist/renderer-BXMmISWG.mjs +499 -0
  274. package/dist/renderer-BXMmISWG.mjs.map +1 -0
  275. package/dist/renderer-BZJm3m4f.mjs +3 -0
  276. package/dist/renderer-B_NuVaIP.mjs +744 -0
  277. package/dist/renderer-B_NuVaIP.mjs.map +1 -0
  278. package/dist/renderer-BfJSUjPN.mjs +3 -0
  279. package/dist/renderer-BqyAgNt3.mjs +3 -0
  280. package/dist/renderer-BryTM2g7.mjs +3 -0
  281. package/dist/renderer-BsgIcBKH.mjs +391 -0
  282. package/dist/renderer-BsgIcBKH.mjs.map +1 -0
  283. package/dist/renderer-ByDhfrPE.mjs +422 -0
  284. package/dist/renderer-ByDhfrPE.mjs.map +1 -0
  285. package/dist/renderer-C-H680_l.mjs +3 -0
  286. package/dist/renderer-C17wL9QX.mjs +181 -0
  287. package/dist/renderer-C17wL9QX.mjs.map +1 -0
  288. package/dist/renderer-C2n-EHxg.mjs +1 -0
  289. package/dist/renderer-CB5aWAaf.mjs +343 -0
  290. package/dist/renderer-CB5aWAaf.mjs.map +1 -0
  291. package/dist/renderer-CB7lH5K8.mjs +3 -0
  292. package/dist/renderer-CDLrNgfo.mjs +3 -0
  293. package/dist/renderer-CDOUAN7X.mjs +454 -0
  294. package/dist/renderer-CDOUAN7X.mjs.map +1 -0
  295. package/dist/renderer-CH8sdfYX.mjs +387 -0
  296. package/dist/renderer-CH8sdfYX.mjs.map +1 -0
  297. package/dist/renderer-CIvaRnP_.mjs +261 -0
  298. package/dist/renderer-CIvaRnP_.mjs.map +1 -0
  299. package/dist/renderer-CMzEjdzi.mjs +369 -0
  300. package/dist/renderer-CMzEjdzi.mjs.map +1 -0
  301. package/dist/renderer-COkcU3db.mjs +3302 -0
  302. package/dist/renderer-COkcU3db.mjs.map +1 -0
  303. package/dist/renderer-CQCoggIa.mjs +3 -0
  304. package/dist/renderer-CQdVj2JS.mjs +3 -0
  305. package/dist/renderer-CQiTodg9.mjs +337 -0
  306. package/dist/renderer-CQiTodg9.mjs.map +1 -0
  307. package/dist/renderer-CV2m6k1V.mjs +3 -0
  308. package/dist/renderer-CYY-poLe.mjs +3 -0
  309. package/dist/renderer-CZgB5st8.mjs +3 -0
  310. package/dist/renderer-C_Ki91kc.mjs +3 -0
  311. package/dist/renderer-CclIvsLO.mjs +3 -0
  312. package/dist/renderer-Cj-whdVr.mjs +655 -0
  313. package/dist/renderer-Cj-whdVr.mjs.map +1 -0
  314. package/dist/renderer-CkykdR_D.mjs +3 -0
  315. package/dist/renderer-Cl1oUXMi.mjs +1143 -0
  316. package/dist/renderer-Cl1oUXMi.mjs.map +1 -0
  317. package/dist/renderer-CmApuKjS.mjs +3 -0
  318. package/dist/renderer-CpkiHRhh.mjs +269 -0
  319. package/dist/renderer-CpkiHRhh.mjs.map +1 -0
  320. package/dist/renderer-CszOjcRW.mjs +3 -0
  321. package/dist/renderer-CtVkU_GA.mjs +44 -0
  322. package/dist/renderer-CtVkU_GA.mjs.map +1 -0
  323. package/dist/renderer-Cu074POw.mjs +3 -0
  324. package/dist/renderer-CwQhzcUn.mjs +644 -0
  325. package/dist/renderer-CwQhzcUn.mjs.map +1 -0
  326. package/dist/renderer-CzPWB0Ss.mjs +273 -0
  327. package/dist/renderer-CzPWB0Ss.mjs.map +1 -0
  328. package/dist/renderer-D4qLmox-.mjs +3 -0
  329. package/dist/renderer-D6bWQtr-.mjs +3 -0
  330. package/dist/renderer-D6cJ6MSq.mjs +3 -0
  331. package/dist/renderer-D7EX8IjU.mjs +240 -0
  332. package/dist/renderer-D7EX8IjU.mjs.map +1 -0
  333. package/dist/renderer-DDp7_TUi.d.mts +10 -0
  334. package/dist/renderer-DDp7_TUi.d.mts.map +1 -0
  335. package/dist/renderer-DFKsLrUs.mjs +256 -0
  336. package/dist/renderer-DFKsLrUs.mjs.map +1 -0
  337. package/dist/renderer-DPSsf8-t.mjs +3 -0
  338. package/dist/renderer-DQLGnEFc.mjs +3 -0
  339. package/dist/renderer-DY2SVYUW.mjs +3 -0
  340. package/dist/renderer-DZGtBUCx.mjs +792 -0
  341. package/dist/renderer-DZGtBUCx.mjs.map +1 -0
  342. package/dist/renderer-DabG62XS.mjs +406 -0
  343. package/dist/renderer-DabG62XS.mjs.map +1 -0
  344. package/dist/renderer-DbaQLI4z.mjs +771 -0
  345. package/dist/renderer-DbaQLI4z.mjs.map +1 -0
  346. package/dist/renderer-DjI45OYC.mjs +71 -0
  347. package/dist/renderer-DjI45OYC.mjs.map +1 -0
  348. package/dist/renderer-Dm08-hAU.mjs +323 -0
  349. package/dist/renderer-Dm08-hAU.mjs.map +1 -0
  350. package/dist/renderer-DoAY5JbB.mjs +4 -0
  351. package/dist/renderer-Dp_FfvF-.mjs +401 -0
  352. package/dist/renderer-Dp_FfvF-.mjs.map +1 -0
  353. package/dist/renderer-Dt6fzgX5.mjs +756 -0
  354. package/dist/renderer-Dt6fzgX5.mjs.map +1 -0
  355. package/dist/renderer-DuplLRbp.mjs +3 -0
  356. package/dist/renderer-DvfUbZ31.mjs +3 -0
  357. package/dist/renderer-DxjVQV6f.mjs +311 -0
  358. package/dist/renderer-DxjVQV6f.mjs.map +1 -0
  359. package/dist/renderer-Fco4EmAu.mjs +23868 -0
  360. package/dist/renderer-Fco4EmAu.mjs.map +1 -0
  361. package/dist/renderer-HFfcJlmR.mjs +981 -0
  362. package/dist/renderer-HFfcJlmR.mjs.map +1 -0
  363. package/dist/renderer-I-Sw3JBB.mjs +145 -0
  364. package/dist/renderer-I-Sw3JBB.mjs.map +1 -0
  365. package/dist/renderer-OWQmmg4Z.mjs +697 -0
  366. package/dist/renderer-OWQmmg4Z.mjs.map +1 -0
  367. package/dist/renderer-Q_uUQipO.mjs +3 -0
  368. package/dist/renderer-Ryo2CEFD.mjs +586 -0
  369. package/dist/renderer-Ryo2CEFD.mjs.map +1 -0
  370. package/dist/renderer-Tp6OXWNZ.mjs +257 -0
  371. package/dist/renderer-Tp6OXWNZ.mjs.map +1 -0
  372. package/dist/renderer-UQFCgeNx.mjs +3 -0
  373. package/dist/renderer-WkVrkCVA.mjs +83 -0
  374. package/dist/renderer-WkVrkCVA.mjs.map +1 -0
  375. package/dist/renderer-XcmYTd6P.mjs +3818 -0
  376. package/dist/renderer-XcmYTd6P.mjs.map +1 -0
  377. package/dist/renderer-_uvdg48N.mjs +333 -0
  378. package/dist/renderer-_uvdg48N.mjs.map +1 -0
  379. package/dist/renderer-bZU_ndxf.mjs +8 -0
  380. package/dist/renderer-bZU_ndxf.mjs.map +1 -0
  381. package/dist/renderer-eMsnzJg9.mjs +3 -0
  382. package/dist/renderer-ho_jXJ0H.mjs +254 -0
  383. package/dist/renderer-ho_jXJ0H.mjs.map +1 -0
  384. package/dist/renderer-k2JL79kM.mjs +306 -0
  385. package/dist/renderer-k2JL79kM.mjs.map +1 -0
  386. package/dist/renderer-pHiz78e0.mjs +3 -0
  387. package/dist/renderer-pxXf9dvk.mjs +394 -0
  388. package/dist/renderer-pxXf9dvk.mjs.map +1 -0
  389. package/dist/renderer-vCFTm0oe.mjs +226 -0
  390. package/dist/renderer-vCFTm0oe.mjs.map +1 -0
  391. package/dist/renderer-vvpdx1vk.mjs +379 -0
  392. package/dist/renderer-vvpdx1vk.mjs.map +1 -0
  393. package/dist/renderer-x2s9LmVL.mjs +1121 -0
  394. package/dist/renderer-x2s9LmVL.mjs.map +1 -0
  395. package/dist/renderers-BWg16W-V-BXG_cjhM.mjs +49 -0
  396. package/dist/renderers-BWg16W-V-BXG_cjhM.mjs.map +1 -0
  397. package/dist/signals/index.d.mts +7 -0
  398. package/dist/signals/index.mjs +10 -0
  399. package/dist/signals-BwbdO3AN.mjs +224 -0
  400. package/dist/signals-BwbdO3AN.mjs.map +1 -0
  401. package/dist/signin-CZj4Oc5s.mjs +865 -0
  402. package/dist/signin-CZj4Oc5s.mjs.map +1 -0
  403. package/dist/sso-oidc-C0_31ThY.mjs +1051 -0
  404. package/dist/sso-oidc-C0_31ThY.mjs.map +1 -0
  405. package/dist/sts-DD4ggEXC.mjs +6 -0
  406. package/dist/sts-nXw8RDJI.mjs +1395 -0
  407. package/dist/sts-nXw8RDJI.mjs.map +1 -0
  408. package/package.json +173 -0
@@ -0,0 +1,112 @@
1
+ import{a as D}from"./chunk-N4PWLBZ7.mjs";import{a as I}from"./chunk-YSTLMWCG.mjs";import{e as d}from"./chunk-BVF64D6H.mjs";d();d();var M=["fadeInDuration","fadeOutDuration"],A=()=>`
2
+ struct Uniforms {
3
+ sampleRate : f32,
4
+ fadeInDuration : f32,
5
+ fadeOutDuration : f32,
6
+ fadeInCurve : f32,
7
+ fadeOutCurve : f32,
8
+ clipDuration : f32,
9
+ hasFadeInDurationSig : f32,
10
+ hasFadeOutDurationSig : f32,
11
+ baseTime : f32,
12
+ frame : f32,
13
+ numSamples : f32,
14
+ numChannels : f32,
15
+ pad1 : f32,
16
+ pad2 : f32,
17
+ pad3 : f32,
18
+ pad4 : f32,
19
+ };
20
+
21
+ @group(0) @binding(0) var<uniform> u : Uniforms;
22
+ @group(0) @binding(1) var<storage, read> inputChannels : array<f32>;
23
+ @group(0) @binding(2) var<storage, read_write> outputChannels : array<f32>;
24
+ @group(0) @binding(3) var<storage, read_write> state : array<f32>; // state[0] = samplesProcessed
25
+ @group(0) @binding(4) var<storage, read> fadeInDurationSignal : array<f32>;
26
+ @group(0) @binding(5) var<storage, read> fadeOutDurationSignal : array<f32>;
27
+
28
+ fn applyCurve(p: f32, curve: f32) -> f32 {
29
+ let clampedP = max(0.0f, min(p, 1.0f));
30
+ if (curve == 1.0f) { // exponential
31
+ return clampedP * clampedP;
32
+ }
33
+ if (curve == 2.0f) { // scurve
34
+ return clampedP * clampedP * (3.0f - 2.0f * clampedP);
35
+ }
36
+ return clampedP; // linear
37
+ }
38
+
39
+ fn tanh(x: f32) -> f32 {
40
+ let exp2x = exp(2.0f * x);
41
+ return (exp2x - 1.0f) / (exp2x + 1.0f);
42
+ }
43
+
44
+ fn is_nan_or_inf(v: f32) -> bool {
45
+ return (v != v) || (abs(v) > 3.402823466e+38f);
46
+ }
47
+
48
+ @compute @workgroup_size(1)
49
+ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
50
+ if (gid.x != 0u) { return; }
51
+
52
+ let numSamples = u32(u.numSamples);
53
+ let numChannels = u32(u.numChannels);
54
+
55
+ for (var index = 0u; index < numSamples; index = index + 1u) {
56
+ let t = u.baseTime + f32(index) / u.sampleRate;
57
+ var gain = 1.0f;
58
+
59
+ var effFadeIn = u.fadeInDuration;
60
+ if (u.hasFadeInDurationSig > 0.5f) {
61
+ effFadeIn = fadeInDurationSignal[index];
62
+ }
63
+ effFadeIn = clamp(effFadeIn, 0.0f, 60.0f);
64
+
65
+ var effFadeOut = u.fadeOutDuration;
66
+ if (u.hasFadeOutDurationSig > 0.5f) {
67
+ effFadeOut = fadeOutDurationSignal[index];
68
+ }
69
+ effFadeOut = clamp(effFadeOut, 0.0f, 60.0f);
70
+
71
+ if (effFadeIn > 0.0f && t < effFadeIn) {
72
+ let p = t / effFadeIn;
73
+ gain = gain * applyCurve(p, u.fadeInCurve);
74
+ }
75
+
76
+ if (effFadeOut > 0.0f && t > u.clipDuration - effFadeOut) {
77
+ let p = (u.clipDuration - t) / effFadeOut;
78
+ gain = gain * applyCurve(p, u.fadeOutCurve);
79
+ }
80
+
81
+ gain = clamp(gain, 0.0f, 1.0f);
82
+
83
+ for (var c = 0u; c < numChannels; c = c + 1u) {
84
+ let sampleIndex = c * numSamples + index;
85
+ var inVal = inputChannels[sampleIndex];
86
+ if (is_nan_or_inf(inVal)) {
87
+ inVal = 0.0f;
88
+ }
89
+
90
+ var outVal = inVal * gain;
91
+ if (is_nan_or_inf(outVal)) {
92
+ outVal = 0.0f;
93
+ }
94
+
95
+ if (outVal > 1.0f) {
96
+ outVal = 1.0f;
97
+ } else if (outVal < -1.0f) {
98
+ outVal = -1.0f;
99
+ } else if (outVal > 0.9f) {
100
+ outVal = 0.9f + 0.1f * tanh((outVal - 0.9f) / 0.1f);
101
+ } else if (outVal < -0.9f) {
102
+ outVal = -0.9f + 0.1f * tanh((outVal + 0.9f) / 0.1f);
103
+ }
104
+
105
+ outputChannels[sampleIndex] = outVal;
106
+ }
107
+ }
108
+
109
+ // Dummy reference to keep state binding active
110
+ state[0] = state[0];
111
+ }
112
+ `,O=t=>t==="exponential"?1:t==="scurve"?2:0,h=async(t,m,s,a)=>{if(!a?.device)throw new Error("GPUDevice is required for WebGPU Audio Fade.");let e=s.operation||{},C=e.inputs||{},c=t.length;if(c===0)return;let g=t[0].length;if(g===0)return;let F=Math.max(0,typeof e.fadeInDuration=="number"?e.fadeInDuration:0),b=Math.max(0,typeof e.fadeOutDuration=="number"?e.fadeOutDuration:0),x=typeof e.fadeInCurve=="string"?e.fadeInCurve:"linear",y=typeof e.fadeOutCurve=="string"?e.fadeOutCurve:"linear",l=(s.metadata?.durationMs??0)/1e3,u=F,i=b;if(u+i>l){let n=l/2;u=Math.min(u,n),i=Math.min(i,n)}let v=n=>{let f=e[n];if(typeof f!="string"||!f)return!1;let r=C[f];return!!(r?.connectionValid&&r.outputItem&&(r.outputItem.type==="Signal"||r.outputItem.type==="Number"))},P=v("fadeInDurationHandleId")?1:0,V=v("fadeOutDurationHandleId")?1:0,S=e.id||"audio-fade",o=a.frame??0,p=a.fps??24;await D.process(a.device,S,t,m,s,o,p,A,n=>{let f=typeof e.startFrame=="number"?e.startFrame:o,r=a.elapsedMs!==void 0?a.elapsedMs/1e3+(n-o/p):Math.max(0,n-f/p);return[m,u,i,O(x),O(y),l,P,V,r,o,g,c,0,0,0,0]},16,1,a?.renderId,!0,a?.elapsedMs,a?.durationMs,void 0,void 0,M)};var k=I({audioProcessor:h});export{k as a};
@@ -0,0 +1,529 @@
1
+ import{a as g,b as ae,c as le}from"./chunk-IYVN2QEL.mjs";import{a}from"./chunk-NQZKBFC6.mjs";import{a as ee}from"./chunk-YSTLMWCG.mjs";import{e as O}from"./chunk-BVF64D6H.mjs";O();O();O();var ia=a.object({enabled:a.boolean().default(!1),color:g.default("#000000"),opacity:a.number().min(0).max(1).default(.75),angle:a.number().min(0).max(360).default(120),distance:a.number().min(0).max(500).default(10),spread:a.number().min(0).max(100).default(0),size:a.number().min(0).max(250).default(10),blendMode:a.string().default("multiply")}),na=a.object({enabled:a.boolean().default(!1),color:g.default("#000000"),opacity:a.number().min(0).max(1).default(.75),angle:a.number().min(0).max(360).default(120),distance:a.number().min(0).max(500).default(5),choke:a.number().min(0).max(100).default(0),size:a.number().min(0).max(250).default(5),blendMode:a.string().default("multiply")}),sa=a.object({enabled:a.boolean().default(!1),size:a.number().min(0).max(100).default(2),position:a.enum(["inside","center","outside"]).default("outside"),color:g.default("#ffffff"),opacity:a.number().min(0).max(1).default(1),blendMode:a.string().default("normal")}),oe=a.object({enabled:a.boolean().default(!1),color:g.default("#ffffff"),opacity:a.number().min(0).max(1).default(.75),size:a.number().min(0).max(250).default(15),spread:a.number().min(0).max(100).default(0),blendMode:a.string().default("screen")}),da=a.object({enabled:a.boolean().default(!1),style:a.enum(["InnerBevel","OuterBevel","Emboss","PillowEmboss"]).default("InnerBevel"),technique:a.enum(["Smooth","ChiselHard","ChiselSoft"]).default("Smooth"),depth:a.number().min(1).max(1e3).default(100),direction:a.enum(["Up","Down"]).default("Up"),size:a.number().min(0).max(250).default(5),soften:a.number().min(0).max(50).default(0),angle:a.number().min(0).max(360).default(120),altitude:a.number().min(0).max(90).default(30),highlightColor:g.default("#ffffff"),highlightOpacity:a.number().min(0).max(1).default(.75),shadowColor:g.default("#000000"),shadowOpacity:a.number().min(0).max(1).default(.75)}),ca=a.object({enabled:a.boolean().default(!1),color:g.default("#ff0000"),opacity:a.number().min(0).max(1).default(1),blendMode:a.string().default("normal")}),ua={enabled:!1,color:"#000000",opacity:.75,angle:120,distance:10,spread:0,size:10,blendMode:"multiply"},pa={enabled:!1,color:"#000000",opacity:.75,angle:120,distance:5,choke:0,size:5,blendMode:"multiply"},te={enabled:!1,color:"#ffffff",opacity:.75,size:15,spread:0,blendMode:"screen"},fa={enabled:!1,size:2,position:"outside",color:"#ffffff",opacity:1,blendMode:"normal"},ma={enabled:!1,style:"InnerBevel",technique:"Smooth",depth:100,direction:"Up",size:5,soften:0,angle:120,altitude:30,highlightColor:"#ffffff",highlightOpacity:.75,shadowColor:"#000000",shadowOpacity:.75},ba={enabled:!1,color:"#ff0000",opacity:1,blendMode:"normal"},Oa=a.object({dropShadow:ia.default(ua),innerShadow:na.default(pa),outerGlow:oe.default(te),innerGlow:oe.default(te),stroke:sa.default(fa),bevelEmboss:da.default(ma),colorOverlay:ca.default(ba),dropShadowAngleHandleId:a.string().nullable().optional(),dropShadowDistanceHandleId:a.string().nullable().optional(),dropShadowSpreadHandleId:a.string().nullable().optional(),dropShadowSizeHandleId:a.string().nullable().optional(),dropShadowOpacityHandleId:a.string().nullable().optional(),innerShadowAngleHandleId:a.string().nullable().optional(),innerShadowDistanceHandleId:a.string().nullable().optional(),innerShadowChokeHandleId:a.string().nullable().optional(),innerShadowSizeHandleId:a.string().nullable().optional(),innerShadowOpacityHandleId:a.string().nullable().optional(),outerGlowSizeHandleId:a.string().nullable().optional(),outerGlowSpreadHandleId:a.string().nullable().optional(),outerGlowOpacityHandleId:a.string().nullable().optional(),innerGlowSizeHandleId:a.string().nullable().optional(),innerGlowSpreadHandleId:a.string().nullable().optional(),innerGlowOpacityHandleId:a.string().nullable().optional(),strokeSizeHandleId:a.string().nullable().optional(),strokeOpacityHandleId:a.string().nullable().optional(),bevelEmbossDepthHandleId:a.string().nullable().optional(),bevelEmbossSizeHandleId:a.string().nullable().optional(),bevelEmbossSoftenHandleId:a.string().nullable().optional(),bevelEmbossAngleHandleId:a.string().nullable().optional(),bevelEmbossAltitudeHandleId:a.string().nullable().optional(),bevelEmbossHighlightOpacityHandleId:a.string().nullable().optional(),bevelEmbossShadowOpacityHandleId:a.string().nullable().optional(),colorOverlayOpacityHandleId:a.string().nullable().optional()});function ie(r){let o=0,i=0;if(r.dropShadow?.enabled){let s=(r.dropShadow.angle??120)*Math.PI/180,u=r.dropShadow.distance??0,c=Math.ceil(Math.abs(Math.cos(s))*u),p=Math.ceil(Math.abs(Math.sin(s))*u);o=Math.max(o,c),i=Math.max(i,p)}if(r.stroke?.enabled&&r.stroke.position!=="inside"){let s=r.stroke.position==="outside"?Math.ceil(r.stroke.size??2):Math.ceil((r.stroke.size??2)*.5);o=Math.max(o,s),i=Math.max(i,s)}return{padX:o,padY:i}}var Aa=a.union([ae,le]);function h(r){if(!r)return[1,1,1,1];let o=r.trim().replace(/^#/,"");if(o.length===3)o=o.split("").map(p=>p+p).join("")+"ff";else if(o.length===6)o=o+"ff";else if(o.length!==8)return[1,1,1,1];let i=parseInt(o.slice(0,2),16)/255,s=parseInt(o.slice(2,4),16)/255,u=parseInt(o.slice(4,6),16)/255,c=parseInt(o.slice(6,8),16)/255;return[Number.isFinite(i)?i:1,Number.isFinite(s)?s:1,Number.isFinite(u)?u:1,Number.isFinite(c)?c:1]}var A={normal:0,"source-over":0,multiply:1,screen:2,overlay:3,darken:4,lighten:5,"color-dodge":6,"color-burn":7,"hard-light":8,"soft-light":9,difference:10,exclusion:11,hue:12,saturation:13,color:14,luminosity:15,"mask-in":16,"destination-in":16,"mask-out":17,"destination-out":17,"source-in":18,"source-out":19,"source-atop":20,"destination-over":21,"destination-atop":22,lighter:23,copy:24,xor:25},ga={InnerBevel:0,OuterBevel:1,Emboss:2,PillowEmboss:3},ha={Smooth:0,ChiselHard:1,ChiselSoft:2},ya={outside:0,center:1,inside:2},Sa=`
2
+ struct LayerStyleUniforms {
3
+ // Drop Shadow (vec4 x 3)
4
+ dropShadowColor : vec4<f32>,
5
+ dropShadowParams : vec4<f32>, // x: enabled, y: opacity, z: angle(rad), w: distance
6
+ dropShadowParams2 : vec4<f32>, // x: spread, y: size, z: blendMode, w: pad
7
+
8
+ // Inner Shadow (vec4 x 3)
9
+ innerShadowColor : vec4<f32>,
10
+ innerShadowParams : vec4<f32>, // x: enabled, y: opacity, z: angle(rad), w: distance
11
+ innerShadowParams2 : vec4<f32>, // x: choke, y: size, z: blendMode, w: pad
12
+
13
+ // Outer Glow (vec4 x 3)
14
+ outerGlowColor : vec4<f32>,
15
+ outerGlowParams : vec4<f32>, // x: enabled, y: opacity, z: size, w: spread
16
+ outerGlowParams2 : vec4<f32>, // x: blendMode, yzw: pad
17
+
18
+ // Inner Glow (vec4 x 3)
19
+ innerGlowColor : vec4<f32>,
20
+ innerGlowParams : vec4<f32>, // x: enabled, y: opacity, z: size, w: spread
21
+ innerGlowParams2 : vec4<f32>, // x: blendMode, yzw: pad
22
+
23
+ // Stroke (vec4 x 3)
24
+ strokeColor : vec4<f32>,
25
+ strokeParams : vec4<f32>, // x: enabled, y: size, z: position(0:out,1:center,2:in), w: opacity
26
+ strokeParams2 : vec4<f32>, // x: blendMode, yzw: pad
27
+
28
+ // Bevel & Emboss (vec4 x 5)
29
+ bevelHighlightColor : vec4<f32>,
30
+ bevelShadowColor : vec4<f32>,
31
+ bevelParams1 : vec4<f32>, // x: enabled, y: style, z: technique, w: depth
32
+ bevelParams2 : vec4<f32>, // x: direction(1:up, -1:down), y: size, z: soften, w: angle(rad)
33
+ bevelParams3 : vec4<f32>, // x: altitude(rad), y: hlOpacity, z: shOpacity, w: pad
34
+
35
+ // Color Overlay (vec4 x 2)
36
+ colorOverlayColor : vec4<f32>,
37
+ colorOverlayParams : vec4<f32>, // x: enabled, y: opacity, z: blendMode, w: pad
38
+ };
39
+
40
+ @group(0) @binding(0) var<uniform> u : LayerStyleUniforms;
41
+ @group(1) @binding(0) var tex : texture_2d<f32>;
42
+ @group(1) @binding(1) var samp : sampler;
43
+
44
+ struct VSOut {
45
+ @builtin(position) pos : vec4<f32>,
46
+ @location(0) uv : vec2<f32>,
47
+ };
48
+
49
+ @vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
50
+ var pos = array<vec2<f32>, 4>(
51
+ vec2<f32>(-1.0, 1.0),
52
+ vec2<f32>(1.0, 1.0),
53
+ vec2<f32>(-1.0, -1.0),
54
+ vec2<f32>(1.0, -1.0)
55
+ );
56
+ var uv = array<vec2<f32>, 4>(
57
+ vec2<f32>(0.0, 0.0),
58
+ vec2<f32>(1.0, 0.0),
59
+ vec2<f32>(0.0, 1.0),
60
+ vec2<f32>(1.0, 1.0)
61
+ );
62
+ return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
63
+ }
64
+
65
+ fn sampleAlpha(uv: vec2<f32>) -> f32 {
66
+ if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {
67
+ return 0.0;
68
+ }
69
+ return textureSampleLevel(tex, samp, uv, 0.0).a;
70
+ }
71
+
72
+ fn lum(c: vec3<f32>) -> f32 {
73
+ return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;
74
+ }
75
+
76
+ fn clip_color(c: vec3<f32>) -> vec3<f32> {
77
+ let l = lum(c);
78
+ let n = min(min(c.r, c.g), c.b);
79
+ let x = max(max(c.r, c.g), c.b);
80
+ var res = c;
81
+ if (n < 0.0) {
82
+ res = l + (((res - l) * l) / max(l - n, 1e-5));
83
+ }
84
+ if (x > 1.0) {
85
+ res = l + (((res - l) * (1.0 - l)) / max(x - l, 1e-5));
86
+ }
87
+ return res;
88
+ }
89
+
90
+ fn set_lum(c: vec3<f32>, l: f32) -> vec3<f32> {
91
+ let diff = l - lum(c);
92
+ return clip_color(c + vec3<f32>(diff));
93
+ }
94
+
95
+ fn sat(c: vec3<f32>) -> f32 {
96
+ return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);
97
+ }
98
+
99
+ fn set_sat(c: vec3<f32>, s: f32) -> vec3<f32> {
100
+ let c_min = min(min(c.r, c.g), c.b);
101
+ let c_max = max(max(c.r, c.g), c.b);
102
+ if (c_max <= c_min) {
103
+ return vec3<f32>(0.0);
104
+ }
105
+ return (c - vec3<f32>(c_min)) * s / max(c_max - c_min, 1e-5);
106
+ }
107
+
108
+ fn blendRgb(d_rgb: vec3<f32>, s_rgb: vec3<f32>, mode: u32) -> vec3<f32> {
109
+ switch (mode) {
110
+ case 1u: { // multiply
111
+ return d_rgb * s_rgb;
112
+ }
113
+ case 2u: { // screen
114
+ return d_rgb + s_rgb - d_rgb * s_rgb;
115
+ }
116
+ case 3u: { // overlay
117
+ return select(
118
+ 1.0 - 2.0 * (1.0 - d_rgb) * (1.0 - s_rgb),
119
+ 2.0 * d_rgb * s_rgb,
120
+ d_rgb < vec3<f32>(0.5)
121
+ );
122
+ }
123
+ case 4u: { // darken
124
+ return min(d_rgb, s_rgb);
125
+ }
126
+ case 5u: { // lighten
127
+ return max(d_rgb, s_rgb);
128
+ }
129
+ case 6u: { // color-dodge
130
+ return select(min(d_rgb / max(1.0 - s_rgb, vec3<f32>(1e-4)), vec3<f32>(1.0)), vec3<f32>(1.0), s_rgb >= vec3<f32>(0.999));
131
+ }
132
+ case 7u: { // color-burn
133
+ return select(1.0 - min((1.0 - d_rgb) / max(s_rgb, vec3<f32>(1e-4)), vec3<f32>(1.0)), vec3<f32>(0.0), s_rgb <= vec3<f32>(0.001));
134
+ }
135
+ case 8u: { // hard-light
136
+ return select(
137
+ 1.0 - 2.0 * (1.0 - d_rgb) * (1.0 - s_rgb),
138
+ 2.0 * d_rgb * s_rgb,
139
+ s_rgb < vec3<f32>(0.5)
140
+ );
141
+ }
142
+ case 9u: { // soft-light
143
+ return select(
144
+ d_rgb + (2.0 * s_rgb - 1.0) * (sqrt(d_rgb) - d_rgb),
145
+ d_rgb - (1.0 - 2.0 * s_rgb) * d_rgb * (1.0 - d_rgb),
146
+ s_rgb <= vec3<f32>(0.5)
147
+ );
148
+ }
149
+ case 10u: { // difference
150
+ return abs(d_rgb - s_rgb);
151
+ }
152
+ case 11u: { // exclusion
153
+ return d_rgb + s_rgb - 2.0 * d_rgb * s_rgb;
154
+ }
155
+ case 12u: { // hue
156
+ return set_lum(set_sat(s_rgb, sat(d_rgb)), lum(d_rgb));
157
+ }
158
+ case 13u: { // saturation
159
+ return set_lum(set_sat(d_rgb, sat(s_rgb)), lum(d_rgb));
160
+ }
161
+ case 14u: { // color
162
+ return set_lum(s_rgb, lum(d_rgb));
163
+ }
164
+ case 15u: { // luminosity
165
+ return set_lum(d_rgb, lum(s_rgb));
166
+ }
167
+ default: { // normal / source-over
168
+ return s_rgb;
169
+ }
170
+ }
171
+ }
172
+
173
+ fn compositeLayer(dst: vec4<f32>, src: vec4<f32>, blendMode: u32) -> vec4<f32> {
174
+ let sa = clamp(src.a, 0.0, 1.0);
175
+ if (sa <= 0.0001) {
176
+ return dst;
177
+ }
178
+ let da = clamp(dst.a, 0.0, 1.0);
179
+ if (da <= 0.0001) {
180
+ return src;
181
+ }
182
+
183
+ switch (blendMode) {
184
+ case 16u: { return dst * sa; } // mask-in / destination-in
185
+ case 17u: { return dst * (1.0 - sa); } // mask-out / destination-out
186
+ case 18u: { return src * da; } // source-in
187
+ case 19u: { return src * (1.0 - da); } // source-out
188
+ case 20u: { return src * da + dst * (1.0 - sa); } // source-atop
189
+ case 21u: { return dst + src * (1.0 - da); } // destination-over
190
+ case 22u: { return dst * sa + src * (1.0 - da); } // destination-atop
191
+ case 23u: { return src + dst; } // lighter / add
192
+ case 24u: { return src; } // copy
193
+ case 25u: { return src * (1.0 - da) + dst * (1.0 - sa); } // xor
194
+ default: {}
195
+ }
196
+
197
+ let b_rgb = blendRgb(dst.rgb, src.rgb, blendMode);
198
+ let out_a = sa + da * (1.0 - sa);
199
+ let out_rgb = select(
200
+ ((1.0 - da) * src.rgb + (1.0 - sa) * dst.rgb + sa * da * b_rgb) / max(out_a, 1e-5),
201
+ b_rgb,
202
+ out_a <= 1e-4
203
+ );
204
+
205
+ return vec4<f32>(out_rgb, out_a);
206
+ }
207
+
208
+ @fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {
209
+ let dimensions = vec2<f32>(textureDimensions(tex));
210
+ let texelSize = 1.0 / max(dimensions, vec2<f32>(1.0, 1.0));
211
+ let origColor = textureSampleLevel(tex, samp, in.uv, 0.0);
212
+ let origA = origColor.a;
213
+
214
+ var result = vec4<f32>(0.0);
215
+
216
+ // =========================================================================
217
+ // 1. DROP SHADOW (Bottom Layer)
218
+ // =========================================================================
219
+ if (u.dropShadowParams.x > 0.5) {
220
+ let opacity = u.dropShadowParams.y;
221
+ let angle = u.dropShadowParams.z;
222
+ let distance = u.dropShadowParams.w;
223
+ let spread = u.dropShadowParams2.x;
224
+ let size = u.dropShadowParams2.y;
225
+ let blendMode = u32(u.dropShadowParams2.z);
226
+
227
+ let shadowOffset = vec2<f32>(-cos(angle), sin(angle)) * distance * texelSize;
228
+ let shadowCenterUv = in.uv - shadowOffset;
229
+
230
+ var shadowAccum = 0.0;
231
+ var shadowWeightSum = 0.0;
232
+
233
+ let sigma = max(0.5, size * 0.4);
234
+ let sampleRadius = min(i32(ceil(size)), 24);
235
+
236
+ if (size <= 0.5) {
237
+ shadowAccum = sampleAlpha(shadowCenterUv);
238
+ shadowWeightSum = 1.0;
239
+ } else {
240
+ let stepVal = max(1, sampleRadius / 8);
241
+ for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
242
+ for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
243
+ let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
244
+ let distSq = f32(x * x + y * y);
245
+ let weight = exp(-0.5 * distSq / (sigma * sigma));
246
+ shadowAccum += sampleAlpha(shadowCenterUv + offset) * weight;
247
+ shadowWeightSum += weight;
248
+ }
249
+ }
250
+ }
251
+
252
+ let blurredShadow = shadowAccum / max(shadowWeightSum, 1e-4);
253
+ let spreadFactor = spread / 100.0;
254
+ let finalShadowAlpha = clamp(blurredShadow / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0) * opacity;
255
+
256
+ if (finalShadowAlpha > 0.001) {
257
+ let shadowCol = vec4<f32>(u.dropShadowColor.rgb, finalShadowAlpha);
258
+ result = compositeLayer(result, shadowCol, blendMode);
259
+ }
260
+ }
261
+
262
+ // =========================================================================
263
+ // 2. OUTER GLOW
264
+ // =========================================================================
265
+ if (u.outerGlowParams.x > 0.5) {
266
+ let opacity = u.outerGlowParams.y;
267
+ let size = u.outerGlowParams.z;
268
+ let spread = u.outerGlowParams.w;
269
+ let blendMode = u32(u.outerGlowParams2.x);
270
+
271
+ var glowAccum = 0.0;
272
+ var glowWeightSum = 0.0;
273
+ let sigma = max(0.5, size * 0.4);
274
+ let sampleRadius = min(i32(ceil(size)), 24);
275
+
276
+ if (size <= 0.5) {
277
+ glowAccum = origA;
278
+ glowWeightSum = 1.0;
279
+ } else {
280
+ let stepVal = max(1, sampleRadius / 8);
281
+ for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
282
+ for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
283
+ let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
284
+ let distSq = f32(x * x + y * y);
285
+ let weight = exp(-0.5 * distSq / (sigma * sigma));
286
+ glowAccum += sampleAlpha(in.uv + offset) * weight;
287
+ glowWeightSum += weight;
288
+ }
289
+ }
290
+ }
291
+
292
+ let blurredGlow = glowAccum / max(glowWeightSum, 1e-4);
293
+ let spreadFactor = spread / 100.0;
294
+ let spreadGlow = clamp(blurredGlow / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0);
295
+ let finalGlowAlpha = max(0.0, spreadGlow - origA) * opacity;
296
+
297
+ if (finalGlowAlpha > 0.001) {
298
+ let glowCol = vec4<f32>(u.outerGlowColor.rgb, finalGlowAlpha);
299
+ result = compositeLayer(result, glowCol, blendMode);
300
+ }
301
+ }
302
+
303
+ // =========================================================================
304
+ // 3. OUTSIDE STROKE
305
+ // =========================================================================
306
+ if (u.strokeParams.x > 0.5 && u.strokeParams.z < 0.5) { // position == 0: outside
307
+ let size = u.strokeParams.y;
308
+ let opacity = u.strokeParams.w;
309
+ let blendMode = u32(u.strokeParams2.x);
310
+
311
+ var maxAlpha = 0.0;
312
+ let sampleRadius = min(i32(ceil(size)), 24);
313
+ let sizeSq = size * size;
314
+
315
+ for (var y = -sampleRadius; y <= sampleRadius; y++) {
316
+ for (var x = -sampleRadius; x <= sampleRadius; x++) {
317
+ let distSq = f32(x * x + y * y);
318
+ if (distSq <= sizeSq) {
319
+ let sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);
320
+ maxAlpha = max(maxAlpha, sAlpha);
321
+ }
322
+ }
323
+ }
324
+
325
+ let strokeAlpha = clamp(maxAlpha - origA, 0.0, 1.0) * opacity;
326
+ if (strokeAlpha > 0.001) {
327
+ let strokeCol = vec4<f32>(u.strokeColor.rgb, strokeAlpha);
328
+ result = compositeLayer(result, strokeCol, blendMode);
329
+ }
330
+ }
331
+
332
+ // =========================================================================
333
+ // 4. BASE IMAGE LAYER (with Color Overlay, Bevel & Emboss, Inner Glow/Shadow)
334
+ // =========================================================================
335
+ if (origA > 0.001) {
336
+ var baseRgb = origColor.rgb;
337
+
338
+ // Color Overlay
339
+ if (u.colorOverlayParams.x > 0.5) {
340
+ let overlayOpacity = u.colorOverlayParams.y;
341
+ let overlayBlendMode = u32(u.colorOverlayParams.z);
342
+ let blendedOverlay = blendRgb(baseRgb, u.colorOverlayColor.rgb, overlayBlendMode);
343
+ baseRgb = mix(baseRgb, blendedOverlay, overlayOpacity);
344
+ }
345
+
346
+ // Bevel & Emboss
347
+ if (u.bevelParams1.x > 0.5) {
348
+ let style = u.bevelParams1.y;
349
+ let technique = u.bevelParams1.z;
350
+ let depth = u.bevelParams1.w / 100.0;
351
+ let direction = u.bevelParams2.x;
352
+ let bevelSize = max(0.5, u.bevelParams2.y);
353
+ let soften = u.bevelParams2.z;
354
+ let lightAngle = u.bevelParams2.w;
355
+ let lightAltitude = u.bevelParams3.x;
356
+ let hlOpacity = u.bevelParams3.y;
357
+ let shOpacity = u.bevelParams3.z;
358
+
359
+ let lightDir = normalize(vec3<f32>(
360
+ -cos(lightAngle) * cos(lightAltitude),
361
+ sin(lightAngle) * cos(lightAltitude),
362
+ sin(lightAltitude)
363
+ ));
364
+
365
+ let stepSize = max(1.0, bevelSize * 0.5 + soften) * texelSize;
366
+ let aL = sampleAlpha(in.uv - vec2<f32>(stepSize.x, 0.0));
367
+ let aR = sampleAlpha(in.uv + vec2<f32>(stepSize.x, 0.0));
368
+ let aT = sampleAlpha(in.uv - vec2<f32>(0.0, stepSize.y));
369
+ let aB = sampleAlpha(in.uv + vec2<f32>(0.0, stepSize.y));
370
+
371
+ var dx = (aR - aL) * depth * direction;
372
+ var dy = (aB - aT) * depth * direction;
373
+
374
+ if (technique > 0.5) { // ChiselHard or ChiselSoft
375
+ let rampFactor = select(2.0, 1.5, technique > 1.5);
376
+ dx = clamp(dx * rampFactor, -1.0, 1.0);
377
+ dy = clamp(dy * rampFactor, -1.0, 1.0);
378
+ }
379
+
380
+ let normal = normalize(vec3<f32>(-dx, -dy, 1.0));
381
+ let nDotL = dot(normal, lightDir);
382
+
383
+ let highlightAmount = max(0.0, nDotL) * hlOpacity;
384
+ let shadowAmount = max(0.0, -nDotL) * shOpacity;
385
+
386
+ let hlColor = mix(baseRgb, u.bevelHighlightColor.rgb + baseRgb, highlightAmount);
387
+ let shColor = mix(baseRgb, baseRgb * (1.0 - shadowAmount) + u.bevelShadowColor.rgb * shadowAmount, shadowAmount);
388
+ baseRgb = mix(shColor, hlColor, clamp(nDotL * 0.5 + 0.5, 0.0, 1.0));
389
+ }
390
+
391
+ // Inner Glow
392
+ if (u.innerGlowParams.x > 0.5) {
393
+ let igOpacity = u.innerGlowParams.y;
394
+ let igSize = u.innerGlowParams.z;
395
+ let igSpread = u.innerGlowParams.w;
396
+ let igBlendMode = u32(u.innerGlowParams2.x);
397
+
398
+ var innerAccum = 0.0;
399
+ var innerWeight = 0.0;
400
+ let sigma = max(0.5, igSize * 0.4);
401
+ let sampleRadius = min(i32(ceil(igSize)), 16);
402
+ let stepVal = max(1, sampleRadius / 6);
403
+
404
+ for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
405
+ for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
406
+ let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
407
+ let weight = exp(-0.5 * f32(x * x + y * y) / (sigma * sigma));
408
+ innerAccum += sampleAlpha(in.uv + offset) * weight;
409
+ innerWeight += weight;
410
+ }
411
+ }
412
+
413
+ let blurredInner = innerAccum / max(innerWeight, 1e-4);
414
+ let innerGlowMask = max(0.0, origA - blurredInner);
415
+ let spreadFactor = igSpread / 100.0;
416
+ let finalInnerGlowAlpha = clamp(innerGlowMask / max(1.0 - spreadFactor * 0.95, 0.01), 0.0, 1.0) * igOpacity;
417
+
418
+ if (finalInnerGlowAlpha > 0.001) {
419
+ let igBlended = blendRgb(baseRgb, u.innerGlowColor.rgb, igBlendMode);
420
+ baseRgb = mix(baseRgb, igBlended, finalInnerGlowAlpha);
421
+ }
422
+ }
423
+
424
+ // Inner Shadow
425
+ if (u.innerShadowParams.x > 0.5) {
426
+ let isOpacity = u.innerShadowParams.y;
427
+ let isAngle = u.innerShadowParams.z;
428
+ let isDistance = u.innerShadowParams.w;
429
+ let isChoke = u.innerShadowParams2.x;
430
+ let isSize = u.innerShadowParams2.y;
431
+ let isBlendMode = u32(u.innerShadowParams2.z);
432
+
433
+ let isOffset = vec2<f32>(-cos(isAngle), sin(isAngle)) * isDistance * texelSize;
434
+ let shiftedA = sampleAlpha(in.uv + isOffset);
435
+
436
+ var isAccum = 0.0;
437
+ var isWeight = 0.0;
438
+ let sigma = max(0.5, isSize * 0.4);
439
+ let sampleRadius = min(i32(ceil(isSize)), 16);
440
+ let stepVal = max(1, sampleRadius / 6);
441
+
442
+ for (var y = -sampleRadius; y <= sampleRadius; y += stepVal) {
443
+ for (var x = -sampleRadius; x <= sampleRadius; x += stepVal) {
444
+ let offset = vec2<f32>(f32(x), f32(y)) * texelSize;
445
+ let weight = exp(-0.5 * f32(x * x + y * y) / (sigma * sigma));
446
+ let sShifted = sampleAlpha(in.uv + isOffset + offset);
447
+ let sOrig = sampleAlpha(in.uv + offset);
448
+ isAccum += max(0.0, sOrig - sShifted) * weight;
449
+ isWeight += weight;
450
+ }
451
+ }
452
+
453
+ let blurredIS = isAccum / max(isWeight, 1e-4);
454
+ let chokeFactor = isChoke / 100.0;
455
+ let finalISAlpha = clamp(blurredIS / max(1.0 - chokeFactor * 0.95, 0.01), 0.0, 1.0) * isOpacity;
456
+
457
+ if (finalISAlpha > 0.001) {
458
+ let isBlended = blendRgb(baseRgb, u.innerShadowColor.rgb, isBlendMode);
459
+ baseRgb = mix(baseRgb, isBlended, finalISAlpha);
460
+ }
461
+ }
462
+
463
+ // Inside Stroke
464
+ if (u.strokeParams.x > 0.5 && u.strokeParams.z > 1.5) { // position == 2: inside
465
+ let size = u.strokeParams.y;
466
+ let opacity = u.strokeParams.w;
467
+ let blendMode = u32(u.strokeParams2.x);
468
+
469
+ var minAlpha = 1.0;
470
+ let sampleRadius = min(i32(ceil(size)), 24);
471
+ let sizeSq = size * size;
472
+
473
+ for (var y = -sampleRadius; y <= sampleRadius; y++) {
474
+ for (var x = -sampleRadius; x <= sampleRadius; x++) {
475
+ let distSq = f32(x * x + y * y);
476
+ if (distSq <= sizeSq) {
477
+ let sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);
478
+ minAlpha = min(minAlpha, sAlpha);
479
+ }
480
+ }
481
+ }
482
+
483
+ let insideStrokeAlpha = clamp(origA - minAlpha, 0.0, 1.0) * opacity;
484
+ if (insideStrokeAlpha > 0.001) {
485
+ let sBlended = blendRgb(baseRgb, u.strokeColor.rgb, blendMode);
486
+ baseRgb = mix(baseRgb, sBlended, insideStrokeAlpha);
487
+ }
488
+ }
489
+
490
+ let baseLayer = vec4<f32>(baseRgb, origA);
491
+ result = compositeLayer(result, baseLayer, 0u);
492
+ }
493
+
494
+ // =========================================================================
495
+ // 5. CENTER STROKE
496
+ // =========================================================================
497
+ if (u.strokeParams.x > 0.5 && u.strokeParams.z >= 0.5 && u.strokeParams.z <= 1.5) { // position == 1: center
498
+ let size = u.strokeParams.y;
499
+ let opacity = u.strokeParams.w;
500
+ let blendMode = u32(u.strokeParams2.x);
501
+
502
+ var maxAlpha = 0.0;
503
+ var minAlpha = 1.0;
504
+ let halfSize = max(0.5, size * 0.5);
505
+ let sampleRadius = min(i32(ceil(halfSize)), 24);
506
+ let halfSizeSq = halfSize * halfSize;
507
+
508
+ for (var y = -sampleRadius; y <= sampleRadius; y++) {
509
+ for (var x = -sampleRadius; x <= sampleRadius; x++) {
510
+ let distSq = f32(x * x + y * y);
511
+ if (distSq <= halfSizeSq) {
512
+ let sAlpha = sampleAlpha(in.uv + vec2<f32>(f32(x), f32(y)) * texelSize);
513
+ maxAlpha = max(maxAlpha, sAlpha);
514
+ minAlpha = min(minAlpha, sAlpha);
515
+ }
516
+ }
517
+ }
518
+
519
+ let centerStrokeAlpha = clamp(maxAlpha - minAlpha, 0.0, 1.0) * opacity;
520
+ if (centerStrokeAlpha > 0.001) {
521
+ let strokeCol = vec4<f32>(u.strokeColor.rgb, centerStrokeAlpha);
522
+ result = compositeLayer(result, strokeCol, blendMode);
523
+ }
524
+ }
525
+
526
+ // Output premultiplied alpha for QuadPipeline / WebGPU rendering
527
+ return vec4<f32>(result.rgb * result.a, result.a);
528
+ }
529
+ `,ne=new WeakMap;function va(r,o){let i=ne.get(r);if(i)return i;let s=r.createShaderModule({code:Sa}),u=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),c=r.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),p=r.createPipelineLayout({bindGroupLayouts:[u,c]});return i={pipeline:r.createRenderPipeline({layout:p,vertex:{module:s,entryPoint:"vs"},fragment:{module:s,entryPoint:"fs",targets:[{format:o,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}}),uniformLayout:u,textureLayout:c},ne.set(r,i),i}var e=new Float32Array(88),se=async r=>{let{ctx:o,encoder:i,pass:s,targetView:u,targetTexture:c,targetWidth:p,targetHeight:_,props:f,drawChild:de}=r,l=f.virtualMedia?.operation;if(l?.op!=="LayerStyle"||!l)return;let q=f.virtualMedia.children?.[0];if(!q)return;s.end();let C=p,R=_,ce=f.elapsedMs!==void 0?f.elapsedMs/1e3:(f.frame??0)/(f.fps||30),t=(V,F,x=0,z=1e3)=>{if(V&&l.inputs?.[V]?.connectionValid){let y=l.inputs[V].outputItem;if(!y)return Math.max(x,Math.min(z,F));if(y.type==="Number"){let n=typeof y.data=="number"?y.data:y.data?.value??F;return Math.max(x,Math.min(z,n))}if(y.type==="Signal"){let n=y.data;if(typeof n=="number")return Math.max(x,Math.min(z,n));if(n&&typeof n=="object"){if(typeof n.value=="number")return Math.max(x,Math.min(z,n.value));let ea=typeof n.amplitude=="number"?n.amplitude:1,aa=typeof n.frequency=="number"?n.frequency:1,la=typeof n.phase=="number"?n.phase:0,oa=typeof n.offset=="number"?n.offset:F,ta=ce,ra=oa+ea*Math.sin(2*Math.PI*aa*ta+la);return Math.max(x,Math.min(z,ra))}}}return Math.max(x,Math.min(z,F))},K=ie(l),W=K.padX,Y=K.padY,M=Math.max(1,C-W*2),P=Math.max(1,R-Y*2),G=o.renderer.getTemporaryTexture(M,P,[...f.excludeTextures||[],c]),j=G.createView();o.renderer.beginFrame(i,j,{r:0,g:0,b:0,a:0},M,P,"clear").end(),await de(q,{...f,virtualMedia:q,containerWidth:M,containerHeight:P},j,G,M,P);let X=o.renderer.getTemporaryTexture(C,R,[G,c,...f.excludeTextures||[]]),Q=X.createView(),J=o.renderer.beginFrame(i,Q,{r:0,g:0,b:0,a:0},C,R,"clear");o.renderer.drawTexture(J,G,{x:W,y:Y,width:M,height:P},{opacity:1}),J.end();let{pipeline:ue,uniformLayout:pe,textureLayout:fe}=va(o.device,o.renderer.format),me=o.renderer.samplerCache.getSampler(o.device),m=l.dropShadow??{},b=l.innerShadow??{},S=l.outerGlow??{},v=l.innerGlow??{},w=l.stroke??{},d=l.bevelEmboss??{},k=l.colorOverlay??{},E=h(m.color??"#000000"),be=t(l.dropShadowOpacityHandleId,m.opacity??.75,0,1),ge=t(l.dropShadowAngleHandleId,m.angle??120,0,360)*Math.PI/180,he=t(l.dropShadowDistanceHandleId,m.distance??10,0,500),ye=t(l.dropShadowSpreadHandleId,m.spread??0,0,100),Se=t(l.dropShadowSizeHandleId,m.size??10,0,250),ve=A[m.blendMode??"multiply"]??1,L=h(b.color??"#000000"),we=t(l.innerShadowOpacityHandleId,b.opacity??.75,0,1),xe=t(l.innerShadowAngleHandleId,b.angle??120,0,360)*Math.PI/180,ze=t(l.innerShadowDistanceHandleId,b.distance??5,0,500),Oe=t(l.innerShadowChokeHandleId,b.choke??0,0,100),Ae=t(l.innerShadowSizeHandleId,b.size??5,0,250),Me=A[b.blendMode??"multiply"]??1,H=h(S.color??"#ffffff"),Pe=t(l.outerGlowOpacityHandleId,S.opacity??.75,0,1),Ge=t(l.outerGlowSizeHandleId,S.size??15,0,250),Ie=t(l.outerGlowSpreadHandleId,S.spread??0,0,100),_e=A[S.blendMode??"screen"]??2,B=h(v.color??"#ffffff"),Ce=t(l.innerGlowOpacityHandleId,v.opacity??.75,0,1),Re=t(l.innerGlowSizeHandleId,v.size??15,0,250),ke=t(l.innerGlowSpreadHandleId,v.spread??0,0,100),Ee=A[v.blendMode??"screen"]??2,T=h(w.color??"#ffffff"),Le=t(l.strokeSizeHandleId,w.size??2,0,100),He=ya[w.position??"outside"]??0,Be=t(l.strokeOpacityHandleId,w.opacity??1,0,1),Te=A[w.blendMode??"normal"]??0,D=h(d.highlightColor??"#ffffff"),N=h(d.shadowColor??"#000000"),De=ga[d.style??"InnerBevel"]??0,Ne=ha[d.technique??"Smooth"]??0,Ue=t(l.bevelEmbossDepthHandleId,d.depth??100,1,1e3),Fe=d.direction==="Down"?-1:1,qe=t(l.bevelEmbossSizeHandleId,d.size??5,0,250),Ve=t(l.bevelEmbossSoftenHandleId,d.soften??0,0,50),Ke=t(l.bevelEmbossAngleHandleId,d.angle??120,0,360)*Math.PI/180,We=t(l.bevelEmbossAltitudeHandleId,d.altitude??30,0,90)*Math.PI/180,Ye=t(l.bevelEmbossHighlightOpacityHandleId,d.highlightOpacity??.75,0,1),je=t(l.bevelEmbossShadowOpacityHandleId,d.shadowOpacity??.75,0,1),U=h(k.color??"#ff0000"),Xe=t(l.colorOverlayOpacityHandleId,k.opacity??1,0,1),Qe=A[k.blendMode??"normal"]??0;e.fill(0),e[0]=E[0],e[1]=E[1],e[2]=E[2],e[3]=E[3],e[4]=m.enabled?1:0,e[5]=be,e[6]=ge,e[7]=he,e[8]=ye,e[9]=Se,e[10]=ve,e[11]=0,e[12]=L[0],e[13]=L[1],e[14]=L[2],e[15]=L[3],e[16]=b.enabled?1:0,e[17]=we,e[18]=xe,e[19]=ze,e[20]=Oe,e[21]=Ae,e[22]=Me,e[23]=0,e[24]=H[0],e[25]=H[1],e[26]=H[2],e[27]=H[3],e[28]=S.enabled?1:0,e[29]=Pe,e[30]=Ge,e[31]=Ie,e[32]=_e,e[33]=0,e[34]=0,e[35]=0,e[36]=B[0],e[37]=B[1],e[38]=B[2],e[39]=B[3],e[40]=v.enabled?1:0,e[41]=Ce,e[42]=Re,e[43]=ke,e[44]=Ee,e[45]=0,e[46]=0,e[47]=0,e[48]=T[0],e[49]=T[1],e[50]=T[2],e[51]=T[3],e[52]=w.enabled?1:0,e[53]=Le,e[54]=He,e[55]=Be,e[56]=Te,e[57]=0,e[58]=0,e[59]=0,e[60]=D[0],e[61]=D[1],e[62]=D[2],e[63]=D[3],e[64]=N[0],e[65]=N[1],e[66]=N[2],e[67]=N[3],e[68]=d.enabled?1:0,e[69]=De,e[70]=Ne,e[71]=Ue,e[72]=Fe,e[73]=qe,e[74]=Ve,e[75]=Ke,e[76]=We,e[77]=Ye,e[78]=je,e[79]=0,e[80]=U[0],e[81]=U[1],e[82]=U[2],e[83]=U[3],e[84]=k.enabled?1:0,e[85]=Xe,e[86]=Qe,e[87]=0;let Je=o.renderer.getTemporaryBuffer(e),Ze=o.device.createBindGroup({layout:pe,entries:[{binding:0,resource:{buffer:Je}}]}),$e=o.device.createBindGroup({layout:fe,entries:[{binding:0,resource:Q},{binding:1,resource:me}]}),Z=o.renderer.getTemporaryTexture(C,R,[X,G,c,...f.excludeTextures||[]]),I=i.beginRenderPass({colorAttachments:[{view:Z.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});I.setPipeline(ue),I.setBindGroup(0,Ze),I.setBindGroup(1,$e),I.draw(4),I.end();let $=o.renderer.beginFrame(i,u,{r:0,g:0,b:0,a:0},p,_,"load");o.renderer.drawTexture($,Z,{x:0,y:0,width:p,height:_},{opacity:l.opacity??1}),r.pass=$};var ka=ee({WebGPURenderer:se});export{ka as a};
@@ -0,0 +1 @@
1
+ import{a as ct}from"./chunk-37EFVZWT.mjs";import{c as lt,e as tt,f as dt}from"./chunk-VSSB73UU.mjs";import{i as ut,l as N}from"./chunk-24P6DAB3.mjs";import{d as st}from"./chunk-YSTLMWCG.mjs";import{d as C,e as H}from"./chunk-BVF64D6H.mjs";H();H();H();function mt(e,n){return Math.round(e*n)}function Q(e,n,s={timeOffsetSec:0}){if(!e)return e;let{operation:b,metadata:u={},children:c=[]}=e,{timeOffsetSec:h,durationLimitMs:i}=s;if(!b)return{...e,children:(c||[]).map(t=>Q(t,n,s))};let d=b.timeline,p=d?.segments||[],m=N(e)?.durationMs??0;if(p.length>0){let t=p.reduce((a,A)=>{let z=A.endSec!=null?A.endSec-A.startSec:0,v=Math.max(1,Math.round(z*n));return a+v},0);t>0&&(m=t/n*1e3)}let f={...b},o=d?.startFrame??f.startFrame;if(typeof o=="number"){let t=mt(h,n);f.startFrame=o-t}let M={...u,durationMs:m},r=typeof o=="number"||f.op==="compose"?{timeOffsetSec:0,durationLimitMs:void 0}:{timeOffsetSec:h,durationLimitMs:i},S=(c||[]).map(t=>Q(t,n,r));return{metadata:M,operation:f,children:S}}var gt=typeof C<"u"&&/^(debug|trace)$/i.test(C.env?.LOG_LEVEL??""),y={debug:(e,...n)=>{gt&&(typeof e=="object"&&e!==null?console.info("[AudioExtractor]",e,...n):console.info(`[AudioExtractor] ${e}`,...n))},warn:(e,...n)=>{typeof e=="object"&&e!==null?console.warn("[AudioExtractor]",e,...n):console.warn(`[AudioExtractor] ${e}`,...n)},error:(e,...n)=>{typeof e=="object"&&e!==null?console.error("[AudioExtractor]",e,...n):console.error(`[AudioExtractor] ${e}`,...n)}};(typeof window>"u"||typeof C<"u"&&C.versions?.node)&&import("./server-utils-2FAIV45N.mjs").then(e=>{e.mediaLogger&&(y=e.mediaLogger)}).catch(()=>{});var ht=()=>{if(typeof window>"u")return Promise.resolve();let e=globalThis.scheduler;return typeof e?.yield=="function"?e.yield():new Promise(n=>setTimeout(n,0))},St=async(e=3e4)=>{await new Promise(s=>setTimeout(s,100));let n=Date.now();return new Promise(s=>{let b=()=>{let u=typeof window<"u"&&window.renderer_delayRenderHandles?window.renderer_delayRenderHandles:[],c=typeof globalThis<"u"?globalThis.__GATEWAI_DELAYS__:null,h=u.length>0,i=c instanceof Set&&c.size>0;if(!h&&!i){s();return}if(Date.now()-n>e){y.warn(`[AudioExtractor] waitForDelayRender timed out waiting for handles: ${JSON.stringify({browserHandles:u,globalDelays:c?Array.from(c):[]})}`),s();return}setTimeout(b,50)};b()})};async function Mt(e){y.debug(`[AudioExtractor] decodeAudioSource started for url: ${e}`);try{if(typeof window<"u"&&typeof window.document<"u"&&!(typeof C<"u"&&C.versions&&C.versions.node)){y.debug(`[AudioExtractor] Browser detected. Fetching arrayBuffer for ${e}...`);let b=window.AudioContext||window.webkitAudioContext;if(!b)throw new Error("AudioContext is not supported in this browser");let u=new b;try{let c=await fetch(e);if(y.debug(`[AudioExtractor] Fetch response status for ${e}: ${c.status} (${c.statusText})`),!c.ok)throw new Error(`Failed to fetch audio source: ${c.statusText}`);let h=await c.arrayBuffer();y.debug(`[AudioExtractor] Fetched ${h.byteLength} bytes. Decoding audio data...`);let i=await u.decodeAudioData(h);y.debug(`[AudioExtractor] Decoded successfully: ${i.numberOfChannels} channels, sampleRate: ${i.sampleRate}, duration: ${i.duration}s`);let d=[];for(let p=0;p<i.numberOfChannels;p++)d.push(new Float32Array(i.getChannelData(p)));return{channels:d,sampleRate:i.sampleRate}}finally{u.close(),y.debug(`[AudioExtractor] AudioContext closed for ${e}`)}}let s=!1;try{y.debug(`[AudioExtractor] Server / Node.js detected. Acquiring from inputStore for ${e}...`);let b=await tt.acquire(e);s=!0,y.debug("[AudioExtractor] inputStore acquired. Retrieving primary audio track...");let u=await b.getPrimaryAudioTrack();if(!u)return y.warn(`[AudioExtractor] No primary audio track found in input for ${e}`),null;let h=new lt(u).samples(0),i=[],d=0,p=48e3,m=1;y.debug(`[AudioExtractor] Starting mediabunny generator loop for ${e}...`);for await(let o of h){p=o.sampleRate,m=o.numberOfChannels;let M=o.numberOfFrames;if(i.length===0)for(let l=0;l<m;l++)i.push([]);for(let l=0;l<m;l++){let r;try{let S=o.allocationSize({planeIndex:l,format:"f32-planar"});r=new Float32Array(S/4),o.copyTo(r,{planeIndex:l,format:"f32-planar"})}catch{let S=o.allocationSize({planeIndex:l});if(o.format==="s16"||o.format==="s16-planar"){let t=new Int16Array(S/2);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/32768}else if(o.format==="s32"||o.format==="s32-planar"){let t=new Int32Array(S/4);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=(t[a]??0)/2147483648}else if(o.format==="u8"||o.format==="u8-planar"){let t=new Uint8Array(S);o.copyTo(t,{planeIndex:l}),r=new Float32Array(t.length);for(let a=0;a<t.length;a++)r[a]=((t[a]??128)-128)/128}else r=new Float32Array(S/4),o.copyTo(r,{planeIndex:l})}i[l].push(r)}d+=M,o.close()}return y.debug(`[AudioExtractor] Generator loop finished. Decoded total frames: ${d}`),d===0||i.length===0?null:{channels:i.map(o=>{let M=new Float32Array(d),l=0;for(let r of o)M.set(r,l),l+=r.length;return M}),sampleRate:p}}catch(b){if(typeof C<"u"&&C.versions?.node)try{let{execSync:u}=await import("./child_process-AIL2NBWS.mjs"),c=u(`ffmpeg -v error -i "${e}" -f f32le -ar 48000 -ac 2 pipe:1`,{maxBuffer:100*1024*1024}),h=c.byteLength/4,i=h/2,d=new Float32Array(c.buffer,c.byteOffset,h),p=new Float32Array(i),m=new Float32Array(i);for(let f=0;f<i;f++)p[f]=d[f*2],m[f]=d[f*2+1];return{channels:[p,m],sampleRate:48e3}}catch(u){y.warn({ffmpegErr:u},`[AudioExtractor] ffmpeg fallback decode failed for ${e}`)}return y.error({err:b},`[AudioExtractor] Failed to decode source ${e}`),null}finally{s&&tt.release(e)}}catch(n){return y.error({err:n},`[AudioExtractor] Failed to decode source ${e}`),null}}async function ft(e,n,s,b,u,c){let h=new Float32Array(u),d=n/s*b,p=1e5;for(let m=0;m<u;m++){m>0&&m%p===0&&await ht();let f=c+m*d,o=Math.floor(f),M=Math.ceil(f);if(o<0){h[m]=0;continue}if(o>=e.length)break;let l=f-o,r=e[o]??0,S=M>=0&&M<e.length?e[M]??r:r,t=r+l*(S-r);h[m]=Number.isFinite(t)?t:0}return h}async function Ot(e,n,s=48e3,b,u){y.debug(`[AudioExtractor] mixAudioTracks started. FPS: ${n}, targetSampleRate: ${s}`),await St(),ct.registerSignalsFromComposition(u,e);let c=N(e)?.durationMs||1e3,h=c/1e3,i=Math.ceil(h*s);y.debug(`[AudioExtractor] Composition total duration: ${c}ms (${h}s). Total mixed samples to allocate: ${i}`);let d=new Float32Array(i),p=new Float32Array(i),m=[d,p],f=new Map;async function o(t,a,A,z,v,B){if(!t)return null;let k=t.operation;if(!k){let D=N(t)?.durationMs??0,P=Math.round(D/1e3*n),V=B!==null?P>0?Math.min(B,P):B:P,O=Math.ceil(V/n*s);if(O<=0)return null;let j=new Float32Array(O),U=new Float32Array(O),G=[j,U];for(let x of t.children){let q=await o(x,a,A,z,v,V);if(q){let F=x.operation,g=F?.startFrame??F?.timeline?.startFrame??0,E=Math.round(g/n*s);for(let R=0;R<2;R++){let w=G[R],L=q[R],$=Math.min(L.length,w.length-E);for(let T=0;T<$;T++)E+T>=0&&(w[E+T]+=L[T])}}}return G}let J=z*(k.volume??1)*(k.opacity===0?0:1)*(k.muted?0:1),et=v,pt=k.startFrame??k.timeline?.startFrame??0,yt=A+pt,nt=k.timeline?.segments||[],wt=N(t)?.durationMs??0,W=Math.round(wt/1e3*n),bt=B!==null?W>0?Math.min(B,W):B:W,I=Math.ceil(bt/n*s);if(I<=0)return null;let ot=new Float32Array(I),rt=new Float32Array(I),X=[ot,rt],at=async(D,P)=>{let V=D?D.startSec:0,O=a+V,j=yt+P,U=0;D?U=Math.max(1,Math.round(((D.endSec??0)-D.startSec)*n)):U=W;let G=B!==null?Math.min(B,U):U,x=Math.round(P/n*s);if(k.op==="source"){let F=ut(t),g=dt(t);if(g.sourceUrl&&(F==="Audio"||F==="Video")&&J>0){let E=Math.max(.5,et*(Number(g.speed)||1)),R=Math.max(0,(Number(g.trimStartSec)||0)+O),w=f.get(g.sourceUrl);if(w===void 0&&(w=await Mt(g.sourceUrl),f.set(g.sourceUrl,w)),w){let L=G/n,$=Math.min(I-x,Math.ceil(L*s));if($>0&&x<I){let T=Math.round(R*w.sampleRate),K=w.channels[0],Z=w.channels.length>1?w.channels[1]:w.channels[0],_=await ft(K,w.sampleRate,s,E,$,T),At=await ft(Z,w.sampleRate,s,E,$,T);for(let Y=0;Y<$;Y++){let it=x+Y;ot[it]+=_[Y]*J,rt[it]+=At[Y]*J}}}await ht()}}if(t.children)for(let F of t.children){let g=await o(F,O,j,J,et,G);if(g){let E=F.operation,R=E?.startFrame??E?.timeline?.startFrame??0,w=Math.round(R/n*s),L=x+w;for(let $=0;$<2;$++){let T=X[$],K=g[$],Z=Math.min(K.length,T.length-L);for(let _=0;_<Z;_++)L+_>=0&&(T[L+_]+=K[_])}}}let q=st.get(k.op);if(q)try{let F=G/n,g=Math.min(I-x,Math.ceil(F*s));if(g>0&&x<I&&x>=0){let E=X.map(L=>L.subarray(x,x+g)),R=(j/n+O)*1e3,w=N(t)?.durationMs??void 0;await q(E,s,t,{device:b,frame:j,fps:n,renderId:u,elapsedMs:R,durationMs:w})}}catch(F){y.error({err:F},`[AudioExtractor] Custom plugin for operation '${k.op}' failed`)}};if(nt.length>0){let D=0;for(let P of nt){let V=(P.endSec??0)-P.startSec,O=Math.max(1,Math.round(V*n));await at(P,D),D+=O}}else await at(null,0);return X}let M=Q(e,n),l=await o(M,0,0,1,1,null);if(l)for(let t=0;t<2;t++){let a=m[t],A=l[t],z=Math.min(A.length,a.length);for(let v=0;v<z;v++)a[v]=A[v]}f.clear();let r=0;for(let t=0;t<i;t++){let a=Math.abs(d[t]??0),A=Math.abs(p[t]??0);a>r&&(r=a),A>r&&(r=A)}let S=r>.95?.92/r:1;for(let t=0;t<i;t++){let a=(d[t]??0)*S,A=(p[t]??0)*S;d[t]=Number.isFinite(a)?Math.tanh(a):0,p[t]=Number.isFinite(A)?Math.tanh(A):0}return{channels:m,sampleRate:s}}export{Mt as a,Ot as b};