hyperframes 0.8.141 → 0.8.143

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 (200) hide show
  1. package/dist/{add-KH2CF4FD.js → add-Q5EYDUAY.js} +18 -17
  2. package/dist/{animatedGifPrep-QO4BSKR7.js → animatedGifPrep-H2DUQEZ3.js} +15 -15
  3. package/dist/{asset-4RDZILVJ.js → asset-C7JBYYX4.js} +4 -4
  4. package/dist/{assetCataloger-WGR4LYYN.js → assetCataloger-FRO4G6OU.js} +8 -7
  5. package/dist/{auth-WYQCOYE5.js → auth-FRWLCO36.js} +5 -4
  6. package/dist/{autoUpdate-PC5TN3NL.js → autoUpdate-E4OZXQK6.js} +2 -2
  7. package/dist/{backgroundChecks-7M3T44EP.js → backgroundChecks-FSUVHN5L.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-GOLLOE4V.js → batchRender-4U73BYTU.js} +11 -10
  10. package/dist/{beats-XJ7WP6QS.js → beats-U6KJWF35.js} +32 -28
  11. package/dist/{benchmark-HCGFBEZJ.js → benchmark-5ONT7V7B.js} +15 -14
  12. package/dist/{browser-VQKO2FKG.js → browser-R4DU46IE.js} +4 -4
  13. package/dist/{bundleWithLocalizedFonts-FH7PHTTX.js → bundleWithLocalizedFonts-VH55VOAL.js} +2 -2
  14. package/dist/{capture-TFZZSF6F.js → capture-26G2DPSI.js} +83 -41
  15. package/dist/{capture-XD3P3YQR.js → capture-OGQAEYKO.js} +24 -8
  16. package/dist/{catalog-4S33QWJJ.js → catalog-RKORTIUE.js} +19 -18
  17. package/dist/{catch-up-RW7YXXNT.js → catch-up-4OBERRQO.js} +5 -5
  18. package/dist/{check-XVTRRN4Y.js → check-P2XDN57S.js} +89 -85
  19. package/dist/{checkBrowser-HZXJ2EDU.js → checkBrowser-NTGJGAEA.js} +42 -42
  20. package/dist/{chunk-AVWEIOEN.js → chunk-2LBBHMKT.js} +1 -1
  21. package/dist/{chunk-E6SDW5FV.js → chunk-33RZPZ4K.js} +192 -45
  22. package/dist/{chunk-6IFXWJDX.js → chunk-3NE7ZYU2.js} +2 -2
  23. package/dist/{chunk-TQFG7HTI.js → chunk-3RM2ETQT.js} +0 -168
  24. package/dist/{chunk-PFCFR3KZ.js → chunk-442JNXRM.js} +1 -1
  25. package/dist/{chunk-6E6CM7WS.js → chunk-4M4EC7JX.js} +19 -12
  26. package/dist/{chunk-HKCNZITN.js → chunk-4OA4LDTU.js} +2 -2
  27. package/dist/{chunk-XTFJOR3K.js → chunk-4SFGME7K.js} +1 -1
  28. package/dist/{chunk-34TXESM7.js → chunk-5FISWJ37.js} +12 -4
  29. package/dist/{chunk-JYYOAKHS.js → chunk-6IIGT7BX.js} +1 -1
  30. package/dist/chunk-6TPZSTCL.js +3681 -0
  31. package/dist/{chunk-P6E4HFFU.js → chunk-6XMFEICO.js} +263 -75
  32. package/dist/{chunk-6Q6FR4KH.js → chunk-7UYBQ6NF.js} +296 -89
  33. package/dist/{chunk-BRITLL56.js → chunk-B4P5VDFQ.js} +1 -1
  34. package/dist/{chunk-U7E736AJ.js → chunk-BFDJ63J5.js} +32 -14
  35. package/dist/{chunk-WCJGTLPF.js → chunk-BHVFTYSI.js} +6 -3
  36. package/dist/{chunk-IO7ZIDRP.js → chunk-BT27OYYX.js} +53 -12
  37. package/dist/{chunk-KFH6UD26.js → chunk-BYK73CR7.js} +4 -4
  38. package/dist/{chunk-L3JSAB4L.js → chunk-CLOH4LIB.js} +3 -3
  39. package/dist/{chunk-R7UDXKI3.js → chunk-DF2BHILQ.js} +3 -3
  40. package/dist/{chunk-246MOR5U.js → chunk-DKSDVDXG.js} +175 -162
  41. package/dist/{chunk-35RSNI77.js → chunk-F26LCYRY.js} +42 -34
  42. package/dist/{chunk-5Z63TBTX.js → chunk-FH7WODJH.js} +1 -1
  43. package/dist/{chunk-NORZWWLK.js → chunk-FVYXDXEV.js} +2 -2
  44. package/dist/{chunk-YURXPGAM.js → chunk-GNBGPUJ7.js} +6 -8
  45. package/dist/{chunk-RVCWIIZ7.js → chunk-GV5R5B7Q.js} +1 -1
  46. package/dist/{chunk-GS6FE3IW.js → chunk-HC7EVDEL.js} +1 -1
  47. package/dist/{chunk-K2GOFLTX.js → chunk-HLYOEIWM.js} +14 -6
  48. package/dist/{chunk-XDSOIJC3.js → chunk-HMT2RPZU.js} +6 -6
  49. package/dist/{chunk-IKVBTDLO.js → chunk-HW4AKJ5F.js} +1 -1
  50. package/dist/{chunk-OLDDJS3S.js → chunk-I7QGQAZM.js} +8 -8
  51. package/dist/{chunk-JFKL3WAE.js → chunk-IWFLMU2N.js} +104 -19
  52. package/dist/{chunk-IHFUKJOR.js → chunk-K2FLNJVB.js} +8 -2
  53. package/dist/chunk-KJJLA674.js +121 -0
  54. package/dist/{chunk-XWVGSEUT.js → chunk-KO5QBV73.js} +1 -1
  55. package/dist/{chunk-INI3TM6I.js → chunk-KQLGTGE5.js} +3 -3
  56. package/dist/{chunk-E4BSCXMU.js → chunk-LVX6NK36.js} +3 -3
  57. package/dist/{chunk-BM5PX3DJ.js → chunk-LW6HO6U3.js} +4 -4
  58. package/dist/{chunk-OZUQF4NB.js → chunk-MQZVBHEY.js} +123 -8
  59. package/dist/{chunk-IV7EI5E2.js → chunk-N3DQEVSI.js} +2 -2
  60. package/dist/{chunk-A4KQZXZI.js → chunk-NE55C6S5.js} +4 -2
  61. package/dist/{chunk-EDYBFSPE.js → chunk-OBXQRJWQ.js} +7 -10
  62. package/dist/{chunk-RCFCZT5O.js → chunk-OSSHSIMD.js} +1 -1
  63. package/dist/chunk-P36MALQF.js +15 -0
  64. package/dist/{chunk-EKA4ZZBI.js → chunk-P7THMINS.js} +3 -3
  65. package/dist/{chunk-3NBKW2QJ.js → chunk-PAGIICKN.js} +2 -2
  66. package/dist/{chunk-O3SKIXQK.js → chunk-PJU63L6W.js} +1 -1
  67. package/dist/{chunk-RPYPW5NN.js → chunk-POLR33RB.js} +20 -13
  68. package/dist/{chunk-7M4KAPAA.js → chunk-PUGIRFPX.js} +2 -2
  69. package/dist/{chunk-7XTZVLE6.js → chunk-QFN7NVWM.js} +1 -1
  70. package/dist/{chunk-D2KNWIQ6.js → chunk-QFSCCQIR.js} +1 -1
  71. package/dist/{chunk-J5IPIQU2.js → chunk-QRKLPWEX.js} +1 -1
  72. package/dist/{chunk-N77KD7ZZ.js → chunk-QVYVUCWD.js} +1 -1
  73. package/dist/{chunk-GK4AIFIH.js → chunk-SDYDNHEE.js} +34 -3
  74. package/dist/{chunk-2NCHQUPX.js → chunk-SQLK7SJL.js} +1 -1
  75. package/dist/{chunk-PMRBLBUP.js → chunk-T42U2W2R.js} +14 -2
  76. package/dist/{chunk-Q65ZQFF2.js → chunk-TAMQYQGJ.js} +1 -1
  77. package/dist/{chunk-PXSM4HPB.js → chunk-U3X3TPBW.js} +1 -1
  78. package/dist/{chunk-3A5AAPMP.js → chunk-UICWP23D.js} +1 -1
  79. package/dist/{chunk-A7YQNIQT.js → chunk-UM2GRYM3.js} +113 -10
  80. package/dist/{chunk-TC2FBZJZ.js → chunk-VIVBA6E6.js} +2 -2
  81. package/dist/{chunk-W6HTOVHU.js → chunk-W35EKBS6.js} +2 -2
  82. package/dist/{chunk-YEIFI443.js → chunk-WPNE5NEP.js} +1 -1
  83. package/dist/{chunk-WY5OODN5.js → chunk-XONFUK3M.js} +3693 -28
  84. package/dist/{chunk-IYFKBFTW.js → chunk-Y6QL2LGO.js} +8 -5
  85. package/dist/{chunk-THXFSPLV.js → chunk-ZIRIDSDB.js} +1 -1
  86. package/dist/chunk-ZLW2V65P.js +209 -0
  87. package/dist/{chunk-4BB7V6AI.js → chunk-ZQQ3SEIE.js} +33 -32
  88. package/dist/{clean-L2E4VD57.js → clean-YHGPY33K.js} +23 -23
  89. package/dist/cli.js +57 -159
  90. package/dist/{cloud-IDUQRYLO.js → cloud-DOFI5ISR.js} +4 -4
  91. package/dist/{cloudrun-R3JXWXGG.js → cloudrun-KTZ4XDHL.js} +13 -12
  92. package/dist/commands/contrast-audit.browser.js +60 -4
  93. package/dist/commands/layout-audit.browser.js +88 -20
  94. package/dist/{compare-VYBWSP3Y.js → compare-SMMIZN2C.js} +37 -37
  95. package/dist/{compiler-ACHWOU5N.js → compiler-TEXQWW6N.js} +14 -11
  96. package/dist/{component-PYYV2V3F.js → component-B3GCNGSS.js} +5 -5
  97. package/dist/{compositions-B5GQSXH7.js → compositions-OQNZZTKF.js} +38 -34
  98. package/dist/{delete-EAX2U3WI.js → delete-EL5LVSEP.js} +6 -6
  99. package/dist/{deterministicFonts-F6WIVL2W.js → deterministicFonts-U2BIMGPG.js} +3 -3
  100. package/dist/{dist-NZSQCYOF.js → dist-5UVIRMSM.js} +7 -7
  101. package/dist/{dist-ROUDWGLO.js → dist-XN234YFQ.js} +41 -39
  102. package/dist/{doctor-PJX7MLFG.js → doctor-UOL3OI2A.js} +17 -17
  103. package/dist/{dom-IROKGVJI.js → dom-37K6YOH4.js} +2 -2
  104. package/dist/{events-SBC54MHO.js → events-K2DB2PBC.js} +2 -2
  105. package/dist/{events-YFFXKAQQ.js → events-NIZBS6S7.js} +3 -3
  106. package/dist/{feedback-UETLWREV.js → feedback-QMP4E6L7.js} +16 -15
  107. package/dist/{figma-QDSJPIRW.js → figma-2AUJRNVC.js} +3 -3
  108. package/dist/fontLocalizeCli.js +18 -18
  109. package/dist/{get-B5TS6C7H.js → get-P5NC7SRM.js} +6 -6
  110. package/dist/{gpuPolicy-LYOVBAJP.js → gpuPolicy-7N5MCE2G.js} +15 -15
  111. package/dist/{grade-compare-LBIHMAUN.js → grade-compare-HV5AFZ6P.js} +37 -37
  112. package/dist/{help-XBP6A6LT.js → help-3TSTXBLN.js} +1 -1
  113. package/dist/{history-2S42ZXKL.js → history-D65XFJ6D.js} +6 -6
  114. package/dist/hyperframe-runtime.js +25 -25
  115. package/dist/hyperframe.manifest.json +1 -1
  116. package/dist/hyperframe.runtime.iife.js +25 -25
  117. package/dist/hyperframes-player.global.js +3 -3
  118. package/dist/hyperframes-slideshow.global.js +23 -23
  119. package/dist/{info-I2VDAWT7.js → info-TXV7MLFO.js} +17 -16
  120. package/dist/{init-BGHSDODI.js → init-OSDMJZJV.js} +38 -38
  121. package/dist/{inspect-MZK5B5RP.js → inspect-RQQSAYIJ.js} +38 -38
  122. package/dist/{installer-LL4QAKFW.js → installer-CDOB32HE.js} +11 -10
  123. package/dist/{keyframes-2EBF7OSS.js → keyframes-V75Q6GRM.js} +10 -10
  124. package/dist/{lambda-XKFPAOFE.js → lambda-RODV4RCX.js} +12 -11
  125. package/dist/{layout-TP5ERKEF.js → layout-IZAI5SFC.js} +38 -38
  126. package/dist/{lint-FQ6CEI7E.js → lint-PLXOXY5R.js} +14 -14
  127. package/dist/{lintProject-LM3XZRPZ.js → lintProject-OQ6H6XBR.js} +7 -7
  128. package/dist/{list-FRNUJXZ3.js → list-BQBPNKDZ.js} +7 -7
  129. package/dist/{login-C25QU3BQ.js → login-NP6F4FHC.js} +20 -24
  130. package/dist/{logout-GJXZQKOA.js → logout-B4KS4A7S.js} +6 -6
  131. package/dist/{manager-DXB7JDHU.js → manager-GXYF4AVO.js} +2 -2
  132. package/dist/{manager-524RPYO7.js → manager-RFZNG5YT.js} +2 -2
  133. package/dist/{media-treatment-DCANGWSV.js → media-treatment-PXGMZ4A4.js} +55 -34
  134. package/dist/{models-GOD6ARB3.js → models-CEZM6XZ7.js} +17 -17
  135. package/dist/{motionShot-FSKETANX.js → motionShot-R4GHYWYM.js} +25 -25
  136. package/dist/{normalize-IGLHCWTF.js → normalize-H6KUHHEI.js} +18 -7
  137. package/dist/{normalize-audio-C2IM7OID.js → normalize-audio-MQ7NFCOV.js} +10 -6
  138. package/dist/{open-VVISXIII.js → open-AKQTGNXF.js} +5 -5
  139. package/dist/{pipeline-7YHZPYIS.js → pipeline-SYJYP2RM.js} +17 -17
  140. package/dist/{play-DSELK7G3.js → play-NBH4B7PL.js} +31 -30
  141. package/dist/{present-N72YFDKP.js → present-XAX55CFS.js} +26 -26
  142. package/dist/{preview-XTYN4NJ2.js → preview-OLANKNFA.js} +26 -26
  143. package/dist/{producer-NDCU3MHK.js → producer-Q6YNZZUJ.js} +1 -1
  144. package/dist/{projectConfig-MH4QU4AC.js → projectConfig-EM26P45P.js} +13 -12
  145. package/dist/{publication-KUSHI5MG.js → publication-OXWJZKSX.js} +8 -7
  146. package/dist/{publish-3XEEFWMF.js → publish-4VBWP2UB.js} +23 -22
  147. package/dist/{refresh-MFITBIKV.js → refresh-PVHBEABE.js} +2 -2
  148. package/dist/{remove-background-2QKJ7XOD.js → remove-background-REB7427G.js} +19 -19
  149. package/dist/{render-75E342ZU.js → render-3CVZ2SZG.js} +13 -12
  150. package/dist/{render-S73DW4KK.js → render-K25YOG3M.js} +22 -21
  151. package/dist/{render-2DVYTVLQ.js → render-TSE75QUL.js} +35 -35
  152. package/dist/{render-batch-YURBS54Q.js → render-batch-GGUOK3DS.js} +13 -12
  153. package/dist/{renderCancellation-373ASJTO.js → renderCancellation-PZRWB53I.js} +15 -15
  154. package/dist/renderSetupWorker.js +7 -7
  155. package/dist/{resolver-FE3GBZ4T.js → resolver-S5VK6UCB.js} +10 -9
  156. package/dist/{screenshotCapture-ECBTLCU6.js → screenshotCapture-TEUIWXWN.js} +53 -33
  157. package/dist/{sherpa-B2D3AGP6.js → sherpa-LVIUEAGF.js} +18 -18
  158. package/dist/skills/hyperframes-cli/references/cloud.md +1 -1
  159. package/dist/skills/hyperframes-cli/references/doctor-browser.md +24 -1
  160. package/dist/skills/media-use/references/grading.md +4 -2
  161. package/dist/skills/media-use/scripts/lib/cache.mjs +28 -14
  162. package/dist/skills/media-use/scripts/lib/cache.test.mjs +110 -0
  163. package/dist/skills/media-use/scripts/lib/duck.mjs +2 -1
  164. package/dist/skills/media-use/scripts/lib/duck.test.mjs +87 -0
  165. package/dist/skills/media-use/scripts/lib/probe.mjs +6 -1
  166. package/dist/skills/media-use/scripts/lib/probe.test.mjs +73 -0
  167. package/dist/skills/media-use/scripts/lib/words.mjs +1 -1
  168. package/dist/{skills-ICJ22CZZ.js → skills-I65FU5HD.js} +5 -5
  169. package/dist/{skillsUpdateCheck-GXZN56I5.js → skillsUpdateCheck-J57RNNIV.js} +3 -3
  170. package/dist/{slideshow-EJ4IMY6P.js → slideshow-4OJEPWNZ.js} +1 -1
  171. package/dist/{snapshot-XHKOAWF4.js → snapshot-YROOGY22.js} +42 -39
  172. package/dist/{src-I7UC3JTL.js → src-JO5JOV7Y.js} +16 -14
  173. package/dist/{src-74PFDTDX.js → src-X426BZAG.js} +17 -17
  174. package/dist/{staticProjectServer-2DGKD6TF.js → staticProjectServer-5VMBS262.js} +23 -23
  175. package/dist/{status-JA6SKQVH.js → status-LXPGSSKY.js} +6 -4
  176. package/dist/studio/assets/{hyperframes-player-5Vx2AiUz.js → hyperframes-player-BXSuksFh.js} +3 -3
  177. package/dist/studio/assets/{index-BAnh7cSQ.js → index-BgOVCqjo.js} +1 -1
  178. package/dist/studio/assets/{index-P8fgj_Xa.js → index-FgyO_5Kv.js} +1 -1
  179. package/dist/studio/assets/{index-C0thd4eM.js → index-J7jpL4pj.js} +157 -157
  180. package/dist/studio/index.html +1 -1
  181. package/dist/studio/index.js +148 -175
  182. package/dist/studio/index.js.map +1 -1
  183. package/dist/{studio-api-PROBO7JG.js → studio-api-VRBZUGAE.js} +22 -18
  184. package/dist/{studioServer-ID6UV2NE.js → studioServer-DBNKZ6I6.js} +50 -50
  185. package/dist/{synthesize-77PTU6C5.js → synthesize-C3IWDAXF.js} +2 -2
  186. package/dist/{telemetry-65LFHIWH.js → telemetry-CXAX3TO3.js} +3 -3
  187. package/dist/{timeline-6UV3JJXD.js → timeline-VQ34WH7J.js} +91 -70
  188. package/dist/{tokens-HIL4TZXI.js → tokens-62R7VFAZ.js} +4 -4
  189. package/dist/{transcribe-TIO6W3EQ.js → transcribe-7KR7IPJA.js} +18 -18
  190. package/dist/{transcribe-V7F6QDSN.js → transcribe-XOHPPL2O.js} +11 -11
  191. package/dist/{tts-TOHSPWEG.js → tts-MUV42JXT.js} +6 -6
  192. package/dist/{updateCheck-GZELANMA.js → updateCheck-POYNH3B5.js} +2 -2
  193. package/dist/{upgrade-BX3KDDZJ.js → upgrade-NBNOT7J2.js} +2 -2
  194. package/dist/{urlDownloader-R76OHFIE.js → urlDownloader-3NS63A7B.js} +14 -14
  195. package/dist/{validate-7UX4I443.js → validate-Y2QDHAEP.js} +40 -28
  196. package/dist/{video-RVGYEFQU.js → video-SJDMTSTL.js} +15 -15
  197. package/package.json +1 -1
  198. package/dist/chunk-24OWOBQH.js +0 -3656
  199. package/dist/chunk-SYKKFAUW.js +0 -3711
  200. /package/dist/{chunk-HBBJFK6I.js → chunk-APDLWWFG.js} +0 -0
