hyperframes 0.8.106 → 0.8.108

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 (177) hide show
  1. package/dist/{add-QRAI4CAF.js → add-OH75E7FX.js} +16 -16
  2. package/dist/{animatedGifPrep-RZVYVAXD.js → animatedGifPrep-ZDAWSJYL.js} +7 -7
  3. package/dist/{asset-WFBQ5VS6.js → asset-BVDO4DEW.js} +2 -2
  4. package/dist/{assetCataloger-BQREHRS2.js → assetCataloger-FXEHOUA3.js} +3 -3
  5. package/dist/{auth-LVD6TWYG.js → auth-K5GUKO5S.js} +2 -2
  6. package/dist/{autoUpdate-HGE2PUZY.js → autoUpdate-77ROWK5G.js} +2 -2
  7. package/dist/{backgroundChecks-63CSE4XR.js → backgroundChecks-3Q3D5WBJ.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-AQN5PRXM.js → batchRender-ZTHFMHZY.js} +4 -4
  10. package/dist/{beats-OBCN5OSQ.js → beats-HQZPR6KE.js} +19 -13
  11. package/dist/{benchmark-DYHJSR7W.js → benchmark-BQOWARGU.js} +13 -13
  12. package/dist/{browser-JLYV5T7O.js → browser-45CK7HXI.js} +10 -10
  13. package/dist/{bundleWithLocalizedFonts-JKJKZR2S.js → bundleWithLocalizedFonts-3M2LKRHK.js} +2 -2
  14. package/dist/{capture-5BCJWVC7.js → capture-6IVZXM7G.js} +2 -2
  15. package/dist/{capture-QYLHIYKJ.js → capture-VGEUOP7N.js} +8 -8
  16. package/dist/{catalog-6UYNKENR.js → catalog-VHD7B6FD.js} +16 -16
  17. package/dist/{check-YOGAZ6UE.js → check-UPNZZJXV.js} +32 -31
  18. package/dist/{checkBrowser-M73YHPNM.js → checkBrowser-KWTHKOOP.js} +31 -30
  19. package/dist/{chunk-JYRPUDVZ.js → chunk-5N4KKGSZ.js} +1 -1
  20. package/dist/{normalize-audio-H3SI5V63.js → chunk-5ON5GH3X.js} +101 -209
  21. package/dist/{chunk-NRMYDPFQ.js → chunk-5R5UHSXN.js} +9 -9
  22. package/dist/{chunk-OSZJCBZX.js → chunk-AFGDOKRI.js} +7 -7
  23. package/dist/{chunk-6CN2QLB5.js → chunk-AWUZ3AUD.js} +1 -1
  24. package/dist/{chunk-TEXPOC5V.js → chunk-B25H4M4V.js} +2 -2
  25. package/dist/{chunk-JXXE3SWC.js → chunk-C6XQER6H.js} +28 -14
  26. package/dist/{chunk-Y2CZEJPK.js → chunk-CFC3EEDQ.js} +2 -2
  27. package/dist/{chunk-PB2OX2JY.js → chunk-D7SCIX4D.js} +1 -1
  28. package/dist/{chunk-AXWBDWAV.js → chunk-FZGUZIK5.js} +3 -3
  29. package/dist/{chunk-4WAMN4IF.js → chunk-GYYFNAVA.js} +1 -1
  30. package/dist/{chunk-TYA65W4U.js → chunk-HQGJLZB6.js} +2 -2
  31. package/dist/{chunk-LAHK4P7Q.js → chunk-J7XPPADY.js} +3 -3
  32. package/dist/{chunk-I77CAR4W.js → chunk-KVOWTRD5.js} +2 -2
  33. package/dist/{chunk-GVZYTDOD.js → chunk-KZ5OSG4G.js} +1 -1
  34. package/dist/{chunk-IBCGKQB5.js → chunk-KZJ6V7RT.js} +3 -3
  35. package/dist/{chunk-HUHJYNST.js → chunk-LAQEZHOH.js} +1 -1
  36. package/dist/{chunk-HFFR7TN7.js → chunk-LPXM5L6S.js} +2 -1
  37. package/dist/{chunk-2IZZZJDZ.js → chunk-LTYI4E42.js} +4 -4
  38. package/dist/{chunk-J3Q3YC6P.js → chunk-LZPAZZZP.js} +1 -1
  39. package/dist/{chunk-5TBFBLIX.js → chunk-MGTECHI3.js} +2 -2
  40. package/dist/{chunk-4I6AQUWG.js → chunk-NGVH2QYT.js} +8 -8
  41. package/dist/{chunk-M4KS6MJN.js → chunk-NJLFRKHX.js} +4 -4
  42. package/dist/{chunk-6LPWMCPY.js → chunk-NROJESOK.js} +2 -2
  43. package/dist/{chunk-UVUAU3CH.js → chunk-ONY5CJXS.js} +48 -26
  44. package/dist/{chunk-O5TBFZ7X.js → chunk-OVRFBUXU.js} +2 -2
  45. package/dist/{chunk-6F6EEQNB.js → chunk-PSGDNMM6.js} +1 -1
  46. package/dist/{chunk-AZQLJHAO.js → chunk-PZTEY73C.js} +1 -1
  47. package/dist/{chunk-VW5OMJNG.js → chunk-QB6OM2BP.js} +89 -70
  48. package/dist/{chunk-I6M4GXMC.js → chunk-QBHT234I.js} +1 -1
  49. package/dist/{chunk-TMLEIURT.js → chunk-QRXICW5Q.js} +1 -1
  50. package/dist/{chunk-4NJZZHYT.js → chunk-RPMXMOFU.js} +1 -1
  51. package/dist/{chunk-XZSH5GS7.js → chunk-RSL3XFMO.js} +4 -4
  52. package/dist/{chunk-PUB5XZYL.js → chunk-SIVCJJHE.js} +1 -1
  53. package/dist/{chunk-UUE5BZGE.js → chunk-SQ42NHXP.js} +620 -74
  54. package/dist/{chunk-GOI4GCUB.js → chunk-THVNQFYG.js} +1 -1
  55. package/dist/{chunk-IQ4UCWV7.js → chunk-TIZQC44K.js} +1 -1
  56. package/dist/{chunk-FTXU3TQ4.js → chunk-US7SWKGC.js} +1 -1
  57. package/dist/{chunk-TLYU5625.js → chunk-UUDQD62L.js} +6 -6
  58. package/dist/{chunk-2LCIQS3K.js → chunk-VBXJSCHR.js} +3 -3
  59. package/dist/{chunk-DVCYGZ7R.js → chunk-VLHN34SB.js} +2 -2
  60. package/dist/{chunk-4Z5O7BTD.js → chunk-WEATBQTR.js} +10 -1
  61. package/dist/{chunk-TH4APNRP.js → chunk-X763EUBO.js} +2 -2
  62. package/dist/{chunk-32Y3HRS3.js → chunk-XIGK4LNU.js} +2 -2
  63. package/dist/{chunk-R5RF3LGS.js → chunk-XMAL2A7Y.js} +1 -1
  64. package/dist/{chunk-USWOTTSP.js → chunk-XYVFPDNU.js} +1 -1
  65. package/dist/chunk-YLVI7VL5.js +3541 -0
  66. package/dist/{chunk-YVWILZCO.js → chunk-ZFL6FVQZ.js} +5 -5
  67. package/dist/{clean-GRX3GXKR.js → clean-LCRWNIWO.js} +17 -16
  68. package/dist/cli.js +50 -50
  69. package/dist/{cloud-TQCNBM6H.js → cloud-ITRFE5UN.js} +4 -4
  70. package/dist/{cloudrun-ISE6GSUO.js → cloudrun-LVZ4OPPC.js} +5 -5
  71. package/dist/{compare-QAWB3O4U.js → compare-NPVMUILH.js} +26 -25
  72. package/dist/{compiler-QMEZK6CU.js → compiler-YYOV2BJ7.js} +3 -3
  73. package/dist/{component-NXNNSXN7.js → component-HJFMHPNW.js} +3 -3
  74. package/dist/{compositions-I4PIPJKO.js → compositions-I34RN5WD.js} +12 -12
  75. package/dist/{delete-ZC4ZRBBF.js → delete-WN3J74BD.js} +4 -4
  76. package/dist/{deterministicFonts-XS3PGWH5.js → deterministicFonts-A4CNCSAL.js} +2 -2
  77. package/dist/{dist-E44WU6LH.js → dist-WCMFH74H.js} +1 -1
  78. package/dist/{dist-R24TLUYO.js → dist-YUIPB7OX.js} +9 -3
  79. package/dist/docs/data-attributes.md +1 -1
  80. package/dist/{doctor-EFQ4XNT3.js → doctor-MYC2S3J3.js} +11 -11
  81. package/dist/{events-AVPSJNYU.js → events-7JVV4746.js} +10 -10
  82. package/dist/{events-COIPJKSK.js → events-AEUV2JPA.js} +9 -9
  83. package/dist/{feedback-3DYZDMLC.js → feedback-X7DDSZPU.js} +11 -11
  84. package/dist/{figma-7XPHSMNG.js → figma-ISI4PPTF.js} +3 -3
  85. package/dist/fontLocalizeCli.js +10 -10
  86. package/dist/{get-TSBHDMKL.js → get-IYALAE4I.js} +4 -4
  87. package/dist/{gpuPolicy-BQFPO7UA.js → gpuPolicy-KSWTVU5C.js} +7 -7
  88. package/dist/{grade-compare-5Y4LXQFG.js → grade-compare-YWPIWQLK.js} +26 -25
  89. package/dist/{gsapParser-EZGJSSV5.js → gsapParser-KVMPC2SC.js} +5 -1
  90. package/dist/{help-5YBRP3C4.js → help-S2KJRMAJ.js} +1 -1
  91. package/dist/{history-SRNXKL6D.js → history-CQDDCY4J.js} +17 -16
  92. package/dist/hyperframe-runtime.js +54 -54
  93. package/dist/hyperframe.manifest.json +1 -1
  94. package/dist/hyperframe.runtime.iife.js +54 -54
  95. package/dist/hyperframes-player.global.js +3 -3
  96. package/dist/{info-U4BOXV2I.js → info-4KFNUWYN.js} +12 -12
  97. package/dist/{init-T4JYHIBM.js → init-I7GMRHFW.js} +98 -42
  98. package/dist/{inspect-XYLD2BMM.js → inspect-DUCLCHSD.js} +27 -26
  99. package/dist/{installer-UZSVMUKT.js → installer-NBEN3ZIP.js} +5 -5
  100. package/dist/{keyframes-BGPXWP7O.js → keyframes-F3VDEN66.js} +13 -13
  101. package/dist/{lambda-U4WIJQCJ.js → lambda-BFHJMMCG.js} +6 -6
  102. package/dist/{layout-UREZQ37U.js → layout-RNCXJI6C.js} +27 -26
  103. package/dist/{lint-LSTEZZ6T.js → lint-3NKKYCMH.js} +13 -13
  104. package/dist/{lintProject-4P4C6AN2.js → lintProject-F2OTN2IR.js} +1 -1
  105. package/dist/{list-6VICFTAM.js → list-Q7SOE3NF.js} +4 -4
  106. package/dist/{login-MXDIDOOG.js → login-TGRGWS5E.js} +4 -4
  107. package/dist/{media-treatment-ZVCWEACM.js → media-treatment-5TUXWHWE.js} +13 -13
  108. package/dist/{models-LXUIU5DC.js → models-YJUTM6TH.js} +8 -8
  109. package/dist/{motionShot-2LYUQF3T.js → motionShot-5QUMZ7J3.js} +11 -11
  110. package/dist/normalize-audio-63BI5BPL.js +276 -0
  111. package/dist/{pipeline-OFFKTFXS.js → pipeline-4NN5T7Q3.js} +7 -7
  112. package/dist/{play-P56CWNVC.js → play-SRDESSZI.js} +22 -21
  113. package/dist/{preflight-TVCVP5P2.js → preflight-SVN4PSFO.js} +8 -8
  114. package/dist/{present-ATMOWKMH.js → present-TDYR5LRW.js} +18 -17
  115. package/dist/{preview-7U6HYHYE.js → preview-Z5MFRZUM.js} +18 -18
  116. package/dist/{producer-LGG3TOUI.js → producer-RS7CB3XJ.js} +1 -1
  117. package/dist/{projectConfig-V53SEFIS.js → projectConfig-JHEWPAA5.js} +7 -7
  118. package/dist/{publication-7RKKPKLM.js → publication-7XA2H7UB.js} +3 -3
  119. package/dist/{publish-TRRFCEMQ.js → publish-2R22XX77.js} +9 -9
  120. package/dist/{remove-background-HJFT46Z5.js → remove-background-KT2SWYCC.js} +8 -8
  121. package/dist/{render-TPZ5FXHS.js → render-4C3YKVZI.js} +4 -4
  122. package/dist/{render-YB7BARWL.js → render-7GDLEGXT.js} +15 -15
  123. package/dist/{render-2QZBNE2V.js → render-Y2Y7N5WD.js} +22 -22
  124. package/dist/{render-batch-4ZF5C2LN.js → render-batch-AFDBPDMM.js} +4 -4
  125. package/dist/{renderCancellation-4PYGAN5D.js → renderCancellation-RQ3UVNVJ.js} +7 -7
  126. package/dist/renderSetupWorker.js +1 -1
  127. package/dist/{resolver-4JRJPC6S.js → resolver-S72XBTEQ.js} +5 -5
  128. package/dist/{sherpa-MNCWRFD4.js → sherpa-PR3I4KGM.js} +10 -10
  129. package/dist/{skills-ETBA5B46.js → skills-BEYZZWY6.js} +12 -12
  130. package/dist/{skillsUpdateCheck-DQOUIYV5.js → skillsUpdateCheck-3USXDPWV.js} +3 -3
  131. package/dist/{snapshot-W3HTBAYH.js → snapshot-S77MQOV2.js} +27 -26
  132. package/dist/{src-QX5PPANW.js → src-6R4DC2YI.js} +6 -6
  133. package/dist/{src-QF6RYX76.js → src-IOJXK4VC.js} +9 -9
  134. package/dist/{staticProjectServer-WBXW2CA4.js → staticProjectServer-RXAFGDK7.js} +16 -15
  135. package/dist/{status-C3IDZFDG.js → status-CRS7H6FA.js} +7 -7
  136. package/dist/studio/assets/{hyperframes-player-dl6K6ABp.js → hyperframes-player-BakGew45.js} +1 -1
  137. package/dist/studio/assets/{index-ooaZZhKf.js → index-C5dyUHwk.js} +1 -1
  138. package/dist/studio/assets/{index-CMiYVGv5.js → index-C842tcVa.js} +203 -208
  139. package/dist/studio/assets/{index-DKT5NF1Y.js → index-CPe7d_wO.js} +1 -1
  140. package/dist/studio/assets/{index-lrT-gfHa.css → index-ncVJ5IVu.css} +1 -1
  141. package/dist/studio/chunk-6LUNLTHR.js +611 -0
  142. package/dist/studio/chunk-6LUNLTHR.js.map +1 -0
  143. package/dist/studio/{chunk-ICTZJPQQ.js → chunk-AOWVEVEU.js} +3 -494
  144. package/dist/studio/chunk-AOWVEVEU.js.map +1 -0
  145. package/dist/studio/{chunk-46XP7J3B.js → chunk-PQFEBX32.js} +5 -3
  146. package/dist/studio/chunk-PQFEBX32.js.map +1 -0
  147. package/dist/studio/{domEditingLayers-AQBDFNUC.js → domEditingLayers-JQPQGGT7.js} +3 -3
  148. package/dist/studio/index.d.ts +377 -12
  149. package/dist/studio/index.html +2 -2
  150. package/dist/studio/index.js +13445 -11874
  151. package/dist/studio/index.js.map +1 -1
  152. package/dist/studio/player.js +2 -2
  153. package/dist/studio/styles.css +1 -1
  154. package/dist/{studio-api-6IJPJVG6.js → studio-api-3FH7OSSS.js} +10 -9
  155. package/dist/{studioServer-77CY4XPO.js → studioServer-4E5RRPU7.js} +49 -42
  156. package/dist/{system-OAB2LYBV.js → system-YMANAUAM.js} +7 -7
  157. package/dist/{telemetry-XTN5BO5S.js → telemetry-46XSB2VN.js} +10 -10
  158. package/dist/templates/_shared/AGENTS.md +1 -1
  159. package/dist/templates/_shared/CLAUDE.md +1 -1
  160. package/dist/templates/from-file/index.html +3 -2
  161. package/dist/templates/warm-grain/index.html +2 -10
  162. package/dist/{timeline-YKKTGPL7.js → timeline-XKLKHGD2.js} +17 -16
  163. package/dist/{tokens-LU25F3IJ.js → tokens-JCZKPUPT.js} +2 -2
  164. package/dist/{transcribe-O7OL4RRU.js → transcribe-FIFJ3BBB.js} +13 -13
  165. package/dist/{transcribe-AL3E5MBZ.js → transcribe-FQ4YC2AS.js} +10 -8
  166. package/dist/{updateCheck-MZZML4DL.js → updateCheck-PDIH4GZW.js} +2 -2
  167. package/dist/{upgrade-PQRTEJJY.js → upgrade-TTGO6JCF.js} +2 -2
  168. package/dist/{urlDownloader-U3TNOPD5.js → urlDownloader-32JRHOPN.js} +6 -6
  169. package/dist/{validate-KQETGCIR.js → validate-G5F56ONL.js} +16 -16
  170. package/dist/{video-KAHL76HG.js → video-SGBEMEKA.js} +7 -7
  171. package/package.json +1 -1
  172. package/dist/chunk-FOKUJKBN.js +0 -3420
  173. package/dist/studio/chunk-46XP7J3B.js.map +0 -1
  174. package/dist/studio/chunk-DI4LCJHL.js +0 -102
  175. package/dist/studio/chunk-DI4LCJHL.js.map +0 -1
  176. package/dist/studio/chunk-ICTZJPQQ.js.map +0 -1
  177. /package/dist/studio/{domEditingLayers-AQBDFNUC.js.map → domEditingLayers-JQPQGGT7.js.map} +0 -0
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VALID_CANVAS_RESOLUTIONS,
9
9
  resolveResolutionFlagPair
