vviinn-widgets 2.5.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/types/campaign/CampaignService.d.ts +1 -1
  2. package/dist/types/campaign/VCSCampaignService.d.ts +2 -1
  3. package/dist/types/campaign/VPRCampaignService.d.ts +2 -1
  4. package/dist/types/components/vviinn-vpr-button/recommendations-sidebar/recommendations-sidebar.d.ts +2 -0
  5. package/dist/types/components/vviinn-vpr-button/stories/args.d.ts +6 -0
  6. package/dist/types/components/vviinn-vpr-button/stories/vviinn-vpr-button.stories.d.ts +6 -0
  7. package/dist/types/components/vviinn-vpr-button/vviinn-vpr-button.d.ts +2 -0
  8. package/dist/types/components/vviinn-vpr-widget/stories/args.d.ts +6 -0
  9. package/dist/types/components/vviinn-vpr-widget/stories/vviinn-vpr-widget.stories.d.ts +6 -0
  10. package/dist/types/components/vviinn-vpr-widget/vviinn-vpr-vidget.d.ts +3 -0
  11. package/dist/types/components.d.ts +24 -0
  12. package/dist/vviinn-widgets/{app-globals-11a5a1c1.js → app-globals-26a61baa.js} +1 -1
  13. package/dist/vviinn-widgets/cropper-handler.entry.js +1 -1
  14. package/{www/build/customized-slots-d5bb8a00.js → dist/vviinn-widgets/customized-slots-fb9b3e5f.js} +1 -1
  15. package/dist/vviinn-widgets/highlight-box.entry.js +3 -3
  16. package/dist/vviinn-widgets/image-cropper.entry.js +3 -3
  17. package/dist/vviinn-widgets/{imageSearch.store-fb3493d0.js → imageSearch.store-15bda6de.js} +3 -9
  18. package/{www/build/index-9374b45b.js → dist/vviinn-widgets/index-533f9255.js} +1 -1
  19. package/dist/vviinn-widgets/{index-aa272585.js → index-89051fa8.js} +1 -1
  20. package/dist/vviinn-widgets/{number-dd70557d.js → number-171db649.js} +1 -1
  21. package/dist/vviinn-widgets/search-filters.entry.js +4 -4
  22. package/dist/vviinn-widgets/vviinn-carousel.entry.js +2 -2
  23. package/dist/vviinn-widgets/vviinn-detected-object.entry.js +3 -3
  24. package/dist/vviinn-widgets/vviinn-empty-results.entry.js +1 -1
  25. package/dist/vviinn-widgets/vviinn-error.entry.js +1 -1
  26. package/dist/vviinn-widgets/vviinn-example-image.entry.js +3 -3
  27. package/dist/vviinn-widgets/vviinn-example-images.entry.js +2 -2
  28. package/dist/vviinn-widgets/vviinn-image-selector.entry.js +3 -3
  29. package/dist/vviinn-widgets/vviinn-image-view.entry.js +3 -3
  30. package/dist/vviinn-widgets/vviinn-modal.entry.js +1 -1
  31. package/dist/vviinn-widgets/vviinn-onboarding-card-1.entry.js +3 -3
  32. package/dist/vviinn-widgets/vviinn-onboarding-card-2.entry.js +3 -3
  33. package/dist/vviinn-widgets/vviinn-onboarding-card-3.entry.js +3 -3
  34. package/dist/vviinn-widgets/vviinn-onboarding.entry.js +2 -2
  35. package/dist/vviinn-widgets/vviinn-overlay.entry.js +1 -1
  36. package/dist/vviinn-widgets/vviinn-overlayed-modal.entry.js +1 -1
  37. package/dist/vviinn-widgets/vviinn-preloader.entry.js +3 -3
  38. package/dist/vviinn-widgets/vviinn-privacy-badge.entry.js +2 -2
  39. package/dist/vviinn-widgets/vviinn-product-card.entry.js +3 -3
  40. package/dist/vviinn-widgets/vviinn-recommendations-sidebar.entry.js +5 -3
  41. package/dist/vviinn-widgets/vviinn-server-error.entry.js +1 -1
  42. package/dist/vviinn-widgets/vviinn-slide.entry.js +1 -1
  43. package/dist/vviinn-widgets/vviinn-slider.entry.js +3 -3
  44. package/dist/vviinn-widgets/vviinn-teaser.entry.js +2 -2
  45. package/dist/vviinn-widgets/vviinn-vpr-button.entry.js +7 -2
  46. package/dist/vviinn-widgets/vviinn-vpr-widget.entry.js +14 -8
  47. package/dist/vviinn-widgets/vviinn-vps-button.entry.js +3 -3
  48. package/dist/vviinn-widgets/vviinn-vps-widget.entry.js +4 -4
  49. package/dist/vviinn-widgets/vviinn-widgets.esm.js +3 -3
  50. package/dist/vviinn-widgets/vviinn-wrong-format.entry.js +1 -1
  51. package/package.json +3 -3
  52. package/www/build/{app-globals-11a5a1c1.js → app-globals-26a61baa.js} +1 -1
  53. package/www/build/cropper-handler.entry.js +1 -1
  54. package/{dist/vviinn-widgets/customized-slots-d5bb8a00.js → www/build/customized-slots-fb9b3e5f.js} +1 -1
  55. package/www/build/highlight-box.entry.js +3 -3
  56. package/www/build/image-cropper.entry.js +3 -3
  57. package/www/build/{imageSearch.store-fb3493d0.js → imageSearch.store-15bda6de.js} +3 -9
  58. package/{dist/vviinn-widgets/index-9374b45b.js → www/build/index-533f9255.js} +1 -1
  59. package/www/build/{index-aa272585.js → index-89051fa8.js} +1 -1
  60. package/www/build/{number-dd70557d.js → number-171db649.js} +1 -1
  61. package/www/build/search-filters.entry.js +4 -4
  62. package/www/build/vviinn-carousel.entry.js +2 -2
  63. package/www/build/vviinn-detected-object.entry.js +3 -3
  64. package/www/build/vviinn-empty-results.entry.js +1 -1
  65. package/www/build/vviinn-error.entry.js +1 -1
  66. package/www/build/vviinn-example-image.entry.js +3 -3
  67. package/www/build/vviinn-example-images.entry.js +2 -2
  68. package/www/build/vviinn-image-selector.entry.js +3 -3
  69. package/www/build/vviinn-image-view.entry.js +3 -3
  70. package/www/build/vviinn-modal.entry.js +1 -1
  71. package/www/build/vviinn-onboarding-card-1.entry.js +3 -3
  72. package/www/build/vviinn-onboarding-card-2.entry.js +3 -3
  73. package/www/build/vviinn-onboarding-card-3.entry.js +3 -3
  74. package/www/build/vviinn-onboarding.entry.js +2 -2
  75. package/www/build/vviinn-overlay.entry.js +1 -1
  76. package/www/build/vviinn-overlayed-modal.entry.js +1 -1
  77. package/www/build/vviinn-preloader.entry.js +3 -3
  78. package/www/build/vviinn-privacy-badge.entry.js +2 -2
  79. package/www/build/vviinn-product-card.entry.js +3 -3
  80. package/www/build/vviinn-recommendations-sidebar.entry.js +5 -3
  81. package/www/build/vviinn-server-error.entry.js +1 -1
  82. package/www/build/vviinn-slide.entry.js +1 -1
  83. package/www/build/vviinn-slider.entry.js +3 -3
  84. package/www/build/vviinn-teaser.entry.js +2 -2
  85. package/www/build/vviinn-vpr-button.entry.js +7 -2
  86. package/www/build/vviinn-vpr-widget.entry.js +14 -8
  87. package/www/build/vviinn-vps-button.entry.js +3 -3
  88. package/www/build/vviinn-vps-widget.entry.js +4 -4
  89. package/www/build/vviinn-widgets.esm.js +3 -3
  90. package/www/build/vviinn-wrong-format.entry.js +1 -1
  91. package/www/index.html +1 -1
