framefields 2.13.0 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/README.md +9 -4
  2. package/dist/audio/index.d.mts +5 -5
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-CHV33Od9.d.mts → audio-CdCuGK5d.d.mts} +3 -3
  5. package/dist/{audio-CHV33Od9.d.mts.map → audio-CdCuGK5d.d.mts.map} +1 -1
  6. package/dist/{audio-DHzLQ_RG.mjs → audio-DFwRbID_.mjs} +3 -3
  7. package/dist/{audio-DHzLQ_RG.mjs.map → audio-DFwRbID_.mjs.map} +1 -1
  8. package/dist/cli/check-worker.mjs +43 -43
  9. package/dist/cloud/index.d.mts.map +1 -1
  10. package/dist/components/index.d.mts +13 -13
  11. package/dist/components/index.mjs +42 -42
  12. package/dist/{dist-D3BeAZ7X.mjs → dist--Uu5bQ_6.mjs} +870 -348
  13. package/dist/dist--Uu5bQ_6.mjs.map +1 -0
  14. package/dist/{dist-CUNvNDS3.mjs → dist-B8Nby2CU.mjs} +18 -4
  15. package/dist/dist-B8Nby2CU.mjs.map +1 -0
  16. package/dist/effects/index.d.mts +5 -5
  17. package/dist/effects/index.mjs +34 -34
  18. package/dist/{effects-BiDgCK1L.mjs → effects-WMgv8ZaD.mjs} +2 -2
  19. package/dist/{effects-BiDgCK1L.mjs.map → effects-WMgv8ZaD.mjs.map} +1 -1
  20. package/dist/fonts/index.mjs +2 -2
  21. package/dist/{fonts-DeDPWdvJ.mjs → fonts-OW3yAfO5.mjs} +2 -2
  22. package/dist/{fonts-DeDPWdvJ.mjs.map → fonts-OW3yAfO5.mjs.map} +1 -1
  23. package/dist/{gpu-CWjgql4C.mjs → gpu-R4T2Tndu.mjs} +2 -2
  24. package/dist/{gpu-CWjgql4C.mjs.map → gpu-R4T2Tndu.mjs.map} +1 -1
  25. package/dist/{index-E2IXX0Cz.d.mts → index-9xte4JgL.d.mts} +110 -61
  26. package/dist/index-9xte4JgL.d.mts.map +1 -0
  27. package/dist/{index-YB9j9KUx.d.mts → index-B0Vq8Bwf.d.mts} +3 -3
  28. package/dist/{index-YB9j9KUx.d.mts.map → index-B0Vq8Bwf.d.mts.map} +1 -1
  29. package/dist/{index-BFTtXosj.d.mts → index-BVd6nXd5.d.mts} +2 -2
  30. package/dist/index-BVd6nXd5.d.mts.map +1 -0
  31. package/dist/{index-CnZhBlob.d.mts → index-Bv7gxGK1.d.mts} +2 -2
  32. package/dist/{index-CnZhBlob.d.mts.map → index-Bv7gxGK1.d.mts.map} +1 -1
  33. package/dist/{index-a6JrbAK0.d.mts → index-C-V6CAhP.d.mts} +32 -2
  34. package/dist/index-C-V6CAhP.d.mts.map +1 -0
  35. package/dist/{index-DQ1U3HC3.d.mts → index-C7-p9zwU.d.mts} +3 -3
  36. package/dist/{index-DQ1U3HC3.d.mts.map → index-C7-p9zwU.d.mts.map} +1 -1
  37. package/dist/{index-rtCXNxGO.d.mts → index-CEKxvGY-.d.mts} +2 -2
  38. package/dist/{index-rtCXNxGO.d.mts.map → index-CEKxvGY-.d.mts.map} +1 -1
  39. package/dist/{index-X2u96TEo.d.mts → index-CRaydvLi.d.mts} +29 -11
  40. package/dist/index-CRaydvLi.d.mts.map +1 -0
  41. package/dist/{index-DBh3WphX.d.mts → index-D1FqV1eu.d.mts} +2 -2
  42. package/dist/{index-DBh3WphX.d.mts.map → index-D1FqV1eu.d.mts.map} +1 -1
  43. package/dist/{index-Dibc_xpC.d.mts → index-DoP6EiHj.d.mts} +5 -5
  44. package/dist/{index-Dibc_xpC.d.mts.map → index-DoP6EiHj.d.mts.map} +1 -1
  45. package/dist/{index-D68eGFNE.d.mts → index-GA9_Z8Fn.d.mts} +2 -2
  46. package/dist/{index-D68eGFNE.d.mts.map → index-GA9_Z8Fn.d.mts.map} +1 -1
  47. package/dist/index.d.mts +14 -14
  48. package/dist/index.mjs +50 -50
  49. package/dist/preview/index.d.mts +5 -5
  50. package/dist/preview/index.mjs +10 -10
  51. package/dist/{preview-PDz7o2xg.mjs → preview-D7BGmE1E.mjs} +3 -3
  52. package/dist/{preview-PDz7o2xg.mjs.map → preview-D7BGmE1E.mjs.map} +1 -1
  53. package/dist/preview-engine/audio.mjs +1 -1
  54. package/dist/preview-engine/{chunk-IEEV5RB3.mjs → chunk-3C2XT64C.mjs} +1 -1
  55. package/dist/preview-engine/chunk-52X7SURQ.mjs +494 -0
  56. package/dist/preview-engine/{chunk-XYCR3STG.mjs → chunk-5DZTPUMH.mjs} +198 -92
  57. package/dist/preview-engine/{chunk-4P3MMJWD.mjs → chunk-FZ4RD7HV.mjs} +1 -1
  58. package/dist/preview-engine/chunk-GNDE3OXQ.mjs +5 -0
  59. package/dist/preview-engine/chunk-OBIJIQCZ.mjs +1 -0
  60. package/dist/preview-engine/{chunk-SMHEMYCV.mjs → chunk-UBY2UYEL.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-UFPA36D2.mjs → chunk-UPZURPJY.mjs} +31 -31
  62. package/dist/preview-engine/components.mjs +1 -1
  63. package/dist/preview-engine/effects.mjs +1 -1
  64. package/dist/preview-engine/framefields.mjs +1 -1
  65. package/dist/preview-engine/player.mjs +1 -1
  66. package/dist/preview-engine/renderers-DLJOA3BM.mjs +228 -0
  67. package/dist/preview-engine/signals.mjs +1 -1
  68. package/dist/{program-Bn6ko_I4.mjs → program-tFKCWU2j.mjs} +109 -12
  69. package/dist/program-tFKCWU2j.mjs.map +1 -0
  70. package/dist/renderer/index.d.mts +4 -4
  71. package/dist/renderer/index.mjs +2 -2
  72. package/dist/{renderer-BCTUqJG7.mjs → renderer-03mYJLgX.mjs} +3 -3
  73. package/dist/{renderer-BCTUqJG7.mjs.map → renderer-03mYJLgX.mjs.map} +1 -1
  74. package/dist/{renderer-CyUiXLRa.mjs → renderer-0rveCDm-.mjs} +3 -3
  75. package/dist/{renderer-CyUiXLRa.mjs.map → renderer-0rveCDm-.mjs.map} +1 -1
  76. package/dist/{renderer-BUj7jE6t.mjs → renderer-2PjR3w-q.mjs} +3 -3
  77. package/dist/{renderer-BUj7jE6t.mjs.map → renderer-2PjR3w-q.mjs.map} +1 -1
  78. package/dist/{renderer-BqUAyzCZ.mjs → renderer-47y12Z37.mjs} +2 -2
  79. package/dist/{renderer-BqUAyzCZ.mjs.map → renderer-47y12Z37.mjs.map} +1 -1
  80. package/dist/renderer-6_bzbbXt.mjs +5 -0
  81. package/dist/renderer-8M-9G6F_.mjs +5 -0
  82. package/dist/{renderer-CwlY8Tb-.mjs → renderer-B0yVUOPP.mjs} +2 -2
  83. package/dist/{renderer-CwlY8Tb-.mjs.map → renderer-B0yVUOPP.mjs.map} +1 -1
  84. package/dist/renderer-B5OzKvF8.mjs +5 -0
  85. package/dist/{renderer-CgK7Q1G8.mjs → renderer-B7G1KohJ.mjs} +2 -2
  86. package/dist/renderer-BBCZ2qbE.mjs +5 -0
  87. package/dist/{renderer-CuPAQjDK.mjs → renderer-BBMtmxks.mjs} +3 -3
  88. package/dist/{renderer-CuPAQjDK.mjs.map → renderer-BBMtmxks.mjs.map} +1 -1
  89. package/dist/renderer-BChbxCux.mjs +5 -0
  90. package/dist/{renderer-C-GTxnfv.mjs → renderer-BDzn1AKF.mjs} +2 -2
  91. package/dist/{renderer-C-GTxnfv.mjs.map → renderer-BDzn1AKF.mjs.map} +1 -1
  92. package/dist/renderer-BGeMPr8C.mjs +5 -0
  93. package/dist/{renderer-RzkU_O1i.mjs → renderer-BGp0An5A.mjs} +3 -3
  94. package/dist/{renderer-RzkU_O1i.mjs.map → renderer-BGp0An5A.mjs.map} +1 -1
  95. package/dist/{renderer-BZgJj8Cl.mjs → renderer-BH7UCMPQ.mjs} +2 -2
  96. package/dist/{renderer-BZgJj8Cl.mjs.map → renderer-BH7UCMPQ.mjs.map} +1 -1
  97. package/dist/{renderer-aRk849b3.d.mts → renderer-BHYJlK6H.d.mts} +2 -2
  98. package/dist/{renderer-aRk849b3.d.mts.map → renderer-BHYJlK6H.d.mts.map} +1 -1
  99. package/dist/{renderer-Cu3iKMSJ.mjs → renderer-BJ8ea92W.mjs} +3 -3
  100. package/dist/{renderer-Cu3iKMSJ.mjs.map → renderer-BJ8ea92W.mjs.map} +1 -1
  101. package/dist/{renderer-Dp5ChuOs.mjs → renderer-BOSZAdgF.mjs} +2 -2
  102. package/dist/{renderer-Dp5ChuOs.mjs.map → renderer-BOSZAdgF.mjs.map} +1 -1
  103. package/dist/renderer-BPQ8Pkjb.mjs +5 -0
  104. package/dist/renderer-BTRpA3HD.mjs +5 -0
  105. package/dist/{renderer-vll8LX0I.mjs → renderer-BVIXKfbC.mjs} +132 -116
  106. package/dist/renderer-BVIXKfbC.mjs.map +1 -0
  107. package/dist/{renderer-DpZballM.mjs → renderer-BVU22lBS.mjs} +2 -2
  108. package/dist/{renderer-DpZballM.mjs.map → renderer-BVU22lBS.mjs.map} +1 -1
  109. package/dist/renderer-BVsECSn-.mjs +5 -0
  110. package/dist/{renderer-DwGlDNOV.mjs → renderer-BWSRryIA.mjs} +2 -2
  111. package/dist/{renderer-DwGlDNOV.mjs.map → renderer-BWSRryIA.mjs.map} +1 -1
  112. package/dist/{renderer-BMpmmYOq.mjs → renderer-BacY4nh8.mjs} +2 -2
  113. package/dist/{renderer-BMpmmYOq.mjs.map → renderer-BacY4nh8.mjs.map} +1 -1
  114. package/dist/{renderer-CZ5mwBW1.mjs → renderer-Baw6Utxi.mjs} +2 -2
  115. package/dist/{renderer-CZ5mwBW1.mjs.map → renderer-Baw6Utxi.mjs.map} +1 -1
  116. package/dist/{renderer-NBMmvqWl.mjs → renderer-Bcu3UrI-.mjs} +3 -3
  117. package/dist/{renderer-NBMmvqWl.mjs.map → renderer-Bcu3UrI-.mjs.map} +1 -1
  118. package/dist/{renderer-DxB_OfLs.mjs → renderer-BeNl_6EG.mjs} +2 -2
  119. package/dist/{renderer-DxB_OfLs.mjs.map → renderer-BeNl_6EG.mjs.map} +1 -1
  120. package/dist/{renderer-BHPgkoEL.mjs → renderer-BfZNIiSv.mjs} +2 -2
  121. package/dist/{renderer-BHPgkoEL.mjs.map → renderer-BfZNIiSv.mjs.map} +1 -1
  122. package/dist/renderer-Bgos68gc.mjs +6 -0
  123. package/dist/{renderer-CnL8Cmmr.mjs → renderer-BjDddtw9.mjs} +2 -2
  124. package/dist/renderer-BjHOvoqO.mjs +5 -0
  125. package/dist/renderer-BjXMPPlV.mjs +5 -0
  126. package/dist/{renderer-FPiLBwj5.mjs → renderer-BpVOk9ux.mjs} +2 -2
  127. package/dist/{renderer-FPiLBwj5.mjs.map → renderer-BpVOk9ux.mjs.map} +1 -1
  128. package/dist/{renderer-DJPZs_zV.mjs → renderer-Bpm145BW.mjs} +3 -3
  129. package/dist/{renderer-DJPZs_zV.mjs.map → renderer-Bpm145BW.mjs.map} +1 -1
  130. package/dist/{renderer-45ifiDkn.mjs → renderer-Brmbl12Y.mjs} +3 -3
  131. package/dist/{renderer-45ifiDkn.mjs.map → renderer-Brmbl12Y.mjs.map} +1 -1
  132. package/dist/renderer-Byobxqkv.mjs +5 -0
  133. package/dist/{renderer-DOZPZTxe.mjs → renderer-C20efMI0.mjs} +3 -3
  134. package/dist/{renderer-DOZPZTxe.mjs.map → renderer-C20efMI0.mjs.map} +1 -1
  135. package/dist/{renderer-puQhVfDS.mjs → renderer-C5AoaymD.mjs} +3 -3
  136. package/dist/{renderer-puQhVfDS.mjs.map → renderer-C5AoaymD.mjs.map} +1 -1
  137. package/dist/{renderer-B-LUGB9h.mjs → renderer-CCxk-RJR.mjs} +2 -2
  138. package/dist/{renderer-B-LUGB9h.mjs.map → renderer-CCxk-RJR.mjs.map} +1 -1
  139. package/dist/{renderer-BKi6jDi_.mjs → renderer-CKo7VR8x.mjs} +3 -3
  140. package/dist/{renderer-BKi6jDi_.mjs.map → renderer-CKo7VR8x.mjs.map} +1 -1
  141. package/dist/renderer-CKrsg3EG.mjs +5 -0
  142. package/dist/{renderer--Q0pM9Vh.mjs → renderer-COgwYqev.mjs} +3 -3
  143. package/dist/{renderer--Q0pM9Vh.mjs.map → renderer-COgwYqev.mjs.map} +1 -1
  144. package/dist/{renderer-B5b-ehRb.mjs → renderer-CP108ABB.mjs} +2 -2
  145. package/dist/{renderer-B5b-ehRb.mjs.map → renderer-CP108ABB.mjs.map} +1 -1
  146. package/dist/{renderer-BPOh9x5X.mjs → renderer-CP8wLzTU.mjs} +2 -2
  147. package/dist/{renderer-BPOh9x5X.mjs.map → renderer-CP8wLzTU.mjs.map} +1 -1
  148. package/dist/{renderer-BPiWsrC2.mjs → renderer-CT3zkfbf.mjs} +2 -2
  149. package/dist/{renderer-BPiWsrC2.mjs.map → renderer-CT3zkfbf.mjs.map} +1 -1
  150. package/dist/{renderer-CQFMyC_c.mjs → renderer-Ca1KjNCO.mjs} +2 -2
  151. package/dist/{renderer-CQFMyC_c.mjs.map → renderer-Ca1KjNCO.mjs.map} +1 -1
  152. package/dist/renderer-Cj875NuH.mjs +5 -0
  153. package/dist/{renderer-CMnlgAGs.mjs → renderer-Cm0tsbQH.mjs} +2 -2
  154. package/dist/{renderer-CMnlgAGs.mjs.map → renderer-Cm0tsbQH.mjs.map} +1 -1
  155. package/dist/renderer-CnmzJoMv.mjs +5 -0
  156. package/dist/{renderer-BtgqTg2K.mjs → renderer-Cqb7PGrI.mjs} +2 -2
  157. package/dist/{renderer-C9dqx3U7.mjs → renderer-CrxwW6VQ.mjs} +3 -3
  158. package/dist/{renderer-C9dqx3U7.mjs.map → renderer-CrxwW6VQ.mjs.map} +1 -1
  159. package/dist/renderer-CtklDaMg.mjs +5 -0
  160. package/dist/{renderer-dRXP2dJU.mjs → renderer-Cw6_NL2i.mjs} +3 -3
  161. package/dist/{renderer-dRXP2dJU.mjs.map → renderer-Cw6_NL2i.mjs.map} +1 -1
  162. package/dist/{renderer-C_1eqfI0.mjs → renderer-D-KHHWQD.mjs} +3 -3
  163. package/dist/{renderer-C_1eqfI0.mjs.map → renderer-D-KHHWQD.mjs.map} +1 -1
  164. package/dist/{renderer-CxSFvKd1.mjs → renderer-D-RhYvVl.mjs} +2 -2
  165. package/dist/{renderer-CxSFvKd1.mjs.map → renderer-D-RhYvVl.mjs.map} +1 -1
  166. package/dist/renderer-D1tK3in_.mjs +5 -0
  167. package/dist/{renderer-Nnu32rqg.mjs → renderer-D2wNFNRf.mjs} +2 -2
  168. package/dist/{renderer-Nnu32rqg.mjs.map → renderer-D2wNFNRf.mjs.map} +1 -1
  169. package/dist/renderer-D2yc9P61.mjs +5 -0
  170. package/dist/renderer-D4v-JvSr.mjs +5 -0
  171. package/dist/renderer-D7WRWDwB.mjs +5 -0
  172. package/dist/{renderer-DXFJv_e6.mjs → renderer-DA8YEo_d.mjs} +3 -3
  173. package/dist/{renderer-DXFJv_e6.mjs.map → renderer-DA8YEo_d.mjs.map} +1 -1
  174. package/dist/{renderer-CYwVNbUh.mjs → renderer-DEjo6dw_.mjs} +2 -2
  175. package/dist/{renderer-CYwVNbUh.mjs.map → renderer-DEjo6dw_.mjs.map} +1 -1
  176. package/dist/renderer-DGvA0tdB.mjs +5 -0
  177. package/dist/{renderer-Br8km655.mjs → renderer-DIEeHiQA.mjs} +2 -2
  178. package/dist/{renderer-Br8km655.mjs.map → renderer-DIEeHiQA.mjs.map} +1 -1
  179. package/dist/{renderer-SJyp9-62.mjs → renderer-DNxWOz8Q.mjs} +2 -2
  180. package/dist/{renderer-SJyp9-62.mjs.map → renderer-DNxWOz8Q.mjs.map} +1 -1
  181. package/dist/renderer-DO7v5Sdm.mjs +5 -0
  182. package/dist/renderer-DRVvt7-V.mjs +5 -0
  183. package/dist/{renderer-DGb_wgTW.mjs → renderer-DVPgWHZw.mjs} +3 -3
  184. package/dist/{renderer-DGb_wgTW.mjs.map → renderer-DVPgWHZw.mjs.map} +1 -1
  185. package/dist/{renderer-BjgFpwVK.mjs → renderer-DWq9gYRw.mjs} +3 -3
  186. package/dist/{renderer-BjgFpwVK.mjs.map → renderer-DWq9gYRw.mjs.map} +1 -1
  187. package/dist/renderer-DYMCd3jL.mjs +5 -0
  188. package/dist/{renderer-C1ctHdXl.mjs → renderer-D_j1WKMD.mjs} +3 -3
  189. package/dist/{renderer-C1ctHdXl.mjs.map → renderer-D_j1WKMD.mjs.map} +1 -1
  190. package/dist/{renderer-BsMZ5Iaq.mjs → renderer-DcAKDAnS.mjs} +3 -3
  191. package/dist/{renderer-BsMZ5Iaq.mjs.map → renderer-DcAKDAnS.mjs.map} +1 -1
  192. package/dist/{renderer-g9SstkTz.mjs → renderer-Dgj46uEU.mjs} +2 -2
  193. package/dist/{renderer-DRal7Goa.mjs → renderer-DhyMfG1v.mjs} +3 -3
  194. package/dist/{renderer-DRal7Goa.mjs.map → renderer-DhyMfG1v.mjs.map} +1 -1
  195. package/dist/{renderer-BO_wuUKA.mjs → renderer-Dj2H5JPR.mjs} +3 -3
  196. package/dist/{renderer-BO_wuUKA.mjs.map → renderer-Dj2H5JPR.mjs.map} +1 -1
  197. package/dist/{renderer-BlZgyBSo.mjs → renderer-DkOuQi84.mjs} +3 -3
  198. package/dist/{renderer-BlZgyBSo.mjs.map → renderer-DkOuQi84.mjs.map} +1 -1
  199. package/dist/renderer-DmHKw-MM.mjs +5 -0
  200. package/dist/renderer-DoDsuZ6G.mjs +5 -0
  201. package/dist/{renderer-BgjPbgbn.mjs → renderer-Dr0tXA4k.mjs} +3 -3
  202. package/dist/{renderer-BgjPbgbn.mjs.map → renderer-Dr0tXA4k.mjs.map} +1 -1
  203. package/dist/{renderer-opVuiAQR.mjs → renderer-DtMVitEF.mjs} +2 -2
  204. package/dist/{renderer-opVuiAQR.mjs.map → renderer-DtMVitEF.mjs.map} +1 -1
  205. package/dist/{renderer-D-fzEZfX.mjs → renderer-Dwwnx7Dk.mjs} +2 -2
  206. package/dist/{renderer-D-fzEZfX.mjs.map → renderer-Dwwnx7Dk.mjs.map} +1 -1
  207. package/dist/{renderer-dGEMVaZ3.mjs → renderer-DzLrvCB2.mjs} +2 -2
  208. package/dist/{renderer-dGEMVaZ3.mjs.map → renderer-DzLrvCB2.mjs.map} +1 -1
  209. package/dist/renderer-EpgclS70.mjs +5 -0
  210. package/dist/{renderer-549d94qG.mjs → renderer-FYOL5Za6.mjs} +3 -3
  211. package/dist/{renderer-549d94qG.mjs.map → renderer-FYOL5Za6.mjs.map} +1 -1
  212. package/dist/renderer-GroKiYyK.mjs +5 -0
  213. package/dist/{renderer-CciiDHuU.mjs → renderer-I0Hh9cLK.mjs} +3 -3
  214. package/dist/{renderer-CciiDHuU.mjs.map → renderer-I0Hh9cLK.mjs.map} +1 -1
  215. package/dist/renderer-MQ5K_xIS.mjs +5 -0
  216. package/dist/{renderer-C7m7Yxgc.mjs → renderer-NRMlYkX6.mjs} +3 -3
  217. package/dist/{renderer-C7m7Yxgc.mjs.map → renderer-NRMlYkX6.mjs.map} +1 -1
  218. package/dist/{renderer-BIieU9pY.mjs → renderer-Nnmi8Gt6.mjs} +3 -3
  219. package/dist/{renderer-BIieU9pY.mjs.map → renderer-Nnmi8Gt6.mjs.map} +1 -1
  220. package/dist/renderer-U43SflML.mjs +5 -0
  221. package/dist/renderer-UqOmBgCv.mjs +5 -0
  222. package/dist/{renderer-KgsVk9c6.mjs → renderer-W1bVNVR6.mjs} +3 -3
  223. package/dist/{renderer-KgsVk9c6.mjs.map → renderer-W1bVNVR6.mjs.map} +1 -1
  224. package/dist/renderer-XLULgJM0.mjs +5 -0
  225. package/dist/{renderer-CE4535aW.mjs → renderer-ZnrEfkYh.mjs} +2 -2
  226. package/dist/{renderer-CE4535aW.mjs.map → renderer-ZnrEfkYh.mjs.map} +1 -1
  227. package/dist/{renderer-RAq3LnNy.mjs → renderer-_pC-jB9O.mjs} +2 -2
  228. package/dist/{renderer-RAq3LnNy.mjs.map → renderer-_pC-jB9O.mjs.map} +1 -1
  229. package/dist/{renderer-Dz6P-rPI.mjs → renderer-iMiYStcW.mjs} +2 -2
  230. package/dist/{renderer-Dz6P-rPI.mjs.map → renderer-iMiYStcW.mjs.map} +1 -1
  231. package/dist/{renderer-S9tVGneU.mjs → renderer-jUKdkmG5.mjs} +69 -69
  232. package/dist/{renderer-S9tVGneU.mjs.map → renderer-jUKdkmG5.mjs.map} +1 -1
  233. package/dist/{renderer-_54hiCq0.mjs → renderer-k5d7JSbs.mjs} +3 -3
  234. package/dist/{renderer-_54hiCq0.mjs.map → renderer-k5d7JSbs.mjs.map} +1 -1
  235. package/dist/renderer-lNjxY1GG.mjs +5 -0
  236. package/dist/{renderer-CL-vyXgX.mjs → renderer-nHS3Sius.mjs} +3 -3
  237. package/dist/{renderer-CL-vyXgX.mjs.map → renderer-nHS3Sius.mjs.map} +1 -1
  238. package/dist/{renderer-Cp_HOmp7.mjs → renderer-ngmYIIob.mjs} +3 -3
  239. package/dist/{renderer-Cp_HOmp7.mjs.map → renderer-ngmYIIob.mjs.map} +1 -1
  240. package/dist/{renderer-LXhEPCmy.mjs → renderer-raxwsiGI.mjs} +3 -3
  241. package/dist/{renderer-LXhEPCmy.mjs.map → renderer-raxwsiGI.mjs.map} +1 -1
  242. package/dist/renderer-ukufL7pl.mjs +5 -0
  243. package/dist/renderer-wb0NCKdF.mjs +5 -0
  244. package/dist/{renderer-D8gN7aqk.mjs → renderer-zRq0j6Xy.mjs} +3 -3
  245. package/dist/{renderer-D8gN7aqk.mjs.map → renderer-zRq0j6Xy.mjs.map} +1 -1
  246. package/dist/{renderers-CP8CFWDs-BRQyvcut.mjs → renderers-CP8CFWDs-CshljORp.mjs} +2 -2
  247. package/dist/{renderers-CP8CFWDs-BRQyvcut.mjs.map → renderers-CP8CFWDs-CshljORp.mjs.map} +1 -1
  248. package/dist/sam/index.d.mts +3 -3
  249. package/dist/signals/index.d.mts +5 -5
  250. package/dist/signals/index.mjs +4 -4
  251. package/dist/{src-BzFGotRc.mjs → src-Dy4gnc6w.mjs} +43 -13
  252. package/dist/src-Dy4gnc6w.mjs.map +1 -0
  253. package/package.json +60 -60
  254. package/dist/dist-CUNvNDS3.mjs.map +0 -1
  255. package/dist/dist-D3BeAZ7X.mjs.map +0 -1
  256. package/dist/index-BFTtXosj.d.mts.map +0 -1
  257. package/dist/index-E2IXX0Cz.d.mts.map +0 -1
  258. package/dist/index-X2u96TEo.d.mts.map +0 -1
  259. package/dist/index-a6JrbAK0.d.mts.map +0 -1
  260. package/dist/preview-engine/chunk-77WWW75O.mjs +0 -5
  261. package/dist/preview-engine/chunk-7M5LE6EM.mjs +0 -483
  262. package/dist/preview-engine/chunk-FRJPXWAG.mjs +0 -1
  263. package/dist/preview-engine/renderers-TTXTV4PC.mjs +0 -228
  264. package/dist/program-Bn6ko_I4.mjs.map +0 -1
  265. package/dist/renderer-1aSF5BmY.mjs +0 -5
  266. package/dist/renderer-B2e4Gr9u.mjs +0 -5
  267. package/dist/renderer-B6fz4j50.mjs +0 -5
  268. package/dist/renderer-BEftIYw-.mjs +0 -5
  269. package/dist/renderer-BHTnO-7e.mjs +0 -5
  270. package/dist/renderer-BMlnQqTO.mjs +0 -5
  271. package/dist/renderer-BOzcFezY.mjs +0 -5
  272. package/dist/renderer-BVbjJIKJ.mjs +0 -5
  273. package/dist/renderer-BXsHKf4k.mjs +0 -5
  274. package/dist/renderer-Bks49NVl.mjs +0 -5
  275. package/dist/renderer-C-t7qFKr.mjs +0 -5
  276. package/dist/renderer-C24n-6CX.mjs +0 -6
  277. package/dist/renderer-CCReX-7M.mjs +0 -5
  278. package/dist/renderer-CIxFQrAm.mjs +0 -5
  279. package/dist/renderer-CLHBMIqJ.mjs +0 -5
  280. package/dist/renderer-CMJKi-Ye.mjs +0 -5
  281. package/dist/renderer-C_H3mHZa.mjs +0 -5
  282. package/dist/renderer-CfkTdR5B.mjs +0 -5
  283. package/dist/renderer-CnhkXJ0R.mjs +0 -5
  284. package/dist/renderer-CqpyVsq_.mjs +0 -5
  285. package/dist/renderer-CtWgIpTE.mjs +0 -5
  286. package/dist/renderer-CyuKr5ca.mjs +0 -5
  287. package/dist/renderer-D9ON_1Hf.mjs +0 -5
  288. package/dist/renderer-DAnTgh4o.mjs +0 -5
  289. package/dist/renderer-DWgpivA3.mjs +0 -5
  290. package/dist/renderer-Dh_qNNwR.mjs +0 -5
  291. package/dist/renderer-DkCpXPMP.mjs +0 -5
  292. package/dist/renderer-Dre-6cDR.mjs +0 -5
  293. package/dist/renderer-Ds5z4_HX.mjs +0 -5
  294. package/dist/renderer-HGSCOMyP.mjs +0 -5
  295. package/dist/renderer-KMY8W-cJ.mjs +0 -5
  296. package/dist/renderer-R21YvXz3.mjs +0 -5
  297. package/dist/renderer-RtzCz37W.mjs +0 -5
  298. package/dist/renderer-iMrqAjix.mjs +0 -5
  299. package/dist/renderer-sMed1u1O.mjs +0 -5
  300. package/dist/renderer-tsAuo46l.mjs +0 -5
  301. package/dist/renderer-vll8LX0I.mjs.map +0 -1
  302. package/dist/src-BzFGotRc.mjs.map +0 -1
