{"version":3,"sources":["webpack:///./Farmasiet.CMS/Resources/Translations.ts","webpack:///./Farmasiet.CMS/Features/Components/Common/Input.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/TouchSwiper/TouchSwiper.tsx","webpack:///./Farmasiet.CMS/Features/Customers/Favourites/Favourites.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/Accordion/AccordionItem.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/Buttons/ButtonLink.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/NavigationTracker/NavigationTrackerButtonLink.tsx","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/Customers/Favourites/Components/RequiresLoginModal/RequiresLoginModal.tsx","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/Customers/Favourites/Components/FirstFavouriteModal/FirstFavouriteModal.tsx","webpack:///./Farmasiet.CMS/Features/Components/Availability/ProductBuyingMode.csharp.ts","webpack:///./Farmasiet.CMS/Features/Recommendations/Components/RecommededProducts/RecommendedProducts.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/index-filters.ts","webpack:///./Farmasiet.CMS/Features/Purchase/IsFromPriceSpiderAccessor.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/Modal/Modal.tsx","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/HandleClickEvents.ts","webpack:///./Farmasiet.CMS/Features/Components/Availability/ProductAvailabilityMode.csharp.ts","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/ReactComponents/SmoothScrollTo.ts","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/Features/ReactComponents/IsMobile.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/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/Components/Loader/Loader.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/AddToCartQuantityPicker/AddToCartQuantityPicker.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:///../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:///./Farmasiet.CMS/Features/ReactComponents/PriceDisplay.tsx","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/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/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/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/Partials/ProductCard/ProductCardVariant.csharp.ts","webpack:///../node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./Farmasiet.CMS/Features/ReactComponents/RegexProvider.ts","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:///../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:///./Farmasiet.CMS/Features/Partials/ProductList/ProductListVariant.csharp.ts","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:///../node_modules/lodash/_equalByTag.js","webpack:///../node_modules/lodash/_Uint8Array.js","webpack:///../node_modules/lodash/_mapToArray.js","webpack:///../node_modules/lodash/_setToArray.js","webpack:///./Farmasiet.CMS/Features/Customers/UserProfile/Components/CookiesConsent/CookieAccessor.ts","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:///../node_modules/lodash/_nodeUtil.js","webpack:///../node_modules/lodash/_baseKeys.js","webpack:///../node_modules/lodash/_isPrototype.js","webpack:///../node_modules/lodash/_nativeKeys.js","webpack:///./Farmasiet.CMS/Features/ReactComponents/ScrollLock/ScrollLock.tsx","webpack:///./Farmasiet.CMS/Features/ReactComponents/ScrollLock/ScrollbarHelpers.ts","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/Purchase/Checkout/Components/CheckoutBaseApi.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/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/ReactComponents/EventNames.ts","webpack:///./Farmasiet.CMS/Features/Tracking/GoogleTagManager/GoogleTagManagerList.ts","webpack:///./Farmasiet.CMS/Features/Purchase/Checkout/Validation/DeliveryMethodValidator.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/Contexts/UserContext.tsx","webpack:///./Farmasiet.CMS/Features/Recommendations/ViewModels/RecommendationsCache.tsx","webpack:///./Farmasiet.CMS/Features/Partials/Header/FatalErrorModal.tsx","webpack:///./Farmasiet.CMS/Features/Purchase/Checkout/Delivery/DeliveryMethods/DeliveryMethodAvailability.csharp.ts","webpack:///../node_modules/lodash/_root.js","webpack:///./Farmasiet.CMS/Features/ReactComponents/QuantityUtils.ts","webpack:///./Farmasiet.CMS/Features/Blocks/WidthVariant.csharp.ts","webpack:///./Farmasiet.CMS/Features/Purchase/Checkout/Summary/LineItemsApi.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/FindWithIndex.ts","webpack:///./Farmasiet.CMS/Features/ReactComponents/LockHeader.ts"],"names":["translations","keys","getTranslation","translationPath","args","format","getTranslationWithFallback","fallback","trans","text","length","replace","match","number","global","setTranslations","languageTranslations","props","onChange","event","timer","clearTimeout","value","target","onChangeCondition","setTimeout","triggerChange","interval","onKeyDown","key","onCancel","onAfterChange","onBlur","componentDidMount","this","render","type","id","disabled","className","onFocus","onClick","placeholder","tabIndex","autoComplete","autocomplete","state","leftPosition","touchInitialPositionX","touchCurrentPositionX","touchCurrentPositionY","swipeEnabled","elementsContainerWidth","scrollLock","swipeLock","breakpoints","elementsWidth","containerRef","wrapperRef","screenWidth","initElementsArrays","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","ref","onTouchStart","onTouchEnd","onTouchMove","style","transform","_favouritesExpirationTimeInHours","_favouritesStorage","items","setFavourites","favourites","saveFavouritesInLocalStorage","isFavourite","code","initialValue","favouriteProductCodes","includes","validateFavourites","favouritesUrl","user","isLoggedIn","data","getFavouritesFromLocalStorage","expirationDate","Date","getTime","model","userId","customerId","updateFavourites","clearFavourites","setItem","JSON","stringify","getExpirationDate","favouritesString","getItem","parse","removeItem","buildEmptyFavourites","then","now","hours","getHours","setHours","Favourites","ButtonLink","buttonClassNames","size","variant","Primary","href","rel","NavigationTrackerButtonLink","disableTracking","source","CheckoutStep","GetEventName","widgetName","RecommendationsLoaded","capitalizeFirstLetter","charAt","toUpperCase","slice","ProductRating","rating","stars","fullStars","floor","showHalfStar","emptyStars","Array","map","src","alt","ProductCard","nameInfo","link","rxUrl","price","promotions","availability","picture","subcategory","originName","promotionId","promotionName","showSucceededMessageAfterSave","minQuantity","maxQuantity","formConfiguration","isInPhysicalStoreMode","warningMessage","isAgeRestricted","isOnPrescription","showFixedLowPriceLabel","showNewProductLabel","powerReviewsRating","recommendationId","showPromoStar","showVeganLabel","showBestsellerLabel","showGoodPurchaseLabel","badgeSettings","isNewAddToCartEnabled","hidePowerReviews","Vertical","variantModifier","showOnlyFreeItemBadge","productDiscountPromotions","promo","promotionInfo","Product","p","wasVisible","setWasVisible","productUrl","setProductUrl","cartItemUrl","addToCartUrl","setAddToCartUrl","experiments","setExperiments","productCardRef","resolvedExperiments","experiment","optimizelySearchTrackingInfo","searchQuery","GoogleTagManager","productImpression","renderPrice","hasPromotions","applyStylesForDiscountedPrice","hidePercentagePromotionBadge","renderOriginalPrice","promotion","PriceDisplay","roundUp","originalPrice","resolveBuyingMode","buyingMode","OnPrescription","Prescription","Active","Default","availabilityMode","PhysicalStoreOnly","NotAvailable","trackProductClick","trackExperimentProductClick","renderButton","shouldAllowForAvailabilityNotificationSubscriptions","ProductAvailabilityNotification","viewType","variantSku","checkEmailUrl","url","productAvailabilityNotificationUrl","HorizontalSimple","mode","AddToCart","validateItemUrl","isQuantityVisible","isProductPage","prescriptionUrl","position","epiFindClickTrackingUrl","searchTrackingInfo","image","placedPrice","profile","showRefrigeratedProductWarning","disableQuantityPicker","renderBuyButton","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","CartHorizontal","mainName","productHeader2","variantSubheader","showFavouritesButton","FavouriteProductButton","product","HorizontalCompact","renderPriceForMobile","AccordionItemHeader","label","handleOpenItem","index","isActive","isExpanded","isFocused","activeLabelClassName","labelClassName","expandedIcon","collapsedIcon","isItemActive","setIsItemActive","focus","getItemsHeight","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","onActionRequiresLogin","productCode","scrollPosition","CustomEvent","ActionRequiresLogin","detail","dispatchEvent","favouritesRequestRedirectParams","RequiresLoginModal","loginUrl","registerUrl","setIsVisible","setProductCode","setScrollPosition","ampersand","showModal","$event","getEncodedUrlParams","params","URLSearchParams","location","search","toString","open","onClose","direction","Column","Medium","Link","SearchQueryParamName","trackEpiFindClick","trackId","hitType","hitId","handleCartResponseError","response","cart","setCart","find","setErrorsForItem","validationIssues","issues","findIndex","codes","issue","handleProductCardRequest","apiCall","handleRequest","handleCartRequest","defaultError","Promise","resolve","reject","json","result","catch","error","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","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","showFirstFavouriteModal","AddedFirstFavourite","FirstFavouriteModal","favouritesPageUrl","isSnackbarVisible","setIsSnackbarVisible","showSnackbar","heading","linkUrl","linkText","autoHide","ProductBuyingMode","RecommendedProducts","productList","setProductList","isLoading","setIsLoading","products","powerReviewsProductListViewModel","productListModel","setProductListModel","recommendationsLoadTimeout","variantMobile","None","area","loadProducts","getProductCards","fallbackSkus","refCode","request","includeOutOfStockItems","showOutOfStockItems","fallbackOriginName","productsUrl","finally","maxProductsAmountOnTablet","maxProductsAmountOnDesktop","withPlaceholders","skipProductsAmountOnMobile","skipProductsAmountOnTablet","skipProductsAmountOnDesktop","disableProductQuantityPicker","maxProductsAmountOnMobile","Components","FilteredProductList","component","priceSpiderProductCodes","getObject","_key","_expiration","set","setObject","clear","ModalButtonsDirection","Modal","isOpen","shouldCloseOnOverlayClick","hideCloseButton","onRequestClose","overlayClassName","priority","ariaHideApp","isLocked","ModalContent","narrow","ModalHeading","ModalHeader","ModalText","ModalButtons","Row","handleClickEvents","onMouseDown","button","MiddleButton","ProductAvailabilityMode","ProductAvailabilityNotificationViewType","CompactFavouriteProductButton","isAddedToFavourites","buttonDisabled","setButtonDisabled","isLabelVisible","setIsLabelVisible","labelVisibilityTimeout","getUrlParams","shouldAddToFavourites","scrollToProduct","addFavourite","scrollTo","top","searchParams","documentElement","scrollTop","addToWishList","newlyCreated","showLabel","ProductSortingType","color","Red","shortInfo","hideFreeItemPromotionBadge","CheapestForFree","cheapestDiscount","Mini","requiredQuantity","paidQuantity","hideFixedLowPriceBadge","hideGoodPurchaseBadge","DarkRed","additionalInfo","Pink","smoothScrollTo","endPosition","parseInt","toFixed","completed","onScroll","pageYOffset","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","variantCondition","productAmountCondition","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","isMobile","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","NewProductInfoLabel","storage","defaultValue","valueString","narrowProfile","wideProfile","textColor","narrowPictureProfile","widePictureProfile","content","html","blockClassNames","Snackbar","isHidden","setIsHidden","isClosed","setIsClosed","closeModalTimeout","fadeModalTimeout","setHideTimeouts","autoHideTimeout","onMouseEnter","onMouseLeave","onLinkClick","Loader","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","sessionStorage","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","AddToCartQuantityPicker","setValue","modifyQuantity","setQuantityTimeoutRef","shouldIncreaseBeDisabled","shouldDecreaseBeDisabled","setQuantityWithTimeout","clearSetQuantityTimeout","contentRef","collapseNameOffset","hideQuantityPicker","quantityPickerValue","handleQuantityChange","parsedQuantity","handleBlur","setQuantityForPicker","resolveOriginName","GoogleTagManagerList","productPage","resolvePromotionIdAndName","handleShowName","isMobileNameVisible","scrollY","decreaseQuantity","increaseQuantity","submit","EventNames","HideQuantityPicker","classList","add","getMessages","floating","OutOfStock","onSubmit","validateProduct","transformUrl","IsFromPriceSpiderAccessor","CartChanged","lastUpdatedItem","quantityInt","ToggleCart","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","isServerRendering","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","showCurrency","locales","formattedPrice","toLocaleString","minimumFractionDigits","maximumFractionDigits","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","addUserData","hashedEmail","isNewTab","eventCallback","dataLayer","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","enhancedConversionsUserData","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","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","clearSearchInput","ResetSearch","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","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","filters","newStatus","isPriceExpanded","getLink","filtersContainer","getFiltersWithoutCategory","categoryFilterIndex","productAmount","linkQuery","links","renderSubcategories","changedItemsStatus","expanded","categoryIndex","getFilterKeys","optionId","priceRange","onChangePriceInputMin","onChangePriceInputMax","onAfterChangePrice","updatedValues","onChangePriceRange","setPriceRange","afterChange","picturesWithoutLazyLoadingAmount","searchPhraseKey","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","clearFilters","updatedFilters","subOption","resetFilters","resetOption","subfilterKey","toggleOption","isCurrentOptionASubfilter","resetSearch","resetPrice","tagsUsed","subOptionKey","toggleTag","selectedTag","removeSearchQuery","groupedFilters","queryParams","getParentOption","builtFilters","buildUpdatedFilters","isSubfilter","toggleWithSubfilter","filterIndex","toggleWithoutSubfilter","optionIndex","updateFiltersForCategory","handleSortingTypeChange","buildSelectedOptions","f","getSelectedOptions","isActivePriceFilter","getPriceFilter","brandId","priceFilter","isSubFilter","getOptions","scrollToTop","queryForProducts","getTop","setResults","setPopstateEventListener","isProductListTrackable","setEmptyResults","handleNavigationEvent","numberOfProducts","allowedProducts","resultsCount","filterAllowedProducts","selectedPage","maxPage","buildPriceRange","hideReviewSnippet","resultsPerPage","minPrice","maxPrice","selectedMinPrice","selectedMaxPrice","getHeaderHeight","querySelector","priceValues","lastTag","optionQuery","filterOption","subfilterOption","flatMap","parentKey","changePage","runQueryForPage","handlePageChange","phrase","loadedTags","Search","replaceState","renderSortingOptions","translationKey","searchPhraseFilter","displayEmptyPageInformation","searchRecommendationsProps","showFilters","buildTagListProps","leadInText","onAddOption","selectedPrice","displayedPrice","uid","localStorage","toDateString","exception","DiscountVariant","ProductCardVariant","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","postalCode","phoneNumber","ssn","containsNumber","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","coreJsData","maskSrcKey","exec","IE_PROTO","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","ProductListVariant","setCacheAdd","setCacheHas","mapToArray","setToArray","symbolProto","symbolValueOf","byteLength","convert","stacked","nameIndicator","cookie","setCookie","expires","setTime","toUTCString","deleteCookie","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","freeProcess","process","types","require","binding","isPrototype","overArg","scrollbarWidth","updateClassList","bodyClassNames","paddingRight","activate","removeClassNames","deactivate","removeAttribute","scrollDiv","setAttribute","getScrollbarWidth","isLockedChanged","isRemoveScrollChanged","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","initializer","routes","getCheckout","updateCheckout","postalCodeAutocompleteUrl","addressAutocompleteUrl","handleCheckoutError","setCheckoutError","getStatusErrorMessage","messageKey","unexpectedOperationError","headers","additionalHeaders","Accept","__RequestVerificationToken","getElementsByName","experimentsDefinition","experimentationPathHeaderName","experimentationUserDataHeaderName","handleResponse","promise","unauthorizedHandler","ok","put","fetch","credentials","post","postFor","del","deleteFor","getFor","putFor","farmasietApi","AddToCartMode","StarInfoLabelColor","CircleInfoLabel","BlockSectionMargin","margin","onSessionExpired","SessionExpired","LoginModal","redirectToLogin","inertHelper","inert","DiscountType","CartValidated","CartTotalQuantityChanged","ShowUpdatedCart","RequestForUpdatingCart","CloseSearch","CloseNavigation","HideHeader","ScrollLockChange","ErrorOccured","CartMerged","RefreshPorterBuddy","RefreshPostNord","RefreshPostNHome","RefreshHeltHjem","RefreshShippingInfo","DeliveryProps","FatalError","RxItemsRemoved","UserDetailsLoaded","CartFromDifferentWarehouse","IframeFocused","RxRemovedFromCart","RxLogoutRequest","RxLoginRequest","EComLogoutRequest","HideAlertRibbon","featuredProducts","categoryAssociatedProducts","brandAssociatedProducts","brandPage","subbrandPage","categoryPage","subcategoryPage","campaignPage","cartPage","favouriteProducts","cartRecommendedProducts","cartDrawerRecommendedProducts","homePageRecommendedProducts","productPageRecommendedProducts","productPageCrossSellRecommendedProducts","productPageRecommendedFallbackBrandProducts","productPageRecommendedFallbackCategoryProducts","homePage","deliveryMethodValidator","_deliveryMethodsValidators","registerDeliveryMethodValidator","validator","unregisterDeliveryMethodValidator","methodType","UserContextProvider","setUser","onUserDetailsLoaded","isReady","recommendationsKey","showFatalErrorModal","FatalErrorModal","reloadWindow","reload","DeliveryMethodAvailability","freeSelf","errorAdditionalInfo","WidthVariant","getCart","updateCart","setIsLoaderActive","summary","quantityBefore","SetQuantityResult","cartId","isUserLoggedIn","setValidationIssuesToLineItem","updateResult","updateSucceeded","dispatchQuantityChangeEvent","removeSucceeded","findWithIndex","totalQuantity","updatedItem","lockHeader","forceOpen"],"mappings":"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","file":"filters.1b6b59b10be7eb8d4141.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'favourites.addToFavourites': string;\r\n\t'favourites.removeFromFavourites': 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.addedToCart': string;\r\n\t'cartSummary.itemsInYourCart': 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.increaseQuantity': string;\r\n\t'cartSummary.decreaseQuantity': 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'cartSummary.validation.atLeastOneUnavailable': string;\r\n\t'cartSummary.validation.quantityUnavailable': string;\r\n\t'cartSummary.validation.confirmAvailableQuantity': string;\r\n\t'cartSummary.validation.onlyAvailable': string;\r\n\t'cartWidget.closeInfo': 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.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.addCode': 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.orderOverview': 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.summary.coupons.notFoundForUser': string;\r\n\t'checkout.summary.coupons.notActiveYet': string;\r\n\t'checkout.summary.coupons.expired': string;\r\n\t'checkout.summary.coupons.removeCoupon': 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.GordonTimeWindowNotSelected': string;\r\n\t'checkout.shippingMethodAvailability.GordonNotAvailable': 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.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.ProductListVariant.None': string;\r\n\t'enum.ProductListVariant.CartHorizontal': 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'favourites.addToFavourites': 'favourites.addToFavourites',\r\n\t'favourites.removeFromFavourites': 'favourites.removeFromFavourites',\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.addedToCart': 'cartSummary.addedToCart',\r\n\t'cartSummary.itemsInYourCart': 'cartSummary.itemsInYourCart',\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.increaseQuantity': 'cartSummary.increaseQuantity',\r\n\t'cartSummary.decreaseQuantity': 'cartSummary.decreaseQuantity',\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'cartSummary.validation.atLeastOneUnavailable': 'cartSummary.validation.atLeastOneUnavailable',\r\n\t'cartSummary.validation.quantityUnavailable': 'cartSummary.validation.quantityUnavailable',\r\n\t'cartSummary.validation.confirmAvailableQuantity': 'cartSummary.validation.confirmAvailableQuantity',\r\n\t'cartSummary.validation.onlyAvailable': 'cartSummary.validation.onlyAvailable',\r\n\t'cartWidget.closeInfo': 'cartWidget.closeInfo',\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.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.addCode': 'checkout.summary.addCode',\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.orderOverview': 'checkout.summary.orderOverview',\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.summary.coupons.notFoundForUser': 'checkout.summary.coupons.notFoundForUser',\r\n\t'checkout.summary.coupons.notActiveYet': 'checkout.summary.coupons.notActiveYet',\r\n\t'checkout.summary.coupons.expired': 'checkout.summary.coupons.expired',\r\n\t'checkout.summary.coupons.removeCoupon': 'checkout.summary.coupons.removeCoupon',\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.GordonTimeWindowNotSelected': 'checkout.shippingMethodAvailability.GordonTimeWindowNotSelected',\r\n\t'checkout.shippingMethodAvailability.GordonNotAvailable': 'checkout.shippingMethodAvailability.GordonNotAvailable',\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.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.ProductListVariant.None': 'enum.ProductListVariant.None',\r\n\t'enum.ProductListVariant.CartHorizontal': 'enum.ProductListVariant.CartHorizontal',\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\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\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 { 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 * 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","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","// 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 { ProductAvailabilityMode } from '../../Components/Availability/ProductAvailabilityMode.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\ninterface ProductCardInterface extends ProductCardProps {\r\n disableQuantityPicker?: boolean;\r\n}\r\n\r\nexport const ProductCard = (props: ProductCardInterface) => {\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 isNewAddToCartEnabled\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.optimizelySearchTrackingInfo?.searchQuery) {\r\n productUrl = addParameter(productUrl, SearchQueryParamName, props.model.optimizelySearchTrackingInfo.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 = () => {\r\n if (variant === ProductCardVariant.HorizontalSimple) return;\r\n\r\n const mode = resolveBuyingMode();\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const resolveBuyingMode = () => {\r\n switch (availability.buyingMode) {\r\n case ProductBuyingMode.OnPrescription:\r\n return AddToCartMode.Prescription;\r\n case ProductBuyingMode.Active:\r\n return AddToCartMode.Default;\r\n default:\r\n if (availability.availabilityMode === ProductAvailabilityMode.PhysicalStoreOnly && isInPhysicalStoreMode) {\r\n return AddToCartMode.Default;\r\n }\r\n\r\n return AddToCartMode.NotAvailable;\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 ? renderSubscribeForAvailabilityNotificationButton() : renderBuyButton()}\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 {variant !== ProductCardVariant.CartHorizontal ? (\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 \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 \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\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 { post } from '../../ReactComponents/API';\r\nimport { OptimizelySearchTrackingInfo } from './OptimizelySearchTrackingInfo.csharp';\r\n\r\nexport const SearchQueryParamName = 'searchQuery';\r\n\r\nexport const trackEpiFindClick = (url: string, position: number, searchTrackingInfo: OptimizelySearchTrackingInfo) => {\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","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","// 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 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\ninterface RecommendedProductsInterface extends RecommendedProductsProps {\r\n disableProductQuantityPicker?: boolean;\r\n}\r\n\r\nexport const RecommendedProducts = (props: RecommendedProductsInterface) => {\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","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 { 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 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","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","// 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 ProductAvailabilityMode {\r\n\tInStock = 0,\r\n\tOnDemand = 1,\r\n\tNotInStock = 2,\r\n\tPhysicalStoreOnly = 3,\r\n\tTemporarySalesStop = 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 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","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","// 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 { isMobile } from '../../ReactComponents/IsMobile';\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 disableProductQuantityPicker?: boolean;\r\n}\r\n\r\nexport const ProductList = (props: IProductListProps) => {\r\n const { profile, cartItemUrl, validateItemUrl, rxUrl, epiFindClickTrackingUrl, experimentProductClickUrl, model, disableProductQuantityPicker } = 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 if (variant === ProductListVariant.CartHorizontal) {\r\n return ProductCardVariant.CartHorizontal;\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 || variant === ProductListVariant.CartHorizontal) && !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 const variantCondition = variant === ProductListVariant.GridWithSwiper || (isMobile() && variant === ProductListVariant.CartHorizontal);\r\n const productAmountCondition =\r\n (products.length >= minProductsAmount || !!props.isLoading) && (maxProductsAmountOnMobile === 0 || maxProductsAmountOnMobile >= minProductsAmount);\r\n\r\n return variantCondition && productAmountCondition;\r\n };\r\n\r\n const renderProductsWithAdditionalBlocks = () => {\r\n return props.variant === ProductListVariant.Horizontal ||\r\n props.variant === ProductListVariant.CartHorizontal ||\r\n props.variant === ProductListVariant.HorizontalSimple ? (\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 ) : props.variant === ProductListVariant.CartHorizontal ? (\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","import { isServerRendering } from './IsServerRendering';\r\n\r\nexport const isMobile = (): boolean => {\r\n return !isServerRendering() && window.innerWidth < 768;\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 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 * 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","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 disabled?: 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 ) : (\r\n {getTranslation(keys['addToCart.buy'])}\r\n );\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 ? (\r\n {getTranslation(keys['product.myPrescriptions'])}\r\n ) : (\r\n {getTranslation(keys['productCard.prescription'])}\r\n )}\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 componentDidMount(): void {\r\n if (typeof window === undefined || !zECustomSettings?.useCustomizedZendeskForViagraForm) return;\r\n\r\n const isZendeskChatMessages = sessionStorage?.getItem('isZendeskChatMessages');\r\n const isZendeskChatServed = sessionStorage?.getItem('isZendeskChatServed');\r\n\r\n if (isZendeskChatMessages) {\r\n this.setState({\r\n isZendeskChatMessages: true\r\n });\r\n }\r\n if (isZendeskChatServed) {\r\n this.setState({\r\n isZendeskChatServed: true\r\n });\r\n }\r\n\r\n if (isZendeskChatMessages && isZendeskChatServed) {\r\n this.setState({\r\n wasChatRejected: true\r\n });\r\n }\r\n\r\n if (isZendeskChatMessages || isZendeskChatServed) {\r\n this.checkStatus();\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 ) : (\r\n {getTranslation(keys['viagraForm.addToCart'])}\r\n )}\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 if (areAllChecked && areCustomerAllowedToBuy && wasChatRejected && !isContactWithPharmacistChecked) {\r\n sessionStorage?.removeItem('isZendeskChatMessages');\r\n sessionStorage?.removeItem('isZendeskChatServed');\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 React, { useRef } from 'react';\r\n\r\nimport { getTranslation, keys } from '../../../../../../../Resources/Translations';\r\nimport { Loader } from '../../../../../../Components/Loader/Loader';\r\n\r\ninterface AddToCartQuantityPickerProps {\r\n value: number;\r\n setValue: (value: number) => void;\r\n quantityOrdered: number;\r\n minQuantity: number;\r\n maxQuantity: number;\r\n isLoading: boolean;\r\n modifyQuantity: (quantity: number) => void;\r\n}\r\n\r\nexport const AddToCartQuantityPicker = ({\r\n value,\r\n setValue,\r\n quantityOrdered,\r\n minQuantity,\r\n maxQuantity,\r\n isLoading,\r\n modifyQuantity\r\n}: AddToCartQuantityPickerProps) => {\r\n const setQuantityTimeoutRef = useRef | null>(null);\r\n\r\n const shouldIncreaseBeDisabled = (): boolean => {\r\n return value >= maxQuantity;\r\n };\r\n\r\n const shouldDecreaseBeDisabled = (): boolean => {\r\n return value <= minQuantity;\r\n };\r\n\r\n const increaseQuantity = () => {\r\n if (shouldIncreaseBeDisabled()) return;\r\n setQuantityWithTimeout(value + 1);\r\n };\r\n\r\n const decreaseQuantity = () => {\r\n if (shouldDecreaseBeDisabled()) return;\r\n if (value > 1) {\r\n setQuantityWithTimeout(value - 1);\r\n }\r\n };\r\n\r\n const setQuantityWithTimeout = (value: number) => {\r\n setValue(value);\r\n\r\n clearSetQuantityTimeout();\r\n setQuantityTimeoutRef.current = setTimeout(() => {\r\n modifyQuantity(value - quantityOrdered);\r\n }, 500);\r\n };\r\n\r\n const clearSetQuantityTimeout = () => {\r\n setQuantityTimeoutRef.current && clearTimeout(setQuantityTimeoutRef.current);\r\n setQuantityTimeoutRef.current = null;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n {getTranslation(keys['cartSummary.increaseQuantity'])}\r\n \r\n {value}\r\n \r\n {getTranslation(keys['cartSummary.decreaseQuantity'])}\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 { OptimizelySearchTrackingInfo } from '../../../../../../Filtering/Api/OptimizelySearchTrackingInfo.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 { CartViewModel } from '../../../../ViewModels/CartViewModel.csharp';\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\nimport { AddToCartQuantityPicker } from '../AddToCartQuantityPicker/AddToCartQuantityPicker';\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 quantityPickerValue: number;\r\n quantityOrdered: number;\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 OptimizelySearchTrackingInfo;\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: OptimizelySearchTrackingInfo;\r\n position: number;\r\n disableQuantityPicker?: boolean;\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 quantityPickerValue: 0,\r\n quantityOrdered: 0\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.disableQuantityPicker) {\r\n window.addEventListener(EventNames.HideQuantityPicker, this.hideQuantityPicker);\r\n }\r\n\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 if (!this.props.disableQuantityPicker) {\r\n window.removeEventListener(EventNames.HideQuantityPicker, this.hideQuantityPicker);\r\n }\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 disableQuantityPicker\r\n } = this.props;\r\n const {\r\n minQuantity,\r\n maxQuantity,\r\n quantity,\r\n isFormVisible,\r\n isLoading,\r\n errors,\r\n isMobileNameVisible,\r\n quantityPickerValue,\r\n quantityOrdered,\r\n displaySucceededMessage\r\n } = 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 {quantityPickerValue > 0 && !disableQuantityPicker ? (\r\n this.setState({ quantityPickerValue: value })}\r\n modifyQuantity={(value: number) => this.addToCart(code, value)}\r\n isLoading={isLoading}\r\n quantityOrdered={quantityOrdered}\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 hideQuantityPicker = ($event: CustomEventInit) => {\r\n if ($event && $event.detail) {\r\n const productCode = $event.detail.productCode as string;\r\n if (this.props.model.code !== productCode && this.state.quantityPickerValue > 0) {\r\n this.setState({ quantityPickerValue: 0 });\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 window.dispatchEvent(new CustomEvent(EventNames.HideQuantityPicker, { detail: { productCode } }));\r\n\r\n const quantityInt = quantity || 0;\r\n\r\n if (quantityInt >= 0) {\r\n GoogleTagManager.addToCart(this.props.model, quantityInt, result.trackingData, originName, promotionId, promotionName);\r\n window.dispatchEvent(new CustomEvent(EventNames.ToggleCart, { detail: { open: true } }));\r\n } else {\r\n const item = result.cart?.items?.find((x) => x.code === productCode);\r\n if (item) {\r\n GoogleTagManager.removeFromCart(item, quantityInt * -1);\r\n }\r\n }\r\n\r\n if (this.props.showSucceededMessageAfterSave && quantityInt >= 0) {\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 this.setQuantityForPicker(result.cart, productCode);\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 this.setQuantityForPicker(result.cart, productCode);\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 setQuantityForPicker = (cart: CartViewModel, productCode: string) => {\r\n const item = cart?.items?.find((x) => x.code === productCode);\r\n if (item) {\r\n this.setState({ quantityPickerValue: item.quantityOrdered, quantityOrdered: item.quantityOrdered });\r\n }\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","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","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","/**\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 email?: string;\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 addUserData = (userId?: string, hashedEmail?: string) => {\r\n this.pushToDataLayer({ userId: userId, email: hashedEmail });\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 { isServerRendering } from '../../../ReactComponents/IsServerRendering';\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\ndeclare global {\r\n interface Window {\r\n enhancedConversionsUserData: {\r\n userId: string;\r\n email: string;\r\n };\r\n }\r\n}\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 constructor() {\r\n // We need to push user data to data layer first, so it is available when other events like 'purchase' are pushed.\r\n // That's why we do this in the constructor.\r\n if (!isServerRendering() && window.enhancedConversionsUserData) {\r\n // grab user data attached to window during rendering of EnhancedConversionsUserData.cshtml\r\n const { userId, email } = window.enhancedConversionsUserData;\r\n this._googleTagManagerDataLayer.addUserData(userId, email);\r\n }\r\n }\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 addUserData(userId?: string, hashedEmail?: string) {\r\n this._dataLayer.addUserData(userId, hashedEmail);\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\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 tabIndex?: number | undefined;\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","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 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 { LoadedTag } 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 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 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 { 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 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 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 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, 'Classic');\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) {\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 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\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 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 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 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 = (selectedTag: string, removeSearchQuery: boolean, filters: { key: string; value: string }[], callback?: () => void) => {\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\r\n getFor(url)\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, '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 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 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 (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 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.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","// 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\tCartHorizontal = 4\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","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","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","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","// 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\tCartHorizontal = 5\r\n}\r\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","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","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 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","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","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","/**\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 { 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","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","// 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","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 static readonly HideQuantityPicker: string = 'HideQuantityPicker';\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 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 { 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","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 * 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","// 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\tGordonNotAvailable = 22\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","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","// 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 { 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","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"],"sourceRoot":""}