hyperframes 0.8.193 → 0.8.195

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 (191) hide show
  1. package/dist/{add-JC6DKZKC.js → add-NL6XABRV.js} +12 -12
  2. package/dist/{animatedGifPrep-S6KXJGEL.js → animatedGifPrep-JD4BBM2L.js} +8 -7
  3. package/dist/api.js +18 -17
  4. package/dist/{asset-XITFIFE6.js → asset-LRRHLG4L.js} +2 -2
  5. package/dist/{assetCataloger-K5FNKG35.js → assetCataloger-D7KGO346.js} +8 -7
  6. package/dist/{audio-364UHTY4.js → audio-34CZM4HF.js} +14 -13
  7. package/dist/{auth-5JEESRE6.js → auth-FL5ZMOXB.js} +1 -1
  8. package/dist/{autoUpdate-RVVYEHAA.js → autoUpdate-FZTJFLIH.js} +2 -2
  9. package/dist/{backgroundChecks-DCBIYWIQ.js → backgroundChecks-6ZKDCQET.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-ZZ4QMBAA.js → batchRender-KDZ4F4QT.js} +4 -4
  12. package/dist/{beats-YEL65M6G.js → beats-7PK677VR.js} +9 -9
  13. package/dist/{benchmark-RBTRPA76.js → benchmark-LO36QH5D.js} +9 -9
  14. package/dist/{browser-BVAYXT4R.js → browser-3F7NDHU2.js} +5 -5
  15. package/dist/{bundleWithLocalizedFonts-JLB2OYMT.js → bundleWithLocalizedFonts-JL5J52L6.js} +2 -2
  16. package/dist/{capture-GBXTMYLZ.js → capture-DOP3ONNZ.js} +13 -12
  17. package/dist/{capture-NIFX6IRS.js → capture-JOSZZYUW.js} +2 -2
  18. package/dist/{captureCompositionFrame-ATNNKUL5.js → captureCompositionFrame-SWZ4GEJP.js} +13 -12
  19. package/dist/{catalog-AGIF5SM5.js → catalog-EZLHZMLM.js} +12 -12
  20. package/dist/{catch-up-SZ3ULDTI.js → catch-up-6B7VY43I.js} +4 -4
  21. package/dist/{check-YLQS3TF4.js → check-QGELCBBF.js} +38 -37
  22. package/dist/{checkBrowser-QH4FMCBO.js → checkBrowser-A5C2AB4L.js} +33 -32
  23. package/dist/{chunk-L5YLA54L.js → chunk-2G6JZJAV.js} +2 -2
  24. package/dist/{chunk-M3KZBDPB.js → chunk-2HSRLKZR.js} +3 -3
  25. package/dist/{chunk-FBVUAH7N.js → chunk-2OYYNKJ4.js} +1 -1
  26. package/dist/{chunk-2VXY3PEF.js → chunk-2TU4OKIR.js} +280 -114
  27. package/dist/{chunk-4PPWAQYV.js → chunk-3OAFRLD3.js} +7 -7
  28. package/dist/{chunk-ZT45TCY3.js → chunk-3PYIQLPL.js} +1 -1
  29. package/dist/{chunk-DYNHVCBF.js → chunk-4R2NWLQL.js} +2 -2
  30. package/dist/{chunk-SOY2FPOR.js → chunk-636WBDXB.js} +5 -5
  31. package/dist/{chunk-LFUVTS6V.js → chunk-66Q27H72.js} +2 -2
  32. package/dist/{chunk-MFUNDJEV.js → chunk-6ORTRIDW.js} +3 -3
  33. package/dist/{chunk-D625D4TV.js → chunk-7DFIVUOW.js} +6 -6
  34. package/dist/{chunk-ZH7J2ZUL.js → chunk-7G2LQM3J.js} +14 -14
  35. package/dist/{chunk-6LWUPIKD.js → chunk-7PXVXRVX.js} +10 -10
  36. package/dist/{chunk-XQPA4W3M.js → chunk-7Y5RVQQ7.js} +4 -4
  37. package/dist/{chunk-2MCXIY4B.js → chunk-B7RJV74O.js} +28 -11
  38. package/dist/{chunk-BJAS2JLW.js → chunk-B7Y2DGU6.js} +7 -3
  39. package/dist/{chunk-YS4JUGNI.js → chunk-BBXZPDEA.js} +2 -2
  40. package/dist/{chunk-RWGASWT7.js → chunk-BL4U6U52.js} +1 -0
  41. package/dist/{chunk-VW63MHQU.js → chunk-CCZMCX3F.js} +1 -1
  42. package/dist/{chunk-BY6OQ6XP.js → chunk-CZNSLFYD.js} +3 -1
  43. package/dist/{chunk-X5CECNCK.js → chunk-D6XDOYMB.js} +8 -3
  44. package/dist/{chunk-F5LLORBP.js → chunk-E527A6RS.js} +2 -2
  45. package/dist/{chunk-7HTH5PFK.js → chunk-E74JMKSK.js} +58 -8
  46. package/dist/{chunk-TZEKVLPV.js → chunk-ELQ2QQC5.js} +1 -1
  47. package/dist/{chunk-4LXZJIVY.js → chunk-ES7KSCSO.js} +10 -10
  48. package/dist/{chunk-KU3UFQN7.js → chunk-F2ASNL2K.js} +1 -1
  49. package/dist/{chunk-VLLFORE2.js → chunk-F4T7XYMF.js} +1 -1
  50. package/dist/{chunk-E3P3LJG6.js → chunk-FLREUEHW.js} +28 -11
  51. package/dist/{chunk-TY3LDJA3.js → chunk-FWDDLW2H.js} +2 -2
  52. package/dist/{chunk-7YSFE4SZ.js → chunk-GJG4CTXD.js} +2 -2
  53. package/dist/{chunk-2NERNYCJ.js → chunk-GKMRLES4.js} +3 -3
  54. package/dist/{chunk-4TKJWWPL.js → chunk-GOOE33GV.js} +1 -1
  55. package/dist/{chunk-DIKAPMMF.js → chunk-GQVTTWZF.js} +144 -39
  56. package/dist/{chunk-L4JB7LI4.js → chunk-HJINEUHY.js} +84 -61
  57. package/dist/{chunk-7QNIXBQD.js → chunk-HT33OHQL.js} +3 -2
  58. package/dist/{chunk-AR3DQYRR.js → chunk-HTLCE7M2.js} +18 -18
  59. package/dist/{chunk-ZTKFRXJB.js → chunk-IA7HZ4CM.js} +4 -4
  60. package/dist/{chunk-WFS6S65A.js → chunk-IZR7U27Z.js} +12 -12
  61. package/dist/chunk-K4MJX7SR.js +17 -0
  62. package/dist/{chunk-ZZPBXRYQ.js → chunk-KJ6ZQL34.js} +1 -1
  63. package/dist/{chunk-VPC4XIVI.js → chunk-KVLGJJTE.js} +5 -5
  64. package/dist/{chunk-CGTZOY53.js → chunk-L2EBYFU7.js} +1 -1
  65. package/dist/{chunk-UNATIAOT.js → chunk-L4BFXWHC.js} +144 -67
  66. package/dist/{chunk-IW5G323T.js → chunk-LTGTN2TH.js} +8 -9
  67. package/dist/{chunk-EFXMETRK.js → chunk-NKNRVPNV.js} +2 -2
  68. package/dist/{chunk-2SFDWMSW.js → chunk-NOHH25WS.js} +2 -2
  69. package/dist/{chunk-7YKJF5JV.js → chunk-OB4GJZTY.js} +1 -1
  70. package/dist/{chunk-C4Y3ZREE.js → chunk-OJNNKHAZ.js} +75 -22
  71. package/dist/{chunk-OFYW4J7Y.js → chunk-ORZMO6NY.js} +3 -3
  72. package/dist/{chunk-BP4EMEGH.js → chunk-P5X5URNQ.js} +2 -2
  73. package/dist/{chunk-6XUJVEY2.js → chunk-RAACYYWX.js} +1 -1
  74. package/dist/{chunk-QFPBRZJD.js → chunk-ROEW726S.js} +1 -1
  75. package/dist/{chunk-WIVOXGEP.js → chunk-RZUEXJRC.js} +2 -2
  76. package/dist/{chunk-V7ZA2BNW.js → chunk-SC6NILKD.js} +1 -1
  77. package/dist/{chunk-2LSCYS2H.js → chunk-SMROKE63.js} +2 -2
  78. package/dist/{chunk-REUL2KH2.js → chunk-ST35C4K6.js} +1 -1
  79. package/dist/{chunk-OFV3WSOE.js → chunk-TE6VGYHQ.js} +1 -1
  80. package/dist/{chunk-3W4B6G7Y.js → chunk-VNWX5GBF.js} +19 -15
  81. package/dist/{chunk-QKX7ITER.js → chunk-W4SSWOOD.js} +2 -2
  82. package/dist/{chunk-6DLCOQR4.js → chunk-W7GMPEY3.js} +142 -44
  83. package/dist/{chunk-UIC7B5KW.js → chunk-WUL5LPI2.js} +12 -2
  84. package/dist/{chunk-5J6TWLFG.js → chunk-XC7SJ2UR.js} +3 -3
  85. package/dist/{chunk-E77ALFLW.js → chunk-XOUWCZHD.js} +1 -1
  86. package/dist/{chunk-GR5DQKDR.js → chunk-YFTO5YD7.js} +5 -5
  87. package/dist/{chunk-UB7BIDBS.js → chunk-YSXCPSJ4.js} +3 -3
  88. package/dist/{chunk-GKHMSSGY.js → chunk-YUFECVHG.js} +1 -1
  89. package/dist/{chunk-LMNZLZMJ.js → chunk-ZAVUASNT.js} +1 -1
  90. package/dist/{chunk-RTLPWOO6.js → chunk-ZL6ZCLY6.js} +1 -1
  91. package/dist/{chunk-DSQ72G5I.js → chunk-ZOJHEN3C.js} +1 -1
  92. package/dist/chunk-ZQRD62QZ.js +3901 -0
  93. package/dist/{clean-5HGESK5A.js → clean-PI4JLT6O.js} +21 -20
  94. package/dist/cli.js +53 -53
  95. package/dist/{cloud-746PHS32.js → cloud-SQRY723M.js} +4 -4
  96. package/dist/{cloudrun-DO7WFLSM.js → cloudrun-VMPROR43.js} +6 -6
  97. package/dist/commands/layout-audit.browser.js +1 -1
  98. package/dist/{compare-66YPRNG2.js → compare-EHX4APTP.js} +31 -30
  99. package/dist/{compiler-R4UYDWXO.js → compiler-FZCJGGBF.js} +5 -5
  100. package/dist/{component-EQ3H6RFP.js → component-I75ZKJYH.js} +3 -3
  101. package/dist/{compositions-ZZ7P5HT2.js → compositions-YNYYUEQD.js} +12 -11
  102. package/dist/{contactSheet-SZBJDOMT.js → contactSheet-5APX35L3.js} +1 -1
  103. package/dist/{delete-Z5MSLJSR.js → delete-7BVTBKOC.js} +2 -2
  104. package/dist/{deploy-RGSAC2K5.js → deploy-TUEEJP3W.js} +1 -1
  105. package/dist/{deterministicFonts-RO2TCMLZ.js → deterministicFonts-RADD3BSX.js} +2 -2
  106. package/dist/{dist-QQ26RUDV.js → dist-VRGIE57H.js} +1 -1
  107. package/dist/{dist-RKK4YLAD.js → dist-VVROHSP4.js} +3 -3
  108. package/dist/{doctor-W4ZZDRTU.js → doctor-53DSQFW4.js} +14 -13
  109. package/dist/{events-BSSL4A4W.js → events-AD3U6E7I.js} +2 -2
  110. package/dist/{events-UACT7PX3.js → events-M6FIUDNQ.js} +3 -3
  111. package/dist/{feedback-47ILDLQG.js → feedback-7SQ7KKAR.js} +8 -8
  112. package/dist/{ffmpeg-IEHSUNUT.js → ffmpeg-3HSSPXS4.js} +9 -8
  113. package/dist/{figma-PLFIIYRU.js → figma-B5XII2BO.js} +3 -3
  114. package/dist/fontLocalizeCli.js +11 -10
  115. package/dist/{get-PDWGJYNL.js → get-RZKNBIRD.js} +2 -2
  116. package/dist/{gpuPolicy-6UBXO6ME.js → gpuPolicy-77LOK3K6.js} +8 -7
  117. package/dist/{grade-compare-5VWLQGM7.js → grade-compare-K3YB3FQA.js} +37 -35
  118. package/dist/{gsapParser-UP3PNPC2.js → gsapParser-IEUSLYDJ.js} +11 -11
  119. package/dist/{gsapParserAcorn-OOTY2MVN.js → gsapParserAcorn-LZJKCFQI.js} +1 -1
  120. package/dist/{help-DS3KMWYO.js → help-UM6INVL5.js} +1 -1
  121. package/dist/{history-OC326NVZ.js → history-EWKPACWR.js} +7 -7
  122. package/dist/hyperframe.manifest.json +1 -1
  123. package/dist/hyperframe.runtime.iife.js +72 -66
  124. package/dist/hyperframes-player.global.js +3 -3
  125. package/dist/hyperframes-slideshow.global.js +1 -1
  126. package/dist/{info-AUIFV6MX.js → info-KY3MFTCY.js} +8 -8
  127. package/dist/{init-MRTWWDFW.js → init-LURF2PL5.js} +30 -29
  128. package/dist/{inspect-55NOAXI2.js → inspect-46CZJM6P.js} +31 -30
  129. package/dist/{installer-YSFFGBBV.js → installer-NGFX6INI.js} +5 -5
  130. package/dist/{keyframes-OO2BX2IB.js → keyframes-YCSK6POI.js} +59 -33
  131. package/dist/{lambda-CXXY6QT3.js → lambda-5KXULI2S.js} +8 -8
  132. package/dist/{layout-57GJXKDK.js → layout-WOLH24YE.js} +31 -30
  133. package/dist/{lint-J4FK3Z6G.js → lint-P3P2LX6S.js} +7 -7
  134. package/dist/{lintProject-52SLJPRC.js → lintProject-ESAJKFOX.js} +1 -1
  135. package/dist/{list-VDQUJ76B.js → list-RUYQWMF2.js} +2 -2
  136. package/dist/{login-TJSEALWW.js → login-THBBWZAY.js} +4 -4
  137. package/dist/{manager-MZIJY73J.js → manager-COSJVRAE.js} +2 -2
  138. package/dist/{manager-4PLYEEWP.js → manager-V34BMSAG.js} +10 -9
  139. package/dist/{media-treatment-GXP4PMJH.js → media-treatment-IMBLTYGV.js} +15 -14
  140. package/dist/{models-HQQQKEEP.js → models-3NW7HU72.js} +14 -13
  141. package/dist/{motionShot-2BT5D7DC.js → motionShot-VTTYZ6KW.js} +17 -16
  142. package/dist/{normalize-audio-SOLFMHNP.js → normalize-audio-ME3X7HBX.js} +6 -6
  143. package/dist/{open-KHEUODFQ.js → open-GLGSJISM.js} +12 -12
  144. package/dist/{parakeetRunner-BHU5NCAX.js → parakeetRunner-T3UGRZWC.js} +15 -14
  145. package/dist/{pipeline-WFV5HDTD.js → pipeline-IJXVEQCU.js} +10 -9
  146. package/dist/{play-GB34CANJ.js → play-HFFGGAZH.js} +21 -21
  147. package/dist/{preflight-REF3VSJ7.js → preflight-QV6V3UO2.js} +11 -10
  148. package/dist/{present-SIUTA7TD.js → present-TH34CTYY.js} +17 -17
  149. package/dist/{preview-T2GE7Z4A.js → preview-R67EQGQP.js} +100 -65
  150. package/dist/{producer-23KVQZAB.js → producer-HWPFETDU.js} +1 -1
  151. package/dist/{projectConfig-DBSNBPNP.js → projectConfig-AO4V3RHS.js} +7 -7
  152. package/dist/{publication-IXPUKYWJ.js → publication-BDQ3PXYG.js} +3 -3
  153. package/dist/{publish-3BA5VHXJ.js → publish-PXYTWSXN.js} +10 -10
  154. package/dist/{remove-background-RMSCJVVQ.js → remove-background-BVDJPT3Z.js} +11 -10
  155. package/dist/{render-Y6CTQ3YW.js → render-45YHWV6W.js} +6 -6
  156. package/dist/{render-6RNE2MLU.js → render-5MZY4TAB.js} +17 -16
  157. package/dist/{render-XGOZMMWX.js → render-5RQUYPIV.js} +35 -34
  158. package/dist/{render-batch-VUR6N6EY.js → render-batch-ZUTUBTHX.js} +6 -6
  159. package/dist/renderSetupWorker.js +42 -4
  160. package/dist/{resolver-GJCUH57W.js → resolver-FN2M3XVM.js} +5 -5
  161. package/dist/{sherpa-VVAKRCPL.js → sherpa-6KWNPRWB.js} +14 -13
  162. package/dist/skills/media-use/scripts/lib/duck.mjs +18 -2
  163. package/dist/skills/media-use/scripts/lib/duck.test.mjs +79 -0
  164. package/dist/{skills-ZHBURVQG.js → skills-PWQCM2BT.js} +5 -5
  165. package/dist/{skillsUpdateCheck-VMDAL2O2.js → skillsUpdateCheck-EHV2G3JX.js} +3 -3
  166. package/dist/{snapshot-KEOG56SL.js → snapshot-7Q24NFEI.js} +39 -38
  167. package/dist/{src-TZLGFRRX.js → src-J43SXEHJ.js} +10 -9
  168. package/dist/{src-BH5NICGQ.js → src-OS2FRVZV.js} +9 -6
  169. package/dist/{staticProjectServer-BKXL5CXB.js → staticProjectServer-YJWOQJF4.js} +18 -18
  170. package/dist/studio/assets/{hyperframes-player-BMcUdmDb.js → hyperframes-player-DnIPEARk.js} +1 -1
  171. package/dist/studio/assets/{index-Ci6GuloR.js → index-CVppCm_X.js} +1 -1
  172. package/dist/studio/assets/{index-Ca-mgTnS.js → index-Dkt4c1MV.js} +161 -161
  173. package/dist/studio/index.html +1 -1
  174. package/dist/{studio-api-A5U6QAMC.js → studio-api-CZBZ4D65.js} +11 -11
  175. package/dist/{studioServer-5EC5CP4W.js → studioServer-U6EX5DSB.js} +94 -53
  176. package/dist/{telemetry-BCKJXDSW.js → telemetry-VP4UWWO3.js} +3 -3
  177. package/dist/{timeline-AZWAXTAY.js → timeline-LMSUKEG6.js} +20 -19
  178. package/dist/{tokens-X7NC3V7C.js → tokens-FQ5AI5H4.js} +2 -2
  179. package/dist/{transcribe-7NCY7QZ2.js → transcribe-DNQFPZ2S.js} +13 -12
  180. package/dist/{transcribe-SH26H755.js → transcribe-VAMXV7QS.js} +19 -18
  181. package/dist/{updateCheck-Y7FUWQM4.js → updateCheck-TOU7VLZK.js} +2 -2
  182. package/dist/{upgrade-ZHGEVL65.js → upgrade-CJRMRR2S.js} +2 -2
  183. package/dist/{urlDownloader-FPILIT7M.js → urlDownloader-GETNWEIT.js} +7 -6
  184. package/dist/{validate-KQOZR4F6.js → validate-PRI2UTQS.js} +25 -24
  185. package/dist/vendor/npm/gsap@3.15.0/dist/CustomEase.min.js +11 -0
  186. package/dist/vendor/npm/gsap@3.15.0/dist/MotionPathPlugin.min.js +11 -0
  187. package/dist/vendor/npm/gsap@3.15.0/dist/gsap.min.js +11 -0
  188. package/dist/{video-N2QAETFB.js → video-VOCQA6AG.js} +8 -7
  189. package/dist/warmCheck.js +38 -37
  190. package/package.json +1 -1
  191. package/dist/chunk-USWPZXEA.js +0 -3897