@@ -9,13 +9,13 @@ import {
9
9
  } from "./chunk-6IHWCZ3W.js";
10
10
  import {
11
11
  stoppedByCancelSignal
12
- } from "./chunk-3A5AAPMP.js";
12
+ } from "./chunk-UICWP23D.js";
13
13
  import {
14
14
  DEFAULT_MODEL,
15
15
  ensureModel,
16
16
  ensureWhisper,
17
17
  hasFFmpeg
18
- } from "./chunk-PXSM4HPB.js";
18
+ } from "./chunk-U3X3TPBW.js";
19
19
  import {
20
20
  findFFmpeg,
21
21
  findFFprobe,
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseHTML
9
- } from "./chunk-GK4AIFIH.js";
9
+ } from "./chunk-SDYDNHEE.js";
10
10
 
11
11
  // ../parsers/dist/hfIds.js
12
12
  var EXCLUDED_TAGS = /* @__PURE__ */ new Set([
@@ -101,7 +101,9 @@ function assignHfIds(body) {
101
101
  });
102
102
  }
103
103
  function ensureHfIds(html) {
104
- const wrapped = !/<!doctype|<html[\s>]/i.test(html);
104
+ const wrapped = !/^(?:<!doctype|<html[\s>/])/i.test(
105
+ html.replace(/^(?:\s|<!--(?:>|->|[\s\S]*?-->))*/, "")
106
+ );
105
107
  const { document } = wrapped ? parseHTML(`<!DOCTYPE html><html><head></head><body>${html}</body></html>`) : parseHTML(html);
106
108
  if (!document.body) return html;
107
109
  assignHfIds(document.body);
@@ -6,21 +6,22 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  refreshIfNeeded
9
- } from "./chunk-BRITLL56.js";
9
+ } from "./chunk-B4P5VDFQ.js";
10
10
  import {
11
11
  buildAuthHeaders,
12
+ envCredentialVar,
12
13
  isAuthError,
13
14
  isTokenExpired,
14
15
  tryResolveCredential
15
- } from "./chunk-246MOR5U.js";
16
+ } from "./chunk-DKSDVDXG.js";
16
17
  import {
17
18
  CSS_URL_RE,
18
19
  isNonRelativeUrl,
19
20
  isPathInside
20
- } from "./chunk-TQFG7HTI.js";
21
+ } from "./chunk-ZLW2V65P.js";
21
22
  import {
22
23
  parseHTML
23
- } from "./chunk-GK4AIFIH.js";
24
+ } from "./chunk-SDYDNHEE.js";
24
25
 
