hyperframes 0.8.151 → 0.8.153

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 (169) hide show
  1. package/dist/{add-QKZZG7A2.js → add-D7GZM6ZS.js} +14 -14
  2. package/dist/{animatedGifPrep-YQDPYGOD.js → animatedGifPrep-IBLDIJXC.js} +9 -9
  3. package/dist/api.js +15 -15
  4. package/dist/{asset-3Q737Y4H.js → asset-ACZRQU2Z.js} +2 -2
  5. package/dist/{assetCataloger-BTHEBJJB.js → assetCataloger-Y3OELLLW.js} +4 -4
  6. package/dist/{auth-XL7EU3SO.js → auth-LFWML3XJ.js} +1 -1
  7. package/dist/{autoUpdate-PJFLTQ3U.js → autoUpdate-7IUGQXOV.js} +2 -2
  8. package/dist/{backgroundChecks-T5TIR5WK.js → backgroundChecks-XI364BNX.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-NFLVIDB4.js → batchRender-6TD4XSIP.js} +5 -5
  11. package/dist/{beats-JU4GZ26R.js → beats-FZGQ3HLR.js} +14 -14
  12. package/dist/{benchmark-7U2YWLTW.js → benchmark-3YEKSYMP.js} +10 -10
  13. package/dist/{browser-D57UPYDA.js → browser-R5PKLYZD.js} +3 -3
  14. package/dist/{bundleWithLocalizedFonts-26MXQOZG.js → bundleWithLocalizedFonts-QX5HV7LC.js} +2 -2
  15. package/dist/{capture-LT252COQ.js → capture-MTHXUEC2.js} +19 -19
  16. package/dist/{capture-47BV25G3.js → capture-R7QSBEPW.js} +2 -2
  17. package/dist/{catalog-BEZXOV4O.js → catalog-K2TRGCXO.js} +14 -14
  18. package/dist/{catch-up-KVV5X6BF.js → catch-up-WCSN4K4A.js} +4 -4
  19. package/dist/{check-6KQ433E6.js → check-N4EFKWC3.js} +294 -66
  20. package/dist/{checkBrowser-PRDR6XBY.js → checkBrowser-73SOMDG3.js} +75 -45
  21. package/dist/{chunk-IZPN423R.js → chunk-2F6LWCSF.js} +11 -6
  22. package/dist/{chunk-TCWMDCBX.js → chunk-2X3UJ4Q3.js} +2 -2
  23. package/dist/{chunk-YZTVHRJ2.js → chunk-2XEBNYG5.js} +1 -1
  24. package/dist/chunk-3DMR7RF6.js +24 -0
  25. package/dist/{chunk-APDLWWFG.js → chunk-3VGU2SH7.js} +1 -1
  26. package/dist/{chunk-OZ4K46OV.js → chunk-4IRCZWND.js} +2 -2
  27. package/dist/{chunk-4PKQEKAI.js → chunk-4OVLWS2K.js} +2 -2
  28. package/dist/{chunk-DHPFXAUF.js → chunk-57GN6KWT.js} +17 -3
  29. package/dist/{chunk-374QQGBQ.js → chunk-5CS4T6C6.js} +63 -12
  30. package/dist/{chunk-FLVI7FHU.js → chunk-5DD45SJZ.js} +1 -1
  31. package/dist/{chunk-BRF3O35X.js → chunk-5FS4HCHN.js} +109 -31
  32. package/dist/{chunk-DIOBKUBV.js → chunk-5OKZRXLT.js} +2 -2
  33. package/dist/{chunk-POEEDPJI.js → chunk-5ZGSN5YK.js} +1 -1
  34. package/dist/{chunk-FJWEYVEM.js → chunk-7FYFEXD2.js} +658 -198
  35. package/dist/{chunk-L3N7RJHS.js → chunk-7NKLNOHW.js} +3 -3
  36. package/dist/{chunk-O3DUX6P2.js → chunk-AA67UBB2.js} +4 -4
  37. package/dist/{chunk-IZ7L6V76.js → chunk-AUK5QCRH.js} +1 -1
  38. package/dist/{chunk-YEBKEWKB.js → chunk-BD3XH4A7.js} +1 -1
  39. package/dist/{chunk-XXPYZBZ3.js → chunk-C6TPGUWD.js} +2 -2
  40. package/dist/{chunk-ZD3RDNZI.js → chunk-CBMZYOWC.js} +1 -1
  41. package/dist/{chunk-ZGCRVM5M.js → chunk-DAKXCEE3.js} +4 -4
  42. package/dist/{chunk-AIJS74LG.js → chunk-FFDC5OWV.js} +8 -2
  43. package/dist/{chunk-DMKI64EZ.js → chunk-FSZAFCU7.js} +1 -1
  44. package/dist/{chunk-OSAH7S5M.js → chunk-FZC4UM4G.js} +1 -1
  45. package/dist/{chunk-QBYHNRHU.js → chunk-GV7I3ZSQ.js} +2 -2
  46. package/dist/{chunk-N3I6RAOR.js → chunk-GXPD7J53.js} +11 -11
  47. package/dist/{chunk-N4IXP3MY.js → chunk-HGAOO43L.js} +3 -3
  48. package/dist/{chunk-QF7AE3DB.js → chunk-J5LEAKUA.js} +1 -1
  49. package/dist/{chunk-PUIELIFA.js → chunk-JBUIS5DN.js} +1 -1
  50. package/dist/{chunk-KXX6NLOT.js → chunk-JQ57FAYN.js} +1 -1
  51. package/dist/{chunk-RRBKEHST.js → chunk-KFBEMIMD.js} +54 -6
  52. package/dist/{chunk-RYL6ZIJP.js → chunk-OIONMNWN.js} +18 -11
  53. package/dist/{chunk-KQGWP4KH.js → chunk-OSASJLU4.js} +1 -1
  54. package/dist/{chunk-3ZPFRDEJ.js → chunk-PVGDU7SE.js} +4 -4
  55. package/dist/{chunk-XGLNQDLN.js → chunk-PXOFFSO3.js} +1 -1
  56. package/dist/{chunk-IP73NMQT.js → chunk-QBFHVMOI.js} +10 -10
  57. package/dist/{chunk-IPDS2SWI.js → chunk-R6WCSVCE.js} +1 -1
  58. package/dist/{chunk-XYHBVSWD.js → chunk-RCWSM7IQ.js} +2 -2
  59. package/dist/{chunk-4YZYYP7V.js → chunk-SUVIGBHS.js} +3 -3
  60. package/dist/{chunk-L6RIMCMG.js → chunk-T2Y2WC5I.js} +3 -3
  61. package/dist/{chunk-QLGBNGXC.js → chunk-TCJM3KF2.js} +2 -2
  62. package/dist/{chunk-XKKBIFE5.js → chunk-TQUTAWUR.js} +7 -7
  63. package/dist/{chunk-HVXRYMGQ.js → chunk-TXWPPBIW.js} +1 -1
  64. package/dist/{chunk-2PSPARWP.js → chunk-TYXH3EKP.js} +4 -0
  65. package/dist/{chunk-FMNVTKX2.js → chunk-U3BCDVZO.js} +1 -1
  66. package/dist/{chunk-RJRGR5KF.js → chunk-UNOALNYO.js} +9 -9
  67. package/dist/{chunk-3SVC7SW4.js → chunk-V6UUZGP6.js} +7 -3
  68. package/dist/{chunk-LFNQDTSH.js → chunk-VYKPBRCB.js} +63 -12
  69. package/dist/{chunk-S22FKF6G.js → chunk-WNCGJFTZ.js} +2 -2
  70. package/dist/{chunk-XNDXENJQ.js → chunk-WQMTHPTK.js} +3 -3
  71. package/dist/{chunk-4LE27ST4.js → chunk-XQYLUY2F.js} +2 -2
  72. package/dist/chunk-XSEGMQYA.js +30 -0
  73. package/dist/{chunk-35PWWBGZ.js → chunk-YI6OBVWQ.js} +1 -1
  74. package/dist/{chunk-GNTVYF7E.js → chunk-YOEGUBBY.js} +5 -5
  75. package/dist/{chunk-FAIYEIZ4.js → chunk-YYMJEQ4D.js} +1 -1
  76. package/dist/{chunk-LKQS72D5.js → chunk-Z6CSYA7U.js} +1 -1
  77. package/dist/{chunk-XQKVEQNY.js → chunk-ZDEEHQ2Y.js} +2 -2
  78. package/dist/chunk-ZQMYD22O.js +215 -0
  79. package/dist/{clean-RLTHFTQA.js → clean-TLMZ6GVY.js} +52 -31
  80. package/dist/cli.js +53 -53
  81. package/dist/{cloud-Q5TGBTW3.js → cloud-XFIRM6YE.js} +4 -4
  82. package/dist/{cloudrun-4UZF74MV.js → cloudrun-OUGI5NN4.js} +6 -6
  83. package/dist/{compare-Q5UNR2V4.js → compare-OKSXYO3L.js} +30 -30
  84. package/dist/{compiler-ZXT27Z62.js → compiler-WHUQZITN.js} +6 -6
  85. package/dist/{component-H734P32V.js → component-3II4YXAD.js} +3 -3
  86. package/dist/{compositions-YEHDSTDR.js → compositions-RL75WQS6.js} +13 -13
  87. package/dist/{delete-LDBMPWRT.js → delete-4FM24SJ2.js} +2 -2
  88. package/dist/{deterministicFonts-C5JQLCTS.js → deterministicFonts-EOMDR6ZF.js} +3 -3
  89. package/dist/{dist-RGE4QASU.js → dist-2YYJYYPY.js} +3 -3
  90. package/dist/{dist-7JXLFD6U.js → dist-NUSNSGME.js} +4 -4
  91. package/dist/{doctor-XNJFIWJ7.js → doctor-Q5WYRIVP.js} +11 -11
  92. package/dist/{events-G6UFLNXR.js → events-CPZTSXAX.js} +2 -2
  93. package/dist/{events-UKCPUWMH.js → events-J5VJAKGT.js} +3 -3
  94. package/dist/{feedback-CK3KZ7DE.js → feedback-U64DIKAF.js} +8 -8
  95. package/dist/{figma-3D5C737B.js → figma-GUHWRHJO.js} +3 -3
  96. package/dist/fontLocalizeCli.js +12 -12
  97. package/dist/{get-QGTQUWFT.js → get-XDQJPF7G.js} +2 -2
  98. package/dist/{gpuPolicy-G5QAQDYF.js → gpuPolicy-7SIPG5BM.js} +9 -9
  99. package/dist/{grade-compare-XIHOM62P.js → grade-compare-WWW2F3NY.js} +30 -30
  100. package/dist/{gsapParserAcorn-VXZ3ZIF2.js → gsapParserAcorn-7NCK2LVT.js} +2 -2
  101. package/dist/{help-U5UBXT52.js → help-3UJYI7LC.js} +1 -1
  102. package/dist/{history-5J73QZSA.js → history-VQSM5L6N.js} +77 -205
  103. package/dist/hyperframe-runtime.js +4 -0
  104. package/dist/hyperframe.manifest.json +1 -1
  105. package/dist/hyperframe.runtime.iife.js +4 -0
  106. package/dist/hyperframes-player.global.js +1 -1
  107. package/dist/{info-RJHQQQUP.js → info-NMDUH7N5.js} +9 -9
  108. package/dist/{init-M6UQOYYC.js → init-D753VPPZ.js} +24 -24
  109. package/dist/{inspect-PRQWDBTP.js → inspect-KEE27DQN.js} +31 -31
  110. package/dist/{installer-ZL7UKYK5.js → installer-QCHUXV6E.js} +7 -7
  111. package/dist/{keyframes-VMUJYTCQ.js → keyframes-EP44YDZW.js} +227 -82
  112. package/dist/{lambda-ON42DRQD.js → lambda-Q5FTNY4J.js} +7 -7
  113. package/dist/{layout-QKBFVDVY.js → layout-LATG5CZV.js} +31 -31
  114. package/dist/{lint-ZQHHL2SV.js → lint-TQDQFJKW.js} +9 -9
  115. package/dist/{lintProject-3Z6OJCSO.js → lintProject-XQWXJYSC.js} +3 -3
  116. package/dist/{list-YBRKIWGF.js → list-O44ENRGS.js} +2 -2
  117. package/dist/{login-4B2YXGLB.js → login-EKFN5PZP.js} +4 -4
  118. package/dist/{media-treatment-5C5EJAAP.js → media-treatment-LPT4GYAE.js} +12 -12
  119. package/dist/{models-R7ZDWBJ6.js → models-CRYHY4KH.js} +12 -12
  120. package/dist/{motionShot-ZHESZNUL.js → motionShot-BS3DB666.js} +28 -15
  121. package/dist/{normalize-audio-EVWZVTBM.js → normalize-audio-7X445LLJ.js} +6 -6
  122. package/dist/{open-TV6HT4UT.js → open-JA7FN5F5.js} +4 -4
  123. package/dist/{parakeetRunner-YVVF4CG6.js → parakeetRunner-AFUTDANA.js} +12 -12
  124. package/dist/{pipeline-ETR5SEBS.js → pipeline-3TQHAQOJ.js} +9 -9
  125. package/dist/{play-C6WONRZV.js → play-UUJAXFCJ.js} +24 -24
  126. package/dist/{present-RANXTVPA.js → present-EBP6YMCJ.js} +20 -20
  127. package/dist/{preview-KF6UMBT2.js → preview-PVJDLZDU.js} +19 -19
  128. package/dist/{producer-CY2GXBWN.js → producer-HE23BPEU.js} +1 -1
  129. package/dist/{projectConfig-KPXCNMBM.js → projectConfig-EX35BZLA.js} +9 -9
  130. package/dist/{publication-Y36N4A7E.js → publication-OUGS3P7W.js} +4 -4
  131. package/dist/{publish-RCQJO35C.js → publish-UUFZR6QT.js} +12 -12
  132. package/dist/{remove-background-3ZMXVWLB.js → remove-background-P5M42CA5.js} +10 -10
  133. package/dist/{render-WUSTRMUD.js → render-AWFQGD4T.js} +5 -5
  134. package/dist/{render-PTNEFO5U.js → render-BJMONGDL.js} +10 -10
  135. package/dist/{render-FKVRCDT2.js → render-YSD2SRBL.js} +57 -22
  136. package/dist/{render-batch-AQHU2JWZ.js → render-batch-6UN3HT5A.js} +5 -5
  137. package/dist/renderSetupWorker.js +3 -3
  138. package/dist/{resolver-L5BDZJKU.js → resolver-O6ZENVYP.js} +6 -6
  139. package/dist/{sherpa-3S3ISG7G.js → sherpa-RWHRDO53.js} +11 -11
  140. package/dist/skills/hyperframes-cli/SKILL.md +3 -0
  141. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +5 -1
  142. package/dist/{skills-X4WQEKNF.js → skills-KC6IGXDU.js} +5 -5
  143. package/dist/{skillsUpdateCheck-UYCVHDZ6.js → skillsUpdateCheck-7C4TD7EL.js} +3 -3
  144. package/dist/{snapshot-YEYHQEZQ.js → snapshot-SNZL5GPC.js} +118 -41
  145. package/dist/{src-OLBDPEG6.js → src-KKS6QEHB.js} +11 -11
  146. package/dist/{src-2NN2WB6X.js → src-YMUDUVXQ.js} +8 -8
  147. package/dist/{staticProjectServer-7H35NMWB.js → staticProjectServer-XOCIQ3FV.js} +20 -20
  148. package/dist/studio/assets/{hyperframes-player-DJt8E7k4.js → hyperframes-player-Cn6V2ZaK.js} +1 -1
  149. package/dist/studio/assets/{index-DgbLblGR.js → index-CEGNvZnK.js} +1 -1
  150. package/dist/studio/assets/{index-DWIHrAY2.js → index-CaaXbGyk.js} +1 -1
  151. package/dist/studio/assets/{index-BGks9KLI.js → index-Cwpnr4DV.js} +132 -132
  152. package/dist/studio/index.html +1 -1
  153. package/dist/{studio-api-HGM2A5I3.js → studio-api-NUNUZQ5I.js} +30 -16
  154. package/dist/{studioServer-M6XFL7N6.js → studioServer-FBY3YWZH.js} +43 -43
  155. package/dist/{synthesize-22B7L5GX.js → synthesize-W2M7QGDV.js} +6 -5
  156. package/dist/{telemetry-KVCZKVTE.js → telemetry-KNSTX3E2.js} +3 -3
  157. package/dist/{timeline-VYYKZR4V.js → timeline-6I5LGPP6.js} +20 -20
  158. package/dist/{tokens-B5NFFL55.js → tokens-MY4GOQ53.js} +2 -2
  159. package/dist/{transcribe-SBETOIWI.js → transcribe-56WECC4Y.js} +10 -10
  160. package/dist/{transcribe-WNFRYZAC.js → transcribe-ISCPZLQZ.js} +16 -16
  161. package/dist/{tts-QSAQZVEZ.js → tts-RE227GFP.js} +1 -1
  162. package/dist/{updateCheck-5MM2DFUC.js → updateCheck-FAG4T4AV.js} +2 -2
  163. package/dist/{upgrade-LWID54R3.js → upgrade-5QCPW55B.js} +2 -2
  164. package/dist/{urlDownloader-CVLNXFDG.js → urlDownloader-FGSJGUM7.js} +8 -8
  165. package/dist/{validate-V4CGQ6OF.js → validate-WC3FUSUF.js} +25 -25
  166. package/dist/{video-VJB2KRSS.js → video-DOFSWSSR.js} +9 -9
  167. package/package.json +1 -1
  168. package/dist/chunk-WBLXWOYK.js +0 -15
  169. package/dist/{screenshotCapture-TEUIWXWN.js → screenshotCapture-3JXXUZND.js} +3 -3
