unframer 3.0.6 → 3.2.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 (87) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +3 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/exporter.d.ts +3 -2
  5. package/dist/exporter.d.ts.map +1 -1
  6. package/dist/exporter.js +45 -23
  7. package/dist/exporter.js.map +1 -1
  8. package/dist/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.d.ts +634 -0
  9. package/dist/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.d.ts.map +1 -0
  10. package/dist/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js +8 -0
  11. package/dist/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js.map +1 -0
  12. package/dist/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.d.ts +115 -0
  13. package/dist/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.d.ts.map +1 -0
  14. package/dist/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js +8 -0
  15. package/dist/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js.map +1 -0
  16. package/dist/framer-chunks/fontshare-Y53BJZLK-EUQIV252.d.ts +781 -0
  17. package/dist/framer-chunks/fontshare-Y53BJZLK-EUQIV252.d.ts.map +1 -0
  18. package/dist/framer-chunks/fontshare-Y53BJZLK-EUQIV252.js +8 -0
  19. package/dist/framer-chunks/fontshare-Y53BJZLK-EUQIV252.js.map +1 -0
  20. package/dist/framer-chunks/google-2KFYDWCN-PJC2DDXK.d.ts +1566 -0
  21. package/dist/framer-chunks/google-2KFYDWCN-PJC2DDXK.d.ts.map +1 -0
  22. package/dist/framer-chunks/google-2KFYDWCN-PJC2DDXK.js +8 -0
  23. package/dist/framer-chunks/google-2KFYDWCN-PJC2DDXK.js.map +1 -0
  24. package/dist/framer-chunks/google-HSMCYMMG-DWNQGSHN.d.ts +10293 -0
  25. package/dist/framer-chunks/google-HSMCYMMG-DWNQGSHN.d.ts.map +1 -0
  26. package/dist/framer-chunks/google-HSMCYMMG-DWNQGSHN.js +8 -0
  27. package/dist/framer-chunks/google-HSMCYMMG-DWNQGSHN.js.map +1 -0
  28. package/dist/framer-chunks/google-S367OFIE-AWJEPMSF.d.ts +3588 -0
  29. package/dist/framer-chunks/google-S367OFIE-AWJEPMSF.d.ts.map +1 -0
  30. package/dist/framer-chunks/google-S367OFIE-AWJEPMSF.js +8 -0
  31. package/dist/framer-chunks/google-S367OFIE-AWJEPMSF.js.map +1 -0
  32. package/dist/framer.js +282 -103
  33. package/dist/react.d.ts.map +1 -1
  34. package/dist/react.js +21 -16
  35. package/dist/react.js.map +1 -1
  36. package/dist/version.d.ts +1 -1
  37. package/dist/version.js +1 -1
  38. package/esm/cli.d.ts.map +1 -1
  39. package/esm/cli.js +3 -0
  40. package/esm/cli.js.map +1 -1
  41. package/esm/exporter.d.ts +2 -1
  42. package/esm/exporter.d.ts.map +1 -1
  43. package/esm/exporter.js +46 -24
  44. package/esm/exporter.js.map +1 -1
  45. package/esm/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.d.ts +634 -0
  46. package/esm/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.d.ts.map +1 -0
  47. package/esm/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js +5 -0
  48. package/esm/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js.map +1 -0
  49. package/esm/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.d.ts +115 -0
  50. package/esm/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.d.ts.map +1 -0
  51. package/esm/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js +5 -0
  52. package/esm/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js.map +1 -0
  53. package/esm/framer-chunks/fontshare-Y53BJZLK-EUQIV252.d.ts +781 -0
  54. package/esm/framer-chunks/fontshare-Y53BJZLK-EUQIV252.d.ts.map +1 -0
  55. package/esm/framer-chunks/fontshare-Y53BJZLK-EUQIV252.js +5 -0
  56. package/esm/framer-chunks/fontshare-Y53BJZLK-EUQIV252.js.map +1 -0
  57. package/esm/framer-chunks/google-2KFYDWCN-PJC2DDXK.d.ts +1566 -0
  58. package/esm/framer-chunks/google-2KFYDWCN-PJC2DDXK.d.ts.map +1 -0
  59. package/esm/framer-chunks/google-2KFYDWCN-PJC2DDXK.js +5 -0
  60. package/esm/framer-chunks/google-2KFYDWCN-PJC2DDXK.js.map +1 -0
  61. package/esm/framer-chunks/google-HSMCYMMG-DWNQGSHN.d.ts +10293 -0
  62. package/esm/framer-chunks/google-HSMCYMMG-DWNQGSHN.d.ts.map +1 -0
  63. package/esm/framer-chunks/google-HSMCYMMG-DWNQGSHN.js +5 -0
  64. package/esm/framer-chunks/google-HSMCYMMG-DWNQGSHN.js.map +1 -0
  65. package/esm/framer-chunks/google-S367OFIE-AWJEPMSF.d.ts +3588 -0
  66. package/esm/framer-chunks/google-S367OFIE-AWJEPMSF.d.ts.map +1 -0
  67. package/esm/framer-chunks/google-S367OFIE-AWJEPMSF.js +5 -0
  68. package/esm/framer-chunks/google-S367OFIE-AWJEPMSF.js.map +1 -0
  69. package/esm/framer.js +281 -102
  70. package/esm/react.d.ts.map +1 -1
  71. package/esm/react.js +21 -16
  72. package/esm/react.js.map +1 -1
  73. package/esm/version.d.ts +1 -1
  74. package/esm/version.js +1 -1
  75. package/package.json +2 -2
  76. package/src/cli.ts +3 -0
  77. package/src/exporter.ts +61 -23
  78. package/src/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js +7 -0
  79. package/src/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js +7 -0
  80. package/src/framer-chunks/fontshare-Y53BJZLK-EUQIV252.js +7 -0
  81. package/src/framer-chunks/google-2KFYDWCN-PJC2DDXK.js +7 -0
  82. package/src/framer-chunks/google-HSMCYMMG-DWNQGSHN.js +7 -0
  83. package/src/framer-chunks/google-S367OFIE-AWJEPMSF.js +7 -0
  84. package/src/framer.js +291 -104
  85. package/src/react.tsx +52 -16
  86. package/src/styles/framer.css +52 -1
  87. package/src/version.ts +1 -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.JQQVEEM4.mjs
10502
+ // /:https://app.framerstatic.com/framer.UWLYDHV3.mjs
10503
10503
  import { lazy as ReactLazy, } from 'react';
