@surfside/ads 3.3.1-ecbeddf1.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.
Files changed (86) hide show
  1. package/lib/cjs/BuildInfo.js +9 -0
  2. package/lib/cjs/BuildInfo.js.map +1 -0
  3. package/lib/cjs/Constants.js +5 -0
  4. package/lib/cjs/Constants.js.map +1 -0
  5. package/lib/cjs/Init.js +130 -0
  6. package/lib/cjs/Init.js.map +1 -0
  7. package/lib/cjs/components/Banner.js +136 -0
  8. package/lib/cjs/components/Banner.js.map +1 -0
  9. package/lib/cjs/components/Card.js +170 -0
  10. package/lib/cjs/components/Card.js.map +1 -0
  11. package/lib/cjs/components/Carousel.js +249 -0
  12. package/lib/cjs/components/Carousel.js.map +1 -0
  13. package/lib/cjs/components/Creative.js +285 -0
  14. package/lib/cjs/components/Creative.js.map +1 -0
  15. package/lib/cjs/components/Dynamic.js +310 -0
  16. package/lib/cjs/components/Dynamic.js.map +1 -0
  17. package/lib/cjs/components/SimpleCreative.js +81 -0
  18. package/lib/cjs/components/SimpleCreative.js.map +1 -0
  19. package/lib/cjs/components/Video.js +144 -0
  20. package/lib/cjs/components/Video.js.map +1 -0
  21. package/lib/cjs/demo/test.js +7 -0
  22. package/lib/cjs/demo/test.js.map +1 -0
  23. package/lib/cjs/index.module.js +107 -0
  24. package/lib/cjs/index.module.js.map +1 -0
  25. package/lib/cjs/index.script.js +102 -0
  26. package/lib/cjs/index.script.js.map +1 -0
  27. package/lib/cjs/index.script.mock.js +154 -0
  28. package/lib/cjs/index.script.mock.js.map +1 -0
  29. package/lib/cjs/service/Init.js +3 -0
  30. package/lib/cjs/service/Init.js.map +1 -0
  31. package/lib/cjs/util/Attributes.js +93 -0
  32. package/lib/cjs/util/Attributes.js.map +1 -0
  33. package/lib/cjs/util/Types.js +3 -0
  34. package/lib/cjs/util/Types.js.map +1 -0
  35. package/lib/esm/BuildInfo.js +6 -0
  36. package/lib/esm/BuildInfo.js.map +1 -0
  37. package/lib/esm/Constants.js +2 -0
  38. package/lib/esm/Constants.js.map +1 -0
  39. package/lib/esm/Init.js +92 -0
  40. package/lib/esm/Init.js.map +1 -0
  41. package/lib/esm/components/Banner.js +132 -0
  42. package/lib/esm/components/Banner.js.map +1 -0
  43. package/lib/esm/components/Card.js +166 -0
  44. package/lib/esm/components/Card.js.map +1 -0
  45. package/lib/esm/components/Carousel.js +245 -0
  46. package/lib/esm/components/Carousel.js.map +1 -0
  47. package/lib/esm/components/Creative.js +280 -0
  48. package/lib/esm/components/Creative.js.map +1 -0
  49. package/lib/esm/components/Dynamic.js +306 -0
  50. package/lib/esm/components/Dynamic.js.map +1 -0
  51. package/lib/esm/components/SimpleCreative.js +75 -0
  52. package/lib/esm/components/SimpleCreative.js.map +1 -0
  53. package/lib/esm/components/Video.js +140 -0
  54. package/lib/esm/components/Video.js.map +1 -0
  55. package/lib/esm/demo/test.js +5 -0
  56. package/lib/esm/demo/test.js.map +1 -0
  57. package/lib/esm/index.module.js +67 -0
  58. package/lib/esm/index.module.js.map +1 -0
  59. package/lib/esm/index.script.js +100 -0
  60. package/lib/esm/index.script.js.map +1 -0
  61. package/lib/esm/index.script.mock.js +152 -0
  62. package/lib/esm/index.script.mock.js.map +1 -0
  63. package/lib/esm/service/Init.js +2 -0
  64. package/lib/esm/service/Init.js.map +1 -0
  65. package/lib/esm/util/Attributes.js +81 -0
  66. package/lib/esm/util/Attributes.js.map +1 -0
  67. package/lib/esm/util/Types.js +2 -0
  68. package/lib/esm/util/Types.js.map +1 -0
  69. package/lib/types/BuildInfo.d.ts +5 -0
  70. package/lib/types/Constants.d.ts +1 -0
  71. package/lib/types/Init.d.ts +31 -0
  72. package/lib/types/components/Banner.d.ts +17 -0
  73. package/lib/types/components/Card.d.ts +18 -0
  74. package/lib/types/components/Carousel.d.ts +32 -0
  75. package/lib/types/components/Creative.d.ts +84 -0
  76. package/lib/types/components/Dynamic.d.ts +24 -0
  77. package/lib/types/components/SimpleCreative.d.ts +20 -0
  78. package/lib/types/components/Video.d.ts +23 -0
  79. package/lib/types/demo/test.d.ts +1 -0
  80. package/lib/types/index.module.d.ts +12 -0
  81. package/lib/types/index.script.d.ts +1 -0
  82. package/lib/types/index.script.mock.d.ts +1 -0
  83. package/lib/types/service/Init.d.ts +1 -0
  84. package/lib/types/util/Attributes.d.ts +24 -0
  85. package/lib/types/util/Types.d.ts +3 -0
  86. package/package.json +10 -10
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VersionInfo = void 0;
4
+ exports.VersionInfo = {
5
+ 'buildBranch': 'HEAD',
6
+ 'buildHash': '0652b02',
7
+ 'buildVer': '3.6.0-5adc7a2.0.0'
8
+ };
9
+ //# sourceMappingURL=BuildInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildInfo.js","sourceRoot":"../@surfside-ads/","sources":["BuildInfo.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACvB,aAAa,EAAE,MAAM;IACrB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,mBAAmB;CAClC,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultMinCardWidth = void 0;
4
+ exports.DefaultMinCardWidth = 300;
5
+ //# sourceMappingURL=Constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.js","sourceRoot":"../@surfside-ads/","sources":["Constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,GAAG,CAAC"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.LoadSurfAds = exports.CreateSurfAds = void 0;
37
+ const ads_core_web_1 = require("@surfside/ads-core-web");
38
+ const Banner_1 = require("./components/Banner");
39
+ const Video_1 = require("./components/Video");
40
+ const Carousel_1 = require("./components/Carousel");
41
+ const Card_1 = require("./components/Card");
42
+ const Dynamic_1 = require("./components/Dynamic");
43
+ const ads_core_1 = require("@surfside/ads-core");
44
+ const ads_core_client_1 = require("@surfside/ads-core-client");
45
+ const SurfsideAdsVersionInfo = __importStar(require("./BuildInfo"));
46
+ ;
47
+ const webApiInitializer = (config) => (0, ads_core_1.MemoizeAsync)(async (accountId, siteId, channelId, locationId, userId,
48
+ /* This is used for memoizing the init function, but isn't used directly. It's loaded from global
49
+ * state later on */
50
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
+ url) => {
52
+ return await (0, ads_core_web_1.LoadSurfAdsWebSimple)(accountId, siteId, channelId, locationId, userId, config?.logger, config?.telemetry, config?.overrides);
53
+ });
54
+ /** Injects dependencies into the advertising web components and passes them an initializer service.
55
+ * Be warned! This function has no side effects, but it returns stateful classes. The web components
56
+ * call their own initialization functions lazily with side effects. Once you begin
57
+ * using Surfside Ads Web components, you have moved out of functional programming land and into OOP
58
+ * land. State for Surfside ads web components is managed within the web component classes.
59
+ */
60
+ const CreateSurfAds = (config) => {
61
+ const { logger } = config ?? {};
62
+ const initializer = webApiInitializer(config);
63
+ const log = (0, ads_core_1.Ctx)(logger)?.with('CreateSurfAds');
64
+ log?.info('🏄‍♂️ Initializing surfside ads web components');
65
+ log?.table(SurfsideAdsVersionTable);
66
+ const userIdService = config?.getUserId ?? ads_core_web_1.GetSurfUserIdCookie;
67
+ const bannerComponent = class extends Banner_1.SurfsideBanner {
68
+ constructor() {
69
+ super(initializer, userIdService, logger);
70
+ }
71
+ };
72
+ const videoComponent = class extends Video_1.SurfsideVideo {
73
+ constructor() {
74
+ super(initializer, userIdService, logger);
75
+ }
76
+ };
77
+ const carouselComponent = class extends Carousel_1.SurfsideCarousel {
78
+ constructor() {
79
+ super(initializer, userIdService, logger);
80
+ }
81
+ };
82
+ const productCardComponent = class extends Card_1.SurfsideProductCard {
83
+ constructor() {
84
+ super(initializer, userIdService, logger);
85
+ }
86
+ };
87
+ const dynamicZoneComponent = class extends Dynamic_1.SurfsideDynamicZone {
88
+ constructor() {
89
+ super(initializer, userIdService, logger);
90
+ }
91
+ };
92
+ return (0, ads_core_1.Ok)({
93
+ bannerComponent,
94
+ videoComponent,
95
+ carouselComponent,
96
+ productCardComponent,
97
+ dynamicZoneComponent
98
+ });
99
+ };
100
+ exports.CreateSurfAds = CreateSurfAds;
101
+ const LoadSurfAds = (config) => {
102
+ const surfAdsRes = (0, exports.CreateSurfAds)(config);
103
+ if (!surfAdsRes.ok) {
104
+ return surfAdsRes;
105
+ }
106
+ const surfAds = surfAdsRes.value;
107
+ const { bannerComponent, productCardComponent, videoComponent, carouselComponent, dynamicZoneComponent } = surfAds;
108
+ customElements.define('surf-banner', bannerComponent);
109
+ customElements.define('surf-video', videoComponent);
110
+ customElements.define('surf-carousel', carouselComponent);
111
+ customElements.define('surf-product-card', productCardComponent);
112
+ customElements.define('surf-dynamic-zone', dynamicZoneComponent);
113
+ return surfAdsRes;
114
+ };
115
+ exports.LoadSurfAds = LoadSurfAds;
116
+ const pad = (name) => {
117
+ let newName = name;
118
+ const remaining = 25 - name.length;
119
+ for (let i = 0; i < remaining; i++) {
120
+ newName += ' ';
121
+ }
122
+ return newName;
123
+ };
124
+ const SurfsideAdsVersionTable = {
125
+ [pad('@surfside/ads-core')]: ads_core_1.SurfsideAdsCoreVersionInfo.VersionInfo,
126
+ [pad('@surfside/ads-core-client')]: ads_core_client_1.SurfsideAdsCoreClientVersionInfo.VersionInfo,
127
+ [pad('@surfside/ads-core-web')]: ads_core_web_1.SurfsideAdsCoreWebVersionInfo.VersionInfo,
128
+ [pad('@surfside/ads')]: SurfsideAdsVersionInfo.VersionInfo
129
+ };
130
+ //# sourceMappingURL=Init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Init.js","sourceRoot":"../@surfside-ads/","sources":["Init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SurfsideBanner = void 0;
4
+ const ads_core_1 = require("@surfside/ads-core");
5
+ const SimpleCreative_1 = require("./SimpleCreative");
6
+ const Creative_1 = require("./Creative");
7
+ class SurfsideBanner extends SimpleCreative_1.SimpleCreativeComponent {
8
+ _cancellationToken = new ads_core_1.CancellationToken();
9
+ _bounce;
10
+ static get observedAttributes() {
11
+ return SimpleCreative_1.SimpleCreativeComponent.observedSimpleAttributes;
12
+ }
13
+ constructor(initApi, getUserId, logger) {
14
+ super(initApi, getUserId, logger);
15
+ logger?.info('Building SurfsideBanner', this.instanceId);
16
+ }
17
+ getComponentName() {
18
+ return 'SurfsideBanner';
19
+ }
20
+ async attributeChangedCallback(name, oldValue, newValue) {
21
+ const log = this.log?.with('attributeChangedCallback');
22
+ log?.info('Attribute changed', name, oldValue, newValue);
23
+ await this.handleSimpleAttributeChange(name, oldValue, newValue, log);
24
+ const totem = crypto.randomUUID();
25
+ this.totem = totem;
26
+ log?.debug(name, 'totem', totem);
27
+ if (!this.attributesLoaded()) {
28
+ log?.debug('Attributes not ready yet...');
29
+ return;
30
+ }
31
+ await this.lazyLoadApi();
32
+ if (this.totem !== totem) {
33
+ log?.debug('Totem changed. Deferring rendering of banner until last attribute changed', totem, this.totem);
34
+ return;
35
+ }
36
+ log?.debug(`Rendering banner upon [${name}] changed!`);
37
+ if (this.isConnected) {
38
+ if (this._bounce !== undefined) {
39
+ globalThis.clearTimeout(this._bounce);
40
+ }
41
+ this._bounce = globalThis.setTimeout(() => this.render(), Creative_1.DEBOUNCE_THRESHOLD);
42
+ }
43
+ }
44
+ async connectedCallback() {
45
+ super.connectedCallback();
46
+ this.log?.info('Banner component callback: connected');
47
+ this.readSimpleAttributes();
48
+ await this.initApi();
49
+ const totem = crypto.randomUUID();
50
+ this.totem = totem;
51
+ if (this.attributesLoaded()) {
52
+ await this.lazyLoadApi();
53
+ if (this.totem !== totem) {
54
+ this.log?.debug('Attributes changed after connectedCallback, waiting to render');
55
+ return;
56
+ }
57
+ this.log?.debug('Rendering upon connectedCallback');
58
+ await this.render();
59
+ }
60
+ else {
61
+ this.log?.warn('ConnectedCallback called before attributes were all ready.');
62
+ }
63
+ }
64
+ adoptedCallback() {
65
+ this.log?.info('Banner component callback: adopted');
66
+ }
67
+ disconnectedCallback() {
68
+ super.disconnectedCallback();
69
+ this._cancellationToken.cancel();
70
+ if (this._bounce !== undefined) {
71
+ globalThis.clearTimeout(this._bounce);
72
+ this._bounce = undefined;
73
+ }
74
+ this.log?.info('Banner component callback: disconnected', this.instanceId);
75
+ }
76
+ connectedMoveCallback() {
77
+ this.log?.info('Banner component callback: moved', this.instanceId);
78
+ }
79
+ async render() {
80
+ const log = this.log?.with('SurfsideBanner', { zoneId: this.zoneId });
81
+ log?.info('rendering banner web component', this.instanceId);
82
+ log?.debug('width', this.width, 'height', this.height);
83
+ const stopTimer = log?.time?.('render banner');
84
+ this._cancellationToken.cancel();
85
+ this.clearReauction();
86
+ const token = new ads_core_1.CancellationToken();
87
+ this._cancellationToken = token;
88
+ const { requestBids, startRequest, buildBannerResponse, renderBanner } = this.api;
89
+ log?.debug('Category:', this.category);
90
+ const response = await requestBids(startRequest(this.zoneId)
91
+ .withSurfCategory(this.category)
92
+ .withKeywords(this.keywords)
93
+ .withImp(this.zoneId)
94
+ .andBanner(this.width, this.height)
95
+ .build());
96
+ if (!response.ok) {
97
+ log?.warn('Failed to get bid response! Got ', response.error);
98
+ return;
99
+ }
100
+ const bidRes = (0, ads_core_1.WrapValue)(response.value.seatbid?.[0]?.bid[0]);
101
+ if (!bidRes.ok) {
102
+ log?.warn('Bid response had no bid!', bidRes.error);
103
+ return;
104
+ }
105
+ const bannerResponse = buildBannerResponse(bidRes.value);
106
+ if (!bannerResponse.ok) {
107
+ log?.warn('Banner failed to build response', bannerResponse.error);
108
+ return;
109
+ }
110
+ const bannerRes = renderBanner(bannerResponse.value);
111
+ if (!bannerRes.ok) {
112
+ log?.warn('Failed to render banner', bannerRes.error);
113
+ return;
114
+ }
115
+ const element = bannerRes.value;
116
+ if (!token.cancelled) {
117
+ this.shadow.innerHTML = '';
118
+ this.shadow.appendChild(element);
119
+ element.classList.add(`surf-zone-${this.zoneId}`);
120
+ stopTimer?.();
121
+ this.restartEndToEndTimer?.();
122
+ /* Reauction */
123
+ log?.debug('Settings ', this.api.configuration.settings);
124
+ if (this.api.configuration.settings.reauctionEnabled && bidRes.value.ext?.takeover !== true) {
125
+ const interval = Math.max(this.api.configuration.settings.reauctionIntervalMs, 10000);
126
+ log?.info('Setting up re-auction in ' + interval + 'ms');
127
+ this.scheduleReauction(() => this.render(), interval);
128
+ }
129
+ else {
130
+ log?.info('Not setting up reauction');
131
+ }
132
+ }
133
+ }
134
+ }
135
+ exports.SurfsideBanner = SurfsideBanner;
136
+ //# sourceMappingURL=Banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Banner.js","sourceRoot":"../@surfside-ads/","sources":["components/Banner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SurfsideProductCard = void 0;
4
+ const ads_core_1 = require("@surfside/ads-core");
5
+ const Creative_1 = require("./Creative");
6
+ class SurfsideProductCard extends Creative_1.CreativeComponent {
7
+ _cancellationToken = new ads_core_1.CancellationToken();
8
+ recommend = 'top-products';
9
+ strategy = Creative_1.ProductFeedStrategy.Hybrid;
10
+ _bounce;
11
+ static get observedAttributes() {
12
+ return [
13
+ ...Creative_1.CreativeComponent.observedBaseAttributes,
14
+ 'recommend',
15
+ 'strategy'
16
+ ];
17
+ }
18
+ getComponentName() {
19
+ return 'SurfsideProductCard';
20
+ }
21
+ async attributeChangedCallback(name, oldValue, newValue) {
22
+ const log = this.log?.with('attributeChangedCallback');
23
+ log?.info('detected attribute change');
24
+ log?.debug(name, oldValue, newValue);
25
+ switch (name) {
26
+ case 'strategy': {
27
+ const strategy = newValue?.toLowerCase();
28
+ switch (strategy) {
29
+ case Creative_1.ProductFeedStrategy.Sponsored:
30
+ case Creative_1.ProductFeedStrategy.Hybrid:
31
+ case Creative_1.ProductFeedStrategy.Recommended:
32
+ this.strategy = strategy;
33
+ break;
34
+ default:
35
+ log?.warn('Unrecognized or null strategy:', newValue);
36
+ break;
37
+ }
38
+ break;
39
+ }
40
+ case 'recommend': {
41
+ const recommend = newValue?.toLowerCase();
42
+ switch (recommend) {
43
+ case Creative_1.RecommenderTypeInputs.TopProducts:
44
+ this.recommend = 'top-products';
45
+ break;
46
+ case Creative_1.RecommenderTypeInputs.ForYou:
47
+ this.recommend = 'for-you';
48
+ break;
49
+ case Creative_1.RecommenderTypeInputs.PastPurchases:
50
+ case Creative_1.RecommenderTypeInputs.BuyAgain:
51
+ this.recommend = 'past-purchases';
52
+ break;
53
+ default:
54
+ log?.warn('Unrecognized or null recommender type:', newValue);
55
+ break;
56
+ }
57
+ break;
58
+ }
59
+ default: {
60
+ const baseName = name;
61
+ if (Creative_1.CreativeComponent.observedBaseAttributes.includes(baseName)) {
62
+ await super.baseAttributeChangedCallback(baseName, oldValue, newValue, log);
63
+ }
64
+ break;
65
+ }
66
+ }
67
+ const totem = crypto.randomUUID();
68
+ this.totem = totem;
69
+ if (!this.attributesLoaded()) {
70
+ log?.warn('Attributes not ready yet...', this.getBaseAttributeValues());
71
+ return;
72
+ }
73
+ else {
74
+ log?.debug('Attributes ready!');
75
+ }
76
+ await this.lazyLoadApi();
77
+ if (totem !== this.totem) {
78
+ log?.debug('Totem changed between attribute callbacks. Deferring product card render until last attribute');
79
+ return;
80
+ }
81
+ if (this._bounce !== undefined) {
82
+ globalThis.clearTimeout(this._bounce);
83
+ }
84
+ this._bounce = globalThis.setTimeout(() => this.render(), Creative_1.DEBOUNCE_THRESHOLD);
85
+ }
86
+ async connectedCallback() {
87
+ super.connectedCallback();
88
+ const log = this.log?.with('connectedCallback');
89
+ log?.info('connectedCallback');
90
+ await this.initApi();
91
+ const totem = crypto.randomUUID();
92
+ this.totem = totem;
93
+ if (this.attributesLoaded()) {
94
+ await this.lazyLoadApi();
95
+ if (this.totem !== totem) {
96
+ this.log?.debug('Totem changed during connectedCallback. Waiting for attribute callbacks to render');
97
+ return;
98
+ }
99
+ if (this.isConnected) {
100
+ await this.render();
101
+ }
102
+ }
103
+ }
104
+ disconnectedCallback() {
105
+ super.disconnectedCallback();
106
+ this._cancellationToken.cancel();
107
+ if (this._bounce !== undefined) {
108
+ globalThis.clearTimeout(this._bounce);
109
+ this._bounce = undefined;
110
+ }
111
+ }
112
+ async render() {
113
+ const log = this.log?.with('SurfsideProductCard', { zoneId: this.zoneId });
114
+ log?.info('Rendering carousel', this.api);
115
+ const stopTimer = log?.time?.('render product card');
116
+ this._cancellationToken.cancel();
117
+ const token = new ads_core_1.CancellationToken();
118
+ this._cancellationToken = token;
119
+ const { startRequest, defaultNative, buildHybridCarousel, buildSponsoredCarousel, buildRecommendedCarousel, renderProductCard } = this.api;
120
+ const native = defaultNative()
121
+ .withManyMetaProducts(6, 80, false)
122
+ .withMetaBrand(80, false)
123
+ .build();
124
+ const carousel = (0, ads_core_1.TryDoFlat)(() => {
125
+ const request = startRequest(this.zoneId)
126
+ .withSurfCategory(this.category)
127
+ .withKeywords(this.keywords)
128
+ .withNative(native)
129
+ .build();
130
+ switch (this.strategy) {
131
+ case Creative_1.ProductFeedStrategy.Hybrid:
132
+ return buildHybridCarousel({
133
+ type: this.recommend,
134
+ }, request);
135
+ case Creative_1.ProductFeedStrategy.Sponsored:
136
+ return buildSponsoredCarousel(request);
137
+ case Creative_1.ProductFeedStrategy.Recommended:
138
+ return buildRecommendedCarousel({
139
+ type: this.recommend
140
+ }, this.category?.[0]);
141
+ default:
142
+ return (0, ads_core_1.Err)(new ads_core_1.InvalidRecommenderTypeError(this.strategy));
143
+ }
144
+ });
145
+ if (!carousel.ok) {
146
+ log?.error(carousel.error);
147
+ return;
148
+ }
149
+ const [[builtProductCard]] = await (0, ads_core_1.ConsumeNAsync)(carousel.value.getProduct(), 1);
150
+ if (this._cancellationToken.cancelled) {
151
+ log?.debug('Render cancelled');
152
+ return;
153
+ }
154
+ if (builtProductCard === undefined) {
155
+ log?.warn('Built product card was undefined. No inventory available. Check the rest of the logs');
156
+ return;
157
+ }
158
+ const container = renderProductCard(builtProductCard);
159
+ if (!container.ok) {
160
+ log?.error('Failed to render product card', container.error);
161
+ return;
162
+ }
163
+ stopTimer?.();
164
+ this.shadow.innerHTML = '';
165
+ container.value.classList.add(`surf-zone-${this.zoneId}`);
166
+ this.shadow.appendChild(container.value);
167
+ }
168
+ }
169
+ exports.SurfsideProductCard = SurfsideProductCard;
170
+ //# sourceMappingURL=Card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.js","sourceRoot":"../@surfside-ads/","sources":["components/Card.ts"],"names":[],"mappings":"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"}