hyperframes 0.8.185 → 0.8.186

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 (166) hide show
  1. package/dist/{add-ODTNPRGG.js → add-UGK7AZI6.js} +11 -11
  2. package/dist/{animatedGifPrep-PEP5GWOJ.js → animatedGifPrep-HPZPSB43.js} +5 -5
  3. package/dist/api.js +14 -14
  4. package/dist/{asset-EZG42XPA.js → asset-X2GTFWOY.js} +2 -2
  5. package/dist/{assetCataloger-OHAJFCA7.js → assetCataloger-5NWEG4IU.js} +5 -5
  6. package/dist/audio-7PBM5F3H.js +2317 -0
  7. package/dist/{auth-VP2SIZFN.js → auth-WABSMO46.js} +1 -1
  8. package/dist/{autoUpdate-RVSUX4SS.js → autoUpdate-6SCMLTSC.js} +2 -2
  9. package/dist/{backgroundChecks-LEHK74NS.js → backgroundChecks-XOGPAAR3.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-3X6CL7PK.js → batchRender-VR6IA77K.js} +3 -3
  12. package/dist/{beats-66VPQLSC.js → beats-3IWXLMSC.js} +5 -5
  13. package/dist/{benchmark-PBJVTOJP.js → benchmark-2SSYATCX.js} +8 -8
  14. package/dist/{browser-TPL5MWGC.js → browser-PMRN345D.js} +3 -3
  15. package/dist/{bundleWithLocalizedFonts-67MLTHKM.js → bundleWithLocalizedFonts-TT32MZBO.js} +2 -2
  16. package/dist/{capture-F3GNMRZM.js → capture-4VD6AKUJ.js} +8 -8
  17. package/dist/{capture-YYRE7EV3.js → capture-BDGYTE57.js} +2 -2
  18. package/dist/{captureCompositionFrame-PXV2ISHD.js → captureCompositionFrame-5FVLAETA.js} +13 -9
  19. package/dist/{catalog-6SDD3OHF.js → catalog-HUYZO5D7.js} +11 -11
  20. package/dist/{catch-up-CWIVA5VG.js → catch-up-SSGTR2ZT.js} +4 -4
  21. package/dist/{check-YQ6REK2S.js → check-JWUWHGM2.js} +29 -29
  22. package/dist/{checkBrowser-5XZCBRXM.js → checkBrowser-X7G6YNR7.js} +26 -26
  23. package/dist/{chunk-RUEGYANA.js → chunk-22QKQDEE.js} +10 -10
  24. package/dist/{chunk-IPDKZ5IN.js → chunk-27H2363S.js} +1 -1
  25. package/dist/{chunk-2TAS5O4P.js → chunk-2II34JPM.js} +108 -20
  26. package/dist/{chunk-KQ4JEJLF.js → chunk-2PZZMAME.js} +8 -7
  27. package/dist/{chunk-7RAY4WZP.js → chunk-3YHGQJI6.js} +3 -3
  28. package/dist/{chunk-BRAPBUPQ.js → chunk-4AFNEKU7.js} +1 -1
  29. package/dist/{chunk-CX3USX23.js → chunk-4NTW45W5.js} +3 -3
  30. package/dist/{chunk-K2ZKXTVL.js → chunk-4XFFJAWS.js} +1 -1
  31. package/dist/{chunk-6GPR3G3C.js → chunk-5ZMIVTHN.js} +1 -1
  32. package/dist/{chunk-TAX2ZJAP.js → chunk-5ZMXGNGC.js} +9 -9
  33. package/dist/{chunk-H5SM5PJI.js → chunk-6IOBAOU7.js} +1 -1
  34. package/dist/{chunk-WQLKDL35.js → chunk-77QM6YRQ.js} +1 -1
  35. package/dist/{chunk-SQVRXHOW.js → chunk-7AUMTARQ.js} +3 -3
  36. package/dist/{chunk-I3IH5MV5.js → chunk-7M7TMM4S.js} +77 -2
  37. package/dist/{chunk-37CNYTQQ.js → chunk-7MLFYMFB.js} +1 -1
  38. package/dist/{chunk-55YELV7B.js → chunk-7MVODWQF.js} +1 -1
  39. package/dist/{chunk-X6L6MD5B.js → chunk-ACLABKEF.js} +6 -6
  40. package/dist/{chunk-Q47FAYYK.js → chunk-BRTDLVK3.js} +1 -1
  41. package/dist/{chunk-OAG47RE6.js → chunk-DQZMJS2P.js} +1 -1
  42. package/dist/{chunk-G2UANIDX.js → chunk-DTXDQ6OP.js} +1 -1
  43. package/dist/{chunk-I45HL3VP.js → chunk-EZINX6HH.js} +2 -2
  44. package/dist/{chunk-IVEFOUZI.js → chunk-FCWFV4P7.js} +36 -12
  45. package/dist/{chunk-ISTRDGIX.js → chunk-FRLTKTOR.js} +1 -1
  46. package/dist/{chunk-6RIZY7OP.js → chunk-GTMBII7X.js} +1 -1
  47. package/dist/{chunk-FX6RUJUY.js → chunk-HOFX63F2.js} +3 -3
  48. package/dist/{chunk-5GUKZRQN.js → chunk-HZ7M2MZA.js} +1 -1
  49. package/dist/{chunk-HXUTX5GR.js → chunk-ID5AJ4L3.js} +2 -2
  50. package/dist/{chunk-PHMBMOXF.js → chunk-K6KBOORN.js} +48 -4
  51. package/dist/{chunk-F3OPUWQX.js → chunk-KNLSYCI5.js} +7 -7
  52. package/dist/{chunk-I7QMXZSB.js → chunk-LDW3KVGK.js} +2 -2
  53. package/dist/{chunk-5UDRPPN2.js → chunk-MY6CVBDD.js} +7 -4
  54. package/dist/{chunk-XWC7CNPY.js → chunk-NPDPDEPP.js} +1 -1
  55. package/dist/{chunk-7PS6RVWD.js → chunk-PEIV2SOG.js} +1 -1
  56. package/dist/{chunk-H6UY725W.js → chunk-R6IGQ5NO.js} +2 -2
  57. package/dist/{chunk-A6QCO474.js → chunk-RFJ6SX4U.js} +5 -5
  58. package/dist/{chunk-KROXPHXX.js → chunk-RNZEQTWZ.js} +2 -8
  59. package/dist/{chunk-6ASIXMFP.js → chunk-ROWEDRVX.js} +1 -1
  60. package/dist/{chunk-HDIRZGK4.js → chunk-RPUIMFHF.js} +1 -1
  61. package/dist/{chunk-EMSDWBG3.js → chunk-RVZNSKRH.js} +2 -2
  62. package/dist/{chunk-IDGLGXPA.js → chunk-T4RP55P2.js} +1 -1
  63. package/dist/{chunk-EMAWIZ54.js → chunk-TH7J3JZ5.js} +57 -20
  64. package/dist/{chunk-VHZ6DL3M.js → chunk-TMK4Q7JA.js} +10 -7
  65. package/dist/{chunk-UPR3MU6Z.js → chunk-TQ2RRB5V.js} +1 -1
  66. package/dist/{chunk-IDFNKFPL.js → chunk-U4BMRIE6.js} +16 -7
  67. package/dist/{chunk-HHSJJFVM.js → chunk-U7QTMRLW.js} +2 -2
  68. package/dist/{chunk-TOI35GN2.js → chunk-UAJCTEK2.js} +1 -1
  69. package/dist/{chunk-ESBMUZXZ.js → chunk-UJZT6HNN.js} +1 -1
  70. package/dist/chunk-UOZX5W5T.js +3852 -0
  71. package/dist/{chunk-FFJ5TDRD.js → chunk-VHBBV5DH.js} +10 -3
  72. package/dist/{chunk-SKYPMHQC.js → chunk-WHMFW5ET.js} +2 -2
  73. package/dist/{chunk-LYKSTRAY.js → chunk-WLHNIIXU.js} +3 -3
  74. package/dist/{chunk-RTBSA3EA.js → chunk-Y2M6XSNK.js} +1 -1
  75. package/dist/{chunk-4CTNDBE3.js → chunk-YNH6ERDL.js} +2 -2
  76. package/dist/{chunk-D42NU3DZ.js → chunk-YQICCAVA.js} +1 -1
  77. package/dist/{chunk-PMMQRJDE.js → chunk-YRAJDFIN.js} +1 -1
  78. package/dist/{chunk-BH7TTIPN.js → chunk-Z5233OAN.js} +4 -4
  79. package/dist/{chunk-K73RJB23.js → chunk-ZKBW7NU2.js} +2 -2
  80. package/dist/{chunk-J5XEZ24I.js → chunk-ZVBEGBII.js} +3 -3
  81. package/dist/{clean-7J6ZCCGV.js → clean-IM2JIAUT.js} +13 -13
  82. package/dist/cli.js +53 -53
  83. package/dist/{cloud-7IJCJCDD.js → cloud-6IPBCJSX.js} +4 -4
  84. package/dist/{cloudrun-UNZRIIDB.js → cloudrun-MWZ6S2I2.js} +4 -4
  85. package/dist/{compare-Q7VW5JZT.js → compare-WD7A2TV5.js} +23 -23
  86. package/dist/{compiler-KPHYGFXL.js → compiler-2EKSMC3I.js} +2 -2
  87. package/dist/{component-UUBREJKN.js → component-JKALWH36.js} +3 -3
  88. package/dist/{compositions-T4FTKIDP.js → compositions-643NAG4A.js} +9 -9
  89. package/dist/{delete-WZQF2IIA.js → delete-EASPXKHQ.js} +2 -2
  90. package/dist/{deploy-JU7A3XNC.js → deploy-CDKCQ5MX.js} +1 -1
  91. package/dist/{dist-ULGTPSU4.js → dist-F6FOKRSU.js} +6 -4
  92. package/dist/{doctor-VSNGRKXJ.js → doctor-7XUVYDJQ.js} +9 -9
  93. package/dist/{events-CRW2DYUT.js → events-5TTPYBKG.js} +2 -2
  94. package/dist/{events-E63YBUL2.js → events-TULV6D3G.js} +3 -3
  95. package/dist/{feedback-OSZWVR6N.js → feedback-4FTPWM6P.js} +6 -6
  96. package/dist/{ffmpeg-JLH3Z7G7.js → ffmpeg-MP7ZVYLZ.js} +5 -5
  97. package/dist/{figma-2BQNNR53.js → figma-B7LFWYKO.js} +3 -3
  98. package/dist/fontLocalizeCli.js +7 -7
  99. package/dist/{get-P2XI53QW.js → get-F7W4AQ2V.js} +2 -2
  100. package/dist/{gpuPolicy-NTKQJY75.js → gpuPolicy-NSNVDFXC.js} +5 -5
  101. package/dist/{grade-compare-OYASIHIB.js → grade-compare-6QXDTLS2.js} +24 -24
  102. package/dist/{help-HK6K2N4G.js → help-RJAA4O74.js} +1 -1
  103. package/dist/{history-JMTYKLXW.js → history-OOQBDVV5.js} +6 -6
  104. package/dist/hyperframe.manifest.json +1 -1
  105. package/dist/hyperframe.runtime.iife.js +65 -65
  106. package/dist/hyperframes-player.global.js +1 -1
  107. package/dist/{info-AW7CIVRE.js → info-5OGGYYLO.js} +7 -7
  108. package/dist/{init-6KIDG4LB.js → init-DM3TJKW2.js} +63 -45
  109. package/dist/{inspect-B7BLYMRZ.js → inspect-FECQCLS5.js} +24 -24
  110. package/dist/{installer-ZP2LQZUQ.js → installer-WOG4VORV.js} +4 -4
  111. package/dist/{keyframes-EQ36A5JE.js → keyframes-SZHWUF5Y.js} +6 -6
  112. package/dist/{lambda-E6VURLIS.js → lambda-JG2ZRGMC.js} +6 -6
  113. package/dist/{layout-XYC64QQQ.js → layout-7ACF7ZKC.js} +24 -24
  114. package/dist/{lint-V5DJYWBX.js → lint-ZCQGMILV.js} +6 -6
  115. package/dist/{list-RUGVRTVD.js → list-MH2X3Y2T.js} +2 -2
  116. package/dist/{login-ZTKGKXGS.js → login-CK46WX5U.js} +4 -4
  117. package/dist/{manager-JUP7PM6N.js → manager-GXTPNJVW.js} +6 -6
  118. package/dist/{media-treatment-VIUPK4OR.js → media-treatment-EH2AT34Z.js} +11 -11
  119. package/dist/{models-LJS2HBOZ.js → models-D5XP2UK6.js} +9 -9
  120. package/dist/{motionShot-3UAXZ7SN.js → motionShot-UR7D3SRQ.js} +12 -12
  121. package/dist/{normalize-4UDISLPL.js → normalize-3AYFSN2F.js} +1 -1
  122. package/dist/{normalize-audio-SBYI4YIH.js → normalize-audio-635JOR5W.js} +4 -4
  123. package/dist/{open-S27TUD3A.js → open-6WE5WFVM.js} +11 -11
  124. package/dist/{parakeetRunner-ETLMLJ4L.js → parakeetRunner-STHZPG32.js} +10 -10
  125. package/dist/{pipeline-I2M22M24.js → pipeline-LVEKRETU.js} +6 -6
  126. package/dist/{play-COJU6VJK.js → play-W6TDW4FE.js} +16 -16
  127. package/dist/{preflight-FZ24NCHH.js → preflight-LIMQXLR7.js} +6 -6
  128. package/dist/{present-YAHKLC5D.js → present-RX5QX6UR.js} +12 -12
  129. package/dist/{preview-KQOEU5YE.js → preview-KIWTWK63.js} +16 -16
  130. package/dist/{producer-DTNNG4T6.js → producer-TSNKSCUM.js} +1 -1
  131. package/dist/{projectConfig-4A76VYUP.js → projectConfig-NCP7JRH4.js} +6 -6
  132. package/dist/{publication-SQPMC2W3.js → publication-5W5UZWGC.js} +2 -2
  133. package/dist/{publish-QUEJBGGT.js → publish-7WR4XJ6I.js} +7 -7
  134. package/dist/{remove-background-FP2ETAQH.js → remove-background-43JGBRWQ.js} +7 -7
  135. package/dist/{render-BIFIL4U6.js → render-456HCO6O.js} +26 -26
  136. package/dist/{render-P664SMC7.js → render-7T44HIM6.js} +3 -3
  137. package/dist/{render-GQFXJWLV.js → render-WHMLYIOI.js} +13 -13
  138. package/dist/{render-batch-ZCPMYH6Z.js → render-batch-LURBJTBV.js} +3 -3
  139. package/dist/{resolver-BUC2GFZQ.js → resolver-MBIW4VC4.js} +4 -4
  140. package/dist/{sherpa-HFT6XEP6.js → sherpa-5J2AALED.js} +9 -9
  141. package/dist/{skills-3WEVO3NU.js → skills-UHOXOGGF.js} +5 -5
  142. package/dist/{skillsUpdateCheck-BFPWFOK5.js → skillsUpdateCheck-PDZIFUJE.js} +3 -3
  143. package/dist/{snapshot-WDQ6S7CJ.js → snapshot-PFV7ALLH.js} +33 -30
  144. package/dist/{src-RZ574OKP.js → src-DCVSEODX.js} +4 -4
  145. package/dist/{src-NPR2JZOJ.js → src-XK5YIR6L.js} +6 -6
  146. package/dist/{staticProjectServer-FTGTEZI4.js → staticProjectServer-4IE4G4JO.js} +12 -12
  147. package/dist/studio/assets/{hyperframes-player-CoOdf435.js → hyperframes-player-B_skzvYC.js} +1 -1
  148. package/dist/studio/assets/{index-CR85xg2x.js → index-CgLbvCUo.js} +1 -1
  149. package/dist/studio/assets/{index-C_6rTpaB.js → index-Dn5FAk2e.js} +99 -99
  150. package/dist/studio/index.html +1 -1
  151. package/dist/{studio-api-TAWB7B23.js → studio-api-JMWYU7KF.js} +6 -6
  152. package/dist/{studioServer-HRQGJTBU.js → studioServer-BWLSTGIG.js} +43 -42
  153. package/dist/{telemetry-QZ6HJF4W.js → telemetry-JCU3AV7W.js} +3 -3
  154. package/dist/{timeline-IKUEW42T.js → timeline-BCIFQYOM.js} +14 -14
  155. package/dist/{tokens-AUGUEWHS.js → tokens-7IXKALMQ.js} +2 -2
  156. package/dist/{transcribe-7734CG3N.js → transcribe-HW7HGJ4V.js} +15 -15
  157. package/dist/{transcribe-FWU6EMEO.js → transcribe-ZUQD3B32.js} +8 -8
  158. package/dist/{updateCheck-VIPQ3FPW.js → updateCheck-Z6LNEK7B.js} +2 -2
  159. package/dist/{upgrade-4VNDQTVO.js → upgrade-JYH72JGL.js} +2 -2
  160. package/dist/{urlDownloader-6CXL4CL7.js → urlDownloader-WKLFHSUH.js} +4 -4
  161. package/dist/{validate-QWCMVWID.js → validate-QCC27YYI.js} +18 -18
  162. package/dist/{video-245Q5WN4.js → video-EZ7ONY6L.js} +5 -5
  163. package/dist/warmCheck.js +31 -31
  164. package/package.json +1 -1
  165. package/dist/audio-65R4T74I.js +0 -1154
  166. package/dist/chunk-3NPOFC43.js +0 -3805
