hyperframes 0.8.120 → 0.8.122

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 (170) hide show
  1. package/dist/{add-SYG3UXKX.js → add-UDNFUHR7.js} +16 -16
  2. package/dist/{animatedGifPrep-RH5AEVNX.js → animatedGifPrep-2EXOFDLI.js} +7 -7
  3. package/dist/{asset-P6K7U3L6.js → asset-YFEFDXZV.js} +2 -2
  4. package/dist/{assetCataloger-QX37JS5D.js → assetCataloger-NDJSFPJN.js} +3 -3
  5. package/dist/{auth-TCX6TGIH.js → auth-22YSZLEK.js} +2 -2
  6. package/dist/{autoUpdate-YGT7MYDU.js → autoUpdate-4OUJ7O3D.js} +2 -2
  7. package/dist/{backgroundChecks-CCDNX6P2.js → backgroundChecks-FP5AP654.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-BBBUJETN.js → batchRender-ZXQVHWED.js} +4 -4
  10. package/dist/{beats-HNU6TRID.js → beats-AML5JHGX.js} +13 -13
  11. package/dist/{benchmark-UEMJYRLY.js → benchmark-6LELU6ZT.js} +13 -13
  12. package/dist/{browser-CZJK4WQR.js → browser-5NUYM6P2.js} +10 -10
  13. package/dist/{bundleWithLocalizedFonts-ZLXYM43M.js → bundleWithLocalizedFonts-TSGE3UAO.js} +2 -2
  14. package/dist/{capture-6NN3YJBF.js → capture-33BJRABG.js} +2 -2
  15. package/dist/{capture-4WXKXCCV.js → capture-HFYBSASN.js} +10 -10
  16. package/dist/{catalog-G3C7EIL3.js → catalog-KZ2PUXHS.js} +16 -16
  17. package/dist/{check-KTYPDNJD.js → check-RJQIUSVM.js} +33 -34
  18. package/dist/{checkBrowser-MJAN5LSM.js → checkBrowser-QQZCRUSY.js} +32 -33
  19. package/dist/{chunk-GVJMAHXQ.js → chunk-26LWC4RP.js} +2 -2
  20. package/dist/{chunk-OWMGDQBZ.js → chunk-2BMZEUGD.js} +2 -2
  21. package/dist/{chunk-4PTKEI2C.js → chunk-2CYCP3AY.js} +1 -1
  22. package/dist/{chunk-OI3IIR2X.js → chunk-3VG4A22C.js} +1 -1
  23. package/dist/{chunk-OV62R47Q.js → chunk-5KTDZVF3.js} +1 -1
  24. package/dist/{chunk-7N3IODU7.js → chunk-74G66BSC.js} +1 -1
  25. package/dist/{chunk-UDYR6TIQ.js → chunk-7T6RZSKP.js} +7 -7
  26. package/dist/{chunk-DL347PC3.js → chunk-A6DWJRHP.js} +3 -3
  27. package/dist/{chunk-WJP3UOB3.js → chunk-ABMHBIWX.js} +1 -1
  28. package/dist/{chunk-4IWDF5OL.js → chunk-BGYDTAYR.js} +4 -4
  29. package/dist/{chunk-OLFFCC2D.js → chunk-C477PVA2.js} +23 -1
  30. package/dist/chunk-C6MUZ4T2.js +3541 -0
  31. package/dist/{chunk-LIPKCOYU.js → chunk-DNIJ7MH6.js} +2 -2
  32. package/dist/{chunk-CK2YS3E3.js → chunk-DQKPTQEA.js} +5 -5
  33. package/dist/{chunk-U7AMFQ6G.js → chunk-EB5XYJBZ.js} +1 -1
  34. package/dist/{chunk-SVI32JAG.js → chunk-EBODC6OT.js} +3 -3
  35. package/dist/{chunk-FSLYPQ5Z.js → chunk-F7MXHGU3.js} +6 -5
  36. package/dist/{chunk-B3MQEZBK.js → chunk-FD5UEKRP.js} +1 -1
  37. package/dist/{chunk-NRTZ2JPC.js → chunk-GA46NF76.js} +1 -1
  38. package/dist/{chunk-LP3KFEVQ.js → chunk-J22NAGNW.js} +36 -31
  39. package/dist/{chunk-LHU6KXWL.js → chunk-JD3C44FP.js} +2 -2
  40. package/dist/{chunk-6ZX3YCCU.js → chunk-JQPICVXM.js} +4 -4
  41. package/dist/{chunk-QWD3NM22.js → chunk-KCJGTEJD.js} +1 -1
  42. package/dist/{chunk-WMCV6DHA.js → chunk-KJHOYQ2T.js} +2 -2
  43. package/dist/{chunk-5IABQ7OX.js → chunk-LQBR4IC7.js} +53 -2
  44. package/dist/{chunk-KWABBJYI.js → chunk-MOPVB4VL.js} +2 -2
  45. package/dist/{chunk-NITBGIHR.js → chunk-N4RVOW43.js} +2 -2
  46. package/dist/{chunk-6A332WKF.js → chunk-NA2DKY3M.js} +12 -14
  47. package/dist/{chunk-IUBZ3DSO.js → chunk-NKS75GFI.js} +3 -3
  48. package/dist/{chunk-TRLP3CSL.js → chunk-NSVHO5LZ.js} +6 -5
  49. package/dist/{chunk-2GKO3X7F.js → chunk-NSY245QZ.js} +1 -1
  50. package/dist/{chunk-UOKW7DPN.js → chunk-NUWXK2NW.js} +1 -1
  51. package/dist/{chunk-A45JNRYR.js → chunk-OHJGKETC.js} +1 -1
  52. package/dist/{chunk-YV5INYEM.js → chunk-OQ6HLIYU.js} +13 -11
  53. package/dist/{chunk-IJ2O4BLJ.js → chunk-OZ4V6VQ2.js} +3 -3
  54. package/dist/{chunk-TOOQJPUJ.js → chunk-Q4GCD5WE.js} +11 -9
  55. package/dist/{chunk-NP5P2A2K.js → chunk-QR77QVIT.js} +2 -2
  56. package/dist/{chunk-XUNOKLEJ.js → chunk-SSOJUJFQ.js} +1 -1
  57. package/dist/{chunk-FNX7RJIJ.js → chunk-TV2LRJVK.js} +2 -2
  58. package/dist/{chunk-LJXFGHPO.js → chunk-UQR6DWPM.js} +3 -3
  59. package/dist/{chunk-U3CILSBM.js → chunk-UUI2OMI7.js} +1 -1
  60. package/dist/{chunk-V5T6IA7D.js → chunk-VFZICECI.js} +1 -1
  61. package/dist/{chunk-2WKWEB4T.js → chunk-VP4IJ3NC.js} +2 -2
  62. package/dist/{chunk-PCL5KCT7.js → chunk-X6SS5FWY.js} +20 -12
  63. package/dist/{chunk-EFC3DCJL.js → chunk-XIZHC6UO.js} +1 -1
  64. package/dist/{chunk-BKQXLO55.js → chunk-Y6WM6GY3.js} +1 -1
  65. package/dist/{chunk-V2VNJNX6.js → chunk-ZIPAUKTK.js} +1 -1
  66. package/dist/{chunk-PPTHGZTG.js → chunk-ZTWFHWRR.js} +1 -1
  67. package/dist/{clean-AGTDSSLO.js → clean-QXMDWVYB.js} +17 -17
  68. package/dist/cli.js +50 -50
  69. package/dist/{cloud-TIKQ43CO.js → cloud-WTPVHGBP.js} +4 -4
  70. package/dist/{cloudrun-OQLPEWGP.js → cloudrun-JFN7W6XI.js} +5 -5
  71. package/dist/{compare-2B7W2HXM.js → compare-CCDZEHTS.js} +27 -28
  72. package/dist/{compiler-GPUSYMA6.js → compiler-DNZFJIKO.js} +7 -3
  73. package/dist/{component-ZQIN33DC.js → component-OSVQHEQJ.js} +3 -3
  74. package/dist/{compositions-D6JAIKFJ.js → compositions-CCMN5HAA.js} +12 -12
  75. package/dist/{delete-UWZ6BBQI.js → delete-ZE7Z7SDY.js} +2 -2
  76. package/dist/{deterministicFonts-ITMUXWD2.js → deterministicFonts-HHGHYN6V.js} +2 -2
  77. package/dist/{dist-JAOG6MYW.js → dist-RUZFIHUD.js} +1 -1
  78. package/dist/{dist-NP53GO3N.js → dist-Z7QP5AQY.js} +3 -3
  79. package/dist/{doctor-LHUS7OQG.js → doctor-KKRGCPV3.js} +11 -11
  80. package/dist/{events-CNSBSROB.js → events-WJKCFVF7.js} +9 -9
  81. package/dist/{events-EA2PNDU6.js → events-YN5EY7O7.js} +10 -10
  82. package/dist/{feedback-RAOT4ZX6.js → feedback-DHLYWTNU.js} +11 -11
  83. package/dist/{figma-HHALPQPX.js → figma-KCTT7ELR.js} +3 -3
  84. package/dist/fontLocalizeCli.js +10 -10
  85. package/dist/{get-2VHYWD5M.js → get-XCGOGN53.js} +2 -2
  86. package/dist/{gpuPolicy-WWBLJO6C.js → gpuPolicy-J5CPE3TK.js} +7 -7
  87. package/dist/{grade-compare-ZKYGIKRN.js → grade-compare-FBX5S77X.js} +27 -28
  88. package/dist/{gsapParserAcorn-FLWABPQM.js → gsapParserAcorn-3Z742FXU.js} +1 -1
  89. package/dist/{help-YXXIXAVR.js → help-6TQVEU2Q.js} +1 -1
  90. package/dist/{history-IFZM4MIB.js → history-PPDOAO2Z.js} +17 -17
  91. package/dist/hyperframe-runtime.js +54 -54
  92. package/dist/hyperframe.manifest.json +1 -1
  93. package/dist/hyperframe.runtime.iife.js +54 -54
  94. package/dist/hyperframes-player.global.js +1 -1
  95. package/dist/{info-6TZU6FRJ.js → info-42EBGTUI.js} +12 -12
  96. package/dist/{init-5DPNU4VR.js → init-SERRMFRH.js} +23 -23
  97. package/dist/{inspect-LASYMXFA.js → inspect-6TEDC7QZ.js} +28 -29
  98. package/dist/{installer-EUT2OZTH.js → installer-C47R4ZSU.js} +5 -5
  99. package/dist/{keyframes-BS6D4QMB.js → keyframes-BNLMFEWU.js} +19 -18
  100. package/dist/{lambda-AHKA33RE.js → lambda-DGWKFO3L.js} +6 -6
  101. package/dist/{layout-HMJ5I362.js → layout-PMYXB4ZJ.js} +28 -29
  102. package/dist/{lint-E2DTFSA5.js → lint-DDNL3QQ5.js} +13 -13
  103. package/dist/{lintProject-FDJYTOVM.js → lintProject-MXUZEBDH.js} +1 -1
  104. package/dist/{list-C3CXWSEA.js → list-VCELX3BO.js} +2 -2
  105. package/dist/{login-W276LNGF.js → login-WC4YD67C.js} +4 -4
  106. package/dist/{media-treatment-XECAXDZD.js → media-treatment-4QGIOHQR.js} +13 -13
  107. package/dist/{models-6YWOFGV2.js → models-UTVBFNKD.js} +8 -8
  108. package/dist/{motionShot-TNMJ2TNL.js → motionShot-3WDJAW4C.js} +17 -16
  109. package/dist/{normalize-audio-JTK53ZDZ.js → normalize-audio-ZXESA45N.js} +12 -12
  110. package/dist/{pipeline-HYULUMEV.js → pipeline-DRXU55OB.js} +7 -7
  111. package/dist/{play-PAJQYG2D.js → play-AUEOCKY3.js} +22 -22
  112. package/dist/{preflight-KJHZ46FX.js → preflight-OJJZVHWE.js} +8 -8
  113. package/dist/{present-TMFT5KD6.js → present-7JZQMSSU.js} +18 -18
  114. package/dist/{preview-4HHLUOFB.js → preview-3AMXHHVS.js} +18 -18
  115. package/dist/{producer-6WPA3U6C.js → producer-QI55RCFB.js} +1 -1
  116. package/dist/{projectConfig-A4DXJF4P.js → projectConfig-EJNHN452.js} +7 -7
  117. package/dist/{publication-QY2H23JU.js → publication-SH4OD64P.js} +3 -3
  118. package/dist/{publish-6RRDDVPK.js → publish-2B5LKGKK.js} +9 -9
  119. package/dist/{remove-background-O2J7EVEN.js → remove-background-EJ4SPMBK.js} +8 -8
  120. package/dist/{render-WFBNU2KD.js → render-GWIDYUYW.js} +13 -13
  121. package/dist/{render-N4HBJR46.js → render-JRYEUEAR.js} +24 -26
  122. package/dist/{render-QUQJP5PP.js → render-Y4OQV7BU.js} +4 -4
  123. package/dist/{render-batch-OS4UEZA4.js → render-batch-3F43JEX2.js} +4 -4
  124. package/dist/{renderCancellation-RWWLGOOD.js → renderCancellation-WUM56H5O.js} +7 -7
  125. package/dist/renderSetupWorker.js +1 -1
  126. package/dist/{resolver-IM46W362.js → resolver-WHBQ7QFS.js} +5 -5
  127. package/dist/{sherpa-GCD3QEO6.js → sherpa-5OYOKOOP.js} +8 -8
  128. package/dist/skills/media-use/SKILL.md +2 -0
  129. package/dist/skills/media-use/audio/scripts/lib/heygen.mjs +35 -8
  130. package/dist/skills/media-use/audio/scripts/lib/heygen.test.mjs +67 -2
  131. package/dist/skills/media-use/audio/scripts/lib/tts.mjs +2 -4
  132. package/dist/skills/media-use/audio/scripts/lib/tts.test.mjs +31 -1
  133. package/dist/skills/media-use/scripts/lib/manifest.d.mts +19 -0
  134. package/dist/skills/media-use/scripts/lib/manifest.mjs +17 -13
  135. package/dist/skills/media-use/scripts/lib/manifest.test.mjs +3 -2
  136. package/dist/{skills-D4HKC2WV.js → skills-JKBN3CQS.js} +12 -12
  137. package/dist/{skillsUpdateCheck-IPJRWH4Z.js → skillsUpdateCheck-KUYRATKA.js} +3 -3
  138. package/dist/{snapshot-A7BIVQUX.js → snapshot-M7FF5DBZ.js} +28 -29
  139. package/dist/{src-POL5BSEV.js → src-7NUMTCMB.js} +9 -9
  140. package/dist/{src-QOQJLFDK.js → src-S7FSBDSO.js} +6 -6
  141. package/dist/{staticProjectServer-BM2TZYJY.js → staticProjectServer-AQFAOUJX.js} +16 -16
  142. package/dist/{status-I7R2ATRZ.js → status-55DDWDMV.js} +7 -7
  143. package/dist/studio/assets/{hyperframes-player-i4gqkhjz.js → hyperframes-player-DMzBHhbH.js} +1 -1
  144. package/dist/studio/assets/{index-Ce3Lr-Gt.js → index-B-YDp8hN.js} +174 -174
  145. package/dist/studio/assets/{index-uWOhRqxe.js → index-CBRX2eZX.js} +1 -1
  146. package/dist/studio/assets/{index-C7LHDM18.js → index-lyjhSEzi.js} +1 -1
  147. package/dist/studio/{chunk-J6Q572FA.js → chunk-246VB2G3.js} +3 -1
  148. package/dist/studio/chunk-246VB2G3.js.map +1 -0
  149. package/dist/studio/index.d.ts +10 -2
  150. package/dist/studio/index.html +1 -1
  151. package/dist/studio/index.js +416 -301
  152. package/dist/studio/index.js.map +1 -1
  153. package/dist/studio/player.js +1 -1
  154. package/dist/{studio-api-GWTH7IPD.js → studio-api-7RBB3E3E.js} +10 -10
  155. package/dist/{studioServer-KB3KCVSZ.js → studioServer-5FPPFWL6.js} +42 -43
  156. package/dist/{system-QUFWS7NN.js → system-BQ72Y6YD.js} +7 -7
  157. package/dist/{telemetry-5WHZVQFM.js → telemetry-OIX76XCZ.js} +10 -10
  158. package/dist/{timeline-KM5YF4WX.js → timeline-JWDLDSVO.js} +17 -17
  159. package/dist/{tokens-VUPKFWHG.js → tokens-HZKAUSHK.js} +2 -2
  160. package/dist/{transcribe-E7RAUZ2W.js → transcribe-AQSGSWXV.js} +8 -8
  161. package/dist/{transcribe-4IJPHM33.js → transcribe-G2HSKAJN.js} +13 -13
  162. package/dist/{updateCheck-JY2WCSMC.js → updateCheck-Y6ICSKXS.js} +2 -2
  163. package/dist/{upgrade-QWBPPGTJ.js → upgrade-XU35HZ7O.js} +2 -2
  164. package/dist/{urlDownloader-5FUUYAOT.js → urlDownloader-V7FRXT7U.js} +6 -6
  165. package/dist/{validate-5LJ6TDCF.js → validate-J2D2ZRPB.js} +17 -18
  166. package/dist/{video-RTC4AXZB.js → video-MZPB3UAC.js} +7 -7
  167. package/package.json +1 -1
  168. package/dist/chunk-262C25DQ.js +0 -31
  169. package/dist/chunk-SHLFJFPM.js +0 -3541
  170. package/dist/studio/chunk-J6Q572FA.js.map +0 -1
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/version.ts
9
- var VERSION = true ? "0.8.120" : "0.0.0-dev";
10
- var PRODUCER_VERSION = true ? "0.8.120" : "0.0.0-dev";
9
+ var VERSION = true ? "0.8.122" : "0.0.0-dev";
10
+ var PRODUCER_VERSION = true ? "0.8.122" : "0.0.0-dev";
11
11
 
