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/src/framer.js CHANGED
@@ -11214,7 +11214,7 @@ function stagger(duration = 0.1, {
11214
11214
  };
11215
11215
  }
11216
11216
 
11217
- // /:https://app.framerstatic.com/framer.6RBAH774.mjs
11217
+ // /:https://app.framerstatic.com/framer.6HDYDFRL.mjs
11218
11218
  import { lazy as ReactLazy, } from 'react';
11219
11219
  import React4 from 'react';
11220
11220
  import { startTransition as startTransition2, } from 'react';
@@ -14012,7 +14012,8 @@ function turnOffReactEventHandling() {
14012
14012
  const options = {
14013
14013
  capture: true,
14014
14014
  };
14015
- eventsToStop.forEach((event) => document.body.addEventListener(event, stopFn, options,));
14015
+ const body = document.body;
14016
+ eventsToStop.forEach((event) => body.addEventListener(event, stopFn, options,));
14016
14017
  }
14017
14018
  function TurnOnReactEventHandling() {
14018
14019
  useEffect(() => {
@@ -14020,7 +14021,8 @@ function TurnOnReactEventHandling() {
14020
14021
  const options = {
14021
14022
  capture: true,
14022
14023
  };
14023
- eventsToStop.forEach((event) => document.body.removeEventListener(event, stopFn, options,));
14024
+ const body = document.body;
14025
+ eventsToStop.forEach((event) => body.removeEventListener(event, stopFn, options,));
14024
14026
  eventsToStop = void 0;
14025
14027
  performance.mark('framer-react-event-handling-end',);
14026
14028
  }, [],);
@@ -14678,7 +14680,10 @@ async function insertHTML(html, referenceNode, position = 'beforeend',) {
14678
14680
  async function pump(sourceNode, targetParent, beforeNode,) {
14679
14681
  for (let node = sourceNode.firstChild; node; node = node.nextSibling) {
14680
14682
  if (node instanceof HTMLScriptElement) {
14681
- await handleScript(node, targetParent, beforeNode,);
14683
+ const needsWait = handleScript(node, targetParent, beforeNode,);
14684
+ if (needsWait !== void 0) {
14685
+ await needsWait;
14686
+ }
14682
14687
  continue;
14683
14688
  }
14684
14689
  const clone = node.cloneNode(false,);
@@ -14688,23 +14693,26 @@ async function pump(sourceNode, targetParent, beforeNode,) {
14688
14693
  }
14689
14694
  }
14690
14695
  }
14691
- async function handleScript(node, parent, beforeNode,) {
14696
+ function handleScript(node, parent, beforeNode,) {
14692
14697
  var _a;
14693
14698
  const script = node.cloneNode(true,);
14694
- const isExternal = script.hasAttribute('src',);
14695
- const isAsync = script.hasAttribute('async',);
14696
- const isDefer = script.hasAttribute('defer',);
14697
- const isModule = ((_a = script.getAttribute('type',)) == null ? void 0 : _a.toLowerCase()) === 'module';
14698
- if (!isExternal || isAsync || isDefer || isModule) {
14699
+ if (
14700
+ !node.hasAttribute('src',) ||
14701
+ // external
14702
+ node.hasAttribute('async',) ||
14703
+ // async
14704
+ node.hasAttribute('defer',) ||
14705
+ // defer
14706
+ ((_a = node.getAttribute('type',)) == null ? void 0 : _a.toLowerCase()) === 'module'
14707
+ ) {
14699
14708
  parent.insertBefore(script, beforeNode,);
14700
14709
  } else {
14701
- await execExternalBlockingScript(script, parent, beforeNode,);
14710
+ return execExternalBlockingScript(script, parent, beforeNode,);
14702
14711
  }
14703
14712
  }
14704
14713
  function execExternalBlockingScript(script, parent, beforeNode,) {
14705
14714
  return new Promise((resolve) => {
14706
- script.onload = () => resolve();
14707
- script.onerror = () => resolve();
14715
+ script.onload = script.onerror = resolve;
14708
14716
  parent.insertBefore(script, beforeNode,);
14709
14717
  },);
14710
14718
  }
@@ -20336,7 +20344,12 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20336
20344
  font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));
20337
20345
  letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));
20338
20346
  text-transform: var(--framer-blockquote-text-transform, var(--framer-text-transform, none));
20339
- text-decoration: var(--framer-blockquote-text-decoration, var(--framer-text-decoration, none));
20347
+ text-decoration-line: var(--framer-blockquote-text-decoration, var(--framer-text-decoration, initial));
20348
+ text-decoration-style: var(--framer-blockquote-text-decoration-style, var(--framer-text-decoration-style, initial));
20349
+ text-decoration-color: var(--framer-blockquote-text-decoration-color, var(--framer-text-decoration-color, initial));
20350
+ text-decoration-thickness: var(--framer-blockquote-text-decoration-thickness, var(--framer-text-decoration-thickness, initial));
20351
+ text-decoration-skip-ink: var(--framer-blockquote-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial));
20352
+ text-underline-offset: var(--framer-blockquote-text-decoration-offset, var(--framer-text-decoration-offset, initial));
20340
20353
  line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));
