hyperframes 0.8.150 → 0.8.152

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 (193) hide show
  1. package/dist/{add-3ZIFEN2U.js → add-SA33REHW.js} +14 -14
  2. package/dist/{animatedGifPrep-77LPFLKJ.js → animatedGifPrep-3YXJQZ7L.js} +9 -9
  3. package/dist/api.js +19 -19
  4. package/dist/{asset-EYSZEHM6.js → asset-PUVPTWPD.js} +2 -2
  5. package/dist/{assetCataloger-KX3HD7ZI.js → assetCataloger-VWE2PLBX.js} +4 -4
  6. package/dist/{auth-L6IWNRXY.js → auth-PS3M6AI7.js} +1 -1
  7. package/dist/{autoUpdate-2O3HZB65.js → autoUpdate-CMO4SHWU.js} +2 -2
  8. package/dist/{backgroundChecks-BH2LMJYE.js → backgroundChecks-EDZ2A55J.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-ZBKAYLWU.js → batchRender-7PLJISCN.js} +5 -5
  11. package/dist/{beats-IVLF2566.js → beats-2MDSIOE7.js} +15 -15
  12. package/dist/{benchmark-SYZFW2G7.js → benchmark-KBBXAPI4.js} +10 -10
  13. package/dist/{browser-OSW3L25S.js → browser-OMWKZRSW.js} +5 -5
  14. package/dist/{bundleWithLocalizedFonts-I4CWOXLK.js → bundleWithLocalizedFonts-76DMCRIW.js} +2 -2
  15. package/dist/{capture-AZOQ57TM.js → capture-LRUUXH5Q.js} +2 -2
  16. package/dist/{capture-V5ICGSVJ.js → capture-YGDC7GN3.js} +13 -13
  17. package/dist/{catalog-VBJOA2Y5.js → catalog-SMEBKEVO.js} +14 -14
  18. package/dist/{catch-up-TKSEDNJK.js → catch-up-OMILX3WE.js} +4 -4
  19. package/dist/{check-3HFISKDB.js → check-NUZ62LIW.js} +288 -64
  20. package/dist/{checkBrowser-MXBDNZJB.js → checkBrowser-MSTVEL4V.js} +181 -38
  21. package/dist/{chunk-73RBX2E7.js → chunk-3DZBQ7MH.js} +3 -3
  22. package/dist/{chunk-6QB7F2II.js → chunk-3E4OCOC5.js} +1 -1
  23. package/dist/{chunk-OQ7XMM3S.js → chunk-3HPJM5IQ.js} +1 -1
  24. package/dist/{chunk-UJB7356Y.js → chunk-3LO7BBJX.js} +3 -3
  25. package/dist/{chunk-APDLWWFG.js → chunk-3VGU2SH7.js} +1 -1
  26. package/dist/{chunk-DUUFDLC4.js → chunk-4MLYMDQ4.js} +1 -1
  27. package/dist/{chunk-AXPNVC3N.js → chunk-4UMKAUZI.js} +1 -1
  28. package/dist/{chunk-XPQSL5VS.js → chunk-54DMWFQZ.js} +8 -1
  29. package/dist/chunk-57GN6KWT.js +179 -0
  30. package/dist/{chunk-374QQGBQ.js → chunk-5CS4T6C6.js} +63 -12
  31. package/dist/{chunk-PCWOSS7G.js → chunk-5ERVRJMV.js} +3 -3
  32. package/dist/{chunk-TZPZE5PS.js → chunk-5VMSUW4Z.js} +6 -3
  33. package/dist/{chunk-M6UDJ2E7.js → chunk-6Z4YJ5Q3.js} +3 -3
  34. package/dist/{chunk-FJWEYVEM.js → chunk-7FYFEXD2.js} +658 -198
  35. package/dist/{chunk-UQYQ7TBA.js → chunk-7NPSXBIN.js} +2 -2
  36. package/dist/chunk-7TASSBN2.js +215 -0
  37. package/dist/{chunk-F2RLIE7P.js → chunk-ANS56TPS.js} +11 -11
  38. package/dist/{chunk-DOVJRUFM.js → chunk-BQK3J7XO.js} +1 -1
  39. package/dist/{chunk-FPAT5HTI.js → chunk-BYJYQWEX.js} +10 -10
  40. package/dist/{chunk-XXPYZBZ3.js → chunk-C6TPGUWD.js} +2 -2
  41. package/dist/{chunk-XQMEGSHG.js → chunk-D6RJXQLD.js} +1 -1
  42. package/dist/{chunk-RW7NLGPD.js → chunk-DFXK7KUO.js} +25 -17
  43. package/dist/{chunk-6SFPQ2RZ.js → chunk-E6EYZ33P.js} +2 -2
  44. package/dist/{chunk-AKYQGZLU.js → chunk-EVTHG34H.js} +2 -2
  45. package/dist/{chunk-5NAYNDBT.js → chunk-EXH6L2XZ.js} +6 -2
  46. package/dist/{chunk-AIJS74LG.js → chunk-FFDC5OWV.js} +8 -2
  47. package/dist/{chunk-4WFNTWKZ.js → chunk-FNN5QINS.js} +2 -2
  48. package/dist/{chunk-DMKI64EZ.js → chunk-FSZAFCU7.js} +1 -1
  49. package/dist/{chunk-S5F26DUL.js → chunk-GQETH4PE.js} +3 -3
  50. package/dist/{chunk-3UAIVF4L.js → chunk-H2SGM2V2.js} +1 -1
  51. package/dist/{chunk-O4DC5CHF.js → chunk-H7FXBK3Q.js} +1 -1
  52. package/dist/{chunk-UVVI2NJQ.js → chunk-HBCRRCTX.js} +109 -31
  53. package/dist/{chunk-NFQY7EIC.js → chunk-IBYC3VUA.js} +1 -1
  54. package/dist/{chunk-2KAL22B5.js → chunk-IEDT4EXE.js} +1 -1
  55. package/dist/{chunk-I6DATIHC.js → chunk-IZIRIDJH.js} +2 -2
  56. package/dist/{chunk-Z6WZDGCS.js → chunk-IZKXUYZE.js} +2 -2
  57. package/dist/chunk-KCFF4ENE.js +24 -0
  58. package/dist/{chunk-6KWA3XPS.js → chunk-KZ3L3W4Q.js} +1 -1
  59. package/dist/{chunk-7IEGPJ4P.js → chunk-LBT4AMSF.js} +1 -1
  60. package/dist/{chunk-7JTFPUMA.js → chunk-LECTCGGS.js} +1 -1
  61. package/dist/{chunk-7E4VHPKJ.js → chunk-LVPSWUS6.js} +5 -5
  62. package/dist/{chunk-6NPFJ255.js → chunk-MNHPG2UO.js} +1 -1
  63. package/dist/{chunk-FN6KAS7A.js → chunk-NHAG2KCE.js} +7 -7
  64. package/dist/{chunk-423DJVX2.js → chunk-PKO2EWO7.js} +1 -1
  65. package/dist/{chunk-ZNHAJCEA.js → chunk-PRXAOZWZ.js} +28 -13
  66. package/dist/{chunk-VQ7YIURZ.js → chunk-PTXZDSW5.js} +5 -5
  67. package/dist/{chunk-XANZ4R4P.js → chunk-QECEOV6W.js} +3 -3
  68. package/dist/{chunk-BLRJKBKP.js → chunk-QESSGUKX.js} +1 -1
  69. package/dist/{chunk-WLIUULZQ.js → chunk-RN5I2DP5.js} +29 -15
  70. package/dist/chunk-S3RCK56N.js +3795 -0
  71. package/dist/{chunk-UAIUVPZE.js → chunk-SWCSL6WS.js} +6 -6
  72. package/dist/{chunk-2PSPARWP.js → chunk-TYXH3EKP.js} +4 -0
  73. package/dist/{chunk-FMNVTKX2.js → chunk-U3BCDVZO.js} +1 -1
  74. package/dist/{chunk-LW5VFBSY.js → chunk-VS732BUG.js} +1 -1
  75. package/dist/{chunk-LFNQDTSH.js → chunk-VYKPBRCB.js} +63 -12
  76. package/dist/{chunk-M5B42RL5.js → chunk-WUUOFMHU.js} +3 -3
  77. package/dist/{chunk-A6ZO4BX7.js → chunk-XEFFJRYX.js} +2 -2
  78. package/dist/{chunk-EL5QVJEG.js → chunk-XINGD6MS.js} +4 -4
  79. package/dist/chunk-XSEGMQYA.js +30 -0
  80. package/dist/{chunk-CZQLCBWY.js → chunk-YG2Y55KF.js} +1 -1
  81. package/dist/{chunk-B3XLIBFL.js → chunk-YIJMVFEJ.js} +1 -1
  82. package/dist/{chunk-JDB65PPT.js → chunk-YOEGUBBY.js} +13 -12
  83. package/dist/{chunk-AFRXL75S.js → chunk-YYEYOFHW.js} +1 -1
  84. package/dist/{chunk-R5A7454P.js → chunk-ZTM3RMAD.js} +2 -2
  85. package/dist/{clean-7HU7S7DT.js → clean-F75G45BI.js} +56 -35
  86. package/dist/cli.js +53 -53
  87. package/dist/{cloud-HAXHBO25.js → cloud-KVJAOUWH.js} +4 -4
  88. package/dist/{cloudrun-A3PIJ6DX.js → cloudrun-Q7Q7O4GY.js} +6 -6
  89. package/dist/{compare-6IPSQMSM.js → compare-DGUJ4QWU.js} +30 -30
  90. package/dist/{compiler-UQP2VXN6.js → compiler-NCN6PTVH.js} +6 -6
  91. package/dist/{component-FF3AU24M.js → component-PSYGT3JV.js} +3 -3
  92. package/dist/{compositions-JSH4MZXB.js → compositions-J3GAETIC.js} +13 -13
  93. package/dist/{delete-G763SW64.js → delete-MR7LRGRP.js} +2 -2
  94. package/dist/{deterministicFonts-C5JQLCTS.js → deterministicFonts-EOMDR6ZF.js} +3 -3
  95. package/dist/{dist-HUMFCJ6T.js → dist-2YYJYYPY.js} +3 -3
  96. package/dist/{dist-Z7Q3JS7K.js → dist-3MHXG6EJ.js} +4 -4
  97. package/dist/{doctor-WZB6WMBY.js → doctor-JOUGR5UK.js} +15 -15
  98. package/dist/{events-T4YFQC5G.js → events-63BKDWVO.js} +3 -3
  99. package/dist/{events-MUWJJCC7.js → events-FZFBJCIH.js} +2 -2
  100. package/dist/{feedback-AUTHQNN2.js → feedback-QLKWUDXR.js} +8 -8
  101. package/dist/{ffmpeg-TZB5WAYE.js → ffmpeg-MJFMBBSF.js} +2 -2
  102. package/dist/{figma-NBG6WBI7.js → figma-YJ7HGVQC.js} +3 -3
  103. package/dist/fontLocalizeCli.js +12 -12
  104. package/dist/{get-OXBJLKLV.js → get-54MUUXMR.js} +2 -2
  105. package/dist/{gpuPolicy-HBCCEQUS.js → gpuPolicy-5OVNR75D.js} +9 -9
  106. package/dist/{grade-compare-2LX4FDH7.js → grade-compare-7IDUF673.js} +32 -32
  107. package/dist/{gsapParserAcorn-VXZ3ZIF2.js → gsapParserAcorn-7NCK2LVT.js} +2 -2
  108. package/dist/{help-LJI46EDO.js → help-GQFYO5LU.js} +1 -1
  109. package/dist/{history-MFKAQEHU.js → history-UI3O7CSO.js} +77 -205
  110. package/dist/hyperframe-runtime.js +54 -54
  111. package/dist/hyperframe.manifest.json +1 -1
  112. package/dist/hyperframe.runtime.iife.js +54 -54
  113. package/dist/hyperframes-player.global.js +3 -3
  114. package/dist/{info-D6Y5O2QE.js → info-VQV3APEX.js} +9 -9
  115. package/dist/{init-47NZPEBI.js → init-2UBFV5D7.js} +31 -31
  116. package/dist/{inspect-U5UXJK5D.js → inspect-36ACJ3CO.js} +31 -31
  117. package/dist/{installer-AW7VFVTQ.js → installer-GDUZDJG4.js} +7 -7
  118. package/dist/{keyframes-5G334NWB.js → keyframes-GPBU34BG.js} +227 -82
  119. package/dist/{lambda-GASGXN3A.js → lambda-CBJVLTHY.js} +7 -7
  120. package/dist/{layout-OXAQFLJS.js → layout-2IHFV6EI.js} +31 -31
  121. package/dist/{lint-F36QFSNF.js → lint-IR6IYCEO.js} +9 -9
  122. package/dist/{lintProject-SSEXWCH6.js → lintProject-XQWXJYSC.js} +3 -3
  123. package/dist/{list-TR6QCI53.js → list-UAGKWARH.js} +2 -2
  124. package/dist/{login-6LA2RWTC.js → login-2GYCNCZF.js} +4 -4
  125. package/dist/{manager-ES2UFT4X.js → manager-X44GKUEL.js} +3 -3
  126. package/dist/{manager-GWU5J6RJ.js → manager-ZLJD3EAY.js} +2 -2
  127. package/dist/{media-treatment-BOHYDWVY.js → media-treatment-Z553F7XI.js} +14 -14
  128. package/dist/{models-6GW5Q3IW.js → models-6AZTNNSO.js} +15 -15
  129. package/dist/{motionShot-O7AOMPUN.js → motionShot-ARRL7WXT.js} +29 -16
  130. package/dist/{normalize-audio-UO5B4O76.js → normalize-audio-CME4NUB6.js} +6 -6
  131. package/dist/{open-JV2EHVKM.js → open-HU2VXUFD.js} +4 -4
  132. package/dist/{parakeetRunner-23DZUF6G.js → parakeetRunner-X5MKFMCB.js} +16 -16
  133. package/dist/{pipeline-KTICSIK7.js → pipeline-MNFTEBJU.js} +11 -11
  134. package/dist/{play-CMUYPXBC.js → play-2BBJDDAZ.js} +24 -24
  135. package/dist/{preflight-JOD4OXGC.js → preflight-JYOX64YP.js} +4 -4
  136. package/dist/{present-ZDT5FM2H.js → present-OE2WL2NY.js} +20 -20
  137. package/dist/{preview-ASHLGKDD.js → preview-RYSCCAWJ.js} +21 -21
  138. package/dist/{producer-FFH2KUAZ.js → producer-SQWNRO66.js} +1 -1
  139. package/dist/{projectConfig-FHIAOPKW.js → projectConfig-B55Z7YKQ.js} +9 -9
  140. package/dist/{publication-WO5ZXURT.js → publication-MDZCOBJP.js} +4 -4
  141. package/dist/{publish-QWO2W7FB.js → publish-AILV36BO.js} +12 -12
  142. package/dist/{remove-background-BO5MQR25.js → remove-background-6F72LKHG.js} +12 -12
  143. package/dist/{render-XTJKGT3G.js → render-2MZKU3L5.js} +10 -10
  144. package/dist/{render-SDHFXL3Y.js → render-5EREH6YD.js} +95 -37
  145. package/dist/{render-HS3YOLSD.js → render-6GH5FSXU.js} +5 -5
  146. package/dist/{render-batch-J64AJHQY.js → render-batch-UMBUQWWS.js} +5 -5
  147. package/dist/renderSetupWorker.js +6 -6
  148. package/dist/{resolver-IHNWMDJA.js → resolver-KO6WWO5P.js} +6 -6
  149. package/dist/{sherpa-FXBBYMDR.js → sherpa-DADGYWNR.js} +15 -15
  150. package/dist/skills/hyperframes/references/frame-worker-core.md +11 -9
  151. package/dist/skills/hyperframes/references/subagent-dispatch.md +1 -1
  152. package/dist/skills/hyperframes-cli/SKILL.md +3 -0
  153. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +5 -1
  154. package/dist/skills/media-use/audio/scripts/lib/tts.cleanup.test.mjs +175 -0
  155. package/dist/skills/media-use/audio/scripts/lib/tts.mjs +24 -19
  156. package/dist/skills/media-use/references/grading.md +1 -2
  157. package/dist/skills/media-use/references/meta.md +17 -17
  158. package/dist/skills/media-use/references/operations.md +6 -6
  159. package/dist/skills/media-use/references/setup-providers.md +3 -4
  160. package/dist/skills/media-use/scripts/lib/cutlist.mjs +9 -2
  161. package/dist/skills/media-use/scripts/lib/cutlist.test.mjs +12 -0
  162. package/dist/skills/media-use/scripts/lib/telemetry.mjs +4 -1
  163. package/dist/skills/media-use/scripts/lib/telemetry.test.mjs +20 -0
  164. package/dist/skills/media-use/scripts/transcript-cut.mjs +23 -4
  165. package/dist/skills/media-use/scripts/transcript-cut.test.mjs +224 -0
  166. package/dist/{skills-ALLSN7TB.js → skills-QLKSNU4Y.js} +5 -5
  167. package/dist/{skillsUpdateCheck-EIT5NWM6.js → skillsUpdateCheck-Z2QQGF2W.js} +3 -3
  168. package/dist/{snapshot-Y3I76OIZ.js → snapshot-D5BBFXOS.js} +342 -154
  169. package/dist/{src-7V6LBC56.js → src-AVQBAECC.js} +10 -8
  170. package/dist/{src-S5IZVJUX.js → src-V7263E47.js} +11 -11
  171. package/dist/{staticProjectServer-QLWWGHZE.js → staticProjectServer-HNWSVEWN.js} +20 -20
  172. package/dist/studio/assets/{hyperframes-player-kup62bDR.js → hyperframes-player-0BY7-PK7.js} +1 -1
  173. package/dist/studio/assets/{index-B8BBYY8L.js → index-COrWdzlj.js} +1 -1
  174. package/dist/studio/assets/{index-CS_m0TkX.js → index-p-VXwuJ2.js} +132 -132
  175. package/dist/studio/assets/{index-DQ5jGodF.js → index-rmD5k_ES.js} +1 -1
  176. package/dist/studio/index.html +1 -1
  177. package/dist/{studio-api-UBFLZ3DA.js → studio-api-UXKTDWLT.js} +30 -16
  178. package/dist/{studioServer-REOVCIFP.js → studioServer-JOVR24O3.js} +51 -51
  179. package/dist/{synthesize-22B7L5GX.js → synthesize-MBDVUSH3.js} +2 -1
  180. package/dist/{telemetry-C3GDIXHO.js → telemetry-UW7XAM5W.js} +3 -3
  181. package/dist/{timeline-H42EGLMT.js → timeline-JSGTZ3AN.js} +73 -20
  182. package/dist/{tokens-2K7ISTKV.js → tokens-ADDBGTQ7.js} +2 -2
  183. package/dist/{transcribe-NUPASAUP.js → transcribe-FEHOK626.js} +14 -14
  184. package/dist/{transcribe-DVM7UFZZ.js → transcribe-P6MJGSZJ.js} +20 -20
  185. package/dist/{tts-QSAQZVEZ.js → tts-POI553RG.js} +1 -1
  186. package/dist/{updateCheck-3RWFSEZD.js → updateCheck-IBWMLXQ4.js} +2 -2
  187. package/dist/{upgrade-YKKL36N7.js → upgrade-NHZ7AYPO.js} +2 -2
  188. package/dist/{urlDownloader-6JNJYLPN.js → urlDownloader-ULDRBWS5.js} +8 -8
  189. package/dist/{validate-Z7KQT7GO.js → validate-NVWNXNBV.js} +25 -25
  190. package/dist/{video-EXL2JDSL.js → video-74DRD2DN.js} +9 -9
  191. package/package.json +1 -1
  192. package/dist/chunk-CEND6BLF.js +0 -3795
  193. package/dist/chunk-WBLXWOYK.js +0 -15
