@surfside/ads 2.0.0 → 3.6.0-0652b02f.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.
- package/README.md +15 -69
- package/lib/cjs/BuildInfo.js +9 -0
- package/lib/cjs/BuildInfo.js.map +1 -0
- package/lib/cjs/Constants.js +5 -0
- package/lib/cjs/Constants.js.map +1 -0
- package/lib/cjs/Init.js +130 -0
- package/lib/cjs/Init.js.map +1 -0
- package/lib/cjs/components/Banner.js +136 -0
- package/lib/cjs/components/Banner.js.map +1 -0
- package/lib/cjs/components/Card.js +170 -0
- package/lib/cjs/components/Card.js.map +1 -0
- package/lib/cjs/components/Carousel.js +249 -0
- package/lib/cjs/components/Carousel.js.map +1 -0
- package/lib/cjs/components/Creative.js +285 -0
- package/lib/cjs/components/Creative.js.map +1 -0
- package/lib/cjs/components/Dynamic.js +310 -0
- package/lib/cjs/components/Dynamic.js.map +1 -0
- package/lib/cjs/components/SimpleCreative.js +81 -0
- package/lib/cjs/components/SimpleCreative.js.map +1 -0
- package/lib/cjs/components/Video.js +144 -0
- package/lib/cjs/components/Video.js.map +1 -0
- package/lib/cjs/demo/test.js +7 -0
- package/lib/cjs/demo/test.js.map +1 -0
- package/lib/cjs/index.module.js +107 -0
- package/lib/cjs/index.module.js.map +1 -0
- package/lib/cjs/index.script.js +102 -0
- package/lib/cjs/index.script.js.map +1 -0
- package/lib/cjs/index.script.mock.js +154 -0
- package/lib/cjs/index.script.mock.js.map +1 -0
- package/lib/cjs/service/Init.js +3 -0
- package/lib/cjs/service/Init.js.map +1 -0
- package/lib/cjs/util/Attributes.js +93 -0
- package/lib/cjs/util/Attributes.js.map +1 -0
- package/lib/cjs/util/Types.js +3 -0
- package/lib/cjs/util/Types.js.map +1 -0
- package/lib/esm/BuildInfo.js +6 -0
- package/lib/esm/BuildInfo.js.map +1 -0
- package/lib/esm/Constants.js +2 -0
- package/lib/esm/Constants.js.map +1 -0
- package/lib/esm/Init.js +92 -0
- package/lib/esm/Init.js.map +1 -0
- package/lib/esm/components/Banner.js +132 -0
- package/lib/esm/components/Banner.js.map +1 -0
- package/lib/esm/components/Card.js +166 -0
- package/lib/esm/components/Card.js.map +1 -0
- package/lib/esm/components/Carousel.js +245 -0
- package/lib/esm/components/Carousel.js.map +1 -0
- package/lib/esm/components/Creative.js +280 -0
- package/lib/esm/components/Creative.js.map +1 -0
- package/lib/esm/components/Dynamic.js +306 -0
- package/lib/esm/components/Dynamic.js.map +1 -0
- package/lib/esm/components/SimpleCreative.js +75 -0
- package/lib/esm/components/SimpleCreative.js.map +1 -0
- package/lib/esm/components/Video.js +140 -0
- package/lib/esm/components/Video.js.map +1 -0
- package/lib/esm/demo/test.js +5 -0
- package/lib/esm/demo/test.js.map +1 -0
- package/lib/esm/index.module.js +67 -0
- package/lib/esm/index.module.js.map +1 -0
- package/lib/esm/index.script.js +100 -0
- package/lib/esm/index.script.js.map +1 -0
- package/lib/esm/index.script.mock.js +152 -0
- package/lib/esm/index.script.mock.js.map +1 -0
- package/lib/esm/service/Init.js +2 -0
- package/lib/esm/service/Init.js.map +1 -0
- package/lib/esm/util/Attributes.js +81 -0
- package/lib/esm/util/Attributes.js.map +1 -0
- package/lib/esm/util/Types.js +2 -0
- package/lib/esm/util/Types.js.map +1 -0
- package/lib/types/BuildInfo.d.ts +5 -0
- package/lib/types/Constants.d.ts +1 -0
- package/lib/types/Init.d.ts +31 -0
- package/lib/types/components/Banner.d.ts +17 -0
- package/lib/types/components/Card.d.ts +18 -0
- package/lib/types/components/Carousel.d.ts +32 -0
- package/lib/types/components/Creative.d.ts +84 -0
- package/lib/types/components/Dynamic.d.ts +24 -0
- package/lib/types/components/SimpleCreative.d.ts +20 -0
- package/lib/types/components/Video.d.ts +23 -0
- package/lib/types/demo/test.d.ts +1 -0
- package/lib/types/index.module.d.ts +12 -0
- package/lib/types/index.script.d.ts +1 -0
- package/lib/types/index.script.mock.d.ts +1 -0
- package/lib/types/service/Init.d.ts +1 -0
- package/lib/types/util/Attributes.d.ts +24 -0
- package/lib/types/util/Types.d.ts +3 -0
- package/package.json +42 -73
- package/lib/index.js +0 -2
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SurfsideCarousel = exports.NextType = void 0;
|
|
4
|
+
const ads_core_1 = require("@surfside/ads-core");
|
|
5
|
+
const Creative_1 = require("./Creative");
|
|
6
|
+
const SimpleCreative_1 = require("./SimpleCreative");
|
|
7
|
+
const Constants_1 = require("../Constants");
|
|
8
|
+
exports.NextType = {
|
|
9
|
+
Product: 'product',
|
|
10
|
+
Page: 'page'
|
|
11
|
+
};
|
|
12
|
+
class SurfsideCarousel extends Creative_1.CreativeComponent {
|
|
13
|
+
_cancellationToken = new ads_core_1.CancellationToken();
|
|
14
|
+
_renderDebounce;
|
|
15
|
+
maxItems;
|
|
16
|
+
cardMinWidth = Constants_1.DefaultMinCardWidth;
|
|
17
|
+
cardMaxWidth;
|
|
18
|
+
strategy = Creative_1.ProductFeedStrategy.Hybrid;
|
|
19
|
+
recommend = 'top-products';
|
|
20
|
+
nextType = exports.NextType.Page;
|
|
21
|
+
static get observedAttributes() {
|
|
22
|
+
return [
|
|
23
|
+
...Creative_1.CreativeComponent.observedBaseAttributes,
|
|
24
|
+
'max-items',
|
|
25
|
+
'card-min-width',
|
|
26
|
+
'card-max-width',
|
|
27
|
+
'strategy',
|
|
28
|
+
'recommend',
|
|
29
|
+
'next-type'
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
constructor(initApi, getUserId, logger) {
|
|
33
|
+
logger?.info('Building carousel');
|
|
34
|
+
super(initApi, getUserId, logger);
|
|
35
|
+
}
|
|
36
|
+
getComponentName() {
|
|
37
|
+
return 'SurfsideCarousel';
|
|
38
|
+
}
|
|
39
|
+
async attributeChangedCallback(name, oldValue, newValue) {
|
|
40
|
+
const log = this.log?.with('attributeChangedCallback');
|
|
41
|
+
log?.info('Carousel attribute changed');
|
|
42
|
+
switch (name) {
|
|
43
|
+
case 'max-items': {
|
|
44
|
+
try {
|
|
45
|
+
this.maxItems = (0, SimpleCreative_1.IntValOrThrow)(this, 'max-items', newValue);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
log?.warn('Failed to parse. Got', err);
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case 'card-min-width': {
|
|
53
|
+
try {
|
|
54
|
+
this.cardMinWidth = (0, SimpleCreative_1.IntValOrThrow)(this, 'card-min-width', newValue);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
log?.warn('Failed to parse. Got', err);
|
|
58
|
+
}
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
case 'card-max-width': {
|
|
62
|
+
try {
|
|
63
|
+
this.cardMaxWidth = (0, SimpleCreative_1.IntValOrThrow)(this, 'card-max-width', newValue);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
log?.warn('Failed to parse. Got', err);
|
|
67
|
+
}
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case 'strategy': {
|
|
71
|
+
const strategy = newValue?.toLowerCase();
|
|
72
|
+
switch (strategy) {
|
|
73
|
+
case Creative_1.ProductFeedStrategy.Sponsored:
|
|
74
|
+
case Creative_1.ProductFeedStrategy.Hybrid:
|
|
75
|
+
case Creative_1.ProductFeedStrategy.Recommended:
|
|
76
|
+
this.strategy = strategy;
|
|
77
|
+
break;
|
|
78
|
+
default:
|
|
79
|
+
log?.warn('Unrecognized or null strategy:', newValue);
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case 'recommend': {
|
|
85
|
+
const recommend = newValue?.toLowerCase();
|
|
86
|
+
switch (recommend) {
|
|
87
|
+
case Creative_1.RecommenderTypeInputs.TopProducts:
|
|
88
|
+
this.recommend = 'top-products';
|
|
89
|
+
break;
|
|
90
|
+
case Creative_1.RecommenderTypeInputs.ForYou:
|
|
91
|
+
this.recommend = 'for-you';
|
|
92
|
+
break;
|
|
93
|
+
case Creative_1.RecommenderTypeInputs.PastPurchases:
|
|
94
|
+
case Creative_1.RecommenderTypeInputs.BuyAgain:
|
|
95
|
+
this.recommend = 'past-purchases';
|
|
96
|
+
break;
|
|
97
|
+
default:
|
|
98
|
+
log?.warn('Unrecognized or null recommender type:', newValue);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
case 'next-type': {
|
|
104
|
+
const nextType = newValue?.toLowerCase();
|
|
105
|
+
switch (nextType) {
|
|
106
|
+
case exports.NextType.Page:
|
|
107
|
+
case exports.NextType.Product:
|
|
108
|
+
this.nextType = nextType;
|
|
109
|
+
break;
|
|
110
|
+
default:
|
|
111
|
+
log?.warn('Unrecognized or null next-type:', newValue);
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
default: {
|
|
117
|
+
const baseName = name;
|
|
118
|
+
if (Creative_1.CreativeComponent.observedBaseAttributes.includes(baseName)) {
|
|
119
|
+
await super.baseAttributeChangedCallback(baseName, oldValue, newValue, log);
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const totem = crypto.randomUUID();
|
|
125
|
+
this.totem = totem;
|
|
126
|
+
log?.debug(name, 'totem', totem);
|
|
127
|
+
if (!this.attributesLoaded()) {
|
|
128
|
+
log?.debug('Attributes not ready yet...', this.accountId);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
log?.debug('Attributes ready!');
|
|
133
|
+
}
|
|
134
|
+
await this.lazyLoadApi();
|
|
135
|
+
if (this.totem !== totem) {
|
|
136
|
+
log?.debug('Totem changed. Deferring rendering of carousel until last attribute changed', totem, this.totem);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (this.isConnected) {
|
|
140
|
+
log?.debug(`Rendering carousel upon [${name}] changed`);
|
|
141
|
+
await this.render();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async connectedCallback() {
|
|
145
|
+
super.connectedCallback();
|
|
146
|
+
const log = this.log?.with('connectedCallback');
|
|
147
|
+
log?.info('connectedCallback');
|
|
148
|
+
super.readBaseAttributes();
|
|
149
|
+
await this.initApi();
|
|
150
|
+
const totem = crypto.randomUUID();
|
|
151
|
+
this.totem = totem;
|
|
152
|
+
if (this.attributesLoaded()) {
|
|
153
|
+
await this.lazyLoadApi();
|
|
154
|
+
if (this.totem !== totem) {
|
|
155
|
+
log?.debug('Attributes changed after connectedCallback, waiting to render');
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
log?.debug('Rendering upon connectedCallback');
|
|
159
|
+
await this.render();
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
this.log?.warn('ConnectedCallback called before attributes were all ready.');
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
disconnectedCallback() {
|
|
166
|
+
super.disconnectedCallback();
|
|
167
|
+
this._cancellationToken.cancel();
|
|
168
|
+
if (this._renderDebounce !== undefined) {
|
|
169
|
+
globalThis.clearTimeout(this._renderDebounce);
|
|
170
|
+
this._renderDebounce = undefined;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async render() {
|
|
174
|
+
const log = this.log?.with('SurfsideCarousel', { zoneId: this.zoneId });
|
|
175
|
+
log?.info('Rendering carousel');
|
|
176
|
+
if (this._renderDebounce !== undefined) {
|
|
177
|
+
log?.debug('Debounce was not undefined');
|
|
178
|
+
globalThis.clearTimeout(this._renderDebounce);
|
|
179
|
+
}
|
|
180
|
+
this._renderDebounce = globalThis.setTimeout(async () => {
|
|
181
|
+
log?.info('Rendering carousel', this.api);
|
|
182
|
+
const stopTimer = log?.time?.('render carousel');
|
|
183
|
+
this._cancellationToken.cancel();
|
|
184
|
+
const token = new ads_core_1.CancellationToken();
|
|
185
|
+
this._cancellationToken = token;
|
|
186
|
+
const { startRequest, defaultNative, buildHybridCarousel, buildSponsoredCarousel, buildRecommendedCarousel, renderCarousel } = this.api;
|
|
187
|
+
const carousel = (0, ads_core_1.TryDoFlat)(() => {
|
|
188
|
+
log?.debug('Starting request');
|
|
189
|
+
const request = startRequest(this.zoneId)
|
|
190
|
+
.withSurfCategory(this.category)
|
|
191
|
+
.withKeywords(this.keywords)
|
|
192
|
+
.withProductCards(defaultNative())
|
|
193
|
+
.build();
|
|
194
|
+
switch (this.strategy) {
|
|
195
|
+
case Creative_1.ProductFeedStrategy.Hybrid:
|
|
196
|
+
log?.debug('building Hybrid carousel');
|
|
197
|
+
return buildHybridCarousel({
|
|
198
|
+
type: this.recommend
|
|
199
|
+
}, request);
|
|
200
|
+
case Creative_1.ProductFeedStrategy.Sponsored:
|
|
201
|
+
log?.debug('Building sponsored carousel');
|
|
202
|
+
return buildSponsoredCarousel(request);
|
|
203
|
+
case Creative_1.ProductFeedStrategy.Recommended:
|
|
204
|
+
log?.debug('Building recommended carousel');
|
|
205
|
+
return buildRecommendedCarousel({
|
|
206
|
+
type: this.recommend
|
|
207
|
+
}, this.category?.[0]);
|
|
208
|
+
default:
|
|
209
|
+
return (0, ads_core_1.Err)(new ads_core_1.InvalidRecommenderTypeError(this.strategy));
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
if (!carousel.ok) {
|
|
213
|
+
log?.error('Failed to build carousel!', carousel.error);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
log?.info('Rendering carousel');
|
|
217
|
+
const element = await renderCarousel(carousel.value, this.cardMinWidth, this.maxItems === undefined || this.maxItems === 0
|
|
218
|
+
? {
|
|
219
|
+
type: 'infinite'
|
|
220
|
+
}
|
|
221
|
+
: {
|
|
222
|
+
type: 'limited',
|
|
223
|
+
limit: this.maxItems
|
|
224
|
+
}, this.nextType, this.cardMaxWidth);
|
|
225
|
+
log?.info('rendered carousel element');
|
|
226
|
+
if (!element.ok) {
|
|
227
|
+
log?.error(element.error);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
if (this._cancellationToken.cancelled) {
|
|
231
|
+
log?.info('Cancelled rendering carousel');
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
stopTimer?.();
|
|
235
|
+
element.value.element.classList.add(`surf-zone-${this.zoneId}`);
|
|
236
|
+
this.shadow.innerHTML = '';
|
|
237
|
+
this.shadow.appendChild(element.value.element);
|
|
238
|
+
const elementInitRes = await element.value.init();
|
|
239
|
+
if (!elementInitRes.ok) {
|
|
240
|
+
log?.error('Carousel first page was empty', elementInitRes);
|
|
241
|
+
this.remove();
|
|
242
|
+
}
|
|
243
|
+
log?.info('Appended carousel to DOM');
|
|
244
|
+
this.restartEndToEndTimer();
|
|
245
|
+
}, Creative_1.DEBOUNCE_THRESHOLD);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
exports.SurfsideCarousel = SurfsideCarousel;
|
|
249
|
+
//# sourceMappingURL=Carousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Carousel.js","sourceRoot":"../@surfside-ads/","sources":["components/Carousel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreativeComponent = exports.DEBOUNCE_THRESHOLD = exports.AttributeValOrThrow = exports.RecommenderTypeInputs = exports.ProductFeedStrategy = void 0;
|
|
4
|
+
const ads_core_1 = require("@surfside/ads-core");
|
|
5
|
+
const Attributes_1 = require("../util/Attributes");
|
|
6
|
+
exports.ProductFeedStrategy = {
|
|
7
|
+
Sponsored: 'sponsored',
|
|
8
|
+
Hybrid: 'hybrid',
|
|
9
|
+
Recommended: 'recommended'
|
|
10
|
+
};
|
|
11
|
+
exports.RecommenderTypeInputs = {
|
|
12
|
+
TopProducts: 'top-products',
|
|
13
|
+
ForYou: 'for-you',
|
|
14
|
+
BuyAgain: 'buy-again',
|
|
15
|
+
PastPurchases: 'past-purchases'
|
|
16
|
+
};
|
|
17
|
+
const AttributeValOrThrow = (element, attribute, value) => {
|
|
18
|
+
if (value !== null) {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
throw new Attributes_1.AttributeNotFoundError(element, attribute);
|
|
22
|
+
};
|
|
23
|
+
exports.AttributeValOrThrow = AttributeValOrThrow;
|
|
24
|
+
exports.DEBOUNCE_THRESHOLD = 10;
|
|
25
|
+
class CreativeComponent extends HTMLElement {
|
|
26
|
+
_initApi;
|
|
27
|
+
_getUserId;
|
|
28
|
+
accountId;
|
|
29
|
+
siteId;
|
|
30
|
+
locationId;
|
|
31
|
+
channelId;
|
|
32
|
+
zoneId;
|
|
33
|
+
category = [];
|
|
34
|
+
keywords = [];
|
|
35
|
+
shadow;
|
|
36
|
+
api;
|
|
37
|
+
log;
|
|
38
|
+
/* Value to check for mutibility */
|
|
39
|
+
totem;
|
|
40
|
+
_stopTimer;
|
|
41
|
+
restartEndToEndTimer;
|
|
42
|
+
/* Checking for equality while debugging */
|
|
43
|
+
_instanceId;
|
|
44
|
+
get instanceId() {
|
|
45
|
+
return this._instanceId;
|
|
46
|
+
}
|
|
47
|
+
_monkeyHistoryReplaceCallback = () => {
|
|
48
|
+
this.log?.info('Running monkey-patch re-init function');
|
|
49
|
+
this.initApi();
|
|
50
|
+
};
|
|
51
|
+
/* Re-auction timer state. Paused while the window is blurred or the document is hidden */
|
|
52
|
+
_reauctionTimer;
|
|
53
|
+
_reauctionCallback;
|
|
54
|
+
_reauctionRemainingMs = 0;
|
|
55
|
+
_reauctionStartedAt = 0;
|
|
56
|
+
_windowBlurred = false;
|
|
57
|
+
_blurCallback = () => {
|
|
58
|
+
this._windowBlurred = true;
|
|
59
|
+
this.pauseReauction();
|
|
60
|
+
};
|
|
61
|
+
_focusCallback = () => {
|
|
62
|
+
this._windowBlurred = false;
|
|
63
|
+
this.resumeReauction();
|
|
64
|
+
};
|
|
65
|
+
_visibilityChangeCallback = () => {
|
|
66
|
+
if (globalThis.document.visibilityState === 'hidden') {
|
|
67
|
+
this.pauseReauction();
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this.resumeReauction();
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
constructor(_initApi, _getUserId, logger) {
|
|
74
|
+
super();
|
|
75
|
+
this._initApi = _initApi;
|
|
76
|
+
this._getUserId = _getUserId;
|
|
77
|
+
this._instanceId = crypto.randomUUID();
|
|
78
|
+
this.shadow = this.attachShadow({ mode: 'open' });
|
|
79
|
+
this.log = (0, ads_core_1.Ctx)(logger)?.with(this.getComponentName());
|
|
80
|
+
this.restartEndToEndTimer = () => {
|
|
81
|
+
if (this._stopTimer !== undefined) {
|
|
82
|
+
this._stopTimer();
|
|
83
|
+
}
|
|
84
|
+
this._stopTimer = this.log?.time?.(this.constructor.name + '-e2e');
|
|
85
|
+
};
|
|
86
|
+
this.restartEndToEndTimer();
|
|
87
|
+
}
|
|
88
|
+
connectedCallback() {
|
|
89
|
+
globalThis.window.addEventListener('monkeyHistoryReplace', this._monkeyHistoryReplaceCallback);
|
|
90
|
+
globalThis.window.addEventListener('popstate', this._monkeyHistoryReplaceCallback);
|
|
91
|
+
globalThis.window.addEventListener('blur', this._blurCallback);
|
|
92
|
+
globalThis.window.addEventListener('focus', this._focusCallback);
|
|
93
|
+
globalThis.document.addEventListener('visibilitychange', this._visibilityChangeCallback);
|
|
94
|
+
}
|
|
95
|
+
static get observedBaseAttributes() {
|
|
96
|
+
return [
|
|
97
|
+
'account-id',
|
|
98
|
+
'site-id',
|
|
99
|
+
'location-id',
|
|
100
|
+
'channel-id',
|
|
101
|
+
'zone-id',
|
|
102
|
+
'keywords',
|
|
103
|
+
'category',
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
getBaseAttributeValues() {
|
|
107
|
+
return {
|
|
108
|
+
accountId: this.accountId,
|
|
109
|
+
siteId: this.siteId,
|
|
110
|
+
channelId: this.channelId,
|
|
111
|
+
locationId: this.locationId,
|
|
112
|
+
zoneId: this.zoneId,
|
|
113
|
+
category: this.category,
|
|
114
|
+
keywords: this.keywords
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
attributesLoaded() {
|
|
118
|
+
return (this.accountId !== undefined &&
|
|
119
|
+
this.siteId !== undefined &&
|
|
120
|
+
this.channelId !== undefined &&
|
|
121
|
+
this.locationId !== undefined &&
|
|
122
|
+
this.zoneId !== undefined &&
|
|
123
|
+
this.category !== undefined &&
|
|
124
|
+
this.keywords !== undefined &&
|
|
125
|
+
this.accountId !== null &&
|
|
126
|
+
this.siteId !== null &&
|
|
127
|
+
this.channelId !== null &&
|
|
128
|
+
this.locationId !== null &&
|
|
129
|
+
this.zoneId !== null &&
|
|
130
|
+
this.category !== null &&
|
|
131
|
+
this.keywords !== null);
|
|
132
|
+
}
|
|
133
|
+
async lazyLoadApi() {
|
|
134
|
+
if (this.api === undefined && this.attributesLoaded()) {
|
|
135
|
+
await this.initApi();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
async baseAttributeChangedCallback(key, oldValue, newValue, logger) {
|
|
139
|
+
const log = logger?.with('baseAttributeChangedCallback');
|
|
140
|
+
log?.info('Detected base attribute change. key, oldValue, newValue:', key, oldValue, newValue);
|
|
141
|
+
let reInit = false;
|
|
142
|
+
switch (key) {
|
|
143
|
+
case 'account-id':
|
|
144
|
+
this.accountId = newValue ?? undefined;
|
|
145
|
+
reInit = true;
|
|
146
|
+
log?.debug('account-id', this.accountId);
|
|
147
|
+
break;
|
|
148
|
+
case 'site-id':
|
|
149
|
+
this.siteId = newValue ?? undefined;
|
|
150
|
+
reInit = true;
|
|
151
|
+
log?.debug('site-id', this.siteId);
|
|
152
|
+
break;
|
|
153
|
+
case 'location-id':
|
|
154
|
+
this.locationId = newValue ?? undefined;
|
|
155
|
+
reInit = true;
|
|
156
|
+
log?.debug('location-id', this.locationId);
|
|
157
|
+
break;
|
|
158
|
+
case 'channel-id':
|
|
159
|
+
this.channelId = newValue ?? undefined;
|
|
160
|
+
reInit = true;
|
|
161
|
+
log?.debug('channel-id', this.channelId);
|
|
162
|
+
break;
|
|
163
|
+
case 'zone-id':
|
|
164
|
+
this.zoneId = newValue ?? undefined;
|
|
165
|
+
log?.debug('zone-id', this.zoneId);
|
|
166
|
+
break;
|
|
167
|
+
case 'category':
|
|
168
|
+
this.category = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'category'))
|
|
169
|
+
?.split(',')
|
|
170
|
+
.map(k => k.trim())
|
|
171
|
+
?? this.category ?? [this.api?.configuration.category];
|
|
172
|
+
log?.debug('surf-category', this.category);
|
|
173
|
+
break;
|
|
174
|
+
case 'keywords':
|
|
175
|
+
this.keywords = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'keywords'))
|
|
176
|
+
?.split(',')
|
|
177
|
+
.map(k => k.trim())
|
|
178
|
+
?? this.keywords ?? [];
|
|
179
|
+
log?.debug('keywords', this.keywords);
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
if (reInit) {
|
|
183
|
+
log?.info('Re-initializing API');
|
|
184
|
+
await this.initApi();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
disconnectedCallback() {
|
|
188
|
+
this.log?.info('Disconnected - removing monkey history and focus listeners');
|
|
189
|
+
globalThis.window.removeEventListener('monkeyHistoryReplace', this._monkeyHistoryReplaceCallback);
|
|
190
|
+
globalThis.window.removeEventListener('popstate', this._monkeyHistoryReplaceCallback);
|
|
191
|
+
globalThis.window.removeEventListener('blur', this._blurCallback);
|
|
192
|
+
globalThis.window.removeEventListener('focus', this._focusCallback);
|
|
193
|
+
globalThis.document.removeEventListener('visibilitychange', this._visibilityChangeCallback);
|
|
194
|
+
this.clearReauction();
|
|
195
|
+
}
|
|
196
|
+
reauctionPaused() {
|
|
197
|
+
return this._windowBlurred || globalThis.document.visibilityState === 'hidden';
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Schedules `callback` to run after `intervalMs`, replacing any pending re-auction.
|
|
201
|
+
* The countdown is paused while the window is blurred or the document is hidden, and
|
|
202
|
+
* resumes with the remaining time once the page regains focus.
|
|
203
|
+
*/
|
|
204
|
+
scheduleReauction(callback, intervalMs) {
|
|
205
|
+
this.clearReauction();
|
|
206
|
+
this._reauctionCallback = callback;
|
|
207
|
+
this._reauctionRemainingMs = intervalMs;
|
|
208
|
+
if (this.reauctionPaused()) {
|
|
209
|
+
this.log?.info('Page is blurred or hidden. Re-auction paused until it regains focus');
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
this.startReauctionTimer();
|
|
213
|
+
}
|
|
214
|
+
clearReauction() {
|
|
215
|
+
if (this._reauctionTimer !== undefined) {
|
|
216
|
+
globalThis.clearTimeout(this._reauctionTimer);
|
|
217
|
+
}
|
|
218
|
+
this._reauctionTimer = undefined;
|
|
219
|
+
this._reauctionCallback = undefined;
|
|
220
|
+
}
|
|
221
|
+
startReauctionTimer() {
|
|
222
|
+
const callback = this._reauctionCallback;
|
|
223
|
+
if (callback === undefined || this._reauctionTimer !== undefined) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
this._reauctionStartedAt = Date.now();
|
|
227
|
+
this._reauctionTimer = globalThis.setTimeout(() => {
|
|
228
|
+
this._reauctionTimer = undefined;
|
|
229
|
+
this._reauctionCallback = undefined;
|
|
230
|
+
callback();
|
|
231
|
+
}, this._reauctionRemainingMs);
|
|
232
|
+
}
|
|
233
|
+
pauseReauction() {
|
|
234
|
+
if (this._reauctionTimer === undefined) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
globalThis.clearTimeout(this._reauctionTimer);
|
|
238
|
+
this._reauctionTimer = undefined;
|
|
239
|
+
this._reauctionRemainingMs = Math.max(this._reauctionRemainingMs - (Date.now() - this._reauctionStartedAt), 0);
|
|
240
|
+
this.log?.info('Pausing re-auction', { remainingMs: this._reauctionRemainingMs });
|
|
241
|
+
}
|
|
242
|
+
resumeReauction() {
|
|
243
|
+
if (this._reauctionCallback === undefined || this.reauctionPaused()) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
this.log?.info('Resuming re-auction', { remainingMs: this._reauctionRemainingMs });
|
|
247
|
+
this.startReauctionTimer();
|
|
248
|
+
}
|
|
249
|
+
async initApi() {
|
|
250
|
+
const log = this.log?.with('initApi');
|
|
251
|
+
log?.info('Initializing API');
|
|
252
|
+
const userId = await this._getUserId();
|
|
253
|
+
log?.info(this.accountId, this.siteId, this.channelId, this.locationId, userId);
|
|
254
|
+
if (this.accountId === undefined ||
|
|
255
|
+
this.siteId === undefined ||
|
|
256
|
+
this.channelId === undefined ||
|
|
257
|
+
this.locationId === undefined) {
|
|
258
|
+
log?.warn('Component isn\'t fully initialized yet');
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
log?.info('Component initialized');
|
|
262
|
+
this.api = (0, ads_core_1.GetValueOrThrow)(await this._initApi(this.accountId, this.siteId, this.channelId, this.locationId, userId, globalThis.window.location.href));
|
|
263
|
+
}
|
|
264
|
+
readBaseAttributes() {
|
|
265
|
+
const log = this.log?.with('readBaseAttributes');
|
|
266
|
+
log?.info('Reading base attributes');
|
|
267
|
+
this.accountId = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'account-id')) ?? this.accountId;
|
|
268
|
+
this.siteId = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'site-id')) ?? this.siteId;
|
|
269
|
+
this.locationId = (0, ads_core_1.GetValue)((0, ads_core_1.First)((0, Attributes_1.ReadAttribute)(this, 'location-id'), (0, Attributes_1.ReadAttribute)(this, 'store-id'))) ?? this.locationId;
|
|
270
|
+
this.channelId = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'channel-id')) ?? this.channelId;
|
|
271
|
+
this.zoneId = (0, ads_core_1.GetValue)((0, ads_core_1.First)((0, Attributes_1.ReadAttribute)(this, 'zone-id'), (0, Attributes_1.ReadAttribute)(this, 'placement-id'))) ?? this.zoneId;
|
|
272
|
+
this.category = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'category'))
|
|
273
|
+
?.split(',')
|
|
274
|
+
.map(k => k.trim())
|
|
275
|
+
?? this.category ?? [this.api?.configuration.category];
|
|
276
|
+
log?.info('category', this.category);
|
|
277
|
+
this.keywords = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'keywords'))
|
|
278
|
+
?.split(',')
|
|
279
|
+
.map(k => k.trim())
|
|
280
|
+
?? this.keywords ?? [];
|
|
281
|
+
log?.debug(this.accountId, this.siteId, this.channelId, this.locationId, this.zoneId, this.category, this.keywords);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
exports.CreativeComponent = CreativeComponent;
|
|
285
|
+
//# sourceMappingURL=Creative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Creative.js","sourceRoot":"../@surfside-ads/","sources":["components/Creative.ts"],"names":[],"mappings":"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"}
|