10504
10504
  import React4 from 'react';
10505
10505
  import { startTransition as startTransition2, } from 'react';
@@ -11971,33 +11971,10 @@ function useRouteHandler(routeId, preload = false, elementId) {
11971
11971
  const handler = React4.useCallback(() => navigate == null ? void 0 : navigate(routeId, elementId), [navigate, elementId, routeId,]);
11972
11972
  return handler;
11973
11973
  }
11974
- var timezone;
11975
- var visitorLocale;
11976
- function setTimezoneAndLocaleForTracking() {
11977
- const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();
11978
- timezone = resolvedDateTimeOptions.timeZone;
11979
- visitorLocale = resolvedDateTimeOptions.locale;
11980
- }
11981
- requestIdleCallback(setTimezoneAndLocaleForTracking);
11974
+ var pageviewEventVersion = 2;
11982
11975
  function sendTrackingEvent(eventType, eventData, sendOn = 'lazy') {
11983
- if (!safeWindow.__framer_events)
11984
- return;
11985
- if (!timezone || !visitorLocale)
11986
- setTimezoneAndLocaleForTracking();
11987
- safeWindow.__framer_events.push([eventType, {
11988
- // Base properties common to all events
11989
- referrer: null,
11990
- // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.
11991
- url: safeWindow.location.href,
11992
- hostname: safeWindow.location.hostname || null,
11993
- pathname: safeWindow.location.pathname || null,
11994
- hash: safeWindow.location.hash || null,
11995
- search: safeWindow.location.search || null,
11996
- timezone,
11997
- locale: visitorLocale,
11998
- // Additional properties specific to custom events
11999
- ...eventData,
12000
- }, sendOn,]);
11976
+ var _a;
11977
+ (_a = safeWindow.__framer_events) == null ? void 0 : _a.push([eventType, eventData, sendOn,]);
12001
11978
  switch (eventType) {
12002
11979
  case 'published_site_click': {
12003
11980
  const { trackingId, href, } = eventData;
@@ -12901,7 +12878,7 @@ function usePopStateHandler(currentRouteId, setCurrentRouteId) {
12901
12878
  const stopMonitoringINPRelatedInputs = monitorINPRelatedInputs();
12902
12879
  void nextRender.promise.finally(stopMonitoringINPRelatedInputs);
12903
12880
  const changeRoute = () => {
12904
- setCurrentRouteId(routeId, isString(localeId) ? localeId : void 0, isString(hash2) ? hash2 : void 0, isObject2(pathVariables) ? pathVariables : void 0, true, nextRender, false);
12881
+ setCurrentRouteId(routeId, isString(localeId) ? localeId : void 0, isString(hash2) ? hash2 : void 0, window.location.pathname + window.location.search + window.location.hash, isObject2(pathVariables) ? pathVariables : void 0, true, nextRender, false);
12905
12882
  };
12906
12883
  const viewTransition = await startViewTransition2(currentRouteId.current, routeId, changeRoute);
12907
12884
  const navigationTransition = (_d = window.navigation) == null ? void 0 : _d.transition;
@@ -15708,6 +15685,14 @@ var P3Color = class _P3Color {
15708
15685
  return color2;
15709
15686
  return value.toString('srgb');
15710
15687
  }
15688
+ static multiplyAlpha(color2, alpha2) {
15689
+ return new _P3Color({
15690
+ r: color2.r,
15691
+ g: color2.g,
15692
+ b: color2.b,
15693
+ a: color2.a * alpha2,
15694
+ });
15695
+ }
15711
15696
  };
15712
15697
  function clampRGB(color2) {
15713
15698
  return P3Color.srgbFromValue(color2);
@@ -18367,8 +18352,14 @@ var DimensionType = /* @__PURE__ */ ((DimensionType2) => {
18367
18352
  DimensionType2[DimensionType2['Auto'] = 2] = 'Auto';
18368
18353
  DimensionType2[DimensionType2['FractionOfFreeSpace'] = 3] = 'FractionOfFreeSpace';
18369
18354
  DimensionType2[DimensionType2['Viewport'] = 4] = 'Viewport';
18355
+ DimensionType2[DimensionType2['FitImage'] = 5] = 'FitImage';
18370
18356
  return DimensionType2;
18371
18357
  })(DimensionType || {});
18358
+ function isAutoDimensionType(dimensionType) {
18359
+ if (isUndefined(dimensionType))
18360
+ return false;
18361
+ return dimensionType === 2 || dimensionType === 5;
18362
+ }
18372
18363
  function isConstraintSupportingChild(child) {
18373
18364
  if (!isReactChild(child) || !isReactElement(child)) {
18374
18365
  return false;
@@ -18379,7 +18370,7 @@ var ConstraintMask = {
18379
18370
  // Modifies the constraint mask to remove invalid (mutually exclusive) options and returns the original.
18380
18371
  // TODO: this removes major inconsistencies but probably needs to be merged with ConstraintSolver.
18381
18372
  quickfix: (constraints) => {
18382
- if (constraints.widthType === 2 || constraints.heightType === 2) {
18373
+ if (isAutoDimensionType(constraints.widthType) || isAutoDimensionType(constraints.heightType)) {
18383
18374
  constraints.aspectRatio = null;
18384
18375
  }
18385
18376
  if (isFiniteNumber(constraints.aspectRatio)) {
@@ -18397,13 +18388,13 @@ var ConstraintMask = {
18397
18388
  }
18398
18389
  }
18399
18390
  if (constraints.left && constraints.right) {
18400
- if (constraints.fixedSize || constraints.widthType === 2 || isFiniteNumber(constraints.maxWidth)) {
18391
+ if (constraints.fixedSize || isAutoDimensionType(constraints.widthType) || isFiniteNumber(constraints.maxWidth)) {
18401
18392
  constraints.right = false;
18402
18393
  }
18403
18394
  constraints.widthType = 0;
18404
18395
  }
18405
18396
  if (constraints.top && constraints.bottom) {
18406
- if (constraints.fixedSize || constraints.heightType === 2 || isFiniteNumber(constraints.maxHeight)) {
18397
+ if (constraints.fixedSize || isAutoDimensionType(constraints.heightType) || isFiniteNumber(constraints.maxHeight)) {
18407
18398
  constraints.bottom = false;
18408
18399
  }
18409
18400
  constraints.heightType = 0;
@@ -18512,7 +18503,7 @@ var ConstraintValues = {
18512
18503
  if (parentWidth && isFiniteNumber(hOpposingPinsOffset)) {
18513
18504
  width = parentWidth - hOpposingPinsOffset;
18514
18505
  }
18515
- else if (autoSize && values.widthType === 2) {
18506
+ else if (autoSize && isAutoDimensionType(values.widthType)) {
18516
18507
  width = autoSize.width;
18517
18508
  }
18518
18509
  else if (isFiniteNumber(values.width)) {
@@ -18530,6 +18521,7 @@ var ConstraintValues = {
18530
18521
  }
18531
18522
  break;
18532
18523
  case 2:
18524
+ case 5:
18533
18525
  break;
18534
18526
  default:
18535
18527
  assertNever(values.widthType);
@@ -18539,7 +18531,7 @@ var ConstraintValues = {
18539
18531
  if (parentHeight && isFiniteNumber(vOpposingPinsOffset)) {
18540
18532
  height = parentHeight - vOpposingPinsOffset;
18541
18533
  }
18542
- else if (autoSize && values.heightType === 2) {
18534
+ else if (autoSize && isAutoDimensionType(values.heightType)) {
18543
18535
  height = autoSize.height;
18544
18536
  }
18545
18537
  else if (isFiniteNumber(values.height)) {
@@ -18557,6 +18549,7 @@ var ConstraintValues = {
18557
18549
  }
18558
18550
  break;
18559
18551
  case 2:
18552
+ case 5:
18560
18553
  break;
18561
18554
  default:
18562
18555
  assertNever(values.heightType);
@@ -19429,6 +19422,7 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19429
19422
  li.framer-text,
19430
19423
  ol.framer-text,
19431
19424
  ul.framer-text,
19425
+ mark.framer-text,
19432
19426
  span.framer-text:not([data-text-fill]) {
19433
19427
  font-family: var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));
19434
19428
  font-style: var(--framer-blockquote-font-style, var(--framer-font-style, normal));
@@ -19454,6 +19448,24 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19454
19448
  text-wrap: var(--framer-text-wrap-override, var(--framer-text-wrap));
19455
19449
  }
19456
19450
  `, /* css */
19451
+ `
19452
+ mark.framer-text,
19453
+ p.framer-text,
19454
+ div.framer-text,
19455
+ h1.framer-text,
19456
+ h2.framer-text,
19457
+ h3.framer-text,
19458
+ h4.framer-text,
19459
+ h5.framer-text,
19460
+ h6.framer-text,
19461
+ li.framer-text,
19462
+ ol.framer-text,
19463
+ ul.framer-text {
19464
+ background-color: var(--framer-blockquote-text-background-color, var(--framer-text-background-color, initial));
19465
+ border-radius: var(--framer-blockquote-text-background-radius, var(--framer-text-background-radius, initial));
19466
+ padding: var(--framer-blockquote-text-background-padding, var(--framer-text-background-padding, initial));
19467
+ }
19468
+ `, /* css */
19457
19469
  `
19458
19470
  @supports not (color: color(display-p3 1 1 1)) {
19459
19471
  p.framer-text,
@@ -19471,6 +19483,10 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19471
19483
  color: ${createRGBVariableFallbacks(['--framer-blockquote-text-color', '--framer-text-color',], '#000')};
19472
19484
  -webkit-text-stroke-color: ${createRGBVariableFallbacks(['--framer-text-stroke-color',], 'initial')};
19473
19485
  }
19486
+
19487
+ mark.framer-text {
19488
+ background-color: ${createRGBVariableFallbacks(['--framer-blockquote-text-background-color', '--framer-text-background-color',], 'initial')};
19489
+ }
19474
19490
  }
19475
19491
  `, /* css */
19476
19492
  `
@@ -19593,6 +19609,10 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19593
19609
  text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
19594
19610
  /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */
19595
19611
  cursor: var(--framer-custom-cursors, pointer);
19612
+ /* Don't inherit background styles from any parent text style. */
19613
+ background-color: var(--framer-link-text-background-color, initial);
19614
+ border-radius: var(--framer-link-text-background-radius, initial);
19615
+ padding: var(--framer-link-text-background-padding, initial);
19596
19616
  }
19597
19617
  `,
19598
19618
  // Text decoration can't be applied to the nested spans of links because it breaks animations
@@ -19615,6 +19635,7 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19615
19635
  span.framer-text[data-nested-link],
19616
19636
  span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {
19617
19637
  color: ${createRGBVariableFallbacks(['--framer-blockquote-text-color', '--framer-link-text-color', '--framer-text-color',], '#000')};
19638
+ background-color: ${createRGBVariableFallbacks(['--framer-link-text-background-color',], 'initial')};
19618
19639
  }
19619
19640
  }
19620
19641
  `, /* css */
@@ -19656,6 +19677,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19656
19677
  color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
19657
19678
  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));
19658
19679
  text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
19680
+ background-color: var(--framer-link-hover-text-background-color, var(--framer-link-text-background-color, var(--framer-text-background-color, initial)));
19681
+ border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial)));
19682
+ padding: var(--framer-link-hover-text-background-padding, var(--framer-link-text-background-padding, var(--framer-text-background-padding, initial)));
19659
19683
  }
19660
19684
  `, /* css */
19661
19685
  `
@@ -19681,6 +19705,11 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19681
19705
  '--framer-link-text-color',
19682
19706
  '--framer-text-color',
19683
19707
  ], '#000')};
19708
+ background-color: ${createRGBVariableFallbacks([
19709
+ '--framer-link-hover-text-background-color',
19710
+ '--framer-link-text-background-color',
19711
+ '--framer-text-background-color',
19712
+ ], 'initial')};
19684
19713
  }
19685
19714
  }
19686
19715
  `, /* css */
@@ -19722,6 +19751,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19722
19751
  color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));
19723
19752
  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));
19724
19753
  text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
19754
+ background-color: var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, initial));
19755
+ border-radius: var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial));
19756
+ padding: var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, initial));
19725
19757
  }
19726
19758
  `, /* css */
19727
19759
  `
@@ -19742,6 +19774,11 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19742
19774
  span.framer-text[data-framer-page-link-current],
19743
19775
  span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {
19744
19776
  color: ${createRGBVariableFallbacks(['--framer-link-current-text-color', '--framer-link-text-color', '--framer-text-color',], '#000')};
19777
+ background-color: ${createRGBVariableFallbacks([
19778
+ '--framer-link-current-text-background-color',
19779
+ '--framer-link-text-background-color',
19780
+ '--framer-text-background-color',
19781
+ ], 'initial')};
19745
19782
  }
19746
19783
  }
19747
19784
  `, /* css */
@@ -19769,6 +19806,11 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19769
19806
  '--framer-code-text-color',
19770
19807
  '--framer-text-color',
19771
19808
  ], '#000')};