@@ -14,33 +14,33 @@ import {
14
14
  } from "./chunk-6JR2XUEE.js";
15
15
  import {
16
16
  readCompositionFps
17
- } from "./chunk-VW63MHQU.js";
17
+ } from "./chunk-CCZMCX3F.js";
18
18
  import {
19
19
  HF_AUDIO_GROUP_ATTR,
20
20
  extractAudioMetadata,
21
21
  extractMediaMetadata
22
- } from "./chunk-L4JB7LI4.js";
22
+ } from "./chunk-HJINEUHY.js";
23
23
  import {
24
24
  byStart,
25
25
  fpsToNumber,
26
26
  parseFpsWithDefault
27
- } from "./chunk-7HTH5PFK.js";
27
+ } from "./chunk-E74JMKSK.js";
28
28
  import {
29
29
  HF_AUDIO_AUTOMATION_ATTR,
30
30
  HF_AUDIO_FX_ATTR,
31
31
  parseAudioFxChain,
32
32
  parseAutomation,
33
33
  resolveAutomation
34
- } from "./chunk-USWPZXEA.js";
34
+ } from "./chunk-ZQRD62QZ.js";
35
35
  import {
36
36
  isSubCompositionHost,
37
37
  topLevelElements,
38
38
  trackKindOf
39
- } from "./chunk-2MCXIY4B.js";
39
+ } from "./chunk-B7RJV74O.js";
40
40
  import {
41
41
  resolveReferencedDuration,
42
42
  resolveReferencedStart
43
- } from "./chunk-2VXY3PEF.js";
43
+ } from "./chunk-2TU4OKIR.js";
44
44
  import {
45
45
  resolveAuthoredAssetFile
46
46
  } from "./chunk-6BNTGNGD.js";