25
26
  // src/utils/projectLink.ts
26
27
  import { randomUUID } from "crypto";
@@ -204,12 +205,9 @@ async function metadataRequestError(response, fallback) {
204
205
  }
205
206
  var LOGIN_EXPIRED = "Your login expired. Run hyperframes auth login, then publish again.";
206
207
  var LOGIN_CHANGED = "Your login changed during publish. Run publish again.";
207
- var API_KEY_ENV_VAR = { env: "HEYGEN_API_KEY", env_alias: "HYPERFRAMES_API_KEY" };
208
208
  function rejectedCredentialMessage(credential) {
209
- if (credential.type === "api_key" && (credential.source === "env" || credential.source === "env_alias")) {
210
- return `${API_KEY_ENV_VAR[credential.source]} was rejected. Fix or unset it, then publish again.`;
211
- }
212
- return LOGIN_EXPIRED;
209
+ const envVar = envCredentialVar(credential.source);
210
+ return envVar ? `${envVar} was rejected. Fix or unset it, then publish again.` : LOGIN_EXPIRED;
213
211
  }
214
212
  async function resolvePublishCredential(checked) {
215
213
  try {
@@ -637,7 +635,6 @@ export {
637
635
  ensureProjectId,
638
636
  readTeamProject,
639
637
  writeTeamProject,
640
- API_KEY_ENV_VAR,
641
638
  resolvePublishCredential,
642
639
  rewriteHtmlAttributes,
643
640
  buildPublishFileMap,
@@ -34,7 +34,7 @@ import {
34
34
  } from "./chunk-XUXGIA7H.js";
35
35
  import {
36
36
  VERSION
37
- } from "./chunk-W6HTOVHU.js";
37
+ } from "./chunk-W35EKBS6.js";
38
38
  import {
39
39
  c
40
40
  } from "./chunk-ZTZA4UWZ.js";
@@ -0,0 +1,15 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+
8
+ // src/capture/types.ts
9
+ var DEFAULT_MAX_SCREENSHOTS = 21;
10
+ var CAPTURE_PHASE_SCHEMA = "hyperframes.capture.phase.v1";
11
+
12
+ export {
13
+ DEFAULT_MAX_SCREENSHOTS,
14
+ CAPTURE_PHASE_SCHEMA
15
+ };
@@ -6,16 +6,16 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  readCompositionFps
9
- } from "./chunk-YEIFI443.js";
9
+ } from "./chunk-WPNE5NEP.js";
10
10
  import {
11
11
  errorBox
12
- } from "./chunk-IHFUKJOR.js";
12
+ } from "./chunk-K2FLNJVB.js";
13
13
  import {
14
14
  failUsage
15
15
  } from "./chunk-PBN6GBJE.js";
