hyperframes 0.8.151 → 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 (165) hide show
  1. package/dist/{add-QKZZG7A2.js → add-SA33REHW.js} +14 -14
  2. package/dist/{animatedGifPrep-YQDPYGOD.js → animatedGifPrep-3YXJQZ7L.js} +9 -9
  3. package/dist/api.js +15 -15
  4. package/dist/{asset-3Q737Y4H.js → asset-PUVPTWPD.js} +2 -2
  5. package/dist/{assetCataloger-BTHEBJJB.js → assetCataloger-VWE2PLBX.js} +4 -4
  6. package/dist/{auth-XL7EU3SO.js → auth-PS3M6AI7.js} +1 -1
  7. package/dist/{autoUpdate-PJFLTQ3U.js → autoUpdate-CMO4SHWU.js} +2 -2
  8. package/dist/{backgroundChecks-T5TIR5WK.js → backgroundChecks-EDZ2A55J.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-NFLVIDB4.js → batchRender-7PLJISCN.js} +5 -5
  11. package/dist/{beats-JU4GZ26R.js → beats-2MDSIOE7.js} +14 -14
  12. package/dist/{benchmark-7U2YWLTW.js → benchmark-KBBXAPI4.js} +10 -10
  13. package/dist/{browser-D57UPYDA.js → browser-OMWKZRSW.js} +3 -3
  14. package/dist/{bundleWithLocalizedFonts-26MXQOZG.js → bundleWithLocalizedFonts-76DMCRIW.js} +2 -2
  15. package/dist/{capture-47BV25G3.js → capture-LRUUXH5Q.js} +2 -2
  16. package/dist/{capture-LT252COQ.js → capture-YGDC7GN3.js} +12 -12
  17. package/dist/{catalog-BEZXOV4O.js → catalog-SMEBKEVO.js} +14 -14
  18. package/dist/{catch-up-KVV5X6BF.js → catch-up-OMILX3WE.js} +4 -4
  19. package/dist/{check-6KQ433E6.js → check-NUZ62LIW.js} +131 -43
  20. package/dist/{checkBrowser-PRDR6XBY.js → checkBrowser-MSTVEL4V.js} +39 -38
  21. package/dist/{chunk-L6RIMCMG.js → chunk-3DZBQ7MH.js} +3 -3
  22. package/dist/{chunk-POEEDPJI.js → chunk-3E4OCOC5.js} +1 -1
  23. package/dist/{chunk-YZTVHRJ2.js → chunk-3HPJM5IQ.js} +1 -1
  24. package/dist/{chunk-OZ4K46OV.js → chunk-3LO7BBJX.js} +2 -2
  25. package/dist/{chunk-APDLWWFG.js → chunk-3VGU2SH7.js} +1 -1
  26. package/dist/{chunk-RRBKEHST.js → chunk-4UMKAUZI.js} +1 -1
  27. package/dist/{chunk-DHPFXAUF.js → chunk-57GN6KWT.js} +17 -3
  28. package/dist/{chunk-374QQGBQ.js → chunk-5CS4T6C6.js} +63 -12
  29. package/dist/{chunk-XQKVEQNY.js → chunk-5ERVRJMV.js} +2 -2
  30. package/dist/{chunk-S22FKF6G.js → chunk-5VMSUW4Z.js} +2 -2
  31. package/dist/{chunk-N4IXP3MY.js → chunk-6Z4YJ5Q3.js} +3 -3
  32. package/dist/{chunk-FJWEYVEM.js → chunk-7FYFEXD2.js} +658 -198
  33. package/dist/{chunk-4LE27ST4.js → chunk-7NPSXBIN.js} +2 -2
  34. package/dist/chunk-7TASSBN2.js +215 -0
  35. package/dist/{chunk-IP73NMQT.js → chunk-ANS56TPS.js} +10 -10
  36. package/dist/{chunk-PUIELIFA.js → chunk-BQK3J7XO.js} +1 -1
  37. package/dist/{chunk-RJRGR5KF.js → chunk-BYJYQWEX.js} +9 -9
  38. package/dist/{chunk-XXPYZBZ3.js → chunk-C6TPGUWD.js} +2 -2
  39. package/dist/{chunk-FAIYEIZ4.js → chunk-D6RJXQLD.js} +1 -1
  40. package/dist/{chunk-N3I6RAOR.js → chunk-DFXK7KUO.js} +11 -11
  41. package/dist/{chunk-DIOBKUBV.js → chunk-E6EYZ33P.js} +2 -2
  42. package/dist/{chunk-ZGCRVM5M.js → chunk-EVTHG34H.js} +2 -2
  43. package/dist/{chunk-IZPN423R.js → chunk-EXH6L2XZ.js} +2 -2
  44. package/dist/{chunk-AIJS74LG.js → chunk-FFDC5OWV.js} +8 -2
  45. package/dist/{chunk-KQGWP4KH.js → chunk-FNN5QINS.js} +1 -1
  46. package/dist/{chunk-DMKI64EZ.js → chunk-FSZAFCU7.js} +1 -1
  47. package/dist/{chunk-L3N7RJHS.js → chunk-GQETH4PE.js} +3 -3
  48. package/dist/{chunk-ZD3RDNZI.js → chunk-H2SGM2V2.js} +1 -1
  49. package/dist/{chunk-OSAH7S5M.js → chunk-H7FXBK3Q.js} +1 -1
  50. package/dist/{chunk-BRF3O35X.js → chunk-HBCRRCTX.js} +109 -31
  51. package/dist/{chunk-KXX6NLOT.js → chunk-IBYC3VUA.js} +1 -1
  52. package/dist/{chunk-IPDS2SWI.js → chunk-IEDT4EXE.js} +1 -1
  53. package/dist/{chunk-TCWMDCBX.js → chunk-IZIRIDJH.js} +2 -2
  54. package/dist/{chunk-4PKQEKAI.js → chunk-IZKXUYZE.js} +2 -2
  55. package/dist/chunk-KCFF4ENE.js +24 -0
  56. package/dist/{chunk-IZ7L6V76.js → chunk-KZ3L3W4Q.js} +1 -1
  57. package/dist/{chunk-YEBKEWKB.js → chunk-LECTCGGS.js} +1 -1
  58. package/dist/{chunk-O3DUX6P2.js → chunk-LVPSWUS6.js} +4 -4
  59. package/dist/{chunk-LKQS72D5.js → chunk-MNHPG2UO.js} +1 -1
  60. package/dist/{chunk-XKKBIFE5.js → chunk-NHAG2KCE.js} +7 -7
  61. package/dist/{chunk-HVXRYMGQ.js → chunk-PKO2EWO7.js} +1 -1
  62. package/dist/{chunk-XNDXENJQ.js → chunk-PRXAOZWZ.js} +3 -3
  63. package/dist/{chunk-4YZYYP7V.js → chunk-PTXZDSW5.js} +3 -3
  64. package/dist/{chunk-QF7AE3DB.js → chunk-QECEOV6W.js} +1 -1
  65. package/dist/{chunk-XGLNQDLN.js → chunk-QESSGUKX.js} +1 -1
  66. package/dist/{chunk-3SVC7SW4.js → chunk-RN5I2DP5.js} +3 -3
  67. package/dist/{chunk-QBYHNRHU.js → chunk-S3RCK56N.js} +1 -1
  68. package/dist/{chunk-RYL6ZIJP.js → chunk-SWCSL6WS.js} +5 -5
  69. package/dist/{chunk-2PSPARWP.js → chunk-TYXH3EKP.js} +4 -0
  70. package/dist/{chunk-FMNVTKX2.js → chunk-U3BCDVZO.js} +1 -1
  71. package/dist/{chunk-FLVI7FHU.js → chunk-VS732BUG.js} +1 -1
  72. package/dist/{chunk-LFNQDTSH.js → chunk-VYKPBRCB.js} +63 -12
  73. package/dist/{chunk-QLGBNGXC.js → chunk-XEFFJRYX.js} +2 -2
  74. package/dist/{chunk-3ZPFRDEJ.js → chunk-XINGD6MS.js} +4 -4
  75. package/dist/chunk-XSEGMQYA.js +30 -0
  76. package/dist/{chunk-GNTVYF7E.js → chunk-YOEGUBBY.js} +5 -5
  77. package/dist/{chunk-35PWWBGZ.js → chunk-YYEYOFHW.js} +1 -1
  78. package/dist/{chunk-XYHBVSWD.js → chunk-ZTM3RMAD.js} +2 -2
  79. package/dist/{clean-RLTHFTQA.js → clean-F75G45BI.js} +52 -31
  80. package/dist/cli.js +53 -53
  81. package/dist/{cloud-Q5TGBTW3.js → cloud-KVJAOUWH.js} +4 -4
  82. package/dist/{cloudrun-4UZF74MV.js → cloudrun-Q7Q7O4GY.js} +6 -6
  83. package/dist/{compare-Q5UNR2V4.js → compare-DGUJ4QWU.js} +30 -30
  84. package/dist/{compiler-ZXT27Z62.js → compiler-NCN6PTVH.js} +6 -6
  85. package/dist/{component-H734P32V.js → component-PSYGT3JV.js} +3 -3
  86. package/dist/{compositions-YEHDSTDR.js → compositions-J3GAETIC.js} +13 -13
  87. package/dist/{delete-LDBMPWRT.js → delete-MR7LRGRP.js} +2 -2
  88. package/dist/{deterministicFonts-C5JQLCTS.js → deterministicFonts-EOMDR6ZF.js} +3 -3
  89. package/dist/{dist-RGE4QASU.js → dist-2YYJYYPY.js} +3 -3
  90. package/dist/{dist-7JXLFD6U.js → dist-3MHXG6EJ.js} +4 -4
  91. package/dist/{doctor-XNJFIWJ7.js → doctor-JOUGR5UK.js} +11 -11
  92. package/dist/{events-UKCPUWMH.js → events-63BKDWVO.js} +3 -3
  93. package/dist/{events-G6UFLNXR.js → events-FZFBJCIH.js} +2 -2
  94. package/dist/{feedback-CK3KZ7DE.js → feedback-QLKWUDXR.js} +8 -8
  95. package/dist/{figma-3D5C737B.js → figma-YJ7HGVQC.js} +3 -3
  96. package/dist/fontLocalizeCli.js +12 -12
  97. package/dist/{get-QGTQUWFT.js → get-54MUUXMR.js} +2 -2
  98. package/dist/{gpuPolicy-G5QAQDYF.js → gpuPolicy-5OVNR75D.js} +9 -9
  99. package/dist/{grade-compare-XIHOM62P.js → grade-compare-7IDUF673.js} +30 -30
  100. package/dist/{gsapParserAcorn-VXZ3ZIF2.js → gsapParserAcorn-7NCK2LVT.js} +2 -2
  101. package/dist/{help-U5UBXT52.js → help-GQFYO5LU.js} +1 -1
  102. package/dist/{history-5J73QZSA.js → history-UI3O7CSO.js} +77 -205
  103. package/dist/hyperframes-player.global.js +1 -1
  104. package/dist/{info-RJHQQQUP.js → info-VQV3APEX.js} +9 -9
  105. package/dist/{init-M6UQOYYC.js → init-2UBFV5D7.js} +24 -24
  106. package/dist/{inspect-PRQWDBTP.js → inspect-36ACJ3CO.js} +31 -31
  107. package/dist/{installer-ZL7UKYK5.js → installer-GDUZDJG4.js} +7 -7
  108. package/dist/{keyframes-VMUJYTCQ.js → keyframes-GPBU34BG.js} +227 -82
  109. package/dist/{lambda-ON42DRQD.js → lambda-CBJVLTHY.js} +7 -7
  110. package/dist/{layout-QKBFVDVY.js → layout-2IHFV6EI.js} +31 -31
  111. package/dist/{lint-ZQHHL2SV.js → lint-IR6IYCEO.js} +9 -9
  112. package/dist/{lintProject-3Z6OJCSO.js → lintProject-XQWXJYSC.js} +3 -3
  113. package/dist/{list-YBRKIWGF.js → list-UAGKWARH.js} +2 -2
  114. package/dist/{login-4B2YXGLB.js → login-2GYCNCZF.js} +4 -4
  115. package/dist/{media-treatment-5C5EJAAP.js → media-treatment-Z553F7XI.js} +12 -12
  116. package/dist/{models-R7ZDWBJ6.js → models-6AZTNNSO.js} +12 -12
  117. package/dist/{motionShot-ZHESZNUL.js → motionShot-ARRL7WXT.js} +28 -15
  118. package/dist/{normalize-audio-EVWZVTBM.js → normalize-audio-CME4NUB6.js} +6 -6
  119. package/dist/{open-TV6HT4UT.js → open-HU2VXUFD.js} +4 -4
  120. package/dist/{parakeetRunner-YVVF4CG6.js → parakeetRunner-X5MKFMCB.js} +12 -12
  121. package/dist/{pipeline-ETR5SEBS.js → pipeline-MNFTEBJU.js} +9 -9
  122. package/dist/{play-C6WONRZV.js → play-2BBJDDAZ.js} +24 -24
  123. package/dist/{present-RANXTVPA.js → present-OE2WL2NY.js} +20 -20
  124. package/dist/{preview-KF6UMBT2.js → preview-RYSCCAWJ.js} +19 -19
  125. package/dist/{producer-CY2GXBWN.js → producer-SQWNRO66.js} +1 -1
  126. package/dist/{projectConfig-KPXCNMBM.js → projectConfig-B55Z7YKQ.js} +9 -9
  127. package/dist/{publication-Y36N4A7E.js → publication-MDZCOBJP.js} +4 -4
  128. package/dist/{publish-RCQJO35C.js → publish-AILV36BO.js} +12 -12
  129. package/dist/{remove-background-3ZMXVWLB.js → remove-background-6F72LKHG.js} +10 -10
  130. package/dist/{render-PTNEFO5U.js → render-2MZKU3L5.js} +10 -10
  131. package/dist/{render-FKVRCDT2.js → render-5EREH6YD.js} +57 -22
  132. package/dist/{render-WUSTRMUD.js → render-6GH5FSXU.js} +5 -5
  133. package/dist/{render-batch-AQHU2JWZ.js → render-batch-UMBUQWWS.js} +5 -5
  134. package/dist/renderSetupWorker.js +3 -3
  135. package/dist/{resolver-L5BDZJKU.js → resolver-KO6WWO5P.js} +6 -6
  136. package/dist/{sherpa-3S3ISG7G.js → sherpa-DADGYWNR.js} +11 -11
  137. package/dist/skills/hyperframes-cli/SKILL.md +3 -0
  138. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +5 -1
  139. package/dist/{skills-X4WQEKNF.js → skills-QLKSNU4Y.js} +5 -5
  140. package/dist/{skillsUpdateCheck-UYCVHDZ6.js → skillsUpdateCheck-Z2QQGF2W.js} +3 -3
  141. package/dist/{snapshot-YEYHQEZQ.js → snapshot-D5BBFXOS.js} +118 -41
  142. package/dist/{src-2NN2WB6X.js → src-AVQBAECC.js} +8 -8
  143. package/dist/{src-OLBDPEG6.js → src-V7263E47.js} +11 -11
  144. package/dist/{staticProjectServer-7H35NMWB.js → staticProjectServer-HNWSVEWN.js} +20 -20
  145. package/dist/studio/assets/{hyperframes-player-DJt8E7k4.js → hyperframes-player-0BY7-PK7.js} +1 -1
  146. package/dist/studio/assets/{index-DWIHrAY2.js → index-COrWdzlj.js} +1 -1
  147. package/dist/studio/assets/{index-BGks9KLI.js → index-p-VXwuJ2.js} +132 -132
  148. package/dist/studio/assets/{index-DgbLblGR.js → index-rmD5k_ES.js} +1 -1
  149. package/dist/studio/index.html +1 -1
  150. package/dist/{studio-api-HGM2A5I3.js → studio-api-UXKTDWLT.js} +30 -16
  151. package/dist/{studioServer-M6XFL7N6.js → studioServer-JOVR24O3.js} +43 -43
  152. package/dist/{synthesize-22B7L5GX.js → synthesize-MBDVUSH3.js} +2 -1
  153. package/dist/{telemetry-KVCZKVTE.js → telemetry-UW7XAM5W.js} +3 -3
  154. package/dist/{timeline-VYYKZR4V.js → timeline-JSGTZ3AN.js} +20 -20
  155. package/dist/{tokens-B5NFFL55.js → tokens-ADDBGTQ7.js} +2 -2
  156. package/dist/{transcribe-SBETOIWI.js → transcribe-FEHOK626.js} +10 -10
  157. package/dist/{transcribe-WNFRYZAC.js → transcribe-P6MJGSZJ.js} +16 -16
  158. package/dist/{tts-QSAQZVEZ.js → tts-POI553RG.js} +1 -1
  159. package/dist/{updateCheck-5MM2DFUC.js → updateCheck-IBWMLXQ4.js} +2 -2
  160. package/dist/{upgrade-LWID54R3.js → upgrade-NHZ7AYPO.js} +2 -2
  161. package/dist/{urlDownloader-CVLNXFDG.js → urlDownloader-ULDRBWS5.js} +8 -8
  162. package/dist/{validate-V4CGQ6OF.js → validate-NVWNXNBV.js} +25 -25
  163. package/dist/{video-VJB2KRSS.js → video-74DRD2DN.js} +9 -9
  164. package/package.json +1 -1
  165. package/dist/chunk-WBLXWOYK.js +0 -15
