unframer 3.1.0 → 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 (80) 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 +2 -1
  5. package/dist/exporter.d.ts.map +1 -1
  6. package/dist/exporter.js +39 -28
  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 +189 -103
  33. package/dist/version.d.ts +1 -1
  34. package/dist/version.js +1 -1
  35. package/esm/cli.d.ts.map +1 -1
  36. package/esm/cli.js +3 -0
  37. package/esm/cli.js.map +1 -1
  38. package/esm/exporter.d.ts +2 -1
  39. package/esm/exporter.d.ts.map +1 -1
  40. package/esm/exporter.js +40 -29
  41. package/esm/exporter.js.map +1 -1
  42. package/esm/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.d.ts +634 -0
  43. package/esm/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.d.ts.map +1 -0
  44. package/esm/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js +5 -0
  45. package/esm/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js.map +1 -0
  46. package/esm/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.d.ts +115 -0
  47. package/esm/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.d.ts.map +1 -0
  48. package/esm/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js +5 -0
  49. package/esm/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js.map +1 -0
  50. package/esm/framer-chunks/fontshare-Y53BJZLK-EUQIV252.d.ts +781 -0
  51. package/esm/framer-chunks/fontshare-Y53BJZLK-EUQIV252.d.ts.map +1 -0
  52. package/esm/framer-chunks/fontshare-Y53BJZLK-EUQIV252.js +5 -0
  53. package/esm/framer-chunks/fontshare-Y53BJZLK-EUQIV252.js.map +1 -0
  54. package/esm/framer-chunks/google-2KFYDWCN-PJC2DDXK.d.ts +1566 -0
  55. package/esm/framer-chunks/google-2KFYDWCN-PJC2DDXK.d.ts.map +1 -0
  56. package/esm/framer-chunks/google-2KFYDWCN-PJC2DDXK.js +5 -0
  57. package/esm/framer-chunks/google-2KFYDWCN-PJC2DDXK.js.map +1 -0
  58. package/esm/framer-chunks/google-HSMCYMMG-DWNQGSHN.d.ts +10293 -0
  59. package/esm/framer-chunks/google-HSMCYMMG-DWNQGSHN.d.ts.map +1 -0
  60. package/esm/framer-chunks/google-HSMCYMMG-DWNQGSHN.js +5 -0
  61. package/esm/framer-chunks/google-HSMCYMMG-DWNQGSHN.js.map +1 -0
  62. package/esm/framer-chunks/google-S367OFIE-AWJEPMSF.d.ts +3588 -0
  63. package/esm/framer-chunks/google-S367OFIE-AWJEPMSF.d.ts.map +1 -0
  64. package/esm/framer-chunks/google-S367OFIE-AWJEPMSF.js +5 -0
  65. package/esm/framer-chunks/google-S367OFIE-AWJEPMSF.js.map +1 -0
  66. package/esm/framer.js +189 -103
  67. package/esm/version.d.ts +1 -1
  68. package/esm/version.js +1 -1
  69. package/package.json +1 -1
  70. package/src/cli.ts +3 -0
  71. package/src/exporter.ts +58 -31
  72. package/src/framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js +7 -0
  73. package/src/framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js +7 -0
  74. package/src/framer-chunks/fontshare-Y53BJZLK-EUQIV252.js +7 -0
  75. package/src/framer-chunks/google-2KFYDWCN-PJC2DDXK.js +7 -0
  76. package/src/framer-chunks/google-HSMCYMMG-DWNQGSHN.js +7 -0
  77. package/src/framer-chunks/google-S367OFIE-AWJEPMSF.js +7 -0
  78. package/src/framer.js +189 -107
  79. package/src/styles/framer.css +13 -12
  80. package/src/version.ts +1 -1
package/dist/framer.js CHANGED
@@ -10959,7 +10959,7 @@ function stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2, } = {}
10959
10959
  return startDelay + delay2;
10960
10960
  };
10961
10961
  }
10962
- // /:https://app.framerstatic.com/framer.O23R7WUO.mjs
10962
+ // /:https://app.framerstatic.com/framer.UWLYDHV3.mjs
10963
10963
  const react_10 = require("react");
10964
10964
  const react_11 = __importDefault(require("react"));
10965
10965
  const react_12 = require("react");
@@ -12431,33 +12431,10 @@ function useRouteHandler(routeId, preload = false, elementId) {
12431
12431
  const handler = react_11.default.useCallback(() => navigate == null ? void 0 : navigate(routeId, elementId), [navigate, elementId, routeId,]);
12432
12432
  return handler;
12433
12433
  }