16
16
  import {
17
17
  parseFps
18
- } from "./chunk-6E6CM7WS.js";
18
+ } from "./chunk-4M4EC7JX.js";
19
19
 
20
20
  // src/browser/windowsCrash.ts
21
21
  var STATUS_STACK_BUFFER_OVERRUN_DEC = "3221225595";
@@ -14,11 +14,11 @@ import {
14
14
  } from "./chunk-AWDFDFI3.js";
15
15
  import {
16
16
  isBlockedNetworkHost
17
- } from "./chunk-E6SDW5FV.js";
17
+ } from "./chunk-33RZPZ4K.js";
18
18
  import {
19
19
  DOMParser,
20
20
  parseHTML
21
- } from "./chunk-GK4AIFIH.js";
21
+ } from "./chunk-SDYDNHEE.js";
22
22
 
23
23
  // src/capture/userAgent.ts
24
24
  var CAPTURE_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveCaptureBrowserGpuMode
9
- } from "./chunk-J5IPIQU2.js";
9
+ } from "./chunk-QRKLPWEX.js";
10
10
  import {
11
11
  requestCliExit
12
12
  } from "./chunk-PBN6GBJE.js";
@@ -6,20 +6,20 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-TC2FBZJZ.js";
9
+ } from "./chunk-VIVBA6E6.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-XDSOIJC3.js";
15
+ } from "./chunk-HMT2RPZU.js";
16
16
  import {
17
17
  resolveCompositionViewportFromHtml
18
- } from "./chunk-5Z63TBTX.js";
18
+ } from "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  launchManagedBrowser,
21
21
  resolveManagedGpuMode
