framefields 2.11.0 → 2.12.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 (493) hide show
  1. package/NOTICE.md +4 -0
  2. package/dist/audio/index.d.mts +4 -4
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-BuCVk1IQ.mjs → audio-DHLoNcxD.mjs} +3 -3
  5. package/dist/{audio-BuCVk1IQ.mjs.map → audio-DHLoNcxD.mjs.map} +1 -1
  6. package/dist/{audio-CYZkDwae.d.mts → audio-afTBdB3U.d.mts} +3 -3
  7. package/dist/{audio-CYZkDwae.d.mts.map → audio-afTBdB3U.d.mts.map} +1 -1
  8. package/dist/cli/check-worker.mjs +45 -45
  9. package/dist/cli.mjs +174 -83
  10. package/dist/cli.mjs.map +1 -1
  11. package/dist/cloud/index.d.mts +14 -3
  12. package/dist/cloud/index.d.mts.map +1 -1
  13. package/dist/cloud/index.mjs +2 -2
  14. package/dist/{cloud-xcfV4J03.mjs → cloud-COid1Ipa.mjs} +169 -16
  15. package/dist/cloud-COid1Ipa.mjs.map +1 -0
  16. package/dist/components/index.d.mts +10 -10
  17. package/dist/components/index.mjs +44 -44
  18. package/dist/{dist-Dg9LMWoX.mjs → dist-2_lT3Dwc.mjs} +2 -2
  19. package/dist/{dist-Dg9LMWoX.mjs.map → dist-2_lT3Dwc.mjs.map} +1 -1
  20. package/dist/{dist-CWLLnigL.mjs → dist-B-OPY7Cs.mjs} +273 -76
  21. package/dist/dist-B-OPY7Cs.mjs.map +1 -0
  22. package/dist/{dist-EQX3TUUl.mjs → dist-BSqeChht.mjs} +3 -3
  23. package/dist/{dist-EQX3TUUl.mjs.map → dist-BSqeChht.mjs.map} +1 -1
  24. package/dist/{dist-CNGv-JTX.mjs → dist-BwtxciN4.mjs} +1 -1
  25. package/dist/dist-CySGkG54.mjs.map +1 -1
  26. package/dist/effects/index.d.mts +5 -5
  27. package/dist/effects/index.mjs +35 -35
  28. package/dist/{effects-DKLbLXF7.mjs → effects-C8CL9cOq.mjs} +2 -2
  29. package/dist/{effects-DKLbLXF7.mjs.map → effects-C8CL9cOq.mjs.map} +1 -1
  30. package/dist/fonts/index.mjs +2 -2
  31. package/dist/{fonts-gPbGbShD.mjs → fonts-BQrDjnpV.mjs} +2 -2
  32. package/dist/{fonts-gPbGbShD.mjs.map → fonts-BQrDjnpV.mjs.map} +1 -1
  33. package/dist/{gpu-CpkJJLQP.mjs → gpu-DHa-3Dou.mjs} +11 -3
  34. package/dist/gpu-DHa-3Dou.mjs.map +1 -0
  35. package/dist/{index-Cro-818i.d.mts → index-BNClElng.d.mts} +592 -516
  36. package/dist/index-BNClElng.d.mts.map +1 -0
  37. package/dist/{index-jSDEM-uE.d.mts → index-CAuNuvIg.d.mts} +5 -5
  38. package/dist/{index-jSDEM-uE.d.mts.map → index-CAuNuvIg.d.mts.map} +1 -1
  39. package/dist/index-COYNQ_mf.d.mts.map +1 -1
  40. package/dist/{index-D2i9J9Zq.d.mts → index-CTv9ZieD.d.mts} +2 -2
  41. package/dist/{index-D2i9J9Zq.d.mts.map → index-CTv9ZieD.d.mts.map} +1 -1
  42. package/dist/{index-C8YwZ6k1.d.mts → index-DQa7mhzq.d.mts} +2 -2
  43. package/dist/{index-C8YwZ6k1.d.mts.map → index-DQa7mhzq.d.mts.map} +1 -1
  44. package/dist/{index-Bly-7YM1.d.mts → index-Drk6HC2k.d.mts} +2 -2
  45. package/dist/{index-Bly-7YM1.d.mts.map → index-Drk6HC2k.d.mts.map} +1 -1
  46. package/dist/{index-BuiZzc6i.d.mts → index-Fliv2Z-w.d.mts} +32 -1
  47. package/dist/index-Fliv2Z-w.d.mts.map +1 -0
  48. package/dist/{index-CEU_Zsb9.d.mts → index-WwuuX8ZJ.d.mts} +24 -22
  49. package/dist/index-WwuuX8ZJ.d.mts.map +1 -0
  50. package/dist/index.d.mts +10 -10
  51. package/dist/index.mjs +52 -52
  52. package/dist/preview/index.d.mts +1 -1
  53. package/dist/preview/index.mjs +10 -10
  54. package/dist/{preview-BToKUTtZ.mjs → preview-BUtt481A.mjs} +2 -2
  55. package/dist/{preview-BToKUTtZ.mjs.map → preview-BUtt481A.mjs.map} +1 -1
  56. package/dist/preview-engine/audio.mjs +1 -1
  57. package/dist/preview-engine/{chunk-QF4JWVO3.mjs → chunk-35XSD4QM.mjs} +15 -15
  58. package/dist/preview-engine/{chunk-ZF2MEFKO.mjs → chunk-3DOIE4DV.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-JDB7PMRI.mjs → chunk-3IT7LHWR.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-DNNGWS2C.mjs → chunk-3MLGWUSK.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-KVOFO273.mjs → chunk-3QJ5GRBH.mjs} +1 -1
  62. package/dist/preview-engine/{chunk-54Q5CKSV.mjs → chunk-3QTHW2CD.mjs} +1 -1
  63. package/dist/preview-engine/chunk-44V4V5LD.mjs +1 -0
  64. package/dist/preview-engine/{chunk-BRV7TQDV.mjs → chunk-4JNIEQS2.mjs} +1 -1
  65. package/dist/preview-engine/chunk-4YT5YJIF.mjs +1 -0
  66. package/dist/preview-engine/{chunk-C4M3B2Q2.mjs → chunk-5SLBE2FX.mjs} +1 -1
  67. package/dist/preview-engine/{chunk-BJXNKMSY.mjs → chunk-64L4GUOF.mjs} +20 -6
  68. package/dist/preview-engine/{chunk-UMJ3VGKN.mjs → chunk-6B3NOY5W.mjs} +1 -1
  69. package/dist/preview-engine/{chunk-VQA4DYZU.mjs → chunk-6O7UDVNL.mjs} +1 -1
  70. package/dist/preview-engine/chunk-74J4DJQA.mjs +1 -0
  71. package/dist/preview-engine/chunk-77MT33VR.mjs +1 -0
  72. package/dist/preview-engine/chunk-A6OAPDIA.mjs +1 -0
  73. package/dist/preview-engine/chunk-ADLIF544.mjs +39 -0
  74. package/dist/preview-engine/{chunk-OLB4TQLQ.mjs → chunk-AKVRG7UU.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-CIVEZJYF.mjs → chunk-CRBOK3JT.mjs} +1 -1
  76. package/dist/preview-engine/chunk-CSLSWUUT.mjs +1 -0
  77. package/dist/preview-engine/{chunk-JSYG6OWZ.mjs → chunk-D7OMXGIZ.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-EPRINA4V.mjs → chunk-E7BKWHOT.mjs} +10 -10
  79. package/dist/preview-engine/{chunk-NOKPBMIP.mjs → chunk-EWDJMJO5.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-5KSBS3AL.mjs → chunk-EYE3GNL5.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-GHTG5XV6.mjs → chunk-EYKN2VET.mjs} +84 -25
  82. package/dist/preview-engine/{chunk-OELPPLML.mjs → chunk-FJTURGJV.mjs} +1 -1
  83. package/dist/preview-engine/{chunk-IKVJ4MW5.mjs → chunk-G4ZTSLZU.mjs} +1 -1
  84. package/dist/preview-engine/{chunk-VZLIRYAL.mjs → chunk-GAMAKN5L.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-65NANVQL.mjs → chunk-HTAHYSCW.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-ZIXPWP2B.mjs → chunk-ICWD36H6.mjs} +1 -1
  87. package/dist/preview-engine/chunk-JAAFSVAG.mjs +1 -0
  88. package/dist/preview-engine/{chunk-RDWLLITE.mjs → chunk-JAUMCOOJ.mjs} +1 -1
  89. package/dist/preview-engine/{chunk-ACBBBOUM.mjs → chunk-KBCZKIIQ.mjs} +1 -1
  90. package/dist/preview-engine/{chunk-YVZTRH4Y.mjs → chunk-KDCM7S3S.mjs} +1 -1
  91. package/dist/preview-engine/chunk-KIPXBOYG.mjs +1974 -0
  92. package/dist/preview-engine/{chunk-6LTINEA4.mjs → chunk-M4QVCQ3O.mjs} +1 -1
  93. package/dist/preview-engine/{chunk-GN3NDRLI.mjs → chunk-NCQHOGZK.mjs} +1 -1
  94. package/dist/preview-engine/{chunk-YKM7JDQY.mjs → chunk-NJO2BIJX.mjs} +1 -1
  95. package/dist/preview-engine/{chunk-7GMHSTRP.mjs → chunk-NTSALWFF.mjs} +1 -1
  96. package/dist/preview-engine/{chunk-PKNUTHPI.mjs → chunk-O75BFM4S.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-VFQH5KVS.mjs → chunk-ONHY4KNY.mjs} +1 -1
  98. package/dist/preview-engine/chunk-PH3UUX6A.mjs +138 -0
  99. package/dist/preview-engine/chunk-PIHG6HJO.mjs +1 -0
  100. package/dist/preview-engine/{chunk-YHMBGJP6.mjs → chunk-QPT2Y2GZ.mjs} +1 -1
  101. package/dist/preview-engine/{chunk-4AGQN53P.mjs → chunk-QXLFTCLC.mjs} +1 -1
  102. package/dist/preview-engine/{chunk-O63FLYWC.mjs → chunk-RGKS6YIA.mjs} +1 -1
  103. package/dist/preview-engine/{chunk-FQL4IJZN.mjs → chunk-RN7J5TRU.mjs} +1 -1
  104. package/dist/preview-engine/{chunk-26XWIHW3.mjs → chunk-RVCLMO5Q.mjs} +1 -1
  105. package/dist/preview-engine/{chunk-TEWRQKX3.mjs → chunk-SFHWP65D.mjs} +1 -1
  106. package/dist/preview-engine/{chunk-EXEO245X.mjs → chunk-TKXOSEIJ.mjs} +1 -1
  107. package/dist/preview-engine/chunk-UKZVUYB6.mjs +483 -0
  108. package/dist/preview-engine/{chunk-EAWJXW4J.mjs → chunk-UVEDFIPN.mjs} +1 -1
  109. package/dist/preview-engine/{chunk-Z24UEN4P.mjs → chunk-VUO4K52B.mjs} +1 -1
  110. package/dist/preview-engine/{chunk-IBPYV6HF.mjs → chunk-W4XR6F5G.mjs} +1 -1
  111. package/dist/preview-engine/{chunk-UI3VH33L.mjs → chunk-WPYWCWWL.mjs} +1 -1
  112. package/dist/preview-engine/{chunk-WFMUDL55.mjs → chunk-YAPGJZPI.mjs} +1 -1
  113. package/dist/preview-engine/{chunk-LMXMBX4J.mjs → chunk-YJ4DSRDY.mjs} +1 -1
  114. package/dist/preview-engine/{chunk-CCORQLMR.mjs → chunk-YOJKIMU5.mjs} +1 -1
  115. package/dist/preview-engine/{chunk-UGB6JKVS.mjs → chunk-ZHNEZZ6A.mjs} +1 -1
  116. package/dist/preview-engine/{chunk-LFNCWMKS.mjs → chunk-ZZMI3WOT.mjs} +1 -1
  117. package/dist/preview-engine/components.mjs +1 -1
  118. package/dist/preview-engine/effects.mjs +1 -1
  119. package/dist/preview-engine/fonts.mjs +1 -1
  120. package/dist/preview-engine/framefields.mjs +1 -1
  121. package/dist/preview-engine/player.mjs +1 -1
  122. package/dist/preview-engine/{renderers-53EI26GL.mjs → renderers-3FZVDYRQ.mjs} +1 -1
  123. package/dist/preview-engine/renderers-3KEBYOOF.mjs +1 -0
  124. package/dist/preview-engine/{renderers-6YVZUQOH.mjs → renderers-4RPQSUUZ.mjs} +1 -1
  125. package/dist/preview-engine/renderers-5EGFXFPF.mjs +1 -0
  126. package/dist/preview-engine/renderers-5SJHYUTM.mjs +1 -0
  127. package/dist/preview-engine/renderers-66MWDUN6.mjs +1 -0
  128. package/dist/preview-engine/{renderers-CCRZNGVK.mjs → renderers-6FENMFSC.mjs} +1 -1
  129. package/dist/preview-engine/renderers-77OXJ2GY.mjs +1 -0
  130. package/dist/preview-engine/renderers-7LI4QKHO.mjs +1 -0
  131. package/dist/preview-engine/{renderers-CYJAVWHT.mjs → renderers-AIZRIW2R.mjs} +1 -1
  132. package/dist/preview-engine/{renderers-OGOW3NA4.mjs → renderers-BDI2BDBA.mjs} +1 -1
  133. package/dist/preview-engine/renderers-BDXCO6NR.mjs +1 -0
  134. package/dist/preview-engine/{renderers-EN7LXJLG.mjs → renderers-BUZ67FNZ.mjs} +1 -1
  135. package/dist/preview-engine/renderers-DMTGKURQ.mjs +1 -0
  136. package/dist/preview-engine/renderers-DU7KPFVV.mjs +1 -0
  137. package/dist/preview-engine/{renderers-WSABL3QO.mjs → renderers-ECXMT5BD.mjs} +1 -1
  138. package/dist/preview-engine/{renderers-MOEC2XZZ.mjs → renderers-EILFSWSJ.mjs} +1 -1
  139. package/dist/preview-engine/{renderers-X6CORAES.mjs → renderers-EVEWFJ7U.mjs} +1 -1
  140. package/dist/preview-engine/renderers-F6PT2LON.mjs +1 -0
  141. package/dist/preview-engine/renderers-F7WPJXKT.mjs +1 -0
  142. package/dist/preview-engine/renderers-FIFF267S.mjs +1 -0
  143. package/dist/preview-engine/{renderers-GQM3KMV3.mjs → renderers-FQISHQEN.mjs} +1 -1
  144. package/dist/preview-engine/{renderers-HKLCB4U6.mjs → renderers-FXAVFNUN.mjs} +1 -1
  145. package/dist/preview-engine/{renderers-P2HORBZ6.mjs → renderers-GITAVRYZ.mjs} +1 -1
  146. package/dist/preview-engine/renderers-GTKRV225.mjs +1 -0
  147. package/dist/preview-engine/{renderers-KCGK33Y2.mjs → renderers-HG6JZIZO.mjs} +1 -1
  148. package/dist/preview-engine/{renderers-I6QKZ7CH.mjs → renderers-HHWMIDN3.mjs} +1 -1
  149. package/dist/preview-engine/renderers-HI3SRJVD.mjs +1 -0
  150. package/dist/preview-engine/{renderers-7CAHX35U.mjs → renderers-HXEDI4BD.mjs} +1 -1
  151. package/dist/preview-engine/{renderers-77PDUMYI.mjs → renderers-HXNSDJBY.mjs} +1 -1
  152. package/dist/preview-engine/{renderers-ACUJMDEK.mjs → renderers-I2ZOUFRU.mjs} +1 -1
  153. package/dist/preview-engine/renderers-JHFD4LHZ.mjs +1 -0
  154. package/dist/preview-engine/{renderers-IHGAWLUF.mjs → renderers-JMSAW7VY.mjs} +1 -1
  155. package/dist/preview-engine/renderers-KGVZUFHD.mjs +1 -0
  156. package/dist/preview-engine/{renderers-RN2MHIFK.mjs → renderers-KICDB5Y6.mjs} +1 -1
  157. package/dist/preview-engine/{renderers-C7SI3NIE.mjs → renderers-KKULMOV4.mjs} +1 -1
  158. package/dist/preview-engine/{renderers-HSFQIILN.mjs → renderers-KMVMPYY7.mjs} +1 -1
  159. package/dist/preview-engine/renderers-L6GFGHS6.mjs +1 -0
  160. package/dist/preview-engine/renderers-LN7WPG6I.mjs +1 -0
  161. package/dist/preview-engine/{renderers-BOBVXYAA.mjs → renderers-LWW4RF6D.mjs} +1 -1
  162. package/dist/preview-engine/renderers-LY57CZZB.mjs +1 -0
  163. package/dist/preview-engine/renderers-MBMJWZEW.mjs +1 -0
  164. package/dist/preview-engine/{renderers-VVP5WQOY.mjs → renderers-MPFU74I3.mjs} +1 -1
  165. package/dist/preview-engine/{renderers-H6PBHEYU.mjs → renderers-MW53LTMB.mjs} +1 -1
  166. package/dist/preview-engine/{renderers-PPZK6VEW.mjs → renderers-NQC4DPX4.mjs} +1 -1
  167. package/dist/preview-engine/{renderers-4IBFDW2S.mjs → renderers-PC2GOZDT.mjs} +1 -1
  168. package/dist/preview-engine/renderers-PREFONJG.mjs +1 -0
  169. package/dist/preview-engine/renderers-PSBTV2DO.mjs +228 -0
  170. package/dist/preview-engine/{renderers-UG2C3C7T.mjs → renderers-Q77UPEYE.mjs} +1 -1
  171. package/dist/preview-engine/renderers-QHXCFDHI.mjs +1 -0
  172. package/dist/preview-engine/renderers-R22CDFO4.mjs +1 -0
  173. package/dist/preview-engine/renderers-RDYJRNAR.mjs +1 -0
  174. package/dist/preview-engine/renderers-RENLKAA7.mjs +1 -0
  175. package/dist/preview-engine/{renderers-5XLGCEOA.mjs → renderers-RIPXT4AL.mjs} +1 -1
  176. package/dist/preview-engine/{renderers-FY2HOQCS.mjs → renderers-SFVFAS3C.mjs} +1 -1
  177. package/dist/preview-engine/{renderers-VIGZYJYX.mjs → renderers-SWQVCJHB.mjs} +1 -1
  178. package/dist/preview-engine/renderers-SZVDZDY7.mjs +1 -0
  179. package/dist/preview-engine/renderers-TEKHQHCL.mjs +1 -0
  180. package/dist/preview-engine/renderers-TS32FDV7.mjs +1 -0
  181. package/dist/preview-engine/renderers-TYSLUZ53.mjs +1 -0
  182. package/dist/preview-engine/renderers-U3RLYFCN.mjs +1 -0
  183. package/dist/preview-engine/{renderers-6LNDAO4B.mjs → renderers-U4IXWMD6.mjs} +1 -1
  184. package/dist/preview-engine/renderers-V5HM6PZ2.mjs +1 -0
  185. package/dist/preview-engine/{renderers-33FCFHDR.mjs → renderers-VUQAZ56P.mjs} +1 -1
  186. package/dist/preview-engine/renderers-W5YFMLSB.mjs +1 -0
  187. package/dist/preview-engine/renderers-XKDWUK56.mjs +1 -0
  188. package/dist/preview-engine/renderers-XKSBNCLZ.mjs +1 -0
  189. package/dist/preview-engine/renderers-XLQXVD37.mjs +1 -0
  190. package/dist/preview-engine/renderers-ZGX3A3QZ.mjs +1 -0
  191. package/dist/preview-engine/signals.mjs +1 -1
  192. package/dist/preview-engine/{src-4IUYUKIZ.mjs → src-GPF7RIBU.mjs} +1 -1
  193. package/dist/{program-Bc860ko5.mjs → program-Cvv_nb9T.mjs} +42 -15
  194. package/dist/program-Cvv_nb9T.mjs.map +1 -0
  195. package/dist/renderer/index.d.mts +1 -1
  196. package/dist/renderer/index.mjs +2 -2
  197. package/dist/renderer--RJepuOy.mjs +5 -0
  198. package/dist/{renderer-Bf4-N7k7.mjs → renderer-4uZGSmUD.mjs} +4 -4
  199. package/dist/{renderer-Bf4-N7k7.mjs.map → renderer-4uZGSmUD.mjs.map} +1 -1
  200. package/dist/{renderer-V4dhrf_h.mjs → renderer-5fGj_tqN.mjs} +4 -4
  201. package/dist/{renderer-V4dhrf_h.mjs.map → renderer-5fGj_tqN.mjs.map} +1 -1
  202. package/dist/{renderer-ByjaseAo.mjs → renderer-6g1ri445.mjs} +4 -4
  203. package/dist/{renderer-ByjaseAo.mjs.map → renderer-6g1ri445.mjs.map} +1 -1
  204. package/dist/{renderer-CR0mDPYY.mjs → renderer-B09I95bo.mjs} +2 -2
  205. package/dist/{renderer-BVKOQarx.d.mts → renderer-B1U6YRRV.d.mts} +22 -4
  206. package/dist/renderer-B1U6YRRV.d.mts.map +1 -0
  207. package/dist/renderer-B4NFnaty.mjs +5 -0
  208. package/dist/renderer-B6g4ts0e.mjs +5 -0
  209. package/dist/{renderer-g_1t2je9.mjs → renderer-BBjkX0Vt.mjs} +2 -2
  210. package/dist/{renderer-DAn9xiQT.mjs → renderer-BC_Nse6h.mjs} +4 -4
  211. package/dist/{renderer-DAn9xiQT.mjs.map → renderer-BC_Nse6h.mjs.map} +1 -1
  212. package/dist/renderer-BGoAr-tl.mjs +5 -0
  213. package/dist/{renderer-_9gbYS-3.mjs → renderer-BJEexai1.mjs} +4 -4
  214. package/dist/{renderer-_9gbYS-3.mjs.map → renderer-BJEexai1.mjs.map} +1 -1
  215. package/dist/{renderer-DcvjSolU.mjs → renderer-BOg8i8eF.mjs} +11 -2
  216. package/dist/{renderer-DcvjSolU.mjs.map → renderer-BOg8i8eF.mjs.map} +1 -1
  217. package/dist/renderer-BSOdBgdE.mjs +5 -0
  218. package/dist/{renderer-4ZUv3X1I.mjs → renderer-BSsKlcHk.mjs} +4 -4
  219. package/dist/{renderer-4ZUv3X1I.mjs.map → renderer-BSsKlcHk.mjs.map} +1 -1
  220. package/dist/{renderer-Cz-n883J.mjs → renderer-BTd6tFcS.mjs} +4 -4
  221. package/dist/{renderer-Cz-n883J.mjs.map → renderer-BTd6tFcS.mjs.map} +1 -1
  222. package/dist/renderer-BU6O0fpM.mjs +5 -0
  223. package/dist/{renderer-D-QVGphn.mjs → renderer-BXGuCnCJ.mjs} +4 -4
  224. package/dist/{renderer-D-QVGphn.mjs.map → renderer-BXGuCnCJ.mjs.map} +1 -1
  225. package/dist/renderer-BZ97iidG.mjs +5 -0
  226. package/dist/renderer-B_Klh1VT.mjs +5 -0
  227. package/dist/renderer-BaWQM1y-.mjs +5 -0
  228. package/dist/renderer-Bc0jvAj0.mjs +5 -0
  229. package/dist/renderer-Bd-NuU3M.mjs +3 -0
  230. package/dist/{renderer-B-CMRUag.mjs → renderer-Bf7Z7WT5.mjs} +3 -3
  231. package/dist/{renderer-B-CMRUag.mjs.map → renderer-Bf7Z7WT5.mjs.map} +1 -1
  232. package/dist/renderer-Bm077kZ6.mjs +5 -0
  233. package/dist/renderer-BtzE_e_Y.mjs +5 -0
  234. package/dist/{renderer-DFJWPqOJ.mjs → renderer-BvRM3OZ6.mjs} +3 -3
  235. package/dist/{renderer-DFJWPqOJ.mjs.map → renderer-BvRM3OZ6.mjs.map} +1 -1
  236. package/dist/{renderer-fwKnV9zs.mjs → renderer-BwJ0nXXu.mjs} +4 -4
  237. package/dist/{renderer-fwKnV9zs.mjs.map → renderer-BwJ0nXXu.mjs.map} +1 -1
  238. package/dist/{renderer-CLAvn9c6.mjs → renderer-BwV-o_1b.mjs} +3 -3
  239. package/dist/{renderer-CLAvn9c6.mjs.map → renderer-BwV-o_1b.mjs.map} +1 -1
  240. package/dist/{renderer-BDZC3o3N.mjs → renderer-Bxiiar50.mjs} +4 -4
  241. package/dist/{renderer-BDZC3o3N.mjs.map → renderer-Bxiiar50.mjs.map} +1 -1
  242. package/dist/{renderer-o68mVeyk.mjs → renderer-ByFPmHBC.mjs} +3 -3
  243. package/dist/{renderer-o68mVeyk.mjs.map → renderer-ByFPmHBC.mjs.map} +1 -1
  244. package/dist/{renderer-D4f8f66C.mjs → renderer-BzTj_CeK.mjs} +4 -4
  245. package/dist/{renderer-D4f8f66C.mjs.map → renderer-BzTj_CeK.mjs.map} +1 -1
  246. package/dist/renderer-C225eCAo.mjs +5 -0
  247. package/dist/{renderer-BNJ6Jk7-.mjs → renderer-C2kFIZ4r.mjs} +3 -3
  248. package/dist/{renderer-BNJ6Jk7-.mjs.map → renderer-C2kFIZ4r.mjs.map} +1 -1
  249. package/dist/{renderer-riIFosX6.mjs → renderer-C3CGYjrC.mjs} +4 -4
  250. package/dist/{renderer-riIFosX6.mjs.map → renderer-C3CGYjrC.mjs.map} +1 -1
  251. package/dist/renderer-CC4fhNup.mjs +3 -0
  252. package/dist/{renderer-B1esRxGy.mjs → renderer-CGpi8CDT.mjs} +4 -4
  253. package/dist/{renderer-B1esRxGy.mjs.map → renderer-CGpi8CDT.mjs.map} +1 -1
  254. package/dist/{renderer-Rw87u1Cr.mjs → renderer-CInMMs5x.mjs} +4 -4
  255. package/dist/{renderer-Rw87u1Cr.mjs.map → renderer-CInMMs5x.mjs.map} +1 -1
  256. package/dist/{renderer-COcKhouz.mjs → renderer-CLTRTtQ8.mjs} +4 -4
  257. package/dist/{renderer-COcKhouz.mjs.map → renderer-CLTRTtQ8.mjs.map} +1 -1
  258. package/dist/renderer-CLXdR4vz.mjs +5 -0
  259. package/dist/{renderer-BhsrlGKp.mjs → renderer-CMCmljb0.mjs} +74 -21
  260. package/dist/renderer-CMCmljb0.mjs.map +1 -0
  261. package/dist/{renderer-HDj9Zb-O.mjs → renderer-CN-mCIoI.mjs} +19 -6
  262. package/dist/renderer-CN-mCIoI.mjs.map +1 -0
  263. package/dist/{renderer-Ros7XQg2.mjs → renderer-CNpq7rL-.mjs} +3 -3
  264. package/dist/{renderer-Ros7XQg2.mjs.map → renderer-CNpq7rL-.mjs.map} +1 -1
  265. package/dist/{renderer-B3Dme2es.mjs → renderer-CZClDMgF.mjs} +4 -4
  266. package/dist/{renderer-B3Dme2es.mjs.map → renderer-CZClDMgF.mjs.map} +1 -1
  267. package/dist/{renderer-1uoKiILq.mjs → renderer-C_gR2H3R.mjs} +3 -3
  268. package/dist/{renderer-1uoKiILq.mjs.map → renderer-C_gR2H3R.mjs.map} +1 -1
  269. package/dist/{renderer-88C3QpKL.d.mts → renderer-CcmxR6Fy.d.mts} +2 -2
  270. package/dist/{renderer-88C3QpKL.d.mts.map → renderer-CcmxR6Fy.d.mts.map} +1 -1
  271. package/dist/{renderer-50JEMaVo.mjs → renderer-CiHVnhUk.mjs} +4 -4
  272. package/dist/{renderer-50JEMaVo.mjs.map → renderer-CiHVnhUk.mjs.map} +1 -1
  273. package/dist/renderer-CszM8B3C.mjs +5 -0
  274. package/dist/renderer-Ctp8ZYfk.mjs +5 -0
  275. package/dist/{renderer-JHByuUNb.mjs → renderer-CtpEzVBn.mjs} +3 -3
  276. package/dist/{renderer-JHByuUNb.mjs.map → renderer-CtpEzVBn.mjs.map} +1 -1
  277. package/dist/renderer-CxQdSp8I.mjs +5 -0
  278. package/dist/{renderer-BaIJIfJ6.mjs → renderer-D3QPNBEj.mjs} +4 -4
  279. package/dist/{renderer-BaIJIfJ6.mjs.map → renderer-D3QPNBEj.mjs.map} +1 -1
  280. package/dist/{renderer-Bbxh4N8Y.mjs → renderer-D3YbHjRG.mjs} +73 -73
  281. package/dist/{renderer-Bbxh4N8Y.mjs.map → renderer-D3YbHjRG.mjs.map} +1 -1
  282. package/dist/renderer-D4GMRtDd.mjs +6 -0
  283. package/dist/{renderer-Bx14Wnxl.mjs → renderer-DCMoBppL.mjs} +58 -4
  284. package/dist/renderer-DCMoBppL.mjs.map +1 -0
  285. package/dist/{renderer-sfqZK6L5.mjs → renderer-DEoerd-j.mjs} +4 -4
  286. package/dist/{renderer-sfqZK6L5.mjs.map → renderer-DEoerd-j.mjs.map} +1 -1
  287. package/dist/renderer-DEsGIvTZ.mjs +5 -0
  288. package/dist/{renderer-ynFRJh7G.mjs → renderer-DGXqspB9.mjs} +2 -2
  289. package/dist/renderer-DIaUQ0EP.mjs +5 -0
  290. package/dist/{renderer-DgPn_SOC.mjs → renderer-DKFaVaRJ.mjs} +3 -3
  291. package/dist/{renderer-DgPn_SOC.mjs.map → renderer-DKFaVaRJ.mjs.map} +1 -1
  292. package/dist/{renderer-CrR8Mpxq.mjs → renderer-DL3o_lG1.mjs} +4 -4
  293. package/dist/{renderer-CrR8Mpxq.mjs.map → renderer-DL3o_lG1.mjs.map} +1 -1
  294. package/dist/{renderer-Bxjb0HYU.mjs → renderer-DLaUT6JZ.mjs} +3 -3
  295. package/dist/{renderer-Bxjb0HYU.mjs.map → renderer-DLaUT6JZ.mjs.map} +1 -1
  296. package/dist/renderer-DLjqcNzQ.mjs +5 -0
  297. package/dist/renderer-DMuQZa51.mjs +5 -0
  298. package/dist/{renderer-Co6UFbZB.mjs → renderer-DO1SZ5xY.mjs} +4 -4
  299. package/dist/{renderer-Co6UFbZB.mjs.map → renderer-DO1SZ5xY.mjs.map} +1 -1
  300. package/dist/{renderer-B6Oeahe_.mjs → renderer-DO_zXwMJ.mjs} +3 -3
  301. package/dist/{renderer-B6Oeahe_.mjs.map → renderer-DO_zXwMJ.mjs.map} +1 -1
  302. package/dist/renderer-DOgi2aF2.mjs +5 -0
  303. package/dist/{renderer-BSELd5vU.mjs → renderer-DP9ScNM6.mjs} +3 -3
  304. package/dist/{renderer-BSELd5vU.mjs.map → renderer-DP9ScNM6.mjs.map} +1 -1
  305. package/dist/{renderer-DOkbn1ot.mjs → renderer-DQJHjU0L.mjs} +4 -4
  306. package/dist/{renderer-DOkbn1ot.mjs.map → renderer-DQJHjU0L.mjs.map} +1 -1
  307. package/dist/renderer-DSh7cvi4.mjs +5 -0
  308. package/dist/renderer-DV1LVBBP.mjs +5 -0
  309. package/dist/{renderer-BJ-7WRgO.mjs → renderer-DX60Kr20.mjs} +3 -3
  310. package/dist/{renderer-BJ-7WRgO.mjs.map → renderer-DX60Kr20.mjs.map} +1 -1
  311. package/dist/{renderer-DLPhfwbR.mjs → renderer-DZIxduEt.mjs} +3 -3
  312. package/dist/{renderer-DLPhfwbR.mjs.map → renderer-DZIxduEt.mjs.map} +1 -1
  313. package/dist/{renderer-TKZCA0B9.mjs → renderer-DaLy1dFA.mjs} +208 -69
  314. package/dist/renderer-DaLy1dFA.mjs.map +1 -0
  315. package/dist/{renderer-DaXQgGg3.mjs → renderer-DaY04IyU.mjs} +4 -4
  316. package/dist/{renderer-DaXQgGg3.mjs.map → renderer-DaY04IyU.mjs.map} +1 -1
  317. package/dist/{renderer-Dpl6poqD.mjs → renderer-Dak_wVh9.mjs} +2 -2
  318. package/dist/{renderer-Dpl6poqD.mjs.map → renderer-Dak_wVh9.mjs.map} +1 -1
  319. package/dist/renderer-Dhrj2bJz.mjs +5 -0
  320. package/dist/{renderer-celhuAL7.mjs → renderer-Dj54y3h3.mjs} +3 -3
  321. package/dist/{renderer-celhuAL7.mjs.map → renderer-Dj54y3h3.mjs.map} +1 -1
  322. package/dist/renderer-DoFUu1R4.mjs +5 -0
  323. package/dist/{renderer-RvI3qRUI.mjs → renderer-Dp9FQKVP.mjs} +4 -4
  324. package/dist/{renderer-RvI3qRUI.mjs.map → renderer-Dp9FQKVP.mjs.map} +1 -1
  325. package/dist/{renderer-KKk7myX1.mjs → renderer-DrK6pyfz.mjs} +4 -4
  326. package/dist/{renderer-KKk7myX1.mjs.map → renderer-DrK6pyfz.mjs.map} +1 -1
  327. package/dist/{renderer-BURhYcpA.mjs → renderer-DrL3J9ci.mjs} +3 -3
  328. package/dist/{renderer-BURhYcpA.mjs.map → renderer-DrL3J9ci.mjs.map} +1 -1
  329. package/dist/{renderer-BOrMBwQS.mjs → renderer-DsPLMzy1.mjs} +2 -2
  330. package/dist/{renderer-BOrMBwQS.mjs.map → renderer-DsPLMzy1.mjs.map} +1 -1
  331. package/dist/renderer-DsydX3cx.mjs +5 -0
  332. package/dist/{renderer-D06HxSXO.mjs → renderer-DwH5e3hx.mjs} +2 -2
  333. package/dist/renderer-DxVSoeYi.mjs +5 -0
  334. package/dist/{renderer-BQetXCcZ.mjs → renderer-Dy1xQOTu.mjs} +3 -3
  335. package/dist/{renderer-BQetXCcZ.mjs.map → renderer-Dy1xQOTu.mjs.map} +1 -1
  336. package/dist/{renderer-CxGx1Lhi.mjs → renderer-FvvywNvv.mjs} +3 -3
  337. package/dist/{renderer-CxGx1Lhi.mjs.map → renderer-FvvywNvv.mjs.map} +1 -1
  338. package/dist/{renderer-DE9Jik9K.mjs → renderer-HXw4cJZx.mjs} +3 -3
  339. package/dist/{renderer-DE9Jik9K.mjs.map → renderer-HXw4cJZx.mjs.map} +1 -1
  340. package/dist/{renderer-CU8v-LxD.mjs → renderer-HhJPFidU.mjs} +4 -4
  341. package/dist/{renderer-CU8v-LxD.mjs.map → renderer-HhJPFidU.mjs.map} +1 -1
  342. package/dist/{renderer-BwrfKKqw.mjs → renderer-IAffbHXx.mjs} +3 -3
  343. package/dist/{renderer-BwrfKKqw.mjs.map → renderer-IAffbHXx.mjs.map} +1 -1
  344. package/dist/{renderer-fs8f1QeE.mjs → renderer-LrAldCWN.mjs} +4 -4
  345. package/dist/{renderer-fs8f1QeE.mjs.map → renderer-LrAldCWN.mjs.map} +1 -1
  346. package/dist/renderer-Nc9bHb0n.mjs +5 -0
  347. package/dist/{renderer-h62QaJYz.mjs → renderer-O4y02xkD.mjs} +3 -3
  348. package/dist/{renderer-h62QaJYz.mjs.map → renderer-O4y02xkD.mjs.map} +1 -1
  349. package/dist/{renderer-eMCTAa9e.mjs → renderer-PnnkUWm-.mjs} +3 -3
  350. package/dist/{renderer-eMCTAa9e.mjs.map → renderer-PnnkUWm-.mjs.map} +1 -1
  351. package/dist/renderer-TFaSD2Db.mjs +5 -0
  352. package/dist/{renderer-jnAIhWn_.mjs → renderer-TiaHrU5z.mjs} +4 -4
  353. package/dist/{renderer-jnAIhWn_.mjs.map → renderer-TiaHrU5z.mjs.map} +1 -1
  354. package/dist/renderer-Z61ctppe.mjs +5 -0
  355. package/dist/{renderer-DkqZmfm8.mjs → renderer-_KIBvES8.mjs} +4 -4
  356. package/dist/{renderer-DkqZmfm8.mjs.map → renderer-_KIBvES8.mjs.map} +1 -1
  357. package/dist/renderer-awXf3sNS.mjs +5 -0
  358. package/dist/{renderer-7ow5Acsg.mjs → renderer-b0H3oDae.mjs} +3 -3
  359. package/dist/{renderer-7ow5Acsg.mjs.map → renderer-b0H3oDae.mjs.map} +1 -1
  360. package/dist/renderer-cHT28oYI.mjs +5 -0
  361. package/dist/renderer-g7Y3bFot.mjs +5 -0
  362. package/dist/{renderer-q7q6k_cD.mjs → renderer-oBgCEqaM.mjs} +3 -3
  363. package/dist/{renderer-q7q6k_cD.mjs.map → renderer-oBgCEqaM.mjs.map} +1 -1
  364. package/dist/{renderer-Bo7shNdU.mjs → renderer-qVJdxbXB.mjs} +4 -4
  365. package/dist/{renderer-Bo7shNdU.mjs.map → renderer-qVJdxbXB.mjs.map} +1 -1
  366. package/dist/renderer-qVv0OzVc.mjs +5 -0
  367. package/dist/{renderer-D0aAZHC7.mjs → renderer-rKw5_EjG.mjs} +3 -3
  368. package/dist/{renderer-D0aAZHC7.mjs.map → renderer-rKw5_EjG.mjs.map} +1 -1
  369. package/dist/{renderer-B1LD29TV.mjs → renderer-sMFJtt_H.mjs} +3 -3
  370. package/dist/{renderer-B1LD29TV.mjs.map → renderer-sMFJtt_H.mjs.map} +1 -1
  371. package/dist/{renderer-C9BSXyrq.mjs → renderer-smP1F57W.mjs} +3 -3
  372. package/dist/{renderer-C9BSXyrq.mjs.map → renderer-smP1F57W.mjs.map} +1 -1
  373. package/dist/{renderer-DwK9jsER.mjs → renderer-snjhPaP-.mjs} +4 -4
  374. package/dist/{renderer-DwK9jsER.mjs.map → renderer-snjhPaP-.mjs.map} +1 -1
  375. package/dist/{renderer-lHNTgiOM.mjs → renderer-t1sXDiqm.mjs} +3 -3
  376. package/dist/{renderer-lHNTgiOM.mjs.map → renderer-t1sXDiqm.mjs.map} +1 -1
  377. package/dist/{renderer-CAWnCsQc.mjs → renderer-tRi3KNoG.mjs} +4 -4
  378. package/dist/{renderer-CAWnCsQc.mjs.map → renderer-tRi3KNoG.mjs.map} +1 -1
  379. package/dist/{renderer-BNHcwxw9.mjs → renderer-uA0UCxjA.mjs} +3 -3
  380. package/dist/{renderer-BNHcwxw9.mjs.map → renderer-uA0UCxjA.mjs.map} +1 -1
  381. package/dist/{renderer-pNmI-A9o.mjs → renderer-xNOKSN3V.mjs} +4 -4
  382. package/dist/{renderer-pNmI-A9o.mjs.map → renderer-xNOKSN3V.mjs.map} +1 -1
  383. package/dist/{renderers-CP8CFWDs-DRoslK4F.mjs → renderers-CP8CFWDs-DWRjjeUg.mjs} +3 -3
  384. package/dist/{renderers-CP8CFWDs-DRoslK4F.mjs.map → renderers-CP8CFWDs-DWRjjeUg.mjs.map} +1 -1
  385. package/dist/sam/index.d.mts +2 -2
  386. package/dist/sam/index.mjs +1 -1
  387. package/dist/signals/index.d.mts +5 -5
  388. package/dist/signals/index.mjs +5 -5
  389. package/dist/{src-Bnr8DUC--BRDqRF6I.mjs → src-BU6vm9sP-DFJ3phW0.mjs} +74 -9
  390. package/dist/src-BU6vm9sP-DFJ3phW0.mjs.map +1 -0
  391. package/dist/{src-BYp6r-cS.mjs → src-D7M8VTzv.mjs} +248 -28
  392. package/dist/src-D7M8VTzv.mjs.map +1 -0
  393. package/package.json +59 -59
  394. package/dist/cloud-xcfV4J03.mjs.map +0 -1
  395. package/dist/dist-CWLLnigL.mjs.map +0 -1
  396. package/dist/gpu-CpkJJLQP.mjs.map +0 -1
  397. package/dist/index-BuiZzc6i.d.mts.map +0 -1
  398. package/dist/index-CEU_Zsb9.d.mts.map +0 -1
  399. package/dist/index-Cro-818i.d.mts.map +0 -1
  400. package/dist/preview-engine/chunk-4FY4TNST.mjs +0 -1
  401. package/dist/preview-engine/chunk-7LDSMOO3.mjs +0 -1
  402. package/dist/preview-engine/chunk-AGAZJZWI.mjs +0 -1
  403. package/dist/preview-engine/chunk-BXPM5SJ3.mjs +0 -1
  404. package/dist/preview-engine/chunk-CIVJXFWH.mjs +0 -4
  405. package/dist/preview-engine/chunk-D73ZKPFN.mjs +0 -138
  406. package/dist/preview-engine/chunk-KOVN277Z.mjs +0 -1
  407. package/dist/preview-engine/chunk-M4QANUJI.mjs +0 -480
  408. package/dist/preview-engine/chunk-XF6DYP6B.mjs +0 -1974
  409. package/dist/preview-engine/chunk-XYGDTPO7.mjs +0 -39
  410. package/dist/preview-engine/chunk-YGKO4NIU.mjs +0 -1
  411. package/dist/preview-engine/renderers-2NGIILMI.mjs +0 -1
  412. package/dist/preview-engine/renderers-466Z77BH.mjs +0 -1
  413. package/dist/preview-engine/renderers-4KRENGZA.mjs +0 -1
  414. package/dist/preview-engine/renderers-4W52BQEU.mjs +0 -1
  415. package/dist/preview-engine/renderers-55PRAS7G.mjs +0 -1
  416. package/dist/preview-engine/renderers-5LLYINHW.mjs +0 -1
  417. package/dist/preview-engine/renderers-63N3Y2XO.mjs +0 -1
  418. package/dist/preview-engine/renderers-6ROVFDIN.mjs +0 -1
  419. package/dist/preview-engine/renderers-A4RVLPMG.mjs +0 -1
  420. package/dist/preview-engine/renderers-A53P4J6O.mjs +0 -1
  421. package/dist/preview-engine/renderers-AFJ3373L.mjs +0 -1
  422. package/dist/preview-engine/renderers-ATFWTA3U.mjs +0 -1
  423. package/dist/preview-engine/renderers-BPYJXHBU.mjs +0 -1
  424. package/dist/preview-engine/renderers-D3ZF7FXT.mjs +0 -1
  425. package/dist/preview-engine/renderers-D7YN6B4B.mjs +0 -1
  426. package/dist/preview-engine/renderers-DBLASKF5.mjs +0 -1
  427. package/dist/preview-engine/renderers-DC5ZYYHM.mjs +0 -1
  428. package/dist/preview-engine/renderers-J6ZEXW5L.mjs +0 -1
  429. package/dist/preview-engine/renderers-JV4MF46Q.mjs +0 -1
  430. package/dist/preview-engine/renderers-KQKH4ZIX.mjs +0 -1
  431. package/dist/preview-engine/renderers-MDHPQY6D.mjs +0 -1
  432. package/dist/preview-engine/renderers-MEITHN4N.mjs +0 -1
  433. package/dist/preview-engine/renderers-MN3HSBTJ.mjs +0 -1
  434. package/dist/preview-engine/renderers-NTG3QGNH.mjs +0 -1
  435. package/dist/preview-engine/renderers-OU4SFMB2.mjs +0 -1
  436. package/dist/preview-engine/renderers-P6TIBJIG.mjs +0 -1
  437. package/dist/preview-engine/renderers-POJWQ7L3.mjs +0 -1
  438. package/dist/preview-engine/renderers-RJ7S6VHD.mjs +0 -1
  439. package/dist/preview-engine/renderers-RJJAJZYN.mjs +0 -1
  440. package/dist/preview-engine/renderers-UEQ733VK.mjs +0 -1
  441. package/dist/preview-engine/renderers-ULO2AW2U.mjs +0 -1
  442. package/dist/preview-engine/renderers-UPVHGHCK.mjs +0 -1
  443. package/dist/preview-engine/renderers-UZHSNNIM.mjs +0 -1
  444. package/dist/preview-engine/renderers-V5KWZL2C.mjs +0 -1
  445. package/dist/preview-engine/renderers-WL372W36.mjs +0 -228
  446. package/dist/preview-engine/renderers-YMXKYOHQ.mjs +0 -1
  447. package/dist/preview-engine/renderers-YWDAZ2NZ.mjs +0 -1
  448. package/dist/program-Bc860ko5.mjs.map +0 -1
  449. package/dist/renderer--Ymc_4XJ.mjs +0 -5
  450. package/dist/renderer-B-OdV-eq.mjs +0 -5
  451. package/dist/renderer-B65fwoA2.mjs +0 -5
  452. package/dist/renderer-B92Ahkcv.mjs +0 -5
  453. package/dist/renderer-B9z2AK31.mjs +0 -5
  454. package/dist/renderer-BIF3Dg3Z.mjs +0 -5
  455. package/dist/renderer-BJUVaIAT.mjs +0 -5
  456. package/dist/renderer-BKRDMbI-.mjs +0 -5
  457. package/dist/renderer-BSwhyVWa.mjs +0 -5
  458. package/dist/renderer-BUqSZn2X.mjs +0 -5
  459. package/dist/renderer-BVKOQarx.d.mts.map +0 -1
  460. package/dist/renderer-BbmvjqK9.mjs +0 -3
  461. package/dist/renderer-BhsrlGKp.mjs.map +0 -1
  462. package/dist/renderer-Bpe4k_x6.mjs +0 -5
  463. package/dist/renderer-Bx14Wnxl.mjs.map +0 -1
  464. package/dist/renderer-C1NjG0CJ.mjs +0 -5
  465. package/dist/renderer-C7Puyst9.mjs +0 -5
  466. package/dist/renderer-CGA_7320.mjs +0 -5
  467. package/dist/renderer-CLnFkXO7.mjs +0 -5
  468. package/dist/renderer-CMQIT1Kh.mjs +0 -5
  469. package/dist/renderer-CQ1rwjIh.mjs +0 -5
  470. package/dist/renderer-CT8h0boY.mjs +0 -5
  471. package/dist/renderer-Cb0lszt3.mjs +0 -5
  472. package/dist/renderer-Ci7oLye9.mjs +0 -5
  473. package/dist/renderer-CjqXB3CZ.mjs +0 -5
  474. package/dist/renderer-CqTV04zQ.mjs +0 -5
  475. package/dist/renderer-CtWeRtHK.mjs +0 -5
  476. package/dist/renderer-CzolnwCo.mjs +0 -5
  477. package/dist/renderer-D6qhcx_C.mjs +0 -5
  478. package/dist/renderer-DDfEf0jt.mjs +0 -5
  479. package/dist/renderer-DDpa8ztp.mjs +0 -5
  480. package/dist/renderer-DbQBqzmx.mjs +0 -5
  481. package/dist/renderer-DfUcwMKa.mjs +0 -5
  482. package/dist/renderer-DgIjNANM.mjs +0 -6
  483. package/dist/renderer-Dsh6Tgu0.mjs +0 -3
  484. package/dist/renderer-DuIwR9GT.mjs +0 -5
  485. package/dist/renderer-Dv4u2c14.mjs +0 -5
  486. package/dist/renderer-HDj9Zb-O.mjs.map +0 -1
  487. package/dist/renderer-IE1yu3lZ.mjs +0 -5
  488. package/dist/renderer-PY_wnEN0.mjs +0 -5
  489. package/dist/renderer-TKZCA0B9.mjs.map +0 -1
  490. package/dist/renderer-gv24VyzO.mjs +0 -5
  491. package/dist/renderer-nN6lPZf9.mjs +0 -5
  492. package/dist/src-BYp6r-cS.mjs.map +0 -1
  493. package/dist/src-Bnr8DUC--BRDqRF6I.mjs.map +0 -1
