hyperframes 0.8.108 → 0.8.110

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 (136) hide show
  1. package/dist/{add-OH75E7FX.js → add-D7AY7MSS.js} +9 -9
  2. package/dist/{animatedGifPrep-ZDAWSJYL.js → animatedGifPrep-NMGFOSIL.js} +4 -4
  3. package/dist/{asset-BVDO4DEW.js → asset-63Q4ARX7.js} +2 -2
  4. package/dist/{auth-K5GUKO5S.js → auth-D5QNNEKM.js} +2 -2
  5. package/dist/{autoUpdate-77ROWK5G.js → autoUpdate-25QUBTDS.js} +2 -2
  6. package/dist/{backgroundChecks-3Q3D5WBJ.js → backgroundChecks-G2AHVDCY.js} +3 -3
  7. package/dist/backgroundChecksWorker.js +3 -3
  8. package/dist/{beats-HQZPR6KE.js → beats-43LEYJ76.js} +8 -8
  9. package/dist/{benchmark-BQOWARGU.js → benchmark-JQ5LYY6Z.js} +10 -10
  10. package/dist/{browser-45CK7HXI.js → browser-KQLNYNOH.js} +7 -7
  11. package/dist/{bundleWithLocalizedFonts-3M2LKRHK.js → bundleWithLocalizedFonts-4Q3ETTHW.js} +2 -2
  12. package/dist/{capture-VGEUOP7N.js → capture-4OPH4PMK.js} +4 -4
  13. package/dist/{capture-6IVZXM7G.js → capture-OG6532RA.js} +2 -2
  14. package/dist/{catalog-VHD7B6FD.js → catalog-EAFDIYFH.js} +9 -9
  15. package/dist/{check-UPNZZJXV.js → check-VAJ6G3RU.js} +22 -22
  16. package/dist/{checkBrowser-KWTHKOOP.js → checkBrowser-GUWLYPVJ.js} +21 -21
  17. package/dist/{chunk-QBHT234I.js → chunk-2JXJ5SGK.js} +1 -1
  18. package/dist/{chunk-RSL3XFMO.js → chunk-32P7FTFC.js} +3 -3
  19. package/dist/{chunk-J7XPPADY.js → chunk-47TRZ6A3.js} +2 -2
  20. package/dist/{chunk-THVNQFYG.js → chunk-5ER3PYYP.js} +1 -1
  21. package/dist/{chunk-ONY5CJXS.js → chunk-BAVM2XBR.js} +85 -1
  22. package/dist/{chunk-KVOWTRD5.js → chunk-C4TZBEHY.js} +2 -2
  23. package/dist/{chunk-SIVCJJHE.js → chunk-CQRF7VU3.js} +1 -1
  24. package/dist/{chunk-D7SCIX4D.js → chunk-E4AYSXMS.js} +1 -1
  25. package/dist/{chunk-KZ5OSG4G.js → chunk-E5OSOQKO.js} +1 -1
  26. package/dist/{chunk-AFGDOKRI.js → chunk-E67OVYX3.js} +2 -2
  27. package/dist/{chunk-ZFL6FVQZ.js → chunk-GLSGKTFO.js} +5 -5
  28. package/dist/{chunk-LPXM5L6S.js → chunk-I5WWEBDG.js} +1 -1
  29. package/dist/{chunk-MGTECHI3.js → chunk-ITBEN3QD.js} +1 -1
  30. package/dist/{chunk-QRXICW5Q.js → chunk-JTTAS7N6.js} +1 -1
  31. package/dist/{chunk-FZGUZIK5.js → chunk-JWPSBANO.js} +2 -2
  32. package/dist/{chunk-VBXJSCHR.js → chunk-L37M3PV5.js} +2 -2
  33. package/dist/{chunk-GYYFNAVA.js → chunk-M224DAMG.js} +1 -1
  34. package/dist/{chunk-OVRFBUXU.js → chunk-MGFVNTIB.js} +1 -1
  35. package/dist/{chunk-LTYI4E42.js → chunk-MPSW7EA2.js} +4 -4
  36. package/dist/{chunk-SQ42NHXP.js → chunk-MR2LOG32.js} +25 -27
  37. package/dist/{chunk-C6XQER6H.js → chunk-N32ITJ7L.js} +6 -6
  38. package/dist/{chunk-QB6OM2BP.js → chunk-OF3RKOPU.js} +1 -1
  39. package/dist/{chunk-KZJ6V7RT.js → chunk-PZXUDWPP.js} +3 -3
  40. package/dist/{chunk-VLHN34SB.js → chunk-QJUKISYK.js} +2 -2
  41. package/dist/{chunk-5R5UHSXN.js → chunk-T3HJWJGC.js} +9 -9
  42. package/dist/{chunk-5N4KKGSZ.js → chunk-TQP42SFX.js} +1 -1
  43. package/dist/{chunk-RPMXMOFU.js → chunk-TU7KYFS3.js} +1 -1
  44. package/dist/{chunk-X763EUBO.js → chunk-U4TDAJZE.js} +1 -1
  45. package/dist/{chunk-US7SWKGC.js → chunk-U4U5YVVX.js} +1 -1
  46. package/dist/{chunk-NROJESOK.js → chunk-ULNKBH6B.js} +2 -2
  47. package/dist/{chunk-NGVH2QYT.js → chunk-WTMGUNZZ.js} +7 -7
  48. package/dist/{chunk-LZPAZZZP.js → chunk-X4FEFEP4.js} +1 -1
  49. package/dist/{chunk-XIGK4LNU.js → chunk-YIXEH4TF.js} +1 -1
  50. package/dist/{chunk-NJLFRKHX.js → chunk-ZU54D6MI.js} +134 -4
  51. package/dist/{clean-LCRWNIWO.js → clean-CXX7YDBQ.js} +12 -12
  52. package/dist/cli.js +48 -48
  53. package/dist/{cloud-ITRFE5UN.js → cloud-KRQQC5AH.js} +4 -4
  54. package/dist/{compare-NPVMUILH.js → compare-7MMDDERQ.js} +16 -16
  55. package/dist/{compiler-YYOV2BJ7.js → compiler-C32VXLE2.js} +2 -2
  56. package/dist/{component-HJFMHPNW.js → component-U57T4J2P.js} +3 -3
  57. package/dist/{compositions-I34RN5WD.js → compositions-HG7JA7I4.js} +9 -9
  58. package/dist/{delete-WN3J74BD.js → delete-HXXHYTH2.js} +2 -2
  59. package/dist/{dist-WCMFH74H.js → dist-FMHQMEMX.js} +1 -1
  60. package/dist/{doctor-MYC2S3J3.js → doctor-GKF42LFK.js} +8 -8
  61. package/dist/{events-AEUV2JPA.js → events-5E4LWTM3.js} +6 -6
  62. package/dist/{events-7JVV4746.js → events-LGPPK5FN.js} +7 -7
  63. package/dist/{feedback-X7DDSZPU.js → feedback-53ZU2MPJ.js} +8 -8
  64. package/dist/{figma-ISI4PPTF.js → figma-S4LBKUIF.js} +3 -3
  65. package/dist/fontLocalizeCli.js +6 -6
  66. package/dist/{get-IYALAE4I.js → get-ELQOB66I.js} +2 -2
  67. package/dist/{gpuPolicy-KSWTVU5C.js → gpuPolicy-CA6KRFQQ.js} +4 -4
  68. package/dist/{grade-compare-YWPIWQLK.js → grade-compare-6BDBN6IQ.js} +16 -16
  69. package/dist/{help-S2KJRMAJ.js → help-JNBSADTC.js} +1 -1
  70. package/dist/{history-CQDDCY4J.js → history-TY3SEJWV.js} +12 -12
  71. package/dist/hyperframes-player.global.js +1 -1
  72. package/dist/{info-4KFNUWYN.js → info-QG6XUPA4.js} +9 -9
  73. package/dist/{init-I7GMRHFW.js → init-RZF2YCRD.js} +16 -16
  74. package/dist/{inspect-DUCLCHSD.js → inspect-HYINM6BQ.js} +17 -17
  75. package/dist/{keyframes-F3VDEN66.js → keyframes-VCVFJTYP.js} +10 -10
  76. package/dist/{layout-RNCXJI6C.js → layout-GGRQADMQ.js} +17 -17
  77. package/dist/{lint-3NKKYCMH.js → lint-ZBMSFLOK.js} +10 -10
  78. package/dist/{lintProject-F2OTN2IR.js → lintProject-X7L7EZWZ.js} +1 -1
  79. package/dist/{list-Q7SOE3NF.js → list-ZKWCM7JT.js} +2 -2
  80. package/dist/{login-TGRGWS5E.js → login-CZ4DAMX2.js} +4 -4
  81. package/dist/{media-treatment-5TUXWHWE.js → media-treatment-65KBTTDZ.js} +10 -10
  82. package/dist/{models-YJUTM6TH.js → models-RILNQV3Z.js} +5 -5
  83. package/dist/{motionShot-5QUMZ7J3.js → motionShot-5F4DCMWC.js} +7 -7
  84. package/dist/{normalize-audio-63BI5BPL.js → normalize-audio-SEAAEJRQ.js} +8 -8
  85. package/dist/{pipeline-4NN5T7Q3.js → pipeline-5UY45ELH.js} +4 -4
  86. package/dist/{play-SRDESSZI.js → play-BIKUK4NL.js} +13 -13
  87. package/dist/{preflight-SVN4PSFO.js → preflight-3V5IHGWQ.js} +5 -5
  88. package/dist/{present-TDYR5LRW.js → present-UAM37S3Z.js} +13 -13
  89. package/dist/{preview-Z5MFRZUM.js → preview-TVU4J6VE.js} +11 -11
  90. package/dist/{producer-RS7CB3XJ.js → producer-7JGAPEAF.js} +1 -1
  91. package/dist/{publish-2R22XX77.js → publish-257VZMWI.js} +2 -2
  92. package/dist/{remove-background-KT2SWYCC.js → remove-background-EV6XVADN.js} +5 -5
  93. package/dist/{render-Y2Y7N5WD.js → render-B66XOY6B.js} +12 -12
  94. package/dist/{render-7GDLEGXT.js → render-QZD733OT.js} +9 -9
  95. package/dist/{renderCancellation-RQ3UVNVJ.js → renderCancellation-VIZELWDD.js} +4 -4
  96. package/dist/renderSetupWorker.js +1 -1
  97. package/dist/{sherpa-PR3I4KGM.js → sherpa-BAADWCHB.js} +5 -5
  98. package/dist/{skills-BEYZZWY6.js → skills-AB55WOXL.js} +9 -9
  99. package/dist/{skillsUpdateCheck-3USXDPWV.js → skillsUpdateCheck-VRABW6UL.js} +3 -3
  100. package/dist/{snapshot-S77MQOV2.js → snapshot-STEHSXMQ.js} +17 -17
  101. package/dist/{src-6R4DC2YI.js → src-GD7RGV5U.js} +3 -3
  102. package/dist/{src-IOJXK4VC.js → src-GRC63B6L.js} +5 -5
  103. package/dist/{staticProjectServer-RXAFGDK7.js → staticProjectServer-SFINO3DE.js} +7 -7
  104. package/dist/{status-CRS7H6FA.js → status-LXQL3L3H.js} +4 -4
  105. package/dist/studio/assets/{hyperframes-player-BakGew45.js → hyperframes-player-c6WR3RsF.js} +1 -1
  106. package/dist/studio/assets/{index-C5dyUHwk.js → index-BJpQzV6h.js} +1 -1
  107. package/dist/studio/assets/{index-CPe7d_wO.js → index-C0KfbPAo.js} +1 -1
  108. package/dist/studio/assets/{index-ncVJ5IVu.css → index-C7apTvpr.css} +1 -1
  109. package/dist/studio/assets/{index-C842tcVa.js → index-Co6W8IVk.js} +211 -208
  110. package/dist/studio/{chunk-NCUBAVGK.js → chunk-5VSXRGIX.js} +4 -4
  111. package/dist/studio/chunk-5VSXRGIX.js.map +1 -0
  112. package/dist/studio/{chunk-AOWVEVEU.js → chunk-QUXZVHOJ.js} +8 -2
  113. package/dist/studio/chunk-QUXZVHOJ.js.map +1 -0
  114. package/dist/studio/index.d.ts +64 -9
  115. package/dist/studio/index.html +2 -2
  116. package/dist/studio/index.js +8216 -6268
  117. package/dist/studio/index.js.map +1 -1
  118. package/dist/studio/player.js +2 -2
  119. package/dist/studio/styles.css +1 -1
  120. package/dist/studio/ui.js +1 -1
  121. package/dist/{studio-api-3FH7OSSS.js → studio-api-WRSCXPWS.js} +5 -5
  122. package/dist/{studioServer-4E5RRPU7.js → studioServer-SMBPWSNR.js} +24 -24
  123. package/dist/{system-YMANAUAM.js → system-EEWYEHYX.js} +4 -4
  124. package/dist/{telemetry-46XSB2VN.js → telemetry-VMNHQBUG.js} +7 -7
  125. package/dist/{timeline-XKLKHGD2.js → timeline-JWJDKHRD.js} +38 -19
  126. package/dist/{tokens-JCZKPUPT.js → tokens-DETZVKSO.js} +2 -2
  127. package/dist/{transcribe-FIFJ3BBB.js → transcribe-E5VBY6CU.js} +10 -10
  128. package/dist/{transcribe-FQ4YC2AS.js → transcribe-GCKJF5A6.js} +5 -5
  129. package/dist/{updateCheck-PDIH4GZW.js → updateCheck-PAC2DBB6.js} +2 -2
  130. package/dist/{upgrade-TTGO6JCF.js → upgrade-OYMNUBW2.js} +2 -2
  131. package/dist/{urlDownloader-32JRHOPN.js → urlDownloader-NYXPEBUN.js} +3 -3
  132. package/dist/{validate-G5F56ONL.js → validate-KBPMDKZO.js} +12 -12
  133. package/dist/{video-SGBEMEKA.js → video-KWQ5TSVD.js} +4 -4
  134. package/package.json +1 -1
  135. package/dist/studio/chunk-AOWVEVEU.js.map +0 -1
  136. package/dist/studio/chunk-NCUBAVGK.js.map +0 -1
