unframer 2.27.2 → 3.0.0

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 (118) hide show
  1. package/dist/babel-jsx.js +2 -2
  2. package/dist/babel-jsx.js.map +1 -1
  3. package/dist/babel-typedoc.d.ts +39 -0
  4. package/dist/babel-typedoc.d.ts.map +1 -0
  5. package/dist/babel-typedoc.js +77 -0
  6. package/dist/babel-typedoc.js.map +1 -0
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +7 -2
  9. package/dist/cli.js.map +1 -1
  10. package/dist/esbuild.d.ts +2 -1
  11. package/dist/esbuild.d.ts.map +1 -1
  12. package/dist/esbuild.js +16 -9
  13. package/dist/esbuild.js.map +1 -1
  14. package/dist/exporter.d.ts +25 -8
  15. package/dist/exporter.d.ts.map +1 -1
  16. package/dist/exporter.js +381 -195
  17. package/dist/exporter.js.map +1 -1
  18. package/dist/exporter.test.js +0 -4
  19. package/dist/exporter.test.js.map +1 -1
  20. package/dist/framer.js +229 -102
  21. package/dist/generated/api-client.d.ts +3 -3
  22. package/dist/generated/api-client.d.ts.map +1 -1
  23. package/dist/package-manager.d.ts +10 -0
  24. package/dist/package-manager.d.ts.map +1 -0
  25. package/dist/package-manager.js +145 -0
  26. package/dist/package-manager.js.map +1 -0
  27. package/dist/react.d.ts +32 -0
  28. package/dist/react.d.ts.map +1 -1
  29. package/dist/react.js +1 -3
  30. package/dist/react.js.map +1 -1
  31. package/dist/undici-dispatcher.js +1 -2
  32. package/dist/undici-dispatcher.js.map +1 -1
  33. package/dist/version.d.ts +1 -1
  34. package/dist/version.d.ts.map +1 -1
  35. package/dist/version.js +1 -1
  36. package/dist/version.js.map +1 -1
  37. package/esm/babel-jsx.js +2 -2
  38. package/esm/babel-jsx.js.map +1 -1
  39. package/esm/babel-typedoc.d.ts +39 -0
  40. package/esm/babel-typedoc.d.ts.map +1 -0
  41. package/esm/babel-typedoc.js +74 -0
  42. package/esm/babel-typedoc.js.map +1 -0
  43. package/esm/cli.d.ts.map +1 -1
  44. package/esm/cli.js +7 -2
  45. package/esm/cli.js.map +1 -1
  46. package/esm/esbuild.d.ts +2 -1
  47. package/esm/esbuild.d.ts.map +1 -1
  48. package/esm/esbuild.js +16 -9
  49. package/esm/esbuild.js.map +1 -1
  50. package/esm/exporter.d.ts +25 -8
  51. package/esm/exporter.d.ts.map +1 -1
  52. package/esm/exporter.js +378 -194
  53. package/esm/exporter.js.map +1 -1
  54. package/esm/exporter.test.js +0 -4
  55. package/esm/exporter.test.js.map +1 -1
  56. package/esm/framer.js +229 -102
  57. package/esm/package-manager.d.ts +10 -0
  58. package/esm/package-manager.d.ts.map +1 -0
  59. package/esm/package-manager.js +141 -0
  60. package/esm/package-manager.js.map +1 -0
  61. package/esm/react.d.ts +32 -0
  62. package/esm/react.d.ts.map +1 -1
  63. package/esm/react.js +1 -3
  64. package/esm/react.js.map +1 -1
  65. package/esm/undici-dispatcher.js +1 -2
  66. package/esm/undici-dispatcher.js.map +1 -1
  67. package/esm/version.d.ts +1 -1
  68. package/esm/version.d.ts.map +1 -1
  69. package/esm/version.js +1 -1
  70. package/esm/version.js.map +1 -1
  71. package/package.json +5 -4
  72. package/src/babel-jsx.ts +2 -2
  73. package/src/babel-typedoc.ts +132 -0
  74. package/src/cli.ts +7 -2
  75. package/src/esbuild.ts +17 -12
  76. package/src/exporter.test.ts +0 -5
  77. package/src/exporter.ts +448 -237
  78. package/src/framer.js +237 -103
  79. package/src/package-manager.ts +164 -0
  80. package/src/react.tsx +33 -0
  81. package/src/undici-dispatcher.ts +1 -1
  82. package/src/version.ts +1 -1
  83. package/dist/framer.d.ts.map +0 -1
  84. package/dist/framer.js.map +0 -1
  85. package/esm/framer-chunks/chunk-22NYTOTD.d.ts +0 -14
  86. package/esm/framer-chunks/chunk-22NYTOTD.d.ts.map +0 -1
  87. package/esm/framer-chunks/chunk-22NYTOTD.js +0 -99
  88. package/esm/framer-chunks/chunk-22NYTOTD.js.map +0 -1
  89. package/esm/framer-chunks/fontshare-GSJIWLGZ-7BHTUG6K.d.ts +0 -115
  90. package/esm/framer-chunks/fontshare-GSJIWLGZ-7BHTUG6K.d.ts.map +0 -1
  91. package/esm/framer-chunks/fontshare-GSJIWLGZ-7BHTUG6K.js +0 -5
  92. package/esm/framer-chunks/fontshare-GSJIWLGZ-7BHTUG6K.js.map +0 -1
  93. package/esm/framer-chunks/fontshare-SSHBFVID-ZX5Y6FJ4.d.ts +0 -781
  94. package/esm/framer-chunks/fontshare-SSHBFVID-ZX5Y6FJ4.d.ts.map +0 -1
  95. package/esm/framer-chunks/fontshare-SSHBFVID-ZX5Y6FJ4.js +0 -5
  96. package/esm/framer-chunks/fontshare-SSHBFVID-ZX5Y6FJ4.js.map +0 -1
  97. package/esm/framer-chunks/fontshare-X6MCIXW5-FUMOBUA2.d.ts +0 -634
  98. package/esm/framer-chunks/fontshare-X6MCIXW5-FUMOBUA2.d.ts.map +0 -1
  99. package/esm/framer-chunks/fontshare-X6MCIXW5-FUMOBUA2.js +0 -5
  100. package/esm/framer-chunks/fontshare-X6MCIXW5-FUMOBUA2.js.map +0 -1
  101. package/esm/framer-chunks/framer-font-TNC5DMGA-XVG7BST3.d.ts +0 -18
  102. package/esm/framer-chunks/framer-font-TNC5DMGA-XVG7BST3.d.ts.map +0 -1
  103. package/esm/framer-chunks/framer-font-TNC5DMGA-XVG7BST3.js +0 -5
  104. package/esm/framer-chunks/framer-font-TNC5DMGA-XVG7BST3.js.map +0 -1
  105. package/esm/framer-chunks/google-3GQMHAEU-KEOTHDV6.d.ts +0 -9827
  106. package/esm/framer-chunks/google-3GQMHAEU-KEOTHDV6.d.ts.map +0 -1
  107. package/esm/framer-chunks/google-3GQMHAEU-KEOTHDV6.js +0 -5
  108. package/esm/framer-chunks/google-3GQMHAEU-KEOTHDV6.js.map +0 -1
  109. package/esm/framer-chunks/google-42BCYVR5-PDCHFNPY.d.ts +0 -3231
  110. package/esm/framer-chunks/google-42BCYVR5-PDCHFNPY.d.ts.map +0 -1
  111. package/esm/framer-chunks/google-42BCYVR5-PDCHFNPY.js +0 -5
  112. package/esm/framer-chunks/google-42BCYVR5-PDCHFNPY.js.map +0 -1
  113. package/esm/framer-chunks/google-LHIHIYDX-FZZ6UXE7.d.ts +0 -1499
  114. package/esm/framer-chunks/google-LHIHIYDX-FZZ6UXE7.d.ts.map +0 -1
  115. package/esm/framer-chunks/google-LHIHIYDX-FZZ6UXE7.js +0 -5
  116. package/esm/framer-chunks/google-LHIHIYDX-FZZ6UXE7.js.map +0 -1
  117. package/esm/framer.d.ts.map +0 -1
  118. package/esm/framer.js.map +0 -1