12
12
  export {
13
13
  VERSION,
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-5ETJX6WM.js";
17
17
  import {
18
18
  runEnvironmentChecks
19
- } from "./chunk-OV62R47Q.js";
19
+ } from "./chunk-5KTDZVF3.js";
20
20
  import {
21
21
  c
22
22
  } from "./chunk-ZTZA4UWZ.js";
@@ -25,24 +25,24 @@ import {
25
25
  getFreeDiskMb,
26
26
  getShmSizeMb,
27
27
  getSystemMeta
28
- } from "./chunk-U7AMFQ6G.js";
28
+ } from "./chunk-EB5XYJBZ.js";
29
29
  import {
30
30
  defineCommand
31
31
  } from "./chunk-S3S4TGEH.js";
32
32
  import {
33
33
  resolveExtractCacheDir
34
- } from "./chunk-IUBZ3DSO.js";
34
+ } from "./chunk-NKS75GFI.js";
35
35
  import {
36
36
  getUpdateMeta,
37
37
  withMeta
38
- } from "./chunk-7N3IODU7.js";
38
+ } from "./chunk-74G66BSC.js";
39
39
  import {
40
40
  CONFIG_PATH,
41
41
  withFileLock
42
42
  } from "./chunk-XUXGIA7H.js";
43
43
  import {
44
44
  VERSION
45
- } from "./chunk-LIPKCOYU.js";
45
+ } from "./chunk-DNIJ7MH6.js";
46
46
  import {
47
47
  normalizeErrorMessage
48
48
  } from "./chunk-KNU5COPB.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-AMKC3AXA.js";