package/dist/studio/ui.js CHANGED
@@ -30,7 +30,7 @@ import {
30
30
  fieldBase,
31
31
  fieldText,
32
32
  popupSurface
33
- } from "./chunk-NCUBAVGK.js";
33
+ } from "./chunk-5VSXRGIX.js";
34
34
  import "./chunk-PZ5AY32C.js";
35
35
  export {
36
36
  Button,
@@ -41,7 +41,7 @@ import {
41
41
  settledFileTag,
42
42
  stampProjectHfIds,
43
43
  thumbnailDeviceScaleFactor
44
- } from "./chunk-SQ42NHXP.js";
44
+ } from "./chunk-MR2LOG32.js";
45
45
  import {
46
46
  dedupeClonedCompositionId,
47
47
  findTargetElement,
@@ -49,14 +49,14 @@ import {
49
49
  patchElementInHtml,
50
50
  removeElementFromHtml,
51
51
  splitElementInHtml
52
- } from "./chunk-NJLFRKHX.js";
52
+ } from "./chunk-ZU54D6MI.js";
53
53
  import "./chunk-WEATBQTR.js";
54
54
  import "./chunk-5ON5GH3X.js";
55
55
  import {
56
56
  CACHE_DIR_NAME,
57
57
  cleanupProxyCache,
58
58
  walkDir
59
- } from "./chunk-OVRFBUXU.js";
59
+ } from "./chunk-MGFVNTIB.js";
60
60
  import "./chunk-RDMAU7AJ.js";
