framefields 2.14.0 → 2.15.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 (334) hide show
  1. package/NOTICE.md +5 -1
  2. package/dist/audio/index.d.mts +3 -3
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-DFwRbID_.mjs → audio-6TfPlfl4.mjs} +3 -3
  5. package/dist/{audio-DFwRbID_.mjs.map → audio-6TfPlfl4.mjs.map} +1 -1
  6. package/dist/{audio-CdCuGK5d.d.mts → audio-7oqTUi4G.d.mts} +2 -2
  7. package/dist/{audio-CdCuGK5d.d.mts.map → audio-7oqTUi4G.d.mts.map} +1 -1
  8. package/dist/cli/check-worker.mjs +44 -44
  9. package/dist/cli.mjs +1 -1
  10. package/dist/cloud/index.d.mts.map +1 -1
  11. package/dist/cloud/index.mjs +1 -1
  12. package/dist/{cloud-Cj1TIme8.mjs → cloud-jnk1hPYf.mjs} +2 -2
  13. package/dist/{cloud-Cj1TIme8.mjs.map → cloud-jnk1hPYf.mjs.map} +1 -1
  14. package/dist/components/index.d.mts +11 -11
  15. package/dist/components/index.mjs +43 -43
  16. package/dist/{dist-Kbf-JTry.mjs → dist-BtI6ukB5.mjs} +2 -2
  17. package/dist/{dist-Kbf-JTry.mjs.map → dist-BtI6ukB5.mjs.map} +1 -1
  18. package/dist/{dist-B8Nby2CU.mjs → dist-COOpgG9G.mjs} +4 -3
  19. package/dist/{dist-B8Nby2CU.mjs.map → dist-COOpgG9G.mjs.map} +1 -1
  20. package/dist/{dist--Uu5bQ_6.mjs → dist-XqlFM2a8.mjs} +13733 -5323
  21. package/dist/dist-XqlFM2a8.mjs.map +1 -0
  22. package/dist/{dist-CiTgmfUw.mjs → dist-f1zkl69f.mjs} +4 -4
  23. package/dist/dist-f1zkl69f.mjs.map +1 -0
  24. package/dist/{dist-B_rSWeOz.mjs → dist-umQOWz0a.mjs} +1 -1
  25. package/dist/effects/index.d.mts +4 -4
  26. package/dist/effects/index.mjs +35 -35
  27. package/dist/{effects-WMgv8ZaD.mjs → effects-DlRMovU5.mjs} +2 -2
  28. package/dist/{effects-WMgv8ZaD.mjs.map → effects-DlRMovU5.mjs.map} +1 -1
  29. package/dist/fonts/index.d.mts +1 -1
  30. package/dist/fonts/index.mjs +2 -2
  31. package/dist/{fonts-OW3yAfO5.mjs → fonts-BWYcXjyK.mjs} +3 -3
  32. package/dist/fonts-BWYcXjyK.mjs.map +1 -0
  33. package/dist/{gpu-R4T2Tndu.mjs → gpu-CH1PdM4T.mjs} +2 -2
  34. package/dist/{gpu-R4T2Tndu.mjs.map → gpu-CH1PdM4T.mjs.map} +1 -1
  35. package/dist/{index-CEKxvGY-.d.mts → index-BHTycml5.d.mts} +2 -2
  36. package/dist/{index-CEKxvGY-.d.mts.map → index-BHTycml5.d.mts.map} +1 -1
  37. package/dist/{index-DoP6EiHj.d.mts → index-BcxxxwhV.d.mts} +4 -4
  38. package/dist/{index-DoP6EiHj.d.mts.map → index-BcxxxwhV.d.mts.map} +1 -1
  39. package/dist/{index-Bv7gxGK1.d.mts → index-BnB_Ou2y.d.mts} +2 -2
  40. package/dist/index-BnB_Ou2y.d.mts.map +1 -0
  41. package/dist/index-C-V6CAhP.d.mts.map +1 -1
  42. package/dist/{index-D1FqV1eu.d.mts → index-CMhkkc56.d.mts} +43 -11
  43. package/dist/index-CMhkkc56.d.mts.map +1 -0
  44. package/dist/{index-B0Vq8Bwf.d.mts → index-CYVpYGM-.d.mts} +2 -2
  45. package/dist/{index-B0Vq8Bwf.d.mts.map → index-CYVpYGM-.d.mts.map} +1 -1
  46. package/dist/{index-C7-p9zwU.d.mts → index-DhL7ckvs.d.mts} +5 -5
  47. package/dist/index-DhL7ckvs.d.mts.map +1 -0
  48. package/dist/{index-9xte4JgL.d.mts → index-DkAjKnhW.d.mts} +1464 -559
  49. package/dist/index-DkAjKnhW.d.mts.map +1 -0
  50. package/dist/{index-GA9_Z8Fn.d.mts → index-RILu3ULT.d.mts} +2 -2
  51. package/dist/{index-GA9_Z8Fn.d.mts.map → index-RILu3ULT.d.mts.map} +1 -1
  52. package/dist/{index-C5sgRLlG.d.mts → index-TCtdSXd7.d.mts} +3 -1
  53. package/dist/index-TCtdSXd7.d.mts.map +1 -0
  54. package/dist/{index-CRaydvLi.d.mts → index-s2qQ8ifZ.d.mts} +886 -51
  55. package/dist/index-s2qQ8ifZ.d.mts.map +1 -0
  56. package/dist/index.d.mts +13 -13
  57. package/dist/index.mjs +52 -52
  58. package/dist/preview/index.d.mts +3 -3
  59. package/dist/preview/index.mjs +10 -10
  60. package/dist/preview-BeGF1Bb1.mjs +1002 -0
  61. package/dist/preview-BeGF1Bb1.mjs.map +1 -0
  62. package/dist/preview-engine/audio.mjs +1 -1
  63. package/dist/preview-engine/{chunk-64L4GUOF.mjs → chunk-4F3DG6YB.mjs} +2 -2
  64. package/dist/preview-engine/chunk-A2OTOW3B.mjs +4694 -0
  65. package/dist/preview-engine/{chunk-GNDE3OXQ.mjs → chunk-BR56TQBP.mjs} +1 -1
  66. package/dist/preview-engine/{chunk-ADLIF544.mjs → chunk-H2XKXXAU.mjs} +1 -1
  67. package/dist/preview-engine/chunk-NDUODAY2.mjs +3 -0
  68. package/dist/preview-engine/{chunk-FZ4RD7HV.mjs → chunk-QAQJSWUT.mjs} +1 -1
  69. package/dist/preview-engine/chunk-SWRGQTVC.mjs +138 -0
  70. package/dist/preview-engine/{chunk-52X7SURQ.mjs → chunk-TEA3GVBJ.mjs} +1 -1
  71. package/dist/preview-engine/chunk-VM2ZBPLM.mjs +644 -0
  72. package/dist/preview-engine/{chunk-UBY2UYEL.mjs → chunk-XSHNQJ7L.mjs} +1 -1
  73. package/dist/preview-engine/components.mjs +1 -1
  74. package/dist/preview-engine/effects.mjs +1 -1
  75. package/dist/preview-engine/fonts.mjs +1 -1
  76. package/dist/preview-engine/framefields.mjs +1 -1
  77. package/dist/preview-engine/player.mjs +2 -2
  78. package/dist/preview-engine/{renderers-DU7KPFVV.mjs → renderers-6C7NWWDX.mjs} +1 -1
  79. package/dist/preview-engine/renderers-HHVGNMSJ.mjs +206 -0
  80. package/dist/preview-engine/{src-YXNX4MLK.mjs → src-RCNEKIRP.mjs} +1 -1
  81. package/dist/preview-page/index.html +19 -0
  82. package/dist/preview-page/main.css +1 -0
  83. package/dist/preview-page/main.js +327 -0
  84. package/dist/{program-tFKCWU2j.mjs → program-CMigyfso.mjs} +829 -52
  85. package/dist/program-CMigyfso.mjs.map +1 -0
  86. package/dist/renderer/index.d.mts +2 -2
  87. package/dist/renderer/index.mjs +2 -2
  88. package/dist/{renderer-DkOuQi84.mjs → renderer-0GMEL_Zi.mjs} +3 -3
  89. package/dist/{renderer-DkOuQi84.mjs.map → renderer-0GMEL_Zi.mjs.map} +1 -1
  90. package/dist/{renderer-BGp0An5A.mjs → renderer-3Wv2ZBJG.mjs} +3 -3
  91. package/dist/{renderer-BGp0An5A.mjs.map → renderer-3Wv2ZBJG.mjs.map} +1 -1
  92. package/dist/{renderer-BVIXKfbC.mjs → renderer-4nXkaAWu.mjs} +1178 -199
  93. package/dist/renderer-4nXkaAWu.mjs.map +1 -0
  94. package/dist/{renderer-Cw6_NL2i.mjs → renderer-6SnfLXeg.mjs} +3 -3
  95. package/dist/{renderer-Cw6_NL2i.mjs.map → renderer-6SnfLXeg.mjs.map} +1 -1
  96. package/dist/{renderer-BVU22lBS.mjs → renderer-8gHw3O0P.mjs} +2 -2
  97. package/dist/{renderer-BVU22lBS.mjs.map → renderer-8gHw3O0P.mjs.map} +1 -1
  98. package/dist/{renderer-BjDddtw9.mjs → renderer-AOBglZHC.mjs} +2 -2
  99. package/dist/{renderer-D-KHHWQD.mjs → renderer-B0bSARK3.mjs} +3 -3
  100. package/dist/{renderer-D-KHHWQD.mjs.map → renderer-B0bSARK3.mjs.map} +1 -1
  101. package/dist/{renderer-CCxk-RJR.mjs → renderer-B2_tuRfl.mjs} +2 -2
  102. package/dist/{renderer-CCxk-RJR.mjs.map → renderer-B2_tuRfl.mjs.map} +1 -1
  103. package/dist/{renderer-k5d7JSbs.mjs → renderer-B82FhkEr.mjs} +3 -3
  104. package/dist/{renderer-k5d7JSbs.mjs.map → renderer-B82FhkEr.mjs.map} +1 -1
  105. package/dist/{renderer-I0Hh9cLK.mjs → renderer-B9lzA0PY.mjs} +3 -3
  106. package/dist/{renderer-I0Hh9cLK.mjs.map → renderer-B9lzA0PY.mjs.map} +1 -1
  107. package/dist/{renderer-Dwwnx7Dk.mjs → renderer-BBSIWSry.mjs} +2 -2
  108. package/dist/{renderer-Dwwnx7Dk.mjs.map → renderer-BBSIWSry.mjs.map} +1 -1
  109. package/dist/{renderer-_pC-jB9O.mjs → renderer-BEKDMxbi.mjs} +2 -2
  110. package/dist/{renderer-_pC-jB9O.mjs.map → renderer-BEKDMxbi.mjs.map} +1 -1
  111. package/dist/renderer-BERGAxqA.mjs +5 -0
  112. package/dist/{renderer-raxwsiGI.mjs → renderer-BF960HY8.mjs} +3 -3
  113. package/dist/{renderer-raxwsiGI.mjs.map → renderer-BF960HY8.mjs.map} +1 -1
  114. package/dist/{renderer-Dr0tXA4k.mjs → renderer-BFwyVxCu.mjs} +3 -3
  115. package/dist/{renderer-Dr0tXA4k.mjs.map → renderer-BFwyVxCu.mjs.map} +1 -1
  116. package/dist/{renderer-DEjo6dw_.mjs → renderer-BNiwcI3-.mjs} +2 -2
  117. package/dist/{renderer-DEjo6dw_.mjs.map → renderer-BNiwcI3-.mjs.map} +1 -1
  118. package/dist/{renderer-DIEeHiQA.mjs → renderer-BPbVb2Q4.mjs} +2 -2
  119. package/dist/{renderer-DIEeHiQA.mjs.map → renderer-BPbVb2Q4.mjs.map} +1 -1
  120. package/dist/renderer-BQ_YkBMt.mjs +6 -0
  121. package/dist/{renderer-BBMtmxks.mjs → renderer-BUWxlA8T.mjs} +3 -3
  122. package/dist/{renderer-BBMtmxks.mjs.map → renderer-BUWxlA8T.mjs.map} +1 -1
  123. package/dist/renderer-BW0Tjsv9.mjs +5 -0
  124. package/dist/{renderer-Dgj46uEU.mjs → renderer-BX8liu-e.mjs} +2 -2
  125. package/dist/{renderer-ZnrEfkYh.mjs → renderer-BXIwDAr_.mjs} +2 -2
  126. package/dist/{renderer-ZnrEfkYh.mjs.map → renderer-BXIwDAr_.mjs.map} +1 -1
  127. package/dist/{renderer-DA8YEo_d.mjs → renderer-B_Hy1W-g.mjs} +3 -3
  128. package/dist/{renderer-DA8YEo_d.mjs.map → renderer-B_Hy1W-g.mjs.map} +1 -1
  129. package/dist/{renderer-iMiYStcW.mjs → renderer-Bb6cvSgh.mjs} +2 -2
  130. package/dist/{renderer-iMiYStcW.mjs.map → renderer-Bb6cvSgh.mjs.map} +1 -1
  131. package/dist/{renderer-BacY4nh8.mjs → renderer-BdppwWC9.mjs} +2 -2
  132. package/dist/{renderer-BacY4nh8.mjs.map → renderer-BdppwWC9.mjs.map} +1 -1
  133. package/dist/{renderer-CrxwW6VQ.mjs → renderer-Bhc24HVe.mjs} +3 -3
  134. package/dist/{renderer-CrxwW6VQ.mjs.map → renderer-Bhc24HVe.mjs.map} +1 -1
  135. package/dist/{renderer-BH7UCMPQ.mjs → renderer-BiNA2wF0.mjs} +2 -2
  136. package/dist/{renderer-BH7UCMPQ.mjs.map → renderer-BiNA2wF0.mjs.map} +1 -1
  137. package/dist/{renderer-DVPgWHZw.mjs → renderer-BmoBgTp5.mjs} +3 -3
  138. package/dist/{renderer-DVPgWHZw.mjs.map → renderer-BmoBgTp5.mjs.map} +1 -1
  139. package/dist/{renderer-C20efMI0.mjs → renderer-BmqFmCWS.mjs} +3 -3
  140. package/dist/{renderer-C20efMI0.mjs.map → renderer-BmqFmCWS.mjs.map} +1 -1
  141. package/dist/{renderer-B0yVUOPP.mjs → renderer-BnVwAObV.mjs} +2 -2
  142. package/dist/{renderer-B0yVUOPP.mjs.map → renderer-BnVwAObV.mjs.map} +1 -1
  143. package/dist/{renderer-CP8wLzTU.mjs → renderer-BxttZHme.mjs} +2 -2
  144. package/dist/{renderer-CP8wLzTU.mjs.map → renderer-BxttZHme.mjs.map} +1 -1
  145. package/dist/renderer-BzyPdUD1.mjs +5 -0
  146. package/dist/renderer-C0hM-mtY.mjs +5 -0
  147. package/dist/renderer-C6cyUTvk.mjs +5 -0
  148. package/dist/{renderer-BOSZAdgF.mjs → renderer-C8E4XsSg.mjs} +2 -2
  149. package/dist/{renderer-BOSZAdgF.mjs.map → renderer-C8E4XsSg.mjs.map} +1 -1
  150. package/dist/renderer-C8zY3pzk.mjs +5 -0
  151. package/dist/{renderer-DWq9gYRw.mjs → renderer-C9U-LY50.mjs} +3 -3
  152. package/dist/{renderer-DWq9gYRw.mjs.map → renderer-C9U-LY50.mjs.map} +1 -1
  153. package/dist/{renderer-Dj2H5JPR.mjs → renderer-CB2JVu5x.mjs} +3 -3
  154. package/dist/{renderer-Dj2H5JPR.mjs.map → renderer-CB2JVu5x.mjs.map} +1 -1
  155. package/dist/{renderer-Bcu3UrI-.mjs → renderer-CC4YBJ8Z.mjs} +3 -3
  156. package/dist/{renderer-Bcu3UrI-.mjs.map → renderer-CC4YBJ8Z.mjs.map} +1 -1
  157. package/dist/renderer-CEkSOyKu.mjs +5 -0
  158. package/dist/{renderer-DzLrvCB2.mjs → renderer-CIycc5O-.mjs} +2 -2
  159. package/dist/{renderer-DzLrvCB2.mjs.map → renderer-CIycc5O-.mjs.map} +1 -1
  160. package/dist/renderer-CJYtfa4x.mjs +5 -0
  161. package/dist/{renderer-BeNl_6EG.mjs → renderer-CJraQlV-.mjs} +2 -2
  162. package/dist/{renderer-BeNl_6EG.mjs.map → renderer-CJraQlV-.mjs.map} +1 -1
  163. package/dist/renderer-CKMtHGZh.mjs +5 -0
  164. package/dist/renderer-CLzicoiy.mjs +5 -0
  165. package/dist/renderer-CM2A4BHd.mjs +5 -0
  166. package/dist/{renderer-DtMVitEF.mjs → renderer-COWGWtob.mjs} +2 -2
  167. package/dist/{renderer-DtMVitEF.mjs.map → renderer-COWGWtob.mjs.map} +1 -1
  168. package/dist/{renderer-CT3zkfbf.mjs → renderer-COxG2XGf.mjs} +2 -2
  169. package/dist/{renderer-CT3zkfbf.mjs.map → renderer-COxG2XGf.mjs.map} +1 -1
  170. package/dist/{renderer-DNxWOz8Q.mjs → renderer-CQDCIsQm.mjs} +2 -2
  171. package/dist/{renderer-DNxWOz8Q.mjs.map → renderer-CQDCIsQm.mjs.map} +1 -1
  172. package/dist/{renderer-C5AoaymD.mjs → renderer-CRUeag8i.mjs} +3 -3
  173. package/dist/{renderer-C5AoaymD.mjs.map → renderer-CRUeag8i.mjs.map} +1 -1
  174. package/dist/{renderer-ngmYIIob.mjs → renderer-CWVput06.mjs} +3 -3
  175. package/dist/{renderer-ngmYIIob.mjs.map → renderer-CWVput06.mjs.map} +1 -1
  176. package/dist/renderer-CZlHjcxr.mjs +5 -0
  177. package/dist/{renderer-0rveCDm-.mjs → renderer-CbbnBLOB.mjs} +3 -3
  178. package/dist/{renderer-0rveCDm-.mjs.map → renderer-CbbnBLOB.mjs.map} +1 -1
  179. package/dist/renderer-CbimvSU8.mjs +5 -0
  180. package/dist/renderer-Ccvc63yd.mjs +5 -0
  181. package/dist/renderer-Cdp-SGfq.mjs +5 -0
  182. package/dist/renderer-CeTcSs3e.mjs +5 -0
  183. package/dist/{renderer-Brmbl12Y.mjs → renderer-CfLZein2.mjs} +3 -3
  184. package/dist/{renderer-Brmbl12Y.mjs.map → renderer-CfLZein2.mjs.map} +1 -1
  185. package/dist/{renderer-BJ8ea92W.mjs → renderer-Ch-q1O-q.mjs} +3 -3
  186. package/dist/{renderer-BJ8ea92W.mjs.map → renderer-Ch-q1O-q.mjs.map} +1 -1
  187. package/dist/{renderer-CP108ABB.mjs → renderer-Ch5JvJWl.mjs} +2 -2
  188. package/dist/{renderer-CP108ABB.mjs.map → renderer-Ch5JvJWl.mjs.map} +1 -1
  189. package/dist/{renderer-47y12Z37.mjs → renderer-ChtEzq-R.mjs} +2 -2
  190. package/dist/{renderer-47y12Z37.mjs.map → renderer-ChtEzq-R.mjs.map} +1 -1
  191. package/dist/{renderer-DhyMfG1v.mjs → renderer-Cj9nTC5l.mjs} +3 -3
  192. package/dist/{renderer-DhyMfG1v.mjs.map → renderer-Cj9nTC5l.mjs.map} +1 -1
  193. package/dist/{renderer-BDzn1AKF.mjs → renderer-CqT8HsSS.mjs} +2 -2
  194. package/dist/{renderer-BDzn1AKF.mjs.map → renderer-CqT8HsSS.mjs.map} +1 -1
  195. package/dist/{renderer-B7G1KohJ.mjs → renderer-CuQjMhdV.mjs} +2 -2
  196. package/dist/renderer-CvNuu52U.mjs +5 -0
  197. package/dist/renderer-CwciC0oI.mjs +5 -0
  198. package/dist/renderer-CysLUbIr.mjs +5 -0
  199. package/dist/{renderer-Cm0tsbQH.mjs → renderer-Cz30EVws.mjs} +2 -2
  200. package/dist/{renderer-Cm0tsbQH.mjs.map → renderer-Cz30EVws.mjs.map} +1 -1
  201. package/dist/renderer-D3A22Vxb.mjs +5 -0
  202. package/dist/renderer-D5SY9EmA.mjs +5 -0
  203. package/dist/renderer-D8h3ZvaE.mjs +5 -0
  204. package/dist/renderer-DE-B6N9n.mjs +5 -0
  205. package/dist/renderer-DETZTI7t.mjs +5 -0
  206. package/dist/{renderer-nHS3Sius.mjs → renderer-DHoX-5U_.mjs} +3 -3
  207. package/dist/{renderer-nHS3Sius.mjs.map → renderer-DHoX-5U_.mjs.map} +1 -1
  208. package/dist/{renderer-BWSRryIA.mjs → renderer-DOkm0Ycd.mjs} +2 -2
  209. package/dist/{renderer-BWSRryIA.mjs.map → renderer-DOkm0Ycd.mjs.map} +1 -1
  210. package/dist/{renderer-BHYJlK6H.d.mts → renderer-DU3f6ZrS.d.mts} +2 -2
  211. package/dist/{renderer-BHYJlK6H.d.mts.map → renderer-DU3f6ZrS.d.mts.map} +1 -1
  212. package/dist/{renderer-BpVOk9ux.mjs → renderer-DUzv-shq.mjs} +2 -2
  213. package/dist/{renderer-BpVOk9ux.mjs.map → renderer-DUzv-shq.mjs.map} +1 -1
  214. package/dist/renderer-DWnDj0IM.mjs +5 -0
  215. package/dist/renderer-DcGUIbQF.mjs +5 -0
  216. package/dist/renderer-Dfq6FoNO.mjs +5 -0
  217. package/dist/renderer-DhasXW6S.mjs +3 -0
  218. package/dist/{renderer-NRMlYkX6.mjs → renderer-DhnOWnEA.mjs} +3 -3
  219. package/dist/{renderer-NRMlYkX6.mjs.map → renderer-DhnOWnEA.mjs.map} +1 -1
  220. package/dist/{renderer-COgwYqev.mjs → renderer-Dhy1XHzz.mjs} +3 -3
  221. package/dist/{renderer-COgwYqev.mjs.map → renderer-Dhy1XHzz.mjs.map} +1 -1
  222. package/dist/renderer-DjCvpsV_.mjs +5 -0
  223. package/dist/{renderer-BfZNIiSv.mjs → renderer-DjJshz9Y.mjs} +2 -2
  224. package/dist/{renderer-BfZNIiSv.mjs.map → renderer-DjJshz9Y.mjs.map} +1 -1
  225. package/dist/{renderer-CKo7VR8x.mjs → renderer-DmTUIdus.mjs} +3 -3
  226. package/dist/{renderer-CKo7VR8x.mjs.map → renderer-DmTUIdus.mjs.map} +1 -1
  227. package/dist/{renderer-Baw6Utxi.mjs → renderer-Dq7AioJa.mjs} +2 -2
  228. package/dist/{renderer-Baw6Utxi.mjs.map → renderer-Dq7AioJa.mjs.map} +1 -1
  229. package/dist/renderer-DrAaM6JD.mjs +5 -0
  230. package/dist/{renderer-D-GWBoVT.mjs → renderer-Dt4sqNEu.mjs} +2 -2
  231. package/dist/{renderer-D-GWBoVT.mjs.map → renderer-Dt4sqNEu.mjs.map} +1 -1
  232. package/dist/{renderer-FYOL5Za6.mjs → renderer-Dtcs4idV.mjs} +3 -3
  233. package/dist/{renderer-FYOL5Za6.mjs.map → renderer-Dtcs4idV.mjs.map} +1 -1
  234. package/dist/renderer-Dxlv8LYm.mjs +5 -0
  235. package/dist/{renderer-D-RhYvVl.mjs → renderer-Gj8SrE2W.mjs} +2 -2
  236. package/dist/{renderer-D-RhYvVl.mjs.map → renderer-Gj8SrE2W.mjs.map} +1 -1
  237. package/dist/{renderer-D_j1WKMD.mjs → renderer-KfnXDJS0.mjs} +3 -3
  238. package/dist/{renderer-D_j1WKMD.mjs.map → renderer-KfnXDJS0.mjs.map} +1 -1
  239. package/dist/{renderer-Bpm145BW.mjs → renderer-MXVlg4p5.mjs} +3 -3
  240. package/dist/{renderer-Bpm145BW.mjs.map → renderer-MXVlg4p5.mjs.map} +1 -1
  241. package/dist/{renderer-Nnmi8Gt6.mjs → renderer-N2b6QZ1E.mjs} +3 -3
  242. package/dist/{renderer-Nnmi8Gt6.mjs.map → renderer-N2b6QZ1E.mjs.map} +1 -1
  243. package/dist/renderer-Pb43OO2t.mjs +5 -0
  244. package/dist/{renderer-Ca1KjNCO.mjs → renderer-Q7gDzm8c.mjs} +2 -2
  245. package/dist/{renderer-Ca1KjNCO.mjs.map → renderer-Q7gDzm8c.mjs.map} +1 -1
  246. package/dist/{renderer-D2wNFNRf.mjs → renderer-RCiANtRV.mjs} +2 -2
  247. package/dist/{renderer-D2wNFNRf.mjs.map → renderer-RCiANtRV.mjs.map} +1 -1
  248. package/dist/{renderer-Cqb7PGrI.mjs → renderer-Sig9nZcI.mjs} +2 -2
  249. package/dist/renderer-VQbm-cGr.mjs +5 -0
  250. package/dist/{renderer-W1bVNVR6.mjs → renderer-fabBgwQX.mjs} +3 -3
  251. package/dist/{renderer-W1bVNVR6.mjs.map → renderer-fabBgwQX.mjs.map} +1 -1
  252. package/dist/{renderer-zRq0j6Xy.mjs → renderer-g-0PCNoo.mjs} +3 -3
  253. package/dist/{renderer-zRq0j6Xy.mjs.map → renderer-g-0PCNoo.mjs.map} +1 -1
  254. package/dist/{renderer-2PjR3w-q.mjs → renderer-gmHKIbKI.mjs} +3 -3
  255. package/dist/{renderer-2PjR3w-q.mjs.map → renderer-gmHKIbKI.mjs.map} +1 -1
  256. package/dist/{renderer-03mYJLgX.mjs → renderer-kVZwiRoK.mjs} +3 -3
  257. package/dist/{renderer-03mYJLgX.mjs.map → renderer-kVZwiRoK.mjs.map} +1 -1
  258. package/dist/renderer-oPMypDM1.mjs +5 -0
  259. package/dist/{renderer-DcAKDAnS.mjs → renderer-p7tgxP-A.mjs} +3 -3
  260. package/dist/{renderer-DcAKDAnS.mjs.map → renderer-p7tgxP-A.mjs.map} +1 -1
  261. package/dist/{renderer-jUKdkmG5.mjs → renderer-tvYj306A.mjs} +81 -78
  262. package/dist/renderer-tvYj306A.mjs.map +1 -0
  263. package/dist/renderer-xvWGpVyp.mjs +5 -0
  264. package/dist/renderer-zafZbD6Q.mjs +5 -0
  265. package/dist/{renderers-CP8CFWDs-CshljORp.mjs → renderers-CP8CFWDs-DLjtjrwx.mjs} +2 -2
  266. package/dist/{renderers-CP8CFWDs-CshljORp.mjs.map → renderers-CP8CFWDs-DLjtjrwx.mjs.map} +1 -1
  267. package/dist/sam/index.d.mts +2 -2
  268. package/dist/sam/index.mjs +1 -1
  269. package/dist/signals/index.d.mts +4 -4
  270. package/dist/signals/index.mjs +4 -4
  271. package/dist/{src-BU6vm9sP-DdTHmCr4.mjs → src-B23p_eh7-Cj6-lvV6.mjs} +293 -6
  272. package/dist/src-B23p_eh7-Cj6-lvV6.mjs.map +1 -0
  273. package/dist/{src-Dy4gnc6w.mjs → src-CoHAjviq.mjs} +1349 -177
  274. package/dist/src-CoHAjviq.mjs.map +1 -0
  275. package/dist/storage/index.mjs +1 -1
  276. package/package.json +63 -60
  277. package/dist/dist--Uu5bQ_6.mjs.map +0 -1
  278. package/dist/dist-CiTgmfUw.mjs.map +0 -1
  279. package/dist/fonts-OW3yAfO5.mjs.map +0 -1
  280. package/dist/index-9xte4JgL.d.mts.map +0 -1
  281. package/dist/index-Bv7gxGK1.d.mts.map +0 -1
  282. package/dist/index-C5sgRLlG.d.mts.map +0 -1
  283. package/dist/index-C7-p9zwU.d.mts.map +0 -1
  284. package/dist/index-CRaydvLi.d.mts.map +0 -1
  285. package/dist/index-D1FqV1eu.d.mts.map +0 -1
  286. package/dist/preview-D7BGmE1E.mjs +0 -2446
  287. package/dist/preview-D7BGmE1E.mjs.map +0 -1
  288. package/dist/preview-engine/chunk-5DZTPUMH.mjs +0 -2568
  289. package/dist/preview-engine/chunk-NCQHOGZK.mjs +0 -3
  290. package/dist/preview-engine/chunk-PH3UUX6A.mjs +0 -138
  291. package/dist/preview-engine/chunk-UPZURPJY.mjs +0 -2227
  292. package/dist/preview-engine/renderers-DLJOA3BM.mjs +0 -228
  293. package/dist/program-tFKCWU2j.mjs.map +0 -1
  294. package/dist/renderer-6_bzbbXt.mjs +0 -5
  295. package/dist/renderer-8M-9G6F_.mjs +0 -5
  296. package/dist/renderer-B5OzKvF8.mjs +0 -5
  297. package/dist/renderer-BBCZ2qbE.mjs +0 -5
  298. package/dist/renderer-BChbxCux.mjs +0 -5
  299. package/dist/renderer-BGeMPr8C.mjs +0 -5
  300. package/dist/renderer-BPQ8Pkjb.mjs +0 -5
  301. package/dist/renderer-BTRpA3HD.mjs +0 -5
  302. package/dist/renderer-BVIXKfbC.mjs.map +0 -1
  303. package/dist/renderer-BVsECSn-.mjs +0 -5
  304. package/dist/renderer-Bgos68gc.mjs +0 -6
  305. package/dist/renderer-BjHOvoqO.mjs +0 -5
  306. package/dist/renderer-BjXMPPlV.mjs +0 -5
  307. package/dist/renderer-Byobxqkv.mjs +0 -5
  308. package/dist/renderer-CKrsg3EG.mjs +0 -5
  309. package/dist/renderer-Cj875NuH.mjs +0 -5
  310. package/dist/renderer-CnmzJoMv.mjs +0 -5
  311. package/dist/renderer-CtklDaMg.mjs +0 -5
  312. package/dist/renderer-D1tK3in_.mjs +0 -5
  313. package/dist/renderer-D2yc9P61.mjs +0 -5
  314. package/dist/renderer-D4v-JvSr.mjs +0 -5
  315. package/dist/renderer-D5yp74NL.mjs +0 -3
  316. package/dist/renderer-D7WRWDwB.mjs +0 -5
  317. package/dist/renderer-DGvA0tdB.mjs +0 -5
  318. package/dist/renderer-DO7v5Sdm.mjs +0 -5
  319. package/dist/renderer-DRVvt7-V.mjs +0 -5
  320. package/dist/renderer-DYMCd3jL.mjs +0 -5
  321. package/dist/renderer-DmHKw-MM.mjs +0 -5
  322. package/dist/renderer-DoDsuZ6G.mjs +0 -5
  323. package/dist/renderer-EpgclS70.mjs +0 -5
  324. package/dist/renderer-GroKiYyK.mjs +0 -5
  325. package/dist/renderer-MQ5K_xIS.mjs +0 -5
  326. package/dist/renderer-U43SflML.mjs +0 -5
  327. package/dist/renderer-UqOmBgCv.mjs +0 -5
  328. package/dist/renderer-XLULgJM0.mjs +0 -5
  329. package/dist/renderer-jUKdkmG5.mjs.map +0 -1
  330. package/dist/renderer-lNjxY1GG.mjs +0 -5
  331. package/dist/renderer-ukufL7pl.mjs +0 -5
  332. package/dist/renderer-wb0NCKdF.mjs +0 -5
  333. package/dist/src-BU6vm9sP-DdTHmCr4.mjs.map +0 -1
  334. package/dist/src-Dy4gnc6w.mjs.map +0 -1
