vviinn-widgets 2.227.2 → 2.228.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{Rectangle-H07XTbBV.js → Rectangle-DinN49mM.js} +4 -4
- package/dist/cjs/{SecondaryActionIcon-CuF0tHdQ.js → SecondaryActionIcon-BQQSiu4l.js} +4 -4
- package/dist/cjs/{app-globals-BQtOMRsH.js → app-globals-Dsf0-KhR.js} +3 -3
- package/dist/cjs/{cropperUtils-CwfFUt0o.js → cropperUtils-BvOSGX5o.js} +4 -4
- package/dist/cjs/{cssUrlHelper-CVKCRIcH.js → cssUrlHelper-p1-rqffJ.js} +4 -4
- package/dist/cjs/{exampleImage-CI2pSgNo.js → exampleImage-CYwUKSC-.js} +3 -3
- package/dist/cjs/{index-H0WaGD9i.js → index-CKBtW9d_.js} +4 -4
- package/dist/cjs/{index-CKUxPZjt.js → index-CYFe3MRy.js} +4 -4
- package/dist/cjs/{index-Bbvxilxc.js → index-DpitOw4d.js} +6 -6
- package/dist/cjs/{index-Zfb460O_.js → index-GztLSpRF.js} +3 -3
- package/dist/cjs/index.cjs.js +3 -3
- package/dist/cjs/loader.cjs.js +5 -5
- package/dist/cjs/{openProductLink-piJoG25a.js → openProductLink-B_470PWP.js} +3 -3
- package/dist/cjs/{resultsPageUrl-Dehl_j2Q.js → resultsPageUrl-D20mgtVN.js} +3 -3
- package/dist/cjs/{search.store-DvhlFYrp.js → search.store-BpNip2fa.js} +6 -6
- package/dist/cjs/{store-rzr57Vi7.js → store-ChfojRdy.js} +3 -3
- package/dist/cjs/{swiper-element-0eESZpDs.js → swiper-element-Dkg0-XyQ.js} +3 -3
- package/dist/cjs/vviinn-button_6.cjs.entry.js +12 -12
- package/dist/cjs/vviinn-camera_12.cjs.entry.js +15 -15
- package/dist/cjs/vviinn-carousel_10.cjs.entry.js +21 -13
- package/dist/cjs/vviinn-detected-object_2.cjs.entry.js +6 -6
- package/dist/cjs/vviinn-shop-the-look.cjs.entry.js +13 -13
- package/dist/cjs/vviinn-text-search.cjs.entry.js +10 -10
- package/dist/cjs/vviinn-vps-button.cjs.entry.js +9 -9
- package/dist/cjs/vviinn-widgets.cjs.js +5 -5
- package/dist/collection/Image/bounds.js +3 -3
- package/dist/collection/Image/error.js +3 -3
- package/dist/collection/Image/fromFile.js +3 -3
- package/dist/collection/Image/imageToB64.js +3 -3
- package/dist/collection/Image/index.js +3 -3
- package/dist/collection/Image/renderPromise.js +3 -3
- package/dist/collection/Image/renderTitleImage.js +3 -3
- package/dist/collection/Image/resizeImage.js +3 -3
- package/dist/collection/Image/responsive.js +3 -3
- package/dist/collection/Image/sizing.js +3 -3
- package/dist/collection/Image/toFile.js +3 -3
- package/dist/collection/a11y/announcements.js +3 -3
- package/dist/collection/a11y/aria-labels.js +3 -3
- package/dist/collection/a11y/index.js +3 -3
- package/dist/collection/analytics/GAnalytics.js +3 -3
- package/dist/collection/analytics/GeneralAnalytics.js +3 -3
- package/dist/collection/analytics/GtagAnalytics.js +3 -3
- package/dist/collection/campaign/Campaign.js +3 -3
- package/dist/collection/campaign/CampaignService.js +3 -3
- package/dist/collection/campaign/VCSCampaignService.js +3 -3
- package/dist/collection/campaign/VPRCampaignService.js +3 -3
- package/dist/collection/components/customized-slots.js +3 -3
- package/dist/collection/components/vviinn-button/vviinn-button.js +3 -3
- package/dist/collection/components/vviinn-camera/vviinn-camera.js +3 -3
- package/dist/collection/components/vviinn-carousel/constants.js +3 -3
- package/dist/collection/components/vviinn-carousel/vviinn-carousel.js +3 -3
- package/dist/collection/components/vviinn-cropper/constants.js +3 -3
- package/dist/collection/components/vviinn-cropper/helpers/cropperOcrGate.js +3 -3
- package/dist/collection/components/vviinn-cropper/helpers/cropperUtils.js +3 -3
- package/dist/collection/components/vviinn-cropper/helpers/hasSelectedOcrFilter.js +3 -3
- package/dist/collection/components/vviinn-cropper/helpers/isCropBoxDataSimilar.js +3 -3
- package/dist/collection/components/vviinn-cropper/helpers/validateCropBoxData.js +3 -3
- package/dist/collection/components/vviinn-cropper/vviinn-cropper.js +3 -3
- package/dist/collection/components/vviinn-cropper/vviinn-detected-object/vviinn-detected-object.js +3 -3
- package/dist/collection/components/vviinn-error/index.js +3 -3
- package/dist/collection/components/vviinn-error/vviinn-error.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/RenderCustomButton.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/RenderFilterButton.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/RenderSearchInput.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/extractSelectedFilters.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/filterValueUtils.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/getFilterOptions.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/getIntervalLabel.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/getSelectedInterval.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/index.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/isSubFilterActive.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/modalPositioning.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/searchHelper.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/subFilterSelection.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/syncRequestFilters.js +3 -3
- package/dist/collection/components/vviinn-filters/helpers/triggerFilter.js +3 -3
- package/dist/collection/components/vviinn-filters/vviinn-extended-filters-button.js +3 -3
- package/dist/collection/components/vviinn-filters/vviinn-extended-filters.js +3 -3
- package/dist/collection/components/vviinn-filters/vviinn-filters.js +3 -3
- package/dist/collection/components/vviinn-filters/vviinn-selected-filters.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/ArrowIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/BasketIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/CameraActionIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/CameraIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/CheckCircleIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/ChevronIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/ChevronIconSmall.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/CrossIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/CrossSellingIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/DragDropImageIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/FavoriteIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/FavoriteIconPressed.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/FilterIconCheck.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/FilterIconClose.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/FiltersIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/GridViewIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/ImagePlaceholder.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/MicIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/MinusIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/NewCloseIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/PhotoFrameCorner.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/PlusIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/RoundCameraIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/SearchIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/SearchModalCameraIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/SearchModalFullSearchIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/SearchModalImageSearchIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/SearchModalUploadIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/SecondaryActionIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/SimilarProductsIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/SparkIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/TextIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/TextSearchIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/UpdateIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/UploadActionIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/UploadActionIconVariant.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/VisualSearchIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/icons/WarningIcon.js +3 -3
- package/dist/collection/components/vviinn-icons/index.js +3 -3
- package/dist/collection/components/vviinn-image/vviinn-image.js +3 -3
- package/dist/collection/components/vviinn-image-selector/vviinn-image-selector.js +3 -3
- package/dist/collection/components/vviinn-modal/vviinn-modal.js +3 -3
- package/dist/collection/components/vviinn-overlay/vviinn-overlay.js +3 -3
- package/dist/collection/components/vviinn-overlayed-modal/vviinn-overlayed-modal.js +3 -3
- package/dist/collection/components/vviinn-preloader/vviinn-preloader.js +3 -3
- package/dist/collection/components/vviinn-privacy-badge/vviinn-privacy-badge.js +3 -3
- package/dist/collection/components/vviinn-product-card/helpers.js +3 -3
- package/dist/collection/components/vviinn-product-card/render-helpers.js +3 -3
- package/dist/collection/components/vviinn-product-card/stories/args.js +7 -6
- package/dist/collection/components/vviinn-product-card/stories/decorators.js +10 -7
- package/dist/collection/components/vviinn-product-card/vviinn-energy-label/vviinn-energy-label.js +3 -3
- package/dist/collection/components/vviinn-product-card/vviinn-product-card.js +63 -38
- package/dist/collection/components/vviinn-range-filter/vviinn-range-filter.js +3 -3
- package/dist/collection/components/vviinn-results/stories/ResultsTemplate.js +3 -3
- package/dist/collection/components/vviinn-results/vviinn-results.js +3 -3
- package/dist/collection/components/vviinn-shop-the-look/constants.js +3 -3
- package/dist/collection/components/vviinn-shop-the-look/cropper-manager.js +3 -3
- package/dist/collection/components/vviinn-shop-the-look/helpers.js +3 -3
- package/dist/collection/components/vviinn-shop-the-look/render-helpers.js +3 -3
- package/dist/collection/components/vviinn-shop-the-look/store.js +3 -3
- package/dist/collection/components/vviinn-shop-the-look/test-data.js +3 -3
- package/dist/collection/components/vviinn-shop-the-look/vviinn-shop-the-look.js +3 -3
- package/dist/collection/components/vviinn-skeleton/vviinn-skeleton.js +3 -3
- package/dist/collection/components/vviinn-slider/arrow.js +3 -3
- package/dist/collection/components/vviinn-slider/vviinn-slide/vviinn-slide.js +3 -3
- package/dist/collection/components/vviinn-slider/vviinn-slider.js +3 -3
- package/dist/collection/components/vviinn-suggestions/helpers.js +3 -3
- package/dist/collection/components/vviinn-suggestions/render-helpers.js +3 -3
- package/dist/collection/components/vviinn-suggestions/vviinn-suggestions.js +3 -3
- package/dist/collection/components/vviinn-teaser/vviinn-teaser.js +3 -3
- package/dist/collection/components/vviinn-text-search/helpers/autoSuggestDebounce.js +3 -3
- package/dist/collection/components/vviinn-text-search/helpers/handleSuggestionsKeyDown.js +3 -3
- package/dist/collection/components/vviinn-text-search/helpers/index.js +3 -3
- package/dist/collection/components/vviinn-text-search/helpers/initializeRecognition.js +3 -3
- package/dist/collection/components/vviinn-text-search/helpers/permitSpeechRecognition.js +3 -3
- package/dist/collection/components/vviinn-text-search/helpers/renderSuggestions.js +3 -3
- package/dist/collection/components/vviinn-text-search/helpers/speechTooltip.js +3 -3
- package/dist/collection/components/vviinn-text-search/vviinn-text-search.js +3 -3
- package/dist/collection/components/vviinn-vpr-button/recommendations-sidebar/recommendations-sidebar.js +3 -3
- package/dist/collection/components/vviinn-vpr-button/stories/args.js +3 -3
- package/dist/collection/components/vviinn-vpr-button/vviinn-vpr-button.js +4 -5
- package/dist/collection/components/vviinn-vpr-widget/stories/args.js +3 -3
- package/dist/collection/components/vviinn-vpr-widget/stories/decorators.js +3 -3
- package/dist/collection/components/vviinn-vpr-widget/token-helpers.js +3 -3
- package/dist/collection/components/vviinn-vpr-widget/vviinn-vpr-widget.js +3 -4
- package/dist/collection/components/vviinn-vps-button/vviinn-vps-button.js +3 -3
- package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.js +3 -3
- package/dist/collection/constants/exampleImage.js +3 -3
- package/dist/collection/cssParts/filters.js +3 -3
- package/dist/collection/cssParts/index.js +3 -3
- package/dist/collection/cssParts/product.js +3 -3
- package/dist/collection/cssParts/suggestions.js +3 -3
- package/dist/collection/dom/index.js +3 -3
- package/dist/collection/dom/intersectionObserver.js +3 -3
- package/dist/collection/error.js +3 -3
- package/dist/collection/file/index.js +3 -3
- package/dist/collection/filters/index.js +3 -3
- package/dist/collection/filters/testFixtures.js +3 -3
- package/dist/collection/geometry/Clip.js +3 -3
- package/dist/collection/geometry/Point.js +3 -3
- package/dist/collection/geometry/Rectangle.js +3 -3
- package/dist/collection/geometry/RectangleAlt.js +3 -3
- package/dist/collection/geometry/Sized.js +3 -3
- package/dist/collection/global.js +3 -3
- package/dist/collection/helpers/device/browserType.js +3 -3
- package/dist/collection/helpers/device/checkDeviceType.js +3 -3
- package/dist/collection/helpers/dragAndDrop/parseDroppedFile.js +3 -3
- package/dist/collection/helpers/navigation/openProductLink.js +3 -3
- package/dist/collection/helpers/url/getLastUrlPath.js +3 -3
- package/dist/collection/helpers/url/getLastUrlPath.test.js +3 -3
- package/dist/collection/helpers/url/resultsPageUrl.js +3 -3
- package/dist/collection/helpers/url/resultsPageUrl.test.js +3 -3
- package/dist/collection/index.js +3 -3
- package/dist/collection/interfaces/index.js +3 -3
- package/dist/collection/localStorage/index.js +3 -3
- package/dist/collection/locale/index.js +3 -3
- package/dist/collection/locale/resources.js +3 -3
- package/dist/collection/network/apiClient.js +3 -3
- package/dist/collection/network/request.js +3 -3
- package/dist/collection/network/utils.js +3 -3
- package/dist/collection/openApi/index.js +3 -3
- package/dist/collection/recommendation/index.js +3 -3
- package/dist/collection/searchSession/searchSession.js +3 -3
- package/dist/collection/sentry.js +3 -3
- package/dist/collection/store/file-processing.js +3 -3
- package/dist/collection/store/helpers/applyResponseFilters.js +3 -3
- package/dist/collection/store/helpers/searchSequence.js +3 -3
- package/dist/collection/store/image-processing.js +3 -3
- package/dist/collection/store/search.store.js +3 -3
- package/dist/collection/store/store.js +3 -3
- package/dist/collection/store/tracking.js +3 -3
- package/dist/collection/tracking/event.js +3 -3
- package/dist/collection/tracking/index.js +3 -3
- package/dist/collection/tracking/models.js +3 -3
- package/dist/collection/tracking/searchTracking.js +3 -3
- package/dist/collection/tracking/session.js +3 -3
- package/dist/collection/utils/collections/collectionUtils.test.js +3 -3
- package/dist/collection/utils/collections/collectionsUtils.js +3 -3
- package/dist/collection/utils/cssUrl/cssUrlHelper.js +3 -3
- package/dist/collection/utils/either.js +3 -3
- package/dist/collection/utils/enum/enumUtils.js +3 -3
- package/dist/collection/utils/number/index.js +3 -3
- package/dist/collection/utils/option/option.js +3 -3
- package/dist/collection/utils/semigroup/semigroupDiff.js +3 -3
- package/dist/collection/utils/string/encodeToBase64UTF8.js +3 -3
- package/dist/collection/utils/string/joinTruthy.js +3 -3
- package/dist/collection/utils/string/joinTruthy.test.js +3 -3
- package/dist/collection/utils/swiper/swiperUtils.js +3 -3
- package/dist/collection/utils/token/tokenUtils.js +3 -3
- package/dist/collection/video/settings.js +3 -3
- package/dist/collection/widget/constants.js +3 -3
- package/dist/collection/widget/types.js +3 -3
- package/dist/esm/{Rectangle-B_oG2eyg.js → Rectangle-BMs3A065.js} +4 -4
- package/dist/esm/{SecondaryActionIcon-Diibgish.js → SecondaryActionIcon-cIzfZffD.js} +4 -4
- package/dist/esm/{app-globals-5M4OE8Ib.js → app-globals-BV5YWSPA.js} +3 -3
- package/dist/esm/{cropperUtils-C09kJv1s.js → cropperUtils-DZ9M_qFZ.js} +4 -4
- package/dist/esm/{cssUrlHelper-B9aUpUCs.js → cssUrlHelper-CptdW4AR.js} +4 -4
- package/dist/esm/{exampleImage-Ct4T-m61.js → exampleImage-BexbSTOV.js} +3 -3
- package/dist/esm/{index-DLBHQNOR.js → index-BiBAoYGm.js} +4 -4
- package/dist/esm/{index-DAJ_Vnro.js → index-CbnDh7O4.js} +3 -3
- package/dist/esm/{index-D383RmFU.js → index-DWX7EAOO.js} +4 -4
- package/dist/esm/{index-BTZDkDXn.js → index-DbDBy-BO.js} +6 -6
- package/dist/esm/index.js +3 -3
- package/dist/esm/loader.js +6 -6
- package/dist/esm/{openProductLink-D8wvuxca.js → openProductLink-Bpe4n4Ll.js} +3 -3
- package/dist/esm/{resultsPageUrl-Do7coPt7.js → resultsPageUrl-DQ1zDXdx.js} +3 -3
- package/dist/esm/{search.store-BVrQTC-G.js → search.store-BGZraLoH.js} +6 -6
- package/dist/esm/{store-Dw7Hd5-K.js → store-DgTklFVi.js} +3 -3
- package/dist/esm/{swiper-element-pB8RrHSZ.js → swiper-element-ZqDRXfkq.js} +3 -3
- package/dist/esm/vviinn-button_6.entry.js +12 -12
- package/dist/esm/vviinn-camera_12.entry.js +15 -15
- package/dist/esm/vviinn-carousel_10.entry.js +21 -13
- package/dist/esm/vviinn-detected-object_2.entry.js +6 -6
- package/dist/esm/vviinn-shop-the-look.entry.js +13 -13
- package/dist/esm/vviinn-text-search.entry.js +10 -10
- package/dist/esm/vviinn-vps-button.entry.js +9 -9
- package/dist/esm/vviinn-widgets.js +6 -6
- package/dist/loader/cdn.js +3 -3
- package/dist/loader/index.cjs.js +3 -3
- package/dist/loader/index.es2017.js +3 -3
- package/dist/loader/index.js +3 -3
- package/dist/storybook/helpers/sharedArgTypes.js +3 -3
- package/dist/types/components/vviinn-product-card/stories/args.d.ts +4 -3
- package/dist/types/components/vviinn-product-card/stories/decorators.d.ts +1 -1
- package/dist/types/components/vviinn-product-card/vviinn-product-card.d.ts +52 -12
- package/dist/types/components/vviinn-vpr-button/vviinn-vpr-button.d.ts +0 -1
- package/dist/types/components/vviinn-vpr-widget/vviinn-vpr-widget.d.ts +0 -1
- package/dist/types/components.d.ts +153 -3
- package/dist/vviinn-widgets/index.esm.js +3 -3
- package/dist/vviinn-widgets/{p-160dba84.entry.js → p-33d1e152.entry.js} +4 -4
- package/{www/build/p-CJTKS7AD.js → dist/vviinn-widgets/p-3ovc_cLx.js} +4 -4
- package/{www/build/p-4a8df7a5.entry.js → dist/vviinn-widgets/p-425c7ca3.entry.js} +4 -4
- package/dist/vviinn-widgets/{p-f5156f20.entry.js → p-47acc86e.entry.js} +4 -4
- package/{www/build/p-a831eb43.entry.js → dist/vviinn-widgets/p-7a97d6c2.entry.js} +4 -4
- package/{www/build/p-474de17c.entry.js → dist/vviinn-widgets/p-9907fc4d.entry.js} +4 -4
- package/dist/vviinn-widgets/p-BV5YWSPA.js +8 -0
- package/dist/vviinn-widgets/p-BexbSTOV.js +8 -0
- package/dist/vviinn-widgets/{p-D8wvuxca.js → p-Bpe4n4Ll.js} +3 -3
- package/dist/vviinn-widgets/p-C-PBA2bz.js +8 -0
- package/dist/vviinn-widgets/{p-Bx5RgG8R.js → p-Cbeu6HrQ.js} +4 -4
- package/dist/vviinn-widgets/{p-DAJ_Vnro.js → p-CbnDh7O4.js} +3 -3
- package/dist/vviinn-widgets/{p-BinO0Y25.js → p-CzioeeIx.js} +4 -4
- package/dist/vviinn-widgets/{p-BK-UtHEi.js → p-DE6j1u2q.js} +4 -4
- package/dist/vviinn-widgets/{p-Do7coPt7.js → p-DQ1zDXdx.js} +3 -3
- package/{www/build/p-Dw7Hd5-K.js → dist/vviinn-widgets/p-DgTklFVi.js} +3 -3
- package/{www/build/p-Bv62lBTh.js → dist/vviinn-widgets/p-DyEil1RE.js} +4 -4
- package/dist/vviinn-widgets/{p-zJ2la8de.js → p-YwpO7yZ1.js} +4 -4
- package/dist/vviinn-widgets/{p-pB8RrHSZ.js → p-ZqDRXfkq.js} +3 -3
- package/dist/vviinn-widgets/{p-c9916098.entry.js → p-aeff0c41.entry.js} +4 -4
- package/dist/vviinn-widgets/{p-55b34826.entry.js → p-c221eb8e.entry.js} +4 -4
- package/dist/vviinn-widgets/{p-C1kKyGWn.js → p-l0BbTaDA.js} +4 -4
- package/dist/vviinn-widgets/vviinn-widgets.esm.js +4 -4
- package/docs.json +13199 -0
- package/package.json +4 -7
- package/www/build/index.esm.js +3 -3
- package/www/build/{p-160dba84.entry.js → p-33d1e152.entry.js} +4 -4
- package/{dist/vviinn-widgets/p-CJTKS7AD.js → www/build/p-3ovc_cLx.js} +4 -4
- package/{dist/vviinn-widgets/p-4a8df7a5.entry.js → www/build/p-425c7ca3.entry.js} +4 -4
- package/www/build/{p-f5156f20.entry.js → p-47acc86e.entry.js} +4 -4
- package/{dist/vviinn-widgets/p-a831eb43.entry.js → www/build/p-7a97d6c2.entry.js} +4 -4
- package/www/build/{p-fd10b8ec.js → p-81d963f8.js} +4 -4
- package/{dist/vviinn-widgets/p-474de17c.entry.js → www/build/p-9907fc4d.entry.js} +4 -4
- package/www/build/p-BV5YWSPA.js +8 -0
- package/www/build/p-BexbSTOV.js +8 -0
- package/www/build/{p-D8wvuxca.js → p-Bpe4n4Ll.js} +3 -3
- package/www/build/p-C-PBA2bz.js +8 -0
- package/www/build/{p-Bx5RgG8R.js → p-Cbeu6HrQ.js} +4 -4
- package/www/build/{p-DAJ_Vnro.js → p-CbnDh7O4.js} +3 -3
- package/www/build/{p-BinO0Y25.js → p-CzioeeIx.js} +4 -4
- package/www/build/{p-BK-UtHEi.js → p-DE6j1u2q.js} +4 -4
- package/www/build/{p-Do7coPt7.js → p-DQ1zDXdx.js} +3 -3
- package/{dist/vviinn-widgets/p-Dw7Hd5-K.js → www/build/p-DgTklFVi.js} +3 -3
- package/{dist/vviinn-widgets/p-Bv62lBTh.js → www/build/p-DyEil1RE.js} +4 -4
- package/www/build/{p-zJ2la8de.js → p-YwpO7yZ1.js} +4 -4
- package/www/build/{p-pB8RrHSZ.js → p-ZqDRXfkq.js} +3 -3
- package/www/build/{p-c9916098.entry.js → p-aeff0c41.entry.js} +4 -4
- package/www/build/{p-55b34826.entry.js → p-c221eb8e.entry.js} +4 -4
- package/www/build/{p-C1kKyGWn.js → p-l0BbTaDA.js} +4 -4
- package/www/build/vviinn-widgets.esm.js +4 -4
- package/www/build/vviinn-widgets.js +3 -3
- package/dist/vviinn-widgets/p-5M4OE8Ib.js +0 -8
- package/dist/vviinn-widgets/p-Ct4T-m61.js +0 -8
- package/dist/vviinn-widgets/p-DaXOFJ9S.js +0 -8
- package/www/build/p-5M4OE8Ib.js +0 -8
- package/www/build/p-Ct4T-m61.js +0 -8
- package/www/build/p-DaXOFJ9S.js +0 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vviinn-widgets",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.228.0",
|
|
4
4
|
"description": "vviinn web components",
|
|
5
5
|
"author": "Mediaopt",
|
|
6
6
|
"repository": {
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
"dist/",
|
|
20
20
|
"www/build/",
|
|
21
|
+
"docs.json",
|
|
21
22
|
"NOTICE"
|
|
22
23
|
],
|
|
23
24
|
"scripts": {
|
|
@@ -32,14 +33,10 @@
|
|
|
32
33
|
"test": "stencil test --spec",
|
|
33
34
|
"test.coverage": "stencil test --spec -- --coverage",
|
|
34
35
|
"test.watch": "stencil test --spec --watchAll",
|
|
35
|
-
"release": "commit-and-tag-version",
|
|
36
|
-
"release.ci": "commit-and-tag-version --releaseCommitMessageFormat '[skip ci] chore(release): {{currentTag}}'",
|
|
37
36
|
"artifactregistry-login": "npx google-artifactregistry-auth",
|
|
38
37
|
"lint": "eslint . --max-warnings 70",
|
|
39
38
|
"lint.fix": "eslint . --fix",
|
|
40
39
|
"format": "prettier --write 'src/**/*.{ts,tsx,js,jsx,css,scss,json}'",
|
|
41
|
-
"update_storybook_changelog": "node ./scripts/update-changelog.js",
|
|
42
|
-
"update_storybook_widget_version": "node ./scripts/update-widget-version.js",
|
|
43
40
|
"update.openapi": "gh api repos/vviinn/platform-api/contents/docs/merchant-openapi.yaml?ref=develop --jq '.content' | base64 -d > openapi/merchant-openapi.yaml && echo 'Synced: openapi/merchant-openapi.yaml'",
|
|
44
41
|
"prepare": "husky"
|
|
45
42
|
},
|
|
@@ -71,7 +68,6 @@
|
|
|
71
68
|
"@types/node": "^22.15.21",
|
|
72
69
|
"autoprefixer": "^10.4.20",
|
|
73
70
|
"babel-loader": "^9.1.2",
|
|
74
|
-
"commit-and-tag-version": "^9.5.0",
|
|
75
71
|
"dotenv": "^8.2.0",
|
|
76
72
|
"enhanced-ecommerce-types": "0.0.3",
|
|
77
73
|
"eslint": "^9.39.5",
|
|
@@ -89,7 +85,8 @@
|
|
|
89
85
|
"rollup-plugin-dotenv": "^0.5.0",
|
|
90
86
|
"storybook-addon-designs": "^6.2.1",
|
|
91
87
|
"typescript": "^5.8.3",
|
|
92
|
-
"typescript-eslint": "^8.69.0"
|
|
88
|
+
"typescript-eslint": "^8.69.0",
|
|
89
|
+
"yargs": "^17.7.3"
|
|
93
90
|
},
|
|
94
91
|
"overrides": {
|
|
95
92
|
"minimatch@3": {
|
package/www/build/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* vviinn-widgets v2.
|
|
2
|
+
* vviinn-widgets v2.228.0
|
|
3
3
|
* Copyright 2020 Mediaopt
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
* License: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.
|
|
6
|
-
* Notice: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.
|
|
5
|
+
* License: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.228.0/LICENSE
|
|
6
|
+
* Notice: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.228.0/NOTICE
|
|
7
7
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* vviinn-widgets v2.
|
|
2
|
+
* vviinn-widgets v2.228.0
|
|
3
3
|
* Copyright 2020 Mediaopt
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
* License: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.
|
|
6
|
-
* Notice: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.
|
|
5
|
+
* License: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.228.0/LICENSE
|
|
6
|
+
* Notice: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.228.0/NOTICE
|
|
7
7
|
*/
|
|
8
|
-
import{h as t,r as i,c as s,H as h,g as e}from"./p-
|
|
8
|
+
import{h as t,r as i,c as s,H as h,g as e}from"./p-CbnDh7O4.js";import{f as a,h as n,S as o}from"./p-3ovc_cLx.js";import{D as l}from"./p-BexbSTOV.js";import{S as d,r}from"./p-C-PBA2bz.js";import{i as c,s as u}from"./p-Cbeu6HrQ.js";import{i as C}from"./p-DgTklFVi.js";const p=()=>t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},t("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M18 4H20C22.21 4 24 5.79 24 8V16H22V8C22 6.9 21.1 6 20 6H16.93L16.34 5.11L14.93 3H9.07L7.66 5.11L7.07 6H4C2.9 6 2 6.9 2 8V18C2 19.1 2.9 20 4 20H9V22H4C1.79 22 0 20.21 0 18V8C0 5.79 1.79 4 4 4H6L8 1H16L18 4ZM12 8C14.76 8 17 10.24 17 13L16.99 13.01C16.99 14.02 16.68 14.97 16.16 15.76L20.7 20.3L19.29 21.71L14.75 17.17C13.96 17.69 13.02 18 12 18C9.24 18 7 15.76 7 13C7 10.24 9.24 8 12 8ZM9 13C9 14.65 10.35 16 12 16C13.65 16 15 14.65 15 13C15 11.35 13.65 10 12 10C10.35 10 9 11.35 9 13Z",fill:"#161616"})),v=()=>t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},t("path",{d:"M4 8C4 5.79 5.79 4 8 4H9V2H8C4.69 2 2 4.69 2 8V9H4V8Z",fill:"#161616"}),t("path",{d:"M20 8C20 5.79 18.21 4 16 4H15V2H16C19.31 2 22 4.69 22 8V9H20V8Z",fill:"#161616"}),t("path",{d:"M4 16V15H2V16C2 19.31 4.69 22 8 22H9V20H8C5.79 20 4 18.21 4 16Z",fill:"#161616"}),t("path",{d:"M17 12C17 9.24 14.76 7 12 7C9.24 7 7 9.24 7 12C7 14.76 9.24 17 12 17C13.02 17 13.96 16.69 14.75 16.17L19.29 20.71L20.7 19.3L16.16 14.76C16.68 13.97 16.99 13.02 16.99 12.01L17 12ZM12 15C10.35 15 9 13.65 9 12C9 10.35 10.35 9 12 9C13.65 9 15 10.35 15 12C15 13.65 13.65 15 12 15Z",fill:"#161616"})),g=()=>t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},t("path",{d:"M4 8C4 5.79 5.79 4 8 4H9V2H8C4.69 2 2 4.69 2 8V9H4V8Z",fill:"#161616"}),t("path",{d:"M4 16V15H2V16C2 19.31 4.69 22 8 22H9V20H8C5.79 20 4 18.21 4 16Z",fill:"#161616"}),t("path",{d:"M20 16C20 18.21 18.21 20 16 20H15V22H16C19.31 22 22 19.31 22 16V15H20V16Z",fill:"#161616"}),t("path",{d:"M16 2H15V4H16C18.21 4 20 5.79 20 8V9H22V8C22 4.69 19.31 2 16 2Z",fill:"#161616"}),t("path",{d:"M17 12C17 9.24 14.76 7 12 7C9.24 7 7 9.24 7 12C7 14.76 9.24 17 12 17C14.76 17 17 14.76 17 12ZM12 15C10.35 15 9 13.65 9 12C9 10.35 10.35 9 12 9C13.65 9 15 10.35 15 12C15 13.65 13.65 15 12 15Z",fill:"#161616"})),b=class{constructor(t){i(this,t),this.vviinnWidgetLoad=s(this,"vviinnWidgetLoad"),this.vviinnWidgetOpen=s(this,"vviinnWidgetOpen"),this.vviinnWidgetClose=s(this,"vviinnWidgetClose"),this.vviinnImageUploadStarted=s(this,"vviinnImageUploadStarted"),this.vviinnProductLoad=s(this,"vviinnProductLoad"),this.vviinnProductClick=s(this,"vviinnProductClick"),this.vviinnProductView=s(this,"vviinnProductView"),this.vviinnResultLoad=s(this,"vviinnResultLoad"),this.vviinnResultView=s(this,"vviinnResultView"),this.vviinnNoResult=s(this,"vviinnNoResult"),this.vviinnImageCrop=s(this,"vviinnImageCrop"),this.vviinnSelectObject=s(this,"vviinnSelectObject"),this.globalSlotsChanged=s(this,"globalSlotsChanged"),this.campaignId="",this.campaignIdTextSearch="",this.campaignIdVisualSearch="",this.addStyle=!1,this.mode="modal",this.excluded="",this.productDetailsNewTab=!0,this.productDetailsRedirect=!0,this.imageResolutionWidth=d,this.showMultipleImages=!1,this.useDragAndDrop=!1,this.exampleImageSource=l,this.textSearchShow=!1,this.autoSuggestShow=!0,this.aiSuggestionsShow=!1,this.addToBasketShow=!1,this.favoriteShow=!1,this.oneClickDiscoveryMode="append-grid",this.oneClickDiscoveryCampaigns="",this.addPriceContainer=!1,this.showIntervalInputs=!1,this.cssUrl=null,this.showResultsInModal=!0,this.parentSlots=[],this.buttonPressed=!1,this.slots=[],this.hasCustomTrigger=!1,this.allSlots=()=>[...this.parentSlots,...this.slots],this.handleActivation=()=>{this.buttonPressed=!0},this.resetButton=()=>{this.buttonPressed=!1},this.handleKeyDown=t=>{"Enter"!==t.key&&" "!==t.key||this.handleActivation()}}handleModalClosed({detail:t}){"VPS"===t.campaignTypeId&&(this.buttonPressed=!1)}buttonPressedWatcher(t,i){!0===i&&!1===t&&requestAnimationFrame((()=>{this.el.focus()}))}async componentWillLoad(){await c(this.locale),this.slots=a(this.el),this.hasCustomTrigger=n(this.el)}componentDidLoad(){this.replaceSlotsContent()}replaceSlotsContent(t){this.globalSlotsChanged.emit({slots:this.allSlots(),element:this.el}),t&&this.globalSlotsChanged.emit({slots:this.allSlots(),element:t})}getButtonConfig(){switch(this.mode){case"camera":return{ariaLabel:C.t("a11y.cameraModeSearchButton"),buttonIcon:t(p,null)};case"modal":if(this.textSearchShow)return{ariaLabel:C.t("a11y.modalModeSearchButton"),buttonIcon:t(v,null)};default:return{ariaLabel:C.t("a11y.uploadModeSearchButton"),buttonIcon:t(g,null)}}}render(){const{ariaLabel:i,buttonIcon:s}=this.getButtonConfig();return t(h,{key:"2a466056b4da2d437d4c5f54f825d3da8a73bd20",role:this.buttonPressed?void 0:"button","aria-label":this.buttonPressed?void 0:i,exportparts:`vviinn-button, ${u}`},r(this.cssUrl),t("vviinn-button",{key:"b97d5c9e5f248234a3241435db2df851d4ffcfd6",addStyle:this.addStyle,part:"vviinn-button",tabindex:this.buttonPressed?void 0:"0",onClick:this.buttonPressed?void 0:this.handleActivation,onKeyDown:this.buttonPressed?void 0:this.handleKeyDown},t("span",{key:"4bb132b2dbd831978d1cbde3df3707c19795bccc",style:{display:this.hasCustomTrigger?"contents":"none"}},t("slot",{key:"2fd54456f699476252a669c957fb6227e39beadf",onSlotchange:()=>this.hasCustomTrigger=n(this.el)})),!this.hasCustomTrigger&&s),o("search"),t("vviinn-vps-widget",{key:"b70f8319dad29f6ed021e6298472008c3aab3a9f",mode:this.mode,"currency-sign":this.currencySign,token:this.token,locale:this.locale,numberLocale:this.numberLocale,apiPath:this.apiPath,pricePrefix:this.pricePrefix,campaignId:this.campaignId,campaignIdTextSearch:this.campaignIdTextSearch,campaignIdVisualSearch:this.campaignIdVisualSearch,showingInButton:!0,buttonPressed:this.buttonPressed,resetVpsButton:this.resetButton,buttonElementId:this.el.id,active:this.buttonPressed&&("modal"===this.mode||"camera"===this.mode),excluded:this.excluded,productDetailsNewTab:this.productDetailsNewTab,productDetailsRedirect:this.productDetailsRedirect,imageResolutionWidth:this.imageResolutionWidth,showMultipleImages:this.showMultipleImages,useDragAndDrop:this.useDragAndDrop,exampleImageSource:this.exampleImageSource,textSearchShow:this.textSearchShow,autoSuggestShow:this.autoSuggestShow,aiSuggestionsShow:this.aiSuggestionsShow,addToBasketShow:this.addToBasketShow,addPriceContainer:this.addPriceContainer,showIntervalInputs:this.showIntervalInputs,replaceSlotsContentInButton:this.replaceSlotsContent.bind(this),oneClickDiscoveryMode:this.oneClickDiscoveryMode,oneClickDiscoveryCampaigns:this.oneClickDiscoveryCampaigns,favoriteShow:this.favoriteShow,showResultsInModal:this.showResultsInModal,resultsPageUrl:this.resultsPageUrl,resultsPageParams:this.resultsPageParams,parentSlots:[...this.parentSlots,...this.slots],cssUrl:this.cssUrl}))}get el(){return e(this)}static get watchers(){return{buttonPressed:["buttonPressedWatcher"]}}};b.style=":host{display:inline-block;line-height:0}";export{b as vviinn_vps_button}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* vviinn-widgets v2.
|
|
2
|
+
* vviinn-widgets v2.228.0
|
|
3
3
|
* Copyright 2020 Mediaopt
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
* License: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.
|
|
6
|
-
* Notice: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.
|
|
5
|
+
* License: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.228.0/LICENSE
|
|
6
|
+
* Notice: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.228.0/NOTICE
|
|
7
7
|
*/
|
|
8
|
-
import{h as n}from"./p-
|
|
8
|
+
import{h as n}from"./p-CbnDh7O4.js";const i=["vviinn-recommendations-title","vviinn-recommendations-subtitle","vviinn-update-button-text","vviinn-update-button-icon"],e=["vviinn-teaser-text","vviinn-image-upload-button-text","vviinn-image-upload-icon","vviinn-drag-drop-icon","vviinn-drag-drop-text","vviinn-camera-button-text-start","vviinn-camera-button-text-stop","vviinn-camera-icon","vviinn-text-search-icon","vviinn-privacy-badge-text","vviinn-image-search-modal-title"],t=["vviinn-extended-filters-title","vviinn-extended-filters-apply","vviinn-extended-filters-reset","vviinn-extended-filters-no-filters","vviinn-filters-search-icon","vviinn-image-filter-text","vviinn-crop-filter-text","vviinn-range-filter-from-label","vviinn-range-filter-to-label"],v=["vviinn-suggestions-title","vviinn-suggestions-icon"],a=["vviinn-basket-button-icon","vviinn-basket-button-text","vviinn-basket-button-icon-pressed","vviinn-basket-button-text-pressed","vviinn-favorite-icon","vviinn-favorite-icon-pressed","vviinn-energy-label-data-sheet-text","vviinn-product-card-actions","vviinn-custom-label-0","vviinn-custom-label-1","vviinn-custom-label-2","vviinn-custom-label-3","vviinn-custom-label-4","vviinn-image-placeholder-icon"],o="vviinn-results-vpr-icon",l=i=>n("slot",{name:i}),r=n=>(n=>{switch(n){case"search":return[...e,...t,...a,...v];case"discovery":return[...i,...t,...a];case"filters":return t;case"card":return a}})(n).map(l),s=(n,i)=>{i.innerHTML=n.outerHTML},d=(n,i)=>{n.connectedCallback=function(){document.addEventListener("globalSlotsChanged",(({detail:n})=>{const e=i.tagName,t=["VVIINN-PRODUCT-CARD","VVIINN-TEASER","VVIINN-CAMERA","VVIINN-PRIVACY-BADGE","VVIINN-MODAL","VVIINN-TEXT-SEARCH","VVIINN-EXTENDED-FILTERS","VVIINN-FILTERS","VVIINN-SELECTED-FILTERS","VVIINN-SUGGESTIONS","VVIINN-RANGE-FILTER"].includes(e),v=i!==n.element,a=v&&!t,o="VVIINN-VPS-BUTTON"===n.element.tagName&&"VVIINN-VPS-WIDGET"===e,l=n.element.shadowRoot,{levelOne:r,levelTwo:d,levelThree:c}=(n=>{var i,e,t,v;const a=null!==(e=null===(i=null==n?void 0:n.lastChild)||void 0===i?void 0:i.shadowRoot)&&void 0!==e?e:null;return{levelOne:n,levelTwo:a,levelThree:null!==(v=null===(t=null==a?void 0:a.lastChild)||void 0===t?void 0:t.shadowRoot)&&void 0!==v?v:null}})(l),u=!(r&&r.contains(i)||d&&d.contains(i)||c&&c.contains(i)),I=(a||t&&u)&&!o,b=o&&!l.contains(i),N=I||b,V=!["VVIINN-ENERGY-LABEL"].includes(e);if(v&&N&&V)return;const x=(n=>Array.from(n.shadowRoot.querySelectorAll("slot")))(i).reduce((f=n.slots,(n,i)=>{const e=f.find((t=i,n=>t.getAttribute("name")===n.getAttribute("slot")));var t;return e&&n.set(i,e),n}),new Map);var f;x.forEach(s)}),!0)},n.connectedCallback.call(n)},c=n=>Array.from(n.querySelectorAll("[slot]")),u=n=>n.map((n=>n.getAttribute("slot"))),I=n=>Array.from(n.childNodes).some((n=>n.nodeType===Node.TEXT_NODE?""!==n.textContent.trim():n.nodeType===Node.ELEMENT_NODE&&!n.getAttribute("slot")));function b(n,i,e){i.forEach((([i,t])=>{n.addEventListener(i,t,{signal:e})}))}function N(n,i){if(i)n.removeAttribute("inert"),n.removeAttribute("aria-hidden"),function(n){n.querySelectorAll("[data-original-tabindex]").forEach((n=>{const i=n,e=i.getAttribute("data-original-tabindex");"0"===e||""===e?i.removeAttribute("tabindex"):i.tabIndex=parseInt(e,10),i.removeAttribute("data-original-tabindex")}))}(n);else{const i=document.activeElement;i&&n.contains(i)&&i.blur(),n.querySelectorAll(":focus").forEach((n=>{n.blur()})),Promise.resolve().then((()=>{n.setAttribute("inert",""),n.setAttribute("aria-hidden","true"),function(n){n.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])').forEach((n=>{const i=n;i.hasAttribute("data-original-tabindex")||i.setAttribute("data-original-tabindex",i.tabIndex.toString()),i.tabIndex=-1}))}(n)}))}}function V(n,i){var e,t;const v=n.target,a=(null===(e=n.composedPath)||void 0===e?void 0:e.call(n))||[];return!!(null===(t=null==v?void 0:v.closest)||void 0===t?void 0:t.call(v,i))||a.some((n=>{var e;return null===(e=n.matches)||void 0===e?void 0:e.call(n,i)}))}export{r as S,b as a,N as b,c as f,u as g,I as h,V as i,a as p,d as s,o as v}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* vviinn-widgets v2.
|
|
2
|
+
* vviinn-widgets v2.228.0
|
|
3
3
|
* Copyright 2020 Mediaopt
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
* License: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.
|
|
6
|
-
* Notice: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.
|
|
5
|
+
* License: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.228.0/LICENSE
|
|
6
|
+
* Notice: https://cdn.jsdelivr.net/npm/vviinn-widgets@2.228.0/NOTICE
|
|
7
7
|
*/
|
|
8
|
-
import{h as t,r as e,c as i,H as o,g as s}from"./p-DAJ_Vnro.js";import{a as r,E as a}from"./p-BinO0Y25.js";import{C as n,c,g as l,i as d}from"./p-BK-UtHEi.js";import{g as h,c as p,r as u,e as g,s as b}from"./p-pB8RrHSZ.js";import{i as v,s as f,m,a as w,b as x,c as y,g as k}from"./p-Bv62lBTh.js";import{S as C}from"./p-zJ2la8de.js";import{i as S,a as j}from"./p-Bx5RgG8R.js";import{d as I}from"./p-Dw7Hd5-K.js";import{P as O,r as P}from"./p-DaXOFJ9S.js";import{o as T}from"./p-D8wvuxca.js";const z=()=>t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none"},t("path",{d:"M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H13C13.2833 3 13.5208 3.09583 13.7125 3.2875C13.9042 3.47917 14 3.71667 14 4C14 4.28333 13.9042 4.52083 13.7125 4.7125C13.5208 4.90417 13.2833 5 13 5H5V19H19V11C19 10.7167 19.0958 10.4792 19.2875 10.2875C19.4792 10.0958 19.7167 10 20 10C20.2833 10 20.5208 10.0958 20.7125 10.2875C20.9042 10.4792 21 10.7167 21 11V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM17 7H16C15.7167 7 15.4792 6.90417 15.2875 6.7125C15.0958 6.52083 15 6.28333 15 6C15 5.71667 15.0958 5.47917 15.2875 5.2875C15.4792 5.09583 15.7167 5 16 5H17V4C17 3.71667 17.0958 3.47917 17.2875 3.2875C17.4792 3.09583 17.7167 3 18 3C18.2833 3 18.5208 3.09583 18.7125 3.2875C18.9042 3.47917 19 3.71667 19 4V5H20C20.2833 5 20.5208 5.09583 20.7125 5.2875C20.9042 5.47917 21 5.71667 21 6C21 6.28333 20.9042 6.52083 20.7125 6.7125C20.5208 6.90417 20.2833 7 20 7H19V8C19 8.28333 18.9042 8.52083 18.7125 8.7125C18.5208 8.90417 18.2833 9 18 9C17.7167 9 17.4792 8.90417 17.2875 8.7125C17.0958 8.52083 17 8.28333 17 8V7ZM11.25 16L9.4 13.525C9.3 13.3917 9.16667 13.325 9 13.325C8.83333 13.325 8.7 13.3917 8.6 13.525L6.6 16.2C6.46667 16.3667 6.45 16.5417 6.55 16.725C6.65 16.9083 6.8 17 7 17H17C17.2 17 17.35 16.9083 17.45 16.725C17.55 16.5417 17.5333 16.3667 17.4 16.2L14.65 12.525C14.55 12.3917 14.4167 12.325 14.25 12.325C14.0833 12.325 13.95 12.3917 13.85 12.525L11.25 16Z",fill:"white"}));class V{constructor(t){this.cropperInstances=new Map,this.startCropBoxData=new Map,this.pendingImageLoads=new Map,this.config=t}destroyCropper(t){const e=this.cropperInstances.get(t);e&&(e.destroy(),this.cropperInstances.delete(t),this.startCropBoxData.delete(t));const i=this.pendingImageLoads.get(t);i&&(i.element.removeEventListener("load",i.handlers.load),i.element.removeEventListener("error",i.handlers.error),this.pendingImageLoads.delete(t))}initializeCropper(t,e,i){if(e!==i)return;this.cropperInstances.has(e)&&this.destroyCropper(e);const o=new n(t,Object.assign(Object.assign({},c),{cropstart:()=>this.handleCropStart(o,e),cropend:()=>this.handleCropEnd(o,e)}));this.cropperInstances.set(e,o)}handleCropStart(t,e){this.startCropBoxData.set(e,l(t))}handleCropEnd(t,e){const i=l(t),o=this.startCropBoxData.get(e);if(o&&d(o,i))return;const s=t.getImageData(),a={left:i.left-s.left,top:i.top-s.top,width:i.width,height:i.height},n=r({width:s.width,height:s.height})(a);this.config.onCropEnd(n,e)}activateCropperForSlide(t,e){if(this.cropperInstances.forEach(((e,i)=>{i!==t&&this.destroyCropper(i)})),!this.cropperInstances.has(t)){const i=e(t);if(!i)return;const o=()=>{this.pendingImageLoads.delete(t),i.offsetWidth>0&&this.initializeCropper(i,t,t)},s=()=>{this.pendingImageLoads.delete(t),console.warn(`Failed to load image for cropper at index ${t}`)};if(i.complete&&i.offsetWidth>0)o();else{const e={load:o,error:s};this.pendingImageLoads.set(t,{element:i,handlers:e}),i.addEventListener("load",e.load,{once:!0}),i.addEventListener("error",e.error,{once:!0})}}}destroyAll(){Array.from(this.cropperInstances.keys()).forEach((t=>this.destroyCropper(t)))}hasCropper(t){return this.cropperInstances.has(t)}updateCropperDimensions(t,e){if(this.cropperInstances.has(t)){this.destroyCropper(t);const i=e(t);i&&i.complete&&i.offsetWidth>0&&this.initializeCropper(i,t,t)}}}const M=t=>{if(!t)return null;const e=t.getBoundingClientRect();return{left:e.left,top:e.top,width:e.width,height:e.height}},D=v,R=(t,e,i,o)=>{const s=o||M(t);if(!s)return{x:0,y:0};const r=(e.left+e.width/2)*s.width,a=(e.top+e.height/2)*s.height,n=[a>s.height/2?"bottom":"top",r>s.width/2?"right":"left"].join("-"),c=D()?24:16,l=!D();let d=0,h=0;switch(n){case"top-left":d=l?c-32:c,h=l?c+6:c;break;case"top-right":d=l?32-c:-c,h=l?c+6:c;break;case"bottom-left":d=l?c-32:c,h=l?-c-6:-c;break;case"bottom-right":d=l?32-c:-c,h=l?-c-6:-c}const p=s.left+r+d,u=s.top+a+h;if(i){const t=i.getBoundingClientRect();return{x:p-t.left,y:u-t.top,anchor:n}}return{x:p,y:u,anchor:n}},A=async t=>{try{const e=await w("shopTheLook",t.imageUrl,t.token,{apiPath:t.apiPath,campaignId:t.campaignId});return a.fold((t=>a.left(`Visual search failed: ${t.inner}`)),(t=>{var e,i;const o=(null===(i=null===(e=t.interactions)||void 0===e?void 0:e.suggestedSearchAreas)||void 0===i?void 0:i.map((t=>t.rectangle)))||[];return a.right({detectedObjects:o,searchResults:[],visualSearchId:t.requestId||null})}))(e)}catch(t){return a.left(`Visual search initialization failed: ${t}`)}},$=(t,e)=>[...t,...e&&e.trim()?e.split(",").map((t=>t.trim())).filter((t=>t.length>0)):[]],B=t=>({detectedObjects:[],searchCompleted:!1,searchResults:[],isVisible:!1,imageElement:t||null,imageBounds:null,visualSearchId:null,searchTriggered:!1,observerSetup:!1,refProcessed:!1});class L{constructor(t){this.imageStates=new Map,this.config=t}updateConfig(t){this.config=Object.assign(Object.assign({},this.config),t)}getImageState(t){return this.imageStates.has(t)||this.imageStates.set(t,B()),this.imageStates.get(t)}updateImageState(t,e){const i=this.getImageState(t);Object.assign(i,e),this.imageStates.set(t,i)}setupImageIntersectionObserver(t,e){if(this.getImageState(e).observerSetup)return;const i=new IntersectionObserver((t=>{t.forEach((t=>{this.updateImageVisibility(e,t.intersectionRatio>=this.config.threshold)}))}),{threshold:this.config.threshold,root:null,rootMargin:"0px"});i.observe(t),this.updateImageState(e,{observer:i,observerSetup:!0})}updateImageVisibility(t,e){var i;const o=this.getImageState(t),s=o.isVisible;if(s===e)return;e&&o.imageElement&&!o.imageBounds&&(o.imageBounds=M(o.imageElement)),this.updateImageState(t,{isVisible:e});const r=null!==(i=this.config.isModalOpen)&&void 0!==i&&i;this.shouldTriggerSearch(t,e,s,o,r)&&(this.updateImageState(t,{searchTriggered:!0}),this.config.onVisualSearchTrigger(t))}shouldTriggerSearch(t,e,i,o,s=!1){if(s)return!1;const r=e&&!1===i,a=!!this.config.token,n=!o.searchCompleted&&!o.searchTriggered,c=this.getTriggeredSearchCount()<this.config.totalImages;return r&&a&&n&&c}getTriggeredSearchCount(){return Array.from(this.imageStates.values()).filter((t=>t.searchTriggered)).length}setImageElement(t,e){this.updateImageState(t,{imageElement:e})}getImageElement(t){return this.getImageState(t).imageElement}setImageState(t,e){this.imageStates.set(t,e)}updateImageStateData(t,e,i,o,s){const r={detectedObjects:e,searchCompleted:i,searchResults:o};void 0!==s&&(r.visualSearchId=s),this.updateImageState(t,r)}disconnectAll(){this.imageStates.forEach((t=>{t.observer&&t.observer.disconnect()})),this.imageStates.clear()}getAllImageStates(){return new Map(this.imageStates)}hasImageState(t){return this.imageStates.has(t)}hasActiveSearches(){return Array.from(this.imageStates.values()).some((t=>t.searchTriggered&&!t.searchCompleted))}shiftIndicesForward(t=0){Array.from(this.imageStates.entries()).filter((([e])=>e>=t)).sort((([t],[e])=>e-t)).forEach((([t,e])=>{this.imageStates.delete(t),this.imageStates.set(t+1,e)}))}}const E=t=>({maxWidth:"100%",maxHeight:`${t}px`,width:"auto",height:v()?`${t}px`:"auto",objectFit:"contain"}),H={campaignTypeId:"VPR",campaignTypeName:"Similar Products",widgetVersion:"1.0.0"};"undefined"!=typeof window&&u();const F=class{constructor(o){e(this,o),this.vviinnShopTheLookDetectedObjectClick=i(this,"vviinnShopTheLookDetectedObjectClick"),this.vviinnShopTheLookProductClick=i(this,"vviinnShopTheLookProductClick"),this.vviinnShopTheLookModalClose=i(this,"vviinnShopTheLookModalClose"),this.imageUrls="",this.height=500,this.campaignId="",this.widgetStyle="rounded",this.showCropper=!1,this.uploadMode=!1,this.showMultipleImages=!1,this.imageResolutionWidth=O,this.cssUrl=null,this.productDetailsNewTab=!1,this.productDetailsRedirect=!0,this.selectedDetectedObject=null,this.showModal=!1,this.modalPosition=null,this.showDetailedView=!1,this.selectedProductIndex=0,this.modalImageIndex=0,this.swiperActiveIndex=0,this.totalImages=1,this.imageUrlsList=[],this.swiperKey="swiper-0",this.needNavigation=!1,this.showLoadingSpinner=!1,this.isSearchInProgress=!1,this.currentViewMode=null,this.isWidgetVisible=!1,this.uploadedImageUrls=[],this.isManualObjectSelection=!1,this.isNavigatingToSlide=!1,this.resetDetailedView=()=>{this.showDetailedView=!1,this.selectedProductIndex=0},this.handleResize=()=>{this.checkViewModeChange(),this.updateNavigationVisibility(),this.showCropper&&this.cropperManager&&requestAnimationFrame((()=>{this.cropperManager.updateCropperDimensions(this.swiperActiveIndex,(t=>this.imageStore.getImageElement(t)))}))},this.handleDocumentClick=t=>{if(!this.showModal||this.showLoadingSpinner)return;const e=t.target;e&&(this.modalContentRef&&this.modalContentRef.contains(e)||e.closest("vviinn-detected-object")||this.handleModalClose())},this.checkViewModeChange=()=>{const t=D()?"desktop":"mobile";t!==this.currentViewMode&&(this.currentViewMode=t,this.showModal&&this.handleModalClose(),this.swiperKey=`swiper-${Date.now()}`)},this.updateNavigationVisibility=()=>{if(this.imageElement&&this.imageElement.offsetWidth>0){const t=window.innerWidth-100,e=Math.floor(t/(this.imageElement.offsetWidth+20));this.needNavigation=this.totalImages>e}else this.needNavigation=this.totalImages>1},this.handleSwiperPointerDown=t=>{var e;const i=(t=>t.target.closest("swiper-slide"))(t);if(!i)return;const o=((t,e)=>e?Array.from(e.querySelectorAll("swiper-slide")||[]).indexOf(t):-1)(i,this.el.shadowRoot);if(-1===o)return;const s=null===(e=this.cropperManager)||void 0===e?void 0:e.hasCropper(o);this.updateSwiperAllowTouchMove(!s)},this.handleSwiperScroll=()=>{this.showModal&&this.handleModalClose()},this.handleVisualSearchTrigger=t=>{this.showModal||(this.performVisualSearchForImage(t),this.updateSearchingState())},this.handleDetectedObjectClick=async(t,e,i=this.swiperActiveIndex)=>{var o,s;if(!this.token)return;D()&&!this.isCurrentSlide(i)?(this.isManualObjectSelection=!0,this.isNavigatingToSlide=!0,this.swiperActiveIndex=i,this.navigateToSlide(i),this.selectedDetectedObject=t,this.modalImageIndex=i,await new Promise((t=>setTimeout((()=>{this.isNavigatingToSlide=!1,requestAnimationFrame((()=>requestAnimationFrame(t)))}),300)))):(this.selectedDetectedObject=t,this.modalImageIndex=i),this.showCropper&&((null===(s=null===(o=this.cropperManager)||void 0===o?void 0:o.hasCropper)||void 0===s?void 0:s.call(o,i))||this.activateCropperForSlide(i)),this.isManualObjectSelection=!1,this.showLoadingSpinner=!0,this.showModal=!1,this.resetDetailedView();const r=this.getImageBounds(i),n=this.imageStore.getImageElement(i)||this.imageElement;r&&n&&(this.modalPosition=R(n,t,this.el,r));const c=this.imageStore.getImageState(i),l={detectedObject:t,imageElement:n,containerElement:this.el,token:this.token,visualSearchId:(null==c?void 0:c.visualSearchId)||f.visualSearchId||null,campaignId:this.campaignId,apiPath:this.apiPath,imageBounds:r,isSearchInProgress:this.isSearchInProgress,setSearchInProgress:t=>{this.isSearchInProgress=t}},d=await(async t=>{const{imageElement:e,detectedObject:i,containerElement:o,visualSearchId:s,token:r,imageBounds:n,campaignId:c,apiPath:l,isSearchInProgress:d,setSearchInProgress:h}=t;if(d)return a.left("Search already in progress");h(!0);try{if(!e)return a.left("Image element is missing");f.searchArea=i;const t=await m("shopTheLook",s||null,r,{apiPath:l,campaignId:c});return a.fold((t=>a.left(`Visual search failed: ${t.inner}`)),(t=>{var s;const r=(null===(s=t.data)||void 0===s?void 0:s.products)||[],c=R(e,i,o,n);return a.right({searchResults:r,modalPosition:c})}))(t)}catch(t){return a.left(`Visual search failed: ${t}`)}finally{h(!1)}})(l);a.fold((t=>{t.includes("Search already in progress")||(console.error("Visual search failed:",t),this.showLoadingSpinner=!1)}),(t=>{t.searchResults&&t.searchResults.length>0&&this.imageStore.updateImageState(i,{searchResults:t.searchResults}),this.showLoadingSpinner=!1,t.searchResults&&t.searchResults.length>0&&this.isCurrentSlide(i)&&(this.showModal=!0),this.vviinnShopTheLookDetectedObjectClick.emit(Object.assign(Object.assign({},H),{detectedObjectId:`detected-${i}-${e}`,product:t.searchResults[0]||null}))}))(d)},this.performVisualSearch=async(t=this.swiperActiveIndex)=>{const e=this.imageUrlsList[t];if(!this.token||!e)return;const i=this.isCurrentSlide(t);i&&(this.showLoadingSpinner=!0);const o={imageUrl:e,token:this.token,campaignId:this.campaignId,apiPath:this.apiPath},s=await A(o);a.fold((e=>{console.error(`Visual search failed for image ${t}:`,e),this.imageStore.updateImageState(t,{searchCompleted:!0}),i&&(this.showLoadingSpinner=!1)}),(e=>{this.imageStore.updateImageStateData(t,e.detectedObjects,!0,e.searchResults,e.visualSearchId||null);const o=this.imageStore.getImageState(t);i&&(this.showLoadingSpinner=!1),o.detectedObjects.length>0&&i&&this.isCurrentSlide(t)&&!this.showModal&&this.scheduleAutoSelectFirstObject(t,o.detectedObjects),this.imageStore.updateImageState(t,{searchCompleted:!0})}))(s)},this.handleProductClick=t=>{this.vviinnShopTheLookProductClick.emit(Object.assign(Object.assign({},H),{detectedObjectId:this.selectedDetectedObject?`detected-${Date.now()}`:"",product:t}))},this.activateCropperForSlide=t=>{var e;null===(e=this.cropperManager)||void 0===e||e.activateCropperForSlide(t,(t=>this.imageStore.getImageElement(t)))},this.debouncedCropSearch=(t,e)=>{this.cropDebounceTimeout&&clearTimeout(this.cropDebounceTimeout),this.cropDebounceTimeout=window.setTimeout((()=>{this.cropDebounceTimeout=void 0,this.handleDetectedObjectClick(t,0,e)}),500)},this.handleModalClose=t=>{this.showLoadingSpinner||t&&t.target!==t.currentTarget||(this.clearModalAndSlideState(),this.vviinnShopTheLookModalClose.emit(H))},this.handleProductDetailsClick=(t,e)=>{this.selectedProductIndex=e,this.showDetailedView=!0},this.handleNavigateProduct=t=>{const e=this.imageStore.getImageState(this.modalImageIndex);"prev"===t&&this.selectedProductIndex>0?this.selectedProductIndex--:"next"===t&&this.selectedProductIndex<e.searchResults.length-1&&this.selectedProductIndex++},this.renderDetectedObjectsWrapper=e=>{const i=this.imageStore.getImageState(e);return((t,e)=>{var i;return!!t&&(D()?t.searchCompleted&&!!(null===(i=t.detectedObjects)||void 0===i?void 0:i.length):e)})(i,this.isCurrentSlide(e))?(e=>{const{imageBounds:i,detectedObjects:o,initialSearchCompleted:s,selectedDetectedObject:r,basicEventData:a,onSelectObject:n}=e;return i&&o.length&&s?o.map(((e,o)=>t("vviinn-detected-object",{key:`detected-${o}`,detectedObject:e,selectedDetectedObject:r,basicEventData:a,imageBounds:i,showInWidget:!1,style:{zIndex:"10"},onVviinnSelectObject:t=>{t.stopPropagation(),n(t.detail.detectedObject,o)}}))):null})({imageBounds:this.getImageBounds(e),detectedObjects:i.detectedObjects,initialSearchCompleted:i.searchCompleted,selectedDetectedObject:this.selectedDetectedObject,basicEventData:H,onSelectObject:(t,i)=>this.handleDetectedObjectClick(t,i,e)}):null},this.handleSlideChange=t=>{var e;const i=g(t);if(void 0!==i){if(i!==this.swiperActiveIndex&&(this.swiperActiveIndex=i),this.clearModalAndSlideState(),this.shouldManageDragging){const t=null===(e=this.cropperManager)||void 0===e?void 0:e.hasCropper(i);this.updateSwiperAllowTouchMove(!t)}setTimeout((()=>{this.isNavigatingToSlide=!1,this.ensureSlideSearchTriggered(this.swiperActiveIndex)}),100)}},this.handleImageRef=(t,e)=>{const i=this.imageStore.getImageState(e);if((!(null==i?void 0:i.refProcessed)||this.imageStore.getImageElement(e)!==t)&&(this.imageStore.updateImageState(e,{refProcessed:!0}),(this.isCurrentSlide(e)||this.totalImages<=1)&&(this.imageElement=t),t)){if(this.imageStore.setImageElement(e,t),this.imageStore.hasImageState(e)){const i=this.imageStore.getImageState(e);i.imageElement=t,this.imageStore.setImageState(e,i)}else{const i=B(t);this.imageStore.setImageState(e,i),this.imageStore.setImageState(e,i)}D()&&this.setupObserverAfterSwiper(t,e);const i=()=>{this.initializeImageForCropper(t,e),this.pendingUploadData&&0===e&&(this.imageStore.updateImageStateData(0,this.pendingUploadData.detectedObjects,!0,[],this.pendingUploadData.visualSearchId),this.pendingUploadData.detectedObjects.length>0&&this.scheduleAutoSelectFirstObject(0,this.pendingUploadData.detectedObjects),this.pendingUploadData=null)};t.complete&&t.offsetWidth>0?i():t.addEventListener("load",i,{once:!0})}},this.updateImageBoundsForElement=(t,e)=>{requestAnimationFrame((()=>{(this.isCurrentSlide(e)||this.totalImages<=1)&&this.updateNavigationVisibility()}))},this.initializeImageForCropper=(t,e)=>{var i;this.updateImageBoundsForElement(t,e),this.isCurrentSlide(e)&&(null===(i=this.cropperManager)||void 0===i||i.initializeCropper(t,e,this.swiperActiveIndex))},this.performVisualSearchForImage=async t=>{const e=this.imageUrlsList[t];if(!this.token||!e)return;const i=this.isCurrentSlide(t);i&&(this.showLoadingSpinner=!0);const o={imageUrl:e,token:this.token,campaignId:this.campaignId,apiPath:this.apiPath},s=await A(o);a.fold((e=>{console.error(`Visual search failed for image ${t}:`,e),this.imageStore.updateImageStateData(t,[],!0,[],null),this.updateSearchingState(i)}),(e=>{this.imageStore.updateImageStateData(t,e.detectedObjects,!0,e.searchResults,e.visualSearchId||null),this.updateSearchingState(i),e.detectedObjects.length>0&&this.isCurrentSlide(t)&&!this.showModal&&!this.isManualObjectSelection&&this.scheduleAutoSelectFirstObject(t,e.detectedObjects)}))(s)},this.pendingUploadData=null,this.handleFileUpload=async t=>{var e;const i=t.target,o=null===(e=i.files)||void 0===e?void 0:e[0];if(!o)return;this.showLoadingSpinner=!0;const s={file:o,token:this.token,campaignId:this.campaignId,apiPath:this.apiPath},r=await(async t=>{const{file:e,token:i,campaignId:o,apiPath:s}=t;try{const t=(await x(e)()).src,r=await y("shopTheLook",i,{apiPath:s,campaignId:o})(e);return a.fold((t=>a.left(`Upload failed: ${t.inner}`)),(e=>{var i,o;const s=(null===(o=null===(i=e.interactions)||void 0===i?void 0:i.suggestedSearchAreas)||void 0===o?void 0:o.map((t=>t.rectangle)))||[];return a.right({imageUrl:t,detectedObjects:s,visualSearchId:e.requestId||null})}))(r)}catch(t){return a.left(`Failed to process image: ${t}`)}})(s);a.fold((t=>{console.error(t),this.showLoadingSpinner=!1}),(t=>{var e;this.clearModalAndSlideState(),this.showCropper&&(null===(e=this.cropperManager)||void 0===e||e.destroyAll()),this.imageStore.shiftIndicesForward(0),this.pendingUploadData={detectedObjects:t.detectedObjects,visualSearchId:t.visualSearchId},this.uploadedImageUrls=[t.imageUrl,...this.uploadedImageUrls],this.imageUrlsList=$(this.uploadedImageUrls,this.imageUrls),this.totalImages=this.imageUrlsList.length,this.swiperActiveIndex=0,this.showLoadingSpinner=!1,requestAnimationFrame((()=>{this.navigateToSlide(0)}))}))(r),i.value=""},this.handleNavigatePrev=()=>{this.swiperActiveIndex>0&&this.updateSlideIndex(this.swiperActiveIndex-1)},this.handleNavigateNext=()=>{this.swiperActiveIndex<this.totalImages-1&&this.updateSlideIndex(this.swiperActiveIndex+1)},this.updateSlideIndex=t=>{this.isNavigatingToSlide=!0,this.swiperActiveIndex=t,this.navigateToSlide(t),this.clearModalAndSlideState(),setTimeout((()=>{this.isNavigatingToSlide=!1;const e=this.imageStore.getImageState(t);e.searchCompleted||e.searchTriggered?this.performVisualSearchIfReady():this.forceSearchForSlide(t),this.showCropper&&this.activateCropperForSlide(t)}),100)},this.showNavigation=()=>this.needNavigation&&D()||this.showCropper,this.renderSwiperWrapper=()=>{const e=!this.showCropper||D();return(e=>{const{imageUrls:i,swiperActiveIndex:o,height:s,onSlideChange:r,onImageRef:a,renderDetectedObjects:n,onSwiperRef:c,swiperKey:l,allowTouchMove:d=!0}=e;if(!i||i.length<=1)return t("div",{class:"image-container"},t("img",{ref:t=>a(t,0),src:(null==i?void 0:i[0])||"",alt:"Shop-the-Look",class:"main-image",style:E(s)}),n(0));const u=v(),g=h(u);return t("div",{class:"swiper-container-wrapper"},t("div",{class:"swiper-wrapper "+(u?"desktop-carousel":"mobile-slider")},t("swiper-container",{key:l,ref:t=>{t&&!t.swiper&&p(t,{isDesktop:u,initialSlide:o,pagination:!0,keyboard:!0,allowTouchMove:d}),c&&c(t)},onSlideChange:r,style:g,pagination:u?void 0:"true","pagination-clickable":u?void 0:"true"},i.map(((e,i)=>t("swiper-slide",{key:i},t("div",{class:"image-container"},t("img",{ref:t=>a(t,i),src:e,alt:`Shop-the-Look ${i+1}`,class:"main-image",style:E(s)}),n(i))))))))})({imageUrls:this.imageUrlsList,swiperActiveIndex:this.swiperActiveIndex,height:this.height,detectedObjects:this.getCurrentImageState().detectedObjects,onSlideChange:this.handleSlideChange,onImageRef:this.handleImageRef,renderDetectedObjects:this.renderDetectedObjectsWrapper,swiperKey:this.swiperKey,allowTouchMove:e})},this.renderModalWrapper=()=>(e=>{const{showModal:i,selectedDetectedObject:o,modalPosition:s,searchResults:r,onProductClick:a,showDetailedView:n=!1,selectedProductIndex:c=0,onProductDetailsClick:l,onBackToGrid:d,currencySign:h,locale:p,numberLocale:u,showMultipleImages:g=!1,imageResolutionWidth:b,modalContentRef:f}=e;if(!i||!o||!(null==r?void 0:r.length))return null;const m=!v();return t("div",{ref:f,class:"modal-content-wrapper "+(m?"mobile-modal":"desktop-modal"),style:s?{"--modal-x":`${s.x}px`,"--modal-y":`${s.y}px`,"--modal-anchor":s.anchor}:{},onClick:t=>t.stopPropagation()},t("div",{class:"modal-body"},t("div",{class:"product-grid-container "+(n?"hidden":"")},r.length>0&&(e=>{const{searchResults:i,imageResolutionWidth:o,onProductClick:s,onProductDetailsClick:r}=e;if(!i.length)return null;const a=i.slice(0,4);return t("div",{class:"search-results-grid",part:"shop-the-look-results-grid"},a.map(((e,i)=>{var a,n;return t("div",{key:`${e.productId}-${i}`,class:"result-item",part:"shop-the-look-result-item",onClick:()=>{r?r(e,i):s(e)}},t("div",{class:"result-image",part:"shop-the-look-result-image-container"},t("vviinn-image",{alt:e.title||"",imageTitle:e.title||"",src:(null===(a=e.image)||void 0===a?void 0:a.thumbnail)||(null===(n=e.image)||void 0===n?void 0:n.original)||"",responsive:!0,imageResolutionWidth:o})))})))})({searchResults:r,imageResolutionWidth:b,onProductClick:a,onProductDetailsClick:l})),t("div",{class:"product-details-container "+(n?"":"hidden")},r.length>0&&(e=>{var i,o,s,r;const{searchResults:a,selectedProductIndex:n,onProductClick:c,onBackToGrid:l,currencySign:d,locale:h,numberLocale:p,showMultipleImages:u=!1,imageResolutionWidth:g}=e;if(!a.length)return null;const b=a[n];return b?t("div",{class:"product-details"},t("div",{class:"product-header"},t("button",{class:"back-to-grid-button",onClick:l},t(C,null))),t("div",{class:"product-content"},t("div",{class:"product-details-card-wrapper"},t("vviinn-product-card",{key:b.productId,product:b,class:"product-details-card",productId:b.productId||"",productTitle:b.title||"",brand:b.brand,price:b.price.actual,salePrice:b.price.sale,addPriceContainer:!0,image:null!==(r=null!==(o=null===(i=b.image)||void 0===i?void 0:i.thumbnail)&&void 0!==o?o:null===(s=b.image)||void 0===s?void 0:s.original)&&void 0!==r?r:"",images:b.images,showMultipleImages:u,imageResolutionWidth:g,responsive:!0,currencySign:d||"",locale:h,numberLocale:p,deeplink:b.deeplink,onVviinnProductClick:()=>c(b)})))):null})({searchResults:r,selectedProductIndex:c,onProductClick:a,currencySign:h,locale:p,numberLocale:u,showMultipleImages:g,imageResolutionWidth:b,onBackToGrid:d}))))})({showModal:this.showModal,selectedDetectedObject:this.selectedDetectedObject,modalPosition:this.modalPosition,searchResults:this.imageStore.getImageState(this.modalImageIndex).searchResults,onProductClick:this.handleProductClick,showDetailedView:this.showDetailedView,selectedProductIndex:this.selectedProductIndex,onProductDetailsClick:this.handleProductDetailsClick,onBackToGrid:this.resetDetailedView,currencySign:this.effectiveCurrencySign,locale:this.locale,numberLocale:this.effectiveNumberLocale,showMultipleImages:this.showMultipleImages,imageResolutionWidth:this.imageResolutionWidth,modalContentRef:t=>{this.modalContentRef=t}})}handleProductCardClick(t){var e,i;const{productId:o,clickEvent:s}=t.detail,r=null===(e=this.imageStore)||void 0===e?void 0:e.getImageState(this.modalImageIndex),a=null===(i=null==r?void 0:r.searchResults)||void 0===i?void 0:i.find((t=>t.productId===o));(null==a?void 0:a.deeplink)&&T(a.deeplink,s,this.productDetailsRedirect,this.productDetailsNewTab)}async componentWillLoad(){await S(this.locale),this.imageUrlsList=$(this.uploadedImageUrls,this.imageUrls),this.totalImages=this.imageUrlsList.length,this.currentViewMode=D()?"desktop":"mobile",this.updateNavigationVisibility();D();this.imageStore=new L({threshold:.01,token:this.token,isWidgetVisible:this.isWidgetVisible,totalImages:this.totalImages,isModalOpen:this.showModal,onVisualSearchTrigger:this.handleVisualSearchTrigger.bind(this)}),this.showCropper&&(this.cropperManager=new V({onCropEnd:(t,e)=>{this.debouncedCropSearch(t,e)}}))}componentDidLoad(){window.addEventListener("resize",this.handleResize),document.addEventListener("click",this.handleDocumentClick),this.initializeContainerVisibilityTracking(),this.setupSwiperEventListener(),this.setupSwiperDragEventListeners()}onViewModeChange(t){t&&requestAnimationFrame((()=>{this.setupSwiperEventListener(),this.setupSwiperDragEventListeners()}))}onShowModalChange(t){var e;null===(e=this.imageStore)||void 0===e||e.updateConfig({isModalOpen:t})}clearModalAndSlideState(){this.showModal=!1,this.selectedDetectedObject=null,this.modalPosition=null,this.resetDetailedView(),this.modalImageIndex=0,this.autoSelectTimeout&&(clearTimeout(this.autoSelectTimeout),this.autoSelectTimeout=void 0)}updateSearchingState(t=!1){var e,i;this.showLoadingSpinner=null!==(i=null===(e=this.imageStore)||void 0===e?void 0:e.hasActiveSearches())&&void 0!==i&&i,t&&(this.showLoadingSpinner=!1)}getCurrentImageState(){var t;return null===(t=this.imageStore)||void 0===t?void 0:t.getImageState(this.swiperActiveIndex)}isCurrentSlide(t){return t===this.swiperActiveIndex}get shouldManageDragging(){return this.showCropper&&D()}get effectiveCurrencySign(){var t;return null!==(t=this.currencySign)&&void 0!==t?t:I.currencySign}get effectiveNumberLocale(){return this.numberLocale||this.locale||I.locale}disconnectedCallback(){var t,e,i,o;window.removeEventListener("resize",this.handleResize),document.removeEventListener("click",this.handleDocumentClick),null===(t=this.intersectionObserver)||void 0===t||t.disconnect(),null===(e=this.imageStore)||void 0===e||e.disconnectAll(),null===(i=this.cropperManager)||void 0===i||i.destroyAll(),this.autoSelectTimeout&&clearTimeout(this.autoSelectTimeout),this.cropDebounceTimeout&&clearTimeout(this.cropDebounceTimeout);const s=null===(o=this.el.shadowRoot)||void 0===o?void 0:o.querySelector("swiper-container");s&&(s.removeEventListener("swiperslidechange",this.handleSlideChange),s.removeEventListener("swipersliderfirstmove",this.handleSwiperScroll),this.shouldManageDragging&&s.removeEventListener("pointerdown",this.handleSwiperPointerDown))}initializeContainerVisibilityTracking(){D();this.intersectionObserver=b(this.el,{threshold:.01,onIntersectionChange:t=>{var e;const i=this.isWidgetVisible;this.isWidgetVisible=t,null===(e=this.imageStore)||void 0===e||e.updateConfig({isWidgetVisible:this.isWidgetVisible,isModalOpen:this.showModal}),!i&&this.isWidgetVisible&&this.performVisualSearchIfReady()}})}setupSwiperEventListener(){var t;const e=null===(t=this.el.shadowRoot)||void 0===t?void 0:t.querySelector("swiper-container");e&&setTimeout((()=>{e.addEventListener("swiperslidechange",this.handleSlideChange)}),200)}setupSwiperDragEventListeners(){var t;const e=null===(t=this.el.shadowRoot)||void 0===t?void 0:t.querySelector("swiper-container");e&&setTimeout((()=>{e.addEventListener("swipersliderfirstmove",this.handleSwiperScroll,{passive:!0}),this.shouldManageDragging&&e.addEventListener("pointerdown",this.handleSwiperPointerDown,{capture:!0})}),200)}updateSwiperAllowTouchMove(t){var e;const i=null===(e=this.el.shadowRoot)||void 0===e?void 0:e.querySelector("swiper-container"),o=null==i?void 0:i.swiper;void 0!==(null==o?void 0:o.allowTouchMove)&&(o.allowTouchMove=t)}setupObserverAfterSwiper(t,e){setTimeout((()=>{var i;const o=null===(i=this.el.shadowRoot)||void 0===i?void 0:i.querySelector("swiper-container");if(o){const i=()=>{this.imageStore.setupImageIntersectionObserver(t,e)};(null==o?void 0:o.swiper)?i():(o.addEventListener("swiperinit",i,{once:!0}),setTimeout((()=>{const i=this.imageStore.getImageState(e);(null==i?void 0:i.observerSetup)||this.imageStore.setupImageIntersectionObserver(t,e)}),1e3))}}),200)}performVisualSearchIfReady(){const t=D();if(this.imageStore.updateConfig({isWidgetVisible:this.isWidgetVisible,token:this.token,totalImages:this.totalImages,isModalOpen:this.showModal}),this.token&&this.isWidgetVisible){const e=this.imageStore.getImageState(this.swiperActiveIndex);if(null==e?void 0:e.searchCompleted)this.activateCurrentSlide();else if(1===this.totalImages||!t||this.showCropper){t&&1!==this.totalImages&&!this.showCropper||this.markCurrentImageAsVisible();const e=this.imageStore.getImageState(this.swiperActiveIndex);(null==e?void 0:e.searchTriggered)||(this.imageStore.updateImageState(this.swiperActiveIndex,{searchTriggered:!0}),this.performVisualSearch(this.swiperActiveIndex)),this.showCropper&&this.activateCropperForSlide(this.swiperActiveIndex)}}}markCurrentImageAsVisible(){const t=this.imageStore.getImageState(this.swiperActiveIndex);t&&(t.isVisible=!0,this.imageStore.setImageState(this.swiperActiveIndex,t))}navigateToSlide(t){var e;const i=null===(e=this.el.shadowRoot)||void 0===e?void 0:e.querySelector("swiper-container");(null==i?void 0:i.swiper)&&i.swiper.slideTo(t)}forceSearchForSlide(t){const e=this.imageStore.getImageState(t);e&&(e.isVisible=!0,this.imageStore.setImageState(t,e)),this.imageStore.updateImageState(t,{searchTriggered:!0}),this.performVisualSearch(t)}ensureSlideSearchTriggered(t){const e=this.imageStore.getImageState(t);e.searchCompleted||e.searchTriggered?e.searchCompleted?this.activateCurrentSlide():this.performVisualSearchIfReady():this.forceSearchForSlide(t)}activateCurrentSlide(){var t;this.markCurrentImageAsVisible();const e=this.imageStore.getImageState(this.swiperActiveIndex);(null===(t=null==e?void 0:e.detectedObjects)||void 0===t?void 0:t.length)>0&&!this.showModal&&this.scheduleAutoSelectFirstObject(this.swiperActiveIndex,e.detectedObjects)}getCropperBounds(t){var e,i;if(this.showCropper&&(null===(e=this.cropperManager)||void 0===e?void 0:e.hasCropper)&&this.cropperManager.hasCropper(t)){const t=null===(i=this.el.shadowRoot)||void 0===i?void 0:i.querySelector(".cropper-container .cropper-canvas img");if(t&&t.offsetWidth>0)return M(t)}return null}getStoreBounds(t){const e=this.imageStore.getImageElement(t);return e&&e.offsetWidth>0?M(e):null}getVisibleSlideBounds(t){var e;const i=Array.from((null===(e=this.el.shadowRoot)||void 0===e?void 0:e.querySelectorAll("swiper-slide img"))||[]).filter((t=>!t.closest(".cropper-container")&&t.offsetWidth>0));return i&&i[t]?M(i[t]):null}getImageBounds(t){return this.getCropperBounds(t)||this.getStoreBounds(t)||this.getVisibleSlideBounds(t)}scheduleAutoSelectFirstObject(t,e){const i=!(null==e?void 0:e.length),o=!this.isCurrentSlide(t);i||o||this.autoSelectTimeout||this.isManualObjectSelection||this.isNavigatingToSlide||(this.autoSelectTimeout=window.setTimeout((()=>{if(this.autoSelectTimeout=void 0,!this.isCurrentSlide(t)||this.showModal||this.isNavigatingToSlide)return;const i=e[0];i&&this.handleDetectedObjectClick(i,0,t)}),500))}render(){return t(o,{key:"1d759a263f4ec8542abb6c280d33fe87e7677293",exportparts:j},P(this.cssUrl),t("div",{key:"6da6bac33ab4a292beac89c727b85eabfbcc5e0a",class:`shop-the-look-container ${this.showModal?"modal-open":""} ${this.showCropper?"with-cropper":""} widget-style-${this.widgetStyle}`},t("div",{key:"abd4fdec2cfae57edf1cc5cc1affec4cbd3df3b7",class:"main-content"},this.renderSwiperWrapper(),this.showLoadingSpinner&&t("div",{key:"c8d2fd426a089db0a63a2cf0ece673ba38d0003e",class:"search-loader"},t("vviinn-preloader",{key:"9b7875a2a604f70b153c746f2b91b42c3acb6640"}))),this.renderModalWrapper(),t("div",{key:"ce4b9cc4daeb960ed525c7f26e54598a726a88c1",class:"actions-container",part:"shop-the-look-actions-container"},this.uploadMode&&t("div",{key:"bf729ba29252be5663f19e98eed870189e6ca6dd",class:"upload-button-container"},t("button",{key:"87ccb25477035b7f4c922fff362a93add31c42c3",class:"upload-button",part:"shop-the-look-upload-button",onClick:()=>{var t;return null===(t=this.fileInput)||void 0===t?void 0:t.click()},disabled:this.showLoadingSpinner},t("span",{key:"13d01e16d311d8084d6a7dfd112f880338bea50f",class:"upload-button-icon",part:"shop-the-look-upload-button-icon"},t("slot",{key:"6cc6f8ae6e75ff4214e6c0aad42dde6411385408",name:"vviinn-image-upload-icon"},t(z,{key:"104e7cb1c6d39a1123dee6fa7d932c662efaf8db"}))),t("span",{key:"d57ab3ed9f66678f70905594ef83f9f08d9c0c9d",class:"upload-button-text",part:"shop-the-look-upload-button-text"},t("slot",{key:"c7e599b553012bd8e4a9d9c98ce46022f6a89c81",name:"upload-button-text"}))),t("input",{key:"a8748cc6bf803af1c7986ae702c118ba3060d8e3",type:"file",class:"visually-hidden",accept:k(),onChange:this.handleFileUpload,ref:t=>this.fileInput=t})),this.showNavigation()&&(i=this.totalImages,s=this.handleNavigatePrev,r=this.handleNavigateNext,t("div",{class:"carousel-navigation"},t("button",{class:"swiper-button-prev "+(0===(e=this.swiperActiveIndex)?"disabled":""),onClick:()=>s()},t(C,null)),t("button",{class:"swiper-button-next "+(e===i-1?"disabled":""),onClick:()=>r()},t(C,null)))))));var e,i,s,r}get el(){return s(this)}static get watchers(){return{currentViewMode:["onViewModeChange"],showModal:["onShowModalChange"]}}};F.style=":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;}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none !important;max-width:none !important;min-height:0 !important;min-width:0 !important;width:100%}.cropper-wrap-box,.cropper-canvas,.cropper-drag-box,.cropper-crop-box,.cropper-modal{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-wrap-box,.cropper-canvas{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:0.4}.cropper-view-box{display:block;height:100%;overflow:hidden;width:100%;border-radius:5px}.cropper-face,.cropper-point{display:block;height:100%;opacity:0.1;position:absolute;width:100%}.cropper-face{left:0;top:0;border-radius:5px}.cropper-point{--cropper-point-width:44px;height:var(--cropper-point-width);width:var(--cropper-point-width);opacity:1}.point-e,.point-s,.point-w,.point-n{display:none}.point-ne,.point-nw,.point-sw,.point-se{--delta:-9px}.point-ne{cursor:nesw-resize;right:var(--delta);top:var(--delta)}.point-nw{cursor:nwse-resize;left:var(--delta);top:var(--delta)}.point-sw{cursor:nesw-resize;bottom:var(--delta);left:var(--delta)}.point-se{cursor:nwse-resize;bottom:var(--delta);right:var(--delta)}.cropper-point::before{position:absolute;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='38' height='38' viewBox='0 0 38 38' fill='none'%3E%3Cpath d='M3 35H23C29.6274 35 35 29.6274 35 23V3' stroke='white' stroke-width='6' stroke-linecap='square'/%3E%3C/svg%3E\");display:block;pointer-events:none}.point-ne::before{transform:rotate(-90deg);left:0px;top:6px}.point-nw::before{transform:rotate(180deg);left:6px;top:6px}.point-sw::before{transform:rotate(90deg);left:6px;top:0px}.point-se::before{left:0px;top:0px}.cropper-invisible{opacity:0}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none !important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}swiper-container::part(bullet){width:8px;height:8px;border-radius:var(--border-radius-full);background:var(--color-border-02);transition:width 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n height 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n border-radius 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n background 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);margin:0;opacity:1;cursor:pointer;border:none;outline:none;transform:scale(1);position:relative}swiper-container::part(bullet)::after{content:\"\";position:absolute;top:-8px;left:-8px;right:-8px;bottom:-8px;cursor:pointer}swiper-container::part(bullet):hover{background:rgba(22, 22, 22, 0.5);transform:scale(1.2)}swiper-container::part(bullet-active){width:24px;height:8px;border-radius:var(--spacing-50);background:var(--color-icon-helper)}swiper-container::part(bullet-active):hover{background:var(--color-icon-secondary);transform:scale(1.1)}:host{--shop-the-look-shadow:0px 2px 4px 0px rgba(0, 0, 0, 0.25);display:block;font-family:var(--font-family-base);box-sizing:border-box;max-width:100%}.shop-the-look-container{position:relative;width:100%;background:var(--color-bg-base)}.main-content{position:relative;display:flex;flex-direction:column;gap:var(--spacing-200);align-items:center}.actions-container{width:100%;display:flex;align-items:center;gap:var(--spacing-300);margin-top:var(--spacing-250);justify-content:flex-end}.upload-button{display:inline-flex;padding:var(--spacing-150);justify-content:center;align-items:center;gap:var(--spacing-100);background:var(--button-bg-color-primary);border:none;border-radius:var(--border-radius-100);color:var(--color-text-inverse);font-family:var(--font-family-base);font-size:16px;font-weight:500;cursor:pointer;transition:background 0.2s ease}.upload-button-icon{display:inline-flex;align-items:center}.upload-button-text{display:contents}.upload-button:hover{background:var(--button-bg-color-primary-hover)}.upload-button:disabled{cursor:not-allowed}.image-container{position:relative;border-radius:var(--border-radius-200);overflow:hidden;background:var(--color-field-02);display:flex;justify-content:center;align-items:center;box-sizing:border-box;max-width:100%}.main-image{display:block;-o-object-fit:contain;object-fit:contain}.swiper-container-wrapper{width:100%;height:100%;display:flex;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%}swiper-container{width:100%;height:100%;border-radius:var(--border-radius-200);overflow:hidden}swiper-slide{display:flex;justify-content:center;align-items:center;width:100%;height:100%;flex-shrink:0}swiper-container::part(pagination){bottom:var(--spacing-250);display:flex;justify-content:center;align-items:center;gap:var(--spacing-100);padding:var(--spacing-100) 0}swiper-container::part(bullet-active):hover{background:var(--color-icon-secondary);transform:scale(1.1)}.carousel-navigation{display:flex;gap:var(--spacing-100)}.swiper-button-prev,.swiper-button-next{position:relative;width:48px;height:48px;background:var(--button-bg-color-secondary);border:none;border-radius:var(--border-radius-full);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background 0.3s ease,\n opacity 0.3s ease;margin:0}.swiper-button-prev:hover,.swiper-button-next:hover{background:var(--button-bg-color-secondary-hover)}.swiper-button-next svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-button-next{color:var(--color-text-secondary)}.swiper-button-prev.disabled,.swiper-button-next.disabled{opacity:0.5;cursor:not-allowed;pointer-events:none}.desktop-carousel{position:relative;width:100%;max-width:none}.desktop-carousel swiper-container{width:100%;height:100%;justify-content:flex-start}.desktop-carousel .swiper-wrapper{justify-content:flex-start;align-items:flex-start}.desktop-carousel .main-image{overflow:hidden;border-radius:var(--border-radius-200)}.desktop-carousel vviinn-detected-object{position:absolute;z-index:15;overflow:visible}.shop-the-look-container .desktop-carousel swiper-slide{width:auto;flex-shrink:0}.shop-the-look-container .desktop-carousel swiper-container::part(pagination){display:none}.mobile-slider swiper-slide{width:auto;display:flex;justify-content:center}.mobile-slider swiper-container::part(pagination){display:flex}.shop-the-look-container .mobile-slider swiper-container::part(pagination){display:flex;justify-content:center;align-items:center;gap:var(--spacing-100);padding:var(--spacing-100) 0}.modal-content-wrapper{position:absolute;background:var(--color-bg-base);border-radius:var(--border-radius-150);overflow:hidden;box-shadow:0 2px 4px 0 rgba(0, 0, 0, 0.25);z-index:10000;top:var(--modal-y, 50%);left:var(--modal-x, 50%)}.modal-content-wrapper.mobile-modal{max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);margin:0}.modal-content-wrapper[style*=\"--modal-anchor: top-left\"]{transform:translate(0, 0)}.modal-content-wrapper[style*=\"--modal-anchor: top-right\"]{transform:translate(-100%, 0)}.modal-content-wrapper[style*=\"--modal-anchor: bottom-left\"]{transform:translate(0, -100%)}.modal-content-wrapper[style*=\"--modal-anchor: bottom-right\"]{transform:translate(-100%, -100%)}.modal-content-wrapper:not([style*=\"--modal-anchor\"]){transform:translate(-50%, -50%)}.modal-body{padding:var(--spacing-100)}.search-results-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-50);width:var(--shop-the-look-results-grid-width, 140px)}.result-item{cursor:pointer;border-radius:var(--spacing-75);overflow:hidden;aspect-ratio:var(--product-card-image-aspect-ratio, 1)}.result-image{width:100%;height:100%;position:relative}.product-grid-container.hidden,.product-details-container.hidden{display:none}.product-details{display:flex;flex-direction:column;height:100%;gap:var(--spacing-75);width:-moz-fit-content;width:fit-content}.product-header{display:flex;align-items:center}.product-content{flex:1;position:relative}.product-details-card-wrapper{height:100%;padding:0;width:var(--shop-the-look-product-card-width, 160px);max-width:var(--shop-the-look-product-card-width, 160px)}.product-details-card{height:100%;background:var(--color-bg-base);border:none;width:100%;max-width:100%}.back-to-grid-button{display:contents;background:none;border:none;cursor:pointer;padding:0}.back-to-grid-button svg{width:24px;height:24px;color:var(--color-icon-helper);transition:color 0.2s ease}.back-to-grid-button:hover svg{color:var(--color-icon-secondary)}vviinn-product-card::part(price-container){flex-direction:row}vviinn-image::part(image),.product-details-card-wrapper vviinn-product-card::part(image),.product-details-card-wrapper vviinn-product-card::part(image-picture){border-radius:var(--border-radius-100);overflow:hidden}.search-loader{position:absolute;top:var(--spacing-200);right:var(--spacing-200);z-index:100;background:rgba(255, 255, 255, 0.9);border-radius:var(--border-radius-full);padding:var(--spacing-100);backdrop-filter:blur(4px)}.search-loader vviinn-preloader{width:24px;height:24px}.shop-the-look-container.modal-open vviinn-detected-object{z-index:10001}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}.desktop-carousel vviinn-detected-object{position:absolute;z-index:15;overflow:visible}.desktop-carousel .main-image{overflow:hidden;border-radius:var(--border-radius-200)}.shop-the-look-container .desktop-carousel swiper-container::part(pagination){display:none}.desktop-carousel .swiper-button-prev,.desktop-carousel .swiper-button-next{display:flex}.desktop-carousel{max-width:none}.desktop-carousel .swiper-wrapper{justify-content:flex-start;align-items:flex-start}.shop-the-look-container .desktop-carousel swiper-slide{width:auto;flex-shrink:0}.mobile-slider swiper-slide{width:auto;display:flex;justify-content:center}@media (max-width: 768px){.shop-the-look-container:not(.with-cropper) .carousel-navigation{display:none}.mobile-slider{width:100%}.shop-the-look-container .mobile-slider swiper-slide{width:100%;flex-shrink:0}.shop-the-look-container{width:100%;max-width:100vw}.shop-the-look-container .image-container,.shop-the-look-container swiper-container,.shop-the-look-container swiper-slide{width:-moz-fit-content;width:fit-content;max-width:100%}swiper-container::part(wrapper){align-items:center}.shop-the-look-container .main-image{max-width:100%;height:auto;width:auto;-o-object-fit:contain;object-fit:contain}.modal-content-wrapper.desktop-modal{max-width:calc(100vw - 16px);max-height:calc(100vh - 48px)}.search-results-grid{width:min(\n var(--shop-the-look-results-grid-width, 140px),\n calc(100vw - 32px)\n );gap:var(--spacing-50)}.carousel-navigation{bottom:var(--spacing-50);right:var(--spacing-50)}.product-details-card-wrapper{width:var(--shop-the-look-product-card-width, 120px);max-width:var(--shop-the-look-product-card-width, 120px)}}.cropper-wrap-box{border-radius:var(--border-radius-200);overflow:hidden}.widget-style-cornered .image-container,.widget-style-cornered swiper-container,.widget-style-cornered .desktop-carousel .main-image,.widget-style-cornered .modal-content-wrapper,.widget-style-cornered .result-item,.widget-style-cornered .desktop-carousel .swiper-button-prev,.widget-style-cornered .desktop-carousel .swiper-button-next,.widget-style-cornered .cropper-wrap-box,.widget-style-cornered vviinn-image::part(image),.widget-style-cornered .product-details-card-wrapper vviinn-product-card::part(image),.widget-style-cornered .product-details-card-wrapper vviinn-product-card::part(image-picture),.widget-style-cornered .upload-button,.widget-style-cornered .carousel-navigation button{border-radius:0}";export{F as vviinn_shop_the_look}
|
|
8
|
+
import{h as t,r as e,c as i,H as o,g as s}from"./p-CbnDh7O4.js";import{a as r,E as a}from"./p-CzioeeIx.js";import{C as n,c,g as l,i as d}from"./p-DE6j1u2q.js";import{g as h,c as p,r as u,e as g,s as b}from"./p-ZqDRXfkq.js";import{i as v,s as f,m,a as w,b as x,c as y,g as k}from"./p-DyEil1RE.js";import{S as C}from"./p-YwpO7yZ1.js";import{i as S,a as j}from"./p-Cbeu6HrQ.js";import{d as I}from"./p-DgTklFVi.js";import{P as O,r as P}from"./p-C-PBA2bz.js";import{o as T}from"./p-Bpe4n4Ll.js";const z=()=>t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none"},t("path",{d:"M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H13C13.2833 3 13.5208 3.09583 13.7125 3.2875C13.9042 3.47917 14 3.71667 14 4C14 4.28333 13.9042 4.52083 13.7125 4.7125C13.5208 4.90417 13.2833 5 13 5H5V19H19V11C19 10.7167 19.0958 10.4792 19.2875 10.2875C19.4792 10.0958 19.7167 10 20 10C20.2833 10 20.5208 10.0958 20.7125 10.2875C20.9042 10.4792 21 10.7167 21 11V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM17 7H16C15.7167 7 15.4792 6.90417 15.2875 6.7125C15.0958 6.52083 15 6.28333 15 6C15 5.71667 15.0958 5.47917 15.2875 5.2875C15.4792 5.09583 15.7167 5 16 5H17V4C17 3.71667 17.0958 3.47917 17.2875 3.2875C17.4792 3.09583 17.7167 3 18 3C18.2833 3 18.5208 3.09583 18.7125 3.2875C18.9042 3.47917 19 3.71667 19 4V5H20C20.2833 5 20.5208 5.09583 20.7125 5.2875C20.9042 5.47917 21 5.71667 21 6C21 6.28333 20.9042 6.52083 20.7125 6.7125C20.5208 6.90417 20.2833 7 20 7H19V8C19 8.28333 18.9042 8.52083 18.7125 8.7125C18.5208 8.90417 18.2833 9 18 9C17.7167 9 17.4792 8.90417 17.2875 8.7125C17.0958 8.52083 17 8.28333 17 8V7ZM11.25 16L9.4 13.525C9.3 13.3917 9.16667 13.325 9 13.325C8.83333 13.325 8.7 13.3917 8.6 13.525L6.6 16.2C6.46667 16.3667 6.45 16.5417 6.55 16.725C6.65 16.9083 6.8 17 7 17H17C17.2 17 17.35 16.9083 17.45 16.725C17.55 16.5417 17.5333 16.3667 17.4 16.2L14.65 12.525C14.55 12.3917 14.4167 12.325 14.25 12.325C14.0833 12.325 13.95 12.3917 13.85 12.525L11.25 16Z",fill:"white"}));class V{constructor(t){this.cropperInstances=new Map,this.startCropBoxData=new Map,this.pendingImageLoads=new Map,this.config=t}destroyCropper(t){const e=this.cropperInstances.get(t);e&&(e.destroy(),this.cropperInstances.delete(t),this.startCropBoxData.delete(t));const i=this.pendingImageLoads.get(t);i&&(i.element.removeEventListener("load",i.handlers.load),i.element.removeEventListener("error",i.handlers.error),this.pendingImageLoads.delete(t))}initializeCropper(t,e,i){if(e!==i)return;this.cropperInstances.has(e)&&this.destroyCropper(e);const o=new n(t,Object.assign(Object.assign({},c),{cropstart:()=>this.handleCropStart(o,e),cropend:()=>this.handleCropEnd(o,e)}));this.cropperInstances.set(e,o)}handleCropStart(t,e){this.startCropBoxData.set(e,l(t))}handleCropEnd(t,e){const i=l(t),o=this.startCropBoxData.get(e);if(o&&d(o,i))return;const s=t.getImageData(),a={left:i.left-s.left,top:i.top-s.top,width:i.width,height:i.height},n=r({width:s.width,height:s.height})(a);this.config.onCropEnd(n,e)}activateCropperForSlide(t,e){if(this.cropperInstances.forEach(((e,i)=>{i!==t&&this.destroyCropper(i)})),!this.cropperInstances.has(t)){const i=e(t);if(!i)return;const o=()=>{this.pendingImageLoads.delete(t),i.offsetWidth>0&&this.initializeCropper(i,t,t)},s=()=>{this.pendingImageLoads.delete(t),console.warn(`Failed to load image for cropper at index ${t}`)};if(i.complete&&i.offsetWidth>0)o();else{const e={load:o,error:s};this.pendingImageLoads.set(t,{element:i,handlers:e}),i.addEventListener("load",e.load,{once:!0}),i.addEventListener("error",e.error,{once:!0})}}}destroyAll(){Array.from(this.cropperInstances.keys()).forEach((t=>this.destroyCropper(t)))}hasCropper(t){return this.cropperInstances.has(t)}updateCropperDimensions(t,e){if(this.cropperInstances.has(t)){this.destroyCropper(t);const i=e(t);i&&i.complete&&i.offsetWidth>0&&this.initializeCropper(i,t,t)}}}const M=t=>{if(!t)return null;const e=t.getBoundingClientRect();return{left:e.left,top:e.top,width:e.width,height:e.height}},D=v,R=(t,e,i,o)=>{const s=o||M(t);if(!s)return{x:0,y:0};const r=(e.left+e.width/2)*s.width,a=(e.top+e.height/2)*s.height,n=[a>s.height/2?"bottom":"top",r>s.width/2?"right":"left"].join("-"),c=D()?24:16,l=!D();let d=0,h=0;switch(n){case"top-left":d=l?c-32:c,h=l?c+6:c;break;case"top-right":d=l?32-c:-c,h=l?c+6:c;break;case"bottom-left":d=l?c-32:c,h=l?-c-6:-c;break;case"bottom-right":d=l?32-c:-c,h=l?-c-6:-c}const p=s.left+r+d,u=s.top+a+h;if(i){const t=i.getBoundingClientRect();return{x:p-t.left,y:u-t.top,anchor:n}}return{x:p,y:u,anchor:n}},A=async t=>{try{const e=await w("shopTheLook",t.imageUrl,t.token,{apiPath:t.apiPath,campaignId:t.campaignId});return a.fold((t=>a.left(`Visual search failed: ${t.inner}`)),(t=>{var e,i;const o=(null===(i=null===(e=t.interactions)||void 0===e?void 0:e.suggestedSearchAreas)||void 0===i?void 0:i.map((t=>t.rectangle)))||[];return a.right({detectedObjects:o,searchResults:[],visualSearchId:t.requestId||null})}))(e)}catch(t){return a.left(`Visual search initialization failed: ${t}`)}},$=(t,e)=>[...t,...e&&e.trim()?e.split(",").map((t=>t.trim())).filter((t=>t.length>0)):[]],E=t=>({detectedObjects:[],searchCompleted:!1,searchResults:[],isVisible:!1,imageElement:t||null,imageBounds:null,visualSearchId:null,searchTriggered:!1,observerSetup:!1,refProcessed:!1});class L{constructor(t){this.imageStates=new Map,this.config=t}updateConfig(t){this.config=Object.assign(Object.assign({},this.config),t)}getImageState(t){return this.imageStates.has(t)||this.imageStates.set(t,E()),this.imageStates.get(t)}updateImageState(t,e){const i=this.getImageState(t);Object.assign(i,e),this.imageStates.set(t,i)}setupImageIntersectionObserver(t,e){if(this.getImageState(e).observerSetup)return;const i=new IntersectionObserver((t=>{t.forEach((t=>{this.updateImageVisibility(e,t.intersectionRatio>=this.config.threshold)}))}),{threshold:this.config.threshold,root:null,rootMargin:"0px"});i.observe(t),this.updateImageState(e,{observer:i,observerSetup:!0})}updateImageVisibility(t,e){var i;const o=this.getImageState(t),s=o.isVisible;if(s===e)return;e&&o.imageElement&&!o.imageBounds&&(o.imageBounds=M(o.imageElement)),this.updateImageState(t,{isVisible:e});const r=null!==(i=this.config.isModalOpen)&&void 0!==i&&i;this.shouldTriggerSearch(t,e,s,o,r)&&(this.updateImageState(t,{searchTriggered:!0}),this.config.onVisualSearchTrigger(t))}shouldTriggerSearch(t,e,i,o,s=!1){if(s)return!1;const r=e&&!1===i,a=!!this.config.token,n=!o.searchCompleted&&!o.searchTriggered,c=this.getTriggeredSearchCount()<this.config.totalImages;return r&&a&&n&&c}getTriggeredSearchCount(){return Array.from(this.imageStates.values()).filter((t=>t.searchTriggered)).length}setImageElement(t,e){this.updateImageState(t,{imageElement:e})}getImageElement(t){return this.getImageState(t).imageElement}setImageState(t,e){this.imageStates.set(t,e)}updateImageStateData(t,e,i,o,s){const r={detectedObjects:e,searchCompleted:i,searchResults:o};void 0!==s&&(r.visualSearchId=s),this.updateImageState(t,r)}disconnectAll(){this.imageStates.forEach((t=>{t.observer&&t.observer.disconnect()})),this.imageStates.clear()}getAllImageStates(){return new Map(this.imageStates)}hasImageState(t){return this.imageStates.has(t)}hasActiveSearches(){return Array.from(this.imageStates.values()).some((t=>t.searchTriggered&&!t.searchCompleted))}shiftIndicesForward(t=0){Array.from(this.imageStates.entries()).filter((([e])=>e>=t)).sort((([t],[e])=>e-t)).forEach((([t,e])=>{this.imageStates.delete(t),this.imageStates.set(t+1,e)}))}}const B=t=>({maxWidth:"100%",maxHeight:`${t}px`,width:"auto",height:v()?`${t}px`:"auto",objectFit:"contain"}),F={campaignTypeId:"VPR",campaignTypeName:"Similar Products",widgetVersion:"1.0.0"};"undefined"!=typeof window&&u();const W=class{constructor(o){e(this,o),this.vviinnShopTheLookDetectedObjectClick=i(this,"vviinnShopTheLookDetectedObjectClick"),this.vviinnShopTheLookProductClick=i(this,"vviinnShopTheLookProductClick"),this.vviinnShopTheLookModalClose=i(this,"vviinnShopTheLookModalClose"),this.imageUrls="",this.height=500,this.campaignId="",this.widgetStyle="rounded",this.showCropper=!1,this.uploadMode=!1,this.showMultipleImages=!1,this.imageResolutionWidth=O,this.cssUrl=null,this.productDetailsNewTab=!1,this.productDetailsRedirect=!0,this.selectedDetectedObject=null,this.showModal=!1,this.modalPosition=null,this.showDetailedView=!1,this.selectedProductIndex=0,this.modalImageIndex=0,this.swiperActiveIndex=0,this.totalImages=1,this.imageUrlsList=[],this.swiperKey="swiper-0",this.needNavigation=!1,this.showLoadingSpinner=!1,this.isSearchInProgress=!1,this.currentViewMode=null,this.isWidgetVisible=!1,this.uploadedImageUrls=[],this.isManualObjectSelection=!1,this.isNavigatingToSlide=!1,this.resetDetailedView=()=>{this.showDetailedView=!1,this.selectedProductIndex=0},this.handleResize=()=>{this.checkViewModeChange(),this.updateNavigationVisibility(),this.showCropper&&this.cropperManager&&requestAnimationFrame((()=>{this.cropperManager.updateCropperDimensions(this.swiperActiveIndex,(t=>this.imageStore.getImageElement(t)))}))},this.handleDocumentClick=t=>{if(!this.showModal||this.showLoadingSpinner)return;const e=t.target;e&&(this.modalContentRef&&this.modalContentRef.contains(e)||e.closest("vviinn-detected-object")||this.handleModalClose())},this.checkViewModeChange=()=>{const t=D()?"desktop":"mobile";t!==this.currentViewMode&&(this.currentViewMode=t,this.showModal&&this.handleModalClose(),this.swiperKey=`swiper-${Date.now()}`)},this.updateNavigationVisibility=()=>{if(this.imageElement&&this.imageElement.offsetWidth>0){const t=window.innerWidth-100,e=Math.floor(t/(this.imageElement.offsetWidth+20));this.needNavigation=this.totalImages>e}else this.needNavigation=this.totalImages>1},this.handleSwiperPointerDown=t=>{var e;const i=(t=>t.target.closest("swiper-slide"))(t);if(!i)return;const o=((t,e)=>e?Array.from(e.querySelectorAll("swiper-slide")||[]).indexOf(t):-1)(i,this.el.shadowRoot);if(-1===o)return;const s=null===(e=this.cropperManager)||void 0===e?void 0:e.hasCropper(o);this.updateSwiperAllowTouchMove(!s)},this.handleSwiperScroll=()=>{this.showModal&&this.handleModalClose()},this.handleVisualSearchTrigger=t=>{this.showModal||(this.performVisualSearchForImage(t),this.updateSearchingState())},this.handleDetectedObjectClick=async(t,e,i=this.swiperActiveIndex)=>{var o,s;if(!this.token)return;D()&&!this.isCurrentSlide(i)?(this.isManualObjectSelection=!0,this.isNavigatingToSlide=!0,this.swiperActiveIndex=i,this.navigateToSlide(i),this.selectedDetectedObject=t,this.modalImageIndex=i,await new Promise((t=>setTimeout((()=>{this.isNavigatingToSlide=!1,requestAnimationFrame((()=>requestAnimationFrame(t)))}),300)))):(this.selectedDetectedObject=t,this.modalImageIndex=i),this.showCropper&&((null===(s=null===(o=this.cropperManager)||void 0===o?void 0:o.hasCropper)||void 0===s?void 0:s.call(o,i))||this.activateCropperForSlide(i)),this.isManualObjectSelection=!1,this.showLoadingSpinner=!0,this.showModal=!1,this.resetDetailedView();const r=this.getImageBounds(i),n=this.imageStore.getImageElement(i)||this.imageElement;r&&n&&(this.modalPosition=R(n,t,this.el,r));const c=this.imageStore.getImageState(i),l={detectedObject:t,imageElement:n,containerElement:this.el,token:this.token,visualSearchId:(null==c?void 0:c.visualSearchId)||f.visualSearchId||null,campaignId:this.campaignId,apiPath:this.apiPath,imageBounds:r,isSearchInProgress:this.isSearchInProgress,setSearchInProgress:t=>{this.isSearchInProgress=t}},d=await(async t=>{const{imageElement:e,detectedObject:i,containerElement:o,visualSearchId:s,token:r,imageBounds:n,campaignId:c,apiPath:l,isSearchInProgress:d,setSearchInProgress:h}=t;if(d)return a.left("Search already in progress");h(!0);try{if(!e)return a.left("Image element is missing");f.searchArea=i;const t=await m("shopTheLook",s||null,r,{apiPath:l,campaignId:c});return a.fold((t=>a.left(`Visual search failed: ${t.inner}`)),(t=>{var s;const r=(null===(s=t.data)||void 0===s?void 0:s.products)||[],c=R(e,i,o,n);return a.right({searchResults:r,modalPosition:c})}))(t)}catch(t){return a.left(`Visual search failed: ${t}`)}finally{h(!1)}})(l);a.fold((t=>{t.includes("Search already in progress")||(console.error("Visual search failed:",t),this.showLoadingSpinner=!1)}),(t=>{t.searchResults&&t.searchResults.length>0&&this.imageStore.updateImageState(i,{searchResults:t.searchResults}),this.showLoadingSpinner=!1,t.searchResults&&t.searchResults.length>0&&this.isCurrentSlide(i)&&(this.showModal=!0),this.vviinnShopTheLookDetectedObjectClick.emit(Object.assign(Object.assign({},F),{detectedObjectId:`detected-${i}-${e}`,product:t.searchResults[0]||null}))}))(d)},this.performVisualSearch=async(t=this.swiperActiveIndex)=>{const e=this.imageUrlsList[t];if(!this.token||!e)return;const i=this.isCurrentSlide(t);i&&(this.showLoadingSpinner=!0);const o={imageUrl:e,token:this.token,campaignId:this.campaignId,apiPath:this.apiPath},s=await A(o);a.fold((e=>{console.error(`Visual search failed for image ${t}:`,e),this.imageStore.updateImageState(t,{searchCompleted:!0}),i&&(this.showLoadingSpinner=!1)}),(e=>{this.imageStore.updateImageStateData(t,e.detectedObjects,!0,e.searchResults,e.visualSearchId||null);const o=this.imageStore.getImageState(t);i&&(this.showLoadingSpinner=!1),o.detectedObjects.length>0&&i&&this.isCurrentSlide(t)&&!this.showModal&&this.scheduleAutoSelectFirstObject(t,o.detectedObjects),this.imageStore.updateImageState(t,{searchCompleted:!0})}))(s)},this.handleProductClick=t=>{this.vviinnShopTheLookProductClick.emit(Object.assign(Object.assign({},F),{detectedObjectId:this.selectedDetectedObject?`detected-${Date.now()}`:"",product:t}))},this.activateCropperForSlide=t=>{var e;null===(e=this.cropperManager)||void 0===e||e.activateCropperForSlide(t,(t=>this.imageStore.getImageElement(t)))},this.debouncedCropSearch=(t,e)=>{this.cropDebounceTimeout&&clearTimeout(this.cropDebounceTimeout),this.cropDebounceTimeout=window.setTimeout((()=>{this.cropDebounceTimeout=void 0,this.handleDetectedObjectClick(t,0,e)}),500)},this.handleModalClose=t=>{this.showLoadingSpinner||t&&t.target!==t.currentTarget||(this.clearModalAndSlideState(),this.vviinnShopTheLookModalClose.emit(F))},this.handleProductDetailsClick=(t,e)=>{this.selectedProductIndex=e,this.showDetailedView=!0},this.handleNavigateProduct=t=>{const e=this.imageStore.getImageState(this.modalImageIndex);"prev"===t&&this.selectedProductIndex>0?this.selectedProductIndex--:"next"===t&&this.selectedProductIndex<e.searchResults.length-1&&this.selectedProductIndex++},this.renderDetectedObjectsWrapper=e=>{const i=this.imageStore.getImageState(e);return((t,e)=>{var i;return!!t&&(D()?t.searchCompleted&&!!(null===(i=t.detectedObjects)||void 0===i?void 0:i.length):e)})(i,this.isCurrentSlide(e))?(e=>{const{imageBounds:i,detectedObjects:o,initialSearchCompleted:s,selectedDetectedObject:r,basicEventData:a,onSelectObject:n}=e;return i&&o.length&&s?o.map(((e,o)=>t("vviinn-detected-object",{key:`detected-${o}`,detectedObject:e,selectedDetectedObject:r,basicEventData:a,imageBounds:i,showInWidget:!1,style:{zIndex:"10"},onVviinnSelectObject:t=>{t.stopPropagation(),n(t.detail.detectedObject,o)}}))):null})({imageBounds:this.getImageBounds(e),detectedObjects:i.detectedObjects,initialSearchCompleted:i.searchCompleted,selectedDetectedObject:this.selectedDetectedObject,basicEventData:F,onSelectObject:(t,i)=>this.handleDetectedObjectClick(t,i,e)}):null},this.handleSlideChange=t=>{var e;const i=g(t);if(void 0!==i){if(i!==this.swiperActiveIndex&&(this.swiperActiveIndex=i),this.clearModalAndSlideState(),this.shouldManageDragging){const t=null===(e=this.cropperManager)||void 0===e?void 0:e.hasCropper(i);this.updateSwiperAllowTouchMove(!t)}setTimeout((()=>{this.isNavigatingToSlide=!1,this.ensureSlideSearchTriggered(this.swiperActiveIndex)}),100)}},this.handleImageRef=(t,e)=>{const i=this.imageStore.getImageState(e);if((!(null==i?void 0:i.refProcessed)||this.imageStore.getImageElement(e)!==t)&&(this.imageStore.updateImageState(e,{refProcessed:!0}),(this.isCurrentSlide(e)||this.totalImages<=1)&&(this.imageElement=t),t)){if(this.imageStore.setImageElement(e,t),this.imageStore.hasImageState(e)){const i=this.imageStore.getImageState(e);i.imageElement=t,this.imageStore.setImageState(e,i)}else{const i=E(t);this.imageStore.setImageState(e,i),this.imageStore.setImageState(e,i)}D()&&this.setupObserverAfterSwiper(t,e);const i=()=>{this.initializeImageForCropper(t,e),this.pendingUploadData&&0===e&&(this.imageStore.updateImageStateData(0,this.pendingUploadData.detectedObjects,!0,[],this.pendingUploadData.visualSearchId),this.pendingUploadData.detectedObjects.length>0&&this.scheduleAutoSelectFirstObject(0,this.pendingUploadData.detectedObjects),this.pendingUploadData=null)};t.complete&&t.offsetWidth>0?i():t.addEventListener("load",i,{once:!0})}},this.updateImageBoundsForElement=(t,e)=>{requestAnimationFrame((()=>{(this.isCurrentSlide(e)||this.totalImages<=1)&&this.updateNavigationVisibility()}))},this.initializeImageForCropper=(t,e)=>{var i;this.updateImageBoundsForElement(t,e),this.isCurrentSlide(e)&&(null===(i=this.cropperManager)||void 0===i||i.initializeCropper(t,e,this.swiperActiveIndex))},this.performVisualSearchForImage=async t=>{const e=this.imageUrlsList[t];if(!this.token||!e)return;const i=this.isCurrentSlide(t);i&&(this.showLoadingSpinner=!0);const o={imageUrl:e,token:this.token,campaignId:this.campaignId,apiPath:this.apiPath},s=await A(o);a.fold((e=>{console.error(`Visual search failed for image ${t}:`,e),this.imageStore.updateImageStateData(t,[],!0,[],null),this.updateSearchingState(i)}),(e=>{this.imageStore.updateImageStateData(t,e.detectedObjects,!0,e.searchResults,e.visualSearchId||null),this.updateSearchingState(i),e.detectedObjects.length>0&&this.isCurrentSlide(t)&&!this.showModal&&!this.isManualObjectSelection&&this.scheduleAutoSelectFirstObject(t,e.detectedObjects)}))(s)},this.pendingUploadData=null,this.handleFileUpload=async t=>{var e;const i=t.target,o=null===(e=i.files)||void 0===e?void 0:e[0];if(!o)return;this.showLoadingSpinner=!0;const s={file:o,token:this.token,campaignId:this.campaignId,apiPath:this.apiPath},r=await(async t=>{const{file:e,token:i,campaignId:o,apiPath:s}=t;try{const t=(await x(e)()).src,r=await y("shopTheLook",i,{apiPath:s,campaignId:o})(e);return a.fold((t=>a.left(`Upload failed: ${t.inner}`)),(e=>{var i,o;const s=(null===(o=null===(i=e.interactions)||void 0===i?void 0:i.suggestedSearchAreas)||void 0===o?void 0:o.map((t=>t.rectangle)))||[];return a.right({imageUrl:t,detectedObjects:s,visualSearchId:e.requestId||null})}))(r)}catch(t){return a.left(`Failed to process image: ${t}`)}})(s);a.fold((t=>{console.error(t),this.showLoadingSpinner=!1}),(t=>{var e;this.clearModalAndSlideState(),this.showCropper&&(null===(e=this.cropperManager)||void 0===e||e.destroyAll()),this.imageStore.shiftIndicesForward(0),this.pendingUploadData={detectedObjects:t.detectedObjects,visualSearchId:t.visualSearchId},this.uploadedImageUrls=[t.imageUrl,...this.uploadedImageUrls],this.imageUrlsList=$(this.uploadedImageUrls,this.imageUrls),this.totalImages=this.imageUrlsList.length,this.swiperActiveIndex=0,this.showLoadingSpinner=!1,requestAnimationFrame((()=>{this.navigateToSlide(0)}))}))(r),i.value=""},this.handleNavigatePrev=()=>{this.swiperActiveIndex>0&&this.updateSlideIndex(this.swiperActiveIndex-1)},this.handleNavigateNext=()=>{this.swiperActiveIndex<this.totalImages-1&&this.updateSlideIndex(this.swiperActiveIndex+1)},this.updateSlideIndex=t=>{this.isNavigatingToSlide=!0,this.swiperActiveIndex=t,this.navigateToSlide(t),this.clearModalAndSlideState(),setTimeout((()=>{this.isNavigatingToSlide=!1;const e=this.imageStore.getImageState(t);e.searchCompleted||e.searchTriggered?this.performVisualSearchIfReady():this.forceSearchForSlide(t),this.showCropper&&this.activateCropperForSlide(t)}),100)},this.showNavigation=()=>this.needNavigation&&D()||this.showCropper,this.renderSwiperWrapper=()=>{const e=!this.showCropper||D();return(e=>{const{imageUrls:i,swiperActiveIndex:o,height:s,onSlideChange:r,onImageRef:a,renderDetectedObjects:n,onSwiperRef:c,swiperKey:l,allowTouchMove:d=!0}=e;if(!i||i.length<=1)return t("div",{class:"image-container"},t("img",{ref:t=>a(t,0),src:(null==i?void 0:i[0])||"",alt:"Shop-the-Look",class:"main-image",style:B(s)}),n(0));const u=v(),g=h(u);return t("div",{class:"swiper-container-wrapper"},t("div",{class:"swiper-wrapper "+(u?"desktop-carousel":"mobile-slider")},t("swiper-container",{key:l,ref:t=>{t&&!t.swiper&&p(t,{isDesktop:u,initialSlide:o,pagination:!0,keyboard:!0,allowTouchMove:d}),c&&c(t)},onSlideChange:r,style:g,pagination:u?void 0:"true","pagination-clickable":u?void 0:"true"},i.map(((e,i)=>t("swiper-slide",{key:i},t("div",{class:"image-container"},t("img",{ref:t=>a(t,i),src:e,alt:`Shop-the-Look ${i+1}`,class:"main-image",style:B(s)}),n(i))))))))})({imageUrls:this.imageUrlsList,swiperActiveIndex:this.swiperActiveIndex,height:this.height,detectedObjects:this.getCurrentImageState().detectedObjects,onSlideChange:this.handleSlideChange,onImageRef:this.handleImageRef,renderDetectedObjects:this.renderDetectedObjectsWrapper,swiperKey:this.swiperKey,allowTouchMove:e})},this.renderModalWrapper=()=>(e=>{const{showModal:i,selectedDetectedObject:o,modalPosition:s,searchResults:r,onProductClick:a,showDetailedView:n=!1,selectedProductIndex:c=0,onProductDetailsClick:l,onBackToGrid:d,currencySign:h,locale:p,numberLocale:u,showMultipleImages:g=!1,imageResolutionWidth:b,modalContentRef:f}=e;if(!i||!o||!(null==r?void 0:r.length))return null;const m=!v();return t("div",{ref:f,class:"modal-content-wrapper "+(m?"mobile-modal":"desktop-modal"),style:s?{"--modal-x":`${s.x}px`,"--modal-y":`${s.y}px`,"--modal-anchor":s.anchor}:{},onClick:t=>t.stopPropagation()},t("div",{class:"modal-body"},t("div",{class:"product-grid-container "+(n?"hidden":"")},r.length>0&&(e=>{const{searchResults:i,imageResolutionWidth:o,onProductClick:s,onProductDetailsClick:r}=e;if(!i.length)return null;const a=i.slice(0,4);return t("div",{class:"search-results-grid",part:"shop-the-look-results-grid"},a.map(((e,i)=>{var a,n;return t("div",{key:`${e.productId}-${i}`,class:"result-item",part:"shop-the-look-result-item",onClick:()=>{r?r(e,i):s(e)}},t("div",{class:"result-image",part:"shop-the-look-result-image-container"},t("vviinn-image",{alt:e.title||"",imageTitle:e.title||"",src:(null===(a=e.image)||void 0===a?void 0:a.thumbnail)||(null===(n=e.image)||void 0===n?void 0:n.original)||"",responsive:!0,imageResolutionWidth:o})))})))})({searchResults:r,imageResolutionWidth:b,onProductClick:a,onProductDetailsClick:l})),t("div",{class:"product-details-container "+(n?"":"hidden")},r.length>0&&(e=>{var i,o,s,r;const{searchResults:a,selectedProductIndex:n,onProductClick:c,onBackToGrid:l,currencySign:d,locale:h,numberLocale:p,showMultipleImages:u=!1,imageResolutionWidth:g}=e;if(!a.length)return null;const b=a[n];return b?t("div",{class:"product-details"},t("div",{class:"product-header"},t("button",{class:"back-to-grid-button",onClick:l},t(C,null))),t("div",{class:"product-content"},t("div",{class:"product-details-card-wrapper"},t("vviinn-product-card",{key:b.productId,product:b,class:"product-details-card",productId:b.productId||"",productTitle:b.title||"",brand:b.brand,price:b.price.actual,salePrice:b.price.sale,addPriceContainer:!0,image:null!==(r=null!==(o=null===(i=b.image)||void 0===i?void 0:i.thumbnail)&&void 0!==o?o:null===(s=b.image)||void 0===s?void 0:s.original)&&void 0!==r?r:"",images:b.images,showMultipleImages:u,imageResolutionWidth:g,responsive:!0,currencySign:d||"",locale:h,numberLocale:p,deeplink:b.deeplink,onVviinnProductClick:()=>c(b)})))):null})({searchResults:r,selectedProductIndex:c,onProductClick:a,currencySign:h,locale:p,numberLocale:u,showMultipleImages:g,imageResolutionWidth:b,onBackToGrid:d}))))})({showModal:this.showModal,selectedDetectedObject:this.selectedDetectedObject,modalPosition:this.modalPosition,searchResults:this.imageStore.getImageState(this.modalImageIndex).searchResults,onProductClick:this.handleProductClick,showDetailedView:this.showDetailedView,selectedProductIndex:this.selectedProductIndex,onProductDetailsClick:this.handleProductDetailsClick,onBackToGrid:this.resetDetailedView,currencySign:this.effectiveCurrencySign,locale:this.locale,numberLocale:this.effectiveNumberLocale,showMultipleImages:this.showMultipleImages,imageResolutionWidth:this.imageResolutionWidth,modalContentRef:t=>{this.modalContentRef=t}})}handleProductCardClick(t){var e,i;const{productId:o,clickEvent:s}=t.detail,r=null===(e=this.imageStore)||void 0===e?void 0:e.getImageState(this.modalImageIndex),a=null===(i=null==r?void 0:r.searchResults)||void 0===i?void 0:i.find((t=>t.productId===o));(null==a?void 0:a.deeplink)&&T(a.deeplink,s,this.productDetailsRedirect,this.productDetailsNewTab)}async componentWillLoad(){await S(this.locale),this.imageUrlsList=$(this.uploadedImageUrls,this.imageUrls),this.totalImages=this.imageUrlsList.length,this.currentViewMode=D()?"desktop":"mobile",this.updateNavigationVisibility();D();this.imageStore=new L({threshold:.01,token:this.token,isWidgetVisible:this.isWidgetVisible,totalImages:this.totalImages,isModalOpen:this.showModal,onVisualSearchTrigger:this.handleVisualSearchTrigger.bind(this)}),this.showCropper&&(this.cropperManager=new V({onCropEnd:(t,e)=>{this.debouncedCropSearch(t,e)}}))}componentDidLoad(){window.addEventListener("resize",this.handleResize),document.addEventListener("click",this.handleDocumentClick),this.initializeContainerVisibilityTracking(),this.setupSwiperEventListener(),this.setupSwiperDragEventListeners()}onViewModeChange(t){t&&requestAnimationFrame((()=>{this.setupSwiperEventListener(),this.setupSwiperDragEventListeners()}))}onShowModalChange(t){var e;null===(e=this.imageStore)||void 0===e||e.updateConfig({isModalOpen:t})}clearModalAndSlideState(){this.showModal=!1,this.selectedDetectedObject=null,this.modalPosition=null,this.resetDetailedView(),this.modalImageIndex=0,this.autoSelectTimeout&&(clearTimeout(this.autoSelectTimeout),this.autoSelectTimeout=void 0)}updateSearchingState(t=!1){var e,i;this.showLoadingSpinner=null!==(i=null===(e=this.imageStore)||void 0===e?void 0:e.hasActiveSearches())&&void 0!==i&&i,t&&(this.showLoadingSpinner=!1)}getCurrentImageState(){var t;return null===(t=this.imageStore)||void 0===t?void 0:t.getImageState(this.swiperActiveIndex)}isCurrentSlide(t){return t===this.swiperActiveIndex}get shouldManageDragging(){return this.showCropper&&D()}get effectiveCurrencySign(){var t;return null!==(t=this.currencySign)&&void 0!==t?t:I.currencySign}get effectiveNumberLocale(){return this.numberLocale||this.locale||I.locale}disconnectedCallback(){var t,e,i,o;window.removeEventListener("resize",this.handleResize),document.removeEventListener("click",this.handleDocumentClick),null===(t=this.intersectionObserver)||void 0===t||t.disconnect(),null===(e=this.imageStore)||void 0===e||e.disconnectAll(),null===(i=this.cropperManager)||void 0===i||i.destroyAll(),this.autoSelectTimeout&&clearTimeout(this.autoSelectTimeout),this.cropDebounceTimeout&&clearTimeout(this.cropDebounceTimeout);const s=null===(o=this.el.shadowRoot)||void 0===o?void 0:o.querySelector("swiper-container");s&&(s.removeEventListener("swiperslidechange",this.handleSlideChange),s.removeEventListener("swipersliderfirstmove",this.handleSwiperScroll),this.shouldManageDragging&&s.removeEventListener("pointerdown",this.handleSwiperPointerDown))}initializeContainerVisibilityTracking(){D();this.intersectionObserver=b(this.el,{threshold:.01,onIntersectionChange:t=>{var e;const i=this.isWidgetVisible;this.isWidgetVisible=t,null===(e=this.imageStore)||void 0===e||e.updateConfig({isWidgetVisible:this.isWidgetVisible,isModalOpen:this.showModal}),!i&&this.isWidgetVisible&&this.performVisualSearchIfReady()}})}setupSwiperEventListener(){var t;const e=null===(t=this.el.shadowRoot)||void 0===t?void 0:t.querySelector("swiper-container");e&&setTimeout((()=>{e.addEventListener("swiperslidechange",this.handleSlideChange)}),200)}setupSwiperDragEventListeners(){var t;const e=null===(t=this.el.shadowRoot)||void 0===t?void 0:t.querySelector("swiper-container");e&&setTimeout((()=>{e.addEventListener("swipersliderfirstmove",this.handleSwiperScroll,{passive:!0}),this.shouldManageDragging&&e.addEventListener("pointerdown",this.handleSwiperPointerDown,{capture:!0})}),200)}updateSwiperAllowTouchMove(t){var e;const i=null===(e=this.el.shadowRoot)||void 0===e?void 0:e.querySelector("swiper-container"),o=null==i?void 0:i.swiper;void 0!==(null==o?void 0:o.allowTouchMove)&&(o.allowTouchMove=t)}setupObserverAfterSwiper(t,e){setTimeout((()=>{var i;const o=null===(i=this.el.shadowRoot)||void 0===i?void 0:i.querySelector("swiper-container");if(o){const i=()=>{this.imageStore.setupImageIntersectionObserver(t,e)};(null==o?void 0:o.swiper)?i():(o.addEventListener("swiperinit",i,{once:!0}),setTimeout((()=>{const i=this.imageStore.getImageState(e);(null==i?void 0:i.observerSetup)||this.imageStore.setupImageIntersectionObserver(t,e)}),1e3))}}),200)}performVisualSearchIfReady(){const t=D();if(this.imageStore.updateConfig({isWidgetVisible:this.isWidgetVisible,token:this.token,totalImages:this.totalImages,isModalOpen:this.showModal}),this.token&&this.isWidgetVisible){const e=this.imageStore.getImageState(this.swiperActiveIndex);if(null==e?void 0:e.searchCompleted)this.activateCurrentSlide();else if(1===this.totalImages||!t||this.showCropper){t&&1!==this.totalImages&&!this.showCropper||this.markCurrentImageAsVisible();const e=this.imageStore.getImageState(this.swiperActiveIndex);(null==e?void 0:e.searchTriggered)||(this.imageStore.updateImageState(this.swiperActiveIndex,{searchTriggered:!0}),this.performVisualSearch(this.swiperActiveIndex)),this.showCropper&&this.activateCropperForSlide(this.swiperActiveIndex)}}}markCurrentImageAsVisible(){const t=this.imageStore.getImageState(this.swiperActiveIndex);t&&(t.isVisible=!0,this.imageStore.setImageState(this.swiperActiveIndex,t))}navigateToSlide(t){var e;const i=null===(e=this.el.shadowRoot)||void 0===e?void 0:e.querySelector("swiper-container");(null==i?void 0:i.swiper)&&i.swiper.slideTo(t)}forceSearchForSlide(t){const e=this.imageStore.getImageState(t);e&&(e.isVisible=!0,this.imageStore.setImageState(t,e)),this.imageStore.updateImageState(t,{searchTriggered:!0}),this.performVisualSearch(t)}ensureSlideSearchTriggered(t){const e=this.imageStore.getImageState(t);e.searchCompleted||e.searchTriggered?e.searchCompleted?this.activateCurrentSlide():this.performVisualSearchIfReady():this.forceSearchForSlide(t)}activateCurrentSlide(){var t;this.markCurrentImageAsVisible();const e=this.imageStore.getImageState(this.swiperActiveIndex);(null===(t=null==e?void 0:e.detectedObjects)||void 0===t?void 0:t.length)>0&&!this.showModal&&this.scheduleAutoSelectFirstObject(this.swiperActiveIndex,e.detectedObjects)}getCropperBounds(t){var e,i;if(this.showCropper&&(null===(e=this.cropperManager)||void 0===e?void 0:e.hasCropper)&&this.cropperManager.hasCropper(t)){const t=null===(i=this.el.shadowRoot)||void 0===i?void 0:i.querySelector(".cropper-container .cropper-canvas img");if(t&&t.offsetWidth>0)return M(t)}return null}getStoreBounds(t){const e=this.imageStore.getImageElement(t);return e&&e.offsetWidth>0?M(e):null}getVisibleSlideBounds(t){var e;const i=Array.from((null===(e=this.el.shadowRoot)||void 0===e?void 0:e.querySelectorAll("swiper-slide img"))||[]).filter((t=>!t.closest(".cropper-container")&&t.offsetWidth>0));return i&&i[t]?M(i[t]):null}getImageBounds(t){return this.getCropperBounds(t)||this.getStoreBounds(t)||this.getVisibleSlideBounds(t)}scheduleAutoSelectFirstObject(t,e){const i=!(null==e?void 0:e.length),o=!this.isCurrentSlide(t);i||o||this.autoSelectTimeout||this.isManualObjectSelection||this.isNavigatingToSlide||(this.autoSelectTimeout=window.setTimeout((()=>{if(this.autoSelectTimeout=void 0,!this.isCurrentSlide(t)||this.showModal||this.isNavigatingToSlide)return;const i=e[0];i&&this.handleDetectedObjectClick(i,0,t)}),500))}render(){return t(o,{key:"1d759a263f4ec8542abb6c280d33fe87e7677293",exportparts:j},P(this.cssUrl),t("div",{key:"6da6bac33ab4a292beac89c727b85eabfbcc5e0a",class:`shop-the-look-container ${this.showModal?"modal-open":""} ${this.showCropper?"with-cropper":""} widget-style-${this.widgetStyle}`},t("div",{key:"abd4fdec2cfae57edf1cc5cc1affec4cbd3df3b7",class:"main-content"},this.renderSwiperWrapper(),this.showLoadingSpinner&&t("div",{key:"c8d2fd426a089db0a63a2cf0ece673ba38d0003e",class:"search-loader"},t("vviinn-preloader",{key:"9b7875a2a604f70b153c746f2b91b42c3acb6640"}))),this.renderModalWrapper(),t("div",{key:"ce4b9cc4daeb960ed525c7f26e54598a726a88c1",class:"actions-container",part:"shop-the-look-actions-container"},this.uploadMode&&t("div",{key:"bf729ba29252be5663f19e98eed870189e6ca6dd",class:"upload-button-container"},t("button",{key:"87ccb25477035b7f4c922fff362a93add31c42c3",class:"upload-button",part:"shop-the-look-upload-button",onClick:()=>{var t;return null===(t=this.fileInput)||void 0===t?void 0:t.click()},disabled:this.showLoadingSpinner},t("span",{key:"13d01e16d311d8084d6a7dfd112f880338bea50f",class:"upload-button-icon",part:"shop-the-look-upload-button-icon"},t("slot",{key:"6cc6f8ae6e75ff4214e6c0aad42dde6411385408",name:"vviinn-image-upload-icon"},t(z,{key:"104e7cb1c6d39a1123dee6fa7d932c662efaf8db"}))),t("span",{key:"d57ab3ed9f66678f70905594ef83f9f08d9c0c9d",class:"upload-button-text",part:"shop-the-look-upload-button-text"},t("slot",{key:"c7e599b553012bd8e4a9d9c98ce46022f6a89c81",name:"upload-button-text"}))),t("input",{key:"a8748cc6bf803af1c7986ae702c118ba3060d8e3",type:"file",class:"visually-hidden",accept:k(),onChange:this.handleFileUpload,ref:t=>this.fileInput=t})),this.showNavigation()&&(i=this.totalImages,s=this.handleNavigatePrev,r=this.handleNavigateNext,t("div",{class:"carousel-navigation"},t("button",{class:"swiper-button-prev "+(0===(e=this.swiperActiveIndex)?"disabled":""),onClick:()=>s()},t(C,null)),t("button",{class:"swiper-button-next "+(e===i-1?"disabled":""),onClick:()=>r()},t(C,null)))))));var e,i,s,r}get el(){return s(this)}static get watchers(){return{currentViewMode:["onViewModeChange"],showModal:["onShowModalChange"]}}};W.style=":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;}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none !important;max-width:none !important;min-height:0 !important;min-width:0 !important;width:100%}.cropper-wrap-box,.cropper-canvas,.cropper-drag-box,.cropper-crop-box,.cropper-modal{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-wrap-box,.cropper-canvas{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:0.4}.cropper-view-box{display:block;height:100%;overflow:hidden;width:100%;border-radius:5px}.cropper-face,.cropper-point{display:block;height:100%;opacity:0.1;position:absolute;width:100%}.cropper-face{left:0;top:0;border-radius:5px}.cropper-point{--cropper-point-width:44px;height:var(--cropper-point-width);width:var(--cropper-point-width);opacity:1}.point-e,.point-s,.point-w,.point-n{display:none}.point-ne,.point-nw,.point-sw,.point-se{--delta:-9px}.point-ne{cursor:nesw-resize;right:var(--delta);top:var(--delta)}.point-nw{cursor:nwse-resize;left:var(--delta);top:var(--delta)}.point-sw{cursor:nesw-resize;bottom:var(--delta);left:var(--delta)}.point-se{cursor:nwse-resize;bottom:var(--delta);right:var(--delta)}.cropper-point::before{position:absolute;content:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='38' height='38' viewBox='0 0 38 38' fill='none'%3E%3Cpath d='M3 35H23C29.6274 35 35 29.6274 35 23V3' stroke='white' stroke-width='6' stroke-linecap='square'/%3E%3C/svg%3E\");display:block;pointer-events:none}.point-ne::before{transform:rotate(-90deg);left:0px;top:6px}.point-nw::before{transform:rotate(180deg);left:6px;top:6px}.point-sw::before{transform:rotate(90deg);left:6px;top:0px}.point-se::before{left:0px;top:0px}.cropper-invisible{opacity:0}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none !important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}swiper-container::part(bullet){width:8px;height:8px;border-radius:var(--border-radius-full);background:var(--color-border-02);transition:width 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n height 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n border-radius 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n background 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);margin:0;opacity:1;cursor:pointer;border:none;outline:none;transform:scale(1);position:relative}swiper-container::part(bullet)::after{content:\"\";position:absolute;top:-8px;left:-8px;right:-8px;bottom:-8px;cursor:pointer}swiper-container::part(bullet):hover{background:rgba(22, 22, 22, 0.5);transform:scale(1.2)}swiper-container::part(bullet-active){width:24px;height:8px;border-radius:var(--spacing-50);background:var(--color-icon-helper)}swiper-container::part(bullet-active):hover{background:var(--color-icon-secondary);transform:scale(1.1)}:host{--shop-the-look-shadow:0px 2px 4px 0px rgba(0, 0, 0, 0.25);display:block;font-family:var(--font-family-base);box-sizing:border-box;max-width:100%}.shop-the-look-container{position:relative;width:100%;background:var(--color-bg-base)}.main-content{position:relative;display:flex;flex-direction:column;gap:var(--spacing-200);align-items:center}.actions-container{width:100%;display:flex;align-items:center;gap:var(--spacing-300);margin-top:var(--spacing-250);justify-content:flex-end}.upload-button{display:inline-flex;padding:var(--spacing-150);justify-content:center;align-items:center;gap:var(--spacing-100);background:var(--button-bg-color-primary);border:none;border-radius:var(--border-radius-100);color:var(--color-text-inverse);font-family:var(--font-family-base);font-size:16px;font-weight:500;cursor:pointer;transition:background 0.2s ease}.upload-button-icon{display:inline-flex;align-items:center}.upload-button-text{display:contents}.upload-button:hover{background:var(--button-bg-color-primary-hover)}.upload-button:disabled{cursor:not-allowed}.image-container{position:relative;border-radius:var(--border-radius-200);overflow:hidden;background:var(--color-field-02);display:flex;justify-content:center;align-items:center;box-sizing:border-box;max-width:100%}.main-image{display:block;-o-object-fit:contain;object-fit:contain}.swiper-container-wrapper{width:100%;height:100%;display:flex;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%}swiper-container{width:100%;height:100%;border-radius:var(--border-radius-200);overflow:hidden}swiper-slide{display:flex;justify-content:center;align-items:center;width:100%;height:100%;flex-shrink:0}swiper-container::part(pagination){bottom:var(--spacing-250);display:flex;justify-content:center;align-items:center;gap:var(--spacing-100);padding:var(--spacing-100) 0}swiper-container::part(bullet-active):hover{background:var(--color-icon-secondary);transform:scale(1.1)}.carousel-navigation{display:flex;gap:var(--spacing-100)}.swiper-button-prev,.swiper-button-next{position:relative;width:48px;height:48px;background:var(--button-bg-color-secondary);border:none;border-radius:var(--border-radius-full);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background 0.3s ease,\n opacity 0.3s ease;margin:0}.swiper-button-prev:hover,.swiper-button-next:hover{background:var(--button-bg-color-secondary-hover)}.swiper-button-next svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-button-next{color:var(--color-text-secondary)}.swiper-button-prev.disabled,.swiper-button-next.disabled{opacity:0.5;cursor:not-allowed;pointer-events:none}.desktop-carousel{position:relative;width:100%;max-width:none}.desktop-carousel swiper-container{width:100%;height:100%;justify-content:flex-start}.desktop-carousel .swiper-wrapper{justify-content:flex-start;align-items:flex-start}.desktop-carousel .main-image{overflow:hidden;border-radius:var(--border-radius-200)}.desktop-carousel vviinn-detected-object{position:absolute;z-index:15;overflow:visible}.shop-the-look-container .desktop-carousel swiper-slide{width:auto;flex-shrink:0}.shop-the-look-container .desktop-carousel swiper-container::part(pagination){display:none}.mobile-slider swiper-slide{width:auto;display:flex;justify-content:center}.mobile-slider swiper-container::part(pagination){display:flex}.shop-the-look-container .mobile-slider swiper-container::part(pagination){display:flex;justify-content:center;align-items:center;gap:var(--spacing-100);padding:var(--spacing-100) 0}.modal-content-wrapper{position:absolute;background:var(--color-bg-base);border-radius:var(--border-radius-150);overflow:hidden;box-shadow:0 2px 4px 0 rgba(0, 0, 0, 0.25);z-index:10000;top:var(--modal-y, 50%);left:var(--modal-x, 50%)}.modal-content-wrapper.mobile-modal{max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);margin:0}.modal-content-wrapper[style*=\"--modal-anchor: top-left\"]{transform:translate(0, 0)}.modal-content-wrapper[style*=\"--modal-anchor: top-right\"]{transform:translate(-100%, 0)}.modal-content-wrapper[style*=\"--modal-anchor: bottom-left\"]{transform:translate(0, -100%)}.modal-content-wrapper[style*=\"--modal-anchor: bottom-right\"]{transform:translate(-100%, -100%)}.modal-content-wrapper:not([style*=\"--modal-anchor\"]){transform:translate(-50%, -50%)}.modal-body{padding:var(--spacing-100)}.search-results-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-50);width:var(--shop-the-look-results-grid-width, 140px)}.result-item{cursor:pointer;border-radius:var(--spacing-75);overflow:hidden;aspect-ratio:var(--product-card-image-aspect-ratio, 1)}.result-image{width:100%;height:100%;position:relative}.product-grid-container.hidden,.product-details-container.hidden{display:none}.product-details{display:flex;flex-direction:column;height:100%;gap:var(--spacing-75);width:-moz-fit-content;width:fit-content}.product-header{display:flex;align-items:center}.product-content{flex:1;position:relative}.product-details-card-wrapper{height:100%;padding:0;width:var(--shop-the-look-product-card-width, 160px);max-width:var(--shop-the-look-product-card-width, 160px)}.product-details-card{height:100%;background:var(--color-bg-base);border:none;width:100%;max-width:100%}.back-to-grid-button{display:contents;background:none;border:none;cursor:pointer;padding:0}.back-to-grid-button svg{width:24px;height:24px;color:var(--color-icon-helper);transition:color 0.2s ease}.back-to-grid-button:hover svg{color:var(--color-icon-secondary)}vviinn-product-card::part(price-container){flex-direction:row}vviinn-image::part(image),.product-details-card-wrapper vviinn-product-card::part(image),.product-details-card-wrapper vviinn-product-card::part(image-picture){border-radius:var(--border-radius-100);overflow:hidden}.search-loader{position:absolute;top:var(--spacing-200);right:var(--spacing-200);z-index:100;background:rgba(255, 255, 255, 0.9);border-radius:var(--border-radius-full);padding:var(--spacing-100);backdrop-filter:blur(4px)}.search-loader vviinn-preloader{width:24px;height:24px}.shop-the-look-container.modal-open vviinn-detected-object{z-index:10001}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}.desktop-carousel vviinn-detected-object{position:absolute;z-index:15;overflow:visible}.desktop-carousel .main-image{overflow:hidden;border-radius:var(--border-radius-200)}.shop-the-look-container .desktop-carousel swiper-container::part(pagination){display:none}.desktop-carousel .swiper-button-prev,.desktop-carousel .swiper-button-next{display:flex}.desktop-carousel{max-width:none}.desktop-carousel .swiper-wrapper{justify-content:flex-start;align-items:flex-start}.shop-the-look-container .desktop-carousel swiper-slide{width:auto;flex-shrink:0}.mobile-slider swiper-slide{width:auto;display:flex;justify-content:center}@media (max-width: 768px){.shop-the-look-container:not(.with-cropper) .carousel-navigation{display:none}.mobile-slider{width:100%}.shop-the-look-container .mobile-slider swiper-slide{width:100%;flex-shrink:0}.shop-the-look-container{width:100%;max-width:100vw}.shop-the-look-container .image-container,.shop-the-look-container swiper-container,.shop-the-look-container swiper-slide{width:-moz-fit-content;width:fit-content;max-width:100%}swiper-container::part(wrapper){align-items:center}.shop-the-look-container .main-image{max-width:100%;height:auto;width:auto;-o-object-fit:contain;object-fit:contain}.modal-content-wrapper.desktop-modal{max-width:calc(100vw - 16px);max-height:calc(100vh - 48px)}.search-results-grid{width:min(\n var(--shop-the-look-results-grid-width, 140px),\n calc(100vw - 32px)\n );gap:var(--spacing-50)}.carousel-navigation{bottom:var(--spacing-50);right:var(--spacing-50)}.product-details-card-wrapper{width:var(--shop-the-look-product-card-width, 120px);max-width:var(--shop-the-look-product-card-width, 120px)}}.cropper-wrap-box{border-radius:var(--border-radius-200);overflow:hidden}.widget-style-cornered .image-container,.widget-style-cornered swiper-container,.widget-style-cornered .desktop-carousel .main-image,.widget-style-cornered .modal-content-wrapper,.widget-style-cornered .result-item,.widget-style-cornered .desktop-carousel .swiper-button-prev,.widget-style-cornered .desktop-carousel .swiper-button-next,.widget-style-cornered .cropper-wrap-box,.widget-style-cornered vviinn-image::part(image),.widget-style-cornered .product-details-card-wrapper vviinn-product-card::part(image),.widget-style-cornered .product-details-card-wrapper vviinn-product-card::part(image-picture),.widget-style-cornered .upload-button,.widget-style-cornered .carousel-navigation button{border-radius:0}";export{W as vviinn_shop_the_look}
|