61
61
  import {
62
62
  STUDIO_MANUAL_EDITS_PATH,
@@ -67,13 +67,13 @@ import "./chunk-TJSTGSAW.js";
67
67
  import "./chunk-B25H4M4V.js";
68
68
  import "./chunk-UUDQD62L.js";
69
69
  import "./chunk-DPVXBVLL.js";
70
- import "./chunk-X763EUBO.js";
70
+ import "./chunk-U4TDAJZE.js";
71
71
  import "./chunk-YLVI7VL5.js";
72
72
  import "./chunk-VC76R6W2.js";
73
73
  import {
74
74
  isSafePath
75
75
  } from "./chunk-OFQWTKPW.js";
76
- import "./chunk-ONY5CJXS.js";
76
+ import "./chunk-BAVM2XBR.js";
77
77
  import "./chunk-HBBJFK6I.js";
78
78
  import "./chunk-PJ3HDUCY.js";
79
79
  import "./chunk-TQFG7HTI.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-VXVRPIJA.js";
11
11
  import {
12
12
  seekCompositionTimeline
13
- } from "./chunk-RSL3XFMO.js";
13
+ } from "./chunk-32P7FTFC.js";
14
14
  import "./chunk-5Z63TBTX.js";
15
15
  import "./chunk-262C25DQ.js";
16
16
  import "./chunk-TIZQC44K.js";
@@ -36,18 +36,18 @@ import {
36
36
  openProjectHistory,
37
37
  stampProjectHfIds,
38
38
  thumbnailDeviceScaleFactor
39
- } from "./chunk-SQ42NHXP.js";
40
- import "./chunk-NJLFRKHX.js";
39
+ } from "./chunk-MR2LOG32.js";
40
+ import "./chunk-ZU54D6MI.js";
41
41
  import {
42
42
  isAtomicTempPath,
43
43
  replaceFileAtomically
44
44
  } from "./chunk-WEATBQTR.js";
45
45
  import "./chunk-5ON5GH3X.js";
46
- import "./chunk-OVRFBUXU.js";
46
+ import "./chunk-MGFVNTIB.js";
47
47
  import "./chunk-IHFUKJOR.js";
48
48
  import {
49
49
  resolveRenderBrowser
50
- } from "./chunk-D7SCIX4D.js";
50
+ } from "./chunk-E4AYSXMS.js";
51
51
  import "./chunk-PFCFR3KZ.js";
52
52
  import {
53
53
  resolveAutoProxy
@@ -58,7 +58,7 @@ import "./chunk-HVW7ABXD.js";
58
58
  import {
59
59
  resolveCaptureBrowserGpuMode,
60
60
  resolveLocalBrowserGpuMode
61
- } from "./chunk-GYYFNAVA.js";
61
+ } from "./chunk-M224DAMG.js";
62
62
  import "./chunk-XYVFPDNU.js";
