{"version":3,"sources":["webpack:///./Farmasiet.CMS/Resources/Translations.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/TouchSwiper/TouchSwiper.tsx","webpack:///./Farmasiet.CMS/Features/Components/Common/Input.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/Accordion/AccordionItem.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/Buttons/ButtonLink.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/QuantityUtils.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/NavigationTracker/NavigationTrackerButtonLink.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/EventNames.ts","webpack:///./Farmasiet.CMS/Purchase/Checkout/CheckoutStep.csharp.ts","webpack:///./Farmasiet.CMS/Features/Recommendations/ViewModels/RecommendationsEventNameResolver.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/CapitalizeFirstLetter.ts","webpack:///./Farmasiet.CMS/Features/Partials/ProductCard/ProductRating.tsx","webpack:///./Farmasiet.CMS/Features/Partials/ProductCard/ProductCard.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/Accordion/AccordionItemHeader/AccordionItemHeader.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/Accordion/Accordion.tsx","webpack:///./Farmasiet.CMS/Features/Partials/Header/FatalErrorModal.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Favourites/Favourites.ts","webpack:///./Farmasiet.CMS/Features/Filtering/Api/TrackEpiFindClick.ts","webpack:///./Farmasiet.CMS/Features/Purchase/Cart/Validation/HandleCartResponseError.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Cart/Components/CartUtils.ts","webpack:///./Farmasiet.CMS/Features/Recommendations/RecommendationsRepository.ts","webpack:///./Farmasiet.CMS/Features/Tracking/VisitorIntelligence/VisitorIntelligenceTrackingScript.ts","webpack:///./Farmasiet.CMS/Features/Tracking/VisitorIntelligence/VisitorIntelligenceFacade.ts","webpack:///../node_modules/lodash/_getNative.js","webpack:///./Farmasiet.CMS/Features/Blocks/TextColor.csharp.ts","webpack:///./Farmasiet.CMS/Features/Components/Availability/ProductBuyingMode.csharp.ts","webpack:///./Farmasiet.CMS/Features/Purchase/IsFromPriceSpiderAccessor.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/index-filters.ts","webpack:///./Farmasiet.CMS/Features/Customers/Favourites/Components/FirstFavouriteModal/FirstFavouriteModal.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Favourites/Components/RequiresLoginModal/RequiresLoginModal.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/Modal/Modal.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotification/ProductAvailabilityNotificationViewType.csharp.ts","webpack:///./Farmasiet.CMS/Features/Customers/Favourites/Components/FavouritesButton/FavouriteProductButton.tsx","webpack:///./Farmasiet.CMS/Features/Filtering/Sorting/ProductSortingType.csharp.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/InfoLabel/ProductTopLabel.tsx","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/HandleClickEvents.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/SmoothScrollTo.ts","webpack:///./Farmasiet.CMS/Features/Recommendations/Components/RecommededProducts/RecommendedProducts.tsx","webpack:///../node_modules/underscore/modules/_setup.js","webpack:///./Farmasiet.CMS/Features/ReactComponents/TrackingAcessor.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/NavigationTracker/NavigationTracker.ts","webpack:///./Farmasiet.CMS/Features/Blocks/Products/FeaturedProducts/FeaturedProductsCompatibleBlock/FeaturedProductsCompatibleBlockType.csharp.ts","webpack:///./Farmasiet.CMS/Features/Blocks/Products/FeaturedProducts/FeaturedProductsCompatibleBlock/FeaturedProductsCompatibleBlock.tsx","webpack:///./Farmasiet.CMS/Features/Partials/ProductList/ProductListUtils.ts","webpack:///./Farmasiet.CMS/Features/Partials/ProductList/ProductList.tsx","webpack:///../node_modules/lodash/_ListCache.js","webpack:///../node_modules/lodash/_assocIndexOf.js","webpack:///../node_modules/lodash/_baseGetTag.js","webpack:///../node_modules/lodash/_nativeCreate.js","webpack:///../node_modules/lodash/_getMapData.js","webpack:///../node_modules/lodash/isObjectLike.js","webpack:///../node_modules/react-visibility-sensor/dist/visibility-sensor.js","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/MouseButtonsEnum.ts","webpack:///./Farmasiet.CMS/Validation/EmailValidationStatus.csharp.ts","webpack:///./Farmasiet.CMS/ResizedImage/ResizedImageFormat.csharp.ts","webpack:///./Farmasiet.CMS/ResizedImage/ScaleMode.csharp.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/ResponsivePicture/ImageCropper.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/ResponsivePicture/ResponsivePictureBuilder.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/IsMobile.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/InfoLabel/NewProductInfoLabel.tsx","webpack:///./Farmasiet.CMS/Features/StorageAccessor/StorageAccessor.ts","webpack:///./Farmasiet.CMS/Features/Blocks/Products/FeaturedProducts/FeaturedProductsCompatibleBlock/FeaturedInfo/FeaturedInfo.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/Snackbar/Snackbar.tsx","webpack:///./Farmasiet.CMS/Features/Partials/ProductCard/ProductCardPlaceholder/ProductCardPlaceholder.tsx","webpack:///../node_modules/underscore/modules/restArguments.js","webpack:///../node_modules/underscore/modules/isObject.js","webpack:///../node_modules/underscore/modules/isNull.js","webpack:///../node_modules/underscore/modules/isUndefined.js","webpack:///../node_modules/underscore/modules/isBoolean.js","webpack:///../node_modules/underscore/modules/isElement.js","webpack:///../node_modules/underscore/modules/_tagTester.js","webpack:///../node_modules/underscore/modules/isString.js","webpack:///../node_modules/underscore/modules/isNumber.js","webpack:///../node_modules/underscore/modules/isDate.js","webpack:///../node_modules/underscore/modules/isRegExp.js","webpack:///../node_modules/underscore/modules/isError.js","webpack:///../node_modules/underscore/modules/isSymbol.js","webpack:///../node_modules/underscore/modules/isArrayBuffer.js","webpack:///../node_modules/underscore/modules/isFunction.js","webpack:///../node_modules/underscore/modules/_hasObjectTag.js","webpack:///../node_modules/underscore/modules/_stringTagBug.js","webpack:///../node_modules/underscore/modules/isDataView.js","webpack:///../node_modules/underscore/modules/isArray.js","webpack:///../node_modules/underscore/modules/_has.js","webpack:///../node_modules/underscore/modules/isArguments.js","webpack:///../node_modules/underscore/modules/isFinite.js","webpack:///../node_modules/underscore/modules/isNaN.js","webpack:///../node_modules/underscore/modules/constant.js","webpack:///../node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///../node_modules/underscore/modules/_shallowProperty.js","webpack:///../node_modules/underscore/modules/_getByteLength.js","webpack:///../node_modules/underscore/modules/_isBufferLike.js","webpack:///../node_modules/underscore/modules/isTypedArray.js","webpack:///../node_modules/underscore/modules/_getLength.js","webpack:///../node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///../node_modules/underscore/modules/keys.js","webpack:///../node_modules/underscore/modules/isEmpty.js","webpack:///../node_modules/underscore/modules/isMatch.js","webpack:///../node_modules/underscore/modules/underscore.js","webpack:///../node_modules/underscore/modules/_toBufferView.js","webpack:///../node_modules/underscore/modules/isEqual.js","webpack:///../node_modules/underscore/modules/allKeys.js","webpack:///../node_modules/underscore/modules/_methodFingerprint.js","webpack:///../node_modules/underscore/modules/isMap.js","webpack:///../node_modules/underscore/modules/isWeakMap.js","webpack:///../node_modules/underscore/modules/isSet.js","webpack:///../node_modules/underscore/modules/isWeakSet.js","webpack:///../node_modules/underscore/modules/values.js","webpack:///../node_modules/underscore/modules/pairs.js","webpack:///../node_modules/underscore/modules/invert.js","webpack:///../node_modules/underscore/modules/functions.js","webpack:///../node_modules/underscore/modules/_createAssigner.js","webpack:///../node_modules/underscore/modules/extend.js","webpack:///../node_modules/underscore/modules/extendOwn.js","webpack:///../node_modules/underscore/modules/defaults.js","webpack:///../node_modules/underscore/modules/_baseCreate.js","webpack:///../node_modules/underscore/modules/create.js","webpack:///../node_modules/underscore/modules/clone.js","webpack:///../node_modules/underscore/modules/tap.js","webpack:///../node_modules/underscore/modules/toPath.js","webpack:///../node_modules/underscore/modules/_toPath.js","webpack:///../node_modules/underscore/modules/_deepGet.js","webpack:///../node_modules/underscore/modules/get.js","webpack:///../node_modules/underscore/modules/has.js","webpack:///../node_modules/underscore/modules/identity.js","webpack:///../node_modules/underscore/modules/matcher.js","webpack:///../node_modules/underscore/modules/property.js","webpack:///../node_modules/underscore/modules/_optimizeCb.js","webpack:///../node_modules/underscore/modules/_baseIteratee.js","webpack:///../node_modules/underscore/modules/iteratee.js","webpack:///../node_modules/underscore/modules/_cb.js","webpack:///../node_modules/underscore/modules/mapObject.js","webpack:///../node_modules/underscore/modules/noop.js","webpack:///../node_modules/underscore/modules/propertyOf.js","webpack:///../node_modules/underscore/modules/times.js","webpack:///../node_modules/underscore/modules/random.js","webpack:///../node_modules/underscore/modules/now.js","webpack:///../node_modules/underscore/modules/_createEscaper.js","webpack:///../node_modules/underscore/modules/_escapeMap.js","webpack:///../node_modules/underscore/modules/escape.js","webpack:///../node_modules/underscore/modules/unescape.js","webpack:///../node_modules/underscore/modules/_unescapeMap.js","webpack:///../node_modules/underscore/modules/templateSettings.js","webpack:///../node_modules/underscore/modules/template.js","webpack:///../node_modules/underscore/modules/result.js","webpack:///../node_modules/underscore/modules/uniqueId.js","webpack:///../node_modules/underscore/modules/chain.js","webpack:///../node_modules/underscore/modules/_executeBound.js","webpack:///../node_modules/underscore/modules/partial.js","webpack:///../node_modules/underscore/modules/bind.js","webpack:///../node_modules/underscore/modules/_isArrayLike.js","webpack:///../node_modules/underscore/modules/_flatten.js","webpack:///../node_modules/underscore/modules/bindAll.js","webpack:///../node_modules/underscore/modules/memoize.js","webpack:///../node_modules/underscore/modules/delay.js","webpack:///../node_modules/underscore/modules/defer.js","webpack:///../node_modules/underscore/modules/throttle.js","webpack:///../node_modules/underscore/modules/debounce.js","webpack:///../node_modules/underscore/modules/wrap.js","webpack:///../node_modules/underscore/modules/negate.js","webpack:///../node_modules/underscore/modules/compose.js","webpack:///../node_modules/underscore/modules/after.js","webpack:///../node_modules/underscore/modules/before.js","webpack:///../node_modules/underscore/modules/once.js","webpack:///../node_modules/underscore/modules/findKey.js","webpack:///../node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///../node_modules/underscore/modules/findIndex.js","webpack:///../node_modules/underscore/modules/findLastIndex.js","webpack:///../node_modules/underscore/modules/sortedIndex.js","webpack:///../node_modules/underscore/modules/_createIndexFinder.js","webpack:///../node_modules/underscore/modules/indexOf.js","webpack:///../node_modules/underscore/modules/lastIndexOf.js","webpack:///../node_modules/underscore/modules/find.js","webpack:///../node_modules/underscore/modules/findWhere.js","webpack:///../node_modules/underscore/modules/each.js","webpack:///../node_modules/underscore/modules/map.js","webpack:///../node_modules/underscore/modules/_createReduce.js","webpack:///../node_modules/underscore/modules/reduce.js","webpack:///../node_modules/underscore/modules/reduceRight.js","webpack:///../node_modules/underscore/modules/filter.js","webpack:///../node_modules/underscore/modules/reject.js","webpack:///../node_modules/underscore/modules/every.js","webpack:///../node_modules/underscore/modules/some.js","webpack:///../node_modules/underscore/modules/contains.js","webpack:///../node_modules/underscore/modules/invoke.js","webpack:///../node_modules/underscore/modules/pluck.js","webpack:///../node_modules/underscore/modules/where.js","webpack:///../node_modules/underscore/modules/max.js","webpack:///../node_modules/underscore/modules/min.js","webpack:///../node_modules/underscore/modules/toArray.js","webpack:///../node_modules/underscore/modules/sample.js","webpack:///../node_modules/underscore/modules/shuffle.js","webpack:///../node_modules/underscore/modules/sortBy.js","webpack:///../node_modules/underscore/modules/_group.js","webpack:///../node_modules/underscore/modules/groupBy.js","webpack:///../node_modules/underscore/modules/indexBy.js","webpack:///../node_modules/underscore/modules/countBy.js","webpack:///../node_modules/underscore/modules/partition.js","webpack:///../node_modules/underscore/modules/size.js","webpack:///../node_modules/underscore/modules/_keyInObj.js","webpack:///../node_modules/underscore/modules/pick.js","webpack:///../node_modules/underscore/modules/omit.js","webpack:///../node_modules/underscore/modules/initial.js","webpack:///../node_modules/underscore/modules/first.js","webpack:///../node_modules/underscore/modules/rest.js","webpack:///../node_modules/underscore/modules/last.js","webpack:///../node_modules/underscore/modules/compact.js","webpack:///../node_modules/underscore/modules/flatten.js","webpack:///../node_modules/underscore/modules/difference.js","webpack:///../node_modules/underscore/modules/without.js","webpack:///../node_modules/underscore/modules/uniq.js","webpack:///../node_modules/underscore/modules/union.js","webpack:///../node_modules/underscore/modules/intersection.js","webpack:///../node_modules/underscore/modules/unzip.js","webpack:///../node_modules/underscore/modules/zip.js","webpack:///../node_modules/underscore/modules/object.js","webpack:///../node_modules/underscore/modules/range.js","webpack:///../node_modules/underscore/modules/chunk.js","webpack:///../node_modules/underscore/modules/_chainResult.js","webpack:///../node_modules/underscore/modules/mixin.js","webpack:///../node_modules/underscore/modules/underscore-array-methods.js","webpack:///../node_modules/underscore/modules/index-default.js","webpack:///./Farmasiet.CMS/Features/Email/Check/EmailInput.tsx","webpack:///./Farmasiet.CMS/Common/Pim/Enums/PurchaseConfirmationForm.csharp.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/PurchaseConfirmationForms/ViagraForm/ViagraFormTypings.ts","webpack:///./Farmasiet.CMS/Features/Purchase/Cart/Modifications/AddItem/Components/AddToCartButton/AddToCartButton.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/PurchaseConfirmationForms/DuraphatForm/DuraphatForm.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/PurchaseConfirmationForms/ViagraForm/ViagraFormGenderSelect.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/PurchaseConfirmationForms/ViagraForm/ViagraFormHeader.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/PurchaseConfirmationForms/ViagraForm/ViagraFormAnswersButtons.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/PurchaseConfirmationForms/ViagraForm/ViagraFormQuestion.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/PurchaseConfirmationForms/ViagraForm/ViagraForm.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Cart/Modifications/AddItem/Components/AddToCartForms.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Cart/Modifications/AddItem/Components/AddToCartMessage/AddToCartMessage.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Cart/Modifications/AddItem/Components/RxMaintenanceAddToCartMessage/RxMaintenanceAddToCartMessage.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Cart/Modifications/AddItem/Components/AddToCartMessages.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Cart/Modifications/AddItem/Components/AddToCart/AddToCart.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Notifications/ProductAvailability/Models/ProductAvailabilityNotificationResponseStatus.csharp.ts","webpack:///./Farmasiet.CMS/Features/Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotification/Views/ProductAvailabilityNotificationStatus.ts","webpack:///./Farmasiet.CMS/Features/Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotificationsInputModal.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotificationSuccess.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotificationSuccessModal.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotification/Views/ProductAvailabilityNotificationCardView.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotification/Views/ProductAvailabilityNotificationPageView.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotification/ProductAvailabilityNotification.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/InfoLabel/BestsellerProductInfoLabel.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/InfoLabel/VeganProductInfoLabel.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/InfoLabel/ProductInfoLabel.tsx","webpack:///./Farmasiet.CMS/Features/Blocks/Products/FeaturedProducts/FeaturedProductsCompatibleBlock/CircleInfo/CircleInfoColorVariant.csharp.ts","webpack:///./Farmasiet.CMS/Features/Blocks/Products/FeaturedProducts/FeaturedProductsCompatibleBlock/CircleInfo/CircleInfo.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Checkout/Validation/CheckoutValidator.ts","webpack:///./Farmasiet.CMS/Features/Components/Loader/Loader.tsx","webpack:///../node_modules/lodash/_Map.js","webpack:///../node_modules/lodash/_Symbol.js","webpack:///../node_modules/lodash/isArray.js","webpack:///./Farmasiet.CMS/Features/ReactComponents/IsServerRendering.tsx","webpack:///../node_modules/@babel/runtime/regenerator/index.js","webpack:///../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/GoogleTagManagerDataLayer.ts","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/GoogleAnalytics4/GoogleAnalytics4Actions.ts","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/GTMStockLevel.ts","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/GoogleAnalytics4/GoogleAnalytics4Mapper.ts","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/GoogleAnalytics4/GoogleAnalytics4Tracker.ts","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/NonAnalyticsTracker/NonAnalyticsEvents.ts","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/NonAnalyticsTracker/NonAnalyticsTracker.ts","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/GoogleTagManager.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/PriceDisplay.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/ResponsivePicture/ResponsivePicture.tsx","webpack:///../node_modules/lodash/eq.js","webpack:///../node_modules/lodash/isFunction.js","webpack:///../node_modules/lodash/_freeGlobal.js","webpack:///../node_modules/lodash/isObject.js","webpack:///../node_modules/lodash/_toSource.js","webpack:///../node_modules/lodash/_MapCache.js","webpack:///../node_modules/lodash/_equalArrays.js","webpack:///../node_modules/lodash/isBuffer.js","webpack:///../node_modules/lodash/isTypedArray.js","webpack:///../node_modules/lodash/isLength.js","webpack:///./Farmasiet.CMS/Features/ReactComponents/Buttons/Button.tsx","webpack:///./Farmasiet.CMS/Features/Experimentation/Components/ResolveExperimentId.tsx","webpack:///../node_modules/rc-util/node_modules/react-is/index.js","webpack:///../node_modules/lodash/isEqual.js","webpack:///./Farmasiet.CMS/Features/Filtering/Sorting/FavouritesListSortingType.csharp.ts","webpack:///./Farmasiet.CMS/Features/Filtering/Sorting/ProductListSortingType.csharp.ts","webpack:///./Farmasiet.CMS/Features/Filtering/Sorting/SortingOptions.csharp.ts","webpack:///./Farmasiet.CMS/Features/AiSearch/AiSearchKeys.ts","webpack:///./Farmasiet.CMS/Features/Partials/Search/ClearSearchInput.tsx","webpack:///./Farmasiet.CMS/Features/Components/SelectedOptionList/SelectedOptionList.tsx","webpack:///../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack:///../node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack:///../node_modules/rc-util/es/warning.js","webpack:///../node_modules/rc-slider/es/common/Track.js","webpack:///../node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack:///../node_modules/@babel/runtime/helpers/esm/get.js","webpack:///../node_modules/rc-util/es/Dom/addEventListener.js","webpack:///../node_modules/rc-slider/es/common/Steps.js","webpack:///../node_modules/rc-slider/es/common/Marks.js","webpack:///../node_modules/rc-slider/es/Handle.js","webpack:///../node_modules/rc-util/es/KeyCode.js","webpack:///../node_modules/rc-slider/es/utils.js","webpack:///../node_modules/rc-slider/es/common/createSlider.js","webpack:///../node_modules/rc-slider/es/Slider.js","webpack:///../node_modules/rc-slider/es/Range.js","webpack:///../node_modules/rc-util/es/raf.js","webpack:///../node_modules/rc-util/es/Dom/contains.js","webpack:///../node_modules/rc-util/es/Dom/findDOMNode.js","webpack:///../node_modules/rc-util/es/ref.js","webpack:///../node_modules/rc-util/es/Dom/canUseDom.js","webpack:///../node_modules/rc-util/es/Portal.js","webpack:///../node_modules/rc-trigger/es/utils/alignUtil.js","webpack:///../node_modules/rc-motion/es/util/motion.js","webpack:///../node_modules/rc-motion/es/interface.js","webpack:///../node_modules/rc-motion/es/hooks/useState.js","webpack:///../node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","webpack:///../node_modules/rc-motion/es/hooks/useStepQueue.js","webpack:///../node_modules/rc-motion/es/hooks/useNextFrame.js","webpack:///../node_modules/rc-motion/es/hooks/useStatus.js","webpack:///../node_modules/rc-motion/es/hooks/useDomMotionEvents.js","webpack:///../node_modules/rc-motion/es/DomWrapper.js","webpack:///../node_modules/rc-motion/es/CSSMotion.js","webpack:///../node_modules/rc-motion/es/util/diff.js","webpack:///../node_modules/rc-motion/es/CSSMotionList.js","webpack:///../node_modules/rc-motion/es/index.js","webpack:///../node_modules/rc-trigger/es/utils/legacyUtil.js","webpack:///../node_modules/rc-trigger/es/Popup/Mask.js","webpack:///../node_modules/rc-util/es/Dom/isVisible.js","webpack:///../../src/propertyUtils.js","webpack:///../../src/utils.js","webpack:///../../src/getOffsetParent.js","webpack:///../../src/isAncestorFixed.js","webpack:///../../src/getVisibleRectForElement.js","webpack:///../../src/getRegion.js","webpack:///../../src/getAlignOffset.js","webpack:///../../src/getElFuturePos.js","webpack:///../../src/align/align.js","webpack:///../../src/adjustForViewport.js","webpack:///../../src/align/alignElement.js","webpack:///../node_modules/rc-align/es/util.js","webpack:///../node_modules/rc-align/es/Align.js","webpack:///../node_modules/rc-align/es/hooks/useBuffer.js","webpack:///../../src/align/alignPoint.js","webpack:///../node_modules/rc-align/es/index.js","webpack:///../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///../node_modules/rc-trigger/es/Popup/useVisibleStatus.js","webpack:///../node_modules/rc-trigger/es/Popup/PopupInner.js","webpack:///../node_modules/rc-trigger/es/Popup/useStretchStyle.js","webpack:///../node_modules/rc-trigger/es/Popup/MobilePopupInner.js","webpack:///../node_modules/rc-trigger/es/Popup/index.js","webpack:///../node_modules/rc-util/es/isMobile.js","webpack:///../node_modules/rc-trigger/es/context.js","webpack:///../node_modules/rc-trigger/es/index.js","webpack:///../node_modules/rc-tooltip/es/placements.js","webpack:///../node_modules/rc-tooltip/es/Content.js","webpack:///../node_modules/rc-tooltip/es/Tooltip.js","webpack:///../node_modules/rc-tooltip/es/index.js","webpack:///../node_modules/rc-slider/es/common/SliderTooltip.js","webpack:///../node_modules/rc-slider/es/index.js","webpack:///../node_modules/rc-slider/es/createSliderWithTooltip.js","webpack:///./Farmasiet.CMS/Features/Components/PriceRange/PriceRange.tsx","webpack:///./Farmasiet.CMS/Features/Components/SelectedFilterList/SelectedFilterList.tsx","webpack:///./Farmasiet.CMS/Features/Components/TagList/TagList.tsx","webpack:///./Farmasiet.CMS/Features/Components/ProductFilters/CategoriesTree/CategoriesTreeCategory.tsx","webpack:///./Farmasiet.CMS/Features/Components/ProductFilters/CategoriesTree/CategoriesTree.tsx","webpack:///./Farmasiet.CMS/Features/Components/ProductFilters/ProductFilters.tsx","webpack:///./Farmasiet.CMS/Features/Components/ProductFilters/FilteredProductList.tsx","webpack:///./Farmasiet.CMS/Features/Components/ProductFilters/PriceService.ts","webpack:///./Farmasiet.CMS/Features/StorageAccessor/LocalStorageAccessor.ts","webpack:///./Farmasiet.CMS/Features/Blocks/DiscountVariant.csharp.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/RegexProvider.ts","webpack:///../node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","webpack:///../node_modules/lodash/_baseIsEqual.js","webpack:///../node_modules/lodash/_baseIsEqualDeep.js","webpack:///../node_modules/lodash/_Stack.js","webpack:///../node_modules/lodash/_listCacheClear.js","webpack:///../node_modules/lodash/_listCacheDelete.js","webpack:///../node_modules/lodash/_listCacheGet.js","webpack:///../node_modules/lodash/_listCacheHas.js","webpack:///../node_modules/lodash/_listCacheSet.js","webpack:///../node_modules/lodash/_stackClear.js","webpack:///../node_modules/lodash/_stackDelete.js","webpack:///../node_modules/lodash/_stackGet.js","webpack:///../node_modules/lodash/_stackHas.js","webpack:///../node_modules/lodash/_stackSet.js","webpack:///../node_modules/lodash/_baseIsNative.js","webpack:///../node_modules/lodash/_getRawTag.js","webpack:///../node_modules/lodash/_objectToString.js","webpack:///./Farmasiet.CMS/Features/Partials/ProductCard/ProductCardVariant.csharp.ts","webpack:///../node_modules/lodash/_isMasked.js","webpack:///../node_modules/lodash/_coreJsData.js","webpack:///../node_modules/lodash/_getValue.js","webpack:///../node_modules/lodash/_mapCacheClear.js","webpack:///../node_modules/lodash/_Hash.js","webpack:///../node_modules/lodash/_hashClear.js","webpack:///../node_modules/lodash/_hashDelete.js","webpack:///../node_modules/lodash/_hashGet.js","webpack:///../node_modules/lodash/_hashHas.js","webpack:///../node_modules/lodash/_hashSet.js","webpack:///../node_modules/lodash/_mapCacheDelete.js","webpack:///../node_modules/lodash/_isKeyable.js","webpack:///../node_modules/lodash/_mapCacheGet.js","webpack:///../node_modules/lodash/_mapCacheHas.js","webpack:///../node_modules/lodash/_mapCacheSet.js","webpack:///../node_modules/lodash/_SetCache.js","webpack:///../node_modules/lodash/_setCacheAdd.js","webpack:///../node_modules/lodash/_setCacheHas.js","webpack:///../node_modules/lodash/_arraySome.js","webpack:///../node_modules/lodash/_cacheHas.js","webpack:///./Farmasiet.CMS/Features/Customers/UserProfile/Components/CookiesConsent/CookieAccessor.ts","webpack:///../node_modules/lodash/_equalByTag.js","webpack:///../node_modules/lodash/_Uint8Array.js","webpack:///../node_modules/lodash/_mapToArray.js","webpack:///../node_modules/lodash/_setToArray.js","webpack:///../node_modules/lodash/_equalObjects.js","webpack:///../node_modules/lodash/_getAllKeys.js","webpack:///../node_modules/lodash/_baseGetAllKeys.js","webpack:///../node_modules/lodash/_arrayPush.js","webpack:///../node_modules/lodash/_getSymbols.js","webpack:///../node_modules/lodash/_arrayFilter.js","webpack:///../node_modules/lodash/stubArray.js","webpack:///../node_modules/lodash/keys.js","webpack:///../node_modules/lodash/_arrayLikeKeys.js","webpack:///../node_modules/lodash/_baseTimes.js","webpack:///../node_modules/lodash/isArguments.js","webpack:///../node_modules/lodash/_baseIsArguments.js","webpack:///../node_modules/lodash/stubFalse.js","webpack:///../node_modules/lodash/_isIndex.js","webpack:///../node_modules/lodash/_baseIsTypedArray.js","webpack:///../node_modules/lodash/_baseUnary.js","webpack:///./Farmasiet.CMS/Features/ReactComponents/ScrollLock/ScrollLock.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/ScrollLock/ScrollbarHelpers.ts","webpack:///../node_modules/lodash/_nodeUtil.js","webpack:///../node_modules/lodash/_baseKeys.js","webpack:///../node_modules/lodash/_isPrototype.js","webpack:///../node_modules/lodash/_nativeKeys.js","webpack:///../node_modules/lodash/_overArg.js","webpack:///../node_modules/lodash/isArrayLike.js","webpack:///../node_modules/lodash/_getTag.js","webpack:///../node_modules/lodash/_DataView.js","webpack:///../node_modules/lodash/_Promise.js","webpack:///../node_modules/lodash/_Set.js","webpack:///../node_modules/lodash/_WeakMap.js","webpack:///../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./Farmasiet.CMS/Features/ReactComponents/RenderHTML.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/ApplicationInsights.ts","webpack:///./Farmasiet.CMS/Commerce/TrackingType.csharp.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/API.ts","webpack:///./Farmasiet.CMS/Features/Purchase/Cart/Modifications/AddItem/ViewModel/AddToCartMode.csharp.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/InfoLabel/CircleInfoLabel.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Checkout/Components/CheckoutBaseApi.ts","webpack:///./Farmasiet.CMS/Features/Partials/ProductList/ProductListVariant.csharp.ts","webpack:///./Farmasiet.CMS/Features/BlockSection/BlockSectionMargin.csharp.ts","webpack:///./Farmasiet.CMS/Features/BlockSection/BlockSectionClassResolver.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/Modal/LoginModal.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/InertHelper.ts","webpack:///./Farmasiet.CMS/Features/Blocks/DiscountType.csharp.ts","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/GoogleTagManagerList.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/Contexts/UserContext.tsx","webpack:///./Farmasiet.CMS/Features/Recommendations/ViewModels/RecommendationsCache.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Checkout/Validation/DeliveryMethodValidator.ts","webpack:///./Farmasiet.CMS/Features/Purchase/Checkout/Delivery/DeliveryMethods/DeliveryMethodAvailability.csharp.ts","webpack:///../node_modules/lodash/_root.js","webpack:///./Farmasiet.CMS/Features/Blocks/WidthVariant.csharp.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/LockHeader.ts","webpack:///./Farmasiet.CMS/Features/Purchase/Checkout/Summary/LineItemsApi.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/FindWithIndex.ts"],"names":["translations","keys","getTranslation","translationPath","args","format","getTranslationWithFallback","fallback","trans","text","length","replace","match","number","global","setTranslations","languageTranslations","state","leftPosition","touchInitialPositionX","touchCurrentPositionX","touchCurrentPositionY","swipeEnabled","elementsContainerWidth","scrollLock","swipeLock","breakpoints","elementsWidth","containerRef","wrapperRef","screenWidth","componentDidMount","initElementsArrays","props","onActiveItemsChange","getLastVisibleElementIndex","window","addEventListener","lockScrollingVertically","passive","handleResize","innerWidth","componentWillUnmount","removeEventListener","e","preventDefault","current","childrenLength","children","i","width","getElementWidth","push","adjustBreakpoints","setState","offsetWidth","element","styles","getComputedStyle","parseFloat","marginLeft","marginRight","elementsTotalWidth","getElementsTotalWidth","wrapperWidth","getWrapperWidth","filter","x","getClosestBreakpoint","closestBreakpoint","closestDistance","forEach","breakpoint","distance","Math","abs","startIndex","swiperWidth","full","lastIndex","totalWidth","padding","getLastVisibleElementPadding","lastVisibleElementPadding","reduce","a","b","updatePosition","difference","clientX","closestBreakpointIndex","indexOf","prevState","handleTouchMove","touches","clientY","differenceX","differenceY","lastBreakpointIndex","lastBreakpoint","handleTouchStart","onlyOnMobile","handleTouchEnd","snapToBreakpoint","undefined","snapToBreakpointIndex","componentDidUpdate","prevProps","count","this","render","ref","className","onTouchStart","onTouchEnd","onTouchMove","style","transform","onChange","event","timer","clearTimeout","value","target","onChangeCondition","setTimeout","triggerChange","interval","onKeyDown","key","onCancel","onAfterChange","onBlur","type","id","disabled","onFocus","onClick","placeholder","tabIndex","autoComplete","autocomplete","ButtonLink","buttonClassNames","size","variant","Primary","href","rel","maxQuantity","errorAdditionalInfo","error","minQuantity","NavigationTrackerButtonLink","disableTracking","source","CartChanged","CartValidated","CartTotalQuantityChanged","ToggleCart","ShowUpdatedCart","RequestForUpdatingCart","CloseSearch","CloseNavigation","HideHeader","ScrollLockChange","ErrorOccured","CartMerged","Search","ResetSearch","RefreshPorterBuddy","RefreshPostNord","RefreshPostNHome","RefreshHeltHjem","SessionExpired","RefreshShippingInfo","DeliveryProps","ActionRequiresLogin","FatalError","AddedFirstFavourite","RxItemsRemoved","UserDetailsLoaded","RecommendationsLoaded","CartFromDifferentWarehouse","IframeFocused","RxRemovedFromCart","RxLogoutRequest","RxLoginRequest","EComLogoutRequest","HideAlertRibbon","CheckoutStep","GetEventName","widgetName","capitalizeFirstLetter","charAt","toUpperCase","slice","ProductRating","rating","stars","fullStars","floor","showHalfStar","emptyStars","Array","map","src","alt","ProductCard","model","nameInfo","link","rxUrl","price","promotions","availability","picture","code","subcategory","originName","promotionId","promotionName","showSucceededMessageAfterSave","formConfiguration","isInPhysicalStoreMode","warningMessage","isAgeRestricted","isOnPrescription","showFixedLowPriceLabel","showNewProductLabel","powerReviewsRating","recommendationId","showPromoStar","showVeganLabel","showBestsellerLabel","showGoodPurchaseLabel","badgeSettings","hidePowerReviews","Vertical","variantModifier","showOnlyFreeItemBadge","productDiscountPromotions","promo","promotionInfo","Product","p","wasVisible","setWasVisible","productUrl","setProductUrl","cartItemUrl","addToCartUrl","setAddToCartUrl","experiments","setExperiments","productCardRef","resolvedExperiments","experiment","searchTrackingInfo","searchQuery","GoogleTagManager","productImpression","renderPrice","hasPromotions","applyStylesForDiscountedPrice","hidePercentagePromotionBadge","renderOriginalPrice","promotion","PriceDisplay","roundUp","originalPrice","trackProductClick","trackExperimentProductClick","renderButton","shouldAllowForAvailabilityNotificationSubscriptions","ProductAvailabilityNotification","viewType","variantSku","checkEmailUrl","url","productAvailabilityNotificationUrl","buttonMode","HorizontalSimple","mode","OnPrescription","Prescription","Active","Default","NotAvailable","AddToCart","validateItemUrl","isQuantityVisible","isProductPage","prescriptionUrl","position","epiFindClickTrackingUrl","image","placedPrice","profile","showRefrigeratedProductWarning","renderBuyButton","buyingMode","experimentProductClickUrl","mainInfo","eventDetails","sku","join","sortingType","isVisible","partialVisibility","productCardClick","height","responsiveData","shouldUseFocusArea","focusArea","ratio","getCropClassName","ResponsivePicture","showLoader","isLazyLoaded","isLazyLoading","ProductTopLabel","showFixedLowPriceBadge","Small","showGoodPurchaseBadge","ProductInfoLabel","showNewItemLabel","showVeganProductLabel","numberOfLabels","mainName","productHeader2","variantSubheader","showFavouritesButton","favouritesUrl","FavouriteProductButton","product","HorizontalCompact","renderPriceForMobile","AccordionItemHeader","label","handleOpenItem","index","isActive","isExpanded","isFocused","activeLabelClassName","labelClassName","expandedIcon","collapsedIcon","isItemActive","setIsItemActive","focus","getItemsHeight","items","querySelectorAll","prototype","call","item","offsetHeight","setFocusedItemIndex","focusedItemIndex","scrollToAccordionItem","elements","getElementsByClassName","scrollOnlyOnMobile","scrollIntoView","behavior","openAccordionItem","newItemsStatus","itemsStatus","itemStatus","enableAutoScrolling","allowMultipleItems","onActiveItemChanged","expandItemContent","ItemStatus","handleControl","ArrowDown","goToNextItem","ArrowUp","goToPreviousItem","Home","goToFirstItem","End","goToLastItem","Accordion","getItemsStatus","itemsHeight","getDerivedStateFromProps","showMoreIndicator","itemClassName","collapsedItemMaxHeight","child","isOpened","maxHeight","showFatalErrorModal","dispatchEvent","CustomEvent","FatalErrorModal","setIsVisible","showModal","reloadWindow","location","reload","open","onClose","Medium","_favouritesExpirationTimeInHours","_favouritesStorage","setFavourites","favourites","saveFavouritesInLocalStorage","isFavourite","initialValue","favouriteProductCodes","includes","validateFavourites","user","isLoggedIn","data","getFavouritesFromLocalStorage","expirationDate","Date","getTime","userId","customerId","updateFavourites","clearFavourites","setItem","JSON","stringify","getExpirationDate","favouritesString","getItem","parse","removeItem","buildEmptyFavourites","then","now","hours","getHours","setHours","Favourites","SearchQueryParamName","trackEpiFindClick","trackId","hitType","hitId","handleCartResponseError","productCode","response","cart","setCart","find","setErrorsForItem","validationIssues","issues","findIndex","codes","issue","handleProductCardRequest","apiCall","handleRequest","handleCartRequest","defaultError","Promise","resolve","reject","json","result","catch","status","isWarning","setQuantity","quantity","callback","failed","oldQuantity","quantityOrdered","urlWithParams","isAnonymous","changeQuantity","succeeded","removeFromCart","populateRepository","widgetsData","widgetNames","recommendations","smartRecs","r","widget","err","ApplicationInsights","TrackTrace","Error","recs","RecommendationsEventNameResolver","serializedRecs","RecommendationsCache","getRecommendations","saveRecommendations","TrackingDataFactory","createHomeTrackingData","_createTrackingDataBase","createProductTrackingData","productName","trackingData","contentName","createSearchResultTrackingData","term","productCodes","totalResultCount","searchResults","totalNumberOfResults","createCheckoutTrackingData","createBasketTrackingData","createOrderTrackingData","orderId","orderTrackingData","createBrandTrackingData","brandName","brand","createCategoryTrackingData","categoryCode","category","createAttributeTrackingData","attributeName","attributeValue","attribute","name","createWishlistTrackingData","currentUri","previousUri","document","referrer","customAttributes","settings","Track","trackingDetails","IsEnabled","skipTracking","VisitorIntelligenceFacade","TrackHomePage","Brand","TrackBrandPage","TrackProductPage","Checkout","TrackCheckoutPage","Basket","TrackCartPage","Category","TrackCategoryPage","Wishlist","TrackFavouritesPage","SearchResults","TrackSearchPage","Order","Attribute","Other","TrackSearchResultsPage","totalResults","truncatedTerm","substring","MAX_TERM_LENGTH","TrackInternal","TrackOrderConfirmationPage","URLSearchParams","search","get","widgetOptions","skipRecommendations","AttachRecommendations","recommendationsTracker","track","VisitorIntelligenceTrackingEnabled","RecommendationsRequired","VisitorIntelligenceSettings","scope","channel","onSuccess","callbackOptions","_sendTrackingData","proxyUrl","endPointUrl","_isEmpty","lang","preferredCulture","_post","obj","Object","constructor","async","_send","method","xhr","_getXHR","onreadystatechange","readyState","responseText","setRequestHeader","send","XMLHttpRequest","vers","ActiveXObject","message","baseIsNative","getValue","module","exports","object","TextColor","ProductBuyingMode","priceSpiderProductCodes","getObject","_key","_expiration","set","setObject","clear","Components","FilteredProductList","component","showFirstFavouriteModal","FirstFavouriteModal","favouritesPageUrl","isSnackbarVisible","setIsSnackbarVisible","showSnackbar","heading","linkUrl","linkText","autoHide","onActionRequiresLogin","scrollPosition","detail","favouritesRequestRedirectParams","RequiresLoginModal","loginUrl","registerUrl","setProductCode","setScrollPosition","ampersand","$event","getEncodedUrlParams","params","toString","direction","Column","Link","ModalButtonsDirection","Modal","isOpen","shouldCloseOnOverlayClick","hideCloseButton","onRequestClose","overlayClassName","priority","ariaHideApp","isLocked","ModalContent","narrow","ModalHeading","ModalHeader","ModalText","ModalButtons","Row","ProductAvailabilityNotificationViewType","CompactFavouriteProductButton","isAddedToFavourites","buttonDisabled","setButtonDisabled","isLabelVisible","setIsLabelVisible","labelVisibilityTimeout","getUrlParams","shouldAddToFavourites","scrollToProduct","addFavourite","scrollTo","top","searchParams","documentElement","scrollTop","addToWishList","newlyCreated","showLabel","finally","ProductSortingType","color","Red","shortInfo","hideFreeItemPromotionBadge","CheapestForFree","cheapestDiscount","Mini","requiredQuantity","paidQuantity","hideFixedLowPriceBadge","hideGoodPurchaseBadge","DarkRed","additionalInfo","Pink","handleClickEvents","onMouseDown","button","MiddleButton","smoothScrollTo","endPosition","parseInt","toFixed","completed","onScroll","pageYOffset","RecommendedProducts","productList","setProductList","isLoading","setIsLoading","products","powerReviewsProductListViewModel","productListModel","setProductListModel","recommendationsLoadTimeout","variantMobile","None","area","loadProducts","getProductCards","fallbackSkus","refCode","request","includeOutOfStockItems","showOutOfStockItems","fallbackOriginName","productsUrl","maxProductsAmountOnTablet","maxProductsAmountOnDesktop","withPlaceholders","skipProductsAmountOnMobile","skipProductsAmountOnTablet","skipProductsAmountOnDesktop","maxProductsAmountOnMobile","VERSION","root","self","Function","ArrayProto","ObjProto","SymbolProto","Symbol","hasOwnProperty","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","pow","CookieAccessor","getCookie","cookieNames","tracking","marketing","preferences","statistics","NavigationTracker","trackedHref","setTrackedHref","URL","baseURI","isStatisticsEnabled","bankIdExpiresIn","bankIdExpiration","round","commonProperties","bankIdSessionId","bankId","sessionId","hash","password","username","TrackEvent","FeaturedProductsCompatibleBlockType","FeaturedProductsCompatibleBlock","renderCompatibleBlock","widthVariant","CircleInfo","TwoColumn","FeaturedInfo","blockModel","layout","_maxProductsInRow","GetVisibleProductsCount","_model","getMaxProductsValue","ShouldBeCentered","leadingInfoWidth","layoutToWidth","leadingContent","moreInfoWidth","moreInfoContent","OneColumn","ProductList","GridWithSwiper","productListUtils","hideReviewSnippets","every","getProductCardVariant","Horizontal","shouldRenderSwiper","renderProductsWithAdditionalBlocks","renderProducts","renderPlaceholders","renderProductCards","maxOnMobile","maxOnTablet","maxOnDesktop","itemClassNames","getProductListItemClassNames","hidePricePerUnit","placeholderVariant","placeholders","max","ProductCardPlaceholder","skipOnMobile","skipOnTablet","skipOnDesktop","UserContext","GridWithoutSwiper","BlockSectionClassResolver","Resolve","blockSectionMargin","TouchSwiper","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","entry","has","eq","array","getRawTag","objectToString","symToStringTag","toStringTag","getNative","isKeyable","__data__","factory","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__","modules","installedModules","__webpack_require__","moduleId","l","m","c","d","getter","o","defineProperty","enumerable","t","__esModule","ns","bind","n","property","s","offset","rect","containmentRect","offsetDir","offsetVal","bottom","left","right","__webpack_exports__","VisibilitySensor","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","react_dom__WEBPACK_IMPORTED_MODULE_1__","react_dom__WEBPACK_IMPORTED_MODULE_1___default","prop_types__WEBPACK_IMPORTED_MODULE_2__","prop_types__WEBPACK_IMPORTED_MODULE_2___default","_lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3__","_lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3___default","_typeof","iterator","_defineProperties","descriptor","configurable","writable","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_assertThisInitialized","ReferenceError","_setPrototypeOf","_defineProperty","_React$Component","_this","instance","Constructor","TypeError","_classCallCheck","_possibleConstructorReturn","containment","delay","throttle","timeout","debounceCheck","later","check","info","fn","getLastTimeout","intervalCheck","setInterval","intervalDelay","scrollCheck","getContainer","scrollDelay","scrollThrottle","resizeCheck","resizeDelay","resizeThrottle","delayedCall","debounceEvent","debounceInfo","clearInterval","el","node","normalizeRect","roundRectDown","getBoundingClientRect","containmentDOMRect","innerHeight","clientHeight","clientWidth","visibilityRect","hasSize","partialVisible","minTopValue","console","warn","protoProps","staticProps","subClass","superClass","_inherits","findDOMNode","active","startWatching","stopWatching","Children","only","Component","createElement","func","bool","oneOfType","oneOf","shape","instanceOf","Element","any","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","string","symbol","arrayOf","elementType","objectOf","exact","checkPropTypes","PropTypes","MouseButtons","EmailValidationStatus","ResizedImageFormat","ScaleMode","getCropSettings","aspectRatio","x2","y2","focalPoint","y","sourceWidth","sourceHeight","focalPointY","focalPointX","sourceAspectRatio","targetAspectRatio","x1","y1","newHeight","min","newWidth","getSizes","sources","sizes","getSrcSet","allowedWidths","buildSize","quality","getAllSrcSets","getDefaultUrl","buildResizedImageUrl","defaultWidth","getDefaultData","maxSize","defaultSize","getResizedImageUrl","Pad","maxImageDimension","imageUrl","crop","Preserve","urlParams","modeString","toLowerCase","concatenationSign","Max","originalAspectRatio","dimension","Crop","buildCrop","ImageCropper","isMobile","NewProductInfoLabel","storage","defaultValue","valueString","narrowProfile","wideProfile","textColor","narrowPictureProfile","widePictureProfile","content","html","blockClassNames","Snackbar","isHidden","setIsHidden","isClosed","setIsClosed","closeModalTimeout","fadeModalTimeout","setHideTimeouts","autoHideTimeout","onMouseEnter","onMouseLeave","onLinkClick","restArguments","arguments","rest","apply","isObject","isNull","isUndefined","isBoolean","isElement","nodeType","tagTester","tag","isFunction","nodelist","childNodes","Int8Array","hasStringTagBug","isIE11","Map","isDataView","getInt8","isArrayBuffer","buffer","isArguments","isSymbol","isNumber","constant","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","shallowProperty","typedArrayPattern","test","collectNonEnumProps","contains","emulatedSet","nonEnumIdx","proto","prop","isEmpty","isString","isMatch","attrs","_keys","_","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","valueOf","toJSON","String","tagDataView","aStack","bStack","deepEq","areArrays","aCtor","bCtor","pop","isEqual","allKeys","ie11fingerprint","methods","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","concat","setMethods","values","pairs","invert","functions","names","sort","createAssigner","keysFunc","defaults","baseCreate","Ctor","extendOwn","clone","extend","tap","interceptor","toPath","path","deepGet","identity","optimizeCb","context","argCount","accumulator","baseIteratee","Infinity","cb","iteratee","mapObject","results","currentKey","noop","propertyOf","times","accum","random","createEscaper","escaper","testRegexp","RegExp","replaceRegexp","templateSettings","evaluate","interpolate","escape","noMatch","escapes","escapeRegExp","escapeChar","bareIdentifier","oldSettings","matcher","argument","variable","template","idCounter","uniqueId","prefix","chain","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","bound","callArgs","flatten","input","depth","strict","output","idx","j","len","hasher","memoize","cache","address","wait","options","previous","leading","throttled","_now","remaining","trailing","cancel","debounce","immediate","passed","debounced","_args","wrap","wrapper","negate","predicate","compose","start","after","before","memo","findKey","createPredicateIndexFinder","dir","low","high","mid","createIndexFinder","predicateFind","sortedIndex","findLastIndex","findWhere","each","createReduce","reducer","initial","list","some","fromIndex","guard","contextPath","pluck","where","computed","lastComputed","v","reStrSymbol","toArray","sample","last","rand","temp","shuffle","sortBy","criteria","group","partition","pass","keyInObj","pick","first","compact","Boolean","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","range","stop","step","ceil","chunk","chainResult","mixin","EmailInput","email","setEmail","isEmailWarningVisible","setIsEmailWarningVisible","emailSuggestion","setEmailSuggestion","isEmailCheckInProgress","currentTimeout","pickSuggestion","onEmailChange","checkEmailValidity","newEmail","emailAddress","suggestion","showEmailSuggestionMessage","Undeliverable","setLoadingStatus","clearEmailValidationBusy","refreshValidationTimeout","checkEmailValidityDebounced","useRef","clearOldTimeout","labelClassNames","errorMessage","onInput","onKeyUp","Button","PurchaseConfirmationForm","QuestionState","AddToCartButton","displaySucceededMessage","Large","XSmall","Secondary","loading","placement","Left","Right","loaderPlacement","Unknown","isCheckboxChecked","addToCart","closeZenDesk","closeForm","openZenDesk","zE","checkboxId","pictureProfile","productPrice","ScrollLock","removeScroll","bodyClassName","stopPropagation","checked","htmlFor","usageInformationLink","questionsAndAnswersLink","Tertiary","ViagraFormGenderSelect","isMan","selectMan","selectWoman","ViagraFormHeader","additionalName","ViagraFormAnswersButtons","questionIndex","setQuestionAnswer","subQuestionIndex","question","Yes","No","ViagraFormQuestion","showErrors","addError","q","explanation","NotAnswered","areAllChecked","WithSubQuestions","subQuestions","subQuestion","areSubQuestionsChecked","shouldBeBuyButtonDisabled","wasChatRejected","areCustomerAllowedToBuy","isChatOpen","resetForm","questions","getQuestions","isContactWithPharmacistChecked","closeChat","isDisabled","handleAddToCart","openChat","hasActionAndEvent","userEvent","action","allowToBuyAfterChatEnds","isZendeskChatServed","isZendeskChatMessages","loadZendeskForViagra","webWidget","contactForm","suppress","chat","departments","select","isPredefinedMessageSent","zECustomSettings","predefinedMessage","useCustomizedZendeskForViagraForm","isZenDeskUnavailable","TrackException","onChatClose","answer","checkStatus","areCustomerAllowed","isZenDeskEventAdded","required","body","AddToCartForms","isFormVisible","productBrand","productImage","modalRoot","getElementById","Viagra","Duraphat","AddToCartMessage","isError","canBeClosed","closeErrorMessage","icon","RxMaintenanceAddToCartMessage","header","AddToCartMessages","getWarningMessage","errors","getErrorMessage","rxMaintenance","isNotAvailable","isOutOfStock","showMessage","getMessage","contentRef","collapseNameOffset","handleQuantityChange","parsedQuantity","handleBlur","resolveOriginName","GoogleTagManagerList","productPage","resolvePromotionIdAndName","handleShowName","isMobileNameVisible","scrollY","decreaseQuantity","increaseQuantity","submit","classList","add","getMessages","floating","OutOfStock","onSubmit","validateProduct","transformUrl","IsFromPriceSpiderAccessor","EventNames","lastUpdatedItem","ProductAvailabilityNotificationResponseStatus","ProductAvailabilityNotificationStatus","ProductAvailabilityNotificationsInputModal","setErrorMessage","setIsButtonDisabled","isRequestActive","handleSubmit","isButtonDisabled","ProductAvailabilityNotificationSuccess","ProductAvailabilityNotificationSuccessModal","ProductAvailabilityNotificationCardView","successModalVisible","setSuccessModalVisible","Success","LimitExceeded","XXSmall","handleOnClick","isInputModalVisible","ProductAvailabilityNotificationPageView","Input","setStatus","setIsRequestActive","setIsInputModalVisible","userContext","isLogged","RegexProvider","customerEmail","Ok","viewProps","ProductPage","BestsellerProductInfoLabel","VeganProductInfoLabel","hideNewItemLabel","hideBestsellerLabel","hideVeganLabel","badges","filteredBadges","CircleInfoColorVariant","plainText","backgroundColor","paddingTop","setPaddingTop","textWrapperRef","textRef","textClassNames","calculatePadding","wrapperHeight","textHeight","RenderHTML","validateCheckout","checkout","checkoutStep","Delivery","addresses","selectedAddressId","selectedShipping","delivery","selectedDeliveryMethod","methodAvailability","validate","containsQuantityWarnings","containsOnlyQuantityWarnings","Loader","isServerRendering","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","MapShim","getIndex","arr","class_1","__entries__","delete","splice","ctx","_i","_a","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","observe","attributes","childList","characterData","subtree","disconnect","_b","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","WeakMap","ResizeObserver","eventsToSendOnConsentReady","shouldWaitForCookieBotReady","cookieBotEnabled","pushToDataLayer","pushWithRedirect","clickType","handleEventCallback","pushToDataLayerWithFallbackRedirect","addUserId","dataLayer","isNewTab","eventCallback","ecommerce","openUrl","isMiddleMouseButton","isGoogleAnalyticsLoaded","googleAnalytics","ga","loaded","currencyCode","initCookieBotReadyEventListener","purchase","refund","addPaymentInfo","addShippingInfo","beginCheckout","viewCart","viewMiniCart","viewItem","selectItem","viewItemList","viewPromotion","selectPromotion","searchSuggestions","viewSearchResults","applySearchTagClick","Get","Inactive","currency","mapProductToItemData","item_id","item_name","fullName","item_brand","item_category","discount","item_list_name","promotion_id","promotion_name","stock_level","mapProductCardToItemData","mapSearchItemToItemData","discountedPrice","mapCartItemViewModelToItemData","getPriceForSingleProduct","mapCartItemViewModelToItemDataExtended","couponCode","coupon","discountValue","mapProductTrackingDataToItemData","_googleTagManagerDataLayer","_mapper","_currency","trackPurchase","GoogleAnalytics4Actions","transaction_id","revenue","tax","shipping","shipping_tier","shippingMethod","trackItemView","trackProductCardItemSelect","productLink","productCard","trackCartItemItemSelect","cartItems","trackSearchItemSelect","trackProductCardsItemImpressions","trackSearchResultsItemImpressions","trackAddToCart","trackRemoveFromCart","trackAddToWishList","trackBeginCheckout","trackAddShippingInfo","trackAddPaymentInfo","payment_type","paymentMethod","trackPromotionsView","creative_name","creative","creative_slot","trackPromotionSelect","promotionLink","trackViewCart","total","isMiniCart","trackSearchSuggestions","searchTerm","search_term","trackSearchResultsView","search_variant","trackSearchTagClick","tagValue","tagIndex","tag_value","tag_index","priceSpiderPurchase","trackPriceSpiderPurchase","NonAnalyticsEvents","gtin","priceSpiderPrice","initOnBeforeUnloadEventListener","pushProductImpressionsToDataLayer","pushPromoImpressionsToDataLayer","productDetails","_analyticsTracker","tracker","productCards","maxProductImpressionsAmount","searchProductImpression","getClickType","cartItemClick","searchItemClick","eventId","newQuantity","actionField","trackingId","_nonAnalyticsTracker","promotionImpression","maxPromoImpressionsAmount","searchSuggestion","applySearchTag","promotionClick","originalUrl","cartView","_dataLayer","ctrlKey","metaKey","showCurrency","locales","formattedPrice","toLocaleString","minimumFractionDigits","maximumFractionDigits","imgRef","renderImage","responsivePictureBuilder","imgAttributes","renderImageWithLazyLoading","onLoad","handleOnLoad","onError","buildSources","mediaCondition","media","srcSet","buildSourcesWithLazyLoading","isImageLoadingCompleted","complete","naturalHeight","objectFitPolyfill","other","baseGetTag","freeGlobal","funcToString","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","SetCache","arraySome","cacheHas","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","stubFalse","freeExports","freeModule","Buffer","isBuffer","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","ButtonLoaderPlacement","ButtonVariant","ButtonSize","ExperimentsParamName","resolveExperiments","exp","getClosestExperimentField","dataset","parentElement","globalExperiments","queryString","getAll","closest","addParameter","parameter","param","endsWith","queryStart","useExperimentAwareUrl","expUrl","setExpUrl","getExperimentAwareUrl","useExperimentsForComponent","getUserInformation","device","baseIsEqual","FavouritesListSortingType","ProductListSortingType","SortingOptions","aiSearchHeader","clearSearchInput","SelectedOptionList","selectedOptions","onRemoveOption","onReset","selectedFilter","filterKey","subFilterKey","optionKey","renderSelectedFilters","_isNativeReflectConstruct","Reflect","construct","_createSuper","possibleConstructorReturn","warned","warning","valid","_ref","_ref2","included","vertical","reverse","positonStyle","elStyle","_superPropBase","_get","getOwnPropertyDescriptor","addEventListenerWrap","eventType","option","unstable_batchedUpdates","remove","prefixCls","marks","dots","lowerBound","upperBound","dotStyle","activeDotStyle","points","point","_classNames","isActived","pointClassName","onClickLabel","marksKeys","markPoint","markPointIsObject","isValidElement","markLabel","markClassName","bottomStyle","marginBottom","leftStyle","msTransform","markStyle","Handle","_super","clickFocused","setHandleRef","handle","handleMouseUp","activeElement","setClickFocus","handleMouseDown","handleKeyDown","onMouseUpListener","focused","blur","ariaValueText","_this$props","ariaLabel","ariaLabelledBy","ariaValueTextFormatter","restProps","positionStyle","mergedTabIndex","role","KeyCode","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","DELETE","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","keyCode","altKey","isCharacterKey","navigator","userAgent","isEventFromHandle","handles","isValueOutOfRange","isNotTouchEvent","getClosestPoint","val","baseNum","getPrecision","maxSteps","steps","closestStep","diffs","stepString","precision","getMousePosition","pageX","getTouchPosition","getHandleCenterPosition","coords","pageXOffset","ensureValueInRange","_ref3","ensureValuePrecision","closestPoint","pauseEvent","getKeyboardValueMutator","increase","decrease","operations","indexToGet","keyToGet","calculateNextValue","createSlider","_Component","ComponentEnhancer","onDown","draggableTrack","isVertical","bounds","positionGetValue","inPoint","handlesRefs","dragTrack","dragOffset","startBounds","handlePosition","onStart","removeDocumentEvents","addDocumentMouseEvents","addDocumentTouchEvents","_this$props2","onEnd","onMouseUp","prevMovedHandleIndex","clickFocus","onMouseMove","sliderRef","onMove","onKeyboard","onClickMarkLabel","saveSlider","slider","isPointDiffEven","_this$props3","autoFocus","_this$props4","onTouchMoveListener","onTouchUpListener","onMouseMoveListener","_this$handlesRefs$","_this2","_this2$handlesRefs$ke","_this2$handlesRefs$ke2","_this$props5","getSliderLength","pixelOffset","getSliderStart","trimAlignValue","calcValue","_this$props6","_this$props7","maximumTrackStyle","railStyle","_get$call","tracks","sliderClassName","getLowerBound","getUpperBound","displayName","defaultProps","dragging","onBeforeChange","trackStyle","handleStyle","Slider","force","h","theValue","nextValue","isNotControlled","nextState","changedValue","prevValue","calcValueByPos","startValue","startPosition","oldValue","valueMutator","mutatedValue","minPoint","startPoint","nextProps","mergedProps","minimumTrackStyle","ariaLabelForHandle","ariaLabelledByForHandle","ariaValueTextFormatterForHandle","handleGenerator","_this$state","calcOffset","saveHandle","trackOffset","mergedTrackStyle","_trimAlignValue","allowCross","pushable","thershold","Number","valInRange","valNotConflict","Range","closestBound","getClosestBound","getBoundNeedMoving","nextBounds","recent","currentValue","controlledState","maxValue","minValue","pos","moveTo","boundNeedMoving","isAtTheSamePoint","internalPointsCache","pointsObject","isFromKeyboardEvent","_this3","nextHandle","pushSurroundingHandles","threshold","diffToNext","pushHandle","amount","originalValue","pushHandleOnePoint","getPoints","nextPointIndex","_this$state2","_this4","_this$state3","ariaLabelGroupForHandles","ariaLabelledByGroupForHandles","ariaValueTextFormatterGroupForHandles","offsets","handleClassName","_classNames2","trackClassName","raf","caf","num","cancelAnimationFrame","rafUUID","rafIds","cleanup","wrapperRaf","callRef","leftTimes","realId","HTMLElement","fillRef","composeRef","_len","refs","refList","canUseDom","didUpdate","initRef","_containerRef$current","_containerRef$current2","parentNode","removeChild","createPortal","isPointsEq","a1","a2","isAlignPoint","makePrefixMap","styleProp","eventName","prefixes","domSupport","win","vendorPrefixes","animationend","transitionend","animation","transition","_document$createEleme","prefixedEventNames","getVendorPrefixedEventName","prefixMap","stylePropList","internalAnimationEndName","internalTransitionEndName","supportTransition","animationEndName","transitionEndName","getTransitionName","transitionName","transitionType","STATUS_NONE","STATUS_APPEAR","STATUS_ENTER","STATUS_LEAVE","STEP_NONE","STEP_PREPARE","STEP_START","STEP_ACTIVE","STEP_ACTIVATED","useMountStatus","destroyRef","_useState","_useState2","setVal","next","STEP_QUEUE","setStep","_useNextFrame","nextFrameRef","cancelNextFrame","nextFrame","nextFrameId","isCanceled","useNextFrame","_useNextFrame2","nextStep","doNext","useStatus","supportMotion","visible","getElement","_ref$motionEnter","motionEnter","_ref$motionAppear","motionAppear","_ref$motionLeave","motionLeave","motionDeadline","motionLeaveImmediately","onAppearPrepare","onEnterPrepare","onLeavePrepare","onAppearStart","onEnterStart","onLeaveStart","onAppearActive","onEnterActive","onLeaveActive","onAppearEnd","onEnterEnd","onLeaveEnd","onVisibleChanged","asyncVisible","setAsyncVisible","_useState3","_useState4","_useState5","_useState6","setStyle","mountedRef","deadlineRef","destroyedRef","cacheElementRef","getDomElement","activeRef","onInternalMotionEnd","canEnd","deadline","_useDomMotionEvents","callbackRef","removeMotionEvents","useDomMotionEvents","patchMotionEvents","eventHandlers","_ref4","_useStepQueue","useStepQueue","newStep","onPrepare","_eventHandlers$step","_useStepQueue2","startStep","nextStatus","isMounted","mergedStyle","DomWrapper","config","transitionSupport","isSupportTransition","motionName","CSSMotion","_props$visible","_props$removeOnLeave","removeOnLeave","forceRender","leavedClassName","eventProps","nodeRef","wrapperNodeRef","_useStatus","_useStatus2","statusStep","statusStyle","mergedVisible","renderedRef","motionChildren","setNodeRef","statusSuffix","display","STATUS_ADD","STATUS_KEEP","STATUS_REMOVE","STATUS_REMOVED","wrapKeyToObject","keyObj","parseKeys","diffKeys","prevKeys","currentKeys","currentIndex","currentLen","prevKeyObjects","currentKeyObjects","hit","currentKeyObj","duplicatedKeys","matchKey","_excluded","_excluded2","MOTION_PROP_NAMES","CSSMotionList","keyEntities","removeKey","entity","_onVisibleChanged","motionProps","changedVisible","parsedKeyObjects","prevEntity","_ref5","getMotion","motion","Mask","zIndex","mask","maskMotion","maskAnimation","maskTransitionName","vendorPrefix","jsCssMap","Webkit","Moz","ms","getVendorPrefix","getTransformName","setTransitionProperty","transitionProperty","setTransform","getComputedStyleX","matrix2d","matrix3d","forceRelayout","elem","originalStyle","css","getScroll","w","ret","getScrollLeft","getScrollTop","getOffset","box","doc","docElem","clientLeft","clientTop","getClientPosition","parentWindow","isWindow","getDocument","_RE_NUM_NO_PX","RE_POS","getOffsetDirection","useCssRight","useCssBottom","oppositeOffsetDirection","setLeftTop","presetH","presetV","horizontalProperty","verticalProperty","oppositeHorizontalProperty","oppositeVerticalProperty","originalTransition","originalOffset","old","preset","off","originalXY","getPropertyValue","matrix","split","getTransformXY","resultXY","xy","match2d","setTransformXY","isBorderBoxFn","cs","computedStyle","rsLeft","pixelLeft","BOX_MODELS","swap","getPBMWidth","which","cssProp","domUtils","getParent","parent","host","getWH","ex","extra","viewportWidth","viewportHeight","docWidth","docHeight","borderBoxValue","isBorderBox","cssBoxValue","borderBoxValueOrIsBorderBox","refWin","documentElementProp","compatMode","cssShow","visibility","getWHIgnoreDisplay","mix","to","from","includeMargin","utils","getWindow","ignoreShake","oriOffset","oLeft","oTop","tLeft","tTop","useCssTransform","setOffset","overflow","getWindowScrollLeft","getWindowScrollTop","merge","getOffsetParent","nodeName","getVisibleRectForElement","alwaysByViewport","visibleRect","originalPosition","scrollX","documentWidth","scrollWidth","documentHeight","scrollHeight","bodyStyle","overflowX","overflowY","isAncestorFixed","maxVisibleWidth","maxVisibleHeight","getRegion","outerWidth","outerHeight","getAlignOffset","region","align","getElFuturePos","elRegion","refNodeRegion","targetOffset","p1","p2","diff","isFailX","elFuturePos","isFailY","flip","reg","flipOffset","convertOffset","str","offsetLen","normalizeOffset","doAlign","tgtRegion","isTgtRegionVisible","newOverflowCfg","fail","newElRegion","adjustX","adjustY","newPoints","newOffset","newTargetOffset","isCompleteFailX","isCompleteFailY","isStillFailX","isStillFailY","resizeWidth","resizeHeight","adjustForViewport","alignElement","refNode","isTargetNotOutOfVisible","targetRegion","isOutOfVisibleRect","__getOffsetParent","__getVisibleRectForElement","monitorResize","prevWidth","prevHeight","resizeObserver","_target$getBoundingCl","fixedWidth","fixedHeight","getPoint","onAlign","monitorWindowResize","_ref$monitorBufferTim","monitorBufferTime","cacheRef","childNode","forceAlignPropsRef","_useBuffer","calledRef","timeoutRef","cancelTrigger","trigger","useBuffer","_forceAlignPropsRef$c","latestDisabled","latestTarget","latestAlign","latestOnAlign","offsetParent","_box","tgtPoint","pageY","pointInView","container","restoreFocus","_useBuffer2","_forceAlign","cancelForceAlign","resizeMonitor","sourceResizeMonitor","useEffect","prev","winResizeRef","useImperativeHandle","forceAlign","cloneElement","RcAlign","forwardRef","asyncGeneratorStep","u","done","_asyncToGenerator","_next","_throw","StatusQueue","PopupInner","stretch","destroyPopupOnHide","getRootDomNode","getClassNameFromAlign","alignRef","elementRef","alignedClassName","setAlignedClassName","_useStretchStyle","_React$useState","_React$useState2","targetSize","setTargetSize","sizeStyle","minHeight","minWidth","useStretchStyle","_useStretchStyle2","stretchStyle","measureStretchStyle","_useVisibleStatus","setInternalStatus","rafRef","cancelRaf","doMeasure","mark","_callee","_context","useVisibleStatus","_useVisibleStatus2","goNextStatus","prepareResolveRef","_alignRef$current","onInternalAlign","popupDomNode","matchAlign","nextAlignedClassName","_prepareResolveRef$cu","onShowPrepare","originHandler","opacity","pointerEvents","alignDisabled","motionRef","motionClassName","motionStyle","mergedClassName","onMouseDownCapture","onTouchStartCapture","MobilePopupInner","_props$mobile","mobile","popupClassName","popupStyle","_props$mobile$popupMo","popupMotion","popupRender","Popup","innerVisible","serInnerVisible","inMobile","setInMobile","cloneProps","agent","vendor","opera","substr","popupNode","returnEmptyString","returnDocument","ALL_HANDLERS","PortalComponent","Trigger","_popupVisible","popupRef","triggerRef","attachId","clickOutsideHandler","touchOutsideHandler","contextMenuOutsideHandler1","contextMenuOutsideHandler2","mouseDownTimeout","focusTime","preClickTime","preTouchTime","delayTimer","hasPopupMouseDown","mouseEnterDelay","fireEvents","delaySetPopupVisible","setPoint","mouseLeaveDelay","onPopupMouseEnter","clearDelayTimer","onPopupMouseLeave","_this$popupRef$curren","relatedTarget","isFocusToShow","focusDelay","isBlurToHide","blurDelay","onContextMenu","setPopupVisible","onContextMenuClose","isContextMenuToShow","close","preTime","isClickToShow","isClickToHide","nextVisible","popupVisible","onPopupMouseDown","_this$context","onDocumentClick","maskClosable","getPopupDomNode","isContextMenuOnly","getTriggerDOMNode","domNode","getPopupClassNameFromAlign","popupPlacement","builtinPlacements","alignPoint","placements","getAlignPopupClassName","getComponent","onPopupAlign","popupAnimation","popupTransitionName","popup","getPopupAlign","mouseProps","isMouseEnterToShow","isMouseLeaveToHide","attachParent","popupContainer","mountNode","getPopupContainer","appendChild","handlePortalUpdate","prevPopupVisible","afterPopupVisibleChange","triggerContextValue","defaultPopupVisible","currentDocument","clearOutsideHandler","_this$popupRef$curren2","popupAlign","placementStr","baseAlign","getAlignFromPlacement","onPopupVisibleChange","delayS","childPros","showAction","hideAction","_this$props8","_this$props9","_this$props10","_this$popupRef$curren3","childCallback","_this$props11","autoDestroy","newChildProps","createTwoChains","childrenClassName","nodeOrComponent","_type$prototype","_nodeOrComponent$prot","portal","Provider","newState","contextType","autoAdjustOverflow","topLeft","leftTop","topRight","rightTop","bottomRight","rightBottom","bottomLeft","leftBottom","overlay","overlayInnerStyle","_props$trigger","_props$mouseEnterDela","_props$mouseLeaveDela","overlayStyle","_props$prefixCls","onVisibleChange","afterVisibleChange","_props$placement","_props$align","_props$destroyTooltip","destroyTooltipOnHide","defaultVisible","getTooltipContainer","domRef","extraProps","destroyTooltip","keepParent","_props$arrowContent","arrowContent","innerRef","tooltipRef","cancelKeepAlign","_innerRef$current","forcePopupAlign","InternalSlider","createSliderWithTooltip","ComponentWrapper","visibles","handleTooltipVisibleChange","handleWithTooltip","handleStyleWithIndex","tipFormatter","tipProps","_tipProps$prefixCls","_tipProps$overlay","_tipProps$placement","_tipProps$visible","restTooltipProps","formatPrice","thresholds","onMinChange","onMaxChange","SelectedFilterList","isAIEnabled","showRemoveAll","isSubFilter","TagList","loadedTags","fullWidth","leadInText","disableFilters","setFiltersVisible","limit","requestId","removeSearchQuery","filters","CategoriesTreeCategory","onChangeOption","categoryKey","isSelected","CategoriesTree","categoryFilters","isProductsLoading","isProductsLoadingPrevious","isCategoryActive","buildStatus","useState","setItemsStatus","activeItemsStatus","setActiveItemsStatus","AccordionItem","offsetTop","ProductFilters","expandedFilters","setExpandedFilters","filtersRef","filtersContainerRef","filtersContentRef","setCategoryFilters","handleClickOutside","categoryFiltersIndex","newStatus","isPriceExpanded","getLink","filtersContainer","getFiltersWithoutCategory","categoryFilterIndex","searchTagsUrl","onAddOption","productAmount","subfilterKey","linkQuery","links","renderSubcategories","changedItemsStatus","expanded","categoryIndex","getFilterKeys","optionId","priceRange","onChangePriceInputMin","onChangePriceInputMax","onAfterChangePrice","updatedValues","onChangePriceRange","setPriceRange","afterChange","picturesWithoutLazyLoadingAmount","searchPhraseKey","searchIdKey","lastTagKey","priceKey","searchKey","previousGaTrackedSearchPhrase","createRef","categoryPageBodyRef","productSortingType","sortingOptions","ForProductList","history","priceService","query","buildQuery","searchPhrase","filterList","runQuery","page","queryChanged","selected","onChangeInputMin","selectedValue","sliderMin","onChangeInputMax","sliderMax","onChangeRange","getTags","showEmptyPageTags","filterSuggestions","filterLabel","removeExistingSearchTerm","identifierPairs","clearFilters","updatedFilters","subOption","resetFilters","resetOption","toggleOption","isCurrentOptionASubfilter","resetSearch","resetPrice","tagsUsed","subOptionKey","toggleTag","searchId","selectedTag","groupedFilters","queryParams","getParentOption","builtFilters","buildUpdatedFilters","isSubfilter","toggleWithSubfilter","filterIndex","toggleWithoutSubfilter","optionIndex","updateFiltersForCategory","handleSortingTypeChange","buildSelectedOptions","f","getSelectedOptions","isActivePriceFilter","getPriceFilter","brandId","priceFilter","getOptions","scrollToTop","queryForProducts","aiHeaders","resolveAiHeaders","getTop","setResults","setPopstateEventListener","isProductListTrackable","setEmptyResults","headers","AiSearchKeys","handleNavigationEvent","numberOfProducts","allowedProducts","resultsCount","filterAllowedProducts","selectedPage","maxPage","buildPriceRange","hideReviewSnippet","isAISearch","resultsPerPage","minPrice","maxPrice","selectedMinPrice","selectedMaxPrice","getHeaderHeight","querySelector","priceValues","lastTag","optionQuery","filterOption","subfilterOption","flatMap","parentKey","changePage","runQueryForPage","handlePageChange","phrase","replaceState","renderSortingOptions","translationKey","searchPhraseFilter","displayEmptyPageInformation","searchRecommendationsProps","showFilters","buildTagListProps","selectedPrice","displayedPrice","uid","localStorage","toDateString","exception","DiscountVariant","postalCode","phoneNumber","ssn","containsNumber","for","g","k","z","$$typeof","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","baseIsEqualDeep","isObjectLike","Stack","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","stackClear","stackDelete","stackGet","stackHas","stackSet","assocIndexOf","LARGE_ARRAY_SIZE","isMasked","toSource","reIsHostCtor","funcProto","objectProto","reIsNative","nativeObjectToString","isOwn","unmasked","ProductCardVariant","coreJsData","maskSrcKey","exec","IE_PROTO","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","setCacheAdd","setCacheHas","nameIndicator","cookie","setCookie","expires","setTime","toUTCString","deleteCookie","mapToArray","setToArray","symbolProto","symbolValueOf","byteLength","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","baseGetAllKeys","getSymbols","arrayPush","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","resIndex","arrayLikeKeys","baseKeys","isArrayLike","baseTimes","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsArguments","reIsUint","isLength","typedArrayTags","scrollbarWidth","updateClassList","bodyClassNames","paddingRight","activate","removeClassNames","deactivate","removeAttribute","scrollDiv","setAttribute","getScrollbarWidth","isLockedChanged","isRemoveScrollChanged","freeProcess","process","types","require","binding","isPrototype","overArg","arg","Set","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","_regeneratorRuntime","asyncIterator","define","Generator","Context","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isGeneratorFunction","awrap","rval","finish","delegateYield","allowedAttributes","onTagAttr","dangerouslySetInnerHTML","__html","SeverityLevel","appInsights","trackException","level","properties","trackTrace","trackEvent","TrackingType","additionalHeaders","Accept","__RequestVerificationToken","getElementsByName","experimentsDefinition","experimentationPathHeaderName","experimentationUserDataHeaderName","handleResponse","promise","unauthorizedHandler","ok","put","fetch","credentials","post","postFor","del","deleteFor","getFor","putFor","farmasietApi","AddToCartMode","StarInfoLabelColor","CircleInfoLabel","initializer","routes","getCheckout","updateCheckout","postalCodeAutocompleteUrl","addressAutocompleteUrl","handleCheckoutError","setCheckoutError","getStatusErrorMessage","messageKey","unexpectedOperationError","ProductListVariant","BlockSectionMargin","margin","onSessionExpired","LoginModal","redirectToLogin","inertHelper","inert","DiscountType","aiSearchResults","featuredProducts","categoryAssociatedProducts","brandAssociatedProducts","brandPage","subbrandPage","categoryPage","subcategoryPage","campaignPage","cartPage","favouriteProducts","cartRecommendedProducts","cartDrawerRecommendedProducts","homePageRecommendedProducts","productPageRecommendedProducts","productPageCrossSellRecommendedProducts","productPageRecommendedFallbackBrandProducts","productPageRecommendedFallbackCategoryProducts","homePage","UserContextProvider","setUser","onUserDetailsLoaded","isReady","recommendationsKey","deliveryMethodValidator","_deliveryMethodsValidators","registerDeliveryMethodValidator","validator","unregisterDeliveryMethodValidator","methodType","DeliveryMethodAvailability","freeSelf","WidthVariant","lockHeader","forceOpen","getCart","updateCart","setIsLoaderActive","summary","quantityBefore","SetQuantityResult","cartId","isUserLoggedIn","setValidationIssuesToLineItem","updateResult","updateSucceeded","dispatchQuantityChangeEvent","removeSucceeded","findWithIndex","totalQuantity","updatedItem"],"mappings":"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","file":"filters.bcca0249f485393f6668.js","sourcesContent":["/* eslint-disable */\n\r\nexport interface ITranslations {\r\n\t'en': string;\r\n\t'header.searchPlaceholder': string;\r\n\t'header.products': string;\r\n\t'header.search': string;\r\n\t'header.clearSearch': string;\r\n\t'header.physicalStoreMode': string;\r\n\t'header.cartFromDifferentWarehouse': string;\r\n\t'header.searchLabel': string;\r\n\t'footer.followUs': string;\r\n\t'footer.seeCookieConsent': string;\r\n\t'actionMenu.myPage': string;\r\n\t'actionMenu.myOrders': string;\r\n\t'actionMenu.myFavourites': string;\r\n\t'actionMenu.prescriptionHistory': string;\r\n\t'actionMenu.logIn': string;\r\n\t'actionMenu.register': string;\r\n\t'actionMenu.logOut': string;\r\n\t'actionMenu.activeBankIdSession': string;\r\n\t'actionMenu.logOutFromBankId': string;\r\n\t'actionMenu.customerService': string;\r\n\t'actionMenu.rxService': string;\r\n\t'homePage.title': string;\r\n\t'common.tryAgainOrContactCustomerSupport': string;\r\n\t'navigation.menu': string;\r\n\t'navigation.rxMenu': string;\r\n\t'navigation.myPage': string;\r\n\t'navigation.cart': string;\r\n\t'navigation.favourites': string;\r\n\t'navigation.categories': string;\r\n\t'navigation.categoriesAndProducts': string;\r\n\t'navigation.shortcuts': string;\r\n\t'navigation.buyPrescription': string;\r\n\t'navigation.chatWithPharmacist': string;\r\n\t'navigation.logIn': string;\r\n\t'navigation.logOut': string;\r\n\t'navigation.hi': string;\r\n\t'navigation.registrationLink': string;\r\n\t'navigation.open': string;\r\n\t'navigation.close': string;\r\n\t'navigation.back': string;\r\n\t'navigation.seeAllProducts': string;\r\n\t'navigation.physicalStoreMode': string;\r\n\t'navigation.skipToContent': string;\r\n\t'navigation.goToCheckout': string;\r\n\t'navigation.search': string;\r\n\t'favourites.removed': string;\r\n\t'favourites.login': string;\r\n\t'favourites.register': string;\r\n\t'favourites.loginRequiredHeader': string;\r\n\t'favourites.loginRequiredContent': string;\r\n\t'favourites.saveItems': string;\r\n\t'favourites.description': string;\r\n\t'favourites.seeAllProducts': string;\r\n\t'favourites.productRemoved': string;\r\n\t'favourites.added': string;\r\n\t'favourites.firstFavouriteHeading': string;\r\n\t'favourites.firstFavouriteContent': string;\r\n\t'favourites.goToFavourites': string;\r\n\t'newMessage.heading': string;\r\n\t'newMessage.content': string;\r\n\t'newMessage.link': string;\r\n\t'expectedDeliveryDate.estimatedDeliveryTo': string;\r\n\t'expectedDeliveryDate.deliveryDate': string;\r\n\t'expectedDeliveryDate.info': string;\r\n\t'expectedDeliveryDate.postalCode': string;\r\n\t'expectedDeliveryDate.checkDeliveryDate': string;\r\n\t'expectedDeliveryDate.check': string;\r\n\t'expectedDeliveryDate.preferredMethod': string;\r\n\t'expectedDeliveryDate.fastestMethod': string;\r\n\t'expectedDeliveryDate.allMethods': string;\r\n\t'expectedDeliveryDate.failPostalCode': string;\r\n\t'expectedDeliveryDate.seeMore': string;\r\n\t'expectedDeliveryDate.notAvailable': string;\r\n\t'expectedDeliveryDate.aboutDeliveryMethods': string;\r\n\t'expectedDeliveryDate.noMethods.title': string;\r\n\t'expectedDeliveryDate.noMethods.subtitle': string;\r\n\t'expectedDeliveryDate.unexpectedError.title': string;\r\n\t'expectedDeliveryDate.unexpectedError.subtitle': string;\r\n\t'expectedDeliveryDate.today': string;\r\n\t'expectedDeliveryDate.tomorrow': string;\r\n\t'brand.favourite': string;\r\n\t'brand.popular': string;\r\n\t'brand.brands': string;\r\n\t'cartSummary.cart': string;\r\n\t'cartSummary.prescription': string;\r\n\t'cartSummary.closeCart': string;\r\n\t'cartSummary.openCart': string;\r\n\t'cartSummary.product': string;\r\n\t'cartSummary.products': string;\r\n\t'cartSummary.freeShipping': string;\r\n\t'cartSummary.totalSum': string;\r\n\t'cartSummary.spared': string;\r\n\t'cartSummary.goToCart': string;\r\n\t'cartSummary.goToCheckout': string;\r\n\t'cartSummary.loginTitle': string;\r\n\t'cartSummary.loginSubtitle': string;\r\n\t'cartSummary.loginButton': string;\r\n\t'cartSummary.registerTitle': string;\r\n\t'cartSummary.registerSubtitle': string;\r\n\t'cartSummary.registerButton': string;\r\n\t'cartSummary.vippsTitle': string;\r\n\t'cartSummary.vippsSubtitle': string;\r\n\t'cartSummary.vippsButton': string;\r\n\t'cartSummary.emptyCartHeading': string;\r\n\t'cartSummary.emptyCartMessage': string;\r\n\t'cartSummary.includingTaxes': string;\r\n\t'cartSummary.remove': string;\r\n\t'cartSummary.addToCartMessage': string;\r\n\t'cartSummary.discount': string;\r\n\t'cartSummary.delivery': string;\r\n\t'cartSummary.free': string;\r\n\t'cartSummary.from': string;\r\n\t'cartSummary.freeDeliveryNeededAmount': string;\r\n\t'cartSummary.freeDeliveryGratis': string;\r\n\t'cartSummary.freeDeliveryAchieved': string;\r\n\t'cartSummary.freeDeliveryCalculationHeading': string;\r\n\t'cartSummary.freeDeliveryButtonA11yText': string;\r\n\t'cartSummary.freeDeliveryButtonHide': string;\r\n\t'cartSummary.freeDeliveryButtonShow': string;\r\n\t'cartSummary.completePurchase': string;\r\n\t'cartSummary.completePurchaseForFreeDelivery': string;\r\n\t'cartSummary.merged': string;\r\n\t'cartSummary.validation.Unexpected': string;\r\n\t'cartSummary.validation.CannotProcessDueToMissingOrderStatus': string;\r\n\t'cartSummary.validation.RemovedDueToCodeMissing': string;\r\n\t'cartSummary.validation.RemovedDueToNotAvailableInMarket': string;\r\n\t'cartSummary.validation.RemovedDueToUnavailableCatalog': string;\r\n\t'cartSummary.validation.RemovedDueToUnavailableItem': string;\r\n\t'cartSummary.validation.RemovedDueToInsufficientQuantityInInventory': string;\r\n\t'cartSummary.validation.RemovedDueToInactiveWarehouse': string;\r\n\t'cartSummary.validation.RemovedDueToMissingInventoryInformation': string;\r\n\t'cartSummary.validation.RemovedDueToInvalidPrice': string;\r\n\t'cartSummary.validation.RemovedDueToInvalidMaxQuantitySetting': string;\r\n\t'cartSummary.validation.AdjustedQuantityByMinQuantity': string;\r\n\t'cartSummary.validation.AdjustedQuantityByMaxQuantity': string;\r\n\t'cartSummary.validation.AdjustedQuantityByBackorderQuantity': string;\r\n\t'cartSummary.validation.AdjustedQuantityByPreorderQuantity': string;\r\n\t'cartSummary.validation.AdjustedQuantityByAvailableQuantity': string;\r\n\t'cartSummary.validation.PlacedPricedChanged': string;\r\n\t'cartSummary.validation.RemovedGiftDueToInsufficientQuantityInInventory': string;\r\n\t'cartSummary.validation.RejectedInventoryRequestDueToInsufficientQuantity': string;\r\n\t'cartSummary.validation.AdjustedQuantityByOtcLimitQuantity': string;\r\n\t'cartSummary.validation.CannotBeAddedDueToDateTimeRestrictions': string;\r\n\t'cartSummary.validation.CannotBeRemovedDueToPriceRecalculationError': string;\r\n\t'cartSummary.validation.addToCart.unexpectedError': string;\r\n\t'cartSummary.validation.invalidActionPleaseRefresh': string;\r\n\t'cartSummary.validation.DifferentWarehouse': string;\r\n\t'vippsExpress.heading': string;\r\n\t'vippsExpress.subheading1': string;\r\n\t'vippsExpress.subheading2': string;\r\n\t'vippsExpress.phoneNumber': string;\r\n\t'vippsExpress.ssn': string;\r\n\t'vippsExpress.invalidSsn': string;\r\n\t'vippsExpress.button': string;\r\n\t'modal.ok': string;\r\n\t'modal.confirm': string;\r\n\t'modal.cancel': string;\r\n\t'modal.close': string;\r\n\t'modal.sessionExpired.title': string;\r\n\t'modal.sessionExpired.message': string;\r\n\t'modal.errorInfo': string;\r\n\t'modal.goBack': string;\r\n\t'modal.refresh': string;\r\n\t'modal.rxSession.goToCheckout': string;\r\n\t'modal.rxSession.close': string;\r\n\t'modal.rxSession.logIn': string;\r\n\t'modal.rxSession.logout': string;\r\n\t'modal.rxSession.goToCart': string;\r\n\t'modal.rxSession.expiringHeading': string;\r\n\t'modal.rxSession.expiredHeading': string;\r\n\t'modal.rxSession.logoutHeading': string;\r\n\t'modal.rxSession.minute': string;\r\n\t'modal.rxSession.minutes': string;\r\n\t'modal.rxSession.expiringBody': string;\r\n\t'modal.rxSession.expiredBody': string;\r\n\t'modal.rxSession.logoutBody': string;\r\n\t'payment.title': string;\r\n\t'payment.addPayment': string;\r\n\t'payment.paymentMethods': string;\r\n\t'payment.paymentAddress': string;\r\n\t'payment.addToAddressBook': string;\r\n\t'payment.submit': string;\r\n\t'payment.payWithVipps': string;\r\n\t'payment.processing': string;\r\n\t'payment.pleaseWait': string;\r\n\t'payment.payWith': string;\r\n\t'payment.klarnaErrorMessage': string;\r\n\t'payment.vippsExpressCheckout': string;\r\n\t'checkout.name': string;\r\n\t'checkout.heading': string;\r\n\t'checkout.required': string;\r\n\t'checkout.incorrectPostalCode': string;\r\n\t'checkout.incorrectEmail': string;\r\n\t'checkout.incorrectPhone': string;\r\n\t'checkout.incorrectPostalCodeOrCity': string;\r\n\t'checkout.incorrectCity': string;\r\n\t'checkout.orderHasChangedHeading': string;\r\n\t'checkout.orderHasChangedContent': string;\r\n\t'checkout.deliveryMethodHasChangedHeading': string;\r\n\t'checkout.deliveryMethodHasChangedContent': string;\r\n\t'checkout.ok': string;\r\n\t'checkout.consentsRequired': string;\r\n\t'checkout.termsOfSaleConsent.ingress': string;\r\n\t'checkout.termsOfSaleConsent.link': string;\r\n\t'checkout.relationshipOffersConsent': string;\r\n\t'checkout.continueShopping': string;\r\n\t'checkout.backToCart': string;\r\n\t'checkout.paymentSuccess': string;\r\n\t'checkout.summary.title': string;\r\n\t'checkout.summary.productsInCart': string;\r\n\t'checkout.summary.sum': string;\r\n\t'checkout.summary.freeDelivery': string;\r\n\t'checkout.summary.goToAddresses': string;\r\n\t'checkout.summary.goToDelivery': string;\r\n\t'checkout.summary.warningTop': string;\r\n\t'checkout.summary.warningBottom': string;\r\n\t'checkout.summary.discountCode': string;\r\n\t'checkout.summary.enterDiscountCode': string;\r\n\t'checkout.summary.discount': string;\r\n\t'checkout.summary.delivery': string;\r\n\t'checkout.summary.total': string;\r\n\t'checkout.summary.includeTax': string;\r\n\t'checkout.summary.apologyTechnicalError': string;\r\n\t'checkout.summary.add': string;\r\n\t'checkout.summary.reviewCart': string;\r\n\t'checkout.summary.coupons.genericCouponError': string;\r\n\t'checkout.summary.coupons.anonymousCustomerRedemptionError': string;\r\n\t'checkout.summary.coupons.alreadyUsedError': string;\r\n\t'checkout.summary.coupons.couponEmpty': string;\r\n\t'checkout.summary.coupons.couponTechnicalError': string;\r\n\t'checkout.summary.coupons.couponWithoutDiscount': string;\r\n\t'checkout.summary.coupons.requireRxInCart': string;\r\n\t'checkout.ageConfirmation.InvalidNumber': string;\r\n\t'checkout.ageConfirmation.Invalid': string;\r\n\t'checkout.ageConfirmation.InvalidAge': string;\r\n\t'checkout.ageConfirmation.header': string;\r\n\t'checkout.ageConfirmation.info': string;\r\n\t'checkout.ageConfirmation.input': string;\r\n\t'checkout.ageConfirmation.button': string;\r\n\t'checkout.delivery.address': string;\r\n\t'checkout.delivery.sendTo': string;\r\n\t'checkout.delivery.addAnotherAddress': string;\r\n\t'checkout.delivery.method': string;\r\n\t'checkout.delivery.hasMedicines': string;\r\n\t'checkout.delivery.notAvailableMethod': string;\r\n\t'checkout.delivery.goToPayment': string;\r\n\t'checkout.delivery.placeOrder': string;\r\n\t'checkout.delivery.delete': string;\r\n\t'checkout.delivery.edit': string;\r\n\t'checkout.delivery.formAddress': string;\r\n\t'checkout.delivery.postalCodeAndCity': string;\r\n\t'checkout.delivery.postalCodeAndCityPlaceholder': string;\r\n\t'checkout.delivery.companyName': string;\r\n\t'checkout.delivery.email': string;\r\n\t'checkout.delivery.phoneNumber': string;\r\n\t'checkout.delivery.checkPhoneNumber': string;\r\n\t'checkout.delivery.firstName': string;\r\n\t'checkout.delivery.lastName': string;\r\n\t'checkout.delivery.city': string;\r\n\t'checkout.delivery.formAdd': string;\r\n\t'checkout.delivery.noOpeningHours': string;\r\n\t'checkout.delivery.openingHours': string;\r\n\t'checkout.delivery.formCancel': string;\r\n\t'checkout.delivery.formHeading': string;\r\n\t'checkout.delivery.formConfirm': string;\r\n\t'checkout.delivery.toThisAddress': string;\r\n\t'checkout.delivery.confirmAddressDelete': string;\r\n\t'checkout.delivery.acceptBamboraPayments': string;\r\n\t'checkout.delivery.postalCode': string;\r\n\t'checkout.delivery.search': string;\r\n\t'checkout.delivery.invalidPostalCode': string;\r\n\t'checkout.delivery.chooseAnotherLocation': string;\r\n\t'checkout.delivery.chooseAnotherDate': string;\r\n\t'checkout.delivery.selectDeliveryDate': string;\r\n\t'checkout.delivery.servicePointNotSelected': string;\r\n\t'checkout.delivery.formIsOpen': string;\r\n\t'checkout.delivery.addressUnavailable': string;\r\n\t'checkout.delivery.addressHasMissingNumberWarning': string;\r\n\t'checkout.delivery.line1required': string;\r\n\t'checkout.delivery.line1MissingNumber': string;\r\n\t'checkout.delivery.noServicePointsAvailable': string;\r\n\t'checkout.delivery.firstNameWrongCharacters': string;\r\n\t'checkout.delivery.lastNameWrongCharacters': string;\r\n\t'checkout.delivery.line1WrongCharacters': string;\r\n\t'checkout.delivery.coWrongCharacters': string;\r\n\t'checkout.delivery.availableOptions': string;\r\n\t'checkout.delivery.showNotAvailableOptions': string;\r\n\t'checkout.delivery.unavailableHeading': string;\r\n\t'checkout.delivery.unavailableSubheading': string;\r\n\t'checkout.delivery.newAddress': string;\r\n\t'checkout.delivery.editAddresses': string;\r\n\t'checkout.delivery.selectAddress': string;\r\n\t'checkout.delivery.noMethodsAvailableHeading': string;\r\n\t'checkout.delivery.noMethodsAvailableLine1': string;\r\n\t'checkout.delivery.noMethodsAvailableLine2': string;\r\n\t'checkout.delivery.noMethodsAvailableReadMore': string;\r\n\t'checkout.delivery.instaboxEta': string;\r\n\t'checkout.delivery.showMore': string;\r\n\t'checkout.delivery.pickupPoints.emptyTitle': string;\r\n\t'checkout.delivery.pickupPoints.emptySubtitle': string;\r\n\t'checkout.delivery.pickupPoints.noConnectionTitle': string;\r\n\t'checkout.delivery.pickupPoints.noConnectionSubtitle': string;\r\n\t'checkout.delivery.days.monday': string;\r\n\t'checkout.delivery.days.tuesday': string;\r\n\t'checkout.delivery.days.wednesday': string;\r\n\t'checkout.delivery.days.thursday': string;\r\n\t'checkout.delivery.days.friday': string;\r\n\t'checkout.delivery.days.saturday': string;\r\n\t'checkout.delivery.days.sunday': string;\r\n\t'checkout.delivery.daysLong.monday': string;\r\n\t'checkout.delivery.daysLong.tuesday': string;\r\n\t'checkout.delivery.daysLong.wednesday': string;\r\n\t'checkout.delivery.daysLong.thursday': string;\r\n\t'checkout.delivery.daysLong.friday': string;\r\n\t'checkout.delivery.daysLong.saturday': string;\r\n\t'checkout.delivery.daysLong.sunday': string;\r\n\t'checkout.delivery.today': string;\r\n\t'checkout.delivery.closed': string;\r\n\t'checkout.delivery.tomorrow': string;\r\n\t'checkout.shippingMethodAvailability.AddressNotSelected': string;\r\n\t'checkout.shippingMethodAvailability.DeliveryMethodNotSelected': string;\r\n\t'checkout.shippingMethodAvailability.InvalidDimensions': string;\r\n\t'checkout.shippingMethodAvailability.MailboxNotEligible': string;\r\n\t'checkout.shippingMethodAvailability.PorterBuddyAddressNotSupported': string;\r\n\t'checkout.shippingMethodAvailability.PorterBuddyNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.HeltHjemNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.PostNHomeNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.PostNPickNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.PostNPickLockersNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.PorterBuddyWindowNotSelected': string;\r\n\t'checkout.shippingMethodAvailability.PostNordServicePointNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.InstaBoxExpressNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.InstaBoxHomeNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.PostNordServicePointNotSelected': string;\r\n\t'checkout.shippingMethodAvailability.InstaBoxParcelLockerNotSelected': string;\r\n\t'checkout.shippingMethodAvailability.NotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.BadTemperatures': string;\r\n\t'checkout.shippingMethodAvailability.AirmeeHomeNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.AirmeeHomeNotSelected': string;\r\n\t'checkout.shippingMethodAvailability.OtcNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.RxNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.HeltHjemServicePointNotAvailable': string;\r\n\t'checkout.shippingMethodAvailability.HeltHjemServicePointNotSelected': string;\r\n\t'checkout.validation.couldNotSave': string;\r\n\t'checkout.validation.ValidationFailed': string;\r\n\t'checkout.validation.OrderAdjustedAfterValidation': string;\r\n\t'checkout.validation.PriceChangedAfterValidation': string;\r\n\t'checkout.validation.PriceMismatch': string;\r\n\t'checkout.validation.InvalidDeliveryServiceLocation': string;\r\n\t'checkout.validation.ItemsRemovedAfterInventoryValidation': string;\r\n\t'checkout.validation.PaymentFailed': string;\r\n\t'checkout.validation.MissingDeliveryMethod': string;\r\n\t'checkout.validation.InvalidShippingAddress': string;\r\n\t'checkout.validation.UnexpectedError': string;\r\n\t'checkout.validation.PaymentCancelled': string;\r\n\t'checkout.validation.IncorrectFirstName': string;\r\n\t'checkout.validation.IncorrectLastName': string;\r\n\t'checkout.validation.IncorrectPostalCode': string;\r\n\t'checkout.validation.IncorrectCity': string;\r\n\t'checkout.validation.MissingAddress': string;\r\n\t'checkout.validation.IncorrectLine1': string;\r\n\t'checkout.validation.NullAddress': string;\r\n\t'checkout.validation.CannotDeleteLastAddress': string;\r\n\t'checkout.validation.AddressDoesNotExists': string;\r\n\t'checkout.validation.AddressAlreadyExists': string;\r\n\t'checkout.validation.IncorrectPhoneNumber': string;\r\n\t'checkout.validation.EmptyPhoneNumber': string;\r\n\t'checkout.validation.IncorrectCompany': string;\r\n\t'checkout.validation.Other': string;\r\n\t'checkout.validation.InvalidDeliveryWindow': string;\r\n\t'checkout.validation.ExpressCheckoutInvalidDeliveryWindow': string;\r\n\t'checkout.error.generic': string;\r\n\t'checkout.error.vippsCancelled': string;\r\n\t'checkout.error.errorSettingServicePoint': string;\r\n\t'checkout.error.unexpected': string;\r\n\t'checkout.error.unexpectedCheckout': string;\r\n\t'checkout.error.refresh': string;\r\n\t'checkout.error.invalidActionPleaseRefresh': string;\r\n\t'checkout.error.invalidDeliveryWindow': string;\r\n\t'checkout.notCharged': string;\r\n\t'orderSummary.name': string;\r\n\t'orderSummary.thankYouHeader': string;\r\n\t'orderSummary.emailConfirmation': string;\r\n\t'orderSummary.emailConfirmationFallback': string;\r\n\t'orderSummary.contactCustomerService': string;\r\n\t'orderSummary.customerService': string;\r\n\t'orderSummary.orderNumber': string;\r\n\t'orderSummary.orderDate': string;\r\n\t'orderSummary.deliveryDate': string;\r\n\t'orderSummary.orderStatus': string;\r\n\t'orderSummary.paymentMethod': string;\r\n\t'orderSummary.complaint': string;\r\n\t'orderSummary.cancelOrder': string;\r\n\t'orderSummary.heading': string;\r\n\t'orderSummary.package': string;\r\n\t'orderSummary.specialItems': string;\r\n\t'orderSummary.sum': string;\r\n\t'orderSummary.of': string;\r\n\t'orderSummary.before': string;\r\n\t'orderSummary.personalPickup': string;\r\n\t'orderSummary.deliveryAddress': string;\r\n\t'orderSummary.packageTracking': string;\r\n\t'orderSummary.cancel': string;\r\n\t'orderSummary.delivery': string;\r\n\t'orderSummary.freeDelivery': string;\r\n\t'orderSummary.discount': string;\r\n\t'orderSummary.discountCode': string;\r\n\t'orderSummary.replacement': string;\r\n\t'orderSummary.priceAdjustment': string;\r\n\t'orderSummary.total': string;\r\n\t'orderSummary.includeTax': string;\r\n\t'orderSummary.summary': string;\r\n\t'orderSummary.waitingToBeShipped': string;\r\n\t'orderSummary.cancelledProducts': string;\r\n\t'orderSummary.productCancelled': string;\r\n\t'orderSummary.paymentTypes.card': string;\r\n\t'orderSummary.paymentTypes.vipps': string;\r\n\t'orderSummary.paymentTypes.other': string;\r\n\t'orderSummary.paymentTypes.klarna': string;\r\n\t'orderSummary.invoices.notReady': string;\r\n\t'orderSummary.invoices.unavailable': string;\r\n\t'orderSummary.invoices.invoice': string;\r\n\t'orderSummary.rateThisProduct': string;\r\n\t'orderSummary.paymentInfo': string;\r\n\t'product.related': string;\r\n\t'product.interesting': string;\r\n\t'product.otherSearchedFor': string;\r\n\t'product.before': string;\r\n\t'product.prescriptionImageAlt': string;\r\n\t'product.myPrescriptions': string;\r\n\t'product.notAvailable': string;\r\n\t'product.prescriptionMessage': string;\r\n\t'product.outOfStockMessage': string;\r\n\t'product.notAvailableMessage': string;\r\n\t'product.ageOfConsentMessage': string;\r\n\t'product.coldProductMessage': string;\r\n\t'product.freeDelivery': string;\r\n\t'product.deliveryFrom': string;\r\n\t'product.validUntil': string;\r\n\t'product.explore': string;\r\n\t'product.previous': string;\r\n\t'product.next': string;\r\n\t'product.availabilityNotification.heading': string;\r\n\t'product.availabilityNotification.subheading': string;\r\n\t'product.availabilityNotification.modalHeading': string;\r\n\t'product.availabilityNotification.modalSubheading': string;\r\n\t'product.availabilityNotification.button': string;\r\n\t'product.availabilityNotification.modalButton': string;\r\n\t'product.availabilityNotification.privacyPolicyText': string;\r\n\t'product.availabilityNotification.privacyPolicyLink': string;\r\n\t'product.availabilityNotification.savedHeading': string;\r\n\t'product.availabilityNotification.savedSubheading': string;\r\n\t'product.availabilityNotification.incorrectEmail': string;\r\n\t'product.availabilityNotification.unexpectedError': string;\r\n\t'productAvailability.InStock': string;\r\n\t'productAvailability.LowInStock': string;\r\n\t'productAvailability.OnDemand': string;\r\n\t'productAvailability.NotInStock': string;\r\n\t'productAvailability.PhysicalStoreOnly': string;\r\n\t'productAvailability.TemporarySalesStop': string;\r\n\t'productAvailability.NotInStockRxAdditionalInfo': string;\r\n\t'productAvailability.NotInStockNonRxRefundedAdditionalInfo': string;\r\n\t'productAvailability.OrderedRxAdditionalInfo': string;\r\n\t'unavailabilityReason.Ok': string;\r\n\t'unavailabilityReason.StatusNotWebReady': string;\r\n\t'unavailabilityReason.NoPrice': string;\r\n\t'unavailabilityReason.NoWeightOrDimensions': string;\r\n\t'unavailabilityReason.NoInventory': string;\r\n\t'unavailabilityReason.NotFound': string;\r\n\t'unavailabilityReason.WeightExceedsThreshold': string;\r\n\t'unavailabilityReason.ExpiredInFarmalogg': string;\r\n\t'productCard.before': string;\r\n\t'productCard.discount': string;\r\n\t'productCard.prescription': string;\r\n\t'productInformation.showMore': string;\r\n\t'productInformation.prescriptionProduct': string;\r\n\t'promotions.discountCodeText': string;\r\n\t'promotions.freeItemsDiscountInfoType': string;\r\n\t'promotions.quantityItemsDiscountInfoType': string;\r\n\t'promotions.quantityItemsDiscountText': string;\r\n\t'promotions.defaultDiscountText': string;\r\n\t'addToCart.buy': string;\r\n\t'addToCart.buyWithGuidance': string;\r\n\t'addToCart.formWarning': string;\r\n\t'addToCart.errorMessage': string;\r\n\t'addToCart.successfullyAdded': string;\r\n\t'addToCart.unexpectedError': string;\r\n\t'addToCart.close': string;\r\n\t'filters.category': string;\r\n\t'filters.brand': string;\r\n\t'filters.subbrand': string;\r\n\t'filters.productType': string;\r\n\t'filters.skinType': string;\r\n\t'filters.properties': string;\r\n\t'filters.form': string;\r\n\t'filters.keyInformation': string;\r\n\t'filters.audience': string;\r\n\t'filters.sunFactor': string;\r\n\t'filters.taste': string;\r\n\t'filters.size': string;\r\n\t'filters.material': string;\r\n\t'filters.color': string;\r\n\t'filters.strength': string;\r\n\t'filters.hairType': string;\r\n\t'filters.calories': string;\r\n\t'filters.price': string;\r\n\t'filters.priceDescription': string;\r\n\t'sorting.ByDate': string;\r\n\t'sorting.ByNewlyAdded': string;\r\n\t'sorting.ByRelevance': string;\r\n\t'sorting.ByPriceAscending': string;\r\n\t'sorting.ByPriceDescending': string;\r\n\t'sorting.ByName': string;\r\n\t'sorting.ByPromotionPercentage': string;\r\n\t'search.products': string;\r\n\t'search.categories': string;\r\n\t'search.brands': string;\r\n\t'search.seeAll': string;\r\n\t'search.noResults': string;\r\n\t'search.seeRecommendations': string;\r\n\t'search.checkSpelling': string;\r\n\t'search.phrases': string;\r\n\t'search.pharmacyAdvice': string;\r\n\t'productFilters.filters': string;\r\n\t'productFilters.open': string;\r\n\t'productFilters.product': string;\r\n\t'productFilters.products': string;\r\n\t'productFilters.loading': string;\r\n\t'productFilters.searchResults': string;\r\n\t'productFilters.searchResultsWithoutFor': string;\r\n\t'productFilters.clear': string;\r\n\t'productFilters.seeResults': string;\r\n\t'productFilters.noResults': string;\r\n\t'productFilters.sortBy': string;\r\n\t'paging.previousPage': string;\r\n\t'paging.nextPage': string;\r\n\t'paging.currentPage': string;\r\n\t'paging.of': string;\r\n\t'priceRange.from': string;\r\n\t'priceRange.to': string;\r\n\t'displayAttributes.warranty': string;\r\n\t'displayAttributes.productInfo': string;\r\n\t'displayAttributes.ingredients': string;\r\n\t'displayAttributes.tabletPicture': string;\r\n\t'displayAttributes.contentDeclaration': string;\r\n\t'displayAttributes.activeIngredient': string;\r\n\t'displayAttributes.usageAndDosage': string;\r\n\t'displayAttributes.subscriptionLink': string;\r\n\t'displayAttributes.manufacturerLink': string;\r\n\t'displayAttributes.resourceLink': string;\r\n\t'displayAttributes.dosage': string;\r\n\t'displayAttributes.precautions': string;\r\n\t'displayAttributes.pregnancyNotice': string;\r\n\t'displayAttributes.warningSign': string;\r\n\t'displayAttributes.canBeShared': string;\r\n\t'displayAttributes.nutritionalContent': string;\r\n\t'displayAttributes.canBeCrushed': string;\r\n\t'displayAttributes.storageConditions': string;\r\n\t'displayAttributes.dangerousGoods': string;\r\n\t'displayAttributes.leafletLink': string;\r\n\t'displayAttributes.flavor': string;\r\n\t'displayAttributes.classification': string;\r\n\t'displayAttributes.tabletPictureLink': string;\r\n\t'displayAttributes.manufacturerLeaflet': string;\r\n\t'displayAttributes.productNumber': string;\r\n\t'displayAttributes.farmaloggNumber': string;\r\n\t'displayAttributes.additionalResource': string;\r\n\t'displayAttributes.additionalResourceHeader': string;\r\n\t'displayAttributes.yes': string;\r\n\t'displayAttributes.no': string;\r\n\t'selectedOptionList.removeAll': string;\r\n\t'cookiesConsent.acceptButtonLabel': string;\r\n\t'mainBanner.readMore': string;\r\n\t'alertRibbon.close': string;\r\n\t'info.readMore': string;\r\n\t'brandPage.readMore': string;\r\n\t'brandPage.exploreBrands': string;\r\n\t'categoryPage.readMore': string;\r\n\t'mainBannerGallery.next': string;\r\n\t'mainBannerGallery.previous': string;\r\n\t'viagraForm.heading': string;\r\n\t'viagraForm.validation': string;\r\n\t'viagraForm.gender': string;\r\n\t'viagraForm.man': string;\r\n\t'viagraForm.woman': string;\r\n\t'viagraForm.onlyForMan': string;\r\n\t'viagraForm.yes': string;\r\n\t'viagraForm.no': string;\r\n\t'viagraForm.contactUs': string;\r\n\t'viagraForm.discuss': string;\r\n\t'viagraForm.anyOfFollowing': string;\r\n\t'viagraForm.lowBloodPressure': string;\r\n\t'viagraForm.lowBloodPressureExplanation': string;\r\n\t'viagraForm.highBloodPressure': string;\r\n\t'viagraForm.highBloodPressureExplanation': string;\r\n\t'viagraForm.angina': string;\r\n\t'viagraForm.anginaExplanation': string;\r\n\t'viagraForm.irregularHeartbeats': string;\r\n\t'viagraForm.irregularHeartbeatsExplanation': string;\r\n\t'viagraForm.anticonvulsantMedicines': string;\r\n\t'viagraForm.anticonvulsantMedicinesExplanation': string;\r\n\t'viagraForm.readMoreAboutHeartCramps': string;\r\n\t'viagraForm.heartAttack': string;\r\n\t'viagraForm.heartAttackExplanation': string;\r\n\t'viagraForm.poppers': string;\r\n\t'viagraForm.poppersExplanation': string;\r\n\t'viagraForm.adempas': string;\r\n\t'viagraForm.adempasExplanation': string;\r\n\t'viagraForm.ritonavir': string;\r\n\t'viagraForm.ritonavirExplanation': string;\r\n\t'viagraForm.opticDamage': string;\r\n\t'viagraForm.opticDamageExplanation': string;\r\n\t'viagraForm.guidance': string;\r\n\t'viagraForm.guidanceSubText': string;\r\n\t'viagraForm.addToCart': string;\r\n\t'viagraForm.continue': string;\r\n\t'viagraForm.contactWithDoctor': string;\r\n\t'viagraForm.answerAllQuestions': string;\r\n\t'viagraForm.required': string;\r\n\t'viagraForm.explanation': string;\r\n\t'viagraForm.checkbox': string;\r\n\t'viagraForm.zenDeskUnavailable': string;\r\n\t'duraphatForm.header': string;\r\n\t'duraphatForm.close': string;\r\n\t'duraphatForm.ageConsent': string;\r\n\t'duraphatForm.cavities': string;\r\n\t'duraphatForm.visibleRoots': string;\r\n\t'duraphatForm.hygieneDifficulties': string;\r\n\t'duraphatForm.dryMouth': string;\r\n\t'duraphatForm.importantInformation': string;\r\n\t'duraphatForm.orSee': string;\r\n\t'duraphatForm.QA': string;\r\n\t'duraphatForm.contact': string;\r\n\t'duraphatForm.buy': string;\r\n\t'duraphatForm.confirm': string;\r\n\t'email.subject.RegistrationMessage': string;\r\n\t'email.subject.ResetPasswordRequestedMessage': string;\r\n\t'email.subject.SetPasswordOnFirstLoginMessage': string;\r\n\t'email.subject.ResetPasswordOnLockoutMessage': string;\r\n\t'email.subject.OrderCancelledMessage': string;\r\n\t'email.subject.OrderLineCancelledMessage': string;\r\n\t'email.subject.OrderPlacedConfirmationMessage': string;\r\n\t'email.subject.SalesInvoiceCreated': string;\r\n\t'email.subject.PackageSentMessage': string;\r\n\t'email.subject.ReturnOrderCreatedMessage': string;\r\n\t'email.subject.OrderDetailsMessage': string;\r\n\t'email.otherPayment': string;\r\n\t'email.unknownDeliveryMode': string;\r\n\t'errorPage.error': string;\r\n\t'errorPage.backToHome': string;\r\n\t'errorPage.code400.heading': string;\r\n\t'errorPage.code401.heading': string;\r\n\t'errorPage.code402.heading': string;\r\n\t'errorPage.code403.heading': string;\r\n\t'errorPage.code403.description': string;\r\n\t'errorPage.code404.heading': string;\r\n\t'errorPage.code404.description': string;\r\n\t'errorPage.code405.heading': string;\r\n\t'errorPage.code406.heading': string;\r\n\t'errorPage.code407.heading': string;\r\n\t'errorPage.code408.heading': string;\r\n\t'errorPage.code410.heading': string;\r\n\t'errorPage.code411.heading': string;\r\n\t'errorPage.code501.heading': string;\r\n\t'errorPage.code502.heading': string;\r\n\t'errorPage.code503.heading': string;\r\n\t'errorPage.code504.heading': string;\r\n\t'errorPage.code505.heading': string;\r\n\t'userProfile.name': string;\r\n\t'userProfile.welcome': string;\r\n\t'userProfile.loggedIn': string;\r\n\t'userProfile.logOut': string;\r\n\t'userProfile.contactCustomerService': string;\r\n\t'userProfile.customerService': string;\r\n\t'userProfile.edit': string;\r\n\t'userProfile.confirm': string;\r\n\t'userProfile.cancel': string;\r\n\t'userProfile.changePassword.myPassword': string;\r\n\t'userProfile.changePassword.CurrentPassword': string;\r\n\t'userProfile.changePassword.NewPassword': string;\r\n\t'userProfile.changePassword.ConfirmPassword': string;\r\n\t'userProfile.changePassword.successful': string;\r\n\t'userProfile.changePassword.errors.fieldRequired': string;\r\n\t'userProfile.changePassword.errors.passwordsNotMatch': string;\r\n\t'userProfile.cookies.title': string;\r\n\t'userProfile.cookies.necessary': string;\r\n\t'userProfile.cookies.preferences': string;\r\n\t'userProfile.cookies.statistics': string;\r\n\t'userProfile.cookies.marketing': string;\r\n\t'userProfile.userInformation.heading': string;\r\n\t'userProfile.userInformation.firstName': string;\r\n\t'userProfile.userInformation.lastName': string;\r\n\t'userProfile.userInformation.email': string;\r\n\t'userProfile.userInformation.phone': string;\r\n\t'userProfile.userInformation.errors.fieldRequired': string;\r\n\t'userProfile.userInformation.errors.email': string;\r\n\t'userProfile.userInformation.errors.phone': string;\r\n\t'userProfile.userInformation.errors.firstNameToLong': string;\r\n\t'userProfile.userInformation.errors.lastNameToLong': string;\r\n\t'userProfile.userInformation.errors.firstNameWrongCharacters': string;\r\n\t'userProfile.userInformation.errors.lastNameWrongCharacters': string;\r\n\t'userProfile.userInformation.errors.incorrectValue': string;\r\n\t'userProfile.marketingConsents.heading': string;\r\n\t'userProfile.marketingConsents.discounts': string;\r\n\t'userProfile.marketingConsents.SMS': string;\r\n\t'userProfile.marketingConsents.email': string;\r\n\t'userProfile.marketingConsents.newsletter': string;\r\n\t'userProfile.marketingConsents.reviews': string;\r\n\t'userProfile.marketingConsents.relationship': string;\r\n\t'userProfile.marketingConsents.abandonedCarts': string;\r\n\t'userProfile.marketingConsents.errors.serviceUnavailable': string;\r\n\t'userProfile.marketingConsents.errors.updateFailed': string;\r\n\t'userProfile.addresses.myAddresses': string;\r\n\t'userProfile.addresses.addNewAddress': string;\r\n\t'userProfile.orderHistory.emptyTitle': string;\r\n\t'userProfile.orderHistory.emptySubtitle1': string;\r\n\t'userProfile.orderHistory.emptySubtitle2': string;\r\n\t'userProfile.orderHistory.emptyButton': string;\r\n\t'userProfile.orderHistory.noConnectionTitle': string;\r\n\t'userProfile.orderHistory.noConnectionSubtitle1': string;\r\n\t'userProfile.orderHistory.noConnectionSubtitle2': string;\r\n\t'userProfile.orderHistory.orderNumber': string;\r\n\t'userProfile.orderHistory.orderDate': string;\r\n\t'userProfile.orderHistory.package': string;\r\n\t'userProfile.orderHistory.of': string;\r\n\t'userProfile.orderHistory.send': string;\r\n\t'userProfile.orderHistory.packageTracking': string;\r\n\t'userProfile.orderHistory.statusText': string;\r\n\t'userProfile.orderHistory.cannotFindOrder': string;\r\n\t'userProfile.orderHistory.prescriptionHistory': string;\r\n\t'userProfile.orderHistory.quantity': string;\r\n\t'userProfile.orderHistory.paging.firstPage': string;\r\n\t'userProfile.orderHistory.paging.previousPage': string;\r\n\t'userProfile.orderHistory.paging.nextPage': string;\r\n\t'userProfile.orderHistory.orderStatus.processing': string;\r\n\t'userProfile.orderHistory.orderStatus.unknown': string;\r\n\t'userProfile.orderHistory.orderStatus.created': string;\r\n\t'userProfile.orderHistory.orderStatus.backorder': string;\r\n\t'userProfile.orderHistory.orderStatus.delivered': string;\r\n\t'userProfile.orderHistory.orderStatus.invoiced': string;\r\n\t'userProfile.orderHistory.orderStatus.confirmed': string;\r\n\t'userProfile.orderHistory.orderStatus.sent': string;\r\n\t'userProfile.orderHistory.orderStatus.lost': string;\r\n\t'userProfile.orderHistory.orderStatus.canceled': string;\r\n\t'userProfile.orderHistory.orderStatus.return': string;\r\n\t'userProfile.orderHistory.orderLineStatus.processing': string;\r\n\t'userProfile.orderHistory.orderLineStatus.unknown': string;\r\n\t'userProfile.orderHistory.orderLineStatus.created': string;\r\n\t'userProfile.orderHistory.orderLineStatus.backorder': string;\r\n\t'userProfile.orderHistory.orderLineStatus.delivered': string;\r\n\t'userProfile.orderHistory.orderLineStatus.invoiced': string;\r\n\t'userProfile.orderHistory.orderLineStatus.confirmed': string;\r\n\t'userProfile.orderHistory.orderLineStatus.sent': string;\r\n\t'userProfile.orderHistory.orderLineStatus.lost': string;\r\n\t'userProfile.orderHistory.orderLineStatus.canceled': string;\r\n\t'userProfile.orderHistory.orderLineStatus.return': string;\r\n\t'userProfile.orderHistory.orderLineType.cancellation': string;\r\n\t'userProfile.orderHistory.orderLineType.refund': string;\r\n\t'userProfile.orderHistory.orderLineType.priceAdjustment': string;\r\n\t'form.successMessage': string;\r\n\t'form.errors.required': string;\r\n\t'form.errors.minLength': string;\r\n\t'form.errors.maxLength': string;\r\n\t'form.errors.sameValueAs': string;\r\n\t'form.errors.badRequest': string;\r\n\t'form.errors.email': string;\r\n\t'form.buttons.confirm': string;\r\n\t'form.buttons.cancel': string;\r\n\t'form.show': string;\r\n\t'form.requiredFields': string;\r\n\t'cheapestForFreeDiscount.for': string;\r\n\t'productDiscount.upTo': string;\r\n\t'contentName.checkout': string;\r\n\t'contentName.search': string;\r\n\t'contentName.home': string;\r\n\t'contentName.error': string;\r\n\t'contentName.newsletter.unsubscribe': string;\r\n\t'enum.infoBanner.none': string;\r\n\t'enum.infoBanner.newItem': string;\r\n\t'enum.infoBanner.vegan': string;\r\n\t'enum.infoBanner.bestseller': string;\r\n\t'enum.infoBanner.lowPrice1': string;\r\n\t'enum.infoBanner.lowPrice2': string;\r\n\t'enum.infoBanner.goodPurchase1': string;\r\n\t'enum.infoBanner.goodPurchase2': string;\r\n\t'enum.ProductListVariant.GridWithSwiper': string;\r\n\t'enum.ProductListVariant.Horizontal': string;\r\n\t'enum.ProductListVariant.GridWithoutSwiper': string;\r\n\t'enum.BannerBackgroundVariant.Pink': string;\r\n\t'enum.BannerBackgroundVariant.PinkWithRedBorderInside': string;\r\n\t'enum.BannerBackgroundVariant.PinkWithBlackBorderInside': string;\r\n\t'enum.BannerBackgroundVariant.Blue': string;\r\n\t'enum.BannerBackgroundVariant.BlueWithBlackBorderInside': string;\r\n\t'enum.BannerBackgroundVariant.WhiteWithRedBorder': string;\r\n\t'enum.textBannerBackgroundVariant.Pink': string;\r\n\t'enum.textBannerBackgroundVariant.Blue': string;\r\n\t'enum.textBannerBackgroundVariant.Red': string;\r\n\t'enum.textBannerBackgroundVariant.Black': string;\r\n\t'enum.textColor.black': string;\r\n\t'enum.textColor.white': string;\r\n\t'enum.linkListColumnVariant.twoColumns': string;\r\n\t'enum.linkListColumnVariant.fourColumns': string;\r\n\t'enum.linkListBackgroundVariant.Grey': string;\r\n\t'enum.linkListBackgroundVariant.Pink': string;\r\n\t'enum.linkListBackgroundVariant.Blue': string;\r\n\t'enum.textHeroBackgroundVariant.Pink': string;\r\n\t'enum.textHeroBackgroundVariant.pinkWithRedBorderInside': string;\r\n\t'enum.textHeroBackgroundVariant.Black': string;\r\n\t'enum.IdentityErrorCode.DefaultError': string;\r\n\t'enum.IdentityErrorCode.PasswordMismatch': string;\r\n\t'enum.IdentityErrorCode.PasswordTooShort': string;\r\n\t'enum.IdentityErrorCode.PasswordRequiresDigit': string;\r\n\t'enum.IdentityErrorCode.PasswordRequiresLower': string;\r\n\t'enum.IdentityErrorCode.PasswordRequiresUpper': string;\r\n\t'enum.ImageSize.Size1920x240': string;\r\n\t'enum.ImageSize.Size1920x400': string;\r\n\t'enum.ImageSize.Size1260x400': string;\r\n\t'newsletter.AddedToRecipientList': string;\r\n\t'newsletter.RemovedFromUnsubscribedList': string;\r\n\t'newsletter.RecipientIsEitherBlacklistedOrExceededBounceLimit': string;\r\n\t'newsletter.AlreadySubscribed': string;\r\n\t'newsletter.ServerError': string;\r\n\t'newsletter.subscriptionConfirmed': string;\r\n\t'newsletter.backToMainPage': string;\r\n\t'newsletter.SignUpAgain': string;\r\n\t'newsletter.UnsubscribeReasonNotSelected': string;\r\n\t'newsletter.send': string;\r\n\t'newsletter.EmailPlaceholder': string;\r\n\t'newsletter.SignUp': string;\r\n\t'newsletter.LackOfConsent': string;\r\n\t'newsletter.InvalidEmail': string;\r\n\t'newsletter.UnexpectedError': string;\r\n\t'newsletter.UnknownError': string;\r\n\t'newsletter.DidYouMean': string;\r\n\t'newsletter.AreYouSure': string;\r\n\t'productNotifications.title': string;\r\n\t'productNotifications.subtitle': string;\r\n\t'emailSuggestion.header': string;\r\n\t'emailSuggestion.incorrectAddress': string;\r\n\t'emailSuggestion.didYouMeanToUse': string;\r\n\t'emailSuggestion.withSuggestionRejectButton': string;\r\n\t'emailSuggestion.withoutSuggestionRejectButton': string;\r\n\t'emailSuggestion.withSuggestionAcceptButton': string;\r\n\t'emailSuggestion.withoutSuggestionAcceptButton': string;\r\n\t'emailSuggestion.areYouSure': string;\r\n\t'powerReviews.writeAReview': string;\r\n\t'powerReviews.reviewYourPurchase': string;\r\n\t'klarna.orderNumber': string;\r\n\t'klarna.refund': string;\r\n\t'klarna.invoiceId': string;\r\n\t'klarna.shipment': string;\r\n\t'klarna.rxLineItemName': string;\r\n\t'klarna.otcLineItemName': string;\r\n\t'klarna.tgLineItemName': string;\r\n\t'errorMessageBar.close': string;\r\n\t'errorMessageBar.defaultMessage': string;\r\n\t'bankId.yourSecureSession': string;\r\n\t'prescriptionHistory.downloadPrescriptionHistory': string;\r\n}\r\nexport var keys: ITranslations = {\r\n\t'en': 'en',\r\n\t'header.searchPlaceholder': 'header.searchPlaceholder',\r\n\t'header.products': 'header.products',\r\n\t'header.search': 'header.search',\r\n\t'header.clearSearch': 'header.clearSearch',\r\n\t'header.physicalStoreMode': 'header.physicalStoreMode',\r\n\t'header.cartFromDifferentWarehouse': 'header.cartFromDifferentWarehouse',\r\n\t'header.searchLabel': 'header.searchLabel',\r\n\t'footer.followUs': 'footer.followUs',\r\n\t'footer.seeCookieConsent': 'footer.seeCookieConsent',\r\n\t'actionMenu.myPage': 'actionMenu.myPage',\r\n\t'actionMenu.myOrders': 'actionMenu.myOrders',\r\n\t'actionMenu.myFavourites': 'actionMenu.myFavourites',\r\n\t'actionMenu.prescriptionHistory': 'actionMenu.prescriptionHistory',\r\n\t'actionMenu.logIn': 'actionMenu.logIn',\r\n\t'actionMenu.register': 'actionMenu.register',\r\n\t'actionMenu.logOut': 'actionMenu.logOut',\r\n\t'actionMenu.activeBankIdSession': 'actionMenu.activeBankIdSession',\r\n\t'actionMenu.logOutFromBankId': 'actionMenu.logOutFromBankId',\r\n\t'actionMenu.customerService': 'actionMenu.customerService',\r\n\t'actionMenu.rxService': 'actionMenu.rxService',\r\n\t'homePage.title': 'homePage.title',\r\n\t'common.tryAgainOrContactCustomerSupport': 'common.tryAgainOrContactCustomerSupport',\r\n\t'navigation.menu': 'navigation.menu',\r\n\t'navigation.rxMenu': 'navigation.rxMenu',\r\n\t'navigation.myPage': 'navigation.myPage',\r\n\t'navigation.cart': 'navigation.cart',\r\n\t'navigation.favourites': 'navigation.favourites',\r\n\t'navigation.categories': 'navigation.categories',\r\n\t'navigation.categoriesAndProducts': 'navigation.categoriesAndProducts',\r\n\t'navigation.shortcuts': 'navigation.shortcuts',\r\n\t'navigation.buyPrescription': 'navigation.buyPrescription',\r\n\t'navigation.chatWithPharmacist': 'navigation.chatWithPharmacist',\r\n\t'navigation.logIn': 'navigation.logIn',\r\n\t'navigation.logOut': 'navigation.logOut',\r\n\t'navigation.hi': 'navigation.hi',\r\n\t'navigation.registrationLink': 'navigation.registrationLink',\r\n\t'navigation.open': 'navigation.open',\r\n\t'navigation.close': 'navigation.close',\r\n\t'navigation.back': 'navigation.back',\r\n\t'navigation.seeAllProducts': 'navigation.seeAllProducts',\r\n\t'navigation.physicalStoreMode': 'navigation.physicalStoreMode',\r\n\t'navigation.skipToContent': 'navigation.skipToContent',\r\n\t'navigation.goToCheckout': 'navigation.goToCheckout',\r\n\t'navigation.search': 'navigation.search',\r\n\t'favourites.removed': 'favourites.removed',\r\n\t'favourites.login': 'favourites.login',\r\n\t'favourites.register': 'favourites.register',\r\n\t'favourites.loginRequiredHeader': 'favourites.loginRequiredHeader',\r\n\t'favourites.loginRequiredContent': 'favourites.loginRequiredContent',\r\n\t'favourites.saveItems': 'favourites.saveItems',\r\n\t'favourites.description': 'favourites.description',\r\n\t'favourites.seeAllProducts': 'favourites.seeAllProducts',\r\n\t'favourites.productRemoved': 'favourites.productRemoved',\r\n\t'favourites.added': 'favourites.added',\r\n\t'favourites.firstFavouriteHeading': 'favourites.firstFavouriteHeading',\r\n\t'favourites.firstFavouriteContent': 'favourites.firstFavouriteContent',\r\n\t'favourites.goToFavourites': 'favourites.goToFavourites',\r\n\t'newMessage.heading': 'newMessage.heading',\r\n\t'newMessage.content': 'newMessage.content',\r\n\t'newMessage.link': 'newMessage.link',\r\n\t'expectedDeliveryDate.estimatedDeliveryTo': 'expectedDeliveryDate.estimatedDeliveryTo',\r\n\t'expectedDeliveryDate.deliveryDate': 'expectedDeliveryDate.deliveryDate',\r\n\t'expectedDeliveryDate.info': 'expectedDeliveryDate.info',\r\n\t'expectedDeliveryDate.postalCode': 'expectedDeliveryDate.postalCode',\r\n\t'expectedDeliveryDate.checkDeliveryDate': 'expectedDeliveryDate.checkDeliveryDate',\r\n\t'expectedDeliveryDate.check': 'expectedDeliveryDate.check',\r\n\t'expectedDeliveryDate.preferredMethod': 'expectedDeliveryDate.preferredMethod',\r\n\t'expectedDeliveryDate.fastestMethod': 'expectedDeliveryDate.fastestMethod',\r\n\t'expectedDeliveryDate.allMethods': 'expectedDeliveryDate.allMethods',\r\n\t'expectedDeliveryDate.failPostalCode': 'expectedDeliveryDate.failPostalCode',\r\n\t'expectedDeliveryDate.seeMore': 'expectedDeliveryDate.seeMore',\r\n\t'expectedDeliveryDate.notAvailable': 'expectedDeliveryDate.notAvailable',\r\n\t'expectedDeliveryDate.aboutDeliveryMethods': 'expectedDeliveryDate.aboutDeliveryMethods',\r\n\t'expectedDeliveryDate.noMethods.title': 'expectedDeliveryDate.noMethods.title',\r\n\t'expectedDeliveryDate.noMethods.subtitle': 'expectedDeliveryDate.noMethods.subtitle',\r\n\t'expectedDeliveryDate.unexpectedError.title': 'expectedDeliveryDate.unexpectedError.title',\r\n\t'expectedDeliveryDate.unexpectedError.subtitle': 'expectedDeliveryDate.unexpectedError.subtitle',\r\n\t'expectedDeliveryDate.today': 'expectedDeliveryDate.today',\r\n\t'expectedDeliveryDate.tomorrow': 'expectedDeliveryDate.tomorrow',\r\n\t'brand.favourite': 'brand.favourite',\r\n\t'brand.popular': 'brand.popular',\r\n\t'brand.brands': 'brand.brands',\r\n\t'cartSummary.cart': 'cartSummary.cart',\r\n\t'cartSummary.prescription': 'cartSummary.prescription',\r\n\t'cartSummary.closeCart': 'cartSummary.closeCart',\r\n\t'cartSummary.openCart': 'cartSummary.openCart',\r\n\t'cartSummary.product': 'cartSummary.product',\r\n\t'cartSummary.products': 'cartSummary.products',\r\n\t'cartSummary.freeShipping': 'cartSummary.freeShipping',\r\n\t'cartSummary.totalSum': 'cartSummary.totalSum',\r\n\t'cartSummary.spared': 'cartSummary.spared',\r\n\t'cartSummary.goToCart': 'cartSummary.goToCart',\r\n\t'cartSummary.goToCheckout': 'cartSummary.goToCheckout',\r\n\t'cartSummary.loginTitle': 'cartSummary.loginTitle',\r\n\t'cartSummary.loginSubtitle': 'cartSummary.loginSubtitle',\r\n\t'cartSummary.loginButton': 'cartSummary.loginButton',\r\n\t'cartSummary.registerTitle': 'cartSummary.registerTitle',\r\n\t'cartSummary.registerSubtitle': 'cartSummary.registerSubtitle',\r\n\t'cartSummary.registerButton': 'cartSummary.registerButton',\r\n\t'cartSummary.vippsTitle': 'cartSummary.vippsTitle',\r\n\t'cartSummary.vippsSubtitle': 'cartSummary.vippsSubtitle',\r\n\t'cartSummary.vippsButton': 'cartSummary.vippsButton',\r\n\t'cartSummary.emptyCartHeading': 'cartSummary.emptyCartHeading',\r\n\t'cartSummary.emptyCartMessage': 'cartSummary.emptyCartMessage',\r\n\t'cartSummary.includingTaxes': 'cartSummary.includingTaxes',\r\n\t'cartSummary.remove': 'cartSummary.remove',\r\n\t'cartSummary.addToCartMessage': 'cartSummary.addToCartMessage',\r\n\t'cartSummary.discount': 'cartSummary.discount',\r\n\t'cartSummary.delivery': 'cartSummary.delivery',\r\n\t'cartSummary.free': 'cartSummary.free',\r\n\t'cartSummary.from': 'cartSummary.from',\r\n\t'cartSummary.freeDeliveryNeededAmount': 'cartSummary.freeDeliveryNeededAmount',\r\n\t'cartSummary.freeDeliveryGratis': 'cartSummary.freeDeliveryGratis',\r\n\t'cartSummary.freeDeliveryAchieved': 'cartSummary.freeDeliveryAchieved',\r\n\t'cartSummary.freeDeliveryCalculationHeading': 'cartSummary.freeDeliveryCalculationHeading',\r\n\t'cartSummary.freeDeliveryButtonA11yText': 'cartSummary.freeDeliveryButtonA11yText',\r\n\t'cartSummary.freeDeliveryButtonHide': 'cartSummary.freeDeliveryButtonHide',\r\n\t'cartSummary.freeDeliveryButtonShow': 'cartSummary.freeDeliveryButtonShow',\r\n\t'cartSummary.completePurchase': 'cartSummary.completePurchase',\r\n\t'cartSummary.completePurchaseForFreeDelivery': 'cartSummary.completePurchaseForFreeDelivery',\r\n\t'cartSummary.merged': 'cartSummary.merged',\r\n\t'cartSummary.validation.Unexpected': 'cartSummary.validation.Unexpected',\r\n\t'cartSummary.validation.CannotProcessDueToMissingOrderStatus': 'cartSummary.validation.CannotProcessDueToMissingOrderStatus',\r\n\t'cartSummary.validation.RemovedDueToCodeMissing': 'cartSummary.validation.RemovedDueToCodeMissing',\r\n\t'cartSummary.validation.RemovedDueToNotAvailableInMarket': 'cartSummary.validation.RemovedDueToNotAvailableInMarket',\r\n\t'cartSummary.validation.RemovedDueToUnavailableCatalog': 'cartSummary.validation.RemovedDueToUnavailableCatalog',\r\n\t'cartSummary.validation.RemovedDueToUnavailableItem': 'cartSummary.validation.RemovedDueToUnavailableItem',\r\n\t'cartSummary.validation.RemovedDueToInsufficientQuantityInInventory': 'cartSummary.validation.RemovedDueToInsufficientQuantityInInventory',\r\n\t'cartSummary.validation.RemovedDueToInactiveWarehouse': 'cartSummary.validation.RemovedDueToInactiveWarehouse',\r\n\t'cartSummary.validation.RemovedDueToMissingInventoryInformation': 'cartSummary.validation.RemovedDueToMissingInventoryInformation',\r\n\t'cartSummary.validation.RemovedDueToInvalidPrice': 'cartSummary.validation.RemovedDueToInvalidPrice',\r\n\t'cartSummary.validation.RemovedDueToInvalidMaxQuantitySetting': 'cartSummary.validation.RemovedDueToInvalidMaxQuantitySetting',\r\n\t'cartSummary.validation.AdjustedQuantityByMinQuantity': 'cartSummary.validation.AdjustedQuantityByMinQuantity',\r\n\t'cartSummary.validation.AdjustedQuantityByMaxQuantity': 'cartSummary.validation.AdjustedQuantityByMaxQuantity',\r\n\t'cartSummary.validation.AdjustedQuantityByBackorderQuantity': 'cartSummary.validation.AdjustedQuantityByBackorderQuantity',\r\n\t'cartSummary.validation.AdjustedQuantityByPreorderQuantity': 'cartSummary.validation.AdjustedQuantityByPreorderQuantity',\r\n\t'cartSummary.validation.AdjustedQuantityByAvailableQuantity': 'cartSummary.validation.AdjustedQuantityByAvailableQuantity',\r\n\t'cartSummary.validation.PlacedPricedChanged': 'cartSummary.validation.PlacedPricedChanged',\r\n\t'cartSummary.validation.RemovedGiftDueToInsufficientQuantityInInventory': 'cartSummary.validation.RemovedGiftDueToInsufficientQuantityInInventory',\r\n\t'cartSummary.validation.RejectedInventoryRequestDueToInsufficientQuantity': 'cartSummary.validation.RejectedInventoryRequestDueToInsufficientQuantity',\r\n\t'cartSummary.validation.AdjustedQuantityByOtcLimitQuantity': 'cartSummary.validation.AdjustedQuantityByOtcLimitQuantity',\r\n\t'cartSummary.validation.CannotBeAddedDueToDateTimeRestrictions': 'cartSummary.validation.CannotBeAddedDueToDateTimeRestrictions',\r\n\t'cartSummary.validation.CannotBeRemovedDueToPriceRecalculationError': 'cartSummary.validation.CannotBeRemovedDueToPriceRecalculationError',\r\n\t'cartSummary.validation.addToCart.unexpectedError': 'cartSummary.validation.addToCart.unexpectedError',\r\n\t'cartSummary.validation.invalidActionPleaseRefresh': 'cartSummary.validation.invalidActionPleaseRefresh',\r\n\t'cartSummary.validation.DifferentWarehouse': 'cartSummary.validation.DifferentWarehouse',\r\n\t'vippsExpress.heading': 'vippsExpress.heading',\r\n\t'vippsExpress.subheading1': 'vippsExpress.subheading1',\r\n\t'vippsExpress.subheading2': 'vippsExpress.subheading2',\r\n\t'vippsExpress.phoneNumber': 'vippsExpress.phoneNumber',\r\n\t'vippsExpress.ssn': 'vippsExpress.ssn',\r\n\t'vippsExpress.invalidSsn': 'vippsExpress.invalidSsn',\r\n\t'vippsExpress.button': 'vippsExpress.button',\r\n\t'modal.ok': 'modal.ok',\r\n\t'modal.confirm': 'modal.confirm',\r\n\t'modal.cancel': 'modal.cancel',\r\n\t'modal.close': 'modal.close',\r\n\t'modal.sessionExpired.title': 'modal.sessionExpired.title',\r\n\t'modal.sessionExpired.message': 'modal.sessionExpired.message',\r\n\t'modal.errorInfo': 'modal.errorInfo',\r\n\t'modal.goBack': 'modal.goBack',\r\n\t'modal.refresh': 'modal.refresh',\r\n\t'modal.rxSession.goToCheckout': 'modal.rxSession.goToCheckout',\r\n\t'modal.rxSession.close': 'modal.rxSession.close',\r\n\t'modal.rxSession.logIn': 'modal.rxSession.logIn',\r\n\t'modal.rxSession.logout': 'modal.rxSession.logout',\r\n\t'modal.rxSession.goToCart': 'modal.rxSession.goToCart',\r\n\t'modal.rxSession.expiringHeading': 'modal.rxSession.expiringHeading',\r\n\t'modal.rxSession.expiredHeading': 'modal.rxSession.expiredHeading',\r\n\t'modal.rxSession.logoutHeading': 'modal.rxSession.logoutHeading',\r\n\t'modal.rxSession.minute': 'modal.rxSession.minute',\r\n\t'modal.rxSession.minutes': 'modal.rxSession.minutes',\r\n\t'modal.rxSession.expiringBody': 'modal.rxSession.expiringBody',\r\n\t'modal.rxSession.expiredBody': 'modal.rxSession.expiredBody',\r\n\t'modal.rxSession.logoutBody': 'modal.rxSession.logoutBody',\r\n\t'payment.title': 'payment.title',\r\n\t'payment.addPayment': 'payment.addPayment',\r\n\t'payment.paymentMethods': 'payment.paymentMethods',\r\n\t'payment.paymentAddress': 'payment.paymentAddress',\r\n\t'payment.addToAddressBook': 'payment.addToAddressBook',\r\n\t'payment.submit': 'payment.submit',\r\n\t'payment.payWithVipps': 'payment.payWithVipps',\r\n\t'payment.processing': 'payment.processing',\r\n\t'payment.pleaseWait': 'payment.pleaseWait',\r\n\t'payment.payWith': 'payment.payWith',\r\n\t'payment.klarnaErrorMessage': 'payment.klarnaErrorMessage',\r\n\t'payment.vippsExpressCheckout': 'payment.vippsExpressCheckout',\r\n\t'checkout.name': 'checkout.name',\r\n\t'checkout.heading': 'checkout.heading',\r\n\t'checkout.required': 'checkout.required',\r\n\t'checkout.incorrectPostalCode': 'checkout.incorrectPostalCode',\r\n\t'checkout.incorrectEmail': 'checkout.incorrectEmail',\r\n\t'checkout.incorrectPhone': 'checkout.incorrectPhone',\r\n\t'checkout.incorrectPostalCodeOrCity': 'checkout.incorrectPostalCodeOrCity',\r\n\t'checkout.incorrectCity': 'checkout.incorrectCity',\r\n\t'checkout.orderHasChangedHeading': 'checkout.orderHasChangedHeading',\r\n\t'checkout.orderHasChangedContent': 'checkout.orderHasChangedContent',\r\n\t'checkout.deliveryMethodHasChangedHeading': 'checkout.deliveryMethodHasChangedHeading',\r\n\t'checkout.deliveryMethodHasChangedContent': 'checkout.deliveryMethodHasChangedContent',\r\n\t'checkout.ok': 'checkout.ok',\r\n\t'checkout.consentsRequired': 'checkout.consentsRequired',\r\n\t'checkout.termsOfSaleConsent.ingress': 'checkout.termsOfSaleConsent.ingress',\r\n\t'checkout.termsOfSaleConsent.link': 'checkout.termsOfSaleConsent.link',\r\n\t'checkout.relationshipOffersConsent': 'checkout.relationshipOffersConsent',\r\n\t'checkout.continueShopping': 'checkout.continueShopping',\r\n\t'checkout.backToCart': 'checkout.backToCart',\r\n\t'checkout.paymentSuccess': 'checkout.paymentSuccess',\r\n\t'checkout.summary.title': 'checkout.summary.title',\r\n\t'checkout.summary.productsInCart': 'checkout.summary.productsInCart',\r\n\t'checkout.summary.sum': 'checkout.summary.sum',\r\n\t'checkout.summary.freeDelivery': 'checkout.summary.freeDelivery',\r\n\t'checkout.summary.goToAddresses': 'checkout.summary.goToAddresses',\r\n\t'checkout.summary.goToDelivery': 'checkout.summary.goToDelivery',\r\n\t'checkout.summary.warningTop': 'checkout.summary.warningTop',\r\n\t'checkout.summary.warningBottom': 'checkout.summary.warningBottom',\r\n\t'checkout.summary.discountCode': 'checkout.summary.discountCode',\r\n\t'checkout.summary.enterDiscountCode': 'checkout.summary.enterDiscountCode',\r\n\t'checkout.summary.discount': 'checkout.summary.discount',\r\n\t'checkout.summary.delivery': 'checkout.summary.delivery',\r\n\t'checkout.summary.total': 'checkout.summary.total',\r\n\t'checkout.summary.includeTax': 'checkout.summary.includeTax',\r\n\t'checkout.summary.apologyTechnicalError': 'checkout.summary.apologyTechnicalError',\r\n\t'checkout.summary.add': 'checkout.summary.add',\r\n\t'checkout.summary.reviewCart': 'checkout.summary.reviewCart',\r\n\t'checkout.summary.coupons.genericCouponError': 'checkout.summary.coupons.genericCouponError',\r\n\t'checkout.summary.coupons.anonymousCustomerRedemptionError': 'checkout.summary.coupons.anonymousCustomerRedemptionError',\r\n\t'checkout.summary.coupons.alreadyUsedError': 'checkout.summary.coupons.alreadyUsedError',\r\n\t'checkout.summary.coupons.couponEmpty': 'checkout.summary.coupons.couponEmpty',\r\n\t'checkout.summary.coupons.couponTechnicalError': 'checkout.summary.coupons.couponTechnicalError',\r\n\t'checkout.summary.coupons.couponWithoutDiscount': 'checkout.summary.coupons.couponWithoutDiscount',\r\n\t'checkout.summary.coupons.requireRxInCart': 'checkout.summary.coupons.requireRxInCart',\r\n\t'checkout.ageConfirmation.InvalidNumber': 'checkout.ageConfirmation.InvalidNumber',\r\n\t'checkout.ageConfirmation.Invalid': 'checkout.ageConfirmation.Invalid',\r\n\t'checkout.ageConfirmation.InvalidAge': 'checkout.ageConfirmation.InvalidAge',\r\n\t'checkout.ageConfirmation.header': 'checkout.ageConfirmation.header',\r\n\t'checkout.ageConfirmation.info': 'checkout.ageConfirmation.info',\r\n\t'checkout.ageConfirmation.input': 'checkout.ageConfirmation.input',\r\n\t'checkout.ageConfirmation.button': 'checkout.ageConfirmation.button',\r\n\t'checkout.delivery.address': 'checkout.delivery.address',\r\n\t'checkout.delivery.sendTo': 'checkout.delivery.sendTo',\r\n\t'checkout.delivery.addAnotherAddress': 'checkout.delivery.addAnotherAddress',\r\n\t'checkout.delivery.method': 'checkout.delivery.method',\r\n\t'checkout.delivery.hasMedicines': 'checkout.delivery.hasMedicines',\r\n\t'checkout.delivery.notAvailableMethod': 'checkout.delivery.notAvailableMethod',\r\n\t'checkout.delivery.goToPayment': 'checkout.delivery.goToPayment',\r\n\t'checkout.delivery.placeOrder': 'checkout.delivery.placeOrder',\r\n\t'checkout.delivery.delete': 'checkout.delivery.delete',\r\n\t'checkout.delivery.edit': 'checkout.delivery.edit',\r\n\t'checkout.delivery.formAddress': 'checkout.delivery.formAddress',\r\n\t'checkout.delivery.postalCodeAndCity': 'checkout.delivery.postalCodeAndCity',\r\n\t'checkout.delivery.postalCodeAndCityPlaceholder': 'checkout.delivery.postalCodeAndCityPlaceholder',\r\n\t'checkout.delivery.companyName': 'checkout.delivery.companyName',\r\n\t'checkout.delivery.email': 'checkout.delivery.email',\r\n\t'checkout.delivery.phoneNumber': 'checkout.delivery.phoneNumber',\r\n\t'checkout.delivery.checkPhoneNumber': 'checkout.delivery.checkPhoneNumber',\r\n\t'checkout.delivery.firstName': 'checkout.delivery.firstName',\r\n\t'checkout.delivery.lastName': 'checkout.delivery.lastName',\r\n\t'checkout.delivery.city': 'checkout.delivery.city',\r\n\t'checkout.delivery.formAdd': 'checkout.delivery.formAdd',\r\n\t'checkout.delivery.noOpeningHours': 'checkout.delivery.noOpeningHours',\r\n\t'checkout.delivery.openingHours': 'checkout.delivery.openingHours',\r\n\t'checkout.delivery.formCancel': 'checkout.delivery.formCancel',\r\n\t'checkout.delivery.formHeading': 'checkout.delivery.formHeading',\r\n\t'checkout.delivery.formConfirm': 'checkout.delivery.formConfirm',\r\n\t'checkout.delivery.toThisAddress': 'checkout.delivery.toThisAddress',\r\n\t'checkout.delivery.confirmAddressDelete': 'checkout.delivery.confirmAddressDelete',\r\n\t'checkout.delivery.acceptBamboraPayments': 'checkout.delivery.acceptBamboraPayments',\r\n\t'checkout.delivery.postalCode': 'checkout.delivery.postalCode',\r\n\t'checkout.delivery.search': 'checkout.delivery.search',\r\n\t'checkout.delivery.invalidPostalCode': 'checkout.delivery.invalidPostalCode',\r\n\t'checkout.delivery.chooseAnotherLocation': 'checkout.delivery.chooseAnotherLocation',\r\n\t'checkout.delivery.chooseAnotherDate': 'checkout.delivery.chooseAnotherDate',\r\n\t'checkout.delivery.selectDeliveryDate': 'checkout.delivery.selectDeliveryDate',\r\n\t'checkout.delivery.servicePointNotSelected': 'checkout.delivery.servicePointNotSelected',\r\n\t'checkout.delivery.formIsOpen': 'checkout.delivery.formIsOpen',\r\n\t'checkout.delivery.addressUnavailable': 'checkout.delivery.addressUnavailable',\r\n\t'checkout.delivery.addressHasMissingNumberWarning': 'checkout.delivery.addressHasMissingNumberWarning',\r\n\t'checkout.delivery.line1required': 'checkout.delivery.line1required',\r\n\t'checkout.delivery.line1MissingNumber': 'checkout.delivery.line1MissingNumber',\r\n\t'checkout.delivery.noServicePointsAvailable': 'checkout.delivery.noServicePointsAvailable',\r\n\t'checkout.delivery.firstNameWrongCharacters': 'checkout.delivery.firstNameWrongCharacters',\r\n\t'checkout.delivery.lastNameWrongCharacters': 'checkout.delivery.lastNameWrongCharacters',\r\n\t'checkout.delivery.line1WrongCharacters': 'checkout.delivery.line1WrongCharacters',\r\n\t'checkout.delivery.coWrongCharacters': 'checkout.delivery.coWrongCharacters',\r\n\t'checkout.delivery.availableOptions': 'checkout.delivery.availableOptions',\r\n\t'checkout.delivery.showNotAvailableOptions': 'checkout.delivery.showNotAvailableOptions',\r\n\t'checkout.delivery.unavailableHeading': 'checkout.delivery.unavailableHeading',\r\n\t'checkout.delivery.unavailableSubheading': 'checkout.delivery.unavailableSubheading',\r\n\t'checkout.delivery.newAddress': 'checkout.delivery.newAddress',\r\n\t'checkout.delivery.editAddresses': 'checkout.delivery.editAddresses',\r\n\t'checkout.delivery.selectAddress': 'checkout.delivery.selectAddress',\r\n\t'checkout.delivery.noMethodsAvailableHeading': 'checkout.delivery.noMethodsAvailableHeading',\r\n\t'checkout.delivery.noMethodsAvailableLine1': 'checkout.delivery.noMethodsAvailableLine1',\r\n\t'checkout.delivery.noMethodsAvailableLine2': 'checkout.delivery.noMethodsAvailableLine2',\r\n\t'checkout.delivery.noMethodsAvailableReadMore': 'checkout.delivery.noMethodsAvailableReadMore',\r\n\t'checkout.delivery.instaboxEta': 'checkout.delivery.instaboxEta',\r\n\t'checkout.delivery.showMore': 'checkout.delivery.showMore',\r\n\t'checkout.delivery.pickupPoints.emptyTitle': 'checkout.delivery.pickupPoints.emptyTitle',\r\n\t'checkout.delivery.pickupPoints.emptySubtitle': 'checkout.delivery.pickupPoints.emptySubtitle',\r\n\t'checkout.delivery.pickupPoints.noConnectionTitle': 'checkout.delivery.pickupPoints.noConnectionTitle',\r\n\t'checkout.delivery.pickupPoints.noConnectionSubtitle': 'checkout.delivery.pickupPoints.noConnectionSubtitle',\r\n\t'checkout.delivery.days.monday': 'checkout.delivery.days.monday',\r\n\t'checkout.delivery.days.tuesday': 'checkout.delivery.days.tuesday',\r\n\t'checkout.delivery.days.wednesday': 'checkout.delivery.days.wednesday',\r\n\t'checkout.delivery.days.thursday': 'checkout.delivery.days.thursday',\r\n\t'checkout.delivery.days.friday': 'checkout.delivery.days.friday',\r\n\t'checkout.delivery.days.saturday': 'checkout.delivery.days.saturday',\r\n\t'checkout.delivery.days.sunday': 'checkout.delivery.days.sunday',\r\n\t'checkout.delivery.daysLong.monday': 'checkout.delivery.daysLong.monday',\r\n\t'checkout.delivery.daysLong.tuesday': 'checkout.delivery.daysLong.tuesday',\r\n\t'checkout.delivery.daysLong.wednesday': 'checkout.delivery.daysLong.wednesday',\r\n\t'checkout.delivery.daysLong.thursday': 'checkout.delivery.daysLong.thursday',\r\n\t'checkout.delivery.daysLong.friday': 'checkout.delivery.daysLong.friday',\r\n\t'checkout.delivery.daysLong.saturday': 'checkout.delivery.daysLong.saturday',\r\n\t'checkout.delivery.daysLong.sunday': 'checkout.delivery.daysLong.sunday',\r\n\t'checkout.delivery.today': 'checkout.delivery.today',\r\n\t'checkout.delivery.closed': 'checkout.delivery.closed',\r\n\t'checkout.delivery.tomorrow': 'checkout.delivery.tomorrow',\r\n\t'checkout.shippingMethodAvailability.AddressNotSelected': 'checkout.shippingMethodAvailability.AddressNotSelected',\r\n\t'checkout.shippingMethodAvailability.DeliveryMethodNotSelected': 'checkout.shippingMethodAvailability.DeliveryMethodNotSelected',\r\n\t'checkout.shippingMethodAvailability.InvalidDimensions': 'checkout.shippingMethodAvailability.InvalidDimensions',\r\n\t'checkout.shippingMethodAvailability.MailboxNotEligible': 'checkout.shippingMethodAvailability.MailboxNotEligible',\r\n\t'checkout.shippingMethodAvailability.PorterBuddyAddressNotSupported': 'checkout.shippingMethodAvailability.PorterBuddyAddressNotSupported',\r\n\t'checkout.shippingMethodAvailability.PorterBuddyNotAvailable': 'checkout.shippingMethodAvailability.PorterBuddyNotAvailable',\r\n\t'checkout.shippingMethodAvailability.HeltHjemNotAvailable': 'checkout.shippingMethodAvailability.HeltHjemNotAvailable',\r\n\t'checkout.shippingMethodAvailability.PostNHomeNotAvailable': 'checkout.shippingMethodAvailability.PostNHomeNotAvailable',\r\n\t'checkout.shippingMethodAvailability.PostNPickNotAvailable': 'checkout.shippingMethodAvailability.PostNPickNotAvailable',\r\n\t'checkout.shippingMethodAvailability.PostNPickLockersNotAvailable': 'checkout.shippingMethodAvailability.PostNPickLockersNotAvailable',\r\n\t'checkout.shippingMethodAvailability.PorterBuddyWindowNotSelected': 'checkout.shippingMethodAvailability.PorterBuddyWindowNotSelected',\r\n\t'checkout.shippingMethodAvailability.PostNordServicePointNotAvailable': 'checkout.shippingMethodAvailability.PostNordServicePointNotAvailable',\r\n\t'checkout.shippingMethodAvailability.InstaBoxExpressNotAvailable': 'checkout.shippingMethodAvailability.InstaBoxExpressNotAvailable',\r\n\t'checkout.shippingMethodAvailability.InstaBoxHomeNotAvailable': 'checkout.shippingMethodAvailability.InstaBoxHomeNotAvailable',\r\n\t'checkout.shippingMethodAvailability.PostNordServicePointNotSelected': 'checkout.shippingMethodAvailability.PostNordServicePointNotSelected',\r\n\t'checkout.shippingMethodAvailability.InstaBoxParcelLockerNotSelected': 'checkout.shippingMethodAvailability.InstaBoxParcelLockerNotSelected',\r\n\t'checkout.shippingMethodAvailability.NotAvailable': 'checkout.shippingMethodAvailability.NotAvailable',\r\n\t'checkout.shippingMethodAvailability.BadTemperatures': 'checkout.shippingMethodAvailability.BadTemperatures',\r\n\t'checkout.shippingMethodAvailability.AirmeeHomeNotAvailable': 'checkout.shippingMethodAvailability.AirmeeHomeNotAvailable',\r\n\t'checkout.shippingMethodAvailability.AirmeeHomeNotSelected': 'checkout.shippingMethodAvailability.AirmeeHomeNotSelected',\r\n\t'checkout.shippingMethodAvailability.OtcNotAvailable': 'checkout.shippingMethodAvailability.OtcNotAvailable',\r\n\t'checkout.shippingMethodAvailability.RxNotAvailable': 'checkout.shippingMethodAvailability.RxNotAvailable',\r\n\t'checkout.shippingMethodAvailability.HeltHjemServicePointNotAvailable': 'checkout.shippingMethodAvailability.HeltHjemServicePointNotAvailable',\r\n\t'checkout.shippingMethodAvailability.HeltHjemServicePointNotSelected': 'checkout.shippingMethodAvailability.HeltHjemServicePointNotSelected',\r\n\t'checkout.validation.couldNotSave': 'checkout.validation.couldNotSave',\r\n\t'checkout.validation.ValidationFailed': 'checkout.validation.ValidationFailed',\r\n\t'checkout.validation.OrderAdjustedAfterValidation': 'checkout.validation.OrderAdjustedAfterValidation',\r\n\t'checkout.validation.PriceChangedAfterValidation': 'checkout.validation.PriceChangedAfterValidation',\r\n\t'checkout.validation.PriceMismatch': 'checkout.validation.PriceMismatch',\r\n\t'checkout.validation.InvalidDeliveryServiceLocation': 'checkout.validation.InvalidDeliveryServiceLocation',\r\n\t'checkout.validation.ItemsRemovedAfterInventoryValidation': 'checkout.validation.ItemsRemovedAfterInventoryValidation',\r\n\t'checkout.validation.PaymentFailed': 'checkout.validation.PaymentFailed',\r\n\t'checkout.validation.MissingDeliveryMethod': 'checkout.validation.MissingDeliveryMethod',\r\n\t'checkout.validation.InvalidShippingAddress': 'checkout.validation.InvalidShippingAddress',\r\n\t'checkout.validation.UnexpectedError': 'checkout.validation.UnexpectedError',\r\n\t'checkout.validation.PaymentCancelled': 'checkout.validation.PaymentCancelled',\r\n\t'checkout.validation.IncorrectFirstName': 'checkout.validation.IncorrectFirstName',\r\n\t'checkout.validation.IncorrectLastName': 'checkout.validation.IncorrectLastName',\r\n\t'checkout.validation.IncorrectPostalCode': 'checkout.validation.IncorrectPostalCode',\r\n\t'checkout.validation.IncorrectCity': 'checkout.validation.IncorrectCity',\r\n\t'checkout.validation.MissingAddress': 'checkout.validation.MissingAddress',\r\n\t'checkout.validation.IncorrectLine1': 'checkout.validation.IncorrectLine1',\r\n\t'checkout.validation.NullAddress': 'checkout.validation.NullAddress',\r\n\t'checkout.validation.CannotDeleteLastAddress': 'checkout.validation.CannotDeleteLastAddress',\r\n\t'checkout.validation.AddressDoesNotExists': 'checkout.validation.AddressDoesNotExists',\r\n\t'checkout.validation.AddressAlreadyExists': 'checkout.validation.AddressAlreadyExists',\r\n\t'checkout.validation.IncorrectPhoneNumber': 'checkout.validation.IncorrectPhoneNumber',\r\n\t'checkout.validation.EmptyPhoneNumber': 'checkout.validation.EmptyPhoneNumber',\r\n\t'checkout.validation.IncorrectCompany': 'checkout.validation.IncorrectCompany',\r\n\t'checkout.validation.Other': 'checkout.validation.Other',\r\n\t'checkout.validation.InvalidDeliveryWindow': 'checkout.validation.InvalidDeliveryWindow',\r\n\t'checkout.validation.ExpressCheckoutInvalidDeliveryWindow': 'checkout.validation.ExpressCheckoutInvalidDeliveryWindow',\r\n\t'checkout.error.generic': 'checkout.error.generic',\r\n\t'checkout.error.vippsCancelled': 'checkout.error.vippsCancelled',\r\n\t'checkout.error.errorSettingServicePoint': 'checkout.error.errorSettingServicePoint',\r\n\t'checkout.error.unexpected': 'checkout.error.unexpected',\r\n\t'checkout.error.unexpectedCheckout': 'checkout.error.unexpectedCheckout',\r\n\t'checkout.error.refresh': 'checkout.error.refresh',\r\n\t'checkout.error.invalidActionPleaseRefresh': 'checkout.error.invalidActionPleaseRefresh',\r\n\t'checkout.error.invalidDeliveryWindow': 'checkout.error.invalidDeliveryWindow',\r\n\t'checkout.notCharged': 'checkout.notCharged',\r\n\t'orderSummary.name': 'orderSummary.name',\r\n\t'orderSummary.thankYouHeader': 'orderSummary.thankYouHeader',\r\n\t'orderSummary.emailConfirmation': 'orderSummary.emailConfirmation',\r\n\t'orderSummary.emailConfirmationFallback': 'orderSummary.emailConfirmationFallback',\r\n\t'orderSummary.contactCustomerService': 'orderSummary.contactCustomerService',\r\n\t'orderSummary.customerService': 'orderSummary.customerService',\r\n\t'orderSummary.orderNumber': 'orderSummary.orderNumber',\r\n\t'orderSummary.orderDate': 'orderSummary.orderDate',\r\n\t'orderSummary.deliveryDate': 'orderSummary.deliveryDate',\r\n\t'orderSummary.orderStatus': 'orderSummary.orderStatus',\r\n\t'orderSummary.paymentMethod': 'orderSummary.paymentMethod',\r\n\t'orderSummary.complaint': 'orderSummary.complaint',\r\n\t'orderSummary.cancelOrder': 'orderSummary.cancelOrder',\r\n\t'orderSummary.heading': 'orderSummary.heading',\r\n\t'orderSummary.package': 'orderSummary.package',\r\n\t'orderSummary.specialItems': 'orderSummary.specialItems',\r\n\t'orderSummary.sum': 'orderSummary.sum',\r\n\t'orderSummary.of': 'orderSummary.of',\r\n\t'orderSummary.before': 'orderSummary.before',\r\n\t'orderSummary.personalPickup': 'orderSummary.personalPickup',\r\n\t'orderSummary.deliveryAddress': 'orderSummary.deliveryAddress',\r\n\t'orderSummary.packageTracking': 'orderSummary.packageTracking',\r\n\t'orderSummary.cancel': 'orderSummary.cancel',\r\n\t'orderSummary.delivery': 'orderSummary.delivery',\r\n\t'orderSummary.freeDelivery': 'orderSummary.freeDelivery',\r\n\t'orderSummary.discount': 'orderSummary.discount',\r\n\t'orderSummary.discountCode': 'orderSummary.discountCode',\r\n\t'orderSummary.replacement': 'orderSummary.replacement',\r\n\t'orderSummary.priceAdjustment': 'orderSummary.priceAdjustment',\r\n\t'orderSummary.total': 'orderSummary.total',\r\n\t'orderSummary.includeTax': 'orderSummary.includeTax',\r\n\t'orderSummary.summary': 'orderSummary.summary',\r\n\t'orderSummary.waitingToBeShipped': 'orderSummary.waitingToBeShipped',\r\n\t'orderSummary.cancelledProducts': 'orderSummary.cancelledProducts',\r\n\t'orderSummary.productCancelled': 'orderSummary.productCancelled',\r\n\t'orderSummary.paymentTypes.card': 'orderSummary.paymentTypes.card',\r\n\t'orderSummary.paymentTypes.vipps': 'orderSummary.paymentTypes.vipps',\r\n\t'orderSummary.paymentTypes.other': 'orderSummary.paymentTypes.other',\r\n\t'orderSummary.paymentTypes.klarna': 'orderSummary.paymentTypes.klarna',\r\n\t'orderSummary.invoices.notReady': 'orderSummary.invoices.notReady',\r\n\t'orderSummary.invoices.unavailable': 'orderSummary.invoices.unavailable',\r\n\t'orderSummary.invoices.invoice': 'orderSummary.invoices.invoice',\r\n\t'orderSummary.rateThisProduct': 'orderSummary.rateThisProduct',\r\n\t'orderSummary.paymentInfo': 'orderSummary.paymentInfo',\r\n\t'product.related': 'product.related',\r\n\t'product.interesting': 'product.interesting',\r\n\t'product.otherSearchedFor': 'product.otherSearchedFor',\r\n\t'product.before': 'product.before',\r\n\t'product.prescriptionImageAlt': 'product.prescriptionImageAlt',\r\n\t'product.myPrescriptions': 'product.myPrescriptions',\r\n\t'product.notAvailable': 'product.notAvailable',\r\n\t'product.prescriptionMessage': 'product.prescriptionMessage',\r\n\t'product.outOfStockMessage': 'product.outOfStockMessage',\r\n\t'product.notAvailableMessage': 'product.notAvailableMessage',\r\n\t'product.ageOfConsentMessage': 'product.ageOfConsentMessage',\r\n\t'product.coldProductMessage': 'product.coldProductMessage',\r\n\t'product.freeDelivery': 'product.freeDelivery',\r\n\t'product.deliveryFrom': 'product.deliveryFrom',\r\n\t'product.validUntil': 'product.validUntil',\r\n\t'product.explore': 'product.explore',\r\n\t'product.previous': 'product.previous',\r\n\t'product.next': 'product.next',\r\n\t'product.availabilityNotification.heading': 'product.availabilityNotification.heading',\r\n\t'product.availabilityNotification.subheading': 'product.availabilityNotification.subheading',\r\n\t'product.availabilityNotification.modalHeading': 'product.availabilityNotification.modalHeading',\r\n\t'product.availabilityNotification.modalSubheading': 'product.availabilityNotification.modalSubheading',\r\n\t'product.availabilityNotification.button': 'product.availabilityNotification.button',\r\n\t'product.availabilityNotification.modalButton': 'product.availabilityNotification.modalButton',\r\n\t'product.availabilityNotification.privacyPolicyText': 'product.availabilityNotification.privacyPolicyText',\r\n\t'product.availabilityNotification.privacyPolicyLink': 'product.availabilityNotification.privacyPolicyLink',\r\n\t'product.availabilityNotification.savedHeading': 'product.availabilityNotification.savedHeading',\r\n\t'product.availabilityNotification.savedSubheading': 'product.availabilityNotification.savedSubheading',\r\n\t'product.availabilityNotification.incorrectEmail': 'product.availabilityNotification.incorrectEmail',\r\n\t'product.availabilityNotification.unexpectedError': 'product.availabilityNotification.unexpectedError',\r\n\t'productAvailability.InStock': 'productAvailability.InStock',\r\n\t'productAvailability.LowInStock': 'productAvailability.LowInStock',\r\n\t'productAvailability.OnDemand': 'productAvailability.OnDemand',\r\n\t'productAvailability.NotInStock': 'productAvailability.NotInStock',\r\n\t'productAvailability.PhysicalStoreOnly': 'productAvailability.PhysicalStoreOnly',\r\n\t'productAvailability.TemporarySalesStop': 'productAvailability.TemporarySalesStop',\r\n\t'productAvailability.NotInStockRxAdditionalInfo': 'productAvailability.NotInStockRxAdditionalInfo',\r\n\t'productAvailability.NotInStockNonRxRefundedAdditionalInfo': 'productAvailability.NotInStockNonRxRefundedAdditionalInfo',\r\n\t'productAvailability.OrderedRxAdditionalInfo': 'productAvailability.OrderedRxAdditionalInfo',\r\n\t'unavailabilityReason.Ok': 'unavailabilityReason.Ok',\r\n\t'unavailabilityReason.StatusNotWebReady': 'unavailabilityReason.StatusNotWebReady',\r\n\t'unavailabilityReason.NoPrice': 'unavailabilityReason.NoPrice',\r\n\t'unavailabilityReason.NoWeightOrDimensions': 'unavailabilityReason.NoWeightOrDimensions',\r\n\t'unavailabilityReason.NoInventory': 'unavailabilityReason.NoInventory',\r\n\t'unavailabilityReason.NotFound': 'unavailabilityReason.NotFound',\r\n\t'unavailabilityReason.WeightExceedsThreshold': 'unavailabilityReason.WeightExceedsThreshold',\r\n\t'unavailabilityReason.ExpiredInFarmalogg': 'unavailabilityReason.ExpiredInFarmalogg',\r\n\t'productCard.before': 'productCard.before',\r\n\t'productCard.discount': 'productCard.discount',\r\n\t'productCard.prescription': 'productCard.prescription',\r\n\t'productInformation.showMore': 'productInformation.showMore',\r\n\t'productInformation.prescriptionProduct': 'productInformation.prescriptionProduct',\r\n\t'promotions.discountCodeText': 'promotions.discountCodeText',\r\n\t'promotions.freeItemsDiscountInfoType': 'promotions.freeItemsDiscountInfoType',\r\n\t'promotions.quantityItemsDiscountInfoType': 'promotions.quantityItemsDiscountInfoType',\r\n\t'promotions.quantityItemsDiscountText': 'promotions.quantityItemsDiscountText',\r\n\t'promotions.defaultDiscountText': 'promotions.defaultDiscountText',\r\n\t'addToCart.buy': 'addToCart.buy',\r\n\t'addToCart.buyWithGuidance': 'addToCart.buyWithGuidance',\r\n\t'addToCart.formWarning': 'addToCart.formWarning',\r\n\t'addToCart.errorMessage': 'addToCart.errorMessage',\r\n\t'addToCart.successfullyAdded': 'addToCart.successfullyAdded',\r\n\t'addToCart.unexpectedError': 'addToCart.unexpectedError',\r\n\t'addToCart.close': 'addToCart.close',\r\n\t'filters.category': 'filters.category',\r\n\t'filters.brand': 'filters.brand',\r\n\t'filters.subbrand': 'filters.subbrand',\r\n\t'filters.productType': 'filters.productType',\r\n\t'filters.skinType': 'filters.skinType',\r\n\t'filters.properties': 'filters.properties',\r\n\t'filters.form': 'filters.form',\r\n\t'filters.keyInformation': 'filters.keyInformation',\r\n\t'filters.audience': 'filters.audience',\r\n\t'filters.sunFactor': 'filters.sunFactor',\r\n\t'filters.taste': 'filters.taste',\r\n\t'filters.size': 'filters.size',\r\n\t'filters.material': 'filters.material',\r\n\t'filters.color': 'filters.color',\r\n\t'filters.strength': 'filters.strength',\r\n\t'filters.hairType': 'filters.hairType',\r\n\t'filters.calories': 'filters.calories',\r\n\t'filters.price': 'filters.price',\r\n\t'filters.priceDescription': 'filters.priceDescription',\r\n\t'sorting.ByDate': 'sorting.ByDate',\r\n\t'sorting.ByNewlyAdded': 'sorting.ByNewlyAdded',\r\n\t'sorting.ByRelevance': 'sorting.ByRelevance',\r\n\t'sorting.ByPriceAscending': 'sorting.ByPriceAscending',\r\n\t'sorting.ByPriceDescending': 'sorting.ByPriceDescending',\r\n\t'sorting.ByName': 'sorting.ByName',\r\n\t'sorting.ByPromotionPercentage': 'sorting.ByPromotionPercentage',\r\n\t'search.products': 'search.products',\r\n\t'search.categories': 'search.categories',\r\n\t'search.brands': 'search.brands',\r\n\t'search.seeAll': 'search.seeAll',\r\n\t'search.noResults': 'search.noResults',\r\n\t'search.seeRecommendations': 'search.seeRecommendations',\r\n\t'search.checkSpelling': 'search.checkSpelling',\r\n\t'search.phrases': 'search.phrases',\r\n\t'search.pharmacyAdvice': 'search.pharmacyAdvice',\r\n\t'productFilters.filters': 'productFilters.filters',\r\n\t'productFilters.open': 'productFilters.open',\r\n\t'productFilters.product': 'productFilters.product',\r\n\t'productFilters.products': 'productFilters.products',\r\n\t'productFilters.loading': 'productFilters.loading',\r\n\t'productFilters.searchResults': 'productFilters.searchResults',\r\n\t'productFilters.searchResultsWithoutFor': 'productFilters.searchResultsWithoutFor',\r\n\t'productFilters.clear': 'productFilters.clear',\r\n\t'productFilters.seeResults': 'productFilters.seeResults',\r\n\t'productFilters.noResults': 'productFilters.noResults',\r\n\t'productFilters.sortBy': 'productFilters.sortBy',\r\n\t'paging.previousPage': 'paging.previousPage',\r\n\t'paging.nextPage': 'paging.nextPage',\r\n\t'paging.currentPage': 'paging.currentPage',\r\n\t'paging.of': 'paging.of',\r\n\t'priceRange.from': 'priceRange.from',\r\n\t'priceRange.to': 'priceRange.to',\r\n\t'displayAttributes.warranty': 'displayAttributes.warranty',\r\n\t'displayAttributes.productInfo': 'displayAttributes.productInfo',\r\n\t'displayAttributes.ingredients': 'displayAttributes.ingredients',\r\n\t'displayAttributes.tabletPicture': 'displayAttributes.tabletPicture',\r\n\t'displayAttributes.contentDeclaration': 'displayAttributes.contentDeclaration',\r\n\t'displayAttributes.activeIngredient': 'displayAttributes.activeIngredient',\r\n\t'displayAttributes.usageAndDosage': 'displayAttributes.usageAndDosage',\r\n\t'displayAttributes.subscriptionLink': 'displayAttributes.subscriptionLink',\r\n\t'displayAttributes.manufacturerLink': 'displayAttributes.manufacturerLink',\r\n\t'displayAttributes.resourceLink': 'displayAttributes.resourceLink',\r\n\t'displayAttributes.dosage': 'displayAttributes.dosage',\r\n\t'displayAttributes.precautions': 'displayAttributes.precautions',\r\n\t'displayAttributes.pregnancyNotice': 'displayAttributes.pregnancyNotice',\r\n\t'displayAttributes.warningSign': 'displayAttributes.warningSign',\r\n\t'displayAttributes.canBeShared': 'displayAttributes.canBeShared',\r\n\t'displayAttributes.nutritionalContent': 'displayAttributes.nutritionalContent',\r\n\t'displayAttributes.canBeCrushed': 'displayAttributes.canBeCrushed',\r\n\t'displayAttributes.storageConditions': 'displayAttributes.storageConditions',\r\n\t'displayAttributes.dangerousGoods': 'displayAttributes.dangerousGoods',\r\n\t'displayAttributes.leafletLink': 'displayAttributes.leafletLink',\r\n\t'displayAttributes.flavor': 'displayAttributes.flavor',\r\n\t'displayAttributes.classification': 'displayAttributes.classification',\r\n\t'displayAttributes.tabletPictureLink': 'displayAttributes.tabletPictureLink',\r\n\t'displayAttributes.manufacturerLeaflet': 'displayAttributes.manufacturerLeaflet',\r\n\t'displayAttributes.productNumber': 'displayAttributes.productNumber',\r\n\t'displayAttributes.farmaloggNumber': 'displayAttributes.farmaloggNumber',\r\n\t'displayAttributes.additionalResource': 'displayAttributes.additionalResource',\r\n\t'displayAttributes.additionalResourceHeader': 'displayAttributes.additionalResourceHeader',\r\n\t'displayAttributes.yes': 'displayAttributes.yes',\r\n\t'displayAttributes.no': 'displayAttributes.no',\r\n\t'selectedOptionList.removeAll': 'selectedOptionList.removeAll',\r\n\t'cookiesConsent.acceptButtonLabel': 'cookiesConsent.acceptButtonLabel',\r\n\t'mainBanner.readMore': 'mainBanner.readMore',\r\n\t'alertRibbon.close': 'alertRibbon.close',\r\n\t'info.readMore': 'info.readMore',\r\n\t'brandPage.readMore': 'brandPage.readMore',\r\n\t'brandPage.exploreBrands': 'brandPage.exploreBrands',\r\n\t'categoryPage.readMore': 'categoryPage.readMore',\r\n\t'mainBannerGallery.next': 'mainBannerGallery.next',\r\n\t'mainBannerGallery.previous': 'mainBannerGallery.previous',\r\n\t'viagraForm.heading': 'viagraForm.heading',\r\n\t'viagraForm.validation': 'viagraForm.validation',\r\n\t'viagraForm.gender': 'viagraForm.gender',\r\n\t'viagraForm.man': 'viagraForm.man',\r\n\t'viagraForm.woman': 'viagraForm.woman',\r\n\t'viagraForm.onlyForMan': 'viagraForm.onlyForMan',\r\n\t'viagraForm.yes': 'viagraForm.yes',\r\n\t'viagraForm.no': 'viagraForm.no',\r\n\t'viagraForm.contactUs': 'viagraForm.contactUs',\r\n\t'viagraForm.discuss': 'viagraForm.discuss',\r\n\t'viagraForm.anyOfFollowing': 'viagraForm.anyOfFollowing',\r\n\t'viagraForm.lowBloodPressure': 'viagraForm.lowBloodPressure',\r\n\t'viagraForm.lowBloodPressureExplanation': 'viagraForm.lowBloodPressureExplanation',\r\n\t'viagraForm.highBloodPressure': 'viagraForm.highBloodPressure',\r\n\t'viagraForm.highBloodPressureExplanation': 'viagraForm.highBloodPressureExplanation',\r\n\t'viagraForm.angina': 'viagraForm.angina',\r\n\t'viagraForm.anginaExplanation': 'viagraForm.anginaExplanation',\r\n\t'viagraForm.irregularHeartbeats': 'viagraForm.irregularHeartbeats',\r\n\t'viagraForm.irregularHeartbeatsExplanation': 'viagraForm.irregularHeartbeatsExplanation',\r\n\t'viagraForm.anticonvulsantMedicines': 'viagraForm.anticonvulsantMedicines',\r\n\t'viagraForm.anticonvulsantMedicinesExplanation': 'viagraForm.anticonvulsantMedicinesExplanation',\r\n\t'viagraForm.readMoreAboutHeartCramps': 'viagraForm.readMoreAboutHeartCramps',\r\n\t'viagraForm.heartAttack': 'viagraForm.heartAttack',\r\n\t'viagraForm.heartAttackExplanation': 'viagraForm.heartAttackExplanation',\r\n\t'viagraForm.poppers': 'viagraForm.poppers',\r\n\t'viagraForm.poppersExplanation': 'viagraForm.poppersExplanation',\r\n\t'viagraForm.adempas': 'viagraForm.adempas',\r\n\t'viagraForm.adempasExplanation': 'viagraForm.adempasExplanation',\r\n\t'viagraForm.ritonavir': 'viagraForm.ritonavir',\r\n\t'viagraForm.ritonavirExplanation': 'viagraForm.ritonavirExplanation',\r\n\t'viagraForm.opticDamage': 'viagraForm.opticDamage',\r\n\t'viagraForm.opticDamageExplanation': 'viagraForm.opticDamageExplanation',\r\n\t'viagraForm.guidance': 'viagraForm.guidance',\r\n\t'viagraForm.guidanceSubText': 'viagraForm.guidanceSubText',\r\n\t'viagraForm.addToCart': 'viagraForm.addToCart',\r\n\t'viagraForm.continue': 'viagraForm.continue',\r\n\t'viagraForm.contactWithDoctor': 'viagraForm.contactWithDoctor',\r\n\t'viagraForm.answerAllQuestions': 'viagraForm.answerAllQuestions',\r\n\t'viagraForm.required': 'viagraForm.required',\r\n\t'viagraForm.explanation': 'viagraForm.explanation',\r\n\t'viagraForm.checkbox': 'viagraForm.checkbox',\r\n\t'viagraForm.zenDeskUnavailable': 'viagraForm.zenDeskUnavailable',\r\n\t'duraphatForm.header': 'duraphatForm.header',\r\n\t'duraphatForm.close': 'duraphatForm.close',\r\n\t'duraphatForm.ageConsent': 'duraphatForm.ageConsent',\r\n\t'duraphatForm.cavities': 'duraphatForm.cavities',\r\n\t'duraphatForm.visibleRoots': 'duraphatForm.visibleRoots',\r\n\t'duraphatForm.hygieneDifficulties': 'duraphatForm.hygieneDifficulties',\r\n\t'duraphatForm.dryMouth': 'duraphatForm.dryMouth',\r\n\t'duraphatForm.importantInformation': 'duraphatForm.importantInformation',\r\n\t'duraphatForm.orSee': 'duraphatForm.orSee',\r\n\t'duraphatForm.QA': 'duraphatForm.QA',\r\n\t'duraphatForm.contact': 'duraphatForm.contact',\r\n\t'duraphatForm.buy': 'duraphatForm.buy',\r\n\t'duraphatForm.confirm': 'duraphatForm.confirm',\r\n\t'email.subject.RegistrationMessage': 'email.subject.RegistrationMessage',\r\n\t'email.subject.ResetPasswordRequestedMessage': 'email.subject.ResetPasswordRequestedMessage',\r\n\t'email.subject.SetPasswordOnFirstLoginMessage': 'email.subject.SetPasswordOnFirstLoginMessage',\r\n\t'email.subject.ResetPasswordOnLockoutMessage': 'email.subject.ResetPasswordOnLockoutMessage',\r\n\t'email.subject.OrderCancelledMessage': 'email.subject.OrderCancelledMessage',\r\n\t'email.subject.OrderLineCancelledMessage': 'email.subject.OrderLineCancelledMessage',\r\n\t'email.subject.OrderPlacedConfirmationMessage': 'email.subject.OrderPlacedConfirmationMessage',\r\n\t'email.subject.SalesInvoiceCreated': 'email.subject.SalesInvoiceCreated',\r\n\t'email.subject.PackageSentMessage': 'email.subject.PackageSentMessage',\r\n\t'email.subject.ReturnOrderCreatedMessage': 'email.subject.ReturnOrderCreatedMessage',\r\n\t'email.subject.OrderDetailsMessage': 'email.subject.OrderDetailsMessage',\r\n\t'email.otherPayment': 'email.otherPayment',\r\n\t'email.unknownDeliveryMode': 'email.unknownDeliveryMode',\r\n\t'errorPage.error': 'errorPage.error',\r\n\t'errorPage.backToHome': 'errorPage.backToHome',\r\n\t'errorPage.code400.heading': 'errorPage.code400.heading',\r\n\t'errorPage.code401.heading': 'errorPage.code401.heading',\r\n\t'errorPage.code402.heading': 'errorPage.code402.heading',\r\n\t'errorPage.code403.heading': 'errorPage.code403.heading',\r\n\t'errorPage.code403.description': 'errorPage.code403.description',\r\n\t'errorPage.code404.heading': 'errorPage.code404.heading',\r\n\t'errorPage.code404.description': 'errorPage.code404.description',\r\n\t'errorPage.code405.heading': 'errorPage.code405.heading',\r\n\t'errorPage.code406.heading': 'errorPage.code406.heading',\r\n\t'errorPage.code407.heading': 'errorPage.code407.heading',\r\n\t'errorPage.code408.heading': 'errorPage.code408.heading',\r\n\t'errorPage.code410.heading': 'errorPage.code410.heading',\r\n\t'errorPage.code411.heading': 'errorPage.code411.heading',\r\n\t'errorPage.code501.heading': 'errorPage.code501.heading',\r\n\t'errorPage.code502.heading': 'errorPage.code502.heading',\r\n\t'errorPage.code503.heading': 'errorPage.code503.heading',\r\n\t'errorPage.code504.heading': 'errorPage.code504.heading',\r\n\t'errorPage.code505.heading': 'errorPage.code505.heading',\r\n\t'userProfile.name': 'userProfile.name',\r\n\t'userProfile.welcome': 'userProfile.welcome',\r\n\t'userProfile.loggedIn': 'userProfile.loggedIn',\r\n\t'userProfile.logOut': 'userProfile.logOut',\r\n\t'userProfile.contactCustomerService': 'userProfile.contactCustomerService',\r\n\t'userProfile.customerService': 'userProfile.customerService',\r\n\t'userProfile.edit': 'userProfile.edit',\r\n\t'userProfile.confirm': 'userProfile.confirm',\r\n\t'userProfile.cancel': 'userProfile.cancel',\r\n\t'userProfile.changePassword.myPassword': 'userProfile.changePassword.myPassword',\r\n\t'userProfile.changePassword.CurrentPassword': 'userProfile.changePassword.CurrentPassword',\r\n\t'userProfile.changePassword.NewPassword': 'userProfile.changePassword.NewPassword',\r\n\t'userProfile.changePassword.ConfirmPassword': 'userProfile.changePassword.ConfirmPassword',\r\n\t'userProfile.changePassword.successful': 'userProfile.changePassword.successful',\r\n\t'userProfile.changePassword.errors.fieldRequired': 'userProfile.changePassword.errors.fieldRequired',\r\n\t'userProfile.changePassword.errors.passwordsNotMatch': 'userProfile.changePassword.errors.passwordsNotMatch',\r\n\t'userProfile.cookies.title': 'userProfile.cookies.title',\r\n\t'userProfile.cookies.necessary': 'userProfile.cookies.necessary',\r\n\t'userProfile.cookies.preferences': 'userProfile.cookies.preferences',\r\n\t'userProfile.cookies.statistics': 'userProfile.cookies.statistics',\r\n\t'userProfile.cookies.marketing': 'userProfile.cookies.marketing',\r\n\t'userProfile.userInformation.heading': 'userProfile.userInformation.heading',\r\n\t'userProfile.userInformation.firstName': 'userProfile.userInformation.firstName',\r\n\t'userProfile.userInformation.lastName': 'userProfile.userInformation.lastName',\r\n\t'userProfile.userInformation.email': 'userProfile.userInformation.email',\r\n\t'userProfile.userInformation.phone': 'userProfile.userInformation.phone',\r\n\t'userProfile.userInformation.errors.fieldRequired': 'userProfile.userInformation.errors.fieldRequired',\r\n\t'userProfile.userInformation.errors.email': 'userProfile.userInformation.errors.email',\r\n\t'userProfile.userInformation.errors.phone': 'userProfile.userInformation.errors.phone',\r\n\t'userProfile.userInformation.errors.firstNameToLong': 'userProfile.userInformation.errors.firstNameToLong',\r\n\t'userProfile.userInformation.errors.lastNameToLong': 'userProfile.userInformation.errors.lastNameToLong',\r\n\t'userProfile.userInformation.errors.firstNameWrongCharacters': 'userProfile.userInformation.errors.firstNameWrongCharacters',\r\n\t'userProfile.userInformation.errors.lastNameWrongCharacters': 'userProfile.userInformation.errors.lastNameWrongCharacters',\r\n\t'userProfile.userInformation.errors.incorrectValue': 'userProfile.userInformation.errors.incorrectValue',\r\n\t'userProfile.marketingConsents.heading': 'userProfile.marketingConsents.heading',\r\n\t'userProfile.marketingConsents.discounts': 'userProfile.marketingConsents.discounts',\r\n\t'userProfile.marketingConsents.SMS': 'userProfile.marketingConsents.SMS',\r\n\t'userProfile.marketingConsents.email': 'userProfile.marketingConsents.email',\r\n\t'userProfile.marketingConsents.newsletter': 'userProfile.marketingConsents.newsletter',\r\n\t'userProfile.marketingConsents.reviews': 'userProfile.marketingConsents.reviews',\r\n\t'userProfile.marketingConsents.relationship': 'userProfile.marketingConsents.relationship',\r\n\t'userProfile.marketingConsents.abandonedCarts': 'userProfile.marketingConsents.abandonedCarts',\r\n\t'userProfile.marketingConsents.errors.serviceUnavailable': 'userProfile.marketingConsents.errors.serviceUnavailable',\r\n\t'userProfile.marketingConsents.errors.updateFailed': 'userProfile.marketingConsents.errors.updateFailed',\r\n\t'userProfile.addresses.myAddresses': 'userProfile.addresses.myAddresses',\r\n\t'userProfile.addresses.addNewAddress': 'userProfile.addresses.addNewAddress',\r\n\t'userProfile.orderHistory.emptyTitle': 'userProfile.orderHistory.emptyTitle',\r\n\t'userProfile.orderHistory.emptySubtitle1': 'userProfile.orderHistory.emptySubtitle1',\r\n\t'userProfile.orderHistory.emptySubtitle2': 'userProfile.orderHistory.emptySubtitle2',\r\n\t'userProfile.orderHistory.emptyButton': 'userProfile.orderHistory.emptyButton',\r\n\t'userProfile.orderHistory.noConnectionTitle': 'userProfile.orderHistory.noConnectionTitle',\r\n\t'userProfile.orderHistory.noConnectionSubtitle1': 'userProfile.orderHistory.noConnectionSubtitle1',\r\n\t'userProfile.orderHistory.noConnectionSubtitle2': 'userProfile.orderHistory.noConnectionSubtitle2',\r\n\t'userProfile.orderHistory.orderNumber': 'userProfile.orderHistory.orderNumber',\r\n\t'userProfile.orderHistory.orderDate': 'userProfile.orderHistory.orderDate',\r\n\t'userProfile.orderHistory.package': 'userProfile.orderHistory.package',\r\n\t'userProfile.orderHistory.of': 'userProfile.orderHistory.of',\r\n\t'userProfile.orderHistory.send': 'userProfile.orderHistory.send',\r\n\t'userProfile.orderHistory.packageTracking': 'userProfile.orderHistory.packageTracking',\r\n\t'userProfile.orderHistory.statusText': 'userProfile.orderHistory.statusText',\r\n\t'userProfile.orderHistory.cannotFindOrder': 'userProfile.orderHistory.cannotFindOrder',\r\n\t'userProfile.orderHistory.prescriptionHistory': 'userProfile.orderHistory.prescriptionHistory',\r\n\t'userProfile.orderHistory.quantity': 'userProfile.orderHistory.quantity',\r\n\t'userProfile.orderHistory.paging.firstPage': 'userProfile.orderHistory.paging.firstPage',\r\n\t'userProfile.orderHistory.paging.previousPage': 'userProfile.orderHistory.paging.previousPage',\r\n\t'userProfile.orderHistory.paging.nextPage': 'userProfile.orderHistory.paging.nextPage',\r\n\t'userProfile.orderHistory.orderStatus.processing': 'userProfile.orderHistory.orderStatus.processing',\r\n\t'userProfile.orderHistory.orderStatus.unknown': 'userProfile.orderHistory.orderStatus.unknown',\r\n\t'userProfile.orderHistory.orderStatus.created': 'userProfile.orderHistory.orderStatus.created',\r\n\t'userProfile.orderHistory.orderStatus.backorder': 'userProfile.orderHistory.orderStatus.backorder',\r\n\t'userProfile.orderHistory.orderStatus.delivered': 'userProfile.orderHistory.orderStatus.delivered',\r\n\t'userProfile.orderHistory.orderStatus.invoiced': 'userProfile.orderHistory.orderStatus.invoiced',\r\n\t'userProfile.orderHistory.orderStatus.confirmed': 'userProfile.orderHistory.orderStatus.confirmed',\r\n\t'userProfile.orderHistory.orderStatus.sent': 'userProfile.orderHistory.orderStatus.sent',\r\n\t'userProfile.orderHistory.orderStatus.lost': 'userProfile.orderHistory.orderStatus.lost',\r\n\t'userProfile.orderHistory.orderStatus.canceled': 'userProfile.orderHistory.orderStatus.canceled',\r\n\t'userProfile.orderHistory.orderStatus.return': 'userProfile.orderHistory.orderStatus.return',\r\n\t'userProfile.orderHistory.orderLineStatus.processing': 'userProfile.orderHistory.orderLineStatus.processing',\r\n\t'userProfile.orderHistory.orderLineStatus.unknown': 'userProfile.orderHistory.orderLineStatus.unknown',\r\n\t'userProfile.orderHistory.orderLineStatus.created': 'userProfile.orderHistory.orderLineStatus.created',\r\n\t'userProfile.orderHistory.orderLineStatus.backorder': 'userProfile.orderHistory.orderLineStatus.backorder',\r\n\t'userProfile.orderHistory.orderLineStatus.delivered': 'userProfile.orderHistory.orderLineStatus.delivered',\r\n\t'userProfile.orderHistory.orderLineStatus.invoiced': 'userProfile.orderHistory.orderLineStatus.invoiced',\r\n\t'userProfile.orderHistory.orderLineStatus.confirmed': 'userProfile.orderHistory.orderLineStatus.confirmed',\r\n\t'userProfile.orderHistory.orderLineStatus.sent': 'userProfile.orderHistory.orderLineStatus.sent',\r\n\t'userProfile.orderHistory.orderLineStatus.lost': 'userProfile.orderHistory.orderLineStatus.lost',\r\n\t'userProfile.orderHistory.orderLineStatus.canceled': 'userProfile.orderHistory.orderLineStatus.canceled',\r\n\t'userProfile.orderHistory.orderLineStatus.return': 'userProfile.orderHistory.orderLineStatus.return',\r\n\t'userProfile.orderHistory.orderLineType.cancellation': 'userProfile.orderHistory.orderLineType.cancellation',\r\n\t'userProfile.orderHistory.orderLineType.refund': 'userProfile.orderHistory.orderLineType.refund',\r\n\t'userProfile.orderHistory.orderLineType.priceAdjustment': 'userProfile.orderHistory.orderLineType.priceAdjustment',\r\n\t'form.successMessage': 'form.successMessage',\r\n\t'form.errors.required': 'form.errors.required',\r\n\t'form.errors.minLength': 'form.errors.minLength',\r\n\t'form.errors.maxLength': 'form.errors.maxLength',\r\n\t'form.errors.sameValueAs': 'form.errors.sameValueAs',\r\n\t'form.errors.badRequest': 'form.errors.badRequest',\r\n\t'form.errors.email': 'form.errors.email',\r\n\t'form.buttons.confirm': 'form.buttons.confirm',\r\n\t'form.buttons.cancel': 'form.buttons.cancel',\r\n\t'form.show': 'form.show',\r\n\t'form.requiredFields': 'form.requiredFields',\r\n\t'cheapestForFreeDiscount.for': 'cheapestForFreeDiscount.for',\r\n\t'productDiscount.upTo': 'productDiscount.upTo',\r\n\t'contentName.checkout': 'contentName.checkout',\r\n\t'contentName.search': 'contentName.search',\r\n\t'contentName.home': 'contentName.home',\r\n\t'contentName.error': 'contentName.error',\r\n\t'contentName.newsletter.unsubscribe': 'contentName.newsletter.unsubscribe',\r\n\t'enum.infoBanner.none': 'enum.infoBanner.none',\r\n\t'enum.infoBanner.newItem': 'enum.infoBanner.newItem',\r\n\t'enum.infoBanner.vegan': 'enum.infoBanner.vegan',\r\n\t'enum.infoBanner.bestseller': 'enum.infoBanner.bestseller',\r\n\t'enum.infoBanner.lowPrice1': 'enum.infoBanner.lowPrice1',\r\n\t'enum.infoBanner.lowPrice2': 'enum.infoBanner.lowPrice2',\r\n\t'enum.infoBanner.goodPurchase1': 'enum.infoBanner.goodPurchase1',\r\n\t'enum.infoBanner.goodPurchase2': 'enum.infoBanner.goodPurchase2',\r\n\t'enum.ProductListVariant.GridWithSwiper': 'enum.ProductListVariant.GridWithSwiper',\r\n\t'enum.ProductListVariant.Horizontal': 'enum.ProductListVariant.Horizontal',\r\n\t'enum.ProductListVariant.GridWithoutSwiper': 'enum.ProductListVariant.GridWithoutSwiper',\r\n\t'enum.BannerBackgroundVariant.Pink': 'enum.BannerBackgroundVariant.Pink',\r\n\t'enum.BannerBackgroundVariant.PinkWithRedBorderInside': 'enum.BannerBackgroundVariant.PinkWithRedBorderInside',\r\n\t'enum.BannerBackgroundVariant.PinkWithBlackBorderInside': 'enum.BannerBackgroundVariant.PinkWithBlackBorderInside',\r\n\t'enum.BannerBackgroundVariant.Blue': 'enum.BannerBackgroundVariant.Blue',\r\n\t'enum.BannerBackgroundVariant.BlueWithBlackBorderInside': 'enum.BannerBackgroundVariant.BlueWithBlackBorderInside',\r\n\t'enum.BannerBackgroundVariant.WhiteWithRedBorder': 'enum.BannerBackgroundVariant.WhiteWithRedBorder',\r\n\t'enum.textBannerBackgroundVariant.Pink': 'enum.textBannerBackgroundVariant.Pink',\r\n\t'enum.textBannerBackgroundVariant.Blue': 'enum.textBannerBackgroundVariant.Blue',\r\n\t'enum.textBannerBackgroundVariant.Red': 'enum.textBannerBackgroundVariant.Red',\r\n\t'enum.textBannerBackgroundVariant.Black': 'enum.textBannerBackgroundVariant.Black',\r\n\t'enum.textColor.black': 'enum.textColor.black',\r\n\t'enum.textColor.white': 'enum.textColor.white',\r\n\t'enum.linkListColumnVariant.twoColumns': 'enum.linkListColumnVariant.twoColumns',\r\n\t'enum.linkListColumnVariant.fourColumns': 'enum.linkListColumnVariant.fourColumns',\r\n\t'enum.linkListBackgroundVariant.Grey': 'enum.linkListBackgroundVariant.Grey',\r\n\t'enum.linkListBackgroundVariant.Pink': 'enum.linkListBackgroundVariant.Pink',\r\n\t'enum.linkListBackgroundVariant.Blue': 'enum.linkListBackgroundVariant.Blue',\r\n\t'enum.textHeroBackgroundVariant.Pink': 'enum.textHeroBackgroundVariant.Pink',\r\n\t'enum.textHeroBackgroundVariant.pinkWithRedBorderInside': 'enum.textHeroBackgroundVariant.pinkWithRedBorderInside',\r\n\t'enum.textHeroBackgroundVariant.Black': 'enum.textHeroBackgroundVariant.Black',\r\n\t'enum.IdentityErrorCode.DefaultError': 'enum.IdentityErrorCode.DefaultError',\r\n\t'enum.IdentityErrorCode.PasswordMismatch': 'enum.IdentityErrorCode.PasswordMismatch',\r\n\t'enum.IdentityErrorCode.PasswordTooShort': 'enum.IdentityErrorCode.PasswordTooShort',\r\n\t'enum.IdentityErrorCode.PasswordRequiresDigit': 'enum.IdentityErrorCode.PasswordRequiresDigit',\r\n\t'enum.IdentityErrorCode.PasswordRequiresLower': 'enum.IdentityErrorCode.PasswordRequiresLower',\r\n\t'enum.IdentityErrorCode.PasswordRequiresUpper': 'enum.IdentityErrorCode.PasswordRequiresUpper',\r\n\t'enum.ImageSize.Size1920x240': 'enum.ImageSize.Size1920x240',\r\n\t'enum.ImageSize.Size1920x400': 'enum.ImageSize.Size1920x400',\r\n\t'enum.ImageSize.Size1260x400': 'enum.ImageSize.Size1260x400',\r\n\t'newsletter.AddedToRecipientList': 'newsletter.AddedToRecipientList',\r\n\t'newsletter.RemovedFromUnsubscribedList': 'newsletter.RemovedFromUnsubscribedList',\r\n\t'newsletter.RecipientIsEitherBlacklistedOrExceededBounceLimit': 'newsletter.RecipientIsEitherBlacklistedOrExceededBounceLimit',\r\n\t'newsletter.AlreadySubscribed': 'newsletter.AlreadySubscribed',\r\n\t'newsletter.ServerError': 'newsletter.ServerError',\r\n\t'newsletter.subscriptionConfirmed': 'newsletter.subscriptionConfirmed',\r\n\t'newsletter.backToMainPage': 'newsletter.backToMainPage',\r\n\t'newsletter.SignUpAgain': 'newsletter.SignUpAgain',\r\n\t'newsletter.UnsubscribeReasonNotSelected': 'newsletter.UnsubscribeReasonNotSelected',\r\n\t'newsletter.send': 'newsletter.send',\r\n\t'newsletter.EmailPlaceholder': 'newsletter.EmailPlaceholder',\r\n\t'newsletter.SignUp': 'newsletter.SignUp',\r\n\t'newsletter.LackOfConsent': 'newsletter.LackOfConsent',\r\n\t'newsletter.InvalidEmail': 'newsletter.InvalidEmail',\r\n\t'newsletter.UnexpectedError': 'newsletter.UnexpectedError',\r\n\t'newsletter.UnknownError': 'newsletter.UnknownError',\r\n\t'newsletter.DidYouMean': 'newsletter.DidYouMean',\r\n\t'newsletter.AreYouSure': 'newsletter.AreYouSure',\r\n\t'productNotifications.title': 'productNotifications.title',\r\n\t'productNotifications.subtitle': 'productNotifications.subtitle',\r\n\t'emailSuggestion.header': 'emailSuggestion.header',\r\n\t'emailSuggestion.incorrectAddress': 'emailSuggestion.incorrectAddress',\r\n\t'emailSuggestion.didYouMeanToUse': 'emailSuggestion.didYouMeanToUse',\r\n\t'emailSuggestion.withSuggestionRejectButton': 'emailSuggestion.withSuggestionRejectButton',\r\n\t'emailSuggestion.withoutSuggestionRejectButton': 'emailSuggestion.withoutSuggestionRejectButton',\r\n\t'emailSuggestion.withSuggestionAcceptButton': 'emailSuggestion.withSuggestionAcceptButton',\r\n\t'emailSuggestion.withoutSuggestionAcceptButton': 'emailSuggestion.withoutSuggestionAcceptButton',\r\n\t'emailSuggestion.areYouSure': 'emailSuggestion.areYouSure',\r\n\t'powerReviews.writeAReview': 'powerReviews.writeAReview',\r\n\t'powerReviews.reviewYourPurchase': 'powerReviews.reviewYourPurchase',\r\n\t'klarna.orderNumber': 'klarna.orderNumber',\r\n\t'klarna.refund': 'klarna.refund',\r\n\t'klarna.invoiceId': 'klarna.invoiceId',\r\n\t'klarna.shipment': 'klarna.shipment',\r\n\t'klarna.rxLineItemName': 'klarna.rxLineItemName',\r\n\t'klarna.otcLineItemName': 'klarna.otcLineItemName',\r\n\t'klarna.tgLineItemName': 'klarna.tgLineItemName',\r\n\t'errorMessageBar.close': 'errorMessageBar.close',\r\n\t'errorMessageBar.defaultMessage': 'errorMessageBar.defaultMessage',\r\n\t'bankId.yourSecureSession': 'bankId.yourSecureSession',\r\n\t'prescriptionHistory.downloadPrescriptionHistory': 'prescriptionHistory.downloadPrescriptionHistory',\r\n}\r\nexport var translations : ITranslations;\r\nexport function setTranslations(languageTranslations: ITranslations) {\r\n\ttranslations = languageTranslations;\r\n}\r\nexport function getTranslation(translationPath: string, args: any[] = []): string {\r\n\tconst trans: any = translations;\r\n\treturn format(trans ? trans[translationPath] : '', args);\r\n}\r\nexport function getTranslationWithFallback(translationPath: string, fallback: string, args: any[] = []): string {\r\n\tconst trans: any = translations;\r\n\treturn format((trans && trans[translationPath]) ? trans[translationPath] : fallback, args);\r\n}\r\nfunction format(text: string, args: any[]) {\r\n\tif (!text || !args?.length) {\r\n\t\treturn text;\r\n\t}\r\n\treturn text.replace(/{(\\d+)}/g, (match, number) => typeof args[number] != 'undefined' ? args[number] : match);\r\n}\r\ndeclare var global: any;\r\nglobal.setTranslations = setTranslations;\r\n","import * as React from 'react';\r\n\r\nimport { isMobile } from '../IsMobile';\r\n\r\ninterface TouchSwiperProps {\r\n readonly children: React.ReactNode;\r\n readonly onActiveItemsChange?: (firstIndex: number, lastIndex: number) => void;\r\n readonly lastVisibleElementPadding?: number;\r\n readonly onlyOnMobile?: boolean;\r\n}\r\n\r\ninterface TouchSwiperState {\r\n readonly leftPosition: number;\r\n readonly touchInitialPositionX: number;\r\n readonly touchCurrentPositionX: number;\r\n readonly touchCurrentPositionY: number;\r\n readonly swipeEnabled: boolean;\r\n readonly elementsContainerWidth: number;\r\n readonly scrollLock: boolean;\r\n readonly swipeLock: boolean;\r\n}\r\n\r\nclass TouchSwiper extends React.Component {\r\n state = {\r\n leftPosition: 0,\r\n touchInitialPositionX: 0,\r\n touchCurrentPositionX: 0,\r\n touchCurrentPositionY: 0,\r\n swipeEnabled: false,\r\n elementsContainerWidth: 0,\r\n scrollLock: false,\r\n swipeLock: false\r\n };\r\n\r\n breakpoints = [0];\r\n elementsWidth: number[] = [];\r\n containerRef = React.createRef();\r\n wrapperRef = React.createRef();\r\n screenWidth = -1;\r\n\r\n componentDidMount = () => {\r\n this.initElementsArrays();\r\n\r\n if (this.props.onActiveItemsChange) this.props.onActiveItemsChange(0, this.getLastVisibleElementIndex(0));\r\n\r\n window.addEventListener('touchmove', this.lockScrollingVertically, {\r\n passive: false\r\n });\r\n window.addEventListener('resize', this.handleResize);\r\n window.addEventListener('load', this.initElementsArrays);\r\n this.screenWidth = window.innerWidth;\r\n };\r\n\r\n componentWillUnmount = () => {\r\n window.removeEventListener('touchmove', this.lockScrollingVertically);\r\n window.removeEventListener('resize', this.handleResize);\r\n window.removeEventListener('load', this.initElementsArrays);\r\n };\r\n\r\n componentDidUpdate(prevProps: TouchSwiperProps) {\r\n if (React.Children.count(prevProps.children) !== React.Children.count(this.props.children)) {\r\n this.initElementsArrays();\r\n }\r\n }\r\n\r\n private lockScrollingVertically = (e: TouchEvent) => {\r\n if (this.state.scrollLock) {\r\n e.preventDefault();\r\n }\r\n };\r\n\r\n private initElementsArrays = () => {\r\n if (this.containerRef.current) {\r\n const childrenLength = this.containerRef.current.children.length;\r\n this.breakpoints = [0];\r\n this.elementsWidth = [];\r\n\r\n for (let i = 0; i < childrenLength; i++) {\r\n const width = this.getElementWidth(this.containerRef.current.children[i] as HTMLElement);\r\n this.breakpoints.push(width + this.breakpoints[this.breakpoints.length - 1]);\r\n this.elementsWidth.push(width);\r\n }\r\n\r\n this.adjustBreakpoints();\r\n\r\n this.setState({\r\n elementsContainerWidth: this.containerRef.current.offsetWidth\r\n });\r\n }\r\n };\r\n\r\n private getElementWidth = (element: HTMLElement): number => {\r\n const width = element.offsetWidth;\r\n const styles = window.getComputedStyle(element);\r\n const marginLeft = parseFloat(styles.marginLeft) || 0;\r\n const marginRight = parseFloat(styles.marginRight) || 0;\r\n return marginLeft + width + marginRight;\r\n };\r\n\r\n private adjustBreakpoints = () => {\r\n const elementsTotalWidth = this.getElementsTotalWidth();\r\n const wrapperWidth = this.getWrapperWidth();\r\n\r\n if (elementsTotalWidth > wrapperWidth) {\r\n const lastBreakpoint = elementsTotalWidth - wrapperWidth;\r\n this.breakpoints = this.breakpoints.filter((x) => x < lastBreakpoint);\r\n this.breakpoints.push(lastBreakpoint);\r\n } else {\r\n this.breakpoints = [];\r\n }\r\n };\r\n\r\n private handleResize = () => {\r\n if (window.innerWidth !== this.screenWidth) {\r\n this.screenWidth = window.innerWidth;\r\n this.setState({ leftPosition: 0 });\r\n this.initElementsArrays();\r\n\r\n if (this.props.onActiveItemsChange) this.props.onActiveItemsChange(0, this.getLastVisibleElementIndex(0));\r\n }\r\n };\r\n\r\n private getClosestBreakpoint = (): number => {\r\n let closestBreakpoint = 0;\r\n let closestDistance: number | null = null;\r\n\r\n this.breakpoints.forEach((breakpoint) => {\r\n const distance = Math.abs(-breakpoint - this.state.leftPosition);\r\n\r\n if (closestDistance === null) {\r\n closestBreakpoint = breakpoint;\r\n closestDistance = distance;\r\n } else {\r\n if (distance < closestDistance) {\r\n closestBreakpoint = breakpoint;\r\n closestDistance = distance;\r\n }\r\n }\r\n });\r\n\r\n return closestBreakpoint;\r\n };\r\n\r\n private getLastVisibleElementIndex = (startIndex: number): number => {\r\n const swiperWidth = this.getWrapperWidth();\r\n let full = false;\r\n let lastIndex = startIndex;\r\n let totalWidth = this.elementsWidth[startIndex];\r\n const padding = this.getLastVisibleElementPadding();\r\n\r\n for (let i = startIndex; i < this.elementsWidth.length; i++) {\r\n if (totalWidth + this.elementsWidth[i] - padding <= swiperWidth && !full) {\r\n lastIndex++;\r\n totalWidth += this.elementsWidth[i];\r\n } else {\r\n full = true;\r\n }\r\n }\r\n\r\n return lastIndex || startIndex;\r\n };\r\n\r\n private getLastVisibleElementPadding = (): number => {\r\n if (this.props.lastVisibleElementPadding) return this.props.lastVisibleElementPadding;\r\n else return 0;\r\n };\r\n\r\n private getElementsTotalWidth = (): number => {\r\n return this.elementsWidth.reduce((a, b) => a + b, 0);\r\n };\r\n\r\n private updatePosition = (difference: number, clientX: number) => {\r\n const closestBreakpointIndex = this.breakpoints.indexOf(this.getClosestBreakpoint());\r\n\r\n this.setState((prevState) => ({\r\n leftPosition: prevState.leftPosition - difference,\r\n touchCurrentPositionX: clientX\r\n }));\r\n\r\n if (this.props.onActiveItemsChange) this.props.onActiveItemsChange(closestBreakpointIndex, this.getLastVisibleElementIndex(closestBreakpointIndex));\r\n };\r\n\r\n private handleTouchMove = (e: React.TouchEvent) => {\r\n const { clientX, clientY } = e.touches && e.touches[0] ? e.touches[0] : { clientX: 0, clientY: 0 };\r\n const scrollLockOffset = 6;\r\n\r\n if (this.state.swipeEnabled) {\r\n const differenceX = this.state.touchCurrentPositionX - clientX;\r\n const differenceY = this.state.touchCurrentPositionY - clientY;\r\n\r\n if (!this.state.swipeLock && !this.state.scrollLock) {\r\n if (Math.abs(differenceX) > scrollLockOffset) {\r\n this.setState({ scrollLock: true });\r\n } else if (Math.abs(differenceY) > scrollLockOffset) {\r\n this.setState({ swipeLock: true });\r\n }\r\n }\r\n\r\n const lastBreakpointIndex = this.breakpoints.length - 1;\r\n const lastBreakpoint = -this.breakpoints[lastBreakpointIndex];\r\n\r\n if (this.state.leftPosition - differenceX < 0 && this.state.leftPosition - differenceX > lastBreakpoint && !this.state.swipeLock) {\r\n this.updatePosition(differenceX, clientX);\r\n }\r\n }\r\n };\r\n\r\n private handleTouchStart = (e: React.TouchEvent) => {\r\n if ((this.props.onlyOnMobile ? isMobile() : true) && e.touches && e.touches[0]) {\r\n this.setState({\r\n touchInitialPositionX: e.touches[0].clientX,\r\n touchCurrentPositionX: e.touches[0].clientX,\r\n touchCurrentPositionY: e.touches[0].clientY,\r\n swipeEnabled: true\r\n });\r\n }\r\n };\r\n\r\n private handleTouchEnd = () => {\r\n const closestBreakpoint = -this.getClosestBreakpoint();\r\n const closestBreakpointIndex = this.breakpoints.indexOf(-closestBreakpoint);\r\n const direction = this.state.touchInitialPositionX - this.state.touchCurrentPositionX;\r\n let snapToBreakpoint = 0;\r\n\r\n if (direction > 0) {\r\n // swiping right\r\n if (closestBreakpoint < this.state.leftPosition || this.state.swipeLock) {\r\n snapToBreakpoint = closestBreakpoint;\r\n } else if (!this.state.swipeLock) {\r\n snapToBreakpoint =\r\n this.breakpoints[closestBreakpointIndex + 1] !== undefined ? -this.breakpoints[closestBreakpointIndex + 1] : closestBreakpoint;\r\n }\r\n } else {\r\n // swiping left\r\n if (closestBreakpoint < this.state.leftPosition && !this.state.swipeLock) {\r\n snapToBreakpoint =\r\n this.breakpoints[closestBreakpointIndex - 1] !== undefined ? -this.breakpoints[closestBreakpointIndex - 1] : closestBreakpoint;\r\n } else {\r\n snapToBreakpoint = closestBreakpoint;\r\n }\r\n }\r\n\r\n const snapToBreakpointIndex = this.breakpoints.indexOf(-snapToBreakpoint);\r\n\r\n if (this.props.onActiveItemsChange) this.props.onActiveItemsChange(snapToBreakpoint, this.getLastVisibleElementIndex(snapToBreakpointIndex));\r\n\r\n this.setState({\r\n swipeEnabled: false,\r\n leftPosition: snapToBreakpoint,\r\n touchInitialPositionX: 0,\r\n touchCurrentPositionX: 0,\r\n touchCurrentPositionY: 0,\r\n scrollLock: false,\r\n swipeLock: false\r\n });\r\n };\r\n\r\n private getWrapperWidth = (): number => {\r\n return this.wrapperRef.current ? this.wrapperRef.current.offsetWidth + 1 : 0;\r\n };\r\n\r\n render() {\r\n const { children } = this.props;\r\n const { swipeEnabled, leftPosition } = this.state;\r\n\r\n return (\r\n <>\r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default TouchSwiper;\r\n","import * as React from 'react';\r\nimport { ChangeEvent, FocusEvent, KeyboardEvent } from 'react';\r\n\r\ninterface InputProps {\r\n id?: string;\r\n interval?: number;\r\n value: string | number;\r\n className?: string;\r\n disabled?: boolean;\r\n type: string;\r\n placeholder?: string;\r\n onAfterChange: () => void;\r\n onBlur?: () => void;\r\n onChange: (value: string) => void;\r\n onFocus?: (e: FocusEvent) => void;\r\n onChangeCondition?: (value: string) => boolean;\r\n onKeyDown?: () => void;\r\n onClick?: () => void;\r\n onCancel?: () => void;\r\n tabIndex?: number;\r\n autocomplete?: string;\r\n}\r\n\r\nexport class Input extends React.Component {\r\n private interval: number;\r\n private timer: NodeJS.Timeout | undefined;\r\n\r\n constructor(props: InputProps) {\r\n super(props);\r\n\r\n this.interval = props.interval ?? 500;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.timer) clearTimeout(this.timer);\r\n }\r\n\r\n onChange = (event: ChangeEvent) => {\r\n if (this.timer) clearTimeout(this.timer);\r\n const value = event.target.value;\r\n\r\n if (!this.props.onChangeCondition || this.props.onChangeCondition(value)) {\r\n this.props.onChange(value);\r\n this.timer = setTimeout(this.triggerChange, this.interval);\r\n }\r\n };\r\n\r\n onKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n }\r\n } else if (event.key === 'Enter') {\r\n this.props.onKeyDown ? this.props.onKeyDown() : this.props.onAfterChange();\r\n }\r\n };\r\n\r\n triggerChange = () => {\r\n if (this.props.value) this.props.onAfterChange();\r\n };\r\n\r\n onBlur = () => {\r\n if (this.timer) {\r\n clearTimeout(this.timer);\r\n }\r\n\r\n this.props.onAfterChange();\r\n\r\n if (this.props.onBlur) {\r\n this.props.onBlur();\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\ninterface IProps {\r\n readonly label: string | React.ReactElement;\r\n readonly children: React.ReactNode;\r\n readonly className?: string;\r\n readonly onClick?: (e: HTMLButtonElement | null) => void;\r\n}\r\n\r\nconst AccordionItem = ({ children }: IProps) => {\r\n return <>{children};\r\n};\r\n\r\nexport default AccordionItem;\r\n","import classnames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { ButtonSize, ButtonVariant } from './Button';\r\n\r\nexport interface IButtonProps {\r\n children: React.ReactNode;\r\n size: ButtonSize;\r\n variant?: ButtonVariant;\r\n disabled?: boolean;\r\n className?: string;\r\n href: string;\r\n target?: string;\r\n rel?: string;\r\n onClick?: () => void;\r\n}\r\n\r\nexport const ButtonLink = (props: IButtonProps) => {\r\n const buttonClassNames = classnames(\r\n 'Button',\r\n props.disabled && 'Button--Disabled',\r\n `Button--${ButtonSize[props.size]}`,\r\n `Button--${ButtonVariant[props.variant || ButtonVariant.Primary]}`,\r\n props.className\r\n );\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n","export const maxQuantity = 999;\r\n\r\nexport const errorAdditionalInfo = (error: string, maxQuantity: number, minQuantity: number): string => {\r\n if (error === 'AdjustedQuantityByMaxQuantity' || error === 'AdjustedQuantityByBackorderQuantity') return ` ${maxQuantity}`;\r\n if (error === 'AdjustedQuantityByAvailableQuantity') return ` ${maxQuantity}`;\r\n if (error === 'AdjustedQuantityByMinQuantity') return ` ${minQuantity}`;\r\n\r\n return '';\r\n};\r\n","import React from 'react';\r\n\r\nimport { ButtonLink, IButtonProps } from '../Buttons/ButtonLink';\r\nimport { NavigationTracker, NavigationTrackerProps } from './NavigationTracker';\r\n\r\nexport const NavigationTrackerButtonLink = ({ disableTracking, source, href, onClick, ...props }: NavigationTrackerProps & IButtonProps) => (\r\n disableTracking={disableTracking} source={source} href={href} onClick={onClick}>\r\n {(href, onClick) => }\r\n \r\n);\r\n","export class EventNames {\r\n static readonly CartChanged: string = 'CartChanged';\r\n static readonly CartValidated: string = 'CartValidated';\r\n static readonly CartTotalQuantityChanged: string = 'CartTotalQuantityChanged';\r\n static readonly ToggleCart: string = 'ToggleCart';\r\n static readonly ShowUpdatedCart: string = 'ShowUpdatedCart';\r\n static readonly RequestForUpdatingCart: string = 'RequestForUpdatingCart';\r\n static readonly CloseSearch: string = 'CloseSearch';\r\n static readonly CloseNavigation: string = 'CloseNavigation';\r\n static readonly HideHeader: string = 'HideHeader';\r\n static readonly ScrollLockChange: string = 'ScrollLockChange';\r\n static readonly ErrorOccured: string = 'ErrorOccured';\r\n static readonly CartMerged: string = 'CartMerged';\r\n static readonly Search: string = 'Search';\r\n static readonly ResetSearch: string = 'ResetSearch';\r\n static readonly RefreshPorterBuddy: string = 'RefreshPorterBuddy';\r\n static readonly RefreshPostNord: string = 'RefreshPostNord';\r\n static readonly RefreshPostNHome: string = 'RefreshPostNHome';\r\n static readonly RefreshHeltHjem: string = 'RefreshHeltHjem';\r\n static readonly SessionExpired: string = 'SessionExpired';\r\n static readonly RefreshShippingInfo: string = 'RefreshShippingInfo';\r\n static readonly DeliveryProps: string = 'DeliveryProps';\r\n static readonly ActionRequiresLogin: string = 'ActionRequiresLogin';\r\n static readonly FatalError: string = 'FatalError';\r\n static readonly AddedFirstFavourite: string = 'AddedFirstFavourite';\r\n static readonly RxItemsRemoved: string = 'RxItemsRemoved';\r\n static readonly UserDetailsLoaded: string = 'UserDetailsLoaded';\r\n static readonly RecommendationsLoaded: string = 'RecommendationsLoaded';\r\n static readonly CartFromDifferentWarehouse: string = 'CardLoadedFromDifferentWarehouse';\r\n static readonly IframeFocused: string = 'IframeFocused';\r\n static readonly RxRemovedFromCart: string = 'RxRemovedFromCart';\r\n static readonly RxLogoutRequest: string = 'RxLogoutRequest';\r\n static readonly RxLoginRequest: string = 'RxLoginRequest';\r\n static readonly EComLogoutRequest: string = 'EComLogoutRequest';\r\n static readonly HideAlertRibbon: string = 'HideAlertRibbon';\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum CheckoutStep {\r\n\tAll = 0,\r\n\tSummary = 1,\r\n\tAddress = 2,\r\n\tDelivery = 3,\r\n\tPayment = 4,\r\n\tSelectPaymentMethod = 5\r\n}\r\n","import { EventNames } from '../../ReactComponents/EventNames';\r\n\r\nexport class RecommendationsEventNameResolver {\r\n public static GetEventName(widgetName: string): string {\r\n return EventNames.RecommendationsLoaded + widgetName;\r\n }\r\n}\r\n","export const capitalizeFirstLetter = (text: string) => {\r\n if (text && text.length > 0) {\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n } else {\r\n return text;\r\n }\r\n};\r\n","import React from 'react';\r\n\r\nexport interface ProductRatingProps {\r\n rating?: number;\r\n}\r\n\r\nconst maxRating = 10;\r\n\r\nexport const ProductRating = ({ rating }: ProductRatingProps) => {\r\n const stars = [];\r\n if (rating) {\r\n const fullStars = Math.floor(rating / 2);\r\n const showHalfStar = rating % 2 === 1;\r\n const emptyStars = Math.floor((maxRating - rating) / 2);\r\n let key = 0;\r\n\r\n stars.push(\r\n [...Array(fullStars)].map(() => (\r\n {'Rating\r\n ))\r\n );\r\n\r\n if (showHalfStar)\r\n stars.push({'Rating);\r\n\r\n stars.push(\r\n [...Array(emptyStars)].map(() => (\r\n {'Rating\r\n ))\r\n );\r\n }\r\n\r\n return
{stars}
;\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { useRef } from 'react';\r\nimport VisibilitySensor from 'react-visibility-sensor';\r\n\r\nimport { DiscountType } from '../../Blocks/DiscountType.csharp';\r\nimport { DiscountVariant } from '../../Blocks/DiscountVariant.csharp';\r\nimport { ProductDiscountViewModel } from '../../Blocks/ProductDiscount/ProductDiscountViewModel.csharp';\r\nimport { PriceViewModel } from '../../Catalog/Product/Price/PriceViewModel.csharp';\r\nimport { ProductBuyingMode } from '../../Components/Availability/ProductBuyingMode.csharp';\r\nimport { FavouriteProductButton } from '../../Customers/Favourites/Components/FavouritesButton/FavouriteProductButton';\r\nimport { ProductAvailabilityNotification } from '../../Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotification/ProductAvailabilityNotification';\r\nimport { ProductAvailabilityNotificationViewType } from '../../Customers/Notifications/ProductAvailability/Components/ProductAvailabilityNotification/ProductAvailabilityNotificationViewType.csharp';\r\nimport { addParameter, ExperimentsParamName, getExperimentAwareUrl, resolveExperiments } from '../../Experimentation/Components/ResolveExperimentId';\r\nimport { ExperimentationEventProductClickDetails } from '../../Experimentation/Models/ExperimentationEventProductClickDetails.csharp';\r\nimport { SearchQueryParamName } from '../../Filtering/Api/TrackEpiFindClick';\r\nimport { ProductSortingType } from '../../Filtering/Sorting/ProductSortingType.csharp';\r\nimport { AddToCartSection } from '../../Purchase/Cart/Modifications/AddItem/Components/AddToCart/AddToCart';\r\nimport { AddToCartMode } from '../../Purchase/Cart/Modifications/AddItem/ViewModel/AddToCartMode.csharp';\r\nimport { post } from '../../ReactComponents/API';\r\nimport { capitalizeFirstLetter } from '../../ReactComponents/CapitalizeFirstLetter';\r\nimport { ProductInfoLabel } from '../../ReactComponents/InfoLabel/ProductInfoLabel';\r\nimport { ProductTopLabel } from '../../ReactComponents/InfoLabel/ProductTopLabel';\r\nimport { isMobile } from '../../ReactComponents/IsMobile';\r\nimport { PriceDisplay } from '../../ReactComponents/PriceDisplay';\r\nimport { ResponsivePicture } from '../../ReactComponents/ResponsivePicture/ResponsivePicture';\r\nimport { GoogleTagManager } from '../../Tracking/GoogleTagManager/GoogleTagManager';\r\nimport { handleClickEvents } from '../../Tracking/GoogleTagManager/HandleClickEvents';\r\nimport { ProductCardProps } from './ProductCardProps.csharp';\r\nimport { ProductCardVariant } from './ProductCardVariant.csharp';\r\nimport { ProductCardViewModel } from './ProductCardViewModel.csharp';\r\nimport { ProductRating } from './ProductRating';\r\n\r\nexport const ProductCard = (props: ProductCardProps) => {\r\n const {\r\n nameInfo,\r\n link,\r\n rxUrl,\r\n price,\r\n promotions,\r\n availability,\r\n picture,\r\n code,\r\n subcategory,\r\n originName,\r\n promotionId,\r\n promotionName,\r\n showSucceededMessageAfterSave,\r\n minQuantity,\r\n maxQuantity,\r\n formConfiguration,\r\n isInPhysicalStoreMode,\r\n warningMessage,\r\n isAgeRestricted,\r\n isOnPrescription,\r\n showFixedLowPriceLabel,\r\n showNewProductLabel,\r\n powerReviewsRating,\r\n recommendationId,\r\n showPromoStar,\r\n showVeganLabel,\r\n showBestsellerLabel,\r\n showGoodPurchaseLabel,\r\n badgeSettings\r\n } = props.model as ProductCardViewModel;\r\n\r\n const hidePowerReviews = props.hidePowerReviews;\r\n\r\n const variant = props.variant != null ? props.variant : ProductCardVariant.Vertical;\r\n const variantModifier = `ProductCard--${ProductCardVariant[variant]}`;\r\n const showOnlyFreeItemBadge = props.variant !== ProductCardVariant.Vertical;\r\n\r\n const productDiscountPromotions = promotions\r\n .filter((promo) => promo.promotionInfo.type == DiscountType.Product)\r\n .map((p) => p.promotionInfo as ProductDiscountViewModel);\r\n\r\n const [wasVisible, setWasVisible] = React.useState(false);\r\n const [productUrl, setProductUrl] = React.useState(link);\r\n const [addToCartUrl, setAddToCartUrl] = React.useState(props.cartItemUrl);\r\n const [experiments, setExperiments] = React.useState([]);\r\n\r\n const productCardRef = useRef(null);\r\n\r\n React.useEffect(() => {\r\n const resolvedExperiments = resolveExperiments(productCardRef.current);\r\n\r\n let productUrl = `${link}`;\r\n let addToCartUrl = `${props.cartItemUrl}`;\r\n\r\n if (recommendationId) {\r\n productUrl = addParameter(productUrl, 'recommendationId', recommendationId);\r\n addToCartUrl = addParameter(addToCartUrl, 'recommendationId', recommendationId);\r\n }\r\n\r\n for (const experiment of resolvedExperiments) {\r\n productUrl = addParameter(productUrl, ExperimentsParamName, experiment);\r\n }\r\n\r\n if (props.model.searchTrackingInfo?.searchQuery) {\r\n productUrl = addParameter(productUrl, SearchQueryParamName, props.model.searchTrackingInfo.searchQuery);\r\n }\r\n\r\n setProductUrl(productUrl);\r\n setAddToCartUrl(addToCartUrl);\r\n setExperiments(resolvedExperiments);\r\n }, [recommendationId]);\r\n\r\n React.useEffect(() => {\r\n wasVisible && GoogleTagManager.productImpression(props.model);\r\n }, [wasVisible]);\r\n\r\n const renderPrice = (price: PriceViewModel, promotions: ProductDiscountViewModel[], variant: ProductCardVariant) => {\r\n const hasPromotions = promotions.length > 0;\r\n const applyStylesForDiscountedPrice = badgeSettings.hidePercentagePromotionBadge || variant !== ProductCardVariant.Vertical;\r\n return (\r\n <>\r\n {hasPromotions && (\r\n
\r\n {renderOriginalPrice(price)}\r\n {variant === ProductCardVariant.Vertical &&\r\n promotions.map((promotion, i) => (\r\n \r\n {promotion.value}\r\n \r\n ))}\r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const renderPriceForMobile = (price: PriceViewModel, promotions: ProductDiscountViewModel[], variant: ProductCardVariant) => {\r\n return (\r\n <>\r\n {renderPrice(price, promotions, variant)}\r\n {renderButton()}\r\n \r\n );\r\n };\r\n\r\n const renderOriginalPrice = (price: PriceViewModel) => {\r\n return (\r\n price.originalPrice != price.price && (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n );\r\n };\r\n\r\n const renderBuyButton = (buttonMode: ProductBuyingMode) => {\r\n if (variant === ProductCardVariant.HorizontalSimple) return;\r\n\r\n let mode: AddToCartMode;\r\n switch (buttonMode) {\r\n case ProductBuyingMode.OnPrescription:\r\n mode = AddToCartMode.Prescription;\r\n break;\r\n case ProductBuyingMode.Active:\r\n mode = AddToCartMode.Default;\r\n break;\r\n default:\r\n mode = AddToCartMode.NotAvailable;\r\n break;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const renderSubscribeForAvailabilityNotificationButton = () => (\r\n \r\n );\r\n\r\n const getCropClassName = (): string => {\r\n let width: number;\r\n let height: number;\r\n\r\n if (picture.responsiveData.shouldUseFocusArea) {\r\n width = picture.responsiveData.focusArea.width;\r\n height = picture.responsiveData.focusArea.height;\r\n } else {\r\n width = picture.responsiveData.width;\r\n height = picture.responsiveData.height;\r\n }\r\n\r\n const ratio = width / height;\r\n\r\n return ratio >= 2 || ratio <= 0.5 ? 'ProductCard__Picture--CropWithSmallPaddings' : 'ProductCard__Picture--Crop';\r\n };\r\n\r\n const onLinkClick = (e: React.MouseEvent) => {\r\n trackExperimentProductClick();\r\n GoogleTagManager.productCardClick(e, props.model, productUrl);\r\n };\r\n\r\n const trackProductClick = () => {\r\n trackExperimentProductClick();\r\n };\r\n\r\n const renderButton = () => {\r\n return (\r\n
\r\n {availability.shouldAllowForAvailabilityNotificationSubscriptions\r\n ? renderSubscribeForAvailabilityNotificationButton()\r\n : renderBuyButton(availability.buyingMode)}\r\n
\r\n );\r\n };\r\n\r\n const trackExperimentProductClick = () => {\r\n if (experiments.length > 0) {\r\n const url = getExperimentAwareUrl(props.experimentProductClickUrl, experiments);\r\n const promotions = props.model.promotions.map((promotion) => promotion.mainInfo);\r\n\r\n const eventDetails: ExperimentationEventProductClickDetails = {\r\n position: props.model.position,\r\n sku: props.model.code,\r\n promotionInfo: promotions.join(),\r\n sortingType: ProductSortingType[props.sortingType ?? -1]\r\n };\r\n\r\n post(url, eventDetails);\r\n }\r\n };\r\n\r\n return (\r\n isVisible && setWasVisible(true)} partialVisibility>\r\n
\r\n \r\n
\r\n {picture && }\r\n \r\n
\r\n
\r\n {variant === ProductCardVariant.Vertical && (\r\n \r\n )}\r\n {nameInfo.mainName &&
{nameInfo.mainName}
}\r\n

\r\n {capitalizeFirstLetter(nameInfo.productHeader2)}, \r\n
\r\n {capitalizeFirstLetter(nameInfo.variantSubheader)}\r\n
\r\n

\r\n {/*{props.model.searchTrackingInfo?.score &&

{props.model.searchTrackingInfo.score}

}*/}\r\n
\r\n
\r\n {props.showFavouritesButton && props.favouritesUrl && !isOnPrescription && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n {!hidePowerReviews && variant === ProductCardVariant.Vertical && (\r\n
\r\n \r\n
\r\n )}\r\n {isMobile() && variant === ProductCardVariant.HorizontalCompact ? (\r\n
{renderPriceForMobile(price, productDiscountPromotions, variant)}
\r\n ) : (\r\n <>\r\n
{renderPrice(price, productDiscountPromotions, variant)}
\r\n {renderButton()}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\ninterface AccordionItemHeaderProps {\r\n readonly label: string | React.ReactElement;\r\n readonly handleOpenItem: (i: number, e: HTMLButtonElement | null) => void;\r\n readonly index: number;\r\n readonly isActive: boolean;\r\n readonly isFocused: boolean;\r\n readonly isExpanded: boolean;\r\n readonly onKeyDown: (e: React.KeyboardEvent) => void;\r\n readonly labelClassName?: string;\r\n readonly activeLabelClassName?: string;\r\n readonly expandedIcon?: React.ReactNode;\r\n readonly collapsedIcon?: React.ReactNode;\r\n}\r\n\r\nexport const AccordionItemHeader = ({\r\n label,\r\n handleOpenItem,\r\n index,\r\n isActive,\r\n isExpanded,\r\n onKeyDown,\r\n isFocused,\r\n activeLabelClassName,\r\n labelClassName,\r\n expandedIcon,\r\n collapsedIcon\r\n}: AccordionItemHeaderProps) => {\r\n const ref = React.useRef(null);\r\n const [isItemActive, setIsItemActive] = React.useState();\r\n\r\n React.useEffect(() => {\r\n if (ref.current && isFocused) {\r\n ref.current.focus();\r\n }\r\n }, [isExpanded, isFocused]);\r\n\r\n React.useEffect(() => {\r\n setIsItemActive(isActive);\r\n }, [isActive]);\r\n\r\n return (\r\n handleOpenItem(index, ref.current)}\r\n aria-expanded={isItemActive}\r\n >\r\n {label}\r\n {isActive ? expandedIcon : collapsedIcon}\r\n \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { Collapse } from 'react-collapse';\r\nimport { Key } from 'ts-key-enum';\r\n\r\nimport { inertHelper } from '../InertHelper';\r\nimport { isMobile } from '../IsMobile';\r\nimport { AccordionItemHeader } from './AccordionItemHeader/AccordionItemHeader';\r\n\r\nexport interface ItemStatus {\r\n readonly isActive: boolean;\r\n readonly isExpanded: boolean;\r\n}\r\n\r\ninterface IAccordionProps {\r\n readonly children: React.ReactNode;\r\n readonly expandedIcon?: React.ReactNode;\r\n readonly collapsedIcon?: React.ReactNode;\r\n readonly allowMultipleItems?: boolean;\r\n readonly showMoreIndicator?: React.ReactNode;\r\n readonly labelClassName?: string;\r\n readonly activeLabelClassName?: string;\r\n readonly itemsStatus?: ItemStatus[];\r\n readonly onActiveItemChanged?: (itemsStatus: ItemStatus[]) => void;\r\n readonly collapsedItemMaxHeight?: number | string;\r\n readonly className?: string;\r\n readonly itemClassName?: string;\r\n readonly enableAutoScrolling?: boolean;\r\n readonly scrollOnlyOnMobile?: boolean;\r\n}\r\n\r\ninterface IAccordionState {\r\n readonly itemsStatus: ItemStatus[];\r\n readonly focusedItemIndex?: number;\r\n readonly itemsHeight: number[];\r\n}\r\n\r\nclass Accordion extends React.Component {\r\n containerRef = React.createRef();\r\n\r\n constructor(props: IAccordionProps) {\r\n super(props);\r\n\r\n this.state = {\r\n itemsStatus: Accordion.getItemsStatus(props),\r\n itemsHeight: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ itemsHeight: this.getItemsHeight() });\r\n }\r\n\r\n static getDerivedStateFromProps(props: IAccordionProps, state: IAccordionState) {\r\n return {\r\n itemsStatus: props.onActiveItemChanged ? Accordion.getItemsStatus(props) : state.itemsStatus\r\n };\r\n }\r\n\r\n static getItemsStatus = (props: IAccordionProps): ItemStatus[] => {\r\n return (\r\n React.Children.map(props.children, (child, i) => {\r\n let isActive = false;\r\n let isExpanded = false;\r\n\r\n if (props.itemsStatus) {\r\n if (props.allowMultipleItems) {\r\n isActive = props.itemsStatus[i] && props.itemsStatus[i].isActive;\r\n } else {\r\n isActive = props.itemsStatus[i].isActive;\r\n }\r\n\r\n isExpanded = props.itemsStatus[i] && props.itemsStatus[i].isExpanded;\r\n }\r\n\r\n return {\r\n isActive: isActive,\r\n isExpanded: isExpanded\r\n };\r\n }) || []\r\n );\r\n };\r\n\r\n private getItemsHeight = () => {\r\n if (this.containerRef.current) {\r\n const items = this.containerRef.current.querySelectorAll('.Accordion__ContentInner');\r\n const itemsHeight: number[] = [];\r\n\r\n Array.prototype.forEach.call(items, (item) => {\r\n itemsHeight.push((item as HTMLElement).offsetHeight);\r\n });\r\n\r\n return itemsHeight;\r\n }\r\n\r\n return [];\r\n };\r\n\r\n private setFocusedItemIndex = (index: number) => {\r\n this.setState({ focusedItemIndex: index });\r\n };\r\n\r\n private scrollToAccordionItem = (index: number) => {\r\n const elements = this.containerRef.current?.getElementsByClassName('Accordion__Item');\r\n if (elements && elements.length > 0) {\r\n const openedElement = elements[index];\r\n\r\n if (!openedElement || (this.props.scrollOnlyOnMobile && !isMobile())) return;\r\n\r\n setTimeout(() => openedElement.scrollIntoView({ behavior: 'smooth' }), 250);\r\n }\r\n };\r\n\r\n private openAccordionItem = (index: number) => {\r\n const newItemsStatus = this.state.itemsStatus.map((itemStatus, i) => {\r\n if (i === index) {\r\n if (this.props.enableAutoScrolling && !itemStatus.isActive) this.scrollToAccordionItem(index);\r\n\r\n return {\r\n isExpanded: itemStatus.isActive || itemStatus.isExpanded,\r\n isActive: !itemStatus.isActive\r\n };\r\n } else {\r\n if (this.props.allowMultipleItems) {\r\n return { ...itemStatus };\r\n } else {\r\n return {\r\n // after reopen, item should be already expanded\r\n isExpanded: itemStatus.isActive || itemStatus.isExpanded,\r\n isActive: false\r\n };\r\n }\r\n }\r\n });\r\n\r\n this.setState({ itemsStatus: newItemsStatus, focusedItemIndex: index });\r\n\r\n if (this.props.onActiveItemChanged) this.props.onActiveItemChanged(newItemsStatus);\r\n };\r\n\r\n private expandItemContent = (index: number) => {\r\n const newItemsStatus = this.state.itemsStatus.map((ItemStatus, i) => {\r\n return i === index ? { ...ItemStatus, isExpanded: true } : ItemStatus;\r\n });\r\n\r\n this.setState({ itemsStatus: newItemsStatus });\r\n if (this.props.onActiveItemChanged) this.props.onActiveItemChanged(newItemsStatus);\r\n };\r\n\r\n private handleControl = (e: React.KeyboardEvent) => {\r\n if (e.key === Key.ArrowDown) {\r\n this.goToNextItem();\r\n e.preventDefault();\r\n } else if (e.key === Key.ArrowUp) {\r\n this.goToPreviousItem();\r\n e.preventDefault();\r\n } else if (e.key === Key.Home) {\r\n this.goToFirstItem();\r\n e.preventDefault();\r\n } else if (e.key === Key.End) {\r\n this.goToLastItem();\r\n e.preventDefault();\r\n }\r\n };\r\n\r\n private goToNextItem = () => {\r\n if (this.state.focusedItemIndex !== undefined && this.state.focusedItemIndex + 1 < this.state.itemsStatus.length) {\r\n this.setFocusedItemIndex(this.state.focusedItemIndex + 1);\r\n } else {\r\n this.setFocusedItemIndex(0);\r\n }\r\n };\r\n\r\n private goToPreviousItem = () => {\r\n if (this.state.focusedItemIndex !== undefined && this.state.focusedItemIndex - 1 >= 0) {\r\n this.setFocusedItemIndex(this.state.focusedItemIndex - 1);\r\n } else {\r\n this.setFocusedItemIndex(this.state.itemsStatus.length - 1);\r\n }\r\n };\r\n\r\n private goToFirstItem = () => {\r\n this.setState({ focusedItemIndex: 0 });\r\n };\r\n\r\n private goToLastItem = () => {\r\n this.setState({ focusedItemIndex: this.state.itemsStatus.length - 1 });\r\n };\r\n\r\n render() {\r\n const {\r\n props: { children, showMoreIndicator, labelClassName, activeLabelClassName, expandedIcon, collapsedIcon, className, itemClassName },\r\n state: { itemsStatus, focusedItemIndex, itemsHeight }\r\n } = this;\r\n\r\n const collapsedItemMaxHeight = this.props.collapsedItemMaxHeight || 200;\r\n\r\n return (\r\n
\r\n {React.Children.map(\r\n children,\r\n // eslint-disable-next-line\r\n (child: any, i: number) =>\r\n child &&\r\n itemsStatus[i] && (\r\n
\r\n {\r\n this.openAccordionItem(index);\r\n child.props.onClick && child.props.onClick(e);\r\n }}\r\n index={i}\r\n isActive={itemsStatus[i].isActive}\r\n isExpanded={itemsStatus[i].isExpanded}\r\n isFocused={focusedItemIndex === i}\r\n onKeyDown={this.handleControl}\r\n labelClassName={classNames(labelClassName, child.props.className)}\r\n activeLabelClassName={activeLabelClassName}\r\n expandedIcon={expandedIcon}\r\n collapsedIcon={collapsedIcon}\r\n />\r\n\r\n \r\n \r\n
{child}
\r\n
\r\n\r\n {showMoreIndicator && (\r\n
\r\n {!itemsStatus[i].isExpanded && itemsStatus[i].isActive && itemsHeight[i] > collapsedItemMaxHeight && (\r\n \r\n )}\r\n
\r\n )}\r\n \r\n
\r\n )\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Accordion;\r\n","import * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { Button, ButtonSize } from '../../ReactComponents/Buttons/Button';\r\nimport { EventNames } from '../../ReactComponents/EventNames';\r\nimport { Modal, ModalButtons, ModalHeading, ModalText } from '../../ReactComponents/Modal/Modal';\r\n\r\nexport const showFatalErrorModal = () => {\r\n window.dispatchEvent(new CustomEvent(EventNames.FatalError));\r\n};\r\n\r\nexport const FatalErrorModal = () => {\r\n const [isVisible, setIsVisible] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(EventNames.FatalError, showModal);\r\n\r\n return () => {\r\n window.removeEventListener(EventNames.FatalError, showModal);\r\n };\r\n }, []);\r\n\r\n const showModal = () => setIsVisible(true);\r\n\r\n const reloadWindow = () => window.location.reload();\r\n\r\n return (\r\n \r\n {getTranslation(keys['checkout.error.generic'])}\r\n {getTranslation(keys['checkout.error.invalidActionPleaseRefresh'])}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import { makeAutoObservable } from 'mobx';\r\n\r\nimport { UserDetailsViewModel } from '../../Purchase/Cart/PersonalizedCart/UserDetailsViewModel.csharp';\r\nimport { getFor } from '../../ReactComponents/API';\r\nimport { LocalStorageAccessor } from '../../StorageAccessor/LocalStorageAccessor';\r\nimport { FavouritesViewModel } from './FavouritesViewModel.csharp';\r\n\r\ninterface IStorageFavouritesViewModel {\r\n model: FavouritesViewModel;\r\n expirationDate: number;\r\n}\r\n\r\nclass Favourites {\r\n private _favouritesExpirationTimeInHours = 1;\r\n private _favouritesStorage = 'favourites';\r\n\r\n public items: FavouritesViewModel | null = null;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n public setFavourites = (favourites: FavouritesViewModel) => {\r\n this.items = favourites;\r\n this.saveFavouritesInLocalStorage(favourites);\r\n };\r\n\r\n public isFavourite = (code: string, initialValue = false): boolean => {\r\n if (this.items) {\r\n return this.items.favouriteProductCodes.includes(code);\r\n }\r\n\r\n return initialValue;\r\n };\r\n\r\n public validateFavourites = (favouritesUrl: string, user: UserDetailsViewModel) => {\r\n if (!user.isLoggedIn) {\r\n this.clearFavourites();\r\n return;\r\n }\r\n\r\n const data = this.getFavouritesFromLocalStorage();\r\n\r\n if (data === null || data.expirationDate < new Date().getTime() || data.model?.userId !== user.customerId) {\r\n this.updateFavourites(favouritesUrl);\r\n } else {\r\n this.setFavourites(data.model);\r\n }\r\n };\r\n\r\n private saveFavouritesInLocalStorage = (favourites: FavouritesViewModel) => {\r\n LocalStorageAccessor.setItem(\r\n this._favouritesStorage,\r\n JSON.stringify({\r\n model: favourites,\r\n expirationDate: this.getExpirationDate()\r\n })\r\n );\r\n };\r\n\r\n private getFavouritesFromLocalStorage = (): IStorageFavouritesViewModel | null => {\r\n const favouritesString = LocalStorageAccessor.getItem(this._favouritesStorage);\r\n return favouritesString ? (JSON.parse(favouritesString) as IStorageFavouritesViewModel) : null;\r\n };\r\n\r\n private clearFavourites = () => {\r\n LocalStorageAccessor.removeItem(this._favouritesStorage);\r\n this.items = this.buildEmptyFavourites();\r\n };\r\n\r\n private updateFavourites = (favouritesUrl: string) => {\r\n getFor(`${favouritesUrl}`).then((favourites) => {\r\n this.setFavourites(favourites);\r\n });\r\n };\r\n\r\n private getExpirationDate = () => {\r\n const now = new Date();\r\n const hours = now.getHours() + this._favouritesExpirationTimeInHours;\r\n now.setHours(hours);\r\n return now.getTime();\r\n };\r\n\r\n private buildEmptyFavourites = (): FavouritesViewModel => {\r\n return { favouriteProductCodes: [] };\r\n };\r\n}\r\n\r\nexport const favourites = new Favourites();\r\n","import { post } from '../../ReactComponents/API';\r\nimport { SearchTrackingInfo } from './SearchTrackingInfo.csharp';\r\n\r\nexport const SearchQueryParamName = 'searchQuery';\r\n\r\nexport const trackEpiFindClick = (url: string, position: number, searchTrackingInfo: SearchTrackingInfo) => {\r\n if (searchTrackingInfo) {\r\n post(\r\n `${url}?trackId=${searchTrackingInfo.trackId}&query=${searchTrackingInfo.searchQuery}&hitType=${searchTrackingInfo.hitType}&hitId=${searchTrackingInfo.hitId}&position=${position}`\r\n );\r\n }\r\n};\r\n","import { CartItemValidationIssueViewModel } from '../Item/ViewModels/CartItemValidationIssueViewModel.csharp';\r\nimport { CartViewModel } from '../ViewModels/CartViewModel.csharp';\r\n\r\n// eslint-disable-next-line\r\nexport const handleCartResponseError = (productCode: string, response: any, cart: CartViewModel, setCart: (cart: CartViewModel) => void) => {\r\n const item = cart?.items?.find((x) => x.code === productCode);\r\n\r\n if (item && response.maxQuantity !== undefined) {\r\n item.maxQuantity = response.maxQuantity;\r\n }\r\n\r\n if (item && response.minQuantity !== undefined) {\r\n item.minQuantity = response.minQuantity;\r\n }\r\n\r\n setErrorsForItem(productCode, response.validationIssues, response.cart ?? cart, setCart);\r\n};\r\n\r\nconst setErrorsForItem = (productCode: string, issues: CartItemValidationIssueViewModel[], cart: CartViewModel, setCart: (cart: CartViewModel) => void) => {\r\n const index = cart.items.findIndex((x) => x.code === productCode);\r\n const validationIssues = cart.items[index].validationIssues;\r\n\r\n const codes = validationIssues.map((x) => x.code);\r\n for (const issue of issues) {\r\n if (codes.includes(issue.code) === false) {\r\n validationIssues.push(issue);\r\n }\r\n }\r\n\r\n setCart(cart);\r\n};\r\n","import { showFatalErrorModal } from '../../../Partials/Header/FatalErrorModal';\r\nimport { del, put } from '../../../ReactComponents/API';\r\nimport { TrackingData } from '../../../Tracking/FacebookConversionApi/TrackingData.csharp';\r\nimport { GoogleTagManager } from '../../../Tracking/GoogleTagManager/GoogleTagManager';\r\nimport { SetQuantityResult } from '../../Checkout/Summary/LineItemsApi';\r\nimport { CartItemViewModel } from '../Item/ViewModels/CartItemViewModel.csharp';\r\nimport { handleCartResponseError } from '../Validation/HandleCartResponseError';\r\nimport { CartViewModel } from '../ViewModels/CartViewModel.csharp';\r\n\r\nexport const forbiddenCartOperationError = 'invalidActionPleaseRefresh';\r\nexport const unexpectedCartOperationError = 'Unexpected';\r\n\r\nexport const handleProductCardRequest = async (apiCall: Promise) => handleRequest(apiCall, 'addToCart.unexpectedError');\r\nexport const handleCartRequest = async (apiCall: Promise) => handleRequest(apiCall, unexpectedCartOperationError);\r\n\r\nconst handleRequest = async (apiCall: Promise, defaultError: string): Promise<{ cart: CartViewModel; trackingData: TrackingData }> => {\r\n return new Promise((resolve, reject) =>\r\n apiCall\r\n .then((response) => response.json())\r\n .then((result) => {\r\n if (result.validationIssues && result.validationIssues.length > 0) {\r\n reject(result);\r\n }\r\n\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n if (error?.status !== 401) {\r\n showFatalErrorModal();\r\n }\r\n\r\n if (error?.status === 403) {\r\n reject({\r\n validationIssues: [{ code: forbiddenCartOperationError, isWarning: true }]\r\n });\r\n } else {\r\n reject({ validationIssues: [{ code: defaultError, isWarning: true }] });\r\n }\r\n })\r\n );\r\n};\r\n\r\nexport const setQuantity = async (\r\n productCode: string,\r\n product: CartItemViewModel,\r\n quantity: number,\r\n url: string,\r\n cart: CartViewModel,\r\n callback: (cart: CartViewModel) => void\r\n): Promise => {\r\n if (quantity <= 0) return SetQuantityResult.failed();\r\n const oldQuantity = cart.items.find((x) => x.code === productCode)!.quantityOrdered;\r\n\r\n const urlWithParams = `${url}?quantity=${quantity}&loginExpected=${!cart.isAnonymous}&cartId=${cart.id}`;\r\n return handleCartRequest(put(urlWithParams))\r\n .then((response) => {\r\n callback(response.cart);\r\n const item = response.cart.items.find((x) => x.code === productCode);\r\n if (item) {\r\n GoogleTagManager.changeQuantity(item, quantity, oldQuantity);\r\n return SetQuantityResult.succeeded(item.quantityOrdered);\r\n }\r\n\r\n return SetQuantityResult.failed();\r\n })\r\n .catch((issues) => {\r\n handleCartResponseError(productCode, issues, cart, (cart) => callback(cart));\r\n return SetQuantityResult.failed();\r\n });\r\n};\r\n\r\nexport const removeFromCart = (productCode: string, url: string, cart: CartViewModel, callback: (cart: CartViewModel) => void): Promise => {\r\n return handleCartRequest(del(`${url}?loginExpected=${!cart.isAnonymous}&cartId=${cart.id}`))\r\n .then((response) => {\r\n callback(response.cart);\r\n return true;\r\n })\r\n .catch((issues) => {\r\n handleCartResponseError(productCode, issues, cart, (cart) => callback(cart));\r\n return false;\r\n });\r\n};\r\n","import { ApplicationInsights, SeverityLevel } from '../ReactComponents/ApplicationInsights';\r\nimport { Recommendations } from './ViewModels/Recommendations';\r\nimport { RecommendationsCache } from './ViewModels/RecommendationsCache';\r\nimport { RecommendationsEventNameResolver } from './ViewModels/RecommendationsEventNameResolver';\r\n\r\nexport class RecommendationsRepository {\r\n /* eslint-disable */\r\n\r\n public static populateRepository(widgetsData: any) {\r\n let widgetNames: string[];\r\n let recommendations: Recommendations;\r\n try {\r\n recommendations = JSON.parse(widgetsData) as Recommendations;\r\n widgetNames = recommendations.smartRecs.map((r) => r.widget);\r\n } catch (err: any) {\r\n ApplicationInsights.TrackTrace(SeverityLevel.Error, `Failed to parse JSON in populateRepository. Data: ${widgetsData} Error: ${err}`);\r\n return;\r\n }\r\n\r\n widgetNames.forEach((widgetName) => {\r\n if (recommendations?.smartRecs) {\r\n const recs = recommendations.smartRecs.filter((r) => r.widget == widgetName)[0].recs;\r\n const event = new CustomEvent(RecommendationsEventNameResolver.GetEventName(widgetName));\r\n const serializedRecs = JSON.stringify(recs);\r\n\r\n if (RecommendationsCache.getRecommendations(widgetName) != serializedRecs) {\r\n RecommendationsCache.saveRecommendations(widgetName, serializedRecs);\r\n window.dispatchEvent(event);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","/* eslint-disable */\r\n\r\nimport { ApplicationInsights, SeverityLevel } from '../../ReactComponents/ApplicationInsights';\r\n\r\nexport var epiRecommendations = function (settings: any) {\r\n return {\r\n track: function (trackingData: any, scope: any, channel: any, onSuccess: any, callbackOptions: any) {\r\n if (typeof settings === 'undefined') {\r\n return;\r\n }\r\n trackingData.scope = typeof scope === 'undefined' ? null : scope;\r\n trackingData.channel = typeof channel === 'undefined' ? null : channel;\r\n this._sendTrackingData(trackingData, onSuccess, callbackOptions);\r\n },\r\n _sendTrackingData: function (trackingData: any, onSuccess: any, callbackOptions: any) {\r\n var proxyUrl = settings.endPointUrl;\r\n if (!proxyUrl || this._isEmpty(trackingData)) {\r\n return;\r\n }\r\n if (!trackingData.lang) {\r\n trackingData.lang = settings.preferredCulture;\r\n }\r\n // @ts-ignore\r\n this._post(proxyUrl, JSON.stringify(trackingData), function (response: any) {\r\n typeof onSuccess === 'function' && onSuccess(response, callbackOptions);\r\n });\r\n },\r\n _isEmpty: function (obj: any) {\r\n return obj === undefined || obj === null || (Object.keys(obj).length === 0 && obj.constructor === Object);\r\n },\r\n _post: function (url: any, data: any, onSuccess: any, async: any) {\r\n this._send('POST', url, data, onSuccess, async);\r\n },\r\n _send: function (method: any, url: any, data: any, onSuccess: any, async: any) {\r\n if (typeof async === 'undefined') {\r\n async = true;\r\n }\r\n var xhr = this._getXHR();\r\n xhr.open(method, url, async);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200 && typeof onSuccess === 'function') {\r\n onSuccess(xhr.responseText);\r\n }\r\n if (xhr.status >= 400) {\r\n ApplicationInsights.TrackTrace(SeverityLevel.Error, `VisitorIntelligence script error: Received unsuccessful response: ${xhr.status} ${xhr.responseText}`);\r\n }\r\n }\r\n };\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n xhr.send(data);\r\n },\r\n _getXHR: function () {\r\n if (typeof XMLHttpRequest !== 'undefined') {\r\n return new XMLHttpRequest();\r\n }\r\n var vers = ['MSXML2.XmlHttp.6.0', 'MSXML2.XmlHttp.5.0', 'MSXML2.XmlHttp.4.0', 'MSXML2.XmlHttp.3.0', 'MSXML2.XmlHttp.2.0', 'Microsoft.XmlHttp'];\r\n for (var i = 0, length = vers.length; i < length; i++) {\r\n try {\r\n // @ts-ignore\r\n return new ActiveXObject(vers[i]);\r\n } catch (err: any) {\r\n ApplicationInsights.TrackTrace(SeverityLevel.Error, `VisitorIntelligence script error: ${err.message}`);\r\n }\r\n }\r\n // @ts-ignore\r\n return new XMLHttpRequest();\r\n }\r\n };\r\n};\r\nexport var TrackingDataFactory = {\r\n createHomeTrackingData: function () {\r\n return this._createTrackingDataBase('home');\r\n },\r\n createProductTrackingData: function (productCode: any, productName: any) {\r\n const trackingData = this._createTrackingDataBase('product');\r\n trackingData.productCode = productCode;\r\n trackingData.contentName = productName;\r\n return trackingData;\r\n },\r\n createSearchResultTrackingData: function (term: any, productCodes: any, totalResultCount: any) {\r\n const trackingData = this._createTrackingDataBase('searchresults');\r\n trackingData.searchResults = {\r\n term: term,\r\n productCodes: productCodes,\r\n totalNumberOfResults: totalResultCount\r\n };\r\n return trackingData;\r\n },\r\n createCheckoutTrackingData: function () {\r\n return this._createTrackingDataBase('checkout');\r\n },\r\n createBasketTrackingData: function () {\r\n const basketTracking = this._createTrackingDataBase('basket');\r\n return basketTracking;\r\n },\r\n createOrderTrackingData: function (orderId: any) {\r\n const orderTrackingData = this._createTrackingDataBase('order');\r\n orderTrackingData.orderId = orderId;\r\n return orderTrackingData;\r\n },\r\n createBrandTrackingData: function (brandName: any) {\r\n const trackingData = this._createTrackingDataBase('brand');\r\n trackingData.brand = brandName;\r\n return trackingData;\r\n },\r\n createCategoryTrackingData: function (categoryCode: any) {\r\n const trackingData = this._createTrackingDataBase('category');\r\n trackingData.category = categoryCode;\r\n return trackingData;\r\n },\r\n createAttributeTrackingData: function (attributeName: any, attributeValue: any) {\r\n const trackingData = this._createTrackingDataBase('attribute');\r\n trackingData.attribute = {\r\n name: attributeName,\r\n value: attributeValue\r\n };\r\n return trackingData;\r\n },\r\n createWishlistTrackingData: function () {\r\n return this._createTrackingDataBase('wishlist');\r\n },\r\n _createTrackingDataBase: function (type: any): any {\r\n return {\r\n type: type,\r\n currentUri: window.location.href,\r\n previousUri: document.referrer,\r\n customAttributes: {}\r\n };\r\n }\r\n};\r\n","import { TrackingType } from '../../../Commerce/TrackingType.csharp';\r\nimport { RecommendationsRepository } from '../../Recommendations/RecommendationsRepository';\r\nimport { BrandTrackingDetails } from './BrandTrackingDetails.csharp';\r\nimport { CategoryTrackingDetails } from './CategoryTrackingDetails.csharp';\r\nimport { EpiTrackingData } from './EpiTrackingData';\r\nimport { ProductTrackingDetails } from './ProductTrackingDetails.csharp';\r\nimport { SearchTrackingDetails } from './SearchTrackingDetails.csharp';\r\nimport { TrackingDetails } from './TrackingDetails.csharp';\r\nimport { epiRecommendations, TrackingDataFactory } from './VisitorIntelligenceTrackingScript';\r\n\r\ndeclare let VisitorIntelligenceTrackingEnabled: boolean;\r\ndeclare let RecommendationsRequired: boolean;\r\ndeclare let VisitorIntelligenceSettings: object;\r\n\r\nexport interface WidgetConfiguration {\r\n area: string;\r\n maximumNumberOfItems: number;\r\n}\r\n\r\nexport class VisitorIntelligenceFacade {\r\n private static MAX_TERM_LENGTH = 235;\r\n private static IsEnabled: boolean =\r\n typeof VisitorIntelligenceTrackingEnabled !== 'undefined' && typeof TrackingDataFactory !== 'undefined' && typeof window !== 'undefined'\r\n ? VisitorIntelligenceTrackingEnabled\r\n : false;\r\n\r\n private static AttachRecommendations: boolean =\r\n typeof RecommendationsRequired !== 'undefined' && typeof window !== 'undefined' ? RecommendationsRequired : false;\r\n\r\n private static recommendationsTracker = VisitorIntelligenceFacade.IsEnabled ? epiRecommendations(VisitorIntelligenceSettings) : undefined;\r\n\r\n public static Track(trackingDetails: TrackingDetails) {\r\n if (!this.IsEnabled || trackingDetails.skipTracking) {\r\n return;\r\n }\r\n\r\n switch (trackingDetails.type) {\r\n case TrackingType.Home: {\r\n VisitorIntelligenceFacade.TrackHomePage();\r\n break;\r\n }\r\n case TrackingType.Brand: {\r\n VisitorIntelligenceFacade.TrackBrandPage(trackingDetails as BrandTrackingDetails);\r\n break;\r\n }\r\n case TrackingType.Product: {\r\n VisitorIntelligenceFacade.TrackProductPage(trackingDetails as ProductTrackingDetails);\r\n break;\r\n }\r\n case TrackingType.Checkout: {\r\n VisitorIntelligenceFacade.TrackCheckoutPage();\r\n break;\r\n }\r\n case TrackingType.Basket: {\r\n VisitorIntelligenceFacade.TrackCartPage();\r\n break;\r\n }\r\n case TrackingType.Category: {\r\n VisitorIntelligenceFacade.TrackCategoryPage(trackingDetails as CategoryTrackingDetails);\r\n break;\r\n }\r\n case TrackingType.Wishlist: {\r\n VisitorIntelligenceFacade.TrackFavouritesPage();\r\n break;\r\n }\r\n case TrackingType.SearchResults: {\r\n VisitorIntelligenceFacade.TrackSearchPage(trackingDetails as SearchTrackingDetails);\r\n break;\r\n }\r\n case TrackingType.Order:\r\n throw new Error('Use dedicated methods instead');\r\n case TrackingType.Attribute:\r\n case TrackingType.Other: {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public static TrackSearchResultsPage(term: string, productCodes: string[], totalResults: number) {\r\n if (!this.IsEnabled) {\r\n return;\r\n }\r\n\r\n if (!term) {\r\n return;\r\n }\r\n\r\n const truncatedTerm = term.substring(0, this.MAX_TERM_LENGTH);\r\n\r\n const data = TrackingDataFactory.createSearchResultTrackingData(truncatedTerm, productCodes, totalResults);\r\n VisitorIntelligenceFacade.TrackInternal(data);\r\n }\r\n\r\n public static TrackSearchPage(trackingDetails: SearchTrackingDetails) {\r\n this.TrackSearchResultsPage(trackingDetails.term, trackingDetails.productCodes, trackingDetails.totalResults);\r\n }\r\n\r\n public static TrackOrderConfirmationPage(orderId: string) {\r\n if (!this.IsEnabled) {\r\n return;\r\n }\r\n\r\n const data = TrackingDataFactory.createOrderTrackingData(orderId);\r\n VisitorIntelligenceFacade.TrackInternal(data);\r\n }\r\n\r\n private static TrackHomePage() {\r\n const data = TrackingDataFactory.createHomeTrackingData();\r\n VisitorIntelligenceFacade.TrackInternal(data);\r\n }\r\n\r\n private static TrackCheckoutPage() {\r\n const data = TrackingDataFactory.createCheckoutTrackingData();\r\n VisitorIntelligenceFacade.TrackInternal(data);\r\n }\r\n\r\n private static TrackCartPage() {\r\n const data = TrackingDataFactory.createBasketTrackingData();\r\n VisitorIntelligenceFacade.TrackInternal(data);\r\n }\r\n\r\n private static TrackCategoryPage(trackingDetails: CategoryTrackingDetails) {\r\n const data = TrackingDataFactory.createCategoryTrackingData(trackingDetails.categoryCode);\r\n VisitorIntelligenceFacade.TrackInternal(data);\r\n }\r\n\r\n private static TrackFavouritesPage() {\r\n const data = TrackingDataFactory.createWishlistTrackingData();\r\n VisitorIntelligenceFacade.TrackInternal(data);\r\n }\r\n\r\n private static TrackBrandPage(trackingDetails: BrandTrackingDetails) {\r\n const data = TrackingDataFactory.createBrandTrackingData(trackingDetails.brandName);\r\n VisitorIntelligenceFacade.TrackInternal(data);\r\n }\r\n\r\n private static TrackProductPage(trackingDetails: ProductTrackingDetails) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const recommendationId = urlParams.get('recommendationId');\r\n\r\n const data = TrackingDataFactory.createProductTrackingData(trackingDetails.productCode, trackingDetails.productName);\r\n if (recommendationId) {\r\n data.recommendationId = recommendationId;\r\n }\r\n VisitorIntelligenceFacade.TrackInternal(data);\r\n }\r\n\r\n private static TrackInternal(data: EpiTrackingData, widgetOptions: WidgetConfiguration[] | object = {}) {\r\n data.skipRecommendations = !VisitorIntelligenceFacade.AttachRecommendations;\r\n\r\n if (VisitorIntelligenceFacade.recommendationsTracker) {\r\n VisitorIntelligenceFacade.recommendationsTracker.track(data, 'default', 'web', RecommendationsRepository.populateRepository, widgetOptions);\r\n }\r\n }\r\n}\r\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum TextColor {\r\n\tBlack = 0,\r\n\tWhite = 1\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum ProductBuyingMode {\r\n\tActive = 0,\r\n\tInactive = 1,\r\n\tOnPrescription = 2\r\n}\r\n","import { LocalStorageAccessor } from '../StorageAccessor/LocalStorageAccessor';\r\n\r\ntype PriceSpiderProductCodes = { [key: string]: number };\r\n\r\nexport class IsFromPriceSpiderAccessor {\r\n private static _key = 'priceSpiderProductCodes';\r\n private static _expiration = 24 * 60 * 60 * 1000;\r\n\r\n public static get(productCode: string): boolean {\r\n const priceSpiderProductCodes = LocalStorageAccessor.getObject(this._key, {});\r\n if (productCode in priceSpiderProductCodes && Date.now() - priceSpiderProductCodes[productCode] < this._expiration) {\r\n return true;\r\n }\r\n\r\n delete priceSpiderProductCodes[productCode];\r\n return false;\r\n }\r\n\r\n public static set(productCode: string): void {\r\n const priceSpiderProductCodes = LocalStorageAccessor.getObject(this._key, {});\r\n priceSpiderProductCodes[productCode] = Date.now();\r\n\r\n LocalStorageAccessor.setObject(this._key, priceSpiderProductCodes);\r\n }\r\n\r\n public static clear(...productCodes: string[]): void {\r\n let priceSpiderProductCodes = LocalStorageAccessor.getObject(this._key, {});\r\n if (productCodes.length) {\r\n productCodes.forEach((x) => delete priceSpiderProductCodes[x]);\r\n } else {\r\n priceSpiderProductCodes = {};\r\n }\r\n LocalStorageAccessor.setObject(this._key, priceSpiderProductCodes);\r\n }\r\n}\r\n","import React from 'react';\r\n\r\nimport { FilteredProductList } from '../Components/ProductFilters/FilteredProductList';\r\nimport { Props } from './Types';\r\n\r\n// eslint-disable-next-line\r\ndeclare let global: any;\r\n\r\nconst Components: Record> = {\r\n FilteredProductList: FilteredProductList\r\n};\r\n\r\n// register components as global required by ReactJS.NET\r\nfor (const component in Components) {\r\n global[component] = Components[component];\r\n}\r\n","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../Resources/Translations';\r\nimport { EventNames } from '../../../../ReactComponents/EventNames';\r\nimport { Snackbar } from '../../../../ReactComponents/Snackbar/Snackbar';\r\nimport { FirstFavouriteModalProps } from './FirstFavouriteModalProps.csharp';\r\n\r\nexport const showFirstFavouriteModal = () => {\r\n const event = new CustomEvent(EventNames.AddedFirstFavourite);\r\n window.dispatchEvent(event);\r\n};\r\n\r\nexport const FirstFavouriteModal = ({ favouritesPageUrl }: FirstFavouriteModalProps) => {\r\n const [isSnackbarVisible, setIsSnackbarVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n window.addEventListener(EventNames.AddedFirstFavourite, showSnackbar);\r\n\r\n return () => {\r\n window.removeEventListener(EventNames.AddedFirstFavourite, showSnackbar);\r\n };\r\n }, []);\r\n\r\n const showSnackbar = () => setIsSnackbarVisible(true);\r\n const closeSnackbar = () => setIsSnackbarVisible(false);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../Resources/Translations';\r\nimport { Button, ButtonSize, ButtonVariant } from '../../../../ReactComponents/Buttons/Button';\r\nimport { EventNames } from '../../../../ReactComponents/EventNames';\r\nimport { Modal, ModalButtons, ModalButtonsDirection, ModalHeading, ModalText } from '../../../../ReactComponents/Modal/Modal';\r\n\r\nexport const onActionRequiresLogin = (productCode: string, scrollPosition: number) => {\r\n const event = new CustomEvent(EventNames.ActionRequiresLogin, {\r\n detail: { productCode, scrollPosition }\r\n });\r\n window.dispatchEvent(event);\r\n};\r\n\r\nexport interface FavouritesClickData {\r\n productCode: string;\r\n scrollPosition: number;\r\n}\r\n\r\nexport interface FavouritesLoginModalProps {\r\n readonly loginUrl: string;\r\n readonly registerUrl: string;\r\n}\r\n\r\nexport const favouritesRequestRedirectParams = {\r\n productCode: 'addFavouriteProduct',\r\n scrollPosition: 'scrollPosition'\r\n};\r\n\r\nexport const RequiresLoginModal = ({ loginUrl, registerUrl }: FavouritesLoginModalProps) => {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const [productCode, setProductCode] = useState('');\r\n const [scrollPosition, setScrollPosition] = useState(0);\r\n const ampersand = '%26';\r\n\r\n useEffect(() => {\r\n window.addEventListener(EventNames.ActionRequiresLogin, showModal);\r\n\r\n return () => {\r\n window.removeEventListener(EventNames.ActionRequiresLogin, showModal);\r\n };\r\n });\r\n\r\n const showModal = ($event: CustomEventInit) => {\r\n if ($event && $event.detail) {\r\n const data = $event.detail as FavouritesClickData;\r\n\r\n if (data?.productCode) {\r\n setProductCode(data.productCode);\r\n setScrollPosition(data.scrollPosition);\r\n setIsVisible(true);\r\n return;\r\n }\r\n }\r\n\r\n setProductCode('');\r\n setScrollPosition(0);\r\n };\r\n\r\n const getLoginUrl = (): string => {\r\n const params = getEncodedUrlParams();\r\n return (\r\n loginUrl +\r\n `?` +\r\n (params ? `${params}${ampersand}` : '') +\r\n (productCode ? `${favouritesRequestRedirectParams.productCode}=${productCode}${ampersand}` : '') +\r\n (scrollPosition ? `${favouritesRequestRedirectParams.scrollPosition}=${scrollPosition}` : '')\r\n );\r\n };\r\n\r\n const getEncodedUrlParams = (): string => {\r\n let params = new URLSearchParams(window.location.search).toString();\r\n params = params.replace(/&/g, ampersand);\r\n return params;\r\n };\r\n\r\n const redirectToRegister = () => {\r\n window.location.href = registerUrl;\r\n };\r\n\r\n const redirectToLogin = () => {\r\n window.location.href = getLoginUrl();\r\n };\r\n\r\n return (\r\n setIsVisible(false)} className=\"LoginFavouritesModal\">\r\n {getTranslation(keys['favourites.loginRequiredHeader'])}\r\n {getTranslation(keys['favourites.loginRequiredContent'])}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport * as ReactModal from 'react-modal';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { ScrollLock } from '../ScrollLock/ScrollLock';\r\n\r\ninterface IModalProps {\r\n open: boolean;\r\n hideCloseButton?: boolean;\r\n onClose: () => void;\r\n className?: string;\r\n overlayClassName?: string;\r\n children: React.ReactNode;\r\n priority?: boolean;\r\n id?: string;\r\n}\r\n\r\nexport const Modal = (props: IModalProps) => {\r\n return (\r\n \r\n {!props.hideCloseButton && (\r\n \r\n )}\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const ModalContent = ({ children, narrow }: { children: React.ReactNode; narrow?: boolean }) => {\r\n return
{children}
;\r\n};\r\n\r\nexport const ModalHeading = ({ children }: { children: React.ReactNode }) => {\r\n return

{children}

;\r\n};\r\n\r\nexport const ModalHeader = ({ children }: { children: React.ReactNode }) => {\r\n return (\r\n
\r\n

{children}

\r\n
\r\n );\r\n};\r\n\r\nexport const ModalText = ({ children }: { children: React.ReactNode }) => {\r\n return

{children}

;\r\n};\r\n\r\nexport enum ModalButtonsDirection {\r\n Row,\r\n Column\r\n}\r\n\r\ninterface IModalButtonsProps {\r\n children: React.ReactNode;\r\n direction?: ModalButtonsDirection;\r\n}\r\n\r\nexport const ModalButtons = (props: IModalButtonsProps) => {\r\n const direction = `Modal__Buttons--${ModalButtonsDirection[props.direction || ModalButtonsDirection.Row]}`;\r\n\r\n return
{props.children}
;\r\n};\r\n\r\nexport const ModalError = ({ children }: { children: string }) => {\r\n return {children};\r\n};\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum ProductAvailabilityNotificationViewType {\r\n\tProductPage = 0,\r\n\tProductCard = 1\r\n}\r\n","import classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../Resources/Translations';\r\nimport { deleteFor, postFor } from '../../../../ReactComponents/API';\r\nimport { GoogleTagManager } from '../../../../Tracking/GoogleTagManager/GoogleTagManager';\r\nimport { favourites } from '../../Favourites';\r\nimport { FavouritesViewModel } from '../../FavouritesViewModel.csharp';\r\nimport { showFirstFavouriteModal } from '../FirstFavouriteModal/FirstFavouriteModal';\r\nimport { favouritesRequestRedirectParams, onActionRequiresLogin } from '../RequiresLoginModal/RequiresLoginModal';\r\nimport { FavouriteProductButtonProps } from './FavouriteProductButtonProps.csharp';\r\n\r\ninterface IFavouritesUrlParams {\r\n productCode: string;\r\n scrollPosition: string;\r\n}\r\n\r\nexport const CompactFavouriteProductButton = observer(({ product, favouritesUrl, isAddedToFavourites }: FavouriteProductButtonProps) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n});\r\n\r\nexport const FavouriteProductButton = observer(({ product, favouritesUrl, isAddedToFavourites }: FavouriteProductButtonProps) => {\r\n const isFavourite = favourites.isFavourite(product.code, isAddedToFavourites);\r\n const [buttonDisabled, setButtonDisabled] = useState(false);\r\n const [isLabelVisible, setIsLabelVisible] = useState(false);\r\n\r\n const labelVisibilityTime = 5000;\r\n\r\n const labelVisibilityTimeout = useRef | null>(null);\r\n\r\n useEffect(() => {\r\n const params = getUrlParams();\r\n\r\n if (shouldAddToFavourites(params)) {\r\n setTimeout(() => scrollToProduct(params), 1000);\r\n\r\n if (!isFavourite) {\r\n addFavourite();\r\n }\r\n }\r\n }, []);\r\n\r\n const shouldAddToFavourites = (params: IFavouritesUrlParams) => {\r\n return params.productCode && params.productCode === product.code;\r\n };\r\n\r\n const scrollToProduct = (params: IFavouritesUrlParams) => {\r\n const scrollPosition = parseFloat(params.scrollPosition);\r\n\r\n if (scrollPosition > 0) {\r\n window.scrollTo({ top: scrollPosition, behavior: 'smooth' });\r\n }\r\n };\r\n\r\n const getUrlParams = (): IFavouritesUrlParams => {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n const productCode = searchParams.get(favouritesRequestRedirectParams.productCode) ?? '';\r\n const scrollPosition = searchParams.get(favouritesRequestRedirectParams.scrollPosition) ?? '';\r\n return { productCode, scrollPosition };\r\n };\r\n\r\n const addFavourite = () => {\r\n setButtonDisabled(true);\r\n const unauthorizedUserHandler = () => product.code && onActionRequiresLogin(product.code, document.documentElement.scrollTop);\r\n\r\n postFor<{ favourites: FavouritesViewModel; newlyCreated: boolean }>(`${favouritesUrl}/${product.code}`, undefined, unauthorizedUserHandler)\r\n .then((result) => {\r\n favourites.setFavourites(result.favourites);\r\n GoogleTagManager.addToWishList(product);\r\n\r\n if (result.newlyCreated) {\r\n showFirstFavouriteModal();\r\n }\r\n\r\n showLabel();\r\n })\r\n // eslint-disable-next-line\r\n .catch(() => {})\r\n .finally(() => setButtonDisabled(false));\r\n };\r\n\r\n const removeFavourite = () => {\r\n deleteFor(`${favouritesUrl}/${product.code}`)\r\n .then((result) => {\r\n favourites.setFavourites(result);\r\n showLabel();\r\n })\r\n .finally(() => setButtonDisabled(false));\r\n };\r\n\r\n const showLabel = () => {\r\n labelVisibilityTimeout.current && clearTimeout(labelVisibilityTimeout.current);\r\n setIsLabelVisible(true);\r\n labelVisibilityTimeout.current = setTimeout(() => setIsLabelVisible(false), labelVisibilityTime);\r\n };\r\n\r\n return (\r\n <>\r\n
(isFavourite ? removeFavourite() : addFavourite())}>\r\n \r\n \r\n {isFavourite ? getTranslation(keys['favourites.added']) : getTranslation(keys['favourites.removed'])}\r\n \r\n
\r\n \r\n );\r\n});\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum ProductSortingType {\r\n\tByRelevance = 0,\r\n\tByDate = 1,\r\n\tByPriceAscending = 2,\r\n\tByPriceDescending = 3,\r\n\tByName = 4,\r\n\tByPromotionPercentage = 5,\r\n\tByNewlyAdded = 6\r\n}\r\n","import React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { CheapestForFreeDiscountViewModel } from '../../Blocks/CheapestForFreeDiscount/CheapestForFreeDiscountViewModel.csharp';\r\nimport { DiscountType } from '../../Blocks/DiscountType.csharp';\r\nimport { DiscountVariant } from '../../Blocks/DiscountVariant.csharp';\r\nimport { CircleInfoLabel, StarInfoLabelColor } from './CircleInfoLabel';\r\nimport { ProductTopLabelProps } from './ProductTopLabelProps.csharp';\r\n\r\nexport const ProductTopLabel: React.FunctionComponent = (props) => {\r\n if (!props.showPromoStar) return null;\r\n\r\n if (\r\n !props.showOnlyFreeItemBadge &&\r\n !props.badgeSettings.hidePercentagePromotionBadge &&\r\n props.promotions &&\r\n props.promotions.length > 0 &&\r\n props.promotions[0].promotionInfo.type == DiscountType.Product\r\n ) {\r\n return ;\r\n }\r\n if (\r\n !props.badgeSettings.hideFreeItemPromotionBadge &&\r\n props.promotions &&\r\n props.promotions.length > 0 &&\r\n props.promotions[0].promotionInfo.type == DiscountType.CheapestForFree\r\n ) {\r\n const cheapestDiscount = props.promotions[0].promotionInfo as CheapestForFreeDiscountViewModel;\r\n const variant = props.showOnlyFreeItemBadge ? DiscountVariant.Mini : props.variant;\r\n return (\r\n \r\n );\r\n }\r\n if (!props.showOnlyFreeItemBadge && !props.badgeSettings.hideFixedLowPriceBadge && props.showFixedLowPriceBadge) {\r\n return (\r\n \r\n );\r\n }\r\n if (!props.showOnlyFreeItemBadge && !props.badgeSettings.hideGoodPurchaseBadge && props.showGoodPurchaseBadge) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { MouseButtons } from './MouseButtonsEnum';\r\n\r\nexport const handleClickEvents = (onClick: (e: React.MouseEvent) => void) => {\r\n return {\r\n onClick: (e: React.MouseEvent) => onClick(e),\r\n onMouseDown: (e: React.MouseEvent) => {\r\n if (e.button === MouseButtons.MiddleButton) {\r\n onClick(e);\r\n }\r\n }\r\n };\r\n};\r\n","export const smoothScrollTo = (position: number, callback?: () => void) => {\r\n const endPosition = parseInt(position.toFixed());\r\n let completed = false;\r\n\r\n const onScroll = () => {\r\n if (Math.floor(window.pageYOffset) === endPosition) {\r\n window.removeEventListener('scroll', onScroll);\r\n completed = true;\r\n callback && callback();\r\n }\r\n };\r\n\r\n setTimeout(() => {\r\n if (!completed) {\r\n window.removeEventListener('scroll', onScroll);\r\n callback && callback();\r\n }\r\n }, 1000);\r\n\r\n window.addEventListener('scroll', onScroll);\r\n onScroll();\r\n window.scrollTo({\r\n top: endPosition,\r\n behavior: 'smooth'\r\n });\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\n\r\nimport { ProductCardViewModel } from '../../../Partials/ProductCard/ProductCardViewModel.csharp';\r\nimport { ProductList } from '../../../Partials/ProductList/ProductList';\r\nimport { ProductListVariant } from '../../../Partials/ProductList/ProductListVariant.csharp';\r\nimport { ProductListViewModel } from '../../../Partials/ProductList/ProductListViewModel.csharp';\r\nimport { postFor } from '../../../ReactComponents/API';\r\nimport { ApplicationInsights, SeverityLevel } from '../../../ReactComponents/ApplicationInsights';\r\nimport { Recommendation } from '../../ViewModels/Recommendation.csharp';\r\nimport { RecommendationsCache } from '../../ViewModels/RecommendationsCache';\r\nimport { RecommendationsEventNameResolver } from '../../ViewModels/RecommendationsEventNameResolver';\r\nimport { RecommendedProductCardsRequest } from '../../ViewModels/RecommendedProductCardsRequest.csharp';\r\nimport { RecommendedProductsProps } from '../../ViewModels/RecommendedProductsProps.csharp';\r\n\r\nexport const RecommendedProducts = (props: RecommendedProductsProps) => {\r\n const [productList, setProductList] = useState([]);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [productListModel, setProductListModel] = useState({\r\n products: [],\r\n ...props.model,\r\n powerReviewsProductListViewModel: {}\r\n });\r\n\r\n const RecommendationsTimeoutMs = 2000;\r\n const recommendationsLoadTimeout = useRef | null>(null);\r\n const variantMobile = props.variantMobile === ProductListVariant.None ? props.variant : props.variantMobile;\r\n\r\n useEffect(() => {\r\n window.addEventListener(RecommendationsEventNameResolver.GetEventName(props.model.area), loadProducts);\r\n recommendationsLoadTimeout.current = setTimeout(() => loadProducts(), RecommendationsTimeoutMs);\r\n\r\n return () => {\r\n window.removeEventListener(RecommendationsEventNameResolver.GetEventName(props.model.area), loadProducts);\r\n recommendationsLoadTimeout.current && clearTimeout(recommendationsLoadTimeout.current);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n setProductListModel({ ...productListModel, products: productList });\r\n }, [productList]);\r\n\r\n const loadProducts = () => {\r\n let recommendations: Recommendation[] = [];\r\n try {\r\n recommendations = JSON.parse(RecommendationsCache.getRecommendations(props.model.area)!) as Recommendation[];\r\n } catch (err) {\r\n ApplicationInsights.TrackTrace(\r\n SeverityLevel.Error,\r\n `Failed to parse JSON in loadProducts. Data: ${RecommendationsCache.getRecommendations(props.model.area)} Error: ${err}`\r\n );\r\n }\r\n\r\n getProductCards(recommendations);\r\n recommendationsLoadTimeout.current && clearTimeout(recommendationsLoadTimeout.current);\r\n };\r\n\r\n const getProductCards = (recs: Recommendation[]) => {\r\n const fallbackSkus = props.model.fallbackSkus.map((x) => ({ refCode: x, id: undefined } as Recommendation));\r\n\r\n const recommendations = [...(recs || []), ...(fallbackSkus || [])];\r\n\r\n const request = {\r\n settings: {\r\n includeOutOfStockItems: props.model.showOutOfStockItems,\r\n originName: recs?.length > 0 ? props.model.originName : props.model.fallbackOriginName\r\n },\r\n recommendations: recommendations\r\n } as RecommendedProductCardsRequest;\r\n\r\n postFor(`${props.productsUrl}`, request)\r\n .then((productList) => {\r\n setProductList(productList);\r\n })\r\n .finally(() => setIsLoading(false));\r\n };\r\n\r\n const getMobileClassNames = (): (string | false)[] => {\r\n return [props.model.maxProductsAmountOnMobile % 2 === 1 && 'RecommendedProducts__Inner--MobileRemoveBorderAfterLast'];\r\n };\r\n\r\n const getDesktopClassNames = (): (string | false)[] => {\r\n return [\r\n props.model.maxProductsAmountOnTablet % 3 !== 0 && 'RecommendedProducts__Inner--TabletRemoveBorderAfterLast',\r\n props.model.maxProductsAmountOnDesktop % 5 !== 0 && 'RecommendedProducts__Inner--DesktopRemoveBorderAfterLast'\r\n ];\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n","// Current version.\nexport var VERSION = '1.13.2';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","import { CookieAccessor } from '../Customers/UserProfile/Components/CookiesConsent/CookieAccessor';\r\nimport { CookieNamesViewModel } from '../Layouts/Partial/CookieNamesViewModel.csharp';\r\n\r\ndeclare let cookieNames: CookieNamesViewModel;\r\n\r\nexport class TrackingAccessor {\r\n public static get isMarketingEnabled(): boolean {\r\n return !!CookieAccessor.getCookie(cookieNames.tracking.marketing);\r\n }\r\n\r\n public static get isPreferencesEnabled(): boolean {\r\n return !!CookieAccessor.getCookie(cookieNames.tracking.preferences);\r\n }\r\n\r\n public static get isStatisticsEnabled(): boolean {\r\n return !!CookieAccessor.getCookie(cookieNames.tracking.statistics);\r\n }\r\n}\r\n","import { useEffect, useState } from 'react';\r\n\r\nimport { CookieAccessor } from '../../Customers/UserProfile/Components/CookiesConsent/CookieAccessor';\r\nimport { CookieNamesViewModel } from '../../Layouts/Partial/CookieNamesViewModel.csharp';\r\nimport { ApplicationInsights } from '../ApplicationInsights';\r\nimport { TrackingAccessor } from '../TrackingAcessor';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ntype BaseProps = TProps extends { href?: string; onClick?: (...args: any[]) => any } ? TProps : never;\r\ndeclare let cookieNames: CookieNamesViewModel;\r\n\r\nexport type NavigationTrackerSource =\r\n | 'ActionHero'\r\n | 'ActionMenu'\r\n | 'CallToAction'\r\n | 'Footer'\r\n | 'HeaderButton'\r\n | 'Navigation'\r\n | 'ProductCard'\r\n | 'ProductPage'\r\n | 'RxBanner'\r\n | 'RxMenu';\r\nexport type NavigationTrackerProps = {\r\n href?: BaseProps['href'];\r\n onClick?: BaseProps['onClick'];\r\n disableTracking?: boolean;\r\n source: NavigationTrackerSource;\r\n};\r\n\r\ntype NavigationTrackerPropsInternal = NavigationTrackerProps & {\r\n children: (href: BaseProps['href'], onClick: BaseProps['onClick']) => JSX.Element;\r\n};\r\n\r\nexport const NavigationTracker = ({ children, href, onClick, disableTracking, source }: NavigationTrackerPropsInternal>) => {\r\n const [trackedHref, setTrackedHref] = useState(href);\r\n\r\n useEffect(() => {\r\n if (disableTracking || !href) {\r\n return;\r\n }\r\n\r\n const url = new URL(href, document.baseURI);\r\n url.searchParams.set('navigation_source', source);\r\n\r\n setTrackedHref(url.toString());\r\n }, []);\r\n\r\n const track = () => {\r\n if (disableTracking || !TrackingAccessor.isStatisticsEnabled) {\r\n return;\r\n }\r\n\r\n let bankIdExpiresIn: number | null = null;\r\n const bankIdExpiration = CookieAccessor.getCookie('bankIDExpiration');\r\n if (bankIdExpiration) {\r\n bankIdExpiresIn = Math.round((+new Date(bankIdExpiration) - +new Date()) / 1000 / 60);\r\n }\r\n\r\n const commonProperties = {\r\n customerId: CookieAccessor.getCookie('customerID'),\r\n bankIdSessionId: CookieAccessor.getCookie(cookieNames.bankId.sessionId),\r\n bankIdExpiresIn,\r\n source\r\n };\r\n\r\n if (href) {\r\n // This removes unnecessary parts of the url.\r\n const url = new URL(href, document.baseURI);\r\n url.hash = url.password = url.search = url.username = '';\r\n\r\n ApplicationInsights.TrackEvent('navigationNavigated', {\r\n ...commonProperties,\r\n link: url.toString()\r\n });\r\n } else {\r\n ApplicationInsights.TrackEvent('navigationClicked', {\r\n ...commonProperties\r\n });\r\n }\r\n };\r\n\r\n const trackedOnClick: BaseProps['onClick'] = (...args) => {\r\n if (!disableTracking) {\r\n track();\r\n }\r\n\r\n if (onClick) {\r\n return onClick(...args);\r\n }\r\n };\r\n\r\n return children(trackedHref, trackedOnClick);\r\n};\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum FeaturedProductsCompatibleBlockType {\r\n\tFeaturedInfo = 0,\r\n\tCircleInfo = 1\r\n}\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { WidthVariant } from '../../../WidthVariant.csharp';\r\nimport { CircleInfo } from './CircleInfo/CircleInfo';\r\nimport { CircleInfoViewModel } from './CircleInfo/CircleInfoViewModel.csharp';\r\nimport { FeaturedInfo } from './FeaturedInfo/FeaturedInfo';\r\nimport { FeaturedInfoViewModel } from './FeaturedInfo/FeaturedInfoViewModel.csharp';\r\nimport { FeaturedProductsCompatibleBlockType } from './FeaturedProductsCompatibleBlockType.csharp';\r\nimport { IFeaturedProductsCompatibleBlockViewModel } from './IFeaturedProductsCompatibleBlockViewModel.csharp';\r\n\r\nexport const FeaturedProductsCompatibleBlock = ({ model }: { model: IFeaturedProductsCompatibleBlockViewModel }) => {\r\n const renderCompatibleBlock = (widthVariant: WidthVariant, child: JSX.Element) => {\r\n return
{child}
;\r\n };\r\n\r\n switch (model.type) {\r\n case FeaturedProductsCompatibleBlockType.CircleInfo:\r\n return renderCompatibleBlock(WidthVariant.TwoColumn, );\r\n case FeaturedProductsCompatibleBlockType.FeaturedInfo: {\r\n const blockModel = model as FeaturedInfoViewModel;\r\n return renderCompatibleBlock(blockModel.layout, );\r\n }\r\n }\r\n};\r\n","import { WidthVariant } from '../../Blocks/WidthVariant.csharp';\r\nimport { ProductListViewModel } from './ProductListViewModel.csharp';\r\n\r\nexport class ProductListUtils {\r\n private readonly _maxProductsInRow = 5;\r\n private readonly _model: ProductListViewModel;\r\n\r\n constructor(model: ProductListViewModel) {\r\n this._model = model;\r\n }\r\n\r\n public GetVisibleProductsCount = (): [number, number, number] => {\r\n const { maxProductsAmountOnMobile, maxProductsAmountOnDesktop, maxProductsAmountOnTablet } = this._model;\r\n\r\n return [\r\n this.getMaxProductsValue(maxProductsAmountOnMobile),\r\n this.getMaxProductsValue(maxProductsAmountOnTablet),\r\n this.getMaxProductsValue(maxProductsAmountOnDesktop)\r\n ];\r\n };\r\n\r\n public ShouldBeCentered = () => {\r\n const leadingInfoWidth = this.layoutToWidth(this._model.leadingContent?.layout ?? 0);\r\n const moreInfoWidth = this.layoutToWidth(this._model.moreInfoContent?.layout ?? 0);\r\n const totalWidth = this._model.products?.length + leadingInfoWidth + moreInfoWidth;\r\n\r\n return !this._model.moreInfoContent || totalWidth < this._maxProductsInRow;\r\n };\r\n\r\n private getMaxProductsValue = (value: number) => {\r\n return value > 0 ? value : this._model.products.length;\r\n };\r\n\r\n private layoutToWidth = (layout: WidthVariant) => {\r\n switch (layout) {\r\n case WidthVariant.OneColumn:\r\n return 1;\r\n case WidthVariant.TwoColumn:\r\n return 2;\r\n default:\r\n return 0;\r\n }\r\n };\r\n}\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { FeaturedProductsCompatibleBlock } from '../../Blocks/Products/FeaturedProducts/FeaturedProductsCompatibleBlock/FeaturedProductsCompatibleBlock';\r\nimport { BlockSectionClassResolver } from '../../BlockSection/BlockSectionClassResolver';\r\nimport { UserContextProvider } from '../../ReactComponents/Contexts/UserContext';\r\nimport TouchSwiper from '../../ReactComponents/TouchSwiper/TouchSwiper';\r\nimport { ProductCard } from '../ProductCard/ProductCard';\r\nimport { ProductCardPlaceholder } from '../ProductCard/ProductCardPlaceholder/ProductCardPlaceholder';\r\nimport { ProductCardVariant } from '../ProductCard/ProductCardVariant.csharp';\r\nimport { ProductListProps } from './ProductListProps.csharp';\r\nimport { ProductListUtils } from './ProductListUtils';\r\nimport { ProductListVariant } from './ProductListVariant.csharp';\r\nimport { ProductListViewModel } from './ProductListViewModel.csharp';\r\n\r\ninterface IProductListProps extends ProductListProps {\r\n isLoading?: boolean;\r\n withPlaceholders?: boolean;\r\n skipProductsAmountOnMobile?: number;\r\n skipProductsAmountOnTablet?: number;\r\n skipProductsAmountOnDesktop?: number;\r\n}\r\n\r\nexport const ProductList = (props: IProductListProps) => {\r\n const { profile, cartItemUrl, validateItemUrl, rxUrl, epiFindClickTrackingUrl, experimentProductClickUrl, model } = props;\r\n const { heading, products } = props.model as ProductListViewModel;\r\n\r\n const variant = props.variant != null ? props.variant : ProductListVariant.GridWithSwiper;\r\n const productListUtils = new ProductListUtils(props.model);\r\n const hideReviewSnippets = products.every((p) => p.hidePowerReviews || !p.powerReviewsRating);\r\n\r\n const getProductCardVariant = (): ProductCardVariant => {\r\n if (variant === ProductListVariant.Horizontal) {\r\n return ProductCardVariant.Horizontal;\r\n } else if (variant === ProductListVariant.HorizontalSimple) {\r\n return ProductCardVariant.HorizontalSimple;\r\n } else {\r\n return ProductCardVariant.Vertical;\r\n }\r\n };\r\n\r\n const getVariantModifier = (): string => {\r\n if (variant === ProductListVariant.GridWithSwiper && !shouldRenderSwiper()) {\r\n return `ProductList--${ProductListVariant[ProductListVariant.GridWithoutSwiper]}`;\r\n }\r\n\r\n return `ProductList--${ProductListVariant[props.variant]}`;\r\n };\r\n\r\n const shouldRenderSwiper = (): boolean => {\r\n const minProductsAmount = 3;\r\n const { maxProductsAmountOnMobile, products } = props.model;\r\n\r\n return (\r\n variant === ProductListVariant.GridWithSwiper &&\r\n (products.length >= minProductsAmount || !!props.isLoading) &&\r\n (maxProductsAmountOnMobile === 0 || maxProductsAmountOnMobile >= minProductsAmount)\r\n );\r\n };\r\n\r\n const renderProductsWithAdditionalBlocks = () => {\r\n return props.variant === ProductListVariant.Horizontal ? (\r\n renderProducts()\r\n ) : (\r\n <>\r\n {props.model.leadingContent && }\r\n {renderProducts()}\r\n {props.model.moreInfoContent && }\r\n \r\n );\r\n };\r\n\r\n const renderProducts = () => {\r\n return props.isLoading ? renderPlaceholders() : renderProductCards();\r\n };\r\n\r\n const renderProductCards = () => {\r\n const [maxOnMobile, maxOnTablet, maxOnDesktop] = productListUtils.GetVisibleProductsCount();\r\n\r\n return products.map((product, i) => {\r\n const itemClassNames = classNames(\r\n getProductListItemClassNames(\r\n i,\r\n props.skipProductsAmountOnMobile ?? 0,\r\n props.skipProductsAmountOnTablet ?? 0,\r\n props.skipProductsAmountOnDesktop ?? 0,\r\n maxOnMobile,\r\n maxOnTablet,\r\n maxOnDesktop\r\n ),\r\n props.withPlaceholders && 'ProductList__Item--WithPlaceholder'\r\n );\r\n\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n });\r\n };\r\n\r\n const renderPlaceholders = () => {\r\n const { maxProductsAmountOnMobile, maxProductsAmountOnTablet, maxProductsAmountOnDesktop } = props.model;\r\n const placeholderVariant = getProductCardVariant();\r\n const placeholders = [];\r\n\r\n for (let i = 0; i < Math.max(maxProductsAmountOnMobile, maxProductsAmountOnTablet, maxProductsAmountOnDesktop); i++) {\r\n placeholders.push(\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return placeholders;\r\n };\r\n\r\n const getProductListItemClassNames = (\r\n index: number,\r\n skipOnMobile: number,\r\n skipOnTablet: number,\r\n skipOnDesktop: number,\r\n maxOnMobile: number,\r\n maxOnTablet: number,\r\n maxOnDesktop: number\r\n ) => {\r\n return classNames(\r\n 'ProductList__Item',\r\n (index < skipOnMobile || index >= maxOnMobile + skipOnMobile) && 'ProductList__Item--HiddenOnMobile',\r\n (index < skipOnTablet || index >= maxOnTablet + skipOnTablet) && 'ProductList__Item--HiddenOnTablet',\r\n (index < skipOnDesktop || index >= maxOnDesktop + skipOnDesktop) && 'ProductList__Item--HiddenOnDesktop'\r\n );\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n {props.variant !== ProductListVariant.HorizontalSimple ? (\r\n

    {heading}

    \r\n ) : (\r\n

    {heading}

    \r\n )}\r\n
      \r\n {shouldRenderSwiper() ? (\r\n
      \r\n {renderProductsWithAdditionalBlocks()}\r\n
      \r\n ) : (\r\n renderProductsWithAdditionalBlocks()\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"React\", \"ReactDOM\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"react-visibility-sensor\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"react-visibility-sensor\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 4);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (false) { var throwOnDirectAccess, ReactIs; } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = __webpack_require__(5)();\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// Tell whether the rect is visible, given an offset\n//\n// return: boolean\nmodule.exports = function (offset, rect, containmentRect) {\n var offsetDir = offset.direction;\n var offsetVal = offset.value; // Rules for checking different kind of offsets. In example if the element is\n // 90px below viewport and offsetTop is 100, it is considered visible.\n\n switch (offsetDir) {\n case 'top':\n return containmentRect.top + offsetVal < rect.top && containmentRect.bottom > rect.bottom && containmentRect.left < rect.left && containmentRect.right > rect.right;\n\n case 'left':\n return containmentRect.left + offsetVal < rect.left && containmentRect.bottom > rect.bottom && containmentRect.top < rect.top && containmentRect.right > rect.right;\n\n case 'bottom':\n return containmentRect.bottom - offsetVal > rect.bottom && containmentRect.left < rect.left && containmentRect.right > rect.right && containmentRect.top < rect.top;\n\n case 'right':\n return containmentRect.right - offsetVal > rect.right && containmentRect.left < rect.left && containmentRect.top < rect.top && containmentRect.bottom > rect.bottom;\n }\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return VisibilitySensor; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);\n/* harmony import */ var _lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3__);\n\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\nfunction normalizeRect(rect) {\n if (rect.width === undefined) {\n rect.width = rect.right - rect.left;\n }\n\n if (rect.height === undefined) {\n rect.height = rect.bottom - rect.top;\n }\n\n return rect;\n}\n\nvar VisibilitySensor =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VisibilitySensor, _React$Component);\n\n function VisibilitySensor(props) {\n var _this;\n\n _classCallCheck(this, VisibilitySensor);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(VisibilitySensor).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"getContainer\", function () {\n return _this.props.containment || window;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"addEventListener\", function (target, event, delay, throttle) {\n if (!_this.debounceCheck) {\n _this.debounceCheck = {};\n }\n\n var timeout;\n var func;\n\n var later = function later() {\n timeout = null;\n\n _this.check();\n };\n\n if (throttle > -1) {\n func = function func() {\n if (!timeout) {\n timeout = setTimeout(later, throttle || 0);\n }\n };\n } else {\n func = function func() {\n clearTimeout(timeout);\n timeout = setTimeout(later, delay || 0);\n };\n }\n\n var info = {\n target: target,\n fn: func,\n getLastTimeout: function getLastTimeout() {\n return timeout;\n }\n };\n target.addEventListener(event, info.fn);\n _this.debounceCheck[event] = info;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"startWatching\", function () {\n if (_this.debounceCheck || _this.interval) {\n return;\n }\n\n if (_this.props.intervalCheck) {\n _this.interval = setInterval(_this.check, _this.props.intervalDelay);\n }\n\n if (_this.props.scrollCheck) {\n _this.addEventListener(_this.getContainer(), \"scroll\", _this.props.scrollDelay, _this.props.scrollThrottle);\n }\n\n if (_this.props.resizeCheck) {\n _this.addEventListener(window, \"resize\", _this.props.resizeDelay, _this.props.resizeThrottle);\n } // if dont need delayed call, check on load ( before the first interval fires )\n\n\n !_this.props.delayedCall && _this.check();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"stopWatching\", function () {\n if (_this.debounceCheck) {\n // clean up event listeners and their debounce callers\n for (var debounceEvent in _this.debounceCheck) {\n if (_this.debounceCheck.hasOwnProperty(debounceEvent)) {\n var debounceInfo = _this.debounceCheck[debounceEvent];\n clearTimeout(debounceInfo.getLastTimeout());\n debounceInfo.target.removeEventListener(debounceEvent, debounceInfo.fn);\n _this.debounceCheck[debounceEvent] = null;\n }\n }\n }\n\n _this.debounceCheck = null;\n\n if (_this.interval) {\n _this.interval = clearInterval(_this.interval);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"check\", function () {\n var el = _this.node;\n var rect;\n var containmentRect; // if the component has rendered to null, dont update visibility\n\n if (!el) {\n return _this.state;\n }\n\n rect = normalizeRect(_this.roundRectDown(el.getBoundingClientRect()));\n\n if (_this.props.containment) {\n var containmentDOMRect = _this.props.containment.getBoundingClientRect();\n\n containmentRect = {\n top: containmentDOMRect.top,\n left: containmentDOMRect.left,\n bottom: containmentDOMRect.bottom,\n right: containmentDOMRect.right\n };\n } else {\n containmentRect = {\n top: 0,\n left: 0,\n bottom: window.innerHeight || document.documentElement.clientHeight,\n right: window.innerWidth || document.documentElement.clientWidth\n };\n } // Check if visibility is wanted via offset?\n\n\n var offset = _this.props.offset || {};\n var hasValidOffset = _typeof(offset) === \"object\";\n\n if (hasValidOffset) {\n containmentRect.top += offset.top || 0;\n containmentRect.left += offset.left || 0;\n containmentRect.bottom -= offset.bottom || 0;\n containmentRect.right -= offset.right || 0;\n }\n\n var visibilityRect = {\n top: rect.top >= containmentRect.top,\n left: rect.left >= containmentRect.left,\n bottom: rect.bottom <= containmentRect.bottom,\n right: rect.right <= containmentRect.right\n }; // https://github.com/joshwnj/react-visibility-sensor/pull/114\n\n var hasSize = rect.height > 0 && rect.width > 0;\n var isVisible = hasSize && visibilityRect.top && visibilityRect.left && visibilityRect.bottom && visibilityRect.right; // check for partial visibility\n\n if (hasSize && _this.props.partialVisibility) {\n var partialVisible = rect.top <= containmentRect.bottom && rect.bottom >= containmentRect.top && rect.left <= containmentRect.right && rect.right >= containmentRect.left; // account for partial visibility on a single edge\n\n if (typeof _this.props.partialVisibility === \"string\") {\n partialVisible = visibilityRect[_this.props.partialVisibility];\n } // if we have minimum top visibility set by props, lets check, if it meets the passed value\n // so if for instance element is at least 200px in viewport, then show it.\n\n\n isVisible = _this.props.minTopValue ? partialVisible && rect.top <= containmentRect.bottom - _this.props.minTopValue : partialVisible;\n } // Deprecated options for calculating offset.\n\n\n if (typeof offset.direction === \"string\" && typeof offset.value === \"number\") {\n console.warn(\"[notice] offset.direction and offset.value have been deprecated. They still work for now, but will be removed in next major version. Please upgrade to the new syntax: { %s: %d }\", offset.direction, offset.value);\n isVisible = _lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3___default()(offset, rect, containmentRect);\n }\n\n var state = _this.state; // notify the parent when the value changes\n\n if (_this.state.isVisible !== isVisible) {\n state = {\n isVisible: isVisible,\n visibilityRect: visibilityRect\n };\n\n _this.setState(state);\n\n if (_this.props.onChange) _this.props.onChange(isVisible);\n }\n\n return state;\n });\n\n _this.state = {\n isVisible: null,\n visibilityRect: {}\n };\n return _this;\n }\n\n _createClass(VisibilitySensor, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.findDOMNode(this);\n\n if (this.props.active) {\n this.startWatching();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopWatching();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // re-register node in componentDidUpdate if children diffs [#103]\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.findDOMNode(this);\n\n if (this.props.active && !prevProps.active) {\n this.setState({\n isVisible: null,\n visibilityRect: {}\n });\n this.startWatching();\n } else if (!this.props.active) {\n this.stopWatching();\n }\n }\n }, {\n key: \"roundRectDown\",\n value: function roundRectDown(rect) {\n return {\n top: Math.floor(rect.top),\n left: Math.floor(rect.left),\n bottom: Math.floor(rect.bottom),\n right: Math.floor(rect.right)\n };\n }\n /**\n * Check if the element is within the visible viewport\n */\n\n }, {\n key: \"render\",\n value: function render() {\n if (this.props.children instanceof Function) {\n return this.props.children({\n isVisible: this.state.isVisible,\n visibilityRect: this.state.visibilityRect\n });\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.Children.only(this.props.children);\n }\n }]);\n\n return VisibilitySensor;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\n_defineProperty(VisibilitySensor, \"defaultProps\", {\n active: true,\n partialVisibility: false,\n minTopValue: 0,\n scrollCheck: false,\n scrollDelay: 250,\n scrollThrottle: -1,\n resizeCheck: false,\n resizeDelay: 250,\n resizeThrottle: -1,\n intervalCheck: true,\n intervalDelay: 100,\n delayedCall: false,\n offset: {},\n containment: null,\n children: react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null)\n});\n\n_defineProperty(VisibilitySensor, \"propTypes\", {\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n active: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n partialVisibility: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOf([\"top\", \"right\", \"bottom\", \"left\"])]),\n delayedCall: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n offset: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n top: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n left: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n bottom: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n right: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number\n }), // deprecated offset property\n prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n direction: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOf([\"top\", \"right\", \"bottom\", \"left\"]),\n value: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number\n })]),\n scrollCheck: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n scrollDelay: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n scrollThrottle: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n resizeCheck: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n resizeDelay: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n resizeThrottle: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n intervalCheck: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n intervalDelay: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n containment: typeof window !== \"undefined\" ? prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.instanceOf(window.Element) : prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.any,\n children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func]),\n minTopValue: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number\n});\n\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = __webpack_require__(6);\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ })\n/******/ ]);\n});","export enum MouseButtons {\r\n LeftButton = 0,\r\n MiddleButton = 1,\r\n RightButton = 2\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum EmailValidationStatus {\r\n\tUnknown = 0,\r\n\tDeliverable = 1,\r\n\tUndeliverable = 2,\r\n\tRisky = 3\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum ResizedImageFormat {\r\n\tPreserve = 0,\r\n\tJpg = 1,\r\n\tJpeg = 1,\r\n\tPng = 2,\r\n\tGif = 3,\r\n\tBmp = 4\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum ScaleMode {\r\n\tDefault = 0,\r\n\tCrop = 1,\r\n\tPad = 2,\r\n\tBoxPad = 3,\r\n\tMax = 4,\r\n\tMin = 5,\r\n\tStretch = 6\r\n}\r\n","import { AspectRatio } from '../../../ResizedImage/AspectRatio.csharp';\r\nimport { ResponsiveImageViewModel } from './ResponsiveImageViewModel.csharp';\r\n\r\nexport class ImageCropper {\r\n // port from ImageCropper.cs from EpiResponsivePicture\r\n static getCropSettings(aspectRatio: AspectRatio, image: ResponsiveImageViewModel): string | null {\r\n if (image == null) return null;\r\n\r\n const focalPoint = image.focalPoint || { x: 0.5, y: 0.5 };\r\n\r\n const sourceWidth = image.width;\r\n const sourceHeight = image.height;\r\n const focalPointY = Math.round(sourceHeight * focalPoint.y);\r\n const focalPointX = Math.round(sourceWidth * focalPoint.x);\r\n const sourceAspectRatio = sourceWidth / sourceHeight;\r\n\r\n const targetAspectRatio = aspectRatio != null && aspectRatio.ratio > 0 ? aspectRatio.ratio : sourceAspectRatio;\r\n\r\n let x1 = 0;\r\n let y1 = 0;\r\n let x2;\r\n let y2;\r\n if (targetAspectRatio === sourceAspectRatio) {\r\n x2 = image.width;\r\n y2 = image.height;\r\n } else if (targetAspectRatio > sourceAspectRatio) {\r\n // the requested aspect ratio is wider than the source image\r\n const newHeight = Math.floor(sourceWidth / targetAspectRatio);\r\n x2 = sourceWidth;\r\n y1 = Math.max(focalPointY - Math.round(newHeight / 2), 0);\r\n y2 = Math.min(y1 + newHeight, sourceHeight);\r\n if (y2 == sourceHeight) {\r\n y1 = y2 - newHeight;\r\n }\r\n } else {\r\n // the requested aspect ratio is narrower than the source image\r\n const newWidth = Math.round(sourceHeight * targetAspectRatio);\r\n x1 = Math.max(focalPointX - Math.round(newWidth / 2), 0);\r\n x2 = Math.min(x1 + newWidth, sourceWidth);\r\n y2 = sourceHeight;\r\n if (x2 == sourceWidth) {\r\n x1 = x2 - newWidth;\r\n }\r\n }\r\n return `${x1},${y1},${x2},${y2}`;\r\n }\r\n}\r\n","import { AspectRatio } from '../../../ResizedImage/AspectRatio.csharp';\r\nimport { PictureProfile } from '../../../ResizedImage/PictureProfile.csharp';\r\nimport { PictureSource } from '../../../ResizedImage/PictureSource.csharp';\r\nimport { ResizedImageFormat } from '../../../ResizedImage/ResizedImageFormat.csharp';\r\nimport { ScaleMode } from '../../../ResizedImage/ScaleMode.csharp';\r\nimport { FocusAreaViewModel } from './FocusAreaViewModel.csharp';\r\nimport { ImageCropper } from './ImageCropper';\r\nimport { ResponsiveImageViewModel } from './ResponsiveImageViewModel.csharp';\r\nimport { ResponsivePictureViewModel } from './ResponsivePictureViewModel.csharp';\r\n\r\nexport class ResponsivePictureBuilder {\r\n profile: PictureProfile;\r\n model: ResponsivePictureViewModel;\r\n\r\n constructor(profile: PictureProfile, model: ResponsivePictureViewModel) {\r\n this.profile = profile;\r\n this.model = model;\r\n }\r\n\r\n public getSizes = (): string => {\r\n return this.profile.sources.map((source) => source.sizes.join(', ')).join(', ');\r\n };\r\n\r\n public getSrcSet = (source: PictureSource) => {\r\n return source.allowedWidths.map((width) => this.buildSize(width, source.targetAspectRatio, source.mode, source.quality?.quality)).join(', ');\r\n };\r\n\r\n public getAllSrcSets = (): string => {\r\n return this.profile.sources.map(this.getSrcSet).join(', ');\r\n };\r\n\r\n public getDefaultUrl(): string {\r\n return this.buildResizedImageUrl(this.model.url || '', this.profile.defaultWidth, this.profile.format);\r\n }\r\n\r\n public getDefaultData(): { size: number; url: string } {\r\n const maxSize = Math.max(this.model.responsiveData.width, this.model.responsiveData.height) - 1;\r\n const defaultSize = this.profile?.sources ? Math.max(...this.profile.sources[0].allowedWidths) : 1024;\r\n const size = Math.min(maxSize, defaultSize);\r\n\r\n return { url: this.getResizedImageUrl(this.model.url || '', this.profile.format, size, size, ScaleMode.Pad), size };\r\n }\r\n\r\n private buildSize(width: number, targetAspectRatio: AspectRatio, mode?: ScaleMode, quality?: number): string {\r\n const url = this.buildResizedImageUrl(\r\n this.model.url,\r\n width,\r\n this.profile.format,\r\n mode,\r\n targetAspectRatio,\r\n quality,\r\n this.model.responsiveData,\r\n this.profile.maxImageDimension\r\n );\r\n\r\n return `${url} ${width}w`;\r\n }\r\n\r\n public getResizedImageUrl(\r\n imageUrl: string,\r\n format: ResizedImageFormat = ResizedImageFormat.Preserve,\r\n width: number | null = null,\r\n height: number | null = null,\r\n mode: ScaleMode | null = null,\r\n quality: number | null = null,\r\n crop: string | null = null\r\n ) {\r\n const urlParams = [];\r\n\r\n if (width) {\r\n urlParams.push(`width=${width}`);\r\n }\r\n\r\n if (height) {\r\n urlParams.push(`height=${height}`);\r\n }\r\n\r\n if (mode) {\r\n const modeString = ScaleMode[mode];\r\n urlParams.push(`rmode=${modeString}`);\r\n }\r\n\r\n if (quality) {\r\n urlParams.push(`quality=${quality.toString()}`);\r\n }\r\n\r\n if (crop) {\r\n urlParams.push(`crop=${crop}`);\r\n }\r\n\r\n if (format != ResizedImageFormat.Preserve) {\r\n urlParams.push(`format=${ResizedImageFormat[format].toLowerCase()}`);\r\n }\r\n\r\n const concatenationSign = imageUrl.includes('?') ? '&' : '?';\r\n\r\n return urlParams.length > 0 ? imageUrl + concatenationSign + urlParams.join('&') : imageUrl;\r\n }\r\n\r\n private buildResizedImageUrl(\r\n imageUrl: string,\r\n width: number,\r\n format?: ResizedImageFormat,\r\n mode?: ScaleMode,\r\n targetAspectRatio?: AspectRatio,\r\n quality?: number,\r\n image?: ResponsiveImageViewModel,\r\n maxImageDimension?: number\r\n ) {\r\n if (image == null) return imageUrl;\r\n\r\n if (mode !== ScaleMode.Default && mode !== ScaleMode.Max && (targetAspectRatio == null || targetAspectRatio.ratio < 0)) {\r\n throw `Error for image ${imageUrl}. Aspect ratio is required when ScaleMode is other than Max`;\r\n }\r\n\r\n const originalAspectRatio = {\r\n ratio: image.width / image.height,\r\n hasValue: true\r\n };\r\n\r\n maxImageDimension = maxImageDimension || 3200;\r\n\r\n width = Math.min(width, maxImageDimension);\r\n let height = null;\r\n let crop = null;\r\n\r\n if (targetAspectRatio) {\r\n height = width / targetAspectRatio.ratio;\r\n } else {\r\n const dimension = width / originalAspectRatio.ratio;\r\n if (dimension > maxImageDimension) {\r\n height = dimension;\r\n }\r\n }\r\n\r\n if (height && height > maxImageDimension) {\r\n const ratio = width / height;\r\n height = maxImageDimension;\r\n width = height * ratio;\r\n }\r\n\r\n if (image.focusArea && image.shouldUseFocusArea && mode !== ScaleMode.Crop) {\r\n crop = this.buildCrop(image.focusArea);\r\n }\r\n\r\n if (mode == ScaleMode.Crop && targetAspectRatio) {\r\n crop = ImageCropper.getCropSettings(targetAspectRatio, image);\r\n }\r\n\r\n return this.getResizedImageUrl(imageUrl, format, width, height, mode, quality, crop);\r\n }\r\n\r\n private buildCrop(focusArea: FocusAreaViewModel) {\r\n return `${focusArea.left},${focusArea.top},${focusArea.right},${focusArea.bottom}`;\r\n }\r\n}\r\n","import { isServerRendering } from './IsServerRendering';\r\n\r\nexport const isMobile = (): boolean => {\r\n return !isServerRendering() && window.innerWidth < 768;\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { DiscountVariant } from '../../Blocks/DiscountVariant.csharp';\r\nimport { InfoLabelProps } from './InfoLabelProps';\r\n\r\nexport const NewProductInfoLabel: React.FunctionComponent = (props) => {\r\n return (\r\n
    \r\n {getTranslation(keys['enum.infoBanner.newItem'])}\r\n
    \r\n );\r\n};\r\n","export class StorageAccessor {\r\n static storage: Storage | false;\r\n\r\n public static getItem(key: string) {\r\n return this.storage && this.storage.getItem(key);\r\n }\r\n\r\n public static getObject(key: string): T | null;\r\n public static getObject(key: string, defaultValue: T): T;\r\n public static getObject(key: string, defaultValue = null) {\r\n if (!this.storage) {\r\n return defaultValue;\r\n }\r\n\r\n const valueString = this.storage.getItem(key);\r\n if (valueString === null) {\r\n return defaultValue;\r\n }\r\n\r\n return JSON.parse(valueString) as T;\r\n }\r\n\r\n public static setItem(key: string, value: string) {\r\n this.storage && this.storage.setItem(key, value);\r\n }\r\n\r\n public static setObject(key: string, value: T) {\r\n this.storage && this.storage.setItem(key, JSON.stringify(value));\r\n }\r\n\r\n public static removeItem(key: string) {\r\n this.storage && this.storage.removeItem(key);\r\n }\r\n\r\n public static clear() {\r\n this.storage && this.storage.clear();\r\n }\r\n}\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { RenderHTML } from '../../../../../ReactComponents/RenderHTML';\r\nimport { ResponsivePicture } from '../../../../../ReactComponents/ResponsivePicture/ResponsivePicture';\r\nimport { TextColor } from '../../../../TextColor.csharp';\r\nimport { WidthVariant } from '../../../../WidthVariant.csharp';\r\nimport { FeaturedInfoProps } from './FeaturedInfoProps.csharp';\r\n\r\nexport const FeaturedInfo = (props: FeaturedInfoProps) => {\r\n const {\r\n narrowProfile,\r\n wideProfile,\r\n model: { heading, image, layout, link, text, textColor, narrowPictureProfile, widePictureProfile }\r\n } = props;\r\n\r\n const profile = layout == WidthVariant.OneColumn ? narrowProfile || narrowPictureProfile : wideProfile || widePictureProfile;\r\n\r\n const content = (\r\n <>\r\n {image && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n {heading && {heading}}\r\n {text && }\r\n
    \r\n \r\n );\r\n\r\n const blockClassNames = classNames(\r\n 'FeaturedInfo',\r\n `FeaturedInfo--${TextColor[textColor]}`,\r\n `FeaturedInfo--${WidthVariant[layout]}`,\r\n !heading && !text && 'FeaturedInfo--WithoutText'\r\n );\r\n\r\n return (\r\n
    \r\n {link ? (\r\n \r\n {content}\r\n \r\n ) : (\r\n content\r\n )}\r\n
    \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\n\r\ninterface ISnackbarProps {\r\n isVisible: boolean;\r\n heading: string;\r\n text: string;\r\n linkUrl: string;\r\n linkText: string;\r\n onClose: () => void;\r\n className?: string;\r\n onLinkClick?: () => void;\r\n autoHide?: boolean;\r\n}\r\n\r\nexport const Snackbar = (props: ISnackbarProps) => {\r\n const [isHidden, setIsHidden] = useState(true);\r\n const [isClosed, setIsClosed] = useState(true);\r\n\r\n const autoHideTimeout = 10000;\r\n const hideAnimationDuration = 1000;\r\n const closeModalTimeout = useRef | null>(null);\r\n const fadeModalTimeout = useRef | null>(null);\r\n\r\n useEffect(() => {\r\n if (props.isVisible) {\r\n setIsHidden(false);\r\n setIsClosed(false);\r\n setHideTimeouts();\r\n }\r\n }, [props.isVisible]);\r\n\r\n const clearTimeouts = () => {\r\n fadeModalTimeout.current && clearTimeout(fadeModalTimeout.current);\r\n closeModalTimeout.current && clearTimeout(closeModalTimeout.current);\r\n };\r\n\r\n const setHideTimeouts = () => {\r\n if (props.autoHide) {\r\n fadeModalTimeout.current = setTimeout(() => {\r\n setIsHidden(true);\r\n }, autoHideTimeout - hideAnimationDuration);\r\n\r\n closeModalTimeout.current = setTimeout(() => {\r\n setIsClosed(true);\r\n props.onClose();\r\n }, autoHideTimeout);\r\n }\r\n };\r\n\r\n const handleClose = () => {\r\n setIsClosed(true);\r\n setIsHidden(true);\r\n props.onClose();\r\n };\r\n\r\n return isClosed ? null : (\r\n
    \r\n \r\n\r\n
    \r\n \r\n
    \r\n

    {props.heading}

    \r\n

    {props.text}

    \r\n \r\n {props.linkText}\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","import classnames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { isMobile } from '../../../ReactComponents/IsMobile';\r\nimport { ProductCardVariant } from '../ProductCardVariant.csharp';\r\n\r\ninterface IProductCardPlaceholderProps {\r\n variant: ProductCardVariant;\r\n}\r\n\r\nexport const ProductCardPlaceholder = ({ variant }: IProductCardPlaceholderProps) => {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {isMobile() && variant === ProductCardVariant.HorizontalCompact && (\r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","import classNames from 'classnames';\r\nimport React, { ChangeEvent, useRef, useState } from 'react';\r\nimport _ from 'underscore';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { EmailValidationResult } from '../../../Validation/EmailValidationResult.csharp';\r\nimport { EmailValidationStatus } from '../../../Validation/EmailValidationStatus.csharp';\r\nimport { postFor } from '../../ReactComponents/API';\r\nimport { Button, ButtonSize, ButtonVariant } from '../../ReactComponents/Buttons/Button';\r\n\r\ninterface EmailInputProps {\r\n errorMessage?: string;\r\n checkEmailUrl?: string;\r\n onEmailChange: (email: string) => void;\r\n onKeyUp?: (e: React.KeyboardEvent) => void;\r\n onInput?: () => void;\r\n setLoadingStatus?: (isLoading: boolean) => void;\r\n showEmailSuggestionMessage: boolean;\r\n}\r\n\r\nexport const EmailInput = (props: EmailInputProps) => {\r\n const [email, setEmail] = useState('');\r\n const [isEmailWarningVisible, setIsEmailWarningVisible] = useState(false);\r\n const [emailSuggestion, setEmailSuggestion] = useState('');\r\n\r\n const isEmailCheckInProgress = useRef(false);\r\n const currentTimeout = useRef(null);\r\n\r\n const renderEmailSuggestionWarning = () => {\r\n if (!props.showEmailSuggestionMessage) {\r\n return null;\r\n }\r\n\r\n return emailSuggestion ? (\r\n <>\r\n {getTranslation(keys['newsletter.DidYouMean'])}\r\n \r\n ?\r\n \r\n ) : (\r\n getTranslation(keys['newsletter.AreYouSure'])\r\n );\r\n };\r\n\r\n const pickSuggestion = () => {\r\n setEmail(emailSuggestion);\r\n props.onEmailChange(emailSuggestion);\r\n setEmailSuggestion('');\r\n setIsEmailWarningVisible(false);\r\n };\r\n\r\n const handleInputOnChange = (event: ChangeEvent) => {\r\n const newEmail = event.target.value;\r\n setEmail(newEmail);\r\n\r\n props.setLoadingStatus?.(true);\r\n props.onInput && props.onInput();\r\n\r\n if (props.showEmailSuggestionMessage) {\r\n checkEmailValidityDebounced.current(newEmail);\r\n } else {\r\n props.onEmailChange(newEmail);\r\n }\r\n };\r\n\r\n const handleInputOnBlur = (event: ChangeEvent) => {\r\n if (event.target.value !== email) checkEmailValidity(event.target.value);\r\n };\r\n\r\n const checkEmailValidity = (newEmail: string) => {\r\n if (!newEmail || !props.checkEmailUrl) return props.onEmailChange(newEmail);\r\n\r\n if (!isEmailCheckInProgress.current) {\r\n isEmailCheckInProgress.current = true;\r\n\r\n postFor(props.checkEmailUrl, { emailAddress: newEmail })\r\n .then((result: EmailValidationResult) => {\r\n if (result.suggestion) {\r\n setIsEmailWarningVisible(props.showEmailSuggestionMessage);\r\n setEmailSuggestion(result.suggestion);\r\n } else if (result.status === EmailValidationStatus.Undeliverable) {\r\n setIsEmailWarningVisible(props.showEmailSuggestionMessage);\r\n setEmailSuggestion('');\r\n } else {\r\n setIsEmailWarningVisible(false);\r\n setEmailSuggestion('');\r\n }\r\n })\r\n\r\n .catch(() => {\r\n setIsEmailWarningVisible(false);\r\n })\r\n .finally(() => {\r\n props.onEmailChange(newEmail);\r\n props.setLoadingStatus?.(false);\r\n clearEmailValidationBusy();\r\n });\r\n }\r\n\r\n refreshValidationTimeout();\r\n };\r\n\r\n const checkEmailValidityDebounced = React.useRef(_.debounce(checkEmailValidity, 1000));\r\n\r\n const refreshValidationTimeout = () => {\r\n clearOldTimeout();\r\n };\r\n\r\n const clearEmailValidationBusy = () => {\r\n isEmailCheckInProgress.current = false;\r\n clearOldTimeout();\r\n };\r\n\r\n const clearOldTimeout = () => {\r\n if (currentTimeout.current) {\r\n clearTimeout(currentTimeout.current);\r\n }\r\n };\r\n\r\n const labelClassNames = classNames(\r\n 'EmailInput__Label',\r\n isEmailWarningVisible && props.showEmailSuggestionMessage && 'EmailInput__Label--Warning',\r\n props.errorMessage && 'EmailInput__Label--Error'\r\n );\r\n\r\n return (\r\n
    \r\n \r\n\r\n {(props.errorMessage || isEmailWarningVisible) && (\r\n \r\n {props.errorMessage || renderEmailSuggestionWarning()}\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum PurchaseConfirmationForm {\r\n\tViagra = 0,\r\n\tDuraphat = 1,\r\n\tUnknown = 2147483647\r\n}\r\n","export enum QuestionState {\r\n Yes,\r\n No,\r\n NotAnswered,\r\n WithSubQuestions\r\n}\r\n\r\nexport interface SubQuestion {\r\n text: string;\r\n value: QuestionState;\r\n explanation?: string;\r\n}\r\n\r\nexport interface Question {\r\n text: string;\r\n value: QuestionState;\r\n subQuestions?: SubQuestion[];\r\n explanation?: string;\r\n}\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { PurchaseConfirmationForm } from '../../../../../../../Common/Pim/Enums/PurchaseConfirmationForm.csharp';\r\nimport { getTranslation, keys } from '../../../../../../../Resources/Translations';\r\nimport { Button, ButtonLoaderPlacement, ButtonSize, ButtonVariant } from '../../../../../../ReactComponents/Buttons/Button';\r\nimport { NavigationTrackerButtonLink } from '../../../../../../ReactComponents/NavigationTracker/NavigationTrackerButtonLink';\r\nimport { AddToCartMode } from '../../ViewModel/AddToCartMode.csharp';\r\nimport { AddToCartViewModel } from '../../ViewModel/AddToCartViewModel.csharp';\r\n\r\ninterface AddToCartButtonProps {\r\n model: AddToCartViewModel;\r\n isLoading: boolean;\r\n isProductPage: boolean;\r\n prescriptionUrl: string;\r\n displaySucceededMessage: boolean;\r\n}\r\n\r\nexport const AddToCartButton = ({\r\n model: { mode, formConfiguration, isOnPrescription },\r\n isLoading,\r\n isProductPage,\r\n prescriptionUrl,\r\n displaySucceededMessage\r\n}: AddToCartButtonProps) => {\r\n const buttonContent = () => {\r\n if (displaySucceededMessage) {\r\n return (\r\n
    \r\n {getTranslation(keys['addToCart.successfullyAdded'])}\r\n \r\n
    \r\n );\r\n }\r\n\r\n return formConfiguration?.type !== PurchaseConfirmationForm.Unknown && isProductPage\r\n ? getTranslation(keys['addToCart.buyWithGuidance'])\r\n : getTranslation(keys['addToCart.buy']);\r\n };\r\n\r\n const size = isProductPage ? ButtonSize.Large : ButtonSize.XSmall;\r\n const variant = isProductPage ? ButtonVariant.Primary : ButtonVariant.Secondary;\r\n const disabled = !isProductPage && isLoading;\r\n const loading = isProductPage && isLoading;\r\n const placement = isProductPage ? ButtonLoaderPlacement.Left : ButtonLoaderPlacement.Right;\r\n const className = classNames('AddToCartButton', isProductPage && 'AddToCartButton--Big', displaySucceededMessage && 'AddToCartButton--InvertedColors');\r\n\r\n if (mode === AddToCartMode.Default) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (mode === AddToCartMode.Prescription && prescriptionUrl) {\r\n return (\r\n \r\n {isProductPage ? getTranslation(keys['product.myPrescriptions']) : getTranslation(keys['productCard.prescription'])}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { v4 as uuid } from 'uuid';\r\n\r\nimport { PictureProfile } from '../../../../ResizedImage/PictureProfile.csharp';\r\nimport { getTranslation, keys } from '../../../../Resources/Translations';\r\nimport { DuraphatSettings } from '../../../Blocks/FormsConfiguration/Duraphat/DuraphatSettings.csharp';\r\nimport { Button, ButtonSize, ButtonVariant } from '../../Buttons/Button';\r\nimport { PriceDisplay } from '../../PriceDisplay';\r\nimport { ResponsivePicture } from '../../ResponsivePicture/ResponsivePicture';\r\nimport { ResponsivePictureViewModel } from '../../ResponsivePicture/ResponsivePictureViewModel.csharp';\r\nimport { ScrollLock } from '../../ScrollLock/ScrollLock';\r\n\r\ninterface DuraphatFormProps {\r\n pictureProfile: PictureProfile;\r\n isVisible: boolean;\r\n addToCart: () => void;\r\n closeForm: () => void;\r\n image: ResponsivePictureViewModel;\r\n brandName: string;\r\n productName: string;\r\n productPrice: number;\r\n formConfiguration: DuraphatSettings;\r\n}\r\n\r\ninterface DuraphatFormState {\r\n isCheckboxChecked: boolean;\r\n}\r\n\r\n// eslint-disable-next-line\r\ndeclare let zE: any;\r\n\r\nexport class DuraphatForm extends React.Component {\r\n private readonly checkboxId: string;\r\n\r\n constructor(props: DuraphatFormProps) {\r\n super(props);\r\n this.checkboxId = uuid();\r\n }\r\n\r\n state = {\r\n isCheckboxChecked: false\r\n };\r\n\r\n render() {\r\n const { pictureProfile, isVisible, closeForm, image, brandName, productName, productPrice, formConfiguration } = this.props;\r\n\r\n return (\r\n
    \r\n \r\n\r\n
    e.stopPropagation()}>\r\n \r\n\r\n
    \r\n

    Reseptfritt med veiledning

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {brandName}\r\n {productName}\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n this.setState({ isCheckboxChecked: !this.state.isCheckboxChecked })}\r\n />\r\n \r\n
    \r\n\r\n

    {getTranslation(keys['duraphatForm.ageConsent'])}:

    \r\n\r\n
      \r\n
    • {getTranslation(keys['duraphatForm.cavities'])}
    • \r\n
    • {getTranslation(keys['duraphatForm.visibleRoots'])}
    • \r\n
    • {getTranslation(keys['duraphatForm.hygieneDifficulties'])}
    • \r\n
    • {getTranslation(keys['duraphatForm.dryMouth'])}
    • \r\n
    \r\n\r\n \r\n
    \r\n\r\n
    \r\n \r\n {getTranslation(keys['duraphatForm.contact'])}\r\n \r\n \r\n {getTranslation(keys['duraphatForm.buy'])}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n private addToCart = () => {\r\n if (this.state.isCheckboxChecked) {\r\n this.closeZenDesk();\r\n this.props.addToCart();\r\n this.props.closeForm();\r\n }\r\n };\r\n\r\n private openZenDesk = () => {\r\n typeof zE !== 'undefined' && zE('webWidget', 'open');\r\n };\r\n\r\n private closeZenDesk = () => {\r\n typeof zE !== 'undefined' && zE('webWidget', 'close');\r\n };\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../Resources/Translations';\r\n\r\ninterface ViagraFormGenderSelectProps {\r\n isMan?: boolean;\r\n selectMan: () => void;\r\n selectWoman: () => void;\r\n}\r\n\r\nexport const ViagraFormGenderSelect = ({ isMan, selectMan, selectWoman }: ViagraFormGenderSelectProps) => {\r\n return (\r\n
    \r\n
    \r\n {getTranslation(keys['viagraForm.validation'])}\r\n
    \r\n
    \r\n {getTranslation(keys['viagraForm.gender'])}:\r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { PictureProfile } from '../../../../ResizedImage/PictureProfile.csharp';\r\nimport { PriceDisplay } from '../../PriceDisplay';\r\nimport { ResponsivePicture } from '../../ResponsivePicture/ResponsivePicture';\r\nimport { ResponsivePictureViewModel } from '../../ResponsivePicture/ResponsivePictureViewModel.csharp';\r\n\r\ninterface ViagraFormHeaderProps {\r\n profile: PictureProfile;\r\n image: ResponsivePictureViewModel;\r\n mainName: string;\r\n additionalName: string;\r\n price: number;\r\n}\r\n\r\nexport const ViagraFormHeader = ({ profile, image, mainName, additionalName, price }: ViagraFormHeaderProps) => {\r\n return (\r\n <>\r\n

    Reseptfritt med veiledning

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {mainName}\r\n {additionalName}\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../Resources/Translations';\r\nimport { Question, QuestionState } from './ViagraFormTypings';\r\n\r\ninterface ViagraFormAnswersButtonsProps {\r\n questionIndex: number;\r\n subQuestionIndex?: number;\r\n setQuestionAnswer: (answer: QuestionState, questionIndex: number, subQuestionIndex?: number) => void;\r\n question: Question;\r\n}\r\n\r\nexport const ViagraFormAnswersButtons = ({ questionIndex, setQuestionAnswer, subQuestionIndex, question }: ViagraFormAnswersButtonsProps) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { Collapse } from 'react-collapse';\r\n\r\nimport { getTranslation, keys } from '../../../../Resources/Translations';\r\nimport { ViagraFormAnswersButtons } from './ViagraFormAnswersButtons';\r\nimport { Question, QuestionState } from './ViagraFormTypings';\r\n\r\ninterface ViagraQuestionProps {\r\n question: Question;\r\n showErrors: boolean;\r\n questionIndex: number;\r\n setQuestionAnswer: (answer: QuestionState, questionIndex: number, subQuestionIndex?: number) => void;\r\n}\r\n\r\nexport const ViagraFormQuestion = ({ question, showErrors, questionIndex, setQuestionAnswer }: ViagraQuestionProps) => {\r\n const areSubQuestionsChecked = (question: Question): boolean => {\r\n let areAllChecked = true;\r\n\r\n if (question.value !== QuestionState.WithSubQuestions) return true;\r\n\r\n question.subQuestions?.map((subQuestion) => {\r\n if (subQuestion.value === QuestionState.NotAnswered) areAllChecked = false;\r\n });\r\n\r\n return areAllChecked;\r\n };\r\n\r\n const addError = (q: Question) => {\r\n return (\r\n q.explanation && (\r\n \r\n

    {q.explanation}

    \r\n
    \r\n )\r\n );\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n {questionIndex + 1}\r\n \r\n {question.value === QuestionState.WithSubQuestions ? (\r\n question.text\r\n ) : (\r\n <>\r\n {question.text}*{getTranslation(keys['viagraForm.required'])}\r\n \r\n )}\r\n \r\n
    \r\n {question.value === QuestionState.WithSubQuestions ? (\r\n question.subQuestions &&\r\n question.subQuestions.map((subQuestion, j) => (\r\n \r\n
    \r\n \r\n {subQuestion.text}*{getTranslation(keys['viagraForm.required'])}\r\n \r\n
    \r\n \r\n {addError(subQuestion)}\r\n
    \r\n ))\r\n ) : (\r\n \r\n )}\r\n {question.value !== QuestionState.WithSubQuestions && addError(question)}\r\n
    \r\n
    \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\n\r\nimport { PictureProfile } from '../../../../ResizedImage/PictureProfile.csharp';\r\nimport { getTranslation, keys } from '../../../../Resources/Translations';\r\nimport { ApplicationInsights } from '../../ApplicationInsights';\r\nimport { Button, ButtonSize } from '../../Buttons/Button';\r\nimport { isServerRendering } from '../../IsServerRendering';\r\nimport { ResponsivePictureViewModel } from '../../ResponsivePicture/ResponsivePictureViewModel.csharp';\r\nimport { ScrollLock } from '../../ScrollLock/ScrollLock';\r\nimport { ViagraFormGenderSelect } from './ViagraFormGenderSelect';\r\nimport { ViagraFormHeader } from './ViagraFormHeader';\r\nimport { ViagraFormQuestion } from './ViagraFormQuestion';\r\nimport { Question, QuestionState } from './ViagraFormTypings';\r\n\r\ninterface ViagraFormProps {\r\n readonly isVisible: boolean;\r\n readonly addToCart: () => void;\r\n readonly closeForm: () => void;\r\n readonly mainName: string;\r\n readonly additionalName: string;\r\n readonly price: number;\r\n readonly image: ResponsivePictureViewModel;\r\n readonly profile: PictureProfile;\r\n}\r\n\r\ninterface ViagraFormState {\r\n readonly questions: Question[];\r\n readonly isMan?: boolean;\r\n readonly areAllChecked: boolean;\r\n readonly areCustomerAllowedToBuy: boolean;\r\n readonly isContactWithPharmacistChecked: boolean;\r\n readonly showErrors: boolean;\r\n readonly wasChatRejected: boolean;\r\n readonly isZenDeskEventAdded: boolean;\r\n readonly isChatOpen: boolean;\r\n readonly isCheckboxChecked: boolean;\r\n readonly isZenDeskUnavailable: boolean;\r\n readonly isZendeskChatServed: boolean;\r\n readonly isZendeskChatMessages: boolean;\r\n readonly isPredefinedMessageSent: boolean;\r\n}\r\n\r\n// eslint-disable-next-line\r\ndeclare let zE: any;\r\n// eslint-disable-next-line\r\ndeclare let zECustomSettings: any;\r\n\r\nexport class ViagraForm extends React.Component {\r\n constructor(props: ViagraFormProps) {\r\n super(props);\r\n\r\n this.state = {\r\n questions: this.getQuestions(),\r\n areAllChecked: false,\r\n areCustomerAllowedToBuy: false,\r\n isContactWithPharmacistChecked: true,\r\n showErrors: false,\r\n wasChatRejected: false,\r\n isZenDeskEventAdded: false,\r\n isChatOpen: false,\r\n isCheckboxChecked: false,\r\n isZenDeskUnavailable: false,\r\n isZendeskChatServed: false,\r\n isZendeskChatMessages: false,\r\n isPredefinedMessageSent: false\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: ViagraFormProps) {\r\n if (prevProps.isVisible && this.props.isVisible && !this.state.isZenDeskEventAdded && typeof zE !== 'undefined') {\r\n zE('webWidget:on', 'close', this.onChatClose);\r\n\r\n if (zECustomSettings?.useCustomizedZendeskForViagraForm) {\r\n zE('webWidget:on', 'userEvent', (userEvent: unknown) => {\r\n let action: string | undefined;\r\n if (this.hasActionAndEvent(userEvent)) {\r\n action = userEvent.action.toLowerCase();\r\n }\r\n\r\n if (action === 'chat served by operator') {\r\n this.setState({\r\n isZendeskChatServed: true\r\n });\r\n }\r\n\r\n if (action === 'web widget opened') {\r\n zE('webWidget', 'updateSettings', {\r\n webWidget: {\r\n contactForm: {\r\n suppress: false\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n zE('webWidget:on', 'chat:unreadMessages', () => {\r\n if (this.state.isZendeskChatServed) {\r\n this.setState({\r\n isZendeskChatMessages: true\r\n });\r\n }\r\n });\r\n\r\n zE('webWidget:on', 'chat:end', () => {\r\n if (this.state.isZendeskChatServed && this.state.isZendeskChatMessages) {\r\n if (this.state.areAllChecked && this.state.isCheckboxChecked && this.state.areCustomerAllowedToBuy) {\r\n this.allowToBuyAfterChatEnds();\r\n } else {\r\n this.setState({ isChatOpen: false });\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.setState({ isZenDeskEventAdded: true });\r\n }\r\n }\r\n\r\n render() {\r\n const { image, mainName, additionalName, price, profile, isVisible } = this.props;\r\n const { questions, isMan, areAllChecked, isContactWithPharmacistChecked, showErrors, wasChatRejected, isCheckboxChecked, isZenDeskUnavailable } =\r\n this.state;\r\n\r\n if (isServerRendering()) {\r\n return <>;\r\n }\r\n\r\n return ReactDOM.createPortal(\r\n
    \r\n \r\n\r\n
    e.stopPropagation()}>\r\n \r\n\r\n
    \r\n \r\n\r\n \r\n\r\n {isMan && (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {getTranslation(keys['viagraForm.discuss'])}\r\n \r\n {getTranslation(keys['viagraForm.yes'])}\r\n {getTranslation(keys['viagraForm.no'])}\r\n
    \r\n
    \r\n\r\n {questions.map((question, i) => (\r\n \r\n ))}\r\n\r\n
    \r\n
    \r\n
    \r\n {questions.length + 1}\r\n \r\n {getTranslation(keys['viagraForm.guidance'])}\r\n \r\n {getTranslation(keys['viagraForm.guidanceSubText'])}\r\n
    \r\n \r\n this.setState({ isContactWithPharmacistChecked: true })}\r\n checked={isContactWithPharmacistChecked}\r\n disabled={this.isDisabled()}\r\n />\r\n {getTranslation(keys['viagraForm.yes'])}\r\n \r\n \r\n this.setState({ isContactWithPharmacistChecked: false })}\r\n checked={!isContactWithPharmacistChecked}\r\n disabled={this.isDisabled()}\r\n />\r\n {getTranslation(keys['viagraForm.no'])}\r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n this.setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isCheckboxChecked: !prevState.isCheckboxChecked\r\n };\r\n }, this.checkStatus)\r\n }\r\n required\r\n />\r\n \r\n
    \r\n
    \r\n )}\r\n\r\n {showErrors && areAllChecked && isContactWithPharmacistChecked && wasChatRejected && (\r\n {getTranslation(keys['viagraForm.contactWithDoctor'])}\r\n )}\r\n\r\n {showErrors && isZenDeskUnavailable && (\r\n {getTranslation(keys['viagraForm.zenDeskUnavailable'])}\r\n )}\r\n\r\n {showErrors && (!areAllChecked || !isCheckboxChecked) && (\r\n {getTranslation(keys['viagraForm.answerAllQuestions'])}\r\n )}\r\n\r\n {isMan === false && (\r\n {getTranslation(keys['viagraForm.onlyForMan'])}\r\n )}\r\n\r\n {isMan && (\r\n
    \r\n \r\n {this.state.isContactWithPharmacistChecked\r\n ? getTranslation(keys['viagraForm.continue'])\r\n : getTranslation(keys['viagraForm.addToCart'])}\r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    ,\r\n document.body\r\n );\r\n }\r\n\r\n private shouldBeBuyButtonDisabled = (): boolean => {\r\n const { showErrors, areAllChecked, wasChatRejected, areCustomerAllowedToBuy, isChatOpen } = this.state;\r\n\r\n if (showErrors) {\r\n if (areAllChecked && wasChatRejected && areCustomerAllowedToBuy) return false;\r\n if (!areAllChecked) return true;\r\n if (!areCustomerAllowedToBuy) return true;\r\n if (isChatOpen) return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n private selectMan = () => {\r\n this.setState({ isMan: true });\r\n };\r\n\r\n private resetForm = (isMan: boolean | undefined, callback?: () => void) => {\r\n this.setState(\r\n {\r\n isMan: isMan,\r\n questions: this.getQuestions(),\r\n areAllChecked: false,\r\n wasChatRejected: false,\r\n isContactWithPharmacistChecked: true,\r\n showErrors: false,\r\n areCustomerAllowedToBuy: false,\r\n isCheckboxChecked: false\r\n },\r\n callback\r\n );\r\n };\r\n\r\n private selectWoman = () => {\r\n this.resetForm(false, this.closeChat);\r\n };\r\n\r\n private isDisabled = (): boolean => !this.state.wasChatRejected;\r\n\r\n private handleAddToCart = () => {\r\n const { areAllChecked, areCustomerAllowedToBuy, wasChatRejected, isContactWithPharmacistChecked } = this.state;\r\n\r\n if (areAllChecked && areCustomerAllowedToBuy && wasChatRejected && !isContactWithPharmacistChecked) {\r\n this.props.addToCart();\r\n this.props.closeForm();\r\n return this.resetForm(undefined);\r\n } else if (areAllChecked && areCustomerAllowedToBuy && isContactWithPharmacistChecked) {\r\n this.setState({ showErrors: true });\r\n return this.openChat();\r\n }\r\n\r\n return this.setState({ showErrors: true });\r\n };\r\n\r\n private hasActionAndEvent = (userEvent: unknown): userEvent is { action: string } => {\r\n return typeof userEvent === 'object' && userEvent !== null && 'action' in userEvent && typeof (userEvent as { action: unknown }).action === 'string';\r\n };\r\n\r\n private allowToBuyAfterChatEnds = () => {\r\n this.setState({\r\n isContactWithPharmacistChecked: false,\r\n wasChatRejected: true,\r\n isChatOpen: false,\r\n isZendeskChatServed: false,\r\n isZendeskChatMessages: false\r\n });\r\n };\r\n\r\n private loadZendeskForViagra = () => {\r\n zE('webWidget', 'updateSettings', {\r\n webWidget: {\r\n contactForm: {\r\n suppress: true\r\n },\r\n chat: {\r\n departments: {\r\n select: 360001299260\r\n }\r\n }\r\n }\r\n });\r\n zE('webWidget', 'chat:addTags', ['viagra']);\r\n zE('webWidget', 'show');\r\n zE('webWidget', 'open');\r\n if (this.state.isPredefinedMessageSent) return;\r\n\r\n if (zECustomSettings.predefinedMessage) {\r\n zE('webWidget', 'chat:send', zECustomSettings.predefinedMessage);\r\n this.setState({\r\n isPredefinedMessageSent: true\r\n });\r\n }\r\n };\r\n\r\n private openChat = () => {\r\n try {\r\n if (!zECustomSettings?.useCustomizedZendeskForViagraForm) {\r\n zE('webWidget', 'show');\r\n zE('webWidget', 'open');\r\n } else {\r\n this.loadZendeskForViagra();\r\n }\r\n this.setState({ isChatOpen: true, isZenDeskUnavailable: false });\r\n } catch (e) {\r\n ApplicationInsights.TrackException('ZenDesk chat unavailable in Viagra form');\r\n this.setState({ isZenDeskUnavailable: true, isChatOpen: false });\r\n }\r\n };\r\n\r\n private closeChat = () => {\r\n if (typeof zE !== 'undefined') {\r\n zE('webWidget', 'close');\r\n }\r\n };\r\n\r\n private onChatClose = () => {\r\n if (typeof zE !== 'undefined') {\r\n zE('webWidget', 'chat:removeTags', ['viagra']);\r\n }\r\n\r\n if (!zECustomSettings?.useCustomizedZendeskForViagraForm) {\r\n return this.allowToBuyAfterChatEnds();\r\n } else if (this.state.isZendeskChatServed && this.state.isZendeskChatMessages) {\r\n if (this.state.areAllChecked && this.state.isCheckboxChecked && this.state.areCustomerAllowedToBuy) {\r\n return this.allowToBuyAfterChatEnds();\r\n }\r\n }\r\n\r\n this.setState({ isChatOpen: false });\r\n };\r\n\r\n private setQuestionAnswer = (answer: QuestionState, questionIndex: number, subQuestionIndex?: number) => {\r\n this.setState((state) => {\r\n if (subQuestionIndex !== undefined && state.questions[questionIndex].subQuestions !== undefined) {\r\n // eslint-disable-next-line\r\n state.questions[questionIndex].subQuestions![subQuestionIndex].value = answer;\r\n } else {\r\n state.questions[questionIndex].value = answer;\r\n }\r\n\r\n return state;\r\n }, this.checkStatus);\r\n };\r\n\r\n private checkStatus = () => {\r\n let areCustomerAllowed = true;\r\n let areAllChecked = this.state.isCheckboxChecked;\r\n\r\n this.state.questions.map((question) => {\r\n if (question.value === QuestionState.WithSubQuestions && question.subQuestions) {\r\n question.subQuestions.map((subQuestion) => {\r\n if (subQuestion.value !== QuestionState.No) {\r\n areCustomerAllowed = false;\r\n }\r\n\r\n if (subQuestion.value === QuestionState.NotAnswered) {\r\n areAllChecked = false;\r\n }\r\n });\r\n } else {\r\n if (question.value !== QuestionState.No) {\r\n areCustomerAllowed = false;\r\n }\r\n\r\n if (question.value === QuestionState.NotAnswered) {\r\n areAllChecked = false;\r\n }\r\n }\r\n });\r\n\r\n if (areAllChecked && areCustomerAllowed) {\r\n this.setState({ areCustomerAllowedToBuy: true, areAllChecked: true });\r\n } else if (areAllChecked && !areCustomerAllowed) {\r\n this.setState({ areCustomerAllowedToBuy: false, areAllChecked: true });\r\n } else {\r\n this.setState({ areAllChecked: false });\r\n }\r\n };\r\n\r\n private getQuestions = (): Question[] => {\r\n return [\r\n {\r\n text: getTranslation(keys['viagraForm.anyOfFollowing']),\r\n value: QuestionState.WithSubQuestions,\r\n subQuestions: [\r\n {\r\n text: getTranslation(keys['viagraForm.lowBloodPressure']),\r\n explanation: getTranslation(keys['viagraForm.lowBloodPressureExplanation']),\r\n value: QuestionState.NotAnswered\r\n },\r\n {\r\n text: getTranslation(keys['viagraForm.highBloodPressure']),\r\n explanation: getTranslation(keys['viagraForm.highBloodPressureExplanation']),\r\n value: QuestionState.NotAnswered\r\n },\r\n {\r\n text: getTranslation(keys['viagraForm.angina']),\r\n explanation: getTranslation(keys['viagraForm.anginaExplanation']),\r\n value: QuestionState.NotAnswered\r\n },\r\n {\r\n text: getTranslation(keys['viagraForm.irregularHeartbeats']),\r\n explanation: getTranslation(keys['viagraForm.irregularHeartbeatsExplanation']),\r\n value: QuestionState.NotAnswered\r\n }\r\n ]\r\n },\r\n {\r\n text: getTranslation(keys['viagraForm.anticonvulsantMedicines']),\r\n explanation: getTranslation(keys['viagraForm.anticonvulsantMedicinesExplanation']),\r\n value: QuestionState.NotAnswered\r\n },\r\n {\r\n text: getTranslation(keys['viagraForm.heartAttack']),\r\n explanation: getTranslation(keys['viagraForm.heartAttackExplanation']),\r\n value: QuestionState.NotAnswered\r\n },\r\n {\r\n text: getTranslation(keys['viagraForm.poppers']),\r\n explanation: getTranslation(keys['viagraForm.poppersExplanation']),\r\n value: QuestionState.NotAnswered\r\n },\r\n {\r\n text: getTranslation(keys['viagraForm.adempas']),\r\n explanation: getTranslation(keys['viagraForm.adempasExplanation']),\r\n value: QuestionState.NotAnswered\r\n },\r\n {\r\n text: getTranslation(keys['viagraForm.ritonavir']),\r\n explanation: getTranslation(keys['viagraForm.ritonavirExplanation']),\r\n value: QuestionState.NotAnswered\r\n },\r\n {\r\n text: getTranslation(keys['viagraForm.opticDamage']),\r\n explanation: getTranslation(keys['viagraForm.opticDamageExplanation']),\r\n value: QuestionState.NotAnswered\r\n }\r\n ];\r\n };\r\n}\r\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\n\r\nimport { PurchaseConfirmationForm } from '../../../../../../Common/Pim/Enums/PurchaseConfirmationForm.csharp';\r\nimport { PictureProfile } from '../../../../../../ResizedImage/PictureProfile.csharp';\r\nimport { DuraphatSettings } from '../../../../../Blocks/FormsConfiguration/Duraphat/DuraphatSettings.csharp';\r\nimport { IFormConfiguration } from '../../../../../Blocks/FormsConfiguration/IFormConfiguration.csharp';\r\nimport { isServerRendering } from '../../../../../ReactComponents/IsServerRendering';\r\nimport { DuraphatForm } from '../../../../../ReactComponents/PurchaseConfirmationForms/DuraphatForm/DuraphatForm';\r\nimport { ViagraForm } from '../../../../../ReactComponents/PurchaseConfirmationForms/ViagraForm/ViagraForm';\r\nimport { ResponsivePictureViewModel } from '../../../../../ReactComponents/ResponsivePicture/ResponsivePictureViewModel.csharp';\r\n\r\ninterface AddToCartFormsProps {\r\n formConfiguration: IFormConfiguration;\r\n addToCart: () => void;\r\n closeForm: () => void;\r\n productBrand: string;\r\n productName: string;\r\n productPrice: number;\r\n productImage: ResponsivePictureViewModel;\r\n pictureProfile: PictureProfile;\r\n isFormVisible: boolean;\r\n}\r\n\r\nexport const AddToCartForms = (props: AddToCartFormsProps) => {\r\n const { formConfiguration, isFormVisible, addToCart, closeForm, productBrand, productName, pictureProfile, productImage, productPrice } = props;\r\n const modalRoot = !isServerRendering() && document.getElementById('modal-root');\r\n\r\n return modalRoot ? (\r\n <>\r\n {formConfiguration.type === PurchaseConfirmationForm.Viagra &&\r\n ReactDOM.createPortal(\r\n ,\r\n modalRoot\r\n )}\r\n\r\n {formConfiguration.type === PurchaseConfirmationForm.Duraphat &&\r\n ReactDOM.createPortal(\r\n ,\r\n modalRoot\r\n )}\r\n \r\n ) : null;\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../../../Resources/Translations';\r\n\r\ninterface AddToCartErrorProps {\r\n children: React.ReactNode;\r\n closeErrorMessage: () => void;\r\n canBeClosed?: boolean;\r\n isError?: boolean;\r\n className?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const AddToCartMessage = ({ isError, canBeClosed, closeErrorMessage, children, className, icon }: AddToCartErrorProps) => {\r\n return (\r\n
    \r\n {icon && {icon}}\r\n
    {children}
    \r\n {canBeClosed && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nimport { RxMaintenanceModel } from '../../../../../../Rx/RxMaintenanceModel.csharp';\r\n\r\nexport const RxMaintenanceAddToCartMessage = ({ header, message }: RxMaintenanceModel) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    {header}
    \r\n
    {message}
    \r\n
    \r\n
    \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { Collapse } from 'react-collapse';\r\n\r\nimport { getTranslation, getTranslationWithFallback, keys } from '../../../../../../Resources/Translations';\r\nimport { errorAdditionalInfo } from '../../../../../ReactComponents/QuantityUtils';\r\nimport { RxMaintenanceModel } from '../../../../../Rx/RxMaintenanceModel.csharp';\r\nimport { AddToCartMessage } from './AddToCartMessage/AddToCartMessage';\r\nimport { RxMaintenanceAddToCartMessage } from './RxMaintenanceAddToCartMessage/RxMaintenanceAddToCartMessage';\r\n\r\ninterface AddToCartMessagesProps {\r\n errors: string[];\r\n warningMessage: string;\r\n maxQuantity: number;\r\n minQuantity: number;\r\n closeErrorMessage: () => void;\r\n isProductPage: boolean;\r\n isOnPrescription: boolean;\r\n rxMaintenance?: RxMaintenanceModel;\r\n isOutOfStock: boolean;\r\n isNotAvailable: boolean;\r\n showRefrigeratedProductWarning: boolean;\r\n}\r\n\r\nexport const AddToCartMessages = (props: AddToCartMessagesProps) => {\r\n const getErrorMessage = () => {\r\n const { errors, closeErrorMessage, maxQuantity, minQuantity } = props;\r\n\r\n if (errors.length > 0) {\r\n return (\r\n \r\n
    \r\n {getTranslation(`addToCart.errorMessage`)}\r\n {errors.map((error) => (\r\n \r\n {getTranslationWithFallback(`cartSummary.validation.${error}`, error)}\r\n {errorAdditionalInfo(error, maxQuantity, minQuantity)}.\r\n \r\n ))}\r\n
    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n const getMessage = () => {\r\n const {\r\n isProductPage,\r\n warningMessage,\r\n closeErrorMessage,\r\n isOnPrescription,\r\n rxMaintenance,\r\n isNotAvailable,\r\n isOutOfStock,\r\n showRefrigeratedProductWarning\r\n } = props;\r\n\r\n if (isProductPage) {\r\n if (showRefrigeratedProductWarning) {\r\n return (\r\n <>\r\n }>\r\n {getTranslation(keys['product.coldProductMessage'])}\r\n \r\n {warningMessage && getWarningMessage()}\r\n \r\n );\r\n }\r\n if (warningMessage) {\r\n return getWarningMessage();\r\n }\r\n if (isOutOfStock) {\r\n return (\r\n \r\n {getTranslation(keys['product.outOfStockMessage'])}\r\n \r\n );\r\n }\r\n if (isNotAvailable) {\r\n return (\r\n \r\n {getTranslation(keys['product.notAvailableMessage'])}\r\n \r\n );\r\n }\r\n if (isOnPrescription) {\r\n if (rxMaintenance?.showMessage) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n {getTranslation(keys['product.prescriptionMessage'])}\r\n \r\n );\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const getWarningMessage = () => {\r\n const { warningMessage, closeErrorMessage } = props;\r\n\r\n return (\r\n \r\n {warningMessage}\r\n \r\n );\r\n };\r\n\r\n const errorMessage = getErrorMessage();\r\n const message = getMessage();\r\n\r\n return (\r\n \r\n \r\n
    \r\n {errorMessage}\r\n {message}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { FormEvent, useRef } from 'react';\r\nimport { Collapse } from 'react-collapse';\r\n\r\nimport { PurchaseConfirmationForm } from '../../../../../../../Common/Pim/Enums/PurchaseConfirmationForm.csharp';\r\nimport { addParameter, ExperimentsParamName, useExperimentsForComponent } from '../../../../../../Experimentation/Components/ResolveExperimentId';\r\nimport { SearchTrackingInfo } from '../../../../../../Filtering/Api/SearchTrackingInfo.csharp';\r\nimport { SearchQueryParamName, trackEpiFindClick } from '../../../../../../Filtering/Api/TrackEpiFindClick';\r\nimport { post } from '../../../../../../ReactComponents/API';\r\nimport { EventNames } from '../../../../../../ReactComponents/EventNames';\r\nimport { isServerRendering } from '../../../../../../ReactComponents/IsServerRendering';\r\nimport { PriceDisplay } from '../../../../../../ReactComponents/PriceDisplay';\r\nimport { maxQuantity } from '../../../../../../ReactComponents/QuantityUtils';\r\nimport { GoogleTagManager } from '../../../../../../Tracking/GoogleTagManager/GoogleTagManager';\r\nimport { GoogleTagManagerList } from '../../../../../../Tracking/GoogleTagManager/GoogleTagManagerList';\r\nimport { IsFromPriceSpiderAccessor } from '../../../../../IsFromPriceSpiderAccessor';\r\nimport { handleProductCardRequest } from '../../../../Components/CartUtils';\r\nimport { CartChangeQuantityActionResponse } from '../../../CartChangeQuantityActionResponse.csharp';\r\nimport { AddToCartMode } from '../../ViewModel/AddToCartMode.csharp';\r\nimport { AddToCartProps } from '../../ViewModel/AddToCartProps.csharp';\r\nimport { AddToCartButton } from '../AddToCartButton/AddToCartButton';\r\nimport { AddToCartForms } from '../AddToCartForms';\r\nimport { AddToCartMessages } from '../AddToCartMessages';\r\n\r\ninterface AddToCartState {\r\n readonly quantity: number | '';\r\n errors: string[];\r\n isLoading: boolean;\r\n displaySucceededMessage: boolean;\r\n isFormVisible: boolean;\r\n maxQuantity: number;\r\n minQuantity: number;\r\n isMobileNameVisible: boolean;\r\n}\r\n\r\nexport const AddToCart = (props: AddToCartProps) => {\r\n const contentRef = useRef(null);\r\n\r\n const experiments = useExperimentsForComponent(contentRef);\r\n\r\n const resolveSearchQuery = () => {\r\n if (isServerRendering()) {\r\n return '';\r\n }\r\n\r\n const searchParams = new URLSearchParams(window.location.search);\r\n return searchParams.get(SearchQueryParamName) ?? '';\r\n };\r\n\r\n const searchTrackingInfo = {\r\n searchQuery: resolveSearchQuery(),\r\n hitType: props.type,\r\n hitId: props.id,\r\n trackId: ''\r\n } as SearchTrackingInfo;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\ninterface AddToCartButtonProps extends AddToCartProps {\r\n experiments: string[];\r\n searchTrackingInfo: SearchTrackingInfo;\r\n position: number;\r\n}\r\n\r\nexport class AddToCartSection extends React.Component {\r\n private collapseNameOffset = 100;\r\n\r\n constructor(props: AddToCartButtonProps) {\r\n super(props);\r\n\r\n this.state = {\r\n quantity: 1,\r\n errors: [],\r\n isLoading: false,\r\n displaySucceededMessage: false,\r\n isFormVisible: false,\r\n maxQuantity: props.model.maxQuantity,\r\n minQuantity: props.model.minQuantity,\r\n isMobileNameVisible: false\r\n };\r\n\r\n this.addToCart = this.addToCart.bind(this);\r\n this.submit = this.submit.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps: AddToCartProps) {\r\n if (prevProps.model.code !== this.props.model.code) {\r\n this.setState({ errors: [] });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.isProductPage) {\r\n document.body.classList.add('BodyProductPage');\r\n window.addEventListener('scroll', this.handleShowName);\r\n this.handleShowName();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.isProductPage && window.removeEventListener('scroll', this.handleShowName);\r\n }\r\n\r\n render() {\r\n const {\r\n model: {\r\n warningMessage,\r\n isOnPrescription,\r\n rxMaintenance,\r\n mode,\r\n formConfiguration,\r\n nameInfo,\r\n image,\r\n placedPrice,\r\n profile,\r\n code,\r\n showRefrigeratedProductWarning\r\n },\r\n isProductPage,\r\n model,\r\n prescriptionUrl,\r\n isQuantityVisible\r\n } = this.props;\r\n const { minQuantity, maxQuantity, quantity, isFormVisible, isLoading, errors, isMobileNameVisible } = this.state;\r\n\r\n const getMessages = (floating?: boolean) => (\r\n \r\n );\r\n\r\n return (\r\n <>\r\n \r\n {this.props.isQuantityVisible && mode === AddToCartMode.Default && (\r\n
    \r\n \r\n e.target.select()}\r\n />\r\n \r\n
    \r\n )}\r\n\r\n {getMessages()}\r\n\r\n {isProductPage ? (\r\n \r\n \r\n
    \r\n \r\n {nameInfo.mainName} {nameInfo.productHeader2}\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n {getMessages(true)}\r\n\r\n \r\n
    \r\n ) : (\r\n \r\n )}\r\n \r\n\r\n this.addToCart(code, quantity)}\r\n closeForm={() => this.setState({ isFormVisible: false })}\r\n productBrand={nameInfo.mainName}\r\n productName={nameInfo.additionalName}\r\n productPrice={placedPrice}\r\n productImage={image}\r\n pictureProfile={profile}\r\n />\r\n \r\n );\r\n }\r\n\r\n private handleQuantityChange = (e: React.ChangeEvent) => {\r\n const quantity = e.target.value;\r\n const parsedQuantity = parseInt(quantity);\r\n\r\n if (quantity === '' || (parsedQuantity > 0 && parsedQuantity <= maxQuantity)) {\r\n this.setState({ quantity: parsedQuantity || '' });\r\n }\r\n };\r\n\r\n private handleBlur = () => {\r\n if (!(this.state.quantity || 0 > 0)) {\r\n this.setState({ quantity: 1 });\r\n }\r\n };\r\n\r\n private submit(event: FormEvent) {\r\n event.preventDefault();\r\n\r\n if (this.props.model.formConfiguration.type !== PurchaseConfirmationForm.Unknown) {\r\n return this.validateProduct(this.props.model.code, this.state.quantity);\r\n }\r\n\r\n if (!this.state.isLoading) {\r\n this.addToCart(this.props.model.code, this.state.quantity);\r\n }\r\n }\r\n\r\n private validateProduct(productCode: string, quantity: number | '') {\r\n const url = this.props.validateItemUrl.transformUrl({ productCode });\r\n\r\n this.closeErrorMessage();\r\n this.setState({ isLoading: true });\r\n handleProductCardRequest(post(url, { quantity }))\r\n .then(() => {\r\n this.setState({ isFormVisible: true, isLoading: false });\r\n })\r\n .catch((result: CartChangeQuantityActionResponse) => {\r\n this.setState({\r\n isLoading: false,\r\n maxQuantity: result?.maxQuantity || this.state.maxQuantity,\r\n minQuantity: result?.minQuantity || this.state.minQuantity,\r\n errors: result?.validationIssues?.map((x) => x.code)\r\n });\r\n });\r\n }\r\n\r\n private addToCart(productCode: string, quantity: number | '') {\r\n let url = this.props.cartItemUrl.transformUrl({ productCode });\r\n\r\n if (this.props.experiments?.length > 0) {\r\n for (const experiment of this.props.experiments) {\r\n url = addParameter(url, ExperimentsParamName, experiment);\r\n }\r\n }\r\n\r\n if (IsFromPriceSpiderAccessor.get(productCode)) {\r\n url = addParameter(url, 'isFromPriceSpider', 'true');\r\n }\r\n\r\n const originName = this.resolveOriginName();\r\n if (originName) {\r\n url = addParameter(url, 'originName', originName);\r\n }\r\n\r\n const { promotionId, promotionName } = this.resolvePromotionIdAndName();\r\n if (promotionId) {\r\n url = addParameter(url, 'promotionId', promotionId);\r\n }\r\n\r\n this.setState({ isLoading: true });\r\n handleProductCardRequest(post(url, { quantity }))\r\n .then((result) => {\r\n const event = new CustomEvent(EventNames.CartChanged, {\r\n detail: { cart: result.cart, lastUpdatedItem: productCode }\r\n });\r\n window.dispatchEvent(event);\r\n GoogleTagManager.addToCart(this.props.model, quantity || 0, result.trackingData, originName, promotionId, promotionName);\r\n window.dispatchEvent(new CustomEvent(EventNames.ToggleCart, { detail: { open: true } }));\r\n\r\n if (this.props.showSucceededMessageAfterSave) {\r\n this.setState({ isLoading: false, displaySucceededMessage: true }, () => {\r\n setTimeout(() => this.setState({ displaySucceededMessage: false }), 2000);\r\n });\r\n } else {\r\n this.setState({ isLoading: false });\r\n }\r\n\r\n IsFromPriceSpiderAccessor.clear(productCode);\r\n\r\n this.closeErrorMessage();\r\n })\r\n .catch((result: CartChangeQuantityActionResponse) => {\r\n this.setState({\r\n errors: result?.validationIssues?.map((x) => x.code),\r\n maxQuantity: result?.maxQuantity || this.state.maxQuantity,\r\n minQuantity: result?.minQuantity || this.state.minQuantity,\r\n isLoading: false\r\n });\r\n\r\n if (result?.cart) {\r\n const event = new CustomEvent(EventNames.CartChanged, {\r\n detail: { cart: result?.cart, lastUpdatedItem: '' }\r\n });\r\n window.dispatchEvent(event);\r\n }\r\n });\r\n\r\n trackEpiFindClick(this.props.epiFindClickTrackingUrl, this.props.position, this.props.searchTrackingInfo);\r\n }\r\n\r\n private resolveOriginName = () => {\r\n const params = new URLSearchParams(window.location.search);\r\n // Product page will pass null to props so that origin is taken from query with fallback to product page\r\n // This will ensure we will track correct origin when we return cached product page\r\n // If addToCart is clicked on product card we will use value from props\r\n return this.props.originName ?? params.get('originName') ?? GoogleTagManagerList.productPage;\r\n };\r\n\r\n private resolvePromotionIdAndName = () => {\r\n const params = new URLSearchParams(window.location.search);\r\n\r\n const promotionId = this.props.promotionId ?? params.get('promotionId') ?? undefined;\r\n const promotionName = this.props.promotionName ?? params.get('promotionName') ?? undefined;\r\n\r\n return { promotionId, promotionName };\r\n };\r\n\r\n private handleShowName = () => {\r\n this.setState({\r\n isMobileNameVisible: window.scrollY > this.collapseNameOffset\r\n });\r\n };\r\n\r\n decreaseQuantity = () => {\r\n this.setState({\r\n quantity: !!this.state.quantity && this.state.quantity > 1 ? this.state.quantity - 1 : 1\r\n });\r\n };\r\n\r\n increaseQuantity = () => {\r\n this.setState({ quantity: this.state.quantity && this.state.quantity + 1 });\r\n };\r\n\r\n closeErrorMessage = () => {\r\n this.setState({ errors: [] });\r\n };\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum ProductAvailabilityNotificationResponseStatus {\r\n\tOk = 0,\r\n\tLimitExceeded = 1,\r\n\tUnexpectedError = 2,\r\n\tDatabaseLimitExceeded = 3\r\n}\r\n","export enum ProductAvailabilityNotificationStatus {\r\n Input,\r\n Success,\r\n LimitExceeded\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../Resources/Translations';\r\nimport { EmailInput } from '../../../../Email/Check/EmailInput';\r\nimport { Button, ButtonLoaderPlacement, ButtonSize } from '../../../../ReactComponents/Buttons/Button';\r\nimport { Modal, ModalHeading, ModalText } from '../../../../ReactComponents/Modal/Modal';\r\n\r\ninterface ProductAvailabilityNotificationsInputModalProps {\r\n checkEmailUrl: string;\r\n setEmail: (email: string) => void;\r\n setErrorMessage: (error: string) => void;\r\n setIsButtonDisabled: (value: boolean) => void;\r\n errorMessage: string;\r\n handleSubmit: () => void;\r\n isRequestActive: boolean;\r\n isButtonDisabled: boolean;\r\n isVisible: boolean;\r\n setIsVisible: (value: boolean) => void;\r\n}\r\n\r\nexport const ProductAvailabilityNotificationsInputModal = (props: ProductAvailabilityNotificationsInputModalProps) => {\r\n const handleClose = () => {\r\n props.setIsVisible(false);\r\n props.setErrorMessage('');\r\n props.setIsButtonDisabled(false);\r\n };\r\n\r\n return (\r\n \r\n {getTranslation(keys['product.availabilityNotification.modalHeading'])}\r\n {getTranslation(keys['product.availabilityNotification.modalSubheading'])}\r\n\r\n
    \r\n props.setEmail(email)}\r\n onInput={() => props.setErrorMessage('')}\r\n setLoadingStatus={(value) => props.setIsButtonDisabled(value)}\r\n errorMessage={props.errorMessage}\r\n showEmailSuggestionMessage\r\n />\r\n\r\n \r\n {getTranslation(keys['product.availabilityNotification.modalButton'])}\r\n \r\n
    \r\n\r\n \r\n {getTranslation(keys['product.availabilityNotification.privacyPolicyText'])}\r\n  \r\n {getTranslation(keys['product.availabilityNotification.privacyPolicyLink'])}.\r\n \r\n
    \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../Resources/Translations';\r\n\r\nexport const ProductAvailabilityNotificationSuccess = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {getTranslation(keys['product.availabilityNotification.savedHeading'])}\r\n \r\n {getTranslation(keys['product.availabilityNotification.savedSubheading'])}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../Resources/Translations';\r\nimport { Modal, ModalHeading } from '../../../../ReactComponents/Modal/Modal';\r\nimport { ProductAvailabilityNotificationSuccess } from './ProductAvailabilityNotificationSuccess';\r\n\r\ninterface ProductAvailabilityNotificationSuccessModalProps {\r\n isVisible: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nexport const ProductAvailabilityNotificationSuccessModal = (props: ProductAvailabilityNotificationSuccessModalProps) => {\r\n return (\r\n \r\n {getTranslation(keys['product.availabilityNotification.modalHeading'])}\r\n\r\n \r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../../../Resources/Translations';\r\nimport { Button, ButtonSize, ButtonVariant } from '../../../../../../ReactComponents/Buttons/Button';\r\nimport { ProductAvailabilityNotificationSuccessModal } from '../../ProductAvailabilityNotificationSuccessModal';\r\nimport { ProductAvailabilityNotificationStatus } from './ProductAvailabilityNotificationStatus';\r\nimport { ProductAvailabilityNotificationViewProps } from './ProductAvailabilityNotificationViewProps';\r\n\r\nexport const ProductAvailabilityNotificationCardView = (props: ProductAvailabilityNotificationViewProps) => {\r\n const [successModalVisible, setSuccessModalVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n if (props.status === ProductAvailabilityNotificationStatus.Success) {\r\n setSuccessModalVisible(true);\r\n }\r\n }, [props.status]);\r\n\r\n return (\r\n
    \r\n {props.status === ProductAvailabilityNotificationStatus.Success || props.status === ProductAvailabilityNotificationStatus.LimitExceeded ? (\r\n \r\n {getTranslation(keys['product.availabilityNotification.savedSubheading'])}\r\n \r\n ) : (\r\n \r\n {getTranslation(keys['product.availabilityNotification.button'])}\r\n \r\n )}\r\n\r\n setSuccessModalVisible(false)} />\r\n
    \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../../../Resources/Translations';\r\nimport { Button, ButtonLoaderPlacement, ButtonSize, ButtonVariant } from '../../../../../../ReactComponents/Buttons/Button';\r\nimport { ProductAvailabilityNotificationSuccess } from '../../ProductAvailabilityNotificationSuccess';\r\nimport { ProductAvailabilityNotificationStatus } from './ProductAvailabilityNotificationStatus';\r\nimport { ProductAvailabilityNotificationViewProps } from './ProductAvailabilityNotificationViewProps';\r\n\r\nexport const ProductAvailabilityNotificationPageView = (props: ProductAvailabilityNotificationViewProps) => (\r\n
    \r\n {props.status === ProductAvailabilityNotificationStatus.Success && }\r\n {props.status === ProductAvailabilityNotificationStatus.LimitExceeded && }\r\n {props.status === ProductAvailabilityNotificationStatus.Input && (\r\n <>\r\n {getTranslation(keys['product.availabilityNotification.heading'])}\r\n \r\n {getTranslation(keys['product.availabilityNotification.subheading'])}\r\n \r\n\r\n {props.errorMessage && !props.isInputModalVisible && (\r\n {props.errorMessage}\r\n )}\r\n\r\n \r\n {getTranslation(keys['product.availabilityNotification.button'])}\r\n \r\n \r\n )}\r\n
    \r\n);\r\n","import React, { useContext, useState } from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../../Resources/Translations';\r\nimport { postFor } from '../../../../../ReactComponents/API';\r\nimport { UserContext } from '../../../../../ReactComponents/Contexts/UserContext';\r\nimport { RegexProvider } from '../../../../../ReactComponents/RegexProvider';\r\nimport { ProductAvailabilityNotificationRequest } from '../../Models/ProductAvailabilityNotificationRequest.csharp';\r\nimport { ProductAvailabilityNotificationResponse } from '../../Models/ProductAvailabilityNotificationResponse.csharp';\r\nimport { ProductAvailabilityNotificationResponseStatus } from '../../Models/ProductAvailabilityNotificationResponseStatus.csharp';\r\nimport { ProductAvailabilityNotificationsInputModal } from '../ProductAvailabilityNotificationsInputModal';\r\nimport { ProductAvailabilityNotificationProps } from './ProductAvailabilityNotificationProps.csharp';\r\nimport { ProductAvailabilityNotificationViewType } from './ProductAvailabilityNotificationViewType.csharp';\r\nimport { ProductAvailabilityNotificationCardView } from './Views/ProductAvailabilityNotificationCardView';\r\nimport { ProductAvailabilityNotificationPageView } from './Views/ProductAvailabilityNotificationPageView';\r\nimport { ProductAvailabilityNotificationStatus } from './Views/ProductAvailabilityNotificationStatus';\r\nimport { ProductAvailabilityNotificationViewProps } from './Views/ProductAvailabilityNotificationViewProps';\r\n\r\nexport const ProductAvailabilityNotification = (props: ProductAvailabilityNotificationProps) => {\r\n const [status, setStatus] = useState(ProductAvailabilityNotificationStatus.Input);\r\n const [email, setEmail] = useState('');\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [isRequestActive, setIsRequestActive] = useState(false);\r\n const [isButtonDisabled, setIsButtonDisabled] = useState(false);\r\n const [isInputModalVisible, setIsInputModalVisible] = useState(false);\r\n const userContext = useContext(UserContext);\r\n\r\n const handleOnClick = () => {\r\n if (userContext.isLogged) {\r\n handleSubmit();\r\n } else {\r\n setIsInputModalVisible(true);\r\n }\r\n };\r\n\r\n const handleSubmit = () => {\r\n setErrorMessage('');\r\n\r\n if (!userContext.isLogged && !RegexProvider.email.test(email)) {\r\n return setErrorMessage(getTranslation(keys['product.availabilityNotification.incorrectEmail']));\r\n }\r\n\r\n const request: ProductAvailabilityNotificationRequest = {\r\n isLoggedIn: userContext.isLogged,\r\n customerEmail: email,\r\n variantSku: props.variantSku\r\n };\r\n\r\n setIsRequestActive(true);\r\n\r\n postFor(props.url, request)\r\n .then((result) => {\r\n if (result.status === ProductAvailabilityNotificationResponseStatus.Ok) {\r\n setStatus(ProductAvailabilityNotificationStatus.Success);\r\n }\r\n })\r\n .catch((error) => {\r\n try {\r\n const result = error.json() as ProductAvailabilityNotificationResponse;\r\n\r\n if (result.status === ProductAvailabilityNotificationResponseStatus.LimitExceeded) {\r\n return setStatus(ProductAvailabilityNotificationStatus.LimitExceeded);\r\n }\r\n } catch {\r\n setErrorMessage(getTranslation(keys['product.availabilityNotification.unexpectedError']));\r\n }\r\n })\r\n .finally(() => {\r\n setIsRequestActive(false);\r\n });\r\n };\r\n\r\n const viewProps: ProductAvailabilityNotificationViewProps = {\r\n status,\r\n errorMessage,\r\n handleOnClick,\r\n isButtonDisabled,\r\n isInputModalVisible,\r\n isRequestActive\r\n };\r\n\r\n return (\r\n
    \r\n {props.viewType === ProductAvailabilityNotificationViewType.ProductCard && }\r\n {props.viewType === ProductAvailabilityNotificationViewType.ProductPage && }\r\n\r\n \r\n
    \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\n\r\nexport const BestsellerProductInfoLabel = () => {\r\n return
    {getTranslation(keys['enum.infoBanner.bestseller'])}
    ;\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\n\r\nexport const VeganProductInfoLabel = () => {\r\n return
    {getTranslation(keys['enum.infoBanner.vegan'])}
    ;\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { DiscountVariant } from '../../Blocks/DiscountVariant.csharp';\r\nimport { BestsellerProductInfoLabel } from './BestsellerProductInfoLabel';\r\nimport { NewProductInfoLabel } from './NewProductInfoLabel';\r\nimport { ProductInfoLabelProps } from './ProductInfoLabelProps.csharp';\r\nimport { VeganProductInfoLabel } from './VeganProductInfoLabel';\r\n\r\nexport const ProductInfoLabel: React.FunctionComponent = (props) => {\r\n if (!props.showBestsellerLabel && !props.showVeganProductLabel && !props.showNewItemLabel && props.variant == DiscountVariant.Medium) return null;\r\n const showNewItemLabel = props.showNewItemLabel && !props.badgeSettings.hideNewItemLabel;\r\n const showBestsellerLabel = props.showBestsellerLabel && !props.badgeSettings.hideBestsellerLabel && !showNewItemLabel;\r\n const showVeganProductLabel = props.showVeganProductLabel && !props.badgeSettings.hideVeganLabel;\r\n\r\n const badges = [\r\n showNewItemLabel && ,\r\n showBestsellerLabel && ,\r\n showVeganProductLabel && \r\n ];\r\n\r\n const filteredBadges = badges.filter((b) => b !== false);\r\n\r\n return (\r\n \r\n {props.numberOfLabels > 0 ? filteredBadges.slice(0, props.numberOfLabels) : badges}\r\n
    \r\n );\r\n};\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum CircleInfoColorVariant {\r\n\tGrey = 0,\r\n\tRed = 1\r\n}\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\nimport { RenderHTML } from '../../../../../ReactComponents/RenderHTML';\r\nimport { CircleInfoColorVariant } from './CircleInfoColorVariant.csharp';\r\nimport { CircleInfoViewModel } from './CircleInfoViewModel.csharp';\r\n\r\nexport const CircleInfo = ({ model: { text, plainText, backgroundColor, link } }: { model: CircleInfoViewModel }) => {\r\n const largeFontLengthLimit = 60;\r\n const mediumFontLengthLimit = 196;\r\n const [paddingTop, setPaddingTop] = useState(0);\r\n const textWrapperRef = useRef(null);\r\n const textRef = useRef(null);\r\n\r\n const textClassNames = classNames(\r\n 'CircleInfo__Text',\r\n plainText?.length <= mediumFontLengthLimit && 'CircleInfo__Text--Medium',\r\n plainText?.length <= largeFontLengthLimit && 'CircleInfo__Text--Large'\r\n );\r\n\r\n useEffect(() => {\r\n calculatePadding();\r\n setTimeout(calculatePadding);\r\n }, [textWrapperRef.current, textRef.current, textRef.current?.clientHeight]);\r\n\r\n useEffect(() => {\r\n window.addEventListener('resize', calculatePadding);\r\n\r\n return () => {\r\n window.removeEventListener('resize', calculatePadding);\r\n };\r\n });\r\n\r\n const calculatePadding = () => {\r\n if (textWrapperRef.current && textRef.current) {\r\n const wrapperHeight = textWrapperRef.current.clientHeight;\r\n const textHeight = textRef.current.clientHeight - paddingTop;\r\n const padding = (wrapperHeight - textHeight) / 2;\r\n setPaddingTop(padding);\r\n }\r\n };\r\n\r\n const content = (\r\n
    \r\n
    \r\n {text && }\r\n
    \r\n
    \r\n );\r\n\r\n return (\r\n
    \r\n {link ? (\r\n \r\n {content}\r\n \r\n ) : (\r\n content\r\n )}\r\n
    \r\n );\r\n};\r\n","import { CheckoutStep } from '../../../../Purchase/Checkout/CheckoutStep.csharp';\r\nimport { CartItemViewModel } from '../../Cart/Item/ViewModels/CartItemViewModel.csharp';\r\nimport { DeliveryMethodAvailability } from '../Delivery/DeliveryMethods/DeliveryMethodAvailability.csharp';\r\nimport { CheckoutViewModel } from '../ViewModel/CheckoutViewModel.csharp';\r\nimport { deliveryMethodValidator } from './DeliveryMethodValidator';\r\n\r\nexport const validateCheckout = (checkout: CheckoutViewModel, checkoutStep: CheckoutStep): string[] => {\r\n const errors = [];\r\n\r\n if (checkoutStep >= CheckoutStep.Delivery) {\r\n if (!checkout.addresses.selectedAddressId) {\r\n errors.push('checkout.shippingMethodAvailability.AddressNotSelected');\r\n }\r\n\r\n const selectedShipping = checkout.delivery.selectedDeliveryMethod;\r\n if (!selectedShipping) {\r\n errors.push('checkout.shippingMethodAvailability.DeliveryMethodNotSelected');\r\n return errors;\r\n }\r\n\r\n if (selectedShipping.methodAvailability != DeliveryMethodAvailability.Ok) {\r\n errors.push('checkout.shippingMethodAvailability.' + DeliveryMethodAvailability[selectedShipping.methodAvailability]);\r\n return errors;\r\n }\r\n\r\n deliveryMethodValidator.validate(checkout, errors);\r\n }\r\n\r\n return errors;\r\n};\r\n\r\nexport const containsQuantityWarnings = (item: CartItemViewModel): boolean => {\r\n for (const error of item.validationIssues) {\r\n if (error?.code === 'AdjustedQuantityByAvailableQuantity' || error?.code === 'AdjustedQuantityByOtcLimitQuantity') {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const containsOnlyQuantityWarnings = (item: CartItemViewModel): boolean => {\r\n for (const error of item.validationIssues) {\r\n if (error?.code !== 'AdjustedQuantityByAvailableQuantity' && error?.code !== 'AdjustedQuantityByOtcLimitQuantity') {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\n\r\nexport interface LoaderProps {\r\n className?: string;\r\n isLoading: boolean;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const Loader = (props: LoaderProps) => {\r\n return (\r\n <>\r\n {props.isLoading && (\r\n
    \r\n
    \r\n
    \r\n {getTranslation(keys['productFilters.loading'])}\r\n
    \r\n
    \r\n
    \r\n )}\r\n {props.children}\r\n \r\n );\r\n};\r\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","export const isServerRendering = () => typeof document == 'undefined';\r\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import { isServerRendering } from '../../ReactComponents/IsServerRendering';\r\nimport { GTMClickType } from './GTMClickType';\r\n\r\ndeclare let cookieBotEnabled: boolean;\r\n\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ninterface DataLayerModel extends Object {\r\n userId?: string;\r\n eventCallback?: () => void;\r\n ecommerce?: unknown;\r\n}\r\n\r\nexport class GoogleTagManagerDataLayer {\r\n dataLayer: DataLayerModel[] | undefined;\r\n currencyCode: string;\r\n\r\n private eventsToSendOnConsentReady: DataLayerModel[] = [];\r\n private shouldWaitForCookieBotReady: boolean = typeof cookieBotEnabled !== 'undefined' ? cookieBotEnabled : false;\r\n\r\n constructor() {\r\n // eslint-disable-next-line\r\n this.dataLayer = typeof window !== 'undefined' ? (window as any).dataLayer : undefined;\r\n this.currencyCode = 'NOK';\r\n\r\n if (!isServerRendering() && (typeof cookieBotEnabled !== 'undefined' ? cookieBotEnabled : false)) {\r\n this.initCookieBotReadyEventListener();\r\n }\r\n }\r\n\r\n public initCookieBotReadyEventListener() {\r\n window.addEventListener('CookiebotOnConsentReady', () => {\r\n this.eventsToSendOnConsentReady.map((data) => this.dataLayer?.push(data));\r\n this.eventsToSendOnConsentReady = [];\r\n this.shouldWaitForCookieBotReady = false;\r\n });\r\n }\r\n\r\n public push = (obj: DataLayerModel) => {\r\n this.pushToDataLayer(obj);\r\n };\r\n\r\n public pushWithRedirect = (obj: DataLayerModel, url: string, clickType: GTMClickType) => {\r\n this.handleEventCallback(obj, url, clickType);\r\n this.pushToDataLayerWithFallbackRedirect(obj, url, clickType);\r\n };\r\n\r\n public addUserId = (userId?: string) => {\r\n const existingUserId = this.dataLayer?.find((x) => x.userId);\r\n\r\n !existingUserId && this.pushToDataLayer({ userId: userId });\r\n };\r\n\r\n private handleEventCallback = (data: DataLayerModel, url: string, clickType: GTMClickType) => {\r\n if (!clickType.isNewTab) {\r\n data.eventCallback = () => {\r\n document.location.href = url;\r\n };\r\n }\r\n };\r\n\r\n private pushToDataLayer = (data: DataLayerModel) => {\r\n if (this.shouldWaitForCookieBotReady) {\r\n this.eventsToSendOnConsentReady.push(data);\r\n } else {\r\n this.dataLayer?.push({ ecommerce: null });\r\n this.dataLayer?.push(data);\r\n }\r\n };\r\n\r\n private pushToDataLayerWithFallbackRedirect = (data: DataLayerModel, url: string, clickType: GTMClickType) => {\r\n this.pushToDataLayer(data);\r\n this.openUrl(url, clickType);\r\n };\r\n\r\n private openUrl = (url: string, clickType: GTMClickType) => {\r\n if (clickType.isNewTab && !clickType.isMiddleMouseButton) {\r\n window.open(url);\r\n } else if (!clickType.isNewTab && !this.isGoogleAnalyticsLoaded()) {\r\n document.location.href = url;\r\n }\r\n };\r\n\r\n private isGoogleAnalyticsLoaded = () => {\r\n // eslint-disable-next-line\r\n const googleAnalytics = (window as any).ga;\r\n return !this.shouldWaitForCookieBotReady && googleAnalytics && googleAnalytics.loaded;\r\n };\r\n}\r\n","export class GoogleAnalytics4Actions {\r\n static readonly purchase = 'purchase';\r\n static readonly refund = 'refund';\r\n static readonly addPaymentInfo = 'add_payment_info';\r\n static readonly addShippingInfo = 'add_shipping_info';\r\n static readonly beginCheckout = 'begin_checkout';\r\n static readonly addToCart = 'add_to_cart';\r\n static readonly addToWishList = 'add_to_wishlist';\r\n static readonly removeFromCart = 'remove_from_cart';\r\n static readonly viewCart = 'view_cart';\r\n static readonly viewMiniCart = 'view_mini_cart';\r\n static readonly viewItem = 'view_item';\r\n static readonly selectItem = 'select_item';\r\n static readonly viewItemList = 'view_item_list';\r\n static readonly viewPromotion = 'view_promotion';\r\n static readonly selectPromotion = 'select_promotion';\r\n static readonly searchSuggestions = 'search_suggestions';\r\n static readonly viewSearchResults = 'view_search_results';\r\n static readonly applySearchTagClick = 'apply_search_tag_click';\r\n}\r\n","import { ProductAvailabilityViewModel } from '../../Catalog/Product/Availability/ProductAvailabilityViewModel.csharp';\r\nimport { ProductBuyingMode } from '../../Components/Availability/ProductBuyingMode.csharp';\r\n\r\nexport class GTMStockLevel {\r\n public static Get(availability: ProductAvailabilityViewModel) {\r\n return availability.buyingMode === ProductBuyingMode.Inactive ? 'Out of stock' : 'In stock';\r\n }\r\n}\r\n","import { IProductTrackingData } from '../../../Catalog/Product/IProductTrackingData.csharp';\r\nimport { ProductViewModel } from '../../../Catalog/Product/ViewModels/ProductViewModel.csharp';\r\nimport { SearchResultProductViewModel } from '../../../Filtering/Api/SearchResultProductViewModel.csharp';\r\nimport { ProductCardViewModel } from '../../../Partials/ProductCard/ProductCardViewModel.csharp';\r\nimport { CartItemViewModel } from '../../../Purchase/Cart/Item/ViewModels/CartItemViewModel.csharp';\r\nimport { GoogleTagManagerList } from '../GoogleTagManagerList';\r\nimport { GTMStockLevel } from '../GTMStockLevel';\r\nimport { GA4ItemData } from './GoogleAnalytics4Interfaces';\r\n\r\nexport class GoogleAnalytics4Mapper {\r\n private readonly currency = 'NOK';\r\n\r\n public mapProductToItemData = (product: ProductViewModel, originName: string, promotionId?: string, promotionName?: string): GA4ItemData => {\r\n return {\r\n item_id: product.code,\r\n item_name: product.nameInfo.fullName,\r\n item_brand: product.nameInfo.mainName,\r\n price: product.price.price,\r\n item_category: product.subcategory,\r\n currency: this.currency,\r\n discount: product.price.originalPrice - product.price.price,\r\n item_list_name: originName,\r\n promotion_id: promotionId,\r\n promotion_name: promotionName,\r\n stock_level: GTMStockLevel.Get(product.availability)\r\n };\r\n };\r\n\r\n public mapProductCardToItemData = (product: ProductCardViewModel): GA4ItemData => {\r\n return {\r\n item_id: product.code,\r\n item_name: product.nameInfo.fullName,\r\n item_brand: product.nameInfo.mainName,\r\n price: product.price.price,\r\n item_category: product.subcategory,\r\n currency: this.currency,\r\n discount: product.price.originalPrice - product.price.price,\r\n item_list_name: product.originName,\r\n promotion_id: product.promotionId,\r\n promotion_name: product.promotionName,\r\n stock_level: GTMStockLevel.Get(product.availability)\r\n };\r\n };\r\n\r\n public mapSearchItemToItemData = (product: SearchResultProductViewModel): GA4ItemData => {\r\n return {\r\n item_id: product.code,\r\n item_name: product.nameInfo.fullName,\r\n item_brand: product.nameInfo.mainName,\r\n price: product.discountedPrice,\r\n item_category: product.subcategory,\r\n currency: this.currency,\r\n discount: product.placedPrice - product.discountedPrice,\r\n item_list_name: GoogleTagManagerList.searchResults\r\n };\r\n };\r\n\r\n public mapCartItemViewModelToItemData = (product: CartItemViewModel, quantity?: number): GA4ItemData => {\r\n return {\r\n item_id: product.code,\r\n item_name: product.nameInfo.fullName,\r\n item_brand: product.nameInfo.mainName,\r\n price: this.getPriceForSingleProduct(product.discountedPrice, product.quantityOrdered),\r\n item_category: product.subcategory,\r\n currency: this.currency,\r\n quantity: quantity || product.quantityOrdered,\r\n item_list_name: product.originName,\r\n promotion_id: product.promotionId,\r\n promotion_name: product.promotionName\r\n };\r\n };\r\n\r\n public mapCartItemViewModelToItemDataExtended = (product: CartItemViewModel, index: number, couponCode: string): GA4ItemData => {\r\n return {\r\n item_id: product.code,\r\n item_name: product.nameInfo.fullName,\r\n item_brand: product.nameInfo.mainName,\r\n item_category: product.subcategory,\r\n item_list_name: product.originName,\r\n coupon: couponCode,\r\n discount: product.discountValue,\r\n price: this.getPriceForSingleProduct(product.discountedPrice, product.quantityOrdered),\r\n quantity: product.quantityOrdered,\r\n index,\r\n promotion_id: product.promotionId,\r\n promotion_name: product.promotionName\r\n };\r\n };\r\n\r\n public mapProductTrackingDataToItemData = (\r\n product: IProductTrackingData,\r\n quantity?: number,\r\n originName?: string,\r\n promotionId?: string,\r\n promotionName?: string\r\n ): GA4ItemData => {\r\n return {\r\n item_id: product.code,\r\n item_name: product.nameInfo.fullName,\r\n item_brand: product.nameInfo.mainName,\r\n price: product.placedPrice,\r\n item_category: product.subcategory,\r\n currency: this.currency,\r\n quantity: quantity,\r\n item_list_name: originName,\r\n promotion_id: promotionId,\r\n promotion_name: promotionName\r\n };\r\n };\r\n\r\n private getPriceForSingleProduct = (price: number, quantity?: number): number => {\r\n return parseFloat((price / (quantity || 1)).toFixed(2));\r\n };\r\n}\r\n","import { IProductTrackingData } from '../../../Catalog/Product/IProductTrackingData.csharp';\r\nimport { ProductViewModel } from '../../../Catalog/Product/ViewModels/ProductViewModel.csharp';\r\nimport { SearchResultProductViewModel } from '../../../Filtering/Api/SearchResultProductViewModel.csharp';\r\nimport { ProductCardViewModel } from '../../../Partials/ProductCard/ProductCardViewModel.csharp';\r\nimport { CartItemViewModel } from '../../../Purchase/Cart/Item/ViewModels/CartItemViewModel.csharp';\r\nimport { GoogleTagManagerDataLayer } from '../GoogleTagManagerDataLayer';\r\nimport { GoogleTagManagerList } from '../GoogleTagManagerList';\r\nimport { GTMClickType } from '../GTMClickType';\r\nimport { IGoogleTagManagerAnalyticsTracker } from '../IGoogleTagManagerAnalyticsTracker';\r\nimport { ITrackingData } from '../ITrackingData';\r\nimport { PromotionImpressionViewModel } from '../PromotionImpression/PromotionImpressionViewModel.csharp';\r\nimport { SearchVariant } from '../SearchVariant';\r\nimport { GoogleAnalytics4Actions } from './GoogleAnalytics4Actions';\r\nimport { GA4Object } from './GoogleAnalytics4Interfaces';\r\nimport { GoogleAnalytics4Mapper } from './GoogleAnalytics4Mapper';\r\n\r\nexport class GoogleAnalytics4Tracker implements IGoogleTagManagerAnalyticsTracker {\r\n private readonly _googleTagManagerDataLayer = new GoogleTagManagerDataLayer();\r\n private readonly _mapper = new GoogleAnalytics4Mapper();\r\n private readonly _currency = 'NOK';\r\n\r\n trackPurchase = (products: CartItemViewModel[], data: ITrackingData) => {\r\n const items = products.map((x) => this._mapper.mapCartItemViewModelToItemData(x));\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.purchase,\r\n ecommerce: {\r\n transaction_id: data.id,\r\n value: data.revenue,\r\n tax: data.tax,\r\n shipping: data.shipping,\r\n shipping_tier: data.shippingMethod,\r\n coupon: data.coupon,\r\n currency: this._currency,\r\n items: items\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackItemView = (product: ProductViewModel, originName: string, promotionId?: string, promotionName?: string) => {\r\n const item = this._mapper.mapProductToItemData(product, originName, promotionId, promotionName);\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.viewItem,\r\n ecommerce: {\r\n currency: this._currency,\r\n items: [item]\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackProductCardItemSelect = (product: ProductCardViewModel, productLink: string, clickType: GTMClickType) => {\r\n const item = this._mapper.mapProductCardToItemData(product);\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.selectItem,\r\n ecommerce: {\r\n item_list_name: product.originName ?? GoogleTagManagerList.productCard,\r\n items: [item]\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.pushWithRedirect(obj, productLink, clickType);\r\n };\r\n\r\n trackCartItemItemSelect = (product: CartItemViewModel, productLink: string, clickType: GTMClickType) => {\r\n const item = this._mapper.mapCartItemViewModelToItemData(product);\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.selectItem,\r\n ecommerce: {\r\n item_list_name: GoogleTagManagerList.cartItems,\r\n items: [item]\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.pushWithRedirect(obj, productLink, clickType);\r\n };\r\n\r\n trackSearchItemSelect = (product: SearchResultProductViewModel, productLink: string, clickType: GTMClickType) => {\r\n const item = this._mapper.mapSearchItemToItemData(product);\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.selectItem,\r\n ecommerce: {\r\n item_list_name: GoogleTagManagerList.searchResults,\r\n items: [item]\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.pushWithRedirect(obj, productLink, clickType);\r\n };\r\n\r\n trackProductCardsItemImpressions = (products: ProductCardViewModel[]) => {\r\n const items = products.map((x) => this._mapper.mapProductCardToItemData(x));\r\n const product = products[0];\r\n\r\n if (!product) return;\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.viewItemList,\r\n ecommerce: {\r\n item_list_name: product.originName ?? GoogleTagManagerList.productCard,\r\n items: items\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackSearchResultsItemImpressions = (products: SearchResultProductViewModel[]) => {\r\n const items = products.map((x) => this._mapper.mapSearchItemToItemData(x));\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.viewItemList,\r\n ecommerce: {\r\n items: items\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackAddToCart = (product: IProductTrackingData, quantity: number, id?: string, originName?: string, promotionId?: string, promotionName?: string) => {\r\n const item = this._mapper.mapProductTrackingDataToItemData(product, quantity, originName, promotionId, promotionName);\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.addToCart,\r\n ecommerce: {\r\n currency: this._currency,\r\n value: product.placedPrice * quantity,\r\n items: [item]\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackRemoveFromCart = (product: CartItemViewModel, quantity: number) => {\r\n const item = this._mapper.mapCartItemViewModelToItemData(product, quantity);\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.removeFromCart,\r\n ecommerce: {\r\n currency: this._currency,\r\n value: product.discountedPrice,\r\n items: [item]\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackAddToWishList = (product: IProductTrackingData) => {\r\n const item = this._mapper.mapProductTrackingDataToItemData(product);\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.addToWishList,\r\n ecommerce: {\r\n value: product.placedPrice,\r\n currency: this._currency,\r\n items: [item]\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackBeginCheckout = (products: CartItemViewModel[], data: ITrackingData) => {\r\n const items = products.map((x, idx) => this._mapper.mapCartItemViewModelToItemDataExtended(x, idx, data.coupon!));\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.beginCheckout,\r\n ecommerce: {\r\n currency: this._currency,\r\n value: data.revenue,\r\n coupon: data.coupon,\r\n items: items\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackAddShippingInfo = (products: CartItemViewModel[], data: ITrackingData) => {\r\n const items = products.map((x, idx) => this._mapper.mapCartItemViewModelToItemDataExtended(x, idx, data.coupon!));\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.addShippingInfo,\r\n ecommerce: {\r\n currency: this._currency,\r\n value: data.revenue,\r\n coupon: data.coupon,\r\n shipping_tier: data.shippingMethod,\r\n items: items\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackAddPaymentInfo = (products: CartItemViewModel[], data: ITrackingData) => {\r\n const items = products.map((x) => this._mapper.mapCartItemViewModelToItemData(x));\r\n\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.addPaymentInfo,\r\n ecommerce: {\r\n currency: this._currency,\r\n value: data.revenue,\r\n coupon: data.coupon,\r\n payment_type: data.paymentMethod,\r\n items: items\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackPromotionsView = (promotions: PromotionImpressionViewModel[]) => {\r\n promotions.map((promotion) => {\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.viewPromotion,\r\n ecommerce: {\r\n creative_name: promotion.creative,\r\n creative_slot: promotion.position,\r\n promotion_id: promotion.id,\r\n promotion_name: promotion.name\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n });\r\n };\r\n\r\n trackPromotionSelect = (promotion: PromotionImpressionViewModel, promotionLink: string, clickType: GTMClickType) => {\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.selectPromotion,\r\n ecommerce: {\r\n creative_name: promotion.creative,\r\n creative_slot: promotion.position,\r\n promotion_id: promotion.id,\r\n promotion_name: promotion.name\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.pushWithRedirect(obj, promotionLink, clickType);\r\n };\r\n\r\n trackViewCart = (items: CartItemViewModel[], total: number, couponCode: string, isMiniCart?: boolean) => {\r\n const obj: GA4Object = {\r\n event: isMiniCart ? GoogleAnalytics4Actions.viewMiniCart : GoogleAnalytics4Actions.viewCart,\r\n ecommerce: {\r\n currency: this._currency,\r\n value: total,\r\n items: items.map((item, idx) => this._mapper.mapCartItemViewModelToItemDataExtended(item, idx, couponCode))\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n };\r\n\r\n trackSearchSuggestions(searchTerm: string): void {\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.searchSuggestions,\r\n ecommerce: {\r\n search_term: searchTerm\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n }\r\n\r\n trackSearchResultsView(searchTerm: string, variant: SearchVariant): void {\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.viewSearchResults,\r\n ecommerce: {\r\n search_term: searchTerm,\r\n search_variant: variant\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n }\r\n\r\n trackSearchTagClick(tagValue: string, tagIndex: number): void {\r\n const obj: GA4Object = {\r\n event: GoogleAnalytics4Actions.applySearchTagClick,\r\n ecommerce: {\r\n tag_value: tagValue,\r\n tag_index: tagIndex\r\n }\r\n };\r\n\r\n this._googleTagManagerDataLayer.push(obj);\r\n }\r\n}\r\n","export class NonAnalyticsEvents {\r\n static readonly priceSpiderPurchase = 'priceSpiderPurchase';\r\n}\r\n","import { CartItemViewModel } from '../../../Purchase/Cart/Item/ViewModels/CartItemViewModel.csharp';\r\nimport { GoogleTagManagerDataLayer } from '../GoogleTagManagerDataLayer';\r\nimport { IGoogleTagManagerNonAnalyticsTracker } from '../IGoogleTagManagerNonAnalyticsTracker';\r\nimport { NonAnalyticsEvent } from './NonAnalyticsEvent';\r\nimport { NonAnalyticsEvents } from './NonAnalyticsEvents';\r\nimport { PriceSpiderPurchaseData } from './PriceSpiderPurchaseData';\r\n\r\nexport class NonAnalyticsTracker implements IGoogleTagManagerNonAnalyticsTracker {\r\n private readonly _googleTagManagerDataLayer = new GoogleTagManagerDataLayer();\r\n private readonly _currency = 'NOK';\r\n\r\n trackPriceSpiderPurchase(products: CartItemViewModel[]): void {\r\n const model: NonAnalyticsEvent = {\r\n event: NonAnalyticsEvents.priceSpiderPurchase,\r\n data: {\r\n products: products.map((p) => ({\r\n gtin: p.gtin,\r\n sku: p.code,\r\n currency: this._currency,\r\n price: p.priceSpiderPrice,\r\n quantity: p.quantityOrdered,\r\n brand: p.nameInfo.mainName,\r\n name: p.nameInfo.fullName\r\n }))\r\n }\r\n };\r\n this._googleTagManagerDataLayer.push(model);\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { IProductTrackingData } from '../../Catalog/Product/IProductTrackingData.csharp';\r\nimport { ProductViewModel } from '../../Catalog/Product/ViewModels/ProductViewModel.csharp';\r\nimport { SearchResultProductViewModel } from '../../Filtering/Api/SearchResultProductViewModel.csharp';\r\nimport { ProductCardViewModel } from '../../Partials/ProductCard/ProductCardViewModel.csharp';\r\nimport { CartItemViewModel } from '../../Purchase/Cart/Item/ViewModels/CartItemViewModel.csharp';\r\nimport { isServerRendering } from '../../ReactComponents/IsServerRendering';\r\nimport { TrackingData } from '../FacebookConversionApi/TrackingData.csharp';\r\nimport { GoogleAnalytics4Tracker } from './GoogleAnalytics4/GoogleAnalytics4Tracker';\r\nimport { GoogleTagManagerDataLayer } from './GoogleTagManagerDataLayer';\r\nimport { GTMClickType } from './GTMClickType';\r\nimport { IGoogleTagManagerAnalyticsTracker } from './IGoogleTagManagerAnalyticsTracker';\r\nimport { IGoogleTagManagerNonAnalyticsTracker } from './IGoogleTagManagerNonAnalyticsTracker';\r\nimport { ITrackingData } from './ITrackingData';\r\nimport { MouseButtons } from './MouseButtonsEnum';\r\nimport { NonAnalyticsTracker } from './NonAnalyticsTracker/NonAnalyticsTracker';\r\nimport { PromotionImpressionViewModel } from './PromotionImpression/PromotionImpressionViewModel.csharp';\r\nimport { SearchVariant } from './SearchVariant';\r\n\r\nexport class GoogleTagManager {\r\n private static readonly _analyticsTracker: IGoogleTagManagerAnalyticsTracker[] = [new GoogleAnalytics4Tracker()];\r\n private static readonly _nonAnalyticsTracker: IGoogleTagManagerNonAnalyticsTracker[] = [new NonAnalyticsTracker()];\r\n private static readonly _dataLayer = new GoogleTagManagerDataLayer();\r\n\r\n private static maxProductImpressionsAmount = 4;\r\n private static maxPromoImpressionsAmount = 3;\r\n private static productCards: ProductCardViewModel[] = [];\r\n private static searchResults: SearchResultProductViewModel[] = [];\r\n private static promotions: PromotionImpressionViewModel[] = [];\r\n\r\n public static initOnBeforeUnloadEventListener() {\r\n window.addEventListener('beforeunload', () => {\r\n this.pushProductImpressionsToDataLayer();\r\n this.pushPromoImpressionsToDataLayer();\r\n });\r\n }\r\n\r\n public static productDetails(product: ProductViewModel, originName: string, promotionId?: string, promotionName?: string) {\r\n this._analyticsTracker.map((tracker) => tracker.trackItemView(product, originName, promotionId, promotionName));\r\n }\r\n\r\n public static productImpression(product: ProductCardViewModel) {\r\n this.productCards.push(product);\r\n\r\n if (this.productCards.length >= this.maxProductImpressionsAmount) {\r\n this.pushProductImpressionsToDataLayer();\r\n }\r\n }\r\n\r\n public static searchProductImpression(product: SearchResultProductViewModel) {\r\n this.searchResults.push(product);\r\n\r\n if (this.searchResults.length >= this.maxProductImpressionsAmount) {\r\n this.pushProductImpressionsToDataLayer();\r\n }\r\n }\r\n\r\n public static productCardClick(e: React.MouseEvent, product: ProductCardViewModel, productLink: string) {\r\n e.preventDefault();\r\n this._analyticsTracker.map((tracker) => tracker.trackProductCardItemSelect(product, productLink, this.getClickType(e)));\r\n }\r\n\r\n public static cartItemClick(e: React.MouseEvent, product: CartItemViewModel) {\r\n e.preventDefault();\r\n this._analyticsTracker.map((tracker) => tracker.trackCartItemItemSelect(product, product.link, this.getClickType(e)));\r\n }\r\n\r\n public static searchItemClick(e: React.MouseEvent, product: SearchResultProductViewModel) {\r\n e.preventDefault();\r\n this._analyticsTracker.map((tracker) => tracker.trackSearchItemSelect(product, product.link, this.getClickType(e)));\r\n }\r\n\r\n public static addToCart(\r\n product: IProductTrackingData,\r\n quantity: number,\r\n trackingData: TrackingData,\r\n originName?: string,\r\n promotionId?: string,\r\n promotionName?: string\r\n ) {\r\n this._analyticsTracker.map((tracker) => tracker.trackAddToCart(product, quantity, trackingData.eventId, originName, promotionId, promotionName));\r\n }\r\n\r\n public static addToWishList(product: IProductTrackingData) {\r\n this._analyticsTracker.map((tracker) => tracker.trackAddToWishList(product));\r\n }\r\n\r\n public static removeFromCart(product: CartItemViewModel, quantity: number) {\r\n this._analyticsTracker.map((tracker) => tracker.trackRemoveFromCart(product, quantity));\r\n }\r\n\r\n public static changeQuantity(product: CartItemViewModel, newQuantity: number, oldQuantity: number) {\r\n if (newQuantity > oldQuantity) {\r\n this._analyticsTracker.map((tracker) => tracker.trackAddToCart(product, newQuantity - oldQuantity));\r\n } else if (newQuantity < oldQuantity) {\r\n this._analyticsTracker.map((tracker) => tracker.trackRemoveFromCart(product, oldQuantity - newQuantity));\r\n }\r\n }\r\n\r\n public static beginCheckout(products: CartItemViewModel[], actionField: ITrackingData) {\r\n this._analyticsTracker.map((tracker) => tracker.trackBeginCheckout(products, actionField));\r\n }\r\n\r\n public static addShippingInfo(products: CartItemViewModel[], actionField: ITrackingData) {\r\n this._analyticsTracker.map((tracker) => tracker.trackAddShippingInfo(products, actionField));\r\n }\r\n\r\n public static addPaymentInfo(products: CartItemViewModel[], actionField: ITrackingData, trackingData?: TrackingData) {\r\n this._analyticsTracker.map((tracker) => tracker.trackAddPaymentInfo(products, actionField, trackingData?.eventId));\r\n }\r\n\r\n public static purchase(products: CartItemViewModel[], actionField: ITrackingData, trackingId: string) {\r\n this._analyticsTracker.map((tracker) => tracker.trackPurchase(products, actionField, trackingId));\r\n }\r\n\r\n public static priceSpiderPurchase(products: CartItemViewModel[]) {\r\n this._nonAnalyticsTracker.map((tracker) => tracker.trackPriceSpiderPurchase(products));\r\n }\r\n\r\n public static promotionImpression(promotion: PromotionImpressionViewModel) {\r\n this.promotions.push(promotion);\r\n\r\n if (this.promotions.length >= this.maxPromoImpressionsAmount) {\r\n this.pushPromoImpressionsToDataLayer();\r\n }\r\n }\r\n\r\n public static searchSuggestion(searchTerm: string) {\r\n this._analyticsTracker.map((tracker) => tracker.trackSearchSuggestions(searchTerm));\r\n }\r\n\r\n public static viewSearchResults(searchTerm: string, variant: SearchVariant) {\r\n this._analyticsTracker.map((tracker) => tracker.trackSearchResultsView(searchTerm, variant));\r\n }\r\n\r\n public static applySearchTag(tagValue: string, tagIndex: number) {\r\n this._analyticsTracker.map((tracker) => tracker.trackSearchTagClick(tagValue, tagIndex));\r\n }\r\n\r\n public static promotionClick(e: React.MouseEvent, promotion: PromotionImpressionViewModel, originalUrl?: string) {\r\n e.preventDefault();\r\n this._analyticsTracker.map((tracker) => tracker.trackPromotionSelect(promotion, originalUrl ?? promotion.link, this.getClickType(e)));\r\n }\r\n\r\n public static cartView(items: CartItemViewModel[], total: number, couponCode: string, isMiniCart?: boolean) {\r\n if (items && items.length > 0) {\r\n this._analyticsTracker.map((tracker) => tracker.trackViewCart(items, total, couponCode, isMiniCart));\r\n }\r\n }\r\n\r\n public static addUserId(userId?: string) {\r\n this._dataLayer.addUserId(userId);\r\n }\r\n\r\n private static getClickType(e: React.MouseEvent): GTMClickType {\r\n const isMiddleMouseButton = e.button === MouseButtons.MiddleButton;\r\n\r\n return {\r\n isNewTab: e.ctrlKey || e.metaKey || isMiddleMouseButton,\r\n isMiddleMouseButton\r\n };\r\n }\r\n\r\n private static pushProductImpressionsToDataLayer() {\r\n if (this.productCards.length > 0) {\r\n this._analyticsTracker.map((tracker) => tracker.trackProductCardsItemImpressions(this.productCards));\r\n this.productCards = [];\r\n }\r\n\r\n if (this.searchResults.length > 0) {\r\n this._analyticsTracker.map((tracker) => tracker.trackSearchResultsItemImpressions(this.searchResults));\r\n this.searchResults = [];\r\n }\r\n }\r\n\r\n private static pushPromoImpressionsToDataLayer() {\r\n if (this.promotions.length > 0) {\r\n this._analyticsTracker.map((tracker) => tracker.trackPromotionsView(this.promotions));\r\n this.promotions = [];\r\n }\r\n }\r\n}\r\n\r\nif (!isServerRendering()) {\r\n GoogleTagManager.initOnBeforeUnloadEventListener();\r\n}\r\n","import * as React from 'react';\r\n\r\nexport const PriceDisplay = ({ price, showCurrency, roundUp }: { price?: number; showCurrency?: boolean; roundUp?: boolean }) => {\r\n if (typeof price !== 'number') return null;\r\n\r\n const locales = 'nb-NO';\r\n\r\n const priceToDisplay =\r\n price === parseInt(price.toString(), 10) || roundUp\r\n ? Math.ceil(price).toLocaleString(locales) + ',-'\r\n : price.toLocaleString(locales, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n\r\n // replace \"small non-breaking space\" with a normal space\r\n const formattedPrice = priceToDisplay.replace(/\\u202f/g, ' ');\r\n\r\n return (\r\n \r\n {showCurrency && 'kr '}\r\n {formattedPrice}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { ReactNode } from 'react';\r\n\r\nimport { PictureProfile } from '../../../ResizedImage/PictureProfile.csharp';\r\nimport { Loader } from '../../Components/Loader/Loader';\r\nimport { ComponentProps } from '../ComponentProps.csharp';\r\nimport { ResponsivePictureBuilder } from './ResponsivePictureBuilder';\r\nimport { ResponsivePictureViewModel } from './ResponsivePictureViewModel.csharp';\r\n\r\nexport interface ResponsivePictureProps extends ComponentProps {\r\n profile: PictureProfile;\r\n imgAttributes?: React.ImgHTMLAttributes;\r\n showLoader?: boolean;\r\n isLazyLoaded?: boolean;\r\n}\r\n\r\nexport class ResponsivePicture extends React.Component {\r\n responsivePictureBuilder: ResponsivePictureBuilder;\r\n\r\n constructor(props: ResponsivePictureProps) {\r\n super(props);\r\n this.state = {\r\n isLoading: true\r\n };\r\n this.responsivePictureBuilder = new ResponsivePictureBuilder(props.profile, props.model);\r\n }\r\n\r\n private imgRef = React.createRef();\r\n\r\n public render(): ReactNode {\r\n const { isLazyLoaded } = this.props;\r\n return this.props.model ? (\r\n \r\n {isLazyLoaded ? this.buildSourcesWithLazyLoading() : this.buildSources()}\r\n {isLazyLoaded ? this.renderImageWithLazyLoading() : this.renderImage()}\r\n {isLazyLoaded && }\r\n \r\n ) : null;\r\n }\r\n\r\n public componentDidMount() {\r\n const isImageLoadingCompleted = this.imgRef.current && this.imgRef.current.complete && this.imgRef.current.naturalHeight !== 0;\r\n\r\n this.setState({\r\n isLoading: isImageLoadingCompleted ? false : this.props.showLoader === true\r\n });\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n if (window.objectFitPolyfill) {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n window.objectFitPolyfill();\r\n }\r\n }\r\n\r\n private renderImage = () => (\r\n \r\n );\r\n\r\n private renderImageWithLazyLoading = () => (\r\n \r\n );\r\n\r\n private buildSources = (): ReactNode[] => {\r\n if (!this.props.profile.sources) return [];\r\n return this.props.profile.sources.map((source) => (\r\n \r\n ));\r\n };\r\n\r\n private buildSourcesWithLazyLoading = (): ReactNode[] => {\r\n if (!this.props.profile.sources) return [];\r\n return this.props.profile.sources.map((source) => (\r\n \r\n ));\r\n };\r\n\r\n private handleOnLoad = () => {\r\n this.setState({ isLoading: false });\r\n };\r\n}\r\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","import classnames from 'classnames';\r\nimport React from 'react';\r\n\r\ninterface IButtonProps {\r\n children: React.ReactNode;\r\n onClick?: (e: React.MouseEvent) => void;\r\n size: ButtonSize;\r\n variant?: ButtonVariant;\r\n loaderPlacement?: ButtonLoaderPlacement;\r\n type?: 'button' | 'submit' | 'reset';\r\n disabled?: boolean;\r\n loading?: boolean;\r\n className?: string;\r\n target?: string;\r\n}\r\n\r\nexport const Button = (props: IButtonProps) => {\r\n const buttonClassNames = classnames(\r\n 'Button',\r\n `Button--${ButtonSize[props.size]}`,\r\n `Button--${ButtonVariant[props.variant || ButtonVariant.Primary]}`,\r\n `Button--Loader${ButtonLoaderPlacement[props.loaderPlacement || ButtonLoaderPlacement.Left]}`,\r\n props.loading && 'Button--Loading',\r\n props.className\r\n );\r\n\r\n const onClick = (e: React.MouseEvent) => {\r\n if (!props.loading && props.onClick) {\r\n props.onClick(e);\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport enum ButtonLoaderPlacement {\r\n Left,\r\n Right\r\n}\r\n\r\nexport enum ButtonVariant {\r\n Primary,\r\n Secondary,\r\n Tertiary,\r\n Quaternary,\r\n Text,\r\n Link,\r\n PhilPrimary\r\n}\r\n\r\nexport enum ButtonSize {\r\n XXSmall,\r\n XSmall,\r\n Small,\r\n Medium,\r\n Large\r\n}\r\n","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\n\r\nimport { ExperimentationUserDetails } from '../Models/ExperimentationUserDetails.csharp';\r\n\r\nexport const ExperimentsParamName = 'experiments';\r\n\r\nexport function resolveExperiments(component: HTMLElement | null): string[] {\r\n const experiments = [];\r\n\r\n if (!component) {\r\n return [];\r\n }\r\n\r\n let exp = getClosestExperimentField(component);\r\n while (exp) {\r\n if (exp.dataset.experiment) {\r\n experiments.push(exp.dataset.experiment);\r\n }\r\n\r\n if (!exp.parentElement) break;\r\n exp = getClosestExperimentField(exp.parentElement);\r\n }\r\n\r\n const globalExperiments = document.body.dataset.experiment;\r\n if (globalExperiments) {\r\n experiments.push(globalExperiments);\r\n }\r\n\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n\r\n for (const experiment of urlParams.getAll(ExperimentsParamName)) {\r\n experiments.push(experiment);\r\n }\r\n\r\n return experiments;\r\n}\r\n\r\nconst getClosestExperimentField = (component: HTMLElement): HTMLElement | null => component.closest('.Experiment');\r\n\r\nexport function addParameter(url: string, parameter: string, value: string): string {\r\n const param = parameter + '=' + value;\r\n if (url && (url.endsWith(param) || url.includes(param + '&'))) return url;\r\n\r\n const queryStart = url.indexOf('?');\r\n if (queryStart !== url.length) {\r\n url += queryStart > -1 ? '&' : '?';\r\n }\r\n\r\n url += param;\r\n return url;\r\n}\r\n\r\nexport function useExperimentAwareUrl(url: string, ref: React.RefObject): string {\r\n const [expUrl, setExpUrl] = useState(url);\r\n\r\n useEffect(() => {\r\n const experiments = resolveExperiments(ref.current);\r\n\r\n url = getExperimentAwareUrl(url, experiments);\r\n\r\n setExpUrl(url);\r\n }, []);\r\n\r\n return expUrl;\r\n}\r\n\r\nexport function getExperimentAwareUrl(url: string, experiments: string[]) {\r\n if (url && experiments?.length > 0) {\r\n for (const experiment of experiments) {\r\n url = addParameter(url, ExperimentsParamName, experiment);\r\n }\r\n }\r\n\r\n return url;\r\n}\r\n\r\nexport function useExperimentsForComponent(ref: React.RefObject): string[] {\r\n const [experiments, setExperiments] = useState([]);\r\n\r\n useEffect(() => {\r\n setExperiments(resolveExperiments(ref.current));\r\n }, []);\r\n\r\n return experiments;\r\n}\r\n\r\nexport function getUserInformation(): ExperimentationUserDetails {\r\n const getDevice = () => {\r\n if (window.innerWidth >= 1440) {\r\n return 'Desktop';\r\n }\r\n\r\n if (window.innerWidth >= 1024) {\r\n return 'Laptop';\r\n }\r\n\r\n if (window.innerWidth >= 768) {\r\n return 'Tablet';\r\n }\r\n\r\n return 'Mobile';\r\n };\r\n\r\n return {\r\n device: getDevice()\r\n };\r\n}\r\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum FavouritesListSortingType {\r\n\tByName = 4,\r\n\tByNewlyAdded = 6\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum ProductListSortingType {\r\n\tByRelevance = 0,\r\n\tByDate = 1,\r\n\tByPriceAscending = 2,\r\n\tByPriceDescending = 3,\r\n\tByName = 4,\r\n\tByPromotionPercentage = 5\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum SortingOptions {\r\n\tForProductList = 0,\r\n\tForFavouritesList = 1\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport class AiSearchKeys\r\n{\r\n\tpublic static aiSearchHeader: string = `AI_Search`;\r\n}\r\n","import { EventNames } from '../../ReactComponents/EventNames';\r\n\r\nexport interface ISearchEvent {\r\n phrase: string;\r\n}\r\n\r\nexport function clearSearchInput() {\r\n window.dispatchEvent(new CustomEvent(EventNames.ResetSearch));\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport TouchSwiper from '../../ReactComponents/TouchSwiper/TouchSwiper';\r\nimport { SelectedOption } from '../ProductFilters/SelectedOption';\r\n\r\ninterface SelectedOptionListProps {\r\n selectedOptions: SelectedOption[];\r\n onRemoveOption: (filterKey: string, subFilterKey: string | null, optionKey: string, isSelected: boolean) => void;\r\n onReset: () => void;\r\n}\r\n\r\nexport const SelectedOptionList: React.FC = ({ selectedOptions, onRemoveOption, onReset }) => {\r\n const renderSelectedFilters = (selectedOptions: SelectedOption[]) => {\r\n return selectedOptions.map((selectedFilter, index) => {\r\n return (\r\n
  • \r\n onRemoveOption(selectedFilter.filterKey, selectedFilter.subFilterKey, selectedFilter.optionKey, false)}\r\n >\r\n {selectedFilter.value}\r\n \r\n
  • \r\n );\r\n });\r\n };\r\n\r\n return (\r\n
      \r\n \r\n {renderSelectedFilters(selectedOptions)}\r\n {selectedOptions.length > 1 && (\r\n
    • \r\n \r\n
    • \r\n )}\r\n
      \r\n
    \r\n );\r\n};\r\n","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nexport { _createSuper as default };","/* eslint-disable no-console */\nvar warned = {};\nexport function warning(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n console.error(\"Warning: \".concat(message));\n }\n}\nexport function note(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n console.warn(\"Note: \".concat(message));\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nexport default warningOnce;\n/* eslint-enable */","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React from 'react';\n\nvar Track = function Track(props) {\n var _ref, _ref2;\n\n var className = props.className,\n included = props.included,\n vertical = props.vertical,\n style = props.style;\n var length = props.length,\n offset = props.offset,\n reverse = props.reverse;\n\n if (length < 0) {\n reverse = !reverse;\n length = Math.abs(length);\n offset = 100 - offset;\n }\n\n var positonStyle = vertical ? (_ref = {}, _defineProperty(_ref, reverse ? 'top' : 'bottom', \"\".concat(offset, \"%\")), _defineProperty(_ref, reverse ? 'bottom' : 'top', 'auto'), _defineProperty(_ref, \"height\", \"\".concat(length, \"%\")), _ref) : (_ref2 = {}, _defineProperty(_ref2, reverse ? 'right' : 'left', \"\".concat(offset, \"%\")), _defineProperty(_ref2, reverse ? 'left' : 'right', 'auto'), _defineProperty(_ref2, \"width\", \"\".concat(length, \"%\")), _ref2);\n\n var elStyle = _objectSpread(_objectSpread({}, style), positonStyle);\n\n return included ? /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: elStyle\n }) : null;\n};\n\nexport default Track;","import getPrototypeOf from \"./getPrototypeOf.js\";\nfunction _superPropBase(t, o) {\n for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););\n return t;\n}\nexport { _superPropBase as default };","import superPropBase from \"./superPropBase.js\";\nfunction _get() {\n return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {\n var p = superPropBase(e, t);\n if (p) {\n var n = Object.getOwnPropertyDescriptor(p, t);\n return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;\n }\n }, _get.apply(null, arguments);\n}\nexport { _get as default };","import ReactDOM from 'react-dom';\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n /* eslint camelcase: 2 */\n var callback = ReactDOM.unstable_batchedUpdates ? function run(e) {\n ReactDOM.unstable_batchedUpdates(cb, e);\n } : cb;\n\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, option);\n }\n\n return {\n remove: function remove() {\n if (target.removeEventListener) {\n target.removeEventListener(eventType, callback);\n }\n }\n };\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport warning from \"rc-util/es/warning\";\n\nvar calcPoints = function calcPoints(vertical, marks, dots, step, min, max) {\n warning(dots ? step > 0 : true, '`Slider[step]` should be a positive number in order to make Slider[dots] work.');\n var points = Object.keys(marks).map(parseFloat).sort(function (a, b) {\n return a - b;\n });\n\n if (dots && step) {\n for (var i = min; i <= max; i += step) {\n if (points.indexOf(i) === -1) {\n points.push(i);\n }\n }\n }\n\n return points;\n};\n\nvar Steps = function Steps(_ref) {\n var prefixCls = _ref.prefixCls,\n vertical = _ref.vertical,\n reverse = _ref.reverse,\n marks = _ref.marks,\n dots = _ref.dots,\n step = _ref.step,\n included = _ref.included,\n lowerBound = _ref.lowerBound,\n upperBound = _ref.upperBound,\n max = _ref.max,\n min = _ref.min,\n dotStyle = _ref.dotStyle,\n activeDotStyle = _ref.activeDotStyle;\n var range = max - min;\n var elements = calcPoints(vertical, marks, dots, step, min, max).map(function (point) {\n var _classNames;\n\n var offset = \"\".concat(Math.abs(point - min) / range * 100, \"%\");\n var isActived = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var style = vertical ? _objectSpread(_objectSpread({}, dotStyle), {}, _defineProperty({}, reverse ? 'top' : 'bottom', offset)) : _objectSpread(_objectSpread({}, dotStyle), {}, _defineProperty({}, reverse ? 'right' : 'left', offset));\n\n if (isActived) {\n style = _objectSpread(_objectSpread({}, style), activeDotStyle);\n }\n\n var pointClassName = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-dot\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dot-active\"), isActived), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dot-reverse\"), reverse), _classNames));\n return /*#__PURE__*/React.createElement(\"span\", {\n className: pointClassName,\n style: style,\n key: point\n });\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-step\")\n }, elements);\n};\n\nexport default Steps;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport React from 'react';\nimport classNames from 'classnames';\n\nvar Marks = function Marks(_ref) {\n var className = _ref.className,\n vertical = _ref.vertical,\n reverse = _ref.reverse,\n marks = _ref.marks,\n included = _ref.included,\n upperBound = _ref.upperBound,\n lowerBound = _ref.lowerBound,\n max = _ref.max,\n min = _ref.min,\n onClickLabel = _ref.onClickLabel;\n var marksKeys = Object.keys(marks);\n var range = max - min;\n var elements = marksKeys.map(parseFloat).sort(function (a, b) {\n return a - b;\n }).map(function (point) {\n var _classNames;\n\n var markPoint = marks[point];\n var markPointIsObject = _typeof(markPoint) === 'object' && ! /*#__PURE__*/React.isValidElement(markPoint);\n var markLabel = markPointIsObject ? markPoint.label : markPoint;\n\n if (!markLabel && markLabel !== 0) {\n return null;\n }\n\n var isActive = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var markClassName = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(className, \"-text\"), true), _defineProperty(_classNames, \"\".concat(className, \"-text-active\"), isActive), _classNames));\n\n var bottomStyle = _defineProperty({\n marginBottom: '-50%'\n }, reverse ? 'top' : 'bottom', \"\".concat((point - min) / range * 100, \"%\"));\n\n var leftStyle = _defineProperty({\n transform: \"translateX(\".concat(reverse ? \"50%\" : \"-50%\", \")\"),\n msTransform: \"translateX(\".concat(reverse ? \"50%\" : \"-50%\", \")\")\n }, reverse ? 'right' : 'left', \"\".concat((point - min) / range * 100, \"%\"));\n\n var style = vertical ? bottomStyle : leftStyle;\n var markStyle = markPointIsObject ? _objectSpread(_objectSpread({}, style), markPoint.style) : style;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: markClassName,\n style: markStyle,\n key: point,\n onMouseDown: function onMouseDown(e) {\n return onClickLabel(e, point);\n },\n onTouchStart: function onTouchStart(e) {\n return onClickLabel(e, point);\n }\n }, markLabel);\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, elements);\n};\n\nexport default Marks;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\n\nvar Handle = /*#__PURE__*/function (_React$Component) {\n _inherits(Handle, _React$Component);\n\n var _super = _createSuper(Handle);\n\n function Handle() {\n var _this;\n\n _classCallCheck(this, Handle);\n\n _this = _super.apply(this, arguments);\n _this.state = {\n clickFocused: false\n };\n\n _this.setHandleRef = function (node) {\n _this.handle = node;\n };\n\n _this.handleMouseUp = function () {\n if (document.activeElement === _this.handle) {\n _this.setClickFocus(true);\n }\n };\n\n _this.handleMouseDown = function (e) {\n // avoid selecting text during drag\n // https://github.com/ant-design/ant-design/issues/25010\n e.preventDefault(); // fix https://github.com/ant-design/ant-design/issues/15324\n\n _this.focus();\n };\n\n _this.handleBlur = function () {\n _this.setClickFocus(false);\n };\n\n _this.handleKeyDown = function () {\n _this.setClickFocus(false);\n };\n\n return _this;\n }\n\n _createClass(Handle, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // mouseup won't trigger if mouse moved out of handle,\n // so we listen on document here.\n this.onMouseUpListener = addEventListener(document, 'mouseup', this.handleMouseUp);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.onMouseUpListener) {\n this.onMouseUpListener.remove();\n }\n }\n }, {\n key: \"setClickFocus\",\n value: function setClickFocus(focused) {\n this.setState({\n clickFocused: focused\n });\n }\n }, {\n key: \"clickFocus\",\n value: function clickFocus() {\n this.setClickFocus(true);\n this.focus();\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.handle.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.handle.blur();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _ref, _ref2;\n\n var _this$props = this.props,\n prefixCls = _this$props.prefixCls,\n vertical = _this$props.vertical,\n reverse = _this$props.reverse,\n offset = _this$props.offset,\n style = _this$props.style,\n disabled = _this$props.disabled,\n min = _this$props.min,\n max = _this$props.max,\n value = _this$props.value,\n tabIndex = _this$props.tabIndex,\n ariaLabel = _this$props.ariaLabel,\n ariaLabelledBy = _this$props.ariaLabelledBy,\n ariaValueTextFormatter = _this$props.ariaValueTextFormatter,\n restProps = _objectWithoutProperties(_this$props, [\"prefixCls\", \"vertical\", \"reverse\", \"offset\", \"style\", \"disabled\", \"min\", \"max\", \"value\", \"tabIndex\", \"ariaLabel\", \"ariaLabelledBy\", \"ariaValueTextFormatter\"]);\n\n var className = classNames(this.props.className, _defineProperty({}, \"\".concat(prefixCls, \"-handle-click-focused\"), this.state.clickFocused));\n var positionStyle = vertical ? (_ref = {}, _defineProperty(_ref, reverse ? 'top' : 'bottom', \"\".concat(offset, \"%\")), _defineProperty(_ref, reverse ? 'bottom' : 'top', 'auto'), _defineProperty(_ref, \"transform\", reverse ? null : \"translateY(+50%)\"), _ref) : (_ref2 = {}, _defineProperty(_ref2, reverse ? 'right' : 'left', \"\".concat(offset, \"%\")), _defineProperty(_ref2, reverse ? 'left' : 'right', 'auto'), _defineProperty(_ref2, \"transform\", \"translateX(\".concat(reverse ? '+' : '-', \"50%)\")), _ref2);\n\n var elStyle = _objectSpread(_objectSpread({}, style), positionStyle);\n\n var mergedTabIndex = tabIndex || 0;\n\n if (disabled || tabIndex === null) {\n mergedTabIndex = null;\n }\n\n var ariaValueText;\n\n if (ariaValueTextFormatter) {\n ariaValueText = ariaValueTextFormatter(value);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: this.setHandleRef,\n tabIndex: mergedTabIndex\n }, restProps, {\n className: className,\n style: elStyle,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleMouseDown // aria attribute\n ,\n role: \"slider\",\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n \"aria-valuenow\": value,\n \"aria-disabled\": !!disabled,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-valuetext\": ariaValueText\n }));\n }\n }]);\n\n return Handle;\n}(React.Component);\n\nexport { Handle as default };","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n\n /**\n * TAB\n */\n TAB: 9,\n\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n\n /**\n * ENTER\n */\n ENTER: 13,\n\n /**\n * SHIFT\n */\n SHIFT: 16,\n\n /**\n * CTRL\n */\n CTRL: 17,\n\n /**\n * ALT\n */\n ALT: 18,\n\n /**\n * PAUSE\n */\n PAUSE: 19,\n\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n\n /**\n * ESC\n */\n ESC: 27,\n\n /**\n * SPACE\n */\n SPACE: 32,\n\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n\n /**\n * END\n */\n END: 35,\n\n /**\n * HOME\n */\n HOME: 36,\n\n /**\n * LEFT\n */\n LEFT: 37,\n\n /**\n * UP\n */\n UP: 38,\n\n /**\n * RIGHT\n */\n RIGHT: 39,\n\n /**\n * DOWN\n */\n DOWN: 40,\n\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n\n /**\n * INSERT\n */\n INSERT: 45,\n\n /**\n * DELETE\n */\n DELETE: 46,\n\n /**\n * ZERO\n */\n ZERO: 48,\n\n /**\n * ONE\n */\n ONE: 49,\n\n /**\n * TWO\n */\n TWO: 50,\n\n /**\n * THREE\n */\n THREE: 51,\n\n /**\n * FOUR\n */\n FOUR: 52,\n\n /**\n * FIVE\n */\n FIVE: 53,\n\n /**\n * SIX\n */\n SIX: 54,\n\n /**\n * SEVEN\n */\n SEVEN: 55,\n\n /**\n * EIGHT\n */\n EIGHT: 56,\n\n /**\n * NINE\n */\n NINE: 57,\n\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n\n /**\n * A\n */\n A: 65,\n\n /**\n * B\n */\n B: 66,\n\n /**\n * C\n */\n C: 67,\n\n /**\n * D\n */\n D: 68,\n\n /**\n * E\n */\n E: 69,\n\n /**\n * F\n */\n F: 70,\n\n /**\n * G\n */\n G: 71,\n\n /**\n * H\n */\n H: 72,\n\n /**\n * I\n */\n I: 73,\n\n /**\n * J\n */\n J: 74,\n\n /**\n * K\n */\n K: 75,\n\n /**\n * L\n */\n L: 76,\n\n /**\n * M\n */\n M: 77,\n\n /**\n * N\n */\n N: 78,\n\n /**\n * O\n */\n O: 79,\n\n /**\n * P\n */\n P: 80,\n\n /**\n * Q\n */\n Q: 81,\n\n /**\n * R\n */\n R: 82,\n\n /**\n * S\n */\n S: 83,\n\n /**\n * T\n */\n T: 84,\n\n /**\n * U\n */\n U: 85,\n\n /**\n * V\n */\n V: 86,\n\n /**\n * W\n */\n W: 87,\n\n /**\n * X\n */\n X: 88,\n\n /**\n * Y\n */\n Y: 89,\n\n /**\n * Z\n */\n Z: 90,\n\n /**\n * META\n */\n META: 91,\n\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n\n /**\n * F1\n */\n F1: 112,\n\n /**\n * F2\n */\n F2: 113,\n\n /**\n * F3\n */\n F3: 114,\n\n /**\n * F4\n */\n F4: 115,\n\n /**\n * F5\n */\n F5: 116,\n\n /**\n * F6\n */\n F6: 117,\n\n /**\n * F7\n */\n F7: 118,\n\n /**\n * F8\n */\n F8: 119,\n\n /**\n * F9\n */\n F9: 120,\n\n /**\n * F10\n */\n F10: 121,\n\n /**\n * F11\n */\n F11: 122,\n\n /**\n * F12\n */\n F12: 123,\n\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n\n /**\n * DASH\n */\n DASH: 189,\n\n /**\n * EQUALS\n */\n EQUALS: 187,\n\n /**\n * COMMA\n */\n COMMA: 188,\n\n /**\n * PERIOD\n */\n PERIOD: 190,\n\n /**\n * SLASH\n */\n SLASH: 191,\n\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n\n if (e.altKey && !e.ctrlKey || e.metaKey || // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n } // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n\n\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n\n default:\n return true;\n }\n },\n\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n } // Safari sends zero key code for non-latin characters.\n\n\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport { findDOMNode } from 'react-dom';\nimport keyCode from \"rc-util/es/KeyCode\";\nexport function isEventFromHandle(e, handles) {\n try {\n return Object.keys(handles).some(function (key) {\n return e.target === findDOMNode(handles[key]);\n });\n } catch (error) {\n return false;\n }\n}\nexport function isValueOutOfRange(value, _ref) {\n var min = _ref.min,\n max = _ref.max;\n return value < min || value > max;\n}\nexport function isNotTouchEvent(e) {\n return e.touches.length > 1 || e.type.toLowerCase() === 'touchend' && e.touches.length > 0;\n}\nexport function getClosestPoint(val, _ref2) {\n var marks = _ref2.marks,\n step = _ref2.step,\n min = _ref2.min,\n max = _ref2.max;\n var points = Object.keys(marks).map(parseFloat);\n\n if (step !== null) {\n var baseNum = Math.pow(10, getPrecision(step));\n var maxSteps = Math.floor((max * baseNum - min * baseNum) / (step * baseNum));\n var steps = Math.min((val - min) / step, maxSteps);\n var closestStep = Math.round(steps) * step + min;\n points.push(closestStep);\n }\n\n var diffs = points.map(function (point) {\n return Math.abs(val - point);\n });\n return points[diffs.indexOf(Math.min.apply(Math, _toConsumableArray(diffs)))];\n}\nexport function getPrecision(step) {\n var stepString = step.toString();\n var precision = 0;\n\n if (stepString.indexOf('.') >= 0) {\n precision = stepString.length - stepString.indexOf('.') - 1;\n }\n\n return precision;\n}\nexport function getMousePosition(vertical, e) {\n return vertical ? e.clientY : e.pageX;\n}\nexport function getTouchPosition(vertical, e) {\n return vertical ? e.touches[0].clientY : e.touches[0].pageX;\n}\nexport function getHandleCenterPosition(vertical, handle) {\n var coords = handle.getBoundingClientRect();\n return vertical ? coords.top + coords.height * 0.5 : window.pageXOffset + coords.left + coords.width * 0.5;\n}\nexport function ensureValueInRange(val, _ref3) {\n var max = _ref3.max,\n min = _ref3.min;\n\n if (val <= min) {\n return min;\n }\n\n if (val >= max) {\n return max;\n }\n\n return val;\n}\nexport function ensureValuePrecision(val, props) {\n var step = props.step;\n var closestPoint = isFinite(getClosestPoint(val, props)) ? getClosestPoint(val, props) : 0; // eslint-disable-line\n\n return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step)));\n}\nexport function pauseEvent(e) {\n e.stopPropagation();\n e.preventDefault();\n}\nexport function calculateNextValue(func, value, props) {\n var operations = {\n increase: function increase(a, b) {\n return a + b;\n },\n decrease: function decrease(a, b) {\n return a - b;\n }\n };\n var indexToGet = operations[func](Object.keys(props.marks).indexOf(JSON.stringify(value)), 1);\n var keyToGet = Object.keys(props.marks)[indexToGet];\n\n if (props.step) {\n return operations[func](value, props.step);\n }\n\n if (!!Object.keys(props.marks).length && !!props.marks[keyToGet]) {\n return props.marks[keyToGet];\n }\n\n return value;\n}\nexport function getKeyboardValueMutator(e, vertical, reverse) {\n var increase = 'increase';\n var decrease = 'decrease';\n var method = increase;\n\n switch (e.keyCode) {\n case keyCode.UP:\n method = vertical && reverse ? decrease : increase;\n break;\n\n case keyCode.RIGHT:\n method = !vertical && reverse ? decrease : increase;\n break;\n\n case keyCode.DOWN:\n method = vertical && reverse ? increase : decrease;\n break;\n\n case keyCode.LEFT:\n method = !vertical && reverse ? increase : decrease;\n break;\n\n case keyCode.END:\n return function (value, props) {\n return props.max;\n };\n\n case keyCode.HOME:\n return function (value, props) {\n return props.min;\n };\n\n case keyCode.PAGE_UP:\n return function (value, props) {\n return value + props.step * 2;\n };\n\n case keyCode.PAGE_DOWN:\n return function (value, props) {\n return value - props.step * 2;\n };\n\n default:\n return undefined;\n }\n\n return function (value, props) {\n return calculateNextValue(method, value, props);\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _get from \"@babel/runtime/helpers/esm/get\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport classNames from 'classnames';\nimport warning from \"rc-util/es/warning\";\nimport Steps from './Steps';\nimport Marks from './Marks';\nimport Handle from '../Handle';\nimport * as utils from '../utils';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nfunction noop() {}\n\nexport default function createSlider(Component) {\n var _a; // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\n return _a = /*#__PURE__*/function (_Component) {\n _inherits(ComponentEnhancer, _Component);\n\n var _super = _createSuper(ComponentEnhancer);\n\n function ComponentEnhancer(props) {\n var _this;\n\n _classCallCheck(this, ComponentEnhancer);\n\n _this = _super.call(this, props);\n\n _this.onDown = function (e, position) {\n var p = position;\n var _this$props = _this.props,\n draggableTrack = _this$props.draggableTrack,\n isVertical = _this$props.vertical;\n var bounds = _this.state.bounds;\n var value = draggableTrack && _this.positionGetValue ? _this.positionGetValue(p) || [] : [];\n var inPoint = utils.isEventFromHandle(e, _this.handlesRefs);\n _this.dragTrack = draggableTrack && bounds.length >= 2 && !inPoint && !value.map(function (n, i) {\n var v = !i ? n >= bounds[i] : true;\n return i === value.length - 1 ? n <= bounds[i] : v;\n }).some(function (c) {\n return !c;\n });\n\n if (_this.dragTrack) {\n _this.dragOffset = p;\n _this.startBounds = _toConsumableArray(bounds);\n } else {\n if (!inPoint) {\n _this.dragOffset = 0;\n } else {\n var handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n _this.dragOffset = p - handlePosition;\n p = handlePosition;\n }\n\n _this.onStart(p);\n }\n };\n\n _this.onMouseDown = function (e) {\n if (e.button !== 0) {\n return;\n }\n\n _this.removeDocumentEvents();\n\n var isVertical = _this.props.vertical;\n var position = utils.getMousePosition(isVertical, e);\n\n _this.onDown(e, position);\n\n _this.addDocumentMouseEvents();\n };\n\n _this.onTouchStart = function (e) {\n if (utils.isNotTouchEvent(e)) return;\n var isVertical = _this.props.vertical;\n var position = utils.getTouchPosition(isVertical, e);\n\n _this.onDown(e, position);\n\n _this.addDocumentTouchEvents();\n\n utils.pauseEvent(e);\n };\n\n _this.onFocus = function (e) {\n var _this$props2 = _this.props,\n onFocus = _this$props2.onFocus,\n vertical = _this$props2.vertical;\n\n if (utils.isEventFromHandle(e, _this.handlesRefs) && !_this.dragTrack) {\n var handlePosition = utils.getHandleCenterPosition(vertical, e.target);\n _this.dragOffset = 0;\n\n _this.onStart(handlePosition);\n\n utils.pauseEvent(e);\n\n if (onFocus) {\n onFocus(e);\n }\n }\n };\n\n _this.onBlur = function (e) {\n var onBlur = _this.props.onBlur;\n\n if (!_this.dragTrack) {\n _this.onEnd();\n }\n\n if (onBlur) {\n onBlur(e);\n }\n };\n\n _this.onMouseUp = function () {\n if (_this.handlesRefs[_this.prevMovedHandleIndex]) {\n _this.handlesRefs[_this.prevMovedHandleIndex].clickFocus();\n }\n };\n\n _this.onMouseMove = function (e) {\n if (!_this.sliderRef) {\n _this.onEnd();\n\n return;\n }\n\n var position = utils.getMousePosition(_this.props.vertical, e);\n\n _this.onMove(e, position - _this.dragOffset, _this.dragTrack, _this.startBounds);\n };\n\n _this.onTouchMove = function (e) {\n if (utils.isNotTouchEvent(e) || !_this.sliderRef) {\n _this.onEnd();\n\n return;\n }\n\n var position = utils.getTouchPosition(_this.props.vertical, e);\n\n _this.onMove(e, position - _this.dragOffset, _this.dragTrack, _this.startBounds);\n };\n\n _this.onKeyDown = function (e) {\n if (_this.sliderRef && utils.isEventFromHandle(e, _this.handlesRefs)) {\n _this.onKeyboard(e);\n }\n };\n\n _this.onClickMarkLabel = function (e, value) {\n e.stopPropagation();\n\n _this.onChange({\n value: value\n }); // eslint-disable-next-line react/no-unused-state\n\n\n _this.setState({\n value: value\n }, function () {\n return _this.onEnd(true);\n });\n };\n\n _this.saveSlider = function (slider) {\n _this.sliderRef = slider;\n };\n\n var step = props.step,\n max = props.max,\n min = props.min;\n var isPointDiffEven = isFinite(max - min) ? (max - min) % step === 0 : true; // eslint-disable-line\n\n warning(step && Math.floor(step) === step ? isPointDiffEven : true, \"Slider[max] - Slider[min] (\".concat(max - min, \") should be a multiple of Slider[step] (\").concat(step, \")\"));\n _this.handlesRefs = {};\n return _this;\n }\n\n _createClass(ComponentEnhancer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // Snapshot testing cannot handle refs, so be sure to null-check this.\n this.document = this.sliderRef && this.sliderRef.ownerDocument;\n var _this$props3 = this.props,\n autoFocus = _this$props3.autoFocus,\n disabled = _this$props3.disabled;\n\n if (autoFocus && !disabled) {\n this.focus();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (_get(_getPrototypeOf(ComponentEnhancer.prototype), \"componentWillUnmount\", this)) _get(_getPrototypeOf(ComponentEnhancer.prototype), \"componentWillUnmount\", this).call(this);\n this.removeDocumentEvents();\n }\n }, {\n key: \"getSliderStart\",\n value: function getSliderStart() {\n var slider = this.sliderRef;\n var _this$props4 = this.props,\n vertical = _this$props4.vertical,\n reverse = _this$props4.reverse;\n var rect = slider.getBoundingClientRect();\n\n if (vertical) {\n return reverse ? rect.bottom : rect.top;\n }\n\n return window.pageXOffset + (reverse ? rect.right : rect.left);\n }\n }, {\n key: \"getSliderLength\",\n value: function getSliderLength() {\n var slider = this.sliderRef;\n\n if (!slider) {\n return 0;\n }\n\n var coords = slider.getBoundingClientRect();\n return this.props.vertical ? coords.height : coords.width;\n }\n }, {\n key: \"addDocumentTouchEvents\",\n value: function addDocumentTouchEvents() {\n // just work for Chrome iOS Safari and Android Browser\n this.onTouchMoveListener = addEventListener(this.document, 'touchmove', this.onTouchMove);\n this.onTouchUpListener = addEventListener(this.document, 'touchend', this.onEnd);\n }\n }, {\n key: \"addDocumentMouseEvents\",\n value: function addDocumentMouseEvents() {\n this.onMouseMoveListener = addEventListener(this.document, 'mousemove', this.onMouseMove);\n this.onMouseUpListener = addEventListener(this.document, 'mouseup', this.onEnd);\n }\n }, {\n key: \"removeDocumentEvents\",\n value: function removeDocumentEvents() {\n /* eslint-disable @typescript-eslint/no-unused-expressions */\n this.onTouchMoveListener && this.onTouchMoveListener.remove();\n this.onTouchUpListener && this.onTouchUpListener.remove();\n this.onMouseMoveListener && this.onMouseMoveListener.remove();\n this.onMouseUpListener && this.onMouseUpListener.remove();\n /* eslint-enable no-unused-expressions */\n }\n }, {\n key: \"focus\",\n value: function focus() {\n var _this$handlesRefs$;\n\n if (this.props.disabled) {\n return;\n }\n\n (_this$handlesRefs$ = this.handlesRefs[0]) === null || _this$handlesRefs$ === void 0 ? void 0 : _this$handlesRefs$.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n var _this2 = this;\n\n if (this.props.disabled) {\n return;\n }\n\n Object.keys(this.handlesRefs).forEach(function (key) {\n var _this2$handlesRefs$ke, _this2$handlesRefs$ke2;\n\n (_this2$handlesRefs$ke = _this2.handlesRefs[key]) === null || _this2$handlesRefs$ke === void 0 ? void 0 : (_this2$handlesRefs$ke2 = _this2$handlesRefs$ke.blur) === null || _this2$handlesRefs$ke2 === void 0 ? void 0 : _this2$handlesRefs$ke2.call(_this2$handlesRefs$ke);\n });\n }\n }, {\n key: \"calcValue\",\n value: function calcValue(offset) {\n var _this$props5 = this.props,\n vertical = _this$props5.vertical,\n min = _this$props5.min,\n max = _this$props5.max;\n var ratio = Math.abs(Math.max(offset, 0) / this.getSliderLength());\n var value = vertical ? (1 - ratio) * (max - min) + min : ratio * (max - min) + min;\n return value;\n }\n }, {\n key: \"calcValueByPos\",\n value: function calcValueByPos(position) {\n var sign = this.props.reverse ? -1 : +1;\n var pixelOffset = sign * (position - this.getSliderStart());\n var nextValue = this.trimAlignValue(this.calcValue(pixelOffset));\n return nextValue;\n }\n }, {\n key: \"calcOffset\",\n value: function calcOffset(value) {\n var _this$props6 = this.props,\n min = _this$props6.min,\n max = _this$props6.max;\n var ratio = (value - min) / (max - min);\n return Math.max(0, ratio * 100);\n }\n }, {\n key: \"saveHandle\",\n value: function saveHandle(index, handle) {\n this.handlesRefs[index] = handle;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var _this$props7 = this.props,\n prefixCls = _this$props7.prefixCls,\n className = _this$props7.className,\n marks = _this$props7.marks,\n dots = _this$props7.dots,\n step = _this$props7.step,\n included = _this$props7.included,\n disabled = _this$props7.disabled,\n vertical = _this$props7.vertical,\n reverse = _this$props7.reverse,\n min = _this$props7.min,\n max = _this$props7.max,\n children = _this$props7.children,\n maximumTrackStyle = _this$props7.maximumTrackStyle,\n style = _this$props7.style,\n railStyle = _this$props7.railStyle,\n dotStyle = _this$props7.dotStyle,\n activeDotStyle = _this$props7.activeDotStyle;\n\n var _get$call = _get(_getPrototypeOf(ComponentEnhancer.prototype), \"render\", this).call(this),\n tracks = _get$call.tracks,\n handles = _get$call.handles;\n\n var sliderClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-marks\"), Object.keys(marks).length), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), vertical), _defineProperty(_classNames, className, className), _classNames));\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: this.saveSlider,\n className: sliderClassName,\n onTouchStart: disabled ? noop : this.onTouchStart,\n onMouseDown: disabled ? noop : this.onMouseDown,\n onMouseUp: disabled ? noop : this.onMouseUp,\n onKeyDown: disabled ? noop : this.onKeyDown,\n onFocus: disabled ? noop : this.onFocus,\n onBlur: disabled ? noop : this.onBlur,\n style: style\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-rail\"),\n style: _objectSpread(_objectSpread({}, maximumTrackStyle), railStyle)\n }), tracks, /*#__PURE__*/React.createElement(Steps, {\n prefixCls: prefixCls,\n vertical: vertical,\n reverse: reverse,\n marks: marks,\n dots: dots,\n step: step,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n dotStyle: dotStyle,\n activeDotStyle: activeDotStyle\n }), handles, /*#__PURE__*/React.createElement(Marks, {\n className: \"\".concat(prefixCls, \"-mark\"),\n onClickLabel: disabled ? noop : this.onClickMarkLabel,\n vertical: vertical,\n marks: marks,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n reverse: reverse\n }), children);\n }\n }]);\n\n return ComponentEnhancer;\n }(Component), _a.displayName = \"ComponentEnhancer(\".concat(Component.displayName, \")\"), _a.defaultProps = _objectSpread(_objectSpread({}, Component.defaultProps), {}, {\n prefixCls: 'rc-slider',\n className: '',\n min: 0,\n max: 100,\n step: 1,\n marks: {},\n handle: function handle(props) {\n var index = props.index,\n restProps = _objectWithoutProperties(props, [\"index\"]);\n\n delete restProps.dragging;\n\n if (restProps.value === null) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Handle, _extends({}, restProps, {\n key: index\n }));\n },\n onBeforeChange: noop,\n onChange: noop,\n onAfterChange: noop,\n included: true,\n disabled: false,\n dots: false,\n vertical: false,\n reverse: false,\n trackStyle: [{}],\n handleStyle: [{}],\n railStyle: {},\n dotStyle: {},\n activeDotStyle: {}\n }), _a;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n /* eslint-enable */\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _this.positionGetValue = function (position) {\n return [];\n };\n\n _this.onEnd = function (force) {\n var dragging = _this.state.dragging;\n\n _this.removeDocumentEvents();\n\n if (dragging || force) {\n _this.props.onAfterChange(_this.getValue());\n }\n\n _this.setState({\n dragging: false\n });\n };\n\n var defaultValue = props.defaultValue !== undefined ? props.defaultValue : props.min;\n var value = props.value !== undefined ? props.value : defaultValue;\n _this.state = {\n value: _this.trimAlignValue(value),\n dragging: false\n };\n warning(!('minimumTrackStyle' in props), 'minimumTrackStyle will be deprecated, please use trackStyle instead.');\n warning(!('maximumTrackStyle' in props), 'maximumTrackStyle will be deprecated, please use railStyle instead.');\n return _this;\n }\n /**\n * [Legacy] Used for inherit other component.\n * It's a bad code style which should be refactor.\n */\n\n /* eslint-disable @typescript-eslint/no-unused-vars, class-methods-use-this */\n\n\n _createClass(Slider, [{\n key: \"calcValueByPos\",\n value: function calcValueByPos(value) {\n return 0;\n }\n }, {\n key: \"calcOffset\",\n value: function calcOffset(value) {\n return 0;\n }\n }, {\n key: \"saveHandle\",\n value: function saveHandle(index, h) {}\n }, {\n key: \"removeDocumentEvents\",\n value: function removeDocumentEvents() {}\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props = this.props,\n min = _this$props.min,\n max = _this$props.max,\n value = _this$props.value,\n onChange = _this$props.onChange;\n\n if (!('min' in this.props || 'max' in this.props)) {\n return;\n }\n\n var theValue = value !== undefined ? value : prevState.value;\n var nextValue = this.trimAlignValue(theValue, this.props);\n\n if (nextValue === prevState.value) {\n return;\n } // eslint-disable-next-line\n\n\n this.setState({\n value: nextValue\n });\n\n if (!(min === prevProps.min && max === prevProps.max) && utils.isValueOutOfRange(theValue, this.props)) {\n onChange(nextValue);\n }\n }\n }, {\n key: \"onChange\",\n value: function onChange(state) {\n var props = this.props;\n var isNotControlled = !('value' in props);\n var nextState = state.value > this.props.max ? _objectSpread(_objectSpread({}, state), {}, {\n value: this.props.max\n }) : state;\n\n if (isNotControlled) {\n this.setState(nextState);\n }\n\n var changedValue = nextState.value;\n props.onChange(changedValue);\n }\n }, {\n key: \"onStart\",\n value: function onStart(position) {\n this.setState({\n dragging: true\n });\n var props = this.props;\n var prevValue = this.getValue();\n props.onBeforeChange(prevValue);\n var value = this.calcValueByPos(position);\n this.startValue = value;\n this.startPosition = position;\n if (value === prevValue) return;\n this.prevMovedHandleIndex = 0;\n this.onChange({\n value: value\n });\n }\n }, {\n key: \"onMove\",\n value: function onMove(e, position) {\n utils.pauseEvent(e);\n var oldValue = this.state.value;\n var value = this.calcValueByPos(position);\n if (value === oldValue) return;\n this.onChange({\n value: value\n });\n }\n }, {\n key: \"onKeyboard\",\n value: function onKeyboard(e) {\n var _this$props2 = this.props,\n reverse = _this$props2.reverse,\n vertical = _this$props2.vertical;\n var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n\n if (valueMutator) {\n utils.pauseEvent(e);\n var state = this.state;\n var oldValue = state.value;\n var mutatedValue = valueMutator(oldValue, this.props);\n var value = this.trimAlignValue(mutatedValue);\n if (value === oldValue) return;\n this.onChange({\n value: value\n });\n this.props.onAfterChange(value);\n this.onEnd();\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue() {\n return this.state.value;\n }\n }, {\n key: \"getLowerBound\",\n value: function getLowerBound() {\n var minPoint = this.props.startPoint || this.props.min;\n return this.state.value > minPoint ? minPoint : this.state.value;\n }\n }, {\n key: \"getUpperBound\",\n value: function getUpperBound() {\n if (this.state.value < this.props.startPoint) {\n return this.props.startPoint;\n }\n\n return this.state.value;\n }\n }, {\n key: \"trimAlignValue\",\n value: function trimAlignValue(v) {\n var nextProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (v === null) {\n return null;\n }\n\n var mergedProps = _objectSpread(_objectSpread({}, this.props), nextProps);\n\n var val = utils.ensureValueInRange(v, mergedProps);\n return utils.ensureValuePrecision(val, mergedProps);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n prefixCls = _this$props3.prefixCls,\n vertical = _this$props3.vertical,\n included = _this$props3.included,\n disabled = _this$props3.disabled,\n minimumTrackStyle = _this$props3.minimumTrackStyle,\n trackStyle = _this$props3.trackStyle,\n handleStyle = _this$props3.handleStyle,\n tabIndex = _this$props3.tabIndex,\n ariaLabelForHandle = _this$props3.ariaLabelForHandle,\n ariaLabelledByForHandle = _this$props3.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = _this$props3.ariaValueTextFormatterForHandle,\n min = _this$props3.min,\n max = _this$props3.max,\n startPoint = _this$props3.startPoint,\n reverse = _this$props3.reverse,\n handleGenerator = _this$props3.handle;\n var _this$state = this.state,\n value = _this$state.value,\n dragging = _this$state.dragging;\n var offset = this.calcOffset(value);\n var handle = handleGenerator({\n className: \"\".concat(prefixCls, \"-handle\"),\n prefixCls: prefixCls,\n vertical: vertical,\n offset: offset,\n value: value,\n dragging: dragging,\n disabled: disabled,\n min: min,\n max: max,\n reverse: reverse,\n index: 0,\n tabIndex: tabIndex,\n ariaLabel: ariaLabelForHandle,\n ariaLabelledBy: ariaLabelledByForHandle,\n ariaValueTextFormatter: ariaValueTextFormatterForHandle,\n style: handleStyle[0] || handleStyle,\n ref: function ref(h) {\n return _this2.saveHandle(0, h);\n }\n });\n var trackOffset = startPoint !== undefined ? this.calcOffset(startPoint) : 0;\n var mergedTrackStyle = trackStyle[0] || trackStyle;\n var track = /*#__PURE__*/React.createElement(Track, {\n className: \"\".concat(prefixCls, \"-track\"),\n vertical: vertical,\n included: included,\n offset: trackOffset,\n reverse: reverse,\n length: offset - trackOffset,\n style: _objectSpread(_objectSpread({}, minimumTrackStyle), mergedTrackStyle)\n });\n return {\n tracks: track,\n handles: handle\n };\n }\n }]);\n\n return Slider;\n}(React.Component);\n\nexport default createSlider(Slider);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\n\nvar _trimAlignValue = function trimAlignValue(_ref) {\n var value = _ref.value,\n handle = _ref.handle,\n bounds = _ref.bounds,\n props = _ref.props;\n var allowCross = props.allowCross,\n pushable = props.pushable;\n var thershold = Number(pushable);\n var valInRange = utils.ensureValueInRange(value, props);\n var valNotConflict = valInRange;\n\n if (!allowCross && handle != null && bounds !== undefined) {\n if (handle > 0 && valInRange <= bounds[handle - 1] + thershold) {\n valNotConflict = bounds[handle - 1] + thershold;\n }\n\n if (handle < bounds.length - 1 && valInRange >= bounds[handle + 1] - thershold) {\n valNotConflict = bounds[handle + 1] - thershold;\n }\n }\n\n return utils.ensureValuePrecision(valNotConflict, props);\n};\n\nvar Range = /*#__PURE__*/function (_React$Component) {\n _inherits(Range, _React$Component);\n\n var _super = _createSuper(Range);\n\n function Range(props) {\n var _this;\n\n _classCallCheck(this, Range);\n\n _this = _super.call(this, props);\n\n _this.positionGetValue = function (position) {\n var bounds = _this.getValue();\n\n var value = _this.calcValueByPos(position);\n\n var closestBound = _this.getClosestBound(value);\n\n var index = _this.getBoundNeedMoving(value, closestBound);\n\n var prevValue = bounds[index];\n if (value === prevValue) return null;\n\n var nextBounds = _toConsumableArray(bounds);\n\n nextBounds[index] = value;\n return nextBounds;\n };\n\n _this.onEnd = function (force) {\n var handle = _this.state.handle;\n\n _this.removeDocumentEvents();\n\n if (!handle) {\n _this.dragTrack = false;\n }\n\n if (handle !== null || force) {\n _this.props.onAfterChange(_this.getValue());\n }\n\n _this.setState({\n handle: null\n });\n };\n\n var count = props.count,\n min = props.min,\n max = props.max;\n var initialValue = Array.apply(void 0, _toConsumableArray(Array(count + 1))).map(function () {\n return min;\n });\n var defaultValue = 'defaultValue' in props ? props.defaultValue : initialValue;\n var value = props.value !== undefined ? props.value : defaultValue;\n var bounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n props: props\n });\n });\n var recent = bounds[0] === max ? 0 : bounds.length - 1;\n _this.state = {\n handle: null,\n recent: recent,\n bounds: bounds\n };\n return _this;\n }\n /**\n * [Legacy] Used for inherit other component.\n * It's a bad code style which should be refactor.\n */\n\n /* eslint-disable @typescript-eslint/no-unused-vars, class-methods-use-this */\n\n\n _createClass(Range, [{\n key: \"calcValueByPos\",\n value: function calcValueByPos(value) {\n return 0;\n }\n }, {\n key: \"getSliderLength\",\n value: function getSliderLength() {\n return 0;\n }\n }, {\n key: \"calcOffset\",\n value: function calcOffset(value) {\n return 0;\n }\n }, {\n key: \"saveHandle\",\n value: function saveHandle(index, h) {}\n }, {\n key: \"removeDocumentEvents\",\n value: function removeDocumentEvents() {}\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _this$props = this.props,\n onChange = _this$props.onChange,\n value = _this$props.value,\n min = _this$props.min,\n max = _this$props.max;\n\n if (!('min' in this.props || 'max' in this.props)) {\n return;\n }\n\n if (min === prevProps.min && max === prevProps.max) {\n return;\n }\n\n var currentValue = value || prevState.bounds;\n\n if (currentValue.some(function (v) {\n return utils.isValueOutOfRange(v, _this2.props);\n })) {\n var newValues = currentValue.map(function (v) {\n return utils.ensureValueInRange(v, _this2.props);\n });\n onChange(newValues);\n }\n }\n }, {\n key: \"onChange\",\n value: function onChange(state) {\n var props = this.props;\n var isNotControlled = !('value' in props);\n\n if (isNotControlled) {\n this.setState(state);\n } else {\n var controlledState = {};\n ['handle', 'recent'].forEach(function (item) {\n if (state[item] !== undefined) {\n controlledState[item] = state[item];\n }\n });\n\n if (Object.keys(controlledState).length) {\n this.setState(controlledState);\n }\n }\n\n var data = _objectSpread(_objectSpread({}, this.state), state);\n\n var changedValue = data.bounds;\n props.onChange(changedValue);\n }\n }, {\n key: \"onStart\",\n value: function onStart(position) {\n var props = this.props,\n state = this.state;\n var bounds = this.getValue();\n props.onBeforeChange(bounds);\n var value = this.calcValueByPos(position);\n this.startValue = value;\n this.startPosition = position;\n var closestBound = this.getClosestBound(value);\n this.prevMovedHandleIndex = this.getBoundNeedMoving(value, closestBound);\n this.setState({\n handle: this.prevMovedHandleIndex,\n recent: this.prevMovedHandleIndex\n });\n var prevValue = bounds[this.prevMovedHandleIndex];\n if (value === prevValue) return;\n\n var nextBounds = _toConsumableArray(state.bounds);\n\n nextBounds[this.prevMovedHandleIndex] = value;\n this.onChange({\n bounds: nextBounds\n });\n }\n }, {\n key: \"onMove\",\n value: function onMove(e, position, dragTrack, startBounds) {\n utils.pauseEvent(e);\n var state = this.state,\n props = this.props;\n var maxValue = props.max || 100;\n var minValue = props.min || 0;\n\n if (dragTrack) {\n var pos = props.vertical ? -position : position;\n pos = props.reverse ? -pos : pos;\n var max = maxValue - Math.max.apply(Math, _toConsumableArray(startBounds));\n var min = minValue - Math.min.apply(Math, _toConsumableArray(startBounds));\n var ratio = Math.min(Math.max(pos / (this.getSliderLength() / (maxValue - minValue)), min), max);\n var nextBounds = startBounds.map(function (v) {\n return Math.floor(Math.max(Math.min(v + ratio, maxValue), minValue));\n });\n\n if (state.bounds.map(function (c, i) {\n return c === nextBounds[i];\n }).some(function (c) {\n return !c;\n })) {\n this.onChange({\n bounds: nextBounds\n });\n }\n\n return;\n }\n\n var value = this.calcValueByPos(position);\n var oldValue = state.bounds[state.handle];\n if (value === oldValue) return;\n this.moveTo(value);\n }\n }, {\n key: \"onKeyboard\",\n value: function onKeyboard(e) {\n var _this$props2 = this.props,\n reverse = _this$props2.reverse,\n vertical = _this$props2.vertical;\n var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n\n if (valueMutator) {\n utils.pauseEvent(e);\n var state = this.state,\n props = this.props;\n var bounds = state.bounds,\n handle = state.handle;\n var oldValue = bounds[handle === null ? state.recent : handle];\n var mutatedValue = valueMutator(oldValue, props);\n\n var value = _trimAlignValue({\n value: mutatedValue,\n handle: handle,\n bounds: state.bounds,\n props: props\n });\n\n if (value === oldValue) return;\n var isFromKeyboardEvent = true;\n this.moveTo(value, isFromKeyboardEvent);\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue() {\n return this.state.bounds;\n }\n }, {\n key: \"getClosestBound\",\n value: function getClosestBound(value) {\n var bounds = this.state.bounds;\n var closestBound = 0;\n\n for (var i = 1; i < bounds.length - 1; i += 1) {\n if (value >= bounds[i]) {\n closestBound = i;\n }\n }\n\n if (Math.abs(bounds[closestBound + 1] - value) < Math.abs(bounds[closestBound] - value)) {\n closestBound += 1;\n }\n\n return closestBound;\n }\n }, {\n key: \"getBoundNeedMoving\",\n value: function getBoundNeedMoving(value, closestBound) {\n var _this$state = this.state,\n bounds = _this$state.bounds,\n recent = _this$state.recent;\n var boundNeedMoving = closestBound;\n var isAtTheSamePoint = bounds[closestBound + 1] === bounds[closestBound];\n\n if (isAtTheSamePoint && bounds[recent] === bounds[closestBound]) {\n boundNeedMoving = recent;\n }\n\n if (isAtTheSamePoint && value !== bounds[closestBound + 1]) {\n boundNeedMoving = value < bounds[closestBound + 1] ? closestBound : closestBound + 1;\n }\n\n return boundNeedMoving;\n }\n }, {\n key: \"getLowerBound\",\n value: function getLowerBound() {\n return this.state.bounds[0];\n }\n }, {\n key: \"getUpperBound\",\n value: function getUpperBound() {\n var bounds = this.state.bounds;\n return bounds[bounds.length - 1];\n }\n /**\n * Returns an array of possible slider points, taking into account both\n * `marks` and `step`. The result is cached.\n */\n\n }, {\n key: \"getPoints\",\n value: function getPoints() {\n var _this$props3 = this.props,\n marks = _this$props3.marks,\n step = _this$props3.step,\n min = _this$props3.min,\n max = _this$props3.max;\n var cache = this.internalPointsCache;\n\n if (!cache || cache.marks !== marks || cache.step !== step) {\n var pointsObject = _objectSpread({}, marks);\n\n if (step !== null) {\n for (var point = min; point <= max; point += step) {\n pointsObject[point] = point;\n }\n }\n\n var points = Object.keys(pointsObject).map(parseFloat);\n points.sort(function (a, b) {\n return a - b;\n });\n this.internalPointsCache = {\n marks: marks,\n step: step,\n points: points\n };\n }\n\n return this.internalPointsCache.points;\n }\n }, {\n key: \"moveTo\",\n value: function moveTo(value, isFromKeyboardEvent) {\n var _this3 = this;\n\n var state = this.state,\n props = this.props;\n\n var nextBounds = _toConsumableArray(state.bounds);\n\n var handle = state.handle === null ? state.recent : state.handle;\n nextBounds[handle] = value;\n var nextHandle = handle;\n\n if (props.pushable !== false) {\n this.pushSurroundingHandles(nextBounds, nextHandle);\n } else if (props.allowCross) {\n nextBounds.sort(function (a, b) {\n return a - b;\n });\n nextHandle = nextBounds.indexOf(value);\n }\n\n this.onChange({\n recent: nextHandle,\n handle: nextHandle,\n bounds: nextBounds\n });\n\n if (isFromKeyboardEvent) {\n // known problem: because setState is async,\n // so trigger focus will invoke handler's onEnd and another handler's onStart too early,\n // cause onBeforeChange and onAfterChange receive wrong value.\n // here use setState callback to hack,but not elegant\n this.props.onAfterChange(nextBounds);\n this.setState({}, function () {\n _this3.handlesRefs[nextHandle].focus();\n });\n this.onEnd();\n }\n }\n }, {\n key: \"pushSurroundingHandles\",\n value: function pushSurroundingHandles(bounds, handle) {\n var value = bounds[handle];\n var pushable = this.props.pushable;\n var threshold = Number(pushable);\n var direction = 0;\n\n if (bounds[handle + 1] - value < threshold) {\n direction = +1; // push to right\n }\n\n if (value - bounds[handle - 1] < threshold) {\n direction = -1; // push to left\n }\n\n if (direction === 0) {\n return;\n }\n\n var nextHandle = handle + direction;\n var diffToNext = direction * (bounds[nextHandle] - value);\n\n if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n // revert to original value if pushing is impossible\n // eslint-disable-next-line no-param-reassign\n bounds[handle] = bounds[nextHandle] - direction * threshold;\n }\n }\n }, {\n key: \"pushHandle\",\n value: function pushHandle(bounds, handle, direction, amount) {\n var originalValue = bounds[handle];\n var currentValue = bounds[handle];\n\n while (direction * (currentValue - originalValue) < amount) {\n if (!this.pushHandleOnePoint(bounds, handle, direction)) {\n // can't push handle enough to create the needed `amount` gap, so we\n // revert its position to the original value\n // eslint-disable-next-line no-param-reassign\n bounds[handle] = originalValue;\n return false;\n }\n\n currentValue = bounds[handle];\n } // the handle was pushed enough to create the needed `amount` gap\n\n\n return true;\n }\n }, {\n key: \"pushHandleOnePoint\",\n value: function pushHandleOnePoint(bounds, handle, direction) {\n var points = this.getPoints();\n var pointIndex = points.indexOf(bounds[handle]);\n var nextPointIndex = pointIndex + direction;\n\n if (nextPointIndex >= points.length || nextPointIndex < 0) {\n // reached the minimum or maximum available point, can't push anymore\n return false;\n }\n\n var nextHandle = handle + direction;\n var nextValue = points[nextPointIndex];\n var pushable = this.props.pushable;\n var threshold = Number(pushable);\n var diffToNext = direction * (bounds[nextHandle] - nextValue);\n\n if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n // couldn't push next handle, so we won't push this one either\n return false;\n } // push the handle\n // eslint-disable-next-line no-param-reassign\n\n\n bounds[handle] = nextValue;\n return true;\n }\n }, {\n key: \"trimAlignValue\",\n value: function trimAlignValue(value) {\n var _this$state2 = this.state,\n handle = _this$state2.handle,\n bounds = _this$state2.bounds;\n return _trimAlignValue({\n value: value,\n handle: handle,\n bounds: bounds,\n props: this.props\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$state3 = this.state,\n handle = _this$state3.handle,\n bounds = _this$state3.bounds;\n var _this$props4 = this.props,\n prefixCls = _this$props4.prefixCls,\n vertical = _this$props4.vertical,\n included = _this$props4.included,\n disabled = _this$props4.disabled,\n min = _this$props4.min,\n max = _this$props4.max,\n reverse = _this$props4.reverse,\n handleGenerator = _this$props4.handle,\n trackStyle = _this$props4.trackStyle,\n handleStyle = _this$props4.handleStyle,\n tabIndex = _this$props4.tabIndex,\n ariaLabelGroupForHandles = _this$props4.ariaLabelGroupForHandles,\n ariaLabelledByGroupForHandles = _this$props4.ariaLabelledByGroupForHandles,\n ariaValueTextFormatterGroupForHandles = _this$props4.ariaValueTextFormatterGroupForHandles;\n var offsets = bounds.map(function (v) {\n return _this4.calcOffset(v);\n });\n var handleClassName = \"\".concat(prefixCls, \"-handle\");\n var handles = bounds.map(function (v, i) {\n var _classNames;\n\n var mergedTabIndex = tabIndex[i] || 0;\n\n if (disabled || tabIndex[i] === null) {\n mergedTabIndex = null;\n }\n\n var dragging = handle === i;\n return handleGenerator({\n className: classNames((_classNames = {}, _defineProperty(_classNames, handleClassName, true), _defineProperty(_classNames, \"\".concat(handleClassName, \"-\").concat(i + 1), true), _defineProperty(_classNames, \"\".concat(handleClassName, \"-dragging\"), dragging), _classNames)),\n prefixCls: prefixCls,\n vertical: vertical,\n dragging: dragging,\n offset: offsets[i],\n value: v,\n index: i,\n tabIndex: mergedTabIndex,\n min: min,\n max: max,\n reverse: reverse,\n disabled: disabled,\n style: handleStyle[i],\n ref: function ref(h) {\n return _this4.saveHandle(i, h);\n },\n ariaLabel: ariaLabelGroupForHandles[i],\n ariaLabelledBy: ariaLabelledByGroupForHandles[i],\n ariaValueTextFormatter: ariaValueTextFormatterGroupForHandles[i]\n });\n });\n var tracks = bounds.slice(0, -1).map(function (_, index) {\n var _classNames2;\n\n var i = index + 1;\n var trackClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-track\"), true), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-track-\").concat(i), true), _classNames2));\n return /*#__PURE__*/React.createElement(Track, {\n className: trackClassName,\n vertical: vertical,\n reverse: reverse,\n included: included,\n offset: offsets[i - 1],\n length: offsets[i] - offsets[i - 1],\n style: trackStyle[index],\n key: i\n });\n });\n return {\n tracks: tracks,\n handles: handles\n };\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n if (!('value' in props || 'min' in props || 'max' in props)) {\n return null;\n }\n\n var value = props.value || state.bounds;\n var nextBounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n bounds: state.bounds,\n props: props\n });\n });\n\n if (state.bounds.length === nextBounds.length) {\n if (nextBounds.every(function (v, i) {\n return v === state.bounds[i];\n })) {\n return null;\n }\n } else {\n nextBounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n props: props\n });\n });\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n bounds: nextBounds\n });\n }\n }]);\n\n return Range;\n}(React.Component);\n/* eslint-enable */\n\n\nRange.displayName = 'Range';\nRange.defaultProps = {\n count: 1,\n allowCross: true,\n pushable: false,\n draggableTrack: false,\n tabIndex: [],\n ariaLabelGroupForHandles: [],\n ariaLabelledByGroupForHandles: [],\n ariaValueTextFormatterGroupForHandles: []\n};\nexport default createSlider(Range);","var raf = function raf(callback) {\n return +setTimeout(callback, 16);\n};\n\nvar caf = function caf(num) {\n return clearTimeout(num);\n};\n\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n raf = function raf(callback) {\n return window.requestAnimationFrame(callback);\n };\n\n caf = function caf(handle) {\n return window.cancelAnimationFrame(handle);\n };\n}\n\nvar rafUUID = 0;\nvar rafIds = new Map();\n\nfunction cleanup(id) {\n rafIds.delete(id);\n}\n\nexport default function wrapperRaf(callback) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n rafUUID += 1;\n var id = rafUUID;\n\n function callRef(leftTimes) {\n if (leftTimes === 0) {\n // Clean up\n cleanup(id); // Trigger\n\n callback();\n } else {\n // Next raf\n var realId = raf(function () {\n callRef(leftTimes - 1);\n }); // Bind real raf id\n\n rafIds.set(id, realId);\n }\n }\n\n callRef(times);\n return id;\n}\n\nwrapperRaf.cancel = function (id) {\n var realId = rafIds.get(id);\n cleanup(realId);\n return caf(realId);\n};","export default function contains(root, n) {\n if (!root) {\n return false;\n }\n\n return root.contains(n);\n}","import ReactDOM from 'react-dom';\n/**\n * Return if a node is a DOM node. Else will return by `findDOMNode`\n */\n\nexport default function findDOMNode(node) {\n if (node instanceof HTMLElement) {\n return node;\n }\n\n return ReactDOM.findDOMNode(node);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { isMemo } from 'react-is';\nimport useMemo from './hooks/useMemo';\nexport function fillRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (_typeof(ref) === 'object' && ref && 'current' in ref) {\n ref.current = node;\n }\n}\n/**\n * Merge refs into one ref function to support ref passing.\n */\n\nexport function composeRef() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n var refList = refs.filter(function (ref) {\n return ref;\n });\n\n if (refList.length <= 1) {\n return refList[0];\n }\n\n return function (node) {\n refs.forEach(function (ref) {\n fillRef(ref, node);\n });\n };\n}\nexport function useComposeRef() {\n for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n refs[_key2] = arguments[_key2];\n }\n\n return useMemo(function () {\n return composeRef.apply(void 0, refs);\n }, refs, function (prev, next) {\n return prev.length === next.length && prev.every(function (ref, i) {\n return ref === next[i];\n });\n });\n}\nexport function supportRef(nodeOrComponent) {\n var _type$prototype, _nodeOrComponent$prot;\n\n var type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type; // Function component node\n\n if (typeof type === 'function' && !((_type$prototype = type.prototype) === null || _type$prototype === void 0 ? void 0 : _type$prototype.render)) {\n return false;\n } // Class component\n\n\n if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) === null || _nodeOrComponent$prot === void 0 ? void 0 : _nodeOrComponent$prot.render)) {\n return false;\n }\n\n return true;\n}\n/* eslint-enable */","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","import { useRef, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\nimport canUseDom from './Dom/canUseDom';\nvar Portal = /*#__PURE__*/forwardRef(function (props, ref) {\n var didUpdate = props.didUpdate,\n getContainer = props.getContainer,\n children = props.children;\n var containerRef = useRef(); // Ref return nothing, only for wrapper check exist\n\n useImperativeHandle(ref, function () {\n return {};\n }); // Create container in client side with sync to avoid useEffect not get ref\n\n var initRef = useRef(false);\n\n if (!initRef.current && canUseDom()) {\n containerRef.current = getContainer();\n initRef.current = true;\n } // [Legacy] Used by `rc-trigger`\n\n\n useEffect(function () {\n didUpdate === null || didUpdate === void 0 ? void 0 : didUpdate(props);\n });\n useEffect(function () {\n return function () {\n var _containerRef$current, _containerRef$current2;\n\n // [Legacy] This should not be handle by Portal but parent PortalWrapper instead.\n // Since some component use `Portal` directly, we have to keep the logic here.\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : (_containerRef$current2 = _containerRef$current.parentNode) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.removeChild(containerRef.current);\n };\n }, []);\n return containerRef.current ? /*#__PURE__*/ReactDOM.createPortal(children, containerRef.current) : null;\n});\nexport default Portal;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n\nfunction isPointsEq(a1, a2, isAlignPoint) {\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n var baseAlign = builtinPlacements[placementStr] || {};\n return _objectSpread(_objectSpread({}, baseAlign), align);\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n var placements = Object.keys(builtinPlacements);\n\n for (var i = 0; i < placements.length; i += 1) {\n var placement = placements[i];\n\n if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n }\n }\n\n return '';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport canUseDOM from \"rc-util/es/Dom/canUseDom\"; // ================= Transition =================\n// Event wrapper. Copy from react source code\n\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\".concat(styleProp)] = \"webkit\".concat(eventName);\n prefixes[\"Moz\".concat(styleProp)] = \"moz\".concat(eventName);\n prefixes[\"ms\".concat(styleProp)] = \"MS\".concat(eventName);\n prefixes[\"O\".concat(styleProp)] = \"o\".concat(eventName.toLowerCase());\n return prefixes;\n}\n\nexport function getVendorPrefixes(domSupport, win) {\n var prefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n };\n\n if (domSupport) {\n if (!('AnimationEvent' in win)) {\n delete prefixes.animationend.animation;\n }\n\n if (!('TransitionEvent' in win)) {\n delete prefixes.transitionend.transition;\n }\n }\n\n return prefixes;\n}\nvar vendorPrefixes = getVendorPrefixes(canUseDOM(), typeof window !== 'undefined' ? window : {});\nvar style = {};\n\nif (canUseDOM()) {\n var _document$createEleme = document.createElement('div');\n\n style = _document$createEleme.style;\n}\n\nvar prefixedEventNames = {};\nexport function getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n if (prefixMap) {\n var stylePropList = Object.keys(prefixMap);\n var len = stylePropList.length;\n\n for (var i = 0; i < len; i += 1) {\n var styleProp = stylePropList[i];\n\n if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {\n prefixedEventNames[eventName] = prefixMap[styleProp];\n return prefixedEventNames[eventName];\n }\n }\n }\n\n return '';\n}\nvar internalAnimationEndName = getVendorPrefixedEventName('animationend');\nvar internalTransitionEndName = getVendorPrefixedEventName('transitionend');\nexport var supportTransition = !!(internalAnimationEndName && internalTransitionEndName);\nexport var animationEndName = internalAnimationEndName || 'animationend';\nexport var transitionEndName = internalTransitionEndName || 'transitionend';\nexport function getTransitionName(transitionName, transitionType) {\n if (!transitionName) return null;\n\n if (_typeof(transitionName) === 'object') {\n var type = transitionType.replace(/-\\w/g, function (match) {\n return match[1].toUpperCase();\n });\n return transitionName[type];\n }\n\n return \"\".concat(transitionName, \"-\").concat(transitionType);\n}","export var STATUS_NONE = 'none';\nexport var STATUS_APPEAR = 'appear';\nexport var STATUS_ENTER = 'enter';\nexport var STATUS_LEAVE = 'leave';\nexport var STEP_NONE = 'none';\nexport var STEP_PREPARE = 'prepare';\nexport var STEP_START = 'start';\nexport var STEP_ACTIVE = 'active';\nexport var STEP_ACTIVATED = 'end';","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useState, useRef } from 'react';\nexport default function useMountStatus(defaultValue) {\n var destroyRef = useRef(false);\n\n var _useState = useState(defaultValue),\n _useState2 = _slicedToArray(_useState, 2),\n val = _useState2[0],\n setVal = _useState2[1];\n\n function setValue(next) {\n if (!destroyRef.current) {\n setVal(next);\n }\n }\n\n useEffect(function () {\n return function () {\n destroyRef.current = true;\n };\n }, []);\n return [val, setValue];\n}","import { useEffect, useLayoutEffect } from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\"; // It's safe to use `useLayoutEffect` but the warning is annoying\n\nvar useIsomorphicLayoutEffect = canUseDom() ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { STEP_PREPARE, STEP_ACTIVE, STEP_START, STEP_ACTIVATED, STEP_NONE } from '../interface';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nimport useNextFrame from './useNextFrame';\nimport useState from './useState';\nvar STEP_QUEUE = [STEP_PREPARE, STEP_START, STEP_ACTIVE, STEP_ACTIVATED];\n/** Skip current step */\n\nexport var SkipStep = false;\n/** Current step should be update in */\n\nexport var DoStep = true;\nexport function isActive(step) {\n return step === STEP_ACTIVE || step === STEP_ACTIVATED;\n}\nexport default (function (status, callback) {\n var _useState = useState(STEP_NONE),\n _useState2 = _slicedToArray(_useState, 2),\n step = _useState2[0],\n setStep = _useState2[1];\n\n var _useNextFrame = useNextFrame(),\n _useNextFrame2 = _slicedToArray(_useNextFrame, 2),\n nextFrame = _useNextFrame2[0],\n cancelNextFrame = _useNextFrame2[1];\n\n function startQueue() {\n setStep(STEP_PREPARE);\n }\n\n useIsomorphicLayoutEffect(function () {\n if (step !== STEP_NONE && step !== STEP_ACTIVATED) {\n var index = STEP_QUEUE.indexOf(step);\n var nextStep = STEP_QUEUE[index + 1];\n var result = callback(step);\n\n if (result === SkipStep) {\n // Skip when no needed\n setStep(nextStep);\n } else {\n // Do as frame for step update\n nextFrame(function (info) {\n function doNext() {\n // Skip since current queue is ood\n if (info.isCanceled()) return;\n setStep(nextStep);\n }\n\n if (result === true) {\n doNext();\n } else {\n // Only promise should be async\n Promise.resolve(result).then(doNext);\n }\n });\n }\n }\n }, [status, step]);\n React.useEffect(function () {\n return function () {\n cancelNextFrame();\n };\n }, []);\n return [startQueue, step];\n});","import * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default (function () {\n var nextFrameRef = React.useRef(null);\n\n function cancelNextFrame() {\n raf.cancel(nextFrameRef.current);\n }\n\n function nextFrame(callback) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n cancelNextFrame();\n var nextFrameId = raf(function () {\n if (delay <= 1) {\n callback({\n isCanceled: function isCanceled() {\n return nextFrameId !== nextFrameRef.current;\n }\n });\n } else {\n nextFrame(callback, delay - 1);\n }\n });\n nextFrameRef.current = nextFrameId;\n }\n\n React.useEffect(function () {\n return function () {\n cancelNextFrame();\n };\n }, []);\n return [nextFrame, cancelNextFrame];\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport { STATUS_APPEAR, STATUS_NONE, STATUS_LEAVE, STATUS_ENTER, STEP_PREPARE, STEP_START, STEP_ACTIVE } from '../interface';\nimport useState from './useState';\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\nimport useStepQueue, { DoStep, SkipStep, isActive } from './useStepQueue';\nimport useDomMotionEvents from './useDomMotionEvents';\nexport default function useStatus(supportMotion, visible, getElement, _ref) {\n var _ref$motionEnter = _ref.motionEnter,\n motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter,\n _ref$motionAppear = _ref.motionAppear,\n motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear,\n _ref$motionLeave = _ref.motionLeave,\n motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave,\n motionDeadline = _ref.motionDeadline,\n motionLeaveImmediately = _ref.motionLeaveImmediately,\n onAppearPrepare = _ref.onAppearPrepare,\n onEnterPrepare = _ref.onEnterPrepare,\n onLeavePrepare = _ref.onLeavePrepare,\n onAppearStart = _ref.onAppearStart,\n onEnterStart = _ref.onEnterStart,\n onLeaveStart = _ref.onLeaveStart,\n onAppearActive = _ref.onAppearActive,\n onEnterActive = _ref.onEnterActive,\n onLeaveActive = _ref.onLeaveActive,\n onAppearEnd = _ref.onAppearEnd,\n onEnterEnd = _ref.onEnterEnd,\n onLeaveEnd = _ref.onLeaveEnd,\n onVisibleChanged = _ref.onVisibleChanged;\n\n // Used for outer render usage to avoid `visible: false & status: none` to render nothing\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n asyncVisible = _useState2[0],\n setAsyncVisible = _useState2[1];\n\n var _useState3 = useState(STATUS_NONE),\n _useState4 = _slicedToArray(_useState3, 2),\n status = _useState4[0],\n setStatus = _useState4[1];\n\n var _useState5 = useState(null),\n _useState6 = _slicedToArray(_useState5, 2),\n style = _useState6[0],\n setStyle = _useState6[1];\n\n var mountedRef = useRef(false);\n var deadlineRef = useRef(null);\n var destroyedRef = useRef(false); // =========================== Dom Node ===========================\n\n var cacheElementRef = useRef(null);\n\n function getDomElement() {\n var element = getElement();\n return element || cacheElementRef.current;\n } // ========================== Motion End ==========================\n\n\n var activeRef = useRef(false);\n\n function onInternalMotionEnd(event) {\n var element = getDomElement();\n\n if (event && !event.deadline && event.target !== element) {\n // event exists\n // not initiated by deadline\n // transitionEnd not fired by inner elements\n return;\n }\n\n var canEnd;\n\n if (status === STATUS_APPEAR && activeRef.current) {\n canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event);\n } else if (status === STATUS_ENTER && activeRef.current) {\n canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event);\n } else if (status === STATUS_LEAVE && activeRef.current) {\n canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event);\n } // Only update status when `canEnd` and not destroyed\n\n\n if (canEnd !== false && !destroyedRef.current) {\n setStatus(STATUS_NONE);\n setStyle(null);\n }\n }\n\n var _useDomMotionEvents = useDomMotionEvents(onInternalMotionEnd),\n _useDomMotionEvents2 = _slicedToArray(_useDomMotionEvents, 1),\n patchMotionEvents = _useDomMotionEvents2[0]; // ============================= Step =============================\n\n\n var eventHandlers = React.useMemo(function () {\n var _ref2, _ref3, _ref4;\n\n switch (status) {\n case STATUS_APPEAR:\n return _ref2 = {}, _defineProperty(_ref2, STEP_PREPARE, onAppearPrepare), _defineProperty(_ref2, STEP_START, onAppearStart), _defineProperty(_ref2, STEP_ACTIVE, onAppearActive), _ref2;\n\n case STATUS_ENTER:\n return _ref3 = {}, _defineProperty(_ref3, STEP_PREPARE, onEnterPrepare), _defineProperty(_ref3, STEP_START, onEnterStart), _defineProperty(_ref3, STEP_ACTIVE, onEnterActive), _ref3;\n\n case STATUS_LEAVE:\n return _ref4 = {}, _defineProperty(_ref4, STEP_PREPARE, onLeavePrepare), _defineProperty(_ref4, STEP_START, onLeaveStart), _defineProperty(_ref4, STEP_ACTIVE, onLeaveActive), _ref4;\n\n default:\n return {};\n }\n }, [status]);\n\n var _useStepQueue = useStepQueue(status, function (newStep) {\n // Only prepare step can be skip\n if (newStep === STEP_PREPARE) {\n var onPrepare = eventHandlers[STEP_PREPARE];\n\n if (!onPrepare) {\n return SkipStep;\n }\n\n return onPrepare(getDomElement());\n } // Rest step is sync update\n\n\n // Rest step is sync update\n if (step in eventHandlers) {\n var _eventHandlers$step;\n\n setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null);\n }\n\n if (step === STEP_ACTIVE) {\n // Patch events when motion needed\n patchMotionEvents(getDomElement());\n\n if (motionDeadline > 0) {\n clearTimeout(deadlineRef.current);\n deadlineRef.current = setTimeout(function () {\n onInternalMotionEnd({\n deadline: true\n });\n }, motionDeadline);\n }\n }\n\n return DoStep;\n }),\n _useStepQueue2 = _slicedToArray(_useStepQueue, 2),\n startStep = _useStepQueue2[0],\n step = _useStepQueue2[1];\n\n var active = isActive(step);\n activeRef.current = active; // ============================ Status ============================\n // Update with new status\n\n useIsomorphicLayoutEffect(function () {\n setAsyncVisible(visible);\n var isMounted = mountedRef.current;\n mountedRef.current = true;\n\n if (!supportMotion) {\n return;\n }\n\n var nextStatus; // Appear\n\n if (!isMounted && visible && motionAppear) {\n nextStatus = STATUS_APPEAR;\n } // Enter\n\n\n if (isMounted && visible && motionEnter) {\n nextStatus = STATUS_ENTER;\n } // Leave\n\n\n if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) {\n nextStatus = STATUS_LEAVE;\n } // Update to next status\n\n\n if (nextStatus) {\n setStatus(nextStatus);\n startStep();\n }\n }, [visible]); // ============================ Effect ============================\n // Reset when motion changed\n\n useEffect(function () {\n if ( // Cancel appear\n status === STATUS_APPEAR && !motionAppear || // Cancel enter\n status === STATUS_ENTER && !motionEnter || // Cancel leave\n status === STATUS_LEAVE && !motionLeave) {\n setStatus(STATUS_NONE);\n }\n }, [motionAppear, motionEnter, motionLeave]);\n useEffect(function () {\n return function () {\n clearTimeout(deadlineRef.current);\n destroyedRef.current = true;\n };\n }, []); // Trigger `onVisibleChanged`\n\n useEffect(function () {\n if (asyncVisible !== undefined && status === STATUS_NONE) {\n onVisibleChanged === null || onVisibleChanged === void 0 ? void 0 : onVisibleChanged(asyncVisible);\n }\n }, [asyncVisible, status]); // ============================ Styles ============================\n\n var mergedStyle = style;\n\n if (eventHandlers[STEP_PREPARE] && step === STEP_START) {\n mergedStyle = _objectSpread({\n transition: 'none'\n }, mergedStyle);\n }\n\n return [status, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible];\n}","import * as React from 'react';\nimport { useRef } from 'react';\nimport { animationEndName, transitionEndName } from '../util/motion';\nexport default (function (callback) {\n var cacheElementRef = useRef(); // Cache callback\n\n var callbackRef = useRef(callback);\n callbackRef.current = callback; // Internal motion event handler\n\n var onInternalMotionEnd = React.useCallback(function (event) {\n callbackRef.current(event);\n }, []); // Remove events\n\n function removeMotionEvents(element) {\n if (element) {\n element.removeEventListener(transitionEndName, onInternalMotionEnd);\n element.removeEventListener(animationEndName, onInternalMotionEnd);\n }\n } // Patch events\n\n\n function patchMotionEvents(element) {\n if (cacheElementRef.current && cacheElementRef.current !== element) {\n removeMotionEvents(cacheElementRef.current);\n }\n\n if (element && element !== cacheElementRef.current) {\n element.addEventListener(transitionEndName, onInternalMotionEnd);\n element.addEventListener(animationEndName, onInternalMotionEnd); // Save as cache in case dom removed trigger by `motionDeadline`\n\n cacheElementRef.current = element;\n }\n } // Clean up when removed\n\n\n React.useEffect(function () {\n return function () {\n removeMotionEvents(cacheElementRef.current);\n };\n }, []);\n return [patchMotionEvents, removeMotionEvents];\n});","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n\n var _super = _createSuper(DomWrapper);\n\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return DomWrapper;\n}(React.Component);\n\nexport default DomWrapper;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/* eslint-disable react/default-props-match-prop-types, react/no-multi-comp, react/prop-types */\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { fillRef } from \"rc-util/es/ref\";\nimport classNames from 'classnames';\nimport { getTransitionName, supportTransition } from './util/motion';\nimport { STATUS_NONE, STEP_PREPARE, STEP_START } from './interface';\nimport useStatus from './hooks/useStatus';\nimport DomWrapper from './DomWrapper';\nimport { isActive } from './hooks/useStepQueue';\n/**\n * `transitionSupport` is used for none transition test case.\n * Default we use browser transition event support check.\n */\n\nexport function genCSSMotion(config) {\n var transitionSupport = config;\n\n if (_typeof(config) === 'object') {\n transitionSupport = config.transitionSupport;\n }\n\n function isSupportTransition(props) {\n return !!(props.motionName && transitionSupport);\n }\n\n var CSSMotion = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$visible = props.visible,\n visible = _props$visible === void 0 ? true : _props$visible,\n _props$removeOnLeave = props.removeOnLeave,\n removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave,\n forceRender = props.forceRender,\n children = props.children,\n motionName = props.motionName,\n leavedClassName = props.leavedClassName,\n eventProps = props.eventProps;\n var supportMotion = isSupportTransition(props); // Ref to the react node, it may be a HTMLElement\n\n var nodeRef = useRef(); // Ref to the dom wrapper in case ref can not pass to HTMLElement\n\n var wrapperNodeRef = useRef();\n\n function getDomElement() {\n try {\n // Here we're avoiding call for findDOMNode since it's deprecated\n // in strict mode. We're calling it only when node ref is not\n // an instance of DOM HTMLElement. Otherwise use\n // findDOMNode as a final resort\n return nodeRef.current instanceof HTMLElement ? nodeRef.current : findDOMNode(wrapperNodeRef.current);\n } catch (e) {\n // Only happen when `motionDeadline` trigger but element removed.\n return null;\n }\n }\n\n var _useStatus = useStatus(supportMotion, visible, getDomElement, props),\n _useStatus2 = _slicedToArray(_useStatus, 4),\n status = _useStatus2[0],\n statusStep = _useStatus2[1],\n statusStyle = _useStatus2[2],\n mergedVisible = _useStatus2[3]; // Record whether content has rendered\n // Will return null for un-rendered even when `removeOnLeave={false}`\n\n\n var renderedRef = React.useRef(mergedVisible);\n\n if (mergedVisible) {\n renderedRef.current = true;\n } // ====================== Refs ======================\n\n\n var setNodeRef = React.useCallback(function (node) {\n nodeRef.current = node;\n fillRef(ref, node);\n }, []); // ===================== Render =====================\n\n var motionChildren;\n\n var mergedProps = _objectSpread(_objectSpread({}, eventProps), {}, {\n visible: visible\n });\n\n if (!children) {\n // No children\n motionChildren = null;\n } else if (status === STATUS_NONE || !isSupportTransition(props)) {\n // Stable children\n if (mergedVisible) {\n motionChildren = children(_objectSpread({}, mergedProps), setNodeRef);\n } else if (!removeOnLeave && renderedRef.current) {\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n className: leavedClassName\n }), setNodeRef);\n } else if (forceRender) {\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n style: {\n display: 'none'\n }\n }), setNodeRef);\n } else {\n motionChildren = null;\n }\n } else {\n var _classNames;\n\n // In motion\n var statusSuffix;\n\n if (statusStep === STEP_PREPARE) {\n statusSuffix = 'prepare';\n } else if (isActive(statusStep)) {\n statusSuffix = 'active';\n } else if (statusStep === STEP_START) {\n statusSuffix = 'start';\n }\n\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n className: classNames(getTransitionName(motionName, status), (_classNames = {}, _defineProperty(_classNames, getTransitionName(motionName, \"\".concat(status, \"-\").concat(statusSuffix)), statusSuffix), _defineProperty(_classNames, motionName, typeof motionName === 'string'), _classNames)),\n style: statusStyle\n }), setNodeRef);\n }\n\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperNodeRef\n }, motionChildren);\n });\n CSSMotion.displayName = 'CSSMotion';\n return CSSMotion;\n}\nexport default genCSSMotion(supportTransition);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport var STATUS_ADD = 'add';\nexport var STATUS_KEEP = 'keep';\nexport var STATUS_REMOVE = 'remove';\nexport var STATUS_REMOVED = 'removed';\nexport function wrapKeyToObject(key) {\n var keyObj;\n\n if (key && _typeof(key) === 'object' && 'key' in key) {\n keyObj = key;\n } else {\n keyObj = {\n key: key\n };\n }\n\n return _objectSpread(_objectSpread({}, keyObj), {}, {\n key: String(keyObj.key)\n });\n}\nexport function parseKeys() {\n var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return keys.map(wrapKeyToObject);\n}\nexport function diffKeys() {\n var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var currentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var list = [];\n var currentIndex = 0;\n var currentLen = currentKeys.length;\n var prevKeyObjects = parseKeys(prevKeys);\n var currentKeyObjects = parseKeys(currentKeys); // Check prev keys to insert or keep\n\n prevKeyObjects.forEach(function (keyObj) {\n var hit = false;\n\n for (var i = currentIndex; i < currentLen; i += 1) {\n var currentKeyObj = currentKeyObjects[i];\n\n if (currentKeyObj.key === keyObj.key) {\n // New added keys should add before current key\n if (currentIndex < i) {\n list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function (obj) {\n return _objectSpread(_objectSpread({}, obj), {}, {\n status: STATUS_ADD\n });\n }));\n currentIndex = i;\n }\n\n list.push(_objectSpread(_objectSpread({}, currentKeyObj), {}, {\n status: STATUS_KEEP\n }));\n currentIndex += 1;\n hit = true;\n break;\n }\n } // If not hit, it means key is removed\n\n\n if (!hit) {\n list.push(_objectSpread(_objectSpread({}, keyObj), {}, {\n status: STATUS_REMOVE\n }));\n }\n }); // Add rest to the list\n\n if (currentIndex < currentLen) {\n list = list.concat(currentKeyObjects.slice(currentIndex).map(function (obj) {\n return _objectSpread(_objectSpread({}, obj), {}, {\n status: STATUS_ADD\n });\n }));\n }\n /**\n * Merge same key when it remove and add again:\n * [1 - add, 2 - keep, 1 - remove] -> [1 - keep, 2 - keep]\n */\n\n\n var keys = {};\n list.forEach(function (_ref) {\n var key = _ref.key;\n keys[key] = (keys[key] || 0) + 1;\n });\n var duplicatedKeys = Object.keys(keys).filter(function (key) {\n return keys[key] > 1;\n });\n duplicatedKeys.forEach(function (matchKey) {\n // Remove `STATUS_REMOVE` node.\n list = list.filter(function (_ref2) {\n var key = _ref2.key,\n status = _ref2.status;\n return key !== matchKey || status !== STATUS_REMOVE;\n }); // Update `STATUS_ADD` to `STATUS_KEEP`\n\n list.forEach(function (node) {\n if (node.key === matchKey) {\n // eslint-disable-next-line no-param-reassign\n node.status = STATUS_KEEP;\n }\n });\n });\n return list;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"component\", \"children\", \"onVisibleChanged\"],\n _excluded2 = [\"status\"];\n\n/* eslint react/prop-types: 0 */\nimport * as React from 'react';\nimport OriginCSSMotion from './CSSMotion';\nimport { supportTransition } from './util/motion';\nimport { STATUS_ADD, STATUS_KEEP, STATUS_REMOVE, STATUS_REMOVED, diffKeys, parseKeys } from './util/diff';\nvar MOTION_PROP_NAMES = ['eventProps', 'visible', 'children', 'motionName', 'motionAppear', 'motionEnter', 'motionLeave', 'motionLeaveImmediately', 'motionDeadline', 'removeOnLeave', 'leavedClassName', 'onAppearStart', 'onAppearActive', 'onAppearEnd', 'onEnterStart', 'onEnterActive', 'onEnterEnd', 'onLeaveStart', 'onLeaveActive', 'onLeaveEnd'];\n/**\n * Generate a CSSMotionList component with config\n * @param transitionSupport No need since CSSMotionList no longer depends on transition support\n * @param CSSMotion CSSMotion component\n */\n\nexport function genCSSMotionList(transitionSupport) {\n var CSSMotion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : OriginCSSMotion;\n\n var CSSMotionList = /*#__PURE__*/function (_React$Component) {\n _inherits(CSSMotionList, _React$Component);\n\n var _super = _createSuper(CSSMotionList);\n\n function CSSMotionList() {\n var _this;\n\n _classCallCheck(this, CSSMotionList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n keyEntities: []\n };\n\n _this.removeKey = function (removeKey) {\n _this.setState(function (_ref) {\n var keyEntities = _ref.keyEntities;\n return {\n keyEntities: keyEntities.map(function (entity) {\n if (entity.key !== removeKey) return entity;\n return _objectSpread(_objectSpread({}, entity), {}, {\n status: STATUS_REMOVED\n });\n })\n };\n });\n };\n\n return _this;\n }\n\n _createClass(CSSMotionList, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var keyEntities = this.state.keyEntities;\n\n var _this$props = this.props,\n component = _this$props.component,\n children = _this$props.children,\n _onVisibleChanged = _this$props.onVisibleChanged,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n\n var Component = component || React.Fragment;\n var motionProps = {};\n MOTION_PROP_NAMES.forEach(function (prop) {\n motionProps[prop] = restProps[prop];\n delete restProps[prop];\n });\n delete restProps.keys;\n return /*#__PURE__*/React.createElement(Component, restProps, keyEntities.map(function (_ref2) {\n var status = _ref2.status,\n eventProps = _objectWithoutProperties(_ref2, _excluded2);\n\n var visible = status === STATUS_ADD || status === STATUS_KEEP;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motionProps, {\n key: eventProps.key,\n visible: visible,\n eventProps: eventProps,\n onVisibleChanged: function onVisibleChanged(changedVisible) {\n _onVisibleChanged === null || _onVisibleChanged === void 0 ? void 0 : _onVisibleChanged(changedVisible, {\n key: eventProps.key\n });\n\n if (!changedVisible) {\n _this2.removeKey(eventProps.key);\n }\n }\n }), children);\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref3, _ref4) {\n var keys = _ref3.keys;\n var keyEntities = _ref4.keyEntities;\n var parsedKeyObjects = parseKeys(keys);\n var mixedKeyEntities = diffKeys(keyEntities, parsedKeyObjects);\n return {\n keyEntities: mixedKeyEntities.filter(function (entity) {\n var prevEntity = keyEntities.find(function (_ref5) {\n var key = _ref5.key;\n return entity.key === key;\n }); // Remove if already mark as removed\n\n if (prevEntity && prevEntity.status === STATUS_REMOVED && entity.status === STATUS_REMOVE) {\n return false;\n }\n\n return true;\n })\n };\n }\n }]);\n\n return CSSMotionList;\n }(React.Component);\n\n CSSMotionList.defaultProps = {\n component: 'div'\n };\n return CSSMotionList;\n}\nexport default genCSSMotionList(supportTransition);","import CSSMotion from './CSSMotion';\nimport CSSMotionList from './CSSMotionList';\nexport { CSSMotionList };\nexport default CSSMotion;","export function getMotion(_ref) {\n var prefixCls = _ref.prefixCls,\n motion = _ref.motion,\n animation = _ref.animation,\n transitionName = _ref.transitionName;\n\n if (motion) {\n return motion;\n }\n\n if (animation) {\n return {\n motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n };\n }\n\n if (transitionName) {\n return {\n motionName: transitionName\n };\n }\n\n return null;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from '../utils/legacyUtil';\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n mask = props.mask,\n maskMotion = props.maskMotion,\n maskAnimation = props.maskAnimation,\n maskTransitionName = props.maskTransitionName;\n\n if (!mask) {\n return null;\n }\n\n var motion = {};\n\n if (maskMotion || maskTransitionName || maskAnimation) {\n motion = _objectSpread({\n motionAppear: true\n }, getMotion({\n motion: maskMotion,\n prefixCls: prefixCls,\n transitionName: maskTransitionName,\n animation: maskAnimation\n }));\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n visible: visible,\n removeOnLeave: true\n }), function (_ref) {\n var className = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n zIndex: zIndex\n },\n className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n });\n });\n}","export default (function (element) {\n if (!element) {\n return false;\n }\n\n if (element.offsetParent) {\n return true;\n }\n\n if (element.getBBox) {\n var box = element.getBBox();\n\n if (box.width || box.height) {\n return true;\n }\n }\n\n if (element.getBoundingClientRect) {\n var _box = element.getBoundingClientRect();\n\n if (_box.width || _box.height) {\n return true;\n }\n }\n\n return false;\n});","let vendorPrefix;\n\nconst jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-',\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n vendorPrefix = '';\n const style = document.createElement('p').style;\n const testProp = 'Transform';\n for (const key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix()\n ? `${getVendorPrefix()}TransitionProperty`\n : 'transitionProperty';\n}\n\nexport function getTransformName() {\n return getVendorPrefix() ? `${getVendorPrefix()}Transform` : 'transform';\n}\n\nexport function setTransitionProperty(node, value) {\n const name = getTransitionName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n const name = getTransformName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nexport function getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\n\nexport function getTransformXY(node) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n const matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0),\n };\n }\n return {\n x: 0,\n y: 0,\n };\n}\n\nconst matrix2d = /matrix\\((.*)\\)/;\nconst matrix3d = /matrix3d\\((.*)\\)/;\n\nexport function setTransformXY(node, xy) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n let arr;\n let match2d = transform.match(matrix2d);\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, `matrix(${arr.join(',')})`);\n } else {\n const match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, `matrix3d(${arr.join(',')})`);\n }\n } else {\n setTransform(\n node,\n `translateX(${xy.x}px) translateY(${xy.y}px) translateZ(0)`,\n );\n }\n}\n","import {\n setTransitionProperty,\n getTransitionProperty,\n getTransformXY,\n setTransformXY,\n getTransformName,\n} from './propertyUtils';\n\nconst RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nlet getComputedStyleX;\n\n// https://stackoverflow.com/a/3485654/3040605\nfunction forceRelayout(elem) {\n const originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n let value = v;\n if (typeof name === 'object') {\n for (const i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = `${value}px`;\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n let box;\n let x;\n let y;\n const doc = elem.ownerDocument;\n const body = doc.body;\n const docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top;\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y,\n };\n}\n\nfunction getScroll(w, top) {\n let ret = w[`page${top ? 'Y' : 'X'}Offset`];\n const method = `scroll${top ? 'Top' : 'Left'}`;\n if (typeof ret !== 'number') {\n const d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n const pos = getClientPosition(el);\n const doc = el.ownerDocument;\n const w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n if (node.nodeType === 9) {\n return node;\n }\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n let computedStyle = cs;\n let val = '';\n const d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nconst _RE_NUM_NO_PX = new RegExp(`^(${RE_NUM})(?!px)[a-z%]+$`, 'i');\nconst RE_POS = /^(top|right|bottom|left)$/;\nconst CURRENT_STYLE = 'currentStyle';\nconst RUNTIME_STYLE = 'runtimeStyle';\nconst LEFT = 'left';\nconst PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n let ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n const style = elem.style;\n const left = style[LEFT];\n const rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle\n ? _getComputedStyle\n : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n}\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n let presetH = -999;\n let presetV = -999;\n const horizontalProperty = getOffsetDirection('left', option);\n const verticalProperty = getOffsetDirection('top', option);\n const oppositeHorizontalProperty = oppositeOffsetDirection(\n horizontalProperty,\n );\n const oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n let originalTransition = '';\n const originalOffset = getOffset(elem);\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = `${presetH}px`;\n }\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = `${presetV}px`;\n }\n // force relayout\n forceRelayout(elem);\n const old = getOffset(elem);\n const originalStyle = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const preset = key === 'left' ? presetH : presetV;\n const off = originalOffset[key] - old[key];\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n css(elem, originalStyle);\n // force relayout\n forceRelayout(elem);\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n const ret = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const off = offset[key] - originalOffset[key];\n if (key === dir) {\n ret[dir] = originalStyle[dir] + off;\n } else {\n ret[dir] = originalStyle[dir] - off;\n }\n }\n }\n css(elem, ret);\n}\n\nfunction setTransform(elem, offset) {\n const originalOffset = getOffset(elem);\n const originalXY = getTransformXY(elem);\n const resultXY = { x: originalXY.x, y: originalXY.y };\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n const oriOffset = getOffset(elem);\n\n const oLeft = oriOffset.left.toFixed(0);\n const oTop = oriOffset.top.toFixed(0);\n const tLeft = offset.left.toFixed(0);\n const tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (\n option.useCssTransform &&\n getTransformName() in document.body.style\n ) {\n setTransform(elem, offset, option);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (let i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nconst BOX_MODELS = ['margin', 'border', 'padding'];\nconst CONTENT_INDEX = -1;\nconst PADDING_INDEX = 2;\nconst BORDER_INDEX = 1;\nconst MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n const old = {};\n const style = elem.style;\n let name;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n let value = 0;\n let prop;\n let j;\n let i;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n let cssProp;\n if (prop === 'border') {\n cssProp = `${prop}${which[i]}Width`;\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\nconst domUtils = {\n getParent(element) {\n let parent = element;\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n return parent;\n },\n};\n\neach(['Width', 'Height'], name => {\n domUtils[`doc${name}`] = refWin => {\n const d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[`scroll${name}`],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[`scroll${name}`],\n domUtils[`viewport${name}`](d),\n );\n };\n\n domUtils[`viewport${name}`] = win => {\n // pc browser includes scrollbar in window.innerWidth\n const prop = `client${name}`;\n const doc = win.document;\n const body = doc.body;\n const documentElement = doc.documentElement;\n const documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return (\n (doc.compatMode === 'CSS1Compat' && documentElementProp) ||\n (body && body[prop]) ||\n documentElementProp\n );\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, ex) {\n let extra = ex;\n if (isWindow(elem)) {\n return name === 'width'\n ? domUtils.viewportWidth(elem)\n : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width'\n ? domUtils.docWidth(elem)\n : domUtils.docHeight(elem);\n }\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n let borderBoxValue =\n name === 'width'\n ? elem.getBoundingClientRect().width\n : elem.getBoundingClientRect().height;\n const isBorderBox = isBorderBoxFn(elem);\n let cssBoxValue = 0;\n if (\n borderBoxValue === null ||\n borderBoxValue === undefined ||\n borderBoxValue <= 0\n ) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (\n cssBoxValue === null ||\n cssBoxValue === undefined ||\n Number(cssBoxValue) < 0\n ) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n const borderBoxValueOrIsBorderBox =\n borderBoxValue !== undefined || isBorderBox;\n const val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return (\n val - getPBMWidth(elem, ['border', 'padding'], which)\n );\n }\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n return (\n val +\n (extra === PADDING_INDEX\n ? -getPBMWidth(elem, ['border'], which)\n : getPBMWidth(elem, ['margin'], which))\n );\n }\n return (\n cssBoxValue +\n getPBMWidth(elem, BOX_MODELS.slice(extra), which)\n );\n}\n\nconst cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block',\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(...args) {\n let val;\n const elem = args[0];\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, () => {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\neach(['width', 'height'], name => {\n const first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils[`outer${first}`] = (el, includeMargin) => {\n return (\n el &&\n getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX)\n );\n };\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = (elem, v) => {\n let val = v;\n if (val !== undefined) {\n if (elem) {\n const isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (const i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n return to;\n}\n\nconst utils = {\n getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n const doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument,\n offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow,\n each,\n css,\n clone(obj) {\n let i;\n const ret = {};\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n const overflow = obj.overflow;\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n mix,\n getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n utils.mix(ret, args[i]);\n }\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0,\n};\n\nmix(utils, domUtils);\n\nexport default utils;\n","import utils from './utils';\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\nconst { getParent } = utils;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n }\n // ie 这个也不是完全可行\n /*\n
    \n
    \n 元素 6 高 100px 宽 50px
    \n
    \n
    \n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent;\n let positionStyle = utils.css(element, 'position');\n const skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html'\n ? null\n : getParent(element);\n }\n\n for (\n parent = getParent(element);\n parent && parent !== body && parent.nodeType !== 9;\n parent = getParent(parent)\n ) {\n positionStyle = utils.css(parent, 'position');\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n return null;\n}\n\nexport default getOffsetParent;\n","import utils from './utils';\n\nconst { getParent } = utils;\n\nexport default function isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent = null;\n for (\n parent = getParent(element);\n // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc;\n parent = getParent(parent)\n ) {\n const positionStyle = utils.css(parent, 'position');\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n return false;\n}\n","import utils from './utils';\nimport getOffsetParent from './getOffsetParent';\nimport isAncestorFixed from './isAncestorFixed';\n\n/**\n * 获得元素的显示部分的区域\n */\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n const visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity,\n };\n let el = getOffsetParent(element);\n const doc = utils.getDocument(element);\n const win = doc.defaultView || doc.parentWindow;\n const body = doc.body;\n const documentElement = doc.documentElement;\n\n // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if (\n (navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&\n // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n (el !== body &&\n el !== documentElement &&\n utils.css(el, 'overflow') !== 'visible')\n ) {\n const pos = utils.offset(el);\n // add border\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(\n visibleRect.right,\n // consider area without scrollBar\n pos.left + el.clientWidth,\n );\n visibleRect.bottom = Math.min(\n visibleRect.bottom,\n pos.top + el.clientHeight,\n );\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n el = getOffsetParent(el);\n }\n\n // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n let originalPosition = null;\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n const position = utils.css(element, 'position');\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n let documentWidth = documentElement.scrollWidth;\n let documentHeight = documentElement.scrollHeight;\n\n // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n const bodyStyle = window.getComputedStyle(body);\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n }\n\n // Reset element position after calculate the visible area\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n const maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n\n const maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 &&\n visibleRect.left >= 0 &&\n visibleRect.bottom > visibleRect.top &&\n visibleRect.right > visibleRect.left\n ? visibleRect\n : null;\n}\n\nexport default getVisibleRectForElement;\n","import utils from './utils';\n\nfunction getRegion(node) {\n let offset;\n let w;\n let h;\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n const win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win),\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\nexport default getRegion;\n","/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\n\nfunction getAlignOffset(region, align) {\n const V = align.charAt(0);\n const H = align.charAt(1);\n const w = region.width;\n const h = region.height;\n\n let x = region.left;\n let y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y,\n };\n}\n\nexport default getAlignOffset;\n","import getAlignOffset from './getAlignOffset';\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n const p1 = getAlignOffset(refNodeRegion, points[1]);\n const p2 = getAlignOffset(elRegion, points[0]);\n const diff = [p2.left - p1.left, p2.top - p1.top];\n\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1]),\n };\n}\n\nexport default getElFuturePos;\n","/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nimport utils from '../utils';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport adjustForViewport from '../adjustForViewport';\nimport getRegion from '../getRegion';\nimport getElFuturePos from '../getElFuturePos';\n\n// http://yiminghe.iteye.com/blog/1124720\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left < visibleRect.left ||\n elFuturePos.left + elRegion.width > visibleRect.right\n );\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top < visibleRect.top ||\n elFuturePos.top + elRegion.height > visibleRect.bottom\n );\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left > visibleRect.right ||\n elFuturePos.left + elRegion.width < visibleRect.left\n );\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top > visibleRect.bottom ||\n elFuturePos.top + elRegion.height < visibleRect.top\n );\n}\n\nfunction flip(points, reg, map) {\n const ret = [];\n utils.each(points, p => {\n ret.push(\n p.replace(reg, m => {\n return map[m];\n }),\n );\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n let n;\n if (/%$/.test(str)) {\n n = (parseInt(str.substring(0, str.length - 1), 10) / 100) * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n let points = align.points;\n let offset = align.offset || [0, 0];\n let targetOffset = align.targetOffset || [0, 0];\n let overflow = align.overflow;\n const source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n const newOverflowCfg = {};\n let fail = 0;\n const alwaysByViewport = !!(overflow && overflow.alwaysByViewport);\n // 当前节点可以被放置的显示区域\n const visibleRect = getVisibleRectForElement(source, alwaysByViewport);\n // 当前节点所占的区域, left/top/width/height\n const elRegion = getRegion(source);\n // 将 offset 转换成数值,支持百分比\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion);\n // 当前节点将要被放置的位置\n let elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n // 当前节点将要所处的区域\n let newElRegion = utils.merge(elRegion, elFuturePos);\n\n // 如果可视区域不能完全放置当前节点时允许调整\n if (\n visibleRect &&\n (overflow.adjustX || overflow.adjustY) &&\n isTgtRegionVisible\n ) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 0);\n const newTargetOffset = flipOffset(targetOffset, 0);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 1);\n const newTargetOffset = flipOffset(targetOffset, 1);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailY(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n // 如果失败,重新计算当前节点将要被放置的位置\n if (fail) {\n elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n utils.mix(newElRegion, elFuturePos);\n }\n const isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n const isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);\n // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n if (isStillFailX || isStillFailY) {\n let newPoints = points;\n\n // 重置对应部分的翻转逻辑\n if (isStillFailX) {\n newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n }\n if (isStillFailY) {\n newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n }\n\n points = newPoints;\n\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n }\n // 2. 只有指定了可以调整当前方向才调整\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY;\n\n // 确实要调整,甚至可能会调整高度宽度\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(\n elFuturePos,\n elRegion,\n visibleRect,\n newOverflowCfg,\n );\n }\n }\n\n // need judge to in case set fixed with in css on height auto element\n if (newElRegion.width !== elRegion.width) {\n utils.css(\n source,\n 'width',\n utils.width(source) + newElRegion.width - elRegion.width,\n );\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(\n source,\n 'height',\n utils.height(source) + newElRegion.height - elRegion.height,\n );\n }\n\n // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如
    \n utils.offset(\n source,\n {\n left: newElRegion.left,\n top: newElRegion.top,\n },\n {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake,\n },\n );\n\n return {\n points,\n offset,\n targetOffset,\n overflow: newOverflowCfg,\n };\n}\n\nexport default doAlign;\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n","import utils from './utils';\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n const pos = utils.clone(elFuturePos);\n const size = {\n width: elRegion.width,\n height: elRegion.height,\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n }\n\n // Left edge inside and right edge outside viewport, try to resize it.\n if (\n overflow.resizeWidth &&\n pos.left >= visibleRect.left &&\n pos.left + size.width > visibleRect.right\n ) {\n size.width -= pos.left + size.width - visibleRect.right;\n }\n\n // Right edge outside viewport, try to move it.\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n }\n\n // Top edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n }\n\n // Top edge inside and bottom edge outside viewport, try to resize it.\n if (\n overflow.resizeHeight &&\n pos.top >= visibleRect.top &&\n pos.top + size.height > visibleRect.bottom\n ) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n }\n\n // Bottom edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nexport default adjustForViewport;\n","import doAlign from './align';\nimport getOffsetParent from '../getOffsetParent';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport getRegion from '../getRegion';\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n const visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n const targetRegion = getRegion(target);\n\n return (\n !visibleRect ||\n targetRegion.left + targetRegion.width <= visibleRect.left ||\n targetRegion.top + targetRegion.height <= visibleRect.top ||\n targetRegion.left >= visibleRect.right ||\n targetRegion.top >= visibleRect.bottom\n );\n}\n\nfunction alignElement(el, refNode, align) {\n const target = align.target || refNode;\n const refNodeRegion = getRegion(target);\n\n const isTargetNotOutOfVisible = !isOutOfVisibleRect(\n target,\n align.overflow && align.overflow.alwaysByViewport,\n );\n\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\n\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\nexport default alignElement;\n","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ResizeObserver from 'resize-observer-polyfill';\nimport contains from \"rc-util/es/Dom/contains\";\nexport function isSamePoint(prev, next) {\n if (prev === next) return true;\n if (!prev || !next) return false;\n\n if ('pageX' in next && 'pageY' in next) {\n return prev.pageX === next.pageX && prev.pageY === next.pageY;\n }\n\n if ('clientX' in next && 'clientY' in next) {\n return prev.clientX === next.clientX && prev.clientY === next.clientY;\n }\n\n return false;\n}\nexport function restoreFocus(activeElement, container) {\n // Focus back if is in the container\n if (activeElement !== document.activeElement && contains(container, activeElement) && typeof activeElement.focus === 'function') {\n activeElement.focus();\n }\n}\nexport function monitorResize(element, callback) {\n var prevWidth = null;\n var prevHeight = null;\n\n function onResize(_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n target = _ref2[0].target;\n\n if (!document.documentElement.contains(target)) return;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n\n if (prevWidth !== fixedWidth || prevHeight !== fixedHeight) {\n // https://webkit.org/blog/9997/resizeobserver-in-webkit/\n Promise.resolve().then(function () {\n callback({\n width: fixedWidth,\n height: fixedHeight\n });\n });\n }\n\n prevWidth = fixedWidth;\n prevHeight = fixedHeight;\n }\n\n var resizeObserver = new ResizeObserver(onResize);\n\n if (element) {\n resizeObserver.observe(element);\n }\n\n return function () {\n resizeObserver.disconnect();\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/**\n * Removed props:\n * - childrenProps\n */\nimport React from 'react';\nimport { composeRef } from \"rc-util/es/ref\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport { alignElement, alignPoint } from 'dom-align';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport isEqual from 'lodash/isEqual';\nimport { isSamePoint, restoreFocus, monitorResize } from './util';\nimport useBuffer from './hooks/useBuffer';\n\nfunction getElement(func) {\n if (typeof func !== 'function') return null;\n return func();\n}\n\nfunction getPoint(point) {\n if (_typeof(point) !== 'object' || !point) return null;\n return point;\n}\n\nvar Align = function Align(_ref, ref) {\n var children = _ref.children,\n disabled = _ref.disabled,\n target = _ref.target,\n align = _ref.align,\n onAlign = _ref.onAlign,\n monitorWindowResize = _ref.monitorWindowResize,\n _ref$monitorBufferTim = _ref.monitorBufferTime,\n monitorBufferTime = _ref$monitorBufferTim === void 0 ? 0 : _ref$monitorBufferTim;\n var cacheRef = React.useRef({});\n var nodeRef = React.useRef();\n var childNode = React.Children.only(children); // ===================== Align ======================\n // We save the props here to avoid closure makes props ood\n\n var forceAlignPropsRef = React.useRef({});\n forceAlignPropsRef.current.disabled = disabled;\n forceAlignPropsRef.current.target = target;\n forceAlignPropsRef.current.align = align;\n forceAlignPropsRef.current.onAlign = onAlign;\n\n var _useBuffer = useBuffer(function () {\n var _forceAlignPropsRef$c = forceAlignPropsRef.current,\n latestDisabled = _forceAlignPropsRef$c.disabled,\n latestTarget = _forceAlignPropsRef$c.target,\n latestAlign = _forceAlignPropsRef$c.align,\n latestOnAlign = _forceAlignPropsRef$c.onAlign;\n\n if (!latestDisabled && latestTarget) {\n var source = nodeRef.current;\n var result;\n var element = getElement(latestTarget);\n var point = getPoint(latestTarget);\n cacheRef.current.element = element;\n cacheRef.current.point = point;\n cacheRef.current.align = latestAlign; // IE lose focus after element realign\n // We should record activeElement and restore later\n\n // IE lose focus after element realign\n // We should record activeElement and restore later\n var _document = document,\n activeElement = _document.activeElement; // We only align when element is visible\n\n // We only align when element is visible\n if (element && isVisible(element)) {\n result = alignElement(source, element, latestAlign);\n } else if (point) {\n result = alignPoint(source, point, latestAlign);\n }\n\n restoreFocus(activeElement, source);\n\n if (latestOnAlign && result) {\n latestOnAlign(source, result);\n }\n\n return true;\n }\n\n return false;\n }, monitorBufferTime),\n _useBuffer2 = _slicedToArray(_useBuffer, 2),\n _forceAlign = _useBuffer2[0],\n cancelForceAlign = _useBuffer2[1]; // ===================== Effect =====================\n // Listen for target updated\n\n\n var resizeMonitor = React.useRef({\n cancel: function cancel() {}\n }); // Listen for source updated\n\n var sourceResizeMonitor = React.useRef({\n cancel: function cancel() {}\n });\n React.useEffect(function () {\n var element = getElement(target);\n var point = getPoint(target);\n\n if (nodeRef.current !== sourceResizeMonitor.current.element) {\n sourceResizeMonitor.current.cancel();\n sourceResizeMonitor.current.element = nodeRef.current;\n sourceResizeMonitor.current.cancel = monitorResize(nodeRef.current, _forceAlign);\n }\n\n if (cacheRef.current.element !== element || !isSamePoint(cacheRef.current.point, point) || !isEqual(cacheRef.current.align, align)) {\n _forceAlign(); // Add resize observer\n\n\n if (resizeMonitor.current.element !== element) {\n resizeMonitor.current.cancel();\n resizeMonitor.current.element = element;\n resizeMonitor.current.cancel = monitorResize(element, _forceAlign);\n }\n }\n }); // Listen for disabled change\n\n React.useEffect(function () {\n if (!disabled) {\n _forceAlign();\n } else {\n cancelForceAlign();\n }\n }, [disabled]); // Listen for window resize\n\n var winResizeRef = React.useRef(null);\n React.useEffect(function () {\n if (monitorWindowResize) {\n if (!winResizeRef.current) {\n winResizeRef.current = addEventListener(window, 'resize', _forceAlign);\n }\n } else if (winResizeRef.current) {\n winResizeRef.current.remove();\n winResizeRef.current = null;\n }\n }, [monitorWindowResize]); // Clear all if unmount\n\n React.useEffect(function () {\n return function () {\n resizeMonitor.current.cancel();\n sourceResizeMonitor.current.cancel();\n if (winResizeRef.current) winResizeRef.current.remove();\n cancelForceAlign();\n };\n }, []); // ====================== Ref =======================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {\n return _forceAlign(true);\n }\n };\n }); // ===================== Render =====================\n\n if ( /*#__PURE__*/React.isValidElement(childNode)) {\n childNode = /*#__PURE__*/React.cloneElement(childNode, {\n ref: composeRef(childNode.ref, nodeRef)\n });\n }\n\n return childNode;\n};\n\nvar RcAlign = /*#__PURE__*/React.forwardRef(Align);\nRcAlign.displayName = 'Align';\nexport default RcAlign;","import React from 'react';\nexport default (function (callback, buffer) {\n var calledRef = React.useRef(false);\n var timeoutRef = React.useRef(null);\n\n function cancelTrigger() {\n window.clearTimeout(timeoutRef.current);\n }\n\n function trigger(force) {\n if (!calledRef.current || force === true) {\n if (callback() === false) {\n // Not delay since callback cancelled self\n return;\n }\n\n calledRef.current = true;\n cancelTrigger();\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n }, buffer);\n } else {\n cancelTrigger();\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n trigger();\n }, buffer);\n }\n }\n\n return [trigger, function () {\n calledRef.current = false;\n cancelTrigger();\n }];\n});","import utils from '../utils';\nimport doAlign from './align';\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n let pageX;\n let pageY;\n\n const doc = utils.getDocument(el);\n const win = doc.defaultView || doc.parentWindow;\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n const tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0,\n };\n\n const pointInView =\n pageX >= 0 &&\n pageX <= scrollX + viewportWidth &&\n (pageY >= 0 && pageY <= scrollY + viewportHeight);\n\n // Provide default target point\n const points = [align.points[0], 'cc'];\n\n return doAlign(el, tgtRegion, { ...align, points }, pointInView);\n}\n\nexport default alignPoint;\n","// export this package's api\nimport Align from './Align';\nexport default Align;","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import _regeneratorRuntime from \"@babel/runtime/regenerator\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useState, useEffect, useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nvar StatusQueue = ['measure', 'align', null, 'motion'];\nexport default (function (visible, doMeasure) {\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n status = _useState2[0],\n setInternalStatus = _useState2[1];\n\n var rafRef = useRef();\n var destroyRef = useRef(false);\n\n function setStatus(nextStatus) {\n if (!destroyRef.current) {\n setInternalStatus(nextStatus);\n }\n }\n\n function cancelRaf() {\n raf.cancel(rafRef.current);\n }\n\n function goNextStatus(callback) {\n cancelRaf();\n rafRef.current = raf(function () {\n // Only align should be manually trigger\n setStatus(function (prev) {\n switch (status) {\n case 'align':\n return 'motion';\n\n case 'motion':\n return 'stable';\n\n default:\n }\n\n return prev;\n });\n callback === null || callback === void 0 ? void 0 : callback();\n });\n } // Init status\n\n\n useEffect(function () {\n setStatus('measure');\n }, [visible]); // Go next status\n\n useEffect(function () {\n switch (status) {\n case 'measure':\n doMeasure();\n break;\n\n default:\n }\n\n if (status) {\n rafRef.current = raf( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var index, nextStatus;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n index = StatusQueue.indexOf(status);\n nextStatus = StatusQueue[index + 1];\n\n if (nextStatus && index !== -1) {\n setStatus(nextStatus);\n }\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n }\n }, [status]);\n useEffect(function () {\n return function () {\n destroyRef.current = true;\n cancelRaf();\n };\n }, []);\n return [status, goNextStatus];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport Align from 'rc-align';\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nimport useVisibleStatus from './useVisibleStatus';\nimport { getMotion } from '../utils/legacyUtil';\nimport useStretchStyle from './useStretchStyle';\nvar PopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var visible = props.visible,\n prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n children = props.children,\n zIndex = props.zIndex,\n stretch = props.stretch,\n destroyPopupOnHide = props.destroyPopupOnHide,\n forceRender = props.forceRender,\n align = props.align,\n point = props.point,\n getRootDomNode = props.getRootDomNode,\n getClassNameFromAlign = props.getClassNameFromAlign,\n onAlign = props.onAlign,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onMouseDown = props.onMouseDown,\n onTouchStart = props.onTouchStart;\n var alignRef = useRef();\n var elementRef = useRef();\n\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n alignedClassName = _useState2[0],\n setAlignedClassName = _useState2[1]; // ======================= Measure ========================\n\n\n var _useStretchStyle = useStretchStyle(stretch),\n _useStretchStyle2 = _slicedToArray(_useStretchStyle, 2),\n stretchStyle = _useStretchStyle2[0],\n measureStretchStyle = _useStretchStyle2[1];\n\n function doMeasure() {\n if (stretch) {\n measureStretchStyle(getRootDomNode());\n }\n } // ======================== Status ========================\n\n\n var _useVisibleStatus = useVisibleStatus(visible, doMeasure),\n _useVisibleStatus2 = _slicedToArray(_useVisibleStatus, 2),\n status = _useVisibleStatus2[0],\n goNextStatus = _useVisibleStatus2[1]; // ======================== Aligns ========================\n\n\n var prepareResolveRef = useRef(); // `target` on `rc-align` can accept as a function to get the bind element or a point.\n // ref: https://www.npmjs.com/package/rc-align\n\n function getAlignTarget() {\n if (point) {\n return point;\n }\n\n return getRootDomNode;\n }\n\n function forceAlign() {\n var _alignRef$current;\n\n (_alignRef$current = alignRef.current) === null || _alignRef$current === void 0 ? void 0 : _alignRef$current.forceAlign();\n }\n\n function onInternalAlign(popupDomNode, matchAlign) {\n var nextAlignedClassName = getClassNameFromAlign(matchAlign);\n\n if (alignedClassName !== nextAlignedClassName) {\n setAlignedClassName(nextAlignedClassName);\n }\n\n if (status === 'align') {\n // Repeat until not more align needed\n if (alignedClassName !== nextAlignedClassName) {\n Promise.resolve().then(function () {\n forceAlign();\n });\n } else {\n goNextStatus(function () {\n var _prepareResolveRef$cu;\n\n (_prepareResolveRef$cu = prepareResolveRef.current) === null || _prepareResolveRef$cu === void 0 ? void 0 : _prepareResolveRef$cu.call(prepareResolveRef);\n });\n }\n\n onAlign === null || onAlign === void 0 ? void 0 : onAlign(popupDomNode, matchAlign);\n }\n } // ======================== Motion ========================\n\n\n var motion = _objectSpread({}, getMotion(props));\n\n ['onAppearEnd', 'onEnterEnd', 'onLeaveEnd'].forEach(function (eventName) {\n var originHandler = motion[eventName];\n\n motion[eventName] = function (element, event) {\n goNextStatus();\n return originHandler === null || originHandler === void 0 ? void 0 : originHandler(element, event);\n };\n });\n\n function onShowPrepare() {\n return new Promise(function (resolve) {\n prepareResolveRef.current = resolve;\n });\n } // Go to stable directly when motion not provided\n\n\n React.useEffect(function () {\n if (!motion.motionName && status === 'motion') {\n goNextStatus();\n }\n }, [motion.motionName, status]); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: forceAlign,\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread(_objectSpread({}, stretchStyle), {}, {\n zIndex: zIndex,\n opacity: status === 'motion' || status === 'stable' || !visible ? undefined : 0,\n pointerEvents: status === 'stable' ? undefined : 'none'\n }, style); // Align status\n\n\n var alignDisabled = true;\n\n if ((align === null || align === void 0 ? void 0 : align.points) && (status === 'align' || status === 'stable')) {\n alignDisabled = false;\n }\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }, motion, {\n onAppearPrepare: onShowPrepare,\n onEnterPrepare: onShowPrepare,\n removeOnLeave: destroyPopupOnHide,\n forceRender: forceRender\n }), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, className, alignedClassName, motionClassName);\n return /*#__PURE__*/React.createElement(Align, {\n target: getAlignTarget(),\n key: \"popup\",\n ref: alignRef,\n monitorWindowResize: true,\n disabled: alignDisabled,\n align: align,\n onAlign: onInternalAlign\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseDownCapture: onMouseDown,\n onTouchStartCapture: onTouchStart,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode));\n });\n});\nPopupInner.displayName = 'PopupInner';\nexport default PopupInner;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default (function (stretch) {\n var _React$useState = React.useState({\n width: 0,\n height: 0\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n targetSize = _React$useState2[0],\n setTargetSize = _React$useState2[1];\n\n function measureStretch(element) {\n setTargetSize({\n width: element.offsetWidth,\n height: element.offsetHeight\n });\n } // Merge stretch style\n\n\n var style = React.useMemo(function () {\n var sizeStyle = {};\n\n if (stretch) {\n var width = targetSize.width,\n height = targetSize.height; // Stretch with target\n\n if (stretch.indexOf('height') !== -1 && height) {\n sizeStyle.height = height;\n } else if (stretch.indexOf('minHeight') !== -1 && height) {\n sizeStyle.minHeight = height;\n }\n\n if (stretch.indexOf('width') !== -1 && width) {\n sizeStyle.width = width;\n } else if (stretch.indexOf('minWidth') !== -1 && width) {\n sizeStyle.minWidth = width;\n }\n }\n\n return sizeStyle;\n }, [stretch, targetSize]);\n return [style, measureStretch];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nvar MobilePopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n children = props.children,\n _props$mobile = props.mobile;\n _props$mobile = _props$mobile === void 0 ? {} : _props$mobile;\n var popupClassName = _props$mobile.popupClassName,\n popupStyle = _props$mobile.popupStyle,\n _props$mobile$popupMo = _props$mobile.popupMotion,\n popupMotion = _props$mobile$popupMo === void 0 ? {} : _props$mobile$popupMo,\n popupRender = _props$mobile.popupRender;\n var elementRef = React.useRef(); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {},\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread({\n zIndex: zIndex\n }, popupStyle);\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n } // Mobile support additional render\n\n\n if (popupRender) {\n childNode = popupRender(childNode);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n removeOnLeave: true\n }, popupMotion), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, popupClassName, motionClassName);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode);\n });\n});\nMobilePopupInner.displayName = 'MobilePopupInner';\nexport default MobilePopupInner;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"visible\", \"mobile\"];\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport isMobile from \"rc-util/es/isMobile\";\nimport Mask from './Mask';\nimport PopupInner from './PopupInner';\nimport MobilePopupInner from './MobilePopupInner';\nvar Popup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var visible = _ref.visible,\n mobile = _ref.mobile,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(visible),\n _useState2 = _slicedToArray(_useState, 2),\n innerVisible = _useState2[0],\n serInnerVisible = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n inMobile = _useState4[0],\n setInMobile = _useState4[1];\n\n var cloneProps = _objectSpread(_objectSpread({}, props), {}, {\n visible: innerVisible\n }); // We check mobile in visible changed here.\n // And this also delay set `innerVisible` to avoid popup component render flash\n\n\n useEffect(function () {\n serInnerVisible(visible);\n\n if (visible && mobile) {\n setInMobile(isMobile());\n }\n }, [visible, mobile]);\n var popupNode = inMobile ? /*#__PURE__*/React.createElement(MobilePopupInner, _extends({}, cloneProps, {\n mobile: mobile,\n ref: ref\n })) : /*#__PURE__*/React.createElement(PopupInner, _extends({}, cloneProps, {\n ref: ref\n })); // We can use fragment directly but this may failed some selector usage. Keep as origin logic\n\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Mask, cloneProps), popupNode);\n});\nPopup.displayName = 'Popup';\nexport default Popup;","export default (function () {\n if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n return false;\n }\n\n var agent = navigator.userAgent || navigator.vendor || window.opera;\n\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4))) {\n return true;\n }\n\n return false;\n});","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport raf from \"rc-util/es/raf\";\nimport contains from \"rc-util/es/Dom/contains\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport Portal from \"rc-util/es/Portal\";\nimport classNames from 'classnames';\nimport { getAlignFromPlacement, getAlignPopupClassName } from './utils/alignUtil';\nimport Popup from './Popup';\nimport TriggerContext from './context';\n\nfunction noop() {}\n\nfunction returnEmptyString() {\n return '';\n}\n\nfunction returnDocument(element) {\n if (element) {\n return element.ownerDocument;\n }\n\n return window.document;\n}\n\nvar ALL_HANDLERS = ['onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur', 'onContextMenu'];\n/**\n * Internal usage. Do not use in your code since this will be removed.\n */\n\nexport function generateTrigger(PortalComponent) {\n var Trigger = /*#__PURE__*/function (_React$Component) {\n _inherits(Trigger, _React$Component);\n\n var _super = _createSuper(Trigger);\n\n function Trigger(props) {\n var _this;\n\n _classCallCheck(this, Trigger);\n\n _this = _super.call(this, props);\n _this.popupRef = /*#__PURE__*/React.createRef();\n _this.triggerRef = /*#__PURE__*/React.createRef();\n _this.attachId = void 0;\n _this.clickOutsideHandler = void 0;\n _this.touchOutsideHandler = void 0;\n _this.contextMenuOutsideHandler1 = void 0;\n _this.contextMenuOutsideHandler2 = void 0;\n _this.mouseDownTimeout = void 0;\n _this.focusTime = void 0;\n _this.preClickTime = void 0;\n _this.preTouchTime = void 0;\n _this.delayTimer = void 0;\n _this.hasPopupMouseDown = void 0;\n\n _this.onMouseEnter = function (e) {\n var mouseEnterDelay = _this.props.mouseEnterDelay;\n\n _this.fireEvents('onMouseEnter', e);\n\n _this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n };\n\n _this.onMouseMove = function (e) {\n _this.fireEvents('onMouseMove', e);\n\n _this.setPoint(e);\n };\n\n _this.onMouseLeave = function (e) {\n _this.fireEvents('onMouseLeave', e);\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n };\n\n _this.onPopupMouseEnter = function () {\n _this.clearDelayTimer();\n };\n\n _this.onPopupMouseLeave = function (e) {\n var _this$popupRef$curren;\n\n // https://github.com/react-component/trigger/pull/13\n // react bug?\n if (e.relatedTarget && !e.relatedTarget.setTimeout && contains((_this$popupRef$curren = _this.popupRef.current) === null || _this$popupRef$curren === void 0 ? void 0 : _this$popupRef$curren.getElement(), e.relatedTarget)) {\n return;\n }\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n };\n\n _this.onFocus = function (e) {\n _this.fireEvents('onFocus', e); // incase focusin and focusout\n\n\n _this.clearDelayTimer();\n\n if (_this.isFocusToShow()) {\n _this.focusTime = Date.now();\n\n _this.delaySetPopupVisible(true, _this.props.focusDelay);\n }\n };\n\n _this.onMouseDown = function (e) {\n _this.fireEvents('onMouseDown', e);\n\n _this.preClickTime = Date.now();\n };\n\n _this.onTouchStart = function (e) {\n _this.fireEvents('onTouchStart', e);\n\n _this.preTouchTime = Date.now();\n };\n\n _this.onBlur = function (e) {\n _this.fireEvents('onBlur', e);\n\n _this.clearDelayTimer();\n\n if (_this.isBlurToHide()) {\n _this.delaySetPopupVisible(false, _this.props.blurDelay);\n }\n };\n\n _this.onContextMenu = function (e) {\n e.preventDefault();\n\n _this.fireEvents('onContextMenu', e);\n\n _this.setPopupVisible(true, e);\n };\n\n _this.onContextMenuClose = function () {\n if (_this.isContextMenuToShow()) {\n _this.close();\n }\n };\n\n _this.onClick = function (event) {\n _this.fireEvents('onClick', event); // focus will trigger click\n\n\n if (_this.focusTime) {\n var preTime;\n\n if (_this.preClickTime && _this.preTouchTime) {\n preTime = Math.min(_this.preClickTime, _this.preTouchTime);\n } else if (_this.preClickTime) {\n preTime = _this.preClickTime;\n } else if (_this.preTouchTime) {\n preTime = _this.preTouchTime;\n }\n\n if (Math.abs(preTime - _this.focusTime) < 20) {\n return;\n }\n\n _this.focusTime = 0;\n }\n\n _this.preClickTime = 0;\n _this.preTouchTime = 0; // Only prevent default when all the action is click.\n // https://github.com/ant-design/ant-design/issues/17043\n // https://github.com/ant-design/ant-design/issues/17291\n\n if (_this.isClickToShow() && (_this.isClickToHide() || _this.isBlurToHide()) && event && event.preventDefault) {\n event.preventDefault();\n }\n\n var nextVisible = !_this.state.popupVisible;\n\n if (_this.isClickToHide() && !nextVisible || nextVisible && _this.isClickToShow()) {\n _this.setPopupVisible(!_this.state.popupVisible, event);\n }\n };\n\n _this.onPopupMouseDown = function () {\n _this.hasPopupMouseDown = true;\n clearTimeout(_this.mouseDownTimeout);\n _this.mouseDownTimeout = window.setTimeout(function () {\n _this.hasPopupMouseDown = false;\n }, 0);\n\n if (_this.context) {\n var _this$context;\n\n (_this$context = _this.context).onPopupMouseDown.apply(_this$context, arguments);\n }\n };\n\n _this.onDocumentClick = function (event) {\n if (_this.props.mask && !_this.props.maskClosable) {\n return;\n }\n\n var target = event.target;\n\n var root = _this.getRootDomNode();\n\n var popupNode = _this.getPopupDomNode();\n\n if ( // mousedown on the target should also close popup when action is contextMenu.\n // https://github.com/ant-design/ant-design/issues/29853\n (!contains(root, target) || _this.isContextMenuOnly()) && !contains(popupNode, target) && !_this.hasPopupMouseDown) {\n _this.close();\n }\n };\n\n _this.getRootDomNode = function () {\n var getTriggerDOMNode = _this.props.getTriggerDOMNode;\n\n if (getTriggerDOMNode) {\n return getTriggerDOMNode(_this.triggerRef.current);\n }\n\n try {\n var domNode = findDOMNode(_this.triggerRef.current);\n\n if (domNode) {\n return domNode;\n }\n } catch (err) {// Do nothing\n }\n\n return ReactDOM.findDOMNode(_assertThisInitialized(_this));\n };\n\n _this.getPopupClassNameFromAlign = function (align) {\n var className = [];\n var _this$props = _this.props,\n popupPlacement = _this$props.popupPlacement,\n builtinPlacements = _this$props.builtinPlacements,\n prefixCls = _this$props.prefixCls,\n alignPoint = _this$props.alignPoint,\n getPopupClassNameFromAlign = _this$props.getPopupClassNameFromAlign;\n\n if (popupPlacement && builtinPlacements) {\n className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n }\n\n if (getPopupClassNameFromAlign) {\n className.push(getPopupClassNameFromAlign(align));\n }\n\n return className.join(' ');\n };\n\n _this.getComponent = function () {\n var _this$props2 = _this.props,\n prefixCls = _this$props2.prefixCls,\n destroyPopupOnHide = _this$props2.destroyPopupOnHide,\n popupClassName = _this$props2.popupClassName,\n onPopupAlign = _this$props2.onPopupAlign,\n popupMotion = _this$props2.popupMotion,\n popupAnimation = _this$props2.popupAnimation,\n popupTransitionName = _this$props2.popupTransitionName,\n popupStyle = _this$props2.popupStyle,\n mask = _this$props2.mask,\n maskAnimation = _this$props2.maskAnimation,\n maskTransitionName = _this$props2.maskTransitionName,\n maskMotion = _this$props2.maskMotion,\n zIndex = _this$props2.zIndex,\n popup = _this$props2.popup,\n stretch = _this$props2.stretch,\n alignPoint = _this$props2.alignPoint,\n mobile = _this$props2.mobile,\n forceRender = _this$props2.forceRender;\n var _this$state = _this.state,\n popupVisible = _this$state.popupVisible,\n point = _this$state.point;\n\n var align = _this.getPopupAlign();\n\n var mouseProps = {};\n\n if (_this.isMouseEnterToShow()) {\n mouseProps.onMouseEnter = _this.onPopupMouseEnter;\n }\n\n if (_this.isMouseLeaveToHide()) {\n mouseProps.onMouseLeave = _this.onPopupMouseLeave;\n }\n\n mouseProps.onMouseDown = _this.onPopupMouseDown;\n mouseProps.onTouchStart = _this.onPopupMouseDown;\n return /*#__PURE__*/React.createElement(Popup, _extends({\n prefixCls: prefixCls,\n destroyPopupOnHide: destroyPopupOnHide,\n visible: popupVisible,\n point: alignPoint && point,\n className: popupClassName,\n align: align,\n onAlign: onPopupAlign,\n animation: popupAnimation,\n getClassNameFromAlign: _this.getPopupClassNameFromAlign\n }, mouseProps, {\n stretch: stretch,\n getRootDomNode: _this.getRootDomNode,\n style: popupStyle,\n mask: mask,\n zIndex: zIndex,\n transitionName: popupTransitionName,\n maskAnimation: maskAnimation,\n maskTransitionName: maskTransitionName,\n maskMotion: maskMotion,\n ref: _this.popupRef,\n motion: popupMotion,\n mobile: mobile,\n forceRender: forceRender\n }), typeof popup === 'function' ? popup() : popup);\n };\n\n _this.attachParent = function (popupContainer) {\n raf.cancel(_this.attachId);\n var _this$props3 = _this.props,\n getPopupContainer = _this$props3.getPopupContainer,\n getDocument = _this$props3.getDocument;\n\n var domNode = _this.getRootDomNode();\n\n var mountNode;\n\n if (!getPopupContainer) {\n mountNode = getDocument(_this.getRootDomNode()).body;\n } else if (domNode || getPopupContainer.length === 0) {\n // Compatible for legacy getPopupContainer with domNode argument.\n // If no need `domNode` argument, will call directly.\n // https://codesandbox.io/s/eloquent-mclean-ss93m?file=/src/App.js\n mountNode = getPopupContainer(domNode);\n }\n\n if (mountNode) {\n mountNode.appendChild(popupContainer);\n } else {\n // Retry after frame render in case parent not ready\n _this.attachId = raf(function () {\n _this.attachParent(popupContainer);\n });\n }\n };\n\n _this.getContainer = function () {\n var getDocument = _this.props.getDocument;\n var popupContainer = getDocument(_this.getRootDomNode()).createElement('div'); // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n\n _this.attachParent(popupContainer);\n\n return popupContainer;\n };\n\n _this.setPoint = function (point) {\n var alignPoint = _this.props.alignPoint;\n if (!alignPoint || !point) return;\n\n _this.setState({\n point: {\n pageX: point.pageX,\n pageY: point.pageY\n }\n });\n };\n\n _this.handlePortalUpdate = function () {\n if (_this.state.prevPopupVisible !== _this.state.popupVisible) {\n _this.props.afterPopupVisibleChange(_this.state.popupVisible);\n }\n };\n\n _this.triggerContextValue = {\n onPopupMouseDown: _this.onPopupMouseDown\n };\n\n var _popupVisible;\n\n if ('popupVisible' in props) {\n _popupVisible = !!props.popupVisible;\n } else {\n _popupVisible = !!props.defaultPopupVisible;\n }\n\n _this.state = {\n prevPopupVisible: _popupVisible,\n popupVisible: _popupVisible\n };\n ALL_HANDLERS.forEach(function (h) {\n _this[\"fire\".concat(h)] = function (e) {\n _this.fireEvents(h, e);\n };\n });\n return _this;\n }\n\n _createClass(Trigger, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.componentDidUpdate();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var props = this.props;\n var state = this.state; // We must listen to `mousedown` or `touchstart`, edge case:\n // https://github.com/ant-design/ant-design/issues/5804\n // https://github.com/react-component/calendar/issues/250\n // https://github.com/react-component/trigger/issues/50\n\n if (state.popupVisible) {\n var currentDocument;\n\n if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {\n currentDocument = props.getDocument(this.getRootDomNode());\n this.clickOutsideHandler = addEventListener(currentDocument, 'mousedown', this.onDocumentClick);\n } // always hide on mobile\n\n\n if (!this.touchOutsideHandler) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.touchOutsideHandler = addEventListener(currentDocument, 'touchstart', this.onDocumentClick);\n } // close popup when trigger type contains 'onContextMenu' and document is scrolling.\n\n\n if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.contextMenuOutsideHandler1 = addEventListener(currentDocument, 'scroll', this.onContextMenuClose);\n } // close popup when trigger type contains 'onContextMenu' and window is blur.\n\n\n if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {\n this.contextMenuOutsideHandler2 = addEventListener(window, 'blur', this.onContextMenuClose);\n }\n\n return;\n }\n\n this.clearOutsideHandler();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n clearTimeout(this.mouseDownTimeout);\n raf.cancel(this.attachId);\n }\n }, {\n key: \"getPopupDomNode\",\n value: function getPopupDomNode() {\n var _this$popupRef$curren2;\n\n // for test\n return ((_this$popupRef$curren2 = this.popupRef.current) === null || _this$popupRef$curren2 === void 0 ? void 0 : _this$popupRef$curren2.getElement()) || null;\n }\n }, {\n key: \"getPopupAlign\",\n value: function getPopupAlign() {\n var props = this.props;\n var popupPlacement = props.popupPlacement,\n popupAlign = props.popupAlign,\n builtinPlacements = props.builtinPlacements;\n\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n\n return popupAlign;\n }\n }, {\n key: \"setPopupVisible\",\n value:\n /**\n * @param popupVisible Show or not the popup element\n * @param event SyntheticEvent, used for `pointAlign`\n */\n function setPopupVisible(popupVisible, event) {\n var alignPoint = this.props.alignPoint;\n var prevPopupVisible = this.state.popupVisible;\n this.clearDelayTimer();\n\n if (prevPopupVisible !== popupVisible) {\n if (!('popupVisible' in this.props)) {\n this.setState({\n popupVisible: popupVisible,\n prevPopupVisible: prevPopupVisible\n });\n }\n\n this.props.onPopupVisibleChange(popupVisible);\n } // Always record the point position since mouseEnterDelay will delay the show\n\n\n if (alignPoint && event && popupVisible) {\n this.setPoint(event);\n }\n }\n }, {\n key: \"delaySetPopupVisible\",\n value: function delaySetPopupVisible(visible, delayS, event) {\n var _this2 = this;\n\n var delay = delayS * 1000;\n this.clearDelayTimer();\n\n if (delay) {\n var point = event ? {\n pageX: event.pageX,\n pageY: event.pageY\n } : null;\n this.delayTimer = window.setTimeout(function () {\n _this2.setPopupVisible(visible, point);\n\n _this2.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible, event);\n }\n }\n }, {\n key: \"clearDelayTimer\",\n value: function clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n }\n }, {\n key: \"clearOutsideHandler\",\n value: function clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n\n if (this.contextMenuOutsideHandler1) {\n this.contextMenuOutsideHandler1.remove();\n this.contextMenuOutsideHandler1 = null;\n }\n\n if (this.contextMenuOutsideHandler2) {\n this.contextMenuOutsideHandler2.remove();\n this.contextMenuOutsideHandler2 = null;\n }\n\n if (this.touchOutsideHandler) {\n this.touchOutsideHandler.remove();\n this.touchOutsideHandler = null;\n }\n }\n }, {\n key: \"createTwoChains\",\n value: function createTwoChains(event) {\n var childPros = this.props.children.props;\n var props = this.props;\n\n if (childPros[event] && props[event]) {\n return this[\"fire\".concat(event)];\n }\n\n return childPros[event] || props[event];\n }\n }, {\n key: \"isClickToShow\",\n value: function isClickToShow() {\n var _this$props4 = this.props,\n action = _this$props4.action,\n showAction = _this$props4.showAction;\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isContextMenuOnly\",\n value: function isContextMenuOnly() {\n var action = this.props.action;\n return action === 'contextMenu' || action.length === 1 && action[0] === 'contextMenu';\n }\n }, {\n key: \"isContextMenuToShow\",\n value: function isContextMenuToShow() {\n var _this$props5 = this.props,\n action = _this$props5.action,\n showAction = _this$props5.showAction;\n return action.indexOf('contextMenu') !== -1 || showAction.indexOf('contextMenu') !== -1;\n }\n }, {\n key: \"isClickToHide\",\n value: function isClickToHide() {\n var _this$props6 = this.props,\n action = _this$props6.action,\n hideAction = _this$props6.hideAction;\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isMouseEnterToShow\",\n value: function isMouseEnterToShow() {\n var _this$props7 = this.props,\n action = _this$props7.action,\n showAction = _this$props7.showAction;\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n }\n }, {\n key: \"isMouseLeaveToHide\",\n value: function isMouseLeaveToHide() {\n var _this$props8 = this.props,\n action = _this$props8.action,\n hideAction = _this$props8.hideAction;\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n }\n }, {\n key: \"isFocusToShow\",\n value: function isFocusToShow() {\n var _this$props9 = this.props,\n action = _this$props9.action,\n showAction = _this$props9.showAction;\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n }\n }, {\n key: \"isBlurToHide\",\n value: function isBlurToHide() {\n var _this$props10 = this.props,\n action = _this$props10.action,\n hideAction = _this$props10.hideAction;\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n }\n }, {\n key: \"forcePopupAlign\",\n value: function forcePopupAlign() {\n if (this.state.popupVisible) {\n var _this$popupRef$curren3;\n\n (_this$popupRef$curren3 = this.popupRef.current) === null || _this$popupRef$curren3 === void 0 ? void 0 : _this$popupRef$curren3.forceAlign();\n }\n }\n }, {\n key: \"fireEvents\",\n value: function fireEvents(type, e) {\n var childCallback = this.props.children.props[type];\n\n if (childCallback) {\n childCallback(e);\n }\n\n var callback = this.props[type];\n\n if (callback) {\n callback(e);\n }\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setPopupVisible(false);\n }\n }, {\n key: \"render\",\n value: function render() {\n var popupVisible = this.state.popupVisible;\n var _this$props11 = this.props,\n children = _this$props11.children,\n forceRender = _this$props11.forceRender,\n alignPoint = _this$props11.alignPoint,\n className = _this$props11.className,\n autoDestroy = _this$props11.autoDestroy;\n var child = React.Children.only(children);\n var newChildProps = {\n key: 'trigger'\n }; // ============================== Visible Handlers ==============================\n // >>> ContextMenu\n\n if (this.isContextMenuToShow()) {\n newChildProps.onContextMenu = this.onContextMenu;\n } else {\n newChildProps.onContextMenu = this.createTwoChains('onContextMenu');\n } // >>> Click\n\n\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.onClick = this.onClick;\n newChildProps.onMouseDown = this.onMouseDown;\n newChildProps.onTouchStart = this.onTouchStart;\n } else {\n newChildProps.onClick = this.createTwoChains('onClick');\n newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n newChildProps.onTouchStart = this.createTwoChains('onTouchStart');\n } // >>> Hover(enter)\n\n\n if (this.isMouseEnterToShow()) {\n newChildProps.onMouseEnter = this.onMouseEnter; // Point align\n\n if (alignPoint) {\n newChildProps.onMouseMove = this.onMouseMove;\n }\n } else {\n newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n } // >>> Hover(leave)\n\n\n if (this.isMouseLeaveToHide()) {\n newChildProps.onMouseLeave = this.onMouseLeave;\n } else {\n newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n } // >>> Focus\n\n\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.onFocus = this.onFocus;\n newChildProps.onBlur = this.onBlur;\n } else {\n newChildProps.onFocus = this.createTwoChains('onFocus');\n newChildProps.onBlur = this.createTwoChains('onBlur');\n } // =================================== Render ===================================\n\n\n var childrenClassName = classNames(child && child.props && child.props.className, className);\n\n if (childrenClassName) {\n newChildProps.className = childrenClassName;\n }\n\n var cloneProps = _objectSpread({}, newChildProps);\n\n if (supportRef(child)) {\n cloneProps.ref = composeRef(this.triggerRef, child.ref);\n }\n\n var trigger = /*#__PURE__*/React.cloneElement(child, cloneProps);\n var portal; // prevent unmounting after it's rendered\n\n if (popupVisible || this.popupRef.current || forceRender) {\n portal = /*#__PURE__*/React.createElement(PortalComponent, {\n key: \"portal\",\n getContainer: this.getContainer,\n didUpdate: this.handlePortalUpdate\n }, this.getComponent());\n }\n\n if (!popupVisible && autoDestroy) {\n portal = null;\n }\n\n return /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: this.triggerContextValue\n }, trigger, portal);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, prevState) {\n var popupVisible = _ref.popupVisible;\n var newState = {};\n\n if (popupVisible !== undefined && prevState.popupVisible !== popupVisible) {\n newState.popupVisible = popupVisible;\n newState.prevPopupVisible = prevState.popupVisible;\n }\n\n return newState;\n }\n }]);\n\n return Trigger;\n }(React.Component);\n\n Trigger.contextType = TriggerContext;\n Trigger.defaultProps = {\n prefixCls: 'rc-trigger-popup',\n getPopupClassNameFromAlign: returnEmptyString,\n getDocument: returnDocument,\n onPopupVisibleChange: noop,\n afterPopupVisibleChange: noop,\n onPopupAlign: noop,\n popupClassName: '',\n mouseEnterDelay: 0,\n mouseLeaveDelay: 0.1,\n focusDelay: 0,\n blurDelay: 0.15,\n popupStyle: {},\n destroyPopupOnHide: false,\n popupAlign: {},\n defaultPopupVisible: false,\n mask: false,\n maskClosable: true,\n action: [],\n showAction: [],\n hideAction: [],\n autoDestroy: false\n };\n return Trigger;\n}\nexport default generateTrigger(Portal);","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nexport var placements = {\n left: {\n points: ['cr', 'cl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n right: {\n points: ['cl', 'cr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import * as React from 'react';\n\nvar Content = function Content(props) {\n var overlay = props.overlay,\n prefixCls = props.prefixCls,\n id = props.id,\n overlayInnerStyle = props.overlayInnerStyle;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inner\"),\n id: id,\n role: \"tooltip\",\n style: overlayInnerStyle\n }, typeof overlay === 'function' ? overlay() : overlay);\n};\n\nexport default Content;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { useRef, useImperativeHandle, forwardRef } from 'react';\nimport Trigger from 'rc-trigger';\nimport { placements } from './placements';\nimport Content from './Content';\n\nvar Tooltip = function Tooltip(props, ref) {\n var overlayClassName = props.overlayClassName,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n overlayStyle = props.overlayStyle,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-tooltip' : _props$prefixCls,\n children = props.children,\n onVisibleChange = props.onVisibleChange,\n afterVisibleChange = props.afterVisibleChange,\n transitionName = props.transitionName,\n animation = props.animation,\n motion = props.motion,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'right' : _props$placement,\n _props$align = props.align,\n align = _props$align === void 0 ? {} : _props$align,\n _props$destroyTooltip = props.destroyTooltipOnHide,\n destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip,\n defaultVisible = props.defaultVisible,\n getTooltipContainer = props.getTooltipContainer,\n overlayInnerStyle = props.overlayInnerStyle,\n restProps = _objectWithoutProperties(props, [\"overlayClassName\", \"trigger\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"prefixCls\", \"children\", \"onVisibleChange\", \"afterVisibleChange\", \"transitionName\", \"animation\", \"motion\", \"placement\", \"align\", \"destroyTooltipOnHide\", \"defaultVisible\", \"getTooltipContainer\", \"overlayInnerStyle\"]);\n\n var domRef = useRef(null);\n useImperativeHandle(ref, function () {\n return domRef.current;\n });\n\n var extraProps = _objectSpread({}, restProps);\n\n if ('visible' in props) {\n extraProps.popupVisible = props.visible;\n }\n\n var getPopupElement = function getPopupElement() {\n var _props$arrowContent = props.arrowContent,\n arrowContent = _props$arrowContent === void 0 ? null : _props$arrowContent,\n overlay = props.overlay,\n id = props.id;\n return [/*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\"),\n key: \"arrow\"\n }, arrowContent), /*#__PURE__*/React.createElement(Content, {\n key: \"content\",\n prefixCls: prefixCls,\n id: id,\n overlay: overlay,\n overlayInnerStyle: overlayInnerStyle\n })];\n };\n\n var destroyTooltip = false;\n var autoDestroy = false;\n\n if (typeof destroyTooltipOnHide === 'boolean') {\n destroyTooltip = destroyTooltipOnHide;\n } else if (destroyTooltipOnHide && _typeof(destroyTooltipOnHide) === 'object') {\n var keepParent = destroyTooltipOnHide.keepParent;\n destroyTooltip = keepParent === true;\n autoDestroy = keepParent === false;\n }\n\n return /*#__PURE__*/React.createElement(Trigger, _extends({\n popupClassName: overlayClassName,\n prefixCls: prefixCls,\n popup: getPopupElement,\n action: trigger,\n builtinPlacements: placements,\n popupPlacement: placement,\n ref: domRef,\n popupAlign: align,\n getPopupContainer: getTooltipContainer,\n onPopupVisibleChange: onVisibleChange,\n afterPopupVisibleChange: afterVisibleChange,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupMotion: motion,\n defaultPopupVisible: defaultVisible,\n destroyPopupOnHide: destroyTooltip,\n autoDestroy: autoDestroy,\n mouseLeaveDelay: mouseLeaveDelay,\n popupStyle: overlayStyle,\n mouseEnterDelay: mouseEnterDelay\n }, extraProps), children);\n};\n\nexport default /*#__PURE__*/forwardRef(Tooltip);","import Tooltip from './Tooltip';\nexport default Tooltip;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Tooltip from 'rc-tooltip';\nimport { composeRef } from \"rc-util/es/ref\";\nimport raf from \"rc-util/es/raf\";\nvar SliderTooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var visible = props.visible,\n overlay = props.overlay;\n var innerRef = React.useRef(null);\n var tooltipRef = composeRef(ref, innerRef);\n var rafRef = React.useRef(null);\n\n function cancelKeepAlign() {\n raf.cancel(rafRef.current);\n }\n\n function keepAlign() {\n rafRef.current = raf(function () {\n var _innerRef$current;\n\n (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.forcePopupAlign();\n });\n }\n\n React.useEffect(function () {\n if (visible) {\n keepAlign();\n } else {\n cancelKeepAlign();\n }\n\n return cancelKeepAlign;\n }, [visible, overlay]);\n return /*#__PURE__*/React.createElement(Tooltip, _extends({\n ref: tooltipRef\n }, props));\n});\nexport default SliderTooltip;","import Slider from './Slider';\nimport Range from './Range';\nimport Handle from './Handle';\nimport createSliderWithTooltip from './createSliderWithTooltip';\nimport SliderTooltip from './common/SliderTooltip';\nvar InternalSlider = Slider;\nInternalSlider.Range = Range;\nInternalSlider.Handle = Handle;\nInternalSlider.createSliderWithTooltip = createSliderWithTooltip;\nexport default InternalSlider;\nexport { Range, Handle, createSliderWithTooltip, SliderTooltip };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from 'react';\nimport Tooltip from './common/SliderTooltip';\nimport Handle from './Handle';\nexport default function createSliderWithTooltip(Component) {\n var _a; // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\n return _a = /*#__PURE__*/function (_React$Component) {\n _inherits(ComponentWrapper, _React$Component);\n\n var _super = _createSuper(ComponentWrapper);\n\n function ComponentWrapper() {\n var _this;\n\n _classCallCheck(this, ComponentWrapper);\n\n _this = _super.apply(this, arguments);\n _this.state = {\n visibles: {}\n };\n\n _this.handleTooltipVisibleChange = function (index, visible) {\n _this.setState(function (prevState) {\n return {\n visibles: _objectSpread(_objectSpread({}, prevState.visibles), {}, _defineProperty({}, index, visible))\n };\n });\n };\n\n _this.handleWithTooltip = function (_ref) {\n var value = _ref.value,\n dragging = _ref.dragging,\n index = _ref.index,\n disabled = _ref.disabled,\n restProps = _objectWithoutProperties(_ref, [\"value\", \"dragging\", \"index\", \"disabled\"]);\n\n var _this$props = _this.props,\n tipFormatter = _this$props.tipFormatter,\n tipProps = _this$props.tipProps,\n handleStyle = _this$props.handleStyle,\n getTooltipContainer = _this$props.getTooltipContainer;\n\n var _tipProps$prefixCls = tipProps.prefixCls,\n prefixCls = _tipProps$prefixCls === void 0 ? 'rc-slider-tooltip' : _tipProps$prefixCls,\n _tipProps$overlay = tipProps.overlay,\n overlay = _tipProps$overlay === void 0 ? tipFormatter(value) : _tipProps$overlay,\n _tipProps$placement = tipProps.placement,\n placement = _tipProps$placement === void 0 ? 'top' : _tipProps$placement,\n _tipProps$visible = tipProps.visible,\n visible = _tipProps$visible === void 0 ? false : _tipProps$visible,\n restTooltipProps = _objectWithoutProperties(tipProps, [\"prefixCls\", \"overlay\", \"placement\", \"visible\"]);\n\n var handleStyleWithIndex;\n\n if (Array.isArray(handleStyle)) {\n handleStyleWithIndex = handleStyle[index] || handleStyle[0];\n } else {\n handleStyleWithIndex = handleStyle;\n }\n\n return /*#__PURE__*/React.createElement(Tooltip, _extends({}, restTooltipProps, {\n getTooltipContainer: getTooltipContainer,\n prefixCls: prefixCls,\n overlay: overlay,\n placement: placement,\n visible: !disabled && (_this.state.visibles[index] || dragging) || visible,\n key: index\n }), /*#__PURE__*/React.createElement(Handle, _extends({}, restProps, {\n style: _objectSpread({}, handleStyleWithIndex),\n value: value,\n onMouseEnter: function onMouseEnter() {\n return _this.handleTooltipVisibleChange(index, true);\n },\n onMouseLeave: function onMouseLeave() {\n return _this.handleTooltipVisibleChange(index, false);\n }\n })));\n };\n\n return _this;\n }\n\n _createClass(ComponentWrapper, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(Component, _extends({}, this.props, {\n handle: this.handleWithTooltip\n }));\n }\n }]);\n\n return ComponentWrapper;\n }(React.Component), _a.defaultProps = {\n tipFormatter: function tipFormatter(value) {\n return value;\n },\n handleStyle: [{}],\n tipProps: {},\n getTooltipContainer: function getTooltipContainer(node) {\n return node.parentNode;\n }\n }, _a;\n}","import { Range } from 'rc-slider';\r\nimport * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { Input } from '../Common/Input';\r\n\r\nexport interface PriceRangeProps {\r\n values: PriceRangeValues;\r\n currencyCode: string;\r\n onChange: (priceValues: number[]) => void;\r\n onMinChange: (value: string) => void;\r\n onMaxChange: (value: string) => void;\r\n onAfterChange: () => void;\r\n}\r\n\r\nexport interface PriceRangeValues {\r\n selected: number[];\r\n thresholds: number[];\r\n slider: number[];\r\n input: string[];\r\n}\r\n\r\ninterface PriceRangeState {\r\n minValue: string;\r\n maxValue: string;\r\n}\r\n\r\nexport class PriceRange extends React.Component {\r\n constructor(props: PriceRangeProps) {\r\n super(props);\r\n\r\n this.state = {\r\n minValue: props.values.input[0],\r\n maxValue: props.values.input[1]\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly) {\r\n if (prevProps.values.input[0] != this.props.values.input[0] || prevProps.values.input[1] != this.props.values.input[1]) {\r\n this.setState({\r\n minValue: this.props.values.input[0],\r\n maxValue: this.props.values.input[1]\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n this.props.onAfterChange()}\r\n onChange={(values) => this.props.onChange(values)}\r\n value={this.props.values.slider}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n e.target.select()}\r\n onChange={(value) => this.setState({ minValue: this.getValue(value) })}\r\n onAfterChange={() => {\r\n this.props.onMinChange(this.state.minValue);\r\n }}\r\n />\r\n {this.props.currencyCode}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n e.target.select()}\r\n onChange={(value) => this.setState({ maxValue: this.getValue(value) })}\r\n onAfterChange={() => {\r\n this.props.onMaxChange(this.state.maxValue);\r\n }}\r\n />\r\n {this.props.currencyCode}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n private getValue = (value: string) => {\r\n return value.replace(/[^0-9.]/g, '');\r\n };\r\n\r\n private formatPrice = (price: string) => {\r\n return Math.ceil(parseFloat(price));\r\n };\r\n}\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { SelectedOption } from '../ProductFilters/SelectedOption';\r\n\r\ninterface SelectedFilterListProps {\r\n isAIEnabled: boolean;\r\n selectedOptions: SelectedOption[];\r\n onRemoveOption: (filterKey: string, subFilterKey: string | null, optionKey: string, isSelected: boolean, isSubFilter: boolean) => void;\r\n onReset: () => void;\r\n showRemoveAll: boolean;\r\n}\r\n\r\nexport const SelectedFilterList: React.FC = ({ isAIEnabled, selectedOptions, onRemoveOption, onReset, showRemoveAll }) => {\r\n const renderSelectedFilters = (selectedOptions: SelectedOption[]) => {\r\n return selectedOptions.map((selectedFilter, index) => {\r\n return (\r\n
  • \r\n \r\n onRemoveOption(selectedFilter.filterKey, selectedFilter.subFilterKey, selectedFilter.optionKey, false, selectedFilter.isSubFilter)\r\n }\r\n >\r\n {selectedFilter.value}\r\n \r\n
  • \r\n );\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n {renderSelectedFilters(selectedOptions)}\r\n {showRemoveAll && selectedOptions.length > 1 && (\r\n
  • \r\n \r\n
  • \r\n )}\r\n
    \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { IdentifierPair } from '../../AiSearch/Models/IdentifierPair.csharp';\r\nimport { GoogleTagManager } from '../../Tracking/GoogleTagManager/GoogleTagManager';\r\nimport { SelectedOption } from '../ProductFilters/SelectedOption';\r\n\r\nexport interface LoadedTag {\r\n key: string;\r\n removeSearchQuery: boolean;\r\n filters: IdentifierPair[];\r\n}\r\n\r\nexport interface TagListProps {\r\n leadInText?: string;\r\n requestId: string;\r\n searchTagsUrl: string;\r\n selectedOptions: SelectedOption[];\r\n isAIEnabled?: boolean;\r\n onAddOption: (filterKey: string, subFilterKey: string | null, optionKey: string, isSelected: boolean) => void;\r\n onClick: (searchId: string, tagName: string, removeSearchQuery: boolean, filters: { key: string; value: string }[], callback?: () => void) => void;\r\n fullWidth?: boolean;\r\n limit?: number;\r\n loadedTags: LoadedTag[];\r\n disableFilters?: boolean;\r\n setFiltersVisible?: () => void;\r\n}\r\n\r\nexport const TagList: React.FC = (props) => {\r\n const renderTags = () => {\r\n const tags = props.limit !== undefined ? props.loadedTags.slice(0, props.limit) : props.loadedTags;\r\n\r\n return tags.map((tag, index) => {\r\n return (\r\n
  • \r\n {\r\n props.onClick(\r\n props.requestId,\r\n tag.key,\r\n tag.removeSearchQuery,\r\n tag.filters.map((filter) => {\r\n GoogleTagManager.applySearchTag(tag.key, index);\r\n return { key: filter.type, value: filter.value };\r\n })\r\n );\r\n }}\r\n >\r\n {tag.key}\r\n \r\n
  • \r\n );\r\n });\r\n };\r\n\r\n return (\r\n
    0 && 'TagList__Filled', props.fullWidth && 'TagList__Container--FullWidth')}>\r\n
    \r\n {props.loadedTags.length > 0 && props.leadInText && (\r\n

    {props.leadInText}

    \r\n )}\r\n
      \r\n {!props.disableFilters && (\r\n
    • \r\n \r\n {getTranslation(keys['productFilters.open'])}\r\n {props.isAIEnabled && {getTranslation(keys['productFilters.filters'])}}\r\n {props.isAIEnabled && getTranslation(keys['productFilters.filters']) && props.selectedOptions.length > 0 && (\r\n {props.selectedOptions.length} \r\n )}\r\n \r\n
    • \r\n )}\r\n {renderTags()}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { FilterOptionViewModel } from '../FilterOptionViewModel.csharp';\r\n\r\ninterface CategoriesTreeCategoryProps {\r\n category: FilterOptionViewModel;\r\n categoryKey: string;\r\n onChangeOption: (filterKey: string, subfilterKey: string | null, optionKey: string, isSelected: boolean, isSubfilter?: boolean) => void;\r\n}\r\n\r\nexport const CategoriesTreeCategory = ({ category, onChangeOption, categoryKey }: CategoriesTreeCategoryProps) => {\r\n return (\r\n
      \r\n {category.children.map((children) =>\r\n children.count > 0 ? (\r\n onChangeOption(categoryKey, category.key, children.key, true, true)}\r\n >\r\n {children.value} ({children.count})\r\n \r\n ) : null\r\n )}\r\n
    \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useRef } from 'react';\r\n\r\nimport Accordion, { ItemStatus } from '../../../ReactComponents/Accordion/Accordion';\r\nimport AccordionItem from '../../../ReactComponents/Accordion/AccordionItem';\r\nimport { isMobile } from '../../../ReactComponents/IsMobile';\r\nimport { FilterOptionViewModel } from '../FilterOptionViewModel.csharp';\r\nimport { FilterViewModel } from '../FilterViewModel.csharp';\r\nimport { CategoriesTreeCategory } from './CategoriesTreeCategory';\r\n\r\ninterface CategoriesTreeProps {\r\n container: HTMLDivElement | null;\r\n categoryFilters: FilterViewModel;\r\n onChangeOption: (\r\n filterKey: string,\r\n subfilterKey: string | null,\r\n optionKey: string,\r\n isSelected: boolean,\r\n isSubfilter?: boolean,\r\n callback?: () => void\r\n ) => void;\r\n isProductsLoading?: boolean;\r\n}\r\n\r\nexport const CategoriesTree = ({ categoryFilters, onChangeOption, container, isProductsLoading }: CategoriesTreeProps) => {\r\n const isProductsLoadingPrevious = useRef(isProductsLoading);\r\n\r\n const isCategoryActive = (category: FilterOptionViewModel): boolean => {\r\n return category.isSelected || category.children.some((x) => x.isSelected);\r\n };\r\n\r\n const buildStatus = () => {\r\n return categoryFilters.options.map((category) => {\r\n return { isActive: isCategoryActive(category), isExpanded: false };\r\n });\r\n };\r\n\r\n const [itemsStatus, setItemsStatus] = React.useState(buildStatus());\r\n\r\n const [activeItemsStatus, setActiveItemsStatus] = React.useState(itemsStatus);\r\n\r\n useEffect(() => {\r\n setActiveItemsStatus(itemsStatus);\r\n }, [categoryFilters]);\r\n\r\n useEffect(() => {\r\n if (isProductsLoading && !isProductsLoadingPrevious.current) {\r\n setItemsStatus(buildStatus());\r\n }\r\n isProductsLoadingPrevious.current = isProductsLoading;\r\n }, [isProductsLoading]);\r\n\r\n const handleOnClick = (option: FilterOptionViewModel, e: HTMLButtonElement | null) => {\r\n const scrollDelay = 1;\r\n\r\n onChangeOption(categoryFilters.key, null, option.key, true, false, () => {\r\n setTimeout(() => {\r\n if (isMobile() && e && container) {\r\n container.scrollTo({ top: e.offsetTop, behavior: 'smooth' });\r\n }\r\n }, scrollDelay);\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {categoryFilters.options.map((option) =>\r\n option.count > 0 ? (\r\n handleOnClick(option, e)}\r\n className={classNames(isCategoryActive(option) && 'CategoriesTree__CategoryHeading--Active')}\r\n >\r\n \r\n \r\n ) : null\r\n )}\r\n \r\n
    \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nimport { ContentReference } from '../../../ContentReference.csharp';\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport Accordion, { ItemStatus } from '../../ReactComponents/Accordion/Accordion';\r\nimport AccordionItem from '../../ReactComponents/Accordion/AccordionItem';\r\nimport { Button, ButtonSize } from '../../ReactComponents/Buttons/Button';\r\nimport { ScrollLock } from '../../ReactComponents/ScrollLock/ScrollLock';\r\nimport { PriceRange, PriceRangeValues } from '../PriceRange/PriceRange';\r\nimport { SelectedFilterList } from '../SelectedFilterList/SelectedFilterList';\r\nimport { LoadedTag, TagList } from '../TagList/TagList';\r\nimport { CategoriesTree } from './CategoriesTree/CategoriesTree';\r\nimport { FilterOptionViewModel } from './FilterOptionViewModel.csharp';\r\nimport { FilterViewModel } from './FilterViewModel.csharp';\r\nimport { SelectedOption } from './SelectedOption';\r\n\r\ninterface ProductFiltersProps {\r\n links: FilterViewModel;\r\n filters: FilterViewModel[];\r\n searchQuery: string;\r\n selectedOptions: SelectedOption[];\r\n productAmount: number;\r\n priceRange: PriceRangeValues;\r\n currencyCode: string;\r\n onChangeOption: (\r\n filterKey: string,\r\n subfilterKey: string | null,\r\n optionKey: string,\r\n isSelected: boolean,\r\n isSubfilter?: boolean,\r\n callback?: () => void\r\n ) => void;\r\n onChangePriceRange: (priceValues: number[]) => void;\r\n onChangePriceInputMin: (value: string) => void;\r\n onChangePriceInputMax: (value: string) => void;\r\n onAfterChangePrice: () => void;\r\n onReset: () => void;\r\n link: ContentReference;\r\n isAIEnabled: boolean;\r\n leadInText?: string;\r\n requestId?: string;\r\n searchTagsUrl?: string;\r\n onAddOption?: (filterKey: string, subFilterKey: string | null, optionKey: string, isSelected: boolean) => void;\r\n onClick?: (searchId: string, tagName: string, removeSearchQuery: boolean, filters: { key: string; value: string }[], callback?: () => void) => void;\r\n limit?: number;\r\n isProductsLoading?: boolean;\r\n loadedTags: LoadedTag[];\r\n}\r\n\r\nexport const ProductFilters = (props: ProductFiltersProps) => {\r\n const [isVisible, setIsVisible] = React.useState(false);\r\n const [expandedFilters, setExpandedFilters] = React.useState([]);\r\n const filtersRef = React.useRef(null);\r\n const filtersContainerRef = React.useRef(null);\r\n const filtersContentRef = React.useRef(null);\r\n const [categoryFilters, setCategoryFilters] = React.useState();\r\n\r\n useEffect(() => {\r\n filtersRef.current && filtersRef.current.addEventListener('click', (event) => handleClickOutside(event));\r\n });\r\n\r\n useEffect(() => {\r\n const categoryFiltersIndex = props.filters.findIndex((x) => x.key === 'category');\r\n\r\n if (categoryFiltersIndex >= 0) {\r\n setCategoryFilters(props.filters[categoryFiltersIndex]);\r\n }\r\n }, [props]);\r\n\r\n const renderFilter = (filterKey: string, options: FilterOptionViewModel[]) => {\r\n const items = options.map((option, index) => {\r\n const optionId = filterKey + option.key;\r\n return (\r\n
  • \r\n
    \r\n props.onChangeOption(filterKey, null, option.key, !option.isSelected)}\r\n id={optionId}\r\n />\r\n \r\n
    \r\n
  • \r\n );\r\n });\r\n\r\n return <>{items.length > 0 &&
      {items}
    };\r\n };\r\n\r\n const renderSubcategories = () => {\r\n const linkQuery = getLink();\r\n\r\n return props.links && props.links.options?.length > 0 ? (\r\n
    \r\n {props.links.url && (\r\n \r\n {props.links.label}\r\n \r\n )}\r\n {!props.links.url &&
    {props.links.label}
    }\r\n \r\n
    \r\n ) : null;\r\n };\r\n\r\n const getLink = () => {\r\n const index = props.searchQuery.indexOf('page=');\r\n return index < 0 ? props.searchQuery : props.searchQuery.substr(0, index) + 'page=1' + props.searchQuery.substr(index + 6);\r\n };\r\n\r\n const handleClickOutside = (event: MouseEvent) => {\r\n const filtersContainer = filtersContainerRef.current;\r\n\r\n if (filtersContainer && !filtersContainer.contains(event.target as Node)) {\r\n setIsVisible(false);\r\n }\r\n };\r\n\r\n const setFiltersVisible = () => {\r\n setIsVisible(true);\r\n };\r\n\r\n const getFilterKeys = (): string[] => {\r\n const keys = props.filters.map((x) => x.key);\r\n keys.push('price');\r\n const categoryIndex = keys.indexOf('category');\r\n categoryIndex >= 0 && keys.splice(categoryIndex, 1);\r\n return keys;\r\n };\r\n\r\n const getFiltersWithoutCategory = (): FilterViewModel[] => {\r\n const categoryFilterIndex = props.filters.findIndex((x) => x.key === 'category');\r\n return categoryFilterIndex > -1 ? props.filters.slice(0, categoryFilterIndex).concat(props.filters.slice(categoryFilterIndex + 1)) : props.filters;\r\n };\r\n\r\n const buildItemStatus = (): ItemStatus[] => {\r\n const filtersWithoutCategory = getFiltersWithoutCategory();\r\n const newStatus = filtersWithoutCategory.map((x) => {\r\n const isExpanded = expandedFilters.indexOf(x.key) > -1;\r\n return {\r\n isExpanded: isExpanded,\r\n isActive: isExpanded\r\n };\r\n });\r\n\r\n const isPriceExpanded = expandedFilters.indexOf('price') > -1;\r\n newStatus.push({ isExpanded: isPriceExpanded, isActive: isPriceExpanded });\r\n return newStatus;\r\n };\r\n return (\r\n \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport { createBrowserHistory } from 'history';\r\nimport React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { AiSearchKeys } from '../../AiSearch/AiSearchKeys';\r\nimport { AiSearchProductFilterResultViewModel } from '../../AiSearch/Decorators/AiSearchProductFilterResultViewModel.csharp';\r\nimport { AiSearchTagsDto } from '../../AiSearch/Models/AiSearchTagsDto.csharp';\r\nimport { FirstFavouriteModal } from '../../Customers/Favourites/Components/FirstFavouriteModal/FirstFavouriteModal';\r\nimport { PriceFilterViewModel } from '../../Filtering/Api/PriceFilterViewModel.csharp';\r\nimport { ProductFilterResultViewModel } from '../../Filtering/Api/ProductFilterResultViewModel.csharp';\r\nimport { FavouritesListSortingType } from '../../Filtering/Sorting/FavouritesListSortingType.csharp';\r\nimport { ProductListSortingType } from '../../Filtering/Sorting/ProductListSortingType.csharp';\r\nimport { ProductSortingType } from '../../Filtering/Sorting/ProductSortingType.csharp';\r\nimport { SortingOptions } from '../../Filtering/Sorting/SortingOptions.csharp';\r\nimport { ProductCard } from '../../Partials/ProductCard/ProductCard';\r\nimport { ProductCardVariant } from '../../Partials/ProductCard/ProductCardVariant.csharp';\r\nimport { ProductCardViewModel } from '../../Partials/ProductCard/ProductCardViewModel.csharp';\r\nimport { clearSearchInput, ISearchEvent } from '../../Partials/Search/ClearSearchInput';\r\nimport { getFor } from '../../ReactComponents/API';\r\nimport { UserContextProvider } from '../../ReactComponents/Contexts/UserContext';\r\nimport { EventNames } from '../../ReactComponents/EventNames';\r\nimport { lockHeader } from '../../ReactComponents/LockHeader';\r\nimport { smoothScrollTo } from '../../ReactComponents/SmoothScrollTo';\r\nimport { RecommendedProducts } from '../../Recommendations/Components/RecommededProducts/RecommendedProducts';\r\nimport { GoogleTagManager } from '../../Tracking/GoogleTagManager/GoogleTagManager';\r\nimport { VisitorIntelligenceFacade } from '../../Tracking/VisitorIntelligence/VisitorIntelligenceFacade';\r\nimport { Input } from '../Common/Input';\r\nimport { Loader } from '../Loader/Loader';\r\nimport { PriceRangeValues } from '../PriceRange/PriceRange';\r\nimport { SelectedOptionList } from '../SelectedOptionList/SelectedOptionList';\r\nimport { LoadedTag, TagListProps } from '../TagList/TagList';\r\nimport { FilteredProductListProps } from './FilteredProductListProps.csharp';\r\nimport { FilterOptionViewModel } from './FilterOptionViewModel.csharp';\r\nimport { FilterViewModel } from './FilterViewModel.csharp';\r\nimport { PriceService } from './PriceService';\r\nimport { ProductFilters } from './ProductFilters';\r\nimport { SelectedOption } from './SelectedOption';\r\n\r\ninterface FilteredProductListState {\r\n productList: ProductCardViewModel[];\r\n numberOfProducts: number;\r\n filterList: FilterViewModel[];\r\n links: FilterViewModel;\r\n isLoading: boolean;\r\n searchPhrase: string;\r\n page: number;\r\n selectedPage: string;\r\n maxPage: number;\r\n priceRange: PriceRangeValues;\r\n sortingType: ProductSortingType;\r\n searchQuery?: string;\r\n resultsPerPage: number;\r\n hideReviewSnippet: boolean;\r\n searchId: string;\r\n requestId: string;\r\n isEmpty: boolean;\r\n loadedTags: LoadedTag[];\r\n tagsUsed: boolean;\r\n}\r\n\r\nexport class FilteredProductList extends React.Component {\r\n private picturesWithoutLazyLoadingAmount = 8;\r\n private searchPhraseKey = 'searchPhrase';\r\n private searchIdKey = 'searchId';\r\n private lastTagKey = 'lastTag';\r\n private priceKey = 'priceFilter';\r\n private searchKey = 'searchPhrase';\r\n private readonly previousGaTrackedSearchPhrase: React.MutableRefObject = React.createRef();\r\n\r\n constructor(props: FilteredProductListProps) {\r\n super(props);\r\n\r\n this.previousGaTrackedSearchPhrase.current = props.results.searchPhrase;\r\n this.state = {\r\n productList: props.results.products,\r\n numberOfProducts: props.results.resultsCount,\r\n resultsPerPage: props.results.resultsPerPage,\r\n filterList: props.results.filters,\r\n links: props.results.links,\r\n isLoading: false,\r\n searchPhrase: props.results.searchPhrase,\r\n page: props.results.page,\r\n selectedPage: props.results.page.toString(),\r\n maxPage: props.results.maxPage,\r\n priceRange: this.buildPriceRange(props.results.priceFilter),\r\n sortingType: props.results.sortingType,\r\n hideReviewSnippet: this.hidePowerReviews(props.results.products),\r\n searchId: this.isAISearch(props.results) ? props.results.searchId : '',\r\n requestId: this.isAISearch(props.results) ? props.results.requestId : '',\r\n isEmpty: props.results.resultsCount == 0,\r\n loadedTags: [],\r\n tagsUsed: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(EventNames.Search, this.search);\r\n this.setState({ searchQuery: window.location.search });\r\n\r\n const searchParams = new URLSearchParams(window.location.search);\r\n\r\n if (this.state.selectedPage !== '1') {\r\n searchParams.set('page', this.state.selectedPage);\r\n }\r\n\r\n const queryString = searchParams.toString();\r\n if (queryString) {\r\n history && window.history.replaceState(null, '', `?${queryString}`);\r\n }\r\n\r\n if (this.props.isProductListTrackable) {\r\n const searchPhrase = searchParams.get(this.searchPhraseKey) || '';\r\n\r\n VisitorIntelligenceFacade.TrackSearchResultsPage(\r\n searchPhrase,\r\n this.state.productList.map((p) => p.code),\r\n this.state.numberOfProducts\r\n );\r\n\r\n GoogleTagManager.viewSearchResults(searchPhrase, this.props.isAIEnabled ? 'AI' : 'Classic');\r\n }\r\n\r\n if (this.props.isAIEnabled) {\r\n this.getTags();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(EventNames.Search, this.search);\r\n window.removeEventListener('popstate', this.handleNavigationEvent);\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly) {\r\n if (this.props.isAIEnabled && prevState.requestId != this.state.requestId) {\r\n this.getTags();\r\n }\r\n\r\n if (JSON.stringify(prevProps.allowedProducts) !== JSON.stringify(this.props.allowedProducts)) {\r\n const numberOfProducts =\r\n this.props.allowedProducts && this.state.numberOfProducts > this.props.allowedProducts?.length\r\n ? this.props.allowedProducts.length\r\n : this.state.numberOfProducts;\r\n\r\n this.setState({\r\n numberOfProducts,\r\n productList: this.filterAllowedProducts(this.state.productList),\r\n searchId: this.isAISearch(this.props.results) ? this.props.results.searchId : '',\r\n requestId: this.isAISearch(this.props.results) ? this.props.results.requestId : '',\r\n isEmpty: numberOfProducts == 0\r\n });\r\n }\r\n }\r\n\r\n private categoryPageBodyRef = React.createRef();\r\n private productSortingType = this.props.sortingOptions === SortingOptions.ForProductList ? ProductListSortingType : FavouritesListSortingType;\r\n private history = typeof window !== 'undefined' ? createBrowserHistory() : undefined;\r\n private priceService = PriceService(\r\n (priceRange: PriceRangeValues, callback?: () => void) => this.setState({ priceRange }, callback),\r\n (price: number[]) => {\r\n const query = this.buildQuery(this.state.searchPhrase, this.state.filterList, price);\r\n this.runQuery(query, this.state.page, this.state.sortingType);\r\n }\r\n );\r\n\r\n render() {\r\n const renderSortingOptions = (prefix: string) => {\r\n return (\r\n \r\n {\r\n \r\n {getTranslation(keys['productFilters.sortBy'])}:\r\n \r\n }\r\n
    \r\n this.handleSortingTypeChange(Number(e.target.value))}\r\n >\r\n {Object.values(this.productSortingType)\r\n .map((key) => Number(key))\r\n .filter((key) => !isNaN(key))\r\n .map((key) => {\r\n const translationKey = (keys as unknown as Record)[`sorting.${this.productSortingType[key]}`];\r\n return (\r\n \r\n );\r\n })}\r\n \r\n
    \r\n \r\n );\r\n };\r\n\r\n const searchPhraseFilter = { filterKey: this.searchKey, optionKey: this.searchKey, value: `\"${this.state.searchPhrase}\"` };\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n {!this.state.isEmpty ? (\r\n <>\r\n
    \r\n {this.props.showFilters && (\r\n this.priceService.onChangeRange(priceValues, this.state.priceRange)}\r\n onChangePriceInputMin={(value: string) => this.priceService.onChangeInputMin(value, this.state.priceRange)}\r\n onChangePriceInputMax={(value: string) => this.priceService.onChangeInputMax(value, this.state.priceRange)}\r\n onAfterChangePrice={() => this.priceService.onAfterChange(this.state.priceRange)}\r\n currencyCode={this.props.results.priceFilter.currencyCode}\r\n onChangeOption={this.toggleOption}\r\n onReset={() => this.resetFilters(this.state.filterList)}\r\n link={this.props.content}\r\n isAIEnabled={this.props.isAIEnabled}\r\n loadedTags={[]}\r\n />\r\n )}\r\n\r\n
    {renderSortingOptions('mobile')}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.state.searchPhrase ? (\r\n <>\r\n \r\n {this.state.numberOfProducts || 0} {getTranslation(keys['productFilters.searchResults'])}\r\n \r\n \r\n  "{this.state.searchPhrase}"\r\n \r\n this.resetOption(searchPhraseFilter.filterKey, '', searchPhraseFilter.optionKey, false)}\r\n >\r\n {getTranslation(keys['cartSummary.remove'])}\r\n \r\n \r\n ) : (\r\n \r\n {this.state.numberOfProducts || 0} {getTranslation(keys['productFilters.products'])}\r\n \r\n )}\r\n
    \r\n {renderSortingOptions('desktop')}\r\n
    \r\n\r\n {this.buildSelectedOptions().length > 0 && (\r\n \r\n this.resetOption(filterKey, subfilterKey, optionKey, isSelected)\r\n }\r\n onReset={() => this.resetFilters(this.state.filterList)}\r\n />\r\n )}\r\n
    \r\n {this.state.productList && this.state.productList.length > 0 && (\r\n
      \r\n {this.state.productList.map((product, index) => (\r\n
    • \r\n = this.picturesWithoutLazyLoadingAmount}\r\n favouritesUrl={this.props.favouritesUrl}\r\n sortingType={this.state.sortingType}\r\n experimentProductClickUrl={this.props.experimentProductClickUrl}\r\n epiFindClickTrackingUrl={this.props.epiFindClickTrackingUrl}\r\n hidePowerReviews={this.state.hideReviewSnippet}\r\n />\r\n
    • \r\n ))}\r\n
    \r\n )}\r\n\r\n {this.state.maxPage > 1 && (\r\n
      \r\n {this.state.page != 1 && (\r\n
    • \r\n \r\n
    • \r\n )}\r\n
    • \r\n \r\n this.setState({ selectedPage: value })}\r\n onChangeCondition={(value: string) => {\r\n const selectedPage = Number(value);\r\n return !value || (!isNaN(selectedPage) && selectedPage >= 1 && selectedPage <= this.state.maxPage);\r\n }}\r\n onAfterChange={() => this.handlePageChange(this.state.selectedPage)}\r\n />\r\n {getTranslation(keys['paging.of'])} {this.state.maxPage}\r\n
    • \r\n {this.state.page != this.state.maxPage && (\r\n
    • \r\n \r\n
    • \r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n ) : (\r\n this.props.displayEmptyPageInformation && (\r\n
    \r\n {getTranslation(keys['search.noResults'])}\r\n {this.props.searchRecommendationsProps ? (\r\n <>\r\n {getTranslation(keys['search.seeRecommendations'])}\r\n \r\n \r\n ) : (\r\n {getTranslation(keys['search.checkSpelling'])}\r\n )}\r\n
    \r\n )\r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n private buildTagListProps(): TagListProps {\r\n return {\r\n requestId: this.state.requestId,\r\n searchTagsUrl: this.props.searchTagsUrl,\r\n onClick: this.toggleTag,\r\n leadInText: this.props.leadInText,\r\n selectedOptions: this.buildSelectedOptions(),\r\n onAddOption: (filterKey: string, subfilterKey: string | null, optionKey: string, isSelected: boolean) => {\r\n this.resetOption(filterKey, subfilterKey, optionKey, isSelected);\r\n },\r\n loadedTags: this.state.loadedTags\r\n };\r\n }\r\n\r\n private getTags = () => {\r\n if (this.state.isEmpty && !this.props.showEmptyPageTags) {\r\n return;\r\n }\r\n\r\n const url = `${this.props.searchTagsUrl}?requestId=${this.state.requestId ?? ''}`;\r\n getFor(url)\r\n .then((result) => {\r\n const loadedTags = result.filterSuggestions.map((item) => {\r\n return { key: item.filterLabel, removeSearchQuery: item.removeExistingSearchTerm, filters: item.identifierPairs };\r\n });\r\n\r\n this.setState({ loadedTags });\r\n })\r\n .catch((error) =>\r\n error.text().then(() => {\r\n this.setState({ loadedTags: [] });\r\n })\r\n );\r\n };\r\n\r\n private buildPriceRange(priceFilter: PriceFilterViewModel): PriceRangeValues {\r\n const selectedPrice = [priceFilter.selectedMinPrice, priceFilter.selectedMaxPrice];\r\n const thresholds = [priceFilter.minPrice, priceFilter.maxPrice];\r\n const displayedPrice = [\r\n selectedPrice[0] < thresholds[0] ? thresholds[0] : selectedPrice[0],\r\n selectedPrice[1] > thresholds[1] ? thresholds[1] : selectedPrice[1]\r\n ];\r\n\r\n return {\r\n input: displayedPrice.map((x) => x.toString()),\r\n selected: selectedPrice,\r\n slider: displayedPrice,\r\n thresholds: thresholds\r\n };\r\n }\r\n\r\n private clearFilters = (filters: FilterViewModel[]) => {\r\n const updatedFilters = [...filters];\r\n\r\n for (const filter of updatedFilters) {\r\n filter.options = filter.options.map((option) => {\r\n option.isSelected = false;\r\n\r\n if (option.children) {\r\n option.children = option.children.map((subOption) => {\r\n subOption.isSelected = false;\r\n return subOption;\r\n });\r\n }\r\n\r\n return option;\r\n });\r\n }\r\n return updatedFilters;\r\n };\r\n\r\n private resetFilters = (filters: FilterViewModel[]) => {\r\n const updatedFilters = this.clearFilters(filters);\r\n\r\n const query = this.buildQuery(this.state.searchPhrase, updatedFilters, this.state.priceRange.thresholds);\r\n this.runQuery(query, this.state.page, this.state.sortingType);\r\n };\r\n\r\n private resetOption = (filterKey: string, subfilterKey: string | null, optionKey: string, isSelected: boolean) => {\r\n if (optionKey === this.priceKey) {\r\n this.resetPrice();\r\n return;\r\n }\r\n\r\n if (optionKey === this.searchKey) {\r\n this.resetSearch();\r\n return;\r\n }\r\n\r\n this.toggleOption(filterKey, subfilterKey, optionKey, isSelected, this.isCurrentOptionASubfilter(filterKey, subfilterKey, optionKey));\r\n };\r\n\r\n private resetSearch = () => {\r\n this.setState({ searchPhrase: '', tagsUsed: false });\r\n clearSearchInput();\r\n const query = this.buildQuery('', this.state.filterList, this.state.priceRange.thresholds);\r\n this.runQuery(query, 1, this.state.sortingType);\r\n };\r\n\r\n private isCurrentOptionASubfilter = (filterKey: string, subfilterKey: string | null, optionKey: string): boolean => {\r\n const filter = this.state.filterList.find((x) => x.key === filterKey);\r\n if (filter && subfilterKey && filter.subOptionKey === subfilterKey) {\r\n return !!filter.options.find((x) => x.children.some((x) => x.key === optionKey));\r\n }\r\n\r\n return false;\r\n };\r\n\r\n private resetPrice = () => {\r\n const query = this.buildQuery(this.state.searchPhrase, this.state.filterList, this.state.priceRange.thresholds);\r\n this.runQuery(query, 1, this.state.sortingType);\r\n };\r\n\r\n private toggleTag = (\r\n searchId: string,\r\n selectedTag: string,\r\n removeSearchQuery: boolean,\r\n filters: { key: string; value: string }[],\r\n callback?: () => void\r\n ) => {\r\n let searchPhrase = this.state.searchPhrase;\r\n if (removeSearchQuery) {\r\n this.setState({ searchPhrase: '' });\r\n clearSearchInput();\r\n searchPhrase = '';\r\n }\r\n\r\n let query: string;\r\n if (this.state.isEmpty) {\r\n const groupedFilters = filters.reduce((accumulator: { [key: string]: string[] }, filter) => {\r\n if (!(filter.key in accumulator)) {\r\n accumulator[filter.key] = [];\r\n }\r\n\r\n accumulator[filter.key].push(filter.value);\r\n\r\n return accumulator;\r\n }, {});\r\n\r\n const queryParams = new URLSearchParams();\r\n for (const key in groupedFilters) {\r\n queryParams.set(key, groupedFilters[key].join(','));\r\n }\r\n queryParams.set(this.searchPhraseKey, searchPhrase);\r\n query = queryParams.toString();\r\n } else {\r\n const updatedFilters: FilterViewModel[] | undefined = [];\r\n\r\n filters.map((filter) => {\r\n const parent = this.getParentOption(filter.key, filter.value);\r\n const builtFilters = parent\r\n ? this.buildUpdatedFilters(parent.key, parent.value, filter.value, true, true)\r\n : this.buildUpdatedFilters(filter.key, null, filter.value, true);\r\n\r\n if (!builtFilters) return;\r\n updatedFilters.push(...builtFilters);\r\n });\r\n\r\n if (!updatedFilters) return;\r\n\r\n query = this.buildQuery(searchPhrase, updatedFilters, this.state.priceRange.selected, selectedTag);\r\n }\r\n\r\n this.runQuery(query, 1, this.state.sortingType, undefined, callback, true);\r\n };\r\n\r\n private buildUpdatedFilters(\r\n filterKey: string,\r\n subfilterKey: string | null,\r\n optionKey: string,\r\n isSelected: boolean,\r\n isSubfilter?: boolean\r\n ): FilterViewModel[] | undefined {\r\n let updatedFilters: FilterViewModel[];\r\n\r\n if (subfilterKey && isSubfilter) {\r\n const filters = this.toggleWithSubfilter(filterKey, subfilterKey, optionKey, isSelected);\r\n if (!filters) return;\r\n\r\n updatedFilters = filters;\r\n } else {\r\n const filters = this.toggleWithoutSubfilter(filterKey, optionKey, isSelected);\r\n if (!filters) return;\r\n\r\n updatedFilters = filters;\r\n }\r\n\r\n return updatedFilters;\r\n }\r\n\r\n private toggleOption = (\r\n filterKey: string,\r\n subfilterKey: string | null,\r\n optionKey: string,\r\n isSelected: boolean,\r\n isSubfilter?: boolean,\r\n callback?: () => void\r\n ) => {\r\n const updatedFilters = this.buildUpdatedFilters(filterKey, subfilterKey, optionKey, isSelected, isSubfilter);\r\n if (!updatedFilters) return;\r\n\r\n const query = this.buildQuery(this.state.searchPhrase, updatedFilters, this.state.priceRange.selected);\r\n this.runQuery(query, 1, this.state.sortingType, undefined, callback);\r\n };\r\n\r\n private toggleWithSubfilter = (filterKey: string, subfilterKey: string, optionKey: string, isSelected: boolean): FilterViewModel[] | undefined => {\r\n const filterIndex = this.state.filterList.findIndex((filter) => filter.key === filterKey);\r\n if (filterIndex < 0) return;\r\n\r\n const updatedFilters = [...this.state.filterList];\r\n\r\n const options = this.state.filterList[filterIndex].options;\r\n for (const option of options) {\r\n let selected = false;\r\n\r\n for (const subOption of option.children) {\r\n if (subOption.key === optionKey) {\r\n subOption.isSelected = selected = isSelected;\r\n continue;\r\n }\r\n\r\n subOption.isSelected = false;\r\n }\r\n\r\n option.isSelected = selected;\r\n }\r\n\r\n return updatedFilters;\r\n };\r\n\r\n private toggleWithoutSubfilter = (filterKey: string, optionKey: string, isSelected: boolean): FilterViewModel[] | undefined => {\r\n const filterIndex = this.state.filterList.findIndex((filter) => filter.key === filterKey);\r\n if (filterIndex < 0) return;\r\n\r\n const optionIndex = this.state.filterList[filterIndex].options.findIndex((option) => option.key === optionKey);\r\n if (optionIndex < 0) return;\r\n\r\n const updatedFilters = filterKey === 'category' ? this.updateFiltersForCategory(filterIndex) : [...this.state.filterList];\r\n const option = updatedFilters[filterIndex].options[optionIndex];\r\n option.isSelected = isSelected;\r\n\r\n return updatedFilters;\r\n };\r\n\r\n private updateFiltersForCategory = (filterIndex: number): FilterViewModel[] => {\r\n const updatedFilters = [...this.state.filterList];\r\n\r\n updatedFilters[filterIndex].options = updatedFilters[filterIndex].options.map((option) => {\r\n option.isSelected = false;\r\n option.children = option.children.map((x) => {\r\n return { ...x, isSelected: false };\r\n });\r\n return option;\r\n });\r\n\r\n return updatedFilters;\r\n };\r\n\r\n private handleSortingTypeChange = (value: number) => {\r\n const { searchPhrase, filterList, priceRange } = this.state;\r\n const query = this.buildQuery(searchPhrase, filterList, priceRange.selected);\r\n this.runQuery(query, 1, value);\r\n };\r\n\r\n private buildSelectedOptions = (): SelectedOption[] => {\r\n const selectedOptions = this.state.filterList.map((f) => this.getSelectedOptions(f)).reduce((a, b) => a.concat(b), []);\r\n if (this.isActivePriceFilter()) {\r\n selectedOptions.push({ filterKey: this.priceKey, subFilterKey: '', optionKey: this.priceKey, value: this.getPriceFilter() } as SelectedOption);\r\n }\r\n\r\n return this.props.brandId ? selectedOptions.filter((x) => x.filterKey !== 'brand') : selectedOptions;\r\n };\r\n\r\n private getPriceFilter = () => `${this.state.priceRange.selected[0]} - ${this.state.priceRange.selected[1]} ${this.props.results.priceFilter.currencyCode}`;\r\n\r\n private isActivePriceFilter = () =>\r\n this.state.priceRange.thresholds[0] != this.state.priceRange.selected[0] || this.state.priceRange.thresholds[1] != this.state.priceRange.selected[1];\r\n\r\n private getSelectedOptions = (filter: FilterViewModel): SelectedOption[] => {\r\n const isSubFilter = this.isSubfilter(filter);\r\n const options = this.getOptions(filter, isSubFilter);\r\n return options.map((x) => ({ filterKey: filter.key, subFilterKey: filter.subOptionKey, optionKey: x.key, value: x.value, isSubFilter }));\r\n };\r\n\r\n private runQuery = (query: string, page: number, sortingType: number, scrollToTop?: boolean, callback?: () => void, tagsUsed = false) => {\r\n const queryString = `${query}&orderBy=${sortingType}`;\r\n\r\n if (this.history) {\r\n const searchQuery = `?${queryString}${page !== 1 ? `&page=${page}` : ''}`;\r\n this.history.push(searchQuery);\r\n this.setState({ searchQuery });\r\n }\r\n\r\n this.queryForProducts(`${queryString}&page=${page}`, scrollToTop, callback, tagsUsed);\r\n };\r\n\r\n private hidePowerReviews = (products: ProductCardViewModel[]): boolean => {\r\n return products.every((p) => p.hidePowerReviews || !p.powerReviewsRating);\r\n };\r\n\r\n private queryForProducts = (query: string, scrollToTop?: boolean, callback?: () => void, tagsUsed = false) => {\r\n let url = `${this.props.productsUrl}?`;\r\n if (this.props.content) {\r\n url += `id=${this.props.content}&`;\r\n } else if (this.props.brandId) {\r\n url += `brand=${this.props.brandId}&`;\r\n }\r\n\r\n url += `&${query}`;\r\n\r\n this.setState({ isLoading: true, tagsUsed: tagsUsed });\r\n const aiHeaders = tagsUsed || this.state.tagsUsed ? this.resolveAiHeaders() : null;\r\n\r\n getFor(url, aiHeaders)\r\n .then((result) => {\r\n if (scrollToTop) {\r\n lockHeader(true, true);\r\n smoothScrollTo(this.getTop(), () => {\r\n this.setResults(result);\r\n window.scrollTo(0, this.getTop());\r\n this.setPopstateEventListener();\r\n setTimeout(() => {\r\n lockHeader(false);\r\n }, 100);\r\n });\r\n } else {\r\n this.setResults(result);\r\n this.setPopstateEventListener();\r\n }\r\n\r\n const searchPhrase = new URLSearchParams(url).get(this.searchPhraseKey) || '';\r\n if (this.props.isProductListTrackable) {\r\n VisitorIntelligenceFacade.TrackSearchResultsPage(\r\n searchPhrase,\r\n result.products.map((p) => p.code),\r\n result.products.length\r\n );\r\n\r\n if (searchPhrase !== this.previousGaTrackedSearchPhrase.current) {\r\n GoogleTagManager.viewSearchResults(searchPhrase, this.props.isAIEnabled ? 'AI' : 'Classic');\r\n this.previousGaTrackedSearchPhrase.current = searchPhrase;\r\n }\r\n }\r\n\r\n callback && callback();\r\n })\r\n .catch(() => {\r\n this.setEmptyResults();\r\n });\r\n };\r\n\r\n private resolveAiHeaders = (): Record | null => {\r\n const headers: Record = {};\r\n headers[AiSearchKeys.aiSearchHeader] = 'true';\r\n return headers;\r\n };\r\n\r\n private setPopstateEventListener = () => {\r\n window.addEventListener('popstate', this.handleNavigationEvent);\r\n };\r\n\r\n private handleNavigationEvent = () => {\r\n this.queryForProducts(window.location.search.replace('?', ''), true);\r\n const searchParams = new URLSearchParams(window.location.search);\r\n this.setState({ searchPhrase: searchParams.get(this.searchPhraseKey) || '' });\r\n };\r\n\r\n private setResults = (result: ProductFilterResultViewModel) => {\r\n const numberOfProducts =\r\n this.props.allowedProducts && result.resultsCount > this.props.allowedProducts?.length ? this.props.allowedProducts.length : result.resultsCount;\r\n\r\n this.setState({\r\n productList: this.filterAllowedProducts(result.products),\r\n filterList: result.filters,\r\n links: result.links,\r\n page: result.page,\r\n selectedPage: result.page.toString(),\r\n maxPage: result.maxPage,\r\n numberOfProducts,\r\n isLoading: false,\r\n priceRange: this.buildPriceRange(result.priceFilter),\r\n sortingType: result.sortingType,\r\n hideReviewSnippet: this.hidePowerReviews(result.products),\r\n searchId: this.isAISearch(result) ? result.searchId : '',\r\n requestId: this.isAISearch(result) ? result.requestId : '',\r\n isEmpty: numberOfProducts == 0\r\n });\r\n };\r\n\r\n private setEmptyResults = () => {\r\n this.setResults({\r\n products: [],\r\n filters: [\r\n {\r\n key: 'category',\r\n label: 'Kategori',\r\n subOptionKey: 'subcategory',\r\n options: [],\r\n // eslint-disable-next-line\r\n link: null!,\r\n // eslint-disable-next-line\r\n url: null!\r\n }\r\n ],\r\n // eslint-disable-next-line\r\n links: null!,\r\n page: 1,\r\n maxPage: 1,\r\n resultsPerPage: 0,\r\n resultsCount: 0,\r\n priceFilter: {\r\n minPrice: 0,\r\n maxPrice: 0,\r\n selectedMinPrice: 0,\r\n selectedMaxPrice: 0,\r\n currencyCode: 'kr'\r\n },\r\n searchPhrase: this.state.searchPhrase,\r\n sortingType: this.state.sortingType\r\n });\r\n };\r\n\r\n private filterAllowedProducts = (productList: ProductCardViewModel[]) => {\r\n // eslint-disable-next-line\r\n return this.props.allowedProducts ? productList.filter((x) => this.props.allowedProducts!.includes(x.code)) : productList;\r\n };\r\n\r\n private getTop = (): number => {\r\n // spacing between header and CategoryPage__Body after auto-scroll\r\n const additionalPaddingFromTop = 20;\r\n\r\n const headerHeight = this.getHeaderHeight();\r\n const offsetTop = headerHeight + additionalPaddingFromTop;\r\n\r\n return this.categoryPageBodyRef.current ? this.categoryPageBodyRef.current.offsetTop - offsetTop : 0;\r\n };\r\n\r\n private getHeaderHeight = (): number => {\r\n const defaultHeaderHeight = 88;\r\n const header = document?.querySelector('.Header__Top') as HTMLElement;\r\n return header?.offsetHeight || defaultHeaderHeight;\r\n };\r\n\r\n private buildQuery = (searchPhrase: string, filters: FilterViewModel[], priceValues: number[], lastTag = ''): string => {\r\n const searchParams = new URLSearchParams();\r\n if (searchPhrase) {\r\n searchParams.set(this.searchPhraseKey, searchPhrase);\r\n }\r\n\r\n for (const filter of filters) {\r\n let optionQuery = '';\r\n\r\n const options = this.getOptions(filter, this.isSubfilter(filter));\r\n\r\n for (const option of options) {\r\n optionQuery += optionQuery.length > 0 ? `,${option.key}` : option.key;\r\n }\r\n\r\n if (optionQuery.length > 0) {\r\n searchParams.set(filter.subOptionKey && this.isSubfilter(filter) ? filter.subOptionKey : filter.key, optionQuery);\r\n }\r\n }\r\n\r\n if (this.state.priceRange.thresholds[0] != priceValues[0] || this.state.priceRange.thresholds[1] != priceValues[1]) {\r\n searchParams.set('minPrice', priceValues[0].toString());\r\n searchParams.set('maxPrice', priceValues[1].toString());\r\n }\r\n\r\n if (this.state.searchId) {\r\n searchParams.set(this.searchIdKey, this.state.searchId);\r\n }\r\n if (lastTag) {\r\n searchParams.set(this.lastTagKey, lastTag);\r\n }\r\n\r\n return searchParams.toString() || '';\r\n };\r\n\r\n private isSubfilter = (filter: FilterViewModel) => {\r\n return filter.options.filter((filterOption) => filterOption.children?.filter((subfilterOption) => subfilterOption.isSelected).length > 0).length > 0;\r\n };\r\n\r\n private getParentOption = (key: string, value: string): { key: string; value: string } | undefined => {\r\n const filterIndex = this.state.filterList.findIndex((filter) => filter.subOptionKey === key);\r\n if (filterIndex < 0) {\r\n return;\r\n }\r\n\r\n const option = this.state.filterList[filterIndex].options.flatMap((option) => option.children).find((child) => child.key === value);\r\n if (!option) {\r\n return;\r\n }\r\n\r\n return { key: this.state.filterList[filterIndex].key, value: option?.parentKey };\r\n };\r\n\r\n private isAISearch = (result: ProductFilterResultViewModel): result is AiSearchProductFilterResultViewModel => {\r\n return (result as AiSearchProductFilterResultViewModel).searchId !== undefined;\r\n };\r\n\r\n private getOptions = (filter: FilterViewModel, isSubfilter?: boolean): FilterOptionViewModel[] => {\r\n return filter.subOptionKey && isSubfilter\r\n ? filter.options\r\n .map((o) => o.children)\r\n .reduce((a, b) => {\r\n return a.concat(b);\r\n }, [])\r\n .filter((x) => x.isSelected)\r\n : filter.options.filter((x) => x.isSelected);\r\n };\r\n\r\n private changePage = (selectedPage: number) => {\r\n if (selectedPage >= 1 && selectedPage <= this.state.maxPage) {\r\n this.runQueryForPage(selectedPage, true);\r\n }\r\n };\r\n\r\n private runQueryForPage = (selectedPage: number, scrollToTop?: boolean) => {\r\n const query = this.buildQuery(this.state.searchPhrase, this.state.filterList, this.state.priceRange.selected);\r\n this.runQuery(query, selectedPage, this.state.sortingType, scrollToTop);\r\n };\r\n\r\n private handlePageChange = (value: string) => {\r\n if (!value) {\r\n this.setState({ selectedPage: this.state.page.toString() });\r\n return;\r\n }\r\n\r\n const selectedPage = Number(value);\r\n if (isNaN(selectedPage) || selectedPage < 1 || selectedPage > this.state.maxPage) {\r\n this.setState({ selectedPage: this.state.page.toString() });\r\n return;\r\n }\r\n\r\n if (selectedPage !== this.state.page) {\r\n this.runQueryForPage(selectedPage);\r\n }\r\n };\r\n\r\n private search = ($event: CustomEventInit) => {\r\n const search = $event?.detail as ISearchEvent;\r\n if (!search) {\r\n return;\r\n }\r\n\r\n if (search.phrase !== this.state.searchPhrase) {\r\n this.setState({ searchId: '' });\r\n this.clearFilters(this.state.filterList);\r\n }\r\n this.setState({ searchPhrase: search.phrase });\r\n const query = this.buildQuery(search.phrase, this.state.filterList, this.state.priceRange.selected);\r\n this.runQuery(query, 1, this.state.sortingType);\r\n };\r\n}\r\n","import { PriceRangeValues } from '../PriceRange/PriceRange';\r\n\r\nexport const PriceService = (setPriceRange: (param: PriceRangeValues, callback?: () => void) => void, afterChange: (price: number[]) => void) => {\r\n const onChangeRange = (slider: number[], priceRange: PriceRangeValues) => {\r\n const range = {\r\n input: slider.map((x) => x.toString()),\r\n selected: priceRange.selected,\r\n slider: slider,\r\n thresholds: priceRange.thresholds\r\n };\r\n\r\n setPriceRange(range);\r\n };\r\n\r\n const onChangeInputMin = (value: string, priceRange: PriceRangeValues) => {\r\n const selectedValue = Number(value);\r\n if (value && (isNaN(selectedValue) || selectedValue < 0)) {\r\n return;\r\n }\r\n\r\n let sliderMin = priceRange.slider[0];\r\n if (value) {\r\n sliderMin = priceRange.slider[1] < selectedValue ? priceRange.slider[1] : Math.max(selectedValue, priceRange.thresholds[0]);\r\n }\r\n\r\n const range = {\r\n input: [value, priceRange.input[1]],\r\n selected: priceRange.selected,\r\n slider: [sliderMin, priceRange.slider[1]],\r\n thresholds: priceRange.thresholds\r\n };\r\n\r\n setPriceRange(range, () => onAfterChange(range));\r\n };\r\n\r\n const onChangeInputMax = (value: string, priceRange: PriceRangeValues) => {\r\n const selectedValue = Number(value);\r\n if (value && (isNaN(selectedValue) || selectedValue > priceRange.thresholds[1])) {\r\n return;\r\n }\r\n\r\n let sliderMax = priceRange.slider[1];\r\n if (value) {\r\n sliderMax = selectedValue < priceRange.slider[0] ? priceRange.slider[1] : selectedValue;\r\n }\r\n\r\n const range = {\r\n input: [priceRange.input[0], value],\r\n selected: priceRange.selected,\r\n slider: [priceRange.slider[0], sliderMax],\r\n thresholds: priceRange.thresholds\r\n };\r\n\r\n setPriceRange(range, () => onAfterChange(range));\r\n };\r\n\r\n const onAfterChange = (priceRange: PriceRangeValues) => {\r\n const queryChanged = priceRange.slider[0] !== priceRange.selected[0] || priceRange.slider[1] !== priceRange.selected[1];\r\n const range = {\r\n input: priceRange.slider.map((x) => x.toString()),\r\n selected: [...priceRange.slider],\r\n slider: priceRange.slider,\r\n thresholds: priceRange.thresholds\r\n };\r\n\r\n setPriceRange(range);\r\n\r\n if (queryChanged) {\r\n afterChange(range.selected);\r\n }\r\n };\r\n\r\n return {\r\n onAfterChange: onAfterChange,\r\n onChangeInputMin: onChangeInputMin,\r\n onChangeInputMax: onChangeInputMax,\r\n onChangeRange: onChangeRange\r\n };\r\n};\r\n","import { isServerRendering } from '../ReactComponents/IsServerRendering';\r\nimport { StorageAccessor } from './StorageAccessor';\r\n\r\nexport class LocalStorageAccessor extends StorageAccessor {\r\n static storage = (() => {\r\n if (isServerRendering()) return false;\r\n\r\n const uid = new Date();\r\n try {\r\n localStorage.setItem('uid', uid.toDateString());\r\n const result = localStorage.getItem('uid') == uid.toDateString();\r\n localStorage.removeItem('uid');\r\n return result && localStorage;\r\n } catch (exception) {\r\n return false;\r\n }\r\n })();\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum DiscountVariant {\r\n\tLarge = 0,\r\n\tMedium = 1,\r\n\tSmall = 2,\r\n\tMini = 3\r\n}\r\n","import pL from 'js-regex-pl';\r\n\r\nexport class RegexProvider {\r\n static text = new RegExp(`^(?!.*[\\u0400-\\u04FF])[${pL} ,.'-]*$`);\r\n // https://emailregex.com\r\n static email =\r\n // eslint-disable-next-line\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n static address = new RegExp(`^(?!.*[\\u0400-\\u04FF])[0-9${pL} ,.'-/():]*$`);\r\n static postalCode = /^(?=.*\\d)(?=.*[1-9]).{4}$/;\r\n static phoneNumber = /^(?!0{8})[0-9]{8}$/;\r\n static ssn = /^(?!0{8})[0-9]{11}$/;\r\n static containsNumber = new RegExp(`\\\\b\\\\d+`);\r\n}\r\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum ProductCardVariant {\r\n\tHorizontal = 0,\r\n\tVertical = 1,\r\n\tHorizontalCompact = 2,\r\n\tHorizontalSimple = 3\r\n}\r\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","export class CookieAccessor {\r\n public static getCookie(name: string): string | null {\r\n const nameIndicator = name + '=';\r\n const cookiesCollection = document.cookie.split(';');\r\n for (let cookie of cookiesCollection) {\r\n while (cookie.charAt(0) == ' ') {\r\n cookie = cookie.substring(1, cookie.length);\r\n }\r\n\r\n if (cookie.indexOf(nameIndicator) == 0) {\r\n return cookie.substring(nameIndicator.length, cookie.length);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public static setCookie(name: string, value: string, expires: Date): void;\r\n public static setCookie(name: string, value: string, expiresSeconds: number): void;\r\n public static setCookie(name: string, value: string, expires: number | Date): void {\r\n let expirationDate: Date;\r\n if (expires instanceof Date) {\r\n expirationDate = expires;\r\n } else {\r\n expirationDate = new Date();\r\n expirationDate.setTime(expirationDate.getTime() + expires * 1000);\r\n }\r\n\r\n document.cookie = `${name}=${value}; expires=${expirationDate.toUTCString()}`;\r\n }\r\n\r\n public static deleteCookie(name: string) {\r\n document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\r\n }\r\n}\r\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","import * as React from 'react';\r\n\r\nimport { lockHeader } from '../LockHeader';\r\nimport { getScrollbarWidth } from './ScrollbarHelpers';\r\n\r\ninterface ScrollLockProps {\r\n isLocked: boolean;\r\n bodyClassName?: string;\r\n removeScroll?: boolean;\r\n}\r\n\r\nexport class ScrollLock extends React.Component {\r\n private readonly bodyClassNames: string[];\r\n static active = 0;\r\n static scrollPosition: number | undefined = undefined;\r\n private scrollbarWidth = 0;\r\n\r\n constructor(props: ScrollLockProps) {\r\n super(props);\r\n\r\n this.bodyClassNames = this.props.bodyClassName ? this.props.bodyClassName.split(' ') : [];\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.isLocked) {\r\n ScrollLock.active++;\r\n this.activate(window.pageYOffset);\r\n }\r\n\r\n this.scrollbarWidth = getScrollbarWidth();\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.props.isLocked) {\r\n ScrollLock.active--;\r\n this.deactivate();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: ScrollLockProps): void {\r\n const isLockedChanged = prevProps.isLocked !== this.props.isLocked;\r\n const isRemoveScrollChanged = prevProps.removeScroll !== this.props.removeScroll;\r\n\r\n if (isLockedChanged) {\r\n const scrollY = window.pageYOffset;\r\n\r\n if (this.props.isLocked) {\r\n ScrollLock.active++;\r\n this.activate(scrollY);\r\n } else if (ScrollLock.scrollPosition !== undefined) {\r\n ScrollLock.active--;\r\n this.deactivate();\r\n }\r\n\r\n ScrollLock.scrollPosition = scrollY;\r\n }\r\n\r\n if (isRemoveScrollChanged) {\r\n this.updateClassList();\r\n }\r\n }\r\n\r\n static isActive = () => {\r\n return ScrollLock.active > 0;\r\n };\r\n\r\n private updateClassList = () => {\r\n const body = document.body;\r\n\r\n if (ScrollLock.isActive() && body) {\r\n body.classList.remove(...this.bodyClassNames, 'ScrollLock', 'ScrollLock--WithoutScroll');\r\n body.style.paddingRight = '';\r\n\r\n body.classList.add(...this.bodyClassNames, this.props.removeScroll ? 'ScrollLock--WithoutScroll' : 'ScrollLock');\r\n this.props.removeScroll && (body.style.paddingRight = this.scrollbarWidth + 'px');\r\n }\r\n };\r\n\r\n private activate = (scrollY: number) => {\r\n const body = document.body;\r\n\r\n if (ScrollLock.isActive() && body) {\r\n ScrollLock.scrollPosition = scrollY;\r\n body.classList.add(...this.bodyClassNames, this.props.removeScroll ? 'ScrollLock--WithoutScroll' : 'ScrollLock');\r\n body.style.top = `-${scrollY}px`;\r\n lockHeader(true);\r\n }\r\n };\r\n\r\n private removeClassNames = () => {\r\n const body = document.body;\r\n\r\n body.classList.remove('ScrollLock');\r\n body.classList.remove('ScrollLock--WithoutScroll');\r\n for (const className of this.bodyClassNames) {\r\n body.classList.remove(className);\r\n }\r\n };\r\n\r\n private deactivate = () => {\r\n const body = document.body;\r\n\r\n if (!ScrollLock.isActive() && ScrollLock.scrollPosition !== undefined && body) {\r\n body.style.top = '0';\r\n body.style.paddingRight = '';\r\n body.removeAttribute('aria-hidden');\r\n this.removeClassNames();\r\n window.scrollTo(0, ScrollLock.scrollPosition);\r\n setTimeout(() => {\r\n lockHeader(false);\r\n }, 1);\r\n }\r\n };\r\n\r\n render() {\r\n return <>;\r\n }\r\n}\r\n","export const getScrollbarWidth = () => {\r\n const { body } = document;\r\n const scrollDiv = document.createElement('div');\r\n\r\n // Append element with defined styling\r\n scrollDiv.setAttribute('style', 'width: 1337px; height: 1337px; position: absolute; left: -9999px; overflow: scroll;');\r\n body.appendChild(scrollDiv);\r\n\r\n // Collect width & height of scrollbar\r\n const scrollbarWidth = scrollDiv[`offsetWidth`] - scrollDiv[`clientWidth`];\r\n\r\n // Remove element\r\n body.removeChild(scrollDiv);\r\n\r\n return scrollbarWidth;\r\n};\r\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import * as React from 'react';\r\nimport xss from 'xss';\r\n\r\ninterface RenderHTMLProps {\r\n html: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const RenderHTML = React.forwardRef((props: RenderHTMLProps, ref: React.Ref) => {\r\n const allowedAttributes = ['class', 'style', 'height', 'border', 'cellpadding', 'cellspacing'];\r\n\r\n const options = {\r\n onTagAttr: function (tag: string, name: string, value: string) {\r\n if (allowedAttributes.includes(name)) {\r\n return `${name}=\"${value}\"`;\r\n }\r\n }\r\n };\r\n return
    ;\r\n});\r\n","// eslint-disable-next-line\r\ndeclare let appInsights: any;\r\n\r\n// eslint-disable-next-line\r\n// https://github.com/microsoft/ApplicationInsights-JS/blob/17ef50442f73fd02a758fbd74134933d92607ecf/shared/AppInsightsCommon/src/Interfaces/Contracts/Generated/SeverityLevel.ts\r\nexport enum SeverityLevel {\r\n Verbose = 0,\r\n Information = 1,\r\n Warning = 2,\r\n Error = 3,\r\n Critical = 4\r\n}\r\n\r\n// Application Insights shows [object Object] when you pass an object property, that's why this limitation is in place.\r\ntype Properties = { [key: string]: string | number | boolean | null | undefined };\r\n\r\nexport class ApplicationInsights {\r\n public static TrackException(message: string) {\r\n if (typeof appInsights !== 'undefined') {\r\n appInsights.trackException(message);\r\n }\r\n }\r\n\r\n public static TrackTrace(level: SeverityLevel, message: string, properties?: Properties) {\r\n if (typeof appInsights !== 'undefined') {\r\n appInsights.trackTrace(message, properties, level);\r\n }\r\n }\r\n\r\n public static TrackEvent(name: string, properties?: Properties) {\r\n if (typeof appInsights !== 'undefined') {\r\n appInsights.trackEvent(name, properties);\r\n }\r\n }\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum TrackingType {\r\n\tHome = 0,\r\n\tProduct = 1,\r\n\tCategory = 2,\r\n\tBasket = 3,\r\n\tCheckout = 4,\r\n\tOrder = 5,\r\n\tSearchResults = 6,\r\n\tBrand = 7,\r\n\tAttribute = 8,\r\n\tWishlist = 9,\r\n\tOther = 10\r\n}\r\n","import { getUserInformation } from '../Experimentation/Components/ResolveExperimentId';\r\nimport { PageExperimentsModel } from '../Experimentation/Models/PageExperimentsModel.csharp';\r\nimport { isServerRendering } from './IsServerRendering';\r\nimport { onSessionExpired } from './Modal/LoginModal';\r\n\r\nif (!isServerRendering()) {\r\n // eslint-disable-next-line\r\n // @ts-ignore\r\n window.farmasietApi = {\r\n post\r\n };\r\n}\r\n\r\n// eslint-disable-next-line\r\ndeclare let experimentsDefinition: PageExperimentsModel;\r\n\r\nfunction headers(additionalHeaders: Record | null = null): Record {\r\n let headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n __RequestVerificationToken: getAntiForgeryToken()\r\n };\r\n\r\n if (additionalHeaders) {\r\n headers = { ...headers, ...additionalHeaders };\r\n }\r\n\r\n if (!isServerRendering() && typeof experimentsDefinition !== 'undefined' && experimentsDefinition) {\r\n headers[experimentsDefinition.experimentationPathHeaderName] = experimentsDefinition.path || '';\r\n headers[experimentsDefinition.experimentationUserDataHeaderName] = JSON.stringify(getUserInformation());\r\n }\r\n\r\n return headers;\r\n}\r\n\r\nfunction getAntiForgeryToken() {\r\n return (document.getElementsByName('__RequestVerificationToken')[0] as HTMLInputElement)?.value ?? '';\r\n}\r\n\r\nfunction handleResponse(promise: Promise, unauthorizedHandler: () => void = onSessionExpired): Promise {\r\n return new Promise((resolve, reject) => {\r\n promise\r\n .then((response) => {\r\n if (response.ok) {\r\n resolve(response);\r\n return;\r\n }\r\n\r\n if (unauthorizedHandler && response.status === 401) {\r\n unauthorizedHandler();\r\n }\r\n\r\n reject(response);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n}\r\n\r\n// eslint-disable-next-line\r\nexport function put(url: string, body: any = undefined, json = true): Promise {\r\n return handleResponse(\r\n fetch(url, {\r\n method: 'PUT',\r\n body: body ? (json ? JSON.stringify(body) : body) : undefined,\r\n headers: headers(json ? { 'Content-Type': 'application/json' } : null),\r\n credentials: 'same-origin' // should be default value, but for Safari 11 is not\r\n })\r\n );\r\n}\r\n\r\n// eslint-disable-next-line\r\nexport function post(url: string, body: any = undefined, json = true, unauthorizedHandler: () => void = onSessionExpired): Promise {\r\n return handleResponse(\r\n fetch(url, {\r\n method: 'POST',\r\n body: body ? (json ? JSON.stringify(body) : body) : undefined,\r\n headers: headers(json ? { 'Content-Type': 'application/json' } : null),\r\n credentials: 'same-origin' // should be default value, but for Safari 11 is not\r\n }),\r\n unauthorizedHandler\r\n );\r\n}\r\n\r\n// eslint-disable-next-line\r\nexport function postFor(url: string, body: any = undefined, unauthorizedHandler: () => void = onSessionExpired): Promise {\r\n return new Promise((resolve, reject) => {\r\n post(url, body, true, unauthorizedHandler)\r\n .then((result) => result.json())\r\n .then((result) => {\r\n resolve(result);\r\n })\r\n .catch((error) => reject(error));\r\n });\r\n}\r\n\r\nexport function del(url: string, unauthorizedHandler: () => void = onSessionExpired): Promise {\r\n return handleResponse(\r\n fetch(url, {\r\n method: 'DELETE',\r\n headers: headers(),\r\n credentials: 'same-origin'\r\n }),\r\n unauthorizedHandler\r\n );\r\n}\r\n\r\nexport function deleteFor(url: string, unauthorizedHandler: () => void = onSessionExpired): Promise {\r\n return new Promise((resolve, reject) => {\r\n del(url, unauthorizedHandler)\r\n .then((result) => result.json())\r\n .then((result) => {\r\n resolve(result);\r\n })\r\n .catch((error) => reject(error));\r\n });\r\n}\r\n\r\nexport function get(url: string, additionalHeaders: Record | null = null): Promise {\r\n return handleResponse(\r\n fetch(url, {\r\n credentials: 'same-origin',\r\n headers: headers(additionalHeaders)\r\n })\r\n );\r\n}\r\n\r\nexport function getFor(url: string, headers: Record | null = null): Promise {\r\n return new Promise((resolve, reject) => {\r\n get(url, headers)\r\n .then((result) => result.json())\r\n .then((result) => {\r\n resolve(result);\r\n })\r\n .catch((error) => reject(error));\r\n });\r\n}\r\n\r\n// eslint-disable-next-line\r\nexport function putFor(url: string, body: any = undefined): Promise {\r\n return new Promise((resolve, reject) => {\r\n put(url, body)\r\n .then((result) => result.json())\r\n .then((result) => {\r\n resolve(result);\r\n })\r\n .catch((error) => reject(error));\r\n });\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum AddToCartMode {\r\n\tDefault = 0,\r\n\tPrescription = 1,\r\n\tOutOfStock = 2,\r\n\tNotAvailable = 3\r\n}\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { DiscountVariant } from '../../Blocks/DiscountVariant.csharp';\r\n\r\nexport enum StarInfoLabelColor {\r\n Red,\r\n Pink,\r\n DarkRed\r\n}\r\n\r\ninterface StarInfoLabelProps {\r\n color: StarInfoLabelColor;\r\n variant: DiscountVariant;\r\n additionalInfo?: string;\r\n value: string;\r\n requiredQuantity?: number;\r\n paidQuantity?: number;\r\n}\r\n\r\nexport const CircleInfoLabel: React.FunctionComponent = (props) => {\r\n return (\r\n
    \r\n {props.additionalInfo && {props.additionalInfo}}\r\n {props.requiredQuantity && props.paidQuantity ? (\r\n
    \r\n {props.requiredQuantity}\r\n {getTranslation(keys['cheapestForFreeDiscount.for'])}\r\n {props.paidQuantity}\r\n
    \r\n ) : (\r\n {props.value}\r\n )}\r\n
    \r\n );\r\n};\r\n","import { ICartDetails } from '../../Cart/ICartDetails.csharp';\r\nimport { CheckoutApiRoutes } from '../CheckoutApiRoutes.csharp';\r\nimport { CheckoutViewModel } from '../ViewModel/CheckoutViewModel.csharp';\r\nimport { CheckoutApiInitializer } from './CheckoutApiInitializer';\r\n\r\nexport class CheckoutBaseApi {\r\n protected routes: CheckoutApiRoutes;\r\n protected getCheckout: () => CheckoutViewModel;\r\n protected updateCheckout: (checkout: CheckoutViewModel, resetWarnings?: boolean) => void;\r\n\r\n public postalCodeAutocompleteUrl: string;\r\n\r\n constructor(initializer: CheckoutApiInitializer) {\r\n this.routes = initializer.routes;\r\n this.getCheckout = initializer.getCheckout;\r\n this.updateCheckout = initializer.updateCheckout;\r\n this.postalCodeAutocompleteUrl = this.routes.addressAutocompleteUrl;\r\n }\r\n\r\n protected get checkout() {\r\n return this.getCheckout();\r\n }\r\n}\r\n\r\nexport function handleCheckoutError(error: { status: number }, model: T): T {\r\n const errorMessage = getStatusErrorMessage(error);\r\n return setCheckoutError(model, errorMessage);\r\n}\r\n\r\nexport function setCheckoutError(model: T, errorMessage: string): T {\r\n const cart = { ...model };\r\n cart.error = { messageKey: errorMessage };\r\n\r\n return cart;\r\n}\r\n\r\nexport const forbiddenOperationError = 'invalidActionPleaseRefresh';\r\nexport const unexpectedOperationError = 'Unexpected';\r\nexport const unauthorized = 'expectedActiveSession';\r\n\r\nexport function getStatusErrorMessage(error: { status: number }) {\r\n switch (error?.status) {\r\n case 401:\r\n return unauthorized;\r\n case 403:\r\n return forbiddenOperationError;\r\n default:\r\n return unexpectedOperationError;\r\n }\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum ProductListVariant {\r\n\tGridWithSwiper = 0,\r\n\tHorizontal = 1,\r\n\tGridWithoutSwiper = 2,\r\n\tHorizontalSimple = 3,\r\n\tNone = 4\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum BlockSectionMargin {\r\n\tDefault = 0,\r\n\tBig = 1\r\n}\r\n","import { BlockSectionMargin } from './BlockSectionMargin.csharp';\r\n\r\nexport class BlockSectionClassResolver {\r\n public static Resolve(margin: BlockSectionMargin): string {\r\n return `BlockSection--${BlockSectionMargin[margin]}`;\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../Resources/Translations';\r\nimport { Button, ButtonSize } from '../Buttons/Button';\r\nimport { EventNames } from '../EventNames';\r\nimport { Modal, ModalButtons, ModalHeading, ModalText } from './Modal';\r\n\r\nexport const onSessionExpired = () => {\r\n const event = new CustomEvent(EventNames.SessionExpired);\r\n window.dispatchEvent(event);\r\n};\r\n\r\nexport interface LoginModalProps {\r\n readonly loginUrl: string;\r\n}\r\n\r\nexport const LoginModal = ({ loginUrl }: LoginModalProps) => {\r\n const [isVisible, setIsVisible] = React.useState(false);\r\n\r\n const showModal = () => {\r\n setIsVisible(true);\r\n };\r\n\r\n const redirectToLogin = () => {\r\n window.location.href = loginUrl;\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener(EventNames.SessionExpired, showModal);\r\n\r\n return () => {\r\n window.removeEventListener(EventNames.SessionExpired, showModal);\r\n };\r\n });\r\n\r\n return (\r\n \r\n {getTranslation(keys['modal.sessionExpired.title'])}\r\n {getTranslation(keys['modal.sessionExpired.message'])}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","export const inertHelper = (isActive: boolean) => {\r\n return isActive ? {} : { inert: '' };\r\n};\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum DiscountType {\r\n\tCheapestForFree = 0,\r\n\tProduct = 1\r\n}\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport class GoogleTagManagerList\r\n{\r\n\tpublic static searchResults: string = `Search Results`;\r\n\tpublic static aiSearchResults: string = `AI Search Results`;\r\n\tpublic static productCard: string = `Product Card`;\r\n\tpublic static cartItems: string = `Cart Items`;\r\n\tpublic static featuredProducts: string = `Featured Products`;\r\n\tpublic static categoryAssociatedProducts: string = `Suggested Products`;\r\n\tpublic static brandAssociatedProducts: string = `Related Products`;\r\n\tpublic static brandPage: string = `Brand Page`;\r\n\tpublic static subbrandPage: string = `Subbrand Page`;\r\n\tpublic static categoryPage: string = `Category Page`;\r\n\tpublic static subcategoryPage: string = `Subcategory Page`;\r\n\tpublic static campaignPage: string = `Campaign Page`;\r\n\tpublic static cartPage: string = `Cart Page`;\r\n\tpublic static favouriteProducts: string = `Favourite Products`;\r\n\tpublic static cartRecommendedProducts: string = `Cart Recommended Products`;\r\n\tpublic static cartDrawerRecommendedProducts: string = `Cart Drawer Recommended Products`;\r\n\tpublic static homePageRecommendedProducts: string = `Home Page Recommended Products`;\r\n\tpublic static productPageRecommendedProducts: string = `Product Page Recommended Products`;\r\n\tpublic static productPageCrossSellRecommendedProducts: string = `Product Page Cross Sell Recommended Products`;\r\n\tpublic static productPageRecommendedFallbackBrandProducts: string = `Product Page Recommended Fallback Brand Products`;\r\n\tpublic static productPageRecommendedFallbackCategoryProducts: string = `Product Page Recommended Fallback Category Products`;\r\n\tpublic static homePage: string = `Home Page`;\r\n\tpublic static productPage: string = `Product Page`;\r\n}\r\n","import React, { createContext, FC, useEffect, useState } from 'react';\r\n\r\nimport { UserDetailsViewModel } from '../../Purchase/Cart/PersonalizedCart/UserDetailsViewModel.csharp';\r\nimport { EventNames } from '../EventNames';\r\n\r\nexport interface UserContextModel {\r\n isLogged: boolean;\r\n isReady: boolean;\r\n user?: UserDetailsViewModel;\r\n}\r\n\r\nexport const UserContext = createContext({} as UserContextModel);\r\n\r\nexport const UserContextProvider: FC = (props) => {\r\n const [user, setUser] = useState();\r\n\r\n useEffect(() => {\r\n window.addEventListener(EventNames.UserDetailsLoaded, onUserDetailsLoaded);\r\n\r\n return () => {\r\n window.removeEventListener(EventNames.UserDetailsLoaded, onUserDetailsLoaded);\r\n };\r\n }, []);\r\n\r\n const onUserDetailsLoaded = ($event: CustomEventInit) => {\r\n if ($event && $event.detail) {\r\n setUser($event.detail.user as UserDetailsViewModel);\r\n }\r\n };\r\n\r\n return {props.children};\r\n};\r\n","import { LocalStorageAccessor } from '../../StorageAccessor/LocalStorageAccessor';\r\n\r\nexport class RecommendationsCache {\r\n private static readonly recommendationsKey = 'recommendations';\r\n\r\n public static saveRecommendations = (key: string, recommendations: string) => {\r\n LocalStorageAccessor.setItem(key + ':' + this.recommendationsKey, recommendations);\r\n };\r\n\r\n public static getRecommendations = (key: string): string | null => {\r\n return LocalStorageAccessor.getItem(key + ':' + this.recommendationsKey) || null;\r\n };\r\n}\r\n","import { DeliveryMethod } from '../Delivery/DeliveryMethods/DeliveryMethod.csharp';\r\nimport { CheckoutViewModel } from '../ViewModel/CheckoutViewModel.csharp';\r\n\r\nexport class DeliveryMethodValidator {\r\n private readonly _deliveryMethodsValidators: {\r\n [type: string]: (checkout: CheckoutViewModel, errors: string[]) => boolean;\r\n } = {};\r\n\r\n public registerDeliveryMethodValidator = (type: DeliveryMethod, validator: (checkout: CheckoutViewModel, errors: string[]) => boolean): void => {\r\n this._deliveryMethodsValidators[type.toString()] = validator;\r\n };\r\n\r\n public unregisterDeliveryMethodValidator = (type: DeliveryMethod) => {\r\n delete this._deliveryMethodsValidators[type.toString()];\r\n };\r\n\r\n public validate = (checkout: CheckoutViewModel, errors: string[]): boolean => {\r\n const methodType = checkout.delivery.selectedDeliveryMethod?.methodType.toString();\r\n if (methodType) {\r\n const validator = this._deliveryMethodsValidators[methodType];\r\n if (validator) {\r\n return validator(checkout, errors);\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n}\r\n\r\nexport const deliveryMethodValidator = new DeliveryMethodValidator();\r\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum DeliveryMethodAvailability {\r\n\tOk = 0,\r\n\tAddressNotSelected = 1,\r\n\tDeliveryMethodNotSelected = 2,\r\n\tInvalidDimensions = 3,\r\n\tMailboxNotEligible = 4,\r\n\tPorterBuddyNotAvailable = 5,\r\n\tPorterBuddyAddressNotSupported = 6,\r\n\tPorterBuddyWindowNotSelected = 7,\r\n\tPostNordServicePointNotAvailable = 8,\r\n\tPostNordServicePointNotSelected = 9,\r\n\tInstaBoxExpressNotAvailable = 10,\r\n\tInstaBoxHomeNotAvailable = 11,\r\n\tNotAvailable = 12,\r\n\tHeltHjemNotAvailable = 13,\r\n\tPostNHomeNotAvailable = 14,\r\n\tPostNPickNotAvailable = 15,\r\n\tPostNPickLockersNotAvailable = 16,\r\n\tBadTemperatures = 17,\r\n\tAirmeeHomeNotAvailable = 18,\r\n\tOtcNotAvailable = 19,\r\n\tRxNotAvailable = 20,\r\n\tHeltHjemServicePointNotAvailable = 21\r\n}\r\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","// This code was generated by a Reinforced.Typings tool.\r\n// Changes to this file may cause incorrect behavior and will be lost if\r\n// the code is regenerated.\r\n\r\nexport enum WidthVariant {\r\n\tOneColumn = 0,\r\n\tTwoColumn = 1\r\n}\r\n","import { EventNames } from './EventNames';\r\n\r\nexport const lockHeader = (active: boolean, forceOpen?: boolean) => {\r\n window.dispatchEvent(\r\n new CustomEvent(EventNames.ScrollLockChange, {\r\n detail: {\r\n active: active,\r\n forceOpen: forceOpen === true\r\n }\r\n })\r\n );\r\n};\r\n","import { deleteFor, putFor } from '../../../ReactComponents/API';\r\nimport { EventNames } from '../../../ReactComponents/EventNames';\r\nimport { findWithIndex } from '../../../ReactComponents/FindWithIndex';\r\nimport { GoogleTagManager } from '../../../Tracking/GoogleTagManager/GoogleTagManager';\r\nimport { ICartDetails } from '../../Cart/ICartDetails.csharp';\r\nimport { CartItemValidationIssueViewModel } from '../../Cart/Item/ViewModels/CartItemValidationIssueViewModel.csharp';\r\nimport { CartItemViewModel } from '../../Cart/Item/ViewModels/CartItemViewModel.csharp';\r\nimport { CheckoutApiRoutes } from '../CheckoutApiRoutes.csharp';\r\nimport { handleCheckoutError } from '../Components/CheckoutBaseApi';\r\nimport { containsQuantityWarnings } from '../Validation/CheckoutValidator';\r\nimport { CheckoutUpdateLineItemResult } from './CheckoutUpdateLineItemResult.csharp';\r\n\r\nexport interface ILineItemsApi {\r\n setQuantity: (productCode: string, quantity: number) => Promise;\r\n removeFromCart: (productCode: string) => Promise;\r\n}\r\n\r\nexport class LineItemsApi implements ILineItemsApi {\r\n private routes: CheckoutApiRoutes;\r\n private getCart: () => ICartDetails;\r\n private updateCart: (cart: ICartDetails) => void;\r\n private setIsLoaderActive: (isLoaderActive: boolean) => void;\r\n\r\n constructor(\r\n routes: CheckoutApiRoutes,\r\n getCart: () => ICartDetails,\r\n updateCart: (cart: ICartDetails) => void,\r\n setIsLoaderActive: (isLoaderActive: boolean) => void\r\n ) {\r\n this.routes = routes;\r\n this.getCart = getCart;\r\n this.updateCart = updateCart;\r\n this.setIsLoaderActive = setIsLoaderActive;\r\n }\r\n\r\n private get cart() {\r\n return this.getCart();\r\n }\r\n\r\n public setQuantity = async (productCode: string, quantity: number): Promise => {\r\n const product = this.cart.summary.items.find((x) => x.code === productCode);\r\n if (!product) return SetQuantityResult.failed();\r\n\r\n const quantityBefore = product.quantityOrdered;\r\n if (quantity <= 0) return SetQuantityResult.failed();\r\n\r\n // eslint-disable-next-line\r\n const url = `${this.routes.cartItemUrl}?productCode=${productCode}&quantity=${quantity}&cartId=${this.cart.cartId}&loginExpected=${this.cart.isUserLoggedIn}&hash=${this.cart.hash}`;\r\n\r\n return await putFor(url)\r\n .then((result) => {\r\n this.updateCart(result.checkout);\r\n\r\n if (result.validationIssues?.length > 0) {\r\n this.setValidationIssuesToLineItem(this.cart.summary.items, productCode, result.validationIssues);\r\n }\r\n\r\n const updateResult = this.updateSucceeded(productCode, result.checkout);\r\n if (updateResult.succeeded) {\r\n GoogleTagManager.changeQuantity(product, updateResult.quantity ?? quantity, quantityBefore);\r\n this.dispatchQuantityChangeEvent(result.checkout);\r\n return SetQuantityResult.succeeded(updateResult.quantity ?? quantity);\r\n }\r\n\r\n return SetQuantityResult.succeeded(updateResult.quantity ?? product.quantityOrdered);\r\n })\r\n .catch(async (error) => {\r\n const checkout = handleCheckoutError(error, this.cart);\r\n this.updateCart(checkout);\r\n return SetQuantityResult.failed();\r\n });\r\n };\r\n\r\n public removeFromCart = async (productCode: string): Promise => {\r\n // eslint-disable-next-line\r\n const url = `${this.routes.cartItemUrl}?productCode=${productCode}&cartId=${this.cart.cartId}&loginExpected=${this.cart.isUserLoggedIn}&hash=${this.cart.hash}`;\r\n this.setIsLoaderActive(true);\r\n\r\n return await deleteFor(url)\r\n .then((cart) => {\r\n this.updateCart(cart);\r\n if (this.removeSucceeded(productCode, cart)) {\r\n this.dispatchQuantityChangeEvent(cart);\r\n return true;\r\n }\r\n\r\n return false;\r\n })\r\n .catch((error) => {\r\n const checkout = handleCheckoutError(error, this.cart);\r\n this.updateCart(checkout);\r\n return false;\r\n })\r\n .finally(() => {\r\n this.setIsLoaderActive(false);\r\n });\r\n };\r\n\r\n private setValidationIssuesToLineItem = (\r\n items: CartItemViewModel[],\r\n productCode: string,\r\n issues: CartItemValidationIssueViewModel[]\r\n ): CartItemViewModel[] => {\r\n const { index, item } = findWithIndex(items, (x) => x.code == productCode);\r\n\r\n if (!item) {\r\n return items;\r\n }\r\n\r\n const codes = item.validationIssues.map((x) => x.code);\r\n for (const issue of issues) {\r\n if (codes.includes(issue.code) === false) {\r\n item.validationIssues.push(issue);\r\n }\r\n }\r\n\r\n items[index] = item;\r\n\r\n return items;\r\n };\r\n\r\n private dispatchQuantityChangeEvent = (cart: ICartDetails) => {\r\n const event = new CustomEvent(EventNames.CartTotalQuantityChanged, {\r\n detail: { totalQuantity: cart.summary.totalQuantity }\r\n });\r\n window.dispatchEvent(event);\r\n };\r\n\r\n private updateSucceeded = (productCode: string, cart: ICartDetails): { succeeded: boolean; quantity?: number } => {\r\n if (!cart?.summary?.items) return { succeeded: false, quantity: undefined };\r\n\r\n const updatedItem = cart.summary.items.find((x) => x.code === productCode);\r\n\r\n return {\r\n succeeded: (updatedItem && !containsQuantityWarnings(updatedItem)) ?? false,\r\n quantity: updatedItem && updatedItem.quantityOrdered\r\n };\r\n };\r\n\r\n private removeSucceeded = (productCode: string, cart: ICartDetails) => {\r\n if (!cart?.summary?.items) return false;\r\n\r\n const removedItem = cart.summary.items.find((x) => x.code === productCode);\r\n\r\n return !removedItem;\r\n };\r\n}\r\n\r\nexport class SetQuantityResult {\r\n quantity: number;\r\n succeeded: boolean;\r\n\r\n constructor(succeeded: boolean, quantity: number) {\r\n this.quantity = quantity;\r\n this.succeeded = succeeded;\r\n }\r\n\r\n static failed = () => new SetQuantityResult(false, 0);\r\n static succeeded = (quantity: number) => new SetQuantityResult(true, quantity);\r\n}\r\n","export function findWithIndex(items: T[], predicate: (value: T, index: number, obj: T[]) => boolean): { index: number; item?: T } {\r\n for (let i = 0; i < items.length; i++) {\r\n if (predicate(items[i], i, items)) {\r\n return { index: i, item: { ...items[i] } };\r\n }\r\n }\r\n\r\n return { index: -1, item: undefined };\r\n}\r\n"],"sourceRoot":""}