vviinn-widgets 2.223.0 → 2.224.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.
Files changed (75) hide show
  1. package/dist/cjs/{index-DZw3p4dq.js → index-DJP-DLP2.js} +62 -66
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/{search.store-Bh2_GSpU.js → search.store-BOJh7lOl.js} +51 -23
  4. package/dist/cjs/vviinn-button_6.cjs.entry.js +1 -1
  5. package/dist/cjs/vviinn-camera_12.cjs.entry.js +60 -97
  6. package/dist/cjs/vviinn-carousel_10.cjs.entry.js +16 -19
  7. package/dist/cjs/vviinn-shop-the-look.cjs.entry.js +2 -2
  8. package/dist/cjs/vviinn-text-search.cjs.entry.js +1 -1
  9. package/dist/cjs/vviinn-vps-button.cjs.entry.js +4 -2
  10. package/dist/cjs/vviinn-widgets.cjs.js +1 -1
  11. package/dist/collection/components/vviinn-cropper/vviinn-cropper.js +14 -33
  12. package/dist/collection/components/vviinn-filters/helpers/syncRequestFilters.js +8 -10
  13. package/dist/collection/components/vviinn-filters/vviinn-extended-filters.js +6 -5
  14. package/dist/collection/components/vviinn-filters/vviinn-filters.js +6 -5
  15. package/dist/collection/components/vviinn-filters/vviinn-selected-filters.js +25 -61
  16. package/dist/collection/components/vviinn-results/vviinn-results.js +4 -13
  17. package/dist/collection/components/vviinn-shop-the-look/helpers.js +1 -1
  18. package/dist/collection/components/vviinn-vps-button/vviinn-vps-button.js +24 -2
  19. package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.js +32 -10
  20. package/dist/collection/store/helpers/applyResponseFilters.js +13 -0
  21. package/dist/collection/store/helpers/searchSequence.js +13 -0
  22. package/dist/collection/store/search.store.js +25 -23
  23. package/dist/esm/{index-DQQYIioG.js → index-Dh2tkxzk.js} +62 -67
  24. package/dist/esm/loader.js +1 -1
  25. package/dist/esm/{search.store-lTerE9Yh.js → search.store-D5QcaJG3.js} +51 -23
  26. package/dist/esm/vviinn-button_6.entry.js +1 -1
  27. package/dist/esm/vviinn-camera_12.entry.js +60 -97
  28. package/dist/esm/vviinn-carousel_10.entry.js +14 -17
  29. package/dist/esm/vviinn-shop-the-look.entry.js +2 -2
  30. package/dist/esm/vviinn-text-search.entry.js +1 -1
  31. package/dist/esm/vviinn-vps-button.entry.js +4 -2
  32. package/dist/esm/vviinn-widgets.js +1 -1
  33. package/dist/types/components/vviinn-cropper/vviinn-cropper.d.ts +0 -2
  34. package/dist/types/components/vviinn-filters/helpers/syncRequestFilters.d.ts +4 -2
  35. package/dist/types/components/vviinn-filters/vviinn-extended-filters.d.ts +1 -0
  36. package/dist/types/components/vviinn-filters/vviinn-filters.d.ts +1 -0
  37. package/dist/types/components/vviinn-filters/vviinn-selected-filters.d.ts +6 -7
  38. package/dist/types/components/vviinn-results/vviinn-results.d.ts +0 -1
  39. package/dist/types/components/vviinn-vps-button/vviinn-vps-button.d.ts +2 -0
  40. package/dist/types/components/vviinn-vps-widget/vviinn-vps-widget.d.ts +2 -0
  41. package/dist/types/components.d.ts +16 -1
  42. package/dist/types/store/helpers/applyResponseFilters.d.ts +13 -0
  43. package/dist/types/store/helpers/searchSequence.d.ts +3 -0
  44. package/dist/types/store/search.store.d.ts +11 -1
  45. package/dist/vviinn-widgets/{p-1e2f9b9f.entry.js → p-8dde73ee.entry.js} +1 -1
  46. package/dist/vviinn-widgets/p-905278b1.entry.js +1 -0
  47. package/dist/vviinn-widgets/{p-eb579723.entry.js → p-92eb8c8c.entry.js} +1 -1
  48. package/dist/vviinn-widgets/p-CICPwuU-.js +1 -0
  49. package/dist/vviinn-widgets/{p-CJAxBbhA.js → p-DOdiegD0.js} +1 -1
  50. package/dist/vviinn-widgets/p-b77cf635.entry.js +1 -0
  51. package/dist/vviinn-widgets/p-c54e5eae.entry.js +1 -0
  52. package/dist/vviinn-widgets/p-d5fa46c6.entry.js +1 -0
  53. package/dist/vviinn-widgets/vviinn-widgets.esm.js +1 -1
  54. package/package.json +12 -8
  55. package/www/build/{p-1e2f9b9f.entry.js → p-8dde73ee.entry.js} +1 -1
  56. package/www/build/p-905278b1.entry.js +1 -0
  57. package/www/build/{p-eb579723.entry.js → p-92eb8c8c.entry.js} +1 -1
  58. package/www/build/p-CICPwuU-.js +1 -0
  59. package/www/build/{p-CJAxBbhA.js → p-DOdiegD0.js} +1 -1
  60. package/www/build/p-b77cf635.entry.js +1 -0
  61. package/www/build/{p-4f556dc3.js → p-c4df99b0.js} +1 -1
  62. package/www/build/p-c54e5eae.entry.js +1 -0
  63. package/www/build/p-d5fa46c6.entry.js +1 -0
  64. package/www/build/vviinn-widgets.esm.js +1 -1
  65. package/www/index.html +1 -1
  66. package/dist/vviinn-widgets/p-08d39cc9.entry.js +0 -1
  67. package/dist/vviinn-widgets/p-3daed25b.entry.js +0 -1
  68. package/dist/vviinn-widgets/p-7411202d.entry.js +0 -1
  69. package/dist/vviinn-widgets/p-DhCqK4d8.js +0 -1
  70. package/dist/vviinn-widgets/p-f9f4e909.entry.js +0 -1
  71. package/www/build/p-08d39cc9.entry.js +0 -1
  72. package/www/build/p-3daed25b.entry.js +0 -1
  73. package/www/build/p-7411202d.entry.js +0 -1
  74. package/www/build/p-DhCqK4d8.js +0 -1
  75. package/www/build/p-f9f4e909.entry.js +0 -1
@@ -2,9 +2,9 @@
2
2
 
3
3
  var index = require('./index-BU8FMTXn.js');
4
4
  var Rectangle = require('./Rectangle-7dF6_xf3.js');
5
- var search_store = require('./search.store-Bh2_GSpU.js');
5
+ var search_store = require('./search.store-BOJh7lOl.js');
6
6
  var index$2 = require('./index-CP1QUrJT.js');
7
- var index$1 = require('./index-DZw3p4dq.js');
7
+ var index$1 = require('./index-DJP-DLP2.js');
8
8
  var store = require('./store-jPZ4ROqV.js');
9
9
  var cropperUtils = require('./cropperUtils-DCDOLeBS.js');
10
10
  var cssUrlHelper = require('./cssUrlHelper-B5A2BBm7.js');