19809
+ background-color: ${createRGBVariableFallbacks([
19810
+ '--framer-link-current-text-background-color',
19811
+ '--framer-link-text-background-color',
19812
+ '--framer-text-background-color',
19813
+ ], 'initial')};
19772
19814
  }
19773
19815
  }
19774
19816
  `, /* css */
@@ -19783,6 +19825,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19783
19825
  color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
19784
19826
  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));
19785
19827
  text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
19828
+ background-color: var(--framer-link-hover-text-background-color, var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, initial)));
19829
+ border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial)));
19830
+ padding: var(--framer-link-hover-text-background-padding, var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, initial)));
19786
19831
  }
19787
19832
  `, /* css */
19788
19833
  `
@@ -19809,6 +19854,11 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19809
19854
  '--framer-code-text-color',
19810
19855
  '--framer-text-color',
19811
19856
  ], '#000')};
19857
+ background-color: ${createRGBVariableFallbacks([
19858
+ '--framer-link-hover-text-background-color',
19859
+ '--framer-link-current-text-background-color',
19860
+ '--framer-link-text-background-color',
19861
+ ], 'initial')};
19812
19862
  }
19813
19863
  }
19814
19864
  `, /* css */
@@ -19822,6 +19872,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19822
19872
  font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));
19823
19873
  color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));