@@ -8,14 +8,19 @@ import {
8
8
  parseAngle
9
9
  } from "./chunk-KZI44OPA.js";
10
10
  import {
11
+ pngDimensions,
11
12
  reportArtifacts,
12
13
  withProjectLock
13
- } from "./chunk-DHPFXAUF.js";
14
+ } from "./chunk-57GN6KWT.js";
15
+ import {
16
+ captureArtifactRevision
17
+ } from "./chunk-3DMR7RF6.js";
18
+ import "./chunk-ZQMYD22O.js";
14
19
  import {
15
20
  serveStaticProjectHtml
16
- } from "./chunk-L3N7RJHS.js";
21
+ } from "./chunk-7NKLNOHW.js";
17
22
  import "./chunk-XUHOIDKG.js";
18
- import "./chunk-QLGBNGXC.js";
23
+ import "./chunk-TCJM3KF2.js";
19
24
  import "./chunk-X7MTZ4T2.js";
20
25
  import {
21
26
  DEFAULT_ZOOM_SCALE,
@@ -25,41 +30,46 @@ import {
25
30
  resolveCropRegion,
26
31
  runFfmpegOnce,
27
32
  seekCompositionTimeline
28
- } from "./chunk-RYL6ZIJP.js";
33
+ } from "./chunk-OIONMNWN.js";
29
34
  import "./chunk-FH7WODJH.js";