@@ -296,7 +296,6 @@ const VviinnCropper = class {
296
296
  this.vviinnCropperAspectRatioError = index.createEvent(this, "vviinnCropperAspectRatioError");
297
297
  this.vviinnCropperResetState = index.createEvent(this, "vviinnCropperResetState");
298
298
  this.vviinnResetCropArea = index.createEvent(this, "vviinnResetCropArea");
299
- this.vviinnSelectedFiltersReset = index.createEvent(this, "vviinnSelectedFiltersReset");
300
299
  /** Save to Local Storage mode for uploaded image */
301
300
  this.saveImageMode = "once";
302
301
  /** Automatically trigger visual search after crop. Set to false to handle search manually via vviinnCropperCropEnd event */
@@ -397,7 +396,10 @@ const VviinnCropper = class {
397
396
  return Object.assign({ campaignTypeId: "VPS", campaignTypeName: search_store.campaignTypeNames["VPS"], widgetVersion: search_store.version }, search_store.addIfNotEmpty("widgetId", this.el.id));
398
397
  };
399
398
  this.triggerVisualSearch = async () => {
400
- Rectangle._functionExports.pipe(await search_store.makeVisualSearchRequest(this.storeName, null, this.token, this.apiPath), Rectangle.fold(() => {
399
+ Rectangle._functionExports.pipe(await search_store.makeVisualSearchRequest(this.storeName, null, this.token, {
400
+ apiPath: this.apiPath,
401
+ dropAppliedFilters: true,
402
+ }), Rectangle.fold(() => {
401
403
  this.vviinnNoResult.emit(this.getBasicEventData());
402
404
  }, () => { }));
403
405
  };
@@ -476,6 +478,10 @@ const VviinnCropper = class {
476
478
  if (!this.state.imageBounds)
477
479
  return;
478
480
  const normalizedSearchArea = Rectangle.divideOnSized(this.state.imageBounds)(cropboxData);
481
+ // Before the events: a host listening on vviinnCropperCropEnd searches synchronously, and
482
+ // dropAppliedFilters only shapes requests we make ourselves.
483
+ if (!this.autoSearch && this.state.requestFilters.length)
484
+ this.state.requestFilters = [];
479
485
  this.vviinnCropperCropEnd.emit(Object.assign({ searchArea: cropboxData, normalizedSearchArea, imageBounds: this.state.imageBounds }, (this.state.visualSearchId && {
480
486
  requestId: this.state.visualSearchId,
481
487
  })));
@@ -484,7 +490,8 @@ const VviinnCropper = class {
484
490
  this.vviinnImageCrop.emit({
485
491
  isTriggeredByVpsWidget: this.showInWidget,
486
492
  });
487
- this.autoSearch && this.triggerVisualSearch();
493
+ if (this.autoSearch)
494
+ this.triggerVisualSearch();
488
495
  };
489
496
  this.showPreloader = () => this.state.searchStatus === "loading" &&
490
497
  this.state.searchType === "image" &&
@@ -539,20 +546,17 @@ const VviinnCropper = class {
539
546
  return;
540
547
  if (this.cropper)
541
548
  this.state.croppedImageUrl = (_d = (_b = (_a = this.cropper).getCroppedCanvas) === null || _b === void 0 ? void 0 : (_c = _b.call(_a)).toDataURL) === null || _d === void 0 ? void 0 : _d.call(_c);
542
- this.vviinnSelectedFiltersReset.emit({
543
- isTriggeredByVpsWidget: this.showInWidget,
544
- });
545
549
  }
546
550
  render() {
547
551
  var _a;
548
- return (index.h(index.Host, { key: 'b50ccb5595b27ef6673ff9d9350fc30359a6f7ce', class: {
552
+ return (index.h(index.Host, { key: 'd21160534d7b061f52b6a9cd990b4f774a7e3fb7', class: {
549
553
  "show-in-widget": this.showInWidget,
550
554
  active: !!this.state.image,
551
- } }, cssUrlHelper.renderExternalCSS(this.cssUrl), index.h("div", { key: 'efd816ed4e19082091567714fee4ef40efe9a6c4', class: "container" }, this.state.image && (index.h("div", { key: '13f35758ba243eb73513e17375daca8431538383', class: "image-container", style: {
555
+ } }, cssUrlHelper.renderExternalCSS(this.cssUrl), index.h("div", { key: 'c21fefcf982b5f569adad7a5934d442da666a0c3', class: "container" }, this.state.image && (index.h("div", { key: 'a9b71be06d432d1f35c53cf5721b6708580dfc95', class: "image-container", style: {
552
556
  width: `${this.width.toString()}px`,
553
557
  overflow: "hidden",
554
- } }, index.h("img", { key: '7525aae0654325fb25c88106a9ee1fface11a62e', decoding: "async", width: this.width, height: this.height, src: this.state.image.src, draggable: false, onLoad: this.loadImage, alt: store.instance.t("a11y.cropperImage") }), (_a = this.state.detectedObjects) === null || _a === void 0 ? void 0 :
555
- _a.map((object) => (index.h("vviinn-detected-object", { detectedObject: object, selectedDetectedObject: this.selectedDetectedObject, basicEventData: this.basicEventData, imageBounds: this.state.imageBounds, showInWidget: this.showInWidget }))))), this.showPreloader() && (index.h("div", { key: 'b89ad46bda5279b77f4fe258f7a6d4af08f81c29', class: "image-preloader" }, index.h("vviinn-preloader", { key: '34f55578c05321480d7e3d8141a4638df8aad08b' }))))));
558
+ } }, index.h("img", { key: 'a15e6593d83afbcb0713b77ebd6712c8f08d43e3', decoding: "async", width: this.width, height: this.height, src: this.state.image.src, draggable: false, onLoad: this.loadImage, alt: store.instance.t("a11y.cropperImage") }), (_a = this.state.detectedObjects) === null || _a === void 0 ? void 0 :
559
+ _a.map((object) => (index.h("vviinn-detected-object", { detectedObject: object, selectedDetectedObject: this.selectedDetectedObject, basicEventData: this.basicEventData, imageBounds: this.state.imageBounds, showInWidget: this.showInWidget }))))), this.showPreloader() && (index.h("div", { key: '853db6a1f6b06f4ade2bda740df2de525e7d1404', class: "image-preloader" }, index.h("vviinn-preloader", { key: '35ad67441ad3c70938ce499a99d9e821841f00fb' }))))));
556
560
  }
557
561
  get el() { return index.getElement(this); }
558
562
  };
@@ -725,7 +729,7 @@ const oneClickDiscoveryModes = [
725
729
 
726
730
  const vviinnResultsCss = ":host{--font-family-base:Inter, system-ui, sans-serif;--font-family-mono:monospace;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--font-size-display:32px;--font-size-title:24px;--font-size-headline:18px;--font-size-label-large:16px;--font-size-label:14px;--font-size-body-large:16px;--font-size-body:14px;--font-size-caption:12px;--line-height-display:40px;--line-height-title:32px;--line-height-headline:24px;--line-height-label-large:24px;--line-height-label:20px;--line-height-body-large:24px;--line-height-body:20px;--line-height-caption:16px;--letter-spacing-title:0px;--letter-spacing-headline:0px;--letter-spacing-label-large:0px;--letter-spacing-label:0px;--letter-spacing-body-large:0px;--letter-spacing-body:0px;--letter-spacing-caption:0px;--font-weight-400:400;--font-weight-500:500;--font-weight-600:600;--font-weight-700:700;--spacing-none:0px;--spacing-25:2px;--spacing-50:4px;--spacing-75:6px;--spacing-100:8px;--spacing-125:10px;--spacing-150:12px;--spacing-200:16px;--spacing-250:20px;--spacing-300:24px;--spacing-400:32px;--spacing-500:40px;--spacing-600:48px;--border-radius-none:0px;--border-radius-25:2px;--border-radius-50:4px;--border-radius-100:8px;--border-radius-150:12px;--border-radius-200:16px;--border-radius-300:24px;--border-radius-400:32px;--border-radius-full:9999px;--stroke-width-none:0px;--stroke-width-25:1px;--stroke-width-50:2px;--stroke-width-75:3px;--stroke-width-100:4px;--stroke-width-150:6px;--stroke-width-200:8px;--stroke-width-300:12px;--product-card-widget-min-width:135px;--product-card-results-min-width:250px;--image-set-mode-min-width:155px;--source-card-set-mode-max-width:500px;--filter-blur-none:0px;--filter-blur-100:8px;--filter-blur-150:12px;--filter-blur-200:16px;--color-bg-base:#ffffff;--color-bg-inverse:#161616;--color-border-00:#ffffff;--color-border-01:#f4f4f4;--color-border-02:#e0e0e0;--color-border-03:#c6c6c6;--color-border-inverse-00:#161616;--color-border-inverse-01:#393939;--color-field-01:#ffffff;--color-field-02:#f4f4f4;--color-icon-primary:#161616;--color-icon-secondary:#525252;--color-icon-helper:#8d8d8d;--color-icon-on-color:#ffffff;--color-icon-inverse:#ffffff;--color-icon-disabled:#16161640;--color-text-primary:#161616;--color-text-secondary:#707070;--color-text-helper:#8d8d8d;--color-text-placeholder:#a8a8a8;--color-text-on-color:#ffffff;--color-text-inverse:#ffffff;--color-text-disabled:#16161640;--button-bg-color-primary:#000000;--button-bg-color-primary-hover:#161616;--button-bg-color-primary-active:#1e1e1e;--button-bg-color-secondary:#f4f4f4;--button-bg-color-secondary-hover:#e0e0e0;--button-bg-color-secondary-active:#c6c6c6;--button-bg-color-ghost-hover:#f4f4f4;--button-bg-color-ghost-active:#eaeaea;--button-bg-color-frosted:#6f6f6f66;--button-bg-color-frosted-hover:#6f6f6f80;--button-bg-color-frosted-active:#6f6f6f99;--button-bg-color-disabled:#e0e0e0;--button-bg-color-positive:#dcfce7;--surface-bg-color-01:#f4f4f4;--surface-bg-color-01-hover:#eaeaea;--surface-bg-color-01-active:#e0e0e0;--surface-bg-color-02:#ffffff;--surface-bg-color-inverse:#262626;--surface-bg-color-inverse-hover:#303030;--surface-bg-color-inverse-active:#393939;--surface-bg-color-disabled:#e0e0e0;--surface-bg-color-shadow-01:#dddddd;--surface-bg-color-shadow-02:#c6c6c6;--chip-bg-color-primary:#161616;--chip-bg-color-primary-hover:#1e1e1e;--chip-bg-color-primary-active:#262626;--chip-bg-color-subtle:#f4f4f4;--chip-bg-color-subtle-hover:#eaeaea;--chip-bg-color-subtle-active:#e0e0e0;--chip-bg-color-outline-hover:#f4f4f4;--chip-bg-color-outline-active:#eaeaea;--label-bg-color-accent:#ff3944;--sidebar-animation-duration-default:0.5s;--search-modal-animation-duration-default:0.25s;--search-modal-animation-duration-mobile-default:0.35s;}:host{display:block}:host(.show-in-widget){display:grid;overflow-y:auto;overflow-x:hidden;padding:unset;position:relative;width:100%}:host::part(product-card){width:100%;height:100%}:host::part(content-card){height:100%}:host::part(list-card){height:calc(100% - 20px)}.products{width:100%;align-content:center;align-items:start;box-sizing:border-box;display:grid;grid-gap:32px 16px;grid-template-columns:repeat(\n auto-fill,\n minmax(\n var(--product-card-width, var(--product-card-results-min-width)),\n 1fr\n )\n );justify-items:center;padding:0 24px 24px 16px;position:absolute}:host(.show-in-widget) .products{grid-template-columns:repeat(\n auto-fill,\n minmax(var(--product-card-width, var(--product-card-widget-min-width)), 1fr)\n )}:host(:not(.show-in-widget)) .products{position:static;padding:0}.hidden{visibility:hidden;height:1px}products.hidden{display:none}.vviinn-results-product-card-actions vviinn-vpr-button::part(button){position:relative;display:flex;justify-content:center;align-items:center;color:var(--color-icon-inverse);padding:var(--spacing-50);gap:var(--spacing-50);border-radius:var(--border-radius-100);background:var(--button-bg-color-frosted);backdrop-filter:blur(calc(var(--filter-blur-150, 12px) / 2))}.vviinn-results-product-card-actions vviinn-vpr-button::part(button)::after{content:\"\";position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(1.55)}.vviinn-results-product-card-actions vviinn-vpr-button::part(button):hover{background:var(--button-bg-color-frosted-hover)}#one-click-discovery-append{width:100%;grid-column:1 / -1}vviinn-recommendations-sidebar::part(body){border:1px solid var(--color-border-02);border-left:none;border-right:none;margin-top:-9px;max-height:unset}@media screen and (max-width: 768px){vviinn-recommendations-sidebar::part(body){margin-top:-1px}}vviinn-recommendations-sidebar::part(source-image){display:none}vviinn-recommendations-sidebar::part(sidebar-header){padding:0;min-height:40px;margin-bottom:24px;align-items:center;justify-items:left;text-align:left}vviinn-recommendations-sidebar::part(sidebar-content){padding:0}:host(.matching-discovery) vviinn-recommendations-sidebar::part(items-group){grid-template-columns:repeat(\n auto-fill,\n minmax(\n var(--product-card-width, var(--product-card-results-min-width)),\n 1fr\n )\n )}:host(.show-in-widget) vviinn-recommendations-sidebar::part(recommendations-results),:host(.show-in-widget) vviinn-recommendations-sidebar::part(items-group){grid-template-columns:repeat(\n auto-fill,\n minmax(var(--product-card-widget-min-width), 1fr)\n )}@media (max-width: 768px){:host(.show-in-widget){align-content:start;position:static;overflow-y:unset;width:100%;padding-top:0;margin-top:12px}.products{position:static;padding:0;width:unset;row-gap:24px;justify-content:center}.nothing-found{position:static;grid-gap:64px;padding:unset;align-content:start;width:unset}}@media (max-width: 380px){.products{-moz-column-gap:10px;column-gap:10px}}";
727
731
 
728
- var __rest$2 = (undefined && undefined.__rest) || function (s, e) {
732
+ var __rest$1 = (undefined && undefined.__rest) || function (s, e) {
729
733
  var t = {};
730
734
  for (var p in s)
731
735
  if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -840,7 +844,7 @@ const VviinnResults = class {
840
844
  if (!detail.query)
841
845
  return;
842
846
  search_store.setTextSearchQuery(this.storeName, detail.query);
843
- const _a = this.getBasicEventData("TPS"), rest = __rest$2(_a, ["campaignTypeId"]);
847
+ const _a = this.getBasicEventData("TPS"), rest = __rest$1(_a, ["campaignTypeId"]);
844
848
  const textSearchStartedEvent = index$1.createWidgetEvent("TPS")(Object.assign({ action: "search", session_id: this.uiSessionId }, rest));
845
849
  store.trackEvent(textSearchStartedEvent, this.token, this.apiPath);
846
850
  this.getTextSearchResults();
@@ -865,7 +869,7 @@ const VviinnResults = class {
865
869
  if (this.skipStateChanges(detail.isTriggeredByVpsWidget))
866
870
  return;
867
871
  const { action, kind, customTrigger } = detail;
868
- const _a = this.getBasicEventData(customTrigger), rest = __rest$2(_a, ["campaignTypeId"]);
872
+ const _a = this.getBasicEventData(customTrigger), rest = __rest$1(_a, ["campaignTypeId"]);
869
873
  if (action === "select" || action === "deselect" || action === "reset")
870
874
  this.initResultEvents();
871
875
  if (customTrigger === "TPS")
@@ -884,14 +888,6 @@ const VviinnResults = class {
884
888
  search_store.resetStore(this.storeName, "appStateOnly");
885
889
  this.updateCampaignIds();
886
890
  };
887
- this.imageCropHandler = ({ detail }) => {
888
- if (this.skipStateChanges(detail.isTriggeredByVpsWidget))
889
- return;
890
- this.vviinnSelectedFiltersReset.emit({
891
- isTriggeredByVpsWidget: this.showInWidget,
892
- });
893
- this.state.requestFilters = [];
894
- };
895
891
  this.oneClickDiscoveryAppendClosedHandler = ({ detail, }) => {
896
892
  if (this.skipStateChanges(detail.isTriggeredByVpsWidget))
897
893
  return;
@@ -914,7 +910,7 @@ const VviinnResults = class {
914
910
  });
915
911
  }
916
912
  createTrackingEventBody(detail) {
917
- const { productRank, productId} = detail, rest = __rest$2(detail, ["productRank", "productId", "campaignTypeId", "clickEvent"]);
913
+ const { productRank, productId} = detail, rest = __rest$1(detail, ["productRank", "productId", "campaignTypeId", "clickEvent"]);
918
914
  return Object.assign({ session_id: this.uiSessionId, rank: productRank, product: productId }, rest);
919
915
  }
920
916
  async componentWillLoad() {
@@ -967,7 +963,7 @@ const VviinnResults = class {
967
963
  }));
968
964
  }
969
965
  async getVisualSearchResults(searchId) {
970
- return Rectangle._functionExports.pipe(await search_store.makeVisualSearchRequest(this.storeName, searchId !== null && searchId !== void 0 ? searchId : this.state.visualSearchId, this.token, this.apiPath), Rectangle.fold(() => {
966
+ return Rectangle._functionExports.pipe(await search_store.makeVisualSearchRequest(this.storeName, searchId !== null && searchId !== void 0 ? searchId : this.state.visualSearchId, this.token, { apiPath: this.apiPath }), Rectangle.fold(() => {
971
967
  this.vviinnNoResult.emit(this.getBasicEventData("VPS"));
972
968
  return null;
973
969
  }, (response) => response));
@@ -995,7 +991,6 @@ const VviinnResults = class {
995
991
  ["vviinnTextSearchStarted", this.textSearchStartedHandler],
996
992
  ["vviinnFiltersChanged", this.filtersChangedHandler],
997
993
  ["vviinnFilterTriggered", this.filterTriggeredHandler],
998
- ["vviinnImageCrop", this.imageCropHandler],
999
994
  [
1000
995
  "vviinnOneClickDiscoveryAppendClosed",
1001
996
  this.oneClickDiscoveryAppendClosedHandler,
@@ -1076,7 +1071,7 @@ const VviinnResults = class {
1076
1071
  store.trackEvent(addToWishlistEvent, this.token, this.apiPath);
1077
1072
  }
1078
1073
  trackResultEvent(type) {
1079
- const _a = this.getBasicEventData(), { campaignTypeId } = _a, rest = __rest$2(_a, ["campaignTypeId"]);
1074
+ const _a = this.getBasicEventData(), { campaignTypeId } = _a, rest = __rest$1(_a, ["campaignTypeId"]);
1080
1075
  let resultEvent = index$1.createResultEventByType(type, campaignTypeId)(Object.assign({ session_id: this.uiSessionId }, rest));
1081
1076
  store.trackEvent(resultEvent, this.token, this.apiPath);
1082
1077
  }
@@ -1149,13 +1144,13 @@ const VviinnResults = class {
1149
1144
  render() {
1150
1145
  var _a;
1151
1146
  const resultsLength = this.getResults().length;
1152
- return (index.h(index.Host, { key: 'd62957bb1294f3a62e14fa9a3eb97c7ef6007eae', id: "results-block", class: {
1147
+ return (index.h(index.Host, { key: '6717d12dc2c915c1f347ee0d626c2e14bd22495c', id: "results-block", class: {
1153
1148
  "show-in-widget": this.showInWidget,
1154
1149
  "matching-discovery": this.oneClickDiscoveryMode === "append-slider",
1155
- }, exportparts: `${index$3.productCardParts}, ${index$3.listCardParts}, ${index$3.contentCardParts}, ${index$3.productCardsGridPart}` }, cssUrlHelper.renderExternalCSS(this.cssUrl), index.h("div", { key: '69f7a38dc02f42c357dbae8cf154ecb78380f270', class: "nothing-found" }, this.getCurrentErrorType() && (index.h("vviinn-error", { key: 'd78ed9f6d777d7ec1686b10b709deee018c4391e', errorType: this.getCurrentErrorType(), handler: this.resetWidgetState, hasBackground: this.showInWidget, searchType: this.state.searchType }))), index.h("div", { key: 'be3db62dcfd508b6f60036454d3c825d6c27f5ae', class: {
1150
+ }, exportparts: `${index$3.productCardParts}, ${index$3.listCardParts}, ${index$3.contentCardParts}, ${index$3.productCardsGridPart}` }, cssUrlHelper.renderExternalCSS(this.cssUrl), index.h("div", { key: '16e9465ffc9dcfeb3f7eddbd7d340c4a8a6910a6', class: "nothing-found" }, this.getCurrentErrorType() && (index.h("vviinn-error", { key: '1aa58576b33310b819cf8bc96e12635dd1dda6c8', errorType: this.getCurrentErrorType(), handler: this.resetWidgetState, hasBackground: this.showInWidget, searchType: this.state.searchType }))), index.h("div", { key: '83bdaeb513300871388847247407a6925d8e9398', class: {
1156
1151
  hidden: this.showAspectRatioError || resultsLength === 0,
1157
1152
  products: true,
1158
- }, part: index$3.productCardsGridPart, id: "vviinn-results-products" }, resultsLength > 0 && this.renderResults(), index.h("div", { key: '88d3d2d5880806b9e24799694cc540de676d17f8', id: "one-click-discovery-append", style: {
1153
+ }, part: index$3.productCardsGridPart, id: "vviinn-results-products" }, resultsLength > 0 && this.renderResults(), index.h("div", { key: '44c26b1e19e097962ed8b004b98fce6099ade20d', id: "one-click-discovery-append", style: {
1159
1154
  order: ((_a = this.oneClickDiscoveryAppendIndex) !== null && _a !== void 0 ? _a : resultsLength).toString(),
1160
1155
  } }))));
1161
1156
  }
@@ -1169,18 +1164,6 @@ VviinnResults.style = vviinnResultsCss;
1169
1164
 
1170
1165
  const vviinnFiltersCss = ":host{--font-family-base:Inter, system-ui, sans-serif;--font-family-mono:monospace;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--font-size-display:32px;--font-size-title:24px;--font-size-headline:18px;--font-size-label-large:16px;--font-size-label:14px;--font-size-body-large:16px;--font-size-body:14px;--font-size-caption:12px;--line-height-display:40px;--line-height-title:32px;--line-height-headline:24px;--line-height-label-large:24px;--line-height-label:20px;--line-height-body-large:24px;--line-height-body:20px;--line-height-caption:16px;--letter-spacing-title:0px;--letter-spacing-headline:0px;--letter-spacing-label-large:0px;--letter-spacing-label:0px;--letter-spacing-body-large:0px;--letter-spacing-body:0px;--letter-spacing-caption:0px;--font-weight-400:400;--font-weight-500:500;--font-weight-600:600;--font-weight-700:700;--spacing-none:0px;--spacing-25:2px;--spacing-50:4px;--spacing-75:6px;--spacing-100:8px;--spacing-125:10px;--spacing-150:12px;--spacing-200:16px;--spacing-250:20px;--spacing-300:24px;--spacing-400:32px;--spacing-500:40px;--spacing-600:48px;--border-radius-none:0px;--border-radius-25:2px;--border-radius-50:4px;--border-radius-100:8px;--border-radius-150:12px;--border-radius-200:16px;--border-radius-300:24px;--border-radius-400:32px;--border-radius-full:9999px;--stroke-width-none:0px;--stroke-width-25:1px;--stroke-width-50:2px;--stroke-width-75:3px;--stroke-width-100:4px;--stroke-width-150:6px;--stroke-width-200:8px;--stroke-width-300:12px;--product-card-widget-min-width:135px;--product-card-results-min-width:250px;--image-set-mode-min-width:155px;--source-card-set-mode-max-width:500px;--filter-blur-none:0px;--filter-blur-100:8px;--filter-blur-150:12px;--filter-blur-200:16px;--color-bg-base:#ffffff;--color-bg-inverse:#161616;--color-border-00:#ffffff;--color-border-01:#f4f4f4;--color-border-02:#e0e0e0;--color-border-03:#c6c6c6;--color-border-inverse-00:#161616;--color-border-inverse-01:#393939;--color-field-01:#ffffff;--color-field-02:#f4f4f4;--color-icon-primary:#161616;--color-icon-secondary:#525252;--color-icon-helper:#8d8d8d;--color-icon-on-color:#ffffff;--color-icon-inverse:#ffffff;--color-icon-disabled:#16161640;--color-text-primary:#161616;--color-text-secondary:#707070;--color-text-helper:#8d8d8d;--color-text-placeholder:#a8a8a8;--color-text-on-color:#ffffff;--color-text-inverse:#ffffff;--color-text-disabled:#16161640;--button-bg-color-primary:#000000;--button-bg-color-primary-hover:#161616;--button-bg-color-primary-active:#1e1e1e;--button-bg-color-secondary:#f4f4f4;--button-bg-color-secondary-hover:#e0e0e0;--button-bg-color-secondary-active:#c6c6c6;--button-bg-color-ghost-hover:#f4f4f4;--button-bg-color-ghost-active:#eaeaea;--button-bg-color-frosted:#6f6f6f66;--button-bg-color-frosted-hover:#6f6f6f80;--button-bg-color-frosted-active:#6f6f6f99;--button-bg-color-disabled:#e0e0e0;--button-bg-color-positive:#dcfce7;--surface-bg-color-01:#f4f4f4;--surface-bg-color-01-hover:#eaeaea;--surface-bg-color-01-active:#e0e0e0;--surface-bg-color-02:#ffffff;--surface-bg-color-inverse:#262626;--surface-bg-color-inverse-hover:#303030;--surface-bg-color-inverse-active:#393939;--surface-bg-color-disabled:#e0e0e0;--surface-bg-color-shadow-01:#dddddd;--surface-bg-color-shadow-02:#c6c6c6;--chip-bg-color-primary:#161616;--chip-bg-color-primary-hover:#1e1e1e;--chip-bg-color-primary-active:#262626;--chip-bg-color-subtle:#f4f4f4;--chip-bg-color-subtle-hover:#eaeaea;--chip-bg-color-subtle-active:#e0e0e0;--chip-bg-color-outline-hover:#f4f4f4;--chip-bg-color-outline-active:#eaeaea;--label-bg-color-accent:#ff3944;--sidebar-animation-duration-default:0.5s;--search-modal-animation-duration-default:0.25s;--search-modal-animation-duration-mobile-default:0.35s;}:host{display:block;font-family:var(--font-family, var(--font-family-base));font-style:normal;display:contents;}.filters-modal-list,.sub-filters-wrapper,.main-filters-list,.filters-modal-sub-list,.selected-filters-wrapper{list-style:none;margin:0;padding:0}.main-filters-list{padding:var(--spacing-25);gap:var(--spacing-25);border-radius:8px;background:var(--surface-bg-color-01);display:inline-flex}vviinn-range-filter{width:100%;max-width:500px;padding-bottom:var(--spacing-150)}.filters-search-input-container{position:relative;box-sizing:border-box;width:100%;display:flex;align-items:center}.filters-search-icon{position:absolute;left:var(--spacing-100);color:var(--color-icon-helper);z-index:1;pointer-events:none;display:flex;align-items:center;justify-content:center}.filters-search-input{width:100%;padding:var(--spacing-100) var(--spacing-100) var(--spacing-100)\n var(--spacing-500);border:none;background:var(--color-bg-base);font-family:var(--font-family, var(--font-family-base));font-size:var(--font-size-body);font-weight:var(--font-weight-400);line-height:var(--line-height-body);color:var(--color-text-primary);box-sizing:border-box;outline:none}.filters-search-input::-moz-placeholder{color:var(--color-text-placeholder)}.filters-search-input::placeholder{color:var(--color-text-placeholder)}.filters-modal-main-button,.filters-sub-button,.filters-main-button,.filters-modal-close,.filters-sub-button-selected{font-family:var(--font-family, var(--font-family-base));cursor:pointer;border:none}.filters-sub-button,.filters-main-button{font-size:var(--font-size-body);font-weight:var(--font-weight-400);line-height:var(--line-height-body);letter-spacing:var(--letter-spacing-body);display:flex;justify-content:center;align-items:center;border-radius:6px}.filters-main-button{padding:var(--spacing-100);color:var(--color-text-secondary);background:none;transition:background 0.15s,\n color 0.15s}.filters-main-button.active,.filters-main-button:hover{background:var(--surface-bg-color-02);color:var(--color-text-primary)}.sub-filters-wrapper,.selected-filters-wrapper{gap:var(--spacing-100);display:flex;flex-direction:row;overflow-x:auto;scrollbar-width:thin}.sub-filters-wrapper{align-items:center;gap:var(--spacing-100);margin:16px -2px 0}.sub-filters-wrapper>li{padding:2px}.selected-filters-wrapper{align-items:center;gap:var(--spacing-100);flex-wrap:wrap}.filters-sub-button{color:var(--color-text-primary);background:var(--surface-bg-color-01);padding:var(--spacing-100);gap:var(--spacing-25);height:100%}.filters-sub-button>span,.filters-sub-button-selected>span{display:inline-flex;justify-content:center;align-items:center;gap:var(--spacing-25);white-space:nowrap}.filters-sub-button>span>span,.filters-sub-button-selected>span>span{padding:var(--spacing-25)}.filters-sub-button:hover{background:var(--surface-bg-color-01-hover)}.filters-sub-button:disabled{cursor:not-allowed;background:var(--surface-bg-color-disabled);color:var(--color-text-disabled)}.filters-more-button{display:flex;padding:var(--spacing-100);gap:var(--spacing-50);border-radius:var(--border-radius-100);align-items:flex-start;background-color:var(--button-bg-color-secondary);transition:background-color 0.1s;border:none;cursor:pointer}.filters-more-button:hover{background-color:var(--button-bg-color-secondary-hover)}.filters-modal-wrapper{display:flex;flex-direction:column;background:#ffffff}.filters-modal.button,.filters-modal.modal{display:none;position:fixed;top:0;bottom:0;right:0;left:0;z-index:99999;background-color:rgba(0, 0, 0, 0.5)}.filters-modal.button .filters-modal-wrapper{position:fixed;top:0;bottom:0;right:0;width:420px;z-index:99999;border-radius:var(--border-radius-400) var(--border-radius-none)\n var(--border-radius-none) var(--border-radius-400)}.filters-modal.preview{display:block}.filters-modal.open{display:block}.filters-modal-header{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:var(--color-text-primary);text-align:center;border-bottom:1px solid var(--color-border-01)}.filters-modal-header.show-header-content{min-height:64px}.filters-modal-title{margin:0;padding:0;font-size:var(--font-size-headline);font-weight:var(--font-weight-500);line-height:var(--line-height-headline);letter-spacing:var(--letter-spacing-headline)}.filters-modal-no-filters-message{font-size:var(--font-size-caption);color:var(--color-text-secondary);font-weight:var(--font-weight-500);line-height:var(--line-height-caption);letter-spacing:var(--letter-spacing-caption);text-align:center;padding:var(--spacing-300) var(--spacing-200);display:flex;align-items:center;justify-content:center}.filters-modal-main{overflow-y:auto;scrolbar-width:thin}.filters-modal-list{margin:var(--spacing-50) 0 0 var(--spacing-300)}.filters-modal-list>li{padding-right:var(--spacing-300)}.filters-modal:not(.preview-inline) .filters-modal-list>li:not(:last-child) .filters-modal-main-button-wrapper{border-bottom:1px solid var(--color-border-01)}.filters-modal-main-button{position:relative;width:100%;background:none;text-align:left;padding:var(--spacing-200) 0;color:var(--color-text-primary);font-size:var(--font-size-label-large);font-weight:var(--font-weight-500);line-height:var(--line-height-label-large);letter-spacing:var(--letter-spacing-label-large)}.filters-modal-main-button>svg{position:absolute;right:0;top:var(--spacing-200);color:var(--color-icon-helper);transform:rotate(90deg)}.filters-modal-main-button:hover>svg{color:var(--color-icon-primary);transition:color 0.2s}.filters-modal-main-button-wrapper.open .filters-modal-main-button>svg{transform:rotate(-90deg);color:var(--color-icon-primary)}.filters-modal-sub-list{display:none}.filters-modal-main-button-wrapper.open .filters-modal-sub-list{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding-bottom:var(--spacing-150)}.filters-modal-sub-list>li{display:contents}.filters-modal-close{position:absolute;color:#6f6f6f;right:var(--spacing-100);top:var(--spacing-200);cursor:pointer;background:none}.filters-modal-close:hover{color:#000}.filters-modal.preview .filters-modal-close{display:none}.filters-more-modal-button{background:none;border:none;cursor:pointer;display:flex;align-items:center;height:36px;padding:var(--spacing-75);gap:var(--spacing-50);border-radius:var(--border-radius-100);background-color:var(--surface-bg-color-01);transition:background-color 0.1s;font-family:var(--font-family, var(--font-family-base));font-size:var(--font-size-label);color:var(--color-text-primary)}.filters-more-modal-button.custom:not(.clickable){cursor:default}.filters-more-modal-button:hover{background-color:var(--surface-bg-color-01-hover)}.filters-more-modal-button.active{background:var(--surface-bg-color-inverse);color:var(--color-text-inverse)}.filters-more-modal-button.active .filters-option-icon-wrapper{border-color:var(--color-bg-base);background-color:var(--color-bg-base);color:var(--color-icon-primary)}.filters-more-modal-button>span{white-space:nowrap;padding:var(--spacing-25)}.filters-more-modal-button:disabled{cursor:not-allowed;opacity:0.5}.filters-more-modal-button img{box-sizing:border-box;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;border-radius:var(--border-radius-full);border:1px solid var(--color-border-01)}.filters-modal-actions{border-top:1px solid var(--color-border-01);padding:var(--spacing-125);z-index:10;border-radius:0px 0px 0px 32px}.filters-modal-apply,.filters-modal-reset{font-family:var(--font-family, var(--font-family-base))}.filters-modal-apply{cursor:pointer;width:100%;border:none;margin-bottom:20px;display:flex;padding:var(--spacing-150);justify-content:center;align-items:center;gap:var(--spacing-50);align-self:stretch;color:var(--color-text-inverse);text-align:center;border-radius:var(--border-radius-150);background:var(--button-bg-color-primary);font-size:var(--font-size-label-large);font-weight:var(--font-weight-500);line-height:var(--line-height-label-large);letter-spacing:var(--letter-spacing-label-large)}.filters-modal-apply:disabled{background:var(--button-bg-color-disabled);color:var(--color-text-disabled)}.filters-modal-reset{background:none;border:none;cursor:pointer;display:block;text-align:center;width:100%;padding:var(--spacing-125) 0;color:var(--color-text-secondary);text-align:center;font-size:var(--font-size-label);font-weight:var(--font-weight-500);line-height:var(--line-height-label);letter-spacing:var(--letter-spacing-label)}.filters-modal-reset:hover{color:var(--color-text-primary)}.selected-filters-wrapper>li .filters-sub-button-selected{border-radius:var(--border-radius-100);background:var(--surface-bg-color-inverse);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:var(--spacing-100)}.selected-filters-wrapper>li.hidden{display:none}.filters-sub-button-selected{display:flex;align-items:center;gap:var(--spacing-25);background:var(--surface-bg-color-inverse);border-radius:var(--border-radius-100);color:var(--color-text-inverse);text-overflow:ellipsis;font-size:var(--font-size-body);font-weight:var(--font-weight-400);line-height:var(--line-height-body);letter-spacing:var(--letter-spacing-body);padding:var(--spacing-100)}.filters-sub-button-color-dot{box-sizing:border-box;width:24px;height:24px;border-radius:var(--border-radius-full);border:var(--stroke-width-50) solid var(--color-border-01)}.selected-filters-wrapper .filters-sub-button-selected{width:24px;height:24px;border:none}.filters-option-icon-wrapper{display:flex;box-sizing:border-box;align-items:center;justify-content:center;border-radius:4px;border:2px solid #e0e0e0;background:#fff;width:20px;height:20px}.filters-modal-main-button-added-options{color:var(--color-text-secondary);text-overflow:ellipsis;padding-right:var(--spacing-100);font-size:var(--font-size-body);font-weight:var(--font-weight-400);line-height:var(--line-height-body);letter-spacing:var(--letter-spacing-body)}.filters-modal-main-button-added-options>span::after{content:\", \"}.filters-modal-main-button-added-options>span:last-child::after{content:\"\"}.filters-modal.preview-inline,.filters-modal.preview-inline .filters-modal-wrapper,.filters-modal.preview-inline .filters-modal-main{overflow:visible}.filters-modal.preview-inline .filters-modal-header,.filters-modal.preview-inline .filters-modal-actions{display:none}.filters-modal.preview-inline .filters-modal-list{margin:0;flex-direction:row;gap:var(--spacing-100);display:flex;flex-wrap:wrap}.filters-modal.preview-inline .extended-filters-row{box-sizing:border-box;padding-right:0;border-radius:var(--border-radius-100);background:var(--surface-bg-color-01)}.filters-modal.preview-inline .filters-modal-main-button{width:100%;display:flex;align-items:center;padding:var(--spacing-75);gap:var(--spacing-25);justify-content:space-between;font-size:var(--font-size-body);font-weight:var(--font-weight-400)}.filters-modal.preview-inline .filters-modal-main-button>svg{position:static}.filters-modal.preview-inline .extended-filters-row{position:relative}.filters-modal.preview-inline .filters-search-container{max-height:225px;width:-moz-max-content;width:max-content;min-width:140px;height:-moz-fit-content;height:fit-content;overflow:hidden;position:absolute;display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;padding:0;top:calc(100% + var(--spacing-75));left:0;right:0;z-index:1000;border-radius:var(--border-radius-150);border:1px solid var(--color-border-01);background-color:var(--color-bg-base);box-shadow:0 4px 8px 0 rgba(0, 0, 0, 0.1);box-sizing:border-box}.filters-modal.preview-inline .filters-search-input-container{position:sticky;top:0;background-color:var(--color-bg-base);padding:var(--spacing-50);border-bottom:1px solid var(--color-border-01);z-index:1}.filters-modal.preview-inline .filters-modal-sub-list{position:static;border:none;background:none;box-shadow:none;padding:var(--spacing-50);margin:0;max-height:165px;width:100%;box-sizing:border-box;display:flex;flex-direction:column;flex-wrap:nowrap;align-items:flex-start;gap:8px;overflow-y:auto;scrollbar-width:thin}.filters-modal.preview-inline .align-right .filters-search-container{left:auto;right:0}.filters-modal.preview-inline .filters-more-modal-button{width:100%;gap:var(--spacing-150);background-color:var(--color-bg-base)}.filters-modal.preview-inline .filters-option-icon-wrapper{margin-left:auto}.filters-modal.preview-inline .filters-more-modal-button:hover{background-color:var(--surface-bg-color-01-hover)}.filters-modal.preview-inline .filters-more-modal-button.active{color:var(--color-text-primary)}.filters-modal.preview-inline .filters-more-modal-button.active .filters-option-icon-wrapper{border-color:var(--color-bg-inverse);background-color:var(--color-bg-inverse);color:var(--color-icon-inverse)}.filters-modal.preview-inline .filters-modal-sub-list:has(vviinn-range-filter){padding:0 var(--spacing-75);width:220px;max-height:unset}.filters-modal.preview-inline vviinn-range-filter{width:100%}@media (max-width: 768px){.sub-filters-wrapper,.selected-filters-wrapper{flex-wrap:unset;overflow-x:auto;scrollbar-width:none;padding-bottom:0}.sub-filters-wrapper,.selected-filters-wrapper{-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.sub-filters-wrapper::-webkit-scrollbar,.selected-filters-wrapper::-webkit-scrollbar{display:none}:host(.show-in-widget) .selected-filters-container{overflow-x:auto;width:100%}:host(.show-in-widget) .selected-filters-wrapper{padding:0 var(--spacing-300)}.filters-modal.button .filters-modal-wrapper,.filters-modal.modal .filters-modal-wrapper{width:100%;border-radius:24px 24px 0px 0px}.filters-modal.button .filters-modal-wrapper{top:10%}.filters-modal.modal .filters-modal-wrapper{position:fixed;width:100%;height:calc(100% - 64px);bottom:0;transform:translateY(-64px)}.filters-modal.modal .filters-modal-header{font-size:var(--font-size-body-large)}.filters-modal.modal .filters-modal-main{padding-bottom:120px}vviinn-range-filter{max-width:unset}:host(.show-in-widget.primary-filters) vviinn-range-filter{max-width:calc(100% - 48px);transform:translateX(24px)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}";
1171
1166
 
1172
- var __rest$1 = (undefined && undefined.__rest) || function (s, e) {
1173
- var t = {};
1174
- for (var p in s)
1175
- if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
1176
- t[p] = s[p];
1177
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
1178
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
1179
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
1180
- t[p[i]] = s[p[i]];
1181
- }
1182
- return t;
1183
- };
1184
1167
  const VviinnSelectedFilters = class {
1185
1168
  constructor(hostRef) {
1186
1169
  index.registerInstance(this, hostRef);
@@ -1193,10 +1176,12 @@ const VviinnSelectedFilters = class {
1193
1176
  /** @internal */
1194
1177
  this.showInWidget = false;
1195
1178
  this.requestFilters = [];
1196
- this.selectedFilterButtons = [];
1197
1179
  this.textSearchCustomFilter = null;
1198
1180
  this.imageSrc = null;
1199
- this.intervalCustomFilters = {};
1181
+ // Rebuilt in componentWillRender and consumed by the render after it, so plain fields.
1182
+ // The local requestFilters drive that rebuild — reads there register no subscription.
1183
+ this.selectedFilterButtons = [];
1184
+ this.intervalFilterButtons = [];
1200
1185
  this.handleSubFilterSelection = (filterValue, selectedFilter) => {
1201
1186
  this.requestFilters = index$1.triggerFilter({
1202
1187
  filterValue,
@@ -1212,22 +1197,16 @@ const VviinnSelectedFilters = class {
1212
1197
  this.skipStateChanges = (isTriggeredByVpsWidget) => this.showInWidget !== isTriggeredByVpsWidget;
1213
1198
  this.resetInnerState = (resetTextSearchFilter = false, resetImageFilter = false) => {
1214
1199
  this.requestFilters = [];
1215
- this.selectedFilterButtons = [];
1216
- this.intervalCustomFilters = {};
1217
1200
  resetTextSearchFilter && (this.textSearchCustomFilter = null);
1218
1201
  resetImageFilter && (this.imageSrc = null);
1219
1202
  };
1220
1203
  this.handleFilterTriggered = ({ detail, }) => {
1221
- var _a;
1222
1204
  if (this.skipStateChanges(detail.isTriggeredByVpsWidget))
1223
1205
  return;
1224
1206
  if (detail.customTrigger === "TPS") {
1225
1207
  this.resetInnerState(true, true);
1226
1208
  this.textSearchCustomFilter = detail.kind;
1227
1209
  }
1228
- if (detail.action === "select" && ((_a = detail.filter) === null || _a === void 0 ? void 0 : _a.type) === "interval") {
1229
- this.setIntervalFilterLabel(detail.filter, detail.value.interval);
1230
- }
1231
1210
  };
1232
1211
  this.handleImageUploadStarted = ({ detail }) => {
1233
1212
  if (this.skipStateChanges(detail.isTriggeredByVpsWidget))
@@ -1246,13 +1225,6 @@ const VviinnSelectedFilters = class {
1246
1225
  this.skipStateChanges(isTriggeredByVpsWidget))
1247
1226
  return;
1248
1227
  this.requestFilters = filters;
1249
- const activeIntervalColumns = new Set(filters
1250
- .filter((f) => f.values && f.values.length > 0)
1251
- .map((f) => f.column));
1252
- const updatedIntervalFilters = Object.fromEntries(Object.entries(this.intervalCustomFilters).filter(([column]) => activeIntervalColumns.has(column)));
1253
- if (Object.keys(updatedIntervalFilters).length !==
1254
- Object.keys(this.intervalCustomFilters).length)
1255
- this.intervalCustomFilters = updatedIntervalFilters;
1256
1228
  };
1257
1229
  this.handleSelectedFiltersReset = ({ detail }) => {
1258
1230
  if (this.skipStateChanges(detail.isTriggeredByVpsWidget))
@@ -1273,8 +1245,6 @@ const VviinnSelectedFilters = class {
1273
1245
  this.imageSrc = imageSrc;
1274
1246
  };
1275
1247
  this.handleIntervalButtonClick = (column) => {
1276
- const _a = this.intervalCustomFilters, _b = column, remaining = __rest$1(_a, [typeof _b === "symbol" ? _b : _b + ""]);
1277
- this.intervalCustomFilters = remaining;
1278
1248
  this.requestFilters = index$1.triggerRemoveIntervalFilter({
1279
1249
  column,
1280
1250
  requestFilters: this.requestFilters,
@@ -1303,7 +1273,7 @@ const VviinnSelectedFilters = class {
1303
1273
  connectedCallback() {
1304
1274
  const { state, onChange } = search_store.useSearchStore(this.showInWidget);
1305
1275
  this.state = state;
1306
- index$1.syncRequestFilters(state, onChange, (filters) => (this.requestFilters = filters));
1276
+ this.disposeStoreListener = index$1.syncRequestFilters(state, onChange, (filters) => (this.requestFilters = filters));
1307
1277
  this.eventAbortController = new AbortController();
1308
1278
  const { signal } = this.eventAbortController;
1309
1279
  index$2.addEventListenersWithSignal(document, [
@@ -1323,16 +1293,18 @@ const VviinnSelectedFilters = class {
1323
1293
  this.replaceSlotsContent();
1324
1294
  }
1325
1295
  disconnectedCallback() {
1326
- var _a;
1296
+ var _a, _b;
1327
1297
  (_a = this.eventAbortController) === null || _a === void 0 ? void 0 : _a.abort();
1298
+ (_b = this.disposeStoreListener) === null || _b === void 0 ? void 0 : _b.call(this);
1328
1299
  }
1329
1300
  componentWillRender() {
1330
1301
  var _a;
1331
1302
  this.selectedFilterButtons = [];
1303
+ this.intervalFilterButtons = [];
1332
1304
  const filters = ((_a = this.state) === null || _a === void 0 ? void 0 : _a.dynamicFilters) || [];
1333
1305
  filters.forEach((filter) => {
1334
1306
  if (filter.type === "interval") {
1335
- this.syncPreselectedIntervalFilter(filter);
1307
+ this.collectIntervalButton(filter);
1336
1308
  return;
1337
1309
  }
1338
1310
  if (!("values" in filter))
@@ -1352,32 +1324,28 @@ const VviinnSelectedFilters = class {
1352
1324
  });
1353
1325
  });
1354
1326
  }
1355
- setIntervalFilterLabel(filter, interval) {
1356
- var _a;
1357
- const label = index$1.getIntervalLabel(filter, interval, (_a = this.currencySign) !== null && _a !== void 0 ? _a : store.defaultConfig.currencySign, true);
1358
- if (label) {
1359
- this.intervalCustomFilters = Object.assign(Object.assign({}, this.intervalCustomFilters), { [filter.column]: label });
1360
- }
1361
- else {
1362
- const _b = this.intervalCustomFilters, _c = filter.column, remaining = __rest$1(_b, [typeof _c === "symbol" ? _c : _c + ""]);
1363
- this.intervalCustomFilters = remaining;
1364
- }
1365
- }
1366
- syncPreselectedIntervalFilter(filter) {
1327
+ /** A chip exists only while the column has an applied interval to show. */
1328
+ collectIntervalButton(filter) {
1367
1329
  var _a;
1368
- if (this.intervalCustomFilters[filter.column])
1330
+ const applied = index$1.getSelectedInterval(this.requestFilters, filter.column);
1331
+ if (!applied)
1369
1332
  return;
1370
- const matchingRequest = this.requestFilters.find((rf) => rf.column === filter.column);
1371
- if (!((_a = matchingRequest === null || matchingRequest === void 0 ? void 0 : matchingRequest.values) === null || _a === void 0 ? void 0 : _a.length))
1333
+ const label = index$1.getIntervalLabel(filter, applied, (_a = this.currencySign) !== null && _a !== void 0 ? _a : store.defaultConfig.currencySign, true);
1334
+ if (!label)
1372
1335
  return;
1373
- this.setIntervalFilterLabel(filter, matchingRequest.values[0]);
1336
+ const { column } = filter;
1337
+ this.intervalFilterButtons.push(index.h("div", { key: column }, RenderCustomButton({
1338
+ label,
1339
+ buttonType: "range",
1340
+ onClick: () => this.handleIntervalButtonClick(column),
1341
+ })));
1374
1342
  }
1375
1343
  render() {
1376
1344
  var _a, _b;
1377
1345
  if (this.showInWidget &&
1378
1346
  !this.selectedFilterButtons.length &&
1379
1347
  !this.state.croppedImageUrl &&
1380
- !Object.keys(this.intervalCustomFilters).length)
1348
+ !this.intervalFilterButtons.length)
1381
1349
  return null;
1382
1350
  return (index.h(index.Host, { class: {
1383
1351
  "show-in-widget": this.showInWidget,
@@ -1399,14 +1367,7 @@ const VviinnSelectedFilters = class {
1399
1367
  imageSrc: this.state.croppedImageUrl,
1400
1368
  onClick: this.handleCropButtonClick,
1401
1369
  hidden: !this.state.searchArea,
1402
- }), Object.entries(this.intervalCustomFilters)
1403
- .filter(([, label]) => label && label.trim().length > 0)
1404
- .map(([column, label]) => (index.h("div", { key: column }, RenderCustomButton({
1405
- label,
1406
- buttonType: "range",
1407
- onClick: () => this.handleIntervalButtonClick(column),
1408
- hidden: false,
1409
- })))), this.selectedFilterButtons))));
1370
+ }), this.intervalFilterButtons, this.selectedFilterButtons))));
1410
1371
  }
1411
1372
  get el() { return index.getElement(this); }
1412
1373
  };
@@ -1971,6 +1932,8 @@ const VviinnVpsWidget = class {
1971
1932
  this.textSearchShow = false;
1972
1933
  /** Show auto-suggest dropdown with search completions */
1973
1934
  this.autoSuggestShow = true;
1935
+ /** Show the AI Suggestions block in search results */
1936
+ this.aiSuggestionsShow = false;
1974
1937
  /** Show or hide Add to Basket buttons */
1975
1938
  this.addToBasketShow = false;
1976
1939
  /** Show or hide Favorite button */
@@ -2361,31 +2324,31 @@ const VviinnVpsWidget = class {
2361
2324
  }
2362
2325
  render() {
2363
2326
  var _a, _b, _c;
2364
- return (index.h(index.Host, { key: '3d819edc5b1a3ce7fc05d343f80775a425077d26', exportparts: `${index$3.modalParts}, ${index$3.productCardParts}, ${index$3.searchBarParts}, ${index$3.searchWidgetFilterParts}, ${index$3.searchWidgetButtonParts}, ${index$3.productCardsGridPart}, ${index$3.suggestionsParts}` }, cssUrlHelper.renderExternalCSS(this.cssUrl), !this.showingInButton && index$2.SlotSkeleton("search"), index.h("vviinn-overlayed-modal", { key: '48a8934f201007aacb83a1436ceee773bc4e64c1', class: { "first-screen": this.isOnboardingSlide() }, isFirstScreen: this.isOnboardingSlide(), active: this.active, resetState: this.resetState, onVviinnWidgetClose: ({ detail }) => {
2327
+ return (index.h(index.Host, { key: 'd79306eb4cf7c484403b5587dac221532c7da37e', exportparts: `${index$3.modalParts}, ${index$3.productCardParts}, ${index$3.searchBarParts}, ${index$3.searchWidgetFilterParts}, ${index$3.searchWidgetButtonParts}, ${index$3.productCardsGridPart}, ${index$3.suggestionsParts}` }, cssUrlHelper.renderExternalCSS(this.cssUrl), !this.showingInButton && index$2.SlotSkeleton("search"), index.h("vviinn-overlayed-modal", { key: '70e30661af45fac8f776eb446eb0136f2d44cfc0', class: { "first-screen": this.isOnboardingSlide() }, isFirstScreen: this.isOnboardingSlide(), active: this.active, resetState: this.resetState, onVviinnWidgetClose: ({ detail }) => {
2365
2328
  if (detail.campaignTypeId !== "VPR")
2366
2329
  this.handleModalClose();
2367
2330
  }, buttonElementId: (_a = this.buttonElementId) !== null && _a !== void 0 ? _a : this.widgetElementId, widgetVersion: search_store.version, hideBackButton: this.mode === "upload" ||
2368
- (!this.isCameraEnabled && this.isOnboardingSlide()) }, index.h("vviinn-slider", { key: '2e010cd695fe00d065766973467d1eb59771a803', position: this.slidePosition }, index.h("vviinn-slide", { key: '71b5c21bbc37d62500ae28f5070d4ab98ab08663', class: {
2331
+ (!this.isCameraEnabled && this.isOnboardingSlide()) }, index.h("vviinn-slider", { key: 'c47f0a1bd4c657941ffdb8009bfe7a73412e8876', position: this.slidePosition }, index.h("vviinn-slide", { key: '8398f0a0e630afe2923973a8f993903b34ca1195', class: {
2369
2332
  "start-page": true,
2370
2333
  "camera-enabled": this.isCameraEnabled,
2371
- } }, index.h("vviinn-camera", { key: 'f26d9576c072b36cfbe7594deae56388dec592bb', token: this.token, onVviinnImageUploadFinished: ({ detail }) => this.handleVviinnImageUploadFinished(detail), onVviinnImageUploadStarted: () => {
2334
+ } }, index.h("vviinn-camera", { key: '25bdee7a59883a17d04c9cc28b794c871b119a96', token: this.token, onVviinnImageUploadFinished: ({ detail }) => this.handleVviinnImageUploadFinished(detail), onVviinnImageUploadStarted: () => {
2372
2335
  this.handleVviinnImageUpload("startCamera");
2373
- }, apiPath: this.apiPath, basicEventData: this.getBasicEventData(), srcObject: this.stream, cameraButtonClicked: this.isCameraButtonClicked, exampleImageSource: this.exampleImageSource, showInWidget: this.showInWidget, storeName: this.storeName, state: this.state }), index.h("div", { key: '475765308993fd599a6064fde186793059eb9069', class: {
2336
+ }, apiPath: this.apiPath, basicEventData: this.getBasicEventData(), srcObject: this.stream, cameraButtonClicked: this.isCameraButtonClicked, exampleImageSource: this.exampleImageSource, showInWidget: this.showInWidget, storeName: this.storeName, state: this.state }), index.h("div", { key: 'fcde8a97a54a15d84b2c0be4e6e9994847130e20', class: {
2374
2337
  error: this.haveErrors(),
2375
- }, id: "start-page_block" }, index.h("div", { key: '1c3e3a20caa40a360e7133a300f36a138e09cb4e', class: "start-page_main-content" }, (this.wrongImageFormat ||
2376
- this.state.searchStatus === "error") && (index.h("div", { key: 'aed26307e98322b8355dc58f19f51079eb8f5939', class: "start-page_errors-block" }, this.getCurrentErrorType() && (index.h("vviinn-error", { key: 'af8b068c7ab554f66565e445a2562e5de1b1e70b', errorType: this.getCurrentErrorType(), handler: this.resetState, hasBackground: true, searchType: this.state.searchType })))), !this.haveErrors() && (index.h(index.Fragment, { key: 'ff464606d3447e0feab7690c4aaffa1389adea38' }, index.h("vviinn-teaser", { key: '91043f95623cae0f7f39902612ea8e4056361c44' }), index.h("div", { key: '83bf07377aabb98372a5688b51b8fd92328c9ba2', class: "buttons-group" }, this.renderButtons()), this.textSearchShow && !this.isResultSlide() && (index.h("vviinn-text-search", { key: 'e0a766d21276ecca7d075ff9fef2aa7ba0ebfc93', token: this.token, apiPath: this.apiPath, locale: this.locale, showInWidget: this.showInWidget, showOnFirstScreen: true, uiSessionId: this.uiSessionId, basicEventData: this.getBasicEventData(true), resultsPageUrl: this.resultsPageUrl, autoSuggestShow: this.autoSuggestShow, "save-image-mode": "never" }))))), index.h("vviinn-privacy-badge", { key: 'be525a2dc35924de5c73275939b61fc474fe0ce0', privacyBadgeText: store.instance.t("privacyBadgeText", {
2338
+ }, id: "start-page_block" }, index.h("div", { key: 'acf4f8245211ce57f869d36561e083986b5fd9bd', class: "start-page_main-content" }, (this.wrongImageFormat ||
2339
+ this.state.searchStatus === "error") && (index.h("div", { key: '6f99d30394de07dceed01a160611446efc444c95', class: "start-page_errors-block" }, this.getCurrentErrorType() && (index.h("vviinn-error", { key: '3cd02538fc72daa5ac43e9084bf9eaa5efa0b55d', errorType: this.getCurrentErrorType(), handler: this.resetState, hasBackground: true, searchType: this.state.searchType })))), !this.haveErrors() && (index.h(index.Fragment, { key: '1511b354925b6c6abbcecb4d57f5ddac75c90e8c' }, index.h("vviinn-teaser", { key: 'e1ad2a906f3e13434fb225d4ba17601ceb23270b' }), index.h("div", { key: '2e32de8212b16b0fe7906effb10f11d06956a6ea', class: "buttons-group" }, this.renderButtons()), this.textSearchShow && !this.isResultSlide() && (index.h("vviinn-text-search", { key: '2a71c25140fbeb845efb884f972a3e4440f0fd1c', token: this.token, apiPath: this.apiPath, locale: this.locale, showInWidget: this.showInWidget, showOnFirstScreen: true, uiSessionId: this.uiSessionId, basicEventData: this.getBasicEventData(true), resultsPageUrl: this.resultsPageUrl, autoSuggestShow: this.autoSuggestShow, "save-image-mode": "never" }))))), index.h("vviinn-privacy-badge", { key: '6b14ff1b00f8bb94ee70bc6e306b7f8886ce8f44', privacyBadgeText: store.instance.t("privacyBadgeText", {
2377
2340
  interpolation: { escapeValue: false },
2378
- }), class: { invisible: this.haveErrors() } }))), index.h("vviinn-slide", { key: '73565ad9d70d0fa39bc7031a3cc0af988e70eb64', class: {
2341
+ }), class: { invisible: this.haveErrors() } }))), index.h("vviinn-slide", { key: '20bd718a2de535d8e8ed4ca92fe3afc2fea0c9b1', class: {
2379
2342
  "results-page": true,
2380
2343
  active: this.isResultSlide(),
2381
- } }, this.isResultSlide() && (index.h("div", { key: '439495970eb510e757737be0b95b8e6431ec705a', class: "source-wrapper" }, this.isTextSearch() && (index.h("vviinn-text-search", { key: '8bc91e68349913cb9eda6e6166825f32d7afeb5f', token: this.token, showInWidget: this.showInWidget, apiPath: this.apiPath, locale: this.locale, uiSessionId: this.uiSessionId, basicEventData: this.getBasicEventData(true), resultsPageUrl: this.resultsPageUrl, autoSuggestShow: this.autoSuggestShow, "save-image-mode": "never" })), !this.isTextSearch() && (index.h("vviinn-cropper", { key: 'bdf8e645e389c39947ece8c0576adea23e40d80d', token: this.token, basicEventData: this.getBasicEventData(), showAspectRatioError: this.showAspectRatioError, apiPath: this.apiPath, showInWidget: this.showInWidget, "save-image-mode": "never" })), index.h("vviinn-suggestions", { key: '5088ac4c87e0351f39743484b717b2233d1cd6cc', showInWidget: this.showInWidget, token: this.token, apiPath: this.apiPath, locale: this.locale }), index.h("vviinn-selected-filters", { key: '64b97e027404482d52003d6fff076779d585f90e', locale: this.locale, currencySign: this.currencySign, showInWidget: this.showInWidget, exportparts: index$3.filtersParts }), ((_b = this.state.dynamicFilters) === null || _b === void 0 ? void 0 : _b.length) > 0 && (index.h("div", { key: '08dc0f036a9e27a62e688389118664ec6d38f5fe', class: {
2344
+ } }, this.isResultSlide() && (index.h("div", { key: '577a489873baa28d60e96b50636e303e18368e14', class: "source-wrapper" }, this.isTextSearch() && (index.h("vviinn-text-search", { key: 'be449f7a9efde8363e1c56b1409a7fd4b64c795a', token: this.token, showInWidget: this.showInWidget, apiPath: this.apiPath, locale: this.locale, uiSessionId: this.uiSessionId, basicEventData: this.getBasicEventData(true), resultsPageUrl: this.resultsPageUrl, autoSuggestShow: this.autoSuggestShow, "save-image-mode": "never" })), !this.isTextSearch() && (index.h("vviinn-cropper", { key: 'd9475b0073162b38ae7bff8ce0045fb986e14e1e', token: this.token, basicEventData: this.getBasicEventData(), showAspectRatioError: this.showAspectRatioError, apiPath: this.apiPath, showInWidget: this.showInWidget, "save-image-mode": "never" })), this.aiSuggestionsShow && (index.h("vviinn-suggestions", { key: '424f0c7eff025eb41b04ea3da7ed69f3b83c6f3b', showInWidget: this.showInWidget, token: this.token, apiPath: this.apiPath, locale: this.locale })), index.h("vviinn-selected-filters", { key: 'cd3a55ff971bc914c463496c73ee2ca33612005d', locale: this.locale, currencySign: this.currencySign, showInWidget: this.showInWidget, exportparts: index$3.filtersParts }), ((_b = this.state.dynamicFilters) === null || _b === void 0 ? void 0 : _b.length) > 0 && (index.h("div", { key: '4f8cb08a0e194a851608718532fadb368d8d1b38', class: {
2382
2345
  "filters-wrapper": true,
2383
2346
  hidden: this.showAspectRatioError,
2384
- } }, index.h("vviinn-filters", { key: '0e0634bc3963b7f87e19fa5ef9814d1206368e5f', showInWidget: this.showInWidget, showIntervalInputs: this.showIntervalInputs }), index.h("vviinn-extended-filters", { key: 'a12da4af4e2922904bc3acbaae517c5268385b61', mode: "preview", showHeader: false, showInWidget: this.showInWidget, locale: this.locale, currencySign: this.currencySign, showIntervalInputs: this.showIntervalInputs }), index.h("vviinn-extended-filters-button", { key: '63ed9c068918f1915a84ab90af1a0d2e6eccd596', class: {
2347
+ } }, index.h("vviinn-filters", { key: '0aa6c31398f54e693639c79d5e53c4a27691bc39', showInWidget: this.showInWidget, showIntervalInputs: this.showIntervalInputs }), index.h("vviinn-extended-filters", { key: '40c854248748e036608750617ef9e1d7588697cf', mode: "preview", showHeader: false, showInWidget: this.showInWidget, locale: this.locale, currencySign: this.currencySign, showIntervalInputs: this.showIntervalInputs }), index.h("vviinn-extended-filters-button", { key: 'e4d1c272cf171d194f554ee41736e82c5c62a691', class: {
2385
2348
  "extended-filters-button": true,
2386
2349
  "has-primary-filters": this.state.dynamicFilters.filter((f) => f.isPrimary)
2387
2350
  .length > 0,
2388
- }, showInWidget: this.showInWidget }))))), this.isResultSlide() && (index.h(index.Fragment, { key: 'f82ea6c8e9009241f94f70ec9512ede273db9052' }, index.h("vviinn-results", { key: '422e0d0c3b7f93bab6f6581a7c352107774f6c87', token: this.token, locale: this.locale, numberLocale: this.numberLocale, pricePrefix: this.pricePrefix, "currency-sign": this.currencySign, apiPath: this.apiPath, campaignIdTextSearch: this.campaignIdTextSearch, campaignIdVisualSearch: this.campaignIdVisualSearch, uiSessionId: this.uiSessionId, widgetElementId: (_c = this.buttonElementId) !== null && _c !== void 0 ? _c : this.widgetElementId, showInWidget: this.showInWidget, buttonElementId: this.buttonElementId, imageResolutionWidth: this.imageResolutionWidth, showMultipleImages: this.showMultipleImages, productDetailsNewTab: this.productDetailsNewTab, productDetailsRedirect: this.productDetailsRedirect, addToBasketShow: this.addToBasketShow, favoriteShow: this.favoriteShow, showAspectRatioError: this.showAspectRatioError, resetWidgetState: this.resetState, replaceSlotsContentInWidget: this.replaceSlotsContent.bind(this), replaceSlotsContentInButton: this.replaceSlotsContentInButton, addPriceContainer: this.addPriceContainer, oneClickDiscoveryMode: this.oneClickDiscoveryMode, oneClickDiscoveryCampaigns: this.oneClickDiscoveryCampaigns, parentSlots: [...this.parentSlots, ...this.slots], scrollableModalBody: this.modalBody }))))), index.h("vviinn-extended-filters", { key: '203270237562c97f144ccce3ba364893a1ecafd5', class: "modal-extended-filters", mode: "modal", exportparts: index$3.extendedFiltersParts, showInWidget: this.showInWidget, locale: this.locale, currencySign: this.currencySign, showIntervalInputs: this.showIntervalInputs }))));
2351
+ }, showInWidget: this.showInWidget }))))), this.isResultSlide() && (index.h(index.Fragment, { key: 'a0cc79b0dc213054f60dd2568505df908e7db2fb' }, index.h("vviinn-results", { key: '31c64af7b4c366b41f824ac15a8defad619a6d5c', token: this.token, locale: this.locale, numberLocale: this.numberLocale, pricePrefix: this.pricePrefix, "currency-sign": this.currencySign, apiPath: this.apiPath, campaignIdTextSearch: this.campaignIdTextSearch, campaignIdVisualSearch: this.campaignIdVisualSearch, uiSessionId: this.uiSessionId, widgetElementId: (_c = this.buttonElementId) !== null && _c !== void 0 ? _c : this.widgetElementId, showInWidget: this.showInWidget, buttonElementId: this.buttonElementId, imageResolutionWidth: this.imageResolutionWidth, showMultipleImages: this.showMultipleImages, productDetailsNewTab: this.productDetailsNewTab, productDetailsRedirect: this.productDetailsRedirect, addToBasketShow: this.addToBasketShow, favoriteShow: this.favoriteShow, showAspectRatioError: this.showAspectRatioError, resetWidgetState: this.resetState, replaceSlotsContentInWidget: this.replaceSlotsContent.bind(this), replaceSlotsContentInButton: this.replaceSlotsContentInButton, addPriceContainer: this.addPriceContainer, oneClickDiscoveryMode: this.oneClickDiscoveryMode, oneClickDiscoveryCampaigns: this.oneClickDiscoveryCampaigns, parentSlots: [...this.parentSlots, ...this.slots], scrollableModalBody: this.modalBody }))))), index.h("vviinn-extended-filters", { key: '67dfa83b2b543cda3c595cda1ca226bccfb6bbb2', class: "modal-extended-filters", mode: "modal", exportparts: index$3.extendedFiltersParts, showInWidget: this.showInWidget, locale: this.locale, currencySign: this.currencySign, showIntervalInputs: this.showIntervalInputs }))));
2389
2352
  }
2390
2353
  get el() { return index.getElement(this); }
2391
2354
  static get watchers() { return {
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-BU8FMTXn.js');
4
- var search_store = require('./search.store-Bh2_GSpU.js');
4
+ var search_store = require('./search.store-BOJh7lOl.js');
5
5
  var Rectangle = require('./Rectangle-7dF6_xf3.js');
6
6
  var store = require('./store-jPZ4ROqV.js');
7
- var index$1 = require('./index-DZw3p4dq.js');
7
+ var index$1 = require('./index-DJP-DLP2.js');
8
8
  var constants = require('./constants-BlwqMvns.js');
9
9
  var index$2 = require('./index-CP1QUrJT.js');
10
10
  var index$3 = require('./index-BF9aENF8.js');
@@ -620,11 +620,6 @@ const getFilterOptions = (filter) => {
620
620
  : [];
621
621
  };
622
622
 
623
- const getSelectedInterval = (requestFilters, column) => {
624
- const intervalFilter = requestFilters.find((filter) => filter.column === column);
625
- return intervalFilter === null || intervalFilter === void 0 ? void 0 : intervalFilter.values[0];
626
- };
627
-
628
623
  const RenderSearchInput = ({ searchTerm, onSearchInput, placeholder = "Start Search...", iconSlot, }) => (index.h("div", { class: "filters-search-input-container", part: "filters-search-input-container" },
629
624
  index.h("div", { class: "filters-search-icon", part: "filters-search-icon" },
630
625
  index.h("slot", { name: "vviinn-filters-search-icon" }, iconSlot || index.h(SearchIcon, null))),
@@ -854,8 +849,8 @@ const VviinnExtendedFilters = class {
854
849
  searchTerm: this.searchTerm,
855
850
  onSearchInput: this.handleSearchInput,
856
851
  placeholder: store.instance.t("filters.search.placeholder"),
857
- }), index.h("ul", { class: "filters-modal-sub-list", part: "extended-filters-sub-list" }, mainFilter.type === "interval" ? (index.h("vviinn-range-filter", { histogram: filterOptions, intervalChangeHandler: (filterValue) => this.intervalFilterChangeHandler(filterValue, mainFilter.column), selectedInterval: getSelectedInterval(this.requestFilters, mainFilter.column), showCurrency: index$1.isPriceFilter(mainFilter.column), currencySign: this.currencySign, showIntervalInputs: this.showIntervalInputs })) : (this.renderFilterOptions(mainFilter, filterOptions))))) : null)));
858
- }))), (filters === null || filters === void 0 ? void 0 : filters.length) > 0 && (index.h("div", { class: "filters-modal-actions", part: "extended-filters-actions" }, this.mode === "button" && (index.h("button", { class: "filters-modal-apply", onClick: () => (this.showMore = false), disabled: this.requestFilters.length === 0, part: "extended-filters-apply", type: "button" }, index.h("slot", { name: "vviinn-extended-filters-apply" }, store.instance.t("filters.modal.apply")))), index.h("button", { class: "filters-modal-reset", onClick: this.resetModal, part: "extended-filters-reset", type: "button" }, index.h("slot", { name: "vviinn-extended-filters-reset" }, store.instance.t("filters.modal.resetFilters")))))))));
852
+ }), index.h("ul", { class: "filters-modal-sub-list", part: "extended-filters-sub-list" }, mainFilter.type === "interval" ? (index.h("vviinn-range-filter", { histogram: filterOptions, intervalChangeHandler: (filterValue) => this.intervalFilterChangeHandler(filterValue, mainFilter.column), selectedInterval: index$1.getSelectedInterval(this.requestFilters, mainFilter.column), showCurrency: index$1.isPriceFilter(mainFilter.column), currencySign: this.currencySign, showIntervalInputs: this.showIntervalInputs })) : (this.renderFilterOptions(mainFilter, filterOptions))))) : null)));
853
+ }))), (filters === null || filters === void 0 ? void 0 : filters.length) > 0 && (index.h("div", { class: "filters-modal-actions", part: "extended-filters-actions" }, this.mode === "button" && (index.h("button", { class: "filters-modal-apply", onClick: this.handleCloseModal, disabled: this.requestFilters.length === 0, part: "extended-filters-apply", type: "button" }, index.h("slot", { name: "vviinn-extended-filters-apply" }, store.instance.t("filters.modal.apply")))), index.h("button", { class: "filters-modal-reset", onClick: this.resetModal, part: "extended-filters-reset", type: "button" }, index.h("slot", { name: "vviinn-extended-filters-reset" }, store.instance.t("filters.modal.resetFilters")))))))));
859
854
  }