10
- } from "./chunk-TLYU5625.js";
10
+ } from "./chunk-UUDQD62L.js";
11
11
 
12
12
  // src/utils/parseOutputResolution.ts
13
13
  function parseOutputResolutionFlag(raw, options) {
@@ -22,7 +22,7 @@ import {
22
22
  renderFrameIdForRenderId,
23
23
  resolveAuthoredTimingWindow,
24
24
  toFps
25
- } from "./chunk-TEXPOC5V.js";
25
+ } from "./chunk-B25H4M4V.js";
26
26
  import {
27
27
  AUDIO_GROUP_RENDER_ID_ATTR,
28
28
  COLOR_GRADING_SOURCE_HIDDEN_ATTR,
@@ -36,6 +36,7 @@ import {
36
36
  enabledAudioFxNodes,
37
37
  fxAutomationTarget,
38
38
  injectScriptsIntoHtml,
39
+ isAudibleVideoElement,
39
40
  normalizeAudioFxParams,
40
41
  normalizePlaybackRate,
41
42
  normalizeRateSpec,
@@ -51,7 +52,7 @@ import {
51
52
  shiftRateLane,
52
53
  sourceTimeAt,
53
54
  timeAtSourceTime
54
- } from "./chunk-FOKUJKBN.js";
55
+ } from "./chunk-YLVI7VL5.js";
55
56
  import {
56
57
  chromeMajorCeiling,
57
58
  exceedsChromeCeiling
@@ -59,7 +60,7 @@ import {
59
60
  import {
60
61
  isWithinProjectRoot,
61
62
  resolveProjectRelativeSrc
62
- } from "./chunk-UVUAU3CH.js";
63
+ } from "./chunk-ONY5CJXS.js";
63
64
  import {
64
65
  FFMPEG_PATH_ENV,
65
66
  FFPROBE_PATH_ENV,
@@ -9460,6 +9461,78 @@ FFmpeg stopped after ${streamingTimeout} ms without consuming a frame.` : "";
9460
9461
  return encoder;
9461
9462
  }
9462
9463
 
9464
+ // ../core/dist/audioGroups.js
9465
+ var HF_AUDIO_GROUP_TAG = "hf-audio-group";
9466
+ var HF_AUDIO_GROUP_ATTR = "data-audio-group";
9467
+ function readAudioGroupVolume(el) {
9468
+ const raw = el?.getAttribute("data-volume");
9469
+ const parsed = raw ? parseFloat(raw) : 1;
9470
+ return Number.isFinite(parsed) ? parsed : 1;
9471
+ }
9472
+ function buildGroup(id, memberIds, el) {
9473
+ const fxChain = el?.getAttribute(HF_AUDIO_FX_ATTR);
9474
+ const automation = el?.getAttribute(HF_AUDIO_AUTOMATION_ATTR);
9475
+ return {
9476
+ id,
9477
+ label: el?.getAttribute("data-label") || id,
9478
+ memberIds,
9479
+ ...fxChain ? { fxChain } : {},
9480
+ ...automation ? { automation } : {},
9481
+ volume: readAudioGroupVolume(el),
9482
+ hidden: el?.hasAttribute("data-hidden") ?? false
9483
+ };
9484
+ }
9485
+ function resolveAudioGroups(root) {
9486
+ const membersByGroup = /* @__PURE__ */ new Map();
9487
+ const candidates = root.querySelectorAll(`audio[${HF_AUDIO_GROUP_ATTR}], video[${HF_AUDIO_GROUP_ATTR}]`);
9488
+ for (const member of candidates) {
9489
+ if (!isGroupableMember(member))
9490
+ continue;
9491
+ const groupId = member.getAttribute(AUDIO_GROUP_RENDER_ID_ATTR) ?? member.getAttribute(HF_AUDIO_GROUP_ATTR);
9492
+ if (!groupId || !member.id)
9493
+ continue;
9494
+ const members = membersByGroup.get(groupId);
9495
+ if (members)
9496
+ members.push(member.id);
9497
+ else
9498
+ membersByGroup.set(groupId, [member.id]);
9499
+ }
9500
+ const groupElements = /* @__PURE__ */ new Map();
9501
+ for (const el of root.querySelectorAll(HF_AUDIO_GROUP_TAG)) {
9502
+ const key = el.getAttribute(MEDIA_RENDER_ID_ATTR) ?? el.id;
9503
+ if (key)
9504
+ groupElements.set(key, el);
9505
+ }
9506
+ const groups = [];
9507
+ for (const [id, memberIds] of membersByGroup) {
9508
+ groups.push(buildGroup(id, memberIds, groupElements.get(id)));
9509
+ }
9510
+ return groups;
9511
+ }
9512
+ function isGroupableMember(el) {
9513
+ if (el.tagName.toLowerCase() === "audio")
9514
+ return true;
9515
+ return typeof el.hasAttribute === "function" && isAudibleVideoElement(el);
9516
+ }
9517
+
9518
+ // ../engine/src/services/mediaHidden.ts
9519
+ function isSelfOrAncestorHidden(el) {
9520
+ for (let current = el; current; current = current.parentElement) {
9521
+ if (current.hasAttribute("data-hidden")) return true;
9522
+ }
9523
+ return false;
9524
+ }
9525
+ function memberGroupKey(el) {
9526
+ return el.getAttribute(AUDIO_GROUP_RENDER_ID_ATTR) ?? el.getAttribute(HF_AUDIO_GROUP_ATTR);
9527
+ }
9528
+ function audioGroupsById(document2) {
9529
+ return new Map(resolveAudioGroups(document2).map((group) => [group.id, group]));
9530
+ }
9531
+ function isMemberGroupHidden(groupsById, el) {
9532
+ const groupId = memberGroupKey(el);
9533
+ return groupId ? groupsById.get(groupId)?.hidden ?? false : false;
9534
+ }
9535
+
9463
9536
  // ../engine/src/services/videoFrameExtractor.ts
9464
9537
  import { copyFileSync as copyFileSync2, existsSync as existsSync8, linkSync as linkSync2, mkdirSync as mkdirSync6, rmSync as rmSync3 } from "fs";
9465
9538
  import { join as join9 } from "path";
@@ -11135,6 +11208,7 @@ function parseVideoElements(html) {
11135
11208
  const { document: document2 } = parseHTML(unwrapTemplate(html));
11136
11209
  const startCache = /* @__PURE__ */ new Map();
11137
11210
  const visiting = /* @__PURE__ */ new Set();
11211
+ const groupsById = audioGroupsById(document2);
11138
11212
  const videoEls = document2.querySelectorAll("video");
11139
11213
  let autoIdCounter = 0;
11140
11214
  for (const el of videoEls) {
@@ -11168,7 +11242,8 @@ function parseVideoElements(html) {
11168
11242
  mediaStart: readMediaStart(el),
11169
11243
  playbackRate: readElementRateSpec(el),
11170
11244
  loop: el.hasAttribute("loop"),
11171
- hasAudio: hasAudioAttr === "true"
11245
+ hasAudio: hasAudioAttr === "true",
11246
+ ...isSelfOrAncestorHidden(el) || isAudibleVideoElement(el) && isMemberGroupHidden(groupsById, el) ? { hidden: true } : {}
11172
11247
  });
11173
11248
  }
11174
11249
  return videos;
@@ -13196,52 +13271,6 @@ function chainTailSeconds(chain, automation) {
13196
13271
  return Math.min(MAX_FX_TAIL_SECONDS, total);
13197
13272
  }
13198
13273
 
13199
- // ../core/dist/audioGroups.js
13200
- var HF_AUDIO_GROUP_TAG = "hf-audio-group";
13201
- var HF_AUDIO_GROUP_ATTR = "data-audio-group";
13202
- function readAudioGroupVolume(el) {
13203
- const raw = el?.getAttribute("data-volume");
13204
- const parsed = raw ? parseFloat(raw) : 1;
13205
- return Number.isFinite(parsed) ? parsed : 1;
13206
- }
13207
- function buildGroup(id, memberIds, el) {
13208
- const fxChain = el?.getAttribute(HF_AUDIO_FX_ATTR);
13209
- const automation = el?.getAttribute(HF_AUDIO_AUTOMATION_ATTR);
13210
- return {
13211
- id,
13212
- label: el?.getAttribute("data-label") || id,
13213
- memberIds,
13214
- ...fxChain ? { fxChain } : {},
13215
- ...automation ? { automation } : {},
13216
- volume: readAudioGroupVolume(el),
13217
- hidden: el?.hasAttribute("data-hidden") ?? false
13218
- };
13219
- }
13220
- function resolveAudioGroups(root) {
13221
- const membersByGroup = /* @__PURE__ */ new Map();
13222
- for (const member of root.querySelectorAll(`audio[${HF_AUDIO_GROUP_ATTR}]`)) {
13223
- const groupId = member.getAttribute(AUDIO_GROUP_RENDER_ID_ATTR) ?? member.getAttribute(HF_AUDIO_GROUP_ATTR);
13224
- if (!groupId || !member.id)
13225
- continue;
13226
- const members = membersByGroup.get(groupId);
13227
- if (members)
13228
- members.push(member.id);
13229
- else
13230
- membersByGroup.set(groupId, [member.id]);
13231
- }
13232
- const groupElements = /* @__PURE__ */ new Map();
13233
- for (const el of root.querySelectorAll(HF_AUDIO_GROUP_TAG)) {
13234
- const key = el.getAttribute(MEDIA_RENDER_ID_ATTR) ?? el.id;
13235
- if (key)
13236
- groupElements.set(key, el);
13237
- }
13238
- const groups = [];
13239
- for (const [id, memberIds] of membersByGroup) {
13240
- groups.push(buildGroup(id, memberIds, groupElements.get(id)));
13241
- }
13242
- return groups;
13243
- }
13244
-
13245
13274
  // ../engine/src/services/audioFxRender.ts
13246
13275
  import { existsSync as existsSync9, mkdtempSync as mkdtempSync4, readFileSync as readFileSync6, rmSync as rmSync5, writeFileSync as writeFileSync5 } from "fs";
13247
13276
  import { tmpdir as tmpdir2 } from "os";
@@ -13502,9 +13531,6 @@ function envelopeWalkerFor(envelope) {
13502
13531
 
13503
13532
  // ../engine/src/services/audioMixer.ts
13504
13533
  var MIXED_AUDIO_FILENAME = "audio.m4a";
13505
- function memberGroupKey(el) {
13506
- return el.getAttribute(AUDIO_GROUP_RENDER_ID_ATTR) ?? el.getAttribute(HF_AUDIO_GROUP_ATTR);
13507
- }
13508
13534
  function clampVolume(volume) {
13509
13535
  return clampAudioGain(volume);
13510
13536
  }
@@ -13802,26 +13828,18 @@ function parseAudioElements(html) {
13802
13828
  const parseEnd = (raw) => {
13803
13829
  return parseStrictFiniteTimingNumber(raw) ?? 0;
13804
13830
  };
13805
- const isHidden = (el) => {
13806
- for (let current = el; current; current = current.parentElement) {
13807
- if (current.hasAttribute("data-hidden")) return true;
13808
- }
13809
- return false;
13810
- };
13831
+ const isHidden = isSelfOrAncestorHidden;
13811
13832
  const groupsById = new Map(
13812
13833
  resolveAudioGroups(document2).map((group) => [group.id, group])
13813
13834
  );
13814
- const memberGroupHidden = (el) => {
13815
- const groupId = memberGroupKey(el);
13816
- return groupId ? groupsById.get(groupId)?.hidden ?? false : false;
13817
- };
13818
- const build = (el, id, src, type) => {
13835
+ const memberGroupHidden = (el) => isMemberGroupHidden(groupsById, el);
13836
+ const build = (el, id, src, type, joinsGroup) => {
13819
13837
  const layerAttr = el.getAttribute("data-layer");
13820
13838
  const volumeAttr = el.getAttribute("data-volume");
13821
13839
  const fades = readElementFades(el);
13822
13840
  const fxChain = el.getAttribute(HF_AUDIO_FX_ATTR);
13823
13841
  const automation = el.getAttribute(HF_AUDIO_AUTOMATION_ATTR);
13824
- const groupId = type === "audio" ? memberGroupKey(el) : null;
13842
+ const groupId = joinsGroup ? memberGroupKey(el) : null;
13825
13843
  const group = groupId ? groupsById.get(groupId) : void 0;
13826
13844
  return {
13827
13845
  id,
@@ -13851,14 +13869,15 @@ function parseAudioElements(html) {
13851
13869
  const src = resolveMediaElementSrc(el);
13852
13870
  if (!id || !src || isHidden(el) || memberGroupHidden(el)) continue;
13853
13871
  if (isKnownInactiveTimelineWindow(el, resolveStart(el))) continue;
13854
- elements.push(build(el, id, src, "audio"));
13872
+ elements.push(build(el, id, src, "audio", true));
13855
13873
  }
13856
13874
  for (const el of document2.querySelectorAll('video[id][data-has-audio="true"]')) {
13875
+ if (!isAudibleVideoElement(el)) continue;
13857
13876
  const id = trackId(el);
13858
13877
  const src = resolveMediaElementSrc(el);
13859
- if (!id || !src || isHidden(el)) continue;
13878
+ if (!id || !src || isHidden(el) || memberGroupHidden(el)) continue;
13860
13879
  if (isKnownInactiveTimelineWindow(el, resolveStart(el))) continue;
13861
- elements.push(build(el, `${id}-audio`, src, "video"));
13880
+ elements.push(build(el, `${id}-audio`, src, "video", true));
13862
13881
  }
13863
13882
  return elements;
13864
13883
  }
@@ -15861,6 +15880,8 @@ export {
15861
15880
  applyFaststart,
15862
15881
  createFrameReorderBuffer,
15863
15882
  spawnStreamingEncoder,
15883
+ HF_AUDIO_GROUP_TAG,
15884
+ HF_AUDIO_GROUP_ATTR,
15864
15885
  resolveReferencedStart,
15865
15886
  resolveReferencedDuration,
15866
15887
  safeDownloadUrlIdentity,
@@ -15904,8 +15925,6 @@ export {
15904
15925
  fingerprintElementId,
15905
15926
  isNotMediaPayload,
15906
15927
  assertMediaPayload,
15907
- HF_AUDIO_GROUP_TAG,
15908
- HF_AUDIO_GROUP_ATTR,
15909
15928
  MIXED_AUDIO_FILENAME,
15910
15929
  parseAudioElements,
15911
15930
  processCompositionAudio,
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-AWDFDFI3.js";
14
14
  import {
15
15
  isBlockedNetworkHost
16
- } from "./chunk-VW5OMJNG.js";
16
+ } from "./chunk-QB6OM2BP.js";
17
17
  import {
18
18
  DOMParser,
19
19
  parseHTML
@@ -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-VW5OMJNG.js";
9
+ } from "./chunk-QB6OM2BP.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ISN5GRYI.js";
18
18
  import {
19
19
  VERSION
20
- } from "./chunk-6LPWMCPY.js";
20
+ } from "./chunk-NROJESOK.js";
21
21
 
22
22
  // src/utils/updateCheck.ts
23
23
  import { existsSync, readFileSync } from "fs";
@@ -12,18 +12,18 @@ import {
12
12
  } from "./chunk-262C25DQ.js";
13
13
  import {
14
14
  resolveDiagnosticNavigationTimeoutMs
15
- } from "./chunk-IQ4UCWV7.js";
15
+ } from "./chunk-TIZQC44K.js";
16
16
  import {
17
17
  resolveCaptureBrowserGpuMode,
18
18
  resolveLocalBrowserGpuMode
19
- } from "./chunk-4WAMN4IF.js";
19
+ } from "./chunk-GYYFNAVA.js";
20
20
  import {
21
21
  c
22
22
  } from "./chunk-ZTZA4UWZ.js";
23
23
  import {
24
24
  assertWebGpuAdapterAvailable,
25
25
  compositionRequiresWebGpu
26
- } from "./chunk-VW5OMJNG.js";
26
+ } from "./chunk-QB6OM2BP.js";
27
27
  import {
28
28
  normalizeErrorMessage
29
29
  } from "./chunk-KNU5COPB.js";
@@ -99,7 +99,7 @@ async function openSettledCompositionPage(html, url, options) {
99
99
  const { ensureBrowser, findSystemBrowser } = await import("./manager-NEVLEZK3.js");
100
100
  const browser = await ensureBrowser();
101
101
  const puppeteer = await import("puppeteer-core");
102
- const { buildChromeArgs } = await import("./src-QX5PPANW.js");
102
+ const { buildChromeArgs } = await import("./src-6R4DC2YI.js");
103
103
  const requestedGpuMode = options.browserGpuMode ?? resolveCliChromeGpuMode();
104
104
  const requiresWebGpu = compositionRequiresWebGpu(html);
105
105
  const launch = async (executablePath) => {
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-AMKC3AXA.js";
10
10
  import {
11
11
  getSystemTotalMb
12
- } from "./chunk-VW5OMJNG.js";
12
+ } from "./chunk-QB6OM2BP.js";
13
13
 
14
14
  // src/telemetry/system.ts
15
15
  import { cpus, freemem, platform as platform2, release as release2 } from "os";