hyperframes 0.8.127 → 0.8.128

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 (171) hide show
  1. package/dist/{add-7CE5XYK2.js → add-DI4T5YLH.js} +15 -15
  2. package/dist/{animatedGifPrep-4VAIRX7D.js → animatedGifPrep-TSK322QL.js} +6 -6
  3. package/dist/{asset-22WQELZE.js → asset-CFW5RUI3.js} +2 -2
  4. package/dist/{assetCataloger-A2AITAHA.js → assetCataloger-MDMKZM4O.js} +2 -2
  5. package/dist/{auth-33GV2LO2.js → auth-7GR2JYK4.js} +2 -2
  6. package/dist/{autoUpdate-OIXGTNLS.js → autoUpdate-VPEWPSH6.js} +2 -2
  7. package/dist/{backgroundChecks-BVP36PXK.js → backgroundChecks-XU7Y6JEZ.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-URT4LT44.js → batchRender-HIRFZIUO.js} +3 -3
  10. package/dist/{beats-U34XHTAA.js → beats-6EJDWT63.js} +14 -14
  11. package/dist/{benchmark-FNGERKUQ.js → benchmark-F7U6WZGQ.js} +12 -12
  12. package/dist/{browser-35LEQMCO.js → browser-3ECFI3DA.js} +9 -9
  13. package/dist/{bundleWithLocalizedFonts-4CGUDHCA.js → bundleWithLocalizedFonts-OVFXAXV3.js} +2 -2
  14. package/dist/{capture-GZKMVNKK.js → capture-AC5TRHS5.js} +2 -2
  15. package/dist/{capture-M2JJS4F2.js → capture-YH5MUSL7.js} +9 -9
  16. package/dist/{catalog-OVTLU2MC.js → catalog-TRZAPAXM.js} +15 -15
  17. package/dist/{check-DBVGHGKO.js → check-HP7N4TPB.js} +34 -34
  18. package/dist/{checkBrowser-2SQIUOXA.js → checkBrowser-BHLSXZ3V.js} +35 -35
  19. package/dist/{chunk-CX7NQZDE.js → chunk-2CACHG7K.js} +3 -3
  20. package/dist/{chunk-LLU2BJYY.js → chunk-34C66AH5.js} +2 -2
  21. package/dist/{chunk-T6HJCRJC.js → chunk-3PDQ4PS2.js} +1 -1
  22. package/dist/{chunk-L32XKBOF.js → chunk-4AH73ZQW.js} +1 -1
  23. package/dist/{chunk-S2WNVYLQ.js → chunk-4DGJUQFZ.js} +1 -1
  24. package/dist/{chunk-MK2HBL6E.js → chunk-4IZNC32H.js} +1 -1
  25. package/dist/{chunk-RUYSBG3F.js → chunk-4NWOGZZS.js} +32 -30
  26. package/dist/{chunk-P4PMYDLR.js → chunk-4QJQOVN4.js} +1 -1
  27. package/dist/{chunk-HZHXHO4V.js → chunk-56P5SEOM.js} +1 -1
  28. package/dist/{chunk-Q3I4JEGM.js → chunk-5NZVDRRZ.js} +204 -133
  29. package/dist/{chunk-PVVUMILD.js → chunk-6F63NYFZ.js} +1 -1
  30. package/dist/{chunk-CSHKZ3SL.js → chunk-6RGOHYPP.js} +1 -1
  31. package/dist/{chunk-EKGD52A2.js → chunk-72WHJNAR.js} +2 -2
  32. package/dist/{chunk-D4NPKZFY.js → chunk-77EJSKGP.js} +2 -2
  33. package/dist/{chunk-ZOUDTLLH.js → chunk-A7VIBZLC.js} +2 -2
  34. package/dist/{chunk-QR7IRRUX.js → chunk-AQUXI6ZL.js} +5 -5
  35. package/dist/{chunk-7DPBFAYT.js → chunk-AVUUN2XD.js} +33 -31
  36. package/dist/{chunk-F4WYYNNG.js → chunk-BELUXCL4.js} +1 -1
  37. package/dist/{chunk-TL7Y6IBY.js → chunk-BK2KLAYO.js} +3 -3
  38. package/dist/{chunk-IAKZWKNV.js → chunk-BW773MMX.js} +4 -4
  39. package/dist/{chunk-RHBM33JF.js → chunk-CF6QQ6CL.js} +7 -7
  40. package/dist/{chunk-OE66T7R2.js → chunk-COD4GMYB.js} +1 -1
  41. package/dist/{chunk-ZLJXATSQ.js → chunk-FI4I7CME.js} +1 -1
  42. package/dist/{chunk-7YJ7CCKW.js → chunk-FN7KZDH7.js} +1 -1
  43. package/dist/{chunk-6ACXAUBT.js → chunk-H5TVAQAK.js} +4 -4
  44. package/dist/{chunk-GBTGTS35.js → chunk-IKSUSTJT.js} +1 -1
  45. package/dist/{chunk-YII7JZ2C.js → chunk-JDNYDR3Y.js} +1 -1
  46. package/dist/{chunk-6252EFFW.js → chunk-KC5COKLP.js} +1 -1
  47. package/dist/{chunk-V6LLKVWS.js → chunk-KUZTSKD2.js} +1 -1
  48. package/dist/{chunk-G33WTKF3.js → chunk-L5IFUB5G.js} +2 -2
  49. package/dist/{chunk-ZZAHIKFK.js → chunk-LGTAOCIM.js} +1 -1
  50. package/dist/{chunk-NDPSG5WQ.js → chunk-LRDOFHS5.js} +2 -2
  51. package/dist/{chunk-HXGPETEM.js → chunk-OESXJGYM.js} +1 -1
  52. package/dist/{chunk-7TSIAYXZ.js → chunk-PDAMK4Q5.js} +1 -1
  53. package/dist/{chunk-SC4T53X4.js → chunk-Q767NO4V.js} +3 -3
  54. package/dist/{chunk-K3ZB5A3K.js → chunk-QFQET76X.js} +54 -13
  55. package/dist/{chunk-YSCN66NT.js → chunk-QPRIMML2.js} +1 -1
  56. package/dist/{chunk-PZSNUSBM.js → chunk-RLK4ARFU.js} +2 -2
  57. package/dist/{chunk-BYI2K4RN.js → chunk-UROSVQOH.js} +2 -2
  58. package/dist/{chunk-S4AMCVAK.js → chunk-VKBSHU24.js} +5 -5
  59. package/dist/{chunk-KPY6JX4K.js → chunk-VQME2GRN.js} +11 -11
  60. package/dist/{chunk-32MY4AZN.js → chunk-WPHMNO44.js} +1345 -23
  61. package/dist/{chunk-TP4PR3SL.js → chunk-WULYBA5Y.js} +3 -3
  62. package/dist/{chunk-OLVR6P6R.js → chunk-WVU5CJXG.js} +1 -1
  63. package/dist/{chunk-AGNZ2QLE.js → chunk-YRKBFZDQ.js} +1 -1
  64. package/dist/{chunk-TPWWGKU7.js → chunk-ZJUKFZ2P.js} +2 -2
  65. package/dist/{chunk-OQN3AUOV.js → chunk-ZT4WM4B6.js} +12 -12
  66. package/dist/{clean-STQ2XPVL.js → clean-6Q36AWQL.js} +18 -18
  67. package/dist/cli.js +52 -52
  68. package/dist/{cloud-OQNTIR2N.js → cloud-GQ5UHZZN.js} +4 -4
  69. package/dist/{cloudrun-ELOBBQHC.js → cloudrun-JD7H36SS.js} +4 -4
  70. package/dist/{compare-7PHURXFI.js → compare-YONA7IFI.js} +26 -26
  71. package/dist/{compiler-A3FX5DBC.js → compiler-GNV7YQRO.js} +2 -2
  72. package/dist/{component-56DVF6XU.js → component-BXHWGVG4.js} +3 -3
  73. package/dist/{compositions-2DMUUOFR.js → compositions-XC7Y2FPL.js} +11 -11
  74. package/dist/{delete-EECQVAVJ.js → delete-73UVP2DH.js} +3 -3
  75. package/dist/{deterministicFonts-64U7A25I.js → deterministicFonts-HAEMV4TM.js} +5 -4
  76. package/dist/{dist-OJYO32WN.js → dist-FNNGCKFS.js} +1 -1
  77. package/dist/{dist-IPEAV427.js → dist-NDHKRZTY.js} +2 -2
  78. package/dist/{doctor-F3CXFLFV.js → doctor-J76TZOKL.js} +10 -10
  79. package/dist/{events-2LJGIZKG.js → events-FB2W7SMV.js} +9 -9
  80. package/dist/{events-H5RGIYVK.js → events-I3JMSDHY.js} +8 -8
  81. package/dist/{feedback-VCMOOK2O.js → feedback-WSIA7ROU.js} +12 -12
  82. package/dist/{figma-BL4HCJ5P.js → figma-YOJEBRSS.js} +3 -3
  83. package/dist/{fontData.generated-BW5QEPUT.js → fontData.generated-NXAOI4GH.js} +1 -1
  84. package/dist/fontLocalizeCli.js +10 -11
  85. package/dist/{get-HWN5Z3BL.js → get-DXEKFVNL.js} +3 -3
  86. package/dist/{gpuPolicy-37CE57HN.js → gpuPolicy-IGXJ6JGL.js} +6 -6
  87. package/dist/{grade-compare-3OPZYNNZ.js → grade-compare-PXBFW53F.js} +26 -26
  88. package/dist/{gsapParser-LOSAMHNR.js → gsapParser-DIYYX6JT.js} +63 -41
  89. package/dist/{gsapParserAcorn-ZO2LPEZY.js → gsapParserAcorn-E3GEIRZB.js} +1 -1
  90. package/dist/{help-X3EPTRKV.js → help-Z6TEXIAO.js} +1 -1
  91. package/dist/{history-YR6YTOLT.js → history-EFWP3CMR.js} +18 -18
  92. package/dist/hyperframes-player.global.js +1 -1
  93. package/dist/{info-QG7OXNW6.js → info-AQ2ZLWSB.js} +11 -11
  94. package/dist/{init-JUHW2ZN3.js → init-6ZEBBSR5.js} +22 -22
  95. package/dist/{inspect-LIDYSXAG.js → inspect-EUOV4DGL.js} +27 -27
  96. package/dist/{installer-YH76H5ML.js → installer-WI6EKOWS.js} +4 -4
  97. package/dist/{keyframes-ZLHVLMRA.js → keyframes-U6LVMYGO.js} +44 -42
  98. package/dist/{lambda-T33I4AX6.js → lambda-F6SI24C7.js} +5 -5
  99. package/dist/{layout-VD36CWWV.js → layout-VQRYMZRP.js} +27 -27
  100. package/dist/{lint-JAWDGLYW.js → lint-EBHMQRKO.js} +14 -14
  101. package/dist/{lintProject-IOQ4DBS4.js → lintProject-OHBBM3DJ.js} +1 -1
  102. package/dist/{list-24TGFCB3.js → list-EUOXTLX6.js} +3 -3
  103. package/dist/{login-E2PE6CAD.js → login-OXGFQNHT.js} +4 -4
  104. package/dist/{media-treatment-2BMUTUGD.js → media-treatment-TVCTGGDO.js} +14 -14
  105. package/dist/{models-TS5PWNPS.js → models-XNX7UHKU.js} +7 -7
  106. package/dist/{motionShot-RU4MTVOO.js → motionShot-JXQIO5VJ.js} +12 -12
  107. package/dist/{normalize-audio-245DPF4X.js → normalize-audio-L5LTPJIR.js} +13 -13
  108. package/dist/{open-RH7YWUVH.js → open-BON6TWUG.js} +10 -10
  109. package/dist/{pipeline-ZK3JBXX5.js → pipeline-NID4HZDH.js} +6 -6
  110. package/dist/{play-VK6IF765.js → play-GH43JSBS.js} +29 -29
  111. package/dist/{preflight-H7YMOAYQ.js → preflight-VSZD4AND.js} +7 -7
  112. package/dist/{present-CLKL6QSK.js → present-7PTSYTYU.js} +20 -20
  113. package/dist/{preview-GEPWX2GX.js → preview-X2WVPV66.js} +20 -20
  114. package/dist/{producer-HBP36IDM.js → producer-TLATG6GZ.js} +1 -1
  115. package/dist/{projectConfig-FPSBKFQO.js → projectConfig-KKPSSHER.js} +6 -6
  116. package/dist/{publication-ACSV54DD.js → publication-6BFZTAYA.js} +2 -2
  117. package/dist/{publish-L2NGI7MV.js → publish-ZDRTAWEH.js} +11 -11
  118. package/dist/{remove-background-JRRBJN4U.js → remove-background-OZ4OR3B2.js} +7 -7
  119. package/dist/{render-LZEOB6JN.js → render-U3BRPPSW.js} +3 -3
  120. package/dist/{render-RXMA4QYX.js → render-ZH5ZCLWA.js} +17 -17
  121. package/dist/{render-TDSGRTQQ.js → render-ZTIEKMAN.js} +26 -26
  122. package/dist/{render-batch-ZJQ5VHY6.js → render-batch-3JALVFQN.js} +3 -3
  123. package/dist/{renderCancellation-MS5MAATT.js → renderCancellation-NHRJYSHT.js} +6 -6
  124. package/dist/renderSetupWorker.js +1 -1
  125. package/dist/{resolver-WODAPAQC.js → resolver-Z2T2GU2O.js} +4 -4
  126. package/dist/{sherpa-B3IHJHTK.js → sherpa-DRIVXEAC.js} +7 -7
  127. package/dist/{skills-56DFZVPS.js → skills-XLN4DLZP.js} +11 -11
  128. package/dist/{skillsUpdateCheck-AXKUBY44.js → skillsUpdateCheck-CDL66I4W.js} +3 -3
  129. package/dist/{snapshot-NYQJL43J.js → snapshot-63YZCABA.js} +32 -32
  130. package/dist/{src-4K2RSSO5.js → src-3M44XVWE.js} +5 -5
  131. package/dist/{src-UQ72QBPU.js → src-3Q2T2TAT.js} +11 -12
  132. package/dist/{staticProjectServer-OJH6TFA3.js → staticProjectServer-F563BICS.js} +14 -14
  133. package/dist/{status-MZT3S6U2.js → status-HPLBWFSU.js} +6 -6
  134. package/dist/studio/assets/{hyperframes-player-uqzDaxVL.js → hyperframes-player-CKCx0CFA.js} +1 -1
  135. package/dist/studio/assets/{index-DXSYlqmV.js → index-CF31Pq1E.js} +1 -1
  136. package/dist/studio/assets/{index-COhbL1xq.js → index-ClLzyuwb.js} +171 -171
  137. package/dist/studio/assets/{index-CLBNYlDY.js → index-CwS08gWW.js} +1 -1
  138. package/dist/studio/{chunk-3F47EFCT.js → chunk-7UQWVN52.js} +17 -10
  139. package/dist/studio/chunk-7UQWVN52.js.map +1 -0
  140. package/dist/studio/{chunk-246VB2G3.js → chunk-DRVWEPO5.js} +35 -7
  141. package/dist/studio/chunk-DRVWEPO5.js.map +1 -0
  142. package/dist/studio/{chunk-5EKWJZLM.js → chunk-TDWGXBUT.js} +1 -1
  143. package/dist/studio/chunk-TDWGXBUT.js.map +1 -0
  144. package/dist/studio/{domEditingLayers-OL7GLSS4.js → domEditingLayers-IEVLO54Z.js} +3 -3
  145. package/dist/studio/index.d.ts +8 -9
  146. package/dist/studio/index.html +1 -1
  147. package/dist/studio/index.js +1193 -869
  148. package/dist/studio/index.js.map +1 -1
  149. package/dist/studio/player.js +2 -2
  150. package/dist/{studio-api-IT5SYLXJ.js → studio-api-PH5PMXQW.js} +8 -8
  151. package/dist/{studioServer-KHYH2K3Q.js → studioServer-4CEIYT2G.js} +47 -47
  152. package/dist/{system-4KER4Y62.js → system-G6PL23LG.js} +6 -6
  153. package/dist/{telemetry-G3NYQGWI.js → telemetry-ILX6SWZM.js} +9 -9
  154. package/dist/{timeline-CXK4RVZE.js → timeline-3K3WNFPP.js} +18 -18
  155. package/dist/{tokens-RLU7WBIC.js → tokens-GKA5I6SX.js} +2 -2
  156. package/dist/{transcribe-SOY2USBA.js → transcribe-P76R64RU.js} +7 -7
  157. package/dist/{transcribe-Y37DWCAV.js → transcribe-ZZSCMKNC.js} +12 -12
  158. package/dist/{tts-CGUXR7R4.js → tts-P3LIPIL5.js} +1 -1
  159. package/dist/{updateCheck-EJ5SAGDC.js → updateCheck-QBLDWYDK.js} +2 -2
  160. package/dist/{upgrade-MBWWBNGK.js → upgrade-RDBANWHF.js} +2 -2
  161. package/dist/{urlDownloader-ZJ2TZQ7C.js → urlDownloader-VVG2YURO.js} +5 -5
  162. package/dist/{validate-4J3OCFET.js → validate-55V46LZZ.js} +16 -16
  163. package/dist/{video-43437E6M.js → video-S2W6UQ4H.js} +6 -6
  164. package/package.json +1 -1
  165. package/dist/chunk-4C656PVL.js +0 -1393
  166. package/dist/fontCompression-ISNK7STS.js +0 -15
  167. package/dist/studio/chunk-246VB2G3.js.map +0 -1
  168. package/dist/studio/chunk-3F47EFCT.js.map +0 -1
  169. package/dist/studio/chunk-5EKWJZLM.js.map +0 -1
  170. package/dist/studio/{domEditingLayers-OL7GLSS4.js.map → domEditingLayers-IEVLO54Z.js.map} +0 -0
  171. package/dist/{synthesize-BDXNRYZN.js → synthesize-K62TIZWI.js} +4 -4
