vviinn-widgets 2.41.2 → 2.42.1
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-4bbc32e8.js → package-b46bb368.js} +1 -1
- package/dist/cjs/search-filters_15.cjs.entry.js +1 -1
- package/dist/cjs/vviinn-carousel_4.cjs.entry.js +1 -1
- 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-example-image/vviinn-example-image.css +1 -0
- package/dist/esm/{package-f62597a1.js → package-f78baedf.js} +1 -1
- package/dist/esm/search-filters_15.entry.js +1 -1
- package/dist/esm/vviinn-carousel_4.entry.js +1 -1
- 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/vviinn-widgets/p-259be0c5.js +1 -0
- package/dist/vviinn-widgets/{p-c25fe11c.entry.js → p-7228f626.entry.js} +1 -1
- package/dist/vviinn-widgets/{p-c737debe.entry.js → p-7d6f04df.entry.js} +1 -1
- package/dist/vviinn-widgets/{p-f3dc8abb.entry.js → p-97e2e98c.entry.js} +1 -1
- package/{www/build/p-3adec94a.entry.js → dist/vviinn-widgets/p-b2498a3e.entry.js} +1 -1
- package/{www/build/p-758c608b.entry.js → dist/vviinn-widgets/p-e57777fe.entry.js} +1 -1
- package/dist/vviinn-widgets/vviinn-widgets.esm.js +1 -1
- package/package.json +1 -1
- package/www/build/p-259be0c5.js +1 -0
- package/www/build/{p-c25fe11c.entry.js → p-7228f626.entry.js} +1 -1
- package/www/build/{p-c737debe.entry.js → p-7d6f04df.entry.js} +1 -1
- package/www/build/{p-f3dc8abb.entry.js → p-97e2e98c.entry.js} +1 -1
- package/{dist/vviinn-widgets/p-3adec94a.entry.js → www/build/p-b2498a3e.entry.js} +1 -1
- package/{dist/vviinn-widgets/p-758c608b.entry.js → www/build/p-e57777fe.entry.js} +1 -1
- package/www/build/vviinn-widgets.esm.js +1 -1
- package/dist/vviinn-widgets/p-fca39f54.js +0 -1
- package/www/build/p-fca39f54.js +0 -1
|
@@ -198,7 +198,7 @@ const VviinnEmptyResults = class {
|
|
|
198
198
|
}
|
|
199
199
|
};
|
|
200
200
|
|
|
201
|
-
const vviinnExampleImageCss = ":host{display:block;width:100%;height:100%;min-height:0;position:relative;overflow:hidden;flex-grow:1;transition:min-height 1s}:host(.video-expanded){min-height:100%;transition:min-height 0.8s}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.buttons-group{position:absolute;width:100%;height:64px;left:0;bottom:64px;display:flex;align-items:center}.photo-button{display:none;cursor:pointer;border:none;position:absolute;padding:0;left:calc(50% - 36px);color:#6f6f6f;background-color:transparent;line-height:0}.hidden{display:none}.visible{display:flex}";
|
|
201
|
+
const vviinnExampleImageCss = ":host{display:block;width:100%;height:100%;min-height:0;position:relative;overflow:hidden;flex-grow:1;transition:min-height 1s}:host(.video-expanded){min-height:100%;transition:min-height 0.8s}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.buttons-group{position:absolute;width:100%;height:64px;left:0;bottom:64px;display:flex;align-items:center}.photo-button{display:none;cursor:pointer;border:none;position:absolute;padding:0;left:calc(50% - 36px);color:#6f6f6f;background-color:transparent;-webkit-tap-highlight-color:transparent;line-height:0}.hidden{display:none}.visible{display:flex}";
|
|
202
202
|
|
|
203
203
|
const VviinnExampleImage = class {
|
|
204
204
|
constructor(hostRef) {
|
|
@@ -7,7 +7,7 @@ const imageSearch_store = require('./imageSearch.store-dc4e98b3.js');
|
|
|
7
7
|
const index$1 = require('./index-294899ca.js');
|
|
8
8
|
const i18next = require('./i18next-74ff3413.js');
|
|
9
9
|
const customizedSlots = require('./customized-slots-49c03dc1.js');
|
|
10
|
-
const _package = require('./package-
|
|
10
|
+
const _package = require('./package-b46bb368.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) .prev,:host(.continuity) .next{border-radius:2px}:host(.grid) .prev,:host(.grid) .next{border-radius:50%}.prev,.next{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);fill:#525252;cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}.next:disabled,.prev:disabled{display:none}.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)}}";
|
|
@@ -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-b46bb368.js');
|
|
7
7
|
const index$1 = require('./index-294899ca.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-b46bb368.js');
|
|
7
7
|
const index$1 = require('./index-294899ca.js');
|
|
8
8
|
const customizedSlots = require('./customized-slots-49c03dc1.js');
|
|
9
9
|
const constants = require('./constants-7684cbfc.js');
|
|
@@ -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-b46bb368.js');
|
|
9
9
|
const customizedSlots = require('./customized-slots-49c03dc1.js');
|
|
10
10
|
const index$1 = require('./index-7ff2ab5f.js');
|
|
11
11
|
const index$2 = require('./index-294899ca.js');
|
|
@@ -194,7 +194,7 @@ const VviinnEmptyResults = class {
|
|
|
194
194
|
}
|
|
195
195
|
};
|
|
196
196
|
|
|
197
|
-
const vviinnExampleImageCss = ":host{display:block;width:100%;height:100%;min-height:0;position:relative;overflow:hidden;flex-grow:1;transition:min-height 1s}:host(.video-expanded){min-height:100%;transition:min-height 0.8s}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.buttons-group{position:absolute;width:100%;height:64px;left:0;bottom:64px;display:flex;align-items:center}.photo-button{display:none;cursor:pointer;border:none;position:absolute;padding:0;left:calc(50% - 36px);color:#6f6f6f;background-color:transparent;line-height:0}.hidden{display:none}.visible{display:flex}";
|
|
197
|
+
const vviinnExampleImageCss = ":host{display:block;width:100%;height:100%;min-height:0;position:relative;overflow:hidden;flex-grow:1;transition:min-height 1s}:host(.video-expanded){min-height:100%;transition:min-height 0.8s}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.buttons-group{position:absolute;width:100%;height:64px;left:0;bottom:64px;display:flex;align-items:center}.photo-button{display:none;cursor:pointer;border:none;position:absolute;padding:0;left:calc(50% - 36px);color:#6f6f6f;background-color:transparent;-webkit-tap-highlight-color:transparent;line-height:0}.hidden{display:none}.visible{display:flex}";
|
|
198
198
|
|
|
199
199
|
const VviinnExampleImage = class {
|
|
200
200
|
constructor(hostRef) {
|
|
@@ -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, U as UpdateIcon } from './index-dac5d1c8.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-9a9f8c20.js';
|
|
6
|
-
import { v as version } from './package-
|
|
6
|
+
import { v as version } from './package-f78baedf.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) .prev,:host(.continuity) .next{border-radius:2px}:host(.grid) .prev,:host(.grid) .next{border-radius:50%}.prev,.next{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);fill:#525252;cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}.next:disabled,.prev:disabled{display:none}.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)}}";
|
|
@@ -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-f78baedf.js';
|
|
3
3
|
import { V as VisualSearchIcon } from './index-dac5d1c8.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-f78baedf.js';
|
|
3
3
|
import { a as CameraIcon } from './index-dac5d1c8.js';
|
|
4
4
|
import { c as campaignTypeNames, S as SlotSkeleton } from './customized-slots-9a9f8c20.js';
|
|
5
5
|
import { D as DEFAULT_EXAMPLE_IMAGE } from './constants-8bf233a9.js';
|
|
@@ -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-f78baedf.js';
|
|
5
5
|
import { c as campaignTypeNames, s as slotChangeListener, S as SlotSkeleton } from './customized-slots-9a9f8c20.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
|
import { c as CameraActionIcon, d as UploadActionIcon } from './index-dac5d1c8.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o="2.42.1";export{o as v}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as t,c as i,h as e,H as n,g as s}from"./p-1e83e6ba.js";import{i as r,a as o,O as a,r as h,u as c,v as l,w as p,x as d,y as u,z as v,B as f,E as m,C as b,o as g,n as w,D as x,F as y,G as k,H as M,N as C}from"./p-987a8e9f.js";import{i as j}from"./p-2e76a5c3.js";import{W as O,R as z,S as E,A as N}from"./p-74f46a18.js";import{s as D,c as S}from"./p-c8ef8d6c.js";const T=(t,i)=>{var e;if(!t)return"";const n={};return t.href.split("?")[1].split("included[]=").join("").split("&").forEach((t=>{const[i,e]=t.split("%3A");n[i]=e})),"categories"===i?null!==(e=n.product_type)&&void 0!==e?e:n.google_product_category:n[i]},A=class{constructor(e){t(this,e),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.filterType=this.filter.name,this.filter=null,this.basicEventData=void 0,this.selectedFilter="",this.hideFilters=!0}isCategoriesFilterType(){return"categories"===this.filterType}getFilterKind(){return this.isCategoriesFilterType()?"category":this.filterType}handleFilterSelection(t){return this.isFilterSelected(t)?this.clearSelectedFilter(t):this.selectFilter(t)}selectFilter(t){r.activeIonLink=t,this.selectedFilter=T(t,this.filterType),this.vviinnSelectFilter.emit(Object.assign(Object.assign({},this.basicEventData),{action:"select",kind:this.getFilterKind()}))}clearSelectedFilter(t){r.activeIonLink=t.clear,this.selectedFilter=T(t.clear,this.filterType),this.vviinnSelectFilter.emit(Object.assign(Object.assign({},this.basicEventData),{action:"deselect",kind:this.getFilterKind()}))}toggleFilters(){this.hideFilters=!this.hideFilters}handleEnter(t,i){"Enter"===t.key&&this.handleFilterSelection(i)}isFilterSelected(t){return this.isCategoriesFilterType()?this.selectedFilter===T(t,"categories"):this.selectedFilter===t.name}render(){if(!this.filter)return null;const{name:t,filters:i}=this.filter;return e(n,{exportparts:"filter, show-more-filters"},e("div",{class:{filters:!0,"no-scrollbar-mobile":this.isCategoriesFilterType(),"no-scrollbar":!this.isCategoriesFilterType()}},i.filter(((t,i)=>!this.hideFilters||i<5)).map(((i,n)=>{const s="categories"===t?this.selectedFilter===T(i,"categories"):this.selectedFilter===i.name;return e("div",{role:"button",tabindex:"0",key:n,part:s?"filter active":"filter",class:{filter:!0,active:s},style:{"animation-delay":10*n+"ms"},onPointerUp:t=>{r.loading||(t.stopPropagation(),this.handleFilterSelection(i))},onKeyPress:t=>{r.loading||this.handleEnter(t,i)}},i.name)})),this.hideFilters&&e("div",{class:{"show-more":!0,hidden:i.length<=5,active:!this.hideFilters},role:"button",tabindex:"0","aria-role":"button",onClick:()=>{setTimeout((()=>this.toggleFilters()),300)},onKeyPress:t=>{"Enter"===t.key&&this.toggleFilters()},part:"show-more-filters"})))}get el(){return s(this)}};A.style=".filters{display:flex;flex-direction:row;overflow-x:auto;padding-left:24px;padding-right:12px;margin-bottom:12px}.filter{align-items:center;color:#525252;cursor:pointer;display:flex;margin-right:12px;height:-moz-max-content;height:max-content;min-width:-moz-max-content;min-width:max-content;transition-property:background;transition-duration:0.5s;transition-timing-function:ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:10px 12px}.show-more{display:flex}.show-more.hidden{display:none !important}.show-more::after{position:relative;content:url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 12.2l-6-6L3.2 5 8 9.8 12.8 5 14 6.2l-6 6z' fill='%23525252'/%3E%3C/svg%3E\");display:block;transform:rotate(-90deg);left:2px}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@media (max-width: 640px){.no-scrollbar-mobile{-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar-mobile::-webkit-scrollbar{display:none}}";const B=class{constructor(e){t(this,e),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.detectedObject=void 0,this.basicEventData=void 0,this.position=["0","0"]}getObjectPosition(){return o.pipe(r.imageBounds,a.map((t=>{const i=h(c(this.detectedObject).rectangle),{x:e,y:n}=o.pipe(i,l(t),p);return[`${e}px`,`${n}px`]})),a.getOrElse((()=>["0","0"])))}selectDetectedObject(){o.pipe(r.imageBounds,a.map((t=>{const i=c(this.detectedObject).rectangle,e=h(i),n=l(t)(e);r.detectedObject=this.detectedObject,r.searchArea=a.some(n)}))),d(),this.vviinnSelectObject.emit(Object.assign(Object.assign({},this.basicEventData),{detectedObject:this.detectedObject}))}isActive(){if(!this.detectedObject)return!1;if(!r.detectedObject)return!1;const t=c(this.detectedObject),i=c(r.detectedObject);return u.equals(t,i)}render(){return e(n,{class:{active:this.isActive()},onClick:()=>this.selectDetectedObject(),style:{"--x-position":this.getObjectPosition()[0],"--y-position":this.getObjectPosition()[1]}})}};B.style=':host{--color-primary-system:#0F62FE;--color-primary-hover-system:#014CDA;--color-icons-system:#2F8EDF;--spacer:8px}:host{display:block;position:absolute;left:calc(var(--x-position));top:calc(var(--y-position))}:host::before,:host::after{content:"";cursor:pointer;position:absolute;height:var(--size);width:var(--size);left:calc(-1 * var(--size) / 2);top:calc(-1 * var(--size) / 2)}:host::before{--size:36px;border-radius:50%;z-index:0;background:rgba(0, 0, 0, 0.16);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:transform 0.07s ease-in-out}:host::after{--size:13px;border-radius:50%;z-index:1;background:white;box-shadow:0px 2px 2px 0px rgba(0, 0, 0, 0.15);transition:transform 0.07s ease-in-out}:host(.active)::before{transform:scale(0.88);background:rgba(0, 0, 0, 0.4)}:host(.active)::after{transform:scale(0.67)}@media (min-width: 768px){:host(:not(.active):hover)::before{transform:scale(1.08);background:rgba(0, 0, 0, 0.32)}}';const F=class{constructor(i){t(this,i),this.handler=void 0}render(){return e(n,null,e("vviinn-error",null,e(O,null),e("h4",{slot:"title"},j.t("emptyResultsBlock.title")),e("button",{slot:"action",onClick:this.handler},j.t("emptyResultsBlock.button"))))}},_=class{constructor(e){t(this,e),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished",7),this.vviinnCameraEnabled=i(this,"vviinnCameraEnabled",7),this.exampleImageSource=void 0,this.width=0,this.height=0,this.basicEventData=void 0,this.srcObject=void 0,this.cameraButtonClicked=!1,this.selected=!1,this.videoInitialized=!1}componentDidLoad(){this.videoElement=this.el.shadowRoot.getElementById("camera-preview")}async selectImage(){let t;if(this.selected=!0,this.vviinnImageUpload.emit(this.basicEventData),this.srcObject){const i=this.videoElement,e=document.createElement("canvas");this.videoElement.pause(),e.width=i.videoWidth,e.height=i.videoHeight,e.getContext("2d").drawImage(i,0,0,e.width,e.height);const n=e.toDataURL("image/jpeg");t=await v(n)}else t=await v(this.exampleImageSource);o.pipe(await f(t),m.match((()=>this.vviinnNoResult.emit(this.basicEventData)),(()=>this.vviinnImageUploadFinished.emit()))),this.selected=!1,this.videoInitialized=!1,this.vviinnCameraEnabled.emit(!1)}handleKeyPress({key:t}){"Enter"!==t&&" "!==t||this.selectImage()}handleSrcObjectChange(){this.srcObject?(this.videoElement.srcObject=this.srcObject,this.videoElement.onloadedmetadata=()=>{this.vviinnCameraEnabled.emit(!0),this.videoInitialized=!0}):this.videoInitialized=!1}render(){return e(n,{onKeyUp:t=>this.handleKeyPress(t),class:{"video-expanded":this.cameraButtonClicked}},e("video",{id:"camera-preview",class:{hidden:!this.videoInitialized},autoplay:!0,playsinline:!0,muted:!0}),e("img",{src:this.exampleImageSource,width:this.width,height:this.height,tabindex:1,class:{hidden:this.videoInitialized}}),e("div",{class:"buttons-group"},e("button",{class:{"photo-button":!0,visible:this.videoInitialized},onClick:()=>this.selectImage()},e(z,null))))}get el(){return s(this)}static get watchers(){return{srcObject:["handleSrcObjectChange"]}}};_.style=":host{display:block;width:100%;height:100%;min-height:0;position:relative;overflow:hidden;flex-grow:1;transition:min-height 1s}:host(.video-expanded){min-height:100%;transition:min-height 0.8s}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.buttons-group{position:absolute;width:100%;height:64px;left:0;bottom:64px;display:flex;align-items:center}.photo-button{display:none;cursor:pointer;border:none;position:absolute;padding:0;left:calc(50% - 36px);color:#6f6f6f;background-color:transparent;line-height:0}.hidden{display:none}.visible{display:flex}";const R=class{constructor(e){t(this,e),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished",7),this.basicEventData=void 0,this.startUpload=void 0,this.loading=!1,this.accept="image",this.resetVpsButton=void 0,this.capture=void 0}async handleInputChange(t){this.vviinnImageUpload.emit(this.basicEventData);const i=t.target,e=await f(i.files[0]);o.pipe(e,b((({kind:t})=>this.vviinnNoResult.emit(Object.assign(Object.assign({},this.basicEventData),{reason:t}))),(()=>this.vviinnImageUploadFinished.emit()))),i.value=null}startUploadWatcher(t){t&&(this.fileInput.click(),this.resetVpsButton())}render(){return e(n,{exportparts:"button"},this.loading?e("vviinn-preloader",null):e("label",{htmlFor:"fileInput",part:"button"},e("slot",{name:"upload-button-text"},"Upload image")),e("input",{id:"fileInput",class:"visually-hidden",type:"file",capture:this.capture,accept:"image"===this.accept?"image/*":"application/octet-stream",onChange:t=>this.handleInputChange(t),ref:t=>this.fileInput=t}))}static get watchers(){return{startUpload:["startUploadWatcher"]}}};R.style=".visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}label{cursor:pointer;display:grid;width:100%;height:100%;transition:background 0.1s ease-in-out}";var W=g((function(t){
|
|
1
|
+
import{r as t,c as i,h as e,H as n,g as s}from"./p-1e83e6ba.js";import{i as r,a as o,O as a,r as h,u as c,v as l,w as p,x as d,y as u,z as v,B as f,E as m,C as b,o as g,n as w,D as x,F as y,G as k,H as M,N as C}from"./p-987a8e9f.js";import{i as j}from"./p-2e76a5c3.js";import{W as O,R as z,S as E,A as N}from"./p-74f46a18.js";import{s as D,c as S}from"./p-c8ef8d6c.js";const T=(t,i)=>{var e;if(!t)return"";const n={};return t.href.split("?")[1].split("included[]=").join("").split("&").forEach((t=>{const[i,e]=t.split("%3A");n[i]=e})),"categories"===i?null!==(e=n.product_type)&&void 0!==e?e:n.google_product_category:n[i]},A=class{constructor(e){t(this,e),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.filterType=this.filter.name,this.filter=null,this.basicEventData=void 0,this.selectedFilter="",this.hideFilters=!0}isCategoriesFilterType(){return"categories"===this.filterType}getFilterKind(){return this.isCategoriesFilterType()?"category":this.filterType}handleFilterSelection(t){return this.isFilterSelected(t)?this.clearSelectedFilter(t):this.selectFilter(t)}selectFilter(t){r.activeIonLink=t,this.selectedFilter=T(t,this.filterType),this.vviinnSelectFilter.emit(Object.assign(Object.assign({},this.basicEventData),{action:"select",kind:this.getFilterKind()}))}clearSelectedFilter(t){r.activeIonLink=t.clear,this.selectedFilter=T(t.clear,this.filterType),this.vviinnSelectFilter.emit(Object.assign(Object.assign({},this.basicEventData),{action:"deselect",kind:this.getFilterKind()}))}toggleFilters(){this.hideFilters=!this.hideFilters}handleEnter(t,i){"Enter"===t.key&&this.handleFilterSelection(i)}isFilterSelected(t){return this.isCategoriesFilterType()?this.selectedFilter===T(t,"categories"):this.selectedFilter===t.name}render(){if(!this.filter)return null;const{name:t,filters:i}=this.filter;return e(n,{exportparts:"filter, show-more-filters"},e("div",{class:{filters:!0,"no-scrollbar-mobile":this.isCategoriesFilterType(),"no-scrollbar":!this.isCategoriesFilterType()}},i.filter(((t,i)=>!this.hideFilters||i<5)).map(((i,n)=>{const s="categories"===t?this.selectedFilter===T(i,"categories"):this.selectedFilter===i.name;return e("div",{role:"button",tabindex:"0",key:n,part:s?"filter active":"filter",class:{filter:!0,active:s},style:{"animation-delay":10*n+"ms"},onPointerUp:t=>{r.loading||(t.stopPropagation(),this.handleFilterSelection(i))},onKeyPress:t=>{r.loading||this.handleEnter(t,i)}},i.name)})),this.hideFilters&&e("div",{class:{"show-more":!0,hidden:i.length<=5,active:!this.hideFilters},role:"button",tabindex:"0","aria-role":"button",onClick:()=>{setTimeout((()=>this.toggleFilters()),300)},onKeyPress:t=>{"Enter"===t.key&&this.toggleFilters()},part:"show-more-filters"})))}get el(){return s(this)}};A.style=".filters{display:flex;flex-direction:row;overflow-x:auto;padding-left:24px;padding-right:12px;margin-bottom:12px}.filter{align-items:center;color:#525252;cursor:pointer;display:flex;margin-right:12px;height:-moz-max-content;height:max-content;min-width:-moz-max-content;min-width:max-content;transition-property:background;transition-duration:0.5s;transition-timing-function:ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:10px 12px}.show-more{display:flex}.show-more.hidden{display:none !important}.show-more::after{position:relative;content:url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 12.2l-6-6L3.2 5 8 9.8 12.8 5 14 6.2l-6 6z' fill='%23525252'/%3E%3C/svg%3E\");display:block;transform:rotate(-90deg);left:2px}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@media (max-width: 640px){.no-scrollbar-mobile{-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar-mobile::-webkit-scrollbar{display:none}}";const B=class{constructor(e){t(this,e),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.detectedObject=void 0,this.basicEventData=void 0,this.position=["0","0"]}getObjectPosition(){return o.pipe(r.imageBounds,a.map((t=>{const i=h(c(this.detectedObject).rectangle),{x:e,y:n}=o.pipe(i,l(t),p);return[`${e}px`,`${n}px`]})),a.getOrElse((()=>["0","0"])))}selectDetectedObject(){o.pipe(r.imageBounds,a.map((t=>{const i=c(this.detectedObject).rectangle,e=h(i),n=l(t)(e);r.detectedObject=this.detectedObject,r.searchArea=a.some(n)}))),d(),this.vviinnSelectObject.emit(Object.assign(Object.assign({},this.basicEventData),{detectedObject:this.detectedObject}))}isActive(){if(!this.detectedObject)return!1;if(!r.detectedObject)return!1;const t=c(this.detectedObject),i=c(r.detectedObject);return u.equals(t,i)}render(){return e(n,{class:{active:this.isActive()},onClick:()=>this.selectDetectedObject(),style:{"--x-position":this.getObjectPosition()[0],"--y-position":this.getObjectPosition()[1]}})}};B.style=':host{--color-primary-system:#0F62FE;--color-primary-hover-system:#014CDA;--color-icons-system:#2F8EDF;--spacer:8px}:host{display:block;position:absolute;left:calc(var(--x-position));top:calc(var(--y-position))}:host::before,:host::after{content:"";cursor:pointer;position:absolute;height:var(--size);width:var(--size);left:calc(-1 * var(--size) / 2);top:calc(-1 * var(--size) / 2)}:host::before{--size:36px;border-radius:50%;z-index:0;background:rgba(0, 0, 0, 0.16);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:transform 0.07s ease-in-out}:host::after{--size:13px;border-radius:50%;z-index:1;background:white;box-shadow:0px 2px 2px 0px rgba(0, 0, 0, 0.15);transition:transform 0.07s ease-in-out}:host(.active)::before{transform:scale(0.88);background:rgba(0, 0, 0, 0.4)}:host(.active)::after{transform:scale(0.67)}@media (min-width: 768px){:host(:not(.active):hover)::before{transform:scale(1.08);background:rgba(0, 0, 0, 0.32)}}';const F=class{constructor(i){t(this,i),this.handler=void 0}render(){return e(n,null,e("vviinn-error",null,e(O,null),e("h4",{slot:"title"},j.t("emptyResultsBlock.title")),e("button",{slot:"action",onClick:this.handler},j.t("emptyResultsBlock.button"))))}},_=class{constructor(e){t(this,e),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished",7),this.vviinnCameraEnabled=i(this,"vviinnCameraEnabled",7),this.exampleImageSource=void 0,this.width=0,this.height=0,this.basicEventData=void 0,this.srcObject=void 0,this.cameraButtonClicked=!1,this.selected=!1,this.videoInitialized=!1}componentDidLoad(){this.videoElement=this.el.shadowRoot.getElementById("camera-preview")}async selectImage(){let t;if(this.selected=!0,this.vviinnImageUpload.emit(this.basicEventData),this.srcObject){const i=this.videoElement,e=document.createElement("canvas");this.videoElement.pause(),e.width=i.videoWidth,e.height=i.videoHeight,e.getContext("2d").drawImage(i,0,0,e.width,e.height);const n=e.toDataURL("image/jpeg");t=await v(n)}else t=await v(this.exampleImageSource);o.pipe(await f(t),m.match((()=>this.vviinnNoResult.emit(this.basicEventData)),(()=>this.vviinnImageUploadFinished.emit()))),this.selected=!1,this.videoInitialized=!1,this.vviinnCameraEnabled.emit(!1)}handleKeyPress({key:t}){"Enter"!==t&&" "!==t||this.selectImage()}handleSrcObjectChange(){this.srcObject?(this.videoElement.srcObject=this.srcObject,this.videoElement.onloadedmetadata=()=>{this.vviinnCameraEnabled.emit(!0),this.videoInitialized=!0}):this.videoInitialized=!1}render(){return e(n,{onKeyUp:t=>this.handleKeyPress(t),class:{"video-expanded":this.cameraButtonClicked}},e("video",{id:"camera-preview",class:{hidden:!this.videoInitialized},autoplay:!0,playsinline:!0,muted:!0}),e("img",{src:this.exampleImageSource,width:this.width,height:this.height,tabindex:1,class:{hidden:this.videoInitialized}}),e("div",{class:"buttons-group"},e("button",{class:{"photo-button":!0,visible:this.videoInitialized},onClick:()=>this.selectImage()},e(z,null))))}get el(){return s(this)}static get watchers(){return{srcObject:["handleSrcObjectChange"]}}};_.style=":host{display:block;width:100%;height:100%;min-height:0;position:relative;overflow:hidden;flex-grow:1;transition:min-height 1s}:host(.video-expanded){min-height:100%;transition:min-height 0.8s}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.buttons-group{position:absolute;width:100%;height:64px;left:0;bottom:64px;display:flex;align-items:center}.photo-button{display:none;cursor:pointer;border:none;position:absolute;padding:0;left:calc(50% - 36px);color:#6f6f6f;background-color:transparent;-webkit-tap-highlight-color:transparent;line-height:0}.hidden{display:none}.visible{display:flex}";const R=class{constructor(e){t(this,e),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished",7),this.basicEventData=void 0,this.startUpload=void 0,this.loading=!1,this.accept="image",this.resetVpsButton=void 0,this.capture=void 0}async handleInputChange(t){this.vviinnImageUpload.emit(this.basicEventData);const i=t.target,e=await f(i.files[0]);o.pipe(e,b((({kind:t})=>this.vviinnNoResult.emit(Object.assign(Object.assign({},this.basicEventData),{reason:t}))),(()=>this.vviinnImageUploadFinished.emit()))),i.value=null}startUploadWatcher(t){t&&(this.fileInput.click(),this.resetVpsButton())}render(){return e(n,{exportparts:"button"},this.loading?e("vviinn-preloader",null):e("label",{htmlFor:"fileInput",part:"button"},e("slot",{name:"upload-button-text"},"Upload image")),e("input",{id:"fileInput",class:"visually-hidden",type:"file",capture:this.capture,accept:"image"===this.accept?"image/*":"application/octet-stream",onChange:t=>this.handleInputChange(t),ref:t=>this.fileInput=t}))}static get watchers(){return{startUpload:["startUploadWatcher"]}}};R.style=".visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}label{cursor:pointer;display:grid;width:100%;height:100%;transition:background 0.1s ease-in-out}";var W=g((function(t){
|
|
2
2
|
/*!
|
|
3
3
|
* Cropper.js v1.5.13
|
|
4
4
|
* https://fengyuanchen.github.io/cropperjs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,c as i,h as s,H as e,g as n}from"./p-1e83e6ba.js";import{v as h}from"./p-
|
|
1
|
+
import{r as t,c as i,h as s,H as e,g as n}from"./p-1e83e6ba.js";import{v as h}from"./p-259be0c5.js";import{a as o}from"./p-74f46a18.js";import{c as a,S as r}from"./p-c8ef8d6c.js";import{D as d}from"./p-cc013cd2.js";const l=class{constructor(s){t(this,s),this.vviinnWidgetLoad=i(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=i(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=i(this,"vviinnWidgetClose",7),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnProductLoad=i(this,"vviinnProductLoad",7),this.vviinnProductClick=i(this,"vviinnProductClick",7),this.vviinnProductView=i(this,"vviinnProductView",7),this.vviinnResultLoad=i(this,"vviinnResultLoad",7),this.vviinnResultView=i(this,"vviinnResultView",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageCrop=i(this,"vviinnImageCrop",7),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.globalSlotsChanged=i(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.exampleImageSource=d,this.apiPath=void 0,this.buttonPressed=!1}handleModalClosed(){this.buttonPressed=!1}componentDidLoad(){const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}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, upload-photo_button, show-files_button, start-camera_button",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,exampleImageSource:this.exampleImageSource}))}get el(){return n(this)}};l.style=":host{display:block}";export{l as vviinn_vps_button}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,c as i,h as e,H as s,g as a}from"./p-1e83e6ba.js";import{i as n,s as r,a as o,O as d,k as l,q as c}from"./p-987a8e9f.js";import{i as h}from"./p-2e76a5c3.js";import{v as p}from"./p-fca39f54.js";import{c as u,s as g,S as v}from"./p-c8ef8d6c.js";import{j as m,k as b,v as f,c as x,l as y,m as w,n as k}from"./p-da7273ce.js";import{c as T,d as j}from"./p-74f46a18.js";import{D as B}from"./p-cc013cd2.js";const S={de:{translation:{exampleImagesTitle:"Mit den Beispielbildern die Suche direkt ausprobieren",imageUploadButtonText:"Bild hochladen",cameraButtonTextStart:"Kamera starten",cameraButtonTextStop:"Kamera stoppen",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:"Finde Produkte auf \n einem Foto",imageSearchModalTitle:"Bildsuche",emptyResultsBlock:{title:"Leider nichts gefunden",button:"Neues Bild hochladen"},serverErrorBlock:{title:"Keine Verbindung",button:"Erneut versuchen"},wrongFormatBlock:{title:"Dateityp wird nicht unterstützt",text:"Bitte laden Sie eine .jpg, .png oder .webp Bilddatei hoch.",button:"Neues Bild hochladen"}}},en:{translation:{exampleImagesTitle:"Try out the search with the example images",imageUploadButtonText:"Upload Photo",cameraButtonTextStart:"Start Camera",cameraButtonTextStop:"Stop Camera",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:"Find Product by Photo",imageSearchModalTitle:"Visual Search",emptyResultsBlock:{title:"Sorry, nothing found",button:"Upload another image"},serverErrorBlock:{title:"Something went wrong",button:"Try again"},wrongFormatBlock:{title:"Wrong file format",text:"Please upload a .jpg, .png or .webp image file.",button:"Upload another file"}}}};var I=function(t,i){var e={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&i.indexOf(s)<0&&(e[s]=t[s]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(s=Object.getOwnPropertySymbols(t);a<s.length;a++)i.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(t,s[a])&&(e[s[a]]=t[s[a]])}return e};const _=t=>/^[-+]?(\d+|Infinity)$/.test(t)?Number(t):NaN,E=t=>!c(t),P=t=>!isNaN(t),V=class{constructor(e){t(this,e),this.globalSlotsChanged=i(this,"globalSlotsChanged",7),this.vviinnWidgetLoad=i(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=i(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=i(this,"vviinnWidgetClose",7),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnProductLoad=i(this,"vviinnProductLoad",7),this.vviinnProductView=i(this,"vviinnProductView",7),this.vviinnProductClick=i(this,"vviinnProductClick",7),this.vviinnResultLoad=i(this,"vviinnResultLoad",7),this.vviinnResultView=i(this,"vviinnResultView",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageCrop=i(this,"vviinnImageCrop",7),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.imageSource=null,this.resultLoaded=!1,this.resultViewed=!1,this.cameraAvailable=!1,this.isDesktop=!1,this.handleVviinnImageUpload=t=>{this.trackInitialSearch(),this.uploadSource=t},this.handleVviinnImageUploadFinished=()=>{this.handleImageSelection(),"upload"===this.mode&&this.showingInButton&&(this.active=!0)},this.handleVviinnNoResult=t=>{"client"===t.reason&&(this.wrongImageFormat=!0)},this.handleStartCameraClick=async()=>{if(this.stream)this.resetState();else{this.cameraButtonClicked=!0;try{const t=await navigator.mediaDevices.getUserMedia({video:{facingMode:"environment"}});this.stream=t}catch(t){console.log("Error accessing camera: ",t.message),this.resetState()}}},this.setTrackingDeactivated=t=>{"rejected"===t.status&&(this.trackingDeactivated=!0)},this.getBasicEventData=()=>{var t;return{widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:u.VPS,widgetId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.id,widgetVersion:p}},this.token=void 0,this.active=!0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.exampleImageSource=B,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,this.stream=null,this.cameraEnabled=!1,this.cameraButtonClicked=!1,this.uploadSource=void 0}initResultEvents(){this.resultLoaded=!1,this.resultViewed=!1}stopStreamTracks(){var t;null===(t=this.stream)||void 0===t||t.getTracks().forEach((t=>{t.stop()}))}isOnboardingSlide(){return 0===this.slidePosition}isResultSlide(){return 1===this.slidePosition}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}componentDidLoad(){const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}activeWatcher(t){t?(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(t){t&&"modal"===this.mode&&(this.active=!0)}trackCameraEnabled({detail:t}){this.cameraEnabled=t}trackProductLoad({detail:t}){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:e}=t,s=this.getProductTrackEvent(t,"click"),a=n.results.find((t=>t.productId===i));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:t}){const{productId:i}=t,e=this.getProductTrackEvent(t,"click"),s=n.results.find((t=>t.productId===i));s&&s.deeplink&&(this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated))}trachSearchAreaChanges(){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"manual-selection"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackDetectedObject(){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"attention-point"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackFilter({detail:t}){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId"]),s=b(Object.assign({session_id:this.uiSessionId,source:this.imageSource,kind:t.kind,action:t.action},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}connectedCallback(){this.isDesktop="desktop"===(()=>{const t=navigator.userAgent;return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(t)?"tablet":/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(t)?"mobile":"desktop"})(),r.apiPath=this.apiPath,r.currencySign=this.currencySign,r.locale=this.locale,this.cameraAvailable=!!navigator.mediaDevices&&!!navigator.mediaDevices.getUserMedia,n.token=this.token,n.campaignId=o.pipe(this.campaignId,d.fromNullable,d.chain(d.fromPredicate(E)),d.map(_),d.chain(d.fromPredicate(P)),d.map((t=>`${t}`))),this.excluded&&(this.excluded=l(this.excluded)),n.excluded=this.excluded,this.uiSessionId=f(),this.trackingApi=x(this.apiPath,this.token),this.id=this.el.id}async componentWillLoad(){await h.init({lng:this.locale,fallbackLng:"de-DE",resources:S}),g(this,this.el),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId","widgetType"]),s=Object.assign({action:t,session_id:this.uiSessionId},e),a=y(s);this.trackingApi.trackEvent(a).then(this.setTrackingDeactivated)}getProductTrackEvent(t,i){if(this.trackingDeactivated)return null;const{productRank:e,productId:s}=t,a=I(t,["productRank","productId","campaignTypeId","widgetType","clickEvent"]),n=Object.assign({session_id:this.uiSessionId,rank:e,product:s},a);return w(i)(n)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId","widgetType"]);let s=k(t)(Object.assign({session_id:this.uiSessionId},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackInitialSearch(){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId","widgetType"]),e=m(Object.assign({session_id:this.uiSessionId,search_area:"full",source:"upload"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}handleImageSelection(){this.imageSource="upload",this.slidePosition=1,this.el.shadowRoot.querySelector("vviinn-overlayed-modal").shadowRoot.querySelector("vviinn-overlay").querySelector("vviinn-modal").shadowRoot.querySelector(".body").scrollTop=0,this.stopStreamTracks()}renderButtons(){const t=[this.cameraAvailable&&e("button",{class:"action-button",part:"start-camera_button",onClick:()=>{this.handleStartCameraClick(),this.uploadSource="startCamera"}},n.loading&&"startCamera"===this.uploadSource?e("vviinn-preloader",null):e("span",{class:"action-button-content"},e("slot",{name:"vviinn-camera-icon"},e(T,null)),this.cameraEnabled?e("slot",{name:"vviinn-camera-button-text-stop"},e("span",null,h.t("cameraButtonTextStop"))):e("slot",{name:"vviinn-camera-button-text-start"},e("span",null,h.t("cameraButtonTextStart"))))),e("vviinn-image-selector",{class:"action-button",onClick:()=>this.uploadSource="uploadPhoto",onVviinnImageUploadFinished:this.handleVviinnImageUploadFinished,onVviinnImageUpload:()=>{this.handleVviinnImageUpload("uploadPhoto")},onVviinnNoResult:({detail:t})=>this.handleVviinnNoResult(t),resetVpsButton:this.resetVpsButton,basicEventData:this.getBasicEventData(),part:"upload-photo_button",startUpload:this.buttonPressed&&this.showingInButton&&"upload"===this.mode,loading:n.loading&&"uploadPhoto"===this.uploadSource},e("span",{slot:"upload-button-text",class:"action-button-content"},e("slot",{name:"vviinn-image-upload-icon"},e(j,null)),e("slot",{name:"vviinn-image-upload-button-text"},e("span",null,h.t("imageUploadButtonText")))))];return this.isDesktop?t.reverse():t}renderResults(){return 0===n.results.length?null:(this.resultLoaded||(this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.resultLoaded=!0),n.results.map(((t,i)=>{var s;return e("vviinn-product-card",{key:t.productId,hidden:!0,productTitle:t.title,productId:t.productId,productType:t.productType,brand:t.brand,deeplink:t.deeplink,price:t.price.actual,salePrice:t.price.sale,responsive:!0,imageWidth:this.imageResolutionWidth,image:null!==(s=t.image.thumbnail)&&void 0!==s?s:t.image.original,part:"product-card",campaignTypeId:"VPS",index:i,widgetElementId:this.id,buttonElementId:this.buttonElementId,widgetVersion:p})})))}resetState(){this.resetScroll("start-page_block"),this.slidePosition=0,n.resetCategoryLink=void 0,n.activeIonLink=void 0,n.image=d.none,n.imageUrl=d.none,n.imageBounds=d.none,n.searchArea=d.none,n.results=[],n.filters=[],n.detectedObjects=[],n.rectangleSearchForm=void 0,n.loading=!1,n.serverError=!1,this.wrongImageFormat=!1,this.resetScroll("results-block"),this.stopStreamTracks(),this.initResultEvents(),this.stream=null,this.cameraEnabled=!1,this.cameraButtonClicked=!1}haveErrors(){return this.wrongImageFormat||n.serverError}resetScroll(t,i="auto"){this.el.shadowRoot.getElementById(t).scroll({top:0,left:0,behavior:i})}handleModalClose(){this.active=!1,this.resetState(),["start-page_block","results-block"].forEach((t=>this.resetScroll(t))),this.trackWidgetEvent("close")}render(){var t;return e(s,null,!this.showingInButton&&e(v,null),e("vviinn-overlayed-modal",{class:{"first-screen":this.isOnboardingSlide()},isFirstScreen:this.isOnboardingSlide(),active:this.active,resetState:this.resetState.bind(this),onVviinnWidgetClose:()=>this.handleModalClose(),buttonElementId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.id,widgetVersion:p,hideBackButton:"upload"===this.mode&&this.showingInButton||!this.cameraEnabled&&this.isOnboardingSlide(),exportparts:"secondary-action, title, close-button"},e("vviinn-slider",{showBullets:!1,position:this.slidePosition},e("vviinn-slide",{class:{"start-page":!0,"camera-enabled":this.cameraEnabled}},e("vviinn-example-image",{onVviinnImageUploadFinished:this.handleVviinnImageUploadFinished,onVviinnImageUpload:()=>{this.handleVviinnImageUpload("startCamera")},basicEventData:this.getBasicEventData(),srcObject:this.stream,cameraButtonClicked:this.cameraButtonClicked,exampleImageSource:this.exampleImageSource}),e("div",{class:{error:this.haveErrors()},id:"start-page_block"},e("div",{class:"start-page_main-content"},e("div",{class:{"start-page_errors-block":!0,hidden:!this.wrongImageFormat&&!n.serverError}},e("vviinn-wrong-format",{class:{hidden:!this.wrongImageFormat},handler:()=>this.resetState()}),e("vviinn-server-error",{class:{hidden:!n.serverError},handler:()=>this.resetState()})),!this.haveErrors()&&e("vviinn-teaser",null),!this.haveErrors()&&e("div",{class:"buttons-group"},this.renderButtons())),e("vviinn-privacy-badge",{privacyBadgeText:h.t("privacyBadgeText"),class:{invisible:this.haveErrors()}}))),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"},n.filters.map((t=>e("search-filters",{filter:t,basicEventData:this.getBasicEventData()})))))),e("div",{id:"results-block",class:"products-wrapper"},e("div",{class:{"nothing-found":!0,hidden:n.results.length>0}},e("vviinn-empty-results",{handler:()=>this.resetState()}),e("vviinn-onboarding",null)),e("div",{class:{hidden:n.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);height:640px}#start-page_block{box-sizing:border-box;display:flex;overflow-y:auto;flex-direction:column;justify-content:center;padding:42px 62px}#start-page_block.error{align-content:center}.start-page_main-content{flex-grow:1;display:flex;flex-direction:column;justify-content:center}.start-page_errors-block{display:flex;flex-direction:column;justify-content:center;gap:12px}.buttons-group{display:flex;flex-direction:column;gap:12px;margin:24px 0}.action-button{display:grid;border:none;cursor:pointer;align-items:center;border-radius:8px;font-size:16px;height:48px;justify-items:center;transition:background 0.1s ease-in-out;color:#525252;background-color:#f4f4f4}.action-button:hover{background-color:#eaeaea}.action-button:first-child{background:var(--color-primary, var(--color-primary-system));border-color:var(--color-primary, var(--color-primary-system));color:white}.action-button:first-child:hover{background:var(--color-primary-hover, var(--color-primary-hover-system));border-color:var(--color-primary-hover, var(--color-primary-hover-system))}.action-button:active{border-color:black}.action-button-content{display:grid;align-items:center;justify-items:start;justify-content:center;grid-template-columns:max-content auto;grid-gap:8px}.results-page{margin-top:60px;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{display:grid;grid-template-rows:min-content 1fr;grid-gap:24px;min-width:100%}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: 1080px){#start-page_block{padding:24px 36px}}@media (max-width: 768px){.start-page{display:flex;flex-direction:column;height:100%}vviinn-overlayed-modal.first-screen::part(secondary-action){visibility:visible}.start-page.active{height:calc(100vh - 64px);height:calc(100svh - 64px)}.start-page:not(.active){overflow:hidden}.results-page{margin-top:0}.results-page>*{box-sizing:border-box;padding:0 24px 24px}.filters-wrapper{min-width:calc(100% + 40px)}.results-page{grid-template-rows:min-content;grid-template-columns:unset}#start-page_block{overflow-y:unset;min-height:-moz-fit-content;min-height:fit-content;padding:24px 20px}.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}.action-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}.visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}";export{V as vviinn_vps_widget}
|
|
1
|
+
import{r as t,c as i,h as e,H as s,g as a}from"./p-1e83e6ba.js";import{i as n,s as r,a as o,O as d,k as l,q as c}from"./p-987a8e9f.js";import{i as h}from"./p-2e76a5c3.js";import{v as p}from"./p-259be0c5.js";import{c as u,s as g,S as v}from"./p-c8ef8d6c.js";import{j as m,k as b,v as f,c as x,l as y,m as w,n as k}from"./p-da7273ce.js";import{c as T,d as j}from"./p-74f46a18.js";import{D as B}from"./p-cc013cd2.js";const S={de:{translation:{exampleImagesTitle:"Mit den Beispielbildern die Suche direkt ausprobieren",imageUploadButtonText:"Bild hochladen",cameraButtonTextStart:"Kamera starten",cameraButtonTextStop:"Kamera stoppen",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:"Finde Produkte auf \n einem Foto",imageSearchModalTitle:"Bildsuche",emptyResultsBlock:{title:"Leider nichts gefunden",button:"Neues Bild hochladen"},serverErrorBlock:{title:"Keine Verbindung",button:"Erneut versuchen"},wrongFormatBlock:{title:"Dateityp wird nicht unterstützt",text:"Bitte laden Sie eine .jpg, .png oder .webp Bilddatei hoch.",button:"Neues Bild hochladen"}}},en:{translation:{exampleImagesTitle:"Try out the search with the example images",imageUploadButtonText:"Upload Photo",cameraButtonTextStart:"Start Camera",cameraButtonTextStop:"Stop Camera",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:"Find Product by Photo",imageSearchModalTitle:"Visual Search",emptyResultsBlock:{title:"Sorry, nothing found",button:"Upload another image"},serverErrorBlock:{title:"Something went wrong",button:"Try again"},wrongFormatBlock:{title:"Wrong file format",text:"Please upload a .jpg, .png or .webp image file.",button:"Upload another file"}}}};var I=function(t,i){var e={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&i.indexOf(s)<0&&(e[s]=t[s]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(s=Object.getOwnPropertySymbols(t);a<s.length;a++)i.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(t,s[a])&&(e[s[a]]=t[s[a]])}return e};const _=t=>/^[-+]?(\d+|Infinity)$/.test(t)?Number(t):NaN,E=t=>!c(t),P=t=>!isNaN(t),V=class{constructor(e){t(this,e),this.globalSlotsChanged=i(this,"globalSlotsChanged",7),this.vviinnWidgetLoad=i(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=i(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=i(this,"vviinnWidgetClose",7),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnProductLoad=i(this,"vviinnProductLoad",7),this.vviinnProductView=i(this,"vviinnProductView",7),this.vviinnProductClick=i(this,"vviinnProductClick",7),this.vviinnResultLoad=i(this,"vviinnResultLoad",7),this.vviinnResultView=i(this,"vviinnResultView",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageCrop=i(this,"vviinnImageCrop",7),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.imageSource=null,this.resultLoaded=!1,this.resultViewed=!1,this.cameraAvailable=!1,this.isDesktop=!1,this.handleVviinnImageUpload=t=>{this.trackInitialSearch(),this.uploadSource=t},this.handleVviinnImageUploadFinished=()=>{this.handleImageSelection(),"upload"===this.mode&&this.showingInButton&&(this.active=!0)},this.handleVviinnNoResult=t=>{"client"===t.reason&&(this.wrongImageFormat=!0)},this.handleStartCameraClick=async()=>{if(this.stream)this.resetState();else{this.cameraButtonClicked=!0;try{const t=await navigator.mediaDevices.getUserMedia({video:{facingMode:"environment"}});this.stream=t}catch(t){console.log("Error accessing camera: ",t.message),this.resetState()}}},this.setTrackingDeactivated=t=>{"rejected"===t.status&&(this.trackingDeactivated=!0)},this.getBasicEventData=()=>{var t;return{widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:u.VPS,widgetId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.id,widgetVersion:p}},this.token=void 0,this.active=!0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.exampleImageSource=B,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,this.stream=null,this.cameraEnabled=!1,this.cameraButtonClicked=!1,this.uploadSource=void 0}initResultEvents(){this.resultLoaded=!1,this.resultViewed=!1}stopStreamTracks(){var t;null===(t=this.stream)||void 0===t||t.getTracks().forEach((t=>{t.stop()}))}isOnboardingSlide(){return 0===this.slidePosition}isResultSlide(){return 1===this.slidePosition}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}componentDidLoad(){const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}activeWatcher(t){t?(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(t){t&&"modal"===this.mode&&(this.active=!0)}trackCameraEnabled({detail:t}){this.cameraEnabled=t}trackProductLoad({detail:t}){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:e}=t,s=this.getProductTrackEvent(t,"click"),a=n.results.find((t=>t.productId===i));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:t}){const{productId:i}=t,e=this.getProductTrackEvent(t,"click"),s=n.results.find((t=>t.productId===i));s&&s.deeplink&&(this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated))}trachSearchAreaChanges(){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"manual-selection"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackDetectedObject(){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"attention-point"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackFilter({detail:t}){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId"]),s=b(Object.assign({session_id:this.uiSessionId,source:this.imageSource,kind:t.kind,action:t.action},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}connectedCallback(){this.isDesktop="desktop"===(()=>{const t=navigator.userAgent;return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(t)?"tablet":/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(t)?"mobile":"desktop"})(),r.apiPath=this.apiPath,r.currencySign=this.currencySign,r.locale=this.locale,this.cameraAvailable=!!navigator.mediaDevices&&!!navigator.mediaDevices.getUserMedia,n.token=this.token,n.campaignId=o.pipe(this.campaignId,d.fromNullable,d.chain(d.fromPredicate(E)),d.map(_),d.chain(d.fromPredicate(P)),d.map((t=>`${t}`))),this.excluded&&(this.excluded=l(this.excluded)),n.excluded=this.excluded,this.uiSessionId=f(),this.trackingApi=x(this.apiPath,this.token),this.id=this.el.id}async componentWillLoad(){await h.init({lng:this.locale,fallbackLng:"de-DE",resources:S}),g(this,this.el),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId","widgetType"]),s=Object.assign({action:t,session_id:this.uiSessionId},e),a=y(s);this.trackingApi.trackEvent(a).then(this.setTrackingDeactivated)}getProductTrackEvent(t,i){if(this.trackingDeactivated)return null;const{productRank:e,productId:s}=t,a=I(t,["productRank","productId","campaignTypeId","widgetType","clickEvent"]),n=Object.assign({session_id:this.uiSessionId,rank:e,product:s},a);return w(i)(n)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId","widgetType"]);let s=k(t)(Object.assign({session_id:this.uiSessionId},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackInitialSearch(){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId","widgetType"]),e=m(Object.assign({session_id:this.uiSessionId,search_area:"full",source:"upload"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}handleImageSelection(){this.imageSource="upload",this.slidePosition=1,this.el.shadowRoot.querySelector("vviinn-overlayed-modal").shadowRoot.querySelector("vviinn-overlay").querySelector("vviinn-modal").shadowRoot.querySelector(".body").scrollTop=0,this.stopStreamTracks()}renderButtons(){const t=[this.cameraAvailable&&e("button",{class:"action-button",part:"start-camera_button",onClick:()=>{this.handleStartCameraClick(),this.uploadSource="startCamera"}},n.loading&&"startCamera"===this.uploadSource?e("vviinn-preloader",null):e("span",{class:"action-button-content"},e("slot",{name:"vviinn-camera-icon"},e(T,null)),this.cameraEnabled?e("slot",{name:"vviinn-camera-button-text-stop"},e("span",null,h.t("cameraButtonTextStop"))):e("slot",{name:"vviinn-camera-button-text-start"},e("span",null,h.t("cameraButtonTextStart"))))),e("vviinn-image-selector",{class:"action-button",onClick:()=>this.uploadSource="uploadPhoto",onVviinnImageUploadFinished:this.handleVviinnImageUploadFinished,onVviinnImageUpload:()=>{this.handleVviinnImageUpload("uploadPhoto")},onVviinnNoResult:({detail:t})=>this.handleVviinnNoResult(t),resetVpsButton:this.resetVpsButton,basicEventData:this.getBasicEventData(),part:"upload-photo_button",startUpload:this.buttonPressed&&this.showingInButton&&"upload"===this.mode,loading:n.loading&&"uploadPhoto"===this.uploadSource},e("span",{slot:"upload-button-text",class:"action-button-content"},e("slot",{name:"vviinn-image-upload-icon"},e(j,null)),e("slot",{name:"vviinn-image-upload-button-text"},e("span",null,h.t("imageUploadButtonText")))))];return this.isDesktop?t.reverse():t}renderResults(){return 0===n.results.length?null:(this.resultLoaded||(this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.resultLoaded=!0),n.results.map(((t,i)=>{var s;return e("vviinn-product-card",{key:t.productId,hidden:!0,productTitle:t.title,productId:t.productId,productType:t.productType,brand:t.brand,deeplink:t.deeplink,price:t.price.actual,salePrice:t.price.sale,responsive:!0,imageWidth:this.imageResolutionWidth,image:null!==(s=t.image.thumbnail)&&void 0!==s?s:t.image.original,part:"product-card",campaignTypeId:"VPS",index:i,widgetElementId:this.id,buttonElementId:this.buttonElementId,widgetVersion:p})})))}resetState(){this.resetScroll("start-page_block"),this.slidePosition=0,n.resetCategoryLink=void 0,n.activeIonLink=void 0,n.image=d.none,n.imageUrl=d.none,n.imageBounds=d.none,n.searchArea=d.none,n.results=[],n.filters=[],n.detectedObjects=[],n.rectangleSearchForm=void 0,n.loading=!1,n.serverError=!1,this.wrongImageFormat=!1,this.resetScroll("results-block"),this.stopStreamTracks(),this.initResultEvents(),this.stream=null,this.cameraEnabled=!1,this.cameraButtonClicked=!1}haveErrors(){return this.wrongImageFormat||n.serverError}resetScroll(t,i="auto"){this.el.shadowRoot.getElementById(t).scroll({top:0,left:0,behavior:i})}handleModalClose(){this.active=!1,this.resetState(),["start-page_block","results-block"].forEach((t=>this.resetScroll(t))),this.trackWidgetEvent("close")}render(){var t;return e(s,null,!this.showingInButton&&e(v,null),e("vviinn-overlayed-modal",{class:{"first-screen":this.isOnboardingSlide()},isFirstScreen:this.isOnboardingSlide(),active:this.active,resetState:this.resetState.bind(this),onVviinnWidgetClose:()=>this.handleModalClose(),buttonElementId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.id,widgetVersion:p,hideBackButton:"upload"===this.mode&&this.showingInButton||!this.cameraEnabled&&this.isOnboardingSlide(),exportparts:"secondary-action, title, close-button"},e("vviinn-slider",{showBullets:!1,position:this.slidePosition},e("vviinn-slide",{class:{"start-page":!0,"camera-enabled":this.cameraEnabled}},e("vviinn-example-image",{onVviinnImageUploadFinished:this.handleVviinnImageUploadFinished,onVviinnImageUpload:()=>{this.handleVviinnImageUpload("startCamera")},basicEventData:this.getBasicEventData(),srcObject:this.stream,cameraButtonClicked:this.cameraButtonClicked,exampleImageSource:this.exampleImageSource}),e("div",{class:{error:this.haveErrors()},id:"start-page_block"},e("div",{class:"start-page_main-content"},e("div",{class:{"start-page_errors-block":!0,hidden:!this.wrongImageFormat&&!n.serverError}},e("vviinn-wrong-format",{class:{hidden:!this.wrongImageFormat},handler:()=>this.resetState()}),e("vviinn-server-error",{class:{hidden:!n.serverError},handler:()=>this.resetState()})),!this.haveErrors()&&e("vviinn-teaser",null),!this.haveErrors()&&e("div",{class:"buttons-group"},this.renderButtons())),e("vviinn-privacy-badge",{privacyBadgeText:h.t("privacyBadgeText"),class:{invisible:this.haveErrors()}}))),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"},n.filters.map((t=>e("search-filters",{filter:t,basicEventData:this.getBasicEventData()})))))),e("div",{id:"results-block",class:"products-wrapper"},e("div",{class:{"nothing-found":!0,hidden:n.results.length>0}},e("vviinn-empty-results",{handler:()=>this.resetState()}),e("vviinn-onboarding",null)),e("div",{class:{hidden:n.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);height:640px}#start-page_block{box-sizing:border-box;display:flex;overflow-y:auto;flex-direction:column;justify-content:center;padding:42px 62px}#start-page_block.error{align-content:center}.start-page_main-content{flex-grow:1;display:flex;flex-direction:column;justify-content:center}.start-page_errors-block{display:flex;flex-direction:column;justify-content:center;gap:12px}.buttons-group{display:flex;flex-direction:column;gap:12px;margin:24px 0}.action-button{display:grid;border:none;cursor:pointer;align-items:center;border-radius:8px;font-size:16px;height:48px;justify-items:center;transition:background 0.1s ease-in-out;color:#525252;background-color:#f4f4f4}.action-button:hover{background-color:#eaeaea}.action-button:first-child{background:var(--color-primary, var(--color-primary-system));border-color:var(--color-primary, var(--color-primary-system));color:white}.action-button:first-child:hover{background:var(--color-primary-hover, var(--color-primary-hover-system));border-color:var(--color-primary-hover, var(--color-primary-hover-system))}.action-button:active{border-color:black}.action-button-content{display:grid;align-items:center;justify-items:start;justify-content:center;grid-template-columns:max-content auto;grid-gap:8px}.results-page{margin-top:60px;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{display:grid;grid-template-rows:min-content 1fr;grid-gap:24px;min-width:100%}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: 1080px){#start-page_block{padding:24px 36px}}@media (max-width: 768px){.start-page{display:flex;flex-direction:column;height:100%}vviinn-overlayed-modal.first-screen::part(secondary-action){visibility:visible}.start-page.active{height:calc(100vh - 64px);height:calc(100svh - 64px)}.start-page:not(.active){overflow:hidden}.results-page{margin-top:0}.results-page>*{box-sizing:border-box;padding:0 24px 24px}.filters-wrapper{min-width:calc(100% + 40px)}.results-page{grid-template-rows:min-content;grid-template-columns:unset}#start-page_block{overflow-y:unset;min-height:-moz-fit-content;min-height:fit-content;padding:24px 20px}.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}.action-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}.visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}";export{V as vviinn_vps_widget}
|
|
@@ -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-259be0c5.js";import{V as e}from"./p-74f46a18.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}
|
|
@@ -1 +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 b,f,g as w,b as y,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 E,U as _}from"./p-74f46a18.js";import{i as S}from"./p-2e76a5c3.js";import{s as A,c as V,f as j,a as O,S as W}from"./p-c8ef8d6c.js";import{v as $}from"./p-fca39f54.js";import{v as z,c as L,a as B,b as N,d as D,e as M,f as F,g as U,h as G,i as q}from"./p-da7273ce.js";const H="--vviinn-carousel-image-width",Z="items-group",K=class{constructor(i){t(this,i),this.columns=0,this.resizeObserver=new ResizeObserver((()=>this.handleResize())),this.defaultAnimationInterval=2e3,this.mutationObserver=new MutationObserver((()=>this.cloneSlottedContent())),this.isLastGroup=()=>this.activeContentGroup===this.getContentGroups().length-1&&this.isGridMode,this.isFirstGroup=()=>0===this.activeContentGroup&&this.isGridMode,this.updateCard=(t,i,s)=>{let e=this.crossSellingRecommendations.find((i=>i.productId===t));const n=this.crossSellingRecommendations.indexOf(e),r=this.recommendations.indexOf(e),o=this.crossSellingRecommendations;if(r+i<this.recommendations.length){o[n]=this.recommendations[r+i];const e=this.el.querySelector(`[data-id="${t}"]`).shadowRoot.querySelector(".update-button");e.classList.add("hidden"),this.crossSellingRecommendations=[...o];const a=setTimeout((()=>{r+2*i<=this.recommendations.length-1&&e.classList.remove("hidden"),clearTimeout(a)}),s)}},this.moveDirection="right",this.contentGroups=[],this.activeContentGroup=0,this.isRTL=!1,this.crossSellingRecommendations=[],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,this.updatingAllCards=void 0,this.updateButtonLocation=void 0}componentWillLoad(){this.isRTL="rtl"===document.dir}connectedCallback(){this.setItemWidth(),this.isSetMode="set"===this.mode,this.isGridMode="grid"===this.mode,this.isContinuityMode="continuity"===this.mode,this.isGridLike=this.isGridMode||this.isSetMode;const t=this.getColumnsNumber();this.isSetMode&&this.recommendations.length>=t&&(this.crossSellingRecommendations=this.recommendations.slice(0,t))}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())}updatingAllCardsWatcher(){if(!this.updatingAllCards)return;const t=this.getColumnsNumber();this.crossSellingRecommendations.forEach((i=>{this.updateCard(i.productId,t,this.defaultAnimationInterval)}))}crossSellingClickListener({detail:t}){const i=this.getColumnsNumber(),{animationInterval:s,productData:e}=t;this.updateCard(e.productId,i,s)}getItemWidthFromDocument(){return parseInt(getComputedStyle(document.body).getPropertyValue(H))}setItemWidth(){const t=this.getItemWidthFromDocument(),i=isNaN(t)?this.imageWidth:t;this.el.style.setProperty(H,`${i}px`)}getContentClassMap(){return{content:!0,[this.moveDirection]:!0,[this.isSetMode?"grid":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(`.${Z}`))}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 this.isGridMode&&this.showScroll}showScrollbar(){return this.isContinuityMode&&this.showScroll}getClassMap(){return{[this.isSetMode?"grid":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:this.isGridLike,dimmedBackground:this.isContinuityMode,campaignTypeId:this.campaignTypeId,index:s,widgetElementId:this.widgetElementId,widgetVersion:this.widgetVersion,addToBasketShow:this.addToBasketShow,mode:this.mode,"data-id":t.productId,updatingAllCards:this.updatingAllCards,defaultAnimationInterval:this.defaultAnimationInterval,updateButtonLocation:this.updateButtonLocation})}renderRecommendationGroup(t){return i("div",{class:Z,part:"items-group"},...t)}renderRecommendationGroups(t){return t.map((t=>this.renderRecommendationGroup(t)))}renderRecommendations(){return this.isGridLike?this.renderGrid():this.renderRecommendationsElements()}renderRecommendationsElements(){return(this.isSetMode?this.crossSellingRecommendations: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())},!this.isSetMode&&i("button",{class:"prev",onClick:()=>this.showPrev(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isFirstGroup()},i(E,null)),i("div",{class:this.getContentClassMap(),onScroll:()=>this.processScrollbarWidth()},this.renderRecommendations()),!this.isSetMode&&i("button",{class:"next",onClick:()=>this.showNext(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isLastGroup()},i(E,null))),this.showBullets()&&i("div",{class:"bullets"},this.renderBullets()))}get el(){return e(this)}static get watchers(){return{updatingAllCards:["updatingAllCardsWatcher"]}}};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) .prev,:host(.continuity) .next{border-radius:2px}:host(.grid) .prev,:host(.grid) .next{border-radius:50%}.prev,.next{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);fill:#525252;cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}.next:disabled,.prev:disabled{display:none}.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 tt={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 it(t){return d.call(tt,t)||(tt[t]=Y(l,t-1,[])),tt[t]}const st=/fit\/\d+\//,et=(t,i)=>c.pipe((t=>c.pipe(t.match(st),u.fromNullable(t),u.map((()=>t))))(t),u.map((t=>t.replace(st,`fit/${i}/`))),u.getOrElse((()=>t))),nt=(t,s)=>t.deeplink?i("a",{class:t.part,part:t.part,href:t.deeplink},s):s,rt=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)},ot=t=>i("span",{class:"price-container",part:"price-container"},t.salePrice?[i("span",{class:"price-sale",part:"price-sale"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.salePrice,locale:t.locale,priceType:"sale"})),i("span",{class:"price-outdated",part:"price-outdated"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"outdated"}))]:i("span",{class:"price-regular",part:"price-regular"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"regular"}))),at=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.vviinnCrossSellingClick=n(this,"vviinnCrossSellingClick",7),this.vviinnUpdatingAllCardsFinished=n(this,"vviinnUpdatingAllCardsFinished",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.updateButtonLocation=void 0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.buttonElementId=void 0,this.widgetVersion=void 0,this.index=0,this.updatingAllCards=void 0,this.defaultAnimationInterval=void 0,this.imageLoaded=!1,this.isTransitioning=!1}connectedCallback(){this.productData=this.getProductData()}componentWillLoad(){A(this,this.el)}crossSellingClickListener({detail:t}){const{animationInterval:i}=t;this.isTransitioning=!0;const s=setTimeout((()=>{this.isTransitioning=!1,clearTimeout(s)}),i)}updatingAllCardsWatcher(){if(!this.updatingAllCards)return;this.isTransitioning=!0;const t=setTimeout((()=>{this.vviinnUpdatingAllCardsFinished.emit(),this.isTransitioning=!1,clearTimeout(t)}),this.defaultAnimationInterval)}productIdWatcher(){this.productData=this.getProductData()}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:V[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:et(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:et(t.src,t.width),alt:t.title,ref:t.ref,onLoad:s})))(t)}generateRandomNumber(t,i){return Math.floor(Math.random()*(i-t+1))+t}render(){var t,e,n;return i(s,{part:"product-card",class:{dimmed:this.dimmedBackground,animated:this.isTransitioning},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, update-button-item"},i(nt,{deeplink:this.deeplink,part:"image-link"},this.renderImage()),this.isTransitioning?i(r,null,i("vviinn-skeleton",{height:20}),i("vviinn-skeleton",{height:20,halfWidth:!0})):i(r,null,i(nt,{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(ot,{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("div",{class:"basket-button-container"},this.isTransitioning?i("vviinn-skeleton",{height:40}):i("button",{class:{"basket-button":!0,"basket-button-grid":"grid"===this.mode||"set"===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,S.t("basketButtonText"))))),"set"===this.mode?i("button",{class:{"update-button":!0,hidden:"onTop"===this.updateButtonLocation},part:"update-button-item",onClick:()=>{this.vviinnCrossSellingClick.emit({animationInterval:this.generateRandomNumber(800,1400),productData:this.productData})}},i("slot",{name:"vviinn-update-icon-item"},i(_,null))):null)}get el(){return e(this)}static get watchers(){return{updatingAllCards:["updatingAllCardsWatcher"],productId:["productIdWatcher"]}}};at.style=":host{align-items:center;display:flex;flex-direction:column;position:relative;gap:8px;height:100%}.price-container{display:flex;flex-direction:column}.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;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}picture::before{content:\"\";opacity:0;width:100%;height:100%;box-sizing:border-box;display:block;top:0;left:0;position:absolute}.update-button{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;z-index:1;background:rgba(127, 127, 127, 0.4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:none;color:white;cursor:pointer}.update-button::after{content:\"\";position:absolute;top:-4px;right:-4px;width:calc(100% + 8px);height:calc(100% + 8px)}.update-button:hover{background:rgba(127, 127, 127, 0.5)}.update-button.hidden{display:none}.basket-button-container{margin-top:auto;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px}.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}:host(.dimmed) picture::after{content:\"\";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}:host(.animated) picture::before{opacity:1;animation:pulse 1.2s infinite}:host(.animated) picture::after{content:\"\";position:absolute;width:80px;height:80px;left:calc(50% - 40px);top:calc(50% - 40px);background-image:url(\"data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_810_154)'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M64.7332 1.23333C66.2665 12.2667 67.9665 13.9667 78.6665 15.2333C79.4332 15.3333 79.9999 15.9333 79.9999 16.6667C79.9999 17.4 79.4665 17.9333 78.6665 18.0667C67.9665 19.3667 66.2999 21.0333 64.7332 32.0667C64.6332 32.8 64.0665 33.3333 63.3665 33.3333C62.6665 33.3333 62.0999 32.8 61.9665 32.0667C60.4665 21.0333 58.7665 19.3667 48.0332 18.0667C47.2332 17.9667 46.6999 17.4333 46.6999 16.6667C46.6999 15.9 47.2332 15.3667 48.0332 15.2333C58.7665 13.7667 60.3999 12.2 61.9665 1.23333C62.0999 0.5 62.6665 0 63.3665 0C64.0665 0 64.5999 0.5 64.7332 1.23333ZM38.5665 71.5667C38.3665 72.6 37.6665 73.3333 36.6665 73.3333C35.6665 73.3333 34.9665 72.6 34.7998 71.5667C31.9332 50.7 29.0998 47.9 8.49984 45.2C7.39984 45.1 6.6665 44.3 6.6665 43.3C6.6665 42.3 7.39984 41.5333 8.49984 41.4333C29.1332 39.1333 32.0998 35.9333 34.7998 15.0333C34.9665 14.0333 35.6665 13.3333 36.6665 13.3333C37.6665 13.3333 38.3665 14 38.5665 15.0333C41.2665 35.9333 44.1998 39.1333 64.8665 41.4333C65.9332 41.5333 66.6665 42.2667 66.6665 43.3C66.6665 44.3333 65.9332 45.1 64.8665 45.2C44.1998 47.5 41.2665 50.7 38.5665 71.5667Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_810_154'%3E%3Crect width='80' height='80' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E \")}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}";const ht=class{constructor(i){t(this,i),this.height=void 0,this.halfWidth=!1}render(){return i(s,null,i("div",{class:{"vviinn-skeleton":!0},style:{height:`${this.height.toString()}px`,width:this.halfWidth?"50%":"100%"}}))}get el(){return e(this)}};function ct(t){return"function"==typeof t}function dt(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}ht.style=":host{display:block;width:100%;height:100%}.vviinn-skeleton{animation:pulse 1.2s infinite}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}";const lt=dt((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 ut(t,i){if(t){const s=t.indexOf(i);0<=s&&t.splice(s,1)}}class pt{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(ct(s))try{s()}catch(i){t=i instanceof lt?i.errors:[i]}const{_finalizers:e}=this;if(e){this._finalizers=null;for(const i of e)try{mt(i)}catch(i){t=null!=t?t:[],i instanceof lt?t=[...t,...i.errors]:t.push(i)}}if(t)throw new lt(t)}}add(t){var i;if(t&&t!==this)if(this.closed)mt(t);else{if(t instanceof pt){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)&&ut(i,t)}remove(t){const{_finalizers:i}=this;i&&ut(i,t),t instanceof pt&&t._removeParent(this)}}pt.EMPTY=(()=>{const t=new pt;return t.closed=!0,t})();const vt=pt.EMPTY;function gt(t){return t instanceof pt||t&&"closed"in t&&ct(t.remove)&&ct(t.add)&&ct(t.unsubscribe)}function mt(t){ct(t)?t():t.unsubscribe()}const bt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},ft={setTimeout(t,i,...s){const{delegate:e}=ft;return(null==e?void 0:e.setTimeout)?e.setTimeout(t,i,...s):setTimeout(t,i,...s)},clearTimeout(t){const{delegate:i}=ft;return((null==i?void 0:i.clearTimeout)||clearTimeout)(t)},delegate:void 0};function wt(){}const yt=xt("C",void 0,void 0);function xt(t,i,s){return{kind:t,value:i,error:s}}function kt(t){t()}class Ct extends pt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,gt(t)&&t.add(this)):this.destination=St}static create(t,i,s){return new Rt(t,i,s)}next(t){this.isStopped?_t(function(t){return xt("N",t,void 0)}(t),this):this._next(t)}error(t){this.isStopped?_t(xt("E",void 0,t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?_t(yt,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 It=Function.prototype.bind;function Tt(t,i){return It.call(t,i)}class Pt{constructor(t){this.partialObserver=t}next(t){const{partialObserver:i}=this;if(i.next)try{i.next(t)}catch(t){Et(t)}}error(t){const{partialObserver:i}=this;if(i.error)try{i.error(t)}catch(t){Et(t)}else Et(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(t){Et(t)}}}class Rt extends Ct{constructor(t,i,s){let e;if(super(),ct(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&&bt.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),e={next:t.next&&Tt(t.next,i),error:t.error&&Tt(t.error,i),complete:t.complete&&Tt(t.complete,i)}):e=t}this.destination=new Pt(e)}}function Et(t){var i;i=t,ft.setTimeout((()=>{const{onUnhandledError:t}=bt;if(!t)throw i;t(i)}))}function _t(t,i){const{onStoppedNotification:s}=bt;s&&ft.setTimeout((()=>s(t,i)))}const St={closed:!0,next:wt,error:function(t){throw t},complete:wt},At="function"==typeof Symbol&&Symbol.observable||"@@observable";function Vt(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 Ct||function(t){return t&&ct(t.next)&&ct(t.error)&&ct(t.complete)}(n)&>(n)?t:new Rt(t,i,s);var n;return kt((()=>{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=Ot(i))(((i,s)=>{const e=new Rt({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)}[At](){return this}pipe(...t){return(0===(i=t).length?Vt:1===i.length?i[0]:function(t){return i.reduce(((t,i)=>i(t)),t)})(this);var i}toPromise(t){return new(t=Ot(t))(((t,i)=>{let s;this.subscribe((t=>s=t),(t=>i(t)),(()=>t(s)))}))}}function Ot(t){var i;return null!==(i=null!=t?t:bt.Promise)&&void 0!==i?i:Promise}jt.create=t=>new jt(t);const Wt=dt((t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}));class $t 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 zt(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new Wt}next(t){kt((()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}}))}error(t){kt((()=>{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(){kt((()=>{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?vt:(this.currentObservers=null,e.push(t),new pt((()=>{this.currentObservers=null,ut(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}}$t.create=(t,i)=>new zt(t,i);class zt extends $t{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:vt}}const Lt=c.flow((t=>`Bearer ${t}`),(t=>new Headers({Authorization:t})),(t=>({headers:t}))),Bt=(Nt=x,function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];for(var s=t.length,e=it(s),n=Nt.map(t[0],e),r=1;r<s;r++)n=Nt.ap(n,t[r]);return n});var Nt;const Dt=(t,i={})=>g(Bt(w(),y),f,m(b(t,i))),Mt=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 Dt(r,n)},Ft=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 Dt(r,n)},Ut={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 Gt=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 qt=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 $t,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.updateButtonLocation="topAndItem",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,this.updatingAllCards=!1}getBasicEventData(){return{widgetType:"VPR",campaignTypeId:this.campaignType,campaignTypeName:V[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.pricePrefix=this.pricePrefix,v.currencySign=this.currencySign,v.locale=this.locale,this.id=null!==(t=this.buttonElementId)&&void 0!==t?t:this.el.id,this.uiSessionId=z(),this.trackingApi=L(this.apiPath,this.token),this.getRecommendations(),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}async componentWillLoad(){await S.init({lng:this.locale,fallbackLng:"de-DE",resources:Ut}),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=Gt(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=N(r)),this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated)}updatingAllCardsFinishedListener(){this.updatingAllCards&&(this.updatingAllCards=!1)}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Gt(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({action:t,session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=D(n):"VPR"===this.campaignType&&(e=M(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Gt(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=F(t)(n):"VPR"===this.campaignType&&(e=U(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=Gt(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=G(i)(a):"VPR"===n&&(o=q(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=Lt(this.token),s=c.pipe(P.of((t=>c.pipe(j(t),O((()=>Mt),(()=>Ft))))(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,["set"===this.mode?"grid":this.mode]:!0},"aria-hidden":"false"},this.addToBasketShow&&i(W,null),i(r,null,this.renderExternalCSS(),i("style",null,v.fallbackStyles),i("div",{class:"title-container"},i("h2",{part:"recommendations-title"},this.blockTitle),"set"===this.mode&&"onItem"!==this.updateButtonLocation?i("button",{class:"update-button",part:"update-button-top",onClick:()=>this.updatingAllCards=!0},i("slot",{name:"vviinn-update-icon-top"},i(_,null))):null),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:S.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||"set"===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,updatingAllCards:this.updatingAllCards,updateButtonLocation:this.updateButtonLocation})}get el(){return e(this)}static get watchers(){return{productId:["handleProductIdChange"],campaignType:["handleCampaignTypeChange"],campaigns:["handleCampaignsChange"],apiPath:["handleApiPathChange"],opened:["trackWidgetOpen"],closed:["trackWidgetClose"]}}};qt.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%}.title-container{display:flex;justify-content:space-between;align-items:center}.update-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:rgb(244, 244, 244);border:none;color:white;cursor:pointer}.update-button:hover{background:rgb(234, 234, 234)}.update-button svg{color:#6f6f6f}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,at as vviinn_product_card,ht as vviinn_skeleton,qt as vviinn_vpr_widget}
|
|
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 w,b as y,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 E,U as _}from"./p-74f46a18.js";import{i as S}from"./p-2e76a5c3.js";import{s as A,c as V,f as j,a as O,S as W}from"./p-c8ef8d6c.js";import{v as $}from"./p-259be0c5.js";import{v as z,c as L,a as B,b as N,d as D,e as M,f as F,g as U,h as G,i as q}from"./p-da7273ce.js";const H="--vviinn-carousel-image-width",Z="items-group",K=class{constructor(i){t(this,i),this.columns=0,this.resizeObserver=new ResizeObserver((()=>this.handleResize())),this.defaultAnimationInterval=2e3,this.mutationObserver=new MutationObserver((()=>this.cloneSlottedContent())),this.isLastGroup=()=>this.activeContentGroup===this.getContentGroups().length-1&&this.isGridMode,this.isFirstGroup=()=>0===this.activeContentGroup&&this.isGridMode,this.updateCard=(t,i,s)=>{let e=this.crossSellingRecommendations.find((i=>i.productId===t));const n=this.crossSellingRecommendations.indexOf(e),r=this.recommendations.indexOf(e),o=this.crossSellingRecommendations;if(r+i<this.recommendations.length){o[n]=this.recommendations[r+i];const e=this.el.querySelector(`[data-id="${t}"]`).shadowRoot.querySelector(".update-button");e.classList.add("hidden"),this.crossSellingRecommendations=[...o];const a=setTimeout((()=>{r+2*i<=this.recommendations.length-1&&e.classList.remove("hidden"),clearTimeout(a)}),s)}},this.moveDirection="right",this.contentGroups=[],this.activeContentGroup=0,this.isRTL=!1,this.crossSellingRecommendations=[],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,this.updatingAllCards=void 0,this.updateButtonLocation=void 0}componentWillLoad(){this.isRTL="rtl"===document.dir}connectedCallback(){this.setItemWidth(),this.isSetMode="set"===this.mode,this.isGridMode="grid"===this.mode,this.isContinuityMode="continuity"===this.mode,this.isGridLike=this.isGridMode||this.isSetMode;const t=this.getColumnsNumber();this.isSetMode&&this.recommendations.length>=t&&(this.crossSellingRecommendations=this.recommendations.slice(0,t))}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())}updatingAllCardsWatcher(){if(!this.updatingAllCards)return;const t=this.getColumnsNumber();this.crossSellingRecommendations.forEach((i=>{this.updateCard(i.productId,t,this.defaultAnimationInterval)}))}crossSellingClickListener({detail:t}){const i=this.getColumnsNumber(),{animationInterval:s,productData:e}=t;this.updateCard(e.productId,i,s)}getItemWidthFromDocument(){return parseInt(getComputedStyle(document.body).getPropertyValue(H))}setItemWidth(){const t=this.getItemWidthFromDocument(),i=isNaN(t)?this.imageWidth:t;this.el.style.setProperty(H,`${i}px`)}getContentClassMap(){return{content:!0,[this.moveDirection]:!0,[this.isSetMode?"grid":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(`.${Z}`))}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 this.isGridMode&&this.showScroll}showScrollbar(){return this.isContinuityMode&&this.showScroll}getClassMap(){return{[this.isSetMode?"grid":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:this.isGridLike,dimmedBackground:this.isContinuityMode,campaignTypeId:this.campaignTypeId,index:s,widgetElementId:this.widgetElementId,widgetVersion:this.widgetVersion,addToBasketShow:this.addToBasketShow,mode:this.mode,"data-id":t.productId,updatingAllCards:this.updatingAllCards,defaultAnimationInterval:this.defaultAnimationInterval,updateButtonLocation:this.updateButtonLocation})}renderRecommendationGroup(t){return i("div",{class:Z,part:"items-group"},...t)}renderRecommendationGroups(t){return t.map((t=>this.renderRecommendationGroup(t)))}renderRecommendations(){return this.isGridLike?this.renderGrid():this.renderRecommendationsElements()}renderRecommendationsElements(){return(this.isSetMode?this.crossSellingRecommendations: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())},!this.isSetMode&&i("button",{class:"prev",onClick:()=>this.showPrev(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isFirstGroup()},i(E,null)),i("div",{class:this.getContentClassMap(),onScroll:()=>this.processScrollbarWidth()},this.renderRecommendations()),!this.isSetMode&&i("button",{class:"next",onClick:()=>this.showNext(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isLastGroup()},i(E,null))),this.showBullets()&&i("div",{class:"bullets"},this.renderBullets()))}get el(){return e(this)}static get watchers(){return{updatingAllCards:["updatingAllCardsWatcher"]}}};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) .prev,:host(.continuity) .next{border-radius:2px}:host(.grid) .prev,:host(.grid) .next{border-radius:50%}.prev,.next{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);fill:#525252;cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}.next:disabled,.prev:disabled{display:none}.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 tt={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 it(t){return d.call(tt,t)||(tt[t]=Y(l,t-1,[])),tt[t]}const st=/fit\/\d+\//,et=(t,i)=>c.pipe((t=>c.pipe(t.match(st),u.fromNullable(t),u.map((()=>t))))(t),u.map((t=>t.replace(st,`fit/${i}/`))),u.getOrElse((()=>t))),nt=(t,s)=>t.deeplink?i("a",{class:t.part,part:t.part,href:t.deeplink},s):s,rt=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)},ot=t=>i("span",{class:"price-container",part:"price-container"},t.salePrice?[i("span",{class:"price-sale",part:"price-sale"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.salePrice,locale:t.locale,priceType:"sale"})),i("span",{class:"price-outdated",part:"price-outdated"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"outdated"}))]:i("span",{class:"price-regular",part:"price-regular"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"regular"}))),at=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.vviinnCrossSellingClick=n(this,"vviinnCrossSellingClick",7),this.vviinnUpdatingAllCardsFinished=n(this,"vviinnUpdatingAllCardsFinished",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.updateButtonLocation=void 0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.buttonElementId=void 0,this.widgetVersion=void 0,this.index=0,this.updatingAllCards=void 0,this.defaultAnimationInterval=void 0,this.imageLoaded=!1,this.isTransitioning=!1}connectedCallback(){this.productData=this.getProductData()}componentWillLoad(){A(this,this.el)}crossSellingClickListener({detail:t}){const{animationInterval:i}=t;this.isTransitioning=!0;const s=setTimeout((()=>{this.isTransitioning=!1,clearTimeout(s)}),i)}updatingAllCardsWatcher(){if(!this.updatingAllCards)return;this.isTransitioning=!0;const t=setTimeout((()=>{this.vviinnUpdatingAllCardsFinished.emit(),this.isTransitioning=!1,clearTimeout(t)}),this.defaultAnimationInterval)}productIdWatcher(){this.productData=this.getProductData()}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:V[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:et(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:et(t.src,t.width),alt:t.title,ref:t.ref,onLoad:s})))(t)}generateRandomNumber(t,i){return Math.floor(Math.random()*(i-t+1))+t}render(){var t,e,n;return i(s,{part:"product-card",class:{dimmed:this.dimmedBackground,animated:this.isTransitioning},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, update-button-item"},i(nt,{deeplink:this.deeplink,part:"image-link"},this.renderImage()),this.isTransitioning?i(r,null,i("vviinn-skeleton",{height:20}),i("vviinn-skeleton",{height:20,halfWidth:!0})):i(r,null,i(nt,{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(ot,{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("div",{class:"basket-button-container"},this.isTransitioning?i("vviinn-skeleton",{height:40}):i("button",{class:{"basket-button":!0,"basket-button-grid":"grid"===this.mode||"set"===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,S.t("basketButtonText"))))),"set"===this.mode?i("button",{class:{"update-button":!0,hidden:"onTop"===this.updateButtonLocation},part:"update-button-item",onClick:()=>{this.vviinnCrossSellingClick.emit({animationInterval:this.generateRandomNumber(800,1400),productData:this.productData})}},i("slot",{name:"vviinn-update-icon-item"},i(_,null))):null)}get el(){return e(this)}static get watchers(){return{updatingAllCards:["updatingAllCardsWatcher"],productId:["productIdWatcher"]}}};at.style=":host{align-items:center;display:flex;flex-direction:column;position:relative;gap:8px;height:100%}.price-container{display:flex;flex-direction:column}.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;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}picture::before{content:\"\";opacity:0;width:100%;height:100%;box-sizing:border-box;display:block;top:0;left:0;position:absolute}.update-button{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;z-index:1;background:rgba(127, 127, 127, 0.4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:none;color:white;cursor:pointer}.update-button::after{content:\"\";position:absolute;top:-4px;right:-4px;width:calc(100% + 8px);height:calc(100% + 8px)}.update-button:hover{background:rgba(127, 127, 127, 0.5)}.update-button.hidden{display:none}.basket-button-container{margin-top:auto;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px}.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}:host(.dimmed) picture::after{content:\"\";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}:host(.animated) picture::before{opacity:1;animation:pulse 1.2s infinite}:host(.animated) picture::after{content:\"\";position:absolute;width:80px;height:80px;left:calc(50% - 40px);top:calc(50% - 40px);background-image:url(\"data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_810_154)'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M64.7332 1.23333C66.2665 12.2667 67.9665 13.9667 78.6665 15.2333C79.4332 15.3333 79.9999 15.9333 79.9999 16.6667C79.9999 17.4 79.4665 17.9333 78.6665 18.0667C67.9665 19.3667 66.2999 21.0333 64.7332 32.0667C64.6332 32.8 64.0665 33.3333 63.3665 33.3333C62.6665 33.3333 62.0999 32.8 61.9665 32.0667C60.4665 21.0333 58.7665 19.3667 48.0332 18.0667C47.2332 17.9667 46.6999 17.4333 46.6999 16.6667C46.6999 15.9 47.2332 15.3667 48.0332 15.2333C58.7665 13.7667 60.3999 12.2 61.9665 1.23333C62.0999 0.5 62.6665 0 63.3665 0C64.0665 0 64.5999 0.5 64.7332 1.23333ZM38.5665 71.5667C38.3665 72.6 37.6665 73.3333 36.6665 73.3333C35.6665 73.3333 34.9665 72.6 34.7998 71.5667C31.9332 50.7 29.0998 47.9 8.49984 45.2C7.39984 45.1 6.6665 44.3 6.6665 43.3C6.6665 42.3 7.39984 41.5333 8.49984 41.4333C29.1332 39.1333 32.0998 35.9333 34.7998 15.0333C34.9665 14.0333 35.6665 13.3333 36.6665 13.3333C37.6665 13.3333 38.3665 14 38.5665 15.0333C41.2665 35.9333 44.1998 39.1333 64.8665 41.4333C65.9332 41.5333 66.6665 42.2667 66.6665 43.3C66.6665 44.3333 65.9332 45.1 64.8665 45.2C44.1998 47.5 41.2665 50.7 38.5665 71.5667Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_810_154'%3E%3Crect width='80' height='80' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E \")}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}";const ht=class{constructor(i){t(this,i),this.height=void 0,this.halfWidth=!1}render(){return i(s,null,i("div",{class:{"vviinn-skeleton":!0},style:{height:`${this.height.toString()}px`,width:this.halfWidth?"50%":"100%"}}))}get el(){return e(this)}};function ct(t){return"function"==typeof t}function dt(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}ht.style=":host{display:block;width:100%;height:100%}.vviinn-skeleton{animation:pulse 1.2s infinite}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}";const lt=dt((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 ut(t,i){if(t){const s=t.indexOf(i);0<=s&&t.splice(s,1)}}class pt{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(ct(s))try{s()}catch(i){t=i instanceof lt?i.errors:[i]}const{_finalizers:e}=this;if(e){this._finalizers=null;for(const i of e)try{mt(i)}catch(i){t=null!=t?t:[],i instanceof lt?t=[...t,...i.errors]:t.push(i)}}if(t)throw new lt(t)}}add(t){var i;if(t&&t!==this)if(this.closed)mt(t);else{if(t instanceof pt){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)&&ut(i,t)}remove(t){const{_finalizers:i}=this;i&&ut(i,t),t instanceof pt&&t._removeParent(this)}}pt.EMPTY=(()=>{const t=new pt;return t.closed=!0,t})();const vt=pt.EMPTY;function gt(t){return t instanceof pt||t&&"closed"in t&&ct(t.remove)&&ct(t.add)&&ct(t.unsubscribe)}function mt(t){ct(t)?t():t.unsubscribe()}const bt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},ft={setTimeout(t,i,...s){const{delegate:e}=ft;return(null==e?void 0:e.setTimeout)?e.setTimeout(t,i,...s):setTimeout(t,i,...s)},clearTimeout(t){const{delegate:i}=ft;return((null==i?void 0:i.clearTimeout)||clearTimeout)(t)},delegate:void 0};function wt(){}const yt=xt("C",void 0,void 0);function xt(t,i,s){return{kind:t,value:i,error:s}}function kt(t){t()}class Ct extends pt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,gt(t)&&t.add(this)):this.destination=St}static create(t,i,s){return new Rt(t,i,s)}next(t){this.isStopped?_t(function(t){return xt("N",t,void 0)}(t),this):this._next(t)}error(t){this.isStopped?_t(xt("E",void 0,t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?_t(yt,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 It=Function.prototype.bind;function Tt(t,i){return It.call(t,i)}class Pt{constructor(t){this.partialObserver=t}next(t){const{partialObserver:i}=this;if(i.next)try{i.next(t)}catch(t){Et(t)}}error(t){const{partialObserver:i}=this;if(i.error)try{i.error(t)}catch(t){Et(t)}else Et(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(t){Et(t)}}}class Rt extends Ct{constructor(t,i,s){let e;if(super(),ct(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&&bt.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),e={next:t.next&&Tt(t.next,i),error:t.error&&Tt(t.error,i),complete:t.complete&&Tt(t.complete,i)}):e=t}this.destination=new Pt(e)}}function Et(t){var i;i=t,ft.setTimeout((()=>{const{onUnhandledError:t}=bt;if(!t)throw i;t(i)}))}function _t(t,i){const{onStoppedNotification:s}=bt;s&&ft.setTimeout((()=>s(t,i)))}const St={closed:!0,next:wt,error:function(t){throw t},complete:wt},At="function"==typeof Symbol&&Symbol.observable||"@@observable";function Vt(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 Ct||function(t){return t&&ct(t.next)&&ct(t.error)&&ct(t.complete)}(n)&>(n)?t:new Rt(t,i,s);var n;return kt((()=>{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=Ot(i))(((i,s)=>{const e=new Rt({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)}[At](){return this}pipe(...t){return(0===(i=t).length?Vt:1===i.length?i[0]:function(t){return i.reduce(((t,i)=>i(t)),t)})(this);var i}toPromise(t){return new(t=Ot(t))(((t,i)=>{let s;this.subscribe((t=>s=t),(t=>i(t)),(()=>t(s)))}))}}function Ot(t){var i;return null!==(i=null!=t?t:bt.Promise)&&void 0!==i?i:Promise}jt.create=t=>new jt(t);const Wt=dt((t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}));class $t 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 zt(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new Wt}next(t){kt((()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}}))}error(t){kt((()=>{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(){kt((()=>{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?vt:(this.currentObservers=null,e.push(t),new pt((()=>{this.currentObservers=null,ut(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}}$t.create=(t,i)=>new zt(t,i);class zt extends $t{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:vt}}const Lt=c.flow((t=>`Bearer ${t}`),(t=>new Headers({Authorization:t})),(t=>({headers:t}))),Bt=(Nt=x,function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];for(var s=t.length,e=it(s),n=Nt.map(t[0],e),r=1;r<s;r++)n=Nt.ap(n,t[r]);return n});var Nt;const Dt=(t,i={})=>g(Bt(w(),y),f,m(b(t,i))),Mt=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 Dt(r,n)},Ft=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 Dt(r,n)},Ut={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 Gt=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 qt=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 $t,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.updateButtonLocation="topAndItem",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,this.updatingAllCards=!1}getBasicEventData(){return{widgetType:"VPR",campaignTypeId:this.campaignType,campaignTypeName:V[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.pricePrefix=this.pricePrefix,v.currencySign=this.currencySign,v.locale=this.locale,this.id=null!==(t=this.buttonElementId)&&void 0!==t?t:this.el.id,this.uiSessionId=z(),this.trackingApi=L(this.apiPath,this.token),this.getRecommendations(),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}async componentWillLoad(){await S.init({lng:this.locale,fallbackLng:"de-DE",resources:Ut}),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=Gt(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=N(r)),this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated)}updatingAllCardsFinishedListener(){this.updatingAllCards&&(this.updatingAllCards=!1)}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Gt(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({action:t,session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=D(n):"VPR"===this.campaignType&&(e=M(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Gt(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=F(t)(n):"VPR"===this.campaignType&&(e=U(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=Gt(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=G(i)(a):"VPR"===n&&(o=q(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=Lt(this.token),s=c.pipe(P.of((t=>c.pipe(j(t),O((()=>Mt),(()=>Ft))))(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,["set"===this.mode?"grid":this.mode]:!0},"aria-hidden":"false"},this.addToBasketShow&&i(W,null),i(r,null,this.renderExternalCSS(),i("style",null,v.fallbackStyles),i("div",{class:"title-container"},i("h2",{part:"recommendations-title"},this.blockTitle),"set"===this.mode&&"onItem"!==this.updateButtonLocation?i("button",{class:"update-button",part:"update-button-top",onClick:()=>this.updatingAllCards=!0},i("slot",{name:"vviinn-update-icon-top"},i(_,null))):null),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:S.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||"set"===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,updatingAllCards:this.updatingAllCards,updateButtonLocation:this.updateButtonLocation})}get el(){return e(this)}static get watchers(){return{productId:["handleProductIdChange"],campaignType:["handleCampaignTypeChange"],campaigns:["handleCampaignsChange"],apiPath:["handleApiPathChange"],opened:["trackWidgetOpen"],closed:["trackWidgetClose"]}}};qt.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%}.title-container{display:flex;justify-content:space-between;align-items:center}.update-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:rgb(244, 244, 244);border:none;color:white;cursor:pointer}.update-button:hover{background:rgb(234, 234, 234)}.update-button svg{color:#6f6f6f}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,at as vviinn_product_card,ht as vviinn_skeleton,qt 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-06882ce4",[[1,"vviinn-button",{addStyle:[4,"add-style"]}]]],["p-010b4979",[[1,"vviinn-preloader"]]],["p-872a4ee9",[[1,"vviinn-error"]]],["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-06882ce4",[[1,"vviinn-button",{addStyle:[4,"add-style"]}]]],["p-010b4979",[[1,"vviinn-preloader"]]],["p-872a4ee9",[[1,"vviinn-error"]]],["p-e57777fe",[[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"],updateButtonLocation:[1,"update-button-location"],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],updatingAllCards:[32]},[[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnAddToBasket","trackAddToBasket"],[0,"vviinnUpdatingAllCardsFinished","updatingAllCardsFinishedListener"]]],[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"],updatingAllCards:[4,"updating-all-cards"],updateButtonLocation:[1,"update-button-location"],moveDirection:[32],contentGroups:[32],activeContentGroup:[32],isRTL:[32],crossSellingRecommendations:[32]},[[0,"vviinnCrossSellingClick","crossSellingClickListener"]]],[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"],updateButtonLocation:[1,"update-button-location"],campaignTypeId:[1,"campaign-type-id"],widgetElementId:[1,"widget-element-id"],buttonElementId:[1,"button-element-id"],widgetVersion:[1,"widget-version"],index:[2],updatingAllCards:[4,"updating-all-cards"],defaultAnimationInterval:[2,"default-animation-interval"],imageLoaded:[32],isTransitioning:[32]},[[0,"vviinnCrossSellingClick","crossSellingClickListener"]]],[1,"vviinn-skeleton",{height:[2],halfWidth:[4,"half-width"]}]]],["p-7228f626",[[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"],isFirstScreen:[4,"is-first-screen"]}],[1,"vviinn-empty-results",{handler:[16]}],[1,"vviinn-image-selector",{basicEventData:[16],startUpload:[4,"start-upload"],loading:[4],accept:[1],resetVpsButton:[16],capture:[1]}],[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-example-image",{exampleImageSource:[1,"example-image-source"],width:[2],height:[2],basicEventData:[16],srcObject:[16],cameraButtonClicked:[4,"camera-button-clicked"],selected:[32],videoInitialized:[32]}],[1,"vviinn-privacy-badge",{privacyBadgeText:[1,"privacy-badge-text"]}],[1,"vviinn-slide"],[1,"vviinn-slider",{showBullets:[4,"show-bullets"],position:[514],showArrows:[4,"show-arrows"],elementsCount:[32],internalPosition:[32],swipeStartPosition:[32],isRTL:[32]}],[1,"vviinn-teaser"],[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"],isFirstScreen:[4,"is-first-screen"],slider:[32]}],[1,"vviinn-overlay"]]],["p-97e2e98c",[[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"],exampleImageSource:[1,"example-image-source"],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],stream:[32],cameraEnabled:[32],cameraButtonClicked:[32],uploadSource:[32]},[[0,"vviinnCameraEnabled","trackCameraEnabled"],[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnImageCrop","trachSearchAreaChanges"],[0,"vviinnSelectObject","trackDetectedObject"],[0,"vviinnSelectFilter","trackFilter"]]]]],["p-7d6f04df",[[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"],exampleImageSource:[1,"example-image-source"],apiPath:[1,"api-path"],buttonPressed:[32]},[[0,"vviinnWidgetClose","handleModalClosed"]]]]],["p-fdf9df6f",[[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-b2498a3e",[[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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o="2.42.1";export{o as v}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as t,c as i,h as e,H as n,g as s}from"./p-1e83e6ba.js";import{i as r,a as o,O as a,r as h,u as c,v as l,w as p,x as d,y as u,z as v,B as f,E as m,C as b,o as g,n as w,D as x,F as y,G as k,H as M,N as C}from"./p-987a8e9f.js";import{i as j}from"./p-2e76a5c3.js";import{W as O,R as z,S as E,A as N}from"./p-74f46a18.js";import{s as D,c as S}from"./p-c8ef8d6c.js";const T=(t,i)=>{var e;if(!t)return"";const n={};return t.href.split("?")[1].split("included[]=").join("").split("&").forEach((t=>{const[i,e]=t.split("%3A");n[i]=e})),"categories"===i?null!==(e=n.product_type)&&void 0!==e?e:n.google_product_category:n[i]},A=class{constructor(e){t(this,e),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.filterType=this.filter.name,this.filter=null,this.basicEventData=void 0,this.selectedFilter="",this.hideFilters=!0}isCategoriesFilterType(){return"categories"===this.filterType}getFilterKind(){return this.isCategoriesFilterType()?"category":this.filterType}handleFilterSelection(t){return this.isFilterSelected(t)?this.clearSelectedFilter(t):this.selectFilter(t)}selectFilter(t){r.activeIonLink=t,this.selectedFilter=T(t,this.filterType),this.vviinnSelectFilter.emit(Object.assign(Object.assign({},this.basicEventData),{action:"select",kind:this.getFilterKind()}))}clearSelectedFilter(t){r.activeIonLink=t.clear,this.selectedFilter=T(t.clear,this.filterType),this.vviinnSelectFilter.emit(Object.assign(Object.assign({},this.basicEventData),{action:"deselect",kind:this.getFilterKind()}))}toggleFilters(){this.hideFilters=!this.hideFilters}handleEnter(t,i){"Enter"===t.key&&this.handleFilterSelection(i)}isFilterSelected(t){return this.isCategoriesFilterType()?this.selectedFilter===T(t,"categories"):this.selectedFilter===t.name}render(){if(!this.filter)return null;const{name:t,filters:i}=this.filter;return e(n,{exportparts:"filter, show-more-filters"},e("div",{class:{filters:!0,"no-scrollbar-mobile":this.isCategoriesFilterType(),"no-scrollbar":!this.isCategoriesFilterType()}},i.filter(((t,i)=>!this.hideFilters||i<5)).map(((i,n)=>{const s="categories"===t?this.selectedFilter===T(i,"categories"):this.selectedFilter===i.name;return e("div",{role:"button",tabindex:"0",key:n,part:s?"filter active":"filter",class:{filter:!0,active:s},style:{"animation-delay":10*n+"ms"},onPointerUp:t=>{r.loading||(t.stopPropagation(),this.handleFilterSelection(i))},onKeyPress:t=>{r.loading||this.handleEnter(t,i)}},i.name)})),this.hideFilters&&e("div",{class:{"show-more":!0,hidden:i.length<=5,active:!this.hideFilters},role:"button",tabindex:"0","aria-role":"button",onClick:()=>{setTimeout((()=>this.toggleFilters()),300)},onKeyPress:t=>{"Enter"===t.key&&this.toggleFilters()},part:"show-more-filters"})))}get el(){return s(this)}};A.style=".filters{display:flex;flex-direction:row;overflow-x:auto;padding-left:24px;padding-right:12px;margin-bottom:12px}.filter{align-items:center;color:#525252;cursor:pointer;display:flex;margin-right:12px;height:-moz-max-content;height:max-content;min-width:-moz-max-content;min-width:max-content;transition-property:background;transition-duration:0.5s;transition-timing-function:ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:10px 12px}.show-more{display:flex}.show-more.hidden{display:none !important}.show-more::after{position:relative;content:url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 12.2l-6-6L3.2 5 8 9.8 12.8 5 14 6.2l-6 6z' fill='%23525252'/%3E%3C/svg%3E\");display:block;transform:rotate(-90deg);left:2px}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@media (max-width: 640px){.no-scrollbar-mobile{-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar-mobile::-webkit-scrollbar{display:none}}";const B=class{constructor(e){t(this,e),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.detectedObject=void 0,this.basicEventData=void 0,this.position=["0","0"]}getObjectPosition(){return o.pipe(r.imageBounds,a.map((t=>{const i=h(c(this.detectedObject).rectangle),{x:e,y:n}=o.pipe(i,l(t),p);return[`${e}px`,`${n}px`]})),a.getOrElse((()=>["0","0"])))}selectDetectedObject(){o.pipe(r.imageBounds,a.map((t=>{const i=c(this.detectedObject).rectangle,e=h(i),n=l(t)(e);r.detectedObject=this.detectedObject,r.searchArea=a.some(n)}))),d(),this.vviinnSelectObject.emit(Object.assign(Object.assign({},this.basicEventData),{detectedObject:this.detectedObject}))}isActive(){if(!this.detectedObject)return!1;if(!r.detectedObject)return!1;const t=c(this.detectedObject),i=c(r.detectedObject);return u.equals(t,i)}render(){return e(n,{class:{active:this.isActive()},onClick:()=>this.selectDetectedObject(),style:{"--x-position":this.getObjectPosition()[0],"--y-position":this.getObjectPosition()[1]}})}};B.style=':host{--color-primary-system:#0F62FE;--color-primary-hover-system:#014CDA;--color-icons-system:#2F8EDF;--spacer:8px}:host{display:block;position:absolute;left:calc(var(--x-position));top:calc(var(--y-position))}:host::before,:host::after{content:"";cursor:pointer;position:absolute;height:var(--size);width:var(--size);left:calc(-1 * var(--size) / 2);top:calc(-1 * var(--size) / 2)}:host::before{--size:36px;border-radius:50%;z-index:0;background:rgba(0, 0, 0, 0.16);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:transform 0.07s ease-in-out}:host::after{--size:13px;border-radius:50%;z-index:1;background:white;box-shadow:0px 2px 2px 0px rgba(0, 0, 0, 0.15);transition:transform 0.07s ease-in-out}:host(.active)::before{transform:scale(0.88);background:rgba(0, 0, 0, 0.4)}:host(.active)::after{transform:scale(0.67)}@media (min-width: 768px){:host(:not(.active):hover)::before{transform:scale(1.08);background:rgba(0, 0, 0, 0.32)}}';const F=class{constructor(i){t(this,i),this.handler=void 0}render(){return e(n,null,e("vviinn-error",null,e(O,null),e("h4",{slot:"title"},j.t("emptyResultsBlock.title")),e("button",{slot:"action",onClick:this.handler},j.t("emptyResultsBlock.button"))))}},_=class{constructor(e){t(this,e),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished",7),this.vviinnCameraEnabled=i(this,"vviinnCameraEnabled",7),this.exampleImageSource=void 0,this.width=0,this.height=0,this.basicEventData=void 0,this.srcObject=void 0,this.cameraButtonClicked=!1,this.selected=!1,this.videoInitialized=!1}componentDidLoad(){this.videoElement=this.el.shadowRoot.getElementById("camera-preview")}async selectImage(){let t;if(this.selected=!0,this.vviinnImageUpload.emit(this.basicEventData),this.srcObject){const i=this.videoElement,e=document.createElement("canvas");this.videoElement.pause(),e.width=i.videoWidth,e.height=i.videoHeight,e.getContext("2d").drawImage(i,0,0,e.width,e.height);const n=e.toDataURL("image/jpeg");t=await v(n)}else t=await v(this.exampleImageSource);o.pipe(await f(t),m.match((()=>this.vviinnNoResult.emit(this.basicEventData)),(()=>this.vviinnImageUploadFinished.emit()))),this.selected=!1,this.videoInitialized=!1,this.vviinnCameraEnabled.emit(!1)}handleKeyPress({key:t}){"Enter"!==t&&" "!==t||this.selectImage()}handleSrcObjectChange(){this.srcObject?(this.videoElement.srcObject=this.srcObject,this.videoElement.onloadedmetadata=()=>{this.vviinnCameraEnabled.emit(!0),this.videoInitialized=!0}):this.videoInitialized=!1}render(){return e(n,{onKeyUp:t=>this.handleKeyPress(t),class:{"video-expanded":this.cameraButtonClicked}},e("video",{id:"camera-preview",class:{hidden:!this.videoInitialized},autoplay:!0,playsinline:!0,muted:!0}),e("img",{src:this.exampleImageSource,width:this.width,height:this.height,tabindex:1,class:{hidden:this.videoInitialized}}),e("div",{class:"buttons-group"},e("button",{class:{"photo-button":!0,visible:this.videoInitialized},onClick:()=>this.selectImage()},e(z,null))))}get el(){return s(this)}static get watchers(){return{srcObject:["handleSrcObjectChange"]}}};_.style=":host{display:block;width:100%;height:100%;min-height:0;position:relative;overflow:hidden;flex-grow:1;transition:min-height 1s}:host(.video-expanded){min-height:100%;transition:min-height 0.8s}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.buttons-group{position:absolute;width:100%;height:64px;left:0;bottom:64px;display:flex;align-items:center}.photo-button{display:none;cursor:pointer;border:none;position:absolute;padding:0;left:calc(50% - 36px);color:#6f6f6f;background-color:transparent;line-height:0}.hidden{display:none}.visible{display:flex}";const R=class{constructor(e){t(this,e),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished",7),this.basicEventData=void 0,this.startUpload=void 0,this.loading=!1,this.accept="image",this.resetVpsButton=void 0,this.capture=void 0}async handleInputChange(t){this.vviinnImageUpload.emit(this.basicEventData);const i=t.target,e=await f(i.files[0]);o.pipe(e,b((({kind:t})=>this.vviinnNoResult.emit(Object.assign(Object.assign({},this.basicEventData),{reason:t}))),(()=>this.vviinnImageUploadFinished.emit()))),i.value=null}startUploadWatcher(t){t&&(this.fileInput.click(),this.resetVpsButton())}render(){return e(n,{exportparts:"button"},this.loading?e("vviinn-preloader",null):e("label",{htmlFor:"fileInput",part:"button"},e("slot",{name:"upload-button-text"},"Upload image")),e("input",{id:"fileInput",class:"visually-hidden",type:"file",capture:this.capture,accept:"image"===this.accept?"image/*":"application/octet-stream",onChange:t=>this.handleInputChange(t),ref:t=>this.fileInput=t}))}static get watchers(){return{startUpload:["startUploadWatcher"]}}};R.style=".visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}label{cursor:pointer;display:grid;width:100%;height:100%;transition:background 0.1s ease-in-out}";var W=g((function(t){
|
|
1
|
+
import{r as t,c as i,h as e,H as n,g as s}from"./p-1e83e6ba.js";import{i as r,a as o,O as a,r as h,u as c,v as l,w as p,x as d,y as u,z as v,B as f,E as m,C as b,o as g,n as w,D as x,F as y,G as k,H as M,N as C}from"./p-987a8e9f.js";import{i as j}from"./p-2e76a5c3.js";import{W as O,R as z,S as E,A as N}from"./p-74f46a18.js";import{s as D,c as S}from"./p-c8ef8d6c.js";const T=(t,i)=>{var e;if(!t)return"";const n={};return t.href.split("?")[1].split("included[]=").join("").split("&").forEach((t=>{const[i,e]=t.split("%3A");n[i]=e})),"categories"===i?null!==(e=n.product_type)&&void 0!==e?e:n.google_product_category:n[i]},A=class{constructor(e){t(this,e),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.filterType=this.filter.name,this.filter=null,this.basicEventData=void 0,this.selectedFilter="",this.hideFilters=!0}isCategoriesFilterType(){return"categories"===this.filterType}getFilterKind(){return this.isCategoriesFilterType()?"category":this.filterType}handleFilterSelection(t){return this.isFilterSelected(t)?this.clearSelectedFilter(t):this.selectFilter(t)}selectFilter(t){r.activeIonLink=t,this.selectedFilter=T(t,this.filterType),this.vviinnSelectFilter.emit(Object.assign(Object.assign({},this.basicEventData),{action:"select",kind:this.getFilterKind()}))}clearSelectedFilter(t){r.activeIonLink=t.clear,this.selectedFilter=T(t.clear,this.filterType),this.vviinnSelectFilter.emit(Object.assign(Object.assign({},this.basicEventData),{action:"deselect",kind:this.getFilterKind()}))}toggleFilters(){this.hideFilters=!this.hideFilters}handleEnter(t,i){"Enter"===t.key&&this.handleFilterSelection(i)}isFilterSelected(t){return this.isCategoriesFilterType()?this.selectedFilter===T(t,"categories"):this.selectedFilter===t.name}render(){if(!this.filter)return null;const{name:t,filters:i}=this.filter;return e(n,{exportparts:"filter, show-more-filters"},e("div",{class:{filters:!0,"no-scrollbar-mobile":this.isCategoriesFilterType(),"no-scrollbar":!this.isCategoriesFilterType()}},i.filter(((t,i)=>!this.hideFilters||i<5)).map(((i,n)=>{const s="categories"===t?this.selectedFilter===T(i,"categories"):this.selectedFilter===i.name;return e("div",{role:"button",tabindex:"0",key:n,part:s?"filter active":"filter",class:{filter:!0,active:s},style:{"animation-delay":10*n+"ms"},onPointerUp:t=>{r.loading||(t.stopPropagation(),this.handleFilterSelection(i))},onKeyPress:t=>{r.loading||this.handleEnter(t,i)}},i.name)})),this.hideFilters&&e("div",{class:{"show-more":!0,hidden:i.length<=5,active:!this.hideFilters},role:"button",tabindex:"0","aria-role":"button",onClick:()=>{setTimeout((()=>this.toggleFilters()),300)},onKeyPress:t=>{"Enter"===t.key&&this.toggleFilters()},part:"show-more-filters"})))}get el(){return s(this)}};A.style=".filters{display:flex;flex-direction:row;overflow-x:auto;padding-left:24px;padding-right:12px;margin-bottom:12px}.filter{align-items:center;color:#525252;cursor:pointer;display:flex;margin-right:12px;height:-moz-max-content;height:max-content;min-width:-moz-max-content;min-width:max-content;transition-property:background;transition-duration:0.5s;transition-timing-function:ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:10px 12px}.show-more{display:flex}.show-more.hidden{display:none !important}.show-more::after{position:relative;content:url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 12.2l-6-6L3.2 5 8 9.8 12.8 5 14 6.2l-6 6z' fill='%23525252'/%3E%3C/svg%3E\");display:block;transform:rotate(-90deg);left:2px}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@media (max-width: 640px){.no-scrollbar-mobile{-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar-mobile::-webkit-scrollbar{display:none}}";const B=class{constructor(e){t(this,e),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.detectedObject=void 0,this.basicEventData=void 0,this.position=["0","0"]}getObjectPosition(){return o.pipe(r.imageBounds,a.map((t=>{const i=h(c(this.detectedObject).rectangle),{x:e,y:n}=o.pipe(i,l(t),p);return[`${e}px`,`${n}px`]})),a.getOrElse((()=>["0","0"])))}selectDetectedObject(){o.pipe(r.imageBounds,a.map((t=>{const i=c(this.detectedObject).rectangle,e=h(i),n=l(t)(e);r.detectedObject=this.detectedObject,r.searchArea=a.some(n)}))),d(),this.vviinnSelectObject.emit(Object.assign(Object.assign({},this.basicEventData),{detectedObject:this.detectedObject}))}isActive(){if(!this.detectedObject)return!1;if(!r.detectedObject)return!1;const t=c(this.detectedObject),i=c(r.detectedObject);return u.equals(t,i)}render(){return e(n,{class:{active:this.isActive()},onClick:()=>this.selectDetectedObject(),style:{"--x-position":this.getObjectPosition()[0],"--y-position":this.getObjectPosition()[1]}})}};B.style=':host{--color-primary-system:#0F62FE;--color-primary-hover-system:#014CDA;--color-icons-system:#2F8EDF;--spacer:8px}:host{display:block;position:absolute;left:calc(var(--x-position));top:calc(var(--y-position))}:host::before,:host::after{content:"";cursor:pointer;position:absolute;height:var(--size);width:var(--size);left:calc(-1 * var(--size) / 2);top:calc(-1 * var(--size) / 2)}:host::before{--size:36px;border-radius:50%;z-index:0;background:rgba(0, 0, 0, 0.16);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:transform 0.07s ease-in-out}:host::after{--size:13px;border-radius:50%;z-index:1;background:white;box-shadow:0px 2px 2px 0px rgba(0, 0, 0, 0.15);transition:transform 0.07s ease-in-out}:host(.active)::before{transform:scale(0.88);background:rgba(0, 0, 0, 0.4)}:host(.active)::after{transform:scale(0.67)}@media (min-width: 768px){:host(:not(.active):hover)::before{transform:scale(1.08);background:rgba(0, 0, 0, 0.32)}}';const F=class{constructor(i){t(this,i),this.handler=void 0}render(){return e(n,null,e("vviinn-error",null,e(O,null),e("h4",{slot:"title"},j.t("emptyResultsBlock.title")),e("button",{slot:"action",onClick:this.handler},j.t("emptyResultsBlock.button"))))}},_=class{constructor(e){t(this,e),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished",7),this.vviinnCameraEnabled=i(this,"vviinnCameraEnabled",7),this.exampleImageSource=void 0,this.width=0,this.height=0,this.basicEventData=void 0,this.srcObject=void 0,this.cameraButtonClicked=!1,this.selected=!1,this.videoInitialized=!1}componentDidLoad(){this.videoElement=this.el.shadowRoot.getElementById("camera-preview")}async selectImage(){let t;if(this.selected=!0,this.vviinnImageUpload.emit(this.basicEventData),this.srcObject){const i=this.videoElement,e=document.createElement("canvas");this.videoElement.pause(),e.width=i.videoWidth,e.height=i.videoHeight,e.getContext("2d").drawImage(i,0,0,e.width,e.height);const n=e.toDataURL("image/jpeg");t=await v(n)}else t=await v(this.exampleImageSource);o.pipe(await f(t),m.match((()=>this.vviinnNoResult.emit(this.basicEventData)),(()=>this.vviinnImageUploadFinished.emit()))),this.selected=!1,this.videoInitialized=!1,this.vviinnCameraEnabled.emit(!1)}handleKeyPress({key:t}){"Enter"!==t&&" "!==t||this.selectImage()}handleSrcObjectChange(){this.srcObject?(this.videoElement.srcObject=this.srcObject,this.videoElement.onloadedmetadata=()=>{this.vviinnCameraEnabled.emit(!0),this.videoInitialized=!0}):this.videoInitialized=!1}render(){return e(n,{onKeyUp:t=>this.handleKeyPress(t),class:{"video-expanded":this.cameraButtonClicked}},e("video",{id:"camera-preview",class:{hidden:!this.videoInitialized},autoplay:!0,playsinline:!0,muted:!0}),e("img",{src:this.exampleImageSource,width:this.width,height:this.height,tabindex:1,class:{hidden:this.videoInitialized}}),e("div",{class:"buttons-group"},e("button",{class:{"photo-button":!0,visible:this.videoInitialized},onClick:()=>this.selectImage()},e(z,null))))}get el(){return s(this)}static get watchers(){return{srcObject:["handleSrcObjectChange"]}}};_.style=":host{display:block;width:100%;height:100%;min-height:0;position:relative;overflow:hidden;flex-grow:1;transition:min-height 1s}:host(.video-expanded){min-height:100%;transition:min-height 0.8s}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.buttons-group{position:absolute;width:100%;height:64px;left:0;bottom:64px;display:flex;align-items:center}.photo-button{display:none;cursor:pointer;border:none;position:absolute;padding:0;left:calc(50% - 36px);color:#6f6f6f;background-color:transparent;-webkit-tap-highlight-color:transparent;line-height:0}.hidden{display:none}.visible{display:flex}";const R=class{constructor(e){t(this,e),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished",7),this.basicEventData=void 0,this.startUpload=void 0,this.loading=!1,this.accept="image",this.resetVpsButton=void 0,this.capture=void 0}async handleInputChange(t){this.vviinnImageUpload.emit(this.basicEventData);const i=t.target,e=await f(i.files[0]);o.pipe(e,b((({kind:t})=>this.vviinnNoResult.emit(Object.assign(Object.assign({},this.basicEventData),{reason:t}))),(()=>this.vviinnImageUploadFinished.emit()))),i.value=null}startUploadWatcher(t){t&&(this.fileInput.click(),this.resetVpsButton())}render(){return e(n,{exportparts:"button"},this.loading?e("vviinn-preloader",null):e("label",{htmlFor:"fileInput",part:"button"},e("slot",{name:"upload-button-text"},"Upload image")),e("input",{id:"fileInput",class:"visually-hidden",type:"file",capture:this.capture,accept:"image"===this.accept?"image/*":"application/octet-stream",onChange:t=>this.handleInputChange(t),ref:t=>this.fileInput=t}))}static get watchers(){return{startUpload:["startUploadWatcher"]}}};R.style=".visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}label{cursor:pointer;display:grid;width:100%;height:100%;transition:background 0.1s ease-in-out}";var W=g((function(t){
|
|
2
2
|
/*!
|
|
3
3
|
* Cropper.js v1.5.13
|
|
4
4
|
* https://fengyuanchen.github.io/cropperjs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,c as i,h as s,H as e,g as n}from"./p-1e83e6ba.js";import{v as h}from"./p-
|
|
1
|
+
import{r as t,c as i,h as s,H as e,g as n}from"./p-1e83e6ba.js";import{v as h}from"./p-259be0c5.js";import{a as o}from"./p-74f46a18.js";import{c as a,S as r}from"./p-c8ef8d6c.js";import{D as d}from"./p-cc013cd2.js";const l=class{constructor(s){t(this,s),this.vviinnWidgetLoad=i(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=i(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=i(this,"vviinnWidgetClose",7),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnProductLoad=i(this,"vviinnProductLoad",7),this.vviinnProductClick=i(this,"vviinnProductClick",7),this.vviinnProductView=i(this,"vviinnProductView",7),this.vviinnResultLoad=i(this,"vviinnResultLoad",7),this.vviinnResultView=i(this,"vviinnResultView",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageCrop=i(this,"vviinnImageCrop",7),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.globalSlotsChanged=i(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.exampleImageSource=d,this.apiPath=void 0,this.buttonPressed=!1}handleModalClosed(){this.buttonPressed=!1}componentDidLoad(){const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}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, upload-photo_button, show-files_button, start-camera_button",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,exampleImageSource:this.exampleImageSource}))}get el(){return n(this)}};l.style=":host{display:block}";export{l as vviinn_vps_button}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,c as i,h as e,H as s,g as a}from"./p-1e83e6ba.js";import{i as n,s as r,a as o,O as d,k as l,q as c}from"./p-987a8e9f.js";import{i as h}from"./p-2e76a5c3.js";import{v as p}from"./p-fca39f54.js";import{c as u,s as g,S as v}from"./p-c8ef8d6c.js";import{j as m,k as b,v as f,c as x,l as y,m as w,n as k}from"./p-da7273ce.js";import{c as T,d as j}from"./p-74f46a18.js";import{D as B}from"./p-cc013cd2.js";const S={de:{translation:{exampleImagesTitle:"Mit den Beispielbildern die Suche direkt ausprobieren",imageUploadButtonText:"Bild hochladen",cameraButtonTextStart:"Kamera starten",cameraButtonTextStop:"Kamera stoppen",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:"Finde Produkte auf \n einem Foto",imageSearchModalTitle:"Bildsuche",emptyResultsBlock:{title:"Leider nichts gefunden",button:"Neues Bild hochladen"},serverErrorBlock:{title:"Keine Verbindung",button:"Erneut versuchen"},wrongFormatBlock:{title:"Dateityp wird nicht unterstützt",text:"Bitte laden Sie eine .jpg, .png oder .webp Bilddatei hoch.",button:"Neues Bild hochladen"}}},en:{translation:{exampleImagesTitle:"Try out the search with the example images",imageUploadButtonText:"Upload Photo",cameraButtonTextStart:"Start Camera",cameraButtonTextStop:"Stop Camera",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:"Find Product by Photo",imageSearchModalTitle:"Visual Search",emptyResultsBlock:{title:"Sorry, nothing found",button:"Upload another image"},serverErrorBlock:{title:"Something went wrong",button:"Try again"},wrongFormatBlock:{title:"Wrong file format",text:"Please upload a .jpg, .png or .webp image file.",button:"Upload another file"}}}};var I=function(t,i){var e={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&i.indexOf(s)<0&&(e[s]=t[s]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(s=Object.getOwnPropertySymbols(t);a<s.length;a++)i.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(t,s[a])&&(e[s[a]]=t[s[a]])}return e};const _=t=>/^[-+]?(\d+|Infinity)$/.test(t)?Number(t):NaN,E=t=>!c(t),P=t=>!isNaN(t),V=class{constructor(e){t(this,e),this.globalSlotsChanged=i(this,"globalSlotsChanged",7),this.vviinnWidgetLoad=i(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=i(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=i(this,"vviinnWidgetClose",7),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnProductLoad=i(this,"vviinnProductLoad",7),this.vviinnProductView=i(this,"vviinnProductView",7),this.vviinnProductClick=i(this,"vviinnProductClick",7),this.vviinnResultLoad=i(this,"vviinnResultLoad",7),this.vviinnResultView=i(this,"vviinnResultView",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageCrop=i(this,"vviinnImageCrop",7),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.imageSource=null,this.resultLoaded=!1,this.resultViewed=!1,this.cameraAvailable=!1,this.isDesktop=!1,this.handleVviinnImageUpload=t=>{this.trackInitialSearch(),this.uploadSource=t},this.handleVviinnImageUploadFinished=()=>{this.handleImageSelection(),"upload"===this.mode&&this.showingInButton&&(this.active=!0)},this.handleVviinnNoResult=t=>{"client"===t.reason&&(this.wrongImageFormat=!0)},this.handleStartCameraClick=async()=>{if(this.stream)this.resetState();else{this.cameraButtonClicked=!0;try{const t=await navigator.mediaDevices.getUserMedia({video:{facingMode:"environment"}});this.stream=t}catch(t){console.log("Error accessing camera: ",t.message),this.resetState()}}},this.setTrackingDeactivated=t=>{"rejected"===t.status&&(this.trackingDeactivated=!0)},this.getBasicEventData=()=>{var t;return{widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:u.VPS,widgetId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.id,widgetVersion:p}},this.token=void 0,this.active=!0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.exampleImageSource=B,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,this.stream=null,this.cameraEnabled=!1,this.cameraButtonClicked=!1,this.uploadSource=void 0}initResultEvents(){this.resultLoaded=!1,this.resultViewed=!1}stopStreamTracks(){var t;null===(t=this.stream)||void 0===t||t.getTracks().forEach((t=>{t.stop()}))}isOnboardingSlide(){return 0===this.slidePosition}isResultSlide(){return 1===this.slidePosition}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}componentDidLoad(){const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}activeWatcher(t){t?(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(t){t&&"modal"===this.mode&&(this.active=!0)}trackCameraEnabled({detail:t}){this.cameraEnabled=t}trackProductLoad({detail:t}){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:e}=t,s=this.getProductTrackEvent(t,"click"),a=n.results.find((t=>t.productId===i));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:t}){const{productId:i}=t,e=this.getProductTrackEvent(t,"click"),s=n.results.find((t=>t.productId===i));s&&s.deeplink&&(this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated))}trachSearchAreaChanges(){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"manual-selection"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackDetectedObject(){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"attention-point"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackFilter({detail:t}){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId"]),s=b(Object.assign({session_id:this.uiSessionId,source:this.imageSource,kind:t.kind,action:t.action},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}connectedCallback(){this.isDesktop="desktop"===(()=>{const t=navigator.userAgent;return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(t)?"tablet":/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(t)?"mobile":"desktop"})(),r.apiPath=this.apiPath,r.currencySign=this.currencySign,r.locale=this.locale,this.cameraAvailable=!!navigator.mediaDevices&&!!navigator.mediaDevices.getUserMedia,n.token=this.token,n.campaignId=o.pipe(this.campaignId,d.fromNullable,d.chain(d.fromPredicate(E)),d.map(_),d.chain(d.fromPredicate(P)),d.map((t=>`${t}`))),this.excluded&&(this.excluded=l(this.excluded)),n.excluded=this.excluded,this.uiSessionId=f(),this.trackingApi=x(this.apiPath,this.token),this.id=this.el.id}async componentWillLoad(){await h.init({lng:this.locale,fallbackLng:"de-DE",resources:S}),g(this,this.el),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId","widgetType"]),s=Object.assign({action:t,session_id:this.uiSessionId},e),a=y(s);this.trackingApi.trackEvent(a).then(this.setTrackingDeactivated)}getProductTrackEvent(t,i){if(this.trackingDeactivated)return null;const{productRank:e,productId:s}=t,a=I(t,["productRank","productId","campaignTypeId","widgetType","clickEvent"]),n=Object.assign({session_id:this.uiSessionId,rank:e,product:s},a);return w(i)(n)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId","widgetType"]);let s=k(t)(Object.assign({session_id:this.uiSessionId},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackInitialSearch(){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId","widgetType"]),e=m(Object.assign({session_id:this.uiSessionId,search_area:"full",source:"upload"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}handleImageSelection(){this.imageSource="upload",this.slidePosition=1,this.el.shadowRoot.querySelector("vviinn-overlayed-modal").shadowRoot.querySelector("vviinn-overlay").querySelector("vviinn-modal").shadowRoot.querySelector(".body").scrollTop=0,this.stopStreamTracks()}renderButtons(){const t=[this.cameraAvailable&&e("button",{class:"action-button",part:"start-camera_button",onClick:()=>{this.handleStartCameraClick(),this.uploadSource="startCamera"}},n.loading&&"startCamera"===this.uploadSource?e("vviinn-preloader",null):e("span",{class:"action-button-content"},e("slot",{name:"vviinn-camera-icon"},e(T,null)),this.cameraEnabled?e("slot",{name:"vviinn-camera-button-text-stop"},e("span",null,h.t("cameraButtonTextStop"))):e("slot",{name:"vviinn-camera-button-text-start"},e("span",null,h.t("cameraButtonTextStart"))))),e("vviinn-image-selector",{class:"action-button",onClick:()=>this.uploadSource="uploadPhoto",onVviinnImageUploadFinished:this.handleVviinnImageUploadFinished,onVviinnImageUpload:()=>{this.handleVviinnImageUpload("uploadPhoto")},onVviinnNoResult:({detail:t})=>this.handleVviinnNoResult(t),resetVpsButton:this.resetVpsButton,basicEventData:this.getBasicEventData(),part:"upload-photo_button",startUpload:this.buttonPressed&&this.showingInButton&&"upload"===this.mode,loading:n.loading&&"uploadPhoto"===this.uploadSource},e("span",{slot:"upload-button-text",class:"action-button-content"},e("slot",{name:"vviinn-image-upload-icon"},e(j,null)),e("slot",{name:"vviinn-image-upload-button-text"},e("span",null,h.t("imageUploadButtonText")))))];return this.isDesktop?t.reverse():t}renderResults(){return 0===n.results.length?null:(this.resultLoaded||(this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.resultLoaded=!0),n.results.map(((t,i)=>{var s;return e("vviinn-product-card",{key:t.productId,hidden:!0,productTitle:t.title,productId:t.productId,productType:t.productType,brand:t.brand,deeplink:t.deeplink,price:t.price.actual,salePrice:t.price.sale,responsive:!0,imageWidth:this.imageResolutionWidth,image:null!==(s=t.image.thumbnail)&&void 0!==s?s:t.image.original,part:"product-card",campaignTypeId:"VPS",index:i,widgetElementId:this.id,buttonElementId:this.buttonElementId,widgetVersion:p})})))}resetState(){this.resetScroll("start-page_block"),this.slidePosition=0,n.resetCategoryLink=void 0,n.activeIonLink=void 0,n.image=d.none,n.imageUrl=d.none,n.imageBounds=d.none,n.searchArea=d.none,n.results=[],n.filters=[],n.detectedObjects=[],n.rectangleSearchForm=void 0,n.loading=!1,n.serverError=!1,this.wrongImageFormat=!1,this.resetScroll("results-block"),this.stopStreamTracks(),this.initResultEvents(),this.stream=null,this.cameraEnabled=!1,this.cameraButtonClicked=!1}haveErrors(){return this.wrongImageFormat||n.serverError}resetScroll(t,i="auto"){this.el.shadowRoot.getElementById(t).scroll({top:0,left:0,behavior:i})}handleModalClose(){this.active=!1,this.resetState(),["start-page_block","results-block"].forEach((t=>this.resetScroll(t))),this.trackWidgetEvent("close")}render(){var t;return e(s,null,!this.showingInButton&&e(v,null),e("vviinn-overlayed-modal",{class:{"first-screen":this.isOnboardingSlide()},isFirstScreen:this.isOnboardingSlide(),active:this.active,resetState:this.resetState.bind(this),onVviinnWidgetClose:()=>this.handleModalClose(),buttonElementId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.id,widgetVersion:p,hideBackButton:"upload"===this.mode&&this.showingInButton||!this.cameraEnabled&&this.isOnboardingSlide(),exportparts:"secondary-action, title, close-button"},e("vviinn-slider",{showBullets:!1,position:this.slidePosition},e("vviinn-slide",{class:{"start-page":!0,"camera-enabled":this.cameraEnabled}},e("vviinn-example-image",{onVviinnImageUploadFinished:this.handleVviinnImageUploadFinished,onVviinnImageUpload:()=>{this.handleVviinnImageUpload("startCamera")},basicEventData:this.getBasicEventData(),srcObject:this.stream,cameraButtonClicked:this.cameraButtonClicked,exampleImageSource:this.exampleImageSource}),e("div",{class:{error:this.haveErrors()},id:"start-page_block"},e("div",{class:"start-page_main-content"},e("div",{class:{"start-page_errors-block":!0,hidden:!this.wrongImageFormat&&!n.serverError}},e("vviinn-wrong-format",{class:{hidden:!this.wrongImageFormat},handler:()=>this.resetState()}),e("vviinn-server-error",{class:{hidden:!n.serverError},handler:()=>this.resetState()})),!this.haveErrors()&&e("vviinn-teaser",null),!this.haveErrors()&&e("div",{class:"buttons-group"},this.renderButtons())),e("vviinn-privacy-badge",{privacyBadgeText:h.t("privacyBadgeText"),class:{invisible:this.haveErrors()}}))),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"},n.filters.map((t=>e("search-filters",{filter:t,basicEventData:this.getBasicEventData()})))))),e("div",{id:"results-block",class:"products-wrapper"},e("div",{class:{"nothing-found":!0,hidden:n.results.length>0}},e("vviinn-empty-results",{handler:()=>this.resetState()}),e("vviinn-onboarding",null)),e("div",{class:{hidden:n.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);height:640px}#start-page_block{box-sizing:border-box;display:flex;overflow-y:auto;flex-direction:column;justify-content:center;padding:42px 62px}#start-page_block.error{align-content:center}.start-page_main-content{flex-grow:1;display:flex;flex-direction:column;justify-content:center}.start-page_errors-block{display:flex;flex-direction:column;justify-content:center;gap:12px}.buttons-group{display:flex;flex-direction:column;gap:12px;margin:24px 0}.action-button{display:grid;border:none;cursor:pointer;align-items:center;border-radius:8px;font-size:16px;height:48px;justify-items:center;transition:background 0.1s ease-in-out;color:#525252;background-color:#f4f4f4}.action-button:hover{background-color:#eaeaea}.action-button:first-child{background:var(--color-primary, var(--color-primary-system));border-color:var(--color-primary, var(--color-primary-system));color:white}.action-button:first-child:hover{background:var(--color-primary-hover, var(--color-primary-hover-system));border-color:var(--color-primary-hover, var(--color-primary-hover-system))}.action-button:active{border-color:black}.action-button-content{display:grid;align-items:center;justify-items:start;justify-content:center;grid-template-columns:max-content auto;grid-gap:8px}.results-page{margin-top:60px;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{display:grid;grid-template-rows:min-content 1fr;grid-gap:24px;min-width:100%}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: 1080px){#start-page_block{padding:24px 36px}}@media (max-width: 768px){.start-page{display:flex;flex-direction:column;height:100%}vviinn-overlayed-modal.first-screen::part(secondary-action){visibility:visible}.start-page.active{height:calc(100vh - 64px);height:calc(100svh - 64px)}.start-page:not(.active){overflow:hidden}.results-page{margin-top:0}.results-page>*{box-sizing:border-box;padding:0 24px 24px}.filters-wrapper{min-width:calc(100% + 40px)}.results-page{grid-template-rows:min-content;grid-template-columns:unset}#start-page_block{overflow-y:unset;min-height:-moz-fit-content;min-height:fit-content;padding:24px 20px}.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}.action-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}.visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}";export{V as vviinn_vps_widget}
|
|
1
|
+
import{r as t,c as i,h as e,H as s,g as a}from"./p-1e83e6ba.js";import{i as n,s as r,a as o,O as d,k as l,q as c}from"./p-987a8e9f.js";import{i as h}from"./p-2e76a5c3.js";import{v as p}from"./p-259be0c5.js";import{c as u,s as g,S as v}from"./p-c8ef8d6c.js";import{j as m,k as b,v as f,c as x,l as y,m as w,n as k}from"./p-da7273ce.js";import{c as T,d as j}from"./p-74f46a18.js";import{D as B}from"./p-cc013cd2.js";const S={de:{translation:{exampleImagesTitle:"Mit den Beispielbildern die Suche direkt ausprobieren",imageUploadButtonText:"Bild hochladen",cameraButtonTextStart:"Kamera starten",cameraButtonTextStop:"Kamera stoppen",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:"Finde Produkte auf \n einem Foto",imageSearchModalTitle:"Bildsuche",emptyResultsBlock:{title:"Leider nichts gefunden",button:"Neues Bild hochladen"},serverErrorBlock:{title:"Keine Verbindung",button:"Erneut versuchen"},wrongFormatBlock:{title:"Dateityp wird nicht unterstützt",text:"Bitte laden Sie eine .jpg, .png oder .webp Bilddatei hoch.",button:"Neues Bild hochladen"}}},en:{translation:{exampleImagesTitle:"Try out the search with the example images",imageUploadButtonText:"Upload Photo",cameraButtonTextStart:"Start Camera",cameraButtonTextStop:"Stop Camera",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:"Find Product by Photo",imageSearchModalTitle:"Visual Search",emptyResultsBlock:{title:"Sorry, nothing found",button:"Upload another image"},serverErrorBlock:{title:"Something went wrong",button:"Try again"},wrongFormatBlock:{title:"Wrong file format",text:"Please upload a .jpg, .png or .webp image file.",button:"Upload another file"}}}};var I=function(t,i){var e={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&i.indexOf(s)<0&&(e[s]=t[s]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(s=Object.getOwnPropertySymbols(t);a<s.length;a++)i.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(t,s[a])&&(e[s[a]]=t[s[a]])}return e};const _=t=>/^[-+]?(\d+|Infinity)$/.test(t)?Number(t):NaN,E=t=>!c(t),P=t=>!isNaN(t),V=class{constructor(e){t(this,e),this.globalSlotsChanged=i(this,"globalSlotsChanged",7),this.vviinnWidgetLoad=i(this,"vviinnWidgetLoad",7),this.vviinnWidgetOpen=i(this,"vviinnWidgetOpen",7),this.vviinnWidgetClose=i(this,"vviinnWidgetClose",7),this.vviinnImageUpload=i(this,"vviinnImageUpload",7),this.vviinnProductLoad=i(this,"vviinnProductLoad",7),this.vviinnProductView=i(this,"vviinnProductView",7),this.vviinnProductClick=i(this,"vviinnProductClick",7),this.vviinnResultLoad=i(this,"vviinnResultLoad",7),this.vviinnResultView=i(this,"vviinnResultView",7),this.vviinnNoResult=i(this,"vviinnNoResult",7),this.vviinnImageCrop=i(this,"vviinnImageCrop",7),this.vviinnSelectObject=i(this,"vviinnSelectObject",7),this.vviinnSelectFilter=i(this,"vviinnSelectFilter",7),this.imageSource=null,this.resultLoaded=!1,this.resultViewed=!1,this.cameraAvailable=!1,this.isDesktop=!1,this.handleVviinnImageUpload=t=>{this.trackInitialSearch(),this.uploadSource=t},this.handleVviinnImageUploadFinished=()=>{this.handleImageSelection(),"upload"===this.mode&&this.showingInButton&&(this.active=!0)},this.handleVviinnNoResult=t=>{"client"===t.reason&&(this.wrongImageFormat=!0)},this.handleStartCameraClick=async()=>{if(this.stream)this.resetState();else{this.cameraButtonClicked=!0;try{const t=await navigator.mediaDevices.getUserMedia({video:{facingMode:"environment"}});this.stream=t}catch(t){console.log("Error accessing camera: ",t.message),this.resetState()}}},this.setTrackingDeactivated=t=>{"rejected"===t.status&&(this.trackingDeactivated=!0)},this.getBasicEventData=()=>{var t;return{widgetType:"VPS",campaignTypeId:"VPS",campaignTypeName:u.VPS,widgetId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.id,widgetVersion:p}},this.token=void 0,this.active=!0,this.currencySign="€",this.locale="de-DE",this.campaignId="",this.excluded="",this.productDetailNewTab=!0,this.imageResolutionWidth=250,this.exampleImageSource=B,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,this.stream=null,this.cameraEnabled=!1,this.cameraButtonClicked=!1,this.uploadSource=void 0}initResultEvents(){this.resultLoaded=!1,this.resultViewed=!1}stopStreamTracks(){var t;null===(t=this.stream)||void 0===t||t.getTracks().forEach((t=>{t.stop()}))}isOnboardingSlide(){return 0===this.slidePosition}isResultSlide(){return 1===this.slidePosition}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}componentDidLoad(){const t=this.el.querySelectorAll("[slot]");this.globalSlotsChanged.emit(Array.from(t))}activeWatcher(t){t?(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(t){t&&"modal"===this.mode&&(this.active=!0)}trackCameraEnabled({detail:t}){this.cameraEnabled=t}trackProductLoad({detail:t}){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:e}=t,s=this.getProductTrackEvent(t,"click"),a=n.results.find((t=>t.productId===i));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:t}){const{productId:i}=t,e=this.getProductTrackEvent(t,"click"),s=n.results.find((t=>t.productId===i));s&&s.deeplink&&(this.trackingDeactivated||await this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated))}trachSearchAreaChanges(){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"manual-selection"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackDetectedObject(){if(this.initResultEvents(),this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId"]),e=m(Object.assign({session_id:this.uiSessionId,source:this.imageSource,search_area:"attention-point"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackFilter({detail:t}){if(this.initResultEvents(),this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId"]),s=b(Object.assign({session_id:this.uiSessionId,source:this.imageSource,kind:t.kind,action:t.action},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}connectedCallback(){this.isDesktop="desktop"===(()=>{const t=navigator.userAgent;return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(t)?"tablet":/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(t)?"mobile":"desktop"})(),r.apiPath=this.apiPath,r.currencySign=this.currencySign,r.locale=this.locale,this.cameraAvailable=!!navigator.mediaDevices&&!!navigator.mediaDevices.getUserMedia,n.token=this.token,n.campaignId=o.pipe(this.campaignId,d.fromNullable,d.chain(d.fromPredicate(E)),d.map(_),d.chain(d.fromPredicate(P)),d.map((t=>`${t}`))),this.excluded&&(this.excluded=l(this.excluded)),n.excluded=this.excluded,this.uiSessionId=f(),this.trackingApi=x(this.apiPath,this.token),this.id=this.el.id}async componentWillLoad(){await h.init({lng:this.locale,fallbackLng:"de-DE",resources:S}),g(this,this.el),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId","widgetType"]),s=Object.assign({action:t,session_id:this.uiSessionId},e),a=y(s);this.trackingApi.trackEvent(a).then(this.setTrackingDeactivated)}getProductTrackEvent(t,i){if(this.trackingDeactivated)return null;const{productRank:e,productId:s}=t,a=I(t,["productRank","productId","campaignTypeId","widgetType","clickEvent"]),n=Object.assign({session_id:this.uiSessionId,rank:e,product:s},a);return w(i)(n)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),e=I(i,["campaignTypeId","widgetType"]);let s=k(t)(Object.assign({session_id:this.uiSessionId},e));this.trackingApi.trackEvent(s).then(this.setTrackingDeactivated)}trackInitialSearch(){if(this.trackingDeactivated)return;const t=this.getBasicEventData(),i=I(t,["campaignTypeId","widgetType"]),e=m(Object.assign({session_id:this.uiSessionId,search_area:"full",source:"upload"},i));this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}handleImageSelection(){this.imageSource="upload",this.slidePosition=1,this.el.shadowRoot.querySelector("vviinn-overlayed-modal").shadowRoot.querySelector("vviinn-overlay").querySelector("vviinn-modal").shadowRoot.querySelector(".body").scrollTop=0,this.stopStreamTracks()}renderButtons(){const t=[this.cameraAvailable&&e("button",{class:"action-button",part:"start-camera_button",onClick:()=>{this.handleStartCameraClick(),this.uploadSource="startCamera"}},n.loading&&"startCamera"===this.uploadSource?e("vviinn-preloader",null):e("span",{class:"action-button-content"},e("slot",{name:"vviinn-camera-icon"},e(T,null)),this.cameraEnabled?e("slot",{name:"vviinn-camera-button-text-stop"},e("span",null,h.t("cameraButtonTextStop"))):e("slot",{name:"vviinn-camera-button-text-start"},e("span",null,h.t("cameraButtonTextStart"))))),e("vviinn-image-selector",{class:"action-button",onClick:()=>this.uploadSource="uploadPhoto",onVviinnImageUploadFinished:this.handleVviinnImageUploadFinished,onVviinnImageUpload:()=>{this.handleVviinnImageUpload("uploadPhoto")},onVviinnNoResult:({detail:t})=>this.handleVviinnNoResult(t),resetVpsButton:this.resetVpsButton,basicEventData:this.getBasicEventData(),part:"upload-photo_button",startUpload:this.buttonPressed&&this.showingInButton&&"upload"===this.mode,loading:n.loading&&"uploadPhoto"===this.uploadSource},e("span",{slot:"upload-button-text",class:"action-button-content"},e("slot",{name:"vviinn-image-upload-icon"},e(j,null)),e("slot",{name:"vviinn-image-upload-button-text"},e("span",null,h.t("imageUploadButtonText")))))];return this.isDesktop?t.reverse():t}renderResults(){return 0===n.results.length?null:(this.resultLoaded||(this.vviinnResultLoad.emit(this.getBasicEventData()),this.trackResultEvent("load"),this.resultLoaded=!0),n.results.map(((t,i)=>{var s;return e("vviinn-product-card",{key:t.productId,hidden:!0,productTitle:t.title,productId:t.productId,productType:t.productType,brand:t.brand,deeplink:t.deeplink,price:t.price.actual,salePrice:t.price.sale,responsive:!0,imageWidth:this.imageResolutionWidth,image:null!==(s=t.image.thumbnail)&&void 0!==s?s:t.image.original,part:"product-card",campaignTypeId:"VPS",index:i,widgetElementId:this.id,buttonElementId:this.buttonElementId,widgetVersion:p})})))}resetState(){this.resetScroll("start-page_block"),this.slidePosition=0,n.resetCategoryLink=void 0,n.activeIonLink=void 0,n.image=d.none,n.imageUrl=d.none,n.imageBounds=d.none,n.searchArea=d.none,n.results=[],n.filters=[],n.detectedObjects=[],n.rectangleSearchForm=void 0,n.loading=!1,n.serverError=!1,this.wrongImageFormat=!1,this.resetScroll("results-block"),this.stopStreamTracks(),this.initResultEvents(),this.stream=null,this.cameraEnabled=!1,this.cameraButtonClicked=!1}haveErrors(){return this.wrongImageFormat||n.serverError}resetScroll(t,i="auto"){this.el.shadowRoot.getElementById(t).scroll({top:0,left:0,behavior:i})}handleModalClose(){this.active=!1,this.resetState(),["start-page_block","results-block"].forEach((t=>this.resetScroll(t))),this.trackWidgetEvent("close")}render(){var t;return e(s,null,!this.showingInButton&&e(v,null),e("vviinn-overlayed-modal",{class:{"first-screen":this.isOnboardingSlide()},isFirstScreen:this.isOnboardingSlide(),active:this.active,resetState:this.resetState.bind(this),onVviinnWidgetClose:()=>this.handleModalClose(),buttonElementId:null!==(t=this.buttonElementId)&&void 0!==t?t:this.id,widgetVersion:p,hideBackButton:"upload"===this.mode&&this.showingInButton||!this.cameraEnabled&&this.isOnboardingSlide(),exportparts:"secondary-action, title, close-button"},e("vviinn-slider",{showBullets:!1,position:this.slidePosition},e("vviinn-slide",{class:{"start-page":!0,"camera-enabled":this.cameraEnabled}},e("vviinn-example-image",{onVviinnImageUploadFinished:this.handleVviinnImageUploadFinished,onVviinnImageUpload:()=>{this.handleVviinnImageUpload("startCamera")},basicEventData:this.getBasicEventData(),srcObject:this.stream,cameraButtonClicked:this.cameraButtonClicked,exampleImageSource:this.exampleImageSource}),e("div",{class:{error:this.haveErrors()},id:"start-page_block"},e("div",{class:"start-page_main-content"},e("div",{class:{"start-page_errors-block":!0,hidden:!this.wrongImageFormat&&!n.serverError}},e("vviinn-wrong-format",{class:{hidden:!this.wrongImageFormat},handler:()=>this.resetState()}),e("vviinn-server-error",{class:{hidden:!n.serverError},handler:()=>this.resetState()})),!this.haveErrors()&&e("vviinn-teaser",null),!this.haveErrors()&&e("div",{class:"buttons-group"},this.renderButtons())),e("vviinn-privacy-badge",{privacyBadgeText:h.t("privacyBadgeText"),class:{invisible:this.haveErrors()}}))),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"},n.filters.map((t=>e("search-filters",{filter:t,basicEventData:this.getBasicEventData()})))))),e("div",{id:"results-block",class:"products-wrapper"},e("div",{class:{"nothing-found":!0,hidden:n.results.length>0}},e("vviinn-empty-results",{handler:()=>this.resetState()}),e("vviinn-onboarding",null)),e("div",{class:{hidden:n.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);height:640px}#start-page_block{box-sizing:border-box;display:flex;overflow-y:auto;flex-direction:column;justify-content:center;padding:42px 62px}#start-page_block.error{align-content:center}.start-page_main-content{flex-grow:1;display:flex;flex-direction:column;justify-content:center}.start-page_errors-block{display:flex;flex-direction:column;justify-content:center;gap:12px}.buttons-group{display:flex;flex-direction:column;gap:12px;margin:24px 0}.action-button{display:grid;border:none;cursor:pointer;align-items:center;border-radius:8px;font-size:16px;height:48px;justify-items:center;transition:background 0.1s ease-in-out;color:#525252;background-color:#f4f4f4}.action-button:hover{background-color:#eaeaea}.action-button:first-child{background:var(--color-primary, var(--color-primary-system));border-color:var(--color-primary, var(--color-primary-system));color:white}.action-button:first-child:hover{background:var(--color-primary-hover, var(--color-primary-hover-system));border-color:var(--color-primary-hover, var(--color-primary-hover-system))}.action-button:active{border-color:black}.action-button-content{display:grid;align-items:center;justify-items:start;justify-content:center;grid-template-columns:max-content auto;grid-gap:8px}.results-page{margin-top:60px;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{display:grid;grid-template-rows:min-content 1fr;grid-gap:24px;min-width:100%}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: 1080px){#start-page_block{padding:24px 36px}}@media (max-width: 768px){.start-page{display:flex;flex-direction:column;height:100%}vviinn-overlayed-modal.first-screen::part(secondary-action){visibility:visible}.start-page.active{height:calc(100vh - 64px);height:calc(100svh - 64px)}.start-page:not(.active){overflow:hidden}.results-page{margin-top:0}.results-page>*{box-sizing:border-box;padding:0 24px 24px}.filters-wrapper{min-width:calc(100% + 40px)}.results-page{grid-template-rows:min-content;grid-template-columns:unset}#start-page_block{overflow-y:unset;min-height:-moz-fit-content;min-height:fit-content;padding:24px 20px}.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}.action-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}.visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}";export{V as vviinn_vps_widget}
|
|
@@ -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-259be0c5.js";import{V as e}from"./p-74f46a18.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}
|
|
@@ -1 +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 b,f,g as w,b as y,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 E,U as _}from"./p-74f46a18.js";import{i as S}from"./p-2e76a5c3.js";import{s as A,c as V,f as j,a as O,S as W}from"./p-c8ef8d6c.js";import{v as $}from"./p-fca39f54.js";import{v as z,c as L,a as B,b as N,d as D,e as M,f as F,g as U,h as G,i as q}from"./p-da7273ce.js";const H="--vviinn-carousel-image-width",Z="items-group",K=class{constructor(i){t(this,i),this.columns=0,this.resizeObserver=new ResizeObserver((()=>this.handleResize())),this.defaultAnimationInterval=2e3,this.mutationObserver=new MutationObserver((()=>this.cloneSlottedContent())),this.isLastGroup=()=>this.activeContentGroup===this.getContentGroups().length-1&&this.isGridMode,this.isFirstGroup=()=>0===this.activeContentGroup&&this.isGridMode,this.updateCard=(t,i,s)=>{let e=this.crossSellingRecommendations.find((i=>i.productId===t));const n=this.crossSellingRecommendations.indexOf(e),r=this.recommendations.indexOf(e),o=this.crossSellingRecommendations;if(r+i<this.recommendations.length){o[n]=this.recommendations[r+i];const e=this.el.querySelector(`[data-id="${t}"]`).shadowRoot.querySelector(".update-button");e.classList.add("hidden"),this.crossSellingRecommendations=[...o];const a=setTimeout((()=>{r+2*i<=this.recommendations.length-1&&e.classList.remove("hidden"),clearTimeout(a)}),s)}},this.moveDirection="right",this.contentGroups=[],this.activeContentGroup=0,this.isRTL=!1,this.crossSellingRecommendations=[],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,this.updatingAllCards=void 0,this.updateButtonLocation=void 0}componentWillLoad(){this.isRTL="rtl"===document.dir}connectedCallback(){this.setItemWidth(),this.isSetMode="set"===this.mode,this.isGridMode="grid"===this.mode,this.isContinuityMode="continuity"===this.mode,this.isGridLike=this.isGridMode||this.isSetMode;const t=this.getColumnsNumber();this.isSetMode&&this.recommendations.length>=t&&(this.crossSellingRecommendations=this.recommendations.slice(0,t))}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())}updatingAllCardsWatcher(){if(!this.updatingAllCards)return;const t=this.getColumnsNumber();this.crossSellingRecommendations.forEach((i=>{this.updateCard(i.productId,t,this.defaultAnimationInterval)}))}crossSellingClickListener({detail:t}){const i=this.getColumnsNumber(),{animationInterval:s,productData:e}=t;this.updateCard(e.productId,i,s)}getItemWidthFromDocument(){return parseInt(getComputedStyle(document.body).getPropertyValue(H))}setItemWidth(){const t=this.getItemWidthFromDocument(),i=isNaN(t)?this.imageWidth:t;this.el.style.setProperty(H,`${i}px`)}getContentClassMap(){return{content:!0,[this.moveDirection]:!0,[this.isSetMode?"grid":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(`.${Z}`))}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 this.isGridMode&&this.showScroll}showScrollbar(){return this.isContinuityMode&&this.showScroll}getClassMap(){return{[this.isSetMode?"grid":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:this.isGridLike,dimmedBackground:this.isContinuityMode,campaignTypeId:this.campaignTypeId,index:s,widgetElementId:this.widgetElementId,widgetVersion:this.widgetVersion,addToBasketShow:this.addToBasketShow,mode:this.mode,"data-id":t.productId,updatingAllCards:this.updatingAllCards,defaultAnimationInterval:this.defaultAnimationInterval,updateButtonLocation:this.updateButtonLocation})}renderRecommendationGroup(t){return i("div",{class:Z,part:"items-group"},...t)}renderRecommendationGroups(t){return t.map((t=>this.renderRecommendationGroup(t)))}renderRecommendations(){return this.isGridLike?this.renderGrid():this.renderRecommendationsElements()}renderRecommendationsElements(){return(this.isSetMode?this.crossSellingRecommendations: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())},!this.isSetMode&&i("button",{class:"prev",onClick:()=>this.showPrev(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isFirstGroup()},i(E,null)),i("div",{class:this.getContentClassMap(),onScroll:()=>this.processScrollbarWidth()},this.renderRecommendations()),!this.isSetMode&&i("button",{class:"next",onClick:()=>this.showNext(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isLastGroup()},i(E,null))),this.showBullets()&&i("div",{class:"bullets"},this.renderBullets()))}get el(){return e(this)}static get watchers(){return{updatingAllCards:["updatingAllCardsWatcher"]}}};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) .prev,:host(.continuity) .next{border-radius:2px}:host(.grid) .prev,:host(.grid) .next{border-radius:50%}.prev,.next{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);fill:#525252;cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}.next:disabled,.prev:disabled{display:none}.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 tt={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 it(t){return d.call(tt,t)||(tt[t]=Y(l,t-1,[])),tt[t]}const st=/fit\/\d+\//,et=(t,i)=>c.pipe((t=>c.pipe(t.match(st),u.fromNullable(t),u.map((()=>t))))(t),u.map((t=>t.replace(st,`fit/${i}/`))),u.getOrElse((()=>t))),nt=(t,s)=>t.deeplink?i("a",{class:t.part,part:t.part,href:t.deeplink},s):s,rt=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)},ot=t=>i("span",{class:"price-container",part:"price-container"},t.salePrice?[i("span",{class:"price-sale",part:"price-sale"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.salePrice,locale:t.locale,priceType:"sale"})),i("span",{class:"price-outdated",part:"price-outdated"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"outdated"}))]:i("span",{class:"price-regular",part:"price-regular"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"regular"}))),at=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.vviinnCrossSellingClick=n(this,"vviinnCrossSellingClick",7),this.vviinnUpdatingAllCardsFinished=n(this,"vviinnUpdatingAllCardsFinished",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.updateButtonLocation=void 0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.buttonElementId=void 0,this.widgetVersion=void 0,this.index=0,this.updatingAllCards=void 0,this.defaultAnimationInterval=void 0,this.imageLoaded=!1,this.isTransitioning=!1}connectedCallback(){this.productData=this.getProductData()}componentWillLoad(){A(this,this.el)}crossSellingClickListener({detail:t}){const{animationInterval:i}=t;this.isTransitioning=!0;const s=setTimeout((()=>{this.isTransitioning=!1,clearTimeout(s)}),i)}updatingAllCardsWatcher(){if(!this.updatingAllCards)return;this.isTransitioning=!0;const t=setTimeout((()=>{this.vviinnUpdatingAllCardsFinished.emit(),this.isTransitioning=!1,clearTimeout(t)}),this.defaultAnimationInterval)}productIdWatcher(){this.productData=this.getProductData()}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:V[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:et(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:et(t.src,t.width),alt:t.title,ref:t.ref,onLoad:s})))(t)}generateRandomNumber(t,i){return Math.floor(Math.random()*(i-t+1))+t}render(){var t,e,n;return i(s,{part:"product-card",class:{dimmed:this.dimmedBackground,animated:this.isTransitioning},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, update-button-item"},i(nt,{deeplink:this.deeplink,part:"image-link"},this.renderImage()),this.isTransitioning?i(r,null,i("vviinn-skeleton",{height:20}),i("vviinn-skeleton",{height:20,halfWidth:!0})):i(r,null,i(nt,{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(ot,{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("div",{class:"basket-button-container"},this.isTransitioning?i("vviinn-skeleton",{height:40}):i("button",{class:{"basket-button":!0,"basket-button-grid":"grid"===this.mode||"set"===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,S.t("basketButtonText"))))),"set"===this.mode?i("button",{class:{"update-button":!0,hidden:"onTop"===this.updateButtonLocation},part:"update-button-item",onClick:()=>{this.vviinnCrossSellingClick.emit({animationInterval:this.generateRandomNumber(800,1400),productData:this.productData})}},i("slot",{name:"vviinn-update-icon-item"},i(_,null))):null)}get el(){return e(this)}static get watchers(){return{updatingAllCards:["updatingAllCardsWatcher"],productId:["productIdWatcher"]}}};at.style=":host{align-items:center;display:flex;flex-direction:column;position:relative;gap:8px;height:100%}.price-container{display:flex;flex-direction:column}.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;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}picture::before{content:\"\";opacity:0;width:100%;height:100%;box-sizing:border-box;display:block;top:0;left:0;position:absolute}.update-button{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;z-index:1;background:rgba(127, 127, 127, 0.4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:none;color:white;cursor:pointer}.update-button::after{content:\"\";position:absolute;top:-4px;right:-4px;width:calc(100% + 8px);height:calc(100% + 8px)}.update-button:hover{background:rgba(127, 127, 127, 0.5)}.update-button.hidden{display:none}.basket-button-container{margin-top:auto;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px}.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}:host(.dimmed) picture::after{content:\"\";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}:host(.animated) picture::before{opacity:1;animation:pulse 1.2s infinite}:host(.animated) picture::after{content:\"\";position:absolute;width:80px;height:80px;left:calc(50% - 40px);top:calc(50% - 40px);background-image:url(\"data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_810_154)'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M64.7332 1.23333C66.2665 12.2667 67.9665 13.9667 78.6665 15.2333C79.4332 15.3333 79.9999 15.9333 79.9999 16.6667C79.9999 17.4 79.4665 17.9333 78.6665 18.0667C67.9665 19.3667 66.2999 21.0333 64.7332 32.0667C64.6332 32.8 64.0665 33.3333 63.3665 33.3333C62.6665 33.3333 62.0999 32.8 61.9665 32.0667C60.4665 21.0333 58.7665 19.3667 48.0332 18.0667C47.2332 17.9667 46.6999 17.4333 46.6999 16.6667C46.6999 15.9 47.2332 15.3667 48.0332 15.2333C58.7665 13.7667 60.3999 12.2 61.9665 1.23333C62.0999 0.5 62.6665 0 63.3665 0C64.0665 0 64.5999 0.5 64.7332 1.23333ZM38.5665 71.5667C38.3665 72.6 37.6665 73.3333 36.6665 73.3333C35.6665 73.3333 34.9665 72.6 34.7998 71.5667C31.9332 50.7 29.0998 47.9 8.49984 45.2C7.39984 45.1 6.6665 44.3 6.6665 43.3C6.6665 42.3 7.39984 41.5333 8.49984 41.4333C29.1332 39.1333 32.0998 35.9333 34.7998 15.0333C34.9665 14.0333 35.6665 13.3333 36.6665 13.3333C37.6665 13.3333 38.3665 14 38.5665 15.0333C41.2665 35.9333 44.1998 39.1333 64.8665 41.4333C65.9332 41.5333 66.6665 42.2667 66.6665 43.3C66.6665 44.3333 65.9332 45.1 64.8665 45.2C44.1998 47.5 41.2665 50.7 38.5665 71.5667Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_810_154'%3E%3Crect width='80' height='80' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E \")}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}";const ht=class{constructor(i){t(this,i),this.height=void 0,this.halfWidth=!1}render(){return i(s,null,i("div",{class:{"vviinn-skeleton":!0},style:{height:`${this.height.toString()}px`,width:this.halfWidth?"50%":"100%"}}))}get el(){return e(this)}};function ct(t){return"function"==typeof t}function dt(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}ht.style=":host{display:block;width:100%;height:100%}.vviinn-skeleton{animation:pulse 1.2s infinite}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}";const lt=dt((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 ut(t,i){if(t){const s=t.indexOf(i);0<=s&&t.splice(s,1)}}class pt{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(ct(s))try{s()}catch(i){t=i instanceof lt?i.errors:[i]}const{_finalizers:e}=this;if(e){this._finalizers=null;for(const i of e)try{mt(i)}catch(i){t=null!=t?t:[],i instanceof lt?t=[...t,...i.errors]:t.push(i)}}if(t)throw new lt(t)}}add(t){var i;if(t&&t!==this)if(this.closed)mt(t);else{if(t instanceof pt){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)&&ut(i,t)}remove(t){const{_finalizers:i}=this;i&&ut(i,t),t instanceof pt&&t._removeParent(this)}}pt.EMPTY=(()=>{const t=new pt;return t.closed=!0,t})();const vt=pt.EMPTY;function gt(t){return t instanceof pt||t&&"closed"in t&&ct(t.remove)&&ct(t.add)&&ct(t.unsubscribe)}function mt(t){ct(t)?t():t.unsubscribe()}const bt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},ft={setTimeout(t,i,...s){const{delegate:e}=ft;return(null==e?void 0:e.setTimeout)?e.setTimeout(t,i,...s):setTimeout(t,i,...s)},clearTimeout(t){const{delegate:i}=ft;return((null==i?void 0:i.clearTimeout)||clearTimeout)(t)},delegate:void 0};function wt(){}const yt=xt("C",void 0,void 0);function xt(t,i,s){return{kind:t,value:i,error:s}}function kt(t){t()}class Ct extends pt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,gt(t)&&t.add(this)):this.destination=St}static create(t,i,s){return new Rt(t,i,s)}next(t){this.isStopped?_t(function(t){return xt("N",t,void 0)}(t),this):this._next(t)}error(t){this.isStopped?_t(xt("E",void 0,t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?_t(yt,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 It=Function.prototype.bind;function Tt(t,i){return It.call(t,i)}class Pt{constructor(t){this.partialObserver=t}next(t){const{partialObserver:i}=this;if(i.next)try{i.next(t)}catch(t){Et(t)}}error(t){const{partialObserver:i}=this;if(i.error)try{i.error(t)}catch(t){Et(t)}else Et(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(t){Et(t)}}}class Rt extends Ct{constructor(t,i,s){let e;if(super(),ct(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&&bt.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),e={next:t.next&&Tt(t.next,i),error:t.error&&Tt(t.error,i),complete:t.complete&&Tt(t.complete,i)}):e=t}this.destination=new Pt(e)}}function Et(t){var i;i=t,ft.setTimeout((()=>{const{onUnhandledError:t}=bt;if(!t)throw i;t(i)}))}function _t(t,i){const{onStoppedNotification:s}=bt;s&&ft.setTimeout((()=>s(t,i)))}const St={closed:!0,next:wt,error:function(t){throw t},complete:wt},At="function"==typeof Symbol&&Symbol.observable||"@@observable";function Vt(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 Ct||function(t){return t&&ct(t.next)&&ct(t.error)&&ct(t.complete)}(n)&>(n)?t:new Rt(t,i,s);var n;return kt((()=>{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=Ot(i))(((i,s)=>{const e=new Rt({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)}[At](){return this}pipe(...t){return(0===(i=t).length?Vt:1===i.length?i[0]:function(t){return i.reduce(((t,i)=>i(t)),t)})(this);var i}toPromise(t){return new(t=Ot(t))(((t,i)=>{let s;this.subscribe((t=>s=t),(t=>i(t)),(()=>t(s)))}))}}function Ot(t){var i;return null!==(i=null!=t?t:bt.Promise)&&void 0!==i?i:Promise}jt.create=t=>new jt(t);const Wt=dt((t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}));class $t 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 zt(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new Wt}next(t){kt((()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}}))}error(t){kt((()=>{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(){kt((()=>{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?vt:(this.currentObservers=null,e.push(t),new pt((()=>{this.currentObservers=null,ut(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}}$t.create=(t,i)=>new zt(t,i);class zt extends $t{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:vt}}const Lt=c.flow((t=>`Bearer ${t}`),(t=>new Headers({Authorization:t})),(t=>({headers:t}))),Bt=(Nt=x,function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];for(var s=t.length,e=it(s),n=Nt.map(t[0],e),r=1;r<s;r++)n=Nt.ap(n,t[r]);return n});var Nt;const Dt=(t,i={})=>g(Bt(w(),y),f,m(b(t,i))),Mt=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 Dt(r,n)},Ft=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 Dt(r,n)},Ut={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 Gt=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 qt=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 $t,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.updateButtonLocation="topAndItem",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,this.updatingAllCards=!1}getBasicEventData(){return{widgetType:"VPR",campaignTypeId:this.campaignType,campaignTypeName:V[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.pricePrefix=this.pricePrefix,v.currencySign=this.currencySign,v.locale=this.locale,this.id=null!==(t=this.buttonElementId)&&void 0!==t?t:this.el.id,this.uiSessionId=z(),this.trackingApi=L(this.apiPath,this.token),this.getRecommendations(),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}async componentWillLoad(){await S.init({lng:this.locale,fallbackLng:"de-DE",resources:Ut}),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=Gt(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=N(r)),this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated)}updatingAllCardsFinishedListener(){this.updatingAllCards&&(this.updatingAllCards=!1)}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Gt(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({action:t,session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=D(n):"VPR"===this.campaignType&&(e=M(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Gt(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=F(t)(n):"VPR"===this.campaignType&&(e=U(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=Gt(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=G(i)(a):"VPR"===n&&(o=q(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=Lt(this.token),s=c.pipe(P.of((t=>c.pipe(j(t),O((()=>Mt),(()=>Ft))))(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,["set"===this.mode?"grid":this.mode]:!0},"aria-hidden":"false"},this.addToBasketShow&&i(W,null),i(r,null,this.renderExternalCSS(),i("style",null,v.fallbackStyles),i("div",{class:"title-container"},i("h2",{part:"recommendations-title"},this.blockTitle),"set"===this.mode&&"onItem"!==this.updateButtonLocation?i("button",{class:"update-button",part:"update-button-top",onClick:()=>this.updatingAllCards=!0},i("slot",{name:"vviinn-update-icon-top"},i(_,null))):null),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:S.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||"set"===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,updatingAllCards:this.updatingAllCards,updateButtonLocation:this.updateButtonLocation})}get el(){return e(this)}static get watchers(){return{productId:["handleProductIdChange"],campaignType:["handleCampaignTypeChange"],campaigns:["handleCampaignsChange"],apiPath:["handleApiPathChange"],opened:["trackWidgetOpen"],closed:["trackWidgetClose"]}}};qt.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%}.title-container{display:flex;justify-content:space-between;align-items:center}.update-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:rgb(244, 244, 244);border:none;color:white;cursor:pointer}.update-button:hover{background:rgb(234, 234, 234)}.update-button svg{color:#6f6f6f}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,at as vviinn_product_card,ht as vviinn_skeleton,qt as vviinn_vpr_widget}
|
|
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 w,b as y,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 E,U as _}from"./p-74f46a18.js";import{i as S}from"./p-2e76a5c3.js";import{s as A,c as V,f as j,a as O,S as W}from"./p-c8ef8d6c.js";import{v as $}from"./p-259be0c5.js";import{v as z,c as L,a as B,b as N,d as D,e as M,f as F,g as U,h as G,i as q}from"./p-da7273ce.js";const H="--vviinn-carousel-image-width",Z="items-group",K=class{constructor(i){t(this,i),this.columns=0,this.resizeObserver=new ResizeObserver((()=>this.handleResize())),this.defaultAnimationInterval=2e3,this.mutationObserver=new MutationObserver((()=>this.cloneSlottedContent())),this.isLastGroup=()=>this.activeContentGroup===this.getContentGroups().length-1&&this.isGridMode,this.isFirstGroup=()=>0===this.activeContentGroup&&this.isGridMode,this.updateCard=(t,i,s)=>{let e=this.crossSellingRecommendations.find((i=>i.productId===t));const n=this.crossSellingRecommendations.indexOf(e),r=this.recommendations.indexOf(e),o=this.crossSellingRecommendations;if(r+i<this.recommendations.length){o[n]=this.recommendations[r+i];const e=this.el.querySelector(`[data-id="${t}"]`).shadowRoot.querySelector(".update-button");e.classList.add("hidden"),this.crossSellingRecommendations=[...o];const a=setTimeout((()=>{r+2*i<=this.recommendations.length-1&&e.classList.remove("hidden"),clearTimeout(a)}),s)}},this.moveDirection="right",this.contentGroups=[],this.activeContentGroup=0,this.isRTL=!1,this.crossSellingRecommendations=[],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,this.updatingAllCards=void 0,this.updateButtonLocation=void 0}componentWillLoad(){this.isRTL="rtl"===document.dir}connectedCallback(){this.setItemWidth(),this.isSetMode="set"===this.mode,this.isGridMode="grid"===this.mode,this.isContinuityMode="continuity"===this.mode,this.isGridLike=this.isGridMode||this.isSetMode;const t=this.getColumnsNumber();this.isSetMode&&this.recommendations.length>=t&&(this.crossSellingRecommendations=this.recommendations.slice(0,t))}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())}updatingAllCardsWatcher(){if(!this.updatingAllCards)return;const t=this.getColumnsNumber();this.crossSellingRecommendations.forEach((i=>{this.updateCard(i.productId,t,this.defaultAnimationInterval)}))}crossSellingClickListener({detail:t}){const i=this.getColumnsNumber(),{animationInterval:s,productData:e}=t;this.updateCard(e.productId,i,s)}getItemWidthFromDocument(){return parseInt(getComputedStyle(document.body).getPropertyValue(H))}setItemWidth(){const t=this.getItemWidthFromDocument(),i=isNaN(t)?this.imageWidth:t;this.el.style.setProperty(H,`${i}px`)}getContentClassMap(){return{content:!0,[this.moveDirection]:!0,[this.isSetMode?"grid":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(`.${Z}`))}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 this.isGridMode&&this.showScroll}showScrollbar(){return this.isContinuityMode&&this.showScroll}getClassMap(){return{[this.isSetMode?"grid":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:this.isGridLike,dimmedBackground:this.isContinuityMode,campaignTypeId:this.campaignTypeId,index:s,widgetElementId:this.widgetElementId,widgetVersion:this.widgetVersion,addToBasketShow:this.addToBasketShow,mode:this.mode,"data-id":t.productId,updatingAllCards:this.updatingAllCards,defaultAnimationInterval:this.defaultAnimationInterval,updateButtonLocation:this.updateButtonLocation})}renderRecommendationGroup(t){return i("div",{class:Z,part:"items-group"},...t)}renderRecommendationGroups(t){return t.map((t=>this.renderRecommendationGroup(t)))}renderRecommendations(){return this.isGridLike?this.renderGrid():this.renderRecommendationsElements()}renderRecommendationsElements(){return(this.isSetMode?this.crossSellingRecommendations: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())},!this.isSetMode&&i("button",{class:"prev",onClick:()=>this.showPrev(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isFirstGroup()},i(E,null)),i("div",{class:this.getContentClassMap(),onScroll:()=>this.processScrollbarWidth()},this.renderRecommendations()),!this.isSetMode&&i("button",{class:"next",onClick:()=>this.showNext(),part:"carousel-button",disabled:this.gridArrowsDynamic&&this.isLastGroup()},i(E,null))),this.showBullets()&&i("div",{class:"bullets"},this.renderBullets()))}get el(){return e(this)}static get watchers(){return{updatingAllCards:["updatingAllCardsWatcher"]}}};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) .prev,:host(.continuity) .next{border-radius:2px}:host(.grid) .prev,:host(.grid) .next{border-radius:50%}.prev,.next{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);fill:#525252;cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}.next:disabled,.prev:disabled{display:none}.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 tt={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 it(t){return d.call(tt,t)||(tt[t]=Y(l,t-1,[])),tt[t]}const st=/fit\/\d+\//,et=(t,i)=>c.pipe((t=>c.pipe(t.match(st),u.fromNullable(t),u.map((()=>t))))(t),u.map((t=>t.replace(st,`fit/${i}/`))),u.getOrElse((()=>t))),nt=(t,s)=>t.deeplink?i("a",{class:t.part,part:t.part,href:t.deeplink},s):s,rt=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)},ot=t=>i("span",{class:"price-container",part:"price-container"},t.salePrice?[i("span",{class:"price-sale",part:"price-sale"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.salePrice,locale:t.locale,priceType:"sale"})),i("span",{class:"price-outdated",part:"price-outdated"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"outdated"}))]:i("span",{class:"price-regular",part:"price-regular"},i(rt,{prefix:t.prefix,currency:t.currency,price:t.price,locale:t.locale,priceType:"regular"}))),at=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.vviinnCrossSellingClick=n(this,"vviinnCrossSellingClick",7),this.vviinnUpdatingAllCardsFinished=n(this,"vviinnUpdatingAllCardsFinished",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.updateButtonLocation=void 0,this.campaignTypeId=void 0,this.widgetElementId=void 0,this.buttonElementId=void 0,this.widgetVersion=void 0,this.index=0,this.updatingAllCards=void 0,this.defaultAnimationInterval=void 0,this.imageLoaded=!1,this.isTransitioning=!1}connectedCallback(){this.productData=this.getProductData()}componentWillLoad(){A(this,this.el)}crossSellingClickListener({detail:t}){const{animationInterval:i}=t;this.isTransitioning=!0;const s=setTimeout((()=>{this.isTransitioning=!1,clearTimeout(s)}),i)}updatingAllCardsWatcher(){if(!this.updatingAllCards)return;this.isTransitioning=!0;const t=setTimeout((()=>{this.vviinnUpdatingAllCardsFinished.emit(),this.isTransitioning=!1,clearTimeout(t)}),this.defaultAnimationInterval)}productIdWatcher(){this.productData=this.getProductData()}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:V[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:et(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:et(t.src,t.width),alt:t.title,ref:t.ref,onLoad:s})))(t)}generateRandomNumber(t,i){return Math.floor(Math.random()*(i-t+1))+t}render(){var t,e,n;return i(s,{part:"product-card",class:{dimmed:this.dimmedBackground,animated:this.isTransitioning},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, update-button-item"},i(nt,{deeplink:this.deeplink,part:"image-link"},this.renderImage()),this.isTransitioning?i(r,null,i("vviinn-skeleton",{height:20}),i("vviinn-skeleton",{height:20,halfWidth:!0})):i(r,null,i(nt,{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(ot,{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("div",{class:"basket-button-container"},this.isTransitioning?i("vviinn-skeleton",{height:40}):i("button",{class:{"basket-button":!0,"basket-button-grid":"grid"===this.mode||"set"===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,S.t("basketButtonText"))))),"set"===this.mode?i("button",{class:{"update-button":!0,hidden:"onTop"===this.updateButtonLocation},part:"update-button-item",onClick:()=>{this.vviinnCrossSellingClick.emit({animationInterval:this.generateRandomNumber(800,1400),productData:this.productData})}},i("slot",{name:"vviinn-update-icon-item"},i(_,null))):null)}get el(){return e(this)}static get watchers(){return{updatingAllCards:["updatingAllCardsWatcher"],productId:["productIdWatcher"]}}};at.style=":host{align-items:center;display:flex;flex-direction:column;position:relative;gap:8px;height:100%}.price-container{display:flex;flex-direction:column}.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;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}picture::before{content:\"\";opacity:0;width:100%;height:100%;box-sizing:border-box;display:block;top:0;left:0;position:absolute}.update-button{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;z-index:1;background:rgba(127, 127, 127, 0.4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:none;color:white;cursor:pointer}.update-button::after{content:\"\";position:absolute;top:-4px;right:-4px;width:calc(100% + 8px);height:calc(100% + 8px)}.update-button:hover{background:rgba(127, 127, 127, 0.5)}.update-button.hidden{display:none}.basket-button-container{margin-top:auto;width:100%}.basket-button{border:none;cursor:pointer;font-size:16px;padding:10px 12px}.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}:host(.dimmed) picture::after{content:\"\";width:100%;height:100%;box-sizing:border-box;background:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}:host(.animated) picture::before{opacity:1;animation:pulse 1.2s infinite}:host(.animated) picture::after{content:\"\";position:absolute;width:80px;height:80px;left:calc(50% - 40px);top:calc(50% - 40px);background-image:url(\"data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_810_154)'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M64.7332 1.23333C66.2665 12.2667 67.9665 13.9667 78.6665 15.2333C79.4332 15.3333 79.9999 15.9333 79.9999 16.6667C79.9999 17.4 79.4665 17.9333 78.6665 18.0667C67.9665 19.3667 66.2999 21.0333 64.7332 32.0667C64.6332 32.8 64.0665 33.3333 63.3665 33.3333C62.6665 33.3333 62.0999 32.8 61.9665 32.0667C60.4665 21.0333 58.7665 19.3667 48.0332 18.0667C47.2332 17.9667 46.6999 17.4333 46.6999 16.6667C46.6999 15.9 47.2332 15.3667 48.0332 15.2333C58.7665 13.7667 60.3999 12.2 61.9665 1.23333C62.0999 0.5 62.6665 0 63.3665 0C64.0665 0 64.5999 0.5 64.7332 1.23333ZM38.5665 71.5667C38.3665 72.6 37.6665 73.3333 36.6665 73.3333C35.6665 73.3333 34.9665 72.6 34.7998 71.5667C31.9332 50.7 29.0998 47.9 8.49984 45.2C7.39984 45.1 6.6665 44.3 6.6665 43.3C6.6665 42.3 7.39984 41.5333 8.49984 41.4333C29.1332 39.1333 32.0998 35.9333 34.7998 15.0333C34.9665 14.0333 35.6665 13.3333 36.6665 13.3333C37.6665 13.3333 38.3665 14 38.5665 15.0333C41.2665 35.9333 44.1998 39.1333 64.8665 41.4333C65.9332 41.5333 66.6665 42.2667 66.6665 43.3C66.6665 44.3333 65.9332 45.1 64.8665 45.2C44.1998 47.5 41.2665 50.7 38.5665 71.5667Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_810_154'%3E%3Crect width='80' height='80' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E \")}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}";const ht=class{constructor(i){t(this,i),this.height=void 0,this.halfWidth=!1}render(){return i(s,null,i("div",{class:{"vviinn-skeleton":!0},style:{height:`${this.height.toString()}px`,width:this.halfWidth?"50%":"100%"}}))}get el(){return e(this)}};function ct(t){return"function"==typeof t}function dt(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}ht.style=":host{display:block;width:100%;height:100%}.vviinn-skeleton{animation:pulse 1.2s infinite}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}";const lt=dt((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 ut(t,i){if(t){const s=t.indexOf(i);0<=s&&t.splice(s,1)}}class pt{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(ct(s))try{s()}catch(i){t=i instanceof lt?i.errors:[i]}const{_finalizers:e}=this;if(e){this._finalizers=null;for(const i of e)try{mt(i)}catch(i){t=null!=t?t:[],i instanceof lt?t=[...t,...i.errors]:t.push(i)}}if(t)throw new lt(t)}}add(t){var i;if(t&&t!==this)if(this.closed)mt(t);else{if(t instanceof pt){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)&&ut(i,t)}remove(t){const{_finalizers:i}=this;i&&ut(i,t),t instanceof pt&&t._removeParent(this)}}pt.EMPTY=(()=>{const t=new pt;return t.closed=!0,t})();const vt=pt.EMPTY;function gt(t){return t instanceof pt||t&&"closed"in t&&ct(t.remove)&&ct(t.add)&&ct(t.unsubscribe)}function mt(t){ct(t)?t():t.unsubscribe()}const bt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},ft={setTimeout(t,i,...s){const{delegate:e}=ft;return(null==e?void 0:e.setTimeout)?e.setTimeout(t,i,...s):setTimeout(t,i,...s)},clearTimeout(t){const{delegate:i}=ft;return((null==i?void 0:i.clearTimeout)||clearTimeout)(t)},delegate:void 0};function wt(){}const yt=xt("C",void 0,void 0);function xt(t,i,s){return{kind:t,value:i,error:s}}function kt(t){t()}class Ct extends pt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,gt(t)&&t.add(this)):this.destination=St}static create(t,i,s){return new Rt(t,i,s)}next(t){this.isStopped?_t(function(t){return xt("N",t,void 0)}(t),this):this._next(t)}error(t){this.isStopped?_t(xt("E",void 0,t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?_t(yt,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 It=Function.prototype.bind;function Tt(t,i){return It.call(t,i)}class Pt{constructor(t){this.partialObserver=t}next(t){const{partialObserver:i}=this;if(i.next)try{i.next(t)}catch(t){Et(t)}}error(t){const{partialObserver:i}=this;if(i.error)try{i.error(t)}catch(t){Et(t)}else Et(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(t){Et(t)}}}class Rt extends Ct{constructor(t,i,s){let e;if(super(),ct(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&&bt.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),e={next:t.next&&Tt(t.next,i),error:t.error&&Tt(t.error,i),complete:t.complete&&Tt(t.complete,i)}):e=t}this.destination=new Pt(e)}}function Et(t){var i;i=t,ft.setTimeout((()=>{const{onUnhandledError:t}=bt;if(!t)throw i;t(i)}))}function _t(t,i){const{onStoppedNotification:s}=bt;s&&ft.setTimeout((()=>s(t,i)))}const St={closed:!0,next:wt,error:function(t){throw t},complete:wt},At="function"==typeof Symbol&&Symbol.observable||"@@observable";function Vt(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 Ct||function(t){return t&&ct(t.next)&&ct(t.error)&&ct(t.complete)}(n)&>(n)?t:new Rt(t,i,s);var n;return kt((()=>{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=Ot(i))(((i,s)=>{const e=new Rt({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)}[At](){return this}pipe(...t){return(0===(i=t).length?Vt:1===i.length?i[0]:function(t){return i.reduce(((t,i)=>i(t)),t)})(this);var i}toPromise(t){return new(t=Ot(t))(((t,i)=>{let s;this.subscribe((t=>s=t),(t=>i(t)),(()=>t(s)))}))}}function Ot(t){var i;return null!==(i=null!=t?t:bt.Promise)&&void 0!==i?i:Promise}jt.create=t=>new jt(t);const Wt=dt((t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}));class $t 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 zt(this,this);return i.operator=t,i}_throwIfClosed(){if(this.closed)throw new Wt}next(t){kt((()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(t)}}))}error(t){kt((()=>{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(){kt((()=>{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?vt:(this.currentObservers=null,e.push(t),new pt((()=>{this.currentObservers=null,ut(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}}$t.create=(t,i)=>new zt(t,i);class zt extends $t{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:vt}}const Lt=c.flow((t=>`Bearer ${t}`),(t=>new Headers({Authorization:t})),(t=>({headers:t}))),Bt=(Nt=x,function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];for(var s=t.length,e=it(s),n=Nt.map(t[0],e),r=1;r<s;r++)n=Nt.ap(n,t[r]);return n});var Nt;const Dt=(t,i={})=>g(Bt(w(),y),f,m(b(t,i))),Mt=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 Dt(r,n)},Ft=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 Dt(r,n)},Ut={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 Gt=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 qt=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 $t,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.updateButtonLocation="topAndItem",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,this.updatingAllCards=!1}getBasicEventData(){return{widgetType:"VPR",campaignTypeId:this.campaignType,campaignTypeName:V[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.pricePrefix=this.pricePrefix,v.currencySign=this.currencySign,v.locale=this.locale,this.id=null!==(t=this.buttonElementId)&&void 0!==t?t:this.el.id,this.uiSessionId=z(),this.trackingApi=L(this.apiPath,this.token),this.getRecommendations(),this.vviinnWidgetLoad.emit(this.getBasicEventData()),this.trackWidgetEvent("load")}async componentWillLoad(){await S.init({lng:this.locale,fallbackLng:"de-DE",resources:Ut}),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=Gt(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=N(r)),this.trackingApi.trackEvent(n).then(this.setTrackingDeactivated)}updatingAllCardsFinishedListener(){this.updatingAllCards&&(this.updatingAllCards=!1)}trackWidgetEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Gt(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({action:t,session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=D(n):"VPR"===this.campaignType&&(e=M(n)),this.trackingApi.trackEvent(e).then(this.setTrackingDeactivated)}trackResultEvent(t){if(this.trackingDeactivated)return;const i=this.getBasicEventData(),s=Gt(i,["campaignTypeId","widgetType"]);let e;const n=Object.assign({session_id:this.uiSessionId},s);"VCS"===this.campaignType?e=F(t)(n):"VPR"===this.campaignType&&(e=U(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=Gt(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=G(i)(a):"VPR"===n&&(o=q(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=Lt(this.token),s=c.pipe(P.of((t=>c.pipe(j(t),O((()=>Mt),(()=>Ft))))(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,["set"===this.mode?"grid":this.mode]:!0},"aria-hidden":"false"},this.addToBasketShow&&i(W,null),i(r,null,this.renderExternalCSS(),i("style",null,v.fallbackStyles),i("div",{class:"title-container"},i("h2",{part:"recommendations-title"},this.blockTitle),"set"===this.mode&&"onItem"!==this.updateButtonLocation?i("button",{class:"update-button",part:"update-button-top",onClick:()=>this.updatingAllCards=!0},i("slot",{name:"vviinn-update-icon-top"},i(_,null))):null),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:S.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||"set"===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,updatingAllCards:this.updatingAllCards,updateButtonLocation:this.updateButtonLocation})}get el(){return e(this)}static get watchers(){return{productId:["handleProductIdChange"],campaignType:["handleCampaignTypeChange"],campaigns:["handleCampaignsChange"],apiPath:["handleApiPathChange"],opened:["trackWidgetOpen"],closed:["trackWidgetClose"]}}};qt.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%}.title-container{display:flex;justify-content:space-between;align-items:center}.update-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:rgb(244, 244, 244);border:none;color:white;cursor:pointer}.update-button:hover{background:rgb(234, 234, 234)}.update-button svg{color:#6f6f6f}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,at as vviinn_product_card,ht as vviinn_skeleton,qt 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-06882ce4",[[1,"vviinn-button",{addStyle:[4,"add-style"]}]]],["p-010b4979",[[1,"vviinn-preloader"]]],["p-872a4ee9",[[1,"vviinn-error"]]],["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-06882ce4",[[1,"vviinn-button",{addStyle:[4,"add-style"]}]]],["p-010b4979",[[1,"vviinn-preloader"]]],["p-872a4ee9",[[1,"vviinn-error"]]],["p-e57777fe",[[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"],updateButtonLocation:[1,"update-button-location"],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],updatingAllCards:[32]},[[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnAddToBasket","trackAddToBasket"],[0,"vviinnUpdatingAllCardsFinished","updatingAllCardsFinishedListener"]]],[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"],updatingAllCards:[4,"updating-all-cards"],updateButtonLocation:[1,"update-button-location"],moveDirection:[32],contentGroups:[32],activeContentGroup:[32],isRTL:[32],crossSellingRecommendations:[32]},[[0,"vviinnCrossSellingClick","crossSellingClickListener"]]],[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"],updateButtonLocation:[1,"update-button-location"],campaignTypeId:[1,"campaign-type-id"],widgetElementId:[1,"widget-element-id"],buttonElementId:[1,"button-element-id"],widgetVersion:[1,"widget-version"],index:[2],updatingAllCards:[4,"updating-all-cards"],defaultAnimationInterval:[2,"default-animation-interval"],imageLoaded:[32],isTransitioning:[32]},[[0,"vviinnCrossSellingClick","crossSellingClickListener"]]],[1,"vviinn-skeleton",{height:[2],halfWidth:[4,"half-width"]}]]],["p-7228f626",[[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"],isFirstScreen:[4,"is-first-screen"]}],[1,"vviinn-empty-results",{handler:[16]}],[1,"vviinn-image-selector",{basicEventData:[16],startUpload:[4,"start-upload"],loading:[4],accept:[1],resetVpsButton:[16],capture:[1]}],[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-example-image",{exampleImageSource:[1,"example-image-source"],width:[2],height:[2],basicEventData:[16],srcObject:[16],cameraButtonClicked:[4,"camera-button-clicked"],selected:[32],videoInitialized:[32]}],[1,"vviinn-privacy-badge",{privacyBadgeText:[1,"privacy-badge-text"]}],[1,"vviinn-slide"],[1,"vviinn-slider",{showBullets:[4,"show-bullets"],position:[514],showArrows:[4,"show-arrows"],elementsCount:[32],internalPosition:[32],swipeStartPosition:[32],isRTL:[32]}],[1,"vviinn-teaser"],[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"],isFirstScreen:[4,"is-first-screen"],slider:[32]}],[1,"vviinn-overlay"]]],["p-97e2e98c",[[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"],exampleImageSource:[1,"example-image-source"],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],stream:[32],cameraEnabled:[32],cameraButtonClicked:[32],uploadSource:[32]},[[0,"vviinnCameraEnabled","trackCameraEnabled"],[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnImageCrop","trachSearchAreaChanges"],[0,"vviinnSelectObject","trackDetectedObject"],[0,"vviinnSelectFilter","trackFilter"]]]]],["p-7d6f04df",[[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"],exampleImageSource:[1,"example-image-source"],apiPath:[1,"api-path"],buttonPressed:[32]},[[0,"vviinnWidgetClose","handleModalClosed"]]]]],["p-fdf9df6f",[[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-b2498a3e",[[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.41.2";export{o as v}
|
package/www/build/p-fca39f54.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const o="2.41.2";export{o as v}
|