@selwise/widget 0.0.2 → 1.0.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 (643) hide show
  1. package/README.md +2 -1
  2. package/dist/npm/cjs/index.cjs +2 -0
  3. package/dist/npm/cjs/index.cjs.LICENSE.txt +1 -0
  4. package/dist/npm/cjs/index.d.ts +59 -0
  5. package/dist/npm/esm/index.d.ts +59 -4
  6. package/dist/npm/esm/index.mjs +2 -0
  7. package/dist/npm/esm/index.mjs.LICENSE.txt +1 -0
  8. package/package.json +14 -16
  9. package/dist/npm/cjs/constants.js +0 -167
  10. package/dist/npm/cjs/constants.js.map +0 -1
  11. package/dist/npm/cjs/core/conflict-resolver.js +0 -203
  12. package/dist/npm/cjs/core/conflict-resolver.js.map +0 -1
  13. package/dist/npm/cjs/core/event-batcher.js +0 -977
  14. package/dist/npm/cjs/core/event-batcher.js.map +0 -1
  15. package/dist/npm/cjs/core/experiment-overrides.js +0 -178
  16. package/dist/npm/cjs/core/experiment-overrides.js.map +0 -1
  17. package/dist/npm/cjs/core/experiments.js +0 -317
  18. package/dist/npm/cjs/core/experiments.js.map +0 -1
  19. package/dist/npm/cjs/core/frequency-caps.js +0 -297
  20. package/dist/npm/cjs/core/frequency-caps.js.map +0 -1
  21. package/dist/npm/cjs/core/index.js +0 -27
  22. package/dist/npm/cjs/core/index.js.map +0 -1
  23. package/dist/npm/cjs/core/indexeddb-queue.js +0 -333
  24. package/dist/npm/cjs/core/indexeddb-queue.js.map +0 -1
  25. package/dist/npm/cjs/core/journey-tracker.js +0 -243
  26. package/dist/npm/cjs/core/journey-tracker.js.map +0 -1
  27. package/dist/npm/cjs/core/page-targeting/index.js +0 -72
  28. package/dist/npm/cjs/core/page-targeting/index.js.map +0 -1
  29. package/dist/npm/cjs/core/script-executor.js +0 -80
  30. package/dist/npm/cjs/core/script-executor.js.map +0 -1
  31. package/dist/npm/cjs/core/segments.js +0 -172
  32. package/dist/npm/cjs/core/segments.js.map +0 -1
  33. package/dist/npm/cjs/core/tracker.js +0 -798
  34. package/dist/npm/cjs/core/tracker.js.map +0 -1
  35. package/dist/npm/cjs/datalayer/basket.js +0 -385
  36. package/dist/npm/cjs/datalayer/basket.js.map +0 -1
  37. package/dist/npm/cjs/datalayer/cart-association.js +0 -226
  38. package/dist/npm/cjs/datalayer/cart-association.js.map +0 -1
  39. package/dist/npm/cjs/datalayer/checkout.js +0 -382
  40. package/dist/npm/cjs/datalayer/checkout.js.map +0 -1
  41. package/dist/npm/cjs/datalayer/constants.js +0 -163
  42. package/dist/npm/cjs/datalayer/constants.js.map +0 -1
  43. package/dist/npm/cjs/datalayer/index.js +0 -1010
  44. package/dist/npm/cjs/datalayer/index.js.map +0 -1
  45. package/dist/npm/cjs/datalayer/listener.js +0 -416
  46. package/dist/npm/cjs/datalayer/listener.js.map +0 -1
  47. package/dist/npm/cjs/datalayer/page.js +0 -343
  48. package/dist/npm/cjs/datalayer/page.js.map +0 -1
  49. package/dist/npm/cjs/datalayer/product.js +0 -517
  50. package/dist/npm/cjs/datalayer/product.js.map +0 -1
  51. package/dist/npm/cjs/datalayer/reverse-mappings.js +0 -139
  52. package/dist/npm/cjs/datalayer/reverse-mappings.js.map +0 -1
  53. package/dist/npm/cjs/datalayer/search.js +0 -363
  54. package/dist/npm/cjs/datalayer/search.js.map +0 -1
  55. package/dist/npm/cjs/datalayer/types.js +0 -134
  56. package/dist/npm/cjs/datalayer/types.js.map +0 -1
  57. package/dist/npm/cjs/datalayer/user.js +0 -372
  58. package/dist/npm/cjs/datalayer/user.js.map +0 -1
  59. package/dist/npm/cjs/debug/index.js +0 -679
  60. package/dist/npm/cjs/debug/index.js.map +0 -1
  61. package/dist/npm/cjs/entries/cdn.js +0 -72
  62. package/dist/npm/cjs/entries/cdn.js.map +0 -1
  63. package/dist/npm/cjs/index.js +0 -10
  64. package/dist/npm/cjs/index.js.map +0 -1
  65. package/dist/npm/cjs/modules/contract/recommendation-contract.js +0 -119
  66. package/dist/npm/cjs/modules/contract/recommendation-contract.js.map +0 -1
  67. package/dist/npm/cjs/modules/contract/search-contract.js +0 -18
  68. package/dist/npm/cjs/modules/contract/search-contract.js.map +0 -1
  69. package/dist/npm/cjs/modules/contract/tracking-contract.js +0 -16
  70. package/dist/npm/cjs/modules/contract/tracking-contract.js.map +0 -1
  71. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/configs.js +0 -164
  72. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/configs.js.map +0 -1
  73. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/index.js +0 -21
  74. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/index.js.map +0 -1
  75. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/types.js +0 -3
  76. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/types.js.map +0 -1
  77. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/validators.js +0 -107
  78. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/validators.js.map +0 -1
  79. package/dist/npm/cjs/modules/contract/vendor/search-contract/configs.js +0 -404
  80. package/dist/npm/cjs/modules/contract/vendor/search-contract/configs.js.map +0 -1
  81. package/dist/npm/cjs/modules/contract/vendor/search-contract/index.js +0 -21
  82. package/dist/npm/cjs/modules/contract/vendor/search-contract/index.js.map +0 -1
  83. package/dist/npm/cjs/modules/contract/vendor/search-contract/types.js +0 -8
  84. package/dist/npm/cjs/modules/contract/vendor/search-contract/types.js.map +0 -1
  85. package/dist/npm/cjs/modules/contract/vendor/search-contract/validators.js +0 -126
  86. package/dist/npm/cjs/modules/contract/vendor/search-contract/validators.js.map +0 -1
  87. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/configs.js +0 -133
  88. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/configs.js.map +0 -1
  89. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/index.js +0 -21
  90. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/index.js.map +0 -1
  91. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/types.js +0 -3
  92. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/types.js.map +0 -1
  93. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/validators.js +0 -154
  94. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/validators.js.map +0 -1
  95. package/dist/npm/cjs/modules/contract/vendor/widget-contract/configs.js +0 -1481
  96. package/dist/npm/cjs/modules/contract/vendor/widget-contract/configs.js.map +0 -1
  97. package/dist/npm/cjs/modules/contract/vendor/widget-contract/index.js +0 -22
  98. package/dist/npm/cjs/modules/contract/vendor/widget-contract/index.js.map +0 -1
  99. package/dist/npm/cjs/modules/contract/vendor/widget-contract/layout.js +0 -21
  100. package/dist/npm/cjs/modules/contract/vendor/widget-contract/layout.js.map +0 -1
  101. package/dist/npm/cjs/modules/contract/vendor/widget-contract/types.js +0 -8
  102. package/dist/npm/cjs/modules/contract/vendor/widget-contract/types.js.map +0 -1
  103. package/dist/npm/cjs/modules/contract/vendor/widget-contract/validators.js +0 -139
  104. package/dist/npm/cjs/modules/contract/vendor/widget-contract/validators.js.map +0 -1
  105. package/dist/npm/cjs/modules/contract/widget-contract.js +0 -10
  106. package/dist/npm/cjs/modules/contract/widget-contract.js.map +0 -1
  107. package/dist/npm/cjs/modules/products/tracking.js +0 -214
  108. package/dist/npm/cjs/modules/products/tracking.js.map +0 -1
  109. package/dist/npm/cjs/modules/recommendation/cart-handlers.js +0 -52
  110. package/dist/npm/cjs/modules/recommendation/cart-handlers.js.map +0 -1
  111. package/dist/npm/cjs/modules/recommendation/components/product-card-renderer.js +0 -287
  112. package/dist/npm/cjs/modules/recommendation/components/product-card-renderer.js.map +0 -1
  113. package/dist/npm/cjs/modules/recommendation/index.js +0 -678
  114. package/dist/npm/cjs/modules/recommendation/index.js.map +0 -1
  115. package/dist/npm/cjs/modules/recommendation/renderers/grid.js +0 -21
  116. package/dist/npm/cjs/modules/recommendation/renderers/grid.js.map +0 -1
  117. package/dist/npm/cjs/modules/recommendation/renderers/list.js +0 -22
  118. package/dist/npm/cjs/modules/recommendation/renderers/list.js.map +0 -1
  119. package/dist/npm/cjs/modules/recommendation/renderers/masonry.js +0 -22
  120. package/dist/npm/cjs/modules/recommendation/renderers/masonry.js.map +0 -1
  121. package/dist/npm/cjs/modules/recommendation/renderers/slider-renderer.js +0 -145
  122. package/dist/npm/cjs/modules/recommendation/renderers/slider-renderer.js.map +0 -1
  123. package/dist/npm/cjs/modules/recommendation/slider-controls.js +0 -201
  124. package/dist/npm/cjs/modules/recommendation/slider-controls.js.map +0 -1
  125. package/dist/npm/cjs/modules/recommendation/tracking.js +0 -247
  126. package/dist/npm/cjs/modules/recommendation/tracking.js.map +0 -1
  127. package/dist/npm/cjs/modules/recommendation/utils/dom.js +0 -70
  128. package/dist/npm/cjs/modules/recommendation/utils/dom.js.map +0 -1
  129. package/dist/npm/cjs/modules/recommendation/utils/format.js +0 -13
  130. package/dist/npm/cjs/modules/recommendation/utils/format.js.map +0 -1
  131. package/dist/npm/cjs/modules/recommendation/utils/index.js +0 -22
  132. package/dist/npm/cjs/modules/recommendation/utils/index.js.map +0 -1
  133. package/dist/npm/cjs/modules/renderer/helpers.js +0 -16
  134. package/dist/npm/cjs/modules/renderer/helpers.js.map +0 -1
  135. package/dist/npm/cjs/modules/renderer/index.js +0 -52
  136. package/dist/npm/cjs/modules/renderer/index.js.map +0 -1
  137. package/dist/npm/cjs/modules/renderer/style-resolver.js +0 -11
  138. package/dist/npm/cjs/modules/renderer/style-resolver.js.map +0 -1
  139. package/dist/npm/cjs/modules/renderer/styles/index.js +0 -254
  140. package/dist/npm/cjs/modules/renderer/styles/index.js.map +0 -1
  141. package/dist/npm/cjs/modules/renderer/styles.js +0 -7
  142. package/dist/npm/cjs/modules/renderer/styles.js.map +0 -1
  143. package/dist/npm/cjs/modules/renderer/utils/helpers.js +0 -243
  144. package/dist/npm/cjs/modules/renderer/utils/helpers.js.map +0 -1
  145. package/dist/npm/cjs/modules/renderer/utils/image-renderer.js +0 -65
  146. package/dist/npm/cjs/modules/renderer/utils/image-renderer.js.map +0 -1
  147. package/dist/npm/cjs/modules/renderer/utils/placement.js +0 -34
  148. package/dist/npm/cjs/modules/renderer/utils/placement.js.map +0 -1
  149. package/dist/npm/cjs/modules/renderer/utils.js +0 -61
  150. package/dist/npm/cjs/modules/renderer/utils.js.map +0 -1
  151. package/dist/npm/cjs/modules/renderer/widgets/announcement-bar.js +0 -84
  152. package/dist/npm/cjs/modules/renderer/widgets/announcement-bar.js.map +0 -1
  153. package/dist/npm/cjs/modules/renderer/widgets/cart-count.js +0 -211
  154. package/dist/npm/cjs/modules/renderer/widgets/cart-count.js.map +0 -1
  155. package/dist/npm/cjs/modules/renderer/widgets/cookie-consent.js +0 -459
  156. package/dist/npm/cjs/modules/renderer/widgets/cookie-consent.js.map +0 -1
  157. package/dist/npm/cjs/modules/renderer/widgets/countdown-timer.js +0 -132
  158. package/dist/npm/cjs/modules/renderer/widgets/countdown-timer.js.map +0 -1
  159. package/dist/npm/cjs/modules/renderer/widgets/custom.js +0 -58
  160. package/dist/npm/cjs/modules/renderer/widgets/custom.js.map +0 -1
  161. package/dist/npm/cjs/modules/renderer/widgets/embedded-card.js +0 -97
  162. package/dist/npm/cjs/modules/renderer/widgets/embedded-card.js.map +0 -1
  163. package/dist/npm/cjs/modules/renderer/widgets/exit-intent-popup.js +0 -151
  164. package/dist/npm/cjs/modules/renderer/widgets/exit-intent-popup.js.map +0 -1
  165. package/dist/npm/cjs/modules/renderer/widgets/floating-button.js +0 -70
  166. package/dist/npm/cjs/modules/renderer/widgets/floating-button.js.map +0 -1
  167. package/dist/npm/cjs/modules/renderer/widgets/helpers.js +0 -87
  168. package/dist/npm/cjs/modules/renderer/widgets/helpers.js.map +0 -1
  169. package/dist/npm/cjs/modules/renderer/widgets/index.js +0 -39
  170. package/dist/npm/cjs/modules/renderer/widgets/index.js.map +0 -1
  171. package/dist/npm/cjs/modules/renderer/widgets/inline-banner.js +0 -124
  172. package/dist/npm/cjs/modules/renderer/widgets/inline-banner.js.map +0 -1
  173. package/dist/npm/cjs/modules/renderer/widgets/newsletter.js +0 -280
  174. package/dist/npm/cjs/modules/renderer/widgets/newsletter.js.map +0 -1
  175. package/dist/npm/cjs/modules/renderer/widgets/product-view-count.js +0 -197
  176. package/dist/npm/cjs/modules/renderer/widgets/product-view-count.js.map +0 -1
  177. package/dist/npm/cjs/modules/renderer/widgets/slide-in.js +0 -105
  178. package/dist/npm/cjs/modules/renderer/widgets/slide-in.js.map +0 -1
  179. package/dist/npm/cjs/modules/renderer/widgets/sticky-footer.js +0 -47
  180. package/dist/npm/cjs/modules/renderer/widgets/sticky-footer.js.map +0 -1
  181. package/dist/npm/cjs/modules/search/cart/index.js +0 -42
  182. package/dist/npm/cjs/modules/search/cart/index.js.map +0 -1
  183. package/dist/npm/cjs/modules/search/components/index.js +0 -13
  184. package/dist/npm/cjs/modules/search/components/index.js.map +0 -1
  185. package/dist/npm/cjs/modules/search/components/search-box.js +0 -28
  186. package/dist/npm/cjs/modules/search/components/search-box.js.map +0 -1
  187. package/dist/npm/cjs/modules/search/components/search-item.js +0 -197
  188. package/dist/npm/cjs/modules/search/components/search-item.js.map +0 -1
  189. package/dist/npm/cjs/modules/search/components/suggestions.js +0 -132
  190. package/dist/npm/cjs/modules/search/components/suggestions.js.map +0 -1
  191. package/dist/npm/cjs/modules/search/index.js +0 -646
  192. package/dist/npm/cjs/modules/search/index.js.map +0 -1
  193. package/dist/npm/cjs/modules/search/renderers/position-renderers.js +0 -229
  194. package/dist/npm/cjs/modules/search/renderers/position-renderers.js.map +0 -1
  195. package/dist/npm/cjs/modules/search/renderers/results-renderer.js +0 -180
  196. package/dist/npm/cjs/modules/search/renderers/results-renderer.js.map +0 -1
  197. package/dist/npm/cjs/modules/search/services/api-service.js +0 -121
  198. package/dist/npm/cjs/modules/search/services/api-service.js.map +0 -1
  199. package/dist/npm/cjs/modules/search/services/tracking-service.js +0 -263
  200. package/dist/npm/cjs/modules/search/services/tracking-service.js.map +0 -1
  201. package/dist/npm/cjs/modules/search/styles.js +0 -864
  202. package/dist/npm/cjs/modules/search/styles.js.map +0 -1
  203. package/dist/npm/cjs/modules/search/utils/helpers.js +0 -100
  204. package/dist/npm/cjs/modules/search/utils/helpers.js.map +0 -1
  205. package/dist/npm/cjs/modules/search/utils/icons.js +0 -41
  206. package/dist/npm/cjs/modules/search/utils/icons.js.map +0 -1
  207. package/dist/npm/cjs/modules/search/utils/index.js +0 -22
  208. package/dist/npm/cjs/modules/search/utils/index.js.map +0 -1
  209. package/dist/npm/cjs/modules/search/utils/storage.js +0 -58
  210. package/dist/npm/cjs/modules/search/utils/storage.js.map +0 -1
  211. package/dist/npm/cjs/selwise.js +0 -1160
  212. package/dist/npm/cjs/selwise.js.map +0 -1
  213. package/dist/npm/cjs/sentry-test.js +0 -118
  214. package/dist/npm/cjs/sentry-test.js.map +0 -1
  215. package/dist/npm/cjs/sentry.js +0 -451
  216. package/dist/npm/cjs/sentry.js.map +0 -1
  217. package/dist/npm/cjs/shared/cart/handlers.js +0 -259
  218. package/dist/npm/cjs/shared/cart/handlers.js.map +0 -1
  219. package/dist/npm/cjs/shared/cart/index.js +0 -23
  220. package/dist/npm/cjs/shared/cart/index.js.map +0 -1
  221. package/dist/npm/cjs/shared/cart/types.js +0 -7
  222. package/dist/npm/cjs/shared/cart/types.js.map +0 -1
  223. package/dist/npm/cjs/shared/product-card/index.js +0 -24
  224. package/dist/npm/cjs/shared/product-card/index.js.map +0 -1
  225. package/dist/npm/cjs/shared/product-card/renderer.js +0 -341
  226. package/dist/npm/cjs/shared/product-card/renderer.js.map +0 -1
  227. package/dist/npm/cjs/shared/product-card/styles.js +0 -195
  228. package/dist/npm/cjs/shared/product-card/styles.js.map +0 -1
  229. package/dist/npm/cjs/shared/product-card/types.js +0 -67
  230. package/dist/npm/cjs/shared/product-card/types.js.map +0 -1
  231. package/dist/npm/cjs/types/config.js +0 -6
  232. package/dist/npm/cjs/types/config.js.map +0 -1
  233. package/dist/npm/cjs/types/experiments.js +0 -17
  234. package/dist/npm/cjs/types/experiments.js.map +0 -1
  235. package/dist/npm/cjs/types/global-api.js +0 -3
  236. package/dist/npm/cjs/types/global-api.js.map +0 -1
  237. package/dist/npm/cjs/types/index.js +0 -27
  238. package/dist/npm/cjs/types/index.js.map +0 -1
  239. package/dist/npm/cjs/types/recommendation.js +0 -6
  240. package/dist/npm/cjs/types/recommendation.js.map +0 -1
  241. package/dist/npm/cjs/types/renderer.js +0 -6
  242. package/dist/npm/cjs/types/renderer.js.map +0 -1
  243. package/dist/npm/cjs/types/search.js +0 -6
  244. package/dist/npm/cjs/types/search.js.map +0 -1
  245. package/dist/npm/cjs/utils/api-url.js +0 -35
  246. package/dist/npm/cjs/utils/api-url.js.map +0 -1
  247. package/dist/npm/cjs/utils/debounce.js +0 -74
  248. package/dist/npm/cjs/utils/debounce.js.map +0 -1
  249. package/dist/npm/cjs/utils/event-id.js +0 -23
  250. package/dist/npm/cjs/utils/event-id.js.map +0 -1
  251. package/dist/npm/cjs/utils/index.js +0 -28
  252. package/dist/npm/cjs/utils/index.js.map +0 -1
  253. package/dist/npm/cjs/utils/logger.js +0 -74
  254. package/dist/npm/cjs/utils/logger.js.map +0 -1
  255. package/dist/npm/cjs/utils/sanitize.js +0 -159
  256. package/dist/npm/cjs/utils/sanitize.js.map +0 -1
  257. package/dist/npm/cjs/utils/storage.js +0 -285
  258. package/dist/npm/cjs/utils/storage.js.map +0 -1
  259. package/dist/npm/cjs/utils/tracking-metadata.js +0 -18
  260. package/dist/npm/cjs/utils/tracking-metadata.js.map +0 -1
  261. package/dist/npm/cjs/utils/url-matcher.js +0 -11
  262. package/dist/npm/cjs/utils/url-matcher.js.map +0 -1
  263. package/dist/npm/esm/constants.d.ts +0 -130
  264. package/dist/npm/esm/constants.js +0 -164
  265. package/dist/npm/esm/constants.js.map +0 -1
  266. package/dist/npm/esm/core/conflict-resolver.d.ts +0 -96
  267. package/dist/npm/esm/core/conflict-resolver.js +0 -198
  268. package/dist/npm/esm/core/conflict-resolver.js.map +0 -1
  269. package/dist/npm/esm/core/event-batcher.d.ts +0 -253
  270. package/dist/npm/esm/core/event-batcher.js +0 -973
  271. package/dist/npm/esm/core/event-batcher.js.map +0 -1
  272. package/dist/npm/esm/core/experiment-overrides.d.ts +0 -7
  273. package/dist/npm/esm/core/experiment-overrides.js +0 -172
  274. package/dist/npm/esm/core/experiment-overrides.js.map +0 -1
  275. package/dist/npm/esm/core/experiments.d.ts +0 -90
  276. package/dist/npm/esm/core/experiments.js +0 -313
  277. package/dist/npm/esm/core/experiments.js.map +0 -1
  278. package/dist/npm/esm/core/frequency-caps.d.ts +0 -124
  279. package/dist/npm/esm/core/frequency-caps.js +0 -292
  280. package/dist/npm/esm/core/frequency-caps.js.map +0 -1
  281. package/dist/npm/esm/core/index.d.ts +0 -10
  282. package/dist/npm/esm/core/index.js +0 -11
  283. package/dist/npm/esm/core/index.js.map +0 -1
  284. package/dist/npm/esm/core/indexeddb-queue.d.ts +0 -83
  285. package/dist/npm/esm/core/indexeddb-queue.js +0 -328
  286. package/dist/npm/esm/core/indexeddb-queue.js.map +0 -1
  287. package/dist/npm/esm/core/journey-tracker.d.ts +0 -102
  288. package/dist/npm/esm/core/journey-tracker.js +0 -237
  289. package/dist/npm/esm/core/journey-tracker.js.map +0 -1
  290. package/dist/npm/esm/core/page-targeting/index.d.ts +0 -8
  291. package/dist/npm/esm/core/page-targeting/index.js +0 -67
  292. package/dist/npm/esm/core/page-targeting/index.js.map +0 -1
  293. package/dist/npm/esm/core/script-executor.d.ts +0 -31
  294. package/dist/npm/esm/core/script-executor.js +0 -76
  295. package/dist/npm/esm/core/script-executor.js.map +0 -1
  296. package/dist/npm/esm/core/segments.d.ts +0 -39
  297. package/dist/npm/esm/core/segments.js +0 -168
  298. package/dist/npm/esm/core/segments.js.map +0 -1
  299. package/dist/npm/esm/core/tracker.d.ts +0 -182
  300. package/dist/npm/esm/core/tracker.js +0 -794
  301. package/dist/npm/esm/core/tracker.js.map +0 -1
  302. package/dist/npm/esm/datalayer/basket.d.ts +0 -104
  303. package/dist/npm/esm/datalayer/basket.js +0 -381
  304. package/dist/npm/esm/datalayer/basket.js.map +0 -1
  305. package/dist/npm/esm/datalayer/cart-association.d.ts +0 -65
  306. package/dist/npm/esm/datalayer/cart-association.js +0 -222
  307. package/dist/npm/esm/datalayer/cart-association.js.map +0 -1
  308. package/dist/npm/esm/datalayer/checkout.d.ts +0 -96
  309. package/dist/npm/esm/datalayer/checkout.js +0 -378
  310. package/dist/npm/esm/datalayer/checkout.js.map +0 -1
  311. package/dist/npm/esm/datalayer/constants.d.ts +0 -77
  312. package/dist/npm/esm/datalayer/constants.js +0 -160
  313. package/dist/npm/esm/datalayer/constants.js.map +0 -1
  314. package/dist/npm/esm/datalayer/index.d.ts +0 -212
  315. package/dist/npm/esm/datalayer/index.js +0 -991
  316. package/dist/npm/esm/datalayer/index.js.map +0 -1
  317. package/dist/npm/esm/datalayer/listener.d.ts +0 -108
  318. package/dist/npm/esm/datalayer/listener.js +0 -411
  319. package/dist/npm/esm/datalayer/listener.js.map +0 -1
  320. package/dist/npm/esm/datalayer/page.d.ts +0 -94
  321. package/dist/npm/esm/datalayer/page.js +0 -339
  322. package/dist/npm/esm/datalayer/page.js.map +0 -1
  323. package/dist/npm/esm/datalayer/product.d.ts +0 -133
  324. package/dist/npm/esm/datalayer/product.js +0 -513
  325. package/dist/npm/esm/datalayer/product.js.map +0 -1
  326. package/dist/npm/esm/datalayer/reverse-mappings.d.ts +0 -62
  327. package/dist/npm/esm/datalayer/reverse-mappings.js +0 -135
  328. package/dist/npm/esm/datalayer/reverse-mappings.js.map +0 -1
  329. package/dist/npm/esm/datalayer/search.d.ts +0 -108
  330. package/dist/npm/esm/datalayer/search.js +0 -359
  331. package/dist/npm/esm/datalayer/search.js.map +0 -1
  332. package/dist/npm/esm/datalayer/types.d.ts +0 -292
  333. package/dist/npm/esm/datalayer/types.js +0 -131
  334. package/dist/npm/esm/datalayer/types.js.map +0 -1
  335. package/dist/npm/esm/datalayer/user.d.ts +0 -104
  336. package/dist/npm/esm/datalayer/user.js +0 -368
  337. package/dist/npm/esm/datalayer/user.js.map +0 -1
  338. package/dist/npm/esm/debug/index.d.ts +0 -173
  339. package/dist/npm/esm/debug/index.js +0 -673
  340. package/dist/npm/esm/debug/index.js.map +0 -1
  341. package/dist/npm/esm/entries/cdn.d.ts +0 -1
  342. package/dist/npm/esm/entries/cdn.js +0 -35
  343. package/dist/npm/esm/entries/cdn.js.map +0 -1
  344. package/dist/npm/esm/index.js +0 -4
  345. package/dist/npm/esm/index.js.map +0 -1
  346. package/dist/npm/esm/modules/contract/recommendation-contract.d.ts +0 -5
  347. package/dist/npm/esm/modules/contract/recommendation-contract.js +0 -107
  348. package/dist/npm/esm/modules/contract/recommendation-contract.js.map +0 -1
  349. package/dist/npm/esm/modules/contract/search-contract.d.ts +0 -1
  350. package/dist/npm/esm/modules/contract/search-contract.js +0 -2
  351. package/dist/npm/esm/modules/contract/search-contract.js.map +0 -1
  352. package/dist/npm/esm/modules/contract/tracking-contract.d.ts +0 -1
  353. package/dist/npm/esm/modules/contract/tracking-contract.js +0 -2
  354. package/dist/npm/esm/modules/contract/tracking-contract.js.map +0 -1
  355. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.d.ts +0 -8
  356. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.js +0 -160
  357. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.js.map +0 -1
  358. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.d.ts +0 -3
  359. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.js +0 -5
  360. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.js.map +0 -1
  361. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.d.ts +0 -56
  362. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.js +0 -2
  363. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.js.map +0 -1
  364. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.d.ts +0 -3
  365. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.js +0 -103
  366. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.js.map +0 -1
  367. package/dist/npm/esm/modules/contract/vendor/search-contract/configs.d.ts +0 -35
  368. package/dist/npm/esm/modules/contract/vendor/search-contract/configs.js +0 -396
  369. package/dist/npm/esm/modules/contract/vendor/search-contract/configs.js.map +0 -1
  370. package/dist/npm/esm/modules/contract/vendor/search-contract/index.d.ts +0 -3
  371. package/dist/npm/esm/modules/contract/vendor/search-contract/index.js +0 -5
  372. package/dist/npm/esm/modules/contract/vendor/search-contract/index.js.map +0 -1
  373. package/dist/npm/esm/modules/contract/vendor/search-contract/types.d.ts +0 -119
  374. package/dist/npm/esm/modules/contract/vendor/search-contract/types.js +0 -7
  375. package/dist/npm/esm/modules/contract/vendor/search-contract/types.js.map +0 -1
  376. package/dist/npm/esm/modules/contract/vendor/search-contract/validators.d.ts +0 -22
  377. package/dist/npm/esm/modules/contract/vendor/search-contract/validators.js +0 -118
  378. package/dist/npm/esm/modules/contract/vendor/search-contract/validators.js.map +0 -1
  379. package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.d.ts +0 -7
  380. package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.js +0 -130
  381. package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.js.map +0 -1
  382. package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.d.ts +0 -3
  383. package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.js +0 -5
  384. package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.js.map +0 -1
  385. package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.d.ts +0 -37
  386. package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.js +0 -2
  387. package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.js.map +0 -1
  388. package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.d.ts +0 -6
  389. package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.js +0 -147
  390. package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.js.map +0 -1
  391. package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.d.ts +0 -22
  392. package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.js +0 -1472
  393. package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.js.map +0 -1
  394. package/dist/npm/esm/modules/contract/vendor/widget-contract/index.d.ts +0 -4
  395. package/dist/npm/esm/modules/contract/vendor/widget-contract/index.js +0 -6
  396. package/dist/npm/esm/modules/contract/vendor/widget-contract/index.js.map +0 -1
  397. package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.d.ts +0 -14
  398. package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.js +0 -18
  399. package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.js.map +0 -1
  400. package/dist/npm/esm/modules/contract/vendor/widget-contract/types.d.ts +0 -128
  401. package/dist/npm/esm/modules/contract/vendor/widget-contract/types.js +0 -7
  402. package/dist/npm/esm/modules/contract/vendor/widget-contract/types.js.map +0 -1
  403. package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.d.ts +0 -11
  404. package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.js +0 -132
  405. package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.js.map +0 -1
  406. package/dist/npm/esm/modules/contract/widget-contract.d.ts +0 -1
  407. package/dist/npm/esm/modules/contract/widget-contract.js +0 -2
  408. package/dist/npm/esm/modules/contract/widget-contract.js.map +0 -1
  409. package/dist/npm/esm/modules/products/tracking.d.ts +0 -122
  410. package/dist/npm/esm/modules/products/tracking.js +0 -203
  411. package/dist/npm/esm/modules/products/tracking.js.map +0 -1
  412. package/dist/npm/esm/modules/recommendation/cart-handlers.d.ts +0 -10
  413. package/dist/npm/esm/modules/recommendation/cart-handlers.js +0 -49
  414. package/dist/npm/esm/modules/recommendation/cart-handlers.js.map +0 -1
  415. package/dist/npm/esm/modules/recommendation/components/product-card-renderer.d.ts +0 -37
  416. package/dist/npm/esm/modules/recommendation/components/product-card-renderer.js +0 -281
  417. package/dist/npm/esm/modules/recommendation/components/product-card-renderer.js.map +0 -1
  418. package/dist/npm/esm/modules/recommendation/index.d.ts +0 -11
  419. package/dist/npm/esm/modules/recommendation/index.js +0 -674
  420. package/dist/npm/esm/modules/recommendation/index.js.map +0 -1
  421. package/dist/npm/esm/modules/recommendation/renderers/grid.d.ts +0 -5
  422. package/dist/npm/esm/modules/recommendation/renderers/grid.js +0 -18
  423. package/dist/npm/esm/modules/recommendation/renderers/grid.js.map +0 -1
  424. package/dist/npm/esm/modules/recommendation/renderers/list.d.ts +0 -5
  425. package/dist/npm/esm/modules/recommendation/renderers/list.js +0 -19
  426. package/dist/npm/esm/modules/recommendation/renderers/list.js.map +0 -1
  427. package/dist/npm/esm/modules/recommendation/renderers/masonry.d.ts +0 -5
  428. package/dist/npm/esm/modules/recommendation/renderers/masonry.js +0 -19
  429. package/dist/npm/esm/modules/recommendation/renderers/masonry.js.map +0 -1
  430. package/dist/npm/esm/modules/recommendation/renderers/slider-renderer.d.ts +0 -10
  431. package/dist/npm/esm/modules/recommendation/renderers/slider-renderer.js +0 -140
  432. package/dist/npm/esm/modules/recommendation/renderers/slider-renderer.js.map +0 -1
  433. package/dist/npm/esm/modules/recommendation/slider-controls.d.ts +0 -17
  434. package/dist/npm/esm/modules/recommendation/slider-controls.js +0 -187
  435. package/dist/npm/esm/modules/recommendation/slider-controls.js.map +0 -1
  436. package/dist/npm/esm/modules/recommendation/tracking.d.ts +0 -28
  437. package/dist/npm/esm/modules/recommendation/tracking.js +0 -237
  438. package/dist/npm/esm/modules/recommendation/tracking.js.map +0 -1
  439. package/dist/npm/esm/modules/recommendation/utils/dom.d.ts +0 -10
  440. package/dist/npm/esm/modules/recommendation/utils/dom.js +0 -63
  441. package/dist/npm/esm/modules/recommendation/utils/dom.js.map +0 -1
  442. package/dist/npm/esm/modules/recommendation/utils/format.d.ts +0 -4
  443. package/dist/npm/esm/modules/recommendation/utils/format.js +0 -10
  444. package/dist/npm/esm/modules/recommendation/utils/format.js.map +0 -1
  445. package/dist/npm/esm/modules/recommendation/utils/index.d.ts +0 -5
  446. package/dist/npm/esm/modules/recommendation/utils/index.js +0 -6
  447. package/dist/npm/esm/modules/recommendation/utils/index.js.map +0 -1
  448. package/dist/npm/esm/modules/renderer/helpers.d.ts +0 -5
  449. package/dist/npm/esm/modules/renderer/helpers.js +0 -6
  450. package/dist/npm/esm/modules/renderer/helpers.js.map +0 -1
  451. package/dist/npm/esm/modules/renderer/index.d.ts +0 -8
  452. package/dist/npm/esm/modules/renderer/index.js +0 -48
  453. package/dist/npm/esm/modules/renderer/index.js.map +0 -1
  454. package/dist/npm/esm/modules/renderer/style-resolver.d.ts +0 -1
  455. package/dist/npm/esm/modules/renderer/style-resolver.js +0 -8
  456. package/dist/npm/esm/modules/renderer/style-resolver.js.map +0 -1
  457. package/dist/npm/esm/modules/renderer/styles/index.d.ts +0 -12
  458. package/dist/npm/esm/modules/renderer/styles/index.js +0 -250
  459. package/dist/npm/esm/modules/renderer/styles/index.js.map +0 -1
  460. package/dist/npm/esm/modules/renderer/styles.d.ts +0 -1
  461. package/dist/npm/esm/modules/renderer/styles.js +0 -2
  462. package/dist/npm/esm/modules/renderer/styles.js.map +0 -1
  463. package/dist/npm/esm/modules/renderer/utils/helpers.d.ts +0 -58
  464. package/dist/npm/esm/modules/renderer/utils/helpers.js +0 -225
  465. package/dist/npm/esm/modules/renderer/utils/helpers.js.map +0 -1
  466. package/dist/npm/esm/modules/renderer/utils/image-renderer.d.ts +0 -17
  467. package/dist/npm/esm/modules/renderer/utils/image-renderer.js +0 -60
  468. package/dist/npm/esm/modules/renderer/utils/image-renderer.js.map +0 -1
  469. package/dist/npm/esm/modules/renderer/utils/placement.d.ts +0 -6
  470. package/dist/npm/esm/modules/renderer/utils/placement.js +0 -31
  471. package/dist/npm/esm/modules/renderer/utils/placement.js.map +0 -1
  472. package/dist/npm/esm/modules/renderer/utils.d.ts +0 -11
  473. package/dist/npm/esm/modules/renderer/utils.js +0 -44
  474. package/dist/npm/esm/modules/renderer/utils.js.map +0 -1
  475. package/dist/npm/esm/modules/renderer/widgets/announcement-bar.d.ts +0 -5
  476. package/dist/npm/esm/modules/renderer/widgets/announcement-bar.js +0 -81
  477. package/dist/npm/esm/modules/renderer/widgets/announcement-bar.js.map +0 -1
  478. package/dist/npm/esm/modules/renderer/widgets/cart-count.d.ts +0 -6
  479. package/dist/npm/esm/modules/renderer/widgets/cart-count.js +0 -208
  480. package/dist/npm/esm/modules/renderer/widgets/cart-count.js.map +0 -1
  481. package/dist/npm/esm/modules/renderer/widgets/cookie-consent.d.ts +0 -18
  482. package/dist/npm/esm/modules/renderer/widgets/cookie-consent.js +0 -454
  483. package/dist/npm/esm/modules/renderer/widgets/cookie-consent.js.map +0 -1
  484. package/dist/npm/esm/modules/renderer/widgets/countdown-timer.d.ts +0 -5
  485. package/dist/npm/esm/modules/renderer/widgets/countdown-timer.js +0 -129
  486. package/dist/npm/esm/modules/renderer/widgets/countdown-timer.js.map +0 -1
  487. package/dist/npm/esm/modules/renderer/widgets/custom.d.ts +0 -5
  488. package/dist/npm/esm/modules/renderer/widgets/custom.js +0 -55
  489. package/dist/npm/esm/modules/renderer/widgets/custom.js.map +0 -1
  490. package/dist/npm/esm/modules/renderer/widgets/embedded-card.d.ts +0 -5
  491. package/dist/npm/esm/modules/renderer/widgets/embedded-card.js +0 -94
  492. package/dist/npm/esm/modules/renderer/widgets/embedded-card.js.map +0 -1
  493. package/dist/npm/esm/modules/renderer/widgets/exit-intent-popup.d.ts +0 -6
  494. package/dist/npm/esm/modules/renderer/widgets/exit-intent-popup.js +0 -147
  495. package/dist/npm/esm/modules/renderer/widgets/exit-intent-popup.js.map +0 -1
  496. package/dist/npm/esm/modules/renderer/widgets/floating-button.d.ts +0 -5
  497. package/dist/npm/esm/modules/renderer/widgets/floating-button.js +0 -67
  498. package/dist/npm/esm/modules/renderer/widgets/floating-button.js.map +0 -1
  499. package/dist/npm/esm/modules/renderer/widgets/helpers.d.ts +0 -29
  500. package/dist/npm/esm/modules/renderer/widgets/helpers.js +0 -82
  501. package/dist/npm/esm/modules/renderer/widgets/helpers.js.map +0 -1
  502. package/dist/npm/esm/modules/renderer/widgets/index.d.ts +0 -17
  503. package/dist/npm/esm/modules/renderer/widgets/index.js +0 -19
  504. package/dist/npm/esm/modules/renderer/widgets/index.js.map +0 -1
  505. package/dist/npm/esm/modules/renderer/widgets/inline-banner.d.ts +0 -5
  506. package/dist/npm/esm/modules/renderer/widgets/inline-banner.js +0 -121
  507. package/dist/npm/esm/modules/renderer/widgets/inline-banner.js.map +0 -1
  508. package/dist/npm/esm/modules/renderer/widgets/newsletter.d.ts +0 -6
  509. package/dist/npm/esm/modules/renderer/widgets/newsletter.js +0 -277
  510. package/dist/npm/esm/modules/renderer/widgets/newsletter.js.map +0 -1
  511. package/dist/npm/esm/modules/renderer/widgets/product-view-count.d.ts +0 -6
  512. package/dist/npm/esm/modules/renderer/widgets/product-view-count.js +0 -194
  513. package/dist/npm/esm/modules/renderer/widgets/product-view-count.js.map +0 -1
  514. package/dist/npm/esm/modules/renderer/widgets/slide-in.d.ts +0 -5
  515. package/dist/npm/esm/modules/renderer/widgets/slide-in.js +0 -102
  516. package/dist/npm/esm/modules/renderer/widgets/slide-in.js.map +0 -1
  517. package/dist/npm/esm/modules/renderer/widgets/sticky-footer.d.ts +0 -5
  518. package/dist/npm/esm/modules/renderer/widgets/sticky-footer.js +0 -44
  519. package/dist/npm/esm/modules/renderer/widgets/sticky-footer.js.map +0 -1
  520. package/dist/npm/esm/modules/search/cart/index.d.ts +0 -26
  521. package/dist/npm/esm/modules/search/cart/index.js +0 -39
  522. package/dist/npm/esm/modules/search/cart/index.js.map +0 -1
  523. package/dist/npm/esm/modules/search/components/index.d.ts +0 -6
  524. package/dist/npm/esm/modules/search/components/index.js +0 -7
  525. package/dist/npm/esm/modules/search/components/index.js.map +0 -1
  526. package/dist/npm/esm/modules/search/components/search-box.d.ts +0 -11
  527. package/dist/npm/esm/modules/search/components/search-box.js +0 -25
  528. package/dist/npm/esm/modules/search/components/search-box.js.map +0 -1
  529. package/dist/npm/esm/modules/search/components/search-item.d.ts +0 -20
  530. package/dist/npm/esm/modules/search/components/search-item.js +0 -193
  531. package/dist/npm/esm/modules/search/components/search-item.js.map +0 -1
  532. package/dist/npm/esm/modules/search/components/suggestions.d.ts +0 -10
  533. package/dist/npm/esm/modules/search/components/suggestions.js +0 -129
  534. package/dist/npm/esm/modules/search/components/suggestions.js.map +0 -1
  535. package/dist/npm/esm/modules/search/index.d.ts +0 -67
  536. package/dist/npm/esm/modules/search/index.js +0 -642
  537. package/dist/npm/esm/modules/search/index.js.map +0 -1
  538. package/dist/npm/esm/modules/search/renderers/position-renderers.d.ts +0 -23
  539. package/dist/npm/esm/modules/search/renderers/position-renderers.js +0 -221
  540. package/dist/npm/esm/modules/search/renderers/position-renderers.js.map +0 -1
  541. package/dist/npm/esm/modules/search/renderers/results-renderer.d.ts +0 -20
  542. package/dist/npm/esm/modules/search/renderers/results-renderer.js +0 -176
  543. package/dist/npm/esm/modules/search/renderers/results-renderer.js.map +0 -1
  544. package/dist/npm/esm/modules/search/services/api-service.d.ts +0 -18
  545. package/dist/npm/esm/modules/search/services/api-service.js +0 -115
  546. package/dist/npm/esm/modules/search/services/api-service.js.map +0 -1
  547. package/dist/npm/esm/modules/search/services/tracking-service.d.ts +0 -16
  548. package/dist/npm/esm/modules/search/services/tracking-service.js +0 -250
  549. package/dist/npm/esm/modules/search/services/tracking-service.js.map +0 -1
  550. package/dist/npm/esm/modules/search/styles.d.ts +0 -13
  551. package/dist/npm/esm/modules/search/styles.js +0 -860
  552. package/dist/npm/esm/modules/search/styles.js.map +0 -1
  553. package/dist/npm/esm/modules/search/utils/helpers.d.ts +0 -24
  554. package/dist/npm/esm/modules/search/utils/helpers.js +0 -93
  555. package/dist/npm/esm/modules/search/utils/helpers.js.map +0 -1
  556. package/dist/npm/esm/modules/search/utils/icons.d.ts +0 -16
  557. package/dist/npm/esm/modules/search/utils/icons.js +0 -36
  558. package/dist/npm/esm/modules/search/utils/icons.js.map +0 -1
  559. package/dist/npm/esm/modules/search/utils/index.d.ts +0 -6
  560. package/dist/npm/esm/modules/search/utils/index.js +0 -7
  561. package/dist/npm/esm/modules/search/utils/index.js.map +0 -1
  562. package/dist/npm/esm/modules/search/utils/storage.d.ts +0 -7
  563. package/dist/npm/esm/modules/search/utils/storage.js +0 -52
  564. package/dist/npm/esm/modules/search/utils/storage.js.map +0 -1
  565. package/dist/npm/esm/package.json +0 -1
  566. package/dist/npm/esm/selwise.d.ts +0 -209
  567. package/dist/npm/esm/selwise.js +0 -1123
  568. package/dist/npm/esm/selwise.js.map +0 -1
  569. package/dist/npm/esm/sentry-test.d.ts +0 -45
  570. package/dist/npm/esm/sentry-test.js +0 -109
  571. package/dist/npm/esm/sentry-test.js.map +0 -1
  572. package/dist/npm/esm/sentry.d.ts +0 -86
  573. package/dist/npm/esm/sentry.js +0 -441
  574. package/dist/npm/esm/sentry.js.map +0 -1
  575. package/dist/npm/esm/shared/cart/handlers.d.ts +0 -46
  576. package/dist/npm/esm/shared/cart/handlers.js +0 -249
  577. package/dist/npm/esm/shared/cart/handlers.js.map +0 -1
  578. package/dist/npm/esm/shared/cart/index.d.ts +0 -6
  579. package/dist/npm/esm/shared/cart/index.js +0 -7
  580. package/dist/npm/esm/shared/cart/index.js.map +0 -1
  581. package/dist/npm/esm/shared/cart/types.d.ts +0 -30
  582. package/dist/npm/esm/shared/cart/types.js +0 -6
  583. package/dist/npm/esm/shared/cart/types.js.map +0 -1
  584. package/dist/npm/esm/shared/product-card/index.d.ts +0 -7
  585. package/dist/npm/esm/shared/product-card/index.js +0 -8
  586. package/dist/npm/esm/shared/product-card/index.js.map +0 -1
  587. package/dist/npm/esm/shared/product-card/renderer.d.ts +0 -35
  588. package/dist/npm/esm/shared/product-card/renderer.js +0 -334
  589. package/dist/npm/esm/shared/product-card/renderer.js.map +0 -1
  590. package/dist/npm/esm/shared/product-card/styles.d.ts +0 -17
  591. package/dist/npm/esm/shared/product-card/styles.js +0 -190
  592. package/dist/npm/esm/shared/product-card/styles.js.map +0 -1
  593. package/dist/npm/esm/shared/product-card/types.d.ts +0 -84
  594. package/dist/npm/esm/shared/product-card/types.js +0 -63
  595. package/dist/npm/esm/shared/product-card/types.js.map +0 -1
  596. package/dist/npm/esm/types/config.d.ts +0 -26
  597. package/dist/npm/esm/types/config.js +0 -5
  598. package/dist/npm/esm/types/config.js.map +0 -1
  599. package/dist/npm/esm/types/experiments.d.ts +0 -47
  600. package/dist/npm/esm/types/experiments.js +0 -14
  601. package/dist/npm/esm/types/experiments.js.map +0 -1
  602. package/dist/npm/esm/types/global-api.d.ts +0 -40
  603. package/dist/npm/esm/types/global-api.js +0 -2
  604. package/dist/npm/esm/types/global-api.js.map +0 -1
  605. package/dist/npm/esm/types/index.d.ts +0 -9
  606. package/dist/npm/esm/types/index.js +0 -11
  607. package/dist/npm/esm/types/index.js.map +0 -1
  608. package/dist/npm/esm/types/recommendation.d.ts +0 -186
  609. package/dist/npm/esm/types/recommendation.js +0 -5
  610. package/dist/npm/esm/types/recommendation.js.map +0 -1
  611. package/dist/npm/esm/types/renderer.d.ts +0 -99
  612. package/dist/npm/esm/types/renderer.js +0 -5
  613. package/dist/npm/esm/types/renderer.js.map +0 -1
  614. package/dist/npm/esm/types/search.d.ts +0 -186
  615. package/dist/npm/esm/types/search.js +0 -5
  616. package/dist/npm/esm/types/search.js.map +0 -1
  617. package/dist/npm/esm/utils/api-url.d.ts +0 -1
  618. package/dist/npm/esm/utils/api-url.js +0 -32
  619. package/dist/npm/esm/utils/api-url.js.map +0 -1
  620. package/dist/npm/esm/utils/debounce.d.ts +0 -27
  621. package/dist/npm/esm/utils/debounce.js +0 -70
  622. package/dist/npm/esm/utils/debounce.js.map +0 -1
  623. package/dist/npm/esm/utils/event-id.d.ts +0 -5
  624. package/dist/npm/esm/utils/event-id.js +0 -20
  625. package/dist/npm/esm/utils/event-id.js.map +0 -1
  626. package/dist/npm/esm/utils/index.d.ts +0 -11
  627. package/dist/npm/esm/utils/index.js +0 -12
  628. package/dist/npm/esm/utils/index.js.map +0 -1
  629. package/dist/npm/esm/utils/logger.d.ts +0 -31
  630. package/dist/npm/esm/utils/logger.js +0 -66
  631. package/dist/npm/esm/utils/logger.js.map +0 -1
  632. package/dist/npm/esm/utils/sanitize.d.ts +0 -38
  633. package/dist/npm/esm/utils/sanitize.js +0 -148
  634. package/dist/npm/esm/utils/sanitize.js.map +0 -1
  635. package/dist/npm/esm/utils/storage.d.ts +0 -72
  636. package/dist/npm/esm/utils/storage.js +0 -271
  637. package/dist/npm/esm/utils/storage.js.map +0 -1
  638. package/dist/npm/esm/utils/tracking-metadata.d.ts +0 -1
  639. package/dist/npm/esm/utils/tracking-metadata.js +0 -15
  640. package/dist/npm/esm/utils/tracking-metadata.js.map +0 -1
  641. package/dist/npm/esm/utils/url-matcher.d.ts +0 -4
  642. package/dist/npm/esm/utils/url-matcher.js +0 -8
  643. package/dist/npm/esm/utils/url-matcher.js.map +0 -1