@@ -6,13 +6,13 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-NFQY7EIC.js";
9
+ } from "./chunk-IBYC3VUA.js";
10
10
  import "./chunk-K2FLNJVB.js";
11
11
  import {
12
12
  ensureDOMParser
13
13
  } from "./chunk-442JNXRM.js";
14
- import "./chunk-3UAIVF4L.js";
15
- import "./chunk-6KWA3XPS.js";
14
+ import "./chunk-H2SGM2V2.js";
15
+ import "./chunk-KZ3L3W4Q.js";
16
16
  import "./chunk-VWG7OQKU.js";
17
17
  import "./chunk-XBSPQ52S.js";
18
18
  import {
@@ -25,12 +25,12 @@ import {
25
25
  } from "./chunk-ZTZA4UWZ.js";
26
26
  import {
27
27
  withMeta
28
- } from "./chunk-AFRXL75S.js";
28
+ } from "./chunk-YYEYOFHW.js";
29
29
  import "./chunk-K4WIOZFP.js";
30
30
  import "./chunk-XUXGIA7H.js";
31
31
  import "./chunk-WERLJGIC.js";
32
32
  import "./chunk-ISN5GRYI.js";
33
- import "./chunk-I6DATIHC.js";
33
+ import "./chunk-IZIRIDJH.js";
34
34
  import "./chunk-AMKC3AXA.js";