860
855
  renderFilterOptions(filter, filterOptions) {
861
856
  const { column: filterColumn } = filter;
@@ -925,7 +920,7 @@ const VviinnExtendedFilters = class {
925
920
  const { state, onChange } = search_store.useSearchStore(this.showInWidget);
926
921
  this.state = state;
927
922
  this.isPreviewInlineMode = this.mode === "preview-inline";
928
- index$1.syncRequestFilters(state, onChange, (filters) => (this.requestFilters = filters));
923
+ this.disposeStoreListener = index$1.syncRequestFilters(state, onChange, (filters) => (this.requestFilters = filters));
929
924
  this.eventAbortController = new AbortController();
930
925
  const { signal } = this.eventAbortController;
931
926
  index$2.addEventListenersWithSignal(document, [
@@ -943,8 +938,9 @@ const VviinnExtendedFilters = class {
943
938
  this.filtersStringWatcher();
944
939
  }
945
940
  disconnectedCallback() {
946
- var _a;
941
+ var _a, _b;
947
942
  (_a = this.eventAbortController) === null || _a === void 0 ? void 0 : _a.abort();
943
+ (_b = this.disposeStoreListener) === null || _b === void 0 ? void 0 : _b.call(this);
948
944
  }
949
945
  applyModalPositioning(event) {
950
946
  const button = event.target;
@@ -973,9 +969,9 @@ const VviinnExtendedFilters = class {
973
969
  }
974
970
  render() {
975
971
  const filters = this.getFilters();
976
- return (index.h(index.Host, { key: 'f2f23f0f4e997ff8ec7b00a96a84ba4ea18f5d3f', class: {
972
+ return (index.h(index.Host, { key: '17dffe40a2006c10422b01a5eacef821fc4eac3e', class: {
977
973
  "show-in-widget": this.showInWidget,
978
- }, exportParts: index$3.extendedFiltersParts }, index.h("div", { key: '57de996421fe25deb1cc484bc0ea2598e7dfb3c1', ref: (el) => (this.filterAnnouncementRef = el), "aria-live": "polite", class: "sr-only" }), index$2.SlotSkeleton("filters"), (filters === null || filters === void 0 ? void 0 : filters.length) > 0 && this.mode === "button" && (index.h("vviinn-extended-filters-button", { key: '0219f9a675885f280eb93cbaab4fb426af18e029' })), this.renderModal(filters)));
974
+ }, exportParts: index$3.extendedFiltersParts }, index.h("div", { key: '64d4df4b93d375d7ed234c61953d5dce525c50c9', ref: (el) => (this.filterAnnouncementRef = el), "aria-live": "polite", class: "sr-only" }), index$2.SlotSkeleton("filters"), (filters === null || filters === void 0 ? void 0 : filters.length) > 0 && this.mode === "button" && (index.h("vviinn-extended-filters-button", { key: '5c22262743a77599189da5e205d1f254462967dc' })), this.renderModal(filters)));
979
975
  }
980
976
  get el() { return index.getElement(this); }
981
977
  static get watchers() { return {
@@ -1105,7 +1101,7 @@ const VviinnFilters = class {
1105
1101
  connectedCallback() {
1106
1102
  const { state, onChange } = search_store.useSearchStore(this.showInWidget);
1107
1103
  this.state = state;
1108
- index$1.syncRequestFilters(state, onChange, (filters) => (this.requestFilters = filters));
1104
+ this.disposeStoreListener = index$1.syncRequestFilters(state, onChange, (filters) => (this.requestFilters = filters));
1109
1105
  this.eventAbortController = new AbortController();
1110
1106
  const { signal } = this.eventAbortController;
1111
1107
  index$2.addEventListenersWithSignal(document, [
@@ -1122,8 +1118,9 @@ const VviinnFilters = class {
1122
1118
  this.replaceSlotsContent();
1123
1119
  }
1124
1120
  disconnectedCallback() {
1125
- var _a;
1121
+ var _a, _b;
1126
1122
  (_a = this.eventAbortController) === null || _a === void 0 ? void 0 : _a.abort();
1123
+ (_b = this.disposeStoreListener) === null || _b === void 0 ? void 0 : _b.call(this);
1127
1124
  }
1128
1125
  replaceSlotsContent() {
1129
1126
  const slots = this.el.querySelectorAll("[slot]");
@@ -1136,17 +1133,17 @@ const VviinnFilters = class {
1136
1133
  const filters = this.getFilters().filter((filter) => filter.isPrimary);
1137
1134
  const { selectedFilter, handleSubFilterSelection } = this;
1138
1135
  const filterOptions = getFilterOptions(selectedFilter);
1139
- return (index.h(index.Host, { key: '43ca9aa547e2436a198c6b98599edc256ead2908', class: {
1136
+ return (index.h(index.Host, { key: 'ba3369b4a89acb5202a634d224896bcf30889c76', class: {
1140
1137
  "show-in-widget": this.showInWidget,
1141
1138
  "primary-filters": true,
1142
- }, onKeyDown: this.handleKeyDown, exportparts: index$3.filtersParts }, index$2.SlotSkeleton("filters"), index.h("div", { key: 'cbc3b18419bd5797c97270e7104c723a08185750', ref: (el) => (this.filterAnnouncementRef = el), "aria-live": "polite", class: "sr-only" }), (filters === null || filters === void 0 ? void 0 : filters.length) > 0 && (index.h("nav", { key: '1d879a02b353b8e11dc633d634012b254385488d', "aria-label": store.instance.t("a11y.productFilters") }, index.h("ul", { key: '2487026565e1f54ea19359a4a710d477c26ef4ff', class: "main-filters-list", part: "filters-list" }, filters.map((filter) => {
1139
+ }, onKeyDown: this.handleKeyDown, exportparts: index$3.filtersParts }, index$2.SlotSkeleton("filters"), index.h("div", { key: '5b3b189ce56c3fc31a1fcc6acc542ff9363c203d', ref: (el) => (this.filterAnnouncementRef = el), "aria-live": "polite", class: "sr-only" }), (filters === null || filters === void 0 ? void 0 : filters.length) > 0 && (index.h("nav", { key: 'd93428343a6f7b6959abc6fe834795a0cc2016aa', "aria-label": store.instance.t("a11y.productFilters") }, index.h("ul", { key: '7c19a7f68d2d827237899a71a40fffb859c8e6c6', class: "main-filters-list", part: "filters-list" }, filters.map((filter) => {
1143
1140
  const isExpanded = this.selectedFilterColumn === filter.column;
1144
1141
  return (index.h("li", null, index.h("button", { class: `filters-main-button ${this.showActiveOnMainButton(filter)}`, onClick: () => this.handleMainFilterSelection(filter), part: "filters-main-button", "aria-expanded": isExpanded ? "true" : "false", "aria-label": store.instance.t("a11y.filterButton", {
1145
1142
  label: filter.label,
1146
1143
  }), type: "button" }, filter.label)));
1147
- })))), !!selectedFilter && selectedFilter.isPrimary && (index.h("section", { key: '1b54108c059e98426e83bfeac574be5ae5143504', class: "filters-footer", part: "filters-footer", "aria-label": store.instance.t("a11y.filterOptions", {
1144
+ })))), !!selectedFilter && selectedFilter.isPrimary && (index.h("section", { key: 'efc6fa873255b1998f82eb161ca79557a5b3338e', class: "filters-footer", part: "filters-footer", "aria-label": store.instance.t("a11y.filterOptions", {
1148
1145
  label: selectedFilter.label,
1149
- }) }, (selectedFilter === null || selectedFilter === void 0 ? void 0 : selectedFilter.type) === "interval" ? (index.h("vviinn-range-filter", { histogram: filterOptions, intervalChangeHandler: this.intervalChangeHandler, selectedInterval: getSelectedInterval(this.requestFilters, selectedFilter.column), showCurrency: index$1.isPriceFilter(selectedFilter.column), showIntervalInputs: this.showIntervalInputs })) : (index.h("ul", { class: "sub-filters-wrapper", part: "filters-footer-list" }, !!filterOptions &&
1146
+ }) }, (selectedFilter === null || selectedFilter === void 0 ? void 0 : selectedFilter.type) === "interval" ? (index.h("vviinn-range-filter", { histogram: filterOptions, intervalChangeHandler: this.intervalChangeHandler, selectedInterval: index$1.getSelectedInterval(this.requestFilters, selectedFilter.column), showCurrency: index$1.isPriceFilter(selectedFilter.column), showIntervalInputs: this.showIntervalInputs })) : (index.h("ul", { class: "sub-filters-wrapper", part: "filters-footer-list" }, !!filterOptions &&
1150
1147
  filterOptions.map(({ value, label, active }) => {
1151
1148
  const isSelected = index$1.isSubFilterActive(this.requestFilters, value, selectedFilter);
1152
1149
  return index$1.RenderFilterButton({
@@ -4,7 +4,7 @@ var index = require('./index-BU8FMTXn.js');
4
4
  var Rectangle = require('./Rectangle-7dF6_xf3.js');
5
5
  var cropperUtils = require('./cropperUtils-DCDOLeBS.js');
6
6
  var swiperElement = require('./swiper-element-DjtzojCR.js');
7
- var search_store = require('./search.store-Bh2_GSpU.js');
7
+ var search_store = require('./search.store-BOJh7lOl.js');
8
8
  var SecondaryActionIcon = require('./SecondaryActionIcon-CuNEBTWD.js');
9
9
  var index$1 = require('./index-BF9aENF8.js');
10
10
  var store = require('./store-jPZ4ROqV.js');
@@ -246,7 +246,7 @@ const handleDetectedObjectClick = async (params) => {
246
246
  return Rectangle.EitherExports.left("Image element is missing");
247
247
  }
248
248
  search_store.shopTheLookState.searchArea = detectedObject;
249
- const result = await search_store.makeVisualSearchRequest("shopTheLook", visualSearchId || null, token, apiPath, campaignId);
249
+ const result = await search_store.makeVisualSearchRequest("shopTheLook", visualSearchId || null, token, { apiPath, campaignId });
250
250
  return Rectangle.EitherExports.fold((error) => Rectangle.EitherExports.left(`Visual search failed: ${error.inner}`), (searchResponse) => {
251
251
  var _a;
252
252
  const searchResults = ((_a = searchResponse.data) === null || _a === void 0 ? void 0 : _a.products) || [];
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-BU8FMTXn.js');
4
4
  var Rectangle = require('./Rectangle-7dF6_xf3.js');
5
- var search_store = require('./search.store-Bh2_GSpU.js');
5
+ var search_store = require('./search.store-BOJh7lOl.js');
6
6
  var index$2 = require('./index-CP1QUrJT.js');
7
7
  var store = require('./store-jPZ4ROqV.js');
8
8
  var index$1 = require('./index-BF9aENF8.js');