@@ -1,3 +1,3 @@
1
1
  import * as C from "./Campaign";
2
- export declare const getRecommendationsService: (campaignType: C.CampaignName) => ((productId: string) => (options: RequestInit) => import("fp-ts/lib/TaskEither").TaskEither<import("../error").BasicError<string | Response>, import("./VPRCampaignResponse").VPRCampaignResponse>) | ((productId: string) => (options: RequestInit) => import("fp-ts/lib/TaskEither").TaskEither<import("../error").BasicError<string | Response>, import("./VCSCampaignResponse").VCSCampaignResponse>);
2
+ export declare const getRecommendationsService: (campaignType: C.CampaignName) => ((productId: string) => (campaigns: import("fp-ts/lib/Option").Option<string>) => (options: RequestInit) => import("fp-ts/lib/TaskEither").TaskEither<import("../error").BasicError<string | Response>, import("./VPRCampaignResponse").VPRCampaignResponse>) | ((productId: string) => (campaigns: import("fp-ts/lib/Option").Option<string>) => (options: RequestInit) => import("fp-ts/lib/TaskEither").TaskEither<import("../error").BasicError<string | Response>, import("./VCSCampaignResponse").VCSCampaignResponse>);
3
3
  //# sourceMappingURL=CampaignService.d.ts.map
@@ -1,3 +1,4 @@
1
1
  import { VCSCampaignResponse } from "./VCSCampaignResponse";
2
- export declare const getVCSRecommendations: (productId: string) => (options: RequestInit) => import("fp-ts/lib/TaskEither").TaskEither<import("../error").BasicError<string | Response>, VCSCampaignResponse>;
2
+ import * as O from "fp-ts/Option";
3
+ export declare const getVCSRecommendations: (productId: string) => (campaigns: O.Option<string>) => (options: RequestInit) => import("fp-ts/lib/TaskEither").TaskEither<import("../error").BasicError<string | Response>, VCSCampaignResponse>;
3
4
  //# sourceMappingURL=VCSCampaignService.d.ts.map
@@ -1,3 +1,4 @@
1
1
  import { VPRCampaignResponse } from "./VPRCampaignResponse";
2
- export declare const getVPRRecommendations: (productId: string) => (options: RequestInit) => import("fp-ts/lib/TaskEither").TaskEither<import("../error").BasicError<string | Response>, VPRCampaignResponse>;
2
+ import * as O from "fp-ts/Option";
3
+ export declare const getVPRRecommendations: (productId: string) => (campaigns: O.Option<string>) => (options: RequestInit) => import("fp-ts/lib/TaskEither").TaskEither<import("../error").BasicError<string | Response>, VPRCampaignResponse>;
3
4
  //# sourceMappingURL=VPRCampaignService.d.ts.map
@@ -12,6 +12,8 @@ export declare class RecommendationsSidebar {
12
12
  position: "bottom" | "right";
13
13
  sourceImage: string | null;
14
14
  widgetScrollbar: boolean;
15
+ /** comma-separated list of campaign-ids */
16
+ campaigns: string;
15
17
  state: SidebarState;
16
18
  modalClosed: EventEmitter<void>;
17
19
  bodyClickListener(event: ClickEvent): void;
@@ -204,5 +204,11 @@ export declare const argTypes: {
204
204
  token: {
205
205
  name: string;
206
206
  };
207
+ campaigns: {
208
+ name: string;
209
+ control: {
210
+ type: string;
211
+ };
212
+ };
207
213
  };
208
214
  //# sourceMappingURL=args.d.ts.map
@@ -208,6 +208,12 @@ declare const _default: {
208
208
  token: {
209
209
  name: string;
210
210
  };
211
+ campaigns: {
212
+ name: string;
213
+ control: {
214
+ type: string;
215
+ };
216
+ };
211
217
  };
212
218
  };
213
219
  export default _default;