@@ -1,10 +1,125 @@
1
- import { createWriteStream, realpathSync } from "node:fs";
2
- import path from "node:path";
1
+ import { createWriteStream, existsSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
2
+ import path, { join } from "node:path";
3
3
  import fs$1 from "node:fs/promises";
4
4
  import { execFileSync } from "node:child_process";
5
5
  import { Readable } from "node:stream";
6
6
  import { pipeline } from "node:stream/promises";
7
7
 
8
+ //#region src/cli/config.ts
9
+ /**
10
+ * `framefields.json` at the project root: where installed components live,
11
+ * which fonts `framefields add` / `framefields fonts add` installed, and the
12
+ * project's named renders.
13
+ *
14
+ * ```json
15
+ * {
16
+ * "components": "src/components",
17
+ * "renders": {
18
+ * "film": {
19
+ * "title": "Launch film",
20
+ * "entry": "src/film.ts",
21
+ * "export": "buildFilm",
22
+ * "workers": "auto"
23
+ * }
24
+ * }
25
+ * }
26
+ * ```
27
+ *
28
+ * A named render is what `framefields render film --cloud`, `framefields
29
+ * check film`, `renderCloud({ render: "film" })` and the dashboard's New
30
+ * render dialog pick, so nobody chooses files and exports by hand.
31
+ */
32
+ const CONFIG_FILE = "framefields.json";
33
+ const RENDER_NAME = /^[A-Za-z0-9][\w.-]{0,63}$/;
34
+ const IDENTIFIER = /^[A-Za-z_$][\w$]*$/;
35
+ const QUALITIES = [
36
+ "very_low",
37
+ "low",
38
+ "high",
39
+ "very_high"
40
+ ];
41
+ /**
42
+ * The project's config, or the default it would get: `src/components` when
43
+ * there is a `src`. `saved` is whether the file records a components folder.
44
+ */
45
+ function readConfig(cwd) {
46
+ const file = join(cwd, CONFIG_FILE);
47
+ const fallback = existsSync(join(cwd, "src")) ? "src/components" : "components";
48
+ if (!existsSync(file)) return {
49
+ config: { components: fallback },
50
+ saved: false
51
+ };
52
+ let raw;
53
+ try {
54
+ raw = JSON.parse(readFileSync(file, "utf8"));
55
+ } catch (err) {
56
+ throw new Error(`${CONFIG_FILE} is not valid JSON: ${err.message}`);
57
+ }
58
+ if (!isRecord(raw)) throw new Error(`${CONFIG_FILE} must be a JSON object`);
59
+ const { components, fonts, renders } = raw;
60
+ if (components !== void 0 && typeof components !== "string") throw new Error(`${CONFIG_FILE}: "components" must be a directory path`);
61
+ if (fonts !== void 0 && (!isRecord(fonts) || Object.values(fonts).some((v) => typeof v !== "string"))) throw new Error(`${CONFIG_FILE}: "fonts" must map roles to font file paths, e.g. { "emoji": "assets/fonts/NotoColorEmoji.ttf" }`);
62
+ return {
63
+ config: {
64
+ ...raw,
65
+ components: components ?? fallback,
66
+ ...renders !== void 0 && { renders: parseRenders(renders) }
67
+ },
68
+ saved: components !== void 0
69
+ };
70
+ }
71
+ function writeConfig(cwd, config) {
72
+ writeFileSync(join(cwd, CONFIG_FILE), `${JSON.stringify(config, null, " ")}\n`);
73
+ }
74
+ /** Validates the `renders` map; errors name the render and field at fault. */
75
+ function parseRenders(value) {
76
+ if (!isRecord(value)) throw new Error(`${CONFIG_FILE}: "renders" must map names to renders, e.g. { "film": { "entry": "src/film.ts" } }`);
77
+ const out = {};
78
+ for (const [name, spec] of Object.entries(value)) {
79
+ const fail = (message) => {
80
+ throw new Error(`${CONFIG_FILE}: renders.${name} ${message}`);
81
+ };
82
+ if (!RENDER_NAME.test(name)) fail("has an invalid name: use letters, digits, -, _ and . (at most 64)");
83
+ if (!isRecord(spec)) fail("must be an object with an entry");
84
+ const s = spec;
85
+ if (!isRelativePath(s.entry)) fail("needs \"entry\": the module path inside the project, e.g. \"src/film.ts\"");
86
+ if (s.export !== void 0 && !(typeof s.export === "string" && IDENTIFIER.test(s.export))) fail("\"export\" must be a JavaScript identifier");
87
+ for (const key of [
88
+ "title",
89
+ "description",
90
+ "select"
91
+ ]) if (s[key] !== void 0 && typeof s[key] !== "string") fail(`"${key}" must be a string`);
92
+ if (s.workers !== void 0 && s.workers !== "auto" && !isCount(s.workers)) fail("\"workers\" must be \"auto\" or a positive whole number");
93
+ if (s.maxWorkers !== void 0 && !isCount(s.maxWorkers)) fail("\"maxWorkers\" must be a positive whole number");
94
+ if (s.codec !== void 0 && s.codec !== "h264" && s.codec !== "vp9") fail("\"codec\" must be \"h264\" or \"vp9\"");
95
+ if (s.quality !== void 0 && !QUALITIES.includes(s.quality)) fail(`"quality" must be one of ${QUALITIES.join(", ")}`);
96
+ if (s.output !== void 0 && typeof s.output !== "string") fail("\"output\" must be a file path");
97
+ out[name] = s;
98
+ }
99
+ return out;
100
+ }
101
+ /**
102
+ * The named render `name` of the project at `cwd`, or undefined when there
103
+ * is no render by that name (an entry path, say).
104
+ */
105
+ function findRender(cwd, name) {
106
+ const spec = readConfig(cwd).config.renders?.[name];
107
+ return spec && {
108
+ ...spec,
109
+ name
110
+ };
111
+ }
112
+ function isRecord(value) {
113
+ return typeof value === "object" && value !== null && !Array.isArray(value);
114
+ }
115
+ function isCount(value) {
116
+ return typeof value === "number" && Number.isInteger(value) && value >= 1;
117
+ }
118
+ function isRelativePath(value) {
119
+ return typeof value === "string" && value.length > 0 && !value.startsWith("/") && !value.split(/[/\\]/).includes("..");
120
+ }
121
+
122
+ //#endregion
8
123
  //#region src/cloud/git-source.ts
9
124
  /**
10
125
  * Where a cloud render gets the project from: the git repo the working
@@ -86,13 +201,16 @@ function toHttps(url) {
86
201
  * import { renderCloud } from "framefields/cloud";
87
202
  *
88
203
  * const result = await renderCloud({
89
- * entry: "src/film.ts",
90
- * workers: "auto", // split a long film across GPUs; 1 (default) renders on one
204
+ * render: "film", // a render named in framefields.json
91
205
  * outputPath: "output/film.mp4",
92
206
  * onProgress: (s) => console.log(s.status, s.progress.frames),
93
207
  * });
94
208
  * ```
95
209
  *
210
+ * Without a framefields.json, name the module instead: `entry: "src/film.ts"`
211
+ * (and `export`, `workers`, …). Options passed here override the named
212
+ * render's.
213
+ *
96
214
  * `workers: "auto"` probes the film on one worker first, then splits it into
97
215
  * as many chunks as stay efficient: short films stay on one worker, long ones
98
216
  * spread out up to `maxWorkers`. `dryRun: true` returns that plan with the
@@ -119,28 +237,31 @@ const DONE = new Set([
119
237
  async function renderCloud(options) {
120
238
  const api = cloudClient(options);
121
239
  const cwd = options.cwd ?? process.cwd();
240
+ const o = withNamedRender(cwd, options);
122
241
  const resolved = options.source ? {
123
242
  source: options.source,
124
- entry: options.entry,
243
+ entry: o.entry,
125
244
  warnings: []
126
- } : resolveGitSource(cwd, options.entry);
245
+ } : resolveGitSource(cwd, o.entry);
127
246
  const warn = options.onWarning ?? ((m) => process.stderr.write(`framefields: ${m}\n`));
128
247
  for (const w of resolved.warnings) warn(w);
129
248
  let status = await api.start({
130
249
  source: resolved.source,
131
250
  target: {
132
251
  entry: resolved.entry,
133
- export: options.export ?? "buildFilm",
134
- ...options.args !== void 0 && { args: options.args },
135
- ...options.select && { select: [options.select] }
252
+ export: o.export ?? "buildFilm",
253
+ ...o.args !== void 0 && { args: o.args },
254
+ ...o.select && { select: [o.select] }
136
255
  },
137
256
  render: {
138
- codec: options.codec ?? "h264",
139
- ...options.quality && { quality: options.quality }
257
+ codec: o.codec ?? "h264",
258
+ ...o.quality && { quality: o.quality }
140
259
  },
141
- workers: options.workers ?? 1,
142
- ...options.maxWorkers && { max_workers: options.maxWorkers },
143
- dry_run: options.dryRun ?? false
260
+ workers: o.workers ?? 1,
261
+ ...o.maxWorkers && { max_workers: o.maxWorkers },
262
+ dry_run: options.dryRun ?? false,
263
+ ...o.name && { name: o.name },
264
+ ...o.title && { title: o.title }
144
265
  });
145
266
  options.onProgress?.(status);
146
267
  try {
@@ -163,6 +284,38 @@ async function renderCloud(options) {
163
284
  }
164
285
  return status;
165
286
  }
287
+ /**
288
+ * The options with a named render's fields filled in where the caller left
289
+ * them out, plus the name and title the dashboard shows.
290
+ */
291
+ function withNamedRender(cwd, options) {
292
+ if (!options.render) {
293
+ if (!options.entry) throw new CloudRenderError("Name a render from framefields.json (render) or a module (entry).", "invalid_request");
294
+ return {
295
+ ...options,
296
+ entry: options.entry
297
+ };
298
+ }
299
+ const spec = findRender(cwd, options.render);
300
+ if (!spec) {
301
+ const names = Object.keys(readConfig(cwd).config.renders ?? {});
302
+ throw new CloudRenderError(names.length ? `No render named "${options.render}" in ${CONFIG_FILE}. Renders: ${names.join(", ")}.` : `No render named "${options.render}": ${CONFIG_FILE} has no "renders".`, "render_not_found");
303
+ }
304
+ const defined = Object.fromEntries(Object.entries(options).filter(([, v]) => v !== void 0));
305
+ return {
306
+ entry: spec.entry,
307
+ export: spec.export,
308
+ args: spec.args,
309
+ select: spec.select,
310
+ workers: spec.workers,
311
+ maxWorkers: spec.maxWorkers,
312
+ codec: spec.codec,
313
+ quality: spec.quality,
314
+ ...defined,
315
+ name: spec.name,
316
+ title: spec.title ?? spec.name
317
+ };
318
+ }
166
319
  /** The API calls behind `renderCloud`, for callers who track renders themselves. */
167
320
  function cloudClient(options) {
168
321
  const key = options.apiKey ?? process.env.FRAMEFIELDS_API_KEY;
@@ -229,5 +382,5 @@ function sleep(ms, signal) {
229
382
  }
230
383
 
231
384
  //#endregion
232
- export { resolveGitSource as a, renderCloud as i, FRAMEFIELDS_API_URL as n, toHttps as o, cloudClient as r, CloudRenderError as t };
233
- //# sourceMappingURL=cloud-xcfV4J03.mjs.map
385
+ export { withNamedRender as a, CONFIG_FILE as c, writeConfig as d, renderCloud as i, findRender as l, FRAMEFIELDS_API_URL as n, resolveGitSource as o, cloudClient as r, toHttps as s, CloudRenderError as t, readConfig as u };
386
+ //# sourceMappingURL=cloud-COid1Ipa.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-COid1Ipa.mjs","names":["fs","resolve"],"sources":["../src/cli/config.ts","../src/cloud/git-source.ts","../src/cloud/index.ts"],"sourcesContent":["/**\n * `framefields.json` at the project root: where installed components live,\n * which fonts `framefields add` / `framefields fonts add` installed, and the\n * project's named renders.\n *\n * ```json\n * {\n * \"components\": \"src/components\",\n * \"renders\": {\n * \"film\": {\n * \"title\": \"Launch film\",\n * \"entry\": \"src/film.ts\",\n * \"export\": \"buildFilm\",\n * \"workers\": \"auto\"\n * }\n * }\n * }\n * ```\n *\n * A named render is what `framefields render film --cloud`, `framefields\n * check film`, `renderCloud({ render: \"film\" })` and the dashboard's New\n * render dialog pick, so nobody chooses files and exports by hand.\n */\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport const CONFIG_FILE = \"framefields.json\";\n\n/** One renderable piece of the project: an export of a module, with its defaults. */\nexport interface RenderSpec {\n\t/** The module that builds the composition, relative to the project root. */\n\tentry: string;\n\t/** A Composition, or a function returning one. Default `buildFilm`. */\n\texport?: string;\n\t/** Shown in the dashboard and `framefields renders`. Default: the name. */\n\ttitle?: string;\n\tdescription?: string;\n\t/** Passed to the export when it is a function. */\n\targs?: unknown;\n\t/** When the export returns several compositions, the one to render. */\n\tselect?: string;\n\t/** Cloud workers: 1, a number, or \"auto\" to split long films. Default 1. */\n\tworkers?: number | \"auto\";\n\tmaxWorkers?: number;\n\tcodec?: \"h264\" | \"vp9\";\n\tquality?: \"very_low\" | \"low\" | \"high\" | \"very_high\";\n\t/** Where `framefields render <name> --cloud` writes the video. */\n\toutput?: string;\n}\n\nexport interface ProjectConfig {\n\t/** Components directory, relative to the project root. */\n\tcomponents: string;\n\t/**\n\t * Font files by role (`emoji`), relative to the project root. A role\n\t * set here counts as installed: point it at your own font to use that.\n\t */\n\tfonts?: Partial<Record<string, string>>;\n\t/** Named renders, by name (letters, digits, `-`, `_`, `.`). */\n\trenders?: Record<string, RenderSpec>;\n}\n\nexport const RENDER_NAME = /^[A-Za-z0-9][\\w.-]{0,63}$/;\nconst IDENTIFIER = /^[A-Za-z_$][\\w$]*$/;\nconst QUALITIES = [\"very_low\", \"low\", \"high\", \"very_high\"];\n\n/**\n * The project's config, or the default it would get: `src/components` when\n * there is a `src`. `saved` is whether the file records a components folder.\n */\nexport function readConfig(cwd: string): {\n\tconfig: ProjectConfig;\n\tsaved: boolean;\n} {\n\tconst file = join(cwd, CONFIG_FILE);\n\tconst fallback = existsSync(join(cwd, \"src\"))\n\t\t? \"src/components\"\n\t\t: \"components\";\n\tif (!existsSync(file))\n\t\treturn { config: { components: fallback }, saved: false };\n\tlet raw: unknown;\n\ttry {\n\t\traw = JSON.parse(readFileSync(file, \"utf8\"));\n\t} catch (err) {\n\t\tthrow new Error(\n\t\t\t`${CONFIG_FILE} is not valid JSON: ${(err as Error).message}`,\n\t\t);\n\t}\n\tif (!isRecord(raw)) throw new Error(`${CONFIG_FILE} must be a JSON object`);\n\tconst { components, fonts, renders } = raw;\n\tif (components !== undefined && typeof components !== \"string\")\n\t\tthrow new Error(`${CONFIG_FILE}: \"components\" must be a directory path`);\n\tif (\n\t\tfonts !== undefined &&\n\t\t(!isRecord(fonts) ||\n\t\t\tObject.values(fonts).some((v) => typeof v !== \"string\"))\n\t)\n\t\tthrow new Error(\n\t\t\t`${CONFIG_FILE}: \"fonts\" must map roles to font file paths, e.g. { \"emoji\": \"assets/fonts/NotoColorEmoji.ttf\" }`,\n\t\t);\n\t// Other keys (a `$schema`, say) survive a rewrite.\n\tconst config = {\n\t\t...raw,\n\t\tcomponents: components ?? fallback,\n\t\t...(renders !== undefined && { renders: parseRenders(renders) }),\n\t} as ProjectConfig;\n\treturn { config, saved: components !== undefined };\n}\n\nexport function writeConfig(cwd: string, config: ProjectConfig): void {\n\twriteFileSync(\n\t\tjoin(cwd, CONFIG_FILE),\n\t\t`${JSON.stringify(config, null, \"\\t\")}\\n`,\n\t);\n}\n\n/** Validates the `renders` map; errors name the render and field at fault. */\nexport function parseRenders(value: unknown): Record<string, RenderSpec> {\n\tif (!isRecord(value))\n\t\tthrow new Error(\n\t\t\t`${CONFIG_FILE}: \"renders\" must map names to renders, e.g. { \"film\": { \"entry\": \"src/film.ts\" } }`,\n\t\t);\n\tconst out: Record<string, RenderSpec> = {};\n\tfor (const [name, spec] of Object.entries(value)) {\n\t\tconst fail = (message: string) => {\n\t\t\tthrow new Error(`${CONFIG_FILE}: renders.${name} ${message}`);\n\t\t};\n\t\tif (!RENDER_NAME.test(name))\n\t\t\tfail(\"has an invalid name: use letters, digits, -, _ and . (at most 64)\");\n\t\tif (!isRecord(spec)) fail(\"must be an object with an entry\");\n\t\tconst s = spec as Record<string, unknown>;\n\t\tif (!isRelativePath(s.entry))\n\t\t\tfail(\n\t\t\t\t'needs \"entry\": the module path inside the project, e.g. \"src/film.ts\"',\n\t\t\t);\n\t\tif (\n\t\t\ts.export !== undefined &&\n\t\t\t!(typeof s.export === \"string\" && IDENTIFIER.test(s.export))\n\t\t)\n\t\t\tfail('\"export\" must be a JavaScript identifier');\n\t\tfor (const key of [\"title\", \"description\", \"select\"] as const)\n\t\t\tif (s[key] !== undefined && typeof s[key] !== \"string\")\n\t\t\t\tfail(`\"${key}\" must be a string`);\n\t\tif (s.workers !== undefined && s.workers !== \"auto\" && !isCount(s.workers))\n\t\t\tfail('\"workers\" must be \"auto\" or a positive whole number');\n\t\tif (s.maxWorkers !== undefined && !isCount(s.maxWorkers))\n\t\t\tfail('\"maxWorkers\" must be a positive whole number');\n\t\tif (s.codec !== undefined && s.codec !== \"h264\" && s.codec !== \"vp9\")\n\t\t\tfail('\"codec\" must be \"h264\" or \"vp9\"');\n\t\tif (s.quality !== undefined && !QUALITIES.includes(s.quality as string))\n\t\t\tfail(`\"quality\" must be one of ${QUALITIES.join(\", \")}`);\n\t\tif (s.output !== undefined && typeof s.output !== \"string\")\n\t\t\tfail('\"output\" must be a file path');\n\t\tout[name] = s as unknown as RenderSpec;\n\t}\n\treturn out;\n}\n\n/**\n * The named render `name` of the project at `cwd`, or undefined when there\n * is no render by that name (an entry path, say).\n */\nexport function findRender(\n\tcwd: string,\n\tname: string,\n): (RenderSpec & { name: string }) | undefined {\n\tconst spec = readConfig(cwd).config.renders?.[name];\n\treturn spec && { ...spec, name };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isCount(value: unknown): boolean {\n\treturn typeof value === \"number\" && Number.isInteger(value) && value >= 1;\n}\n\nfunction isRelativePath(value: unknown): boolean {\n\treturn (\n\t\ttypeof value === \"string\" &&\n\t\tvalue.length > 0 &&\n\t\t!value.startsWith(\"/\") &&\n\t\t!value.split(/[/\\\\]/).includes(\"..\")\n\t);\n}\n","/**\n * Where a cloud render gets the project from: the git repo the working\n * directory is in, at the commit checked out now. Cloud workers fetch from\n * the remote, so that commit has to be pushed; uncommitted changes are not\n * rendered.\n */\nimport { execFileSync } from \"node:child_process\";\nimport { realpathSync } from \"node:fs\";\nimport path from \"node:path\";\n\nexport interface CloudSource {\n\trepo: string;\n\tref?: string;\n\tcommit?: string;\n\t/** The project's folder inside the repo (monorepos), `.` at the root. */\n\tworkdir?: string;\n}\n\nexport interface ResolvedSource {\n\tsource: CloudSource;\n\t/** The entry relative to `source.workdir`, as the worker loads it. */\n\tentry: string;\n\t/** Things that render differently than the user may expect (uncommitted changes). */\n\twarnings: string[];\n}\n\n/** Reads repo, branch, commit and folder from git, and checks the commit is pushed. */\nexport function resolveGitSource(cwd: string, entry: string): ResolvedSource {\n\tconst git = (...args: string[]) =>\n\t\texecFileSync(\"git\", args, {\n\t\t\tcwd,\n\t\t\tencoding: \"utf8\",\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t}).trim();\n\tlet root: string;\n\ttry {\n\t\troot = git(\"rev-parse\", \"--show-toplevel\");\n\t} catch {\n\t\tthrow new Error(\n\t\t\t`${cwd} is not in a git repository. Cloud renders fetch the project from git: commit it and push it to a remote first.`,\n\t\t);\n\t}\n\t// git reports the root with symlinks resolved (macOS /var → /private/var).\n\tconst workdir =\n\t\tpath\n\t\t\t.relative(realpathSync(root), realpathSync(cwd))\n\t\t\t.split(path.sep)\n\t\t\t.join(\"/\") || \".\";\n\tconst relEntry = path\n\t\t.relative(cwd, path.resolve(cwd, entry))\n\t\t.split(path.sep)\n\t\t.join(\"/\");\n\tif (relEntry.startsWith(\"../\") || path.isAbsolute(relEntry))\n\t\tthrow new Error(\n\t\t\t`${entry} is outside ${cwd}; run from the project folder that contains it.`,\n\t\t);\n\n\tconst branch = git(\"rev-parse\", \"--abbrev-ref\", \"HEAD\");\n\tconst commit = git(\"rev-parse\", \"HEAD\");\n\tconst remoteName = upstreamRemote(git, branch) ?? \"origin\";\n\tlet remoteUrl: string;\n\ttry {\n\t\tremoteUrl = git(\"remote\", \"get-url\", remoteName);\n\t} catch {\n\t\tthrow new Error(\n\t\t\t`The repository has no \"${remoteName}\" remote. Push the project to a git host first.`,\n\t\t);\n\t}\n\tconst pushed = git(\"branch\", \"-r\", \"--contains\", commit);\n\tif (!pushed)\n\t\tthrow new Error(\n\t\t\t`Commit ${commit.slice(0, 7)} is not on ${remoteName}. Push it first (\\`git push\\`): cloud workers fetch the project from the remote.`,\n\t\t);\n\tconst dirty = git(\"status\", \"--porcelain\", \"--untracked-files=no\", \"--\", \".\");\n\treturn {\n\t\tsource: {\n\t\t\trepo: toHttps(remoteUrl),\n\t\t\t...(branch !== \"HEAD\" && { ref: branch }),\n\t\t\tcommit,\n\t\t\tworkdir,\n\t\t},\n\t\tentry: relEntry,\n\t\twarnings: dirty\n\t\t\t? [\n\t\t\t\t\t`Uncommitted changes are not rendered: the cloud renders commit ${commit.slice(0, 7)}.`,\n\t\t\t\t]\n\t\t\t: [],\n\t};\n}\n\nfunction upstreamRemote(\n\tgit: (...args: string[]) => string,\n\tbranch: string,\n): string | undefined {\n\tif (branch === \"HEAD\") return undefined;\n\ttry {\n\t\treturn git(\"config\", `branch.${branch}.remote`) || undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/** `git@github.com:acme/films.git` → `https://github.com/acme/films.git`; credentials dropped. */\nexport function toHttps(url: string): string {\n\tconst scp = /^[\\w.-]+@([^:/]+):(.+)$/.exec(url);\n\tif (scp) return `https://${scp[1]}/${scp[2]}`;\n\tconst parsed = URL.canParse(url) ? new URL(url) : undefined;\n\tif (parsed && (parsed.protocol === \"ssh:\" || parsed.protocol === \"git:\"))\n\t\treturn `https://${parsed.hostname}${parsed.pathname}`;\n\tif (parsed?.protocol === \"https:\" || parsed?.protocol === \"http:\") {\n\t\tparsed.username = \"\";\n\t\tparsed.password = \"\";\n\t\treturn parsed.toString();\n\t}\n\treturn url;\n}\n","/**\n * Cloud renders on api.framefields.dev: the project renders from git on\n * framefields' GPU workers, billed to the account that owns the API key.\n *\n * ```ts\n * import { renderCloud } from \"framefields/cloud\";\n *\n * const result = await renderCloud({\n * render: \"film\", // a render named in framefields.json\n * outputPath: \"output/film.mp4\",\n * onProgress: (s) => console.log(s.status, s.progress.frames),\n * });\n * ```\n *\n * Without a framefields.json, name the module instead: `entry: \"src/film.ts\"`\n * (and `export`, `workers`, …). Options passed here override the named\n * render's.\n *\n * `workers: \"auto\"` probes the film on one worker first, then splits it into\n * as many chunks as stay efficient: short films stay on one worker, long ones\n * spread out up to `maxWorkers`. `dryRun: true` returns that plan with the\n * estimated cost and renders nothing. Aborting `signal` cancels the render;\n * GPU time already used is charged.\n */\nimport { createWriteStream } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport type { ReadableStream as WebReadableStream } from \"node:stream/web\";\nimport { CONFIG_FILE, findRender, readConfig } from \"../cli/config.js\";\nimport { type CloudSource, resolveGitSource } from \"./git-source.js\";\n\nexport { type CloudSource, resolveGitSource, toHttps } from \"./git-source.js\";\n\nexport const FRAMEFIELDS_API_URL = \"https://api.framefields.dev\";\n\nexport interface CloudRenderOptions {\n\t/** A render named in `cwd`'s framefields.json; its fields are the defaults here. */\n\trender?: string;\n\t/** The module that builds the composition, relative to `cwd`. Required without `render`. */\n\tentry?: string;\n\t/** Its export: a Composition, or a function returning one. Default `buildFilm`. */\n\texport?: string;\n\t/** Passed to the export when it is a function. */\n\targs?: unknown;\n\t/** When the export returns several compositions, the one to render. */\n\tselect?: string;\n\t/** 1 (default) renders on one worker; a number or \"auto\" splits the film. */\n\tworkers?: number | \"auto\";\n\t/** Upper bound for \"auto\" (the API caps it too). */\n\tmaxWorkers?: number;\n\tcodec?: \"h264\" | \"vp9\";\n\tquality?: string;\n\t/** Probe and plan only: returns the plan and estimated cost, renders nothing. */\n\tdryRun?: boolean;\n\t/** Download the finished video here. */\n\toutputPath?: string;\n\t/** Project folder. Default `process.cwd()`. */\n\tcwd?: string;\n\t/** Instead of reading repo, branch and commit from git. */\n\tsource?: CloudSource;\n\t/** Default `process.env.FRAMEFIELDS_API_KEY`. */\n\tapiKey?: string;\n\t/** Default `process.env.FRAMEFIELDS_API_URL`, else https://api.framefields.dev. */\n\tapiUrl?: string;\n\t/** Called with every status poll. */\n\tonProgress?: (status: CloudRenderStatus) => void;\n\t/** Called for each warning (uncommitted changes). Default: stderr. */\n\tonWarning?: (message: string) => void;\n\t/** Aborting cancels the cloud render. */\n\tsignal?: AbortSignal;\n\t/** Status poll interval, ms. Default 3000. */\n\tpollMs?: number;\n}\n\nexport type CloudRenderPhase =\n\t| \"probing\"\n\t| \"holding\"\n\t| \"rendering\"\n\t| \"stitching\"\n\t| \"planned\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"cancelled\";\n\nexport interface CloudRenderPlan {\n\tworkers: number;\n\t/** Render time of the whole film on one GPU, seconds. */\n\tworkSec: number;\n\t/** Expected wall time with this plan, seconds. */\n\tetaSec: number;\n\tchunks: { start: number; end: number; workSec: number }[];\n}\n\nexport interface CloudRenderStatus {\n\tid: string;\n\tstatus: CloudRenderPhase;\n\tworkers: number;\n\tplan?: CloudRenderPlan;\n\tprogress: {\n\t\tframes: number;\n\t\ttotalFrames: number | null;\n\t\tetaSec: number | null;\n\t};\n\t/** Charged so far (final once the render ended), USD. */\n\tcostUsd: number;\n\tgpuSeconds: number;\n\t/** The planned render's estimated charge, USD. */\n\testimateUsd?: number;\n\t/** The commit rendered. */\n\tsha?: string;\n\toutput?: { url: string; bytes?: number };\n\terror?: { code: string; message: string };\n}\n\nexport interface CloudRenderResult extends CloudRenderStatus {\n\t/** Where the video was downloaded (`outputPath`). */\n\tfilePath?: string;\n}\n\n/** A cloud render that failed, was cancelled, or was refused by the API. */\nexport class CloudRenderError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly code: string,\n\t\treadonly status?: CloudRenderStatus,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"CloudRenderError\";\n\t}\n}\n\nconst DONE = new Set<CloudRenderPhase>([\n\t\"planned\",\n\t\"completed\",\n\t\"failed\",\n\t\"cancelled\",\n]);\n\n/** Starts a cloud render and waits for it; resolves when it completed (or was planned). */\nexport async function renderCloud(\n\toptions: CloudRenderOptions,\n): Promise<CloudRenderResult> {\n\tconst api = cloudClient(options);\n\tconst cwd = options.cwd ?? process.cwd();\n\tconst o = withNamedRender(cwd, options);\n\tconst resolved = options.source\n\t\t? { source: options.source, entry: o.entry, warnings: [] }\n\t\t: resolveGitSource(cwd, o.entry);\n\tconst warn =\n\t\toptions.onWarning ??\n\t\t((m: string) => process.stderr.write(`framefields: ${m}\\n`));\n\tfor (const w of resolved.warnings) warn(w);\n\n\tlet status = await api.start({\n\t\tsource: resolved.source,\n\t\ttarget: {\n\t\t\tentry: resolved.entry,\n\t\t\texport: o.export ?? \"buildFilm\",\n\t\t\t...(o.args !== undefined && { args: o.args }),\n\t\t\t...(o.select && { select: [o.select] }),\n\t\t},\n\t\trender: {\n\t\t\tcodec: o.codec ?? \"h264\",\n\t\t\t...(o.quality && { quality: o.quality }),\n\t\t},\n\t\tworkers: o.workers ?? 1,\n\t\t...(o.maxWorkers && { max_workers: o.maxWorkers }),\n\t\tdry_run: options.dryRun ?? false,\n\t\t...(o.name && { name: o.name }),\n\t\t...(o.title && { title: o.title }),\n\t});\n\toptions.onProgress?.(status);\n\n\ttry {\n\t\twhile (!DONE.has(status.status)) {\n\t\t\tawait sleep(options.pollMs ?? 3000, options.signal);\n\t\t\tstatus = await api.status(status.id);\n\t\t\toptions.onProgress?.(status);\n\t\t}\n\t} catch (err) {\n\t\tif (options.signal?.aborted) {\n\t\t\tconst final = await api.cancel(status.id).catch(() => status);\n\t\t\tthrow new CloudRenderError(\n\t\t\t\t\"The cloud render was cancelled.\",\n\t\t\t\t\"cancelled\",\n\t\t\t\tfinal,\n\t\t\t);\n\t\t}\n\t\tthrow err;\n\t}\n\n\tif (status.status === \"failed\" || status.status === \"cancelled\")\n\t\tthrow new CloudRenderError(\n\t\t\tstatus.error\n\t\t\t\t? `Cloud render ${status.status}: ${status.error.message} (${status.error.code})`\n\t\t\t\t: `Cloud render ${status.status}.`,\n\t\t\tstatus.error?.code ?? status.status,\n\t\t\tstatus,\n\t\t);\n\tif (status.status === \"completed\" && options.outputPath && status.output) {\n\t\tawait download(status.output.url, options.outputPath, options.signal);\n\t\treturn { ...status, filePath: options.outputPath };\n\t}\n\treturn status;\n}\n\n/**\n * The options with a named render's fields filled in where the caller left\n * them out, plus the name and title the dashboard shows.\n */\nexport function withNamedRender(\n\tcwd: string,\n\toptions: CloudRenderOptions,\n): CloudRenderOptions & { entry: string; name?: string; title?: string } {\n\tif (!options.render) {\n\t\tif (!options.entry)\n\t\t\tthrow new CloudRenderError(\n\t\t\t\t\"Name a render from framefields.json (render) or a module (entry).\",\n\t\t\t\t\"invalid_request\",\n\t\t\t);\n\t\treturn { ...options, entry: options.entry };\n\t}\n\tconst spec = findRender(cwd, options.render);\n\tif (!spec) {\n\t\tconst names = Object.keys(readConfig(cwd).config.renders ?? {});\n\t\tthrow new CloudRenderError(\n\t\t\tnames.length\n\t\t\t\t? `No render named \"${options.render}\" in ${CONFIG_FILE}. Renders: ${names.join(\", \")}.`\n\t\t\t\t: `No render named \"${options.render}\": ${CONFIG_FILE} has no \"renders\".`,\n\t\t\t\"render_not_found\",\n\t\t);\n\t}\n\tconst defined = Object.fromEntries(\n\t\tObject.entries(options).filter(([, v]) => v !== undefined),\n\t) as CloudRenderOptions;\n\treturn {\n\t\tentry: spec.entry,\n\t\texport: spec.export,\n\t\targs: spec.args,\n\t\tselect: spec.select,\n\t\tworkers: spec.workers,\n\t\tmaxWorkers: spec.maxWorkers,\n\t\tcodec: spec.codec,\n\t\tquality: spec.quality,\n\t\t...defined,\n\t\tname: spec.name,\n\t\ttitle: spec.title ?? spec.name,\n\t} as CloudRenderOptions & { entry: string; name: string; title: string };\n}\n\n/** The API calls behind `renderCloud`, for callers who track renders themselves. */\nexport function cloudClient(\n\toptions: Pick<CloudRenderOptions, \"apiKey\" | \"apiUrl\">,\n) {\n\tconst key = options.apiKey ?? process.env.FRAMEFIELDS_API_KEY;\n\tif (!key)\n\t\tthrow new CloudRenderError(\n\t\t\t\"No API key. Set FRAMEFIELDS_API_KEY (keys at https://framefields.dev/dashboard/keys) or pass apiKey.\",\n\t\t\t\"invalid_api_key\",\n\t\t);\n\tconst base = (\n\t\toptions.apiUrl ??\n\t\tprocess.env.FRAMEFIELDS_API_URL ??\n\t\tFRAMEFIELDS_API_URL\n\t).replace(/\\/+$/, \"\");\n\tconst call = async (method: string, route: string, body?: unknown) => {\n\t\tconst res = await fetch(`${base}/v1/render${route}`, {\n\t\t\tmethod,\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${key}`,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t},\n\t\t\t...(body !== undefined && { body: JSON.stringify(body) }),\n\t\t});\n\t\tconst json = (await res.json().catch(() => ({}))) as ApiStatus & {\n\t\t\terror?: { type?: string; message?: string };\n\t\t};\n\t\tif (!res.ok)\n\t\t\tthrow new CloudRenderError(\n\t\t\t\tjson.error?.message ??\n\t\t\t\t\t`api.framefields.dev answered HTTP ${res.status}`,\n\t\t\t\tjson.error?.type ?? `http_${res.status}`,\n\t\t\t);\n\t\treturn fromApi(json);\n\t};\n\treturn {\n\t\tstart: (body: unknown) => call(\"POST\", \"\", body),\n\t\tstatus: (id: string) => call(\"GET\", `/${encodeURIComponent(id)}`),\n\t\tcancel: (id: string) => call(\"DELETE\", `/${encodeURIComponent(id)}`),\n\t};\n}\n\n/** The API's snake_case status. */\ninterface ApiStatus {\n\tid: string;\n\tstatus: CloudRenderPhase;\n\tworkers?: number;\n\tplan?: {\n\t\tworkers: number;\n\t\twork_sec: number;\n\t\teta_sec: number;\n\t\tchunks: CloudRenderPlan[\"chunks\"];\n\t};\n\tprogress?: {\n\t\tframes?: number;\n\t\ttotal_frames?: number | null;\n\t\teta_sec?: number | null;\n\t};\n\tcost_usd?: number;\n\tgpu_seconds?: number;\n\testimate_usd?: number;\n\tsha?: string;\n\toutput?: { url: string; bytes?: number };\n\terror?: { code: string; message: string };\n}\n\nfunction fromApi(s: ApiStatus): CloudRenderStatus {\n\treturn {\n\t\tid: s.id,\n\t\tstatus: s.status,\n\t\tworkers: s.workers ?? 1,\n\t\t...(s.plan && {\n\t\t\tplan: {\n\t\t\t\tworkers: s.plan.workers,\n\t\t\t\tworkSec: s.plan.work_sec,\n\t\t\t\tetaSec: s.plan.eta_sec,\n\t\t\t\tchunks: s.plan.chunks,\n\t\t\t},\n\t\t}),\n\t\tprogress: {\n\t\t\tframes: s.progress?.frames ?? 0,\n\t\t\ttotalFrames: s.progress?.total_frames ?? null,\n\t\t\tetaSec: s.progress?.eta_sec ?? null,\n\t\t},\n\t\tcostUsd: s.cost_usd ?? 0,\n\t\tgpuSeconds: s.gpu_seconds ?? 0,\n\t\t...(s.estimate_usd !== undefined && { estimateUsd: s.estimate_usd }),\n\t\t...(s.sha && { sha: s.sha }),\n\t\t...(s.output && { output: s.output }),\n\t\t...(s.error && { error: s.error }),\n\t};\n}\n\nasync function download(url: string, file: string, signal?: AbortSignal) {\n\tconst res = await fetch(url, { signal });\n\tif (!res.ok || !res.body)\n\t\tthrow new CloudRenderError(\n\t\t\t`Downloading the render failed: HTTP ${res.status}`,\n\t\t\t\"download_failed\",\n\t\t);\n\tawait fs.mkdir(path.dirname(path.resolve(file)), { recursive: true });\n\tawait pipeline(\n\t\tReadable.fromWeb(res.body as WebReadableStream),\n\t\tcreateWriteStream(file),\n\t);\n}\n\nfunction sleep(ms: number, signal?: AbortSignal): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (signal?.aborted) return reject(signal.reason);\n\t\tconst timer = setTimeout(resolve, ms);\n\t\tsignal?.addEventListener(\n\t\t\t\"abort\",\n\t\t\t() => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\treject(signal.reason);\n\t\t\t},\n\t\t\t{ once: true },\n\t\t);\n\t});\n}\n"],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  import "../chunk-W71TSjRM.mjs";
2
2
  import "../index-COYNQ_mf.mjs";
3
- import "../index-D2i9J9Zq.mjs";
4
- import "../index-BuiZzc6i.mjs";
5
- import "../renderer-BVKOQarx.mjs";
6
- import "../renderer-88C3QpKL.mjs";
7
- import { $a as withDefaults, $i as exitAnimation, $n as Animatable, $r as ResolvedTarget, Aa as springKeys, Ai as basePropsSchema, Ar as GlyphProps, Ba as targetSchema, Bi as cover, Br as MediaOptions, Ca as rng, Ci as arcPath, Cr as FontNeed, Da as scheduleExpression, Di as bakeFunction, Dr as FrameWindow, Ea as scaleFrames, Ei as audioLevelsSchema, Er as FrameValue, Fa as staggerRanks, Fi as boxPath, Fr as KeyBook, Ga as toPathData, Gi as drawOnKeys, Gr as MotionSize, Ha as themeFrames, Hi as defineMeta, Hr as MotionOptions, Ia as stepExpression, Ii as catmullRom, Ir as LayerStyleConfig, Ja as transparent, Ji as elevationStyle, Jr as ProjectDefaults, Ka as toSeconds, Ki as ease$1, Kr as ParticleOptions, La as supersede, Li as chain, Lr as MOTION_PRESETS, Ma as springTrack, Mi as bind, Mr as GrainOptions, Na as squigglePath, Ni as boilKeys, Nr as HandOptions, Oa as smoothRelease, Oi as bakeSamples, Or as GlyphAnimator, Pa as staggerOffsets, Pi as boundsOf, Pr as Host, Qa as withAlpha, Qi as evaluateGlyphExpression, Qn as Anchor, Qr as ResolvedMotion, Ra as surfaceFill, Ri as constantExpression, Rr as MeasureFn, Sa as resolveTarget, Si as anchorPoint, Sr as ExtrudedTextOptions, Ta as safeArea, Ti as ascending, Tr as FrameContextLike, Ua as themes, Ui as defineTheme, Ur as MotionPreset, Va as textLayout, Vi as defineComponent, Vr as Metrics, Wa as toFrames, Wi as dist, Wr as MotionPresetName, Xa as valueAt, Xi as enterAnimation, Xr as PulseOptions, Ya as typingFrames, Yi as ellipsePath, Yr as PropsOf, Za as windowExpression, Zi as evaluateEase, Zn as AnalyzeOptions, Zr as Rect, _a as quantize, _i as UnitSchedule, _r as CuesOf, aa as holdFirstKeys, ai as StaggerOrder, ar as BakeOptions, ba as resampleBands, bi as after, br as Elevation, ca as last, ci as TargetContext, cr as BuildContext, da as lineShift, di as Theme, dr as ComponentDefaults, ea as findRange, ei as Rgba, eo as within, er as AnimatableMethods, fa as luminance, fi as ThemeInput, fr as ComponentDefinition, ga as pulseKeys, gi as UNIT_INDEX, gr as Cues, ha as parseColor, hi as TrackedObjectLike, hr as Cue, i as analyzeAudio, ia as hashString, ii as Spring, ir as AudioLevels, ja as springSettleFrames, ji as beats, jr as GlyphUnit, ka as springAt, ki as bandEdges, kr as GlyphBox, la as lerp2, li as TargetNode, lr as BuildResult, ma as offsetCues, mi as Track, mr as ComponentMeta, n as bindComponent, na as glyphAnimator, ni as SAFE_INSETS, no as wordRanges, nr as ArrowCurve, oa as inkOn, oi as SyntaxKind, or as BakedKey, pa as mix, pi as ThemeName, pr as ComponentExtras, qa as transformPathData, qi as elevate, qr as Placement, r as z, ra as hashRng, ri as SafeInsets, rr as ArrowGeometry, sa as isLight, si as Target, sr as BaseProps, t as ComponentNode, ta as frameSpan, ti as Rng, to as wobblePoints, tr as ArcPath, ua as linePath, ui as TextLayout, ur as CanvasSize, va as rangeRects, vi as Vec2, vr as CutoutOptions, wa as round, wi as arrowPaths, wr as FontRole, xa as resolveMotion, xi as analyzeChannels, xr as ElevationLevel, ya as rendererChars, yi as WordRange, yr as EaseFn, za as targetPoint, zi as contrastRatio, zr as MeasureOptions } from "../index-Cro-818i.mjs";
8
- import "../index-Bly-7YM1.mjs";
9
- import "../audio-CYZkDwae.mjs";
10
- import "../index-CEU_Zsb9.mjs";
11
- import "../index-C8YwZ6k1.mjs";
12
- import "../index-jSDEM-uE.mjs";
3
+ import "../index-CTv9ZieD.mjs";
4
+ import "../index-Fliv2Z-w.mjs";
5
+ import "../renderer-B1U6YRRV.mjs";
6
+ import "../renderer-CcmxR6Fy.mjs";
7
+ import { $a as withDefaults, $i as evaluateGlyphExpression, $n as Anchor, $r as ResolvedMotion, Aa as springAt, Ai as bandEdges, Ar as GlyphBox, Ba as targetPoint, Bi as contrastRatio, Br as MeasureOptions, Ca as resolveTarget, Ci as anchorPoint, Cr as ExtrudedTextOptions, Da as scaleFrames, Di as audioLevelsSchema, Dr as FrameValue, Ea as safeArea, Ei as ascending, Er as FrameContextLike, Fa as staggerOffsets, Fi as boundsOf, Fr as Host, Ga as toPathData, Gi as dist, Gr as MotionPresetName, Ha as themeFrames, Hi as defineComponent, Hr as Metrics, Ia as staggerRanks, Ii as boxPath, Ir as KeyBook, Ja as transparent, Ji as elevate, Jr as Placement, Ka as toSeconds, Ki as drawOnKeys, Kr as MotionSize, La as stepExpression, Li as catmullRom, Lr as LayerStyleConfig, Ma as springSettleFrames, Mi as beats, Mr as GlyphUnit, Na as springTrack, Ni as bind, Nr as GrainOptions, Oa as scheduleExpression, Oi as bakeFunction, Or as FrameWindow, Pa as squigglePath, Pi as boilKeys, Pr as HandOptions, Qa as withAlpha, Qi as evaluateEase, Qn as AnalyzeOptions, Qr as Rect, Ra as supersede, Ri as chain, Rr as MOTION_PRESETS, Sa as resolveMotion, Si as analyzeChannels, Sr as ElevationLevel, Ta as round, Ti as arrowPaths, Tr as FontRole, Ua as themes, Ui as defineMeta, Ur as MotionOptions, Va as textLayout, Vi as cover, Vr as MediaOptions, Wa as toFrames, Wi as defineTheme, Wr as MotionPreset, Xa as valueAt, Xi as ellipsePath, Xr as PropsOf, Ya as typingFrames, Yi as elevationStyle, Yr as ProjectDefaults, Za as windowExpression, Zi as enterAnimation, Zn as targetSchema, Zr as PulseOptions, _a as pulseKeys, _i as UNIT_INDEX, _r as Cues, aa as hashString, ai as Spring, ar as AudioLevels, ba as rendererChars, bi as WordRange, br as EaseFn, ca as isLight, ci as Target, cr as BaseProps, da as linePath, di as TextLayout, dr as CanvasSize, ea as exitAnimation, ei as ResolvedTarget, eo as within, er as Animatable, fa as lineShift, fi as Theme, fr as ComponentDefaults, ga as parseColor, gi as TrackedObjectLike, gr as Cue, ha as offsetCues, hi as Track, hr as ComponentMeta, i as analyzeAudio, ia as hashRng, ii as SafeInsets, ir as ArrowGeometry, ja as springKeys, ji as basePropsSchema, jr as GlyphProps, ka as smoothRelease, ki as bakeSamples, kr as GlyphAnimator, la as last, li as TargetContext, lr as BuildContext, ma as mix, mi as ThemeName, mr as ComponentExtras, n as bindComponent, na as frameSpan, ni as Rng, no as wordRanges, nr as ArcPath, oa as holdFirstKeys, oi as StaggerOrder, or as BakeOptions, pa as luminance, pi as ThemeInput, pr as ComponentDefinition, qa as transformPathData, qi as ease$1, qr as ParticleOptions, r as z, ra as glyphAnimator, ri as SAFE_INSETS, rr as ArrowCurve, sa as inkOn, si as SyntaxKind, sr as BakedKey, t as ComponentNode, ta as findRange, ti as Rgba, to as wobblePoints, tr as AnimatableMethods, ua as lerp2, ui as TargetNode, ur as BuildResult, va as quantize, vi as UnitSchedule, vr as CuesOf, wa as rng, wi as arcPath, wr as FontNeed, xa as resampleBands, xi as after, xr as Elevation, ya as rangeRects, yi as Vec2, yr as CutoutOptions, za as surfaceFill, zi as constantExpression, zr as MeasureFn } from "../index-BNClElng.mjs";
8
+ import "../index-Drk6HC2k.mjs";
9
+ import "../audio-afTBdB3U.mjs";
10
+ import "../index-WwuuX8ZJ.mjs";
11
+ import "../index-DQa7mhzq.mjs";
12
+ import "../index-CAuNuvIg.mjs";
13
13
  import "../index-gOVtTm-P.mjs";
14
14
  import "../index-CdCrae-I.mjs";
15
15
  export { AnalyzeOptions, Anchor, Animatable, AnimatableMethods, ArcPath, ArrowCurve, ArrowGeometry, AudioLevels, BakeOptions, BakedKey, BaseProps, BuildContext, BuildResult, CanvasSize, ComponentDefaults, ComponentDefinition, ComponentExtras, ComponentMeta, ComponentNode, Cue, Cues, CuesOf, CutoutOptions, EaseFn, Elevation, ElevationLevel, ExtrudedTextOptions, FontNeed, FontRole, FrameContextLike, FrameValue, FrameWindow, GlyphAnimator, GlyphBox, GlyphProps, GlyphUnit, GrainOptions, HandOptions, Host, KeyBook, LayerStyleConfig, MOTION_PRESETS, MeasureFn, MeasureOptions, MediaOptions, Metrics, MotionOptions, MotionPreset, MotionPresetName, MotionSize, ParticleOptions, Placement, ProjectDefaults, PropsOf, PulseOptions, Rect, ResolvedMotion, ResolvedTarget, Rgba, Rng, SAFE_INSETS, SafeInsets, Spring, StaggerOrder, SyntaxKind, Target, TargetContext, TargetNode, TextLayout, Theme, ThemeInput, ThemeName, Track, TrackedObjectLike, UNIT_INDEX, UnitSchedule, Vec2, WordRange, after, analyzeAudio, analyzeChannels, anchorPoint, arcPath, arrowPaths, ascending, audioLevelsSchema, bakeFunction, bakeSamples, bandEdges, basePropsSchema, beats, bind, bindComponent, boilKeys, boundsOf, boxPath, catmullRom, chain, constantExpression, contrastRatio, cover, defineComponent, defineMeta, defineTheme, dist, drawOnKeys, ease$1 as ease, elevate, elevationStyle, ellipsePath, enterAnimation, evaluateEase, evaluateGlyphExpression, exitAnimation, findRange, frameSpan, glyphAnimator, hashRng, hashString, holdFirstKeys, inkOn, isLight, last, lerp2, linePath, lineShift, luminance, mix, offsetCues, parseColor, pulseKeys, quantize, rangeRects, rendererChars, resampleBands, resolveMotion, resolveTarget, rng, round, safeArea, scaleFrames, scheduleExpression, smoothRelease, springAt, springKeys, springSettleFrames, springTrack, squigglePath, staggerOffsets, staggerRanks, stepExpression, supersede, surfaceFill, targetPoint, targetSchema, textLayout, themeFrames, themes, toFrames, toPathData, toSeconds, transformPathData, transparent, typingFrames, valueAt, windowExpression, withAlpha, withDefaults, within, wobblePoints, wordRanges, z };
@@ -1,49 +1,49 @@
1
1
  import "../chunk-W71TSjRM.mjs";
2
- import { $ as glyphAnimator, $t as wordRanges, A as boilKeys, At as squigglePath, B as defineTheme, Bt as themes, C as audioLevelsSchema, Ct as scaleFrames, D as basePropsSchema, Dt as springKeys, E as bandEdges, Et as springAt, F as constantExpression, Ft as surfaceFill, G as elevationStyle, Gt as transparent, H as drawOnKeys, Ht as toPathData, I as contrastRatio, It as targetPoint, J as evaluateEase, Jt as windowExpression, K as ellipsePath, Kt as typingFrames, L as cover, Lt as targetSchema, M as boxPath, Mt as staggerRanks, N as catmullRom, Nt as stepExpression, O as beats, Ot as springSettleFrames, P as chain, Pt as supersede, Q as frameSpan, Qt as wobblePoints, R as defineComponent, Rt as textLayout, S as ascending, St as safeArea, T as bakeSamples, Tt as smoothRelease, U as ease, Ut as toSeconds, V as dist, Vt as toFrames, W as elevate, Wt as transformPathData, X as exitAnimation, Xt as withDefaults, Y as evaluateGlyphExpression, Yt as withAlpha, Z as findRange, Zt as within, _ as after, _t as resampleBands, at as last, b as arcPath, bt as rng, ct as lineShift, d as analyzeAudio, dt as offsetCues, et as hashRng, f as KeyBook, ft as parseColor, g as UNIT_INDEX, gt as rendererChars, h as Track, ht as rangeRects, it as isLight, j as boundsOf, jt as staggerOffsets, k as bind, kt as springTrack, l as bindComponent, lt as luminance, m as SAFE_INSETS, mt as quantize, nt as holdFirstKeys, ot as lerp2, p as MOTION_PRESETS, pt as pulseKeys, q as enterAnimation, qt as valueAt, rt as inkOn, st as linePath, tt as hashString, u as z, ut as mix, v as analyzeChannels, vt as resolveMotion, w as bakeFunction, wt as scheduleExpression, x as arrowPaths, xt as round, y as anchorPoint, yt as resolveTarget, z as defineMeta, zt as themeFrames } from "../src-BYp6r-cS.mjs";
3
- import "../dist-CWLLnigL.mjs";
4
- import "../renderers-CP8CFWDs-DRoslK4F.mjs";
2
+ import { $ as glyphAnimator, $t as wordRanges, A as boilKeys, At as squigglePath, B as defineTheme, Bt as themes, C as audioLevelsSchema, Ct as scaleFrames, D as basePropsSchema, Dt as springKeys, E as bandEdges, Et as springAt, F as constantExpression, Ft as surfaceFill, G as elevationStyle, Gt as transparent, H as drawOnKeys, Ht as toPathData, I as contrastRatio, It as targetPoint, J as evaluateEase, Jt as windowExpression, K as ellipsePath, Kt as typingFrames, L as cover, Lt as targetSchema, M as boxPath, Mt as staggerRanks, N as catmullRom, Nt as stepExpression, O as beats, Ot as springSettleFrames, P as chain, Pt as supersede, Q as frameSpan, Qt as wobblePoints, R as defineComponent, Rt as textLayout, S as ascending, St as safeArea, T as bakeSamples, Tt as smoothRelease, U as ease, Ut as toSeconds, V as dist, Vt as toFrames, W as elevate, Wt as transformPathData, X as exitAnimation, Xt as withDefaults, Y as evaluateGlyphExpression, Yt as withAlpha, Z as findRange, Zt as within, _ as after, _t as resampleBands, at as last, b as arcPath, bt as rng, ct as lineShift, d as analyzeAudio, dt as offsetCues, et as hashRng, f as KeyBook, ft as parseColor, g as UNIT_INDEX, gt as rendererChars, h as Track, ht as rangeRects, it as isLight, j as boundsOf, jt as staggerOffsets, k as bind, kt as springTrack, l as bindComponent, lt as luminance, m as SAFE_INSETS, mt as quantize, nt as holdFirstKeys, ot as lerp2, p as MOTION_PRESETS, pt as pulseKeys, q as enterAnimation, qt as valueAt, rt as inkOn, st as linePath, tt as hashString, u as z, ut as mix, v as analyzeChannels, vt as resolveMotion, w as bakeFunction, wt as scheduleExpression, x as arrowPaths, xt as round, y as anchorPoint, yt as resolveTarget, z as defineMeta, zt as themeFrames } from "../src-D7M8VTzv.mjs";
3
+ import "../dist-B-OPY7Cs.mjs";
4
+ import "../renderers-CP8CFWDs-DWRjjeUg.mjs";
5
5
  import "../signals-BfJ1aqpT.mjs";
6
- import "../renderer-DAn9xiQT.mjs";
7
- import "../renderer-Dpl6poqD.mjs";
8
- import "../renderer-q7q6k_cD.mjs";
9
- import "../renderer-CLAvn9c6.mjs";
10
- import "../renderer-BwrfKKqw.mjs";
11
- import "../renderer-o68mVeyk.mjs";
12
- import "../renderer-C9BSXyrq.mjs";
13
- import "../renderer-Bxjb0HYU.mjs";
6
+ import "../renderer-BC_Nse6h.mjs";
7
+ import "../renderer-Dak_wVh9.mjs";
8
+ import "../renderer-oBgCEqaM.mjs";
9
+ import "../renderer-BwV-o_1b.mjs";
10
+ import "../renderer-IAffbHXx.mjs";
11
+ import "../renderer-ByFPmHBC.mjs";
12
+ import "../renderer-smP1F57W.mjs";
13
+ import "../renderer-DLaUT6JZ.mjs";
14
14
  import "../renderer-B6rZUBwE.mjs";
15
- import "../renderer-B-CMRUag.mjs";
16
- import "../renderer-HDj9Zb-O.mjs";
17
- import "../renderer-7ow5Acsg.mjs";
18
- import "../renderer-sfqZK6L5.mjs";
19
- import "../renderer-BSELd5vU.mjs";
20
- import "../renderer-Ros7XQg2.mjs";
21
- import "../renderer-CxGx1Lhi.mjs";
22
- import "../renderer-h62QaJYz.mjs";
23
- import "../renderer-DwK9jsER.mjs";
24
- import "../renderer-D-QVGphn.mjs";
25
- import "../renderer-DFJWPqOJ.mjs";
26
- import "../renderer-lHNTgiOM.mjs";
27
- import "../renderer-BDZC3o3N.mjs";
28
- import "../renderer-D0aAZHC7.mjs";
29
- import "../renderer-celhuAL7.mjs";
30
- import "../renderer-BhsrlGKp.mjs";
31
- import "../renderer-fs8f1QeE.mjs";
32
- import "../renderer-1uoKiILq.mjs";
33
- import "../renderer-B1esRxGy.mjs";
34
- import "../renderer-DgPn_SOC.mjs";
35
- import "../renderer-JHByuUNb.mjs";
36
- import "../renderer-B1LD29TV.mjs";
37
- import "../renderer-BNHcwxw9.mjs";
38
- import "../renderer-BNJ6Jk7-.mjs";
39
- import "../renderer-D4f8f66C.mjs";
40
- import "../renderer-CrR8Mpxq.mjs";
41
- import "../renderer-Bo7shNdU.mjs";
42
- import "../renderer-BJ-7WRgO.mjs";
43
- import "../renderer-BQetXCcZ.mjs";
44
- import "../renderer-DE9Jik9K.mjs";
45
- import "../renderer-eMCTAa9e.mjs";
46
- import "../renderer-DLPhfwbR.mjs";
47
- import "../renderer-Bx14Wnxl.mjs";
15
+ import "../renderer-Bf7Z7WT5.mjs";
16
+ import "../renderer-CN-mCIoI.mjs";
17
+ import "../renderer-b0H3oDae.mjs";
18
+ import "../renderer-DEoerd-j.mjs";
19
+ import "../renderer-DP9ScNM6.mjs";
20
+ import "../renderer-CNpq7rL-.mjs";
21
+ import "../renderer-FvvywNvv.mjs";
22
+ import "../renderer-O4y02xkD.mjs";
23
+ import "../renderer-snjhPaP-.mjs";
24
+ import "../renderer-BXGuCnCJ.mjs";
25
+ import "../renderer-BvRM3OZ6.mjs";
26
+ import "../renderer-t1sXDiqm.mjs";
27
+ import "../renderer-Bxiiar50.mjs";
28
+ import "../renderer-rKw5_EjG.mjs";
29
+ import "../renderer-Dj54y3h3.mjs";
30
+ import "../renderer-CMCmljb0.mjs";
31
+ import "../renderer-LrAldCWN.mjs";
32
+ import "../renderer-C_gR2H3R.mjs";
33
+ import "../renderer-CGpi8CDT.mjs";
34
+ import "../renderer-DKFaVaRJ.mjs";
35
+ import "../renderer-CtpEzVBn.mjs";
36
+ import "../renderer-sMFJtt_H.mjs";
37
+ import "../renderer-uA0UCxjA.mjs";
38
+ import "../renderer-C2kFIZ4r.mjs";
39
+ import "../renderer-BzTj_CeK.mjs";
40
+ import "../renderer-DL3o_lG1.mjs";
41
+ import "../renderer-qVJdxbXB.mjs";
42
+ import "../renderer-DX60Kr20.mjs";
43
+ import "../renderer-Dy1xQOTu.mjs";
44
+ import "../renderer-HXw4cJZx.mjs";
45
+ import "../renderer-PnnkUWm-.mjs";
46
+ import "../renderer-DZIxduEt.mjs";
47
+ import "../renderer-DCMoBppL.mjs";
48
48
 
49
49
  export { KeyBook, MOTION_PRESETS, SAFE_INSETS, Track, UNIT_INDEX, after, analyzeAudio, analyzeChannels, anchorPoint, arcPath, arrowPaths, ascending, audioLevelsSchema, bakeFunction, bakeSamples, bandEdges, basePropsSchema, beats, bind, bindComponent, boilKeys, boundsOf, boxPath, catmullRom, chain, constantExpression, contrastRatio, cover, defineComponent, defineMeta, defineTheme, dist, drawOnKeys, ease, elevate, elevationStyle, ellipsePath, enterAnimation, evaluateEase, evaluateGlyphExpression, exitAnimation, findRange, frameSpan, glyphAnimator, hashRng, hashString, holdFirstKeys, inkOn, isLight, last, lerp2, linePath, lineShift, luminance, mix, offsetCues, parseColor, pulseKeys, quantize, rangeRects, rendererChars, resampleBands, resolveMotion, resolveTarget, rng, round, safeArea, scaleFrames, scheduleExpression, smoothRelease, springAt, springKeys, springSettleFrames, springTrack, squigglePath, staggerOffsets, staggerRanks, stepExpression, supersede, surfaceFill, targetPoint, targetSchema, textLayout, themeFrames, themes, toFrames, toPathData, toSeconds, transformPathData, transparent, typingFrames, valueAt, windowExpression, withAlpha, withDefaults, within, wobblePoints, wordRanges, z };
@@ -1,4 +1,4 @@
1
- import { F as registerVisionModel, M as varint, O as readVarint, P as VISION_MODELS, _ as fields, b as lengthDelimited, g as encoder, h as createDefaultSessionProvider, j as strings, k as sessionCompute, m as concat, u as VisionModelStore, v as firstString, y as imageToTensor } from "./src-Bnr8DUC--BRDqRF6I.mjs";
1
+ import { F as registerVisionModel, M as varint, O as readVarint, P as VISION_MODELS, _ as fields, b as lengthDelimited, g as encoder, h as createDefaultSessionProvider, j as strings, k as sessionCompute, m as concat, u as VisionModelStore, v as firstString, y as imageToTensor } from "./src-BU6vm9sP-DFJ3phW0.mjs";
2
2
  import { z } from "zod";
3
3
  import { Tokenizer } from "@huggingface/tokenizers";
4
4
 
@@ -1431,4 +1431,4 @@ function seedLogits(logits) {
1431
1431
 
1432
1432
  //#endregion
1433
1433
  export { sam3Run as C, validateSam3Prompts as E, sam3Revision as S, validateSam2Prompts as T, sam3EncoderFiles as _, SAM_MODELS as a, sam3Position as b, Sam3MemoryBank as c, assertSamLicenseAccepted as d, decodeSam2Mask as f, sam3DenseDecoder as g, sam2Tokens as h, SAM_LICENSE_TERMS_URL as i, Sam3TextSelector as l, sam2Revision as m, SAM3_ENCODER as n, Sam2MemoryBank as o, ensureSamModelsRegistered as p, SAM_LICENSE as r, Sam2Tracker as s, SAM2_EXPORTS as t, Sam3Tracker as u, sam3Floats as v, sam3SupportGraphs as w, sam3Precision as x, sam3Mask as y };
1434
- //# sourceMappingURL=dist-Dg9LMWoX.mjs.map
1434
+ //# sourceMappingURL=dist-2_lT3Dwc.mjs.map