hyperframes 0.8.141 → 0.8.143

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 (200) hide show
  1. package/dist/{add-KH2CF4FD.js → add-Q5EYDUAY.js} +18 -17
  2. package/dist/{animatedGifPrep-QO4BSKR7.js → animatedGifPrep-H2DUQEZ3.js} +15 -15
  3. package/dist/{asset-4RDZILVJ.js → asset-C7JBYYX4.js} +4 -4
  4. package/dist/{assetCataloger-WGR4LYYN.js → assetCataloger-FRO4G6OU.js} +8 -7
  5. package/dist/{auth-WYQCOYE5.js → auth-FRWLCO36.js} +5 -4
  6. package/dist/{autoUpdate-PC5TN3NL.js → autoUpdate-E4OZXQK6.js} +2 -2
  7. package/dist/{backgroundChecks-7M3T44EP.js → backgroundChecks-FSUVHN5L.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-GOLLOE4V.js → batchRender-4U73BYTU.js} +11 -10
  10. package/dist/{beats-XJ7WP6QS.js → beats-U6KJWF35.js} +32 -28
  11. package/dist/{benchmark-HCGFBEZJ.js → benchmark-5ONT7V7B.js} +15 -14
  12. package/dist/{browser-VQKO2FKG.js → browser-R4DU46IE.js} +4 -4
  13. package/dist/{bundleWithLocalizedFonts-FH7PHTTX.js → bundleWithLocalizedFonts-VH55VOAL.js} +2 -2
  14. package/dist/{capture-TFZZSF6F.js → capture-26G2DPSI.js} +83 -41
  15. package/dist/{capture-XD3P3YQR.js → capture-OGQAEYKO.js} +24 -8
  16. package/dist/{catalog-4S33QWJJ.js → catalog-RKORTIUE.js} +19 -18
  17. package/dist/{catch-up-RW7YXXNT.js → catch-up-4OBERRQO.js} +5 -5
  18. package/dist/{check-XVTRRN4Y.js → check-P2XDN57S.js} +89 -85
  19. package/dist/{checkBrowser-HZXJ2EDU.js → checkBrowser-NTGJGAEA.js} +42 -42
  20. package/dist/{chunk-AVWEIOEN.js → chunk-2LBBHMKT.js} +1 -1
  21. package/dist/{chunk-E6SDW5FV.js → chunk-33RZPZ4K.js} +192 -45
  22. package/dist/{chunk-6IFXWJDX.js → chunk-3NE7ZYU2.js} +2 -2
  23. package/dist/{chunk-TQFG7HTI.js → chunk-3RM2ETQT.js} +0 -168
  24. package/dist/{chunk-PFCFR3KZ.js → chunk-442JNXRM.js} +1 -1
  25. package/dist/{chunk-6E6CM7WS.js → chunk-4M4EC7JX.js} +19 -12
  26. package/dist/{chunk-HKCNZITN.js → chunk-4OA4LDTU.js} +2 -2
  27. package/dist/{chunk-XTFJOR3K.js → chunk-4SFGME7K.js} +1 -1
  28. package/dist/{chunk-34TXESM7.js → chunk-5FISWJ37.js} +12 -4
  29. package/dist/{chunk-JYYOAKHS.js → chunk-6IIGT7BX.js} +1 -1
  30. package/dist/chunk-6TPZSTCL.js +3681 -0
  31. package/dist/{chunk-P6E4HFFU.js → chunk-6XMFEICO.js} +263 -75
  32. package/dist/{chunk-6Q6FR4KH.js → chunk-7UYBQ6NF.js} +296 -89
  33. package/dist/{chunk-BRITLL56.js → chunk-B4P5VDFQ.js} +1 -1
  34. package/dist/{chunk-U7E736AJ.js → chunk-BFDJ63J5.js} +32 -14
  35. package/dist/{chunk-WCJGTLPF.js → chunk-BHVFTYSI.js} +6 -3
  36. package/dist/{chunk-IO7ZIDRP.js → chunk-BT27OYYX.js} +53 -12
  37. package/dist/{chunk-KFH6UD26.js → chunk-BYK73CR7.js} +4 -4
  38. package/dist/{chunk-L3JSAB4L.js → chunk-CLOH4LIB.js} +3 -3
  39. package/dist/{chunk-R7UDXKI3.js → chunk-DF2BHILQ.js} +3 -3
  40. package/dist/{chunk-246MOR5U.js → chunk-DKSDVDXG.js} +175 -162
  41. package/dist/{chunk-35RSNI77.js → chunk-F26LCYRY.js} +42 -34
  42. package/dist/{chunk-5Z63TBTX.js → chunk-FH7WODJH.js} +1 -1
  43. package/dist/{chunk-NORZWWLK.js → chunk-FVYXDXEV.js} +2 -2
  44. package/dist/{chunk-YURXPGAM.js → chunk-GNBGPUJ7.js} +6 -8
  45. package/dist/{chunk-RVCWIIZ7.js → chunk-GV5R5B7Q.js} +1 -1
  46. package/dist/{chunk-GS6FE3IW.js → chunk-HC7EVDEL.js} +1 -1
  47. package/dist/{chunk-K2GOFLTX.js → chunk-HLYOEIWM.js} +14 -6
  48. package/dist/{chunk-XDSOIJC3.js → chunk-HMT2RPZU.js} +6 -6
  49. package/dist/{chunk-IKVBTDLO.js → chunk-HW4AKJ5F.js} +1 -1
  50. package/dist/{chunk-OLDDJS3S.js → chunk-I7QGQAZM.js} +8 -8
  51. package/dist/{chunk-JFKL3WAE.js → chunk-IWFLMU2N.js} +104 -19
  52. package/dist/{chunk-IHFUKJOR.js → chunk-K2FLNJVB.js} +8 -2
  53. package/dist/chunk-KJJLA674.js +121 -0
  54. package/dist/{chunk-XWVGSEUT.js → chunk-KO5QBV73.js} +1 -1
  55. package/dist/{chunk-INI3TM6I.js → chunk-KQLGTGE5.js} +3 -3
  56. package/dist/{chunk-E4BSCXMU.js → chunk-LVX6NK36.js} +3 -3
  57. package/dist/{chunk-BM5PX3DJ.js → chunk-LW6HO6U3.js} +4 -4
  58. package/dist/{chunk-OZUQF4NB.js → chunk-MQZVBHEY.js} +123 -8
  59. package/dist/{chunk-IV7EI5E2.js → chunk-N3DQEVSI.js} +2 -2
  60. package/dist/{chunk-A4KQZXZI.js → chunk-NE55C6S5.js} +4 -2
  61. package/dist/{chunk-EDYBFSPE.js → chunk-OBXQRJWQ.js} +7 -10
  62. package/dist/{chunk-RCFCZT5O.js → chunk-OSSHSIMD.js} +1 -1
  63. package/dist/chunk-P36MALQF.js +15 -0
  64. package/dist/{chunk-EKA4ZZBI.js → chunk-P7THMINS.js} +3 -3
  65. package/dist/{chunk-3NBKW2QJ.js → chunk-PAGIICKN.js} +2 -2
  66. package/dist/{chunk-O3SKIXQK.js → chunk-PJU63L6W.js} +1 -1
  67. package/dist/{chunk-RPYPW5NN.js → chunk-POLR33RB.js} +20 -13
  68. package/dist/{chunk-7M4KAPAA.js → chunk-PUGIRFPX.js} +2 -2
  69. package/dist/{chunk-7XTZVLE6.js → chunk-QFN7NVWM.js} +1 -1
  70. package/dist/{chunk-D2KNWIQ6.js → chunk-QFSCCQIR.js} +1 -1
  71. package/dist/{chunk-J5IPIQU2.js → chunk-QRKLPWEX.js} +1 -1
  72. package/dist/{chunk-N77KD7ZZ.js → chunk-QVYVUCWD.js} +1 -1
  73. package/dist/{chunk-GK4AIFIH.js → chunk-SDYDNHEE.js} +34 -3
  74. package/dist/{chunk-2NCHQUPX.js → chunk-SQLK7SJL.js} +1 -1
  75. package/dist/{chunk-PMRBLBUP.js → chunk-T42U2W2R.js} +14 -2
  76. package/dist/{chunk-Q65ZQFF2.js → chunk-TAMQYQGJ.js} +1 -1
  77. package/dist/{chunk-PXSM4HPB.js → chunk-U3X3TPBW.js} +1 -1
  78. package/dist/{chunk-3A5AAPMP.js → chunk-UICWP23D.js} +1 -1
  79. package/dist/{chunk-A7YQNIQT.js → chunk-UM2GRYM3.js} +113 -10
  80. package/dist/{chunk-TC2FBZJZ.js → chunk-VIVBA6E6.js} +2 -2
  81. package/dist/{chunk-W6HTOVHU.js → chunk-W35EKBS6.js} +2 -2
  82. package/dist/{chunk-YEIFI443.js → chunk-WPNE5NEP.js} +1 -1
  83. package/dist/{chunk-WY5OODN5.js → chunk-XONFUK3M.js} +3693 -28
  84. package/dist/{chunk-IYFKBFTW.js → chunk-Y6QL2LGO.js} +8 -5
  85. package/dist/{chunk-THXFSPLV.js → chunk-ZIRIDSDB.js} +1 -1
  86. package/dist/chunk-ZLW2V65P.js +209 -0
  87. package/dist/{chunk-4BB7V6AI.js → chunk-ZQQ3SEIE.js} +33 -32
  88. package/dist/{clean-L2E4VD57.js → clean-YHGPY33K.js} +23 -23
  89. package/dist/cli.js +57 -159
  90. package/dist/{cloud-IDUQRYLO.js → cloud-DOFI5ISR.js} +4 -4
  91. package/dist/{cloudrun-R3JXWXGG.js → cloudrun-KTZ4XDHL.js} +13 -12
  92. package/dist/commands/contrast-audit.browser.js +60 -4
  93. package/dist/commands/layout-audit.browser.js +88 -20
  94. package/dist/{compare-VYBWSP3Y.js → compare-SMMIZN2C.js} +37 -37
  95. package/dist/{compiler-ACHWOU5N.js → compiler-TEXQWW6N.js} +14 -11
  96. package/dist/{component-PYYV2V3F.js → component-B3GCNGSS.js} +5 -5
  97. package/dist/{compositions-B5GQSXH7.js → compositions-OQNZZTKF.js} +38 -34
  98. package/dist/{delete-EAX2U3WI.js → delete-EL5LVSEP.js} +6 -6
  99. package/dist/{deterministicFonts-F6WIVL2W.js → deterministicFonts-U2BIMGPG.js} +3 -3
  100. package/dist/{dist-NZSQCYOF.js → dist-5UVIRMSM.js} +7 -7
  101. package/dist/{dist-ROUDWGLO.js → dist-XN234YFQ.js} +41 -39
  102. package/dist/{doctor-PJX7MLFG.js → doctor-UOL3OI2A.js} +17 -17
  103. package/dist/{dom-IROKGVJI.js → dom-37K6YOH4.js} +2 -2
  104. package/dist/{events-SBC54MHO.js → events-K2DB2PBC.js} +2 -2
  105. package/dist/{events-YFFXKAQQ.js → events-NIZBS6S7.js} +3 -3
  106. package/dist/{feedback-UETLWREV.js → feedback-QMP4E6L7.js} +16 -15
  107. package/dist/{figma-QDSJPIRW.js → figma-2AUJRNVC.js} +3 -3
  108. package/dist/fontLocalizeCli.js +18 -18
  109. package/dist/{get-B5TS6C7H.js → get-P5NC7SRM.js} +6 -6
  110. package/dist/{gpuPolicy-LYOVBAJP.js → gpuPolicy-7N5MCE2G.js} +15 -15
  111. package/dist/{grade-compare-LBIHMAUN.js → grade-compare-HV5AFZ6P.js} +37 -37
  112. package/dist/{help-XBP6A6LT.js → help-3TSTXBLN.js} +1 -1
  113. package/dist/{history-2S42ZXKL.js → history-D65XFJ6D.js} +6 -6
  114. package/dist/hyperframe-runtime.js +25 -25
  115. package/dist/hyperframe.manifest.json +1 -1
  116. package/dist/hyperframe.runtime.iife.js +25 -25
  117. package/dist/hyperframes-player.global.js +3 -3
  118. package/dist/hyperframes-slideshow.global.js +23 -23
  119. package/dist/{info-I2VDAWT7.js → info-TXV7MLFO.js} +17 -16
  120. package/dist/{init-BGHSDODI.js → init-OSDMJZJV.js} +38 -38
  121. package/dist/{inspect-MZK5B5RP.js → inspect-RQQSAYIJ.js} +38 -38
  122. package/dist/{installer-LL4QAKFW.js → installer-CDOB32HE.js} +11 -10
  123. package/dist/{keyframes-2EBF7OSS.js → keyframes-V75Q6GRM.js} +10 -10
  124. package/dist/{lambda-XKFPAOFE.js → lambda-RODV4RCX.js} +12 -11
  125. package/dist/{layout-TP5ERKEF.js → layout-IZAI5SFC.js} +38 -38
  126. package/dist/{lint-FQ6CEI7E.js → lint-PLXOXY5R.js} +14 -14
  127. package/dist/{lintProject-LM3XZRPZ.js → lintProject-OQ6H6XBR.js} +7 -7
  128. package/dist/{list-FRNUJXZ3.js → list-BQBPNKDZ.js} +7 -7
  129. package/dist/{login-C25QU3BQ.js → login-NP6F4FHC.js} +20 -24
  130. package/dist/{logout-GJXZQKOA.js → logout-B4KS4A7S.js} +6 -6
  131. package/dist/{manager-DXB7JDHU.js → manager-GXYF4AVO.js} +2 -2
  132. package/dist/{manager-524RPYO7.js → manager-RFZNG5YT.js} +2 -2
  133. package/dist/{media-treatment-DCANGWSV.js → media-treatment-PXGMZ4A4.js} +55 -34
  134. package/dist/{models-GOD6ARB3.js → models-CEZM6XZ7.js} +17 -17
  135. package/dist/{motionShot-FSKETANX.js → motionShot-R4GHYWYM.js} +25 -25
  136. package/dist/{normalize-IGLHCWTF.js → normalize-H6KUHHEI.js} +18 -7
  137. package/dist/{normalize-audio-C2IM7OID.js → normalize-audio-MQ7NFCOV.js} +10 -6
  138. package/dist/{open-VVISXIII.js → open-AKQTGNXF.js} +5 -5
  139. package/dist/{pipeline-7YHZPYIS.js → pipeline-SYJYP2RM.js} +17 -17
  140. package/dist/{play-DSELK7G3.js → play-NBH4B7PL.js} +31 -30
  141. package/dist/{present-N72YFDKP.js → present-XAX55CFS.js} +26 -26
  142. package/dist/{preview-XTYN4NJ2.js → preview-OLANKNFA.js} +26 -26
  143. package/dist/{producer-NDCU3MHK.js → producer-Q6YNZZUJ.js} +1 -1
  144. package/dist/{projectConfig-MH4QU4AC.js → projectConfig-EM26P45P.js} +13 -12
  145. package/dist/{publication-KUSHI5MG.js → publication-OXWJZKSX.js} +8 -7
  146. package/dist/{publish-3XEEFWMF.js → publish-4VBWP2UB.js} +23 -22
  147. package/dist/{refresh-MFITBIKV.js → refresh-PVHBEABE.js} +2 -2
  148. package/dist/{remove-background-2QKJ7XOD.js → remove-background-REB7427G.js} +19 -19
  149. package/dist/{render-75E342ZU.js → render-3CVZ2SZG.js} +13 -12
  150. package/dist/{render-S73DW4KK.js → render-K25YOG3M.js} +22 -21
  151. package/dist/{render-2DVYTVLQ.js → render-TSE75QUL.js} +35 -35
  152. package/dist/{render-batch-YURBS54Q.js → render-batch-GGUOK3DS.js} +13 -12
  153. package/dist/{renderCancellation-373ASJTO.js → renderCancellation-PZRWB53I.js} +15 -15
  154. package/dist/renderSetupWorker.js +7 -7
  155. package/dist/{resolver-FE3GBZ4T.js → resolver-S5VK6UCB.js} +10 -9
  156. package/dist/{screenshotCapture-ECBTLCU6.js → screenshotCapture-TEUIWXWN.js} +53 -33
  157. package/dist/{sherpa-B2D3AGP6.js → sherpa-LVIUEAGF.js} +18 -18
  158. package/dist/skills/hyperframes-cli/references/cloud.md +1 -1
  159. package/dist/skills/hyperframes-cli/references/doctor-browser.md +24 -1
  160. package/dist/skills/media-use/references/grading.md +4 -2
  161. package/dist/skills/media-use/scripts/lib/cache.mjs +28 -14
  162. package/dist/skills/media-use/scripts/lib/cache.test.mjs +110 -0
  163. package/dist/skills/media-use/scripts/lib/duck.mjs +2 -1
  164. package/dist/skills/media-use/scripts/lib/duck.test.mjs +87 -0
  165. package/dist/skills/media-use/scripts/lib/probe.mjs +6 -1
  166. package/dist/skills/media-use/scripts/lib/probe.test.mjs +73 -0
  167. package/dist/skills/media-use/scripts/lib/words.mjs +1 -1
  168. package/dist/{skills-ICJ22CZZ.js → skills-I65FU5HD.js} +5 -5
  169. package/dist/{skillsUpdateCheck-GXZN56I5.js → skillsUpdateCheck-J57RNNIV.js} +3 -3
  170. package/dist/{slideshow-EJ4IMY6P.js → slideshow-4OJEPWNZ.js} +1 -1
  171. package/dist/{snapshot-XHKOAWF4.js → snapshot-YROOGY22.js} +42 -39
  172. package/dist/{src-I7UC3JTL.js → src-JO5JOV7Y.js} +16 -14
  173. package/dist/{src-74PFDTDX.js → src-X426BZAG.js} +17 -17
  174. package/dist/{staticProjectServer-2DGKD6TF.js → staticProjectServer-5VMBS262.js} +23 -23
  175. package/dist/{status-JA6SKQVH.js → status-LXPGSSKY.js} +6 -4
  176. package/dist/studio/assets/{hyperframes-player-5Vx2AiUz.js → hyperframes-player-BXSuksFh.js} +3 -3
  177. package/dist/studio/assets/{index-BAnh7cSQ.js → index-BgOVCqjo.js} +1 -1
  178. package/dist/studio/assets/{index-P8fgj_Xa.js → index-FgyO_5Kv.js} +1 -1
  179. package/dist/studio/assets/{index-C0thd4eM.js → index-J7jpL4pj.js} +157 -157
  180. package/dist/studio/index.html +1 -1
  181. package/dist/studio/index.js +148 -175
  182. package/dist/studio/index.js.map +1 -1
  183. package/dist/{studio-api-PROBO7JG.js → studio-api-VRBZUGAE.js} +22 -18
  184. package/dist/{studioServer-ID6UV2NE.js → studioServer-DBNKZ6I6.js} +50 -50
  185. package/dist/{synthesize-77PTU6C5.js → synthesize-C3IWDAXF.js} +2 -2
  186. package/dist/{telemetry-65LFHIWH.js → telemetry-CXAX3TO3.js} +3 -3
  187. package/dist/{timeline-6UV3JJXD.js → timeline-VQ34WH7J.js} +91 -70
  188. package/dist/{tokens-HIL4TZXI.js → tokens-62R7VFAZ.js} +4 -4
  189. package/dist/{transcribe-TIO6W3EQ.js → transcribe-7KR7IPJA.js} +18 -18
  190. package/dist/{transcribe-V7F6QDSN.js → transcribe-XOHPPL2O.js} +11 -11
  191. package/dist/{tts-TOHSPWEG.js → tts-MUV42JXT.js} +6 -6
  192. package/dist/{updateCheck-GZELANMA.js → updateCheck-POYNH3B5.js} +2 -2
  193. package/dist/{upgrade-BX3KDDZJ.js → upgrade-NBNOT7J2.js} +2 -2
  194. package/dist/{urlDownloader-R76OHFIE.js → urlDownloader-3NS63A7B.js} +14 -14
  195. package/dist/{validate-7UX4I443.js → validate-Y2QDHAEP.js} +40 -28
  196. package/dist/{video-RVGYEFQU.js → video-SJDMTSTL.js} +15 -15
  197. package/package.json +1 -1
  198. package/dist/chunk-24OWOBQH.js +0 -3656
  199. package/dist/chunk-SYKKFAUW.js +0 -3711
  200. /package/dist/{chunk-HBBJFK6I.js → chunk-APDLWWFG.js} +0 -0