19824
19874
  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));
19875
+ background-color: var(--framer-link-hover-text-background-color, var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, var(--framer-text-background-color, initial))));
19876
+ border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial))));
19877
+ padding: var(--framer-link-hover-text-background-padding, var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, var(--framer-text-background-padding, initial))));
19825
19878
  }
19826
19879
  `, /* css */
19827
19880
  `
@@ -19837,6 +19890,11 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19837
19890
  '--framer-code-text-color',
19838
19891
  '--framer-text-color',
19839
19892
  ], '#000')};
19893
+ background-color: ${createRGBVariableFallbacks([
19894
+ '--framer-link-hover-text-background-color',
19895
+ '--framer-link-current-text-background-color',
19896
+ '--framer-link-text-background-color',
19897
+ ], 'initial')};
19840
19898
  }
19841
19899
  }
19842
19900
  `, /* css */
@@ -19865,6 +19923,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
19865
19923
  --framer-line-height: 1.2em;
19866
19924
  --framer-text-alignment: start;
19867
19925
  --framer-font-open-type-features: normal;
19926
+ --framer-text-background-color: initial;
19927
+ --framer-text-background-radius: initial;
19928
+ --framer-text-background-padding: initial;
19868
19929
  }
19869
19930
  `, /* css */
19870
19931
  `
@@ -20318,6 +20379,10 @@ var frameCSSRules = (isPreview) => {
20318
20379
  return isPreview ? frameCSS : [];
20319
20380
  };
20320
20381
  var svgCSSRules = [`.svgContainer svg { display: block; }`,];
20382
+ var overflowClipFallbackCSSVariable = '--overflow-clip-fallback';
20383
+ var overflowClipFallbackCSSRules = /* @__PURE__ */ (() => [`@supports (not (overflow: clip)) {
20384
+ :root { ${overflowClipFallbackCSSVariable}: hidden; }
20385
+ }`,])();
20321
20386
  var combineCSSRules = (isPreview) => [
20322
20387
  ...willChangeTransformRules(isPreview),
20323
20388
  ...componentCSSRules,
@@ -20336,6 +20401,7 @@ var combineCSSRules = (isPreview) => [
20336
20401
  ...svgCSSRules,
20337
20402
  ...resetCSS,
20338
20403
  ...hideScrollbars,
20404
+ ...overflowClipFallbackCSSRules,
20339
20405
  ];
20340
20406
  export var combinedCSSRules = /* @__PURE__ */ combineCSSRules(false);
20341
20407
  var combinedCSSRulesForPreview = /* @__PURE__ */ combineCSSRules(true);
@@ -22049,13 +22115,6 @@ var reactPropsRegex = /^(?:children|dangerouslySetInnerHTML|key|ref|autoFocus|de
22049
22115
  var isPropValid = /* @__PURE__ */ memoize((prop) => reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91
22050
22116
  /* Z+1 */
22051
22117
  );
22052
- var LibraryFeaturesContext = /* @__PURE__ */ React4.createContext(void 0);
22053
- LibraryFeaturesContext.displayName = 'LibraryFeaturesContext';
22054
- var LibraryFeaturesProvider = /* @__PURE__ */ (() => LibraryFeaturesContext.Provider)();
22055
- var useLibraryFeatures = () => {
22056
- const context = React4.useContext(LibraryFeaturesContext);
22057
- return context ?? {};
22058
- };
22059
22118
  var mockWithWarning = (message) => {
22060
22119
  return () => {
22061
22120
  warnOnce2(message);
@@ -22085,6 +22144,7 @@ var implementation = {
22085
22144
  canRenderOptimizedCanvasImage() {
22086
22145
  return false;
22087
22146
  },
22147
+ isOnPageCanvas: false,
22088
22148
  };
22089
22149
  var isRuntimeInjected = false;
22090
22150
  var runtimeProxy = {
@@ -22106,6 +22166,13 @@ function _injectRuntime(injectedRuntime) {
22106
22166
  Object.assign(implementation, injectedRuntime);
22107
22167
  isRuntimeInjected = true;
22108
22168
  }
22169
+ var LibraryFeaturesContext = /* @__PURE__ */ React4.createContext(void 0);
22170
+ LibraryFeaturesContext.displayName = 'LibraryFeaturesContext';
22171
+ var LibraryFeaturesProvider = /* @__PURE__ */ (() => LibraryFeaturesContext.Provider)();
22172
+ var useLibraryFeatures = () => {
22173
+ const context = React4.useContext(LibraryFeaturesContext);
22174
+ return context ?? {};
22175
+ };
22109
22176
  var wrapperStyle = {
22110
22177
  position: 'absolute',
22111
22178
  borderRadius: 'inherit',
@@ -22347,7 +22414,7 @@ var BackgroundImage = {
22347
22414
  isImageObject: function (image) {
22348
22415
  if (!image || typeof image === 'string')
22349
22416
  return false;
22350
- return key in image;
22417
+ return typeof image === 'object' && key in image;
22351
22418
  },
22352
22419
  };
22353
22420
  function applyForwardOverrides(background, props) {
@@ -22382,6 +22449,31 @@ function backgroundImageFromProps(props) {
22382
22449
  }
22383
22450
  return applyForwardOverrides(backgroundImage, props);
22384
22451
  }
22452
+ function getIntrinsicSizeForBackgroundImage(background) {
22453
+ if (!background)
22454
+ return void 0;
22455
+ if (background.pixelHeight && background.pixelWidth) {
22456
+ return {
22457
+ width: background.pixelWidth,
22458
+ height: background.pixelHeight,
22459
+ };
22460
+ }
22461
+ return parseImageSizeFromSrc(background.src);
22462
+ }
22463
+ function parseImageSizeFromSrc(src) {
22464
+ if (!src)
22465
+ return void 0;
22466
+ const url = new URL(src);
22467
+ const width = url.searchParams.get('width');
22468
+ const height = url.searchParams.get('height');
22469
+ if (width && height) {
22470
+ return {
22471
+ width: parseInt(width),
22472
+ height: parseInt(height),
22473
+ };
22474
+ }
22475
+ return void 0;
22476
+ }
22385
22477
  function htmlElementAsMotionComponent(asElem) {
22386
22478
  return asElem && asElem !== 'search' && asElem !== 'slot' && asElem !== 'template' ? motion[asElem] : motion['div'];
22387
22479
  }
@@ -23368,7 +23460,7 @@ function useStyleAndRect(props) {
23368
23460
  }
23369
23461
  const isRenderingStaticContent = isStaticRenderer();
23370
23462
  if (props.positionSticky) {
23371
- if (!isRenderingStaticContent || inCodeComponent) {
23463
+ if (!isRenderingStaticContent || runtime.isOnPageCanvas || inCodeComponent) {
23372
23464
  resultStyle.position = 'sticky';
23373
23465
  resultStyle.willChange = 'transform';
23374
23466
  resultStyle.zIndex = 1;
@@ -23378,8 +23470,13 @@ function useStyleAndRect(props) {
23378
23470
  resultStyle.left = props.positionStickyLeft;
23379
23471
  }
23380
23472
  }
23381
- else if (isRenderingStaticContent && (props.positionFixed || props.positionAbsolute)) {
23382
- resultStyle.position = 'absolute';
23473
+ else if (isRenderingStaticContent) {
23474
+ if (props.positionFixed) {
23475
+ resultStyle.position = runtime.isOnPageCanvas ? 'fixed' : 'absolute';
23476
+ }
23477
+ else if (props.positionAbsolute) {
23478
+ resultStyle.position = 'absolute';
23479
+ }
23383
23480
  }
23384
23481
  if ('rotate' in resultStyle && resultStyle.rotate === void 0) {
23385
23482
  delete resultStyle.rotate;
@@ -23484,6 +23581,11 @@ var VisibleFrame = /* @__PURE__ */ forwardRef(function VisibleFrame2(props, forw
23484
23581
  ],
23485
23582
  }), parentSize);
23486
23583
  const MotionComponent = htmlElementAsMotionComponent(props.as);
23584
+ const intrinsicSize = getIntrinsicSizeForBackgroundImage(backgroundImage);
23585
+ if (props.fitImageDimension && intrinsicSize) {
23586
+ currentStyle[props.fitImageDimension] = 'auto';
23587
+ currentStyle.aspectRatio = intrinsicSize.width / intrinsicSize.height;
23588
+ }
23487
23589
  return /* @__PURE__ */ jsxs(MotionComponent, {
23488
23590
  ...dataProps,
23489
23591
  ...motionProps,
@@ -32791,15 +32893,15 @@ function domWriteCreateUpdateSafeArea(safeAreaRef) {
32791
32893
  Object.assign(safeAreaRef.current.style, floatingPositionSafeAreaStyle(x, y, placement, anchorRect, calculatedRect));
32792
32894
  };
32793
32895
  }
32794
- function domWriteUpdatePosition(floatingPositionRef, position, rect) {
32896
+ function domWriteUpdatePosition(floatingPositionRef, position, rect, scrollX, scrollY) {
32795
32897
  if (!floatingPositionRef.current)
32796
32898
  return;
32797
32899
  Object.assign(floatingPositionRef.current.style, {
32798
32900
  position,
32799
32901
  visibility: 'visible',
32800
32902
  // Append "px" because we are assigning this object straight to style.
32801
- left: ((rect == null ? void 0 : rect.x) ?? 0) + (position === 'fixed' ? 0 : safeWindow.scrollX) + 'px',
32802
- top: ((rect == null ? void 0 : rect.y) ?? 0) + (position === 'fixed' ? 0 : safeWindow.scrollY) + 'px',
32903
+ left: ((rect == null ? void 0 : rect.x) ?? 0) + scrollX + 'px',
32904
+ top: ((rect == null ? void 0 : rect.y) ?? 0) + scrollY + 'px',
32803
32905
  });
32804
32906
  }
32805
32907
  var FloatingStackingContext = /* @__PURE__ */ (() => {
@@ -32926,13 +33028,14 @@ function Floating({ alignment, placement, safeArea, offsetX, offsetY, anchorRef,
32926
33028
  let elementRect;
32927
33029
  let safePlacement;
32928
33030
  let calculatedRect;
32929
- let scrolls;
32930
33031
  let latestEvent;
32931
33032
  let updateSafeArea;
33033
+ let scrollX = 0;
33034
+ let scrollY = 0;
32932
33035
  const onRender = () => {
32933
33036
  if (cleanupHasRun)
32934
33037
  return;
32935
- domWriteUpdatePosition(floatingPositionRef, position, calculatedRect);
33038
+ domWriteUpdatePosition(floatingPositionRef, position, calculatedRect, scrollX, scrollY);
32936
33039
  if (safeArea)
32937
33040
  updateSafeArea(anchorRect, calculatedRect, safePlacement, latestEvent);
32938
33041
  latestEvent = void 0;
@@ -32943,7 +33046,7 @@ function Floating({ alignment, placement, safeArea, offsetX, offsetY, anchorRef,
32943
33046
  onRender();
32944
33047
  }
32945
33048
  else {
32946
- domWriteUpdatePosition(floatingPositionRef, position, calculatedRect);
33049
+ domWriteUpdatePosition(floatingPositionRef, position, calculatedRect, scrollX, scrollY);
32947
33050
  }
32948
33051
  initialUpdateHasRun = true;
32949
33052
  };
@@ -32955,6 +33058,14 @@ function Floating({ alignment, placement, safeArea, offsetX, offsetY, anchorRef,
32955
33058
  const domReadUpdateSafePlacementAndRect = () => {
32956
33059
  if (!getSafePlacementRect || cleanupHasRun)
32957
33060
  return;
33061
+ if (position === 'fixed') {
33062
+ scrollX = 0;
33063
+ scrollY = 0;
33064
+ }
33065
+ else {
33066
+ scrollX = safeWindow.scrollX;
33067
+ scrollY = safeWindow.scrollY;
33068
+ }
32958
33069
  anchorRect = anchorRef.current.getBoundingClientRect();
32959
33070
  const safePlacementAndRect = getSafePlacementRect(anchorRect, elementRect);
32960
33071
  safePlacement = safePlacementAndRect[0];
@@ -34517,57 +34628,79 @@ function isSamePage(a, b) {
34517
34628
  return aPathVariables.length === bPathVariables.length &&
34518
34629
  Object.keys(aPathVariables).every((key7) => aPathVariables[key7] === bPathVariables[key7]);
34519
34630
  }
34520
- function getPageviewEventData({ abTestId, framerSiteId, routeId, routePath, collectionItemId, localeCode, }) {
34521
- return {
34522
- abTestId,
34523
- framerSiteId,
34524
- routePath: routePath || '/',
34525
- collectionItemId,
34526
- framerLocale: localeCode,
34527
- webPageId: routeId,
34528
- };
34631
+ var timezone = null;
34632
+ var visitorLocale = null;
34633
+ function setTimezoneAndLocaleForTracking() {
34634
+ const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();
34635
+ timezone = resolvedDateTimeOptions.timeZone;
34636
+ visitorLocale = resolvedDateTimeOptions.locale;
34529
34637
  }
34530
- var useSendPageView = (currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale) => {
34638
+ requestIdleCallback(setTimezoneAndLocaleForTracking);
34639
+ var useSendPageView = (currentRoute, currentRouteId, currentPathnameWithHash, currentPathVariables, collectionUtils, activeLocale) => {
34531
34640
  const framerSiteId = useContext(FormContext);
34532
34641
  const pageviewEventData = useRef3();
34533
34642
  const skipFirstPageView = useRef3(true);
34534
34643
  useEffect(() => {
34535
- const getFullPageviewEventData = async () => {
34536
- var _a;
34537
- let collectionItemId = null;
34538
- if ((currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables) {
34539
- const utils = await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils));
34540
- const [slug,] = Object.values(currentPathVariables);
34541
- if (utils && typeof slug === 'string') {
34542
- collectionItemId = (await utils.getRecordIdBySlug(slug, activeLocale || void 0)) ?? null;
34543
- }
34544
- }
34545
- return getPageviewEventData({
34644
+ function getFullPageviewEventData() {
34645
+ if (!timezone || !visitorLocale)
34646
+ setTimezoneAndLocaleForTracking();
34647
+ const currentLocation = currentPathnameWithHash
34648
+ ? new URL(safeWindow.location.origin + currentPathnameWithHash)
34649
+ : safeWindow.location;
34650
+ const eventData = {
34651
+ version: pageviewEventVersion,
34546
34652
  abTestId: currentRoute == null ? void 0 : currentRoute.abTestId,
34547
34653
  framerSiteId: framerSiteId ?? null,
34548
34654
  // If we are in a variant route, let's use the variant ID as the route ID instead, so that the analytics panel will be able to show the correct tracking data.
34549
- routeId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,
34550
- routePath: currentRoute == null ? void 0 : currentRoute.path,
34551
- collectionItemId,
34552
- localeCode: (activeLocale == null ? void 0 : activeLocale.code) || null,
34553
- });
34554
- };
34655
+ webPageId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,
34656
+ routePath: (currentRoute == null ? void 0 : currentRoute.path) || '/',
34657
+ collectionItemId: null,
34658
+ framerLocale: (activeLocale == null ? void 0 : activeLocale.code) || null,
34659
+ referrer: null,
34660
+ // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.
34661
+ url: currentLocation.href,
34662
+ hostname: currentLocation.hostname,
34663
+ // Capture the current location before the user moves to a new page to prevent
34664
+ // tracking wrong pathnames due to a race condition caused by async operations
34665
+ // when resolving the collection item ID below
34666
+ pathname: currentLocation.pathname,
34667
+ search: currentLocation.search || null,
34668
+ hash: currentLocation.hash || null,
34669
+ timezone,
34670
+ locale: visitorLocale,
34671
+ };
34672
+ return (currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables
34673
+ ? (async () => {
34674
+ var _a;
34675
+ let collectionItemId = null;
34676
+ const utils = currentRoute.collectionId &&
34677
+ (await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils)));
34678
+ const [slug,] = Object.values(currentPathVariables);
34679
+ if (utils && typeof slug === 'string') {
34680
+ collectionItemId = (await utils.getRecordIdBySlug(slug, activeLocale || void 0)) ?? null;
34681
+ }
34682
+ return {
34683
+ ...eventData,
34684
+ collectionItemId,
34685
+ };
34686
+ })()
34687
+ : eventData;
34688
+ }
34555
34689
  void (async () => {
34556
- const pageviewEventDataPromise = getFullPageviewEventData();
34557
- pageviewEventData.current = pageviewEventDataPromise;
34690
+ const eventDataOrPromise = pageviewEventData.current = getFullPageviewEventData();
34691
+ const eventData = eventDataOrPromise instanceof Promise ? await eventDataOrPromise : eventDataOrPromise;
34692
+ pageviewEventData.current = eventData;
34558
34693
  if (skipFirstPageView.current) {
34559
34694
  skipFirstPageView.current = false;
34560
- return;
34561
34695
  }
34562
- const eventData = await pageviewEventDataPromise;
34563
- pageviewEventData.current = eventData;
34564
- sendTrackingEvent('published_site_pageview', eventData, 'eager');
34696
+ else {
34697
+ sendTrackingEvent('published_site_pageview', eventData, 'eager');
34698
+ }
34565
34699
  })();
34566
34700
  const listener = async (event) => {
34567
34701
  if (event.persisted) {
34568
- const pageviewEventDataPromise = getFullPageviewEventData();
34569
- pageviewEventData.current = pageviewEventDataPromise;
34570
- const eventData = await getFullPageviewEventData();
34702
+ const eventDataOrPromise = pageviewEventData.current = getFullPageviewEventData();
34703
+ const eventData = eventDataOrPromise instanceof Promise ? await eventDataOrPromise : eventDataOrPromise;
34571
34704
  pageviewEventData.current = eventData;
34572
34705
  sendTrackingEvent('published_site_pageview', eventData, 'eager');
34573
34706
  }
@@ -34576,7 +34709,7 @@ var useSendPageView = (currentRoute, currentRouteId, currentPathVariables, colle
34576
34709
  return () => {
34577
34710
  window.removeEventListener('pageshow', listener);
34578
34711
  };
34579
- }, [currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale, framerSiteId,]);
34712
+ }, [currentRoute, currentRouteId, currentPathnameWithHash, currentPathVariables, collectionUtils, activeLocale, framerSiteId,]);
34580
34713
  return pageviewEventData;
34581
34714
  };
34582
34715
  var defaultLocaleId = 'default';
@@ -34679,6 +34812,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
34679
34812
  return (fn) => fn();
34680
34813
  }, [synchronousNavigationOnDesktop,]);
34681
34814
  const isInitialNavigationRef = useRef3(true);
34815
+ const currentPathnameWithHashRef = useRef3();
34682
34816
  const currentRouteRef = useRef3(initialRoute);
34683
34817
  const currentPathVariablesRef = useRef3(initialPathVariables);
34684
34818
  const currentLocaleIdRef = useRef3(initialLocaleId);
@@ -34764,12 +34898,13 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
34764
34898
  monitorNextPaintAfterRender,
34765
34899
  transitionFn,
34766
34900
  ]);
34767
- const setCurrentRouteId = useCallback((routeId, localeId, hash2, pathVariables, isHistoryTransition, nextRender, smoothScroll = false, updateURL) => {
34901
+ const setCurrentRouteId = useCallback((routeId, localeId, hash2, pathnameWithHash, pathVariables, isHistoryTransition, nextRender, smoothScroll = false, updateURL) => {
34768
34902
  isInitialNavigationRef.current = false;
34769
34903
  const currentRouteId2 = currentRouteRef.current;
34770
34904
  currentRouteRef.current = routeId;
34771
34905
  currentPathVariablesRef.current = pathVariables;
34772
34906
  currentLocaleIdRef.current = localeId;
34907
+ currentPathnameWithHashRef.current = pathnameWithHash;
34773
34908
  scheduleSideEffect(() => {
34774
34909
  updateScrollPosition(hash2, smoothScroll, isHistoryTransition);
34775
34910
  });
@@ -34855,14 +34990,26 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
34855
34990
  siteCanonicalURL,
34856
34991
  }, ignorePushStateWrapper);
34857
34992
  };
34858
- setCurrentRouteId(routeId, currentRouteLocaleId, routeElementId, pathVariables, false, nextRender, smoothScroll, disableHistory ? void 0 : updateURL);
34993
+ const pathnameWithHash = getSitePrefix(siteCanonicalURL) + getPathForRoute(newRoute, {
34994
+ currentRoutePath: currentRoute2 == null ? void 0 : currentRoute2.path,
34995
+ currentPathVariables: currentPathVariables2,
34996
+ hash: hash2,
34997
+ pathVariables,
34998
+ localeId: currentRouteLocaleId,
34999
+ preserveQueryParams,
35000
+ siteCanonicalURL,
35001
+ relative: false,
35002
+ // We need an absolute path for the hash
35003
+ });
35004
+ setCurrentRouteId(routeId, currentRouteLocaleId, routeElementId, pathnameWithHash, pathVariables, false, nextRender, smoothScroll, disableHistory ? void 0 : updateURL);
34859
35005
  }, [routes, setCurrentRouteId, disableHistory, preserveQueryParams, siteCanonicalURL, monitorNextPaintAfterRender,]);
34860
35006
  const getRoute = useGetRouteCallback(routes);
34861
35007
  const currentRouteId = currentRouteRef.current;
35008
+ const currentPathnameWithHash = currentPathnameWithHashRef.current;
34862
35009
  const currentPathVariables = currentPathVariablesRef.current;
34863
35010
  const currentRoute = routes[currentRouteId];
34864
35011
  const currentRoutePath = currentRoute == null ? void 0 : currentRoute.path;
34865
- const pageviewEventData = useSendPageView(currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale);
35012
+ const pageviewEventData = useSendPageView(currentRoute, currentRouteId, currentPathnameWithHash, currentPathVariables, collectionUtils, activeLocale);
34866
35013
  const isInitialNavigation = isInitialNavigationRef.current;
34867
35014
  const api = useMemo2(() => ({
34868
35015
  navigate,
@@ -34915,7 +35062,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
34915
35062
  /* @__PURE__ */ jsx3(MarkSuspenseEffects.Start, {}),
34916
35063
  /* @__PURE__ */ jsx3(WithLayoutTemplate, {
34917
35064
  LayoutTemplate,
34918
- routeId: currentRouteId,
35065
+ routeId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,
34919
35066
  style: defaultPageStyle,
34920
35067
  children: (inLayoutTemplate) => {
34921
35068
  return /* @__PURE__ */ jsx3(Fragment, {
@@ -42322,6 +42469,9 @@ function assert2(condition, ...msg) {
42322
42469
  }
42323
42470
  var missing = Symbol('missing');
42324
42471
  var frozenEmptyArray = Object.freeze([]);
42472
+ function emptyArray() {
42473
+ return frozenEmptyArray;
42474
+ }
42325
42475
  var errorReporter;
42326
42476
  function reportError({ error: maybeError, tags, extras, critical, caller, }) {
42327
42477
  assert2(errorReporter, 'Set up an error callback with setErrorReporter, or configure Sentry with initializeEnvironment');
@@ -42624,7 +42774,9 @@ try {
42624
42774
  catch { }
42625
42775
  var postLogEntry;
42626
42776
  try {
42627
- if (typeof window !== 'undefined' && !!window.postMessage && window.top !== window) {
42777
+ if (typeof window !== 'undefined' && !!window.postMessage && window.parent !== window &&
42778
+ // Don't post messages to the top-level site from the Editor Bar
42779
+ !window.location.pathname.startsWith('/edit')) {
42628
42780
  postLogEntry = (entry) => {
42629
42781
  var _a;
42630
42782
  try {
@@ -42638,7 +42790,7 @@ try {
42638
42790
  parts,
42639
42791
  printed,
42640
42792
  };
42641
- (_a = window.top) == null ? void 0 : _a.postMessage(data2, getServiceMap().app);
42793
+ (_a = window.parent) == null ? void 0 : _a.postMessage(data2, getServiceMap().app);
42642
42794
  }
42643
42795
  catch { }
42644
42796
  };
@@ -43720,11 +43872,11 @@ function getAssetOwnerType(asset) {
43720
43872
  async function loadFontsWithOpenType(source) {
43721
43873
  switch (source) {
43722
43874
  case 'google': {
43723
- const supportedFonts = await import('./framer-chunks/google-3ASCFEEO-3R47BR2A.js');
43875
+ const supportedFonts = await import('./framer-chunks/google-2KFYDWCN-PJC2DDXK.js');
43724
43876
  return supportedFonts == null ? void 0 : supportedFonts.default;
43725
43877
  }
43726
43878
  case 'fontshare': {
43727
- const supportedFonts = await import('./framer-chunks/fontshare-4J2ZFRBB-H5VQLZTM.js');
43879
+ const supportedFonts = await import('./framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js');
43728
43880
  return supportedFonts == null ? void 0 : supportedFonts.default;
43729
43881
  }
43730
43882
  default:
@@ -43734,11 +43886,11 @@ async function loadFontsWithOpenType(source) {
43734
43886
  async function loadFontToOpenTypeFeatures(source) {
43735
43887
  switch (source) {
43736
43888
  case 'google': {
43737
- const features = await import('./framer-chunks/google-FDB6LUFQ-PFSUZGKF.js');
43889
+ const features = await import('./framer-chunks/google-HSMCYMMG-DWNQGSHN.js');
43738
43890
  return features == null ? void 0 : features.default;
43739
43891
  }
43740
43892
  case 'fontshare': {
43741
- const features = await import('./framer-chunks/fontshare-622CVMZZ-HFPH543A.js');
43893
+ const features = await import('./framer-chunks/fontshare-Y53BJZLK-EUQIV252.js');
43742
43894
  return features == null ? void 0 : features.default;
43743
43895
  }
43744
43896
  case 'framer': {
@@ -44262,10 +44414,10 @@ function loadVariationAxes(source) {
44262
44414
  const axes = (async () => {
44263
44415
  switch (source) {
44264
44416
  case 'google': {
44265
- return (await import('./framer-chunks/google-C62SNV32-LCI4F7VO.js')).default;
44417
+ return (await import('./framer-chunks/google-S367OFIE-AWJEPMSF.js')).default;
44266
44418
  }
44267
44419
  case 'fontshare': {
44268
- return (await import('./framer-chunks/fontshare-JGEKH7YN-QOX3MC3K.js')).default;
44420
+ return (await import('./framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js')).default;
44269
44421
  }
44270
44422
  default:
44271
44423
  assertNever(source);
@@ -45197,10 +45349,35 @@ var styles3 = /* @__PURE__ */ (() => [
45197
45349
  ])();
45198
45350
  var FormSelect = /* @__PURE__ */ withCSS(Select, styles3, 'framer-lib-form-select');
45199
45351
  var Image2 = /* @__PURE__ */ React4.forwardRef(function Image3(props, ref) {
45200
- const { background, children, alt, draggable, style: styleFromProps, ...rest } = props;
45352
+ const { background, children, alt, draggable, fitImageDimension, style: styleFromProps, ...rest } = props;
45201
45353
  const style2 = {
45202
45354
  ...styleFromProps,
45203
45355
  };
45356
+ const intrinsicSize = useMemo2(() => getIntrinsicSizeForBackgroundImage(background), [background,]);
45357
+ const [fallbackIntrinsicSize, setFallbackIntrinsicSize,] = useState();
45358
+ React4.useLayoutEffect(() => {
45359
+ if (!(background == null ? void 0 : background.src))
45360
+ return;
45361
+ if (!fitImageDimension)
45362
+ return;
45363
+ if (intrinsicSize)
45364
+ return;
45365
+ const img = document.createElement('img');
45366
+ img.onload = () => {
45367
+ if (img.naturalWidth && img.naturalHeight) {
45368
+ setFallbackIntrinsicSize({
45369
+ width: img.naturalWidth,
45370
+ height: img.naturalHeight,
45371
+ });
45372
+ }
45373
+ };
45374
+ img.src = background.src;
45375
+ }, [background == null ? void 0 : background.src, fitImageDimension, intrinsicSize,]);
45376
+ const size = intrinsicSize ?? fallbackIntrinsicSize;
45377
+ if (fitImageDimension && size) {
45378
+ style2[fitImageDimension] = 'auto';
45379
+ style2.aspectRatio = size.width / size.height;
45380
+ }
45204
45381
  if (background) {
45205
45382
  delete style2.background;
45206
45383
  }
@@ -47317,7 +47494,7 @@ var TextComponent = /* @__PURE__ */ (() => {
47317
47494
  if (this.props.transformTemplate)
47318
47495
  return this.props.transformTemplate;
47319
47496
  const frame2 = this.frame;
47320
- const isDOMLayoutAutoSized = _usesDOMRect && (widthType === 2 || heightType === 2);
47497
+ const isDOMLayoutAutoSized = _usesDOMRect && (isAutoDimensionType(widthType) || isAutoDimensionType(heightType));
47321
47498
  const hasTransformTemplate = !frame2 || !RenderTarget.hasRestrictions() || __fromCanvasComponent || isDOMLayoutAutoSized;
47322
47499
  if (hasTransformTemplate)
47323
47500
  return transformTemplate(this.props.center);
@@ -48251,8 +48428,10 @@ function addFonts(component, passedFonts, flags) {
48251
48428
  });
48252
48429
  }
48253
48430
  function getFonts(component) {
48431
+ if (!component)
48432
+ return emptyArray();
48254
48433
  const fonts = component.fonts;
48255
- return fonts ?? [];
48434
+ return fonts ?? emptyArray();
48256
48435
  }
48257
48436
  function getFontsFromSharedStyle(fonts) {
48258
48437
  if (fonts.length === 0) {