10
10
  import {
11
11
  getSystemTotalMb
12
- } from "./chunk-IUBZ3DSO.js";
12
+ } from "./chunk-NKS75GFI.js";
13
13
 
14
14
  // src/telemetry/system.ts
15
15
  import { cpus, freemem, platform as platform2, release as release2 } from "os";
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  getMimeType,
9
9
  injectMediaCodecMapIntoHtml
10
- } from "./chunk-LP3KFEVQ.js";
10
+ } from "./chunk-J22NAGNW.js";
11
11
  import {
12
12
  PROXY_VARIANT_CONFIG,
13
13
  ProxyCapacityError,
@@ -18,10 +18,10 @@ import {
18
18
  recordProxyRequest,
19
19
  resolveProxy,
20
20
  resolveProxyVariantRequest
21
- } from "./chunk-OWMGDQBZ.js";
21
+ } from "./chunk-2BMZEUGD.js";
22
22
  import {
23
23
  resolveAutoProxy
24
- } from "./chunk-WJP3UOB3.js";
24
+ } from "./chunk-ABMHBIWX.js";
25
25
 
26
26
  // src/utils/staticProjectServer.ts
27
27
  import { createServer } from "http";
@@ -2559,9 +2559,10 @@ function findAllTweenCalls(ast, ref, scope, targetBindings) {
2559
2559
  return results;
2560
2560
  }