package/esm/framer.js CHANGED
@@ -10499,7 +10499,7 @@ function stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2, } = {}
10499
10499
  return startDelay + delay2;
10500
10500
  };
10501
10501
  }
10502
- // /:https://app.framerstatic.com/framer.6RBAH774.mjs
10502
+ // /:https://app.framerstatic.com/framer.6HDYDFRL.mjs
10503
10503
  import { lazy as ReactLazy, } from 'react';
10504
10504
  import React4 from 'react';
10505
10505
  import { startTransition as startTransition2, } from 'react';
@@ -13246,7 +13246,8 @@ function turnOffReactEventHandling() {
13246
13246
  const options = {
13247
13247
  capture: true,
13248
13248
  };
13249
- eventsToStop.forEach((event) => document.body.addEventListener(event, stopFn, options));
13249
+ const body = document.body;
13250
+ eventsToStop.forEach((event) => body.addEventListener(event, stopFn, options));
13250
13251
  }
13251
13252
  function TurnOnReactEventHandling() {
13252
13253
  useEffect(() => {
@@ -13255,7 +13256,8 @@ function TurnOnReactEventHandling() {
13255
13256
  const options = {
13256
13257
  capture: true,
13257
13258
  };
13258
- eventsToStop.forEach((event) => document.body.removeEventListener(event, stopFn, options));
13259
+ const body = document.body;
13260
+ eventsToStop.forEach((event) => body.removeEventListener(event, stopFn, options));
13259
13261
  eventsToStop = void 0;
13260
13262
  performance.mark('framer-react-event-handling-end');
13261
13263
  }, []);
@@ -13851,7 +13853,10 @@ async function insertHTML(html, referenceNode, position = 'beforeend') {
13851
13853
  async function pump(sourceNode, targetParent, beforeNode) {
13852
13854
  for (let node = sourceNode.firstChild; node; node = node.nextSibling) {
13853
13855
  if (node instanceof HTMLScriptElement) {
13854
- await handleScript(node, targetParent, beforeNode);
13856
+ const needsWait = handleScript(node, targetParent, beforeNode);
13857
+ if (needsWait !== void 0) {
13858
+ await needsWait;
13859
+ }
13855
13860
  continue;
13856
13861
  }
13857
13862
  const clone = node.cloneNode(false);
@@ -13861,24 +13866,25 @@ async function pump(sourceNode, targetParent, beforeNode) {
13861
13866
  }
13862
13867
  }
13863
13868
  }
13864
- async function handleScript(node, parent, beforeNode) {
13869
+ function handleScript(node, parent, beforeNode) {
13865
13870
  var _a;
13866
13871
  const script = node.cloneNode(true);
13867
- const isExternal = script.hasAttribute('src');
13868
- const isAsync = script.hasAttribute('async');
13869
- const isDefer = script.hasAttribute('defer');
13870
- const isModule = ((_a = script.getAttribute('type')) == null ? void 0 : _a.toLowerCase()) === 'module';
13871
- if (!isExternal || isAsync || isDefer || isModule) {
13872
+ if (!node.hasAttribute('src') ||
13873
+ // external
13874
+ node.hasAttribute('async') ||
13875
+ // async
13876
+ node.hasAttribute('defer') ||
13877
+ // defer
13878
+ ((_a = node.getAttribute('type')) == null ? void 0 : _a.toLowerCase()) === 'module') {
13872
13879
  parent.insertBefore(script, beforeNode);
13873
13880
  }
13874
13881
  else {
13875
- await execExternalBlockingScript(script, parent, beforeNode);
13882
+ return execExternalBlockingScript(script, parent, beforeNode);
13876
13883
  }
13877
13884
  }
13878
13885
  function execExternalBlockingScript(script, parent, beforeNode) {
13879
13886
  return new Promise((resolve) => {
13880
- script.onload = () => resolve();
13881
- script.onerror = () => resolve();
13887
+ script.onload = script.onerror = resolve;
13882
13888
  parent.insertBefore(script, beforeNode);
13883
13889
  });
13884
13890
  }
@@ -19399,7 +19405,12 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19399
19405
  font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));
19400
19406
  letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));
19401
19407
  text-transform: var(--framer-blockquote-text-transform, var(--framer-text-transform, none));
19402
- text-decoration: var(--framer-blockquote-text-decoration, var(--framer-text-decoration, none));
19408
+ text-decoration-line: var(--framer-blockquote-text-decoration, var(--framer-text-decoration, initial));
19409
+ text-decoration-style: var(--framer-blockquote-text-decoration-style, var(--framer-text-decoration-style, initial));
19410
+ text-decoration-color: var(--framer-blockquote-text-decoration-color, var(--framer-text-decoration-color, initial));
19411
+ text-decoration-thickness: var(--framer-blockquote-text-decoration-thickness, var(--framer-text-decoration-thickness, initial));
19412
+ text-decoration-skip-ink: var(--framer-blockquote-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial));
19413
+ text-underline-offset: var(--framer-blockquote-text-decoration-offset, var(--framer-text-decoration-offset, initial));
19403
19414
  line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));