@@ -6,23 +6,23 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-5GUKZRQN.js";
9
+ } from "./chunk-HZ7M2MZA.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-IDFNKFPL.js";
15
+ } from "./chunk-U4BMRIE6.js";
16
16
  import {
17
17
  resolveCompositionViewportFromHtml
18
18
  } from "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  launchManagedBrowser,
21
21
  resolveManagedGpuMode
22
- } from "./chunk-TOI35GN2.js";
22
+ } from "./chunk-UAJCTEK2.js";
23
23
  import {
24
24
  pageNavigationTimeoutMs
25
- } from "./chunk-SQVRXHOW.js";
25
+ } from "./chunk-7AUMTARQ.js";
26
26
  import {
27
27
  defineCommand
28
28
  } from "./chunk-S3S4TGEH.js";
@@ -39,7 +39,7 @@ import {
39
39
  import {
40
40
  printDeprecationNotice,
41
41
  withMeta
42
- } from "./chunk-ISTRDGIX.js";
42
+ } from "./chunk-FRLTKTOR.js";
43
43
  import {
44
44
  normalizeErrorMessage
45
45
  } from "./chunk-KNU5COPB.js";
@@ -227,7 +227,7 @@ function extractCompositionErrorsFromLint(lintResult) {
227
227
  async function localizeRemoteAssets(html) {
228
228
  let dir;
229
229
  try {
230
- const { loadProducer } = await import("./producer-DTNNG4T6.js");
230
+ const { loadProducer } = await import("./producer-TSNKSCUM.js");
231
231
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
232
232
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
233
233
  const assetDir = dir;
@@ -248,9 +248,9 @@ async function localizeRemoteAssets(html) {
248
248
  }
249
249
  async function validateInBrowser(project, opts) {
250
250
  const projectDir = project.dir;
251
- const { bundleToSingleHtml } = await import("./compiler-KPHYGFXL.js");
251
+ const { bundleToSingleHtml } = await import("./compiler-2EKSMC3I.js");
252
252
  const { ensureBrowser } = await import("./manager-UHWEKPXC.js");
253
- const { serveStaticProjectHtml } = await import("./staticProjectServer-FTGTEZI4.js");
253
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-4IE4G4JO.js");
254
254
  const { lintProject } = await import("./lintProject-JATQKR64.js");
255
255
  const lintResult = await lintProject(projectDir);
256
256
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
@@ -272,9 +272,9 @@ async function validateInBrowser(project, opts) {
272
272
  try {
273
273
  const browser = await ensureBrowser();
274
274
  const puppeteer = await import("puppeteer-core");
275
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-RZ574OKP.js");
275
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-DCVSEODX.js");
276
276
  const requestedGpuMode = resolveCliChromeGpuMode();
277
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-NTKQJY75.js");
277
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-NSNVDFXC.js");
278
278
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
279
279
  const requiresWebGpu = compositionRequiresWebGpu(html);
280
280
  const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  updateNoticesSuppressed
9
- } from "./chunk-ISTRDGIX.js";
9
+ } from "./chunk-FRLTKTOR.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -8,7 +8,7 @@ import {
8
8
  auditClipDurations,
9
9
  shouldIgnoreHttpError,
10
10
  shouldIgnoreRequestFailure
11
- } from "./chunk-RUEGYANA.js";
11
+ } from "./chunk-22QKQDEE.js";
12
12
  import {
13
13
  checkSnapshotDirectory,
14
14
  rectToBbox
@@ -16,10 +16,10 @@ import {
16
16
  import {
17
17
  ambiguousIssue,
18
18
  loadBrowserScript
19
- } from "./chunk-TAX2ZJAP.js";
19
+ } from "./chunk-5ZMXGNGC.js";
20
20
  import {
21
21
  serveStaticProjectHtml
22
- } from "./chunk-J5XEZ24I.js";
22
+ } from "./chunk-ZVBEGBII.js";
23
23
  import {
24
24
  FfmpegUnavailableError,
25
25
  decideMediaProxyEligibility,
@@ -27,7 +27,7 @@ import {
27
27
  proxyVariantFor,
28
28
  resolveProxies,
29
29
  scanProjectMediaCodecMap
30
- } from "./chunk-6GPR3G3C.js";
30
+ } from "./chunk-5ZMIVTHN.js";
31
31
  import {
32
32
  AUDIT_SEEK_OPTIONS,
33
33
  DEFAULT_ZOOM_PADDING_PX,
@@ -41,18 +41,97 @@ import {
41
41
  seekCompositionTimeline,
42
42
  seekInPage,
43
43
  waitForPreferredSeekTarget
44
- } from "./chunk-IDFNKFPL.js";
44
+ } from "./chunk-U4BMRIE6.js";
45
45
  import {
46
46
  BrowserCleanupError,
47
47
  closeManagedBrowser
48
- } from "./chunk-TOI35GN2.js";
48
+ } from "./chunk-UAJCTEK2.js";
49
49
  import {
50
50
  resolveAutoProxy
51
- } from "./chunk-HDIRZGK4.js";
51
+ } from "./chunk-RPUIMFHF.js";
52
52
  import {
53
53
  normalizeErrorMessage
54
54
  } from "./chunk-KNU5COPB.js";
