framefields 2.8.1 → 2.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/README.md +30 -1
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-vatRe308.mjs → audio-BfQg37MW.mjs} +3 -3
  4. package/dist/{audio-vatRe308.mjs.map → audio-BfQg37MW.mjs.map} +1 -1
  5. package/dist/cli/check-worker.mjs +44 -44
  6. package/dist/components/index.d.mts +2 -2
  7. package/dist/components/index.mjs +43 -43
  8. package/dist/{dist-CFe1fC9l.mjs → dist-C1cCW7Bt.mjs} +8 -1
  9. package/dist/{dist-CFe1fC9l.mjs.map → dist-C1cCW7Bt.mjs.map} +1 -1
  10. package/dist/{dist-BbwtlSZO.mjs → dist-C8Xq3zgx.mjs} +2 -2
  11. package/dist/{dist-BbwtlSZO.mjs.map → dist-C8Xq3zgx.mjs.map} +1 -1
  12. package/dist/effects/index.d.mts +1 -1
  13. package/dist/effects/index.mjs +35 -35
  14. package/dist/{effects-CCyfjbhZ.mjs → effects-CemgqEPv.mjs} +2 -2
  15. package/dist/{effects-CCyfjbhZ.mjs.map → effects-CemgqEPv.mjs.map} +1 -1
  16. package/dist/fonts/index.mjs +2 -2
  17. package/dist/{fonts-C1mgtkCa.mjs → fonts-BW0pPcvJ.mjs} +2 -2
  18. package/dist/{fonts-C1mgtkCa.mjs.map → fonts-BW0pPcvJ.mjs.map} +1 -1
  19. package/dist/{gpu-CU2tEKJJ.mjs → gpu-CMaa63nz.mjs} +2 -2
  20. package/dist/{gpu-CU2tEKJJ.mjs.map → gpu-CMaa63nz.mjs.map} +1 -1
  21. package/dist/{index-BwRrsP_V.d.mts → index-Bnh42ouE.d.mts} +71 -10
  22. package/dist/index-Bnh42ouE.d.mts.map +1 -0
  23. package/dist/index-CFoAmh7q.d.mts.map +1 -1
  24. package/dist/{index-UDDAfHAF.d.mts → index-CQ-bbZk3.d.mts} +64 -13
  25. package/dist/index-CQ-bbZk3.d.mts.map +1 -0
  26. package/dist/index-D5UDyVMb.d.mts.map +1 -1
  27. package/dist/index.d.mts +3 -3
  28. package/dist/index.mjs +50 -50
  29. package/dist/preview/index.mjs +10 -10
  30. package/dist/{preview-WXbsf6Dv.mjs → preview-DvP8AZuV.mjs} +2 -2
  31. package/dist/{preview-WXbsf6Dv.mjs.map → preview-DvP8AZuV.mjs.map} +1 -1
  32. package/dist/preview-engine/audio.mjs +1 -1
  33. package/dist/preview-engine/{chunk-JGDZQCNU.mjs → chunk-2B722GXM.mjs} +1 -1
  34. package/dist/preview-engine/{chunk-GFW3D464.mjs → chunk-2DWY7UBV.mjs} +1 -1
  35. package/dist/preview-engine/{chunk-72DYOIMP.mjs → chunk-2PYTDN2C.mjs} +1 -1
  36. package/dist/preview-engine/{chunk-PF3SXQNV.mjs → chunk-34DL53D5.mjs} +1 -1
  37. package/dist/preview-engine/{chunk-GLXJOXBE.mjs → chunk-34RJ7GAS.mjs} +1 -1
  38. package/dist/preview-engine/{chunk-6OY4YLTC.mjs → chunk-35HMRW4I.mjs} +1 -1
  39. package/dist/preview-engine/{chunk-W26U6BP2.mjs → chunk-4WYM72ZN.mjs} +1 -1
  40. package/dist/preview-engine/{chunk-EQ4VBUWM.mjs → chunk-5AWAOMBR.mjs} +1 -1
  41. package/dist/preview-engine/{chunk-J4SHMCTG.mjs → chunk-6R3UJBL5.mjs} +1 -1
  42. package/dist/preview-engine/{chunk-VHGC72XP.mjs → chunk-73CNXGAK.mjs} +1 -1
  43. package/dist/preview-engine/{chunk-KYOPOCO5.mjs → chunk-AHQCDTD6.mjs} +1 -1
  44. package/dist/preview-engine/{chunk-ADV2TIKA.mjs → chunk-BEYA25UZ.mjs} +1 -1
  45. package/dist/preview-engine/{chunk-RBDIRBEI.mjs → chunk-BJV2LBII.mjs} +1 -1
  46. package/dist/preview-engine/{chunk-LBJBBEKP.mjs → chunk-BVDWS3D2.mjs} +1 -1
  47. package/dist/preview-engine/chunk-BXPM5SJ3.mjs +1 -0
  48. package/dist/preview-engine/{chunk-NIPWL6Z5.mjs → chunk-C4M3B2Q2.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-LLUFOFF4.mjs → chunk-CC4NNNIY.mjs} +1 -1
  50. package/dist/preview-engine/{chunk-NX66555S.mjs → chunk-CN2VLYLB.mjs} +1 -1
  51. package/dist/preview-engine/chunk-D73ZKPFN.mjs +138 -0
  52. package/dist/preview-engine/{chunk-SK7PUBTC.mjs → chunk-DMSZXG56.mjs} +1 -1
  53. package/dist/preview-engine/{chunk-WC257OBY.mjs → chunk-DVZITDQS.mjs} +1 -1
  54. package/dist/preview-engine/{chunk-LLB3AGBQ.mjs → chunk-EJJITH6U.mjs} +1 -1
  55. package/dist/preview-engine/{chunk-COZG35ZR.mjs → chunk-FTCEG3SF.mjs} +1 -1
  56. package/dist/preview-engine/{chunk-57LES7TL.mjs → chunk-GA4HNR44.mjs} +1 -1
  57. package/dist/preview-engine/{chunk-S4WNCEMO.mjs → chunk-GIICZZQI.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-RTHU7REC.mjs → chunk-GRJJVSOV.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-RGDM6PQ5.mjs → chunk-GZWA5QJS.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-LZNNM5OB.mjs → chunk-H7BSN7V7.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-JXUENEQO.mjs → chunk-HOV6DDBZ.mjs} +1 -1
  62. package/dist/preview-engine/{chunk-C6XLAJLL.mjs → chunk-JSYG6OWZ.mjs} +1 -1
  63. package/dist/preview-engine/{chunk-GZVPVOHB.mjs → chunk-K3C6GUQD.mjs} +1 -1
  64. package/dist/preview-engine/chunk-KOVN277Z.mjs +1 -0
  65. package/dist/preview-engine/chunk-KXLXP66K.mjs +1974 -0
  66. package/dist/preview-engine/{chunk-Y6TWMUJC.mjs → chunk-LVYVXVZO.mjs} +1 -1
  67. package/dist/preview-engine/{chunk-NKAVHU7H.mjs → chunk-MIEH74UH.mjs} +7 -7
  68. package/dist/preview-engine/{chunk-AVDHZNIZ.mjs → chunk-OH5W5EL6.mjs} +1 -1
  69. package/dist/preview-engine/{chunk-22F33PPP.mjs → chunk-P5FKRQFU.mjs} +1 -1
  70. package/dist/preview-engine/{chunk-7X2AUKTU.mjs → chunk-PM2W4VLT.mjs} +1 -1
  71. package/dist/preview-engine/{chunk-PYX6Q2EJ.mjs → chunk-QCSVT73T.mjs} +1 -1
  72. package/dist/preview-engine/{chunk-523CTDOC.mjs → chunk-RJIAES3X.mjs} +1 -1
  73. package/dist/preview-engine/{chunk-DPQN7WYQ.mjs → chunk-S2ABWY5G.mjs} +1 -1
  74. package/dist/preview-engine/{chunk-G7JJ6HVL.mjs → chunk-SF37HXAH.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-OKLYIQ5F.mjs → chunk-SPJPM43P.mjs} +1 -1
  76. package/dist/preview-engine/{chunk-UOTMBWBJ.mjs → chunk-TNJEZKXM.mjs} +1 -1
  77. package/dist/preview-engine/chunk-ULOFDFHJ.mjs +1 -0
  78. package/dist/preview-engine/{chunk-DISKQ5MH.mjs → chunk-UXYM2G6J.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-U5YNECNG.mjs → chunk-VN36PRVD.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-PMOKPVSD.mjs → chunk-VVE2QHVG.mjs} +1 -1
  81. package/dist/preview-engine/chunk-XYGDTPO7.mjs +39 -0
  82. package/dist/preview-engine/{chunk-PEUQRSIM.mjs → chunk-Y5K5LVOR.mjs} +1 -1
  83. package/dist/preview-engine/chunk-YGKO4NIU.mjs +1 -0
  84. package/dist/preview-engine/{chunk-PSEMCJBH.mjs → chunk-ZJ5SWTCW.mjs} +1 -1
  85. package/dist/preview-engine/chunk-ZY47XIRK.mjs +5 -0
  86. package/dist/preview-engine/components.mjs +1 -1
  87. package/dist/preview-engine/effects.mjs +1 -1
  88. package/dist/preview-engine/framefields.mjs +1 -1
  89. package/dist/preview-engine/player.mjs +1 -1
  90. package/dist/preview-engine/renderers-3BOQOUEU.mjs +1 -0
  91. package/dist/preview-engine/renderers-3M2FESR2.mjs +1 -0
  92. package/dist/preview-engine/{renderers-FEEIDQF3.mjs → renderers-4F7WLQD5.mjs} +1 -1
  93. package/dist/preview-engine/{renderers-OP6MKYRM.mjs → renderers-5KANN7XF.mjs} +1 -1
  94. package/dist/preview-engine/{renderers-TVRR7PGN.mjs → renderers-5TO2SXFR.mjs} +1 -1
  95. package/dist/preview-engine/{renderers-DR7UZ3QR.mjs → renderers-5UZ3YFBD.mjs} +1 -1
  96. package/dist/preview-engine/renderers-6LHIWKMZ.mjs +1 -0
  97. package/dist/preview-engine/{renderers-7F2KF5RE.mjs → renderers-6Z7DWAPH.mjs} +1 -1
  98. package/dist/preview-engine/renderers-77PDUMYI.mjs +1 -0
  99. package/dist/preview-engine/{renderers-3J3NCOAI.mjs → renderers-7C5RA3R5.mjs} +1 -1
  100. package/dist/preview-engine/{renderers-KPCQGBIY.mjs → renderers-7XHO6M3B.mjs} +1 -1
  101. package/dist/preview-engine/{renderers-KJAOPYAU.mjs → renderers-A24KZK2Q.mjs} +1 -1
  102. package/dist/preview-engine/renderers-A43VCJ7X.mjs +1 -0
  103. package/dist/preview-engine/renderers-AKY464RY.mjs +1 -0
  104. package/dist/preview-engine/renderers-C5UO6PL5.mjs +1 -0
  105. package/dist/preview-engine/renderers-C64QSZO4.mjs +1 -0
  106. package/dist/preview-engine/renderers-CIRCR6NG.mjs +1 -0
  107. package/dist/preview-engine/renderers-CIWOPETY.mjs +1 -0
  108. package/dist/preview-engine/renderers-CUMVIVHI.mjs +1 -0
  109. package/dist/preview-engine/renderers-CZEZCELP.mjs +1 -0
  110. package/dist/preview-engine/{renderers-R3YVLWKV.mjs → renderers-ENMY4DKF.mjs} +1 -1
  111. package/dist/preview-engine/{renderers-AAENCA7X.mjs → renderers-FSI5KNGZ.mjs} +1 -1
  112. package/dist/preview-engine/renderers-FSQMWHQM.mjs +1 -0
  113. package/dist/preview-engine/renderers-FZEW5C23.mjs +1 -0
  114. package/dist/preview-engine/renderers-HCET2IML.mjs +1 -0
  115. package/dist/preview-engine/{renderers-LBX7GPDU.mjs → renderers-IHGAWLUF.mjs} +1 -1
  116. package/dist/preview-engine/renderers-IUOOC6K7.mjs +1 -0
  117. package/dist/preview-engine/{renderers-VXMR47WZ.mjs → renderers-KC6ZSKCW.mjs} +1 -1
  118. package/dist/preview-engine/renderers-KYYJLVIJ.mjs +1 -0
  119. package/dist/preview-engine/renderers-L4GE7WV3.mjs +1 -0
  120. package/dist/preview-engine/renderers-L6YDX6GS.mjs +1 -0
  121. package/dist/preview-engine/renderers-LRAFWKCO.mjs +1 -0
  122. package/dist/preview-engine/renderers-LU3XZWEB.mjs +1 -0
  123. package/dist/preview-engine/{renderers-4YYGKLDK.mjs → renderers-MD3PRFZL.mjs} +1 -1
  124. package/dist/preview-engine/renderers-MDHPQY6D.mjs +1 -0
  125. package/dist/preview-engine/renderers-MOEC2XZZ.mjs +1 -0
  126. package/dist/preview-engine/{renderers-RGDTRVZM.mjs → renderers-NCGH2WWJ.mjs} +1 -1
  127. package/dist/preview-engine/renderers-ND2WV4K3.mjs +1 -0
  128. package/dist/preview-engine/renderers-NJ5CWVVH.mjs +1 -0
  129. package/dist/preview-engine/renderers-NKXYPR3V.mjs +1 -0
  130. package/dist/preview-engine/{renderers-WVQQZQ6Y.mjs → renderers-NUAI4TO5.mjs} +1 -1
  131. package/dist/preview-engine/renderers-NWR66CGK.mjs +1 -0
  132. package/dist/preview-engine/renderers-O22WTBRM.mjs +1 -0
  133. package/dist/preview-engine/renderers-PBBA7LQB.mjs +1 -0
  134. package/dist/preview-engine/{renderers-BL7Z3FTF.mjs → renderers-PIIEUKFE.mjs} +1 -1
  135. package/dist/preview-engine/renderers-PPZK6VEW.mjs +1 -0
  136. package/dist/preview-engine/renderers-Q6LJRZ7R.mjs +1 -0
  137. package/dist/preview-engine/{renderers-7TNEKJZS.mjs → renderers-QA2HKUJJ.mjs} +1 -1
  138. package/dist/preview-engine/renderers-RMEACSRL.mjs +1 -0
  139. package/dist/preview-engine/{renderers-AWRIELVX.mjs → renderers-RN2MHIFK.mjs} +1 -1
  140. package/dist/preview-engine/renderers-SEIAUKJF.mjs +1 -0
  141. package/dist/preview-engine/renderers-SP42LCSI.mjs +1 -0
  142. package/dist/preview-engine/{renderers-OE55O27K.mjs → renderers-T74CQCEN.mjs} +1 -1
  143. package/dist/preview-engine/renderers-T7SZA3BX.mjs +1 -0
  144. package/dist/preview-engine/{renderers-ZUQ2ZBYY.mjs → renderers-TGJSOKDY.mjs} +1 -1
  145. package/dist/preview-engine/renderers-TSBV4KPE.mjs +1 -0
  146. package/dist/preview-engine/{renderers-2SE5BLLB.mjs → renderers-U4M7ZCV4.mjs} +1 -1
  147. package/dist/preview-engine/{renderers-YEI4K4W4.mjs → renderers-V3AQO7AR.mjs} +1 -1
  148. package/dist/preview-engine/renderers-VADTDAHD.mjs +1 -0
  149. package/dist/preview-engine/renderers-VNNWI5C3.mjs +1 -0
  150. package/dist/preview-engine/{renderers-YYMRKHAA.mjs → renderers-WEYAHOBK.mjs} +1 -1
  151. package/dist/preview-engine/renderers-WZ75MLP3.mjs +1 -0
  152. package/dist/preview-engine/renderers-XB5R4UQA.mjs +1 -0
  153. package/dist/preview-engine/{renderers-YIVPMPQS.mjs → renderers-Y22VSOXF.mjs} +1 -1
  154. package/dist/preview-engine/{renderers-Y53D5CQ7.mjs → renderers-YBIUZDGQ.mjs} +1 -1
  155. package/dist/preview-engine/renderers-YESJR4O7.mjs +1 -0
  156. package/dist/preview-engine/renderers-YKSRZRRT.mjs +1 -0
  157. package/dist/preview-engine/{renderers-V4VML5IG.mjs → renderers-ZACSHGNZ.mjs} +1 -1
  158. package/dist/preview-engine/signals.mjs +1 -1
  159. package/dist/preview-engine/src-4IUYUKIZ.mjs +8 -0
  160. package/dist/{program-Cq4gP9Dd.mjs → program-CKpKkllV.mjs} +2 -2
  161. package/dist/{program-Cq4gP9Dd.mjs.map → program-CKpKkllV.mjs.map} +1 -1
  162. package/dist/renderer/index.mjs +2 -2
  163. package/dist/renderer--Ac-dg4A.mjs +5 -0
  164. package/dist/renderer--N7TMqzU.mjs +5 -0
  165. package/dist/{renderer-CXWAdRqn.mjs → renderer--fkmiVjl.mjs} +2 -2
  166. package/dist/{renderer-CXWAdRqn.mjs.map → renderer--fkmiVjl.mjs.map} +1 -1
  167. package/dist/{renderer-CZyJ72JZ.mjs → renderer-1r-Uq-Ae.mjs} +2 -2
  168. package/dist/{renderer-CZyJ72JZ.mjs.map → renderer-1r-Uq-Ae.mjs.map} +1 -1
  169. package/dist/renderer-2ecmdOae.mjs +5 -0
  170. package/dist/{renderer-D8CMakyz.mjs → renderer-8QIwXh7O.mjs} +3 -3
  171. package/dist/{renderer-D8CMakyz.mjs.map → renderer-8QIwXh7O.mjs.map} +1 -1
  172. package/dist/{renderer-B4iCFvJh.mjs → renderer-B-ur0Ej8.mjs} +3 -3
  173. package/dist/{renderer-B4iCFvJh.mjs.map → renderer-B-ur0Ej8.mjs.map} +1 -1
  174. package/dist/{renderer-BD25uND8.mjs → renderer-B2P1vgb7.mjs} +418 -187
  175. package/dist/renderer-B2P1vgb7.mjs.map +1 -0
  176. package/dist/{renderer-BZKkT-6Q.mjs → renderer-B2jjxsjO.mjs} +2 -2
  177. package/dist/{renderer-BZKkT-6Q.mjs.map → renderer-B2jjxsjO.mjs.map} +1 -1
  178. package/dist/{renderer-DEcbSNQd.mjs → renderer-B39I6CQw.mjs} +3 -3
  179. package/dist/{renderer-DEcbSNQd.mjs.map → renderer-B39I6CQw.mjs.map} +1 -1
  180. package/dist/{renderer-DIPyUVX2.mjs → renderer-B522Dkdk.mjs} +3 -3
  181. package/dist/{renderer-DIPyUVX2.mjs.map → renderer-B522Dkdk.mjs.map} +1 -1
  182. package/dist/renderer-B5RJp5g-.mjs +5 -0
  183. package/dist/renderer-B7xyT1Vb.mjs +5 -0
  184. package/dist/{renderer-CeX7uUXB.mjs → renderer-BAYTI6jj.mjs} +2 -2
  185. package/dist/{renderer-CeX7uUXB.mjs.map → renderer-BAYTI6jj.mjs.map} +1 -1
  186. package/dist/{renderer-DoRazdp_.mjs → renderer-BAusZ6Vu.mjs} +2 -2
  187. package/dist/{renderer-DoRazdp_.mjs.map → renderer-BAusZ6Vu.mjs.map} +1 -1
  188. package/dist/renderer-BBeArN_x.mjs +5 -0
  189. package/dist/renderer-BCAZDu-r.mjs +5 -0
  190. package/dist/{renderer-D41gHat4.mjs → renderer-BF0hx_iJ.mjs} +3 -3
  191. package/dist/{renderer-D41gHat4.mjs.map → renderer-BF0hx_iJ.mjs.map} +1 -1
  192. package/dist/renderer-BJnhik7Y.mjs +5 -0
  193. package/dist/{renderer-BeQrWrOa.mjs → renderer-BPWDsufX.mjs} +2 -2
  194. package/dist/{renderer-BeQrWrOa.mjs.map → renderer-BPWDsufX.mjs.map} +1 -1
  195. package/dist/{renderer-CxEBV-w0.mjs → renderer-BXJXziIt.mjs} +2 -2
  196. package/dist/{renderer-CxEBV-w0.mjs.map → renderer-BXJXziIt.mjs.map} +1 -1
  197. package/dist/{renderer-Ce8VPaog.mjs → renderer-BdyopiLC.mjs} +2 -2
  198. package/dist/{renderer-Ce8VPaog.mjs.map → renderer-BdyopiLC.mjs.map} +1 -1
  199. package/dist/{renderer-Bkqg-U2F.mjs → renderer-Bfk6A7UO.mjs} +3 -3
  200. package/dist/{renderer-Bkqg-U2F.mjs.map → renderer-Bfk6A7UO.mjs.map} +1 -1
  201. package/dist/{renderer-CAagaRag.mjs → renderer-BgO6BA_z.mjs} +2 -2
  202. package/dist/{renderer-CAagaRag.mjs.map → renderer-BgO6BA_z.mjs.map} +1 -1
  203. package/dist/{renderer-DlZwbO-A.mjs → renderer-BlPqTEii.mjs} +2 -2
  204. package/dist/{renderer-DlZwbO-A.mjs.map → renderer-BlPqTEii.mjs.map} +1 -1
  205. package/dist/{renderer-BEuU7qlG.mjs → renderer-BlvGcyAN.mjs} +2 -2
  206. package/dist/{renderer-BEuU7qlG.mjs.map → renderer-BlvGcyAN.mjs.map} +1 -1
  207. package/dist/{renderer-BrWOcJ9Q.mjs → renderer-BpIF1QIE.mjs} +3 -3
  208. package/dist/{renderer-BrWOcJ9Q.mjs.map → renderer-BpIF1QIE.mjs.map} +1 -1
  209. package/dist/renderer-BxRW8MZO.mjs +5 -0
  210. package/dist/renderer-C-lfsEAN.mjs +5 -0
  211. package/dist/{renderer-eAVNsuX8.mjs → renderer-C41U1tK6.mjs} +5 -5
  212. package/dist/{renderer-eAVNsuX8.mjs.map → renderer-C41U1tK6.mjs.map} +1 -1
  213. package/dist/renderer-C6nOFN4-.mjs +5 -0
  214. package/dist/{renderer-CjklM-KD.mjs → renderer-C7L8Ceqr.mjs} +2 -2
  215. package/dist/{renderer-CjklM-KD.mjs.map → renderer-C7L8Ceqr.mjs.map} +1 -1
  216. package/dist/{renderer-xLQ_nkmy.mjs → renderer-C7eFJf0_.mjs} +3 -3
  217. package/dist/{renderer-xLQ_nkmy.mjs.map → renderer-C7eFJf0_.mjs.map} +1 -1
  218. package/dist/renderer-C84TSQmS.mjs +5 -0
  219. package/dist/renderer-C8_6YofT.mjs +5 -0
  220. package/dist/{renderer-DsAoxQ8O.mjs → renderer-CCycwCEB.mjs} +2 -2
  221. package/dist/{renderer-DsAoxQ8O.mjs.map → renderer-CCycwCEB.mjs.map} +1 -1
  222. package/dist/{renderer-Cjx3x7xM.mjs → renderer-CHr7MiYW.mjs} +3 -3
  223. package/dist/{renderer-Cjx3x7xM.mjs.map → renderer-CHr7MiYW.mjs.map} +1 -1
  224. package/dist/renderer-COb3tOPG.mjs +5 -0
  225. package/dist/{renderer-DSpTGqUU.mjs → renderer-CQvmbRQ5.mjs} +3 -3
  226. package/dist/{renderer-DSpTGqUU.mjs.map → renderer-CQvmbRQ5.mjs.map} +1 -1
  227. package/dist/renderer-CSCIzaLy.mjs +5 -0
  228. package/dist/{renderer-D7Kk7VxM.mjs → renderer-CYC32bDW.mjs} +3 -3
  229. package/dist/{renderer-D7Kk7VxM.mjs.map → renderer-CYC32bDW.mjs.map} +1 -1
  230. package/dist/{renderer-Ci9x2WUd.mjs → renderer-CcvvoKiZ.mjs} +3 -3
  231. package/dist/{renderer-Ci9x2WUd.mjs.map → renderer-CcvvoKiZ.mjs.map} +1 -1
  232. package/dist/{renderer-DTgO5LPf.mjs → renderer-CiQhD8Gg.mjs} +3 -3
  233. package/dist/{renderer-DTgO5LPf.mjs.map → renderer-CiQhD8Gg.mjs.map} +1 -1
  234. package/dist/renderer-CmI4c8MS.mjs +5 -0
  235. package/dist/{renderer-BlVmbzPs.mjs → renderer-CpUJBOfb.mjs} +2 -2
  236. package/dist/renderer-CqVltdX9.mjs +5 -0
  237. package/dist/{renderer-LY2MiIj0.mjs → renderer-CwFqqpWY.mjs} +3 -3
  238. package/dist/{renderer-LY2MiIj0.mjs.map → renderer-CwFqqpWY.mjs.map} +1 -1
  239. package/dist/renderer-D-FpMzLY.mjs +5 -0
  240. package/dist/renderer-D-Oyn9mG.mjs +5 -0
  241. package/dist/renderer-D2QrkA8_.mjs +5 -0
  242. package/dist/{renderer-D7Cu9OZx.mjs → renderer-D47AEJE_.mjs} +2 -2
  243. package/dist/{renderer-D7Cu9OZx.mjs.map → renderer-D47AEJE_.mjs.map} +1 -1
  244. package/dist/renderer-D5bjOx83.mjs +3 -0
  245. package/dist/{renderer-DPn2DhMU.mjs → renderer-D61B9bXF.mjs} +2 -2
  246. package/dist/{renderer-DPn2DhMU.mjs.map → renderer-D61B9bXF.mjs.map} +1 -1
  247. package/dist/renderer-D64r4iN-.mjs +5 -0
  248. package/dist/{renderer-CUq2qgyc.mjs → renderer-D7Al3_-5.mjs} +3 -3
  249. package/dist/{renderer-CUq2qgyc.mjs.map → renderer-D7Al3_-5.mjs.map} +1 -1
  250. package/dist/{renderer-CyWRvKUI.mjs → renderer-D7r6onRT.mjs} +2 -2
  251. package/dist/{renderer-CyWRvKUI.mjs.map → renderer-D7r6onRT.mjs.map} +1 -1
  252. package/dist/{renderer-DxHICEk3.mjs → renderer-D8bBHrWC.mjs} +3 -3
  253. package/dist/{renderer-DxHICEk3.mjs.map → renderer-D8bBHrWC.mjs.map} +1 -1
  254. package/dist/renderer-DCq6YkgP.mjs +5 -0
  255. package/dist/{renderer-Dk45W8Zd.mjs → renderer-DDEkFbVI.mjs} +3 -3
  256. package/dist/{renderer-Dk45W8Zd.mjs.map → renderer-DDEkFbVI.mjs.map} +1 -1
  257. package/dist/renderer-DDHG3GdR.mjs +5 -0
  258. package/dist/{renderer-BWlMAacF.mjs → renderer-DEmYyaqj.mjs} +2 -2
  259. package/dist/{renderer-BWlMAacF.mjs.map → renderer-DEmYyaqj.mjs.map} +1 -1
  260. package/dist/{renderer-DRGa6tlX.mjs → renderer-DF-yvIrV.mjs} +2 -2
  261. package/dist/{renderer-DRGa6tlX.mjs.map → renderer-DF-yvIrV.mjs.map} +1 -1
  262. package/dist/{renderer-C-5RNIeX.mjs → renderer-DFzI3yI_.mjs} +2 -2
  263. package/dist/{renderer-C-5RNIeX.mjs.map → renderer-DFzI3yI_.mjs.map} +1 -1
  264. package/dist/{renderer-AMBVtZ_G.mjs → renderer-DIw3UtEU.mjs} +3 -3
  265. package/dist/{renderer-AMBVtZ_G.mjs.map → renderer-DIw3UtEU.mjs.map} +1 -1
  266. package/dist/renderer-DMdNfcud.mjs +6 -0
  267. package/dist/{renderer-DnPzvIHK.mjs → renderer-DMvmf3T2.mjs} +2 -2
  268. package/dist/{renderer-Gw1ICOJ3.mjs → renderer-DNQvOrkY.mjs} +3 -3
  269. package/dist/{renderer-Gw1ICOJ3.mjs.map → renderer-DNQvOrkY.mjs.map} +1 -1
  270. package/dist/{renderer-CP2FOWyJ.mjs → renderer-DO-KbpYZ.mjs} +3 -3
  271. package/dist/{renderer-CP2FOWyJ.mjs.map → renderer-DO-KbpYZ.mjs.map} +1 -1
  272. package/dist/{renderer-BeFiQfzV.mjs → renderer-DPAD6fL1.mjs} +70 -70
  273. package/dist/{renderer-BeFiQfzV.mjs.map → renderer-DPAD6fL1.mjs.map} +1 -1
  274. package/dist/{renderer-cg06hb82.mjs → renderer-DTqDy2m9.mjs} +3 -3
  275. package/dist/{renderer-cg06hb82.mjs.map → renderer-DTqDy2m9.mjs.map} +1 -1
  276. package/dist/{renderer-BXAgUuAq.mjs → renderer-DVCJjVn7.mjs} +2 -2
  277. package/dist/{renderer-BXAgUuAq.mjs.map → renderer-DVCJjVn7.mjs.map} +1 -1
  278. package/dist/{renderer-D6X9vWkN.mjs → renderer-DX41niRU.mjs} +2 -2
  279. package/dist/{renderer-D6X9vWkN.mjs.map → renderer-DX41niRU.mjs.map} +1 -1
  280. package/dist/{renderer-D3K9FEQk.mjs → renderer-DXEWbnRF.mjs} +3 -3
  281. package/dist/{renderer-D3K9FEQk.mjs.map → renderer-DXEWbnRF.mjs.map} +1 -1
  282. package/dist/renderer-DZQXZ4lK.mjs +5 -0
  283. package/dist/{renderer-CiMIftlS.mjs → renderer-DbRZe0Re.mjs} +3 -3
  284. package/dist/{renderer-CiMIftlS.mjs.map → renderer-DbRZe0Re.mjs.map} +1 -1
  285. package/dist/renderer-DczJJLA1.mjs +5 -0
  286. package/dist/renderer-DfqJj9oe.mjs +5 -0
  287. package/dist/renderer-DgO9ihVJ.mjs +5 -0
  288. package/dist/renderer-DhgnQZYb.mjs +5 -0
  289. package/dist/{renderer-CrgfMDbh.mjs → renderer-DiY70S8S.mjs} +3 -3
  290. package/dist/{renderer-CrgfMDbh.mjs.map → renderer-DiY70S8S.mjs.map} +1 -1
  291. package/dist/renderer-DjxKjHMf.mjs +5 -0
  292. package/dist/{renderer-Br4UZvfL.mjs → renderer-DkRSZg5g.mjs} +3 -3
  293. package/dist/{renderer-Br4UZvfL.mjs.map → renderer-DkRSZg5g.mjs.map} +1 -1
  294. package/dist/{renderer-CCSzKnvs.mjs → renderer-DmkWrWAk.mjs} +2 -2
  295. package/dist/{renderer-CCSzKnvs.mjs.map → renderer-DmkWrWAk.mjs.map} +1 -1
  296. package/dist/{renderer-D2JOseb1.mjs → renderer-DpruWmZU.mjs} +2 -2
  297. package/dist/{renderer-D2JOseb1.mjs.map → renderer-DpruWmZU.mjs.map} +1 -1
  298. package/dist/renderer-DqLA5cdR.mjs +5 -0
  299. package/dist/{renderer-DxbFjINv.mjs → renderer-DqvoMLca.mjs} +3 -3
  300. package/dist/{renderer-DxbFjINv.mjs.map → renderer-DqvoMLca.mjs.map} +1 -1
  301. package/dist/renderer-Dudp6ZlH.mjs +5 -0
  302. package/dist/{renderer-COQc1jn6.mjs → renderer-EaLUCobW.mjs} +2 -2
  303. package/dist/{renderer-COQc1jn6.mjs.map → renderer-EaLUCobW.mjs.map} +1 -1
  304. package/dist/{renderer-BioUC9zE.mjs → renderer-GBmWjBvy.mjs} +2 -2
  305. package/dist/{renderer-BioUC9zE.mjs.map → renderer-GBmWjBvy.mjs.map} +1 -1
  306. package/dist/{renderer-BNzT34UV.mjs → renderer-Lth37j17.mjs} +2 -2
  307. package/dist/{renderer-D-17HVPb.mjs → renderer-SSBL4M1o.mjs} +3 -3
  308. package/dist/{renderer-D-17HVPb.mjs.map → renderer-SSBL4M1o.mjs.map} +1 -1
  309. package/dist/{renderer-C8rxyjaE.mjs → renderer-SWr3vbrV.mjs} +2 -2
  310. package/dist/{renderer-C8rxyjaE.mjs.map → renderer-SWr3vbrV.mjs.map} +1 -1
  311. package/dist/{renderer-LwrcnEtI.mjs → renderer-WCZu2Rf5.mjs} +3 -3
  312. package/dist/{renderer-LwrcnEtI.mjs.map → renderer-WCZu2Rf5.mjs.map} +1 -1
  313. package/dist/{renderer-BIGILDEA.mjs → renderer-Xv6GfNUI.mjs} +2 -2
  314. package/dist/{renderer-BIGILDEA.mjs.map → renderer-Xv6GfNUI.mjs.map} +1 -1
  315. package/dist/renderer-_jC5KIT1.mjs +5 -0
  316. package/dist/{renderer-DveQQCi8.mjs → renderer-bAKUeHF3.mjs} +3 -3
  317. package/dist/{renderer-DveQQCi8.mjs.map → renderer-bAKUeHF3.mjs.map} +1 -1
  318. package/dist/renderer-cTgAuVmJ.mjs +5 -0
  319. package/dist/{renderer-DGPaKIFf.mjs → renderer-cod5Ona9.mjs} +2 -2
  320. package/dist/{renderer-DgLt0TPo.mjs → renderer-g_vrrAQU.mjs} +2 -2
  321. package/dist/{renderer-DgLt0TPo.mjs.map → renderer-g_vrrAQU.mjs.map} +1 -1
  322. package/dist/{renderer-uorPCWdC.mjs → renderer-hSCfnvaK.mjs} +3 -3
  323. package/dist/{renderer-uorPCWdC.mjs.map → renderer-hSCfnvaK.mjs.map} +1 -1
  324. package/dist/{renderer-BGPnCRFI.mjs → renderer-ktWXVYka.mjs} +3 -3
  325. package/dist/{renderer-BGPnCRFI.mjs.map → renderer-ktWXVYka.mjs.map} +1 -1
  326. package/dist/renderer-nVKDvDLO.mjs +5 -0
  327. package/dist/{renderer-U-12BOhe.mjs → renderer-oKRF4A0M.mjs} +2 -2
  328. package/dist/{renderer-U-12BOhe.mjs.map → renderer-oKRF4A0M.mjs.map} +1 -1
  329. package/dist/{renderer-CsilJwL-.mjs → renderer-pHWEHDnM.mjs} +3 -3
  330. package/dist/{renderer-CsilJwL-.mjs.map → renderer-pHWEHDnM.mjs.map} +1 -1
  331. package/dist/renderer-pZ6_pUo1.mjs +5 -0
  332. package/dist/{renderer-BD00i68i.mjs → renderer-sCovEubT.mjs} +3 -3
  333. package/dist/{renderer-BD00i68i.mjs.map → renderer-sCovEubT.mjs.map} +1 -1
  334. package/dist/{renderer-BdbGTz7z.mjs → renderer-sYSkIUfo.mjs} +3 -3
  335. package/dist/{renderer-BdbGTz7z.mjs.map → renderer-sYSkIUfo.mjs.map} +1 -1
  336. package/dist/{renderer-BLU0PQTB.mjs → renderer-zXPVLRlD.mjs} +3 -3
  337. package/dist/{renderer-BLU0PQTB.mjs.map → renderer-zXPVLRlD.mjs.map} +1 -1
  338. package/dist/{renderers-CP8CFWDs-ywy4xljX.mjs → renderers-CP8CFWDs-DH2oktaC.mjs} +2 -2
  339. package/dist/{renderers-CP8CFWDs-ywy4xljX.mjs.map → renderers-CP8CFWDs-DH2oktaC.mjs.map} +1 -1
  340. package/dist/signals/index.mjs +4 -4
  341. package/dist/{src-B0KFNjj4.mjs → src-DFEqficI.mjs} +445 -35
  342. package/dist/src-DFEqficI.mjs.map +1 -0
  343. package/package.json +67 -58
  344. package/dist/index-BwRrsP_V.d.mts.map +0 -1
  345. package/dist/index-UDDAfHAF.d.mts.map +0 -1
  346. package/dist/preview-engine/chunk-3U2A3RW4.mjs +0 -5
  347. package/dist/preview-engine/chunk-6E3JSPJN.mjs +0 -1
  348. package/dist/preview-engine/chunk-F4F2UDRX.mjs +0 -1
  349. package/dist/preview-engine/chunk-KFNVUGNN.mjs +0 -1974
  350. package/dist/preview-engine/chunk-PYSBWKIJ.mjs +0 -1
  351. package/dist/preview-engine/chunk-U2IFQMS3.mjs +0 -174
  352. package/dist/preview-engine/renderers-2GMY2ZNK.mjs +0 -1
  353. package/dist/preview-engine/renderers-2QJNKL7Q.mjs +0 -1
  354. package/dist/preview-engine/renderers-3OYU6O6F.mjs +0 -1
  355. package/dist/preview-engine/renderers-433Y2PCK.mjs +0 -1
  356. package/dist/preview-engine/renderers-4AGPGEL4.mjs +0 -1
  357. package/dist/preview-engine/renderers-54DBHGUW.mjs +0 -1
  358. package/dist/preview-engine/renderers-5M2O55U3.mjs +0 -1
  359. package/dist/preview-engine/renderers-6FVMDEAY.mjs +0 -1
  360. package/dist/preview-engine/renderers-6R7ZJ7DU.mjs +0 -1
  361. package/dist/preview-engine/renderers-75GCMFOD.mjs +0 -1
  362. package/dist/preview-engine/renderers-7LWLUCVQ.mjs +0 -1
  363. package/dist/preview-engine/renderers-BLDENIEV.mjs +0 -1
  364. package/dist/preview-engine/renderers-CDB3YK3R.mjs +0 -1
  365. package/dist/preview-engine/renderers-D6D4XDFY.mjs +0 -1
  366. package/dist/preview-engine/renderers-DJVFQZYU.mjs +0 -1
  367. package/dist/preview-engine/renderers-DMXSV7VO.mjs +0 -1
  368. package/dist/preview-engine/renderers-EBMASIOE.mjs +0 -1
  369. package/dist/preview-engine/renderers-F262HDFS.mjs +0 -1
  370. package/dist/preview-engine/renderers-FMXKIF22.mjs +0 -1
  371. package/dist/preview-engine/renderers-GJKSZ6DR.mjs +0 -1
  372. package/dist/preview-engine/renderers-GR3RLYDZ.mjs +0 -1
  373. package/dist/preview-engine/renderers-GT3W2QIA.mjs +0 -1
  374. package/dist/preview-engine/renderers-IHC7HUK3.mjs +0 -1
  375. package/dist/preview-engine/renderers-J56ZGEVM.mjs +0 -1
  376. package/dist/preview-engine/renderers-KYM6352U.mjs +0 -1
  377. package/dist/preview-engine/renderers-LFXX6TWI.mjs +0 -1
  378. package/dist/preview-engine/renderers-NAHUPFPU.mjs +0 -1
  379. package/dist/preview-engine/renderers-NM3FZLHH.mjs +0 -1
  380. package/dist/preview-engine/renderers-NNB4BTJA.mjs +0 -1
  381. package/dist/preview-engine/renderers-OYVQW6QI.mjs +0 -1
  382. package/dist/preview-engine/renderers-P5RIFU3C.mjs +0 -1
  383. package/dist/preview-engine/renderers-QB7HJUTS.mjs +0 -1
  384. package/dist/preview-engine/renderers-QRQVOCDC.mjs +0 -1
  385. package/dist/preview-engine/renderers-QVFHJTZA.mjs +0 -1
  386. package/dist/preview-engine/renderers-R3WQIE4L.mjs +0 -1
  387. package/dist/preview-engine/renderers-SQBVOLG7.mjs +0 -1
  388. package/dist/preview-engine/renderers-TLXMYEDI.mjs +0 -1
  389. package/dist/preview-engine/renderers-X4S3WELJ.mjs +0 -1
  390. package/dist/preview-engine/renderers-XT7U25I7.mjs +0 -1
  391. package/dist/preview-engine/renderers-XVGLMBB3.mjs +0 -1
  392. package/dist/preview-engine/renderers-YUWU3TQZ.mjs +0 -1
  393. package/dist/preview-engine/renderers-ZNUD5OVO.mjs +0 -1
  394. package/dist/renderer-01zxT4CK.mjs +0 -5
  395. package/dist/renderer-35LHkj36.mjs +0 -5
  396. package/dist/renderer-B0OIdCGj.mjs +0 -5
  397. package/dist/renderer-B3IPtkK9.mjs +0 -5
  398. package/dist/renderer-BD25uND8.mjs.map +0 -1
  399. package/dist/renderer-BMC39abo.mjs +0 -5
  400. package/dist/renderer-BQj3nlAI.mjs +0 -5
  401. package/dist/renderer-BnBvSmp_.mjs +0 -5
  402. package/dist/renderer-BsDSpTpL.mjs +0 -5
  403. package/dist/renderer-BtW6_gvE.mjs +0 -5
  404. package/dist/renderer-By8U44Rt.mjs +0 -5
  405. package/dist/renderer-C3lDmxuX.mjs +0 -5
  406. package/dist/renderer-C6SZAE_x.mjs +0 -5
  407. package/dist/renderer-CA3IVeZj.mjs +0 -5
  408. package/dist/renderer-CFoCH_mO.mjs +0 -5
  409. package/dist/renderer-CLhZqJF8.mjs +0 -6
  410. package/dist/renderer-CYJXQS8E.mjs +0 -5
  411. package/dist/renderer-C_vj6_WJ.mjs +0 -5
  412. package/dist/renderer-CeqfC6OR.mjs +0 -5
  413. package/dist/renderer-CkZCGMAc.mjs +0 -5
  414. package/dist/renderer-Clxju1r9.mjs +0 -5
  415. package/dist/renderer-Cvz22ZSh.mjs +0 -3
  416. package/dist/renderer-CyWtKBF7.mjs +0 -5
  417. package/dist/renderer-D27STGoB.mjs +0 -5
  418. package/dist/renderer-D78Aq9YK.mjs +0 -5
  419. package/dist/renderer-DHEffABL.mjs +0 -5
  420. package/dist/renderer-DUuNCgzW.mjs +0 -5
  421. package/dist/renderer-DVD5pzRq.mjs +0 -5
  422. package/dist/renderer-Dsp6xDw5.mjs +0 -5
  423. package/dist/renderer-DuC-BFXR.mjs +0 -5
  424. package/dist/renderer-DuWs_Wsv.mjs +0 -5
  425. package/dist/renderer-OSgsiIrW.mjs +0 -5
  426. package/dist/renderer-OZaMFYtZ.mjs +0 -5
  427. package/dist/renderer-T79TmHET.mjs +0 -5
  428. package/dist/renderer-UhsC9oTU.mjs +0 -5
  429. package/dist/renderer-WYZV1jWf.mjs +0 -5
  430. package/dist/renderer-Y7evDjHH.mjs +0 -5
  431. package/dist/renderer-mcePkmUe.mjs +0 -5
  432. package/dist/src-B0KFNjj4.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import{a as R,c as P,d as h,g as D,h as U,j as w,m as B}from"./chunk-IB6GZJOL.mjs";import{A as F}from"./chunk-F4F2UDRX.mjs";import{g as y}from"./chunk-Y4NIR77Z.mjs";y();y();var N=`
1
+ import{a as R,c as P,d as h,g as D,h as U,j as w,m as B}from"./chunk-IB6GZJOL.mjs";import{g as F}from"./chunk-KOVN277Z.mjs";import{g as y}from"./chunk-Y4NIR77Z.mjs";y();y();var N=`
2
2
  struct FlipUniforms {
3
3
  flipH : f32,
4
4
  flipV : f32,
@@ -1,4 +1,4 @@
1
- import{a as q}from"./chunk-AGAZJZWI.mjs";import{p as ce,q as Q,r as Y,s as $,t as he,u as de,v as U,w as k,x as fe,y as pe,z as me}from"./chunk-FKG27DVO.mjs";import{c as re,d as ie,e as T}from"./chunk-6E3JSPJN.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 f}from"./chunk-Y4NIR77Z.mjs";f();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;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;f();f();var ye=`
1
+ import{a as q}from"./chunk-AGAZJZWI.mjs";import{p as ce,q as Q,r as Y,s as $,t as he,u as de,v as U,w as k,x as pe,y as fe,z as me}from"./chunk-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
2
  struct CompositeUniforms {
3
3
  blendMode : u32,
4
4
  padding1 : u32,
@@ -183,7 +183,7 @@ fn fs(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
183
183
 
184
184
  return accum / max(totalWeight, 0.0001);
185
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),p=e.beginRenderPass({colorAttachments:[{view:d.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});p.setPipeline(this.compositePipeline);let m=this.compositeUniformBindGroupCache.getBindGroup(this.device,this.compositeUniformLayout,h);p.setBindGroup(0,m);let g=t.getCompositeBindGroup(this.device,this.dualTextureLayout,i,o,l);return p.setBindGroup(1,g),p.draw(4),p.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 p=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:p.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(),p}destroy(){this.compositePool.destroy(),this.motionBlurPool.destroy(),this.texturePool.destroy(),this.compositeUniformBindGroupCache.destroy(),this.motionBlurUniformBindGroupCache.destroy()}};f();f();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}};f();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=[]}};f();f();var ge=`
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
187
  struct Uniforms {
188
188
  transformCol0 : vec4<f32>,
189
189
  transformCol1 : vec4<f32>,
@@ -260,7 +260,7 @@ fn sdSegmentWithCap(p: vec2<f32>, a: vec2<f32>, b: vec2<f32>, radius: f32, capTy
260
260
 
261
261
  return vec4<f32>(u.color.rgb * alpha, alpha);
262
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 p of l)this.drawSegment(e,t,p.p0,p.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 p of l)this.drawSegment(e,t,p.p0,p.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 p=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,p);e.setBindGroup(0,ke),e.setVertexBuffer(0,Ue),e.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};f();f();var ve=`
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
264
  struct Uniforms {
265
265
  transformCol0 : vec4<f32>,
266
266
  transformCol1 : vec4<f32>,
@@ -314,7 +314,7 @@ struct VSOut {
314
314
  return color * opacity;
315
315
  }
316
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),p=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]=p,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]=p,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()}};f();f();var V=`
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
318
  struct GradientUniforms {
319
319
  info : vec4<f32>, // x = type (0 none, 1 linear, 2 radial, 3 conic), y = stop count
320
320
  geom : vec4<f32>, // linear: cx, cy, dir.x / len, dir.y / len; radial: cx, cy, rx, ry; conic: cx, cy, from (rad)
@@ -374,7 +374,7 @@ fn evalGradient(g: GradientUniforms, p: vec2<f32>) -> vec4<f32> {
374
374
  }
375
375
  return vec4<f32>(gradientOklabToSrgb(lab.xyz), lab.w);
376
376
  }
377
- `;f();var xe=`
377
+ `;p();var xe=`
378
378
  ${V}
379
379
 
380
380
  struct Uniforms {
@@ -417,7 +417,7 @@ struct VSOut {
417
417
 
418
418
  return vec4<f32>(outColor.rgb * alpha, alpha);
419
419
  }
420
- `;f();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 p=G(i.color??"#ffffff");this.uniformData[16]=p.r,this.uniformData[17]=p.g,this.uniformData[18]=p.b,this.uniformData[19]=p.a,this.packTwoColorGradient(i,o,p)}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,p=d-l,m=Math.max(h*h+p*p,1e-6);s.set([1,2,0,0,(a+u)/2,(l+d)/2,h/m,p/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()}};f();f();var Pe=`
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
421
  ${V}
422
422
 
423
423
  struct Uniforms {
@@ -477,4 +477,4 @@ fn sdRoundedRect(p: vec2<f32>, b: vec2<f32>, r: f32) -> f32 {
477
477
 
478
478
  return vec4<f32>(fill.rgb * alpha, alpha);
479
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),p=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));p=2/Math.max(D,.001)}let m=r.x-p,g=r.y-p,x=r.x+r.width+p,B=r.y+r.height+p;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()}};f();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 fe;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),p=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,p-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}};f();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)}f();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=pe(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};
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,4 +1,4 @@
1
- import{a as Y}from"./chunk-2GA735OZ.mjs";import{b as $,c as K}from"./chunk-3DXMWDQ3.mjs";import{a as H,d as M,e as W,g as F,h as O,j as X,k as z,l as E,m as R}from"./chunk-IB6GZJOL.mjs";import{a as c}from"./chunk-6FULVULN.mjs";import{A as B,x as V}from"./chunk-F4F2UDRX.mjs";import{g as n}from"./chunk-Y4NIR77Z.mjs";n();n();n();var L=50,_=500,G=255,pe=Y().field("amount",c.number().min(0).max(_).default(100),{bindable:!0,dataTypes:["Number","Signal"],label:"Amount Signal",description:"Sharpening intensity percentage (0\u2013500%)."}).field("radius",c.number().min(.1).max(L).default(1.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Radius Signal",description:"The Gaussian blur radius in pixels used to detect edge contrast."}).field("threshold",c.number().int().min(0).max(G).default(3),{bindable:!0,dataTypes:["Number","Signal"],label:"Threshold Signal",description:"Minimum tonal level difference (0\u2013255) required before sharpening is applied to avoid amplifying noise."}).build(),he=pe.schema,Se=c.union([$,K]);var ce=`
1
+ import{a as Y}from"./chunk-2GA735OZ.mjs";import{b as $,c as K}from"./chunk-3DXMWDQ3.mjs";import{a as H,d as M,e as W,g as F,h as O,j as X,k as z,l as E,m as R}from"./chunk-IB6GZJOL.mjs";import{a as c}from"./chunk-6FULVULN.mjs";import{d as V,g as B}from"./chunk-KOVN277Z.mjs";import{g as n}from"./chunk-Y4NIR77Z.mjs";n();n();n();var L=50,_=500,G=255,pe=Y().field("amount",c.number().min(0).max(_).default(100),{bindable:!0,dataTypes:["Number","Signal"],label:"Amount Signal",description:"Sharpening intensity percentage (0\u2013500%)."}).field("radius",c.number().min(.1).max(L).default(1.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Radius Signal",description:"The Gaussian blur radius in pixels used to detect edge contrast."}).field("threshold",c.number().int().min(0).max(G).default(3),{bindable:!0,dataTypes:["Number","Signal"],label:"Threshold Signal",description:"Minimum tonal level difference (0\u2013255) required before sharpening is applied to avoid amplifying noise."}).build(),he=pe.schema,Se=c.union([$,K]);var ce=`
2
2
  struct UnsharpMaskUniforms {
3
3
  dirX : f32,
4
4
  dirY : f32,
@@ -1,4 +1,4 @@
1
- import{a as g}from"./chunk-GZVPVOHB.mjs";import{A as l,c as m,h as u}from"./chunk-F4F2UDRX.mjs";import{g as t}from"./chunk-Y4NIR77Z.mjs";t();t();var x=["pan"],w=()=>`
1
+ import{a as g}from"./chunk-K3C6GUQD.mjs";import{g as l}from"./chunk-KOVN277Z.mjs";import{c as m,h as u}from"./chunk-ULOFDFHJ.mjs";import{g as t}from"./chunk-Y4NIR77Z.mjs";t();t();var x=["pan"],w=()=>`
2
2
  struct Uniforms {
3
3
  sampleRate : f32,
4
4
  pan : f32,
@@ -1,4 +1,4 @@
1
- import{a as q}from"./chunk-2GA735OZ.mjs";import{b as J,c as Z}from"./chunk-3DXMWDQ3.mjs";import{a as $,d as X,e as L,g as K,h as V,j as Y,k as j,l as Q,m as w}from"./chunk-IB6GZJOL.mjs";import{a as r}from"./chunk-6FULVULN.mjs";import{A as H,x as E}from"./chunk-F4F2UDRX.mjs";import{g as l}from"./chunk-Y4NIR77Z.mjs";l();l();l();l();var I=200,be=r.enum(["Union","Intersect","Subtract","Difference","Invert","Dilate","Erode","Choke","Feather"]),ee=r.enum(["Alpha","Luminance","Red","Green","Blue"]),ke=r.enum(["WhiteWithAlpha","GrayscaleRGB","AlphaOnly","PassthroughRGB"]),Re=q().field("operation",be.default("Union"),{label:"Operation",description:"Morphological or Boolean set operation applied to input alpha masks."}).field("radius",r.number().min(0).max(I).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Radius / Width (px)",description:"Kernel radius in pixels for Dilate, Erode, Choke, or Feather operations."}).field("threshold",r.number().multipleOf(.01).min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Threshold",description:"Cutoff threshold level (0.0\u20131.0) for binarization step or non-linear choke."}).field("clampMin",r.number().multipleOf(.01).min(0).max(1).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Min",description:"Minimum alpha matte cutoff limit (0.0\u20131.0)."}).field("clampMax",r.number().multipleOf(.01).min(0).max(1).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Max",description:"Maximum alpha matte cutoff limit (0.0\u20131.0)."}).field("channelA",ee.default("Alpha"),{label:"Mask A Channel",description:"Source channel to extract mask from Mask A (Alpha, Luminance, Red, Green, Blue)."}).field("channelB",ee.default("Alpha"),{label:"Mask B Channel",description:"Source channel to extract mask from Mask B (Alpha, Luminance, Red, Green, Blue)."}).field("binarize",r.boolean().default(!1),{label:"Binarize",description:"When enabled, outputs crisp 1-bit binary matte based on threshold."}).field("invertResult",r.boolean().default(!1),{label:"Invert Result",description:"Inverts final matte output."}).field("outputFormat",ke.default("WhiteWithAlpha"),{label:"Output Format",description:"WhiteWithAlpha (rgba(1,1,1,a)), GrayscaleRGB (rgba(a,a,a,1)), AlphaOnly (rgba(0,0,0,a)), PassthroughRGB (Mask A RGB with new alpha)."}).build(),Le=Re.schema,Ve=r.union([J,Z]);l();var Ae={Union:0,Intersect:1,Subtract:2,Difference:3,Invert:4,Dilate:5,Erode:6,Choke:7,Feather:8},ae={Alpha:0,Luminance:1,Red:2,Green:3,Blue:4},ye={WhiteWithAlpha:0,GrayscaleRGB:1,AlphaOnly:2,PassthroughRGB:3},Be=`
1
+ import{a as q}from"./chunk-2GA735OZ.mjs";import{b as J,c as Z}from"./chunk-3DXMWDQ3.mjs";import{a as $,d as X,e as L,g as K,h as V,j as Y,k as j,l as Q,m as w}from"./chunk-IB6GZJOL.mjs";import{a as r}from"./chunk-6FULVULN.mjs";import{d as E,g as H}from"./chunk-KOVN277Z.mjs";import{g as l}from"./chunk-Y4NIR77Z.mjs";l();l();l();l();var I=200,be=r.enum(["Union","Intersect","Subtract","Difference","Invert","Dilate","Erode","Choke","Feather"]),ee=r.enum(["Alpha","Luminance","Red","Green","Blue"]),ke=r.enum(["WhiteWithAlpha","GrayscaleRGB","AlphaOnly","PassthroughRGB"]),Re=q().field("operation",be.default("Union"),{label:"Operation",description:"Morphological or Boolean set operation applied to input alpha masks."}).field("radius",r.number().min(0).max(I).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Radius / Width (px)",description:"Kernel radius in pixels for Dilate, Erode, Choke, or Feather operations."}).field("threshold",r.number().multipleOf(.01).min(0).max(1).default(.5),{bindable:!0,dataTypes:["Number","Signal"],label:"Threshold",description:"Cutoff threshold level (0.0\u20131.0) for binarization step or non-linear choke."}).field("clampMin",r.number().multipleOf(.01).min(0).max(1).default(0),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Min",description:"Minimum alpha matte cutoff limit (0.0\u20131.0)."}).field("clampMax",r.number().multipleOf(.01).min(0).max(1).default(1),{bindable:!0,dataTypes:["Number","Signal"],label:"Clamp Max",description:"Maximum alpha matte cutoff limit (0.0\u20131.0)."}).field("channelA",ee.default("Alpha"),{label:"Mask A Channel",description:"Source channel to extract mask from Mask A (Alpha, Luminance, Red, Green, Blue)."}).field("channelB",ee.default("Alpha"),{label:"Mask B Channel",description:"Source channel to extract mask from Mask B (Alpha, Luminance, Red, Green, Blue)."}).field("binarize",r.boolean().default(!1),{label:"Binarize",description:"When enabled, outputs crisp 1-bit binary matte based on threshold."}).field("invertResult",r.boolean().default(!1),{label:"Invert Result",description:"Inverts final matte output."}).field("outputFormat",ke.default("WhiteWithAlpha"),{label:"Output Format",description:"WhiteWithAlpha (rgba(1,1,1,a)), GrayscaleRGB (rgba(a,a,a,1)), AlphaOnly (rgba(0,0,0,a)), PassthroughRGB (Mask A RGB with new alpha)."}).build(),Le=Re.schema,Ve=r.union([J,Z]);l();var Ae={Union:0,Intersect:1,Subtract:2,Difference:3,Invert:4,Dilate:5,Erode:6,Choke:7,Feather:8},ae={Alpha:0,Luminance:1,Red:2,Green:3,Blue:4},ye={WhiteWithAlpha:0,GrayscaleRGB:1,AlphaOnly:2,PassthroughRGB:3},Be=`
2
2
  struct MaskMathUniforms {
3
3
  dirX : f32,
4
4
  dirY : f32,