19404
19415
  text-align: var(--framer-blockquote-text-alignment, var(--framer-text-alignment, start));
19405
19416
  -webkit-text-stroke-width: var(--framer-text-stroke-width, initial);
@@ -19548,10 +19559,22 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19548
19559
  color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));
19549
19560
  font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));
19550
19561
  text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
19551
- text-decoration: var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));
19552
19562
  /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */
19553
19563
  cursor: var(--framer-custom-cursors, pointer);
19554
19564
  }
19565
+ `,
19566
+ // Text decoration can't be applied to the nested spans of links because it breaks animations
19567
+ /* css */
19568
+ `
19569
+ a.framer-text,
19570
+ span.framer-text[data-nested-link] {
19571
+ text-decoration-line: var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial)));
19572
+ text-decoration-style: var(--framer-blockquote-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial)));
19573
+ text-decoration-color: var(--framer-blockquote-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial)));
19574
+ text-decoration-thickness: var(--framer-blockquote-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial)));
19575
+ text-decoration-skip-ink: var(--framer-blockquote-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial)));
19576
+ text-underline-offset: var(--framer-blockquote-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial)));
19577
+ }
19555
19578
  `, /* css */
19556
19579
  `
19557
19580
  @supports not (color: color(display-p3 1 1 1)) {
@@ -19601,7 +19624,17 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19601
19624
  color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
19602
19625
  font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));
19603
19626
  text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