55
55
 
56
+ // src/utils/checkMotionBlur.ts
57
+ var OFF_HINTS = {
58
+ "accelerated-canvas": "html-in-canvas captures WebGL/WebGPU frozen, in sub-compositions too: render that effect separately or flatten it out of the page, or drop data-motion-blur on this composition",
59
+ "backface-visibility": "backface-visibility: hidden inside a 3D transform is drawn mirrored; avoid the 3D flip or drop motion blur",
60
+ "iframe-in-root": "move the <iframe>, <object>, <embed> or custom element out of the composition root (each is re-initialised when blur wraps the root), or drop motion blur",
61
+ "root-transform": "animate a child element instead of the composition root, or drop motion blur",
62
+ "root-opacity": "animate a child element instead of the composition root, or drop motion blur",
63
+ "root-blend-mode": "set mix-blend-mode on a child element instead of the composition root, or drop motion blur",
64
+ "nested-capture-canvas": "remove the inner <canvas layoutsubtree> / content=drawable, or drop motion blur"
65
+ };
66
+ var GENERIC_OFF_HINT = "remove what the reason names, or drop data-motion-blur";
67
+ var ASKED = 'data-motion-blur="on" is set but';
68
+ function motionBlurDrafts(probe) {
69
+ if (!probe) return [];
70
+ if (probe.reasonCode === "unsupported-browser") {
71
+ return [
72
+ {
73
+ code: "motion_blur_unverified",
74
+ severity: "info",
75
+ message: `${ASKED} blur could not be evaluated in this browser`,
76
+ fixHint: "the check browser has no html-in-canvas (drawElementImage); render once to see whether blur applies",
77
+ time: 0
78
+ }
79
+ ];
80
+ }
81
+ if (probe.state === "off") {
82
+ return [
83
+ {
84
+ code: "motion_blur_off",
85
+ severity: "warning",
86
+ message: `${ASKED} blur is off: ${probe.reason ?? "unknown reason"}`,
87
+ fixHint: OFF_HINTS[probe.reasonCode ?? ""] ?? GENERIC_OFF_HINT,
88
+ time: 0
89
+ }
90
+ ];
91
+ }
92
+ if (probe.movers === 0) {
93
+ return [
94
+ {
95
+ code: "motion_blur_no_movers",
96
+ severity: "info",
97
+ message: `${ASKED} nothing in the composition moves fast enough to blur, so it has no effect`,
98
+ fixHint: "animate an element's transform or position by 2+ px per frame, or drop data-motion-blur",
99
+ time: 0
100
+ }
101
+ ];
102
+ }
103
+ return [];
104
+ }
105
+ function readMotionBlurProbe() {
106
+ const api = Reflect.get(window, "__hfMotionBlur");
107
+ if (typeof api !== "object" || api === null) return null;
108
+ const probe = Reflect.get(api, "probe");
109
+ if (typeof probe !== "function") return null;
110
+ const report = Reflect.apply(probe, api, []);
111
+ if (typeof report !== "object" || report === null) return null;
112
+ const reason = Reflect.get(report, "reason");
113
+ const code = Reflect.get(report, "reasonCode");
114
+ const movers = Reflect.get(report, "movers");
115
+ const suspend = Reflect.get(api, "suspend");
116
+ if (typeof suspend === "function") Reflect.apply(suspend, api, []);
117
+ return {
118
+ state: Reflect.get(report, "state") === "off" ? "off" : "on",
119
+ reason: typeof reason === "string" ? reason : null,
120
+ reasonCode: typeof code === "string" ? code : null,
121
+ movers: typeof movers === "number" ? movers : 0
122
+ };
123
+ }
124
+ async function collectMotionBlurDrafts(page) {
125
+ const probe = await page.evaluate(readMotionBlurProbe).catch(() => null);
126
+ return motionBlurDrafts(probe);
127
+ }
128
+ function dropMotionBlurConsoleEcho(drafts, found) {
129
+ if (found.length === 0) return drafts;
130
+ return drafts.filter(
131
+ (d) => !(d.code === "console_warning" && d.message.startsWith("[motion-blur] off:"))
132
+ );
133
+ }
134
+
56
135
  // src/utils/checkBrowser.ts