30
- import "./chunk-RRBKEHST.js";
31
- import "./chunk-HVXRYMGQ.js";
35
+ import "./chunk-KFBEMIMD.js";
36
+ import "./chunk-TXWPPBIW.js";
32
37
  import "./chunk-WPNE5NEP.js";
33
- import "./chunk-BRF3O35X.js";
34
- import "./chunk-XNDXENJQ.js";
35
- import "./chunk-FJWEYVEM.js";
36
- import "./chunk-XXPYZBZ3.js";
37
- import "./chunk-3ZPFRDEJ.js";
38
- import "./chunk-AIJS74LG.js";
38
+ import "./chunk-5FS4HCHN.js";
39
+ import "./chunk-WQMTHPTK.js";
40
+ import "./chunk-C6TPGUWD.js";
41
+ import {
42
+ artifactDirectory,
43
+ forgetRecordedArtifacts,
44
+ recordArtifacts
45
+ } from "./chunk-7FYFEXD2.js";
46
+ import "./chunk-PVGDU7SE.js";
47
+ import "./chunk-FFDC5OWV.js";
39
48
  import {
40
49
  resolveProject
41
- } from "./chunk-KXX6NLOT.js";
50
+ } from "./chunk-JQ57FAYN.js";
42
51
  import {
43
52
  formatLintFindings
44
53
  } from "./chunk-6CSYCFQV.js";
45
54
  import "./chunk-K2FLNJVB.js";
55
+ import "./chunk-DQBY7FRR.js";
46
56
  import {
47
57
  resolveLocalBrowserGpuMode
48
- } from "./chunk-ZGCRVM5M.js";
58
+ } from "./chunk-DAKXCEE3.js";
49
59
  import "./chunk-442JNXRM.js";
50
- import "./chunk-FAIYEIZ4.js";
60
+ import "./chunk-YYMJEQ4D.js";
51
61
  import "./chunk-XT7X6QCP.js";
52
62
  import "./chunk-4YYJOFKS.js";
53
63
  import "./chunk-HVW7ABXD.js";
54
- import "./chunk-XGLNQDLN.js";
55
- import "./chunk-N4IXP3MY.js";
56
- import "./chunk-YZTVHRJ2.js";
64
+ import "./chunk-PXOFFSO3.js";
65
+ import "./chunk-HGAOO43L.js";
66
+ import "./chunk-2XEBNYG5.js";
57
67
  import "./chunk-AWDFDFI3.js";
58
68
  import "./chunk-P6LJ4Y32.js";
59
69
  import "./chunk-GMECXFAN.js";
60
- import "./chunk-374QQGBQ.js";
61
- import "./chunk-ZD3RDNZI.js";
62
- import "./chunk-IZ7L6V76.js";
70
+ import "./chunk-5CS4T6C6.js";
71
+ import "./chunk-CBMZYOWC.js";
72
+ import "./chunk-AUK5QCRH.js";
63
73
  import "./chunk-VWG7OQKU.js";
64
74
  import "./chunk-XBSPQ52S.js";
65
75
  import {
@@ -82,7 +92,7 @@ import "./chunk-K4WIOZFP.js";
82
92
  import "./chunk-XUXGIA7H.js";
83
93
  import "./chunk-WERLJGIC.js";
84
94
  import "./chunk-ISN5GRYI.js";
85
- import "./chunk-TCWMDCBX.js";
95
+ import "./chunk-2X3UJ4Q3.js";
86
96
  import {
87
97
  loadOptionalPackage
88
98
  } from "./chunk-3DKN5WKL.js";
@@ -94,23 +104,23 @@ import {
94
104
  getFFmpegInstallHint
95
105
  } from "./chunk-4MLYMDQ4.js";
96
106
  import "./chunk-AMKC3AXA.js";
97
- import "./chunk-IZPN423R.js";
98
- import "./chunk-3SVC7SW4.js";
107
+ import "./chunk-2F6LWCSF.js";
108
+ import "./chunk-V6UUZGP6.js";
99
109
  import "./chunk-NE55C6S5.js";
100
110
  import "./chunk-JYVGYKXG.js";
101
111
  import {
102
112
  createRuntimeStartTimeResolver,
103
113
  isClipVisibleAt,
104
114
  isInClipWindow
105
- } from "./chunk-XQKVEQNY.js";
115
+ } from "./chunk-ZDEEHQ2Y.js";
106
116
  import {
107
117
  readElementRateSpec,
108
118
  sourceTimeAt,
109
119
  timeAtSourceTime
110
- } from "./chunk-QBYHNRHU.js";
120
+ } from "./chunk-GV7I3ZSQ.js";
111
121
  import "./chunk-VC76R6W2.js";