@@ -16,57 +16,61 @@ import {
16
16
  dedupeLayoutIssues,
17
17
  evaluateMotion,
18
18
  findMotionSpec,
19
+ findingElementKey,
20
+ formatFindingTimes,
19
21
  formatLayoutIssue,
22
+ groupSampledFindings,
20
23
  limitLayoutIssues,
24
+ longestContiguousRunMs,
21
25
  mergeSampleTimes,
22
26
  parseAt,
23
27
  readMotionSpec
24
- } from "./chunk-IO7ZIDRP.js";
28
+ } from "./chunk-BT27OYYX.js";
25
29
  import {
26
30
  loadProducer
27
- } from "./chunk-N77KD7ZZ.js";
31
+ } from "./chunk-QVYVUCWD.js";
28
32
  import {
29
33
  trackLintRun
30
- } from "./chunk-R7UDXKI3.js";
31
- import "./chunk-34TXESM7.js";
34
+ } from "./chunk-DF2BHILQ.js";
35
+ import "./chunk-5FISWJ37.js";
32
36
  import "./chunk-XUHOIDKG.js";
33
37
  import "./chunk-X7MTZ4T2.js";
34
- import "./chunk-NORZWWLK.js";
38
+ import "./chunk-FVYXDXEV.js";
35
39
  import {
36
40
  resolveProject
37
- } from "./chunk-TC2FBZJZ.js";
38
- import "./chunk-XDSOIJC3.js";
39
- import "./chunk-5Z63TBTX.js";
40
- import "./chunk-O3SKIXQK.js";
41
- import "./chunk-EKA4ZZBI.js";
42
- import "./chunk-YEIFI443.js";
43
- import "./chunk-IHFUKJOR.js";
44
- import "./chunk-6Q6FR4KH.js";
45
- import "./chunk-A7YQNIQT.js";
41
+ } from "./chunk-VIVBA6E6.js";
42
+ import "./chunk-HMT2RPZU.js";
43
+ import "./chunk-FH7WODJH.js";
44
+ import "./chunk-PJU63L6W.js";
45
+ import "./chunk-P7THMINS.js";
46
+ import "./chunk-WPNE5NEP.js";
47
+ import "./chunk-K2FLNJVB.js";
48
+ import "./chunk-7UYBQ6NF.js";
49
+ import "./chunk-UM2GRYM3.js";
46
50
  import "./chunk-QZ3AZTXI.js";