@@ -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-LMNZLZMJ.js";
9
+ } from "./chunk-ZAVUASNT.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-4LXZJIVY.js";
15
+ } from "./chunk-ES7KSCSO.js";
16
16
  import {
17
17
  launchManagedBrowser,
18
18
  resolveManagedGpuMode
19
- } from "./chunk-UIC7B5KW.js";
19
+ } from "./chunk-WUL5LPI2.js";
20
20
  import {
21
21
  pageNavigationTimeoutMs
22
- } from "./chunk-UB7BIDBS.js";
22
+ } from "./chunk-YSXCPSJ4.js";
23
23
  import {
24
24
  resolveCompositionViewportFromHtml
25
- } from "./chunk-4TKJWWPL.js";
25
+ } from "./chunk-GOOE33GV.js";
26
26
  import {
27
27
  defineCommand
28
28
  } from "./chunk-S3S4TGEH.js";
@@ -35,14 +35,14 @@ import {
35
35
  } from "./chunk-ZTZA4UWZ.js";
36
36
  import {
37
37
  resolveNaturalMediaTimelineDuration
38
- } from "./chunk-USWPZXEA.js";
38
+ } from "./chunk-ZQRD62QZ.js";
39
39
  import {
40
40
  decodeWellFormedEscapes
41
41
  } from "./chunk-BSQ7XANM.js";
