{"version":3,"file":"react.a65d4b41ea1c4b41eca3.js","mappings":"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","sources":["webpack://sitecore-platform/./src/components-react/ScReact.tsx","webpack://sitecore-platform/./src/hooks/useTranslation.js","webpack://sitecore-platform/./src/components-react/OrderLists/AddToOrderListModal/AddToOrderListModal.module.scss?15fb","webpack://sitecore-platform/./src/components-react/OrderLists/AddToOrderListModal/ErrorMessageModal.tsx","webpack://sitecore-platform/./src/components-react/OrderLists/AddToOrderListModal/SuccessMessageModal.tsx","webpack://sitecore-platform/./src/components-react/OrderLists/AddToOrderListModal/AddToOrderListModal.tsx","webpack://sitecore-platform/./src/components-react/OrderLists/AddToOrderListsButton/AddToOrderListsButton.tsx","webpack://sitecore-platform/./src/components-react/Breadcrumb/Breadcrumb.module.scss?8a7a","webpack://sitecore-platform/./src/components-react/CTACarousel/CTACarousel.tsx","webpack://sitecore-platform/./src/components-react/Srcset/Srcset.tsx","webpack://sitecore-platform/./src/components-react/ErrorFeedback/ErrorFeedback.module.scss?e315","webpack://sitecore-platform/./src/components-react/ErrorFeedback/ErrorFeedback.js","webpack://sitecore-platform/./src/components-react/ProductDetail/ProductDetailAddToCart/ProductDetailAddToCart.tsx","webpack://sitecore-platform/./src/components-react/ProductSpecialist/ProductSpecialistWide.module.scss?1225","webpack://sitecore-platform/./src/utils/mapProductsData.ts","webpack://sitecore-platform/./src/components-react/ProductDetail/ProductTitle/ProductTitle.tsx","webpack://sitecore-platform/./src/components-react/Cart/AddToCartLayer/AddToCartLayer.tsx","webpack://sitecore-platform/./src/components-react/Cart/AddToCartLayer/AddToCart.module.scss?efe8","webpack://sitecore-platform/./src/components-react/Cart/AddToCartLayer/ProvideAddToCartLayer.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/stores/selectors.js","webpack://sitecore-platform/./src/components-react/ProductOverview/Components/CategoryFacets/CategoryFacets.module.scss?f813","webpack://sitecore-platform/./src/components-react/ProductOverview/Components/CategoryFacets/CategoryFacets.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Connectors/ConnectedCategoryFacets.ts","webpack://sitecore-platform/./src/components-react/WithScProps/WithScProps.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Components/FilterBadges/FilterBadges.module.scss?3ced","webpack://sitecore-platform/./src/components-react/ProductOverview/Components/FilterBadges/FilterBadges.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Connectors/ConnectedFilterBadges.ts","webpack://sitecore-platform/./src/components-react/ProductOverview/Components/OpenFacetsButton/OpenFacetsButton.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Components/Pagination/Pagination.module.scss?278a","webpack://sitecore-platform/./src/components-react/ProductOverview/Components/Pagination/Pagination.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Connectors/ConnectedPagination.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Connectors/ConnectedProductCount.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Components/ProductCount/ProductCount.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Components/SortOrder/SortOrder.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Connectors/ConnectedSortOrder.tsx","webpack://sitecore-platform/./src/components-react/ProductTile/useUserPrices.ts","webpack://sitecore-platform/./src/components-react/ProductTile/Components/Labels.module.scss?8a64","webpack://sitecore-platform/./src/components-react/ProductTile/Components/Labels.tsx","webpack://sitecore-platform/./src/components-react/ProductTile/Components/Media.module.scss?1069","webpack://sitecore-platform/./src/components-react/ProductTile/Components/Media.tsx","webpack://sitecore-platform/./src/utils/productConstants.js","webpack://sitecore-platform/./src/components-react/ProductTile/Components/VariantOptions.module.scss?a66d","webpack://sitecore-platform/./src/components-react/ProductTile/Components/VariantOptions.tsx","webpack://sitecore-platform/./src/components-react/ProductTile/ProductTile.module.scss?7f6f","webpack://sitecore-platform/./src/components-react/ProductTile/ProductTile.tsx","webpack://sitecore-platform/./src/components-react/ProductTile/Components/SwipeableProductTileList.module.scss?b3b4","webpack://sitecore-platform/./src/components-react/ProductTile/Components/SwipeableProductTileList.tsx","webpack://sitecore-platform/./src/components-react/ProductTile/ProductTileList.module.scss?f3b7","webpack://sitecore-platform/./src/components-react/ProductTile/ProductTileList.tsx","webpack://sitecore-platform/./src/components-react/ProductDetail/ProductVariantSelector/ProductVariantSelector.module.scss?30d3","webpack://sitecore-platform/./src/components-react/ProductDetail/ProductVariantSelector/ProductVariantSelector.tsx","webpack://sitecore-platform/./src/components-react/FullPageScrollPane/FullPageScrollPane.module.scss?fd47","webpack://sitecore-platform/./src/components-react/FullPageScrollPane/FullPageScrollPane.tsx","webpack://sitecore-platform/./src/components-react/Portal/Portal.tsx","webpack://sitecore-platform/./src/utils/debounce.ts","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/utilities/isDateObject.ts","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/utilities/isNullOrUndefined.ts","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/utilities/isObject.ts","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/utilities/isPrimitive.ts","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/utilities/deepEqual.ts","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/hooks/useQrScanner.ts","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/misc/defaultConstraints.ts","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/components/Tracker.tsx","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/hooks/useMediaDevices.ts","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/components/Counter.tsx","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/components/Finder.tsx","webpack://sitecore-platform/./src/components-react/Search/Components/react-qr-scanner/components/QrScanner.tsx","webpack://sitecore-platform/./src/components-react/Search/Components/BarcodeScanner.tsx","webpack://sitecore-platform/./src/components-react/Search/Components/BarcodeScanner.module.scss?de9d","webpack://sitecore-platform/./src/components-react/Search/Connectors/ConnectProductTileList.tsx","webpack://sitecore-platform/./src/components-react/Search/Connectors/ConnectedFilterBadges.tsx","webpack://sitecore-platform/./src/components-react/Search/Connectors/ConnectedSortOrder.tsx","webpack://sitecore-platform/./src/components-react/Search/Connectors/ConnectedPagination.tsx","webpack://sitecore-platform/./src/components-react/Search/Connectors/ConnectedCategoryFacets.ts","webpack://sitecore-platform/./src/components-react/Search/Components/ProductCount.tsx","webpack://sitecore-platform/./src/components-react/Search/Components/SearchModal.tsx","webpack://sitecore-platform/./src/components-react/Search/Components/SearchModal.module.scss?3cc7","webpack://sitecore-platform/./src/components-react/Search/Connectors/ConnectedSearchBox.tsx","webpack://sitecore-platform/./src/utils/cookies.ts","webpack://sitecore-platform/./src/components-react/Search/Components/SearchBox.tsx","webpack://sitecore-platform/./src/hooks/useLazyEffect.ts","webpack://sitecore-platform/./src/hooks/useDebounce.ts","webpack://sitecore-platform/./src/components-react/Search/Components/SearchBox.module.scss?66d7","webpack://sitecore-platform/./src/components-react/Cart/ShoppingCartButton/ShoppingCartButton.module.scss?e294","webpack://sitecore-platform/./src/components-react/Cart/ShoppingCartButton/ConnectShoppingCartButton.tsx","webpack://sitecore-platform/./src/components-react/Cart/ShoppingCartButton/ShoppingCartButton.tsx","webpack://sitecore-platform/./src/components-react/Toast/ProvideToastContainer.tsx","webpack://sitecore-platform/./src/components-react/ProductDetail/QuotationRequest/QuotationRequest.tsx","webpack://sitecore-platform/./src/components-react/USP/USP.module.scss?8169","webpack://sitecore-platform/./src/expose-components.js","webpack://sitecore-platform/./src/components-react/BackToOverview/BackToOverview.tsx","webpack://sitecore-platform/./src/components-react/BrandsList/BrandsList.tsx","webpack://sitecore-platform/./src/components-react/BrandsList/BrandsList.module.scss?ac71","webpack://sitecore-platform/./src/components-react/Breadcrumb/Breadcrumb.tsx","webpack://sitecore-platform/./src/components-react/CTACarousel/CTACarousel.module.scss?ff26","webpack://sitecore-platform/./src/components-react/CallToAction/CallToAction.tsx","webpack://sitecore-platform/./src/components-react/CallToAction/CallToAction.module.scss?dafb","webpack://sitecore-platform/./src/components-react/CallToActionLargeVariants/CallToActionLargeVariants.tsx","webpack://sitecore-platform/./src/components-react/CallToActionLargeVariants/CallToActionLargeVariants.module.scss?fe76","webpack://sitecore-platform/./src/components-react/CallToActionSmall/CallToActionSmall.tsx","webpack://sitecore-platform/./src/components-react/CallToActionSmall/CallToActionSmall.module.scss?f20b","webpack://sitecore-platform/./src/components-react/CustomerRating/CustomerRating.tsx","webpack://sitecore-platform/./src/components-react/CustomerRating/CustomerRating.module.scss?2b68","webpack://sitecore-platform/./src/components-react/CustomerRatingsCarousel/CustomerRatings.tsx","webpack://sitecore-platform/./src/components-react/CustomerRatingsCarousel/CustomerRatings.module.scss?d7ac","webpack://sitecore-platform/./src/components-react/ErrorTest/ErrorTest.js","webpack://sitecore-platform/./src/components-react/TypeScriptExample/ExampleTypeScript.tsx","webpack://sitecore-platform/./src/components-react/TypeScriptExample/ExampleTypeScript.module.scss?089f","webpack://sitecore-platform/./src/components-react/HeroBanner/HeroBanner.tsx","webpack://sitecore-platform/./src/components-react/HeroBanner/HeroBanner.module.scss?acac","webpack://sitecore-platform/./src/components-react/HorizontalLine/HorizontalLine.tsx","webpack://sitecore-platform/./src/components-react/HorizontalLine/HorizontalLine.module.scss?cf2d","webpack://sitecore-platform/./src/components-react/ProductSpecialist/ProductSpecialist.tsx","webpack://sitecore-platform/./src/components-react/ProductSpecialist/ProductSpecialistWide.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Providers/ProvideCategoryFacets.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Providers/ProvideFilterBadges.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Providers/ProvideOpenFacetsButton.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Providers/ProvidePagination.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Providers/ProvideProductCount.tsx","webpack://sitecore-platform/./src/components-react/ProductTile/ProvideProductTileList.tsx","webpack://sitecore-platform/./src/components-react/ProductDetail/ProductVariantSelector/ProvideProductVariantSelector.tsx","webpack://sitecore-platform/./src/components-react/Search/Providers/ProvideSearchBox.tsx","webpack://sitecore-platform/./src/components-react/Cart/ShoppingCartButton/ProvideShoppingCartButton.tsx","webpack://sitecore-platform/./src/components-react/ProductOverview/Providers/ProvideSortOrder.tsx","webpack://sitecore-platform/./src/components-react/USP/USP.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport objstr from 'obj-str';\r\nimport { ScProps } from './ScProps';\r\n\r\nexport const ScReact = (props: ScProps) => {\r\n const cssClassNames = objstr({\r\n [props.className]: !!props.className,\r\n component: true,\r\n [props.renderingCssClass]: !!props.renderingCssClass,\r\n [props.styles]: !!props.styles\r\n });\r\n\r\n return (\r\n \r\n
\r\n {props.children}\r\n
\r\n );\r\n};\r\n\r\n\r\n/**\r\n *\r\n * @param Component React Component\r\n * @returns\r\n */\r\n\r\nexport function withScReact(Component: any) {\r\n return function WithScReactComponent(scProps: ScProps, ...props: any) {\r\n\r\n const cssClassNames = objstr({\r\n [scProps.className]: !!scProps.className,\r\n component: true,\r\n [scProps.renderingCssClass]: !!scProps.renderingCssClass,\r\n [scProps.styles]: !!scProps.styles\r\n });\r\n\r\n\r\n const componentProps = {\r\n ...props,\r\n ...scProps?.data\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n };\r\n}\r\nexport default withScReact;\r\n","/**\r\n * Stub for https://github.com/i18next/react-i18next/blob/master/src/useTranslation.js\r\n * for when i18Next will be introduced\r\n */\r\n\r\nexport function useTranslation(phrases = undefined) {\r\n function translate(key) {\r\n\r\n if(typeof phrases !== 'undefined') {\r\n return phrases[key] ?? `[T:${key}]`;\r\n }\r\n\r\n return `[T:${key}]`;\r\n }\r\n return {\r\n t: translate,\r\n i18n: stub => stub,\r\n ready: true\r\n };\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"modalHeader\":\"AddToOrderListModal-module__modalHeader--VLCO\",\"border-bottom\":\"AddToOrderListModal-module__border-bottom--rQTR\",\"formHeader\":\"AddToOrderListModal-module__formHeader--pnGr\",\"selectButton\":\"AddToOrderListModal-module__selectButton--t7bS\",\"thumbnail\":\"AddToOrderListModal-module__thumbnail--Vlwe\",\"list\":\"AddToOrderListModal-module__list--vIbn\",\"listItem\":\"AddToOrderListModal-module__listItem--LZhO\",\"priceLabel\":\"AddToOrderListModal-module__priceLabel--Fv7P\"};","/* TODO: Replace with toast component once that is implemented */\r\nimport React from 'react';\r\nimport { useTranslation } from '@hooks/useTranslation';\r\nimport { Modal } from '@components-react/Modal/Modal';\r\n\r\nexport interface IErrorMessageModalProps {\r\n phrases: IPhrases;\r\n dismissModal: any;\r\n}\r\n\r\nexport const ErrorMessageModal = (props: IErrorMessageModalProps) => {\r\n const { dismissModal, phrases} = props;\r\n const { t } = useTranslation(phrases);\r\n\r\n const modalButtons = [{\r\n type: 'primary',\r\n label: 'OK',\r\n onClick: dismissModal\r\n }];\r\n\r\n return (\r\n \r\n

{t('AddToOrderList_Error_Message')}

\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { useTranslation } from '@hooks/useTranslation';\r\nimport { Modal } from '@components-react/Modal/Modal';\r\nimport styles from './AddToOrderListModal.module.scss';\r\n\r\nexport interface ISuccessMessageModalProps {\r\n phrases: IPhrases;\r\n dismissModal: any;\r\n thumbnail: any;\r\n code: string;\r\n title: string;\r\n displayTax: boolean;\r\n price: string;\r\n unitDescription: string;\r\n}\r\n\r\nexport const SuccessMessageModal = (props: ISuccessMessageModalProps) => {\r\n const { dismissModal, thumbnail, code, title, price, unitDescription, displayTax, phrases } = props;\r\n const { t } = useTranslation(phrases);\r\n\r\n const modalButtons = [{\r\n type: 'primary',\r\n label: t('AddToOrderList_Finish'),\r\n onClick: dismissModal\r\n }];\r\n\r\n const HeaderComponent = () => {\r\n return (\r\n
\r\n

{ t('AddToOrderList_Success_Message') }

\r\n
\r\n {thumbnail &&
}\r\n
\r\n

{title}

\r\n
{t('AddToOrderList_ProductCode')} {code}
\r\n
\r\n {price} {unitDescription}\r\n
\r\n

\r\n {(displayTax ? t('AddToOrderList_IncTax') : t('AddToOrderList_ExTax'))}\r\n

\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n\r\n return (\r\n \r\n \r\n );\r\n};\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { isFulfilled,isRejected } from '@reduxjs/toolkit';\r\nimport { useTranslation } from '@hooks/useTranslation';\r\nimport { selectDisplayTax } from '@components/Preferences/preferencesSlice';\r\nimport { Modal } from '@components-react/Modal/Modal';\r\nimport { Media as MediaData, UnitOfMeasure } from '@sctypes/product/Product';\r\nimport { ScProps } from '@components-react/ScProps';\r\nimport { ScReact } from '@components-react/ScReact';\r\nimport { getOrderLists, selectOrderLists, displayOrderListsModal, addItemsToOrderList } from '../state/orderListsSlice';\r\nimport { addItemToOrderListsThunk } from '../state/orderListsThunks';\r\nimport { IOrderList } from '../types';\r\nimport styles from './AddToOrderListModal.module.scss';\r\nimport { ErrorMessageModal } from './ErrorMessageModal';\r\nimport { SuccessMessageModal } from './SuccessMessageModal';\r\n\r\nexport interface IToggleButton {\r\n phrases: IPhrases;\r\n toggleSelectedLists: any;\r\n}\r\n\r\n// Externalize Button to prevent parent Modal from re-rendering when checkboxes are toggled\r\nconst ToggleButton = ({ phrases, toggleSelectedLists }: IToggleButton) => {\r\n const { t } = useTranslation(phrases);\r\n const [isAllSelected, setIsAllSelected] = useState(false);\r\n\r\n const handleClick = (isSelected: any) => {\r\n toggleSelectedLists(isSelected);\r\n setIsAllSelected(isSelected);\r\n };\r\n\r\n return (\r\n <>\r\n {isAllSelected === false && (\r\n handleClick(true)}\r\n >\r\n {t('AddToOrderList_SelectAll')}\r\n \r\n )}\r\n {isAllSelected === true && (\r\n handleClick(false)}\r\n >\r\n {t('AddToOrderList_SelectNone')}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport const AddToOrderListModal = (props: ScProps) => {\r\n const { phrases } = props?.data || {};\r\n const { t } = useTranslation(phrases);\r\n\r\n const formRef = useRef(null);\r\n const dispatch = useDispatch();\r\n const orderListsState = useSelector(state => selectOrderLists(state));\r\n const lastAction = useSelector((state:any) => state.lastAction);\r\n const displayTax = useSelector(state => selectDisplayTax(state));\r\n\r\n const { orderLists } = orderListsState;\r\n const shouldDisplayModal = orderListsState.displayModal;\r\n const isAddToOrderListSuccess = isFulfilled(addItemToOrderListsThunk)(lastAction);\r\n const isAddToOrderListFailed = isRejected(addItemToOrderListsThunk)(lastAction);\r\n\r\n const [isShown, setIsShown] = useState(false);\r\n const isAllSelectedRef = useRef(false);\r\n\r\n useEffect(() => {\r\n if(shouldDisplayModal){\r\n getOrderLists(dispatch)();\r\n setIsShown(true);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [shouldDisplayModal]);\r\n\r\n\r\n const { title = '', code = '', media = [], unitOfMeasureCode, variant } = orderListsState.product;\r\n const { thumbnail = null } = media?.find((mediaItem: MediaData) => !!mediaItem.thumbnail) || {};\r\n\r\n const doUnitDescription = (unit: UnitOfMeasure) => {\r\n if(!unit?.description) {\r\n return;\r\n }\r\n\r\n if(unit.itemsPerUnit > 1) {\r\n const pricePerUnit: number = displayTax\r\n ? unit.prices.current.incTax.numeric\r\n : unit.prices.current.exTax.numeric;\r\n\r\n const pricePerSingle: number = pricePerUnit / unit.itemsPerUnit;\r\n const formattedPricePerSingle = pricePerSingle.toLocaleString('nl-NL', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n\r\n return unit.description.replace('#PRICE#', `€ ${formattedPricePerSingle}`);\r\n }\r\n return unit.description;\r\n };\r\n\r\n\r\n const dismissModal = () => {\r\n setIsShown(false);\r\n displayOrderListsModal(dispatch)(false);\r\n };\r\n\r\n const handleSubmit = (e: any ) => {\r\n e.preventDefault();\r\n const formData = new FormData(e.target);\r\n // See: https://github.com/microsoft/TypeScript/issues/43797\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n\r\n // Pull in list data from the input element's name value,\r\n // this negates the need for controlled inputs and greatly simplefies from handling\r\n const formEntries = Object.fromEntries(formData);\r\n const selectedLists = Object.keys(formEntries).map((listData: any) => JSON.parse(listData));\r\n\r\n addItemsToOrderList(dispatch)({\r\n variantCode: variant.code,\r\n unitOfMeasureCode: unitOfMeasureCode,\r\n selectedLists\r\n });\r\n };\r\n\r\n\r\n const toggleSelectedLists = (isSelected: any) => {\r\n isAllSelectedRef.current = isSelected;\r\n\r\n const checkboxes = formRef?.current.querySelectorAll('[type=checkbox]');\r\n checkboxes?.forEach((checkbox: any) => {\r\n checkbox.checked = isSelected;\r\n });\r\n\r\n };\r\n\r\n\r\n if (isAddToOrderListSuccess) {\r\n const unitOfMeasure = variant.unitsOfMeasure.find((uom: UnitOfMeasure) => uom.code === unitOfMeasureCode);\r\n const unitDescription = doUnitDescription(unitOfMeasure);\r\n const price = displayTax ? unitOfMeasure.prices.current.incTax.formatted : unitOfMeasure.prices.current.exTax.formatted;\r\n\r\n const modalProps = {\r\n dismissModal,\r\n thumbnail,\r\n code,\r\n title,\r\n price,\r\n unitDescription,\r\n displayTax,\r\n phrases };\r\n return ;\r\n }\r\n\r\n\r\n if(isAddToOrderListFailed) {\r\n const modalProps = { dismissModal, thumbnail, code, title, phrases };\r\n return ;\r\n }\r\n\r\n\r\n if (isShown) {\r\n const buttons = [{\r\n type: 'outline-primary',\r\n label: t('AddToOrderList_Cancel'),\r\n onClick: dismissModal\r\n },{\r\n type: 'primary',\r\n label: t('AddToOrderList_Add'),\r\n onClick: () => {\r\n formRef.current.requestSubmit();\r\n }\r\n }];\r\n\r\n const HeaderComponent = () => {\r\n const unitOfMeasure = variant.unitsOfMeasure.find((uom: UnitOfMeasure) => uom.code === unitOfMeasureCode);\r\n const unitDescription = doUnitDescription(unitOfMeasure);\r\n const price = displayTax ? unitOfMeasure.prices.current.incTax.formatted : unitOfMeasure.prices.current.exTax.formatted;\r\n\r\n return (\r\n \r\n
\r\n

{ t('AddToOrderList_ModalTitle')}

\r\n
\r\n {thumbnail &&
}\r\n
\r\n

{title}

\r\n
{t('AddToOrderList_ProductCode')} {code}
\r\n
\r\n {price} {unitDescription}\r\n
\r\n

\r\n {(displayTax ? t('AddToOrderList_IncTax') : t('AddToOrderList_ExTax') )}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n

{t('AddToOrderList_OrderLists')}

\r\n
\r\n \r\n \r\n
\r\n
\r\n
    \r\n {orderLists.map((list: IOrderList) => {\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\r\n return null;\r\n};\r\n","import React from 'react';\r\nimport { Provider, useSelector, useDispatch } from 'react-redux';\r\nimport { selectProduct } from '@components/ProductDetail/state/productDetailSlice';\r\nimport store from '@state/store';\r\nimport { ScReact } from '@components-react/ScReact';\r\nimport { ScProps } from '@components-react/ScProps';\r\nimport { AddToOrderListModal } from '../AddToOrderListModal/AddToOrderListModal';\r\nimport { displayOrderListsModal } from '../state/orderListsSlice';\r\n\r\ninterface IAddToOrderLists {\r\n iconClass: string;\r\n caption: string;\r\n phrases: IPhrases;\r\n}\r\n\r\n\r\nexport const AddToOrderListsButton = (props: ScProps) => {\r\n const { iconClass, caption } = props.data;\r\n const dispatch = useDispatch();\r\n const product = useSelector(state => selectProduct(state));\r\n\r\n const showOrderListsModal = () => {\r\n displayOrderListsModal(dispatch)({\r\n title: product.title,\r\n code: product.code,\r\n media: product.variant?.media,\r\n unitOfMeasureCode: product?.unitOfMeasureCode,\r\n variant: product?.variant\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n {caption}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const AddToOrderLists = (props: ScProps) => (\r\n \r\n \r\n \r\n \r\n);\r\n","// extracted by mini-css-extract-plugin\nexport default {\"Breadcrumb\":\"Breadcrumb-module__Breadcrumb--vGux\",\"breadcrumbItem\":\"Breadcrumb-module__breadcrumbItem--KDF5\",\"breadcrumbLastItem\":\"Breadcrumb-module__breadcrumbLastItem--FAJ2\",\"breadcrumbItemLink\":\"Breadcrumb-module__breadcrumbItemLink--NDUk\"};","import React from 'react';\r\nimport { Swiper, SwiperSlide, Autoplay, Lazy } from '@lib/swiper';\r\nimport { ScReact } from '../ScReact';\r\nimport { ScProps } from '../ScProps';\r\nimport styles from './CTACarousel.module.scss';\r\nimport { CTACarouselData, Slide } from './CTACarouselData';\r\n\r\nexport const CTACarousel = (props: ScProps) => {\r\n const { slidesCount, slides } = props.data;\r\n\r\n return \r\n
\r\n \r\n {slides && slides.map((slide: Slide, key: number) =>\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {renderBullet(slide, slidesCount)}\r\n
\r\n
\r\n\r\n
\r\n
\r\n {slide.link.text}\r\n
\r\n\r\n
\r\n {slide.image.alt}\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n \r\n
\r\n
;\r\n};\r\n\r\nfunction renderBullet(slide: Slide, count: number) {\r\n const rows = [];\r\n for (let i = 1; i <= count; i++) {\r\n let bulletClassNames = 'swiper-pagination-bullet mr-1';\r\n if (slide.index >= i) {\r\n bulletClassNames += ' swiper-pagination-bullet-active';\r\n\r\n if (slide.index === i) {\r\n bulletClassNames += ' last';\r\n }\r\n }\r\n rows.push();\r\n }\r\n return rows;\r\n}\r\n","import * as React from 'react';\r\nimport { ISrcset } from './ISrcset';\r\n\r\nexport const Srcset = ({ image }: { image: ISrcset }) => {\r\n if (!image?.items || image.items.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {image.items.map((item, sequence) => (\r\n \r\n ))}\r\n\r\n {image.imageCaption}\r\n \r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"ReactComponentFullError\":\"ErrorFeedback-module__ReactComponentFullError--jsmU\",\"ReactComponentError\":\"ErrorFeedback-module__ReactComponentError--Covp\"};","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styles from './ErrorFeedback.module.scss';\r\n\r\nexport const ErrorFeedback = (props) => {\r\n if (!props) {\r\n return null;\r\n }\r\n\r\n return props.full\r\n ? \r\n : ;\r\n};\r\n\r\nconst ErrorFeedbackFull = (props) => {\r\n return (\r\n
\r\n

\r\n {props.message}\r\n

\r\n\r\n
\r\n        {JSON.stringify(props.model, null, 2)}\r\n      
\r\n
\r\n );\r\n};\r\n\r\nconst ErrorFeedbackMinimal = (props) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nErrorFeedback.propTypes = {\r\n model: PropTypes.object,\r\n full: PropTypes.bool,\r\n message: PropTypes.string\r\n};\r\n","import * as React from 'react';\r\nimport { useState } from 'react';\r\nimport { Provider, useDispatch, useSelector} from 'react-redux';\r\nimport { toast } from 'react-toastify';\r\nimport { addToCart } from '@components-react/Cart/cartSlice';\r\nimport { ScReact } from '@components-react/ScReact';\r\nimport store from '@state/store';\r\nimport './ProductDetailAddToCart.scss';\r\nimport { CartItem } from '@sctypes/product/CartItem';\r\nimport { ScProps } from '@components-react/ScProps';\r\n\r\ninterface AddToCartProps {\r\n amount: string;\r\n addToCart: string;\r\n enabled: boolean;\r\n}\r\n\r\nexport const ProductDetailAddToCartComponent = (props: ScProps) => {\r\n const dispatch = useDispatch();\r\n const { data } = props;\r\n const [orderAmount, setOrderAmount]: [number, (value: number) => void] = useState(1);\r\n const product = useSelector((state: any) => state.productDetail);\r\n function getPhrases(): IPhrases {\r\n let phrases = {\r\n Phrases: {}\r\n };\r\n try {\r\n phrases = JSON.parse(document.querySelector('[data-component=add-to-cart]').textContent);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n\r\n return phrases?.Phrases;\r\n }\r\n\r\n\r\n const handleAddToCart = () => {\r\n if (orderAmount === 0 || isNaN(orderAmount)) {\r\n const phrase = getPhrases();\r\n toast(phrase.AddToCart_NoProductMessage);\r\n }\r\n\r\n if (product.variant && product.unitOfMeasureCode && orderAmount) {\r\n const cartItem: CartItem[] = [{\r\n orderAmount,\r\n variantCode: product.variant.code,\r\n unitOfMeasureCode: product.unitOfMeasureCode,\r\n currentVariant: product.variant\r\n }];\r\n addToCart(dispatch)(cartItem);\r\n }\r\n };\r\n\r\n const enabled = data.enabled;\r\n\r\n return \r\n
\r\n
\r\n ) => setOrderAmount(parseInt(e.target.value, 10))}\r\n placeholder={data.amount}\r\n disabled={!enabled}\r\n />\r\n \r\n
\r\n
\r\n
;\r\n};\r\n\r\nexport const ProductDetailAddToCart = (props: ScProps) => (\r\n \r\n \r\n \r\n);\r\n","// extracted by mini-css-extract-plugin\nexport default {\"ProductSpecialistWide\":\"ProductSpecialistWide-module__ProductSpecialistWide--arh2\",\"image\":\"ProductSpecialistWide-module__image--hsWi\",\"shield\":\"ProductSpecialistWide-module__shield--gkoY\",\"content\":\"ProductSpecialistWide-module__content--WW0B\",\"title\":\"ProductSpecialistWide-module__title--FOl6\",\"subText\":\"ProductSpecialistWide-module__subText--Y9m2\",\"iconLink\":\"ProductSpecialistWide-module__iconLink--HE68\",\"icon\":\"ProductSpecialistWide-module__icon--Oc5I\",\"link\":\"ProductSpecialistWide-module__link--ogXl\"};","import noAttributeImage from '@components-react/ProductTile/assets/no-attribute-image.svg';\r\nimport type { CodeValue, Product, Variant } from '@sctypes/product/Product';\r\nimport type { AttributeList } from '@sctypes/product/AttributeList';\r\nimport type { Attribute } from '@sctypes/product/Attribute';\r\n\r\nexport interface VariantOption {\r\n typeCode: string;\r\n codeValue: CodeValue;\r\n value: CodeValue;\r\n disabled: boolean;\r\n image: string;\r\n selected?: boolean;\r\n}\r\n\r\nfunction mapVariantOptions(options: AttributeList): VariantOption[] {\r\n const typeCode = options.type.code;\r\n return options.items.map((item: Attribute) => {\r\n return {\r\n typeCode: typeCode,\r\n codeValue: item?.code || { code: '', value: '' },\r\n value: item?.value || { code: '', value: '' },\r\n disabled: false,\r\n image: (item.images?.length > 0 ? item.images[0].src : noAttributeImage)\r\n };\r\n });\r\n}\r\n\r\nexport interface ProductData extends Product {\r\n availableOptionCodes1: VariantOption[];\r\n availableOptionCodes2: VariantOption[];\r\n variant: Variant;\r\n optionCode1: string;\r\n optionCode2: string;\r\n unitOfMeasureCode: string;\r\n}\r\n\r\nexport function mapProductData(product: Product, chosenVariant?: Variant): ProductData {\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n const { variants, variantOptions } = product;\r\n\r\n let variant = chosenVariant;\r\n const options1: VariantOption[] = variantOptions[0]?.items ? mapVariantOptions(variantOptions[0]) : [];\r\n const options2: VariantOption[] = variantOptions[1]?.items ? mapVariantOptions(variantOptions[1]) : [];\r\n\r\n let optionCode1 = '';\r\n let optionCode2 = '';\r\n if (chosenVariant) {\r\n optionCode1 = chosenVariant.optionCode1;\r\n optionCode2 = chosenVariant.optionCode2;\r\n } else {\r\n variant = variants.find(variant => variant.code === product.defaultVariantCode);\r\n\r\n if (variant) {\r\n optionCode1 = variant.optionCode1;\r\n optionCode2 = variant.optionCode2;\r\n }\r\n }\r\n\r\n if (optionCode1 !== '') {\r\n for (let index = 0; index < options2.length; index++) {\r\n const optionCode = options2[index].value.code;\r\n const hasVariant = variants.find(variant => variant.optionCode1 === optionCode1 && variant.optionCode2 === optionCode);\r\n\r\n if (!hasVariant) {\r\n options2[index].disabled = true;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n ...product,\r\n availableOptionCodes1: options1,\r\n availableOptionCodes2: options2,\r\n variant,\r\n optionCode1,\r\n optionCode2,\r\n unitOfMeasureCode: variant?.unitsOfMeasure[0].code\r\n };\r\n}\r\n","import * as React from 'react';\r\nimport { Provider, useSelector } from 'react-redux';\r\nimport { ScReact } from '@components-react/ScReact';\r\nimport { mapProductData, ProductData } from '@utils/mapProductsData';\r\nimport store from '@state/store';\r\nimport { ScProps } from '@components-react/ScProps';\r\nimport { ProductAndVariant } from '@sctypes/product/Product';\r\n\r\nexport const ProductTitleComponent = (props: ScProps) => {\r\n const product: ProductData = useSelector((state: any) => state.productDetail)\r\n ?? mapProductData(props.data.product, props.data.variant);\r\n\r\n const title: string = product?.variant?.title ?? product?.title ?? '[Product Title]';\r\n const code: string = product?.variant?.code ?? product?.code ?? '[Product Code]';\r\n\r\n return \r\n
\r\n
\r\n

{title}

\r\n
\r\n
\r\n\r\n
Art: {code}
\r\n
;\r\n};\r\n\r\nexport const ProductTitle = (props: ScProps) => (\r\n \r\n \r\n \r\n);\r\n","import React, { useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Modal } from '@components-react/Modal/Modal';\r\nimport { cartSlice } from '../cartSlice';\r\nimport styles from './AddToCart.module.scss';\r\n\r\n// TODO: Replace this.\r\nfunction getPhrases(): IPhrases {\r\n let phrases = {\r\n Phrases: {}\r\n };\r\n try {\r\n phrases = JSON.parse(document.querySelector('[data-component=add-to-cart]').textContent);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n\r\n return phrases?.Phrases;\r\n}\r\n\r\nexport const AddToCartLayer = () => {\r\n const dispatch = useDispatch();\r\n const [isShown, setIsShown] = useState(false);\r\n const [variant, setVariant] = useState({ title: '', code: '', media: [] });\r\n const lastAction = useSelector((state:any) => state.lastAction);\r\n const isAddToCartAction = lastAction.type === cartSlice.actions.addToCart.type;\r\n const phrases = getPhrases();\r\n\r\n if (!isShown && isAddToCartAction) {\r\n setVariant(lastAction.payload.items[0].currentVariant);\r\n setIsShown(true);\r\n }\r\n\r\n const { title = '', code = '', media = [] } = variant;\r\n const { thumbnail = null } = media?.find(mediaItem => !!mediaItem.thumbnail) || {};\r\n\r\n const dismissModal = () => {\r\n dispatch({\r\n type: 'modal/dismissModal'\r\n });\r\n\r\n setIsShown(false);\r\n setVariant({ title: '', code: '', media: [] });\r\n };\r\n\r\n const gotoToBasketPage = () => {\r\n const vNext = window.carelFeatureToggles && window.carelFeatureToggles['shoppingcart']?.value === '1';\r\n\r\n window.location.href = vNext ? '/winkelwagen?return=c' : '/webshop/winkelwagen';\r\n setIsShown(false);\r\n setVariant({ title: '', code: '', media: [] });\r\n };\r\n\r\n const buttons = [{\r\n type: 'outline-primary',\r\n label: phrases.AddToCart_ContinueShopping,\r\n onClick: dismissModal\r\n },{\r\n type: 'primary',\r\n label: phrases.AddToCart_GotoBasketPage,\r\n onClick: gotoToBasketPage\r\n }];\r\n\r\n if (isShown) {\r\n return (\r\n \r\n
\r\n {thumbnail &&
}\r\n
\r\n

{title}

\r\n {`${phrases.AddToCart_ItemNo}${code}`}\r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"thumbnail\":\"AddToCart-module__thumbnail--D6tf\"};","import React from 'react';\r\nimport { Provider } from 'react-redux';\r\nimport store from '@state/store';\r\nimport { AddToCartLayer } from './AddToCartLayer';\r\n\r\nexport const ProvideAddToCartLayer = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nexport const selectProductsListingEntities = state => state?.productsListing?.entities;\r\nexport const selectProductsListingLoading = state => state?.productsListing?.loading;\r\n\r\nexport const selectFacetsOpen = createSelector(\r\n state => state,\r\n state => state?.productsListing?.facetsOpen\r\n);\r\n\r\nexport const selectSortOrder = createSelector(\r\n selectProductsListingEntities,\r\n state => state && state['sort'] // `sort` is a reserved word in JS\r\n);\r\n\r\nexport const selectPagination = createSelector(\r\n selectProductsListingEntities,\r\n state => state?.pagination\r\n);\r\n\r\nexport const selectPaginationItems = createSelector(\r\n selectProductsListingEntities,\r\n state => state?.pagination?.items\r\n);\r\n\r\nexport const selectPaginationRelative = createSelector(\r\n selectProductsListingEntities,\r\n state => state?.pagination?.relative\r\n);\r\n\r\n\r\nexport const selectFilterBadges = createSelector(\r\n selectProductsListingEntities,\r\n state => state?.active\r\n);\r\n\r\nexport const selectProducts = createSelector(\r\n selectProductsListingEntities,\r\n state => state?.results\r\n);\r\n\r\nexport const selectTotal = createSelector(\r\n selectProductsListingEntities,\r\n state => state?.total\r\n);\r\n\r\nexport const selectFacets = createSelector(\r\n selectProductsListingEntities,\r\n state => state?.facets\r\n);\r\n\r\nexport const selectActiveFacets = createSelector(\r\n selectFacets,\r\n allFacets => {\r\n const activeFacets = allFacets.filter(facet => {\r\n return facet.items.findIndex(item => item.selected === true) !== -1;\r\n });\r\n return activeFacets || [];\r\n }\r\n);\r\n\r\nexport const selectActiveFacetItems = createSelector(\r\n selectActiveFacets,\r\n activeFactes => {\r\n return activeFactes.map(facet => {\r\n const selectedItems = facet.items.filter(item => item.selected === true);\r\n return {\r\n ...facet,\r\n items: selectedItems\r\n };\r\n });\r\n }\r\n);\r\n","// extracted by mini-css-extract-plugin\nexport default {\"CategoryFacets\":\"CategoryFacets-module__CategoryFacets--ffPm\",\"CategoryFacetsFilter\":\"CategoryFacets-module__CategoryFacetsFilter--Cl03\",\"CategoryFacetsFilterToggle\":\"CategoryFacets-module__CategoryFacetsFilterToggle--QTAO\",\"FacetToggleValue\":\"CategoryFacets-module__FacetToggleValue--gV2P\",\"FacetLabel\":\"CategoryFacets-module__FacetLabel--_kQ9\",\"FacetLabelValue\":\"CategoryFacets-module__FacetLabelValue--D6YG\",\"FacetsModalHeader\":\"CategoryFacets-module__FacetsModalHeader--P9_y\",\"FacetsModalContent\":\"CategoryFacets-module__FacetsModalContent--Zm5H\",\"FacetsModalFooter\":\"CategoryFacets-module__FacetsModalFooter--Qn1a\"};","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport Collapse from 'react-bootstrap/Collapse';\r\nimport { useOverflowHidden } from '@hooks/useOverflowHidden';\r\nimport styles from './CategoryFacets.module.scss';\r\nimport type { UrlSet } from '@sctypes/product/UrlSet';\r\nimport type { CodeValue } from '@sctypes/product/Product';\r\n\r\nexport interface IFacetItem {\r\n value: CodeValue;\r\n hits: number;\r\n urlSet: UrlSet;\r\n selected: boolean;\r\n}\r\n\r\nexport interface IFacetItems {\r\n type: CodeValue;\r\n items: IFacetItem[];\r\n}\r\n\r\nexport interface IFacet {\r\n facet: IFacetItems;\r\n initialExpanded: boolean;\r\n onFacetChange: (item: IFacetItem) => any;\r\n idPrefix: string;\r\n}\r\n\r\nconst Facet = ({ facet, initialExpanded = false, onFacetChange, idPrefix }: IFacet) => {\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n\r\n useEffect(() => {\r\n setIsExpanded(initialExpanded);\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n
\r\n setIsExpanded(!isExpanded)}\r\n >\r\n \r\n {facet.type.value }\r\n \r\n \r\n\r\n \r\n
\r\n
    \r\n {facet.items.map(item => {\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\r\n\r\nexport interface ICategoryFacets {\r\n facets: IFacet[];\r\n isOpen?: boolean\r\n onFacetChange: (arg0: IFacetItem) => void\r\n productCount?: number;\r\n toggleFacetsOpen: () => void,\r\n phrases: IPhrases;\r\n restProps: any;\r\n idPrefix?: string;\r\n}\r\n\r\nexport const CategoryFacets = ({\r\n facets,\r\n isOpen,\r\n onFacetChange,\r\n productCount,\r\n toggleFacetsOpen,\r\n phrases,\r\n idPrefix = 'facet'\r\n}: ICategoryFacets) => {\r\n\r\n const handleFacetChange = async (facetItem: IFacetItem) => {\r\n onFacetChange(facetItem);\r\n };\r\n\r\n\r\n const productsPhrase = productCount === 1 ? phrases.product : phrases.products;\r\n const showProductsText = phrases.open_facets_show\r\n .replace('#COUNT#', String(productCount))\r\n .replace('#PRODUCTS#', productsPhrase);\r\n\r\n\r\n useOverflowHidden(isOpen);\r\n\r\n return (\r\n
\r\n
\r\n { phrases.open_facets_title }\r\n \r\n \r\n \r\n { phrases.open_facets_close }\r\n \r\n \r\n
\r\n
\r\n\r\n {facets.map((facet: any) => {\r\n const hasExpandedItem: boolean = facet.items.findIndex((item: IFacetItem) => item.selected === true) > -1;\r\n\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n\r\n
\r\n \r\n {showProductsText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n","import { connect } from 'react-redux';\r\nimport { getProducts, toggleFacetsOpen } from '../stores/productsListingSlice';\r\nimport { selectFacets, selectFacetsOpen, selectTotal } from '../stores/selectors';\r\nimport { CategoryFacets } from '../Components/CategoryFacets/CategoryFacets';\r\nimport type { ICategoryFacets, IFacetItem } from '../Components/CategoryFacets/CategoryFacets';\r\n\r\nexport const mapStateToProps = (state: any, ownProps: ICategoryFacets) => {\r\n const facets = selectFacets(state);\r\n const isOpen = selectFacetsOpen(state);\r\n const total = selectTotal(state);\r\n\r\n return {\r\n ...ownProps,\r\n facets: facets?.length > 0 ? facets : (ownProps.facets ?? []),\r\n isOpen: isOpen ?? false,\r\n productCount: total ?? ownProps.productCount\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n onFacetChange: (facetItem: IFacetItem) => {\r\n return getProducts(dispatch)({\r\n apiUrl: `${facetItem.urlSet.api}?content=1`,\r\n webUrl: facetItem.urlSet.web\r\n });\r\n },\r\n toggleFacetsOpen: () => {\r\n dispatch(toggleFacetsOpen());\r\n }\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CategoryFacets);\r\n","/**\r\n * A Higher Order Component that makes other components reusable outside Sitecore's context\r\n *\r\n * It provides Sitecore's 'data' props on the baselevel component props\r\n * and wraps the component in correct div's for SXA\r\n *\r\n * Based on: https://react-typescript-cheatsheet.netlify.app/docs/hoc/full_example/\r\n */\r\n\r\n/**\r\n * Usage:\r\n\r\n export const MyInputComponent = ({ placeHolder = 'defaultValue', onChange }) => {\r\n return ;\r\n };\r\n\r\n // Outside Sitecore\r\n setInputState(e.target.value)} />\r\n\r\n // Within Sitecore (props.data ... )\r\n const ScMyInputComponent = withSCProps(MyInputComponent)\r\n\r\n*/\r\n\r\n\r\nimport React from 'react';\r\nimport objstr from 'obj-str';\r\n\r\ninterface ScProps {\r\n children?: any;\r\n className?: string;\r\n data?: T;\r\n isEdit?: boolean;\r\n renderingCssClass?: string;\r\n styles?: string;\r\n}\r\n\r\n\r\nexport function withScProps(WrappedComponent: React.ComponentType) {\r\n const WithSCProps = (props: ScProps) => {\r\n\r\n const { data, ...ownProps } = props;\r\n\r\n const nextProps = {\r\n ...ownProps,\r\n ...( data ? {...data } : {})\r\n };\r\n\r\n\r\n const cssClassNames = objstr({\r\n [props.className]: !!props.className,\r\n [props.renderingCssClass]: !!props.renderingCssClass,\r\n [props.styles]: !!props.styles,\r\n component: true\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 const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n WithSCProps.displayName = `WithScProps(${displayName})`;\r\n\r\n return WithSCProps;\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"FilterBadgeList\":\"FilterBadges-module__FilterBadgeList--t_DO\",\"FilterBadge\":\"FilterBadges-module__FilterBadge--x2Fk\",\"code\":\"FilterBadges-module__code--_ftr\",\"value\":\"FilterBadges-module__value--lOT3\"};","import * as React from 'react';\r\nimport { withScProps } from '@components-react/WithScProps/WithScProps';\r\nimport { UrlSet } from '@sctypes/product/UrlSet';\r\nimport styles from './FilterBadges.module.scss';\r\nimport type { CodeValue } from '@sctypes/product/Product';\r\n\r\nexport interface IBadge {\r\n code: CodeValue;\r\n value: CodeValue;\r\n urlSet: UrlSet;\r\n}\r\n\r\nexport interface IFilterBadges {\r\n items: IBadge[];\r\n phrases: any; // These should not live on props\r\n onFilterBadgeClick: (arg0: IBadge) => void\r\n}\r\n\r\nexport const FilterBadges = ({ items, phrases, onFilterBadgeClick }: IFilterBadges) => {\r\n if (!items || items.length === 0) {\r\n return null;\r\n }\r\n\r\n const handleBadgeClick = async (e: React.MouseEvent, badge: IBadge) => {\r\n e.preventDefault();\r\n onFilterBadgeClick(badge);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {phrases.active_filters}\r\n \r\n {items.map((badge: IBadge) => {\r\n return (\r\n
\r\n ) => handleBadgeClick(e, badge)}\r\n >\r\n {badge.code.value}: \r\n {badge.value.value}\r\n \r\n \r\n
\r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport default withScProps(FilterBadges);\r\n","import { connect } from 'react-redux';\r\nimport { selectFilterBadges } from '../stores/selectors';\r\nimport { getProducts } from '../stores/productsListingSlice';\r\nimport { FilterBadges } from '../Components/FilterBadges/FilterBadges';\r\nimport type { IBadge, IFilterBadges } from '../Components/FilterBadges/FilterBadges';\r\n\r\nexport const mapStateToProps = (state: any, ownProps: IFilterBadges) => {\r\n const activeFilters = selectFilterBadges(state);\r\n\r\n const badges = activeFilters ?? ownProps?.items;\r\n return {\r\n ...ownProps,\r\n items: badges,\r\n phrases: ownProps?.phrases ?? {}\r\n };\r\n};\r\n\r\nexport const mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n onFilterBadgeClick: (badge: IBadge) => getProducts(dispatch)({\r\n apiUrl: badge.urlSet.api,\r\n webUrl: badge.urlSet.web\r\n })\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterBadges);\r\n","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { toggleFacetsOpen } from '../../stores/productsListingSlice';\r\nimport './OpenFacetsButton.scss';\r\n\r\nexport const OpenFacetsButton = (props: OpenFacetsButtonData) => {\r\n const dispatch = useDispatch();\r\n\r\n return (\r\n dispatch(toggleFacetsOpen())}\r\n type=\"button\"\r\n data-testid=\"OpenFacetsButton\"\r\n >\r\n {props.phrases?.open_facets_button ?? ''}\r\n \r\n );\r\n};\r\n\r\nexport interface OpenFacetsButtonData {\r\n phrases: any\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"PaginationContainer\":\"Pagination-module__PaginationContainer--BPcs\",\"Pagination\":\"Pagination-module__Pagination--H_R6\",\"PageLink\":\"Pagination-module__PageLink--Yulv\",\"PageLinkSelected\":\"Pagination-module__PageLinkSelected--rSuZ\",\"PageLinkFirst\":\"Pagination-module__PageLinkFirst--divA\",\"PageLinkLast\":\"Pagination-module__PageLinkLast--sSjf\",\"PageLinkNext\":\"Pagination-module__PageLinkNext--qV4Z\",\"PageLinkPrev\":\"Pagination-module__PageLinkPrev--c90d\",\"PageLinkDisabled\":\"Pagination-module__PageLinkDisabled--SSXI\"};","import React from 'react';\r\nimport { UrlSet } from '@sctypes/product/UrlSet';\r\nimport styles from './Pagination.module.scss';\r\n\r\nexport interface IPaginationItem {\r\n code: string;\r\n label: string;\r\n urlSet: UrlSet;\r\n selected: boolean;\r\n isSeparator: boolean;\r\n}\r\n\r\nexport interface IPagination {\r\n // relative: Relative;\r\n items: IPaginationItem[];\r\n relative: {\r\n prev?: IPaginationItem;\r\n next?: IPaginationItem;\r\n }\r\n first?: IPaginationItem;\r\n last?: IPaginationItem;\r\n onPaginationChange?: (arg0: IPaginationItem) => void\r\n}\r\n\r\nexport const Pagination = ({\r\n items,\r\n relative,\r\n // first,\r\n // last,\r\n onPaginationChange\r\n}: IPagination) => {\r\n\r\n const hasPrevPage = !!relative?.prev?.urlSet?.web;\r\n const hasNextPage = !!relative?.next?.urlSet?.web;\r\n\r\n const handlePageChange = async (e: React.MouseEvent, item: IPaginationItem) => {\r\n e.preventDefault();\r\n onPaginationChange(item);\r\n\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth'\r\n });\r\n };\r\n\r\n return (\r\n
\r\n
    \r\n {hasPrevPage && (\r\n
  • \r\n handlePageChange(e, relative.prev)}\r\n >{relative.prev.label}\r\n
  • \r\n )}\r\n\r\n {items?.length > 0 && (items.map((item: IPaginationItem, idx: number) => {\r\n return (\r\n
  • \r\n ) => handlePageChange(e, item)}\r\n >{item.label}\r\n
  • \r\n );\r\n }))}\r\n\r\n {hasNextPage && (\r\n
  • \r\n handlePageChange(e, relative.next)}\r\n >{relative.next.label}\r\n
  • \r\n )}\r\n
\r\n
\r\n\r\n );\r\n};\r\n","import { connect } from 'react-redux';\r\nimport { selectPaginationItems, selectPaginationRelative, selectProductsListingLoading } from '../stores/selectors';\r\nimport { getProducts } from '../stores/productsListingSlice';\r\nimport { Pagination } from '../Components/Pagination/Pagination';\r\nimport type { IPagination, IPaginationItem } from '../Components/Pagination/Pagination';\r\n\r\nexport const mapStateToProps = (state: any, ownProps: IPagination) => {\r\n const loadingState = selectProductsListingLoading(state);\r\n // Use client state\r\n if(loadingState === 'fulfilled') {\r\n const stateItems = selectPaginationItems(state);\r\n const relative = selectPaginationRelative(state);\r\n const items: IPaginationItem[] = stateItems;\r\n const next: IPaginationItem = relative?.next;\r\n const prev: IPaginationItem = relative?.prev;\r\n\r\n return {\r\n items,\r\n relative: {\r\n next,\r\n prev\r\n }\r\n };\r\n }\r\n // Use server props\r\n\r\n return {\r\n ...ownProps\r\n };\r\n};\r\n\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n onPaginationChange: (paginationItem: IPaginationItem) => getProducts(dispatch)({\r\n apiUrl: paginationItem.urlSet.api,\r\n webUrl: paginationItem.urlSet.web\r\n })\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Pagination);\r\n","import { connect } from 'react-redux';\r\nimport { selectTotal } from '../stores/selectors';\r\nimport { ProductCount } from '../Components/ProductCount/ProductCount';\r\nimport type { IProductCount } from '../Components/ProductCount/ProductCount';\r\n\r\nexport const mapStateToProps = (state: any, ownProps: IProductCount) => {\r\n const totalState = selectTotal(state);\r\n\r\n const total: number = totalState ?? ownProps?.total;\r\n return {\r\n ...ownProps,\r\n total: total,\r\n phrases: ownProps?.phrases ?? {}\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(ProductCount);\r\n","import * as React from 'react';\r\n\r\nexport interface IProductCount {\r\n total: number;\r\n phrases: any;\r\n}\r\n\r\n\r\nexport const ProductCount = (props: IProductCount) => {\r\n const { total, phrases } = props;\r\n if (!total) {\r\n return null;\r\n }\r\n\r\n const phrase = total === 1 ? phrases.product : phrases.products;\r\n\r\n return (\r\n

{total} {phrase}

\r\n );\r\n};\r\n","import React from 'react';\r\nimport { UrlSet } from '@sctypes/product/UrlSet';\r\n\r\nexport interface ISortOrderItem {\r\n code?: string;\r\n value?: string;\r\n urlSet: UrlSet;\r\n selected?: boolean;\r\n}\r\n\r\nexport interface ISortOrder {\r\n items: ISortOrderItem[];\r\n updateSortOrder: (arge0: ISortOrderItem) => void;\r\n}\r\n\r\n\r\nexport const SortOrder = ({ items,updateSortOrder }: ISortOrder) => {\r\n const handleSortOrderChange = async (e: any) => {\r\n e.preventDefault();\r\n const option = e.target.options[e.target.selectedIndex];\r\n if (!option) {\r\n return;\r\n }\r\n\r\n const item: ISortOrderItem = {\r\n urlSet: {\r\n api: option.getAttribute('data-apiurl'),\r\n web: option.getAttribute('data-weburl')\r\n }\r\n };\r\n updateSortOrder(item);\r\n };\r\n\r\n const selectedCode = items.filter((item: ISortOrderItem) => item.selected)[0]?.code\r\n ?? items[0]?.code;\r\n\r\n return (\r\n <>\r\n \r\n {items.map((item: ISortOrderItem) => {\r\n return (\r\n {item.value}\r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n","import { connect } from 'react-redux';\r\nimport { selectSortOrder } from '../stores/selectors';\r\nimport { getProducts } from '../stores/productsListingSlice';\r\nimport { SortOrder } from '../Components/SortOrder/SortOrder';\r\nimport type { ISortOrder, ISortOrderItem } from '../Components/SortOrder/SortOrder';\r\n\r\nexport const mapStateToProps = (state: any, ownProps: ISortOrder) => {\r\n const items = selectSortOrder(state);\r\n\r\n return {\r\n ...ownProps,\r\n items: items?.length > 0 ? items : (ownProps.items ?? [])\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n updateSortOrder: (item: ISortOrderItem) => getProducts(dispatch)({\r\n apiUrl: item.urlSet.api,\r\n webUrl: item.urlSet.web\r\n })\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SortOrder);\r\n","import { Prices } from '@sctypes/product/Prices';\r\nimport { useApi } from '../../hooks/use-api';\r\n\r\nexport interface UserPrices {\r\n userPrices: Prices[];\r\n fetchUserPricesError: Error;\r\n isUserPricesLoading: boolean;\r\n fetchUserPrices: (data: any[]) => Promise<{data: any}>;\r\n}\r\n\r\nexport function useUserPrices(): UserPrices {\r\n const [{ data, error, isUpdating }, fetchUserPrices] = useApi.post('products/prices');\r\n\r\n return {\r\n userPrices: data,\r\n fetchUserPricesError: error,\r\n isUserPricesLoading: isUpdating,\r\n fetchUserPrices\r\n };\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"Labels\":\"Labels-module__Labels--JpOQ\",\"Label\":\"Labels-module__Label--Xs4G\",\"_1PLUS1\":\"Labels-module___1PLUS1--pR1Q\",\"_1plus1\":\"Labels-module___1plus1--ez8n\",\"_25KOR\":\"Labels-module___25KOR--Ub2C\",\"_25kor\":\"Labels-module___25kor--omts\",\"_2PLUS1\":\"Labels-module___2PLUS1--wQwS\",\"_2plus1\":\"Labels-module___2plus1--B6Fx\",\"_2PLUS2\":\"Labels-module___2PLUS2--VtFL\",\"_2plus2\":\"Labels-module___2plus2--Rnmu\",\"_3PLUS1\":\"Labels-module___3PLUS1--rn9Z\",\"_3plus1\":\"Labels-module___3plus1--rxyO\",\"_50KOR\":\"Labels-module___50KOR--brFb\",\"_50kor\":\"Labels-module___50kor--O7i4\",\"_AANB\":\"Labels-module___AANB--psHq\",\"_aanb\":\"Labels-module___aanb--dLQn\",\"_BEKEU\":\"Labels-module___BEKEU--K77A\",\"_bekeu\":\"Labels-module___bekeu--acDp\",\"_BEKO\":\"Labels-module___BEKO--avrG\",\"_beko\":\"Labels-module___beko--nOyl\",\"_CE3\":\"Labels-module___CE3--v3uZ\",\"_ce3\":\"Labels-module___ce3--G0VO\",\"_CLK\":\"Labels-module___CLK--ag2k\",\"_clk\":\"Labels-module___clk--QSx_\",\"_DUURZAAM\":\"Labels-module___DUURZAAM--rULl\",\"_duurzaam\":\"Labels-module___duurzaam--qvM1\",\"_GRAVER\":\"Labels-module___GRAVER--HDDR\",\"_graver\":\"Labels-module___graver--WOVr\",\"_INDBES\":\"Labels-module___INDBES--yzaO\",\"_indbes\":\"Labels-module___indbes--q7XM\",\"_MEEVERK\":\"Labels-module___MEEVERK--IJPK\",\"_meeverk\":\"Labels-module___meeverk--qSdG\",\"_MVO\":\"Labels-module___MVO--dNh3\",\"_mvo\":\"Labels-module___mvo--xA7Y\",\"_NIEUW\":\"Labels-module___NIEUW--FgfD\",\"_nieuw\":\"Labels-module___nieuw--WtJz\",\"_SALE\":\"Labels-module___SALE--FoT8\",\"_sale\":\"Labels-module___sale--vrIv\",\"_BLACKF\":\"Labels-module___BLACKF--Ba5t\",\"_blackf\":\"Labels-module___blackf--s40l\",\"_CAT1\":\"Labels-module___CAT1--rffR\",\"_cat1\":\"Labels-module___cat1--nrIT\",\"_CAT2\":\"Labels-module___CAT2--fj2q\",\"_cat2\":\"Labels-module___cat2--J8Zc\",\"_CAT3\":\"Labels-module___CAT3--yeic\",\"_cat3\":\"Labels-module___cat3--dzaQ\",\"_DIRECTLEV\":\"Labels-module___DIRECTLEV--Dexe\",\"_directlev\":\"Labels-module___directlev--h43u\",\"_ECOLO\":\"Labels-module___ECOLO--JUkl\",\"_ecolo\":\"Labels-module___ecolo--y6oc\",\"_BIOLO\":\"Labels-module___BIOLO--YenZ\",\"_biolo\":\"Labels-module___biolo--PTEZ\",\"_PROBIO\":\"Labels-module___PROBIO--lhTA\",\"_probio\":\"Labels-module___probio--uJAI\",\"_INPRIJS\":\"Labels-module___INPRIJS--xGcD\",\"_inprijs\":\"Labels-module___inprijs--_AsP\",\"_CHEMIEVRIJ\":\"Labels-module___CHEMIEVRIJ--aEuF\",\"_chemievrij\":\"Labels-module___chemievrij--SKTK\"};","import * as React from 'react';\r\nimport { CodeValue } from '@sctypes/product/Product';\r\nimport styles from './Labels.module.scss';\r\n\r\nexport const Labels = ({ labels = [] }: { labels: CodeValue[] }) => {\r\n return (\r\n
\r\n {labels.map(label => {\r\n return (\r\n \r\n {label.value}\r\n );\r\n }\r\n )}\r\n
\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"mediaSwiper\":\"Media-module__mediaSwiper--AP0z\",\"image\":\"Media-module__image--aKdr\"};","import React, { useEffect, useRef } from 'react';\r\nimport { Swiper, SwiperSlide, Pagination, Lazy } from '@lib/swiper';\r\nimport { Media as MediaData } from '@sctypes/product/Product';\r\nimport imageService from '@services/image-service';\r\nimport styles from './Media.module.scss';\r\nimport type{ Swiper as SwiperRef } from 'swiper';\r\n\r\nexport const Media = ({ media = [], alt = '' }: { media: MediaData[], alt: string }) => {\r\n const swiperRef = useRef();\r\n\r\n useEffect(() => {\r\n if(!swiperRef.current) {\r\n return;\r\n }\r\n swiperRef.current?.slideTo(0);\r\n swiperRef.current?.update();\r\n swiperRef.current?.lazy.load();\r\n\r\n }, [media, swiperRef]);\r\n\r\n if (media.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {\r\n swiperRef.current = swiper;\r\n }}\r\n nested\r\n modules={[Pagination, Lazy]}\r\n pagination={{\r\n type: 'bullets',\r\n clickable: true\r\n }}\r\n lazy={true}\r\n preloadImages={false}\r\n centeredSlides={true}\r\n // The next line somehow causes an endless loop when ProductTile is rendered in SearchResults on DNN pages\r\n // spaceBetween={32}\r\n >\r\n {media.filter(Boolean).map((mediaItem: MediaData, idx: number) => {\r\n const imgHeight = 400;\r\n const imgWidth = 400;\r\n const mediaUrl = imageService.getUrl(mediaItem.src, imgWidth, imgHeight, true);\r\n const isFirst = idx === 0;\r\n\r\n return (\r\n \r\n {isFirst && ({alt})}\r\n {!isFirst && ({alt})}\r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n );\r\n};\r\n","export const NOT_IN_STOCK_CODES = ['WEBSERV', 'NIETLEV'];\r\nexport const VARIANT_TYPE_COLOR = '1400';\r\nexport const VARIANT_TYPE_SIZE = '1300';\r\nexport const VARIANT_TYPE_MATERIAL = '1500';\r\nexport const VARIANT_TYPE_BRAND = '1100';\r\nexport const PRODUCT_STATUS_PUBLISHED = '40-GEPUB';\r\n\r\n","// extracted by mini-css-extract-plugin\nexport default {\"VariantOptions\":\"VariantOptions-module__VariantOptions--lNay\",\"SwiperWrapper\":\"VariantOptions-module__SwiperWrapper--c8Q6\",\"ColorOption\":\"VariantOptions-module__ColorOption--SDCP\",\"ColorOptionSelected\":\"VariantOptions-module__ColorOptionSelected--ioqs\",\"ColorOptionDisabled\":\"VariantOptions-module__ColorOptionDisabled--gfcO\",\"ColorOptionImage\":\"VariantOptions-module__ColorOptionImage--i3YJ\",\"LabelOption\":\"VariantOptions-module__LabelOption--MitT\",\"LabelOptionSelected\":\"VariantOptions-module__LabelOptionSelected--tflR\",\"LabelOptionDisabled\":\"VariantOptions-module__LabelOptionDisabled--uCUV\"};","import * as React from 'react';\r\nimport { useRef } from 'react';\r\nimport objstr from 'obj-str';\r\nimport { Swiper, SwiperSlide, Navigation } from '@lib/swiper';\r\nimport { VARIANT_TYPE_COLOR } from '@utils/productConstants';\r\nimport { VariantOption } from '@utils/mapProductsData';\r\nimport styles from './VariantOptions.module.scss';\r\n\r\ninterface IOption {\r\n item: VariantOption;\r\n optionCode: string;\r\n onOptionCodeSelect: (optionCode: string, item: VariantOption) => void;\r\n selected?: boolean;\r\n allowDisable: boolean;\r\n}\r\n\r\ninterface IVariantOptions {\r\n items: VariantOption[];\r\n type: string;\r\n variant: VariantOption;\r\n optionCode: string;\r\n onOptionCodeSelect: (optionCode: string, item: VariantOption) => void;\r\n allowDisable: boolean;\r\n}\r\n\r\n\r\nconst ColorOption = ({ item, optionCode, onOptionCodeSelect, selected = false, allowDisable = true }: IOption) => {\r\n const classNames = objstr({\r\n [styles.ColorOption]: true,\r\n [styles.ColorOptionSelected]: item?.selected || selected,\r\n [styles.LabelOptionDisabled]: allowDisable && item.disabled,\r\n transition: true\r\n });\r\n\r\n return (\r\n onOptionCodeSelect(optionCode, item)}\r\n >\r\n \r\n \r\n );\r\n};\r\n\r\nconst LabelOption = ({ item, optionCode, onOptionCodeSelect, selected = false, allowDisable = true }: IOption) => {\r\n const classNames = objstr({\r\n [styles.LabelOption]: true,\r\n [styles.LabelOptionSelected]: item?.selected || selected,\r\n [styles.LabelOptionDisabled]: allowDisable && item.disabled,\r\n transition: true\r\n });\r\n\r\n return (\r\n onOptionCodeSelect(optionCode, item)}\r\n role=\"button\"\r\n >\r\n {item.value.value}\r\n \r\n );\r\n};\r\n\r\nexport const VariantOptions = (\r\n { items = [], type, variant, optionCode, onOptionCodeSelect, allowDisable = true }: IVariantOptions\r\n) => {\r\n const isColorOption = type === VARIANT_TYPE_COLOR;\r\n const swiperRef = useRef(null);\r\n\r\n if (!variant) {\r\n console.log('Variant options called when variant is null');\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {\r\n swiperRef.current = swiper;\r\n }}\r\n nested={true}\r\n modules={[Navigation]}\r\n navigation={{\r\n lockClass: 'd-none',\r\n disabledClass: 'disabled',\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev'\r\n }}\r\n slidesPerView=\"auto\"\r\n slidesOffsetBefore={36}\r\n slidesOffsetAfter={36}\r\n spaceBetween={16}\r\n observer\r\n >\r\n \r\n \r\n\r\n {items.map((item: VariantOption, idx: number) => {\r\n const selected = variant && item.value.code === variant.value.code;\r\n\r\n return (\r\n \r\n {isColorOption && (\r\n \r\n )}\r\n {!isColorOption && (\r\n \r\n )}\r\n \r\n );\r\n })}\r\n \r\n
\r\n
);\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"ProductTile\":\"ProductTile-module__ProductTile--yADH\",\"VariantOptionsContainer\":\"ProductTile-module__VariantOptionsContainer--ddTg\",\"ImageComponent\":\"ProductTile-module__ImageComponent--Uz_u\",\"componentContent\":\"ProductTile-module__componentContent--ppsp\",\"Meta\":\"ProductTile-module__Meta--i_s2\",\"h3\":\"ProductTile-module__h3--Enks\",\"pricing\":\"ProductTile-module__pricing--wWzU\",\"Prices\":\"ProductTile-module__Prices--R3as\",\"PriceLabel\":\"ProductTile-module__PriceLabel--E1ET\",\"AddToCart\":\"ProductTile-module__AddToCart--iyOf\",\"AddToCartAmount\":\"ProductTile-module__AddToCartAmount--FF94\",\"AddToCartAmountUOM\":\"ProductTile-module__AddToCartAmountUOM--kkDS\"};","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { toast } from 'react-toastify';\r\nimport { ProductData, VariantOption } from '@utils/mapProductsData';\r\nimport { addToCart } from '@components-react/Cart/cartSlice';\r\nimport { selectDisplayTax } from '@components/Preferences/preferencesSlice';\r\nimport { useBreakpoint } from '@hooks/useBreakpoint';\r\nimport { Labels } from './Components/Labels';\r\nimport { Media } from './Components/Media';\r\nimport { VariantOptions } from './Components/VariantOptions';\r\nimport styles from './ProductTile.module.scss';\r\nimport type { CartItem } from '@sctypes/product/CartItem';\r\nimport type {\r\n Media as MediaData,\r\n UnitOfMeasure,\r\n Variant\r\n} from '@sctypes/product/Product';\r\n\r\n\r\nexport const ProductTile = ({\r\n product,\r\n prices,\r\n phrases = {},\r\n fallbackImage,\r\n showAddToCartButton = true\r\n}: {\r\n product: ProductData;\r\n prices: any;\r\n phrases: any;\r\n fallbackImage: MediaData;\r\n showAddToCartButton: boolean;\r\n}) => {\r\n const dispatch = useDispatch();\r\n const displayTax = useSelector((state) => selectDisplayTax(state));\r\n\r\n const breakpoint = useBreakpoint();\r\n const isSmallScreen = ['xs', 'sm', 'md'].includes(breakpoint);\r\n\r\n const variants: Variant[] = product.variants;\r\n\r\n\r\n const [currentVariant, setCurrentVariant]: [\r\n Variant,\r\n (value: Variant) => void\r\n ] = useState(\r\n variants.find((variant) => variant.code === product.defaultVariantCode)\r\n );\r\n const [currentUnitOfMeasure, setCurrentUnitOfMeasure]: [\r\n UnitOfMeasure,\r\n (value: UnitOfMeasure) => void\r\n ] = useState(currentVariant?.unitsOfMeasure[0]);\r\n const [currentUnitOfMeasureDescription, setCurrentUnitOfMeasureDescription]: [\r\n string,\r\n (value: string) => void\r\n ] = useState(currentVariant?.unitsOfMeasure[0].description);\r\n const [optionCode1, setOptionCode1]: [string, (value: string) => void] =\r\n useState(product.optionCode1 || '');\r\n const [optionCode2, setOptionCode2]: [string, (value: string) => void] =\r\n useState(product.optionCode2 || '');\r\n const [availableOptionCodes1, setAvailableOptionCodes1]: [\r\n VariantOption[],\r\n (value: VariantOption[]) => void\r\n ] = useState(product.availableOptionCodes1 || []);\r\n const [availableOptionCodes2, setAvailableOptionCodes2]: [\r\n VariantOption[],\r\n (value: VariantOption[]) => void\r\n ] = useState(product.availableOptionCodes2 || []);\r\n const [orderAmount, setOrderAmount]: [number, (value: number) => void] =\r\n useState(1);\r\n\r\n const variantUnitsOfMeasure: UnitOfMeasure[] =\r\n currentVariant?.unitsOfMeasure || [];\r\n\r\n const optionCode1Value: VariantOption = availableOptionCodes1.find(\r\n (option: VariantOption) => option.value.code === optionCode1\r\n );\r\n const optionCode2Value: VariantOption = availableOptionCodes2.find(\r\n (option: VariantOption) => option.value.code === optionCode2\r\n );\r\n\r\n const hasVariantOptions: boolean =\r\n availableOptionCodes1.length > 0 || availableOptionCodes2.length > 0;\r\n const hasMultipleUnitsOfMeasure: boolean =\r\n variantUnitsOfMeasure?.length > 1 || false;\r\n\r\n if (optionCode2Value?.disabled) {\r\n const availableItems = availableOptionCodes2.filter(\r\n (item) => !item.disabled\r\n );\r\n if (availableItems.length > 0) {\r\n setOptionCode2(availableItems[0].value.code);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n const nextVariant: Variant = variants.find(\r\n (variant: any) =>\r\n variant.optionCode1 === optionCode1 &&\r\n variant.optionCode2 === optionCode2\r\n );\r\n nextVariant && setCurrentVariant(nextVariant);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [optionCode1, optionCode2]);\r\n\r\n useEffect(() => {\r\n if (!currentVariant) {\r\n return;\r\n }\r\n\r\n let newUnit: UnitOfMeasure = currentVariant.unitsOfMeasure[0];\r\n if (currentUnitOfMeasure) {\r\n const unitWithSameQuantity: UnitOfMeasure =\r\n currentVariant.unitsOfMeasure.find((uom: any) => {\r\n return uom.itemsPerUnit === currentUnitOfMeasure.itemsPerUnit;\r\n });\r\n\r\n if (unitWithSameQuantity) {\r\n newUnit = unitWithSameQuantity;\r\n }\r\n }\r\n\r\n setCurrentUnitOfMeasure(newUnit);\r\n doUnitDescription(newUnit);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [currentVariant]);\r\n\r\n const handleOptionCodeSelect = (\r\n optionCode: string,\r\n optionValue: VariantOption\r\n ) => {\r\n if (optionCode === 'optionCode1') {\r\n const availableVariants: Variant[] = variants.filter(\r\n (variant: Variant) => variant.optionCode1 === optionValue.value.code\r\n );\r\n const validOptionCodes2: string[] = [\r\n ...new Set(\r\n availableVariants.map((variant: Variant) => variant.optionCode2)\r\n )\r\n ];\r\n const updatedOptionCodes2: VariantOption[] = availableOptionCodes2.map(\r\n (code: VariantOption) => ({\r\n ...code,\r\n disabled: !validOptionCodes2.includes(code.value.code)\r\n })\r\n );\r\n setAvailableOptionCodes2(updatedOptionCodes2);\r\n\r\n setOptionCode1(optionValue.value.code);\r\n } else {\r\n const availableVariants: Variant[] = variants.filter(\r\n (variant: Variant) => variant.optionCode2 === optionValue.value.code\r\n );\r\n const validOptionCodes1: string[] = [\r\n ...new Set(\r\n availableVariants.map((variant: Variant) => variant.optionCode1)\r\n )\r\n ];\r\n const updatedOptionCodes1: VariantOption[] = availableOptionCodes1.map(\r\n (code: VariantOption) => ({\r\n ...code,\r\n disabled: !validOptionCodes1.includes(code.value.code)\r\n })\r\n );\r\n setAvailableOptionCodes1(updatedOptionCodes1);\r\n setOptionCode2(optionValue.value.code);\r\n }\r\n };\r\n\r\n const handleUnitOfMeasureChange = (\r\n event: React.ChangeEvent\r\n ) => {\r\n const unitOfMeasureCode: string = event.target.value;\r\n const nextUnitOfMeasure: UnitOfMeasure = currentVariant.unitsOfMeasure.find(\r\n (unitOfMeasure: UnitOfMeasure) => unitOfMeasure.code === unitOfMeasureCode\r\n );\r\n setCurrentUnitOfMeasure(nextUnitOfMeasure);\r\n doUnitDescription(nextUnitOfMeasure);\r\n };\r\n\r\n const doUnitDescription = (unit: UnitOfMeasure) => {\r\n if (unit?.description && unit.itemsPerUnit > 1) {\r\n const pricePerUnit: number = displayTax\r\n ? unit.prices.current.incTax.numeric\r\n : unit.prices.current.exTax.numeric;\r\n\r\n const pricePerSingle: number = pricePerUnit / unit.itemsPerUnit;\r\n const formattedPricePerSingle = pricePerSingle.toLocaleString('nl-NL', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n\r\n setCurrentUnitOfMeasureDescription(\r\n unit.description.replace('#PRICE#', `€ ${formattedPricePerSingle}`)\r\n );\r\n } else {\r\n setCurrentUnitOfMeasureDescription(unit.description);\r\n }\r\n };\r\n\r\n const handleOrderAmountChange = (e: React.ChangeEvent) => {\r\n setOrderAmount(parseInt(e.target.value, 10));\r\n };\r\n\r\n function getPhrases(): IPhrases {\r\n let phrases = {\r\n Phrases: {}\r\n };\r\n try {\r\n phrases = JSON.parse(document.querySelector('[data-component=add-to-cart]').textContent);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n\r\n return phrases?.Phrases;\r\n }\r\n\r\n\r\n const handleAddToCart = () => {\r\n\r\n\r\n if (orderAmount === 0 || isNaN(orderAmount)) {\r\n const phrase = getPhrases();\r\n toast(phrase.AddToCart_NoProductMessage);\r\n }\r\n\r\n if (currentVariant && currentUnitOfMeasure && orderAmount) {\r\n const cartItem: CartItem[] = [\r\n {\r\n orderAmount,\r\n variantCode: currentVariant.code,\r\n unitOfMeasureCode: currentUnitOfMeasure.code,\r\n currentVariant\r\n }\r\n ];\r\n addToCart(dispatch)(cartItem);\r\n }\r\n };\r\n\r\n const priceKey = `${currentVariant?.code}:${currentUnitOfMeasure?.code}`;\r\n const effectivePrice =\r\n prices && prices[priceKey]\r\n ? prices[priceKey]\r\n : currentUnitOfMeasure?.prices;\r\n\r\n const currentMedia: MediaData[] = currentVariant\r\n ? [...currentVariant.media]\r\n : [];\r\n if (currentMedia.length === 0) {\r\n currentMedia.push(fallbackImage);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {product.labels.length > 0 && }\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n {effectivePrice && (\r\n \r\n )}\r\n\r\n {!isSmallScreen && (\r\n <>\r\n {hasVariantOptions && (\r\n
\r\n {availableOptionCodes1.length > 0 && (\r\n \r\n )}\r\n {availableOptionCodes2.length > 0 && (\r\n \r\n )}\r\n
\r\n )}\r\n {showAddToCartButton && (\r\n
\r\n
\r\n {hasMultipleUnitsOfMeasure && (\r\n ) =>\r\n handleUnitOfMeasureChange(e)\r\n }\r\n >\r\n {variantUnitsOfMeasure?.length > 0 &&\r\n variantUnitsOfMeasure.map((uom: any) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n )}\r\n {!hasMultipleUnitsOfMeasure && currentUnitOfMeasure && (\r\n \r\n )}\r\n
\r\n\r\n
\r\n
\r\n ) =>\r\n handleOrderAmountChange(e)\r\n }\r\n value={orderAmount}\r\n type=\"number\"\r\n min=\"1\"\r\n className={`form-control ${styles.AddToCartAmount} pr-0`}\r\n name=\"amount\"\r\n autoComplete=\"off\"\r\n placeholder=\"Aantal\"\r\n aria-label=\"aantal\"\r\n />\r\n
\r\n \r\n \r\n {phrases.addToCart}\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","// extracted by mini-css-extract-plugin\nexport default {\"SwipeableProductTileList\":\"SwipeableProductTileList-module__SwipeableProductTileList--UDdc\",\"buttons\":\"SwipeableProductTileList-module__buttons--fPzl\",\"btnListSlide\":\"SwipeableProductTileList-module__btnListSlide--YleJ\"};","import React, { useRef } from 'react';\r\nimport objStr from 'obj-str';\r\nimport { Swiper, SwiperSlide, Navigation } from '@lib/swiper';\r\nimport { mapProductData } from '@utils/mapProductsData';\r\nimport { ProductTile } from '../ProductTile';\r\nimport styles from './SwipeableProductTileList.module.scss';\r\nimport type { Product, Media } from '@sctypes/product/Product';\r\nimport type { KeyValuePair } from '@sctypes/KeyValuePair';\r\n\r\nexport interface SwipableProductTileListProps {\r\n fallbackImage?: Media;\r\n hideGliderNavigation: boolean;\r\n phrases?: KeyValuePair[];\r\n prices: any;\r\n products: Product[];\r\n slidesPerView: number;\r\n title: string;\r\n showAddToCartButton?: boolean;\r\n}\r\n\r\nexport const SwipableProductTileList = (props: SwipableProductTileListProps) => {\r\n const swiperRef = useRef(null);\r\n\r\n const {\r\n fallbackImage,\r\n hideGliderNavigation = false,\r\n phrases,\r\n prices,\r\n products,\r\n slidesPerView,\r\n title,\r\n showAddToCartButton = true\r\n } = props;\r\n\r\n const cssClassNames = objStr({\r\n ['component-content']: true,\r\n [styles.SwipeableProductTileList]: true\r\n });\r\n\r\n return (\r\n
\r\n {title &&

}\r\n
\r\n {\r\n swiperRef.current = swiper;\r\n }}\r\n >\r\n {products.map((product: Product, idx: number) => {\r\n const mappedProduct = mapProductData(product);\r\n if (!mappedProduct?.variant) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n\r\n {!hideGliderNavigation &&\r\n
\r\n swiperRef.current.slidePrev()}\r\n >\r\n prev\r\n \r\n\r\n swiperRef.current.slideNext()}\r\n >\r\n next\r\n \r\n
\r\n }\r\n\r\n \r\n
\r\n

\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"ProductTileList\":\"ProductTileList-module__ProductTileList--spEi\"};","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { mapProductData } from '@utils/mapProductsData';\r\nimport { context } from '@services/meta-context';\r\nimport { useUserPrices } from './useUserPrices';\r\nimport { ProductTile } from './ProductTile';\r\nimport { SwipableProductTileList } from './Components/SwipeableProductTileList';\r\nimport styles from './ProductTileList.module.scss';\r\n\r\nimport type { ProductData } from '@utils/mapProductsData';\r\nimport type { Product, Variant, UnitOfMeasure, Media as MediaData } from '@sctypes/product/Product';\r\nimport type { Prices } from '@sctypes/product/Prices';\r\n\r\n\r\nexport interface ProductTileListingProps {\r\n title?: string;\r\n hasGlider?: boolean;\r\n hideGliderNavigation?: boolean;\r\n slidesPerView?: number;\r\n products: Product[];\r\n phrases?: any;\r\n fallbackImage?: MediaData;\r\n isEdit?: boolean;\r\n showAddToCartButton: boolean;\r\n}\r\n\r\ninterface VariantUomCodes {\r\n UnitOfMeasureCode: string;\r\n VariantCode: string;\r\n}\r\n\r\nexport const ProductTileList = (props: ProductTileListingProps) => {\r\n const { fetchUserPrices } = useUserPrices();\r\n const productsState = useSelector((state: any) => state.productsListing);\r\n const [prices, setPrices]: [any, (prices: any) => void] = useState({});\r\n const { title, hasGlider, hideGliderNavigation, slidesPerView, phrases, fallbackImage } = props;\r\n\r\n const products: Product[] = productsState.entities?.results ?? props.products;\r\n\r\n useEffect(() => {\r\n if (context.user.isLoggedIn) {\r\n const variantProductMapping = new Map();\r\n\r\n // Check if Prices has a key for [product.code]\r\n const productsWithoutPricing = products.filter(product => !Object.prototype.hasOwnProperty.call(prices, product.code));\r\n\r\n const unitsOfMeasureCodes: VariantUomCodes[] = productsWithoutPricing.reduce(\r\n (uomCode: VariantUomCodes[][], product: Product) => {\r\n const variantUomCodes: VariantUomCodes[][] = product.variants.map((variant: Variant) =>\r\n variant.unitsOfMeasure.map((uom: UnitOfMeasure) => {\r\n variantProductMapping.set(variant.code, product.code);\r\n\r\n return {\r\n VariantCode: variant.code,\r\n UnitOfMeasureCode: uom.code\r\n };\r\n })\r\n );\r\n\r\n return uomCode.concat(variantUomCodes);\r\n },\r\n []).flat();\r\n\r\n unitsOfMeasureCodes.length > 0 && fetchUserPrices(unitsOfMeasureCodes).then((priceData: any) => {\r\n const newPrices: any = { ...prices };\r\n priceData.data.map((prices: Prices) => {\r\n if (!variantProductMapping.get(prices.variantCode)) {\r\n console.log(`VariantCode not found in variantProductMapping: ${prices.variantCode}`);\r\n return;\r\n }\r\n\r\n const productCode = variantProductMapping.get(prices.variantCode);\r\n if (!newPrices[productCode]) {\r\n newPrices[productCode] = {};\r\n }\r\n\r\n const key = `${prices.variantCode}:${prices.unitOfMeasureCode}`;\r\n newPrices[productCode][key] = prices;\r\n });\r\n\r\n setPrices(newPrices);\r\n });\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [products]);\r\n\r\n if (!products) {\r\n if (hasGlider && props.isEdit) {\r\n return

;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n if(hasGlider) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n {products.map((product: Product, idx: number) => {\r\n const mappedProduct: ProductData = mapProductData(product);\r\n if (!mappedProduct?.variant) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"pricelabel\":\"ProductVariantSelector-module__pricelabel--d0dK\",\"pricelabelPrice\":\"ProductVariantSelector-module__pricelabelPrice--mlLt\",\"pricelabelUnitOfMeasure\":\"ProductVariantSelector-module__pricelabelUnitOfMeasure--EAx7\",\"variantOptions\":\"ProductVariantSelector-module__variantOptions--ybUz\",\"variantOptionsSize\":\"ProductVariantSelector-module__variantOptionsSize--Uo77\",\"variantCollapseContainer\":\"ProductVariantSelector-module__variantCollapseContainer--_tQX\",\"variantCollapseButtonContainer\":\"ProductVariantSelector-module__variantCollapseButtonContainer--awxc\",\"option\":\"ProductVariantSelector-module__option--CAWO\",\"optionColor\":\"ProductVariantSelector-module__optionColor--qqNz\",\"optionColorActive\":\"ProductVariantSelector-module__optionColorActive--AVEr\",\"colorImage\":\"ProductVariantSelector-module__colorImage--S8_l\",\"optionLabel\":\"ProductVariantSelector-module__optionLabel--Koht\",\"optionLabelDisabled\":\"ProductVariantSelector-module__optionLabelDisabled--B2Li\",\"optionLabelActive\":\"ProductVariantSelector-module__optionLabelActive--nISp\",\"allUnitsOfMeasure\":\"ProductVariantSelector-module__allUnitsOfMeasure--zHfk\",\"unitOfMeasure\":\"ProductVariantSelector-module__unitOfMeasure--HClS\",\"unitOfMeasureActive\":\"ProductVariantSelector-module__unitOfMeasureActive--w3g5\",\"unitOfMeasureSingle\":\"ProductVariantSelector-module__unitOfMeasureSingle--tfWi\"};","import objstr from 'obj-str';\r\nimport * as React from 'react';\r\nimport { useEffect, useState, useRef } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { setProduct, setUnitOfMeasure } from '@components/ProductDetail/state/productDetailSlice';\r\nimport { useBreakpoint } from '@hooks/useBreakpoint';\r\nimport { mapProductData, ProductData, VariantOption } from '@utils/mapProductsData';\r\nimport * as productConstants from '@utils/productConstants';\r\nimport { ScProps } from '@components-react/ScProps';\r\nimport { UnitOfMeasure, Variant } from '@sctypes/product/Product';\r\nimport { Prices } from '@sctypes/product/Prices';\r\nimport { AttributeList } from '@sctypes/product/AttributeList';\r\nimport { Attribute } from '@sctypes/product/Attribute';\r\nimport { ProductVariantSelectorProps, VariantPhrases } from './ProductVariantSelectorProps';\r\nimport styles from './ProductVariantSelector.module.scss';\r\n\r\ninterface Selection {\r\n variantCode: string;\r\n unitCode: string;\r\n}\r\n\r\ninterface FormattedPrices {\r\n itemPrice: string;\r\n exTax: string;\r\n incTax: string;\r\n}\r\n\r\nexport const ProductVariantSelector = (props: ScProps) => {\r\n const dispatch = useDispatch();\r\n const { data } = props;\r\n const phrases = data.phrases;\r\n\r\n const [product, setProductState]: [ProductData, (value: ProductData) => void] =\r\n useState(mapProductData(data.product, data.variant));\r\n\r\n useEffect(() => {\r\n product.unitOfMeasureCode = product.variant?.unitsOfMeasure[0].code;\r\n dispatch(setProduct(product));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const [selection, setSelection]: [Selection, (value: Selection) => void] = useState({\r\n variantCode: product.variant.code,\r\n unitCode: product.variant.unitsOfMeasure[0].code\r\n });\r\n\r\n const currentVariant: Variant = product.variant;\r\n const units: UnitOfMeasure[] = currentVariant.unitsOfMeasure;\r\n const currentUnit: UnitOfMeasure = units.find((unit: UnitOfMeasure) => unit.code === selection.unitCode);\r\n\r\n const breakpoint: string = useBreakpoint();\r\n const preferences = useSelector((state: any) => state?.preferences);\r\n const prices: Prices = currentUnit.prices;\r\n const { locale = 'nl-NL', displayTax = false } = preferences;\r\n const variantUrl: string = currentVariant?.url || '';\r\n\r\n\r\n useEffect(() => {\r\n if (variantUrl) {\r\n try {\r\n const currentUrl = new URL(window.location.href);\r\n const currentUrlParams = new URLSearchParams(currentUrl.search);\r\n const nextVariantUrl = new URL(window.location.href);\r\n\r\n nextVariantUrl.pathname = variantUrl;\r\n nextVariantUrl.search = currentUrlParams.toString();\r\n\r\n window.history.replaceState(null, '', `${nextVariantUrl.toString()}`);\r\n } catch (e) {\r\n // do nothing\r\n }\r\n }\r\n }, [variantUrl]);\r\n\r\n\r\n const handleVariantChange = (payload: { optionCode1?: string, optionCode2?: string }) => {\r\n const optionCode1: string = payload.optionCode1 ?? currentVariant.optionCode1;\r\n const optionCode2: string = payload.optionCode2 ?? currentVariant.optionCode2;\r\n\r\n let newVariant: Variant = product.variants.find((variant: Variant) => {\r\n return variant.optionCode1 === optionCode1 && variant.optionCode2 === optionCode2;\r\n });\r\n\r\n if (!newVariant) {\r\n newVariant = product.variants.find((variant: Variant) => variant.optionCode1 === optionCode1);\r\n\r\n if (!newVariant) {\r\n return;\r\n }\r\n }\r\n\r\n const newProduct: ProductData = mapProductData(data.product, newVariant);\r\n const unitWithSameQuantity: UnitOfMeasure = newVariant.unitsOfMeasure\r\n .filter((uom: UnitOfMeasure) => uom.itemsPerUnit === currentUnit.itemsPerUnit)[0];\r\n\r\n const newUnitOfMeasureCode: string = unitWithSameQuantity?.code ?? newVariant.unitsOfMeasure[0].code;\r\n newProduct.unitOfMeasureCode = newUnitOfMeasureCode;\r\n setProductState(newProduct);\r\n dispatch(setProduct(newProduct));\r\n\r\n setSelection({\r\n variantCode: newVariant.code,\r\n unitCode: newUnitOfMeasureCode\r\n });\r\n };\r\n\r\n const handleUnitOfMeasureChange = (uomCode: string) => {\r\n setSelection({\r\n ...selection,\r\n unitCode: uomCode\r\n });\r\n\r\n dispatch(setUnitOfMeasure(uomCode));\r\n };\r\n\r\n function formatPrices(prices: Prices, itemsPerUnit = 1): FormattedPrices {\r\n const incTax = prices?.current.incTax.numeric;\r\n const exTax = prices?.current.exTax.numeric;\r\n const itemPrice: number = displayTax\r\n ? (incTax / itemsPerUnit)\r\n : (exTax / itemsPerUnit);\r\n\r\n return {\r\n itemPrice: new Intl.NumberFormat(locale, { style: 'currency', currency: 'EUR' }).format(itemPrice),\r\n exTax: prices.current.exTax.formatted,\r\n incTax: prices.current.incTax.formatted\r\n };\r\n }\r\n\r\n const isSmallScreen: boolean = ['xs', 'sm'].includes(breakpoint);\r\n const displayPrice: string = preferences.displayTax\r\n ? prices?.current.incTax.formatted || ''\r\n : prices?.current.exTax.formatted || '';\r\n\r\n const variantCollapseContainerMinHeight = 130;\r\n const useRefVariantCollapseContainer = (variantCollapseContainerRef: React.RefObject) => {\r\n const [height, setHeight] = useState(0);\r\n useEffect(() => {\r\n if (height === 0 && variantCollapseContainerRef.current) {\r\n const { current } = variantCollapseContainerRef;\r\n const boundingRect = current.getBoundingClientRect();\r\n const { /* width,*/ height } = boundingRect;\r\n setHeight(Math.round(height));\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [variantCollapseContainerRef]);\r\n return height;\r\n };\r\n const variantCollapseContainer = useRef();\r\n const variantCollapseContainerHeight = useRefVariantCollapseContainer(variantCollapseContainer);\r\n\r\n const NonColorVariantOptions = (\r\n { options, optionCodes, index }: { options: AttributeList, optionCodes: VariantOption[], index: number }\r\n ) => {\r\n const optionKey = `optionCode${index + 1}`;\r\n const optionCode: string = index === 0 ? currentVariant.optionCode1 : currentVariant.optionCode2;\r\n\r\n return (\r\n
\r\n {options.type.value}\r\n {isSmallScreen && (\r\n handleVariantChange({ [optionKey]: e.target.value })}\r\n value={optionCode}\r\n >\r\n {options.items.map((option: Attribute) => {\r\n const { code, value } = option?.value || {};\r\n const disabled = optionCodes.find((optionCode: VariantOption) => optionCode.value.code === code)?.disabled === true;\r\n\r\n return (\r\n \r\n );\r\n })}\r\n \r\n )}\r\n {!isSmallScreen && (\r\n
\r\n variantCollapseContainerMinHeight ? 'collapsable' : 'show'}`}\r\n >\r\n {options.items.map((option: Attribute) => {\r\n const { code, value } = option?.value || {};\r\n const disabled = optionCodes.find((optionCode: VariantOption) => optionCode.value.code === code)?.disabled;\r\n const classNames: string = objstr({\r\n [styles.option]: true,\r\n [styles.optionLabel]: true,\r\n [styles.optionLabelActive]: (code === optionCode),\r\n [styles.optionLabelDisabled]: disabled,\r\n transition: true\r\n });\r\n return (\r\n !disabled && handleVariantChange({ [optionKey]: code })}\r\n key={`${code}-${value}`}\r\n >\r\n {value}\r\n \r\n );\r\n })}\r\n
\r\n
\r\n {/* eslint-disable-next-line max-len */}\r\n \r\n
\r\n
\r\n )}\r\n \r\n );\r\n };\r\n\r\n let currentUnitDescription: string = currentUnit.description;\r\n if (currentUnit.itemsPerUnit > 1) {\r\n const { itemPrice }: FormattedPrices = formatPrices(currentUnit.prices, currentUnit.itemsPerUnit);\r\n currentUnitDescription = currentUnitDescription.replace('#PRICE#', itemPrice);\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {displayPrice && (<>\r\n \r\n {displayPrice}\r\n \r\n {currentUnitDescription}\r\n \r\n )}\r\n
\r\n {displayTax ? 'Incl. BTW' : 'Excl. BTW'}\r\n
\r\n {product.variantOptions.map((options: AttributeList, idx: number) => {\r\n let optionCodes: VariantOption[];\r\n if (idx === 0) {\r\n optionCodes = product.availableOptionCodes1;\r\n } else {\r\n optionCodes = product.availableOptionCodes2;\r\n }\r\n\r\n if (options.type.code === productConstants.VARIANT_TYPE_COLOR) {\r\n return ;\r\n }\r\n\r\n return ;\r\n })}\r\n
\r\n {phrases.unitLabel}\r\n {isSmallScreen && (\r\n handleUnitOfMeasureChange(e.target.value)}\r\n value={currentUnit.code}\r\n >\r\n {units.map((unit: UnitOfMeasure) => {\r\n const { code, name, prices }: UnitOfMeasure = unit;\r\n const { itemPrice }: FormattedPrices = formatPrices(prices, 1);\r\n const className: any = unit.code === currentUnit.code ? [styles.unitOfMeasureActive] : '';\r\n return (\r\n \r\n {name} {itemPrice}\r\n \r\n );\r\n })}\r\n \r\n )}\r\n {!isSmallScreen && (\r\n
\r\n {units?.length && units.map((unit: UnitOfMeasure, idx) => {\r\n const { code, name, prices }: UnitOfMeasure = unit;\r\n const { itemPrice }: FormattedPrices = formatPrices(prices, 1);\r\n const isSelected: boolean = unit.code === currentUnit.code;\r\n const classNames: string = objstr({\r\n [styles.option]: true,\r\n [styles.optionLabel]: true,\r\n [styles.unitOfMeasure]: true,\r\n [styles.unitOfMeasureActive]: (isSelected && units.length !== 1),\r\n [styles.unitOfMeasureSingle]: units.length === 1,\r\n transition: true\r\n });\r\n return (\r\n handleUnitOfMeasureChange(code)}\r\n key={`${idx}-${code}`}\r\n >\r\n {name}
\r\n {itemPrice}\r\n \r\n );\r\n })}\r\n
\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nconst ColorVariantOptions = ({ handleVariantChange, currentVariant, phrases, options, index }:\r\n {\r\n handleVariantChange: (value: { optionCode1?: string, optionCode2?: string }) => void,\r\n currentVariant: Variant,\r\n phrases: VariantPhrases,\r\n options: Attribute[],\r\n index: number\r\n }) => {\r\n const optionKey = `optionCode${index + 1}`;\r\n const optionCode = index === 0 ? currentVariant.optionCode1 : currentVariant.optionCode2;\r\n\r\n return (\r\n
\r\n {phrases.colorLabel}\r\n
\r\n {options.map((option: Attribute, idx: number) => {\r\n const { code, value } = option?.value || {};\r\n const classNames: string = objstr({\r\n [styles.option]: true,\r\n [styles.optionColor]: true,\r\n [styles.optionColorActive]: (code === optionCode),\r\n transition: true,\r\n tooltip: true\r\n });\r\n const image: string = option.images[0]?.src;\r\n if (!image) {\r\n return null;\r\n }\r\n\r\n return (\r\n handleVariantChange({ [optionKey]: code })}\r\n key={`${idx}-${code}`}\r\n >\r\n \r\n {value}\r\n \r\n );\r\n }\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"fullPage\":\"FullPageScrollPane-module__fullPage--t3xE\",\"isOpen\":\"FullPageScrollPane-module__isOpen--gA2x\",\"fullPageScrollPane\":\"FullPageScrollPane-module__fullPageScrollPane--PZwR\",\"fullPageScrollPaneContent\":\"FullPageScrollPane-module__fullPageScrollPaneContent--hwJr\",\"fullPageHeader\":\"FullPageScrollPane-module__fullPageHeader--FVYH\",\"fullPageFooter\":\"FullPageScrollPane-module__fullPageFooter--aczj\"};","import React, { useEffect, useState } from 'react';\r\nimport { useOverflowHidden } from '@hooks/useOverflowHidden';\r\nimport { useBrowserLayoutEffect } from '@hooks/useBrowserLayoutEffect';\r\nimport styles from './FullPageScrollPane.module.scss';\r\n\r\ninterface IFullPageScrollPane {\r\n PageHeader?: React.ReactNode;\r\n PageFooter?: React.ReactNode;\r\n children: React.ReactNode;\r\n isOpen?: boolean;\r\n addContainer?: boolean;\r\n}\r\n\r\nexport const FullPageScrollPane = ({\r\n PageHeader,\r\n PageFooter,\r\n children,\r\n isOpen\r\n}: IFullPageScrollPane) => {\r\n\r\n // Make sure this component is client only to prevent hydration errors\r\n const [showChild, setShowChild] = useState(false);\r\n useEffect(() => {\r\n // TODO: \"use client\" in NextJS 13 + `app` directory\r\n setShowChild(true);\r\n }, []);\r\n\r\n\r\n useOverflowHidden(isOpen);\r\n\r\n useBrowserLayoutEffect(() => {\r\n if(isOpen) {\r\n document.body.classList.toggle('isFullPageScrollpaneOpen');\r\n }\r\n return () => document.body.classList.remove('isFullPageScrollpaneOpen');\r\n }, [isOpen]);\r\n\r\n\r\n if (!showChild) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {PageHeader && (\r\n
\r\n {PageHeader}\r\n
\r\n )}\r\n\r\n
\r\n
\r\n { children }\r\n
\r\n
\r\n\r\n\r\n {PageFooter && (\r\n
\r\n { PageFooter }\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n","import React, { useRef, useState } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { useBrowserLayoutEffect } from '@hooks/useBrowserLayoutEffect';\r\n\r\ninterface IPortalProps {\r\n children?: React.ReactNode;\r\n selector?: string;\r\n}\r\n\r\n\r\nexport const Portal = ({ children, selector = '#portal' }: IPortalProps) => {\r\n const nodeRef: any = useRef(null);\r\n const [mounted, setMounted] = useState(false);\r\n\r\n useBrowserLayoutEffect(() => {\r\n nodeRef.current = document.querySelector(selector);\r\n !!nodeRef.current && setMounted(true);\r\n\r\n return () => setMounted(false);\r\n }, [selector]);\r\n\r\n return mounted ? createPortal(children, nodeRef.current) : null;\r\n};\r\n","export type CallBackFn = (...args: any[]) => any;\r\n\r\nexport const debounce = (callBackFn: CallBackFn, delay: number) => {\r\n let timer: ReturnType;\r\n\r\n return function (args: any) {\r\n\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n\r\n timer = setTimeout(() => {\r\n timer = null;\r\n callBackFn.call(args);\r\n }, delay);\r\n };\r\n};\r\n","export default (value: unknown): value is Date => value instanceof Date;\r\n","export default (value: unknown): value is null | undefined => value === null;\r\n","import isDateObject from './isDateObject';\r\nimport isNullOrUndefined from './isNullOrUndefined';\r\n\r\nexport const isObjectType = (value: unknown) => typeof value === 'object';\r\n\r\nexport default (value: unknown): value is T =>\r\n !isNullOrUndefined(value) &&\r\n !Array.isArray(value) &&\r\n isObjectType(value) &&\r\n !isDateObject(value);\r\n","import { Primitive } from '../types';\r\n\r\nimport isNullOrUndefined from './isNullOrUndefined';\r\nimport { isObjectType } from './isObject';\r\n\r\nexport default (value: unknown): value is Primitive =>\r\n isNullOrUndefined(value) || !isObjectType(value);\r\n","import isObject from '../utilities/isObject';\r\n\r\nimport isDateObject from './isDateObject';\r\nimport isPrimitive from './isPrimitive';\r\n\r\nexport default function deepEqual(object1: any, object2: any) {\r\n if (isPrimitive(object1) || isPrimitive(object2)) {\r\n return object1 === object2;\r\n }\r\n\r\n if (isDateObject(object1) && isDateObject(object2)) {\r\n return object1.getTime() === object2.getTime();\r\n }\r\n\r\n const keys1 = Object.keys(object1);\r\n const keys2 = Object.keys(object2);\r\n\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n\r\n for (const key of keys1) {\r\n const val1 = object1[key];\r\n\r\n if (!keys2.includes(key)) {\r\n return false;\r\n }\r\n\r\n if (key !== 'ref') {\r\n const val2 = object2[key];\r\n\r\n if (\r\n (isDateObject(val1) && isDateObject(val2)) ||\r\n (isObject(val1) && isObject(val2)) ||\r\n (Array.isArray(val1) && Array.isArray(val2))\r\n ? !deepEqual(val1, val2)\r\n : val1 !== val2\r\n ) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { useEffect, useRef, useCallback, useState, useMemo } from 'react';\r\n\r\nimport { BrowserMultiFormatReader, DecodeContinuouslyCallback, DecodeHintType, NotFoundException } from '@zxing/library';\r\n\r\nimport deepEqual from '../utilities/deepEqual';\r\nimport { OnResultFunction, OnErrorFunction } from '../types';\r\n\r\nexport interface IUseQrScannerProps {\r\n onResult: OnResultFunction;\r\n onError: OnErrorFunction;\r\n scanDelay: number;\r\n constraints: MediaTrackConstraints;\r\n deviceId?: string;\r\n hints?: Map;\r\n stopDecoding?: boolean;\r\n audio?: boolean;\r\n}\r\n\r\nexport const useQrScanner = (props: IUseQrScannerProps) => {\r\n const { onResult, onError, scanDelay, hints, deviceId, stopDecoding} = props;\r\n\r\n const mountedRef = useRef(false);\r\n const onResultRef = useRef(onResult);\r\n const onErrorRef = useRef(onError);\r\n const videoRef = useRef(null);\r\n\r\n const [constraints, setConstraints] = useState(props.constraints);\r\n\r\n // eslint-disable-next-line\r\n const reader = useMemo(() => new BrowserMultiFormatReader(hints, scanDelay), []);\r\n\r\n const onDecode = useCallback((result, error) => {\r\n if (result) {\r\n onResultRef.current(result);\r\n }\r\n\r\n if (error) {\r\n if (error instanceof NotFoundException) {\r\n return;\r\n }\r\n\r\n if (error instanceof DOMException && error.name === 'IndexSizeError') {\r\n return;\r\n }\r\n\r\n onErrorRef.current(error);\r\n }\r\n }, []);\r\n\r\n const readerReset = useCallback(() => {\r\n reader.reset();\r\n }, [reader]);\r\n\r\n const readerStop = useCallback(() => {\r\n reader.stopAsyncDecode();\r\n }, [reader]);\r\n\r\n const readerStart = useCallback(async () => {\r\n if (!videoRef.current) {\r\n return;\r\n }\r\n\r\n try {\r\n if (deviceId) {\r\n await reader.decodeFromVideoDevice(deviceId, videoRef.current, onDecode);\r\n } else {\r\n const newConstraints: MediaStreamConstraints = {\r\n audio: false,\r\n video: constraints\r\n };\r\n\r\n await reader.decodeFromConstraints(newConstraints, videoRef.current, onDecode);\r\n }\r\n } catch (error) {\r\n onErrorRef.current(error as Error);\r\n }\r\n }, [reader, deviceId, constraints, onDecode]);\r\n\r\n useEffect(() => {\r\n mountedRef.current = true;\r\n\r\n if (stopDecoding) {\r\n readerStop();\r\n return;\r\n }\r\n\r\n (async () => {\r\n await readerStart();\r\n\r\n if (!mountedRef.current) {\r\n readerReset();\r\n }\r\n })();\r\n\r\n return () => {\r\n mountedRef.current = false;\r\n readerReset();\r\n };\r\n // eslint-disable-next-line\r\n }, [readerStart, readerReset, stopDecoding]);\r\n\r\n useEffect(() => {\r\n const isEqual = deepEqual(props.constraints, constraints);\r\n\r\n if (!isEqual) {\r\n setConstraints(props.constraints);\r\n }\r\n // eslint-disable-next-line\r\n }, [props.constraints]);\r\n\r\n useEffect(() => {\r\n onResultRef.current = onResult;\r\n }, [onResult]);\r\n\r\n useEffect(() => {\r\n onErrorRef.current = onError;\r\n }, [onError]);\r\n\r\n return { ref: videoRef, start: readerStart, stop: stopDecoding };\r\n};\r\n","export const defaultConstraints: MediaTrackConstraints = {\r\n facingMode: 'environment',\r\n width: { min: 640, ideal: 720, max: 1920 },\r\n height: { min: 640, ideal: 720, max: 1080 }\r\n};\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { Result } from '@zxing/library';\r\nimport { useMediaDevices } from '../hooks/useMediaDevices';\r\n\r\ninterface TrackerProps {\r\n result?: Result;\r\n video: HTMLVideoElement | null;\r\n constraints?: MediaTrackConstraints;\r\n deviceId?: string;\r\n scanDelay: number;\r\n}\r\n\r\nconst Tracker = (props: TrackerProps) => {\r\n const { result, video, constraints, deviceId, scanDelay } = props;\r\n\r\n const canvasRef = useRef(null);\r\n\r\n const devices = useMediaDevices(constraints);\r\n\r\n useEffect(() => {\r\n if (result === undefined || canvasRef.current === null || video === null || result.getBarcodeFormat() !== 11) {\r\n return;\r\n }\r\n\r\n let device: MediaTrackSettings = devices[0];\r\n\r\n if (deviceId !== undefined && devices.length > 1) {\r\n const value = devices.find((device) => device.deviceId === deviceId);\r\n\r\n if (value !== undefined) {\r\n device = value;\r\n }\r\n }\r\n\r\n if (device === undefined || device.width === undefined) {\r\n return;\r\n }\r\n\r\n const scaleFactor = device.width / video.clientWidth;\r\n\r\n const canvas = canvasRef.current;\r\n const ctx = canvas.getContext('2d');\r\n\r\n if (ctx === null) {\r\n return;\r\n }\r\n\r\n const timer = setTimeout(() => {\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n }, scanDelay);\r\n\r\n ctx.strokeStyle = 'rgba(0, 255, 0, 0.5)';\r\n ctx.lineWidth = 4;\r\n\r\n // bottom left\r\n const point0 = result.getResultPoints()[0] as unknown as { getX: () => number; getY: () => number; estimatedModuleSize: number };\r\n\r\n ctx.beginPath();\r\n ctx.arc(point0.getX() / scaleFactor, point0.getY() / scaleFactor, point0.estimatedModuleSize, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n // top left\r\n const point1 = result.getResultPoints()[1] as unknown as { getX: () => number; getY: () => number; estimatedModuleSize: number };\r\n\r\n ctx.beginPath();\r\n ctx.arc(point1.getX() / scaleFactor, point1.getY() / scaleFactor, point1.estimatedModuleSize, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n // top right\r\n const point2 = result.getResultPoints()[2] as unknown as { getX: () => number; getY: () => number; estimatedModuleSize: number };\r\n\r\n ctx.beginPath();\r\n ctx.arc(point2.getX() / scaleFactor, point2.getY() / scaleFactor, point2.estimatedModuleSize, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n // bottom right\r\n if (result.getResultPoints().length >= 4) {\r\n const point3 = result.getResultPoints()[3] as unknown as { getX: () => number; getY: () => number; estimatedModuleSize: number };\r\n\r\n ctx.beginPath();\r\n ctx.arc(point3.getX() / scaleFactor, point3.getY() / scaleFactor, point3.estimatedModuleSize, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n\r\n return () => clearTimeout(timer);\r\n });\r\n\r\n return (\r\n );\r\n};\r\n\r\nexport default Tracker;\r\n","import { useState } from 'react';\r\nimport { useBrowserLayoutEffect } from '@hooks/useBrowserLayoutEffect';\r\nimport { defaultConstraints } from '../misc/defaultConstraints';\r\n\r\n\r\nconst useMediaDevicesHook = (constraints?: MediaTrackConstraints) => {\r\n const [state, setState] = useState([]);\r\n\r\n useBrowserLayoutEffect(() => {\r\n let mediaStream: MediaStream;\r\n\r\n const newConstraints: MediaStreamConstraints = {\r\n audio: false,\r\n video: constraints ?? defaultConstraints\r\n };\r\n\r\n const onChange = () => {\r\n try {\r\n navigator.mediaDevices\r\n .getUserMedia(newConstraints)\r\n .then((stream) => {\r\n const settings: Array = [];\r\n mediaStream = stream;\r\n stream.getVideoTracks().forEach((track) => {\r\n settings.push(track.getSettings());\r\n });\r\n\r\n setState(settings);\r\n });\r\n\r\n } catch(error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n navigator?.mediaDevices?.addEventListener('devicechange', onChange);\r\n onChange();\r\n\r\n return () => {\r\n navigator?.mediaDevices?.removeEventListener('devicechange', onChange);\r\n\r\n if(typeof mediaStream !== 'undefined') {\r\n mediaStream.getVideoTracks().forEach((track) => {\r\n track.stop();\r\n });\r\n }\r\n };\r\n }, []);\r\n\r\n return state;\r\n};\r\n\r\nexport const useMediaDevices = useMediaDevicesHook;\r\n","import React, { CSSProperties } from 'react';\r\n\r\nconst styles: Record = {\r\n count: {\r\n bottom: 0,\r\n right: 5,\r\n fontSize: 30,\r\n color: '#fff',\r\n position: 'absolute',\r\n zIndex: 1\r\n }\r\n};\r\n\r\ninterface CounterProps {\r\n scanCount: number;\r\n}\r\n\r\nconst Counter = (props: CounterProps) => {\r\n const { scanCount } = props;\r\n\r\n return
{scanCount}
;\r\n};\r\n\r\nexport default Counter;\r\n","import React, { Fragment, useState, useEffect } from 'react';\r\n\r\nimport { Result } from '@zxing/library';\r\n\r\nimport Tracker from './Tracker';\r\nimport Counter from './Counter';\r\n\r\ninterface FinderProps {\r\n scanCount: number;\r\n hideCount: boolean;\r\n tracker: boolean;\r\n border?: number;\r\n result?: Result;\r\n video: HTMLVideoElement | null;\r\n constraints?: MediaTrackConstraints;\r\n deviceId?: string;\r\n scanDelay: number;\r\n}\r\n\r\nexport const Finder = (props: FinderProps) => {\r\n const { scanCount, hideCount, tracker, border = 80, result, video, constraints, deviceId, scanDelay } = props;\r\n\r\n const [color, setColor] = useState('rgba(255, 0, 0, 0.5)');\r\n\r\n useEffect(() => {\r\n if (result?.getBarcodeFormat() === 11 && tracker) {\r\n setColor('rgba(255, 0, 0, 0.5)');\r\n\r\n return;\r\n }\r\n\r\n setColor('rgba(0, 255, 0, 0.5)');\r\n\r\n const timer = setTimeout(() => {\r\n setColor('rgba(255, 0, 0, 0.5)');\r\n }, scanDelay);\r\n\r\n return () => {\r\n clearTimeout(timer);\r\n };\r\n }, [result, scanDelay, tracker, scanCount]);\r\n\r\n return (\r\n \r\n {!hideCount && }\r\n {tracker && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React, { useState } from 'react';\r\n\r\nimport { DecodeHintType, Result } from '@zxing/library';\r\n\r\nimport { useQrScanner } from '../hooks/useQrScanner';\r\nimport { OnErrorFunction, OnResultFunction } from '../types';\r\nimport { defaultConstraints } from '../misc/defaultConstraints';\r\nimport { Finder } from './Finder';\r\nimport type { CSSProperties, ReactElement } from 'react';\r\n\r\nconst styles: Record = {\r\n container: {\r\n width: '100%',\r\n paddingTop: '100%',\r\n overflow: 'hidden',\r\n position: 'relative'\r\n },\r\n video: {\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n display: 'block',\r\n overflow: 'hidden',\r\n position: 'absolute'\r\n }\r\n};\r\n\r\nexport interface IQrScannerProps {\r\n onError?: OnErrorFunction;\r\n onResult?: OnResultFunction;\r\n containerStyle?: CSSProperties;\r\n videoStyle?: CSSProperties;\r\n onDecode?: (result: string) => void;\r\n viewFinder?: (props: any) => ReactElement | null;\r\n hideCount?: boolean;\r\n tracker?: boolean;\r\n viewFinderBorder?: number;\r\n constraints?: MediaTrackConstraints;\r\n scanDelay?: number;\r\n deviceId?: string;\r\n hints?: Map;\r\n stopDecoding?: boolean;\r\n audio?: boolean;\r\n}\r\n\r\nexport const QrScanner = (props: IQrScannerProps) => {\r\n const {\r\n containerStyle,\r\n videoStyle,\r\n constraints = defaultConstraints,\r\n onResult,\r\n onDecode,\r\n onError,\r\n viewFinder: ViewFinder,\r\n hideCount = true,\r\n tracker = false,\r\n viewFinderBorder,\r\n deviceId,\r\n scanDelay = 100,\r\n audio = true,\r\n ...rest\r\n } = props;\r\n\r\n const [scanCount, setScanCount] = useState(0);\r\n const [result, setResult] = useState();\r\n\r\n async function handleOnResult(result: Result) {\r\n setResult(result);\r\n\r\n onResult?.(result);\r\n onDecode?.(result.getText());\r\n\r\n setScanCount((count) => count + 1);\r\n }\r\n\r\n function handleOnError(error: Error) {\r\n onError?.(error);\r\n }\r\n\r\n const { ref } = useQrScanner({\r\n onResult: handleOnResult,\r\n onError: handleOnError,\r\n constraints,\r\n deviceId,\r\n scanDelay,\r\n audio,\r\n ...rest\r\n });\r\n\r\n return (\r\n
\r\n {!ViewFinder ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\n// The npm version uses 'meta.import...' to generate an url to the confirm audio file.\r\n// React.NET can't handle that, causing a crash on render\r\nimport { QrScanner } from './react-qr-scanner';\r\nimport styles from './BarcodeScanner.module.scss';\r\n\r\ninterface IBarcodeScanner {\r\n onScanResult: (...args: any) => any\r\n}\r\n\r\nexport const BarcodeScanner = ({ onScanResult }: IBarcodeScanner) => {\r\n\r\n const [error, setError] = useState();\r\n\r\n return (\r\n
\r\n {error && {error}}\r\n setError(e.message)}\r\n tracker={true}\r\n hideCount={false}\r\n />\r\n
\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"barcodeScanner\":\"BarcodeScanner-module__barcodeScanner--U4jB\",\"video\":\"BarcodeScanner-module__video--WGbq\"};","import React, { useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { mapProductData } from '@utils/mapProductsData';\r\nimport { context } from '@services/meta-context';\r\nimport { useUserPrices } from '@components-react/ProductTile/useUserPrices';\r\nimport { ProductTile } from '@components-react/ProductTile/ProductTile';\r\nimport styles from '@components-react/ProductTile/ProductTileList.module.scss';\r\n\r\nimport type { Product, Variant, UnitOfMeasure, Media as MediaData } from '@sctypes/product/Product';\r\nimport type { Prices } from '@sctypes/product/Prices';\r\n\r\n\r\nexport interface IProductTileList {\r\n phrases?: any;\r\n fallbackImage?: MediaData;\r\n products?: Product[];\r\n showAddToCartButton?: boolean;\r\n}\r\n\r\ninterface VariantUomCodes {\r\n UnitOfMeasureCode: string;\r\n VariantCode: string;\r\n}\r\n\r\n\r\nexport const ProductTileList = ({\r\n products,\r\n fallbackImage,\r\n phrases,\r\n showAddToCartButton = true\r\n}: IProductTileList) => {\r\n const { fetchUserPrices } = useUserPrices();\r\n const [prices, setPrices]: [any, (prices: any) => void] = useState({});\r\n\r\n useEffect(() => {\r\n if (context.user.isLoggedIn) {\r\n const variantProductMapping = new Map();\r\n\r\n // Check if Prices has a key for [product.code]\r\n const productsWithoutPricing = products.filter(\r\n (product) => !Object.prototype.hasOwnProperty.call(prices, product.code)\r\n );\r\n\r\n const unitsOfMeasureCodes: VariantUomCodes[] = productsWithoutPricing\r\n .reduce((uomCode: VariantUomCodes[][], product: Product) => {\r\n const variantUomCodes: VariantUomCodes[][] = product.variants.map(\r\n (variant: Variant) =>\r\n variant.unitsOfMeasure.map((uom: UnitOfMeasure) => {\r\n variantProductMapping.set(variant.code, product.code);\r\n\r\n return {\r\n VariantCode: variant.code,\r\n UnitOfMeasureCode: uom.code\r\n };\r\n })\r\n );\r\n\r\n return uomCode.concat(variantUomCodes);\r\n }, [])\r\n .flat();\r\n\r\n unitsOfMeasureCodes.length > 0 &&\r\n fetchUserPrices(unitsOfMeasureCodes).then((priceData: any) => {\r\n const newPrices: any = { ...prices };\r\n priceData.data.map((prices: Prices) => {\r\n if (!variantProductMapping.get(prices.variantCode)) {\r\n console.log(\r\n `VariantCode not found in variantProductMapping: ${prices.variantCode}`\r\n );\r\n return;\r\n }\r\n\r\n const productCode = variantProductMapping.get(prices.variantCode);\r\n if (!newPrices[productCode]) {\r\n newPrices[productCode] = {};\r\n }\r\n\r\n const key = `${prices.variantCode}:${prices.unitOfMeasureCode}`;\r\n newPrices[productCode][key] = prices;\r\n });\r\n\r\n setPrices(newPrices);\r\n });\r\n }\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [products]);\r\n\r\n if (!products) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {products.map((product: Product) => {\r\n const mappedProduct = mapProductData(product);\r\n if (!mappedProduct?.variant) {\r\n return null;\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\nconst mapStateToProps = (state: any, ownProps?: any) => {\r\n const products = state?.productSearch?.entities?.results ?? [];\r\n return {\r\n ...ownProps,\r\n products\r\n };\r\n};\r\n\r\n\r\nexport const ConnectedProductTileList = connect(mapStateToProps)(ProductTileList);\r\n","import { connect } from 'react-redux';\r\nimport { FilterBadges } from '@components-react/ProductOverview/Components/FilterBadges/FilterBadges';\r\nimport { selectFilterBadges } from '../stores/selectors';\r\nimport { getProducts } from '../stores/productSearchSlice';\r\nimport type { IBadge } from '@components-react/ProductOverview/Components/FilterBadges/FilterBadges';\r\n\r\nexport const mapStateToProps = (state: any, ownProps?: any) => {\r\n const activeFilters = selectFilterBadges(state);\r\n\r\n const badges = activeFilters || [];\r\n return {\r\n ...ownProps,\r\n items: badges,\r\n phrases: ownProps?.phrases ?? {}\r\n\r\n };\r\n};\r\n\r\nexport const mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n onFilterBadgeClick: (badge: IBadge) => getProducts(dispatch)({\r\n apiUrl: badge.urlSet.api,\r\n webUrl: badge.urlSet.web\r\n })\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterBadges);\r\n","import { connect } from 'react-redux';\r\nimport { SortOrder } from '@components-react/ProductOverview/Components/SortOrder/SortOrder';\r\nimport { selectSortOrder } from '../stores/selectors';\r\nimport { getProducts } from '../stores/productSearchSlice';\r\nimport type { ISortOrderItem } from '@components-react/ProductOverview/Components/SortOrder/SortOrder';\r\n\r\nexport const mapStateToProps = (state: any, ownProps?: any) => {\r\n const items = selectSortOrder(state);\r\n\r\n return {\r\n ...ownProps,\r\n items: items?.length > 0 ? items : []\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n updateSortOrder: (item: ISortOrderItem) => getProducts(dispatch)({\r\n apiUrl: item.urlSet.api,\r\n webUrl: item.urlSet.web\r\n })\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SortOrder);\r\n","import { connect } from 'react-redux';\r\nimport { Pagination } from '@components-react/ProductOverview/Components/Pagination/Pagination';\r\nimport { selectPaginationItems, selectPaginationRelative } from '../stores/selectors';\r\nimport { getProducts } from '../stores/productSearchSlice';\r\nimport type { IPaginationItem } from '@components-react/ProductOverview/Components/Pagination/Pagination';\r\n\r\nexport const mapStateToProps = (state: any, ownProps: any) => {\r\n const items = selectPaginationItems(state);\r\n const { prev = undefined, next = undefined } = selectPaginationRelative(state);\r\n\r\n const nextProps = {\r\n ...(items && { items }),\r\n relative: {\r\n ...(prev && { prev }),\r\n ...(next && { next })\r\n }\r\n };\r\n\r\n return {\r\n ...ownProps,\r\n ...nextProps\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n onPaginationChange: (paginationItem: IPaginationItem) => {\r\n\r\n const nextUrl = `${document.location.origin}${paginationItem.urlSet.web}`;\r\n window.history.pushState(null, null, nextUrl);\r\n\r\n getProducts(dispatch)({\r\n apiUrl: paginationItem.urlSet.api\r\n });\r\n }\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Pagination);\r\n","import { connect } from 'react-redux';\r\nimport { CategoryFacets } from '@components-react/ProductOverview/Components/CategoryFacets/CategoryFacets';\r\nimport { getProducts, toggleFacetsOpen } from '../stores/productSearchSlice';\r\nimport { selectFacets, selectFacetsOpen, selectSearchResultCount } from '../stores/selectors';\r\nimport type { IFacetItem } from '@components-react/ProductOverview/Components/CategoryFacets/CategoryFacets';\r\n\r\nexport const mapStateToProps = (state: any, ownProps?: any) => {\r\n const facets = selectFacets(state);\r\n const isOpen = selectFacetsOpen(state);\r\n const searchResultCount = selectSearchResultCount(state);\r\n\r\n return {\r\n ...ownProps,\r\n facets: facets?.length > 0 ? facets : (ownProps.facets ?? []),\r\n isOpen: isOpen ?? false,\r\n productCount: searchResultCount ?? ownProps.productCount,\r\n idPrefix: 'searchFacet'\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n onFacetChange: (facetItem: IFacetItem) => {\r\n return getProducts(dispatch)({\r\n apiUrl: facetItem.urlSet.api,\r\n webUrl: facetItem.urlSet.web\r\n });\r\n },\r\n toggleFacetsOpen: () => {\r\n dispatch(toggleFacetsOpen());\r\n }\r\n };\r\n};\r\n\r\nconst ConnectedCategoryFacets = connect(mapStateToProps, mapDispatchToProps)(CategoryFacets);\r\nexport default ConnectedCategoryFacets;\r\n","import * as React from 'react';\r\n\r\nexport interface IProductCount {\r\n total: number;\r\n phrases: any;\r\n}\r\n\r\n\r\nexport const ProductCount = (props: IProductCount) => {\r\n const { total, phrases } = props;\r\n if (!total) {\r\n return null;\r\n }\r\n\r\n const phrase = total === 1 ? phrases['searchmodal:count.product'] : phrases['searchmodal:count.products'];\r\n\r\n return (\r\n {total} {phrase}\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { toggleFacetsOpen } from '../stores/productSearchSlice';\r\nimport { selectFacetsOpen, selectOptions, selectSearchResultCount } from '../stores/selectors';\r\nimport { ConnectedProductTileList } from '../Connectors/ConnectProductTileList';\r\nimport FilterBadges from '../Connectors/ConnectedFilterBadges';\r\nimport SortOrder from '../Connectors/ConnectedSortOrder';\r\nimport Pagination from '../Connectors/ConnectedPagination';\r\nimport CategoryFacets from '../Connectors/ConnectedCategoryFacets';\r\nimport { ProductCount } from './ProductCount';\r\nimport styles from './SearchModal.module.scss';\r\n\r\n\r\nexport interface ISearch {\r\n showAddToCartButton?: boolean;\r\n title: string;\r\n onCloseSearch: () => void;\r\n phrasesFromSitecore: IPhrases;\r\n}\r\n\r\n\r\n// eslint-disable-next-line max-len\r\nexport const SearchModal = ({\r\n showAddToCartButton = true,\r\n title,\r\n onCloseSearch,\r\n phrasesFromSitecore\r\n}: ISearch) => {\r\n const dispatch = useDispatch();\r\n const isFacetsOpen = useSelector((state) => selectFacetsOpen(state));\r\n const searchResultCount = useSelector((state) => selectSearchResultCount(state)) ?? 0;\r\n const hasSearchResults = searchResultCount > 0;\r\n const { searchTerm = '' } = useSelector((state) => selectOptions(state));\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
\r\n {title}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {phrasesFromSitecore['searchmodal:facets.close']}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {hasSearchResults && }\r\n
\r\n
\r\n dispatch(toggleFacetsOpen())}\r\n type=\"button\"\r\n data-testid=\"openFacetsButton\"\r\n >\r\n \r\n \r\n {phrasesFromSitecore['searchmodal:facets.open']}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {hasSearchResults && (\r\n \r\n )}\r\n\r\n {!hasSearchResults && (\r\n <>\r\n

\r\n {phrasesFromSitecore['searchmodal:title.no-results']}\r\n

\r\n {/* eslint-disable-next-line max-len */}\r\n \r\n \r\n {phrasesFromSitecore['searchmodal:button.all-products']}\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\n );\r\n};\r\n\r\n\r\n\r\n\r\n","// extracted by mini-css-extract-plugin\nexport default {\"ModalWrapper\":\"SearchModal-module__ModalWrapper--wGH8\",\"SearchModal\":\"SearchModal-module__SearchModal--jG4h\",\"Facets\":\"SearchModal-module__Facets--tuQi\",\"FacetsNoResults\":\"SearchModal-module__FacetsNoResults--PRyW\",\"Results\":\"SearchModal-module__Results--Ro1q\"};","import { connect } from 'react-redux';\r\nimport { onsiteSearch, type IOnsiteSearch } from '@/features/gmt/gmtActions';\r\nimport { getCookie } from '@utils/cookies';\r\nimport { getProducts } from '../stores/productSearchSlice';\r\nimport { selectProductSearchEntities, selectProductSearchLoading, selectSearchResultCount } from '../stores/selectors';\r\nimport { SearchBox } from '../Components/SearchBox';\r\n\r\nconst mapStateToProps = (state: any, ownProps?: any ) => {\r\n const initialShouldDisplayResults = Object.keys(selectProductSearchEntities(state)).length > 0 ?? false;\r\n\r\n const loadingState = selectProductSearchLoading(state);\r\n const isSearchFullfilled = loadingState === 'fulfilled' ?? false;\r\n const isSearchPending = loadingState === 'pending' ?? false;\r\n const searchResultCount = selectSearchResultCount(state);\r\n\r\n const props = {\r\n ...ownProps,\r\n showAddToCartButton: ownProps?.showAddToCartButton ?? true,\r\n initialShouldDisplayResults,\r\n isSearchPending,\r\n isSearchFullfilled,\r\n searchResultCount\r\n };\r\n\r\n return {\r\n ...props,\r\n ...state\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n logGtmSearchBoxEvent: ({ searchTerm, searchResultCount }: IOnsiteSearch) => {\r\n const onsiteSearchAction = onsiteSearch({ searchTerm, searchResultCount });\r\n dispatch(onsiteSearchAction);\r\n },\r\n onSearchQueryChange: (query: string, page?: number) => {\r\n const webPrefix = `${document.location.pathname}${document.location.search}`;\r\n const sector = getCookie('cl_sector');\r\n\r\n const urlParams = new URLSearchParams();\r\n urlParams.set('s', query);\r\n urlParams.set('ct', '3');\r\n urlParams.set('wp', webPrefix);\r\n urlParams.set('sector', sector);\r\n page && urlParams.set('page', page.toString());\r\n\r\n const apiUrl = `products/search?${urlParams.toString()}`;\r\n\r\n getProducts(dispatch)({ apiUrl });\r\n }\r\n };\r\n};\r\n\r\nexport const ConnectedSearchBox = connect(mapStateToProps, mapDispatchToProps)(SearchBox);\r\n","export function getCookie(name: string): string | null {\r\n const match = document.cookie.match(new RegExp(`(^| )${name}=([^;]+)`));\r\n if (match) {\r\n return match[2];\r\n }\r\n return null;\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { FullPageScrollPane } from '@components-react/FullPageScrollPane/FullPageScrollPane';\r\nimport { Portal } from '@components-react/Portal/Portal';\r\nimport { useOverflowHidden } from '@hooks/useOverflowHidden';\r\nimport { useDebounce } from '@hooks/useDebounce';\r\nimport { useLazyEffect } from '@hooks/useLazyEffect';\r\nimport { BarcodeScanner } from './BarcodeScanner';\r\n\r\nimport styles from './SearchBox.module.scss';\r\nimport { SearchModal } from './SearchModal';\r\n\r\ntype RestProps = {\r\n [x: string]: { phrases?: IPhrases; }\r\n};\r\n\r\nexport interface ISearchBox {\r\n inputPlaceholder?: string;\r\n title?: string;\r\n onSearchQueryChange: (...args: any) => any;\r\n initialShouldDisplayResults?: boolean;\r\n isSearchPending?: boolean;\r\n isSearchFullfilled?: boolean;\r\n logGtmSearchBoxEvent: (...args: any) => any;\r\n searchResultCount: number;\r\n showAddToCartButton?: boolean;\r\n}\r\n\r\nexport const SearchBox = ({\r\n inputPlaceholder = '',\r\n onSearchQueryChange,\r\n initialShouldDisplayResults = false,\r\n title,\r\n isSearchPending,\r\n isSearchFullfilled,\r\n logGtmSearchBoxEvent,\r\n searchResultCount,\r\n showAddToCartButton = true,\r\n ...restProps\r\n}: ISearchBox & RestProps) => {\r\n // Play nice with SSR\r\n const isBrowser = typeof window !== 'undefined';\r\n\r\n // Patch in 'phrases' as returned by Sitecore\r\n // These are defined in `React.CreateElement()` calls generated by React.NET\r\n const phrasesFromSitecore = {\r\n categoryFacets: restProps?.dataFacets?.phrases,\r\n filterBadges: restProps?.dataFilters?.phrases,\r\n productCount: restProps?.dataProductCount?.phrases,\r\n productTileList: restProps?.dataProducts?.phrases,\r\n ...(restProps.phrases && restProps.phrases)\r\n };\r\n\r\n const [query, setQuery] = useState('');\r\n const [shouldDisplayResults, setShouldDisplaceResults] = useState(\r\n initialShouldDisplayResults\r\n );\r\n const [showBarcodeScanner, setShowBarcodeScanner] = useState(false);\r\n useOverflowHidden(showBarcodeScanner);\r\n\r\n const updateUrlParams = (searchQuery: string, page?: number) => {\r\n const hash = `#sqr:(q[${searchQuery}]${page ? `p[${page}]` : ''})`;\r\n document.location.hash = hash;\r\n };\r\n\r\n useEffect(() => {\r\n // parse #sqr:(q[]p[])\r\n const queryParam =\r\n decodeURIComponent(window.location.hash).match(/sqr:\\(q\\[(.+?)\\](?:p\\[(.+?)\\])?\\)/) ??\r\n [];\r\n\r\n const [/* unnused */ ,query, pageNumer = 1 ] = queryParam;\r\n\r\n if (query) {\r\n setQuery(query);\r\n onSearchQueryChange(query, pageNumer);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n useEffect(() => {\r\n setShouldDisplaceResults(initialShouldDisplayResults || isSearchFullfilled);\r\n\r\n return () => setShouldDisplaceResults(false);\r\n }, [initialShouldDisplayResults, isSearchFullfilled]);\r\n\r\n\r\n useLazyEffect(\r\n () => {\r\n if (query && isSearchFullfilled) {\r\n logGtmSearchBoxEvent({\r\n searchTerm: query,\r\n searchResultCount\r\n });\r\n }\r\n },\r\n [query, isSearchFullfilled],\r\n 1500\r\n );\r\n\r\n const debouncedQueryChange = useDebounce(() => {\r\n onSearchQueryChange(query);\r\n }, 400);\r\n\r\n const handleSearchInputChange = async function (e: any) {\r\n const searchQuery = (e.target as HTMLInputElement).value;\r\n setQuery(searchQuery);\r\n updateUrlParams(searchQuery);\r\n debouncedQueryChange(searchQuery);\r\n };\r\n\r\n const handleSearchButtonClick = async function () {\r\n if (query) {\r\n onSearchQueryChange(query);\r\n }\r\n };\r\n\r\n const handleSearchClose = () => {\r\n setShouldDisplaceResults(false);\r\n history.replaceState(null, null, ' ');\r\n\r\n /**\r\n * TODO: Remove this when DNN is no longer used\r\n * DNN Hack, the \"winkewagen\" page does not use redux store to display products\r\n */\r\n if (window.location.pathname.indexOf('/webshop/winkelwagen') === 0) {\r\n window.location.reload();\r\n }\r\n };\r\n\r\n const handleBarcodeResult = (barcode: string) => {\r\n setShowBarcodeScanner(false);\r\n setQuery(barcode);\r\n onSearchQueryChange(barcode);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n\r\n {isBrowser &&\r\n createPortal(\r\n \r\n \r\n
\r\n
\r\n {/* TODO: Translations */}\r\n

Scan QR- of barcode

\r\n
\r\n
\r\n setShowBarcodeScanner(false)}\r\n >\r\n \r\n {/* TODO: Translations */}\r\n \r\n {/* @ts-expect-error: translations not typed */}\r\n {phrasesFromSitecore['common:button.close']}\r\n \r\n \r\n
\r\n
\r\n \r\n }\r\n isOpen={showBarcodeScanner}\r\n >\r\n {showBarcodeScanner && (\r\n \r\n )}\r\n \r\n
,\r\n document.body\r\n )}\r\n\r\n {isBrowser &&\r\n createPortal(\r\n shouldDisplayResults && (\r\n \r\n ),\r\n document.body\r\n )}\r\n \r\n );\r\n};\r\n\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport {\r\n DependencyList,\r\n EffectCallback,\r\n useCallback,\r\n useEffect,\r\n useRef\r\n} from 'react';\r\nimport { debounce } from '@utils/debounce';\r\n\r\nexport function useLazyEffect(\r\n effect: EffectCallback,\r\n deps: DependencyList = [],\r\n wait = 300\r\n) {\r\n const cleanUp = useRef void)>();\r\n const effectRef = useRef();\r\n\r\n effectRef.current = useCallback(effect, deps);\r\n\r\n const lazyEffect = useCallback(\r\n debounce(() => {\r\n if (cleanUp.current instanceof Function) {\r\n cleanUp.current();\r\n }\r\n cleanUp.current = effectRef.current?.();\r\n }, wait),\r\n []\r\n );\r\n\r\n useEffect(lazyEffect as EffectCallback, deps);\r\n\r\n useEffect(() => {\r\n return () =>\r\n cleanUp.current instanceof Function ? cleanUp.current() : undefined;\r\n }, []);\r\n}\r\n\r\n\r\n\r\n","import { useEffect, useMemo, useRef } from 'react';\r\nimport { debounce, type CallBackFn } from '@utils/debounce';\r\n\r\nexport const useDebounce = (callBackFn: CallBackFn, delay: number) => {\r\n const ref = useRef(callBackFn);\r\n\r\n useEffect(() => {\r\n ref.current = callBackFn;\r\n }, [callBackFn]);\r\n\r\n const debouncedCallback = useMemo(() => {\r\n const func = () => {\r\n ref.current();\r\n };\r\n\r\n return debounce(func, delay);\r\n }, [delay]);\r\n\r\n return debouncedCallback;\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"SearchBoxLabel\":\"SearchBox-module__SearchBoxLabel--eQHK\",\"SearchBoxInput\":\"SearchBox-module__SearchBoxInput--YR9Q\",\"SearchOverlay\":\"SearchBox-module__SearchOverlay--Yqle\",\"SearchOverlayOpen\":\"SearchBox-module__SearchOverlayOpen--hB4k\",\"SearchButton\":\"SearchBox-module__SearchButton--QpK2\",\"SearchIcon\":\"SearchBox-module__SearchIcon--e74O\",\"BarcodeButton\":\"SearchBox-module__BarcodeButton--JlUr\",\"label\":\"SearchBox-module__label--B2S6\"};","// extracted by mini-css-extract-plugin\nexport default {\"disabled\":\"ShoppingCartButton-module__disabled--wbGN\",\"shoppingCart\":\"ShoppingCartButton-module__shoppingCart--bo81\",\"btnShoppingcart\":\"ShoppingCartButton-module__btnShoppingcart--nqls\",\"badge\":\"ShoppingCartButton-module__badge--N82n\",\"btn-sm\":\"ShoppingCartButton-module__btn-sm--fVQt\",\"btn-md\":\"ShoppingCartButton-module__btn-md--aLEf\",\"btn-lg\":\"ShoppingCartButton-module__btn-lg--ns5T\",\"btn-primary\":\"ShoppingCartButton-module__btn-primary--ARBN\",\"btn-outline-primary\":\"ShoppingCartButton-module__btn-outline-primary--xlYU\",\"basketCount\":\"ShoppingCartButton-module__basketCount--PD6K\",\"btn-theme\":\"ShoppingCartButton-module__btn-theme--Obqx\"};","import { connect } from 'react-redux';\r\nimport { Cannot, selectAcl } from '@state/userSlice';\r\nimport { AppSecurityScope } from '@sctypes/AppSecurityScope';\r\nimport { selectCart, getCart } from '../cartSlice';\r\nimport { ShoppingCartButton } from './ShoppingCartButton';\r\n\r\nconst mapStateToProps = (state: any, ownProps?: any) => {\r\n const cartData = selectCart(state);\r\n const acl = selectAcl(state);\r\n\r\n const disabled = Cannot(acl, AppSecurityScope.CARTS_CREATE);\r\n\r\n return {\r\n ...ownProps,\r\n ...cartData,\r\n disabled\r\n };\r\n};\r\n\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n getCart: () => getCart(dispatch)()\r\n };\r\n};\r\n\r\nexport const ConnectShoppingCartButton = connect(mapStateToProps, mapDispatchToProps)(ShoppingCartButton);\r\n","import React, { useEffect } from 'react';\r\nimport clsx from 'clsx';\r\nimport styles from './ShoppingCartButton.module.scss';\r\n\r\ninterface IShoppingCartButton {\r\n totalPieces?: number;\r\n onClick?: () => void;\r\n size?: 'sm' | 'md' | 'lg';\r\n variant?: 'primary' | 'outline-primary' | 'theme';\r\n features: { [key: string]: string };\r\n disabled?: boolean;\r\n getCart: () => void\r\n}\r\nexport const ShoppingCartButton = ({\r\n totalPieces = 0,\r\n variant = 'theme',\r\n size = 'lg',\r\n features,\r\n disabled = false,\r\n getCart\r\n}: IShoppingCartButton) => {\r\n const classNames = clsx({\r\n [styles.disabled]: !!disabled,\r\n [styles.shoppingCart]: true,\r\n [styles[`btn-${variant}`]]: true,\r\n [styles[`btn-${size}`]]: true\r\n });\r\n\r\n useEffect(() => {\r\n getCart();\r\n }, [getCart]);\r\n\r\n const vNext = features['shoppingcart'] === '1';\r\n\r\n const anchorProps = {\r\n ...(!disabled ? { href: vNext ? '/winkelwagen?return=c' : '/webshop/winkelwagen' } : {}),\r\n className: `${styles.btnShoppingcart} ${disabled ? 'disabled' : ''} btn btn-primary shadow-sm transition`\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Provider } from 'react-redux';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport store from '@state/store';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\n\r\nexport const ProvideToastContainer = ()=> {\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\nimport { Provider, useSelector } from 'react-redux';\r\nimport { selectProduct } from '@components/ProductDetail/state/productDetailSlice';\r\nimport './QuotationRequest.scss';\r\nimport store from '@state/store';\r\nimport { ScReact } from '@components-react/ScReact';\r\nimport { ScProps } from '@components-react/ScProps';\r\n\r\nconst QuotationRequestComponent = (props: ScProps) => {\r\n const { data } = props;\r\n\r\n useEffect(() => {\r\n const script = document.createElement('script');\r\n script.src = '/dist/scripts/ProductDetailsQuotationRequest.js';\r\n script.async = true;\r\n document.body.appendChild(script);\r\n }, []);\r\n\r\n const product = useSelector(state => selectProduct(state));\r\n\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n let unitOfMeasure = product?.variant.unitsOfMeasure[0].name;\r\n if (product?.unitOfMeasureCode) {\r\n const unit = product?.variant.unitsOfMeasure.find((uom: any) => uom.code === product.unitOfMeasureCode);\r\n if (unit) {\r\n unitOfMeasure = unit.name;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {data.caption}\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
{data.caption}
\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\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\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\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\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\n
\r\n );\r\n};\r\n\r\nexport const QuotationRequest = (props: ScProps) => (\r\n \r\n \r\n \r\n);\r\n","// extracted by mini-css-extract-plugin\nexport default {\"uspContainer\":\"USP-module__uspContainer--qYXb\",\"uspList\":\"USP-module__uspList--HB4n\",\"uspItem\":\"USP-module__uspItem--DW6U\",\"checkCircle\":\"USP-module__checkCircle--x1BZ\"};","/**\r\n * TODO: Only import / export components that are content managable\r\n */\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport ReactDOMServer from 'react-dom/server';\r\n\r\nimport { AddToOrderLists } from '@components-react/OrderLists/AddToOrderListsButton/AddToOrderListsButton';\r\nimport { BackToOverview } from '@components-react/BackToOverview/BackToOverview';\r\nimport { BrandsList } from '@components-react/BrandsList/BrandsList';\r\nimport { Breadcrumb } from '@components-react/Breadcrumb/Breadcrumb';\r\nimport { CTACarousel } from '@components-react/CTACarousel/CTACarousel';\r\nimport { CallToAction } from '@components-react/CallToAction/CallToAction';\r\nimport { CallToActionLargeVariants } from '@components-react/CallToActionLargeVariants/CallToActionLargeVariants';\r\nimport { CallToActionSmall } from '@components-react/CallToActionSmall/CallToActionSmall';\r\nimport { CustomerRating } from '@components-react/CustomerRating/CustomerRating';\r\nimport { CustomerRatingsCarousel } from '@components-react/CustomerRatingsCarousel/CustomerRatings';\r\nimport { ErrorFeedback } from '@components-react/ErrorFeedback/ErrorFeedback';\r\nimport { ErrorTest } from '@components-react/ErrorTest/ErrorTest';\r\nimport { ExampleTypeScript } from '@components-react/TypeScriptExample/ExampleTypeScript';\r\nimport { HeroBanner } from '@components-react/HeroBanner/HeroBanner';\r\nimport { HorizontalLine } from '@components-react/HorizontalLine/HorizontalLine';\r\nimport { ProductDetailAddToCart } from '@components-react/ProductDetail/ProductDetailAddToCart/ProductDetailAddToCart';\r\nimport { ProductSpecialist } from '@components-react/ProductSpecialist/ProductSpecialist';\r\nimport { ProductSpecialistWide } from '@components-react/ProductSpecialist/ProductSpecialistWide';\r\nimport { ProductTitle } from '@components-react/ProductDetail/ProductTitle/ProductTitle';\r\nimport { ProvideAddToCartLayer } from '@components-react/Cart/AddToCartLayer/ProvideAddToCartLayer';\r\nimport { ProvideCategoryFacets } from '@components-react/ProductOverview/Providers/ProvideCategoryFacets';\r\nimport { ProvideFilterBadges } from '@components-react/ProductOverview/Providers/ProvideFilterBadges';\r\nimport { ProvideOpenFacetsButton } from '@components-react/ProductOverview/Providers/ProvideOpenFacetsButton';\r\nimport { ProvidePagination } from '@components-react/ProductOverview/Providers/ProvidePagination';\r\nimport { ProvideProductCount } from '@components-react/ProductOverview/Providers/ProvideProductCount';\r\nimport { ProvideSortOrder } from '@components-react/ProductOverview/Providers/ProvideSortOrder';\r\nimport { ProvideProductTileList } from '@components-react/ProductTile/ProvideProductTileList';\r\nimport { ProvideProductVariantSelector } from '@components-react/ProductDetail/ProductVariantSelector/ProvideProductVariantSelector';\r\nimport { ProvideSearchBox } from '@components-react/Search/Providers/ProvideSearchBox';\r\nimport { ProvideShoppingCartButton } from '@components-react/Cart/ShoppingCartButton/ProvideShoppingCartButton';\r\nimport { ProvideToastContainer } from '@components-react/Toast/ProvideToastContainer';\r\nimport { QuotationRequest } from '@components-react/ProductDetail/QuotationRequest/QuotationRequest';\r\nimport { USP } from '@components-react/USP/USP';\r\nimport { withScProps } from '@components-react/WithScProps/WithScProps';\r\n\r\n// Needs to be initialized before other components are mounted, so emitted toasts are handled\r\nif (typeof document !== 'undefined') {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n const portalNode = document.querySelector('#portal') || null;\r\n if (portalNode) {\r\n /* eslint-disable react/no-deprecated */\r\n // We are using React 17.*\r\n ReactDOM.render(ReactDOM.createPortal(, portalNode), document.createElement('div'));\r\n ReactDOM.render(ReactDOM.createPortal(, portalNode), document.createElement('div'));\r\n /* eslint-enable */\r\n }\r\n });\r\n}\r\n\r\nglobal.React = React;\r\nglobal.ReactDOM = ReactDOM;\r\nglobal.ReactDOMServer = ReactDOMServer;\r\nglobal.Components = {\r\n AddToOrderLists,\r\n BackToOverview,\r\n BrandsList,\r\n Breadcrumb,\r\n CTACarousel,\r\n CallToAction,\r\n CallToActionLargeVariants,\r\n CallToActionSmall,\r\n CustomerRating,\r\n CustomerRatingsCarousel,\r\n ErrorFeedback,\r\n ErrorTest,\r\n ExampleTypeScript,\r\n HeroBanner,\r\n HorizontalLine,\r\n ProductDetailAddToCart,\r\n ProductSpecialist,\r\n ProductSpecialistWide,\r\n ProductTitle,\r\n ProvideAddToCartLayer,\r\n ProvideCategoryFacets: withScProps(ProvideCategoryFacets),\r\n ProvideFilterBadges: withScProps(ProvideFilterBadges),\r\n ProvideOpenFacetsButton: withScProps(ProvideOpenFacetsButton),\r\n ProvidePagination: withScProps(ProvidePagination),\r\n ProvideProductCount: withScProps(ProvideProductCount),\r\n ProvideProductTileList: withScProps(ProvideProductTileList),\r\n ProvideProductVariantSelector,\r\n ProvideSearchBox: withScProps(ProvideSearchBox),\r\n ProvideShoppingCartButton: withScProps(ProvideShoppingCartButton),\r\n ProvideSortOrder: withScProps(ProvideSortOrder),\r\n QuotationRequest,\r\n USP\r\n};\r\n","import React from 'react';\r\nimport { ScReact } from '../ScReact';\r\nimport { ScProps } from '../ScProps';\r\nimport { BackToOverviewData } from './BackToOverviewData';\r\n\r\nexport const BackToOverview = (props: ScProps) => {\r\n const { url, title } = props.data;\r\n\r\n return \r\n \r\n {title}\r\n ;\r\n};\r\n","import React from 'react';\r\nimport { ScReact } from '../ScReact';\r\nimport { ScProps } from '../ScProps';\r\nimport styles from './BrandsList.module.scss';\r\nimport { Brand, BrandsListData } from './BrandsListData';\r\n\r\nexport const BrandsList = (props: ScProps) => {\r\n const { data: { title, link, brands }, isEdit } = props;\r\n const shouldDisplay = isEdit || link.text;\r\n\r\n return \r\n
\r\n

\r\n {shouldDisplay && \r\n {link.text} \r\n }\r\n

\r\n
\r\n {brands.map((brand: Brand) =>\r\n
\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n
;\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"BrandsList\":\"BrandsList-module__BrandsList--j1ai\",\"titleLink\":\"BrandsList-module__titleLink--CbaP\",\"arrow\":\"BrandsList-module__arrow--hpE5\",\"brandsList\":\"BrandsList-module__brandsList--yAmR\",\"brand\":\"BrandsList-module__brand--yBeR\",\"brandImage\":\"BrandsList-module__brandImage--MT5b\",\"brand-link\":\"BrandsList-module__brand-link--ihFJ\"};","import React from 'react';\r\nimport { ScReact } from '../ScReact';\r\nimport { ScProps } from '../ScProps';\r\nimport styles from './Breadcrumb.module.scss';\r\nimport { BreadcrumbData, BreadcrumbItem } from './BreadcrumbData';\r\n\r\nexport const Breadcrumb = (props: ScProps) => {\r\n const { items, schema } = props.data;\r\n\r\n return \r\n
    \r\n {items.map((breadcrumb: BreadcrumbItem, index: number) => (\r\n \r\n \r\n {breadcrumb.name}\r\n \r\n \r\n ))}\r\n
\r\n