vviinn-widgets 2.18.21 → 2.19.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 (503) hide show
  1. package/dist/cjs/Campaign-13258569.js +2 -0
  2. package/dist/cjs/Campaign-13258569.js.map +1 -0
  3. package/dist/cjs/{Handler-176539c8.js → Handler-de64afa5.js} +31 -43
  4. package/dist/cjs/Handler-de64afa5.js.map +1 -0
  5. package/dist/cjs/cropper-handler.cjs.entry.js +7 -4
  6. package/dist/cjs/cropper-handler.cjs.entry.js.map +1 -0
  7. package/dist/cjs/{customized-slots-6e56c354.js → customized-slots-aee3f39d.js} +3 -1
  8. package/dist/cjs/customized-slots-aee3f39d.js.map +1 -0
  9. package/dist/cjs/highlight-box_22.cjs.entry.js +68 -39
  10. package/dist/cjs/highlight-box_22.cjs.entry.js.map +1 -0
  11. package/dist/cjs/{imageSearch.store-98824653.js → imageSearch.store-fbe0600a.js} +3570 -2250
  12. package/dist/cjs/imageSearch.store-fbe0600a.js.map +1 -0
  13. package/dist/cjs/{index-cb410762.js → index-610c6c1f.js} +3 -1
  14. package/dist/cjs/index-610c6c1f.js.map +1 -0
  15. package/dist/cjs/{index-7f1325a7.js → index-a4becaff.js} +685 -303
  16. package/dist/cjs/index-a4becaff.js.map +1 -0
  17. package/dist/cjs/{index-a99edb90.js → index-c4851793.js} +3 -1
  18. package/dist/cjs/index-c4851793.js.map +1 -0
  19. package/dist/cjs/index.cjs.js +2 -0
  20. package/dist/cjs/index.cjs.js.map +1 -0
  21. package/dist/cjs/loader.cjs.js +6 -3
  22. package/dist/cjs/loader.cjs.js.map +1 -0
  23. package/dist/cjs/vviinn-button.cjs.entry.js +5 -3
  24. package/dist/cjs/vviinn-button.cjs.entry.js.map +1 -0
  25. package/dist/cjs/vviinn-carousel_3.cjs.entry.js +124 -39
  26. package/dist/cjs/vviinn-carousel_3.cjs.entry.js.map +1 -0
  27. package/dist/cjs/vviinn-error.cjs.entry.js +4 -2
  28. package/dist/cjs/vviinn-error.cjs.entry.js.map +1 -0
  29. package/dist/cjs/vviinn-preloader.cjs.entry.js +7 -5
  30. package/dist/cjs/vviinn-preloader.cjs.entry.js.map +1 -0
  31. package/dist/cjs/vviinn-recommendations-sidebar.cjs.entry.js +15 -6
  32. package/dist/cjs/vviinn-recommendations-sidebar.cjs.entry.js.map +1 -0
  33. package/dist/cjs/vviinn-vpr-button.cjs.entry.js +13 -12
  34. package/dist/cjs/vviinn-vpr-button.cjs.entry.js.map +1 -0
  35. package/dist/cjs/vviinn-vps-button.cjs.entry.js +28 -25
  36. package/dist/cjs/vviinn-vps-button.cjs.entry.js.map +1 -0
  37. package/dist/cjs/vviinn-vps-widget.cjs.entry.js +46 -31
  38. package/dist/cjs/vviinn-vps-widget.cjs.entry.js.map +1 -0
  39. package/dist/cjs/vviinn-widgets.cjs.js +12 -3
  40. package/dist/cjs/vviinn-widgets.cjs.js.map +1 -0
  41. package/dist/collection/Image/error.js +1 -0
  42. package/dist/collection/Image/error.js.map +1 -0
  43. package/dist/collection/Image/form.js +1 -0
  44. package/dist/collection/Image/form.js.map +1 -0
  45. package/dist/collection/Image/fromFile.js +1 -0
  46. package/dist/collection/Image/fromFile.js.map +1 -0
  47. package/dist/collection/Image/imageToB64.js +1 -0
  48. package/dist/collection/Image/imageToB64.js.map +1 -0
  49. package/dist/collection/Image/index.js +1 -0
  50. package/dist/collection/Image/index.js.map +1 -0
  51. package/dist/collection/Image/renderPromise.js +1 -0
  52. package/dist/collection/Image/renderPromise.js.map +1 -0
  53. package/dist/collection/Image/resizeImage.js +1 -0
  54. package/dist/collection/Image/resizeImage.js.map +1 -0
  55. package/dist/collection/Image/sizing.js +1 -0
  56. package/dist/collection/Image/sizing.js.map +1 -0
  57. package/dist/collection/Image/sizing.spec.js +67 -0
  58. package/dist/collection/Image/sizing.spec.js.map +1 -0
  59. package/dist/collection/Image/toFile.js +1 -0
  60. package/dist/collection/Image/toFile.js.map +1 -0
  61. package/dist/collection/analytics/GAnalytics.js +1 -0
  62. package/dist/collection/analytics/GAnalytics.js.map +1 -0
  63. package/dist/collection/analytics/GeneralAnalytics.js +1 -0
  64. package/dist/collection/analytics/GeneralAnalytics.js.map +1 -0
  65. package/dist/collection/analytics/GtagAnalytics.js +1 -0
  66. package/dist/collection/analytics/GtagAnalytics.js.map +1 -0
  67. package/dist/collection/analytics/ProductAnalytics.js +1 -0
  68. package/dist/collection/analytics/ProductAnalytics.js.map +1 -0
  69. package/dist/collection/campaign/Campaign.js +1 -0
  70. package/dist/collection/campaign/Campaign.js.map +1 -0
  71. package/dist/collection/campaign/CampaignService.js +1 -0
  72. package/dist/collection/campaign/CampaignService.js.map +1 -0
  73. package/dist/collection/campaign/VCSCampaign.js +1 -0
  74. package/dist/collection/campaign/VCSCampaign.js.map +1 -0
  75. package/dist/collection/campaign/VCSCampaignResponse.js +1 -0
  76. package/dist/collection/campaign/VCSCampaignResponse.js.map +1 -0
  77. package/dist/collection/campaign/VCSCampaignService.js +1 -0
  78. package/dist/collection/campaign/VCSCampaignService.js.map +1 -0
  79. package/dist/collection/campaign/VPRCampaignResponse.js +1 -0
  80. package/dist/collection/campaign/VPRCampaignResponse.js.map +1 -0
  81. package/dist/collection/campaign/VPRCampaignService.js +1 -0
  82. package/dist/collection/campaign/VPRCampaignService.js.map +1 -0
  83. package/dist/collection/collection-manifest.json +2 -2
  84. package/dist/collection/components/customized-slots.js +1 -0
  85. package/dist/collection/components/customized-slots.js.map +1 -0
  86. package/dist/collection/components/image-search/image-view/highlight-box/highlight-box.css +2 -16
  87. package/dist/collection/components/image-search/image-view/highlight-box/highlight-box.js +12 -7
  88. package/dist/collection/components/image-search/image-view/highlight-box/highlight-box.js.map +1 -0
  89. package/dist/collection/components/image-search/image-view/image-cropper/cropper-handler/cropper-handler.css +0 -1
  90. package/dist/collection/components/image-search/image-view/image-cropper/cropper-handler/cropper-handler.js +41 -37
  91. package/dist/collection/components/image-search/image-view/image-cropper/cropper-handler/cropper-handler.js.map +1 -0
  92. package/dist/collection/components/image-search/image-view/image-cropper/image-cropper.js +74 -67
  93. package/dist/collection/components/image-search/image-view/image-cropper/image-cropper.js.map +1 -0
  94. package/dist/collection/components/image-search/search-filters/search-filters.css +4 -23
  95. package/dist/collection/components/image-search/search-filters/search-filters.js +98 -91
  96. package/dist/collection/components/image-search/search-filters/search-filters.js.map +1 -0
  97. package/dist/collection/components/vviinn-button/vviinn-button.js +35 -31
  98. package/dist/collection/components/vviinn-button/vviinn-button.js.map +1 -0
  99. package/dist/collection/components/vviinn-carousel/vviinn-carousel.css +1 -2
  100. package/dist/collection/components/vviinn-carousel/vviinn-carousel.js +162 -156
  101. package/dist/collection/components/vviinn-carousel/vviinn-carousel.js.map +1 -0
  102. package/dist/collection/components/vviinn-error/vviinn-empty-results/vviinn-empty-results.js +13 -14
  103. package/dist/collection/components/vviinn-error/vviinn-empty-results/vviinn-empty-results.js.map +1 -0
  104. package/dist/collection/components/vviinn-error/vviinn-error.js +13 -12
  105. package/dist/collection/components/vviinn-error/vviinn-error.js.map +1 -0
  106. package/dist/collection/components/vviinn-error/vviinn-server-error/vviinn-server-error.js +36 -30
  107. package/dist/collection/components/vviinn-error/vviinn-server-error/vviinn-server-error.js.map +1 -0
  108. package/dist/collection/components/vviinn-error/vviinn-wrong-format/vviinn-wrong-format.js +36 -30
  109. package/dist/collection/components/vviinn-error/vviinn-wrong-format/vviinn-wrong-format.js.map +1 -0
  110. package/dist/collection/components/vviinn-example-images/vviinn-example-image/vviinn-example-image.js +130 -121
  111. package/dist/collection/components/vviinn-example-images/vviinn-example-image/vviinn-example-image.js.map +1 -0
  112. package/dist/collection/components/vviinn-example-images/vviinn-example-images.js +76 -75
  113. package/dist/collection/components/vviinn-example-images/vviinn-example-images.js.map +1 -0
  114. package/dist/collection/components/vviinn-icons/index.js +11 -27
  115. package/dist/collection/components/vviinn-icons/index.js.map +1 -0
  116. package/dist/collection/components/vviinn-image-selector/vviinn-image-selector.js +121 -67
  117. package/dist/collection/components/vviinn-image-selector/vviinn-image-selector.js.map +1 -0
  118. package/dist/collection/components/vviinn-image-view/vviinn-detected-object/vviinn-detected-object.js +82 -69
  119. package/dist/collection/components/vviinn-image-view/vviinn-detected-object/vviinn-detected-object.js.map +1 -0
  120. package/dist/collection/components/vviinn-image-view/vviinn-image-view.css +0 -1
  121. package/dist/collection/components/vviinn-image-view/vviinn-image-view.js +28 -28
  122. package/dist/collection/components/vviinn-image-view/vviinn-image-view.js.map +1 -0
  123. package/dist/collection/components/vviinn-modal/vviinn-modal.css +7 -36
  124. package/dist/collection/components/vviinn-modal/vviinn-modal.js +116 -93
  125. package/dist/collection/components/vviinn-modal/vviinn-modal.js.map +1 -0
  126. package/dist/collection/components/vviinn-onboarding/onboarding-cards/vviinn-onboarding-card-1/vviinn-onboarding-card-1.js +13 -14
  127. package/dist/collection/components/vviinn-onboarding/onboarding-cards/vviinn-onboarding-card-1/vviinn-onboarding-card-1.js.map +1 -0
  128. package/dist/collection/components/vviinn-onboarding/onboarding-cards/vviinn-onboarding-card-2/vviinn-onboarding-card-2.js +13 -14
  129. package/dist/collection/components/vviinn-onboarding/onboarding-cards/vviinn-onboarding-card-2/vviinn-onboarding-card-2.js.map +1 -0
  130. package/dist/collection/components/vviinn-onboarding/onboarding-cards/vviinn-onboarding-card-3/vviinn-onboarding-card-3.js +13 -14
  131. package/dist/collection/components/vviinn-onboarding/onboarding-cards/vviinn-onboarding-card-3/vviinn-onboarding-card-3.js.map +1 -0
  132. package/dist/collection/components/vviinn-onboarding/vviinn-onboarding.js +13 -17
  133. package/dist/collection/components/vviinn-onboarding/vviinn-onboarding.js.map +1 -0
  134. package/dist/collection/components/vviinn-overlay/vviinn-overlay.css +1 -12
  135. package/dist/collection/components/vviinn-overlay/vviinn-overlay.js +13 -9
  136. package/dist/collection/components/vviinn-overlay/vviinn-overlay.js.map +1 -0
  137. package/dist/collection/components/vviinn-overlayed-modal/vviinn-overlayed-modal.js +108 -78
  138. package/dist/collection/components/vviinn-overlayed-modal/vviinn-overlayed-modal.js.map +1 -0
  139. package/dist/collection/components/vviinn-preloader/vviinn-preloader.css +1 -11
  140. package/dist/collection/components/vviinn-preloader/vviinn-preloader.js +12 -7
  141. package/dist/collection/components/vviinn-preloader/vviinn-preloader.js.map +1 -0
  142. package/dist/collection/components/vviinn-privacy-badge/vviinn-privacy-badge.css +0 -1
  143. package/dist/collection/components/vviinn-privacy-badge/vviinn-privacy-badge.js +13 -16
  144. package/dist/collection/components/vviinn-privacy-badge/vviinn-privacy-badge.js.map +1 -0
  145. package/dist/collection/components/vviinn-product-card/render-helpers.js +7 -14
  146. package/dist/collection/components/vviinn-product-card/render-helpers.js.map +1 -0
  147. package/dist/collection/components/vviinn-product-card/stories/args.js +1 -0
  148. package/dist/collection/components/vviinn-product-card/stories/args.js.map +1 -0
  149. package/dist/collection/components/vviinn-product-card/stories/decorators.js +1 -0
  150. package/dist/collection/components/vviinn-product-card/stories/decorators.js.map +1 -0
  151. package/dist/collection/components/vviinn-product-card/stories/vviinn-product-card.stories.js +1 -0
  152. package/dist/collection/components/vviinn-product-card/stories/vviinn-product-card.stories.js.map +1 -0
  153. package/dist/collection/components/vviinn-product-card/vviinn-product-card.js +426 -415
  154. package/dist/collection/components/vviinn-product-card/vviinn-product-card.js.map +1 -0
  155. package/dist/collection/components/vviinn-slider/arrow.js +2 -2
  156. package/dist/collection/components/vviinn-slider/arrow.js.map +1 -0
  157. package/dist/collection/components/vviinn-slider/vviinn-slide/vviinn-slide.js +13 -9
  158. package/dist/collection/components/vviinn-slider/vviinn-slide/vviinn-slide.js.map +1 -0
  159. package/dist/collection/components/vviinn-slider/vviinn-slider.css +0 -1
  160. package/dist/collection/components/vviinn-slider/vviinn-slider.js +88 -82
  161. package/dist/collection/components/vviinn-slider/vviinn-slider.js.map +1 -0
  162. package/dist/collection/components/vviinn-teaser/vviinn-teaser.js +13 -18
  163. package/dist/collection/components/vviinn-teaser/vviinn-teaser.js.map +1 -0
  164. package/dist/collection/components/vviinn-vpr-button/recommendations-sidebar/recommendations-sidebar.css +12 -64
  165. package/dist/collection/components/vviinn-vpr-button/recommendations-sidebar/recommendations-sidebar.js +372 -360
  166. package/dist/collection/components/vviinn-vpr-button/recommendations-sidebar/recommendations-sidebar.js.map +1 -0
  167. package/dist/collection/components/vviinn-vpr-button/stories/args.js +1 -0
  168. package/dist/collection/components/vviinn-vpr-button/stories/args.js.map +1 -0
  169. package/dist/collection/components/vviinn-vpr-button/stories/vviinn-vpr-button.stories.js +1 -0
  170. package/dist/collection/components/vviinn-vpr-button/stories/vviinn-vpr-button.stories.js.map +1 -0
  171. package/dist/collection/components/vviinn-vpr-button/vviinn-vpr-button.js +449 -444
  172. package/dist/collection/components/vviinn-vpr-button/vviinn-vpr-button.js.map +1 -0
  173. package/dist/collection/components/vviinn-vpr-widget/stories/args.js +1 -0
  174. package/dist/collection/components/vviinn-vpr-widget/stories/args.js.map +1 -0
  175. package/dist/collection/components/vviinn-vpr-widget/stories/decorators.js +1 -0
  176. package/dist/collection/components/vviinn-vpr-widget/stories/decorators.js.map +1 -0
  177. package/dist/collection/components/vviinn-vpr-widget/stories/vviinn-vpr-widget.stories.js +1 -0
  178. package/dist/collection/components/vviinn-vpr-widget/stories/vviinn-vpr-widget.stories.js.map +1 -0
  179. package/dist/collection/components/vviinn-vpr-widget/token-helpers.js +1 -0
  180. package/dist/collection/components/vviinn-vpr-widget/token-helpers.js.map +1 -0
  181. package/dist/collection/components/vviinn-vpr-widget/vviinn-vpr-vidget.js +546 -542
  182. package/dist/collection/components/vviinn-vpr-widget/vviinn-vpr-vidget.js.map +1 -0
  183. package/dist/collection/components/vviinn-vps-button/stories/vviinn-vps-button.stories.js +3 -0
  184. package/dist/collection/components/vviinn-vps-button/stories/vviinn-vps-button.stories.js.map +1 -0
  185. package/dist/collection/components/vviinn-vps-button/vviinn-vps-button.js +369 -332
  186. package/dist/collection/components/vviinn-vps-button/vviinn-vps-button.js.map +1 -0
  187. package/dist/collection/components/vviinn-vps-widget/stories/vviinn-vps-widget.stories.js +1 -0
  188. package/dist/collection/components/vviinn-vps-widget/stories/vviinn-vps-widget.stories.js.map +1 -0
  189. package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.css +0 -5
  190. package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.e2e.js +27 -0
  191. package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.e2e.js.map +1 -0
  192. package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.js +503 -425
  193. package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.js.map +1 -0
  194. package/dist/collection/cropper/Cropper.js +1 -0
  195. package/dist/collection/cropper/Cropper.js.map +1 -0
  196. package/dist/collection/cropper/Handler.js +1 -0
  197. package/dist/collection/cropper/Handler.js.map +1 -0
  198. package/dist/collection/dom/index.js +1 -0
  199. package/dist/collection/dom/index.js.map +1 -0
  200. package/dist/collection/error.js +1 -0
  201. package/dist/collection/error.js.map +1 -0
  202. package/dist/collection/file/index.js +1 -0
  203. package/dist/collection/file/index.js.map +1 -0
  204. package/dist/collection/geometry/Clip.js +1 -0
  205. package/dist/collection/geometry/Clip.js.map +1 -0
  206. package/dist/collection/geometry/Clip.spec.js +17 -0
  207. package/dist/collection/geometry/Clip.spec.js.map +1 -0
  208. package/dist/collection/geometry/Point.js +1 -0
  209. package/dist/collection/geometry/Point.js.map +1 -0
  210. package/dist/collection/geometry/Rectangle.js +1 -0
  211. package/dist/collection/geometry/Rectangle.js.map +1 -0
  212. package/dist/collection/geometry/Rectangle.spec.js +67 -0
  213. package/dist/collection/geometry/Rectangle.spec.js.map +1 -0
  214. package/dist/collection/geometry/RectangleAlt.js +1 -0
  215. package/dist/collection/geometry/RectangleAlt.js.map +1 -0
  216. package/dist/collection/geometry/Sized.js +1 -0
  217. package/dist/collection/geometry/Sized.js.map +1 -0
  218. package/dist/collection/geometry/Sized.spec.js +17 -0
  219. package/dist/collection/geometry/Sized.spec.js.map +1 -0
  220. package/dist/collection/global.js +1 -0
  221. package/dist/collection/global.js.map +1 -0
  222. package/dist/collection/index.js +1 -0
  223. package/dist/collection/index.js.map +1 -0
  224. package/dist/collection/interfaces/generated.js +1 -4
  225. package/dist/collection/interfaces/generated.js.map +1 -0
  226. package/dist/collection/interfaces/recommendation.js +1 -0
  227. package/dist/collection/interfaces/recommendation.js.map +1 -0
  228. package/dist/collection/network/apiClient.js +1 -0
  229. package/dist/collection/network/apiClient.js.map +1 -0
  230. package/dist/collection/network/ion/File.js +1 -0
  231. package/dist/collection/network/ion/File.js.map +1 -0
  232. package/dist/collection/network/ion/Form.js +1 -0
  233. package/dist/collection/network/ion/Form.js.map +1 -0
  234. package/dist/collection/network/ion/Form.spec.js +44 -0
  235. package/dist/collection/network/ion/Form.spec.js.map +1 -0
  236. package/dist/collection/network/ion/Link.js +1 -0
  237. package/dist/collection/network/ion/Link.js.map +1 -0
  238. package/dist/collection/network/ion/ValueObject.js +1 -0
  239. package/dist/collection/network/ion/ValueObject.js.map +1 -0
  240. package/dist/collection/network/request.js +1 -0
  241. package/dist/collection/network/request.js.map +1 -0
  242. package/dist/collection/network/utils.js +1 -0
  243. package/dist/collection/network/utils.js.map +1 -0
  244. package/dist/collection/openApi/index.js +1 -0
  245. package/dist/collection/openApi/index.js.map +1 -0
  246. package/dist/collection/recommendation/events.js +1 -0
  247. package/dist/collection/recommendation/events.js.map +1 -0
  248. package/dist/collection/recommendation/recommendation.js +1 -0
  249. package/dist/collection/recommendation/recommendation.js.map +1 -0
  250. package/dist/collection/searchSession/searchSession.js +1 -0
  251. package/dist/collection/searchSession/searchSession.js.map +1 -0
  252. package/dist/collection/sentry.js +1 -0
  253. package/dist/collection/sentry.js.map +1 -0
  254. package/dist/collection/slider/GridMode.js +1 -0
  255. package/dist/collection/slider/GridMode.js.map +1 -0
  256. package/dist/collection/store/file-processing.js +1 -0
  257. package/dist/collection/store/file-processing.js.map +1 -0
  258. package/dist/collection/store/imageSearch.store.js +1 -0
  259. package/dist/collection/store/imageSearch.store.js.map +1 -0
  260. package/dist/collection/store/store.js +1 -0
  261. package/dist/collection/store/store.js.map +1 -0
  262. package/dist/collection/store/tracking.store.js +1 -0
  263. package/dist/collection/store/tracking.store.js.map +1 -0
  264. package/dist/collection/stories/image-selector.stories.js +1 -0
  265. package/dist/collection/stories/image-selector.stories.js.map +1 -0
  266. package/dist/collection/stories/image-view.stories.js +1 -0
  267. package/dist/collection/stories/image-view.stories.js.map +1 -0
  268. package/dist/collection/stories/modal.stories.js +1 -0
  269. package/dist/collection/stories/modal.stories.js.map +1 -0
  270. package/dist/collection/stories/onboarding.stories.js +1 -0
  271. package/dist/collection/stories/onboarding.stories.js.map +1 -0
  272. package/dist/collection/stories/overlay.stories.js +1 -0
  273. package/dist/collection/stories/overlay.stories.js.map +1 -0
  274. package/dist/collection/stories/overlayedModal.stories.js +1 -0
  275. package/dist/collection/stories/overlayedModal.stories.js.map +1 -0
  276. package/dist/collection/stories/privacy-badge.stories.js +1 -0
  277. package/dist/collection/stories/privacy-badge.stories.js.map +1 -0
  278. package/dist/collection/stories/slider.stories.js +1 -0
  279. package/dist/collection/stories/slider.stories.js.map +1 -0
  280. package/dist/collection/stories/teaser.stories.js +1 -0
  281. package/dist/collection/stories/teaser.stories.js.map +1 -0
  282. package/dist/collection/stories/vps-widget.stories.js +1 -0
  283. package/dist/collection/stories/vps-widget.stories.js.map +1 -0
  284. package/dist/collection/stories/vviinn-product.stories.js +1 -0
  285. package/dist/collection/stories/vviinn-product.stories.js.map +1 -0
  286. package/dist/collection/tracking/event.js +1 -0
  287. package/dist/collection/tracking/event.js.map +1 -0
  288. package/dist/collection/tracking/filter.js +1 -0
  289. package/dist/collection/tracking/filter.js.map +1 -0
  290. package/dist/collection/tracking/index.js +1 -0
  291. package/dist/collection/tracking/index.js.map +1 -0
  292. package/dist/collection/tracking/models.js +1 -0
  293. package/dist/collection/tracking/models.js.map +1 -0
  294. package/dist/collection/tracking/product.js +1 -0
  295. package/dist/collection/tracking/product.js.map +1 -0
  296. package/dist/collection/tracking/search.js +1 -0
  297. package/dist/collection/tracking/search.js.map +1 -0
  298. package/dist/collection/tracking/widget.js +1 -0
  299. package/dist/collection/tracking/widget.js.map +1 -0
  300. package/dist/collection/utils/collections/collectionsUtils.js +1 -0
  301. package/dist/collection/utils/collections/collectionsUtils.js.map +1 -0
  302. package/dist/collection/utils/either.js +1 -0
  303. package/dist/collection/utils/either.js.map +1 -0
  304. package/dist/collection/utils/enum/enumUtils.js +1 -0
  305. package/dist/collection/utils/enum/enumUtils.js.map +1 -0
  306. package/dist/collection/utils/event/Events.js +1 -0
  307. package/dist/collection/utils/event/Events.js.map +1 -0
  308. package/dist/collection/utils/number/index.js +1 -0
  309. package/dist/collection/utils/number/index.js.map +1 -0
  310. package/dist/collection/utils/option/option.js +1 -0
  311. package/dist/collection/utils/option/option.js.map +1 -0
  312. package/dist/collection/utils/semigroup/semigroupDiff.js +1 -0
  313. package/dist/collection/utils/semigroup/semigroupDiff.js.map +1 -0
  314. package/dist/collection/utils/token/tokenUtils.js +1 -0
  315. package/dist/collection/utils/token/tokenUtils.js.map +1 -0
  316. package/dist/esm/Campaign-90ba7e06.js +2 -0
  317. package/dist/esm/Campaign-90ba7e06.js.map +1 -0
  318. package/dist/esm/{Handler-f9b8735c.js → Handler-7bfee84f.js} +30 -43
  319. package/dist/esm/Handler-7bfee84f.js.map +1 -0
  320. package/dist/esm/cropper-handler.entry.js +7 -4
  321. package/dist/esm/cropper-handler.entry.js.map +1 -0
  322. package/dist/esm/{customized-slots-00afe247.js → customized-slots-b372eaed.js} +3 -1
  323. package/dist/esm/customized-slots-b372eaed.js.map +1 -0
  324. package/dist/esm/highlight-box_22.entry.js +68 -39
  325. package/dist/esm/highlight-box_22.entry.js.map +1 -0
  326. package/dist/esm/{imageSearch.store-9dde5360.js → imageSearch.store-cccd9b24.js} +3572 -2251
  327. package/dist/esm/imageSearch.store-cccd9b24.js.map +1 -0
  328. package/dist/esm/{index-590cb67e.js → index-48ef9564.js} +685 -304
  329. package/dist/esm/index-48ef9564.js.map +1 -0
  330. package/dist/esm/{index-b31d86ce.js → index-714e572a.js} +3 -1
  331. package/dist/esm/index-714e572a.js.map +1 -0
  332. package/dist/esm/{index-4d5b52ba.js → index-fdc32fbc.js} +3 -1
  333. package/dist/esm/index-fdc32fbc.js.map +1 -0
  334. package/dist/esm/index.js +2 -0
  335. package/dist/esm/index.js.map +1 -0
  336. package/dist/esm/loader.js +6 -3
  337. package/dist/esm/loader.js.map +1 -0
  338. package/dist/esm/polyfills/css-shim.js +1 -1
  339. package/dist/esm/vviinn-button.entry.js +5 -3
  340. package/dist/esm/vviinn-button.entry.js.map +1 -0
  341. package/dist/esm/vviinn-carousel_3.entry.js +123 -38
  342. package/dist/esm/vviinn-carousel_3.entry.js.map +1 -0
  343. package/dist/esm/vviinn-error.entry.js +4 -2
  344. package/dist/esm/vviinn-error.entry.js.map +1 -0
  345. package/dist/esm/vviinn-preloader.entry.js +7 -5
  346. package/dist/esm/vviinn-preloader.entry.js.map +1 -0
  347. package/dist/esm/vviinn-recommendations-sidebar.entry.js +15 -6
  348. package/dist/esm/vviinn-recommendations-sidebar.entry.js.map +1 -0
  349. package/dist/esm/vviinn-vpr-button.entry.js +13 -12
  350. package/dist/esm/vviinn-vpr-button.entry.js.map +1 -0
  351. package/dist/esm/vviinn-vps-button.entry.js +28 -25
  352. package/dist/esm/vviinn-vps-button.entry.js.map +1 -0
  353. package/dist/esm/vviinn-vps-widget.entry.js +46 -31
  354. package/dist/esm/vviinn-vps-widget.entry.js.map +1 -0
  355. package/dist/esm/vviinn-widgets.js +9 -3
  356. package/dist/esm/vviinn-widgets.js.map +1 -0
  357. package/dist/loader/index.d.ts +9 -0
  358. package/dist/loader/package.json +1 -0
  359. package/dist/types/Image/sizing.d.ts +4 -4
  360. package/dist/types/campaign/Campaign.d.ts +5 -5
  361. package/dist/types/campaign/VCSCampaignResponse.d.ts +1 -1
  362. package/dist/types/components/vviinn-carousel/vviinn-carousel.d.ts +2 -2
  363. package/dist/types/components/vviinn-image-selector/vviinn-image-selector.d.ts +4 -0
  364. package/dist/types/components/vviinn-modal/vviinn-modal.d.ts +2 -0
  365. package/dist/types/components/vviinn-overlayed-modal/vviinn-overlayed-modal.d.ts +2 -0
  366. package/dist/types/components/vviinn-product-card/render-helpers.d.ts +3 -3
  367. package/dist/types/components/vviinn-slider/arrow.d.ts +2 -2
  368. package/dist/types/components/vviinn-vpr-button/recommendations-sidebar/recommendations-sidebar.d.ts +2 -2
  369. package/dist/types/components/vviinn-vps-button/vviinn-vps-button.d.ts +9 -4
  370. package/dist/types/components/vviinn-vps-widget/vviinn-vps-widget.d.ts +8 -0
  371. package/dist/types/components.d.ts +154 -54
  372. package/dist/types/error.d.ts +1 -1
  373. package/dist/types/geometry/Point.d.ts +1 -1
  374. package/dist/types/geometry/Rectangle.d.ts +1 -1
  375. package/dist/types/geometry/Sized.d.ts +1 -1
  376. package/dist/types/interfaces/generated.d.ts +192 -371
  377. package/dist/types/network/ion/File.d.ts +2 -2
  378. package/dist/types/network/ion/Form.d.ts +5 -5
  379. package/dist/types/network/ion/Link.d.ts +1 -1
  380. package/dist/types/network/ion/ValueObject.d.ts +4 -4
  381. package/dist/types/network/utils.d.ts +3 -3
  382. package/dist/types/recommendation/events.d.ts +5 -5
  383. package/dist/types/recommendation/recommendation.d.ts +1 -1
  384. package/dist/types/searchSession/searchSession.d.ts +7 -7
  385. package/dist/types/slider/GridMode.d.ts +1 -1
  386. package/dist/types/stencil-public-runtime.d.ts +98 -23
  387. package/dist/types/store/imageSearch.store.d.ts +1 -1
  388. package/dist/types/tracking/models.d.ts +2 -2
  389. package/dist/types/utils/event/Events.d.ts +1 -1
  390. package/dist/vviinn-widgets/index.esm.js +2 -0
  391. package/dist/vviinn-widgets/index.esm.js.map +1 -0
  392. package/dist/vviinn-widgets/p-0b0d59d7.entry.js +2 -0
  393. package/dist/vviinn-widgets/p-0b0d59d7.entry.js.map +1 -0
  394. package/dist/vviinn-widgets/p-14373da7.entry.js +2 -0
  395. package/dist/vviinn-widgets/p-14373da7.entry.js.map +1 -0
  396. package/dist/vviinn-widgets/p-18fd769b.js +2 -1
  397. package/dist/vviinn-widgets/p-18fd769b.js.map +1 -0
  398. package/dist/vviinn-widgets/p-2f7bf983.js +2 -0
  399. package/dist/vviinn-widgets/p-2f7bf983.js.map +1 -0
  400. package/dist/vviinn-widgets/p-3abc679c.js +2 -0
  401. package/dist/vviinn-widgets/p-3abc679c.js.map +1 -0
  402. package/dist/vviinn-widgets/p-3b99c62d.js +2 -0
  403. package/dist/vviinn-widgets/p-3b99c62d.js.map +1 -0
  404. package/dist/vviinn-widgets/p-4325566b.entry.js +2 -0
  405. package/dist/vviinn-widgets/p-4325566b.entry.js.map +1 -0
  406. package/dist/vviinn-widgets/p-53eacbe3.js +2 -0
  407. package/dist/vviinn-widgets/p-53eacbe3.js.map +1 -0
  408. package/dist/vviinn-widgets/p-645baf22.entry.js +2 -0
  409. package/dist/vviinn-widgets/p-645baf22.entry.js.map +1 -0
  410. package/dist/vviinn-widgets/p-a10b9151.entry.js +2 -0
  411. package/dist/vviinn-widgets/p-a10b9151.entry.js.map +1 -0
  412. package/dist/vviinn-widgets/p-c012ef97.entry.js +2 -0
  413. package/dist/vviinn-widgets/p-c012ef97.entry.js.map +1 -0
  414. package/dist/vviinn-widgets/p-c24caccd.js +2 -0
  415. package/dist/vviinn-widgets/p-c24caccd.js.map +1 -0
  416. package/dist/vviinn-widgets/p-d20a9a96.entry.js +2 -0
  417. package/dist/vviinn-widgets/p-d20a9a96.entry.js.map +1 -0
  418. package/dist/vviinn-widgets/p-d95d7c38.entry.js +2 -0
  419. package/dist/vviinn-widgets/p-d95d7c38.entry.js.map +1 -0
  420. package/dist/vviinn-widgets/p-e5e67a5f.entry.js +2 -0
  421. package/dist/vviinn-widgets/p-e5e67a5f.entry.js.map +1 -0
  422. package/dist/vviinn-widgets/p-e6d67de3.entry.js +2 -0
  423. package/dist/vviinn-widgets/p-e6d67de3.entry.js.map +1 -0
  424. package/dist/vviinn-widgets/p-fa17e81f.js +3 -0
  425. package/dist/vviinn-widgets/p-fa17e81f.js.map +1 -0
  426. package/dist/vviinn-widgets/vviinn-widgets.esm.js +2 -1
  427. package/dist/vviinn-widgets/vviinn-widgets.esm.js.map +1 -0
  428. package/package.json +12 -12
  429. package/www/build/index.esm.js +2 -0
  430. package/www/build/index.esm.js.map +1 -0
  431. package/www/build/p-0b0d59d7.entry.js +2 -0
  432. package/www/build/p-0b0d59d7.entry.js.map +1 -0
  433. package/www/build/p-14373da7.entry.js +2 -0
  434. package/www/build/p-14373da7.entry.js.map +1 -0
  435. package/www/build/p-18fd769b.js +2 -1
  436. package/www/build/p-18fd769b.js.map +1 -0
  437. package/www/build/p-2f7bf983.js +2 -0
  438. package/www/build/p-2f7bf983.js.map +1 -0
  439. package/www/build/p-3abc679c.js +2 -0
  440. package/www/build/p-3abc679c.js.map +1 -0
  441. package/www/build/p-3b99c62d.js +2 -0
  442. package/www/build/p-3b99c62d.js.map +1 -0
  443. package/www/build/p-4325566b.entry.js +2 -0
  444. package/www/build/p-4325566b.entry.js.map +1 -0
  445. package/www/build/p-53eacbe3.js +2 -0
  446. package/www/build/p-53eacbe3.js.map +1 -0
  447. package/www/build/p-645baf22.entry.js +2 -0
  448. package/www/build/p-645baf22.entry.js.map +1 -0
  449. package/www/build/p-a10b9151.entry.js +2 -0
  450. package/www/build/p-a10b9151.entry.js.map +1 -0
  451. package/www/build/p-a67898be.css +1 -0
  452. package/www/build/p-ae6e6410.js +2 -0
  453. package/www/build/p-c012ef97.entry.js +2 -0
  454. package/www/build/p-c012ef97.entry.js.map +1 -0
  455. package/www/build/p-c24caccd.js +2 -0
  456. package/www/build/p-c24caccd.js.map +1 -0
  457. package/www/build/p-d20a9a96.entry.js +2 -0
  458. package/www/build/p-d20a9a96.entry.js.map +1 -0
  459. package/www/build/p-d95d7c38.entry.js +2 -0
  460. package/www/build/p-d95d7c38.entry.js.map +1 -0
  461. package/www/build/p-e5e67a5f.entry.js +2 -0
  462. package/www/build/p-e5e67a5f.entry.js.map +1 -0
  463. package/www/build/p-e6d67de3.entry.js +2 -0
  464. package/www/build/p-e6d67de3.entry.js.map +1 -0
  465. package/www/build/p-fa17e81f.js +3 -0
  466. package/www/build/p-fa17e81f.js.map +1 -0
  467. package/www/build/vviinn-widgets.esm.js +2 -1
  468. package/www/build/vviinn-widgets.esm.js.map +1 -0
  469. package/www/index.html +1 -1
  470. package/dist/vviinn-widgets/p-11f61564.js +0 -1
  471. package/dist/vviinn-widgets/p-12851e97.entry.js +0 -1
  472. package/dist/vviinn-widgets/p-2f9ee951.js +0 -1
  473. package/dist/vviinn-widgets/p-339c6838.js +0 -1
  474. package/dist/vviinn-widgets/p-3b2c91c0.entry.js +0 -1
  475. package/dist/vviinn-widgets/p-45df9f28.entry.js +0 -1
  476. package/dist/vviinn-widgets/p-57ed5303.entry.js +0 -1
  477. package/dist/vviinn-widgets/p-69850e5b.js +0 -1
  478. package/dist/vviinn-widgets/p-7c2f762a.entry.js +0 -1
  479. package/dist/vviinn-widgets/p-7c3b7388.entry.js +0 -1
  480. package/dist/vviinn-widgets/p-85006f41.entry.js +0 -1
  481. package/dist/vviinn-widgets/p-8a3dd76d.entry.js +0 -1
  482. package/dist/vviinn-widgets/p-99e58be7.entry.js +0 -1
  483. package/dist/vviinn-widgets/p-a2b450b6.entry.js +0 -1
  484. package/dist/vviinn-widgets/p-bcc1ccf0.js +0 -1
  485. package/dist/vviinn-widgets/p-e6fee8d2.js +0 -1
  486. package/www/build/p-11f61564.js +0 -1
  487. package/www/build/p-12851e97.entry.js +0 -1
  488. package/www/build/p-2f9ee951.js +0 -1
  489. package/www/build/p-339c6838.js +0 -1
  490. package/www/build/p-3b2c91c0.entry.js +0 -1
  491. package/www/build/p-45df9f28.entry.js +0 -1
  492. package/www/build/p-57ed5303.entry.js +0 -1
  493. package/www/build/p-69850e5b.js +0 -1
  494. package/www/build/p-7c2f762a.entry.js +0 -1
  495. package/www/build/p-7c3b7388.entry.js +0 -1
  496. package/www/build/p-85006f41.entry.js +0 -1
  497. package/www/build/p-8a3dd76d.entry.js +0 -1
  498. package/www/build/p-99e58be7.entry.js +0 -1
  499. package/www/build/p-9e2c131a.js +0 -125
  500. package/www/build/p-a2b450b6.entry.js +0 -1
  501. package/www/build/p-bcc1ccf0.js +0 -1
  502. package/www/build/p-e0153ae2.css +0 -6
  503. package/www/build/p-e6fee8d2.js +0 -1
