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/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.JQQVEEM4.mjs
11217
+ // /:https://app.framerstatic.com/framer.UWLYDHV3.mjs
11218
11218
  import { lazy as ReactLazy, } from 'react';
11219
11219
  import React4 from 'react';
11220
11220
  import { startTransition as startTransition2, } from 'react';
@@ -12649,31 +12649,10 @@ function useRouteHandler(routeId, preload = false, elementId,) {
12649
12649
  const handler = React4.useCallback(() => navigate == null ? void 0 : navigate(routeId, elementId,), [navigate, elementId, routeId,],);
12650
12650
  return handler;
12651
12651
  }
12652
- var timezone;
12653
- var visitorLocale;
12654
- function setTimezoneAndLocaleForTracking() {
12655
- const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();
12656
- timezone = resolvedDateTimeOptions.timeZone;
12657
- visitorLocale = resolvedDateTimeOptions.locale;
12658
- }
12659
- requestIdleCallback(setTimezoneAndLocaleForTracking,);
12652
+ var pageviewEventVersion = 2;
12660
12653
  function sendTrackingEvent(eventType, eventData, sendOn = 'lazy',) {
12661
- if (!safeWindow.__framer_events) return;
12662
- if (!timezone || !visitorLocale) setTimezoneAndLocaleForTracking();
12663
- safeWindow.__framer_events.push([eventType, {
12664
- // Base properties common to all events
12665
- referrer: null,
12666
- // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.
12667
- url: safeWindow.location.href,
12668
- hostname: safeWindow.location.hostname || null,
12669
- pathname: safeWindow.location.pathname || null,
12670
- hash: safeWindow.location.hash || null,
12671
- search: safeWindow.location.search || null,
12672
- timezone,
12673
- locale: visitorLocale,
12674
- // Additional properties specific to custom events
12675
- ...eventData,
12676
- }, sendOn,],);
12654
+ var _a;
12655
+ (_a = safeWindow.__framer_events) == null ? void 0 : _a.push([eventType, eventData, sendOn,],);
12677
12656
  switch (eventType) {
12678
12657
  case 'published_site_click': {
12679
12658
  const {
@@ -13646,6 +13625,7 @@ function usePopStateHandler(currentRouteId, setCurrentRouteId,) {
13646
13625
  routeId,
13647
13626
  isString(localeId,) ? localeId : void 0,
13648
13627
  isString(hash2,) ? hash2 : void 0,
13628
+ window.location.pathname + window.location.search + window.location.hash,
13649
13629
  isObject2(pathVariables,) ? pathVariables : void 0,
13650
13630
  true,
13651
13631
  nextRender,
@@ -16609,6 +16589,14 @@ var P3Color = class _P3Color {
16609
16589
  if (!value) return color2;
16610
16590
  return value.toString('srgb',);
16611
16591
  }
16592
+ static multiplyAlpha(color2, alpha2,) {
16593
+ return new _P3Color({
16594
+ r: color2.r,
16595
+ g: color2.g,
16596
+ b: color2.b,
16597
+ a: color2.a * alpha2,
16598
+ },);
16599
+ }
16612
16600
  };
16613
16601
  function clampRGB(color2,) {
16614
16602
  return P3Color.srgbFromValue(color2,);
@@ -19306,8 +19294,13 @@ var DimensionType = /* @__PURE__ */ ((DimensionType2) => {
19306
19294
  DimensionType2[DimensionType2['Auto'] = 2] = 'Auto';
19307
19295
  DimensionType2[DimensionType2['FractionOfFreeSpace'] = 3] = 'FractionOfFreeSpace';
19308
19296
  DimensionType2[DimensionType2['Viewport'] = 4] = 'Viewport';
19297
+ DimensionType2[DimensionType2['FitImage'] = 5] = 'FitImage';
19309
19298
  return DimensionType2;
19310
19299
  })(DimensionType || {},);
19300
+ function isAutoDimensionType(dimensionType,) {
19301
+ if (isUndefined(dimensionType,)) return false;
19302
+ return dimensionType === 2 || dimensionType === 5;
19303
+ }
19311
19304
  function isConstraintSupportingChild(child,) {
19312
19305
  if (!isReactChild(child,) || !isReactElement(child,)) {
19313
19306
  return false;
@@ -19318,7 +19311,7 @@ var ConstraintMask = {
19318
19311
  // Modifies the constraint mask to remove invalid (mutually exclusive) options and returns the original.
19319
19312
  // TODO: this removes major inconsistencies but probably needs to be merged with ConstraintSolver.
19320
19313
  quickfix: (constraints) => {
19321
- if (constraints.widthType === 2 || constraints.heightType === 2) {
19314
+ if (isAutoDimensionType(constraints.widthType,) || isAutoDimensionType(constraints.heightType,)) {
19322
19315
  constraints.aspectRatio = null;
19323
19316
  }
19324
19317
  if (isFiniteNumber(constraints.aspectRatio,)) {
@@ -19336,13 +19329,13 @@ var ConstraintMask = {
19336
19329
  }
19337
19330
  }
19338
19331
  if (constraints.left && constraints.right) {
19339
- if (constraints.fixedSize || constraints.widthType === 2 || isFiniteNumber(constraints.maxWidth,)) {
19332
+ if (constraints.fixedSize || isAutoDimensionType(constraints.widthType,) || isFiniteNumber(constraints.maxWidth,)) {
19340
19333
  constraints.right = false;
19341
19334
  }
19342
19335
  constraints.widthType = 0;
19343
19336
  }
19344
19337
  if (constraints.top && constraints.bottom) {
19345
- if (constraints.fixedSize || constraints.heightType === 2 || isFiniteNumber(constraints.maxHeight,)) {
19338
+ if (constraints.fixedSize || isAutoDimensionType(constraints.heightType,) || isFiniteNumber(constraints.maxHeight,)) {
19346
19339
  constraints.bottom = false;
19347
19340
  }
19348
19341
  constraints.heightType = 0;
@@ -19451,7 +19444,7 @@ var ConstraintValues = {
19451
19444
  const hOpposingPinsOffset = pinnedOffset(values.left, values.right,);
19452
19445
  if (parentWidth && isFiniteNumber(hOpposingPinsOffset,)) {
19453
19446
  width = parentWidth - hOpposingPinsOffset;
19454
- } else if (autoSize && values.widthType === 2) {
19447
+ } else if (autoSize && isAutoDimensionType(values.widthType,)) {
19455
19448
  width = autoSize.width;
19456
19449
  } else if (isFiniteNumber(values.width,)) {
19457
19450
  switch (values.widthType) {
@@ -19468,6 +19461,7 @@ var ConstraintValues = {
19468
19461
  }
19469
19462
  break;
19470
19463
  case 2:
19464
+ case 5:
19471
19465
  break;
19472
19466
  default:
19473
19467
  assertNever(values.widthType,);
@@ -19476,7 +19470,7 @@ var ConstraintValues = {
19476
19470
  const vOpposingPinsOffset = pinnedOffset(values.top, values.bottom,);
19477
19471
  if (parentHeight && isFiniteNumber(vOpposingPinsOffset,)) {
19478
19472
  height = parentHeight - vOpposingPinsOffset;
19479
- } else if (autoSize && values.heightType === 2) {
19473
+ } else if (autoSize && isAutoDimensionType(values.heightType,)) {
19480
19474
  height = autoSize.height;
19481
19475
  } else if (isFiniteNumber(values.height,)) {
19482
19476
  switch (values.heightType) {
@@ -19493,6 +19487,7 @@ var ConstraintValues = {
19493
19487
  }
19494
19488
  break;
19495
19489
  case 2:
19490
+ case 5:
19496
19491
  break;
19497
19492
  default:
19498
19493
  assertNever(values.heightType,);
@@ -20366,6 +20361,7 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20366
20361
  li.framer-text,
20367
20362
  ol.framer-text,
20368
20363
  ul.framer-text,
20364
+ mark.framer-text,
20369
20365
  span.framer-text:not([data-text-fill]) {
20370
20366
  font-family: var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));
20371
20367
  font-style: var(--framer-blockquote-font-style, var(--framer-font-style, normal));
@@ -20391,6 +20387,24 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20391
20387
  text-wrap: var(--framer-text-wrap-override, var(--framer-text-wrap));
20392
20388
  }
20393
20389
  `, /* css */
20390
+ `
20391
+ mark.framer-text,
20392
+ p.framer-text,
20393
+ div.framer-text,
20394
+ h1.framer-text,
20395
+ h2.framer-text,
20396
+ h3.framer-text,
20397
+ h4.framer-text,
20398
+ h5.framer-text,
20399
+ h6.framer-text,
20400
+ li.framer-text,
20401
+ ol.framer-text,
20402
+ ul.framer-text {
20403
+ background-color: var(--framer-blockquote-text-background-color, var(--framer-text-background-color, initial));
20404
+ border-radius: var(--framer-blockquote-text-background-radius, var(--framer-text-background-radius, initial));
20405
+ padding: var(--framer-blockquote-text-background-padding, var(--framer-text-background-padding, initial));
20406
+ }
20407
+ `, /* css */
20394
20408
  `
20395
20409
  @supports not (color: color(display-p3 1 1 1)) {
20396
20410
  p.framer-text,
@@ -20408,6 +20422,12 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20408
20422
  color: ${createRGBVariableFallbacks(['--framer-blockquote-text-color', '--framer-text-color',], '#000',)};
20409
20423
  -webkit-text-stroke-color: ${createRGBVariableFallbacks(['--framer-text-stroke-color',], 'initial',)};
20410
20424
  }
20425
+
20426
+ mark.framer-text {
20427
+ background-color: ${
20428
+ createRGBVariableFallbacks(['--framer-blockquote-text-background-color', '--framer-text-background-color',], 'initial',)
20429
+ };
20430
+ }
20411
20431
  }
20412
20432
  `, /* css */
20413
20433
  `
@@ -20532,6 +20552,10 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20532
20552
  text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
20533
20553
  /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */
20534
20554
  cursor: var(--framer-custom-cursors, pointer);
20555
+ /* Don't inherit background styles from any parent text style. */
20556
+ background-color: var(--framer-link-text-background-color, initial);
20557
+ border-radius: var(--framer-link-text-background-radius, initial);
20558
+ padding: var(--framer-link-text-background-padding, initial);
20535
20559
  }
20536
20560
  `,
20537
20561
  // Text decoration can't be applied to the nested spans of links because it breaks animations
@@ -20556,6 +20580,7 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20556
20580
  color: ${
20557
20581
  createRGBVariableFallbacks(['--framer-blockquote-text-color', '--framer-link-text-color', '--framer-text-color',], '#000',)
20558
20582
  };
20583
+ background-color: ${createRGBVariableFallbacks(['--framer-link-text-background-color',], 'initial',)};
20559
20584
  }
20560
20585
  }
20561
20586
  `, /* css */
@@ -20599,6 +20624,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20599
20624
  color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
20600
20625
  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));
20601
20626
  text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
20627
+ background-color: var(--framer-link-hover-text-background-color, var(--framer-link-text-background-color, var(--framer-text-background-color, initial)));
20628
+ border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial)));
20629
+ padding: var(--framer-link-hover-text-background-padding, var(--framer-link-text-background-padding, var(--framer-text-background-padding, initial)));
20602
20630
  }
20603
20631
  `, /* css */
20604
20632
  `
@@ -20625,6 +20653,13 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20625
20653
  '--framer-link-text-color',
20626
20654
  '--framer-text-color',
20627
20655
  ], '#000',)
20656
+ };
20657
+ background-color: ${
20658
+ createRGBVariableFallbacks([
20659
+ '--framer-link-hover-text-background-color',
20660
+ '--framer-link-text-background-color',
20661
+ '--framer-text-background-color',
20662
+ ], 'initial',)
20628
20663
  };
20629
20664
  }
20630
20665
  }
@@ -20669,6 +20704,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20669
20704
  color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));
20670
20705
  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));
