hyperframes 0.8.126 → 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-7NBR6B3F.js → add-DI4T5YLH.js} +15 -15
  2. package/dist/{animatedGifPrep-L5V2GEUO.js → animatedGifPrep-TSK322QL.js} +6 -6
  3. package/dist/{asset-JBGYRDTW.js → asset-CFW5RUI3.js} +2 -2
  4. package/dist/{assetCataloger-2DWSDIJG.js → assetCataloger-MDMKZM4O.js} +2 -2
  5. package/dist/{auth-6CYSAYBB.js → auth-7GR2JYK4.js} +2 -2
  6. package/dist/{autoUpdate-NOG7CHB6.js → autoUpdate-VPEWPSH6.js} +2 -2
  7. package/dist/{backgroundChecks-7CCDAF4Q.js → backgroundChecks-XU7Y6JEZ.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-KOMFN3WS.js → batchRender-HIRFZIUO.js} +3 -3
  10. package/dist/{beats-TUAVN7GG.js → beats-6EJDWT63.js} +14 -14
  11. package/dist/{benchmark-TE726E5O.js → benchmark-F7U6WZGQ.js} +12 -12
  12. package/dist/{browser-2LX4CSEG.js → browser-3ECFI3DA.js} +9 -9
  13. package/dist/{bundleWithLocalizedFonts-5RRZNHVZ.js → bundleWithLocalizedFonts-OVFXAXV3.js} +2 -2
  14. package/dist/{capture-35UCVULB.js → capture-AC5TRHS5.js} +2 -2
  15. package/dist/{capture-VP3NXL6L.js → capture-YH5MUSL7.js} +9 -9
  16. package/dist/{catalog-AGTKIUQX.js → catalog-TRZAPAXM.js} +15 -15
  17. package/dist/{check-6FNESOS3.js → check-HP7N4TPB.js} +34 -34
  18. package/dist/{checkBrowser-QSTDEWYE.js → checkBrowser-BHLSXZ3V.js} +35 -35
  19. package/dist/{chunk-INWZRXCW.js → chunk-2CACHG7K.js} +3 -3
  20. package/dist/{chunk-HWTQNKW5.js → chunk-34C66AH5.js} +2 -2
  21. package/dist/{chunk-3GSNYSFF.js → chunk-3PDQ4PS2.js} +1 -1
  22. package/dist/{chunk-JR73DPKV.js → chunk-4AH73ZQW.js} +1 -1
  23. package/dist/{chunk-TO6DMAUZ.js → chunk-4DGJUQFZ.js} +1 -1
  24. package/dist/{chunk-KB37AHZU.js → chunk-4IZNC32H.js} +1 -1
  25. package/dist/{chunk-NSVHO5LZ.js → chunk-4NWOGZZS.js} +50 -40
  26. package/dist/{chunk-KTJUHHEQ.js → chunk-4QJQOVN4.js} +1 -1
  27. package/dist/{chunk-ONACH4F6.js → chunk-56P5SEOM.js} +1 -1
  28. package/dist/{chunk-PWZANSLF.js → chunk-5NZVDRRZ.js} +226 -160
  29. package/dist/{chunk-STZBZXZT.js → chunk-6F63NYFZ.js} +1 -1
  30. package/dist/{chunk-JMI5PVKK.js → chunk-6RGOHYPP.js} +1 -1
  31. package/dist/{chunk-44ABPBX3.js → chunk-72WHJNAR.js} +2 -2
  32. package/dist/{chunk-UB7MYXCO.js → chunk-77EJSKGP.js} +2 -2
  33. package/dist/{chunk-THTG3VL4.js → chunk-A7VIBZLC.js} +2 -2
  34. package/dist/{chunk-SXPMTU6B.js → chunk-AQUXI6ZL.js} +5 -5
  35. package/dist/{chunk-F7MXHGU3.js → chunk-AVUUN2XD.js} +51 -41
  36. package/dist/{chunk-I2AFLOPD.js → chunk-BELUXCL4.js} +1 -1
  37. package/dist/{chunk-TKWTL6GV.js → chunk-BK2KLAYO.js} +3 -3
  38. package/dist/{chunk-U4FYLOXY.js → chunk-BW773MMX.js} +4 -4
  39. package/dist/{chunk-5CJ3YWEE.js → chunk-CF6QQ6CL.js} +7 -7
  40. package/dist/{chunk-5WXI4DPS.js → chunk-COD4GMYB.js} +1 -1
  41. package/dist/{chunk-ZLJXATSQ.js → chunk-FI4I7CME.js} +1 -1
  42. package/dist/{chunk-ZKUDKJDT.js → chunk-FN7KZDH7.js} +1 -1
  43. package/dist/{chunk-ZZWX22ZL.js → chunk-H5TVAQAK.js} +4 -4
  44. package/dist/{chunk-BVY7I3HG.js → chunk-IKSUSTJT.js} +1 -1
  45. package/dist/{chunk-NZWMOYQ4.js → chunk-JDNYDR3Y.js} +1 -1
  46. package/dist/{chunk-G2XWQ4ZE.js → chunk-KC5COKLP.js} +1 -1
  47. package/dist/{chunk-4X2UFVOK.js → chunk-KUZTSKD2.js} +1 -1
  48. package/dist/{chunk-2JJO2O4F.js → chunk-L5IFUB5G.js} +2 -2
  49. package/dist/{chunk-BKXZGOH7.js → chunk-LGTAOCIM.js} +1 -1
  50. package/dist/{chunk-67QQI7JH.js → chunk-LRDOFHS5.js} +2 -2
  51. package/dist/{chunk-WYPGIFYA.js → chunk-OESXJGYM.js} +1 -1
  52. package/dist/{chunk-GA46NF76.js → chunk-PDAMK4Q5.js} +1 -1
  53. package/dist/{chunk-X34RX267.js → chunk-Q767NO4V.js} +3 -3
  54. package/dist/{chunk-OQS3A7QF.js → chunk-QFQET76X.js} +54 -13
  55. package/dist/{chunk-IRAEOBDX.js → chunk-QPRIMML2.js} +1 -1
  56. package/dist/{chunk-CHMDN7EH.js → chunk-RLK4ARFU.js} +2 -2
  57. package/dist/{chunk-2GIIUVKT.js → chunk-UROSVQOH.js} +2 -2
  58. package/dist/{chunk-ECF5RGLH.js → chunk-VKBSHU24.js} +5 -5
  59. package/dist/{chunk-RHXKUUEP.js → chunk-VQME2GRN.js} +11 -11
  60. package/dist/{chunk-32MY4AZN.js → chunk-WPHMNO44.js} +1345 -23
  61. package/dist/{chunk-VVKADE6I.js → chunk-WULYBA5Y.js} +3 -3
  62. package/dist/{chunk-BW5F5OXO.js → chunk-WVU5CJXG.js} +1 -1
  63. package/dist/{chunk-3XZK3GNY.js → chunk-YRKBFZDQ.js} +1 -1
  64. package/dist/{chunk-N4RVOW43.js → chunk-ZJUKFZ2P.js} +2 -2
  65. package/dist/{chunk-YYMPS4RQ.js → chunk-ZT4WM4B6.js} +12 -12
  66. package/dist/{clean-AUQHQ42C.js → clean-6Q36AWQL.js} +18 -18
  67. package/dist/cli.js +52 -52
  68. package/dist/{cloud-4AEBQ4XH.js → cloud-GQ5UHZZN.js} +4 -4
  69. package/dist/{cloudrun-S7IW2H35.js → cloudrun-JD7H36SS.js} +4 -4
  70. package/dist/{compare-ZCPVJC7Y.js → compare-YONA7IFI.js} +26 -26
  71. package/dist/{compiler-ONZBL2Z2.js → compiler-GNV7YQRO.js} +2 -2
  72. package/dist/{component-D5WGH5CE.js → component-BXHWGVG4.js} +3 -3
  73. package/dist/{compositions-L5HA7YJU.js → compositions-XC7Y2FPL.js} +11 -11
  74. package/dist/{delete-WWRSJ4KP.js → delete-73UVP2DH.js} +3 -3
  75. package/dist/{deterministicFonts-HHGHYN6V.js → deterministicFonts-HAEMV4TM.js} +5 -4
  76. package/dist/{dist-RUZFIHUD.js → dist-FNNGCKFS.js} +1 -1
  77. package/dist/{dist-6YFMU2EX.js → dist-NDHKRZTY.js} +2 -2
  78. package/dist/{doctor-JISX7NCX.js → doctor-J76TZOKL.js} +10 -10
  79. package/dist/{events-XD7RFVVW.js → events-FB2W7SMV.js} +9 -9
  80. package/dist/{events-YVGY4DDL.js → events-I3JMSDHY.js} +8 -8
  81. package/dist/{feedback-S7GVNKI5.js → feedback-WSIA7ROU.js} +12 -12
  82. package/dist/{figma-PGHX2SST.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-GCOZY5GX.js → get-DXEKFVNL.js} +3 -3
  86. package/dist/{gpuPolicy-PF25HSOC.js → gpuPolicy-IGXJ6JGL.js} +6 -6
  87. package/dist/{grade-compare-6GXSZOQD.js → grade-compare-PXBFW53F.js} +26 -26
  88. package/dist/{gsapParser-ZGBBDA54.js → gsapParser-DIYYX6JT.js} +83 -53
  89. package/dist/{gsapParserAcorn-3Z742FXU.js → gsapParserAcorn-E3GEIRZB.js} +1 -1
  90. package/dist/{help-MGQRBCOB.js → help-Z6TEXIAO.js} +1 -1
  91. package/dist/{history-OR4CFVKW.js → history-EFWP3CMR.js} +18 -18
  92. package/dist/hyperframes-player.global.js +1 -1
  93. package/dist/{info-ORCBX5QT.js → info-AQ2ZLWSB.js} +11 -11
  94. package/dist/{init-2VMWQT7Q.js → init-6ZEBBSR5.js} +22 -22
  95. package/dist/{inspect-ESXETWYQ.js → inspect-EUOV4DGL.js} +27 -27
  96. package/dist/{installer-DY5EJGH4.js → installer-WI6EKOWS.js} +4 -4
  97. package/dist/{keyframes-SVZSP2IX.js → keyframes-U6LVMYGO.js} +62 -52
  98. package/dist/{lambda-SU52VKMJ.js → lambda-F6SI24C7.js} +5 -5
  99. package/dist/{layout-2QQITNZH.js → layout-VQRYMZRP.js} +27 -27
  100. package/dist/{lint-JWDUEMAF.js → lint-EBHMQRKO.js} +14 -14
  101. package/dist/{lintProject-MXUZEBDH.js → lintProject-OHBBM3DJ.js} +1 -1
  102. package/dist/{list-DMA3RMP3.js → list-EUOXTLX6.js} +3 -3
  103. package/dist/{login-L3YG6OGU.js → login-OXGFQNHT.js} +4 -4
  104. package/dist/{media-treatment-NVAU46UZ.js → media-treatment-TVCTGGDO.js} +14 -14
  105. package/dist/{models-ULNRSUPZ.js → models-XNX7UHKU.js} +7 -7
  106. package/dist/{motionShot-UZ55EFYK.js → motionShot-JXQIO5VJ.js} +12 -12
  107. package/dist/{normalize-audio-E5S32LB7.js → normalize-audio-L5LTPJIR.js} +13 -13
  108. package/dist/{open-IF42Y7XZ.js → open-BON6TWUG.js} +10 -10
  109. package/dist/{pipeline-2SJBNWN6.js → pipeline-NID4HZDH.js} +6 -6
  110. package/dist/{play-NWZVZ2VG.js → play-GH43JSBS.js} +29 -29
  111. package/dist/{preflight-DLBJ2ORQ.js → preflight-VSZD4AND.js} +7 -7
  112. package/dist/{present-G3D32OYG.js → present-7PTSYTYU.js} +20 -20
  113. package/dist/{preview-2DFT6L5Y.js → preview-X2WVPV66.js} +20 -20
  114. package/dist/{producer-HDJFB63D.js → producer-TLATG6GZ.js} +1 -1
  115. package/dist/{projectConfig-MNOSK2QD.js → projectConfig-KKPSSHER.js} +6 -6
  116. package/dist/{publication-YDMJ7ZWP.js → publication-6BFZTAYA.js} +2 -2
  117. package/dist/{publish-2U3QFDUG.js → publish-ZDRTAWEH.js} +11 -11
  118. package/dist/{remove-background-WGQL5TTE.js → remove-background-OZ4OR3B2.js} +7 -7
  119. package/dist/{render-Z2JVFMEG.js → render-U3BRPPSW.js} +3 -3
  120. package/dist/{render-KOZDACHF.js → render-ZH5ZCLWA.js} +17 -17
  121. package/dist/{render-IP5YBVN3.js → render-ZTIEKMAN.js} +26 -26
  122. package/dist/{render-batch-MLATEYNJ.js → render-batch-3JALVFQN.js} +3 -3
  123. package/dist/{renderCancellation-GIVVJ4Y5.js → renderCancellation-NHRJYSHT.js} +6 -6
  124. package/dist/renderSetupWorker.js +1 -1
  125. package/dist/{resolver-YPSQI4QB.js → resolver-Z2T2GU2O.js} +4 -4
  126. package/dist/{sherpa-XJUQMGO2.js → sherpa-DRIVXEAC.js} +7 -7
  127. package/dist/{skills-C4AYI3JQ.js → skills-XLN4DLZP.js} +11 -11
  128. package/dist/{skillsUpdateCheck-SZ5YHOKU.js → skillsUpdateCheck-CDL66I4W.js} +3 -3
  129. package/dist/{snapshot-ITGMVKHC.js → snapshot-63YZCABA.js} +32 -32
  130. package/dist/{src-T3KNHVM4.js → src-3M44XVWE.js} +5 -5
  131. package/dist/{src-B2EJ6PDH.js → src-3Q2T2TAT.js} +11 -12
  132. package/dist/{staticProjectServer-XMPCVKOC.js → staticProjectServer-F563BICS.js} +14 -14
  133. package/dist/{status-26CCBKGN.js → status-HPLBWFSU.js} +6 -6
  134. package/dist/studio/assets/{hyperframes-player-BbbN-wWN.js → hyperframes-player-CKCx0CFA.js} +1 -1
  135. package/dist/studio/assets/{index-Cll7uTNy.js → index-CF31Pq1E.js} +1 -1
  136. package/dist/studio/assets/{index-B8kU2xXl.js → index-ClLzyuwb.js} +172 -172
  137. package/dist/studio/assets/{index-nvLF29ZH.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 +2184 -1745
  148. package/dist/studio/index.js.map +1 -1
  149. package/dist/studio/player.js +2 -2
  150. package/dist/{studio-api-RGD6QIM6.js → studio-api-PH5PMXQW.js} +8 -8
  151. package/dist/{studioServer-4KI47OI7.js → studioServer-4CEIYT2G.js} +47 -47
  152. package/dist/{system-KCJSXBNN.js → system-G6PL23LG.js} +6 -6
  153. package/dist/{telemetry-4O4ERZUD.js → telemetry-ILX6SWZM.js} +9 -9
  154. package/dist/{timeline-MFCQASNE.js → timeline-3K3WNFPP.js} +18 -18
  155. package/dist/{tokens-TI7WWQJ6.js → tokens-GKA5I6SX.js} +2 -2
  156. package/dist/{transcribe-GUOLCXLE.js → transcribe-P76R64RU.js} +7 -7
  157. package/dist/{transcribe-P72V4E5C.js → transcribe-ZZSCMKNC.js} +12 -12
  158. package/dist/{tts-CGUXR7R4.js → tts-P3LIPIL5.js} +1 -1
  159. package/dist/{updateCheck-GGXGOFYE.js → updateCheck-QBLDWYDK.js} +2 -2
  160. package/dist/{upgrade-CJRMDDJD.js → upgrade-RDBANWHF.js} +2 -2
  161. package/dist/{urlDownloader-F7DTZEP4.js → urlDownloader-VVG2YURO.js} +5 -5
  162. package/dist/{validate-VJ4JRMM2.js → validate-55V46LZZ.js} +16 -16
  163. package/dist/{video-KVK4KZPN.js → video-S2W6UQ4H.js} +6 -6
  164. package/package.json +1 -1
  165. package/dist/chunk-NSY245QZ.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",
@@ -55,6 +56,25 @@ var SUPPORTED_PROPS = [
55
56
  // DOM content (number counters, text roll-ups)
56
57
  "innerText"
57
58
  ];
59
+ var BUILTIN_VAR_KEYS = /* @__PURE__ */ new Set(["duration", "ease", "delay"]);
60
+ var DROPPED_VAR_KEYS = /* @__PURE__ */ new Set([
61
+ "onComplete",
62
+ "onStart",
63
+ "onUpdate",
64
+ "onRepeat"
65
+ ]);
66
+ var EXTRAS_KEYS = /* @__PURE__ */ new Set([
67
+ "stagger",
68
+ "yoyo",
69
+ "repeat",
70
+ "repeatDelay",
71
+ "snap",
72
+ "overwrite",
73
+ "immediateRender"
74
+ ]);
75
+ function isTweenConfigKey(key) {
76
+ return BUILTIN_VAR_KEYS.has(key) || DROPPED_VAR_KEYS.has(key) || EXTRAS_KEYS.has(key);
77
+ }
58
78
  var PROPERTY_GROUPS = {
59
79
  position: /* @__PURE__ */ new Set(["x", "y", "xPercent", "yPercent"]),
60
80
  scale: /* @__PURE__ */ new Set(["scale", "scaleX", "scaleY"]),
@@ -94,16 +114,14 @@ function positionHoldForAnimation(animation, animations) {
94
114
  if (!animation.keyframes) return null;
95
115
  const start = knownStart(animation) ?? 0;
96
116
  if (!(start > 1e-3)) return null;
97
- const first = [...animation.keyframes.keyframes].sort(
98
- (left, right) => left.percentage - right.percentage
99
- )[0];
100
- if (!first) return null;
117
+ const atStart = animation.keyframes.keyframes.find((keyframe) => keyframe.percentage === 0);
118
+ if (!atStart) return null;
101
119
  const earlier = animations.filter((other) => {
102
120
  const otherStart = knownStart(other);
103
121
  return other !== animation && !other.global && other.targetSelector === animation.targetSelector && otherStart !== void 0 && otherStart < start - 1e-3;
104
122
  });
105
123
  const position = {};
106
- for (const [property, value] of Object.entries(first.properties)) {
124
+ for (const [property, value] of Object.entries(atStart.properties)) {
107
125
  if (classifyPropertyGroup(property) !== "position" || typeof value !== "number") continue;
108
126
  if (earlier.some((other) => writesProperty(other, property))) continue;
109
127
  position[property] = value;
@@ -147,6 +165,9 @@ var SUPPORTED_EASES = [
147
165
  "hold",
148
166
  "steps(1)"
149
167
  ];
168
+ function authorsKeyframes(anim) {
169
+ return anim.keyframes !== void 0 || anim.hasUnresolvedKeyframes === true;
170
+ }
150
171
  function mergePercentageKeyframes(keyframes) {
151
172
  const byPercentage = /* @__PURE__ */ new Map();
152
173
  for (const keyframe of keyframes) {
@@ -390,14 +411,25 @@ function resolveConversionProps(anim, resolvedFromValues) {
390
411
  const toProps = resolvedFromValues ? { ...anim.properties, ...resolvedFromValues } : { ...anim.properties };
391
412
  return { fromProps: { ...anim.fromProperties ?? {} }, toProps };
392
413
  }
393
- function clipTweenMatcher(clipSelectors, root) {
414
+ function clipTweenMatcher(clipSelectors, root, queries = /* @__PURE__ */ new Map()) {
394
415
  const own = typeof clipSelectors === "string" ? [clipSelectors] : clipSelectors;
395
- 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));
396
428
  return ({ targetSelector, hasPartialSelector }) => {
397
429
  if (hasPartialSelector) return false;
398
430
  if (own.includes(targetSelector)) return true;
399
- if (!root || clips.length === 0) return false;
400
- const targets = queryAll(root, targetSelector);
431
+ if (clips.length === 0) return false;
432
+ const targets = queryAll(targetSelector);
401
433
  return targets.length > 0 && targets.every((target) => {
402
434
  const owner = target.closest("[data-start]");
403
435
  return clips.includes(target) || owner !== null && clips.includes(owner);
@@ -407,7 +439,20 @@ function clipTweenMatcher(clipSelectors, root) {
407
439
  function hasExplicitTime(animation) {
408
440
  return typeof animation.position === "number" && !animation.implicitPosition;
409
441
  }
410
- 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) {
411
456
  try {
412
457
  return Array.from(root.querySelectorAll(selector));
413
458
  } catch {
@@ -417,34 +462,27 @@ function queryAll(root, selector) {
417
462
  var roundPercentage = (percentage) => Math.round(percentage * 10) / 10;
418
463
  var OBJECT_ARRAY_PERCENTAGE_TOLERANCE = 2;
419
464
  function getObjectArrayKeyframeTiming(durations) {
420
- const hasAuthoredDuration = durations.some((duration) => duration !== void 0);
421
- if (hasAuthoredDuration) {
422
- if (!durations.every(
423
- (duration) => typeof duration === "number" && Number.isFinite(duration) && duration > 0
424
- )) {
425
- return null;
426
- }
427
- const totalDuration = durations.reduce((sum, duration) => sum + duration, 0);
428
- let cumulative = 0;
429
- return {
430
- percentages: durations.map((duration) => {
431
- cumulative += duration;
432
- return roundPercentage(cumulative / totalDuration * 100);
433
- }),
434
- totalDuration
435
- };
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;
436
470
  }
437
- const lastIndex = durations.length - 1;
471
+ const totalDuration = steps.reduce((sum, duration) => sum + duration, 0);
472
+ let cumulative = 0;
438
473
  return {
439
- percentages: durations.map(
440
- (_, index) => lastIndex > 0 ? roundPercentage(index / lastIndex * 100) : 0
441
- )
474
+ percentages: steps.map((duration) => {
475
+ cumulative += duration;
476
+ return roundPercentage(cumulative / totalDuration * 100);
477
+ }),
478
+ totalDuration
442
479
  };
443
480
  }
444
481
  function getCompatibleObjectArrayKeyframeTiming(durations, outerDuration) {
445
482
  const timing = getObjectArrayKeyframeTiming(durations);
446
483
  if (!timing) return null;
447
- 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;
448
486
  if (typeof outerDuration === "number" && Math.abs(outerDuration - timing.totalDuration) <= Number.EPSILON) {
449
487
  return timing;
450
488
  }
@@ -912,17 +950,6 @@ function findAllTweenCalls(ast, ref, scope, targetBindings, targetHelpers) {
912
950
  });
913
951
  return results;
914
952
  }
915
- var BUILTIN_VAR_KEYS = /* @__PURE__ */ new Set(["duration", "ease", "delay"]);
916
- var DROPPED_VAR_KEYS = /* @__PURE__ */ new Set(["onComplete", "onStart", "onUpdate", "onRepeat"]);
917
- var EXTRAS_KEYS = /* @__PURE__ */ new Set([
918
- "stagger",
919
- "yoyo",
920
- "repeat",
921
- "repeatDelay",
922
- "snap",
923
- "overwrite",
924
- "immediateRender"
925
- ]);
926
953
  function extractRawPropertySource(varsArgNode, key) {
927
954
  const node = findPropertyNode(varsArgNode, key);
928
955
  return node ? recast.print(node).code : void 0;
@@ -1195,7 +1222,7 @@ function tweenCallToAnimation(call, scope) {
1195
1222
  percentage: waypoints.length > 1 ? Math.round(i / (waypoints.length - 1) * 100) : 0,
1196
1223
  properties: { x: wp.x, y: wp.y }
1197
1224
  }));
1198
- keyframesData = { format: "percentage", keyframes: kf };
1225
+ keyframesData = { format: "percentage", keyframes: kf, fromMotionPath: true };
1199
1226
  } else {
1200
1227
  const kfs = keyframesData.keyframes;
1201
1228
  if (kfs.length === waypoints.length) {
@@ -1252,7 +1279,6 @@ function tweenCallToAnimation(call, scope) {
1252
1279
  if (call.selectorPartial) anim.hasPartialSelector = true;
1253
1280
  return anim;
1254
1281
  }
1255
- var GSAP_DEFAULT_DURATION = 0.5;
1256
1282
  function resolvePositionString(pos, cursor, prevStart) {
1257
1283
  const trimmed = pos.trim();
1258
1284
  if (trimmed === "") return cursor;
@@ -1284,7 +1310,7 @@ function applyTimelineDefaults(anims, defaults) {
1284
1310
  if (anim.duration === void 0 && defaults.duration !== void 0) {
1285
1311
  anim.duration = defaults.duration;
1286
1312
  }
1287
- if (anim.ease === void 0 && defaults.ease !== void 0) {
1313
+ if (anim.ease === void 0 && defaults.ease !== void 0 && (!anim.keyframes || anim.keyframes.fromMotionPath)) {
1288
1314
  anim.ease = defaults.ease;
1289
1315
  }
1290
1316
  }
@@ -1393,7 +1419,7 @@ function isObjectProperty(prop) {
1393
1419
  return prop?.type === "ObjectProperty" || prop?.type === "Property";
1394
1420
  }
1395
1421
  function isEditablePropertyKey(key) {
1396
- return !BUILTIN_VAR_KEYS.has(key) && !DROPPED_VAR_KEYS.has(key) && !EXTRAS_KEYS.has(key);
1422
+ return !isTweenConfigKey(key);
1397
1423
  }
1398
1424
  function makeObjectProperty(key, value) {
1399
1425
  const obj = parseExpr(`{ ${safeJsKey(key)}: ${serializeValue(value)} }`);
@@ -1520,7 +1546,7 @@ function updateAnimationInScript(script, animationId, updates) {
1520
1546
  return script;
1521
1547
  }
1522
1548
  const target = parsed.located.find((l) => l.id === animationId);
1523
- if (!target) return script;
1549
+ if (!target || updates.properties && target.animation.hasUnresolvedKeyframes) return script;
1524
1550
  applyUpdatesToCall(target.call, updates);
1525
1551
  return recast.print(parsed.ast).code;
1526
1552
  }
@@ -1790,12 +1816,12 @@ function splitAnimationsInScript(script, opts) {
1790
1816
  const pos = typeof anim.position === "number" ? anim.position : 0;
1791
1817
  const dur = anim.duration ?? 0;
1792
1818
  const animEnd = pos + dur;
1793
- if (anim.keyframes) {
1819
+ if (authorsKeyframes(anim)) {
1794
1820
  if (pos >= opts.splitTime) {
1795
1821
  result = updateAnimationSelector(result, anim.id, newSelector);
1796
1822
  } else if (animEnd > opts.splitTime) {
1797
1823
  skippedSelectors.push(`${originalSelector} (keyframes spanning split)`);
1798
- const kfs = anim.keyframes.keyframes;
1824
+ const kfs = anim.keyframes?.keyframes ?? [];
1799
1825
  for (const kf of kfs) {
1800
1826
  const kfTime = pos + kf.percentage / 100 * dur;
1801
1827
  if (kfTime <= opts.splitTime) {
@@ -1805,7 +1831,10 @@ function splitAnimationsInScript(script, opts) {
1805
1831
  }
1806
1832
  }
1807
1833
  } else {
1808
- const kfs = anim.keyframes.keyframes;
1834
+ if (anim.hasUnresolvedKeyframes) {
1835
+ skippedSelectors.push(`${originalSelector} (unreadable keyframes before split)`);
1836
+ }
1837
+ const kfs = anim.keyframes?.keyframes ?? [];
1809
1838
  if (kfs.length > 0) {
1810
1839
  for (const [k, v] of Object.entries(kfs[kfs.length - 1].properties)) {
1811
1840
  inheritedProps[k] = v;
@@ -1985,7 +2014,7 @@ function convertArrayKeyframesToObjectNode(varsArg, scope) {
1985
2014
  outerDuration
1986
2015
  );
1987
2016
  if (!timing) return null;
1988
- if (timing.totalDuration !== void 0 && findPropertyNode(varsArg, "duration") === void 0) {
2017
+ if (findPropertyNode(varsArg, "duration") === void 0) {
1989
2018
  setVarsKey(varsArg, "duration", timing.totalDuration);
1990
2019
  }
1991
2020
  const entries = els.map((el, i) => {
@@ -1994,7 +2023,7 @@ function convertArrayKeyframesToObjectNode(varsArg, scope) {
1994
2023
  );
1995
2024
  return `${JSON.stringify(`${timing.percentages[i]}%`)}: ${recast.print(el).code}`;
1996
2025
  });
1997
- prop.value = parseExpr(`{ ${entries.join(", ")} }`);
2026
+ prop.value = parseExpr(`{ ${entries.join(", ")}, easeEach: "none" }`);
1998
2027
  return prop.value;
1999
2028
  }
2000
2029
  function filterPercentageProps(kfNode) {
@@ -2294,7 +2323,7 @@ function convertToKeyframesInScript(script, animationId, resolvedFromValues, set
2294
2323
  let loc = locateAnimationWithFallback(script, animationId);
2295
2324
  if (!loc) return script;
2296
2325
  const anim = loc.target.animation;
2297
- if (anim.keyframes) return script;
2326
+ if (authorsKeyframes(anim)) return script;
2298
2327
  const { fromProps, toProps } = resolveConversionProps(anim, resolvedFromValues);
2299
2328
  const varsArg = loc.target.call.varsArg;
2300
2329
  const originalEase = anim.ease;
@@ -2629,6 +2658,7 @@ function splitIntoPropertyGroups(script, animationId) {
2629
2658
  let loc = locateAnimationWithFallback(script, animationId);
2630
2659
  if (!loc) return { script, ids: [animationId] };
2631
2660
  const anim = loc.target.animation;
2661
+ if (anim.hasUnresolvedKeyframes) return { script, ids: [animationId] };
2632
2662
  const allPropKeys = /* @__PURE__ */ new Set();
2633
2663
  if (anim.keyframes) {
2634
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-NSVHO5LZ.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-2JJO2O4F.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-NZWMOYQ4.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-PWZANSLF.js";
19
- import "./chunk-U4FYLOXY.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-CHMDN7EH.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-NSVHO5LZ.js";
28
+ import "./chunk-4NWOGZZS.js";
29
29
  import {
30
30
  trackHistoryAction
31
- } from "./chunk-VVKADE6I.js";
32
- import "./chunk-X34RX267.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-KB37AHZU.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-UB7MYXCO.js";
47
- import "./chunk-3XZK3GNY.js";
48
- import "./chunk-F7MXHGU3.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-BW5F5OXO.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-N4RVOW43.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-WYPGIFYA.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-2JJO2O4F.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.126/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-NZWMOYQ4.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-VVKADE6I.js";
18
- import "./chunk-X34RX267.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-KB37AHZU.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-UB7MYXCO.js";
31
- import "./chunk-3XZK3GNY.js";
30
+ import "./chunk-77EJSKGP.js";
31
+ import "./chunk-YRKBFZDQ.js";
32
32
  import {
33
33
  CANVAS_DIMENSIONS,
34
34
  parseHtml
35
- } from "./chunk-F7MXHGU3.js";
35
+ } from "./chunk-AVUUN2XD.js";
36
36
  import "./chunk-DPVXBVLL.js";
37
- import "./chunk-BW5F5OXO.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-N4RVOW43.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-WYPGIFYA.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-2JJO2O4F.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-JR73DPKV.js";
9
+ } from "./chunk-4AH73ZQW.js";
10
10
  import {
11
11
  initialModelForLanguage
12
- } from "./chunk-5WXI4DPS.js";
13
- import "./chunk-ZKUDKJDT.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-STZBZXZT.js";
33
+ } from "./chunk-6F63NYFZ.js";
34
34
  import {
35
35
  installItem
36
- } from "./chunk-67QQI7JH.js";
37
- import "./chunk-G2XWQ4ZE.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-VVKADE6I.js";
54
- import "./chunk-X34RX267.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-KB37AHZU.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-UB7MYXCO.js";
72
- import "./chunk-3XZK3GNY.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-F7MXHGU3.js";
79
+ } from "./chunk-AVUUN2XD.js";
80
80
  import "./chunk-DPVXBVLL.js";
81
- import "./chunk-BW5F5OXO.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-N4RVOW43.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-2JJO2O4F.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-MNOSK2QD.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-C4AYI3JQ.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-GUOLCXLE.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-GUOLCXLE.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-GUOLCXLE.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-GUOLCXLE.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-2DFT6L5Y.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
  }