hyperframes 0.8.193 → 0.8.194

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 (187) hide show
  1. package/dist/{add-JC6DKZKC.js → add-47UAIWY4.js} +12 -12
  2. package/dist/{animatedGifPrep-S6KXJGEL.js → animatedGifPrep-TFSQZWK6.js} +8 -7
  3. package/dist/api.js +18 -17
  4. package/dist/{asset-XITFIFE6.js → asset-AU7PZHXA.js} +2 -2
  5. package/dist/{assetCataloger-K5FNKG35.js → assetCataloger-HC5N6WPT.js} +8 -7
  6. package/dist/{audio-364UHTY4.js → audio-7AWMZWBM.js} +14 -13
  7. package/dist/{auth-5JEESRE6.js → auth-GXH3QNDJ.js} +1 -1
  8. package/dist/{autoUpdate-RVVYEHAA.js → autoUpdate-GVGP5O2I.js} +2 -2
  9. package/dist/{backgroundChecks-DCBIYWIQ.js → backgroundChecks-IUJM2Q35.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-ZZ4QMBAA.js → batchRender-3XS2Y2Y4.js} +4 -4
  12. package/dist/{beats-YEL65M6G.js → beats-U64B4S7Z.js} +9 -9
  13. package/dist/{benchmark-RBTRPA76.js → benchmark-2YUPAI76.js} +9 -9
  14. package/dist/{browser-BVAYXT4R.js → browser-DBFH7KXM.js} +5 -5
  15. package/dist/{bundleWithLocalizedFonts-JLB2OYMT.js → bundleWithLocalizedFonts-XWL7KSQJ.js} +2 -2
  16. package/dist/{capture-NIFX6IRS.js → capture-E4VW75NM.js} +2 -2
  17. package/dist/{capture-GBXTMYLZ.js → capture-YWH7BPBI.js} +13 -12
  18. package/dist/{captureCompositionFrame-ATNNKUL5.js → captureCompositionFrame-IG6S2OHG.js} +13 -12
  19. package/dist/{catalog-AGIF5SM5.js → catalog-LZIZLZ34.js} +12 -12
  20. package/dist/{catch-up-SZ3ULDTI.js → catch-up-ZVNPIACY.js} +4 -4
  21. package/dist/{check-YLQS3TF4.js → check-EKEOD4UM.js} +38 -37
  22. package/dist/{checkBrowser-QH4FMCBO.js → checkBrowser-MYH6HPHH.js} +33 -32
  23. package/dist/{chunk-ZT45TCY3.js → chunk-2AJU7PZ6.js} +1 -1
  24. package/dist/chunk-2D5WP2NI.js +3901 -0
  25. package/dist/{chunk-FBVUAH7N.js → chunk-2OYYNKJ4.js} +1 -1
  26. package/dist/{chunk-DSQ72G5I.js → chunk-37IHQVNQ.js} +1 -1
  27. package/dist/{chunk-AR3DQYRR.js → chunk-3OSBSUN3.js} +18 -18
  28. package/dist/{chunk-2SFDWMSW.js → chunk-3S3CXF4W.js} +2 -2
  29. package/dist/{chunk-TY3LDJA3.js → chunk-452UK7E7.js} +2 -2
  30. package/dist/{chunk-OFYW4J7Y.js → chunk-4FVNEXSV.js} +3 -3
  31. package/dist/{chunk-CGTZOY53.js → chunk-4GMDL4N5.js} +1 -1
  32. package/dist/{chunk-4PPWAQYV.js → chunk-4PIPQPCW.js} +7 -7
  33. package/dist/{chunk-BP4EMEGH.js → chunk-4VSV56F2.js} +2 -2
  34. package/dist/{chunk-L4JB7LI4.js → chunk-52YJKWV3.js} +67 -60
  35. package/dist/{chunk-ZZPBXRYQ.js → chunk-54PZ2EQZ.js} +1 -1
  36. package/dist/{chunk-6XUJVEY2.js → chunk-B3GG3HJB.js} +1 -1
  37. package/dist/{chunk-2MCXIY4B.js → chunk-B7RJV74O.js} +28 -11
  38. package/dist/{chunk-MFUNDJEV.js → chunk-BK5YCT54.js} +3 -3
  39. package/dist/{chunk-RWGASWT7.js → chunk-BL4U6U52.js} +1 -0
  40. package/dist/{chunk-QKX7ITER.js → chunk-BYADARIC.js} +2 -2
  41. package/dist/{chunk-WIVOXGEP.js → chunk-CEUBYYVJ.js} +2 -2
  42. package/dist/{chunk-UIC7B5KW.js → chunk-CEZH4AQT.js} +12 -2
  43. package/dist/{chunk-BY6OQ6XP.js → chunk-CZNSLFYD.js} +3 -1
  44. package/dist/{chunk-E77ALFLW.js → chunk-DT3JESJ6.js} +1 -1
  45. package/dist/{chunk-ZTKFRXJB.js → chunk-DVQDBWQG.js} +4 -4
  46. package/dist/{chunk-L5YLA54L.js → chunk-EB3XXHNO.js} +2 -2
  47. package/dist/{chunk-LFUVTS6V.js → chunk-EY7GKVPS.js} +2 -2
  48. package/dist/{chunk-KU3UFQN7.js → chunk-F2ASNL2K.js} +1 -1
  49. package/dist/{chunk-ZH7J2ZUL.js → chunk-F3B7CE3Q.js} +14 -14
  50. package/dist/{chunk-E3P3LJG6.js → chunk-FLREUEHW.js} +28 -11
  51. package/dist/{chunk-VW63MHQU.js → chunk-FUA22HO4.js} +1 -1
  52. package/dist/{chunk-3W4B6G7Y.js → chunk-GAFEU6AB.js} +13 -10
  53. package/dist/{chunk-DIKAPMMF.js → chunk-GQVTTWZF.js} +144 -39
  54. package/dist/{chunk-2LSCYS2H.js → chunk-HCLBM2LQ.js} +2 -2
  55. package/dist/{chunk-GR5DQKDR.js → chunk-HG5ECUOR.js} +5 -5
  56. package/dist/{chunk-2NERNYCJ.js → chunk-HPGQPRHY.js} +3 -3
  57. package/dist/{chunk-SOY2FPOR.js → chunk-HQD7ODQB.js} +5 -5
  58. package/dist/{chunk-XQPA4W3M.js → chunk-JU4T4VAA.js} +4 -4
  59. package/dist/{chunk-7HTH5PFK.js → chunk-JVTWX5G3.js} +33 -8
  60. package/dist/{chunk-UNATIAOT.js → chunk-JXTPNUSO.js} +83 -51
  61. package/dist/{chunk-2VXY3PEF.js → chunk-K2VXPQKC.js} +107 -94
  62. package/dist/chunk-K4MJX7SR.js +17 -0
  63. package/dist/{chunk-BJAS2JLW.js → chunk-KDEV5RIE.js} +7 -3
  64. package/dist/{chunk-WFS6S65A.js → chunk-LMIDZIW2.js} +12 -12
  65. package/dist/{chunk-5J6TWLFG.js → chunk-LOGKDQ3G.js} +3 -3
  66. package/dist/{chunk-IW5G323T.js → chunk-LTGTN2TH.js} +8 -9
  67. package/dist/{chunk-F5LLORBP.js → chunk-LZ4WPR3B.js} +2 -2
  68. package/dist/{chunk-7QNIXBQD.js → chunk-M2VXARYK.js} +3 -2
  69. package/dist/{chunk-7YSFE4SZ.js → chunk-MCFPMUMT.js} +2 -2
  70. package/dist/{chunk-YS4JUGNI.js → chunk-MGSNFWGR.js} +2 -2
  71. package/dist/{chunk-V7ZA2BNW.js → chunk-MO6RTNYD.js} +1 -1
  72. package/dist/{chunk-OFV3WSOE.js → chunk-N33FO44R.js} +1 -1
  73. package/dist/{chunk-GKHMSSGY.js → chunk-N3M3IU6S.js} +1 -1
  74. package/dist/{chunk-6LWUPIKD.js → chunk-NVVIFW3C.js} +10 -10
  75. package/dist/{chunk-4LXZJIVY.js → chunk-O2ILONGK.js} +10 -10
  76. package/dist/{chunk-C4Y3ZREE.js → chunk-OJNNKHAZ.js} +75 -22
  77. package/dist/{chunk-UB7BIDBS.js → chunk-PEHST4UY.js} +3 -3
  78. package/dist/{chunk-RTLPWOO6.js → chunk-POFJH2IS.js} +1 -1
  79. package/dist/{chunk-7YKJF5JV.js → chunk-PXK3ICU6.js} +1 -1
  80. package/dist/{chunk-M3KZBDPB.js → chunk-Q4HKC3O7.js} +3 -3
  81. package/dist/{chunk-X5CECNCK.js → chunk-QJQTWTM7.js} +8 -3
  82. package/dist/{chunk-QFPBRZJD.js → chunk-ROEW726S.js} +1 -1
  83. package/dist/{chunk-D625D4TV.js → chunk-RUPGFW5B.js} +6 -6
  84. package/dist/{chunk-EFXMETRK.js → chunk-RZWJJCI7.js} +2 -2
  85. package/dist/{chunk-TZEKVLPV.js → chunk-SNECH6QA.js} +1 -1
  86. package/dist/{chunk-REUL2KH2.js → chunk-ST35C4K6.js} +1 -1
  87. package/dist/{chunk-LMNZLZMJ.js → chunk-ST4SHO3S.js} +1 -1
  88. package/dist/{chunk-6DLCOQR4.js → chunk-TDYKVJTU.js} +119 -34
  89. package/dist/{chunk-4TKJWWPL.js → chunk-VHIBBDEI.js} +1 -1
  90. package/dist/{chunk-VPC4XIVI.js → chunk-VPON6DF2.js} +5 -5
  91. package/dist/{chunk-DYNHVCBF.js → chunk-XYGULBFV.js} +2 -2
  92. package/dist/{chunk-VLLFORE2.js → chunk-Y3BT27Y7.js} +1 -1
  93. package/dist/{clean-5HGESK5A.js → clean-NS2SDRK7.js} +21 -20
  94. package/dist/cli.js +53 -53
  95. package/dist/{cloud-746PHS32.js → cloud-K4XQPWTY.js} +4 -4
  96. package/dist/{cloudrun-DO7WFLSM.js → cloudrun-BKOKXTXV.js} +6 -6
  97. package/dist/{compare-66YPRNG2.js → compare-ZAV773OL.js} +31 -30
  98. package/dist/{compiler-R4UYDWXO.js → compiler-CWHFCE3H.js} +5 -5
  99. package/dist/{component-EQ3H6RFP.js → component-OXA2ZWX3.js} +3 -3
  100. package/dist/{compositions-ZZ7P5HT2.js → compositions-NKRVWCPE.js} +12 -11
  101. package/dist/{contactSheet-SZBJDOMT.js → contactSheet-5APX35L3.js} +1 -1
  102. package/dist/{delete-Z5MSLJSR.js → delete-HZ2LBCLC.js} +2 -2
  103. package/dist/{deploy-RGSAC2K5.js → deploy-FNDTZFF7.js} +1 -1
  104. package/dist/{deterministicFonts-RO2TCMLZ.js → deterministicFonts-RADD3BSX.js} +2 -2
  105. package/dist/{dist-RKK4YLAD.js → dist-2YTN2UGY.js} +3 -3
  106. package/dist/{dist-QQ26RUDV.js → dist-7OCZHNLY.js} +1 -1
  107. package/dist/{doctor-W4ZZDRTU.js → doctor-6QWJGO5P.js} +14 -13
  108. package/dist/{events-UACT7PX3.js → events-HTHOBIUN.js} +3 -3
  109. package/dist/{events-BSSL4A4W.js → events-MBKHVGXX.js} +2 -2
  110. package/dist/{feedback-47ILDLQG.js → feedback-X5QWTLEX.js} +8 -8
  111. package/dist/{ffmpeg-IEHSUNUT.js → ffmpeg-7GESJCCT.js} +9 -8
  112. package/dist/{figma-PLFIIYRU.js → figma-SXOHFVJI.js} +3 -3
  113. package/dist/fontLocalizeCli.js +11 -10
  114. package/dist/{get-PDWGJYNL.js → get-T2HI5FCK.js} +2 -2
  115. package/dist/{gpuPolicy-6UBXO6ME.js → gpuPolicy-5FABKW5G.js} +8 -7
  116. package/dist/{grade-compare-5VWLQGM7.js → grade-compare-JATGHA6Q.js} +37 -35
  117. package/dist/{gsapParser-UP3PNPC2.js → gsapParser-IEUSLYDJ.js} +11 -11
  118. package/dist/{gsapParserAcorn-OOTY2MVN.js → gsapParserAcorn-LZJKCFQI.js} +1 -1
  119. package/dist/{help-DS3KMWYO.js → help-G6CIKCGS.js} +1 -1
  120. package/dist/{history-OC326NVZ.js → history-CSJUHYTD.js} +7 -7
  121. package/dist/hyperframe.manifest.json +1 -1
  122. package/dist/hyperframe.runtime.iife.js +69 -63
  123. package/dist/hyperframes-player.global.js +3 -3
  124. package/dist/hyperframes-slideshow.global.js +1 -1
  125. package/dist/{info-AUIFV6MX.js → info-MTTUMW2C.js} +8 -8
  126. package/dist/{init-MRTWWDFW.js → init-LJYNI5EK.js} +30 -29
  127. package/dist/{inspect-55NOAXI2.js → inspect-HGDM2VJE.js} +31 -30
  128. package/dist/{installer-YSFFGBBV.js → installer-3XHURUDG.js} +5 -5
  129. package/dist/{keyframes-OO2BX2IB.js → keyframes-MSU7N53X.js} +59 -33
  130. package/dist/{lambda-CXXY6QT3.js → lambda-2I2TIUSD.js} +8 -8
  131. package/dist/{layout-57GJXKDK.js → layout-KWOXZMN7.js} +31 -30
  132. package/dist/{lint-J4FK3Z6G.js → lint-N53TLHFG.js} +7 -7
  133. package/dist/{lintProject-52SLJPRC.js → lintProject-EOUZA4EG.js} +1 -1
  134. package/dist/{list-VDQUJ76B.js → list-SHYPQC7U.js} +2 -2
  135. package/dist/{login-TJSEALWW.js → login-TEB6PA3Y.js} +4 -4
  136. package/dist/{manager-MZIJY73J.js → manager-COSJVRAE.js} +2 -2
  137. package/dist/{manager-4PLYEEWP.js → manager-PLRSZH5G.js} +10 -9
  138. package/dist/{media-treatment-GXP4PMJH.js → media-treatment-XTUKMIGE.js} +15 -14
  139. package/dist/{models-HQQQKEEP.js → models-4WKAPP2L.js} +14 -13
  140. package/dist/{motionShot-2BT5D7DC.js → motionShot-PTKB4ILH.js} +17 -16
  141. package/dist/{normalize-audio-SOLFMHNP.js → normalize-audio-3NG326I2.js} +6 -6
  142. package/dist/{open-KHEUODFQ.js → open-6S2LMF7R.js} +12 -12
  143. package/dist/{parakeetRunner-BHU5NCAX.js → parakeetRunner-OEI35DVO.js} +15 -14
  144. package/dist/{pipeline-WFV5HDTD.js → pipeline-543FUKH4.js} +10 -9
  145. package/dist/{play-GB34CANJ.js → play-ETEGHP3B.js} +21 -21
  146. package/dist/{preflight-REF3VSJ7.js → preflight-Y5IYUF2T.js} +11 -10
  147. package/dist/{present-SIUTA7TD.js → present-ZRSLMJ6J.js} +17 -17
  148. package/dist/{preview-T2GE7Z4A.js → preview-CEJ3SVTY.js} +100 -65
  149. package/dist/{producer-23KVQZAB.js → producer-JFVFIV26.js} +1 -1
  150. package/dist/{projectConfig-DBSNBPNP.js → projectConfig-7EK3BS72.js} +7 -7
  151. package/dist/{publication-IXPUKYWJ.js → publication-Y54GYFMV.js} +3 -3
  152. package/dist/{publish-3BA5VHXJ.js → publish-S3UJTPCV.js} +10 -10
  153. package/dist/{remove-background-RMSCJVVQ.js → remove-background-YTATNQSI.js} +11 -10
  154. package/dist/{render-XGOZMMWX.js → render-IIPXMSBO.js} +35 -34
  155. package/dist/{render-6RNE2MLU.js → render-RN3W6YL4.js} +17 -16
  156. package/dist/{render-Y6CTQ3YW.js → render-WNIG4B3J.js} +6 -6
  157. package/dist/{render-batch-VUR6N6EY.js → render-batch-OYS3UQDB.js} +6 -6
  158. package/dist/renderSetupWorker.js +42 -4
  159. package/dist/{resolver-GJCUH57W.js → resolver-OVCXVEDX.js} +5 -5
  160. package/dist/{sherpa-VVAKRCPL.js → sherpa-NCSFD7S3.js} +14 -13
  161. package/dist/skills/media-use/scripts/lib/duck.mjs +18 -2
  162. package/dist/skills/media-use/scripts/lib/duck.test.mjs +79 -0
  163. package/dist/{skills-ZHBURVQG.js → skills-IUV3K3X7.js} +5 -5
  164. package/dist/{skillsUpdateCheck-VMDAL2O2.js → skillsUpdateCheck-NACBXMWW.js} +3 -3
  165. package/dist/{snapshot-KEOG56SL.js → snapshot-7S5USJ2I.js} +39 -38
  166. package/dist/{src-TZLGFRRX.js → src-CAR6PHI4.js} +10 -9
  167. package/dist/{src-BH5NICGQ.js → src-HITT6NWG.js} +9 -6
  168. package/dist/{staticProjectServer-BKXL5CXB.js → staticProjectServer-QR6VZBPT.js} +18 -18
  169. package/dist/studio/assets/{hyperframes-player-BMcUdmDb.js → hyperframes-player-DLOUZUct.js} +1 -1
  170. package/dist/studio/assets/{index-Ca-mgTnS.js → index-CAQ7OcNJ.js} +163 -163
  171. package/dist/studio/assets/{index-Ci6GuloR.js → index-D9kA6JUX.js} +1 -1
  172. package/dist/studio/index.html +1 -1
  173. package/dist/{studio-api-A5U6QAMC.js → studio-api-HVNOJILH.js} +11 -11
  174. package/dist/{studioServer-5EC5CP4W.js → studioServer-3BG5FRJL.js} +53 -52
  175. package/dist/{telemetry-BCKJXDSW.js → telemetry-PET2GFQG.js} +3 -3
  176. package/dist/{timeline-AZWAXTAY.js → timeline-PVIC2Z5K.js} +20 -19
  177. package/dist/{tokens-X7NC3V7C.js → tokens-4N46PWSF.js} +2 -2
  178. package/dist/{transcribe-SH26H755.js → transcribe-2DVBS7MH.js} +19 -18
  179. package/dist/{transcribe-7NCY7QZ2.js → transcribe-IDC7JTM4.js} +13 -12
  180. package/dist/{updateCheck-Y7FUWQM4.js → updateCheck-QRDVXU7I.js} +2 -2
  181. package/dist/{upgrade-ZHGEVL65.js → upgrade-5CNE3TBH.js} +2 -2
  182. package/dist/{urlDownloader-FPILIT7M.js → urlDownloader-P2I25DFC.js} +7 -6
  183. package/dist/{validate-KQOZR4F6.js → validate-CLR5PEOV.js} +25 -24
  184. package/dist/{video-N2QAETFB.js → video-3CKZZBOB.js} +8 -7
  185. package/dist/warmCheck.js +38 -37
  186. package/package.json +1 -1
  187. package/dist/chunk-USWPZXEA.js +0 -3897