20671
20706
  text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
20707
+ background-color: var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, initial));
20708
+ border-radius: var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial));
20709
+ padding: var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, initial));
20672
20710
  }
20673
20711
  `, /* css */
20674
20712
  `
@@ -20690,6 +20728,13 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20690
20728
  span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {
20691
20729
  color: ${
20692
20730
  createRGBVariableFallbacks(['--framer-link-current-text-color', '--framer-link-text-color', '--framer-text-color',], '#000',)
20731
+ };
20732
+ background-color: ${
20733
+ createRGBVariableFallbacks([
20734
+ '--framer-link-current-text-background-color',
20735
+ '--framer-link-text-background-color',
20736
+ '--framer-text-background-color',
20737
+ ], 'initial',)
20693
20738
  };
20694
20739
  }
20695
20740
  }
@@ -20719,6 +20764,13 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20719
20764
  '--framer-code-text-color',
20720
20765
  '--framer-text-color',
20721
20766
  ], '#000',)
20767
+ };
20768
+ background-color: ${
20769
+ createRGBVariableFallbacks([
20770
+ '--framer-link-current-text-background-color',
20771
+ '--framer-link-text-background-color',
20772
+ '--framer-text-background-color',
20773
+ ], 'initial',)
20722
20774
  };
20723
20775
  }