@@ -2,11 +2,11 @@ import { Pt as frameSignal, pn as programmaticSignal } from "./dist-C8XSqfTx.mjs
2
2
  import { a as PoseSkeletonComputePipeline } from "./dist-DgZpN6IK.mjs";
3
3
  import { existsSync, mkdirSync, statSync } from "node:fs";
4
4
  import { dirname, join, resolve } from "node:path";
5
- import { readFile, rename, unlink, writeFile } from "node:fs/promises";
6
5
  import { createHash } from "node:crypto";
6
+ import { readFile, rename, unlink, writeFile } from "node:fs/promises";
7
7
  import { homedir } from "node:os";
8
8
 
9
- //#region ../vision/dist/registry-DOHiTjt1.mjs
9
+ //#region ../vision/dist/registry-DJ-XmFZF.mjs
10
10
  const hf = (repo, revision, path$1) => `https://huggingface.co/${repo}/resolve/${revision}/${path$1}`;
11
11
  const RTMDET_INS_REPO = "tori29umai/rtmdet-ins-onnx-person-masks";
12
12
  const RTMDET_INS_REV = "e5218e8d47d7c50077f27f9893a28e0ef2ad5656";
@@ -14,6 +14,7 @@ const RTMDET_INS_SOURCE = "RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdep
14
14
  const RTMO_SOURCE = "RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export";