@@ -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-UNATIAOT.js";
9
+ } from "./chunk-JXTPNUSO.js";
10
10
  import {
11
11
  injectTagsAtHeadStart
12
- } from "./chunk-USWPZXEA.js";
12
+ } from "./chunk-2D5WP2NI.js";
13
13
 
14
14
  // src/utils/compositionServer.ts
15
15
  import { createHash } from "crypto";
@@ -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.193" : "0.0.0-dev";
10
- var PRODUCER_VERSION = true ? "0.8.193" : "0.0.0-dev";
9
+ var VERSION = true ? "0.8.194" : "0.0.0-dev";
10
+ var PRODUCER_VERSION = true ? "0.8.194" : "0.0.0-dev";
11
11
 
12
12
  export {
13
13
  VERSION,
@@ -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));
@@ -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-ST4SHO3S.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-4LXZJIVY.js";
15
+ } from "./chunk-O2ILONGK.js";
16
16
  import {
17
17
  launchManagedBrowser,
18
18
  resolveManagedGpuMode
19
- } from "./chunk-UIC7B5KW.js";
19
+ } from "./chunk-CEZH4AQT.js";
20
20
  import {
21
21
  pageNavigationTimeoutMs
22
- } from "./chunk-UB7BIDBS.js";
22
+ } from "./chunk-PEHST4UY.js";
23
23
  import {
24
24
  resolveCompositionViewportFromHtml
25
- } from "./chunk-4TKJWWPL.js";
25
+ } from "./chunk-VHIBBDEI.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-2D5WP2NI.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-SNECH6QA.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-JFVFIV26.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-CWHFCE3H.js");
264
+ const { ensureBrowser } = await import("./manager-COSJVRAE.js");
265
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-QR6VZBPT.js");
266
+ const { lintProject } = await import("./lintProject-EOUZA4EG.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-HITT6NWG.js");
288
288
  const requestedGpuMode = resolveCliChromeGpuMode();