19604
- text-decoration: var(--framer-link-hover-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));
19627
+ }
19628
+ `, /* css */
19629
+ `
19630
+ a.framer-text:hover,
19631
+ span.framer-text[data-nested-link]:hover {
19632
+ text-decoration-line: var(--framer-link-hover-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial))));
19633
+ text-decoration-style: var(--framer-link-hover-text-decoration-style, var(--framer-blockquote-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial))));
19634
+ text-decoration-color: var(--framer-link-hover-text-decoration-color, var(--framer-blockquote-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial))));
19635
+ text-decoration-thickness: var(--framer-link-hover-text-decoration-thickness, var(--framer-blockquote-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial))));
19636
+ text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-blockquote-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial))));
19637
+ text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-blockquote-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial))));
19605
19638
  }
19606
19639
  `, /* css */
19607
19640
  `
@@ -19657,7 +19690,17 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19657
19690
  color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));
19658
19691
  font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));
19659
19692
  text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
19660
- text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));
19693
+ }
19694
+ `, /* css */
19695
+ `
19696
+ a.framer-text[data-framer-page-link-current],
19697
+ span.framer-text[data-framer-page-link-current] {
19698
+ text-decoration-line: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial)));
19699
+ text-decoration-style: var(--framer-link-current-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial)));
19700
+ text-decoration-color: var(--framer-link-current-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial)));
19701
+ text-decoration-thickness: var(--framer-link-current-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial)));
19702
+ text-decoration-skip-ink: var(--framer-link-current-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial)));
19703
+ text-underline-offset: var(--framer-link-current-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial)));
19661
19704
  }
19662
19705
  `, /* css */
19663
19706
  `
@@ -19708,7 +19751,17 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19708
19751
  color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
19709
19752
  font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));
19710
19753
  text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
19711
- text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));
19754
+ }
19755
+ `, /* css */
19756
+ `
19757
+ a.framer-text[data-framer-page-link-current]:hover,
19758
+ span.framer-text[data-framer-page-link-current]:hover {
19759
+ text-decoration-line: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial))));
19760
+ text-decoration-style: var(--framer-link-hover-text-decoration-style, var(--framer-link-current-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial))));
19761
+ text-decoration-color: var(--framer-link-hover-text-decoration-color, var(--framer-link-current-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial))));
19762
+ text-decoration-thickness: var(--framer-link-hover-text-decoration-thickness, var(--framer-link-current-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial))));
19763
+ text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-link-current-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial))));
19764
+ text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-link-current-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial))));
19712
19765
  }
19713
19766
  `, /* css */
19714
19767
  `
@@ -19772,6 +19825,11 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19772
19825
  --framer-letter-spacing: 0;
19773
19826
  --framer-text-transform: none;
19774
19827
  --framer-text-decoration: none;
19828
+ --framer-text-decoration-style: none;
19829
+ --framer-text-decoration-color: none;
19830
+ --framer-text-decoration-thickness: none;
19831
+ --framer-text-decoration-skip-ink: none;
19832
+ --framer-text-decoration-offset: none;
19775
19833
  --framer-line-height: 1.2em;
19776
19834
  --framer-text-alignment: start;
19777
19835
  --framer-font-open-type-features: normal;
@@ -19984,7 +20042,9 @@ var renderTextStylesRule = `
19984
20042
  letter-spacing: var(--letter-spacing);
19985
20043
  font-size: var(--font-size);
19986
20044
  text-transform: var(--text-transform);
19987
- text-decoration: var(--text-decoration);
20045
+ --text-decoration: var(--framer-text-decoration-style, solid) var(--framer-text-decoration, none) var(--framer-text-decoration-color, currentcolor) var(--framer-text-decoration-thickness, auto);
20046
+ --text-decoration-skip-ink: var(--framer-text-decoration-skip-ink);
20047
+ --text-underline-offset: var(--framer-text-decoration-offset);
19988
20048
  line-height: var(--line-height);
19989
20049
  }`;
19990
20050
  var textStylesRule = `
@@ -20006,7 +20066,9 @@ var textStylesRule = `
20006
20066
  --letter-spacing: var(--framer-letter-spacing);
20007
20067
  --font-size: var(--framer-font-size);
20008
20068
  --text-transform: var(--framer-text-transform);
20009
- --text-decoration: var(--framer-text-decoration);
20069
+ --text-decoration: var(--framer-text-decoration-style, solid) var(--framer-text-decoration, none) var(--framer-text-decoration-color, currentcolor) var(--framer-text-decoration-thickness, auto);
20070
+ --text-decoration-skip-ink: var(--framer-text-decoration-skip-ink);
20071
+ --text-underline-offset: var(--framer-text-decoration-offset);
20010
20072
  --line-height: var(--framer-line-height);
20011
20073
  }`;
20012
20074
  var linkStylesRule = `
@@ -20026,7 +20088,9 @@ var linkStylesRule = `
20026
20088
  --text-color: var(--framer-link-text-color, var(--framer-text-color));
20027
20089
  --font-size: var(--framer-link-font-size, var(--framer-font-size));
20028
20090
  --text-transform: var(--framer-link-text-transform, var(--framer-text-transform));
20029
- --text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration));
20091
+ --text-decoration: var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, solid)) var(--framer-link-text-decoration, var(--framer-text-decoration, none)) var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, currentcolor)) var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, auto));
20092
+ --text-decoration-skip-ink: var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink));
20093
+ --text-underline-offset: var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset));
20030
20094
  }`;
