@liquidcommercedev/rmn-sdk 1.4.6-beta.5 → 1.4.6-beta.6

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.cjs CHANGED
@@ -58,7 +58,6 @@ exports.RMN_SPOT_EVENT = void 0;
58
58
  (function (RMN_SPOT_EVENT) {
59
59
  RMN_SPOT_EVENT["MOUNTED"] = "MOUNTED";
60
60
  RMN_SPOT_EVENT["UNMOUNTED"] = "UNMOUNTED";
61
- RMN_SPOT_EVENT["RESIZED"] = "RESIZED";
62
61
  RMN_SPOT_EVENT["IMPRESSION"] = "IMPRESSION";
63
62
  RMN_SPOT_EVENT["CLICK"] = "CLICK";
64
63
  RMN_SPOT_EVENT["PURCHASE"] = "PURCHASE";
@@ -15246,9 +15245,9 @@ class ResizeObserverService {
15246
15245
  newWidth = Math.min(containerWidth, this.maxSize.width);
15247
15246
  newHeight = newWidth / this.aspectRatio;
15248
15247
  // If the height exceeds the container, adjust based on height
15249
- if (newHeight > containerHeight) {
15250
- newHeight = containerHeight;
15251
- newWidth = newHeight * this.aspectRatio;
15248
+ if (newWidth > containerWidth) {
15249
+ newWidth = containerWidth;
15250
+ newHeight = containerHeight * this.aspectRatio;
15252
15251
  }
15253
15252
  // Ensure we're not going below minimum dimensions
15254
15253
  newWidth = Math.max(newWidth, this.minSize.width);
@@ -15275,6 +15274,36 @@ class ResizeObserverService {
15275
15274
  }
15276
15275
  }
15277
15276
 
15277
+ function calculateScaleFactor(elementScale) {
15278
+ // Step 1: Apply square root for non-linear scaling
15279
+ // This creates a more gradual scaling effect, especially for larger changes
15280
+ // For example:
15281
+ // - elementScale of 0.25 (1/4 size) becomes 0.5
15282
+ // - elementScale of 1 (unchanged) remains 1
15283
+ // - elementScale of 4 (4x size) becomes 2
15284
+ const baseFactor = Math.sqrt(elementScale);
15285
+ // Step 2: Apply additional dampening to further soften the scaling effect
15286
+ // The dampening factor (0.5) can be adjusted:
15287
+ // - Lower values (closer to 0) make scaling more subtle
15288
+ // - Higher values (closer to 1) make scaling more pronounced
15289
+ const dampening = 0.35;
15290
+ // Calculate the scaleFactor:
15291
+ // 1. (baseFactor - 1) represents the change from the original size
15292
+ // 2. Multiply by dampening to reduce the effect
15293
+ // 3. Add 1 to center the scaling around the original size
15294
+ // For example, if baseFactor is 2:
15295
+ // scaleFactor = 1 + (2 - 1) * 0.5 = 1.5
15296
+ const scaleFactor = 1 + (baseFactor - 1) * dampening;
15297
+ // Step 3: Define the allowed range for the scale factor
15298
+ // This ensures that the font size never changes too drastically
15299
+ const minScale = 0.35; // Font will never be smaller than 50% of original
15300
+ const maxScale = 1.5; // Font will never be larger than 150% of original
15301
+ // Step 4: Clamp the scale factor to the defined range
15302
+ // Math.min ensures the value doesn't exceed maxScale
15303
+ // Math.max ensures the value isn't less than minScale
15304
+ return Math.max(minScale, Math.min(maxScale, scaleFactor));
15305
+ }
15306
+
15278
15307
  const CAROUSEL_COMPONENT_STYLE = ({ width, height, fluid }) => `
15279
15308
  :host {
15280
15309
  position: relative;
@@ -15462,6 +15491,7 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
15462
15491
  this.autoplayInterval = null;
15463
15492
  this.useDots = false;
15464
15493
  this.useButtons = false;
15494
+ this.originalFontSizes = new Map();
15465
15495
  this.attachShadow({ mode: 'open' });
15466
15496
  }
15467
15497
  connectedCallback() {
@@ -15500,7 +15530,7 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
15500
15530
  this.validateOptions();
15501
15531
  }
15502
15532
  setupResizeObserver() {
15503
- if (this.data) {
15533
+ if (this.data && !this.data.fluid) {
15504
15534
  this.resizeObserver = new ResizeObserverService({
15505
15535
  element: this,
15506
15536
  maxSize: {
@@ -15512,9 +15542,29 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
15512
15542
  this.addEventListener('spotSizeChanged', this.handleCarouselSizeChanged.bind(this));
15513
15543
  }
15514
15544
  }
15515
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
15516
- handleCarouselSizeChanged(_event) {
15517
- // console.info('Carousel Size Changed', event);
15545
+ handleCarouselSizeChanged(event) {
15546
+ const isRBSpot = 'rbHeroadaksda'.startsWith('rb');
15547
+ if (!isRBSpot) {
15548
+ // Adjust text elements font size based on the scale factor
15549
+ this.adjustFontSize(event.detail.scale);
15550
+ }
15551
+ }
15552
+ adjustFontSize(elementScale) {
15553
+ var _a;
15554
+ const scaleFactor = calculateScaleFactor(elementScale);
15555
+ // Find all text elements within the shadow root
15556
+ const elements = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('h1, h2, h3, h4, p, span');
15557
+ elements === null || elements === void 0 ? void 0 : elements.forEach((element) => {
15558
+ if (element instanceof HTMLElement) {
15559
+ if (!this.originalFontSizes.has(element)) {
15560
+ const originalSize = parseFloat(window.getComputedStyle(element).fontSize);
15561
+ this.originalFontSizes.set(element, originalSize);
15562
+ }
15563
+ const originalSize = this.originalFontSizes.get(element);
15564
+ const newFontSize = originalSize * scaleFactor;
15565
+ element.style.fontSize = `${newFontSize}px`;
15566
+ }
15567
+ });
15518
15568
  }
15519
15569
  render() {
15520
15570
  var _a;
@@ -15723,7 +15773,7 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
15723
15773
  * #########################################################
15724
15774
  */
15725
15775
  setupResizeObserver() {
15726
- if (this.data) {
15776
+ if (this.data && !this.data.fluid) {
15727
15777
  this.resizeObserver = new ResizeObserverService({
15728
15778
  element: this,
15729
15779
  maxSize: {
@@ -15740,13 +15790,16 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
15740
15790
  * #########################################################
15741
15791
  */
15742
15792
  handleSpotSizeChanged(event) {
15743
- // console.info('Spot Size Changed', event);
15744
- // Adjust text elements font size based on the scale factor
15745
- this.adjustFontSize(event.detail.scale);
15793
+ var _a, _b, _c;
15794
+ const isRBSpot = (_c = (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.spot) === null || _b === void 0 ? void 0 : _b.startsWith('rb')) !== null && _c !== void 0 ? _c : false;
15795
+ if (!isRBSpot) {
15796
+ // Adjust text elements font size based on the scale factor
15797
+ this.adjustFontSize(event.detail.scale);
15798
+ }
15746
15799
  }
15747
15800
  adjustFontSize(elementScale) {
15748
15801
  var _a;
15749
- const scaleFactor = this.calculateScaleFactor(elementScale);
15802
+ const scaleFactor = calculateScaleFactor(elementScale);
15750
15803
  // Find all text elements within the shadow root
15751
15804
  const elements = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('h1, h2, h3, h4, p, span');
15752
15805
  elements === null || elements === void 0 ? void 0 : elements.forEach((element) => {
@@ -15761,35 +15814,6 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
15761
15814
  }
15762
15815
  });
15763
15816
  }
15764
- calculateScaleFactor(elementScale) {
15765
- // Step 1: Apply square root for non-linear scaling
15766
- // This creates a more gradual scaling effect, especially for larger changes
15767
- // For example:
15768
- // - elementScale of 0.25 (1/4 size) becomes 0.5
15769
- // - elementScale of 1 (unchanged) remains 1
15770
- // - elementScale of 4 (4x size) becomes 2
15771
- const baseFactor = Math.sqrt(elementScale);
15772
- // Step 2: Apply additional dampening to further soften the scaling effect
15773
- // The dampening factor (0.5) can be adjusted:
15774
- // - Lower values (closer to 0) make scaling more subtle
15775
- // - Higher values (closer to 1) make scaling more pronounced
15776
- const dampening = 0.5;
15777
- // Calculate the scaleFactor:
15778
- // 1. (baseFactor - 1) represents the change from the original size
15779
- // 2. Multiply by dampening to reduce the effect
15780
- // 3. Add 1 to center the scaling around the original size
15781
- // For example, if baseFactor is 2:
15782
- // scaleFactor = 1 + (2 - 1) * 0.5 = 1.5
15783
- const scaleFactor = 1 + (baseFactor - 1) * dampening;
15784
- // Step 3: Define the allowed range for the scale factor
15785
- // This ensures that the font size never changes too drastically
15786
- const minScale = 0.5; // Font will never be smaller than 90% of original
15787
- const maxScale = 1.5; // Font will never be larger than 110% of original
15788
- // Step 4: Clamp the scale factor to the defined range
15789
- // Math.min ensures the value doesn't exceed maxScale
15790
- // Math.max ensures the value isn't less than minScale
15791
- return Math.max(minScale, Math.min(maxScale, scaleFactor));
15792
- }
15793
15817
  /**
15794
15818
  * Spot element rendering
15795
15819
  * #########################################################
@@ -15840,6 +15864,7 @@ class ElementService {
15840
15864
  }
15841
15865
  const spot = document.createElement(SPOT_ELEMENT_TAG);
15842
15866
  spot.data = {
15867
+ spot: config === null || config === void 0 ? void 0 : config.spot,
15843
15868
  fluid: (_a = config === null || config === void 0 ? void 0 : config.fluid) !== null && _a !== void 0 ? _a : false,
15844
15869
  ...config,
15845
15870
  };
@@ -15861,6 +15886,7 @@ class ElementService {
15861
15886
  }
15862
15887
  const carousel = document.createElement(CAROUSEL_ELEMENT_TAG);
15863
15888
  carousel.data = {
15889
+ spot: config === null || config === void 0 ? void 0 : config.spot,
15864
15890
  fluid: false,
15865
15891
  ...config,
15866
15892
  };
@@ -16745,12 +16771,7 @@ function wideSkyscraperV1Template(spot) {
16745
16771
 
16746
16772
  const STYLES$7 = ({ primaryImage, mobilePrimaryImage = primaryImage }, { prefix }) => `
16747
16773
  <style>
16748
- :host {
16749
- min-width: 320px;
16750
- min-height: 223px;
16751
- }
16752
-
16753
- .${prefix}__content {
16774
+ .${prefix} {
16754
16775
  display: block;
16755
16776
  width: 100%;
16756
16777
  height: 100%;
@@ -16759,10 +16780,11 @@ const STYLES$7 = ({ primaryImage, mobilePrimaryImage = primaryImage }, { prefix
16759
16780
  background-repeat: no-repeat;
16760
16781
  background-position: center;
16761
16782
  cursor: pointer;
16783
+ container-type: inline-size;
16762
16784
  }
16763
16785
 
16764
- @media (min-width: 640px) {
16765
- .${prefix}__content {
16786
+ @container (min-width: 640px) {
16787
+ .${prefix} {
16766
16788
  background-image: url("${primaryImage}");
16767
16789
  }
16768
16790
  }
@@ -16772,7 +16794,7 @@ function rbCollectionBannerWithoutTextBlockTemplate(spot, config) {
16772
16794
  const { prefix = '' } = config;
16773
16795
  return `
16774
16796
  ${STYLES$7(spot, config)}
16775
- <div class="${prefix}__content"></div>
16797
+ <div class="${prefix}"></div>
16776
16798
  `;
16777
16799
  }
16778
16800
 
@@ -16781,16 +16803,6 @@ const STYLES$6 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
16781
16803
  return `
16782
16804
  <style>
16783
16805
  .${prefix} {
16784
- min-width: 320px;
16785
- min-height: 388px;
16786
- width: 100%;
16787
- height: 100%;
16788
- display: block;
16789
- position: relative;
16790
- container-type: inline-size;
16791
- }
16792
-
16793
- .${prefix}__content {
16794
16806
  display: flex;
16795
16807
  flex-direction: column;
16796
16808
  justify-content: flex-end;
@@ -16805,6 +16817,7 @@ const STYLES$6 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
16805
16817
  box-sizing: border-box;
16806
16818
  color: ${textColor};
16807
16819
  cursor: pointer;
16820
+ container-type: inline-size;
16808
16821
  }
16809
16822
 
16810
16823
  .${prefix}__text {
@@ -16849,17 +16862,17 @@ const STYLES$6 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
16849
16862
  transition: background-color 0.3s ease;
16850
16863
  }
16851
16864
 
16852
- .${prefix}__content:hover .cta-button {
16865
+ .${prefix}:hover .cta-button {
16853
16866
  background-color: ${ctaBorderColor.length === 7 ? `${ctaBorderColor}15` : `${ctaBorderColor}`};
16854
16867
  }
16855
16868
 
16856
- @media (min-width: 640px) {
16857
- .${prefix}__content {
16869
+ @container (min-width: 640px) {
16870
+ .${prefix} {
16858
16871
  background-image: linear-gradient(to top, ${linearGradient}), url("${primaryImage}");
16859
16872
  }
16860
16873
  }
16861
16874
 
16862
- @media (min-width: 768px) {
16875
+ @container (min-width: 768px) {
16863
16876
  .${prefix}__primary-image {
16864
16877
  width: 66.66666%;
16865
16878
  height: 100%;
@@ -16870,7 +16883,7 @@ const STYLES$6 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
16870
16883
  height: 100%;
16871
16884
  width: 33.33333%;
16872
16885
  }
16873
-
16886
+
16874
16887
  .${prefix}__secondary-image {
16875
16888
  width: 100%;
16876
16889
  height: 50%;
@@ -16879,7 +16892,7 @@ const STYLES$6 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
16879
16892
  .${prefix}__header {
16880
16893
  font-size: 22px;
16881
16894
  }
16882
-
16895
+
16883
16896
  .${prefix}__description {
16884
16897
  font-size: 12px;
16885
16898
  }
@@ -16889,7 +16902,7 @@ const STYLES$6 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
16889
16902
  }
16890
16903
  }
16891
16904
 
16892
- @media (min-width: 1024px) {
16905
+ @container (min-width: 1024px) {
16893
16906
  .${prefix}__header {
16894
16907
  font-size: 24px;
16895
16908
  }
@@ -16903,11 +16916,11 @@ const STYLES$6 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
16903
16916
  }
16904
16917
  }
16905
16918
 
16906
- @media (min-width: 1280px) {
16919
+ @container (min-width: 1280px) {
16907
16920
  .${prefix}__header {
16908
16921
  font-size: 28px;
16909
16922
  }
16910
-
16923
+
16911
16924
  .${prefix}__description {
16912
16925
  font-size: 14px;
16913
16926
  }
@@ -16927,13 +16940,11 @@ function rbHomepageHeroFullImageTemplate(spot, config) {
16927
16940
  ${GFONT_CORMORANT}
16928
16941
  ${STYLES$6(spot, config)}
16929
16942
  <div class="${prefix}">
16930
- <div class="${prefix}__content">
16931
- <div class="${prefix}__text">
16932
- ${spot.header ? `<h2 class="${prefix}__header">${spot.header}</h2>` : ''}
16933
- ${spot.description ? `<p class="${prefix}__description">${spot.description}</p>` : ''}
16934
- ${spot.ctaText ? `<span class="${prefix}__cta-button">${spot.ctaText}</span>` : ''}
16935
- </div>
16936
- </div>
16943
+ <div class="${prefix}__text">
16944
+ ${spot.header ? `<h2 class="${prefix}__header">${spot.header}</h2>` : ''}
16945
+ ${spot.description ? `<p class="${prefix}__description">${spot.description}</p>` : ''}
16946
+ ${spot.ctaText ? `<span class="${prefix}__cta-button">${spot.ctaText}</span>` : ''}
16947
+ </div>
16937
16948
  </div>
16938
16949
  `;
16939
16950
  }
@@ -16941,8 +16952,6 @@ function rbHomepageHeroFullImageTemplate(spot, config) {
16941
16952
  const STYLES$5 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextColor = textColor, primaryImage, mobilePrimaryImage = primaryImage, secondaryImage, mobileSecondaryImage = secondaryImage, }, { prefix }) => `
16942
16953
  <style>
16943
16954
  .${prefix} {
16944
- min-width: 320px;
16945
- min-height: 388px;
16946
16955
  width: 100%;
16947
16956
  height: 100%;
16948
16957
  display: block;
@@ -16954,7 +16963,7 @@ const STYLES$5 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextC
16954
16963
  width: 100%;
16955
16964
  height: 100%;
16956
16965
  display: flex;
16957
- flex-direction: column;
16966
+ flex-direction: column;
16958
16967
  background-color: transparent;
16959
16968
  gap: 5px;
16960
16969
  color: inherit;
@@ -17041,7 +17050,7 @@ const STYLES$5 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextC
17041
17050
  opacity: 0.8;
17042
17051
  }
17043
17052
 
17044
- @media (min-width: 640px) {
17053
+ @container (min-width: 640px) {
17045
17054
  .${prefix}__primary-image {
17046
17055
  background-image: url("${primaryImage}");
17047
17056
  }
@@ -17051,7 +17060,7 @@ const STYLES$5 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextC
17051
17060
  }
17052
17061
  }
17053
17062
 
17054
- @media (min-width: 768px) {
17063
+ @container (min-width: 768px) {
17055
17064
  .${prefix}__content {
17056
17065
  flex-direction: row;
17057
17066
  }
@@ -17076,6 +17085,39 @@ const STYLES$5 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextC
17076
17085
  width: 100%;
17077
17086
  height: 50%;
17078
17087
  }
17088
+ .${prefix}__header {
17089
+ font-size: 22px;
17090
+ }
17091
+ .${prefix}__description {
17092
+ font-size: 12px;
17093
+ }
17094
+ .${prefix}__cta-button {
17095
+ font-size: 12px;
17096
+ }
17097
+ }
17098
+
17099
+ @container (min-width: 1024px) {
17100
+ .${prefix}__header {
17101
+ font-size: 24px;
17102
+ }
17103
+ .${prefix}__description {
17104
+ font-size: 13px;
17105
+ }
17106
+ .${prefix}__cta-button {
17107
+ font-size: 13px;
17108
+ }
17109
+ }
17110
+
17111
+ @container (min-width: 1280px) {
17112
+ .${prefix}__header {
17113
+ font-size: 28px;
17114
+ }
17115
+ .${prefix}__description {
17116
+ font-size: 14px;
17117
+ }
17118
+ .${prefix}__cta-button {
17119
+ font-size: 14px;
17120
+ }
17079
17121
  }
17080
17122
  </style>
17081
17123
  `;
@@ -17105,23 +17147,15 @@ function rbHomepageHeroThreeTileTemplate(spot, config) {
17105
17147
  const STYLES$4 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextColor = textColor, primaryImage, mobilePrimaryImage = primaryImage, }, { prefix }) => `
17106
17148
  <style>
17107
17149
  .${prefix} {
17108
- min-width: 320px;
17109
- min-height: 388px;
17110
- width: 100%;
17111
- height: 100%;
17112
- display: block;
17113
- position: relative;
17114
- container-type: inline-size;
17115
- }
17116
-
17117
- .${prefix}__content {
17118
17150
  width: 100%;
17119
17151
  height: 100%;
17120
17152
  display: flex;
17121
- flex-direction: column-reverse;
17153
+ flex-direction: column-reverse;
17122
17154
  background-color: transparent;
17123
17155
  gap: 5px;
17124
17156
  cursor: pointer;
17157
+ container-type: inline-size;
17158
+ position: relative;
17125
17159
  }
17126
17160
 
17127
17161
  .${prefix}__image {
@@ -17166,7 +17200,7 @@ const STYLES$4 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextC
17166
17200
  font-style: normal;
17167
17201
  font-weight: 400;
17168
17202
  }
17169
-
17203
+
17170
17204
  .${prefix}__cta-button {
17171
17205
  color: ${ctaTextColor};
17172
17206
  background-color: transparent;
@@ -17187,25 +17221,57 @@ const STYLES$4 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextC
17187
17221
  opacity: 0.8;
17188
17222
  }
17189
17223
 
17190
- @media (min-width: 640px) {
17224
+ @container (min-width: 640px) {
17191
17225
  .${prefix}__image {
17192
17226
  background-image: url("${primaryImage}");
17193
17227
  }
17194
17228
  }
17195
- @media (min-width: 768px) {
17196
- .${prefix}__content {
17229
+
17230
+ @container (min-width: 768px) {
17231
+ .${prefix} {
17197
17232
  flex-direction: row;
17198
17233
  }
17199
-
17200
17234
  .${prefix}__image {
17201
17235
  width: 66.66666%;
17202
17236
  height: 100%;
17203
17237
  }
17204
-
17205
17238
  .${prefix}__text {
17206
17239
  width: 33.33333%;
17207
17240
  height: 100%;
17208
17241
  }
17242
+ .${prefix}__header {
17243
+ font-size: 22px;
17244
+ }
17245
+ .${prefix}__description {
17246
+ font-size: 12px;
17247
+ }
17248
+ .${prefix}__cta-button {
17249
+ font-size: 12px;
17250
+ }
17251
+ }
17252
+
17253
+ @container (min-width: 1024px) {
17254
+ .${prefix}__header {
17255
+ font-size: 24px;
17256
+ }
17257
+ .${prefix}__description {
17258
+ font-size: 13px;
17259
+ }
17260
+ .${prefix}__cta-button {
17261
+ font-size: 13px;
17262
+ }
17263
+ }
17264
+
17265
+ @container (min-width: 1280px) {
17266
+ .${prefix}__header {
17267
+ font-size: 28px;
17268
+ }
17269
+ .${prefix}__description {
17270
+ font-size: 14px;
17271
+ }
17272
+ .${prefix}__cta-button {
17273
+ font-size: 14px;
17274
+ }
17209
17275
  }
17210
17276
  </style>
17211
17277
  `;
@@ -17217,14 +17283,12 @@ function rbHomepageHeroTwoTileTemplate(spot, config) {
17217
17283
  ${GFONT_CORMORANT}
17218
17284
  ${STYLES$4(spot, config)}
17219
17285
  <div class="${prefix}">
17220
- <div class="${prefix}__content">
17221
- <div class="${prefix}__text">
17222
- ${spot.header ? `<h2 class="${prefix}__header">${spot.header}</h2>` : ''}
17223
- ${spot.description ? `<p class="${prefix}__description">${spot.description}</p>` : ''}
17224
- ${spot.ctaText ? `<span class="${prefix}__cta-button">${spot.ctaText}</span>` : ''}
17225
- </div>
17226
- <div class="${prefix}__image"></div>
17286
+ <div class="${prefix}__text">
17287
+ ${spot.header ? `<h2 class="${prefix}__header">${spot.header}</h2>` : ''}
17288
+ ${spot.description ? `<p class="${prefix}__description">${spot.description}</p>` : ''}
17289
+ ${spot.ctaText ? `<span class="${prefix}__cta-button">${spot.ctaText}</span>` : ''}
17227
17290
  </div>
17291
+ <div class="${prefix}__image"></div>
17228
17292
  </div>
17229
17293
  `;
17230
17294
  }
@@ -17233,12 +17297,7 @@ const STYLES$3 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
17233
17297
  const linearGradient = linearGradientColorStop(overlay || [], 'rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 30%');
17234
17298
  return `
17235
17299
  <style>
17236
- :host {
17237
- min-width: 320px;
17238
- min-height: 334px;
17239
- }
17240
-
17241
- .${prefix}__content {
17300
+ .${prefix} {
17242
17301
  width: 100%;
17243
17302
  height: 100%;
17244
17303
  display: flex;
@@ -17252,6 +17311,7 @@ const STYLES$3 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
17252
17311
  overflow: hidden;
17253
17312
  cursor: pointer;
17254
17313
  color: ${textColor};
17314
+ container-type: inline-size;
17255
17315
  }
17256
17316
 
17257
17317
  .${prefix}__text {
@@ -17298,17 +17358,17 @@ const STYLES$3 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
17298
17358
  font-weight: 400;
17299
17359
  }
17300
17360
 
17301
- .${prefix}__content:hover .${prefix}__cta-button {
17361
+ .${prefix}:hover .${prefix}__cta-button {
17302
17362
  background-color: ${ctaBorderColor.length === 7 ? `${ctaBorderColor}15` : `${ctaBorderColor}`};
17303
17363
  }
17304
17364
 
17305
- @media (min-width: 640px) {
17306
- .${prefix}__content {
17365
+ @container (min-width: 640px) {
17366
+ .${prefix} {
17307
17367
  background-image: linear-gradient(to top, ${linearGradient}), url("${primaryImage}");
17308
17368
  }
17309
17369
  }
17310
17370
 
17311
- @media (min-width: 768px) {
17371
+ @container (min-width: 768px) {
17312
17372
  .${prefix}__text {
17313
17373
  padding: 25px;
17314
17374
  }
@@ -17327,7 +17387,7 @@ const STYLES$3 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
17327
17387
  }
17328
17388
  }
17329
17389
 
17330
- @media (min-width: 1024px) {
17390
+ @container (min-width: 1024px) {
17331
17391
  .${prefix}__text {
17332
17392
  padding: 30px;
17333
17393
  }
@@ -17345,7 +17405,7 @@ const STYLES$3 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderCo
17345
17405
  }
17346
17406
  }
17347
17407
 
17348
- @media (min-width: 1280px) {
17408
+ @container (min-width: 1280px) {
17349
17409
  .${prefix}__cta-button {
17350
17410
  font-size: 14px;
17351
17411
  }
@@ -17360,7 +17420,7 @@ function rbLargeCategoryImageToutTemplate(spot, config) {
17360
17420
  ${GFONT_SOURCE_SANS_3}
17361
17421
  ${GFONT_CORMORANT}
17362
17422
  ${STYLES$3(spot, config)}
17363
- <div class="${prefix}__content">
17423
+ <div class="${prefix}">
17364
17424
  <div class="${prefix}__text">
17365
17425
  ${spot.header ? `<h2 class="${prefix}__header">${spot.header}</h2>` : ''}
17366
17426
  ${spot.description ? `<p class="${prefix}__description">${spot.description}</p>` : ''}
@@ -17374,12 +17434,7 @@ const STYLES$2 = ({ textColor = '#ffffff', primaryImage, mobilePrimaryImage = pr
17374
17434
  const linearGradient = linearGradientColorStop(overlay || [], 'rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 30%');
17375
17435
  return `
17376
17436
  <style>
17377
- :host {
17378
- min-width: 320px;
17379
- min-height: 150px;
17380
- }
17381
-
17382
- .${prefix}__content {
17437
+ .${prefix} {
17383
17438
  width: 100%;
17384
17439
  height: 100%;
17385
17440
  display: flex;
@@ -17392,6 +17447,7 @@ const STYLES$2 = ({ textColor = '#ffffff', primaryImage, mobilePrimaryImage = pr
17392
17447
  background-size: cover;
17393
17448
  background-position: center;
17394
17449
  background-repeat: no-repeat;
17450
+ container-type: inline-size;
17395
17451
  }
17396
17452
 
17397
17453
  .${prefix}__text {
@@ -17409,25 +17465,25 @@ const STYLES$2 = ({ textColor = '#ffffff', primaryImage, mobilePrimaryImage = pr
17409
17465
  margin: 0;
17410
17466
  }
17411
17467
 
17412
- @media (min-width: 640px) {
17413
- .${prefix}__content {
17468
+ @container (min-width: 640px) {
17469
+ .${prefix} {
17414
17470
  background-image: linear-gradient(to top, ${linearGradient}), url("${primaryImage}");
17415
17471
  }
17416
17472
  }
17417
17473
 
17418
- @media (min-width: 768px) {
17474
+ @container (min-width: 768px) {
17419
17475
  .${prefix}__header {
17420
17476
  font-size: 22px;
17421
17477
  }
17422
17478
  }
17423
17479
 
17424
- @media (min-width: 1024px) {
17480
+ @container (min-width: 1024px) {
17425
17481
  .${prefix}__header {
17426
17482
  font-size: 24px;
17427
17483
  }
17428
17484
  }
17429
17485
 
17430
- @media (min-width: 1280px) {
17486
+ @container (min-width: 1280px) {
17431
17487
  .${prefix}__header {
17432
17488
  font-size: 28px;
17433
17489
  }
@@ -17441,7 +17497,7 @@ function rbNavigationBannerTemplate(spot, config) {
17441
17497
  ${GFONT_PRECONNECT}
17442
17498
  ${GFONT_SOURCE_SANS_3}
17443
17499
  ${STYLES$2(spot, config)}
17444
- <div class="${prefix}__content">
17500
+ <div class="${prefix}">
17445
17501
  <div class="${prefix}__text">
17446
17502
  ${spot.header ? `<h2 class="${prefix}__header">${spot.header}</h2>` : ''}
17447
17503
  </div>
@@ -17453,12 +17509,7 @@ const STYLES$1 = ({ textColor = '#ffffff', primaryImage, mobilePrimaryImage = pr
17453
17509
  const linearGradient = linearGradientColorStop(overlay || [], 'rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 30%');
17454
17510
  return `
17455
17511
  <style>
17456
- :host {
17457
- min-width: 165px;
17458
- min-height: 300px;
17459
- }
17460
-
17461
- .${prefix}__content {
17512
+ .${prefix} {
17462
17513
  width: 100%;
17463
17514
  height: 100%;
17464
17515
  display: flex;
@@ -17471,6 +17522,7 @@ const STYLES$1 = ({ textColor = '#ffffff', primaryImage, mobilePrimaryImage = pr
17471
17522
  border-radius: 5px;
17472
17523
  overflow: hidden;
17473
17524
  cursor: pointer;
17525
+ container-type: inline-size;
17474
17526
  }
17475
17527
 
17476
17528
  .${prefix}__text {
@@ -17485,12 +17537,11 @@ const STYLES$1 = ({ textColor = '#ffffff', primaryImage, mobilePrimaryImage = pr
17485
17537
  font-family: "Source Sans 3", system-ui;
17486
17538
  font-style: normal;
17487
17539
  font-weight: 400;
17488
- line-height: normal;
17489
17540
  margin: 0;
17490
17541
  }
17491
17542
 
17492
- @media (min-width: 640px) {
17493
- .${prefix}__content {
17543
+ @container (min-width: 640px) {
17544
+ .${prefix} {
17494
17545
  background-image: linear-gradient(to top, ${linearGradient}), url("${primaryImage}");
17495
17546
  }
17496
17547
  }
@@ -17503,7 +17554,7 @@ function rbSmallCategoryImageToutTemplate(spot, config) {
17503
17554
  ${GFONT_PRECONNECT}
17504
17555
  ${GFONT_CORMORANT}
17505
17556
  ${STYLES$1(spot, config)}
17506
- <div class="${prefix}__content">
17557
+ <div class="${prefix}">
17507
17558
  <div class="${prefix}__text">
17508
17559
  ${spot.header ? `<h2 class="${prefix}__header">${spot.header}</h2>` : ''}
17509
17560
  </div>
@@ -17513,12 +17564,7 @@ function rbSmallCategoryImageToutTemplate(spot, config) {
17513
17564
 
17514
17565
  const STYLES = ({ textColor = '#000000', backgroundColor = 'transparent', primaryImage, mobilePrimaryImage = primaryImage, }, { prefix }) => `
17515
17566
  <style>
17516
- :host {
17517
- min-width: 165px;
17518
- min-height: 250px;
17519
- }
17520
-
17521
- .${prefix}__content {
17567
+ .${prefix} {
17522
17568
  width: 100%;
17523
17569
  height: 100%;
17524
17570
  background-color: ${backgroundColor};
@@ -17526,6 +17572,7 @@ const STYLES = ({ textColor = '#000000', backgroundColor = 'transparent', primar
17526
17572
  display: flex;
17527
17573
  flex-direction: column;
17528
17574
  border-radius: 5px;
17575
+ container-type: inline-size;
17529
17576
  }
17530
17577
 
17531
17578
  .${prefix}__image {
@@ -17557,11 +17604,10 @@ const STYLES = ({ textColor = '#000000', backgroundColor = 'transparent', primar
17557
17604
  font-family: "Source Sans 3", system-ui;
17558
17605
  font-style: normal;
17559
17606
  font-weight: 400;
17560
- line-height: normal;
17561
17607
  margin: 0;
17562
17608
  }
17563
17609
 
17564
- @media (min-width: 640px) {
17610
+ @container (min-width: 640px) {
17565
17611
  .${prefix}__image {
17566
17612
  background-image: url("${primaryImage}");
17567
17613
  }
@@ -17574,7 +17620,7 @@ function rbSmallDiscoverToutTemplate(spot, config) {
17574
17620
  ${GFONT_PRECONNECT}
17575
17621
  ${GFONT_CORMORANT}
17576
17622
  ${STYLES(spot, config)}
17577
- <div class="${prefix}__content">
17623
+ <div class="${prefix}">
17578
17624
  <div class="${prefix}__image"></div>
17579
17625
  <div class="${prefix}__text">
17580
17626
  ${spot.header ? `<h2 class="${prefix}__header">${spot.header}</h2>` : ''}
@@ -17755,8 +17801,6 @@ class EventService {
17755
17801
  element,
17756
17802
  impressionTracked: false,
17757
17803
  });
17758
- // Handle resize observer
17759
- // this.handleResizeObserver(placementId, spot, element);
17760
17804
  // Handle intersection observer
17761
17805
  this.handleIntersectionObserver(placementId, spot, element);
17762
17806
  // Attach click event listener
@@ -17794,35 +17838,6 @@ class EventService {
17794
17838
  this.activeSpots.delete(spotId);
17795
17839
  }
17796
17840
  }
17797
- // private handleResizeObserver(placementId: string, spot: ISpot, element: HTMLElement): void {
17798
- // // this.resizeObserver = new ResizeObserverService({
17799
- // // element,
17800
- // // maxSize: {
17801
- // // width: spot.width,
17802
- // // height: spot.height,
17803
- // // },
17804
- // // minScale: 0.25,
17805
- // // });
17806
- //
17807
- // const sizeChangedCb = (event: ISizeChangedEvent) => {
17808
- // // Publish spot resized event
17809
- // this.pubSub.publish(RMN_SPOT_EVENT.RESIZED, {
17810
- // placementId,
17811
- // spotId: spot.id,
17812
- // scale: event.detail.scale,
17813
- // previousDimensions: {
17814
- // width: event.detail.width,
17815
- // height: event.detail.height,
17816
- // },
17817
- // currentDimensions: {
17818
- // width: event.detail.newWidth,
17819
- // height: event.detail.newHeight,
17820
- // },
17821
- // });
17822
- // };
17823
- //
17824
- // element.addEventListener('spotSizeChanged', sizeChangedCb as EventListener);
17825
- // }
17826
17841
  handleIntersectionObserver(placementId, spot, element) {
17827
17842
  const spotIsVisibleCb = async () => {
17828
17843
  var _a, _b;
@@ -18031,6 +18046,7 @@ class LiquidCommerceRmnClient {
18031
18046
  const carouselElement = this.elementService.createCarouselElement({
18032
18047
  slides: carouselSlides,
18033
18048
  config: {
18049
+ fluid: config === null || config === void 0 ? void 0 : config.fluid,
18034
18050
  width: maxWidth,
18035
18051
  height: maxHeight,
18036
18052
  minScale: (_a = config === null || config === void 0 ? void 0 : config.minScale) !== null && _a !== void 0 ? _a : 0.25, // Scale down to 25% of the original size
@@ -18064,6 +18080,8 @@ class LiquidCommerceRmnClient {
18064
18080
  const spotElement = this.elementService.createSpotElement({
18065
18081
  content,
18066
18082
  config: {
18083
+ fluid: config === null || config === void 0 ? void 0 : config.fluid,
18084
+ spot: spot.spot,
18067
18085
  width: spot.width,
18068
18086
  height: spot.height,
18069
18087
  minScale: (_a = config === null || config === void 0 ? void 0 : config.minScale) !== null && _a !== void 0 ? _a : 0.25, // Scale down to 25% of the original size