12434
- var timezone;
12435
- var visitorLocale;
12436
- function setTimezoneAndLocaleForTracking() {
12437
- const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();
12438
- timezone = resolvedDateTimeOptions.timeZone;
12439
- visitorLocale = resolvedDateTimeOptions.locale;
12440
- }
12441
- requestIdleCallback(setTimezoneAndLocaleForTracking);
12434
+ var pageviewEventVersion = 2;
12442
12435
  function sendTrackingEvent(eventType, eventData, sendOn = 'lazy') {
12443
- if (!safeWindow.__framer_events)
12444
- return;
12445
- if (!timezone || !visitorLocale)
12446
- setTimezoneAndLocaleForTracking();
12447
- safeWindow.__framer_events.push([eventType, {
12448
- // Base properties common to all events
12449
- referrer: null,
12450
- // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.
12451
- url: safeWindow.location.href,
12452
- hostname: safeWindow.location.hostname || null,
12453
- pathname: safeWindow.location.pathname || null,
12454
- hash: safeWindow.location.hash || null,
12455
- search: safeWindow.location.search || null,
12456
- timezone,
12457
- locale: visitorLocale,
12458
- // Additional properties specific to custom events
12459
- ...eventData,
12460
- }, sendOn,]);
12436
+ var _a;
12437
+ (_a = safeWindow.__framer_events) == null ? void 0 : _a.push([eventType, eventData, sendOn,]);
12461
12438
  switch (eventType) {
12462
12439
  case 'published_site_click': {
12463
12440
  const { trackingId, href, } = eventData;
@@ -13361,7 +13338,7 @@ function usePopStateHandler(currentRouteId, setCurrentRouteId) {
13361
13338
  const stopMonitoringINPRelatedInputs = monitorINPRelatedInputs();
13362
13339
  void nextRender.promise.finally(stopMonitoringINPRelatedInputs);
13363
13340
  const changeRoute = () => {
13364
- setCurrentRouteId(routeId, isString(localeId) ? localeId : void 0, isString(hash2) ? hash2 : void 0, isObject2(pathVariables) ? pathVariables : void 0, true, nextRender, false);
13341
+ 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);
13365
13342
  };
13366
13343
  const viewTransition = await startViewTransition2(currentRouteId.current, routeId, changeRoute);
13367
13344
  const navigationTransition = (_d = window.navigation) == null ? void 0 : _d.transition;
@@ -18853,9 +18830,15 @@ var DimensionType = /* @__PURE__ */ ((DimensionType2) => {
18853
18830
  DimensionType2[DimensionType2['Auto'] = 2] = 'Auto';
18854
18831
  DimensionType2[DimensionType2['FractionOfFreeSpace'] = 3] = 'FractionOfFreeSpace';
18855
18832
  DimensionType2[DimensionType2['Viewport'] = 4] = 'Viewport';
18833
+ DimensionType2[DimensionType2['FitImage'] = 5] = 'FitImage';
18856
18834
  return DimensionType2;
18857
18835
  })(DimensionType || {});
18858
18836
  exports.DimensionType = DimensionType;
18837
+ function isAutoDimensionType(dimensionType) {
18838
+ if (isUndefined(dimensionType))
18839
+ return false;
18840
+ return dimensionType === 2 || dimensionType === 5;
18841
+ }
18859
18842
  function isConstraintSupportingChild(child) {
18860
18843
  if (!isReactChild(child) || !isReactElement(child)) {
18861
18844
  return false;
@@ -18866,7 +18849,7 @@ var ConstraintMask = {
18866
18849
  // Modifies the constraint mask to remove invalid (mutually exclusive) options and returns the original.
18867
18850
  // TODO: this removes major inconsistencies but probably needs to be merged with ConstraintSolver.
18868
18851
  quickfix: (constraints) => {
18869
- if (constraints.widthType === 2 || constraints.heightType === 2) {
18852
+ if (isAutoDimensionType(constraints.widthType) || isAutoDimensionType(constraints.heightType)) {
18870
18853
  constraints.aspectRatio = null;
18871
18854
  }
18872
18855
  if (isFiniteNumber(constraints.aspectRatio)) {
@@ -18884,13 +18867,13 @@ var ConstraintMask = {
18884
18867
  }
18885
18868
  }
18886
18869
  if (constraints.left && constraints.right) {
18887
- if (constraints.fixedSize || constraints.widthType === 2 || isFiniteNumber(constraints.maxWidth)) {
18870
+ if (constraints.fixedSize || isAutoDimensionType(constraints.widthType) || isFiniteNumber(constraints.maxWidth)) {
18888
18871
  constraints.right = false;
18889
18872
  }
18890
18873
  constraints.widthType = 0;
18891
18874
  }
18892
18875
  if (constraints.top && constraints.bottom) {
18893
- if (constraints.fixedSize || constraints.heightType === 2 || isFiniteNumber(constraints.maxHeight)) {
18876
+ if (constraints.fixedSize || isAutoDimensionType(constraints.heightType) || isFiniteNumber(constraints.maxHeight)) {
18894
18877
  constraints.bottom = false;
18895
18878
  }
18896
18879
  constraints.heightType = 0;
@@ -19000,7 +18983,7 @@ var ConstraintValues = {
19000
18983
  if (parentWidth && isFiniteNumber(hOpposingPinsOffset)) {
19001
18984
  width = parentWidth - hOpposingPinsOffset;
19002
18985
  }
19003
- else if (autoSize && values.widthType === 2) {
18986
+ else if (autoSize && isAutoDimensionType(values.widthType)) {
19004
18987
  width = autoSize.width;
19005
18988
  }
19006
18989
  else if (isFiniteNumber(values.width)) {
@@ -19018,6 +19001,7 @@ var ConstraintValues = {
19018
19001
  }
19019
19002
  break;
19020
19003
  case 2:
19004
+ case 5:
19021
19005
  break;
19022
19006
  default:
19023
19007
  assertNever(values.widthType);
@@ -19027,7 +19011,7 @@ var ConstraintValues = {
19027
19011
  if (parentHeight && isFiniteNumber(vOpposingPinsOffset)) {
19028
19012
  height = parentHeight - vOpposingPinsOffset;
19029
19013
  }
19030
- else if (autoSize && values.heightType === 2) {
19014
+ else if (autoSize && isAutoDimensionType(values.heightType)) {
19031
19015
  height = autoSize.height;
19032
19016
  }
19033
19017
  else if (isFiniteNumber(values.height)) {
@@ -19045,6 +19029,7 @@ var ConstraintValues = {
19045
19029
  }
19046
19030
  break;
19047
19031
  case 2:
19032
+ case 5:
19048
19033
  break;
19049
19034
  default:
19050
19035
  assertNever(values.heightType);
@@ -20107,9 +20092,10 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20107
20092
  text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
20108
20093
  /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */
20109
20094
  cursor: var(--framer-custom-cursors, pointer);
20110
- background-color: var(--framer-link-text-background-color, var(--framer-text-background-color, initial));
20111
- border-radius: var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial));
20112
- padding: var(--framer-link-text-background-padding, var(--framer-text-background-padding, initial));
20095
+ /* Don't inherit background styles from any parent text style. */
20096
+ background-color: var(--framer-link-text-background-color, initial);
20097
+ border-radius: var(--framer-link-text-background-radius, initial);
20098
+ padding: var(--framer-link-text-background-padding, initial);
20113
20099
  }
20114
20100
  `,
20115
20101
  // Text decoration can't be applied to the nested spans of links because it breaks animations
@@ -20132,7 +20118,7 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20132
20118
  span.framer-text[data-nested-link],
20133
20119
  span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {
20134
20120
  color: ${createRGBVariableFallbacks(['--framer-blockquote-text-color', '--framer-link-text-color', '--framer-text-color',], '#000')};
20135
- background-color: ${createRGBVariableFallbacks(['--framer-link-text-background-color', '--framer-text-background-color',], 'initial')};
20121
+ background-color: ${createRGBVariableFallbacks(['--framer-link-text-background-color',], 'initial')};
20136
20122
  }
20137
20123
  }
20138
20124
  `, /* css */
@@ -20248,9 +20234,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20248
20234
  color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));
20249
20235
  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));
20250
20236
  text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
20251
- background-color: var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, var(--framer-text-background-color, initial)));
20252
- border-radius: var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial)));
20253
- padding: var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, var(--framer-text-background-padding, initial)));
20237
+ background-color: var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, initial));
20238
+ border-radius: var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial));
20239
+ padding: var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, initial));
20254
20240
  }