112
122
  import "./chunk-UJKQWGFF.js";
113
- import "./chunk-LFNQDTSH.js";
123
+ import "./chunk-VYKPBRCB.js";
114
124
  import "./chunk-OFQWTKPW.js";
115
125
  import "./chunk-DPVXBVLL.js";
116
126
  import "./chunk-T76PLPD6.js";
@@ -122,16 +132,16 @@ import {
122
132
  import "./chunk-TWWSYAKJ.js";
123
133
  import {
124
134
  lintProject
125
- } from "./chunk-GNTVYF7E.js";
135
+ } from "./chunk-YOEGUBBY.js";
126
136
  import "./chunk-IWFLMU2N.js";
127
- import "./chunk-APDLWWFG.js";
137
+ import "./chunk-3VGU2SH7.js";
128
138
  import "./chunk-VAS6HQX3.js";
129
139
  import "./chunk-3RM2ETQT.js";
130
140
  import "./chunk-BSQ7XANM.js";
131
141
  import {
132
142
  parseHTML
133
143
  } from "./chunk-SDYDNHEE.js";
134
- import "./chunk-2PSPARWP.js";
144
+ import "./chunk-TYXH3EKP.js";
135
145
  import "./chunk-IXLUTE6N.js";
136
146
  import {
137
147
  normalizeErrorMessage
@@ -190,6 +200,7 @@ function resolveSnapshotCompositionRange(html, durations, id, duration) {
190
200
  }
191
201
 
192
202
  // src/commands/snapshot.ts
203
+ import { randomUUID } from "crypto";
193
204
  import { existsSync, mkdtempSync, readFileSync, mkdirSync, rmSync, writeFileSync } from "fs";
194
205
  import { tmpdir } from "os";
195
206
  import { resolve, join, relative, isAbsolute, basename, posix } from "path";
@@ -429,18 +440,29 @@ function computeSnapshotTimes(duration, opts) {
429
440
  return { times: times.map(round), appendedTail: false };
430
441
  }
431
442
  async function captureSnapshots(projectDir, opts) {
432
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-26MXQOZG.js");
443
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-QX5HV7LC.js");
444
+ const capture = await captureArtifactRevision(projectDir).catch(warnSnapshotsNotRecorded);
445
+ const invocation = randomUUID();
446
+ const artifacts = [];
447
+ const replaced = [];
448
+ const warnings = [];
449
+ let completed = false;
433
450
  const numFrames = opts.frames ?? 5;
434
451
  const html = await bundleWithLocalizedFonts(projectDir);
435
452
  const server = await serveStaticProjectHtml(projectDir, html, void 0, [], opts.autoProxy);
436
453
  const savedPaths = [];
437
454
  try {
438
- const { browser: chromeBrowser, page } = await openSettledCompositionPage(html, server.url, {
455
+ const {
456
+ browser: chromeBrowser,
457
+ page,
458
+ renderReadyTimedOut
459
+ } = await openSettledCompositionPage(html, server.url, {
439
460
  renderReadyTimeoutMs: opts.timeout ?? 5e3,
440
461
  renderReadyWarningSuffix: "snapshots may be inaccurate",
441
462
  browserGpuMode: opts.browserGpuMode
442
463
  });
443
464
  try {
465
+ if (renderReadyTimedOut) warnings.push("Render readiness timed out");
444
466
  const fontReport = await page.evaluate(() => {
445
467
  const loaded = [];
446
468
  const errored = [];
@@ -463,6 +485,8 @@ async function captureSnapshots(projectDir, opts) {
463
485
  console.log(` ${c.error("Fonts FAILED:")} ${fontReport.errored.join(", ")}`);
464
486
  }
465
487
  }
488
+ if (fontReport.errored.length)
489
+ warnings.push(`Fonts failed: ${fontReport.errored.join(", ")}`);
466
490
  const duration = await page.evaluate(() => {
467
491
  const win = window;
468
492
  if (typeof win.__player?.getDuration === "function") {
@@ -512,13 +536,15 @@ async function captureSnapshots(projectDir, opts) {
512
536
  );
513
537
  }
514
538
  const cameraExpr = opts.angle && (opts.angle.yaw !== 0 || opts.angle.pitch !== 0) ? `(${orbitStageSource()})(${JSON.stringify(opts.angle)})` : null;
515
- const snapshotDir = opts.outputDir ?? join(projectDir, "snapshots");
539
+ const snapshotDir = opts.outputDir ?? artifactDirectory(projectDir, "snapshots");
516
540
  mkdirSync(snapshotDir, { recursive: true });
517
541
  try {
518
542
  const { readdirSync } = await import("fs");
519
543
  for (const file of readdirSync(snapshotDir)) {
520
544
  if (/\.(png|jpg|jpeg)$/i.test(file)) {
521
- rmSync(join(snapshotDir, file), { force: true });
545
+ const path = resolve(snapshotDir, file);
546
+ replaced.push(path);
547
+ rmSync(path, { force: true });
522
548
  }
523
549
  }
524
550
  } catch {
@@ -527,11 +553,12 @@ async function captureSnapshots(projectDir, opts) {
527
553
  let syncVideoFrameVisibility = null;
528
554
  let extractMediaMetadata = null;
529
555
  try {
530
- const engine = await import("./src-2NN2WB6X.js");
556
+ const engine = await import("./src-YMUDUVXQ.js");
531
557
  injectVideoFramesBatch = engine.injectVideoFramesBatch;
532
558
  syncVideoFrameVisibility = engine.syncVideoFrameVisibility;
533
559
  extractMediaMetadata = engine.extractMediaMetadata;
534
560
  } catch {
561
+ warnings.push("Video frame extraction engine unavailable");
535
562
  console.warn(
536
563
  ` ${c.warn("\u26A0")} @hyperframes/engine unavailable \u2014 <video> elements will appear black in snapshots. Verify media via a draft render's extracted frames instead.`
537
564
  );
@@ -634,6 +661,7 @@ async function captureSnapshots(projectDir, opts) {
634
661
  }
635
662
  if (active.length > 0 && updates.length < active.length) {
636
663
  const missed = active.length - updates.length;
664
+ warnings.push(`${missed} video frames missing at ${time}s`);
637
665
  console.warn(
638
666
  ` ${c.warn("\u26A0")} ${missed}/${active.length} active <video> frame(s) could not be extracted at ${time.toFixed(1)}s \u2014 those videos will appear black/stale in this snapshot`
639
667
  );
@@ -647,6 +675,7 @@ async function captureSnapshots(projectDir, opts) {
647
675
  active.map((a) => a.id)
648
676
  );
649
677
  } catch {
678
+ warnings.push(`Video injection failed at ${time}s`);
650
679
  console.warn(
651
680
  ` ${c.warn("\u26A0")} video frame injection failed at ${time.toFixed(1)}s \u2014 <video> elements will appear black/stale in this snapshot`
652
681
  );
@@ -657,6 +686,7 @@ async function captureSnapshots(projectDir, opts) {
657
686
  const index = String(i).padStart(2, "0");
658
687
  const filename = `frame-${index}-at-${timeLabel}.png`;
659
688
  const framePath = join(snapshotDir, filename);
689
+ let crop;
660
690
  if (opts.zoom) {
661
691
  const canvas = await page.evaluate(() => ({
662
692
  width: window.innerWidth,
@@ -664,11 +694,13 @@ async function captureSnapshots(projectDir, opts) {
664
694
  }));
665
695
  const region = await resolveCropRegion(page, opts.zoom, canvas);
666
696
  if (!region) {
697
+ warnings.push(`Crop target unavailable at ${time}s`);
667
698
  console.error(
668
699
  ` ${c.warn("\u26A0")} --zoom target has no visible box at ${time.toFixed(1)}s \u2014 frame skipped`
669
700
  );
670
701
  continue;
671
702
  }
703
+ crop = region;
672
704
  const buffer = await captureRegionCrop(
673
705
  page,
674
706
  region,
@@ -678,6 +710,19 @@ async function captureSnapshots(projectDir, opts) {
678
710
  } else {
679
711
  await page.screenshot({ path: framePath, type: "png", omitBackground: true });
680
712
  }
713
+ artifacts.push({
714
+ id: `${invocation}-${i}`,
715
+ image: resolve(framePath),
716
+ time,
717
+ metadata: {
718
+ ...pngDimensions(framePath),
719
+ crop,
720
+ zoom: opts.zoom,
721
+ zoomScale: opts.zoom ? opts.zoomScale ?? DEFAULT_ZOOM_SCALE : 1,
722
+ angle: opts.angle,
723
+ browserGpuMode: opts.browserGpuMode
724
+ }
725
+ });
681
726
  if (opts.against) {
682
727
  const refPng = await extractVideoFrameToBuffer(opts.against, time);
683
728
  if (!refPng) {
@@ -701,14 +746,48 @@ async function captureSnapshots(projectDir, opts) {
701
746
  const rel = relative(projectDir, framePath);
702
747
  savedPaths.push(rel.startsWith("..") || isAbsolute(rel) ? framePath : rel);
703
748
  }
749
+ completed = true;
704
750
  } finally {
705
751
  await chromeBrowser.close();
706
752
  }
707
753
  } finally {
708
754
  await server.close();
755
+ const recorded = capture ? await recordSnapshotArtifacts(
756
+ projectDir,
757
+ capture,
758
+ artifacts,
759
+ opts.zoom,
760
+ warnings,
761
+ completed
762
+ ) : false;
763
+ if (!recorded) {
764
+ const paths = [...replaced, ...artifacts.map((artifact) => artifact.image)];
765
+ if (paths.length > 0) await forgetRecordedArtifacts(projectDir, paths).catch(() => void 0);
766
+ }
709
767
  }
710
768
  return savedPaths;
711
769
  }
770
+ function warnSnapshotsNotRecorded(error) {
771
+ console.warn(` ${c.warn("\u26A0")} Snapshots were not recorded: ${normalizeErrorMessage(error)}`);
772
+ return void 0;
773
+ }
774
+ async function recordSnapshotArtifacts(projectDir, capture, artifacts, zoom, warnings, completed) {
775
+ const records = await recordArtifacts(
776
+ projectDir,
777
+ capture,
778
+ artifacts.map((artifact) => ({
779
+ kind: "snapshot",
780
+ scope: zoom ? "crop" : "full",
781
+ ...artifact,
782
+ metadata: { ...artifact.metadata, warnings, partial: !completed || warnings.length > 0 }
783
+ }))
784
+ ).catch(warnSnapshotsNotRecorded);
785
+ const record = records?.[0];
786
+ if (!record) return false;
787
+ console.log(` Revision: ${record.revision ?? "none"} (${record.attribution})`);
788
+ console.log(` State: ${join(projectDir, ".hyperframes", "video-state.json")}`);
789
+ return true;
790
+ }
712
791
  var snapshot_default = defineCommand({
713
792
  meta: {
714
793
  name: "snapshot",
@@ -723,7 +802,7 @@ var snapshot_default = defineCommand({
723
802
  output: {
724
803
  type: "string",
725
804
  alias: "o",
726
- description: "Directory to write snapshots into (default: <project>/snapshots)"
805
+ description: "Directory to write snapshots into (default: unique directory under <project>/.hyperframes/artifacts/snapshots)"
727
806
  },
728
807
  frames: {
729
808
  type: "string",
@@ -834,7 +913,7 @@ var snapshot_default = defineCommand({
834
913
  const angleLabel = camera && (camera.yaw !== 0 || camera.pitch !== 0) ? ` ${c.dim(`(angle yaw ${camera.yaw}\xB0 pitch ${camera.pitch}\xB0)`)}` : "";
835
914
  console.log(`${c.accent("\u25C6")} Capturing ${label} from ${c.accent(project.name)}${angleLabel}`);
836
915
  try {
837
- const snapshotDir = args.output ? resolve(String(args.output)) : join(project.dir, "snapshots");
916
+ const snapshotDir = args.output ? resolve(String(args.output)) : artifactDirectory(project.dir, "snapshots");
838
917
  await withProjectLock(project.dir, "snapshot", async () => {
839
918
  const paths = await captureSnapshots(project.dir, {
840
919
  frames,
@@ -863,10 +942,8 @@ ${c.error("\u2717")} Could not determine composition duration \u2014 no frames c
863
942
  );
864
943
  failCommand();
865
944
  }
866
- console.log(
867
- `
868
- ${c.success("\u25C7")} ${paths.length} snapshots saved to ${args.output ? snapshotDir : "snapshots/"}`
869
- );
945
+ console.log(`
946
+ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${snapshotDir}`);
870
947
  for (const p of paths) {
871
948
  console.log(` ${p}`);
872
949
  }
@@ -69,16 +69,16 @@ import {
69
69
  serializeRenderRequest,
70
70
  startServer,
71
71
  validatePlanV2MaterializedTarget
72
- } from "./chunk-N3I6RAOR.js";
72
+ } from "./chunk-GXPD7J53.js";
73
73
  import {
74
74
  FONT_FETCH_FAILED,
75
75
  FONT_FETCH_UNAVAILABLE,
76
76
  FontFetchError,
77
77
  FontFetchUnavailableError,
78
78
  injectDeterministicFontFaces
79
- } from "./chunk-FMNVTKX2.js";
79
+ } from "./chunk-U3BCDVZO.js";
80
80
  import "./chunk-FI4I7CME.js";
81
- import "./chunk-XYHBVSWD.js";
81
+ import "./chunk-RCWSM7IQ.js";
82
82
  import "./chunk-EOOEC32M.js";
83
83
  import "./chunk-TJSTGSAW.js";
84
84
  import "./chunk-BZ56MTDX.js";
@@ -95,31 +95,31 @@ import {
95
95
  isTransientBrowserError,
96
96
  prepareCaptureSessionForReuse,
97
97
  resolveConfig
98
- } from "./chunk-IZPN423R.js";
99
- import "./chunk-3SVC7SW4.js";
98
+ } from "./chunk-2F6LWCSF.js";
99
+ import "./chunk-V6UUZGP6.js";
100
100
  import "./chunk-NE55C6S5.js";
101
101
  import "./chunk-JYVGYKXG.js";
102
102
  import {
103
103
  quantizeTimeToFrame
104
- } from "./chunk-XQKVEQNY.js";
105
- import "./chunk-QBYHNRHU.js";
104
+ } from "./chunk-ZDEEHQ2Y.js";
105
+ import "./chunk-GV7I3ZSQ.js";
106
106
  import "./chunk-VC76R6W2.js";
107
107
  import "./chunk-UJKQWGFF.js";
108
- import "./chunk-LFNQDTSH.js";
108
+ import "./chunk-VYKPBRCB.js";
109
109
  import "./chunk-OFQWTKPW.js";
110
110
  import "./chunk-DPVXBVLL.js";
111
111
  import "./chunk-T76PLPD6.js";
112
112
  import "./chunk-FXMKHHPO.js";
113
113
  import "./chunk-RQVDTPGD.js";
114
114
  import "./chunk-TWWSYAKJ.js";
115
- import "./chunk-GNTVYF7E.js";
115
+ import "./chunk-YOEGUBBY.js";
116
116
  import "./chunk-IWFLMU2N.js";
117
- import "./chunk-APDLWWFG.js";
117
+ import "./chunk-3VGU2SH7.js";
118
118
  import "./chunk-VAS6HQX3.js";
119
119
  import "./chunk-3RM2ETQT.js";
120
120
  import "./chunk-BSQ7XANM.js";
121
121
  import "./chunk-SDYDNHEE.js";
122
- import "./chunk-2PSPARWP.js";
122
+ import "./chunk-TYXH3EKP.js";
123
123
  import "./chunk-IXLUTE6N.js";
124
124
  import "./chunk-3GXQPCJC.js";
125
125
  import "./chunk-M2WBOQ2Q.js";
@@ -216,8 +216,8 @@ import {
216
216
  verifyGpuParity,
217
217
  writeCapturedFrame,
218
218
  writeUrlDownloadTelemetry
219
- } from "./chunk-IZPN423R.js";
220
- import "./chunk-3SVC7SW4.js";
219
+ } from "./chunk-2F6LWCSF.js";
220
+ import "./chunk-V6UUZGP6.js";
221
221
  import "./chunk-NE55C6S5.js";
222
222
  import {
223
223
  LOW_MEMORY_TOTAL_MB_THRESHOLD,
@@ -228,11 +228,11 @@ import {
228
228
  import {
229
229
  MEDIA_VISUAL_STYLE_PROPERTIES,
230
230
  quantizeTimeToFrame
231
- } from "./chunk-XQKVEQNY.js";
232
- import "./chunk-QBYHNRHU.js";
231
+ } from "./chunk-ZDEEHQ2Y.js";
232
+ import "./chunk-GV7I3ZSQ.js";
233
233
  import "./chunk-VC76R6W2.js";
234
234
  import "./chunk-UJKQWGFF.js";
235
- import "./chunk-LFNQDTSH.js";
235
+ import "./chunk-VYKPBRCB.js";
236
236
  import "./chunk-OFQWTKPW.js";
237
237
  import "./chunk-DPVXBVLL.js";
238
238
  import "./chunk-T76PLPD6.js";
@@ -241,11 +241,11 @@ import "./chunk-RQVDTPGD.js";
241
241
  import {
242
242
  chromeMajorCeiling
243
243
  } from "./chunk-TWWSYAKJ.js";
244
- import "./chunk-GNTVYF7E.js";
244
+ import "./chunk-YOEGUBBY.js";
245
245
  import {
246
246
  resolveProjectRelativeSrc
247
247
  } from "./chunk-IWFLMU2N.js";
248
- import "./chunk-APDLWWFG.js";
248
+ import "./chunk-3VGU2SH7.js";
249
249
  import {
250
250
  FFMPEG_PATH_ENV,
251
251
  FFPROBE_PATH_ENV
@@ -253,7 +253,7 @@ import {
253
253
  import "./chunk-3RM2ETQT.js";
254
254
  import "./chunk-BSQ7XANM.js";
255
255
  import "./chunk-SDYDNHEE.js";
256
- import "./chunk-2PSPARWP.js";
256
+ import "./chunk-TYXH3EKP.js";
257
257
  import "./chunk-IXLUTE6N.js";
258
258
  import {
259
259
  TRANSITIONS,
@@ -6,50 +6,50 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  serveStaticProjectHtml
9
- } from "./chunk-L3N7RJHS.js";
9
+ } from "./chunk-7NKLNOHW.js";
10
10
  import "./chunk-XUHOIDKG.js";
11
- import "./chunk-QLGBNGXC.js";
11
+ import "./chunk-TCJM3KF2.js";
12
12
  import "./chunk-X7MTZ4T2.js";
13
- import "./chunk-BRF3O35X.js";
14
- import "./chunk-XNDXENJQ.js";
15
- import "./chunk-FJWEYVEM.js";
16
- import "./chunk-XXPYZBZ3.js";
17
- import "./chunk-3ZPFRDEJ.js";
18
- import "./chunk-AIJS74LG.js";
19
- import "./chunk-FAIYEIZ4.js";
13
+ import "./chunk-5FS4HCHN.js";
14
+ import "./chunk-WQMTHPTK.js";
15
+ import "./chunk-C6TPGUWD.js";
16
+ import "./chunk-7FYFEXD2.js";
17
+ import "./chunk-PVGDU7SE.js";
18
+ import "./chunk-FFDC5OWV.js";
19
+ import "./chunk-YYMJEQ4D.js";
20
20
  import "./chunk-XT7X6QCP.js";
21
21
  import "./chunk-4YYJOFKS.js";
22
22
  import "./chunk-HVW7ABXD.js";
23
- import "./chunk-XGLNQDLN.js";
24
- import "./chunk-N4IXP3MY.js";
25
- import "./chunk-YZTVHRJ2.js";
23
+ import "./chunk-PXOFFSO3.js";
24
+ import "./chunk-HGAOO43L.js";
25
+ import "./chunk-2XEBNYG5.js";
26
26
  import "./chunk-AWDFDFI3.js";
27
27
  import "./chunk-P6LJ4Y32.js";
28
28
  import "./chunk-GMECXFAN.js";
29
- import "./chunk-374QQGBQ.js";
29
+ import "./chunk-5CS4T6C6.js";
30
30
  import "./chunk-EOOEC32M.js";
31
31
  import "./chunk-TJSTGSAW.js";
32
32
  import "./chunk-EOVYQ3IG.js";
33
- import "./chunk-3SVC7SW4.js";
33
+ import "./chunk-V6UUZGP6.js";
34
34
  import "./chunk-NE55C6S5.js";
35
- import "./chunk-XQKVEQNY.js";
36
- import "./chunk-QBYHNRHU.js";
35
+ import "./chunk-ZDEEHQ2Y.js";
36
+ import "./chunk-GV7I3ZSQ.js";
37
37
  import "./chunk-VC76R6W2.js";
38
38
  import "./chunk-UJKQWGFF.js";
39
- import "./chunk-LFNQDTSH.js";
39
+ import "./chunk-VYKPBRCB.js";
40
40
  import "./chunk-OFQWTKPW.js";
41
41
  import "./chunk-DPVXBVLL.js";
42
42
  import "./chunk-T76PLPD6.js";
43
43
  import "./chunk-FXMKHHPO.js";
44
44
  import "./chunk-RQVDTPGD.js";
45
- import "./chunk-GNTVYF7E.js";
45
+ import "./chunk-YOEGUBBY.js";
46
46
  import "./chunk-IWFLMU2N.js";
47
- import "./chunk-APDLWWFG.js";
47
+ import "./chunk-3VGU2SH7.js";
48
48
  import "./chunk-VAS6HQX3.js";
49
49
  import "./chunk-3RM2ETQT.js";
50
50
  import "./chunk-BSQ7XANM.js";
51
51
  import "./chunk-SDYDNHEE.js";
52
- import "./chunk-2PSPARWP.js";
52
+ import "./chunk-TYXH3EKP.js";
53
53
  import "./chunk-IXLUTE6N.js";
54
54
  import "./chunk-M2WBOQ2Q.js";
55
55
  export {
@@ -1,4 +1,4 @@
1
- var xe=Object.defineProperty;var Ie=(r,i,e)=>i in r?xe(r,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[i]=e;var l=(r,i,e)=>Ie(r,typeof i!="symbol"?i+"":i,e);import{S as Oe,r as Ne,a as fe,i as Fe,b as w,c as _e,p as Ve,d as Ue,e as He,f as We,s as ze,g as ge,F as ye}from"./index-BGks9KLI.js";function $e(r){return r.hasRuntime||r.runtimeInjected?!1:!!(r.hasNestedCompositions||r.hasTimelines&&r.attempts>=5)}function x(r){return typeof r=="object"&&r!==null}function je(r){return x(r)&&typeof r.getDuration=="function"}function Be(r){return x(r)&&typeof r.duration=="function"&&typeof r.time=="function"&&typeof r.seek=="function"&&typeof r.play=="function"&&typeof r.pause=="function"}function qe(r){if(!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(r))throw new Error(`Invalid HyperFrames runtime version: ${r}`);return`https://cdn.jsdelivr.net/npm/@hyperframes/core@${r}/dist/hyperframe.runtime.iife.js`}const W=typeof __HYPERFRAMES_RUNTIME_CDN_URL__=="string"?__HYPERFRAMES_RUNTIME_CDN_URL__:qe("0.0.0-dev");function $(r){if(r===null)return null;const i=Number.parseInt(r,10);return Number.isFinite(i)&&i>0?i:null}function Ge(r){const i=(r==null?void 0:r.querySelector("[data-composition-id][data-width][data-height]"))??(r==null?void 0:r.querySelector("[data-width][data-height]"));if(!i)return null;const e=$(i.getAttribute("data-width")),t=$(i.getAttribute("data-height"));return e!==null&&t!==null?{width:e,height:t}:null}function Ye(r){return Array.isArray(r)?r.find(i=>typeof i=="string"&&i.trim()!==""&&i!=="[object Event]")??null:null}class Xe{constructor(i,e){l(this,"_interval",null);l(this,"_runtimeInjected",!1);l(this,"_runtimeScript",null);l(this,"_failure",null);this._iframe=i,this._callbacks=e}get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let i=0;this._interval=setInterval(()=>{i++;let e=null;try{e=this._poll(i)}catch(t){t instanceof DOMException&&t.name==="SecurityError"||(e={kind:"error",message:t instanceof Error?t.message:String(t)})}if(e){this.stop(),e.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(e.message)):this._callbacks.onReady(e.result);return}i>=40&&(this.stop(),this._failure={document:this._iframe.contentDocument},this._callbacks.onError("Composition timeline not found after 8s"))},200)}_poll(i){const e=this._iframe.contentWindow;if(!e)return null;const t=Ye(Reflect.get(e,Oe));if(t!==null)return{kind:"error",message:t};const s=this._iframe.contentDocument,n=Reflect.get(e,"__timelines"),o=this.hasRuntimeBridge(e);if($e({hasRuntime:o,hasTimelines:x(n)&&Object.keys(n).length>0,hasNestedCompositions:!!(s!=null&&s.querySelector("[data-composition-src]")),runtimeInjected:this._runtimeInjected,attempts:i}))return this._injectRuntime(),null;if(this._runtimeInjected&&!o)return null;const a=this._resolveReadyResult(e,s);return a?{kind:"ready",result:a}:null}_resolveReadyResult(i,e){var n;const t=this._resolvePlaybackDurationAdapter(i)??{kind:"document",getDuration:()=>0};let s=t.getDuration();if(!Number.isFinite(s)||s<=0){if(t.kind==="direct-timeline")return null;s=e?((n=Ne(e))==null?void 0:n.durationSeconds)??0:0}return s<=0?null:{duration:s,adapter:{...t,getDuration:()=>s},compositionSize:Ge(e)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{const i=this._iframe.contentWindow;return i?this._resolveDirectTimelineAdapterFromWindow(i):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(i){return this._resolveDirectTimelineAdapterFromWindow(i)}hasRuntimeBridge(i){return x(Reflect.get(i,"__player"))}_injectRuntime(){var i,e,t,s;this._runtimeInjected=!0;try{const n=this._iframe.contentDocument;if(!n)return;const o=n.createElement("script");o.src=((e=(i=this._callbacks).resolveRuntimeUrl)==null?void 0:e.call(i))??W,this._runtimeScript=o,o.onerror=()=>{this._runtimeScript!==o||this._iframe.contentDocument!==n||(this.stop(),this._failure={document:n},this._callbacks.onError("HyperFrames runtime failed to load from "+o.src))},(n.head||n.documentElement).appendChild(o),(s=(t=this._callbacks).onRuntimeInjected)==null||s.call(t)}catch{}}_resolveDirectTimelineAdapterFromWindow(i){var a,c;if(this.hasRuntimeBridge(i))return null;const e=Reflect.get(i,"__timelines");if(!x(e))return null;const t=Object.keys(e);if(t.length===0)return null;const s=(c=(a=this._iframe.contentDocument)==null?void 0:a.querySelector("[data-composition-id]"))==null?void 0:c.getAttribute("data-composition-id"),n=s&&s in e?s:t[t.length-1],o=e[n];return Be(o)?o:null}_resolvePlaybackDurationAdapter(i){const e=Reflect.get(i,"__player");if(je(e))return{kind:"runtime",getDuration:()=>e.getDuration()};const t=this._resolveDirectTimelineAdapterFromWindow(i);return t?{kind:"direct-timeline",timeline:t,getDuration:()=>t.duration()}:null}}const Ze=`
1
+ var xe=Object.defineProperty;var Ie=(r,i,e)=>i in r?xe(r,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[i]=e;var l=(r,i,e)=>Ie(r,typeof i!="symbol"?i+"":i,e);import{S as Oe,r as Ne,a as fe,i as Fe,b as w,c as _e,p as Ve,d as Ue,e as He,f as We,s as ze,g as ge,F as ye}from"./index-Cwpnr4DV.js";function $e(r){return r.hasRuntime||r.runtimeInjected?!1:!!(r.hasNestedCompositions||r.hasTimelines&&r.attempts>=5)}function x(r){return typeof r=="object"&&r!==null}function je(r){return x(r)&&typeof r.getDuration=="function"}function Be(r){return x(r)&&typeof r.duration=="function"&&typeof r.time=="function"&&typeof r.seek=="function"&&typeof r.play=="function"&&typeof r.pause=="function"}function qe(r){if(!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(r))throw new Error(`Invalid HyperFrames runtime version: ${r}`);return`https://cdn.jsdelivr.net/npm/@hyperframes/core@${r}/dist/hyperframe.runtime.iife.js`}const W=typeof __HYPERFRAMES_RUNTIME_CDN_URL__=="string"?__HYPERFRAMES_RUNTIME_CDN_URL__:qe("0.0.0-dev");function $(r){if(r===null)return null;const i=Number.parseInt(r,10);return Number.isFinite(i)&&i>0?i:null}function Ge(r){const i=(r==null?void 0:r.querySelector("[data-composition-id][data-width][data-height]"))??(r==null?void 0:r.querySelector("[data-width][data-height]"));if(!i)return null;const e=$(i.getAttribute("data-width")),t=$(i.getAttribute("data-height"));return e!==null&&t!==null?{width:e,height:t}:null}function Ye(r){return Array.isArray(r)?r.find(i=>typeof i=="string"&&i.trim()!==""&&i!=="[object Event]")??null:null}class Xe{constructor(i,e){l(this,"_interval",null);l(this,"_runtimeInjected",!1);l(this,"_runtimeScript",null);l(this,"_failure",null);this._iframe=i,this._callbacks=e}get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let i=0;this._interval=setInterval(()=>{i++;let e=null;try{e=this._poll(i)}catch(t){t instanceof DOMException&&t.name==="SecurityError"||(e={kind:"error",message:t instanceof Error?t.message:String(t)})}if(e){this.stop(),e.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(e.message)):this._callbacks.onReady(e.result);return}i>=40&&(this.stop(),this._failure={document:this._iframe.contentDocument},this._callbacks.onError("Composition timeline not found after 8s"))},200)}_poll(i){const e=this._iframe.contentWindow;if(!e)return null;const t=Ye(Reflect.get(e,Oe));if(t!==null)return{kind:"error",message:t};const s=this._iframe.contentDocument,n=Reflect.get(e,"__timelines"),o=this.hasRuntimeBridge(e);if($e({hasRuntime:o,hasTimelines:x(n)&&Object.keys(n).length>0,hasNestedCompositions:!!(s!=null&&s.querySelector("[data-composition-src]")),runtimeInjected:this._runtimeInjected,attempts:i}))return this._injectRuntime(),null;if(this._runtimeInjected&&!o)return null;const a=this._resolveReadyResult(e,s);return a?{kind:"ready",result:a}:null}_resolveReadyResult(i,e){var n;const t=this._resolvePlaybackDurationAdapter(i)??{kind:"document",getDuration:()=>0};let s=t.getDuration();if(!Number.isFinite(s)||s<=0){if(t.kind==="direct-timeline")return null;s=e?((n=Ne(e))==null?void 0:n.durationSeconds)??0:0}return s<=0?null:{duration:s,adapter:{...t,getDuration:()=>s},compositionSize:Ge(e)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{const i=this._iframe.contentWindow;return i?this._resolveDirectTimelineAdapterFromWindow(i):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(i){return this._resolveDirectTimelineAdapterFromWindow(i)}hasRuntimeBridge(i){return x(Reflect.get(i,"__player"))}_injectRuntime(){var i,e,t,s;this._runtimeInjected=!0;try{const n=this._iframe.contentDocument;if(!n)return;const o=n.createElement("script");o.src=((e=(i=this._callbacks).resolveRuntimeUrl)==null?void 0:e.call(i))??W,this._runtimeScript=o,o.onerror=()=>{this._runtimeScript!==o||this._iframe.contentDocument!==n||(this.stop(),this._failure={document:n},this._callbacks.onError("HyperFrames runtime failed to load from "+o.src))},(n.head||n.documentElement).appendChild(o),(s=(t=this._callbacks).onRuntimeInjected)==null||s.call(t)}catch{}}_resolveDirectTimelineAdapterFromWindow(i){var a,c;if(this.hasRuntimeBridge(i))return null;const e=Reflect.get(i,"__timelines");if(!x(e))return null;const t=Object.keys(e);if(t.length===0)return null;const s=(c=(a=this._iframe.contentDocument)==null?void 0:a.querySelector("[data-composition-id]"))==null?void 0:c.getAttribute("data-composition-id"),n=s&&s in e?s:t[t.length-1],o=e[n];return Be(o)?o:null}_resolvePlaybackDurationAdapter(i){const e=Reflect.get(i,"__player");if(je(e))return{kind:"runtime",getDuration:()=>e.getDuration()};const t=this._resolveDirectTimelineAdapterFromWindow(i);return t?{kind:"direct-timeline",timeline:t,getDuration:()=>t.duration()}:null}}const Ze=`
2
2
  :host {
3
3
  display: block;
4
4
  position: relative;
@@ -1,4 +1,4 @@
1
- import{n as Qi}from"./index-BGks9KLI.js";/*!
1
+ import{n as Qi}from"./index-Cwpnr4DV.js";/*!
2
2
  * Copyright (c) 2026-present, Vanilagy and contributors
3
3
  *
4
4
  * This Source Code Form is subject to the terms of the Mozilla Public
@@ -1 +1 @@
1
- import{h as P}from"./index-BGks9KLI.js";function j(c,d){for(var s=0;s<d.length;s++){const a=d[s];if(typeof a!="string"&&!Array.isArray(a)){for(const i in a)if(i!=="default"&&!(i in c)){const l=Object.getOwnPropertyDescriptor(a,i);l&&Object.defineProperty(c,i,l.get?l:{enumerable:!0,get:()=>a[i]})}}}return Object.freeze(Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}))}var v={},w;function k(){if(w)return v;w=1,Object.defineProperty(v,"__esModule",{value:!0}),v.default=d;var c=window.OfflineAudioContext||window.webkitOfflineAudioContext;function d(e){var r=a(e);return r.start(0),[i,y,O(e.sampleRate),s].reduce(function(t,o){return o(t)},r.buffer.getChannelData(0))}function s(e){return e.sort(function(r,t){return t.count-r.count}).splice(0,5)[0].tempo}function a(e){var r=e.length,t=e.numberOfChannels,o=e.sampleRate,n=new c(t,r,o),u=n.createBufferSource();u.buffer=e;var f=n.createBiquadFilter();return f.type="lowpass",u.connect(f),f.connect(n.destination),u}function i(e){for(var r=[],t=.9,o=.3,n=15;r.length<n&&t>=o;)r=l(e,t),t-=.05;if(r.length<n)throw new Error("Could not find enough samples for a reliable detection.");return r}function l(e,r){for(var t=[],o=0,n=e.length;o<n;o+=1)e[o]>r&&(t.push(o),o+=1e4);return t}function y(e){var r=[];return e.forEach(function(t,o){for(var n=function(x){var h=e[o+x]-t,_=r.some(function(g){if(g.interval===h)return g.count+=1});_||r.push({interval:h,count:1})},u=0;u<10;u+=1)n(u)}),r}function O(e){return function(r){var t=[];return r.forEach(function(o){if(o.interval!==0){for(var n=60/(o.interval/e);n<90;)n*=2;for(;n>180;)n/=2;n=Math.round(n);var u=t.some(function(f){if(f.tempo===n)return f.count+=o.count});u||t.push({tempo:n,count:o.count})}}),t}}return v}var p,b;function q(){return b||(b=1,p=k().default),p}var m=q();const A=P(m),D=j({__proto__:null,default:A},[m]);export{D as i};
1
+ import{h as P}from"./index-Cwpnr4DV.js";function j(c,d){for(var s=0;s<d.length;s++){const a=d[s];if(typeof a!="string"&&!Array.isArray(a)){for(const i in a)if(i!=="default"&&!(i in c)){const l=Object.getOwnPropertyDescriptor(a,i);l&&Object.defineProperty(c,i,l.get?l:{enumerable:!0,get:()=>a[i]})}}}return Object.freeze(Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}))}var v={},w;function k(){if(w)return v;w=1,Object.defineProperty(v,"__esModule",{value:!0}),v.default=d;var c=window.OfflineAudioContext||window.webkitOfflineAudioContext;function d(e){var r=a(e);return r.start(0),[i,y,O(e.sampleRate),s].reduce(function(t,o){return o(t)},r.buffer.getChannelData(0))}function s(e){return e.sort(function(r,t){return t.count-r.count}).splice(0,5)[0].tempo}function a(e){var r=e.length,t=e.numberOfChannels,o=e.sampleRate,n=new c(t,r,o),u=n.createBufferSource();u.buffer=e;var f=n.createBiquadFilter();return f.type="lowpass",u.connect(f),f.connect(n.destination),u}function i(e){for(var r=[],t=.9,o=.3,n=15;r.length<n&&t>=o;)r=l(e,t),t-=.05;if(r.length<n)throw new Error("Could not find enough samples for a reliable detection.");return r}function l(e,r){for(var t=[],o=0,n=e.length;o<n;o+=1)e[o]>r&&(t.push(o),o+=1e4);return t}function y(e){var r=[];return e.forEach(function(t,o){for(var n=function(x){var h=e[o+x]-t,_=r.some(function(g){if(g.interval===h)return g.count+=1});_||r.push({interval:h,count:1})},u=0;u<10;u+=1)n(u)}),r}function O(e){return function(r){var t=[];return r.forEach(function(o){if(o.interval!==0){for(var n=60/(o.interval/e);n<90;)n*=2;for(;n>180;)n/=2;n=Math.round(n);var u=t.some(function(f){if(f.tempo===n)return f.count+=o.count});u||t.push({tempo:n,count:o.count})}}),t}}return v}var p,b;function q(){return b||(b=1,p=k().default),p}var m=q();const A=P(m),D=j({__proto__:null,default:A},[m]);export{D as i};