35
35
  import "./chunk-JYVGYKXG.js";
36
36
  import {
@@ -46,8 +46,9 @@ import "./chunk-SDYDNHEE.js";
46
46
  import {
47
47
  ancestor,
48
48
  parse,
49
+ parseExpressionAt,
49
50
  simple
50
- } from "./chunk-2PSPARWP.js";
51
+ } from "./chunk-TYXH3EKP.js";
51
52
  import "./chunk-KNU5COPB.js";
52
53
  import {
53
54
  __toESM
@@ -873,19 +874,19 @@ function collectIdentifierBindingIndex(ast) {
873
874
  }
874
875
  }
875
876
  function addBinding(bindings, scopeNode, name, selector) {
876
- let scoped = bindings.get(scopeNode);
877
+ let scoped = bindings.byScope.get(scopeNode);
877
878
  if (!scoped) {
878
879
  scoped = /* @__PURE__ */ new Map();
879
- bindings.set(scopeNode, scoped);
880
+ bindings.byScope.set(scopeNode, scoped);
880
881
  }
881
882
  if (!scoped.has(name)) scoped.set(name, selector);
882
883
  }
883
884
  function lookupBindingFromAncestors(name, ancestors, bindings) {
884
885
  for (const scopeNode of scopeChainFromAncestors(ancestors)) {
885
- const selector = bindings.get(scopeNode)?.get(name);
886
+ const selector = bindings.byScope.get(scopeNode)?.get(name);
886
887
  if (selector !== void 0) return selector;
887
888
  }
888
- return bindings.get(null)?.get(name) ?? null;
889
+ return bindings.byScope.get(null)?.get(name) ?? null;
889
890
  }