20255
20241
  `, /* css */
20256
20242
  `
@@ -20322,9 +20308,9 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20322
20308
  color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
20323
20309
  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));
20324
20310
  text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
20325
- 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))));
20326
- 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))));
20327
- 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))));
20311
+ background-color: var(--framer-link-hover-text-background-color, var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, initial)));
20312
+ border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial)));
20313
+ padding: var(--framer-link-hover-text-background-padding, var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, initial)));
20328
20314
  }
20329
20315
  `, /* css */
20330
20316
  `
@@ -20355,7 +20341,6 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20355
20341
  '--framer-link-hover-text-background-color',
20356
20342
  '--framer-link-current-text-background-color',
20357
20343
  '--framer-link-text-background-color',
20358
- '--framer-text-background-color',
20359
20344
  ], 'initial')};
20360
20345
  }
20361
20346
  }
@@ -20392,7 +20377,6 @@ var richTextCSSRules = /* @__PURE__ */ (() => [
20392
20377
  '--framer-link-hover-text-background-color',
20393
20378
  '--framer-link-current-text-background-color',
20394
20379
  '--framer-link-text-background-color',
20395
- '--framer-text-background-color',
20396
20380
  ], 'initial')};
20397
20381
  }
20398
20382
  }
@@ -22918,7 +22902,7 @@ var BackgroundImage = {
22918
22902
  isImageObject: function (image) {
22919
22903
  if (!image || typeof image === 'string')
22920
22904
  return false;
22921
- return key in image;
22905
+ return typeof image === 'object' && key in image;
22922
22906
  },
22923
22907
  };
22924
22908
  exports.BackgroundImage = BackgroundImage;
@@ -22954,6 +22938,31 @@ function backgroundImageFromProps(props) {
22954
22938
  }
22955
22939
  return applyForwardOverrides(backgroundImage, props);
22956
22940
  }
22941
+ function getIntrinsicSizeForBackgroundImage(background) {
22942
+ if (!background)
22943
+ return void 0;
22944
+ if (background.pixelHeight && background.pixelWidth) {
22945
+ return {
22946
+ width: background.pixelWidth,
22947
+ height: background.pixelHeight,
22948
+ };
22949
+ }
22950
+ return parseImageSizeFromSrc(background.src);
22951
+ }
22952
+ function parseImageSizeFromSrc(src) {
22953
+ if (!src)
22954
+ return void 0;
22955
+ const url = new URL(src);
22956
+ const width = url.searchParams.get('width');
22957
+ const height = url.searchParams.get('height');
22958
+ if (width && height) {
22959
+ return {
22960
+ width: parseInt(width),
22961
+ height: parseInt(height),
22962
+ };
22963
+ }
22964
+ return void 0;
22965
+ }
22957
22966
  function htmlElementAsMotionComponent(asElem) {
22958
22967
  return asElem && asElem !== 'search' && asElem !== 'slot' && asElem !== 'template' ? motion[asElem] : motion['div'];
22959
22968
  }