22
- } from "./chunk-O3SKIXQK.js";
22
+ } from "./chunk-PJU63L6W.js";
23
23
  import {
24
24
  defineCommand
25
25
  } from "./chunk-S3S4TGEH.js";
@@ -27,10 +27,13 @@ import {
27
27
  failCommand,
28
28
  setCommandExitCode
29
29
  } from "./chunk-PBN6GBJE.js";
30
+ import {
31
+ decodeWellFormedEscapes
32
+ } from "./chunk-ZLW2V65P.js";
30
33
  import {
31
34
  printDeprecationNotice,
32
35
  withMeta
33
- } from "./chunk-IYFKBFTW.js";
36
+ } from "./chunk-Y6QL2LGO.js";
34
37
  import {
35
38
  normalizeErrorMessage
36
39
  } from "./chunk-KNU5COPB.js";
@@ -70,6 +73,9 @@ function shouldIgnoreRequestFailure(url, errorText, resourceType) {
70
73
  return false;
71
74
  }
72
75
  }
76
+ function projectPathOfUrl(url) {
77
+ return decodeWellFormedEscapes(new URL(url).pathname).replace(/^\//, "");
78
+ }
73
79
  function shouldIgnoreHttpError(url, status) {
74
80
  return status === 404 && isOptionalCaptionOverridesRequest(url);
75
81
  }
@@ -222,7 +228,7 @@ function extractCompositionErrorsFromLint(lintResult) {
222
228
  async function localizeRemoteAssets(html) {
223
229
  let dir;
224
230
  try {
225
- const { loadProducer } = await import("./producer-NDCU3MHK.js");
231
+ const { loadProducer } = await import("./producer-Q6YNZZUJ.js");
226
232
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
227
233
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
228
234
  const assetDir = dir;
@@ -243,10 +249,10 @@ async function localizeRemoteAssets(html) {
243
249
  }
244
250
  async function validateInBrowser(project, opts) {
245
251
  const projectDir = project.dir;
246
- const { bundleToSingleHtml } = await import("./compiler-ACHWOU5N.js");
252
+ const { bundleToSingleHtml } = await import("./compiler-TEXQWW6N.js");
247
253
  const { ensureBrowser } = await import("./manager-CT3D67CG.js");
248
- const { serveStaticProjectHtml } = await import("./staticProjectServer-2DGKD6TF.js");
249
- const { lintProject } = await import("./lintProject-LM3XZRPZ.js");
254
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-5VMBS262.js");
255
+ const { lintProject } = await import("./lintProject-OQ6H6XBR.js");
250
256
  const lintResult = await lintProject(projectDir);
251
257
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
252
258
  const html = await bundleToSingleHtml(projectDir);
@@ -267,9 +273,9 @@ async function validateInBrowser(project, opts) {
267
273
  try {
268
274
  const browser = await ensureBrowser();
269
275
  const puppeteer = await import("puppeteer-core");
270
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-I7UC3JTL.js");
276
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-JO5JOV7Y.js");
271
277
  const requestedGpuMode = resolveCliChromeGpuMode();
272
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu } = await import("./gpuPolicy-LYOVBAJP.js");
278
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu } = await import("./gpuPolicy-7N5MCE2G.js");
273
279
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
274
280
  const requiresWebGpu = compositionRequiresWebGpu(html);
275
281
  const chromeBrowser = await launchManagedBrowser(puppeteer.default, {
@@ -304,7 +310,7 @@ async function validateInBrowser(project, opts) {
304
310
  if (url.includes("favicon") || url.startsWith("data:")) return;
305
311
  const failureText = req.failure()?.errorText;
306
312
  if (shouldIgnoreRequestFailure(url, failureText, req.resourceType())) return;
307
- const path = decodeURIComponent(new URL(url).pathname).replace(/^\//, "");
313
+ const path = projectPathOfUrl(url);
308
314
  errors.push({
309
315
  level: "error",
310
316
  text: `Failed to load ${path}: ${failureText ?? "net::ERR_FAILED"}`,
@@ -316,7 +322,7 @@ async function validateInBrowser(project, opts) {
316
322
  const url = res.url();
317
323
  if (url.includes("favicon")) return;
318
324
  if (shouldIgnoreHttpError(url, res.status())) return;
319
- const path = decodeURIComponent(new URL(url).pathname).replace(/^\//, "");
325
+ const path = projectPathOfUrl(url);
320
326
  errors.push({ level: "error", text: `${res.status()} loading ${path}`, url });
321
327
  }
322
328
  });
@@ -469,6 +475,7 @@ export {
469
475
  resolveNavigationTimeoutMs,
470
476
  navigationTimeoutHint,
471
477
  shouldIgnoreRequestFailure,
478
+ projectPathOfUrl,
472
479
  shouldIgnoreHttpError,
473
480
  raceMediaReady,
474
481
  auditClipDurations,
@@ -14,10 +14,10 @@ import {
14
14
  import {
15
15
  FONT_ALIAS_MAP,
16
16
  resolveAliasDisplayName
17
- } from "./chunk-OZUQF4NB.js";
17
+ } from "./chunk-MQZVBHEY.js";
18
18
  import {
19
19
  parseHTML
20
- } from "./chunk-GK4AIFIH.js";
20
+ } from "./chunk-SDYDNHEE.js";
21
21
  import {
22
22
  __commonJS,
23
23
  __require,
@@ -8,7 +8,7 @@ import {
8
8
  flush,
9
9
  shouldTrack,
10
10
  trackEvent
11
- } from "./chunk-RCFCZT5O.js";
11
+ } from "./chunk-OSSHSIMD.js";
12
12
  import {
13
13
  getPowerState
14
14
  } from "./chunk-GQJZORQP.js";
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VALID_CANVAS_RESOLUTIONS,
9
9
  resolveResolutionFlagPair
10
- } from "./chunk-OZUQF4NB.js";
10
+ } from "./chunk-MQZVBHEY.js";
11
11
 
12
12
  // src/utils/parseOutputResolution.ts
13
13
  function parseOutputResolutionFlag(raw, options) {
@@ -13,7 +13,7 @@ function resolveLocalBrowserGpuMode(browserGpuArg, envMode = process.env.PRODUCE
13
13
  return "auto";
14
14
  }
15
15
  async function resolveCaptureBrowserGpuMode(requestedMode, chromePath) {
16
- const { resolveBrowserGpuMode } = await import("./src-I7UC3JTL.js");
16
+ const { resolveBrowserGpuMode } = await import("./src-JO5JOV7Y.js");
17
17
  return resolveBrowserGpuMode(requestedMode, { chromePath });
18
18
  }
19
19
 
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/utils/producer.ts
9
9
  async function loadProducer() {
10
- return await import("./src-74PFDTDX.js");
10
+ return await import("./src-X426BZAG.js");
11
11
  }
12
12
 
13
13
  export {
@@ -2012,6 +2012,32 @@ var EntityDecoder = class {
2012
2012
  }
2013
2013
  }
2014
2014
  };
2015
+ function getDecoder(decodeTree) {
2016
+ let returnValue = "";
2017
+ const decoder = new EntityDecoder(decodeTree, (data) => returnValue += fromCodePoint(data));
2018
+ return function decodeWithTrie(input, decodeMode) {
2019
+ let lastIndex = 0;
2020
+ let offset = 0;
2021
+ while ((offset = input.indexOf("&", offset)) >= 0) {
2022
+ returnValue += input.slice(lastIndex, offset);
2023
+ decoder.startEntity(decodeMode);
2024
+ const length = decoder.write(
2025
+ input,
2026
+ // Skip the "&"
2027
+ offset + 1
2028
+ );
2029
+ if (length < 0) {
2030
+ lastIndex = offset + decoder.end();
2031
+ break;
2032
+ }
2033
+ lastIndex = offset + length;
2034
+ offset = length === 0 ? lastIndex + 1 : lastIndex;
2035
+ }
2036
+ const result = returnValue + input.slice(lastIndex);
2037
+ returnValue = "";
2038
+ return result;
2039
+ };
2040
+ }
2015
2041
  function determineBranch(decodeTree, current, nodeIndex, char) {
2016
2042
  const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
2017
2043
  const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
@@ -2040,6 +2066,10 @@ function determineBranch(decodeTree, current, nodeIndex, char) {
2040
2066
  }
2041
2067
  return -1;
2042
2068
  }
2069
+ var htmlDecoder = /* @__PURE__ */ getDecoder(htmlDecodeTree);
2070
+ function decodeHTMLAttribute(htmlAttribute) {
2071
+ return htmlDecoder(htmlAttribute, DecodingMode.Attribute);
2072
+ }
2043
2073
 
2044
2074
  // ../../node_modules/.bun/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/Tokenizer.js
2045
2075
  var CharCodes2;
@@ -4072,7 +4102,7 @@ var EntityDecoder2 = class {
4072
4102
  }
4073
4103
  }
4074
4104
  };
4075
- function getDecoder(decodeTree) {
4105
+ function getDecoder2(decodeTree) {
4076
4106
  let ret = "";
4077
4107
  const decoder = new EntityDecoder2(decodeTree, (str) => ret += fromCodePoint2(str));
4078
4108
  return function decodeWithTrie(str, decodeMode) {
@@ -4123,8 +4153,8 @@ function determineBranch2(decodeTree, current, nodeIdx, char) {
4123
4153
  }
4124
4154
  return -1;
4125
4155
  }
4126
- var htmlDecoder = getDecoder(decode_data_html_default);
4127
- var xmlDecoder = getDecoder(decode_data_xml_default);
4156
+ var htmlDecoder2 = getDecoder2(decode_data_html_default);
4157
+ var xmlDecoder = getDecoder2(decode_data_xml_default);
4128
4158
 
4129
4159
  // ../../node_modules/.bun/entities@4.5.0/node_modules/entities/lib/esm/generated/encode-html.js
4130
4160
  function restoreDiff(arr) {
@@ -11165,6 +11195,7 @@ function Document4() {
11165
11195
  setPrototypeOf(Document4, Document2).prototype = Document2.prototype;
11166
11196
 
11167
11197
  export {
11198
+ decodeHTMLAttribute,
11168
11199
  Parser,
11169
11200
  DOMParser,
11170
11201
  parseHTML
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  downloadFile
9
- } from "./chunk-WCJGTLPF.js";
9
+ } from "./chunk-BHVFTYSI.js";
10
10
 
11
11
  // src/background-removal/manager.ts
12
12
  import { existsSync, mkdirSync } from "fs";
@@ -30,12 +30,24 @@ function isOptionalNumberArray(v) {
30
30
  function isOptionalBoolean(v) {
31
31
  return v === void 0 || typeof v === "boolean";
32
32
  }
33
+ function isRecord(v) {
34
+ return typeof v === "object" && v !== null && !Array.isArray(v);
35
+ }
36
+ function isHotspotRegion(v) {
37
+ return isRecord(v) && [v["x"], v["y"], v["w"], v["h"]].every(
38
+ (coordinate) => typeof coordinate === "number" && Number.isFinite(coordinate)
39
+ );
40
+ }
41
+ function isSlideHotspot(v) {
42
+ return isRecord(v) && typeof v["id"] === "string" && typeof v["label"] === "string" && typeof v["target"] === "string" && (v["region"] === void 0 || isHotspotRegion(v["region"]));
43
+ }
33
44
  function isSlideRef(v) {
34
- if (typeof v !== "object" || v === null) return false;
45
+ if (!isRecord(v)) return false;
35
46
  const r = v;
36
47
  if (typeof r["sceneId"] !== "string") return false;
37
48
  if (!isOptionalNumberArray(r["fragments"])) return false;
38
- if (r["hotspots"] !== void 0 && !Array.isArray(r["hotspots"])) return false;
49
+ if (r["hotspots"] !== void 0 && (!Array.isArray(r["hotspots"]) || !r["hotspots"].every(isSlideHotspot)))
50
+ return false;
39
51
  if (!isOptionalBoolean(r["autoplay"])) return false;
40
52
  return true;
41
53
  }
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-GMECXFAN.js";
28
28
  import {
29
29
  ITEM_TYPE_DIRS
30
- } from "./chunk-6E6CM7WS.js";
30
+ } from "./chunk-4M4EC7JX.js";
31
31
  import {
32
32
  realProjectRoot
33
33
  } from "./chunk-OFQWTKPW.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  downloadFile
9
- } from "./chunk-WCJGTLPF.js";
9
+ } from "./chunk-BHVFTYSI.js";
10
10
  import {
11
11
  findFFmpeg
12
12
  } from "./chunk-TVCRUG2S.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  setHostHandlesSigint
9
- } from "./chunk-E6SDW5FV.js";
9
+ } from "./chunk-33RZPZ4K.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
@@ -9,32 +9,133 @@ import {
9
9
  ensureHfIds,
10
10
  mintHfId,
11
11
  walkCompositionDescendants
12
- } from "./chunk-A4KQZXZI.js";
12
+ } from "./chunk-NE55C6S5.js";
13
13
  import {
14
14
  isAllowedHtmlAttribute,
15
15
  isSafeAttributeValue,
16
16
  sanitizeRichTextChildren
17
- } from "./chunk-6E6CM7WS.js";
17
+ } from "./chunk-4M4EC7JX.js";
18
18
  import {
19
+ decodedUrlPath,
19
20
  removeElementWithGsapCascade
20
- } from "./chunk-OZUQF4NB.js";
21
+ } from "./chunk-MQZVBHEY.js";
21
22
  import {
22
23
  require_dist
23
- } from "./chunk-24OWOBQH.js";
24
+ } from "./chunk-XONFUK3M.js";
24
25
  import {
25
26
  readClipTiming,
26
- readMediaOffsetSeconds,
27
- readPlaybackRate,
28
27
  writeClipTiming
29
- } from "./chunk-TQFG7HTI.js";
28
+ } from "./chunk-3RM2ETQT.js";
29
+ import {
30
+ readMediaOffsetSeconds,
31
+ readPlaybackRate
32
+ } from "./chunk-ZLW2V65P.js";
30
33
  import {
31
34
  parseHTML
32
- } from "./chunk-GK4AIFIH.js";
35
+ } from "./chunk-SDYDNHEE.js";
33
36
  import {
34
37
  __toESM
35
38
  } from "./chunk-M2WBOQ2Q.js";