42
42
  import {
43
43
  printDeprecationNotice,
44
44
  withMeta
45
- } from "./chunk-TZEKVLPV.js";
45
+ } from "./chunk-ELQ2QQC5.js";
46
46
  import {
47
47
  normalizeErrorMessage
48
48
  } from "./chunk-T2EUWCJE.js";
@@ -239,7 +239,7 @@ function extractCompositionErrorsFromLint(lintResult) {
239
239
  async function localizeRemoteAssets(html) {
240
240
  let dir;
241
241
  try {
242
- const { loadProducer } = await import("./producer-23KVQZAB.js");
242
+ const { loadProducer } = await import("./producer-HWPFETDU.js");
243
243
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
244
244
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
245
245
  const assetDir = dir;
@@ -260,10 +260,10 @@ async function localizeRemoteAssets(html) {
260
260
  }
261
261
  async function validateInBrowser(project, opts) {
262
262
  const projectDir = project.dir;
263
- const { bundleToSingleHtml } = await import("./compiler-R4UYDWXO.js");
264
- const { ensureBrowser } = await import("./manager-MZIJY73J.js");
265
- const { serveStaticProjectHtml } = await import("./staticProjectServer-BKXL5CXB.js");
266
- const { lintProject } = await import("./lintProject-52SLJPRC.js");
263
+ const { bundleToSingleHtml } = await import("./compiler-FZCJGGBF.js");
264
+ const { ensureBrowser } = await import("./manager-COSJVRAE.js");
265
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-YJWOQJF4.js");
266
+ const { lintProject } = await import("./lintProject-ESAJKFOX.js");
267
267
  const lintResult = await lintProject(projectDir);
268
268
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
269
269
  const html = await bundleToSingleHtml(projectDir);
@@ -284,9 +284,9 @@ async function validateInBrowser(project, opts) {
284
284
  try {
285
285
  const browser = await ensureBrowser();
286
286
  const puppeteer = await import("puppeteer-core");
287
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-BH5NICGQ.js");
287
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-OS2FRVZV.js");
288
288
  const requestedGpuMode = resolveCliChromeGpuMode();
289
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-6UBXO6ME.js");
289
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-77LOK3K6.js");
290
290
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
291
291
  const requiresWebGpu = compositionRequiresWebGpu(html);
292
292
  const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
@@ -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-LMNZLZMJ.js";
9
+ } from "./chunk-ZAVUASNT.js";
10
10
  import {
11
11
  serveStaticProjectHtml
12
- } from "./chunk-VPC4XIVI.js";
12
+ } from "./chunk-KVLGJJTE.js";
13
13
  import {
14
14
  AUDIT_SEEK_OPTIONS,
15
15
  installPageFunctionGuard,
16
16
  seekCompositionTimeline,
17
17
  waitForCompositionFonts,
18
18
  waitForRuntimeReady
19
- } from "./chunk-4LXZJIVY.js";
19
+ } from "./chunk-ES7KSCSO.js";
20
20
  import {
21
21
  launchManagedBrowser,
22
22
  resolveManagedGpuMode
23
- } from "./chunk-UIC7B5KW.js";
23
+ } from "./chunk-WUL5LPI2.js";
24
24
  import {
25
25
  gotoWhenSent
26
26
  } from "./chunk-MOEGCMKI.js";
27
27
  import {
28
28
  pageNavigationTimeoutMs
29
- } from "./chunk-UB7BIDBS.js";
29
+ } from "./chunk-YSXCPSJ4.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-TZEKVLPV.js";
43
+ } from "./chunk-ELQ2QQC5.js";
44
44
  import {
45
45
  normalizeErrorMessage
46
46
  } from "./chunk-T2EUWCJE.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-R4UYDWXO.js");