@@ -24068,6 +24077,11 @@ var VisibleFrame = /* @__PURE__ */ (0, react_7.forwardRef)(function VisibleFrame
24068
24077
  ],
24069
24078
  }), parentSize);
24070
24079
  const MotionComponent = htmlElementAsMotionComponent(props.as);
24080
+ const intrinsicSize = getIntrinsicSizeForBackgroundImage(backgroundImage);
24081
+ if (props.fitImageDimension && intrinsicSize) {
24082
+ currentStyle[props.fitImageDimension] = 'auto';
24083
+ currentStyle.aspectRatio = intrinsicSize.width / intrinsicSize.height;
24084
+ }
24071
24085
  return /* @__PURE__ */ (0, jsx_runtime_2.jsxs)(MotionComponent, {
24072
24086
  ...dataProps,
24073
24087
  ...motionProps,
@@ -33419,15 +33433,15 @@ function domWriteCreateUpdateSafeArea(safeAreaRef) {
33419
33433
  Object.assign(safeAreaRef.current.style, floatingPositionSafeAreaStyle(x, y, placement, anchorRect, calculatedRect));
33420
33434
  };
33421
33435
  }
33422
- function domWriteUpdatePosition(floatingPositionRef, position, rect) {
33436
+ function domWriteUpdatePosition(floatingPositionRef, position, rect, scrollX, scrollY) {
33423
33437
  if (!floatingPositionRef.current)
33424
33438
  return;
33425
33439
  Object.assign(floatingPositionRef.current.style, {
33426
33440
  position,
33427
33441
  visibility: 'visible',
33428
33442
  // Append "px" because we are assigning this object straight to style.
33429
- left: ((rect == null ? void 0 : rect.x) ?? 0) + (position === 'fixed' ? 0 : safeWindow.scrollX) + 'px',
33430
- top: ((rect == null ? void 0 : rect.y) ?? 0) + (position === 'fixed' ? 0 : safeWindow.scrollY) + 'px',
33443
+ left: ((rect == null ? void 0 : rect.x) ?? 0) + scrollX + 'px',
33444
+ top: ((rect == null ? void 0 : rect.y) ?? 0) + scrollY + 'px',
33431
33445
  });
33432
33446
  }
33433
33447
  var FloatingStackingContext = /* @__PURE__ */ (() => {
@@ -33554,13 +33568,14 @@ function Floating({ alignment, placement, safeArea, offsetX, offsetY, anchorRef,
33554
33568
  let elementRect;
33555
33569
  let safePlacement;
33556
33570
  let calculatedRect;
33557
- let scrolls;
33558
33571
  let latestEvent;
33559
33572
  let updateSafeArea;
33573
+ let scrollX = 0;
33574
+ let scrollY = 0;
33560
33575
  const onRender = () => {
33561
33576
  if (cleanupHasRun)
33562
33577
  return;
33563
- domWriteUpdatePosition(floatingPositionRef, position, calculatedRect);
33578
+ domWriteUpdatePosition(floatingPositionRef, position, calculatedRect, scrollX, scrollY);
33564
33579
  if (safeArea)
33565
33580
  updateSafeArea(anchorRect, calculatedRect, safePlacement, latestEvent);
33566
33581
  latestEvent = void 0;
@@ -33571,7 +33586,7 @@ function Floating({ alignment, placement, safeArea, offsetX, offsetY, anchorRef,
33571
33586
  onRender();
33572
33587
  }
33573
33588
  else {
33574
- domWriteUpdatePosition(floatingPositionRef, position, calculatedRect);
33589
+ domWriteUpdatePosition(floatingPositionRef, position, calculatedRect, scrollX, scrollY);
33575
33590
  }
33576
33591
  initialUpdateHasRun = true;
33577
33592
  };
@@ -33583,6 +33598,14 @@ function Floating({ alignment, placement, safeArea, offsetX, offsetY, anchorRef,
33583
33598
  const domReadUpdateSafePlacementAndRect = () => {
33584
33599
  if (!getSafePlacementRect || cleanupHasRun)
33585
33600
  return;
33601
+ if (position === 'fixed') {
33602
+ scrollX = 0;
33603
+ scrollY = 0;
33604
+ }
33605
+ else {
33606
+ scrollX = safeWindow.scrollX;
33607
+ scrollY = safeWindow.scrollY;
33608
+ }
33586
33609
  anchorRect = anchorRef.current.getBoundingClientRect();
33587
33610
  const safePlacementAndRect = getSafePlacementRect(anchorRect, elementRect);
33588
33611
  safePlacement = safePlacementAndRect[0];
@@ -35155,57 +35178,79 @@ function isSamePage(a, b) {
35155
35178
  return aPathVariables.length === bPathVariables.length &&
35156
35179
  Object.keys(aPathVariables).every((key7) => aPathVariables[key7] === bPathVariables[key7]);
35157
35180
  }
35158
- function getPageviewEventData({ abTestId, framerSiteId, routeId, routePath, collectionItemId, localeCode, }) {
35159
- return {
35160
- abTestId,
35161
- framerSiteId,
35162
- routePath: routePath || '/',
35163
- collectionItemId,
35164
- framerLocale: localeCode,
35165
- webPageId: routeId,
35166
- };
35181
+ var timezone = null;
35182
+ var visitorLocale = null;
35183
+ function setTimezoneAndLocaleForTracking() {
35184
+ const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();
35185
+ timezone = resolvedDateTimeOptions.timeZone;
35186
+ visitorLocale = resolvedDateTimeOptions.locale;
35167
35187
  }
35168
- var useSendPageView = (currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale) => {
35188
+ requestIdleCallback(setTimezoneAndLocaleForTracking);
35189
+ var useSendPageView = (currentRoute, currentRouteId, currentPathnameWithHash, currentPathVariables, collectionUtils, activeLocale) => {
35169
35190
  const framerSiteId = (0, react_3.useContext)(FormContext);
35170
35191
  const pageviewEventData = (0, react_4.useRef)();
35171
35192
  const skipFirstPageView = (0, react_4.useRef)(true);
35172
35193
  (0, react_2.useEffect)(() => {
35173
- const getFullPageviewEventData = async () => {
35174
- var _a;
35175
- let collectionItemId = null;
35176
- if ((currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables) {
35177
- const utils = await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils));
35178
- const [slug,] = Object.values(currentPathVariables);
35179
- if (utils && typeof slug === 'string') {
35180
- collectionItemId = (await utils.getRecordIdBySlug(slug, activeLocale || void 0)) ?? null;
35181
- }
35182
- }
35183
- return getPageviewEventData({
35194
+ function getFullPageviewEventData() {
35195
+ if (!timezone || !visitorLocale)
35196
+ setTimezoneAndLocaleForTracking();
35197
+ const currentLocation = currentPathnameWithHash
35198
+ ? new URL(safeWindow.location.origin + currentPathnameWithHash)
35199
+ : safeWindow.location;
35200
+ const eventData = {
35201
+ version: pageviewEventVersion,
35184
35202
  abTestId: currentRoute == null ? void 0 : currentRoute.abTestId,
35185
35203
  framerSiteId: framerSiteId ?? null,
35186
35204
  // 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.
35187
- routeId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,
35188
- routePath: currentRoute == null ? void 0 : currentRoute.path,
35189
- collectionItemId,
35190
- localeCode: (activeLocale == null ? void 0 : activeLocale.code) || null,
35191
- });
35192
- };
35205
+ webPageId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,
35206
+ routePath: (currentRoute == null ? void 0 : currentRoute.path) || '/',
35207
+ collectionItemId: null,
35208
+ framerLocale: (activeLocale == null ? void 0 : activeLocale.code) || null,
35209
+ referrer: null,
35210
+ // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.
35211
+ url: currentLocation.href,
35212
+ hostname: currentLocation.hostname,
35213
+ // Capture the current location before the user moves to a new page to prevent
35214
+ // tracking wrong pathnames due to a race condition caused by async operations
35215
+ // when resolving the collection item ID below
35216
+ pathname: currentLocation.pathname,
35217
+ search: currentLocation.search || null,
35218
+ hash: currentLocation.hash || null,
35219
+ timezone,
35220
+ locale: visitorLocale,
35221
+ };
35222
+ return (currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables
35223
+ ? (async () => {
35224
+ var _a;
35225
+ let collectionItemId = null;
35226
+ const utils = currentRoute.collectionId &&
35227
+ (await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils)));
35228
+ const [slug,] = Object.values(currentPathVariables);
35229
+ if (utils && typeof slug === 'string') {
35230
+ collectionItemId = (await utils.getRecordIdBySlug(slug, activeLocale || void 0)) ?? null;
35231
+ }
35232
+ return {
35233
+ ...eventData,
35234
+ collectionItemId,
35235
+ };
35236
+ })()
35237
+ : eventData;
35238
+ }
35193
35239
  void (async () => {
35194
- const pageviewEventDataPromise = getFullPageviewEventData();
35195
- pageviewEventData.current = pageviewEventDataPromise;
35240
+ const eventDataOrPromise = pageviewEventData.current = getFullPageviewEventData();
35241
+ const eventData = eventDataOrPromise instanceof Promise ? await eventDataOrPromise : eventDataOrPromise;
35242
+ pageviewEventData.current = eventData;
35196
35243
  if (skipFirstPageView.current) {
35197
35244
  skipFirstPageView.current = false;
35198
- return;
35199
35245
  }
35200
- const eventData = await pageviewEventDataPromise;
35201
- pageviewEventData.current = eventData;
35202
- sendTrackingEvent('published_site_pageview', eventData, 'eager');
35246
+ else {
35247
+ sendTrackingEvent('published_site_pageview', eventData, 'eager');
35248
+ }
35203
35249
  })();
35204
35250
  const listener = async (event) => {
35205
35251
  if (event.persisted) {
35206
- const pageviewEventDataPromise = getFullPageviewEventData();
35207
- pageviewEventData.current = pageviewEventDataPromise;
35208
- const eventData = await getFullPageviewEventData();
35252
+ const eventDataOrPromise = pageviewEventData.current = getFullPageviewEventData();
35253
+ const eventData = eventDataOrPromise instanceof Promise ? await eventDataOrPromise : eventDataOrPromise;
35209
35254
  pageviewEventData.current = eventData;
35210
35255
  sendTrackingEvent('published_site_pageview', eventData, 'eager');
35211
35256
  }
@@ -35214,7 +35259,7 @@ var useSendPageView = (currentRoute, currentRouteId, currentPathVariables, colle
35214
35259
  return () => {
35215
35260
  window.removeEventListener('pageshow', listener);
35216
35261
  };
35217
- }, [currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale, framerSiteId,]);
35262
+ }, [currentRoute, currentRouteId, currentPathnameWithHash, currentPathVariables, collectionUtils, activeLocale, framerSiteId,]);
35218
35263
  return pageviewEventData;
35219
35264
  };
35220
35265
  var defaultLocaleId = 'default';
@@ -35317,6 +35362,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
35317
35362
  return (fn) => fn();
35318
35363
  }, [synchronousNavigationOnDesktop,]);
35319
35364
  const isInitialNavigationRef = (0, react_4.useRef)(true);
35365
+ const currentPathnameWithHashRef = (0, react_4.useRef)();
35320
35366
  const currentRouteRef = (0, react_4.useRef)(initialRoute);
35321
35367
  const currentPathVariablesRef = (0, react_4.useRef)(initialPathVariables);
35322
35368
  const currentLocaleIdRef = (0, react_4.useRef)(initialLocaleId);
@@ -35402,12 +35448,13 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
35402
35448
  monitorNextPaintAfterRender,
35403
35449
  transitionFn,
35404
35450
  ]);
35405
- const setCurrentRouteId = (0, react_3.useCallback)((routeId, localeId, hash2, pathVariables, isHistoryTransition, nextRender, smoothScroll = false, updateURL) => {
35451
+ const setCurrentRouteId = (0, react_3.useCallback)((routeId, localeId, hash2, pathnameWithHash, pathVariables, isHistoryTransition, nextRender, smoothScroll = false, updateURL) => {
35406
35452
  isInitialNavigationRef.current = false;
35407
35453
  const currentRouteId2 = currentRouteRef.current;
35408
35454
  currentRouteRef.current = routeId;
35409
35455
  currentPathVariablesRef.current = pathVariables;
35410
35456
  currentLocaleIdRef.current = localeId;
35457
+ currentPathnameWithHashRef.current = pathnameWithHash;
35411
35458
  scheduleSideEffect(() => {
35412
35459
  updateScrollPosition(hash2, smoothScroll, isHistoryTransition);
35413
35460
  });
@@ -35493,14 +35540,26 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
35493
35540
  siteCanonicalURL,
35494
35541
  }, ignorePushStateWrapper);
35495
35542
  };
35496
- setCurrentRouteId(routeId, currentRouteLocaleId, routeElementId, pathVariables, false, nextRender, smoothScroll, disableHistory ? void 0 : updateURL);
35543
+ const pathnameWithHash = getSitePrefix(siteCanonicalURL) + getPathForRoute(newRoute, {
35544
+ currentRoutePath: currentRoute2 == null ? void 0 : currentRoute2.path,
35545
+ currentPathVariables: currentPathVariables2,
35546
+ hash: hash2,
35547
+ pathVariables,
35548
+ localeId: currentRouteLocaleId,
35549
+ preserveQueryParams,
35550
+ siteCanonicalURL,
35551
+ relative: false,
35552
+ // We need an absolute path for the hash
35553
+ });
35554
+ setCurrentRouteId(routeId, currentRouteLocaleId, routeElementId, pathnameWithHash, pathVariables, false, nextRender, smoothScroll, disableHistory ? void 0 : updateURL);
35497
35555
  }, [routes, setCurrentRouteId, disableHistory, preserveQueryParams, siteCanonicalURL, monitorNextPaintAfterRender,]);
35498
35556
  const getRoute = useGetRouteCallback(routes);
35499
35557
  const currentRouteId = currentRouteRef.current;
35558
+ const currentPathnameWithHash = currentPathnameWithHashRef.current;
35500
35559
  const currentPathVariables = currentPathVariablesRef.current;
35501
35560
  const currentRoute = routes[currentRouteId];
35502
35561
  const currentRoutePath = currentRoute == null ? void 0 : currentRoute.path;
35503
- const pageviewEventData = useSendPageView(currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale);
35562
+ const pageviewEventData = useSendPageView(currentRoute, currentRouteId, currentPathnameWithHash, currentPathVariables, collectionUtils, activeLocale);
35504
35563
  const isInitialNavigation = isInitialNavigationRef.current;
35505
35564
  const api = (0, react_4.useMemo)(() => ({
35506
35565
  navigate,
@@ -35553,7 +35612,7 @@ function Router({ defaultPageStyle, disableHistory, initialPathVariables, initia
35553
35612
  /* @__PURE__ */ (0, jsx_runtime_1.jsx)(MarkSuspenseEffects.Start, {}),
35554
35613
  /* @__PURE__ */ (0, jsx_runtime_1.jsx)(WithLayoutTemplate, {
35555
35614
  LayoutTemplate,
35556
- routeId: currentRouteId,
35615
+ routeId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,
35557
35616
  style: defaultPageStyle,
35558
35617
  children: (inLayoutTemplate) => {
35559
35618
  return /* @__PURE__ */ (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {
@@ -43282,7 +43341,9 @@ try {
43282
43341
  catch { }
43283
43342
  var postLogEntry;
43284
43343
  try {
43285
- if (typeof window !== 'undefined' && !!window.postMessage && window.top !== window) {
43344
+ if (typeof window !== 'undefined' && !!window.postMessage && window.parent !== window &&
43345
+ // Don't post messages to the top-level site from the Editor Bar
43346
+ !window.location.pathname.startsWith('/edit')) {
43286
43347
  postLogEntry = (entry) => {
43287
43348
  var _a;
43288
43349
  try {
@@ -43296,7 +43357,7 @@ try {
43296
43357
  parts,
43297
43358
  printed,
43298
43359
  };
43299
- (_a = window.top) == null ? void 0 : _a.postMessage(data2, getServiceMap().app);
43360
+ (_a = window.parent) == null ? void 0 : _a.postMessage(data2, getServiceMap().app);
43300
43361
  }
43301
43362
  catch { }
43302
43363
  };
@@ -44378,11 +44439,11 @@ function getAssetOwnerType(asset) {
44378
44439
  async function loadFontsWithOpenType(source) {
44379
44440
  switch (source) {
44380
44441
  case 'google': {
44381
- const supportedFonts = await import('./framer-chunks/google-3ASCFEEO-3R47BR2A.js');
44442
+ const supportedFonts = await import('./framer-chunks/google-2KFYDWCN-PJC2DDXK.js');
44382
44443
  return supportedFonts == null ? void 0 : supportedFonts.default;
44383
44444
  }
44384
44445
  case 'fontshare': {
44385
- const supportedFonts = await import('./framer-chunks/fontshare-4J2ZFRBB-H5VQLZTM.js');
44446
+ const supportedFonts = await import('./framer-chunks/fontshare-EOIRPPWV-VDFFNW4K.js');
44386
44447
  return supportedFonts == null ? void 0 : supportedFonts.default;
44387
44448
  }
44388
44449
  default:
@@ -44392,11 +44453,11 @@ async function loadFontsWithOpenType(source) {
44392
44453
  async function loadFontToOpenTypeFeatures(source) {
44393
44454
  switch (source) {
44394
44455
  case 'google': {
44395
- const features = await import('./framer-chunks/google-FDB6LUFQ-PFSUZGKF.js');
44456
+ const features = await import('./framer-chunks/google-HSMCYMMG-DWNQGSHN.js');
44396
44457
  return features == null ? void 0 : features.default;
44397
44458
  }
44398
44459
  case 'fontshare': {
44399
- const features = await import('./framer-chunks/fontshare-622CVMZZ-HFPH543A.js');
44460
+ const features = await import('./framer-chunks/fontshare-Y53BJZLK-EUQIV252.js');
44400
44461
  return features == null ? void 0 : features.default;
44401
44462
  }
44402
44463
  case 'framer': {
@@ -44921,10 +44982,10 @@ function loadVariationAxes(source) {
44921
44982
  const axes = (async () => {
44922
44983
  switch (source) {
44923
44984
  case 'google': {
44924
- return (await import('./framer-chunks/google-C62SNV32-LCI4F7VO.js')).default;
44985
+ return (await import('./framer-chunks/google-S367OFIE-AWJEPMSF.js')).default;
44925
44986
  }
44926
44987
  case 'fontshare': {
44927
- return (await import('./framer-chunks/fontshare-JGEKH7YN-QOX3MC3K.js')).default;
44988
+ return (await import('./framer-chunks/fontshare-2X4LZ75B-D2V5BX73.js')).default;
44928
44989
  }
44929
44990
  default:
44930
44991
  assertNever(source);
@@ -45861,10 +45922,35 @@ var styles3 = /* @__PURE__ */ (() => [
45861
45922
  var FormSelect = /* @__PURE__ */ withCSS(Select, styles3, 'framer-lib-form-select');
45862
45923
  exports.FormSelect = FormSelect;
45863
45924
  var Image2 = /* @__PURE__ */ react_11.default.forwardRef(function Image3(props, ref) {
45864
- const { background, children, alt, draggable, style: styleFromProps, ...rest } = props;
45925
+ const { background, children, alt, draggable, fitImageDimension, style: styleFromProps, ...rest } = props;
45865
45926
  const style2 = {
45866
45927
  ...styleFromProps,
45867
45928
  };
45929
+ const intrinsicSize = (0, react_4.useMemo)(() => getIntrinsicSizeForBackgroundImage(background), [background,]);
45930
+ const [fallbackIntrinsicSize, setFallbackIntrinsicSize,] = (0, react_4.useState)();
45931
+ react_11.default.useLayoutEffect(() => {
45932
+ if (!(background == null ? void 0 : background.src))
45933
+ return;
45934
+ if (!fitImageDimension)
45935
+ return;
45936
+ if (intrinsicSize)
45937
+ return;
45938
+ const img = document.createElement('img');
45939
+ img.onload = () => {
45940
+ if (img.naturalWidth && img.naturalHeight) {
45941
+ setFallbackIntrinsicSize({
45942
+ width: img.naturalWidth,
45943
+ height: img.naturalHeight,
45944
+ });
45945
+ }
45946
+ };
45947
+ img.src = background.src;
45948
+ }, [background == null ? void 0 : background.src, fitImageDimension, intrinsicSize,]);
45949
+ const size = intrinsicSize ?? fallbackIntrinsicSize;
45950
+ if (fitImageDimension && size) {
45951
+ style2[fitImageDimension] = 'auto';
45952
+ style2.aspectRatio = size.width / size.height;
45953
+ }
45868
45954
  if (background) {
45869
45955
  delete style2.background;
45870
45956
  }
@@ -47990,7 +48076,7 @@ var TextComponent = /* @__PURE__ */ (() => {
47990
48076
  if (this.props.transformTemplate)
47991
48077
  return this.props.transformTemplate;
47992
48078
  const frame2 = this.frame;
47993
- const isDOMLayoutAutoSized = _usesDOMRect && (widthType === 2 || heightType === 2);
48079
+ const isDOMLayoutAutoSized = _usesDOMRect && (isAutoDimensionType(widthType) || isAutoDimensionType(heightType));
47994
48080
  const hasTransformTemplate = !frame2 || !RenderTarget.hasRestrictions() || __fromCanvasComponent || isDOMLayoutAutoSized;
47995
48081
  if (hasTransformTemplate)
47996
48082
  return transformTemplate(this.props.center);
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "3.1.0";
1
+ export declare const version = "3.2.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '3.1.0';
4
+ exports.version = '3.2.0';
5
5
  //# sourceMappingURL=version.js.map
package/esm/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAU,UAAU,EAAE,MAAM,eAAe,CAAA;AAOlD,OAAO,EAAE,eAAe,EAA0B,MAAM,UAAU,CAAA;AAYlE,eAAO,MAAM,GAAG,mBAAkB,CAAA;AAwKlC,MAAM,MAAM,MAAM,GAAG;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,UAAU,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB,CAAA;IACD,oBAAoB,CAAC,EAAE;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,CAAA;QACrB,cAAc,EAAE,MAAM,CAAA;QACtB,KAAK,EAAE,MAAM,CAAA;KAChB,EAAE,CAAA;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IAEH,OAAO,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IACH,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6BAA6B,EAAE,uBAAuB,EAAE,CAAA;IACxD,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAE/B,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IAEjB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,eAAe,CAAC,EAClC,SAAS,EACT,gBAAiC,EACjC,WAAmB,EACnB,MAAwC,GAC3C;;;;;CAAA;;;;GA4FA"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAU,UAAU,EAAE,MAAM,eAAe,CAAA;AAOlD,OAAO,EAAE,eAAe,EAA0B,MAAM,UAAU,CAAA;AAYlE,eAAO,MAAM,GAAG,mBAAkB,CAAA;AA2KlC,MAAM,MAAM,MAAM,GAAG;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,UAAU,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB,CAAA;IACD,oBAAoB,CAAC,EAAE;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,CAAA;QACrB,cAAc,EAAE,MAAM,CAAA;QACtB,KAAK,EAAE,MAAM,CAAA;KAChB,EAAE,CAAA;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IAEH,OAAO,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IACH,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6BAA6B,EAAE,uBAAuB,EAAE,CAAA;IACxD,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAE/B,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IAEjB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,eAAe,CAAC,EAClC,SAAS,EACT,gBAAiC,EACjC,WAAmB,EACnB,MAAwC,GAC3C;;;;;CAAA;;;;GA4FA"}
package/esm/cli.js CHANGED
@@ -23,6 +23,7 @@ cli.command('[projectId]', 'Run unframer with optional project ID')
23
23
  default: true,
24
24
  })
25
25
  .option('--debug', 'Enable debug logging', { default: false })
26
+ .option('--metafile', 'Generate meta.json file with build metadata', { default: false })
26
27
  .action(async function main(projectId, options) {
27
28
  const external_ = options.external;
28
29
  const allExternal = external_ === true;
@@ -55,6 +56,7 @@ cli.command('[projectId]', 'Run unframer with optional project ID')
55
56
  watch,
56
57
  cwd,
57
58
  signal,
59
+ metafile: options.metafile,
58
60
  });
59
61
  // console.log('buildContext', buildContext)
60
62
  if (!websiteUrl || !options.watch) {
@@ -112,6 +114,7 @@ cli.command('[projectId]', 'Run unframer with optional project ID')
112
114
  watch,
113
115
  signal: controller.signal,
114
116
  cwd: path.resolve(process.cwd(), config.outDir || 'framer'),
117
+ metafile: options.metafile,
115
118
  });
116
119
  await buildContext.dispose?.();
117
120
  }