2561
2561
  var PERCENTAGE_KEY_RE = /^(\d+(?:\.\d+)?)%$/;
2562
- function tryResolveStringProp(propValue, scope) {
2562
+ function tryResolveStringProp(propValue, scope, source) {
2563
2563
  const val = resolveNode(propValue, scope);
2564
- return typeof val === "string" ? val : void 0;
2564
+ if (typeof val === "string") return val;
2565
+ return source === void 0 ? void 0 : `__raw:${source.slice(propValue.start, propValue.end)}`;
2565
2566
  }
2566
2567
  function parsePercentageKeyframes(node, scope, source) {
2567
2568
  const keyframes = [];
@@ -2588,9 +2589,9 @@ function parsePercentageKeyframes(node, scope, source) {
2588
2589
  }
2589
2590
  keyframes.push({ percentage, properties, ...kfEase ? { ease: kfEase } : {} });
2590
2591
  } else if (key === "ease") {
2591
- ease = tryResolveStringProp(prop.value, scope) ?? ease;
2592
+ ease = tryResolveStringProp(prop.value, scope, source) ?? ease;
2592
2593
  } else if (key === "easeEach") {
2593
- easeEach = tryResolveStringProp(prop.value, scope) ?? easeEach;
2594
+ easeEach = tryResolveStringProp(prop.value, scope, source) ?? easeEach;
2594
2595
  }
2595
2596
  }
2596
2597
  keyframes.sort((a, b) => a.percentage - b.percentage);
@@ -3000,7 +3001,7 @@ function applyTimelineDefaults(anims, defaults) {
3000
3001
  if (defaults.duration !== void 0) anim.duration = defaults.duration;
3001
3002
  else if (defaults.durationUnresolved) anim.durationUnresolved = true;
3002
3003
  }
3003
- if (anim.ease === void 0 && defaults.ease !== void 0) {
3004
+ if (anim.ease === void 0 && defaults.ease !== void 0 && !anim.keyframes) {
3004
3005
  anim.ease = defaults.ease;
3005
3006
  }
3006
3007
  }
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-IHFUKJOR.js";
10
10
  import {
11
11
  trackCommandFailure
12
- } from "./chunk-IJ2O4BLJ.js";
12
+ } from "./chunk-OZ4V6VQ2.js";
13
13
  import {
14
14
  failCommand
15
15
  } from "./chunk-PBN6GBJE.js";
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VALID_CANVAS_RESOLUTIONS,
9
9
  resolveResolutionFlagPair
10
- } from "./chunk-FSLYPQ5Z.js";
10
+ } from "./chunk-F7MXHGU3.js";
11
11
 
12
12
  // src/utils/parseOutputResolution.ts
13
13
  function parseOutputResolutionFlag(raw, options) {
@@ -21,7 +21,7 @@ import {
21
21
  splitElementInHtml,
22
22
  unwrapElementsFromHtml,
23
23
  wrapElementsInHtml
24
- } from "./chunk-6ZX3YCCU.js";
24
+ } from "./chunk-JQPICVXM.js";
25
25
  import {
26
26
  atomicTempPath,
27
27
  createFileAtomically,
@@ -34,7 +34,7 @@ import {
34
34
  measureAudio,
35
35
  requiredFfmpeg,
36
36
  resolveLocalAudioPath
37
- } from "./chunk-BKQXLO55.js";
37
+ } from "./chunk-Y6WM6GY3.js";
38
38
  import {
39
39
  PROXY_PARAMS_VERSION,
40
40
  PROXY_PENDING_RETRY_AFTER_SECONDS,
@@ -60,11 +60,11 @@ import {
60
60
  shouldPrewarmProxy,
61
61
  waitForProxy,
62
62
  walkDir
63
- } from "./chunk-OWMGDQBZ.js";
63
+ } from "./chunk-2BMZEUGD.js";
64
64
  import {
65
65
  findTimelineScript,
66
66
  parseGsapScriptAcorn
67
- } from "./chunk-TRLP3CSL.js";
67
+ } from "./chunk-NSVHO5LZ.js";
68
68
  import {
69
69
  STUDIO_MANUAL_EDITS_PATH
70
70
  } from "./chunk-KC5XXX3X.js";