@@ -7,8 +7,9 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  ancestor,
9
9
  parse,
10
+ parseExpressionAt,
10
11
  simple
11
- } from "./chunk-2PSPARWP.js";
12
+ } from "./chunk-TYXH3EKP.js";
12
13
 
13
14
  // ../parsers/dist/gsapParserAcorn.js
14
15
  var GSAP_DEFAULT_DURATION = 0.5;
@@ -854,19 +855,19 @@ function collectIdentifierBindingIndex(ast) {
854
855
  }
855
856
  }
856
857
  function addBinding(bindings, scopeNode, name, selector) {
857
- let scoped = bindings.get(scopeNode);
858
+ let scoped = bindings.byScope.get(scopeNode);
858
859
  if (!scoped) {
859
860
  scoped = /* @__PURE__ */ new Map();
860
- bindings.set(scopeNode, scoped);
861
+ bindings.byScope.set(scopeNode, scoped);
861
862
  }
862
863
  if (!scoped.has(name)) scoped.set(name, selector);
863
864
  }
864
865
  function lookupBindingFromAncestors(name, ancestors, bindings) {
865
866
  for (const scopeNode of scopeChainFromAncestors(ancestors)) {
866
- const selector = bindings.get(scopeNode)?.get(name);
867
+ const selector = bindings.byScope.get(scopeNode)?.get(name);
867
868
  if (selector !== void 0) return selector;
868
869
  }
869
- return bindings.get(null)?.get(name) ?? null;
870
+ return bindings.byScope.get(null)?.get(name) ?? null;
870
871
  }