289
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-6UBXO6ME.js");
289
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-5FABKW5G.js");
290
290
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
291
291
  const requiresWebGpu = compositionRequiresWebGpu(html);
292
292
  const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
@@ -59,6 +59,33 @@ function editabilityForProvenance(provenance) {
59
59
  if (provenance.kind === "runtime-dynamic") return "source";
60
60
  return "unroll";
61
61
  }
62
+ function mergePercentageKeyframes(keyframes) {
63
+ const byPercentage = /* @__PURE__ */ new Map();
64
+ for (const keyframe of keyframes) {
65
+ const existing = byPercentage.get(keyframe.percentage);
66
+ if (!existing) {
67
+ byPercentage.set(keyframe.percentage, {
68
+ ...keyframe,
69
+ properties: { ...keyframe.properties }
70
+ });
71
+ continue;
72
+ }
73
+ existing.properties = { ...existing.properties, ...keyframe.properties };
74
+ if (keyframe.ease !== void 0) existing.ease = keyframe.ease;
75
+ if (keyframe.auto !== void 0) existing.auto = keyframe.auto;
76
+ }
77
+ return [...byPercentage.values()].sort((a, b) => a.percentage - b.percentage);
78
+ }
79
+ function distributeArrayKeyframes(channels) {
80
+ return mergePercentageKeyframes(
81
+ [...channels].flatMap(
82
+ ([key, values]) => values.map((value, index) => ({
83
+ percentage: values.length > 1 ? Math.round(index / (values.length - 1) * 100) : 0,
84
+ properties: { [key]: value }
85
+ }))
86
+ )
87
+ );
88
+ }
62
89
  function buildArcPath(coords, curviness, autoRotate, isCubic) {
63
90
  const first = coords[0];
64
91
  if (coords.length < 2 || !first) return void 0;
@@ -1355,19 +1382,9 @@ function parseSimpleArrayKeyframes(node, scope) {
1355
1382
  easeEach = tryResolveStringProp(prop.value, scope) ?? easeEach;
1356
1383
  }
1357
1384
  }