57
136
  import { existsSync, mkdirSync, writeFileSync } from "fs";
58
137
  import os from "os";
@@ -240,13 +319,15 @@ function proxyFailedDraft(message) {
240
319
  return { code: "media_proxy_failed", severity: "warning", message, time: 0 };
241
320
  }
242
321
  async function runBrowserCheck(project, options, motion, runGrid, deadline, prelaunched) {
243
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-67MLTHKM.js");
322
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-TT32MZBO.js");
244
323
  const html = await bundleWithLocalizedFonts(project.dir);
324
+ deadline?.enter("copies");
245
325
  const { findings: drafts, failedPaths } = await preResolveHostileMediaProxies(
246
326
  project.dir,
247
327
  html,
248
328
  options.autoProxy
249
329
  );
330
+ deadline?.enter("launch");
250
331
  const server = await serveStaticProjectHtml(
251
332
  project.dir,
252
333
  html,
@@ -277,14 +358,15 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
277
358
  beforeNavigate: async (page2) => {
278
359
  wireRuntimeListeners(page2, drafts, clock);
279
360
  await deadline?.preparePage(page2);
280
- }
361
+ },
362
+ onLoaded: () => deadline?.enter("settle")
281
363
  });
282
364
  chromeBrowser = session.browser;
283
365
  const page = session.page;