718
+ const { bundleToSingleHtml } = await import("./compiler-FZCJGGBF.js");
719
719
  return bundleToSingleHtml(projectDir);
720
720
  }
721
721
  async function alignViewportToComposition(page, url) {
@@ -732,15 +732,15 @@ async function alignViewportToComposition(page, url) {
732
732
  await gotoWhenSent(page, url, pageNavigationTimeoutMs());
733
733
  }
734
734
  async function runLayoutAudit(projectDir, opts) {
735
- const { ensureBrowser } = await import("./manager-MZIJY73J.js");
735
+ const { ensureBrowser } = await import("./manager-COSJVRAE.js");
736
736
  const puppeteer = await import("puppeteer-core");
737
- const { buildChromeArgs } = await import("./src-BH5NICGQ.js");
737
+ const { buildChromeArgs } = await import("./src-OS2FRVZV.js");
738
738
  const {
739
739
  assertWebGpuAdapterAvailable,
740
740
  compositionRequiresWebGpu,
741
741
  resolveLocalBrowserGpuMode,
742
742
  resolveLocalWebGpu
743
- } = await import("./gpuPolicy-6UBXO6ME.js");
743
+ } = await import("./gpuPolicy-77LOK3K6.js");
744
744
  const html = await bundleProjectHtml(projectDir);
745
745
  const server = await serveStaticProjectHtml(
746
746
  projectDir,
@@ -11,20 +11,20 @@ import {
11
11
  isAllowedHtmlAttribute,
12
12
  isSafeAttributeValue,
13
13
  sanitizeRichTextChildren
14
- } from "./chunk-7HTH5PFK.js";
14
+ } from "./chunk-E74JMKSK.js";
15
15
  import {
16
16
  EXCLUDED_TAGS,
17
17
  ensureHfIds,
18
18
  mintHfId,
19
19
  walkCompositionDescendants
20
- } from "./chunk-3W4B6G7Y.js";
20
+ } from "./chunk-VNWX5GBF.js";
21
21
  import {
22
22
  decodedUrlPath,
23
23
  removeElementWithGsapCascade
24
- } from "./chunk-2MCXIY4B.js";
24
+ } from "./chunk-B7RJV74O.js";
25
25
  import {
26
26
  require_dist
27
- } from "./chunk-2VXY3PEF.js";
27
+ } from "./chunk-2TU4OKIR.js";
28
28
  import {
29
29
  readClipTiming,
30
30
  writeClipTiming
@@ -1246,6 +1246,33 @@ function classifyTweenPropertyGroup(properties) {
1246
1246
  if (groups.size === 1) return groups.values().next().value;
1247
1247
  return void 0;
1248
1248
  }
1249
+ function mergePercentageKeyframes(keyframes) {
1250
+ const byPercentage = /* @__PURE__ */ new Map();
1251
+ for (const keyframe of keyframes) {
1252
+ const existing = byPercentage.get(keyframe.percentage);
1253
+ if (!existing) {
1254
+ byPercentage.set(keyframe.percentage, {
1255
+ ...keyframe,
1256
+ properties: { ...keyframe.properties }
1257
+ });
1258
+ continue;
1259
+ }
1260
+ existing.properties = { ...existing.properties, ...keyframe.properties };
1261
+ if (keyframe.ease !== void 0) existing.ease = keyframe.ease;
1262
+ if (keyframe.auto !== void 0) existing.auto = keyframe.auto;
1263
+ }
1264
+ return [...byPercentage.values()].sort((a, b) => a.percentage - b.percentage);
1265
+ }
1266
+ function distributeArrayKeyframes(channels) {
1267
+ return mergePercentageKeyframes(
1268
+ [...channels].flatMap(
1269
+ ([key, values]) => values.map((value, index) => ({
1270
+ percentage: values.length > 1 ? Math.round(index / (values.length - 1) * 100) : 0,
1271
+ properties: { [key]: value }
1272
+ }))
1273
+ )
1274
+ );
1275
+ }
1249
1276
  function buildArcPath(coords, curviness, autoRotate, isCubic) {
1250
1277
  const first = coords[0];
1251
1278
  if (coords.length < 2 || !first) return void 0;
@@ -2713,19 +2740,9 @@ function parseSimpleArrayKeyframes(node, scope) {
2713
2740
  easeEach = tryResolveStringProp(prop.value, scope) ?? easeEach;
2714
2741
  }
2715
2742
  }
2716
- const maxLen = Math.max(...[...arrayProps.values()].map((a) => a.length), 0);
2717
- const keyframes = [];
2718
- for (let i = 0; i < maxLen; i++) {
2719
- const percentage = maxLen > 1 ? Math.round(i / (maxLen - 1) * 100) : 0;
2720
- const properties = {};
2721
- for (const [key, values] of arrayProps) {
2722
- if (i < values.length) properties[key] = values[i];
2723
- }
2724
- keyframes.push({ percentage, properties });
2725
- }
2726
2743
  return {
2727
2744
  format: "simple-array",
2728
- keyframes,
2745
+ keyframes: distributeArrayKeyframes(arrayProps),
2729
2746
  ...ease ? { ease } : {},
2730
2747
  ...easeEach ? { easeEach } : {}
2731
2748
  };
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-AWDFDFI3.js";
18
18
  import {
19
19
  isBlockedNetworkHost
20
- } from "./chunk-L4JB7LI4.js";
20
+ } from "./chunk-HJINEUHY.js";
21
21
  import {
22
22
  DOMParser,
23
23
  parseHTML
@@ -981,7 +981,7 @@ async function downloadAndRewriteFonts(css, outputDir, options = {}) {
981
981
  return aLatin - bLatin;
982
982
  });