63
63
  import "./chunk-HQGJLZB6.js";
64
64
  import "./chunk-AWUZ3AUD.js";
@@ -69,18 +69,18 @@ import "./chunk-RDMAU7AJ.js";
69
69
  import {
70
70
  trackRenderComplete,
71
71
  trackRenderError
72
- } from "./chunk-VBXJSCHR.js";
72
+ } from "./chunk-L37M3PV5.js";
73
73
  import {
74
74
  canaryDecisionsForStudio,
75
75
  resetTelemetryPostureCache,
76
76
  shouldTrack
77
- } from "./chunk-J7XPPADY.js";
77
+ } from "./chunk-47TRZ6A3.js";
78
78
  import "./chunk-VWG7OQKU.js";
79
79
  import "./chunk-ZTZA4UWZ.js";
80
80
  import {
81
81
  bytesToMb,
82
82
  detectAgentRuntime
83
- } from "./chunk-SIVCJJHE.js";
83
+ } from "./chunk-CQRF7VU3.js";
84
84
  import "./chunk-AMKC3AXA.js";
85
85
  import "./chunk-54HJ63Q2.js";
86
86
  import "./chunk-PBN6GBJE.js";
@@ -91,13 +91,13 @@ import "./chunk-TJSTGSAW.js";
91
91
  import {
92
92
  assertWebGpuAdapterAvailable,
93
93
  compositionRequiresWebGpu
94
- } from "./chunk-QB6OM2BP.js";
94
+ } from "./chunk-OF3RKOPU.js";
95
95
  import {
96
96
  fpsToNumber
97
97
  } from "./chunk-B25H4M4V.js";
98
98
  import "./chunk-UUDQD62L.js";
99
99
  import "./chunk-DPVXBVLL.js";
100
- import "./chunk-X763EUBO.js";
100
+ import "./chunk-U4TDAJZE.js";
101
101
  import "./chunk-YLVI7VL5.js";
102
102
  import "./chunk-VC76R6W2.js";
103
103
  import {
@@ -110,7 +110,7 @@ import {
110
110
  import "./chunk-TWWSYAKJ.js";
111
111
  import {
112
112
  isWithinProjectRoot
113
- } from "./chunk-ONY5CJXS.js";
113
+ } from "./chunk-BAVM2XBR.js";
114
114
  import "./chunk-HBBJFK6I.js";
115
115
  import "./chunk-PJ3HDUCY.js";
116
116
  import "./chunk-TQFG7HTI.js";
@@ -127,7 +127,7 @@ import {
127
127
  } from "./chunk-ISN5GRYI.js";
128
128
  import {
129
129
  VERSION
130
- } from "./chunk-NROJESOK.js";
130
+ } from "./chunk-ULNKBH6B.js";
131
131
  import "./chunk-KNU5COPB.js";
132
132
  import "./chunk-3GXQPCJC.js";
133
133
  import "./chunk-RQVDTPGD.js";
@@ -635,13 +635,13 @@ var RENDER_SHUTDOWN_WAIT_MS = 2e3;
635
635
  var IMMUTABLE_CACHE_CONTROL = "public, max-age=31536000, immutable";