20341
20354
  text-align: var(--framer-blockquote-text-alignment, var(--framer-text-alignment, start));
20342
20355
  -webkit-text-stroke-width: var(--framer-text-stroke-width, initial);
@@ -20487,10 +20500,22 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20487
20500
  color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));
20488
20501
  font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));
20489
20502
  text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
20490
- text-decoration: var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));
20491
20503
  /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */
20492
20504
  cursor: var(--framer-custom-cursors, pointer);
20493
20505
  }
20506
+ `,
20507
+ // Text decoration can't be applied to the nested spans of links because it breaks animations
20508
+ /* css */
20509
+ `
20510
+ a.framer-text,
20511
+ span.framer-text[data-nested-link] {
20512
+ text-decoration-line: var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial)));
20513
+ text-decoration-style: var(--framer-blockquote-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial)));
20514
+ text-decoration-color: var(--framer-blockquote-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial)));
20515
+ text-decoration-thickness: var(--framer-blockquote-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial)));
20516
+ 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)));
20517
+ text-underline-offset: var(--framer-blockquote-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial)));
20518
+ }
20494
20519
  `, /* css */
20495
20520
  `
20496
20521
  @supports not (color: color(display-p3 1 1 1)) {
@@ -20544,7 +20569,17 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20544
20569
  color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
20545
20570
  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));
20546
20571
  text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
20547
- text-decoration: var(--framer-link-hover-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));
20572
+ }
20573
+ `, /* css */
20574
+ `
20575
+ a.framer-text:hover,
20576
+ span.framer-text[data-nested-link]:hover {
20577
+ text-decoration-line: var(--framer-link-hover-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial))));
20578
+ 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))));
20579
+ 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))));
20580
+ 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))));
20581
+ 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))));
20582
+ 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))));
20548
20583
  }
20549
20584
  `, /* css */
20550
20585
  `
@@ -20604,7 +20639,17 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20604
20639
  color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));
20605
20640
  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));
20606
20641
  text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
20607
- text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));
20642
+ }
20643
+ `, /* css */
20644
+ `
20645
+ a.framer-text[data-framer-page-link-current],
20646
+ span.framer-text[data-framer-page-link-current] {
20647
+ text-decoration-line: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial)));
20648
+ text-decoration-style: var(--framer-link-current-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial)));
20649
+ text-decoration-color: var(--framer-link-current-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial)));
20650
+ text-decoration-thickness: var(--framer-link-current-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial)));
20651
+ 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)));
20652
+ text-underline-offset: var(--framer-link-current-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial)));
20608
20653
  }
20609
20654
  `, /* css */
20610
20655
  `
@@ -20659,7 +20704,17 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20659
20704
  color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
20660
20705
  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));
20661
20706
  text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
20662
- text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));
20707
+ }
20708
+ `, /* css */
20709
+ `
20710
+ a.framer-text[data-framer-page-link-current]:hover,
20711
+ span.framer-text[data-framer-page-link-current]:hover {
20712
+ 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))));
20713
+ 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))));
20714
+ 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))));
20715
+ 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))));
20716
+ 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))));
20717
+ 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))));
20663
20718
  }
20664
20719
  `, /* css */
20665
20720
  `
@@ -20727,6 +20782,11 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20727
20782
  --framer-letter-spacing: 0;
20728
20783
  --framer-text-transform: none;
20729
20784
  --framer-text-decoration: none;