1358
- const maxLen = Math.max(...[...arrayProps.values()].map((a) => a.length), 0);
1359
- const keyframes = [];
1360
- for (let i = 0; i < maxLen; i++) {
1361
- const percentage = maxLen > 1 ? Math.round(i / (maxLen - 1) * 100) : 0;
1362
- const properties = {};
1363
- for (const [key, values] of arrayProps) {
1364
- if (i < values.length) properties[key] = values[i];
1365
- }
1366
- keyframes.push({ percentage, properties });
1367
- }
1368
1385
  return {
1369
1386
  format: "simple-array",
1370
- keyframes,
1387
+ keyframes: distributeArrayKeyframes(arrayProps),
1371
1388
  ...ease ? { ease } : {},
1372
1389
  ...easeEach ? { easeEach } : {}
1373
1390
  };
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  DISTRIBUTED_FPS,
12
12
  isDistributedFps
13
- } from "./chunk-7HTH5PFK.js";
13
+ } from "./chunk-JVTWX5G3.js";
14
14
  import {
15
15
  parseHTML
16
16
  } from "./chunk-SDYDNHEE.js";
@@ -30,6 +30,7 @@ import {
30
30
  inlineScriptRuns,
31
31
  insertRuntimeTag,
32
32
  isJavaScriptType,
33
+ isTemplateEntry,
33
34
  parseHTMLContent,
34
35
  parseHostVariableValues,
35
36
  planCompositionAssembly,
@@ -38,7 +39,7 @@ import {
38
39
  stripEmbeddedRuntimeScripts,
39
40
  styleElementsFor,
40
41
  warnUnknownEnumValues
41
- } from "./chunk-USWPZXEA.js";
42
+ } from "./chunk-2D5WP2NI.js";
42
43
  import {
43
44
  cssVariableName
44
45
  } from "./chunk-VC76R6W2.js";