284
366
  await waitForPreferredSeekTarget(page);
285
367
  const rootAnchor = await resolveRootAnchor(page);
286
368
  const launchSettleMs = Date.now() - launchSettleStart;
287
- const { analyzeClipMediaFit } = await import("./src-RZ574OKP.js");
369
+ const { analyzeClipMediaFit } = await import("./src-DCVSEODX.js");
288
370
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
289
371
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
290
372
  }
@@ -292,9 +374,11 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
292
374
  const message = tweenTailMessage(tail);
293
375
  drafts.push({ code: "gsap_tween_tail", severity: "warning", message, time: tail.later.end });
294
376
  }
377
+ const blur = await collectMotionBlurDrafts(page);
378
+ drafts.push(...blur);
295
379
  const sampleLog = sampleWindow(drafts);
296
380
  const driver = createPageDriver(page, clock, sampleLog);
297
- const result = await runGrid(driver, options, motion, helpers);
381
+ const result = await runGrid(driver, options, motion, helpers, deadline?.enter);
298
382
  helperSession?.stop();
299
383
  const helper = await helperOpen?.catch(() => void 0);
300
384
  const merged = helper ? mergeHelperDrafts(sampleLog, helper.sampleLog) : drafts;
@@ -303,7 +387,7 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
303
387
  ...result,