@@ -1,5 +0,0 @@
1
- import{a as $e,b as lt,c as ut,d as dt,e as ft,f as ht,g as mt,h as gt,i as xt,j as yt,k as bt,l as wt,n as St}from"./chunk-7M5LE6EM.mjs";import{b as Ge}from"./chunk-FRJPXWAG.mjs";import{e as at}from"./chunk-GXFYRMJZ.mjs";import{h as st,i as ct,j as L,x as be}from"./chunk-64L4GUOF.mjs";import{a as de}from"./chunk-354GX6IB.mjs";import{f as Re,g as we}from"./chunk-Y4NIR77Z.mjs";we();function Et(t){return typeof t=="object"&&t!==null&&typeof t.get=="function"}function Fe(t,n){return Et(t)?t.get(n):t}function Ct(t,n){return t.map(e=>{let i={...e,text:String(Fe(e.text,n)??"")};return e.fontSize!==void 0&&(i.fontSize=Number(Fe(e.fontSize,n))),e.fill!==void 0&&(i.fill=String(Fe(e.fill,n))),e.opacity!==void 0&&(i.opacity=Number(Fe(e.opacity,n))),e.mark&&(i.mark={...e.mark,background:String(Fe(e.mark.background,n))}),i})}function zt(t){let n="";for(let e of t)n+=typeof e.text=="string"?e.text:"";return n}function Mt(t,n){let e=[],i=0;for(let[r,c]of t.entries()){if(i>=n.length)break;let d=typeof c.text=="string"?c.text.length:0,u=r===t.length-1?n.length:i+d;u>i&&e.push({...c,text:n.slice(i,u)}),i=u}return e}we();function Xt(t,n,e,i,r=0,c=0){let d=at.getChannelSamples(n,"primary");if(d&&d.length>0){let m=i>0?i:24,C=e/m,h=r!==0?c*r/(2*Math.PI):0,k=Math.max(0,C+h),a=Math.max(0,Math.min(d.length-1,Math.round(k*m)));return Number(d[a])||0}if(!t)return 0;let u=t[n];if(u==null)return 0;if(typeof u=="number")return u;if(typeof u=="function")return Number(u(e,i))||0;if(typeof u=="object"){let m=u;if(typeof m.get=="function"){let C=i>0?e/i:0,h=r!==0?c*r/(2*Math.PI):0;return Number(m.get({frame:e,fps:i,time:C+h}))||0}if(Array.isArray(m.samples)||ArrayBuffer.isView(m.samples)){let C=m.samples,h=Math.max(0,Math.min(C.length-1,Math.round(e)));return Number(C[h])||0}}return 0}function It(t){return t<.5?2*t*t:1-(-2*t+2)**2/2}function Yt(t){let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);return()=>{let e=Math.sin(n++)*1e4;return e-Math.floor(e)}}function Gt(t,n){let e=Yt(n),i=Array.from({length:t},(r,c)=>c);for(let r=i.length-1;r>0;r--){let c=Math.floor(e()*(r+1)),d=i[r];i[r]=i[c],i[c]=d}return i}function jt(t,n,e){let i=`${n}-${e}`,r=L.emojiTextureCache.get(i);if(r)return r;let c=4,d=Math.max(16,Math.ceil(e*1.5*c)),u=Math.ceil(d/4)*4;if(!!globalThis.__IS_HEADLESS_RENDERER__||typeof window>"u"||typeof globalThis.document>"u")return L.hasEmojiFont()&&console.warn(`[getOrCreateEmojiTexture] Emoji "${n}" not preloaded. Returning fallback dummy texture.`),r=t.createTexture({label:`Emoji-Dummy-${n}`,size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING}),L.emojiTextureCache.set(i,r),r;let C=new OffscreenCanvas(u,u),h=C.getContext("2d");return h&&(h.font=`${e*c}px "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif`,h.textBaseline="middle",h.textAlign="center",h.fillText(n,u/2,u/2)),r=t.createTexture({label:`Emoji-${n}`,size:[u,u],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),t.queue.copyExternalImageToTexture({source:C},{texture:r,premultipliedAlpha:!0},[u,u]),L.emojiTextureCache.set(i,r),r}function je(t,n,e,i,r,c,d){if(!d)return{p_in:1,p_out:1};let u=1;if(e>0){let C=e*.5,h=c>1?e*.5/(c-1):0,k=r*h,a=k+C;t<k?u=0:t>a?u=1:u=(t-k)/(a-k)}let m=1;if(i>0){let C=n-i;if(t>C){let h=i*.5,k=c>1?i*.5/(c-1):0,a=C+r*k,A=a+h;t<a?m=1:t>A?m=0:m=1-(t-a)/(A-a)}}return{p_in:u,p_out:m}}function _e(t,n,e,i,r,c,d,u,m,C,h,k,a){let A=e?It(t):t,w=e?It(n):n,v=A*w;if(A<=0&&i!=="blur"||w<=0&&r!=="blur")return{opacity:0,transX:0,transY:0,rot:0,scale:1,blurAmount:0,visible:!1};let X=k;if(i==="fade"||i==="slideUp"||i==="blur"?X*=A:i==="appear"&&A<.5&&(X=0),r==="fade"||r==="slideUp"||r==="blur"?X*=w:r==="appear"&&w<.5&&(X=0),X<.001)return{opacity:0,transX:0,transY:0,rot:0,scale:1,blurAmount:0,visible:!1};let j=0,P=0,H=0,ee=1;i==="slideUp"&&d<m&&(P+=(1-A)*30),r==="slideUp"&&d>u-C&&(P-=(1-w)*30);let oe=a?1:Math.PI/180;c==="stack"?(ee=.8+.2*v,H=(1-v)*15*oe):c==="wave"?P+=10*Math.sin(d*.005-h*.5):c==="wiggle"?(j+=5*Math.sin(d*.008+h*1.7),P+=5*Math.cos(d*.006+h*1.3),H+=4*Math.sin(d*.005+h*2.1)*oe):c==="shuffle"&&(j+=3*Math.sin(d*.015+h*3.1),P+=3*Math.cos(d*.012+h*2.3),H+=8*Math.sin(d*.02+h*1.1)*oe);let x=0;return i==="blur"&&(x=Math.max(x,(1-A)*20)),r==="blur"&&(x=Math.max(x,(1-w)*20)),{opacity:X,transX:j,transY:P,rot:H,scale:ee,blurAmount:x,visible:!0}}var _t={linear:t=>t,none:t=>t,smoothstep:t=>t,"power1.out":t=>1-(1-t)**2,"quad.out":t=>1-(1-t)**2,"power1.in":t=>t**2,"quad.in":t=>t**2,"power1.inout":t=>t<.5?2*t*t:1-(-2*t+2)**2/2,"quad.inout":t=>t<.5?2*t*t:1-(-2*t+2)**2/2,"power2.out":t=>1-(1-t)**3,"cubic.out":t=>1-(1-t)**3,"power2.in":t=>t**3,"cubic.in":t=>t**3,"power2.inout":t=>t<.5?4*t**3:1-(-2*t+2)**3/2,"cubic.inout":t=>t<.5?4*t**3:1-(-2*t+2)**3/2,"power3.out":t=>1-(1-t)**4,"quart.out":t=>1-(1-t)**4,"power3.in":t=>t**4,"quart.in":t=>t**4,"power3.inout":t=>t<.5?8*t**4:1-(-2*t+2)**4/2,"quart.inout":t=>t<.5?8*t**4:1-(-2*t+2)**4/2,"power4.out":t=>1-(1-t)**5,"quint.out":t=>1-(1-t)**5,"power4.in":t=>t**5,"quint.in":t=>t**5,"sine.out":t=>Math.sin(t*Math.PI/2),"sine.in":t=>1-Math.cos(t*Math.PI/2),"sine.inout":t=>-(Math.cos(Math.PI*t)-1)/2,"expo.out":t=>t===1?1:1-2**(-10*t),"back.out":t=>1+2.70158*(t-1)**3+1.70158*(t-1)**2};function Ot(t,n){let e=Math.max(0,Math.min(1,n));if(!t)return e;let i=_t[t.toLowerCase().trim()];return i?i(e):e}function Ht(t,n,e){if(e<=0)return 0;let i=e>1?n/(e-1):.5,r=t.offset??0,c=(t.rangeStart??0)+r,d=(t.rangeEnd??1)+r,u=0;d<=c?u=i>=c?1:0:u=Math.max(0,Math.min(1,(i-c)/(d-c)));let m=u*u*(3-2*u);return Ot(t.easing??"power2.out",m)}function kt(t,n,e,i,r,c){let d=Math.max(1,e.charsCount??1),u=Math.max(1,e.wordsCount??1),m=Math.max(1,e.linesCount??1),C=t.selectors??[];if(C.length===0)return 1;let h=0;for(let k=0;k<C.length;k++){let a=C[k],A=0;if(a.type==="range"){let w=d,v=n.charIndex??0;a.basedOn==="words"?(w=u,v=n.wordIndex??0):a.basedOn==="lines"&&(w=m,v=n.lineIndex??0),a.randomizeOrder&&(v=bt(w,a.randomSeed??12345)[v%w]??v);let X=a.units==="index"?v:w>1?v/(w-1):.5,j=a.start??t.rangeStart??0,P=a.end??t.rangeEnd??(a.units==="index"?w:1),H=a.offset??t.offset??0;A=xt(X,j,P,H,a.shape??"smooth",a.easeHigh??0,a.easeLow??0)*(a.amount??1)}else if(a.type==="wiggly"){let w=c>0?r/c:0,v=(a.temporalPhaseDeg??0)*Math.PI/180,X=(a.spatialPhaseDeg??0)*Math.PI/180,j=w*(a.wigglesPerSecond??2)*2*Math.PI+v+X,P=yt(a.randomSeed??42,n.charIndex??0,j,a.correlation??.5),H=a.minAmount??-1,ee=a.maxAmount??1;A=H+(P*.5+.5)*(ee-H)}else if(a.type==="signal")A=Xt(i,a.signalId,r,c,a.phaseSpread??0,n.charIndex??0)*(a.multiplier??1)+(a.offset??0);else if(a.type==="expression"){let w=a,v=c>0?r/c:0,X={charIndex:n.charIndex??0,wordIndex:n.wordIndex??0,lineIndex:n.lineIndex??0,totalChars:d,totalWords:u,totalLines:m,frame:r,fps:c,time:v,signals:i};A=ft(w.expression,X)*(w.amount??1)}k===0?h=A:h=wt(h,A,a.mode??"add")}return h}function At(t,n,e,i,r=!1,c=0,d=24,u){if(!t||t.length===0)return i;let{transX:m,transY:C,rot:h,scale:k,scaleX:a,scaleY:A,opacity:w,blurAmount:v}=i,X=i.transZ??0,j=i.color,P=i.chromaticShift??0,H=i.dissolveProgress??0,ee=i.vfxParam??0,oe=i.skewM01??0,x=i.skewM10??0,fe=i.anchorConfig,le=i.fillOpacity??1,re=i.strokeWidth,U=i.strokeColor,ue=i.longShadow,he=i.lineSpacing,Z=i.lineAnchor,me=r?1:Math.PI/180,z=Math.max(1,e.charsCount??1),K=Math.max(1,e.wordsCount??1),ae=Math.max(1,e.linesCount??1);for(let ne of t)if("selectors"in ne&&Array.isArray(ne.selectors)){let ie=ne,l=ie.props??{},te=kt(ie,n,{charsCount:z,wordsCount:K,linesCount:ae},u,c,d),f=te,Y=1,q=1;if(l.spring){let b=(n.charIndex??0)*.035,D=Math.max(0,(d>0?c/d:0)-b);q=$e(D,l.spring.stiffness,l.spring.damping,l.spring.mass,l.spring.initialVelocity),Y=1-q,f=te*Y}if(f!==0||te!==0){if(l.x!==void 0&&(m+=l.x*f),l.y!==void 0&&(C+=l.y*f),l.scale!==void 0&&(k*=1+(l.scale-1)*f),l.scaleX!==void 0&&(a*=1+(l.scaleX-1)*f),l.scaleY!==void 0&&(A*=1+(l.scaleY-1)*f),l.rotation!==void 0&&(h+=l.rotation*me*f),l.rotationX!==void 0){let b=l.rotationX*f*Math.PI/180;A*=Math.max(.08,Math.abs(Math.cos(b)))}if(l.rotationY!==void 0){let b=l.rotationY*f*Math.PI/180;a*=Math.max(.08,Math.abs(Math.cos(b)))}if(l.rotationZ!==void 0&&(h+=l.rotationZ*me*f),l.translateZ!==void 0&&(X+=l.translateZ*f),l.skew!==void 0){let[,b,D]=lt(l.skew*f,l.skewAxis??0);oe+=b,x+=D}if(l.formation!==void 0){let b=ht(n.charIndex??0,z,l.formation),D=e.layoutCenter?.x??0,Q=e.layoutCenter?.y??0,xe=n.x??0,We=n.y??0,Ee=D+b.x,Xe=Q+b.y;if(m+=(Ee-xe)*f,C+=(Xe-We)*f,X+=b.z*f,b.rotX){let ye=b.rotX*f*Math.PI/180;A*=Math.max(.5,Math.abs(Math.cos(ye)))}if(b.rotY){let ye=b.rotY*f*Math.PI/180;a*=Math.max(.5,Math.abs(Math.cos(ye)))}b.rotZ&&(h+=b.rotZ*Math.PI/180*f),b.depthOpacity!==void 0&&(w*=1+(b.depthOpacity-1)*f)}if(l.anchor!==void 0&&(fe=l.anchor),l.opacity!==void 0&&(w*=1+(l.opacity-1)*f),l.blur!==void 0&&(v=Math.max(v,l.blur*f)),l.chromaticGlitch!==void 0){let b=(l.chromaticGlitch.redShiftX??0)*Math.max(0,f),D=l.chromaticGlitch.sliceProbability??.35,Q=Math.sin(c*17.13+(n.charIndex??0)*43.17),xe=Math.abs(Q-Math.floor(Q));xe<D&&(b+=(l.chromaticGlitch.sliceAmplitude??12)*(xe*2-1)),P+=b}if(l.particleDissolve!==void 0&&(H=Math.max(H,(l.particleDissolve.progress??0)*(l.spring?q:Math.max(0,f)))),l.longShadow!==void 0&&(ue=l.longShadow),l.audioSpectrum!==void 0){let b=gt(n.charIndex??0,z,l.audioSpectrum,u,c,d);l.audioSpectrum.scaleAxis==="scaleY"?A*=b:l.audioSpectrum.scaleAxis==="scaleX"?a*=b:k*=b}if(l.stroke!==void 0&&(l.stroke.fillOpacity!==void 0&&(le*=1-f+l.stroke.fillOpacity*f),l.stroke.strokeWidth!==void 0&&(re=(l.stroke.strokeWidth??0)*f),l.stroke.strokeColor&&(U=l.stroke.strokeColor)),l.lineSpacing!==void 0&&(he=l.lineSpacing*(l.spring?q:f),Z=l.lineAnchor??0),l.fillColor){let b=de(l.fillColor),D=j??{r:1,g:1,b:1,a:1},Q=te;j={r:D.r*(1-Q)+b.r*Q,g:D.g*(1-Q)+b.g*Q,b:D.b*(1-Q)+b.b*Q,a:D.a*(1-Q)+b.a*Q}}}}else{let ie=ne,l=n.charIndex??n.unitIndex??0,te=Math.max(1,e.charsCount??1);ie.unit==="word"?(l=n.wordIndex??0,te=Math.max(1,e.wordsCount??1)):ie.unit==="line"&&(l=n.lineIndex??0,te=Math.max(1,e.linesCount??1));let f=Ht(ie,l,te),Y=ie.transform;if(!Y||f<=0)continue;Y.x!==void 0&&(m+=Y.x*f),Y.y!==void 0&&(C+=Y.y*f),Y.rotation!==void 0&&(h+=Y.rotation*me*f),Y.scale!==void 0&&(k*=1+(Y.scale-1)*f),Y.scaleX!==void 0&&(a*=1+(Y.scaleX-1)*f);let q=1+((Y.scaleY??1)-1)*f;if(Y.rotationX){let b=Y.rotationX*f*Math.PI/180;q*=Math.cos(b)}if(A*=q,Y.opacity!==void 0&&(w*=1+(Y.opacity-1)*f),Y.blur!==void 0&&(v=Math.max(v,Y.blur*f)),Y.color){let b=de(Y.color),D=j??{r:1,g:1,b:1,a:1};j={r:D.r*(1-f)+b.r*f,g:D.g*(1-f)+b.g*f,b:D.b*(1-f)+b.b*f,a:D.a*(1-f)+b.a*f}}}return{transX:m,transY:C,transZ:X,rot:h,scale:k,scaleX:a,scaleY:A,opacity:Math.max(0,Math.min(1,w)),blurAmount:v,color:j,chromaticShift:P,dissolveProgress:H,vfxParam:ee,skewM01:oe,skewM10:x,anchorConfig:fe,fillOpacity:Math.max(0,Math.min(1,le)),strokeWidth:re,strokeColor:U,longShadow:ue,lineSpacing:he,lineAnchor:Z}}function pt(t,n,e){let i=e.fontFamily??"Inter";if(L.isFailed(i)&&(i="Inter"),L.isFailed(i))return;let r=e.fontSize??48,c=L.getFont(i,e.fontWeight,t.device,void 0,r,e.variableAxes),d=e.stroke&&e.strokeWidth&&e.strokeWidth>0,u=null;if(c&&d&&t.device){let o=e.strokeAlign==="outside"?2:1,y=(e.strokeWidth??0)*o*(c.unitsPerEm/r);u=L.getFont(i,e.fontWeight,t.device,y,r,e.variableAxes)??null}if(!c?.curvesTex||d&&!u?.curvesTex){let o=Ge(i);L.preloadSlugFont(t.device,i,o,void 0,e.renderId).catch(s=>{console.warn(`[drawParagraphNode] Failed to load Slug font for ${i}:`,s)});return}let m=e.letterSpacing??0,C=e.lineHeight!==void 0&&e.lineHeight<10?e.lineHeight*r:e.lineHeight??r*1.2,h=e.align??"start",k=e.direction??"auto",a=e.isCaption?0:e.textBackgroundColor?e.padding??0:0,A=e.text,w;if(e.typewriter){let o=e.fps??24,s=e.durationMs!==void 0?Math.round(e.durationMs/1e3*o):60;w=St(e.text,e.frame??0,0,s,e.typewriter.cadence,e.typewriter.scramble,e.typewriter.cursor?.blinkFrequency??2,e.typewriter.granularity??"character",e.textProgress),A=w.currentDisplayString}let v=w&&e.spans?.length?Mt(Ct(e.spans),A):e.spans,X=e.pathOptions?{...e.pathOptions,firstMargin:e.firstMargin!==void 0?e.firstMargin:e.pathOptions.firstMargin,lastMargin:e.lastMargin!==void 0?e.lastMargin:e.pathOptions.lastMargin,baselineShift:e.baselineShift!==void 0?e.baselineShift:e.pathOptions.baselineShift}:void 0,j,P;e.width!=null?(j=Math.max(0,e.width-a*2),P=be.measure(A,c,r,m,C,j,v,k)):(P=be.measure(A,c,r,m,C,void 0,v,k),j=P.width);let H=e.isCaption?e.dstRect.width:j,ee=e.animation?.applyBy??"word",x=(h==="left"||h==="start"&&!P.layout?.hasRtl)&&(H===void 0||H===j)&&!X&&ee==="word"&&!!P?.layout&&P.layout?P.layout:be.layout(A,c,r,m,C,j,h,ee,H,X,v,k),fe=e.verticalAlign??"top",le=e.height!=null&&!X&&!e.isCaption?e.height-(P.height+a*2):0,re={...e.dstRect,y:e.dstRect.y+(fe==="middle"?le/2:fe==="bottom"?le:0)},U=e.animation,ue=e.fontWeight==="bold"||typeof e.fontWeight=="number"&&e.fontWeight>=600||typeof e.fontWeight=="string"&&parseInt(e.fontWeight,10)>=600,he="hasTrueWeight"in c&&!!c.hasTrueWeight,Z=c;if(ue&&!he&&t.device){let o=ct(e.fontWeight),s=Math.max(0,(o-400)/500)*.055*r;if(s>0){let y=s*(c.unitsPerEm/r),S=L.getFont(i,400,t.device,y,r,e.variableAxes);S?.curvesTex&&(Z=S)}}let me=x.glyphs.length,z=e.elapsedMs!==void 0?e.elapsedMs:e.frame!==void 0&&e.fps!==void 0?e.frame/e.fps*1e3:0,K=e.durationMs!==void 0?e.durationMs:3e3,ae=e.isCaption?U?.in==="none"||!U?.in?0:K:U?.entranceMs?U.entranceMs:U?.in==="none"||!U?.in?0:K,ne=e.isCaption?0:U?.exitMs?U.exitMs:U?.out==="none"||!U?.out?0:K,ie=U?.in||"none",l=U?.out||"none",te=U?.kinetic||"none",f=U?.smoothing!==!1,Y=0;for(let o of x.glyphs)!o.isSpace&&o.unitIndex>Y&&(Y=o.unitIndex);let q=Y+1,b=te==="shuffle"||ie==="shuffle"?Gt(q,e.text):Array.from({length:q},(o,s)=>s);if(e.textBackgroundColor){let o=e.strokeRadius??e.borderRadius??8,s=0,y=e.opacity??1;if(e.isVideoMode===!1)s=y;else{for(let S of x.glyphs){if(S.isSpace)continue;let I=S.unitIndex,T=b[I]??I,{p_in:M,p_out:g}=je(z,K,ae,ne,T,q,!0),_=_e(M,g,f,ie,l,te,z,K,ae,ne,T,y,!1);_.visible&&_.opacity>s&&(s=_.opacity)}for(let S of x.emojis){let I=e.animation?.applyBy==="line"?0:Math.floor(S.x/(r+m)),T=b[I%q]??0,{p_in:M,p_out:g}=je(z,K,ae,ne,T,q,!0),_=_e(M,g,f,ie,l,te,z,K,ae,ne,T,y,!0);_.visible&&_.opacity>s&&(s=_.opacity)}}if(s>.001){let S=e.width!=null?e.width:P.width+a*2,I=e.height!=null?e.height:P.height+a*2;t.renderer.drawRRect(n,{rect:{x:e.dstRect.x,y:e.dstRect.y,width:S,height:I},rx:o,ry:o},e.textBackgroundColor,{opacity:s})}}if(x.marks&&x.marks.length>0)for(let o of x.marks){let s=o.borderRadius??4;t.renderer.drawRRect(n,{rect:{x:e.dstRect.x+a+o.x,y:re.y+a+o.y,width:o.width,height:o.height},rx:s,ry:s},o.background,{opacity:e.opacity??1})}let D=de(e.color??"white"),Q=de(e.highlightColor??"yellow"),xe=new Float32Array(x.glyphs.length),We=0,Ee=0;if(x.glyphs.length>0){let o=x.glyphs.filter(s=>!s.isSpace);o.length>0&&(We=(o[0].x+o[o.length-1].x)/2,Ee=(o[0].y+o[o.length-1].y)/2)}let Xe={charsCount:x.charsCount,wordsCount:x.wordsCount,linesCount:x.linesCount,layoutCenter:{x:We,y:Ee}};if(e.animators&&e.animators.length>0){for(let o of e.animators)if("selectors"in o&&Array.isArray(o.selectors)){let s=o;if(s.props?.tracking!==void 0&&s.props.tracking!==0){let y=s.props.tracking,S=new Map;for(let I=0;I<x.glyphs.length;I++){let M=x.glyphs[I].lineIndex??0,g=S.get(M);g||(g=[],S.set(M,g)),g.push(I)}for(let I of S.values()){let T=new Map;for(let F of I){let O=x.glyphs[F].charIndex,$=T.get(O);$?$.push(F):T.set(O,[F])}let M=Array.from(T.values()),g=F=>{let O=x.glyphs[F[0]];return O.clusterX??O.x};M.sort((F,O)=>g(F)-g(O));let _=[];for(let F of M){let O=x.glyphs[F[0]],$=kt(s,O,Xe,e.signals,e.frame??0,e.fps??24);_.push($)}let G=0;for(let F=0;F<M.length-1;F++)G+=y*_[F];let p=x.glyphs[I[0]]?.baseRtl??!1,R=h==="start"?p?"right":"left":h==="end"?p?"left":"right":h,N=0;for(let F=0;F<M.length;F++){let O=N;R==="center"?O-=G*.5:R==="right"&&(O-=G);for(let $ of M[F])xe[$]+=O;F<M.length-1&&(N+=y*_[F])}}}}}let ye=new Float32Array(Math.max(1024,me*24)),Ke=(o,s)=>s.cp.glyphId!==void 0&&(s.font??c).fontFamily===o.fontFamily,Qe=new Set,vt=o=>{if(Qe.has(o))return;Qe.add(o);let s=[];for(let y of x.glyphs){let S=y.cp.glyphId;S!==void 0&&(y.font??c)!==o&&Ke(o,y)&&!o.glyphs?.has(S)&&s.push(S)}s.length>0&&st.ensureGlyphs(o,s)},Pt=(o,s)=>{if((s.font??c)===o)return s.cp;if(Ke(o,s)){let y=o.glyphs?.get(s.cp.glyphId);if(y)return y}return o.codePoints.get(s.cp.codePoint)||s.cp},Se=(o,s,y=0,S=0,I,T)=>{let M=me*24;ye.length<M&&(ye=new Float32Array(M));let g=ye,_=0;vt(o);for(let G=0;G<x.glyphs.length;G++){let p=x.glyphs[G];if(p.isSpace||T&&!T(p))continue;let R=Pt(o,p);if(!R||R.width===0||R.height===0)continue;let N=p.unitIndex,F=b[N]??N,O=e.opacity??1,$=0,J=0,se=0,V=1,Ce=I!==void 0?I:0;if(e.isVideoMode!==!1){let{p_in:W,p_out:E}=je(z,K,ae,ne,F,q,!0),B=_e(W,E,f,ie,l,te,z,K,ae,ne,F,e.opacity??1,!1);if(!B.visible)continue;O=B.opacity,$=B.transX,J=B.transY,se=B.rot,V=B.scale,I===void 0&&(Ce=B.blurAmount)}let Me=1,Ue=1,tt,De=0,nt=0,it=0,ot=0,Ne=0,Le=0,Be,rt=1;if(e.animators&&e.animators.length>0){let W=At(e.animators,p,Xe,{transX:$,transY:J,rot:se,scale:V,scaleX:Me,scaleY:Ue,opacity:O,blurAmount:Ce,color:D},!1,e.frame??0,e.fps??24,e.signals);$=W.transX,J=W.transY,se=W.rot,V=W.scale,Me=W.scaleX,Ue=W.scaleY,O=W.opacity,I===void 0&&(Ce=W.blurAmount),W.color&&(tt=W.color),W.lineSpacing!==void 0&&(J+=dt(p.lineIndex,x.linesCount,W.lineSpacing,W.lineAnchor??0)),De=W.transZ??0,nt=W.chromaticShift??0,it=W.dissolveProgress??0,ot=W.vfxParam??0,Ne=W.skewM01??0,Le=W.skewM10??0,Be=W.anchorConfig,rt=W.fillOpacity??1}$+=xe[G];let ze=p.x;if(e.marquee){let W=(e.frame??0)/(e.fps??24),E=x.glyphs.length>0?x.glyphs[x.glyphs.length-1].x+r:e.dstRect.width;ze=mt(p.x,e.dstRect.width,E,e.marquee,W)}let Rt=e.highlightWordIndex!==void 0&&p.wordIndex===e.highlightWordIndex,Ft=p.fill?de(p.fill):void 0,Ye=tt??s??(Rt?Q:Ft??D);(W=>{let E=_*24,B=p.fontScale??r/o.unitsPerEm,Ie=R.width*B/2*Me,Ae=R.height*B/2*Ue;if(De!==0){let ce=Math.max(100,1200-De),ge=ce>1?1200/ce:1;Ie*=ge,Ae*=ge}let ke=se+(p.pathTangentAngleRad??0),pe,Te;if(p.pathTangentAngleRad!==void 0){let ve=R.bearingX*B+Ie,ce=-R.bearingY*B+Ae,ge=Math.cos(ke),Pe=Math.sin(ke),Ve=ve*ge-ce*Pe,qe=ve*Pe+ce*ge;pe=ze+Ve+e.dstRect.x+a+y+W,Te=p.y+qe+re.y+a+S}else pe=ze+R.bearingX*B+Ie+e.dstRect.x+a+y+W,Te=p.y-R.bearingY*B+Ae+re.y+a+S;if(Be){let ve={width:R.width*B,height:R.height*B,ascender:(o.ascender??800)*B,descender:(o.descender??-200)*B},ce=ut(ve,Be),ge=Math.cos(ke),Pe=Math.sin(ke),Ve=ce.px*(1-ge*V)+ce.py*(Pe*V),qe=-ce.px*(Pe*V)+ce.py*(1-ge*V);pe+=Ve,Te+=qe}(Ne!==0||Le!==0)&&(pe+=Ae*Ne,Te+=Ie*Le),g[E+0]=Ie,g[E+1]=Ae,g[E+2]=pe,g[E+3]=Te,g[E+4]=R.width,g[E+5]=R.height,g[E+6]=R.width/R.bandDimX,g[E+7]=R.height/R.bandDimY,g[E+8]=R.bandCount-1,g[E+9]=R.bandCount-1,g[E+10]=R.bandsTexCoordX,g[E+11]=R.bandsTexCoordY,g[E+12]=ke,g[E+13]=V,g[E+14]=$,g[E+15]=J,g[E+16]=Ye.r,g[E+17]=Ye.g,g[E+18]=Ye.b;let Wt=p.opacity??1;g[E+19]=Ye.a*O*rt*Wt,g[E+20]=Ce,g[E+21]=nt,g[E+22]=it,g[E+23]=ot,_++})(0)}return{data:g,visibleCount:_}};if(e.shadows&&e.shadows.length>0)for(let o of e.shadows){let s=de(o.color),y=o.offset?.x??0,S=o.offset?.y??0,I=o.blurRadius??0,{data:T,visibleCount:M}=Se(Z,s,y,S,I);if(M>0){let g=T.subarray(0,M*24),G=e.fontStyle==="italic"?.21:0;t.renderer.slugPipeline.draw(n,t.renderer.getTransformStack(),Z,g,M,o.color,t.renderer.getSurfaceWidth(),t.renderer.getSurfaceHeight(),{opacity:e.opacity??1,transform:e.matrix,customParam:G})}}let Oe=e.animators?.find(o=>"props"in o&&o.props?.longShadow&&(o.props?.longShadow?.length??0)>0);if(Oe&&"props"in Oe){let o=Oe,s=o.props?.longShadow;if(s){let y=o.props?.spring,S=s.length,I=s.angle;if(y){let G=(e.frame??0)/(e.fps??30),p=$e(G,y.stiffness,y.damping,y.mass,y.initialVelocity);S=Math.max(0,s.length*p),I=s.angle+(1-Math.min(1,p))*25}else{let p=1-(1-Math.min(1,(e.frame??0)/36))**3;S=s.length*p}let T=I*Math.PI/180,M=Math.max(4,Math.min(64,s.steps??16)),g=S/M,_=de(s.color??"#000000");for(let G=1;G<=M;G++){let p=G*g,R=p*Math.cos(T),N=p*Math.sin(T),F=G/M,O=(s.startOpacity??.8)*(1-F)+(s.endOpacity??0)*F,$={..._,a:_.a*O},{data:J,visibleCount:se}=Se(c,$,R,N,0);if(se>0){let V=J.subarray(0,se*24),Me=e.fontStyle==="italic"?.21:0;t.renderer.slugPipeline.draw(n,t.renderer.getTransformStack(),Z,V,se,s.color??"black",t.renderer.getSurfaceWidth(),t.renderer.getSurfaceHeight(),{opacity:(e.opacity??1)*O,transform:e.matrix,customParam:Me})}}}}if(d&&u){let o=de(e.stroke),{data:s,visibleCount:y}=Se(u,o);if(y>0){let S=s.subarray(0,y*24),T=e.fontStyle==="italic"?.21:0;t.renderer.slugPipeline.draw(n,t.renderer.getTransformStack(),u,S,y,e.stroke??"#000000",t.renderer.getSurfaceWidth(),t.renderer.getSurfaceHeight(),{opacity:e.opacity??1,transform:e.matrix,customParam:T})}}let He=new Set,Je=!1;for(let o of x.glyphs)o.font&&o.font!==Z&&(He.add(o.font),Je=!0);let et=e.fontStyle==="italic"?.21:0;if(Je){He.add(Z);for(let o of He){if(t.device&&!o.curvesTex&&L.ensureTextures(t.device,o),!o.curvesTex)continue;let{data:s,visibleCount:y}=Se(o,void 0,0,0,void 0,S=>(S.font??Z)===o);if(y>0){let S=s.subarray(0,y*24);t.renderer.slugPipeline.draw(n,t.renderer.getTransformStack(),o,S,y,e.color??"white",t.renderer.getSurfaceWidth(),t.renderer.getSurfaceHeight(),{opacity:e.opacity??1,transform:e.matrix,customParam:et})}}}else{let{data:o,visibleCount:s}=Se(Z);if(s>0){let y=o.subarray(0,s*24);t.renderer.slugPipeline.draw(n,t.renderer.getTransformStack(),Z,y,s,e.color??"white",t.renderer.getSurfaceWidth(),t.renderer.getSurfaceHeight(),{opacity:e.opacity??1,transform:e.matrix,customParam:et})}}for(let o of x.emojis){let s=e.animation?.applyBy==="line"?0:Math.floor(o.x/(r+m)),y=b[s%q]??0,S=e.opacity??1,I=0,T=0,M=0,g=1;if(e.isVideoMode!==!1){let{p_in:J,p_out:se}=je(z,K,ae,ne,y,q,!0),V=_e(J,se,f,ie,l,te,z,K,ae,ne,y,e.opacity??1,!0);if(!V.visible)continue;S=V.opacity,I=V.transX,T=V.transY,M=V.rot,g=V.scale}if(e.animators&&e.animators.length>0){let J=At(e.animators,{charIndex:s,wordIndex:0,lineIndex:o.lineIndex},{charsCount:x.charsCount,wordsCount:x.wordsCount,linesCount:x.linesCount},{transX:I,transY:T,rot:M,scale:g,scaleX:1,scaleY:1,opacity:S,blurAmount:0},!0);I=J.transX,T=J.transY,M=J.rot,g=J.scale,S=J.opacity}let _=jt(t.device,o.char,o.size),G=o.size*1.15,p=(G-o.size)/2,R={x:e.dstRect.x+o.x+a-p,y:re.y+o.y+a-p,width:G,height:G},N=new DOMMatrix,F=R.x+G/2,O=R.y+G/2;N=N.translate(F,O),(I!==0||T!==0)&&(N=N.translate(I,T)),M!==0&&(N=N.rotate(M)),g!==1&&(N=N.scale(g)),N=N.translate(-F,-O);let $=e.matrix?e.matrix.multiply(N):N;t.renderer.drawTextureRegion(n,_,{x:0,y:0,width:_.width,height:_.height},R,{opacity:S,transform:$})}if(e.typewriter?.cursor?.enabled&&w&&w.isCursorVisible&&(!e.typewriter.cursor.hideOnComplete||w.visibleChars<e.text.length)){let o=e.typewriter.cursor,s=o.color??e.color??"white",y=o.width??2.5,S=o.spacing??3,I=e.dstRect.x+a,T=re.y+a;if(x.glyphs.length>0){let M=x.glyphs[x.glyphs.length-1],g=r/c.unitsPerEm,_=M.clusterAdvance??(M.cp?.advanceWidth||0)*g,G=M.clusterX??M.x,p=o.style==="underscore"||o.style==="block"?r*.5:y;I=e.dstRect.x+a+(M.rtl?G-S-p:G+_+S),T=M.y+re.y+a}o.style==="underscore"?t.renderer.drawRect(n,{x:I,y:T,width:r*.5,height:y},s,0,{opacity:e.opacity??1}):o.style==="block"?t.renderer.drawRect(n,{x:I,y:T-r*.8,width:r*.5,height:r},s,0,{opacity:e.opacity??1}):t.renderer.drawRect(n,{x:I,y:T-r*.8,width:y,height:r},s,0,{opacity:e.opacity??1})}}we();function Tt(t){let e=t.trim().replace(",",".").split(":");if(e.length<2||e.length>3)throw new Error(`Invalid timestamp: ${t}`);if(e.length===2){let[d,u]=e;return parseInt(d,10)*60+parseFloat(u)}let[i,r,c]=e;return parseInt(i,10)*3600+parseInt(r,10)*60+parseFloat(c)}function Ut(t){let n=t.replace(/\r\n/g,`
2
- `).split(`
3
- `),e=[];for(let i=0;i<n.length;i++){let r=n[i],c=n[i+1];if(r?.match(/([0-9]+)/)&&c?.includes(" --> ")){let d=c.split(" --> "),u=Tt(d[0]),m=Tt(d[1]);e.push({text:"",startMs:u*1e3,endMs:m*1e3,confidence:1,timestampMs:(u+m)/2*1e3})}else r?.includes(" --> ")||(r?.trim()===""?e.length>0&&(e[e.length-1].text=e[e.length-1].text.trim()):e.length>0&&(e[e.length-1].text+=r+`
4
- `))}return{captions:e.map(i=>({...i,text:i.text.trimEnd()}))}}function Dt(t,n,e=!0){if(!t||t.length===0)return null;let i=t.find(r=>n>=r.startMs&&n<r.endMs);return i||(!e&&t.length>0?t[0]:null)}function un(t,n,e){if(!t||t.length===0)return 160;let i=n.fontSize??48,r=n.letterSpacing??0,c=n.lineHeight!==void 0&&n.lineHeight<10?n.lineHeight*i:n.lineHeight??i*1.2,d=n.padding??(n.background?12:0),u=e?Math.max(10,e-d*2):void 0,m=n.fontFamily??"Inter";L.isFailed(m)&&(m="Inter");let C=L.getFont(m,n.fontWeight,null,void 0,i),h=0;for(let k of t){if(!k.text)continue;let a=0;if(C&&C.codePoints){let w=be.measure(k.text,C,i,r,c,u);a=Math.ceil(w.height)}else{let w=k.text.split(`
5
- `),v=0;for(let X of w)if(u){let j=X.length*i*.55+r*X.length,P=Math.max(1,Math.ceil(j/u));v+=P}else v+=1;a=Math.ceil(v*c)}let A=a+d*2;A>h&&(h=A)}return Math.max(20,h||160)}var Ze=class{cache=new Map;resolvedCache=new Map;getCached(n){return this.resolvedCache.get(n)}setCached(n,e){this.resolvedCache.set(n,e)}clear(){this.cache.clear(),this.resolvedCache.clear()}async load(n){if(!n)return[];let e=this.resolvedCache.get(n);if(e)return e;let i=this.cache.get(n);return i||(i=(async()=>{let r="";if(n.startsWith("data:")){let d=n.indexOf(",");if(d!==-1){let u=n.substring(0,d),m=n.substring(d+1);r=u.includes(";base64")?typeof Buffer<"u"?Buffer.from(m,"base64").toString("utf-8"):new TextDecoder().decode(Uint8Array.from(atob(m),h=>h.charCodeAt(0))):decodeURIComponent(m)}}else if(n.includes("-->"))r=n;else if(n.startsWith("http://")||n.startsWith("https://")){let d=await fetch(n);if(!d.ok)throw new Error(`Failed to fetch SRT: ${n}`);r=await d.text()}else{let d=n;if(d.startsWith("file://"))try{d=new URL(d).pathname}catch{d=d.replace(/^file:\/\//,"")}if(typeof Re<"u"&&Re.versions?.node)try{r=await(await import("./shims/fs-promises.mjs")).readFile(d,"utf-8")}catch{let u=await fetch(n);if(!u.ok)throw new Error(`Failed to fetch SRT: ${n}`);r=await u.text()}else{let u=await fetch(n);if(!u.ok)throw new Error(`Failed to fetch SRT: ${n}`);r=await u.text()}}let c=Ut(r).captions;return this.resolvedCache.set(n,c),c})(),this.cache.set(n,i),i.catch(()=>{this.cache.delete(n),this.resolvedCache.delete(n)})),i}},Nt=new Ze;async function dn(t,n,e){if(!e.src)return;let i=await Nt.load(e.src);if(!i||i.length===0)return;let r=e.frame/e.fps*1e3,c=Dt(i,r,e.isVideoMode!==!1);if(!c)return;let d=c.text,u=e.dstRect.width,m=e.padding??(e.textBackgroundColor?12:0),C=Math.max(10,u-m*2),h=e.maxWidth!==void 0?Math.min(e.maxWidth,C):C,k=e.fontSize??48,a=e.fontFamily??"Inter";if(L.isFailed(a)&&(a="Inter"),L.isFailed(a))return;let A=e.letterSpacing??0,w=L.getFont(a,e.fontWeight,t.device,void 0,k);if(!w||!w.curvesTex){let z=Ge(a);L.preloadSlugFont(t.device,a,z,void 0,e.renderId).catch(K=>{console.warn(`[drawCaptionNode] Failed to load Slug font for ${a}:`,K)});return}let v=e.lineHeight!==void 0&&e.lineHeight<10?e.lineHeight*k:e.lineHeight??k*1.2,X=be.measure(d,w,k,A,v,h,void 0,e.direction),j=X.width,P=X.height,H=j+m*2,ee=P+m*2,oe=e.align??"center",x=X.layout?.glyphs[0]?.baseRtl??e.direction==="rtl",fe=oe==="start"?x?"right":"left":oe==="end"?x?"left":"right":oe,le=0;fe==="center"?le=Math.max(0,(u-H)/2):fe==="right"&&(le=Math.max(0,u-H));let re=e.dstRect.height,U=e.verticalAlign??e.textAlignVertical??"bottom",ue=0;U==="top"?ue=0:U==="middle"?ue=(re-ee)/2:ue=re-ee;let he={x:e.dstRect.x+le,y:e.dstRect.y+ue,width:H,height:ee},Z=e.opacity??1;if(e.textBackgroundColor){let z=e.strokeRadius??e.borderRadius??8;t.renderer.drawRRect(n,{rect:he,rx:z,ry:z},e.textBackgroundColor,{opacity:Z})}let me={x:he.x+m,y:he.y+m,width:j,height:P};pt(t,n,{...e,text:d,dstRect:me,width:h,height:P,align:oe,opacity:Z,isCaption:!0,animation:void 0,textBackgroundColor:void 0})}export{Ct as a,zt as b,Mt as c,pt as d,un as e,Nt as f,dn as g};
@@ -1,483 +0,0 @@
1
- import{a as et,b as rt,c as yt}from"./chunk-JAAFSVAG.mjs";import{c as mt,d as pt,e as A}from"./chunk-CSLSWUUT.mjs";import{b as tt}from"./chunk-FRJPXWAG.mjs";import{e as ft}from"./chunk-GXFYRMJZ.mjs";import{B as gt,c as dt,e as xt,y as U,z as C}from"./chunk-64L4GUOF.mjs";import{a as D}from"./chunk-354GX6IB.mjs";import{g as b}from"./chunk-Y4NIR77Z.mjs";b();function Nt(s,t=180,e=12,r=1,i=0){if(s<=0)return 0;let a=Math.sqrt(Math.max(1e-4,t)/Math.max(1e-4,r)),o=e/(2*Math.sqrt(Math.max(1e-4,t*r)));if(o<1){let l=a*Math.sqrt(1-o*o),n=Math.exp(-o*a*s),u=-1,c=(i-o*a*-1)/Math.max(1e-6,l),m=n*(u*Math.cos(l*s)+c*Math.sin(l*s));return Math.min(2,Math.max(-1,1+m))}else if(Math.abs(o-1)<1e-4){let l=Math.exp(-a*s);return 1+(-1+(i-a)*s)*l}else{let l=-a*(o-Math.sqrt(o*o-1)),n=-a*(o+Math.sqrt(o*o-1)),u=(i+n)/Math.max(1e-6,l-n),c=-1-u;return 1+(u*Math.exp(l*s)+c*Math.exp(n*s))}}function jt(s,t=0){if(s===0)return[1,0,0,1];let e=s*Math.PI/180,r=t*Math.PI/180,i=Math.cos(r),a=Math.sin(r),o=Math.tan(e),l=1-o*i*a,n=o*i*i,u=-o*a*a,c=1+o*a*i;return[l,n,u,c]}function Ht(s,t){let e=t.anchorX,r=t.anchorY;switch(t.preset){case"center":e=.5,r=.5;break;case"baseline":e=.5,r=s.height>0?s.ascender/s.height:.8;break;case"bottom_left":e=0,r=1;break;case"bottom_center":e=.5,r=1;break;case"bottom_right":e=1,r=1;break;case"top_left":e=0,r=0;break;case"top_center":e=.5,r=0;break;case"top_right":e=1,r=0;break;default:e=.5,r=.5;break}let i=(e-.5)*s.width+t.offsetX,a=(r-.5)*s.height+t.offsetY;return{px:i,py:a}}function Yt(s,t,e,r=0){if(e===0||t<=1)return 0;let i=r*(t-1);return(s-i)*e}function Xt(s,t){try{let e={textIndex:t.charIndex,textTotal:Math.max(1,t.totalChars),wordIndex:t.wordIndex,wordTotal:Math.max(1,t.totalWords),lineIndex:t.lineIndex,lineTotal:Math.max(1,t.totalLines),time:t.time,frame:t.frame,fps:t.fps,sin:Math.sin,cos:Math.cos,tan:Math.tan,exp:Math.exp,log:Math.log,abs:Math.abs,min:Math.min,max:Math.max,sqrt:Math.sqrt,pow:Math.pow,floor:Math.floor,ceil:Math.ceil,round:Math.round,PI:Math.PI,clamp:(l,n,u)=>Math.max(n,Math.min(u,l)),noise:l=>{let n=Math.sin(l*12.9898+t.frame*.1)*43758.5453;return(n-Math.floor(n))*2-1},signals:t.signals??{}},r=Object.keys(e),i=Object.values(e),a=new Function(...r,`return (${s});`),o=Number(a(...i));return Number.isFinite(o)?Math.max(-1,Math.min(1,o)):0}catch{return 0}}function Qt(s,t,e){let r=Math.max(1,t),i=r>1?s/(r-1):0,a=e.totalAngle*Math.PI/180,o=i*a,l=0,n=0,u=0,c=0,m=0,h=0,d=1;switch(e.mode){case"cylinder":{let y=e.totalAngle<360?(i-.5)*a:o;e.axis==="y"?(l=e.radius*Math.sin(y),u=e.radius*Math.cos(y)-e.radius,m=y*180/Math.PI):e.axis==="x"?(n=e.radius*Math.sin(y),u=e.radius*Math.cos(y)-e.radius,c=y*180/Math.PI):(l=e.radius*Math.sin(y),n=e.radius*Math.cos(y),h=y*180/Math.PI);let g=Math.cos(y);d=Math.max(.25,(g+1)*.5);break}case"vortex":{let g=-Math.PI/2+o,P=e.radius*(1-i*.35);l=P*Math.cos(g),n=P*Math.sin(g),u=-s*e.pitch||0;let v=-.35*e.radius/(a||1),M=v*Math.cos(g)-P*Math.sin(g),G=v*Math.sin(g)+P*Math.cos(g);h=Math.atan2(G,M)*180/Math.PI,d=Math.max(.65,1-i*.35);break}case"helix":{if(e.axis==="x"){let y=e.pitch>10?e.pitch:28;l=(s-(r-1)/2)*y,n=e.radius*Math.sin(o),u=e.radius*Math.cos(o)-e.radius,c=Math.sin(o)*22,d=.75+.25*((Math.cos(o)+1)*.5)}else{let y=(i-.5)*a;l=e.radius*Math.sin(y),n=(s-(r-1)/2)*e.pitch,u=e.radius*Math.cos(y)-e.radius,m=y*180/Math.PI;let g=Math.cos(y);d=Math.max(.65,(g+1)*.5)}break}default:{u=0;break}}let p=Math.max(100,e.perspective??1200),f=p-u,x=f>1?p/f:1;return{x:l*x,y:n*x,z:u,rotX:c,rotY:m,rotZ:h,scaleMult:Math.max(.1,x),depthOpacity:d}}function Kt(s,t,e,r,i){let o=(t>0?Math.max(t,e):e)+r.repeatGap;if(o<=0)return s;let l=r.velocity*i;if(r.snap?.enabled){let n=r.snap.stopIndex??0,u=r.snap.granularity==="character"?40:120,c=n*u,m=Math.min(1,i*1.5);l=l*(1-m)+c*m}if((r.direction==="right"||r.direction==="down")&&(l=-l),r.loop){let n=(s-l)%o;return n<-e?n+o:n}return s-l}function Zt(s,t,e,r,i,a){let o=Math.max(1,t),l=o>1?s/(o-1):.5,n=Math.max(20,e.minFreqHz),u=Math.max(n+100,e.maxFreqHz),c=n*(u/n)**l,m=0,h=ft.getChannelSamples(e.signalChannel,"primary");if(h&&h.length>0){let p=a>0?a:24,f=Math.max(0,Math.min(h.length-1,Math.round(i/p*24)));m=Number(h[f])||0}else if(r){let p=r[e.signalChannel];if(typeof p=="number")m=p;else if(typeof p=="function")m=Number(p(i,a,c))||0;else if(typeof p=="object"&&p!==null){let f=p;if(typeof f.get=="function")m=Number(f.get({frame:i,fps:a,freq:c}))||0;else if(Array.isArray(f.samples)||ArrayBuffer.isView(f.samples)){let x=f.samples,y=Math.floor(l*(x.length-1));m=Number(x[y])||0}}}let d=Math.max(0,Math.min(1,m));return e.minScale+d*(e.maxScale-e.minScale)}b();function ee(s,t,e,r,i,a=0,o=0){let l=t+r,n=e+r;if(n<=l)return 0;let u=(s-l)/(n-l),c=0;switch(i){case"square":c=u>=0&&u<=1?1:0;break;case"ramp_up":c=Math.max(0,Math.min(1,u));break;case"ramp_down":c=1-Math.max(0,Math.min(1,u));break;case"triangle":{u<0||u>1?c=0:u<.5?c=u*2:c=(1-u)*2;break}case"round":{u<0||u>1?c=0:c=.5-.5*Math.cos(u*2*Math.PI);break}case"smooth":{u<=0?c=0:u>=1?c=1:c=u*u*(3-2*u);break}}if(c>0&&c<1){if(a!==0&&c>.5){let m=(c-.5)*2,h=a>0?1+a*3:1/(1-a*3);c=.5+.5*m**h}if(o!==0&&c<=.5){let m=c*2,h=o>0?1+o*3:1/(1-o*3);c=.5*m**h}}return Math.max(0,Math.min(1,c))}function re(s,t,e,r){let i=(t*(1-r)+r)*12.9898+e+s*78.233,a=Math.sin(i)*43758.5453;return(a-Math.floor(a))*2-1}function ie(s,t){let e=t,r=()=>(e=(e*9301+49297)%233280,e/233280),i=Array.from({length:s},(a,o)=>o);for(let a=i.length-1;a>0;a--){let o=Math.floor(r()*(a+1)),l=i[a];i[a]=i[o],i[o]=l}return i}function ne(s,t,e){switch(e){case"add":return Math.max(0,Math.min(1,s+t));case"subtract":return Math.max(0,Math.min(1,s-t));case"intersect":return s*t;case"min":return Math.min(s,t);case"max":return Math.max(s,t);case"difference":return Math.abs(s-t)}}b();var Pt={ascii:"!@#$%^&*()_+{}[]:;<>,.?",alphanumeric:"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",matrix:"010101<>[]{}+=*~#%&!?/\\:;|X0123456789",binary:"01",hex:"0123456789ABCDEF"};function kt(s,t){return s==="custom"&&t&&t.length>0?t:Pt[s]??Pt.alphanumeric}function se(s,t,e,r,i={mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7},a={enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25},o=2,l="character",n){if(n===void 0&&t<e)return{visibleChars:0,currentDisplayString:"",isCursorVisible:!1};let u=n!==void 0?Math.max(0,Math.min(1,n)):Math.min(1,(t-e)/Math.max(1,r)),c=n!==void 0?u*r:t-e,m=s.length,h=Math.floor(u*m);if(l==="word"){let f=s.split(/(\s+)/),x=[];f.forEach((g,P)=>{g.trim().length>0&&x.push(P)});let y=Math.min(x.length,Math.floor(u*(x.length+1)));if(y<=0)h=0;else{let g=x[Math.min(x.length-1,y-1)];h=f.slice(0,g+1).join("").length}}else if(l==="line"){let f=s.split(`
2
- `),x=Math.min(f.length,Math.floor(u*(f.length+1)));h=f.slice(0,x).join(`
3
- `).length}else if(i.mode==="human"&&u<1){let f=0,x=0,y=r/Math.max(1,m);for(let g=0;g<m;g++){let P=s[g],v=1,M=i.commaPauseMultiplier??3,G=i.sentencePauseMultiplier??5.5,B=i.paragraphPauseMultiplier??7,R=i.jitter??.35;P===","||P===";"?v=M:P==="."||P==="!"||P==="?"?v=G:P===`
4
- `&&(v=B);let L=1+Math.sin(g*17.3+42)*.5*R,w=y*v*L;if(x+=w,x<=c)f=g+1;else break}h=Math.min(m,f)}let d=s.slice(0,h);if(a.enabled&&h<m&&h>0){let f=kt(a.charset,a.customCharset),x=Math.min(h,Math.max(1,a.scrambleFramesPerChar>4?3:2)),y="";for(let g=0;g<x;g++){let P=Math.floor(Math.abs(Math.sin(t*7+g*13))*f.length)%f.length;y+=f[P]}d=d.slice(0,d.length-x)+y}let p=!0;if(o>0){let f=Math.max(1,Math.round(30/(2*o)));p=Math.floor(c/f)%2===0}return{visibleChars:h,currentDisplayString:d,isCursorVisible:p}}b();b();var bt=`
5
- struct CompositeUniforms {
6
- blendMode : u32,
7
- padding1 : u32,
8
- padding2 : u32,
9
- padding3 : u32,
10
- };
11
-
12
- @group(0) @binding(0) var<uniform> u : CompositeUniforms;
13
- @group(1) @binding(0) var baseTex : texture_2d<f32>;
14
- @group(1) @binding(1) var overlayTex : texture_2d<f32>;
15
- @group(1) @binding(2) var samp : sampler;
16
-
17
- struct VSOut {
18
- @builtin(position) pos : vec4<f32>,
19
- @location(0) uv : vec2<f32>,
20
- };
21
-
22
- @vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {
23
- var pos = array<vec2<f32>, 4>(
24
- vec2<f32>(-1.0, 1.0),
25
- vec2<f32>(1.0, 1.0),
26
- vec2<f32>(-1.0, -1.0),
27
- vec2<f32>(1.0, -1.0)
28
- );
29
- var uv = array<vec2<f32>, 4>(
30
- vec2<f32>(0.0, 0.0),
31
- vec2<f32>(1.0, 0.0),
32
- vec2<f32>(0.0, 1.0),
33
- vec2<f32>(1.0, 1.0)
34
- );
35
- return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);
36
- }
37
-
38
- fn lum(c: vec3<f32>) -> f32 {
39
- return 0.3 * c.r + 0.59 * c.g + 0.11 * c.b;
40
- }
41
-
42
- fn clip_color(c: vec3<f32>) -> vec3<f32> {
43
- let l = lum(c);
44
- let n = min(min(c.r, c.g), c.b);
45
- let x = max(max(c.r, c.g), c.b);
46
- var res = c;
47
- if (n < 0.0) {
48
- res = l + (((res - l) * l) / (l - n));
49
- }
50
- if (x > 1.0) {
51
- res = l + (((res - l) * (1.0 - l)) / (x - l));
52
- }
53
- return res;
54
- }
55
-
56
- fn set_lum(c: vec3<f32>, l: f32) -> vec3<f32> {
57
- let diff = l - lum(c);
58
- return clip_color(c + vec3<f32>(diff));
59
- }
60
-
61
- fn sat(c: vec3<f32>) -> f32 {
62
- return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b);
63
- }
64
-
65
- fn set_sat(c: vec3<f32>, s: f32) -> vec3<f32> {
66
- let c_min = min(min(c.r, c.g), c.b);
67
- let c_max = max(max(c.r, c.g), c.b);
68
- if (c_max <= c_min) {
69
- return vec3<f32>(0.0);
70
- }
71
- return (c - vec3<f32>(c_min)) * s / (c_max - c_min);
72
- }
73
-
74
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
75
- let d = textureSample(baseTex, samp, in.uv);
76
- let s = textureSample(overlayTex, samp, in.uv);
77
- let sa = s.a;
78
- let da = d.a;
79
-
80
- switch (u.blendMode) {
81
- case 16u: { return d * sa; } // mask-in / destination-in
82
- case 17u: { return d * (1.0 - sa); } // mask-out / destination-out
83
- case 18u: { return s * da; } // source-in
84
- case 19u: { return s * (1.0 - da); } // source-out
85
- case 20u: { return s * da + d * (1.0 - sa); } // source-atop
86
- case 21u: { return d + s * (1.0 - da); } // destination-over
87
- case 22u: { return d * sa + s * (1.0 - da); } // destination-atop
88
- case 23u: { return s + d; } // lighter
89
- case 24u: { return s; } // copy
90
- case 25u: { return s * (1.0 - da) + d * (1.0 - sa); } // xor
91
- // Luma mattes: the overlay's brightness (premultiplied, so transparent = black) masks the base.
92
- case 26u: { return d * clamp(dot(s.rgb, vec3<f32>(0.2126, 0.7152, 0.0722)), 0.0, 1.0); } // luma-in
93
- case 27u: { return d * (1.0 - clamp(dot(s.rgb, vec3<f32>(0.2126, 0.7152, 0.0722)), 0.0, 1.0)); } // luma-out
94
- default: {
95
- if (sa <= 0.0) { return d; }
96
- if (da <= 0.0) { return s; }
97
- }
98
- }
99
-
100
- let s_rgb = select(s.rgb / sa, vec3<f32>(0.0), sa < 0.001);
101
- let d_rgb = select(d.rgb / da, vec3<f32>(0.0), da < 0.001);
102
-
103
- var b_rgb = s_rgb;
104
-
105
- switch (u.blendMode) {
106
- case 1u: { b_rgb = s_rgb * d_rgb; } // multiply
107
- case 2u: { b_rgb = s_rgb + d_rgb - s_rgb * d_rgb; } // screen
108
- case 3u: { // overlay
109
- b_rgb = select(1.0 - 2.0 * (1.0 - s_rgb) * (1.0 - d_rgb), 2.0 * s_rgb * d_rgb, d_rgb < vec3<f32>(0.5));
110
- }
111
- case 4u: { b_rgb = min(s_rgb, d_rgb); } // darken
112
- case 5u: { b_rgb = max(s_rgb, d_rgb); } // lighten
113
- case 6u: { // color-dodge
114
- b_rgb = select(min(d_rgb / (1.0 - s_rgb), vec3<f32>(1.0)), vec3<f32>(0.0), s_rgb == vec3<f32>(1.0));
115
- }
116
- case 7u: { // color-burn
117
- b_rgb = select(1.0 - min((1.0 - d_rgb) / s_rgb, vec3<f32>(1.0)), vec3<f32>(1.0), s_rgb == vec3<f32>(0.0));
118
- }
119
- case 8u: { // hard-light
120
- b_rgb = select(1.0 - 2.0 * (1.0 - s_rgb) * (1.0 - d_rgb), 2.0 * s_rgb * d_rgb, s_rgb < vec3<f32>(0.5));
121
- }
122
- case 9u: { // soft-light
123
- b_rgb = select(
124
- d_rgb + (2.0 * s_rgb - 1.0) * (sqrt(d_rgb) - d_rgb),
125
- d_rgb - (1.0 - 2.0 * s_rgb) * d_rgb * (1.0 - d_rgb),
126
- s_rgb <= vec3<f32>(0.5)
127
- );
128
- }
129
- case 10u: { b_rgb = abs(d_rgb - s_rgb); } // difference
130
- case 11u: { b_rgb = s_rgb + d_rgb - 2.0 * s_rgb * d_rgb; } // exclusion
131
- case 12u: { b_rgb = set_lum(set_sat(s_rgb, sat(d_rgb)), lum(d_rgb)); } // hue
132
- case 13u: { b_rgb = set_lum(set_sat(d_rgb, sat(s_rgb)), lum(d_rgb)); } // saturation
133
- case 14u: { b_rgb = set_lum(s_rgb, lum(d_rgb)); } // color
134
- case 15u: { b_rgb = set_lum(d_rgb, lum(s_rgb)); } // luminosity
135
- case 16u: { return d * s.a; } // mask-in
136
- case 17u: { return d * (1.0 - s.a); } // mask-out
137
- default: { b_rgb = s_rgb; } // normal
138
- }
139
-
140
- let out_a = sa + da * (1.0 - sa);
141
- let out_rgb = (1.0 - da) * s.rgb + (1.0 - sa) * d.rgb + sa * da * b_rgb;
142
-
143
- return vec4<f32>(out_rgb, out_a);
144
- }
145
- `;var _t=`
146
- struct MotionBlur2DUniforms {
147
- vel: vec2<f32>,
148
- _pad: vec2<f32>,
149
- shutterFraction: f32,
150
- samples: f32,
151
- viewportWidth: f32,
152
- viewportHeight: f32,
153
- };
154
-
155
- @group(0) @binding(0) var<uniform> u: MotionBlur2DUniforms;
156
- @group(1) @binding(0) var sourceTexture: texture_2d<f32>;
157
- @group(1) @binding(1) var colorSampler: sampler;
158
-
159
- @vertex
160
- fn vs(@builtin(vertex_index) vertexIndex: u32) -> @builtin(position) vec4<f32> {
161
- var pos = array<vec2<f32>, 3>(
162
- vec2<f32>(-1.0, -3.0),
163
- vec2<f32>( 3.0, 1.0),
164
- vec2<f32>(-1.0, 1.0)
165
- );
166
- return vec4<f32>(pos[vertexIndex], 0.0, 1.0);
167
- }
168
-
169
- @fragment
170
- fn fs(@builtin(position) pos: vec4<f32>) -> @location(0) vec4<f32> {
171
- let uv = pos.xy / vec2<f32>(u.viewportWidth, u.viewportHeight);
172
- let sampleCount = u32(max(u.samples, 1.0));
173
- let velUV = u.vel * u.shutterFraction;
174
- let halfSamples = f32(sampleCount) * 0.5;
175
-
176
- var accum = vec4<f32>(0.0);
177
- var totalWeight = 0.0;
178
-
179
- for (var i = 0u; i < sampleCount; i = i + 1u) {
180
- let t = (f32(i) - halfSamples) / max(halfSamples, 1.0);
181
- let sampleUV = clamp(uv + velUV * t, vec2<f32>(0.0), vec2<f32>(1.0));
182
- let w = exp(-2.5 * t * t);
183
- accum += textureSampleLevel(sourceTexture, colorSampler, sampleUV, 0.0) * w;
184
- totalWeight += w;
185
- }
186
-
187
- return accum / max(totalWeight, 0.0001);
188
- }
189
- `,it=class{textures=[];texturesByKey=new Map;index=0;getTexture(t,e,r,i,a){let o=new Set(Array.isArray(a)?a:a?[a]:[]),l=`${e}x${r}:${i}`,n=this.texturesByKey.get(l);if(n)for(let c=0;c<n.length;c++){let m=n[c];if(!o.has(m)){n.splice(c,1),n.unshift(m);let h=this.textures.indexOf(m);return h>=this.index&&(this.textures.splice(h,1),this.textures.splice(this.index,0,m),this.index++),m}}let u=t.createTexture({size:[e,r],format:i,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});return this.texturesByKey.has(l)||this.texturesByKey.set(l,[]),this.texturesByKey.get(l).unshift(u),this.textures.splice(this.index,0,u),this.index++,u}reset(){this.index=0}destroy(){for(let t of this.textures)t.destroy();this.textures=[],this.texturesByKey.clear(),this.index=0}},Rt={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},E=class{device;compositeUniformLayout;dualTextureLayout;motionBlurUniformLayout;singleTextureLayout;compositePipeline;motionBlurPipeline;compositePool;motionBlurPool;texturePool;compositeUniformBindGroupCache=new C;motionBlurUniformBindGroupCache=new C;compositeData=new Uint32Array(4);motionBlurData=new Float32Array(8);constructor(t,e){this.device=t,this.compositePool=new U(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.motionBlurPool=new U(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.texturePool=new it,this.compositeUniformLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.dualTextureLayout=t.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=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.singleTextureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let r=t.createPipelineLayout({bindGroupLayouts:[this.compositeUniformLayout,this.dualTextureLayout]}),i=t.createShaderModule({label:"composite.wgsl",code:bt});this.compositePipeline=t.createRenderPipeline({label:"CompositePipeline",layout:r,vertex:{module:i,entryPoint:"vs"},fragment:{module:i,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-strip"}});let a=t.createPipelineLayout({bindGroupLayouts:[this.motionBlurUniformLayout,this.singleTextureLayout]}),o=t.createShaderModule({label:"motion-blur-2d.wgsl",code:_t});this.motionBlurPipeline=t.createRenderPipeline({label:"MotionBlurPipeline",layout:a,vertex:{module:o,entryPoint:"vs"},fragment:{module:o,entryPoint:"fs",targets:[{format:e}]},primitive:{topology:"triangle-list"}})}resetPools(){this.compositePool.reset(),this.motionBlurPool.reset(),this.texturePool.reset()}getTexture(t,e,r,i,a){return this.texturePool.getTexture(t,e,r,i,a)}getBuffer(t,e){return this.compositePool.getBuffer(t,e)}composite(t,e,r,i,a,o,l,n){let u=r.getSampler(this.device),c=[i,a];n&&(Array.isArray(n)?c.push(...n):c.push(n));let m=this.texturePool.getTexture(this.device,i.width,i.height,l,c);this.compositeData[0]=Rt[o]??0;let h=this.compositePool.getBuffer(this.device,this.compositeData),d=t.beginRenderPass({colorAttachments:[{view:m.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});d.setPipeline(this.compositePipeline);let p=this.compositeUniformBindGroupCache.getBindGroup(this.device,this.compositeUniformLayout,h);d.setBindGroup(0,p);let f=e.getCompositeBindGroup(this.device,this.dualTextureLayout,i,a,u);return d.setBindGroup(1,f),d.draw(4),d.end(),m}applyMotionBlur(t,e,r,i,a,o,l=180,n=16,u,c){if(Math.abs(a)<.1&&Math.abs(o)<.1||l<=0)return i;let m=r.getSampler(this.device),h=[i];c&&(Array.isArray(c)?h.push(...c):h.push(c));let d=this.texturePool.getTexture(this.device,i.width,i.height,u,h);this.motionBlurData[0]=a/i.width,this.motionBlurData[1]=o/i.height,this.motionBlurData[2]=0,this.motionBlurData[3]=0,this.motionBlurData[4]=l/360,this.motionBlurData[5]=n,this.motionBlurData[6]=i.width,this.motionBlurData[7]=i.height;let p=this.motionBlurPool.getBuffer(this.device,this.motionBlurData),f=t.beginRenderPass({colorAttachments:[{view:d.createView(),loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});f.setPipeline(this.motionBlurPipeline);let x=this.motionBlurUniformBindGroupCache.getBindGroup(this.device,this.motionBlurUniformLayout,p);return f.setBindGroup(0,x),f.setBindGroup(1,e.getBindGroup(this.device,this.singleTextureLayout,i,m)),f.draw(3),f.end(),d}destroy(){this.compositePool.destroy(),this.motionBlurPool.destroy(),this.texturePool.destroy(),this.compositeUniformBindGroupCache.destroy(),this.motionBlurUniformBindGroupCache.destroy()}};b();b();var I=class{cache=new WeakMap;dualCache=new WeakMap;getBindGroup(t,e,r,i){let a=this.cache.get(r);a||(a=new Map,this.cache.set(r,a));let o=a.get(e);return o||(o=t.createBindGroup({layout:e,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i}]}),a.set(e,o)),o}getCompositeBindGroup(t,e,r,i,a){let o=this.dualCache.get(r);o||(o=new WeakMap,this.dualCache.set(r,o));let l=o.get(i);l||(l=new Map,o.set(i,l));let n=l.get(e);return n||(n=t.createBindGroup({layout:e,entries:[{binding:0,resource:r.createView()},{binding:1,resource:i.createView()},{binding:2,resource:a}]}),l.set(e,n)),n}destroy(){this.cache=new WeakMap,this.dualCache=new WeakMap}};b();var V=class{scissorStack=[];stencilStack=[];pushScissor(t,e,r){this.scissorStack.push({rect:t,surfaceWidth:e,surfaceHeight:r})}popScissor(){this.scissorStack.length>0&&this.scissorStack.pop()}saveScissors(){return[...this.scissorStack]}restoreScissors(t){this.scissorStack=[...t]}clearScissors(){this.scissorStack=[]}getCurrentScissor(t,e){let r=this.scissorStack[this.scissorStack.length-1];if(r&&!(t!==void 0&&e!==void 0&&r.surfaceWidth!==void 0&&r.surfaceHeight!==void 0&&r.surfaceWidth!==0&&r.surfaceHeight!==0&&(r.surfaceWidth!==t||r.surfaceHeight!==e)))return r.rect}pushStencilClip(t){this.stencilStack.push(t)}popStencilClip(){this.stencilStack.length>0&&this.stencilStack.pop()}getCurrentStencil(){return this.stencilStack[this.stencilStack.length-1]}applyScissorToPass(t,e,r){let i=this.getCurrentScissor(e,r);if(!i){t.setScissorRect(0,0,Math.max(1,Math.floor(e)),Math.max(1,Math.floor(r)));return}let a=Math.max(0,Math.floor(i.x)),o=Math.max(0,Math.floor(i.y)),l=Math.min(e,Math.ceil(i.x+i.width)),n=Math.min(r,Math.ceil(i.y+i.height)),u=Math.max(0,l-a),c=Math.max(0,n-o);if(!Number.isFinite(a)||!Number.isFinite(o)||!Number.isFinite(u)||!Number.isFinite(c)||u<=0||c<=0)t.setScissorRect(0,0,1,1);else{let m=Math.min(u,Math.max(0,e-a)),h=Math.min(c,Math.max(0,r-o));m<=0||h<=0?t.setScissorRect(0,0,1,1):t.setScissorRect(Math.floor(a),Math.floor(o),Math.floor(m),Math.floor(h))}}destroy(){this.scissorStack=[],this.stencilStack=[]}};b();function vt(s,t,e,r,i=24){let a=[],o=s;for(let l=1;l<=i;l++){let n=l/i,u=1-n,c=u*u,m=c*u,h=n*n,d=h*n,p={x:m*s.x+3*c*n*t.x+3*u*h*e.x+d*r.x,y:m*s.y+3*c*n*t.y+3*u*h*e.y+d*r.y};a.push({p0:o,p1:p}),o=p}return a}function Mt(s,t,e,r=16){let i=[],a=s;for(let o=1;o<=r;o++){let l=o/r,n=1-l,u=n*n,c=l*l,m={x:u*s.x+2*n*l*t.x+c*e.x,y:u*s.y+2*n*l*t.y+c*e.y};i.push({p0:a,p1:m}),a=m}return i}function Lt(s,t,e,r,i,a,o){let l=Math.abs(t),n=Math.abs(e);if(l<1e-9||n<1e-9)return[{p0:s,p1:o}];if(Math.hypot(o.x-s.x,o.y-s.y)<1e-9)return[];let u=r*Math.PI/180,c=Math.cos(u),m=Math.sin(u),h=(s.x-o.x)/2,d=(s.y-o.y)/2,p=c*h+m*d,f=-m*h+c*d,x=p*p/(l*l)+f*f/(n*n);x>1&&(l*=Math.sqrt(x),n*=Math.sqrt(x));let y=l*l*n*n-l*l*f*f-n*n*p*p,g=l*l*f*f+n*n*p*p,P=(i===a?-1:1)*Math.sqrt(Math.max(0,y/g)),v=P*l*f/n,M=-P*n*p/l,G=c*v-m*M+(s.x+o.x)/2,B=m*v+c*M+(s.y+o.y)/2,R=(k,F,O,$)=>Math.atan2(k*$-F*O,k*O+F*$),L=R(1,0,(p-v)/l,(f-M)/n),w=R((p-v)/l,(f-M)/n,(-p-v)/l,(-f-M)/n);!a&&w>0&&(w-=2*Math.PI),a&&w<0&&(w+=2*Math.PI);let J=Math.max(4,Math.ceil(Math.abs(w)/(2*Math.PI)*64)),ut=[],ct=s;for(let k=1;k<=J;k++){let F=L+w*k/J,O=l*Math.cos(F),$=n*Math.sin(F),ht=k===J?o:{x:c*O-m*$+G,y:m*O+c*$+B};ut.push({p0:ct,p1:ht}),ct=ht}return ut}function z(s){let t=[];if(!s||typeof s!="string")return t;let e=[],r=/([a-df-z])|([-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)/gi,i;for(;(i=r.exec(s))!==null;)i[1]?e.push(i[1]):i[2]&&e.push(parseFloat(i[2]));let a=0,o={x:0,y:0},l={x:0,y:0},n=null,u=null;for(;a<e.length;){let c=e[a++];if(typeof c!="string")continue;let m=c,h=m===m.toLowerCase(),d=m.toUpperCase(),p=()=>a<e.length&&typeof e[a]=="number"?e[a++]:0;switch(d){case"M":{let f=!0;for(;a<e.length&&typeof e[a]=="number";){let x=p(),y=p();h&&(x+=o.x,y+=o.y),f?(o={x,y},l={x,y},f=!1):(t.push({p0:o,p1:{x,y}}),o={x,y})}n=null,u=null;break}case"L":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p();h&&(f+=o.x,x+=o.y),t.push({p0:o,p1:{x:f,y:x}}),o={x:f,y:x}}n=null,u=null;break}case"H":{for(;a<e.length&&typeof e[a]=="number";){let f=p();h&&(f+=o.x);let x={x:f,y:o.y};t.push({p0:o,p1:x}),o=x}n=null,u=null;break}case"V":{for(;a<e.length&&typeof e[a]=="number";){let f=p();h&&(f+=o.y);let x={x:o.x,y:f};t.push({p0:o,p1:x}),o=x}n=null,u=null;break}case"C":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p(),y=p(),g=p(),P=p(),v=p();h&&(f+=o.x,x+=o.y,y+=o.x,g+=o.y,P+=o.x,v+=o.y);let M={x:f,y:x},G={x:y,y:g},B={x:P,y:v};t.push(...vt(o,M,G,B)),o=B,n=G}u=null;break}case"S":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p(),y=p(),g=p();h&&(f+=o.x,x+=o.y,y+=o.x,g+=o.y);let P;n?P={x:2*o.x-n.x,y:2*o.y-n.y}:P={x:o.x,y:o.y};let v={x:f,y:x},M={x:y,y:g};t.push(...vt(o,P,v,M)),o=M,n=v}u=null;break}case"Q":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p(),y=p(),g=p();h&&(f+=o.x,x+=o.y,y+=o.x,g+=o.y);let P={x:f,y:x},v={x:y,y:g};t.push(...Mt(o,P,v)),o=v,u=P}n=null;break}case"T":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p();h&&(f+=o.x,x+=o.y);let y;u?y={x:2*o.x-u.x,y:2*o.y-u.y}:y={x:o.x,y:o.y};let g={x:f,y:x};t.push(...Mt(o,y,g)),o=g,u=y}n=null;break}case"A":{for(;a<e.length&&typeof e[a]=="number";){let f=p(),x=p(),y=p(),g=p()!==0,P=p()!==0,v=p(),M=p();h&&(v+=o.x,M+=o.y);let G={x:v,y:M};t.push(...Lt(o,f,x,y,g,P,G)),o=G}n=null,u=null;break}case"Z":{Math.hypot(o.x-l.x,o.y-l.y)>1e-5&&t.push({p0:o,p1:l}),o=l,n=null,u=null;break}default:break}}return t}function W(s,t,e,r=0){if(s.length===0)return[];let i=[],a=0;for(let c of s){let m=Math.hypot(c.p1.x-c.p0.x,c.p1.y-c.p0.y);i.push(m),a+=m}if(a<1e-6)return[];let o=Math.abs(r)>1?r%360/360:r,l=(t+o)%1,n=(e+o)%1;l<0&&(l+=1),n<0&&(n+=1);let u=(c,m)=>{if(c>=m)return[];let h=[],d=0;for(let p=0;p<s.length;p++){let f=s[p],x=i[p],y=d,g=d+x;if(d=g,g<=c||y>=m||x<1e-6)continue;let P=Math.max(0,(c-y)/x),v=Math.min(1,(m-y)/x);if(v>P){let M={x:f.p0.x+(f.p1.x-f.p0.x)*P,y:f.p0.y+(f.p1.y-f.p0.y)*P},G={x:f.p0.x+(f.p1.x-f.p0.x)*v,y:f.p0.y+(f.p1.y-f.p0.y)*v};h.push({p0:M,p1:G})}}return h};if(t===0&&e===1&&r===0)return[...s];if(Math.abs(l-n)<1e-5)return[];if(l<=n)return u(l*a,n*a);{let c=u(l*a,a),m=u(0,n*a);return[...c,...m]}}function nt(s,t,e=0){if(s.length===0||t.length===0)return s;let r=0;for(let d of t)r+=d;if(r<1e-5)return s;let i=0,a=[];for(let d of s){let p=Math.hypot(d.p1.x-d.p0.x,d.p1.y-d.p0.y);a.push(p),i+=p}let o=[],l=(e%r+r)%r,n=0,u=!0,c=l;for(;c>t[n];)c-=t[n],n=(n+1)%t.length,u=!u;let m=t[n]-c,h=0;for(;h<i;){let d=Math.min(m,i-h);if(u&&d>1e-4){let p=W(s,h/i,(h+d)/i);o.push(...p)}h+=d,n=(n+1)%t.length,u=!u,m=t[n]}return o}function Gt(s,t,e=0,r=0,i=0,a=0){let o=Math.min(s/2,t/2),l=Math.min(e,o),n=Math.min(r,o),u=Math.min(i,o),c=Math.min(a,o);return l===0&&n===0&&u===0&&c===0?`M 0 0 L ${s} 0 L ${s} ${t} L 0 ${t} Z`:[`M ${l} 0`,`L ${s-n} 0`,n>0?`Q ${s} 0 ${s} ${n}`:`L ${s} 0`,`L ${s} ${t-u}`,u>0?`Q ${s} ${t} ${s-u} ${t}`:`L ${s} ${t}`,`L ${c} ${t}`,c>0?`Q 0 ${t} 0 ${t-c}`:`L 0 ${t}`,`L 0 ${l}`,l>0?`Q 0 0 ${l} 0`:"L 0 0","Z"].join(" ")}function Ft(s,t){let e=Math.min(s,t)/2,r=s/2,i=t/2,a=e*.5522847498;return[`M ${r} ${i-e}`,`C ${r+a} ${i-e} ${r+e} ${i-a} ${r+e} ${i}`,`C ${r+e} ${i+a} ${r+a} ${i+e} ${r} ${i+e}`,`C ${r-a} ${i+e} ${r-e} ${i+a} ${r-e} ${i}`,`C ${r-e} ${i-a} ${r-a} ${i-e} ${r} ${i-e}`,"Z"].join(" ")}function Ot(s,t){let e=s/2,r=t/2,i=e,a=r,o=e*.5522847498,l=r*.5522847498;return[`M ${i} ${a-r}`,`C ${i+o} ${a-r} ${i+e} ${a-l} ${i+e} ${a}`,`C ${i+e} ${a+l} ${i+o} ${a+r} ${i} ${a+r}`,`C ${i-o} ${a+r} ${i-e} ${a+l} ${i-e} ${a}`,`C ${i-e} ${a-l} ${i-o} ${a-r} ${i} ${a-r}`,"Z"].join(" ")}function $t(s,t,e=5){let r=Math.max(3,e),i=Math.min(s,t)/2,a=s/2,o=t/2,l=[];for(let n=0;n<r;n++){let u=-Math.PI/2+n*2*Math.PI/r;l.push({x:a+i*Math.cos(u),y:o+i*Math.sin(u)})}return l.map((n,u)=>`${u===0?"M":"L"} ${n.x} ${n.y}`).join(" ")+" Z"}function At(s,t,e=5,r=.5){let i=Math.max(3,e),a=Math.min(s,t)/2,o=a*Math.max(.01,Math.min(.99,r)),l=s/2,n=t/2,u=[];for(let c=0;c<i*2;c++){let m=-Math.PI/2+c*Math.PI/i,h=c%2===0?a:o;u.push({x:l+h*Math.cos(m),y:n+h*Math.sin(m)})}return u.map((c,m)=>`${m===0?"M":"L"} ${c.x} ${c.y}`).join(" ")+" Z"}function Et(s,t,e=40,r=40,i=20){let a=Math.min(e,t),o=Math.min(r,s),l=Math.min(i,a),n=t/2;return[`M 0 ${n-l/2}`,`L ${s-o} ${n-l/2}`,`L ${s-o} ${n-a/2}`,`L ${s} ${n}`,`L ${s-o} ${n+a/2}`,`L ${s-o} ${n+l/2}`,`L 0 ${n+l/2}`,"Z"].join(" ")}function ot(s){let{shapeType:t,width:e,height:r}=s;switch(t){case"rect":return Gt(e,r,s.cornerRadius??0,s.cornerRadius??0,s.cornerRadius??0,s.cornerRadius??0);case"circle":return Ft(e,r);case"ellipse":return Ot(e,r);case"polygon":return $t(e,r,s.polygonSides??5);case"star":return At(e,r,s.starPoints??5,s.starInnerRadiusRatio??.5);case"arrow":return Et(e,r,s.arrowHeadWidth??40,s.arrowHeadLength??40,s.arrowShaftWidth??20);case"path":return s.path??"";default:return""}}function St(s){if(s.length<3)return[];if(s.length===3)return[s[0],s[1],s[2]];let t=[...s],e=t[t.length-1],r=t[0];if(Math.hypot(e.x-r.x,e.y-r.y)<1e-5&&t.pop(),t.length<3)return[];let i=0;for(let m=0;m<t.length;m++){let h=(m+1)%t.length;i+=t[m].x*t[h].y-t[h].x*t[m].y}i<0&&t.reverse();let a=(m,h,d,p)=>{let f=(d.x-h.x)*(m.y-h.y)-(d.y-h.y)*(m.x-h.x),x=(p.x-d.x)*(m.y-d.y)-(p.y-d.y)*(m.x-d.x),y=(h.x-p.x)*(m.y-p.y)-(h.y-p.y)*(m.x-p.x);return f>=-1e-6&&x>=-1e-6&&y>=-1e-6},o=(m,h,d,p)=>{if((h.x-m.x)*(d.y-m.y)-(h.y-m.y)*(d.x-m.x)<=1e-7)return!1;for(let x of p)if(!(x===m||x===h||x===d)&&a(x,m,h,d))return!1;return!0},l=[],n=[...t],u=0,c=n.length*n.length*2;for(;n.length>3&&u<c;){u++;let m=!1;for(let h=0;h<n.length;h++){let d=n[(h-1+n.length)%n.length],p=n[h],f=n[(h+1)%n.length];if(o(d,p,f,n)){l.push(d,p,f),n.splice(h,1),m=!0;break}}m||(l.push(n[0],n[1],n[2]),n.splice(1,1))}return n.length===3&&l.push(n[0],n[1],n[2]),l}function Ut(s){let{shapeType:t,width:e,height:r}=s;if(t==="rect"){let i=s.cornerRadius??0;if(i<=0)return new Float32Array([0,0,e,0,e,r,0,0,e,r,0,r]);let a=Gt(e,r,i,i,i,i),l=z(a).map(c=>c.p0),n=St(l),u=new Float32Array(n.length*2);for(let c=0;c<n.length;c++)u[c*2]=n[c].x,u[c*2+1]=n[c].y;return u}if(t==="circle"||t==="ellipse"){let i=e/2,a=r/2,o=t==="circle"?Math.min(e,r)/2:e/2,l=t==="circle"?o:r/2,n=48,u=new Float32Array(n*3*2),c=0;for(let m=0;m<n;m++){let h=m*2*Math.PI/n,d=(m+1)*2*Math.PI/n;u[c++]=i,u[c++]=a,u[c++]=i+o*Math.cos(h),u[c++]=a+l*Math.sin(h),u[c++]=i+o*Math.cos(d),u[c++]=a+l*Math.sin(d)}return u}if(t==="polygon"){let i=Math.max(3,s.polygonSides??5),a=Math.min(e,r)/2,o=e/2,l=r/2,n=new Float32Array(i*3*2),u=0;for(let c=0;c<i;c++){let m=-Math.PI/2+c*2*Math.PI/i,h=-Math.PI/2+(c+1)*2*Math.PI/i;n[u++]=o,n[u++]=l,n[u++]=o+a*Math.cos(m),n[u++]=l+a*Math.sin(m),n[u++]=o+a*Math.cos(h),n[u++]=l+a*Math.sin(h)}return n}if(t==="star"){let i=Math.max(3,s.starPoints??5),a=Math.min(e,r)/2,o=a*Math.max(.01,Math.min(.99,s.starInnerRadiusRatio??.5)),l=e/2,n=r/2,u=i*2,c=new Float32Array(u*3*2),m=0;for(let h=0;h<u;h++){let d=-Math.PI/2+h*Math.PI/i,p=-Math.PI/2+(h+1)*Math.PI/i,f=h%2===0?a:o,x=(h+1)%2===0?a:o;c[m++]=l,c[m++]=n,c[m++]=l+f*Math.cos(d),c[m++]=n+f*Math.sin(d),c[m++]=l+x*Math.cos(p),c[m++]=n+x*Math.sin(p)}return c}if(t==="arrow"){let i=Math.min(s.arrowHeadWidth??40,r),a=Math.min(s.arrowHeadLength??40,e),o=Math.min(s.arrowShaftWidth??20,i),l=r/2,n=0,u=e-a,c=e,m=l-o/2,h=l+o/2,d=l-i/2,p=l+i/2;return new Float32Array([n,m,u,m,u,h,n,m,u,h,n,h,u,d,c,l,u,p])}if(t==="path"&&s.path){let i=z(s.path);if(i.length===0)return new Float32Array(0);let a=i.map(n=>n.p0),o=St(a),l=new Float32Array(o.length*2);for(let n=0;n<o.length;n++)l[n*2]=o[n].x,l[n*2+1]=o[n].y;return l}return new Float32Array(0)}b();b();var wt=`
190
- struct Uniforms {
191
- transformCol0 : vec4<f32>,
192
- transformCol1 : vec4<f32>,
193
- transformCol2 : vec4<f32>,
194
- params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = strokeWidth
195
- color : vec4<f32>,
196
- style : vec4<f32>, // x = capType (0 = round, 1 = butt, 2 = square)
197
- p0 : vec2<f32>,
198
- p1 : vec2<f32>,
199
- };
200
-
201
- @group(0) @binding(0) var<uniform> u : Uniforms;
202
-
203
- struct VSOut {
204
- @builtin(position) pos : vec4<f32>,
205
- @location(0) localPos : vec2<f32>,
206
- };
207
-
208
- @vertex fn vs(@location(0) xy : vec2<f32>) -> VSOut {
209
- let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
210
- let p = transform * vec3<f32>(xy, 1.0);
211
-
212
- let surfaceSize = u.params.yz;
213
- let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
214
- let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
215
-
216
- return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
217
- }
218
-
219
- fn sdSegmentWithCap(p: vec2<f32>, a: vec2<f32>, b: vec2<f32>, radius: f32, capType: f32) -> f32 {
220
- let ba = b - a;
221
- let len = length(ba);
222
- if (len < 1e-6) {
223
- return length(p - a) - radius;
224
- }
225
- let dir = ba / len;
226
- let normal = vec2<f32>(-dir.y, dir.x);
227
- let pa = p - a;
228
-
229
- let proj = dot(pa, dir);
230
- let perp = abs(dot(pa, normal));
231
-
232
- if (capType > 0.5 && capType < 1.5) {
233
- // Butt cap: terminates strictly at endpoints a and b
234
- let dx = max(-proj, proj - len);
235
- let dy = perp - radius;
236
- let outside = length(max(vec2<f32>(dx, dy), vec2<f32>(0.0, 0.0)));
237
- let inside = min(max(dx, dy), 0.0);
238
- return outside + inside;
239
- } else if (capType >= 1.5) {
240
- // Square cap: extends past endpoints a and b by radius
241
- let dx = max(-proj - radius, proj - (len + radius));
242
- let dy = perp - radius;
243
- let outside = length(max(vec2<f32>(dx, dy), vec2<f32>(0.0, 0.0)));
244
- let inside = min(max(dx, dy), 0.0);
245
- return outside + inside;
246
- } else {
247
- // Round cap (default)
248
- let h = clamp(proj / len, 0.0, 1.0);
249
- return length(pa - ba * h) - radius;
250
- }
251
- }
252
-
253
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
254
- let radius = u.params.w * 0.5;
255
- let d = sdSegmentWithCap(in.localPos, u.p0, u.p1, radius, u.style.x);
256
-
257
- let fw = max(fwidth(d), 1e-5);
258
- let edgeAlpha = clamp(0.5 - d / fw, 0.0, 1.0);
259
- let alpha = u.color.a * u.params.x * edgeAlpha;
260
- if (alpha <= 0.0) {
261
- discard;
262
- }
263
-
264
- return vec4<f32>(u.color.rgb * alpha, alpha);
265
- }
266
- `;b();var at={color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}};function T(s){return s.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]})}function _(s,t){let{module:e}=t;return s.createRenderPipeline({label:t.label,layout:s.createPipelineLayout({bindGroupLayouts:[t.uniformLayout]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:e,entryPoint:"fs",targets:[{format:t.format,blend:t.blend??at}]},primitive:{topology:t.topology}})}var q=class{device;pipeline;maxPipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new C;scratchData=new Float32Array(28);constructor(t,e){this.device=t,this.uniformPool=new U(4096,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new U(4096,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"path.wgsl",code:wt});this.uniformLayout=T(t),this.pipeline=_(t,{label:"PathPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"}),this.maxPipeline=_(t,{label:"PathPipeline.max",module:r,uniformLayout:this.uniformLayout,format:e,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(t,e,r,i,a,o,l,n){let u=z(r);if(u.length===0||((n?.trimStart!==void 0||n?.trimEnd!==void 0||n?.trimOffset!==void 0)&&(u=W(u,n.trimStart??0,n.trimEnd??1,n.trimOffset??0)),n?.strokeDashArray&&n.strokeDashArray.length>0&&(u=nt(u,n.strokeDashArray,n.strokeDashOffset??0)),u.length===0))return;let c=D(i),m=n?.opacity??1,h=0;n?.strokeLineCap==="butt"?h=1:n?.strokeLineCap==="square"&&(h=2);for(let d of u)this.drawSegment(t,e,d.p0,d.p1,c,a,h,o,l,m,n)}drawSegments(t,e,r,i,a,o,l,n){let u=r;if((n?.trimStart!==void 0||n?.trimEnd!==void 0||n?.trimOffset!==void 0)&&(u=W(u,n.trimStart??0,n.trimEnd??1,n.trimOffset??0)),n?.strokeDashArray&&n.strokeDashArray.length>0&&(u=nt(u,n.strokeDashArray,n.strokeDashOffset??0)),u.length===0)return;let c=D(i),m=n?.opacity??1,h=0;n?.strokeLineCap==="butt"?h=1:n?.strokeLineCap==="square"&&(h=2);for(let d of u)this.drawSegment(t,e,d.p0,d.p1,c,a,h,o,l,m,n)}drawSegment(t,e,r,i,a,o,l,n,u,c,m){let h=this.scratchData;e.packIntoBuffer(h,c,n,u,m?.transform),h[15]=o,h[16]=a.r,h[17]=a.g,h[18]=a.b,h[19]=a.a,h[20]=l,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 d=this.uniformPool.getBuffer(this.device,h),p=i.x-r.x,f=i.y-r.y,x=Math.sqrt(p*p+f*f);if(x<1e-6)return;let y=o*.5+2,g=p/x*y,P=f/x*y,v=-P,M=g,G=new Float32Array([r.x-g-v,r.y-P-M,r.x-g+v,r.y-P+M,i.x+g-v,i.y+P-M,i.x+g+v,i.y+P+M]),B=this.vertexPool.getBuffer(this.device,G),L=m?.blendMode==="max"?this.maxPipeline:this.pipeline;t.setPipeline(L);let w=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,d);t.setBindGroup(0,w),t.setVertexBuffer(0,B),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};b();b();var Ct=`
267
- struct Uniforms {
268
- transformCol0 : vec4<f32>,
269
- transformCol1 : vec4<f32>,
270
- transformCol2 : vec4<f32>,
271
- params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = blurAmount
272
- };
273
-
274
- @group(0) @binding(0) var<uniform> u : Uniforms;
275
- @group(1) @binding(0) var tex : texture_2d<f32>;
276
- @group(1) @binding(1) var samp : sampler;
277
-
278
- struct VSOut {
279
- @builtin(position) pos : vec4<f32>,
280
- @location(0) uv : vec2<f32>,
281
- };
282
-
283
- @vertex fn vs(@location(0) xy : vec2<f32>, @location(1) uv : vec2<f32>) -> VSOut {
284
- let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
285
- let p = transform * vec3<f32>(xy, 1.0);
286
-
287
- let surfaceSize = u.params.yz;
288
- let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
289
- let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
290
-
291
- return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), uv);
292
- }
293
-
294
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
295
- let opacity = u.params.x;
296
- let blurAmount = u.params.w;
297
-
298
- if (blurAmount > 0.01) {
299
- let fdx = dpdx(in.uv);
300
- let fdy = dpdy(in.uv);
301
- let fw = max(max(abs(fdx), abs(fdy)), vec2<f32>(0.000001));
302
- let step = fw * blurAmount * 0.3;
303
-
304
- var color = vec4<f32>(0.0);
305
- var totalWeight = 0.0;
306
- for (var y_offset = -1.0; y_offset <= 1.0; y_offset = y_offset + 1.0) {
307
- for (var x_offset = -1.0; x_offset <= 1.0; x_offset = x_offset + 1.0) {
308
- let offset = vec2<f32>(x_offset, y_offset) * step;
309
- let sampleColor = textureSample(tex, samp, in.uv + offset);
310
- color = color + sampleColor;
311
- totalWeight = totalWeight + 1.0;
312
- }
313
- }
314
- return (color / totalWeight) * opacity;
315
- } else {
316
- let color = textureSample(tex, samp, in.uv);
317
- return color * opacity;
318
- }
319
- }
320
- `;var N=class{buffers=[];index=0;size;usage;constructor(t,e){this.size=t,this.usage=e}getBuffer(t,e){if(this.index>=this.buffers.length){let i=t.createBuffer({size:this.size,usage:this.usage});this.buffers.push(i)}let r=this.buffers[this.index++];return t.queue.writeBuffer(r,0,e),r}reset(){this.index=0}destroy(){for(let t of this.buffers)t.destroy();this.buffers=[]}},j=class{device;pipeline;uniformLayout;textureLayout;uniformPool;vertexPool;uniformBindGroupCache=new C;uniformData=new Float32Array(16);vertexData=new Float32Array(16);constructor(t,e){this.device=t,this.uniformPool=new N(64,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new N(64,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"quad.wgsl",code:Ct});this.uniformLayout=T(t),this.textureLayout=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}}]});let i=t.createPipelineLayout({bindGroupLayouts:[this.uniformLayout,this.textureLayout]});this.pipeline=t.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:e,blend:at}]},primitive:{topology:"triangle-strip"}})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,a,o,l,n,u,c){let m=c?.opacity??1;r.packIntoBuffer(this.uniformData,m,n,u,c?.transform);let h=this.uniformPool.getBuffer(this.device,this.uniformData),d=o.x/i.width,p=o.y/i.height,f=(o.x+o.width)/i.width,x=(o.y+o.height)/i.height;this.vertexData[0]=l.x,this.vertexData[1]=l.y,this.vertexData[2]=d,this.vertexData[3]=p,this.vertexData[4]=l.x+l.width,this.vertexData[5]=l.y,this.vertexData[6]=f,this.vertexData[7]=p,this.vertexData[8]=l.x,this.vertexData[9]=l.y+l.height,this.vertexData[10]=d,this.vertexData[11]=x,this.vertexData[12]=l.x+l.width,this.vertexData[13]=l.y+l.height,this.vertexData[14]=f,this.vertexData[15]=x;let y=this.vertexPool.getBuffer(this.device,this.vertexData),g=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,h),P=e.getBindGroup(this.device,this.textureLayout,i,a);t.setPipeline(this.pipeline),t.setBindGroup(0,g),t.setBindGroup(1,P),t.setVertexBuffer(0,y),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};b();var H=class{samplers=new Map;lru=[];maxCapacity;constructor(t=32){this.maxCapacity=t}getSampler(t,e={}){let r=Math.max(1,Math.min(16,e.maxAnisotropy??4)),i=`${e.magFilter??"linear"}:${e.minFilter??"linear"}:${e.mipmapFilter??"linear"}:${e.addressModeU??"clamp-to-edge"}:${e.addressModeV??"clamp-to-edge"}:${r}`,a=this.samplers.get(i);if(a)this.lru=this.lru.filter(o=>o!==i);else{if(a=t.createSampler({magFilter:e.magFilter??"linear",minFilter:e.minFilter??"linear",mipmapFilter:e.mipmapFilter??"linear",addressModeU:e.addressModeU??"clamp-to-edge",addressModeV:e.addressModeV??"clamp-to-edge",maxAnisotropy:r}),this.samplers.size>=this.maxCapacity){let o=this.lru.pop();o&&this.samplers.delete(o)}this.samplers.set(i,a)}return this.lru.unshift(i),a}destroy(){this.samplers.clear(),this.lru=[]}};b();b();var Y=`
321
- struct GradientUniforms {
322
- info : vec4<f32>, // x = type (0 none, 1 linear, 2 radial, 3 conic), y = stop count
323
- geom : vec4<f32>, // linear: cx, cy, dir.x / len, dir.y / len; radial: cx, cy, rx, ry; conic: cx, cy, from (rad)
324
- offsets : array<vec4<f32>, 2>,
325
- stops : array<vec4<f32>, 8>, // OKLab + alpha
326
- };
327
-
328
- fn gradientOklabToSrgb(lab: vec3<f32>) -> vec3<f32> {
329
- let l = pow(lab.x + 0.3963377774 * lab.y + 0.2158037573 * lab.z, 3.0);
330
- let m = pow(lab.x - 0.1055613458 * lab.y - 0.0638541728 * lab.z, 3.0);
331
- let s = pow(lab.x - 0.0894841775 * lab.y - 1.291485548 * lab.z, 3.0);
332
- let lin = clamp(vec3<f32>(
333
- 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,
334
- -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,
335
- -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s,
336
- ), vec3<f32>(0.0), vec3<f32>(1.0));
337
- let lo = lin * 12.92;
338
- let hi = 1.055 * pow(lin, vec3<f32>(1.0 / 2.4)) - 0.055;
339
- return select(hi, lo, lin <= vec3<f32>(0.0031308));
340
- }
341
-
342
- /// Position along the gradient (0..1, unclamped for linear/radial) at local point p.
343
- fn gradientT(g: GradientUniforms, p: vec2<f32>) -> f32 {
344
- let d = p - g.geom.xy;
345
- let kind = g.info.x;
346
- if (kind < 1.5) {
347
- return dot(d, g.geom.zw) + 0.5;
348
- }
349
- if (kind < 2.5) {
350
- return length(d / max(g.geom.zw, vec2<f32>(1e-4)));
351
- }
352
- let a = atan2(d.x, -d.y) - g.geom.z;
353
- return fract(a / 6.28318530718);
354
- }
355
-
356
- /// Straight sRGB color + alpha of the gradient at local point p.
357
- fn evalGradient(g: GradientUniforms, p: vec2<f32>) -> vec4<f32> {
358
- var offs = g.offsets;
359
- var stops = g.stops;
360
- let n = i32(g.info.y);
361
- let t = gradientT(g, p);
362
- var lab = stops[0];
363
- if (t > offs[0].x) {
364
- lab = stops[n - 1];
365
- for (var i = 1; i < 8; i++) {
366
- if (i >= n) {
367
- break;
368
- }
369
- let b = offs[i / 4][i % 4];
370
- if (t <= b) {
371
- let a = offs[(i - 1) / 4][(i - 1) % 4];
372
- let f = select(1.0, (t - a) / (b - a), b - a > 1e-5);
373
- lab = mix(stops[i - 1], stops[i], clamp(f, 0.0, 1.0));
374
- break;
375
- }
376
- }
377
- }
378
- return vec4<f32>(gradientOklabToSrgb(lab.xyz), lab.w);
379
- }
380
- `;b();var Bt=`
381
- ${Y}
382
-
383
- struct Uniforms {
384
- transformCol0 : vec4<f32>,
385
- transformCol1 : vec4<f32>,
386
- transformCol2 : vec4<f32>,
387
- params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = unused
388
- color : vec4<f32>, // solid color (gradient.info.x = 0)
389
- gradient : GradientUniforms,
390
- };
391
-
392
- @group(0) @binding(0) var<uniform> u : Uniforms;
393
-
394
- struct VSOut {
395
- @builtin(position) pos : vec4<f32>,
396
- @location(0) localPos : vec2<f32>,
397
- };
398
-
399
- @vertex fn vs(@location(0) xy : vec2<f32>) -> VSOut {
400
- let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
401
- let p = transform * vec3<f32>(xy, 1.0);
402
-
403
- let surfaceSize = u.params.yz;
404
- let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
405
- let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
406
-
407
- return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
408
- }
409
-
410
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
411
- var outColor = u.color;
412
- if (u.gradient.info.x > 0.5) {
413
- outColor = evalGradient(u.gradient, in.localPos);
414
- }
415
-
416
- let alpha = outColor.a * u.params.x;
417
- if (alpha <= 0.0) {
418
- discard;
419
- }
420
-
421
- return vec4<f32>(outColor.rgb * alpha, alpha);
422
- }
423
- `;b();var It={linear:1,radial:2,conic:3};function X(s){return typeof s=="string"&&s.includes("gradient(")?mt(s):null}function Q(s,t,e,r){if(e.fill(0,r,r+48),!s)return;let i=pt(s.stops),a=Math.max(t.width,.001),o=Math.max(t.height,.001),l=t.x+s.center[0]*a,n=t.y+s.center[1]*o;if(e[r]=It[s.type],e[r+1]=i.length,e[r+4]=s.type==="linear"?t.x+a/2:l,e[r+5]=s.type==="linear"?t.y+o/2:n,s.type==="linear"){let u=s.angle*Math.PI/180,c=Math.sin(u),m=-Math.cos(u),h=Math.abs(a*c)+Math.abs(o*m);e[r+6]=c/h,e[r+7]=m/h}else if(s.type==="radial"){let u,c;s.radius?[u,c]=s.radius:[u,c]=Vt(s,l-t.x,t.x+a-l,n-t.y,t.y+o-n),e[r+6]=u,e[r+7]=c}else e[r+6]=s.from*Math.PI/180;i.forEach((u,c)=>{e[r+8+c]=u.offset}),A(i).forEach((u,c)=>{e.set(u,r+16+c*4)})}function Vt(s,t,e,r,i){let a=s.extent??"farthest-corner",o=a.startsWith("farthest"),l=o?Math.max(t,e):Math.min(t,e),n=o?Math.max(r,i):Math.min(r,i),u=s.shape==="circle";if(a.endsWith("side")){if(!u)return[l,n];let c=o?Math.max(l,n):Math.min(l,n);return[c,c]}if(u){let c=Math.hypot(l,n);return[c,c]}return[l*Math.SQRT2,n*Math.SQRT2]}var K=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformData=new Float32Array(68);constructor(t,e){this.device=t,this.uniformPool=new U(2048,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new U(8192,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"shape-fill.wgsl",code:Bt});this.uniformLayout=T(t),this.pipeline=_(t,{label:"ShapeFillPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-list"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,a,o,l,n){if(r.length<6||i.type==="none")return;let u=n?.opacity??1;e.packIntoBuffer(this.uniformData,u,o,l,n?.transform),this.uniformData[15]=0;let c=X(i.color);if(c)this.uniformData.fill(0,16,20),Q(c,a,this.uniformData,20);else{let d=D(i.color??"#ffffff");this.uniformData[16]=d.r,this.uniformData[17]=d.g,this.uniformData[18]=d.b,this.uniformData[19]=d.a,this.packTwoColorGradient(i,a,d)}let m=this.uniformPool.getBuffer(this.device,this.uniformData),h=this.vertexPool.getBuffer(this.device,r);t.setPipeline(this.pipeline),t.setBindGroup(0,this.device.createBindGroup({layout:this.uniformLayout,entries:[{binding:0,resource:{buffer:m}}]})),t.setVertexBuffer(0,h),t.draw(r.length/2)}packTwoColorGradient(t,e,r){if(this.uniformData.fill(0,20,68),t.type!=="linear"&&t.type!=="radial")return;let a=D(t.color2??t.color??"#ffffff"),o=this.uniformData;if(t.type==="linear"){let n=t.startX??e.x,u=t.startY??e.y,c=t.endX??e.x+e.width,m=t.endY??e.y+e.height,h=c-n,d=m-u,p=Math.max(h*h+d*d,1e-6);o.set([1,2,0,0,(n+c)/2,(u+m)/2,h/p,d/p],20)}else{let n=t.radius??Math.max(e.width,e.height)/2;o.set([2,2,0,0,t.cx??e.x+e.width/2,t.cy??e.y+e.height/2,n,n],20)}o[28]=0,o[29]=1;let l=A([{offset:0,color:[r.r,r.g,r.b,r.a]},{offset:1,color:[a.r,a.g,a.b,a.a]}]);o.set(l[0],36),o.set(l[1],40)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy()}};b();b();var Dt=`
424
- ${Y}
425
-
426
- struct Uniforms {
427
- transformCol0 : vec4<f32>,
428
- transformCol1 : vec4<f32>,
429
- transformCol2 : vec4<f32>,
430
- params : vec4<f32>, // x = opacity, y = surfaceWidth, z = surfaceHeight, w = cornerRadius
431
- color : vec4<f32>,
432
- rect : vec4<f32>, // x, y, width, height
433
- gradient : GradientUniforms, // info.x = 0: solid \`color\`
434
- };
435
-
436
- @group(0) @binding(0) var<uniform> u : Uniforms;
437
-
438
- struct VSOut {
439
- @builtin(position) pos : vec4<f32>,
440
- @location(0) localPos : vec2<f32>,
441
- };
442
-
443
- @vertex fn vs(@location(0) xy : vec2<f32>) -> VSOut {
444
- let transform = mat3x3<f32>(u.transformCol0.xyz, u.transformCol1.xyz, u.transformCol2.xyz);
445
- let p = transform * vec3<f32>(xy, 1.0);
446
-
447
- let surfaceSize = u.params.yz;
448
- let clipX = (p.x / surfaceSize.x) * 2.0 - 1.0;
449
- let clipY = 1.0 - (p.y / surfaceSize.y) * 2.0;
450
-
451
- return VSOut(vec4<f32>(clipX, clipY, 0.0, 1.0), xy);
452
- }
453
-
454
- fn sdRoundedRect(p: vec2<f32>, b: vec2<f32>, r: f32) -> f32 {
455
- let q = abs(p) - b + r;
456
- return min(max(q.x, q.y), 0.0) + length(max(q, vec2<f32>(0.0))) - r;
457
- }
458
-
459
- @fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {
460
- let center = u.rect.xy + u.rect.zw * 0.5;
461
- let halfSize = u.rect.zw * 0.5;
462
- let radius = u.params.w;
463
-
464
- let d = sdRoundedRect(in.localPos - center, halfSize, radius);
465
- // Rounded shapes: one device pixel of coverage centred on the edge (the
466
- // quad has room for its outer half). Square ones keep their exact edge.
467
- let fw = max(fwidth(d), 1e-4);
468
- var edgeAlpha = 1.0 - smoothstep(0.0, 1.0, d);
469
- if (radius > 0.0) {
470
- edgeAlpha = clamp(0.5 - d / fw, 0.0, 1.0);
471
- }
472
- var fill = u.color;
473
- if (u.gradient.info.x > 0.5) {
474
- fill = evalGradient(u.gradient, in.localPos);
475
- }
476
- let alpha = fill.a * u.params.x * edgeAlpha;
477
- if (alpha <= 0.0) {
478
- discard;
479
- }
480
-
481
- return vec4<f32>(fill.rgb * alpha, alpha);
482
- }
483
- `;var Z=class{device;pipeline;uniformLayout;uniformPool;vertexPool;uniformBindGroupCache=new C;uniformData=new Float32Array(72);vertexData=new Float32Array(8);constructor(t,e){this.device=t,this.uniformPool=new U(1024,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.vertexPool=new U(256,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let r=t.createShaderModule({label:"solid.wgsl",code:Dt});this.uniformLayout=T(t),this.pipeline=_(t,{label:"SolidPipeline",module:r,uniformLayout:this.uniformLayout,format:e,topology:"triangle-strip"})}resetPools(){this.uniformPool.reset(),this.vertexPool.reset()}draw(t,e,r,i,a,o,l=0,n){let u=X(i),c=u?{r:0,g:0,b:0,a:1}:D(i),m=n?.opacity??1;e.packIntoBuffer(this.uniformData,m,a,o,n?.transform),this.uniformData[15]=l,this.uniformData[16]=c.r,this.uniformData[17]=c.g,this.uniformData[18]=c.b,this.uniformData[19]=c.a,this.uniformData[20]=r.x,this.uniformData[21]=r.y,this.uniformData[22]=r.width,this.uniformData[23]=r.height,Q(u,r,this.uniformData,24);let h=this.uniformPool.getBuffer(this.device,this.uniformData),d=0;if(l>0){let v=n?.transform?e.getCurrent().multiply(n.transform):e.getCurrent(),M=Math.min(Math.hypot(v.a,v.b),Math.hypot(v.c,v.d));d=2/Math.max(M,.001)}let p=r.x-d,f=r.y-d,x=r.x+r.width+d,y=r.y+r.height+d;this.vertexData[0]=p,this.vertexData[1]=f,this.vertexData[2]=x,this.vertexData[3]=f,this.vertexData[4]=p,this.vertexData[5]=y,this.vertexData[6]=x,this.vertexData[7]=y;let g=this.vertexPool.getBuffer(this.device,this.vertexData);t.setPipeline(this.pipeline);let P=this.uniformBindGroupCache.getBindGroup(this.device,this.uniformLayout,h);t.setBindGroup(0,P),t.setVertexBuffer(0,g),t.draw(4)}destroy(){this.uniformPool.destroy(),this.vertexPool.destroy(),this.uniformBindGroupCache.destroy()}};function zt(s){if(Array.isArray(s)){let r=s[3]??1;return[s[0]*r,s[1]*r,s[2]*r,r]}if("r"in s){let r=s.a??1;return{r:s.r*r,g:s.g*r,b:s.b*r,a:r}}let t=Array.from(s),e=t[3]??1;return[t[0]*e,t[1]*e,t[2]*e,e]}var Tt=new WeakMap;function Dr(s,t){let e=Tt.get(s);return(!e||e.format!==t||e.isDestroyed)&&(e=new lt(s,t),Tt.set(s,e)),e.resetPools(),e}var lt=class{device;transformStack=new yt;clipStack=new V;quadPipeline;solidPipeline;shapeFillPipeline;pathPipeline;effectPipeline;slugPipeline;bindGroupCache=new I;samplerCache=new H;format;isDestroyed=!1;rasterDrawCount=0;surfaceWidth=0;surfaceHeight=0;lastEncoder=null;constructor(t,e){this.device=t,this.format=e,this.quadPipeline=new j(t,e),this.solidPipeline=new Z(t,e),this.shapeFillPipeline=new K(t,e),this.pathPipeline=new q(t,e),this.effectPipeline=new E(t,e),this.slugPipeline=new gt(t,e)}beginFrame(t,e,r={r:0,g:0,b:0,a:0},i,a,o="clear"){this.surfaceWidth=i,this.surfaceHeight=a,t!==this.lastEncoder&&(this.lastEncoder=t,this.resetPools());let l=t.beginRenderPass({colorAttachments:[{view:e,clearValue:zt(r),loadOp:o,storeOp:"store"}]});return this.clipStack.applyScissorToPass(l,i,a),l}endFrame(t){}resetPools(){this.quadPipeline.resetPools(),this.solidPipeline.resetPools(),this.shapeFillPipeline.resetPools(),this.pathPipeline.resetPools(),this.effectPipeline&&this.effectPipeline.resetPools(),this.slugPipeline.resetPools(),et.flushRetired(this.device),et.prune(this.device)}drawTexture(t,e,r,i){let a=this.samplerCache.getSampler(this.device),o={x:0,y:0,width:e.width,height:e.height};this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,a,o,r,this.surfaceWidth,this.surfaceHeight,i)}drawTextureRegion(t,e,r,i,a){let o=this.samplerCache.getSampler(this.device);this.rasterDrawCount++,this.quadPipeline.draw(t,this.bindGroupCache,this.transformStack,e,o,r,i,this.surfaceWidth,this.surfaceHeight,a)}drawRect(t,e,r,i=0,a){let o=0,l=a;typeof i=="object"&&i!==null?(l=i,o=0):typeof i=="number"&&(o=i),this.rasterDrawCount++,this.solidPipeline.draw(t,this.transformStack,e,r,this.surfaceWidth,this.surfaceHeight,o,l)}drawPath(t,e,r,i,a){this.rasterDrawCount++,this.pathPipeline.drawPath(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,a)}drawShapeFill(t,e,r,i,a){this.rasterDrawCount++,this.shapeFillPipeline.draw(t,this.transformStack,e,r,i,this.surfaceWidth,this.surfaceHeight,a)}drawShape(t,e,r,i,a){let o={x:0,y:0,width:e.width,height:e.height};if(r&&r.type!=="none"){let l=Ut(e);if(l.length>0&&(this.drawShapeFill(t,l,r,o,a),(!i||!i.width||i.width<=0)&&(r.type??"solid")==="solid"&&r.color)){let n=ot(e);if(n){let u=this.transformStack.getCurrent(),c=1/rt(a?.transform?u.multiply(a.transform):u);this.drawPath(t,n,r.color,c,{...a,strokeLineCap:"round"})}}}if(i&&i.width&&i.width>0&&i.color){let l=ot(e);l&&this.drawPath(t,l,i.color,i.width,{...a,strokeLineCap:i.cap,trimStart:i.trimStart,trimEnd:i.trimEnd,trimOffset:i.trimOffset,strokeDashArray:i.dashArray,strokeDashOffset:i.dashOffset})}}drawRRect(t,e,r,i){this.drawRect(t,e.rect,r,e.rx,i)}getTemporaryTexture(t,e,r){return this.effectPipeline.getTexture(this.device,t,e,this.format,r)}getTemporaryBuffer(t){return this.effectPipeline.getBuffer(this.device,t)}composite(t,e,r,i,a){return this.effectPipeline.composite(t,this.bindGroupCache,this.samplerCache,e,r,i,this.format,a)}applyMotionBlur(t,e,r,i,a=180,o=16,l){return this.effectPipeline.applyMotionBlur(t,this.bindGroupCache,this.samplerCache,e,r,i,a,o,this.format,l)}getCurrentTransform(){return this.transformStack.getCurrent()}getTransformStack(){return this.transformStack}getSurfaceWidth(){return this.surfaceWidth}getSurfaceHeight(){return this.surfaceHeight}pushIdentity(){let t=this.transformStack.getCurrent();this.pushTransform(t.inverse())}pushTransform(t){this.transformStack.push(t)}popTransform(){this.transformStack.pop()}pushScissor(t){this.clipStack.pushScissor(t,this.surfaceWidth,this.surfaceHeight)}pushScissorIntersect(t){let e=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(!e){this.pushScissor(t);return}let r=Math.max(t.x,e.x),i=Math.max(t.y,e.y),a=Math.min(t.x+t.width,e.x+e.width),o=Math.min(t.y+t.height,e.y+e.height);this.pushScissor({x:r,y:i,width:Math.max(0,a-r),height:Math.max(0,o-i)})}pushScissorLocal(t){let e=this.transformStack.getCurrent(),r=[e.transformPoint(new DOMPoint(t.x,t.y)),e.transformPoint(new DOMPoint(t.x+t.width,t.y)),e.transformPoint(new DOMPoint(t.x,t.y+t.height)),e.transformPoint(new DOMPoint(t.x+t.width,t.y+t.height))],i=r.map(m=>m.x),a=r.map(m=>m.y),o=Math.min(...i),l=Math.min(...a),n=Math.max(...i)-o,u=Math.max(...a)-l,c=this.clipStack.getCurrentScissor(this.surfaceWidth,this.surfaceHeight);if(c){let m=Math.max(o,c.x),h=Math.max(l,c.y),d=Math.min(o+n,c.x+c.width),p=Math.min(l+u,c.y+c.height);o=m,l=h,n=Math.max(0,d-m),u=Math.max(0,p-h)}this.clipStack.pushScissor({x:o,y:l,width:n,height:u},this.surfaceWidth,this.surfaceHeight)}popScissor(){this.clipStack.popScissor()}suspendScissors(){let t=this.clipStack.saveScissors();return this.clipStack.clearScissors(),t}resumeScissors(t){this.clipStack.restoreScissors(t)}pushStencilClip(t){this.clipStack.pushStencilClip(t)}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}};b();function Wt(s){return xt(s)??dt(s)??tt(s)}function $r(s){let t=Wt(s);return typeof t=="string"?t:tt(s)}export{Nt as a,jt as b,Ht as c,Yt as d,Xt as e,Qt as f,Kt as g,Zt as h,ee as i,re as j,ie as k,ne as l,kt as m,se as n,E as o,Lt as p,z as q,ot as r,at as s,H as t,Dr as u,lt as v,Wt as w,$r as x};