framefields 2.9.2 → 2.10.0-canary.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 (518) hide show
  1. package/NOTICE.md +18 -0
  2. package/README.md +10 -7
  3. package/dist/audio/index.d.mts +5 -4
  4. package/dist/audio/index.mjs +13 -13
  5. package/dist/{audio-Ccpl9mjV.d.mts → audio-1X5qNNmk.d.mts} +4 -3
  6. package/dist/audio-1X5qNNmk.d.mts.map +1 -0
  7. package/dist/{audio-a0MFkK6J.mjs → audio-KHBadECb.mjs} +1 -1
  8. package/dist/{audio-a0MFkK6J.mjs.map → audio-KHBadECb.mjs.map} +1 -1
  9. package/dist/{audio-BfQg37MW.mjs → audio-YpBRdI7r.mjs} +4 -4
  10. package/dist/{audio-BfQg37MW.mjs.map → audio-YpBRdI7r.mjs.map} +1 -1
  11. package/dist/{check-result-C3jlgV2i.mjs → check-result-Culfu7Nx.mjs} +1 -1
  12. package/dist/{check-result-C3jlgV2i.mjs.map → check-result-Culfu7Nx.mjs.map} +1 -1
  13. package/dist/cli/check-worker.mjs +50 -50
  14. package/dist/cli.mjs +179 -3
  15. package/dist/cli.mjs.map +1 -1
  16. package/dist/cloud/index.d.mts +118 -0
  17. package/dist/cloud/index.d.mts.map +1 -0
  18. package/dist/cloud/index.mjs +3 -0
  19. package/dist/cloud-xcfV4J03.mjs +233 -0
  20. package/dist/cloud-xcfV4J03.mjs.map +1 -0
  21. package/dist/components/index.d.mts +14 -11
  22. package/dist/components/index.mjs +47 -47
  23. package/dist/dist-2_lT3Dwc.mjs +1434 -0
  24. package/dist/dist-2_lT3Dwc.mjs.map +1 -0
  25. package/dist/{dist-Buaaj-Ul.mjs → dist-BIE8fvlv.mjs} +1 -1
  26. package/dist/{dist-Buaaj-Ul.mjs.map → dist-BIE8fvlv.mjs.map} +1 -1
  27. package/dist/{dist-BlIrsfcn.mjs → dist-Bf2_efYP.mjs} +1 -1
  28. package/dist/{dist-BlIrsfcn.mjs.map → dist-Bf2_efYP.mjs.map} +1 -1
  29. package/dist/dist-BwtxciN4.mjs +3 -0
  30. package/dist/{dist-C1cCW7Bt.mjs → dist-C4Vxgm0Q.mjs} +275 -78
  31. package/dist/dist-C4Vxgm0Q.mjs.map +1 -0
  32. package/dist/{dist-C8Xq3zgx.mjs → dist-Cu1fZ9Uy.mjs} +4 -4
  33. package/dist/{dist-C8Xq3zgx.mjs.map → dist-Cu1fZ9Uy.mjs.map} +1 -1
  34. package/dist/{dist-DVMepKaO.mjs → dist-CySGkG54.mjs} +2 -2
  35. package/dist/dist-CySGkG54.mjs.map +1 -0
  36. package/dist/effects/index.d.mts +6 -4
  37. package/dist/effects/index.mjs +36 -36
  38. package/dist/{effects-CemgqEPv.mjs → effects-DiWYouOK.mjs} +3 -3
  39. package/dist/{effects-CemgqEPv.mjs.map → effects-DiWYouOK.mjs.map} +1 -1
  40. package/dist/fonts/index.d.mts +1 -1
  41. package/dist/fonts/index.mjs +3 -3
  42. package/dist/{fonts-BW0pPcvJ.mjs → fonts-BnV-GB1o.mjs} +2 -2
  43. package/dist/{fonts-BW0pPcvJ.mjs.map → fonts-BnV-GB1o.mjs.map} +1 -1
  44. package/dist/{gpu-CMaa63nz.mjs → gpu-Bw35AMwY.mjs} +11 -3
  45. package/dist/gpu-Bw35AMwY.mjs.map +1 -0
  46. package/dist/{index-D5UDyVMb.d.mts → index-B7WqFBZA.d.mts} +35 -2401
  47. package/dist/index-B7WqFBZA.d.mts.map +1 -0
  48. package/dist/{index-BfDFmIBE.d.mts → index-BW0Q1ygn.d.mts} +1 -1
  49. package/dist/{index-BfDFmIBE.d.mts.map → index-BW0Q1ygn.d.mts.map} +1 -1
  50. package/dist/{index-CQ-bbZk3.d.mts → index-Bbv0VtxJ.d.mts} +7 -1165
  51. package/dist/index-Bbv0VtxJ.d.mts.map +1 -0
  52. package/dist/{index-CFoAmh7q.d.mts → index-CDQrdZ0J.d.mts} +3 -3
  53. package/dist/{index-CFoAmh7q.d.mts.map → index-CDQrdZ0J.d.mts.map} +1 -1
  54. package/dist/index-COYNQ_mf.d.mts +2402 -0
  55. package/dist/index-COYNQ_mf.d.mts.map +1 -0
  56. package/dist/{index-BIjMAW1h.d.mts → index-CdCrae-I.d.mts} +2 -2
  57. package/dist/{index-BIjMAW1h.d.mts.map → index-CdCrae-I.d.mts.map} +1 -1
  58. package/dist/index-DQa7mhzq.d.mts +330 -0
  59. package/dist/index-DQa7mhzq.d.mts.map +1 -0
  60. package/dist/{index-Bnh42ouE.d.mts → index-Dyt4yS-x.d.mts} +376 -287
  61. package/dist/index-Dyt4yS-x.d.mts.map +1 -0
  62. package/dist/index-WwuuX8ZJ.d.mts +1165 -0
  63. package/dist/index-WwuuX8ZJ.d.mts.map +1 -0
  64. package/dist/{index-CJL0JAU8.d.mts → index-gOVtTm-P.d.mts} +125 -3
  65. package/dist/index-gOVtTm-P.d.mts.map +1 -0
  66. package/dist/{index-7Z9_a_iB.d.mts → index-h7m8QgcL.d.mts} +3 -3
  67. package/dist/{index-7Z9_a_iB.d.mts.map → index-h7m8QgcL.d.mts.map} +1 -1
  68. package/dist/index.d.mts +16 -13
  69. package/dist/index.mjs +59 -58
  70. package/dist/preview/index.d.mts +4 -3
  71. package/dist/preview/index.mjs +12 -12
  72. package/dist/{preview-DvP8AZuV.mjs → preview-BW7ilNWk.mjs} +3 -3
  73. package/dist/{preview-DvP8AZuV.mjs.map → preview-BW7ilNWk.mjs.map} +1 -1
  74. package/dist/preview-engine/audio.mjs +1 -1
  75. package/dist/preview-engine/chunk-44V4V5LD.mjs +1 -0
  76. package/dist/preview-engine/{chunk-5AWAOMBR.mjs → chunk-4BWBX2HM.mjs} +1 -1
  77. package/dist/preview-engine/{chunk-BEYA25UZ.mjs → chunk-4DSOZ5QG.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-VVE2QHVG.mjs → chunk-4FACCLLE.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-DMSZXG56.mjs → chunk-4N25ZU43.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-FTCEG3SF.mjs → chunk-4RLKHFV6.mjs} +1 -1
  81. package/dist/preview-engine/chunk-4TPXZNVR.mjs +483 -0
  82. package/dist/preview-engine/chunk-4YT5YJIF.mjs +1 -0
  83. package/dist/preview-engine/{chunk-CC4NNNIY.mjs → chunk-57WXGYEV.mjs} +1 -1
  84. package/dist/preview-engine/{chunk-C4M3B2Q2.mjs → chunk-5SLBE2FX.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-PM2W4VLT.mjs → chunk-5Y7SO37Q.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-BJXNKMSY.mjs → chunk-64L4GUOF.mjs} +20 -6
  87. package/dist/preview-engine/{chunk-Y5K5LVOR.mjs → chunk-6BE3IL7L.mjs} +1 -1
  88. package/dist/preview-engine/{chunk-GA4HNR44.mjs → chunk-6LBFSGCI.mjs} +1 -1
  89. package/dist/preview-engine/{chunk-IB6GZJOL.mjs → chunk-6O55UROD.mjs} +1 -1
  90. package/dist/preview-engine/{chunk-SPJPM43P.mjs → chunk-6SLCECHG.mjs} +1 -1
  91. package/dist/preview-engine/chunk-77MT33VR.mjs +1 -0
  92. package/dist/preview-engine/{chunk-QCSVT73T.mjs → chunk-7A3BNAWY.mjs} +84 -25
  93. package/dist/preview-engine/{chunk-CN2VLYLB.mjs → chunk-7HW7GA76.mjs} +1 -1
  94. package/dist/preview-engine/chunk-A6OAPDIA.mjs +1 -0
  95. package/dist/preview-engine/chunk-ADLIF544.mjs +39 -0
  96. package/dist/preview-engine/{chunk-LVYVXVZO.mjs → chunk-C2GX5L5S.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-4WYM72ZN.mjs → chunk-CHXR5XZK.mjs} +1 -1
  98. package/dist/preview-engine/chunk-CSLSWUUT.mjs +1 -0
  99. package/dist/preview-engine/{chunk-JSYG6OWZ.mjs → chunk-D7OMXGIZ.mjs} +1 -1
  100. package/dist/preview-engine/{chunk-RJIAES3X.mjs → chunk-EKEKYGXE.mjs} +1 -1
  101. package/dist/preview-engine/{chunk-TNJEZKXM.mjs → chunk-FH72KTSM.mjs} +1 -1
  102. package/dist/preview-engine/{chunk-P5FKRQFU.mjs → chunk-FW2UDDUT.mjs} +1 -1
  103. package/dist/preview-engine/{chunk-S2ABWY5G.mjs → chunk-GTMZOMAN.mjs} +1 -1
  104. package/dist/preview-engine/{chunk-6R3UJBL5.mjs → chunk-HGWT3RVQ.mjs} +10 -10
  105. package/dist/preview-engine/{chunk-34RJ7GAS.mjs → chunk-HKYENGC5.mjs} +1 -1
  106. package/dist/preview-engine/{chunk-7U34VKNO.mjs → chunk-HO7FXISJ.mjs} +1 -1
  107. package/dist/preview-engine/{chunk-73CNXGAK.mjs → chunk-HPQDCC4S.mjs} +1 -1
  108. package/dist/preview-engine/{chunk-ZY47XIRK.mjs → chunk-IVAA5X5H.mjs} +1 -1
  109. package/dist/preview-engine/chunk-JAAFSVAG.mjs +1 -0
  110. package/dist/preview-engine/{chunk-UXYM2G6J.mjs → chunk-JFBSNFN6.mjs} +1 -1
  111. package/dist/preview-engine/{chunk-GIICZZQI.mjs → chunk-JSKEVYKD.mjs} +1 -1
  112. package/dist/preview-engine/{chunk-EJJITH6U.mjs → chunk-K3TJJXVC.mjs} +1 -1
  113. package/dist/preview-engine/{chunk-GZWA5QJS.mjs → chunk-L2NTIWW5.mjs} +1 -1
  114. package/dist/preview-engine/{chunk-VN36PRVD.mjs → chunk-LBP7E7SJ.mjs} +1 -1
  115. package/dist/preview-engine/{chunk-34DL53D5.mjs → chunk-LTR5FXGU.mjs} +1 -1
  116. package/dist/preview-engine/{chunk-GRJJVSOV.mjs → chunk-ML7WO27M.mjs} +1 -1
  117. package/dist/preview-engine/{chunk-GN3NDRLI.mjs → chunk-NCQHOGZK.mjs} +1 -1
  118. package/dist/preview-engine/{chunk-OH5W5EL6.mjs → chunk-NTTEGJD6.mjs} +1 -1
  119. package/dist/preview-engine/{chunk-2B722GXM.mjs → chunk-OD4CSXZL.mjs} +15 -15
  120. package/dist/preview-engine/{chunk-AHQCDTD6.mjs → chunk-OOUDE4XL.mjs} +1 -1
  121. package/dist/preview-engine/chunk-PH3UUX6A.mjs +138 -0
  122. package/dist/preview-engine/chunk-PIHG6HJO.mjs +1 -0
  123. package/dist/preview-engine/{chunk-ZJ5SWTCW.mjs → chunk-RAW2I27S.mjs} +1 -1
  124. package/dist/preview-engine/{chunk-BJV2LBII.mjs → chunk-RMHL4XZ3.mjs} +1 -1
  125. package/dist/preview-engine/chunk-T6L3DO3H.mjs +1 -0
  126. package/dist/preview-engine/{chunk-2PYTDN2C.mjs → chunk-V5HU6NIW.mjs} +1 -1
  127. package/dist/preview-engine/{chunk-DVZITDQS.mjs → chunk-VRJBOFFY.mjs} +1 -1
  128. package/dist/preview-engine/{chunk-SF37HXAH.mjs → chunk-WVIDORLK.mjs} +1 -1
  129. package/dist/preview-engine/{chunk-35HMRW4I.mjs → chunk-XCQ7KN4S.mjs} +1 -1
  130. package/dist/preview-engine/{chunk-KHJZMTOS.mjs → chunk-Y2SWIWIU.mjs} +1 -1
  131. package/dist/preview-engine/{chunk-H7BSN7V7.mjs → chunk-YS3ROS25.mjs} +1 -1
  132. package/dist/preview-engine/{chunk-2DWY7UBV.mjs → chunk-YXCTOCQ2.mjs} +1 -1
  133. package/dist/preview-engine/{chunk-BVDWS3D2.mjs → chunk-ZA5LWHRM.mjs} +1 -1
  134. package/dist/preview-engine/chunk-ZGEKF34E.mjs +1974 -0
  135. package/dist/preview-engine/components.mjs +1 -1
  136. package/dist/preview-engine/effects.mjs +1 -1
  137. package/dist/preview-engine/fonts.mjs +1 -1
  138. package/dist/preview-engine/framefields.mjs +1 -1
  139. package/dist/preview-engine/player.mjs +1 -1
  140. package/dist/preview-engine/renderers-33PIDDZC.mjs +1 -0
  141. package/dist/preview-engine/{renderers-ZACSHGNZ.mjs → renderers-36P2TKPC.mjs} +1 -1
  142. package/dist/preview-engine/{renderers-TSBV4KPE.mjs → renderers-37Y5LR2S.mjs} +1 -1
  143. package/dist/preview-engine/renderers-3AZ3HY53.mjs +1 -0
  144. package/dist/preview-engine/renderers-3FGKW52B.mjs +1 -0
  145. package/dist/preview-engine/renderers-4A2FBS3Y.mjs +1 -0
  146. package/dist/preview-engine/{renderers-5TO2SXFR.mjs → renderers-4MW4NW6O.mjs} +1 -1
  147. package/dist/preview-engine/{renderers-ENMY4DKF.mjs → renderers-4SNAK77B.mjs} +1 -1
  148. package/dist/preview-engine/{renderers-Y22VSOXF.mjs → renderers-4WFRXGMR.mjs} +1 -1
  149. package/dist/preview-engine/{renderers-5KANN7XF.mjs → renderers-5K3BSBI6.mjs} +1 -1
  150. package/dist/preview-engine/renderers-65DU2F5W.mjs +1 -0
  151. package/dist/preview-engine/renderers-6CTPYQR6.mjs +1 -0
  152. package/dist/preview-engine/{renderers-NUAI4TO5.mjs → renderers-6RRWA33X.mjs} +1 -1
  153. package/dist/preview-engine/{renderers-4F7WLQD5.mjs → renderers-6RYIPQ7W.mjs} +1 -1
  154. package/dist/preview-engine/{renderers-U4M7ZCV4.mjs → renderers-AUYCQNSS.mjs} +1 -1
  155. package/dist/preview-engine/renderers-AWODRI3B.mjs +1 -0
  156. package/dist/preview-engine/renderers-BO6HHGMZ.mjs +1 -0
  157. package/dist/preview-engine/renderers-BSXYDEV7.mjs +1 -0
  158. package/dist/preview-engine/{renderers-FSI5KNGZ.mjs → renderers-CMBI4JOC.mjs} +1 -1
  159. package/dist/preview-engine/{renderers-6Z7DWAPH.mjs → renderers-CQIPHCIW.mjs} +1 -1
  160. package/dist/preview-engine/renderers-DU7KPFVV.mjs +1 -0
  161. package/dist/preview-engine/renderers-ECW2CGNU.mjs +1 -0
  162. package/dist/preview-engine/renderers-EEX22FUO.mjs +1 -0
  163. package/dist/preview-engine/{renderers-MOEC2XZZ.mjs → renderers-EILFSWSJ.mjs} +1 -1
  164. package/dist/preview-engine/{renderers-NCGH2WWJ.mjs → renderers-G2FL3IFD.mjs} +1 -1
  165. package/dist/preview-engine/{renderers-5XRKZHVT.mjs → renderers-GCQKGJ7W.mjs} +1 -1
  166. package/dist/preview-engine/{renderers-77PDUMYI.mjs → renderers-HXNSDJBY.mjs} +1 -1
  167. package/dist/preview-engine/renderers-HZBXLDKG.mjs +1 -0
  168. package/dist/preview-engine/renderers-IOXNQPQK.mjs +1 -0
  169. package/dist/preview-engine/renderers-IR44E4ZZ.mjs +1 -0
  170. package/dist/preview-engine/{renderers-TGJSOKDY.mjs → renderers-JALV3B3A.mjs} +1 -1
  171. package/dist/preview-engine/{renderers-IHGAWLUF.mjs → renderers-JMSAW7VY.mjs} +1 -1
  172. package/dist/preview-engine/{renderers-CUMVIVHI.mjs → renderers-JZYHX4XI.mjs} +1 -1
  173. package/dist/preview-engine/renderers-JZZ3ODOZ.mjs +1 -0
  174. package/dist/preview-engine/renderers-K37YL3Z7.mjs +1 -0
  175. package/dist/preview-engine/{renderers-RN2MHIFK.mjs → renderers-KICDB5Y6.mjs} +1 -1
  176. package/dist/preview-engine/renderers-KUJQV3K6.mjs +1 -0
  177. package/dist/preview-engine/renderers-KXVKLSSX.mjs +1 -0
  178. package/dist/preview-engine/{renderers-WEYAHOBK.mjs → renderers-LF6U4MR5.mjs} +1 -1
  179. package/dist/preview-engine/renderers-N4RVFX3G.mjs +1 -0
  180. package/dist/preview-engine/{renderers-PPZK6VEW.mjs → renderers-NQC4DPX4.mjs} +1 -1
  181. package/dist/preview-engine/renderers-NZWWEAYA.mjs +1 -0
  182. package/dist/preview-engine/{renderers-5UZ3YFBD.mjs → renderers-OPRXVIGT.mjs} +1 -1
  183. package/dist/preview-engine/{renderers-7C5RA3R5.mjs → renderers-OZKPOUMW.mjs} +1 -1
  184. package/dist/preview-engine/renderers-P4JJEDZB.mjs +1 -0
  185. package/dist/preview-engine/{renderers-V3AQO7AR.mjs → renderers-PGZDFDSC.mjs} +1 -1
  186. package/dist/preview-engine/renderers-Q4572F5C.mjs +1 -0
  187. package/dist/preview-engine/{renderers-PIIEUKFE.mjs → renderers-Q5YCUPYE.mjs} +1 -1
  188. package/dist/preview-engine/renderers-QAX2QWWQ.mjs +1 -0
  189. package/dist/preview-engine/{renderers-SEIAUKJF.mjs → renderers-RQ3JZE3L.mjs} +1 -1
  190. package/dist/preview-engine/renderers-SRFIEVWL.mjs +1 -0
  191. package/dist/preview-engine/renderers-SYC6WFTM.mjs +1 -0
  192. package/dist/preview-engine/{renderers-QA2HKUJJ.mjs → renderers-TKHQRERE.mjs} +1 -1
  193. package/dist/preview-engine/{renderers-A24KZK2Q.mjs → renderers-U4S577ON.mjs} +1 -1
  194. package/dist/preview-engine/{renderers-KC6ZSKCW.mjs → renderers-UBIFSF37.mjs} +1 -1
  195. package/dist/preview-engine/renderers-UH4WN3QN.mjs +1 -0
  196. package/dist/preview-engine/renderers-V4FFCAS7.mjs +1 -0
  197. package/dist/preview-engine/renderers-VGDEOZUU.mjs +1 -0
  198. package/dist/preview-engine/renderers-VJJKBX5K.mjs +1 -0
  199. package/dist/preview-engine/renderers-VJOKVDYW.mjs +1 -0
  200. package/dist/preview-engine/renderers-VUUWZUOH.mjs +1 -0
  201. package/dist/preview-engine/renderers-WG756VF3.mjs +228 -0
  202. package/dist/preview-engine/renderers-WOP5GOZP.mjs +1 -0
  203. package/dist/preview-engine/{renderers-T74CQCEN.mjs → renderers-XZ3XDQIN.mjs} +1 -1
  204. package/dist/preview-engine/renderers-Y4MGN2FR.mjs +1 -0
  205. package/dist/preview-engine/renderers-YAMYH7IK.mjs +1 -0
  206. package/dist/preview-engine/{renderers-MD3PRFZL.mjs → renderers-YJ4PJEPG.mjs} +1 -1
  207. package/dist/preview-engine/renderers-ZNLSAWW3.mjs +1 -0
  208. package/dist/preview-engine/{renderers-L6YDX6GS.mjs → renderers-ZQVKE5AO.mjs} +1 -1
  209. package/dist/preview-engine/signals.mjs +1 -1
  210. package/dist/preview-engine/{src-4IUYUKIZ.mjs → src-GPF7RIBU.mjs} +1 -1
  211. package/dist/{program-CKpKkllV.mjs → program-BUjUTdxq.mjs} +44 -17
  212. package/dist/program-BUjUTdxq.mjs.map +1 -0
  213. package/dist/registry/focus-zoom.json +9 -2
  214. package/dist/renderer/index.d.mts +4 -3
  215. package/dist/renderer/index.mjs +4 -4
  216. package/dist/{renderer-BF0hx_iJ.mjs → renderer--f8JHHyT.mjs} +5 -5
  217. package/dist/{renderer-BF0hx_iJ.mjs.map → renderer--f8JHHyT.mjs.map} +1 -1
  218. package/dist/{renderer-CHr7MiYW.mjs → renderer-1KgHl_ls.mjs} +5 -5
  219. package/dist/{renderer-CHr7MiYW.mjs.map → renderer-1KgHl_ls.mjs.map} +1 -1
  220. package/dist/renderer-6sNr6ZRJ.mjs +6 -0
  221. package/dist/{renderer-BgO6BA_z.mjs → renderer-7c0ecb-L.mjs} +74 -21
  222. package/dist/renderer-7c0ecb-L.mjs.map +1 -0
  223. package/dist/{renderer-D61B9bXF.mjs → renderer-7w9PZmWJ.mjs} +4 -4
  224. package/dist/{renderer-D61B9bXF.mjs.map → renderer-7w9PZmWJ.mjs.map} +1 -1
  225. package/dist/{renderer-DVCJjVn7.mjs → renderer-B3WHDQeB.mjs} +5 -5
  226. package/dist/{renderer-DVCJjVn7.mjs.map → renderer-B3WHDQeB.mjs.map} +1 -1
  227. package/dist/{renderer-C7eFJf0_.mjs → renderer-B84T5I98.mjs} +5 -5
  228. package/dist/{renderer-C7eFJf0_.mjs.map → renderer-B84T5I98.mjs.map} +1 -1
  229. package/dist/{renderer-EaLUCobW.mjs → renderer-B8i4d1Rc.mjs} +4 -4
  230. package/dist/{renderer-EaLUCobW.mjs.map → renderer-B8i4d1Rc.mjs.map} +1 -1
  231. package/dist/renderer-BDHGxD6p.mjs +5 -0
  232. package/dist/{renderer-WCZu2Rf5.mjs → renderer-BFmVDdVs.mjs} +4 -4
  233. package/dist/{renderer-WCZu2Rf5.mjs.map → renderer-BFmVDdVs.mjs.map} +1 -1
  234. package/dist/{renderer-bAKUeHF3.mjs → renderer-BG_cnGbF.mjs} +5 -5
  235. package/dist/{renderer-bAKUeHF3.mjs.map → renderer-BG_cnGbF.mjs.map} +1 -1
  236. package/dist/{renderer-BPWDsufX.mjs → renderer-BIToh0CA.mjs} +3 -3
  237. package/dist/{renderer-BPWDsufX.mjs.map → renderer-BIToh0CA.mjs.map} +1 -1
  238. package/dist/{renderer-mNSyac1V.mjs → renderer-BOg8i8eF.mjs} +11 -2
  239. package/dist/{renderer-mNSyac1V.mjs.map → renderer-BOg8i8eF.mjs.map} +1 -1
  240. package/dist/{renderer-BlPqTEii.mjs → renderer-BSW4CGZF.mjs} +4 -4
  241. package/dist/{renderer-BlPqTEii.mjs.map → renderer-BSW4CGZF.mjs.map} +1 -1
  242. package/dist/{renderer-D7Al3_-5.mjs → renderer-BT4im6c0.mjs} +5 -5
  243. package/dist/{renderer-D7Al3_-5.mjs.map → renderer-BT4im6c0.mjs.map} +1 -1
  244. package/dist/renderer-BT9dvpk2.mjs +5 -0
  245. package/dist/{renderer-BpIF1QIE.mjs → renderer-BTLZBD63.mjs} +5 -5
  246. package/dist/{renderer-BpIF1QIE.mjs.map → renderer-BTLZBD63.mjs.map} +1 -1
  247. package/dist/{renderer-CcvvoKiZ.mjs → renderer-Bb_HHUQ0.mjs} +5 -5
  248. package/dist/{renderer-CcvvoKiZ.mjs.map → renderer-Bb_HHUQ0.mjs.map} +1 -1
  249. package/dist/renderer-Bd-NuU3M.mjs +3 -0
  250. package/dist/{renderer-sCovEubT.mjs → renderer-BdRwbLLV.mjs} +4 -4
  251. package/dist/{renderer-sCovEubT.mjs.map → renderer-BdRwbLLV.mjs.map} +1 -1
  252. package/dist/{renderer-DNQvOrkY.mjs → renderer-BeJoW-nG.mjs} +5 -5
  253. package/dist/{renderer-DNQvOrkY.mjs.map → renderer-BeJoW-nG.mjs.map} +1 -1
  254. package/dist/renderer-BfaRh0qy.mjs +5 -0
  255. package/dist/{renderer-B522Dkdk.mjs → renderer-BhNZn2DU.mjs} +4 -4
  256. package/dist/{renderer-B522Dkdk.mjs.map → renderer-BhNZn2DU.mjs.map} +1 -1
  257. package/dist/{renderer-D47AEJE_.mjs → renderer-Bif8bwCq.mjs} +3 -3
  258. package/dist/{renderer-D47AEJE_.mjs.map → renderer-Bif8bwCq.mjs.map} +1 -1
  259. package/dist/renderer-BlwXKV7Y.mjs +5 -0
  260. package/dist/{renderer-CwFqqpWY.mjs → renderer-Bm91Xv6l.mjs} +4 -4
  261. package/dist/{renderer-CwFqqpWY.mjs.map → renderer-Bm91Xv6l.mjs.map} +1 -1
  262. package/dist/{renderer-SSBL4M1o.mjs → renderer-BnN3JH9u.mjs} +20 -7
  263. package/dist/renderer-BnN3JH9u.mjs.map +1 -0
  264. package/dist/{renderer-8QIwXh7O.mjs → renderer-Bo5GwErU.mjs} +6 -6
  265. package/dist/{renderer-8QIwXh7O.mjs.map → renderer-Bo5GwErU.mjs.map} +1 -1
  266. package/dist/{renderer-DF-yvIrV.mjs → renderer-Br_aJ_b7.mjs} +4 -4
  267. package/dist/{renderer-DF-yvIrV.mjs.map → renderer-Br_aJ_b7.mjs.map} +1 -1
  268. package/dist/{renderer-DmkWrWAk.mjs → renderer-BvRaVByi.mjs} +3 -3
  269. package/dist/{renderer-DmkWrWAk.mjs.map → renderer-BvRaVByi.mjs.map} +1 -1
  270. package/dist/renderer-C40yZK3x.mjs +5 -0
  271. package/dist/renderer-C5MjQ7L8.mjs +5 -0
  272. package/dist/renderer-C8LjKYnS.mjs +5 -0
  273. package/dist/renderer-C9q9H_qa.mjs +5 -0
  274. package/dist/renderer-CC4fhNup.mjs +3 -0
  275. package/dist/{renderer-GBmWjBvy.mjs → renderer-CDfCaqV4.mjs} +3 -3
  276. package/dist/{renderer-GBmWjBvy.mjs.map → renderer-CDfCaqV4.mjs.map} +1 -1
  277. package/dist/renderer-CF9ta9Rm.mjs +5 -0
  278. package/dist/{renderer-DkRSZg5g.mjs → renderer-CKlNHDKI.mjs} +5 -5
  279. package/dist/{renderer-DkRSZg5g.mjs.map → renderer-CKlNHDKI.mjs.map} +1 -1
  280. package/dist/{renderer-CYC32bDW.mjs → renderer-CLRrcT_3.mjs} +5 -5
  281. package/dist/{renderer-CYC32bDW.mjs.map → renderer-CLRrcT_3.mjs.map} +1 -1
  282. package/dist/{renderer-DpruWmZU.mjs → renderer-CO1PwItH.mjs} +4 -4
  283. package/dist/{renderer-DpruWmZU.mjs.map → renderer-CO1PwItH.mjs.map} +1 -1
  284. package/dist/renderer-CO205Gr9.mjs +5 -0
  285. package/dist/renderer-CSm8UXLP.mjs +5 -0
  286. package/dist/renderer-CSy8HRtF.mjs +5 -0
  287. package/dist/{renderer-pHWEHDnM.mjs → renderer-CTSvHf6g.mjs} +5 -5
  288. package/dist/{renderer-pHWEHDnM.mjs.map → renderer-CTSvHf6g.mjs.map} +1 -1
  289. package/dist/{renderer-hSCfnvaK.mjs → renderer-CWmlfdLb.mjs} +5 -5
  290. package/dist/{renderer-hSCfnvaK.mjs.map → renderer-CWmlfdLb.mjs.map} +1 -1
  291. package/dist/{renderer--fkmiVjl.mjs → renderer-CanNjQuL.mjs} +4 -4
  292. package/dist/{renderer--fkmiVjl.mjs.map → renderer-CanNjQuL.mjs.map} +1 -1
  293. package/dist/renderer-CdNRWDsA.mjs +5 -0
  294. package/dist/{renderer-DFzI3yI_.mjs → renderer-CeNAgCE2.mjs} +3 -3
  295. package/dist/{renderer-DFzI3yI_.mjs.map → renderer-CeNAgCE2.mjs.map} +1 -1
  296. package/dist/{renderer-BdyopiLC.mjs → renderer-Ch1qZ2PT.mjs} +4 -4
  297. package/dist/{renderer-BdyopiLC.mjs.map → renderer-Ch1qZ2PT.mjs.map} +1 -1
  298. package/dist/{renderer-CQvmbRQ5.mjs → renderer-Chfo4G9t.mjs} +5 -5
  299. package/dist/{renderer-CQvmbRQ5.mjs.map → renderer-Chfo4G9t.mjs.map} +1 -1
  300. package/dist/{renderer-DEmYyaqj.mjs → renderer-Ck-NLzz0.mjs} +4 -4
  301. package/dist/{renderer-DEmYyaqj.mjs.map → renderer-Ck-NLzz0.mjs.map} +1 -1
  302. package/dist/renderer-CkAjiGRB.mjs +5 -0
  303. package/dist/renderer-CmryuPBm.mjs +5 -0
  304. package/dist/renderer-CnEwne4L.mjs +5 -0
  305. package/dist/{renderer-BlvGcyAN.mjs → renderer-CsRuEpR2.mjs} +3 -3
  306. package/dist/{renderer-BlvGcyAN.mjs.map → renderer-CsRuEpR2.mjs.map} +1 -1
  307. package/dist/{renderer-SWr3vbrV.mjs → renderer-CtulmkqT.mjs} +3 -3
  308. package/dist/{renderer-SWr3vbrV.mjs.map → renderer-CtulmkqT.mjs.map} +1 -1
  309. package/dist/{renderer-DTqDy2m9.mjs → renderer-CwAuWLWm.mjs} +3 -3
  310. package/dist/{renderer-DTqDy2m9.mjs.map → renderer-CwAuWLWm.mjs.map} +1 -1
  311. package/dist/{renderer-B2jjxsjO.mjs → renderer-CxabOSkk.mjs} +4 -4
  312. package/dist/{renderer-B2jjxsjO.mjs.map → renderer-CxabOSkk.mjs.map} +1 -1
  313. package/dist/{renderer-DPAD6fL1.mjs → renderer-CybBR8AL.mjs} +425 -115
  314. package/dist/renderer-CybBR8AL.mjs.map +1 -0
  315. package/dist/{renderer-DO-KbpYZ.mjs → renderer-D1tDMuD0.mjs} +5 -5
  316. package/dist/{renderer-DO-KbpYZ.mjs.map → renderer-D1tDMuD0.mjs.map} +1 -1
  317. package/dist/renderer-D4QDoqOG.mjs +5 -0
  318. package/dist/{renderer-Bfk6A7UO.mjs → renderer-D7DlNOVi.mjs} +5 -5
  319. package/dist/{renderer-Bfk6A7UO.mjs.map → renderer-D7DlNOVi.mjs.map} +1 -1
  320. package/dist/renderer-D7cS2a8z.mjs +5 -0
  321. package/dist/{renderer-g_vrrAQU.mjs → renderer-D7lApyWZ.mjs} +3 -3
  322. package/dist/{renderer-g_vrrAQU.mjs.map → renderer-D7lApyWZ.mjs.map} +1 -1
  323. package/dist/renderer-D85CNC-b.mjs +5 -0
  324. package/dist/{renderer-DqvoMLca.mjs → renderer-DAfCcnCz.mjs} +5 -5
  325. package/dist/{renderer-DqvoMLca.mjs.map → renderer-DAfCcnCz.mjs.map} +1 -1
  326. package/dist/{renderer-D7r6onRT.mjs → renderer-DAug14gu.mjs} +4 -4
  327. package/dist/{renderer-D7r6onRT.mjs.map → renderer-DAug14gu.mjs.map} +1 -1
  328. package/dist/{renderer-DMvmf3T2.mjs → renderer-DBfx6QX1.mjs} +3 -3
  329. package/dist/renderer-DC9IoJNz.mjs +5 -0
  330. package/dist/renderer-DCMoBppL.mjs +1062 -0
  331. package/dist/renderer-DCMoBppL.mjs.map +1 -0
  332. package/dist/renderer-DIDh0gFm.mjs +5 -0
  333. package/dist/{renderer-DKgPVOLL.d.mts → renderer-DJuVX3c5.d.mts} +2 -2
  334. package/dist/{renderer-DKgPVOLL.d.mts.map → renderer-DJuVX3c5.d.mts.map} +1 -1
  335. package/dist/{renderer-sYSkIUfo.mjs → renderer-DKptrHeL.mjs} +5 -5
  336. package/dist/{renderer-sYSkIUfo.mjs.map → renderer-DKptrHeL.mjs.map} +1 -1
  337. package/dist/renderer-DLmJ9GWE.mjs +5 -0
  338. package/dist/renderer-DM7PUWP9.mjs +5 -0
  339. package/dist/{renderer-C41U1tK6.mjs → renderer-DMtzPqYo.mjs} +211 -72
  340. package/dist/renderer-DMtzPqYo.mjs.map +1 -0
  341. package/dist/renderer-DPWFDxIO.mjs +5 -0
  342. package/dist/renderer-DUCByhAk.mjs +5 -0
  343. package/dist/renderer-DVOtnCKH.mjs +5 -0
  344. package/dist/renderer-DVrN2bW8.mjs +5 -0
  345. package/dist/{renderer-zXPVLRlD.mjs → renderer-D_rEtJAH.mjs} +5 -5
  346. package/dist/{renderer-zXPVLRlD.mjs.map → renderer-D_rEtJAH.mjs.map} +1 -1
  347. package/dist/{renderer-BIGFP1cF.mjs → renderer-Dak_wVh9.mjs} +2 -2
  348. package/dist/{renderer-BIGFP1cF.mjs.map → renderer-Dak_wVh9.mjs.map} +1 -1
  349. package/dist/{renderer-DX41niRU.mjs → renderer-Dd2XrdqA.mjs} +4 -4
  350. package/dist/{renderer-DX41niRU.mjs.map → renderer-Dd2XrdqA.mjs.map} +1 -1
  351. package/dist/renderer-DdOVwfG4.mjs +5 -0
  352. package/dist/{renderer-1r-Uq-Ae.mjs → renderer-Dih1rtT6.mjs} +3 -3
  353. package/dist/{renderer-1r-Uq-Ae.mjs.map → renderer-Dih1rtT6.mjs.map} +1 -1
  354. package/dist/{renderer-BXJXziIt.mjs → renderer-DjiebKHO.mjs} +3 -3
  355. package/dist/{renderer-BXJXziIt.mjs.map → renderer-DjiebKHO.mjs.map} +1 -1
  356. package/dist/{renderer-DIw3UtEU.mjs → renderer-DkAFIpzB.mjs} +5 -5
  357. package/dist/{renderer-DIw3UtEU.mjs.map → renderer-DkAFIpzB.mjs.map} +1 -1
  358. package/dist/{renderer-DDEkFbVI.mjs → renderer-DlbSqOJR.mjs} +5 -5
  359. package/dist/{renderer-DDEkFbVI.mjs.map → renderer-DlbSqOJR.mjs.map} +1 -1
  360. package/dist/{renderer-C7L8Ceqr.mjs → renderer-DrExCXnp.mjs} +4 -4
  361. package/dist/{renderer-C7L8Ceqr.mjs.map → renderer-DrExCXnp.mjs.map} +1 -1
  362. package/dist/{renderer-_iMAO698.mjs → renderer-DsPLMzy1.mjs} +2 -2
  363. package/dist/{renderer-_iMAO698.mjs.map → renderer-DsPLMzy1.mjs.map} +1 -1
  364. package/dist/{renderer-BAYTI6jj.mjs → renderer-Dswrn-yi.mjs} +4 -4
  365. package/dist/{renderer-BAYTI6jj.mjs.map → renderer-Dswrn-yi.mjs.map} +1 -1
  366. package/dist/renderer-DtCe9ouu.mjs +5 -0
  367. package/dist/{renderer-DXEWbnRF.mjs → renderer-DtCmG-tT.mjs} +4 -4
  368. package/dist/{renderer-DXEWbnRF.mjs.map → renderer-DtCmG-tT.mjs.map} +1 -1
  369. package/dist/{renderer-B39I6CQw.mjs → renderer-DxiF4O6X.mjs} +4 -4
  370. package/dist/{renderer-B39I6CQw.mjs.map → renderer-DxiF4O6X.mjs.map} +1 -1
  371. package/dist/{renderer-BAusZ6Vu.mjs → renderer-DxkvDAA6.mjs} +4 -4
  372. package/dist/{renderer-BAusZ6Vu.mjs.map → renderer-DxkvDAA6.mjs.map} +1 -1
  373. package/dist/{renderer-ktWXVYka.mjs → renderer-FFLnACY-.mjs} +6 -6
  374. package/dist/{renderer-ktWXVYka.mjs.map → renderer-FFLnACY-.mjs.map} +1 -1
  375. package/dist/{renderer-Lth37j17.mjs → renderer-H4CZt3Z5.mjs} +3 -3
  376. package/dist/{renderer-B-ur0Ej8.mjs → renderer-JASAZUyY.mjs} +4 -4
  377. package/dist/{renderer-B-ur0Ej8.mjs.map → renderer-JASAZUyY.mjs.map} +1 -1
  378. package/dist/renderer-Mg0kr9Fm.mjs +5 -0
  379. package/dist/{renderer-CCycwCEB.mjs → renderer-R2kLaNuR.mjs} +3 -3
  380. package/dist/{renderer-CCycwCEB.mjs.map → renderer-R2kLaNuR.mjs.map} +1 -1
  381. package/dist/renderer-T35PsSw5.mjs +5 -0
  382. package/dist/{renderer-cod5Ona9.mjs → renderer-fWW0bsVl.mjs} +3 -3
  383. package/dist/renderer-iSZ5NT-J.mjs +5 -0
  384. package/dist/{renderer-oKRF4A0M.mjs → renderer-jBKpX3Xg.mjs} +4 -4
  385. package/dist/{renderer-oKRF4A0M.mjs.map → renderer-jBKpX3Xg.mjs.map} +1 -1
  386. package/dist/{renderer-Xv6GfNUI.mjs → renderer-kFx1_MmK.mjs} +3 -3
  387. package/dist/{renderer-Xv6GfNUI.mjs.map → renderer-kFx1_MmK.mjs.map} +1 -1
  388. package/dist/{renderer-DbRZe0Re.mjs → renderer-muB4slsV.mjs} +5 -5
  389. package/dist/{renderer-DbRZe0Re.mjs.map → renderer-muB4slsV.mjs.map} +1 -1
  390. package/dist/renderer-nEmMjQ1a.mjs +5 -0
  391. package/dist/{renderer-CpUJBOfb.mjs → renderer-oiDoNzhv.mjs} +3 -3
  392. package/dist/renderer-pG1nyfjE.mjs +5 -0
  393. package/dist/{renderer-BX7jS14r.d.mts → renderer-tcypOFaB.d.mts} +23 -4
  394. package/dist/renderer-tcypOFaB.d.mts.map +1 -0
  395. package/dist/{renderer-CiQhD8Gg.mjs → renderer-vPxMXiv8.mjs} +5 -5
  396. package/dist/{renderer-CiQhD8Gg.mjs.map → renderer-vPxMXiv8.mjs.map} +1 -1
  397. package/dist/renderer-vbb9e3E3.mjs +5 -0
  398. package/dist/{renderer-D8bBHrWC.mjs → renderer-vpsU_4XW.mjs} +5 -5
  399. package/dist/{renderer-D8bBHrWC.mjs.map → renderer-vpsU_4XW.mjs.map} +1 -1
  400. package/dist/{renderer-DiY70S8S.mjs → renderer-w7mlMSC-.mjs} +4 -4
  401. package/dist/{renderer-DiY70S8S.mjs.map → renderer-w7mlMSC-.mjs.map} +1 -1
  402. package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs → renderers-CP8CFWDs-OgyUiyrr.mjs} +4 -4
  403. package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs.map → renderers-CP8CFWDs-OgyUiyrr.mjs.map} +1 -1
  404. package/dist/sam/index.d.mts +4 -0
  405. package/dist/sam/index.mjs +3 -0
  406. package/dist/signals/index.d.mts +7 -6
  407. package/dist/signals/index.mjs +8 -8
  408. package/dist/{signals-CXwgAUp-.mjs → signals-BfJ1aqpT.mjs} +4 -4
  409. package/dist/{signals-CXwgAUp-.mjs.map → signals-BfJ1aqpT.mjs.map} +1 -1
  410. package/dist/{renderer-B2P1vgb7.mjs → src-BU6vm9sP-DFJ3phW0.mjs} +81 -1016
  411. package/dist/src-BU6vm9sP-DFJ3phW0.mjs.map +1 -0
  412. package/dist/{src-DFEqficI.mjs → src-C3f3zXYg.mjs} +251 -37
  413. package/dist/src-C3f3zXYg.mjs.map +1 -0
  414. package/package.json +75 -69
  415. package/dist/audio-Ccpl9mjV.d.mts.map +0 -1
  416. package/dist/dist-C1cCW7Bt.mjs.map +0 -1
  417. package/dist/dist-DVMepKaO.mjs.map +0 -1
  418. package/dist/gpu-CMaa63nz.mjs.map +0 -1
  419. package/dist/index-Bnh42ouE.d.mts.map +0 -1
  420. package/dist/index-CJL0JAU8.d.mts.map +0 -1
  421. package/dist/index-CQ-bbZk3.d.mts.map +0 -1
  422. package/dist/index-D5UDyVMb.d.mts.map +0 -1
  423. package/dist/preview-engine/chunk-4FY4TNST.mjs +0 -1
  424. package/dist/preview-engine/chunk-7LDSMOO3.mjs +0 -1
  425. package/dist/preview-engine/chunk-AGAZJZWI.mjs +0 -1
  426. package/dist/preview-engine/chunk-BXPM5SJ3.mjs +0 -1
  427. package/dist/preview-engine/chunk-D73ZKPFN.mjs +0 -138
  428. package/dist/preview-engine/chunk-FKG27DVO.mjs +0 -4
  429. package/dist/preview-engine/chunk-KOVN277Z.mjs +0 -1
  430. package/dist/preview-engine/chunk-KXLXP66K.mjs +0 -1974
  431. package/dist/preview-engine/chunk-MIEH74UH.mjs +0 -480
  432. package/dist/preview-engine/chunk-XYGDTPO7.mjs +0 -39
  433. package/dist/preview-engine/chunk-YGKO4NIU.mjs +0 -1
  434. package/dist/preview-engine/renderers-3BOQOUEU.mjs +0 -1
  435. package/dist/preview-engine/renderers-3M2FESR2.mjs +0 -1
  436. package/dist/preview-engine/renderers-6LHIWKMZ.mjs +0 -1
  437. package/dist/preview-engine/renderers-7XHO6M3B.mjs +0 -228
  438. package/dist/preview-engine/renderers-A43VCJ7X.mjs +0 -1
  439. package/dist/preview-engine/renderers-AKY464RY.mjs +0 -1
  440. package/dist/preview-engine/renderers-C5UO6PL5.mjs +0 -1
  441. package/dist/preview-engine/renderers-C64QSZO4.mjs +0 -1
  442. package/dist/preview-engine/renderers-CIRCR6NG.mjs +0 -1
  443. package/dist/preview-engine/renderers-CIWOPETY.mjs +0 -1
  444. package/dist/preview-engine/renderers-CZEZCELP.mjs +0 -1
  445. package/dist/preview-engine/renderers-FSQMWHQM.mjs +0 -1
  446. package/dist/preview-engine/renderers-FZEW5C23.mjs +0 -1
  447. package/dist/preview-engine/renderers-HCET2IML.mjs +0 -1
  448. package/dist/preview-engine/renderers-IUOOC6K7.mjs +0 -1
  449. package/dist/preview-engine/renderers-KYYJLVIJ.mjs +0 -1
  450. package/dist/preview-engine/renderers-L4GE7WV3.mjs +0 -1
  451. package/dist/preview-engine/renderers-LRAFWKCO.mjs +0 -1
  452. package/dist/preview-engine/renderers-LU3XZWEB.mjs +0 -1
  453. package/dist/preview-engine/renderers-MDHPQY6D.mjs +0 -1
  454. package/dist/preview-engine/renderers-ND2WV4K3.mjs +0 -1
  455. package/dist/preview-engine/renderers-NJ5CWVVH.mjs +0 -1
  456. package/dist/preview-engine/renderers-NKXYPR3V.mjs +0 -1
  457. package/dist/preview-engine/renderers-NWR66CGK.mjs +0 -1
  458. package/dist/preview-engine/renderers-O22WTBRM.mjs +0 -1
  459. package/dist/preview-engine/renderers-PBBA7LQB.mjs +0 -1
  460. package/dist/preview-engine/renderers-Q6LJRZ7R.mjs +0 -1
  461. package/dist/preview-engine/renderers-RMEACSRL.mjs +0 -1
  462. package/dist/preview-engine/renderers-SP42LCSI.mjs +0 -1
  463. package/dist/preview-engine/renderers-T7SZA3BX.mjs +0 -1
  464. package/dist/preview-engine/renderers-VADTDAHD.mjs +0 -1
  465. package/dist/preview-engine/renderers-VNNWI5C3.mjs +0 -1
  466. package/dist/preview-engine/renderers-WZ75MLP3.mjs +0 -1
  467. package/dist/preview-engine/renderers-XB5R4UQA.mjs +0 -1
  468. package/dist/preview-engine/renderers-YBIUZDGQ.mjs +0 -1
  469. package/dist/preview-engine/renderers-YESJR4O7.mjs +0 -1
  470. package/dist/preview-engine/renderers-YKSRZRRT.mjs +0 -1
  471. package/dist/program-CKpKkllV.mjs.map +0 -1
  472. package/dist/renderer--Ac-dg4A.mjs +0 -5
  473. package/dist/renderer--N7TMqzU.mjs +0 -5
  474. package/dist/renderer-2ecmdOae.mjs +0 -5
  475. package/dist/renderer-B2P1vgb7.mjs.map +0 -1
  476. package/dist/renderer-B5RJp5g-.mjs +0 -5
  477. package/dist/renderer-B7xyT1Vb.mjs +0 -5
  478. package/dist/renderer-BBeArN_x.mjs +0 -5
  479. package/dist/renderer-BCAZDu-r.mjs +0 -5
  480. package/dist/renderer-BJnhik7Y.mjs +0 -5
  481. package/dist/renderer-BX7jS14r.d.mts.map +0 -1
  482. package/dist/renderer-BgO6BA_z.mjs.map +0 -1
  483. package/dist/renderer-BxRW8MZO.mjs +0 -5
  484. package/dist/renderer-C-lfsEAN.mjs +0 -5
  485. package/dist/renderer-C41U1tK6.mjs.map +0 -1
  486. package/dist/renderer-C6nOFN4-.mjs +0 -5
  487. package/dist/renderer-C84TSQmS.mjs +0 -5
  488. package/dist/renderer-C8_6YofT.mjs +0 -5
  489. package/dist/renderer-COb3tOPG.mjs +0 -5
  490. package/dist/renderer-CSCIzaLy.mjs +0 -5
  491. package/dist/renderer-CmI4c8MS.mjs +0 -5
  492. package/dist/renderer-CqVltdX9.mjs +0 -5
  493. package/dist/renderer-D-FpMzLY.mjs +0 -5
  494. package/dist/renderer-D-Oyn9mG.mjs +0 -5
  495. package/dist/renderer-D2QrkA8_.mjs +0 -5
  496. package/dist/renderer-D5bjOx83.mjs +0 -3
  497. package/dist/renderer-D64r4iN-.mjs +0 -5
  498. package/dist/renderer-DCq6YkgP.mjs +0 -5
  499. package/dist/renderer-DDHG3GdR.mjs +0 -5
  500. package/dist/renderer-DMdNfcud.mjs +0 -6
  501. package/dist/renderer-DPAD6fL1.mjs.map +0 -1
  502. package/dist/renderer-DZQXZ4lK.mjs +0 -5
  503. package/dist/renderer-DczJJLA1.mjs +0 -5
  504. package/dist/renderer-DfqJj9oe.mjs +0 -5
  505. package/dist/renderer-DgO9ihVJ.mjs +0 -5
  506. package/dist/renderer-DhgnQZYb.mjs +0 -5
  507. package/dist/renderer-DjxKjHMf.mjs +0 -5
  508. package/dist/renderer-DnRDW2Oz.mjs +0 -3
  509. package/dist/renderer-DqLA5cdR.mjs +0 -5
  510. package/dist/renderer-Dudp6ZlH.mjs +0 -5
  511. package/dist/renderer-SSBL4M1o.mjs.map +0 -1
  512. package/dist/renderer-_jC5KIT1.mjs +0 -5
  513. package/dist/renderer-cTgAuVmJ.mjs +0 -5
  514. package/dist/renderer-nVKDvDLO.mjs +0 -5
  515. package/dist/renderer-pZ6_pUo1.mjs +0 -5
  516. package/dist/src-DFEqficI.mjs.map +0 -1
  517. /package/dist/{chunk-BcJoO4Nm.mjs → chunk-W71TSjRM.mjs} +0 -0
  518. /package/dist/{renderer-COqFNSfV.mjs → renderer-B6rZUBwE.mjs} +0 -0