304
388
  timings: { ...result.timings, launchSettleMs },
305
389
  runtimeFindings: dropFailedProxyEchoes(
306
- keepBrokenImageAborts(merged, broken),
390
+ dropMotionBlurConsoleEcho(keepBrokenImageAborts(merged, broken), blur),
307
391
  failedPaths
308
392
  ).map((draft) => runtimeFinding(draft, rootAnchor))
309
393
  };
@@ -391,7 +475,7 @@ function mergeHelperDrafts(primary, helper) {
391
475
  }
392
476
  async function captureFindingCrops(project, options, requests, deadline) {
393
477
  if (requests.length === 0) return [];
394
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-67MLTHKM.js");
478
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-TT32MZBO.js");
395
479
  const html = await bundleWithLocalizedFonts(project.dir);
396
480
  const server = await serveStaticProjectHtml(
397
481
  project.dir,
@@ -1113,17 +1197,20 @@ function anchorsInPage(values) {
1113
1197
  });
1114
1198
  }
1115
1199
  async function resolveRootAnchor(page) {
1200
+ const selector = await page.evaluate(
1201
+ (explicit) => document.querySelector(explicit) ? explicit : "[data-composition-id]",
1202
+ '[data-composition-id][data-root="true"]'
1203
+ );
1116
1204
  const anchors = await resolveAnchors(page, [
1117
- { selector: "[data-composition-id]", time: 0, bbox: await compositionBbox(page) }
1205
+ { selector, time: 0, bbox: await compositionBbox(page, selector) }
1118
1206
  ]);
1119
1207
  return anchors[0] ?? fallbackAnchor(void 0);
1120
1208
  }