47
- import "./chunk-U7E736AJ.js";
48
- import "./chunk-4BB7V6AI.js";
51
+ import "./chunk-BFDJ63J5.js";
52
+ import "./chunk-ZQQ3SEIE.js";
49
53
  import "./chunk-G75ENCEZ.js";
50
54
  import "./chunk-EOVYQ3IG.js";
51
55
  import {
52
56
  resolveLocalBrowserGpuMode
53
- } from "./chunk-J5IPIQU2.js";
54
- import "./chunk-PFCFR3KZ.js";
55
- import "./chunk-AVWEIOEN.js";
57
+ } from "./chunk-QRKLPWEX.js";
58
+ import "./chunk-442JNXRM.js";
59
+ import "./chunk-2LBBHMKT.js";
56
60
  import "./chunk-XT7X6QCP.js";
57
61
  import "./chunk-4YYJOFKS.js";
58
62
  import "./chunk-HVW7ABXD.js";
59
- import "./chunk-IKVBTDLO.js";
60
- import "./chunk-L3JSAB4L.js";
61
- import "./chunk-Q65ZQFF2.js";
63
+ import "./chunk-HW4AKJ5F.js";
64
+ import "./chunk-CLOH4LIB.js";
65
+ import "./chunk-TAMQYQGJ.js";
62
66
  import "./chunk-AWDFDFI3.js";
