framefields 2.8.1 → 2.9.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 (431) hide show
  1. package/README.md +30 -1
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-vatRe308.mjs → audio-BfQg37MW.mjs} +3 -3
  4. package/dist/{audio-vatRe308.mjs.map → audio-BfQg37MW.mjs.map} +1 -1
  5. package/dist/cli/check-worker.mjs +44 -44
  6. package/dist/components/index.d.mts +2 -2
  7. package/dist/components/index.mjs +43 -43
  8. package/dist/{dist-CFe1fC9l.mjs → dist-C1cCW7Bt.mjs} +8 -1
  9. package/dist/{dist-CFe1fC9l.mjs.map → dist-C1cCW7Bt.mjs.map} +1 -1
  10. package/dist/{dist-BbwtlSZO.mjs → dist-C8Xq3zgx.mjs} +2 -2
  11. package/dist/{dist-BbwtlSZO.mjs.map → dist-C8Xq3zgx.mjs.map} +1 -1
  12. package/dist/effects/index.d.mts +1 -1
  13. package/dist/effects/index.mjs +35 -35
  14. package/dist/{effects-CCyfjbhZ.mjs → effects-CemgqEPv.mjs} +2 -2
  15. package/dist/{effects-CCyfjbhZ.mjs.map → effects-CemgqEPv.mjs.map} +1 -1
  16. package/dist/fonts/index.mjs +2 -2
  17. package/dist/{fonts-C1mgtkCa.mjs → fonts-BW0pPcvJ.mjs} +2 -2
  18. package/dist/{fonts-C1mgtkCa.mjs.map → fonts-BW0pPcvJ.mjs.map} +1 -1
  19. package/dist/{gpu-CU2tEKJJ.mjs → gpu-CMaa63nz.mjs} +2 -2
  20. package/dist/{gpu-CU2tEKJJ.mjs.map → gpu-CMaa63nz.mjs.map} +1 -1
  21. package/dist/{index-BwRrsP_V.d.mts → index-CZjrnylh.d.mts} +457 -417
  22. package/dist/index-CZjrnylh.d.mts.map +1 -0
  23. package/dist/index-D5UDyVMb.d.mts.map +1 -1
  24. package/dist/{index-UDDAfHAF.d.mts → index-Du5YgdzM.d.mts} +50 -12
  25. package/dist/index-Du5YgdzM.d.mts.map +1 -0
  26. package/dist/index.d.mts +3 -3
  27. package/dist/index.mjs +50 -50
  28. package/dist/preview/index.mjs +10 -10
  29. package/dist/{preview-WXbsf6Dv.mjs → preview-BQVgn6Ho.mjs} +2 -2
  30. package/dist/{preview-WXbsf6Dv.mjs.map → preview-BQVgn6Ho.mjs.map} +1 -1
  31. package/dist/preview-engine/audio.mjs +1 -1
  32. package/dist/preview-engine/{chunk-JGDZQCNU.mjs → chunk-2B722GXM.mjs} +1 -1
  33. package/dist/preview-engine/{chunk-GFW3D464.mjs → chunk-2DWY7UBV.mjs} +1 -1
  34. package/dist/preview-engine/{chunk-72DYOIMP.mjs → chunk-2PYTDN2C.mjs} +1 -1
  35. package/dist/preview-engine/{chunk-PF3SXQNV.mjs → chunk-34DL53D5.mjs} +1 -1
  36. package/dist/preview-engine/{chunk-GLXJOXBE.mjs → chunk-34RJ7GAS.mjs} +1 -1
  37. package/dist/preview-engine/{chunk-6OY4YLTC.mjs → chunk-35HMRW4I.mjs} +1 -1
  38. package/dist/preview-engine/chunk-374QY63R.mjs +1974 -0
  39. package/dist/preview-engine/{chunk-W26U6BP2.mjs → chunk-4WYM72ZN.mjs} +1 -1
  40. package/dist/preview-engine/{chunk-EQ4VBUWM.mjs → chunk-5AWAOMBR.mjs} +1 -1
  41. package/dist/preview-engine/{chunk-J4SHMCTG.mjs → chunk-6R3UJBL5.mjs} +1 -1
  42. package/dist/preview-engine/{chunk-VHGC72XP.mjs → chunk-73CNXGAK.mjs} +1 -1
  43. package/dist/preview-engine/{chunk-KYOPOCO5.mjs → chunk-AHQCDTD6.mjs} +1 -1
  44. package/dist/preview-engine/{chunk-ADV2TIKA.mjs → chunk-BEYA25UZ.mjs} +1 -1
  45. package/dist/preview-engine/{chunk-RBDIRBEI.mjs → chunk-BJV2LBII.mjs} +1 -1
  46. package/dist/preview-engine/{chunk-LBJBBEKP.mjs → chunk-BVDWS3D2.mjs} +1 -1
  47. package/dist/preview-engine/chunk-BXPM5SJ3.mjs +1 -0
  48. package/dist/preview-engine/{chunk-NIPWL6Z5.mjs → chunk-C4M3B2Q2.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-LLUFOFF4.mjs → chunk-CC4NNNIY.mjs} +1 -1
  50. package/dist/preview-engine/chunk-CCB3VTY2.mjs +39 -0
  51. package/dist/preview-engine/{chunk-NX66555S.mjs → chunk-CN2VLYLB.mjs} +1 -1
  52. package/dist/preview-engine/{chunk-SK7PUBTC.mjs → chunk-DMSZXG56.mjs} +1 -1
  53. package/dist/preview-engine/{chunk-WC257OBY.mjs → chunk-DVZITDQS.mjs} +1 -1
  54. package/dist/preview-engine/{chunk-COZG35ZR.mjs → chunk-FTCEG3SF.mjs} +1 -1
  55. package/dist/preview-engine/{chunk-57LES7TL.mjs → chunk-GA4HNR44.mjs} +1 -1
  56. package/dist/preview-engine/chunk-GEUUXTDL.mjs +138 -0
  57. package/dist/preview-engine/{chunk-S4WNCEMO.mjs → chunk-GIICZZQI.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-RTHU7REC.mjs → chunk-GRJJVSOV.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-RGDM6PQ5.mjs → chunk-GZWA5QJS.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-LZNNM5OB.mjs → chunk-H7BSN7V7.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-JXUENEQO.mjs → chunk-HOV6DDBZ.mjs} +1 -1
  62. package/dist/preview-engine/{chunk-C6XLAJLL.mjs → chunk-JSYG6OWZ.mjs} +1 -1
  63. package/dist/preview-engine/{chunk-GZVPVOHB.mjs → chunk-K3C6GUQD.mjs} +1 -1
  64. package/dist/preview-engine/chunk-KOVN277Z.mjs +1 -0
  65. package/dist/preview-engine/{chunk-Y6TWMUJC.mjs → chunk-LVYVXVZO.mjs} +1 -1
  66. package/dist/preview-engine/{chunk-NKAVHU7H.mjs → chunk-MIEH74UH.mjs} +7 -7
  67. package/dist/preview-engine/{chunk-AVDHZNIZ.mjs → chunk-OH5W5EL6.mjs} +1 -1
  68. package/dist/preview-engine/{chunk-22F33PPP.mjs → chunk-P5FKRQFU.mjs} +1 -1
  69. package/dist/preview-engine/{chunk-7X2AUKTU.mjs → chunk-PM2W4VLT.mjs} +1 -1
  70. package/dist/preview-engine/{chunk-PYX6Q2EJ.mjs → chunk-QCSVT73T.mjs} +1 -1
  71. package/dist/preview-engine/{chunk-523CTDOC.mjs → chunk-RJIAES3X.mjs} +1 -1
  72. package/dist/preview-engine/{chunk-DPQN7WYQ.mjs → chunk-S2ABWY5G.mjs} +1 -1
  73. package/dist/preview-engine/{chunk-G7JJ6HVL.mjs → chunk-SF37HXAH.mjs} +1 -1
  74. package/dist/preview-engine/{chunk-OKLYIQ5F.mjs → chunk-SPJPM43P.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-UOTMBWBJ.mjs → chunk-TNJEZKXM.mjs} +1 -1
  76. package/dist/preview-engine/chunk-ULOFDFHJ.mjs +1 -0
  77. package/dist/preview-engine/{chunk-LLB3AGBQ.mjs → chunk-UQKPDGEH.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-DISKQ5MH.mjs → chunk-UXYM2G6J.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-U5YNECNG.mjs → chunk-VN36PRVD.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-PMOKPVSD.mjs → chunk-VVE2QHVG.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-PEUQRSIM.mjs → chunk-Y5K5LVOR.mjs} +1 -1
  82. package/dist/preview-engine/chunk-YGKO4NIU.mjs +1 -0
  83. package/dist/preview-engine/{chunk-PSEMCJBH.mjs → chunk-ZJ5SWTCW.mjs} +1 -1
  84. package/dist/preview-engine/chunk-ZY47XIRK.mjs +5 -0
  85. package/dist/preview-engine/components.mjs +1 -1
  86. package/dist/preview-engine/effects.mjs +1 -1
  87. package/dist/preview-engine/framefields.mjs +1 -1
  88. package/dist/preview-engine/player.mjs +1 -1
  89. package/dist/preview-engine/renderers-3BOQOUEU.mjs +1 -0
  90. package/dist/preview-engine/renderers-3M2FESR2.mjs +1 -0
  91. package/dist/preview-engine/{renderers-FEEIDQF3.mjs → renderers-4F7WLQD5.mjs} +1 -1
  92. package/dist/preview-engine/{renderers-OP6MKYRM.mjs → renderers-5KANN7XF.mjs} +1 -1
  93. package/dist/preview-engine/{renderers-TVRR7PGN.mjs → renderers-5TO2SXFR.mjs} +1 -1
  94. package/dist/preview-engine/{renderers-DR7UZ3QR.mjs → renderers-5UZ3YFBD.mjs} +1 -1
  95. package/dist/preview-engine/renderers-6LHIWKMZ.mjs +1 -0
  96. package/dist/preview-engine/{renderers-7F2KF5RE.mjs → renderers-6Z7DWAPH.mjs} +1 -1
  97. package/dist/preview-engine/renderers-77PDUMYI.mjs +1 -0
  98. package/dist/preview-engine/{renderers-3J3NCOAI.mjs → renderers-7C5RA3R5.mjs} +1 -1
  99. package/dist/preview-engine/{renderers-KPCQGBIY.mjs → renderers-7XHO6M3B.mjs} +1 -1
  100. package/dist/preview-engine/{renderers-KJAOPYAU.mjs → renderers-A24KZK2Q.mjs} +1 -1
  101. package/dist/preview-engine/renderers-A43VCJ7X.mjs +1 -0
  102. package/dist/preview-engine/renderers-AKY464RY.mjs +1 -0
  103. package/dist/preview-engine/renderers-C5UO6PL5.mjs +1 -0
  104. package/dist/preview-engine/renderers-C64QSZO4.mjs +1 -0
  105. package/dist/preview-engine/renderers-CIRCR6NG.mjs +1 -0
  106. package/dist/preview-engine/renderers-CIWOPETY.mjs +1 -0
  107. package/dist/preview-engine/renderers-CUMVIVHI.mjs +1 -0
  108. package/dist/preview-engine/renderers-CZEZCELP.mjs +1 -0
  109. package/dist/preview-engine/{renderers-R3YVLWKV.mjs → renderers-ENMY4DKF.mjs} +1 -1
  110. package/dist/preview-engine/{renderers-AAENCA7X.mjs → renderers-FSI5KNGZ.mjs} +1 -1
  111. package/dist/preview-engine/renderers-FSQMWHQM.mjs +1 -0
  112. package/dist/preview-engine/renderers-FZEW5C23.mjs +1 -0
  113. package/dist/preview-engine/renderers-HCET2IML.mjs +1 -0
  114. package/dist/preview-engine/{renderers-LBX7GPDU.mjs → renderers-IHGAWLUF.mjs} +1 -1
  115. package/dist/preview-engine/renderers-IUOOC6K7.mjs +1 -0
  116. package/dist/preview-engine/{renderers-VXMR47WZ.mjs → renderers-KC6ZSKCW.mjs} +1 -1
  117. package/dist/preview-engine/renderers-KYYJLVIJ.mjs +1 -0
  118. package/dist/preview-engine/renderers-L4GE7WV3.mjs +1 -0
  119. package/dist/preview-engine/renderers-L6YDX6GS.mjs +1 -0
  120. package/dist/preview-engine/renderers-LRAFWKCO.mjs +1 -0
  121. package/dist/preview-engine/renderers-LU3XZWEB.mjs +1 -0
  122. package/dist/preview-engine/{renderers-4YYGKLDK.mjs → renderers-MD3PRFZL.mjs} +1 -1
  123. package/dist/preview-engine/renderers-MOEC2XZZ.mjs +1 -0
  124. package/dist/preview-engine/{renderers-RGDTRVZM.mjs → renderers-NCGH2WWJ.mjs} +1 -1
  125. package/dist/preview-engine/renderers-ND2WV4K3.mjs +1 -0
  126. package/dist/preview-engine/renderers-NJ5CWVVH.mjs +1 -0
  127. package/dist/preview-engine/renderers-NKXYPR3V.mjs +1 -0
  128. package/dist/preview-engine/{renderers-WVQQZQ6Y.mjs → renderers-NUAI4TO5.mjs} +1 -1
  129. package/dist/preview-engine/renderers-NWR66CGK.mjs +1 -0
  130. package/dist/preview-engine/renderers-O22WTBRM.mjs +1 -0
  131. package/dist/preview-engine/renderers-O55BEDQZ.mjs +1 -0
  132. package/dist/preview-engine/renderers-PBBA7LQB.mjs +1 -0
  133. package/dist/preview-engine/{renderers-BL7Z3FTF.mjs → renderers-PIIEUKFE.mjs} +1 -1
  134. package/dist/preview-engine/renderers-PPZK6VEW.mjs +1 -0
  135. package/dist/preview-engine/renderers-Q6LJRZ7R.mjs +1 -0
  136. package/dist/preview-engine/{renderers-7TNEKJZS.mjs → renderers-QA2HKUJJ.mjs} +1 -1
  137. package/dist/preview-engine/renderers-RMEACSRL.mjs +1 -0
  138. package/dist/preview-engine/{renderers-AWRIELVX.mjs → renderers-RN2MHIFK.mjs} +1 -1
  139. package/dist/preview-engine/renderers-SEIAUKJF.mjs +1 -0
  140. package/dist/preview-engine/renderers-SP42LCSI.mjs +1 -0
  141. package/dist/preview-engine/{renderers-OE55O27K.mjs → renderers-T74CQCEN.mjs} +1 -1
  142. package/dist/preview-engine/renderers-T7SZA3BX.mjs +1 -0
  143. package/dist/preview-engine/{renderers-ZUQ2ZBYY.mjs → renderers-TGJSOKDY.mjs} +1 -1
  144. package/dist/preview-engine/renderers-TSBV4KPE.mjs +1 -0
  145. package/dist/preview-engine/{renderers-2SE5BLLB.mjs → renderers-U4M7ZCV4.mjs} +1 -1
  146. package/dist/preview-engine/{renderers-YEI4K4W4.mjs → renderers-V3AQO7AR.mjs} +1 -1
  147. package/dist/preview-engine/renderers-VADTDAHD.mjs +1 -0
  148. package/dist/preview-engine/renderers-VNNWI5C3.mjs +1 -0
  149. package/dist/preview-engine/{renderers-YYMRKHAA.mjs → renderers-WEYAHOBK.mjs} +1 -1
  150. package/dist/preview-engine/renderers-WZ75MLP3.mjs +1 -0
  151. package/dist/preview-engine/renderers-XB5R4UQA.mjs +1 -0
  152. package/dist/preview-engine/{renderers-YIVPMPQS.mjs → renderers-Y22VSOXF.mjs} +1 -1
  153. package/dist/preview-engine/{renderers-Y53D5CQ7.mjs → renderers-YBIUZDGQ.mjs} +1 -1
  154. package/dist/preview-engine/renderers-YESJR4O7.mjs +1 -0
  155. package/dist/preview-engine/renderers-YKSRZRRT.mjs +1 -0
  156. package/dist/preview-engine/{renderers-V4VML5IG.mjs → renderers-ZACSHGNZ.mjs} +1 -1
  157. package/dist/preview-engine/signals.mjs +1 -1
  158. package/dist/preview-engine/src-NGVAJYHC.mjs +8 -0
  159. package/dist/{program-Cq4gP9Dd.mjs → program-CKpKkllV.mjs} +2 -2
  160. package/dist/{program-Cq4gP9Dd.mjs.map → program-CKpKkllV.mjs.map} +1 -1
  161. package/dist/renderer/index.mjs +2 -2
  162. package/dist/renderer--Ac-dg4A.mjs +5 -0
  163. package/dist/renderer--N7TMqzU.mjs +5 -0
  164. package/dist/{renderer-CXWAdRqn.mjs → renderer--fkmiVjl.mjs} +2 -2
  165. package/dist/{renderer-CXWAdRqn.mjs.map → renderer--fkmiVjl.mjs.map} +1 -1
  166. package/dist/{renderer-CZyJ72JZ.mjs → renderer-1r-Uq-Ae.mjs} +2 -2
  167. package/dist/{renderer-CZyJ72JZ.mjs.map → renderer-1r-Uq-Ae.mjs.map} +1 -1
  168. package/dist/renderer-2ecmdOae.mjs +5 -0
  169. package/dist/{renderer-D8CMakyz.mjs → renderer-8QIwXh7O.mjs} +3 -3
  170. package/dist/{renderer-D8CMakyz.mjs.map → renderer-8QIwXh7O.mjs.map} +1 -1
  171. package/dist/{renderer-B4iCFvJh.mjs → renderer-B-ur0Ej8.mjs} +3 -3
  172. package/dist/{renderer-B4iCFvJh.mjs.map → renderer-B-ur0Ej8.mjs.map} +1 -1
  173. package/dist/{renderer-BD25uND8.mjs → renderer-B0piZg9r.mjs} +383 -171
  174. package/dist/renderer-B0piZg9r.mjs.map +1 -0
  175. package/dist/{renderer-BZKkT-6Q.mjs → renderer-B2jjxsjO.mjs} +2 -2
  176. package/dist/{renderer-BZKkT-6Q.mjs.map → renderer-B2jjxsjO.mjs.map} +1 -1
  177. package/dist/{renderer-DEcbSNQd.mjs → renderer-B39I6CQw.mjs} +3 -3
  178. package/dist/{renderer-DEcbSNQd.mjs.map → renderer-B39I6CQw.mjs.map} +1 -1
  179. package/dist/{renderer-DIPyUVX2.mjs → renderer-B522Dkdk.mjs} +3 -3
  180. package/dist/{renderer-DIPyUVX2.mjs.map → renderer-B522Dkdk.mjs.map} +1 -1
  181. package/dist/renderer-B5RJp5g-.mjs +5 -0
  182. package/dist/renderer-B7xyT1Vb.mjs +5 -0
  183. package/dist/{renderer-CeX7uUXB.mjs → renderer-BAYTI6jj.mjs} +2 -2
  184. package/dist/{renderer-CeX7uUXB.mjs.map → renderer-BAYTI6jj.mjs.map} +1 -1
  185. package/dist/{renderer-DoRazdp_.mjs → renderer-BAusZ6Vu.mjs} +2 -2
  186. package/dist/{renderer-DoRazdp_.mjs.map → renderer-BAusZ6Vu.mjs.map} +1 -1
  187. package/dist/renderer-BBeArN_x.mjs +5 -0
  188. package/dist/renderer-BCAZDu-r.mjs +5 -0
  189. package/dist/{renderer-D41gHat4.mjs → renderer-BF0hx_iJ.mjs} +3 -3
  190. package/dist/{renderer-D41gHat4.mjs.map → renderer-BF0hx_iJ.mjs.map} +1 -1
  191. package/dist/renderer-BJnhik7Y.mjs +5 -0
  192. package/dist/{renderer-BeQrWrOa.mjs → renderer-BPWDsufX.mjs} +2 -2
  193. package/dist/{renderer-BeQrWrOa.mjs.map → renderer-BPWDsufX.mjs.map} +1 -1
  194. package/dist/{renderer-CxEBV-w0.mjs → renderer-BXJXziIt.mjs} +2 -2
  195. package/dist/{renderer-CxEBV-w0.mjs.map → renderer-BXJXziIt.mjs.map} +1 -1
  196. package/dist/{renderer-Ce8VPaog.mjs → renderer-BdyopiLC.mjs} +2 -2
  197. package/dist/{renderer-Ce8VPaog.mjs.map → renderer-BdyopiLC.mjs.map} +1 -1
  198. package/dist/{renderer-Bkqg-U2F.mjs → renderer-Bfk6A7UO.mjs} +3 -3
  199. package/dist/{renderer-Bkqg-U2F.mjs.map → renderer-Bfk6A7UO.mjs.map} +1 -1
  200. package/dist/{renderer-CAagaRag.mjs → renderer-BgO6BA_z.mjs} +2 -2
  201. package/dist/{renderer-CAagaRag.mjs.map → renderer-BgO6BA_z.mjs.map} +1 -1
  202. package/dist/{renderer-DlZwbO-A.mjs → renderer-BlPqTEii.mjs} +2 -2
  203. package/dist/{renderer-DlZwbO-A.mjs.map → renderer-BlPqTEii.mjs.map} +1 -1
  204. package/dist/{renderer-BEuU7qlG.mjs → renderer-BlvGcyAN.mjs} +2 -2
  205. package/dist/{renderer-BEuU7qlG.mjs.map → renderer-BlvGcyAN.mjs.map} +1 -1
  206. package/dist/{renderer-BrWOcJ9Q.mjs → renderer-BpIF1QIE.mjs} +3 -3
  207. package/dist/{renderer-BrWOcJ9Q.mjs.map → renderer-BpIF1QIE.mjs.map} +1 -1
  208. package/dist/renderer-BxRW8MZO.mjs +5 -0
  209. package/dist/renderer-C-lfsEAN.mjs +5 -0
  210. package/dist/{renderer-eAVNsuX8.mjs → renderer-C41U1tK6.mjs} +5 -5
  211. package/dist/{renderer-eAVNsuX8.mjs.map → renderer-C41U1tK6.mjs.map} +1 -1
  212. package/dist/renderer-C6nOFN4-.mjs +5 -0
  213. package/dist/{renderer-CjklM-KD.mjs → renderer-C7L8Ceqr.mjs} +2 -2
  214. package/dist/{renderer-CjklM-KD.mjs.map → renderer-C7L8Ceqr.mjs.map} +1 -1
  215. package/dist/{renderer-xLQ_nkmy.mjs → renderer-C7eFJf0_.mjs} +3 -3
  216. package/dist/{renderer-xLQ_nkmy.mjs.map → renderer-C7eFJf0_.mjs.map} +1 -1
  217. package/dist/renderer-C84TSQmS.mjs +5 -0
  218. package/dist/renderer-C8_6YofT.mjs +5 -0
  219. package/dist/{renderer-DsAoxQ8O.mjs → renderer-CCycwCEB.mjs} +2 -2
  220. package/dist/{renderer-DsAoxQ8O.mjs.map → renderer-CCycwCEB.mjs.map} +1 -1
  221. package/dist/{renderer-Cjx3x7xM.mjs → renderer-CHr7MiYW.mjs} +3 -3
  222. package/dist/{renderer-Cjx3x7xM.mjs.map → renderer-CHr7MiYW.mjs.map} +1 -1
  223. package/dist/renderer-COR66Sby.mjs +3 -0
  224. package/dist/renderer-COb3tOPG.mjs +5 -0
  225. package/dist/{renderer-DSpTGqUU.mjs → renderer-CQvmbRQ5.mjs} +3 -3
  226. package/dist/{renderer-DSpTGqUU.mjs.map → renderer-CQvmbRQ5.mjs.map} +1 -1
  227. package/dist/renderer-CSCIzaLy.mjs +5 -0
  228. package/dist/{renderer-D7Kk7VxM.mjs → renderer-CYC32bDW.mjs} +3 -3
  229. package/dist/{renderer-D7Kk7VxM.mjs.map → renderer-CYC32bDW.mjs.map} +1 -1
  230. package/dist/{renderer-Ci9x2WUd.mjs → renderer-CcvvoKiZ.mjs} +3 -3
  231. package/dist/{renderer-Ci9x2WUd.mjs.map → renderer-CcvvoKiZ.mjs.map} +1 -1
  232. package/dist/{renderer-DTgO5LPf.mjs → renderer-CiQhD8Gg.mjs} +3 -3
  233. package/dist/{renderer-DTgO5LPf.mjs.map → renderer-CiQhD8Gg.mjs.map} +1 -1
  234. package/dist/renderer-CmI4c8MS.mjs +5 -0
  235. package/dist/{renderer-BlVmbzPs.mjs → renderer-CpUJBOfb.mjs} +2 -2
  236. package/dist/renderer-CqVltdX9.mjs +5 -0
  237. package/dist/{renderer-LY2MiIj0.mjs → renderer-CwFqqpWY.mjs} +3 -3
  238. package/dist/{renderer-LY2MiIj0.mjs.map → renderer-CwFqqpWY.mjs.map} +1 -1
  239. package/dist/renderer-D-FpMzLY.mjs +5 -0
  240. package/dist/renderer-D-Oyn9mG.mjs +5 -0
  241. package/dist/renderer-D2QrkA8_.mjs +5 -0
  242. package/dist/{renderer-D7Cu9OZx.mjs → renderer-D47AEJE_.mjs} +2 -2
  243. package/dist/{renderer-D7Cu9OZx.mjs.map → renderer-D47AEJE_.mjs.map} +1 -1
  244. package/dist/{renderer-DPn2DhMU.mjs → renderer-D61B9bXF.mjs} +2 -2
  245. package/dist/{renderer-DPn2DhMU.mjs.map → renderer-D61B9bXF.mjs.map} +1 -1
  246. package/dist/renderer-D64r4iN-.mjs +5 -0
  247. package/dist/{renderer-CUq2qgyc.mjs → renderer-D7Al3_-5.mjs} +3 -3
  248. package/dist/{renderer-CUq2qgyc.mjs.map → renderer-D7Al3_-5.mjs.map} +1 -1
  249. package/dist/{renderer-CyWRvKUI.mjs → renderer-D7r6onRT.mjs} +2 -2
  250. package/dist/{renderer-CyWRvKUI.mjs.map → renderer-D7r6onRT.mjs.map} +1 -1
  251. package/dist/{renderer-DxHICEk3.mjs → renderer-D8bBHrWC.mjs} +3 -3
  252. package/dist/{renderer-DxHICEk3.mjs.map → renderer-D8bBHrWC.mjs.map} +1 -1
  253. package/dist/renderer-DCq6YkgP.mjs +5 -0
  254. package/dist/{renderer-Dk45W8Zd.mjs → renderer-DDEkFbVI.mjs} +3 -3
  255. package/dist/{renderer-Dk45W8Zd.mjs.map → renderer-DDEkFbVI.mjs.map} +1 -1
  256. package/dist/renderer-DDHG3GdR.mjs +5 -0
  257. package/dist/{renderer-BWlMAacF.mjs → renderer-DEmYyaqj.mjs} +2 -2
  258. package/dist/{renderer-BWlMAacF.mjs.map → renderer-DEmYyaqj.mjs.map} +1 -1
  259. package/dist/{renderer-DRGa6tlX.mjs → renderer-DF-yvIrV.mjs} +2 -2
  260. package/dist/{renderer-DRGa6tlX.mjs.map → renderer-DF-yvIrV.mjs.map} +1 -1
  261. package/dist/{renderer-C-5RNIeX.mjs → renderer-DFzI3yI_.mjs} +2 -2
  262. package/dist/{renderer-C-5RNIeX.mjs.map → renderer-DFzI3yI_.mjs.map} +1 -1
  263. package/dist/{renderer-AMBVtZ_G.mjs → renderer-DIw3UtEU.mjs} +3 -3
  264. package/dist/{renderer-AMBVtZ_G.mjs.map → renderer-DIw3UtEU.mjs.map} +1 -1
  265. package/dist/renderer-DMdNfcud.mjs +6 -0
  266. package/dist/{renderer-DnPzvIHK.mjs → renderer-DMvmf3T2.mjs} +2 -2
  267. package/dist/{renderer-Gw1ICOJ3.mjs → renderer-DNQvOrkY.mjs} +3 -3
  268. package/dist/{renderer-Gw1ICOJ3.mjs.map → renderer-DNQvOrkY.mjs.map} +1 -1
  269. package/dist/{renderer-CP2FOWyJ.mjs → renderer-DO-KbpYZ.mjs} +3 -3
  270. package/dist/{renderer-CP2FOWyJ.mjs.map → renderer-DO-KbpYZ.mjs.map} +1 -1
  271. package/dist/{renderer-cg06hb82.mjs → renderer-DTqDy2m9.mjs} +3 -3
  272. package/dist/{renderer-cg06hb82.mjs.map → renderer-DTqDy2m9.mjs.map} +1 -1
  273. package/dist/{renderer-BXAgUuAq.mjs → renderer-DVCJjVn7.mjs} +2 -2
  274. package/dist/{renderer-BXAgUuAq.mjs.map → renderer-DVCJjVn7.mjs.map} +1 -1
  275. package/dist/{renderer-D6X9vWkN.mjs → renderer-DX41niRU.mjs} +2 -2
  276. package/dist/{renderer-D6X9vWkN.mjs.map → renderer-DX41niRU.mjs.map} +1 -1
  277. package/dist/{renderer-D3K9FEQk.mjs → renderer-DXEWbnRF.mjs} +3 -3
  278. package/dist/{renderer-D3K9FEQk.mjs.map → renderer-DXEWbnRF.mjs.map} +1 -1
  279. package/dist/renderer-DZQXZ4lK.mjs +5 -0
  280. package/dist/{renderer-CiMIftlS.mjs → renderer-DbRZe0Re.mjs} +3 -3
  281. package/dist/{renderer-CiMIftlS.mjs.map → renderer-DbRZe0Re.mjs.map} +1 -1
  282. package/dist/renderer-DczJJLA1.mjs +5 -0
  283. package/dist/renderer-DfqJj9oe.mjs +5 -0
  284. package/dist/renderer-DgO9ihVJ.mjs +5 -0
  285. package/dist/renderer-DhgnQZYb.mjs +5 -0
  286. package/dist/{renderer-CrgfMDbh.mjs → renderer-DiY70S8S.mjs} +3 -3
  287. package/dist/{renderer-CrgfMDbh.mjs.map → renderer-DiY70S8S.mjs.map} +1 -1
  288. package/dist/renderer-DjxKjHMf.mjs +5 -0
  289. package/dist/{renderer-Br4UZvfL.mjs → renderer-DkRSZg5g.mjs} +3 -3
  290. package/dist/{renderer-Br4UZvfL.mjs.map → renderer-DkRSZg5g.mjs.map} +1 -1
  291. package/dist/{renderer-CCSzKnvs.mjs → renderer-DmkWrWAk.mjs} +2 -2
  292. package/dist/{renderer-CCSzKnvs.mjs.map → renderer-DmkWrWAk.mjs.map} +1 -1
  293. package/dist/{renderer-D2JOseb1.mjs → renderer-DpruWmZU.mjs} +2 -2
  294. package/dist/{renderer-D2JOseb1.mjs.map → renderer-DpruWmZU.mjs.map} +1 -1
  295. package/dist/renderer-DqLA5cdR.mjs +5 -0
  296. package/dist/{renderer-DxbFjINv.mjs → renderer-DqvoMLca.mjs} +3 -3
  297. package/dist/{renderer-DxbFjINv.mjs.map → renderer-DqvoMLca.mjs.map} +1 -1
  298. package/dist/{renderer-BeFiQfzV.mjs → renderer-DsEyjwfT.mjs} +70 -70
  299. package/dist/{renderer-BeFiQfzV.mjs.map → renderer-DsEyjwfT.mjs.map} +1 -1
  300. package/dist/renderer-Dudp6ZlH.mjs +5 -0
  301. package/dist/{renderer-COQc1jn6.mjs → renderer-EaLUCobW.mjs} +2 -2
  302. package/dist/{renderer-COQc1jn6.mjs.map → renderer-EaLUCobW.mjs.map} +1 -1
  303. package/dist/{renderer-BioUC9zE.mjs → renderer-GBmWjBvy.mjs} +2 -2
  304. package/dist/{renderer-BioUC9zE.mjs.map → renderer-GBmWjBvy.mjs.map} +1 -1
  305. package/dist/{renderer-BNzT34UV.mjs → renderer-Lth37j17.mjs} +2 -2
  306. package/dist/{renderer-D-17HVPb.mjs → renderer-SSBL4M1o.mjs} +3 -3
  307. package/dist/{renderer-D-17HVPb.mjs.map → renderer-SSBL4M1o.mjs.map} +1 -1
  308. package/dist/{renderer-C8rxyjaE.mjs → renderer-SWr3vbrV.mjs} +2 -2
  309. package/dist/{renderer-C8rxyjaE.mjs.map → renderer-SWr3vbrV.mjs.map} +1 -1
  310. package/dist/{renderer-LwrcnEtI.mjs → renderer-WCZu2Rf5.mjs} +3 -3
  311. package/dist/{renderer-LwrcnEtI.mjs.map → renderer-WCZu2Rf5.mjs.map} +1 -1
  312. package/dist/{renderer-BIGILDEA.mjs → renderer-Xv6GfNUI.mjs} +2 -2
  313. package/dist/{renderer-BIGILDEA.mjs.map → renderer-Xv6GfNUI.mjs.map} +1 -1
  314. package/dist/renderer-_jC5KIT1.mjs +5 -0
  315. package/dist/{renderer-DveQQCi8.mjs → renderer-bAKUeHF3.mjs} +3 -3
  316. package/dist/{renderer-DveQQCi8.mjs.map → renderer-bAKUeHF3.mjs.map} +1 -1
  317. package/dist/renderer-cTgAuVmJ.mjs +5 -0
  318. package/dist/{renderer-DGPaKIFf.mjs → renderer-cod5Ona9.mjs} +2 -2
  319. package/dist/{renderer-DgLt0TPo.mjs → renderer-g_vrrAQU.mjs} +2 -2
  320. package/dist/{renderer-DgLt0TPo.mjs.map → renderer-g_vrrAQU.mjs.map} +1 -1
  321. package/dist/{renderer-uorPCWdC.mjs → renderer-hSCfnvaK.mjs} +3 -3
  322. package/dist/{renderer-uorPCWdC.mjs.map → renderer-hSCfnvaK.mjs.map} +1 -1
  323. package/dist/{renderer-BGPnCRFI.mjs → renderer-ktWXVYka.mjs} +3 -3
  324. package/dist/{renderer-BGPnCRFI.mjs.map → renderer-ktWXVYka.mjs.map} +1 -1
  325. package/dist/renderer-nVKDvDLO.mjs +5 -0
  326. package/dist/{renderer-U-12BOhe.mjs → renderer-oKRF4A0M.mjs} +2 -2
  327. package/dist/{renderer-U-12BOhe.mjs.map → renderer-oKRF4A0M.mjs.map} +1 -1
  328. package/dist/{renderer-CsilJwL-.mjs → renderer-pHWEHDnM.mjs} +3 -3
  329. package/dist/{renderer-CsilJwL-.mjs.map → renderer-pHWEHDnM.mjs.map} +1 -1
  330. package/dist/renderer-pZ6_pUo1.mjs +5 -0
  331. package/dist/{renderer-BD00i68i.mjs → renderer-sCovEubT.mjs} +3 -3
  332. package/dist/{renderer-BD00i68i.mjs.map → renderer-sCovEubT.mjs.map} +1 -1
  333. package/dist/{renderer-BdbGTz7z.mjs → renderer-sYSkIUfo.mjs} +3 -3
  334. package/dist/{renderer-BdbGTz7z.mjs.map → renderer-sYSkIUfo.mjs.map} +1 -1
  335. package/dist/{renderer-BLU0PQTB.mjs → renderer-zXPVLRlD.mjs} +3 -3
  336. package/dist/{renderer-BLU0PQTB.mjs.map → renderer-zXPVLRlD.mjs.map} +1 -1
  337. package/dist/{renderers-CP8CFWDs-ywy4xljX.mjs → renderers-CP8CFWDs-DH2oktaC.mjs} +2 -2
  338. package/dist/{renderers-CP8CFWDs-ywy4xljX.mjs.map → renderers-CP8CFWDs-DH2oktaC.mjs.map} +1 -1
  339. package/dist/signals/index.mjs +4 -4
  340. package/dist/{src-B0KFNjj4.mjs → src-CK5rGVbh.mjs} +382 -20
  341. package/dist/src-CK5rGVbh.mjs.map +1 -0
  342. package/package.json +67 -58
  343. package/dist/index-BwRrsP_V.d.mts.map +0 -1
  344. package/dist/index-UDDAfHAF.d.mts.map +0 -1
  345. package/dist/preview-engine/chunk-3U2A3RW4.mjs +0 -5
  346. package/dist/preview-engine/chunk-6E3JSPJN.mjs +0 -1
  347. package/dist/preview-engine/chunk-F4F2UDRX.mjs +0 -1
  348. package/dist/preview-engine/chunk-KFNVUGNN.mjs +0 -1974
  349. package/dist/preview-engine/chunk-PYSBWKIJ.mjs +0 -1
  350. package/dist/preview-engine/chunk-U2IFQMS3.mjs +0 -174
  351. package/dist/preview-engine/renderers-2GMY2ZNK.mjs +0 -1
  352. package/dist/preview-engine/renderers-2QJNKL7Q.mjs +0 -1
  353. package/dist/preview-engine/renderers-3OYU6O6F.mjs +0 -1
  354. package/dist/preview-engine/renderers-433Y2PCK.mjs +0 -1
  355. package/dist/preview-engine/renderers-4AGPGEL4.mjs +0 -1
  356. package/dist/preview-engine/renderers-54DBHGUW.mjs +0 -1
  357. package/dist/preview-engine/renderers-5M2O55U3.mjs +0 -1
  358. package/dist/preview-engine/renderers-6FVMDEAY.mjs +0 -1
  359. package/dist/preview-engine/renderers-6R7ZJ7DU.mjs +0 -1
  360. package/dist/preview-engine/renderers-75GCMFOD.mjs +0 -1
  361. package/dist/preview-engine/renderers-7LWLUCVQ.mjs +0 -1
  362. package/dist/preview-engine/renderers-BLDENIEV.mjs +0 -1
  363. package/dist/preview-engine/renderers-CDB3YK3R.mjs +0 -1
  364. package/dist/preview-engine/renderers-D6D4XDFY.mjs +0 -1
  365. package/dist/preview-engine/renderers-DJVFQZYU.mjs +0 -1
  366. package/dist/preview-engine/renderers-DMXSV7VO.mjs +0 -1
  367. package/dist/preview-engine/renderers-EBMASIOE.mjs +0 -1
  368. package/dist/preview-engine/renderers-F262HDFS.mjs +0 -1
  369. package/dist/preview-engine/renderers-FMXKIF22.mjs +0 -1
  370. package/dist/preview-engine/renderers-GJKSZ6DR.mjs +0 -1
  371. package/dist/preview-engine/renderers-GR3RLYDZ.mjs +0 -1
  372. package/dist/preview-engine/renderers-GT3W2QIA.mjs +0 -1
  373. package/dist/preview-engine/renderers-IHC7HUK3.mjs +0 -1
  374. package/dist/preview-engine/renderers-J56ZGEVM.mjs +0 -1
  375. package/dist/preview-engine/renderers-KYM6352U.mjs +0 -1
  376. package/dist/preview-engine/renderers-LFXX6TWI.mjs +0 -1
  377. package/dist/preview-engine/renderers-NAHUPFPU.mjs +0 -1
  378. package/dist/preview-engine/renderers-NM3FZLHH.mjs +0 -1
  379. package/dist/preview-engine/renderers-NNB4BTJA.mjs +0 -1
  380. package/dist/preview-engine/renderers-OYVQW6QI.mjs +0 -1
  381. package/dist/preview-engine/renderers-P5RIFU3C.mjs +0 -1
  382. package/dist/preview-engine/renderers-QB7HJUTS.mjs +0 -1
  383. package/dist/preview-engine/renderers-QRQVOCDC.mjs +0 -1
  384. package/dist/preview-engine/renderers-QVFHJTZA.mjs +0 -1
  385. package/dist/preview-engine/renderers-R3WQIE4L.mjs +0 -1
  386. package/dist/preview-engine/renderers-SQBVOLG7.mjs +0 -1
  387. package/dist/preview-engine/renderers-TLXMYEDI.mjs +0 -1
  388. package/dist/preview-engine/renderers-X4S3WELJ.mjs +0 -1
  389. package/dist/preview-engine/renderers-XT7U25I7.mjs +0 -1
  390. package/dist/preview-engine/renderers-XVGLMBB3.mjs +0 -1
  391. package/dist/preview-engine/renderers-YUWU3TQZ.mjs +0 -1
  392. package/dist/preview-engine/renderers-ZNUD5OVO.mjs +0 -1
  393. package/dist/renderer-01zxT4CK.mjs +0 -5
  394. package/dist/renderer-35LHkj36.mjs +0 -5
  395. package/dist/renderer-B0OIdCGj.mjs +0 -5
  396. package/dist/renderer-B3IPtkK9.mjs +0 -5
  397. package/dist/renderer-BD25uND8.mjs.map +0 -1
  398. package/dist/renderer-BMC39abo.mjs +0 -5
  399. package/dist/renderer-BQj3nlAI.mjs +0 -5
  400. package/dist/renderer-BnBvSmp_.mjs +0 -5
  401. package/dist/renderer-BsDSpTpL.mjs +0 -5
  402. package/dist/renderer-BtW6_gvE.mjs +0 -5
  403. package/dist/renderer-By8U44Rt.mjs +0 -5
  404. package/dist/renderer-C3lDmxuX.mjs +0 -5
  405. package/dist/renderer-C6SZAE_x.mjs +0 -5
  406. package/dist/renderer-CA3IVeZj.mjs +0 -5
  407. package/dist/renderer-CFoCH_mO.mjs +0 -5
  408. package/dist/renderer-CLhZqJF8.mjs +0 -6
  409. package/dist/renderer-CYJXQS8E.mjs +0 -5
  410. package/dist/renderer-C_vj6_WJ.mjs +0 -5
  411. package/dist/renderer-CeqfC6OR.mjs +0 -5
  412. package/dist/renderer-CkZCGMAc.mjs +0 -5
  413. package/dist/renderer-Clxju1r9.mjs +0 -5
  414. package/dist/renderer-Cvz22ZSh.mjs +0 -3
  415. package/dist/renderer-CyWtKBF7.mjs +0 -5
  416. package/dist/renderer-D27STGoB.mjs +0 -5
  417. package/dist/renderer-D78Aq9YK.mjs +0 -5
  418. package/dist/renderer-DHEffABL.mjs +0 -5
  419. package/dist/renderer-DUuNCgzW.mjs +0 -5
  420. package/dist/renderer-DVD5pzRq.mjs +0 -5
  421. package/dist/renderer-Dsp6xDw5.mjs +0 -5
  422. package/dist/renderer-DuC-BFXR.mjs +0 -5
  423. package/dist/renderer-DuWs_Wsv.mjs +0 -5
  424. package/dist/renderer-OSgsiIrW.mjs +0 -5
  425. package/dist/renderer-OZaMFYtZ.mjs +0 -5
  426. package/dist/renderer-T79TmHET.mjs +0 -5
  427. package/dist/renderer-UhsC9oTU.mjs +0 -5
  428. package/dist/renderer-WYZV1jWf.mjs +0 -5
  429. package/dist/renderer-Y7evDjHH.mjs +0 -5
  430. package/dist/renderer-mcePkmUe.mjs +0 -5
  431. package/dist/src-B0KFNjj4.mjs.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import { G as ProgrammaticSignal, K as Signal, Mt as frameArraySignal, N as MediaSignalRecorder, St as createVirtualMedia, pt as appendOperation, rn as mediaSourceTime, tn as mediaSourceRange, y as Effect$1, yn as resolveFrameRequest } from "./dist-BlIrsfcn.mjs";