20031
20095
  var linkHoverStylesRule = `
20032
20096
  [data-framer-component-type="Text"] a:hover,
@@ -20045,7 +20109,9 @@ var linkHoverStylesRule = `
20045
20109
  --text-color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color)));
20046
20110
  --font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size)));
20047
20111
  --text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));
20048
- --text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));
20112
+ --text-decoration: var(--framer-link-hover-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, solid))) var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))) var(--framer-link-hover-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, currentcolor))) var(--framer-link-hover-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, auto)));
20113
+ --text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink)));
20114
+ --text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset)));
20049
20115
  }`;
20050
20116
  var linkCurrentStylesRule = `
20051
20117
  [data-framer-component-type="Text"].isCurrent a,
@@ -20064,7 +20130,9 @@ var linkCurrentStylesRule = `
20064
20130
  --text-color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color)));
20065
20131
  --font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size)));
20066
20132
  --text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));
20067
- --text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));
20133
+ --text-decoration: var(--framer-link-current-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, solid))) var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))) var(--framer-link-current-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, currentcolor))) var(--framer-link-current-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, auto)));
20134
+ --text-decoration-skip-ink: var(--framer-link-current-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink)));
20135
+ --text-underline-offset: var(--framer-link-current-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset)));
20068
20136
  }`;