63
67
  import "./chunk-P6LJ4Y32.js";
64
68
  import "./chunk-374QQGBQ.js";
65
69
  import {
66
70
  trackCheckReport,
67
71
  trackCommandFailure
68
- } from "./chunk-7XTZVLE6.js";
69
- import "./chunk-RCFCZT5O.js";
72
+ } from "./chunk-QFN7NVWM.js";
73
+ import "./chunk-OSSHSIMD.js";
70
74
  import "./chunk-VWG7OQKU.js";
71
75
  import "./chunk-GQJZORQP.js";
72
76
  import "./chunk-AMKC3AXA.js";
@@ -86,17 +90,17 @@ import "./chunk-TJSTGSAW.js";
86
90
  import {
87
91
  extractMediaMetadata,
88
92
  findHdrAutoPromotion
89
- } from "./chunk-E6SDW5FV.js";
90
- import "./chunk-35RSNI77.js";
91
- import "./chunk-A4KQZXZI.js";
93
+ } from "./chunk-33RZPZ4K.js";
94
+ import "./chunk-F26LCYRY.js";
95
+ import "./chunk-NE55C6S5.js";
92
96
  import "./chunk-USDEMXXL.js";
93
- import "./chunk-6E6CM7WS.js";
94
- import "./chunk-OZUQF4NB.js";
95
- import "./chunk-DPVXBVLL.js";
96
- import "./chunk-SYKKFAUW.js";
97
+ import "./chunk-4M4EC7JX.js";
98
+ import "./chunk-6TPZSTCL.js";
97
99
  import "./chunk-VC76R6W2.js";