36
39
 
37
- // ../studio-server/dist/chunk-CLWFZQUU.js
40
+ // ../core/dist/timelineAssetId.js
41
+ function trimIdUnderscores(value) {
42
+ let start = 0;
43
+ let end = value.length;
44
+ while (value[start] === "_")
45
+ start += 1;
46
+ while (end > start && value[end - 1] === "_")
47
+ end -= 1;
48
+ return value.slice(start, end);
49
+ }
50
+ function buildTimelineAssetId(assetPath, existingIds) {
51
+ const baseName = assetPath.slice(assetPath.lastIndexOf("/") + 1);
52
+ const normalized = baseName.replace(/\.[^.]+$/, "").replace(/[^a-zA-Z0-9_-]+/g, "_").toLowerCase();
53
+ const baseId = trimIdUnderscores(normalized) || "asset";
54
+ const ids = new Set(existingIds);
55
+ if (!ids.has(baseId))
56
+ return baseId;
57
+ let suffix = 2;
58
+ while (ids.has(`${baseId}_${suffix}`))
59
+ suffix += 1;
60
+ return `${baseId}_${suffix}`;
61
+ }
62
+ function referenceChildren(element) {
63
+ if (element.children.length > 0)
64
+ return element.children;
65
+ if (element.tagName.toLowerCase() !== "template")
66
+ return [];
67
+ const content = element.content;
68
+ return content ? content.children : [];
69
+ }
70
+ function documentElements(document) {
71
+ const elements = [];
72
+ const visit = (element) => {
73
+ elements.push(element);
74
+ for (const child of referenceChildren(element))
75
+ visit(child);
76
+ };
77
+ if (document.documentElement)
78
+ visit(document.documentElement);
79
+ return elements;
80
+ }
81
+ function decodeIdEscape(original, hex) {
82
+ const codePoint = Number.parseInt(hex, 16);
83
+ return codePoint <= 1114111 ? String.fromCodePoint(codePoint) : original;
84
+ }
85
+ function referencesId(value, id) {
86
+ const decoded = value.replace(/\\x([0-9a-f]{2})/gi, (original, hex) => decodeIdEscape(original, hex)).replace(/\\u\{([0-9a-f]+)\}|\\u([0-9a-f]{4})/gi, (original, braced, fixed) => decodeIdEscape(original, braced ?? fixed)).replace(/\\([0-9a-f]{1,6})\s?/gi, (original, hex) => decodeIdEscape(original, hex)).replace(/\\([^\r\n])/g, "$1");
87
+ return decoded.includes(id);
88
+ }
89
+ function decodeFragment(value) {
90
+ const fragment = value.split("#").slice(1).join("#");
91
+ try {
92
+ return decodeURIComponent(fragment);
93
+ } catch {
94
+ return fragment;
95
+ }
96
+ }
97
+ function attributeReferencesId(attribute, id) {
98
+ if (["id", "data-hf-id"].includes(attribute.name))
99
+ return false;
100
+ if (attribute.name === "src")
101
+ return referencesId(decodeFragment(attribute.value), id);
102
+ return referencesId(attribute.value, id);
103
+ }
104
+ function elementReferencesId(element, id) {
105
+ const code = ["script", "style"].includes(element.tagName.toLowerCase());
106
+ if (code && referencesId(element.textContent ?? "", id))
107
+ return true;
108
+ return Array.from(element.attributes).some((attribute) => attributeReferencesId(attribute, id));
109
+ }
110
+ function readMediaIdentity(element) {
111
+ const media = ["video", "audio", "img"].includes(element.tagName.toLowerCase());
112
+ const src = element.getAttribute("src");
113
+ const id = element.getAttribute("id");
114
+ if (!media || !src || !id)
115
+ return null;
116
+ return { id, src };
117
+ }
118
+ function matchesGeneratedId({ id, src }) {
119
+ const base = buildTimelineAssetId(decodedUrlPath(src), []);
120
+ const suffix = id.slice(base.length);
121
+ return id === base || id.startsWith(base) && /^_(?:[2-9]\d*|1\d+)$/.test(suffix);
122
+ }
123
+ function canRenameMedia(element, identity, newSrc) {
124
+ const authored = ["data-timeline-label", "data-label", "aria-label"].some((name) => element.getAttribute(name)?.trim());
125
+ return !authored && identity.src !== newSrc && matchesGeneratedId(identity);
126
+ }
127
+ function replacementTimelineAssetId(document, element, newSrc) {
128
+ const identity = readMediaIdentity(element);
129
+ if (!identity || !canRenameMedia(element, identity, newSrc))
130
+ return null;
131
+ const elements = documentElements(document);
132
+ if (elements.some((other) => elementReferencesId(other, identity.id)))
133
+ return null;
134
+ const ids = elements.filter((other) => other !== element).map((other) => other.getAttribute("id")).filter((value) => value !== null);
135
+ return buildTimelineAssetId(decodedUrlPath(newSrc), ids);
136
+ }
137
+
138
+ // ../studio-server/dist/chunk-JJ4N3PXT.js
38
139
  var import_postcss_selector_parser = __toESM(require_dist(), 1);
