vviinn-widgets 2.31.4 → 2.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{package-af6d184f.js → package-d0d4bbd6.js} +1 -1
- package/dist/cjs/vviinn-carousel_3.cjs.entry.js +15 -12
- package/dist/cjs/vviinn-vpr-button.cjs.entry.js +1 -1
- package/dist/cjs/vviinn-vps-button.cjs.entry.js +1 -1
- package/dist/cjs/vviinn-vps-widget.cjs.entry.js +1 -1
- package/dist/collection/components/vviinn-product-card/render-helpers.js +2 -2
- package/dist/collection/components/vviinn-product-card/vviinn-product-card.js +12 -9
- package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.e2e.js +0 -1
- package/dist/esm/{package-3e2a1157.js → package-9d767a72.js} +1 -1
- package/dist/esm/vviinn-carousel_3.entry.js +15 -12
- package/dist/esm/vviinn-vpr-button.entry.js +1 -1
- package/dist/esm/vviinn-vps-button.entry.js +1 -1
- package/dist/esm/vviinn-vps-widget.entry.js +1 -1
- package/dist/types/components/vviinn-product-card/render-helpers.d.ts +1 -0
- package/dist/types/components/vviinn-product-card/vviinn-product-card.d.ts +1 -0
- package/{www/build/p-a71d8adc.entry.js → dist/vviinn-widgets/p-5d8de6ff.entry.js} +1 -1
- package/dist/vviinn-widgets/p-65ca5b81.entry.js +1 -0
- package/dist/vviinn-widgets/p-d29b42cc.js +1 -0
- package/{www/build/p-22beb468.entry.js → dist/vviinn-widgets/p-d7699839.entry.js} +1 -1
- package/dist/vviinn-widgets/p-e845f9e8.entry.js +1 -0
- package/dist/vviinn-widgets/vviinn-widgets.esm.js +1 -1
- package/package.json +1 -1
- package/{dist/vviinn-widgets/p-a71d8adc.entry.js → www/build/p-5d8de6ff.entry.js} +1 -1
- package/www/build/p-65ca5b81.entry.js +1 -0
- package/www/build/p-d29b42cc.js +1 -0
- package/{dist/vviinn-widgets/p-22beb468.entry.js → www/build/p-d7699839.entry.js} +1 -1
- package/www/build/p-e845f9e8.entry.js +1 -0
- package/www/build/vviinn-widgets.esm.js +1 -1
- package/dist/vviinn-widgets/p-aace2b88.js +0 -1
- package/dist/vviinn-widgets/p-de658f4c.entry.js +0 -1
- package/dist/vviinn-widgets/p-e3da288b.entry.js +0 -1
- package/www/build/p-aace2b88.js +0 -1
- package/www/build/p-de658f4c.entry.js +0 -1
- package/www/build/p-e3da288b.entry.js +0 -1
|
@@ -7,7 +7,7 @@ const imageSearch_store = require('./imageSearch.store-dc4e98b3.js');
|
|
|
7
7
|
const index$1 = require('./index-fcf59d51.js');
|
|
8
8
|
const i18next = require('./i18next-74ff3413.js');
|
|
9
9
|
const customizedSlots = require('./customized-slots-0a8d663c.js');
|
|
10
|
-
const _package = require('./package-
|
|
10
|
+
const _package = require('./package-d0d4bbd6.js');
|
|
11
11
|
const index$2 = require('./index-7ff2ab5f.js');
|
|
12
12
|
|
|
13
13
|
const vviinnCarouselCss = ":host{--vviinn-progressbar-width:0;--vviinn-carousel-item-width:150px;--vviinn-carousel-columns-internal:var(--vviinn-carousel-columns, 4);--vviinn-carousel-image-width-system:140px}.body{display:flex;position:relative;width:var(--vviinn-carousel-content-width);flex-direction:column}.content-wrapper *{box-sizing:border-box}.content-wrapper{overflow-y:hidden;overflow-x:auto;flex-grow:1}.bullets{margin-top:16px;display:flex;flex-direction:row;grid-gap:24px;justify-content:center}.bullet{width:10px;height:10px;background:#e0e0e0;border-radius:50%;cursor:pointer}.bullet.active{background:#161616}.content:not(.show-scrollbar),.content.grid{scrollbar-color:#fff0 #fff0}.content:not(.show-scrollbar)::-webkit-scrollbar,.content.grid::-webkit-scrollbar{opacity:0}.content{display:flex;flex-direction:row;grid-gap:8px;overflow-y:hidden;overflow-x:auto;flex-grow:1;padding-bottom:16px}.content.left>*{scroll-snap-align:start}.content.right>*{scroll-snap-align:end}:host(.continuity) button{border-radius:2px}:host(.grid) button{border-radius:50%}button{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}button{fill:#525252}button:disabled{display:none}button.prev svg{transform:rotate(180deg);margin-left:-5px}.prev{left:0}.next{right:0}.items-group{display:grid;grid-gap:16px;grid-template-columns:repeat(var(--vviinn-carousel-columns-internal), 1fr);min-width:100%}vviinn-product-card::part(price-container){text-align:center}:host(.classic) vviinn-product-card::part(title),:host(.classic) vviinn-product-card::part(brand),:host(.classic) vviinn-product-card::part(type){text-align:center}@media (max-width: 480px){:host(.modern) button{display:none}.items-group{grid-template-columns:repeat(2, 1fr)}}";
|
|
@@ -414,9 +414,9 @@ const Price = (props) => {
|
|
|
414
414
|
index.h(FormattedPrice, { prefix: props.prefix, currency: props.currency, price: props.price, locale: props.locale, priceType: "regular" })))));
|
|
415
415
|
};
|
|
416
416
|
const Image = (props, onLoadEnd = () => undefined) => (index.h("picture", null,
|
|
417
|
-
index.h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image", width: props.width, height: props.height, src: processWidth(props.src, props.width), alt: props.title, onLoad: onLoadEnd })));
|
|
417
|
+
index.h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image", width: props.width, height: props.height, src: processWidth(props.src, props.width), alt: props.title, ref: props.ref, onLoad: onLoadEnd })));
|
|
418
418
|
const ResponsiveImage = (props, onLoadEnd = () => undefined) => (index.h("picture", null,
|
|
419
|
-
index.h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image responsive", src: processWidth(props.src, props.width), alt: props.title, onLoad: onLoadEnd })));
|
|
419
|
+
index.h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image responsive", src: processWidth(props.src, props.width), alt: props.title, ref: props.ref, onLoad: onLoadEnd })));
|
|
420
420
|
|
|
421
421
|
const vviinnProductCardCss = ":host{align-items:center;display:flex;flex-direction:column;gap:8px;height:100%}.price-container{display:flex;flex-direction:column;margin-top:auto}.price-sale,.price-regular{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#161616}.price-outdated{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#757575;text-decoration:line-through}.product-type{word-wrap:anywhere}.image{display:grid;align-content:center;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:contain;object-fit:contain;text-align:center;box-sizing:border-box}img.responsive{width:100%;height:auto;aspect-ratio:1}.brand,.type{display:none}.title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#161616;display:-webkit-box;font-size:16px;font-style:normal;font-weight:500;line-height:24px;margin-bottom:8px;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px;margin-top:8px}.basket-button.basket-button-grid{width:100%;background:none;border:1px solid #dddddd}.basket-button.basket-button-continuity{align-self:start;background:#f7f7f7}.basket-button-continuity:hover{background:#eaeaea}.basket-button-grid:hover{background:#f7f7f7}@media (max-width: 640px){.basket-button{padding:8px 10px}}:host(.dimmed) picture::before{content:\"\";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}";
|
|
422
422
|
|
|
@@ -429,7 +429,13 @@ const VviinnProductCard = class {
|
|
|
429
429
|
this.vviinnAddToBasket = index.createEvent(this, "vviinnAddToBasket", 7);
|
|
430
430
|
this.vviinnAuxClick = index.createEvent(this, "vviinnAuxClick", 7);
|
|
431
431
|
this.productData = null;
|
|
432
|
-
this.
|
|
432
|
+
this.intersectionCallback = (data) => {
|
|
433
|
+
if (data.some((entry) => entry.isIntersecting)) {
|
|
434
|
+
imageSearch_store._function.pipe(getAnalyticsModule, imageSearch_store.Option.map((analytics) => analytics.sendImpression(this.getProduct())));
|
|
435
|
+
this.vviinnProductView.emit(this.productData);
|
|
436
|
+
this.intersectionObserver.disconnect();
|
|
437
|
+
}
|
|
438
|
+
};
|
|
433
439
|
this.brand = undefined;
|
|
434
440
|
this.currency = undefined;
|
|
435
441
|
this.deeplink = undefined;
|
|
@@ -479,16 +485,10 @@ const VviinnProductCard = class {
|
|
|
479
485
|
widgetVersion: this.widgetVersion,
|
|
480
486
|
};
|
|
481
487
|
}
|
|
482
|
-
intersectionCallback(data) {
|
|
483
|
-
if (data.some((entry) => entry.isIntersecting)) {
|
|
484
|
-
imageSearch_store._function.pipe(getAnalyticsModule, imageSearch_store.Option.map((analytics) => analytics.sendImpression(this.getProduct())));
|
|
485
|
-
this.vviinnProductView.emit(this.productData);
|
|
486
|
-
this.intersectionObserver.disconnect();
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
488
|
componentDidLoad() {
|
|
490
489
|
this.vviinnProductLoad.emit(this.productData);
|
|
491
|
-
this.intersectionObserver.
|
|
490
|
+
this.intersectionObserver = new IntersectionObserver(this.intersectionCallback.bind(this.imageElement), { threshold: 1.0 });
|
|
491
|
+
this.intersectionObserver.observe(this.imageElement);
|
|
492
492
|
const links = this.el.shadowRoot.querySelectorAll("a");
|
|
493
493
|
links.forEach((link) => {
|
|
494
494
|
link.addEventListener("click", (event) => {
|
|
@@ -512,6 +512,9 @@ const VviinnProductCard = class {
|
|
|
512
512
|
src: this.image,
|
|
513
513
|
title: this.productTitle,
|
|
514
514
|
lazy: false,
|
|
515
|
+
ref: (el) => {
|
|
516
|
+
this.imageElement = el;
|
|
517
|
+
},
|
|
515
518
|
};
|
|
516
519
|
return this.responsive ? ResponsiveImage(props) : Image(props);
|
|
517
520
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const _package = require('./package-
|
|
6
|
+
const _package = require('./package-d0d4bbd6.js');
|
|
7
7
|
const index$1 = require('./index-fcf59d51.js');
|
|
8
8
|
|
|
9
9
|
const vviinnVprButtonCss = ":host{display:block}";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const _package = require('./package-
|
|
6
|
+
const _package = require('./package-d0d4bbd6.js');
|
|
7
7
|
const index$1 = require('./index-fcf59d51.js');
|
|
8
8
|
const customizedSlots = require('./customized-slots-0a8d663c.js');
|
|
9
9
|
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
6
|
const imageSearch_store = require('./imageSearch.store-dc4e98b3.js');
|
|
7
7
|
const i18next = require('./i18next-74ff3413.js');
|
|
8
|
-
const _package = require('./package-
|
|
8
|
+
const _package = require('./package-d0d4bbd6.js');
|
|
9
9
|
const customizedSlots = require('./customized-slots-0a8d663c.js');
|
|
10
10
|
const index$1 = require('./index-7ff2ab5f.js');
|
|
11
11
|
|
|
@@ -25,5 +25,5 @@ export const Price = (props) => {
|
|
|
25
25
|
h("span", { class: "price-outdated", part: "price-outdated" }, h(FormattedPrice, { prefix: props.prefix, currency: props.currency, price: props.price, locale: props.locale, priceType: "outdated" })),
|
|
26
26
|
]) : (h("span", { class: "price-regular", part: "price-regular" }, h(FormattedPrice, { prefix: props.prefix, currency: props.currency, price: props.price, locale: props.locale, priceType: "regular" })))));
|
|
27
27
|
};
|
|
28
|
-
export const Image = (props, onLoadEnd = () => undefined) => (h("picture", null, h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image", width: props.width, height: props.height, src: processWidth(props.src, props.width), alt: props.title, onLoad: onLoadEnd })));
|
|
29
|
-
export const ResponsiveImage = (props, onLoadEnd = () => undefined) => (h("picture", null, h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image responsive", src: processWidth(props.src, props.width), alt: props.title, onLoad: onLoadEnd })));
|
|
28
|
+
export const Image = (props, onLoadEnd = () => undefined) => (h("picture", null, h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image", width: props.width, height: props.height, src: processWidth(props.src, props.width), alt: props.title, ref: props.ref, onLoad: onLoadEnd })));
|
|
29
|
+
export const ResponsiveImage = (props, onLoadEnd = () => undefined) => (h("picture", null, h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image responsive", src: processWidth(props.src, props.width), alt: props.title, ref: props.ref, onLoad: onLoadEnd })));
|
|
@@ -30,7 +30,13 @@ import { slotChangeListener } from "../customized-slots";
|
|
|
30
30
|
export class VviinnProductCard {
|
|
31
31
|
constructor() {
|
|
32
32
|
this.productData = null;
|
|
33
|
-
this.
|
|
33
|
+
this.intersectionCallback = (data) => {
|
|
34
|
+
if (data.some((entry) => entry.isIntersecting)) {
|
|
35
|
+
pipe(getAnalyticsModule, O.map((analytics) => analytics.sendImpression(this.getProduct())));
|
|
36
|
+
this.vviinnProductView.emit(this.productData);
|
|
37
|
+
this.intersectionObserver.disconnect();
|
|
38
|
+
}
|
|
39
|
+
};
|
|
34
40
|
this.brand = undefined;
|
|
35
41
|
this.currency = undefined;
|
|
36
42
|
this.deeplink = undefined;
|
|
@@ -80,16 +86,10 @@ export class VviinnProductCard {
|
|
|
80
86
|
widgetVersion: this.widgetVersion,
|
|
81
87
|
};
|
|
82
88
|
}
|
|
83
|
-
intersectionCallback(data) {
|
|
84
|
-
if (data.some((entry) => entry.isIntersecting)) {
|
|
85
|
-
pipe(getAnalyticsModule, O.map((analytics) => analytics.sendImpression(this.getProduct())));
|
|
86
|
-
this.vviinnProductView.emit(this.productData);
|
|
87
|
-
this.intersectionObserver.disconnect();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
89
|
componentDidLoad() {
|
|
91
90
|
this.vviinnProductLoad.emit(this.productData);
|
|
92
|
-
this.intersectionObserver.
|
|
91
|
+
this.intersectionObserver = new IntersectionObserver(this.intersectionCallback.bind(this.imageElement), { threshold: 1.0 });
|
|
92
|
+
this.intersectionObserver.observe(this.imageElement);
|
|
93
93
|
const links = this.el.shadowRoot.querySelectorAll("a");
|
|
94
94
|
links.forEach((link) => {
|
|
95
95
|
link.addEventListener("click", (event) => {
|
|
@@ -113,6 +113,9 @@ export class VviinnProductCard {
|
|
|
113
113
|
src: this.image,
|
|
114
114
|
title: this.productTitle,
|
|
115
115
|
lazy: false,
|
|
116
|
+
ref: (el) => {
|
|
117
|
+
this.imageElement = el;
|
|
118
|
+
},
|
|
116
119
|
};
|
|
117
120
|
return this.responsive ? ResponsiveImage(props) : Image(props);
|
|
118
121
|
}
|
|
@@ -10,7 +10,6 @@ token="eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOjgzLCJqdGkiOiI3ZTg2Y2I1YS00
|
|
|
10
10
|
await page.waitForChanges();
|
|
11
11
|
const exampleImage = await page.find("vviinn-vps-widget >>> vviinn-slide");
|
|
12
12
|
await page.waitForChanges();
|
|
13
|
-
console.log(exampleImage.nodeName);
|
|
14
13
|
exampleImage.classList.add("ololo");
|
|
15
14
|
await page.waitForChanges();
|
|
16
15
|
await exampleImage.click();
|
|
@@ -3,7 +3,7 @@ import { _ as _Array, O as Option, S as Semigroup, a as _function, h as has, t a
|
|
|
3
3
|
import { C as ChevronIcon } from './index-d1215e03.js';
|
|
4
4
|
import { i as instance } from './i18next-387f2b0a.js';
|
|
5
5
|
import { s as slotChangeListener, c as campaignTypeNames, f as fromString, a as fold, S as SlotSkeleton } from './customized-slots-136b5f71.js';
|
|
6
|
-
import { v as version } from './package-
|
|
6
|
+
import { v as version } from './package-9d767a72.js';
|
|
7
7
|
import { v as v4, c as createTrackingApi, a as createAddToBasketVpcEvent, b as createAddToBasketVprEvent, d as createWidgetVpcEvent, e as createWidgetVprEvent, f as createResultVpcEventByType, g as createResultVprEventByType, h as createProductVpcEventByType, i as createProductVprEventByType } from './index-53105ad4.js';
|
|
8
8
|
|
|
9
9
|
const vviinnCarouselCss = ":host{--vviinn-progressbar-width:0;--vviinn-carousel-item-width:150px;--vviinn-carousel-columns-internal:var(--vviinn-carousel-columns, 4);--vviinn-carousel-image-width-system:140px}.body{display:flex;position:relative;width:var(--vviinn-carousel-content-width);flex-direction:column}.content-wrapper *{box-sizing:border-box}.content-wrapper{overflow-y:hidden;overflow-x:auto;flex-grow:1}.bullets{margin-top:16px;display:flex;flex-direction:row;grid-gap:24px;justify-content:center}.bullet{width:10px;height:10px;background:#e0e0e0;border-radius:50%;cursor:pointer}.bullet.active{background:#161616}.content:not(.show-scrollbar),.content.grid{scrollbar-color:#fff0 #fff0}.content:not(.show-scrollbar)::-webkit-scrollbar,.content.grid::-webkit-scrollbar{opacity:0}.content{display:flex;flex-direction:row;grid-gap:8px;overflow-y:hidden;overflow-x:auto;flex-grow:1;padding-bottom:16px}.content.left>*{scroll-snap-align:start}.content.right>*{scroll-snap-align:end}:host(.continuity) button{border-radius:2px}:host(.grid) button{border-radius:50%}button{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}button{fill:#525252}button:disabled{display:none}button.prev svg{transform:rotate(180deg);margin-left:-5px}.prev{left:0}.next{right:0}.items-group{display:grid;grid-gap:16px;grid-template-columns:repeat(var(--vviinn-carousel-columns-internal), 1fr);min-width:100%}vviinn-product-card::part(price-container){text-align:center}:host(.classic) vviinn-product-card::part(title),:host(.classic) vviinn-product-card::part(brand),:host(.classic) vviinn-product-card::part(type){text-align:center}@media (max-width: 480px){:host(.modern) button{display:none}.items-group{grid-template-columns:repeat(2, 1fr)}}";
|
|
@@ -410,9 +410,9 @@ const Price = (props) => {
|
|
|
410
410
|
h(FormattedPrice, { prefix: props.prefix, currency: props.currency, price: props.price, locale: props.locale, priceType: "regular" })))));
|
|
411
411
|
};
|
|
412
412
|
const Image = (props, onLoadEnd = () => undefined) => (h("picture", null,
|
|
413
|
-
h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image", width: props.width, height: props.height, src: processWidth(props.src, props.width), alt: props.title, onLoad: onLoadEnd })));
|
|
413
|
+
h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image", width: props.width, height: props.height, src: processWidth(props.src, props.width), alt: props.title, ref: props.ref, onLoad: onLoadEnd })));
|
|
414
414
|
const ResponsiveImage = (props, onLoadEnd = () => undefined) => (h("picture", null,
|
|
415
|
-
h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image responsive", src: processWidth(props.src, props.width), alt: props.title, onLoad: onLoadEnd })));
|
|
415
|
+
h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image responsive", src: processWidth(props.src, props.width), alt: props.title, ref: props.ref, onLoad: onLoadEnd })));
|
|
416
416
|
|
|
417
417
|
const vviinnProductCardCss = ":host{align-items:center;display:flex;flex-direction:column;gap:8px;height:100%}.price-container{display:flex;flex-direction:column;margin-top:auto}.price-sale,.price-regular{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#161616}.price-outdated{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#757575;text-decoration:line-through}.product-type{word-wrap:anywhere}.image{display:grid;align-content:center;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:contain;object-fit:contain;text-align:center;box-sizing:border-box}img.responsive{width:100%;height:auto;aspect-ratio:1}.brand,.type{display:none}.title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#161616;display:-webkit-box;font-size:16px;font-style:normal;font-weight:500;line-height:24px;margin-bottom:8px;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px;margin-top:8px}.basket-button.basket-button-grid{width:100%;background:none;border:1px solid #dddddd}.basket-button.basket-button-continuity{align-self:start;background:#f7f7f7}.basket-button-continuity:hover{background:#eaeaea}.basket-button-grid:hover{background:#f7f7f7}@media (max-width: 640px){.basket-button{padding:8px 10px}}:host(.dimmed) picture::before{content:\"\";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}";
|
|
418
418
|
|
|
@@ -425,7 +425,13 @@ const VviinnProductCard = class {
|
|
|
425
425
|
this.vviinnAddToBasket = createEvent(this, "vviinnAddToBasket", 7);
|
|
426
426
|
this.vviinnAuxClick = createEvent(this, "vviinnAuxClick", 7);
|
|
427
427
|
this.productData = null;
|
|
428
|
-
this.
|
|
428
|
+
this.intersectionCallback = (data) => {
|
|
429
|
+
if (data.some((entry) => entry.isIntersecting)) {
|
|
430
|
+
_function.pipe(getAnalyticsModule, Option.map((analytics) => analytics.sendImpression(this.getProduct())));
|
|
431
|
+
this.vviinnProductView.emit(this.productData);
|
|
432
|
+
this.intersectionObserver.disconnect();
|
|
433
|
+
}
|
|
434
|
+
};
|
|
429
435
|
this.brand = undefined;
|
|
430
436
|
this.currency = undefined;
|
|
431
437
|
this.deeplink = undefined;
|
|
@@ -475,16 +481,10 @@ const VviinnProductCard = class {
|
|
|
475
481
|
widgetVersion: this.widgetVersion,
|
|
476
482
|
};
|
|
477
483
|
}
|
|
478
|
-
intersectionCallback(data) {
|
|
479
|
-
if (data.some((entry) => entry.isIntersecting)) {
|
|
480
|
-
_function.pipe(getAnalyticsModule, Option.map((analytics) => analytics.sendImpression(this.getProduct())));
|
|
481
|
-
this.vviinnProductView.emit(this.productData);
|
|
482
|
-
this.intersectionObserver.disconnect();
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
484
|
componentDidLoad() {
|
|
486
485
|
this.vviinnProductLoad.emit(this.productData);
|
|
487
|
-
this.intersectionObserver.
|
|
486
|
+
this.intersectionObserver = new IntersectionObserver(this.intersectionCallback.bind(this.imageElement), { threshold: 1.0 });
|
|
487
|
+
this.intersectionObserver.observe(this.imageElement);
|
|
488
488
|
const links = this.el.shadowRoot.querySelectorAll("a");
|
|
489
489
|
links.forEach((link) => {
|
|
490
490
|
link.addEventListener("click", (event) => {
|
|
@@ -508,6 +508,9 @@ const VviinnProductCard = class {
|
|
|
508
508
|
src: this.image,
|
|
509
509
|
title: this.productTitle,
|
|
510
510
|
lazy: false,
|
|
511
|
+
ref: (el) => {
|
|
512
|
+
this.imageElement = el;
|
|
513
|
+
},
|
|
511
514
|
};
|
|
512
515
|
return this.responsive ? ResponsiveImage(props) : Image(props);
|
|
513
516
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-1f3eaf12.js';
|
|
2
|
-
import { v as version } from './package-
|
|
2
|
+
import { v as version } from './package-9d767a72.js';
|
|
3
3
|
import { V as VisualSearchIcon } from './index-d1215e03.js';
|
|
4
4
|
|
|
5
5
|
const vviinnVprButtonCss = ":host{display:block}";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-1f3eaf12.js';
|
|
2
|
-
import { v as version } from './package-
|
|
2
|
+
import { v as version } from './package-9d767a72.js';
|
|
3
3
|
import { a as CameraIcon } from './index-d1215e03.js';
|
|
4
4
|
import { c as campaignTypeNames, S as SlotSkeleton } from './customized-slots-136b5f71.js';
|
|
5
5
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-1f3eaf12.js';
|
|
2
2
|
import { i as imageSearchState, s as state, a as _function, O as Option, k as parseExcluded, q as isEmpty } from './imageSearch.store-c0f2a178.js';
|
|
3
3
|
import { i as instance } from './i18next-387f2b0a.js';
|
|
4
|
-
import { v as version } from './package-
|
|
4
|
+
import { v as version } from './package-9d767a72.js';
|
|
5
5
|
import { c as campaignTypeNames, s as slotChangeListener, S as SlotSkeleton } from './customized-slots-136b5f71.js';
|
|
6
6
|
import { j as createSearchEvent, k as createFilterEvent, v as v4, c as createTrackingApi, l as createWidgetVpsEvent, m as createProductVpsEventByType, n as createResultVpsEventByType } from './index-53105ad4.js';
|
|
7
7
|
|
|
@@ -20,6 +20,7 @@ export type ImageProps = {
|
|
|
20
20
|
title: string;
|
|
21
21
|
src: string;
|
|
22
22
|
lazy: boolean;
|
|
23
|
+
ref: (el: HTMLImageElement) => void;
|
|
23
24
|
};
|
|
24
25
|
export declare const Image: (props: ImageProps, onLoadEnd?: () => any) => any;
|
|
25
26
|
export declare const ResponsiveImage: (props: ImageProps, onLoadEnd?: () => any) => any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,c as t,h as e,H as s,g as a}from"./p-1e83e6ba.js";import{i as r,s as n,a as o,O as d,k as l,q as h}from"./p-987a8e9f.js";import{i as p}from"./p-2e76a5c3.js";import{v as c}from"./p-aace2b88.js";import{c as g,s as u,S as v}from"./p-5303d4a8.js";import{j as m,k as b,v as x,c as f,l as y,m as w,n as k}from"./p-da7273ce.js";const T={"de-DE":{translation:{exampleImagesTitle:"Mit den Beispielbildern die Suche direkt ausprobieren",imageUploadButtonText:"Kamera oder Bild auswählen",privacyBadgeText:"Durch das Hochladen eines Bildes willigst Du in die Verarbeitung durch unseren Partner Vviinn ein. Das Bild wird nach einer Stunde Inaktivität gelöscht.",teaserText_1:"Finde Produkte auf",teaserText_2:"einem Foto",imageSearchModalTitle:"Bildsuche",onboardingBlock:{onboardingTitleText:"So funktioniert es",onboardingCard1:{title:"Starte die Bildsuche",text:"Lade ein Bild aus Deiner Galerie hoch oder fotografiere ein Produkt mit Deiner Kamera."},onboardingCard2:{title:"Verfeiner Deine Suche",text:"Du kannst den Bildrahmen selber festlegen und so die Produkte genau auswählen."},onboardingCard3:{title:"Ohne Hintergrund",text:"Die besten Ergebnisse erhältst Du, wenn das gesuchte Objekt mit einfarbigem und hellem Hintergrund zu sehen ist."}},emptyResultsBlock:{title:"Leider nichts gefunden",text:"Leider konnten wir keine passenden Produkte finden. Bitte versuche es mit einem anderen Bildausschnitt noch einmal."}}},en:{translation:{exampleImagesTitle:"Try out the search with the example images",imageUploadButtonText:"Select camera or image",privacyBadgeText:"By uploading a picture you agree to the processing by our partner Vviinn. The image will be deleted after one hour of inactivity.",teaserText_1:"Find products in a photo",teaserText_2:"",imageSearchModalTitle:"Visual Search",onboardingBlock:{onboardingTitleText:"This is how it works",onboardingCard1:{title:"Start the Visual Search",text:"Upload a picture from your gallery or take a picture of a product with your camera."},onboardingCard2:{title:"Refine Your Search",text:"You can set the frame yourself, so you can choose exactly what you want."},onboardingCard3:{title:"Without Background",text:"For best results, display the object you are looking for against a monochrome, light background."}},emptyResultsBlock:{title:"Sorry, nothing was found",text:"Sorry, we could not find any matching products. Please try again by selecting a different area of the image."}}}};var j=function(i,t){var e={};for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&t.indexOf(s)<0&&(e[s]=i[s]);if(null!=i&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(s=Object.getOwnPropertySymbols(i);a<s.length;a++)t.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(i,s[a])&&(e[s[a]]=i[s[a]])}return e};const I=i=>/^[-+]?(\d+|Infinity)$/.test(i)?Number(i):NaN,S=i=>!h(i),B=i=>!isNaN(i),V=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.vviinnImageUpload=t(this,"vviinnImageUpload",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnImageCrop=t(this,"vviinnImageCrop",7),this.vviinnSelectObject=t(this,"vviinnSelectObject",7),this.vviinnSelectFilter=t(this,"vviinnSelectFilter",7),this.imageSource=null,this.resultLoaded=!1,this.resultViewed=!1,this.setTrackingDeactivated=i=>{"rejected"===i.status&&(this.trackingDeactivated=!0)},this.getBasicEventData=()=>{var i;return{widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:g.VPS,widgetId:null!==(i=this.buttonElementId)&&void 0!==i?i:this.id,widgetVersion:c}},this.token=void 0,this.active=!0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.apiPath="https://api.vviinn.com",this.showingInButton=!1,this.buttonElementId=void 0,this.buttonPressed=void 0,this.mode="modal",this.resetVpsButton=void 0,this.slidePosition=0,this.width=0,this.wrongImageFormat=!1,this.trackingDeactivated=!1}initResultEvents(){this.resultLoaded=!1,this.resultViewed=!1}isOnboardingSlide(){return 0===this.slidePosition}isResultSlide(){return 1===this.slidePosition}handleOpenLink(i,t){if(this.productDetailNewTab||t.ctrlKey||t.metaKey){let t=window.open();t?t.location.href=i:window.location.href=i}else window.location.href=i}componentDidLoad(){const i=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(i))}activeWatcher(i){i?(this.overflow=document.body.style.overflow,document.body.style.overflow="hidden",this.vviinnWidgetOpen.emit(this.getBasicEventData()),this.trackWidgetEvent("open")):(document.body.style.overflow=this.overflow,this.initResultEvents())}buttonPressedWatcher(i){i&&"modal"===this.mode&&(this.active=!0)}trackProductLoad({detail:i}){const t=this.getProductTrackEvent(i,"load");this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}trackProductView({detail:i}){this.resultViewed||(this.resultViewed=!0,this.vviinnResultView.emit(this.getBasicEventData()),this.trackResultEvent("view"));const t=this.getProductTrackEvent(i,"view");this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}async trackProductClick({detail:i}){const{productId:t,clickEvent:e}=i,s=this.getProductTrackEvent(i,"click"),a=r.results.find((i=>i.productId===t));a&&a.deeplink&&(this.trackingDeactivated?this.handleOpenLink(a.deeplink,e):await this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated).finally((()=>{this.handleOpenLink(a.deeplink,e)})))}async trackAuxClick({detail:i}){const{productId:t}=i,e=this.getProductTrackEvent(i,"click"),s=r.results.find((i=>i.productId===t));s&&s.deeplink&&(this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated))}trachSearchAreaChanges(){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),t=j(i,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"manual-selection"},t));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackDetectedObject(){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),t=j(i,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"attention-point"},t));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackFilter({detail:i}){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId"]),s=b(Object.assign({session_id:this.uiSessionId,source:this.imageSource,kind:i.kind,action:i.action},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackSecondaryAction(){this.initResultEvents()}connectedCallback(){n.apiPath=this.apiPath,n.currencySign=this.currencySign,n.locale=this.locale,p.init({lng:this.locale,fallbackLng:"de-DE",resources:T}),r.token=this.token,r.campaignId=o.pipe(this.campaignId,d.fromNullable,d.chain(d.fromPredicate(S)),d.map(I),d.chain(d.fromPredicate(B)),d.map((i=>`${i}`))),this.excluded&&(this.excluded=l(this.excluded)),r.excluded=this.excluded,this.uiSessionId=x(),this.trackingApi=f(this.apiPath,this.token),this.id=this.el.id}componentWillLoad(){u(this,this.el),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}trackWidgetEvent(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]),s=Object.assign({action:i,session_id:this.uiSessionId},e),a=y(s);this.trackingApi.trackEvent(a).then(this.setTrackingDeactivated)}getProductTrackEvent(i,t){if(this.trackingDeactivated)return null;const{productRank:e,productId:s}=i,a=j(i,["productRank","productId","campaignTypeId","widgetType","clickEvent"]),r=Object.assign({session_id:this.uiSessionId,rank:e,product:s},a);return w(t)(r)}trackResultEvent(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]);let s=k(i)(Object.assign({session_id:this.uiSessionId},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackInitialSearch(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]),s=m(Object.assign({session_id:this.uiSessionId,search_area:"full",source:i},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}handleImageSelection(i){this.imageSource=i,this.slidePosition=1,this.el.shadowRoot.querySelector("vviinn-overlayed-modal").shadowRoot.querySelector("vviinn-overlay").querySelector("vviinn-modal").shadowRoot.querySelector(".body").scrollTop=0}renderResults(){return 0===r.results.length?null:(this.resultLoaded||(this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.resultLoaded=!0),r.results.map(((i,t)=>{var s;return e("vviinn-product-card",{key:i.productId,hidden:!0,productTitle:i.title,productId:i.productId,productType:i.productType,brand:i.brand,deeplink:i.deeplink,price:i.price.actual,salePrice:i.price.sale,responsive:!0,imageWidth:this.imageResolutionWidth,image:null!==(s=i.image.thumbnail)&&void 0!==s?s:i.image.original,part:"product-card",campaignTypeId:"VPS",index:t,widgetElementId:this.id,buttonElementId:this.buttonElementId,widgetVersion:c})})))}resetState(){this.resetScroll("onboarding-block"),this.slidePosition=0,r.resetCategoryLink=void 0,r.activeIonLink=void 0,r.image=d.none,r.imageUrl=d.none,r.imageBounds=d.none,r.searchArea=d.none,r.results=[],r.filters=[],r.detectedObjects=[],r.rectangleSearchForm=void 0,r.loading=!1,this.resetScroll("results-block")}haveErrors(){return this.wrongImageFormat||r.serverError}resetScroll(i,t="auto"){this.el.shadowRoot.getElementById(i).scroll({top:0,left:0,behavior:t})}handleModalClose(){this.active=!1,this.resetState(),["onboarding-block","results-block"].forEach((i=>this.resetScroll(i))),this.trackWidgetEvent("close")}render(){var i;return e(s,null,!this.showingInButton&&e(v,null),e("vviinn-overlayed-modal",{class:{"first-screen":this.isOnboardingSlide()},active:this.active,resetState:this.resetState.bind(this),onVviinnWidgetClose:()=>this.handleModalClose(),buttonElementId:null!==(i=this.buttonElementId)&&void 0!==i?i:this.id,widgetVersion:c,hideBackButton:"upload"===this.mode&&this.showingInButton,exportparts:"secondary-action, title, close-button, example-images"},e("vviinn-slider",{showBullets:!1,position:this.slidePosition},e("vviinn-slide",{class:{"start-page":!0}},e("div",{class:{error:this.haveErrors(),"start-page_block":!0}},e("vviinn-wrong-format",{class:{hidden:!this.wrongImageFormat},handler:()=>this.wrongImageFormat=!1}),e("vviinn-server-error",{class:{hidden:!r.serverError},handler:()=>r.serverError=!1}),e("vviinn-teaser",{class:{hidden:this.haveErrors()}}),e("vviinn-image-selector",{class:{hidden:this.haveErrors()},onVviinnImageUploadFinished:()=>{this.handleImageSelection("upload"),"upload"===this.mode&&this.showingInButton&&(this.active=!0)},onVviinnImageUpload:()=>{this.trackInitialSearch("upload")},onVviinnNoResult:()=>this.wrongImageFormat=!0,resetVpsButton:this.resetVpsButton,basicEventData:this.getBasicEventData(),part:"select-image_button",startUpload:this.buttonPressed&&this.showingInButton&&"upload"===this.mode},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,p.t("imageUploadButtonText"))))),e("vviinn-privacy-badge",{class:{hidden:this.haveErrors()},privacyBadgeText:p.t("privacyBadgeText")})),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",exampleImagesTitle:p.t("exampleImagesTitle"),onVviinnImageUploadFinished:()=>this.handleImageSelection("example"),onVviinnImageUpload:()=>{this.trackInitialSearch("example")},onVviinnNoResult:()=>this.resetScroll("onboarding-block","smooth"),basicEventData:this.getBasicEventData()})))),e("vviinn-slide",{class:{"results-page":!0,active:this.isResultSlide()}},e("div",{class:"image-wrapper"},this.isResultSlide()&&e("vviinn-image-view",{basicEventData:this.getBasicEventData()}),e("div",{class:"filters-wrapper"},e("div",{class:"filters"},r.filters.map((i=>e("search-filters",{filter:i,basicEventData:this.getBasicEventData()})))))),e("div",{id:"results-block",class:"products-wrapper"},e("div",{class:{"nothing-found":!0,hidden:r.results.length>0}},e("vviinn-empty-results",null),e("vviinn-onboarding",null)),e("div",{class:{hidden:r.results.length<=0,products:!0}},this.active&&this.renderResults()))))))}get el(){return a(this)}static get watchers(){return{active:["activeWatcher"],buttonPressed:["buttonPressedWatcher"]}}};V.style=":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;padding:0;grid-gap:24px;overflow-y:auto;position:relative;width:100%}@media (max-width: 768px){#onboarding-block{padding:48px}}@media (max-width: 480px){#onboarding-block{padding:20px}}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{width:100%;align-content:center;align-items:start;box-sizing:border-box;display:grid;grid-gap:32px 16px;grid-template-columns:repeat(auto-fill, minmax(130px, 1fr));justify-items:center;padding:24px;position:absolute}.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 1fr;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:8px;box-sizing:border-box;color:#161616;font-size:14px;font-weight:400;line-height:20px}search-filters::part(show-more-filters){display:flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid #f4f4f4;min-width:40px;height:40px;border-radius:100px;box-sizing:border-box;color:#161616}search-filters::part(show-more-filters):hover{background:#eaeaea}search-filters::part(filter active){background:var(--color-primary, var(--color-primary-system));color:white}.filters-wrapper{overflow-x:auto;transform:translateX(-24px);min-width:calc(100% + 48px)}.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){.results-page>*{box-sizing:border-box;padding:24px}.filters-wrapper{min-width:calc(100% + 40px)}.start-page{grid-gap:24px;padding:24px 0 48px 0}.start-page.active{grid-template-columns:unset}.start-page:not(.active){overflow:hidden}.results-page{grid-template-rows:min-content;grid-template-columns:unset}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}vviinn-teaser{margin-top:24px}.onboarding-wrapper{position:static;width:unset;padding:unset;box-sizing:border-box}.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: 480px){.start-page{padding-top:0}.start-page_block{padding:20px}.onboarding-wrapper{padding:0}.upload-button-content{grid-gap:10px}}@media (max-width: 380px){.results-page>*{padding:12px}.products{grid-gap:24px 10px}}vviinn-wrong-format,vviinn-server-error{width:280px;align-self:center;justify-self:center}";export{V as vviinn_vps_widget}
|
|
1
|
+
import{r as i,c as t,h as e,H as s,g as a}from"./p-1e83e6ba.js";import{i as r,s as n,a as o,O as d,k as l,q as h}from"./p-987a8e9f.js";import{i as p}from"./p-2e76a5c3.js";import{v as c}from"./p-d29b42cc.js";import{c as g,s as u,S as v}from"./p-5303d4a8.js";import{j as m,k as b,v as x,c as f,l as y,m as w,n as k}from"./p-da7273ce.js";const T={"de-DE":{translation:{exampleImagesTitle:"Mit den Beispielbildern die Suche direkt ausprobieren",imageUploadButtonText:"Kamera oder Bild auswählen",privacyBadgeText:"Durch das Hochladen eines Bildes willigst Du in die Verarbeitung durch unseren Partner Vviinn ein. Das Bild wird nach einer Stunde Inaktivität gelöscht.",teaserText_1:"Finde Produkte auf",teaserText_2:"einem Foto",imageSearchModalTitle:"Bildsuche",onboardingBlock:{onboardingTitleText:"So funktioniert es",onboardingCard1:{title:"Starte die Bildsuche",text:"Lade ein Bild aus Deiner Galerie hoch oder fotografiere ein Produkt mit Deiner Kamera."},onboardingCard2:{title:"Verfeiner Deine Suche",text:"Du kannst den Bildrahmen selber festlegen und so die Produkte genau auswählen."},onboardingCard3:{title:"Ohne Hintergrund",text:"Die besten Ergebnisse erhältst Du, wenn das gesuchte Objekt mit einfarbigem und hellem Hintergrund zu sehen ist."}},emptyResultsBlock:{title:"Leider nichts gefunden",text:"Leider konnten wir keine passenden Produkte finden. Bitte versuche es mit einem anderen Bildausschnitt noch einmal."}}},en:{translation:{exampleImagesTitle:"Try out the search with the example images",imageUploadButtonText:"Select camera or image",privacyBadgeText:"By uploading a picture you agree to the processing by our partner Vviinn. The image will be deleted after one hour of inactivity.",teaserText_1:"Find products in a photo",teaserText_2:"",imageSearchModalTitle:"Visual Search",onboardingBlock:{onboardingTitleText:"This is how it works",onboardingCard1:{title:"Start the Visual Search",text:"Upload a picture from your gallery or take a picture of a product with your camera."},onboardingCard2:{title:"Refine Your Search",text:"You can set the frame yourself, so you can choose exactly what you want."},onboardingCard3:{title:"Without Background",text:"For best results, display the object you are looking for against a monochrome, light background."}},emptyResultsBlock:{title:"Sorry, nothing was found",text:"Sorry, we could not find any matching products. Please try again by selecting a different area of the image."}}}};var j=function(i,t){var e={};for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&t.indexOf(s)<0&&(e[s]=i[s]);if(null!=i&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(s=Object.getOwnPropertySymbols(i);a<s.length;a++)t.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(i,s[a])&&(e[s[a]]=i[s[a]])}return e};const I=i=>/^[-+]?(\d+|Infinity)$/.test(i)?Number(i):NaN,S=i=>!h(i),B=i=>!isNaN(i),V=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.vviinnImageUpload=t(this,"vviinnImageUpload",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnImageCrop=t(this,"vviinnImageCrop",7),this.vviinnSelectObject=t(this,"vviinnSelectObject",7),this.vviinnSelectFilter=t(this,"vviinnSelectFilter",7),this.imageSource=null,this.resultLoaded=!1,this.resultViewed=!1,this.setTrackingDeactivated=i=>{"rejected"===i.status&&(this.trackingDeactivated=!0)},this.getBasicEventData=()=>{var i;return{widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:g.VPS,widgetId:null!==(i=this.buttonElementId)&&void 0!==i?i:this.id,widgetVersion:c}},this.token=void 0,this.active=!0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.apiPath="https://api.vviinn.com",this.showingInButton=!1,this.buttonElementId=void 0,this.buttonPressed=void 0,this.mode="modal",this.resetVpsButton=void 0,this.slidePosition=0,this.width=0,this.wrongImageFormat=!1,this.trackingDeactivated=!1}initResultEvents(){this.resultLoaded=!1,this.resultViewed=!1}isOnboardingSlide(){return 0===this.slidePosition}isResultSlide(){return 1===this.slidePosition}handleOpenLink(i,t){if(this.productDetailNewTab||t.ctrlKey||t.metaKey){let t=window.open();t?t.location.href=i:window.location.href=i}else window.location.href=i}componentDidLoad(){const i=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(i))}activeWatcher(i){i?(this.overflow=document.body.style.overflow,document.body.style.overflow="hidden",this.vviinnWidgetOpen.emit(this.getBasicEventData()),this.trackWidgetEvent("open")):(document.body.style.overflow=this.overflow,this.initResultEvents())}buttonPressedWatcher(i){i&&"modal"===this.mode&&(this.active=!0)}trackProductLoad({detail:i}){const t=this.getProductTrackEvent(i,"load");this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}trackProductView({detail:i}){this.resultViewed||(this.resultViewed=!0,this.vviinnResultView.emit(this.getBasicEventData()),this.trackResultEvent("view"));const t=this.getProductTrackEvent(i,"view");this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}async trackProductClick({detail:i}){const{productId:t,clickEvent:e}=i,s=this.getProductTrackEvent(i,"click"),a=r.results.find((i=>i.productId===t));a&&a.deeplink&&(this.trackingDeactivated?this.handleOpenLink(a.deeplink,e):await this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated).finally((()=>{this.handleOpenLink(a.deeplink,e)})))}async trackAuxClick({detail:i}){const{productId:t}=i,e=this.getProductTrackEvent(i,"click"),s=r.results.find((i=>i.productId===t));s&&s.deeplink&&(this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated))}trachSearchAreaChanges(){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),t=j(i,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"manual-selection"},t));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackDetectedObject(){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),t=j(i,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"attention-point"},t));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackFilter({detail:i}){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId"]),s=b(Object.assign({session_id:this.uiSessionId,source:this.imageSource,kind:i.kind,action:i.action},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackSecondaryAction(){this.initResultEvents()}connectedCallback(){n.apiPath=this.apiPath,n.currencySign=this.currencySign,n.locale=this.locale,p.init({lng:this.locale,fallbackLng:"de-DE",resources:T}),r.token=this.token,r.campaignId=o.pipe(this.campaignId,d.fromNullable,d.chain(d.fromPredicate(S)),d.map(I),d.chain(d.fromPredicate(B)),d.map((i=>`${i}`))),this.excluded&&(this.excluded=l(this.excluded)),r.excluded=this.excluded,this.uiSessionId=x(),this.trackingApi=f(this.apiPath,this.token),this.id=this.el.id}componentWillLoad(){u(this,this.el),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}trackWidgetEvent(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]),s=Object.assign({action:i,session_id:this.uiSessionId},e),a=y(s);this.trackingApi.trackEvent(a).then(this.setTrackingDeactivated)}getProductTrackEvent(i,t){if(this.trackingDeactivated)return null;const{productRank:e,productId:s}=i,a=j(i,["productRank","productId","campaignTypeId","widgetType","clickEvent"]),r=Object.assign({session_id:this.uiSessionId,rank:e,product:s},a);return w(t)(r)}trackResultEvent(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]);let s=k(i)(Object.assign({session_id:this.uiSessionId},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackInitialSearch(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]),s=m(Object.assign({session_id:this.uiSessionId,search_area:"full",source:i},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}handleImageSelection(i){this.imageSource=i,this.slidePosition=1,this.el.shadowRoot.querySelector("vviinn-overlayed-modal").shadowRoot.querySelector("vviinn-overlay").querySelector("vviinn-modal").shadowRoot.querySelector(".body").scrollTop=0}renderResults(){return 0===r.results.length?null:(this.resultLoaded||(this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.resultLoaded=!0),r.results.map(((i,t)=>{var s;return e("vviinn-product-card",{key:i.productId,hidden:!0,productTitle:i.title,productId:i.productId,productType:i.productType,brand:i.brand,deeplink:i.deeplink,price:i.price.actual,salePrice:i.price.sale,responsive:!0,imageWidth:this.imageResolutionWidth,image:null!==(s=i.image.thumbnail)&&void 0!==s?s:i.image.original,part:"product-card",campaignTypeId:"VPS",index:t,widgetElementId:this.id,buttonElementId:this.buttonElementId,widgetVersion:c})})))}resetState(){this.resetScroll("onboarding-block"),this.slidePosition=0,r.resetCategoryLink=void 0,r.activeIonLink=void 0,r.image=d.none,r.imageUrl=d.none,r.imageBounds=d.none,r.searchArea=d.none,r.results=[],r.filters=[],r.detectedObjects=[],r.rectangleSearchForm=void 0,r.loading=!1,this.resetScroll("results-block")}haveErrors(){return this.wrongImageFormat||r.serverError}resetScroll(i,t="auto"){this.el.shadowRoot.getElementById(i).scroll({top:0,left:0,behavior:t})}handleModalClose(){this.active=!1,this.resetState(),["onboarding-block","results-block"].forEach((i=>this.resetScroll(i))),this.trackWidgetEvent("close")}render(){var i;return e(s,null,!this.showingInButton&&e(v,null),e("vviinn-overlayed-modal",{class:{"first-screen":this.isOnboardingSlide()},active:this.active,resetState:this.resetState.bind(this),onVviinnWidgetClose:()=>this.handleModalClose(),buttonElementId:null!==(i=this.buttonElementId)&&void 0!==i?i:this.id,widgetVersion:c,hideBackButton:"upload"===this.mode&&this.showingInButton,exportparts:"secondary-action, title, close-button, example-images"},e("vviinn-slider",{showBullets:!1,position:this.slidePosition},e("vviinn-slide",{class:{"start-page":!0}},e("div",{class:{error:this.haveErrors(),"start-page_block":!0}},e("vviinn-wrong-format",{class:{hidden:!this.wrongImageFormat},handler:()=>this.wrongImageFormat=!1}),e("vviinn-server-error",{class:{hidden:!r.serverError},handler:()=>r.serverError=!1}),e("vviinn-teaser",{class:{hidden:this.haveErrors()}}),e("vviinn-image-selector",{class:{hidden:this.haveErrors()},onVviinnImageUploadFinished:()=>{this.handleImageSelection("upload"),"upload"===this.mode&&this.showingInButton&&(this.active=!0)},onVviinnImageUpload:()=>{this.trackInitialSearch("upload")},onVviinnNoResult:()=>this.wrongImageFormat=!0,resetVpsButton:this.resetVpsButton,basicEventData:this.getBasicEventData(),part:"select-image_button",startUpload:this.buttonPressed&&this.showingInButton&&"upload"===this.mode},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,p.t("imageUploadButtonText"))))),e("vviinn-privacy-badge",{class:{hidden:this.haveErrors()},privacyBadgeText:p.t("privacyBadgeText")})),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",exampleImagesTitle:p.t("exampleImagesTitle"),onVviinnImageUploadFinished:()=>this.handleImageSelection("example"),onVviinnImageUpload:()=>{this.trackInitialSearch("example")},onVviinnNoResult:()=>this.resetScroll("onboarding-block","smooth"),basicEventData:this.getBasicEventData()})))),e("vviinn-slide",{class:{"results-page":!0,active:this.isResultSlide()}},e("div",{class:"image-wrapper"},this.isResultSlide()&&e("vviinn-image-view",{basicEventData:this.getBasicEventData()}),e("div",{class:"filters-wrapper"},e("div",{class:"filters"},r.filters.map((i=>e("search-filters",{filter:i,basicEventData:this.getBasicEventData()})))))),e("div",{id:"results-block",class:"products-wrapper"},e("div",{class:{"nothing-found":!0,hidden:r.results.length>0}},e("vviinn-empty-results",null),e("vviinn-onboarding",null)),e("div",{class:{hidden:r.results.length<=0,products:!0}},this.active&&this.renderResults()))))))}get el(){return a(this)}static get watchers(){return{active:["activeWatcher"],buttonPressed:["buttonPressedWatcher"]}}};V.style=":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;padding:0;grid-gap:24px;overflow-y:auto;position:relative;width:100%}@media (max-width: 768px){#onboarding-block{padding:48px}}@media (max-width: 480px){#onboarding-block{padding:20px}}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{width:100%;align-content:center;align-items:start;box-sizing:border-box;display:grid;grid-gap:32px 16px;grid-template-columns:repeat(auto-fill, minmax(130px, 1fr));justify-items:center;padding:24px;position:absolute}.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 1fr;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:8px;box-sizing:border-box;color:#161616;font-size:14px;font-weight:400;line-height:20px}search-filters::part(show-more-filters){display:flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid #f4f4f4;min-width:40px;height:40px;border-radius:100px;box-sizing:border-box;color:#161616}search-filters::part(show-more-filters):hover{background:#eaeaea}search-filters::part(filter active){background:var(--color-primary, var(--color-primary-system));color:white}.filters-wrapper{overflow-x:auto;transform:translateX(-24px);min-width:calc(100% + 48px)}.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){.results-page>*{box-sizing:border-box;padding:24px}.filters-wrapper{min-width:calc(100% + 40px)}.start-page{grid-gap:24px;padding:24px 0 48px 0}.start-page.active{grid-template-columns:unset}.start-page:not(.active){overflow:hidden}.results-page{grid-template-rows:min-content;grid-template-columns:unset}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}vviinn-teaser{margin-top:24px}.onboarding-wrapper{position:static;width:unset;padding:unset;box-sizing:border-box}.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: 480px){.start-page{padding-top:0}.start-page_block{padding:20px}.onboarding-wrapper{padding:0}.upload-button-content{grid-gap:10px}}@media (max-width: 380px){.results-page>*{padding:12px}.products{grid-gap:24px 10px}}vviinn-wrong-format,vviinn-server-error{width:280px;align-self:center;justify-self:center}";export{V as vviinn_vps_widget}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i,c as t,h as s,H as e,g as n}from"./p-1e83e6ba.js";import{v as h}from"./p-d29b42cc.js";import{a as o}from"./p-a69d3568.js";import{c as a,S as r}from"./p-5303d4a8.js";const d=class{constructor(s){i(this,s),this.vviinnWidgetLoad=t(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=t(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=t(this,"vviinnWidgetClose",7),this.vviinnImageUpload=t(this,"vviinnImageUpload",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnImageCrop=t(this,"vviinnImageCrop",7),this.vviinnSelectObject=t(this,"vviinnSelectObject",7),this.vviinnSelectFilter=t(this,"vviinnSelectFilter",7),this.globalSlotsChanged=t(this,"globalSlotsChanged",7),this.getBasicEventData=()=>({widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:a.VPS,widgetId:this.el.id,widgetVersion:h}),this.token=void 0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.addStyle=!1,this.mode="modal",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.apiPath=void 0,this.buttonPressed=!1}handleModalClosed(){this.buttonPressed=!1}componentDidLoad(){const i=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(i))}handleClick(){this.buttonPressed=!0}resetButton(){this.buttonPressed=!1}render(){return s(e,{tabindex:"0",role:"button"},s("vviinn-button",{onClick:()=>{this.handleClick()},addStyle:this.addStyle,part:"vviinn-button"},s("slot",null,s(o,null))),s(r,null),s("vviinn-vps-widget",{mode:this.mode,"currency-sign":this.currencySign,token:this.token,locale:this.locale,apiPath:this.apiPath,exportparts:"brand, deeplink, currency, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, product-card, example-images",campaignId:this.campaignId,showingInButton:!0,buttonPressed:this.buttonPressed,resetVpsButton:this.resetButton.bind(this),buttonElementId:this.el.id,active:this.buttonPressed&&"modal"===this.mode,excluded:this.excluded,productDetailNewTab:this.productDetailNewTab,imageResolutionWidth:this.imageResolutionWidth}))}get el(){return n(this)}};d.style=":host{display:block}";export{d as vviinn_vps_button}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o="2.32.0";export{o as v}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,c as t,h as s,H as h,g as n}from"./p-1e83e6ba.js";import{v as o}from"./p-
|
|
1
|
+
import{r as i,c as t,h as s,H as h,g as n}from"./p-1e83e6ba.js";import{v as o}from"./p-d29b42cc.js";import{V as e}from"./p-a69d3568.js";const v=class{constructor(s){i(this,s),this.vviinnWidgetLoad=t(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=t(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=t(this,"vviinnWidgetClose",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnAddToBasket=t(this,"vviinnAddToBasket",7),this.sidebar=null,this.sidebarCloseListener=()=>{document.body.removeChild(this.sidebar)},this.token=void 0,this.productId=void 0,this.position="bottom",this.sourceImage=null,this.sidebarTitle="Visually similar products",this.modalScrollbar=!1,this.campaigns="",this.campaignType="VPR",this.locale="de-DE",this.color="",this.addStyle=!0,this.mode="continuity",this.imageWidth=300,this.currencySign="€",this.noResultText="",this.noResultShow=!0,this.gridArrowsDynamic=!1,this.excluded="",this.productDetailNewTab=!1,this.addToBasketShow=!1,this.apiPath="https://api.vviinn.com"}render(){return s(h,{onClick:()=>{this.handleClick()},role:"button",tabindex:"0"},s("vviinn-button",{addStyle:this.addStyle,part:"vviinn-button"},s("slot",null,s(e,null))))}handleClick(){const i=document.createElement("vviinn-recommendations-sidebar");i.sidebarTitle=this.sidebarTitle,i.productId=this.productId,i.token=this.token,i.position=this.position,i.sourceImage=this.sourceImage,i.widgetScrollbar=this.modalScrollbar,i.campaigns=this.campaigns,i.campaignType=this.campaignType,i.color=this.color,i.locale=this.locale,i.mode="right"===this.position?"grid":this.mode,i.imageWidth=this.imageWidth,i.currencySign=this.currencySign,i.apiPath=this.apiPath,i.buttonElementId=this.el.id,i.noResultText=this.noResultText,i.noResultShow=this.noResultShow,i.gridArrowsDynamic=this.gridArrowsDynamic,i.productDetailNewTab=this.productDetailNewTab,i.widgetVersion=o,i.showingInButton=!0,i.excluded=this.excluded,i.addToBasketShow=this.addToBasketShow,i.buttonChildren=this.el.children,this.sidebar=i,i.addEventListener("vviinnWidgetClose",this.sidebarCloseListener),document.body.append(this.sidebar)}disconnectedCallback(){this.sidebar&&(this.sidebar.removeEventListener("vviinnWidgetClose",this.sidebarCloseListener),document.body.removeChild(this.sidebar))}get el(){return n(this)}};v.style=":host{display:block}";export{v as vviinn_vpr_button}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,h as i,H as s,g as e,c as n,F as r}from"./p-1e83e6ba.js";import{_ as o,O as a,S as h,a as c,h as d,t as l,E as u,i as p,s as v,p as g,c as m,m as f,f as b,g as y,b as w,A as x,d as k,e as C,j as I,k as T,T as P,l as R}from"./p-987a8e9f.js";import{C as S}from"./p-a69d3568.js";import{i as V}from"./p-2e76a5c3.js";import{s as _,c as j,f as E,a as A,S as O}from"./p-5303d4a8.js";import{v as $}from"./p-d29b42cc.js";import{v as W,c as z,a as B,b as L,d as N,e as D,f as M,g as F,h as U,i as G}from"./p-da7273ce.js";const q="--vviinn-carousel-image-width",H="items-group",K=class{constructor(i){t(this,i),this.columns=0,this.resizeObserver=new ResizeObserver((()=>this.handleResize())),this.mutationObserver=new MutationObserver((()=>this.cloneSlottedContent())),this.isLastGroup=()=>this.activeContentGroup===this.getContentGroups().length-1&&"grid"===this.mode,this.isFirstGroup=()=>0===this.activeContentGroup&&"grid"===this.mode,this.moveDirection="right",this.contentGroups=[],this.activeContentGroup=0,this.isRTL=!1,this.mode="continuity",this.imageWidth=140,this.showScroll=!0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.gridArrowsDynamic=void 0,this.recommendations=[],this.widgetVersion=void 0,this.addToBasketShow=void 0}componentWillLoad(){this.isRTL="rtl"===document.dir}connectedCallback(){this.setItemWidth()}disconnectedCallback(){this.resizeObserver.disconnect()}componentDidLoad(){this.setWidth(),this.processScrollbarWidth(),this.columns=this.getColumnsNumber();const t=this.el.querySelector(".content");this.mutationObserver.observe(t,{subtree:!0,childList:!0}),this.resizeObserver.observe(this.getHostParent())}getItemWidthFromDocument(){return parseInt(getComputedStyle(document.body).getPropertyValue(q))}setItemWidth(){const t=this.getItemWidthFromDocument(),i=isNaN(t)?this.imageWidth:t;this.el.style.setProperty(q,`${i}px`)}getContentClassMap(){return{content:!0,[this.moveDirection]:!0,[this.mode]:!0,"show-scrollbar":this.showScroll}}handleResize(){this.setWidth(),this.processScrollbarWidth(),this.setItemWidth();const t=this.getColumnsNumber();t!==this.columns&&(this.columns=t)}calculateMoveStep(){const t=this.getContent().map((t=>t.getBoundingClientRect().width));return t.reduce(((t,i)=>t+i),0)/t.length}getHostParent(){return this.el.parentNode.host.parentElement}setWidth(){const t=this.getHostParent();if(!t)return;const i=getComputedStyle(t),s=t.getBoundingClientRect().width-(parseInt(i["padding-right"])+parseInt(i["padding-left"]));this.el.style.setProperty("--vviinn-carousel-content-width",`${s}px`)}getParent(){return this.el.parentNode.host.parentElement}cloneSlottedContent(){this.setWidth()}getActiveGroupIndex(){var t,i;if(!(null===(i=null===(t=this.getContentNode())||void 0===t?void 0:t.getBoundingClientRect())||void 0===i?void 0:i.left))return 0;const s=this.getContentGroups().map((t=>t.getBoundingClientRect().left)).map(((t,i)=>[t,i])).filter((t=>t[0]>=0));return s.length>0?this.isRTL?s[s.length-1][1]:s[0][1]:0}getContentNode(){return this.el.querySelector(".content")}getContent(){const t=this.getContentNode().children;return Array.from(t).map((t=>t))}getColumnsNumber(){const t=getComputedStyle(this.el).getPropertyValue("--vviinn-carousel-columns-internal"),i=parseInt(t);return i&&!isNaN(i)?i:4}getContentGroups(){return Array.from(this.el.querySelectorAll(`.${H}`))}showNext(){this.moveDirection="right";const t=this.getContentNode();requestAnimationFrame((()=>{t.scrollTo({top:0,left:t.scrollLeft+this.calculateMoveStep(),behavior:"smooth"})}))}showPrev(){this.moveDirection="left";const t=this.getContentNode();requestAnimationFrame((()=>{t.scrollTo({top:0,left:t.scrollLeft-this.calculateMoveStep(),behavior:"smooth"})}))}scroll(t){const i=this.getContentNode();requestAnimationFrame((()=>{i.scrollTo({top:0,left:this.calculateMoveStep()*t,behavior:"smooth"})}))}processScrollbarWidth(){const t=this.getContentNode();t&&(this.el.style.setProperty("--vviinn-progressbar-width",t.clientWidth*((t.scrollLeft+t.clientWidth)/t.scrollWidth)+"px"),this.activeContentGroup=this.getActiveGroupIndex())}showBullets(){return"grid"===this.mode&&this.showScroll}showScrollbar(){return"continuity"===this.mode&&this.showScroll}getClassMap(){return{[this.mode]:!0,"show-scrollbar":this.showScrollbar()}}renderRecommendation(t,s){return i("vviinn-product-card",{part:"product-part",productId:t.productId,productTitle:t.title,productType:t.productType,deeplink:t.deeplink,image:t.image.thumbnail,brand:t.brand,imageWidth:this.imageWidth,imageRatio:1,price:t.price.actual,salePrice:t.price.sale,responsive:"grid"===this.mode,dimmedBackground:"continuity"===this.mode,campaignTypeId:this.campaignTypeId,index:s,widgetElementId:this.widgetElementId,widgetVersion:this.widgetVersion,addToBasketShow:this.addToBasketShow,mode:this.mode})}renderRecommendationGroup(t){return i("div",{class:H,part:"items-group"},...t)}renderRecommendationGroups(t){return t.map((t=>this.renderRecommendationGroup(t)))}renderRecommendations(){return"grid"===this.mode?this.renderGrid():this.renderRecommendationsElements()}renderRecommendationsElements(){return this.recommendations.map(((t,i)=>this.renderRecommendation(t,i)))}renderGrid(){const t=this.renderRecommendationsElements(),i=o.chunksOf(this.getColumnsNumber())(t);return this.renderRecommendationGroups(i)}renderBullets(){const t=Math.ceil(this.recommendations.length/this.getColumnsNumber());return Array.from(Array(t).keys()).map((t=>i("div",{class:{bullet:!0,active:this.activeContentGroup===t},onClick:()=>this.scroll(t)})))}render(){return i(s,{class:this.getClassMap()},i("div",{class:Object.assign({body:!0},this.getClassMap())},i("button",{class:"prev",onClick:()=>this.showPrev(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isFirstGroup()},i(S,null)),i("div",{class:this.getContentClassMap(),onScroll:()=>this.processScrollbarWidth()},this.renderRecommendations()),i("button",{class:"next",onClick:()=>this.showNext(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isLastGroup()},i(S,null))),this.showBullets()&&i("div",{class:"bullets"},this.renderBullets()))}get el(){return e(this)}};K.style=":host{--vviinn-progressbar-width:0;--vviinn-carousel-item-width:150px;--vviinn-carousel-columns-internal:var(--vviinn-carousel-columns, 4);--vviinn-carousel-image-width-system:140px}.body{display:flex;position:relative;width:var(--vviinn-carousel-content-width);flex-direction:column}.content-wrapper *{box-sizing:border-box}.content-wrapper{overflow-y:hidden;overflow-x:auto;flex-grow:1}.bullets{margin-top:16px;display:flex;flex-direction:row;grid-gap:24px;justify-content:center}.bullet{width:10px;height:10px;background:#e0e0e0;border-radius:50%;cursor:pointer}.bullet.active{background:#161616}.content:not(.show-scrollbar),.content.grid{scrollbar-color:#fff0 #fff0}.content:not(.show-scrollbar)::-webkit-scrollbar,.content.grid::-webkit-scrollbar{opacity:0}.content{display:flex;flex-direction:row;grid-gap:8px;overflow-y:hidden;overflow-x:auto;flex-grow:1;padding-bottom:16px}.content.left>*{scroll-snap-align:start}.content.right>*{scroll-snap-align:end}:host(.continuity) button{border-radius:2px}:host(.grid) button{border-radius:50%}button{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}button{fill:#525252}button:disabled{display:none}button.prev svg{transform:rotate(180deg);margin-left:-5px}.prev{left:0}.next{right:0}.items-group{display:grid;grid-gap:16px;grid-template-columns:repeat(var(--vviinn-carousel-columns-internal), 1fr);min-width:100%}vviinn-product-card::part(price-container){text-align:center}:host(.classic) vviinn-product-card::part(title),:host(.classic) vviinn-product-card::part(brand),:host(.classic) vviinn-product-card::part(type){text-align:center}@media (max-width: 480px){:host(.modern) button{display:none}.items-group{grid-template-columns:repeat(2, 1fr)}}";class J{sendImpression(t){var i,s,e;gtag("event","view_item_list",{items:[{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list_name:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}]})}sendClick(t){var i,s,e;gtag("event","select_content",{content_type:"product",items:[{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list_name:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}]})}}class Q{constructor(){ga("require","ec")}convertProduct(t){var i,s,e;return{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}}sendImpression(t){ga("ec:addImpression",this.convertProduct(t))}sendClick(t){var i,s,e;ga("ec:addProduct",{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}),ga("ec:setAction","click",{list:"VI VPR View"})}}const X=a.getMonoid(h.first()).concat(c.pipe(a.fromNullable(window.gtag),a.map((()=>new J))),c.pipe(a.fromNullable(window.ga),a.map((()=>new Q))));function Y(t,i,s){return function(e){for(var n=Array(s.length+1),r=0;r<s.length;r++)n[r]=s[r];return n[s.length]=e,0===i?t.apply(null,n):Y(t,i-1,n)}}var Z={1:function(t){return[t]},2:function(t){return function(i){return[t,i]}},3:function(t){return function(i){return function(s){return[t,i,s]}}},4:function(t){return function(i){return function(s){return function(e){return[t,i,s,e]}}}},5:function(t){return function(i){return function(s){return function(e){return function(n){return[t,i,s,e,n]}}}}}};function tt(t){return d.call(Z,t)||(Z[t]=Y(l,t-1,[])),Z[t]}const it=/fit\/\d+\//,st=(t,i)=>c.pipe((t=>c.pipe(t.match(it),u.fromNullable(t),u.map((()=>t))))(t),u.map((t=>t.replace(it,`fit/${i}/`))),u.getOrElse((()=>t))),et=(t,s)=>t.deeplink?i("a",{class:t.part,part:t.part,href:t.deeplink},s):s,nt=t=>{const s=t.priceType,e=new Intl.NumberFormat(t.locale,{minimumFractionDigits:2}).format(t.price),n=t.prefix?i("span",{part:"price-prefix"},t.prefix+" "):null,r=t.currency?i("span",{part:"currency"}," "+t.currency):null;return i("span",{class:"price-amount",part:"price-amount"+(s?"-"+s:"")},n,e,r)},rt=t=>i("span",{class:"price-container",part:"price-container"},t.salePrice?[i("span",{class:"price-sale",part:"price-sale"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.salePrice,locale:t.locale,priceType:"sale"})),i("span",{class:"price-outdated",part:"price-outdated"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"outdated"}))]:i("span",{class:"price-regular",part:"price-regular"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"regular"}))),ot=class{constructor(i){t(this,i),this.vviinnProductLoad=n(this,"vviinnProductLoad",7),this.vviinnProductView=n(this,"vviinnProductView",7),this.vviinnProductClick=n(this,"vviinnProductClick",7),this.vviinnAddToBasket=n(this,"vviinnAddToBasket",7),this.vviinnAuxClick=n(this,"vviinnAuxClick",7),this.productData=null,this.intersectionCallback=t=>{t.some((t=>t.isIntersecting))&&(c.pipe(X,a.map((t=>t.sendImpression(this.getProduct())))),this.vviinnProductView.emit(this.productData),this.intersectionObserver.disconnect())},this.brand=void 0,this.currency=void 0,this.deeplink=void 0,this.image=void 0,this.imageRatio=1,this.imageWidth=200,this.locale=void 0,this.price=void 0,this.pricePrefix=void 0,this.productId=void 0,this.productTitle=void 0,this.productType=void 0,this.salePrice=void 0,this.responsive=!1,this.dimmedBackground=!1,this.mode=void 0,this.addToBasketShow=void 0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.buttonElementId=void 0,this.widgetVersion=void 0,this.index=0,this.imageLoaded=!1}connectedCallback(){this.productData=this.getProductData()}componentWillLoad(){_(this,this.el)}getWidgetType(){return"VPR"===this.campaignTypeId||"VCS"===this.campaignTypeId?"VPR":"VPS"}getProductData(){var t;return{productId:this.productId,productRank:this.index,productName:this.productTitle,productType:this.productType,widgetType:this.getWidgetType(),campaignTypeId:this.campaignTypeId,campaignTypeName:j[this.campaignTypeId],widgetId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.widgetElementId,widgetVersion:this.widgetVersion}}componentDidLoad(){this.vviinnProductLoad.emit(this.productData),this.intersectionObserver=new IntersectionObserver(this.intersectionCallback.bind(this.imageElement),{threshold:1}),this.intersectionObserver.observe(this.imageElement),this.el.shadowRoot.querySelectorAll("a").forEach((t=>{t.addEventListener("click",(t=>{t.preventDefault(),t.stopImmediatePropagation(),this.vviinnProductClick.emit(Object.assign(Object.assign({},this.productData),{clickEvent:t})),c.pipe(X,a.match((()=>null),(t=>t.sendClick(this.getProduct()))))})),t.addEventListener("auxclick",(()=>{this.vviinnAuxClick.emit(Object.assign({},this.productData))}))}))}getProduct(){return p.results.find((t=>t.productId===this.productId))}renderImage(){const t={width:this.imageWidth,height:this.imageWidth*this.imageRatio,src:this.image,title:this.productTitle,lazy:!1,ref:t=>{this.imageElement=t}};return this.responsive?((t,s=(()=>{}))=>i("picture",null,i("img",{loading:t.lazy?"lazy":"eager",part:"image",class:"image responsive",src:st(t.src,t.width),alt:t.title,ref:t.ref,onLoad:s})))(t):((t,s=(()=>{}))=>i("picture",null,i("img",{loading:t.lazy?"lazy":"eager",part:"image",class:"image",width:t.width,height:t.height,src:st(t.src,t.width),alt:t.title,ref:t.ref,onLoad:s})))(t)}render(){var t,e,n;return i(s,{part:"product-card",class:{dimmed:this.dimmedBackground},exportparts:"brand, currency, deeplink, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, basket-button"},i(et,{deeplink:this.deeplink,part:"image-link"},this.renderImage()),i(et,{deeplink:this.deeplink,part:"deeplink"},i("span",{class:"title",part:"title"},this.productTitle)),i("span",{class:"brand",part:"brand"},this.brand),i("span",{class:"type",part:"type"},this.productType),i(rt,{prefix:null!==(t=this.pricePrefix)&&void 0!==t?t:v.pricePrefix,currency:null!==(e=this.currency)&&void 0!==e?e:v.currencySign,price:this.price,salePrice:this.salePrice,locale:null!==(n=this.locale)&&void 0!==n?n:v.locale}),this.addToBasketShow&&i("button",{class:{"basket-button":!0,"basket-button-grid":"grid"===this.mode,"basket-button-continuity ":"continuity"===this.mode},part:"basket-button",onClick:()=>{this.vviinnAddToBasket.emit(this.productData)}},i("slot",{name:"vviinn-basket-button-text"},i("span",null,V.t("basketButtonText")))))}get el(){return e(this)}};function at(t){return"function"==typeof t}function ht(t){const i=t((t=>{Error.call(t),t.stack=(new Error).stack}));return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i}ot.style=':host{align-items:center;display:flex;flex-direction:column;gap:8px;height:100%}.price-container{display:flex;flex-direction:column;margin-top:auto}.price-sale,.price-regular{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#161616}.price-outdated{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#757575;text-decoration:line-through}.product-type{word-wrap:anywhere}.image{display:grid;align-content:center;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:contain;object-fit:contain;text-align:center;box-sizing:border-box}img.responsive{width:100%;height:auto;aspect-ratio:1}.brand,.type{display:none}.title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#161616;display:-webkit-box;font-size:16px;font-style:normal;font-weight:500;line-height:24px;margin-bottom:8px;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px;margin-top:8px}.basket-button.basket-button-grid{width:100%;background:none;border:1px solid #dddddd}.basket-button.basket-button-continuity{align-self:start;background:#f7f7f7}.basket-button-continuity:hover{background:#eaeaea}.basket-button-grid:hover{background:#f7f7f7}@media (max-width: 640px){.basket-button{padding:8px 10px}}:host(.dimmed) picture::before{content:"";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}';const ct=ht((t=>function(i){t(this),this.message=i?`${i.length} errors occurred during unsubscription:\n${i.map(((t,i)=>`${i+1}) ${t.toString()}`)).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=i}));function dt(t,i){if(t){const s=t.indexOf(i);0<=s&&t.splice(s,1)}}class lt{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;const{_parentage:i}=this;if(i)if(this._parentage=null,Array.isArray(i))for(const t of i)t.remove(this);else i.remove(this);const{initialTeardown:s}=this;if(at(s))try{s()}catch(i){t=i instanceof ct?i.errors:[i]}const{_finalizers:e}=this;if(e){this._finalizers=null;for(const i of e)try{vt(i)}catch(i){t=null!=t?t:[],i instanceof ct?t=[...t,...i.errors]:t.push(i)}}if(t)throw new ct(t)}}add(t){var i;if(t&&t!==this)if(this.closed)vt(t);else{if(t instanceof lt){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(i=this._finalizers)&&void 0!==i?i:[]).push(t)}}_hasParent(t){const{_parentage:i}=this;return i===t||Array.isArray(i)&&i.includes(t)}_addParent(t){const{_parentage:i}=this;this._parentage=Array.isArray(i)?(i.push(t),i):i?[i,t]:t}_removeParent(t){const{_parentage:i}=this;i===t?this._parentage=null:Array.isArray(i)&&dt(i,t)}remove(t){const{_finalizers:i}=this;i&&dt(i,t),t instanceof lt&&t._removeParent(this)}}lt.EMPTY=(()=>{const t=new lt;return t.closed=!0,t})();const ut=lt.EMPTY;function pt(t){return t instanceof lt||t&&"closed"in t&&at(t.remove)&&at(t.add)&&at(t.unsubscribe)}function vt(t){at(t)?t():t.unsubscribe()}const gt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},mt={setTimeout(t,i,...s){const{delegate:e}=mt;return(null==e?void 0:e.setTimeout)?e.setTimeout(t,i,...s):setTimeout(t,i,...s)},clearTimeout(t){const{delegate:i}=mt;return((null==i?void 0:i.clearTimeout)||clearTimeout)(t)},delegate:void 0};function ft(){}const bt=yt("C",void 0,void 0);function yt(t,i,s){return{kind:t,value:i,error:s}}function wt(t){t()}class xt extends lt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,pt(t)&&t.add(this)):this.destination=St}static create(t,i,s){return new Tt(t,i,s)}next(t){this.isStopped?Rt(function(t){return yt("N",t,void 0)}(t),this):this._next(t)}error(t){this.isStopped?Rt(yt("E",void 0,t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Rt(bt,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const kt=Function.prototype.bind;function Ct(t,i){return kt.call(t,i)}class It{constructor(t){this.partialObserver=t}next(t){const{partialObserver:i}=this;if(i.next)try{i.next(t)}catch(t){Pt(t)}}error(t){const{partialObserver:i}=this;if(i.error)try{i.error(t)}catch(t){Pt(t)}else Pt(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(t){Pt(t)}}}class Tt extends xt{constructor(t,i,s){let e;if(super(),at(t)||!t)e={next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=s?s:void 0};else{let i;this&>.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),e={next:t.next&&Ct(t.next,i),error:t.error&&Ct(t.error,i),complete:t.complete&&Ct(t.complete,i)}):e=t}this.destination=new It(e)}}function Pt(t){var i;i=t,mt.setTimeout((()=>{const{onUnhandledError:t}=gt;if(!t)throw i;t(i)}))}function Rt(t,i){const{onStoppedNotification:s}=gt;s&&mt.setTimeout((()=>s(t,i)))}const St={closed:!0,next:ft,error:function(t){throw t},complete:ft},Vt="function"==typeof Symbol&&Symbol.observable||"@@observable";function _t(t){return t}class jt{constructor(t){t&&(this._subscribe=t)}lift(t){const i=new jt;return i.source=this,i.operator=t,i}subscribe(t,i,s){const e=(n=t)&&n instanceof xt||function(t){return t&&at(t.next)&&at(t.error)&&at(t.complete)}(n)&&pt(n)?t:new Tt(t,i,s);var n;return wt((()=>{const{operator:t,source:i}=this;e.add(t?t.call(e,i):i?this._subscribe(e):this._trySubscribe(e))})),e}_trySubscribe(t){try{return this._subscribe(t)}catch(i){t.error(i)}}forEach(t,i){return new(i=Et(i))(((i,s)=>{const e=new Tt({next:i=>{try{t(i)}catch(t){s(t),e.unsubscribe()}},error:s,complete:i});this.subscribe(e)}))}_subscribe(t){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(t)}[Vt](){return this}pipe(...t){return(0===(i=t).length?_t:1===i.length?i[0]:function(t){return i.reduce(((t,i)=>i(t)),t)})(this);var i}toPromise(t){return new(t=Et(t))(((t,i)=>{let s;this.subscribe((t=>s=t),(t=>i(t)),(()=>t(s)))}))}}function Et(t){var i;return null!==(i=null!=t?t:gt.Promise)&&void 0!==i?i:Promise}jt.create=t=>new jt(t);const At=ht((t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}));class Ot extends jt{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){const i=new $t(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new At}next(t){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}}))}error(t){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;const{observers:i}=this;for(;i.length;)i.shift().error(t)}}))}complete(){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:t}=this;for(;t.length;)t.shift().complete()}}))}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){const{hasError:i,isStopped:s,observers:e}=this;return i||s?ut:(this.currentObservers=null,e.push(t),new lt((()=>{this.currentObservers=null,dt(e,t)})))}_checkFinalizedStatuses(t){const{hasError:i,thrownError:s,isStopped:e}=this;i?t.error(s):e&&t.complete()}asObservable(){const t=new jt;return t.source=this,t}}Ot.create=(t,i)=>new $t(t,i);class $t extends Ot{constructor(t,i){super(),this.destination=t,this.source=i}next(t){var i,s;null===(s=null===(i=this.destination)||void 0===i?void 0:i.next)||void 0===s||s.call(i,t)}error(t){var i,s;null===(s=null===(i=this.destination)||void 0===i?void 0:i.error)||void 0===s||s.call(i,t)}complete(){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===i||i.call(t)}_subscribe(t){var i,s;return null!==(s=null===(i=this.source)||void 0===i?void 0:i.subscribe(t))&&void 0!==s?s:ut}}const Wt=c.flow((t=>`Bearer ${t}`),(t=>new Headers({Authorization:t})),(t=>({headers:t}))),zt=(Bt=x,function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];for(var s=t.length,e=tt(s),n=Bt.map(t[0],e),r=1;r<s;r++)n=Bt.ap(n,t[r]);return n});var Bt;const Lt=(t,i={})=>g(zt(y(),w),b,m(f(t,i))),Nt=t=>i=>s=>e=>n=>{const r=c.pipe(e,k(encodeURIComponent),C((()=>{const e=[];i&&e.push(`color=${i}`),s&&e.push(s);const n=I(e);return`product/${t}/similar-products${n}`}),(e=>{const n=[];e&&n.push(`campaigns=${e}`),i&&n.push(`color=${i}`),s&&n.push(s);const r=I(n);return`product/${t}/similar-products${r}`})));return Lt(r,n)},Dt=t=>i=>s=>e=>n=>{const r=c.pipe(e,k(encodeURIComponent),C((()=>{const e=[];i&&e.push(`color=${i}`),s&&e.push(s);const n=I(e);return`product/${t}/cross-selling-products${n}`}),(e=>{const n=[];e&&n.push(`campaigns=${e}`),i&&n.push(`color=${i}`),s&&n.push(s);const r=I(n);return`product/${t}/cross-selling-products${r}`})));return Lt(r,n)},Mt={de:{translation:{noResultText:"Keine Ergebnisse! Versuche es bitte später erneut.",basketButtonText:"In den Warenkorb"}},en:{translation:{noResultText:"No results! Please, try again later.",basketButtonText:"Add to Basket"}}};var Ft=function(t,i){var s={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&i.indexOf(e)<0&&(s[e]=t[e]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(e=Object.getOwnPropertySymbols(t);n<e.length;n++)i.indexOf(e[n])<0&&Object.prototype.propertyIsEnumerable.call(t,e[n])&&(s[e[n]]=t[e[n]])}return s};const Ut=class{constructor(i){t(this,i),this.vviinnWidgetLoad=n(this,"vviinnWidgetLoad",7),this.vviinnProductLoad=n(this,"vviinnProductLoad",7),this.vviinnProductView=n(this,"vviinnProductView",7),this.vviinnProductClick=n(this,"vviinnProductClick",7),this.vviinnResultLoad=n(this,"vviinnResultLoad",7),this.vviinnResultView=n(this,"vviinnResultView",7),this.vviinnNoResult=n(this,"vviinnNoResult",7),this.vviinnAddToBasket=n(this,"vviinnAddToBasket",7),this.globalSlotsChanged=n(this,"globalSlotsChanged",7),this.vviinnRecommendationsLoaded=n(this,"vviinnRecommendationsLoaded",7),this.vviinnWidgetOpen=n(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=n(this,"vviinnWidgetClose",7),this.productImageLoadedSubject=new Ot,this.resultViewed=!1,this.setTrackingDeactivated=t=>{"rejected"===t.status&&(this.trackingDeactivated=!0)},this.blockTitle="Recommended products",this.imageRatio=1,this.imageWidth=300,this.productId=void 0,this.token=void 0,this.currencySign="€",this.pricePrefix="",this.mode="continuity",this.campaignType="VPR",this.locale="de-DE",this.campaigns="",this.color="",this.gridArrowsDynamic=!1,this.noResultText="",this.noResultShow=!0,this.showScroll=!0,this.cssUrl=null,this.excluded="",this.productDetailNewTab=!1,this.addToBasketShow=!1,this.apiPath="https://api.vviinn.com",this.useCarousel=!0,this.showingInButton=!1,this.buttonElementId=void 0,this.closed=void 0,this.opened=void 0,this.recommendations=[],this.trackingDeactivated=!1,this.hasErrorOnLoad=!1}getBasicEventData(){return{widgetType:"VPR",campaignTypeId:this.campaignType,campaignTypeName:j[this.campaignType],widgetId:this.id,widgetVersion:$}}handleOpenLink(t,i){if(this.productDetailNewTab||i.ctrlKey||i.metaKey){let i=window.open();i?i.location.href=t:window.location.href=t}else window.location.href=t}handleProductIdChange(){this.getRecommendations()}handleCampaignTypeChange(){this.getRecommendations()}handleCampaignsChange(){this.getRecommendations()}handleApiPathChange(t){v.apiPath=t,this.getRecommendations()}trackWidgetOpen(){this.opened&&(this.vviinnWidgetOpen.emit(this.getBasicEventData()),this.trackWidgetEvent("open"))}trackWidgetClose(){this.closed&&(this.vviinnWidgetClose.emit(this.getBasicEventData()),this.trackWidgetEvent("close"))}componentDidRender(){if(this.showingInButton&&this.closed)return;const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}connectedCallback(){var t;v.apiPath=this.apiPath,v.currencySign=this.currencySign,v.locale=this.locale,this.id=null!==(t=this.buttonElementId)&&void 0!==t?t:this.el.id,this.uiSessionId=W(),this.trackingApi=z(this.apiPath,this.token),this.getRecommendations(),V.init({lng:this.locale,fallbackLng:"de-DE",resources:Mt}),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}async componentWillLoad(){v.pricePrefix=this.pricePrefix,v.currencySign=this.currencySign,this.excluded&&(this.excluded=T(this.excluded))}trackProductLoad({detail:t}){this.productImageLoadedSubject.next(t.productId);const i=this.getProductTrackEvent(t,"load");i&&this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}trackProductView({detail:t}){this.resultViewed||(this.resultViewed=!0,this.vviinnResultView.emit(this.getBasicEventData()),this.trackResultEvent("view"));const i=this.getProductTrackEvent(t,"view");i&&this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}async trackProductClick({detail:t}){const{productId:i,clickEvent:s}=t,e=this.recommendations.find((t=>t.productId===i));if(!e||!e.deeplink)return;const n=this.getProductTrackEvent(t,"click");this.trackingDeactivated?this.handleOpenLink(e.deeplink,s):await this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated).finally((()=>{this.handleOpenLink(e.deeplink,s)}))}async trackAuxClick({detail:t}){const{productId:i}=t,s=this.recommendations.find((t=>t.productId===i));if(!s||!s.deeplink)return;const e=this.getProductTrackEvent(t,"click");this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}async trackAddToBasket({detail:t}){const{productRank:i,productId:s}=t,e=Ft(t,["productRank","productId","campaignTypeId","widgetType"]);let n;const r=Object.assign({session_id:this.uiSessionId,rank:i,product:s},e);"VCS"===this.campaignType?n=B(r):"VPR"===this.campaignType&&(n=L(r)),this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated)}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Ft(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({action:t,session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=N(n):"VPR"===this.campaignType&&(e=D(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Ft(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=M(t)(n):"VPR"===this.campaignType&&(e=F(t)(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}getProductTrackEvent(t,i){if(this.trackingDeactivated)return null;const{productRank:s,productId:e,campaignTypeId:n}=t,r=Ft(t,["productRank","productId","campaignTypeId","widgetType","clickEvent"]);let o;const a=Object.assign({session_id:this.uiSessionId,rank:s,product:e},r);return"VCS"===n?o=U(i)(a):"VPR"===n&&(o=G(i)(a)),o}async getRecommendations(){if(void 0===this.productId||void 0===this.token)return;const t=this.campaignType.length>0?this.campaignType:"VPR",i=Wt(this.token),s=c.pipe(P.of((t=>c.pipe(E(t),A((()=>Nt),(()=>Dt))))(t)),P.ap(P.of(this.productId)),P.ap(P.of(this.color)),P.ap(P.of(this.excluded)),P.ap(P.of(R(this.campaigns))),P.ap(P.of(i)),P.flatten),e=await s();c.pipe(e,u.fold((t=>{this.handleError(t),this.vviinnNoResult.emit(this.getBasicEventData()),this.vviinnRecommendationsLoaded.emit()}),(t=>this.handleRecommendationsSuccess(t))))}handleError(t){this.hasErrorOnLoad=!0}handleRecommendationsSuccess(t){var i;this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.recommendations=null!==(i=null==t?void 0:t.extended)&&void 0!==i?i:t,p.results=this.recommendations,this.productIds=this.recommendations.map((t=>t.productId)),this.productImageLoadedSubject.subscribe((t=>{this.productIds=this.productIds.filter((i=>i!==t)),0===this.productIds.length&&this.vviinnRecommendationsLoaded.emit()}))}isExternalCSS(){return this.cssUrl&&this.cssUrl.length>0}renderExternalCSS(){return this.isExternalCSS()?i("link",{href:this.cssUrl,rel:"stylesheet"}):""}render(){return 0===this.recommendations.length&&!1===this.noResultShow?null:i(s,{class:{loaded:!0,empty:0==this.recommendations.length,[this.mode]:!0},"aria-hidden":"false"},this.addToBasketShow&&i(O,null),i(r,null,this.renderExternalCSS(),i("style",null,v.fallbackStyles),i("h2",{part:"recommendations-title"},this.blockTitle),this.recommendations.length>0&&(this.useCarousel?this.renderCarousel():this.renderResults()),0===this.recommendations.length&&this.hasErrorOnLoad&&i("p",{class:"no-result-text"},this.noResultText.length?this.noResultText:V.t("noResultText"))))}renderRecommendation(t,s){return i("vviinn-product-card",{part:"product-part",productId:t.productId,productTitle:t.title,productType:t.productType,deeplink:t.deeplink,image:t.image.thumbnail,brand:t.brand,imageWidth:this.imageWidth,imageRatio:1,price:t.price.actual,salePrice:t.price.sale,responsive:"grid"===this.mode,addToBasketShow:this.addToBasketShow,mode:this.mode,dimmedBackground:this.useDimmedBackgroundInCard(),campaignTypeId:this.campaignType,index:s,widgetElementId:this.id,widgetVersion:$})}useDimmedBackgroundInCard(){return"continuity"===this.mode||!this.useCarousel}renderResults(){return i("div",{class:"recommendations-grid",part:"recommendations-grid"},this.recommendations.map(((t,i)=>this.renderRecommendation(t,i))))}renderCarousel(){return i("vviinn-carousel",{mode:this.mode,campaignTypeId:this.campaignType,imageWidth:this.imageWidth,showScroll:this.showScroll,recommendations:this.recommendations,widgetElementId:this.id,widgetVersion:$,gridArrowsDynamic:this.gridArrowsDynamic,addToBasketShow:this.addToBasketShow})}get el(){return e(this)}static get watchers(){return{productId:["handleProductIdChange"],campaignType:["handleCampaignTypeChange"],campaigns:["handleCampaignsChange"],apiPath:["handleApiPathChange"],opened:["trackWidgetOpen"],closed:["trackWidgetClose"]}}};Ut.style=":host{display:grid;grid-gap:1rem;width:100%}:host(:not(.loaded)){position:absolute;visibility:hidden}:host(.grid) vviinn-product-card::part(image){border:1px solid #dddddd;width:100%}h2{margin:0}vviinn-product-card::part(price-container){align-self:flex-start;text-align:left;display:flex}.results{display:grid;grid-gap:1rem}.no-result-text{font-size:20px}.visually-hidden{position:absolute;top:0;left:0;z-index:-1;height:0;width:0}h2{margin:0}:host(.grid) h2{justify-content:center}:host(.grid) vviinn-product-card::part(image){min-width:100%}:host(.grid) vviinn-product-card::part(image-link){width:100%}:host(.grid) vviinn-product-card::part(title),:host(.grid) vviinn-product-card::part(brand),:host(.grid) vviinn-product-card::part(type){text-align:center}:host(.grid) vviinn-product-card::part(price-container){align-self:center}:host(.continuity) vviinn-product-card::part(title),:host(.continuity) vviinn-product-card::part(brand),:host(.continuity) vviinn-product-card::part(type),:host(.continuity) vviinn-product-card::part(deeplink){text-align:left;max-width:unset;align-self:start}";export{K as vviinn_carousel,ot as vviinn_product_card,Ut as vviinn_vpr_widget}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as e,b as t}from"./p-1e83e6ba.js";export{s as setNonce}from"./p-1e83e6ba.js";(()=>{const t=import.meta.url,i={};return""!==t&&(i.resourcesUrl=new URL(".",t).href),e(i)})().then((e=>t([["p-48a3c418",[[1,"vviinn-button",{addStyle:[4,"add-style"]}]]],["p-1b008776",[[1,"vviinn-error"]]],["p-a8515396",[[1,"vviinn-preloader"]]],["p-
|
|
1
|
+
import{p as e,b as t}from"./p-1e83e6ba.js";export{s as setNonce}from"./p-1e83e6ba.js";(()=>{const t=import.meta.url,i={};return""!==t&&(i.resourcesUrl=new URL(".",t).href),e(i)})().then((e=>t([["p-48a3c418",[[1,"vviinn-button",{addStyle:[4,"add-style"]}]]],["p-1b008776",[[1,"vviinn-error"]]],["p-a8515396",[[1,"vviinn-preloader"]]],["p-e845f9e8",[[1,"vviinn-vpr-widget",{blockTitle:[1,"block-title"],imageRatio:[2,"image-ratio"],imageWidth:[2,"image-width"],productId:[1,"product-id"],token:[1],currencySign:[1,"currency-sign"],pricePrefix:[1,"price-prefix"],mode:[1],campaignType:[1,"campaign-type"],locale:[1],campaigns:[1],color:[1],gridArrowsDynamic:[4,"grid-arrows-dynamic"],noResultText:[1,"no-result-text"],noResultShow:[4,"no-result-show"],showScroll:[4,"show-scroll"],cssUrl:[1,"css-url"],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],addToBasketShow:[4,"add-to-basket-show"],apiPath:[1,"api-path"],useCarousel:[4,"use-carousel"],showingInButton:[4,"showing-in-button"],buttonElementId:[1,"button-element-id"],closed:[4],opened:[4],recommendations:[32],trackingDeactivated:[32],hasErrorOnLoad:[32]},[[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnAddToBasket","trackAddToBasket"]]],[0,"vviinn-carousel",{mode:[1],imageWidth:[2,"image-width"],showScroll:[4,"show-scroll"],campaignTypeId:[1,"campaign-type-id"],widgetElementId:[1,"widget-element-id"],gridArrowsDynamic:[4,"grid-arrows-dynamic"],recommendations:[16],widgetVersion:[1,"widget-version"],addToBasketShow:[4,"add-to-basket-show"],moveDirection:[32],contentGroups:[32],activeContentGroup:[32],isRTL:[32]}],[1,"vviinn-product-card",{brand:[1],currency:[1],deeplink:[1],image:[1],imageRatio:[2,"image-ratio"],imageWidth:[2,"image-width"],locale:[1],price:[2],pricePrefix:[1,"price-prefix"],productId:[1,"product-id"],productTitle:[1,"product-title"],productType:[1,"product-type"],salePrice:[2,"sale-price"],responsive:[4],dimmedBackground:[4,"dimmed-background"],mode:[1],addToBasketShow:[4,"add-to-basket-show"],campaignTypeId:[1,"campaign-type-id"],widgetElementId:[1,"widget-element-id"],buttonElementId:[1,"button-element-id"],widgetVersion:[1,"widget-version"],index:[2],imageLoaded:[32]}]]],["p-774581dc",[[1,"vviinn-onboarding"],[1,"vviinn-example-images",{basicEventData:[16],exampleImagesTitle:[1,"example-images-title"]}],[1,"vviinn-image-view",{basicEventData:[16],cropper:[32]},[[0,"vviinnSelectObject","selectDetectedObject"]]],[1,"vviinn-overlayed-modal",{active:[4],resetState:[16],buttonElementId:[1,"button-element-id"],hideBackButton:[4,"hide-back-button"],widgetVersion:[1,"widget-version"]}],[1,"vviinn-empty-results"],[1,"vviinn-image-selector",{basicEventData:[16],startUpload:[4,"start-upload"],resetVpsButton:[16]}],[1,"vviinn-server-error",{handler:[16]}],[1,"vviinn-wrong-format",{handler:[16]}],[1,"search-filters",{filter:[16],basicEventData:[16],selectedFilter:[32],hideFilters:[32]}],[1,"vviinn-privacy-badge",{privacyBadgeText:[1,"privacy-badge-text"]}],[1,"vviinn-teaser"],[1,"vviinn-example-image",{src:[1],width:[2],height:[2],basicEventData:[16],selected:[32]}],[1,"vviinn-detected-object",{detectedObject:[16],basicEventData:[16],position:[32]}],[1,"vviinn-modal",{active:[1540],resetState:[16],buttonElementId:[1,"button-element-id"],widgetVersion:[1,"widget-version"],hideBackButton:[4,"hide-back-button"],slider:[32]}],[1,"vviinn-onboarding-card-1",{cardTitle:[1,"card-title"],cardText:[1,"card-text"]}],[1,"vviinn-onboarding-card-2",{cardTitle:[1,"card-title"],cardText:[1,"card-text"]}],[1,"vviinn-onboarding-card-3",{cardTitle:[1,"card-title"],cardText:[1,"card-text"]}],[1,"vviinn-overlay"],[1,"vviinn-slide"],[1,"vviinn-slider",{showBullets:[4,"show-bullets"],position:[514],showArrows:[4,"show-arrows"],elementsCount:[32],internalPosition:[32],swipeStartPosition:[32],isRTL:[32]}]]],["p-5d8de6ff",[[1,"vviinn-vps-widget",{token:[1],active:[1028],currencySign:[1,"currency-sign"],locale:[1],campaignId:[1,"campaign-id"],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],imageResolutionWidth:[2,"image-resolution-width"],apiPath:[1,"api-path"],showingInButton:[4,"showing-in-button"],buttonElementId:[1,"button-element-id"],buttonPressed:[4,"button-pressed"],mode:[1],resetVpsButton:[16],slidePosition:[32],width:[32],wrongImageFormat:[32],trackingDeactivated:[32]},[[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnImageCrop","trachSearchAreaChanges"],[0,"vviinnSelectObject","trackDetectedObject"],[0,"vviinnSelectFilter","trackFilter"],[0,"secondaryActionClicked","trackSecondaryAction"]]]]],["p-65ca5b81",[[1,"vviinn-vps-button",{token:[1],currencySign:[1,"currency-sign"],locale:[1],campaignId:[1,"campaign-id"],addStyle:[4,"add-style"],mode:[1],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],imageResolutionWidth:[2,"image-resolution-width"],apiPath:[1,"api-path"],buttonPressed:[32]},[[0,"vviinnWidgetClose","handleModalClosed"]]]]],["p-17b380b1",[[1,"vviinn-recommendations-sidebar",{sidebarTitle:[1,"sidebar-title"],token:[1],productId:[1,"product-id"],position:[1],sourceImage:[1,"source-image"],widgetScrollbar:[4,"widget-scrollbar"],mode:[1],campaigns:[1],campaignType:[1,"campaign-type"],color:[1],locale:[1],imageWidth:[2,"image-width"],currencySign:[1,"currency-sign"],noResultText:[1,"no-result-text"],noResultShow:[4,"no-result-show"],gridArrowsDynamic:[4,"grid-arrows-dynamic"],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],addToBasketShow:[4,"add-to-basket-show"],buttonChildren:[16],apiPath:[1,"api-path"],buttonElementId:[1,"button-element-id"],widgetVersion:[1,"widget-version"],showingInButton:[4,"showing-in-button"],state:[32]},[[16,"click","bodyClickListener"]]]]],["p-d7699839",[[1,"vviinn-vpr-button",{token:[1],productId:[1,"product-id"],position:[1],sourceImage:[1,"source-image"],sidebarTitle:[1,"sidebar-title"],modalScrollbar:[4,"modal-scrollbar"],campaigns:[1],campaignType:[1,"campaign-type"],locale:[1],color:[1],addStyle:[4,"add-style"],mode:[1],imageWidth:[2,"image-width"],currencySign:[1,"currency-sign"],noResultText:[1,"no-result-text"],noResultShow:[4,"no-result-show"],gridArrowsDynamic:[4,"grid-arrows-dynamic"],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],addToBasketShow:[4,"add-to-basket-show"],apiPath:[1,"api-path"]}]]]],e)));
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,c as t,h as e,H as s,g as a}from"./p-1e83e6ba.js";import{i as r,s as n,a as o,O as d,k as l,q as h}from"./p-987a8e9f.js";import{i as p}from"./p-2e76a5c3.js";import{v as c}from"./p-aace2b88.js";import{c as g,s as u,S as v}from"./p-5303d4a8.js";import{j as m,k as b,v as x,c as f,l as y,m as w,n as k}from"./p-da7273ce.js";const T={"de-DE":{translation:{exampleImagesTitle:"Mit den Beispielbildern die Suche direkt ausprobieren",imageUploadButtonText:"Kamera oder Bild auswählen",privacyBadgeText:"Durch das Hochladen eines Bildes willigst Du in die Verarbeitung durch unseren Partner Vviinn ein. Das Bild wird nach einer Stunde Inaktivität gelöscht.",teaserText_1:"Finde Produkte auf",teaserText_2:"einem Foto",imageSearchModalTitle:"Bildsuche",onboardingBlock:{onboardingTitleText:"So funktioniert es",onboardingCard1:{title:"Starte die Bildsuche",text:"Lade ein Bild aus Deiner Galerie hoch oder fotografiere ein Produkt mit Deiner Kamera."},onboardingCard2:{title:"Verfeiner Deine Suche",text:"Du kannst den Bildrahmen selber festlegen und so die Produkte genau auswählen."},onboardingCard3:{title:"Ohne Hintergrund",text:"Die besten Ergebnisse erhältst Du, wenn das gesuchte Objekt mit einfarbigem und hellem Hintergrund zu sehen ist."}},emptyResultsBlock:{title:"Leider nichts gefunden",text:"Leider konnten wir keine passenden Produkte finden. Bitte versuche es mit einem anderen Bildausschnitt noch einmal."}}},en:{translation:{exampleImagesTitle:"Try out the search with the example images",imageUploadButtonText:"Select camera or image",privacyBadgeText:"By uploading a picture you agree to the processing by our partner Vviinn. The image will be deleted after one hour of inactivity.",teaserText_1:"Find products in a photo",teaserText_2:"",imageSearchModalTitle:"Visual Search",onboardingBlock:{onboardingTitleText:"This is how it works",onboardingCard1:{title:"Start the Visual Search",text:"Upload a picture from your gallery or take a picture of a product with your camera."},onboardingCard2:{title:"Refine Your Search",text:"You can set the frame yourself, so you can choose exactly what you want."},onboardingCard3:{title:"Without Background",text:"For best results, display the object you are looking for against a monochrome, light background."}},emptyResultsBlock:{title:"Sorry, nothing was found",text:"Sorry, we could not find any matching products. Please try again by selecting a different area of the image."}}}};var j=function(i,t){var e={};for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&t.indexOf(s)<0&&(e[s]=i[s]);if(null!=i&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(s=Object.getOwnPropertySymbols(i);a<s.length;a++)t.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(i,s[a])&&(e[s[a]]=i[s[a]])}return e};const I=i=>/^[-+]?(\d+|Infinity)$/.test(i)?Number(i):NaN,S=i=>!h(i),B=i=>!isNaN(i),V=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.vviinnImageUpload=t(this,"vviinnImageUpload",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnImageCrop=t(this,"vviinnImageCrop",7),this.vviinnSelectObject=t(this,"vviinnSelectObject",7),this.vviinnSelectFilter=t(this,"vviinnSelectFilter",7),this.imageSource=null,this.resultLoaded=!1,this.resultViewed=!1,this.setTrackingDeactivated=i=>{"rejected"===i.status&&(this.trackingDeactivated=!0)},this.getBasicEventData=()=>{var i;return{widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:g.VPS,widgetId:null!==(i=this.buttonElementId)&&void 0!==i?i:this.id,widgetVersion:c}},this.token=void 0,this.active=!0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.apiPath="https://api.vviinn.com",this.showingInButton=!1,this.buttonElementId=void 0,this.buttonPressed=void 0,this.mode="modal",this.resetVpsButton=void 0,this.slidePosition=0,this.width=0,this.wrongImageFormat=!1,this.trackingDeactivated=!1}initResultEvents(){this.resultLoaded=!1,this.resultViewed=!1}isOnboardingSlide(){return 0===this.slidePosition}isResultSlide(){return 1===this.slidePosition}handleOpenLink(i,t){if(this.productDetailNewTab||t.ctrlKey||t.metaKey){let t=window.open();t?t.location.href=i:window.location.href=i}else window.location.href=i}componentDidLoad(){const i=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(i))}activeWatcher(i){i?(this.overflow=document.body.style.overflow,document.body.style.overflow="hidden",this.vviinnWidgetOpen.emit(this.getBasicEventData()),this.trackWidgetEvent("open")):(document.body.style.overflow=this.overflow,this.initResultEvents())}buttonPressedWatcher(i){i&&"modal"===this.mode&&(this.active=!0)}trackProductLoad({detail:i}){const t=this.getProductTrackEvent(i,"load");this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}trackProductView({detail:i}){this.resultViewed||(this.resultViewed=!0,this.vviinnResultView.emit(this.getBasicEventData()),this.trackResultEvent("view"));const t=this.getProductTrackEvent(i,"view");this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}async trackProductClick({detail:i}){const{productId:t,clickEvent:e}=i,s=this.getProductTrackEvent(i,"click"),a=r.results.find((i=>i.productId===t));a&&a.deeplink&&(this.trackingDeactivated?this.handleOpenLink(a.deeplink,e):await this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated).finally((()=>{this.handleOpenLink(a.deeplink,e)})))}async trackAuxClick({detail:i}){const{productId:t}=i,e=this.getProductTrackEvent(i,"click"),s=r.results.find((i=>i.productId===t));s&&s.deeplink&&(this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated))}trachSearchAreaChanges(){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),t=j(i,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"manual-selection"},t));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackDetectedObject(){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),t=j(i,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"attention-point"},t));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackFilter({detail:i}){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId"]),s=b(Object.assign({session_id:this.uiSessionId,source:this.imageSource,kind:i.kind,action:i.action},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackSecondaryAction(){this.initResultEvents()}connectedCallback(){n.apiPath=this.apiPath,n.currencySign=this.currencySign,n.locale=this.locale,p.init({lng:this.locale,fallbackLng:"de-DE",resources:T}),r.token=this.token,r.campaignId=o.pipe(this.campaignId,d.fromNullable,d.chain(d.fromPredicate(S)),d.map(I),d.chain(d.fromPredicate(B)),d.map((i=>`${i}`))),this.excluded&&(this.excluded=l(this.excluded)),r.excluded=this.excluded,this.uiSessionId=x(),this.trackingApi=f(this.apiPath,this.token),this.id=this.el.id}componentWillLoad(){u(this,this.el),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}trackWidgetEvent(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]),s=Object.assign({action:i,session_id:this.uiSessionId},e),a=y(s);this.trackingApi.trackEvent(a).then(this.setTrackingDeactivated)}getProductTrackEvent(i,t){if(this.trackingDeactivated)return null;const{productRank:e,productId:s}=i,a=j(i,["productRank","productId","campaignTypeId","widgetType","clickEvent"]),r=Object.assign({session_id:this.uiSessionId,rank:e,product:s},a);return w(t)(r)}trackResultEvent(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]);let s=k(i)(Object.assign({session_id:this.uiSessionId},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackInitialSearch(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]),s=m(Object.assign({session_id:this.uiSessionId,search_area:"full",source:i},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}handleImageSelection(i){this.imageSource=i,this.slidePosition=1,this.el.shadowRoot.querySelector("vviinn-overlayed-modal").shadowRoot.querySelector("vviinn-overlay").querySelector("vviinn-modal").shadowRoot.querySelector(".body").scrollTop=0}renderResults(){return 0===r.results.length?null:(this.resultLoaded||(this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.resultLoaded=!0),r.results.map(((i,t)=>{var s;return e("vviinn-product-card",{key:i.productId,hidden:!0,productTitle:i.title,productId:i.productId,productType:i.productType,brand:i.brand,deeplink:i.deeplink,price:i.price.actual,salePrice:i.price.sale,responsive:!0,imageWidth:this.imageResolutionWidth,image:null!==(s=i.image.thumbnail)&&void 0!==s?s:i.image.original,part:"product-card",campaignTypeId:"VPS",index:t,widgetElementId:this.id,buttonElementId:this.buttonElementId,widgetVersion:c})})))}resetState(){this.resetScroll("onboarding-block"),this.slidePosition=0,r.resetCategoryLink=void 0,r.activeIonLink=void 0,r.image=d.none,r.imageUrl=d.none,r.imageBounds=d.none,r.searchArea=d.none,r.results=[],r.filters=[],r.detectedObjects=[],r.rectangleSearchForm=void 0,r.loading=!1,this.resetScroll("results-block")}haveErrors(){return this.wrongImageFormat||r.serverError}resetScroll(i,t="auto"){this.el.shadowRoot.getElementById(i).scroll({top:0,left:0,behavior:t})}handleModalClose(){this.active=!1,this.resetState(),["onboarding-block","results-block"].forEach((i=>this.resetScroll(i))),this.trackWidgetEvent("close")}render(){var i;return e(s,null,!this.showingInButton&&e(v,null),e("vviinn-overlayed-modal",{class:{"first-screen":this.isOnboardingSlide()},active:this.active,resetState:this.resetState.bind(this),onVviinnWidgetClose:()=>this.handleModalClose(),buttonElementId:null!==(i=this.buttonElementId)&&void 0!==i?i:this.id,widgetVersion:c,hideBackButton:"upload"===this.mode&&this.showingInButton,exportparts:"secondary-action, title, close-button, example-images"},e("vviinn-slider",{showBullets:!1,position:this.slidePosition},e("vviinn-slide",{class:{"start-page":!0}},e("div",{class:{error:this.haveErrors(),"start-page_block":!0}},e("vviinn-wrong-format",{class:{hidden:!this.wrongImageFormat},handler:()=>this.wrongImageFormat=!1}),e("vviinn-server-error",{class:{hidden:!r.serverError},handler:()=>r.serverError=!1}),e("vviinn-teaser",{class:{hidden:this.haveErrors()}}),e("vviinn-image-selector",{class:{hidden:this.haveErrors()},onVviinnImageUploadFinished:()=>{this.handleImageSelection("upload"),"upload"===this.mode&&this.showingInButton&&(this.active=!0)},onVviinnImageUpload:()=>{this.trackInitialSearch("upload")},onVviinnNoResult:()=>this.wrongImageFormat=!0,resetVpsButton:this.resetVpsButton,basicEventData:this.getBasicEventData(),part:"select-image_button",startUpload:this.buttonPressed&&this.showingInButton&&"upload"===this.mode},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,p.t("imageUploadButtonText"))))),e("vviinn-privacy-badge",{class:{hidden:this.haveErrors()},privacyBadgeText:p.t("privacyBadgeText")})),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",exampleImagesTitle:p.t("exampleImagesTitle"),onVviinnImageUploadFinished:()=>this.handleImageSelection("example"),onVviinnImageUpload:()=>{this.trackInitialSearch("example")},onVviinnNoResult:()=>this.resetScroll("onboarding-block","smooth"),basicEventData:this.getBasicEventData()})))),e("vviinn-slide",{class:{"results-page":!0,active:this.isResultSlide()}},e("div",{class:"image-wrapper"},this.isResultSlide()&&e("vviinn-image-view",{basicEventData:this.getBasicEventData()}),e("div",{class:"filters-wrapper"},e("div",{class:"filters"},r.filters.map((i=>e("search-filters",{filter:i,basicEventData:this.getBasicEventData()})))))),e("div",{id:"results-block",class:"products-wrapper"},e("div",{class:{"nothing-found":!0,hidden:r.results.length>0}},e("vviinn-empty-results",null),e("vviinn-onboarding",null)),e("div",{class:{hidden:r.results.length<=0,products:!0}},this.active&&this.renderResults()))))))}get el(){return a(this)}static get watchers(){return{active:["activeWatcher"],buttonPressed:["buttonPressedWatcher"]}}};V.style=":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;padding:0;grid-gap:24px;overflow-y:auto;position:relative;width:100%}@media (max-width: 768px){#onboarding-block{padding:48px}}@media (max-width: 480px){#onboarding-block{padding:20px}}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{width:100%;align-content:center;align-items:start;box-sizing:border-box;display:grid;grid-gap:32px 16px;grid-template-columns:repeat(auto-fill, minmax(130px, 1fr));justify-items:center;padding:24px;position:absolute}.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 1fr;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:8px;box-sizing:border-box;color:#161616;font-size:14px;font-weight:400;line-height:20px}search-filters::part(show-more-filters){display:flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid #f4f4f4;min-width:40px;height:40px;border-radius:100px;box-sizing:border-box;color:#161616}search-filters::part(show-more-filters):hover{background:#eaeaea}search-filters::part(filter active){background:var(--color-primary, var(--color-primary-system));color:white}.filters-wrapper{overflow-x:auto;transform:translateX(-24px);min-width:calc(100% + 48px)}.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){.results-page>*{box-sizing:border-box;padding:24px}.filters-wrapper{min-width:calc(100% + 40px)}.start-page{grid-gap:24px;padding:24px 0 48px 0}.start-page.active{grid-template-columns:unset}.start-page:not(.active){overflow:hidden}.results-page{grid-template-rows:min-content;grid-template-columns:unset}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}vviinn-teaser{margin-top:24px}.onboarding-wrapper{position:static;width:unset;padding:unset;box-sizing:border-box}.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: 480px){.start-page{padding-top:0}.start-page_block{padding:20px}.onboarding-wrapper{padding:0}.upload-button-content{grid-gap:10px}}@media (max-width: 380px){.results-page>*{padding:12px}.products{grid-gap:24px 10px}}vviinn-wrong-format,vviinn-server-error{width:280px;align-self:center;justify-self:center}";export{V as vviinn_vps_widget}
|
|
1
|
+
import{r as i,c as t,h as e,H as s,g as a}from"./p-1e83e6ba.js";import{i as r,s as n,a as o,O as d,k as l,q as h}from"./p-987a8e9f.js";import{i as p}from"./p-2e76a5c3.js";import{v as c}from"./p-d29b42cc.js";import{c as g,s as u,S as v}from"./p-5303d4a8.js";import{j as m,k as b,v as x,c as f,l as y,m as w,n as k}from"./p-da7273ce.js";const T={"de-DE":{translation:{exampleImagesTitle:"Mit den Beispielbildern die Suche direkt ausprobieren",imageUploadButtonText:"Kamera oder Bild auswählen",privacyBadgeText:"Durch das Hochladen eines Bildes willigst Du in die Verarbeitung durch unseren Partner Vviinn ein. Das Bild wird nach einer Stunde Inaktivität gelöscht.",teaserText_1:"Finde Produkte auf",teaserText_2:"einem Foto",imageSearchModalTitle:"Bildsuche",onboardingBlock:{onboardingTitleText:"So funktioniert es",onboardingCard1:{title:"Starte die Bildsuche",text:"Lade ein Bild aus Deiner Galerie hoch oder fotografiere ein Produkt mit Deiner Kamera."},onboardingCard2:{title:"Verfeiner Deine Suche",text:"Du kannst den Bildrahmen selber festlegen und so die Produkte genau auswählen."},onboardingCard3:{title:"Ohne Hintergrund",text:"Die besten Ergebnisse erhältst Du, wenn das gesuchte Objekt mit einfarbigem und hellem Hintergrund zu sehen ist."}},emptyResultsBlock:{title:"Leider nichts gefunden",text:"Leider konnten wir keine passenden Produkte finden. Bitte versuche es mit einem anderen Bildausschnitt noch einmal."}}},en:{translation:{exampleImagesTitle:"Try out the search with the example images",imageUploadButtonText:"Select camera or image",privacyBadgeText:"By uploading a picture you agree to the processing by our partner Vviinn. The image will be deleted after one hour of inactivity.",teaserText_1:"Find products in a photo",teaserText_2:"",imageSearchModalTitle:"Visual Search",onboardingBlock:{onboardingTitleText:"This is how it works",onboardingCard1:{title:"Start the Visual Search",text:"Upload a picture from your gallery or take a picture of a product with your camera."},onboardingCard2:{title:"Refine Your Search",text:"You can set the frame yourself, so you can choose exactly what you want."},onboardingCard3:{title:"Without Background",text:"For best results, display the object you are looking for against a monochrome, light background."}},emptyResultsBlock:{title:"Sorry, nothing was found",text:"Sorry, we could not find any matching products. Please try again by selecting a different area of the image."}}}};var j=function(i,t){var e={};for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&t.indexOf(s)<0&&(e[s]=i[s]);if(null!=i&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(s=Object.getOwnPropertySymbols(i);a<s.length;a++)t.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(i,s[a])&&(e[s[a]]=i[s[a]])}return e};const I=i=>/^[-+]?(\d+|Infinity)$/.test(i)?Number(i):NaN,S=i=>!h(i),B=i=>!isNaN(i),V=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.vviinnImageUpload=t(this,"vviinnImageUpload",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnImageCrop=t(this,"vviinnImageCrop",7),this.vviinnSelectObject=t(this,"vviinnSelectObject",7),this.vviinnSelectFilter=t(this,"vviinnSelectFilter",7),this.imageSource=null,this.resultLoaded=!1,this.resultViewed=!1,this.setTrackingDeactivated=i=>{"rejected"===i.status&&(this.trackingDeactivated=!0)},this.getBasicEventData=()=>{var i;return{widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:g.VPS,widgetId:null!==(i=this.buttonElementId)&&void 0!==i?i:this.id,widgetVersion:c}},this.token=void 0,this.active=!0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.apiPath="https://api.vviinn.com",this.showingInButton=!1,this.buttonElementId=void 0,this.buttonPressed=void 0,this.mode="modal",this.resetVpsButton=void 0,this.slidePosition=0,this.width=0,this.wrongImageFormat=!1,this.trackingDeactivated=!1}initResultEvents(){this.resultLoaded=!1,this.resultViewed=!1}isOnboardingSlide(){return 0===this.slidePosition}isResultSlide(){return 1===this.slidePosition}handleOpenLink(i,t){if(this.productDetailNewTab||t.ctrlKey||t.metaKey){let t=window.open();t?t.location.href=i:window.location.href=i}else window.location.href=i}componentDidLoad(){const i=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(i))}activeWatcher(i){i?(this.overflow=document.body.style.overflow,document.body.style.overflow="hidden",this.vviinnWidgetOpen.emit(this.getBasicEventData()),this.trackWidgetEvent("open")):(document.body.style.overflow=this.overflow,this.initResultEvents())}buttonPressedWatcher(i){i&&"modal"===this.mode&&(this.active=!0)}trackProductLoad({detail:i}){const t=this.getProductTrackEvent(i,"load");this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}trackProductView({detail:i}){this.resultViewed||(this.resultViewed=!0,this.vviinnResultView.emit(this.getBasicEventData()),this.trackResultEvent("view"));const t=this.getProductTrackEvent(i,"view");this.trackingApi.trackEvent(t).then(this.setTrackingDeactivated)}async trackProductClick({detail:i}){const{productId:t,clickEvent:e}=i,s=this.getProductTrackEvent(i,"click"),a=r.results.find((i=>i.productId===t));a&&a.deeplink&&(this.trackingDeactivated?this.handleOpenLink(a.deeplink,e):await this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated).finally((()=>{this.handleOpenLink(a.deeplink,e)})))}async trackAuxClick({detail:i}){const{productId:t}=i,e=this.getProductTrackEvent(i,"click"),s=r.results.find((i=>i.productId===t));s&&s.deeplink&&(this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated))}trachSearchAreaChanges(){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),t=j(i,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"manual-selection"},t));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackDetectedObject(){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),t=j(i,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"attention-point"},t));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackFilter({detail:i}){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId"]),s=b(Object.assign({session_id:this.uiSessionId,source:this.imageSource,kind:i.kind,action:i.action},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackSecondaryAction(){this.initResultEvents()}connectedCallback(){n.apiPath=this.apiPath,n.currencySign=this.currencySign,n.locale=this.locale,p.init({lng:this.locale,fallbackLng:"de-DE",resources:T}),r.token=this.token,r.campaignId=o.pipe(this.campaignId,d.fromNullable,d.chain(d.fromPredicate(S)),d.map(I),d.chain(d.fromPredicate(B)),d.map((i=>`${i}`))),this.excluded&&(this.excluded=l(this.excluded)),r.excluded=this.excluded,this.uiSessionId=x(),this.trackingApi=f(this.apiPath,this.token),this.id=this.el.id}componentWillLoad(){u(this,this.el),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}trackWidgetEvent(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]),s=Object.assign({action:i,session_id:this.uiSessionId},e),a=y(s);this.trackingApi.trackEvent(a).then(this.setTrackingDeactivated)}getProductTrackEvent(i,t){if(this.trackingDeactivated)return null;const{productRank:e,productId:s}=i,a=j(i,["productRank","productId","campaignTypeId","widgetType","clickEvent"]),r=Object.assign({session_id:this.uiSessionId,rank:e,product:s},a);return w(t)(r)}trackResultEvent(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]);let s=k(i)(Object.assign({session_id:this.uiSessionId},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackInitialSearch(i){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),e=j(t,["campaignTypeId","widgetType"]),s=m(Object.assign({session_id:this.uiSessionId,search_area:"full",source:i},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}handleImageSelection(i){this.imageSource=i,this.slidePosition=1,this.el.shadowRoot.querySelector("vviinn-overlayed-modal").shadowRoot.querySelector("vviinn-overlay").querySelector("vviinn-modal").shadowRoot.querySelector(".body").scrollTop=0}renderResults(){return 0===r.results.length?null:(this.resultLoaded||(this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.resultLoaded=!0),r.results.map(((i,t)=>{var s;return e("vviinn-product-card",{key:i.productId,hidden:!0,productTitle:i.title,productId:i.productId,productType:i.productType,brand:i.brand,deeplink:i.deeplink,price:i.price.actual,salePrice:i.price.sale,responsive:!0,imageWidth:this.imageResolutionWidth,image:null!==(s=i.image.thumbnail)&&void 0!==s?s:i.image.original,part:"product-card",campaignTypeId:"VPS",index:t,widgetElementId:this.id,buttonElementId:this.buttonElementId,widgetVersion:c})})))}resetState(){this.resetScroll("onboarding-block"),this.slidePosition=0,r.resetCategoryLink=void 0,r.activeIonLink=void 0,r.image=d.none,r.imageUrl=d.none,r.imageBounds=d.none,r.searchArea=d.none,r.results=[],r.filters=[],r.detectedObjects=[],r.rectangleSearchForm=void 0,r.loading=!1,this.resetScroll("results-block")}haveErrors(){return this.wrongImageFormat||r.serverError}resetScroll(i,t="auto"){this.el.shadowRoot.getElementById(i).scroll({top:0,left:0,behavior:t})}handleModalClose(){this.active=!1,this.resetState(),["onboarding-block","results-block"].forEach((i=>this.resetScroll(i))),this.trackWidgetEvent("close")}render(){var i;return e(s,null,!this.showingInButton&&e(v,null),e("vviinn-overlayed-modal",{class:{"first-screen":this.isOnboardingSlide()},active:this.active,resetState:this.resetState.bind(this),onVviinnWidgetClose:()=>this.handleModalClose(),buttonElementId:null!==(i=this.buttonElementId)&&void 0!==i?i:this.id,widgetVersion:c,hideBackButton:"upload"===this.mode&&this.showingInButton,exportparts:"secondary-action, title, close-button, example-images"},e("vviinn-slider",{showBullets:!1,position:this.slidePosition},e("vviinn-slide",{class:{"start-page":!0}},e("div",{class:{error:this.haveErrors(),"start-page_block":!0}},e("vviinn-wrong-format",{class:{hidden:!this.wrongImageFormat},handler:()=>this.wrongImageFormat=!1}),e("vviinn-server-error",{class:{hidden:!r.serverError},handler:()=>r.serverError=!1}),e("vviinn-teaser",{class:{hidden:this.haveErrors()}}),e("vviinn-image-selector",{class:{hidden:this.haveErrors()},onVviinnImageUploadFinished:()=>{this.handleImageSelection("upload"),"upload"===this.mode&&this.showingInButton&&(this.active=!0)},onVviinnImageUpload:()=>{this.trackInitialSearch("upload")},onVviinnNoResult:()=>this.wrongImageFormat=!0,resetVpsButton:this.resetVpsButton,basicEventData:this.getBasicEventData(),part:"select-image_button",startUpload:this.buttonPressed&&this.showingInButton&&"upload"===this.mode},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,p.t("imageUploadButtonText"))))),e("vviinn-privacy-badge",{class:{hidden:this.haveErrors()},privacyBadgeText:p.t("privacyBadgeText")})),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",exampleImagesTitle:p.t("exampleImagesTitle"),onVviinnImageUploadFinished:()=>this.handleImageSelection("example"),onVviinnImageUpload:()=>{this.trackInitialSearch("example")},onVviinnNoResult:()=>this.resetScroll("onboarding-block","smooth"),basicEventData:this.getBasicEventData()})))),e("vviinn-slide",{class:{"results-page":!0,active:this.isResultSlide()}},e("div",{class:"image-wrapper"},this.isResultSlide()&&e("vviinn-image-view",{basicEventData:this.getBasicEventData()}),e("div",{class:"filters-wrapper"},e("div",{class:"filters"},r.filters.map((i=>e("search-filters",{filter:i,basicEventData:this.getBasicEventData()})))))),e("div",{id:"results-block",class:"products-wrapper"},e("div",{class:{"nothing-found":!0,hidden:r.results.length>0}},e("vviinn-empty-results",null),e("vviinn-onboarding",null)),e("div",{class:{hidden:r.results.length<=0,products:!0}},this.active&&this.renderResults()))))))}get el(){return a(this)}static get watchers(){return{active:["activeWatcher"],buttonPressed:["buttonPressedWatcher"]}}};V.style=":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;padding:0;grid-gap:24px;overflow-y:auto;position:relative;width:100%}@media (max-width: 768px){#onboarding-block{padding:48px}}@media (max-width: 480px){#onboarding-block{padding:20px}}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{width:100%;align-content:center;align-items:start;box-sizing:border-box;display:grid;grid-gap:32px 16px;grid-template-columns:repeat(auto-fill, minmax(130px, 1fr));justify-items:center;padding:24px;position:absolute}.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 1fr;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:8px;box-sizing:border-box;color:#161616;font-size:14px;font-weight:400;line-height:20px}search-filters::part(show-more-filters){display:flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid #f4f4f4;min-width:40px;height:40px;border-radius:100px;box-sizing:border-box;color:#161616}search-filters::part(show-more-filters):hover{background:#eaeaea}search-filters::part(filter active){background:var(--color-primary, var(--color-primary-system));color:white}.filters-wrapper{overflow-x:auto;transform:translateX(-24px);min-width:calc(100% + 48px)}.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){.results-page>*{box-sizing:border-box;padding:24px}.filters-wrapper{min-width:calc(100% + 40px)}.start-page{grid-gap:24px;padding:24px 0 48px 0}.start-page.active{grid-template-columns:unset}.start-page:not(.active){overflow:hidden}.results-page{grid-template-rows:min-content;grid-template-columns:unset}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}vviinn-teaser{margin-top:24px}.onboarding-wrapper{position:static;width:unset;padding:unset;box-sizing:border-box}.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: 480px){.start-page{padding-top:0}.start-page_block{padding:20px}.onboarding-wrapper{padding:0}.upload-button-content{grid-gap:10px}}@media (max-width: 380px){.results-page>*{padding:12px}.products{grid-gap:24px 10px}}vviinn-wrong-format,vviinn-server-error{width:280px;align-self:center;justify-self:center}";export{V as vviinn_vps_widget}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i,c as t,h as s,H as e,g as n}from"./p-1e83e6ba.js";import{v as h}from"./p-d29b42cc.js";import{a as o}from"./p-a69d3568.js";import{c as a,S as r}from"./p-5303d4a8.js";const d=class{constructor(s){i(this,s),this.vviinnWidgetLoad=t(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=t(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=t(this,"vviinnWidgetClose",7),this.vviinnImageUpload=t(this,"vviinnImageUpload",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnImageCrop=t(this,"vviinnImageCrop",7),this.vviinnSelectObject=t(this,"vviinnSelectObject",7),this.vviinnSelectFilter=t(this,"vviinnSelectFilter",7),this.globalSlotsChanged=t(this,"globalSlotsChanged",7),this.getBasicEventData=()=>({widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:a.VPS,widgetId:this.el.id,widgetVersion:h}),this.token=void 0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.addStyle=!1,this.mode="modal",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.apiPath=void 0,this.buttonPressed=!1}handleModalClosed(){this.buttonPressed=!1}componentDidLoad(){const i=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(i))}handleClick(){this.buttonPressed=!0}resetButton(){this.buttonPressed=!1}render(){return s(e,{tabindex:"0",role:"button"},s("vviinn-button",{onClick:()=>{this.handleClick()},addStyle:this.addStyle,part:"vviinn-button"},s("slot",null,s(o,null))),s(r,null),s("vviinn-vps-widget",{mode:this.mode,"currency-sign":this.currencySign,token:this.token,locale:this.locale,apiPath:this.apiPath,exportparts:"brand, deeplink, currency, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, product-card, example-images",campaignId:this.campaignId,showingInButton:!0,buttonPressed:this.buttonPressed,resetVpsButton:this.resetButton.bind(this),buttonElementId:this.el.id,active:this.buttonPressed&&"modal"===this.mode,excluded:this.excluded,productDetailNewTab:this.productDetailNewTab,imageResolutionWidth:this.imageResolutionWidth}))}get el(){return n(this)}};d.style=":host{display:block}";export{d as vviinn_vps_button}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o="2.32.0";export{o as v}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,c as t,h as s,H as h,g as n}from"./p-1e83e6ba.js";import{v as o}from"./p-
|
|
1
|
+
import{r as i,c as t,h as s,H as h,g as n}from"./p-1e83e6ba.js";import{v as o}from"./p-d29b42cc.js";import{V as e}from"./p-a69d3568.js";const v=class{constructor(s){i(this,s),this.vviinnWidgetLoad=t(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=t(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=t(this,"vviinnWidgetClose",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnAddToBasket=t(this,"vviinnAddToBasket",7),this.sidebar=null,this.sidebarCloseListener=()=>{document.body.removeChild(this.sidebar)},this.token=void 0,this.productId=void 0,this.position="bottom",this.sourceImage=null,this.sidebarTitle="Visually similar products",this.modalScrollbar=!1,this.campaigns="",this.campaignType="VPR",this.locale="de-DE",this.color="",this.addStyle=!0,this.mode="continuity",this.imageWidth=300,this.currencySign="€",this.noResultText="",this.noResultShow=!0,this.gridArrowsDynamic=!1,this.excluded="",this.productDetailNewTab=!1,this.addToBasketShow=!1,this.apiPath="https://api.vviinn.com"}render(){return s(h,{onClick:()=>{this.handleClick()},role:"button",tabindex:"0"},s("vviinn-button",{addStyle:this.addStyle,part:"vviinn-button"},s("slot",null,s(e,null))))}handleClick(){const i=document.createElement("vviinn-recommendations-sidebar");i.sidebarTitle=this.sidebarTitle,i.productId=this.productId,i.token=this.token,i.position=this.position,i.sourceImage=this.sourceImage,i.widgetScrollbar=this.modalScrollbar,i.campaigns=this.campaigns,i.campaignType=this.campaignType,i.color=this.color,i.locale=this.locale,i.mode="right"===this.position?"grid":this.mode,i.imageWidth=this.imageWidth,i.currencySign=this.currencySign,i.apiPath=this.apiPath,i.buttonElementId=this.el.id,i.noResultText=this.noResultText,i.noResultShow=this.noResultShow,i.gridArrowsDynamic=this.gridArrowsDynamic,i.productDetailNewTab=this.productDetailNewTab,i.widgetVersion=o,i.showingInButton=!0,i.excluded=this.excluded,i.addToBasketShow=this.addToBasketShow,i.buttonChildren=this.el.children,this.sidebar=i,i.addEventListener("vviinnWidgetClose",this.sidebarCloseListener),document.body.append(this.sidebar)}disconnectedCallback(){this.sidebar&&(this.sidebar.removeEventListener("vviinnWidgetClose",this.sidebarCloseListener),document.body.removeChild(this.sidebar))}get el(){return n(this)}};v.style=":host{display:block}";export{v as vviinn_vpr_button}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,h as i,H as s,g as e,c as n,F as r}from"./p-1e83e6ba.js";import{_ as o,O as a,S as h,a as c,h as d,t as l,E as u,i as p,s as v,p as g,c as m,m as f,f as b,g as y,b as w,A as x,d as k,e as C,j as I,k as T,T as P,l as R}from"./p-987a8e9f.js";import{C as S}from"./p-a69d3568.js";import{i as V}from"./p-2e76a5c3.js";import{s as _,c as j,f as E,a as A,S as O}from"./p-5303d4a8.js";import{v as $}from"./p-d29b42cc.js";import{v as W,c as z,a as B,b as L,d as N,e as D,f as M,g as F,h as U,i as G}from"./p-da7273ce.js";const q="--vviinn-carousel-image-width",H="items-group",K=class{constructor(i){t(this,i),this.columns=0,this.resizeObserver=new ResizeObserver((()=>this.handleResize())),this.mutationObserver=new MutationObserver((()=>this.cloneSlottedContent())),this.isLastGroup=()=>this.activeContentGroup===this.getContentGroups().length-1&&"grid"===this.mode,this.isFirstGroup=()=>0===this.activeContentGroup&&"grid"===this.mode,this.moveDirection="right",this.contentGroups=[],this.activeContentGroup=0,this.isRTL=!1,this.mode="continuity",this.imageWidth=140,this.showScroll=!0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.gridArrowsDynamic=void 0,this.recommendations=[],this.widgetVersion=void 0,this.addToBasketShow=void 0}componentWillLoad(){this.isRTL="rtl"===document.dir}connectedCallback(){this.setItemWidth()}disconnectedCallback(){this.resizeObserver.disconnect()}componentDidLoad(){this.setWidth(),this.processScrollbarWidth(),this.columns=this.getColumnsNumber();const t=this.el.querySelector(".content");this.mutationObserver.observe(t,{subtree:!0,childList:!0}),this.resizeObserver.observe(this.getHostParent())}getItemWidthFromDocument(){return parseInt(getComputedStyle(document.body).getPropertyValue(q))}setItemWidth(){const t=this.getItemWidthFromDocument(),i=isNaN(t)?this.imageWidth:t;this.el.style.setProperty(q,`${i}px`)}getContentClassMap(){return{content:!0,[this.moveDirection]:!0,[this.mode]:!0,"show-scrollbar":this.showScroll}}handleResize(){this.setWidth(),this.processScrollbarWidth(),this.setItemWidth();const t=this.getColumnsNumber();t!==this.columns&&(this.columns=t)}calculateMoveStep(){const t=this.getContent().map((t=>t.getBoundingClientRect().width));return t.reduce(((t,i)=>t+i),0)/t.length}getHostParent(){return this.el.parentNode.host.parentElement}setWidth(){const t=this.getHostParent();if(!t)return;const i=getComputedStyle(t),s=t.getBoundingClientRect().width-(parseInt(i["padding-right"])+parseInt(i["padding-left"]));this.el.style.setProperty("--vviinn-carousel-content-width",`${s}px`)}getParent(){return this.el.parentNode.host.parentElement}cloneSlottedContent(){this.setWidth()}getActiveGroupIndex(){var t,i;if(!(null===(i=null===(t=this.getContentNode())||void 0===t?void 0:t.getBoundingClientRect())||void 0===i?void 0:i.left))return 0;const s=this.getContentGroups().map((t=>t.getBoundingClientRect().left)).map(((t,i)=>[t,i])).filter((t=>t[0]>=0));return s.length>0?this.isRTL?s[s.length-1][1]:s[0][1]:0}getContentNode(){return this.el.querySelector(".content")}getContent(){const t=this.getContentNode().children;return Array.from(t).map((t=>t))}getColumnsNumber(){const t=getComputedStyle(this.el).getPropertyValue("--vviinn-carousel-columns-internal"),i=parseInt(t);return i&&!isNaN(i)?i:4}getContentGroups(){return Array.from(this.el.querySelectorAll(`.${H}`))}showNext(){this.moveDirection="right";const t=this.getContentNode();requestAnimationFrame((()=>{t.scrollTo({top:0,left:t.scrollLeft+this.calculateMoveStep(),behavior:"smooth"})}))}showPrev(){this.moveDirection="left";const t=this.getContentNode();requestAnimationFrame((()=>{t.scrollTo({top:0,left:t.scrollLeft-this.calculateMoveStep(),behavior:"smooth"})}))}scroll(t){const i=this.getContentNode();requestAnimationFrame((()=>{i.scrollTo({top:0,left:this.calculateMoveStep()*t,behavior:"smooth"})}))}processScrollbarWidth(){const t=this.getContentNode();t&&(this.el.style.setProperty("--vviinn-progressbar-width",t.clientWidth*((t.scrollLeft+t.clientWidth)/t.scrollWidth)+"px"),this.activeContentGroup=this.getActiveGroupIndex())}showBullets(){return"grid"===this.mode&&this.showScroll}showScrollbar(){return"continuity"===this.mode&&this.showScroll}getClassMap(){return{[this.mode]:!0,"show-scrollbar":this.showScrollbar()}}renderRecommendation(t,s){return i("vviinn-product-card",{part:"product-part",productId:t.productId,productTitle:t.title,productType:t.productType,deeplink:t.deeplink,image:t.image.thumbnail,brand:t.brand,imageWidth:this.imageWidth,imageRatio:1,price:t.price.actual,salePrice:t.price.sale,responsive:"grid"===this.mode,dimmedBackground:"continuity"===this.mode,campaignTypeId:this.campaignTypeId,index:s,widgetElementId:this.widgetElementId,widgetVersion:this.widgetVersion,addToBasketShow:this.addToBasketShow,mode:this.mode})}renderRecommendationGroup(t){return i("div",{class:H,part:"items-group"},...t)}renderRecommendationGroups(t){return t.map((t=>this.renderRecommendationGroup(t)))}renderRecommendations(){return"grid"===this.mode?this.renderGrid():this.renderRecommendationsElements()}renderRecommendationsElements(){return this.recommendations.map(((t,i)=>this.renderRecommendation(t,i)))}renderGrid(){const t=this.renderRecommendationsElements(),i=o.chunksOf(this.getColumnsNumber())(t);return this.renderRecommendationGroups(i)}renderBullets(){const t=Math.ceil(this.recommendations.length/this.getColumnsNumber());return Array.from(Array(t).keys()).map((t=>i("div",{class:{bullet:!0,active:this.activeContentGroup===t},onClick:()=>this.scroll(t)})))}render(){return i(s,{class:this.getClassMap()},i("div",{class:Object.assign({body:!0},this.getClassMap())},i("button",{class:"prev",onClick:()=>this.showPrev(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isFirstGroup()},i(S,null)),i("div",{class:this.getContentClassMap(),onScroll:()=>this.processScrollbarWidth()},this.renderRecommendations()),i("button",{class:"next",onClick:()=>this.showNext(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isLastGroup()},i(S,null))),this.showBullets()&&i("div",{class:"bullets"},this.renderBullets()))}get el(){return e(this)}};K.style=":host{--vviinn-progressbar-width:0;--vviinn-carousel-item-width:150px;--vviinn-carousel-columns-internal:var(--vviinn-carousel-columns, 4);--vviinn-carousel-image-width-system:140px}.body{display:flex;position:relative;width:var(--vviinn-carousel-content-width);flex-direction:column}.content-wrapper *{box-sizing:border-box}.content-wrapper{overflow-y:hidden;overflow-x:auto;flex-grow:1}.bullets{margin-top:16px;display:flex;flex-direction:row;grid-gap:24px;justify-content:center}.bullet{width:10px;height:10px;background:#e0e0e0;border-radius:50%;cursor:pointer}.bullet.active{background:#161616}.content:not(.show-scrollbar),.content.grid{scrollbar-color:#fff0 #fff0}.content:not(.show-scrollbar)::-webkit-scrollbar,.content.grid::-webkit-scrollbar{opacity:0}.content{display:flex;flex-direction:row;grid-gap:8px;overflow-y:hidden;overflow-x:auto;flex-grow:1;padding-bottom:16px}.content.left>*{scroll-snap-align:start}.content.right>*{scroll-snap-align:end}:host(.continuity) button{border-radius:2px}:host(.grid) button{border-radius:50%}button{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}button{fill:#525252}button:disabled{display:none}button.prev svg{transform:rotate(180deg);margin-left:-5px}.prev{left:0}.next{right:0}.items-group{display:grid;grid-gap:16px;grid-template-columns:repeat(var(--vviinn-carousel-columns-internal), 1fr);min-width:100%}vviinn-product-card::part(price-container){text-align:center}:host(.classic) vviinn-product-card::part(title),:host(.classic) vviinn-product-card::part(brand),:host(.classic) vviinn-product-card::part(type){text-align:center}@media (max-width: 480px){:host(.modern) button{display:none}.items-group{grid-template-columns:repeat(2, 1fr)}}";class J{sendImpression(t){var i,s,e;gtag("event","view_item_list",{items:[{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list_name:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}]})}sendClick(t){var i,s,e;gtag("event","select_content",{content_type:"product",items:[{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list_name:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}]})}}class Q{constructor(){ga("require","ec")}convertProduct(t){var i,s,e;return{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}}sendImpression(t){ga("ec:addImpression",this.convertProduct(t))}sendClick(t){var i,s,e;ga("ec:addProduct",{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}),ga("ec:setAction","click",{list:"VI VPR View"})}}const X=a.getMonoid(h.first()).concat(c.pipe(a.fromNullable(window.gtag),a.map((()=>new J))),c.pipe(a.fromNullable(window.ga),a.map((()=>new Q))));function Y(t,i,s){return function(e){for(var n=Array(s.length+1),r=0;r<s.length;r++)n[r]=s[r];return n[s.length]=e,0===i?t.apply(null,n):Y(t,i-1,n)}}var Z={1:function(t){return[t]},2:function(t){return function(i){return[t,i]}},3:function(t){return function(i){return function(s){return[t,i,s]}}},4:function(t){return function(i){return function(s){return function(e){return[t,i,s,e]}}}},5:function(t){return function(i){return function(s){return function(e){return function(n){return[t,i,s,e,n]}}}}}};function tt(t){return d.call(Z,t)||(Z[t]=Y(l,t-1,[])),Z[t]}const it=/fit\/\d+\//,st=(t,i)=>c.pipe((t=>c.pipe(t.match(it),u.fromNullable(t),u.map((()=>t))))(t),u.map((t=>t.replace(it,`fit/${i}/`))),u.getOrElse((()=>t))),et=(t,s)=>t.deeplink?i("a",{class:t.part,part:t.part,href:t.deeplink},s):s,nt=t=>{const s=t.priceType,e=new Intl.NumberFormat(t.locale,{minimumFractionDigits:2}).format(t.price),n=t.prefix?i("span",{part:"price-prefix"},t.prefix+" "):null,r=t.currency?i("span",{part:"currency"}," "+t.currency):null;return i("span",{class:"price-amount",part:"price-amount"+(s?"-"+s:"")},n,e,r)},rt=t=>i("span",{class:"price-container",part:"price-container"},t.salePrice?[i("span",{class:"price-sale",part:"price-sale"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.salePrice,locale:t.locale,priceType:"sale"})),i("span",{class:"price-outdated",part:"price-outdated"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"outdated"}))]:i("span",{class:"price-regular",part:"price-regular"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"regular"}))),ot=class{constructor(i){t(this,i),this.vviinnProductLoad=n(this,"vviinnProductLoad",7),this.vviinnProductView=n(this,"vviinnProductView",7),this.vviinnProductClick=n(this,"vviinnProductClick",7),this.vviinnAddToBasket=n(this,"vviinnAddToBasket",7),this.vviinnAuxClick=n(this,"vviinnAuxClick",7),this.productData=null,this.intersectionCallback=t=>{t.some((t=>t.isIntersecting))&&(c.pipe(X,a.map((t=>t.sendImpression(this.getProduct())))),this.vviinnProductView.emit(this.productData),this.intersectionObserver.disconnect())},this.brand=void 0,this.currency=void 0,this.deeplink=void 0,this.image=void 0,this.imageRatio=1,this.imageWidth=200,this.locale=void 0,this.price=void 0,this.pricePrefix=void 0,this.productId=void 0,this.productTitle=void 0,this.productType=void 0,this.salePrice=void 0,this.responsive=!1,this.dimmedBackground=!1,this.mode=void 0,this.addToBasketShow=void 0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.buttonElementId=void 0,this.widgetVersion=void 0,this.index=0,this.imageLoaded=!1}connectedCallback(){this.productData=this.getProductData()}componentWillLoad(){_(this,this.el)}getWidgetType(){return"VPR"===this.campaignTypeId||"VCS"===this.campaignTypeId?"VPR":"VPS"}getProductData(){var t;return{productId:this.productId,productRank:this.index,productName:this.productTitle,productType:this.productType,widgetType:this.getWidgetType(),campaignTypeId:this.campaignTypeId,campaignTypeName:j[this.campaignTypeId],widgetId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.widgetElementId,widgetVersion:this.widgetVersion}}componentDidLoad(){this.vviinnProductLoad.emit(this.productData),this.intersectionObserver=new IntersectionObserver(this.intersectionCallback.bind(this.imageElement),{threshold:1}),this.intersectionObserver.observe(this.imageElement),this.el.shadowRoot.querySelectorAll("a").forEach((t=>{t.addEventListener("click",(t=>{t.preventDefault(),t.stopImmediatePropagation(),this.vviinnProductClick.emit(Object.assign(Object.assign({},this.productData),{clickEvent:t})),c.pipe(X,a.match((()=>null),(t=>t.sendClick(this.getProduct()))))})),t.addEventListener("auxclick",(()=>{this.vviinnAuxClick.emit(Object.assign({},this.productData))}))}))}getProduct(){return p.results.find((t=>t.productId===this.productId))}renderImage(){const t={width:this.imageWidth,height:this.imageWidth*this.imageRatio,src:this.image,title:this.productTitle,lazy:!1,ref:t=>{this.imageElement=t}};return this.responsive?((t,s=(()=>{}))=>i("picture",null,i("img",{loading:t.lazy?"lazy":"eager",part:"image",class:"image responsive",src:st(t.src,t.width),alt:t.title,ref:t.ref,onLoad:s})))(t):((t,s=(()=>{}))=>i("picture",null,i("img",{loading:t.lazy?"lazy":"eager",part:"image",class:"image",width:t.width,height:t.height,src:st(t.src,t.width),alt:t.title,ref:t.ref,onLoad:s})))(t)}render(){var t,e,n;return i(s,{part:"product-card",class:{dimmed:this.dimmedBackground},exportparts:"brand, currency, deeplink, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, basket-button"},i(et,{deeplink:this.deeplink,part:"image-link"},this.renderImage()),i(et,{deeplink:this.deeplink,part:"deeplink"},i("span",{class:"title",part:"title"},this.productTitle)),i("span",{class:"brand",part:"brand"},this.brand),i("span",{class:"type",part:"type"},this.productType),i(rt,{prefix:null!==(t=this.pricePrefix)&&void 0!==t?t:v.pricePrefix,currency:null!==(e=this.currency)&&void 0!==e?e:v.currencySign,price:this.price,salePrice:this.salePrice,locale:null!==(n=this.locale)&&void 0!==n?n:v.locale}),this.addToBasketShow&&i("button",{class:{"basket-button":!0,"basket-button-grid":"grid"===this.mode,"basket-button-continuity ":"continuity"===this.mode},part:"basket-button",onClick:()=>{this.vviinnAddToBasket.emit(this.productData)}},i("slot",{name:"vviinn-basket-button-text"},i("span",null,V.t("basketButtonText")))))}get el(){return e(this)}};function at(t){return"function"==typeof t}function ht(t){const i=t((t=>{Error.call(t),t.stack=(new Error).stack}));return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i}ot.style=':host{align-items:center;display:flex;flex-direction:column;gap:8px;height:100%}.price-container{display:flex;flex-direction:column;margin-top:auto}.price-sale,.price-regular{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#161616}.price-outdated{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#757575;text-decoration:line-through}.product-type{word-wrap:anywhere}.image{display:grid;align-content:center;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:contain;object-fit:contain;text-align:center;box-sizing:border-box}img.responsive{width:100%;height:auto;aspect-ratio:1}.brand,.type{display:none}.title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#161616;display:-webkit-box;font-size:16px;font-style:normal;font-weight:500;line-height:24px;margin-bottom:8px;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px;margin-top:8px}.basket-button.basket-button-grid{width:100%;background:none;border:1px solid #dddddd}.basket-button.basket-button-continuity{align-self:start;background:#f7f7f7}.basket-button-continuity:hover{background:#eaeaea}.basket-button-grid:hover{background:#f7f7f7}@media (max-width: 640px){.basket-button{padding:8px 10px}}:host(.dimmed) picture::before{content:"";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}';const ct=ht((t=>function(i){t(this),this.message=i?`${i.length} errors occurred during unsubscription:\n${i.map(((t,i)=>`${i+1}) ${t.toString()}`)).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=i}));function dt(t,i){if(t){const s=t.indexOf(i);0<=s&&t.splice(s,1)}}class lt{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;const{_parentage:i}=this;if(i)if(this._parentage=null,Array.isArray(i))for(const t of i)t.remove(this);else i.remove(this);const{initialTeardown:s}=this;if(at(s))try{s()}catch(i){t=i instanceof ct?i.errors:[i]}const{_finalizers:e}=this;if(e){this._finalizers=null;for(const i of e)try{vt(i)}catch(i){t=null!=t?t:[],i instanceof ct?t=[...t,...i.errors]:t.push(i)}}if(t)throw new ct(t)}}add(t){var i;if(t&&t!==this)if(this.closed)vt(t);else{if(t instanceof lt){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(i=this._finalizers)&&void 0!==i?i:[]).push(t)}}_hasParent(t){const{_parentage:i}=this;return i===t||Array.isArray(i)&&i.includes(t)}_addParent(t){const{_parentage:i}=this;this._parentage=Array.isArray(i)?(i.push(t),i):i?[i,t]:t}_removeParent(t){const{_parentage:i}=this;i===t?this._parentage=null:Array.isArray(i)&&dt(i,t)}remove(t){const{_finalizers:i}=this;i&&dt(i,t),t instanceof lt&&t._removeParent(this)}}lt.EMPTY=(()=>{const t=new lt;return t.closed=!0,t})();const ut=lt.EMPTY;function pt(t){return t instanceof lt||t&&"closed"in t&&at(t.remove)&&at(t.add)&&at(t.unsubscribe)}function vt(t){at(t)?t():t.unsubscribe()}const gt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},mt={setTimeout(t,i,...s){const{delegate:e}=mt;return(null==e?void 0:e.setTimeout)?e.setTimeout(t,i,...s):setTimeout(t,i,...s)},clearTimeout(t){const{delegate:i}=mt;return((null==i?void 0:i.clearTimeout)||clearTimeout)(t)},delegate:void 0};function ft(){}const bt=yt("C",void 0,void 0);function yt(t,i,s){return{kind:t,value:i,error:s}}function wt(t){t()}class xt extends lt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,pt(t)&&t.add(this)):this.destination=St}static create(t,i,s){return new Tt(t,i,s)}next(t){this.isStopped?Rt(function(t){return yt("N",t,void 0)}(t),this):this._next(t)}error(t){this.isStopped?Rt(yt("E",void 0,t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Rt(bt,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const kt=Function.prototype.bind;function Ct(t,i){return kt.call(t,i)}class It{constructor(t){this.partialObserver=t}next(t){const{partialObserver:i}=this;if(i.next)try{i.next(t)}catch(t){Pt(t)}}error(t){const{partialObserver:i}=this;if(i.error)try{i.error(t)}catch(t){Pt(t)}else Pt(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(t){Pt(t)}}}class Tt extends xt{constructor(t,i,s){let e;if(super(),at(t)||!t)e={next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=s?s:void 0};else{let i;this&>.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),e={next:t.next&&Ct(t.next,i),error:t.error&&Ct(t.error,i),complete:t.complete&&Ct(t.complete,i)}):e=t}this.destination=new It(e)}}function Pt(t){var i;i=t,mt.setTimeout((()=>{const{onUnhandledError:t}=gt;if(!t)throw i;t(i)}))}function Rt(t,i){const{onStoppedNotification:s}=gt;s&&mt.setTimeout((()=>s(t,i)))}const St={closed:!0,next:ft,error:function(t){throw t},complete:ft},Vt="function"==typeof Symbol&&Symbol.observable||"@@observable";function _t(t){return t}class jt{constructor(t){t&&(this._subscribe=t)}lift(t){const i=new jt;return i.source=this,i.operator=t,i}subscribe(t,i,s){const e=(n=t)&&n instanceof xt||function(t){return t&&at(t.next)&&at(t.error)&&at(t.complete)}(n)&&pt(n)?t:new Tt(t,i,s);var n;return wt((()=>{const{operator:t,source:i}=this;e.add(t?t.call(e,i):i?this._subscribe(e):this._trySubscribe(e))})),e}_trySubscribe(t){try{return this._subscribe(t)}catch(i){t.error(i)}}forEach(t,i){return new(i=Et(i))(((i,s)=>{const e=new Tt({next:i=>{try{t(i)}catch(t){s(t),e.unsubscribe()}},error:s,complete:i});this.subscribe(e)}))}_subscribe(t){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(t)}[Vt](){return this}pipe(...t){return(0===(i=t).length?_t:1===i.length?i[0]:function(t){return i.reduce(((t,i)=>i(t)),t)})(this);var i}toPromise(t){return new(t=Et(t))(((t,i)=>{let s;this.subscribe((t=>s=t),(t=>i(t)),(()=>t(s)))}))}}function Et(t){var i;return null!==(i=null!=t?t:gt.Promise)&&void 0!==i?i:Promise}jt.create=t=>new jt(t);const At=ht((t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}));class Ot extends jt{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){const i=new $t(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new At}next(t){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}}))}error(t){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;const{observers:i}=this;for(;i.length;)i.shift().error(t)}}))}complete(){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:t}=this;for(;t.length;)t.shift().complete()}}))}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){const{hasError:i,isStopped:s,observers:e}=this;return i||s?ut:(this.currentObservers=null,e.push(t),new lt((()=>{this.currentObservers=null,dt(e,t)})))}_checkFinalizedStatuses(t){const{hasError:i,thrownError:s,isStopped:e}=this;i?t.error(s):e&&t.complete()}asObservable(){const t=new jt;return t.source=this,t}}Ot.create=(t,i)=>new $t(t,i);class $t extends Ot{constructor(t,i){super(),this.destination=t,this.source=i}next(t){var i,s;null===(s=null===(i=this.destination)||void 0===i?void 0:i.next)||void 0===s||s.call(i,t)}error(t){var i,s;null===(s=null===(i=this.destination)||void 0===i?void 0:i.error)||void 0===s||s.call(i,t)}complete(){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===i||i.call(t)}_subscribe(t){var i,s;return null!==(s=null===(i=this.source)||void 0===i?void 0:i.subscribe(t))&&void 0!==s?s:ut}}const Wt=c.flow((t=>`Bearer ${t}`),(t=>new Headers({Authorization:t})),(t=>({headers:t}))),zt=(Bt=x,function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];for(var s=t.length,e=tt(s),n=Bt.map(t[0],e),r=1;r<s;r++)n=Bt.ap(n,t[r]);return n});var Bt;const Lt=(t,i={})=>g(zt(y(),w),b,m(f(t,i))),Nt=t=>i=>s=>e=>n=>{const r=c.pipe(e,k(encodeURIComponent),C((()=>{const e=[];i&&e.push(`color=${i}`),s&&e.push(s);const n=I(e);return`product/${t}/similar-products${n}`}),(e=>{const n=[];e&&n.push(`campaigns=${e}`),i&&n.push(`color=${i}`),s&&n.push(s);const r=I(n);return`product/${t}/similar-products${r}`})));return Lt(r,n)},Dt=t=>i=>s=>e=>n=>{const r=c.pipe(e,k(encodeURIComponent),C((()=>{const e=[];i&&e.push(`color=${i}`),s&&e.push(s);const n=I(e);return`product/${t}/cross-selling-products${n}`}),(e=>{const n=[];e&&n.push(`campaigns=${e}`),i&&n.push(`color=${i}`),s&&n.push(s);const r=I(n);return`product/${t}/cross-selling-products${r}`})));return Lt(r,n)},Mt={de:{translation:{noResultText:"Keine Ergebnisse! Versuche es bitte später erneut.",basketButtonText:"In den Warenkorb"}},en:{translation:{noResultText:"No results! Please, try again later.",basketButtonText:"Add to Basket"}}};var Ft=function(t,i){var s={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&i.indexOf(e)<0&&(s[e]=t[e]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(e=Object.getOwnPropertySymbols(t);n<e.length;n++)i.indexOf(e[n])<0&&Object.prototype.propertyIsEnumerable.call(t,e[n])&&(s[e[n]]=t[e[n]])}return s};const Ut=class{constructor(i){t(this,i),this.vviinnWidgetLoad=n(this,"vviinnWidgetLoad",7),this.vviinnProductLoad=n(this,"vviinnProductLoad",7),this.vviinnProductView=n(this,"vviinnProductView",7),this.vviinnProductClick=n(this,"vviinnProductClick",7),this.vviinnResultLoad=n(this,"vviinnResultLoad",7),this.vviinnResultView=n(this,"vviinnResultView",7),this.vviinnNoResult=n(this,"vviinnNoResult",7),this.vviinnAddToBasket=n(this,"vviinnAddToBasket",7),this.globalSlotsChanged=n(this,"globalSlotsChanged",7),this.vviinnRecommendationsLoaded=n(this,"vviinnRecommendationsLoaded",7),this.vviinnWidgetOpen=n(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=n(this,"vviinnWidgetClose",7),this.productImageLoadedSubject=new Ot,this.resultViewed=!1,this.setTrackingDeactivated=t=>{"rejected"===t.status&&(this.trackingDeactivated=!0)},this.blockTitle="Recommended products",this.imageRatio=1,this.imageWidth=300,this.productId=void 0,this.token=void 0,this.currencySign="€",this.pricePrefix="",this.mode="continuity",this.campaignType="VPR",this.locale="de-DE",this.campaigns="",this.color="",this.gridArrowsDynamic=!1,this.noResultText="",this.noResultShow=!0,this.showScroll=!0,this.cssUrl=null,this.excluded="",this.productDetailNewTab=!1,this.addToBasketShow=!1,this.apiPath="https://api.vviinn.com",this.useCarousel=!0,this.showingInButton=!1,this.buttonElementId=void 0,this.closed=void 0,this.opened=void 0,this.recommendations=[],this.trackingDeactivated=!1,this.hasErrorOnLoad=!1}getBasicEventData(){return{widgetType:"VPR",campaignTypeId:this.campaignType,campaignTypeName:j[this.campaignType],widgetId:this.id,widgetVersion:$}}handleOpenLink(t,i){if(this.productDetailNewTab||i.ctrlKey||i.metaKey){let i=window.open();i?i.location.href=t:window.location.href=t}else window.location.href=t}handleProductIdChange(){this.getRecommendations()}handleCampaignTypeChange(){this.getRecommendations()}handleCampaignsChange(){this.getRecommendations()}handleApiPathChange(t){v.apiPath=t,this.getRecommendations()}trackWidgetOpen(){this.opened&&(this.vviinnWidgetOpen.emit(this.getBasicEventData()),this.trackWidgetEvent("open"))}trackWidgetClose(){this.closed&&(this.vviinnWidgetClose.emit(this.getBasicEventData()),this.trackWidgetEvent("close"))}componentDidRender(){if(this.showingInButton&&this.closed)return;const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}connectedCallback(){var t;v.apiPath=this.apiPath,v.currencySign=this.currencySign,v.locale=this.locale,this.id=null!==(t=this.buttonElementId)&&void 0!==t?t:this.el.id,this.uiSessionId=W(),this.trackingApi=z(this.apiPath,this.token),this.getRecommendations(),V.init({lng:this.locale,fallbackLng:"de-DE",resources:Mt}),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}async componentWillLoad(){v.pricePrefix=this.pricePrefix,v.currencySign=this.currencySign,this.excluded&&(this.excluded=T(this.excluded))}trackProductLoad({detail:t}){this.productImageLoadedSubject.next(t.productId);const i=this.getProductTrackEvent(t,"load");i&&this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}trackProductView({detail:t}){this.resultViewed||(this.resultViewed=!0,this.vviinnResultView.emit(this.getBasicEventData()),this.trackResultEvent("view"));const i=this.getProductTrackEvent(t,"view");i&&this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}async trackProductClick({detail:t}){const{productId:i,clickEvent:s}=t,e=this.recommendations.find((t=>t.productId===i));if(!e||!e.deeplink)return;const n=this.getProductTrackEvent(t,"click");this.trackingDeactivated?this.handleOpenLink(e.deeplink,s):await this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated).finally((()=>{this.handleOpenLink(e.deeplink,s)}))}async trackAuxClick({detail:t}){const{productId:i}=t,s=this.recommendations.find((t=>t.productId===i));if(!s||!s.deeplink)return;const e=this.getProductTrackEvent(t,"click");this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}async trackAddToBasket({detail:t}){const{productRank:i,productId:s}=t,e=Ft(t,["productRank","productId","campaignTypeId","widgetType"]);let n;const r=Object.assign({session_id:this.uiSessionId,rank:i,product:s},e);"VCS"===this.campaignType?n=B(r):"VPR"===this.campaignType&&(n=L(r)),this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated)}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Ft(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({action:t,session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=N(n):"VPR"===this.campaignType&&(e=D(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Ft(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=M(t)(n):"VPR"===this.campaignType&&(e=F(t)(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}getProductTrackEvent(t,i){if(this.trackingDeactivated)return null;const{productRank:s,productId:e,campaignTypeId:n}=t,r=Ft(t,["productRank","productId","campaignTypeId","widgetType","clickEvent"]);let o;const a=Object.assign({session_id:this.uiSessionId,rank:s,product:e},r);return"VCS"===n?o=U(i)(a):"VPR"===n&&(o=G(i)(a)),o}async getRecommendations(){if(void 0===this.productId||void 0===this.token)return;const t=this.campaignType.length>0?this.campaignType:"VPR",i=Wt(this.token),s=c.pipe(P.of((t=>c.pipe(E(t),A((()=>Nt),(()=>Dt))))(t)),P.ap(P.of(this.productId)),P.ap(P.of(this.color)),P.ap(P.of(this.excluded)),P.ap(P.of(R(this.campaigns))),P.ap(P.of(i)),P.flatten),e=await s();c.pipe(e,u.fold((t=>{this.handleError(t),this.vviinnNoResult.emit(this.getBasicEventData()),this.vviinnRecommendationsLoaded.emit()}),(t=>this.handleRecommendationsSuccess(t))))}handleError(t){this.hasErrorOnLoad=!0}handleRecommendationsSuccess(t){var i;this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.recommendations=null!==(i=null==t?void 0:t.extended)&&void 0!==i?i:t,p.results=this.recommendations,this.productIds=this.recommendations.map((t=>t.productId)),this.productImageLoadedSubject.subscribe((t=>{this.productIds=this.productIds.filter((i=>i!==t)),0===this.productIds.length&&this.vviinnRecommendationsLoaded.emit()}))}isExternalCSS(){return this.cssUrl&&this.cssUrl.length>0}renderExternalCSS(){return this.isExternalCSS()?i("link",{href:this.cssUrl,rel:"stylesheet"}):""}render(){return 0===this.recommendations.length&&!1===this.noResultShow?null:i(s,{class:{loaded:!0,empty:0==this.recommendations.length,[this.mode]:!0},"aria-hidden":"false"},this.addToBasketShow&&i(O,null),i(r,null,this.renderExternalCSS(),i("style",null,v.fallbackStyles),i("h2",{part:"recommendations-title"},this.blockTitle),this.recommendations.length>0&&(this.useCarousel?this.renderCarousel():this.renderResults()),0===this.recommendations.length&&this.hasErrorOnLoad&&i("p",{class:"no-result-text"},this.noResultText.length?this.noResultText:V.t("noResultText"))))}renderRecommendation(t,s){return i("vviinn-product-card",{part:"product-part",productId:t.productId,productTitle:t.title,productType:t.productType,deeplink:t.deeplink,image:t.image.thumbnail,brand:t.brand,imageWidth:this.imageWidth,imageRatio:1,price:t.price.actual,salePrice:t.price.sale,responsive:"grid"===this.mode,addToBasketShow:this.addToBasketShow,mode:this.mode,dimmedBackground:this.useDimmedBackgroundInCard(),campaignTypeId:this.campaignType,index:s,widgetElementId:this.id,widgetVersion:$})}useDimmedBackgroundInCard(){return"continuity"===this.mode||!this.useCarousel}renderResults(){return i("div",{class:"recommendations-grid",part:"recommendations-grid"},this.recommendations.map(((t,i)=>this.renderRecommendation(t,i))))}renderCarousel(){return i("vviinn-carousel",{mode:this.mode,campaignTypeId:this.campaignType,imageWidth:this.imageWidth,showScroll:this.showScroll,recommendations:this.recommendations,widgetElementId:this.id,widgetVersion:$,gridArrowsDynamic:this.gridArrowsDynamic,addToBasketShow:this.addToBasketShow})}get el(){return e(this)}static get watchers(){return{productId:["handleProductIdChange"],campaignType:["handleCampaignTypeChange"],campaigns:["handleCampaignsChange"],apiPath:["handleApiPathChange"],opened:["trackWidgetOpen"],closed:["trackWidgetClose"]}}};Ut.style=":host{display:grid;grid-gap:1rem;width:100%}:host(:not(.loaded)){position:absolute;visibility:hidden}:host(.grid) vviinn-product-card::part(image){border:1px solid #dddddd;width:100%}h2{margin:0}vviinn-product-card::part(price-container){align-self:flex-start;text-align:left;display:flex}.results{display:grid;grid-gap:1rem}.no-result-text{font-size:20px}.visually-hidden{position:absolute;top:0;left:0;z-index:-1;height:0;width:0}h2{margin:0}:host(.grid) h2{justify-content:center}:host(.grid) vviinn-product-card::part(image){min-width:100%}:host(.grid) vviinn-product-card::part(image-link){width:100%}:host(.grid) vviinn-product-card::part(title),:host(.grid) vviinn-product-card::part(brand),:host(.grid) vviinn-product-card::part(type){text-align:center}:host(.grid) vviinn-product-card::part(price-container){align-self:center}:host(.continuity) vviinn-product-card::part(title),:host(.continuity) vviinn-product-card::part(brand),:host(.continuity) vviinn-product-card::part(type),:host(.continuity) vviinn-product-card::part(deeplink){text-align:left;max-width:unset;align-self:start}";export{K as vviinn_carousel,ot as vviinn_product_card,Ut as vviinn_vpr_widget}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as e,b as t}from"./p-1e83e6ba.js";export{s as setNonce}from"./p-1e83e6ba.js";(()=>{const t=import.meta.url,i={};return""!==t&&(i.resourcesUrl=new URL(".",t).href),e(i)})().then((e=>t([["p-48a3c418",[[1,"vviinn-button",{addStyle:[4,"add-style"]}]]],["p-1b008776",[[1,"vviinn-error"]]],["p-a8515396",[[1,"vviinn-preloader"]]],["p-
|
|
1
|
+
import{p as e,b as t}from"./p-1e83e6ba.js";export{s as setNonce}from"./p-1e83e6ba.js";(()=>{const t=import.meta.url,i={};return""!==t&&(i.resourcesUrl=new URL(".",t).href),e(i)})().then((e=>t([["p-48a3c418",[[1,"vviinn-button",{addStyle:[4,"add-style"]}]]],["p-1b008776",[[1,"vviinn-error"]]],["p-a8515396",[[1,"vviinn-preloader"]]],["p-e845f9e8",[[1,"vviinn-vpr-widget",{blockTitle:[1,"block-title"],imageRatio:[2,"image-ratio"],imageWidth:[2,"image-width"],productId:[1,"product-id"],token:[1],currencySign:[1,"currency-sign"],pricePrefix:[1,"price-prefix"],mode:[1],campaignType:[1,"campaign-type"],locale:[1],campaigns:[1],color:[1],gridArrowsDynamic:[4,"grid-arrows-dynamic"],noResultText:[1,"no-result-text"],noResultShow:[4,"no-result-show"],showScroll:[4,"show-scroll"],cssUrl:[1,"css-url"],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],addToBasketShow:[4,"add-to-basket-show"],apiPath:[1,"api-path"],useCarousel:[4,"use-carousel"],showingInButton:[4,"showing-in-button"],buttonElementId:[1,"button-element-id"],closed:[4],opened:[4],recommendations:[32],trackingDeactivated:[32],hasErrorOnLoad:[32]},[[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnAddToBasket","trackAddToBasket"]]],[0,"vviinn-carousel",{mode:[1],imageWidth:[2,"image-width"],showScroll:[4,"show-scroll"],campaignTypeId:[1,"campaign-type-id"],widgetElementId:[1,"widget-element-id"],gridArrowsDynamic:[4,"grid-arrows-dynamic"],recommendations:[16],widgetVersion:[1,"widget-version"],addToBasketShow:[4,"add-to-basket-show"],moveDirection:[32],contentGroups:[32],activeContentGroup:[32],isRTL:[32]}],[1,"vviinn-product-card",{brand:[1],currency:[1],deeplink:[1],image:[1],imageRatio:[2,"image-ratio"],imageWidth:[2,"image-width"],locale:[1],price:[2],pricePrefix:[1,"price-prefix"],productId:[1,"product-id"],productTitle:[1,"product-title"],productType:[1,"product-type"],salePrice:[2,"sale-price"],responsive:[4],dimmedBackground:[4,"dimmed-background"],mode:[1],addToBasketShow:[4,"add-to-basket-show"],campaignTypeId:[1,"campaign-type-id"],widgetElementId:[1,"widget-element-id"],buttonElementId:[1,"button-element-id"],widgetVersion:[1,"widget-version"],index:[2],imageLoaded:[32]}]]],["p-774581dc",[[1,"vviinn-onboarding"],[1,"vviinn-example-images",{basicEventData:[16],exampleImagesTitle:[1,"example-images-title"]}],[1,"vviinn-image-view",{basicEventData:[16],cropper:[32]},[[0,"vviinnSelectObject","selectDetectedObject"]]],[1,"vviinn-overlayed-modal",{active:[4],resetState:[16],buttonElementId:[1,"button-element-id"],hideBackButton:[4,"hide-back-button"],widgetVersion:[1,"widget-version"]}],[1,"vviinn-empty-results"],[1,"vviinn-image-selector",{basicEventData:[16],startUpload:[4,"start-upload"],resetVpsButton:[16]}],[1,"vviinn-server-error",{handler:[16]}],[1,"vviinn-wrong-format",{handler:[16]}],[1,"search-filters",{filter:[16],basicEventData:[16],selectedFilter:[32],hideFilters:[32]}],[1,"vviinn-privacy-badge",{privacyBadgeText:[1,"privacy-badge-text"]}],[1,"vviinn-teaser"],[1,"vviinn-example-image",{src:[1],width:[2],height:[2],basicEventData:[16],selected:[32]}],[1,"vviinn-detected-object",{detectedObject:[16],basicEventData:[16],position:[32]}],[1,"vviinn-modal",{active:[1540],resetState:[16],buttonElementId:[1,"button-element-id"],widgetVersion:[1,"widget-version"],hideBackButton:[4,"hide-back-button"],slider:[32]}],[1,"vviinn-onboarding-card-1",{cardTitle:[1,"card-title"],cardText:[1,"card-text"]}],[1,"vviinn-onboarding-card-2",{cardTitle:[1,"card-title"],cardText:[1,"card-text"]}],[1,"vviinn-onboarding-card-3",{cardTitle:[1,"card-title"],cardText:[1,"card-text"]}],[1,"vviinn-overlay"],[1,"vviinn-slide"],[1,"vviinn-slider",{showBullets:[4,"show-bullets"],position:[514],showArrows:[4,"show-arrows"],elementsCount:[32],internalPosition:[32],swipeStartPosition:[32],isRTL:[32]}]]],["p-5d8de6ff",[[1,"vviinn-vps-widget",{token:[1],active:[1028],currencySign:[1,"currency-sign"],locale:[1],campaignId:[1,"campaign-id"],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],imageResolutionWidth:[2,"image-resolution-width"],apiPath:[1,"api-path"],showingInButton:[4,"showing-in-button"],buttonElementId:[1,"button-element-id"],buttonPressed:[4,"button-pressed"],mode:[1],resetVpsButton:[16],slidePosition:[32],width:[32],wrongImageFormat:[32],trackingDeactivated:[32]},[[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnImageCrop","trachSearchAreaChanges"],[0,"vviinnSelectObject","trackDetectedObject"],[0,"vviinnSelectFilter","trackFilter"],[0,"secondaryActionClicked","trackSecondaryAction"]]]]],["p-65ca5b81",[[1,"vviinn-vps-button",{token:[1],currencySign:[1,"currency-sign"],locale:[1],campaignId:[1,"campaign-id"],addStyle:[4,"add-style"],mode:[1],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],imageResolutionWidth:[2,"image-resolution-width"],apiPath:[1,"api-path"],buttonPressed:[32]},[[0,"vviinnWidgetClose","handleModalClosed"]]]]],["p-17b380b1",[[1,"vviinn-recommendations-sidebar",{sidebarTitle:[1,"sidebar-title"],token:[1],productId:[1,"product-id"],position:[1],sourceImage:[1,"source-image"],widgetScrollbar:[4,"widget-scrollbar"],mode:[1],campaigns:[1],campaignType:[1,"campaign-type"],color:[1],locale:[1],imageWidth:[2,"image-width"],currencySign:[1,"currency-sign"],noResultText:[1,"no-result-text"],noResultShow:[4,"no-result-show"],gridArrowsDynamic:[4,"grid-arrows-dynamic"],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],addToBasketShow:[4,"add-to-basket-show"],buttonChildren:[16],apiPath:[1,"api-path"],buttonElementId:[1,"button-element-id"],widgetVersion:[1,"widget-version"],showingInButton:[4,"showing-in-button"],state:[32]},[[16,"click","bodyClickListener"]]]]],["p-d7699839",[[1,"vviinn-vpr-button",{token:[1],productId:[1,"product-id"],position:[1],sourceImage:[1,"source-image"],sidebarTitle:[1,"sidebar-title"],modalScrollbar:[4,"modal-scrollbar"],campaigns:[1],campaignType:[1,"campaign-type"],locale:[1],color:[1],addStyle:[4,"add-style"],mode:[1],imageWidth:[2,"image-width"],currencySign:[1,"currency-sign"],noResultText:[1,"no-result-text"],noResultShow:[4,"no-result-show"],gridArrowsDynamic:[4,"grid-arrows-dynamic"],excluded:[1],productDetailNewTab:[4,"product-detail-new-tab"],addToBasketShow:[4,"add-to-basket-show"],apiPath:[1,"api-path"]}]]]],e)));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const o="2.31.4";export{o as v}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,c as t,h as s,H as e,g as n}from"./p-1e83e6ba.js";import{v as h}from"./p-aace2b88.js";import{a}from"./p-a69d3568.js";import{c as o,S as r}from"./p-5303d4a8.js";const d=class{constructor(s){i(this,s),this.vviinnWidgetLoad=t(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=t(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=t(this,"vviinnWidgetClose",7),this.vviinnImageUpload=t(this,"vviinnImageUpload",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnImageCrop=t(this,"vviinnImageCrop",7),this.vviinnSelectObject=t(this,"vviinnSelectObject",7),this.vviinnSelectFilter=t(this,"vviinnSelectFilter",7),this.globalSlotsChanged=t(this,"globalSlotsChanged",7),this.getBasicEventData=()=>({widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:o.VPS,widgetId:this.el.id,widgetVersion:h}),this.token=void 0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.addStyle=!1,this.mode="modal",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.apiPath=void 0,this.buttonPressed=!1}handleModalClosed(){this.buttonPressed=!1}componentDidLoad(){const i=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(i))}handleClick(){this.buttonPressed=!0}resetButton(){this.buttonPressed=!1}render(){return s(e,{tabindex:"0",role:"button"},s("vviinn-button",{onClick:()=>{this.handleClick()},addStyle:this.addStyle,part:"vviinn-button"},s("slot",null,s(a,null))),s(r,null),s("vviinn-vps-widget",{mode:this.mode,"currency-sign":this.currencySign,token:this.token,locale:this.locale,apiPath:this.apiPath,exportparts:"brand, deeplink, currency, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, product-card, example-images",campaignId:this.campaignId,showingInButton:!0,buttonPressed:this.buttonPressed,resetVpsButton:this.resetButton.bind(this),buttonElementId:this.el.id,active:this.buttonPressed&&"modal"===this.mode,excluded:this.excluded,productDetailNewTab:this.productDetailNewTab,imageResolutionWidth:this.imageResolutionWidth}))}get el(){return n(this)}};d.style=":host{display:block}";export{d as vviinn_vps_button}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as t,h as i,H as s,g as e,c as n,F as r}from"./p-1e83e6ba.js";import{_ as o,O as a,S as h,a as c,h as d,t as l,E as u,i as p,s as v,p as g,c as m,m as b,f,g as y,b as w,A as x,d as k,e as C,j as I,k as T,T as P,l as R}from"./p-987a8e9f.js";import{C as S}from"./p-a69d3568.js";import{i as V}from"./p-2e76a5c3.js";import{s as _,c as j,f as E,a as A,S as O}from"./p-5303d4a8.js";import{v as $}from"./p-aace2b88.js";import{v as W,c as z,a as B,b as L,d as N,e as D,f as M,g as F,h as U,i as G}from"./p-da7273ce.js";const q="--vviinn-carousel-image-width",H="items-group",K=class{constructor(i){t(this,i),this.columns=0,this.resizeObserver=new ResizeObserver((()=>this.handleResize())),this.mutationObserver=new MutationObserver((()=>this.cloneSlottedContent())),this.isLastGroup=()=>this.activeContentGroup===this.getContentGroups().length-1&&"grid"===this.mode,this.isFirstGroup=()=>0===this.activeContentGroup&&"grid"===this.mode,this.moveDirection="right",this.contentGroups=[],this.activeContentGroup=0,this.isRTL=!1,this.mode="continuity",this.imageWidth=140,this.showScroll=!0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.gridArrowsDynamic=void 0,this.recommendations=[],this.widgetVersion=void 0,this.addToBasketShow=void 0}componentWillLoad(){this.isRTL="rtl"===document.dir}connectedCallback(){this.setItemWidth()}disconnectedCallback(){this.resizeObserver.disconnect()}componentDidLoad(){this.setWidth(),this.processScrollbarWidth(),this.columns=this.getColumnsNumber();const t=this.el.querySelector(".content");this.mutationObserver.observe(t,{subtree:!0,childList:!0}),this.resizeObserver.observe(this.getHostParent())}getItemWidthFromDocument(){return parseInt(getComputedStyle(document.body).getPropertyValue(q))}setItemWidth(){const t=this.getItemWidthFromDocument(),i=isNaN(t)?this.imageWidth:t;this.el.style.setProperty(q,`${i}px`)}getContentClassMap(){return{content:!0,[this.moveDirection]:!0,[this.mode]:!0,"show-scrollbar":this.showScroll}}handleResize(){this.setWidth(),this.processScrollbarWidth(),this.setItemWidth();const t=this.getColumnsNumber();t!==this.columns&&(this.columns=t)}calculateMoveStep(){const t=this.getContent().map((t=>t.getBoundingClientRect().width));return t.reduce(((t,i)=>t+i),0)/t.length}getHostParent(){return this.el.parentNode.host.parentElement}setWidth(){const t=this.getHostParent();if(!t)return;const i=getComputedStyle(t),s=t.getBoundingClientRect().width-(parseInt(i["padding-right"])+parseInt(i["padding-left"]));this.el.style.setProperty("--vviinn-carousel-content-width",`${s}px`)}getParent(){return this.el.parentNode.host.parentElement}cloneSlottedContent(){this.setWidth()}getActiveGroupIndex(){var t,i;if(!(null===(i=null===(t=this.getContentNode())||void 0===t?void 0:t.getBoundingClientRect())||void 0===i?void 0:i.left))return 0;const s=this.getContentGroups().map((t=>t.getBoundingClientRect().left)).map(((t,i)=>[t,i])).filter((t=>t[0]>=0));return s.length>0?this.isRTL?s[s.length-1][1]:s[0][1]:0}getContentNode(){return this.el.querySelector(".content")}getContent(){const t=this.getContentNode().children;return Array.from(t).map((t=>t))}getColumnsNumber(){const t=getComputedStyle(this.el).getPropertyValue("--vviinn-carousel-columns-internal"),i=parseInt(t);return i&&!isNaN(i)?i:4}getContentGroups(){return Array.from(this.el.querySelectorAll(`.${H}`))}showNext(){this.moveDirection="right";const t=this.getContentNode();requestAnimationFrame((()=>{t.scrollTo({top:0,left:t.scrollLeft+this.calculateMoveStep(),behavior:"smooth"})}))}showPrev(){this.moveDirection="left";const t=this.getContentNode();requestAnimationFrame((()=>{t.scrollTo({top:0,left:t.scrollLeft-this.calculateMoveStep(),behavior:"smooth"})}))}scroll(t){const i=this.getContentNode();requestAnimationFrame((()=>{i.scrollTo({top:0,left:this.calculateMoveStep()*t,behavior:"smooth"})}))}processScrollbarWidth(){const t=this.getContentNode();t&&(this.el.style.setProperty("--vviinn-progressbar-width",t.clientWidth*((t.scrollLeft+t.clientWidth)/t.scrollWidth)+"px"),this.activeContentGroup=this.getActiveGroupIndex())}showBullets(){return"grid"===this.mode&&this.showScroll}showScrollbar(){return"continuity"===this.mode&&this.showScroll}getClassMap(){return{[this.mode]:!0,"show-scrollbar":this.showScrollbar()}}renderRecommendation(t,s){return i("vviinn-product-card",{part:"product-part",productId:t.productId,productTitle:t.title,productType:t.productType,deeplink:t.deeplink,image:t.image.thumbnail,brand:t.brand,imageWidth:this.imageWidth,imageRatio:1,price:t.price.actual,salePrice:t.price.sale,responsive:"grid"===this.mode,dimmedBackground:"continuity"===this.mode,campaignTypeId:this.campaignTypeId,index:s,widgetElementId:this.widgetElementId,widgetVersion:this.widgetVersion,addToBasketShow:this.addToBasketShow,mode:this.mode})}renderRecommendationGroup(t){return i("div",{class:H,part:"items-group"},...t)}renderRecommendationGroups(t){return t.map((t=>this.renderRecommendationGroup(t)))}renderRecommendations(){return"grid"===this.mode?this.renderGrid():this.renderRecommendationsElements()}renderRecommendationsElements(){return this.recommendations.map(((t,i)=>this.renderRecommendation(t,i)))}renderGrid(){const t=this.renderRecommendationsElements(),i=o.chunksOf(this.getColumnsNumber())(t);return this.renderRecommendationGroups(i)}renderBullets(){const t=Math.ceil(this.recommendations.length/this.getColumnsNumber());return Array.from(Array(t).keys()).map((t=>i("div",{class:{bullet:!0,active:this.activeContentGroup===t},onClick:()=>this.scroll(t)})))}render(){return i(s,{class:this.getClassMap()},i("div",{class:Object.assign({body:!0},this.getClassMap())},i("button",{class:"prev",onClick:()=>this.showPrev(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isFirstGroup()},i(S,null)),i("div",{class:this.getContentClassMap(),onScroll:()=>this.processScrollbarWidth()},this.renderRecommendations()),i("button",{class:"next",onClick:()=>this.showNext(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isLastGroup()},i(S,null))),this.showBullets()&&i("div",{class:"bullets"},this.renderBullets()))}get el(){return e(this)}};K.style=":host{--vviinn-progressbar-width:0;--vviinn-carousel-item-width:150px;--vviinn-carousel-columns-internal:var(--vviinn-carousel-columns, 4);--vviinn-carousel-image-width-system:140px}.body{display:flex;position:relative;width:var(--vviinn-carousel-content-width);flex-direction:column}.content-wrapper *{box-sizing:border-box}.content-wrapper{overflow-y:hidden;overflow-x:auto;flex-grow:1}.bullets{margin-top:16px;display:flex;flex-direction:row;grid-gap:24px;justify-content:center}.bullet{width:10px;height:10px;background:#e0e0e0;border-radius:50%;cursor:pointer}.bullet.active{background:#161616}.content:not(.show-scrollbar),.content.grid{scrollbar-color:#fff0 #fff0}.content:not(.show-scrollbar)::-webkit-scrollbar,.content.grid::-webkit-scrollbar{opacity:0}.content{display:flex;flex-direction:row;grid-gap:8px;overflow-y:hidden;overflow-x:auto;flex-grow:1;padding-bottom:16px}.content.left>*{scroll-snap-align:start}.content.right>*{scroll-snap-align:end}:host(.continuity) button{border-radius:2px}:host(.grid) button{border-radius:50%}button{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}button{fill:#525252}button:disabled{display:none}button.prev svg{transform:rotate(180deg);margin-left:-5px}.prev{left:0}.next{right:0}.items-group{display:grid;grid-gap:16px;grid-template-columns:repeat(var(--vviinn-carousel-columns-internal), 1fr);min-width:100%}vviinn-product-card::part(price-container){text-align:center}:host(.classic) vviinn-product-card::part(title),:host(.classic) vviinn-product-card::part(brand),:host(.classic) vviinn-product-card::part(type){text-align:center}@media (max-width: 480px){:host(.modern) button{display:none}.items-group{grid-template-columns:repeat(2, 1fr)}}";class J{sendImpression(t){var i,s,e;gtag("event","view_item_list",{items:[{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list_name:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}]})}sendClick(t){var i,s,e;gtag("event","select_content",{content_type:"product",items:[{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list_name:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}]})}}class Q{constructor(){ga("require","ec")}convertProduct(t){var i,s,e;return{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}}sendImpression(t){ga("ec:addImpression",this.convertProduct(t))}sendClick(t){var i,s,e;ga("ec:addProduct",{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}),ga("ec:setAction","click",{list:"VI VPR View"})}}const X=a.getMonoid(h.first()).concat(c.pipe(a.fromNullable(window.gtag),a.map((()=>new J))),c.pipe(a.fromNullable(window.ga),a.map((()=>new Q))));function Y(t,i,s){return function(e){for(var n=Array(s.length+1),r=0;r<s.length;r++)n[r]=s[r];return n[s.length]=e,0===i?t.apply(null,n):Y(t,i-1,n)}}var Z={1:function(t){return[t]},2:function(t){return function(i){return[t,i]}},3:function(t){return function(i){return function(s){return[t,i,s]}}},4:function(t){return function(i){return function(s){return function(e){return[t,i,s,e]}}}},5:function(t){return function(i){return function(s){return function(e){return function(n){return[t,i,s,e,n]}}}}}};function tt(t){return d.call(Z,t)||(Z[t]=Y(l,t-1,[])),Z[t]}const it=/fit\/\d+\//,st=(t,i)=>c.pipe((t=>c.pipe(t.match(it),u.fromNullable(t),u.map((()=>t))))(t),u.map((t=>t.replace(it,`fit/${i}/`))),u.getOrElse((()=>t))),et=(t,s)=>t.deeplink?i("a",{class:t.part,part:t.part,href:t.deeplink},s):s,nt=t=>{const s=t.priceType,e=new Intl.NumberFormat(t.locale,{minimumFractionDigits:2}).format(t.price),n=t.prefix?i("span",{part:"price-prefix"},t.prefix+" "):null,r=t.currency?i("span",{part:"currency"}," "+t.currency):null;return i("span",{class:"price-amount",part:"price-amount"+(s?"-"+s:"")},n,e,r)},rt=t=>i("span",{class:"price-container",part:"price-container"},t.salePrice?[i("span",{class:"price-sale",part:"price-sale"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.salePrice,locale:t.locale,priceType:"sale"})),i("span",{class:"price-outdated",part:"price-outdated"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"outdated"}))]:i("span",{class:"price-regular",part:"price-regular"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"regular"}))),ot=class{constructor(i){t(this,i),this.vviinnProductLoad=n(this,"vviinnProductLoad",7),this.vviinnProductView=n(this,"vviinnProductView",7),this.vviinnProductClick=n(this,"vviinnProductClick",7),this.vviinnAddToBasket=n(this,"vviinnAddToBasket",7),this.vviinnAuxClick=n(this,"vviinnAuxClick",7),this.productData=null,this.intersectionObserver=new IntersectionObserver(this.intersectionCallback.bind(this),{threshold:1}),this.brand=void 0,this.currency=void 0,this.deeplink=void 0,this.image=void 0,this.imageRatio=1,this.imageWidth=200,this.locale=void 0,this.price=void 0,this.pricePrefix=void 0,this.productId=void 0,this.productTitle=void 0,this.productType=void 0,this.salePrice=void 0,this.responsive=!1,this.dimmedBackground=!1,this.mode=void 0,this.addToBasketShow=void 0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.buttonElementId=void 0,this.widgetVersion=void 0,this.index=0,this.imageLoaded=!1}connectedCallback(){this.productData=this.getProductData()}componentWillLoad(){_(this,this.el)}getWidgetType(){return"VPR"===this.campaignTypeId||"VCS"===this.campaignTypeId?"VPR":"VPS"}getProductData(){var t;return{productId:this.productId,productRank:this.index,productName:this.productTitle,productType:this.productType,widgetType:this.getWidgetType(),campaignTypeId:this.campaignTypeId,campaignTypeName:j[this.campaignTypeId],widgetId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.widgetElementId,widgetVersion:this.widgetVersion}}intersectionCallback(t){t.some((t=>t.isIntersecting))&&(c.pipe(X,a.map((t=>t.sendImpression(this.getProduct())))),this.vviinnProductView.emit(this.productData),this.intersectionObserver.disconnect())}componentDidLoad(){this.vviinnProductLoad.emit(this.productData),this.intersectionObserver.observe(this.el),this.el.shadowRoot.querySelectorAll("a").forEach((t=>{t.addEventListener("click",(t=>{t.preventDefault(),t.stopImmediatePropagation(),this.vviinnProductClick.emit(Object.assign(Object.assign({},this.productData),{clickEvent:t})),c.pipe(X,a.match((()=>null),(t=>t.sendClick(this.getProduct()))))})),t.addEventListener("auxclick",(()=>{this.vviinnAuxClick.emit(Object.assign({},this.productData))}))}))}getProduct(){return p.results.find((t=>t.productId===this.productId))}renderImage(){const t={width:this.imageWidth,height:this.imageWidth*this.imageRatio,src:this.image,title:this.productTitle,lazy:!1};return this.responsive?((t,s=(()=>{}))=>i("picture",null,i("img",{loading:t.lazy?"lazy":"eager",part:"image",class:"image responsive",src:st(t.src,t.width),alt:t.title,onLoad:s})))(t):((t,s=(()=>{}))=>i("picture",null,i("img",{loading:t.lazy?"lazy":"eager",part:"image",class:"image",width:t.width,height:t.height,src:st(t.src,t.width),alt:t.title,onLoad:s})))(t)}render(){var t,e,n;return i(s,{part:"product-card",class:{dimmed:this.dimmedBackground},exportparts:"brand, currency, deeplink, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, basket-button"},i(et,{deeplink:this.deeplink,part:"image-link"},this.renderImage()),i(et,{deeplink:this.deeplink,part:"deeplink"},i("span",{class:"title",part:"title"},this.productTitle)),i("span",{class:"brand",part:"brand"},this.brand),i("span",{class:"type",part:"type"},this.productType),i(rt,{prefix:null!==(t=this.pricePrefix)&&void 0!==t?t:v.pricePrefix,currency:null!==(e=this.currency)&&void 0!==e?e:v.currencySign,price:this.price,salePrice:this.salePrice,locale:null!==(n=this.locale)&&void 0!==n?n:v.locale}),this.addToBasketShow&&i("button",{class:{"basket-button":!0,"basket-button-grid":"grid"===this.mode,"basket-button-continuity ":"continuity"===this.mode},part:"basket-button",onClick:()=>{this.vviinnAddToBasket.emit(this.productData)}},i("slot",{name:"vviinn-basket-button-text"},i("span",null,V.t("basketButtonText")))))}get el(){return e(this)}};function at(t){return"function"==typeof t}function ht(t){const i=t((t=>{Error.call(t),t.stack=(new Error).stack}));return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i}ot.style=':host{align-items:center;display:flex;flex-direction:column;gap:8px;height:100%}.price-container{display:flex;flex-direction:column;margin-top:auto}.price-sale,.price-regular{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#161616}.price-outdated{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#757575;text-decoration:line-through}.product-type{word-wrap:anywhere}.image{display:grid;align-content:center;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:contain;object-fit:contain;text-align:center;box-sizing:border-box}img.responsive{width:100%;height:auto;aspect-ratio:1}.brand,.type{display:none}.title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#161616;display:-webkit-box;font-size:16px;font-style:normal;font-weight:500;line-height:24px;margin-bottom:8px;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px;margin-top:8px}.basket-button.basket-button-grid{width:100%;background:none;border:1px solid #dddddd}.basket-button.basket-button-continuity{align-self:start;background:#f7f7f7}.basket-button-continuity:hover{background:#eaeaea}.basket-button-grid:hover{background:#f7f7f7}@media (max-width: 640px){.basket-button{padding:8px 10px}}:host(.dimmed) picture::before{content:"";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}';const ct=ht((t=>function(i){t(this),this.message=i?`${i.length} errors occurred during unsubscription:\n${i.map(((t,i)=>`${i+1}) ${t.toString()}`)).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=i}));function dt(t,i){if(t){const s=t.indexOf(i);0<=s&&t.splice(s,1)}}class lt{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;const{_parentage:i}=this;if(i)if(this._parentage=null,Array.isArray(i))for(const t of i)t.remove(this);else i.remove(this);const{initialTeardown:s}=this;if(at(s))try{s()}catch(i){t=i instanceof ct?i.errors:[i]}const{_finalizers:e}=this;if(e){this._finalizers=null;for(const i of e)try{vt(i)}catch(i){t=null!=t?t:[],i instanceof ct?t=[...t,...i.errors]:t.push(i)}}if(t)throw new ct(t)}}add(t){var i;if(t&&t!==this)if(this.closed)vt(t);else{if(t instanceof lt){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(i=this._finalizers)&&void 0!==i?i:[]).push(t)}}_hasParent(t){const{_parentage:i}=this;return i===t||Array.isArray(i)&&i.includes(t)}_addParent(t){const{_parentage:i}=this;this._parentage=Array.isArray(i)?(i.push(t),i):i?[i,t]:t}_removeParent(t){const{_parentage:i}=this;i===t?this._parentage=null:Array.isArray(i)&&dt(i,t)}remove(t){const{_finalizers:i}=this;i&&dt(i,t),t instanceof lt&&t._removeParent(this)}}lt.EMPTY=(()=>{const t=new lt;return t.closed=!0,t})();const ut=lt.EMPTY;function pt(t){return t instanceof lt||t&&"closed"in t&&at(t.remove)&&at(t.add)&&at(t.unsubscribe)}function vt(t){at(t)?t():t.unsubscribe()}const gt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},mt={setTimeout(t,i,...s){const{delegate:e}=mt;return(null==e?void 0:e.setTimeout)?e.setTimeout(t,i,...s):setTimeout(t,i,...s)},clearTimeout(t){const{delegate:i}=mt;return((null==i?void 0:i.clearTimeout)||clearTimeout)(t)},delegate:void 0};function bt(){}const ft=yt("C",void 0,void 0);function yt(t,i,s){return{kind:t,value:i,error:s}}function wt(t){t()}class xt extends lt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,pt(t)&&t.add(this)):this.destination=St}static create(t,i,s){return new Tt(t,i,s)}next(t){this.isStopped?Rt(function(t){return yt("N",t,void 0)}(t),this):this._next(t)}error(t){this.isStopped?Rt(yt("E",void 0,t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Rt(ft,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const kt=Function.prototype.bind;function Ct(t,i){return kt.call(t,i)}class It{constructor(t){this.partialObserver=t}next(t){const{partialObserver:i}=this;if(i.next)try{i.next(t)}catch(t){Pt(t)}}error(t){const{partialObserver:i}=this;if(i.error)try{i.error(t)}catch(t){Pt(t)}else Pt(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(t){Pt(t)}}}class Tt extends xt{constructor(t,i,s){let e;if(super(),at(t)||!t)e={next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=s?s:void 0};else{let i;this&>.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),e={next:t.next&&Ct(t.next,i),error:t.error&&Ct(t.error,i),complete:t.complete&&Ct(t.complete,i)}):e=t}this.destination=new It(e)}}function Pt(t){var i;i=t,mt.setTimeout((()=>{const{onUnhandledError:t}=gt;if(!t)throw i;t(i)}))}function Rt(t,i){const{onStoppedNotification:s}=gt;s&&mt.setTimeout((()=>s(t,i)))}const St={closed:!0,next:bt,error:function(t){throw t},complete:bt},Vt="function"==typeof Symbol&&Symbol.observable||"@@observable";function _t(t){return t}class jt{constructor(t){t&&(this._subscribe=t)}lift(t){const i=new jt;return i.source=this,i.operator=t,i}subscribe(t,i,s){const e=(n=t)&&n instanceof xt||function(t){return t&&at(t.next)&&at(t.error)&&at(t.complete)}(n)&&pt(n)?t:new Tt(t,i,s);var n;return wt((()=>{const{operator:t,source:i}=this;e.add(t?t.call(e,i):i?this._subscribe(e):this._trySubscribe(e))})),e}_trySubscribe(t){try{return this._subscribe(t)}catch(i){t.error(i)}}forEach(t,i){return new(i=Et(i))(((i,s)=>{const e=new Tt({next:i=>{try{t(i)}catch(t){s(t),e.unsubscribe()}},error:s,complete:i});this.subscribe(e)}))}_subscribe(t){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(t)}[Vt](){return this}pipe(...t){return(0===(i=t).length?_t:1===i.length?i[0]:function(t){return i.reduce(((t,i)=>i(t)),t)})(this);var i}toPromise(t){return new(t=Et(t))(((t,i)=>{let s;this.subscribe((t=>s=t),(t=>i(t)),(()=>t(s)))}))}}function Et(t){var i;return null!==(i=null!=t?t:gt.Promise)&&void 0!==i?i:Promise}jt.create=t=>new jt(t);const At=ht((t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}));class Ot extends jt{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){const i=new $t(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new At}next(t){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}}))}error(t){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;const{observers:i}=this;for(;i.length;)i.shift().error(t)}}))}complete(){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:t}=this;for(;t.length;)t.shift().complete()}}))}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){const{hasError:i,isStopped:s,observers:e}=this;return i||s?ut:(this.currentObservers=null,e.push(t),new lt((()=>{this.currentObservers=null,dt(e,t)})))}_checkFinalizedStatuses(t){const{hasError:i,thrownError:s,isStopped:e}=this;i?t.error(s):e&&t.complete()}asObservable(){const t=new jt;return t.source=this,t}}Ot.create=(t,i)=>new $t(t,i);class $t extends Ot{constructor(t,i){super(),this.destination=t,this.source=i}next(t){var i,s;null===(s=null===(i=this.destination)||void 0===i?void 0:i.next)||void 0===s||s.call(i,t)}error(t){var i,s;null===(s=null===(i=this.destination)||void 0===i?void 0:i.error)||void 0===s||s.call(i,t)}complete(){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===i||i.call(t)}_subscribe(t){var i,s;return null!==(s=null===(i=this.source)||void 0===i?void 0:i.subscribe(t))&&void 0!==s?s:ut}}const Wt=c.flow((t=>`Bearer ${t}`),(t=>new Headers({Authorization:t})),(t=>({headers:t}))),zt=(Bt=x,function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];for(var s=t.length,e=tt(s),n=Bt.map(t[0],e),r=1;r<s;r++)n=Bt.ap(n,t[r]);return n});var Bt;const Lt=(t,i={})=>g(zt(y(),w),f,m(b(t,i))),Nt=t=>i=>s=>e=>n=>{const r=c.pipe(e,k(encodeURIComponent),C((()=>{const e=[];i&&e.push(`color=${i}`),s&&e.push(s);const n=I(e);return`product/${t}/similar-products${n}`}),(e=>{const n=[];e&&n.push(`campaigns=${e}`),i&&n.push(`color=${i}`),s&&n.push(s);const r=I(n);return`product/${t}/similar-products${r}`})));return Lt(r,n)},Dt=t=>i=>s=>e=>n=>{const r=c.pipe(e,k(encodeURIComponent),C((()=>{const e=[];i&&e.push(`color=${i}`),s&&e.push(s);const n=I(e);return`product/${t}/cross-selling-products${n}`}),(e=>{const n=[];e&&n.push(`campaigns=${e}`),i&&n.push(`color=${i}`),s&&n.push(s);const r=I(n);return`product/${t}/cross-selling-products${r}`})));return Lt(r,n)},Mt={de:{translation:{noResultText:"Keine Ergebnisse! Versuche es bitte später erneut.",basketButtonText:"In den Warenkorb"}},en:{translation:{noResultText:"No results! Please, try again later.",basketButtonText:"Add to Basket"}}};var Ft=function(t,i){var s={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&i.indexOf(e)<0&&(s[e]=t[e]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(e=Object.getOwnPropertySymbols(t);n<e.length;n++)i.indexOf(e[n])<0&&Object.prototype.propertyIsEnumerable.call(t,e[n])&&(s[e[n]]=t[e[n]])}return s};const Ut=class{constructor(i){t(this,i),this.vviinnWidgetLoad=n(this,"vviinnWidgetLoad",7),this.vviinnProductLoad=n(this,"vviinnProductLoad",7),this.vviinnProductView=n(this,"vviinnProductView",7),this.vviinnProductClick=n(this,"vviinnProductClick",7),this.vviinnResultLoad=n(this,"vviinnResultLoad",7),this.vviinnResultView=n(this,"vviinnResultView",7),this.vviinnNoResult=n(this,"vviinnNoResult",7),this.vviinnAddToBasket=n(this,"vviinnAddToBasket",7),this.globalSlotsChanged=n(this,"globalSlotsChanged",7),this.vviinnRecommendationsLoaded=n(this,"vviinnRecommendationsLoaded",7),this.vviinnWidgetOpen=n(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=n(this,"vviinnWidgetClose",7),this.productImageLoadedSubject=new Ot,this.resultViewed=!1,this.setTrackingDeactivated=t=>{"rejected"===t.status&&(this.trackingDeactivated=!0)},this.blockTitle="Recommended products",this.imageRatio=1,this.imageWidth=300,this.productId=void 0,this.token=void 0,this.currencySign="€",this.pricePrefix="",this.mode="continuity",this.campaignType="VPR",this.locale="de-DE",this.campaigns="",this.color="",this.gridArrowsDynamic=!1,this.noResultText="",this.noResultShow=!0,this.showScroll=!0,this.cssUrl=null,this.excluded="",this.productDetailNewTab=!1,this.addToBasketShow=!1,this.apiPath="https://api.vviinn.com",this.useCarousel=!0,this.showingInButton=!1,this.buttonElementId=void 0,this.closed=void 0,this.opened=void 0,this.recommendations=[],this.trackingDeactivated=!1,this.hasErrorOnLoad=!1}getBasicEventData(){return{widgetType:"VPR",campaignTypeId:this.campaignType,campaignTypeName:j[this.campaignType],widgetId:this.id,widgetVersion:$}}handleOpenLink(t,i){if(this.productDetailNewTab||i.ctrlKey||i.metaKey){let i=window.open();i?i.location.href=t:window.location.href=t}else window.location.href=t}handleProductIdChange(){this.getRecommendations()}handleCampaignTypeChange(){this.getRecommendations()}handleCampaignsChange(){this.getRecommendations()}handleApiPathChange(t){v.apiPath=t,this.getRecommendations()}trackWidgetOpen(){this.opened&&(this.vviinnWidgetOpen.emit(this.getBasicEventData()),this.trackWidgetEvent("open"))}trackWidgetClose(){this.closed&&(this.vviinnWidgetClose.emit(this.getBasicEventData()),this.trackWidgetEvent("close"))}componentDidRender(){if(this.showingInButton&&this.closed)return;const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}connectedCallback(){var t;v.apiPath=this.apiPath,v.currencySign=this.currencySign,v.locale=this.locale,this.id=null!==(t=this.buttonElementId)&&void 0!==t?t:this.el.id,this.uiSessionId=W(),this.trackingApi=z(this.apiPath,this.token),this.getRecommendations(),V.init({lng:this.locale,fallbackLng:"de-DE",resources:Mt}),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}async componentWillLoad(){v.pricePrefix=this.pricePrefix,v.currencySign=this.currencySign,this.excluded&&(this.excluded=T(this.excluded))}trackProductLoad({detail:t}){this.productImageLoadedSubject.next(t.productId);const i=this.getProductTrackEvent(t,"load");i&&this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}trackProductView({detail:t}){this.resultViewed||(this.resultViewed=!0,this.vviinnResultView.emit(this.getBasicEventData()),this.trackResultEvent("view"));const i=this.getProductTrackEvent(t,"view");i&&this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}async trackProductClick({detail:t}){const{productId:i,clickEvent:s}=t,e=this.recommendations.find((t=>t.productId===i));if(!e||!e.deeplink)return;const n=this.getProductTrackEvent(t,"click");this.trackingDeactivated?this.handleOpenLink(e.deeplink,s):await this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated).finally((()=>{this.handleOpenLink(e.deeplink,s)}))}async trackAuxClick({detail:t}){const{productId:i}=t,s=this.recommendations.find((t=>t.productId===i));if(!s||!s.deeplink)return;const e=this.getProductTrackEvent(t,"click");this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}async trackAddToBasket({detail:t}){const{productRank:i,productId:s}=t,e=Ft(t,["productRank","productId","campaignTypeId","widgetType"]);let n;const r=Object.assign({session_id:this.uiSessionId,rank:i,product:s},e);"VCS"===this.campaignType?n=B(r):"VPR"===this.campaignType&&(n=L(r)),this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated)}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Ft(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({action:t,session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=N(n):"VPR"===this.campaignType&&(e=D(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Ft(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=M(t)(n):"VPR"===this.campaignType&&(e=F(t)(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}getProductTrackEvent(t,i){if(this.trackingDeactivated)return null;const{productRank:s,productId:e,campaignTypeId:n}=t,r=Ft(t,["productRank","productId","campaignTypeId","widgetType","clickEvent"]);let o;const a=Object.assign({session_id:this.uiSessionId,rank:s,product:e},r);return"VCS"===n?o=U(i)(a):"VPR"===n&&(o=G(i)(a)),o}async getRecommendations(){if(void 0===this.productId||void 0===this.token)return;const t=this.campaignType.length>0?this.campaignType:"VPR",i=Wt(this.token),s=c.pipe(P.of((t=>c.pipe(E(t),A((()=>Nt),(()=>Dt))))(t)),P.ap(P.of(this.productId)),P.ap(P.of(this.color)),P.ap(P.of(this.excluded)),P.ap(P.of(R(this.campaigns))),P.ap(P.of(i)),P.flatten),e=await s();c.pipe(e,u.fold((t=>{this.handleError(t),this.vviinnNoResult.emit(this.getBasicEventData()),this.vviinnRecommendationsLoaded.emit()}),(t=>this.handleRecommendationsSuccess(t))))}handleError(t){this.hasErrorOnLoad=!0}handleRecommendationsSuccess(t){var i;this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.recommendations=null!==(i=null==t?void 0:t.extended)&&void 0!==i?i:t,p.results=this.recommendations,this.productIds=this.recommendations.map((t=>t.productId)),this.productImageLoadedSubject.subscribe((t=>{this.productIds=this.productIds.filter((i=>i!==t)),0===this.productIds.length&&this.vviinnRecommendationsLoaded.emit()}))}isExternalCSS(){return this.cssUrl&&this.cssUrl.length>0}renderExternalCSS(){return this.isExternalCSS()?i("link",{href:this.cssUrl,rel:"stylesheet"}):""}render(){return 0===this.recommendations.length&&!1===this.noResultShow?null:i(s,{class:{loaded:!0,empty:0==this.recommendations.length,[this.mode]:!0},"aria-hidden":"false"},this.addToBasketShow&&i(O,null),i(r,null,this.renderExternalCSS(),i("style",null,v.fallbackStyles),i("h2",{part:"recommendations-title"},this.blockTitle),this.recommendations.length>0&&(this.useCarousel?this.renderCarousel():this.renderResults()),0===this.recommendations.length&&this.hasErrorOnLoad&&i("p",{class:"no-result-text"},this.noResultText.length?this.noResultText:V.t("noResultText"))))}renderRecommendation(t,s){return i("vviinn-product-card",{part:"product-part",productId:t.productId,productTitle:t.title,productType:t.productType,deeplink:t.deeplink,image:t.image.thumbnail,brand:t.brand,imageWidth:this.imageWidth,imageRatio:1,price:t.price.actual,salePrice:t.price.sale,responsive:"grid"===this.mode,addToBasketShow:this.addToBasketShow,mode:this.mode,dimmedBackground:this.useDimmedBackgroundInCard(),campaignTypeId:this.campaignType,index:s,widgetElementId:this.id,widgetVersion:$})}useDimmedBackgroundInCard(){return"continuity"===this.mode||!this.useCarousel}renderResults(){return i("div",{class:"recommendations-grid",part:"recommendations-grid"},this.recommendations.map(((t,i)=>this.renderRecommendation(t,i))))}renderCarousel(){return i("vviinn-carousel",{mode:this.mode,campaignTypeId:this.campaignType,imageWidth:this.imageWidth,showScroll:this.showScroll,recommendations:this.recommendations,widgetElementId:this.id,widgetVersion:$,gridArrowsDynamic:this.gridArrowsDynamic,addToBasketShow:this.addToBasketShow})}get el(){return e(this)}static get watchers(){return{productId:["handleProductIdChange"],campaignType:["handleCampaignTypeChange"],campaigns:["handleCampaignsChange"],apiPath:["handleApiPathChange"],opened:["trackWidgetOpen"],closed:["trackWidgetClose"]}}};Ut.style=":host{display:grid;grid-gap:1rem;width:100%}:host(:not(.loaded)){position:absolute;visibility:hidden}:host(.grid) vviinn-product-card::part(image){border:1px solid #dddddd;width:100%}h2{margin:0}vviinn-product-card::part(price-container){align-self:flex-start;text-align:left;display:flex}.results{display:grid;grid-gap:1rem}.no-result-text{font-size:20px}.visually-hidden{position:absolute;top:0;left:0;z-index:-1;height:0;width:0}h2{margin:0}:host(.grid) h2{justify-content:center}:host(.grid) vviinn-product-card::part(image){min-width:100%}:host(.grid) vviinn-product-card::part(image-link){width:100%}:host(.grid) vviinn-product-card::part(title),:host(.grid) vviinn-product-card::part(brand),:host(.grid) vviinn-product-card::part(type){text-align:center}:host(.grid) vviinn-product-card::part(price-container){align-self:center}:host(.continuity) vviinn-product-card::part(title),:host(.continuity) vviinn-product-card::part(brand),:host(.continuity) vviinn-product-card::part(type),:host(.continuity) vviinn-product-card::part(deeplink){text-align:left;max-width:unset;align-self:start}";export{K as vviinn_carousel,ot as vviinn_product_card,Ut as vviinn_vpr_widget}
|
package/www/build/p-aace2b88.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const o="2.31.4";export{o as v}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,c as t,h as s,H as e,g as n}from"./p-1e83e6ba.js";import{v as h}from"./p-aace2b88.js";import{a}from"./p-a69d3568.js";import{c as o,S as r}from"./p-5303d4a8.js";const d=class{constructor(s){i(this,s),this.vviinnWidgetLoad=t(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=t(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=t(this,"vviinnWidgetClose",7),this.vviinnImageUpload=t(this,"vviinnImageUpload",7),this.vviinnProductLoad=t(this,"vviinnProductLoad",7),this.vviinnProductClick=t(this,"vviinnProductClick",7),this.vviinnProductView=t(this,"vviinnProductView",7),this.vviinnResultLoad=t(this,"vviinnResultLoad",7),this.vviinnResultView=t(this,"vviinnResultView",7),this.vviinnNoResult=t(this,"vviinnNoResult",7),this.vviinnImageCrop=t(this,"vviinnImageCrop",7),this.vviinnSelectObject=t(this,"vviinnSelectObject",7),this.vviinnSelectFilter=t(this,"vviinnSelectFilter",7),this.globalSlotsChanged=t(this,"globalSlotsChanged",7),this.getBasicEventData=()=>({widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:o.VPS,widgetId:this.el.id,widgetVersion:h}),this.token=void 0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.addStyle=!1,this.mode="modal",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.apiPath=void 0,this.buttonPressed=!1}handleModalClosed(){this.buttonPressed=!1}componentDidLoad(){const i=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(i))}handleClick(){this.buttonPressed=!0}resetButton(){this.buttonPressed=!1}render(){return s(e,{tabindex:"0",role:"button"},s("vviinn-button",{onClick:()=>{this.handleClick()},addStyle:this.addStyle,part:"vviinn-button"},s("slot",null,s(a,null))),s(r,null),s("vviinn-vps-widget",{mode:this.mode,"currency-sign":this.currencySign,token:this.token,locale:this.locale,apiPath:this.apiPath,exportparts:"brand, deeplink, currency, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, product-card, example-images",campaignId:this.campaignId,showingInButton:!0,buttonPressed:this.buttonPressed,resetVpsButton:this.resetButton.bind(this),buttonElementId:this.el.id,active:this.buttonPressed&&"modal"===this.mode,excluded:this.excluded,productDetailNewTab:this.productDetailNewTab,imageResolutionWidth:this.imageResolutionWidth}))}get el(){return n(this)}};d.style=":host{display:block}";export{d as vviinn_vps_button}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as t,h as i,H as s,g as e,c as n,F as r}from"./p-1e83e6ba.js";import{_ as o,O as a,S as h,a as c,h as d,t as l,E as u,i as p,s as v,p as g,c as m,m as b,f,g as y,b as w,A as x,d as k,e as C,j as I,k as T,T as P,l as R}from"./p-987a8e9f.js";import{C as S}from"./p-a69d3568.js";import{i as V}from"./p-2e76a5c3.js";import{s as _,c as j,f as E,a as A,S as O}from"./p-5303d4a8.js";import{v as $}from"./p-aace2b88.js";import{v as W,c as z,a as B,b as L,d as N,e as D,f as M,g as F,h as U,i as G}from"./p-da7273ce.js";const q="--vviinn-carousel-image-width",H="items-group",K=class{constructor(i){t(this,i),this.columns=0,this.resizeObserver=new ResizeObserver((()=>this.handleResize())),this.mutationObserver=new MutationObserver((()=>this.cloneSlottedContent())),this.isLastGroup=()=>this.activeContentGroup===this.getContentGroups().length-1&&"grid"===this.mode,this.isFirstGroup=()=>0===this.activeContentGroup&&"grid"===this.mode,this.moveDirection="right",this.contentGroups=[],this.activeContentGroup=0,this.isRTL=!1,this.mode="continuity",this.imageWidth=140,this.showScroll=!0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.gridArrowsDynamic=void 0,this.recommendations=[],this.widgetVersion=void 0,this.addToBasketShow=void 0}componentWillLoad(){this.isRTL="rtl"===document.dir}connectedCallback(){this.setItemWidth()}disconnectedCallback(){this.resizeObserver.disconnect()}componentDidLoad(){this.setWidth(),this.processScrollbarWidth(),this.columns=this.getColumnsNumber();const t=this.el.querySelector(".content");this.mutationObserver.observe(t,{subtree:!0,childList:!0}),this.resizeObserver.observe(this.getHostParent())}getItemWidthFromDocument(){return parseInt(getComputedStyle(document.body).getPropertyValue(q))}setItemWidth(){const t=this.getItemWidthFromDocument(),i=isNaN(t)?this.imageWidth:t;this.el.style.setProperty(q,`${i}px`)}getContentClassMap(){return{content:!0,[this.moveDirection]:!0,[this.mode]:!0,"show-scrollbar":this.showScroll}}handleResize(){this.setWidth(),this.processScrollbarWidth(),this.setItemWidth();const t=this.getColumnsNumber();t!==this.columns&&(this.columns=t)}calculateMoveStep(){const t=this.getContent().map((t=>t.getBoundingClientRect().width));return t.reduce(((t,i)=>t+i),0)/t.length}getHostParent(){return this.el.parentNode.host.parentElement}setWidth(){const t=this.getHostParent();if(!t)return;const i=getComputedStyle(t),s=t.getBoundingClientRect().width-(parseInt(i["padding-right"])+parseInt(i["padding-left"]));this.el.style.setProperty("--vviinn-carousel-content-width",`${s}px`)}getParent(){return this.el.parentNode.host.parentElement}cloneSlottedContent(){this.setWidth()}getActiveGroupIndex(){var t,i;if(!(null===(i=null===(t=this.getContentNode())||void 0===t?void 0:t.getBoundingClientRect())||void 0===i?void 0:i.left))return 0;const s=this.getContentGroups().map((t=>t.getBoundingClientRect().left)).map(((t,i)=>[t,i])).filter((t=>t[0]>=0));return s.length>0?this.isRTL?s[s.length-1][1]:s[0][1]:0}getContentNode(){return this.el.querySelector(".content")}getContent(){const t=this.getContentNode().children;return Array.from(t).map((t=>t))}getColumnsNumber(){const t=getComputedStyle(this.el).getPropertyValue("--vviinn-carousel-columns-internal"),i=parseInt(t);return i&&!isNaN(i)?i:4}getContentGroups(){return Array.from(this.el.querySelectorAll(`.${H}`))}showNext(){this.moveDirection="right";const t=this.getContentNode();requestAnimationFrame((()=>{t.scrollTo({top:0,left:t.scrollLeft+this.calculateMoveStep(),behavior:"smooth"})}))}showPrev(){this.moveDirection="left";const t=this.getContentNode();requestAnimationFrame((()=>{t.scrollTo({top:0,left:t.scrollLeft-this.calculateMoveStep(),behavior:"smooth"})}))}scroll(t){const i=this.getContentNode();requestAnimationFrame((()=>{i.scrollTo({top:0,left:this.calculateMoveStep()*t,behavior:"smooth"})}))}processScrollbarWidth(){const t=this.getContentNode();t&&(this.el.style.setProperty("--vviinn-progressbar-width",t.clientWidth*((t.scrollLeft+t.clientWidth)/t.scrollWidth)+"px"),this.activeContentGroup=this.getActiveGroupIndex())}showBullets(){return"grid"===this.mode&&this.showScroll}showScrollbar(){return"continuity"===this.mode&&this.showScroll}getClassMap(){return{[this.mode]:!0,"show-scrollbar":this.showScrollbar()}}renderRecommendation(t,s){return i("vviinn-product-card",{part:"product-part",productId:t.productId,productTitle:t.title,productType:t.productType,deeplink:t.deeplink,image:t.image.thumbnail,brand:t.brand,imageWidth:this.imageWidth,imageRatio:1,price:t.price.actual,salePrice:t.price.sale,responsive:"grid"===this.mode,dimmedBackground:"continuity"===this.mode,campaignTypeId:this.campaignTypeId,index:s,widgetElementId:this.widgetElementId,widgetVersion:this.widgetVersion,addToBasketShow:this.addToBasketShow,mode:this.mode})}renderRecommendationGroup(t){return i("div",{class:H,part:"items-group"},...t)}renderRecommendationGroups(t){return t.map((t=>this.renderRecommendationGroup(t)))}renderRecommendations(){return"grid"===this.mode?this.renderGrid():this.renderRecommendationsElements()}renderRecommendationsElements(){return this.recommendations.map(((t,i)=>this.renderRecommendation(t,i)))}renderGrid(){const t=this.renderRecommendationsElements(),i=o.chunksOf(this.getColumnsNumber())(t);return this.renderRecommendationGroups(i)}renderBullets(){const t=Math.ceil(this.recommendations.length/this.getColumnsNumber());return Array.from(Array(t).keys()).map((t=>i("div",{class:{bullet:!0,active:this.activeContentGroup===t},onClick:()=>this.scroll(t)})))}render(){return i(s,{class:this.getClassMap()},i("div",{class:Object.assign({body:!0},this.getClassMap())},i("button",{class:"prev",onClick:()=>this.showPrev(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isFirstGroup()},i(S,null)),i("div",{class:this.getContentClassMap(),onScroll:()=>this.processScrollbarWidth()},this.renderRecommendations()),i("button",{class:"next",onClick:()=>this.showNext(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isLastGroup()},i(S,null))),this.showBullets()&&i("div",{class:"bullets"},this.renderBullets()))}get el(){return e(this)}};K.style=":host{--vviinn-progressbar-width:0;--vviinn-carousel-item-width:150px;--vviinn-carousel-columns-internal:var(--vviinn-carousel-columns, 4);--vviinn-carousel-image-width-system:140px}.body{display:flex;position:relative;width:var(--vviinn-carousel-content-width);flex-direction:column}.content-wrapper *{box-sizing:border-box}.content-wrapper{overflow-y:hidden;overflow-x:auto;flex-grow:1}.bullets{margin-top:16px;display:flex;flex-direction:row;grid-gap:24px;justify-content:center}.bullet{width:10px;height:10px;background:#e0e0e0;border-radius:50%;cursor:pointer}.bullet.active{background:#161616}.content:not(.show-scrollbar),.content.grid{scrollbar-color:#fff0 #fff0}.content:not(.show-scrollbar)::-webkit-scrollbar,.content.grid::-webkit-scrollbar{opacity:0}.content{display:flex;flex-direction:row;grid-gap:8px;overflow-y:hidden;overflow-x:auto;flex-grow:1;padding-bottom:16px}.content.left>*{scroll-snap-align:start}.content.right>*{scroll-snap-align:end}:host(.continuity) button{border-radius:2px}:host(.grid) button{border-radius:50%}button{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}button{fill:#525252}button:disabled{display:none}button.prev svg{transform:rotate(180deg);margin-left:-5px}.prev{left:0}.next{right:0}.items-group{display:grid;grid-gap:16px;grid-template-columns:repeat(var(--vviinn-carousel-columns-internal), 1fr);min-width:100%}vviinn-product-card::part(price-container){text-align:center}:host(.classic) vviinn-product-card::part(title),:host(.classic) vviinn-product-card::part(brand),:host(.classic) vviinn-product-card::part(type){text-align:center}@media (max-width: 480px){:host(.modern) button{display:none}.items-group{grid-template-columns:repeat(2, 1fr)}}";class J{sendImpression(t){var i,s,e;gtag("event","view_item_list",{items:[{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list_name:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}]})}sendClick(t){var i,s,e;gtag("event","select_content",{content_type:"product",items:[{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list_name:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}]})}}class Q{constructor(){ga("require","ec")}convertProduct(t){var i,s,e;return{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",list:"VI VPR View",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}}sendImpression(t){ga("ec:addImpression",this.convertProduct(t))}sendClick(t){var i,s,e;ga("ec:addProduct",{id:t.productId,name:t.title,brand:null!==(i=t.brand)&&void 0!==i?i:"",category:null!==(s=t.productType)&&void 0!==s?s:"",price:Math.min(t.price.actual,null!==(e=t.price.sale)&&void 0!==e?e:1/0)}),ga("ec:setAction","click",{list:"VI VPR View"})}}const X=a.getMonoid(h.first()).concat(c.pipe(a.fromNullable(window.gtag),a.map((()=>new J))),c.pipe(a.fromNullable(window.ga),a.map((()=>new Q))));function Y(t,i,s){return function(e){for(var n=Array(s.length+1),r=0;r<s.length;r++)n[r]=s[r];return n[s.length]=e,0===i?t.apply(null,n):Y(t,i-1,n)}}var Z={1:function(t){return[t]},2:function(t){return function(i){return[t,i]}},3:function(t){return function(i){return function(s){return[t,i,s]}}},4:function(t){return function(i){return function(s){return function(e){return[t,i,s,e]}}}},5:function(t){return function(i){return function(s){return function(e){return function(n){return[t,i,s,e,n]}}}}}};function tt(t){return d.call(Z,t)||(Z[t]=Y(l,t-1,[])),Z[t]}const it=/fit\/\d+\//,st=(t,i)=>c.pipe((t=>c.pipe(t.match(it),u.fromNullable(t),u.map((()=>t))))(t),u.map((t=>t.replace(it,`fit/${i}/`))),u.getOrElse((()=>t))),et=(t,s)=>t.deeplink?i("a",{class:t.part,part:t.part,href:t.deeplink},s):s,nt=t=>{const s=t.priceType,e=new Intl.NumberFormat(t.locale,{minimumFractionDigits:2}).format(t.price),n=t.prefix?i("span",{part:"price-prefix"},t.prefix+" "):null,r=t.currency?i("span",{part:"currency"}," "+t.currency):null;return i("span",{class:"price-amount",part:"price-amount"+(s?"-"+s:"")},n,e,r)},rt=t=>i("span",{class:"price-container",part:"price-container"},t.salePrice?[i("span",{class:"price-sale",part:"price-sale"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.salePrice,locale:t.locale,priceType:"sale"})),i("span",{class:"price-outdated",part:"price-outdated"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"outdated"}))]:i("span",{class:"price-regular",part:"price-regular"},i(nt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"regular"}))),ot=class{constructor(i){t(this,i),this.vviinnProductLoad=n(this,"vviinnProductLoad",7),this.vviinnProductView=n(this,"vviinnProductView",7),this.vviinnProductClick=n(this,"vviinnProductClick",7),this.vviinnAddToBasket=n(this,"vviinnAddToBasket",7),this.vviinnAuxClick=n(this,"vviinnAuxClick",7),this.productData=null,this.intersectionObserver=new IntersectionObserver(this.intersectionCallback.bind(this),{threshold:1}),this.brand=void 0,this.currency=void 0,this.deeplink=void 0,this.image=void 0,this.imageRatio=1,this.imageWidth=200,this.locale=void 0,this.price=void 0,this.pricePrefix=void 0,this.productId=void 0,this.productTitle=void 0,this.productType=void 0,this.salePrice=void 0,this.responsive=!1,this.dimmedBackground=!1,this.mode=void 0,this.addToBasketShow=void 0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.buttonElementId=void 0,this.widgetVersion=void 0,this.index=0,this.imageLoaded=!1}connectedCallback(){this.productData=this.getProductData()}componentWillLoad(){_(this,this.el)}getWidgetType(){return"VPR"===this.campaignTypeId||"VCS"===this.campaignTypeId?"VPR":"VPS"}getProductData(){var t;return{productId:this.productId,productRank:this.index,productName:this.productTitle,productType:this.productType,widgetType:this.getWidgetType(),campaignTypeId:this.campaignTypeId,campaignTypeName:j[this.campaignTypeId],widgetId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.widgetElementId,widgetVersion:this.widgetVersion}}intersectionCallback(t){t.some((t=>t.isIntersecting))&&(c.pipe(X,a.map((t=>t.sendImpression(this.getProduct())))),this.vviinnProductView.emit(this.productData),this.intersectionObserver.disconnect())}componentDidLoad(){this.vviinnProductLoad.emit(this.productData),this.intersectionObserver.observe(this.el),this.el.shadowRoot.querySelectorAll("a").forEach((t=>{t.addEventListener("click",(t=>{t.preventDefault(),t.stopImmediatePropagation(),this.vviinnProductClick.emit(Object.assign(Object.assign({},this.productData),{clickEvent:t})),c.pipe(X,a.match((()=>null),(t=>t.sendClick(this.getProduct()))))})),t.addEventListener("auxclick",(()=>{this.vviinnAuxClick.emit(Object.assign({},this.productData))}))}))}getProduct(){return p.results.find((t=>t.productId===this.productId))}renderImage(){const t={width:this.imageWidth,height:this.imageWidth*this.imageRatio,src:this.image,title:this.productTitle,lazy:!1};return this.responsive?((t,s=(()=>{}))=>i("picture",null,i("img",{loading:t.lazy?"lazy":"eager",part:"image",class:"image responsive",src:st(t.src,t.width),alt:t.title,onLoad:s})))(t):((t,s=(()=>{}))=>i("picture",null,i("img",{loading:t.lazy?"lazy":"eager",part:"image",class:"image",width:t.width,height:t.height,src:st(t.src,t.width),alt:t.title,onLoad:s})))(t)}render(){var t,e,n;return i(s,{part:"product-card",class:{dimmed:this.dimmedBackground},exportparts:"brand, currency, deeplink, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, basket-button"},i(et,{deeplink:this.deeplink,part:"image-link"},this.renderImage()),i(et,{deeplink:this.deeplink,part:"deeplink"},i("span",{class:"title",part:"title"},this.productTitle)),i("span",{class:"brand",part:"brand"},this.brand),i("span",{class:"type",part:"type"},this.productType),i(rt,{prefix:null!==(t=this.pricePrefix)&&void 0!==t?t:v.pricePrefix,currency:null!==(e=this.currency)&&void 0!==e?e:v.currencySign,price:this.price,salePrice:this.salePrice,locale:null!==(n=this.locale)&&void 0!==n?n:v.locale}),this.addToBasketShow&&i("button",{class:{"basket-button":!0,"basket-button-grid":"grid"===this.mode,"basket-button-continuity ":"continuity"===this.mode},part:"basket-button",onClick:()=>{this.vviinnAddToBasket.emit(this.productData)}},i("slot",{name:"vviinn-basket-button-text"},i("span",null,V.t("basketButtonText")))))}get el(){return e(this)}};function at(t){return"function"==typeof t}function ht(t){const i=t((t=>{Error.call(t),t.stack=(new Error).stack}));return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i}ot.style=':host{align-items:center;display:flex;flex-direction:column;gap:8px;height:100%}.price-container{display:flex;flex-direction:column;margin-top:auto}.price-sale,.price-regular{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#161616}.price-outdated{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#757575;text-decoration:line-through}.product-type{word-wrap:anywhere}.image{display:grid;align-content:center;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:contain;object-fit:contain;text-align:center;box-sizing:border-box}img.responsive{width:100%;height:auto;aspect-ratio:1}.brand,.type{display:none}.title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#161616;display:-webkit-box;font-size:16px;font-style:normal;font-weight:500;line-height:24px;margin-bottom:8px;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px;margin-top:8px}.basket-button.basket-button-grid{width:100%;background:none;border:1px solid #dddddd}.basket-button.basket-button-continuity{align-self:start;background:#f7f7f7}.basket-button-continuity:hover{background:#eaeaea}.basket-button-grid:hover{background:#f7f7f7}@media (max-width: 640px){.basket-button{padding:8px 10px}}:host(.dimmed) picture::before{content:"";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}';const ct=ht((t=>function(i){t(this),this.message=i?`${i.length} errors occurred during unsubscription:\n${i.map(((t,i)=>`${i+1}) ${t.toString()}`)).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=i}));function dt(t,i){if(t){const s=t.indexOf(i);0<=s&&t.splice(s,1)}}class lt{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;const{_parentage:i}=this;if(i)if(this._parentage=null,Array.isArray(i))for(const t of i)t.remove(this);else i.remove(this);const{initialTeardown:s}=this;if(at(s))try{s()}catch(i){t=i instanceof ct?i.errors:[i]}const{_finalizers:e}=this;if(e){this._finalizers=null;for(const i of e)try{vt(i)}catch(i){t=null!=t?t:[],i instanceof ct?t=[...t,...i.errors]:t.push(i)}}if(t)throw new ct(t)}}add(t){var i;if(t&&t!==this)if(this.closed)vt(t);else{if(t instanceof lt){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(i=this._finalizers)&&void 0!==i?i:[]).push(t)}}_hasParent(t){const{_parentage:i}=this;return i===t||Array.isArray(i)&&i.includes(t)}_addParent(t){const{_parentage:i}=this;this._parentage=Array.isArray(i)?(i.push(t),i):i?[i,t]:t}_removeParent(t){const{_parentage:i}=this;i===t?this._parentage=null:Array.isArray(i)&&dt(i,t)}remove(t){const{_finalizers:i}=this;i&&dt(i,t),t instanceof lt&&t._removeParent(this)}}lt.EMPTY=(()=>{const t=new lt;return t.closed=!0,t})();const ut=lt.EMPTY;function pt(t){return t instanceof lt||t&&"closed"in t&&at(t.remove)&&at(t.add)&&at(t.unsubscribe)}function vt(t){at(t)?t():t.unsubscribe()}const gt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},mt={setTimeout(t,i,...s){const{delegate:e}=mt;return(null==e?void 0:e.setTimeout)?e.setTimeout(t,i,...s):setTimeout(t,i,...s)},clearTimeout(t){const{delegate:i}=mt;return((null==i?void 0:i.clearTimeout)||clearTimeout)(t)},delegate:void 0};function bt(){}const ft=yt("C",void 0,void 0);function yt(t,i,s){return{kind:t,value:i,error:s}}function wt(t){t()}class xt extends lt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,pt(t)&&t.add(this)):this.destination=St}static create(t,i,s){return new Tt(t,i,s)}next(t){this.isStopped?Rt(function(t){return yt("N",t,void 0)}(t),this):this._next(t)}error(t){this.isStopped?Rt(yt("E",void 0,t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Rt(ft,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const kt=Function.prototype.bind;function Ct(t,i){return kt.call(t,i)}class It{constructor(t){this.partialObserver=t}next(t){const{partialObserver:i}=this;if(i.next)try{i.next(t)}catch(t){Pt(t)}}error(t){const{partialObserver:i}=this;if(i.error)try{i.error(t)}catch(t){Pt(t)}else Pt(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(t){Pt(t)}}}class Tt extends xt{constructor(t,i,s){let e;if(super(),at(t)||!t)e={next:null!=t?t:void 0,error:null!=i?i:void 0,complete:null!=s?s:void 0};else{let i;this&>.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),e={next:t.next&&Ct(t.next,i),error:t.error&&Ct(t.error,i),complete:t.complete&&Ct(t.complete,i)}):e=t}this.destination=new It(e)}}function Pt(t){var i;i=t,mt.setTimeout((()=>{const{onUnhandledError:t}=gt;if(!t)throw i;t(i)}))}function Rt(t,i){const{onStoppedNotification:s}=gt;s&&mt.setTimeout((()=>s(t,i)))}const St={closed:!0,next:bt,error:function(t){throw t},complete:bt},Vt="function"==typeof Symbol&&Symbol.observable||"@@observable";function _t(t){return t}class jt{constructor(t){t&&(this._subscribe=t)}lift(t){const i=new jt;return i.source=this,i.operator=t,i}subscribe(t,i,s){const e=(n=t)&&n instanceof xt||function(t){return t&&at(t.next)&&at(t.error)&&at(t.complete)}(n)&&pt(n)?t:new Tt(t,i,s);var n;return wt((()=>{const{operator:t,source:i}=this;e.add(t?t.call(e,i):i?this._subscribe(e):this._trySubscribe(e))})),e}_trySubscribe(t){try{return this._subscribe(t)}catch(i){t.error(i)}}forEach(t,i){return new(i=Et(i))(((i,s)=>{const e=new Tt({next:i=>{try{t(i)}catch(t){s(t),e.unsubscribe()}},error:s,complete:i});this.subscribe(e)}))}_subscribe(t){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(t)}[Vt](){return this}pipe(...t){return(0===(i=t).length?_t:1===i.length?i[0]:function(t){return i.reduce(((t,i)=>i(t)),t)})(this);var i}toPromise(t){return new(t=Et(t))(((t,i)=>{let s;this.subscribe((t=>s=t),(t=>i(t)),(()=>t(s)))}))}}function Et(t){var i;return null!==(i=null!=t?t:gt.Promise)&&void 0!==i?i:Promise}jt.create=t=>new jt(t);const At=ht((t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}));class Ot extends jt{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){const i=new $t(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new At}next(t){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}}))}error(t){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;const{observers:i}=this;for(;i.length;)i.shift().error(t)}}))}complete(){wt((()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:t}=this;for(;t.length;)t.shift().complete()}}))}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){const{hasError:i,isStopped:s,observers:e}=this;return i||s?ut:(this.currentObservers=null,e.push(t),new lt((()=>{this.currentObservers=null,dt(e,t)})))}_checkFinalizedStatuses(t){const{hasError:i,thrownError:s,isStopped:e}=this;i?t.error(s):e&&t.complete()}asObservable(){const t=new jt;return t.source=this,t}}Ot.create=(t,i)=>new $t(t,i);class $t extends Ot{constructor(t,i){super(),this.destination=t,this.source=i}next(t){var i,s;null===(s=null===(i=this.destination)||void 0===i?void 0:i.next)||void 0===s||s.call(i,t)}error(t){var i,s;null===(s=null===(i=this.destination)||void 0===i?void 0:i.error)||void 0===s||s.call(i,t)}complete(){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===i||i.call(t)}_subscribe(t){var i,s;return null!==(s=null===(i=this.source)||void 0===i?void 0:i.subscribe(t))&&void 0!==s?s:ut}}const Wt=c.flow((t=>`Bearer ${t}`),(t=>new Headers({Authorization:t})),(t=>({headers:t}))),zt=(Bt=x,function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];for(var s=t.length,e=tt(s),n=Bt.map(t[0],e),r=1;r<s;r++)n=Bt.ap(n,t[r]);return n});var Bt;const Lt=(t,i={})=>g(zt(y(),w),f,m(b(t,i))),Nt=t=>i=>s=>e=>n=>{const r=c.pipe(e,k(encodeURIComponent),C((()=>{const e=[];i&&e.push(`color=${i}`),s&&e.push(s);const n=I(e);return`product/${t}/similar-products${n}`}),(e=>{const n=[];e&&n.push(`campaigns=${e}`),i&&n.push(`color=${i}`),s&&n.push(s);const r=I(n);return`product/${t}/similar-products${r}`})));return Lt(r,n)},Dt=t=>i=>s=>e=>n=>{const r=c.pipe(e,k(encodeURIComponent),C((()=>{const e=[];i&&e.push(`color=${i}`),s&&e.push(s);const n=I(e);return`product/${t}/cross-selling-products${n}`}),(e=>{const n=[];e&&n.push(`campaigns=${e}`),i&&n.push(`color=${i}`),s&&n.push(s);const r=I(n);return`product/${t}/cross-selling-products${r}`})));return Lt(r,n)},Mt={de:{translation:{noResultText:"Keine Ergebnisse! Versuche es bitte später erneut.",basketButtonText:"In den Warenkorb"}},en:{translation:{noResultText:"No results! Please, try again later.",basketButtonText:"Add to Basket"}}};var Ft=function(t,i){var s={};for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&i.indexOf(e)<0&&(s[e]=t[e]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(e=Object.getOwnPropertySymbols(t);n<e.length;n++)i.indexOf(e[n])<0&&Object.prototype.propertyIsEnumerable.call(t,e[n])&&(s[e[n]]=t[e[n]])}return s};const Ut=class{constructor(i){t(this,i),this.vviinnWidgetLoad=n(this,"vviinnWidgetLoad",7),this.vviinnProductLoad=n(this,"vviinnProductLoad",7),this.vviinnProductView=n(this,"vviinnProductView",7),this.vviinnProductClick=n(this,"vviinnProductClick",7),this.vviinnResultLoad=n(this,"vviinnResultLoad",7),this.vviinnResultView=n(this,"vviinnResultView",7),this.vviinnNoResult=n(this,"vviinnNoResult",7),this.vviinnAddToBasket=n(this,"vviinnAddToBasket",7),this.globalSlotsChanged=n(this,"globalSlotsChanged",7),this.vviinnRecommendationsLoaded=n(this,"vviinnRecommendationsLoaded",7),this.vviinnWidgetOpen=n(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=n(this,"vviinnWidgetClose",7),this.productImageLoadedSubject=new Ot,this.resultViewed=!1,this.setTrackingDeactivated=t=>{"rejected"===t.status&&(this.trackingDeactivated=!0)},this.blockTitle="Recommended products",this.imageRatio=1,this.imageWidth=300,this.productId=void 0,this.token=void 0,this.currencySign="€",this.pricePrefix="",this.mode="continuity",this.campaignType="VPR",this.locale="de-DE",this.campaigns="",this.color="",this.gridArrowsDynamic=!1,this.noResultText="",this.noResultShow=!0,this.showScroll=!0,this.cssUrl=null,this.excluded="",this.productDetailNewTab=!1,this.addToBasketShow=!1,this.apiPath="https://api.vviinn.com",this.useCarousel=!0,this.showingInButton=!1,this.buttonElementId=void 0,this.closed=void 0,this.opened=void 0,this.recommendations=[],this.trackingDeactivated=!1,this.hasErrorOnLoad=!1}getBasicEventData(){return{widgetType:"VPR",campaignTypeId:this.campaignType,campaignTypeName:j[this.campaignType],widgetId:this.id,widgetVersion:$}}handleOpenLink(t,i){if(this.productDetailNewTab||i.ctrlKey||i.metaKey){let i=window.open();i?i.location.href=t:window.location.href=t}else window.location.href=t}handleProductIdChange(){this.getRecommendations()}handleCampaignTypeChange(){this.getRecommendations()}handleCampaignsChange(){this.getRecommendations()}handleApiPathChange(t){v.apiPath=t,this.getRecommendations()}trackWidgetOpen(){this.opened&&(this.vviinnWidgetOpen.emit(this.getBasicEventData()),this.trackWidgetEvent("open"))}trackWidgetClose(){this.closed&&(this.vviinnWidgetClose.emit(this.getBasicEventData()),this.trackWidgetEvent("close"))}componentDidRender(){if(this.showingInButton&&this.closed)return;const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}connectedCallback(){var t;v.apiPath=this.apiPath,v.currencySign=this.currencySign,v.locale=this.locale,this.id=null!==(t=this.buttonElementId)&&void 0!==t?t:this.el.id,this.uiSessionId=W(),this.trackingApi=z(this.apiPath,this.token),this.getRecommendations(),V.init({lng:this.locale,fallbackLng:"de-DE",resources:Mt}),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}async componentWillLoad(){v.pricePrefix=this.pricePrefix,v.currencySign=this.currencySign,this.excluded&&(this.excluded=T(this.excluded))}trackProductLoad({detail:t}){this.productImageLoadedSubject.next(t.productId);const i=this.getProductTrackEvent(t,"load");i&&this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}trackProductView({detail:t}){this.resultViewed||(this.resultViewed=!0,this.vviinnResultView.emit(this.getBasicEventData()),this.trackResultEvent("view"));const i=this.getProductTrackEvent(t,"view");i&&this.trackingApi.trackEvent(i).then(this.setTrackingDeactivated)}async trackProductClick({detail:t}){const{productId:i,clickEvent:s}=t,e=this.recommendations.find((t=>t.productId===i));if(!e||!e.deeplink)return;const n=this.getProductTrackEvent(t,"click");this.trackingDeactivated?this.handleOpenLink(e.deeplink,s):await this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated).finally((()=>{this.handleOpenLink(e.deeplink,s)}))}async trackAuxClick({detail:t}){const{productId:i}=t,s=this.recommendations.find((t=>t.productId===i));if(!s||!s.deeplink)return;const e=this.getProductTrackEvent(t,"click");this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}async trackAddToBasket({detail:t}){const{productRank:i,productId:s}=t,e=Ft(t,["productRank","productId","campaignTypeId","widgetType"]);let n;const r=Object.assign({session_id:this.uiSessionId,rank:i,product:s},e);"VCS"===this.campaignType?n=B(r):"VPR"===this.campaignType&&(n=L(r)),this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated)}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Ft(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({action:t,session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=N(n):"VPR"===this.campaignType&&(e=D(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Ft(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=M(t)(n):"VPR"===this.campaignType&&(e=F(t)(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}getProductTrackEvent(t,i){if(this.trackingDeactivated)return null;const{productRank:s,productId:e,campaignTypeId:n}=t,r=Ft(t,["productRank","productId","campaignTypeId","widgetType","clickEvent"]);let o;const a=Object.assign({session_id:this.uiSessionId,rank:s,product:e},r);return"VCS"===n?o=U(i)(a):"VPR"===n&&(o=G(i)(a)),o}async getRecommendations(){if(void 0===this.productId||void 0===this.token)return;const t=this.campaignType.length>0?this.campaignType:"VPR",i=Wt(this.token),s=c.pipe(P.of((t=>c.pipe(E(t),A((()=>Nt),(()=>Dt))))(t)),P.ap(P.of(this.productId)),P.ap(P.of(this.color)),P.ap(P.of(this.excluded)),P.ap(P.of(R(this.campaigns))),P.ap(P.of(i)),P.flatten),e=await s();c.pipe(e,u.fold((t=>{this.handleError(t),this.vviinnNoResult.emit(this.getBasicEventData()),this.vviinnRecommendationsLoaded.emit()}),(t=>this.handleRecommendationsSuccess(t))))}handleError(t){this.hasErrorOnLoad=!0}handleRecommendationsSuccess(t){var i;this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.recommendations=null!==(i=null==t?void 0:t.extended)&&void 0!==i?i:t,p.results=this.recommendations,this.productIds=this.recommendations.map((t=>t.productId)),this.productImageLoadedSubject.subscribe((t=>{this.productIds=this.productIds.filter((i=>i!==t)),0===this.productIds.length&&this.vviinnRecommendationsLoaded.emit()}))}isExternalCSS(){return this.cssUrl&&this.cssUrl.length>0}renderExternalCSS(){return this.isExternalCSS()?i("link",{href:this.cssUrl,rel:"stylesheet"}):""}render(){return 0===this.recommendations.length&&!1===this.noResultShow?null:i(s,{class:{loaded:!0,empty:0==this.recommendations.length,[this.mode]:!0},"aria-hidden":"false"},this.addToBasketShow&&i(O,null),i(r,null,this.renderExternalCSS(),i("style",null,v.fallbackStyles),i("h2",{part:"recommendations-title"},this.blockTitle),this.recommendations.length>0&&(this.useCarousel?this.renderCarousel():this.renderResults()),0===this.recommendations.length&&this.hasErrorOnLoad&&i("p",{class:"no-result-text"},this.noResultText.length?this.noResultText:V.t("noResultText"))))}renderRecommendation(t,s){return i("vviinn-product-card",{part:"product-part",productId:t.productId,productTitle:t.title,productType:t.productType,deeplink:t.deeplink,image:t.image.thumbnail,brand:t.brand,imageWidth:this.imageWidth,imageRatio:1,price:t.price.actual,salePrice:t.price.sale,responsive:"grid"===this.mode,addToBasketShow:this.addToBasketShow,mode:this.mode,dimmedBackground:this.useDimmedBackgroundInCard(),campaignTypeId:this.campaignType,index:s,widgetElementId:this.id,widgetVersion:$})}useDimmedBackgroundInCard(){return"continuity"===this.mode||!this.useCarousel}renderResults(){return i("div",{class:"recommendations-grid",part:"recommendations-grid"},this.recommendations.map(((t,i)=>this.renderRecommendation(t,i))))}renderCarousel(){return i("vviinn-carousel",{mode:this.mode,campaignTypeId:this.campaignType,imageWidth:this.imageWidth,showScroll:this.showScroll,recommendations:this.recommendations,widgetElementId:this.id,widgetVersion:$,gridArrowsDynamic:this.gridArrowsDynamic,addToBasketShow:this.addToBasketShow})}get el(){return e(this)}static get watchers(){return{productId:["handleProductIdChange"],campaignType:["handleCampaignTypeChange"],campaigns:["handleCampaignsChange"],apiPath:["handleApiPathChange"],opened:["trackWidgetOpen"],closed:["trackWidgetClose"]}}};Ut.style=":host{display:grid;grid-gap:1rem;width:100%}:host(:not(.loaded)){position:absolute;visibility:hidden}:host(.grid) vviinn-product-card::part(image){border:1px solid #dddddd;width:100%}h2{margin:0}vviinn-product-card::part(price-container){align-self:flex-start;text-align:left;display:flex}.results{display:grid;grid-gap:1rem}.no-result-text{font-size:20px}.visually-hidden{position:absolute;top:0;left:0;z-index:-1;height:0;width:0}h2{margin:0}:host(.grid) h2{justify-content:center}:host(.grid) vviinn-product-card::part(image){min-width:100%}:host(.grid) vviinn-product-card::part(image-link){width:100%}:host(.grid) vviinn-product-card::part(title),:host(.grid) vviinn-product-card::part(brand),:host(.grid) vviinn-product-card::part(type){text-align:center}:host(.grid) vviinn-product-card::part(price-container){align-self:center}:host(.continuity) vviinn-product-card::part(title),:host(.continuity) vviinn-product-card::part(brand),:host(.continuity) vviinn-product-card::part(type),:host(.continuity) vviinn-product-card::part(deeplink){text-align:left;max-width:unset;align-self:start}";export{K as vviinn_carousel,ot as vviinn_product_card,Ut as vviinn_vpr_widget}
|