98
100
  import "./chunk-YA62XGXS.js";
101
+ import "./chunk-MQZVBHEY.js";
99
102
  import "./chunk-OFQWTKPW.js";
103
+ import "./chunk-DPVXBVLL.js";
100
104
  import "./chunk-T76PLPD6.js";
101
105
  import "./chunk-FXMKHHPO.js";
102
106
  import "./chunk-RQVDTPGD.js";
@@ -105,25 +109,25 @@ import "./chunk-TWWSYAKJ.js";
105
109
  import {
106
110
  lintProject,
107
111
  shouldBlockRender
108
- } from "./chunk-WY5OODN5.js";
109
- import "./chunk-24OWOBQH.js";
112
+ } from "./chunk-XONFUK3M.js";
110
113
  import {
111
114
  resolveProjectRelativeSrc
112
- } from "./chunk-JFKL3WAE.js";
113
- import "./chunk-HBBJFK6I.js";
115
+ } from "./chunk-IWFLMU2N.js";
116
+ import "./chunk-APDLWWFG.js";
114
117
  import "./chunk-PJ3HDUCY.js";
115
- import "./chunk-TQFG7HTI.js";
116
- import "./chunk-GK4AIFIH.js";
118
+ import "./chunk-3RM2ETQT.js";
119
+ import "./chunk-ZLW2V65P.js";
120
+ import "./chunk-SDYDNHEE.js";
117
121
  import "./chunk-2PSPARWP.js";
118
- import "./chunk-PMRBLBUP.js";
122
+ import "./chunk-T42U2W2R.js";
119
123
  import {
120
124
  withMeta
121
- } from "./chunk-IYFKBFTW.js";
125
+ } from "./chunk-Y6QL2LGO.js";
122
126
  import "./chunk-K4WIOZFP.js";
123
127
  import "./chunk-XUXGIA7H.js";
124
128
  import "./chunk-WERLJGIC.js";
125
129
  import "./chunk-ISN5GRYI.js";
126
- import "./chunk-W6HTOVHU.js";
130
+ import "./chunk-W35EKBS6.js";
127
131
  import {
128
132
  normalizeErrorMessage
129
133
  } from "./chunk-KNU5COPB.js";
@@ -139,7 +143,7 @@ import { join, relative } from "path";
139
143
 
140
144
  // src/utils/hdrPromotion.ts
141
145
  async function bundleProjectHtml(projectDir) {
142
- const { bundleToSingleHtml } = await import("./compiler-ACHWOU5N.js");
146
+ const { bundleToSingleHtml } = await import("./compiler-TEXQWW6N.js");
143
147
  return bundleToSingleHtml(projectDir);
144
148
  }