20785
+ --framer-text-decoration-style: none;
20786
+ --framer-text-decoration-color: none;
20787
+ --framer-text-decoration-thickness: none;
20788
+ --framer-text-decoration-skip-ink: none;
20789
+ --framer-text-decoration-offset: none;
20730
20790
  --framer-line-height: 1.2em;
20731
20791
  --framer-text-alignment: start;
20732
20792
  --framer-font-open-type-features: normal;
@@ -20936,7 +20996,9 @@ var renderTextStylesRule = `
20936
20996
  letter-spacing: var(--letter-spacing);
20937
20997
  font-size: var(--font-size);
20938
20998
  text-transform: var(--text-transform);
20939
- text-decoration: var(--text-decoration);
20999
+ --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);
21000
+ --text-decoration-skip-ink: var(--framer-text-decoration-skip-ink);
21001
+ --text-underline-offset: var(--framer-text-decoration-offset);
20940
21002
  line-height: var(--line-height);
20941
21003
  }`;
20942
21004
  var textStylesRule = `
@@ -20958,7 +21020,9 @@ var textStylesRule = `
20958
21020
  --letter-spacing: var(--framer-letter-spacing);
20959
21021
  --font-size: var(--framer-font-size);
20960
21022
  --text-transform: var(--framer-text-transform);
20961
- --text-decoration: var(--framer-text-decoration);
21023
+ --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);
21024
+ --text-decoration-skip-ink: var(--framer-text-decoration-skip-ink);
21025
+ --text-underline-offset: var(--framer-text-decoration-offset);
20962
21026
  --line-height: var(--framer-line-height);
20963
21027
  }`;
20964
21028
  var linkStylesRule = `
@@ -20978,7 +21042,9 @@ var linkStylesRule = `
20978
21042
  --text-color: var(--framer-link-text-color, var(--framer-text-color));
20979
21043
  --font-size: var(--framer-link-font-size, var(--framer-font-size));
20980
21044
  --text-transform: var(--framer-link-text-transform, var(--framer-text-transform));
20981
- --text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration));
21045
+ --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));
21046
+ --text-decoration-skip-ink: var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink));
21047
+ --text-underline-offset: var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset));
20982
21048
  }`;
20983
21049
  var linkHoverStylesRule = `
20984
21050
  [data-framer-component-type="Text"] a:hover,
@@ -20997,7 +21063,9 @@ var linkHoverStylesRule = `
20997
21063
  --text-color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color)));
20998
21064
  --font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size)));
20999
21065
  --text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));
21000
- --text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));
21066
+ --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)));
21067
+ --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)));
21068
+ --text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset)));
21001
21069
  }`;
21002
21070
  var linkCurrentStylesRule = `
21003
21071
  [data-framer-component-type="Text"].isCurrent a,
@@ -21016,7 +21084,9 @@ var linkCurrentStylesRule = `
21016
21084
  --text-color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color)));
21017
21085
  --font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size)));
21018
21086
  --text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));
21019
- --text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));
21087
+ --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)));
21088
+ --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)));
21089
+ --text-underline-offset: var(--framer-link-current-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset)));
21020
21090
  }`;