890
891
  function isFunctionNode2(node) {
891
892
  return node?.type === "ArrowFunctionExpression" || node?.type === "FunctionExpression" || node?.type === "FunctionDeclaration";
@@ -924,7 +925,7 @@ function collectScopeBindings(ast) {
924
925
  return bindings;
925
926
  }
926
927
  function collectTargetBindings(ast, scope, identifierBindings) {
927
- const bindings = /* @__PURE__ */ new Map();
928
+ const bindings = { byScope: /* @__PURE__ */ new Map(), identifiers: identifierBindings };
928
929
  ancestor(ast, {
929
930
  VariableDeclarator(node, _, ancestors) {
930
931
  const name = node.id?.name;
@@ -1005,7 +1006,18 @@ function resolveTargetSelector(node, ancestors, scope, bindings) {
1005
1006
  return typeof node.value === "string" ? node.value : null;
1006
1007
  }
1007
1008
  if (node.type === "Identifier") {
1008
- return lookupBindingFromAncestors(node.name, ancestors, bindings);
1009
+ const bound = lookupBindingFromAncestors(node.name, ancestors, bindings);
1010
+ if (bound) return bound;
1011
+ const declaration = findVisibleIdentifierDeclaration(
1012
+ node.name,
1013
+ ancestors,
1014
+ bindings.identifiers,
1015
+ node.start
1016
+ );
1017
+ if (declaration?.kind !== "const" || bindings.identifiers.reassignedDeclarations.has(declaration.node))
1018
+ return null;
1019
+ const literal = resolveNode(declaration.node.init, scope);
1020
+ return typeof literal === "string" ? literal : null;
1009
1021
  }
1010
1022
  if (node.type === "CallExpression") {
1011
1023
  return selectorFromQueryCall(node, scope);
@@ -1030,7 +1042,7 @@ function describeProxyTarget(targetNode, varsNode, scope) {
1030
1042
  const onUpdate = findPropertyNode(varsNode, "onUpdate");
1031
1043
  const driven = onUpdate ? drivenDomChannel(onUpdate) : void 0;
1032
1044
  if (driven) return `proxy \u2192 ${driven}`;
1033
- return "dwell/hold";
1045
+ return objNode.properties.length === 0 && !onUpdate ? "dwell/hold" : "proxy (unresolved DOM association)";
1034
1046
  }
1035
1047
  function isStyleAssignmentTarget(left) {
1036
1048
  return left?.type === "MemberExpression" && left.object?.type === "MemberExpression" && left.object.property?.name === "style" && !!left.property?.name;
@@ -1549,6 +1561,8 @@ function tweenCallToAnimation(call, scope, source, identifierBindings) {
1549
1561
  duration,
1550
1562
  ease
1551
1563
  };
1564
+ if (["stagger", "repeat", "repeatDelay", "delay"].some((key) => findPropertyNode(call.varsArg, key)))
1565
+ anim.inspectionTiming = inspectionTiming(call.varsArg, scope);
1552
1566
  if (targetIdentity) anim.targetIdentity = targetIdentity;
1553
1567
  if (!hasPositionArg) anim.implicitPosition = true;
1554
1568
  let group = classifyTweenPropertyGroup(properties);
@@ -1571,14 +1585,51 @@ function tweenCallToAnimation(call, scope, source, identifierBindings) {
1571
1585
  if (provenance) anim.provenance = provenance;
1572
1586
  return anim;
1573
1587
  }
1588
+ function inspectionTiming(varsNode, scope) {
1589
+ const numeric = (key) => {
1590
+ const node2 = findPropertyNode(varsNode, key);
1591
+ if (!node2) return 0;
1592
+ const value = resolveNode(node2, scope);
1593
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
1594
+ };
1595
+ const node = findPropertyNode(varsNode, "stagger");
1596
+ let stagger = { each: 0 };
1597
+ if (node) {
1598
+ const value = resolveNode(node, scope);
1599
+ stagger = typeof value === "number" ? { each: value } : null;
1600
+ if (node.type === "ObjectExpression" && !(node.properties ?? []).some(
1601
+ (p) => !["each", "amount", "from", "ease", "axis", "grid"].includes(propKeyName(p) ?? "")
1602
+ )) {
1603
+ const each = resolveNode(findPropertyNode(node, "each"), scope);
1604
+ const amount = resolveNode(findPropertyNode(node, "amount"), scope);
1605
+ if (!findPropertyNode(node, "grid") && !findPropertyNode(node, "axis")) {
1606
+ if (typeof amount === "number") stagger = { amount };
1607
+ else if (typeof each === "number") stagger = { each };
1608
+ }
1609
+ }
1610
+ }
1611
+ return {
1612
+ repeat: numeric("repeat"),
1613
+ repeatDelay: numeric("repeatDelay"),
1614
+ delay: numeric("delay"),
1615
+ stagger
1616
+ };
1617
+ }
1574
1618
  function staggerAmount(raw) {
1575
1619
  if (typeof raw === "number") return raw;
1576
1620
  if (typeof raw !== "string") return void 0;
1577
1621
  const src = raw.startsWith("__raw:") ? raw.slice(6) : raw;
1578
- const m = /(?:each\s*:\s*)?(-?\d+(?:\.\d+)?)/.exec(src);
1579
- if (!m) return void 0;
1580
- const n = Number.parseFloat(m[1]);
1581
- return Number.isFinite(n) ? n : void 0;
1622
+ try {
1623
+ const node = parseExpressionAt(src, 0, { ecmaVersion: "latest" });
1624
+ if (src.slice(node.end).trim()) return void 0;
1625
+ const value = resolveNode(
1626
+ node.type === "ObjectExpression" ? findPropertyNode(node, "each") : node,
1627
+ /* @__PURE__ */ new Map()
1628
+ );
1629
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
1630
+ } catch {
1631
+ return void 0;
1632
+ }
1582
1633
  }
1583
1634
  function restValue(prop) {
1584
1635
  return prop === "opacity" || prop.startsWith("scale") ? 1 : 0;
@@ -1913,7 +1964,7 @@ function inlineStyleText(html) {
1913
1964
  function num(v) {
1914
1965
  if (typeof v === "number") return v;
1915
1966
  if (typeof v === "string") {
1916
- const n = Number.parseFloat(v);
1967
+ const n = Number(v);
1917
1968
  return Number.isFinite(n) ? n : null;
1918
1969
  }
1919
1970
  return null;
@@ -1926,29 +1977,12 @@ function isPositionTween(anim) {
1926
1977
  (kf) => "x" in kf.properties || "y" in kf.properties
1927
1978
  );
1928
1979
  }
1929
- function baseProps(props) {
1930
- const base = {};
1931
- for (const k of Object.keys(props)) {
1932
- if (k === "ease") continue;
1933
- base[k] = k === "opacity" || k.startsWith("scale") ? 1 : 0;
1934
- }
1935
- return base;
1936
- }
1937
1980
  function flatKeyframes(anim) {
1938
- if (anim.method === "fromTo") {
1939
- return [
1940
- { pct: 0, time: 0, properties: anim.fromProperties ?? {} },
1941
- { pct: 100, time: 0, properties: anim.properties ?? {} }
1942
- ];
1943
- }
1944
1981
  const vars = anim.properties ?? {};
1945
- const base = baseProps(vars);
1946
- return anim.method === "from" ? [
1947
- { pct: 0, time: 0, properties: vars },
1948
- { pct: 100, time: 0, properties: base }
1949
- ] : [
1950
- { pct: 0, time: 0, properties: base },
1951
- { pct: 100, time: 0, properties: vars }
1982
+ if (anim.method === "set") return [{ pct: 100, time: 0, properties: vars }];
1983
+ return [
1984
+ { pct: 0, time: 0, properties: anim.method === "from" ? vars : anim.fromProperties ?? {} },
1985
+ { pct: 100, time: 0, properties: anim.method === "from" ? {} : vars }
1952
1986
  ];
1953
1987
  }
1954
1988
  function isHoldMarker(anim) {
@@ -1962,24 +1996,103 @@ function cleanProps(props) {
1962
1996
  }
1963
1997
  return out;
1964
1998
  }
1965
- function surfaceTween(anim) {
1966
- const start = typeof anim.resolvedStart === "number" ? anim.resolvedStart : num(anim.position) ?? 0;
1967
- const duration = anim.duration ?? 0;
1968
- let shape;
1969
- let rawKfs;
1970
- if (anim.keyframes?.keyframes?.length) {
1971
- shape = "keyframes";
1972
- rawKfs = anim.keyframes.keyframes;
1973
- } else if (anim.arcPath?.enabled) {
1974
- shape = "motionPath";
1975
- rawKfs = [];
1976
- } else {
1977
- shape = "flat";
1978
- rawKfs = flatKeyframes(anim).map((k) => ({ percentage: k.pct, properties: k.properties }));
1999
+ function round(value) {
2000
+ return Math.round(value * 1e3) / 1e3;
2001
+ }
2002
+ function knownRepeatCycle(timing) {
2003
+ const { repeat, repeatDelay, stagger } = timing;
2004
+ if (repeat === null || repeat < 0 || repeatDelay === null || stagger === null) return null;
2005
+ return { repeat, repeatDelay, stagger };
2006
+ }
2007
+ function targetCount(html, selector) {
2008
+ try {
2009
+ return queryIncludingTemplates(html, selector).length;
2010
+ } catch {
2011
+ return null;
1979
2012
  }
2013
+ }
2014
+ function staggerSpread(html, selector, stagger) {
2015
+ const count = targetCount(html, selector);
2016
+ if (!count) return null;
2017
+ if ("amount" in stagger) return count > 1 ? Math.abs(stagger.amount) : 0;
2018
+ return Math.abs(stagger.each) * (count - 1);
2019
+ }
2020
+ function tweenSpan(anim, duration, html) {
2021
+ if (duration === null) return null;
2022
+ if (!anim.inspectionTiming) return duration;
2023
+ const cycle = knownRepeatCycle(anim.inspectionTiming);
2024
+ if (!cycle) return null;
2025
+ const spread = anim.extras?.stagger === void 0 ? 0 : staggerSpread(html, anim.targetSelector, cycle.stagger);
2026
+ if (spread === null) return null;
2027
+ return round((duration + spread) * (cycle.repeat + 1) + cycle.repeatDelay * cycle.repeat);
2028
+ }
2029
+ function tweenStart(anim) {
2030
+ if (followsTimelineCursor(anim) && typeof anim.resolvedStart !== "number") return null;
2031
+ const position = typeof anim.resolvedStart === "number" ? anim.resolvedStart : num(anim.position);
2032
+ const delay = anim.inspectionTiming ? anim.inspectionTiming.delay : 0;
2033
+ return position === null || delay === null ? null : position + delay;
2034
+ }
2035
+ function tweenDuration(anim) {
2036
+ if (anim.method === "set") return 0;
2037
+ if (anim.durationUnresolved) return null;
2038
+ return anim.duration ?? GSAP_DEFAULT_DURATION;
2039
+ }
2040
+ function syntheticStaggerStops(anim) {
2041
+ const stops = anim.keyframes?.keyframes ?? [];
2042
+ return stops.length > 0 && stops.every((stop) => "stagger" in stop.properties);
2043
+ }
2044
+ function tweenShape(anim) {
2045
+ if (anim.hasUnresolvedKeyframes) return { shape: "keyframes", rawKfs: [] };
2046
+ if (anim.keyframes?.keyframes?.length && !syntheticStaggerStops(anim))
2047
+ return { shape: "keyframes", rawKfs: anim.keyframes.keyframes };
2048
+ if (anim.arcPath?.enabled) return { shape: "motionPath", rawKfs: [] };
2049
+ return {
2050
+ shape: "flat",
2051
+ rawKfs: flatKeyframes(anim).map((k) => ({ percentage: k.pct, properties: k.properties }))
2052
+ };
2053
+ }
2054
+ function keyframeTime(start, duration, pct) {
2055
+ if (start === null || duration === null) return null;
2056
+ return round(start + pct / 100 * duration);
2057
+ }
2058
+ function missesEndpointProperties(anim, keyframes) {
2059
+ if (anim.method === "set") return false;
2060
+ const authored = Object.keys(anim.properties).filter((p) => p !== "ease" && p !== "data");
2061
+ return keyframes.some((k) => authored.some((p) => !(p in k.properties)));
2062
+ }
2063
+ function hasRawExpressions(keyframes) {
2064
+ return keyframes.some(
2065
+ (k) => Object.values(k.properties).some((v) => typeof v === "string" && v.startsWith("__raw:"))
2066
+ );
2067
+ }
2068
+ function hasNoProperties(anim) {
2069
+ return !Object.keys(anim.properties).length && !anim.keyframes;
2070
+ }
2071
+ function unresolvedFields(anim, timing, keyframes) {
2072
+ const checks = [
2073
+ ["start", timing.start === null],
2074
+ ["duration", timing.duration === null],
2075
+ ["target", anim.hasUnresolvedSelector === true],
2076
+ ["keyframes", anim.hasUnresolvedKeyframes === true],
2077
+ ["properties", hasNoProperties(anim)],
2078
+ ["totalDuration", timing.totalDuration === null],
2079
+ ["endpointProperties", missesEndpointProperties(anim, keyframes)],
2080
+ ["propertyExpressions", hasRawExpressions(keyframes)]
2081
+ ];
2082
+ return checks.filter(([, isUnresolved]) => isUnresolved).map(([field]) => field);
2083
+ }
2084
+ function keyframeBasis(shape, anim) {
2085
+ const staggered = anim.keyframes?.keyframes.some((k) => "stagger" in k.properties);
2086
+ return shape === "flat" || staggered ? "tween-endpoints" : "authored-stops";
2087
+ }
2088
+ function surfaceTween(anim, html) {
2089
+ const start = tweenStart(anim);
2090
+ const duration = tweenDuration(anim);
2091
+ const totalDuration = tweenSpan(anim, duration, html);
2092
+ const { shape, rawKfs } = tweenShape(anim);
1980
2093
  const keyframes = rawKfs.map((kf) => ({
1981
2094
  pct: kf.percentage,
1982
- time: Math.round((start + kf.percentage / 100 * duration) * 1e3) / 1e3,
2095
+ time: keyframeTime(start, duration, kf.percentage),
1983
2096
  properties: cleanProps(kf.properties)
1984
2097
  }));
1985
2098
  return {
@@ -1987,16 +2100,22 @@ function surfaceTween(anim) {
1987
2100
  target: anim.targetSelector,
1988
2101
  method: anim.method,
1989
2102
  group: anim.propertyGroup,
1990
- start: Math.round(start * 1e3) / 1e3,
2103
+ start: start === null ? null : round(start),
1991
2104
  duration,
1992
- end: Math.round((start + duration) * 1e3) / 1e3,
2105
+ end: start === null || totalDuration === null ? null : round(start + totalDuration),
2106
+ totalDuration,
2107
+ position: anim.position,
2108
+ ease: anim.ease,
2109
+ unresolved: unresolvedFields(anim, { start, duration, totalDuration }, keyframes),
2110
+ keyframeBasis: keyframeBasis(shape, anim),
1993
2111
  shape,
1994
2112
  keyframes,
1995
2113
  path: isPositionTween(anim) ? positionPath(keyframes) : null
1996
2114
  };
1997
2115
  }
1998
2116
  function positionPath(keyframes) {
1999
- if (keyframes.length === 0) return null;
2117
+ if (keyframes.length === 0 || !keyframes.every((k) => num(k.properties.x) !== null && num(k.properties.y) !== null))
2118
+ return null;
2000
2119
  let lastX = 0;
2001
2120
  let lastY = 0;
2002
2121
  return keyframes.map((kf) => {
@@ -2007,6 +2126,21 @@ function positionPath(keyframes) {
2007
2126
  return { x: lastX, y: lastY };
2008
2127
  });
2009
2128
  }
2129
+ function followsTimelineCursor(anim) {
2130
+ return !anim.global && (anim.implicitPosition === true || typeof anim.position !== "number");
2131
+ }
2132
+ function movesCursorUnpredictably(anim, tween) {
2133
+ if (anim.global) return false;
2134
+ const delay = anim.inspectionTiming?.delay;
2135
+ const delayUnknown = delay === null || typeof delay === "number" && delay !== 0;
2136
+ return tween.totalDuration === null || tween.totalDuration !== tween.duration || delayUnknown;
2137
+ }
2138
+ function forgetStart(tween) {
2139
+ tween.start = null;
2140
+ tween.end = null;
2141
+ for (const point of tween.keyframes) point.time = null;
2142
+ if (!tween.unresolved.includes("start")) tween.unresolved.push("start");
2143
+ }
2010
2144
  function surfaceComposition(html, label, source) {
2011
2145
  const script = inlineScriptText(html);
2012
2146
  let animations = [];
@@ -2015,7 +2149,13 @@ function surfaceComposition(html, label, source) {
2015
2149
  } catch {
2016
2150
  animations = [];
2017
2151
  }
2018
- const tweens = animations.filter((a) => !isHoldMarker(a)).map(surfaceTween);
2152
+ let cursorChanged = false;
2153
+ const tweens = animations.filter((a) => !isHoldMarker(a)).map((anim) => {
2154
+ const tween = surfaceTween(anim, html);
2155
+ if (cursorChanged && followsTimelineCursor(anim)) forgetStart(tween);
2156
+ if (movesCursorUnpredictably(anim, tween)) cursorChanged = true;
2157
+ return tween;
2158
+ });
2019
2159
  attachComposedAncestors(tweens, html);
2020
2160
  return {
2021
2161
  composition: label,
@@ -2047,7 +2187,7 @@ function parseDeclarations(body) {
2047
2187
  function stripRanges(text, ranges) {
2048
2188
  let out = "";
2049
2189
  let cursor = 0;
2050
- for (const range of [...ranges].sort((a, b) => a.start - b.start)) {
2190
+ for (const range of [...ranges].sort((a, b) => (a.start ?? 0) - (b.start ?? 0))) {
2051
2191
  out += text.slice(cursor, range.start);
2052
2192
  cursor = range.end;
2053
2193
  }
@@ -2219,8 +2359,8 @@ function summarizeMotion(tweens, sel) {
2219
2359
  if (n !== null) bumpRange(ranges, k, n);
2220
2360
  }
2221
2361
  }
2222
- const varying = [...ranges.entries()].filter(([, r]) => r.max - r.min > 0.5).map(([k, r]) => `${k} ${Math.round(r.min)}..${Math.round(r.max)}`);
2223
- return varying.length ? varying.join(", ") : "(static)";
2362
+ const varying = [...ranges.entries()].filter(([, r]) => r.max - r.min > 1e-6).map(([k, r]) => `${k} ${round(r.min)}..${round(r.max)}`);
2363
+ return varying.length ? varying.join(", ") : "(no resolved variation; runtime verification required)";
2224
2364
  }
2225
2365
  function bumpRange(ranges, k, n) {
2226
2366
  const r = ranges.get(k);
@@ -2234,29 +2374,28 @@ function pathTravels(points) {
2234
2374
  if (!first) return false;
2235
2375
  return points.some((p) => Math.abs(p.x - first.x) > 0.5 || Math.abs(p.y - first.y) > 0.5);
2236
2376
  }
2377
+ function isDrawnStroke(t) {
2378
+ if (t.method === "set" || t.start === null || t.end === null) return false;
2379
+ return !!t.path && t.path.length >= 2 && pathTravels(t.path);
2380
+ }
2381
+ function traceOf(target, list) {
2382
+ const strokes = [...list].sort((a, b) => (a.start ?? 0) - (b.start ?? 0)).map((t) => ({
2383
+ id: t.id,
2384
+ start: t.start,
2385
+ end: t.end,
2386
+ keyframes: t.keyframes,
2387
+ points: t.path
2388
+ }));
2389
+ return { target, strokes };
2390
+ }
2237
2391
  function groupTraces(tweens) {
2238
2392
  const byTarget = /* @__PURE__ */ new Map();
2239
- for (const t of tweens) {
2240
- if (t.method === "set") continue;
2241
- if (!t.path || t.path.length < 2) continue;
2242
- if (!pathTravels(t.path)) continue;
2393
+ for (const t of tweens.filter(isDrawnStroke)) {
2243
2394
  const list = byTarget.get(t.target);
2244
2395
  if (list) list.push(t);
2245
2396
  else byTarget.set(t.target, [t]);
2246
2397
  }
2247
- const traces = [];
2248
- for (const [target, list] of byTarget) {
2249
- if (list.length < 2) continue;
2250
- const strokes = [...list].sort((a, b) => a.start - b.start).map((t) => ({
2251
- id: t.id,
2252
- start: t.start,
2253
- end: t.end,
2254
- keyframes: t.keyframes,
2255
- points: t.path
2256
- }));
2257
- traces.push({ target, strokes });
2258
- }
2259
- return traces;
2398
+ return [...byTarget].filter(([, list]) => list.length >= 2).map(([target, list]) => traceOf(target, list));
2260
2399
  }
2261
2400
  function collectCompositions(indexPath) {
2262
2401
  const html = readFileSync(indexPath, "utf-8");
@@ -2279,8 +2418,13 @@ function collectCompositions(indexPath) {
2279
2418
  function fmtProps(props) {
2280
2419
  return Object.entries(props).filter(([k]) => k !== "ease").map(([k, v]) => `${k}:${v}`).join(" ");
2281
2420
  }
2421
+ function formatSeconds(value) {
2422
+ return value === null ? "unresolved" : `${value}s`;
2423
+ }
2282
2424
  function printTween(t) {
2283
- const timing = c.dim(`@${t.start}s\u2192${t.end}s (${t.duration}s)`);
2425
+ const timing = c.dim(
2426
+ `@${formatSeconds(t.start)}\u2192${formatSeconds(t.end)} (${formatSeconds(t.duration)})`
2427
+ );
2284
2428
  const group = t.group ? c.dim(` ${t.group}`) : "";
2285
2429
  console.log(` ${c.accent(t.target)}${group} ${c.dim(t.method)}/${t.shape} ${timing}`);
2286
2430
  if (t.shape === "motionPath") {
@@ -2289,6 +2433,7 @@ function printTween(t) {
2289
2433
  const kfLine = t.keyframes.map((k) => `${k.pct}% {${fmtProps(k.properties)}}`).join(" ");
2290
2434
  console.log(` ${c.dim(kfLine)}`);
2291
2435
  }
2436
+ if (t.unresolved.length) console.log(c.dim(` unresolved: ${t.unresolved.join(", ")}`));
2292
2437
  if (t.composedWith?.length) {
2293
2438
  for (const a of t.composedWith) {
2294
2439
  console.log(c.dim(` \u2191 composed with ${c.accent(a.selector)}${c.dim(": " + a.summary)}`));
@@ -2297,8 +2442,8 @@ function printTween(t) {
2297
2442
  console.log();
2298
2443
  }
2299
2444
  function printTrace(tr) {
2300
- const start = Math.min(...tr.strokes.map((s) => s.start));
2301
- const end = Math.max(...tr.strokes.map((s) => s.end));
2445
+ const start = Math.min(...tr.strokes.flatMap((s) => s.start === null ? [] : [s.start]));
2446
+ const end = Math.max(...tr.strokes.flatMap((s) => s.end === null ? [] : [s.end]));
2302
2447
  const n = tr.strokes.length;
2303
2448
  console.log(
2304
2449
  ` ${c.accent(tr.target)}${c.dim(" position")} ${c.dim("trace")} ${c.dim(`${n} strokes`)} ${c.dim(`@${start}s\u2192${end}s`)}`
@@ -2369,7 +2514,7 @@ function printOnionShotSaved(saved, elementCount) {
2369
2514
  console.log();
2370
2515
  }
2371
2516
  async function runOnionShot(comps, allComps, projectDir, entryFile, args) {
2372
- const { captureMotionPathShot } = await import("./motionShot-O7AOMPUN.js");
2517
+ const { captureMotionPathShot } = await import("./motionShot-ARRL7WXT.js");
2373
2518
  const requests = collectShotSelectors(args.selector ? allComps : comps);
2374
2519
  const guardError = onionShotGuardError(projectDir, requests, args.ghost ?? false);
2375
2520
  if (guardError) {
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseOutputResolutionFlag
9
- } from "./chunk-DMKI64EZ.js";
9
+ } from "./chunk-FSZAFCU7.js";
10
10
  import {
11
11
  readAllowedCompositionFpsFromDir
12
12
  } from "./chunk-WPNE5NEP.js";
@@ -19,11 +19,11 @@ import {
19
19
  import {
20
20
  c
21
21
  } from "./chunk-ZTZA4UWZ.js";
22
- import "./chunk-PCWOSS7G.js";
23
- import "./chunk-CEND6BLF.js";
22
+ import "./chunk-5ERVRJMV.js";
23
+ import "./chunk-S3RCK56N.js";
24
24
  import "./chunk-VC76R6W2.js";
25
25
  import "./chunk-UJKQWGFF.js";
26
- import "./chunk-LFNQDTSH.js";
26
+ import "./chunk-VYKPBRCB.js";
27
27
  import "./chunk-OFQWTKPW.js";
28
28
  import "./chunk-DPVXBVLL.js";
29
29
  import "./chunk-T76PLPD6.js";
@@ -32,7 +32,7 @@ import "./chunk-RQVDTPGD.js";
32
32
  import "./chunk-3RM2ETQT.js";
33
33
  import "./chunk-BSQ7XANM.js";
34
34
  import "./chunk-SDYDNHEE.js";
35
- import "./chunk-2PSPARWP.js";
35
+ import "./chunk-TYXH3EKP.js";
36
36
  import "./chunk-IXLUTE6N.js";
37
37
  import "./chunk-M2WBOQ2Q.js";
38
38
 
@@ -289,7 +289,7 @@ Or, for an opt-in dev setup:
289
289
  console.error(`[lambda render] --fps must be 24, 30, or 60; got ${fpsRaw}.`);
290
290
  failCommand();
291
291
  }
292
- const { runRender } = await import("./render-HS3YOLSD.js");
292
+ const { runRender } = await import("./render-6GH5FSXU.js");
293
293
  const renderResolution = parseOutputResolution(args["output-resolution"]);
294
294
  await runRender({
295
295
  projectDir,
@@ -343,7 +343,7 @@ Or, for an opt-in dev setup:
343
343
  console.error(`[lambda render-batch] --fps must be 24, 30, or 60; got ${fpsRaw}.`);
344
344
  failCommand();
345
345
  }
346
- const { runRenderBatch } = await import("./render-batch-J64AJHQY.js");
346
+ const { runRenderBatch } = await import("./render-batch-UMBUQWWS.js");
347
347
  const batchResolution = parseOutputResolution(args["output-resolution"]);
348
348
  await runRenderBatch({
349
349
  projectDir,
@@ -10,39 +10,39 @@ import {
10
10
  layout_default,
11
11
  loadBrowserScript,
12
12
  parseAt
13
- } from "./chunk-FPAT5HTI.js";
14
- import "./chunk-S5F26DUL.js";
13
+ } from "./chunk-BYJYQWEX.js";
14
+ import "./chunk-GQETH4PE.js";
15
15
  import "./chunk-XUHOIDKG.js";
16
- import "./chunk-A6ZO4BX7.js";
16
+ import "./chunk-XEFFJRYX.js";
17
17
  import "./chunk-X7MTZ4T2.js";
18
- import "./chunk-UAIUVPZE.js";
18
+ import "./chunk-SWCSL6WS.js";
19
19
  import "./chunk-FH7WODJH.js";
20
- import "./chunk-AXPNVC3N.js";
21
- import "./chunk-423DJVX2.js";
20
+ import "./chunk-4UMKAUZI.js";
21
+ import "./chunk-PKO2EWO7.js";
22
22
  import "./chunk-WPNE5NEP.js";
23
- import "./chunk-UVVI2NJQ.js";
24
- import "./chunk-ZNHAJCEA.js";
25
- import "./chunk-FJWEYVEM.js";
26
- import "./chunk-XXPYZBZ3.js";
27
- import "./chunk-EL5QVJEG.js";
28
- import "./chunk-AIJS74LG.js";
29
- import "./chunk-NFQY7EIC.js";
23
+ import "./chunk-HBCRRCTX.js";
24
+ import "./chunk-PRXAOZWZ.js";
25
+ import "./chunk-C6TPGUWD.js";
26
+ import "./chunk-7FYFEXD2.js";
27
+ import "./chunk-XINGD6MS.js";
28
+ import "./chunk-FFDC5OWV.js";
29
+ import "./chunk-IBYC3VUA.js";
30
30
  import "./chunk-K2FLNJVB.js";
31
- import "./chunk-AKYQGZLU.js";
31
+ import "./chunk-EVTHG34H.js";
32
32
  import "./chunk-442JNXRM.js";
33
- import "./chunk-XQMEGSHG.js";
33
+ import "./chunk-D6RJXQLD.js";
34
34
  import "./chunk-XT7X6QCP.js";
35
35
  import "./chunk-4YYJOFKS.js";
36
36
  import "./chunk-HVW7ABXD.js";
37
- import "./chunk-BLRJKBKP.js";
38
- import "./chunk-M6UDJ2E7.js";
39
- import "./chunk-OQ7XMM3S.js";
37
+ import "./chunk-QESSGUKX.js";
38
+ import "./chunk-6Z4YJ5Q3.js";
39
+ import "./chunk-3HPJM5IQ.js";
40
40
  import "./chunk-AWDFDFI3.js";
41
41
  import "./chunk-P6LJ4Y32.js";
42
42
  import "./chunk-GMECXFAN.js";
43
- import "./chunk-374QQGBQ.js";
44
- import "./chunk-3UAIVF4L.js";
45
- import "./chunk-6KWA3XPS.js";
43
+ import "./chunk-5CS4T6C6.js";
44
+ import "./chunk-H2SGM2V2.js";
45
+ import "./chunk-KZ3L3W4Q.js";
46
46
  import "./chunk-VWG7OQKU.js";
47
47
  import "./chunk-XBSPQ52S.js";
48
48
  import "./chunk-S3S4TGEH.js";
@@ -51,37 +51,37 @@ import "./chunk-PBN6GBJE.js";
51
51
  import "./chunk-ZTZA4UWZ.js";
52
52
  import "./chunk-EOOEC32M.js";
53
53
  import "./chunk-TJSTGSAW.js";
54
- import "./chunk-AFRXL75S.js";
54
+ import "./chunk-YYEYOFHW.js";
55
55
  import "./chunk-K4WIOZFP.js";
56
56
  import "./chunk-XUXGIA7H.js";
57
57
  import "./chunk-WERLJGIC.js";
58
58
  import "./chunk-ISN5GRYI.js";
59
- import "./chunk-I6DATIHC.js";
59
+ import "./chunk-IZIRIDJH.js";
60
60
  import "./chunk-EOVYQ3IG.js";
61
61
  import "./chunk-AMKC3AXA.js";
62
- import "./chunk-5NAYNDBT.js";
63
- import "./chunk-WLIUULZQ.js";
62
+ import "./chunk-EXH6L2XZ.js";
63
+ import "./chunk-RN5I2DP5.js";
64
64
  import "./chunk-NE55C6S5.js";
65
65
  import "./chunk-JYVGYKXG.js";
66
- import "./chunk-PCWOSS7G.js";
67
- import "./chunk-CEND6BLF.js";
66
+ import "./chunk-5ERVRJMV.js";
67
+ import "./chunk-S3RCK56N.js";
68
68
  import "./chunk-VC76R6W2.js";
69
69
  import "./chunk-UJKQWGFF.js";
70
- import "./chunk-LFNQDTSH.js";
70
+ import "./chunk-VYKPBRCB.js";
71
71
  import "./chunk-OFQWTKPW.js";
72
72
  import "./chunk-DPVXBVLL.js";
73
73
  import "./chunk-T76PLPD6.js";
74
74
  import "./chunk-FXMKHHPO.js";
75
75
  import "./chunk-RQVDTPGD.js";
76
76
  import "./chunk-TWWSYAKJ.js";
77
- import "./chunk-JDB65PPT.js";
77
+ import "./chunk-YOEGUBBY.js";
78
78
  import "./chunk-IWFLMU2N.js";
79
- import "./chunk-APDLWWFG.js";
79
+ import "./chunk-3VGU2SH7.js";
80
80
  import "./chunk-VAS6HQX3.js";
81
81
  import "./chunk-3RM2ETQT.js";
82
82
  import "./chunk-BSQ7XANM.js";
83
83
  import "./chunk-SDYDNHEE.js";
84
- import "./chunk-2PSPARWP.js";
84
+ import "./chunk-TYXH3EKP.js";
85
85
  import "./chunk-IXLUTE6N.js";
86
86
  import "./chunk-KNU5COPB.js";
87
87
  import "./chunk-3GXQPCJC.js";