20724
20776
  }
@@ -20734,6 +20786,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20734
20786
  color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
20735
20787
  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));
20736
20788
  text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
20789
+ background-color: var(--framer-link-hover-text-background-color, var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, initial)));
20790
+ border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial)));
20791
+ padding: var(--framer-link-hover-text-background-padding, var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, initial)));
20737
20792
  }
20738
20793
  `, /* css */
20739
20794
  `
@@ -20761,6 +20816,13 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20761
20816
  '--framer-code-text-color',
20762
20817
  '--framer-text-color',
20763
20818
  ], '#000',)
20819
+ };
20820
+ background-color: ${
20821
+ createRGBVariableFallbacks([
20822
+ '--framer-link-hover-text-background-color',
20823
+ '--framer-link-current-text-background-color',
20824
+ '--framer-link-text-background-color',
20825
+ ], 'initial',)
20764
20826
  };
20765
20827
  }
20766
20828
  }
@@ -20775,6 +20837,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20775
20837
  font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));
20776
20838
  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)))));
20777
20839
  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));
20840
+ 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))));
20841
+ 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))));
20842
+ 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))));
20778
20843
  }
20779
20844
  `, /* css */
20780
20845
  `
@@ -20791,6 +20856,13 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20791
20856
  '--framer-code-text-color',
20792
20857
  '--framer-text-color',
20793
20858
  ], '#000',)
20859
+ };
20860
+ background-color: ${
20861
+ createRGBVariableFallbacks([
20862
+ '--framer-link-hover-text-background-color',
20863
+ '--framer-link-current-text-background-color',
20864
+ '--framer-link-text-background-color',
20865
+ ], 'initial',)
20794
20866
  };
20795
20867
  }
20796
20868
  }
@@ -20820,6 +20892,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20820
20892
  --framer-line-height: 1.2em;
20821
20893
  --framer-text-alignment: start;
20822
20894
  --framer-font-open-type-features: normal;
20895
+ --framer-text-background-color: initial;
20896
+ --framer-text-background-radius: initial;
20897
+ --framer-text-background-padding: initial;
20823
20898
  }
20824
20899
  `, /* css */
20825
20900
  `
@@ -21271,6 +21346,10 @@ var frameCSSRules = (isPreview) => {
21271
21346
  return isPreview ? frameCSS : [];
21272
21347
  };
21273
21348
  var svgCSSRules = [`.svgContainer svg { display: block; }`,];
21349
+ var overflowClipFallbackCSSVariable = '--overflow-clip-fallback';
21350
+ var overflowClipFallbackCSSRules = /* @__PURE__ */ (() => [`@supports (not (overflow: clip)) {
21351
+ :root { ${overflowClipFallbackCSSVariable}: hidden; }
21352
+ }`,])();
21274
21353
  var combineCSSRules =
21275
21354
  (isPreview) => [
21276
21355
  ...willChangeTransformRules(isPreview,),
@@ -21290,6 +21369,7 @@ var combineCSSRules =
21290
21369
  ...svgCSSRules,
21291
21370
  ...resetCSS,
21292
21371
  ...hideScrollbars,
21372
+ ...overflowClipFallbackCSSRules,
21293
21373
  ];
21294
21374
  export var combinedCSSRules = /* @__PURE__ */ combineCSSRules(false,);