@@ -81,26 +81,27 @@ import {
81
81
  motionPathPluginUrl,
82
82
  parseFps,
83
83
  sameInstant
84
- } from "./chunk-2WKWEB4T.js";
84
+ } from "./chunk-VP4IJ3NC.js";
85
85
  import {
86
86
  MagicString,
87
87
  VALID_CANVAS_RESOLUTIONS,
88
88
  unrollComputedTimeline
89
- } from "./chunk-FSLYPQ5Z.js";
89
+ } from "./chunk-F7MXHGU3.js";
90
90
  import {
91
+ AFTER_FONTS_SCRIPT_TYPE,
91
92
  addScenePartsManifest,
93
+ deferScriptsUntilFonts,
92
94
  ensureHfIds
93
- } from "./chunk-5IABQ7OX.js";
95
+ } from "./chunk-LQBR4IC7.js";
94
96
  import {
95
97
  findStartTags,
96
- injectScriptsIntoHtml,
97
98
  injectTagsAtHeadStart,
98
99
  insertBeforeCloseTag,
99
100
  isFullHtmlDocument,
100
101
  resolveRateSpec,
101
102
  sourceTimeAt,
102
103
  stripEmbeddedRuntimeScripts
103
- } from "./chunk-SHLFJFPM.js";
104
+ } from "./chunk-C6MUZ4T2.js";
104
105
  import {
105
106
  ProjectRootMissingError,
106
107
  folderGone,
@@ -113,7 +114,7 @@ import {
113
114
  import {
114
115
  isWithinProjectRoot,
115
116
  readProjectFile
116
- } from "./chunk-NITBGIHR.js";
117
+ } from "./chunk-N4RVOW43.js";
117
118
  import {
118
119
  FFPROBE_PATH_ENV,
119
120
  findFfBinary
@@ -2991,9 +2992,10 @@ function findAllTweenCalls(ast, ref, scope, targetBindings) {
2991
2992
  return results;
2992
2993
  }
2993
2994
  var PERCENTAGE_KEY_RE = /^(\d+(?:\.\d+)?)%$/;
2994
- function tryResolveStringProp(propValue, scope) {
2995
+ function tryResolveStringProp(propValue, scope, source) {
2995
2996
  const val = resolveNode(propValue, scope);
2996
- return typeof val === "string" ? val : void 0;
2997
+ if (typeof val === "string") return val;
2998
+ return source === void 0 ? void 0 : `__raw:${source.slice(propValue.start, propValue.end)}`;
2997
2999
  }
2998
3000
  function parsePercentageKeyframes(node, scope, source) {
2999
3001
  const keyframes = [];
@@ -3020,9 +3022,9 @@ function parsePercentageKeyframes(node, scope, source) {
3020
3022
  }
3021
3023
  keyframes.push({ percentage, properties, ...kfEase ? { ease: kfEase } : {} });
3022
3024
  } else if (key === "ease") {
3023
- ease = tryResolveStringProp(prop.value, scope) ?? ease;
3025
+ ease = tryResolveStringProp(prop.value, scope, source) ?? ease;
3024
3026
  } else if (key === "easeEach") {
3025
- easeEach = tryResolveStringProp(prop.value, scope) ?? easeEach;
3027
+ easeEach = tryResolveStringProp(prop.value, scope, source) ?? easeEach;
3026
3028
  }
3027
3029
  }
3028
3030
  keyframes.sort((a, b) => a.percentage - b.percentage);
@@ -3342,7 +3344,7 @@ function applyTimelineDefaults(anims, defaults) {
3342
3344
  if (defaults.duration !== void 0) anim.duration = defaults.duration;
3343
3345
  else if (defaults.durationUnresolved) anim.durationUnresolved = true;
3344
3346
  }
3345
- if (anim.ease === void 0 && defaults.ease !== void 0) {
3347
+ if (anim.ease === void 0 && defaults.ease !== void 0 && !anim.keyframes) {
3346
3348
  anim.ease = defaults.ease;
3347
3349
  }
3348
3350
  }
@@ -3935,7 +3937,7 @@ function preservedVarsEntries(varsNode, source) {
3935
3937
  function buildConvertedVarsCode(animation, varsNode, source) {
3936
3938
  const { fromProps, toProps } = conversionEndpoints(animation);
3937
3939
  const easeEach = animation.ease;
3938
- const easeEachEntry = easeEach ? `, easeEach: ${JSON.stringify(easeEach)}` : "";
3940
+ const easeEachEntry = easeEach ? `, easeEach: ${valueToCode(easeEach)}` : "";
3939
3941
  const kfCode = `{ "0%": ${recordToCode(fromProps)}, "100%": ${recordToCode(toProps)}${easeEachEntry} }`;
3940
3942
  const entries = [`keyframes: ${kfCode}`, ...preservedVarsEntries(varsNode, source)];
3941
3943
  if (easeEach) entries.push(`ease: "none"`);
@@ -4397,7 +4399,7 @@ function buildCollapsedFlatVars(animation, collapse) {
4397
4399
  function buildKeyframesVarsCode(animation, fromProps, toProps, varsNode, source, setDuration) {
4398
4400
  const fromEntries = Object.entries(fromProps).map(([k, v]) => `${safeKey(k)}: ${valueToCode(v)}`);
4399
4401
  const toEntries = Object.entries(toProps).map(([k, v]) => `${safeKey(k)}: ${valueToCode(v)}`);
4400
- const easeEntry = animation.ease ? `, easeEach: ${JSON.stringify(animation.ease)}` : "";
4402
+ const easeEntry = animation.ease ? `, easeEach: ${valueToCode(animation.ease)}` : "";
4401
4403
  const kfCode = `{ "0%": { ${fromEntries.join(", ")} }, "100%": { ${toEntries.join(", ")} }${easeEntry} }`;
4402
4404
  let preserved = preservedVarsEntries(varsNode, source);
4403
4405
  if (setDuration !== void 0) {
@@ -4451,11 +4453,11 @@ function convertToKeyframesFromScript(script, animationId, resolvedFromValues, s
4451
4453
  function buildKeyframeObjectCode(keyframes, easeEach) {
4452
4454
  const entries = mergePercentageKeyframes(keyframes).map((kf) => {
4453
4455
  const props = Object.entries(kf.properties).map(([k, v]) => `${safeKey(k)}: ${valueToCode(v)}`);
4454
- if (kf.ease) props.push(`ease: ${JSON.stringify(kf.ease)}`);
4456
+ if (kf.ease) props.push(`ease: ${valueToCode(kf.ease)}`);
4455
4457
  if (kf.auto) props.push(`_auto: 1`);
4456
4458
  return `${JSON.stringify(`${kf.percentage}%`)}: { ${props.join(", ")} }`;
4457
4459
  });
4458
- if (easeEach) entries.push(`easeEach: ${JSON.stringify(easeEach)}`);
4460
+ if (easeEach) entries.push(`easeEach: ${valueToCode(easeEach)}`);
4459
4461
  return `{ ${entries.join(", ")} }`;
4460
4462
  }
4461
4463
  function materializeKeyframesFromScript(script, animationId, keyframes, easeEach, resolvedSelector) {
@@ -4508,7 +4510,7 @@ function replaceTweenWithKeyframesInScript(script, animationId, edit) {
4508
4510
  const sorted = [...edit.keyframes].sort((a, b) => a.percentage - b.percentage);
4509
4511
  const parts = [`keyframes: ${buildKeyframeObjectCode(sorted, edit.easeEach)}`, ...kept];
4510
4512
  parts.push(`duration: ${valueToCode(edit.duration)}`);
4511
- if (edit.ease) parts.push(`ease: ${JSON.stringify(edit.ease)}`);
4513
+ if (edit.ease) parts.push(`ease: ${valueToCode(edit.ease)}`);
4512
4514
  if (animation.hasUnresolvedSelector || animation.targetSelector !== edit.targetSelector) {
4513
4515
  const selectorArg = call.node.arguments[0];
4514
4516
  ms.overwrite(selectorArg.start, selectorArg.end, JSON.stringify(edit.targetSelector));
@@ -4526,7 +4528,7 @@ function addAnimationWithKeyframesToScript(script, targetSelector, position, dur
4526
4528
  const sorted = [...keyframes].sort((a, b) => a.percentage - b.percentage);
4527
4529
  const kfObjCode = buildKeyframeObjectCode(sorted, easeEach);
4528
4530
  const varParts = [`keyframes: ${kfObjCode}`, `duration: ${valueToCode(duration)}`];
4529
- if (ease) varParts.push(`ease: ${JSON.stringify(ease)}`);
4531
+ if (ease) varParts.push(`ease: ${valueToCode(ease)}`);
4530
4532
  const stmtCode = `${parsed.timelineVar}.to(${JSON.stringify(targetSelector)}, { ${varParts.join(", ")} }, ${valueToCode(position)});`;
4531
4533
  const ms = new MagicString(script);
4532
4534
  ms.appendLeft(insertionPoint, "\n" + stmtCode);
@@ -5084,7 +5086,7 @@ function buildUnrollReplacement(timelineVar, animation, elements) {
5084
5086
  const calls = elements.map((el) => {
5085
5087
  const sorted = [...el.keyframes].sort((a, b) => a.percentage - b.percentage);
5086
5088
  const kfCode = buildKeyframeObjectCode(sorted, el.easeEach);
5087
- return `${timelineVar}.to(${JSON.stringify(el.selector)}, { keyframes: ${kfCode}, duration: ${duration}, ease: ${JSON.stringify(ease)} }, ${posCode});`;
5089
+ return `${timelineVar}.to(${JSON.stringify(el.selector)}, { keyframes: ${kfCode}, duration: ${duration}, ease: ${valueToCode(ease)} }, ${posCode});`;
5088
5090
  });
5089
5091
  return calls.join("\n ");
5090
5092
  }
@@ -5095,7 +5097,7 @@ function buildUnrollCallForElement(timelineVar, animation, el) {
5095
5097
  const posCode = typeof pos === "number" ? String(pos) : JSON.stringify(pos);
5096
5098
  const sorted = [...el.keyframes].sort((a, b) => a.percentage - b.percentage);
5097
5099
  const kfCode = buildKeyframeObjectCode(sorted, el.easeEach);
5098
- return `${timelineVar}.to(${JSON.stringify(el.selector)}, { keyframes: ${kfCode}, duration: ${duration}, ease: ${JSON.stringify(ease)} }, ${posCode});`;
5100
+ return `${timelineVar}.to(${JSON.stringify(el.selector)}, { keyframes: ${kfCode}, duration: ${duration}, ease: ${valueToCode(ease)} }, ${posCode});`;
5099
5101
  }
5100
5102
  var REFUSE_UNROLL = /* @__PURE__ */ Symbol("refuse-unroll");
5101
5103
  function loopBodyRawStatements(loopNode) {
@@ -6584,7 +6586,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
6584
6586
  let block = extractGsapScriptBlock(html);
6585
6587
  if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
6586
6588
  const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
6587
- const { GSAP_CDN } = await import("./dist-NP53GO3N.js");
6589
+ const { GSAP_CDN } = await import("./dist-Z7QP5AQY.js");
6588
6590
  const bootstrap = [
6589
6591
  `<script src="${GSAP_CDN}"></script>`,
6590
6592
  "<script>",
@@ -8420,6 +8422,11 @@ function buildSubCompositionHtml(projectDir, compPath, runtimeUrl, baseHref, raw
8420
8422
  rewrittenContent = contentDoc.body.innerHTML || rawComp;
8421
8423
  }
8422
8424
  rewrittenContent = stripEmbeddedRuntimeScripts(rewrittenContent);
8425
+ const { document: scriptsDoc } = parseHTML(
8426
+ `<!DOCTYPE html><html><head></head><body>${rewrittenContent}</body></html>`
8427
+ );
8428
+ deferScriptsUntilFonts(scriptsDoc);
8429
+ rewrittenContent = scriptsDoc.body.innerHTML;
8423
8430
  rewrittenContent = tagRootCompositionFile(rewrittenContent, compPath);
8424
8431
  const indexPath = join62(projectDir, "index.html");
8425
8432
  let headContent = "";
@@ -8630,7 +8637,8 @@ function injectMotionPathPluginIfNeeded(html) {
8630
8637
  const match = html.match(gsapScript);
8631
8638
  if (match) {
8632
8639
  const version = match[0].match(/gsap@([\d.]+)/)?.[1];
8633
- const pluginTag = `<script src="${motionPathPluginUrl(version)}"></script>`;
8640
+ const gsapTagType = match[0].match(/\stype=("[^"]*"|'[^']*')/i)?.[0] ?? "";
8641
+ const pluginTag = `<script${gsapTagType} src="${motionPathPluginUrl(version)}"></script>`;
8634
8642
  const end = html.indexOf(match[0]) + match[0].length;
8635
8643
  return html.slice(0, end) + "\n" + pluginTag + html.slice(end);
8636
8644
  }
@@ -8652,12 +8660,9 @@ function injectStudioMotionScript(html, projectDir, activeCompositionPath) {
8652
8660
  activeCompositionPath
8653
8661
  });
8654
8662
  if (!script) return html;
8655
- return injectScriptsIntoHtml(
8656
- injectStudioMotionDependencies(html, manifestContent),
8657
- [],
8658
- [script],
8659
- false
8660
- );
8663
+ const withDependencies = injectStudioMotionDependencies(html, manifestContent);
8664
+ const tag = `<script type="${AFTER_FONTS_SCRIPT_TYPE}">${script.replace(/<\/script/gi, "<\\/script")}</script>`;
8665
+ return insertBeforeCloseTag(withDependencies, "body", tag) ?? `${withDependencies}${tag}`;
8661
8666
  }
8662
8667
  var GSAP_FALLBACK_ATTR = "data-hf-gsap-fallback";
8663
8668
  var GSAP_CDN_FALLBACK_SCRIPT = `<script ${GSAP_FALLBACK_ATTR}>
@@ -19,10 +19,10 @@ import {
19
19
  import {
20
20
  formatVariableValidationIssue,
21
21
  validateVariables
22
- } from "./chunk-2WKWEB4T.js";
22
+ } from "./chunk-VP4IJ3NC.js";
23
23
  import {
24
24
  extractCompositionMetadata
25
- } from "./chunk-FSLYPQ5Z.js";
25
+ } from "./chunk-F7MXHGU3.js";
26
26
 
27
27
  // src/utils/variables.ts
28
28
  import { readFileSync } from "fs";
@@ -8,19 +8,19 @@ import {
8
8
  isAllowedHtmlAttribute,
9
9
  isSafeAttributeValue,
10
10
  sanitizeRichTextChildren
11
- } from "./chunk-2WKWEB4T.js";
11
+ } from "./chunk-VP4IJ3NC.js";
12
12
  import {
13
13
  removeElementWithGsapCascade
14
- } from "./chunk-FSLYPQ5Z.js";
14
+ } from "./chunk-F7MXHGU3.js";
15
15
  import {
16
16
  EXCLUDED_TAGS,
17
17
  ensureHfIds,
18
18
  mintHfId,
19
19
  walkCompositionDescendants
20
- } from "./chunk-5IABQ7OX.js";
20
+ } from "./chunk-LQBR4IC7.js";
21
21
  import {
22
22
  require_dist
23
- } from "./chunk-NITBGIHR.js";
23
+ } from "./chunk-N4RVOW43.js";
24
24
  import {
25
25
  readClipTiming,
26
26
  readMediaOffsetSeconds,
@@ -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-7N3IODU7.js";
9
+ } from "./chunk-74G66BSC.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -6,10 +6,10 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  getMimeType
9
- } from "./chunk-LP3KFEVQ.js";
9
+ } from "./chunk-J22NAGNW.js";
10
10
  import {
11
11
  injectTagsAtHeadStart
12
- } from "./chunk-SHLFJFPM.js";
12
+ } from "./chunk-C6MUZ4T2.js";
13
13
 
14
14
  // src/utils/compositionServer.ts
15
15
  import { createHash } from "crypto";
@@ -21,7 +21,7 @@ import {
21
21
  shouldClampResolvedMediaDuration,
22
22
  stripEmbeddedRuntimeScripts,
23
23
  warnUnknownEnumValues
24
- } from "./chunk-SHLFJFPM.js";
24
+ } from "./chunk-C6MUZ4T2.js";
25
25
  import {
26
26
  cssVariableName
27
27
  } from "./chunk-VC76R6W2.js";
@@ -31,7 +31,7 @@ import {
31
31
  } from "./chunk-OFQWTKPW.js";
32
32
  import {
33
33
  lintHyperframeHtml
34
- } from "./chunk-NITBGIHR.js";
34
+ } from "./chunk-N4RVOW43.js";
35
35
  import {
36
36
  CSS_URL_RE,
37
37
  checkSubCompositionUsability,
@@ -121,6 +121,54 @@ function inlineScriptRuns(scripts, isPinned = () => false) {
121
121
  runs.push({ members, anchor: null });
122
122
  return runs;
123
123
  }
124
+ var AFTER_FONTS_SCRIPT_TYPE = "text/hf-after-fonts";
125
+ var AFTER_FONTS_MODULE_TYPE = `${AFTER_FONTS_SCRIPT_TYPE}+module`;
126
+ var AFTER_FONTS_SCRIPTS = `script[type="${AFTER_FONTS_SCRIPT_TYPE}"], script[type="${AFTER_FONTS_MODULE_TYPE}"]`;
127
+ var AFTER_FONTS_CLAIM = "__hfAfterFontsClaimed";
128
+ var AFTER_FONTS_FALLBACK_ATTR = "data-hf-after-fonts-fallback";
129
+ var afterFontsFallback = () => `document.addEventListener("DOMContentLoaded", function () {
130
+ if (window.${AFTER_FONTS_CLAIM}) return;
131
+ var T = "${AFTER_FONTS_SCRIPT_TYPE}";
132
+ var all = [].slice.call(document.querySelectorAll('${AFTER_FONTS_SCRIPTS}'));
133
+ if (!all.length) return;
134
+ console.warn("[hyperframes] the runtime has no web-font gate; composition scripts run without waiting for fonts");
135
+ var late = function (el) { return el.type !== T || (el.hasAttribute("src") && el.hasAttribute("defer")); };
136
+ var queue = all.filter(function (el) { return !late(el); }).concat(all.filter(late));
137
+ (function next() {
138
+ var el = queue.shift();
139
+ if (!el) return;
140
+ var s = document.createElement("script");
141
+ for (var i = 0; i < el.attributes.length; i++) s.setAttribute(el.attributes[i].name, el.attributes[i].value);
142
+ if (el.type === T) s.removeAttribute("type"); else s.type = "module";
143
+ s.async = el.hasAttribute("async");
144
+ s.text = el.text;
145
+ var waits = s.type !== "module" && s.hasAttribute("src") && !s.async && !s.noModule;
146
+ if (waits) { s.addEventListener("load", next); s.addEventListener("error", next); }
147
+ el.replaceWith(s);
148
+ if (!waits) next();
149
+ })();
150
+ });`;
151
+ function deferScriptsUntilFonts(document, isFramework = () => false) {
152
+ let deferred = false;
153
+ for (const el of document.querySelectorAll("body script")) {
154
+ if (isFramework(el) || el.closest("noscript, svg"))
155
+ continue;
156
+ if (isClassicInline(el))
157
+ el.setAttribute("type", AFTER_FONTS_SCRIPT_TYPE);
158
+ else if ((el.getAttribute("type") || "").trim().toLowerCase() === "module") {
159
+ el.setAttribute("type", AFTER_FONTS_MODULE_TYPE);
160
+ } else
161
+ continue;
162
+ deferred = true;
163
+ }
164
+ if (!deferred || !document.head || document.querySelector(`script[${AFTER_FONTS_FALLBACK_ATTR}]`)) {
165
+ return;
166
+ }
167
+ const fallback = document.createElement("script");
168
+ fallback.setAttribute(AFTER_FONTS_FALLBACK_ATTR, "");
169
+ fallback.textContent = afterFontsFallback();
170
+ document.head.insertBefore(fallback, document.head.firstChild);
171
+ }
124
172
  function cssStyleMergeKey(el) {
125
173
  const rawType = el.getAttribute("type") ?? "";
126
174
  const type = el.tagName.toLowerCase() === "link" ? rawType.split(";")[0].trim() : rawType;
@@ -2735,6 +2783,7 @@ async function bundleProject(projectDir, options) {
2735
2783
  enforceCompositionPixelSizing(document);
2736
2784
  autoHealMissingCompositionIds(document);
2737
2785
  coalesceHeadStylesAndBodyScripts(document);
2786
+ deferScriptsUntilFonts(document, (el) => el.hasAttribute(RUNTIME_BOOTSTRAP_ATTR));
2738
2787
  injectTextRenderingRule(document);
2739
2788
  const inlineAssets = options?.inlineAssets !== false;
2740
2789
  for (const el of [...document.querySelectorAll("[src], [href], [poster], [xlink\\:href]")]) {
@@ -3012,6 +3061,8 @@ function addScenePartsManifest(html, ignore = []) {
3012
3061
  export {
3013
3062
  compileHtml,
3014
3063
  inlineScriptRuns,
3064
+ AFTER_FONTS_SCRIPT_TYPE,
3065
+ deferScriptsUntilFonts,
3015
3066
  cssStyleMergeKey,
3016
3067
  headStyleRuns,
3017
3068
  compositionStyle,
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  DEFAULT_VP9_CPU_USED,
18
18
  renderProvenanceArgs
19
- } from "./chunk-IUBZ3DSO.js";
19
+ } from "./chunk-NKS75GFI.js";
20
20
  import {
21
21
  loadOptionalPackage
22
22
  } from "./chunk-XT5P4QMO.js";
@@ -202,7 +202,7 @@ function inferInputKind(inputPath) {
202
202
  }
203
203
  async function probeMedia(inputPath) {
204
204
  const isImage = inferInputKind(inputPath) === "image";
205
- const engine = await import("./src-QOQJLFDK.js");
205
+ const engine = await import("./src-S7FSBDSO.js");
206
206
  const meta = await engine.extractMediaMetadata(inputPath);
207
207
  if (isImage) {
208
208
  return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
@@ -7534,11 +7534,11 @@ function deriveDurationFromClips(tags, rootTag) {
7534
7534
  return resolveCompositionDuration({ authoredDurationSeconds: null, clipEndsSeconds: clipEnds });
7535
7535
  }
7536
7536
  async function loadParseGsapScript() {
7537
- const mod = await import("./gsapParserAcorn-FLWABPQM.js");
7537
+ const mod = await import("./gsapParserAcorn-3Z742FXU.js");
7538
7538
  return mod.parseGsapScriptAcorn;
7539
7539
  }
7540
7540
  async function loadGsapScriptMotionPathFirstUseIndex() {
7541
- const mod = await import("./gsapParserAcorn-FLWABPQM.js");
7541
+ const mod = await import("./gsapParserAcorn-3Z742FXU.js");
7542
7542
  return mod.gsapScriptMotionPathFirstUseIndex;
7543
7543
  }
7544
7544
  var SCENE_BOUNDARY_EPSILON_SECONDS = 0.05;
@@ -6,23 +6,24 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  serveStaticProjectHtml
9
- } from "./chunk-SVI32JAG.js";
9
+ } from "./chunk-EBODC6OT.js";
10
10
  import {
11
11
  resolveProject
12
- } from "./chunk-B3MQEZBK.js";
12
+ } from "./chunk-FD5UEKRP.js";
13
13
  import {
14
14
  AUDIT_SEEK_OPTIONS,
15
15
  installPageFunctionGuard,
16
16
  seekCompositionTimeline,
17
- waitForCompositionFonts
18
- } from "./chunk-TOOQJPUJ.js";
17
+ waitForCompositionFonts,
18
+ waitForRuntimeReady
19
+ } from "./chunk-Q4GCD5WE.js";
19
20
  import {
20
21
  launchManagedBrowser,
21
22
  resolveManagedGpuMode
22
- } from "./chunk-OI3IIR2X.js";
23
+ } from "./chunk-3VG4A22C.js";
23
24
  import {
24
25
  resolveDiagnosticNavigationTimeoutMs
25
- } from "./chunk-OLFFCC2D.js";
26
+ } from "./chunk-C477PVA2.js";
26
27
  import {
27
28
  c
28
29
  } from "./chunk-ZTZA4UWZ.js";
@@ -36,7 +37,7 @@ import {
36
37
  import {
37
38
  printDeprecationNotice,
38
39
  withMeta
39
- } from "./chunk-7N3IODU7.js";
40
+ } from "./chunk-74G66BSC.js";
40
41
  import {
41
42
  normalizeErrorMessage
42
43
  } from "./chunk-KNU5COPB.js";
@@ -669,7 +670,7 @@ async function collectTweenBoundaries(page) {
669
670
  });
670
671
  }
671
672
  async function bundleProjectHtml(projectDir) {
672
- const { bundleToSingleHtml } = await import("./compiler-GPUSYMA6.js");
673
+ const { bundleToSingleHtml } = await import("./compiler-DNZFJIKO.js");
673
674
  return bundleToSingleHtml(projectDir);
674
675
  }
675
676
  async function alignViewportToComposition(page, url) {
@@ -691,8 +692,8 @@ async function alignViewportToComposition(page, url) {
691
692
  async function runLayoutAudit(projectDir, opts) {
692
693
  const { ensureBrowser } = await import("./manager-CT3D67CG.js");
693
694
  const puppeteer = await import("puppeteer-core");
694
- const { buildChromeArgs } = await import("./src-QOQJLFDK.js");
695
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalBrowserGpuMode } = await import("./gpuPolicy-WWBLJO6C.js");
695
+ const { buildChromeArgs } = await import("./src-S7FSBDSO.js");
696
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalBrowserGpuMode } = await import("./gpuPolicy-J5CPE3TK.js");
696
697
  const html = await bundleProjectHtml(projectDir);
697
698
  const server = await serveStaticProjectHtml(
698
699
  projectDir,
@@ -722,10 +723,7 @@ async function runLayoutAudit(projectDir, opts) {
722
723
  });
723
724
  await assertWebGpuAdapterAvailable(page, requiresWebGpu);
724
725
  await alignViewportToComposition(page, server.url);
725
- await page.waitForFunction(() => !!window.__timelines, {
726
- timeout: opts.timeout
727
- }).catch(() => {
728
- });
726
+ await waitForRuntimeReady(page, opts.timeout);
729
727
  await waitForCompositionFonts(page, 750);
730
728
  await new Promise((resolveSettle) => setTimeout(resolveSettle, 250));
731
729
  const duration = await getCompositionDuration(page);
@@ -22,7 +22,7 @@ import {
22
22
  renderFrameIdForRenderId,
23
23
  resolveAuthoredTimingWindow,
24
24
  toFps
25
- } from "./chunk-2WKWEB4T.js";
25
+ } from "./chunk-VP4IJ3NC.js";
26
26
  import {
27
27
  AUDIO_GROUP_RENDER_ID_ATTR,
28
28
  COLOR_GRADING_SOURCE_HIDDEN_ATTR,
@@ -52,7 +52,7 @@ import {
52
52
  shiftRateLane,
53
53
  sourceTimeAt,
54
54
  timeAtSourceTime
55
- } from "./chunk-SHLFJFPM.js";
55
+ } from "./chunk-C6MUZ4T2.js";
56
56
  import {
57
57
  chromeMajorCeiling,
58
58
  exceedsChromeCeiling
@@ -60,7 +60,7 @@ import {
60
60
  import {
61
61
  isWithinProjectRoot,
62
62
  resolveProjectRelativeSrc
63
- } from "./chunk-NITBGIHR.js";
63
+ } from "./chunk-N4RVOW43.js";
64
64
  import {
65
65
  FFMPEG_PATH_ENV,
66
66
  FFPROBE_PATH_ENV,