@@ -15,6 +15,7 @@ import {
15
15
  // ../parsers/dist/gsapParser.js
16
16
  var recast = __toESM(require_main(), 1);
17
17
  var import_parser = __toESM(require_lib(), 1);
18
+ var GSAP_DEFAULT_DURATION = 0.5;
18
19
  var SUPPORTED_PROPS = [
19
20
  // 2D Transforms
20
21
  "x",
@@ -113,16 +114,14 @@ function positionHoldForAnimation(animation, animations) {
113
114
  if (!animation.keyframes) return null;
114
115
  const start = knownStart(animation) ?? 0;
115
116
  if (!(start > 1e-3)) return null;
116
- const first = [...animation.keyframes.keyframes].sort(
117
- (left, right) => left.percentage - right.percentage
118
- )[0];
119
- if (!first) return null;
117
+ const atStart = animation.keyframes.keyframes.find((keyframe) => keyframe.percentage === 0);
118
+ if (!atStart) return null;
120
119
  const earlier = animations.filter((other) => {
121
120
  const otherStart = knownStart(other);
122
121
  return other !== animation && !other.global && other.targetSelector === animation.targetSelector && otherStart !== void 0 && otherStart < start - 1e-3;
123
122
  });
124
123
  const position = {};
125
- for (const [property, value] of Object.entries(first.properties)) {
124
+ for (const [property, value] of Object.entries(atStart.properties)) {
126
125
  if (classifyPropertyGroup(property) !== "position" || typeof value !== "number") continue;
127
126
  if (earlier.some((other) => writesProperty(other, property))) continue;
128
127
  position[property] = value;
@@ -166,6 +165,9 @@ var SUPPORTED_EASES = [
166
165
  "hold",
167
166
  "steps(1)"
168
167
  ];
168
+ function authorsKeyframes(anim) {
169
+ return anim.keyframes !== void 0 || anim.hasUnresolvedKeyframes === true;
170
+ }
169
171
  function mergePercentageKeyframes(keyframes) {
170
172
  const byPercentage = /* @__PURE__ */ new Map();
171
173
  for (const keyframe of keyframes) {
@@ -409,14 +411,25 @@ function resolveConversionProps(anim, resolvedFromValues) {
409
411
  const toProps = resolvedFromValues ? { ...anim.properties, ...resolvedFromValues } : { ...anim.properties };
410
412
  return { fromProps: { ...anim.fromProperties ?? {} }, toProps };
411
413
  }
412
- function clipTweenMatcher(clipSelectors, root) {
414
+ function clipTweenMatcher(clipSelectors, root, queries = /* @__PURE__ */ new Map()) {
413
415
  const own = typeof clipSelectors === "string" ? [clipSelectors] : clipSelectors;
414
- const clips = root ? own.flatMap((selector) => queryAll(root, selector)) : [];
416
+ if (!root)
417
+ return ({ targetSelector, hasPartialSelector }) => !hasPartialSelector && own.includes(targetSelector);
418
+ const queryAll = (selector) => {
419
+ if (ID_SELECTOR.test(selector)) {
420
+ if (!queries.has(ALL_IDS)) indexIds(root, queries);
421
+ return queries.get(selector) ?? [];
422
+ }
423
+ let found = queries.get(selector);
424
+ if (!found) queries.set(selector, found = queryRoot(root, selector));
425
+ return found;
426
+ };
427
+ const clips = own.flatMap((selector) => queryAll(selector));
415
428
  return ({ targetSelector, hasPartialSelector }) => {
416
429
  if (hasPartialSelector) return false;
417
430
  if (own.includes(targetSelector)) return true;
418
- if (!root || clips.length === 0) return false;
419
- const targets = queryAll(root, targetSelector);
431
+ if (clips.length === 0) return false;
432
+ const targets = queryAll(targetSelector);
420
433
  return targets.length > 0 && targets.every((target) => {
421
434
  const owner = target.closest("[data-start]");
422
435
  return clips.includes(target) || owner !== null && clips.includes(owner);
@@ -426,7 +439,20 @@ function clipTweenMatcher(clipSelectors, root) {
426
439
  function hasExplicitTime(animation) {
427
440
  return typeof animation.position === "number" && !animation.implicitPosition;
428
441
  }
429
- function queryAll(root, selector) {
442
+ var ID_SELECTOR = /^#-?[A-Za-z_][\w-]*$/;
443
+ var ALL_IDS = "[id]";
444
+ function indexIds(root, queries) {
445
+ const all = queryRoot(root, ALL_IDS);
446
+ queries.set(ALL_IDS, all);
447
+ for (const el of all) {
448
+ const key = `#${el.id}`;
449
+ if (!ID_SELECTOR.test(key)) continue;
450
+ const list = queries.get(key);
451
+ if (list) list.push(el);
452
+ else queries.set(key, [el]);
453
+ }
454
+ }
455
+ function queryRoot(root, selector) {
430
456
  try {
431
457
  return Array.from(root.querySelectorAll(selector));
432
458
  } catch {
@@ -436,34 +462,27 @@ function queryAll(root, selector) {
436
462
  var roundPercentage = (percentage) => Math.round(percentage * 10) / 10;
437
463
  var OBJECT_ARRAY_PERCENTAGE_TOLERANCE = 2;
438
464
  function getObjectArrayKeyframeTiming(durations) {
439
- const hasAuthoredDuration = durations.some((duration) => duration !== void 0);
440
- if (hasAuthoredDuration) {
441
- if (!durations.every(
442
- (duration) => typeof duration === "number" && Number.isFinite(duration) && duration > 0
443
- )) {
444
- return null;
445
- }
446
- const totalDuration = durations.reduce((sum, duration) => sum + duration, 0);
447
- let cumulative = 0;
448
- return {
449
- percentages: durations.map((duration) => {
450
- cumulative += duration;
451
- return roundPercentage(cumulative / totalDuration * 100);
452
- }),
453
- totalDuration
454
- };
465
+ const steps = durations.map((duration) => duration ?? GSAP_DEFAULT_DURATION);
466
+ if (!steps.every(
467
+ (duration) => typeof duration === "number" && Number.isFinite(duration) && duration > 0
468
+ )) {
469
+ return null;
455
470
  }
456
- const lastIndex = durations.length - 1;
471
+ const totalDuration = steps.reduce((sum, duration) => sum + duration, 0);
472
+ let cumulative = 0;
457
473
  return {
458
- percentages: durations.map(
459
- (_, index) => lastIndex > 0 ? roundPercentage(index / lastIndex * 100) : 0
460
- )
474
+ percentages: steps.map((duration) => {
475
+ cumulative += duration;
476
+ return roundPercentage(cumulative / totalDuration * 100);
477
+ }),
478
+ totalDuration
461
479
  };
462
480
  }
463
481
  function getCompatibleObjectArrayKeyframeTiming(durations, outerDuration) {
464
482
  const timing = getObjectArrayKeyframeTiming(durations);
465
483
  if (!timing) return null;
466
- if (timing.totalDuration === void 0 || outerDuration === void 0) return timing;
484
+ const stepsAuthorDuration = durations.some((duration) => duration !== void 0);
485
+ if (!stepsAuthorDuration || outerDuration === void 0) return timing;
467
486
  if (typeof outerDuration === "number" && Math.abs(outerDuration - timing.totalDuration) <= Number.EPSILON) {
468
487
  return timing;
469
488
  }
@@ -1203,7 +1222,7 @@ function tweenCallToAnimation(call, scope) {
1203
1222
  percentage: waypoints.length > 1 ? Math.round(i / (waypoints.length - 1) * 100) : 0,
1204
1223
  properties: { x: wp.x, y: wp.y }
1205
1224
  }));
1206
- keyframesData = { format: "percentage", keyframes: kf };
1225
+ keyframesData = { format: "percentage", keyframes: kf, fromMotionPath: true };
1207
1226
  } else {
1208
1227
  const kfs = keyframesData.keyframes;
1209
1228
  if (kfs.length === waypoints.length) {
@@ -1260,7 +1279,6 @@ function tweenCallToAnimation(call, scope) {
1260
1279
  if (call.selectorPartial) anim.hasPartialSelector = true;
1261
1280
  return anim;
1262
1281
  }
1263
- var GSAP_DEFAULT_DURATION = 0.5;
1264
1282
  function resolvePositionString(pos, cursor, prevStart) {
1265
1283
  const trimmed = pos.trim();
1266
1284
  if (trimmed === "") return cursor;
@@ -1292,7 +1310,7 @@ function applyTimelineDefaults(anims, defaults) {
1292
1310
  if (anim.duration === void 0 && defaults.duration !== void 0) {
1293
1311
  anim.duration = defaults.duration;
1294
1312
  }
1295
- if (anim.ease === void 0 && defaults.ease !== void 0) {
1313
+ if (anim.ease === void 0 && defaults.ease !== void 0 && (!anim.keyframes || anim.keyframes.fromMotionPath)) {
1296
1314
  anim.ease = defaults.ease;
1297
1315
  }
1298
1316
  }
@@ -1528,7 +1546,7 @@ function updateAnimationInScript(script, animationId, updates) {
1528
1546
  return script;
1529
1547
  }
1530
1548
  const target = parsed.located.find((l) => l.id === animationId);
1531
- if (!target) return script;
1549
+ if (!target || updates.properties && target.animation.hasUnresolvedKeyframes) return script;
1532
1550
  applyUpdatesToCall(target.call, updates);
1533
1551
  return recast.print(parsed.ast).code;
1534
1552
  }
@@ -1798,12 +1816,12 @@ function splitAnimationsInScript(script, opts) {
1798
1816
  const pos = typeof anim.position === "number" ? anim.position : 0;
1799
1817
  const dur = anim.duration ?? 0;
1800
1818
  const animEnd = pos + dur;
1801
- if (anim.keyframes) {
1819
+ if (authorsKeyframes(anim)) {
1802
1820
  if (pos >= opts.splitTime) {
1803
1821
  result = updateAnimationSelector(result, anim.id, newSelector);
1804
1822
  } else if (animEnd > opts.splitTime) {
1805
1823
  skippedSelectors.push(`${originalSelector} (keyframes spanning split)`);
1806
- const kfs = anim.keyframes.keyframes;
1824
+ const kfs = anim.keyframes?.keyframes ?? [];
1807
1825
  for (const kf of kfs) {
1808
1826
  const kfTime = pos + kf.percentage / 100 * dur;
1809
1827
  if (kfTime <= opts.splitTime) {
@@ -1813,7 +1831,10 @@ function splitAnimationsInScript(script, opts) {
1813
1831
  }
1814
1832
  }
1815
1833
  } else {
1816
- const kfs = anim.keyframes.keyframes;
1834
+ if (anim.hasUnresolvedKeyframes) {
1835
+ skippedSelectors.push(`${originalSelector} (unreadable keyframes before split)`);
1836
+ }
1837
+ const kfs = anim.keyframes?.keyframes ?? [];
1817
1838
  if (kfs.length > 0) {
1818
1839
  for (const [k, v] of Object.entries(kfs[kfs.length - 1].properties)) {
1819
1840
  inheritedProps[k] = v;
@@ -1993,7 +2014,7 @@ function convertArrayKeyframesToObjectNode(varsArg, scope) {
1993
2014
  outerDuration
1994
2015
  );
1995
2016
  if (!timing) return null;
1996
- if (timing.totalDuration !== void 0 && findPropertyNode(varsArg, "duration") === void 0) {
2017
+ if (findPropertyNode(varsArg, "duration") === void 0) {
1997
2018
  setVarsKey(varsArg, "duration", timing.totalDuration);
1998
2019
  }
1999
2020
  const entries = els.map((el, i) => {
@@ -2002,7 +2023,7 @@ function convertArrayKeyframesToObjectNode(varsArg, scope) {
2002
2023
  );
2003
2024
  return `${JSON.stringify(`${timing.percentages[i]}%`)}: ${recast.print(el).code}`;
2004
2025
  });
2005
- prop.value = parseExpr(`{ ${entries.join(", ")} }`);
2026
+ prop.value = parseExpr(`{ ${entries.join(", ")}, easeEach: "none" }`);
2006
2027
  return prop.value;
2007
2028
  }
2008
2029
  function filterPercentageProps(kfNode) {
@@ -2302,7 +2323,7 @@ function convertToKeyframesInScript(script, animationId, resolvedFromValues, set
2302
2323
  let loc = locateAnimationWithFallback(script, animationId);
2303
2324
  if (!loc) return script;
2304
2325
  const anim = loc.target.animation;
2305
- if (anim.keyframes) return script;
2326
+ if (authorsKeyframes(anim)) return script;
2306
2327
  const { fromProps, toProps } = resolveConversionProps(anim, resolvedFromValues);
2307
2328
  const varsArg = loc.target.call.varsArg;
2308
2329
  const originalEase = anim.ease;
@@ -2637,6 +2658,7 @@ function splitIntoPropertyGroups(script, animationId) {
2637
2658
  let loc = locateAnimationWithFallback(script, animationId);
2638
2659
  if (!loc) return { script, ids: [animationId] };
2639
2660
  const anim = loc.target.animation;
2661
+ if (anim.hasUnresolvedKeyframes) return { script, ids: [animationId] };
2640
2662
  const allPropKeys = /* @__PURE__ */ new Set();
2641
2663
  if (anim.keyframes) {
2642
2664
  for (const kf of anim.keyframes.keyframes) {
@@ -13,7 +13,7 @@ import {
13
13
  gsapScriptUsesMotionPath,
14
14
  parseGsapScriptAcorn,
15
15
  parseGsapScriptAcornForWrite
16
- } from "./chunk-RUYSBG3F.js";
16
+ } from "./chunk-4NWOGZZS.js";
17
17
  import "./chunk-2PSPARWP.js";
18
18
  import "./chunk-M2WBOQ2Q.js";
19
19
  export {
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-S3S4TGEH.js";
13
13
  import {
14
14
  VERSION
15
- } from "./chunk-G33WTKF3.js";
15
+ } from "./chunk-L5IFUB5G.js";
16
16
  import "./chunk-M2WBOQ2Q.js";
17
17
 
18
18
  // src/help.ts
@@ -4,10 +4,6 @@ import { dirname as __hf_dirname } from "node:path";
4
4
  var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
- import {
8
- resolveProject
9
- } from "./chunk-YII7JZ2C.js";
10
- import "./chunk-IHFUKJOR.js";
11
7
  import {
12
8
  DEFAULT_HISTORY_ROOT,
13
9
  HistoryBusyError,
@@ -15,24 +11,28 @@ import {
15
11
  MAX_WINDOW_IDLE_MS,
16
12
  START,
17
13
  openProjectHistory
18
- } from "./chunk-Q3I4JEGM.js";
19
- import "./chunk-IAKZWKNV.js";
14
+ } from "./chunk-5NZVDRRZ.js";
15
+ import "./chunk-BW773MMX.js";
20
16
  import "./chunk-EOVYQ3IG.js";
21
17
  import "./chunk-BE6X3G5C.js";
22
- import "./chunk-PZSNUSBM.js";
18
+ import "./chunk-RLK4ARFU.js";
19
+ import {
20
+ resolveProject
21
+ } from "./chunk-JDNYDR3Y.js";
22
+ import "./chunk-IHFUKJOR.js";
23
23
  import {
24
24
  AmbiguousPreviewServerError,
25
25
  findPreviewServerForProject,
26
26
  studioApiUrl
27
27
  } from "./chunk-DQBY7FRR.js";
28
- import "./chunk-RUYSBG3F.js";
28
+ import "./chunk-4NWOGZZS.js";
29
29
  import {
30
30
  trackHistoryAction
31
- } from "./chunk-TP4PR3SL.js";
32
- import "./chunk-SC4T53X4.js";
31
+ } from "./chunk-WULYBA5Y.js";
32
+ import "./chunk-Q767NO4V.js";
33
33
  import "./chunk-VWG7OQKU.js";
34
34
  import "./chunk-ZTZA4UWZ.js";
35
- import "./chunk-MK2HBL6E.js";
35
+ import "./chunk-4IZNC32H.js";
36
36
  import "./chunk-AMKC3AXA.js";
37
37
  import {
38
38
  defineCommand
@@ -43,16 +43,16 @@ import {
43
43
  } from "./chunk-PBN6GBJE.js";
44
44
  import "./chunk-KC5XXX3X.js";
45
45
  import "./chunk-TJSTGSAW.js";
46
- import "./chunk-D4NPKZFY.js";
47
- import "./chunk-AGNZ2QLE.js";
48
- import "./chunk-7DPBFAYT.js";
46
+ import "./chunk-77EJSKGP.js";
47
+ import "./chunk-YRKBFZDQ.js";
48
+ import "./chunk-AVUUN2XD.js";
49
49
  import "./chunk-DPVXBVLL.js";
50
- import "./chunk-OLVR6P6R.js";
50
+ import "./chunk-WVU5CJXG.js";
51
51
  import "./chunk-AQIS2UNW.js";
52
52
  import "./chunk-VC76R6W2.js";
53
53
  import "./chunk-OFQWTKPW.js";
54
54
  import "./chunk-TWWSYAKJ.js";
55
- import "./chunk-TPWWGKU7.js";
55
+ import "./chunk-ZJUKFZ2P.js";
56
56
  import "./chunk-HBBJFK6I.js";
57
57
  import "./chunk-PJ3HDUCY.js";
58
58
  import "./chunk-TQFG7HTI.js";
@@ -60,12 +60,12 @@ import "./chunk-GK4AIFIH.js";
60
60
  import "./chunk-2PSPARWP.js";
61
61
  import {
62
62
  withMeta
63
- } from "./chunk-HXGPETEM.js";
63
+ } from "./chunk-OESXJGYM.js";
64
64
  import "./chunk-K4WIOZFP.js";
65
65
  import "./chunk-XUXGIA7H.js";
66
66
  import "./chunk-WERLJGIC.js";
67
67
  import "./chunk-ISN5GRYI.js";
68
- import "./chunk-G33WTKF3.js";
68
+ import "./chunk-L5IFUB5G.js";
69
69
  import "./chunk-KNU5COPB.js";
70
70
  import "./chunk-3GXQPCJC.js";
71
71
  import "./chunk-RQVDTPGD.js";
@@ -1,4 +1,4 @@
1
- "use strict";var HyperframesPlayer=(()=>{var Me=Object.defineProperty;var Ln=Object.getOwnPropertyDescriptor;var On=Object.getOwnPropertyNames;var Fn=Object.prototype.hasOwnProperty;var Vn=(n,e)=>{for(var t in e)Me(n,t,{get:e[t],enumerable:!0})},Un=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of On(e))!Fn.call(n,r)&&r!==t&&Me(n,r,{get:()=>e[r],enumerable:!(i=Ln(e,r))||i.enumerable});return n};var Hn=n=>Un(Me({},"__esModule",{value:!0}),n);var Er={};Vn(Er,{HyperframesPlayer:()=>ke,SPEED_PRESETS:()=>De,formatSpeed:()=>G,formatTime:()=>ue});function gt(n){return n.hasRuntime||n.runtimeInjected?!1:!!(n.hasNestedCompositions||n.hasTimelines&&n.attempts>=5)}function H(n){return typeof n=="object"&&n!==null}function _t(n){return H(n)&&typeof n.getDuration=="function"}function yt(n){return H(n)&&typeof n.duration=="function"&&typeof n.time=="function"&&typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}var L="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.127/dist/hyperframe.runtime.iife.js";function W(n){if(n===null)return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function Wn(n){let e=n?.querySelector("[data-composition-id][data-width][data-height]")??n?.querySelector("[data-width][data-height]");if(!e)return null;let t=W(e.getAttribute("data-width")),i=W(e.getAttribute("data-height"));return t!==null&&i!==null?{width:t,height:i}:null}var se=class{constructor(e,t){this._iframe=e;this._callbacks=t}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;try{let t=this._iframe.contentWindow;if(!t)return;let i=!!(t.__hf||t.__player),r=!!(t.__timelines&&Object.keys(t.__timelines).length>0),o=!!this._iframe.contentDocument?.querySelector("[data-composition-src]");if(gt({hasRuntime:i,hasTimelines:r,hasNestedCompositions:o,runtimeInjected:this._runtimeInjected,attempts:e})){this._injectRuntime();return}if(this._runtimeInjected&&!i)return;let a=this._resolvePlaybackDurationAdapter(t);if(a&&a.getDuration()>0){this.stop();let s=Wn(this._iframe.contentDocument);this._callbacks.onReady({duration:a.getDuration(),adapter:a,compositionSize:s});return}}catch{}e>=40&&(this.stop(),this._callbacks.onError("Composition timeline not found after 8s"))},200)}stop(){this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return Reflect.get(e,"__hf")!==void 0||H(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let t=e.createElement("script");t.src=L,(e.head||e.documentElement).appendChild(t),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let t=Reflect.get(e,"__timelines");if(!H(t))return null;let i=Object.keys(t);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in t?r:i[i.length-1],a=t[o];return yt(a)?a:null}_resolvePlaybackDurationAdapter(e){let t=Reflect.get(e,"__player");if(_t(t))return{kind:"runtime",getDuration:()=>t.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var vt=`
1
+ "use strict";var HyperframesPlayer=(()=>{var Me=Object.defineProperty;var Ln=Object.getOwnPropertyDescriptor;var On=Object.getOwnPropertyNames;var Fn=Object.prototype.hasOwnProperty;var Vn=(n,e)=>{for(var t in e)Me(n,t,{get:e[t],enumerable:!0})},Un=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of On(e))!Fn.call(n,r)&&r!==t&&Me(n,r,{get:()=>e[r],enumerable:!(i=Ln(e,r))||i.enumerable});return n};var Hn=n=>Un(Me({},"__esModule",{value:!0}),n);var Er={};Vn(Er,{HyperframesPlayer:()=>ke,SPEED_PRESETS:()=>De,formatSpeed:()=>G,formatTime:()=>ue});function gt(n){return n.hasRuntime||n.runtimeInjected?!1:!!(n.hasNestedCompositions||n.hasTimelines&&n.attempts>=5)}function H(n){return typeof n=="object"&&n!==null}function _t(n){return H(n)&&typeof n.getDuration=="function"}function yt(n){return H(n)&&typeof n.duration=="function"&&typeof n.time=="function"&&typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}var L="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.128/dist/hyperframe.runtime.iife.js";function W(n){if(n===null)return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function Wn(n){let e=n?.querySelector("[data-composition-id][data-width][data-height]")??n?.querySelector("[data-width][data-height]");if(!e)return null;let t=W(e.getAttribute("data-width")),i=W(e.getAttribute("data-height"));return t!==null&&i!==null?{width:t,height:i}:null}var se=class{constructor(e,t){this._iframe=e;this._callbacks=t}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;try{let t=this._iframe.contentWindow;if(!t)return;let i=!!(t.__hf||t.__player),r=!!(t.__timelines&&Object.keys(t.__timelines).length>0),o=!!this._iframe.contentDocument?.querySelector("[data-composition-src]");if(gt({hasRuntime:i,hasTimelines:r,hasNestedCompositions:o,runtimeInjected:this._runtimeInjected,attempts:e})){this._injectRuntime();return}if(this._runtimeInjected&&!i)return;let a=this._resolvePlaybackDurationAdapter(t);if(a&&a.getDuration()>0){this.stop();let s=Wn(this._iframe.contentDocument);this._callbacks.onReady({duration:a.getDuration(),adapter:a,compositionSize:s});return}}catch{}e>=40&&(this.stop(),this._callbacks.onError("Composition timeline not found after 8s"))},200)}stop(){this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return Reflect.get(e,"__hf")!==void 0||H(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let t=e.createElement("script");t.src=L,(e.head||e.documentElement).appendChild(t),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let t=Reflect.get(e,"__timelines");if(!H(t))return null;let i=Object.keys(t);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in t?r:i[i.length-1],a=t[o];return yt(a)?a:null}_resolvePlaybackDurationAdapter(e){let t=Reflect.get(e,"__player");if(_t(t))return{kind:"runtime",getDuration:()=>t.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var vt=`
2
2
  :host {
3
3
  display: block;
4
4
  position: relative;
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-YII7JZ2C.js";
9
+ } from "./chunk-JDNYDR3Y.js";
10
10
  import {
11
11
  formatBytes,
12
12
  label
@@ -14,32 +14,32 @@ import {
14
14
  import {
15
15
  ensureDOMParser
16
16
  } from "./chunk-PFCFR3KZ.js";
17
- import "./chunk-TP4PR3SL.js";
18
- import "./chunk-SC4T53X4.js";
17
+ import "./chunk-WULYBA5Y.js";
18
+ import "./chunk-Q767NO4V.js";
19
19
  import "./chunk-VWG7OQKU.js";
20
20
  import {
21
21
  c
22
22
  } from "./chunk-ZTZA4UWZ.js";
23
- import "./chunk-MK2HBL6E.js";
23
+ import "./chunk-4IZNC32H.js";
24
24
  import "./chunk-AMKC3AXA.js";
25
25
  import {
26
26
  defineCommand
27
27
  } from "./chunk-S3S4TGEH.js";
28
28
  import "./chunk-54HJ63Q2.js";
29
29
  import "./chunk-PBN6GBJE.js";
30
- import "./chunk-D4NPKZFY.js";
31
- import "./chunk-AGNZ2QLE.js";
30
+ import "./chunk-77EJSKGP.js";
31
+ import "./chunk-YRKBFZDQ.js";
32
32
  import {
33
33
  CANVAS_DIMENSIONS,
34
34
  parseHtml
35
- } from "./chunk-7DPBFAYT.js";
35
+ } from "./chunk-AVUUN2XD.js";
36
36
  import "./chunk-DPVXBVLL.js";
37
- import "./chunk-OLVR6P6R.js";
37
+ import "./chunk-WVU5CJXG.js";
38
38
  import "./chunk-AQIS2UNW.js";
39
39
  import "./chunk-VC76R6W2.js";
40
40
  import "./chunk-OFQWTKPW.js";
41
41
  import "./chunk-TWWSYAKJ.js";
42
- import "./chunk-TPWWGKU7.js";
42
+ import "./chunk-ZJUKFZ2P.js";
43
43
  import "./chunk-HBBJFK6I.js";
44
44
  import "./chunk-PJ3HDUCY.js";
45
45
  import "./chunk-TQFG7HTI.js";
@@ -47,12 +47,12 @@ import "./chunk-GK4AIFIH.js";
47
47
  import "./chunk-2PSPARWP.js";
48
48
  import {
49
49
  withMeta
50
- } from "./chunk-HXGPETEM.js";
50
+ } from "./chunk-OESXJGYM.js";
51
51
  import "./chunk-K4WIOZFP.js";
52
52
  import "./chunk-XUXGIA7H.js";
53
53
  import "./chunk-WERLJGIC.js";
54
54
  import "./chunk-ISN5GRYI.js";
55
- import "./chunk-G33WTKF3.js";
55
+ import "./chunk-L5IFUB5G.js";
56
56
  import "./chunk-KNU5COPB.js";
57
57
  import "./chunk-3GXQPCJC.js";
58
58
  import "./chunk-RQVDTPGD.js";
@@ -6,11 +6,11 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  gateRegistryItemsCompatibility
9
- } from "./chunk-L32XKBOF.js";
9
+ } from "./chunk-4AH73ZQW.js";
10
10
  import {
11
11
  initialModelForLanguage
12
- } from "./chunk-OE66T7R2.js";
13
- import "./chunk-7YJ7CCKW.js";
12
+ } from "./chunk-COD4GMYB.js";
13
+ import "./chunk-FN7KZDH7.js";
14
14
  import "./chunk-XT7X6QCP.js";
15
15
  import {
16
16
  writeNewFileSync
@@ -30,11 +30,11 @@ import {
30
30
  listRegistryItems,
31
31
  loadAllItems,
32
32
  resolveItemWithDependencies
33
- } from "./chunk-PVVUMILD.js";
33
+ } from "./chunk-6F63NYFZ.js";
34
34
  import {
35
35
  installItem
36
- } from "./chunk-NDPSG5WQ.js";
37
- import "./chunk-6252EFFW.js";
36
+ } from "./chunk-LRDOFHS5.js";
37
+ import "./chunk-KC5COKLP.js";
38
38
  import "./chunk-AWDFDFI3.js";
39
39
  import "./chunk-P6LJ4Y32.js";
40
40
  import "./chunk-GMECXFAN.js";
@@ -50,14 +50,14 @@ import {
50
50
  } from "./chunk-TVCRUG2S.js";
51
51
  import {
52
52
  trackInitTemplate
53
- } from "./chunk-TP4PR3SL.js";
54
- import "./chunk-SC4T53X4.js";
53
+ } from "./chunk-WULYBA5Y.js";
54
+ import "./chunk-Q767NO4V.js";
55
55
  import "./chunk-VWG7OQKU.js";
56
56
  import {
57
57
  c,
58
58
  isColorSupported
59
59
  } from "./chunk-ZTZA4UWZ.js";
60
- import "./chunk-MK2HBL6E.js";
60
+ import "./chunk-4IZNC32H.js";
61
61
  import "./chunk-AMKC3AXA.js";
62
62
  import {
63
63
  defineCommand,
@@ -68,24 +68,24 @@ import {
68
68
  failCommand,
69
69
  finishCommand
70
70
  } from "./chunk-PBN6GBJE.js";
71
- import "./chunk-D4NPKZFY.js";
72
- import "./chunk-AGNZ2QLE.js";
71
+ import "./chunk-77EJSKGP.js";
72
+ import "./chunk-YRKBFZDQ.js";
73
73
  import {
74
74
  CANVAS_DIMENSIONS,
75
75
  HTML_BODY_CSS_HEIGHT_FIRST_RE,
76
76
  HTML_BODY_CSS_WIDTH_FIRST_RE,
77
77
  VIEWPORT_META_SIZE_RE,
78
78
  normalizeResolutionFlag
79
- } from "./chunk-7DPBFAYT.js";
79
+ } from "./chunk-AVUUN2XD.js";
80
80
  import "./chunk-DPVXBVLL.js";
81
- import "./chunk-OLVR6P6R.js";
81
+ import "./chunk-WVU5CJXG.js";
82
82
  import "./chunk-AQIS2UNW.js";
83
83
  import "./chunk-VC76R6W2.js";
84
84
  import "./chunk-OFQWTKPW.js";
85
85
  import "./chunk-LAOCA3MQ.js";
86
86
  import "./chunk-LCSMOLGX.js";
87
87
  import "./chunk-TWWSYAKJ.js";
88
- import "./chunk-TPWWGKU7.js";
88
+ import "./chunk-ZJUKFZ2P.js";
89
89
  import "./chunk-HBBJFK6I.js";
90
90
  import "./chunk-PJ3HDUCY.js";
91
91
  import "./chunk-TQFG7HTI.js";
@@ -97,7 +97,7 @@ import "./chunk-WERLJGIC.js";
97
97
  import "./chunk-ISN5GRYI.js";
98
98
  import {
99
99
  VERSION
100
- } from "./chunk-G33WTKF3.js";
100
+ } from "./chunk-L5IFUB5G.js";
101
101
  import "./chunk-KNU5COPB.js";
102
102
  import "./chunk-3GXQPCJC.js";
103
103
  import "./chunk-RQVDTPGD.js";
@@ -652,7 +652,7 @@ async function scaffoldProject(destDir, name, templateId, media, tailwind = fals
652
652
  "utf-8"
653
653
  );
654
654
  if (!existsSync2(resolve(destDir, "hyperframes.json"))) {
655
- const { createProjectConfig, DEFAULT_PROJECT_CONFIG } = await import("./projectConfig-FPSBKFQO.js");
655
+ const { createProjectConfig, DEFAULT_PROJECT_CONFIG } = await import("./projectConfig-KKPSSHER.js");
656
656
  const { normalizeSkillSlug } = await import("./skill-ZHVLH7KX.js");
657
657
  const skill = normalizeSkillSlug(authoringSkill);
658
658
  createProjectConfig(
@@ -673,7 +673,7 @@ async function scaffoldProject(destDir, name, templateId, media, tailwind = fals
673
673
  }
674
674
  }
675
675
  async function keepSkillsCurrent(destDir) {
676
- const { updateSkills } = await import("./skills-56DFZVPS.js");
676
+ const { updateSkills } = await import("./skills-XLN4DLZP.js");
677
677
  console.log();
678
678
  console.log(c.bold("Checking AI coding skills against GitHub..."));
679
679
  try {
@@ -869,7 +869,7 @@ var init_default = defineCommand({
869
869
  if (audioPath) {
870
870
  sourceFilePath2 = audioPath;
871
871
  copyFileSync(audioPath, resolve(destDir2, basename(audioPath)));
872
- const { getMediaDurationSeconds } = await import("./transcribe-SOY2USBA.js");
872
+ const { getMediaDurationSeconds } = await import("./transcribe-P76R64RU.js");
873
873
  videoDuration2 = getMediaDurationSeconds(audioPath) ?? void 0;
874
874
  console.log(`Audio: ${basename(audioPath)}`);
875
875
  }
@@ -879,7 +879,7 @@ var init_default = defineCommand({
879
879
  await ensureWhisper();
880
880
  await ensureModel(initialTranscriptionModel);
881
881
  console.log("Transcribing...");
882
- const { transcribe: runTranscribe } = await import("./transcribe-SOY2USBA.js");
882
+ const { transcribe: runTranscribe } = await import("./transcribe-P76R64RU.js");
883
883
  const result = await runTranscribe(sourceFilePath2, destDir2, {
884
884
  model: modelFlag,
885
885
  language: languageFlag
@@ -1021,7 +1021,7 @@ var init_default = defineCommand({
1021
1021
  mkdirSync(destDir, { recursive: true });
1022
1022
  sourceFilePath = audioPath;
1023
1023
  copyFileSync(audioPath, resolve(destDir, basename(audioPath)));
1024
- const { getMediaDurationSeconds } = await import("./transcribe-SOY2USBA.js");
1024
+ const { getMediaDurationSeconds } = await import("./transcribe-P76R64RU.js");
1025
1025
  videoDuration = getMediaDurationSeconds(audioPath) ?? void 0;
1026
1026
  R.info(`Audio copied to ${c.accent(basename(audioPath))}`);
1027
1027
  }
@@ -1049,7 +1049,7 @@ var init_default = defineCommand({
1049
1049
  onProgress: (msg) => spin2.message(msg)
1050
1050
  });
1051
1051
  spin2.message("Transcribing audio...");
1052
- const { transcribe: runTranscribe } = await import("./transcribe-SOY2USBA.js");
1052
+ const { transcribe: runTranscribe } = await import("./transcribe-P76R64RU.js");
1053
1053
  const transcribeResult = await runTranscribe(sourceFilePath, destDir, {
1054
1054
  model: modelFlag,
1055
1055
  language: languageFlag,
@@ -1131,7 +1131,7 @@ ${c.dim("Use --example blank for offline use.")}`
1131
1131
  }
1132
1132
  R.info("Opening studio preview...");
1133
1133
  try {
1134
- const previewCmd = await import("./preview-GEPWX2GX.js").then((m) => m.default);
1134
+ const previewCmd = await import("./preview-X2WVPV66.js").then((m) => m.default);
1135
1135
  await runCommand(previewCmd, { rawArgs: [destDir] });
1136
1136
  } catch {
1137
1137
  }