framefields 2.14.0 → 2.16.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 (333) 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.mjs +1 -1
  11. package/dist/{cloud-Cj1TIme8.mjs → cloud-jnk1hPYf.mjs} +2 -2
  12. package/dist/{cloud-Cj1TIme8.mjs.map → cloud-jnk1hPYf.mjs.map} +1 -1
  13. package/dist/components/index.d.mts +11 -11
  14. package/dist/components/index.mjs +43 -43
  15. package/dist/{dist-Kbf-JTry.mjs → dist-BtI6ukB5.mjs} +2 -2
  16. package/dist/{dist-Kbf-JTry.mjs.map → dist-BtI6ukB5.mjs.map} +1 -1
  17. package/dist/{dist-B8Nby2CU.mjs → dist-COOpgG9G.mjs} +4 -3
  18. package/dist/{dist-B8Nby2CU.mjs.map → dist-COOpgG9G.mjs.map} +1 -1
  19. package/dist/{dist--Uu5bQ_6.mjs → dist-XqlFM2a8.mjs} +13733 -5323
  20. package/dist/dist-XqlFM2a8.mjs.map +1 -0
  21. package/dist/{dist-CiTgmfUw.mjs → dist-f1zkl69f.mjs} +4 -4
  22. package/dist/dist-f1zkl69f.mjs.map +1 -0
  23. package/dist/{dist-B_rSWeOz.mjs → dist-umQOWz0a.mjs} +1 -1
  24. package/dist/effects/index.d.mts +4 -4
  25. package/dist/effects/index.mjs +35 -35
  26. package/dist/{effects-WMgv8ZaD.mjs → effects-DlRMovU5.mjs} +2 -2
  27. package/dist/{effects-WMgv8ZaD.mjs.map → effects-DlRMovU5.mjs.map} +1 -1
  28. package/dist/fonts/index.d.mts +1 -1
  29. package/dist/fonts/index.mjs +2 -2
  30. package/dist/{fonts-OW3yAfO5.mjs → fonts-BWYcXjyK.mjs} +3 -3
  31. package/dist/fonts-BWYcXjyK.mjs.map +1 -0
  32. package/dist/{gpu-R4T2Tndu.mjs → gpu-CH1PdM4T.mjs} +2 -2
  33. package/dist/{gpu-R4T2Tndu.mjs.map → gpu-CH1PdM4T.mjs.map} +1 -1
  34. package/dist/{index-CEKxvGY-.d.mts → index-BHTycml5.d.mts} +2 -2
  35. package/dist/{index-CEKxvGY-.d.mts.map → index-BHTycml5.d.mts.map} +1 -1
  36. package/dist/{index-DoP6EiHj.d.mts → index-BcxxxwhV.d.mts} +4 -4
  37. package/dist/{index-DoP6EiHj.d.mts.map → index-BcxxxwhV.d.mts.map} +1 -1
  38. package/dist/index-C-V6CAhP.d.mts.map +1 -1
  39. package/dist/{index-D1FqV1eu.d.mts → index-CMhkkc56.d.mts} +43 -11
  40. package/dist/index-CMhkkc56.d.mts.map +1 -0
  41. package/dist/{index-B0Vq8Bwf.d.mts → index-CYVpYGM-.d.mts} +2 -2
  42. package/dist/{index-B0Vq8Bwf.d.mts.map → index-CYVpYGM-.d.mts.map} +1 -1
  43. package/dist/{index-Bv7gxGK1.d.mts → index-Cq8jgdNY.d.mts} +90 -3
  44. package/dist/index-Cq8jgdNY.d.mts.map +1 -0
  45. package/dist/{index-9xte4JgL.d.mts → index-Dg5BAtDq.d.mts} +1446 -541
  46. package/dist/index-Dg5BAtDq.d.mts.map +1 -0
  47. package/dist/{index-C7-p9zwU.d.mts → index-DhL7ckvs.d.mts} +5 -5
  48. package/dist/index-DhL7ckvs.d.mts.map +1 -0
  49. package/dist/{index-GA9_Z8Fn.d.mts → index-RILu3ULT.d.mts} +2 -2
  50. package/dist/{index-GA9_Z8Fn.d.mts.map → index-RILu3ULT.d.mts.map} +1 -1
  51. package/dist/{index-C5sgRLlG.d.mts → index-TCtdSXd7.d.mts} +3 -1
  52. package/dist/index-TCtdSXd7.d.mts.map +1 -0
  53. package/dist/{index-CRaydvLi.d.mts → index-s2qQ8ifZ.d.mts} +886 -51
  54. package/dist/index-s2qQ8ifZ.d.mts.map +1 -0
  55. package/dist/index.d.mts +13 -13
  56. package/dist/index.mjs +52 -52
  57. package/dist/preview/index.d.mts +4 -4
  58. package/dist/preview/index.mjs +11 -11
  59. package/dist/preview-Dm912wly.mjs +1037 -0
  60. package/dist/preview-Dm912wly.mjs.map +1 -0
  61. package/dist/preview-engine/audio.mjs +1 -1
  62. package/dist/preview-engine/{chunk-64L4GUOF.mjs → chunk-4F3DG6YB.mjs} +2 -2
  63. package/dist/preview-engine/chunk-A2OTOW3B.mjs +4694 -0
  64. package/dist/preview-engine/{chunk-GNDE3OXQ.mjs → chunk-BR56TQBP.mjs} +1 -1
  65. package/dist/preview-engine/{chunk-ADLIF544.mjs → chunk-H2XKXXAU.mjs} +1 -1
  66. package/dist/preview-engine/chunk-NDUODAY2.mjs +3 -0
  67. package/dist/preview-engine/{chunk-FZ4RD7HV.mjs → chunk-QAQJSWUT.mjs} +1 -1
  68. package/dist/preview-engine/chunk-SWRGQTVC.mjs +138 -0
  69. package/dist/preview-engine/{chunk-52X7SURQ.mjs → chunk-TEA3GVBJ.mjs} +1 -1
  70. package/dist/preview-engine/chunk-VZUVB3BP.mjs +644 -0
  71. package/dist/preview-engine/{chunk-UBY2UYEL.mjs → chunk-XSHNQJ7L.mjs} +1 -1
  72. package/dist/preview-engine/components.mjs +1 -1
  73. package/dist/preview-engine/effects.mjs +1 -1
  74. package/dist/preview-engine/fonts.mjs +1 -1
  75. package/dist/preview-engine/framefields.mjs +1 -1
  76. package/dist/preview-engine/player.mjs +3 -3
  77. package/dist/preview-engine/{renderers-DU7KPFVV.mjs → renderers-6C7NWWDX.mjs} +1 -1
  78. package/dist/preview-engine/renderers-HHVGNMSJ.mjs +206 -0
  79. package/dist/preview-engine/{src-YXNX4MLK.mjs → src-RCNEKIRP.mjs} +1 -1
  80. package/dist/preview-page/index.html +19 -0
  81. package/dist/preview-page/main.css +1 -0
  82. package/dist/preview-page/main.js +326 -0
  83. package/dist/{program-tFKCWU2j.mjs → program-CMigyfso.mjs} +829 -52
  84. package/dist/program-CMigyfso.mjs.map +1 -0
  85. package/dist/renderer/index.d.mts +2 -2
  86. package/dist/renderer/index.mjs +2 -2
  87. package/dist/{renderer-DkOuQi84.mjs → renderer-0GMEL_Zi.mjs} +3 -3
  88. package/dist/{renderer-DkOuQi84.mjs.map → renderer-0GMEL_Zi.mjs.map} +1 -1
  89. package/dist/{renderer-BGp0An5A.mjs → renderer-3Wv2ZBJG.mjs} +3 -3
  90. package/dist/{renderer-BGp0An5A.mjs.map → renderer-3Wv2ZBJG.mjs.map} +1 -1
  91. package/dist/{renderer-BVIXKfbC.mjs → renderer-4nXkaAWu.mjs} +1178 -199
  92. package/dist/renderer-4nXkaAWu.mjs.map +1 -0
  93. package/dist/{renderer-Cw6_NL2i.mjs → renderer-6SnfLXeg.mjs} +3 -3
  94. package/dist/{renderer-Cw6_NL2i.mjs.map → renderer-6SnfLXeg.mjs.map} +1 -1
  95. package/dist/{renderer-BVU22lBS.mjs → renderer-8gHw3O0P.mjs} +2 -2
  96. package/dist/{renderer-BVU22lBS.mjs.map → renderer-8gHw3O0P.mjs.map} +1 -1
  97. package/dist/{renderer-BjDddtw9.mjs → renderer-AOBglZHC.mjs} +2 -2
  98. package/dist/{renderer-D-KHHWQD.mjs → renderer-B0bSARK3.mjs} +3 -3
  99. package/dist/{renderer-D-KHHWQD.mjs.map → renderer-B0bSARK3.mjs.map} +1 -1
  100. package/dist/{renderer-CCxk-RJR.mjs → renderer-B2_tuRfl.mjs} +2 -2
  101. package/dist/{renderer-CCxk-RJR.mjs.map → renderer-B2_tuRfl.mjs.map} +1 -1
  102. package/dist/{renderer-k5d7JSbs.mjs → renderer-B82FhkEr.mjs} +3 -3
  103. package/dist/{renderer-k5d7JSbs.mjs.map → renderer-B82FhkEr.mjs.map} +1 -1
  104. package/dist/{renderer-I0Hh9cLK.mjs → renderer-B9lzA0PY.mjs} +3 -3
  105. package/dist/{renderer-I0Hh9cLK.mjs.map → renderer-B9lzA0PY.mjs.map} +1 -1
  106. package/dist/{renderer-Dwwnx7Dk.mjs → renderer-BBSIWSry.mjs} +2 -2
  107. package/dist/{renderer-Dwwnx7Dk.mjs.map → renderer-BBSIWSry.mjs.map} +1 -1
  108. package/dist/{renderer-_pC-jB9O.mjs → renderer-BEKDMxbi.mjs} +2 -2
  109. package/dist/{renderer-_pC-jB9O.mjs.map → renderer-BEKDMxbi.mjs.map} +1 -1
  110. package/dist/renderer-BERGAxqA.mjs +5 -0
  111. package/dist/{renderer-raxwsiGI.mjs → renderer-BF960HY8.mjs} +3 -3
  112. package/dist/{renderer-raxwsiGI.mjs.map → renderer-BF960HY8.mjs.map} +1 -1
  113. package/dist/{renderer-Dr0tXA4k.mjs → renderer-BFwyVxCu.mjs} +3 -3
  114. package/dist/{renderer-Dr0tXA4k.mjs.map → renderer-BFwyVxCu.mjs.map} +1 -1
  115. package/dist/{renderer-DEjo6dw_.mjs → renderer-BNiwcI3-.mjs} +2 -2
  116. package/dist/{renderer-DEjo6dw_.mjs.map → renderer-BNiwcI3-.mjs.map} +1 -1
  117. package/dist/{renderer-DIEeHiQA.mjs → renderer-BPbVb2Q4.mjs} +2 -2
  118. package/dist/{renderer-DIEeHiQA.mjs.map → renderer-BPbVb2Q4.mjs.map} +1 -1
  119. package/dist/renderer-BQ_YkBMt.mjs +6 -0
  120. package/dist/{renderer-BBMtmxks.mjs → renderer-BUWxlA8T.mjs} +3 -3
  121. package/dist/{renderer-BBMtmxks.mjs.map → renderer-BUWxlA8T.mjs.map} +1 -1
  122. package/dist/renderer-BW0Tjsv9.mjs +5 -0
  123. package/dist/{renderer-Dgj46uEU.mjs → renderer-BX8liu-e.mjs} +2 -2
  124. package/dist/{renderer-ZnrEfkYh.mjs → renderer-BXIwDAr_.mjs} +2 -2
  125. package/dist/{renderer-ZnrEfkYh.mjs.map → renderer-BXIwDAr_.mjs.map} +1 -1
  126. package/dist/{renderer-DA8YEo_d.mjs → renderer-B_Hy1W-g.mjs} +3 -3
  127. package/dist/{renderer-DA8YEo_d.mjs.map → renderer-B_Hy1W-g.mjs.map} +1 -1
  128. package/dist/{renderer-iMiYStcW.mjs → renderer-Bb6cvSgh.mjs} +2 -2
  129. package/dist/{renderer-iMiYStcW.mjs.map → renderer-Bb6cvSgh.mjs.map} +1 -1
  130. package/dist/{renderer-BacY4nh8.mjs → renderer-BdppwWC9.mjs} +2 -2
  131. package/dist/{renderer-BacY4nh8.mjs.map → renderer-BdppwWC9.mjs.map} +1 -1
  132. package/dist/{renderer-CrxwW6VQ.mjs → renderer-Bhc24HVe.mjs} +3 -3
  133. package/dist/{renderer-CrxwW6VQ.mjs.map → renderer-Bhc24HVe.mjs.map} +1 -1
  134. package/dist/{renderer-BH7UCMPQ.mjs → renderer-BiNA2wF0.mjs} +2 -2
  135. package/dist/{renderer-BH7UCMPQ.mjs.map → renderer-BiNA2wF0.mjs.map} +1 -1
  136. package/dist/{renderer-DVPgWHZw.mjs → renderer-BmoBgTp5.mjs} +3 -3
  137. package/dist/{renderer-DVPgWHZw.mjs.map → renderer-BmoBgTp5.mjs.map} +1 -1
  138. package/dist/{renderer-C20efMI0.mjs → renderer-BmqFmCWS.mjs} +3 -3
  139. package/dist/{renderer-C20efMI0.mjs.map → renderer-BmqFmCWS.mjs.map} +1 -1
  140. package/dist/{renderer-B0yVUOPP.mjs → renderer-BnVwAObV.mjs} +2 -2
  141. package/dist/{renderer-B0yVUOPP.mjs.map → renderer-BnVwAObV.mjs.map} +1 -1
  142. package/dist/{renderer-CP8wLzTU.mjs → renderer-BxttZHme.mjs} +2 -2
  143. package/dist/{renderer-CP8wLzTU.mjs.map → renderer-BxttZHme.mjs.map} +1 -1
  144. package/dist/renderer-BzyPdUD1.mjs +5 -0
  145. package/dist/renderer-C0hM-mtY.mjs +5 -0
  146. package/dist/renderer-C6cyUTvk.mjs +5 -0
  147. package/dist/{renderer-BOSZAdgF.mjs → renderer-C8E4XsSg.mjs} +2 -2
  148. package/dist/{renderer-BOSZAdgF.mjs.map → renderer-C8E4XsSg.mjs.map} +1 -1
  149. package/dist/renderer-C8zY3pzk.mjs +5 -0
  150. package/dist/{renderer-DWq9gYRw.mjs → renderer-C9U-LY50.mjs} +3 -3
  151. package/dist/{renderer-DWq9gYRw.mjs.map → renderer-C9U-LY50.mjs.map} +1 -1
  152. package/dist/{renderer-Dj2H5JPR.mjs → renderer-CB2JVu5x.mjs} +3 -3
  153. package/dist/{renderer-Dj2H5JPR.mjs.map → renderer-CB2JVu5x.mjs.map} +1 -1
  154. package/dist/{renderer-Bcu3UrI-.mjs → renderer-CC4YBJ8Z.mjs} +3 -3
  155. package/dist/{renderer-Bcu3UrI-.mjs.map → renderer-CC4YBJ8Z.mjs.map} +1 -1
  156. package/dist/renderer-CEkSOyKu.mjs +5 -0
  157. package/dist/{renderer-DzLrvCB2.mjs → renderer-CIycc5O-.mjs} +2 -2
  158. package/dist/{renderer-DzLrvCB2.mjs.map → renderer-CIycc5O-.mjs.map} +1 -1
  159. package/dist/renderer-CJYtfa4x.mjs +5 -0
  160. package/dist/{renderer-BeNl_6EG.mjs → renderer-CJraQlV-.mjs} +2 -2
  161. package/dist/{renderer-BeNl_6EG.mjs.map → renderer-CJraQlV-.mjs.map} +1 -1
  162. package/dist/renderer-CKMtHGZh.mjs +5 -0
  163. package/dist/renderer-CLzicoiy.mjs +5 -0
  164. package/dist/renderer-CM2A4BHd.mjs +5 -0
  165. package/dist/{renderer-DtMVitEF.mjs → renderer-COWGWtob.mjs} +2 -2
  166. package/dist/{renderer-DtMVitEF.mjs.map → renderer-COWGWtob.mjs.map} +1 -1
  167. package/dist/{renderer-CT3zkfbf.mjs → renderer-COxG2XGf.mjs} +2 -2
  168. package/dist/{renderer-CT3zkfbf.mjs.map → renderer-COxG2XGf.mjs.map} +1 -1
  169. package/dist/{renderer-DNxWOz8Q.mjs → renderer-CQDCIsQm.mjs} +2 -2
  170. package/dist/{renderer-DNxWOz8Q.mjs.map → renderer-CQDCIsQm.mjs.map} +1 -1
  171. package/dist/{renderer-C5AoaymD.mjs → renderer-CRUeag8i.mjs} +3 -3
  172. package/dist/{renderer-C5AoaymD.mjs.map → renderer-CRUeag8i.mjs.map} +1 -1
  173. package/dist/{renderer-ngmYIIob.mjs → renderer-CWVput06.mjs} +3 -3
  174. package/dist/{renderer-ngmYIIob.mjs.map → renderer-CWVput06.mjs.map} +1 -1
  175. package/dist/renderer-CZlHjcxr.mjs +5 -0
  176. package/dist/{renderer-0rveCDm-.mjs → renderer-CbbnBLOB.mjs} +3 -3
  177. package/dist/{renderer-0rveCDm-.mjs.map → renderer-CbbnBLOB.mjs.map} +1 -1
  178. package/dist/renderer-CbimvSU8.mjs +5 -0
  179. package/dist/renderer-Ccvc63yd.mjs +5 -0
  180. package/dist/renderer-Cdp-SGfq.mjs +5 -0
  181. package/dist/renderer-CeTcSs3e.mjs +5 -0
  182. package/dist/{renderer-Brmbl12Y.mjs → renderer-CfLZein2.mjs} +3 -3
  183. package/dist/{renderer-Brmbl12Y.mjs.map → renderer-CfLZein2.mjs.map} +1 -1
  184. package/dist/{renderer-BJ8ea92W.mjs → renderer-Ch-q1O-q.mjs} +3 -3
  185. package/dist/{renderer-BJ8ea92W.mjs.map → renderer-Ch-q1O-q.mjs.map} +1 -1
  186. package/dist/{renderer-CP108ABB.mjs → renderer-Ch5JvJWl.mjs} +2 -2
  187. package/dist/{renderer-CP108ABB.mjs.map → renderer-Ch5JvJWl.mjs.map} +1 -1
  188. package/dist/{renderer-47y12Z37.mjs → renderer-ChtEzq-R.mjs} +2 -2
  189. package/dist/{renderer-47y12Z37.mjs.map → renderer-ChtEzq-R.mjs.map} +1 -1
  190. package/dist/{renderer-DhyMfG1v.mjs → renderer-Cj9nTC5l.mjs} +3 -3
  191. package/dist/{renderer-DhyMfG1v.mjs.map → renderer-Cj9nTC5l.mjs.map} +1 -1
  192. package/dist/{renderer-BDzn1AKF.mjs → renderer-CqT8HsSS.mjs} +2 -2
  193. package/dist/{renderer-BDzn1AKF.mjs.map → renderer-CqT8HsSS.mjs.map} +1 -1
  194. package/dist/{renderer-B7G1KohJ.mjs → renderer-CuQjMhdV.mjs} +2 -2
  195. package/dist/renderer-CvNuu52U.mjs +5 -0
  196. package/dist/renderer-CwciC0oI.mjs +5 -0
  197. package/dist/renderer-CysLUbIr.mjs +5 -0
  198. package/dist/{renderer-Cm0tsbQH.mjs → renderer-Cz30EVws.mjs} +2 -2
  199. package/dist/{renderer-Cm0tsbQH.mjs.map → renderer-Cz30EVws.mjs.map} +1 -1
  200. package/dist/renderer-D3A22Vxb.mjs +5 -0
  201. package/dist/renderer-D5SY9EmA.mjs +5 -0
  202. package/dist/renderer-D8h3ZvaE.mjs +5 -0
  203. package/dist/renderer-DE-B6N9n.mjs +5 -0
  204. package/dist/renderer-DETZTI7t.mjs +5 -0
  205. package/dist/{renderer-nHS3Sius.mjs → renderer-DHoX-5U_.mjs} +3 -3
  206. package/dist/{renderer-nHS3Sius.mjs.map → renderer-DHoX-5U_.mjs.map} +1 -1
  207. package/dist/{renderer-BWSRryIA.mjs → renderer-DOkm0Ycd.mjs} +2 -2
  208. package/dist/{renderer-BWSRryIA.mjs.map → renderer-DOkm0Ycd.mjs.map} +1 -1
  209. package/dist/{renderer-BHYJlK6H.d.mts → renderer-DU3f6ZrS.d.mts} +2 -2
  210. package/dist/{renderer-BHYJlK6H.d.mts.map → renderer-DU3f6ZrS.d.mts.map} +1 -1
  211. package/dist/{renderer-BpVOk9ux.mjs → renderer-DUzv-shq.mjs} +2 -2
  212. package/dist/{renderer-BpVOk9ux.mjs.map → renderer-DUzv-shq.mjs.map} +1 -1
  213. package/dist/renderer-DWnDj0IM.mjs +5 -0
  214. package/dist/renderer-DcGUIbQF.mjs +5 -0
  215. package/dist/renderer-Dfq6FoNO.mjs +5 -0
  216. package/dist/renderer-DhasXW6S.mjs +3 -0
  217. package/dist/{renderer-NRMlYkX6.mjs → renderer-DhnOWnEA.mjs} +3 -3
  218. package/dist/{renderer-NRMlYkX6.mjs.map → renderer-DhnOWnEA.mjs.map} +1 -1
  219. package/dist/{renderer-COgwYqev.mjs → renderer-Dhy1XHzz.mjs} +3 -3
  220. package/dist/{renderer-COgwYqev.mjs.map → renderer-Dhy1XHzz.mjs.map} +1 -1
  221. package/dist/renderer-DjCvpsV_.mjs +5 -0
  222. package/dist/{renderer-BfZNIiSv.mjs → renderer-DjJshz9Y.mjs} +2 -2
  223. package/dist/{renderer-BfZNIiSv.mjs.map → renderer-DjJshz9Y.mjs.map} +1 -1
  224. package/dist/{renderer-CKo7VR8x.mjs → renderer-DmTUIdus.mjs} +3 -3
  225. package/dist/{renderer-CKo7VR8x.mjs.map → renderer-DmTUIdus.mjs.map} +1 -1
  226. package/dist/{renderer-Baw6Utxi.mjs → renderer-Dq7AioJa.mjs} +2 -2
  227. package/dist/{renderer-Baw6Utxi.mjs.map → renderer-Dq7AioJa.mjs.map} +1 -1
  228. package/dist/renderer-DrAaM6JD.mjs +5 -0
  229. package/dist/{renderer-D-GWBoVT.mjs → renderer-Dt4sqNEu.mjs} +2 -2
  230. package/dist/{renderer-D-GWBoVT.mjs.map → renderer-Dt4sqNEu.mjs.map} +1 -1
  231. package/dist/{renderer-FYOL5Za6.mjs → renderer-Dtcs4idV.mjs} +3 -3
  232. package/dist/{renderer-FYOL5Za6.mjs.map → renderer-Dtcs4idV.mjs.map} +1 -1
  233. package/dist/renderer-Dxlv8LYm.mjs +5 -0
  234. package/dist/{renderer-D-RhYvVl.mjs → renderer-Gj8SrE2W.mjs} +2 -2
  235. package/dist/{renderer-D-RhYvVl.mjs.map → renderer-Gj8SrE2W.mjs.map} +1 -1
  236. package/dist/{renderer-D_j1WKMD.mjs → renderer-KfnXDJS0.mjs} +3 -3
  237. package/dist/{renderer-D_j1WKMD.mjs.map → renderer-KfnXDJS0.mjs.map} +1 -1
  238. package/dist/{renderer-Bpm145BW.mjs → renderer-MXVlg4p5.mjs} +3 -3
  239. package/dist/{renderer-Bpm145BW.mjs.map → renderer-MXVlg4p5.mjs.map} +1 -1
  240. package/dist/{renderer-Nnmi8Gt6.mjs → renderer-N2b6QZ1E.mjs} +3 -3
  241. package/dist/{renderer-Nnmi8Gt6.mjs.map → renderer-N2b6QZ1E.mjs.map} +1 -1
  242. package/dist/renderer-Pb43OO2t.mjs +5 -0
  243. package/dist/{renderer-Ca1KjNCO.mjs → renderer-Q7gDzm8c.mjs} +2 -2
  244. package/dist/{renderer-Ca1KjNCO.mjs.map → renderer-Q7gDzm8c.mjs.map} +1 -1
  245. package/dist/{renderer-D2wNFNRf.mjs → renderer-RCiANtRV.mjs} +2 -2
  246. package/dist/{renderer-D2wNFNRf.mjs.map → renderer-RCiANtRV.mjs.map} +1 -1
  247. package/dist/{renderer-Cqb7PGrI.mjs → renderer-Sig9nZcI.mjs} +2 -2
  248. package/dist/renderer-VQbm-cGr.mjs +5 -0
  249. package/dist/{renderer-W1bVNVR6.mjs → renderer-fabBgwQX.mjs} +3 -3
  250. package/dist/{renderer-W1bVNVR6.mjs.map → renderer-fabBgwQX.mjs.map} +1 -1
  251. package/dist/{renderer-zRq0j6Xy.mjs → renderer-g-0PCNoo.mjs} +3 -3
  252. package/dist/{renderer-zRq0j6Xy.mjs.map → renderer-g-0PCNoo.mjs.map} +1 -1
  253. package/dist/{renderer-2PjR3w-q.mjs → renderer-gmHKIbKI.mjs} +3 -3
  254. package/dist/{renderer-2PjR3w-q.mjs.map → renderer-gmHKIbKI.mjs.map} +1 -1
  255. package/dist/{renderer-03mYJLgX.mjs → renderer-kVZwiRoK.mjs} +3 -3
  256. package/dist/{renderer-03mYJLgX.mjs.map → renderer-kVZwiRoK.mjs.map} +1 -1
  257. package/dist/renderer-oPMypDM1.mjs +5 -0
  258. package/dist/{renderer-DcAKDAnS.mjs → renderer-p7tgxP-A.mjs} +3 -3
  259. package/dist/{renderer-DcAKDAnS.mjs.map → renderer-p7tgxP-A.mjs.map} +1 -1
  260. package/dist/{renderer-jUKdkmG5.mjs → renderer-tvYj306A.mjs} +81 -78
  261. package/dist/renderer-tvYj306A.mjs.map +1 -0
  262. package/dist/renderer-xvWGpVyp.mjs +5 -0
  263. package/dist/renderer-zafZbD6Q.mjs +5 -0
  264. package/dist/{renderers-CP8CFWDs-CshljORp.mjs → renderers-CP8CFWDs-DLjtjrwx.mjs} +2 -2
  265. package/dist/{renderers-CP8CFWDs-CshljORp.mjs.map → renderers-CP8CFWDs-DLjtjrwx.mjs.map} +1 -1
  266. package/dist/sam/index.d.mts +2 -2
  267. package/dist/sam/index.mjs +1 -1
  268. package/dist/signals/index.d.mts +4 -4
  269. package/dist/signals/index.mjs +4 -4
  270. package/dist/{src-BU6vm9sP-DdTHmCr4.mjs → src-B23p_eh7-Cj6-lvV6.mjs} +293 -6
  271. package/dist/src-B23p_eh7-Cj6-lvV6.mjs.map +1 -0
  272. package/dist/{src-Dy4gnc6w.mjs → src-CoHAjviq.mjs} +1349 -177
  273. package/dist/src-CoHAjviq.mjs.map +1 -0
  274. package/dist/storage/index.mjs +1 -1
  275. package/package.json +63 -60
  276. package/dist/dist--Uu5bQ_6.mjs.map +0 -1
  277. package/dist/dist-CiTgmfUw.mjs.map +0 -1
  278. package/dist/fonts-OW3yAfO5.mjs.map +0 -1
  279. package/dist/index-9xte4JgL.d.mts.map +0 -1
  280. package/dist/index-Bv7gxGK1.d.mts.map +0 -1
  281. package/dist/index-C5sgRLlG.d.mts.map +0 -1
  282. package/dist/index-C7-p9zwU.d.mts.map +0 -1
  283. package/dist/index-CRaydvLi.d.mts.map +0 -1
  284. package/dist/index-D1FqV1eu.d.mts.map +0 -1
  285. package/dist/preview-D7BGmE1E.mjs +0 -2446
  286. package/dist/preview-D7BGmE1E.mjs.map +0 -1
  287. package/dist/preview-engine/chunk-5DZTPUMH.mjs +0 -2568
  288. package/dist/preview-engine/chunk-NCQHOGZK.mjs +0 -3
  289. package/dist/preview-engine/chunk-PH3UUX6A.mjs +0 -138
  290. package/dist/preview-engine/chunk-UPZURPJY.mjs +0 -2227
  291. package/dist/preview-engine/renderers-DLJOA3BM.mjs +0 -228
  292. package/dist/program-tFKCWU2j.mjs.map +0 -1
  293. package/dist/renderer-6_bzbbXt.mjs +0 -5
  294. package/dist/renderer-8M-9G6F_.mjs +0 -5
  295. package/dist/renderer-B5OzKvF8.mjs +0 -5
  296. package/dist/renderer-BBCZ2qbE.mjs +0 -5
  297. package/dist/renderer-BChbxCux.mjs +0 -5
  298. package/dist/renderer-BGeMPr8C.mjs +0 -5
  299. package/dist/renderer-BPQ8Pkjb.mjs +0 -5
  300. package/dist/renderer-BTRpA3HD.mjs +0 -5
  301. package/dist/renderer-BVIXKfbC.mjs.map +0 -1
  302. package/dist/renderer-BVsECSn-.mjs +0 -5
  303. package/dist/renderer-Bgos68gc.mjs +0 -6
  304. package/dist/renderer-BjHOvoqO.mjs +0 -5
  305. package/dist/renderer-BjXMPPlV.mjs +0 -5
  306. package/dist/renderer-Byobxqkv.mjs +0 -5
  307. package/dist/renderer-CKrsg3EG.mjs +0 -5
  308. package/dist/renderer-Cj875NuH.mjs +0 -5
  309. package/dist/renderer-CnmzJoMv.mjs +0 -5
  310. package/dist/renderer-CtklDaMg.mjs +0 -5
  311. package/dist/renderer-D1tK3in_.mjs +0 -5
  312. package/dist/renderer-D2yc9P61.mjs +0 -5
  313. package/dist/renderer-D4v-JvSr.mjs +0 -5
  314. package/dist/renderer-D5yp74NL.mjs +0 -3
  315. package/dist/renderer-D7WRWDwB.mjs +0 -5
  316. package/dist/renderer-DGvA0tdB.mjs +0 -5
  317. package/dist/renderer-DO7v5Sdm.mjs +0 -5
  318. package/dist/renderer-DRVvt7-V.mjs +0 -5
  319. package/dist/renderer-DYMCd3jL.mjs +0 -5
  320. package/dist/renderer-DmHKw-MM.mjs +0 -5
  321. package/dist/renderer-DoDsuZ6G.mjs +0 -5
  322. package/dist/renderer-EpgclS70.mjs +0 -5
  323. package/dist/renderer-GroKiYyK.mjs +0 -5
  324. package/dist/renderer-MQ5K_xIS.mjs +0 -5
  325. package/dist/renderer-U43SflML.mjs +0 -5
  326. package/dist/renderer-UqOmBgCv.mjs +0 -5
  327. package/dist/renderer-XLULgJM0.mjs +0 -5
  328. package/dist/renderer-jUKdkmG5.mjs.map +0 -1
  329. package/dist/renderer-lNjxY1GG.mjs +0 -5
  330. package/dist/renderer-ukufL7pl.mjs +0 -5
  331. package/dist/renderer-wb0NCKdF.mjs +0 -5
  332. package/dist/src-BU6vm9sP-DdTHmCr4.mjs.map +0 -1
  333. package/dist/src-Dy4gnc6w.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import{a as Kt,b as ue,c as de,d as fe,e as he,f as me,g as ge,h as xe,i as ye,j as be,k as we,l as Se,n as Ce}from"./chunk-52X7SURQ.mjs";import{b as Yt}from"./chunk-OBIJIQCZ.mjs";import{e as se}from"./chunk-GXFYRMJZ.mjs";import{h as ce,i as le,j as L,x as bt}from"./chunk-64L4GUOF.mjs";import{a as dt}from"./chunk-354GX6IB.mjs";import{f as Pt,g as wt}from"./chunk-Y4NIR77Z.mjs";wt();function Ee(e){return typeof e=="object"&&e!==null&&typeof e.get=="function"}function Rt(e,n){return Ee(e)?e.get(n):e}function Me(e,n){return e.map(t=>{let i={...t,text:String(Rt(t.text,n)??"")};return t.fontSize!==void 0&&(i.fontSize=Number(Rt(t.fontSize,n))),t.fill!==void 0&&(i.fill=String(Rt(t.fill,n))),t.opacity!==void 0&&(i.opacity=Number(Rt(t.opacity,n))),t.mark&&(i.mark={...t.mark,background:String(Rt(t.mark.background,n))}),i})}function ze(e){let n="";for(let t of e)n+=typeof t.text=="string"?t.text:"";return n}function Ie(e,n){let t=[],i=0;for(let[r,c]of e.entries()){if(i>=n.length)break;let d=typeof c.text=="string"?c.text.length:0,u=r===e.length-1?n.length:i+d;u>i&&t.push({...c,text:n.slice(i,u)}),i=u}return t}wt();function Xe(e,n,t,i,r=0,c=0){let d=se.getChannelSamples(n,"primary");if(d&&d.length>0){let m=i>0?i:24,C=t/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(!e)return 0;let u=e[n];if(u==null)return 0;if(typeof u=="number")return u;if(typeof u=="function")return Number(u(t,i))||0;if(typeof u=="object"){let m=u;if(typeof m.get=="function"){let C=i>0?t/i:0,h=r!==0?c*r/(2*Math.PI):0;return Number(m.get({frame:t,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(t)));return Number(C[h])||0}}return 0}function Ae(e){return e<.5?2*e*e:1-(-2*e+2)**2/2}function Ye(e){let n=0;for(let t=0;t<e.length;t++)n=e.charCodeAt(t)+((n<<5)-n);return()=>{let t=Math.sin(n++)*1e4;return t-Math.floor(t)}}function Ge(e,n){let t=Ye(n),i=Array.from({length:e},(r,c)=>c);for(let r=i.length-1;r>0;r--){let c=Math.floor(t()*(r+1)),d=i[r];i[r]=i[c],i[c]=d}return i}function je(e,n,t){let i=`${n}-${t}`,r=L.emojiTextureCache.get(i);if(r)return r;let c=4,d=Math.max(16,Math.ceil(t*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=e.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=`${t*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=e.createTexture({label:`Emoji-${n}`,size:[u,u],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),e.queue.copyExternalImageToTexture({source:C},{texture:r,premultipliedAlpha:!0},[u,u]),L.emojiTextureCache.set(i,r),r}function Gt(e,n,t,i,r,c,d){if(!d)return{p_in:1,p_out:1};let u=1;if(t>0){let C=t*.5,h=c>1?t*.5/(c-1):0,k=r*h,a=k+C;e<k?u=0:e>a?u=1:u=(e-k)/(a-k)}let m=1;if(i>0){let C=n-i;if(e>C){let h=i*.5,k=c>1?i*.5/(c-1):0,a=C+r*k,A=a+h;e<a?m=1:e>A?m=0:m=1-(e-a)/(A-a)}}return{p_in:u,p_out:m}}function jt(e,n,t,i,r,c,d,u,m,C,h,k,a){let A=t?Ae(e):e,w=t?Ae(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,tt=1;i==="slideUp"&&d<m&&(P+=(1-A)*30),r==="slideUp"&&d>u-C&&(P-=(1-w)*30);let ot=a?1:Math.PI/180;c==="stack"?(tt=.8+.2*v,H=(1-v)*15*ot):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)*ot):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)*ot);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:tt,blurAmount:x,visible:!0}}var _e={linear:e=>e,none:e=>e,smoothstep:e=>e,"power1.out":e=>1-(1-e)**2,"quad.out":e=>1-(1-e)**2,"power1.in":e=>e**2,"quad.in":e=>e**2,"power1.inout":e=>e<.5?2*e*e:1-(-2*e+2)**2/2,"quad.inout":e=>e<.5?2*e*e:1-(-2*e+2)**2/2,"power2.out":e=>1-(1-e)**3,"cubic.out":e=>1-(1-e)**3,"power2.in":e=>e**3,"cubic.in":e=>e**3,"power2.inout":e=>e<.5?4*e**3:1-(-2*e+2)**3/2,"cubic.inout":e=>e<.5?4*e**3:1-(-2*e+2)**3/2,"power3.out":e=>1-(1-e)**4,"quart.out":e=>1-(1-e)**4,"power3.in":e=>e**4,"quart.in":e=>e**4,"power3.inout":e=>e<.5?8*e**4:1-(-2*e+2)**4/2,"quart.inout":e=>e<.5?8*e**4:1-(-2*e+2)**4/2,"power4.out":e=>1-(1-e)**5,"quint.out":e=>1-(1-e)**5,"power4.in":e=>e**5,"quint.in":e=>e**5,"sine.out":e=>Math.sin(e*Math.PI/2),"sine.in":e=>1-Math.cos(e*Math.PI/2),"sine.inout":e=>-(Math.cos(Math.PI*e)-1)/2,"expo.out":e=>e===1?1:1-2**(-10*e),"back.out":e=>1+2.70158*(e-1)**3+1.70158*(e-1)**2};function Oe(e,n){let t=Math.max(0,Math.min(1,n));if(!e)return t;let i=_e[e.toLowerCase().trim()];return i?i(t):t}function He(e,n,t){if(t<=0)return 0;let i=t>1?n/(t-1):.5,r=e.offset??0,c=(e.rangeStart??0)+r,d=(e.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 Oe(e.easing??"power2.out",m)}function pe(e,n,t,i,r,c){let d=Math.max(1,t.charsCount??1),u=Math.max(1,t.wordsCount??1),m=Math.max(1,t.linesCount??1),C=e.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=we(w,a.randomSeed??12345)[v%w]??v);let X=a.units==="index"?v:w>1?v/(w-1):.5,j=a.start??e.rangeStart??0,P=a.end??e.rangeEnd??(a.units==="index"?w:1),H=a.offset??e.offset??0;A=ye(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=be(a.randomSeed??42,n.charIndex??0,j,a.correlation??.5),H=a.minAmount??-1,tt=a.maxAmount??1;A=H+(P*.5+.5)*(tt-H)}else if(a.type==="signal")A=Xe(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=he(w.expression,X)*(w.amount??1)}k===0?h=A:h=Se(h,A,a.mode??"add")}return h}function ke(e,n,t,i,r=!1,c=0,d=24,u){if(!e||e.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,tt=i.vfxParam??0,ot=i.skewM01??0,x=i.skewM10??0,ft=i.anchorConfig,lt=i.fillOpacity??1,rt=i.strokeWidth,U=i.strokeColor,ut=i.longShadow,ht=i.lineSpacing,Z=i.lineAnchor,mt=r?1:Math.PI/180,z=Math.max(1,t.charsCount??1),K=Math.max(1,t.wordsCount??1),at=Math.max(1,t.linesCount??1);for(let nt of e)if("selectors"in nt&&Array.isArray(nt.selectors)){let it=nt,l=it.props??{},et=pe(it,n,{charsCount:z,wordsCount:K,linesCount:at},u,c,d),f=et,Y=1,q=1;if(l.spring){let b=(n.charIndex??0)*.035,N=Math.max(0,(d>0?c/d:0)-b);q=Kt(N,l.spring.stiffness,l.spring.damping,l.spring.mass,l.spring.initialVelocity),Y=1-q,f=et*Y}if(f!==0||et!==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*mt*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*mt*f),l.translateZ!==void 0&&(X+=l.translateZ*f),l.skew!==void 0){let[,b,N]=ue(l.skew*f,l.skewAxis??0);ot+=b,x+=N}if(l.formation!==void 0){let b=me(n.charIndex??0,z,l.formation),N=t.layoutCenter?.x??0,Q=t.layoutCenter?.y??0,xt=n.x??0,Ft=n.y??0,Wt=N+b.x,Et=Q+b.y;if(m+=(Wt-xt)*f,C+=(Et-Ft)*f,X+=b.z*f,b.rotX){let yt=b.rotX*f*Math.PI/180;A*=Math.max(.5,Math.abs(Math.cos(yt)))}if(b.rotY){let yt=b.rotY*f*Math.PI/180;a*=Math.max(.5,Math.abs(Math.cos(yt)))}b.rotZ&&(h+=b.rotZ*Math.PI/180*f),b.depthOpacity!==void 0&&(w*=1+(b.depthOpacity-1)*f)}if(l.anchor!==void 0&&(ft=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),N=l.chromaticGlitch.sliceProbability??.35,Q=Math.sin(c*17.13+(n.charIndex??0)*43.17),xt=Math.abs(Q-Math.floor(Q));xt<N&&(b+=(l.chromaticGlitch.sliceAmplitude??12)*(xt*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&&(ut=l.longShadow),l.audioSpectrum!==void 0){let b=xe(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&&(lt*=1-f+l.stroke.fillOpacity*f),l.stroke.strokeWidth!==void 0&&(rt=(l.stroke.strokeWidth??0)*f),l.stroke.strokeColor&&(U=l.stroke.strokeColor)),l.lineSpacing!==void 0&&(ht=l.lineSpacing*(l.spring?q:f),Z=l.lineAnchor??0),l.fillColor){let b=dt(l.fillColor),N=j??{r:1,g:1,b:1,a:1},Q=et;j={r:N.r*(1-Q)+b.r*Q,g:N.g*(1-Q)+b.g*Q,b:N.b*(1-Q)+b.b*Q,a:N.a*(1-Q)+b.a*Q}}}}else{let it=nt,l=n.charIndex??n.unitIndex??0,et=Math.max(1,t.charsCount??1);it.unit==="word"?(l=n.wordIndex??0,et=Math.max(1,t.wordsCount??1)):it.unit==="line"&&(l=n.lineIndex??0,et=Math.max(1,t.linesCount??1));let f=He(it,l,et),Y=it.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*mt*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=dt(Y.color),N=j??{r:1,g:1,b:1,a:1};j={r:N.r*(1-f)+b.r*f,g:N.g*(1-f)+b.g*f,b:N.b*(1-f)+b.b*f,a:N.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:tt,skewM01:ot,skewM10:x,anchorConfig:ft,fillOpacity:Math.max(0,Math.min(1,lt)),strokeWidth:rt,strokeColor:U,longShadow:ut,lineSpacing:ht,lineAnchor:Z}}function Te(e,n,t){let i=t.fontFamily??"Inter";if(L.isFailed(i)&&(i="Inter"),L.isFailed(i))return;let r=t.fontSize??48,c=L.getFont(i,t.fontWeight,e.device,void 0,r,t.variableAxes),d=t.stroke&&t.strokeWidth&&t.strokeWidth>0,u=null;if(c&&d&&e.device){let o=t.strokeAlign==="outside"?2:1,y=(t.strokeWidth??0)*o*(c.unitsPerEm/r);u=L.getFont(i,t.fontWeight,e.device,y,r,t.variableAxes)??null}if(!c?.curvesTex||d&&!u?.curvesTex){let o=Yt(i);L.preloadSlugFont(e.device,i,o,void 0,t.renderId).catch(s=>{console.warn(`[drawParagraphNode] Failed to load Slug font for ${i}:`,s)});return}let m=t.letterSpacing??0,C=t.lineHeight!==void 0&&t.lineHeight<10?t.lineHeight*r:t.lineHeight??r*1.2,h=t.align??"start",k=t.direction??"auto",a=t.isCaption?0:t.textBackgroundColor?t.padding??0:0,A=t.text,w;if(t.typewriter){let o=t.fps??24,s=t.durationMs!==void 0?Math.round(t.durationMs/1e3*o):60;w=Ce(t.text,t.frame??0,0,s,t.typewriter.cadence,t.typewriter.scramble,t.typewriter.cursor?.blinkFrequency??2,t.typewriter.granularity??"character",t.textProgress),A=w.currentDisplayString}let v=w&&t.spans?.length?Ie(Me(t.spans),A):t.spans,X=t.pathOptions?{...t.pathOptions,firstMargin:t.firstMargin!==void 0?t.firstMargin:t.pathOptions.firstMargin,lastMargin:t.lastMargin!==void 0?t.lastMargin:t.pathOptions.lastMargin,baselineShift:t.baselineShift!==void 0?t.baselineShift:t.pathOptions.baselineShift}:void 0,j,P;t.width!=null?(j=Math.max(0,t.width-a*2),P=bt.measure(A,c,r,m,C,j,v,k)):(P=bt.measure(A,c,r,m,C,void 0,v,k),j=P.width);let H=t.isCaption?t.dstRect.width:j,tt=t.animation?.applyBy??"word",x=(h==="left"||h==="start"&&!P.layout?.hasRtl)&&(H===void 0||H===j)&&!X&&tt==="word"&&!!P?.layout&&P.layout?P.layout:bt.layout(A,c,r,m,C,j,h,tt,H,X,v,k),ft=t.verticalAlign??"top",lt=t.height!=null&&!X&&!t.isCaption?t.height-(P.height+a*2):0,rt={...t.dstRect,y:t.dstRect.y+(ft==="middle"?lt/2:ft==="bottom"?lt:0)},U=t.animation,ut=t.fontWeight==="bold"||typeof t.fontWeight=="number"&&t.fontWeight>=600||typeof t.fontWeight=="string"&&parseInt(t.fontWeight,10)>=600,ht="hasTrueWeight"in c&&!!c.hasTrueWeight,Z=c;if(ut&&!ht&&e.device){let o=le(t.fontWeight),s=Math.max(0,(o-400)/500)*.055*r;if(s>0){let y=s*(c.unitsPerEm/r),S=L.getFont(i,400,e.device,y,r,t.variableAxes);S?.curvesTex&&(Z=S)}}let mt=x.glyphs.length,z=t.elapsedMs!==void 0?t.elapsedMs:t.frame!==void 0&&t.fps!==void 0?t.frame/t.fps*1e3:0,K=t.durationMs!==void 0?t.durationMs:3e3,at=t.isCaption?U?.in==="none"||!U?.in?0:K:U?.entranceMs?U.entranceMs:U?.in==="none"||!U?.in?0:K,nt=t.isCaption?0:U?.exitMs?U.exitMs:U?.out==="none"||!U?.out?0:K,it=U?.in||"none",l=U?.out||"none",et=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=et==="shuffle"||it==="shuffle"?Ge(q,t.text):Array.from({length:q},(o,s)=>s);if(t.textBackgroundColor){let o=t.strokeRadius??t.borderRadius??8,s=0,y=t.opacity??1;if(t.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}=Gt(z,K,at,nt,T,q,!0),_=jt(M,g,f,it,l,et,z,K,at,nt,T,y,!1);_.visible&&_.opacity>s&&(s=_.opacity)}for(let S of x.emojis){let I=t.animation?.applyBy==="line"?0:Math.floor(S.x/(r+m)),T=b[I%q]??0,{p_in:M,p_out:g}=Gt(z,K,at,nt,T,q,!0),_=jt(M,g,f,it,l,et,z,K,at,nt,T,y,!0);_.visible&&_.opacity>s&&(s=_.opacity)}}if(s>.001){let S=t.width!=null?t.width:P.width+a*2,I=t.height!=null?t.height:P.height+a*2;e.renderer.drawRRect(n,{rect:{x:t.dstRect.x,y:t.dstRect.y,width:S,height:I},rx:o,ry:o},t.textBackgroundColor,{opacity:s})}}if(x.marks&&x.marks.length>0)for(let o of x.marks){let s=o.borderRadius??4;e.renderer.drawRRect(n,{rect:{x:t.dstRect.x+a+o.x,y:rt.y+a+o.y,width:o.width,height:o.height},rx:s,ry:s},o.background,{opacity:t.opacity??1})}let N=dt(t.color??"white"),Q=dt(t.highlightColor??"yellow"),xt=new Float32Array(x.glyphs.length),Ft=0,Wt=0;if(x.glyphs.length>0){let o=x.glyphs.filter(s=>!s.isSpace);o.length>0&&(Ft=(o[0].x+o[o.length-1].x)/2,Wt=(o[0].y+o[o.length-1].y)/2)}let Et={charsCount:x.charsCount,wordsCount:x.wordsCount,linesCount:x.linesCount,layoutCenter:{x:Ft,y:Wt}};if(t.animators&&t.animators.length>0){for(let o of t.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]],$=pe(s,O,Et,t.signals,t.frame??0,t.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,D=0;for(let F=0;F<M.length;F++){let O=D;R==="center"?O-=G*.5:R==="right"&&(O-=G);for(let $ of M[F])xt[$]+=O;F<M.length-1&&(D+=y*_[F])}}}}}let yt=new Float32Array(Math.max(1024,mt*24)),Jt=(o,s)=>s.cp.glyphId!==void 0&&(s.font??c).fontFamily===o.fontFamily,te=new Set,Pe=o=>{if(te.has(o))return;te.add(o);let s=[];for(let y of x.glyphs){let S=y.cp.glyphId;S!==void 0&&(y.font??c)!==o&&Jt(o,y)&&!o.glyphs?.has(S)&&s.push(S)}s.length>0&&ce.ensureGlyphs(o,s)},Re=(o,s)=>{if((s.font??c)===o)return s.cp;if(Jt(o,s)){let y=o.glyphs?.get(s.cp.glyphId);if(y)return y}return o.codePoints.get(s.cp.codePoint)||s.cp},St=(o,s,y=0,S=0,I,T)=>{let M=mt*24;yt.length<M&&(yt=new Float32Array(M));let g=yt,_=0;Pe(o);for(let G=0;G<x.glyphs.length;G++){let p=x.glyphs[G];if(p.isSpace||T&&!T(p))continue;let R=Re(o,p);if(!R||R.width===0||R.height===0)continue;let D=p.unitIndex,F=b[D]??D,O=t.opacity??1,$=0,J=0,st=0,V=1,Ct=I!==void 0?I:0;if(t.isVideoMode!==!1){let{p_in:W,p_out:E}=Gt(z,K,at,nt,F,q,!0),B=jt(W,E,f,it,l,et,z,K,at,nt,F,t.opacity??1,!1);if(!B.visible)continue;O=B.opacity,$=B.transX,J=B.transY,st=B.rot,V=B.scale,I===void 0&&(Ct=B.blurAmount)}let Ht=t.highlightWordIndex!==void 0&&p.wordIndex===t.highlightWordIndex,Fe=p.fill?dt(p.fill):void 0,Ut=Ht?Q:Fe??N,Dt=1,Nt=1,Lt=0,ie=0,oe=0,re=0,Bt=0,zt=0,Vt,ae=1;if(t.animators&&t.animators.length>0){let W=ke(t.animators,p,Et,{transX:$,transY:J,rot:st,scale:V,scaleX:Dt,scaleY:Nt,opacity:O,blurAmount:Ct,color:Ut},!1,t.frame??0,t.fps??24,t.signals);$=W.transX,J=W.transY,st=W.rot,V=W.scale,Dt=W.scaleX,Nt=W.scaleY,O=W.opacity,I===void 0&&(Ct=W.blurAmount),W.color&&(Ut=W.color),W.lineSpacing!==void 0&&(J+=fe(p.lineIndex,x.linesCount,W.lineSpacing,W.lineAnchor??0)),Lt=W.transZ??0,ie=W.chromaticShift??0,oe=W.dissolveProgress??0,re=W.vfxParam??0,Bt=W.skewM01??0,zt=W.skewM10??0,Vt=W.anchorConfig,ae=W.fillOpacity??1}$+=xt[G];let qt=p.x;if(t.marquee){let W=(t.frame??0)/(t.fps??24),E=x.glyphs.length>0?x.glyphs[x.glyphs.length-1].x+r:t.dstRect.width;qt=ge(p.x,t.dstRect.width,E,t.marquee,W)}let Xt=s??Ut;(W=>{let E=_*24,B=p.fontScale??r/o.unitsPerEm,Mt=R.width*B/2*Dt,It=R.height*B/2*Nt;if(Lt!==0){let ct=Math.max(100,1200-Lt),gt=ct>1?1200/ct:1;Mt*=gt,It*=gt}let At=st+(p.pathTangentAngleRad??0),kt,pt;if(p.pathTangentAngleRad!==void 0){let Tt=R.bearingX*B+Mt,ct=-R.bearingY*B+It,gt=Math.cos(At),vt=Math.sin(At),$t=Tt*gt-ct*vt,Zt=Tt*vt+ct*gt;kt=qt+$t+t.dstRect.x+a+y+W,pt=p.y+Zt+rt.y+a+S}else kt=qt+R.bearingX*B+Mt+t.dstRect.x+a+y+W,pt=p.y-R.bearingY*B+It+rt.y+a+S;if(Vt){let Tt={width:R.width*B,height:R.height*B,ascender:(o.ascender??800)*B,descender:(o.descender??-200)*B},ct=de(Tt,Vt),gt=Math.cos(At),vt=Math.sin(At),$t=ct.px*(1-gt*V)+ct.py*(vt*V),Zt=-ct.px*(vt*V)+ct.py*(1-gt*V);kt+=$t,pt+=Zt}(Bt!==0||zt!==0)&&(kt+=It*Bt,pt+=Mt*zt),g[E+0]=Mt,g[E+1]=It,g[E+2]=kt,g[E+3]=pt,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]=At,g[E+13]=V,g[E+14]=$,g[E+15]=J,g[E+16]=Xt.r,g[E+17]=Xt.g,g[E+18]=Xt.b;let We=p.opacity??1;g[E+19]=Xt.a*O*ae*We,g[E+20]=Ct,g[E+21]=ie,g[E+22]=oe,g[E+23]=re,_++})(0)}return{data:g,visibleCount:_}};if(t.shadows&&t.shadows.length>0)for(let o of t.shadows){let s=dt(o.color),y=o.offset?.x??0,S=o.offset?.y??0,I=o.blurRadius??0,{data:T,visibleCount:M}=St(Z,s,y,S,I);if(M>0){let g=T.subarray(0,M*24),G=t.fontStyle==="italic"?.21:0;e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),Z,g,M,o.color,e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:t.opacity??1,transform:t.matrix,customParam:G})}}let _t=t.animators?.find(o=>"props"in o&&o.props?.longShadow&&(o.props?.longShadow?.length??0)>0);if(_t&&"props"in _t){let o=_t,s=o.props?.longShadow;if(s){let y=o.props?.spring,S=s.length,I=s.angle;if(y){let G=(t.frame??0)/(t.fps??30),p=Kt(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,(t.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,_=dt(s.color??"#000000");for(let G=1;G<=M;G++){let p=G*g,R=p*Math.cos(T),D=p*Math.sin(T),F=G/M,O=(s.startOpacity??.8)*(1-F)+(s.endOpacity??0)*F,$={..._,a:_.a*O},{data:J,visibleCount:st}=St(c,$,R,D,0);if(st>0){let V=J.subarray(0,st*24),Ht=t.fontStyle==="italic"?.21:0;e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),Z,V,st,s.color??"black",e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:(t.opacity??1)*O,transform:t.matrix,customParam:Ht})}}}}if(d&&u){let o=dt(t.stroke),{data:s,visibleCount:y}=St(u,o);if(y>0){let S=s.subarray(0,y*24),T=t.fontStyle==="italic"?.21:0;e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),u,S,y,t.stroke??"#000000",e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:t.opacity??1,transform:t.matrix,customParam:T})}}let Ot=new Set,ee=!1;for(let o of x.glyphs)o.font&&o.font!==Z&&(Ot.add(o.font),ee=!0);let ne=t.fontStyle==="italic"?.21:0;if(ee){Ot.add(Z);for(let o of Ot){if(e.device&&!o.curvesTex&&L.ensureTextures(e.device,o),!o.curvesTex)continue;let{data:s,visibleCount:y}=St(o,void 0,0,0,void 0,S=>(S.font??Z)===o);if(y>0){let S=s.subarray(0,y*24);e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),o,S,y,t.color??"white",e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:t.opacity??1,transform:t.matrix,customParam:ne})}}}else{let{data:o,visibleCount:s}=St(Z);if(s>0){let y=o.subarray(0,s*24);e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),Z,y,s,t.color??"white",e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:t.opacity??1,transform:t.matrix,customParam:ne})}}for(let o of x.emojis){let s=t.animation?.applyBy==="line"?0:Math.floor(o.x/(r+m)),y=b[s%q]??0,S=t.opacity??1,I=0,T=0,M=0,g=1;if(t.isVideoMode!==!1){let{p_in:J,p_out:st}=Gt(z,K,at,nt,y,q,!0),V=jt(J,st,f,it,l,et,z,K,at,nt,y,t.opacity??1,!0);if(!V.visible)continue;S=V.opacity,I=V.transX,T=V.transY,M=V.rot,g=V.scale}if(t.animators&&t.animators.length>0){let J=ke(t.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 _=je(e.device,o.char,o.size),G=o.size*1.15,p=(G-o.size)/2,R={x:t.dstRect.x+o.x+a-p,y:rt.y+o.y+a-p,width:G,height:G},D=new DOMMatrix,F=R.x+G/2,O=R.y+G/2;D=D.translate(F,O),(I!==0||T!==0)&&(D=D.translate(I,T)),M!==0&&(D=D.rotate(M)),g!==1&&(D=D.scale(g)),D=D.translate(-F,-O);let $=t.matrix?t.matrix.multiply(D):D;e.renderer.drawTextureRegion(n,_,{x:0,y:0,width:_.width,height:_.height},R,{opacity:S,transform:$})}if(t.typewriter?.cursor?.enabled&&w&&w.isCursorVisible&&(!t.typewriter.cursor.hideOnComplete||w.visibleChars<t.text.length)){let o=t.typewriter.cursor,s=o.color??t.color??"white",y=o.width??2.5,S=o.spacing??3,I=t.dstRect.x+a,T=rt.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=t.dstRect.x+a+(M.rtl?G-S-p:G+_+S),T=M.y+rt.y+a}o.style==="underscore"?e.renderer.drawRect(n,{x:I,y:T,width:r*.5,height:y},s,0,{opacity:t.opacity??1}):o.style==="block"?e.renderer.drawRect(n,{x:I,y:T-r*.8,width:r*.5,height:r},s,0,{opacity:t.opacity??1}):e.renderer.drawRect(n,{x:I,y:T-r*.8,width:y,height:r},s,0,{opacity:t.opacity??1})}}wt();function ve(e){let t=e.trim().replace(",",".").split(":");if(t.length<2||t.length>3)throw new Error(`Invalid timestamp: ${e}`);if(t.length===2){let[d,u]=t;return parseInt(d,10)*60+parseFloat(u)}let[i,r,c]=t;return parseInt(i,10)*3600+parseInt(r,10)*60+parseFloat(c)}function Ue(e){let n=e.replace(/\r\n/g,`
1
+ import{a as Kt,b as ue,c as de,d as fe,e as he,f as me,g as ge,h as xe,i as ye,j as be,k as we,l as Se,n as Ce}from"./chunk-TEA3GVBJ.mjs";import{b as Yt}from"./chunk-OBIJIQCZ.mjs";import{e as se}from"./chunk-GXFYRMJZ.mjs";import{h as ce,i as le,j as L,x as bt}from"./chunk-4F3DG6YB.mjs";import{a as dt}from"./chunk-354GX6IB.mjs";import{f as Pt,g as wt}from"./chunk-Y4NIR77Z.mjs";wt();function Ee(e){return typeof e=="object"&&e!==null&&typeof e.get=="function"}function Rt(e,n){return Ee(e)?e.get(n):e}function Me(e,n){return e.map(t=>{let i={...t,text:String(Rt(t.text,n)??"")};return t.fontSize!==void 0&&(i.fontSize=Number(Rt(t.fontSize,n))),t.fill!==void 0&&(i.fill=String(Rt(t.fill,n))),t.opacity!==void 0&&(i.opacity=Number(Rt(t.opacity,n))),t.mark&&(i.mark={...t.mark,background:String(Rt(t.mark.background,n))}),i})}function ze(e){let n="";for(let t of e)n+=typeof t.text=="string"?t.text:"";return n}function Ie(e,n){let t=[],i=0;for(let[r,c]of e.entries()){if(i>=n.length)break;let d=typeof c.text=="string"?c.text.length:0,u=r===e.length-1?n.length:i+d;u>i&&t.push({...c,text:n.slice(i,u)}),i=u}return t}wt();function Xe(e,n,t,i,r=0,c=0){let d=se.getChannelSamples(n,"primary");if(d&&d.length>0){let m=i>0?i:24,C=t/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(!e)return 0;let u=e[n];if(u==null)return 0;if(typeof u=="number")return u;if(typeof u=="function")return Number(u(t,i))||0;if(typeof u=="object"){let m=u;if(typeof m.get=="function"){let C=i>0?t/i:0,h=r!==0?c*r/(2*Math.PI):0;return Number(m.get({frame:t,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(t)));return Number(C[h])||0}}return 0}function Ae(e){return e<.5?2*e*e:1-(-2*e+2)**2/2}function Ye(e){let n=0;for(let t=0;t<e.length;t++)n=e.charCodeAt(t)+((n<<5)-n);return()=>{let t=Math.sin(n++)*1e4;return t-Math.floor(t)}}function Ge(e,n){let t=Ye(n),i=Array.from({length:e},(r,c)=>c);for(let r=i.length-1;r>0;r--){let c=Math.floor(t()*(r+1)),d=i[r];i[r]=i[c],i[c]=d}return i}function je(e,n,t){let i=`${n}-${t}`,r=L.emojiTextureCache.get(i);if(r)return r;let c=4,d=Math.max(16,Math.ceil(t*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=e.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=`${t*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=e.createTexture({label:`Emoji-${n}`,size:[u,u],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),e.queue.copyExternalImageToTexture({source:C},{texture:r,premultipliedAlpha:!0},[u,u]),L.emojiTextureCache.set(i,r),r}function Gt(e,n,t,i,r,c,d){if(!d)return{p_in:1,p_out:1};let u=1;if(t>0){let C=t*.5,h=c>1?t*.5/(c-1):0,k=r*h,a=k+C;e<k?u=0:e>a?u=1:u=(e-k)/(a-k)}let m=1;if(i>0){let C=n-i;if(e>C){let h=i*.5,k=c>1?i*.5/(c-1):0,a=C+r*k,A=a+h;e<a?m=1:e>A?m=0:m=1-(e-a)/(A-a)}}return{p_in:u,p_out:m}}function jt(e,n,t,i,r,c,d,u,m,C,h,k,a){let A=t?Ae(e):e,w=t?Ae(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,tt=1;i==="slideUp"&&d<m&&(P+=(1-A)*30),r==="slideUp"&&d>u-C&&(P-=(1-w)*30);let ot=a?1:Math.PI/180;c==="stack"?(tt=.8+.2*v,H=(1-v)*15*ot):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)*ot):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)*ot);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:tt,blurAmount:x,visible:!0}}var _e={linear:e=>e,none:e=>e,smoothstep:e=>e,"power1.out":e=>1-(1-e)**2,"quad.out":e=>1-(1-e)**2,"power1.in":e=>e**2,"quad.in":e=>e**2,"power1.inout":e=>e<.5?2*e*e:1-(-2*e+2)**2/2,"quad.inout":e=>e<.5?2*e*e:1-(-2*e+2)**2/2,"power2.out":e=>1-(1-e)**3,"cubic.out":e=>1-(1-e)**3,"power2.in":e=>e**3,"cubic.in":e=>e**3,"power2.inout":e=>e<.5?4*e**3:1-(-2*e+2)**3/2,"cubic.inout":e=>e<.5?4*e**3:1-(-2*e+2)**3/2,"power3.out":e=>1-(1-e)**4,"quart.out":e=>1-(1-e)**4,"power3.in":e=>e**4,"quart.in":e=>e**4,"power3.inout":e=>e<.5?8*e**4:1-(-2*e+2)**4/2,"quart.inout":e=>e<.5?8*e**4:1-(-2*e+2)**4/2,"power4.out":e=>1-(1-e)**5,"quint.out":e=>1-(1-e)**5,"power4.in":e=>e**5,"quint.in":e=>e**5,"sine.out":e=>Math.sin(e*Math.PI/2),"sine.in":e=>1-Math.cos(e*Math.PI/2),"sine.inout":e=>-(Math.cos(Math.PI*e)-1)/2,"expo.out":e=>e===1?1:1-2**(-10*e),"back.out":e=>1+2.70158*(e-1)**3+1.70158*(e-1)**2};function Oe(e,n){let t=Math.max(0,Math.min(1,n));if(!e)return t;let i=_e[e.toLowerCase().trim()];return i?i(t):t}function He(e,n,t){if(t<=0)return 0;let i=t>1?n/(t-1):.5,r=e.offset??0,c=(e.rangeStart??0)+r,d=(e.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 Oe(e.easing??"power2.out",m)}function pe(e,n,t,i,r,c){let d=Math.max(1,t.charsCount??1),u=Math.max(1,t.wordsCount??1),m=Math.max(1,t.linesCount??1),C=e.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=we(w,a.randomSeed??12345)[v%w]??v);let X=a.units==="index"?v:w>1?v/(w-1):.5,j=a.start??e.rangeStart??0,P=a.end??e.rangeEnd??(a.units==="index"?w:1),H=a.offset??e.offset??0;A=ye(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=be(a.randomSeed??42,n.charIndex??0,j,a.correlation??.5),H=a.minAmount??-1,tt=a.maxAmount??1;A=H+(P*.5+.5)*(tt-H)}else if(a.type==="signal")A=Xe(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=he(w.expression,X)*(w.amount??1)}k===0?h=A:h=Se(h,A,a.mode??"add")}return h}function ke(e,n,t,i,r=!1,c=0,d=24,u){if(!e||e.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,tt=i.vfxParam??0,ot=i.skewM01??0,x=i.skewM10??0,ft=i.anchorConfig,lt=i.fillOpacity??1,rt=i.strokeWidth,U=i.strokeColor,ut=i.longShadow,ht=i.lineSpacing,Z=i.lineAnchor,mt=r?1:Math.PI/180,z=Math.max(1,t.charsCount??1),K=Math.max(1,t.wordsCount??1),at=Math.max(1,t.linesCount??1);for(let nt of e)if("selectors"in nt&&Array.isArray(nt.selectors)){let it=nt,l=it.props??{},et=pe(it,n,{charsCount:z,wordsCount:K,linesCount:at},u,c,d),f=et,Y=1,q=1;if(l.spring){let b=(n.charIndex??0)*.035,N=Math.max(0,(d>0?c/d:0)-b);q=Kt(N,l.spring.stiffness,l.spring.damping,l.spring.mass,l.spring.initialVelocity),Y=1-q,f=et*Y}if(f!==0||et!==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*mt*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*mt*f),l.translateZ!==void 0&&(X+=l.translateZ*f),l.skew!==void 0){let[,b,N]=ue(l.skew*f,l.skewAxis??0);ot+=b,x+=N}if(l.formation!==void 0){let b=me(n.charIndex??0,z,l.formation),N=t.layoutCenter?.x??0,Q=t.layoutCenter?.y??0,xt=n.x??0,Ft=n.y??0,Wt=N+b.x,Et=Q+b.y;if(m+=(Wt-xt)*f,C+=(Et-Ft)*f,X+=b.z*f,b.rotX){let yt=b.rotX*f*Math.PI/180;A*=Math.max(.5,Math.abs(Math.cos(yt)))}if(b.rotY){let yt=b.rotY*f*Math.PI/180;a*=Math.max(.5,Math.abs(Math.cos(yt)))}b.rotZ&&(h+=b.rotZ*Math.PI/180*f),b.depthOpacity!==void 0&&(w*=1+(b.depthOpacity-1)*f)}if(l.anchor!==void 0&&(ft=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),N=l.chromaticGlitch.sliceProbability??.35,Q=Math.sin(c*17.13+(n.charIndex??0)*43.17),xt=Math.abs(Q-Math.floor(Q));xt<N&&(b+=(l.chromaticGlitch.sliceAmplitude??12)*(xt*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&&(ut=l.longShadow),l.audioSpectrum!==void 0){let b=xe(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&&(lt*=1-f+l.stroke.fillOpacity*f),l.stroke.strokeWidth!==void 0&&(rt=(l.stroke.strokeWidth??0)*f),l.stroke.strokeColor&&(U=l.stroke.strokeColor)),l.lineSpacing!==void 0&&(ht=l.lineSpacing*(l.spring?q:f),Z=l.lineAnchor??0),l.fillColor){let b=dt(l.fillColor),N=j??{r:1,g:1,b:1,a:1},Q=et;j={r:N.r*(1-Q)+b.r*Q,g:N.g*(1-Q)+b.g*Q,b:N.b*(1-Q)+b.b*Q,a:N.a*(1-Q)+b.a*Q}}}}else{let it=nt,l=n.charIndex??n.unitIndex??0,et=Math.max(1,t.charsCount??1);it.unit==="word"?(l=n.wordIndex??0,et=Math.max(1,t.wordsCount??1)):it.unit==="line"&&(l=n.lineIndex??0,et=Math.max(1,t.linesCount??1));let f=He(it,l,et),Y=it.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*mt*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=dt(Y.color),N=j??{r:1,g:1,b:1,a:1};j={r:N.r*(1-f)+b.r*f,g:N.g*(1-f)+b.g*f,b:N.b*(1-f)+b.b*f,a:N.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:tt,skewM01:ot,skewM10:x,anchorConfig:ft,fillOpacity:Math.max(0,Math.min(1,lt)),strokeWidth:rt,strokeColor:U,longShadow:ut,lineSpacing:ht,lineAnchor:Z}}function Te(e,n,t){let i=t.fontFamily??"Inter";if(L.isFailed(i)&&(i="Inter"),L.isFailed(i))return;let r=t.fontSize??48,c=L.getFont(i,t.fontWeight,e.device,void 0,r,t.variableAxes),d=t.stroke&&t.strokeWidth&&t.strokeWidth>0,u=null;if(c&&d&&e.device){let o=t.strokeAlign==="outside"?2:1,y=(t.strokeWidth??0)*o*(c.unitsPerEm/r);u=L.getFont(i,t.fontWeight,e.device,y,r,t.variableAxes)??null}if(!c?.curvesTex||d&&!u?.curvesTex){let o=Yt(i);L.preloadSlugFont(e.device,i,o,void 0,t.renderId).catch(s=>{console.warn(`[drawParagraphNode] Failed to load Slug font for ${i}:`,s)});return}let m=t.letterSpacing??0,C=t.lineHeight!==void 0&&t.lineHeight<10?t.lineHeight*r:t.lineHeight??r*1.2,h=t.align??"start",k=t.direction??"auto",a=t.isCaption?0:t.textBackgroundColor?t.padding??0:0,A=t.text,w;if(t.typewriter){let o=t.fps??24,s=t.durationMs!==void 0?Math.round(t.durationMs/1e3*o):60;w=Ce(t.text,t.frame??0,0,s,t.typewriter.cadence,t.typewriter.scramble,t.typewriter.cursor?.blinkFrequency??2,t.typewriter.granularity??"character",t.textProgress),A=w.currentDisplayString}let v=w&&t.spans?.length?Ie(Me(t.spans),A):t.spans,X=t.pathOptions?{...t.pathOptions,firstMargin:t.firstMargin!==void 0?t.firstMargin:t.pathOptions.firstMargin,lastMargin:t.lastMargin!==void 0?t.lastMargin:t.pathOptions.lastMargin,baselineShift:t.baselineShift!==void 0?t.baselineShift:t.pathOptions.baselineShift}:void 0,j,P;t.width!=null?(j=Math.max(0,t.width-a*2),P=bt.measure(A,c,r,m,C,j,v,k)):(P=bt.measure(A,c,r,m,C,void 0,v,k),j=P.width);let H=t.isCaption?t.dstRect.width:j,tt=t.animation?.applyBy??"word",x=(h==="left"||h==="start"&&!P.layout?.hasRtl)&&(H===void 0||H===j)&&!X&&tt==="word"&&!!P?.layout&&P.layout?P.layout:bt.layout(A,c,r,m,C,j,h,tt,H,X,v,k),ft=t.verticalAlign??"top",lt=t.height!=null&&!X&&!t.isCaption?t.height-(P.height+a*2):0,rt={...t.dstRect,y:t.dstRect.y+(ft==="middle"?lt/2:ft==="bottom"?lt:0)},U=t.animation,ut=t.fontWeight==="bold"||typeof t.fontWeight=="number"&&t.fontWeight>=600||typeof t.fontWeight=="string"&&parseInt(t.fontWeight,10)>=600,ht="hasTrueWeight"in c&&!!c.hasTrueWeight,Z=c;if(ut&&!ht&&e.device){let o=le(t.fontWeight),s=Math.max(0,(o-400)/500)*.055*r;if(s>0){let y=s*(c.unitsPerEm/r),S=L.getFont(i,400,e.device,y,r,t.variableAxes);S?.curvesTex&&(Z=S)}}let mt=x.glyphs.length,z=t.elapsedMs!==void 0?t.elapsedMs:t.frame!==void 0&&t.fps!==void 0?t.frame/t.fps*1e3:0,K=t.durationMs!==void 0?t.durationMs:3e3,at=t.isCaption?U?.in==="none"||!U?.in?0:K:U?.entranceMs?U.entranceMs:U?.in==="none"||!U?.in?0:K,nt=t.isCaption?0:U?.exitMs?U.exitMs:U?.out==="none"||!U?.out?0:K,it=U?.in||"none",l=U?.out||"none",et=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=et==="shuffle"||it==="shuffle"?Ge(q,t.text):Array.from({length:q},(o,s)=>s);if(t.textBackgroundColor){let o=t.strokeRadius??t.borderRadius??8,s=0,y=t.opacity??1;if(t.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}=Gt(z,K,at,nt,T,q,!0),_=jt(M,g,f,it,l,et,z,K,at,nt,T,y,!1);_.visible&&_.opacity>s&&(s=_.opacity)}for(let S of x.emojis){let I=t.animation?.applyBy==="line"?0:Math.floor(S.x/(r+m)),T=b[I%q]??0,{p_in:M,p_out:g}=Gt(z,K,at,nt,T,q,!0),_=jt(M,g,f,it,l,et,z,K,at,nt,T,y,!0);_.visible&&_.opacity>s&&(s=_.opacity)}}if(s>.001){let S=t.width!=null?t.width:P.width+a*2,I=t.height!=null?t.height:P.height+a*2;e.renderer.drawRRect(n,{rect:{x:t.dstRect.x,y:t.dstRect.y,width:S,height:I},rx:o,ry:o},t.textBackgroundColor,{opacity:s})}}if(x.marks&&x.marks.length>0)for(let o of x.marks){let s=o.borderRadius??4;e.renderer.drawRRect(n,{rect:{x:t.dstRect.x+a+o.x,y:rt.y+a+o.y,width:o.width,height:o.height},rx:s,ry:s},o.background,{opacity:t.opacity??1})}let N=dt(t.color??"white"),Q=dt(t.highlightColor??"yellow"),xt=new Float32Array(x.glyphs.length),Ft=0,Wt=0;if(x.glyphs.length>0){let o=x.glyphs.filter(s=>!s.isSpace);o.length>0&&(Ft=(o[0].x+o[o.length-1].x)/2,Wt=(o[0].y+o[o.length-1].y)/2)}let Et={charsCount:x.charsCount,wordsCount:x.wordsCount,linesCount:x.linesCount,layoutCenter:{x:Ft,y:Wt}};if(t.animators&&t.animators.length>0){for(let o of t.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]],$=pe(s,O,Et,t.signals,t.frame??0,t.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,D=0;for(let F=0;F<M.length;F++){let O=D;R==="center"?O-=G*.5:R==="right"&&(O-=G);for(let $ of M[F])xt[$]+=O;F<M.length-1&&(D+=y*_[F])}}}}}let yt=new Float32Array(Math.max(1024,mt*24)),Jt=(o,s)=>s.cp.glyphId!==void 0&&(s.font??c).fontFamily===o.fontFamily,te=new Set,Pe=o=>{if(te.has(o))return;te.add(o);let s=[];for(let y of x.glyphs){let S=y.cp.glyphId;S!==void 0&&(y.font??c)!==o&&Jt(o,y)&&!o.glyphs?.has(S)&&s.push(S)}s.length>0&&ce.ensureGlyphs(o,s)},Re=(o,s)=>{if((s.font??c)===o)return s.cp;if(Jt(o,s)){let y=o.glyphs?.get(s.cp.glyphId);if(y)return y}return o.codePoints.get(s.cp.codePoint)||s.cp},St=(o,s,y=0,S=0,I,T)=>{let M=mt*24;yt.length<M&&(yt=new Float32Array(M));let g=yt,_=0;Pe(o);for(let G=0;G<x.glyphs.length;G++){let p=x.glyphs[G];if(p.isSpace||T&&!T(p))continue;let R=Re(o,p);if(!R||R.width===0||R.height===0)continue;let D=p.unitIndex,F=b[D]??D,O=t.opacity??1,$=0,J=0,st=0,V=1,Ct=I!==void 0?I:0;if(t.isVideoMode!==!1){let{p_in:W,p_out:E}=Gt(z,K,at,nt,F,q,!0),B=jt(W,E,f,it,l,et,z,K,at,nt,F,t.opacity??1,!1);if(!B.visible)continue;O=B.opacity,$=B.transX,J=B.transY,st=B.rot,V=B.scale,I===void 0&&(Ct=B.blurAmount)}let Ht=t.highlightWordIndex!==void 0&&p.wordIndex===t.highlightWordIndex,Fe=p.fill?dt(p.fill):void 0,Ut=Ht?Q:Fe??N,Dt=1,Nt=1,Lt=0,ie=0,oe=0,re=0,Bt=0,zt=0,Vt,ae=1;if(t.animators&&t.animators.length>0){let W=ke(t.animators,p,Et,{transX:$,transY:J,rot:st,scale:V,scaleX:Dt,scaleY:Nt,opacity:O,blurAmount:Ct,color:Ut},!1,t.frame??0,t.fps??24,t.signals);$=W.transX,J=W.transY,st=W.rot,V=W.scale,Dt=W.scaleX,Nt=W.scaleY,O=W.opacity,I===void 0&&(Ct=W.blurAmount),W.color&&(Ut=W.color),W.lineSpacing!==void 0&&(J+=fe(p.lineIndex,x.linesCount,W.lineSpacing,W.lineAnchor??0)),Lt=W.transZ??0,ie=W.chromaticShift??0,oe=W.dissolveProgress??0,re=W.vfxParam??0,Bt=W.skewM01??0,zt=W.skewM10??0,Vt=W.anchorConfig,ae=W.fillOpacity??1}$+=xt[G];let qt=p.x;if(t.marquee){let W=(t.frame??0)/(t.fps??24),E=x.glyphs.length>0?x.glyphs[x.glyphs.length-1].x+r:t.dstRect.width;qt=ge(p.x,t.dstRect.width,E,t.marquee,W)}let Xt=s??Ut;(W=>{let E=_*24,B=p.fontScale??r/o.unitsPerEm,Mt=R.width*B/2*Dt,It=R.height*B/2*Nt;if(Lt!==0){let ct=Math.max(100,1200-Lt),gt=ct>1?1200/ct:1;Mt*=gt,It*=gt}let At=st+(p.pathTangentAngleRad??0),kt,pt;if(p.pathTangentAngleRad!==void 0){let Tt=R.bearingX*B+Mt,ct=-R.bearingY*B+It,gt=Math.cos(At),vt=Math.sin(At),$t=Tt*gt-ct*vt,Zt=Tt*vt+ct*gt;kt=qt+$t+t.dstRect.x+a+y+W,pt=p.y+Zt+rt.y+a+S}else kt=qt+R.bearingX*B+Mt+t.dstRect.x+a+y+W,pt=p.y-R.bearingY*B+It+rt.y+a+S;if(Vt){let Tt={width:R.width*B,height:R.height*B,ascender:(o.ascender??800)*B,descender:(o.descender??-200)*B},ct=de(Tt,Vt),gt=Math.cos(At),vt=Math.sin(At),$t=ct.px*(1-gt*V)+ct.py*(vt*V),Zt=-ct.px*(vt*V)+ct.py*(1-gt*V);kt+=$t,pt+=Zt}(Bt!==0||zt!==0)&&(kt+=It*Bt,pt+=Mt*zt),g[E+0]=Mt,g[E+1]=It,g[E+2]=kt,g[E+3]=pt,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]=At,g[E+13]=V,g[E+14]=$,g[E+15]=J,g[E+16]=Xt.r,g[E+17]=Xt.g,g[E+18]=Xt.b;let We=p.opacity??1;g[E+19]=Xt.a*O*ae*We,g[E+20]=Ct,g[E+21]=ie,g[E+22]=oe,g[E+23]=re,_++})(0)}return{data:g,visibleCount:_}};if(t.shadows&&t.shadows.length>0)for(let o of t.shadows){let s=dt(o.color),y=o.offset?.x??0,S=o.offset?.y??0,I=o.blurRadius??0,{data:T,visibleCount:M}=St(Z,s,y,S,I);if(M>0){let g=T.subarray(0,M*24),G=t.fontStyle==="italic"?.21:0;e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),Z,g,M,o.color,e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:t.opacity??1,transform:t.matrix,customParam:G})}}let _t=t.animators?.find(o=>"props"in o&&o.props?.longShadow&&(o.props?.longShadow?.length??0)>0);if(_t&&"props"in _t){let o=_t,s=o.props?.longShadow;if(s){let y=o.props?.spring,S=s.length,I=s.angle;if(y){let G=(t.frame??0)/(t.fps??30),p=Kt(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,(t.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,_=dt(s.color??"#000000");for(let G=1;G<=M;G++){let p=G*g,R=p*Math.cos(T),D=p*Math.sin(T),F=G/M,O=(s.startOpacity??.8)*(1-F)+(s.endOpacity??0)*F,$={..._,a:_.a*O},{data:J,visibleCount:st}=St(c,$,R,D,0);if(st>0){let V=J.subarray(0,st*24),Ht=t.fontStyle==="italic"?.21:0;e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),Z,V,st,s.color??"black",e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:(t.opacity??1)*O,transform:t.matrix,customParam:Ht})}}}}if(d&&u){let o=dt(t.stroke),{data:s,visibleCount:y}=St(u,o);if(y>0){let S=s.subarray(0,y*24),T=t.fontStyle==="italic"?.21:0;e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),u,S,y,t.stroke??"#000000",e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:t.opacity??1,transform:t.matrix,customParam:T})}}let Ot=new Set,ee=!1;for(let o of x.glyphs)o.font&&o.font!==Z&&(Ot.add(o.font),ee=!0);let ne=t.fontStyle==="italic"?.21:0;if(ee){Ot.add(Z);for(let o of Ot){if(e.device&&!o.curvesTex&&L.ensureTextures(e.device,o),!o.curvesTex)continue;let{data:s,visibleCount:y}=St(o,void 0,0,0,void 0,S=>(S.font??Z)===o);if(y>0){let S=s.subarray(0,y*24);e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),o,S,y,t.color??"white",e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:t.opacity??1,transform:t.matrix,customParam:ne})}}}else{let{data:o,visibleCount:s}=St(Z);if(s>0){let y=o.subarray(0,s*24);e.renderer.slugPipeline.draw(n,e.renderer.getTransformStack(),Z,y,s,t.color??"white",e.renderer.getSurfaceWidth(),e.renderer.getSurfaceHeight(),{opacity:t.opacity??1,transform:t.matrix,customParam:ne})}}for(let o of x.emojis){let s=t.animation?.applyBy==="line"?0:Math.floor(o.x/(r+m)),y=b[s%q]??0,S=t.opacity??1,I=0,T=0,M=0,g=1;if(t.isVideoMode!==!1){let{p_in:J,p_out:st}=Gt(z,K,at,nt,y,q,!0),V=jt(J,st,f,it,l,et,z,K,at,nt,y,t.opacity??1,!0);if(!V.visible)continue;S=V.opacity,I=V.transX,T=V.transY,M=V.rot,g=V.scale}if(t.animators&&t.animators.length>0){let J=ke(t.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 _=je(e.device,o.char,o.size),G=o.size*1.15,p=(G-o.size)/2,R={x:t.dstRect.x+o.x+a-p,y:rt.y+o.y+a-p,width:G,height:G},D=new DOMMatrix,F=R.x+G/2,O=R.y+G/2;D=D.translate(F,O),(I!==0||T!==0)&&(D=D.translate(I,T)),M!==0&&(D=D.rotate(M)),g!==1&&(D=D.scale(g)),D=D.translate(-F,-O);let $=t.matrix?t.matrix.multiply(D):D;e.renderer.drawTextureRegion(n,_,{x:0,y:0,width:_.width,height:_.height},R,{opacity:S,transform:$})}if(t.typewriter?.cursor?.enabled&&w&&w.isCursorVisible&&(!t.typewriter.cursor.hideOnComplete||w.visibleChars<t.text.length)){let o=t.typewriter.cursor,s=o.color??t.color??"white",y=o.width??2.5,S=o.spacing??3,I=t.dstRect.x+a,T=rt.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=t.dstRect.x+a+(M.rtl?G-S-p:G+_+S),T=M.y+rt.y+a}o.style==="underscore"?e.renderer.drawRect(n,{x:I,y:T,width:r*.5,height:y},s,0,{opacity:t.opacity??1}):o.style==="block"?e.renderer.drawRect(n,{x:I,y:T-r*.8,width:r*.5,height:r},s,0,{opacity:t.opacity??1}):e.renderer.drawRect(n,{x:I,y:T-r*.8,width:y,height:r},s,0,{opacity:t.opacity??1})}}wt();function ve(e){let t=e.trim().replace(",",".").split(":");if(t.length<2||t.length>3)throw new Error(`Invalid timestamp: ${e}`);if(t.length===2){let[d,u]=t;return parseInt(d,10)*60+parseFloat(u)}let[i,r,c]=t;return parseInt(i,10)*3600+parseInt(r,10)*60+parseFloat(c)}function Ue(e){let n=e.replace(/\r\n/g,`
2
2
  `).split(`
3
3
  `),t=[];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=ve(d[0]),m=ve(d[1]);t.push({text:"",startMs:u*1e3,endMs:m*1e3,confidence:1,timestampMs:(u+m)/2*1e3})}else r?.includes(" --> ")||(r?.trim()===""?t.length>0&&(t[t.length-1].text=t[t.length-1].text.trim()):t.length>0&&(t[t.length-1].text+=r+`
4
4
  `))}return{captions:t.map(i=>({...i,text:i.text.trimEnd()}))}}function De(e,n,t=!0){if(!e||e.length===0)return null;let i=e.find(r=>n>=r.startMs&&n<r.endMs);return i||(!t&&e.length>0?e[0]:null)}function un(e,n,t){if(!e||e.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=t?Math.max(10,t-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 e){if(!k.text)continue;let a=0;if(C&&C.codePoints){let w=bt.measure(k.text,C,i,r,c,u);a=Math.ceil(w.height)}else{let w=k.text.split(`
@@ -1,4 +1,4 @@
1
- import{W as xe,Z as Te,ba as ke,ea as we,fa as Me,ga as Ue,ha as Pe,ka as Re}from"./chunk-PH3UUX6A.mjs";import{k as ve}from"./chunk-PIHG6HJO.mjs";import{g as ye}from"./chunk-77MT33VR.mjs";import{g as j}from"./chunk-Y4NIR77Z.mjs";j();j();j();var re=new Uint8Array(0),Ge=new Uint32Array(0);function Ee(t,e,n){re.length<t.length&&(re=new Uint8Array(t.length),Ge=new Uint32Array(t.length));let r=re,c=Ge,i=0,s=0;for(let u=1;u<=t.length;u++)(u===t.length||t[u]!==t[s])&&(r[i]=t[s],c[i]=u-s,i++,s=u);return{width:e,height:n,values:r.slice(0,i),lengths:c.slice(0,i)}}function De(t){let e=new Uint8Array(t.width*t.height),n=0;for(let r=0;r<t.values.length;r++){let c=n+t.lengths[r];t.values[r]!==0&&e.fill(t.values[r],n,c),n=c}return e}function Se(t){return t.values.byteLength+t.lengths.byteLength}function oe(t){let{mask:e,...n}=t;return{...n,rle:Ee(e,t.width,t.height)}}function ae(t){let{rle:e,...n}=t;return{...n,mask:De(e)}}function se(t){let e=512+t.detections.length*128+t.objects.length*256;for(let n of t.masks??[])e+=Se(n.rle);return t.subject&&(e+=Se(t.subject.mask.rle)),e}var $=class{constructor(e=256*1024*1024){this.maxBytes=e}maxBytes;entries=new Map;bytes=0;get(e,n){let r=`${e}#${n}`,c=this.entries.get(r);return c&&(this.entries.delete(r),this.entries.set(r,c)),c}set(e,n,r){let c=`${e}#${n}`,i=this.entries.get(c);i&&(this.bytes-=se(i),this.entries.delete(c)),this.entries.set(c,r),this.bytes+=se(r);for(let[s,u]of this.entries){if(this.bytes<=this.maxBytes)break;this.entries.delete(s),this.bytes-=se(u)}}clear(){this.entries.clear(),this.bytes=0}get size(){return this.entries.size}};j();var Ne=`
1
+ import{W as xe,Z as Te,ba as ke,fa as we,ga as Me,ha as Ue,ia as Pe,la as Re}from"./chunk-SWRGQTVC.mjs";import{k as ve}from"./chunk-PIHG6HJO.mjs";import{g as ye}from"./chunk-77MT33VR.mjs";import{g as j}from"./chunk-Y4NIR77Z.mjs";j();j();j();var re=new Uint8Array(0),Ge=new Uint32Array(0);function Ee(t,e,n){re.length<t.length&&(re=new Uint8Array(t.length),Ge=new Uint32Array(t.length));let r=re,c=Ge,i=0,s=0;for(let u=1;u<=t.length;u++)(u===t.length||t[u]!==t[s])&&(r[i]=t[s],c[i]=u-s,i++,s=u);return{width:e,height:n,values:r.slice(0,i),lengths:c.slice(0,i)}}function De(t){let e=new Uint8Array(t.width*t.height),n=0;for(let r=0;r<t.values.length;r++){let c=n+t.lengths[r];t.values[r]!==0&&e.fill(t.values[r],n,c),n=c}return e}function Se(t){return t.values.byteLength+t.lengths.byteLength}function oe(t){let{mask:e,...n}=t;return{...n,rle:Ee(e,t.width,t.height)}}function ae(t){let{rle:e,...n}=t;return{...n,mask:De(e)}}function se(t){let e=512+t.detections.length*128+t.objects.length*256;for(let n of t.masks??[])e+=Se(n.rle);return t.subject&&(e+=Se(t.subject.mask.rle)),e}var $=class{constructor(e=256*1024*1024){this.maxBytes=e}maxBytes;entries=new Map;bytes=0;get(e,n){let r=`${e}#${n}`,c=this.entries.get(r);return c&&(this.entries.delete(r),this.entries.set(r,c)),c}set(e,n,r){let c=`${e}#${n}`,i=this.entries.get(c);i&&(this.bytes-=se(i),this.entries.delete(c)),this.entries.set(c,r),this.bytes+=se(r);for(let[s,u]of this.entries){if(this.bytes<=this.maxBytes)break;this.entries.delete(s),this.bytes-=se(u)}}clear(){this.entries.clear(),this.bytes=0}get size(){return this.entries.size}};j();var Ne=`
2
2
  struct Params {
3
3
  mode: u32, // 0 matte, 1 mask, 2 crop
4
4
  _pad: u32,
@@ -0,0 +1,3 @@
1
+ import{b as E,d as R,g as A,j as w,x as U}from"./chunk-4F3DG6YB.mjs";import{m as P}from"./chunk-VEDMJBJV.mjs";import{o as g}from"./chunk-BDZ3TSOT.mjs";import{f as y,g as x}from"./chunk-Y4NIR77Z.mjs";x();x();var S=65536,$=1953658213,N=1954115633,k=1330926671,H=1953784678;function M(r,t){if(r.length<12)throw new Error(`Invalid font binary for "${t}": File size (${r.length} bytes) is too small to be a valid TrueType or OpenType font.`);let e=(r[0]??0)<<24|(r[1]??0)<<16|(r[2]??0)<<8|(r[3]??0);if(e===S||e===$||e===N||e===H)return"truetype";if(e===k)return"opentype";let i=(e>>>0).toString(16).padStart(8,"0");throw new Error(`Invalid font format for "${t}": Expected a valid TrueType (.ttf) or OpenType (.otf) font binary. Found header tag: 0x${i}.`)}async function I(r){if(r instanceof Uint8Array)return{buffer:r};if(typeof r!="string")throw new TypeError(`Font source must be a file path string or Uint8Array, received: ${typeof r}`);let t=r;if(t.startsWith("http://")||t.startsWith("https://")){let s=await fetch(t);if(!s.ok)throw new Error(`Failed to download font from "${t}": HTTP ${s.status} ${s.statusText}`);let c=await s.arrayBuffer();return{buffer:new Uint8Array(c),filePath:t}}if(t.startsWith("file://"))try{t=decodeURIComponent(new URL(t).pathname).replace(/^\/([A-Za-z]:)/,"$1")}catch{t=t.replace(/^file:\/\//,"")}let e=[t,g.resolve(y.cwd(),t),g.resolve(y.cwd(),"assets/fonts",t),g.resolve(y.cwd(),"assets/fonts",g.basename(t))],i=y.cwd();for(let s=0;s<5;s++){e.push(g.resolve(i,t)),e.push(g.resolve(i,"assets/fonts",g.basename(t)));let c=g.dirname(i);if(c===i)break;i=c}let a=null,f=null;for(let s of e)try{if((await P.stat(s)).isFile()){a=s,f=await P.readFile(s);break}}catch{}if(!a||!f)throw new Error(`Font file not found: "${r}". Checked candidate locations:
2
+ - ${e.join(`
3
+ - `)}`);return{buffer:new Uint8Array(f.buffer,f.byteOffset,f.byteLength),filePath:a}}var v=class r{static instance=null;fonts=new Map;constructor(){}static getInstance(){return r.instance||(r.instance=new r),r.instance}static async register(t,e){return r.getInstance().register(t,e)}static async registerEmojiFont(t){let{buffer:e,filePath:i}=await I(t);M(e,i??(typeof t=="string"?t:"Uint8Array")),w.setEmojiFont(e,i)}static hasEmojiFont(){return w.hasEmojiFont()}static measure(t,e){let i=e.fontSize??48,a=w.getFont(e.fontFamily,e.fontWeight,null,void 0,i,e.fontVariations);if(!a)throw new Error(`FontManager.measure: font "${e.fontFamily}" is not registered. Call \`await FontManager.register(...)\` first.`);let f=e.lineHeight!==void 0&&e.lineHeight<10?e.lineHeight*i:e.lineHeight??i*1.2,s=e.letterSpacing??0,{width:c,height:h,layout:m}=U.measure(t,a,i,s,f,e.width,void 0,e.direction),T=i/a.unitsPerEm,o=[],F=new Set,d=0;for(let n of m.glyphs){let l=n.textIndex;if(l===void 0){let u=t.indexOf(n.char,d);l=u>=0?u:d}if(F.has(l))continue;F.add(l),d=l+n.char.length;let p=n.clusterAdvance??n.cp.advanceWidth*(n.fontScale??T);o.push({char:n.char,index:l,x:n.clusterX??n.x,y:n.y,width:p+s,line:n.lineIndex,...n.rtl&&{rtl:!0}})}let b=n=>{if(n<=0||o.length===0){let u=o[0];return u?u.rtl?u.x+u.width-s:u.x:0}let l=o.filter(u=>u.index<n),p=l[l.length-1];return p?p.rtl?p.x:p.x+p.width-s:0};return{width:c,height:h,lines:m.linesCount,lineHeight:f,glyphs:o,caretX:b,widthOf:n=>b(n)-(o[0]?.x??0)}}static get(t){return r.getInstance().get(t)}static has(t){return r.getInstance().has(t)}static getAll(){return r.getInstance().getAll()}static getRegisteredFontPaths(){return r.getInstance().getRegisteredFontPaths()}static clear(){r.getInstance().clear()}async register(t,e){let i,a,f,s;if(typeof t=="object"&&t!==null)i=t.family,a=t.source,f=t.weight,s=t.style;else if(typeof t=="string"&&e!==void 0)i=t,a=e;else if(typeof t=="string")i=void 0,a=t;else throw new TypeError("Invalid arguments passed to FontManager.register");let{buffer:c,filePath:h}=await I(a),m=h??(typeof a=="string"?a:"Uint8Array"),T=M(c,m),o;try{let n=A(c);n&&"fonts"in n&&Array.isArray(n.fonts)&&n.fonts.length>0?o=n.fonts[0]:o=n}catch(n){let l=n instanceof Error?n.message:String(n);throw new Error(`Failed to parse TrueType/OpenType font binary for "${m}": ${l}`)}let F=o.familyName||o.postscriptName||g.parse(m).name,d=i?.trim()||F,b={family:d,source:a,filePath:h,format:T,postscriptName:o.postscriptName,unitsPerEm:o.unitsPerEm,weight:f,style:s};return this.fonts.set(d,b),R(d,h??a),h&&await E(d,h),w.setParsed(d,o),b}get(t){return this.fonts.get(t)}has(t){return this.fonts.has(t)}getAll(){return Array.from(this.fonts.values())}getRegisteredFontPaths(){let t=[];for(let e of this.fonts.values())e.filePath?t.push(e.filePath):typeof e.source=="string"&&t.push(e.source);return t}clear(){this.fonts.clear()}};export{v as a};
@@ -1 +1 @@
1
- import{y as P,z as V}from"./chunk-52X7SURQ.mjs";import{c as I}from"./chunk-OBIJIQCZ.mjs";import{n as S}from"./chunk-HOV6DDBZ.mjs";import{a as x,b as y,d as D,f as m}from"./chunk-UE7Y65C3.mjs";import{b,j as p,v as T}from"./chunk-64L4GUOF.mjs";import{b as g}from"./chunk-354GX6IB.mjs";import{g as h}from"./chunk-Y4NIR77Z.mjs";h();var f=class{constructor(e,t){this.url=e;this.isHeadless=t}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let e=await m.acquire(this.url);this.destroyed?m.release(this.url):this.input=e}catch(e){throw this.initPromise=null,e}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(m.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},w=class extends f{canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];backwardFrames=[];backwardBytes=0;backwardEnd;lastHeadlessTimestamp;isDecoding=!1;decodeBuffer=null;nextRequest=null;async durationSec(){await this.init();let e=await this.input?.getPrimaryVideoTrack();if(!e)throw new Error(`No video track in ${this.url}`);return e.computeDuration()}pushHeadlessQueue(e){let t=this.headlessQueue.findIndex(r=>r.timestamp>e.timestamp);t===-1?this.headlessQueue.push(e):this.headlessQueue.splice(t,0,e)}async fillHeadlessQueue(e){if(this.iterator)for(;this.headlessQueue.length<2;){let t=await this.iterator.next();if(this.currentFetchId!==e){t.value?.close?.();return}if(t.done||!t.value)break;this.pushHeadlessQueue(t.value)}}async closeIterator(e){if(e)try{await e.return()}catch{}}resetSinks(){let e=this.iterator;if(this.iterator=null,e)try{e.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let t of this.headlessQueue)try{t.close()}catch{}this.headlessQueue=[],this.clearBackwardFrames(),this.lastHeadlessTimestamp=void 0,this.decodeBuffer=null,this.iteratorStartTimestamp=-1}clearBackwardFrames(){for(let e of this.backwardFrames)e.close();this.backwardFrames=[],this.backwardBytes=0,this.backwardEnd=void 0}async copyHeadlessSample(e,t){let r=e.displayWidth,i=e.displayHeight,a=r*i*4,s=this.decodeBuffer;return(!s||s.length!==a)&&(s=new Uint8Array(a),this.decodeBuffer=s),await e.copyTo(s,{format:"RGBA"}),this.currentFetchId!==t||this.destroyed||!this.input?null:(g(s),{width:r,height:i,buffer:s})}cachedBackwardFrame(e){let t,r=-1;for(let[a,s]of this.backwardFrames.entries()){if(s.timestamp>e+1e-4)break;t=s,r=a}let i=this.backwardFrames[r+1]?.timestamp??this.backwardEnd;if(!(!t||!(t.duration>0)||e+1e-4>=Math.min(t.timestamp+t.duration,i??1/0)))return t}async fillBackwardFrames(e,t){if(!this.videoSampleSink)return;await this.closeIterator(this.iterator),this.iterator=null;for(let i of this.headlessQueue)i.close();this.headlessQueue=[],this.clearBackwardFrames();let r=this.videoSampleSink.samples(Math.max(0,e-.5));try{for await(let i of r){if(i.timestamp>e+1e-4&&(this.backwardEnd=i.timestamp),this.destroyed||this.currentFetchId!==t||i.timestamp>e+1e-4){i.close();break}let a=i.displayWidth*i.displayHeight*4;if(a>48*1024*1024){i.close();break}for(this.backwardFrames.push(i),this.backwardBytes+=a;this.backwardBytes>48*1024*1024&&this.backwardFrames.length>1;){let s=this.backwardFrames.shift();s&&(this.backwardBytes-=s.displayWidth*s.displayHeight*4,s.close())}}}finally{await this.closeIterator(r)}}onDestroy(){this.resetSinks()}async startIterator(e,t){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let a=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed)return;this.currentFrame=a.value??null;let s=await this.iterator.next();this.currentFetchId!==t||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(e,t){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let a=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(a),await this.fillHeadlessQueue(t),!(this.currentFetchId!==t||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(e){if(await this.init(),this.destroyed||!this.input)return null;let t=Math.max(0,Number.isFinite(e)?e:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:t,resolve:r,reject:i}})):this.executeDecode(t)}async executeDecode(e){this.isDecoding=!0;try{return await this.performDecode(e)}finally{if(this.isDecoding=!1,this.nextRequest){let t=this.nextRequest;this.nextRequest=null,this.executeDecode(t.timestampSec).then(t.resolve).catch(t.reject)}}}async performDecodeHeadless(e,t){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let d=await this.input.getPrimaryVideoTrack();if(!d)return null;this.videoSampleSink=new x(d)}let r=1e-4,i=1,a=.01,s=this.lastHeadlessTimestamp!==void 0&&e<this.lastHeadlessTimestamp-1e-4;this.lastHeadlessTimestamp=e;let o=this.cachedBackwardFrame(e);if(!o&&s&&(await this.fillBackwardFrames(e,t),o=this.cachedBackwardFrame(e)),o)return this.copyHeadlessSample(o,t);if((!this.iterator||e<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&e<this.headlessQueue[0].timestamp-a||this.headlessQueue.length>0&&e-this.headlessQueue[0].timestamp>i)&&(await this.startIteratorHeadless(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(t),this.currentFetchId!==t||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=e+r){this.headlessQueue.shift()?.close();continue}break}let n=this.headlessQueue[0];return n?this.copyHeadlessSample(n,t):null}async performDecodeInternal(e){this.currentFetchId++;let t=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(e,t);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let o=await this.input.getPrimaryVideoTrack();if(!o)return null;this.canvasSink=new y(o,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||e<this.iteratorStartTimestamp-r||this.currentFrame&&e<this.currentFrame.timestamp-.01||this.currentFrame&&e-this.currentFrame.timestamp>1)&&(await this.startIterator(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=e+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let o=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed||!this.input)return null;this.nextFrame=o.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(e){let t=Math.max(0,Number.isFinite(e)?e:0);try{return await this.performDecodeInternal(t)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let a=await this.input.getPrimaryVideoTrack();if(a&&!this.destroyed)return this.canvasSink=new y(a,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(t)}}catch{}throw r}}},v=class extends f{audioSink=null;onDestroy(){this.audioSink=null}async startIterator(e,t){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(e),this.iteratorStartTimestamp=e)}async*getBuffers(e){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new D(i)}(!this.iterator||Math.abs(e-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(e,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(t){let r=t;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw t}finally{let t=this.currentFetchId;this.currentFetchId===t&&(this.iterator=null)}}},k=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;ticks=0;lastTick=new Map;touchKey(e){this.lastAccessed.set(e,Date.now()),this.lastTick.set(e,this.ticks)}dropKey(e){let t=this.videoDecoders.get(e);if(t){try{t.destroy()}catch{}this.videoDecoders.delete(e)}let r=this.audioDecoders.get(e);if(r){try{r.destroy()}catch{}this.audioDecoders.delete(e)}this.lastAccessed.delete(e),this.lastTick.delete(e)}tick(e=120){this.ticks++;for(let[t,r]of this.lastTick)this.ticks-r>e&&this.dropKey(t)}destroy(){for(let e of this.videoDecoders.values())try{e.destroy()}catch{}this.videoDecoders.clear();for(let e of this.audioDecoders.values())try{e.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear(),this.lastTick.clear()}get size(){return this.videoDecoders.size+this.audioDecoders.size}prune(e=3e5){let t=Date.now();for(let[r,i]of this.lastAccessed.entries())t-i>e&&this.dropKey(r)}getVideo(e,t,r){let i=`${e}-${t}-${r??"default"}`,a=this.videoDecoders.get(i);return a||(a=new w(e,t),this.videoDecoders.set(i,a)),this.touchKey(i),this.prune(),a}getAudio(e,t){let r=`${e}-${t??"default"}`,i=this.audioDecoders.get(r);return i||(i=new v(e,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(e){let t=[...this.videoDecoders.keys(),...this.audioDecoders.keys()];for(let r of t)r.includes(e)&&this.dropKey(r)}},j=new k;h();async function A(c,e){if(typeof window<"u"&&typeof FontFace<"u"){let t=typeof e=="string"?e:"its registered bytes";try{let i=await new FontFace(c,typeof e=="string"?`url(${e})`:e).load();document.fonts.add(i),await document.fonts.ready}catch(r){console.warn(`[preloadFont] Failed to load font "${c}" from ${t}:`,r)}}else typeof e=="string"&&await b(c,e)}h();var M=!1;async function O(c,e,t=(r,i)=>console.warn(`[framefields] ${i}`,r)){let r=new Set,i=new Map;(function s(o){let n=o.operation;if(n){let d=n.op==="text"||n.kind==="text"||n.op==="caption"||n.kind==="caption"||typeof n.text=="string",u=n.fontFamily||(d?"Inter":"");if(u&&r.add(u),d&&typeof n.text=="string"){let l=n.fontSize??48;for(let B of T(n.text))i.set(`${B}-${l}`,l)}}for(let d of o.children??[])s(d)})(c);let a=[];for(let s of r){let o=P(s),n=V(s),d=typeof o=="string"?o:"its registered bytes";a.push(A(s,o).catch(u=>t(u,`font "${s}" from ${d}`))),e&&a.push(p.preloadSlugFont(e,s,n).catch(u=>t(u,`Slug font "${s}" from ${n}`)))}if(e&&i.size>0){!p.hasEmojiFont()&&!M&&(M=!0,console.warn("[framefields] Text uses emoji but no emoji font is registered, so exports draw nothing for them. Run `npx framefields fonts add emoji` and call the generated `registerFonts()`, or register a color emoji font (e.g. Noto Color Emoji) with FontManager.registerEmojiFont(path). `comp.lint()` names the layers (missing_emoji_font)."));for(let[s,o]of i){let n=s.slice(0,s.lastIndexOf("-"));a.push(p.preloadEmoji(e,n,o).catch(d=>{p.hasEmojiFont()&&t(d,`emoji "${n}"`)}))}}await Promise.all(a)}h();function $(c){if(c.operation?.op==="source")return I(c).sourceUrl;for(let e of c.children??[]){let t=$(e);if(t)return t}}async function Y(c,e){let t=async r=>{let i=r.operation;if(i?.op==="CompositorLayer"&&i.timeRemap&&i.durationFrames){let a=$(r);if(!a)throw new Error(`Time remap on '${i.id}' has no media source`);let s=[],o=await m.acquire(a);try{let d=i.dataType==="Video"?await o.getPrimaryVideoTrack():null,u=i.dataType==="Video"&&(i.muted||i.volume===0)?null:await o.getPrimaryAudioTrack();if(i.dataType==="Video"&&!d)throw new Error(`Time remap on '${i.id}': source has no video track`);if(i.dataType==="Audio"&&!u)throw new Error(`Time remap on '${i.id}': source has no audio track`);for(let l of[d,u])l&&s.push({first:await o.getFirstTimestamp([l]),last:await l.computeDuration()})}finally{m.release(a)}let n=d=>{for(let{first:u,last:l}of s)if(d.min<u-1e-8||d.max>l+1e-8||d.maxIncluded&&d.max>=l-1e-8)throw new Error(`Time remap on '${i.id}' requests source ${d.min.toFixed(6)}\u2013${d.max.toFixed(6)}s outside ${u.toFixed(6)}\u2013${l.toFixed(6)}s`)};i.timeRemap.kind==="recorded"?i.timeRemap.recorder.checkRange(n):n(S(i.timeRemap,0,i.durationFrames,e))}for(let a of r.children??[])await t(a)};await t(c)}export{j as a,A as b,O as c,Y as d};
1
+ import{y as P,z as V}from"./chunk-TEA3GVBJ.mjs";import{c as I}from"./chunk-OBIJIQCZ.mjs";import{n as S}from"./chunk-HOV6DDBZ.mjs";import{a as x,b as y,d as D,f as m}from"./chunk-UE7Y65C3.mjs";import{b,j as p,v as T}from"./chunk-4F3DG6YB.mjs";import{b as g}from"./chunk-354GX6IB.mjs";import{g as h}from"./chunk-Y4NIR77Z.mjs";h();var f=class{constructor(e,t){this.url=e;this.isHeadless=t}url;isHeadless;input=null;initPromise=null;iterator=null;iteratorStartTimestamp=-1;currentFetchId=0;fetchLock=Promise.resolve();destroyed=!1;async init(){if(!this.input)return this.initPromise?this.initPromise:(this.destroyed=!1,this.initPromise=(async()=>{try{let e=await m.acquire(this.url);this.destroyed?m.release(this.url):this.input=e}catch(e){throw this.initPromise=null,e}})(),this.initPromise)}destroy(){this.destroyed=!0,this.iterator?.return(),this.input&&(m.release(this.url),this.input=null),this.initPromise=null,this.onDestroy()}},w=class extends f{canvasSink=null;videoSampleSink=null;currentFrame=null;nextFrame=null;currentSample=null;nextSample=null;headlessQueue=[];backwardFrames=[];backwardBytes=0;backwardEnd;lastHeadlessTimestamp;isDecoding=!1;decodeBuffer=null;nextRequest=null;async durationSec(){await this.init();let e=await this.input?.getPrimaryVideoTrack();if(!e)throw new Error(`No video track in ${this.url}`);return e.computeDuration()}pushHeadlessQueue(e){let t=this.headlessQueue.findIndex(r=>r.timestamp>e.timestamp);t===-1?this.headlessQueue.push(e):this.headlessQueue.splice(t,0,e)}async fillHeadlessQueue(e){if(this.iterator)for(;this.headlessQueue.length<2;){let t=await this.iterator.next();if(this.currentFetchId!==e){t.value?.close?.();return}if(t.done||!t.value)break;this.pushHeadlessQueue(t.value)}}async closeIterator(e){if(e)try{await e.return()}catch{}}resetSinks(){let e=this.iterator;if(this.iterator=null,e)try{e.return()}catch{}this.canvasSink=null,this.videoSampleSink=null,this.currentFrame=null,this.nextFrame=null,this.currentSample?.close(),this.currentSample=null,this.nextSample?.close(),this.nextSample=null;for(let t of this.headlessQueue)try{t.close()}catch{}this.headlessQueue=[],this.clearBackwardFrames(),this.lastHeadlessTimestamp=void 0,this.decodeBuffer=null,this.iteratorStartTimestamp=-1}clearBackwardFrames(){for(let e of this.backwardFrames)e.close();this.backwardFrames=[],this.backwardBytes=0,this.backwardEnd=void 0}async copyHeadlessSample(e,t){let r=e.displayWidth,i=e.displayHeight,a=r*i*4,s=this.decodeBuffer;return(!s||s.length!==a)&&(s=new Uint8Array(a),this.decodeBuffer=s),await e.copyTo(s,{format:"RGBA"}),this.currentFetchId!==t||this.destroyed||!this.input?null:(g(s),{width:r,height:i,buffer:s})}cachedBackwardFrame(e){let t,r=-1;for(let[a,s]of this.backwardFrames.entries()){if(s.timestamp>e+1e-4)break;t=s,r=a}let i=this.backwardFrames[r+1]?.timestamp??this.backwardEnd;if(!(!t||!(t.duration>0)||e+1e-4>=Math.min(t.timestamp+t.duration,i??1/0)))return t}async fillBackwardFrames(e,t){if(!this.videoSampleSink)return;await this.closeIterator(this.iterator),this.iterator=null;for(let i of this.headlessQueue)i.close();this.headlessQueue=[],this.clearBackwardFrames();let r=this.videoSampleSink.samples(Math.max(0,e-.5));try{for await(let i of r){if(i.timestamp>e+1e-4&&(this.backwardEnd=i.timestamp),this.destroyed||this.currentFetchId!==t||i.timestamp>e+1e-4){i.close();break}let a=i.displayWidth*i.displayHeight*4;if(a>48*1024*1024){i.close();break}for(this.backwardFrames.push(i),this.backwardBytes+=a;this.backwardBytes>48*1024*1024&&this.backwardFrames.length>1;){let s=this.backwardFrames.shift();s&&(this.backwardBytes-=s.displayWidth*s.displayHeight*4,s.close())}}}finally{await this.closeIterator(r)}}onDestroy(){this.resetSinks()}async startIterator(e,t){if(!this.canvasSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;this.iterator=this.canvasSink.canvases(r);let a=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed)return;this.currentFrame=a.value??null;let s=await this.iterator.next();this.currentFetchId!==t||this.destroyed||(this.nextFrame=s.value??null,this.iteratorStartTimestamp=r)}async startIteratorHeadless(e,t){if(!this.videoSampleSink)return;let r=Math.max(0,Number.isFinite(e)?e:0),i=this.iterator;if(this.iterator=null,await this.closeIterator(i),this.currentFetchId!==t||this.destroyed)return;for(let s of this.headlessQueue)s.close();this.headlessQueue=[];let a=Math.max(0,r-.1);this.iterator=this.videoSampleSink.samples(a),await this.fillHeadlessQueue(t),!(this.currentFetchId!==t||this.destroyed)&&(this.iteratorStartTimestamp=r)}async getFrame(e){if(await this.init(),this.destroyed||!this.input)return null;let t=Math.max(0,Number.isFinite(e)?e:0);return this.isDecoding?(this.nextRequest&&this.nextRequest.resolve(null),new Promise((r,i)=>{this.nextRequest={timestampSec:t,resolve:r,reject:i}})):this.executeDecode(t)}async executeDecode(e){this.isDecoding=!0;try{return await this.performDecode(e)}finally{if(this.isDecoding=!1,this.nextRequest){let t=this.nextRequest;this.nextRequest=null,this.executeDecode(t.timestampSec).then(t.resolve).catch(t.reject)}}}async performDecodeHeadless(e,t){if(!this.videoSampleSink){if(this.destroyed||!this.input)return null;let d=await this.input.getPrimaryVideoTrack();if(!d)return null;this.videoSampleSink=new x(d)}let r=1e-4,i=1,a=.01,s=this.lastHeadlessTimestamp!==void 0&&e<this.lastHeadlessTimestamp-1e-4;this.lastHeadlessTimestamp=e;let o=this.cachedBackwardFrame(e);if(!o&&s&&(await this.fillBackwardFrames(e,t),o=this.cachedBackwardFrame(e)),o)return this.copyHeadlessSample(o,t);if((!this.iterator||e<this.iteratorStartTimestamp-r||this.headlessQueue.length>0&&e<this.headlessQueue[0].timestamp-a||this.headlessQueue.length>0&&e-this.headlessQueue[0].timestamp>i)&&(await this.startIteratorHeadless(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;;){if(await this.fillHeadlessQueue(t),this.currentFetchId!==t||this.destroyed||!this.input)return null;if(this.headlessQueue.length>=2&&this.headlessQueue[1].timestamp<=e+r){this.headlessQueue.shift()?.close();continue}break}let n=this.headlessQueue[0];return n?this.copyHeadlessSample(n,t):null}async performDecodeInternal(e){this.currentFetchId++;let t=this.currentFetchId;if(this.isHeadless)return this.performDecodeHeadless(e,t);if(!this.canvasSink){if(this.destroyed||!this.input)return null;let o=await this.input.getPrimaryVideoTrack();if(!o)return null;this.canvasSink=new y(o,{poolSize:3,alpha:!0})}let r=1e-4;if((!this.iterator||e<this.iteratorStartTimestamp-r||this.currentFrame&&e<this.currentFrame.timestamp-.01||this.currentFrame&&e-this.currentFrame.timestamp>1)&&(await this.startIterator(e,t),this.currentFetchId!==t||this.destroyed||!this.input))return null;for(;this.nextFrame&&this.nextFrame.timestamp<=e+r;)if(this.currentFrame=this.nextFrame,this.nextFrame=null,this.iterator){let o=await this.iterator.next();if(this.currentFetchId!==t||this.destroyed||!this.input)return null;this.nextFrame=o.value??null}if(!this.currentFrame)return null;let s=this.currentFrame.canvas;return{width:s.width,height:s.height,canvas:s}}async performDecode(e){let t=Math.max(0,Number.isFinite(e)?e:0);try{return await this.performDecodeInternal(t)}catch(r){let i=r;if(i?.name==="InputDisposedError"||i?.message?.includes("disposed")||this.destroyed||!this.input)return null;this.resetSinks();try{if(!this.isHeadless&&this.input&&!this.destroyed){let a=await this.input.getPrimaryVideoTrack();if(a&&!this.destroyed)return this.canvasSink=new y(a,{poolSize:3,alpha:!0,decoderOptions:{hardwareAcceleration:"prefer-software"}}),await this.performDecodeInternal(t)}}catch{}throw r}}},v=class extends f{audioSink=null;onDestroy(){this.audioSink=null}async startIterator(e,t){this.audioSink&&(this.iterator?.return(),this.iterator=this.audioSink.buffers(e),this.iteratorStartTimestamp=e)}async*getBuffers(e){try{if(await this.init(),this.destroyed||!this.input)return;if(!this.audioSink){let i=await this.input.getPrimaryAudioTrack();if(!i)return;this.audioSink=new D(i)}(!this.iterator||Math.abs(e-this.iteratorStartTimestamp)>.05)&&(this.currentFetchId++,await this.startIterator(e,this.currentFetchId));let r=this.currentFetchId;if(!this.iterator)return;for await(let i of this.iterator){if(this.currentFetchId!==r||this.destroyed||!this.input)break;this.iteratorStartTimestamp=i.timestamp+i.duration,yield i}}catch(t){let r=t;if(r?.name==="InputDisposedError"||r?.message?.includes("disposed")||this.destroyed||!this.input)return;throw t}finally{let t=this.currentFetchId;this.currentFetchId===t&&(this.iterator=null)}}},k=class{videoDecoders=new Map;audioDecoders=new Map;lastAccessed=new Map;ticks=0;lastTick=new Map;touchKey(e){this.lastAccessed.set(e,Date.now()),this.lastTick.set(e,this.ticks)}dropKey(e){let t=this.videoDecoders.get(e);if(t){try{t.destroy()}catch{}this.videoDecoders.delete(e)}let r=this.audioDecoders.get(e);if(r){try{r.destroy()}catch{}this.audioDecoders.delete(e)}this.lastAccessed.delete(e),this.lastTick.delete(e)}tick(e=120){this.ticks++;for(let[t,r]of this.lastTick)this.ticks-r>e&&this.dropKey(t)}destroy(){for(let e of this.videoDecoders.values())try{e.destroy()}catch{}this.videoDecoders.clear();for(let e of this.audioDecoders.values())try{e.destroy()}catch{}this.audioDecoders.clear(),this.lastAccessed.clear(),this.lastTick.clear()}get size(){return this.videoDecoders.size+this.audioDecoders.size}prune(e=3e5){let t=Date.now();for(let[r,i]of this.lastAccessed.entries())t-i>e&&this.dropKey(r)}getVideo(e,t,r){let i=`${e}-${t}-${r??"default"}`,a=this.videoDecoders.get(i);return a||(a=new w(e,t),this.videoDecoders.set(i,a)),this.touchKey(i),this.prune(),a}getAudio(e,t){let r=`${e}-${t??"default"}`,i=this.audioDecoders.get(r);return i||(i=new v(e,!1),this.audioDecoders.set(r,i)),this.touchKey(r),this.prune(),i}clearNode(e){let t=[...this.videoDecoders.keys(),...this.audioDecoders.keys()];for(let r of t)r.includes(e)&&this.dropKey(r)}},j=new k;h();async function A(c,e){if(typeof window<"u"&&typeof FontFace<"u"){let t=typeof e=="string"?e:"its registered bytes";try{let i=await new FontFace(c,typeof e=="string"?`url(${e})`:e).load();document.fonts.add(i),await document.fonts.ready}catch(r){console.warn(`[preloadFont] Failed to load font "${c}" from ${t}:`,r)}}else typeof e=="string"&&await b(c,e)}h();var M=!1;async function O(c,e,t=(r,i)=>console.warn(`[framefields] ${i}`,r)){let r=new Set,i=new Map;(function s(o){let n=o.operation;if(n){let d=n.op==="text"||n.kind==="text"||n.op==="caption"||n.kind==="caption"||typeof n.text=="string",u=n.fontFamily||(d?"Inter":"");if(u&&r.add(u),d&&typeof n.text=="string"){let l=n.fontSize??48;for(let B of T(n.text))i.set(`${B}-${l}`,l)}}for(let d of o.children??[])s(d)})(c);let a=[];for(let s of r){let o=P(s),n=V(s),d=typeof o=="string"?o:"its registered bytes";a.push(A(s,o).catch(u=>t(u,`font "${s}" from ${d}`))),e&&a.push(p.preloadSlugFont(e,s,n).catch(u=>t(u,`Slug font "${s}" from ${n}`)))}if(e&&i.size>0){!p.hasEmojiFont()&&!M&&(M=!0,console.warn("[framefields] Text uses emoji but no emoji font is registered, so exports draw nothing for them. Run `npx framefields fonts add emoji` and call the generated `registerFonts()`, or register a color emoji font (e.g. Noto Color Emoji) with FontManager.registerEmojiFont(path). `comp.lint()` names the layers (missing_emoji_font)."));for(let[s,o]of i){let n=s.slice(0,s.lastIndexOf("-"));a.push(p.preloadEmoji(e,n,o).catch(d=>{p.hasEmojiFont()&&t(d,`emoji "${n}"`)}))}}await Promise.all(a)}h();function $(c){if(c.operation?.op==="source")return I(c).sourceUrl;for(let e of c.children??[]){let t=$(e);if(t)return t}}async function Y(c,e){let t=async r=>{let i=r.operation;if(i?.op==="CompositorLayer"&&i.timeRemap&&i.durationFrames){let a=$(r);if(!a)throw new Error(`Time remap on '${i.id}' has no media source`);let s=[],o=await m.acquire(a);try{let d=i.dataType==="Video"?await o.getPrimaryVideoTrack():null,u=i.dataType==="Video"&&(i.muted||i.volume===0)?null:await o.getPrimaryAudioTrack();if(i.dataType==="Video"&&!d)throw new Error(`Time remap on '${i.id}': source has no video track`);if(i.dataType==="Audio"&&!u)throw new Error(`Time remap on '${i.id}': source has no audio track`);for(let l of[d,u])l&&s.push({first:await o.getFirstTimestamp([l]),last:await l.computeDuration()})}finally{m.release(a)}let n=d=>{for(let{first:u,last:l}of s)if(d.min<u-1e-8||d.max>l+1e-8||d.maxIncluded&&d.max>=l-1e-8)throw new Error(`Time remap on '${i.id}' requests source ${d.min.toFixed(6)}\u2013${d.max.toFixed(6)}s outside ${u.toFixed(6)}\u2013${l.toFixed(6)}s`)};i.timeRemap.kind==="recorded"?i.timeRemap.recorder.checkRange(n):n(S(i.timeRemap,0,i.durationFrames,e))}for(let a of r.children??[])await t(a)};await t(c)}export{j as a,A as b,O as c,Y as d};
@@ -0,0 +1,138 @@
1
+ import{a as Ee}from"./chunk-EAHJZDOJ.mjs";import{a as gn}from"./chunk-BREZX5L5.mjs";import{a as at}from"./chunk-6ISHV73H.mjs";import{b as Ve,c as ct,d as De,e as fe,g as ae,h as pe,m as lt}from"./chunk-PIHG6HJO.mjs";import{G as tt}from"./chunk-GH77FX2Y.mjs";import{a as w,b as F}from"./chunk-6FULVULN.mjs";import{b as et,h as de,i as Ce,m as $}from"./chunk-ULOFDFHJ.mjs";import{a as ot,e as st,i as Ae,j as it}from"./chunk-VEDMJBJV.mjs";import{b as ue,c as nt,e as rt,t as hn}from"./chunk-QEWDIPJ7.mjs";import{d as Le,e as me,g as Fe}from"./chunk-BDZ3TSOT.mjs";import{d as pn,f as L,g as y}from"./chunk-Y4NIR77Z.mjs";y();var dt=class{domain="visual";signals;config;_frameHooks=[];constructor(e){this.config={...e},this.signals={};for(let[t,r]of Object.entries(e))de(r)?this.signals[t]=r:this.signals[t]=Ce(r);return new Proxy(this,{get(t,r,s){if(typeof r=="string"&&r in t.signals){let i=t.signals[r];return i?i.value:void 0}return Reflect.get(t,r,s)},set(t,r,s,i){if(typeof r=="string"&&r in t.signals){let o=t.signals[r];return de(s)?(t.signals[r]=s,t.config[r]=s):o&&typeof o.set=="function"?(o.set(s),t.config[r]=s):(t.signals[r]=Ce(s),t.config[r]=s),!0}return Reflect.set(t,r,s,i)}})}onRequestFrame(e){return this._frameHooks.push(e),this}notifyFrame(e){for(let t of this._frameHooks)t(e)}resolveUniforms(e){let t={};for(let[r,s]of Object.entries(this.signals))t[r]=s.get(e);return t}resolveTextures(){let e={};for(let[t,r]of Object.entries(this.signals)){let s=r.gpuBinding;s?.textureView&&(e[`${t}TextureView`]=s.textureView),s?.texture&&(e[`${t}Texture`]=s.texture)}return e}toOperation(){let e={op:this.op,effect:this,onRequestFrame:t=>this.notifyFrame(t),signals:this.signals,...this.config};for(let[t,r]of Object.entries(this.signals)){let s=this.config[t];!de(s)&&(typeof s=="string"||typeof s=="boolean")?e[t]=r.value:e[t]=r}return e}};y();var ut=class extends Error{constructor(e){super(e),this.name="ModerationError"}},mt=class extends Error{constructor(e){super(e),this.name="ModerationUnrefundableError"}};y();function dr(n,e){if(ft(e),!Number.isFinite(n)||n<=0)throw new Error("durationMs must be finite and positive");let t=Math.max(1,Math.round(n/1e3*e));if(!Number.isSafeInteger(t))throw new Error("Duration exceeds the safe frame range");return t}function ft(n){if(!Number.isFinite(n)||n<=0)throw new Error(`Invalid fps: ${n}. Must be finite and > 0.`)}function ur(n,e){if(ft(e),n.atMs!==void 0&&(!Number.isFinite(n.atMs)||n.atMs<0))throw new Error("atMs must be finite and nonnegative");let t=n.atMs!==void 0?Math.round(n.atMs/1e3*e):n.frame??0;if(!Number.isSafeInteger(t)||t<0)throw new Error(`Invalid frame index: ${t}. Must be a nonnegative safe integer.`);let r=t/e*1e3;if(!Number.isFinite(r))throw new Error("Frame timestamp exceeds the finite range");return{frame:t,timeMs:r}}y();y();y();var pt="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var ht=(n=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(n|=0));for(;n--;)e+=pt[t[n]&63];return e};var kr=n=>ht(n);y();var gt=F.object({dataTypes:F.custom(),label:F.string(),required:F.boolean().optional(),order:F.number(),description:F.string().optional()}),bn=F.object({configKey:F.string(),dataTypes:F.custom(),label:F.string(),description:F.string().optional()}),wr=F.object({type:F.string().min(1),version:F.number().int().positive().optional(),baseType:F.string().optional(),displayName:F.string().min(1),description:F.string().optional(),showInQuickAccess:F.boolean().optional(),showInSidebar:F.boolean().optional(),advanced:F.boolean().optional(),category:F.string().min(1),subcategory:F.string().optional(),defaultDimensions:F.object({width:F.number().positive().optional(),height:F.number().positive().optional()}).optional(),handles:F.object({inputs:F.array(gt),outputs:F.array(gt)}),variableInputs:F.discriminatedUnion("enabled",[F.object({enabled:F.literal(!0),dataTypes:F.custom()}),F.object({enabled:F.literal(!1),dataTypes:F.custom().optional()})]).optional(),variableOutputs:F.discriminatedUnion("enabled",[F.object({enabled:F.literal(!0),dataTypes:F.custom()}),F.object({enabled:F.literal(!1),dataTypes:F.custom().optional()})]).optional(),isTerminal:F.boolean().optional(),isTransient:F.boolean().optional(),configSchema:F.custom().optional(),defaultConfig:F.record(F.string(),F.unknown()).optional(),validation:F.any().optional(),resultSchema:F.custom().optional(),configHandles:F.array(bn).optional()});y();function Pr(n){if(!Number.isFinite(n)||!Number.isInteger(n)||n<0)throw new RangeError(`FrameIndex must be a non-negative finite integer, got ${n}`);return n}function Ir(n){if(!Number.isFinite(n))throw new TypeError(`Seconds must be a finite number, got ${n}`);return n}function Rr(n){if(!Number.isFinite(n))throw new TypeError(`Milliseconds must be a finite number, got ${n}`);return n}function Or(n){if(!Number.isFinite(n)||n<=0)throw new RangeError(`Fps must be a positive finite number, got ${n}`);return n}function Cr(n){if(!Number.isFinite(n))throw new TypeError(`Normalized must be a finite number, got ${n}`);return Math.max(0,Math.min(1,n))}function Er(n){if(!Number.isFinite(n))throw new TypeError(`Degrees must be a finite number, got ${n}`);return n}function Ar(n){if(!Number.isFinite(n))throw new TypeError(`Radians must be a finite number, got ${n}`);return n}function Lr(n){if(!Number.isFinite(n))throw new TypeError(`Pixels must be a finite number, got ${n}`);return n}function Fr(n){if(!n)throw new TypeError("HandleId cannot be empty");return n}function Vr(n){if(!n)throw new TypeError("HandleLabel cannot be empty");return n}function Dr(n){if(!n)throw new TypeError("NodeId cannot be empty");return n}function jr(n){return typeof n=="number"&&Number.isInteger(n)&&n>=0}function Br(n){return typeof n=="number"&&Number.isFinite(n)&&n>=0&&n<=1}y();var Ur={Text:{bg:"bg-blue-500",stroke:"stroke-blue-500",hex:"#3b82f6",text:"text-blue-500",border:"border-blue-500"},Image:{bg:"bg-purple-500",stroke:"stroke-purple-500",hex:"#a855f7",text:"text-purple-500",border:"border-purple-500"},Video:{bg:"bg-teal-500",stroke:"stroke-teal-500",hex:"oklch(60% 0.118 184.704)",text:"text-teal-500",border:"border-teal-500"},Audio:{bg:"bg-orange-500",stroke:"stroke-orange-500",hex:"#f97316",text:"text-orange-500",border:"border-orange-500"},Number:{bg:"bg-green-600",stroke:"stroke-green-600",hex:"#16a34a",text:"text-green-600",border:"border-green-600"},Boolean:{bg:"bg-amber-600",stroke:"stroke-amber-600",hex:"#d97706",text:"text-amber-600",border:"border-amber-600"},SVG:{bg:"bg-lime-600",stroke:"stroke-lime-600",hex:"#65a30d",text:"text-lime-600",border:"border-lime-600"},Caption:{bg:"bg-rose-500",stroke:"stroke-rose-500",hex:"#f43f5e",text:"text-rose-500",border:"border-rose-500"},GIF:{bg:"bg-pink-500",stroke:"stroke-pink-500",hex:"#ec4899",text:"text-pink-500",border:"border-pink-500"},Lottie:{bg:"bg-indigo-500",stroke:"stroke-indigo-500",hex:"#6366f1",text:"text-indigo-500",border:"border-indigo-500"},Signal:{bg:"bg-fuchsia-500",stroke:"stroke-fuchsia-500",hex:"#d946ef",text:"text-fuchsia-500",border:"border-fuchsia-500"},LUT:{bg:"bg-cyan-600",stroke:"stroke-cyan-600",hex:"#0891b2",text:"text-cyan-600",border:"border-cyan-600"}};y();var Gr={Image:"png",Video:"mp4",Audio:"mp3",Text:"txt",Number:"txt",Boolean:"txt",SVG:"svg",Caption:"srt",Lottie:"json",ThreeD:"glb",GIF:"gif",Signal:"txt",LUT:"cube"},Wr={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",mp4:"video/mp4",webm:"video/webm",mov:"video/quicktime",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",pdf:"application/pdf",json:"application/json",txt:"text/plain",srt:"text/srt",aac:"audio/aac",flac:"audio/flac"},yn=["source-over","source-in","source-out","source-atop","destination-over","destination-in","destination-out","destination-atop","lighter","copy","xor","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],yt=w.enum(yn),bt=class n{static schemas=new Map;static register(e,t){n.schemas.set(e,t)}static get(e){return n.schemas.get(e)}static clear(){n.schemas.clear()}};y();var qr={FONT_FAMILY:"Inter",FONT_SIZE:64,FILL:"#ffffff",LINE_HEIGHT:1.1,ALIGN:"left",VERTICAL_ALIGN:"top",LETTER_SPACING:0,STROKE_WIDTH:0,STROKE:"#000000",CORNER_RADIUS:0,PADDING:0};y();var xn=w.enum(["fade-in","fade-out","slide-in-left","slide-in-right","slide-in-top","slide-in-bottom","zoom-in","zoom-out","rotate-cw","rotate-ccw","bounce","shake"]),kn=w.object({id:w.string(),type:xn,value:w.number()}),Tn=w.object({x:w.number().default(0),y:w.number().default(0),width:w.number().optional(),height:w.number().optional(),rotation:w.number().default(0),scale:w.number().min(0).default(1),opacity:w.number().min(0).max(1).default(1),zIndex:w.number().int().optional(),blendMode:yt.optional()}),_n=w.object({startFrame:w.number().int().min(0).default(0),durationInMS:w.number().int().min(1).optional(),trimStart:w.number().int().min(0).optional(),trimEnd:w.number().int().min(0).optional(),speed:w.number().min(.25).max(4).optional()}),Sn=w.object({text:w.string().optional(),fontSize:w.number().optional(),fontFamily:w.string().optional(),fontStyle:w.string().optional(),fontWeight:w.union([w.number(),w.string()]).optional(),fill:w.string().optional(),align:w.string().optional(),direction:w.enum(["ltr","rtl","auto"]).optional(),verticalAlign:w.string().optional(),letterSpacing:w.number().optional(),lineHeight:w.number().optional(),padding:w.number().optional(),stroke:w.string().optional(),strokeWidth:w.number().optional(),strokeAlign:w.enum(["inside","center","outside"]).optional(),textShadow:w.string().optional(),textBackgroundColor:w.string().optional(),shadows:w.array(w.object({color:w.string(),offset:w.object({x:w.number(),y:w.number()}).optional(),blurRadius:w.number().optional()})).optional(),textAnimation:w.any().optional(),bottomPadding:w.number().optional(),maxWidth:w.number().optional()}),wn=w.object({backgroundColor:w.string().optional(),borderColor:w.string().optional(),borderWidth:w.number().optional(),strokeRadius:w.number().optional(),autoDimensions:w.boolean().optional()}),je=w.enum(["Video","Image","Audio","Text","Caption","SVG","GIF","Lottie"]),xt=Tn.merge(_n).merge(Sn).merge(wn).extend({type:je.optional(),animations:w.array(kn).optional()});y();var Mn=w.enum(["none","crossfade","wipe-left","wipe-right","slide-up","slide-down"]),Be=w.object({type:Mn,durationFrames:w.number().min(1)});y();var uo=xt.extend({id:w.string(),name:w.string().optional(),type:je,virtualMedia:tt.optional(),transitionIn:Be.optional(),transitionOut:Be.optional(),durationInMS:w.number(),maxDurationInMS:w.number().optional(),src:w.string().optional(),volume:w.number().default(1),inputHandleId:w.string().optional(),isPlaceholder:w.boolean().optional(),lockAspect:w.boolean().optional(),lockRatio:w.boolean().optional(),zIndex:w.number().optional()}).strict();y();function kt(n,e){if(n===e||typeof n=="number"&&typeof e=="number"&&Number.isNaN(n)&&Number.isNaN(e))return!0;if(n&&e&&typeof n=="object"&&typeof e=="object"){if(n.constructor!==e.constructor)return!1;if(Array.isArray(n)){if(n.length!==e.length)return!1;for(let r=0;r<n.length;r++)if(!kt(n[r],e[r]))return!1;return!0}if(n instanceof Date)return n.getTime()===e.getTime();if(n instanceof RegExp)return n.toString()===e.toString();let t=Object.keys(n);if(t.length!==Object.keys(e).length)return!1;for(let r of t)if(!Object.hasOwn(e,r)||!kt(n[r],e[r]))return!1;return!0}return!1}y();function bo(n,e){if(!n?.sourceFingerprint)return null;let t=Ee(e);return n.sourceFingerprint!==t?null:n}function yo(n,e){return{...n,sourceFingerprint:Ee(e)}}y();function To(n){try{let t=n.toString("utf-8").match(/<svg[^>]*>/i);if(!t)return null;let r=t[0],s=a=>{let l=r.match(new RegExp(`${a}=["']([^"']+)["']`,"i"));if(!l)return null;let c=parseFloat(l[1].replace(/[a-z%]/gi,""));return isNaN(c)?null:c},i=s("width"),o=s("height"),u=r.match(/viewBox=["']([^"']+)["']/i);if(u){let a=u[1].split(/[\s,]+/).map(parseFloat);if(a.length>=4&&!isNaN(a[2])&&!isNaN(a[3])){let l=a[2],c=a[3];i==null&&o==null?(i=l,o=c):i!=null&&o==null?o=i*(c/l):o!=null&&i==null&&(i=o*(l/c))}}return i!=null&&o!=null&&i>0&&o>0?{w:i,h:o}:null}catch(e){return console.error("Error parsing SVG dimensions",e),null}}y();var ee=(n,e,t)=>`https://huggingface.co/${n}/resolve/${e}/${t}`,Ne="tori29umai/rtmdet-ins-onnx-person-masks",He="e5218e8d47d7c50077f27f9893a28e0ef2ad5656",Ue="RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdeploy ONNX export",ze="RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export",Tt="MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export",vn="Depth Anything V2 Small (TikTok / HKU, Apache-2.0), ONNX export",Pn="ViTMatte Small, Distinctions-646 (HUST Vision Lab, code MIT, weights Apache-2.0), ONNX export",_t={"rtmdet-ins-t":{key:"rtmdet-ins-t",family:"rtmdet-ins",filename:"rtmdet-ins-t.onnx",url:ee(Ne,He,"models/tiny/rtmdet-ins_tiny_640x640.onnx"),bytes:24032356,sha256:"99ee670820c4493aa13e20578b6a8e39781c319846dc41796a77765734beac5c",input:[640,640],source:Ue},"rtmdet-ins-s":{key:"rtmdet-ins-s",family:"rtmdet-ins",filename:"rtmdet-ins-s.onnx",url:ee(Ne,He,"models/s/rtmdet-ins_s_640x640.onnx"),bytes:43236976,sha256:"9cd1787fbf3eb2bd64cc2d8154f41c036f5484b85599e1cbe0227a2dc5a4a08b",input:[640,640],source:Ue},"rtmdet-ins-m":{key:"rtmdet-ins-m",family:"rtmdet-ins",filename:"rtmdet-ins-m.onnx",url:ee(Ne,He,"models/m/rtmdet-ins_m_640x640.onnx"),bytes:115735979,sha256:"a003bce80316e03467c2c2b483df2d5c0398220c2357a44f9bf985929f7eb052",input:[640,640],source:Ue},"rtmo-t":{key:"rtmo-t",family:"rtmo",filename:"rtmo-t.onnx",url:ee("Xenova/RTMO-t","f29d13ce5ee291fbe505e9d06a049992f05699dc","onnx/model.onnx"),bytes:27360569,sha256:"cb54dd042bf997df86d938721c94238940f2bff98ba8d2ccc834430de5c65c13",input:[416,416],source:ze},"rtmo-s":{key:"rtmo-s",family:"rtmo",filename:"rtmo-s.onnx",url:ee("Xenova/RTMO-s","d8c526187f341d287753831c9c8b1ecc4855bba1","onnx/model.onnx"),bytes:39636400,sha256:"1cd6a3517658903233e9ccb78666554862f57f0944b6886e2048093594aef4e7",input:[640,640],source:ze},"rtmo-m":{key:"rtmo-m",family:"rtmo",filename:"rtmo-m.onnx",url:ee("Xenova/RTMO-m","3aba1280472b98ee2bf663482e27e243038d23fe","onnx/model.onnx"),bytes:89291929,sha256:"76d82c45e5c4810baf587ecf2638d15cbf7ed196afb2055e977382532021b59e",input:[640,640],source:ze},"selfie-square":{key:"selfie-square",family:"selfie",filename:"selfie-square.onnx",url:ee("onnx-community/mediapipe_selfie_segmentation","be49485c8e027524be38591817fc5cd31bd9d00e","onnx/model.onnx"),bytes:462352,sha256:"3241ac4ad8aa35bdaf33946776db29f7c283a413aa0b0dacb9483594b4531aad",input:[256,256],source:Tt},"selfie-landscape":{key:"selfie-landscape",family:"selfie",filename:"selfie-landscape.onnx",url:ee("onnx-community/mediapipe_selfie_segmentation_landscape","2497d5bec26c626c7b3c4edc6e1fefc21b64f6c3","onnx/model.onnx"),bytes:462338,sha256:"7a0adcfdb1715d3b0ff0f61486d8a181c33f4a208343a5abfccbc6540e872d24",input:[256,144],source:Tt},"depth-anything-v2-s":{key:"depth-anything-v2-s",family:"depth-anything",filename:"depth-anything-v2-s.onnx",url:ee("onnx-community/depth-anything-v2-small","4472b7362082ad9968fee890ca0f1e5aca36b93d","onnx/model.onnx"),bytes:99060839,sha256:"afb6a5c28f3b6bf1618c6e43f02073ef9dfdc70e937502d51603e57b0a1df10c",input:[518,518],source:vn},"vitmatte-s":{key:"vitmatte-s",family:"vitmatte",filename:"vitmatte-s.onnx",url:ee("Xenova/vitmatte-small-distinctions-646","358d428c452e5e0cd52955011a8b51944731d28e","onnx/model.onnx"),bytes:103885865,sha256:"a1cf48234c369faa3ea1711981d961fe1ec71f51e593f9d6553aa5a0e7d557e3",input:[1024,1024],source:Pn}},q=_t;function wo(n){_t[n.key]=n}function St(n,e="s",t=1){return n==="pose"?`rtmo-${e}`:n==="matte"?t>1.3?"selfie-landscape":"selfie-square":`rtmdet-ins-${e}`}var he=["person","bicycle","car","motorcycle","airplane","bus","train","truck","boat","traffic light","fire hydrant","stop sign","parking meter","bench","bird","cat","dog","horse","sheep","cow","elephant","bear","zebra","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sports ball","kite","baseball bat","baseball glove","skateboard","surfboard","tennis racket","bottle","wine glass","cup","fork","knife","spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hot dog","pizza","donut","cake","chair","couch","potted plant","bed","dining table","toilet","tv","laptop","mouse","remote","keyboard","cell phone","microwave","oven","toaster","sink","refrigerator","book","clock","vase","scissors","teddy bear","hair drier","toothbrush"];y();function re(n,e){let t=Math.max(n.originX,e.originX),r=Math.max(n.originY,e.originY),s=Math.min(n.originX+n.width,e.originX+e.width),i=Math.min(n.originY+n.height,e.originY+e.height),o=Math.max(0,s-t),u=Math.max(0,i-r),a=o*u;if(a<=0)return 0;let l=n.width*n.height,c=e.width*e.height,d=l+c-a;return d>0?a/d:0}var ge=class{_nextTrackId=1;_tracks=[];_iouThreshold;_maxMissedFrames;_minHits;_positionSmoothing;_activeDuringCoast;constructor(e={}){this._iouThreshold=e.iouThreshold??.25,this._maxMissedFrames=e.maxMissedFrames??15,this._minHits=e.minHits??1,this._positionSmoothing=Math.max(.1,Math.min(1,e.positionSmoothing??.75)),this._activeDuringCoast=e.activeDuringCoast!==!1}update(e,t,r=24){let s=r>0?1/r:.0416;for(let a of this._tracks)if(a.age++,a.timeSinceUpdate++,a.timeSinceUpdate>0){let l=a.centerX+a.vx*s,c=a.centerY+a.vy*s;a.centerX=l,a.centerY=c;let d=a.box.width,p=a.box.height,g=a.box.normalizedWidth,b=a.box.normalizedHeight,M=a.box.normalizedX+g/2+a.vx*s/Math.max(1,a.box.width/g),C=a.box.normalizedY+b/2+a.vy*s/Math.max(1,a.box.height/b);a.box={originX:l-d/2,originY:c-p/2,width:d,height:p,normalizedX:M-g/2,normalizedY:C-b/2,normalizedWidth:g,normalizedHeight:b},a.vx*=.92,a.vy*=.92,a.isCoasting=!0}let i=new Set,o=new Set,u=[];for(let a=0;a<this._tracks.length;a++){let l=this._tracks[a];for(let c=0;c<e.length;c++){let d=e[c];if(l.category!==d.category)continue;let p=re(l.box,d.boundingBox);p>=this._iouThreshold&&u.push({trackIdx:a,detIdx:c,iou:p})}}u.sort((a,l)=>l.iou-a.iou);for(let a of u){if(o.has(a.trackIdx)||i.has(a.detIdx))continue;o.add(a.trackIdx),i.add(a.detIdx);let l=this._tracks[a.trackIdx],c=e[a.detIdx],d=c.boundingBox,p=d.originX+d.width/2,g=d.originY+d.height/2,b=(p-l.centerX)/s,M=(g-l.centerY)/s;l.vx=l.vx*.4+b*.6,l.vy=l.vy*.4+M*.6;let C=this._positionSmoothing,x=l.box.width*(1-C)+d.width*C,T=l.box.height*(1-C)+d.height*C,E=l.centerX*(1-C)+p*C,A=l.centerY*(1-C)+g*C;l.centerX=E,l.centerY=A,l.score=c.score,l.timeSinceUpdate=0,l.hits++,l.isCoasting=!1,l.hits>=this._minHits&&(l.active=!0),l.box={originX:E-x/2,originY:A-T/2,width:x,height:T,normalizedX:d.normalizedX,normalizedY:d.normalizedY,normalizedWidth:d.normalizedWidth,normalizedHeight:d.normalizedHeight}}for(let a=0;a<e.length;a++){if(i.has(a))continue;let l=e[a],c=l.boundingBox,d=c.originX+c.width/2,p=c.originY+c.height/2;this._tracks.push({trackId:this._nextTrackId++,category:l.category,score:l.score,box:c,centerX:d,centerY:p,vx:0,vy:0,age:1,hits:1,timeSinceUpdate:0,active:this._minHits<=1,isCoasting:!1})}return this._tracks=this._tracks.filter(a=>a.timeSinceUpdate<=this._maxMissedFrames),this._tracks.filter(a=>a.active).map(a=>{let l=a.box.normalizedWidth,c=a.box.normalizedHeight,d=a.box.normalizedX+l/2,p=a.box.normalizedY+c/2,g=Math.sqrt(a.vx*a.vx+a.vy*a.vy);return{trackId:a.trackId,category:a.category,score:a.score,boundingBox:a.box,centerX:a.centerX,centerY:a.centerY,normalizedCenterX:d,normalizedCenterY:p,velocity:{vx:a.vx,vy:a.vy},speed:g,age:a.age,hits:a.hits,active:this._activeDuringCoast?!0:a.timeSinceUpdate===0,isCoasting:a.isCoasting}})}trackSequence(e,t,r=24){this.reset();let s=r>0?1/r:.0416,i=new Map;for(let a=0;a<t;a++){let l=e[a]??[],c=this.update(l,a,r);for(let d of c)i.has(d.trackId)||i.set(d.trackId,{category:d.category,observations:[]}),d.isCoasting||i.get(d.trackId).observations.push({frame:a,box:d.boundingBox,score:d.score})}let o=new Map;for(let[a,l]of i.entries()){let c=l.observations;if(c.length===0)continue;c.sort((x,T)=>x.frame-T.frame);let d=new Array(t).fill(null);for(let x of c)d[x.frame]={box:x.box,score:x.score};let p=c[0];for(let x=0;x<p.frame;x++)d[x]={box:{...p.box},score:p.score*.9};for(let x=0;x<c.length-1;x++){let T=c[x],E=c[x+1],A=E.frame-T.frame;if(!(A<=1))for(let m=T.frame+1;m<E.frame;m++){let f=(m-T.frame)/A,v=T.box.originX+(E.box.originX-T.box.originX)*f,P=T.box.originY+(E.box.originY-T.box.originY)*f,_=T.box.width+(E.box.width-T.box.width)*f,I=T.box.height+(E.box.height-T.box.height)*f,V=T.box.normalizedX+(E.box.normalizedX-T.box.normalizedX)*f,R=T.box.normalizedY+(E.box.normalizedY-T.box.normalizedY)*f,k=T.box.normalizedWidth+(E.box.normalizedWidth-T.box.normalizedWidth)*f,h=T.box.normalizedHeight+(E.box.normalizedHeight-T.box.normalizedHeight)*f;d[m]={box:{originX:v,originY:P,width:_,height:I,normalizedX:V,normalizedY:R,normalizedWidth:k,normalizedHeight:h},score:T.score*(1-f)+E.score*f}}}let g=c[c.length-1];for(let x=g.frame+1;x<t;x++)d[x]={box:{...g.box},score:g.score*.9};let b=[],M=2,C=[.06136,.24477,.38774,.24477,.06136];for(let x=0;x<t;x++){let T=0,E=0,A=0,m=0,f=0,v=0,P=0,_=0,I=0,V=0;for(let k=-M;k<=M;k++){let h=Math.max(0,Math.min(t-1,x+k)),O=d[h];if(O){let H=C[k+M];T+=H,E+=O.box.originX*H,A+=O.box.originY*H,m+=O.box.width*H,f+=O.box.height*H,v+=O.box.normalizedX*H,P+=O.box.normalizedY*H,_+=O.box.normalizedWidth*H,I+=O.box.normalizedHeight*H,V+=O.score*H}}let R=T>0?1/T:1;b.push({box:{originX:E*R,originY:A*R,width:m*R,height:f*R,normalizedX:v*R,normalizedY:P*R,normalizedWidth:_*R,normalizedHeight:I*R},score:V*R})}o.set(a,{category:l.category,frames:b})}let u=[];for(let a=0;a<t;a++){let l=[];for(let[c,d]of o.entries()){let p=d.frames[a];if(!p)continue;let g=d.frames[Math.max(0,a-1)]??p,b=d.frames[Math.min(t-1,a+1)]??p,M=p.box.originX+p.box.width/2,C=p.box.originY+p.box.height/2,x=g.box.originX+g.box.width/2,T=g.box.originY+g.box.height/2,E=b.box.originX+b.box.width/2,A=b.box.originY+b.box.height/2,m=a===0||a===t-1?s:2*s,f=(E-x)/m,v=(A-T)/m,P=Math.sqrt(f*f+v*v),_=p.box.normalizedWidth,I=p.box.normalizedHeight;l.push({trackId:c,category:d.category,score:p.score,boundingBox:p.box,centerX:M,centerY:C,normalizedCenterX:p.box.normalizedX+_/2,normalizedCenterY:p.box.normalizedY+I/2,velocity:{vx:f,vy:v},speed:P,age:a+1,hits:10,active:!0,isCoasting:!1})}u.push(l)}return u}reset(){this._tracks=[],this._nextTrackId=1}};y();var wt=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();async function Co(n,e){let{runner:t}=e,r=e.fps??24,s=e.tasks&&e.tasks.length>0?e.tasks:["detect"],i=new Set(s),o=e.categories?new Set(e.categories.map(k=>k.toLowerCase())):null,u=e.includeMasks===!0&&i.has("segment"),a=i.has("detect")||i.has("segment"),l=[],c={},d=new Map,p=0,g=0,b=k=>!o||o.has(k.toLowerCase()),M=async(k,h,O)=>{let H=t.modelKeyFor(k,h.width/h.height),B=t.downloadStatus.get(H)==="ready",j=wt(),D=await O(),X=wt()-j;return p+=X,!B&&!c[H]&&(c[H]={bytes:q[H].bytes,ms:X}),D},C=k=>{for(let h of k){if(!b(h.category))continue;let O=d.get(h.category)??{sum:0,count:0};O.sum+=h.coverage,O.count++,d.set(h.category,O)}};for await(let k of n){let h=[];if(u){let O=await M("segment",k,()=>t.segment(k));C(O.masks),h=O.detections}else a&&(h=await M("detect",k,()=>t.detect(k)));i.has("pose")&&await M("pose",k,()=>t.pose(k)),i.has("matte")&&await M("matte",k,()=>t.matte(k)),l.push(o?h.filter(O=>b(O.category)):h),g++}let x=g,E=new ge({iouThreshold:e.iouThreshold??.25,maxMissedFrames:e.maxMissedFrames??15}).trackSequence(l,x,r),A=e.pathStride??Math.max(1,Math.ceil(x/50)),m=new Map,f=new Map,v=new Map,P=new Map,_=(k,h,O)=>{let H=k.get(h);return H===void 0&&(H=O(),k.set(h,H)),H};for(let k=0;k<x;k++)for(let h of E[k]??[]){if(!b(h.category))continue;let O=m.get(h.trackId);O||(O={category:h.category,firstFrame:k,lastFrame:k,speedSum:0,speedCount:0,centers:[]},m.set(h.trackId,O)),O.lastFrame=k,Number.isFinite(h.speed)&&(O.speedSum+=h.speed,O.speedCount++),(k-O.firstFrame)%A===0&&O.centers.push({frame:k,x:h.centerX,y:h.centerY}),_(f,h.category,()=>new Set).add(k),v.set(h.category,Math.max(v.get(h.category)??0,h.score)),_(P,h.category,()=>new Set).add(h.trackId)}let I=Array.from(m.entries()).map(([k,h])=>({trackId:k,category:h.category,frames:[h.firstFrame,h.lastFrame],speedMeanPxS:h.speedCount>0?h.speedSum/h.speedCount:0,centerPath:h.centers.map(O=>[O.x,O.y])})).sort((k,h)=>k.trackId-h.trackId),V={};for(let[k,h]of f)V[k]={framesPresent:h.size,totalFrames:x,maxConfidence:v.get(k)??0,tracks:P.get(k)?.size??0};let R={};for(let[k,h]of d)R[k]={meanCoverage:h.count>0?h.sum/h.count:0};return{source:e.source??"frames",totalFrames:x,fps:r,durationSec:r>0?x/r:0,tasks:Array.from(i),modelDownloads:c,inferenceMs:p,trackCount:I.length,classes:V,tracks:I,masks:R}}y();var S={NOSE:0,LEFT_EYE:1,RIGHT_EYE:2,LEFT_EAR:3,RIGHT_EAR:4,LEFT_SHOULDER:5,RIGHT_SHOULDER:6,LEFT_ELBOW:7,RIGHT_ELBOW:8,LEFT_WRIST:9,RIGHT_WRIST:10,LEFT_HIP:11,RIGHT_HIP:12,LEFT_KNEE:13,RIGHT_KNEE:14,LEFT_ANKLE:15,RIGHT_ANKLE:16},Ye=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],Mt=[{from:S.NOSE,to:S.LEFT_SHOULDER,color:[0,1,1,1]},{from:S.NOSE,to:S.RIGHT_SHOULDER,color:[0,1,1,1]},{from:S.LEFT_SHOULDER,to:S.RIGHT_SHOULDER,color:[1,0,0,1]},{from:S.LEFT_SHOULDER,to:S.LEFT_ELBOW,color:[1,.333,0,1]},{from:S.LEFT_ELBOW,to:S.LEFT_WRIST,color:[1,.667,0,1]},{from:S.RIGHT_SHOULDER,to:S.RIGHT_ELBOW,color:[1,1,0,1]},{from:S.RIGHT_ELBOW,to:S.RIGHT_WRIST,color:[.667,1,0,1]},{from:S.LEFT_SHOULDER,to:S.LEFT_HIP,color:[.333,1,0,1]},{from:S.RIGHT_SHOULDER,to:S.RIGHT_HIP,color:[0,1,0,1]},{from:S.LEFT_HIP,to:S.RIGHT_HIP,color:[0,1,.333,1]},{from:S.LEFT_HIP,to:S.LEFT_KNEE,color:[0,1,.667,1]},{from:S.LEFT_KNEE,to:S.LEFT_ANKLE,color:[0,1,1,1]},{from:S.RIGHT_HIP,to:S.RIGHT_KNEE,color:[0,.667,1,1]},{from:S.RIGHT_KNEE,to:S.RIGHT_ANKLE,color:[0,.333,1,1]}];y();y();y();var vt=`
2
+ struct Bone {
3
+ start: vec2<f32>,
4
+ end: vec2<f32>,
5
+ color: vec4<f32>,
6
+ radius: f32,
7
+ enabled: f32,
8
+ pad: vec2<f32>,
9
+ };
10
+
11
+ struct SkeletonParams {
12
+ width: u32,
13
+ height: u32,
14
+ numBones: u32,
15
+ pad: u32,
16
+ bones: array<Bone, 24>,
17
+ };
18
+
19
+ @group(0) @binding(0) var outputTex: texture_storage_2d<rgba8unorm, write>;
20
+ @group(0) @binding(1) var<uniform> params: SkeletonParams;
21
+
22
+ @compute @workgroup_size(16, 16)
23
+ fn computePoseSkeleton(@builtin(global_invocation_id) id: vec3<u32>) {
24
+ if (id.x >= params.width || id.y >= params.height) {
25
+ return;
26
+ }
27
+
28
+ let p = vec2<f32>(f32(id.x) + 0.5, f32(id.y) + 0.5);
29
+ var outColor = vec4<f32>(0.0, 0.0, 0.0, 0.0);
30
+
31
+ let count = min(params.numBones, 24u);
32
+ for (var i = 0u; i < count; i = i + 1u) {
33
+ let bone = params.bones[i];
34
+ if (bone.enabled < 0.5) {
35
+ continue;
36
+ }
37
+
38
+ let ab = bone.end - bone.start;
39
+ let ap = p - bone.start;
40
+ let l2 = dot(ab, ab);
41
+
42
+ var t: f32 = 0.0;
43
+ if (l2 > 0.0001) {
44
+ t = clamp(dot(ap, ab) / l2, 0.0, 1.0);
45
+ }
46
+
47
+ let closest = bone.start + t * ab;
48
+ let dist = length(p - closest);
49
+
50
+ if (dist <= bone.radius) {
51
+ // Sub-pixel edge antialiasing
52
+ let edgeAlpha = clamp(bone.radius - dist + 0.5, 0.0, 1.0);
53
+ let a = edgeAlpha * bone.color.a;
54
+ outColor = vec4<f32>(mix(outColor.rgb, bone.color.rgb, a), max(outColor.a, a));
55
+ }
56
+ }
57
+
58
+ textureStore(outputTex, id.xy, outColor);
59
+ }
60
+ `;var In=[{from:0,to:11,color:[0,1,1,1]},{from:0,to:12,color:[0,1,1,1]},{from:11,to:12,color:[1,0,0,1]},{from:11,to:13,color:[1,.333,0,1]},{from:13,to:15,color:[1,.667,0,1]},{from:12,to:14,color:[1,1,0,1]},{from:14,to:16,color:[.667,1,0,1]},{from:11,to:23,color:[.333,1,0,1]},{from:12,to:24,color:[0,1,0,1]},{from:23,to:24,color:[0,1,.333,1]},{from:23,to:25,color:[0,1,.667,1]},{from:25,to:27,color:[0,1,1,1]},{from:24,to:26,color:[0,.667,1,1]},{from:26,to:28,color:[0,.333,1,1]}],be=class{constructor(e){this.device=e;let t=e.createShaderModule({label:"pose_skeleton.wgsl",code:vt});this.computePipeline=e.createComputePipeline({label:"PoseSkeletonComputePipeline",layout:"auto",compute:{module:t,entryPoint:"computePoseSkeleton"}}),this.uniformBuffer=e.createBuffer({size:1280,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,label:"pose_skeleton_uniform_buffer"})}device;computePipeline;uniformBuffer;cachedOutputTexture;execute(e,t={},r){let s=r??In,i=t.width??1024,o=t.height??1024,u=t.lineWidth??6,a=Math.max(1,u/2),l=1280,c=new ArrayBuffer(l),d=new Uint32Array(c),p=new Float32Array(c);d[0]=i,d[1]=o,d[2]=s.length,d[3]=0;let g=4;for(let x=0;x<s.length;x++){let T=s[x],E=e[T.from],A=e[T.to],m=g+x*12;if(!E||!A||(E.visibility??1)<.2||(A.visibility??1)<.2){p[m+9]=0;continue}p[m+0]=E.x*i,p[m+1]=E.y*o,p[m+2]=A.x*i,p[m+3]=A.y*o,p[m+4]=T.color[0],p[m+5]=T.color[1],p[m+6]=T.color[2],p[m+7]=T.color[3],p[m+8]=a,p[m+9]=1}this.device.queue.writeBuffer(this.uniformBuffer,0,c),(!this.cachedOutputTexture||this.cachedOutputTexture.width!==i||this.cachedOutputTexture.height!==o)&&(this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=this.device.createTexture({label:"openpose_skeleton_texture",size:[i,o],format:"rgba8unorm",usage:GPUTextureUsage.STORAGE_BINDING|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}));let b=this.device.createCommandEncoder({label:"pose_skeleton_command_encoder"}),M=this.device.createBindGroup({label:"pose_skeleton_bind_group",layout:this.computePipeline.getBindGroupLayout(0),entries:[{binding:0,resource:this.cachedOutputTexture.createView({label:"pose_skeleton_output_view"})},{binding:1,resource:{buffer:this.uniformBuffer}}]}),C=b.beginComputePass({label:"pose_skeleton_compute_pass"});return C.setPipeline(this.computePipeline),C.setBindGroup(0,M),C.dispatchWorkgroups(Math.ceil(i/16),Math.ceil(o/16),1),C.end(),this.device.queue.submit([b.finish()]),this.cachedOutputTexture}destroy(){this.cachedOutputTexture?.destroy(),this.cachedOutputTexture=void 0,this.uniformBuffer.destroy()}};var Pt=class{pipeline;constructor(e){this.pipeline=new be(e)}renderToTexture(e,t,r=Mt){return this.pipeline.execute(e,t,r)}destroy(){this.pipeline.destroy()}};y();var It=class{device;pool=new Map;constructor(e){this.device=e}getOrCreateTexture(e,t){let r=this.pool.get(e);if(r&&r.width===t.width&&r.height===t.height)return r;r&&r.destroy();let s=t.format??"rgba8unorm",i=this.device.createTexture({label:t.label??`vision_segmentation_${e}`,size:[t.width,t.height,1],format:s,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return this.pool.set(e,i),i}uploadMask(e,t,r,s){let i=t.length>=r*s*4,o=i?"rgba8unorm":"r8unorm",u=this.getOrCreateTexture(e,{width:r,height:s,format:o}),a;if(t instanceof Float32Array){a=new Uint8Array(t.length);for(let g=0;g<t.length;g++)a[g]=Math.round(Math.max(0,Math.min(1,t[g]))*255)}else a=t;let c=r*(i?4:1),d=Math.ceil(c/256)*256,p;if(d===c)p=a;else{p=new Uint8Array(d*s);for(let g=0;g<s;g++)p.set(a.subarray(g*c,(g+1)*c),g*d)}return this.device.queue.writeTexture({texture:u},p.buffer,{offset:p.byteOffset,bytesPerRow:d,rowsPerImage:s},{width:r,height:s}),u}destroy(){for(let e of this.pool.values())e.destroy();this.pool.clear()}};y();y();function Ot(n,e,t){let r=s=>Math.max(14,Math.round(s/14)*14);return n>=e?[r(t*n/e),r(t)]:[r(t),r(t*e/n)]}var Rt=.01;function Ct(n,e,t){let r=e*t,s=Math.max(1,Math.floor(r/4096)),i=[];for(let c=0;c<r;c+=s)i.push(n[c]);i.sort((c,d)=>c-d);let o=i[Math.floor((i.length-1)*Rt)],u=i[Math.ceil((i.length-1)*(1-Rt))],a=u>o?1/(u-o):0,l=new Float32Array(r);for(let c=0;c<r;c++)l[c]=Math.min(1,Math.max(0,(n[c]-o)*a));return{data:l,width:e,height:t}}y();var Rn=[103.53,116.28,123.675],On=[57.375,57.12,58.395],Et={"rtmdet-ins":{fit:"topLeft",channels:"bgr",mean:Rn,std:On,padValue:114},rtmo:{fit:"center",channels:"bgr",mean:[0,0,0],std:[1,1,1],padValue:114},selfie:{fit:"stretch",channels:"rgb",mean:[0,0,0],std:[255,255,255],padValue:0},"depth-anything":{fit:"stretch",channels:"rgb",mean:[123.675,116.28,103.53],std:[58.395,57.12,57.375],padValue:0}};function At(n){return Object.hasOwn(Et,n)}function Lt(n,e){return{...Et[n],width:e[0],height:e[1]}}function Xe(n,e,t){if(t.fit==="stretch")return{scaleX:t.width/n,scaleY:t.height/e,offsetX:0,offsetY:0,inputWidth:t.width,inputHeight:t.height};let r=Math.min(t.width/n,t.height/e),s=Math.round(n*r),i=Math.round(e*r),o=t.fit==="center";return{scaleX:r,scaleY:r,offsetX:o?(t.width-s)/2:0,offsetY:o?(t.height-i)/2:0,inputWidth:t.width,inputHeight:t.height}}function oe(n,e,t){return{x:(n-t.offsetX)/t.scaleX,y:(e-t.offsetY)/t.scaleY}}function Ft(n,e,t){let{width:r,height:s,data:i}=n,{width:o,height:u}=e,a=Xe(r,s,e),{scaleX:l,scaleY:c,offsetX:d,offsetY:p}=a,g=o*u;(!t||t.length<3*g)&&(t=new Float32Array(3*g));let b=e.channels==="bgr"?[2,1,0]:[0,1,2],[M,C,x]=e.mean,T=1/e.std[0],E=1/e.std[1],A=1/e.std[2],m=(e.padValue-M)*T,f=(e.padValue-C)*E,v=(e.padValue-x)*A,[P,_,I]=b,V=Math.ceil(d),R=Math.ceil(p),k=Math.min(o,Math.floor(d+r*l))-1,h=Math.min(u,Math.floor(p+s*c))-1;for(let O=0;O<u;O++){let H=O*o,B=O<R||O>h,j=Math.max(0,(O+.5-p)/c-.5),D=Math.min(s-1,Math.floor(j)),X=Math.min(s-1,D+1),z=j-D;for(let Y=0;Y<o;Y++){let U=H+Y;if(B||Y<V||Y>k){t[U]=m,t[g+U]=f,t[2*g+U]=v;continue}let G=Math.max(0,(Y+.5-d)/l-.5),N=Math.min(r-1,Math.floor(G)),J=Math.min(r-1,N+1),W=G-N,K=(D*r+N)*4,Z=(D*r+J)*4,te=(X*r+N)*4,ve=(X*r+J)*4,Pe=(1-W)*(1-z),Ie=W*(1-z),Re=(1-W)*z,Oe=W*z;t[U]=(i[K+P]*Pe+i[Z+P]*Ie+i[te+P]*Re+i[ve+P]*Oe-M)*T,t[g+U]=(i[K+_]*Pe+i[Z+_]*Ie+i[te+_]*Re+i[ve+_]*Oe-C)*E,t[2*g+U]=(i[K+I]*Pe+i[Z+I]*Ie+i[te+I]*Re+i[ve+I]*Oe-x)*A}}return{tensor:t,transform:a}}y();var ye=8;function Ge(n,e){let{sourceWidth:t,sourceHeight:r,transform:s}=e,i=e.classes?new Set(e.classes.map(x=>x.toLowerCase())):null,o=[];for(let x=0;x<n.count;x++){let T=n.dets[x*5+4];if(!(T>=e.confidence))continue;let E=Number(n.labels[x]),A=e.classNames[E]??`class_${E}`;if(i&&!i.has(A.toLowerCase()))continue;let m=oe(n.dets[x*5],n.dets[x*5+1],s),f=oe(n.dets[x*5+2],n.dets[x*5+3],s),v=ne(m.x,0,t),P=ne(m.y,0,r),_=ne(f.x,0,t)-v,I=ne(f.y,0,r)-P;_<=0||I<=0||o.push({index:x,detection:{category:A,score:T,boundingBox:{originX:v,originY:P,width:_,height:I,normalizedX:v/t,normalizedY:P/r,normalizedWidth:_/t,normalizedHeight:I/r}}})}o.sort((x,T)=>T.detection.score-x.detection.score);let u=o.map(x=>x.detection),a=[];if(!n.masks&&!n.maskPlane)return{detections:u,masks:a};let l=e.maskThreshold??.5,c=e.featherRadius??.05,d=n.maskLogits?Cn(l,c):xe(l,c),{maskWidth:p,maskHeight:g}=n,b=p*g,M=p/s.inputWidth,C=g/s.inputHeight;for(let x=0;x<o.length;x++){let{index:T,detection:E}=o[x],A=E.boundingBox,m=n.maskPlane?n.maskPlane(T):n.masks,f=n.maskPlane?0:T*b,v=Math.max(0,Math.floor(A.originX)-ye),P=Math.max(0,Math.floor(A.originY)-ye),_=Math.min(t-1,Math.ceil(A.originX+A.width)+ye),I=Math.min(r-1,Math.ceil(A.originY+A.height)+ye),V=new Uint8Array(t*r),R=0;for(let k=P;k<=I;k++){let h=((k+.5)*s.scaleY+s.offsetY)*C-.5,O=ne(Math.floor(h),0,g-1),H=Math.min(g-1,O+1),B=ne(h-O,0,1),j=k*t;for(let D=v;D<=_;D++){let X=((D+.5)*s.scaleX+s.offsetX)*M-.5,z=ne(Math.floor(X),0,p-1),Y=Math.min(p-1,z+1),U=ne(X-z,0,1),G=m[f+O*p+z]*(1-U)*(1-B)+m[f+O*p+Y]*U*(1-B)+m[f+H*p+z]*(1-U)*B+m[f+H*p+Y]*U*B,N=d(G);N>0&&(V[j+D]=N,R+=N/255)}}R=Math.round(R),R!==0&&a.push({category:E.category,mask:V,width:t,height:r,area:R,coverage:R/(t*r),detectionIndex:x})}return{detections:u,masks:a}}function xe(n,e){if(e<=0)return s=>s>n?255:0;let t=n-e,r=255/(2*e);return s=>s<=t?0:s>=n+e?255:(s-t)*r}function Cn(n,e){let t=xe(n,e),r=o=>o<=0?-1/0:o>=1?1/0:Math.log(o/(1-o));if(e<=0){let o=r(n);return u=>u>o?255:0}let s=r(n-e),i=r(n+e);return o=>o<=s?0:o>=i?255:t(1/(1+Math.exp(-o)))}function ne(n,e,t){return n<e?e:n>t?t:n}y();var se={scores:"/Sigmoid_output_0",boxes:"/Concat_7_output_0",kernels:"/Concat_5_output_0",maskFeatures:"/bbox_head/mask_head/projection/Conv_output_0"},Vt=5e3,En=Math.fround(.6),Dt=Math.fround(.05),An=200,jt=100,Ln=[8,16,32],We=8,Bt=8,Nt=169;function Ht(n){let{scores:e,boxes:t,anchors:r,classes:s}=n,i=new Float32Array(r);for(let c=0;c<r;c++){let d=0,p=c*s;for(let g=0;g<s;g++){let b=e[p+g];b>d&&(d=b)}i[c]=d}let o=[];for(let c=0;c<r;c++)i[c]>Dt&&o.push(c);o.sort((c,d)=>i[d]-i[c]||c-d),o.length>Vt&&(o.length=Vt);let u=[],a=[],l=[];for(let c=0;c<s;c++){a.length=0;for(let d of o)e[d*s+c]>Dt&&a.push(d);if(a.length!==0){a.sort((d,p)=>e[p*s+c]-e[d*s+c]||d-p),l.length=0;for(let d of a){if(l.length>=An)break;let p=!1;for(let g of l)if(Fn(t,d,g)>En){p=!0;break}p||(l.push(d),u.push({anchor:d,classIndex:c,score:e[d*s+c]}))}}}return u.sort((c,d)=>d.score-c.score),u.length>jt&&(u.length=jt),u}function Fn(n,e,t){let r=n[e*4],s=n[e*4+1],i=n[e*4+2],o=n[e*4+3],u=n[t*4],a=n[t*4+1],l=n[t*4+2],c=n[t*4+3],d=Math.min(i,l)-Math.max(r,u),p=Math.min(o,c)-Math.max(s,a);if(d<=0||p<=0)return 0;let g=d*p,b=(i-r)*(o-s)+(l-u)*(c-a)-g;return b>0?g/b:0}function Vn(n,e,t){let r=0;for(let s of Ln){let i=Math.ceil(e/s),o=i*Math.ceil(t/s);if(n<r+o){let u=n-r;return{x:u%i*s,y:Math.floor(u/i)*s,stride:s}}r+=o}throw new RangeError(`anchor ${n} is out of range`)}function Ut(n,e,t){let{kernels:r,maskFeatures:s,maskWidth:i,maskHeight:o}=n,u=i*o,a=t&&t.length>=u?t:new Float32Array(u),l=Vn(e,n.inputWidth,n.inputHeight),c=r.subarray(e*Nt,(e+1)*Nt),d=0,p=80,g=144,b=152,M=160,C=168,x=1/(l.stride*We),T=new Float32Array(2+Bt),E=new Float32Array(8),A=new Float32Array(8);for(let m=0;m<o;m++){let f=(l.y-m*We)*x;for(let v=0;v<i;v++){let P=m*i+v;T[0]=(l.x-v*We)*x,T[1]=f;for(let I=0;I<Bt;I++)T[2+I]=s[I*u+P];for(let I=0;I<8;I++){let V=c[b+I],R=d+I*10;for(let k=0;k<10;k++)V+=c[R+k]*T[k];E[I]=V>0?V:0}for(let I=0;I<8;I++){let V=c[M+I],R=p+I*8;for(let k=0;k<8;k++)V+=c[R+k]*E[k];A[I]=V>0?V:0}let _=c[C];for(let I=0;I<8;I++)_+=c[g+I]*A[I];a[P]=_}}return a}y();var zt=17,$e=.3;function Yt(n,e){let{sourceWidth:t,sourceHeight:r,transform:s}=e,i=n.keypointStride,o=[];for(let l=0;l<n.count;l++){let c=n.dets[l*5+4];if(!(c>=e.confidence))continue;let d=oe(n.dets[l*5],n.dets[l*5+1],s),p=oe(n.dets[l*5+2],n.dets[l*5+3],s),g=ie(d.x,0,t),b=ie(d.y,0,r),M=ie(p.x,0,t)-g,C=ie(p.y,0,r)-b;if(M<=0||C<=0)continue;let x=[],T=l*zt*i;for(let A=0;A<zt;A++){let m=T+A*i,f=oe(n.keypoints[m],n.keypoints[m+1],s);x.push({x:ie(f.x,0,t),y:ie(f.y,0,r),visibility:ie(n.keypoints[m+2],0,1)})}let E=0;for(let A of x)A.visibility>=$e&&E++;E<(e.minVisibleKeypoints??3)||o.push({score:c,boundingBox:{originX:g,originY:b,width:M,height:C,normalizedX:g/t,normalizedY:b/r,normalizedWidth:M/t,normalizedHeight:C/r},keypoints:x})}o.sort((l,c)=>c.score-l.score);let u=e.iouThreshold??.6,a=[];for(let l of o)a.some(c=>Dn(c,l,u))||a.push(l);return{people:a}}function ie(n,e,t){return n<e?e:n>t?t:n}function Dn(n,e,t){if(re(n.boundingBox,e.boundingBox)>t)return!0;let r=Math.sqrt(n.boundingBox.width*n.boundingBox.height),s=0,i=0;for(let o=0;o<n.keypoints.length;o++){let u=n.keypoints[o],a=e.keypoints[o];u.visibility<$e||a.visibility<$e||(s+=Math.hypot(u.x-a.x,u.y-a.y),i++)}return i>=3&&s/i<.1*r}y();function Xt(n,e,t,r){let{sourceWidth:s,sourceHeight:i}=r,o=xe(r.maskThreshold??.5,r.featherRadius??.2),u=new Uint8Array(s*i),a=e/s,l=t/i,c=0;for(let d=0;d<i;d++){let p=Math.max(0,(d+.5)*l-.5),g=Math.min(t-1,Math.floor(p)),b=Math.min(t-1,g+1),M=p-g;for(let C=0;C<s;C++){let x=Math.max(0,(C+.5)*a-.5),T=Math.min(e-1,Math.floor(x)),E=Math.min(e-1,T+1),A=x-T,m=n[g*e+T]*(1-A)*(1-M)+n[g*e+E]*A*(1-M)+n[b*e+T]*(1-A)*M+n[b*e+E]*A*M,f=o(m);u[d*s+C]=f,c+=f}}return{mask:u,width:s,height:i,coverage:s*i>0?c/(255*s*i):0}}y();var jn=`
61
+ struct Params {
62
+ src: vec2u,
63
+ dst: vec2u,
64
+ scale: vec2f,
65
+ offset: vec2f,
66
+ lo: vec2i,
67
+ hi: vec2i,
68
+ mean: vec4f,
69
+ invStd: vec4f,
70
+ pad: vec4f,
71
+ order: vec4u,
72
+ };
73
+
74
+ @group(0) @binding(0) var<uniform> p: Params;
75
+ @group(0) @binding(1) var src: texture_2d<f32>;
76
+ @group(0) @binding(2) var<storage, read_write> dst: array<f32>;
77
+
78
+ @compute @workgroup_size(16, 16)
79
+ fn main(@builtin(global_invocation_id) id: vec3u) {
80
+ if (id.x >= p.dst.x || id.y >= p.dst.y) { return; }
81
+ let x = i32(id.x);
82
+ let y = i32(id.y);
83
+ let plane = p.dst.x * p.dst.y;
84
+ let o = id.y * p.dst.x + id.x;
85
+ var v = p.pad.xyz;
86
+ if (x >= p.lo.x && x <= p.hi.x && y >= p.lo.y && y <= p.hi.y) {
87
+ let maxX = i32(p.src.x) - 1;
88
+ let maxY = i32(p.src.y) - 1;
89
+ let sy = max(0.0, (f32(y) + 0.5 - p.offset.y) / p.scale.y - 0.5);
90
+ let iy0 = min(maxY, i32(floor(sy)));
91
+ let iy1 = min(maxY, iy0 + 1);
92
+ let fy = sy - f32(iy0);
93
+ let sx = max(0.0, (f32(x) + 0.5 - p.offset.x) / p.scale.x - 0.5);
94
+ let ix0 = min(maxX, i32(floor(sx)));
95
+ let ix1 = min(maxX, ix0 + 1);
96
+ let fx = sx - f32(ix0);
97
+ var rgba =
98
+ textureLoad(src, vec2i(ix0, iy0), 0) * ((1.0 - fx) * (1.0 - fy)) +
99
+ textureLoad(src, vec2i(ix1, iy0), 0) * (fx * (1.0 - fy)) +
100
+ textureLoad(src, vec2i(ix0, iy1), 0) * ((1.0 - fx) * fy) +
101
+ textureLoad(src, vec2i(ix1, iy1), 0) * (fx * fy);
102
+ rgba = rgba * 255.0;
103
+ let s = vec3f(rgba[p.order.x], rgba[p.order.y], rgba[p.order.z]);
104
+ v = (s - p.mean.xyz) * p.invStd.xyz;
105
+ }
106
+ dst[o] = v.x;
107
+ dst[plane + o] = v.y;
108
+ dst[2u * plane + o] = v.z;
109
+ }
110
+ `,Bn=`
111
+ @group(0) @binding(0) var src: texture_2d<f32>;
112
+ @group(0) @binding(1) var<storage, read_write> acc: array<atomic<u32>, 2>;
113
+
114
+ var<workgroup> local: array<atomic<u32>, 2>;
115
+
116
+ @compute @workgroup_size(16, 16)
117
+ fn main(
118
+ @builtin(global_invocation_id) id: vec3u,
119
+ @builtin(local_invocation_index) li: u32,
120
+ ) {
121
+ let dim = textureDimensions(src);
122
+ if (id.x < dim.x && id.y < dim.y) {
123
+ let c = pack4x8unorm(textureLoad(src, vec2i(id.xy), 0));
124
+ let i = id.y * dim.x + id.x;
125
+ let a = (c ^ (i * 0x9e3779b9u)) * 0x85ebca6bu;
126
+ let b = (c + i * 0xc2b2ae35u) * 0x27d4eb2fu;
127
+ atomicAdd(&local[0], a ^ (a >> 15u));
128
+ atomicAdd(&local[1], b ^ (b >> 13u));
129
+ }
130
+ workgroupBarrier();
131
+ if (li == 0u) {
132
+ atomicAdd(&acc[0], atomicLoad(&local[0]));
133
+ atomicAdd(&acc[1], atomicLoad(&local[1]));
134
+ }
135
+ }
136
+ `,Gt=112,Wt=new WeakMap,ce=class n{constructor(e){this.device=e;this.tensorPipeline=e.createComputePipeline({label:"vision_frame_tensor",layout:"auto",compute:{module:e.createShaderModule({code:jn}),entryPoint:"main"}}),this.hashPipeline=e.createComputePipeline({label:"vision_frame_hash",layout:"auto",compute:{module:e.createShaderModule({code:Bn}),entryPoint:"main"}}),this.params=e.createBuffer({label:"vision_frame_tensor_params",size:Gt,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST})}device;tensorPipeline;hashPipeline;params;static for(e){let t=Wt.get(e);return t||(t=new n(e),Wt.set(e,t)),t}static tensorBytes(e){return 3*e.width*e.height*4}toTensor(e,t,r){let s=Xe(e.width,e.height,t),{scaleX:i,scaleY:o,offsetX:u,offsetY:a}=s,l=new ArrayBuffer(Gt),c=new Uint32Array(l),d=new Float32Array(l),p=new Int32Array(l);c.set([e.width,e.height,t.width,t.height],0),d.set([i,o,u,a],4),p.set([Math.ceil(u),Math.ceil(a),Math.min(t.width,Math.floor(u+e.width*i))-1,Math.min(t.height,Math.floor(a+e.height*o))-1],8);let g=t.std.map(C=>1/C);d.set([...t.mean,0],12),d.set([...g,0],16),d.set([0,1,2].map(C=>(t.padValue-t.mean[C])*g[C]),20),c.set(t.channels==="bgr"?[2,1,0,3]:[0,1,2,3],24),this.device.queue.writeBuffer(this.params,0,l);let b=this.device.createCommandEncoder({label:"vision_frame_tensor"}),M=b.beginComputePass();return M.setPipeline(this.tensorPipeline),M.setBindGroup(0,this.device.createBindGroup({layout:this.tensorPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:this.params}},{binding:1,resource:e.texture.createView()},{binding:2,resource:{buffer:r}}]})),M.dispatchWorkgroups(Math.ceil(t.width/16),Math.ceil(t.height/16)),M.end(),this.device.queue.submit([b.finish()]),s}async contentKey(e){let t=this.device.createBuffer({size:8,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC}),r=this.device.createBuffer({size:8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),s=this.device.createCommandEncoder({label:"vision_frame_hash"}),i=s.beginComputePass();i.setPipeline(this.hashPipeline),i.setBindGroup(0,this.device.createBindGroup({layout:this.hashPipeline.getBindGroupLayout(0),entries:[{binding:0,resource:e.texture.createView()},{binding:1,resource:{buffer:t}}]})),i.dispatchWorkgroups(Math.ceil(e.width/16),Math.ceil(e.height/16)),i.end(),s.copyBufferToBuffer(t,0,r,0,8),this.device.queue.submit([s.finish()]),await r.mapAsync(GPUMapMode.READ);let[o,u]=new Uint32Array(r.getMappedRange().slice(0));return r.unmap(),r.destroy(),t.destroy(),`${e.width}x${e.height}:gpu:${o.toString(36)}:${u.toString(36)}`}};async function Ke(n){let{device:e,texture:t,width:r,height:s}=n,i=r*4,o=Math.ceil(i/256)*256,u=e.createBuffer({size:o*s,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:"vision_frame_readback"}),a=e.createCommandEncoder({label:"vision_frame_readback"});a.copyTextureToBuffer({texture:t},{buffer:u,bytesPerRow:o,rowsPerImage:s},[r,s,1]),e.queue.submit([a.finish()]),await u.mapAsync(GPUMapMode.READ);let l=new Uint8Array(u.getMappedRange()),c=new Uint8ClampedArray(r*s*4);for(let d=0;d<s;d++)c.set(l.subarray(d*o,d*o+i),d*i);if(u.unmap(),u.destroy(),t.format.startsWith("bgra"))for(let d=0;d<c.length;d+=4){let p=c[d];c[d]=c[d+2],c[d+2]=p}return{data:c,width:r,height:s}}y();function $t(n,e,t){let r=n*e,s=new Float32Array(r),i=new Int32Array(r),o=Nn(Math.max(n,e));for(let l=0;l<n;l++){for(let c=0;c<e;c++)o.f[c]=t(c*n+l)?0:1e20;Kt(o,e);for(let c=0;c<e;c++)s[c*n+l]=o.d[c],i[c*n+l]=o.from[c]}let u=new Float32Array(r),a=new Int32Array(r);for(let l=0;l<e;l++){let c=l*n;for(let d=0;d<n;d++)o.f[d]=s[c+d];Kt(o,n);for(let d=0;d<n;d++){let p=o.d[d],g=o.from[d];u[c+d]=p,a[c+d]=p>=1e20?-1:i[c+g]*n+g}}return{distance:u,nearest:a}}function Nn(n){return{f:new Float64Array(n),d:new Float64Array(n),from:new Int32Array(n),v:new Int32Array(n),z:new Float64Array(n+1)}}function Kt(n,e){let{f:t,d:r,from:s,v:i,z:o}=n,u=-1;for(let l=0;l<e;l++){let c=t[l];if(c>=1e20)continue;let d=Number.NEGATIVE_INFINITY;for(;u>=0;){let p=i[u];if(d=(c+l*l-(t[p]+p*p))/(2*(l-p)),d>o[u])break;u--}u++,i[u]=l,o[u]=u===0?Number.NEGATIVE_INFINITY:d,o[u+1]=Number.POSITIVE_INFINITY}if(u<0){r.fill(1e20,0,e),s.fill(0,0,e);return}let a=0;for(let l=0;l<e;l++){for(;o[a+1]<l;)a++;let c=i[a];r[l]=(l-c)*(l-c)+t[c],s[l]=c}}function qt(n,e,t,r){let s=$t(e,t,p=>n[p]>=128),i=$t(e,t,p=>n[p]<128),o=r*r,u=new Uint8Array(e*t),a=e,l=t,c=0,d=0;for(let p=0;p<t;p++)for(let g=0;g<e;g++){let b=p*e+g,M=n[b]>=128;if((M?i.distance[b]:s.distance[b])>o){u[b]=M?255:0;continue}u[b]=128,g<a&&(a=g),p<l&&(l=p),g>=c&&(c=g+1),p>=d&&(d=p+1)}return{data:u,width:e,height:t,unknown:c>a?[a,l,c,d]:null,nearest:s.nearest}}function Zt(n,e){return Math.min(40,Math.max(3,Math.round(Math.min(n,e)*.012)))}y();var ke=32;function Qt(n,e,t){if(!n.unknown)return null;let[r,s,i,o]=n.unknown,u=Math.max(0,r-e),a=Math.max(0,s-e),l=Math.min(n.width,i+e),c=Math.min(n.height,o+e),d=Math.min(1,t/Math.max(l-u,c-a)),p=Math.max(1,Math.round((l-u)*d)),g=Math.max(1,Math.round((c-a)*d));return{x0:u,y0:a,x1:l,y1:c,scale:d,contentWidth:p,contentHeight:g,inputWidth:Math.ceil(p/ke)*ke,inputHeight:Math.ceil(g/ke)*ke}}function Jt(n,e,t,r){let{inputWidth:s,inputHeight:i}=t,o=s*i,u=r&&r.length>=4*o?r.subarray(0,4*o):new Float32Array(4*o);u.fill(0);let{data:a,width:l,height:c}=n,d=1/t.scale;for(let p=0;p<t.contentHeight;p++){let g=Math.min(c-1,Math.max(0,t.y0+(p+.5)*d-.5)),b=Math.floor(g),M=Math.min(c-1,b+1),C=g-b,x=Math.min(t.y1-1,Math.floor(t.y0+(p+.5)*d));for(let T=0;T<t.contentWidth;T++){let E=Math.min(l-1,Math.max(0,t.x0+(T+.5)*d-.5)),A=Math.floor(E),m=Math.min(l-1,A+1),f=E-A,v=p*s+T;for(let _=0;_<3;_++){let I=a[(b*l+A)*4+_],V=a[(b*l+m)*4+_],R=a[(M*l+A)*4+_],k=a[(M*l+m)*4+_],h=I+(V-I)*f,O=h+(R+(k-R)*f-h)*C;u[_*o+v]=O/127.5-1}let P=Math.min(t.x1-1,Math.floor(t.x0+(T+.5)*d));u[3*o+v]=e.data[x*e.width+P]/255}}return u}function en(n,e,t){let{width:r}=n,s=Uint8Array.from(n.data,a=>a===128?0:a);if(!e)return s;let i=e.inputWidth,o=e.contentWidth-1,u=e.contentHeight-1;for(let a=e.y0;a<e.y1;a++){let l=Math.min(u,Math.max(0,(a-e.y0+.5)*e.scale-.5)),c=Math.floor(l),d=Math.min(u,c+1),p=l-c;for(let g=e.x0;g<e.x1;g++){let b=a*r+g;if(n.data[b]!==128)continue;let M=Math.min(o,Math.max(0,(g-e.x0+.5)*e.scale-.5)),C=Math.floor(M),x=Math.min(o,C+1),T=M-C,E=t[c*i+C],A=t[c*i+x],m=t[d*i+C],f=t[d*i+x],v=E+(A-E)*T,P=v+(m+(f-m)*T-v)*p;s[b]=Math.round(Math.min(1,Math.max(0,P))*255)}}return s}y();var tn=pn(gn(),1);hn();function Un(){return L.env.FRAMEFIELDS_MODELS_DIR?me(L.env.FRAMEFIELDS_MODELS_DIR):me(at(),".cache/framefields/models")}var Te=class{_modelsDir;_baseUrl;_timeoutMs;_retries;_retryDelayMs;_verify;_fetch;_onProgress;_acceptLicense;_inflight=new Map;_buffers=new Map;_status=new Map;constructor(e={}){this._modelsDir=e.modelsDir?me(e.modelsDir):Un(),this._baseUrl=e.baseUrl??L.env.FRAMEFIELDS_MODELS_BASE_URL??void 0,this._timeoutMs=e.timeoutMs,this._retries=Math.max(0,e.retries??2),this._retryDelayMs=e.retryDelayMs??1e3,this._verify=e.verify!==!1,this._fetch=e.fetchImpl??globalThis.fetch,this._onProgress=e.onProgress,this._acceptLicense=e.acceptLicense===!0}get modelsDir(){return this._modelsDir}pathFor(e){return Le(this._modelsDir,this.descriptor(e).filename)}descriptor(e){let t=q[e];if(!t)throw new Error(`Vision model '${e}' is not registered in the model store.`);return t}urlFor(e){let t=this.descriptor(e);return this._baseUrl?`${this._baseUrl.replace(/\/+$/,"")}/${t.filename}`:t.url}has(e){let t=q[e];if(!t)return!1;let r=Le(this._modelsDir,t.filename);if(!ue(r))return!1;try{let s=nt(r).size;return this._verify?s===t.bytes:s>0}catch{return!1}}async evict(e){this._buffers.delete(e),this._status.set(e,"pending"),await Ae(this.pathFor(e)).catch(()=>{})}status(e){return this._status.get(e)??"pending"}statuses(){return new Map(this._status)}isLoaded(e){return this._buffers.has(e)}async ensure(e){let t=this._buffers.get(e);if(t)return t;let r=this._inflight.get(e);if(r)return r;let s=this.load(e).finally(()=>this._inflight.delete(e));return this._inflight.set(e,s),s}async preload(e){await Promise.all([...new Set(e)].map(t=>this.ensure(t)))}async load(e){let t=this.descriptor(e),r=this.pathFor(e);if(this.has(e))return this._status.set(e,"ready"),this.readBuffer(e,r);if(t.license&&t.license!=="Apache-2.0"&&!this._acceptLicense&&L.env.FRAMEFIELDS_ACCEPT_SAM_LICENSE!=="1")throw new Error(`License agreement required for model "${e}":
137
+ This model is licensed under "${t.license}".
138
+ To download and use this model, you must accept its license terms by passing 'acceptLicense: true' or setting FRAMEFIELDS_ACCEPT_SAM_LICENSE=1.`);let s=this.urlFor(e);this._status.set(e,"downloading"),ue(Fe(r))||rt(Fe(r),{recursive:!0});let i=`${r}.tmp.${Date.now()}`;try{let{buffer:o,totalBytes:u}=await this.download(e,s);if(o.byteLength===0)throw new Error(`Downloaded vision model '${e}' is empty (0 bytes).`);return this._verify&&this.verifyBytes(e,o,s),this._onProgress?.(e,o.byteLength,u||o.byteLength),await st(i,o),await it(i,r),this._buffers.set(e,o),this._status.set(e,"ready"),o}catch(o){throw this._status.set(e,"error"),ue(i)&&await Ae(i).catch(()=>{}),o}}async download(e,t){for(let r=0;;r++){let s;try{let i=await this._fetch(t,{signal:this._timeoutMs?AbortSignal.timeout(this._timeoutMs):void 0});if(i.ok){let u=Number(i.headers.get("content-length")??0);return{buffer:new Uint8Array(await i.arrayBuffer()),totalBytes:u}}let o=new Error(`Failed to download vision model '${e}' from ${t}: HTTP ${i.status} ${i.statusText}`);if(i.status!==429&&i.status<500)throw o;s=o}catch(i){if(!(i instanceof TypeError))throw i;s=i}if(r>=this._retries)throw new Error(`Failed to download vision model '${e}' from ${t} after ${r+1} attempts: ${String(s)}`,{cause:s});await new Promise(i=>setTimeout(i,this._retryDelayMs*2**r))}}verifyBytes(e,t,r){let s=q[e];if(t.byteLength!==s.bytes)throw new Error(`Vision model '${e}' from ${r} is ${t.byteLength} bytes, expected ${s.bytes}.`);let i=(0,tn.createHash)("sha256").update(t).digest("hex");if(i!==s.sha256)throw new Error(`Vision model '${e}' from ${r} failed its SHA-256 check (got ${i}, expected ${s.sha256}).`)}async readBuffer(e,t){let r=await ot(t),s=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);return this._buffers.set(e,s),s}clearMemoryCache(){this._buffers.clear()}};y();function Kn(n){let e=new Uint8Array([8,1]),t=ae(1,e);return pe([ae(1,ct.encode(n)),ae(2,t)])}function an(n,e){let t=Ve(n),r=t.find(b=>b.number===7&&b.wire===2);if(!r)throw new Error("ONNX model has no graph");let s=Ve(r.body),i=s.filter(b=>b.number===1).map(b=>({field:b,inputs:De(b.body,1),outputs:De(b.body,2)})),o=new Map;i.forEach((b,M)=>{for(let C of b.outputs)o.set(C,M)});let u=new Set,a=new Set,l=[...e];for(let b of e)if(!o.has(b))throw new Error(`ONNX model has no tensor '${b}'`);for(;l.length>0;){let b=l.pop();if(a.has(b))continue;a.add(b);let M=o.get(b);if(!(M===void 0||u.has(M))){u.add(M);for(let C of i[M].inputs)C&&l.push(C)}}let c=new Map;for(let b of s){if(b.number!==13)continue;let M=fe(b.body,1);M!==void 0&&c.set(M,b.body)}let d=[],p=0;for(let b of s)switch(b.number){case 1:u.has(p)&&d.push(b.raw),p++;break;case 5:{let M=fe(b.body,8);M!==void 0&&a.has(M)&&d.push(b.raw);break}case 11:case 13:{let M=fe(b.body,1);M!==void 0&&a.has(M)&&d.push(b.raw);break}case 12:break;default:d.push(b.raw)}for(let b of e)d.push(ae(12,c.get(b)??Kn(b)));let g=pe(d);return pe(t.map(b=>b===r?ae(7,g):b.raw))}y();function _e(n){return n.texture!==void 0}var qn=4,Se=class n{variant;confidence;classes;maskThreshold;featherRadius;_core;_ownsCore;constructor(e,t){this.variant=e.variant??"s",this.confidence=e.confidence??.3,this.classes=e.classes,this.maskThreshold=e.maskThreshold??.5,this.featherRadius=e.featherRadius,this._ownsCore=t===void 0,this._core=t??{store:e.store??new Te({modelsDir:e.modelsDir,baseUrl:e.baseUrl,timeoutMs:e.timeoutMs,onProgress:e.onProgress}),provider:e.provider??lt(),sessions:new Map,tensorScratch:new Map,runQueue:new Map,gpuInputs:new Map,instancePasses:[]}}static create(e={}){return new n(e)}derive(e){return new n({variant:this.variant,confidence:e.confidence??this.confidence,classes:"classes"in e?e.classes:this.classes,maskThreshold:e.maskThreshold??this.maskThreshold,featherRadius:"featherRadius"in e?e.featherRadius:this.featherRadius},this._core)}get modelsDir(){return this._core.store.modelsDir}get downloadStatus(){let e=new Map;for(let t of Object.keys(q))e.set(t,"pending");for(let[t,r]of this._core.store.statuses())e.set(t,r);return e}modelKeyFor(e,t=1){return St(e,this.variant,t)}async preload(e=["detect"]){let t=new Set;for(let r of e)r==="matte"?(t.add("selfie-square"),t.add("selfie-landscape")):t.add(this.modelKeyFor(r));await this._core.store.preload([...t]),await Promise.all([...t].map(r=>this.session(r)))}async detect(e){let t=await this.instancePass(e);return Ge({...t.outputs,masks:void 0,maskPlane:void 0},this.instanceDecodeOptions(e,t.transform)).detections}async segment(e){let t=await this.instancePass(e);return Ge(t.outputs,this.instanceDecodeOptions(e,t.transform))}async pose(e){let t=this.modelKeyFor("pose"),{outputs:r,transform:s}=await this.infer(t,e),i=Q(r,"dets",t),o=Q(r,"keypoints",t);return Yt({dets:i.data,keypoints:o.data,count:i.dims[1]??0,keypointStride:o.dims[3]??3},{confidence:this.confidence,transform:s,sourceWidth:e.width,sourceHeight:e.height})}async matte(e){let t=this.modelKeyFor("matte",e.width/e.height),[r,s]=q[t].input,{outputs:i}=await this.infer(t,e),o=Q(i,"alphas",t);return Xt(o.data,r,s,{sourceWidth:e.width,sourceHeight:e.height,maskThreshold:this.maskThreshold,...this.featherRadius!==void 0?{featherRadius:this.featherRadius}:{}})}async depth(e){let t="depth-anything-v2-s",r=Ot(e.width,e.height,q[t].input[1]),{outputs:s}=await this.infer(t,e,r),i=Q(s,"predicted_depth",t),o=i.dims;return Ct(i.data,o[o.length-1]??r[0],o[o.length-2]??r[1])}async refineMatte(e,t,r={}){let{width:s,height:i}=e;if(t.length!==s*i)throw new Error(`refineMatte: the mask has ${t.length} pixels; the frame has ${s}\xD7${i}.`);let o=Math.max(1,Math.round(r.band??Zt(s,i))),u="vitmatte-s",a=qt(t,s,i,o),l=Qt(a,Math.max(32,o*2),r.resolution??q[u].input[0]),c=[];if(l){let d=_e(e)?await Ke(e):e,p=await this.queued(u,async()=>{let g=await this.session(u),b=this._core.tensorScratch,M=Jt(d,a,l,b.get(u));return M.buffer!==b.get(u)?.buffer&&b.set(u,M),g.run({name:"pixel_values",data:M,dims:[1,4,l.inputHeight,l.inputWidth]})});c=Q(p,"alphas",u).data}return{mask:en(a,l,c),width:s,height:i,nearest:a.nearest}}close(){if(!this._ownsCore)return;let e=this._core;for(let t of e.sessions.values())t.then(r=>r.release()).catch(()=>{});e.sessions.clear(),e.runQueue.clear();for(let{buffer:t}of e.gpuInputs.values())t.destroy();e.gpuInputs.clear(),e.instancePasses.length=0,e.store.clearMemoryCache()}async instancePass(e){let t=this._core.instancePasses,r=_e(e)?await ce.for(e.device).contentKey(e):tr(e),s=t.find(a=>a.content===r);if(s)return s.result;let i=this.modelKeyFor("segment"),o=this.infer(i,e).then(({outputs:a,transform:l})=>({transform:l,outputs:se.scores in a?er(a,i,l):Jn(a,i)})),u={content:r,result:o};return t.push(u),t.length>qn&&t.shift(),o.catch(()=>{let a=t.indexOf(u);a>=0&&t.splice(a,1)}),o}instanceDecodeOptions(e,t){return{confidence:this.confidence,classes:this.classes,classNames:he,transform:t,sourceWidth:e.width,sourceHeight:e.height,maskThreshold:this.maskThreshold,...this.featherRadius!==void 0?{featherRadius:this.featherRadius}:{}}}infer(e,t,r){return this.queued(e,()=>this.inferNow(e,t,r))}queued(e,t){let r=this._core.runQueue,i=(r.get(e)??Promise.resolve()).then(t,t),o=i.catch(()=>{});return r.set(e,o),o.then(()=>{r.get(e)===o&&r.delete(e)}),i}async inferNow(e,t,r){let s=await this.session(e),i=q[e];if(!At(i.family))throw new Error(`VisionRunner cannot run '${i.family}' models; use the family's own tracker (e.g. Sam2Tracker or Sam3Tracker from @framefields/vision-sam).`);let o=Lt(i.family,r??i.input),u=[1,3,o.height,o.width],a;if(_e(t)){if(this._core.provider.device===t.device){let M=this.gpuInput(e,t.device,o),C=ce.for(t.device).toTensor(t,o,M);return{outputs:await s.run({name:"input",data:Zn,gpuBuffer:M,dims:u}),transform:C}}a=await Ke(t)}else a=t;let l=3*o.width*o.height,c=this._core.tensorScratch,d=c.get(e);(!d||d.length<l)&&(d=new Float32Array(l),c.set(e,d));let{tensor:p,transform:g}=Ft(a,o,d);return{outputs:await s.run({name:"input",data:p,dims:u}),transform:g}}gpuInput(e,t,r){let s=this._core.gpuInputs,i=ce.tensorBytes(r),o=s.get(e);if(o?.device===t&&o.buffer.size>=i)return o.buffer;o?.buffer.destroy();let u=t.createBuffer({label:`vision_input_${e}`,size:i,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC});return s.set(e,{device:t,buffer:u}),u}session(e){let{sessions:t,store:r,provider:s}=this._core,i=t.get(e);return i||(i=r.ensure(e).then(o=>s.createSession(q[e].family==="rtmdet-ins"?Qn(o):o)).catch(o=>{throw t.delete(e),r.evict(e),o}),t.set(e,i)),i}},Zn=new Float32Array(0);function Qn(n){try{return an(n,Object.values(se))}catch{return n}}function Jn(n,e){let t=Q(n,"dets",e),r=Q(n,"masks",e);return{dets:t.data,labels:Q(n,"labels",e).data,masks:r.data,count:t.dims[1]??0,maskHeight:r.dims[r.dims.length-2]??0,maskWidth:r.dims[r.dims.length-1]??0}}function er(n,e,t){let r=Q(n,se.scores,e),s=Q(n,se.maskFeatures,e),i={scores:r.data,boxes:Q(n,se.boxes,e).data,kernels:Q(n,se.kernels,e).data,maskFeatures:s.data,anchors:r.dims[1]??0,classes:r.dims[2]??0,maskHeight:s.dims[2]??0,maskWidth:s.dims[3]??0,inputWidth:t.inputWidth,inputHeight:t.inputHeight},o=Ht(i),u=new Float32Array(o.length*5),a=new Int32Array(o.length);o.forEach(({anchor:c,classIndex:d,score:p},g)=>{u.set(i.boxes.subarray(c*4,c*4+4),g*5),u[g*5+4]=p,a[g]=d});let l=new Map;return{dets:u,labels:a,count:o.length,maskWidth:i.maskWidth,maskHeight:i.maskHeight,maskLogits:!0,maskPlane:c=>{let d=l.get(c);return d||(d=Ut(i,o[c].anchor),l.set(c,d)),d}}}function tr(n){let{data:e}=n,t=e.byteOffset%4===0?e.byteLength>>>2:0,r=new Uint32Array(e.buffer,e.byteOffset,t),s=2166136261,i=16777619^e.byteLength;for(let o=0;o<t;o++){let u=r[o];s=Math.imul(s^u,2654435761),i=Math.imul(i^u,2246822519)^s>>>15}for(let o=t*4;o<e.length;o++)s=Math.imul(s^e[o],2654435761);return`${n.width}x${n.height}:${(s>>>0).toString(36)}:${(i>>>0).toString(36)}`}function Q(n,e,t){let r=n[e];if(!r)throw new Error(`Vision model '${t}' returned no '${e}' output (got: ${Object.keys(n).join(", ")||"none"}). Expected the ${q[t].source}.`);return r}y();var Xs=Symbol.for("framefields.vision.clipSubject");y();var le=class{width;height;fovRad;focalDistance;constructor(e){this.width=e.width,this.height=e.height;let t=e.fov??60;this.fovRad=t*Math.PI/180,this.focalDistance=e.cameraDistance??this.height/2/Math.tan(this.fovRad/2)}projectNormalizedLandmark(e,t=0){let r=e.x*this.width,s=e.y*this.height,i=e.z*this.width+t,o=Math.min(i,this.focalDistance-10),u=this.focalDistance/(this.focalDistance-o);return{x:r,y:s,z:i,scale:Math.max(.1,u)}}projectWorldLandmark(e,t=2,r=800){let s=this.width/2,i=this.height/2,o=e.x*r,u=e.y*r,a=(e.z+t)*r,l=Math.min(a,this.focalDistance-10),c=this.focalDistance/(this.focalDistance-l);return{x:s+o*c,y:i+u*c,z:a,scale:Math.max(.1,c)}}};y();y();function cn(){return{objects:[],rawDetections:[]}}function ln(){return{people:[]}}function dn(){let n=[];for(let e=0;e<17;e++)n.push({x:.5,y:.5,z:0,visibility:0});return n}y();function Ze(n,e){let t=e&&new Set(e.map(s=>s.toLowerCase())),r;for(let s of n){if(t&&!t.has(s.category.toLowerCase()))continue;if(!r){r=s;continue}let i=un(s),o=un(r);i!==o?i&&(r=s):(i?s.area>r.area:s.detectionIndex<r.detectionIndex)&&(r=s)}return r}function un(n){return n.category.toLowerCase()==="person"}function mn(n){let{mask:e,width:t,height:r}=n,s=t,i=r,o=-1,u=-1;for(let a=0;a<r;a++){let l=a*t;for(let c=0;c<t;c++)e[l+c]!==0&&(c<s&&(s=c),c>o&&(o=c),a<i&&(i=a),a>u&&(u=a))}return o<0?null:{x0:s,y0:i,x1:o,y1:u}}function Qs(n,e={}){let{classes:t,overlap:r=.5,maxGrowth:s=2}=e,i=Ze(n,t);if(!i)return;let o=mn(i);if(!o)return i;let u=we(o),a=n.filter(d=>{if(d===i)return!1;let p=mn(d);return p!==null&&we(p)<=u*s&&nr(o,p)>=r});if(a.length===0)return i;let l=i.mask.slice();for(let d of a){let p=d.mask;for(let g=0;g<l.length;g++)p[g]>l[g]&&(l[g]=p[g])}let c=0;for(let d=0;d<l.length;d++)c+=l[d];return c=Math.round(c/255),{...i,mask:l,area:c,coverage:c/(i.width*i.height)}}function we(n){return(n.x1-n.x0+1)*(n.y1-n.y0+1)}function nr(n,e){let t=Math.min(n.x1,e.x1)-Math.max(n.x0,e.x0)+1,r=Math.min(n.y1,e.y1)-Math.max(n.y0,e.y0)+1;return t<=0||r<=0?0:t*r/Math.min(we(n),we(e))}y();function Qe(n){if(n.boundingBox&&n.boundingBox.width>0&&n.boundingBox.height>0)return{originX:n.boundingBox.originX,originY:n.boundingBox.originY,width:n.boundingBox.width,height:n.boundingBox.height};let e=1/0,t=1/0,r=-1/0,s=-1/0,i=0;for(let o of n.keypoints)o.visibility>.1&&(i++,o.x<e&&(e=o.x),o.y<t&&(t=o.y),o.x>r&&(r=o.x),o.y>s&&(s=o.y));return i===0||e>=r||t>=s?{originX:n.boundingBox?.originX??0,originY:n.boundingBox?.originY??0,width:n.boundingBox?.width??0,height:n.boundingBox?.height??0}:{originX:e,originY:t,width:r-e,height:s-t}}function ni(n,e,t=.15){if(n.length===0)return[];let r=e.filter(a=>a.category.toLowerCase()==="person"&&a.active);if(r.length===0)return[...n];let s=[];for(let a=0;a<n.length;a++){let l=n[a];if(l.trackId!==void 0)continue;let c=Qe(l),d=c.width<=1.05&&c.height<=1.05;for(let p of r){let g=d&&p.boundingBox.normalizedWidth>0?{originX:p.boundingBox.normalizedX,originY:p.boundingBox.normalizedY,width:p.boundingBox.normalizedWidth,height:p.boundingBox.normalizedHeight}:p.boundingBox,b=re(c,g);b>=t&&s.push({personIdx:a,trackId:p.trackId,iou:b})}}s.sort((a,l)=>l.iou-a.iou);let i=new Set,o=new Set,u=new Map;for(let a of s)i.has(a.personIdx)||o.has(a.trackId)||(i.add(a.personIdx),o.add(a.trackId),u.set(a.personIdx,a.trackId));return n.length===1&&r.length===1&&!u.has(0)&&n[0].trackId===void 0&&u.set(0,r[0].trackId),n.map((a,l)=>{if(a.trackId!==void 0)return a;let c=u.get(l);return c!==void 0?{...a,trackId:c}:a})}var Me=class{objects;poseLandmarks;masks;segmentation;classes;poseLandmarksTensor;objectsTensor;masksTensor;histogramTensor;_totalFrames;_fps;_width;_height;_transformer;_stencilTexture;_maskSource;_matteSource;_cameraFov;_poseCache=new Map;_objectCache=new Map;_maskCache=new Map;_matteCache=new Map;_poseLmCache=new Map;_trackCache=new Map;_categoryCache=new Map;_classCache=new Map;_maskTrackCache=new Map;_registeredSignals=new Set;constructor(e={}){this._maskSource=e.maskSource,this._matteSource=e.matteSource,this._cameraFov=e.cameraFov??60,this._totalFrames=e.totalFrames??120,this._fps=e.fps??24,this._width=e.width??1920,this._height=e.height??1080,this._transformer=new le({width:this._width,height:this._height,fov:e.cameraFov??60});let t=this,r=(m,f)=>{let v=et(m,f);return this._registeredSignals.add(v),v},s=m=>this.getPoseResult(m).people[0]?.keypoints??dn(),i=(m,f)=>{let v=k=>s(k)[m]??{x:.5,y:.5,z:0},P=r(k=>v(k.frame).x,{fps:this._fps,label:`${f}_x`}),_=r(k=>v(k.frame).y,{fps:this._fps,label:`${f}_y`}),I=r(k=>v(k.frame).z??0,{fps:this._fps,label:`${f}_z`}),V=r(k=>this._transformer.projectNormalizedLandmark(v(k.frame)).x,{fps:this._fps,label:`${f}_screenX`}),R=r(k=>this._transformer.projectNormalizedLandmark(v(k.frame)).y,{fps:this._fps,label:`${f}_screenY`});return{x:P,y:_,z:I,screenX:V,screenY:R}},o=m=>{let f=this._poseLmCache.get(m);return f||(f=i(m,Ye[m]??`kpt_${m}`),this._poseLmCache.set(m,f)),f},u={nose:o(S.NOSE),leftEye:o(S.LEFT_EYE),rightEye:o(S.RIGHT_EYE),leftEar:o(S.LEFT_EAR),rightEar:o(S.RIGHT_EAR),shoulder:o(S.LEFT_SHOULDER),leftShoulder:o(S.LEFT_SHOULDER),rightShoulder:o(S.RIGHT_SHOULDER),leftElbow:o(S.LEFT_ELBOW),rightElbow:o(S.RIGHT_ELBOW),leftWrist:o(S.LEFT_WRIST),rightWrist:o(S.RIGHT_WRIST),leftHip:o(S.LEFT_HIP),rightHip:o(S.RIGHT_HIP),leftKnee:o(S.LEFT_KNEE),rightKnee:o(S.RIGHT_KNEE),leftAnkle:o(S.LEFT_ANKLE),rightAnkle:o(S.RIGHT_ANKLE),get:o};this.poseLandmarks=new Proxy(u,{get(m,f,v){return typeof f=="string"&&/^\d+$/.test(f)?m.get(Number(f)):typeof f=="number"?m.get(f):Reflect.get(m,f,v)}});let a=(m,f="unknown")=>({trackId:m,category:f,score:0,boundingBox:{originX:this._width/2,originY:this._height/2,width:0,height:0,normalizedX:.5,normalizedY:.5,normalizedWidth:0,normalizedHeight:0},centerX:this._width/2,centerY:this._height/2,normalizedCenterX:.5,normalizedCenterY:.5,velocity:{vx:0,vy:0},speed:0,age:0,hits:0,active:!1,isCoasting:!1}),l=(m,f)=>{let v=r(R=>m(R.frame).sx,{fps:this._fps,label:`${f}_screenX`}),P=r(R=>m(R.frame).sy,{fps:this._fps,label:`${f}_screenY`}),_=r(R=>this._width>0?m(R.frame).sx/this._width:0,{fps:this._fps,label:`${f}_x`}),I=r(R=>this._height>0?m(R.frame).sy/this._height:0,{fps:this._fps,label:`${f}_y`}),V=r(()=>0,{fps:this._fps,label:`${f}_z`});return{x:_,y:I,z:V,screenX:v,screenY:P}},c=(m,f,v)=>{let P=B=>{let j=t.getPoseResult(B);if(j.people.length===0)return;let D=m(B),X=v??D.trackId,z=j.people.find(G=>G.trackId===X);if(z)return z;if(!D.active&&j.people.length>1)return;if(j.people.length===1)return j.people[0];let Y,U=.1;for(let G of j.people){let N=Qe(G),W=N.width<=1.05&&N.height<=1.05&&D.boundingBox.normalizedWidth>0?{originX:D.boundingBox.normalizedX,originY:D.boundingBox.normalizedY,width:D.boundingBox.normalizedWidth,height:D.boundingBox.normalizedHeight}:D.boundingBox,K=re(N,W);K>U&&(U=K,Y=G)}return Y},_=r(B=>P(B.frame)?1:0,{fps:this._fps,label:`${f}_hasPose`}),I=(B,j)=>{let D=N=>{let W=P(N)?.keypoints[B];if(W&&W.visibility>.05)return{x:W.x,y:W.y,z:0};let K=m(N);return{x:K.normalizedCenterX,y:K.normalizedCenterY,z:0}},X=r(N=>D(N.frame).x,{fps:this._fps,label:`${f}_${j}_x`}),z=r(N=>D(N.frame).y,{fps:this._fps,label:`${f}_${j}_y`}),Y=r(N=>D(N.frame).z??0,{fps:this._fps,label:`${f}_${j}_z`}),U=r(N=>t._transformer.projectNormalizedLandmark(D(N.frame)).x,{fps:this._fps,label:`${f}_${j}_screenX`}),G=r(N=>t._transformer.projectNormalizedLandmark(D(N.frame)).y,{fps:this._fps,label:`${f}_${j}_screenY`});return{x:X,y:z,z:Y,screenX:U,screenY:G}},V=new Map,R=B=>{let j=V.get(B);return j||(j=I(B,Ye[B]??`kpt_${B}`),V.set(B,j)),j},k=r(B=>{let j=B.frame,D=P(j);if(!D)return 0;let X=P(Math.max(0,j-1)),z=D.keypoints,Y=X?.keypoints,U=z[S.RIGHT_WRIST],G=Y?.[S.RIGHT_WRIST],N=0;if(U&&G&&U.visibility>.1&&G.visibility>.1){let Z=(U.x-G.x)*this._width,te=(U.y-G.y)*this._height;N=Math.sqrt(Z*Z+te*te)*this._fps}let J=z[S.LEFT_WRIST],W=Y?.[S.LEFT_WRIST],K=0;if(J&&W&&J.visibility>.1&&W.visibility>.1){let Z=(J.x-W.x)*this._width,te=(J.y-W.y)*this._height;K=Math.sqrt(Z*Z+te*te)*this._fps}return Math.max(N,K)},{fps:this._fps,label:`${f}_wristSpeed`}),h=r(B=>{let j=P(B.frame);if(!j)return 0;let D=j.keypoints,X=D[S.LEFT_WRIST],z=D[S.LEFT_SHOULDER],Y=D[S.RIGHT_WRIST],U=D[S.RIGHT_SHOULDER],G=X&&z&&X.visibility>.1&&z.visibility>.1&&X.y<z.y,N=Y&&U&&Y.visibility>.1&&U.visibility>.1&&Y.y<U.y;return G||N?1:0},{fps:this._fps,label:`${f}_handRaised`}),O=r(B=>{let j=P(B.frame);if(!j)return 0;let D=j.keypoints,X=D[S.LEFT_SHOULDER],z=D[S.RIGHT_SHOULDER],Y=D[S.LEFT_HIP],U=D[S.RIGHT_HIP];if(!X||!z||!Y||!U)return 0;let G=(X.x+z.x)/2*this._width,N=(X.y+z.y)/2*this._height,J=(Y.x+U.x)/2*this._width,W=(Y.y+U.y)/2*this._height,K=G-J,Z=N-W;return K===0&&Z===0?0:Math.atan2(K,-Z)},{fps:this._fps,label:`${f}_bodyTiltAngle`}),H={hasPose:_,wristSpeed:k,handRaised:h,bodyTiltAngle:O,nose:R(S.NOSE),leftEye:R(S.LEFT_EYE),rightEye:R(S.RIGHT_EYE),leftEar:R(S.LEFT_EAR),rightEar:R(S.RIGHT_EAR),shoulder:R(S.LEFT_SHOULDER),leftShoulder:R(S.LEFT_SHOULDER),rightShoulder:R(S.RIGHT_SHOULDER),leftElbow:R(S.LEFT_ELBOW),rightElbow:R(S.RIGHT_ELBOW),leftWrist:R(S.LEFT_WRIST),rightWrist:R(S.RIGHT_WRIST),leftHip:R(S.LEFT_HIP),rightHip:R(S.RIGHT_HIP),leftKnee:R(S.LEFT_KNEE),rightKnee:R(S.RIGHT_KNEE),leftAnkle:R(S.LEFT_ANKLE),rightAnkle:R(S.RIGHT_ANKLE),get:R};return new Proxy(H,{get(B,j,D){return typeof j=="string"&&/^\d+$/.test(j)?B.get(Number(j)):typeof j=="number"?B.get(j):Reflect.get(B,j,D)}})},d=(m,f,v,P)=>{let _=h=>m(h).boundingBox,I=c(m,`${f}_pose`,P),V=(h,O,H)=>l(B=>({sx:O(_(B)),sy:H(_(B))}),`${f}_${h}`),R=V("center",h=>h.originX+h.width/2,h=>h.originY+h.height/2),k=r(h=>m(h.frame).speed,{fps:this._fps,label:`${f}_speed`});return{get trackId(){return P??m(0).trackId},get category(){return v??m(0).category},bounds:{x:r(h=>_(h.frame).normalizedX,{fps:this._fps,label:`${f}_normX`}),y:r(h=>_(h.frame).normalizedY,{fps:this._fps,label:`${f}_normY`}),width:r(h=>_(h.frame).normalizedWidth,{fps:this._fps,label:`${f}_normWidth`}),height:r(h=>_(h.frame).normalizedHeight,{fps:this._fps,label:`${f}_normHeight`}),screenX:r(h=>_(h.frame).originX,{fps:this._fps,label:`${f}_screenX`}),screenY:r(h=>_(h.frame).originY,{fps:this._fps,label:`${f}_screenY`}),screenWidth:r(h=>_(h.frame).width,{fps:this._fps,label:`${f}_screenWidth`}),screenHeight:r(h=>_(h.frame).height,{fps:this._fps,label:`${f}_screenHeight`}),aspectRatio:r(h=>{let O=_(h.frame);return O.height>0?O.width/O.height:1},{fps:this._fps,label:`${f}_aspectRatio`}),area:r(h=>{let O=_(h.frame);return O.width*O.height},{fps:this._fps,label:`${f}_area`})},anchors:{topLeft:V("topLeft",h=>h.originX,h=>h.originY),topCenter:V("topCenter",h=>h.originX+h.width/2,h=>h.originY),topRight:V("topRight",h=>h.originX+h.width,h=>h.originY),centerLeft:V("centerLeft",h=>h.originX,h=>h.originY+h.height/2),center:R,centerRight:V("centerRight",h=>h.originX+h.width,h=>h.originY+h.height/2),bottomLeft:V("bottomLeft",h=>h.originX,h=>h.originY+h.height),bottomCenter:V("bottomCenter",h=>h.originX+h.width/2,h=>h.originY+h.height),bottomRight:V("bottomRight",h=>h.originX+h.width,h=>h.originY+h.height)},kinematics:{vx:r(h=>m(h.frame).velocity.vx,{fps:this._fps,label:`${f}_vx`}),vy:r(h=>m(h.frame).velocity.vy,{fps:this._fps,label:`${f}_vy`}),speed:k,acceleration:k.velocity(1),headingRad:r(h=>{let O=m(h.frame).velocity;return Math.atan2(O.vy,O.vx)},{fps:this._fps,label:`${f}_headingRad`}),headingDeg:r(h=>{let O=m(h.frame).velocity;return Math.atan2(O.vy,O.vx)*180/Math.PI},{fps:this._fps,label:`${f}_headingDeg`})},confidence:r(h=>m(h.frame).score,{fps:this._fps,label:`${f}_score`}),active:r(h=>m(h.frame).active?1:0,{fps:this._fps,label:`${f}_active`}),isCoasting:r(h=>m(h.frame).isCoasting?1:0,{fps:this._fps,label:`${f}_isCoasting`}),age:r(h=>m(h.frame).age,{fps:this._fps,label:`${f}_age`}),pose:I,center:R,topCenter:this.__pending,bottomCenter:R,topLeft:R,bottomLeft:R}},p=(m,f,v,P)=>{let _=d(m,f,v,P),I=_.anchors;return Object.assign(_,{topCenter:I.topCenter,bottomCenter:I.bottomCenter,topLeft:I.topLeft,bottomLeft:I.bottomLeft}),_},g=m=>{let f=this._trackCache.get(m);return f||(f=p(v=>this.getObjectResult(v).objects.find(P=>P.trackId===m)??a(m),`track_${m}`,void 0,m),this._trackCache.set(m,f)),f},b=(m,f=0)=>{let v=`${m.toLowerCase()}_${f}`,P=this._categoryCache.get(v);return P||(P=p(_=>this.getObjectResult(_).objects.filter(R=>R.category.toLowerCase()===m.toLowerCase()&&R.active)[f]??a(0,m),`cat_${m}_${f}`,m),this._categoryCache.set(v,P)),P},M=p(m=>{let f=this.getObjectResult(m);if(f.objects.length===0)return a(0);let v=f.objects[0];for(let P=1;P<f.objects.length;P++)f.objects[P].score>v.score&&(v=f.objects[P]);return v},"primary_object"),C=m=>{let f=new Set;for(let v of this.getObjectResult(m).objects)v.active&&f.add(v.category);return Array.from(f).sort()},x=m=>{let f=m.toLowerCase(),v=this._classCache.get(f);return v||(v={count:r(P=>this.getObjectResult(P.frame).objects.filter(_=>_.active&&_.category.toLowerCase()===f).length,{fps:this._fps,label:`class_${f}_count`}),maxConfidence:r(P=>{let _=0;for(let I of this.getObjectResult(P.frame).objects)I.active&&I.category.toLowerCase()===f&&I.score>_&&(_=I.score);return _},{fps:this._fps,label:`class_${f}_maxConf`}),present:r(P=>this.getObjectResult(P.frame).objects.some(_=>_.active&&_.category.toLowerCase()===f)?1:0,{fps:this._fps,label:`class_${f}_present`}),primary:b(m)},this._classCache.set(f,v),v)};this.classes={get:x,get names(){return C($.value)},histogram:{get:m=>t.getClassHistogramTensor(m?.frame??$.value),get value(){return t.getClassHistogramTensor($.value)}}},this.objects={get:g,byCategory:b,primary:M,count:r(m=>this.getObjectResult(m.frame).objects.filter(f=>f.active).length,{fps:this._fps,label:"tracked_objects_count"}),hasCategory:m=>x(m).present,getActiveTracks:m=>this.getObjectResult(m).objects.filter(f=>f.active),get detectedCategories(){return C($.value)}};let T=(m,f)=>this.getMaskResult(m).find(v=>v.trackId===f),E=m=>Ze(this.getMaskResult(m)),A=(m,f)=>{let v=P=>{let _=m(P);if(!(!_||_.trackId===void 0))return this.getObjectResult(P).objects.find(I=>I.trackId===_.trackId)};return{get trackId(){return m($.value)?.trackId??0},get category(){return m($.value)?.category??"unknown"},area:r(P=>m(P.frame)?.area??0,{fps:this._fps,label:`${f}_area`}),coverage:r(P=>m(P.frame)?.coverage??0,{fps:this._fps,label:`${f}_coverage`}),solidity:r(P=>{let _=m(P.frame),I=v(P.frame);if(!_||!I)return 0;let V=I.boundingBox.width*I.boundingBox.height;return V>0?_.area/V:0},{fps:this._fps,label:`${f}_solidity`}),bboxFill:r(P=>{let _=m(P.frame);if(!_||_.width*_.height===0)return 0;let I=v(P.frame);return I?I.boundingBox.width*I.boundingBox.height/(_.width*_.height):0},{fps:this._fps,label:`${f}_bboxFill`})}};this.masks={get:m=>{let f=this._maskTrackCache.get(m);return f||(f=A(v=>T(v,m),`mask_${m}`),this._maskTrackCache.set(m,f)),f},subject:A(E,"subject"),count:r(m=>new Set(this.getMaskResult(m.frame).map(f=>f.trackId??-1)).size,{fps:this._fps,label:"mask_count"})},this.segmentation={humanSilhouette:this.masks.subject,subject:this.masks.subject,instanceMasks:this.masks,matte:{coverage:r(m=>t.getMatteResult(m.frame)?.coverage??0,{fps:this._fps,label:"matte_coverage"}),at:m=>t.getMatteResult(m)},get stencilTexture(){return t._stencilTexture}},this.poseLandmarksTensor={get:m=>t.getPoseLandmarksTensor(m?.frame??$.value),get value(){return t.getPoseLandmarksTensor($.value)}},this.objectsTensor={get:m=>t.getObjectsTensor(m?.frame??$.value),get value(){return t.getObjectsTensor($.value)}},this.masksTensor={get:m=>t.getMasksTensor(m?.frame??$.value),get value(){return t.getMasksTensor($.value)}},this.histogramTensor={get:m=>t.getClassHistogramTensor(m?.frame??$.value),get value(){return t.getClassHistogramTensor($.value)}}}setFrameSize(e,t){this._width===e&&this._height===t||(this._width=e,this._height=t,this._transformer=new le({width:e,height:t,fov:this._cameraFov}),this.invalidateSignals())}setStencilTexture(e){this._stencilTexture=e}get stencilTexture(){return this._stencilTexture}latestAtOrBefore(e,t,r=8){let s=this.clamp(t),i=Math.max(0,s-r);for(let o=s;o>=i;o--){let u=e.get(o);if(u!==void 0)return u}}invalidateSignals(){for(let e of this._registeredSignals)e.invalidate()}setPoseResult(e,t){this._poseCache.set(this.clamp(e),t),this.invalidateSignals()}getPoseResult(e){return this.latestAtOrBefore(this._poseCache,e)??ln()}setObjectResult(e,t){let r="objects"in t?t:{objects:t,rawDetections:[]};this._objectCache.set(this.clamp(e),{objects:r.objects,rawDetections:r.rawDetections??[]}),this.invalidateSignals()}getObjectResult(e){return this.latestAtOrBefore(this._objectCache,e)??cn()}setMaskResult(e,t){this._maskCache.set(this.clamp(e),t),this.invalidateSignals()}getMaskResult(e){return this._maskSource?.(e)??this.latestAtOrBefore(this._maskCache,e)??[]}setMatteResult(e,t){this._matteCache.set(this.clamp(e),t),this.invalidateSignals()}getMatteResult(e){return this._matteSource?.(e)??this.latestAtOrBefore(this._matteCache,e)}summary(e=$.value){let t=this.clamp(e),r=this.getObjectResult(t),s=r.objects.map(u=>({trackId:u.trackId,category:u.category,score:u.score,center:[u.centerX,u.centerY],speed:u.speed,active:u.active})),i=new Set;for(let u of r.objects)u.active&&i.add(u.category);let o={};for(let u of this.getMaskResult(t))o[u.category]=(o[u.category]??0)+1;return{frame:t,objects:s,classes:Array.from(i).sort(),masks:o}}getPoseLandmarksTensor(e){let r=this.getPoseResult(e).people[0]?.keypoints??[],s=new Float32Array(51);for(let i=0;i<17;i++)s[i*3]=r[i]?.x??.5,s[i*3+1]=r[i]?.y??.5,s[i*3+2]=r[i]?.visibility??0;return{data:s,shape:[17,3],dtype:"float32"}}getObjectsTensor(e,t=16){let r=this.getObjectResult(e),s=new Float32Array(t*8),i=Math.min(t,r.objects.length);for(let o=0;o<i;o++){let u=r.objects[o],a=o*8,l=0;for(let c=0;c<u.category.length;c++)l=l*31+u.category.charCodeAt(c)&65535;s[a]=u.active?1:0,s[a+1]=l,s[a+2]=u.centerX,s[a+3]=u.centerY,s[a+4]=u.boundingBox.width,s[a+5]=u.boundingBox.height,s[a+6]=u.velocity.vx,s[a+7]=u.velocity.vy}return{data:s,shape:[t,8],dtype:"float32"}}getMasksTensor(e,t=16){let r=this.getMaskResult(e),s=new Float32Array(t*2),i=Math.min(t,r.length);for(let o=0;o<i;o++){let u=r[o];s[o*2]=u.coverage;let a=this.getObjectResult(e).objects.find(c=>c.trackId===u.trackId),l=a?a.boundingBox.width*a.boundingBox.height:0;s[o*2+1]=l>0?u.area/l:0}return{data:s,shape:[t,2],dtype:"float32"}}getClassHistogramTensor(e,t=80){let r=new Float32Array(t);for(let s of this.getObjectResult(e).objects)if(s.active){let i=rr.get(s.category.toLowerCase());i!==void 0&&(r[i]+=1)}return{data:r,shape:[t],dtype:"float32"}}clamp(e){return Math.max(0,Math.min(this._totalFrames-1,Math.round(e)))}};var rr=new Map(he.map((n,e)=>[n,e]));y();function fn(n,e,t={}){let r=t.offsetX??0,s=t.offsetY??0,i=t.offsetZ??0;if(!e||typeof e!="object")return n;if("screenX"in e&&e.screenX&&typeof e.screenX=="object"){let o=e;n.x=r!==0?o.screenX.add(r):o.screenX,n.y=s!==0?o.screenY.add(s):o.screenY,n.z=i!==0?o.z.add(i):o.z}else if("x"in e&&typeof e.x=="object"&&e.x!==null){let o=e;n.x=r!==0?o.x.add(r):o.x,n.y=s!==0?o.y.add(s):o.y,n.z=i!==0?o.z.add(i):o.z}else{let o=e;n.x=(o.screenX??o.x)+r,n.y=(o.screenY??o.y)+s,n.z=(o.z??0)+i}return n}function hi(n,e,t={}){if(!e||typeof e!="object")return n;if("anchors"in e&&e.anchors){let r=e,s=t.anchor??(t.matchWidth||t.matchHeight?"topLeft":"center"),i=r.anchors[s]??r.center,o=i;return t.smoothFrames&&t.smoothFrames>1&&(o={x:i.x.smooth(t.smoothFrames),y:i.y.smooth(t.smoothFrames),z:i.z,screenX:i.screenX.smooth(t.smoothFrames),screenY:i.screenY.smooth(t.smoothFrames)}),t.matchWidth&&(n.width=t.smoothFrames&&t.smoothFrames>1?r.bounds.screenWidth.smooth(t.smoothFrames):r.bounds.screenWidth),t.matchHeight&&(n.height=t.smoothFrames&&t.smoothFrames>1?r.bounds.screenHeight.smooth(t.smoothFrames):r.bounds.screenHeight),t.hideWhenLost&&(n.opacity=r.active),fn(n,o,t)}return fn(n,e,t)}y();function or(n){let e=[];return n.enableDetection===!0&&e.push("detect"),n.enableSegmentation===!0&&e.push("segment"),n.enablePose===!0&&e.push("pose"),n.enableMatte===!0&&e.push("matte"),e.length>0?e:["detect"]}var Je=class n{id;kind="vision";source;config;vision;_runner;_runnerOptions;constructor(e,t={},r={},s={}){this.id=`vision-${Math.random().toString(36).slice(2,9)}`,this.source=e,this.config=t,this._runnerOptions=s,this.vision=new Me({...r,config:t})}runner(){if(!this._runner){let{variant:e,confidence:t,classes:r,modelsDir:s,baseUrl:i,maskThreshold:o,featherRadius:u}=this.config;this._runner=Se.create({...this._runnerOptions,...e!==void 0?{variant:e}:{},...t!==void 0?{confidence:t}:{},...r!==void 0?{classes:r}:{},...s!==void 0?{modelsDir:s}:{},...i!==void 0?{baseUrl:i}:{},...o!==void 0?{maskThreshold:o}:{},...u!==void 0?{featherRadius:u}:{}})}return this._runner}async ready(){let e=this.runner();return await e.preload(or(this.config)),e}close(){this._runner?.close(),this._runner=void 0}static attach(e,t={},r={}){let s=new n(e,t,r),i=s.vision;return Object.defineProperties(i,{node:{value:s.toNode(),enumerable:!0},ready:{value:()=>s.ready()},runner:{value:()=>s.runner()},close:{value:()=>s.close()}}),i}toNode(){return{id:this.id,kind:"vision",source:this.source,config:this.config}}};y();y();function _i(n,e,t,r,s){let i=n.width,o=n.height,u=-1,a=-1;for(let T=0;T<n.height;T++)for(let E=0;E<n.width;E++)(n.mask[T*n.width+E]??0)<128||(i=Math.min(i,E),o=Math.min(o,T),u=Math.max(u,E),a=Math.max(a,T));let l=u>=0,c=l?i:0,d=l?o:0,p=l?u-i+1:0,g=l?a-o+1:0,b=c+p/2,M=d+g/2,C=l&&s?.active?(b-s.centerX)*t:0,x=l&&s?.active?(M-s.centerY)*t:0;return{trackId:n.trackId??1,category:n.category,score:r,boundingBox:{originX:c,originY:d,width:p,height:g,normalizedX:c/n.width,normalizedY:d/n.height,normalizedWidth:p/n.width,normalizedHeight:g/n.height},centerX:b,centerY:M,normalizedCenterX:b/n.width,normalizedCenterY:M/n.height,velocity:{vx:C,vy:x},speed:Math.hypot(C,x),age:e+1,hits:e+1,active:l,isCoasting:!1}}export{dt as a,ut as b,mt as c,dr as d,ft as e,ur as f,kr as g,bn as h,wr as i,Pr as j,Ir as k,Rr as l,Or as m,Cr as n,Er as o,Ar as p,Lr as q,Fr as r,Vr as s,Dr as t,jr as u,Br as v,Ur as w,Gr as x,Wr as y,yn as z,yt as A,bt as B,qr as C,xn as D,kn as E,Tn as F,_n as G,Sn as H,wn as I,je as J,xt as K,Mn as L,Be as M,uo as N,kt as O,bo as P,yo as Q,To as R,be as S,q as T,wo as U,he as V,ge as W,Co as X,Ft as Y,Ke as Z,S as _,Ye as $,Mt as aa,Pt as ba,It as ca,Zt as da,Te as ea,Se as fa,Xs as ga,mn as ha,Qs as ia,_i as ja,le as ka,ni as la,Me as ma,fn as na,hi as oa,Je as pa};
@@ -1,4 +1,4 @@
1
- import{a as bt,b as Pt,c as Wt}from"./chunk-JAAFSVAG.mjs";import{c as Et,d as $t,e as K}from"./chunk-CSLSWUUT.mjs";import{b as gt}from"./chunk-OBIJIQCZ.mjs";import{e as It}from"./chunk-GXFYRMJZ.mjs";import{B as Nt,c as zt,e as Vt,y as D,z as F}from"./chunk-64L4GUOF.mjs";import{a as A}from"./chunk-354GX6IB.mjs";import{g as v}from"./chunk-Y4NIR77Z.mjs";v();function tr(r,t=180,e=12,n=1,i=0){if(r<=0)return 0;let o=Math.sqrt(Math.max(1e-4,t)/Math.max(1e-4,n)),s=e/(2*Math.sqrt(Math.max(1e-4,t*n)));if(s<1){let l=o*Math.sqrt(1-s*s),a=Math.exp(-s*o*r),u=-1,c=(i-s*o*-1)/Math.max(1e-6,l),h=a*(u*Math.cos(l*r)+c*Math.sin(l*r));return Math.min(2,Math.max(-1,1+h))}else if(Math.abs(s-1)<1e-4){let l=Math.exp(-o*r);return 1+(-1+(i-o)*r)*l}else{let l=-o*(s-Math.sqrt(s*s-1)),a=-o*(s+Math.sqrt(s*s-1)),u=(i+a)/Math.max(1e-6,l-a),c=-1-u;return 1+(u*Math.exp(l*r)+c*Math.exp(a*r))}}function er(r,t=0){if(r===0)return[1,0,0,1];let e=r*Math.PI/180,n=t*Math.PI/180,i=Math.cos(n),o=Math.sin(n),s=Math.tan(e),l=1-s*i*o,a=s*i*i,u=-s*o*o,c=1+s*o*i;return[l,a,u,c]}function rr(r,t){let e=t.anchorX,n=t.anchorY;switch(t.preset){case"center":e=.5,n=.5;break;case"baseline":e=.5,n=r.height>0?r.ascender/r.height:.8;break;case"bottom_left":e=0,n=1;break;case"bottom_center":e=.5,n=1;break;case"bottom_right":e=1,n=1;break;case"top_left":e=0,n=0;break;case"top_center":e=.5,n=0;break;case"top_right":e=1,n=0;break;default:e=.5,n=.5;break}let i=(e-.5)*r.width+t.offsetX,o=(n-.5)*r.height+t.offsetY;return{px:i,py:o}}function nr(r,t,e,n=0){if(e===0||t<=1)return 0;let i=n*(t-1);return(r-i)*e}function ir(r,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,a,u)=>Math.max(a,Math.min(u,l)),noise:l=>{let a=Math.sin(l*12.9898+t.frame*.1)*43758.5453;return(a-Math.floor(a))*2-1},signals:t.signals??{}},n=Object.keys(e),i=Object.values(e),o=new Function(...n,`return (${r});`),s=Number(o(...i));return Number.isFinite(s)?Math.max(-1,Math.min(1,s)):0}catch{return 0}}function or(r,t,e){let n=Math.max(1,t),i=n>1?r/(n-1):0,o=e.totalAngle*Math.PI/180,s=i*o,l=0,a=0,u=0,c=0,h=0,f=0,p=1;switch(e.mode){case"cylinder":{let x=e.totalAngle<360?(i-.5)*o:s;e.axis==="y"?(l=e.radius*Math.sin(x),u=e.radius*Math.cos(x)-e.radius,h=x*180/Math.PI):e.axis==="x"?(a=e.radius*Math.sin(x),u=e.radius*Math.cos(x)-e.radius,c=x*180/Math.PI):(l=e.radius*Math.sin(x),a=e.radius*Math.cos(x),f=x*180/Math.PI);let g=Math.cos(x);p=Math.max(.25,(g+1)*.5);break}case"vortex":{let g=-Math.PI/2+s,y=e.radius*(1-i*.35);l=y*Math.cos(g),a=y*Math.sin(g),u=-r*e.pitch||0;let b=-.35*e.radius/(o||1),M=b*Math.cos(g)-y*Math.sin(g),U=b*Math.sin(g)+y*Math.cos(g);f=Math.atan2(U,M)*180/Math.PI,p=Math.max(.65,1-i*.35);break}case"helix":{if(e.axis==="x"){let x=e.pitch>10?e.pitch:28;l=(r-(n-1)/2)*x,a=e.radius*Math.sin(s),u=e.radius*Math.cos(s)-e.radius,c=Math.sin(s)*22,p=.75+.25*((Math.cos(s)+1)*.5)}else{let x=(i-.5)*o;l=e.radius*Math.sin(x),a=(r-(n-1)/2)*e.pitch,u=e.radius*Math.cos(x)-e.radius,h=x*180/Math.PI;let g=Math.cos(x);p=Math.max(.65,(g+1)*.5)}break}default:{u=0;break}}let m=Math.max(100,e.perspective??1200),d=m-u,P=d>1?m/d:1;return{x:l*P,y:a*P,z:u,rotX:c,rotY:h,rotZ:f,scaleMult:Math.max(.1,P),depthOpacity:p}}function sr(r,t,e,n,i){let s=(t>0?Math.max(t,e):e)+n.repeatGap;if(s<=0)return r;let l=n.velocity*i;if(n.snap?.enabled){let a=n.snap.stopIndex??0,u=n.snap.granularity==="character"?40:120,c=a*u,h=Math.min(1,i*1.5);l=l*(1-h)+c*h}if((n.direction==="right"||n.direction==="down")&&(l=-l),n.loop){let a=(r-l)%s;return a<-e?a+s:a}return r-l}function ar(r,t,e,n,i,o){let s=Math.max(1,t),l=s>1?r/(s-1):.5,a=Math.max(20,e.minFreqHz),u=Math.max(a+100,e.maxFreqHz),c=a*(u/a)**l,h=0,f=It.getChannelSamples(e.signalChannel,"primary");if(f&&f.length>0){let m=o>0?o:24,d=Math.max(0,Math.min(f.length-1,Math.round(i/m*24)));h=Number(f[d])||0}else if(n){let m=n[e.signalChannel];if(typeof m=="number")h=m;else if(typeof m=="function")h=Number(m(i,o,c))||0;else if(typeof m=="object"&&m!==null){let d=m;if(typeof d.get=="function")h=Number(d.get({frame:i,fps:o,freq:c}))||0;else if(Array.isArray(d.samples)||ArrayBuffer.isView(d.samples)){let P=d.samples,x=Math.floor(l*(P.length-1));h=Number(P[x])||0}}}let p=Math.max(0,Math.min(1,h));return e.minScale+p*(e.maxScale-e.minScale)}v();function cr(r,t,e,n,i,o=0,s=0){let l=t+n,a=e+n;if(a<=l)return 0;let u=(r-l)/(a-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(o!==0&&c>.5){let h=(c-.5)*2,f=o>0?1+o*3:1/(1-o*3);c=.5+.5*h**f}if(s!==0&&c<=.5){let h=c*2,f=s>0?1+s*3:1/(1-s*3);c=.5*h**f}}return Math.max(0,Math.min(1,c))}function hr(r,t,e,n){let i=(t*(1-n)+n)*12.9898+e+r*78.233,o=Math.sin(i)*43758.5453;return(o-Math.floor(o))*2-1}function fr(r,t){let e=t,n=()=>(e=(e*9301+49297)%233280,e/233280),i=Array.from({length:r},(o,s)=>s);for(let o=i.length-1;o>0;o--){let s=Math.floor(n()*(o+1)),l=i[o];i[o]=i[s],i[s]=l}return i}function pr(r,t,e){switch(e){case"add":return Math.max(0,Math.min(1,r+t));case"subtract":return Math.max(0,Math.min(1,r-t));case"intersect":return r*t;case"min":return Math.min(r,t);case"max":return Math.max(r,t);case"difference":return Math.abs(r-t)}}v();var jt={ascii:"!@#$%^&*()_+{}[]:;<>,.?",alphanumeric:"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",matrix:"010101<>[]{}+=*~#%&!?/\\:;|X0123456789",binary:"01",hex:"0123456789ABCDEF"};function me(r,t){return r==="custom"&&t&&t.length>0?t:jt[r]??jt.alphanumeric}function xr(r,t,e,n,i={mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7},o={enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25},s=2,l="character",a){if(a===void 0&&t<e)return{visibleChars:0,currentDisplayString:"",isCursorVisible:!1};let u=a!==void 0?Math.max(0,Math.min(1,a)):Math.min(1,(t-e)/Math.max(1,n)),c=a!==void 0?u*n:t-e,h=r.length,f=Math.floor(u*h);if(l==="word"){let d=r.split(/(\s+)/),P=[];d.forEach((g,y)=>{g.trim().length>0&&P.push(y)});let x=Math.min(P.length,Math.floor(u*(P.length+1)));if(x<=0)f=0;else{let g=P[Math.min(P.length-1,x-1)];f=d.slice(0,g+1).join("").length}}else if(l==="line"){let d=r.split(`
1
+ import{a as bt,b as Pt,c as Wt}from"./chunk-JAAFSVAG.mjs";import{c as Et,d as $t,e as K}from"./chunk-CSLSWUUT.mjs";import{b as gt}from"./chunk-OBIJIQCZ.mjs";import{e as It}from"./chunk-GXFYRMJZ.mjs";import{B as Nt,c as zt,e as Vt,y as D,z as F}from"./chunk-4F3DG6YB.mjs";import{a as A}from"./chunk-354GX6IB.mjs";import{g as v}from"./chunk-Y4NIR77Z.mjs";v();function tr(r,t=180,e=12,n=1,i=0){if(r<=0)return 0;let o=Math.sqrt(Math.max(1e-4,t)/Math.max(1e-4,n)),s=e/(2*Math.sqrt(Math.max(1e-4,t*n)));if(s<1){let l=o*Math.sqrt(1-s*s),a=Math.exp(-s*o*r),u=-1,c=(i-s*o*-1)/Math.max(1e-6,l),h=a*(u*Math.cos(l*r)+c*Math.sin(l*r));return Math.min(2,Math.max(-1,1+h))}else if(Math.abs(s-1)<1e-4){let l=Math.exp(-o*r);return 1+(-1+(i-o)*r)*l}else{let l=-o*(s-Math.sqrt(s*s-1)),a=-o*(s+Math.sqrt(s*s-1)),u=(i+a)/Math.max(1e-6,l-a),c=-1-u;return 1+(u*Math.exp(l*r)+c*Math.exp(a*r))}}function er(r,t=0){if(r===0)return[1,0,0,1];let e=r*Math.PI/180,n=t*Math.PI/180,i=Math.cos(n),o=Math.sin(n),s=Math.tan(e),l=1-s*i*o,a=s*i*i,u=-s*o*o,c=1+s*o*i;return[l,a,u,c]}function rr(r,t){let e=t.anchorX,n=t.anchorY;switch(t.preset){case"center":e=.5,n=.5;break;case"baseline":e=.5,n=r.height>0?r.ascender/r.height:.8;break;case"bottom_left":e=0,n=1;break;case"bottom_center":e=.5,n=1;break;case"bottom_right":e=1,n=1;break;case"top_left":e=0,n=0;break;case"top_center":e=.5,n=0;break;case"top_right":e=1,n=0;break;default:e=.5,n=.5;break}let i=(e-.5)*r.width+t.offsetX,o=(n-.5)*r.height+t.offsetY;return{px:i,py:o}}function nr(r,t,e,n=0){if(e===0||t<=1)return 0;let i=n*(t-1);return(r-i)*e}function ir(r,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,a,u)=>Math.max(a,Math.min(u,l)),noise:l=>{let a=Math.sin(l*12.9898+t.frame*.1)*43758.5453;return(a-Math.floor(a))*2-1},signals:t.signals??{}},n=Object.keys(e),i=Object.values(e),o=new Function(...n,`return (${r});`),s=Number(o(...i));return Number.isFinite(s)?Math.max(-1,Math.min(1,s)):0}catch{return 0}}function or(r,t,e){let n=Math.max(1,t),i=n>1?r/(n-1):0,o=e.totalAngle*Math.PI/180,s=i*o,l=0,a=0,u=0,c=0,h=0,f=0,p=1;switch(e.mode){case"cylinder":{let x=e.totalAngle<360?(i-.5)*o:s;e.axis==="y"?(l=e.radius*Math.sin(x),u=e.radius*Math.cos(x)-e.radius,h=x*180/Math.PI):e.axis==="x"?(a=e.radius*Math.sin(x),u=e.radius*Math.cos(x)-e.radius,c=x*180/Math.PI):(l=e.radius*Math.sin(x),a=e.radius*Math.cos(x),f=x*180/Math.PI);let g=Math.cos(x);p=Math.max(.25,(g+1)*.5);break}case"vortex":{let g=-Math.PI/2+s,y=e.radius*(1-i*.35);l=y*Math.cos(g),a=y*Math.sin(g),u=-r*e.pitch||0;let b=-.35*e.radius/(o||1),M=b*Math.cos(g)-y*Math.sin(g),U=b*Math.sin(g)+y*Math.cos(g);f=Math.atan2(U,M)*180/Math.PI,p=Math.max(.65,1-i*.35);break}case"helix":{if(e.axis==="x"){let x=e.pitch>10?e.pitch:28;l=(r-(n-1)/2)*x,a=e.radius*Math.sin(s),u=e.radius*Math.cos(s)-e.radius,c=Math.sin(s)*22,p=.75+.25*((Math.cos(s)+1)*.5)}else{let x=(i-.5)*o;l=e.radius*Math.sin(x),a=(r-(n-1)/2)*e.pitch,u=e.radius*Math.cos(x)-e.radius,h=x*180/Math.PI;let g=Math.cos(x);p=Math.max(.65,(g+1)*.5)}break}default:{u=0;break}}let m=Math.max(100,e.perspective??1200),d=m-u,P=d>1?m/d:1;return{x:l*P,y:a*P,z:u,rotX:c,rotY:h,rotZ:f,scaleMult:Math.max(.1,P),depthOpacity:p}}function sr(r,t,e,n,i){let s=(t>0?Math.max(t,e):e)+n.repeatGap;if(s<=0)return r;let l=n.velocity*i;if(n.snap?.enabled){let a=n.snap.stopIndex??0,u=n.snap.granularity==="character"?40:120,c=a*u,h=Math.min(1,i*1.5);l=l*(1-h)+c*h}if((n.direction==="right"||n.direction==="down")&&(l=-l),n.loop){let a=(r-l)%s;return a<-e?a+s:a}return r-l}function ar(r,t,e,n,i,o){let s=Math.max(1,t),l=s>1?r/(s-1):.5,a=Math.max(20,e.minFreqHz),u=Math.max(a+100,e.maxFreqHz),c=a*(u/a)**l,h=0,f=It.getChannelSamples(e.signalChannel,"primary");if(f&&f.length>0){let m=o>0?o:24,d=Math.max(0,Math.min(f.length-1,Math.round(i/m*24)));h=Number(f[d])||0}else if(n){let m=n[e.signalChannel];if(typeof m=="number")h=m;else if(typeof m=="function")h=Number(m(i,o,c))||0;else if(typeof m=="object"&&m!==null){let d=m;if(typeof d.get=="function")h=Number(d.get({frame:i,fps:o,freq:c}))||0;else if(Array.isArray(d.samples)||ArrayBuffer.isView(d.samples)){let P=d.samples,x=Math.floor(l*(P.length-1));h=Number(P[x])||0}}}let p=Math.max(0,Math.min(1,h));return e.minScale+p*(e.maxScale-e.minScale)}v();function cr(r,t,e,n,i,o=0,s=0){let l=t+n,a=e+n;if(a<=l)return 0;let u=(r-l)/(a-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(o!==0&&c>.5){let h=(c-.5)*2,f=o>0?1+o*3:1/(1-o*3);c=.5+.5*h**f}if(s!==0&&c<=.5){let h=c*2,f=s>0?1+s*3:1/(1-s*3);c=.5*h**f}}return Math.max(0,Math.min(1,c))}function hr(r,t,e,n){let i=(t*(1-n)+n)*12.9898+e+r*78.233,o=Math.sin(i)*43758.5453;return(o-Math.floor(o))*2-1}function fr(r,t){let e=t,n=()=>(e=(e*9301+49297)%233280,e/233280),i=Array.from({length:r},(o,s)=>s);for(let o=i.length-1;o>0;o--){let s=Math.floor(n()*(o+1)),l=i[o];i[o]=i[s],i[s]=l}return i}function pr(r,t,e){switch(e){case"add":return Math.max(0,Math.min(1,r+t));case"subtract":return Math.max(0,Math.min(1,r-t));case"intersect":return r*t;case"min":return Math.min(r,t);case"max":return Math.max(r,t);case"difference":return Math.abs(r-t)}}v();var jt={ascii:"!@#$%^&*()_+{}[]:;<>,.?",alphanumeric:"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",matrix:"010101<>[]{}+=*~#%&!?/\\:;|X0123456789",binary:"01",hex:"0123456789ABCDEF"};function me(r,t){return r==="custom"&&t&&t.length>0?t:jt[r]??jt.alphanumeric}function xr(r,t,e,n,i={mode:"human",jitter:.35,commaPauseMultiplier:3,sentencePauseMultiplier:5.5,paragraphPauseMultiplier:7},o={enabled:!1,charset:"alphanumeric",scrambleFramesPerChar:8,highlightProbability:.25},s=2,l="character",a){if(a===void 0&&t<e)return{visibleChars:0,currentDisplayString:"",isCursorVisible:!1};let u=a!==void 0?Math.max(0,Math.min(1,a)):Math.min(1,(t-e)/Math.max(1,n)),c=a!==void 0?u*n:t-e,h=r.length,f=Math.floor(u*h);if(l==="word"){let d=r.split(/(\s+)/),P=[];d.forEach((g,y)=>{g.trim().length>0&&P.push(y)});let x=Math.min(P.length,Math.floor(u*(P.length+1)));if(x<=0)f=0;else{let g=P[Math.min(P.length-1,x-1)];f=d.slice(0,g+1).join("").length}}else if(l==="line"){let d=r.split(`
2
2
  `),P=Math.min(d.length,Math.floor(u*(d.length+1)));f=d.slice(0,P).join(`
3
3
  `).length}else if(i.mode==="human"&&u<1){let d=0,P=0,x=n/Math.max(1,h);for(let g=0;g<h;g++){let y=r[g],b=1,M=i.commaPauseMultiplier??3,U=i.sentencePauseMultiplier??5.5,C=i.paragraphPauseMultiplier??7,T=i.jitter??.35;y===","||y===";"?b=M:y==="."||y==="!"||y==="?"?b=U:y===`
4
4
  `&&(b=C);let _=1+Math.sin(g*17.3+42)*.5*T,k=x*b*_;if(P+=k,P<=c)d=g+1;else break}f=Math.min(h,d)}let p=r.slice(0,f);if(o.enabled&&f<h&&f>0){let d=me(o.charset,o.customCharset),P=Math.min(f,Math.max(1,o.scrambleFramesPerChar>4?3:2)),x="";for(let g=0;g<P;g++){let y=Math.floor(Math.abs(Math.sin(t*7+g*13))*d.length)%d.length;x+=d[y]}p=p.slice(0,p.length-P)+x}let m=!0;if(s>0){let d=Math.max(1,Math.round(30/(2*s)));m=Math.floor(c/d)%2===0}return{visibleChars:f,currentDisplayString:p,isCursorVisible:m}}v();v();var Ht=`