983
983
  const usedFontNames = /* @__PURE__ */ new Set();
984
- let rewritten = css;
984
+ const localFontPaths = /* @__PURE__ */ new Map();
985
985
  let count = 0;
986
986
  for (const [index, fontUrl] of sortedUrls.entries()) {
987
987
  const remainingMs = options.remainingMs?.() ?? 1e4;
@@ -1014,7 +1014,7 @@ async function downloadAndRewriteFonts(css, outputDir, options = {}) {
1014
1014
  const localPath = join(assetsDir, filename);
1015
1015
  const relativePath = `assets/fonts/${filename}`;
1016
1016
  writeCaptureFileSync(localPath, buffer);
1017
- rewritten = rewritten.split(fontUrl).join(relativePath);
1017
+ localFontPaths.set(fontUrl, relativePath);
1018
1018
  } else {
1019
1019
  drops.unavailable++;
1020
1020
  }
@@ -1022,6 +1022,10 @@ async function downloadAndRewriteFonts(css, outputDir, options = {}) {
1022
1022
  drops.unavailable++;
1023
1023
  }
1024
1024
  }
1025
+ const rewritten = css.replace(fontUrlRegex, (match2, url) => {
1026
+ const localPath = localFontPaths.get(url);
1027
+ return localPath ? match2.replace(url, localPath) : match2;
1028
+ });
1025
1029
  return { css: rewritten, drops };
1026
1030
  }
1027
1031
  function isPrivateUrl(url) {
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveConfig,
9
9
  usesSoftwareWebGpu
10
- } from "./chunk-L4JB7LI4.js";
10
+ } from "./chunk-HJINEUHY.js";
11
11
 
12
12
  // src/browser/gpuPolicy.ts