871
872
  function isFunctionNode2(node) {
872
873
  return node?.type === "ArrowFunctionExpression" || node?.type === "FunctionExpression" || node?.type === "FunctionDeclaration";
@@ -905,7 +906,7 @@ function collectScopeBindings(ast) {
905
906
  return bindings;
906
907
  }
907
908
  function collectTargetBindings(ast, scope, identifierBindings) {
908
- const bindings = /* @__PURE__ */ new Map();
909
+ const bindings = { byScope: /* @__PURE__ */ new Map(), identifiers: identifierBindings };
909
910
  ancestor(ast, {
910
911
  VariableDeclarator(node, _, ancestors) {
911
912
  const name = node.id?.name;
@@ -986,7 +987,18 @@ function resolveTargetSelector(node, ancestors, scope, bindings) {
986
987
  return typeof node.value === "string" ? node.value : null;
987
988
  }
988
989
  if (node.type === "Identifier") {
989
- return lookupBindingFromAncestors(node.name, ancestors, bindings);
990
+ const bound = lookupBindingFromAncestors(node.name, ancestors, bindings);
991
+ if (bound) return bound;
992
+ const declaration = findVisibleIdentifierDeclaration(
993
+ node.name,
994
+ ancestors,
995
+ bindings.identifiers,
996
+ node.start
997
+ );
998
+ if (declaration?.kind !== "const" || bindings.identifiers.reassignedDeclarations.has(declaration.node))
999
+ return null;
1000
+ const literal = resolveNode(declaration.node.init, scope);
1001
+ return typeof literal === "string" ? literal : null;
990
1002
  }
991
1003
  if (node.type === "CallExpression") {
992
1004
  return selectorFromQueryCall(node, scope);
@@ -1011,7 +1023,7 @@ function describeProxyTarget(targetNode, varsNode, scope) {
1011
1023
  const onUpdate = findPropertyNode(varsNode, "onUpdate");
1012
1024
  const driven = onUpdate ? drivenDomChannel(onUpdate) : void 0;
1013
1025
  if (driven) return `proxy \u2192 ${driven}`;
1014
- return "dwell/hold";
1026
+ return objNode.properties.length === 0 && !onUpdate ? "dwell/hold" : "proxy (unresolved DOM association)";
1015
1027
  }
1016
1028
  function isStyleAssignmentTarget(left) {
1017
1029
  return left?.type === "MemberExpression" && left.object?.type === "MemberExpression" && left.object.property?.name === "style" && !!left.property?.name;
@@ -1530,6 +1542,8 @@ function tweenCallToAnimation(call, scope, source, identifierBindings) {
1530
1542
  duration,
1531
1543
  ease
1532
1544
  };
1545
+ if (["stagger", "repeat", "repeatDelay", "delay"].some((key) => findPropertyNode(call.varsArg, key)))
1546
+ anim.inspectionTiming = inspectionTiming(call.varsArg, scope);
1533
1547
  if (targetIdentity) anim.targetIdentity = targetIdentity;
1534
1548
  if (!hasPositionArg) anim.implicitPosition = true;
1535
1549
  let group = classifyTweenPropertyGroup(properties);
@@ -1552,14 +1566,51 @@ function tweenCallToAnimation(call, scope, source, identifierBindings) {
1552
1566
  if (provenance) anim.provenance = provenance;
1553
1567
  return anim;
1554
1568
  }
1569
+ function inspectionTiming(varsNode, scope) {
1570
+ const numeric = (key) => {
1571
+ const node2 = findPropertyNode(varsNode, key);
1572
+ if (!node2) return 0;
1573
+ const value = resolveNode(node2, scope);
1574
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
1575
+ };
1576
+ const node = findPropertyNode(varsNode, "stagger");
1577
+ let stagger = { each: 0 };
1578
+ if (node) {
1579
+ const value = resolveNode(node, scope);
1580
+ stagger = typeof value === "number" ? { each: value } : null;
1581
+ if (node.type === "ObjectExpression" && !(node.properties ?? []).some(
1582
+ (p) => !["each", "amount", "from", "ease", "axis", "grid"].includes(propKeyName(p) ?? "")
1583
+ )) {
1584
+ const each = resolveNode(findPropertyNode(node, "each"), scope);
1585
+ const amount = resolveNode(findPropertyNode(node, "amount"), scope);
1586
+ if (!findPropertyNode(node, "grid") && !findPropertyNode(node, "axis")) {
1587
+ if (typeof amount === "number") stagger = { amount };
1588
+ else if (typeof each === "number") stagger = { each };
1589
+ }
1590
+ }
1591
+ }
1592
+ return {
1593
+ repeat: numeric("repeat"),
1594
+ repeatDelay: numeric("repeatDelay"),
1595
+ delay: numeric("delay"),
1596
+ stagger
1597
+ };
1598
+ }
1555
1599
  function staggerAmount(raw) {
1556
1600
  if (typeof raw === "number") return raw;
1557
1601
  if (typeof raw !== "string") return void 0;
1558
1602
  const src = raw.startsWith("__raw:") ? raw.slice(6) : raw;
1559
- const m = /(?:each\s*:\s*)?(-?\d+(?:\.\d+)?)/.exec(src);
1560
- if (!m) return void 0;
1561
- const n = Number.parseFloat(m[1]);
1562
- return Number.isFinite(n) ? n : void 0;
1603
+ try {
1604
+ const node = parseExpressionAt(src, 0, { ecmaVersion: "latest" });
1605
+ if (src.slice(node.end).trim()) return void 0;
1606
+ const value = resolveNode(
1607
+ node.type === "ObjectExpression" ? findPropertyNode(node, "each") : node,
1608
+ /* @__PURE__ */ new Map()
1609
+ );
1610
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
1611
+ } catch {
1612
+ return void 0;
1613
+ }
1563
1614
  }
1564
1615
  function restValue(prop) {
1565
1616
  return prop === "opacity" || prop.startsWith("scale") ? 1 : 0;
@@ -9,7 +9,7 @@ import {
9
9
  parseStrictFiniteTimingNumber,
10
10
  resolveNaturalMediaTimelineDuration,
11
11
  resolveTimedImageDurationSeconds
12
- } from "./chunk-QBYHNRHU.js";
12
+ } from "./chunk-S3RCK56N.js";
13
13
  import {
14
14
  CANVAS_DIMENSIONS,
15
15
  isCompositionElement,
@@ -17,7 +17,7 @@ import {
17
17
  isTextElement,
18
18
  keyframesToGsapAnimations,
19
19
  serializeGsapAnimations
20
- } from "./chunk-LFNQDTSH.js";
20
+ } from "./chunk-VYKPBRCB.js";
21
21
  import {
22
22
  COMPOSITION_ATTRIBUTES,
23
23
  parseStartExpression
@@ -20,7 +20,7 @@ import {
20
20
  SDR_RGB_TO_BT709_FILTER,
21
21
  SDR_RGB_TO_TAGGED_BT709_FILTER,
22
22
  renderProvenanceArgs
23
- } from "./chunk-IZPN423R.js";
23
+ } from "./chunk-EXH6L2XZ.js";
24
24
 
25
25
  // src/background-removal/pipeline.ts
26
26
  import { spawn } from "child_process";
@@ -270,7 +270,7 @@ function inferInputKind(inputPath) {
270
270
  }
271
271
  async function probeMedia(inputPath) {
272
272
  const isImage = inferInputKind(inputPath) === "image";
273
- const engine = await import("./src-2NN2WB6X.js");
273
+ const engine = await import("./src-AVQBAECC.js");
274
274
  const meta = await engine.extractMediaMetadata(inputPath);
275
275
  if (isImage) {
276
276
  return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
@@ -8,20 +8,20 @@ import {
8
8
  DEFAULT_REGISTRY_URL,
9
9
  fetchItemFile,
10
10
  validRegistryItem
11
- } from "./chunk-YZTVHRJ2.js";
11
+ } from "./chunk-3HPJM5IQ.js";
12
12
  import {
13
13
  publishRegistryFile,
14
14
  registryTargetPath
15
15
  } from "./chunk-GMECXFAN.js";
16
16
  import {
17
17
  validateVariables
18
- } from "./chunk-XQKVEQNY.js";
18
+ } from "./chunk-5ERVRJMV.js";
19
19
  import {
20
20
  realProjectRoot
21
21
  } from "./chunk-OFQWTKPW.js";
22
22
  import {
23
23
  isCompositionVariable
24
- } from "./chunk-APDLWWFG.js";
24
+ } from "./chunk-3VGU2SH7.js";
25
25
 
26
26
  // src/registry/installer.ts
27
27
  import { createHash } from "crypto";