@@ -1,678 +0,0 @@
1
- "use strict";
2
- /**
3
- * Recommendation Widget Module - Refactored
4
- * Handles fetching and rendering of product recommendations
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.initRecommendations = initRecommendations;
8
- exports.cleanup = cleanup;
9
- const core_1 = require("../../core");
10
- const experiment_overrides_1 = require("../../core/experiment-overrides");
11
- const utils_1 = require("../../utils");
12
- const sanitize_1 = require("../../utils/sanitize");
13
- const constants_1 = require("../../constants");
14
- const logger_1 = require("../../utils/logger");
15
- const recommendation_contract_1 = require("../contract/recommendation-contract");
16
- // Import utilities
17
- const dom_1 = require("./utils/dom");
18
- // Import renderers
19
- const slider_renderer_1 = require("./renderers/slider-renderer");
20
- const grid_1 = require("./renderers/grid");
21
- const list_1 = require("./renderers/list");
22
- const masonry_1 = require("./renderers/masonry");
23
- // Import product card
24
- const product_card_renderer_1 = require("./components/product-card-renderer");
25
- // Import slider controls
26
- const slider_controls_1 = require("./slider-controls");
27
- // Import cart handlers
28
- const cart_handlers_1 = require("./cart-handlers");
29
- // Import tracking
30
- const tracking_1 = require("./tracking");
31
- // Track rendered widgets to prevent duplicates
32
- const renderedWidgets = new Set();
33
- // Track active observers for cleanup
34
- const activeObservers = new Map();
35
- // SPA cleanup setup flag
36
- let spaCleanupSetup = false;
37
- const frequencyCapManager = (0, core_1.getFrequencyCapManager)();
38
- const conflictResolver = (0, core_1.getConflictResolver)();
39
- /**
40
- * Setup SPA navigation cleanup for recommendation module
41
- * Automatically cleans up observers when page navigation is detected
42
- */
43
- function setupSPACleanup() {
44
- if (spaCleanupSetup)
45
- return;
46
- spaCleanupSetup = true;
47
- // Listen for navigation events common in SPAs
48
- const originalPushState = history.pushState;
49
- const originalReplaceState = history.replaceState;
50
- history.pushState = (...args) => {
51
- originalPushState.apply(history, args);
52
- scheduleCleanup();
53
- };
54
- history.replaceState = (...args) => {
55
- originalReplaceState.apply(history, args);
56
- scheduleCleanup();
57
- };
58
- window.addEventListener('popstate', () => scheduleCleanup());
59
- window.addEventListener('hashchange', () => scheduleCleanup());
60
- }
61
- /**
62
- * Schedule deferred cleanup with a small delay
63
- */
64
- function scheduleCleanup() {
65
- setTimeout(() => {
66
- // Cleanup all observers on navigation
67
- activeObservers.forEach((observer, widgetId) => {
68
- observer.disconnect();
69
- });
70
- activeObservers.clear();
71
- (0, logger_1.testModeDebug)('Recommendation', 'Cleaned up observers on navigation');
72
- }, 500);
73
- }
74
- /**
75
- * Detect current product ID from various sources
76
- * Priority:
77
- * 1. Config.currentProductId (explicitly set)
78
- * 2. Config.detectCurrentProduct callback
79
- * 3. Common meta tags and data attributes
80
- * 4. URL patterns (e.g., /product/SKU123)
81
- */
82
- function detectCurrentProductId(config) {
83
- // 1. Use explicitly set product ID
84
- if (config.currentProductId) {
85
- return config.currentProductId;
86
- }
87
- // 2. Use custom detection function
88
- if (config.detectCurrentProduct) {
89
- const id = config.detectCurrentProduct();
90
- if (id)
91
- return id;
92
- }
93
- // 3. Try common meta tags
94
- const metaSelectors = [
95
- 'meta[property="og:product:id"]',
96
- 'meta[property="product:id"]',
97
- 'meta[name="product-id"]',
98
- 'meta[name="product_id"]',
99
- 'meta[name="sku"]',
100
- ];
101
- for (const selector of metaSelectors) {
102
- const meta = document.querySelector(selector);
103
- if (meta?.content)
104
- return meta.content;
105
- }
106
- // 4. Try common data attributes on product containers
107
- const dataSelectors = [
108
- '[data-product-id]',
109
- '[data-product-sku]',
110
- '[data-item-code]',
111
- '[data-sku]',
112
- ];
113
- for (const selector of dataSelectors) {
114
- const el = document.querySelector(selector);
115
- if (el) {
116
- const attr = el.getAttribute('data-product-id')
117
- || el.getAttribute('data-product-sku')
118
- || el.getAttribute('data-item-code')
119
- || el.getAttribute('data-sku');
120
- if (attr)
121
- return attr;
122
- }
123
- }
124
- // 5. Try JSON-LD structured data
125
- const jsonLdScript = document.querySelector('script[type="application/ld+json"]');
126
- if (jsonLdScript) {
127
- try {
128
- const data = JSON.parse(jsonLdScript.textContent || '{}');
129
- if (data['@type'] === 'Product' && data.sku)
130
- return data.sku;
131
- if (data['@type'] === 'Product' && data.productID)
132
- return data.productID;
133
- }
134
- catch {
135
- // Ignore parse errors
136
- }
137
- }
138
- // 6. No product detected
139
- return null;
140
- }
141
- function getRecommendationFrequencyCapConfig(widget) {
142
- const triggerConfig = widget?.triggerConfig;
143
- const frequencyCap = triggerConfig?.frequencyCap;
144
- if (!frequencyCap || typeof frequencyCap !== 'object')
145
- return undefined;
146
- return frequencyCap;
147
- }
148
- function selectRecommendationCandidates(widgets) {
149
- if (widgets.length <= 1) {
150
- return widgets.map((widget) => ({
151
- candidateId: `recommendation:${widget.id}`,
152
- widget,
153
- frequencyKey: `display:recommendation:${widget.id}`,
154
- frequencyCapConfig: getRecommendationFrequencyCapConfig(widget),
155
- }));
156
- }
157
- const conflictCandidates = widgets.map((widget) => {
158
- const triggerConfig = widget?.triggerConfig || {};
159
- const conflictResolution = triggerConfig.conflictResolution || {};
160
- const candidate = conflictResolver.applyConfig({
161
- id: `recommendation:${widget.id}`,
162
- type: 'recommendation',
163
- selector: widget.containerSelector,
164
- placementPosition: widget.insertPosition,
165
- priority: widget.priority ?? conflictResolution.priority,
166
- conflictBehavior: conflictResolution.behavior,
167
- placementConfig: { conflictResolution },
168
- });
169
- return {
170
- ...candidate,
171
- widget,
172
- frequencyKey: `display:recommendation:${widget.id}`,
173
- frequencyCapConfig: getRecommendationFrequencyCapConfig(widget),
174
- };
175
- });
176
- const resolutionResults = conflictResolver.resolveAll(conflictCandidates);
177
- const selectedIds = new Set(resolutionResults.flatMap((result) => result.selected.map((item) => item.id)));
178
- return conflictCandidates
179
- .filter((candidate) => selectedIds.has(candidate.id))
180
- .map((candidate) => ({
181
- candidateId: candidate.id,
182
- widget: candidate.widget,
183
- frequencyKey: candidate.frequencyKey,
184
- frequencyCapConfig: candidate.frequencyCapConfig,
185
- }));
186
- }
187
- async function initRecommendations(config) {
188
- try {
189
- // Setup SPA cleanup (only once)
190
- setupSPACleanup();
191
- const preloadedWidgets = Array.isArray(config.widgets) ? config.widgets : [];
192
- let widgets = preloadedWidgets
193
- .map((widget) => (0, recommendation_contract_1.resolveRecommendationConfig)(widget))
194
- .filter((widget) => Boolean(widget));
195
- // Fall back to API if preloaded widgets are not available
196
- if (widgets.length === 0) {
197
- const response = await fetch(`${config.apiEndpoint}/public/sites/${config.siteKey}/recommendations?pageUrl=${encodeURIComponent(window.location.href)}`);
198
- if (!response.ok)
199
- return;
200
- const data = await response.json();
201
- widgets = Array.isArray(data.widgets)
202
- ? data.widgets
203
- .map((widget) => (0, recommendation_contract_1.resolveRecommendationConfig)(widget))
204
- .filter((widget) => Boolean(widget))
205
- : [];
206
- }
207
- const pageEligibleWidgets = widgets.filter((widget) => {
208
- const matchesPage = (0, core_1.evaluatePageTargeting)(widget.pageTargetingJson, window.location.href);
209
- if (!matchesPage) {
210
- (0, logger_1.testModeLog)('Recommendation', 'Skipping widget due to page targeting:', widget.id);
211
- }
212
- return matchesPage;
213
- });
214
- const candidates = selectRecommendationCandidates(pageEligibleWidgets);
215
- // Render each candidate that survives conflict resolution
216
- for (const candidate of candidates) {
217
- await tryRenderWidget(candidate.widget, config, candidate.frequencyKey, candidate.frequencyCapConfig);
218
- }
219
- }
220
- catch (error) {
221
- (0, logger_1.testModeError)('Recommendation', 'Error initializing:', error);
222
- }
223
- }
224
- // Try to render widget, setup observer if container not ready
225
- async function tryRenderWidget(widget, config, frequencyKey, frequencyCapConfig) {
226
- // Keep in-memory render tracking synchronized with real DOM state.
227
- const widgetAlreadyInDom = (0, dom_1.isWidgetInDOM)(widget.id);
228
- if (widgetAlreadyInDom && !renderedWidgets.has(widget.id)) {
229
- renderedWidgets.add(widget.id);
230
- return false;
231
- }
232
- // If marked as rendered but not in DOM, clear stale state (SPA navigation case).
233
- if (!widgetAlreadyInDom && renderedWidgets.has(widget.id)) {
234
- renderedWidgets.delete(widget.id);
235
- }
236
- // Already rendered and in DOM?
237
- if (renderedWidgets.has(widget.id))
238
- return false;
239
- const canShowByFrequencyCap = () => {
240
- if (!frequencyCapConfig)
241
- return true;
242
- const check = frequencyCapManager.canShow(frequencyKey, frequencyCapConfig);
243
- if (!check.allowed) {
244
- (0, logger_1.testModeLog)('Recommendation', `Skipping widget due to frequency cap (${check.reason || 'limit'})`, widget.id);
245
- return false;
246
- }
247
- return true;
248
- };
249
- // No container selector? Render to body (fallback)
250
- if (!widget.containerSelector) {
251
- if (await shouldShowWidget(widget, config)) {
252
- if (!canShowByFrequencyCap())
253
- return false;
254
- // Check for experiment suppression
255
- if (config.experimentManager && !config.experimentManager.shouldRenderTarget(widget.id)) {
256
- return false;
257
- }
258
- const widgetToRender = applyExperimentOverrides(widget, config);
259
- if (!widgetToRender)
260
- return false; // Widget should not be rendered
261
- renderedWidgets.add(widgetToRender.id);
262
- const rendered = await renderWidget(widgetToRender, config);
263
- if (rendered && frequencyCapConfig) {
264
- frequencyCapManager.recordShown(frequencyKey);
265
- }
266
- return rendered;
267
- }
268
- return false;
269
- }
270
- // Container exists? Render now
271
- const container = document.querySelector(widget.containerSelector);
272
- if (container) {
273
- if (await shouldShowWidget(widget, config)) {
274
- if (!canShowByFrequencyCap())
275
- return false;
276
- // Check for experiment suppression
277
- if (config.experimentManager && !config.experimentManager.shouldRenderTarget(widget.id)) {
278
- return false;
279
- }
280
- const widgetToRender = applyExperimentOverrides(widget, config);
281
- if (!widgetToRender)
282
- return false; // Widget should not be rendered
283
- renderedWidgets.add(widgetToRender.id);
284
- const rendered = await renderWidget(widgetToRender, config);
285
- if (rendered && frequencyCapConfig) {
286
- frequencyCapManager.recordShown(frequencyKey);
287
- }
288
- return rendered;
289
- }
290
- return false;
291
- }
292
- // Container doesn't exist yet - watch for it
293
- (0, logger_1.testModeLog)('Recommendation', 'Container not found, setting up observer for:', widget.containerSelector);
294
- observeForContainer(widget, config, frequencyKey, frequencyCapConfig);
295
- return false;
296
- }
297
- // Use MutationObserver to efficiently watch for container appearance
298
- // Performance optimized: debounced callback, scoped observation, proper cleanup
299
- function observeForContainer(widget, config, frequencyKey, frequencyCapConfig) {
300
- // If already observing this widget, skip
301
- if (activeObservers.has(widget.id)) {
302
- return;
303
- }
304
- // Debounced check function to avoid excessive DOM queries
305
- const checkForContainer = (0, utils_1.debounce)(async () => {
306
- // Re-check: if widget now in DOM, stop
307
- if ((0, dom_1.isWidgetInDOM)(widget.id)) {
308
- cleanupObserver(widget.id);
309
- return;
310
- }
311
- const container = document.querySelector(widget.containerSelector);
312
- if (container && await shouldShowWidget(widget, config)) {
313
- if (frequencyCapConfig) {
314
- const check = frequencyCapManager.canShow(frequencyKey, frequencyCapConfig);
315
- if (!check.allowed) {
316
- cleanupObserver(widget.id);
317
- return;
318
- }
319
- }
320
- // Check for experiment suppression
321
- if (config.experimentManager && !config.experimentManager.shouldRenderTarget(widget.id)) {
322
- cleanupObserver(widget.id);
323
- return;
324
- }
325
- const widgetToRender = applyExperimentOverrides(widget, config);
326
- if (!widgetToRender) {
327
- cleanupObserver(widget.id);
328
- return; // Widget should not be rendered
329
- }
330
- renderedWidgets.add(widgetToRender.id);
331
- const rendered = await renderWidget(widgetToRender, config);
332
- if (rendered && frequencyCapConfig) {
333
- frequencyCapManager.recordShown(frequencyKey);
334
- }
335
- cleanupObserver(widget.id);
336
- (0, logger_1.testModeLog)('Recommendation', 'Widget rendered via observer:', widgetToRender.id);
337
- }
338
- }, constants_1.TIMING.RESIZE_DEBOUNCE); // 150ms debounce
339
- const observer = new MutationObserver((_mutations, _obs) => {
340
- checkForContainer();
341
- });
342
- // Try to scope observation to a parent element if possible
343
- // This reduces the number of mutations we need to process
344
- const observeTarget = findBestObserveTarget(widget.containerSelector);
345
- observer.observe(observeTarget, {
346
- childList: true,
347
- subtree: true,
348
- });
349
- // Store observer for cleanup
350
- activeObservers.set(widget.id, observer);
351
- // Timeout after 10 seconds to prevent memory leaks
352
- setTimeout(() => {
353
- cleanupObserver(widget.id);
354
- checkForContainer.cancel();
355
- }, 10000);
356
- }
357
- /**
358
- * Find the best DOM element to observe for a given selector
359
- * Tries to find a parent element that's already in the DOM to reduce observation scope
360
- */
361
- function findBestObserveTarget(selector) {
362
- // Try to find a parent element from the selector
363
- // e.g., for "#product-page .recommendations" we could observe #product-page
364
- const parts = selector.split(/\s+/);
365
- for (let i = 0; i < parts.length - 1; i++) {
366
- const parentSelector = parts.slice(0, i + 1).join(' ');
367
- const parent = document.querySelector(parentSelector);
368
- if (parent) {
369
- return parent;
370
- }
371
- }
372
- // Fallback to body
373
- return document.body;
374
- }
375
- /**
376
- * Cleanup a specific observer
377
- */
378
- function cleanupObserver(widgetId) {
379
- const observer = activeObservers.get(widgetId);
380
- if (observer) {
381
- observer.disconnect();
382
- activeObservers.delete(widgetId);
383
- }
384
- }
385
- /**
386
- * Cleanup all observers and rendered widgets
387
- * Call this when navigating away in SPA
388
- */
389
- function cleanup() {
390
- // Disconnect all observers
391
- activeObservers.forEach((observer, widgetId) => {
392
- observer.disconnect();
393
- (0, logger_1.testModeDebug)('Recommendation', 'Cleaned up observer for:', widgetId);
394
- });
395
- activeObservers.clear();
396
- // Remove recommendation DOM roots to prevent duplicate render on SPA re-init.
397
- (0, dom_1.removeRecommendationRootsFromDOM)();
398
- // Fallback cleanup by known ids in case an old node does not have marker attr.
399
- renderedWidgets.forEach((widgetId) => {
400
- const existingNode = document.getElementById(`rec-widget-${widgetId}`);
401
- if (existingNode) {
402
- existingNode.remove();
403
- }
404
- });
405
- // Clear rendered widgets tracking
406
- renderedWidgets.clear();
407
- // Clear tracking state (e.g. product impression cache)
408
- (0, tracking_1.cleanupTracking)();
409
- (0, logger_1.testModeDebug)('Recommendation', 'Module cleanup complete');
410
- }
411
- function applyExperimentOverrides(widget, config) {
412
- if (!config.experimentManager)
413
- return widget;
414
- // Check for different_module mode - variant module replaces this widget
415
- const assignment = config.experimentManager.getVariantModuleForTarget(widget.id);
416
- if (assignment && assignment.moduleData) {
417
- // Unwrap moduleData - could be { targetType, data } or directly the widget
418
- const moduleData = assignment.moduleData;
419
- const variantWidget = moduleData.data || moduleData;
420
- if (variantWidget && variantWidget.id) {
421
- (0, logger_1.testModeLog)('Recommendation', 'Rendering variant module instead of original:', variantWidget.id);
422
- // Return the variant widget to be rendered instead
423
- variantWidget._experimentAssignment = assignment;
424
- return variantWidget;
425
- }
426
- }
427
- // Check for config_override mode
428
- const configAssignment = config.experimentManager.getVariant(widget.id) ||
429
- config.experimentManager.getAssignmentByTargetId(widget.id);
430
- if (configAssignment) {
431
- const variantConfig = (0, experiment_overrides_1.getEffectiveConfig)(configAssignment);
432
- if (variantConfig) {
433
- (0, logger_1.testModeLog)('Recommendation', 'Applying config override:', configAssignment.variantName);
434
- const mergedWidget = (0, experiment_overrides_1.deepMergeExperimentConfig)(widget, variantConfig);
435
- Object.assign(widget, mergedWidget);
436
- if (variantConfig.content && typeof variantConfig.content === 'object') {
437
- const content = variantConfig.content;
438
- if (content.title !== undefined) {
439
- widget.title = content.title;
440
- if (widget.titleStyles)
441
- widget.titleStyles.enabled = true;
442
- }
443
- if (content.subtitle !== undefined) {
444
- widget.subtitle = content.subtitle;
445
- if (widget.subtitleStyles)
446
- widget.subtitleStyles.enabled = true;
447
- }
448
- else if (content.text !== undefined) {
449
- widget.subtitle = content.text;
450
- if (widget.subtitleStyles)
451
- widget.subtitleStyles.enabled = true;
452
- }
453
- else if (content.description !== undefined) {
454
- widget.subtitle = content.description;
455
- if (widget.subtitleStyles)
456
- widget.subtitleStyles.enabled = true;
457
- }
458
- }
459
- if (variantConfig.styles && typeof variantConfig.styles === 'object') {
460
- widget.containerStyles = (0, experiment_overrides_1.deepMergeExperimentConfig)((widget.containerStyles || {}), variantConfig.styles);
461
- }
462
- if (variantConfig.displayType) {
463
- widget.displayType = variantConfig.displayType;
464
- }
465
- }
466
- // Mark widget as part of experiment for tracking
467
- widget._experimentAssignment = configAssignment;
468
- }
469
- return widget;
470
- }
471
- async function shouldShowWidget(widget, config) {
472
- // Check for experiment suppression FIRST (before other checks)
473
- // This ensures excluded widgets (different_module mode) are skipped early
474
- if (config.experimentManager && !config.experimentManager.shouldRenderTarget(widget.id)) {
475
- (0, logger_1.testModeLog)('Recommendation', 'Skipping widget (excluded by experiment):', widget.id);
476
- return false;
477
- }
478
- // If containerSelector is specified, check if element exists
479
- if (widget.containerSelector) {
480
- const container = document.querySelector(widget.containerSelector);
481
- (0, logger_1.testModeLog)('Recommendation', 'Container check:', widget.containerSelector, '-> Found:', !!container);
482
- if (!container)
483
- return false;
484
- }
485
- // Page Targeting Logic
486
- const targeting = widget.pageTargetingJson;
487
- if (!(0, core_1.evaluatePageTargeting)(targeting, window.location.href)) {
488
- return false;
489
- }
490
- // Segment Targeting Logic
491
- if (config.segmentManager && widget.segmentTargetingMode && widget.segmentIds) {
492
- const shouldShow = await config.segmentManager.shouldShow(widget.segmentTargetingMode, widget.segmentIds);
493
- if (!shouldShow) {
494
- (0, logger_1.testModeLog)('Recommendation', 'Skipping widget due to segment targeting:', widget.id);
495
- return false;
496
- }
497
- }
498
- return true;
499
- }
500
- async function renderWidget(widget, config) {
501
- try {
502
- // Detect current product ID for product-based strategies (viewed_together, similar_products, etc.)
503
- const currentProductId = detectCurrentProductId(config);
504
- let sessionId = '';
505
- try {
506
- sessionId = (0, tracking_1.getSessionId)();
507
- }
508
- catch {
509
- sessionId = `sid_fallback_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
510
- }
511
- // Fetch products for this widget
512
- const response = await fetch(`${config.apiEndpoint}/public/sites/${config.siteKey}/recommendations/${widget.id}/products`, {
513
- method: 'POST',
514
- headers: {
515
- 'Content-Type': 'application/json',
516
- },
517
- body: JSON.stringify({
518
- currentProductId,
519
- pageUrl: window.location.href,
520
- sessionId,
521
- visitorId: window.selwise_vid,
522
- userId: window.selwise_suid,
523
- }),
524
- });
525
- if (!response.ok)
526
- return false;
527
- const data = await response.json();
528
- const products = data.products || [];
529
- // Update widget product card definition if provided by API
530
- if (data.productCard) {
531
- widget.productCard = data.productCard;
532
- }
533
- if (products.length === 0)
534
- return false;
535
- // Create widget container
536
- const widgetElement = createWidgetElement(widget, products, config);
537
- // Insert into page
538
- (0, dom_1.insertWidget)(widgetElement, widget);
539
- // Track widget impression
540
- (0, tracking_1.trackWidgetImpression)(widget.id, config).catch(() => {
541
- // Non-blocking - don't prevent widget rendering if tracking fails
542
- });
543
- // Track impression
544
- if (widget._experimentAssignment && config.experimentManager) {
545
- config.experimentManager.trackImpression(widget._experimentAssignment.experimentId);
546
- }
547
- // Initialize slider if needed
548
- if (widget.displayType === 'slider' || widget.displayType === 'carousel') {
549
- (0, slider_controls_1.initSliderControls)(widget, widgetElement, config, tracking_1.trackSliderNavigation, tracking_1.trackSliderSwipe);
550
- }
551
- // Setup product impression tracking
552
- (0, tracking_1.setupProductImpressionTracking)(widgetElement, widget.id, config);
553
- // Setup click tracking for experiment conversion
554
- if (widget._experimentAssignment && config.experimentManager) {
555
- widgetElement.addEventListener('click', (e) => {
556
- const target = e.target;
557
- if (target.closest('.recommendation-card') || target.closest('[data-selwise-action="add-to-cart"]') || target.closest('a') || target.closest('button')) {
558
- const assignment = widget._experimentAssignment;
559
- config.experimentManager?.trackConversion(assignment.experimentId);
560
- }
561
- });
562
- }
563
- // Execute custom JS - this runs arbitrary code from widget configuration
564
- if (widget.customJS) {
565
- try {
566
- // Log warning for security auditing
567
- (0, logger_1.testModeWarn)('Recommendation', 'Executing custom JS for widget:', widget.id);
568
- const customFn = new Function('widgetElement', 'products', 'widgetConfig', widget.customJS);
569
- customFn(widgetElement, products, widget);
570
- }
571
- catch (error) {
572
- (0, logger_1.testModeError)('Recommendation', 'Custom JS error:', error);
573
- }
574
- }
575
- return true;
576
- }
577
- catch (error) {
578
- (0, logger_1.testModeError)('Recommendation', 'Error rendering widget:', error);
579
- return false;
580
- }
581
- }
582
- function createWidgetElement(widget, products, config) {
583
- const container = document.createElement('div');
584
- container.className = 'recommendation-widget';
585
- container.id = `rec-widget-${widget.id}`;
586
- container.setAttribute('data-widget-id', widget.id);
587
- (0, dom_1.markRecommendationRoot)(container);
588
- // Apply container styles
589
- const cs = widget.containerStyles;
590
- container.style.cssText = `
591
- background-color: ${cs?.backgroundColor};
592
- padding: ${cs?.padding};
593
- border-radius: ${cs?.borderRadius}px;
594
- max-width: ${cs?.maxWidth};
595
- margin: ${cs?.margin};
596
- box-sizing: border-box;
597
- `;
598
- // Create title
599
- if (widget.titleStyles?.enabled && widget.title) {
600
- const titleEl = document.createElement('h2');
601
- titleEl.className = 'recommendation-title';
602
- titleEl.textContent = widget.title;
603
- const ts = widget.titleStyles;
604
- titleEl.style.cssText = `
605
- font-size: ${ts.fontSize || 24}px;
606
- font-weight: ${ts.fontWeight || 'bold'};
607
- color: ${ts.color || '#111111'};
608
- text-align: ${ts.textAlign || 'left'};
609
- margin-bottom: ${ts.marginBottom || 16}px;
610
- margin-top: 0;
611
- `;
612
- container.appendChild(titleEl);
613
- }
614
- // Create subtitle
615
- if (widget.subtitleStyles?.enabled && widget.subtitle) {
616
- const subtitleEl = document.createElement('p');
617
- subtitleEl.className = 'recommendation-subtitle';
618
- subtitleEl.textContent = widget.subtitle;
619
- const ss = widget.subtitleStyles;
620
- subtitleEl.style.cssText = `
621
- font-size: ${ss.fontSize || 14}px;
622
- font-weight: ${ss.fontWeight || 'normal'};
623
- color: ${ss.color || '#666666'};
624
- text-align: ${ss.textAlign || 'left'};
625
- margin-bottom: ${ss.marginBottom || 24}px;
626
- margin-top: 0;
627
- `;
628
- container.appendChild(subtitleEl);
629
- }
630
- // Create product container based on display type
631
- const productContainer = createProductContainer(widget, products, config);
632
- container.appendChild(productContainer);
633
- // Add custom CSS (sanitized to prevent CSS injection)
634
- if (widget.customCSS) {
635
- const style = document.createElement('style');
636
- style.textContent = (0, sanitize_1.sanitizeCSS)(widget.customCSS);
637
- container.appendChild(style);
638
- }
639
- // Add custom CSS from Product Card (if custom template)
640
- if (widget.productCard && widget.productCard.customCSS) {
641
- const cardStyle = document.createElement('style');
642
- cardStyle.textContent = (0, sanitize_1.sanitizeCSS)(widget.productCard.customCSS);
643
- container.appendChild(cardStyle);
644
- }
645
- return container;
646
- }
647
- function createProductContainer(widget, products, config) {
648
- // Generate unique container ID for card JS execution
649
- const containerId = widget.productCard?.customJs
650
- ? `recommendation-${widget.id}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
651
- : '';
652
- // Create product card factory function with bound handlers
653
- const productCardFactory = (product) => (0, product_card_renderer_1.createProductCard)(product, widget, config, cart_handlers_1.handleAddToCart, tracking_1.trackEvent, tracking_1.trackBehavior, containerId);
654
- let container;
655
- switch (widget.displayType) {
656
- case 'slider':
657
- case 'carousel':
658
- container = (0, slider_renderer_1.createSlider)(widget, products, config, productCardFactory);
659
- break;
660
- case 'grid':
661
- container = (0, grid_1.createGrid)(widget, products, config, productCardFactory);
662
- break;
663
- case 'list':
664
- container = (0, list_1.createList)(widget, products, config, productCardFactory);
665
- break;
666
- case 'masonry':
667
- container = (0, masonry_1.createMasonry)(widget, products, config, productCardFactory);
668
- break;
669
- default:
670
- container = (0, grid_1.createGrid)(widget, products, config, productCardFactory);
671
- }
672
- // Execute custom JavaScript for product cards after DOM insertion
673
- if (containerId && widget.productCard?.customJs) {
674
- (0, product_card_renderer_1.executeCardScriptsForRecommendations)(containerId, container);
675
- }
676
- return container;
677
- }
678
- //# sourceMappingURL=index.js.map