21021
21091
  var textCSSRules = [
21022
21092
  `[data-framer-component-type="Text"] { cursor: inherit; }`,
@@ -21112,9 +21182,9 @@ var scrollCSSRules = [
21112
21182
  var nativeScrollCSSRules = [
21113
21183
  `[data-framer-component-type="NativeScroll"] { -webkit-overflow-scrolling: touch; }`,
21114
21184
  `[data-framer-component-type="NativeScroll"] > * { position: relative; }`,
21115
- `[data-framer-component-type="NativeScroll"].direction-both { overflow-x: scroll; overflow-y: scroll; }`,
21116
- `[data-framer-component-type="NativeScroll"].direction-vertical { overflow-x: hidden; overflow-y: scroll; }`,
21117
- `[data-framer-component-type="NativeScroll"].direction-horizontal { overflow-x: scroll; overflow-y: hidden; }`,
21185
+ `[data-framer-component-type="NativeScroll"].direction-both { overflow-x: auto; overflow-y: auto; }`,
21186
+ `[data-framer-component-type="NativeScroll"].direction-vertical { overflow-x: hidden; overflow-y: auto; }`,
21187
+ `[data-framer-component-type="NativeScroll"].direction-horizontal { overflow-x: auto; overflow-y: hidden; }`,
21118
21188
  `[data-framer-component-type="NativeScroll"].direction-vertical > * { width: 100% !important; }`,
21119
21189
  `[data-framer-component-type="NativeScroll"].direction-horizontal > * { height: 100% !important; }`,
21120
21190
  `[data-framer-component-type="NativeScroll"].scrollbar-hidden::-webkit-scrollbar { display: none; }`,
@@ -28438,32 +28508,34 @@ var Frame = /* @__PURE__ */ (() => {
28438
28508
  })();
28439
28509
  var Draggable = /* @__PURE__ */ WithDragging(DeprecatedFrameWithEvents,);
28440
28510
  function useInfiniteScroll({
28441
- ref: elementRef,
28511
+ ref: observerRef,
28442
28512
  loadMore,
28443
28513
  rootMargin = '0px',
28444
- threshold,
28445
28514
  paginationInfo,
28446
28515
  },) {
28447
- const callback = React4.useCallback((entries) => {
28448
- for (let i = 0; i < entries.length; ++i) {
28449
- const entry = entries[i];
28450
- if (entry.isIntersecting) {
28451
- loadMore();
28452
- return;
28453
- }
28516
+ const isVisibleRef = useRef3(false,);
28517
+ const callback = React4.useCallback((entry) => {
28518
+ if (!entry.isIntersecting) {
28519
+ isVisibleRef.current = false;
28520
+ return;
28454
28521
  }
28522
+ isVisibleRef.current = true;
28523
+ loadMore();
28524
+ return;
28455
28525
  }, [loadMore,],);
28456
- React4.useEffect(() => {
28457
- if (!elementRef.current) return;
28458
- const observer2 = new IntersectionObserver(callback, {
28459
- rootMargin,
28460
- threshold,
28526
+ useEffect(() => {
28527
+ frame.postRender(() => {
28528
+ frame.render(() => {
28529
+ if (isVisibleRef.current) {
28530
+ loadMore();
28531
+ }
28532
+ },);
28461
28533
  },);
28462
- observer2.observe(elementRef.current,);
28463
- return () => {
28464
- observer2.disconnect();
28465
- };
28466
- }, [elementRef, callback, rootMargin, threshold, paginationInfo.currentPage,],);
28534
+ }, [paginationInfo.currentPage, loadMore,],);
28535
+ useSharedIntersectionObserver(observerRef, callback, {
28536
+ rootMargin,
28537
+ enabled: paginationInfo.currentPage < paginationInfo.totalPages,
28538
+ },);
28467
28539
  }
28468
28540
  function withInfiniteScroll(Component17,) {
28469
28541
  return React4.forwardRef(({
@@ -28471,8 +28543,7 @@ function withInfiniteScroll(Component17,) {
28471
28543
  __loadMore,
28472
28544
  ...props
28473
28545
  }, ref,) => {
28474
- const backupRef = React4.useRef(null,);
28475
- const infiniteScrollRef = ref ?? backupRef;
28546
+ const infiniteScrollRef = useObserverRef(ref,);
28476
28547
  useInfiniteScroll({
28477
28548
  rootMargin: '500px',
28478
28549
  loadMore: __loadMore,
@@ -32154,18 +32225,20 @@ function useParallax(options, ref, visibilityStyle,) {
32154
32225
  const parallaxY = useTransform(scrollY, transform2,);
32155
32226
  const visibility = useMotionValue(adjustPosition && originalPosition.current === null ? 'hidden' : visibilityStyle,);
32156
32227
  const defaultValue = useMotionValue(0,);
32228
+ const observers2 = useContext(SharedIntersectionObserverContext,);
32157
32229
  useRefEffect(ref, (element) => {
32158
32230
  if (element === null || !parallaxTransformEnabled) return;
32159
- frame.read(() => {
32160
- var _a;
32161
- originalPosition.current = ((_a = element.getBoundingClientRect()) == null ? void 0 : _a.top) ?? 0;
32162
- },);
32163
- frame.update(() => {
32164
- parallaxY.set(transform2(scrollY.get(),),);
32165
- if (adjustPosition) {
32166
- visibility.set(visibilityStyle ?? 'initial',);
32167
- }
32231
+ const unobserve = observeElement(observers2, 'undefined', element, null, (entry) => {
32232
+ originalPosition.current = entry.boundingClientRect.top;
32233
+ frame.update(() => {
32234
+ parallaxY.set(transform2(scrollY.get(),),);
32235
+ if (adjustPosition) {
32236
+ visibility.set(visibilityStyle ?? 'initial',);
32237
+ }
32238
+ },);
32239
+ unobserve();
32168
32240
  },);
32241
+ return unobserve;
32169
32242
  }, [adjustPosition, parallaxTransformEnabled,],);
32170
32243
  useOnRouteChange(() => {
32171
32244
  if (!parallaxTransformEnabled) return;
@@ -32390,7 +32463,7 @@ function useScrollDirectionChange(scrollDirection, cb, options = {},) {
32390
32463
  let directionChangeOffset = 0;
32391
32464
  let lastDirection = void 0;
32392
32465
  let currentTarget = void 0;
32393
- return scrollInfo(({
32466
+ return scroll((_2, {
32394
32467
  y: scrollY,
32395
32468
  },) => {
32396
32469
  if (!repeat && currentTarget === target) return;
@@ -32552,7 +32625,7 @@ function useStyleAppearEffect(options, ref,) {
32552
32625
  playState.current.scheduledAppearState = void 0;
32553
32626
  playState.current.lastAppearState = appears;
32554
32627
  if (lastAppearState === appears) return;
32555
- runAnimation(appears ? variants.animate : variants.exit, appears,);
32628
+ void runAnimation(appears ? variants.animate : variants.exit, appears,);
32556
32629
  }, {
32557
32630
  enabled: animateWithIntersectionObserver,
32558
32631
  animateOnce: !!options.animateOnce,
@@ -32568,7 +32641,7 @@ function useStyleAppearEffect(options, ref,) {
32568
32641
  };
32569
32642
  const _ = currentRouteKey;
32570
32643
  let lastVariant = 'initial';
32571
- return scrollInfo(({
32644
+ return scroll((_2, {
32572
32645
  y: scrollY,
32573
32646
  },) => {
32574
32647
  const {
@@ -32588,10 +32661,10 @@ function useStyleAppearEffect(options, ref,) {
32588
32661
  lastVariant = variant;
32589
32662
  const variantAnimation = asRecord(variants,)[variant];
32590
32663
  if (!variantAnimation) return;
32591
- runAnimation(variantAnimation,);
32664
+ void runAnimation(variantAnimation,);
32592
32665
  },);
32593
32666
  }, [currentRouteKey, animateWithScrollInfo,],);
32594
- useScrollDirectionChange(options.scrollDirection, (target) => runAnimation(target ?? variants.animate,), {
32667
+ useScrollDirectionChange(options.scrollDirection, (target) => void runAnimation(target ?? variants.animate,), {
32595
32668
  enabled,
32596
32669
  repeat: !options.animateOnce,
32597
32670
  },);
@@ -32714,7 +32787,7 @@ function useStyleTransform({
32714
32787
  const currentRouteKey = useCurrentRouteKey();
32715
32788
  useLayoutEffect(() => {
32716
32789
  if (effectDisabled || !triggerOnScroll) return;
32717
- return scrollInfo(({
32790
+ return scroll((_, {
32718
32791
  y: scrollY,
32719
32792
  },) => {
32720
32793
  if (!transformTargets[0] || transformTargets[0].ref && !transformTargets[0].ref.current) {
@@ -32739,8 +32812,8 @@ function useStyleTransform({
32739
32812
  }
32740
32813
  const _ = currentRouteKey;
32741
32814
  const outputRange = createPageOutputRange(transformTargets,);
32742
- return scrollInfo(
32743
- ({
32815
+ return scroll(
32816
+ (_2, {
32744
32817
  y: scrollY,
32745
32818
  },) => {
32746
32819
  for (const key7 of effectValuesKeys) {
@@ -33088,9 +33161,17 @@ function Suspend() {
33088
33161
  throw suspendPromise;
33089
33162
  }
33090
33163
  var suspend = /* @__PURE__ */ jsx3(Suspend, {},);
33164
+ var DisableSuspenseSuspenseThatPreservesDomContext = createContext(false,);
33165
+ DisableSuspenseSuspenseThatPreservesDomContext.displayName = 'DisableSuspenseSuspenseThatPreservesDomContext';
33091
33166
  function SuspenseThatPreservesDom({
33092
33167
  children,
33093
33168
  },) {
33169
+ const isSuspenseBoundaryDisabled = useContext(DisableSuspenseSuspenseThatPreservesDomContext,);
33170
+ if (isSuspenseBoundaryDisabled) {
33171
+ return /* @__PURE__ */ jsx3(Fragment, {
33172
+ children,
33173
+ },);
33174
+ }
33094
33175
  return /* @__PURE__ */ jsx3(Suspense2, {
33095
33176
  fallback: suspend,
33096
33177
  children,
@@ -35578,41 +35659,88 @@ var salt = 'framer';
35578
35659
  var difficulty = 3;
35579
35660
  var tokenLength = 30;
35580
35661
  var maxTime = 1e4;
35581
- async function calculateProofOfWork() {
35582
- const target = '0'.repeat(difficulty,);
35583
- const startTime = Date.now();
35584
- let processing = true;
35585
- while (processing) {
35586
- const timestamp = Date.now();
35587
- if (timestamp - startTime > maxTime) {
35588
- processing = false;
35589
- return;
35590
- }
35591
- const nonce = randomCharacters(tokenLength,);
35592
- const secret = `${timestamp}:${nonce}`;
35593
- const hash2 = await sha256(salt + secret,);
35594
- if (hash2.startsWith(target,)) {
35595
- return {
35596
- secret,
35597
- hash: hash2,
35598
- };
35662
+ function createWorkerTask() {
35663
+ return function () {
35664
+ async function sha256(text,) {
35665
+ const buffer = new TextEncoder().encode(text,);
35666
+ const hashBuffer = await crypto.subtle.digest('SHA-256', buffer,);
35667
+ return Array.from(new Uint8Array(hashBuffer,),).map((b) => b.toString(16,).padStart(2, '0',)).join('',);
35668
+ }
35669
+ function randomCharacters(count,) {
35670
+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
35671
+ let result = '';
35672
+ const charactersLength = characters.length;
35673
+ for (let i = 0; i < count; i++) {
35674
+ result += characters.charAt(Math.floor(Math.random() * charactersLength,),);
35675
+ }
35676
+ return result;
35599
35677
  }
35600
- }
35601
- return;
35602
- }
35603
- async function sha256(text,) {
35604
- const buffer = new TextEncoder().encode(text,);
35605
- const hashBuffer = await crypto.subtle.digest('SHA-256', buffer,);
35606
- return Array.from(new Uint8Array(hashBuffer,),).map((b) => b.toString(16,).padStart(2, '0',)).join('',);
35678
+ addEventListener('message', async (event) => {
35679
+ const {
35680
+ salt: salt2,
35681
+ difficulty: difficulty2,
35682
+ tokenLength: tokenLength2,
35683
+ maxTime: maxTime2,
35684
+ } = event.data;
35685
+ const target = '0'.repeat(difficulty2,);
35686
+ const startTime = performance.now();
35687
+ let processing = true;
35688
+ while (processing) {
35689
+ const timestamp = performance.now();
35690
+ if (timestamp - startTime > maxTime2) {
35691
+ processing = false;
35692
+ postMessage({
35693
+ success: false,
35694
+ },);
35695
+ return;
35696
+ }
35697
+ const nonce = randomCharacters(tokenLength2,);
35698
+ const secret = `${Date.now()}:${nonce}`;
35699
+ const hash2 = await sha256(salt2 + secret,);
35700
+ if (hash2.startsWith(target,)) {
35701
+ postMessage({
35702
+ success: true,
35703
+ secret,
35704
+ hash: hash2,
35705
+ },);
35706
+ return;
35707
+ }
35708
+ }
35709
+ },);
35710
+ }.toString();
35607
35711
  }
35608
- function randomCharacters(count,) {
35609
- const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
35610
- let result = '';
35611
- const charactersLength = characters.length;
35612
- for (let i = 0; i < count; i++) {
35613
- result += characters.charAt(Math.floor(Math.random() * charactersLength,),);
35614
- }
35615
- return result;
35712
+ async function calculateProofOfWork() {
35713
+ return new Promise((resolve, reject,) => {
35714
+ const webWorkerURL = URL.createObjectURL(
35715
+ new Blob(['(', createWorkerTask(), ')()',], {
35716
+ type: 'application/javascript',
35717
+ },),
35718
+ );
35719
+ const worker = new Worker(webWorkerURL,);
35720
+ worker.onmessage = (event) => {
35721
+ worker.terminate();
35722
+ URL.revokeObjectURL(webWorkerURL,);
35723
+ if (event.data.success) {
35724
+ resolve({
35725
+ secret: event.data.secret,
35726
+ hash: event.data.hash,
35727
+ },);
35728
+ } else {
35729
+ resolve(void 0,);
35730
+ }
35731
+ };
35732
+ worker.onerror = (event) => {
35733
+ worker.terminate();
35734
+ URL.revokeObjectURL(webWorkerURL,);
35735
+ reject(event,);
35736
+ };
35737
+ worker.postMessage({
35738
+ salt,
35739
+ difficulty,
35740
+ tokenLength,
35741
+ maxTime,
35742
+ },);
35743
+ },);
35616
35744
  }
35617
35745
  function getEncodedFormFieldsHeader(data2,) {
35618
35746
  return Array.from(data2.keys(),).map(encodeURIComponent,).join(',',);
@@ -42312,6 +42440,7 @@ function useLoadMorePagination(totalSize, pageSize, hash2, paginateWithSuspended
42312
42440
  ? void 0
42313
42441
  : _d.currentPage) ?? 1,
42314
42442
  );
42443
+ const currentPageRef = useRef3(currentPage,);
42315
42444
  const paginationInfo = useMemo2(() => {
42316
42445
  return {
42317
42446
  currentPage,
@@ -42325,19 +42454,24 @@ function useLoadMorePagination(totalSize, pageSize, hash2, paginateWithSuspended
42325
42454
  const onCanvas = useIsOnFramerCanvas();
42326
42455
  const loadMore = useCallback(async () => {
42327
42456
  if (onCanvas) return;
42328
- if (currentPage >= totalPages) return;
42457
+ if (currentPageRef.current >= totalPages) return;
42329
42458
  await yieldToMain({
42330
42459
  priority: 'user-blocking',
42331
42460
  continueAfter: 'paint',
42332
42461
  },);
42462
+ if (currentPageRef.current >= totalPages) return;
42333
42463
  const renderNextPage = (startTransition14) => {
42334
42464
  startTransition14(() => {
42335
- setCurrentPage((_currentPage) => Math.min(_currentPage + 1, totalPages,));
42465
+ setCurrentPage((_currentPage) => {
42466
+ const nextPage = Math.min(_currentPage + 1, totalPages,);
42467
+ currentPageRef.current = nextPage;
42468
+ return nextPage;
42469
+ },);
42336
42470
  },);
42337
42471
  };
42338
42472
  if (!paginateWithSuspendedLoadingState) return renderNextPage(startTransition2,);
42339
42473
  return renderNextPage(startLoadingTransition,);
42340
- }, [currentPage, totalPages, paginateWithSuspendedLoadingState,],);
42474
+ }, [totalPages, paginateWithSuspendedLoadingState,],);
42341
42475
  return {
42342
42476
  paginationInfo,
42343
42477
  loadMore,
@@ -42993,7 +43127,7 @@ var withVariantAppearEffect = (Component17) =>
42993
43127
  if (!targets) return;
42994
43128
  const playedState = {};
42995
43129
  let currentVariant = void 0;
42996
- return scrollInfo(({
43130
+ return scroll((_, {
42997
43131
  y: scrollY,
42998
43132
  },) => {
42999
43133
  var _a;
@@ -49442,8 +49576,8 @@ var package_default = {
49442
49576
  '@types/react': '^18.2.67',
49443
49577
  '@types/react-dom': '^18.2.22',
49444
49578
  '@types/yargs': '^17.0.33',
49445
- '@typescript-eslint/eslint-plugin': '^8.32.1',
49446
- '@typescript-eslint/parser': '^8.32.1',
49579
+ '@typescript-eslint/eslint-plugin': '^8.35.0',
49580
+ '@typescript-eslint/parser': '^8.35.0',
49447
49581
  chalk: '^4.1.2',
49448
49582
  eslint: '^8.57.1',
49449
49583
  'eslint-plugin-framer-studio': 'workspace:*',