2
- import { F as getPrimitiveGeometry, K as mediaDecoderCache, N as generateExtrudedTextGeometry, Z as parseSvgPathToSegments, _ as buildShapeSvgPath, gt as Path3D, p as SlugFontCache, q as parseColor$1, z as inputStore } from "./dist-CFe1fC9l.mjs";
3
- import { a as preflightMediaTime, n as decodeAudioSource } from "./dist-BbwtlSZO.mjs";
4
- import { t as FontManager } from "./fonts-C1mgtkCa.mjs";
2
+ import { F as getPrimitiveGeometry, K as mediaDecoderCache, N as generateExtrudedTextGeometry, Z as parseSvgPathToSegments, _ as buildShapeSvgPath, gt as Path3D, p as SlugFontCache, q as parseColor$1, z as inputStore } from "./dist-C1cCW7Bt.mjs";
3
+ import { a as preflightMediaTime, n as decodeAudioSource } from "./dist-C8Xq3zgx.mjs";
4
+ import { t as FontManager } from "./fonts-BW0pPcvJ.mjs";
5
5
  import { s as TensorPipeline } from "./dist-Buaaj-Ul.mjs";
6
- import { a as COCO17_KEYPOINT_NAMES, d as VisionNode, f as VisionRunner, g as pinNodeToObject, h as pinNodeToLandmark, m as mergeSubjectMask, n as CLIP_SUBJECT, p as analyzeSequence, u as VisionBundle } from "./renderer-BD25uND8.mjs";
7
- import { G as mediaSignalSampler, K as mergeAnimationTracks, N as collectNodeOps, P as compositorToProgram, W as lintComposition, f as LayerAnimation, q as sampleMediaTimeSignal } from "./program-Cq4gP9Dd.mjs";
8
- import { C as effectFactories, H as Dither, I as ColorBalance, K as Iridescence, L as ColorKey, M as CRT, R as Contour, S as Vision, T as Ascii, Y as LayerStyle, _ as SelectiveColor, a as CustomEffect, at as Posterize, b as TileOffset, c as GradientMap, d as Levels, et as OpArt, f as Modulate, g as SSAO, h as Relight3D, ht as Vignette, i as Curves, it as Pixelate, l as HalftoneScreen, m as PBRGlass, nt as Painterly, o as DepthOfField, ot as ProceduralVFX, p as MotionBlur, pt as Toon, q as Kaleidoscope, r as Crop, s as FilmGrain, st as RGBSplit, t as ApplyLUT, u as HighPass, v as ShadowsHighlights, w as Blur, x as UnsharpMask, y as TemporalDeflicker } from "./effects-CCyfjbhZ.mjs";
9
- import { a as HeadlessMediaRenderer, n as renderFrameGrid } from "./renderer-BeFiQfzV.mjs";
6
+ import { _ as pinNodeToObject, a as COCO17_KEYPOINT_NAMES, d as VisionNode, f as VisionRunner, g as pinNodeToLandmark, h as mergeSubjectMask, m as maskObject, n as CLIP_SUBJECT, p as analyzeSequence, u as VisionBundle } from "./renderer-B0piZg9r.mjs";
7
+ import { G as mediaSignalSampler, K as mergeAnimationTracks, N as collectNodeOps, P as compositorToProgram, W as lintComposition, f as LayerAnimation, q as sampleMediaTimeSignal } from "./program-CKpKkllV.mjs";
8
+ import { C as effectFactories, H as Dither, I as ColorBalance, K as Iridescence, L as ColorKey, M as CRT, R as Contour, S as Vision, T as Ascii, Y as LayerStyle, _ as SelectiveColor, a as CustomEffect, at as Posterize, b as TileOffset, c as GradientMap, d as Levels, et as OpArt, f as Modulate, g as SSAO, h as Relight3D, ht as Vignette, i as Curves, it as Pixelate, l as HalftoneScreen, m as PBRGlass, nt as Painterly, o as DepthOfField, ot as ProceduralVFX, p as MotionBlur, pt as Toon, q as Kaleidoscope, r as Crop, s as FilmGrain, st as RGBSplit, t as ApplyLUT, u as HighPass, v as ShadowsHighlights, w as Blur, x as UnsharpMask, y as TemporalDeflicker } from "./effects-CemgqEPv.mjs";
9
+ import { a as HeadlessMediaRenderer, n as renderFrameGrid } from "./renderer-DsEyjwfT.mjs";
10
10
  import { z, z as z$2 } from "zod";