13
13
  function resolveLocalBrowserGpuMode(browserGpuArg, envMode = process.env.PRODUCER_BROWSER_GPU_MODE) {
@@ -17,7 +17,7 @@ function resolveLocalBrowserGpuMode(browserGpuArg, envMode = process.env.PRODUCE
17
17
  return "auto";
18
18
  }
19
19
  async function resolveCaptureBrowserGpuMode(requestedMode, chromePath, probeLifecycle) {
20
- const { resolveBrowserGpuMode } = await import("./src-BH5NICGQ.js");
20
+ const { resolveBrowserGpuMode } = await import("./src-OS2FRVZV.js");
21
21
  return resolveBrowserGpuMode(requestedMode, { chromePath, probeLifecycle });
22
22
  }
23
23
  function resolveLocalWebGpu(browserGpuMode, requiresWebGpu) {
@@ -138,6 +138,7 @@ function runCancellableProcess(command, args, options = {}) {
138
138
  const onAbort = () => terminate(signal?.reason ?? new Error("Operation aborted"));
139
139
  child.stdout?.on("data", (chunk) => {
140
140
  stdout += chunk.toString();
141
+ options.onStdout?.(chunk.toString());
141
142
  if (Buffer.byteLength(stdout) + Buffer.byteLength(stderr) > maxBufferBytes) {
142
143
  terminate(new Error(`Process output exceeded ${maxBufferBytes} bytes`), "ENOBUFS");
143
144
  }
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  DISTRIBUTED_FPS,
12
12
  isDistributedFps
13
- } from "./chunk-7HTH5PFK.js";
13
+ } from "./chunk-E74JMKSK.js";
14
14
  import {
15
15
  parseHTML
16
16
  } from "./chunk-SDYDNHEE.js";
@@ -460,7 +460,9 @@ function localizeHtmlEntry(ctx, entryPath, content) {
460
460
  const referrerAbsDir = resolve2(ctx.absProjectDir, dirname(entryPath));
461
461
  const { document } = parseHTML(content.toString("utf-8"));
462
462
  const resolveTarget = (val, dir) => tryResolveExternal(ctx, val, dir);
463
- const attrsChanged = rewriteHtmlAttributes(document, referrerAbsDir, entryPath, resolveTarget);
463
+ const attrsChanged = rewriteHtmlAttributes(document, referrerAbsDir, entryPath, resolveTarget, {
464
+ attrs: ["src", "href", "poster"]
465
+ });
464
466
  const stylesChanged = rewriteStyleBlocks(document, referrerAbsDir, entryPath, resolveTarget);
465
467
  if (attrsChanged || stylesChanged) {
466
468
  ctx.fileContents.set(entryPath, Buffer.from(document.toString(), "utf-8"));
@@ -11,7 +11,7 @@ import {
11
11
  DEFAULT_REGISTRY_URL,
12
12
  fetchItemManifest,
13
13
  fetchRegistryManifest
14
- } from "./chunk-7QNIXBQD.js";
14
+ } from "./chunk-HT33OHQL.js";
15
15
 
16
16
  // src/registry/resolver.ts
17
17
  function defaultWarn(message) {
@@ -34,7 +34,10 @@ async function loadAllItems(entries, options = {}) {
34
34
  let timedOut = false;
35
35
  const loaded = await runWithConcurrencyLimit(entries, ITEM_FETCH_CONCURRENCY, async (e) => {
36
36
  try {
37
- return await fetchItemManifest(e.name, e.type, baseUrl, { cacheOnly: timedOut });
37
+ return await fetchItemManifest(e.name, e.type, baseUrl, {
38
+ skipCache: options.skipCache,
39
+ cacheOnly: timedOut
40
+ });
38
41
  } catch (err) {
39
42
  if (err instanceof Error && err.name === "TimeoutError") timedOut = true;
40
43
  skipped.push(`"${e.name}"`);
@@ -91,7 +94,9 @@ async function resolveItemWithDependencies(name, options = {}) {
91
94
  available.length > 0 ? `Dependency "${itemName}" not found in registry. Available: ${available}` : unreachableRegistryMessage(itemName, options.baseUrl)
92
95
  );
93
96
  }
94
- const pending = fetchItemManifest(registryEntry.name, registryEntry.type, options.baseUrl);
97
+ const pending = fetchItemManifest(registryEntry.name, registryEntry.type, options.baseUrl, {
98
+ skipCache: options.skipCache
99
+ });
95
100
  itemCache.set(itemName, pending);
96
101
  return pending;
97
102
  };
@@ -6,11 +6,11 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  withOwner
9
- } from "./chunk-2LSCYS2H.js";
9
+ } from "./chunk-SMROKE63.js";
10
10
  import {
11
11
  HistoryBusyError,
12
12
  beginArtifactCapture
13
- } from "./chunk-C4Y3ZREE.js";
13
+ } from "./chunk-OJNNKHAZ.js";
14
14
 
15
15
  // src/utils/artifactCapture.ts
16
16
  var SKIP_BUSY_HISTORY = { ownerWaitMs: 0 };
@@ -9,7 +9,7 @@ import {
9
9
  parseStrictFiniteTimingNumber,
10
10
  resolveNaturalMediaTimelineDuration,
11
11
  resolveTimedImageDurationSeconds
12
- } from "./chunk-USWPZXEA.js";
12
+ } from "./chunk-ZQRD62QZ.js";
13
13
  import {
14
14
  CANVAS_DIMENSIONS,
15
15
  isCompositionElement,
@@ -17,7 +17,7 @@ import {
17
17
  isTextElement,
18
18
  keyframesToGsapAnimations,
19
19
  serializeGsapAnimations
20
- } from "./chunk-2MCXIY4B.js";
20
+ } from "./chunk-B7RJV74O.js";
21
21
  import {
22
22
  COMPOSITION_ATTRIBUTES,
23
23
  MEDIA_START_BASIS_ATTR,
@@ -152,12 +152,50 @@ function getStageStyles(resolution = "portrait") {
152
152
 
153
153
  // ../core/dist/gsapCdn.js
154
154
  var GSAP_CDN_VERSION = "3.15.0";
155
- function gsapCdnDist(gsapVersion) {
155
+ var GSAP_CDN_BASE_URL = "https://cdn.jsdelivr.net/npm";
156
+ var GSAP_BASE_URL_META = "hyperframes-gsap-base-url";
157
+ function isLoopbackHost(hostname) {
158
+ return hostname === "localhost" || hostname === "[::1]" || /^127\.\d+\.\d+\.\d+$/.test(hostname);
159
+ }
160
+ function normalizeGsapBaseUrl(baseUrl) {
161
+ const value = baseUrl?.trim();
162
+ if (!value)
163
+ return GSAP_CDN_BASE_URL;
164
+ if (!/^https?:\/\//i.test(value) || !URL.canParse(value) || /[?#]/.test(value)) {
165
+ throw new Error("GSAP base URL must be an absolute HTTP(S) URL without a query or fragment");
166
+ }
167
+ const url = new URL(value);
168
+ if (url.username || url.password) {
169
+ throw new Error("GSAP base URL must not contain credentials");
170
+ }
171
+ if (url.protocol === "http:" && !isLoopbackHost(url.hostname)) {
172
+ throw new Error("GSAP base URL must use HTTPS unless it points at this machine");
173
+ }
174
+ return url.href.replace(/\/+$/, "");
175
+ }
176
+ function normalizeGsapLocalRoot(root) {
177
+ const value = root.trim();
178
+ if (!/^\/(?![/\\])/.test(value) || /[?#\\]/.test(value)) {
179
+ throw new Error("GSAP local root must be a same-origin path such as /vendor/npm");
180
+ }
181
+ const origin = "http://local.invalid";
182
+ const url = new URL(value, origin);
183
+ const path = url.pathname.replace(/\/+$/, "");
184
+ if (url.origin !== origin || !path) {
185
+ throw new Error("GSAP local root must be a same-origin path such as /vendor/npm");
186
+ }
187
+ return path;
188
+ }
189
+ function gsapCdnDist(gsapVersion, baseUrl) {
156
190
  const version = gsapVersion && /^\d+(\.\d+)*$/.test(gsapVersion) ? gsapVersion : GSAP_CDN_VERSION;
157
- return `https://cdn.jsdelivr.net/npm/gsap@${version}/dist/`;
191
+ if (baseUrl?.trim().startsWith("/")) {
192
+ const root = normalizeGsapLocalRoot(baseUrl);
193
+ return `${version === GSAP_CDN_VERSION ? root : GSAP_CDN_BASE_URL}/gsap@${version}/dist/`;
194
+ }
195
+ return `${normalizeGsapBaseUrl(baseUrl)}/gsap@${version}/dist/`;
158
196
  }
159
- function motionPathPluginUrl(gsapVersion) {
160
- return `${gsapCdnDist(gsapVersion)}MotionPathPlugin.min.js`;
197
+ function motionPathPluginUrl(gsapVersion, baseUrl) {
198
+ return `${gsapCdnDist(gsapVersion, baseUrl)}MotionPathPlugin.min.js`;
161
199
  }
162
200
 
163
201
  // ../core/dist/templates/constants.js
@@ -4444,7 +4482,15 @@ function createRuntimeStartTimeResolver(params) {
4444
4482
  const startCache = /* @__PURE__ */ new WeakMap();
4445
4483
  const durationCache = /* @__PURE__ */ new WeakMap();
4446
4484
  const visiting = /* @__PURE__ */ new Set();
4447
- const findReferenceTarget = (refId) => {
4485
+ const compositionScopeOf = (element) => (element.hasAttribute("data-composition-id") ? element.parentElement : element)?.closest("[data-composition-id]") ?? null;
4486
+ const findReferenceTarget = (refId, from) => {
4487
+ const scope = compositionScopeOf(from);
4488
+ if (scope) {
4489
+ for (const candidate of scope.querySelectorAll(`[id="${refId}"]`)) {
4490
+ if (compositionScopeOf(candidate) === scope)
4491
+ return candidate;
4492
+ }
4493
+ }
4448
4494
  const byId = doc.getElementById(refId);
4449
4495
  if (byId)
4450
4496
  return byId;
@@ -4496,7 +4542,7 @@ function createRuntimeStartTimeResolver(params) {
4496
4542
  if (expression.kind === "absolute") {
4497
4543
  return resolveHostOffsetForElement(element, fallback) + Math.max(0, expression.value);
4498
4544
  }
4499
- const target = findReferenceTarget(expression.refId);
4545
+ const target = findReferenceTarget(expression.refId, element);
4500
4546
  if (!target)
4501
4547
  return fallback;
4502
4548
  const targetStart = resolveStartForElementInternal(target, 0);
@@ -5530,6 +5576,10 @@ export {
5530
5576
  isDistributedFps,
5531
5577
  generateBaseHtml,
5532
5578
  getStageStyles,
5579
+ GSAP_CDN_VERSION,
5580
+ GSAP_BASE_URL_META,
5581
+ normalizeGsapBaseUrl,
5582
+ normalizeGsapLocalRoot,
5533
5583
  gsapCdnDist,
5534
5584
  motionPathPluginUrl,
5535
5585
  GSAP_CDN,
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ISN5GRYI.js";
18
18
  import {
19
19
  VERSION
20
- } from "./chunk-LFUVTS6V.js";
20
+ } from "./chunk-66Q27H72.js";
21
21
 
22
22
  // src/utils/updateCheck.ts
23
23
  import { existsSync, readFileSync } from "fs";
@@ -8,31 +8,31 @@ import {
8
8
  launchManagedBrowser,
9
9
  resolveManagedGpuMode,
10
10
  rethrowAfterBrowserCleanup
11
- } from "./chunk-UIC7B5KW.js";
11
+ } from "./chunk-WUL5LPI2.js";
12
12
  import {
13
13
  gotoWhenSent
14
14
  } from "./chunk-MOEGCMKI.js";
15
15
  import {
16
16
  pageNavigationTimeoutMs,
17
17
  windowsChromeCrashRemediation
18
- } from "./chunk-UB7BIDBS.js";
18
+ } from "./chunk-YSXCPSJ4.js";
19
19
  import {
20
20
  oneProcessOverPipe
21
21
  } from "./chunk-DKPNNYBZ.js";
22
22
  import {
23
23
  resolveCompositionViewportFromHtml
24
- } from "./chunk-4TKJWWPL.js";
24
+ } from "./chunk-GOOE33GV.js";
25
25
  import {
26
26
  resolveLocalBrowserGpuMode,
27
27
  resolveLocalWebGpu
28
- } from "./chunk-YS4JUGNI.js";
28
+ } from "./chunk-BBXZPDEA.js";
29
29
  import {
30
30
  c
31
31
  } from "./chunk-ZTZA4UWZ.js";
32
32
  import {
33
33
  assertWebGpuAdapterAvailable,
34
34
  compositionRequiresWebGpu
35
- } from "./chunk-L4JB7LI4.js";
35
+ } from "./chunk-HJINEUHY.js";
36
36
  import {
37
37
  normalizeErrorMessage
38
38
  } from "./chunk-T2EUWCJE.js";
@@ -140,7 +140,7 @@ async function waitForCompositionSettle(page, options) {
140
140
  console.warn(` ${c.warn("\u26A0")} Shader transitions did not finish pre-rendering`);
141
141
  });
142
142
  await waitForLateSubresources(page, options.lateSubresourceTimeoutMs ?? CAPTURE_SETTLE_MS);
143
- const { resolveConfig, waitForImagesReady } = await import("./src-BH5NICGQ.js");
143
+ const { resolveConfig, waitForImagesReady } = await import("./src-OS2FRVZV.js");
144
144
  const imageTimeoutMs = resolveConfig().playerReadyTimeout;
145
145
  await waitForImagesReady(
146
146
  page,
@@ -189,7 +189,7 @@ async function installPageFunctionGuard(page) {
189
189
  async function openSettledCompositionPage(html, url, options) {
190
190
  const viewport = resolveCompositionViewportFromHtml(html);
191
191
  const requiresWebGpu = compositionRequiresWebGpu(html);
192
- const answer = (await import("./staticProjectServer-BKXL5CXB.js")).inProcessAnswer(url);
192
+ const answer = (await import("./staticProjectServer-YJWOQJF4.js")).inProcessAnswer(url);
193
193
  const noListen = answer !== void 0;
194
194
  let chromeBrowser;
195
195
  try {
@@ -200,7 +200,7 @@ async function openSettledCompositionPage(html, url, options) {
200
200
  options.onBrowserReady?.();
201
201
  const page = await chromeBrowser.newPage();
202
202
  await installPageFunctionGuard(page);
203
- const { installMediaRenderIdBridge } = await import("./src-BH5NICGQ.js");
203
+ const { installMediaRenderIdBridge } = await import("./src-OS2FRVZV.js");
204
204
  await installMediaRenderIdBridge(page);
205
205
  await page.setViewport(viewport);
206
206
  if (answer) await answerPageInProcess(page, url, answer);
@@ -216,10 +216,10 @@ async function openSettledCompositionPage(html, url, options) {
216
216
  }
217
217
  async function launchCompositionBrowser(html, noListen, options) {
218
218
  const viewport = resolveCompositionViewportFromHtml(html);
219
- const { ensureBrowser, findSystemBrowser } = await import("./manager-MZIJY73J.js");
219
+ const { ensureBrowser, findSystemBrowser } = await import("./manager-COSJVRAE.js");
220
220
  const browser = await ensureBrowser({ signal: options.signal });
221
221
  const puppeteer = await import("puppeteer-core");
222
- const { buildChromeArgs } = await import("./src-BH5NICGQ.js");
222
+ const { buildChromeArgs } = await import("./src-OS2FRVZV.js");
223
223
  const requestedGpuMode = options.browserGpuMode ?? resolveCliChromeGpuMode();
224
224
  const requiresWebGpu = compositionRequiresWebGpu(html);
225
225
  let softwareWebGpu = false;
@@ -129,7 +129,7 @@ async function createSnapshotContactSheet(paths, outputPath, budget = {}) {
129
129
  }
130
130
  async function createAssetContactSheet(assetsDir, outputPath, budget = {}) {
131
131
  if (!existsSync(assetsDir)) return [];
132
- const imageExts = /* @__PURE__ */ new Set([".png", ".jpg", ".jpeg", ".webp"]);
132
+ const imageExts = /* @__PURE__ */ new Set([".png", ".jpg", ".jpeg", ".webp", ".avif", ".gif", ".heic", ".tiff"]);
133
133
  const assetFiles = readdirSync(assetsDir).filter((f) => imageExts.has(extname(f).toLowerCase()) && !f.includes("contact-sheet")).sort();
134
134
  if (assetFiles.length === 0) return [];
135
135
  const paths = assetFiles.map((f) => join(assetsDir, f));
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-WQ6ZXHFQ.js";
10
10
  import {
11
11
  findFFmpeg
12
- } from "./chunk-DYNHVCBF.js";
12
+ } from "./chunk-4R2NWLQL.js";
13
13
  import {
14
14
  stoppableExecFile
15
15
  } from "./chunk-HU2SPFNG.js";