1121
- async function compositionBbox(page) {
1122
- return page.evaluate(() => {
1123
- const element = document.querySelector("[data-composition-id]");
1124
- const rect = element?.getBoundingClientRect();
1209
+ async function compositionBbox(page, selector) {
1210
+ return page.evaluate((root) => {
1211
+ const rect = document.querySelector(root)?.getBoundingClientRect();
1125
1212
  return rect ? { x: rect.x, y: rect.y, width: rect.width, height: rect.height } : { x: 0, y: 0, width: 0, height: 0 };
1126
- });
1213
+ }, selector);
1127
1214
  }
1128
1215
  async function collectContrast(page, time, snapshotAnnotations) {
1129
1216
  let prepared = [];
@@ -1454,7 +1541,8 @@ function runtimeFinding(draft, root) {
1454
1541
  time: draft.time,
1455
1542
  ...draft.timeRange ? { timeRange: draft.timeRange } : {},
1456
1543
  url: draft.url,
1457
- line: draft.line
1544
+ line: draft.line,
1545
+ ...draft.fixHint ? { fixHint: draft.fixHint } : {}
1458
1546
  };
1459
1547
  }
1460
1548
  function fallbackAnchor(request) {
@@ -19,7 +19,7 @@ import {
19
19
  splitElementInHtml,
20
20
  unwrapElementsFromHtml,
21
21
  wrapElementsInHtml
22
- } from "./chunk-SKYPMHQC.js";
22
+ } from "./chunk-WHMFW5ET.js";
23
23
  import {
24
24
  MEDIA_LINK_ATTR,
25
25
  relinkSplitHalves
@@ -68,7 +68,7 @@ import {
68
68
  scanProjectMediaCodecMap,
69
69
  shouldPrewarmProxy,
70
70
  waitForProxy
71
- } from "./chunk-6GPR3G3C.js";
71
+ } from "./chunk-5ZMIVTHN.js";
72
72
  import {
73
73
  STUDIO_MOTION_PATH,
74
74
  createStudioMotionRenderBodyScript,
@@ -109,12 +109,12 @@ import {
109
109
  motionPathPluginUrl,
110
110
  parseFps,
111
111
  parsePreviewProxyBox
112
- } from "./chunk-KROXPHXX.js";
112
+ } from "./chunk-RNZEQTWZ.js";
113
113
  import {
114
114
  addScenePartsManifest,
115
115
  ensureHfIds,
116
116
  stampHfIdsInPlace
117
- } from "./chunk-Q47FAYYK.js";
117
+ } from "./chunk-BRTDLVK3.js";
118
118
  import {
119
119
  AFTER_FONTS_SCRIPT_TYPE,
120
120
  RUNTIME_BOOTSTRAP_ATTR,
@@ -128,7 +128,7 @@ import {
128
128
  resolveRateSpec,
129
129
  sourceTimeAt,
130
130
  stripEmbeddedRuntimeScripts
131
- } from "./chunk-3NPOFC43.js";
131
+ } from "./chunk-UOZX5W5T.js";
132
132
  import {
133
133
  HTML_ATTRIBUTE_ENTITIES,
134
134
  MagicString,
@@ -5499,7 +5499,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
5499
5499
  let block = extractGsapScriptBlock(html);
5500
5500
  if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
5501
5501
  const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
5502
- const { GSAP_CDN } = await import("./dist-ULGTPSU4.js");
5502
+ const { GSAP_CDN } = await import("./dist-F6FOKRSU.js");
5503
5503
  const bootstrap = [
5504
5504
  `<script src="${GSAP_CDN}"></script>`,
5505
5505
  "<script>",
@@ -8025,7 +8025,8 @@ function registerRenderRoutes(api, adapter) {
8025
8025
  ...encoder.options,
8026
8026
  useGpu: body.gpu === true && format === "mp4",
8027
8027
  distinctId: typeof body.telemetryDistinctId === "string" ? body.telemetryDistinctId : void 0,
8028
- telemetryOptOut: body.telemetryOptOut === true
8028
+ telemetryOptOut: body.telemetryOptOut === true,
8029
+ ...body.previewMotionBlur === false ? { pageMotionBlur: "off" } : {}
8029
8030
  });
8030
8031
  jobState.createdAt = Date.now();
8031
8032
  renderJobs.set(jobId, jobState);
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  stoppedByCancelSignal
9
- } from "./chunk-IDGLGXPA.js";
9
+ } from "./chunk-T4RP55P2.js";
10
10
  import {
11
11
  DEFAULT_MODEL,
12
12
  ensureModel,
@@ -14,12 +14,12 @@ import {
14
14
  hasFFmpeg,
15
15
  pinnedWhisperModel,
16
16
  sha256File
17
- } from "./chunk-6ASIXMFP.js";
17
+ } from "./chunk-ROWEDRVX.js";
18
18
  import {
19
19
  findFFmpeg,
20
20
  findFFprobe,
21
21
  getFFmpegInstallHint
22
- } from "./chunk-K2ZKXTVL.js";
22
+ } from "./chunk-4XFFJAWS.js";
23
23
  import {
24
24
  findWavChunk
25
25
  } from "./chunk-UOFAE5RF.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VERSION
9
- } from "./chunk-I7QMXZSB.js";
9
+ } from "./chunk-LDW3KVGK.js";
10
10
 
11
11
  // src/registry/compatibility.ts
12
12
  import { compareVersions } from "compare-versions";
@@ -21,13 +21,13 @@ import {
21
21
  emitWords,
22
22
  getPreparedWavDurationSeconds,
23
23
  prepareWav
24
- } from "./chunk-7RAY4WZP.js";
24
+ } from "./chunk-3YHGQJI6.js";
25
25
  import {
26
26
  stoppedByCancelSignal
27
- } from "./chunk-IDGLGXPA.js";
27
+ } from "./chunk-T4RP55P2.js";
28
28
  import {
29
29
  verifies
30
- } from "./chunk-6ASIXMFP.js";
30
+ } from "./chunk-ROWEDRVX.js";
31
31
  import {
32
32
  PARAKEET_MODEL_LABEL,
33
33
  SHERPA_ERROR_PREFIX,
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  detectGpuEncoder
9
- } from "./chunk-I3IH5MV5.js";
9
+ } from "./chunk-7M7TMM4S.js";
10
10
  import {
11
11
  runCancellableProcess
12
12
  } from "./chunk-DYAPHNV6.js";