145
149
  async function collectBundledRenderMedia(html) {
@@ -343,15 +347,12 @@ function captionFinding(candidate, options, canvas, time) {
343
347
  const text = candidate.text.slice(0, 48);
344
348
  const pctFromBottom = Math.round((canvas.height - cy) / canvas.height * 100);
345
349
  return {
346
- key: `${candidate.tag}|${text}`,
347
- issue: {
348
- ...geometryIssueAnchor(candidate, time),
349
- code: "caption_zone_collision",
350
- severity: zone.severity === "error" ? "error" : "warning",
351
- text,
352
- message: `<${candidate.tag}> "${text}" overlaps the reserved caption band (~${pctFromBottom}% up from the bottom).`,
353
- fixHint: "Keep main content outside the configured caption band, or mark intentional lower-third copy with data-layout-allow-caption-zone."
354
- }
350
+ ...geometryIssueAnchor(candidate, time),
351
+ code: "caption_zone_collision",
352
+ severity: zone.severity === "error" ? "error" : "warning",
353
+ text,
354
+ message: `<${candidate.tag}> "${text}" overlaps the reserved caption band (~${pctFromBottom}% up from the bottom).`,
355
+ fixHint: "Keep main content outside the configured caption band, or mark intentional lower-third copy with data-layout-allow-caption-zone."
355
356
  };
356
357
  }
357
358
  function maxOverflow(candidate) {
@@ -383,34 +384,28 @@ function frameFinding(candidate, options, canvas, time) {
383
384
  if (maxOverflow(candidate) < floor) return null;
384
385
  const text = candidate.text.slice(0, 48);
385
386
  return {
386
- key: `${candidate.tag}|${text}|${Math.round(candidate.rect.left)},${Math.round(candidate.rect.top)}`,
387
- issue: {
388
- ...geometryIssueAnchor(candidate, time),
389
- code: "frame_out_of_frame",
390
- severity: options.frameCheck.severity === "error" ? "error" : "warning",
391
- text,
392
- overflow: candidate.overflow,
393
- message: overflowMessage(candidate),
394
- fixHint: "Keep media within the composition frame's safe area."
395
- }
387
+ ...geometryIssueAnchor(candidate, time),
388
+ code: "frame_out_of_frame",
389
+ severity: options.frameCheck.severity === "error" ? "error" : "warning",
390
+ text,
391
+ overflow: candidate.overflow,
392
+ message: overflowMessage(candidate),
393
+ fixHint: "Keep media within the composition frame's safe area."
396
394
  };
397
395
  }
398
- function appendGeometryFinding(result, seen, issues) {
399
- if (!result || seen.has(result.key)) return;
400
- seen.add(result.key);
401
- issues.push(result.issue);
402
- }
403
- async function collectGeometryAt(driver, options, grid, canvas, time, seen) {
396
+ async function collectGeometryAt(driver, options, grid, canvas, time) {
404
397
  const request = geometryRequest(time, grid, options);
405
398
  if (!request) return [];
406
399
  const candidates = await driver.collectGeometryCandidates(time, request);
407
400
  const issues = [];
408
401
  for (const candidate of candidates) {
409
402
  if (request.text) {
410
- appendGeometryFinding(captionFinding(candidate, options, canvas, time), seen.caption, issues);
403
+ const finding = captionFinding(candidate, options, canvas, time);
404
+ if (finding) issues.push(finding);
411
405
  }
412
406
  if (request.media) {
413
- appendGeometryFinding(frameFinding(candidate, options, canvas, time), seen.frame, issues);
407
+ const finding = frameFinding(candidate, options, canvas, time);
408
+ if (finding) issues.push(finding);
414
409
  }
415
410
  }
416
411
  return issues;
@@ -421,7 +416,6 @@ async function collectGridSamples(driver, options, grid, motion) {
421
416
  const contrastSet = new Set(grid.contrastSamples);
422
417
  const geometryEnabled = grid.captionSamples.length > 0 || grid.frameSamples.length > 0;
423
418
  const canvas = geometryEnabled ? await driver.getCanvas() : null;
424
- const geometrySeen = { caption: /* @__PURE__ */ new Set(), frame: /* @__PURE__ */ new Set() };
425
419
  const collected = {
426
420
  layoutIssues: [],
427
421
  motionFrames: [],
@@ -447,14 +441,7 @@ async function collectGridSamples(driver, options, grid, motion) {
447
441
  collected.indicatorFrames.push(await driver.collectOffPivotRotationSample(time));
448
442
  }
449
443
  if (canvas) {
450
- const geometryIssues = await collectGeometryAt(
451
- driver,
452
- options,
453
- grid,
454
- canvas,
455
- time,
456
- geometrySeen
457
- );
444
+ const geometryIssues = await collectGeometryAt(driver, options, grid, canvas, time);
458
445
  collected.layoutIssues.push(...geometryIssues);
459
446
  issuesAtTime.push(...geometryIssues);
460
447
  }
@@ -1036,12 +1023,12 @@ function contrastFailureHeld(entries) {
1036
1023
  const failureSamples = /* @__PURE__ */ new Map();
1037
1024
  for (const entry of entries) {
1038
1025
  if (entry.wcagAA) continue;
1039
- const key = `${entry.selector}|${entry.text}`;
1026
+ const key = findingElementKey(entry);
1040
1027
  const times = failureSamples.get(key) ?? /* @__PURE__ */ new Set();
1041
1028
  times.add(entry.time);
1042
1029
  failureSamples.set(key, times);
1043
1030
  }
1044
- return (entry) => sampledTimes < 2 || (failureSamples.get(`${entry.selector}|${entry.text}`)?.size ?? 0) >= 2;
1031
+ return (entry) => sampledTimes < 2 || (failureSamples.get(findingElementKey(entry))?.size ?? 0) >= 2;
1045
1032
  }
1046
1033
  function buildContrastResults(entries) {
1047
1034
  const findings = [];
@@ -1072,7 +1059,13 @@ function buildContrastResults(entries) {
1072
1059
  time: entry.time
1073
1060
  });
1074
1061
  }
1075
- return { findings, passed };
1062
+ return {
1063
+ findings: groupSampledFindings(
1064
+ findings,
1065
+ (next, current) => current.ratio / current.requiredRatio - next.ratio / next.requiredRatio
1066
+ ),
1067
+ passed
1068
+ };
1076
1069
  }
1077
1070
  function suggestedColor(fg, bg, requiredRatio) {
1078
1071
  const foreground = parseColorRGBA(fg);
@@ -1179,7 +1172,18 @@ function shapeLayoutSection(issues, browser, options) {
1179
1172
  function shapeLayoutFindings(issues, options, totalSampleCount) {
1180
1173
  const deduped = dedupeLayoutIssues(issues);
1181
1174
  const all = options.collapseStatic ? collapseStaticLayoutIssues(deduped, totalSampleCount) : deduped;
1182
- const limited = limitLayoutIssues(all, options.maxIssues);
1175
+ const anchored = all.map(ensureAnchoredLayoutIssue);
1176
+ let grouped = anchored;
1177
+ if (options.collapseStatic) {
1178
+ grouped = groupSampledFindings(anchored).map((finding) => ({
1179
+ ...finding,
1180
+ firstSeen: finding.times[0] ?? finding.time,
1181
+ lastSeen: finding.times.at(-1) ?? finding.time,
1182
+ occurrences: finding.times.length,
1183
+ heldMs: longestContiguousRunMs(finding.times)
1184
+ }));
1185
+ }
1186
+ const limited = limitLayoutIssues(grouped, options.maxIssues);
1183
1187
  return {
1184
1188
  findings: limited.issues.map(ensureAnchoredLayoutIssue),
1185
1189
  totalIssueCount: limited.totalIssueCount,
@@ -1265,7 +1269,7 @@ function resolveMotionSpec(projectDir) {
1265
1269
  };
1266
1270
  }
1267
1271
  async function runBrowserCheck(project, options, motion) {
1268
- const module = await import("./checkBrowser-HZXJ2EDU.js");
1272
+ const module = await import("./checkBrowser-NTGJGAEA.js");
1269
1273
  return module.runBrowserCheck(project, options, motion, runAuditGrid);
1270
1274
  }
1271
1275
  async function writeSnapshot(projectDir, index, time, pngBase64) {
@@ -1277,7 +1281,7 @@ async function writeSnapshot(projectDir, index, time, pngBase64) {
1277
1281
  return join("snapshots", filename);
1278
1282
  }
1279
1283
  async function captureFindingCrops(project, options, requests) {
1280
- const module = await import("./checkBrowser-HZXJ2EDU.js");
1284
+ const module = await import("./checkBrowser-NTGJGAEA.js");
1281
1285
  return module.captureFindingCrops(project, options, requests);
1282
1286
  }
1283
1287
  var DEFAULT_DEPENDENCIES2 = {
@@ -1667,7 +1671,7 @@ function printContrastSection(report) {
1667
1671
  }
1668
1672
  for (const finding of section2.findings) {
1669
1673
  console.log(
1670
- ` ${c.error("\u2717")} ${finding.selector} ${finding.ratio}:1 (need ${finding.requiredRatio}:1, t=${finding.time}s)`
1674
+ ` ${c.error("\u2717")} ${finding.selector} ${finding.ratio}:1 (need ${finding.requiredRatio}:1, ${formatFindingTimes(finding)})`
1671
1675
  );
1672
1676
  console.log(` ${c.dim(`Try ${finding.suggestedColor}; source ${finding.sourceFile}`)}`);
1673
1677
  }
@@ -1690,7 +1694,7 @@ function printSnapshotSection(report) {
1690
1694
  }
1691
1695
  }
1692
1696
  function printFinding(finding) {
1693
- const where = `${finding.sourceFile} ${finding.selector} t=${finding.time}s`;
1697
+ const where = `${finding.sourceFile} ${finding.selector} ${formatFindingTimes(finding)}`;
1694
1698
  console.log(` ${findingIcon(finding)} ${finding.code}: ${finding.message}`);
1695
1699
  console.log(` ${c.dim(where)}`);
1696
1700
  if (finding.fixHint) console.log(` ${c.dim(`Fix: ${finding.fixHint}`)}`);
@@ -8,21 +8,21 @@ import {
8
8
  auditClipDurations,
9
9
  shouldIgnoreHttpError,
10
10
  shouldIgnoreRequestFailure
11
- } from "./chunk-RPYPW5NN.js";
11
+ } from "./chunk-POLR33RB.js";
12
12
  import {
13
13
  rectToBbox
14
14
  } from "./chunk-WBLXWOYK.js";
15
15
  import {
16
16
  ambiguousIssue,
17
17
  loadBrowserScript
18
- } from "./chunk-IO7ZIDRP.js";
18
+ } from "./chunk-BT27OYYX.js";
19
19
  import {
20
20
  serveStaticProjectHtml
21
- } from "./chunk-34TXESM7.js";
21
+ } from "./chunk-5FISWJ37.js";
22
22
  import "./chunk-XUHOIDKG.js";
23
23
  import "./chunk-X7MTZ4T2.js";
24
- import "./chunk-NORZWWLK.js";
25
- import "./chunk-TC2FBZJZ.js";
24
+ import "./chunk-FVYXDXEV.js";
25
+ import "./chunk-VIVBA6E6.js";
26
26
  import {
27
27
  AUDIT_SEEK_OPTIONS,
28
28
  DEFAULT_ZOOM_PADDING_PX,
@@ -34,40 +34,40 @@ import {
34
34
  resolveCliChromeGpuMode,
35
35
  seekCompositionTimeline,
36
36
  waitForPreferredSeekTarget
37
- } from "./chunk-XDSOIJC3.js";
38
- import "./chunk-5Z63TBTX.js";
39
- import "./chunk-O3SKIXQK.js";
40
- import "./chunk-EKA4ZZBI.js";
41
- import "./chunk-YEIFI443.js";
42
- import "./chunk-IHFUKJOR.js";
43
- import "./chunk-6Q6FR4KH.js";
44
- import "./chunk-A7YQNIQT.js";
37
+ } from "./chunk-HMT2RPZU.js";
38
+ import "./chunk-FH7WODJH.js";
39
+ import "./chunk-PJU63L6W.js";
40
+ import "./chunk-P7THMINS.js";
41
+ import "./chunk-WPNE5NEP.js";
42
+ import "./chunk-K2FLNJVB.js";
43
+ import "./chunk-7UYBQ6NF.js";
44
+ import "./chunk-UM2GRYM3.js";
45
45
  import "./chunk-QZ3AZTXI.js";
46
- import "./chunk-U7E736AJ.js";
46
+ import "./chunk-BFDJ63J5.js";
47
47
  import {
48
48
  decideMediaProxyEligibility,
49
49
  proxyVariantFor,
50
50
  resolveProxy,
51
51
  scanProjectMediaCodecMap
52
- } from "./chunk-4BB7V6AI.js";
52
+ } from "./chunk-ZQQ3SEIE.js";
53
53
  import "./chunk-G75ENCEZ.js";
54
54
  import "./chunk-EOVYQ3IG.js";
55
- import "./chunk-J5IPIQU2.js";
56
- import "./chunk-PFCFR3KZ.js";
55
+ import "./chunk-QRKLPWEX.js";
56
+ import "./chunk-442JNXRM.js";
57
57
  import {
58
58
  resolveAutoProxy
59
- } from "./chunk-AVWEIOEN.js";
59
+ } from "./chunk-2LBBHMKT.js";
60
60
  import "./chunk-XT7X6QCP.js";
61
61
  import "./chunk-4YYJOFKS.js";
62
62
  import "./chunk-HVW7ABXD.js";
63
- import "./chunk-IKVBTDLO.js";
64
- import "./chunk-L3JSAB4L.js";
65
- import "./chunk-Q65ZQFF2.js";
63
+ import "./chunk-HW4AKJ5F.js";
64
+ import "./chunk-CLOH4LIB.js";
65
+ import "./chunk-TAMQYQGJ.js";
66
66
  import "./chunk-AWDFDFI3.js";
67
67
  import "./chunk-P6LJ4Y32.js";
68
68
  import "./chunk-374QQGBQ.js";
69
- import "./chunk-7XTZVLE6.js";
70
- import "./chunk-RCFCZT5O.js";
69
+ import "./chunk-QFN7NVWM.js";
70
+ import "./chunk-OSSHSIMD.js";
71
71
  import "./chunk-VWG7OQKU.js";
72
72
  import "./chunk-GQJZORQP.js";
73
73
  import "./chunk-AMKC3AXA.js";
@@ -77,36 +77,36 @@ import "./chunk-54HJ63Q2.js";
77
77
  import "./chunk-PBN6GBJE.js";
78
78
  import "./chunk-KC5XXX3X.js";
79
79
  import "./chunk-TJSTGSAW.js";
80
- import "./chunk-E6SDW5FV.js";
81
- import "./chunk-35RSNI77.js";
82
- import "./chunk-A4KQZXZI.js";
80
+ import "./chunk-33RZPZ4K.js";
81
+ import "./chunk-F26LCYRY.js";
82
+ import "./chunk-NE55C6S5.js";
83
83
  import "./chunk-USDEMXXL.js";
84
- import "./chunk-6E6CM7WS.js";
85
- import "./chunk-OZUQF4NB.js";
86
- import "./chunk-DPVXBVLL.js";
87
- import "./chunk-SYKKFAUW.js";
84
+ import "./chunk-4M4EC7JX.js";
85
+ import "./chunk-6TPZSTCL.js";
88
86
  import "./chunk-VC76R6W2.js";
89
87
  import "./chunk-YA62XGXS.js";
88
+ import "./chunk-MQZVBHEY.js";
90
89
  import "./chunk-OFQWTKPW.js";
90
+ import "./chunk-DPVXBVLL.js";
91
91
  import "./chunk-T76PLPD6.js";
92
92
  import "./chunk-FXMKHHPO.js";
93
93
  import "./chunk-RQVDTPGD.js";
94
94
  import "./chunk-TWWSYAKJ.js";
95
- import "./chunk-WY5OODN5.js";
96
- import "./chunk-24OWOBQH.js";
97
- import "./chunk-JFKL3WAE.js";
98
- import "./chunk-HBBJFK6I.js";
95
+ import "./chunk-XONFUK3M.js";
96
+ import "./chunk-IWFLMU2N.js";
97
+ import "./chunk-APDLWWFG.js";
99
98
  import "./chunk-PJ3HDUCY.js";
100
- import "./chunk-TQFG7HTI.js";
101
- import "./chunk-GK4AIFIH.js";
99
+ import "./chunk-3RM2ETQT.js";
100
+ import "./chunk-ZLW2V65P.js";
101
+ import "./chunk-SDYDNHEE.js";
102
102
  import "./chunk-2PSPARWP.js";
103
- import "./chunk-PMRBLBUP.js";
104
- import "./chunk-IYFKBFTW.js";
103
+ import "./chunk-T42U2W2R.js";
104
+ import "./chunk-Y6QL2LGO.js";
105
105
  import "./chunk-K4WIOZFP.js";
106
106
  import "./chunk-XUXGIA7H.js";
107
107
  import "./chunk-WERLJGIC.js";
108
108
  import "./chunk-ISN5GRYI.js";
109
- import "./chunk-W6HTOVHU.js";
109
+ import "./chunk-W35EKBS6.js";
110
110
  import {
111
111
  normalizeErrorMessage
112
112
  } from "./chunk-KNU5COPB.js";
@@ -148,7 +148,7 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
148
148
  );
149
149
  }
150
150
  async function runBrowserCheck(project, options, motion, runGrid) {
151
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-FH7PHTTX.js");
151
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-VH55VOAL.js");
152
152
  const html = await bundleWithLocalizedFonts(project.dir);
153
153
  await preResolveHostileMediaProxies(project.dir, html, options.autoProxy);
154
154
  const server = await serveStaticProjectHtml(
@@ -175,7 +175,7 @@ async function runBrowserCheck(project, options, motion, runGrid) {
175
175
  await waitForPreferredSeekTarget(page);
176
176
  const rootAnchor = await resolveRootAnchor(page);
177
177
  const launchSettleMs = Date.now() - launchSettleStart;
178
- const { analyzeClipMediaFit } = await import("./src-I7UC3JTL.js");
178
+ const { analyzeClipMediaFit } = await import("./src-JO5JOV7Y.js");
179
179
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
180
180
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
181
181
  }
@@ -198,7 +198,7 @@ async function runBrowserCheck(project, options, motion, runGrid) {
198
198
  }
199
199
  async function captureFindingCrops(project, options, requests) {
200
200
  if (requests.length === 0) return [];
201
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-FH7PHTTX.js");
201
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-VH55VOAL.js");
202
202
  const html = await bundleWithLocalizedFonts(project.dir);
203
203
  const server = await serveStaticProjectHtml(
204
204
  project.dir,
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HVW7ABXD.js";
13
13
  import {
14
14
  DEFAULT_REGISTRY_URL
15
- } from "./chunk-Q65ZQFF2.js";
15
+ } from "./chunk-TAMQYQGJ.js";
16
16
 
17
17
  // src/utils/projectConfig.ts
18
18
  import { readFileSync, writeFileSync } from "fs";