@@ -1,9 +1,9 @@
1
1
  import { Valueable } from "./ValueObject";
2
- declare type IonFileData = {
2
+ type IonFileData = {
3
3
  name: string;
4
4
  mediaType: string;
5
5
  };
6
- export declare type IonFile = Valueable<string> & IonFileData;
6
+ export type IonFile = Valueable<string> & IonFileData;
7
7
  export declare const fileToB64: (f: File) => Promise<string>;
8
8
  export declare const fromFile: (f: File) => Promise<IonFile>;
9
9
  export {};
@@ -4,7 +4,7 @@ import { Valueable } from "./ValueObject";
4
4
  import { Link } from "./Link";
5
5
  import { ValueObject } from "./ValueObject";
6
6
  import { BasicError } from "../../error";
7
- declare type FormRelation = "form" | "edit-form" | "create-form" | "query-form";
7
+ type FormRelation = "form" | "edit-form" | "create-form" | "query-form";
8
8
  declare enum FormMemberName {
9
9
  desc = "desc",
10
10
  eform = "eform",
@@ -29,15 +29,15 @@ declare enum FormMemberName {
29
29
  value = "value",
30
30
  visible = "visible"
31
31
  }
32
- declare type FormMemberObject = {
32
+ type FormMemberObject = {
33
33
  [key in FormMemberName]: unknown;
34
34
  };
35
- declare type FormField = Partial<FormMemberObject>;
35
+ type FormField = Partial<FormMemberObject>;
36
36
  export declare const checkFormFields: (f: FormField[], data: Object) => E.Either<string, Object>;
37
- export declare type FormType = {
37
+ export type FormType = {
38
38
  rel: FormRelation[];
39
39
  };
40
- export declare type Form = Valueable<FormField[]> & Link & FormType;
40
+ export type Form = Valueable<FormField[]> & Link & FormType;
41
41
  export declare const requestFromForm: (form: Form, data: Object) => E.Either<string, [string, RequestInit]>;
42
42
  export declare const formRequest: <T>(form: Form, data?: Object) => (payload: RequestInit) => TE.TaskEither<BasicError<Response> | BasicError<string>, ValueObject<T>>;
43
43
  export {};
@@ -5,7 +5,7 @@ import { RequestMethod } from "../utils";
5
5
  export interface IonLinkParams {
6
6
  readonly [param: string]: string;
7
7
  }
8
- export declare type Link = {
8
+ export type Link = {
9
9
  href: string;
10
10
  readonly method?: RequestMethod;
11
11
  readonly name?: string;
@@ -11,17 +11,17 @@ declare enum ObjectMemberName {
11
11
  type = "type",
12
12
  value = "value"
13
13
  }
14
- declare type MemberObject = {
14
+ type MemberObject = {
15
15
  [key in ObjectMemberName]: unknown;
16
16
  };
17
- export declare type Valueable<T> = {
17
+ export type Valueable<T> = {
18
18
  readonly value: T;
19
19
  };
20
- declare type Linked = {
20
+ type Linked = {
21
21
  readonly links: {
22
22
  [link: string]: Link;
23
23
  };
24
24
  };
25
- export declare type ValueObject<T> = Valueable<T> & Partial<MemberObject> & Partial<Linked>;
25
+ export type ValueObject<T> = Valueable<T> & Partial<MemberObject> & Partial<Linked>;
26
26
  export declare const foldValueObject: <T>(i: ValueObject<T>) => T;
27
27
  export {};
@@ -16,10 +16,10 @@ export declare const mergeInitRequests: S.Semigroup<{
16
16
  readonly referrer?: string;
17
17
  readonly referrerPolicy?: ReferrerPolicy;
18
18
  readonly signal?: AbortSignal;
19
- readonly window?: any;
19
+ readonly window?: null;
20
20
  }>;
21
- export declare type RequestWithPath = [string, RequestInit];
22
- export declare type RequestMethod = "GET" | "POST" | "DELETE";
21
+ export type RequestWithPath = [string, RequestInit];
22
+ export type RequestMethod = "GET" | "POST" | "DELETE";
23
23
  export declare const createBasicRequest: (method: RequestMethod) => RequestInit;
24
24
  export declare const createRequestFromMethod: (method: RequestMethod) => E.Either<any, RequestInit>;
25
25
  export declare const createInitGetRequest: E.Either<any, RequestInit>;
@@ -2,22 +2,22 @@ import { FilterAction } from "vviinn-tracking-client-ts";
2
2
  import { CampaignTypeTitle, CampaignTypeId, WidgetType } from "../campaign/Campaign";
3
3
  import { ValueObject } from "../network/ion/ValueObject";
4
4
  import { DetectedObject } from "../searchSession/searchSession";
5
- export declare type BasicEventData = {
5
+ export type BasicEventData = {
6
6
  widgetType: WidgetType;
7
7
  campaignTypeId: CampaignTypeId;
8
8
  campaignTypeName: CampaignTypeTitle;
9
9
  widgetId?: string;
10
10
  };
11
- export declare type SelectObjectEventData = BasicEventData & {
11
+ export type SelectObjectEventData = BasicEventData & {
12
12
  detectedObject: ValueObject<DetectedObject>;
13
13
  };
14
- export declare type SelectFilterEventData = BasicEventData & {
14
+ export type SelectFilterEventData = BasicEventData & {
15
15
  action: FilterAction;
16
16
  filterName?: string;
17
17
  };
18
- export declare type ProductCardEventData = BasicEventData & {
18
+ export type ProductCardEventData = BasicEventData & {
19
19
  productId: string;
20
20
  productRank: number;
21
21
  productName: string;
22
22
  };
23
- export declare type ProductCardEvent = CustomEvent<ProductCardEventData>;
23
+ export type ProductCardEvent = CustomEvent<ProductCardEventData>;
@@ -1,2 +1,2 @@
1
1
  import { components } from "../interfaces/generated";
2
- export declare type Recommendation = components["schemas"]["visual-product-search-object"];
2
+ export type Recommendation = components["schemas"]["visual-product-search-object"];
@@ -16,26 +16,26 @@ export interface SearchSessionFilter {
16
16
  filters: Link[];
17
17
  }
18
18
  export declare const readFilters: (filters: SearchSessionFilters) => SearchSessionFilter[];
19
- declare type HasFilters = {
19
+ type HasFilters = {
20
20
  readonly filters: ValueObject<SearchSessionFilters>;
21
21
  };
22
- export declare type DetectedObject = {
22
+ export type DetectedObject = {
23
23
  class: string;
24
24
  score: number;
25
25
  rectangle: RectangleAlt;
26
26
  };
27
27
  export declare const detectedObjectEq: Eq<DetectedObject>;
28
- declare type ContainsDetectedObjects = {
28
+ type ContainsDetectedObjects = {
29
29
  readonly detectedObjects: ValueObject<DetectedObject>[];
30
30
  };
31
- declare type ContainsRectangleSearch = {
31
+ type ContainsRectangleSearch = {
32
32
  readonly searchArea: Form;
33
33
  };
34
- declare type ContainsHiresImageUpload = {
34
+ type ContainsHiresImageUpload = {
35
35
  readonly uploadHighResolutionImage: Form;
36
36
  };
37
- export declare type SearchSession = ValueObject<Recommendation[]> & HasFilters & Partial<ContainsDetectedObjects> & ContainsRectangleSearch & ContainsHiresImageUpload;
37
+ export type SearchSession = ValueObject<Recommendation[]> & HasFilters & Partial<ContainsDetectedObjects> & ContainsRectangleSearch & ContainsHiresImageUpload;
38
38
  export declare const searchSessionClient: (initialData: RequestInit, campaignId?: O.Option<string>) => TE.TaskEither<BasicError<Response | string>, SearchSession>;
39
- export declare type ObjectsDetectedEvent = CustomEvent<ValueObject<DetectedObject>[]>;
39
+ export type ObjectsDetectedEvent = CustomEvent<ValueObject<DetectedObject>[]>;
40
40
  export declare const makeRequestFromFile: (token: string, file: File) => E.Either<BasicError<string>, RequestInit>;
41
41
  export {};
@@ -1 +1 @@
1
- export declare type GridMode = "auto" | "grid" | "manual";
1
+ export type GridMode = "auto" | "grid" | "manual";
@@ -133,7 +133,7 @@ export interface ListenOptions {
133
133
  */
134
134
  passive?: boolean;
135
135
  }
136
- export declare type ListenTargetOptions = 'body' | 'document' | 'window';
136
+ export type ListenTargetOptions = 'body' | 'document' | 'window';
137
137
  export interface StateDecorator {
138
138
  (): PropertyDecorator;
139
139
  }
@@ -214,14 +214,16 @@ export declare const State: StateDecorator;
214
214
  * https://stenciljs.com/docs/reactive-data#watch-decorator
215
215
  */
216
216
  export declare const Watch: WatchDecorator;
217
- export declare type ResolutionHandler = (elm: HTMLElement) => string | undefined | null;
218
- export declare type ErrorHandler = (err: any, element?: HTMLElement) => void;
217
+ export type ResolutionHandler = (elm: HTMLElement) => string | undefined | null;
218
+ export type ErrorHandler = (err: any, element?: HTMLElement) => void;
219
219
  /**
220
220
  * `setMode()` is used for libraries which provide multiple "modes" for styles.
221
221
  */
222
222
  export declare const setMode: (handler: ResolutionHandler) => void;
223
223
  /**
224
- * getMode
224
+ * `getMode()` is used for libraries which provide multiple "modes" for styles.
225
+ * @param ref a reference to the node to get styles for
226
+ * @returns the current mode or undefined, if not found
225
227
  */
226
228
  export declare function getMode<T = string | undefined>(ref: any): T;
227
229
  export declare function setPlatformHelpers(helpers: {
@@ -234,6 +236,9 @@ export declare function setPlatformHelpers(helpers: {
234
236
  /**
235
237
  * Get the base path to where the assets can be found. Use `setAssetPath(path)`
236
238
  * if the path needs to be customized.
239
+ * @param path the path to use in calculating the asset path. this value will be
240
+ * used in conjunction with the base asset path
241
+ * @returns the base path
237
242
  */
238
243
  export declare function getAssetPath(path: string): string;
239
244
  /**
@@ -246,22 +251,38 @@ export declare function getAssetPath(path: string): string;
246
251
  * `setAssetPath(document.currentScript.src)`, or using a bundler's replace plugin to
247
252
  * dynamically set the path at build time, such as `setAssetPath(process.env.ASSET_PATH)`.
248
253
  * But do note that this configuration depends on how your script is bundled, or lack of
249
- * bunding, and where your assets can be loaded from. Additionally custom bundling
254
+ * bundling, and where your assets can be loaded from. Additionally custom bundling
250
255
  * will have to ensure the static assets are copied to its build directory.
256
+ * @param path the asset path to set
257
+ * @returns the set path
251
258
  */
252
259
  export declare function setAssetPath(path: string): string;
253
260
  /**
254
- * getElement
261
+ * Used to specify a nonce value that corresponds with an application's
262
+ * [Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP).
263
+ * When set, the nonce will be added to all dynamically created script and style tags at runtime.
264
+ * Alternatively, the nonce value can be set on a `meta` tag in the DOM head
265
+ * (<meta name="csp-nonce" content="{ nonce value here }" />) and will result in the same behavior.
266
+ * @param nonce The value to be used for the nonce attribute.
267
+ */
268
+ export declare function setNonce(nonce: string): void;
269
+ /**
270
+ * Retrieve a Stencil element for a given reference
271
+ * @param ref the ref to get the Stencil element for
272
+ * @returns a reference to the element
255
273
  */
256
274
  export declare function getElement(ref: any): HTMLStencilElement;
257
275
  /**
258
276
  * Schedules a new render of the given instance or element even if no state changed.
259
277
  *
260
- * Notice `forceUpdate()` is not syncronous and might perform the DOM render in the next frame.
278
+ * Notice `forceUpdate()` is not synchronous and might perform the DOM render in the next frame.
279
+ *
280
+ * @param ref the node/element to force the re-render of
261
281
  */
262
282
  export declare function forceUpdate(ref: any): void;
263
283
  /**
264
284
  * getRenderingRef
285
+ * @returns the rendering ref
265
286
  */
266
287
  export declare function getRenderingRef(): any;
267
288
  export interface HTMLStencilElement extends HTMLElement {
@@ -272,6 +293,8 @@ export interface HTMLStencilElement extends HTMLElement {
272
293
  * in the best moment to perform DOM mutation without causing layout thrashing.
273
294
  *
274
295
  * For further information: https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing
296
+ *
297
+ * @param task the DOM-write to schedule
275
298
  */
276
299
  export declare function writeTask(task: RafCallback): void;
277
300
  /**
@@ -279,6 +302,8 @@ export declare function writeTask(task: RafCallback): void;
279
302
  * in the best moment to perform DOM reads without causing layout thrashing.
280
303
  *
281
304
  * For further information: https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing
305
+ *
306
+ * @param task the DOM-read to schedule
282
307
  */
283
308
  export declare function readTask(task: RafCallback): void;
284
309
  /**
@@ -417,13 +442,57 @@ interface HostAttributes {
417
442
  ref?: (el: HTMLElement | null) => void;
418
443
  [prop: string]: any;
419
444
  }
445
+ /**
446
+ * Utilities for working with functional Stencil components. An object
447
+ * conforming to this interface is passed by the Stencil runtime as the third
448
+ * argument to a functional component, allowing component authors to work with
449
+ * features like children.
450
+ *
451
+ * The children of a functional component will be passed as the second
452
+ * argument, so a functional component which uses these utils to transform its
453
+ * children might look like the following:
454
+ *
455
+ * ```ts
456
+ * export const AddClass: FunctionalComponent = (_, children, utils) => (
457
+ * utils.map(children, child => ({
458
+ * ...child,
459
+ * vattrs: {
460
+ * ...child.vattrs,
461
+ * class: `${child.vattrs.class} add-class`
462
+ * }
463
+ * }))
464
+ * );
465
+ * ```
466
+ *
467
+ * For more see the Stencil documentation, here:
468
+ * https://stenciljs.com/docs/functional-components
469
+ */
420
470
  export interface FunctionalUtilities {
471
+ /**
472
+ * Utility for reading the children of a functional component at runtime.
473
+ * Since the Stencil runtime uses a different interface for children it is
474
+ * not recommendeded to read the children directly, and is preferable to use
475
+ * this utility to, for instance, perform a side effect for each child.
476
+ */
421
477
  forEach: (children: VNode[], cb: (vnode: ChildNode, index: number, array: ChildNode[]) => void) => void;
478
+ /**
479
+ * Utility for transforming the children of a functional component. Given an
480
+ * array of children and a callback this will return a list of the results of
481
+ * passing each child to the supplied callback.
482
+ */
422
483
  map: (children: VNode[], cb: (vnode: ChildNode, index: number, array: ChildNode[]) => ChildNode) => VNode[];
423
484
  }
424
485
  export interface FunctionalComponent<T = {}> {
425
486
  (props: T, children: VNode[], utils: FunctionalUtilities): VNode | VNode[];
426
487
  }
488
+ /**
489
+ * A Child VDOM node
490
+ *
491
+ * This has most of the same properties as {@link VNode} but friendlier names
492
+ * (i.e. `vtag` instead of `$tag$`, `vchildren` instead of `$children$`) in
493
+ * order to provide a friendlier public interface for users of the
494
+ * {@link FunctionalUtilities}).
495
+ */
427
496
  export interface ChildNode {
428
497
  vtag?: string | number | Function;
429
498
  vkey?: string | number;
@@ -470,6 +539,9 @@ export declare function h(sel: any, children: Array<VNode | undefined | null>):
470
539
  export declare function h(sel: any, data: VNodeData | null, text: string): VNode;
471
540
  export declare function h(sel: any, data: VNodeData | null, children: Array<VNode | undefined | null>): VNode;
472
541
  export declare function h(sel: any, data: VNodeData | null, children: VNode): VNode;
542
+ /**
543
+ * A virtual DOM node
544
+ */
473
545
  export interface VNode {
474
546
  $flags$: number;
475
547
  $tag$: string | number | Function;
@@ -666,7 +738,7 @@ export declare namespace JSXBase {
666
738
  use: JSXBase.SVGAttributes;
667
739
  view: JSXBase.SVGAttributes;
668
740
  }
669
- interface SlotAttributes {
741
+ interface SlotAttributes extends JSXAttributes {
670
742
  name?: string;
671
743
  slot?: string;
672
744
  onSlotchange?: (event: Event) => void;
@@ -740,6 +812,7 @@ export declare namespace JSXBase {
740
812
  datetime?: string;
741
813
  }
742
814
  interface DialogHTMLAttributes<T> extends HTMLAttributes<T> {
815
+ onCancel?: (event: Event) => void;
743
816
  onClose?: (event: Event) => void;
744
817
  open?: boolean;
745
818
  returnValue?: string;
@@ -820,8 +893,8 @@ export declare namespace JSXBase {
820
893
  accept?: string;
821
894
  allowdirs?: boolean;
822
895
  alt?: string;
823
- autoCapitalize?: any;
824
- autocapitalize?: any;
896
+ autoCapitalize?: string;
897
+ autocapitalize?: string;
825
898
  autoComplete?: string;
826
899
  autocomplete?: string;
827
900
  autoFocus?: boolean;
@@ -1145,8 +1218,8 @@ export declare namespace JSXBase {
1145
1218
  resource?: string;
1146
1219
  typeof?: string;
1147
1220
  vocab?: string;
1148
- autoCapitalize?: any;
1149
- autocapitalize?: any;
1221
+ autoCapitalize?: string;
1222
+ autocapitalize?: string;
1150
1223
  autoCorrect?: string;
1151
1224
  autocorrect?: string;
1152
1225
  autoSave?: string;
@@ -1427,9 +1500,7 @@ export declare namespace JSXBase {
1427
1500
  z?: number | string;
1428
1501
  zoomAndPan?: string;
1429
1502
  }
1430
- interface DOMAttributes<T = Element> {
1431
- key?: string | number;
1432
- ref?: (elm?: T) => void;
1503
+ interface DOMAttributes<T> extends JSXAttributes<T> {
1433
1504
  slot?: string;
1434
1505
  part?: string;
1435
1506
  exportparts?: string;
@@ -1439,12 +1510,12 @@ export declare namespace JSXBase {
1439
1510
  onCutCapture?: (event: ClipboardEvent) => void;
1440
1511
  onPaste?: (event: ClipboardEvent) => void;
1441
1512
  onPasteCapture?: (event: ClipboardEvent) => void;
1442
- onCompositionEnd?: (event: CompositionEvent) => void;
1443
- onCompositionEndCapture?: (event: CompositionEvent) => void;
1444
- onCompositionStart?: (event: CompositionEvent) => void;
1445
- onCompositionStartCapture?: (event: CompositionEvent) => void;
1446
- onCompositionUpdate?: (event: CompositionEvent) => void;
1447
- onCompositionUpdateCapture?: (event: CompositionEvent) => void;
1513
+ onCompositionend?: (event: CompositionEvent) => void;
1514
+ onCompositionendCapture?: (event: CompositionEvent) => void;
1515
+ onCompositionstart?: (event: CompositionEvent) => void;
1516
+ onCompositionstartCapture?: (event: CompositionEvent) => void;
1517
+ onCompositionupdate?: (event: CompositionEvent) => void;
1518
+ onCompositionupdateCapture?: (event: CompositionEvent) => void;
1448
1519
  onFocus?: (event: FocusEvent) => void;
1449
1520
  onFocusCapture?: (event: FocusEvent) => void;
1450
1521
  onFocusin?: (event: FocusEvent) => void;
@@ -1455,8 +1526,8 @@ export declare namespace JSXBase {
1455
1526
  onBlurCapture?: (event: FocusEvent) => void;
1456
1527
  onChange?: (event: Event) => void;
1457
1528
  onChangeCapture?: (event: Event) => void;
1458
- onInput?: (event: Event) => void;
1459
- onInputCapture?: (event: Event) => void;
1529
+ onInput?: (event: InputEvent) => void;
1530
+ onInputCapture?: (event: InputEvent) => void;
1460
1531
  onReset?: (event: Event) => void;
1461
1532
  onResetCapture?: (event: Event) => void;
1462
1533
  onSubmit?: (event: Event) => void;
@@ -1550,6 +1621,10 @@ export declare namespace JSXBase {
1550
1621
  onTransitionEndCapture?: (event: TransitionEvent) => void;
1551
1622
  }
1552
1623
  }
1624
+ export interface JSXAttributes<T = Element> {
1625
+ key?: string | number;
1626
+ ref?: (elm?: T) => void;
1627
+ }
1553
1628
  export interface CustomElementsDefineOptions {
1554
1629
  exclude?: string[];
1555
1630
  resourcesUrl?: string;
@@ -9,7 +9,7 @@ import { Rectangle } from "../geometry/Rectangle";
9
9
  import { Form } from "../network/ion/Form";
10
10
  import { Handler } from "../cropper/Handler";
11
11
  import { BasicError } from "../error";
12
- declare type ImageSearchStore = {
12
+ type ImageSearchStore = {
13
13
  token?: string;
14
14
  campaignId: O.Option<string>;
15
15
  results: Recommendation[];
@@ -5,8 +5,8 @@ declare const FILTER_EVENT_EVENT_TYPE = "filter_event";
5
5
  declare const SEARCH_EVENT_EVENT_TYPE = "search_event";
6
6
  declare const WIDGET_EVENT_EVENT_TYPE = "widget_event";
7
7
  export { PRODUCT_CLICK_EVENT_TYPE, PRODUCT_VIEW_EVENT_TYPE, FILTER_EVENT_EVENT_TYPE, SEARCH_EVENT_EVENT_TYPE, WIDGET_EVENT_EVENT_TYPE, };
8
- export declare type WidgetEvents = "product_click_event" | "product_view_event" | "filter_event" | "search_event" | "widget_event";
9
- export declare type WidgetEventType = {
8
+ export type WidgetEvents = "product_click_event" | "product_view_event" | "filter_event" | "search_event" | "widget_event";
9
+ export type WidgetEventType = {
10
10
  widget: Widget;
11
11
  typ: WidgetEvents;
12
12
  };
@@ -1,4 +1,4 @@
1
- export declare type ClientEvent = {
1
+ export type ClientEvent = {
2
2
  clientX: number;
3
3
  clientY: number;
4
4
  };
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{r,h as e,H as o}from"./p-fa17e81f.js";import{i as t}from"./p-3abc679c.js";import"./p-3b99c62d.js";const a=":host{--preloader-size:24px;--preloader-width:calc(var(--preloader-size) / 6);transform-origin:center;animation:rotate 3s linear infinite;border:var(--preloader-width) solid white;border-radius:50%;border-top-color:transparent;display:none;outline:0;width:var(--preloader-size);height:var(--preloader-size);box-sizing:border-box}:host(.active){display:flex}@keyframes rotate{from{transform:rotate(-360deg)}to{transform:rotate(360deg)}}";const i=class{constructor(e){r(this,e)}isActive(){return t.loading||t.objectDetectionInProgress}render(){return e(o,{class:{active:this.isActive()}})}};i.style=a;export{i as vviinn_preloader};
2
+ //# sourceMappingURL=p-0b0d59d7.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["vviinnPreloaderCss","VviinnPreloader","isActive","imageSearchState","loading","objectDetectionInProgress","render","h","Host","class","active","this"],"sources":["./src/components/vviinn-preloader/vviinn-preloader.css?tag=vviinn-preloader&encapsulation=shadow","./src/components/vviinn-preloader/vviinn-preloader.tsx"],"sourcesContent":[":host {\n --preloader-size: 24px;\n --preloader-width: calc(var(--preloader-size) / 6);\n transform-origin: center;\n animation: rotate 3s linear infinite;\n border: var(--preloader-width) solid white;\n border-radius: 50%;\n border-top-color: transparent;\n display: none;\n outline: 0;\n width: var(--preloader-size);\n height: var(--preloader-size);\n box-sizing: border-box;\n}\n\n:host(.active) {\n display: flex;\n}\n\n@keyframes rotate {\n from {\n transform: rotate(-360deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n","import { Component, Host, h } from \"@stencil/core\";\nimport { imageSearchState } from \"../../store/imageSearch.store\";\n\n@Component({\n tag: \"vviinn-preloader\",\n styleUrl: \"vviinn-preloader.css\",\n shadow: true,\n})\nexport class VviinnPreloader {\n private isActive(): boolean {\n return (\n imageSearchState.loading || imageSearchState.objectDetectionInProgress\n );\n }\n\n render() {\n return (\n <Host\n class={{\n active: this.isActive(),\n }}\n ></Host>\n );\n }\n}\n"],"mappings":"yGAAA,MAAMA,EAAqB,sb,MCQdC,EAAe,M,yBAClBC,WACN,OACEC,EAAiBC,SAAWD,EAAiBE,yB,CAIjDC,SACE,OACEC,EAACC,EAAI,CACHC,MAAO,CACLC,OAAQC,KAAKT,a"}
@@ -0,0 +1,2 @@
1
+ import{r as i,c as t,h as e,H as s,g as r}from"./p-fa17e81f.js";import{i as a,s as n,a as o,O as d,l as p}from"./p-3abc679c.js";import{s as l,S as c}from"./p-53eacbe3.js";import{e as h,f as g,g as u,h as v,v as m,b as f,i as b}from"./p-2f7bf983.js";import{c as x}from"./p-18fd769b.js";import"./p-3b99c62d.js";const y=":host{--color-primary-system:#0F62FE;--color-primary-hover-system:#014CDA;--color-icons-system:#2F8EDF;--spacer:8px}:host{display:block}.hidden{visibility:hidden;height:1px}vviinn-overlayed-modal.first-screen::part(title),vviinn-overlayed-modal.first-screen::part(secondary-action){visibility:hidden}.start-page{display:grid;grid-template-columns:repeat(2, 1fr);min-height:580px}.start-page_block{align-content:start;border-right:1px solid #f4f4f4;display:grid;padding:48px}.start-page_block.error{align-content:center}#onboarding-block{border-right:unset;box-sizing:border-box;grid-gap:24px;overflow-y:auto;position:relative;width:100%}vviinn-teaser{margin-bottom:32px;margin-top:-24px}vviinn-image-selector{align-items:center;background:var(--color-primary, var(--color-primary-system));border-color:var(--color-primary, var(--color-primary-system));border-radius:2px;color:white;display:grid;font-size:16px;font-weight:600;height:56px;justify-items:center;margin-bottom:16px;transition:background 0.1s ease-in-out}vviinn-image-selector:hover{background:var(--color-primary-hover, var(--color-primary-hover-system));border-color:var(--color-primary-hover, var(--color-primary-hover-system))}vviinn-image-selector:active{border-color:black}.upload-button-content{display:grid;align-items:center;justify-items:start;justify-content:center;grid-template-columns:max-content auto;grid-gap:16px}.results-page{display:grid;grid-template-columns:336px auto;box-sizing:border-box}.results-page>*{padding:24px;box-sizing:border-box}.products{align-content:center;align-items:start;box-sizing:border-box;display:grid;grid-gap:32px 16px;grid-template-columns:repeat(auto-fill, minmax(152px, 1fr));justify-items:center;padding:24px;padding-right:0;position:absolute;width:calc(100% - 16px)}.products.hidden{display:none}vviinn-empty-results{width:280px;align-self:center;justify-self:center}.products-wrapper{display:grid;overflow-y:auto;overflow-x:hidden;padding:unset;position:relative;width:100%}.image-wrapper{border-right:1px solid #f4f4f4;display:grid;grid-template-rows:min-content 170px;grid-gap:24px;min-width:100%}.onboarding-wrapper{position:absolute;width:100%;padding:48px;box-sizing:border-box;display:grid;grid-gap:64px;padding-bottom:24px}vviinn-product-card{gap:0;width:100%}vviinn-product-card::part(image){border:1px solid #eaeaea;margin-bottom:8px}vviinn-product-card::part(price-container),vviinn-product-card::part(deeplink),vviinn-product-card::part(title){align-self:start}search-filters span{display:none}search-filters::part(filter){background:#f4f4f4;border-radius:4px;border:1px solid #f4f4f4;box-sizing:border-box;color:#161616;font-size:14px;font-weight:600;line-height:20px}search-filters::part(show-more-filters){border:1px solid #f4f4f4;border-radius:4px;box-sizing:border-box;color:#161616;font-size:14px;font-weight:600;line-height:20px;padding:6px 16px}search-filters::part(show-more-filters):hover{background:#eaeaea}search-filters::part(filter):hover{background:#eaeaea}search-filters::part(filter):focus{outline:none;border:1px solid var(--color-primary, var(--color-primary-system))}search-filters::part(filter active){background:rgba(15, 98, 254, 0.15);color:var(--color-primary, var(--color-primary-system))}.filters-wrapper{overflow:auto}.results-page:not(.active){display:none}.nothing-found{display:grid;grid-gap:64px;justify-self:center;padding-top:64px;padding-bottom:16px;position:absolute;width:60%}@media (max-width: 768px){.start-page_block{padding:24px}.onboarding-wrapper{padding:24px}}@media (max-width: 640px){.start-page{grid-template-rows:min-content;grid-template-columns:unset;grid-gap:48px;padding:24px 0 48px 0}}@media (max-width: 640px) and (min-width: 415px){.onboarding-wrapper{position:unset}#onboarding-block{overflow:unset}.start-page.active{height:1px;overflow:auto}}@media (max-width: 415px){.results-page>*{box-sizing:border-box;padding:24px}vviinn-slide{padding-bottom:48px}.start-page_block:last-of-type{border-right:unset;overflow-y:unset;position:static;box-sizing:border-box;width:unset}.start-page_block{padding:0 24px}vviinn-teaser{margin-top:24px}.onboarding-wrapper{position:static;width:unset;padding:unset;box-sizing:border-box}.results-page{grid-template-columns:unset;grid-template-rows:min-content auto}.image{margin-bottom:8px}.image-wrapper{grid-template-rows:min-content auto;width:100%}.products-wrapper{align-content:start;position:static;overflow-y:unset;width:100%;padding-top:0}.products{position:static;padding:0;width:unset;grid-gap:32px 16px;justify-content:center}.nothing-found{position:static;grid-gap:64px;padding:unset;align-content:start;width:unset}}@media (max-width: 320px){.products{grid-template-columns:unset}}vviinn-wrong-format,vviinn-server-error{width:280px;align-self:center;justify-self:center}";var w=undefined&&undefined.__rest||function(i,t){var e={};for(var s in i)if(Object.prototype.hasOwnProperty.call(i,s)&&t.indexOf(s)<0)e[s]=i[s];if(i!=null&&typeof Object.getOwnPropertySymbols==="function")for(var r=0,s=Object.getOwnPropertySymbols(i);r<s.length;r++){if(t.indexOf(s[r])<0&&Object.prototype.propertyIsEnumerable.call(i,s[r]))e[s[r]]=i[s[r]]}return e};const k=i=>/^[-+]?(\d+|Infinity)$/.test(i)?Number(i):NaN;const I=i=>!p(i);const j=i=>!isNaN(i);const _=class{constructor(e){i(this,e);this.globalSlotsChanged=t(this,"globalSlotsChanged",7);this.vviinnWidgetLoad=t(this,"vviinnWidgetLoad",7);this.vviinnWidgetOpen=t(this,"vviinnWidgetOpen",7);this.vviinnWidgetClose=t(this,"vviinnWidgetClose",7);this.vviinnProductClick=t(this,"vviinnProductClick",7);this.vviinnProductView=t(this,"vviinnProductView",7);this.vviinnProductLoad=t(this,"vviinnProductLoad",7);this.vviinnImageUpload=t(this,"vviinnImageUpload",7);this.vviinnImageCrop=t(this,"vviinnImageCrop",7);this.vviinnSelectObject=t(this,"vviinnSelectObject",7);this.vviinnSelectFilter=t(this,"vviinnSelectFilter",7);this.vviinnNoResult=t(this,"vviinnNoResult",7);this.imageSource=null;this.setTrackingDeactivated=i=>{if(i.status==="rejected"){this.trackingDeactivated=true}};this.getBasicEventData=()=>{var i;return{widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:x["VPS"],widgetId:(i=this.buttonElementId)!==null&&i!==void 0?i:this.id}};this.token=undefined;this.apiPath="https://api.vviinn.com";this.active=false;this.currencySign="€";this.locale="de-DE";this.campaignId=undefined;this.showingInButton=false;this.buttonElementId=undefined;this.buttonPressed=undefined;this.mode="modal";this.resetVpsButton=undefined;this.slidePosition=0;this.width=0;this.wrongImageFormat=false;this.trackingDeactivated=false}componentDidLoad(){const i=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(i))}activeWatcher(i){if(i){this.overflow=document.body.style.overflow;document.body.style.overflow="hidden";this.trackOpenEvent()}else{document.body.style.overflow=this.overflow}}buttonPressedWatcher(i){if(!i)return;if(this.mode==="modal"){this.active=true;this.vviinnWidgetOpen.emit(this.getBasicEventData())}}trackProductView({detail:i}){if(this.trackingDeactivated)return;const{productRank:t,productId:e,productName:s,widgetType:r,widgetId:a,campaignTypeId:n,campaignTypeName:o}=i,d=w(i,["productRank","productId","productName","widgetType","widgetId","campaignTypeId","campaignTypeName"]);const p=h(Object.assign({session_id:this.uiSessionId,rank:t,product:e},d));this.trackingApi.trackEvent(p).then(this.setTrackingDeactivated)}async trackProductClick({detail:i}){const{productRank:t,productId:e,productName:s,widgetType:r,widgetId:n,campaignTypeId:o,campaignTypeName:d}=i,p=w(i,["productRank","productId","productName","widgetType","widgetId","campaignTypeId","campaignTypeName"]);const l=g(Object.assign({session_id:this.uiSessionId,rank:t,product:e},p));if(!this.trackingDeactivated){await this.trackingApi.trackEvent(this.trackingDeactivated?null:l).then(this.setTrackingDeactivated)}const c=a.results.find((t=>t.productId===i.productId));if(!c||!c.deeplink)return;window.location.href=c.deeplink}trachSearchAreaChanges(){if(this.trackingDeactivated)return;const i=u({session_id:this.uiSessionId,source:this.imageSource,search_area:"manual-selection"});this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}trackDetectedObject(){if(this.trackingDeactivated)return;const i=u({session_id:this.uiSessionId,source:this.imageSource,search_area:"attention-point"});this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}trackFilter({detail:i}){if(this.trackingDeactivated)return;const t=v({session_id:this.uiSessionId,source:this.imageSource,kind:"category",action:i.action});this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}connectedCallback(){n.apiPath=this.apiPath;n.currencySign=this.currencySign;n.locale=this.locale;a.token=this.token;a.campaignId=o.pipe(this.campaignId,d.fromNullable,d.chain(d.fromPredicate(I)),d.map(k),d.chain(d.fromPredicate(j)),d.map((i=>`${i}`)));this.uiSessionId=m();this.trackingApi=f(this.apiPath,this.token);this.id=this.el.id}componentWillLoad(){l(this,this.el);this.vviinnWidgetLoad.emit(this.getBasicEventData())}trackOpenEvent(){if(this.trackingDeactivated)return;const i=b({action:"open",session_id:this.uiSessionId});this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}handleImageSelection(i){this.imageSource=i;this.slidePosition=1;const t=this.el.shadowRoot.querySelector("vviinn-overlayed-modal");const e=t.shadowRoot.querySelector("vviinn-overlay");const s=e.querySelector("vviinn-modal");const r=s.shadowRoot.querySelector(".body");r.scrollTop=0;this.trackInitialSearch()}trackInitialSearch(){if(this.trackingDeactivated)return;const i=u({session_id:this.uiSessionId,source:this.imageSource,search_area:"full"});this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}resetState(){this.resetScroll("onboarding-block");this.slidePosition=0;a.image=d.none;a.imageUrl=d.none;a.imageBounds=d.none;a.searchArea=d.none;a.results=[];a.filters=[];a.detectedObjects=[];a.activeIonLink=undefined;a.rectangleSearchForm=undefined;a.loading=false;this.resetScroll("results-block")}haveErrors(){return this.wrongImageFormat||a.serverError}resetScroll(i,t="auto"){const e=this.el.shadowRoot.getElementById(i);e.scroll({top:0,left:0,behavior:t})}handleModalClose(){this.active=false;this.resetState();const i=["onboarding-block","results-block"];i.forEach((i=>this.resetScroll(i)));if(this.trackingDeactivated)return;const t=b({action:"close",session_id:this.uiSessionId});this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}render(){var i;return e(s,null,!this.showingInButton&&e(c,null),e("vviinn-overlayed-modal",{class:{"first-screen":this.slidePosition===0},active:this.active,resetState:this.resetState.bind(this),onVviinnWidgetClose:()=>this.handleModalClose(),buttonElementId:(i=this.buttonElementId)!==null&&i!==void 0?i:this.id,hideBackButton:this.mode==="upload",exportparts:"secondary-action, title, close-button, example-images"},e("vviinn-slider",{showBullets:false,position:this.slidePosition},e("vviinn-slide",{class:{"start-page":true}},e("div",{class:{error:this.haveErrors(),"start-page_block":true}},e("vviinn-wrong-format",{class:{hidden:!this.wrongImageFormat},handler:()=>this.wrongImageFormat=false}),e("vviinn-server-error",{class:{hidden:!a.serverError},handler:()=>a.serverError=false}),e("vviinn-teaser",{class:{hidden:this.haveErrors()}}),e("vviinn-image-selector",{class:{hidden:this.haveErrors()},onVviinnImageUpload:()=>{this.active=true;this.handleImageSelection("upload");if(this.mode==="upload"){this.vviinnWidgetOpen.emit(this.getBasicEventData())}},onVviinnNoResult:()=>this.wrongImageFormat=true,resetVpsButton:this.resetVpsButton,basicEventData:this.getBasicEventData(),part:"select-image_button",startUpload:this.buttonPressed&&this.showingInButton&&this.mode==="upload"},e("span",{slot:"upload-button-text",class:"upload-button-content"},e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"29",height:"28",fill:"none"},e("defs",null),e("path",{fill:"#fff","fill-rule":"evenodd",d:"M10.271 3.89A.875.875 0 0111 3.5h7c.293 0 .566.146.728.39l1.49 2.235h3.033a2.625 2.625 0 012.625 2.625V21a2.625 2.625 0 01-2.625 2.625H5.75A2.625 2.625 0 013.125 21V8.75A2.625 2.625 0 015.75 6.125h3.031l1.49-2.235zm1.197 1.36l-1.49 2.235a.875.875 0 01-.729.39H5.75a.875.875 0 00-.875.875V21a.875.875 0 00.875.875h17.5a.875.875 0 00.875-.875V8.75a.875.875 0 00-.875-.875h-3.5a.875.875 0 01-.729-.39l-1.49-2.235h-6.063z","clip-rule":"evenodd"}),e("path",{fill:"#fff","fill-rule":"evenodd",d:"M14.5 11.375a3.062 3.062 0 100 6.125 3.062 3.062 0 000-6.125zm-4.813 3.063a4.812 4.812 0 119.625 0 4.812 4.812 0 01-9.625 0z","clip-rule":"evenodd"})),e("slot",{name:"vviinn-image-upload-button-text"},e("span",null,"Kamera oder Bild auswählen")))),e("vviinn-privacy-badge",{class:{hidden:this.haveErrors()}})),e("div",{id:"onboarding-block",class:"start-page_block"},e("div",{class:"onboarding-wrapper"},e("vviinn-onboarding",null),e("vviinn-example-images",{part:"example-images",onVviinnImageUpload:()=>this.handleImageSelection("example"),onVviinnNoResult:()=>this.resetScroll("onboarding-block","smooth"),basicEventData:this.getBasicEventData()})))),e("vviinn-slide",{class:{"results-page":true,active:this.slidePosition==1}},e("div",{class:"image-wrapper"},e("vviinn-image-view",{basicEventData:this.getBasicEventData()}),e("div",{class:"filters-wrapper"},e("div",{class:"filters"},a.filters.map((i=>e("search-filters",{filter:i,basicEventData:this.getBasicEventData()})))))),e("div",{id:"results-block",class:"products-wrapper"},e("div",{class:{"nothing-found":true,hidden:a.results.length>0}},e("vviinn-empty-results",null),e("vviinn-onboarding",null)),e("div",{class:{hidden:a.results.length<=0,products:true}},a.results.map(((i,t)=>{var s;return e("vviinn-product-card",{key:i.productId,hidden:true,productTitle:i.title,productId:i.productId,brand:i.brand,deeplink:i.deeplink,price:i.price.actual,salePrice:i.price.sale,imageWidth:160,image:(s=i.image.thumbnail)!==null&&s!==void 0?s:i.image.original,part:"product-card",campaignTypeId:"VPS",index:t,widgetElementId:this.id,buttonElementId:this.buttonElementId})}))))))))}get el(){return r(this)}static get watchers(){return{active:["activeWatcher"],buttonPressed:["buttonPressedWatcher"]}}};_.style=y;export{_ as vviinn_vps_widget};
2
+ //# sourceMappingURL=p-14373da7.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["vviinnVpsWidgetCss","filterInt","value","test","Number","NaN","notEmptyString","s","isEmpty","notNan","n","isNaN","VviinnVpsWidget","this","imageSource","setTrackingDeactivated","result","status","trackingDeactivated","getBasicEventData","widgetType","campaignTypeId","campaignTypeName","campaignTypeNames","widgetId","_a","buttonElementId","id","componentDidLoad","slots","el","querySelectorAll","globalSlotsChanged","emit","Array","from","activeWatcher","overflow","document","body","style","trackOpenEvent","buttonPressedWatcher","pressed","mode","active","vviinnWidgetOpen","trackProductView","detail","productRank","productId","productName","rest","__rest","productViewEvent","createProductViewVpsEvent","Object","assign","session_id","uiSessionId","rank","product","trackingApi","trackEvent","then","async","productClickEvent","createProductClickVpsEvent","imageSearchState","results","find","r","deeplink","window","location","href","trachSearchAreaChanges","searchEvent","createSearchEvent","source","search_area","trackDetectedObject","trackFilter","createFilterEvent","kind","action","connectedCallback","state","apiPath","currencySign","locale","token","campaignId","pipe","O.fromNullable","O.chain","O.fromPredicate","O.map","uuidv4","createTrackingApi","componentWillLoad","slotChangeListener","vviinnWidgetLoad","widgetOpenEvent","createWidgetVpsEvent","handleImageSelection","slidePosition","root","shadowRoot","querySelector","overlay","modal","modalBody","scrollTop","trackInitialSearch","resetState","resetScroll","image","O.none","imageUrl","imageBounds","searchArea","filters","detectedObjects","activeIonLink","undefined","rectangleSearchForm","loading","haveErrors","wrongImageFormat","serverError","elementId","behavior","element","getElementById","scroll","top","left","handleModalClose","elementsToReset","forEach","name","widgetCloseEvent","render","h","Host","showingInButton","SlotSkeleton","class","bind","onVviinnWidgetClose","hideBackButton","exportparts","showBullets","position","error","hidden","handler","onVviinnImageUpload","onVviinnNoResult","resetVpsButton","basicEventData","part","startUpload","buttonPressed","slot","xmlns","width","height","fill","d","map","filter","length","products","p","i","key","productTitle","title","brand","price","actual","salePrice","sale","imageWidth","thumbnail","original","index","widgetElementId"],"sources":["./src/components/vviinn-vps-widget/vviinn-vps-widget.css?tag=vviinn-vps-widget&encapsulation=shadow","./src/components/vviinn-vps-widget/vviinn-vps-widget.tsx"],"sourcesContent":["@import \"../../variables.css\";\n\n:host {\n /**\n * @prop --color-primary: set color of search button and bullets in onboarding block\n * @prop --color-primary-hover: set color of search button and bullets in onboarding block on mouse hover\n * @prop --color-icons: set fill color of svg icons in onboarding block \n */\n\n display: block;\n}\n\n.hidden {\n visibility: hidden;\n height: 1px;\n}\n\nvviinn-overlayed-modal.first-screen::part(title),\nvviinn-overlayed-modal.first-screen::part(secondary-action) {\n visibility: hidden;\n}\n\n.start-page {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n min-height: 580px;\n}\n\n.start-page_block {\n align-content: start;\n border-right: 1px solid #f4f4f4;\n display: grid;\n padding: 48px;\n}\n\n.start-page_block.error {\n align-content: center;\n}\n\n#onboarding-block {\n border-right: unset;\n box-sizing: border-box;\n grid-gap: 24px;\n overflow-y: auto;\n position: relative;\n width: 100%;\n}\n\nvviinn-teaser {\n margin-bottom: 32px;\n margin-top: -24px;\n}\n\nvviinn-image-selector {\n align-items: center;\n background: var(--color-primary, var(--color-primary-system));\n border-color: var(--color-primary, var(--color-primary-system));\n border-radius: 2px;\n color: white;\n display: grid;\n font-size: 16px;\n font-weight: 600;\n height: 56px;\n justify-items: center;\n margin-bottom: 16px;\n transition: background 0.1s ease-in-out;\n}\n\nvviinn-image-selector:hover {\n background: var(--color-primary-hover, var(--color-primary-hover-system));\n border-color: var(--color-primary-hover, var(--color-primary-hover-system));\n}\n\nvviinn-image-selector:active {\n border-color: black;\n}\n\n.upload-button-content {\n display: grid;\n align-items: center;\n justify-items: start;\n justify-content: center;\n grid-template-columns: max-content auto;\n grid-gap: 16px;\n}\n\n.results-page {\n display: grid;\n grid-template-columns: 336px auto;\n box-sizing: border-box;\n}\n\n.results-page > * {\n padding: 24px;\n box-sizing: border-box;\n}\n\n.products {\n align-content: center;\n align-items: start;\n box-sizing: border-box;\n display: grid;\n grid-gap: 32px 16px;\n grid-template-columns: repeat(auto-fill, minmax(152px, 1fr));\n justify-items: center;\n padding: 24px;\n padding-right: 0;\n position: absolute;\n width: calc(100% - 16px);\n}\n\n.products.hidden {\n display: none;\n}\n\nvviinn-empty-results {\n width: 280px;\n align-self: center;\n justify-self: center;\n}\n\n.products-wrapper {\n display: grid;\n overflow-y: auto;\n overflow-x: hidden;\n padding: unset;\n position: relative;\n width: 100%;\n}\n\n.image-wrapper {\n border-right: 1px solid #f4f4f4;\n display: grid;\n grid-template-rows: min-content 170px;\n grid-gap: 24px;\n min-width: 100%;\n}\n\n.onboarding-wrapper {\n position: absolute;\n width: 100%;\n padding: 48px;\n box-sizing: border-box;\n display: grid;\n grid-gap: 64px;\n padding-bottom: 24px;\n}\n\nvviinn-product-card {\n gap: 0;\n width: 100%;\n}\n\nvviinn-product-card::part(image) {\n border: 1px solid #eaeaea;\n margin-bottom: 8px;\n}\n\nvviinn-product-card::part(price-container),\nvviinn-product-card::part(deeplink),\nvviinn-product-card::part(title) {\n align-self: start;\n}\n\nsearch-filters span {\n display: none;\n}\n\nsearch-filters::part(filter) {\n background: #f4f4f4;\n border-radius: 4px;\n border: 1px solid #f4f4f4;\n box-sizing: border-box;\n color: #161616;\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n}\n\nsearch-filters::part(show-more-filters) {\n border: 1px solid #f4f4f4;\n border-radius: 4px;\n box-sizing: border-box;\n color: #161616;\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n padding: 6px 16px;\n}\n\nsearch-filters::part(show-more-filters):hover {\n background: #eaeaea;\n}\n\nsearch-filters::part(filter):hover {\n background: #eaeaea;\n}\n\nsearch-filters::part(filter):focus {\n outline: none;\n border: 1px solid var(--color-primary, var(--color-primary-system));\n}\n\nsearch-filters::part(filter active) {\n background: rgba(15, 98, 254, 0.15);\n color: var(--color-primary, var(--color-primary-system));\n}\n\n.filters-wrapper {\n overflow: auto;\n}\n\n.results-page:not(.active) {\n display: none;\n}\n\n.nothing-found {\n display: grid;\n grid-gap: 64px;\n justify-self: center;\n padding-top: 64px;\n padding-bottom: 16px;\n position: absolute;\n width: 60%;\n}\n\n@media (max-width: 768px) {\n .start-page_block {\n padding: 24px;\n }\n\n .onboarding-wrapper {\n padding: 24px;\n }\n}\n\n@media (max-width: 640px) {\n .start-page {\n grid-template-rows: min-content;\n grid-template-columns: unset;\n grid-gap: 48px;\n padding: 24px 0 48px 0;\n }\n}\n\n@media (max-width: 640px) and (min-width: 415px) {\n .onboarding-wrapper {\n position: unset;\n }\n\n #onboarding-block {\n overflow: unset;\n }\n\n .start-page.active {\n height: 1px;\n overflow: auto;\n }\n}\n\n@media (max-width: 415px) {\n .results-page > * {\n box-sizing: border-box;\n padding: 24px;\n }\n\n vviinn-slide {\n padding-bottom: 48px;\n }\n\n .start-page_block:last-of-type {\n border-right: unset;\n overflow-y: unset;\n position: static;\n box-sizing: border-box;\n width: unset;\n }\n\n .start-page_block {\n padding: 0 24px;\n }\n\n vviinn-teaser {\n margin-top: 24px;\n }\n\n .onboarding-wrapper {\n position: static;\n width: unset;\n padding: unset;\n box-sizing: border-box;\n }\n\n .results-page {\n grid-template-columns: unset;\n grid-template-rows: min-content auto;\n }\n\n .image {\n margin-bottom: 8px;\n }\n\n .image-wrapper {\n grid-template-rows: min-content auto;\n width: 100%;\n }\n\n .products-wrapper {\n align-content: start;\n position: static;\n overflow-y: unset;\n width: 100%;\n padding-top: 0;\n }\n\n .products {\n position: static;\n padding: 0;\n width: unset;\n grid-gap: 32px 16px;\n justify-content: center;\n }\n\n .nothing-found {\n position: static;\n grid-gap: 64px;\n padding: unset;\n align-content: start;\n width: unset;\n }\n}\n\n@media (max-width: 320px) {\n .products {\n grid-template-columns: unset;\n }\n}\n\nvviinn-wrong-format,\nvviinn-server-error {\n width: 280px;\n align-self: center;\n justify-self: center;\n}\n","import {\n Component,\n Host,\n h,\n State,\n Prop,\n Element,\n Watch,\n Listen,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\nimport { state } from \"../../store/store\";\nimport { imageSearchState } from \"../../store/imageSearch.store\";\nimport * as O from \"fp-ts/lib/Option\";\nimport { isEmpty } from \"fp-ts/string\";\nimport { slotChangeListener } from \"../customized-slots\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { createTrackingApi } from \"../../openApi\";\nimport {\n DefaultApi,\n EventConfirmation,\n ProductClickEvent,\n ProductViewEvent,\n SearchImageSource,\n WidgetEvent,\n} from \"vviinn-tracking-client-ts\";\nimport {\n createFilterEvent,\n createProductClickVpsEvent,\n createProductViewVpsEvent,\n createSearchEvent,\n createWidgetVpsEvent,\n} from \"../../tracking\";\nimport {\n ProductCardEvent,\n BasicEventData,\n SelectFilterEventData,\n} from \"../../recommendation/events\";\nimport { pipe } from \"fp-ts/lib/function\";\nimport { SlotSkeleton } from \"../customized-slots\";\nimport { campaignTypeNames } from \"../../campaign/Campaign\";\n\nconst filterInt = (value: string) =>\n /^[-+]?(\\d+|Infinity)$/.test(value) ? Number(value) : NaN;\n\nconst notEmptyString = (s: string) => !isEmpty(s);\nconst notNan = (n: number): boolean => !isNaN(n);\n\n/**\n * @prop --color-primary: color used for action button, slider bullets and selected detected object;\n *\n * @part close-button - close button on modal header.\n * @part secondary-action - back button on modal header.\n * @part title - modal window title.\n *\n * @part select-image_button\n *\n * @part product-card - product card.\n * @part brand - product card brand.\n * @part currency - currency sign. Renders after price-amount inside product card.\n * @part deeplink - anchor element for title. Rendered only if \"deeplink\" property filled.\n * @part image - product image inside product card.\n * @part image-link - anchor element for image. Rendered only if \"deeplink\" property filled.\n * @part price-amount-sale - numeric part of price inside product card.\n * @part price-amount-outdated - numeric part of price inside product card.\n * @part price-amount-regular - numeric part of price inside product card.\n * @part price-container - block contains all prices inside product card.\n * @part price-outdated - renders inside price-container when \"sale-price\" property filled. Contains regular price.\n * @part price-regular - renders inside price-container when \"sale-price\" property is empty.\n * @part price-sale - renders inside price-container when \"sale-price\" property filled. Contains sale price.\n * @part price-prefix - renders before price-amount. Can be set with \"price-prefix\" property or inherited from parent component.\n * @part title - product title\n * @part example-images - example images block\n\n * @slot vviinn-onboarding-title - Title of onboarding section\n * @slot onboarding-card-1-icon - Icon (or other graphics) on first onboarding slide\n * @slot onboarding-card-1-text - Text content of first onboarding slide\n * @slot onboarding-card-2-icon - Icon (or other graphics) on second onboarding slide\n * @slot onboarding-card-2-text - Text content of second onboarding slide\n * @slot onboarding-card-3-icon - Icon (or other graphics) on third onboarding slide\n * @slot onboarding-card-3-text - Text content of third onboarding slide\n * @slot vviinn-example-images-title - Header of example images block\n * @slot vviinn-example-images-1 - First image in example images block\n * @slot vviinn-example-images-2 - Second image in example images block\n * @slot vviinn-example-images-3 - Third image in example images block\n * @slot vviinn-example-images-4 - Fourth image in example images block\n * @slot vviinn-teaser-text - Text on widget's main screen\n * @slot vviinn-image-upload-button-text - Title of upload button\n * @slot vviinn-privacy-badge-text - Text content of privacy notification block\n * @slot vviinn-image-search-modal-title - Image search title\n *\n */\n@Component({\n tag: \"vviinn-vps-widget\",\n styleUrl: \"vviinn-vps-widget.css\",\n shadow: true,\n})\nexport class VviinnVpsWidget {\n @Element() el: HTMLElement;\n\n /** vviinn customer token */\n @Prop() token: string | undefined;\n /** @internal */\n @Prop() apiPath: string = \"https://api.vviinn.com\";\n /** When true modal window with widget will be shown */\n @Prop({ mutable: true }) active: boolean = false;\n /** Currency sign will shown after price */\n @Prop() currencySign: string = \"€\";\n /** Locale for currency formatting */\n @Prop() locale: string = \"de-DE\";\n /** Campaign using for visual search */\n @Prop() campaignId?: string;\n /** Set true when showing the widget in button */\n @Prop() showingInButton?: boolean = false;\n /** Element Id, passed from vps-button */\n /** @internal */\n @Prop() buttonElementId?: string;\n /** @internal */\n @Prop() buttonPressed?: boolean;\n /** @internal */\n @Prop() mode: \"modal\" | \"upload\" = \"modal\";\n /** @internal */\n @Prop() resetVpsButton: () => void;\n\n @State() slidePosition: number = 0;\n @State() width: number = 0;\n @State() wrongImageFormat: boolean = false;\n @State() trackingDeactivated: boolean = false;\n\n /** @internal */\n @Event({ bubbles: true, composed: true })\n globalSlotsChanged: EventEmitter<any>;\n\n @Event({ bubbles: true })\n vviinnWidgetLoad: EventEmitter<BasicEventData>;\n @Event({ bubbles: true })\n vviinnWidgetOpen: EventEmitter<BasicEventData>;\n\n // List to show in the Storybook:\n @Event() vviinnWidgetClose: EventEmitter;\n @Event() vviinnProductClick: EventEmitter;\n @Event() vviinnProductView: EventEmitter;\n @Event() vviinnProductLoad: EventEmitter;\n @Event() vviinnImageUpload: EventEmitter;\n @Event() vviinnImageCrop: EventEmitter;\n @Event() vviinnSelectObject: EventEmitter;\n @Event() vviinnSelectFilter: EventEmitter;\n @Event() vviinnNoResult: EventEmitter;\n\n private overflow: string;\n private uiSessionId: string;\n private trackingApi: DefaultApi;\n private imageSource: SearchImageSource | null = null;\n private id?: string;\n\n componentDidLoad() {\n const slots = this.el.querySelectorAll(\"[slot]\");\n this.globalSlotsChanged.emit(Array.from(slots));\n }\n\n setTrackingDeactivated = (result: EventConfirmation) => {\n if (result.status === \"rejected\") {\n this.trackingDeactivated = true;\n }\n };\n\n getBasicEventData = (): BasicEventData => {\n return {\n widgetType: \"VPS\",\n campaignTypeId: \"VPS\",\n campaignTypeName: campaignTypeNames[\"VPS\"],\n widgetId: this.buttonElementId ?? this.id,\n };\n };\n\n @Watch(\"active\")\n activeWatcher(value: boolean) {\n if (value) {\n this.overflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n this.trackOpenEvent();\n } else {\n document.body.style.overflow = this.overflow;\n }\n }\n\n @Watch(\"buttonPressed\")\n buttonPressedWatcher(pressed: boolean) {\n if (!pressed) return;\n if (this.mode === \"modal\") {\n this.active = true;\n this.vviinnWidgetOpen.emit(this.getBasicEventData());\n }\n }\n\n @Listen(\"vviinnProductView\")\n trackProductView({ detail }: ProductCardEvent) {\n if (this.trackingDeactivated) return;\n\n const {\n productRank,\n productId,\n productName,\n widgetType,\n widgetId,\n campaignTypeId,\n campaignTypeName,\n ...rest\n } = detail;\n\n const productViewEvent: ProductViewEvent = createProductViewVpsEvent({\n session_id: this.uiSessionId,\n rank: productRank,\n product: productId,\n ...rest,\n });\n\n this.trackingApi\n .trackEvent(productViewEvent)\n .then(this.setTrackingDeactivated);\n }\n\n @Listen(\"vviinnProductClick\")\n async trackProductClick({ detail }: ProductCardEvent) {\n const {\n productRank,\n productId,\n productName,\n widgetType,\n widgetId,\n campaignTypeId,\n campaignTypeName,\n ...rest\n } = detail;\n\n const productClickEvent: ProductClickEvent = createProductClickVpsEvent({\n session_id: this.uiSessionId,\n rank: productRank,\n product: productId,\n ...rest,\n });\n\n if (!this.trackingDeactivated) {\n await this.trackingApi\n .trackEvent(this.trackingDeactivated ? null : productClickEvent)\n .then(this.setTrackingDeactivated);\n }\n\n const product = imageSearchState.results.find(\n (r) => r.productId === detail.productId\n );\n if (!product || !product.deeplink) return;\n window.location.href = product.deeplink;\n }\n\n @Listen(\"vviinnImageCrop\")\n trachSearchAreaChanges() {\n if (this.trackingDeactivated) return;\n\n const searchEvent: WidgetEvent = createSearchEvent({\n session_id: this.uiSessionId,\n source: this.imageSource,\n search_area: \"manual-selection\",\n });\n this.trackingApi.trackEvent(searchEvent).then(this.setTrackingDeactivated);\n }\n\n @Listen(\"vviinnSelectObject\")\n trackDetectedObject() {\n if (this.trackingDeactivated) return;\n\n const searchEvent: WidgetEvent = createSearchEvent({\n session_id: this.uiSessionId,\n source: this.imageSource,\n search_area: \"attention-point\",\n });\n this.trackingApi.trackEvent(searchEvent).then(this.setTrackingDeactivated);\n }\n\n @Listen(\"vviinnSelectFilter\")\n trackFilter({ detail }: CustomEvent<SelectFilterEventData>) {\n if (this.trackingDeactivated) return;\n\n const searchEvent: WidgetEvent = createFilterEvent({\n session_id: this.uiSessionId,\n source: this.imageSource,\n kind: \"category\",\n action: detail.action,\n });\n this.trackingApi.trackEvent(searchEvent).then(this.setTrackingDeactivated);\n }\n\n connectedCallback() {\n state.apiPath = this.apiPath;\n state.currencySign = this.currencySign;\n state.locale = this.locale;\n imageSearchState.token = this.token;\n imageSearchState.campaignId = pipe(\n this.campaignId,\n O.fromNullable,\n O.chain(O.fromPredicate(notEmptyString)),\n O.map(filterInt),\n O.chain(O.fromPredicate(notNan)),\n O.map((s) => `${s}`)\n );\n\n this.uiSessionId = uuidv4();\n this.trackingApi = createTrackingApi(this.apiPath, this.token);\n this.id = this.el.id;\n }\n\n componentWillLoad() {\n slotChangeListener(this, this.el);\n this.vviinnWidgetLoad.emit(this.getBasicEventData());\n }\n\n private trackOpenEvent() {\n if (this.trackingDeactivated) return;\n\n const widgetOpenEvent: WidgetEvent = createWidgetVpsEvent({\n action: \"open\",\n session_id: this.uiSessionId,\n });\n this.trackingApi\n .trackEvent(widgetOpenEvent)\n .then(this.setTrackingDeactivated);\n }\n\n private handleImageSelection(source: SearchImageSource) {\n this.imageSource = source;\n this.slidePosition = 1;\n const root = this.el.shadowRoot.querySelector(\"vviinn-overlayed-modal\");\n const overlay = root.shadowRoot.querySelector(\"vviinn-overlay\");\n const modal = overlay.querySelector(\"vviinn-modal\");\n const modalBody = modal.shadowRoot.querySelector(\".body\");\n modalBody.scrollTop = 0;\n\n this.trackInitialSearch();\n }\n\n private trackInitialSearch() {\n if (this.trackingDeactivated) return;\n\n const searchEvent: WidgetEvent = createSearchEvent({\n session_id: this.uiSessionId,\n source: this.imageSource,\n search_area: \"full\",\n });\n this.trackingApi.trackEvent(searchEvent).then(this.setTrackingDeactivated);\n }\n\n private resetState() {\n this.resetScroll(\"onboarding-block\");\n\n this.slidePosition = 0;\n imageSearchState.image = O.none;\n imageSearchState.imageUrl = O.none;\n imageSearchState.imageBounds = O.none;\n imageSearchState.searchArea = O.none;\n imageSearchState.results = [];\n imageSearchState.filters = [];\n imageSearchState.detectedObjects = [];\n imageSearchState.activeIonLink = undefined;\n imageSearchState.rectangleSearchForm = undefined;\n imageSearchState.loading = false;\n this.resetScroll(\"results-block\");\n }\n\n private haveErrors(): boolean {\n return this.wrongImageFormat || imageSearchState.serverError;\n }\n\n private resetScroll(elementId: string, behavior: ScrollBehavior = \"auto\") {\n const element: HTMLElement = this.el.shadowRoot.getElementById(elementId);\n element.scroll({ top: 0, left: 0, behavior });\n }\n\n private handleModalClose() {\n this.active = false;\n this.resetState();\n\n const elementsToReset = [\"onboarding-block\", \"results-block\"];\n elementsToReset.forEach((name) => this.resetScroll(name));\n\n if (this.trackingDeactivated) return;\n\n const widgetCloseEvent: WidgetEvent = createWidgetVpsEvent({\n action: \"close\",\n session_id: this.uiSessionId,\n });\n this.trackingApi\n .trackEvent(widgetCloseEvent)\n .then(this.setTrackingDeactivated);\n }\n\n render() {\n return (\n <Host>\n {!this.showingInButton && <SlotSkeleton />}\n\n <vviinn-overlayed-modal\n class={{ \"first-screen\": this.slidePosition === 0 }}\n active={this.active}\n resetState={this.resetState.bind(this)}\n onVviinnWidgetClose={() => this.handleModalClose()}\n buttonElementId={this.buttonElementId ?? this.id}\n hideBackButton={this.mode === \"upload\"}\n exportparts=\"secondary-action, title, close-button, example-images\"\n >\n <vviinn-slider showBullets={false} position={this.slidePosition}>\n <vviinn-slide class={{ \"start-page\": true }}>\n <div\n class={{\n error: this.haveErrors(),\n \"start-page_block\": true,\n }}\n >\n <vviinn-wrong-format\n class={{ hidden: !this.wrongImageFormat }}\n handler={() => (this.wrongImageFormat = false)}\n />\n <vviinn-server-error\n class={{ hidden: !imageSearchState.serverError }}\n handler={() => (imageSearchState.serverError = false)}\n />\n <vviinn-teaser class={{ hidden: this.haveErrors() }} />\n <vviinn-image-selector\n class={{ hidden: this.haveErrors() }}\n onVviinnImageUpload={() => {\n this.active = true;\n this.handleImageSelection(\"upload\");\n if (this.mode === \"upload\") {\n this.vviinnWidgetOpen.emit(this.getBasicEventData());\n }\n }}\n onVviinnNoResult={() => (this.wrongImageFormat = true)}\n resetVpsButton={this.resetVpsButton}\n basicEventData={this.getBasicEventData()}\n part=\"select-image_button\"\n startUpload={\n this.buttonPressed &&\n this.showingInButton &&\n this.mode === \"upload\"\n }\n >\n <span slot=\"upload-button-text\" class=\"upload-button-content\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"29\"\n height=\"28\"\n fill=\"none\"\n >\n <defs />\n <path\n fill=\"#fff\"\n fill-rule=\"evenodd\"\n d=\"M10.271 3.89A.875.875 0 0111 3.5h7c.293 0 .566.146.728.39l1.49 2.235h3.033a2.625 2.625 0 012.625 2.625V21a2.625 2.625 0 01-2.625 2.625H5.75A2.625 2.625 0 013.125 21V8.75A2.625 2.625 0 015.75 6.125h3.031l1.49-2.235zm1.197 1.36l-1.49 2.235a.875.875 0 01-.729.39H5.75a.875.875 0 00-.875.875V21a.875.875 0 00.875.875h17.5a.875.875 0 00.875-.875V8.75a.875.875 0 00-.875-.875h-3.5a.875.875 0 01-.729-.39l-1.49-2.235h-6.063z\"\n clip-rule=\"evenodd\"\n />\n <path\n fill=\"#fff\"\n fill-rule=\"evenodd\"\n d=\"M14.5 11.375a3.062 3.062 0 100 6.125 3.062 3.062 0 000-6.125zm-4.813 3.063a4.812 4.812 0 119.625 0 4.812 4.812 0 01-9.625 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n <slot name=\"vviinn-image-upload-button-text\">\n <span>Kamera oder Bild auswählen</span>\n </slot>\n </span>\n </vviinn-image-selector>\n <vviinn-privacy-badge class={{ hidden: this.haveErrors() }} />\n </div>\n <div id=\"onboarding-block\" class=\"start-page_block\">\n <div class=\"onboarding-wrapper\">\n <vviinn-onboarding />\n <vviinn-example-images\n part=\"example-images\"\n onVviinnImageUpload={() =>\n this.handleImageSelection(\"example\")\n }\n onVviinnNoResult={() =>\n this.resetScroll(\"onboarding-block\", \"smooth\")\n }\n basicEventData={this.getBasicEventData()}\n />\n </div>\n </div>\n </vviinn-slide>\n <vviinn-slide\n class={{ \"results-page\": true, active: this.slidePosition == 1 }}\n >\n <div class=\"image-wrapper\">\n <vviinn-image-view basicEventData={this.getBasicEventData()} />\n <div class=\"filters-wrapper\">\n <div class=\"filters\">\n {imageSearchState.filters.map((filter) => (\n <search-filters\n filter={filter}\n basicEventData={this.getBasicEventData()}\n />\n ))}\n </div>\n </div>\n </div>\n <div id=\"results-block\" class=\"products-wrapper\">\n <div\n class={{\n \"nothing-found\": true,\n hidden: imageSearchState.results.length > 0,\n }}\n >\n <vviinn-empty-results />\n <vviinn-onboarding />\n </div>\n <div\n class={{\n hidden: imageSearchState.results.length <= 0,\n products: true,\n }}\n >\n {imageSearchState.results.map((p, i) => (\n <vviinn-product-card\n key={p.productId}\n hidden={true}\n productTitle={p.title}\n productId={p.productId}\n brand={p.brand}\n deeplink={p.deeplink}\n price={p.price.actual}\n salePrice={p.price.sale}\n imageWidth={160}\n image={p.image.thumbnail ?? p.image.original}\n part=\"product-card\"\n campaignTypeId=\"VPS\"\n index={i}\n widgetElementId={this.id}\n buttonElementId={this.buttonElementId}\n />\n ))}\n </div>\n </div>\n </vviinn-slide>\n </vviinn-slider>\n </vviinn-overlayed-modal>\n </Host>\n );\n }\n}\n"],"mappings":"qTAAA,MAAMA,EAAqB,gsJ,8WC2C3B,MAAMC,EAAaC,GACjB,wBAAwBC,KAAKD,GAASE,OAAOF,GAASG,IAExD,MAAMC,EAAkBC,IAAeC,EAAQD,GAC/C,MAAME,EAAUC,IAAwBC,MAAMD,G,MAmDjCE,EAAe,M,+oBAuDlBC,KAAAC,YAAwC,KAQhDD,KAAAE,uBAA0BC,IACxB,GAAIA,EAAOC,SAAW,WAAY,CAChCJ,KAAKK,oBAAsB,I,GAI/BL,KAAAM,kBAAoB,K,MAClB,MAAO,CACLC,WAAY,MACZC,eAAgB,MAChBC,iBAAkBC,EAAkB,OACpCC,UAAUC,EAAAZ,KAAKa,mBAAe,MAAAD,SAAA,EAAAA,EAAIZ,KAAKc,GACxC,E,kCArEuB,yB,YAEiB,M,kBAEZ,I,YAEN,Q,+CAIW,M,sEAOD,Q,iDAIF,E,WACR,E,sBACY,M,yBACG,K,CA4BxCC,mBACE,MAAMC,EAAQhB,KAAKiB,GAAGC,iBAAiB,UACvClB,KAAKmB,mBAAmBC,KAAKC,MAAMC,KAAKN,G,CAmB1CO,cAAclC,GACZ,GAAIA,EAAO,CACTW,KAAKwB,SAAWC,SAASC,KAAKC,MAAMH,SACpCC,SAASC,KAAKC,MAAMH,SAAW,SAC/BxB,KAAK4B,gB,KACA,CACLH,SAASC,KAAKC,MAAMH,SAAWxB,KAAKwB,Q,EAKxCK,qBAAqBC,GACnB,IAAKA,EAAS,OACd,GAAI9B,KAAK+B,OAAS,QAAS,CACzB/B,KAAKgC,OAAS,KACdhC,KAAKiC,iBAAiBb,KAAKpB,KAAKM,oB,EAKpC4B,kBAAiBC,OAAEA,IACjB,GAAInC,KAAKK,oBAAqB,OAE9B,MAAM+B,YACJA,EAAWC,UACXA,EAASC,YACTA,EAAW/B,WACXA,EAAUI,SACVA,EAAQH,eACRA,EAAcC,iBACdA,GAEE0B,EADCI,EAAIC,EACLL,EATE,uGAWN,MAAMM,EAAqCC,EAAyBC,OAAAC,OAAA,CAClEC,WAAY7C,KAAK8C,YACjBC,KAAMX,EACNY,QAASX,GACNE,IAGLvC,KAAKiD,YACFC,WAAWT,GACXU,KAAKnD,KAAKE,uB,CAIfkD,yBAAwBjB,OAAEA,IACxB,MAAMC,YACJA,EAAWC,UACXA,EAASC,YACTA,EAAW/B,WACXA,EAAUI,SACVA,EAAQH,eACRA,EAAcC,iBACdA,GAEE0B,EADCI,EAAIC,EACLL,EATE,uGAWN,MAAMkB,EAAuCC,EAA0BX,OAAAC,OAAA,CACrEC,WAAY7C,KAAK8C,YACjBC,KAAMX,EACNY,QAASX,GACNE,IAGL,IAAKvC,KAAKK,oBAAqB,OACvBL,KAAKiD,YACRC,WAAWlD,KAAKK,oBAAsB,KAAOgD,GAC7CF,KAAKnD,KAAKE,uB,CAGf,MAAM8C,EAAUO,EAAiBC,QAAQC,MACtCC,GAAMA,EAAErB,YAAcF,EAAOE,YAEhC,IAAKW,IAAYA,EAAQW,SAAU,OACnCC,OAAOC,SAASC,KAAOd,EAAQW,Q,CAIjCI,yBACE,GAAI/D,KAAKK,oBAAqB,OAE9B,MAAM2D,EAA2BC,EAAkB,CACjDpB,WAAY7C,KAAK8C,YACjBoB,OAAQlE,KAAKC,YACbkE,YAAa,qBAEfnE,KAAKiD,YAAYC,WAAWc,GAAab,KAAKnD,KAAKE,uB,CAIrDkE,sBACE,GAAIpE,KAAKK,oBAAqB,OAE9B,MAAM2D,EAA2BC,EAAkB,CACjDpB,WAAY7C,KAAK8C,YACjBoB,OAAQlE,KAAKC,YACbkE,YAAa,oBAEfnE,KAAKiD,YAAYC,WAAWc,GAAab,KAAKnD,KAAKE,uB,CAIrDmE,aAAYlC,OAAEA,IACZ,GAAInC,KAAKK,oBAAqB,OAE9B,MAAM2D,EAA2BM,EAAkB,CACjDzB,WAAY7C,KAAK8C,YACjBoB,OAAQlE,KAAKC,YACbsE,KAAM,WACNC,OAAQrC,EAAOqC,SAEjBxE,KAAKiD,YAAYC,WAAWc,GAAab,KAAKnD,KAAKE,uB,CAGrDuE,oBACEC,EAAMC,QAAU3E,KAAK2E,QACrBD,EAAME,aAAe5E,KAAK4E,aAC1BF,EAAMG,OAAS7E,KAAK6E,OACpBtB,EAAiBuB,MAAQ9E,KAAK8E,MAC9BvB,EAAiBwB,WAAaC,OAC5BhF,KAAK+E,WACLE,eACAC,QAAQC,gBAAgB1F,IACxB2F,MAAMhG,GACN8F,QAAQC,gBAAgBvF,IACxBwF,OAAO1F,GAAM,GAAGA,OAGlBM,KAAK8C,YAAcuC,IACnBrF,KAAKiD,YAAcqC,EAAkBtF,KAAK2E,QAAS3E,KAAK8E,OACxD9E,KAAKc,GAAKd,KAAKiB,GAAGH,E,CAGpByE,oBACEC,EAAmBxF,KAAMA,KAAKiB,IAC9BjB,KAAKyF,iBAAiBrE,KAAKpB,KAAKM,oB,CAG1BsB,iBACN,GAAI5B,KAAKK,oBAAqB,OAE9B,MAAMqF,EAA+BC,EAAqB,CACxDnB,OAAQ,OACR3B,WAAY7C,KAAK8C,cAEnB9C,KAAKiD,YACFC,WAAWwC,GACXvC,KAAKnD,KAAKE,uB,CAGP0F,qBAAqB1B,GAC3BlE,KAAKC,YAAciE,EACnBlE,KAAK6F,cAAgB,EACrB,MAAMC,EAAO9F,KAAKiB,GAAG8E,WAAWC,cAAc,0BAC9C,MAAMC,EAAUH,EAAKC,WAAWC,cAAc,kBAC9C,MAAME,EAAQD,EAAQD,cAAc,gBACpC,MAAMG,EAAYD,EAAMH,WAAWC,cAAc,SACjDG,EAAUC,UAAY,EAEtBpG,KAAKqG,oB,CAGCA,qBACN,GAAIrG,KAAKK,oBAAqB,OAE9B,MAAM2D,EAA2BC,EAAkB,CACjDpB,WAAY7C,KAAK8C,YACjBoB,OAAQlE,KAAKC,YACbkE,YAAa,SAEfnE,KAAKiD,YAAYC,WAAWc,GAAab,KAAKnD,KAAKE,uB,CAG7CoG,aACNtG,KAAKuG,YAAY,oBAEjBvG,KAAK6F,cAAgB,EACrBtC,EAAiBiD,MAAQC,OACzBlD,EAAiBmD,SAAWD,OAC5BlD,EAAiBoD,YAAcF,OAC/BlD,EAAiBqD,WAAaH,OAC9BlD,EAAiBC,QAAU,GAC3BD,EAAiBsD,QAAU,GAC3BtD,EAAiBuD,gBAAkB,GACnCvD,EAAiBwD,cAAgBC,UACjCzD,EAAiB0D,oBAAsBD,UACvCzD,EAAiB2D,QAAU,MAC3BlH,KAAKuG,YAAY,gB,CAGXY,aACN,OAAOnH,KAAKoH,kBAAoB7D,EAAiB8D,W,CAG3Cd,YAAYe,EAAmBC,EAA2B,QAChE,MAAMC,EAAuBxH,KAAKiB,GAAG8E,WAAW0B,eAAeH,GAC/DE,EAAQE,OAAO,CAAEC,IAAK,EAAGC,KAAM,EAAGL,Y,CAG5BM,mBACN7H,KAAKgC,OAAS,MACdhC,KAAKsG,aAEL,MAAMwB,EAAkB,CAAC,mBAAoB,iBAC7CA,EAAgBC,SAASC,GAAShI,KAAKuG,YAAYyB,KAEnD,GAAIhI,KAAKK,oBAAqB,OAE9B,MAAM4H,EAAgCtC,EAAqB,CACzDnB,OAAQ,QACR3B,WAAY7C,KAAK8C,cAEnB9C,KAAKiD,YACFC,WAAW+E,GACX9E,KAAKnD,KAAKE,uB,CAGfgI,S,MACE,OACEC,EAACC,EAAI,MACDpI,KAAKqI,iBAAmBF,EAACG,EAAY,MAEvCH,EAAA,0BACEI,MAAO,CAAE,eAAgBvI,KAAK6F,gBAAkB,GAChD7D,OAAQhC,KAAKgC,OACbsE,WAAYtG,KAAKsG,WAAWkC,KAAKxI,MACjCyI,oBAAqB,IAAMzI,KAAK6H,mBAChChH,iBAAiBD,EAAAZ,KAAKa,mBAAe,MAAAD,SAAA,EAAAA,EAAIZ,KAAKc,GAC9C4H,eAAgB1I,KAAK+B,OAAS,SAC9B4G,YAAY,yDAEZR,EAAA,iBAAeS,YAAa,MAAOC,SAAU7I,KAAK6F,eAChDsC,EAAA,gBAAcI,MAAO,CAAE,aAAc,OACnCJ,EAAA,OACEI,MAAO,CACLO,MAAO9I,KAAKmH,aACZ,mBAAoB,OAGtBgB,EAAA,uBACEI,MAAO,CAAEQ,QAAS/I,KAAKoH,kBACvB4B,QAAS,IAAOhJ,KAAKoH,iBAAmB,QAE1Ce,EAAA,uBACEI,MAAO,CAAEQ,QAASxF,EAAiB8D,aACnC2B,QAAS,IAAOzF,EAAiB8D,YAAc,QAEjDc,EAAA,iBAAeI,MAAO,CAAEQ,OAAQ/I,KAAKmH,gBACrCgB,EAAA,yBACEI,MAAO,CAAEQ,OAAQ/I,KAAKmH,cACtB8B,oBAAqB,KACnBjJ,KAAKgC,OAAS,KACdhC,KAAK4F,qBAAqB,UAC1B,GAAI5F,KAAK+B,OAAS,SAAU,CAC1B/B,KAAKiC,iBAAiBb,KAAKpB,KAAKM,oB,GAGpC4I,iBAAkB,IAAOlJ,KAAKoH,iBAAmB,KACjD+B,eAAgBnJ,KAAKmJ,eACrBC,eAAgBpJ,KAAKM,oBACrB+I,KAAK,sBACLC,YACEtJ,KAAKuJ,eACLvJ,KAAKqI,iBACLrI,KAAK+B,OAAS,UAGhBoG,EAAA,QAAMqB,KAAK,qBAAqBjB,MAAM,yBACpCJ,EAAA,OACEsB,MAAM,6BACNC,MAAM,KACNC,OAAO,KACPC,KAAK,QAELzB,EAAA,aACAA,EAAA,QACEyB,KAAK,OAAM,YACD,UACVC,EAAE,oaAAma,YAC3Z,YAEZ1B,EAAA,QACEyB,KAAK,OAAM,YACD,UACVC,EAAE,+HAA8H,YACtH,aAGd1B,EAAA,QAAMH,KAAK,mCACTG,EAAA,6CAINA,EAAA,wBAAsBI,MAAO,CAAEQ,OAAQ/I,KAAKmH,iBAE9CgB,EAAA,OAAKrH,GAAG,mBAAmByH,MAAM,oBAC/BJ,EAAA,OAAKI,MAAM,sBACTJ,EAAA,0BACAA,EAAA,yBACEkB,KAAK,iBACLJ,oBAAqB,IACnBjJ,KAAK4F,qBAAqB,WAE5BsD,iBAAkB,IAChBlJ,KAAKuG,YAAY,mBAAoB,UAEvC6C,eAAgBpJ,KAAKM,yBAK7B6H,EAAA,gBACEI,MAAO,CAAE,eAAgB,KAAMvG,OAAQhC,KAAK6F,eAAiB,IAE7DsC,EAAA,OAAKI,MAAM,iBACTJ,EAAA,qBAAmBiB,eAAgBpJ,KAAKM,sBACxC6H,EAAA,OAAKI,MAAM,mBACTJ,EAAA,OAAKI,MAAM,WACRhF,EAAiBsD,QAAQiD,KAAKC,GAC7B5B,EAAA,kBACE4B,OAAQA,EACRX,eAAgBpJ,KAAKM,2BAM/B6H,EAAA,OAAKrH,GAAG,gBAAgByH,MAAM,oBAC5BJ,EAAA,OACEI,MAAO,CACL,gBAAiB,KACjBQ,OAAQxF,EAAiBC,QAAQwG,OAAS,IAG5C7B,EAAA,6BACAA,EAAA,2BAEFA,EAAA,OACEI,MAAO,CACLQ,OAAQxF,EAAiBC,QAAQwG,QAAU,EAC3CC,SAAU,OAGX1G,EAAiBC,QAAQsG,KAAI,CAACI,EAAGC,K,MAAM,OACtChC,EAAA,uBACEiC,IAAKF,EAAE7H,UACP0G,OAAQ,KACRsB,aAAcH,EAAEI,MAChBjI,UAAW6H,EAAE7H,UACbkI,MAAOL,EAAEK,MACT5G,SAAUuG,EAAEvG,SACZ6G,MAAON,EAAEM,MAAMC,OACfC,UAAWR,EAAEM,MAAMG,KACnBC,WAAY,IACZpE,OAAO5F,EAAAsJ,EAAE1D,MAAMqE,aAAS,MAAAjK,SAAA,EAAAA,EAAIsJ,EAAE1D,MAAMsE,SACpCzB,KAAK,eACL7I,eAAe,MACfuK,MAAOZ,EACPa,gBAAiBhL,KAAKc,GACtBD,gBAAiBb,KAAKa,iBACtB,S"}
@@ -1 +1,2 @@
1
- const r={VPR:"Similar Products",VPS:"Visual Search",VCS:"Products Cross-Selling"};function t(r,t){return a=>(r=>"VPR"===r._tag)(a)?r():t()}function a(r){return"VPR"===r?{_tag:"VPR"}:{_tag:"VCS"}}export{t as a,r as c,a as f}
1
+ const t={VPR:"Similar Products",VPS:"Visual Search",VCS:"Products Cross-Selling"};const r=t=>t._tag==="VPR";function s(t,s){return a=>r(a)?t():s()}function a(t){return t==="VPR"?{_tag:"VPR"}:{_tag:"VCS"}}export{s as a,t as c,a as f};
2
+ //# sourceMappingURL=p-18fd769b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["campaignTypeNames","VPR","VPS","VCS","isVPR","c","_tag","fold","onVPR","onVCS","fromString","s"],"sources":["./src/campaign/Campaign.ts"],"sourcesContent":["export type CampaignName = \"VPR\" | \"VCS\";\nexport type WidgetType = \"VPR\" | \"VPS\";\nexport type CampaignTypeId = \"VPR\" | \"VPS\" | \"VCS\";\n\nexport type CampaignTypeTitle =\n | \"Similar Products\"\n | \"Visual Search\"\n | \"Products Cross-Selling\";\n\nexport const campaignTypeNames: Record<CampaignTypeId, CampaignTypeTitle> = {\n VPR: \"Similar Products\",\n VPS: \"Visual Search\",\n VCS: \"Products Cross-Selling\",\n};\n\nexport interface VPR {\n readonly _tag: \"VPR\";\n}\n\nexport interface VCS {\n readonly _tag: \"VCS\";\n}\n\nexport const isVPR = (c: Campaign): c is VPR => c._tag === \"VPR\";\nexport const isVCS = (c: Campaign): c is VCS => c._tag === \"VCS\";\n\nexport type Campaign = VPR | VCS;\n\nexport function fold<A, B>(\n onVPR: () => A,\n onVCS: () => B\n): (c: Campaign) => A | B {\n return (c) => (isVPR(c) ? onVPR() : onVCS());\n}\n\nexport function fromString(s: CampaignName): Campaign {\n return s === \"VPR\" ? { _tag: \"VPR\" } : { _tag: \"VCS\" };\n}\n"],"mappings":"MASaA,EAA+D,CAC1EC,IAAK,mBACLC,IAAK,gBACLC,IAAK,0BAWA,MAAMC,EAASC,GAA0BA,EAAEC,OAAS,M,SAK3CC,EACdC,EACAC,GAEA,OAAQJ,GAAOD,EAAMC,GAAKG,IAAUC,GACtC,C,SAEgBC,EAAWC,GACzB,OAAOA,IAAM,MAAQ,CAAEL,KAAM,OAAU,CAAEA,KAAM,MACjD,Q"}