15
15
  const SELFIE_SOURCE = "MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export";
16
16
  const DEPTH_SOURCE = "Depth Anything V2 Small (TikTok / HKU, Apache-2.0), ONNX export";
17
+ const VITMATTE_SOURCE = "ViTMatte Small, Distinctions-646 (HUST Vision Lab, code MIT, weights Apache-2.0), ONNX export";
17
18
  const models = {
18
19
  "rtmdet-ins-t": {
19
20
  key: "rtmdet-ins-t",
@@ -104,6 +105,16 @@ const models = {
104
105
  sha256: "afb6a5c28f3b6bf1618c6e43f02073ef9dfdc70e937502d51603e57b0a1df10c",
105
106
  input: [518, 518],
106
107
  source: DEPTH_SOURCE
108
+ },
109
+ "vitmatte-s": {
110
+ key: "vitmatte-s",
111
+ family: "vitmatte",
112
+ filename: "vitmatte-s.onnx",
113
+ url: hf("Xenova/vitmatte-small-distinctions-646", "358d428c452e5e0cd52955011a8b51944731d28e", "onnx/model.onnx"),
114
+ bytes: 103885865,
115
+ sha256: "a1cf48234c369faa3ea1711981d961fe1ec71f51e593f9d6553aa5a0e7d557e3",
116
+ input: [1024, 1024],
117
+ source: VITMATTE_SOURCE
107
118
  }
108
119
  };
109
120
  const VISION_MODELS = models;
@@ -205,7 +216,7 @@ const COCO_CLASSES = [
205
216
  ];
206
217
 
207
218
  //#endregion
208
- //#region ../vision/dist/src-BU6vm9sP.mjs
219
+ //#region ../vision/dist/src-B23p_eh7.mjs
209
220
  function computeIoU(boxA, boxB) {
210
221
  const xA = Math.max(boxA.originX, boxB.originX);
211
222
  const yA = Math.max(boxA.originY, boxB.originY);
@@ -1650,6 +1661,238 @@ var SegmentationTexturePool = class {
1650
1661
  }
1651
1662
  };
1652
1663
  /**
1664
+ * Trimaps from hard masks, for alpha matting: pixels well inside the mask are
1665
+ * foreground, pixels well outside are background, and a band of `band` pixels
1666
+ * either side of the edge is unknown, for the matting model to resolve.
1667
+ */
1668
+ /** Trimap values, as ViTMatte reads them (0, 0.5, 1 on its 0..1 scale). */
1669
+ const TRIMAP_BACKGROUND = 0;
1670
+ const TRIMAP_UNKNOWN = 128;
1671
+ const TRIMAP_FOREGROUND = 255;
1672
+ const FAR = 0x56bc75e2d63100000;
1673
+ /**
1674
+ * Squared Euclidean distance from every pixel to the nearest pixel where
1675
+ * `inside(i)` holds, with that pixel's index (−1 when there is none).
1676
+ * Felzenszwalb and Huttenlocher's two-pass lower envelope, O(width × height).
1677
+ */
1678
+ function distanceTransform(width, height, inside) {
1679
+ const n = width * height;
1680
+ const columns = new Float32Array(n);
1681
+ const columnFrom = new Int32Array(n);
1682
+ const scratch = envelopeScratch(Math.max(width, height));
1683
+ for (let x = 0; x < width; x++) {
1684
+ for (let y = 0; y < height; y++) scratch.f[y] = inside(y * width + x) ? 0 : FAR;
1685
+ envelope(scratch, height);
1686
+ for (let y = 0; y < height; y++) {
1687
+ columns[y * width + x] = scratch.d[y];
1688
+ columnFrom[y * width + x] = scratch.from[y];
1689
+ }
1690
+ }
1691
+ const distance = new Float32Array(n);
1692
+ const nearest = new Int32Array(n);
1693
+ for (let y = 0; y < height; y++) {
1694
+ const row = y * width;
1695
+ for (let x = 0; x < width; x++) scratch.f[x] = columns[row + x];
1696
+ envelope(scratch, width);
1697
+ for (let x = 0; x < width; x++) {
1698
+ const d = scratch.d[x];
1699
+ const fromX = scratch.from[x];
1700
+ distance[row + x] = d;
1701
+ nearest[row + x] = d >= FAR ? -1 : columnFrom[row + fromX] * width + fromX;
1702
+ }
1703
+ }
1704
+ return {
1705
+ distance,
1706
+ nearest
1707
+ };
1708
+ }
1709
+ function envelopeScratch(length) {
1710
+ return {
1711
+ f: new Float64Array(length),
1712
+ d: new Float64Array(length),
1713
+ from: new Int32Array(length),
1714
+ v: new Int32Array(length),
1715
+ z: new Float64Array(length + 1)
1716
+ };
1717
+ }
1718
+ /** One dimension: d[q] = min over p of (q − p)² + f[p]. */
1719
+ function envelope(s, length) {
1720
+ const { f, d, from, v, z } = s;
1721
+ let k = -1;
1722
+ for (let q = 0; q < length; q++) {
1723
+ const fq = f[q];
1724
+ if (fq >= FAR) continue;
1725
+ let cut = Number.NEGATIVE_INFINITY;
1726
+ while (k >= 0) {
1727
+ const p = v[k];
1728
+ cut = (fq + q * q - (f[p] + p * p)) / (2 * (q - p));
1729
+ if (cut > z[k]) break;
1730
+ k--;
1731
+ }
1732
+ k++;
1733
+ v[k] = q;
1734
+ z[k] = k === 0 ? Number.NEGATIVE_INFINITY : cut;
1735
+ z[k + 1] = Number.POSITIVE_INFINITY;
1736
+ }
1737
+ if (k < 0) {
1738
+ d.fill(FAR, 0, length);
1739
+ from.fill(0, 0, length);
1740
+ return;
1741
+ }
1742
+ let j = 0;
1743
+ for (let q = 0; q < length; q++) {
1744
+ while (z[j + 1] < q) j++;
1745
+ const p = v[j];
1746
+ d[q] = (q - p) * (q - p) + f[p];
1747
+ from[q] = p;
1748
+ }
1749
+ }
1750
+ /**
1751
+ * The trimap of a mask (`mask[i] >= 128` is inside): an unknown band of
1752
+ * `band` px either side of the edge, foreground inside it, background outside.
1753
+ */
1754
+ function trimapFromMask(mask, width, height, band) {
1755
+ const outside = distanceTransform(width, height, (i) => mask[i] >= 128);
1756
+ const inside = distanceTransform(width, height, (i) => mask[i] < 128);
1757
+ const r2 = band * band;
1758
+ const data = new Uint8Array(width * height);
1759
+ let x0 = width;
1760
+ let y0 = height;
1761
+ let x1 = 0;
1762
+ let y1 = 0;
1763
+ for (let y = 0; y < height; y++) for (let x = 0; x < width; x++) {
1764
+ const i = y * width + x;
1765
+ const isIn = mask[i] >= 128;
1766
+ if ((isIn ? inside.distance[i] : outside.distance[i]) > r2) {
1767
+ data[i] = isIn ? TRIMAP_FOREGROUND : TRIMAP_BACKGROUND;
1768
+ continue;
1769
+ }
1770
+ data[i] = TRIMAP_UNKNOWN;
1771
+ if (x < x0) x0 = x;
1772
+ if (y < y0) y0 = y;
1773
+ if (x >= x1) x1 = x + 1;
1774
+ if (y >= y1) y1 = y + 1;
1775
+ }
1776
+ return {
1777
+ data,
1778
+ width,
1779
+ height,
1780
+ unknown: x1 > x0 ? [
1781
+ x0,
1782
+ y0,
1783
+ x1,
1784
+ y1
1785
+ ] : null,
1786
+ nearest: outside.nearest
1787
+ };
1788
+ }
1789
+ /** Default band for a frame: about 1.2% of its short side, 3…40 px (13 px at 1080p). */
1790
+ function defaultMatteBand(width, height) {
1791
+ return Math.min(40, Math.max(3, Math.round(Math.min(width, height) * .012)));
1792
+ }
1793
+ /** ViTMatte's patch grid: both input sides pad to a multiple of 32 (as its image processor does). */
1794
+ const DIVISOR = 32;
1795
+ /**
1796
+ * The window around a trimap's unknown band, grown by `context` px so the
1797
+ * model sees what is on either side, and scaled down when its long side
1798
+ * exceeds `resolution`. Null when there is nothing to resolve.
1799
+ */
1800
+ function matteWindow(trimap, context, resolution) {
1801
+ if (!trimap.unknown) return null;
1802
+ const [ux0, uy0, ux1, uy1] = trimap.unknown;
1803
+ const x0 = Math.max(0, ux0 - context);
1804
+ const y0 = Math.max(0, uy0 - context);
1805
+ const x1 = Math.min(trimap.width, ux1 + context);
1806
+ const y1 = Math.min(trimap.height, uy1 + context);
1807
+ const scale = Math.min(1, resolution / Math.max(x1 - x0, y1 - y0));
1808
+ const contentWidth = Math.max(1, Math.round((x1 - x0) * scale));
1809
+ const contentHeight = Math.max(1, Math.round((y1 - y0) * scale));
1810
+ return {
1811
+ x0,
1812
+ y0,
1813
+ x1,
1814
+ y1,
1815
+ scale,
1816
+ contentWidth,
1817
+ contentHeight,
1818
+ inputWidth: Math.ceil(contentWidth / DIVISOR) * DIVISOR,
1819
+ inputHeight: Math.ceil(contentHeight / DIVISOR) * DIVISOR
1820
+ };
1821
+ }
1822
+ /**
1823
+ * The model input `[1, 4, H, W]`: RGB as (v / 255 − 0.5) / 0.5, then the
1824
+ * trimap on 0…1. The image is sampled bilinearly, the trimap nearest so its
1825
+ * three levels stay exact; padding is zero in every channel.
1826
+ */
1827
+ function vitmatteInput(image, trimap, window, out) {
1828
+ const { inputWidth: w, inputHeight: h } = window;
1829
+ const plane = w * h;
1830
+ const tensor = out && out.length >= 4 * plane ? out.subarray(0, 4 * plane) : new Float32Array(4 * plane);
1831
+ tensor.fill(0);
1832
+ const { data, width: sw, height: sh } = image;
1833
+ const inv = 1 / window.scale;
1834
+ for (let y = 0; y < window.contentHeight; y++) {
1835
+ const sy = Math.min(sh - 1, Math.max(0, window.y0 + (y + .5) * inv - .5));
1836
+ const y0 = Math.floor(sy);
1837
+ const y1 = Math.min(sh - 1, y0 + 1);
1838
+ const fy = sy - y0;
1839
+ const ty = Math.min(window.y1 - 1, Math.floor(window.y0 + (y + .5) * inv));
1840
+ for (let x = 0; x < window.contentWidth; x++) {
1841
+ const sx = Math.min(sw - 1, Math.max(0, window.x0 + (x + .5) * inv - .5));
1842
+ const x0 = Math.floor(sx);
1843
+ const x1 = Math.min(sw - 1, x0 + 1);
1844
+ const fx = sx - x0;
1845
+ const o = y * w + x;
1846
+ for (let c = 0; c < 3; c++) {
1847
+ const a = data[(y0 * sw + x0) * 4 + c];
1848
+ const b = data[(y0 * sw + x1) * 4 + c];
1849
+ const d = data[(y1 * sw + x0) * 4 + c];
1850
+ const e = data[(y1 * sw + x1) * 4 + c];
1851
+ const top = a + (b - a) * fx;
1852
+ const v = top + (d + (e - d) * fx - top) * fy;
1853
+ tensor[c * plane + o] = v / 127.5 - 1;
1854
+ }
1855
+ const tx = Math.min(window.x1 - 1, Math.floor(window.x0 + (x + .5) * inv));
1856
+ tensor[3 * plane + o] = trimap.data[ty * trimap.width + tx] / 255;
1857
+ }
1858
+ }
1859
+ return tensor;
1860
+ }
1861
+ /**
1862
+ * The frame's alpha: the trimap's foreground and background as they are,
1863
+ * and the model's alpha (sampled back to source px) across the unknown band.
1864
+ */
1865
+ function composeMatte(trimap, window, alphas) {
1866
+ const { width } = trimap;
1867
+ const out = Uint8Array.from(trimap.data, (v) => v === TRIMAP_UNKNOWN ? 0 : v);
1868
+ if (!window) return out;
1869
+ const w = window.inputWidth;
1870
+ const maxX = window.contentWidth - 1;
1871
+ const maxY = window.contentHeight - 1;
1872
+ for (let y = window.y0; y < window.y1; y++) {
1873
+ const my = Math.min(maxY, Math.max(0, (y - window.y0 + .5) * window.scale - .5));
1874
+ const my0 = Math.floor(my);
1875
+ const my1 = Math.min(maxY, my0 + 1);
1876
+ const fy = my - my0;
1877
+ for (let x = window.x0; x < window.x1; x++) {
1878
+ const i = y * width + x;
1879
+ if (trimap.data[i] !== TRIMAP_UNKNOWN) continue;
1880
+ const mx = Math.min(maxX, Math.max(0, (x - window.x0 + .5) * window.scale - .5));
1881
+ const mx0 = Math.floor(mx);
1882
+ const mx1 = Math.min(maxX, mx0 + 1);
1883
+ const fx = mx - mx0;
1884
+ const a = alphas[my0 * w + mx0];
1885
+ const b = alphas[my0 * w + mx1];
1886
+ const c = alphas[my1 * w + mx0];
1887
+ const d = alphas[my1 * w + mx1];
1888
+ const top = a + (b - a) * fx;
1889
+ const v = top + (c + (d - c) * fx - top) * fy;
1890
+ out[i] = Math.round(Math.min(1, Math.max(0, v)) * 255);
1891
+ }
1892
+ }
1893
+ return out;
1894
+ }
1895
+ /**
1653
1896
  * Resolves the default model cache directory:
1654
1897
  * 1. `FRAMEFIELDS_MODELS_DIR`
1655
1898
  * 2. `~/.cache/framefields/models`
@@ -2915,6 +3158,46 @@ var VisionRunner = class VisionRunner$1 {
2915
3158
  const dims = predicted.dims;
2916
3159
  return decodeDepth(predicted.data, dims[dims.length - 1] ?? input[0], dims[dims.length - 2] ?? input[1]);
2917
3160
  }
3161
+ /**
3162
+ * Resolves a hard mask's edge to soft alpha (ViTMatte Small): hair, motion
3163
+ * blur and see-through parts. `mask` is frame-sized, inside where ≥ 128.
3164
+ * Only a band around the edge changes; one model pass covers every part of
3165
+ * the mask, cropped to the band and scaled to `resolution`.
3166
+ */
3167
+ async refineMatte(image, mask, options = {}) {
3168
+ const { width, height } = image;
3169
+ if (mask.length !== width * height) throw new Error(`refineMatte: the mask has ${mask.length} pixels; the frame has ${width}×${height}.`);
3170
+ const band = Math.max(1, Math.round(options.band ?? defaultMatteBand(width, height)));
3171
+ const key = "vitmatte-s";
3172
+ const trimap = trimapFromMask(mask, width, height, band);
3173
+ const window = matteWindow(trimap, Math.max(32, band * 2), options.resolution ?? VISION_MODELS[key].input[0]);
3174
+ let alphas = [];
3175
+ if (window) {
3176
+ const pixels = isGpuImage(image) ? await readTexturePixels(image) : image;
3177
+ alphas = output(await this.queued(key, async () => {
3178
+ const session = await this.session(key);
3179
+ const scratch = this._core.tensorScratch;
3180
+ const data = vitmatteInput(pixels, trimap, window, scratch.get(key));
3181
+ if (data.buffer !== scratch.get(key)?.buffer) scratch.set(key, data);
3182
+ return session.run({
3183
+ name: "pixel_values",
3184
+ data,
3185
+ dims: [
3186
+ 1,
3187
+ 4,
3188
+ window.inputHeight,
3189
+ window.inputWidth
3190
+ ]
3191
+ });
3192
+ }), "alphas", key).data;
3193
+ }
3194
+ return {
3195
+ mask: composeMatte(trimap, window, alphas),
3196
+ width,
3197
+ height,
3198
+ nearest: trimap.nearest
3199
+ };
3200
+ }
2918
3201
  close() {
2919
3202
  if (!this._ownsCore) return;
2920
3203
  const core = this._core;
@@ -2965,8 +3248,12 @@ var VisionRunner = class VisionRunner$1 {
2965
3248
  * the input scratch buffer, and one run already uses the session's threads.
2966
3249
  */
2967
3250
  infer(key, image, input) {
3251
+ return this.queued(key, () => this.inferNow(key, image, input));
3252
+ }
3253
+ /** Runs `fn` after the model's earlier runs: one inference per session at a time. */
3254
+ queued(key, fn) {
2968
3255
  const queue = this._core.runQueue;
2969
- const run = (queue.get(key) ?? Promise.resolve()).then(() => this.inferNow(key, image, input), () => this.inferNow(key, image, input));
3256
+ const run = (queue.get(key) ?? Promise.resolve()).then(fn, fn);
2970
3257
  const tail = run.catch(() => void 0);
2971
3258
  queue.set(key, tail);
2972
3259
  tail.then(() => {
@@ -4380,5 +4667,5 @@ var VisionNode = class VisionNode$1 {
4380
4667
  };
4381
4668
 
4382
4669
  //#endregion
4383
- export { setVisionDevice as A, matchPoseToTracks as C, readTexturePixels as D, pinNodeToObject as E, registerVisionModel as F, varint as M, COCO_CLASSES as N, readVarint as O, VISION_MODELS as P, maskObject as S, pinNodeToLandmark as T, fields as _, PoseSkeletonRenderer as a, lengthDelimited as b, TemporalObjectTracker as c, VisionNode as d, VisionRunner as f, encoder as g, createDefaultSessionProvider as h, COCO17_KEYPOINT_NAMES as i, strings as j, sessionCompute as k, VisionBundle as l, concat as m, COCO17_BONES as n, SegmentationTexturePool as o, analyzeSequence as p, COCO17_KEYPOINTS as r, SpatialLandmarkTransformer as s, CLIP_SUBJECT as t, VisionModelStore as u, firstString as v, mergeSubjectMask as w, maskBounds as x, imageToTensor as y };
4384
- //# sourceMappingURL=src-BU6vm9sP-DdTHmCr4.mjs.map
4670
+ export { sessionCompute as A, maskObject as C, pinNodeToObject as D, pinNodeToLandmark as E, VISION_MODELS as F, registerVisionModel as I, strings as M, varint as N, readTexturePixels as O, COCO_CLASSES as P, maskBounds as S, mergeSubjectMask as T, encoder as _, PoseSkeletonRenderer as a, imageToTensor as b, TemporalObjectTracker as c, VisionNode as d, VisionRunner as f, defaultMatteBand as g, createDefaultSessionProvider as h, COCO17_KEYPOINT_NAMES as i, setVisionDevice as j, readVarint as k, VisionBundle as l, concat as m, COCO17_BONES as n, SegmentationTexturePool as o, analyzeSequence as p, COCO17_KEYPOINTS as r, SpatialLandmarkTransformer as s, CLIP_SUBJECT as t, VisionModelStore as u, fields as v, matchPoseToTracks as w, lengthDelimited as x, firstString as y };
4671
+ //# sourceMappingURL=src-B23p_eh7-Cj6-lvV6.mjs.map