@@ -1,480 +0,0 @@
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=`
2
- struct CompositeUniforms {
3
- blendMode : u32,
4
- padding1 : u32,
5
- padding2 : u32,
6
- padding3 : u32,
7
- };
8
-
9
- @group(0) @binding(0) var<uniform> u : CompositeUniforms;
10
- @group(1) @binding(0) var baseTex : texture_2d<f32>;
11
- @group(1) @binding(1) var overlayTex : texture_2d<f32>;
12
- @group(1) @binding(2) var samp : sampler;
13
-
14
- struct VSOut {
15
- @builtin(position) pos : vec4<f32>,
16
- @location(0) uv : vec2<f32>,
17
- };
18
-
19
- @vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
20
- var pos = array<vec2<f32>, 4>(
21
- vec2<f32>(-1.0, 1.0),
22
- vec2<f32>(1.0, 1.0),
23
- vec2<f32>(-1.0, -1.0),
24
- vec2<f32>(1.0, -1.0)
25
- );
26
- var uv = array<vec2<f32>, 4>(
27
- vec2<f32>(0.0, 0.0),
28
- vec2<f32>(1.0, 0.0),
29
- vec2<f32>(0.0, 1.0),
30
- vec2<f32>(1.0, 1.0)
31
- );
32
- return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
33
- }
34
-
35
- fn lum(c: vec3<f32>) -> f32 {
36
- return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;
37
- }
38
-
39
- fn clip_color(c: vec3<f32>) -> vec3<f32> {
40
- let l = lum(c);
41
- let n = min(min(c.r, c.g), c.b);
42
- let x = max(max(c.r, c.g), c.b);
43
- var res = c;
44
- if (n < 0.0) {
45
- res = l + (((res - l) * l) / (l - n));
46
- }
47
- if (x > 1.0) {
48
- res = l + (((res - l) * (1.0 - l)) / (x - l));
49
- }
50
- return res;
51
- }
52
-
53
- fn set_lum(c: vec3<f32>, l: f32) -> vec3<f32> {
54
- let diff = l - lum(c);
55
- return clip_color(c + vec3<f32>(diff));
56
- }
57
-
58
- fn sat(c: vec3<f32>) -> f32 {
59
- return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);
60
- }
61
-
62
- fn set_sat(c: vec3<f32>, s: f32) -> vec3<f32> {
63
- let c_min = min(min(c.r, c.g), c.b);
64
- let c_max = max(max(c.r, c.g), c.b);
65
- if (c_max <= c_min) {
66
- return vec3<f32>(0.0);
67
- }
68
- return (c - vec3<f32>(c_min)) * s / (c_max - c_min);
69
- }
70
-
71
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
72
- let d = textureSample(baseTex, samp, in.uv);
73
- let s = textureSample(overlayTex, samp, in.uv);
74
- let sa = s.a;
75
- let da = d.a;
76
-
77
- switch (u.blendMode) {
78
- case 16u: { return d * sa; } // mask-in / destination-in
79
- case 17u: { return d * (1.0 - sa); } // mask-out / destination-out
80
- case 18u: { return s * da; } // source-in
81
- case 19u: { return s * (1.0 - da); } // source-out
82
- case 20u: { return s * da + d * (1.0 - sa); } // source-atop
83
- case 21u: { return d + s * (1.0 - da); } // destination-over
84
- case 22u: { return d * sa + s * (1.0 - da); } // destination-atop
85
- case 23u: { return s + d; } // lighter
86
- case 24u: { return s; } // copy
87
- case 25u: { return s * (1.0 - da) + d * (1.0 - sa); } // xor
88
- // Luma mattes: the overlay's brightness (premultiplied, so transparent = black) masks the base.
89
- case 26u: { return d * clamp(dot(s.rgb, vec3<f32>(0.2126, 0.7152, 0.0722)), 0.0, 1.0); } // luma-in
90
- case 27u: { return d * (1.0 - clamp(dot(s.rgb, vec3<f32>(0.2126, 0.7152, 0.0722)), 0.0, 1.0)); } // luma-out
91
- default: {
92
- if (sa <= 0.0) { return d; }
93
- if (da <= 0.0) { return s; }
94
- }
95
- }
96
-
97
- let s_rgb = select(s.rgb / sa, vec3<f32>(0.0), sa < 0.001);
98
- let d_rgb = select(d.rgb / da, vec3<f32>(0.0), da < 0.001);
99
-
100
- var b_rgb = s_rgb;
101
-
102
- switch (u.blendMode) {
103
- case 1u: { b_rgb = s_rgb * d_rgb; } // multiply
104
- case 2u: { b_rgb = s_rgb + d_rgb - s_rgb * d_rgb; } // screen
105
- case 3u: { // overlay
106
- b_rgb = select(1.0 - 2.0 * (1.0 - s_rgb) * (1.0 - d_rgb), 2.0 * s_rgb * d_rgb, d_rgb < vec3<f32>(0.5));
107
- }
108
- case 4u: { b_rgb = min(s_rgb, d_rgb); } // darken
109
- case 5u: { b_rgb = max(s_rgb, d_rgb); } // lighten
110
- case 6u: { // color-dodge
111
- b_rgb = select(min(d_rgb / (1.0 - s_rgb), vec3<f32>(1.0)), vec3<f32>(0.0), s_rgb == vec3<f32>(1.0));
112
- }
113
- case 7u: { // color-burn
114
- b_rgb = select(1.0 - min((1.0 - d_rgb) / s_rgb, vec3<f32>(1.0)), vec3<f32>(1.0), s_rgb == vec3<f32>(0.0));
115
- }
116
- case 8u: { // hard-light
117
- b_rgb = select(1.0 - 2.0 * (1.0 - s_rgb) * (1.0 - d_rgb), 2.0 * s_rgb * d_rgb, s_rgb < vec3<f32>(0.5));
118
- }
119
- case 9u: { // soft-light
120
- b_rgb = select(
121
- d_rgb + (2.0 * s_rgb - 1.0) * (sqrt(d_rgb) - d_rgb),
122
- d_rgb - (1.0 - 2.0 * s_rgb) * d_rgb * (1.0 - d_rgb),
123
- s_rgb <= vec3<f32>(0.5)
124
- );
125
- }
126
- case 10u: { b_rgb = abs(d_rgb - s_rgb); } // difference
127
- case 11u: { b_rgb = s_rgb + d_rgb - 2.0 * s_rgb * d_rgb; } // exclusion
128
- case 12u: { b_rgb = set_lum(set_sat(s_rgb, sat(d_rgb)), lum(d_rgb)); } // hue
129
- case 13u: { b_rgb = set_lum(set_sat(d_rgb, sat(s_rgb)), lum(d_rgb)); } // saturation
130
- case 14u: { b_rgb = set_lum(s_rgb, lum(d_rgb)); } // color
131
- case 15u: { b_rgb = set_lum(d_rgb, lum(s_rgb)); } // luminosity
132
- case 16u: { return d * s.a; } // mask-in
133
- case 17u: { return d * (1.0 - s.a); } // mask-out
134
- default: { b_rgb = s_rgb; } // normal
135
- }
136
-
137
- let out_a = sa + da * (1.0 - sa);
138
- let out_rgb = (1.0 - da) * s.rgb + (1.0 - sa) * d.rgb + sa * da * b_rgb;
139
-
140
- return vec4<f32>(out_rgb, out_a);
141
- }
142
- `;var De=`
143
- struct MotionBlur2DUniforms {
144
- vel: vec2<f32>,
145
- _pad: vec2<f32>,
146
- shutterFraction: f32,
147
- samples: f32,
148
- viewportWidth: f32,
149
- viewportHeight: f32,
150
- };
151
-
152
- @group(0) @binding(0) var<uniform> u: MotionBlur2DUniforms;
153
- @group(1) @binding(0) var sourceTexture: texture_2d<f32>;
154
- @group(1) @binding(1) var colorSampler: sampler;
155
-
156
- @vertex
157
- fn vs(@builtin(vertex_index) vertexIndex: u32) -> @builtin(position) vec4<f32> {
158
- var pos = array<vec2<f32>, 3>(
159
- vec2<f32>(-1.0, -3.0),
160
- vec2<f32>( 3.0, 1.0),
161
- vec2<f32>(-1.0, 1.0)
162
- );
163
- return vec4<f32>(pos[vertexIndex], 0.0, 1.0);
164
- }
165
-
166
- @fragment
167
- fn fs(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
168
- let uv = pos.xy / vec2<f32>(u.viewportWidth, u.viewportHeight);
169
- let sampleCount = u32(max(u.samples, 1.0));
170
- let velUV = u.vel * u.shutterFraction;
171
- let halfSamples = f32(sampleCount) * 0.5;
172
-
173
- var accum = vec4<f32>(0.0);
174
- var totalWeight = 0.0;
175
-
176
- for (var i = 0u; i < sampleCount; i = i + 1u) {
177
- let t = (f32(i) - halfSamples) / max(halfSamples, 1.0);
178
- let sampleUV = clamp(uv + velUV * t, vec2<f32>(0.0), vec2<f32>(1.0));
179
- let w = exp(-2.5 * t * t);
180
- accum += textureSampleLevel(sourceTexture, colorSampler, sampleUV, 0.0) * w;
181
- totalWeight += w;
182
- }
183
-
184
- return accum / max(totalWeight, 0.0001);
185
- }
186
- `,Z=class{textures=[];texturesByKey=new Map;index=0;getTexture(e,t,r,i,o){let s=new Set(Array.isArray(o)?o:o?[o]:[]),n=`${t}x${r}:${i}`,a=this.texturesByKey.get(n);if(a)for(let u=0;u<a.length;u++){let d=a[u];if(!s.has(d)){a.splice(u,1),a.unshift(d);let h=this.textures.indexOf(d);return h>=this.index&&(this.textures.splice(h,1),this.textures.splice(this.index,0,d),this.index++),d}}let l=e.createTexture({size:[t,r],format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});return this.texturesByKey.has(n)||this.texturesByKey.set(n,[]),this.texturesByKey.get(n).unshift(l),this.textures.splice(this.index,0,l),this.index++,l}reset(){this.index=0}destroy(){for(let e of this.textures)e.destroy();this.textures=[],this.texturesByKey.clear(),this.index=0}},Ce={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,"luma-in":26,"luma-out":27},_=class{device;compositeUniformLayout;dualTextureLayout;motionBlurUniformLayout;singleTextureLayout;compositePipeline;motionBlurPipeline;compositePool;motionBlurPool;texturePool;compositeUniformBindGroupCache=new w;motionBlurUniformBindGroupCache=new w;compositeData=new Uint32Array(4);motionBlurData=new Float32Array(8);constructor(e,t){this.device=e,this.compositePool=new v(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.motionBlurPool=new v(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.texturePool=new Z,this.compositeUniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.dualTextureLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]}),this.motionBlurUniformLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.singleTextureLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let r=e.createPipelineLayout({bindGroupLayouts:[this.compositeUniformLayout,this.dualTextureLayout]}),i=e.createShaderModule({label:"composite.wgsl",code:ye});this.compositePipeline=e.createRenderPipeline({label:"CompositePipeline",layout:r,vertex:{module:i,entryPoint:"vs"},fragment:{module:i,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-strip"}});let o=e.createPipelineLayout({bindGroupLayouts:[this.motionBlurUniformLayout,this.singleTextureLayout]}),s=e.createShaderModule({label:"motion-blur-2d.wgsl",code:De});this.motionBlurPipeline=e.createRenderPipeline({label:"MotionBlurPipeline",layout:o,vertex:{module:s,entryPoint:"vs"},fragment:{module:s,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-list"}})}resetPools(){this.compositePool.reset(),this.motionBlurPool.reset(),this.texturePool.reset()}getTexture(e,t,r,i,o){return this.texturePool.getTexture(e,t,r,i,o)}getBuffer(e,t){return this.compositePool.getBuffer(e,t)}composite(e,t,r,i,o,s,n,a){let l=r.getSampler(this.device),u=[i,o];a&&(Array.isArray(a)?u.push(...a):u.push(a));let d=this.texturePool.getTexture(this.device,i.width,i.height,n,u);this.compositeData[0]=Ce[s]??0;let h=this.compositePool.getBuffer(this.device,this.compositeData),f=e.beginRenderPass({colorAttachments:[{view:d.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});f.setPipeline(this.compositePipeline);let m=this.compositeUniformBindGroupCache.getBindGroup(this.device,this.compositeUniformLayout,h);f.setBindGroup(0,m);let g=t.getCompositeBindGroup(this.device,this.dualTextureLayout,i,o,l);return f.setBindGroup(1,g),f.draw(4),f.end(),d}applyMotionBlur(e,t,r,i,o,s,n=180,a=16,l,u){if(Math.abs(o)<.1&&Math.abs(s)<.1||n<=0)return i;let d=r.getSampler(this.device),h=[i];u&&(Array.isArray(u)?h.push(...u):h.push(u));let f=this.texturePool.getTexture(this.device,i.width,i.height,l,h);this.motionBlurData[0]=o/i.width,this.motionBlurData[1]=s/i.height,this.motionBlurData[2]=0,this.motionBlurData[3]=0,this.motionBlurData[4]=n/360,this.motionBlurData[5]=a,this.motionBlurData[6]=i.width,this.motionBlurData[7]=i.height;let m=this.motionBlurPool.getBuffer(this.device,this.motionBlurData),g=e.beginRenderPass({colorAttachments:[{view:f.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});g.setPipeline(this.motionBlurPipeline);let x=this.motionBlurUniformBindGroupCache.getBindGroup(this.device,this.motionBlurUniformLayout,m);return g.setBindGroup(0,x),g.setBindGroup(1,t.getBindGroup(this.device,this.singleTextureLayout,i,d)),g.draw(3),g.end(),f}destroy(){this.compositePool.destroy(),this.motionBlurPool.destroy(),this.texturePool.destroy(),this.compositeUniformBindGroupCache.destroy(),this.motionBlurUniformBindGroupCache.destroy()}};p();p();var R=class{cache=new WeakMap;dualCache=new WeakMap;getBindGroup(e,t,r,i){let o=this.cache.get(r);o||(o=new Map,this.cache.set(r,o));let s=o.get(t);return s||(s=e.createBindGroup({layout:t,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i}]}),o.set(t,s)),s}getCompositeBindGroup(e,t,r,i,o){let s=this.dualCache.get(r);s||(s=new WeakMap,this.dualCache.set(r,s));let n=s.get(i);n||(n=new Map,s.set(i,n));let a=n.get(t);return a||(a=e.createBindGroup({layout:t,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i.createView()},{binding:2,resource:o}]}),n.set(t,a)),a}destroy(){this.cache=new WeakMap,this.dualCache=new WeakMap}};p();var O=class{scissorStack=[];stencilStack=[];pushScissor(e,t,r){this.scissorStack.push({rect:e,surfaceWidth:t,surfaceHeight:r})}popScissor(){this.scissorStack.length>0&&this.scissorStack.pop()}saveScissors(){return[...this.scissorStack]}restoreScissors(e){this.scissorStack=[...e]}clearScissors(){this.scissorStack=[]}getCurrentScissor(e,t){let r=this.scissorStack[this.scissorStack.length-1];if(r&&!(e!==void 0&&t!==void 0&&r.surfaceWidth!==void 0&&r.surfaceHeight!==void 0&&r.surfaceWidth!==0&&r.surfaceHeight!==0&&(r.surfaceWidth!==e||r.surfaceHeight!==t)))return r.rect}pushStencilClip(e){this.stencilStack.push(e)}popStencilClip(){this.stencilStack.length>0&&this.stencilStack.pop()}getCurrentStencil(){return this.stencilStack[this.stencilStack.length-1]}applyScissorToPass(e,t,r){let i=this.getCurrentScissor(t,r);if(!i){e.setScissorRect(0,0,Math.max(1,Math.floor(t)),Math.max(1,Math.floor(r)));return}let o=Math.max(0,Math.floor(i.x)),s=Math.max(0,Math.floor(i.y)),n=Math.min(t,Math.ceil(i.x+i.width)),a=Math.min(r,Math.ceil(i.y+i.height)),l=Math.max(0,n-o),u=Math.max(0,a-s);if(!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(l)||!Number.isFinite(u)||l<=0||u<=0)e.setScissorRect(0,0,1,1);else{let d=Math.min(l,Math.max(0,t-o)),h=Math.min(u,Math.max(0,r-s));d<=0||h<=0?e.setScissorRect(0,0,1,1):e.setScissorRect(Math.floor(o),Math.floor(s),Math.floor(d),Math.floor(h))}}destroy(){this.scissorStack=[],this.stencilStack=[]}};p();p();var ge=`
187
- struct Uniforms {
188
- transformCol0 : vec4<f32>,
189
- transformCol1 : vec4<f32>,
190
- transformCol2 : vec4<f32>,
191
- params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = strokeWidth
192
- color : vec4<f32>,
193
- style : vec4<f32>, // x = capType (0 = round, 1 = butt, 2 = square)
194
- p0 : vec2<f32>,
195
- p1 : vec2<f32>,
196
- };
197
-
198
- @group(0) @binding(0) var<uniform> u : Uniforms;
199
-
200
- struct VSOut {
201
- @builtin(position) pos : vec4<f32>,
202
- @location(0) localPos : vec2<f32>,
203
- };
204
-
205
- @vertex fn vs(@location(0) xy : vec2<f32>) -> VSOut {
206
- let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
207
- let p = transform * vec3<f32>(xy, 1.0);
208
-
209
- let surfaceSize = u.params.yz;
210
- let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
211
- let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
212
-
213
- return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
214
- }
215
-
216
- fn sdSegmentWithCap(p: vec2<f32>, a: vec2<f32>, b: vec2<f32>, radius: f32, capType: f32) -> f32 {
217
- let ba = b - a;
218
- let len = length(ba);
219
- if (len < 1e-6) {
220
- return length(p - a) - radius;
221
- }
222
- let dir = ba / len;
223
- let normal = vec2<f32>(-dir.y, dir.x);
224
- let pa = p - a;
225
-
226
- let proj = dot(pa, dir);
227
- let perp = abs(dot(pa, normal));
228
-
229
- if (capType > 0.5 && capType < 1.5) {
230
- // Butt cap: terminates strictly at endpoints a and b
231
- let dx = max(-proj, proj - len);
232
- let dy = perp - radius;
233
- let outside = length(max(vec2<f32>(dx, dy), vec2<f32>(0.0, 0.0)));
234
- let inside = min(max(dx, dy), 0.0);
235
- return outside + inside;
236
- } else if (capType >= 1.5) {
237
- // Square cap: extends past endpoints a and b by radius
238
- let dx = max(-proj - radius, proj - (len + radius));
239
- let dy = perp - radius;
240
- let outside = length(max(vec2<f32>(dx, dy), vec2<f32>(0.0, 0.0)));
241
- let inside = min(max(dx, dy), 0.0);
242
- return outside + inside;
243
- } else {
244
- // Round cap (default)
245
- let h = clamp(proj / len, 0.0, 1.0);
246
- return length(pa - ba * h) - radius;
247
- }
248
- }
249
-
250
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
251
- let radius = u.params.w * 0.5;
252
- let d = sdSegmentWithCap(in.localPos, u.p0, u.p1, radius, u.style.x);
253
-
254
- let fw = max(fwidth(d), 1e-5);
255
- let edgeAlpha = clamp(0.5 - d / fw, 0.0, 1.0);
256
- let alpha = u.color.a * u.params.x * edgeAlpha;
257
- if (alpha <= 0.0) {
258
- discard;
259
- }
260
-
261
- return vec4<f32>(u.color.rgb * alpha, alpha);
262
- }
263
- `;var L=class{device;pipeline;maxPipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new w;scratchData=new Float32Array(28);constructor(e,t){this.device=e,this.uniformPool=new v(4096,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new v(4096,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"path.wgsl",code:ge});this.uniformLayout=U(e),this.pipeline=k(e,{label:"PathPipeline",module:r,uniformLayout:this.uniformLayout,format:t,topology:"triangle-strip"}),this.maxPipeline=k(e,{label:"PathPipeline.max",module:r,uniformLayout:this.uniformLayout,format:t,topology:"triangle-strip",blend:{color:{srcFactor:"one",dstFactor:"one",operation:"max"},alpha:{srcFactor:"one",dstFactor:"one",operation:"max"}}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}drawPath(e,t,r,i,o,s,n,a){let l=ce(r);if(l.length===0||((a?.trimStart!==void 0||a?.trimEnd!==void 0||a?.trimOffset!==void 0)&&(l=Q(l,a.trimStart??0,a.trimEnd??1,a.trimOffset??0)),a?.strokeDashArray&&a.strokeDashArray.length>0&&(l=Y(l,a.strokeDashArray,a.strokeDashOffset??0)),l.length===0))return;let u=G(i),d=a?.opacity??1,h=0;a?.strokeLineCap==="butt"?h=1:a?.strokeLineCap==="square"&&(h=2);for(let f of l)this.drawSegment(e,t,f.p0,f.p1,u,o,h,s,n,d,a)}drawSegments(e,t,r,i,o,s,n,a){let l=r;if((a?.trimStart!==void 0||a?.trimEnd!==void 0||a?.trimOffset!==void 0)&&(l=Q(l,a.trimStart??0,a.trimEnd??1,a.trimOffset??0)),a?.strokeDashArray&&a.strokeDashArray.length>0&&(l=Y(l,a.strokeDashArray,a.strokeDashOffset??0)),l.length===0)return;let u=G(i),d=a?.opacity??1,h=0;a?.strokeLineCap==="butt"?h=1:a?.strokeLineCap==="square"&&(h=2);for(let f of l)this.drawSegment(e,t,f.p0,f.p1,u,o,h,s,n,d,a)}drawSegment(e,t,r,i,o,s,n,a,l,u,d){let h=this.scratchData;t.packIntoBuffer(h,u,a,l,d?.transform),h[15]=s,h[16]=o.r,h[17]=o.g,h[18]=o.b,h[19]=o.a,h[20]=n,h[21]=0,h[22]=0,h[23]=0,h[24]=r.x,h[25]=r.y,h[26]=i.x,h[27]=i.y;let f=this.uniformPool.getBuffer(this.device,h),m=i.x-r.x,g=i.y-r.y,x=Math.sqrt(m*m+g*g);if(x<1e-6)return;let B=s*.5+2,P=m/x*B,b=g/x*B,S=-b,D=P,Ge=new Float32Array([r.x-P-S,r.y-b-D,r.x-P+S,r.y-b+D,i.x+P-S,i.y+b-D,i.x+P+S,i.y+b+D]),Ue=this.vertexPool.getBuffer(this.device,Ge),Be=d?.blendMode==="max"?this.maxPipeline:this.pipeline;e.setPipeline(Be);let ke=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,f);e.setBindGroup(0,ke),e.setVertexBuffer(0,Ue),e.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};p();p();var ve=`
264
- struct Uniforms {
265
- transformCol0 : vec4<f32>,
266
- transformCol1 : vec4<f32>,
267
- transformCol2 : vec4<f32>,
268
- params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = blurAmount
269
- };
270
-
271
- @group(0) @binding(0) var<uniform> u : Uniforms;
272
- @group(1) @binding(0) var tex : texture_2d<f32>;
273
- @group(1) @binding(1) var samp : sampler;
274
-
275
- struct VSOut {
276
- @builtin(position) pos : vec4<f32>,
277
- @location(0) uv : vec2<f32>,
278
- };
279
-
280
- @vertex fn vs(@location(0) xy : vec2<f32>, @location(1) uv : vec2<f32>) -> VSOut {
281
- let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
282
- let p = transform * vec3<f32>(xy, 1.0);
283
-
284
- let surfaceSize = u.params.yz;
285
- let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
286
- let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
287
-
288
- return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), uv);
289
- }
290
-
291
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
292
- let opacity = u.params.x;
293
- let blurAmount = u.params.w;
294
-
295
- if (blurAmount > 0.01) {
296
- let fdx = dpdx(in.uv);
297
- let fdy = dpdy(in.uv);
298
- let fw = max(max(abs(fdx), abs(fdy)), vec2<f32>(0.000001));
299
- let step = fw * blurAmount * 0.3;
300
-
301
- var color = vec4<f32>(0.0);
302
- var totalWeight = 0.0;
303
- for (var y_offset = -1.0; y_offset <= 1.0; y_offset = y_offset + 1.0) {
304
- for (var x_offset = -1.0; x_offset <= 1.0; x_offset = x_offset + 1.0) {
305
- let offset = vec2<f32>(x_offset, y_offset) * step;
306
- let sampleColor = textureSample(tex, samp, in.uv + offset);
307
- color = color + sampleColor;
308
- totalWeight = totalWeight + 1.0;
309
- }
310
- }
311
- return (color / totalWeight) * opacity;
312
- } else {
313
- let color = textureSample(tex, samp, in.uv);
314
- return color * opacity;
315
- }
316
- }
317
- `;var E=class{buffers=[];index=0;size;usage;constructor(e,t){this.size=e,this.usage=t}getBuffer(e,t){if(this.index>=this.buffers.length){let i=e.createBuffer({size:this.size,usage:this.usage});this.buffers.push(i)}let r=this.buffers[this.index++];return e.queue.writeBuffer(r,0,t),r}reset(){this.index=0}destroy(){for(let e of this.buffers)e.destroy();this.buffers=[]}},A=class{device;pipeline;uniformLayout;textureLayout;uniformPool;vertexPool;uniformBindGroupCache=new w;uniformData=new Float32Array(16);vertexData=new Float32Array(16);constructor(e,t){this.device=e,this.uniformPool=new E(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new E(64,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"quad.wgsl",code:ve});this.uniformLayout=U(e),this.textureLayout=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let i=e.createPipelineLayout({bindGroupLayouts:[this.uniformLayout,this.textureLayout]});this.pipeline=e.createRenderPipeline({label:"QuadPipeline",layout:i,vertex:{module:r,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:r,entryPoint:"fs",targets:[{format:t,blend:de}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(e,t,r,i,o,s,n,a,l,u){let d=u?.opacity??1;r.packIntoBuffer(this.uniformData,d,a,l,u?.transform);let h=this.uniformPool.getBuffer(this.device,this.uniformData),f=s.x/i.width,m=s.y/i.height,g=(s.x+s.width)/i.width,x=(s.y+s.height)/i.height;this.vertexData[0]=n.x,this.vertexData[1]=n.y,this.vertexData[2]=f,this.vertexData[3]=m,this.vertexData[4]=n.x+n.width,this.vertexData[5]=n.y,this.vertexData[6]=g,this.vertexData[7]=m,this.vertexData[8]=n.x,this.vertexData[9]=n.y+n.height,this.vertexData[10]=f,this.vertexData[11]=x,this.vertexData[12]=n.x+n.width,this.vertexData[13]=n.y+n.height,this.vertexData[14]=g,this.vertexData[15]=x;let B=this.vertexPool.getBuffer(this.device,this.vertexData),P=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,h),b=t.getBindGroup(this.device,this.textureLayout,i,o);e.setPipeline(this.pipeline),e.setBindGroup(0,P),e.setBindGroup(1,b),e.setVertexBuffer(0,B),e.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};p();p();var V=`
318
- struct GradientUniforms {
319
- info : vec4<f32>, // x = type (0 none, 1 linear, 2 radial, 3 conic), y = stop count
320
- geom : vec4<f32>, // linear: cx, cy, dir.x / len, dir.y / len; radial: cx, cy, rx, ry; conic: cx, cy, from (rad)
321
- offsets : array<vec4<f32>, 2>,
322
- stops : array<vec4<f32>, 8>, // OKLab + alpha
323
- };
324
-
325
- fn gradientOklabToSrgb(lab: vec3<f32>) -> vec3<f32> {
326
- let l = pow(lab.x + 0.3963377774 * lab.y + 0.2158037573 * lab.z, 3.0);
327
- let m = pow(lab.x - 0.1055613458 * lab.y - 0.0638541728 * lab.z, 3.0);
328
- let s = pow(lab.x - 0.0894841775 * lab.y - 1.291485548 * lab.z, 3.0);
329
- let lin = clamp(vec3<f32>(
330
- 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,
331
- -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,
332
- -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s,
333
- ), vec3<f32>(0.0), vec3<f32>(1.0));
334
- let lo = lin * 12.92;
335
- let hi = 1.055 * pow(lin, vec3<f32>(1.0 / 2.4)) - 0.055;
336
- return select(hi, lo, lin <= vec3<f32>(0.0031308));
337
- }
338
-
339
- /// Position along the gradient (0..1, unclamped for linear/radial) at local point p.
340
- fn gradientT(g: GradientUniforms, p: vec2<f32>) -> f32 {
341
- let d = p - g.geom.xy;
342
- let kind = g.info.x;
343
- if (kind < 1.5) {
344
- return dot(d, g.geom.zw) + 0.5;
345
- }
346
- if (kind < 2.5) {
347
- return length(d / max(g.geom.zw, vec2<f32>(1e-4)));
348
- }
349
- let a = atan2(d.x, -d.y) - g.geom.z;
350
- return fract(a / 6.28318530718);
351
- }
352
-
353
- /// Straight sRGB color + alpha of the gradient at local point p.
354
- fn evalGradient(g: GradientUniforms, p: vec2<f32>) -> vec4<f32> {
355
- var offs = g.offsets;
356
- var stops = g.stops;
357
- let n = i32(g.info.y);
358
- let t = gradientT(g, p);
359
- var lab = stops[0];
360
- if (t > offs[0].x) {
361
- lab = stops[n - 1];
362
- for (var i = 1; i < 8; i++) {
363
- if (i >= n) {
364
- break;
365
- }
366
- let b = offs[i / 4][i % 4];
367
- if (t <= b) {
368
- let a = offs[(i - 1) / 4][(i - 1) % 4];
369
- let f = select(1.0, (t - a) / (b - a), b - a > 1e-5);
370
- lab = mix(stops[i - 1], stops[i], clamp(f, 0.0, 1.0));
371
- break;
372
- }
373
- }
374
- }
375
- return vec4<f32>(gradientOklabToSrgb(lab.xyz), lab.w);
376
- }
377
- `;p();var xe=`
378
- ${V}
379
-
380
- struct Uniforms {
381
- transformCol0 : vec4<f32>,
382
- transformCol1 : vec4<f32>,
383
- transformCol2 : vec4<f32>,
384
- params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = unused
385
- color : vec4<f32>, // solid color (gradient.info.x = 0)
386
- gradient : GradientUniforms,
387
- };
388
-
389
- @group(0) @binding(0) var<uniform> u : Uniforms;
390
-
391
- struct VSOut {
392
- @builtin(position) pos : vec4<f32>,
393
- @location(0) localPos : vec2<f32>,
394
- };
395
-
396
- @vertex fn vs(@location(0) xy : vec2<f32>) -> VSOut {
397
- let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
398
- let p = transform * vec3<f32>(xy, 1.0);
399
-
400
- let surfaceSize = u.params.yz;
401
- let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
402
- let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
403
-
404
- return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
405
- }
406
-
407
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
408
- var outColor = u.color;
409
- if (u.gradient.info.x > 0.5) {
410
- outColor = evalGradient(u.gradient, in.localPos);
411
- }
412
-
413
- let alpha = outColor.a * u.params.x;
414
- if (alpha <= 0.0) {
415
- discard;
416
- }
417
-
418
- return vec4<f32>(outColor.rgb * alpha, alpha);
419
- }
420
- `;p();var Te={linear:1,radial:2,conic:3};function I(c){return typeof c=="string"&&c.includes("gradient(")?re(c):null}function W(c,e,t,r){if(t.fill(0,r,r+48),!c)return;let i=ie(c.stops),o=Math.max(e.width,.001),s=Math.max(e.height,.001),n=e.x+c.center[0]*o,a=e.y+c.center[1]*s;if(t[r]=Te[c.type],t[r+1]=i.length,t[r+4]=c.type==="linear"?e.x+o/2:n,t[r+5]=c.type==="linear"?e.y+s/2:a,c.type==="linear"){let l=c.angle*Math.PI/180,u=Math.sin(l),d=-Math.cos(l),h=Math.abs(o*u)+Math.abs(s*d);t[r+6]=u/h,t[r+7]=d/h}else if(c.type==="radial"){let l,u;c.radius?[l,u]=c.radius:[l,u]=Fe(c,n-e.x,e.x+o-n,a-e.y,e.y+s-a),t[r+6]=l,t[r+7]=u}else t[r+6]=c.from*Math.PI/180;i.forEach((l,u)=>{t[r+8+u]=l.offset}),T(i).forEach((l,u)=>{t.set(l,r+16+u*4)})}function Fe(c,e,t,r,i){let o=c.extent??"farthest-corner",s=o.startsWith("farthest"),n=s?Math.max(e,t):Math.min(e,t),a=s?Math.max(r,i):Math.min(r,i),l=c.shape==="circle";if(o.endsWith("side")){if(!l)return[n,a];let u=s?Math.max(n,a):Math.min(n,a);return[u,u]}if(l){let u=Math.hypot(n,a);return[u,u]}return[n*Math.SQRT2,a*Math.SQRT2]}var z=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformData=new Float32Array(68);constructor(e,t){this.device=e,this.uniformPool=new v(2048,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new v(8192,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"shape-fill.wgsl",code:xe});this.uniformLayout=U(e),this.pipeline=k(e,{label:"ShapeFillPipeline",module:r,uniformLayout:this.uniformLayout,format:t,topology:"triangle-list"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(e,t,r,i,o,s,n,a){if(r.length<6||i.type==="none")return;let l=a?.opacity??1;t.packIntoBuffer(this.uniformData,l,s,n,a?.transform),this.uniformData[15]=0;let u=I(i.color);if(u)this.uniformData.fill(0,16,20),W(u,o,this.uniformData,20);else{let f=G(i.color??"#ffffff");this.uniformData[16]=f.r,this.uniformData[17]=f.g,this.uniformData[18]=f.b,this.uniformData[19]=f.a,this.packTwoColorGradient(i,o,f)}let d=this.uniformPool.getBuffer(this.device,this.uniformData),h=this.vertexPool.getBuffer(this.device,r);e.setPipeline(this.pipeline),e.setBindGroup(0,this.device.createBindGroup({layout:this.uniformLayout,entries:[{binding:0,resource:{buffer:d}}]})),e.setVertexBuffer(0,h),e.draw(r.length/2)}packTwoColorGradient(e,t,r){if(this.uniformData.fill(0,20,68),e.type!=="linear"&&e.type!=="radial")return;let o=G(e.color2??e.color??"#ffffff"),s=this.uniformData;if(e.type==="linear"){let a=e.startX??t.x,l=e.startY??t.y,u=e.endX??t.x+t.width,d=e.endY??t.y+t.height,h=u-a,f=d-l,m=Math.max(h*h+f*f,1e-6);s.set([1,2,0,0,(a+u)/2,(l+d)/2,h/m,f/m],20)}else{let a=e.radius??Math.max(t.width,t.height)/2;s.set([2,2,0,0,e.cx??t.x+t.width/2,e.cy??t.y+t.height/2,a,a],20)}s[28]=0,s[29]=1;let n=T([{offset:0,color:[r.r,r.g,r.b,r.a]},{offset:1,color:[o.r,o.g,o.b,o.a]}]);s.set(n[0],36),s.set(n[1],40)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy()}};p();p();var Pe=`
421
- ${V}
422
-
423
- struct Uniforms {
424
- transformCol0 : vec4<f32>,
425
- transformCol1 : vec4<f32>,
426
- transformCol2 : vec4<f32>,
427
- params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = cornerRadius
428
- color : vec4<f32>,
429
- rect : vec4<f32>, // x, y, width, height
430
- gradient : GradientUniforms, // info.x = 0: solid \`color\`
431
- };
432
-
433
- @group(0) @binding(0) var<uniform> u : Uniforms;
434
-
435
- struct VSOut {
436
- @builtin(position) pos : vec4<f32>,
437
- @location(0) localPos : vec2<f32>,
438
- };
439
-
440
- @vertex fn vs(@location(0) xy : vec2<f32>) -> VSOut {
441
- let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
442
- let p = transform * vec3<f32>(xy, 1.0);
443
-
444
- let surfaceSize = u.params.yz;
445
- let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
446
- let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
447
-
448
- return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
449
- }
450
-
451
- fn sdRoundedRect(p: vec2<f32>, b: vec2<f32>, r: f32) -> f32 {
452
- let q = abs(p) - b + r;
453
- return min(max(q.x, q.y), 0.0) + length(max(q, vec2<f32>(0.0))) - r;
454
- }
455
-
456
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
457
- let center = u.rect.xy + u.rect.zw * 0.5;
458
- let halfSize = u.rect.zw * 0.5;
459
- let radius = u.params.w;
460
-
461
- let d = sdRoundedRect(in.localPos - center, halfSize, radius);
462
- // Rounded shapes: one device pixel of coverage centred on the edge (the
463
- // quad has room for its outer half). Square ones keep their exact edge.
464
- let fw = max(fwidth(d), 1e-4);
465
- var edgeAlpha = 1.0 - smoothstep(0.0, 1.0, d);
466
- if (radius > 0.0) {
467
- edgeAlpha = clamp(0.5 - d / fw, 0.0, 1.0);
468
- }
469
- var fill = u.color;
470
- if (u.gradient.info.x > 0.5) {
471
- fill = evalGradient(u.gradient, in.localPos);
472
- }
473
- let alpha = fill.a * u.params.x * edgeAlpha;
474
- if (alpha <= 0.0) {
475
- discard;
476
- }
477
-
478
- return vec4<f32>(fill.rgb * alpha, alpha);
479
- }
480
- `;var H=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new w;uniformData=new Float32Array(72);vertexData=new Float32Array(8);constructor(e,t){this.device=e,this.uniformPool=new v(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new v(256,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"solid.wgsl",code:Pe});this.uniformLayout=U(e),this.pipeline=k(e,{label:"SolidPipeline",module:r,uniformLayout:this.uniformLayout,format:t,topology:"triangle-strip"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(e,t,r,i,o,s,n=0,a){let l=I(i),u=l?{r:0,g:0,b:0,a:1}:G(i),d=a?.opacity??1;t.packIntoBuffer(this.uniformData,d,o,s,a?.transform),this.uniformData[15]=n,this.uniformData[16]=u.r,this.uniformData[17]=u.g,this.uniformData[18]=u.b,this.uniformData[19]=u.a,this.uniformData[20]=r.x,this.uniformData[21]=r.y,this.uniformData[22]=r.width,this.uniformData[23]=r.height,W(l,r,this.uniformData,24);let h=this.uniformPool.getBuffer(this.device,this.uniformData),f=0;if(n>0){let S=a?.transform?t.getCurrent().multiply(a.transform):t.getCurrent(),D=Math.min(Math.hypot(S.a,S.b),Math.hypot(S.c,S.d));f=2/Math.max(D,.001)}let m=r.x-f,g=r.y-f,x=r.x+r.width+f,B=r.y+r.height+f;this.vertexData[0]=m,this.vertexData[1]=g,this.vertexData[2]=x,this.vertexData[3]=g,this.vertexData[4]=m,this.vertexData[5]=B,this.vertexData[6]=x,this.vertexData[7]=B;let P=this.vertexPool.getBuffer(this.device,this.vertexData);e.setPipeline(this.pipeline);let b=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,h);e.setBindGroup(0,b),e.setVertexBuffer(0,P),e.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};p();var N=class{stack=[new DOMMatrix];push(e){let r=this.stack[this.stack.length-1].multiply(e);this.stack.push(r)}pop(){this.stack.length>1&&this.stack.pop()}getCurrent(){return this.stack[this.stack.length-1]}packIntoBuffer(e,t,r,i,o,s){let n=this.getCurrent();o&&(n=n.multiply(o)),e[0]=n.a,e[1]=n.b,e[2]=0,e[3]=0,e[4]=n.c,e[5]=n.d,e[6]=0,e[7]=0,e[8]=n.e,e[9]=n.f,e[10]=1,e[11]=0,e[12]=t,e[13]=r,e[14]=i,e[15]=s??0}destroy(){this.stack=[new DOMMatrix]}};function Me(c){if(Array.isArray(c)){let r=c[3]??1;return[c[0]*r,c[1]*r,c[2]*r,r]}if("r"in c){let r=c.a??1;return{r:c.r*r,g:c.g*r,b:c.b*r,a:r}}let e=Array.from(c),t=e[3]??1;return[e[0]*t,e[1]*t,e[2]*t,t]}var be=new WeakMap;function tr(c,e){let t=be.get(c);return(!t||t.format!==e||t.isDestroyed)&&(t=new te(c,e),be.set(c,t)),t.resetPools(),t}var te=class{device;transformStack=new N;clipStack=new O;quadPipeline;solidPipeline;shapeFillPipeline;pathPipeline;effectPipeline;slugPipeline;bindGroupCache=new R;samplerCache=new pe;format;isDestroyed=!1;rasterDrawCount=0;surfaceWidth=0;surfaceHeight=0;lastEncoder=null;constructor(e,t){this.device=e,this.format=t,this.quadPipeline=new A(e,t),this.solidPipeline=new H(e,t),this.shapeFillPipeline=new z(e,t),this.pathPipeline=new L(e,t),this.effectPipeline=new _(e,t),this.slugPipeline=new le(e,t)}beginFrame(e,t,r={r:0,g:0,b:0,a:0},i,o,s="clear"){this.surfaceWidth=i,this.surfaceHeight=o,e!==this.lastEncoder&&(this.lastEncoder=e,this.resetPools());let n=e.beginRenderPass({colorAttachments:[{view:t,clearValue:Me(r),loadOp:s,storeOp:"store"}]});return this.clipStack.applyScissorToPass(n,i,o),n}endFrame(e){}resetPools(){this.quadPipeline.resetPools(),this.solidPipeline.resetPools(),this.shapeFillPipeline.resetPools(),this.pathPipeline.resetPools(),this.effectPipeline&&this.effectPipeline.resetPools(),this.slugPipeline.resetPools(),q.flushRetired(this.device),q.prune(this.device)}drawTexture(e,t,r,i){let o=this.samplerCache.getSampler(this.device),s={x:0,y:0,width:t.width,height:t.height};this.rasterDrawCount++,this.quadPipeline.draw(e,this.bindGroupCache,this.transformStack,t,o,s,r,this.surfaceWidth,this.surfaceHeight,i)}drawTextureRegion(e,t,r,i,o){let s=this.samplerCache.getSampler(this.device);this.rasterDrawCount++,this.quadPipeline.draw(e,this.bindGroupCache,this.transformStack,t,s,r,i,this.surfaceWidth,this.surfaceHeight,o)}drawRect(e,t,r,i=0,o){let s=0,n=o;typeof i=="object"&&i!==null?(n=i,s=0):typeof i=="number"&&(s=i),this.rasterDrawCount++,this.solidPipeline.draw(e,this.transformStack,t,r,this.surfaceWidth,this.surfaceHeight,s,n)}drawPath(e,t,r,i,o){this.rasterDrawCount++,this.pathPipeline.drawPath(e,this.transformStack,t,r,i,this.surfaceWidth,this.surfaceHeight,o)}drawShapeFill(e,t,r,i,o){this.rasterDrawCount++,this.shapeFillPipeline.draw(e,this.transformStack,t,r,i,this.surfaceWidth,this.surfaceHeight,o)}drawShape(e,t,r,i,o){let s={x:0,y:0,width:t.width,height:t.height};if(r&&r.type!=="none"){let n=he(t);if(n.length>0&&(this.drawShapeFill(e,n,r,s,o),(!i||!i.width||i.width<=0)&&(r.type??"solid")==="solid"&&r.color)){let a=$(t);a&&this.drawPath(e,a,r.color,1,{...o,strokeLineCap:"round"})}}if(i&&i.width&&i.width>0&&i.color){let n=$(t);n&&this.drawPath(e,n,i.color,i.width,{...o,strokeLineCap:i.cap,trimStart:i.trimStart,trimEnd:i.trimEnd,trimOffset:i.trimOffset,strokeDashArray:i.dashArray,strokeDashOffset:i.dashOffset})}}drawRRect(e,t,r,i){this.drawRect(e,t.rect,r,t.rx,i)}getTemporaryTexture(e,t,r){return this.effectPipeline.getTexture(this.device,e,t,this.format,r)}getTemporaryBuffer(e){return this.effectPipeline.getBuffer(this.device,e)}composite(e,t,r,i,o){return this.effectPipeline.composite(e,this.bindGroupCache,this.samplerCache,t,r,i,this.format,o)}applyMotionBlur(e,t,r,i,o=180,s=16,n){return this.effectPipeline.applyMotionBlur(e,this.bindGroupCache,this.samplerCache,t,r,i,o,s,this.format,n)}getCurrentTransform(){return this.transformStack.getCurrent()}getTransformStack(){return this.transformStack}getSurfaceWidth(){return this.surfaceWidth}getSurfaceHeight(){return this.surfaceHeight}pushIdentity(){let e=this.transformStack.getCurrent();this.pushTransform(e.inverse())}pushTransform(e){this.transformStack.push(e)}popTransform(){this.transformStack.pop()}pushScissor(e){this.clipStack.pushScissor(e,this.surfaceWidth,this.surfaceHeight)}pushScissorIntersect(e){let t=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(!t){this.pushScissor(e);return}let r=Math.max(e.x,t.x),i=Math.max(e.y,t.y),o=Math.min(e.x+e.width,t.x+t.width),s=Math.min(e.y+e.height,t.y+t.height);this.pushScissor({x:r,y:i,width:Math.max(0,o-r),height:Math.max(0,s-i)})}pushScissorLocal(e){let t=this.transformStack.getCurrent(),r=[t.transformPoint(new DOMPoint(e.x,e.y)),t.transformPoint(new DOMPoint(e.x+e.width,e.y)),t.transformPoint(new DOMPoint(e.x,e.y+e.height)),t.transformPoint(new DOMPoint(e.x+e.width,e.y+e.height))],i=r.map(d=>d.x),o=r.map(d=>d.y),s=Math.min(...i),n=Math.min(...o),a=Math.max(...i)-s,l=Math.max(...o)-n,u=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(u){let d=Math.max(s,u.x),h=Math.max(n,u.y),f=Math.min(s+a,u.x+u.width),m=Math.min(n+l,u.y+u.height);s=d,n=h,a=Math.max(0,f-d),l=Math.max(0,m-h)}this.clipStack.pushScissor({x:s,y:n,width:a,height:l},this.surfaceWidth,this.surfaceHeight)}popScissor(){this.clipStack.popScissor()}suspendScissors(){let e=this.clipStack.saveScissors();return this.clipStack.clearScissors(),e}resumeScissors(e){this.clipStack.restoreScissors(e)}pushStencilClip(e){this.clipStack.pushStencilClip(e)}popStencilClip(){this.clipStack.popStencilClip()}destroy(){this.isDestroyed=!0,this.transformStack.destroy(),this.clipStack.destroy(),this.bindGroupCache.destroy(),this.samplerCache.destroy(),this.quadPipeline.destroy(),this.solidPipeline.destroy(),this.shapeFillPipeline.destroy(),this.pathPipeline.destroy(),this.effectPipeline.destroy(),this.slugPipeline.destroy(),this.lastEncoder=null}};p();async function Se(c,e){if(typeof window<"u"&&typeof FontFace<"u"){let t=typeof e=="string"?e:"its registered bytes";try{let i=await new FontFace(c,typeof e=="string"?`url(${e})`:e).load();document.fonts.add(i),await document.fonts.ready}catch(r){console.warn(`[preloadFont] Failed to load font "${c}" from ${t}:`,r)}}else typeof e=="string"&&await oe(c,e)}p();var we=!1;async function dr(c,e,t=(r,i)=>console.warn(`[framefields] ${i}`,r)){let r=new Set,i=new Map;(function s(n){let a=n.operation;if(a){let l=a.op==="text"||a.kind==="text"||a.op==="caption"||a.kind==="caption"||typeof a.text=="string",u=a.fontFamily||(l?"Inter":"");if(u&&r.add(u),l&&typeof a.text=="string"){let d=a.fontSize??48;for(let h of ue(a.text))i.set(`${h}-${d}`,d)}}for(let l of n.children??[])s(l)})(c);let o=[];for(let s of r){let n=fe(s),a=me(s),l=typeof n=="string"?n:"its registered bytes";o.push(Se(s,n).catch(u=>t(u,`font "${s}" from ${l}`))),e&&o.push(C.preloadSlugFont(e,s,a).catch(u=>t(u,`Slug font "${s}" from ${a}`)))}if(e&&i.size>0){!C.hasEmojiFont()&&!we&&(we=!0,console.warn("[framefields] Text uses emoji but no emoji font is registered, so exports draw nothing for them. Run `npx framefields fonts add emoji` and call the generated `registerFonts()`, or register a color emoji font (e.g. Noto Color Emoji) with FontManager.registerEmojiFont(path). `comp.lint()` names the layers (missing_emoji_font)."));for(let[s,n]of i){let a=s.slice(0,s.lastIndexOf("-"));o.push(C.preloadEmoji(e,a,n).catch(l=>{C.hasEmojiFont()&&t(l,`emoji "${a}"`)}))}}await Promise.all(o)}export{Ee as a,_ as b,tr as c,te as d,Se as e,dr as f};
@@ -1,39 +0,0 @@
1
- import{W as ye,Z as xe,ba as ke,ea as Te,fa as Me,ga as Ue,ha as we,ka as Pe}from"./chunk-D73ZKPFN.mjs";import{q as ve}from"./chunk-BXPM5SJ3.mjs";import{g as he}from"./chunk-KOVN277Z.mjs";import{g as j}from"./chunk-Y4NIR77Z.mjs";j();j();j();var re=new Uint8Array(0),Re=new Uint32Array(0);function Fe(t,e,n){re.length<t.length&&(re=new Uint8Array(t.length),Re=new Uint32Array(t.length));let r=re,a=Re,i=0,s=0;for(let u=1;u<=t.length;u++)(u===t.length||t[u]!==t[s])&&(r[i]=t[s],a[i]=u-s,i++,s=u);return{width:e,height:n,values:r.slice(0,i),lengths:a.slice(0,i)}}function De(t){let e=new Uint8Array(t.width*t.height),n=0;for(let r=0;r<t.values.length;r++){let a=n+t.lengths[r];t.values[r]!==0&&e.fill(t.values[r],n,a),n=a}return e}function Ge(t){return t.values.byteLength+t.lengths.byteLength}function oe(t){let{mask:e,...n}=t;return{...n,rle:Fe(e,t.width,t.height)}}function ae(t){let{rle:e,...n}=t;return{...n,mask:De(e)}}function se(t){let e=512+t.detections.length*128+t.objects.length*256;for(let n of t.masks??[])e+=Ge(n.rle);return t.subject&&(e+=Ge(t.subject.mask.rle)),e}var L=class{constructor(e=256*1024*1024){this.maxBytes=e}maxBytes;entries=new Map;bytes=0;get(e,n){let r=`${e}#${n}`,a=this.entries.get(r);return a&&(this.entries.delete(r),this.entries.set(r,a)),a}set(e,n,r){let a=`${e}#${n}`,i=this.entries.get(a);i&&(this.bytes-=se(i),this.entries.delete(a)),this.entries.set(a,r),this.bytes+=se(r);for(let[s,u]of this.entries){if(this.bytes<=this.maxBytes)break;this.entries.delete(s),this.bytes-=se(u)}}clear(){this.entries.clear(),this.bytes=0}get size(){return this.entries.size}};j();var Ee=`
2
- struct Params {
3
- mode: u32, // 0 matte, 1 mask, 2 crop
4
- _pad: u32,
5
- cropMin: vec2<f32>, // uv of the subject bounds (crop)
6
- cropMax: vec2<f32>,
7
- _pad2: vec2<f32>,
8
- };
9
-
10
- @group(0) @binding(0) var<uniform> params: Params;
11
- @group(0) @binding(1) var picture: texture_2d<f32>;
12
- @group(0) @binding(2) var mask: texture_2d<f32>;
13
- @group(0) @binding(3) var samp: sampler;
14
-
15
- struct VSOut {
16
- @builtin(position) pos: vec4<f32>,
17
- @location(0) uv: vec2<f32>,
18
- };
19
-
20
- @vertex fn vs(@builtin(vertex_index) i: u32) -> VSOut {
21
- var p = array<vec2<f32>, 3>(vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0));
22
- var out: VSOut;
23
- out.pos = vec4(p[i], 0.0, 1.0);
24
- out.uv = vec2(p[i].x * 0.5 + 0.5, 0.5 - p[i].y * 0.5);
25
- return out;
26
- }
27
-
28
- @fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {
29
- var uv = in.uv;
30
- if (params.mode == 2u) {
31
- uv = mix(params.cropMin, params.cropMax, uv);
32
- }
33
- let m = textureSampleLevel(mask, samp, uv, 0.0).r;
34
- if (params.mode == 1u) {
35
- return vec4(m, m, m, 1.0);
36
- }
37
- return textureSampleLevel(picture, samp, uv, 0.0) * m;
38
- }
39
- `,K=class{constructor(e,n){this.device=e;let r=e.createShaderModule({label:"vision_matte_composite",code:Ee});this.pipeline=e.createRenderPipeline({label:"vision_matte_composite",layout:"auto",vertex:{module:r,entryPoint:"vs"},fragment:{module:r,entryPoint:"fs",targets:[{format:n}]},primitive:{topology:"triangle-list"}}),this.sampler=e.createSampler({magFilter:"linear",minFilter:"linear"})}device;pipeline;sampler;uniforms=[];uniformIndex=0;masks=new Map;uploadMask(e,n,r,a){let i=this.masks.get(e);(!i||i.width!==r||i.height!==a)&&(i?.destroy(),i=this.device.createTexture({label:`vision_mask_${e}`,size:[r,a],format:"r8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),this.masks.set(e,i));let s=Math.ceil(r/256)*256,u=n;if(s!==r){u=new Uint8Array(s*a);for(let f=0;f<a;f++)u.set(n.subarray(f*r,(f+1)*r),f*s)}return this.device.queue.writeTexture({texture:i},u.buffer,{offset:u.byteOffset,bytesPerRow:s,rowsPerImage:a},{width:r,height:a}),i}draw(e,n,r,a,i,s){let u=a.width,f=a.height,c=new Float32Array(8),g=new Uint32Array(c.buffer);g[0]=i==="matte"?0:i==="mask"?1:2,i==="crop"&&s?(c[2]=s.x0/u,c[3]=s.y0/f,c[4]=(s.x1+1)/u,c[5]=(s.y1+1)/f):(c[2]=0,c[3]=0,c[4]=1,c[5]=1,i==="crop"&&(g[0]=0)),this.uniformIndex>=this.uniforms.length&&this.uniforms.push(this.device.createBuffer({size:c.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}));let o=this.uniforms[this.uniformIndex];this.uniformIndex=(this.uniformIndex+1)%16,this.device.queue.writeBuffer(o,0,c);let p=this.device.createBindGroup({layout:this.pipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:o}},{binding:1,resource:r.createView()},{binding:2,resource:a.createView()},{binding:3,resource:this.sampler}]}),y=e.beginRenderPass({label:"vision_matte_composite",colorAttachments:[{view:n,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});y.setPipeline(this.pipeline),y.setBindGroup(0,p),y.draw(3),y.end()}};var D=new Map,Ne=4,ce=null,$=null,Se=null,je=new L,Ie=new Map,Ye=new Map,Xe=new Map,Le=new Map,_e=new Map,ue=new WeakMap,_=new Map,E=new Map,Ke=3;function de(t,e,n,r,a,i){let s=t.get(n);return(!s||s.width!==r.width||s.height!==r.height||s.format!==r.format)&&(s?.destroy(),s=e.createTexture({size:[r.width,r.height],format:r.format,usage:a,label:i}),t.set(n,s)),s}var $e=(t,e,n)=>de(Ye,t,e,n,GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING,"vision_held_frame"),ze=(t,e,n)=>de(Xe,t,e,n,GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,"vision_analysis_frame"),We=(t,e,n)=>de(Le,t,e,n,GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,"vision_matte");function qe(t,e,n,r,a){let i=e;return JSON.stringify([t,i?.operation?.id??i?.id??null,r,a,n.mode??"passthrough",n.variant,n.confidence,n.classes,n.maskThreshold,n.featherRadius,n.matteSource,n.keyBackground===!0,n.maxMissedFrames])}function He(t,e,n){let r=t.backgroundKeyThreshold;return typeof r=="number"?r:typeof r?.get=="function"?Number(r.get({frame:e,fps:n})):typeof r?._value=="number"?Number(r._value):70}function Je(t,e,n){if(t)return E.set(e,{mask:t,frame:n}),t;let r=E.get(e);if(r&&n-r.frame<=Ke)return r.mask}function Oe(t){let e={variant:t.variant,modelsDir:t.modelsDir,baseUrl:t.baseUrl},n=JSON.stringify(e),r=D.get(n);if(!r){if(D.size>=Ne){let[u,f]=D.entries().next().value;f.runner.close(),D.delete(u)}r={runner:Te.create(e),derived:new Map},D.set(n,r)}let a={confidence:t.confidence,classes:t.classes,maskThreshold:t.maskThreshold,featherRadius:t.featherRadius},i=JSON.stringify(a),s=r.derived.get(i);return s||(s=r.runner.derive(a),r.derived.set(i,s)),s}function Qe(t,e){let n=_e.get(t);return n||(n=new ye({maxMissedFrames:e.maxMissedFrames??15}),_e.set(t,n)),n}function Ze(t,e,n){return e<=0||n<=0?t:{people:t.people.map(r=>({...r,keypoints:r.keypoints.map(a=>({x:a.x/e,y:a.y/n,visibility:a.visibility}))}))}}function et(t,e){if(!e)return!0;let n=t.toLowerCase();return e.some(r=>r.toLowerCase()===n)}function tt(t,e){return t.map(n=>{let{cx:r,cy:a}=it(n),i=null;for(let s of e){let u=s.centerX-r,f=s.centerY-a,c=u*u+f*f;(!i||c<i.distance)&&(i={trackId:s.trackId,distance:c})}return i?{...n,trackId:i.trackId}:n})}function nt(t,e,n){let r=e*n,a=new Uint8Array(r),i=new Int32Array(r),s=0,u=c=>{a[c]||t[c]>0||(a[c]=1,i[s++]=c)};for(let c=0;c<e;c++)u(c),u((n-1)*e+c);for(let c=0;c<n;c++)u(c*e),u(c*e+e-1);let f=0;for(;f<s;){let c=i[f++],g=c%e,o=c+1;g+1<e&&!a[o]&&t[o]===0&&(a[o]=1,i[s++]=o),o=c-1,g>0&&!a[o]&&t[o]===0&&(a[o]=1,i[s++]=o),o=c+e,o<r&&!a[o]&&t[o]===0&&(a[o]=1,i[s++]=o),o=c-e,o>=0&&!a[o]&&t[o]===0&&(a[o]=1,i[s++]=o)}for(let c=0;c<r;c++)t[c]===0&&a[c]===0&&(t[c]=255)}function rt(t,e,n,r=2){if(r<=0)return t;let a=new Uint8Array(e*n),i=new Uint8Array(e*n),s=2*r+1;for(let f=0;f<n;f++){let c=f*e,g=0;for(let o=-r;o<=r;o++){let p=Math.max(0,Math.min(e-1,o));g+=t[c+p]}for(let o=0;o<e;o++){a[c+o]=Math.round(g/s);let p=Math.max(0,o-r),y=Math.min(e-1,o+r+1);g+=t[c+y]-t[c+p]}}let u=new Float64Array(e);for(let f=-r;f<=r;f++){let c=Math.max(0,Math.min(n-1,f))*e;for(let g=0;g<e;g++)u[g]+=a[c+g]}for(let f=0;f<n;f++){let c=f*e,g=Math.max(0,f-r)*e,o=Math.min(n-1,f+r+1)*e;for(let p=0;p<e;p++)i[c+p]=Math.round(u[p]/s),u[p]+=a[o+p]-a[g+p]}return i}function st(t,e,n,r,a,i){let s=0,u=0,f=0,c=0,g=(d,U)=>{let l=U*e+d;if(t[l])return;let B=l*4;s+=r[B],u+=r[B+1],f+=r[B+2],c++};for(let d=0;d<e;d+=4)g(d,0),g(d,n-1);for(let d=0;d<n;d+=4)g(0,d),g(e-1,d);if(c===0)return t;s/=c,u/=c,f/=c;let o=e*n,p=new Uint8Array(o);for(let d=0,U=0;d<o;d++,U+=4)p[d]=Math.max(Math.abs(r[U]-s),Math.abs(r[U+1]-u),Math.abs(r[U+2]-f))>a?1:0;let y=new Int32Array(o),R=0;for(let d=0;d<o;d++)t[d]>0&&(p[d]&&(t[d]=255),y[R++]=d);let v=0;for(;v<R;){let d=y[v++],U=d%e,l=d+1;U+1<e&&t[l]!==255&&p[l]&&(t[l]=255,y[R++]=l),l=d-1,U>0&&t[l]!==255&&p[l]&&(t[l]=255,y[R++]=l),l=d+e,l<o&&t[l]!==255&&p[l]&&(t[l]=255,y[R++]=l),l=d-e,l>=0&&t[l]!==255&&p[l]&&(t[l]=255,y[R++]=l)}nt(t,e,n);let O=i!==void 0&&i>0?Math.max(1,Math.min(8,Math.round(i*50))):2;return rt(t,e,n,O)}function it(t){let{mask:e,width:n,height:r}=t,a=0,i=0,s=0;for(let u=0;u<r;u++){let f=u*n;for(let c=0;c<n;c++)e[f+c]>0&&(a+=c,i+=u,s++)}return s===0?{cx:0,cy:0}:{cx:a/s,cy:i/s}}var Ce=async t=>{let{ctx:e,encoder:n,pass:r,targetView:a,targetWidth:i,targetHeight:s,props:u,drawChild:f}=t,{virtualMedia:c}=u;ve(e.device);let g=c?.operation;if(g?.op!=="Vision")return;let o=g;r.end();let p=c?.children?.[0];if(!p)return;let y=o.effect,R=y!=null,v=c?.id??g?.id??`${i}x${s}_${o.mode}_${o.variant}_${o.keyBackground}_${o.backgroundKeyThreshold}`,O=`vision-${v}`,d=R?ue.get(y):_.get(O);d&&(d.width!==i||d.height!==s)&&(d.destroy(),d=void 0,R?ue.delete(y):_.delete(O));let U=d!==void 0;if(!d&&(d=e.device.createTexture({size:[i,s],format:e.renderer.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,label:"vision_child_persistent"}),R?ue.set(y,d):_.set(O,d),_.size>4)){let m=_.keys().next().value;m&&m!==O&&(_.get(m)?.destroy(),_.delete(m))}let l=u.frame??0,B=u.compositionFrame??l,C=u.fps??24,w=o.mode??"passthrough",G=w==="mask"||w==="matte"||w==="crop",T=o.visionBundle??c.visionBundle,z=o.enableDetection!==!1||w==="boxes"||w==="tracking",N=o.enableSegmentation===!0||G&&o.matteSource!=="selfie",W=o.enableMatte===!0||G&&o.matteSource==="selfie",q=o.enablePose===!0||w==="skeleton",le=G&&!T&&!q&&!W&&o.keyBackground!==!0?ot(y,u.sourceTimeSec===void 0?l:u.sourceTimeSec*C,C,i,s):void 0,H=w==="skeleton"&&!T?at(y,u.sourceTimeSec===void 0?l:u.sourceTimeSec*C,C,i,s):void 0,Y=le!==void 0||H!==void 0,J=!Y&&!W&&!q&&(z||N),fe=J?qe(v,p,o,i,s):"",Q=m=>o.keyBackground===!0?He(o,B-(l-m),C):void 0,me=m=>{if(!J||m===void 0)return;let h=je.get(fe,m);if(!(!h||h.keyThreshold!==Q(m))&&!(N&&T&&!h.masks))return h},F=U?Ie.get(v):void 0,P=me(l),ge=Y||P!==void 0;P||(P=me(F));let Z;G&&U&&!ge&&(Z=$e(e.device,v,d),n.copyTextureToTexture({texture:d},{texture:Z},[i,s,1]));let X,ee=null;if(U&&!P&&!Y){let m=ze(e.device,v,d),h=e.device.createCommandEncoder({label:"vision_analysis_copy"});h.copyTextureToTexture({texture:d},{texture:m},[i,s,1]),e.device.queue.submit([h.finish()]),X={texture:m,device:e.device,width:i,height:s},G&&o.keyBackground===!0&&(ee=(await xe(X)).data)}let pe=d.createView();e.renderer.beginFrame(n,pe,{r:0,g:0,b:0,a:0},i,s,"clear").end(),await f(p,{...u},pe,d,i,s),Ie.set(v,l);let S=[],A=[],te,ne,x;if(Y)x=le??void 0,x?E.set(v,{mask:x,frame:l}):E.delete(v);else if(P)S=P.objects,z&&T?.setObjectResult(l,{objects:P.objects,rawDetections:P.detections}),N&&T&&P.masks&&(A=P.masks.map(ae),T.setMaskResult(l,A)),P.subject&&(x=ae(P.subject.mask),E.set(v,{mask:x,frame:l}));else if(X){let m=Oe(o),h=X,M=[];if(z){M=await m.detect(h);let k=Qe(v,o);l===0&&k.reset(),S=k.update(M,l,C),T?.setObjectResult(l,{objects:S,rawDetections:M})}let I=[];if(N){let k=G&&o.matteSource!=="selfie"&&o.classes!==void 0,V=await(k?Oe({...o,classes:void 0}):m).segment(h);A=tt(k?V.masks.filter(Be=>et(Be.category,o.classes)):V.masks,S),I=k?V.masks:A,T?.setMaskResult(l,A)}if(W&&(te=await m.matte(h),T?.setMatteResult(l,te)),q){let k=await m.pose(h),b=Ze(k,h.width,h.height);ne={people:Pe(b.people,S)},T?.setPoseResult(l,ne)}if(G){x=Je(o.matteSource==="selfie"?ct(te):we(I.length>0?I:T?.getMaskResult(l)??[],{classes:o.classes}),v,l);let k=Q(F??l);x&&k!==void 0&&ee&&(x={...x,mask:st(x.mask,x.width,x.height,ee,k,o.featherRadius)})}J&&F!==void 0&&je.set(fe,F,{detections:M,objects:S,masks:T?A.map(oe):null,subject:x?{mask:oe(x)}:null,keyThreshold:Q(F)})}if(G){let m=ge?d:Z;if(!x||!m){e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear").end();return}(!$||Se!==e.renderer.format)&&($=new K(e.device,e.renderer.format),Se=e.renderer.format);let h=$.uploadMask(v,x.mask,x.width,x.height),M=We(e.device,v,d);$.draw(n,M.createView(),m,h,w,w==="crop"?Ue(x)??void 0:void 0),T?.setStencilTexture(M);let I=e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear");e.renderer.drawTexture(I,M,{x:0,y:0,width:i,height:s}),I.end();return}if(w==="skeleton"){ce||(ce=new ke(e.device));let m=H!==void 0?H:(T?.getPoseResult(l)??ne)?.people[0]?.keypoints,h=e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear");if(m&&m.length>0){let M=ce.renderToTexture(m,{width:i,height:s});e.renderer.drawTexture(h,M,{x:0,y:0,width:i,height:s})}h.end();return}if(w==="boxes"||w==="tracking"){let m=e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear");e.renderer.drawTexture(m,d,{x:0,y:0,width:i,height:s});let h=S.length>0?S:T?.getObjectResult(l).objects??[];if(h.length>0){let M="#38bdf8";for(let k of h){if(!k.active)continue;let b=k.boundingBox;e.renderer.drawRect(m,{x:b.originX,y:b.originY,width:b.width,height:2},M),e.renderer.drawRect(m,{x:b.originX,y:b.originY+b.height-2,width:b.width,height:2},M),e.renderer.drawRect(m,{x:b.originX,y:b.originY,width:2,height:b.height},M),e.renderer.drawRect(m,{x:b.originX+b.width-2,y:b.originY,width:2,height:b.height},M);let V=Math.min(16,b.width/4,b.height/4);e.renderer.drawRect(m,{x:b.originX,y:b.originY,width:V,height:4},"#ffffff"),e.renderer.drawRect(m,{x:b.originX,y:b.originY,width:4,height:V},"#ffffff"),w==="tracking"&&e.renderer.drawRect(m,{x:k.centerX-3,y:k.centerY-3,width:6,height:6},"#ef4444",3)}}m.end();return}let be=e.renderer.beginFrame(n,a,{r:0,g:0,b:0,a:0},i,s,"clear");e.renderer.drawTexture(be,d,{x:0,y:0,width:i,height:s}),be.end()};function ot(t,e,n,r,a){let i=Ae(t),s=i?.subject(e,n);return!s||!i||Ve(i,s.width/s.height,r/a)?s:void 0}function at(t,e,n,r,a){let i=Ae(t),s=i?.pose?.(e,n);return!s||!i?s===null?null:void 0:Ve(i,s.width/s.height,r/a)?s.keypoints:void 0}function Ae(t){return t?.[Me]}function Ve(t,e,n){if(Math.abs(e/n-1)<.01)return!0;if(t.exact)throw new Error("A prompted clip matte requires the source aspect ratio. Apply layout cropping after the source matte.");return!1}function ct(t){if(!t||t.coverage<=0)return;let e=Math.round(t.coverage*t.width*t.height);return{category:"person",mask:t.mask,width:t.width,height:t.height,area:e,coverage:t.coverage,detectionIndex:-1}}var vt=he({WebGPURenderer:Ce});export{vt as a};
@@ -1 +0,0 @@
1
- import{g as r}from"./chunk-KOVN277Z.mjs";import{g as e}from"./chunk-Y4NIR77Z.mjs";e();var o=r({});export{o as a};
@@ -1 +0,0 @@
1
- import{a}from"./chunk-CC4NNNIY.mjs";import"./chunk-3DXMWDQ3.mjs";import"./chunk-GH77FX2Y.mjs";import"./chunk-IB6GZJOL.mjs";import"./chunk-6FULVULN.mjs";import"./chunk-VVY4PG5E.mjs";import"./chunk-KOVN277Z.mjs";import"./chunk-ULOFDFHJ.mjs";import"./chunk-Y4NIR77Z.mjs";export{a as default};
@@ -1 +0,0 @@
1
- import{a}from"./chunk-5AWAOMBR.mjs";import"./chunk-IB6GZJOL.mjs";import"./chunk-VVY4PG5E.mjs";import"./chunk-KOVN277Z.mjs";import"./chunk-ULOFDFHJ.mjs";import"./chunk-Y4NIR77Z.mjs";export{a as default};
@@ -1 +0,0 @@
1
- import{a,b}from"./chunk-VVE2QHVG.mjs";import"./chunk-IB6GZJOL.mjs";import"./chunk-VVY4PG5E.mjs";import"./chunk-KOVN277Z.mjs";import"./chunk-ULOFDFHJ.mjs";import"./chunk-Y4NIR77Z.mjs";export{a as ColorBalanceWebGPURenderer,b as default};