21295
21375
  var combinedCSSRulesForPreview = /* @__PURE__ */ combineCSSRules(true,);
@@ -23019,13 +23099,6 @@ var isPropValid = /* @__PURE__ */ memoize((prop) =>
23019
23099
  reactPropsRegex.test(prop,) || prop.charCodeAt(0,) === 111 && prop.charCodeAt(1,) === 110 && prop.charCodeAt(2,) < 91
23020
23100
  /* Z+1 */
23021
23101
  );
23022
- var LibraryFeaturesContext = /* @__PURE__ */ React4.createContext(void 0,);
23023
- LibraryFeaturesContext.displayName = 'LibraryFeaturesContext';
23024
- var LibraryFeaturesProvider = /* @__PURE__ */ (() => LibraryFeaturesContext.Provider)();
23025
- var useLibraryFeatures = () => {
23026
- const context = React4.useContext(LibraryFeaturesContext,);
23027
- return context ?? {};
23028
- };
23029
23102
  var mockWithWarning = (message) => {
23030
23103
  return () => {
23031
23104
  warnOnce2(message,);
@@ -23055,6 +23128,7 @@ var implementation = {
23055
23128
  canRenderOptimizedCanvasImage() {
23056
23129
  return false;
23057
23130
  },
23131
+ isOnPageCanvas: false,
23058
23132
  };
23059
23133
  var isRuntimeInjected = false;
23060
23134
  var runtimeProxy = {
@@ -23076,6 +23150,13 @@ function _injectRuntime(injectedRuntime,) {
23076
23150
  Object.assign(implementation, injectedRuntime,);
23077
23151
  isRuntimeInjected = true;
23078
23152
  }
23153
+ var LibraryFeaturesContext = /* @__PURE__ */ React4.createContext(void 0,);
23154
+ LibraryFeaturesContext.displayName = 'LibraryFeaturesContext';
23155
+ var LibraryFeaturesProvider = /* @__PURE__ */ (() => LibraryFeaturesContext.Provider)();
23156
+ var useLibraryFeatures = () => {
23157
+ const context = React4.useContext(LibraryFeaturesContext,);
23158
+ return context ?? {};
23159
+ };
23079
23160
  var wrapperStyle = {
23080
23161
  position: 'absolute',
23081
23162
  borderRadius: 'inherit',
@@ -23336,7 +23417,7 @@ var key = 'src';
23336
23417
  var BackgroundImage = {
23337
23418
  isImageObject: function (image,) {
23338
23419
  if (!image || typeof image === 'string') return false;
23339
- return key in image;
23420
+ return typeof image === 'object' && key in image;
23340
23421
  },
23341
23422
  };
23342
23423
  function applyForwardOverrides(background, props,) {
@@ -23377,6 +23458,29 @@ function backgroundImageFromProps(props,) {
23377
23458
  }
23378
23459
  return applyForwardOverrides(backgroundImage, props,);
23379
23460
  }
23461
+ function getIntrinsicSizeForBackgroundImage(background,) {
23462
+ if (!background) return void 0;
23463
+ if (background.pixelHeight && background.pixelWidth) {
23464
+ return {
23465
+ width: background.pixelWidth,
23466
+ height: background.pixelHeight,
23467
+ };
23468
+ }
23469
+ return parseImageSizeFromSrc(background.src,);
23470
+ }
23471
+ function parseImageSizeFromSrc(src,) {
23472
+ if (!src) return void 0;
23473
+ const url = new URL(src,);
23474
+ const width = url.searchParams.get('width',);
23475
+ const height = url.searchParams.get('height',);
23476
+ if (width && height) {
23477
+ return {
23478
+ width: parseInt(width,),
23479
+ height: parseInt(height,),
23480
+ };
23481
+ }
23482
+ return void 0;
23483
+ }
23380
23484
  function htmlElementAsMotionComponent(asElem,) {
23381
23485
  return asElem && asElem !== 'search' && asElem !== 'slot' && asElem !== 'template' ? motion[asElem] : motion['div'];
23382
23486
  }
@@ -24358,7 +24462,7 @@ function useStyleAndRect(props,) {
24358
24462
  }
24359
24463
  const isRenderingStaticContent = isStaticRenderer();
24360
24464
  if (props.positionSticky) {
24361
- if (!isRenderingStaticContent || inCodeComponent) {
24465
+ if (!isRenderingStaticContent || runtime.isOnPageCanvas || inCodeComponent) {
24362
24466
  resultStyle.position = 'sticky';
24363
24467
  resultStyle.willChange = 'transform';
24364
24468
  resultStyle.zIndex = 1;
@@ -24367,8 +24471,12 @@ function useStyleAndRect(props,) {
24367
24471
  resultStyle.bottom = props.positionStickyBottom;
24368
24472
  resultStyle.left = props.positionStickyLeft;
24369
24473
  }
24370
- } else if (isRenderingStaticContent && (props.positionFixed || props.positionAbsolute)) {
24371
- resultStyle.position = 'absolute';
24474
+ } else if (isRenderingStaticContent) {
24475
+ if (props.positionFixed) {
24476
+ resultStyle.position = runtime.isOnPageCanvas ? 'fixed' : 'absolute';
24477
+ } else if (props.positionAbsolute) {
24478
+ resultStyle.position = 'absolute';
24479
+ }
24372
24480
  }
24373
24481
  if ('rotate' in resultStyle && resultStyle.rotate === void 0) {
24374
24482
  delete resultStyle.rotate;
@@ -24481,6 +24589,11 @@ var VisibleFrame = /* @__PURE__ */ forwardRef(function VisibleFrame2(props, forw
24481
24589
  parentSize,
24482
24590
  );
24483
24591
  const MotionComponent = htmlElementAsMotionComponent(props.as,);
24592
+ const intrinsicSize = getIntrinsicSizeForBackgroundImage(backgroundImage,);
24593
+ if (props.fitImageDimension && intrinsicSize) {
24594
+ currentStyle[props.fitImageDimension] = 'auto';
24595
+ currentStyle.aspectRatio = intrinsicSize.width / intrinsicSize.height;
24596
+ }
24484
24597
  return /* @__PURE__ */ jsxs(MotionComponent, {
24485
24598
  ...dataProps,
24486
24599
  ...motionProps,
@@ -34231,14 +34344,14 @@ function domWriteCreateUpdateSafeArea(safeAreaRef,) {
34231
34344
  Object.assign(safeAreaRef.current.style, floatingPositionSafeAreaStyle(x, y, placement, anchorRect, calculatedRect,),);
34232
34345
  };
34233
34346
  }
34234
- function domWriteUpdatePosition(floatingPositionRef, position, rect,) {
34347
+ function domWriteUpdatePosition(floatingPositionRef, position, rect, scrollX, scrollY,) {
34235
34348
  if (!floatingPositionRef.current) return;
34236
34349
  Object.assign(floatingPositionRef.current.style, {
34237
34350
  position,
34238
34351
  visibility: 'visible',
34239
34352
  // Append "px" because we are assigning this object straight to style.
34240
- left: ((rect == null ? void 0 : rect.x) ?? 0) + (position === 'fixed' ? 0 : safeWindow.scrollX) + 'px',
34241
- top: ((rect == null ? void 0 : rect.y) ?? 0) + (position === 'fixed' ? 0 : safeWindow.scrollY) + 'px',
34353
+ left: ((rect == null ? void 0 : rect.x) ?? 0) + scrollX + 'px',
34354
+ top: ((rect == null ? void 0 : rect.y) ?? 0) + scrollY + 'px',
34242
34355
  },);
34243
34356
  }
34244
34357
  var FloatingStackingContext = /* @__PURE__ */ (() => {
@@ -34383,12 +34496,13 @@ function Floating({
34383
34496
  let elementRect;
34384
34497
  let safePlacement;
34385
34498
  let calculatedRect;
34386
- let scrolls;
34387
34499
  let latestEvent;
34388
34500
  let updateSafeArea;
34501
+ let scrollX = 0;
34502
+ let scrollY = 0;
34389
34503
  const onRender = () => {
34390
34504
  if (cleanupHasRun) return;
34391
- domWriteUpdatePosition(floatingPositionRef, position, calculatedRect,);
34505
+ domWriteUpdatePosition(floatingPositionRef, position, calculatedRect, scrollX, scrollY,);
34392
34506
  if (safeArea) updateSafeArea(anchorRect, calculatedRect, safePlacement, latestEvent,);
34393
34507
  latestEvent = void 0;
34394
34508
  };
@@ -34397,7 +34511,7 @@ function Floating({
34397
34511
  if (latestEvent) {
34398
34512
  onRender();
34399
34513
  } else {
34400
- domWriteUpdatePosition(floatingPositionRef, position, calculatedRect,);
34514
+ domWriteUpdatePosition(floatingPositionRef, position, calculatedRect, scrollX, scrollY,);
34401
34515
  }
34402
34516
  initialUpdateHasRun = true;
34403
34517
  };
@@ -34407,6 +34521,13 @@ function Floating({
34407
34521
  };
34408
34522
  const domReadUpdateSafePlacementAndRect = () => {
34409
34523
  if (!getSafePlacementRect || cleanupHasRun) return;
34524
+ if (position === 'fixed') {
34525
+ scrollX = 0;
34526
+ scrollY = 0;
34527
+ } else {
34528
+ scrollX = safeWindow.scrollX;
34529
+ scrollY = safeWindow.scrollY;
34530
+ }
34410
34531
  anchorRect = anchorRef.current.getBoundingClientRect();
34411
34532
  const safePlacementAndRect = getSafePlacementRect(anchorRect, elementRect,);
34412
34533
  safePlacement = safePlacementAndRect[0];
@@ -36064,64 +36185,77 @@ function isSamePage(a, b,) {
36064
36185
  return aPathVariables.length === bPathVariables.length &&
36065
36186
  Object.keys(aPathVariables,).every((key7) => aPathVariables[key7] === bPathVariables[key7]);
36066
36187
  }
36067
- function getPageviewEventData({
36068
- abTestId,
36069
- framerSiteId,
36070
- routeId,
36071
- routePath,
36072
- collectionItemId,
36073
- localeCode,
36074
- },) {
36075
- return {
36076
- abTestId,
36077
- framerSiteId,
36078
- routePath: routePath || '/',
36079
- collectionItemId,
36080
- framerLocale: localeCode,
36081
- webPageId: routeId,
36082
- };
36188
+ var timezone = null;
36189
+ var visitorLocale = null;
36190
+ function setTimezoneAndLocaleForTracking() {
36191
+ const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();
36192
+ timezone = resolvedDateTimeOptions.timeZone;
36193
+ visitorLocale = resolvedDateTimeOptions.locale;
36083
36194
  }
36084
- var useSendPageView = (currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale,) => {
36195
+ requestIdleCallback(setTimezoneAndLocaleForTracking,);
36196
+ var useSendPageView = (currentRoute, currentRouteId, currentPathnameWithHash, currentPathVariables, collectionUtils, activeLocale,) => {
36085
36197
  const framerSiteId = useContext(FormContext,);
36086
36198
  const pageviewEventData = useRef3();
36087
36199
  const skipFirstPageView = useRef3(true,);
36088
36200
  useEffect(() => {
36089
- const getFullPageviewEventData = async () => {
36090
- var _a;
36091
- let collectionItemId = null;
36092
- if ((currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables) {
36093
- const utils = await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils,));
36094
- const [slug,] = Object.values(currentPathVariables,);
36095
- if (utils && typeof slug === 'string') {
36096
- collectionItemId = (await utils.getRecordIdBySlug(slug, activeLocale || void 0,)) ?? null;
36097
- }
36098
- }
36099
- return getPageviewEventData({
36201
+ function getFullPageviewEventData() {
36202
+ if (!timezone || !visitorLocale) setTimezoneAndLocaleForTracking();
36203
+ const currentLocation = currentPathnameWithHash
36204
+ ? new URL(safeWindow.location.origin + currentPathnameWithHash,)
36205
+ : safeWindow.location;
36206
+ const eventData = {
36207
+ version: pageviewEventVersion,
36100
36208
  abTestId: currentRoute == null ? void 0 : currentRoute.abTestId,
36101
36209
  framerSiteId: framerSiteId ?? null,
36102
36210
  // 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.
36103
- routeId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,
36104
- routePath: currentRoute == null ? void 0 : currentRoute.path,
36105
- collectionItemId,
36106
- localeCode: (activeLocale == null ? void 0 : activeLocale.code) || null,
36107
- },);
36108
- };
36211
+ webPageId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,
36212
+ routePath: (currentRoute == null ? void 0 : currentRoute.path) || '/',
36213
+ collectionItemId: null,
36214
+ framerLocale: (activeLocale == null ? void 0 : activeLocale.code) || null,
36215
+ referrer: null,
36216
+ // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.
36217
+ url: currentLocation.href,
36218
+ hostname: currentLocation.hostname,
36219
+ // Capture the current location before the user moves to a new page to prevent
36220
+ // tracking wrong pathnames due to a race condition caused by async operations
36221
+ // when resolving the collection item ID below
36222
+ pathname: currentLocation.pathname,
36223
+ search: currentLocation.search || null,
36224
+ hash: currentLocation.hash || null,
36225
+ timezone,
36226
+ locale: visitorLocale,
36227
+ };
36228
+ return (currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables
36229
+ ? (async () => {
36230
+ var _a;
36231
+ let collectionItemId = null;
36232
+ const utils = currentRoute.collectionId &&
36233
+ (await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils,)));
36234
+ const [slug,] = Object.values(currentPathVariables,);
36235
+ if (utils && typeof slug === 'string') {
36236
+ collectionItemId = (await utils.getRecordIdBySlug(slug, activeLocale || void 0,)) ?? null;
36237
+ }
36238
+ return {
36239
+ ...eventData,
36240
+ collectionItemId,
36241
+ };
36242
+ })()
36243
+ : eventData;
36244
+ }
36109
36245
  void (async () => {
36110
- const pageviewEventDataPromise = getFullPageviewEventData();
36111
- pageviewEventData.current = pageviewEventDataPromise;
36246
+ const eventDataOrPromise = pageviewEventData.current = getFullPageviewEventData();
36247
+ const eventData = eventDataOrPromise instanceof Promise ? await eventDataOrPromise : eventDataOrPromise;
36248
+ pageviewEventData.current = eventData;
36112
36249
  if (skipFirstPageView.current) {
36113
36250
  skipFirstPageView.current = false;
36114
- return;
36251
+ } else {
36252
+ sendTrackingEvent('published_site_pageview', eventData, 'eager',);
36115
36253
  }
36116
- const eventData = await pageviewEventDataPromise;
36117
- pageviewEventData.current = eventData;
36118
- sendTrackingEvent('published_site_pageview', eventData, 'eager',);
36119
36254
  })();
36120
36255
  const listener = async (event) => {
36121
36256
  if (event.persisted) {
36122
- const pageviewEventDataPromise = getFullPageviewEventData();
36123
- pageviewEventData.current = pageviewEventDataPromise;
36124
- const eventData = await getFullPageviewEventData();
36257
+ const eventDataOrPromise = pageviewEventData.current = getFullPageviewEventData();
36258
+ const eventData = eventDataOrPromise instanceof Promise ? await eventDataOrPromise : eventDataOrPromise;
36125
36259
  pageviewEventData.current = eventData;
36126
36260
  sendTrackingEvent('published_site_pageview', eventData, 'eager',);
36127
36261
  }
@@ -36130,7 +36264,7 @@ var useSendPageView = (currentRoute, currentRouteId, currentPathVariables, colle
36130
36264
  return () => {
36131
36265
  window.removeEventListener('pageshow', listener,);
36132
36266
  };
36133
- }, [currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale, framerSiteId,],);
36267
+ }, [currentRoute, currentRouteId, currentPathnameWithHash, currentPathVariables, collectionUtils, activeLocale, framerSiteId,],);
36134
36268
  return pageviewEventData;
36135
36269
  };
36136
36270
  var defaultLocaleId = 'default';
@@ -36242,6 +36376,7 @@ function Router({
36242
36376
  return (fn) => fn();
36243
36377
  }, [synchronousNavigationOnDesktop,],);
36244
36378
  const isInitialNavigationRef = useRef3(true,);
36379
+ const currentPathnameWithHashRef = useRef3();
36245
36380
  const currentRouteRef = useRef3(initialRoute,);
36246
36381
  const currentPathVariablesRef = useRef3(initialPathVariables,);
36247
36382
  const currentLocaleIdRef = useRef3(initialLocaleId,);
@@ -36337,12 +36472,13 @@ function Router({
36337
36472
  transitionFn,
36338
36473
  ],);
36339
36474
  const setCurrentRouteId = useCallback(
36340
- (routeId, localeId, hash2, pathVariables, isHistoryTransition, nextRender, smoothScroll = false, updateURL,) => {
36475
+ (routeId, localeId, hash2, pathnameWithHash, pathVariables, isHistoryTransition, nextRender, smoothScroll = false, updateURL,) => {
36341
36476
  isInitialNavigationRef.current = false;
36342
36477
  const currentRouteId2 = currentRouteRef.current;
36343
36478
  currentRouteRef.current = routeId;
36344
36479
  currentPathVariablesRef.current = pathVariables;
36345
36480
  currentLocaleIdRef.current = localeId;
36481
+ currentPathnameWithHashRef.current = pathnameWithHash;
36346
36482
  scheduleSideEffect(() => {
36347
36483
  updateScrollPosition(hash2, smoothScroll, isHistoryTransition,);
36348
36484
  },);
@@ -36436,10 +36572,22 @@ function Router({
36436
36572
  siteCanonicalURL,
36437
36573
  }, ignorePushStateWrapper,);
36438
36574
  };
36575
+ const pathnameWithHash = getSitePrefix(siteCanonicalURL,) + getPathForRoute(newRoute, {
36576
+ currentRoutePath: currentRoute2 == null ? void 0 : currentRoute2.path,
36577
+ currentPathVariables: currentPathVariables2,
36578
+ hash: hash2,
36579
+ pathVariables,
36580
+ localeId: currentRouteLocaleId,
36581
+ preserveQueryParams,
36582
+ siteCanonicalURL,
36583
+ relative: false,
36584
+ // We need an absolute path for the hash
36585
+ },);
36439
36586
  setCurrentRouteId(
36440
36587
  routeId,
36441
36588
  currentRouteLocaleId,
36442
36589
  routeElementId,
36590
+ pathnameWithHash,
36443
36591
  pathVariables,
36444
36592
  false,
36445
36593
  nextRender,
@@ -36449,10 +36597,18 @@ function Router({
36449
36597
  }, [routes, setCurrentRouteId, disableHistory, preserveQueryParams, siteCanonicalURL, monitorNextPaintAfterRender,],);
36450
36598
  const getRoute = useGetRouteCallback(routes,);
36451
36599
  const currentRouteId = currentRouteRef.current;
36600
+ const currentPathnameWithHash = currentPathnameWithHashRef.current;
36452
36601
  const currentPathVariables = currentPathVariablesRef.current;
36453
36602
  const currentRoute = routes[currentRouteId];
36454
36603
  const currentRoutePath = currentRoute == null ? void 0 : currentRoute.path;
36455
- const pageviewEventData = useSendPageView(currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale,);
36604
+ const pageviewEventData = useSendPageView(
36605
+ currentRoute,
36606
+ currentRouteId,
36607
+ currentPathnameWithHash,
36608
+ currentPathVariables,
36609
+ collectionUtils,
36610
+ activeLocale,
36611
+ );
36456
36612
  const isInitialNavigation = isInitialNavigationRef.current;
36457
36613
  const api = useMemo2(() => ({
36458
36614
  navigate,
@@ -36505,7 +36661,7 @@ function Router({
36505
36661
  /* @__PURE__ */ jsx3(MarkSuspenseEffects.Start, {},),
36506
36662
  /* @__PURE__ */ jsx3(WithLayoutTemplate, {
36507
36663
  LayoutTemplate,
36508
- routeId: currentRouteId,
36664
+ routeId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,
36509
36665
  style: defaultPageStyle,
36510
36666
  children: (inLayoutTemplate) => {
36511
36667
  return /* @__PURE__ */ jsx3(Fragment, {
@@ -44065,6 +44221,9 @@ function assert2(condition, ...msg) {
44065
44221
  }
44066
44222
  var missing = Symbol('missing',);
44067
44223
  var frozenEmptyArray = Object.freeze([],);
44224
+ function emptyArray() {
44225
+ return frozenEmptyArray;
44226
+ }
44068
44227
  var errorReporter;
44069
44228
  function reportError({
44070
44229
  error: maybeError,
@@ -44342,7 +44501,11 @@ try {
44342
44501
  } catch {}
44343
44502
  var postLogEntry;
44344
44503
  try {
44345
- if (typeof window !== 'undefined' && !!window.postMessage && window.top !== window) {
44504
+ if (
44505
+ typeof window !== 'undefined' && !!window.postMessage && window.parent !== window &&
44506
+ // Don't post messages to the top-level site from the Editor Bar
44507
+ !window.location.pathname.startsWith('/edit',)
44508
+ ) {
44346
44509
  postLogEntry = (entry) => {
44347
44510
  var _a;
44348
44511
  try {
@@ -44356,7 +44519,7 @@ try {
44356
44519
  parts,
44357
44520
  printed,
44358
44521
  };
44359
- (_a = window.top) == null ? void 0 : _a.postMessage(data2, getServiceMap().app,);
44522
+ (_a = window.parent) == null ? void 0 : _a.postMessage(data2, getServiceMap().app,);
44360
44523
  } catch {}
44361
44524
  };
44362
44525
  }
@@ -45377,11 +45540,11 @@ function getAssetOwnerType(asset,) {
45377
45540
  async function loadFontsWithOpenType(source,) {
45378
45541
  switch (source) {
45379
45542
  case 'google': {
45380
- const supportedFonts = await import('./framer-chunks/google-3ASCFEEO-3R47BR2A.js');
45543
+ const supportedFonts = await import('./framer-chunks/google-2KFYDWCN-PJC2DDXK.js');
45381
45544
  return supportedFonts == null ? void 0 : supportedFonts.default;
45382
45545
  }
45383
45546
  case 'fontshare': {
45384
- const supportedFonts = await import('./framer-chunks/fontshare-4J2ZFRBB-H5VQLZTM.js');
45547
+ const supportedFonts = await import('./framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js');
45385
45548
  return supportedFonts == null ? void 0 : supportedFonts.default;
45386
45549
  }
45387
45550
  default:
@@ -45391,11 +45554,11 @@ async function loadFontsWithOpenType(source,) {
45391
45554
  async function loadFontToOpenTypeFeatures(source,) {
45392
45555
  switch (source) {
45393
45556
  case 'google': {
45394
- const features = await import('./framer-chunks/google-FDB6LUFQ-PFSUZGKF.js');
45557
+ const features = await import('./framer-chunks/google-HSMCYMMG-DWNQGSHN.js');
45395
45558
  return features == null ? void 0 : features.default;
45396
45559
  }
45397
45560
  case 'fontshare': {
45398
- const features = await import('./framer-chunks/fontshare-622CVMZZ-HFPH543A.js');
45561
+ const features = await import('./framer-chunks/fontshare-Y53BJZLK-EUQIV252.js');
45399
45562
  return features == null ? void 0 : features.default;
45400
45563
  }
45401
45564
  case 'framer': {
@@ -45943,10 +46106,10 @@ function loadVariationAxes(source,) {
45943
46106
  const axes = (async () => {
45944
46107
  switch (source) {
45945
46108
  case 'google': {
45946
- return (await import('./framer-chunks/google-C62SNV32-LCI4F7VO.js')).default;
46109
+ return (await import('./framer-chunks/google-S367OFIE-AWJEPMSF.js')).default;
45947
46110
  }
45948
46111
  case 'fontshare': {
45949
- return (await import('./framer-chunks/fontshare-JGEKH7YN-QOX3MC3K.js')).default;
46112
+ return (await import('./framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js')).default;
45950
46113
  }
45951
46114
  default:
45952
46115
  assertNever(source,);
@@ -47039,12 +47202,35 @@ var Image2 = /* @__PURE__ */ React4.forwardRef(function Image3(props, ref,) {
47039
47202
  children,
47040
47203
  alt,
47041
47204
  draggable,
47205
+ fitImageDimension,
47042
47206
  style: styleFromProps,
47043
47207
  ...rest
47044
47208
  } = props;
47045
47209
  const style2 = {
47046
47210
  ...styleFromProps,
47047
47211
  };
47212
+ const intrinsicSize = useMemo2(() => getIntrinsicSizeForBackgroundImage(background,), [background,],);
47213
+ const [fallbackIntrinsicSize, setFallbackIntrinsicSize,] = useState();
47214
+ React4.useLayoutEffect(() => {
47215
+ if (!(background == null ? void 0 : background.src)) return;
47216
+ if (!fitImageDimension) return;
47217
+ if (intrinsicSize) return;
47218
+ const img = document.createElement('img',);
47219
+ img.onload = () => {
47220
+ if (img.naturalWidth && img.naturalHeight) {
47221
+ setFallbackIntrinsicSize({
47222
+ width: img.naturalWidth,
47223
+ height: img.naturalHeight,
47224
+ },);
47225
+ }
47226
+ };
47227
+ img.src = background.src;
47228
+ }, [background == null ? void 0 : background.src, fitImageDimension, intrinsicSize,],);
47229
+ const size = intrinsicSize ?? fallbackIntrinsicSize;
47230
+ if (fitImageDimension && size) {
47231
+ style2[fitImageDimension] = 'auto';
47232
+ style2.aspectRatio = size.width / size.height;
47233
+ }
47048
47234
  if (background) {
47049
47235
  delete style2.background;
47050
47236
  }
@@ -49304,7 +49490,7 @@ var TextComponent = /* @__PURE__ */ (() => {
49304
49490
  } = this.props;
49305
49491
  if (this.props.transformTemplate) return this.props.transformTemplate;
49306
49492
  const frame2 = this.frame;
49307
- const isDOMLayoutAutoSized = _usesDOMRect && (widthType === 2 || heightType === 2);
49493
+ const isDOMLayoutAutoSized = _usesDOMRect && (isAutoDimensionType(widthType,) || isAutoDimensionType(heightType,));
49308
49494
  const hasTransformTemplate = !frame2 || !RenderTarget.hasRestrictions() || __fromCanvasComponent || isDOMLayoutAutoSized;
49309
49495
  if (hasTransformTemplate) return transformTemplate(this.props.center,);
49310
49496
  }
@@ -50331,8 +50517,9 @@ function addFonts(component, passedFonts, flags,) {
50331
50517
  },);
50332
50518
  }
50333
50519
  function getFonts(component,) {
50520
+ if (!component) return emptyArray();
50334
50521
  const fonts = component.fonts;
50335
- return fonts ?? [];
50522
+ return fonts ?? emptyArray();
50336
50523
  }
50337
50524
  function getFontsFromSharedStyle(fonts,) {
50338
50525
  if (fonts.length === 0) {