@liquidcommercedev/rmn-sdk 1.4.4 → 1.4.5-beta.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.cjs +136 -143
- package/dist/index.esm.js +136 -143
- package/dist/types/modules/spot/html/constants/html.constant.d.ts +8 -0
- package/dist/types/modules/spot/html/constants/index.d.ts +1 -0
- package/dist/types/modules/spot/html/spot.element.service.d.ts +1 -1
- package/dist/types/modules/spot/spot.constant.d.ts +1 -0
- package/dist/types/modules/spot/spot.html.service.d.ts +1 -1
- package/dist/types/modules/spot/spot.interface.d.ts +1 -3
- package/dist/types/modules/spot/spot.selection.service.d.ts +0 -1
- package/dist/types/rmn-client.d.ts +2 -2
- package/package.json +1 -1
- package/umd/liquidcommerce-rmn-sdk.min.js +1 -1
- package/dist/types/modules/spot/html/spot.element.shadow-root.d.ts +0 -4
- package/dist/types/modules/spot/html/templates/iab/constants/fonts.constant.d.ts +0 -3
package/dist/index.esm.js
CHANGED
@@ -15150,60 +15150,56 @@ class AuthService extends BaseApi {
|
|
15150
15150
|
}
|
15151
15151
|
|
15152
15152
|
const SPOT_ELEMENT_TAG = 'spot-element';
|
15153
|
+
const SPOT_ELEMENT_SLOT_NAME = `${SPOT_ELEMENT_TAG}-custom-content`;
|
15153
15154
|
const SPOTS_SELECTION_API_PATH = '/spots/selection';
|
15154
|
-
const SPOT_EVENT_API_PATH = '/spots/event';
|
15155
15155
|
|
15156
|
-
const
|
15156
|
+
const GFONT_PRECONNECT = `
|
15157
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
15158
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
15159
|
+
`;
|
15160
|
+
const GFONT_SOURCE_SANS_3 = `
|
15161
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap">
|
15162
|
+
`;
|
15163
|
+
const GFONT_CORMORANT = `
|
15164
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Cormorant:ital,wght@0,300..700;1,300..700&family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap">
|
15165
|
+
`;
|
15166
|
+
const SPOT_ELEMENT_TEMPLATE = (width, height, hasCustomContent) => {
|
15157
15167
|
const style = document.createElement('style');
|
15168
|
+
style.textContent = `
|
15169
|
+
:host {
|
15170
|
+
display: block;
|
15171
|
+
position: relative;
|
15172
|
+
container-type: inline-size;
|
15173
|
+
overflow: hidden;
|
15174
|
+
}
|
15175
|
+
:host([fluid="true"]) {
|
15176
|
+
width: 100%;
|
15177
|
+
height: 100%;
|
15178
|
+
}
|
15179
|
+
:host([fluid="false"]) {
|
15180
|
+
width: ${width}px;
|
15181
|
+
height: ${height}px;
|
15182
|
+
}
|
15183
|
+
`;
|
15158
15184
|
const wrapper = document.createElement('div');
|
15159
15185
|
wrapper.className = 'wrapper';
|
15160
|
-
|
15161
|
-
|
15162
|
-
|
15163
|
-
|
15164
|
-
|
15165
|
-
|
15166
|
-
|
15167
|
-
:
|
15168
|
-
|
15169
|
-
|
15170
|
-
|
15171
|
-
|
15172
|
-
width: ${width}px;
|
15173
|
-
height: ${height}px;
|
15174
|
-
}
|
15186
|
+
const slot = document.createElement('slot');
|
15187
|
+
slot.name = SPOT_ELEMENT_SLOT_NAME;
|
15188
|
+
if (!hasCustomContent) {
|
15189
|
+
style.textContent += `
|
15190
|
+
:host .wrapper {
|
15191
|
+
position: absolute;
|
15192
|
+
top: 0;
|
15193
|
+
left: 0;
|
15194
|
+
width: 100%;
|
15195
|
+
height: 100%;
|
15196
|
+
overflow: hidden;
|
15197
|
+
}
|
15175
15198
|
`;
|
15176
|
-
if (hasCustomHtmlElement) {
|
15177
|
-
return { style, wrapper };
|
15178
15199
|
}
|
15179
|
-
style
|
15180
|
-
.wrapper {
|
15181
|
-
position: absolute;
|
15182
|
-
top: 0;
|
15183
|
-
left: 0;
|
15184
|
-
width: 100%;
|
15185
|
-
height: 100%;
|
15186
|
-
overflow: hidden;
|
15187
|
-
}
|
15188
|
-
`;
|
15189
|
-
return { style, wrapper };
|
15200
|
+
return { style, wrapper, slot };
|
15190
15201
|
};
|
15191
15202
|
|
15192
|
-
const GFONT_PRECONNECT = () => `
|
15193
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
15194
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
15195
|
-
`;
|
15196
|
-
const GFONT_SOURCE_SANS_3 = () => `
|
15197
|
-
<link rel="stylesheet"
|
15198
|
-
href="https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap"
|
15199
|
-
>
|
15200
|
-
`;
|
15201
|
-
const GFONT_CORMORANT = () => `
|
15202
|
-
<link rel="stylesheet"
|
15203
|
-
href="https://fonts.googleapis.com/css2?family=Cormorant:ital,wght@0,300..700;1,300..700&family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap"
|
15204
|
-
>
|
15205
|
-
`;
|
15206
|
-
|
15207
15203
|
const STYLES$i = ({ primaryImage, secondaryImage }) => `
|
15208
15204
|
<style>
|
15209
15205
|
.content {
|
@@ -15299,9 +15295,9 @@ const STYLES$i = ({ primaryImage, secondaryImage }) => `
|
|
15299
15295
|
`;
|
15300
15296
|
function billboardV1Template(spot) {
|
15301
15297
|
return `
|
15302
|
-
${GFONT_PRECONNECT
|
15303
|
-
${GFONT_SOURCE_SANS_3
|
15304
|
-
${GFONT_CORMORANT
|
15298
|
+
${GFONT_PRECONNECT}
|
15299
|
+
${GFONT_SOURCE_SANS_3}
|
15300
|
+
${GFONT_CORMORANT}
|
15305
15301
|
${STYLES$i(spot)}
|
15306
15302
|
<div class="content">
|
15307
15303
|
<div class="big-image"></div>
|
@@ -15388,9 +15384,9 @@ const STYLES$h = ({ primaryImage }) => `
|
|
15388
15384
|
`;
|
15389
15385
|
function billboardV2Template(spot) {
|
15390
15386
|
return `
|
15391
|
-
${GFONT_PRECONNECT
|
15392
|
-
${GFONT_SOURCE_SANS_3
|
15393
|
-
${GFONT_CORMORANT
|
15387
|
+
${GFONT_PRECONNECT}
|
15388
|
+
${GFONT_SOURCE_SANS_3}
|
15389
|
+
${GFONT_CORMORANT}
|
15394
15390
|
${STYLES$h(spot)}
|
15395
15391
|
<div class="content">
|
15396
15392
|
<div class="text-container">
|
@@ -15489,9 +15485,9 @@ const STYLES$g = ({ primaryImage }) => `
|
|
15489
15485
|
`;
|
15490
15486
|
function billboardV3Template(spot) {
|
15491
15487
|
return `
|
15492
|
-
${GFONT_PRECONNECT
|
15493
|
-
${GFONT_SOURCE_SANS_3
|
15494
|
-
${GFONT_CORMORANT
|
15488
|
+
${GFONT_PRECONNECT}
|
15489
|
+
${GFONT_SOURCE_SANS_3}
|
15490
|
+
${GFONT_CORMORANT}
|
15495
15491
|
${STYLES$g(spot)}
|
15496
15492
|
<div class="content">
|
15497
15493
|
<div class="text">
|
@@ -15533,9 +15529,9 @@ const STYLES$f = () => `
|
|
15533
15529
|
`;
|
15534
15530
|
function inTextV1Template(spot) {
|
15535
15531
|
return `
|
15536
|
-
${GFONT_PRECONNECT
|
15537
|
-
${GFONT_SOURCE_SANS_3
|
15538
|
-
${GFONT_CORMORANT
|
15532
|
+
${GFONT_PRECONNECT}
|
15533
|
+
${GFONT_SOURCE_SANS_3}
|
15534
|
+
${GFONT_CORMORANT}
|
15539
15535
|
${STYLES$f()}
|
15540
15536
|
<div class="content">
|
15541
15537
|
<span class="header">${spot.header}</span>
|
@@ -15623,9 +15619,9 @@ const STYLES$e = ({ primaryImage }) => `
|
|
15623
15619
|
`;
|
15624
15620
|
function largeLeaderboardV1Template(spot) {
|
15625
15621
|
return `
|
15626
|
-
${GFONT_PRECONNECT
|
15627
|
-
${GFONT_SOURCE_SANS_3
|
15628
|
-
${GFONT_CORMORANT
|
15622
|
+
${GFONT_PRECONNECT}
|
15623
|
+
${GFONT_SOURCE_SANS_3}
|
15624
|
+
${GFONT_CORMORANT}
|
15629
15625
|
${STYLES$e(spot)}
|
15630
15626
|
<div class="content">
|
15631
15627
|
<div class="text">
|
@@ -15710,9 +15706,9 @@ const STYLES$d = ({ primaryImage }) => `
|
|
15710
15706
|
`;
|
15711
15707
|
function largeLeaderboardV2Template(spot) {
|
15712
15708
|
return `
|
15713
|
-
${GFONT_PRECONNECT
|
15714
|
-
${GFONT_SOURCE_SANS_3
|
15715
|
-
${GFONT_CORMORANT
|
15709
|
+
${GFONT_PRECONNECT}
|
15710
|
+
${GFONT_SOURCE_SANS_3}
|
15711
|
+
${GFONT_CORMORANT}
|
15716
15712
|
${STYLES$d(spot)}
|
15717
15713
|
<div class="content">
|
15718
15714
|
<div class="text">
|
@@ -15769,9 +15765,9 @@ const STYLES$c = ({ primaryImage }) => `
|
|
15769
15765
|
`;
|
15770
15766
|
function largeRectangleV1Template(spot) {
|
15771
15767
|
return `
|
15772
|
-
${GFONT_PRECONNECT
|
15773
|
-
${GFONT_SOURCE_SANS_3
|
15774
|
-
${GFONT_CORMORANT
|
15768
|
+
${GFONT_PRECONNECT}
|
15769
|
+
${GFONT_SOURCE_SANS_3}
|
15770
|
+
${GFONT_CORMORANT}
|
15775
15771
|
${STYLES$c(spot)}
|
15776
15772
|
<div class="content">
|
15777
15773
|
<div class="image"></div>
|
@@ -15867,9 +15863,9 @@ const STYLES$b = ({ primaryImage }) => `
|
|
15867
15863
|
`;
|
15868
15864
|
function squareV1Template(spot) {
|
15869
15865
|
return `
|
15870
|
-
${GFONT_PRECONNECT
|
15871
|
-
${GFONT_SOURCE_SANS_3
|
15872
|
-
${GFONT_CORMORANT
|
15866
|
+
${GFONT_PRECONNECT}
|
15867
|
+
${GFONT_SOURCE_SANS_3}
|
15868
|
+
${GFONT_CORMORANT}
|
15873
15869
|
${STYLES$b(spot)}
|
15874
15870
|
<div class="content">
|
15875
15871
|
<div class="text">
|
@@ -15922,9 +15918,9 @@ const STYLES$a = ({ primaryImage }) => `
|
|
15922
15918
|
`;
|
15923
15919
|
function squareV2Template(spot) {
|
15924
15920
|
return `
|
15925
|
-
${GFONT_PRECONNECT
|
15926
|
-
${GFONT_SOURCE_SANS_3
|
15927
|
-
${GFONT_CORMORANT
|
15921
|
+
${GFONT_PRECONNECT}
|
15922
|
+
${GFONT_SOURCE_SANS_3}
|
15923
|
+
${GFONT_CORMORANT}
|
15928
15924
|
${STYLES$a(spot)}
|
15929
15925
|
<div class="content">
|
15930
15926
|
<span class="header">${spot.header}</span>
|
@@ -15987,9 +15983,9 @@ const STYLES$9 = ({ primaryImage }) => `
|
|
15987
15983
|
`;
|
15988
15984
|
function verticalRectangleV1Template(spot) {
|
15989
15985
|
return `
|
15990
|
-
${GFONT_PRECONNECT
|
15991
|
-
${GFONT_SOURCE_SANS_3
|
15992
|
-
${GFONT_CORMORANT
|
15986
|
+
${GFONT_PRECONNECT}
|
15987
|
+
${GFONT_SOURCE_SANS_3}
|
15988
|
+
${GFONT_CORMORANT}
|
15993
15989
|
${STYLES$9(spot)}
|
15994
15990
|
<div class="content">
|
15995
15991
|
<div class="text">
|
@@ -16051,7 +16047,7 @@ function rbCollectionBannerWithoutTextBlockTemplate(spot) {
|
|
16051
16047
|
`;
|
16052
16048
|
}
|
16053
16049
|
|
16054
|
-
const STYLES$6 = ({ textColor = '#
|
16050
|
+
const STYLES$6 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderColor = ctaTextColor, primaryImage, mobilePrimaryImage = primaryImage, }) => `
|
16055
16051
|
<style>
|
16056
16052
|
:host {
|
16057
16053
|
min-width: 320px;
|
@@ -16169,9 +16165,9 @@ const STYLES$6 = ({ textColor = '#fff', ctaTextColor = textColor, ctaBorderColor
|
|
16169
16165
|
`;
|
16170
16166
|
function rbHomepageHeroFullImageTemplate(spot) {
|
16171
16167
|
return `
|
16172
|
-
${GFONT_PRECONNECT
|
16173
|
-
${GFONT_SOURCE_SANS_3
|
16174
|
-
${GFONT_CORMORANT
|
16168
|
+
${GFONT_PRECONNECT}
|
16169
|
+
${GFONT_SOURCE_SANS_3}
|
16170
|
+
${GFONT_CORMORANT}
|
16175
16171
|
${STYLES$6(spot)}
|
16176
16172
|
<div class="content">
|
16177
16173
|
<div class="text">
|
@@ -16336,9 +16332,9 @@ const STYLES$5 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextC
|
|
16336
16332
|
`;
|
16337
16333
|
function rbHomepageHeroThreeTileTemplate(spot) {
|
16338
16334
|
return `
|
16339
|
-
${GFONT_PRECONNECT
|
16340
|
-
${GFONT_SOURCE_SANS_3
|
16341
|
-
${GFONT_CORMORANT
|
16335
|
+
${GFONT_PRECONNECT}
|
16336
|
+
${GFONT_SOURCE_SANS_3}
|
16337
|
+
${GFONT_CORMORANT}
|
16342
16338
|
${STYLES$5(spot)}
|
16343
16339
|
<div class="content">
|
16344
16340
|
<div class="primary-image"></div>
|
@@ -16479,9 +16475,9 @@ const STYLES$4 = ({ textColor = '#212121', backgroundColor = '#e8e6de', ctaTextC
|
|
16479
16475
|
`;
|
16480
16476
|
function rbHomepageHeroTwoTileTemplate(spot) {
|
16481
16477
|
return `
|
16482
|
-
${GFONT_PRECONNECT
|
16483
|
-
${GFONT_SOURCE_SANS_3
|
16484
|
-
${GFONT_CORMORANT
|
16478
|
+
${GFONT_PRECONNECT}
|
16479
|
+
${GFONT_SOURCE_SANS_3}
|
16480
|
+
${GFONT_CORMORANT}
|
16485
16481
|
${STYLES$4(spot)}
|
16486
16482
|
<div class="content">
|
16487
16483
|
<div class="text">
|
@@ -16494,7 +16490,7 @@ function rbHomepageHeroTwoTileTemplate(spot) {
|
|
16494
16490
|
`;
|
16495
16491
|
}
|
16496
16492
|
|
16497
|
-
const STYLES$3 = ({ textColor = '#
|
16493
|
+
const STYLES$3 = ({ textColor = '#ffffff', ctaTextColor = textColor, ctaBorderColor = ctaTextColor, primaryImage, mobilePrimaryImage = primaryImage, }) => `
|
16498
16494
|
<style>
|
16499
16495
|
:host {
|
16500
16496
|
min-width: 320px;
|
@@ -16601,9 +16597,9 @@ const STYLES$3 = ({ textColor = '#fff', ctaTextColor = textColor, ctaBorderColor
|
|
16601
16597
|
`;
|
16602
16598
|
function rbLargeCategoryImageToutTemplate(spot) {
|
16603
16599
|
return `
|
16604
|
-
${GFONT_PRECONNECT
|
16605
|
-
${GFONT_SOURCE_SANS_3
|
16606
|
-
${GFONT_CORMORANT
|
16600
|
+
${GFONT_PRECONNECT}
|
16601
|
+
${GFONT_SOURCE_SANS_3}
|
16602
|
+
${GFONT_CORMORANT}
|
16607
16603
|
${STYLES$3(spot)}
|
16608
16604
|
<div class="content">
|
16609
16605
|
<div class="text">
|
@@ -16615,7 +16611,7 @@ function rbLargeCategoryImageToutTemplate(spot) {
|
|
16615
16611
|
`;
|
16616
16612
|
}
|
16617
16613
|
|
16618
|
-
const STYLES$2 = ({ textColor = '#
|
16614
|
+
const STYLES$2 = ({ textColor = '#ffffff', primaryImage, mobilePrimaryImage = primaryImage, }) => `
|
16619
16615
|
<style>
|
16620
16616
|
:host {
|
16621
16617
|
min-width: 320px;
|
@@ -16673,8 +16669,8 @@ const STYLES$2 = ({ textColor = '#fff', primaryImage, mobilePrimaryImage = prima
|
|
16673
16669
|
`;
|
16674
16670
|
function rbNavigationBannerTemplate(spot) {
|
16675
16671
|
return `
|
16676
|
-
${GFONT_PRECONNECT
|
16677
|
-
${GFONT_SOURCE_SANS_3
|
16672
|
+
${GFONT_PRECONNECT}
|
16673
|
+
${GFONT_SOURCE_SANS_3}
|
16678
16674
|
${STYLES$2(spot)}
|
16679
16675
|
<div class="content">
|
16680
16676
|
<div class="text">
|
@@ -16684,7 +16680,7 @@ function rbNavigationBannerTemplate(spot) {
|
|
16684
16680
|
`;
|
16685
16681
|
}
|
16686
16682
|
|
16687
|
-
const STYLES$1 = ({ textColor = '#
|
16683
|
+
const STYLES$1 = ({ textColor = '#ffffff', primaryImage, mobilePrimaryImage = primaryImage, }) => `
|
16688
16684
|
<style>
|
16689
16685
|
:host {
|
16690
16686
|
min-width: 165px;
|
@@ -16716,6 +16712,7 @@ const STYLES$1 = ({ textColor = '#fff', primaryImage, mobilePrimaryImage = prima
|
|
16716
16712
|
font-style: normal;
|
16717
16713
|
font-weight: 400;
|
16718
16714
|
line-height: normal;
|
16715
|
+
margin: 0;
|
16719
16716
|
}
|
16720
16717
|
@media (min-width: 640px) {
|
16721
16718
|
.content {
|
@@ -16726,8 +16723,8 @@ const STYLES$1 = ({ textColor = '#fff', primaryImage, mobilePrimaryImage = prima
|
|
16726
16723
|
`;
|
16727
16724
|
function rbSmallCategoryImageToutTemplate(spot) {
|
16728
16725
|
return `
|
16729
|
-
${GFONT_PRECONNECT
|
16730
|
-
${GFONT_CORMORANT
|
16726
|
+
${GFONT_PRECONNECT}
|
16727
|
+
${GFONT_CORMORANT}
|
16731
16728
|
${STYLES$1(spot)}
|
16732
16729
|
<div class="content">
|
16733
16730
|
<div class="text">
|
@@ -16737,7 +16734,7 @@ function rbSmallCategoryImageToutTemplate(spot) {
|
|
16737
16734
|
`;
|
16738
16735
|
}
|
16739
16736
|
|
16740
|
-
const STYLES = ({ textColor = '#
|
16737
|
+
const STYLES = ({ textColor = '#000000', backgroundColor = 'transparent', primaryImage, mobilePrimaryImage = primaryImage, }) => `
|
16741
16738
|
<style>
|
16742
16739
|
:host {
|
16743
16740
|
min-width: 165px;
|
@@ -16780,6 +16777,7 @@ const STYLES = ({ textColor = '#000', backgroundColor = 'transparent', primaryIm
|
|
16780
16777
|
font-style: normal;
|
16781
16778
|
font-weight: 400;
|
16782
16779
|
line-height: normal;
|
16780
|
+
margin: 0;
|
16783
16781
|
}
|
16784
16782
|
@media (min-width: 640px) {
|
16785
16783
|
.image {
|
@@ -16790,8 +16788,8 @@ const STYLES = ({ textColor = '#000', backgroundColor = 'transparent', primaryIm
|
|
16790
16788
|
`;
|
16791
16789
|
function rbSmallDiscoverToutTemplate(spot) {
|
16792
16790
|
return `
|
16793
|
-
${GFONT_PRECONNECT
|
16794
|
-
${GFONT_CORMORANT
|
16791
|
+
${GFONT_PRECONNECT}
|
16792
|
+
${GFONT_CORMORANT}
|
16795
16793
|
${STYLES(spot)}
|
16796
16794
|
<div class="content">
|
16797
16795
|
<div class="image"></div>
|
@@ -16887,16 +16885,20 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
|
|
16887
16885
|
class CustomSpotElement extends HTMLElement {
|
16888
16886
|
constructor() {
|
16889
16887
|
super();
|
16888
|
+
this.hasCustomContent = false;
|
16889
|
+
this.handleClick = this.handleClick.bind(this);
|
16890
16890
|
this.attachShadow({ mode: 'open' });
|
16891
16891
|
}
|
16892
16892
|
connectedCallback() {
|
16893
|
-
this.
|
16893
|
+
this.hasCustomContent = Boolean(this.customContent);
|
16894
|
+
this.addEventListener('click', this.handleClick);
|
16894
16895
|
this.setupIntersectionObserver();
|
16895
16896
|
this.render();
|
16896
16897
|
}
|
16897
16898
|
disconnectedCallback() {
|
16898
16899
|
var _a;
|
16899
16900
|
(_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
|
16901
|
+
this.removeEventListener('click', this.handleClick);
|
16900
16902
|
}
|
16901
16903
|
attributeChangedCallback(_name, oldValue, newValue) {
|
16902
16904
|
if (oldValue !== newValue) {
|
@@ -16906,14 +16908,26 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
|
|
16906
16908
|
render() {
|
16907
16909
|
if (!this.shadowRoot || !this.data)
|
16908
16910
|
return;
|
16909
|
-
const { style, wrapper } =
|
16910
|
-
|
16911
|
-
|
16911
|
+
const { style, wrapper, slot } = SPOT_ELEMENT_TEMPLATE(this.data.width, this.data.height, this.hasCustomContent);
|
16912
|
+
this.shadowRoot.replaceChildren(style, slot);
|
16913
|
+
if (this.hasCustomContent) {
|
16914
|
+
this.setCustomContent();
|
16912
16915
|
}
|
16913
|
-
|
16916
|
+
if (!this.hasCustomContent) {
|
16914
16917
|
wrapper.innerHTML = GET_SPOT_TEMPLATE_HTML_STRING(this.data);
|
16918
|
+
this.shadowRoot.appendChild(wrapper);
|
16915
16919
|
}
|
16916
|
-
|
16920
|
+
}
|
16921
|
+
setCustomContent() {
|
16922
|
+
const wrapper = document.createElement('div');
|
16923
|
+
wrapper.setAttribute('slot', SPOT_ELEMENT_SLOT_NAME);
|
16924
|
+
if (typeof this.customContent === 'string') {
|
16925
|
+
wrapper.innerHTML = this.customContent;
|
16926
|
+
}
|
16927
|
+
if (this.customContent instanceof HTMLElement) {
|
16928
|
+
wrapper.appendChild(this.customContent);
|
16929
|
+
}
|
16930
|
+
this.appendChild(wrapper);
|
16917
16931
|
}
|
16918
16932
|
setupIntersectionObserver() {
|
16919
16933
|
const options = {
|
@@ -16930,47 +16944,37 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
|
|
16930
16944
|
}, options);
|
16931
16945
|
this.observer.observe(this);
|
16932
16946
|
}
|
16947
|
+
handleClick() {
|
16948
|
+
this.registerEvent(RMN_SPOT_EVENT.CLICK);
|
16949
|
+
}
|
16933
16950
|
async registerEvent(event) {
|
16934
16951
|
var _a, _b;
|
16935
16952
|
if (!this.data)
|
16936
16953
|
return;
|
16937
16954
|
const shouldRedirectOnClick = this.getAttribute(ENUM_SPOT_ELEMENT_ATTRIBUTE.REDIRECT_ON_CLICK) === 'true';
|
16938
|
-
const
|
16955
|
+
const eventUrl = (_b = (_a = this.data.events.find((e) => e.event === event)) === null || _a === void 0 ? void 0 : _a.url) !== null && _b !== void 0 ? _b : '';
|
16939
16956
|
try {
|
16940
16957
|
const options = {
|
16941
16958
|
method: 'POST',
|
16942
|
-
redirect: 'manual',
|
16959
|
+
redirect: event === RMN_SPOT_EVENT.CLICK && shouldRedirectOnClick ? 'follow' : 'manual',
|
16943
16960
|
};
|
16944
|
-
|
16945
|
-
options.redirect = 'follow';
|
16946
|
-
}
|
16947
|
-
const normalizedUrl = this.normalizeUrl(url);
|
16948
|
-
const response = await fetch(normalizedUrl, options);
|
16961
|
+
const response = await fetch(eventUrl, options);
|
16949
16962
|
if (response.ok && event === RMN_SPOT_EVENT.CLICK && shouldRedirectOnClick) {
|
16950
|
-
window.location.href = this.getRedirectUrlFromPayload(
|
16963
|
+
window.location.href = this.getRedirectUrlFromPayload(eventUrl);
|
16951
16964
|
}
|
16952
16965
|
}
|
16953
16966
|
catch (error) {
|
16954
16967
|
console.error(`Rmn error sending ${event} event:`, error);
|
16955
16968
|
}
|
16956
16969
|
}
|
16957
|
-
normalizeUrl(url) {
|
16958
|
-
if (!this.data)
|
16959
|
-
return url;
|
16960
|
-
const rmnUrl = `${SDK_CONFIG.url[this.data.env]}/api${SPOT_EVENT_API_PATH}`;
|
16961
|
-
return url.replace(/https?:\/\/[^/]+\/[^?]+/, `${rmnUrl}`);
|
16962
|
-
}
|
16963
16970
|
getRedirectUrlFromPayload(url) {
|
16964
|
-
var _a;
|
16971
|
+
var _a, _b;
|
16965
16972
|
const base64String = (_a = new URL(url).searchParams.get('e')) !== null && _a !== void 0 ? _a : '';
|
16966
16973
|
try {
|
16967
|
-
const
|
16968
|
-
|
16969
|
-
return obj.ur;
|
16970
|
-
}
|
16971
|
-
return '';
|
16974
|
+
const data = JSON.parse(atob(base64String));
|
16975
|
+
return (_b = data.ur) !== null && _b !== void 0 ? _b : '';
|
16972
16976
|
}
|
16973
|
-
catch (
|
16977
|
+
catch (_c) {
|
16974
16978
|
return '';
|
16975
16979
|
}
|
16976
16980
|
}
|
@@ -16991,7 +16995,7 @@ class SpotHtmlService {
|
|
16991
16995
|
* @param {ISpot} spot - The spot data.
|
16992
16996
|
* @param {ICreateSpotElementConfig} config - The configuration object.
|
16993
16997
|
* @param {ICreateSpotElementConfig.fluid} config.fluid - If the spot should be fluid or not.
|
16994
|
-
* @param {ICreateSpotElementConfig.
|
16998
|
+
* @param {ICreateSpotElementConfig.customContent} config.customContent - Use a custom html element/string.
|
16995
16999
|
* @param {ICreateSpotElementConfig.redirectOnClick} config.redirectOnClick - If the spot should redirect on click.
|
16996
17000
|
*
|
16997
17001
|
* @return {HTMLElement | null} - The spot html element or null if the browser environment is not available.
|
@@ -17010,8 +17014,9 @@ class SpotHtmlService {
|
|
17010
17014
|
element.setAttribute(ENUM_SPOT_ELEMENT_ATTRIBUTE.REDIRECT_ON_CLICK, shouldRedirectOnClick.toString());
|
17011
17015
|
// Share the spot data with the element
|
17012
17016
|
element.data = spot;
|
17013
|
-
|
17014
|
-
|
17017
|
+
// Set custom content
|
17018
|
+
if (config === null || config === void 0 ? void 0 : config.customContent) {
|
17019
|
+
element.customContent = config.customContent;
|
17015
17020
|
}
|
17016
17021
|
return element;
|
17017
17022
|
}
|
@@ -17052,22 +17057,10 @@ class SpotSelectionService extends BaseApi {
|
|
17052
17057
|
if (isOk && val && val.data && (val === null || val === void 0 ? void 0 : val.refresh.token)) {
|
17053
17058
|
this.authInfo.authenticated = true;
|
17054
17059
|
this.authInfo.token = val.refresh.token;
|
17055
|
-
|
17056
|
-
spots = this.addEnvToSpotData(spots, this.authInfo.env);
|
17057
|
-
return spots;
|
17060
|
+
return val.data.spots;
|
17058
17061
|
}
|
17059
17062
|
throw new Error('Spot selection response was not successful');
|
17060
17063
|
}
|
17061
|
-
addEnvToSpotData(spots, env) {
|
17062
|
-
for (const key in spots) {
|
17063
|
-
if (spots[key]) {
|
17064
|
-
spots[key].forEach((spot) => {
|
17065
|
-
spot.env = env;
|
17066
|
-
});
|
17067
|
-
}
|
17068
|
-
}
|
17069
|
-
return spots;
|
17070
|
-
}
|
17071
17064
|
}
|
17072
17065
|
|
17073
17066
|
class LiquidCommerceRmnClient {
|
@@ -17095,7 +17088,7 @@ class LiquidCommerceRmnClient {
|
|
17095
17088
|
* @param {ISpot} spot - The spot data.
|
17096
17089
|
* @param {ICreateSpotElementConfig} config - The configuration object.
|
17097
17090
|
* @param {ICreateSpotElementConfig.fluid} config.fluid - If the spot should be fluid or not.
|
17098
|
-
* @param {ICreateSpotElementConfig.
|
17091
|
+
* @param {ICreateSpotElementConfig.customContent} config.customContent - Use a custom html element/string.
|
17099
17092
|
* @param {ICreateSpotElementConfig.redirectOnClick} config.redirectOnClick - If the spot should redirect on click.
|
17100
17093
|
*
|
17101
17094
|
* @return {HTMLElement | null} - The spot html element or null if the browser environment is not available.
|
@@ -17127,7 +17120,7 @@ async function RmnClient(apiKey, config) {
|
|
17127
17120
|
* @param {ISpot} spot - The spot data.
|
17128
17121
|
* @param {ICreateSpotElementConfig} config - The configuration object.
|
17129
17122
|
* @param {ICreateSpotElementConfig.fluid} config.fluid - If the spot should be fluid or not.
|
17130
|
-
* @param {ICreateSpotElementConfig.
|
17123
|
+
* @param {ICreateSpotElementConfig.customContent} config.customContent - Use a custom html element/string.
|
17131
17124
|
* @param {ICreateSpotElementConfig.redirectOnClick} config.redirectOnClick - If the spot should redirect on click.
|
17132
17125
|
*
|
17133
17126
|
* @return {HTMLElement | null} - The spot html element or null if the browser environment is not available.
|
@@ -0,0 +1,8 @@
|
|
1
|
+
export declare const GFONT_PRECONNECT = "\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n";
|
2
|
+
export declare const GFONT_SOURCE_SANS_3 = "\n <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap\">\n";
|
3
|
+
export declare const GFONT_CORMORANT = "\n <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Cormorant:ital,wght@0,300..700;1,300..700&family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap\">\n";
|
4
|
+
export declare const SPOT_ELEMENT_TEMPLATE: (width: number, height: number, hasCustomContent: boolean) => {
|
5
|
+
style: HTMLStyleElement;
|
6
|
+
wrapper: HTMLDivElement;
|
7
|
+
slot: HTMLSlotElement;
|
8
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './html.constant';
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { ISpot } from 'types';
|
2
2
|
export interface ICustomSpotElement extends HTMLElement {
|
3
3
|
data?: ISpot;
|
4
|
-
|
4
|
+
customContent?: HTMLElement | string;
|
5
5
|
}
|
6
6
|
declare let SpotElement: new () => HTMLElement;
|
7
7
|
export { SpotElement };
|
@@ -9,7 +9,7 @@ export declare class SpotHtmlService implements ISpotHtmlService {
|
|
9
9
|
* @param {ISpot} spot - The spot data.
|
10
10
|
* @param {ICreateSpotElementConfig} config - The configuration object.
|
11
11
|
* @param {ICreateSpotElementConfig.fluid} config.fluid - If the spot should be fluid or not.
|
12
|
-
* @param {ICreateSpotElementConfig.
|
12
|
+
* @param {ICreateSpotElementConfig.customContent} config.customContent - Use a custom html element/string.
|
13
13
|
* @param {ICreateSpotElementConfig.redirectOnClick} config.redirectOnClick - If the spot should redirect on click.
|
14
14
|
*
|
15
15
|
* @return {HTMLElement | null} - The spot html element or null if the browser environment is not available.
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import type { RMN_ENV } from './../../enums';
|
2
1
|
import type { RMN_SPOT_EVENT, RMN_SPOT_TYPE } from './spot.enum';
|
3
2
|
import type { RmnFilterType, RmnSpotType, SpotIdentifierType, SpotVariantType } from './spot.type';
|
4
3
|
export interface ISpotSelectionParams {
|
@@ -29,11 +28,10 @@ export interface ISpot {
|
|
29
28
|
mobilePrimaryImage?: string;
|
30
29
|
mobileSecondaryImage?: string;
|
31
30
|
productUpcs?: string[];
|
32
|
-
env: RMN_ENV;
|
33
31
|
}
|
34
32
|
export interface ICreateSpotElementConfig {
|
35
33
|
fluid?: boolean;
|
36
|
-
|
34
|
+
customContent?: HTMLElement | string;
|
37
35
|
redirectOnClick?: boolean;
|
38
36
|
}
|
39
37
|
export type ISpots = Record<SpotIdentifierType, ISpot[]>;
|
@@ -23,7 +23,7 @@ export declare class LiquidCommerceRmnClient implements IRmnClient {
|
|
23
23
|
* @param {ISpot} spot - The spot data.
|
24
24
|
* @param {ICreateSpotElementConfig} config - The configuration object.
|
25
25
|
* @param {ICreateSpotElementConfig.fluid} config.fluid - If the spot should be fluid or not.
|
26
|
-
* @param {ICreateSpotElementConfig.
|
26
|
+
* @param {ICreateSpotElementConfig.customContent} config.customContent - Use a custom html element/string.
|
27
27
|
* @param {ICreateSpotElementConfig.redirectOnClick} config.redirectOnClick - If the spot should redirect on click.
|
28
28
|
*
|
29
29
|
* @return {HTMLElement | null} - The spot html element or null if the browser environment is not available.
|
@@ -49,7 +49,7 @@ declare function RmnClient(apiKey: string, config: IRmnConfig): Promise<IRmnClie
|
|
49
49
|
* @param {ISpot} spot - The spot data.
|
50
50
|
* @param {ICreateSpotElementConfig} config - The configuration object.
|
51
51
|
* @param {ICreateSpotElementConfig.fluid} config.fluid - If the spot should be fluid or not.
|
52
|
-
* @param {ICreateSpotElementConfig.
|
52
|
+
* @param {ICreateSpotElementConfig.customContent} config.customContent - Use a custom html element/string.
|
53
53
|
* @param {ICreateSpotElementConfig.redirectOnClick} config.redirectOnClick - If the spot should redirect on click.
|
54
54
|
*
|
55
55
|
* @return {HTMLElement | null} - The spot html element or null if the browser environment is not available.
|
package/package.json
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
"name": "@liquidcommercedev/rmn-sdk",
|
3
3
|
"description": "LiquidCommerce RMN SDK",
|
4
4
|
"author": "LiquidCommerce Tech",
|
5
|
-
"version": "1.4.
|
5
|
+
"version": "1.4.5-beta.2",
|
6
6
|
"homepage": "https://docs.liquidcommerce.co/rmn-sdk",
|
7
7
|
"main": "./dist/index.cjs",
|
8
8
|
"module": "./dist/index.esm.js",
|