636
636
  var REMOTE_GIF_IMG_SRC_RE = /<img\b[^>]*?\bsrc\s*=\s*["'](https?:\/\/[^"']+\.gif(?:[?#][^"']*)?)["'][^>]*>/gi;
637
637
  async function loadStudioProducer() {
638
- if (!isDevMode()) return await import("./src-IOJXK4VC.js");
638
+ if (!isDevMode()) return await import("./src-GRC63B6L.js");
639
639
  if (!process.versions.bun) {
640
640
  throw new Error(
641
641
  "Studio dev-mode rendering requires bun (the producer is loaded from TypeScript source, which Node cannot resolve). Restart the studio with `bun run studio`."
642
642
  );
643
643
  }
644
- return await import("./src-IOJXK4VC.js");
644
+ return await import("./src-GRC63B6L.js");
645
645
  }
646
646
  function resolveDistDir() {
647
647
  return resolveStudioBundle().dir;
@@ -755,7 +755,7 @@ async function getThumbnailBrowser(requestedGpuMode, isShuttingDown) {
755
755
  try {
756
756
  if (isShuttingDown()) return null;
757
757
  const { ensureBrowser } = await import("./manager-NEVLEZK3.js");
758
- const { acquireBrowser, buildChromeArgs } = await import("./src-6R4DC2YI.js");
758
+ const { acquireBrowser, buildChromeArgs } = await import("./src-GD7RGV5U.js");
759
759
  let executablePath;
760
760
  try {
761
761
  const b = await ensureBrowser({ preferManagedChrome: true });
@@ -899,7 +899,7 @@ function createStudioServer(options) {
899
899
  resolveProject: (id) => id === projectId ? project : null,
900
900
  async bundle(dir, options2) {
901
901
  try {
902
- const { bundleToSingleHtml } = await import("./compiler-YYOV2BJ7.js");
902
+ const { bundleToSingleHtml } = await import("./compiler-C32VXLE2.js");
903
903
  let html = await bundleToSingleHtml(dir, { ...PREVIEW_BUNDLE_OPTIONS, ...options2 });
904
904
  html = html.replace(
905
905
  'data-hyperframes-preview-runtime="1" src=""',
@@ -913,8 +913,8 @@ function createStudioServer(options) {
913
913
  },
914
914
  async transformPreviewHtml({ html, project: project2 }) {
915
915
  const { injectDeterministicFontFaces } = await import("./deterministicFonts-A4CNCSAL.js");
916
- const { prepareAnimatedGifInputs } = await import("./animatedGifPrep-ZDAWSJYL.js");
917
- const { downloadToTemp, writeUrlDownloadTelemetry } = await import("./urlDownloader-32JRHOPN.js");
916
+ const { prepareAnimatedGifInputs } = await import("./animatedGifPrep-NMGFOSIL.js");
917
+ const { downloadToTemp, writeUrlDownloadTelemetry } = await import("./urlDownloader-NYXPEBUN.js");
918
918
  const gifOutputDir = join2(project2.dir, ".hyperframes", "prepared-assets", "gif");
919
919
  const gifDownloadDir = join2(project2.dir, ".hyperframes", "prepared-assets", "downloads");
920
920
  const prepared = await prepareAnimatedGifInputs(html, {
@@ -938,7 +938,7 @@ function createStudioServer(options) {
938
938
  if (resolve2(dir) === resolve2(projectDir)) cachedProjectSignature = null;
939
939
  },
940
940
  async lint(html, opts) {
941
- const { lintHyperframeHtml } = await import("./dist-WCMFH74H.js");
941
+ const { lintHyperframeHtml } = await import("./dist-FMHQMEMX.js");
942
942
  return await lintHyperframeHtml(html, { ...opts, host: "studio" });
943
943
  },
944
944
  // Out of process: linting a large composition is seconds of synchronous parsing, and on
@@ -1055,7 +1055,7 @@ function createStudioServer(options) {
1055
1055
  startBackgroundRemoval(opts) {
1056
1056
  return createBackgroundRemovalJob(opts, async (renderOpts) => {
1057
1057
  const sourcePipelinePath = "../background-removal/pipeline.ts";
1058
- const pipeline = await import("./pipeline-4NN5T7Q3.js").catch(
1058
+ const pipeline = await import("./pipeline-5UY45ELH.js").catch(
1059
1059
  () => import(sourcePipelinePath)
1060
1060
  );
1061
1061
  return pipeline.render(renderOpts);
@@ -1149,7 +1149,7 @@ function createStudioServer(options) {
1149
1149
  return loadAllItems(blockAndComponentEntries, registry);
1150
1150
  },
1151
1151
  async installRegistryBlock(opts) {
1152
- const { addToProject, primaryInstalledTarget } = await import("./add-OH75E7FX.js");
1152
+ const { addToProject, primaryInstalledTarget } = await import("./add-D7AY7MSS.js");
1153
1153
  const { recordRewrittenInstall } = await import("./installer-NBEN3ZIP.js");
1154
1154
  const { registryTargetPath } = await import("./publication-7XA2H7UB.js");
1155
1155
  const { result, item } = await addToProject({
@@ -1252,7 +1252,7 @@ function createStudioServer(options) {
1252
1252
  app.get("/api/environment/ffmpeg", async (c) => {
1253
1253
  if (ffmpegReady) return c.json({ ok: true });
1254
1254
  const [{ runEnvironmentChecks }, { getFFmpegInstallCommand }] = await Promise.all([
1255
- import("./preflight-SVN4PSFO.js"),
1255
+ import("./preflight-3V5IHGWQ.js"),
1256
1256
  import("./ffmpeg-QIUFEFTY.js")
1257
1257
  ]);
1258
1258
  const { outcomes } = await runEnvironmentChecks();
@@ -1387,7 +1387,7 @@ function createStudioServer(options) {
1387
1387
  });
1388
1388
  const renders = [...inFlightRenders];
1389
1389
  for (const [abortController] of renders) abortController.abort();
1390
- const { killTrackedProcesses, closeBrowserPool } = await import("./src-6R4DC2YI.js");
1390
+ const { killTrackedProcesses, closeBrowserPool } = await import("./src-GD7RGV5U.js");
1391
1391
  killTrackedProcesses();
1392
1392
  const closeBrowsers = Promise.allSettled([
1393
1393
  closeThumbnailBrowser().catch(() => {
@@ -12,18 +12,18 @@ import {
12
12
  getShmSizeMb,
13
13
  getSystemMeta,
14
14
  parsePmsetPowerSource
15
- } from "./chunk-SIVCJJHE.js";
15
+ } from "./chunk-CQRF7VU3.js";
16
16
  import "./chunk-AMKC3AXA.js";
17
- import "./chunk-QB6OM2BP.js";
17
+ import "./chunk-OF3RKOPU.js";
18
18
  import "./chunk-B25H4M4V.js";
19
19
  import "./chunk-UUDQD62L.js";
20
20
  import "./chunk-DPVXBVLL.js";
21
- import "./chunk-X763EUBO.js";
21
+ import "./chunk-U4TDAJZE.js";
22
22
  import "./chunk-YLVI7VL5.js";
23
23
  import "./chunk-VC76R6W2.js";
24
24
  import "./chunk-OFQWTKPW.js";
25
25
  import "./chunk-TWWSYAKJ.js";
26
- import "./chunk-ONY5CJXS.js";
26
+ import "./chunk-BAVM2XBR.js";
27
27
  import "./chunk-HBBJFK6I.js";
28
28
  import "./chunk-PJ3HDUCY.js";
29
29
  import "./chunk-TQFG7HTI.js";
@@ -17,14 +17,14 @@ import {
17
17
  trackInitTemplate,
18
18
  trackRenderComplete,
19
19
  trackRenderError
20
- } from "./chunk-VBXJSCHR.js";
20
+ } from "./chunk-L37M3PV5.js";
21
21
  import {
22
22
  flush,
23
23
  flushSync,
24
24
  shouldTrack,
25
25
  showTelemetryNotice,
26
26
  trackEvent
27
- } from "./chunk-J7XPPADY.js";
27
+ } from "./chunk-47TRZ6A3.js";
28
28
  import "./chunk-VWG7OQKU.js";
29
29
  import "./chunk-ZTZA4UWZ.js";
30
30
  import {
@@ -32,20 +32,20 @@ import {
32
32
  getFreeDiskMb,
33
33
  getShmSizeMb,
34
34
  getSystemMeta
35
- } from "./chunk-SIVCJJHE.js";
35
+ } from "./chunk-CQRF7VU3.js";
36
36
  import "./chunk-AMKC3AXA.js";
37
37
  import "./chunk-54HJ63Q2.js";
38
38
  import "./chunk-PBN6GBJE.js";
39
- import "./chunk-QB6OM2BP.js";
39
+ import "./chunk-OF3RKOPU.js";
40
40
  import "./chunk-B25H4M4V.js";
41
41
  import "./chunk-UUDQD62L.js";
42
42
  import "./chunk-DPVXBVLL.js";
43
- import "./chunk-X763EUBO.js";
43
+ import "./chunk-U4TDAJZE.js";
44
44
  import "./chunk-YLVI7VL5.js";
45
45
  import "./chunk-VC76R6W2.js";
46
46
  import "./chunk-OFQWTKPW.js";
47
47
  import "./chunk-TWWSYAKJ.js";
48
- import "./chunk-ONY5CJXS.js";
48
+ import "./chunk-BAVM2XBR.js";
49
49
  import "./chunk-HBBJFK6I.js";
50
50
  import "./chunk-PJ3HDUCY.js";
51
51
  import "./chunk-TQFG7HTI.js";
@@ -60,7 +60,7 @@ import {
60
60
  } from "./chunk-XUXGIA7H.js";
61
61
  import "./chunk-WERLJGIC.js";
62
62
  import "./chunk-ISN5GRYI.js";
63
- import "./chunk-NROJESOK.js";
63
+ import "./chunk-ULNKBH6B.js";
64
64
  import "./chunk-KNU5COPB.js";
65
65
  import "./chunk-3GXQPCJC.js";
66
66
  import "./chunk-RQVDTPGD.js";
@@ -11,28 +11,31 @@ import {
11
11
  applyFileMutations,
12
12
  duplicateElementInHtml,
13
13
  fileContentVersion
14
- } from "./chunk-SQ42NHXP.js";
14
+ } from "./chunk-MR2LOG32.js";
15
15
  import {
16
+ findSyncPartner,
16
17
  patchElementInHtml,
18
+ readLinkTiming,
17
19
  removeElementFromHtml,
18
- splitElementInHtml
19
- } from "./chunk-NJLFRKHX.js";
20
+ splitElementInHtml,
21
+ syncOffsetFrames
22
+ } from "./chunk-ZU54D6MI.js";
20
23
  import "./chunk-WEATBQTR.js";
21
24
  import "./chunk-5ON5GH3X.js";
22
- import "./chunk-OVRFBUXU.js";
25
+ import "./chunk-MGFVNTIB.js";
23
26
  import {
24
27
  resolveProject
25
- } from "./chunk-US7SWKGC.js";
28
+ } from "./chunk-U4U5YVVX.js";
26
29
  import "./chunk-IHFUKJOR.js";
27
30
  import {
28
31
  ensureDOMParser
29
32
  } from "./chunk-PFCFR3KZ.js";
30
33
  import "./chunk-RDMAU7AJ.js";
31
- import "./chunk-VBXJSCHR.js";
32
- import "./chunk-J7XPPADY.js";
34
+ import "./chunk-L37M3PV5.js";
35
+ import "./chunk-47TRZ6A3.js";
33
36
  import "./chunk-VWG7OQKU.js";
34
37
  import "./chunk-ZTZA4UWZ.js";
35
- import "./chunk-SIVCJJHE.js";
38
+ import "./chunk-CQRF7VU3.js";
36
39
  import "./chunk-AMKC3AXA.js";
37
40
  import {
38
41
  defineCommand
@@ -49,7 +52,7 @@ import {
49
52
  extractMediaMetadata,
50
53
  resolveReferencedDuration,
51
54
  resolveReferencedStart
52
- } from "./chunk-QB6OM2BP.js";
55
+ } from "./chunk-OF3RKOPU.js";
53
56
  import {
54
57
  byStart,
55
58
  fpsToNumber,
@@ -66,7 +69,7 @@ import {
66
69
  import "./chunk-DPVXBVLL.js";
67
70
  import {
68
71
  ensureHfIds
69
- } from "./chunk-X763EUBO.js";
72
+ } from "./chunk-U4TDAJZE.js";
70
73
  import {
71
74
  HF_AUDIO_AUTOMATION_ATTR,
72
75
  HF_AUDIO_FX_ATTR,
@@ -77,7 +80,7 @@ import {
77
80
  import "./chunk-VC76R6W2.js";
78
81
  import "./chunk-OFQWTKPW.js";
79
82
  import "./chunk-TWWSYAKJ.js";
80
- import "./chunk-ONY5CJXS.js";
83
+ import "./chunk-BAVM2XBR.js";
81
84
  import "./chunk-HBBJFK6I.js";
82
85
  import "./chunk-PJ3HDUCY.js";
83
86
  import {
@@ -90,12 +93,12 @@ import "./chunk-GK4AIFIH.js";
90
93
  import "./chunk-2PSPARWP.js";
91
94
  import {
92
95
  withMeta
93
- } from "./chunk-RPMXMOFU.js";
96
+ } from "./chunk-TU7KYFS3.js";
94
97
  import "./chunk-K4WIOZFP.js";
95
98
  import "./chunk-XUXGIA7H.js";
96
99
  import "./chunk-WERLJGIC.js";
97
100
  import "./chunk-ISN5GRYI.js";
98
- import "./chunk-NROJESOK.js";
101
+ import "./chunk-ULNKBH6B.js";
99
102
  import "./chunk-KNU5COPB.js";
100
103
  import "./chunk-3GXQPCJC.js";
101
104
  import "./chunk-RQVDTPGD.js";
@@ -255,9 +258,14 @@ function describeRowFields(scope, node, timing) {
255
258
  ref: "",
256
259
  warnings: [],
257
260
  elementId: el.id || null,
258
- hfId: el.getAttribute("data-hf-id")
261
+ hfId: el.getAttribute("data-hf-id"),
262
+ syncOffsetFrames: syncOffsetOf(el, scope.fps)
259
263
  };
260
264
  }
265
+ function syncOffsetOf(el, fps) {
266
+ const partner = findSyncPartner(el);
267
+ return partner ? syncOffsetFrames(readLinkTiming(el), readLinkTiming(partner), fps) : null;
268
+ }
261
269
  async function describeRow(scope, node, depth) {
262
270
  return describeRowFields(scope, node, await resolveRowTiming(scope, node, depth));
263
271
  }
@@ -280,7 +288,8 @@ async function readSubComposition(src, parent, origin) {
280
288
  file: relative(parent.projectDir, authored).split(sep).join("/"),
281
289
  withProbeSlot: parent.withProbeSlot,
282
290
  measure: parent.measure,
283
- sourceOverrides: parent.sourceOverrides
291
+ sourceOverrides: parent.sourceOverrides,
292
+ fps: parent.fps
284
293
  };
285
294
  const rows = await Promise.all(
286
295
  topLevelElements(toNode(root)).map((node) => describeRow(scope, node, 1))
@@ -340,6 +349,10 @@ function flatten(top) {
340
349
  })
341
350
  }));
342
351
  }
352
+ function projectFps(source) {
353
+ const parsed = parseFpsWithDefault(readCompositionFps(source) ?? void 0);
354
+ return fpsToNumber(parsed.ok ? parsed.value : { num: 30, den: 1 });
355
+ }
343
356
  async function describeProject(indexPath, measure = measureWithFfprobe, sourceOverrides = /* @__PURE__ */ new Map()) {
344
357
  const projectDir = dirname(indexPath);
345
358
  const source = sourceOverrides.get(basename(indexPath)) ?? readFileSync(indexPath, "utf-8");
@@ -355,7 +368,8 @@ async function describeProject(indexPath, measure = measureWithFfprobe, sourceOv
355
368
  file: basename(indexPath),
356
369
  withProbeSlot: createProbeGate(PROBE_CONCURRENCY),
357
370
  measure,
358
- sourceOverrides
371
+ sourceOverrides,
372
+ fps: projectFps(source)
359
373
  };
360
374
  const rows = (await Promise.all(topLevelElements(toNode(root)).map((node) => describeRow(scope, node, 0)))).sort(byStart);
361
375
  const declared = parseNumeric(root.getAttribute("data-duration"));
@@ -391,6 +405,10 @@ function durationNote(row) {
391
405
  return false;
392
406
  }
393
407
  }
408
+ function syncNote(frames) {
409
+ if (!frames) return false;
410
+ return `out-of-sync=${frames > 0 ? "+" : ""}${frames}f`;
411
+ }
394
412
  function details(row) {
395
413
  const lanes = row.lanes.map(
396
414
  (l) => `${l.target}[${l.points.map((p) => `${n(p.t)}:${n(p.v)}`).join(" ")}]`
@@ -400,6 +418,7 @@ function details(row) {
400
418
  row.volume !== null && `vol=${row.volume}`,
401
419
  row.playbackRate !== null && `rate=${n(row.playbackRate)}`,
402
420
  row.audioGroup && `group=${row.audioGroup}`,
421
+ syncNote(row.syncOffsetFrames),
403
422
  durationNote(row),
404
423
  row.sourceFile && !row.children.length && "children=unread",
405
424
  row.laneError && `lanes unreadable: ${row.laneError}`,
@@ -1109,8 +1128,8 @@ async function prepareMutation(args) {
1109
1128
  void 0,
1110
1129
  /* @__PURE__ */ new Map([["index.html", indexSource]])
1111
1130
  );
1112
- const projectFps = declaredFps(indexSource);
1113
- if (snap && projectFps === null) {
1131
+ const projectFps2 = declaredFps(indexSource);
1132
+ if (snap && projectFps2 === null) {
1114
1133
  return {
1115
1134
  ok: false,
1116
1135
  reason: "project fps is unknown",
@@ -1145,7 +1164,7 @@ async function prepareMutation(args) {
1145
1164
  resolveAnchor: anchor
1146
1165
  });
1147
1166
  if (!parsed.ok || !snap) return parsed;
1148
- return { ok: true, seconds: Math.round(parsed.seconds * projectFps) / projectFps };
1167
+ return { ok: true, seconds: Math.round(parsed.seconds * projectFps2) / projectFps2 };
1149
1168
  };
1150
1169
  return {
1151
1170
  ok: true,
@@ -11,7 +11,7 @@ import {
11
11
  tokensToVariables,
12
12
  upsertBindings,
13
13
  withFigmaErrors
14
- } from "./chunk-LZPAZZZP.js";
14
+ } from "./chunk-X4FEFEP4.js";
15
15
  import "./chunk-IHFUKJOR.js";
16
16
  import "./chunk-ZTZA4UWZ.js";
17
17
  import {
@@ -76,7 +76,7 @@ var tokens_default = defineCommand({
76
76
  console.log("add to data-composition-variables:");
77
77
  console.log(JSON.stringify(result.entries, null, 2));
78
78
  }
79
- const { trackFigmaImport } = await import("./telemetry-46XSB2VN.js");
79
+ const { trackFigmaImport } = await import("./telemetry-VMNHQBUG.js");
80
80
  trackFigmaImport({
81
81
  phase: "tokens",
82
82
  tokensMode: result.mode,
@@ -15,13 +15,13 @@ import "./chunk-X5HWXQPU.js";
15
15
  import "./chunk-TVCRUG2S.js";
16
16
  import {
17
17
  trackTranscribeUnavailable
18
- } from "./chunk-VBXJSCHR.js";
19
- import "./chunk-J7XPPADY.js";
18
+ } from "./chunk-L37M3PV5.js";
19
+ import "./chunk-47TRZ6A3.js";
20
20
  import "./chunk-VWG7OQKU.js";
21
21
  import {
22
22
  c
23
23
  } from "./chunk-ZTZA4UWZ.js";
24
- import "./chunk-SIVCJJHE.js";
24
+ import "./chunk-CQRF7VU3.js";
25
25
  import "./chunk-AMKC3AXA.js";
26
26
  import {
27
27
  defineCommand
@@ -31,17 +31,17 @@ import {
31
31
  failCommand,
32
32
  setCommandExitCode
33
33
  } from "./chunk-PBN6GBJE.js";
34
- import "./chunk-QB6OM2BP.js";
34
+ import "./chunk-OF3RKOPU.js";
35
35
  import "./chunk-B25H4M4V.js";
36
36
  import "./chunk-UUDQD62L.js";
37
37
  import "./chunk-DPVXBVLL.js";
38
- import "./chunk-X763EUBO.js";
38
+ import "./chunk-U4TDAJZE.js";
39
39
  import "./chunk-YLVI7VL5.js";
40
40
  import "./chunk-VC76R6W2.js";
41
41
  import "./chunk-OFQWTKPW.js";
42
42
  import "./chunk-LCSMOLGX.js";
43
43
  import "./chunk-TWWSYAKJ.js";
44
- import "./chunk-ONY5CJXS.js";
44
+ import "./chunk-BAVM2XBR.js";
45
45
  import "./chunk-HBBJFK6I.js";
46
46
  import "./chunk-PJ3HDUCY.js";
47
47
  import "./chunk-TQFG7HTI.js";
@@ -51,7 +51,7 @@ import "./chunk-K4WIOZFP.js";
51
51
  import "./chunk-XUXGIA7H.js";
52
52
  import "./chunk-WERLJGIC.js";
53
53
  import "./chunk-ISN5GRYI.js";
54
- import "./chunk-NROJESOK.js";
54
+ import "./chunk-ULNKBH6B.js";
55
55
  import {
56
56
  normalizeErrorMessage
57
57
  } from "./chunk-KNU5COPB.js";
@@ -250,7 +250,7 @@ function pickRunner(engine, sherpaUsable, language) {
250
250
  }
251
251
  var parakeetFallsBack = (engine) => engine === "auto";
252
252
  async function transcribeAudio(inputPath, dir, opts) {
253
- const { transcribe } = await import("./transcribe-FQ4YC2AS.js");
253
+ const { transcribe } = await import("./transcribe-GCKJF5A6.js");
254
254
  const { loadTranscript, patchCaptionHtml, stripBeforeOnset } = await import("./normalize-O76AC4HE.js");
255
255
  const {
256
256
  DecodeCancelled,
@@ -258,8 +258,8 @@ async function transcribeAudio(inputPath, dir, opts) {
258
258
  sherpaParakeetInstalled,
259
259
  sherpaUnsupportedReason,
260
260
  transcribeWithSherpa
261
- } = await import("./sherpa-PR3I4KGM.js");
262
- const { createRenderCancellationScope, stoppedByCancelSignal } = await import("./renderCancellation-RQ3UVNVJ.js");
261
+ } = await import("./sherpa-BAADWCHB.js");
262
+ const { createRenderCancellationScope, stoppedByCancelSignal } = await import("./renderCancellation-VIZELWDD.js");
263
263
  const engine = (opts.engine ?? "auto").toLowerCase();
264
264
  if (engine !== "auto" && engine !== "parakeet" && engine !== "whisper") {
265
265
  failWith(`Unknown --engine: ${opts.engine}. Use auto, parakeet, or whisper.`, !!opts.json);
@@ -18,24 +18,24 @@ import {
18
18
  transcribe,
19
19
  whisperModelSlowdownFactor,
20
20
  wrapWhisperTimeoutError
21
- } from "./chunk-LPXM5L6S.js";
21
+ } from "./chunk-I5WWEBDG.js";
22
22
  import "./chunk-OAF4XJOW.js";
23
23
  import "./chunk-X5HWXQPU.js";
24
24
  import "./chunk-TVCRUG2S.js";
25
- import "./chunk-QRXICW5Q.js";
25
+ import "./chunk-JTTAS7N6.js";
26
26
  import "./chunk-AMKC3AXA.js";
27
- import "./chunk-QB6OM2BP.js";
27
+ import "./chunk-OF3RKOPU.js";
28
28
  import "./chunk-B25H4M4V.js";
29
29
  import "./chunk-UUDQD62L.js";
30
30
  import "./chunk-DPVXBVLL.js";
31
- import "./chunk-X763EUBO.js";
31
+ import "./chunk-U4TDAJZE.js";
32
32
  import "./chunk-YLVI7VL5.js";
33
33
  import "./chunk-VC76R6W2.js";
34
34
  import "./chunk-OFQWTKPW.js";
35
35
  import "./chunk-LAOCA3MQ.js";
36
36
  import "./chunk-LCSMOLGX.js";
37
37
  import "./chunk-TWWSYAKJ.js";
38
- import "./chunk-ONY5CJXS.js";
38
+ import "./chunk-BAVM2XBR.js";
39
39
  import "./chunk-HBBJFK6I.js";
40
40
  import "./chunk-PJ3HDUCY.js";
41
41
  import "./chunk-TQFG7HTI.js";
@@ -16,12 +16,12 @@ import {
16
16
  updateCheckDue,
17
17
  updateNoticesSuppressed,
18
18
  withMeta
19
- } from "./chunk-RPMXMOFU.js";
19
+ } from "./chunk-TU7KYFS3.js";
20
20
  import "./chunk-K4WIOZFP.js";
21
21
  import "./chunk-XUXGIA7H.js";
22
22
  import "./chunk-WERLJGIC.js";
23
23
  import "./chunk-ISN5GRYI.js";
24
- import "./chunk-NROJESOK.js";
24
+ import "./chunk-ULNKBH6B.js";
25
25
  import "./chunk-KNU5COPB.js";
26
26
  import "./chunk-M2WBOQ2Q.js";
27
27
  export {
@@ -28,14 +28,14 @@ import {
28
28
  rewritePinnedHyperframesText,
29
29
  rewriteProjectPinnedScripts,
30
30
  withMeta
31
- } from "./chunk-RPMXMOFU.js";
31
+ } from "./chunk-TU7KYFS3.js";
32
32
  import "./chunk-K4WIOZFP.js";
33
33
  import "./chunk-XUXGIA7H.js";
34
34
  import "./chunk-WERLJGIC.js";
35
35
  import "./chunk-ISN5GRYI.js";
36
36
  import {
37
37
  VERSION
38
- } from "./chunk-NROJESOK.js";
38
+ } from "./chunk-ULNKBH6B.js";
39
39
  import "./chunk-KNU5COPB.js";
40
40
  import "./chunk-M2WBOQ2Q.js";
41
41
 
@@ -11,16 +11,16 @@ import {
11
11
  isHttpUrl,
12
12
  safeDownloadUrlIdentity,
13
13
  writeUrlDownloadTelemetry
14
- } from "./chunk-QB6OM2BP.js";
14
+ } from "./chunk-OF3RKOPU.js";
15
15
  import "./chunk-B25H4M4V.js";
16
16
  import "./chunk-UUDQD62L.js";
17
17
  import "./chunk-DPVXBVLL.js";
18
- import "./chunk-X763EUBO.js";
18
+ import "./chunk-U4TDAJZE.js";
19
19
  import "./chunk-YLVI7VL5.js";
20
20
  import "./chunk-VC76R6W2.js";
21
21
  import "./chunk-OFQWTKPW.js";
22
22
  import "./chunk-TWWSYAKJ.js";
23
- import "./chunk-ONY5CJXS.js";
23
+ import "./chunk-BAVM2XBR.js";
24
24
  import "./chunk-HBBJFK6I.js";
25
25
  import "./chunk-PJ3HDUCY.js";
26
26
  import "./chunk-TQFG7HTI.js";