@@ -9,6 +9,8 @@ export declare class VviinnVprButton {
9
9
  sourceImage: string | null;
10
10
  sidebarTitle: string;
11
11
  modalScrollbar: boolean;
12
+ /** comma-separated list of campaign-ids */
13
+ campaigns: string;
12
14
  private sidebar;
13
15
  private sidebarCloseListener;
14
16
  render(): any;
@@ -51,6 +51,12 @@ export declare const argTypes: {
51
51
  };
52
52
  required: boolean;
53
53
  };
54
+ campaigns: {
55
+ name: string;
56
+ control: {
57
+ type: string;
58
+ };
59
+ };
54
60
  contentAlignment: {
55
61
  name: string;
56
62
  options: string[];
@@ -37,6 +37,12 @@ declare const _default: {
37
37
  };
38
38
  required: boolean;
39
39
  };
40
+ campaigns: {
41
+ name: string;
42
+ control: {
43
+ type: string;
44
+ };
45
+ };
40
46
  contentAlignment: {
41
47
  name: string;
42
48
  options: string[];
@@ -41,6 +41,8 @@ export declare class VviinnVprWidget implements ComponentInterface {
41
41
  campaignType: CampaignName;
42
42
  /** Locale for currency formatting */
43
43
  locale: string;
44
+ /** comma-separated list of campaign-ids */
45
+ campaigns: string;
44
46
  /** @internal */
45
47
  apiPath: string | undefined;
46
48
  /** @internal */
@@ -56,6 +58,7 @@ export declare class VviinnVprWidget implements ComponentInterface {
56
58
  uiSessionId: string;
57
59
  handleProductIdChange(): void;
58
60
  handleCampaignTypeChange(): void;
61
+ handleCampaignsChange(): void;
59
62
  handleApiPathChange(newPath: string): void;
60
63
  handleImageLoading({ detail }: CustomEvent<string>): void;
61
64
  trackRecommendationView({ detail }: ProductCardEvent): void;
@@ -90,6 +90,10 @@ export namespace Components {
90
90
  "salePrice": number | undefined;
91
91
  }
92
92
  interface VviinnRecommendationsSidebar {
93
+ /**
94
+ * comma-separated list of campaign-ids
95
+ */
96
+ "campaigns": string;
93
97
  "position": "bottom" | "right";
94
98
  "productId": string;
95
99
  "sidebarTitle": string;
@@ -109,6 +113,10 @@ export namespace Components {
109
113
  interface VviinnTeaser {
110
114
  }
111
115
  interface VviinnVprButton {
116
+ /**
117
+ * comma-separated list of campaign-ids
118
+ */
119
+ "campaigns": string;
112
120
  "modalScrollbar": boolean;
113
121
  "position": "bottom" | "right";
114
122
  "productId": string;
@@ -126,6 +134,10 @@ export namespace Components {
126
134
  * Campaign type
127
135
  */
128
136
  "campaignType": CampaignName;
137
+ /**
138
+ * comma-separated list of campaign-ids
139
+ */
140
+ "campaigns": string;
129
141
  "cssUrl": string | null;
130
142
  /**
131
143
  * Currency sign will shown after price
@@ -541,6 +553,10 @@ declare namespace LocalJSX {
541
553
  "salePrice"?: number | undefined;
542
554
  }
543
555
  interface VviinnRecommendationsSidebar {
556
+ /**
557
+ * comma-separated list of campaign-ids
558
+ */
559
+ "campaigns"?: string;
544
560
  "onModalClosed"?: (event: CustomEvent<void>) => void;
545
561
  "position"?: "bottom" | "right";
546
562
  "productId"?: string;
@@ -562,6 +578,10 @@ declare namespace LocalJSX {
562
578
  interface VviinnTeaser {
563
579
  }
564
580
  interface VviinnVprButton {
581
+ /**
582
+ * comma-separated list of campaign-ids
583
+ */
584
+ "campaigns"?: string;
565
585
  "modalScrollbar"?: boolean;
566
586
  "position"?: "bottom" | "right";
567
587
  "productId"?: string;
@@ -578,6 +598,10 @@ declare namespace LocalJSX {
578
598
  * Campaign type
579
599
  */
580
600
  "campaignType"?: CampaignName;
601
+ /**
602
+ * comma-separated list of campaign-ids
603
+ */
604
+ "campaigns"?: string;
581
605
  "cssUrl"?: string | null;
582
606
  /**
583
607
  * Currency sign will shown after price
@@ -1,4 +1,4 @@
1
- import { E as Env } from './index-aa272585.js';
1
+ import { E as Env } from './index-89051fa8.js';
2
2
 
3
3
  /*! *****************************************************************************
4
4
  Copyright (c) Microsoft Corporation.
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, h, e as Host } from './index-89051fa8.js';
2
2
  import { R as getCursorValue } from './Handler-edcb46f4.js';
3
3
 
4
4
  const cropperHandlerCss = ":host{--size:20px;background:transparent;border:4px solid white;box-sizing:content-box;display:block;height:var(--size);touch-action:none;position:absolute;width:var(--size);z-index:4;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host(.disabled){opacity:0.25}:host(.nw-resize){border-bottom:none;border-right:none;top:0;left:0}:host(.ne-resize){border-left:none;border-bottom:none;right:0;top:0}:host(.sw-resize){border-right:none;border-top:none;left:0;bottom:0}:host(.se-resize){border-left:none;border-top:none;bottom:0;right:0}";
@@ -1,4 +1,4 @@
1
- import { h } from './index-aa272585.js';
1
+ import { h } from './index-89051fa8.js';
2
2
 
3
3
  const defaultSlotsNames = [
4
4
  "vviinn-onboarding-title",
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, h, e as Host } from './index-aa272585.js';
2
- import { s as sequenceToOption, O as Option } from './number-dd70557d.js';
1
+ import { r as registerInstance, h, e as Host } from './index-89051fa8.js';
2
+ import { s as sequenceToOption, O as Option } from './number-171db649.js';
3
3
  import { p as pipe } from './Handler-edcb46f4.js';
4
- import { i as imageSearchState } from './imageSearch.store-fb3493d0.js';
4
+ import { i as imageSearchState } from './imageSearch.store-15bda6de.js';
5
5
  import './NonEmptyArray-947ab7b3.js';
6
6
  import './Array-bdfc75db.js';
7
7
 
@@ -1,8 +1,8 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { i as imageSearchState, t as transform, b as move, n as makeRectangularSearchRequest } from './imageSearch.store-fb3493d0.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { i as imageSearchState, t as transform, b as move, q as makeRectangularSearchRequest } from './imageSearch.store-15bda6de.js';
3
3
  import { P as fromMouseEvent, Q as pointDiffSemigroup } from './Handler-edcb46f4.js';
4
4
  import { _ as _function } from './NonEmptyArray-947ab7b3.js';
5
- import { O as Option } from './number-dd70557d.js';
5
+ import { O as Option } from './number-171db649.js';
6
6
  import './Array-bdfc75db.js';
7
7
 
8
8
  const findTarget = (ev) => {
@@ -1,5 +1,5 @@
1
- import { i as getRenderingRef, j as forceUpdate } from './index-aa272585.js';
2
- import { O as Option, A as Applicative$6, P as Predicate, a as Ord$1, s as sequenceToOption } from './number-dd70557d.js';
1
+ import { i as getRenderingRef, j as forceUpdate } from './index-89051fa8.js';
2
+ import { O as Option, A as Applicative$6, P as Predicate, a as Ord$1, s as sequenceToOption } from './number-171db649.js';
3
3
  import { h as has, t as tuple, p as pipe, i as isNone$1, l as left$4, r as right$4, f as flow, s as some$3, n as none$1, a as identity, b as isLeft$1, c as isRight$1, e as emptyRecord, d as emptyReadonlyArray, g as head$4, j as isNonEmpty$4, k as constFalse, m as constTrue, o as isSome$1, q as constNull, u as constUndefined, v as first, w as last$4, x as tail$4, y as singleton, S as SK, z as fromReadonlyNonEmptyArray$1, A as getMonoid$4, B as fromEquals, C as min$2, D as max$2, E as struct, F as getStructSemigroup, G as semigroupDiv, H as contramap$1, I as ordNumber, J as fromRectangle, K as pointSumSemigroup, L as HandlerDirection, M as pointProductSemigroup, N as fromCompare, O as fromRectangle$1 } from './Handler-edcb46f4.js';
4
4
  import { c as createCommonjsModule, a as commonjsGlobal, S as Separated, F as Functor$9, _ as _function, g as getDefaultExportFromCjs, i as internal, W as Witherable$3, b as FromEither$5, A as Apply$6, C as Chain$8, O as Ord$2 } from './NonEmptyArray-947ab7b3.js';
5
5
  import { n as number, _ as _Array } from './Array-bdfc75db.js';
@@ -193,12 +193,6 @@ const trackingStore = {
193
193
  };
194
194
 
195
195
  const { state: state$1, onChange: onChange$1 } = createStore(Object.assign({ fallbackStyles: "", pricePrefix: null, currencySign: null, apiPath: null, token: null, locale: "de-DE" }, trackingStore));
196
- onChange$1("apiPath", (val) => {
197
- console.log("apiPathChanged", val);
198
- });
199
- onChange$1("token", (val) => {
200
- console.log("tokenChanged", val);
201
- });
202
196
 
203
197
  function ap$9(F, G) {
204
198
  return function (fa) { return function (fab) {
@@ -16036,4 +16030,4 @@ const processSelectedFile = async (file) => {
16036
16030
  return session;
16037
16031
  };
16038
16032
 
16039
- export { Apply$5 as A, Either as E, TaskEither as T, scaleByLargestSide as a, move as b, sequenceT as c, dimensionsFromImage as d, createInitGetRequest as e, fromImage as f, getApiPath as g, fromEither$2 as h, imageSearchState as i, chainW as j, makeRequest as k, createInitPostRequest as l, match$5 as m, makeRectangularSearchRequest as n, fromAlt as o, processSelectedFile as p, foldValueObject as q, scaleWithSized as r, state$1 as s, transform as t, center as u, detectedObjectEq as v, toFile as w };
16033
+ export { Apply$5 as A, Either as E, TaskEither as T, scaleByLargestSide as a, move as b, sequenceT as c, dimensionsFromImage as d, createInitGetRequest as e, fromImage as f, getApiPath as g, fromEither$2 as h, imageSearchState as i, chainW as j, makeRequest as k, createInitPostRequest as l, match$5 as m, map$7 as n, match$4 as o, processSelectedFile as p, makeRectangularSearchRequest as q, fromAlt as r, state$1 as s, transform as t, foldValueObject as u, scaleWithSized as v, center as w, detectedObjectEq as x, toFile as y };
@@ -1,4 +1,4 @@
1
- import { h } from './index-aa272585.js';
1
+ import { h } from './index-89051fa8.js';
2
2
 
3
3
  const ArrowIcon = () => (h("svg", { width: "12", height: "20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
4
4
  h("path", { d: "M0 10 10 0l1.4 1.4L2.8 10l8.6 8.6L10 20 0 10Z" })));
@@ -1,6 +1,6 @@
1
1
  const NAMESPACE = 'vviinn-widgets';
2
2
  const BUILD = /* vviinn-widgets */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, asyncQueue: false, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: false, cmpDidUnload: false, cmpDidUpdate: false, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: false, cmpWillUpdate: false, connectedCallback: true, constructableCSS: false, cssAnnotations: true, cssVarShim: false, devTools: true, disconnectedCallback: true, dynamicImportShim: false, element: false, event: true, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: true, hostListenerTargetDocument: false, hostListenerTargetParent: false, hostListenerTargetWindow: false, hotModuleReplacement: true, hydrateClientSide: false, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, initializeNextTick: false, invisiblePrehydration: true, isDebug: false, isDev: true, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: false, mode: false, observeAttribute: true, profile: true, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, safari10: false, scoped: false, scopedSlotTextContentFix: false, scriptDataOpts: false, shadowDelegatesFocus: false, shadowDom: true, shadowDomShim: false, slot: true, slotChildNodesFix: false, slotRelocation: false, state: true, style: true, svg: true, taskQueue: true, transformTagName: false, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: false, vdomListener: true, vdomPropOrAttr: true, vdomRef: false, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: false, watchCallback: true };
3
- const Env = /* vviinn-widgets */ {"packageVersion":"2.5.0","packageName":"vviinn-widgets","environment":"local"};
3
+ const Env = /* vviinn-widgets */ {"packageVersion":"2.5.2","packageName":"vviinn-widgets","environment":"local"};
4
4
 
5
5
  let scopeId;
6
6
  let contentRef;
@@ -1496,4 +1496,4 @@ var Field = {
1496
1496
  mod: function (first, second) { return first % second; }
1497
1497
  };
1498
1498
 
1499
- export { Applicative as A, Option as O, Predicate as P, Ord as a, sequenceToOption as s };
1499
+ export { Applicative as A, Option as O, Predicate as P, Ord as a, checkEmpryString as c, sequenceToOption as s };
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { i as imageSearchState } from './imageSearch.store-fb3493d0.js';
3
- import { b as CheckIcon } from './index-9374b45b.js';
4
- import './number-dd70557d.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { i as imageSearchState } from './imageSearch.store-15bda6de.js';
3
+ import { b as CheckIcon } from './index-533f9255.js';
4
+ import './number-171db649.js';
5
5
  import './NonEmptyArray-947ab7b3.js';
6
6
  import './Handler-edcb46f4.js';
7
7
  import './Array-bdfc75db.js';
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, h, e as Host, g as getElement } from './index-aa272585.js';
1
+ import { r as registerInstance, h, e as Host, g as getElement } from './index-89051fa8.js';
2
2
  import { _ as _Array } from './Array-bdfc75db.js';
3
- import { c as ChevronIcon } from './index-9374b45b.js';
3
+ import { c as ChevronIcon } from './index-533f9255.js';
4
4
  import './NonEmptyArray-947ab7b3.js';
5
5
 
6
6
  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;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-y:hidden;overflow-x:auto;flex-grow:1;padding-bottom:16px}.content.left>*{scroll-snap-align:start}.content.right>*{scroll-snap-align:end}:host(.continuity) button{border-radius:2px}:host(.grid) button{border-radius:50%}button{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}button{fill:#525252}button.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,7 +1,7 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host } from './index-89051fa8.js';
2
2
  import { _ as _function } from './NonEmptyArray-947ab7b3.js';
3
- import { O as Option } from './number-dd70557d.js';
4
- import { i as imageSearchState, o as fromAlt, q as foldValueObject, r as scaleWithSized, u as center, n as makeRectangularSearchRequest, v as detectedObjectEq } from './imageSearch.store-fb3493d0.js';
3
+ import { O as Option } from './number-171db649.js';
4
+ import { i as imageSearchState, r as fromAlt, u as foldValueObject, v as scaleWithSized, w as center, q as makeRectangularSearchRequest, x as detectedObjectEq } from './imageSearch.store-15bda6de.js';
5
5
  import './Handler-edcb46f4.js';
6
6
  import './Array-bdfc75db.js';
7
7
 
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host } from './index-89051fa8.js';
2
2
 
3
3
  const vviinnEmptyResultsCss = ":host{display:grid}vviinn-error{justify-items:center}";
4
4
 
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, h, e as Host } from './index-89051fa8.js';
2
2
 
3
3
  const vviinnErrorCss = ":host{background:#F4F4F4;border-radius:8px;display:grid;grid-gap:20px;padding:24px;text-align:center}::slotted(svg){display:grid;align-self:center}::slotted(h4){margin:unset;font-weight:600;font-size:18px;line-height:24px}::slotted(span){font-size:14px;line-height:20px}::slotted(button){-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--color-primary, var(--color-primary-system));font-weight:600;font-size:16px;line-height:20px;cursor:pointer}";
4
4
 
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host } from './index-89051fa8.js';
2
2
  import { _ as _function } from './NonEmptyArray-947ab7b3.js';
3
- import { w as toFile, p as processSelectedFile, E as Either, i as imageSearchState } from './imageSearch.store-fb3493d0.js';
4
- import './number-dd70557d.js';
3
+ import { y as toFile, p as processSelectedFile, E as Either, i as imageSearchState } from './imageSearch.store-15bda6de.js';
4
+ import './number-171db649.js';
5
5
  import './Handler-edcb46f4.js';
6
6
  import './Array-bdfc75db.js';
7
7
 
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { s as slotChangeListener } from './customized-slots-d5bb8a00.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { s as slotChangeListener } from './customized-slots-fb9b3e5f.js';
3
3
 
4
4
  const vviinnExampleImagesCss = "h3{font-size:22px;font-weight:600;line-height:32px;margin:0;margin-bottom:16px;text-align:center}.images{display:block;-moz-column-count:2;column-count:2;-moz-column-gap:16px;column-gap:16px}";
5
5
 
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host } from './index-aa272585.js';
2
- import { p as processSelectedFile, m as match, i as imageSearchState } from './imageSearch.store-fb3493d0.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host } from './index-89051fa8.js';
2
+ import { p as processSelectedFile, m as match, i as imageSearchState } from './imageSearch.store-15bda6de.js';
3
3
  import { _ as _function } from './NonEmptyArray-947ab7b3.js';
4
- import './number-dd70557d.js';
4
+ import './number-171db649.js';
5
5
  import './Handler-edcb46f4.js';
6
6
  import './Array-bdfc75db.js';
7
7
 
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, h, e as Host } from './index-aa272585.js';
2
- import { d as dimensionsFromImage, a as scaleByLargestSide, f as fromImage, b as move, i as imageSearchState } from './imageSearch.store-fb3493d0.js';
1
+ import { r as registerInstance, h, e as Host } from './index-89051fa8.js';
2
+ import { d as dimensionsFromImage, a as scaleByLargestSide, f as fromImage, b as move, i as imageSearchState } from './imageSearch.store-15bda6de.js';
3
3
  import { _ as _function } from './NonEmptyArray-947ab7b3.js';
4
- import { O as Option, s as sequenceToOption } from './number-dd70557d.js';
4
+ import { O as Option, s as sequenceToOption } from './number-171db649.js';
5
5
  import './Handler-edcb46f4.js';
6
6
  import './Array-bdfc75db.js';
7
7
 
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host } from './index-89051fa8.js';
2
2
 
3
3
  const vviinnModalCss = ":host{background:white;border-radius:4px;box-sizing:border-box;display:grid;grid-template-rows:-webkit-min-content auto;grid-template-rows:min-content auto;max-width:960px}@media (max-width: 415px){:host{-webkit-animation-name:fade-in;animation-name:fade-in;-webkit-animation-duration:0.5s;animation-duration:0.5s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}:host(.closed){-webkit-animation-name:fade-out;animation-name:fade-out;-webkit-animation-fill-mode:none;animation-fill-mode:none}.body{overflow-y:auto}}@media (max-width: 640px) and (min-width: 415px){:host{max-width:80%}}.head{align-items:center;border-bottom:1px solid #F4F4F4;display:grid;grid-gap:16px;grid-template-columns:-webkit-min-content auto -webkit-min-content;grid-template-columns:min-content auto min-content;justify-items:center;padding:16px}.title{font-weight:600;font-size:18px;line-height:24px}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:grid;padding:unset}@-webkit-keyframes fade-in{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fade-in{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes fade-out{from{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes fade-out{from{transform:translateY(0)}to{transform:translateY(100%)}}";
4
4
 
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { s as slotChangeListener } from './customized-slots-d5bb8a00.js';
3
- import { O as OnboardingCard1Icon } from './index-9374b45b.js';
1
+ import { r as registerInstance, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { s as slotChangeListener } from './customized-slots-fb9b3e5f.js';
3
+ import { O as OnboardingCard1Icon } from './index-533f9255.js';
4
4
 
5
5
  const onboardingCardCss = ":host{align-items:center;background:#f4f4f4;display:grid;grid-template-rows:repeat(2, 1fr);justify-items:center;padding:24px;width:100%}h4{color:#161616;font-size:18px;font-weight:600;line-height:24px;margin:unset;text-align:center}svg{padding:16px 0}p{color:#525252;font-size:14px;font-style:normal;font-weight:normal;line-height:20px;margin:unset;text-align:center}.colored{fill:var(--color-icons, var(--color-icons-system))}.text{display:grid;grid-gap:8px}";
6
6
 
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { d as OnboardingCard2Icon } from './index-9374b45b.js';
3
- import { s as slotChangeListener } from './customized-slots-d5bb8a00.js';
1
+ import { r as registerInstance, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { d as OnboardingCard2Icon } from './index-533f9255.js';
3
+ import { s as slotChangeListener } from './customized-slots-fb9b3e5f.js';
4
4
 
5
5
  const onboardingCardCss = ":host{align-items:center;background:#f4f4f4;display:grid;grid-template-rows:repeat(2, 1fr);justify-items:center;padding:24px;width:100%}h4{color:#161616;font-size:18px;font-weight:600;line-height:24px;margin:unset;text-align:center}svg{padding:16px 0}p{color:#525252;font-size:14px;font-style:normal;font-weight:normal;line-height:20px;margin:unset;text-align:center}.colored{fill:var(--color-icons, var(--color-icons-system))}.text{display:grid;grid-gap:8px}";
6
6
 
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { e as OnboardingCard3Icon } from './index-9374b45b.js';
3
- import { s as slotChangeListener } from './customized-slots-d5bb8a00.js';
1
+ import { r as registerInstance, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { e as OnboardingCard3Icon } from './index-533f9255.js';
3
+ import { s as slotChangeListener } from './customized-slots-fb9b3e5f.js';
4
4
 
5
5
  const onboardingCardCss = ":host{align-items:center;background:#f4f4f4;display:grid;grid-template-rows:repeat(2, 1fr);justify-items:center;padding:24px;width:100%}h4{color:#161616;font-size:18px;font-weight:600;line-height:24px;margin:unset;text-align:center}svg{padding:16px 0}p{color:#525252;font-size:14px;font-style:normal;font-weight:normal;line-height:20px;margin:unset;text-align:center}.colored{fill:var(--color-icons, var(--color-icons-system))}.text{display:grid;grid-gap:8px}";
6
6
 
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { s as slotChangeListener } from './customized-slots-d5bb8a00.js';
1
+ import { r as registerInstance, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { s as slotChangeListener } from './customized-slots-fb9b3e5f.js';
3
3
 
4
4
  const vviinnOnboardingCss = ":host{--color-primary-system:#0F62FE;--color-primary-hover-system:#014CDA;--color-icons-system:#2F8EDF;--spacer:8px}::host{display:block}h3{font-size:22px;font-weight:600;line-height:32px;margin:0;margin-bottom:16px;text-align:center}vviinn-slide{background:#f4f4f4;padding:24px}svg{padding:16px 0}.text{display:grid;grid-gap:8px}.text>h4{color:#161616;font-size:18px;font-weight:600;line-height:24px;margin:unset;text-align:center}.text>p{color:#525252;font-size:14px;font-style:normal;font-weight:normal;line-height:20px;margin:unset;text-align:center}.colored{fill:var(--color-icons, var(--color-icons-system))}";
5
5
 
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, h, e as Host } from './index-89051fa8.js';
2
2
 
3
3
  const vviinnOverlayCss = ":host{-webkit-animation:fade-in 0.5s ease-in-out;animation:fade-in 0.5s ease-in-out;background:rgba(0, 0, 0, 0.5);display:block;height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100vw;z-index:9999}@-webkit-keyframes fade-in{from{opacity:0.1}to{opacity:1}}@keyframes fade-in{from{opacity:0.1}to{opacity:1}}";
4
4
 
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host } from './index-89051fa8.js';
2
2
 
3
3
  const vviinnOverlayedModalCss = ":host{display:none}:host(.active){display:block}vviinn-overlay{align-items:center;display:grid;justify-items:center}@media (max-width: 415px){vviinn-modal{border-radius:4px 4px 0 0;height:100vh;margin-top:32px;transform:translateY(100%);width:100vw}vviinn-overlay{align-items:end;display:grid;justify-items:center}}";
4
4
 
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, h, e as Host } from './index-aa272585.js';
2
- import { i as imageSearchState } from './imageSearch.store-fb3493d0.js';
3
- import './number-dd70557d.js';
1
+ import { r as registerInstance, h, e as Host } from './index-89051fa8.js';
2
+ import { i as imageSearchState } from './imageSearch.store-15bda6de.js';
3
+ import './number-171db649.js';
4
4
  import './NonEmptyArray-947ab7b3.js';
5
5
  import './Handler-edcb46f4.js';
6
6
  import './Array-bdfc75db.js';
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { s as slotChangeListener } from './customized-slots-d5bb8a00.js';
1
+ import { r as registerInstance, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { s as slotChangeListener } from './customized-slots-fb9b3e5f.js';
3
3
 
4
4
  const vviinnPrivacyBadgeCss = ":host{display:block;background:#F4F4F4;padding:17px}.content{display:grid;grid-template-columns:-webkit-min-content auto;grid-template-columns:min-content auto;grid-gap:9px}.content p{color:#525252;font-size:12px;line-height:16px;margin:unset}";
5
5
 
@@ -1,7 +1,7 @@
1
- import { h, r as registerInstance, f as createEvent, e as Host, g as getElement } from './index-aa272585.js';
1
+ import { h, r as registerInstance, f as createEvent, e as Host, g as getElement } from './index-89051fa8.js';
2
2
  import { _ as _function, d as Semigroup } from './NonEmptyArray-947ab7b3.js';
3
- import { O as Option } from './number-dd70557d.js';
4
- import { E as Either, i as imageSearchState, s as state } from './imageSearch.store-fb3493d0.js';
3
+ import { O as Option } from './number-171db649.js';
4
+ import { E as Either, i as imageSearchState, s as state } from './imageSearch.store-15bda6de.js';
5
5
  import './Handler-edcb46f4.js';
6
6
  import './Array-bdfc75db.js';
7
7
 
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { a as CrossIcon } from './index-9374b45b.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { a as CrossIcon } from './index-533f9255.js';
3
3
 
4
4
  const recommendationsSidebarCss = ":host{--vviinn-carousel-columns:0;box-sizing:border-box;display:block;display:flex;height:100vh;left:0;position:fixed;top:0;transition:background 0.1s ease-in-out;width:100vw}:host(.open){background:rgba(0, 0, 0, 0.2)}:host(.bottom){flex-direction:column;justify-content:end}:host(.right){flex-direction:row;justify-content:flex-end}header{position:relative;text-align:center;padding:32px}header.contains-source-img{display:grid;justify-items:center;grid-gap:12px}img.source-image{width:64px;height:64px;border-radius:50%;box-shadow:0px 2px 4px rgba(0, 0, 0, 0.15);padding:8px}:host(.right) header{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.1)}main{padding:0 24px}:host(.right) main{overflow:auto}.sidebar{background:white;box-sizing:border-box;display:flex;flex-direction:column}:host(.bottom.idle) .sidebar,:host(.bottom.closed) .sidebar{transform:translateY(100%)}:host(.bottom.closed) .sidebar{-webkit-animation-name:slideOutFromBottom;animation-name:slideOutFromBottom;-webkit-animation-duration:0.5s;animation-duration:0.5s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}:host(.bottom.open) .sidebar{-webkit-animation-name:slideInFromBottom;animation-name:slideInFromBottom;-webkit-animation-duration:0.5s;animation-duration:0.5s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}:host(.right.idle) .sidebar{transform:translateX(100%)}:host(.right.closed) .sidebar{-webkit-animation-name:slideOutFromRight;animation-name:slideOutFromRight;-webkit-animation-duration:0.5s;animation-duration:0.5s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}:host(.right.open) .sidebar{-webkit-animation-name:slideInFromRight;animation-name:slideInFromRight;-webkit-animation-duration:0.5s;animation-duration:0.5s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}:host(.right) .sidebar{max-width:480px}:host(.right) vviinn-vpr-widget::part(recommendations-grid){display:grid;grid-template-columns:repeat(2, 1fr);grid-gap:24px}:host(.right) vviinn-vpr-widget{overflow:auto}:host(.right) vviinn-vpr-widget::part(image){border:none}.title{font-style:normal;font-weight:500;font-size:28px;line-height:40px;text-align:center;color:#000000}vviinn-vpr-widget::part(title),vviinn-vpr-widget::part(brand),vviinn-vpr-widget::part(type){text-align:left}vviinn-vpr-widget::part(price-container){align-self:start}.close-sidebar{background:transparent;border:none;cursor:pointer;margin:0;padding:0;position:absolute;right:24px;top:24px}@-webkit-keyframes slideInFromBottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInFromBottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideOutFromBottom{from{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slideOutFromBottom{from{transform:translateY(0)}to{transform:translateY(100%)}}@-webkit-keyframes slideInFromRight{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideInFromRight{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideOutFromRight{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes slideOutFromRight{from{transform:translateX(0)}to{transform:translateX(100%)}}";
5
5
 
@@ -10,6 +10,8 @@ let RecommendationsSidebar = class {
10
10
  this.position = "bottom";
11
11
  this.sourceImage = null;
12
12
  this.widgetScrollbar = false;
13
+ /** comma-separated list of campaign-ids */
14
+ this.campaigns = "";
13
15
  this.state = "idle";
14
16
  }
15
17
  bodyClickListener(event) {
@@ -37,7 +39,7 @@ let RecommendationsSidebar = class {
37
39
  return (_a = this.el.shadowRoot.querySelector("aside")) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
38
40
  }
39
41
  render() {
40
- return (h(Host, { class: this.getClassMap() }, h("aside", { class: "sidebar", part: "body", onAnimationEnd: (e) => this.handleAnimationEnd(e) }, h("header", { class: { "contains-source-img": this.isSourceImageValid() }, part: "sidebar-header" }, this.isSourceImageValid() ? this.renderSourceImage() : null, h("span", { class: "title", part: "title" }, this.sidebarTitle), h("button", { class: "close-sidebar", onClick: () => (this.state = "closed") }, h(CrossIcon, null))), h("main", { part: "sidebar-content" }, h("vviinn-vpr-widget", { exportparts: "brand, currency, deeplink, image, image-link, price-amount, price-container, price-outdated, price-prefix, price-regular, price-sale, title: product-title", token: this.token, productId: this.productId, imageWidth: 300, blockTitle: "", mode: this.position === "bottom" ? "continuity" : "grid", useCarousel: this.position === "bottom", onRecommendationsLoaded: () => (this.state = "open"), showScroll: this.widgetScrollbar })))));
42
+ return (h(Host, { class: this.getClassMap() }, h("aside", { class: "sidebar", part: "body", onAnimationEnd: (e) => this.handleAnimationEnd(e) }, h("header", { class: { "contains-source-img": this.isSourceImageValid() }, part: "sidebar-header" }, this.isSourceImageValid() ? this.renderSourceImage() : null, h("span", { class: "title", part: "title" }, this.sidebarTitle), h("button", { class: "close-sidebar", onClick: () => (this.state = "closed") }, h(CrossIcon, null))), h("main", { part: "sidebar-content" }, h("vviinn-vpr-widget", { exportparts: "brand, currency, deeplink, image, image-link, price-amount, price-container, price-outdated, price-prefix, price-regular, price-sale, title: product-title", token: this.token, productId: this.productId, imageWidth: 300, blockTitle: "", mode: this.position === "bottom" ? "continuity" : "grid", useCarousel: this.position === "bottom", onRecommendationsLoaded: () => (this.state = "open"), showScroll: this.widgetScrollbar, campaigns: this.campaigns })))));
41
43
  }
42
44
  renderSourceImage() {
43
45
  return (h("img", { class: "source-image", part: "source-image", src: this.sourceImage }));
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, f as createEvent, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, f as createEvent, h, e as Host } from './index-89051fa8.js';
2
2
 
3
3
  const vviinnServerErrorCss = ":host{display:block}";
4
4
 
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h, e as Host } from './index-aa272585.js';
1
+ import { r as registerInstance, h, e as Host } from './index-89051fa8.js';
2
2
 
3
3
  const vviinnSlideCss = ":host{display:grid;justify-items:center}";
4
4
 
@@ -1,7 +1,7 @@
1
- import { h, r as registerInstance, e as Host, g as getElement } from './index-aa272585.js';
1
+ import { h, r as registerInstance, e as Host, g as getElement } from './index-89051fa8.js';
2
2
  import { N as NonEmptyArray, _ as _function } from './NonEmptyArray-947ab7b3.js';
3
- import { O as Option, s as sequenceToOption, a as Ord } from './number-dd70557d.js';
4
- import { A as ArrowIcon } from './index-9374b45b.js';
3
+ import { O as Option, s as sequenceToOption, a as Ord } from './number-171db649.js';
4
+ import { A as ArrowIcon } from './index-533f9255.js';
5
5
 
6
6
  const getStyleMap = (data) => {
7
7
  return {
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h, e as Host, g as getElement } from './index-aa272585.js';
2
- import { s as slotChangeListener } from './customized-slots-d5bb8a00.js';
1
+ import { r as registerInstance, h, e as Host, g as getElement } from './index-89051fa8.js';
2
+ import { s as slotChangeListener } from './customized-slots-fb9b3e5f.js';
3
3
 
4
4
  const vviinnTeaserCss = ":host{align-items:center;display:grid;justify-items:center;grid-gap:16px}.vviinn-teaser-text{font-size:28px;font-weight:600;line-height:40px;size:28px;text-align:center}";
5
5
 
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, h, e as Host } from './index-aa272585.js';
2
- import { V as VisualSearchIcon } from './index-9374b45b.js';
1
+ import { r as registerInstance, h, e as Host } from './index-89051fa8.js';
2
+ import { V as VisualSearchIcon } from './index-533f9255.js';
3
3
 
4
4
  const vviinnVprButtonCss = ":host{display:block}.open-button{align-items:center;background:rgba(255, 255, 255, 0.8);border-radius:50%;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);box-sizing:border-box;cursor:pointer;display:grid;height:40px;justify-items:center;padding:0;width:40px;transition:all 0.25s ease-in-out}.open-button:hover{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.25)}.open-button:focus{border:2px solid rgba(15, 98, 254, 0.5);outline:none}.open-button:active{background:#F4F4F4;outline:none}";
5
5
 
@@ -10,6 +10,8 @@ let VviinnVprButton = class {
10
10
  this.sourceImage = null;
11
11
  this.sidebarTitle = "Visually similar products";
12
12
  this.modalScrollbar = false;
13
+ /** comma-separated list of campaign-ids */
14
+ this.campaigns = "";
13
15
  this.sidebar = null;
14
16
  this.sidebarCloseListener = () => {
15
17
  document.body.removeChild(this.sidebar);
@@ -26,11 +28,14 @@ let VviinnVprButton = class {
26
28
  sidebar.position = this.position;
27
29
  sidebar.sourceImage = this.sourceImage;
28
30
  sidebar.widgetScrollbar = this.modalScrollbar;
31
+ sidebar.campaigns = this.campaigns;
29
32
  this.sidebar = sidebar;
30
33
  sidebar.addEventListener("modalClosed", this.sidebarCloseListener);
31
34
  document.body.append(this.sidebar);
32
35
  }
33
36
  disconnectedCallback() {
37
+ if (!this.sidebar)
38
+ return;
34
39
  this.sidebar.removeEventListener("modalCLosed", this.sidebarCloseListener);
35
40
  document.body.removeChild(this.sidebar);
36
41
  }