39
140
  import postcss from "postcss";
40
141
 
@@ -148,7 +249,7 @@ function findSyncPartner(el) {
148
249
  return best?.el ?? null;
149
250
  }
150
251
 
151
- // ../studio-server/dist/chunk-CLWFZQUU.js
252
+ // ../studio-server/dist/chunk-JJ4N3PXT.js
152
253
  function parseStyleDecls(style) {
153
254
  const props = /* @__PURE__ */ new Map();
154
255
  const order = [];
@@ -373,6 +474,8 @@ function patchElementInHtml(source, target, operations, takenIds) {
373
474
  if (!isAllowedHtmlAttribute(op.property)) break;
374
475
  if (op.value != null) {
375
476
  if (!isSafeAttributeValue(op.property, op.value)) break;
477
+ const replacementId = op.property === "src" ? replacementTimelineAssetId(document, opTarget, op.value) : null;
478
+ if (replacementId !== null) opTarget.setAttribute("id", replacementId);
376
479
  opTarget.setAttribute(op.property, op.value);
377
480
  } else {
378
481
  opTarget.removeAttribute(op.property);
@@ -6,10 +6,10 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  errorBox
9
- } from "./chunk-IHFUKJOR.js";
9
+ } from "./chunk-K2FLNJVB.js";
10
10
  import {
11
11
  trackCommandFailure
12
- } from "./chunk-7XTZVLE6.js";
12
+ } from "./chunk-QFN7NVWM.js";
13
13
  import {
14
14
  failCommand
15
15
  } from "./chunk-PBN6GBJE.js";
@@ -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.141" : "0.0.0-dev";
10
- var PRODUCER_VERSION = true ? "0.8.141" : "0.0.0-dev";
9
+ var VERSION = true ? "0.8.143" : "0.0.0-dev";
10
+ var PRODUCER_VERSION = true ? "0.8.143" : "0.0.0-dev";
11
11
 
12
12
  export {
13
13
  VERSION,
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseHTML
9
- } from "./chunk-GK4AIFIH.js";
9
+ } from "./chunk-SDYDNHEE.js";
10
10
 
11
11
  // src/utils/compositionFps.ts
12
12
  import { readFileSync } from "fs";