@@ -48,7 +49,7 @@ import {
48
49
  } from "./chunk-OFQWTKPW.js";
49
50
  import {
50
51
  lintHyperframeHtml
51
- } from "./chunk-2VXY3PEF.js";
52
+ } from "./chunk-K2VXPQKC.js";
52
53
  import {
53
54
  checkSubCompositionUsability,
54
55
  resolveSubCompositionContent
@@ -291,9 +292,6 @@ import { parse as parseJs } from "acorn";
291
292
  import { resolve as resolve2, relative, dirname, isAbsolute, sep } from "path";
292
293
 
293
294
  // ../core/dist/compiler/standaloneEntry.js
294
- function isTemplateEntry(html) {
295
- return html.trimStart().startsWith("<template");
296
- }
297
295
  function normalizeCompositionSrcPath(srcPath) {
298
296
  return srcPath.replace(/\\/g, "/").replace(/^\.\//, "");
299
297
  }
@@ -1023,16 +1021,22 @@ function wrapScopedCompositionScript(source, compositionId, errorLabel = "[Hyper
1023
1021
  })
1024
1022
  : window;
1025
1023
  var __hfResolveGsapTarget = function(target) {
1026
- if (typeof target === "string") return __hfQueryAll(target);
1027
- if (!Array.isArray(target)) return target;
1028
- return target.reduce(function(resolved, item) {
1024
+ if (typeof target !== "string" && !Array.isArray(target)) return target;
1025
+ var resolved = typeof target === "string" ? __hfQueryAll(target) : target.reduce(function(resolved, item) {
1029
1026
  if (typeof item === "string") {
1030
1027
  return resolved.concat(Array.prototype.slice.call(__hfQueryAll(item)));
1031
1028
  }
1032
1029
  resolved.push(item);
1033
1030
  return resolved;
1034
1031
  }, []);
1035
-
1032
+ if (!resolved.length) {
1033
+ // GSAP warns "GSAP target " + targets + " not found"; a bare empty match list prints an
1034
+ // empty name. Keep the authored selector as the text while still targeting nothing here.
1035
+ var originalTarget = String(target);
1036
+ resolved = [];
1037
+ resolved.toString = function() { return originalTarget; };
1038
+ }
1039
+ return resolved;
1036
1040
  };
1037
1041
  var __hfScopeTimeline = function(timeline) {
1038
1042
  if (!timeline || timeline.__hfScopedCompositionRoot === __hfFindRoot()) return timeline;
@@ -3545,7 +3549,6 @@ export {
3545
3549
  ensureExternalScriptTag,
3546
3550
  emitMountedModuleScripts,
3547
3551
  FLATTENED_INNER_ROOT_STRIP_ATTRS,
3548
- isTemplateEntry,
3549
3552
  extractStandaloneEntryFromIndex,
3550
3553
  scopeCssToComposition,
3551
3554
  wrapScopedCompositionScript,
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  runCancellableProcess,
9
9
  runRenderSetupWorker
10
- } from "./chunk-RWGASWT7.js";
10
+ } from "./chunk-BL4U6U52.js";
11
11
  import {
12
12
  getFreeDiskMb
13
13
  } from "./chunk-T6AGUTZJ.js";
@@ -35,9 +35,81 @@ import {
35
35
  writeFileSync
36
36
  } from "fs";
37
37
  import { homedir } from "os";
38
- import { debuglog } from "util";
39
38
  import { basename, dirname as dirname2, join, relative } from "path";
40
39
 
40
+ // src/browser/installProtocol.ts
41
+ var PROGRESS_PREFIX = "HYPERFRAMES_BROWSER_INSTALL_PROGRESS:";
42
+ var LOG_PREFIX = "HYPERFRAMES_BROWSER_INSTALL_LOG:";
43
+ function installProgressLine(downloaded, total) {
44
+ return `${PROGRESS_PREFIX}${JSON.stringify([downloaded, total])}
45
+ `;
46
+ }
47
+ function installLogLine(text) {
48
+ return `${LOG_PREFIX}${JSON.stringify(text)}
49
+ `;
50
+ }
51
+ function parseInstallLine(line) {
52
+ try {
53
+ if (line.startsWith(PROGRESS_PREFIX)) {
54
+ const [downloaded, total] = JSON.parse(line.slice(PROGRESS_PREFIX.length));
55
+ return { kind: "progress", downloaded, total };
56
+ }
57
+ if (line.startsWith(LOG_PREFIX)) {
58
+ return { kind: "log", text: JSON.parse(line.slice(LOG_PREFIX.length)) };
59
+ }
60
+ } catch {
61
+ }
62
+ return null;
63
+ }
64
+
65
+ // src/browser/installInChild.ts
66
+ var CHILD_STARTUP_MS = 15e3;
67
+ var BrowserDownloadStalledError = class extends Error {
68
+ };
69
+ function lineReader(onLine) {
70
+ let pending = "";
71
+ return (chunk) => {
72
+ const lines = (pending + chunk).split("\n");
73
+ pending = lines.pop() ?? "";
74
+ for (const line of lines) onLine(line);
75
+ };
76
+ }
77
+ async function installInChild(input, hooks) {
78
+ const abort = new AbortController();
79
+ let timer;
80
+ const arm = (waitMs) => {
81
+ clearTimeout(timer);
82
+ timer = setTimeout(
83
+ () => abort.abort(
84
+ new BrowserDownloadStalledError(
85
+ `The Chrome download from ${hooks.host} stalled: no data for ${hooks.stallMs / 1e3}s.`
86
+ )
87
+ ),
88
+ waitMs
89
+ );
90
+ timer.unref();
91
+ };
92
+ const onStdout = lineReader((line) => {
93
+ const event = parseInstallLine(line);
94
+ if (event?.kind === "log") hooks.onLog(event.text);
95
+ if (event?.kind !== "progress") return;
96
+ if (event.total > 0) hooks.onProgress?.(event.downloaded, event.total);
97
+ if (event.total > 0 && event.downloaded >= event.total) clearTimeout(timer);
98
+ else arm(hooks.stallMs);
99
+ });
100
+ arm(CHILD_STARTUP_MS + hooks.stallMs);
101
+ try {
102
+ return await runRenderSetupWorker("browser-install", input, {
103
+ signal: abort.signal,
104
+ detached: false,
105
+ maxBufferBytes: 4 * 1024 * 1024,
106
+ onStdout
107
+ });
108
+ } finally {
109
+ clearTimeout(timer);
110
+ }
111
+ }
112
+
41
113
  // src/browser/unzipArchive.ts
42
114
  import { mkdir } from "fs/promises";
43
115
  import { dirname } from "path";
@@ -486,10 +558,33 @@ Point hyperframes at an already-installed Chrome/Chromium instead:
486
558
  Then re-run your command. Any Chrome build works for the screenshot capture path; install a real chrome-headless-shell later if you need the perf-optimized BeginFrame path. Alternatively, run inside the hyperframes Docker image which ships a compatible headless-shell.`;
487
559
  return new Error(message, { cause: cause instanceof Error ? cause : void 0 });
488
560
  }
489
- async function downloadBrowser(options) {
490
- if (isLinuxArm()) {
491
- return ensureLinuxArmBrowser(options);
561
+ var DOWNLOAD_STALL_MS = 6e4;
562
+ var DOWNLOAD_ATTEMPTS = 3;
563
+ async function retryOnStall(run, clear) {
564
+ for (let attempt = 1; ; attempt++) {
565
+ try {
566
+ return await run();
567
+ } catch (err) {
568
+ if (!(err instanceof BrowserDownloadStalledError) || attempt >= DOWNLOAD_ATTEMPTS) throw err;
569
+ console.warn(`[hyperframes] ${err.message} Retrying (${attempt}/${DOWNLOAD_ATTEMPTS - 1}).`);
570
+ clear();
571
+ }
492
572
  }
573
+ }
574
+ function downloadHostOf(browsers, platform, buildId, baseUrl) {
575
+ try {
576
+ const url = browsers.getDownloadUrl(
577
+ browsers.Browser.CHROMEHEADLESSSHELL,
578
+ platform,
579
+ buildId,
580
+ baseUrl
581
+ );
582
+ return new URL(url).host;
583
+ } catch {
584
+ return "the Chrome download host";
585
+ }
586
+ }
587
+ function assertRoomToDownload() {
493
588
  removeInstallLeftovers();
494
589
  const freeMb = getFreeDiskMb(CACHE_ROOT_DIR);
495
590
  if (freeMb !== null && freeMb < ARCHIVE_PLUS_UNPACKED_SHELL_MB) {
@@ -497,55 +592,63 @@ async function downloadBrowser(options) {
497
592
  `Low disk space: Chrome Headless Shell needs about ${ARCHIVE_PLUS_UNPACKED_SHELL_MB} MB to download, ${freeMb} MB free at ${CACHE_ROOT_DIR}. Free disk space, then retry.`
498
593
  );
499
594
  }
500
- const { Browser, Cache, detectBrowserPlatform, install } = await loadPuppeteerBrowsers();
501
- const platform = detectBrowserPlatform();
502
- if (!platform) {
503
- throw new Error(`Unsupported platform: ${process.platform} ${process.arch}`);
504
- }
505
- const stagingDir = join(CACHE_ROOT_DIR, `${STAGING_PREFIX}${randomUUID()}`);
506
- const clearStaging = () => rmSync(stagingDir, { recursive: true, force: true });
507
- let unzipLog = [];
595
+ }
596
+ function stagedInstaller(browsers, platform, stagingDir, options, unzipLog) {
508
597
  const buildId = managedChromeVersion();
509
- const runInstall = async () => {
510
- unzipLog = [];
511
- const installOptions = {
598
+ const hooks = {
599
+ stallMs: options?.downloadStallMs ?? DOWNLOAD_STALL_MS,
600
+ host: downloadHostOf(browsers, platform, buildId, options?.downloadBaseUrl),
601
+ onProgress: options?.onProgress,
602
+ onLog: (line) => unzipLog.lines.push(line)
603
+ };
604
+ return async () => {
605
+ unzipLog.lines = [];
606
+ const input = {
512
607
  cacheDir: stagingDir,
513
- browser: Browser.CHROMEHEADLESSSHELL,
608
+ browser: browsers.Browser.CHROMEHEADLESSSHELL,
514
609
  buildId,
515
610
  platform,
516
- downloadProgressCallback: options?.onProgress,
517
- logger: (prefix) => {
518
- const debug = debuglog(prefix);
519
- const isUnzip = prefix === "puppeteer:browsers:fileUtil";
520
- if (!isUnzip && !debug.enabled) return void 0;
521
- return (...args) => {
522
- const line = args.join(" ");
523
- if (isUnzip) unzipLog.push(line);
524
- if (debug.enabled) debug(line);
525
- };
526
- }
611
+ baseUrl: options?.downloadBaseUrl
527
612
  };
528
613
  const unzipMayAskOnInput = process.platform !== "win32";
529
614
  if (unzipMayAskOnInput) {
530
- const archive = await install({ ...installOptions, unpack: false });
531
- const into = new Cache(stagingDir).installationDir(installOptions.browser, platform, buildId);
615
+ const archive = await installInChild({ ...input, unpack: false }, hooks);
616
+ const into = new browsers.Cache(stagingDir).installationDir(input.browser, platform, buildId);
532
617
  await unzipArchive(archive, into);
533
618
  }
534
- return install(installOptions);
619
+ return installInChild(input, hooks);
535
620
  };
621
+ }
622
+ async function downloadBrowser(options) {
623
+ if (isLinuxArm()) {
624
+ return ensureLinuxArmBrowser(options);
625
+ }
626
+ assertRoomToDownload();
627
+ const browsers = await loadPuppeteerBrowsers();
628
+ const platform = browsers.detectBrowserPlatform();
629
+ if (!platform) {
630
+ throw new Error(`Unsupported platform: ${process.platform} ${process.arch}`);
631
+ }
632
+ const stagingDir = join(CACHE_ROOT_DIR, `${STAGING_PREFIX}${randomUUID()}`);
633
+ const clearStaging = () => rmSync(stagingDir, { recursive: true, force: true });
634
+ const unzipLog = { lines: [] };
635
+ const runInstall = stagedInstaller(browsers, platform, stagingDir, options, unzipLog);
536
636
  try {
537
- const staged = await installWithCorruptArchiveRecovery(
538
- runInstall,
539
- clearStaging,
540
- (err) => console.warn(
541
- `[hyperframes] Downloaded browser archive was corrupt (${normalizeErrorMessage(err)}); re-downloading.`
542
- )
637
+ const staged = await retryOnStall(
638
+ () => installWithCorruptArchiveRecovery(
639
+ runInstall,
640
+ clearStaging,
641
+ (err) => console.warn(
642
+ `[hyperframes] Downloaded browser archive was corrupt (${normalizeErrorMessage(err)}); re-downloading.`
643
+ )
644
+ ),
645
+ clearStaging
543
646
  );
544
647
  assertExecutableUnpacked(stagingDir, staged.executablePath);
545
- unzipLog = [];
648
+ unzipLog.lines = [];
546
649
  return { executablePath: moveStagedInstallIntoCache(stagingDir, staged), source: "download" };
547
650
  } catch (err) {
548
- throw wrapDownloadFailureWithBrowserPathHint(err, unzipLog);
651
+ throw wrapDownloadFailureWithBrowserPathHint(err, unzipLog.lines);
549
652
  } finally {
550
653
  clearStaging();
551
654
  }
@@ -622,6 +725,8 @@ function isLinuxArm() {
622
725
  }
623
726
 
624
727
  export {
728
+ installProgressLine,
729
+ installLogLine,
625
730
  CACHE_DIR,
626
731
  withInstallLock,
627
732
  releaseOwnedBrowserInstallLock,
@@ -6,14 +6,14 @@ 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-ST4SHO3S.js";
10
10
  import {
11
11
  DEFAULT_HISTORY_ROOT,
12
12
  HistoryBusyError,
13
13
  MAX_WINDOW_IDLE_MS,
14
14
  openProjectHistory,
15
15
  readProjectHistory
16
- } from "./chunk-C4Y3ZREE.js";
16
+ } from "./chunk-OJNNKHAZ.js";
17
17
  import {
18
18
  findPreviewServerForProject,
19
19
  studioApiUrl
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-5ETJX6WM.js";
17
17
  import {
18
18
  runEnvironmentChecks
19
- } from "./chunk-2NERNYCJ.js";
19
+ } from "./chunk-HPGQPRHY.js";
20
20
  import {
21
21
  OPTIONAL_PACKAGES,
22
22
  installedOptionalPackageVersion
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-ZTZA4UWZ.js";
30
30
  import {
31
31
  resolveExtractCacheDir
32
- } from "./chunk-L4JB7LI4.js";
32
+ } from "./chunk-52YJKWV3.js";
33
33
  import {
34
34
  getAvailableMemoryMb,
35
35
  getFreeDiskMb,
@@ -39,14 +39,14 @@ import {
39
39
  import {
40
40
  getUpdateMeta,
41
41
  withMeta
42
- } from "./chunk-TZEKVLPV.js";
42
+ } from "./chunk-SNECH6QA.js";
43
43
  import {
44
44
  CONFIG_PATH,
45
45
  withFileLock
46
46
  } from "./chunk-6NLPPKBO.js";
47
47
  import {
48
48
  VERSION
49
- } from "./chunk-LFUVTS6V.js";
49
+ } from "./chunk-EY7GKVPS.js";
50
50
  import {
51
51
  normalizeErrorMessage
52
52
  } from "./chunk-T2EUWCJE.js";
@@ -232,7 +232,7 @@ function checkEnvironment() {
232
232
  return { ok: true, detail: parts.join(" \xB7 ") };
233
233
  }
234
234
  async function checkWhisper() {
235
- const { findWhisper, getInstallInstructions } = await import("./manager-4PLYEEWP.js");
235
+ const { findWhisper, getInstallInstructions } = await import("./manager-PLRSZH5G.js");
236
236
  const result = findWhisper();
237
237
  if (result) {
238
238
  return { ok: true, detail: result.executablePath };
@@ -11,14 +11,14 @@ import {
11
11
  distroLabel,
12
12
  getFFmpegInstallHint,
13
13
  parseLddMissingLibs
14
- } from "./chunk-DYNHVCBF.js";
14
+ } from "./chunk-XYGULBFV.js";
15
15
  import {
16
16
  ensureBrowser,
17
17
  findBrowser
18
- } from "./chunk-DIKAPMMF.js";
18
+ } from "./chunk-GQVTTWZF.js";
19
19
  import {
20
20
  runCancellableProcess
21
- } from "./chunk-RWGASWT7.js";
21
+ } from "./chunk-BL4U6U52.js";
22
22
  import {
23
23
  getFreeDiskMb
24
24
  } from "./chunk-T6AGUTZJ.js";
@@ -6,26 +6,26 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parakeetRunner
9
- } from "./chunk-OFV3WSOE.js";
9
+ } from "./chunk-N33FO44R.js";
10
10
  import {
11
11
  DecodeCancelled,
12
12
  prepareSherpaWav,
13
13
  sherpaUnsupportedReason,
14
14
  transcribeWithSherpa
15
- } from "./chunk-MFUNDJEV.js";
15
+ } from "./chunk-BK5YCT54.js";
16
16
  import {
17
17
  initialModelForLanguage,
18
18
  transcribe
19
- } from "./chunk-M3KZBDPB.js";
19
+ } from "./chunk-Q4HKC3O7.js";
20
20
  import {
21
21
  createRenderCancellationScope,
22
22
  stoppedByCancelSignal
23
- } from "./chunk-BP4EMEGH.js";
23
+ } from "./chunk-4VSV56F2.js";
24
24
  import {
25
25
  DEFAULT_MODEL,
26
26
  findWhisper,
27
27
  isWhisperUnavailable
28
- } from "./chunk-VLLFORE2.js";
28
+ } from "./chunk-Y3BT27Y7.js";
29
29
  import {
30
30
  formatSrt,
31
31
  formatVtt,
@@ -11,20 +11,20 @@ import {
11
11
  isAllowedHtmlAttribute,
12
12
  isSafeAttributeValue,
13
13
  sanitizeRichTextChildren
14
- } from "./chunk-7HTH5PFK.js";
14
+ } from "./chunk-JVTWX5G3.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-GAFEU6AB.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-K2VXPQKC.js";
28
28
  import {
29
29
  readClipTiming,
30
30
  writeClipTiming