11
11
  import path from "node:path";
12
12
  import fs from "node:fs/promises";
@@ -1337,6 +1337,19 @@ function translatePath(d, dx, dy) {
1337
1337
  /** Frames looked back over to bridge a gap where the person is lost. */
1338
1338
  const HOLD = 24;
1339
1339
  const CACHE_VERSION = 1;
1340
+ let visionSam;
1341
+ let clipVisionIds = 0;
1342
+ /**
1343
+ * SAM lives in `@framefields/vision-sam`, an optional peer (SAM 3's weights are under Meta's SAM License), so it
1344
+ * is imported only when a clip asks for `sam2` or `sam3`.
1345
+ */
1346
+ function loadVisionSam() {
1347
+ visionSam ??= import("@framefields/vision-sam").catch((cause) => {
1348
+ visionSam = void 0;
1349
+ throw new Error("Prompted sam2/sam3 tracking needs the optional @framefields/vision-sam package. Install it next to framefields.", { cause });
1350
+ });
1351
+ return visionSam;
1352
+ }
1340
1353
  /**
1341
1354
  * Vision results for one clip, computed per frame on demand and shared by
1342
1355
  * everything that reads the clip: physics, layout, signals. Unlike the
@@ -1367,6 +1380,20 @@ var ClipVision = class {
1367
1380
  cell;
1368
1381
  queue = Promise.resolve();
1369
1382
  runner;
1383
+ sam2Tracker;
1384
+ sam2Frame = -1;
1385
+ sam3Tracker;
1386
+ sam3Frame = -1;
1387
+ sam;
1388
+ /** Clips walk their source independently, so each owns a decoder (requests to one supersede). */
1389
+ decoderId = `clip-vision#${++clipVisionIds}#`;
1390
+ signalBundle;
1391
+ publishedSignals = /* @__PURE__ */ new Set();
1392
+ signalMaskFrame = -1;
1393
+ /** Masks of `signalMaskFrame` by track ID (0: all tracks merged). */
1394
+ signalMasks = /* @__PURE__ */ new Map();
1395
+ /** Prompted track count per source frame, including frames where every track is absent. */
1396
+ trackCounts = /* @__PURE__ */ new Map();
1370
1397
  cacheLoaded;
1371
1398
  unsaved = 0;
1372
1399
  unsavedSubjects = 0;
@@ -1380,13 +1407,80 @@ var ClipVision = class {
1380
1407
  /** @internal Use `comp.vision(source, options)`. */
1381
1408
  constructor(source, fps, options = {}) {
1382
1409
  this.source = source;
1383
- this.options = options;
1410
+ if (options.sam2 && options.sam3) throw new Error("Choose one prompted backend: sam2 or sam3.");
1411
+ this.options = options.sam2 ? {
1412
+ ...options,
1413
+ sam2: {
1414
+ ...options.sam2,
1415
+ prompts: options.sam2.prompts.map((prompt) => ({
1416
+ ...prompt,
1417
+ points: prompt.points.map((point) => ({ ...point }))
1418
+ }))
1419
+ }
1420
+ } : options.sam3 ? {
1421
+ ...options,
1422
+ sam3: {
1423
+ ...options.sam3,
1424
+ prompts: (options.sam3.prompts ?? (options.sam3.text ? [{
1425
+ frame: 0,
1426
+ text: options.sam3.text
1427
+ }] : [])).map((prompt) => ({
1428
+ ...prompt,
1429
+ ...prompt.points ? { points: prompt.points.map((point) => ({ ...point })) } : {}
1430
+ }))
1431
+ }
1432
+ } : options;
1384
1433
  this.compositionFps = fps;
1385
1434
  this.fps = options.fps ?? fps;
1386
1435
  this.startFrame = Math.round(options.startFrame ?? 0);
1387
1436
  this.trimStartSec = options.trimStartSec ?? 0;
1388
- this.smoothing = Math.max(0, Math.round(options.smoothing ?? 2));
1437
+ this.smoothing = Math.max(0, Math.round(options.smoothing ?? (options.sam2 || options.sam3 ? 0 : 2)));
1389
1438
  this.cell = Math.max(1, Math.round(options.maskCell ?? 8));
1439
+ if (options.sam2 || options.sam3) this.wantSubjects = true;
1440
+ }
1441
+ /** @internal Explicit selections must never fall back to another detected subject. */
1442
+ get exact() {
1443
+ return this.options.sam2 !== void 0 || this.options.sam3 !== void 0;
1444
+ }
1445
+ /** Object, mask and optional pose signals on the composition clock, in source geometry. */
1446
+ get signals() {
1447
+ this.keepSubjects();
1448
+ this.signalBundle ??= new VisionBundle({
1449
+ fps: this.compositionFps,
1450
+ totalFrames: Number.MAX_SAFE_INTEGER,
1451
+ maskSource: (frame) => this.trackIds(frame).flatMap((id) => {
1452
+ const mask = this.maskAt(frame, id);
1453
+ return mask && mask.area > 0 ? [mask] : [];
1454
+ }),
1455
+ matteSource: (frame) => {
1456
+ const mask = this.maskAt(frame);
1457
+ return mask ? {
1458
+ mask: mask.mask,
1459
+ width: mask.width,
1460
+ height: mask.height,
1461
+ coverage: mask.coverage
1462
+ } : void 0;
1463
+ }
1464
+ });
1465
+ return this.signalBundle;
1466
+ }
1467
+ decoder() {
1468
+ return mediaDecoderCache.getVideo(this.source, true, this.decoderId);
1469
+ }
1470
+ /** Free inference sessions and the decoder. Analysed frames remain readable; later frames replay memory. */
1471
+ release() {
1472
+ mediaDecoderCache.clearNode(this.decoderId);
1473
+ this.sam2Tracker?.release();
1474
+ this.sam2Tracker = void 0;
1475
+ this.sam2Frame = -1;
1476
+ this.sam3Tracker?.release();
1477
+ this.sam3Tracker = void 0;
1478
+ this.sam3Frame = -1;
1479
+ this.runner?.close();
1480
+ this.runner = void 0;
1481
+ this.signalMaskFrame = -1;
1482
+ this.signalMasks.clear();
1483
+ this.publishedSignals.clear();
1390
1484
  }
1391
1485
  /** The tracked person in source pixels; `.place()` maps it into the composition. */
1392
1486
  get person() {
@@ -1400,13 +1494,22 @@ var ClipVision = class {
1400
1494
  */
1401
1495
  ready(frame, toFrame = frame) {
1402
1496
  const [from, to] = this.window(frame, toFrame);
1403
- this.queue = this.queue.then(() => this.compute(from, to));
1404
- return this.queue;
1497
+ const run$1 = this.queue.then(async () => {
1498
+ try {
1499
+ await this.compute(from, to);
1500
+ } catch (error) {
1501
+ this.release();
1502
+ throw error;
1503
+ }
1504
+ if (this.signalBundle) this.publishSignals(Math.min(frame, toFrame), Math.max(frame, toFrame));
1505
+ });
1506
+ this.queue = run$1.catch(() => void 0);
1507
+ return run$1;
1405
1508
  }
1406
1509
  /** True when composition frame `frame` can be read synchronously. */
1407
1510
  isReady(frame) {
1408
1511
  const [from, to] = this.window(frame, frame);
1409
- for (let c = from; c <= to; c++) if (!this.results.has(c)) return false;
1512
+ for (let c = from; c <= to; c++) if (!this.analysed(c)) return false;
1410
1513
  return true;
1411
1514
  }
1412
1515
  /**
@@ -1424,8 +1527,8 @@ var ClipVision = class {
1424
1527
  */
1425
1528
  subject(frame, fps) {
1426
1529
  const c = frame * this.fps / fps;
1427
- if (!this.options.timeRemap && Math.abs(c - Math.round(c)) > 1e-6) return void 0;
1428
- const sourceFrame = this.options.timeRemap ? Math.floor(c + 1e-6) : Math.round(c);
1530
+ if (!this.exact && !this.options.timeRemap && Math.abs(c - Math.round(c)) > 1e-6) return void 0;
1531
+ const sourceFrame = this.options.timeRemap || this.exact ? Math.floor(c + 1e-6) : Math.round(c);
1429
1532
  const s = this.subjects.get(sourceFrame);
1430
1533
  if (s === void 0) return s;
1431
1534
  if (s === null || !this.sourceWidth) return null;
@@ -1433,7 +1536,7 @@ var ClipVision = class {
1433
1536
  const height = this.sourceHeight;
1434
1537
  return {
1435
1538
  category: s.category,
1436
- mask: decodeRuns(s, width * height),
1539
+ mask: subjectAlpha(s, width * height),
1437
1540
  width,
1438
1541
  height,
1439
1542
  area: s.area,
@@ -1459,7 +1562,17 @@ var ClipVision = class {
1459
1562
  analysed(c) {
1460
1563
  return this.results.has(c) && (!this.wantSubjects || this.subjects.has(c));
1461
1564
  }
1565
+ /** Loads `@framefields/vision-sam` and validates the prompts once, on first use. */
1566
+ prompted() {
1567
+ this.sam ??= loadVisionSam().then((sam) => {
1568
+ if (this.options.sam2) sam.validateSam2Prompts(this.options.sam2.prompts);
1569
+ if (this.options.sam3) sam.validateSam3Prompts(this.options.sam3);
1570
+ return sam;
1571
+ });
1572
+ return this.sam;
1573
+ }
1462
1574
  async compute(from, to) {
1575
+ if (this.exact) await this.prompted();
1463
1576
  this.cacheLoaded ??= this.loadCache();
1464
1577
  await this.cacheLoaded;
1465
1578
  if (this.wantSubjects) {
@@ -1469,6 +1582,14 @@ var ClipVision = class {
1469
1582
  let missing = false;
1470
1583
  for (let c = from; c <= to; c++) if (!this.analysed(c)) missing = true;
1471
1584
  if (!missing) return;
1585
+ if (this.options.sam2) {
1586
+ await this.computeSam2(to);
1587
+ return;
1588
+ }
1589
+ if (this.options.sam3) {
1590
+ await this.computeSam3(to);
1591
+ return;
1592
+ }
1472
1593
  const wantPose = this.options.pose ?? true;
1473
1594
  const wantMask = this.options.mask ?? true;
1474
1595
  this.runner ??= VisionRunner.create({
@@ -1477,7 +1598,7 @@ var ClipVision = class {
1477
1598
  ...this.options.confidence !== void 0 && { confidence: this.options.confidence },
1478
1599
  ...this.options.variant !== void 0 && { variant: this.options.variant }
1479
1600
  });
1480
- const decoder = mediaDecoderCache.getVideo(this.source, true, "clip-vision");
1601
+ const decoder = this.decoder();
1481
1602
  for (let c = from; c <= to; c++) {
1482
1603
  if (this.analysed(c)) continue;
1483
1604
  const image = await decodedPixels(await decoder.getFrame(c / this.fps));
@@ -1532,6 +1653,220 @@ var ClipVision = class {
1532
1653
  if (this.unsaved > 0) await this.saveCache();
1533
1654
  if (this.unsavedSubjects > 0) await this.saveSubjects();
1534
1655
  }
1656
+ async computeSam2(to) {
1657
+ const settings = this.options.sam2;
1658
+ if (!settings) return;
1659
+ const first = settings.prompts[0]?.frame ?? 0;
1660
+ for (let frame = 0; frame < Math.min(first, to + 1); frame++) {
1661
+ this.results.set(frame, {
1662
+ kp: null,
1663
+ mask: null,
1664
+ score: 0
1665
+ });
1666
+ this.subjects.set(frame, null);
1667
+ }
1668
+ if (to < first) return;
1669
+ const decoder = this.decoder();
1670
+ if (!this.sam2Tracker) {
1671
+ const frameCount = Math.max(1, Math.ceil(await decoder.durationSec() * this.fps - 1e-6));
1672
+ if (settings.prompts.some((prompt) => prompt.frame >= frameCount)) throw new Error("SAM 2 prompt frames must be inside the source video.");
1673
+ const { Sam2Tracker } = await this.prompted();
1674
+ this.sam2Tracker = await Sam2Tracker.create({
1675
+ modelsDir: this.options.modelsDir,
1676
+ baseUrl: this.options.baseUrl,
1677
+ frameCount,
1678
+ model: settings.model
1679
+ });
1680
+ this.sam2Frame = first - 1;
1681
+ }
1682
+ for (let frame = this.sam2Frame + 1; frame <= to; frame++) {
1683
+ const image = await decodedPixels(await decoder.getFrame(frame / this.fps));
1684
+ if (!image) throw new Error(`Cannot decode SAM 2 source frame ${frame}.`);
1685
+ if (!this.sourceWidth) this.setSize(image.width, image.height);
1686
+ const prompt = settings.prompts.find((item) => item.frame === frame);
1687
+ const result$1 = await this.sam2Tracker.process(image, frame, prompt?.points);
1688
+ const kp = this.options.pose ? await this.matchedPose(image, result$1.mask) : null;
1689
+ this.storeSamFrame(frame, result$1.width, result$1.height, [result$1], kp);
1690
+ if (this.unsaved >= 24) {
1691
+ await this.saveCache();
1692
+ await this.saveSubjects();
1693
+ }
1694
+ }
1695
+ await this.saveCache();
1696
+ await this.saveSubjects();
1697
+ }
1698
+ async computeSam3(to) {
1699
+ const settings = this.options.sam3;
1700
+ if (!settings) return;
1701
+ const first = settings.prompts[0]?.frame ?? 0;
1702
+ for (let frame = 0; frame < Math.min(first, to + 1); frame++) {
1703
+ this.results.set(frame, {
1704
+ kp: null,
1705
+ mask: null,
1706
+ score: 0
1707
+ });
1708
+ this.subjects.set(frame, null);
1709
+ }
1710
+ if (to < first) return;
1711
+ const decoder = this.decoder();
1712
+ if (!this.sam3Tracker) {
1713
+ const frameCount = Math.max(1, Math.ceil(await decoder.durationSec() * this.fps - 1e-6));
1714
+ if (settings.prompts.some((prompt) => prompt.frame >= frameCount)) throw new Error("SAM 3 prompt frames must be inside the source video.");
1715
+ const { Sam3Tracker } = await this.prompted();
1716
+ this.sam3Tracker = await Sam3Tracker.create({
1717
+ modelsDir: this.options.modelsDir,
1718
+ baseUrl: this.options.baseUrl,
1719
+ frameCount,
1720
+ textThreshold: settings.textThreshold,
1721
+ maxObjects: settings.maxObjects,
1722
+ merge: settings.merge,
1723
+ precision: settings.precision,
1724
+ acceptLicense: this.options.acceptSamLicense ?? this.options.sam3?.acceptLicense
1725
+ });
1726
+ this.sam3Frame = first - 1;
1727
+ }
1728
+ for (let frame = this.sam3Frame + 1; frame <= to; frame++) {
1729
+ const image = await decodedPixels(await decoder.getFrame(frame / this.fps));
1730
+ if (!image) throw new Error(`Cannot decode SAM 3 source frame ${frame}.`);
1731
+ if (!this.sourceWidth) this.setSize(image.width, image.height);
1732
+ const prompt = settings.prompts.find((item) => item.frame === frame);
1733
+ const result$1 = await this.sam3Tracker.process(image, frame, prompt);
1734
+ const kp = this.options.pose ? await this.matchedPose(image, unionMask(result$1.objects, image)) : null;
1735
+ this.storeSamFrame(frame, result$1.width, result$1.height, result$1.objects, kp);
1736
+ if (this.unsaved >= 24) {
1737
+ await this.saveCache();
1738
+ await this.saveSubjects();
1739
+ }
1740
+ }
1741
+ await this.saveCache();
1742
+ await this.saveSubjects();
1743
+ }
1744
+ /** Stores a prompted frame: every track's mask as one label map, the union as the subject. */
1745
+ storeSamFrame(frame, width, height, objects, kp) {
1746
+ const labels = new Uint8Array(width * height);
1747
+ const order = [...objects.keys()].sort((a, b) => (objects[a]?.score ?? 0) - (objects[b]?.score ?? 0));
1748
+ for (const index of order) {
1749
+ const mask = objects[index]?.mask;
1750
+ if (!mask) continue;
1751
+ for (let i = 0; i < mask.length; i++) if ((mask[i] ?? 0) >= 128) labels[i] = index + 1;
1752
+ }
1753
+ const union = Uint8Array.from(labels, (id) => id ? 255 : 0);
1754
+ const grid = new Uint8Array(this.cellW * this.cellH);
1755
+ downsampleMean(union, width, height, this.cell, grid, this.cellW, this.cellH);
1756
+ let area$1 = 0;
1757
+ for (const id of labels) if (id) area$1++;
1758
+ const scores = objects.map((o) => 1 / (1 + Math.exp(-o.score)));
1759
+ this.results.set(frame, {
1760
+ kp,
1761
+ mask: grid,
1762
+ score: Math.max(0, ...scores)
1763
+ });
1764
+ this.subjects.set(frame, area$1 > 0 ? {
1765
+ category: this.samCategory(),
1766
+ area: area$1,
1767
+ scores,
1768
+ ...encodeRuns(labels)
1769
+ } : null);
1770
+ this.trackCounts.set(frame, objects.length);
1771
+ this.blurred.delete(frame);
1772
+ if (this.options.sam3) this.sam3Frame = frame;
1773
+ else this.sam2Frame = frame;
1774
+ this.unsaved++;
1775
+ this.unsavedSubjects++;
1776
+ }
1777
+ samCategory() {
1778
+ return this.options.sam2?.category ?? this.options.sam3?.category ?? "object";
1779
+ }
1780
+ async matchedPose(image, mask) {
1781
+ this.runner ??= VisionRunner.create({
1782
+ modelsDir: this.options.modelsDir,
1783
+ baseUrl: this.options.baseUrl,
1784
+ variant: this.options.variant
1785
+ });
1786
+ const { people } = await this.runner.pose(image);
1787
+ const match = people.map((person) => ({
1788
+ person,
1789
+ overlap: person.keypoints.reduce((sum, point) => {
1790
+ const x = Math.max(0, Math.min(image.width - 1, Math.round(point.x)));
1791
+ return sum + (mask[Math.max(0, Math.min(image.height - 1, Math.round(point.y))) * image.width + x] ?? 0) / 255 * point.visibility;
1792
+ }, 0)
1793
+ })).sort((a, b) => b.overlap - a.overlap)[0];
1794
+ if (!match || match.overlap < 2) return null;
1795
+ return Float32Array.from(match.person.keypoints.flatMap((point) => [
1796
+ point.x,
1797
+ point.y,
1798
+ point.visibility
1799
+ ]));
1800
+ }
1801
+ /** Track IDs at a composition frame: every prompted track, else the one subject. */
1802
+ trackIds(frame) {
1803
+ const c = Math.max(0, Math.floor(this.clipFrame(frame)));
1804
+ const count = this.subjects.get(c)?.scores?.length ?? this.trackCounts.get(c) ?? 1;
1805
+ return Array.from({ length: count }, (_, i) => i + 1);
1806
+ }
1807
+ /** The subject (all tracks merged) or, with `id`, one track's mask, in source pixels. */
1808
+ maskAt(frame, id) {
1809
+ const c = Math.max(0, Math.floor(this.clipFrame(frame)));
1810
+ if (this.signalMaskFrame !== c) {
1811
+ this.signalMaskFrame = c;
1812
+ this.signalMasks.clear();
1813
+ }
1814
+ const hit = this.signalMasks.get(id ?? 0);
1815
+ if (hit) return hit;
1816
+ if (!this.results.has(c) || !this.sourceWidth) return void 0;
1817
+ const stored = this.subjects.get(c);
1818
+ const size$1 = this.sourceWidth * this.sourceHeight;
1819
+ const data = stored ? subjectAlpha(stored, size$1, id) : new Uint8Array(size$1);
1820
+ let area$1 = stored?.area ?? 0;
1821
+ if (id !== void 0 && stored?.scores) {
1822
+ area$1 = 0;
1823
+ for (const alpha of data) if (alpha) area$1++;
1824
+ }
1825
+ const mask = {
1826
+ category: stored?.category ?? this.samCategory(),
1827
+ mask: data,
1828
+ width: this.sourceWidth,
1829
+ height: this.sourceHeight,
1830
+ area: area$1,
1831
+ coverage: area$1 / size$1,
1832
+ detectionIndex: (id ?? 1) - 1,
1833
+ trackId: id ?? 1
1834
+ };
1835
+ this.signalMasks.set(id ?? 0, mask);
1836
+ return mask;
1837
+ }
1838
+ publishSignals(from, to) {
1839
+ const bundle = this.signalBundle;
1840
+ if (!bundle || !this.sourceWidth) return;
1841
+ bundle.setFrameSize(this.sourceWidth, this.sourceHeight);
1842
+ for (let frame = from; frame <= to; frame++) {
1843
+ if (this.publishedSignals.has(frame)) continue;
1844
+ this.publishedSignals.add(frame);
1845
+ const c = Math.max(0, Math.floor(this.clipFrame(frame)));
1846
+ const mask = this.maskAt(frame);
1847
+ if (!mask) continue;
1848
+ const before = bundle.getObjectResult(frame - 1).objects;
1849
+ const scores = this.subjects.get(c)?.scores;
1850
+ const objects = this.trackIds(frame).flatMap((id) => {
1851
+ const track = this.maskAt(frame, id);
1852
+ if (!track) return [];
1853
+ return [maskObject(track, frame, this.compositionFps, scores?.[id - 1] ?? this.results.get(c)?.score ?? 1, before.find((object$1) => object$1.trackId === id))];
1854
+ });
1855
+ bundle.setObjectResult(frame, objects);
1856
+ const object = objects[0] ?? maskObject(mask, frame, this.compositionFps, 0);
1857
+ const kp = this.results.get(c)?.kp;
1858
+ bundle.setPoseResult(frame, { people: kp ? [{
1859
+ score: object.score,
1860
+ boundingBox: object.boundingBox,
1861
+ trackId: 1,
1862
+ keypoints: Array.from({ length: 17 }, (_, i) => ({
1863
+ x: (kp[i * 3] ?? 0) / mask.width,
1864
+ y: (kp[i * 3 + 1] ?? 0) / mask.height,
1865
+ visibility: kp[i * 3 + 2] ?? 0
1866
+ }))
1867
+ }] : [] });
1868
+ }
1869
+ }
1535
1870
  setSize(width, height) {
1536
1871
  this.sourceWidth = width;
1537
1872
  this.sourceHeight = height;
@@ -1591,7 +1926,7 @@ var ClipVision = class {
1591
1926
  c = Math.max(0, c);
1592
1927
  if (this.blurred.has(c)) return this.blurred.get(c) ?? null;
1593
1928
  this.mustHave(c);
1594
- const mask = bridgedMask(this.results, c, this.smoothing);
1929
+ const mask = this.exact ? this.results.get(c)?.mask ?? null : bridgedMask(this.results, c, this.smoothing);
1595
1930
  const grid = mask ? boxBlur(mask, this.cellW, this.cellH, 2) : null;
1596
1931
  this.blurred.set(c, grid);
1597
1932
  return grid;
@@ -1624,6 +1959,7 @@ var ClipVision = class {
1624
1959
  const stat = fs$1.statSync(this.source);
1625
1960
  const dir = this.options.cacheDir ?? process.env.FRAMEFIELDS_VISION_CACHE_DIR ?? path$1.join(os.homedir(), ".cache", "framefields", "vision");
1626
1961
  const o = this.options;
1962
+ const sam = this.exact ? await this.prompted() : void 0;
1627
1963
  const key = JSON.stringify([
1628
1964
  CACHE_VERSION,
1629
1965
  path$1.resolve(this.source),
@@ -1634,7 +1970,17 @@ var ClipVision = class {
1634
1970
  o.mask ?? true,
1635
1971
  this.cell,
1636
1972
  o.variant ?? "s",
1637
- o.confidence ?? null
1973
+ o.confidence ?? null,
1974
+ ...o.sam2 ? [[
1975
+ sam?.sam2Revision(o.sam2.model),
1976
+ o.sam2,
1977
+ 2
1978
+ ]] : [],
1979
+ ...o.sam3 && sam ? [[
1980
+ sam.sam3Revision(await sam.sam3Precision(void 0, o.sam3.precision)),
1981
+ o.sam3,
1982
+ 2
1983
+ ]] : []
1638
1984
  ]);
1639
1985
  const hash = crypto.createHash("sha256").update(key).digest("hex").slice(0, 24);
1640
1986
  fs$1.mkdirSync(dir, { recursive: true });
@@ -1655,6 +2001,7 @@ var ClipVision = class {
1655
2001
  this.setSize(json.width, json.height);
1656
2002
  for (const [c, r] of Object.entries(json.frames)) this.results.set(Number(c), {
1657
2003
  kp: r.kp ? Float32Array.from(r.kp) : null,
2004
+ score: r.score,
1658
2005
  mask: r.mask ? new Uint8Array(Buffer.from(r.mask, "base64")) : null
1659
2006
  });
1660
2007
  } catch {}
@@ -1666,7 +2013,8 @@ var ClipVision = class {
1666
2013
  const frames = {};
1667
2014
  for (const [c, r] of this.results) frames[c] = {
1668
2015
  kp: r.kp ? Array.from(r.kp, (v) => Math.round(v * 100) / 100) : null,
1669
- mask: r.mask ? Buffer.from(r.mask).toString("base64") : null
2016
+ mask: r.mask ? Buffer.from(r.mask).toString("base64") : null,
2017
+ score: r.score
1670
2018
  };
1671
2019
  const fs$1 = await import("node:fs");
1672
2020
  const tmp = `${file}.${process.pid}.tmp`;
@@ -1697,6 +2045,7 @@ var ClipVision = class {
1697
2045
  this.subjects.set(Number(c), s && {
1698
2046
  category: s.category,
1699
2047
  area: s.area,
2048
+ ...s.scores && { scores: s.scores },
1700
2049
  values: new Uint8Array(Buffer.from(s.values, "base64")),
1701
2050
  lengths: new Uint32Array(lengths.buffer.slice(lengths.byteOffset, lengths.byteOffset + lengths.byteLength))
1702
2051
  });
@@ -1711,6 +2060,7 @@ var ClipVision = class {
1711
2060
  for (const [c, s] of this.subjects) frames[c] = s && {
1712
2061
  category: s.category,
1713
2062
  area: s.area,
2063
+ ...s.scores && { scores: s.scores },
1714
2064
  values: Buffer.from(s.values).toString("base64"),
1715
2065
  lengths: Buffer.from(s.lengths.buffer, s.lengths.byteOffset, s.lengths.byteLength).toString("base64")
1716
2066
  };
@@ -1993,6 +2343,18 @@ function boxBlur(src, w, h, r) {
1993
2343
  }
1994
2344
  return dst;
1995
2345
  }
2346
+ /** A stored subject as 0/255 alpha: label maps merge every track, or keep track `id` only. */
2347
+ function subjectAlpha(stored, size$1, id) {
2348
+ const values = decodeRuns(stored, size$1);
2349
+ if (!stored.scores) return values;
2350
+ return values.map((label) => (id === void 0 ? label > 0 : label === id) ? 255 : 0);
2351
+ }
2352
+ /** Every track's mask merged, for matching one pose to the whole selection. */
2353
+ function unionMask(objects, image) {
2354
+ const union = new Uint8Array(image.width * image.height);
2355
+ for (const { mask } of objects) for (let i = 0; i < union.length; i++) union[i] = Math.max(union[i] ?? 0, mask[i] ?? 0);
2356
+ return union;
2357
+ }
1996
2358
 
1997
2359
  //#endregion
1998
2360
  //#region src/media-signals.ts
@@ -9457,4 +9819,4 @@ const Effect = Object.assign(Effect$1, effectFactories, {
9457
9819
 
9458
9820
  //#endregion
9459
9821
  export { glyphAnimator as $, wordRanges as $t, boilKeys as A, squigglePath as At, defineTheme as B, themes as Bt, audioLevelsSchema as C, span as Cn, scaleFrames as Ct, basePropsSchema as D, FRAMEFIELDS_AI_PROXY_URL as Dn, springKeys as Dt, bandEdges as E, ApiError as En, springAt as Et, constantExpression as F, surfaceFill as Ft, elevationStyle as G, transparent as Gt, drawOnKeys as H, toPathData as Ht, contrastRatio as I, targetPoint as It, evaluateEase as J, windowExpression as Jt, ellipsePath as K, typingFrames as Kt, cover as L, targetSchema as Lt, boxPath as M, staggerRanks as Mt, catmullRom as N, stepExpression as Nt, beats as O, ValidationError as On, springSettleFrames as Ot, chain as P, supersede as Pt, frameSpan as Q, wobblePoints as Qt, defineComponent as R, textLayout as Rt, ascending as S, size as Sn, safeArea as St, bakeSamples as T, sup as Tn, smoothRelease as Tt, ease as U, toSeconds as Ut, dist as V, toFrames as Vt, elevate as W, transformPathData as Wt, exitAnimation as X, withDefaults as Xt, evaluateGlyphExpression as Y, withAlpha as Yt, findRange as Z, within as Zt, after as _, italic as _n, resampleBands as _t, Media as a, PhysicsWorld2D as an, last as at, arcPath as b, parseMarkup as bn, rng as bt, section as c, Layer3D as cn, lineShift as ct, analyzeAudio as d, PersonTrack as dn, offsetCues as dt, Styles as en, hashRng as et, KeyBook as f, DEFAULT_CHART_COLORS as fn, parseColor as ft, UNIT_INDEX as g, color as gn, rendererChars as gt, Track as h, code as hn, rangeRects as ht, Light as i, PhysicsBody2D as in, isLight as it, boundsOf as j, staggerOffsets as jt, bind as k, ai as kn, springTrack as kt, bindComponent as l, Particles as ln, luminance as lt, SAFE_INSETS as m, bold as mn, quantize as mt, Effect as n, PhysicsBody3D as nn, holdFirstKeys as nt, blurRegion as o, Lighting as on, lerp2 as ot, MOTION_PRESETS as p, accent as pn, pulseKeys as pt, enterAnimation as q, valueAt as qt, Layer as r, PhysicsWorld3D as rn, inkOn as rt, editTrackedRegion as s, Transition as sn, linePath as st, Composition as t, Physics as tn, hashString as tt, z$2 as u, ClipVision as un, mix as ut, analyzeChannels as v, mark as vn, resolveMotion as vt, bakeFunction as w, sub as wn, scheduleExpression as wt, arrowPaths as x, rich as xn, round as xt, anchorPoint as y, normalizeTextSpans as yn, resolveTarget as yt, defineMeta as z, themeFrames as zt };
9460
- //# sourceMappingURL=src-B0KFNjj4.mjs.map
9822
+ //# sourceMappingURL=src-CK5rGVbh.mjs.map