20069
20137
  var textCSSRules = [
20070
20138
  `[data-framer-component-type="Text"] { cursor: inherit; }`,
@@ -20160,9 +20228,9 @@ var scrollCSSRules = [
20160
20228
  var nativeScrollCSSRules = [
20161
20229
  `[data-framer-component-type="NativeScroll"] { -webkit-overflow-scrolling: touch; }`,
20162
20230
  `[data-framer-component-type="NativeScroll"] > * { position: relative; }`,
20163
- `[data-framer-component-type="NativeScroll"].direction-both { overflow-x: scroll; overflow-y: scroll; }`,
20164
- `[data-framer-component-type="NativeScroll"].direction-vertical { overflow-x: hidden; overflow-y: scroll; }`,
20165
- `[data-framer-component-type="NativeScroll"].direction-horizontal { overflow-x: scroll; overflow-y: hidden; }`,
20231
+ `[data-framer-component-type="NativeScroll"].direction-both { overflow-x: auto; overflow-y: auto; }`,
20232
+ `[data-framer-component-type="NativeScroll"].direction-vertical { overflow-x: hidden; overflow-y: auto; }`,
20233
+ `[data-framer-component-type="NativeScroll"].direction-horizontal { overflow-x: auto; overflow-y: hidden; }`,
20166
20234
  `[data-framer-component-type="NativeScroll"].direction-vertical > * { width: 100% !important; }`,
20167
20235
  `[data-framer-component-type="NativeScroll"].direction-horizontal > * { height: 100% !important; }`,
20168
20236
  `[data-framer-component-type="NativeScroll"].scrollbar-hidden::-webkit-scrollbar { display: none; }`,
@@ -27366,33 +27434,34 @@ var Frame = /* @__PURE__ */ (() => {
27366
27434
  return FrameInner;
27367
27435
  })();
27368
27436
  var Draggable = /* @__PURE__ */ WithDragging(DeprecatedFrameWithEvents);
27369
- function useInfiniteScroll({ ref: elementRef, loadMore, rootMargin = '0px', threshold, paginationInfo, }) {
27370
- const callback = React4.useCallback((entries) => {
27371
- for (let i = 0; i < entries.length; ++i) {
27372
- const entry = entries[i];
27373
- if (entry.isIntersecting) {
27374
- loadMore();
27375
- return;
27376
- }
27437
+ function useInfiniteScroll({ ref: observerRef, loadMore, rootMargin = '0px', paginationInfo, }) {
27438
+ const isVisibleRef = useRef3(false);
27439
+ const callback = React4.useCallback((entry) => {
27440
+ if (!entry.isIntersecting) {
27441
+ isVisibleRef.current = false;
27442
+ return;
27377
27443
  }
27444
+ isVisibleRef.current = true;
27445
+ loadMore();
27446
+ return;
27378
27447
  }, [loadMore,]);
27379
- React4.useEffect(() => {
27380
- if (!elementRef.current)
27381
- return;
27382
- const observer2 = new IntersectionObserver(callback, {
27383
- rootMargin,
27384
- threshold,
27448
+ useEffect(() => {
27449
+ frame.postRender(() => {
27450
+ frame.render(() => {
27451
+ if (isVisibleRef.current) {
27452
+ loadMore();
27453
+ }
27454
+ });
27385
27455
  });
27386
- observer2.observe(elementRef.current);
27387
- return () => {
27388
- observer2.disconnect();
27389
- };
27390
- }, [elementRef, callback, rootMargin, threshold, paginationInfo.currentPage,]);
27456
+ }, [paginationInfo.currentPage, loadMore,]);
27457
+ useSharedIntersectionObserver(observerRef, callback, {
27458
+ rootMargin,
27459
+ enabled: paginationInfo.currentPage < paginationInfo.totalPages,
27460
+ });
27391
27461
  }
27392
27462
  function withInfiniteScroll(Component17) {
27393
27463
  return React4.forwardRef(({ __paginationInfo, __loadMore, ...props }, ref) => {
27394
- const backupRef = React4.useRef(null);
27395
- const infiniteScrollRef = ref ?? backupRef;
27464
+ const infiniteScrollRef = useObserverRef(ref);
27396
27465
  useInfiniteScroll({
27397
27466
  rootMargin: '500px',
27398
27467
  loadMore: __loadMore,
@@ -30859,19 +30928,21 @@ function useParallax(options, ref, visibilityStyle) {
30859
30928
  const parallaxY = useTransform(scrollY, transform2);
30860
30929
  const visibility = useMotionValue(adjustPosition && originalPosition.current === null ? 'hidden' : visibilityStyle);
30861
30930
  const defaultValue = useMotionValue(0);
30931
+ const observers2 = useContext(SharedIntersectionObserverContext);
30862
30932
  useRefEffect(ref, (element) => {
30863
30933
  if (element === null || !parallaxTransformEnabled)
30864
30934
  return;
30865
- frame.read(() => {
30866
- var _a;
30867
- originalPosition.current = ((_a = element.getBoundingClientRect()) == null ? void 0 : _a.top) ?? 0;
30868
- });
30869
- frame.update(() => {
30870
- parallaxY.set(transform2(scrollY.get()));
30871
- if (adjustPosition) {
30872
- visibility.set(visibilityStyle ?? 'initial');
30873
- }
30935
+ const unobserve = observeElement(observers2, 'undefined', element, null, (entry) => {
30936
+ originalPosition.current = entry.boundingClientRect.top;
30937
+ frame.update(() => {
30938
+ parallaxY.set(transform2(scrollY.get()));
30939
+ if (adjustPosition) {
30940
+ visibility.set(visibilityStyle ?? 'initial');
30941
+ }
30942
+ });
30943
+ unobserve();
30874
30944
  });
30945
+ return unobserve;
30875
30946
  }, [adjustPosition, parallaxTransformEnabled,]);
30876
30947
  useOnRouteChange(() => {
30877
30948
  if (!parallaxTransformEnabled)
@@ -31082,7 +31153,7 @@ function useScrollDirectionChange(scrollDirection, cb, options = {}) {
31082
31153
  let directionChangeOffset = 0;
31083
31154
  let lastDirection = void 0;
31084
31155
  let currentTarget = void 0;
31085
- return scrollInfo(({ y: scrollY, }) => {
31156
+ return scroll((_2, { y: scrollY, }) => {
31086
31157
  if (!repeat && currentTarget === target)
31087
31158
  return;
31088
31159
  if (scrollY.current > scrollY.scrollLength)
@@ -31240,7 +31311,7 @@ function useStyleAppearEffect(options, ref) {
31240
31311
  playState.current.lastAppearState = appears;
31241
31312
  if (lastAppearState === appears)
31242
31313
  return;
31243
- runAnimation(appears ? variants.animate : variants.exit, appears);
31314
+ void runAnimation(appears ? variants.animate : variants.exit, appears);
31244
31315
  }, {
31245
31316
  enabled: animateWithIntersectionObserver,
31246
31317
  animateOnce: !!options.animateOnce,
@@ -31257,7 +31328,7 @@ function useStyleAppearEffect(options, ref) {
31257
31328
  };
31258
31329
  const _ = currentRouteKey;
31259
31330
  let lastVariant = 'initial';
31260
- return scrollInfo(({ y: scrollY, }) => {
31331
+ return scroll((_2, { y: scrollY, }) => {
31261
31332
  const { targets, } = options;
31262
31333
  if (!targets)
31263
31334
  return;
@@ -31276,10 +31347,10 @@ function useStyleAppearEffect(options, ref) {
31276
31347
  const variantAnimation = asRecord(variants)[variant];
31277
31348
  if (!variantAnimation)
31278
31349
  return;
31279
- runAnimation(variantAnimation);
31350
+ void runAnimation(variantAnimation);
31280
31351
  });
31281
31352
  }, [currentRouteKey, animateWithScrollInfo,]);
31282
- useScrollDirectionChange(options.scrollDirection, (target) => runAnimation(target ?? variants.animate), {
31353
+ useScrollDirectionChange(options.scrollDirection, (target) => void runAnimation(target ?? variants.animate), {
31283
31354
  enabled,
31284
31355
  repeat: !options.animateOnce,
31285
31356
  });
@@ -31395,7 +31466,7 @@ function useStyleTransform({ transformTrigger, styleTransformEffectEnabled, tran
31395
31466
  useLayoutEffect(() => {
31396
31467
  if (effectDisabled || !triggerOnScroll)
31397
31468
  return;
31398
- return scrollInfo(({ y: scrollY, }) => {
31469
+ return scroll((_, { y: scrollY, }) => {
31399
31470
  if (!transformTargets[0] || transformTargets[0].ref && !transformTargets[0].ref.current) {
31400
31471
  return;
31401
31472
  }
@@ -31419,7 +31490,7 @@ function useStyleTransform({ transformTrigger, styleTransformEffectEnabled, tran
31419
31490
  }
31420
31491
  const _ = currentRouteKey;
31421
31492
  const outputRange = createPageOutputRange(transformTargets);
31422
- return scrollInfo(({ y: scrollY, }) => {
31493
+ return scroll((_2, { y: scrollY, }) => {
31423
31494
  for (const key7 of effectValuesKeys) {
31424
31495
  if (shouldReduceMotion && key7 !== 'opacity')
31425
31496
  continue;
@@ -31724,7 +31795,15 @@ function Suspend() {
31724
31795
  throw suspendPromise;
31725
31796
  }
31726
31797
  var suspend = /* @__PURE__ */ jsx3(Suspend, {});
31798
+ var DisableSuspenseSuspenseThatPreservesDomContext = createContext(false);
31799
+ DisableSuspenseSuspenseThatPreservesDomContext.displayName = 'DisableSuspenseSuspenseThatPreservesDomContext';
31727
31800
  function SuspenseThatPreservesDom({ children, }) {
31801
+ const isSuspenseBoundaryDisabled = useContext(DisableSuspenseSuspenseThatPreservesDomContext);
31802
+ if (isSuspenseBoundaryDisabled) {
31803
+ return /* @__PURE__ */ jsx3(Fragment, {
31804
+ children,
31805
+ });
31806
+ }
31728
31807
  return /* @__PURE__ */ jsx3(Suspense2, {
31729
31808
  fallback: suspend,
31730
31809
  children,
@@ -34056,41 +34135,82 @@ var salt = 'framer';
34056
34135
  var difficulty = 3;
34057
34136
  var tokenLength = 30;
34058
34137
  var maxTime = 1e4;
34059
- async function calculateProofOfWork() {
34060
- const target = '0'.repeat(difficulty);
34061
- const startTime = Date.now();
34062
- let processing = true;
34063
- while (processing) {
34064
- const timestamp = Date.now();
34065
- if (timestamp - startTime > maxTime) {
34066
- processing = false;
34067
- return;
34068
- }
34069
- const nonce = randomCharacters(tokenLength);
34070
- const secret = `${timestamp}:${nonce}`;
34071
- const hash2 = await sha256(salt + secret);
34072
- if (hash2.startsWith(target)) {
34073
- return {
34074
- secret,
34075
- hash: hash2,
34076
- };
34138
+ function createWorkerTask() {
34139
+ return function () {
34140
+ async function sha256(text) {
34141
+ const buffer = new TextEncoder().encode(text);
34142
+ const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
34143
+ return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, '0')).join('');
34144
+ }
34145
+ function randomCharacters(count) {
34146
+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
34147
+ let result = '';
34148
+ const charactersLength = characters.length;
34149
+ for (let i = 0; i < count; i++) {
34150
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
34151
+ }
34152
+ return result;
34077
34153
  }
34078
- }
34079
- return;
34080
- }
34081
- async function sha256(text) {
34082
- const buffer = new TextEncoder().encode(text);
34083
- const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
34084
- return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, '0')).join('');
34154
+ addEventListener('message', async (event) => {
34155
+ const { salt: salt2, difficulty: difficulty2, tokenLength: tokenLength2, maxTime: maxTime2, } = event.data;
34156
+ const target = '0'.repeat(difficulty2);
34157
+ const startTime = performance.now();
34158
+ let processing = true;
34159
+ while (processing) {
34160
+ const timestamp = performance.now();
34161
+ if (timestamp - startTime > maxTime2) {
34162
+ processing = false;
34163
+ postMessage({
34164
+ success: false,
34165
+ });
34166
+ return;
34167
+ }
34168
+ const nonce = randomCharacters(tokenLength2);
34169
+ const secret = `${Date.now()}:${nonce}`;
34170
+ const hash2 = await sha256(salt2 + secret);
34171
+ if (hash2.startsWith(target)) {
34172
+ postMessage({
34173
+ success: true,
34174
+ secret,
34175
+ hash: hash2,
34176
+ });
34177
+ return;
34178
+ }
34179
+ }
34180
+ });
34181
+ }.toString();
34085
34182
  }
34086
- function randomCharacters(count) {
34087
- const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
34088
- let result = '';
34089
- const charactersLength = characters.length;
34090
- for (let i = 0; i < count; i++) {
34091
- result += characters.charAt(Math.floor(Math.random() * charactersLength));
34092
- }
34093
- return result;
34183
+ async function calculateProofOfWork() {
34184
+ return new Promise((resolve, reject) => {
34185
+ const webWorkerURL = URL.createObjectURL(new Blob(['(', createWorkerTask(), ')()',], {
34186
+ type: 'application/javascript',
34187
+ }));
34188
+ const worker = new Worker(webWorkerURL);
34189
+ worker.onmessage = (event) => {
34190
+ worker.terminate();
34191
+ URL.revokeObjectURL(webWorkerURL);
34192
+ if (event.data.success) {
34193
+ resolve({
34194
+ secret: event.data.secret,
34195
+ hash: event.data.hash,
34196
+ });
34197
+ }
34198
+ else {
34199
+ resolve(void 0);
34200
+ }
34201
+ };
34202
+ worker.onerror = (event) => {
34203
+ worker.terminate();
34204
+ URL.revokeObjectURL(webWorkerURL);
34205
+ reject(event);
34206
+ };
34207
+ worker.postMessage({
34208
+ salt,
34209
+ difficulty,
34210
+ tokenLength,
34211
+ maxTime,
34212
+ });
34213
+ });
34094
34214
  }
34095
34215
  function getEncodedFormFieldsHeader(data2) {
34096
34216
  return Array.from(data2.keys()).map(encodeURIComponent).join(',');
@@ -40643,6 +40763,7 @@ function useLoadMorePagination(totalSize, pageSize, hash2, paginateWithSuspended
40643
40763
  : _c[hash2]) == null
40644
40764
  ? void 0
40645
40765
  : _d.currentPage) ?? 1);
40766
+ const currentPageRef = useRef3(currentPage);
40646
40767
  const paginationInfo = useMemo2(() => {
40647
40768
  return {
40648
40769
  currentPage,
@@ -40657,21 +40778,27 @@ function useLoadMorePagination(totalSize, pageSize, hash2, paginateWithSuspended
40657
40778
  const loadMore = useCallback(async () => {
40658
40779
  if (onCanvas)
40659
40780
  return;
40660
- if (currentPage >= totalPages)
40781
+ if (currentPageRef.current >= totalPages)
40661
40782
  return;
40662
40783
  await yieldToMain({
40663
40784
  priority: 'user-blocking',
40664
40785
  continueAfter: 'paint',
40665
40786
  });
40787
+ if (currentPageRef.current >= totalPages)
40788
+ return;
40666
40789
  const renderNextPage = (startTransition14) => {
40667
40790
  startTransition14(() => {
40668
- setCurrentPage((_currentPage) => Math.min(_currentPage + 1, totalPages));
40791
+ setCurrentPage((_currentPage) => {
40792
+ const nextPage = Math.min(_currentPage + 1, totalPages);
40793
+ currentPageRef.current = nextPage;
40794
+ return nextPage;
40795
+ });
40669
40796
  });
40670
40797
  };
40671
40798
  if (!paginateWithSuspendedLoadingState)
40672
40799
  return renderNextPage(startTransition2);
40673
40800
  return renderNextPage(startLoadingTransition);
40674
- }, [currentPage, totalPages, paginateWithSuspendedLoadingState,]);
40801
+ }, [totalPages, paginateWithSuspendedLoadingState,]);
40675
40802
  return {
40676
40803
  paginationInfo,
40677
40804
  loadMore,
@@ -41266,7 +41393,7 @@ var withVariantAppearEffect = (Component17) => React4.forwardRef((props, forward
41266
41393
  return;
41267
41394
  const playedState = {};
41268
41395
  let currentVariant = void 0;
41269
- return scrollInfo(({ y: scrollY, }) => {
41396
+ return scroll((_, { y: scrollY, }) => {
41270
41397
  var _a;
41271
41398
  if (!targets[0] || targets[0].ref && !targets[0].ref.current)
41272
41399
  return;
@@ -47318,8 +47445,8 @@ var package_default = {
47318
47445
  '@types/react': '^18.2.67',
47319
47446
  '@types/react-dom': '^18.2.22',
47320
47447
  '@types/yargs': '^17.0.33',
47321
- '@typescript-eslint/eslint-plugin': '^8.32.1',
47322
- '@typescript-eslint/parser': '^8.32.1',
47448
+ '@typescript-eslint/eslint-plugin': '^8.35.0',
47449
+ '@typescript-eslint/parser': '^8.35.0',
47323
47450
  chalk: '^4.1.2',
47324
47451
  eslint: '^8.57.1',
47325
47452
  'eslint-plugin-framer-studio': 'workspace:*',
@@ -0,0 +1,10 @@
1
+ export declare function getPackageManager(targetDir: string): Promise<"" | "npm" | "yarn" | "pnpm" | "bun" | "deno">;
2
+ export declare function installPackagesBatch({ packageNames, cwd, isDev, }: {
3
+ packageNames: string[];
4
+ cwd: string;
5
+ isDev?: boolean;
6
+ }): Promise<{
7
+ success: boolean;
8
+ error?: string;
9
+ }>;
10
+ //# sourceMappingURL=package-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAMA,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,0DA+BxD;AAED,wBAAsB,oBAAoB,CAAC,EACvC,YAAY,EACZ,GAAG,EACH,KAAa,GAChB,EAAE;IACC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoHhD"}