@@ -13,7 +13,7 @@ import {
13
13
  formatPreviewProxyBox,
14
14
  hdrToSdrToneMapFilter,
15
15
  parseFirstFrameColour
16
- } from "./chunk-KROXPHXX.js";
16
+ } from "./chunk-RNZEQTWZ.js";
17
17
  import {
18
18
  decodeAuthoredAttribute,
19
19
  scanHtmlOpeningTags
@@ -6,27 +6,27 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-5GUKZRQN.js";
9
+ } from "./chunk-HZ7M2MZA.js";
10
10
  import {
11
11
  serveStaticProjectHtml
12
- } from "./chunk-J5XEZ24I.js";
12
+ } from "./chunk-ZVBEGBII.js";
13
13
  import {
14
14
  AUDIT_SEEK_OPTIONS,
15
15
  installPageFunctionGuard,
16
16
  seekCompositionTimeline,
17
17
  waitForCompositionFonts,
18
18
  waitForRuntimeReady
19
- } from "./chunk-IDFNKFPL.js";
19
+ } from "./chunk-U4BMRIE6.js";
20
20
  import {
21
21
  launchManagedBrowser,
22
22
  resolveManagedGpuMode
23
- } from "./chunk-TOI35GN2.js";
23
+ } from "./chunk-UAJCTEK2.js";
24
24
  import {
25
25
  gotoWhenSent
26
26
  } from "./chunk-MOEGCMKI.js";
27
27
  import {
28
28
  pageNavigationTimeoutMs
29
- } from "./chunk-SQVRXHOW.js";
29
+ } from "./chunk-7AUMTARQ.js";
30
30
  import {
31
31
  defineCommand
32
32
  } from "./chunk-S3S4TGEH.js";
@@ -40,7 +40,7 @@ import {
40
40
  import {
41
41
  printDeprecationNotice,
42
42
  withMeta
43
- } from "./chunk-ISTRDGIX.js";
43
+ } from "./chunk-FRLTKTOR.js";
44
44
  import {
45
45
  normalizeErrorMessage
46
46
  } from "./chunk-KNU5COPB.js";
@@ -715,7 +715,7 @@ async function collectTweenBoundaries(page) {
715
715
  });
716
716
  }
717
717
  async function bundleProjectHtml(projectDir) {
718
- const { bundleToSingleHtml } = await import("./compiler-KPHYGFXL.js");
718
+ const { bundleToSingleHtml } = await import("./compiler-2EKSMC3I.js");
719
719
  return bundleToSingleHtml(projectDir);
720
720
  }
721
721
  async function alignViewportToComposition(page, url) {
@@ -734,13 +734,13 @@ async function alignViewportToComposition(page, url) {
734
734
  async function runLayoutAudit(projectDir, opts) {
735
735
  const { ensureBrowser } = await import("./manager-UHWEKPXC.js");
736
736
  const puppeteer = await import("puppeteer-core");
737
- const { buildChromeArgs } = await import("./src-RZ574OKP.js");
737
+ const { buildChromeArgs } = await import("./src-DCVSEODX.js");
738
738
  const {
739
739
  assertWebGpuAdapterAvailable,
740
740
  compositionRequiresWebGpu,
741
741
  resolveLocalBrowserGpuMode,
742
742
  resolveLocalWebGpu
743
- } = await import("./gpuPolicy-NTKQJY75.js");
743
+ } = await import("./gpuPolicy-NSNVDFXC.js");
744
744
  const html = await bundleProjectHtml(projectDir);
745
745
  const server = await serveStaticProjectHtml(
746
746
  projectDir,
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-XUXGIA7H.js";
38
38
  import {
39
39
  VERSION
40
- } from "./chunk-I7QMXZSB.js";
40
+ } from "./chunk-LDW3KVGK.js";
41
41
 
42
42
  // src/telemetry/transport.ts
43
43
  import { spawn } from "child_process";
@@ -8,7 +8,7 @@ import {
8
8
  flush,
9
9
  shouldTrack,
10
10
  trackEvent
11
- } from "./chunk-H5SM5PJI.js";
11
+ } from "./chunk-6IOBAOU7.js";
12
12
  import {
13
13
  CliRuntimeError
14
14
  } from "./chunk-JVBRJMOP.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  readCompositionFps
9
- } from "./chunk-G2UANIDX.js";
9
+ } from "./chunk-DTXDQ6OP.js";
10
10
  import {
11
11
  errorBox
12
12
  } from "./chunk-K2FLNJVB.js";
@@ -16,10 +16,10 @@ import {
16
16
  import {
17
17
  DEFAULT_CONFIG,
18
18
  resolvePageNavigationTimeout
19
- } from "./chunk-I3IH5MV5.js";
19
+ } from "./chunk-7M7TMM4S.js";
20
20
  import {
21
21
  parseFps
22
- } from "./chunk-KROXPHXX.js";
22
+ } from "./chunk-RNZEQTWZ.js";
23
23
 
24
24
  // src/browser/windowsCrash.ts
25
25
  var STATUS_STACK_BUFFER_OVERRUN_DEC = "3221225595";