{"version":3,"file":"175.674a62268ef46e1579e5.js","mappings":"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","sources":["webpack://sitecore-platform/./src/components-react/Modal/Modal.module.scss?dbc8","webpack://sitecore-platform/./src/components-react/Modal/Modal.tsx","webpack://sitecore-platform/./src/hooks/useClickOutside.js","webpack://sitecore-platform/./src/components-react/Search/stores/selectors.ts","webpack://sitecore-platform/./src/features/gmt/gmtActions.ts","webpack://sitecore-platform/./src/hooks/use-deep-compare-memoize.js","webpack://sitecore-platform/./src/hooks/use-merge-state.js","webpack://sitecore-platform/./src/hooks/use-api/use-query.js","webpack://sitecore-platform/./src/hooks/use-api/use-mutation.js","webpack://sitecore-platform/./src/hooks/use-api/index.js","webpack://sitecore-platform/./src/hooks/useBreakpoint.js","webpack://sitecore-platform/./src/hooks/useBrowserLayoutEffect.ts","webpack://sitecore-platform/./src/hooks/useOverflowHidden.ts","webpack://sitecore-platform/./src/services/image-service.ts","webpack://sitecore-platform/./src/services/meta-context.js","webpack://sitecore-platform/./src/features/gmt/gtmMiddleware.ts","webpack://sitecore-platform/./src/state/store-subscriber.js","webpack://sitecore-platform/./src/state/store.js","webpack://sitecore-platform/./src/state/userSlice.ts","webpack://sitecore-platform/./src/types/AppSecurityScope.ts","webpack://sitecore-platform/./src/utils/api.js","webpack://sitecore-platform/./src/utils/getBreakpoint.js","webpack://sitecore-platform/./sxa-base-themes/Core-Libraries/Scripts/xaquery.js","webpack://sitecore-platform/./sxa-base-themes/XA-API/Scripts/xa.js","webpack://sitecore-platform/./src/components-react/Cart/cartSlice.js","webpack://sitecore-platform/./src/components-react/OrderLists/state/orderListsSlice.js","webpack://sitecore-platform/./src/components-react/OrderLists/state/orderListsThunks.js","webpack://sitecore-platform/./src/components-react/ProductOverview/stores/productsListingSlice.js","webpack://sitecore-platform/./src/components-react/Search/stores/productSearchSlice.js","webpack://sitecore-platform/./src/components/Preferences/preferencesSlice.js","webpack://sitecore-platform/./src/components/ProductDetail/state/productDetailSlice.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"Modal-module__modal--bgvN\",\"modalFullHeight\":\"Modal-module__modalFullHeight--iXRX\",\"fullPageScrollpane\":\"Modal-module__fullPageScrollpane--PO_R\",\"fullPageScrollpaneContent\":\"Modal-module__fullPageScrollpaneContent--RGhW\",\"fullHeight\":\"Modal-module__fullHeight--gkRx\",\"fullPageHeader\":\"Modal-module__fullPageHeader--ufSU\",\"fullPageFooter\":\"Modal-module__fullPageFooter--BRPI\",\"hasABorder\":\"Modal-module__hasABorder--klAt\",\"scrollbarFix\":\"Modal-module__scrollbarFix--IASO\",\"noScroll\":\"Modal-module__noScroll--id09\",\"overlay\":\"Modal-module__overlay--SLJr\"};","import React, { useRef } from 'react';\r\nimport objStr from 'obj-str';\r\nimport { useBreakpoint } from '@hooks/useBreakpoint';\r\nimport { useClickOutside } from '@hooks/useClickOutside';\r\nimport { useOverflowHidden } from '@hooks/useOverflowHidden';\r\nimport styles from './Modal.module.scss';\r\n\r\ninterface IModalButton {\r\n label: string;\r\n onClick: () => void;\r\n type: string;\r\n}\r\n\r\ninterface IModal {\r\n HeaderComponent?: any;\r\n buttons: IModalButton[];\r\n children: any;\r\n fullHeight?: boolean;\r\n hasFooterSeparator?: boolean;\r\n onModalClose: () => void;\r\n title: string;\r\n}\r\n\r\nexport const Modal = (props: IModal) => {\r\n const {\r\n title,\r\n buttons,\r\n children,\r\n hasFooterSeparator = false,\r\n onModalClose,\r\n HeaderComponent = null,\r\n fullHeight = false\r\n } = props;\r\n\r\n const modalRef = useRef(null);\r\n const breakpoint = useBreakpoint();\r\n const isSmallScreen = ['xs', 'sm'].includes(breakpoint);\r\n\r\n useOverflowHidden(true);\r\n useClickOutside(modalRef, onModalClose);\r\n\r\n if (isSmallScreen) {\r\n const modalStyles = objStr({\r\n [styles.fullPage]: true,\r\n [styles.fullHeight]: fullHeight,\r\n [styles.overlay]: true\r\n });\r\n\r\n const scrollPaneStyles = objStr({\r\n [styles.fullPageScrollpane]: true,\r\n 'py-3': true,\r\n [styles.fullHeight]: fullHeight\r\n });\r\n\r\n const contentStyles = objStr({\r\n [styles.fullPageScrollpaneContent]: true,\r\n [styles.fullHeight]: fullHeight\r\n });\r\n\r\n return (\r\n
\r\n
\r\n

{title}

\r\n \r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n {buttons.map(button => (\r\n \r\n {button.label}\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 {HeaderComponent ? : (\r\n
\r\n

{title}

\r\n
\r\n )}\r\n {children && (\r\n
\r\n {children}\r\n
\r\n )}\r\n\r\n
\r\n {buttons.map(button => (\r\n \r\n {button.label}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import { useEffect } from 'react';\r\n\r\nexport function useClickOutside(ref, callback = () => {}) {\r\n useEffect(() => {\r\n\r\n const handleClickOutside = event => {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n callback();\r\n }\r\n };\r\n\r\n document.addEventListener('mousedown', handleClickOutside);\r\n\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n }, [ref]); //eslint-disable-line react-hooks/exhaustive-deps\r\n}\r\n","import { createSelector } from '@reduxjs/toolkit';\r\n\r\nconst selectProductSearch = (state: any) => state?.productSearch;\r\nexport const selectProductSearchEntities = (state: any) => state?.productSearch?.entities;\r\nexport const selectProductSearchLoading = (state: any) => state?.productSearch?.loading;\r\n\r\nexport const selectOptions = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities.options\r\n);\r\n\r\nexport const selectFacetsOpen = createSelector(\r\n selectProductSearch,\r\n state => state.facetsOpen\r\n);\r\n\r\nexport const selectSortOrder = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities && entities['sort'] // `sort` is a reserved word in JS\r\n);\r\n\r\nexport const selectPagination = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities?.pagination\r\n);\r\n\r\nexport const selectPaginationItems = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities?.pagination?.items\r\n);\r\n\r\nexport const selectPaginationRelative = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities?.pagination?.relative\r\n);\r\n\r\n\r\nexport const selectFilterBadges = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities?.active\r\n);\r\n\r\nexport const selectProducts = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities?.results\r\n);\r\n\r\nexport const selectSearchResultCount = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities?.total\r\n);\r\n\r\nexport const selectFacets = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities?.facets\r\n);\r\n\r\nexport const selectActiveFacets = createSelector(\r\n selectFacets,\r\n allFacets => {\r\n const activeFacets = allFacets.filter((facet: any) => {\r\n return facet.items.findIndex((item: any) => 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: any) => {\r\n const selectedItems = facet.items.filter((item: any) => item.selected === true);\r\n return {\r\n ...facet,\r\n items: selectedItems\r\n };\r\n });\r\n }\r\n);\r\n\r\nexport const selectTiming = createSelector(\r\n selectProductSearchEntities,\r\n entities => entities.timing || {}\r\n);\r\n","import { createAction } from '@reduxjs/toolkit';\r\nimport type * as Types from './types';\r\nimport type * as ProductTypes from '@/types/product/Product';\r\n\r\nexport interface IOnsiteSearch {\r\n searchTerm: string;\r\n searchResultCount: number;\r\n}\r\nexport const onsiteSearch = createAction(\r\n 'gmt/onsiteSearch',\r\n function prepare({ searchTerm, searchResultCount }: IOnsiteSearch) {\r\n return {\r\n payload: {\r\n event: 'onsite_search',\r\n search_term: searchTerm,\r\n search_results: searchResultCount\r\n }\r\n };\r\n });\r\n\r\n\r\ninterface ICreateAddToCartAction {\r\n cartItems: [{\r\n orderAmount: number;\r\n variantCode: string;\r\n unitOfMeasureCode: string;\r\n currentVariant: ProductTypes.Variant;\r\n }]\r\n}\r\nexport const createAddToCartAction = createAction('gmt/add_to_cart', function prepare({ cartItems }: ICreateAddToCartAction ) {\r\n const subTotal = cartItems?.reduce((accumulator: number, item) => {\r\n const unitOfMeasure = item.currentVariant.unitsOfMeasure.find(uom => uom.code === item.unitOfMeasureCode);\r\n return accumulator + (unitOfMeasure.prices.current.exTax.numeric * item.orderAmount);\r\n }, 0);\r\n\r\n\r\n const items = cartItems.map((item: any) => {\r\n const unitOfMeasure = item.currentVariant.unitsOfMeasure.find((uom: ProductTypes.UnitOfMeasure) => uom.code === item.unitOfMeasureCode);\r\n\r\n return {\r\n item_id: item.currentVariant.code ?? item.varaintCode ?? item.code,\r\n item_brand: '',\r\n item_name: item.currentVariant.title ?? item.variantTitle ?? item.title,\r\n item_category: item.category,\r\n item_category2: '',\r\n item_category3: '',\r\n price: unitOfMeasure?.prices.current.exTax.numeric,\r\n quantity: item.orderAmount\r\n };\r\n });\r\n\r\n const gtmViewCartEvent: Types.GtmViewCartEvent = {\r\n event: 'add_to_cart',\r\n ecommerce: {\r\n value: subTotal,\r\n currency: 'EUR',\r\n items\r\n }\r\n };\r\n\r\n return {\r\n payload: {\r\n ...gtmViewCartEvent\r\n }\r\n };\r\n});\r\n","import { useRef } from 'react';\r\nimport isEqual from 'underscore/modules/isEqual';\r\n\r\nexport const useDeepCompareMemoize = value => {\r\n const valueRef = useRef();\r\n\r\n if (!isEqual(value, valueRef.current)) {\r\n valueRef.current = value;\r\n }\r\n return valueRef.current;\r\n};\r\n","import { useState, useCallback } from 'react';\r\n\r\nexport const useMergeState = initialState => {\r\n const [state, setState] = useState(initialState || {});\r\n\r\n const mergeState = useCallback(newState => {\r\n if (typeof newState === 'function') {\r\n setState(currentState => ({ ...currentState, ...newState(currentState) }));\r\n } else {\r\n setState(currentState => ({ ...currentState, ...newState }));\r\n }\r\n }, []);\r\n\r\n return [state, mergeState];\r\n};\r\n","import { useRef, useCallback, useEffect } from 'react';\r\nimport isEqual from 'underscore/modules/isEqual';\r\nimport api from '@utils/api';\r\nimport { useDeepCompareMemoize } from '../use-deep-compare-memoize';\r\nimport { useMergeState } from '../use-merge-state';\r\n\r\nconst cache = {};\r\n\r\n/**\r\n *\r\n * @param {*} url\r\n * @param {*} propsVariables { JS plain object of data you want to pass to the API}\r\n * @param {*} options {lazy: delay request till manually triggers, cachePolicy 'no-cache', 'cache-first', 'cache-only'}\r\n */\r\nexport const useQuery = (url, propsVariables = {}, options = {}) => {\r\n const { lazy = false, cachePolicy = 'cache-first' } = options;\r\n\r\n const wasCalled = useRef(false);\r\n const propsVariablesMemoized = useDeepCompareMemoize(propsVariables);\r\n\r\n const isSleeping = lazy && !wasCalled.current;\r\n const isCacheAvailable = cache[url] && isEqual(cache[url].apiVariables, propsVariables);\r\n const canUseCache = isCacheAvailable && cachePolicy !== 'no-cache' && !wasCalled.current;\r\n\r\n const [state, mergeState] = useMergeState({\r\n data: canUseCache ? cache[url].data : null,\r\n error: null,\r\n isLoading: !lazy && !canUseCache,\r\n variables: {}\r\n });\r\n\r\n const makeRequest = useCallback(\r\n newVariables => {\r\n const variables = { ...state.variables, ...(newVariables || {}) };\r\n const apiVariables = { ...propsVariablesMemoized, ...variables };\r\n const skipLoading = canUseCache && cachePolicy === 'cache-first';\r\n\r\n if (!skipLoading) {\r\n mergeState({ isLoading: true, variables });\r\n } else if (newVariables) {\r\n mergeState({ variables });\r\n }\r\n\r\n api.get(url, apiVariables).then(\r\n response => {\r\n const { data } = response;\r\n cache[url] = { data, apiVariables };\r\n mergeState({ data, error: null, isLoading: false });\r\n },\r\n error => {\r\n mergeState({ error, data: null, isLoading: false });\r\n }\r\n );\r\n\r\n wasCalled.current = true;\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [propsVariablesMemoized]\r\n );\r\n\r\n useEffect(() => {\r\n if (isSleeping) {\r\n return;\r\n }\r\n if (canUseCache && cachePolicy === 'cache-only') {\r\n return;\r\n }\r\n\r\n makeRequest();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [makeRequest]);\r\n\r\n const setLocalData = useCallback(\r\n getUpdatedData =>\r\n mergeState(({ data }) => {\r\n const updatedData = getUpdatedData(data);\r\n cache[url] = { ...(cache[url] || {}), updatedData };\r\n return { updatedData };\r\n }),\r\n [mergeState, url]\r\n );\r\n\r\n return [\r\n {\r\n ...state,\r\n variables: { ...propsVariablesMemoized, ...state.variables },\r\n setLocalData\r\n },\r\n makeRequest\r\n ];\r\n};\r\n","import { useCallback } from 'react';\r\nimport api from '@utils/api';\r\nimport { useMergeState } from '../use-merge-state';\r\n\r\n\r\nexport const useMutation = (method, url) => {\r\n const [state, mergeState] = useMergeState({\r\n data: null,\r\n error: null,\r\n isWorking: false\r\n });\r\n const makeRequest = useCallback(\r\n (variables = {}) =>\r\n new Promise((resolve, reject) => {\r\n mergeState({ isWorking: true });\r\n\r\n api[method](url, variables).then(\r\n data => {\r\n resolve(data);\r\n mergeState({ data, error: null, isWorking: false });\r\n },\r\n error => {\r\n reject(error);\r\n mergeState({ error, data: null, isWorking: false });\r\n }\r\n );\r\n }),\r\n [method, url, mergeState]\r\n );\r\n\r\n const isWorkingAlias = {\r\n post: 'isCreating',\r\n put: 'isUpdating',\r\n patch: 'isUpdating',\r\n delete: 'isDeleting'\r\n };\r\n\r\n return [\r\n {\r\n ...state,\r\n [isWorkingAlias[method]]: state.isWorking\r\n },\r\n makeRequest\r\n ];\r\n};\r\n","import { useQuery } from './use-query';\r\nimport { useMutation } from './use-mutation';\r\n\r\n/* eslint-disable react-hooks/rules-of-hooks */\r\nexport const useApi = {\r\n get: (...args) => useQuery(...args),\r\n post: (...args) => useMutation('post', ...args),\r\n put: (...args) => useMutation('put', ...args),\r\n patch: (...args) => useMutation('patch', ...args),\r\n delete: (...args) => useMutation('delete', ...args)\r\n};\r\n","import { useState } from 'react';\r\nimport { getBreakpoint } from '@utils/getBreakpoint';\r\nimport { useBrowserLayoutEffect } from './useBrowserLayoutEffect';\r\n\r\nexport function useBreakpoint() {\r\n\r\n const [breakpoint, setBreakpoint] = useState(getBreakpoint());\r\n\r\n useBrowserLayoutEffect(() => {\r\n function breakpoint() {\r\n setBreakpoint(getBreakpoint());\r\n }\r\n window.addEventListener('resize', breakpoint);\r\n return () => window.removeEventListener('resize', breakpoint);\r\n\r\n }, [setBreakpoint]);\r\n\r\n return breakpoint;\r\n}\r\n","import { useLayoutEffect } from 'react';\r\n\r\n// Prevent the hook running in SSR\r\n// See: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\r\n// eslint-disable-next-line @typescript-eslint/no-empty-function\r\nexport const useBrowserLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : () => { };\r\n","import { useState } from 'react';\r\nimport { useBrowserLayoutEffect } from './useBrowserLayoutEffect';\r\n\r\nexport const useOverflowHidden = (intialHidden = false) => {\r\n\r\n const [isOverflowHidden, setisOverflowHidden] = useState(intialHidden);\r\n\r\n useBrowserLayoutEffect(() => {\r\n if (!isOverflowHidden) {\r\n return;\r\n }\r\n\r\n const originalOverflow = document.body.style.overflow;\r\n const originalPaddingRight = document.body.style.paddingRight;\r\n const scrollbarWidth = window.innerWidth - document.body.clientWidth;\r\n\r\n document.body.style.paddingRight = `${scrollbarWidth}px`;\r\n document.body.style.overflow = 'hidden';\r\n\r\n return () => {\r\n if (originalOverflow && originalOverflow !== 'hidden') {\r\n document.body.style.overflow = originalOverflow;\r\n } else {\r\n document.body.style.removeProperty('overflow');\r\n }\r\n\r\n\r\n if (originalPaddingRight) {\r\n document.body.style.paddingRight = originalPaddingRight;\r\n } else {\r\n document.body.style.removeProperty('padding-right');\r\n }\r\n };\r\n }, [isOverflowHidden]);\r\n\r\n\r\n useBrowserLayoutEffect(() => {\r\n if (isOverflowHidden !== intialHidden) {\r\n setisOverflowHidden(intialHidden);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [intialHidden]);\r\n\r\n return [isOverflowHidden, setisOverflowHidden];\r\n};\r\n\r\nexport default useOverflowHidden;\r\n","export class ImageService {\r\n getUrl(original: string, width: number, height: number, pad: boolean): string {\r\n if (!original) {\r\n return '';\r\n }\r\n\r\n if (original.includes('hash=')) {\r\n // Already generated and resized by Sitecore\r\n return original;\r\n }\r\n\r\n let result = original;\r\n\r\n if (this.isCloudflare(original)) {\r\n result = result.replace('/public', '/');\r\n if (width > 0) {\r\n result = `${result}w=${width},`;\r\n }\r\n\r\n if (height > 0) {\r\n result = `${result}h=${height}`;\r\n }\r\n\r\n if (pad) {\r\n result = `${result},fit=pad`;\r\n }\r\n } else {\r\n const separator = original.includes('?') ? '&' : '?';\r\n result += separator;\r\n\r\n if (width > 0) {\r\n result += `w=${width}&width=${width}&`;\r\n }\r\n\r\n if (height > 0) {\r\n result += `h=${height}&height=${height}&`;\r\n }\r\n if (pad) {\r\n result += 'mode=pad&bgcolor=white';\r\n }\r\n\r\n // Remove any trailing ampersand (&)\r\n result = result.replace(/&+$/, '');\r\n }\r\n\r\n return result;\r\n }\r\n\r\n isCloudflare(url: string): boolean {\r\n return url?.includes('/public');\r\n }\r\n}\r\n\r\nconst imageService = new ImageService();\r\nexport default imageService;\r\n","export class MetaContext {\r\n constructor() {\r\n this.authentication = {\r\n userName: '',\r\n isLoggedIn: false\r\n };\r\n\r\n this.api = {\r\n baseUri: '/mt-api/'\r\n };\r\n\r\n typeof window !== 'undefined' && this.getVarsFromDOM();\r\n }\r\n\r\n getVarsFromDOM() {\r\n let context = {\r\n 'user': {\r\n 'username': null,\r\n 'isLoggedIn': false\r\n }\r\n };\r\n\r\n try {\r\n const pageMetaContext = JSON.parse(document?.querySelector('[data-component=\"meta-context\"]').textContent);\r\n\r\n context = {\r\n ...context,\r\n ...pageMetaContext\r\n };\r\n\r\n this.authentication = context.user;\r\n\r\n } catch(e) {\r\n // console.error(e);\r\n }\r\n }\r\n\r\n get user() {\r\n return this.authentication;\r\n }\r\n\r\n get apiBaseUri() {\r\n return this.api.baseUri;\r\n }\r\n}\r\n\r\nexport const context = new MetaContext();\r\n","import { createListenerMiddleware, isAnyOf } from '@reduxjs/toolkit';\r\nimport * as gmtActions from '@/features/gmt/gmtActions';\r\nimport { selectTiming } from '@components-react/Search/stores/selectors';\r\n\r\nconst actionsArray = Object.values(gmtActions);\r\n\r\nconst gtmMiddleware = createListenerMiddleware();\r\ngtmMiddleware.startListening({\r\n matcher: isAnyOf(...actionsArray),\r\n\r\n effect: (action, { getState /* , dispatch, getOriginalState */ }) => {\r\n const state = getState();\r\n const timing = selectTiming(state);\r\n const gtmEvent = {\r\n ...action.payload,\r\n meta: {\r\n 'action.type': action.type,\r\n createdAt: new Date().toISOString(),\r\n ...(timing ? { timing } : {})\r\n }\r\n };\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({ ecommerce: null });\r\n window.dataLayer.push(gtmEvent);\r\n }\r\n});\r\n\r\nexport { gtmMiddleware };\r\n","import { get } from 'object-path';\r\nimport isEqual from 'underscore/modules/isEqual';\r\n\r\n// See: https://github.com/reduxjs/redux/issues/303#issuecomment-125184409\r\n\r\nconst subscribers = {};\r\n\r\nexport function subscribe(key, callback) {\r\n const hasSubscription = Object.prototype.hasOwnProperty.call(subscribers, key);\r\n\r\n if (hasSubscription) {\r\n subscribers[key].push(callback);\r\n } else {\r\n subscribers[key] = [callback];\r\n }\r\n\r\n return function() {\r\n subscribers[key] = subscribers[key].filter(subscriber => subscriber !== callback);\r\n };\r\n}\r\n\r\n\r\nexport function createStoreSubscriber(store) {\r\n let prevState = store.getState();\r\n\r\n const unsubscribe = store.subscribe(() => {\r\n const newState = store.getState();\r\n\r\n Object.keys(subscribers).forEach(key => {\r\n const prevValue = get(prevState, key);\r\n const newValue = get(newState, key);\r\n\r\n if(isEqual(prevValue, newValue)) {\r\n return false;\r\n }\r\n\r\n subscribers[key].forEach(cb => cb(newState, prevState));\r\n });\r\n\r\n prevState = newState;\r\n });\r\n\r\n return unsubscribe;\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\nimport { configureStore, combineReducers } from '@reduxjs/toolkit';\r\nimport { productDetailSlice } from '@components/ProductDetail/state/productDetailSlice';\r\nimport { orderListsSlice } from '@components-react/OrderLists/state/orderListsSlice';\r\nimport { cartSlice } from '@components-react/Cart/cartSlice';\r\nimport { preferencesSlice, preferencesMiddleware } from '@components/Preferences/preferencesSlice';\r\nimport { productsListingSlice } from '@components-react/ProductOverview/stores/productsListingSlice';\r\nimport { productSearchSlice } from '@components-react/Search/stores/productSearchSlice';\r\nimport { gtmMiddleware } from '@/features/gmt/gtmMiddleware';\r\nimport { createStoreSubscriber, subscribe } from './store-subscriber';\r\nimport { userSlice } from './userSlice';\r\n\r\n// TODO: Refactor affected components so this hack is no longer needed\r\n/**\r\n * Please note this is a hack around the Redux paradigm, but required in our current setup\r\n * See: https://github.com/reduxjs/redux/issues/580#issuecomment-133188511\r\n * By checking `state.lastAction` in XA.component selective DOM updates can be made\r\n */\r\nconst lastAction = {\r\n // eslint-disable-next-line no-unused-vars\r\n reducer: (state = null, action) => action\r\n};\r\n\r\nconst rootReducer = combineReducers({\r\n lastAction: lastAction.reducer,\r\n [cartSlice.name]: cartSlice.reducer,\r\n [userSlice.name]: userSlice.reducer,\r\n [orderListsSlice.name]: orderListsSlice.reducer,\r\n [preferencesSlice.name]: preferencesSlice.reducer,\r\n [productDetailSlice.name]: productDetailSlice.reducer,\r\n [productsListingSlice.name]: productsListingSlice.reducer,\r\n [productSearchSlice.name]: productSearchSlice.reducer\r\n});\r\n\r\n\r\nglobal.storeInstance = global.storeInstance || configureStore({\r\n reducer: rootReducer,\r\n middleware: getDefaultMiddleware => getDefaultMiddleware({\r\n thunk: true,\r\n serializableCheck: {\r\n ignoredPaths: ['lastAction']\r\n }\r\n })\r\n .concat(preferencesMiddleware.middleware)\r\n .concat(gtmMiddleware.middleware),\r\n devTools: true\r\n});\r\n\r\nconst unsubscribe = createStoreSubscriber(global.storeInstance);\r\n\r\nexport default global.storeInstance;\r\nexport { configureStore, subscribe, unsubscribe };\r\n","import { createSlice, createSelector, createAsyncThunk } from '@reduxjs/toolkit';\r\nimport { AppSecurityScope } from '@sctypes/AppSecurityScope';\r\nimport api from '@utils/api';\r\n\r\ninterface IUserState {\r\n username?: string;\r\n isLoggedIn?: boolean;\r\n acl?: AppSecurityScope[];\r\n loading?: 'idle' | 'fulfilled' | 'pending' | 'failed';\r\n}\r\n\r\nconst initialState = {\r\n username: null,\r\n isLoggedIn: false,\r\n acl: Object.values(AppSecurityScope),\r\n loading: 'idle'\r\n} as IUserState;\r\n\r\nexport const getCurrentUserThunk = createAsyncThunk(\r\n 'user/getCurrentUser',\r\n async () => {\r\n try {\r\n const response = await api.get('user');\r\n\r\n const { data = {}} = response;\r\n if (data?.user?.userName) {\r\n return {\r\n username: data.user.userName,\r\n isLoggedIn: true,\r\n acl: data.accessControlList\r\n } as IUserState;\r\n }\r\n return initialState;\r\n } catch (error) {\r\n return initialState;\r\n }\r\n }\r\n);\r\n\r\nexport const userSlice = createSlice({\r\n name: 'user',\r\n initialState: initialState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder.addCase(getCurrentUserThunk.pending, (state) => {\r\n return {\r\n ...state,\r\n loading: 'pending'\r\n };\r\n });\r\n\r\n builder.addCase(getCurrentUserThunk.fulfilled, (state, action) => {\r\n const { username, isLoggedIn, acl} = action.payload;\r\n\r\n return {\r\n ...state,\r\n username,\r\n isLoggedIn,\r\n acl,\r\n loading: 'fulfilled'\r\n };\r\n });\r\n\r\n builder.addCase(getCurrentUserThunk.rejected, (state /*, action */) => {\r\n return {\r\n ...state,\r\n loading: 'failed'\r\n };\r\n });\r\n }\r\n});\r\n\r\n// Should be AppDispatch, but SXA's store is written in JS\r\nexport const getCurrentUser = (dispatch: any) => {\r\n return async function () {\r\n dispatch(getCurrentUserThunk());\r\n };\r\n};\r\n\r\nexport const selectUser = (state: any) => state.user;\r\nexport const selectAcl = createSelector(\r\n selectUser,\r\n state => state.acl\r\n);\r\n\r\n// Helper functions\r\n// TODO: Find a better place for these\r\nexport const Can = (acl: string[], scope: AppSecurityScope) => {\r\n try {\r\n return (acl ?? []).includes(scope);\r\n } catch {\r\n // The only reason for this try / catch block is React.NET not playing nice\r\n return false;\r\n }\r\n};\r\n\r\nexport const Cannot = (acl: string[], scope: AppSecurityScope) => {\r\n return !Can(acl, scope);\r\n};\r\n","export enum AppSecurityScope {\r\n ACCOUNT_VIEW = 'Account_View',\r\n ACCOUNT_UPDATE = 'Account_Update',\r\n CARTS_CREATE = 'Carts_Create',\r\n CARTS_UPDATE = 'Carts_Update',\r\n CUSTOMER_VIEW = 'Customer_View',\r\n CUSTOMER_UPDATE = 'Customer_Update',\r\n DELIVERY_ADDRESSES_VIEW = 'DeliveryAddresses_View',\r\n DELIVERY_ADDRESSES_UPDATE = 'DeliveryAddresses_Update',\r\n EMPLOYEES_VIEW = 'Employees_View',\r\n EMPLOYEES_UPDATE = 'Employees_Update',\r\n INVOICES_VIEW = 'Invoices_View',\r\n ORDER_LISTS_VIEW = 'OrderLists_View',\r\n ORDER_LISTS_UPDATE = 'OrderLists_Update',\r\n ORDER_LISTS_LINES_VIEW = 'OrderListLines_View',\r\n ORDER_LISTS_LINES_UPDATE = 'OrderListsLines_Update',\r\n ORDERS_VIEW = 'Orders_View',\r\n SHIPMENTS_VIEW = 'Shipments_View',\r\n REPORTS_VIEW = 'Reports_View'\r\n}\r\n","import axios from 'axios';\r\nimport HttpStatus from 'http-status';\r\nimport { toast } from 'react-toastify';\r\nimport { context } from '@services/meta-context';\r\n\r\nconst api = async (method, url, variables, config = {}) => {\r\n const requestConfig = {\r\n url,\r\n method,\r\n baseURL: context.api.baseUri,\r\n timeout: (1000 * 60),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-store'\r\n },\r\n withCredentials: true,\r\n ...config\r\n };\r\n\r\n const instance = axios.create(requestConfig);\r\n\r\n const responseInterceptor = response => {\r\n const { title = '', severity = '', code = '' } = response.data;\r\n if(title && severity) {\r\n const type = Object.keys(toast.TYPE).includes(severity) ? toast.TYPE[severity] : toast.TYPE.DEFAULT;\r\n toast(title, {\r\n type,\r\n toastId: `${code}`\r\n });\r\n }\r\n return response;\r\n };\r\n\r\n\r\n const errorInterceptor = error => {\r\n if (error.response.data) {\r\n const { title = '', severity = '', code = '' } = error.response.data;\r\n if (title && severity) {\r\n const type = Object.keys(toast.TYPE).includes(severity) ? toast.TYPE[severity] : toast.TYPE.DEFAULT;\r\n toast(title, {\r\n type,\r\n toastId: `${code}`\r\n });\r\n\r\n return Promise.reject({\r\n ...error\r\n });\r\n }\r\n }\r\n\r\n if(!error.response.status) {\r\n // indicates a non-response error, should go to external logger\r\n // TODO: translations\r\n toast.error('Deze functionaliteit werkt op dit moment niet, excuses voor het ongemak', {\r\n toastId: 'noId'\r\n });\r\n return Promise.reject({\r\n ...error\r\n });\r\n }\r\n\r\n switch (error.response?.status) {\r\n case HttpStatus.UNAUTHORIZED:\r\n // TODO: translations\r\n toast.error('Je moet ingelogd zijn om deze actie uit te voeren.', {\r\n toastId: HttpStatus.UNAUTHORIZED\r\n });\r\n return Promise.reject({\r\n ...error\r\n });\r\n\r\n case HttpStatus.FORBIDDEN:\r\n // TODO: translations\r\n toast.error('Je hebt momenteel geen rechten om deze actie uit te voeren.', {\r\n toastId: HttpStatus.FORBIDDEN\r\n });\r\n return Promise.reject({\r\n ...error\r\n });\r\n\r\n case HttpStatus.INTERNAL_SERVER_ERROR:\r\n // TODO: translations\r\n toast.error('Er is iets fout gegaan. Probeer het later nog een keer', {\r\n toastId: HttpStatus.INTERNAL_SERVER_ERROR\r\n });\r\n\r\n return Promise.reject({\r\n ...error\r\n });\r\n\r\n case HttpStatus.BAD_GATEWAY:\r\n // TODO: translations\r\n toast.error('Er is netwerk storing. Probeer het later nog een keer', {\r\n toastId: HttpStatus.BAD_GATEWAY\r\n });\r\n\r\n return Promise.reject({\r\n ...error\r\n });\r\n\r\n default:\r\n // Let the component handle the error\r\n return Promise.reject(error);\r\n }\r\n };\r\n\r\n instance.interceptors.response.use(responseInterceptor, errorInterceptor);\r\n\r\n return new Promise((resolve, reject) => {\r\n const data = {\r\n ...(method === 'GET' && { params: variables }),\r\n ...(method !== 'GET' && { data: variables })\r\n };\r\n\r\n instance.request({ method, url, ...data }).then(\r\n response => {\r\n resolve(response);\r\n },\r\n error => {\r\n if (error) {\r\n reject(error);\r\n }\r\n reject(new Error('Something went wrong with the request instance'));\r\n }\r\n );\r\n });\r\n};\r\n\r\nexport default {\r\n get: (...args) => api('GET', ...args),\r\n post: (...args) => api('POST', ...args),\r\n put: (...args) => api('PUT', ...args),\r\n patch: (...args) => api('PATCH', ...args),\r\n delete: (...args) => api('DELETE', ...args)\r\n};\r\n","export function getBreakpoint() {\r\n if(typeof window === 'undefined' || !window) {\r\n return undefined;\r\n }\r\n\r\n switch(true) {\r\n case window.matchMedia('(min-width: 1240px)').matches:\r\n return 'xl';\r\n case window.matchMedia('(min-width: 992px)').matches:\r\n return 'lg';\r\n case window.matchMedia('(min-width: 768px)').matches:\r\n return 'md';\r\n case window.matchMedia('(min-width: 544px)').matches:\r\n return 'sm';\r\n default:\r\n return 'xs';\r\n }\r\n}\r\n","/* Through the magic of webpack jQuery is already exposed on global scope */\r\n// require('jquery-ui-dist/jquery-ui.min'); // TODO: Find and remove SXA components depending in this\r\n\r\nconst $xa = jQuery;\r\n\r\n$xa.shouldInitialize = function () {\r\n return typeof window !== 'undefined' && !!window?.Sitecore?.WebEditSettings?.editing;\r\n};\r\n\r\nwindow.$xa = $xa;\r\nexport default $xa;","import $xa from '../../Core-Libraries/Scripts/xaquery';\r\n\r\nexport const XA = (function ($xa, document) {\r\n var api = {}, onPreInitHandlers, onPostInitHandlers, modules = {};\r\n onPreInitHandlers = new Array();\r\n onPostInitHandlers = new Array();\r\n api.register = function (name, api, init) {\r\n modules[name] = {\r\n name: name,\r\n api: api,\r\n init: init || api.init || (function () { })\r\n };\r\n };\r\n api.hasPageModes = function () {\r\n\r\n return !!(window.Sitecore && window.Sitecore.PageModes);\r\n };\r\n\r\n api.registerOnPreInitHandler = function (handler) {\r\n onPreInitHandlers.push(handler);\r\n };\r\n\r\n api.registerOnPostInitHandler = function (handler) {\r\n onPostInitHandlers.push(handler);\r\n };\r\n\r\n var initScheduled = false;\r\n\r\n api.init = function () {\r\n if(typeof window === 'undefined') {\r\n return false;\r\n }\r\n\r\n if (!initScheduled) {\r\n initScheduled = true;\r\n XA.ready(function () {\r\n try {\r\n for (var name in modules)\r\n if (modules.hasOwnProperty(name)) {\r\n $xa.each(onPreInitHandlers, function (i, h) { h.process(name, modules[name]); });\r\n modules[name].init();\r\n $xa.each(onPostInitHandlers, function (i, h) { h.process(name, modules[name]); });\r\n }\r\n }\r\n finally {\r\n initScheduled = false;\r\n }\r\n });\r\n }\r\n };\r\n api.ready = function (fn) {\r\n $(document).ready(fn);\r\n };\r\n api.component = {};\r\n api.connector = {};\r\n api.cookies = {\r\n shouldSendSameSiteNone: function (useragent) {\r\n return !this.isSameSiteNoneIncompatible(useragent);\r\n },\r\n isSameSiteNoneIncompatible: function (useragent) {\r\n return this.hasWebKitSameSiteBug(useragent) ||\r\n this.dropsUnrecognizedSameSiteCookies(useragent);\r\n },\r\n hasWebKitSameSiteBug: function (useragent) {\r\n return this.isIosVersion(12, useragent) ||\r\n (this.isMacosxVersion(10, 14, useragent) &&\r\n (this.isSafari(useragent) || this.isMacEmbeddedBrowser(useragent)));\r\n },\r\n dropsUnrecognizedSameSiteCookies: function (useragent) {\r\n if (this.isUcBrowser(useragent)) {\r\n return !this.isUcBrowserVersionAtLeast(12, 13, 2, useragent);\r\n }\r\n return this.isChromiumBased(useragent) &&\r\n this.isChromiumVersionAtLeast(51, useragent) &&\r\n !this.isChromiumVersionAtLeast(67, useragent);\r\n },\r\n isIosVersion: function (major, useragent) {\r\n var regex = /\\(iP.+; CPU .*OS (\\d+)[_\\d]*.*\\) AppleWebKit\\//;\r\n return useragent.match(regex) !== null && useragent.match(regex)[0] == major.toString();\r\n },\r\n isMacosxVersion: function (major, minor, useragent) {\r\n var regex = /\\(Macintosh;.*Mac OS X (\\d+)_(\\d+)[_\\d]*.*\\) AppleWebKit\\//;\r\n return useragent.match(regex) !== null &&\r\n ((useragent.match(regex)[0] == major.toString()) &&\r\n useragent.match(regex)[1] == minor.toString());\r\n },\r\n isSafari: function (useragent) {\r\n var safari_regex = /Version\\/.* Safari\\//;\r\n return useragent.match(safari_regex) !== null &&\r\n !this.isChromiumBased(useragent);\r\n },\r\n isMacEmbeddedBrowser: function (useragent) {\r\n var regex = /^Mozilla\\/[\\.\\d]+ \\(Macintosh;.*Mac OS X [_\\d]+\\) AppleWebKit\\/[\\.\\d]+ \\(KHTML, like Gecko\\)$/;\r\n return useragent.match(regex) !== null;\r\n },\r\n isChromiumBased: function (useragent) {\r\n var regex = /Chrom(e|ium)/;\r\n return useragent.match(regex) !== null;\r\n },\r\n isChromiumVersionAtLeast: function (major, useragent) {\r\n var regex = /Chrom[^ \\/]+\\/(\\d+)[\\.\\d]* /;\r\n var version = parseInt(useragent.match(regex)[1]);\r\n return version >= major;\r\n },\r\n isUcBrowser: function (useragent) {\r\n var regex = /UCBrowser\\//;\r\n return useragent.match(regex) !== null;\r\n },\r\n isUcBrowserVersionAtLeast: function (major, minor, build, useragent) {\r\n var regex = /UCBrowser\\/(\\d+)\\.(\\d+)\\.(\\d+)[\\.\\d]* /;\r\n var major_version = parseInt(useragent.match(regex)[0]);\r\n var minor_version = parseInt(useragent.match(regex)[1]);\r\n var build_version = parseInt(useragent.match(regex)[2]);\r\n if (major_version != major) {\r\n return major_version > major;\r\n }\r\n if (minor_version != minor) {\r\n return minor_version > minor;\r\n }\r\n return build_version >= build;\r\n },\r\n createCookie: function (name, value, days, sameSite, sameSiteForce) {\r\n var cookieValue = \"\", sameSiteValue = \"\";\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n var expires = \"; expires=\" + date.toUTCString();\r\n }\r\n else {\r\n expires = \"\";\r\n }\r\n if (sameSite && sameSite.length > 0 && (sameSiteForce || this.shouldSendSameSiteNone(window.navigator.userAgent))) {\r\n sameSiteValue = \"SameSite=\" + sameSite + \";\";\r\n }\r\n document.cookie = name + \"=\" + value + expires + \";\" + sameSiteValue + \" path=/\";\r\n },\r\n readCookie: function (name) {\r\n var nameEQ = name + \"=\";\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1, c.length);\r\n }\r\n if (c.indexOf(nameEQ) == 0) {\r\n return c.substring(nameEQ.length, c.length);\r\n }\r\n }\r\n return null;\r\n },\r\n removeCookieWarning: function () {\r\n var cookieWarning = $xa(\".privacy-warning\");\r\n cookieWarning.remove();\r\n }\r\n };\r\n api.queryString = {\r\n getQueryParam: function (variable) {\r\n if (variable != null) {\r\n variable = variable.toLocaleLowerCase();\r\n }\r\n var query = window.location.search.substring(1);\r\n var vars = query.split(\"&\");\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split(\"=\");\r\n if (decodeURIComponent(pair[0].toLocaleLowerCase()) === variable) {\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n return null;\r\n }\r\n };\r\n var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;\r\n var eventListenerSupported = window.addEventListener;\r\n api.dom = {\r\n observeDOM: function (obj, callback) {\r\n if (MutationObserver) {\r\n var obs = new MutationObserver(function (mutations) {\r\n if (mutations[0].addedNodes.length || mutations[0].removedNodes.length)\r\n callback();\r\n });\r\n var options = {\r\n childList: true,\r\n subtree: true\r\n };\r\n obs.observe(obj, options);\r\n }\r\n else if (eventListenerSupported) {\r\n obj.addEventListener('DOMNodeInserted', callback, false);\r\n obj.addEventListener('DOMNodeRemoved', callback, false);\r\n }\r\n }\r\n };\r\n return api;\r\n})($xa, document);\r\n\r\nXA.init();\r\nwindow.XA = XA;\r\n\r\nexport default XA;","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport { v4 as uuidV4 } from 'uuid';\r\nimport api from '@utils/api';\r\nimport { createAddToCartAction } from '@/features/gmt/gmtActions';\r\n\r\nexport const getCountThunk = createAsyncThunk(\r\n 'cart/getcount',\r\n async (_, { rejectWithValue }) => {\r\n try {\r\n const response = await api.get('cart/getcount');\r\n if (window && window.appInsights) {\r\n window.appInsights.trackTrace({\r\n message: 'cart/getcount',\r\n properties: {\r\n ...response.data\r\n }\r\n });\r\n }\r\n\r\n return response.data;\r\n } catch (error) {\r\n const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));\r\n return rejectWithValue(serializedError);\r\n }\r\n }\r\n);\r\n\r\nexport const addItemsThunk = createAsyncThunk(\r\n 'cart/addItems',\r\n async (items, { dispatch, rejectWithValue }) => {\r\n const requestBody = {\r\n lines: items.map(item => ({\r\n variantCode: item.variantCode,\r\n // Strip the variantcode + semicolon\r\n unitOfMeasureCode: item.unitOfMeasureCode.replace(`${item.variantCode}:`, ''),\r\n quantity: item.orderAmount\r\n }))\r\n };\r\n try {\r\n const response = await api.post('cart/addItems', requestBody);\r\n dispatch(cartSlice.actions.addToCart({ items }));\r\n return response.data;\r\n\r\n } catch (error) {\r\n const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));\r\n return rejectWithValue(serializedError);\r\n }\r\n }\r\n);\r\n\r\n\r\nexport const deleteItemThunk = createAsyncThunk(\r\n 'cart/deleteItem',\r\n async (variantCode, { rejectWithValue }) => {\r\n const requestBody = {\r\n variantCode: variantCode\r\n };\r\n try {\r\n const response = await api.post('cart/deleteItem', requestBody);\r\n return response.data;\r\n\r\n } catch (error) {\r\n const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));\r\n return rejectWithValue(serializedError);\r\n }\r\n }\r\n);\r\n\r\nexport const cartSlice = createSlice({\r\n name: 'cart',\r\n initialState: {\r\n items: [],\r\n loading: 'idle',\r\n totalPieces: 0,\r\n noOfLines: 0\r\n },\r\n reducers: {\r\n addToCart: (state, { payload }) => {\r\n payload.items.forEach((item) => {\r\n const { orderAmount, variantCode, unitOfMeasureCode } = item;\r\n const newItem = {\r\n id: uuidV4(),\r\n orderAmount: parseInt(orderAmount, 10),\r\n variantCode,\r\n unitOfMeasureCode\r\n };\r\n\r\n state.items.push(newItem);\r\n });\r\n return state;\r\n },\r\n\r\n removeFromCartById: (state, { payload }) => {\r\n const { id } = payload;\r\n return state.items.filter(item => item.id !== id);\r\n },\r\n\r\n removeFromCartByVariantUom: (state, { payload }) => {\r\n const { variantCode, unitOfMeasureCode } = payload;\r\n\r\n const itemToRemove = state.items.find(\r\n item => item.variantCode === variantCode && item.unitOfMeasureCode === unitOfMeasureCode\r\n );\r\n\r\n // TODO: Call API endpoint to remove items\r\n return {\r\n ...state,\r\n items: itemToRemove ? state.items.filter(item => item.id !== itemToRemove.id) : state.items\r\n };\r\n }\r\n },\r\n extraReducers: (builder) => {\r\n builder.addCase(addItemsThunk.fulfilled, (state, action) => {\r\n\r\n // old API returns a 'data' key, the new one does not. We need to handle both cases\r\n const { lines = [], totalPieces, noOfLines } = action.payload.data ?? action.payload;\r\n\r\n const items = lines.map(item => ({\r\n orderAmount: item.quantity,\r\n variantCode: item.itemNo,\r\n unitOfMeasureCode: item.unit\r\n }));\r\n\r\n return {\r\n ...state,\r\n items,\r\n totalPieces,\r\n noOfLines\r\n };\r\n });\r\n\r\n builder.addCase(addItemsThunk.rejected, (state /*, action */) => {\r\n // TODO: Some sort of UI feedback that an error occured\r\n return {\r\n ...state,\r\n loading: 'idle'\r\n };\r\n });\r\n\r\n\r\n builder.addCase(getCountThunk.fulfilled, (state, action) => {\r\n const { totalPieces = 0, noOfLines = 0, ...rest } = action.payload;\r\n\r\n return {\r\n ...state,\r\n totalPieces,\r\n noOfLines,\r\n ...rest\r\n };\r\n });\r\n\r\n builder.addCase(getCountThunk.rejected, (state /*, action */) => {\r\n // TODO: Some sort of UI feedback that an error occured\r\n return {\r\n ...state,\r\n loading: 'idle'\r\n };\r\n });\r\n\r\n\r\n builder.addCase(deleteItemThunk.fulfilled, (state, action) => {\r\n const { items } = action.payload;\r\n return {\r\n ...state,\r\n items\r\n };\r\n });\r\n\r\n builder.addCase(deleteItemThunk.rejected, (state /*, action */) => {\r\n // TODO: Some sort of UI feedback that an error occured\r\n return {\r\n ...state,\r\n loading: 'idle'\r\n };\r\n });\r\n }\r\n});\r\n\r\nexport const selectCart = state => state.cart;\r\nexport const { removeFromCartById } = cartSlice.actions;\r\n\r\n\r\nexport function removeFromCartByVariantUom(dispatch){\r\n return async function ({ unitOfMeasureCode, variantCode }) {\r\n dispatch(cartSlice.actions.removeFromCartByVariantUom({\r\n unitOfMeasureCode, variantCode\r\n }));\r\n\r\n dispatch(deleteItemThunk({ unitOfMeasureCode, variantCode }));\r\n };\r\n}\r\n\r\nexport function getCart(dispatch) {\r\n return async function () {\r\n dispatch(getCountThunk());\r\n };\r\n}\r\n\r\nexport function addToCart(dispatch) {\r\n return async function (items) {\r\n dispatch(cartSlice.actions.addToCart({ items }));\r\n dispatch(addItemsThunk(items));\r\n dispatch(createAddToCartAction({ cartItems: items }));\r\n };\r\n}\r\n","/* Needs to be JS, since we don't build the store with TS yet */\r\nimport { createSlice, isRejected } from '@reduxjs/toolkit';\r\nimport { getOrderListsThunk, addItemToOrderListsThunk } from './orderListsThunks';\r\n\r\nexport const orderListsSlice = createSlice({\r\n name: 'orderLists',\r\n initialState: {\r\n loading: 'idle',\r\n orderLists: [],\r\n displayModal: false,\r\n product: {\r\n title: '',\r\n code: '',\r\n media: [],\r\n unitOfMeasureCode: '',\r\n variant: {}\r\n }\r\n },\r\n reducers: {\r\n displayModal: (state, { payload }) => {\r\n const {\r\n title,\r\n code,\r\n media = [],\r\n shouldDisplay,\r\n unitOfMeasureCode,\r\n variant\r\n } = payload;\r\n\r\n return {\r\n ...state,\r\n displayModal: shouldDisplay === undefined ? !state.displayModal : shouldDisplay,\r\n product: {\r\n title,\r\n code,\r\n media,\r\n unitOfMeasureCode,\r\n variant\r\n }\r\n };\r\n }\r\n },\r\n extraReducers: (builder) => {\r\n builder.addCase(addItemToOrderListsThunk.fulfilled, (state /* action */) => {\r\n return state;\r\n });\r\n\r\n\r\n builder.addCase(getOrderListsThunk.fulfilled, (state, action) => {\r\n const orderLists = action.payload.items || [];\r\n return {\r\n ...state,\r\n orderLists\r\n };\r\n });\r\n\r\n builder.addMatcher(\r\n isRejected(getOrderListsThunk, addItemToOrderListsThunk),\r\n (state /*, action */) => {\r\n return {\r\n ...state,\r\n loading: 'idle'\r\n };\r\n }\r\n );\r\n }\r\n});\r\n\r\nexport const selectOrderLists = state => state.orderLists;\r\n\r\nexport function getOrderLists(dispatch) {\r\n return async function () {\r\n dispatch(getOrderListsThunk());\r\n };\r\n}\r\n\r\nexport function addItemsToOrderList(dispatch) {\r\n return async function ({ variantCode, unitOfMeasureCode, selectedLists }) {\r\n dispatch(addItemToOrderListsThunk({ variantCode, unitOfMeasureCode, selectedLists }));\r\n };\r\n}\r\n\r\nexport function displayOrderListsModal(dispatch) {\r\n return async function(payload) {\r\n dispatch(orderListsSlice.actions.displayModal(payload));\r\n };\r\n}\r\n","/* Needs to be JS, since we don't build the store with TS yet */\r\nimport { createAsyncThunk } from '@reduxjs/toolkit';\r\nimport api from '@utils/api';\r\n\r\nexport const getOrderListsThunk = createAsyncThunk(\r\n 'orderLists/getOrderLists',\r\n async (_, { rejectWithValue }) => {\r\n try {\r\n // Historically an 'orderlist' is the same entitie as a 'cart'\r\n const response = await api.get('orderlists');\r\n return response?.data;\r\n } catch (e) {\r\n return rejectWithValue(e.message);\r\n }\r\n }\r\n);\r\n\r\nexport const addItemToOrderListsThunk = createAsyncThunk(\r\n 'orderlists/bulk/add',\r\n async ({ variantCode, unitOfMeasureCode, selectedLists }, { rejectWithValue }) => {\r\n const orderListIds = selectedLists.map((list) => list.orderListId);\r\n console.log({ variantCode, unitOfMeasureCode, orderListIds });\r\n const requestBody = {\r\n orderListIds,\r\n variantCode,\r\n unitOfMeasureCode,\r\n quantity: 0,\r\n onAccount: true\r\n };\r\n try {\r\n const response = await api.post('orderlists/bulk/add', requestBody);\r\n return response.data;\r\n } catch (e) {\r\n console.log(e);\r\n return rejectWithValue(e.message);\r\n }\r\n }\r\n);\r\n","import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';\r\nimport api from '@utils/api';\r\n\r\nconst fetchProductsThunk = createAsyncThunk(\r\n 'productsListing/fetch',\r\n async ({ apiUrl }, { rejectWithValue }) => {\r\n try {\r\n const response = await api.get(apiUrl);\r\n\r\n if (response.data.content) {\r\n const browserTitle = response.data.content.browserTitle;\r\n const title = response.data.content.title || '';\r\n const content = response.data.content.content || '';\r\n\r\n if (browserTitle && browserTitle !== '') {\r\n document.title = `${browserTitle} - Carel Lurvink B.V.`;\r\n }\r\n\r\n let elem = document.querySelector('h1.field-title');\r\n if (elem) {\r\n elem.innerHTML = title;\r\n }\r\n\r\n elem = document.querySelector('div.field-content');\r\n if (elem) {\r\n elem.innerHTML = content;\r\n }\r\n }\r\n\r\n if (response.data.correctedAttributes) {\r\n const newUrl = response.data.pagination?.relative?.self?.urlSet?.web;\r\n\r\n if (newUrl) {\r\n window.history.replaceState(null, '', `${document.location.origin}${newUrl}`);\r\n }\r\n }\r\n\r\n return response.data;\r\n } catch (e) {\r\n return rejectWithValue(e.message);\r\n }\r\n }\r\n);\r\n\r\nexport const productsListingSlice = createSlice({\r\n name: 'productsListing',\r\n initialState: {\r\n entities: {},\r\n loading: 'idle',\r\n facetsOpen: false\r\n },\r\n reducers: {\r\n toggleFacetsOpen: (state) => {\r\n state.facetsOpen = !state.facetsOpen;\r\n }\r\n },\r\n extraReducers: (builder) => {\r\n builder.addCase(fetchProductsThunk.fulfilled, (state, action) => {\r\n return {\r\n ...state,\r\n loading: 'fulfilled',\r\n entities: {\r\n ...action.payload\r\n }\r\n };\r\n });\r\n\r\n builder.addCase(fetchProductsThunk.pending, (state) => {\r\n state.loading = 'pending';\r\n });\r\n\r\n builder.addCase(fetchProductsThunk.rejected, (state) => {\r\n state.loading = 'failed';\r\n });\r\n }\r\n});\r\n\r\nexport const { toggleFacetsOpen } = productsListingSlice.actions;\r\n\r\nexport function getProducts(dispatch) {\r\n return async function (item) {\r\n dispatch(fetchProductsThunk({ apiUrl: item.apiUrl }));\r\n window.history.replaceState(null, '', `${document.location.origin}${item.webUrl}`);\r\n };\r\n}\r\n","/**\r\n * This has to be JS as it's also included in the dnn build (via store.js)\r\n */\r\nimport { createSlice, createAsyncThunk } from '@reduxjs/toolkit';\r\nimport api from '@utils/api';\r\n\r\n// TODO: Migrate to RTK Query for caching\r\nconst fetchProductsThunk = createAsyncThunk(\r\n 'productSearchSlice/fetch',\r\n async ({ apiUrl }, { rejectWithValue }) => {\r\n try {\r\n const response = await api.get(apiUrl);\r\n return response.data;\r\n } catch (e) {\r\n return rejectWithValue(e.message);\r\n }\r\n }\r\n);\r\n\r\nexport const productSearchSlice = createSlice({\r\n name: 'productSearch',\r\n initialState: {\r\n entities: {},\r\n loading: 'idle',\r\n facetsOpen: false\r\n },\r\n reducers: {\r\n toggleFacetsOpen: (state) => {\r\n state.facetsOpen = !state.facetsOpen;\r\n }\r\n },\r\n extraReducers: (builder) => {\r\n builder.addCase(fetchProductsThunk.fulfilled, (state, action) => {\r\n return {\r\n ...state,\r\n loading: 'fulfilled',\r\n entities: {\r\n ...action.payload\r\n }\r\n };\r\n });\r\n\r\n builder.addCase(fetchProductsThunk.pending, (state) => {\r\n state.loading = 'pending';\r\n });\r\n\r\n builder.addCase(fetchProductsThunk.rejected, (state) => {\r\n state.loading = 'failed';\r\n });\r\n }\r\n});\r\n\r\nexport const { toggleFacetsOpen } = productSearchSlice.actions;\r\n\r\nexport function getProducts(dispatch) {\r\n return async function (item) {\r\n dispatch(fetchProductsThunk({ apiUrl: item.apiUrl }));\r\n };\r\n}\r\n","import { createSlice, createListenerMiddleware, createSelector } from '@reduxjs/toolkit';\r\n\r\nconst STORAGE_KEY = '@cl/preferences';\r\n\r\nconst getInitialState = () => {\r\n const isServer = typeof window === 'undefined';\r\n\r\n if (!isServer && localStorage?.getItem(STORAGE_KEY) !== null) {\r\n return JSON.parse(localStorage.getItem(STORAGE_KEY));\r\n }\r\n\r\n return ({\r\n displayTax: false\r\n });\r\n};\r\n\r\nexport const preferencesSlice = createSlice({\r\n name: 'preferences',\r\n initialState: getInitialState,\r\n reducers: {\r\n setPreference: (state, { payload } ) => {\r\n return ({\r\n ...state,\r\n ...payload\r\n });\r\n }\r\n }\r\n});\r\n\r\n\r\nconst preferencesMiddleware = createListenerMiddleware();\r\n\r\npreferencesMiddleware.startListening({\r\n actionCreator: preferencesSlice.actions.setPreference,\r\n effect: async (action, listener) => {\r\n if(action.type?.indexOf('setPreference')) {\r\n const state = listener.getState().preferences;\r\n state && localStorage.setItem(STORAGE_KEY, JSON.stringify(state));\r\n }\r\n }\r\n\r\n});\r\n\r\nexport const selectPreferences = state => state.preferences;\r\nexport const selectDisplayTax = createSelector(\r\n selectPreferences,\r\n preference => preference.displayTax || false\r\n);\r\n\r\nexport { preferencesMiddleware };\r\nexport const { setPreference } = preferencesSlice.actions;\r\n","import { createSelector, createSlice } from '@reduxjs/toolkit';\r\n\r\nexport const productDetailSlice = createSlice({\r\n name: 'productDetail',\r\n initialState: null,\r\n reducers: {\r\n setProduct: (state, { payload }) => {\r\n return payload;\r\n },\r\n setUnitOfMeasure: (state, { payload }) => {\r\n return {\r\n ...state,\r\n unitOfMeasureCode: payload\r\n };\r\n }\r\n }\r\n});\r\n\r\nexport const selectProduct = state => state.productDetail;\r\n\r\nexport const selectAlternativeProduct = createSelector(\r\n selectProduct,\r\n product => product?.alternativeProducts || [] // Key is plural even though alternatives are a one-to-one relation\r\n);\r\n\r\nexport const selectVariant = createSelector(\r\n selectProduct,\r\n product => product?.variant\r\n);\r\n\r\nexport const selectUnitOfMeasure = createSelector(\r\n selectProduct,\r\n product => {\r\n if (!product?.unitOfMeasureCode || !product?.variant) {\r\n return null;\r\n }\r\n\r\n return product.variant.unitsOfMeasure.find(uom => uom.code === product.unitOfMeasureCode);\r\n }\r\n);\r\n\r\nexport const { setProduct, setUnitOfMeasure } = productDetailSlice.actions;\r\nexport default productDetailSlice;\r\n"],"names":["Modal","props","title","buttons","children","hasFooterSeparator","onModalClose","HeaderComponent","fullHeight","modalRef","useRef","breakpoint","useBreakpoint","isSmallScreen","includes","useOverflowHidden","ref","callback","arguments","length","undefined","useEffect","handleClickOutside","event","current","contains","target","document","addEventListener","removeEventListener","useClickOutside","modalStyles","styles","scrollPaneStyles","contentStyles","_jsxs","className","_jsx","onClick","concat","map","button","type","label","role","selectProductSearchEntities","state","_state$productSearch","productSearch","entities","selectProductSearchLoading","_state$productSearch2","loading","selectOptions","createSelector","options","selectFacetsOpen","facetsOpen","selectSortOrder","selectPaginationItems","pagination","_entities$pagination","items","selectPaginationRelative","_entities$pagination2","relative","selectFilterBadges","active","selectSearchResultCount","results","total","selectFacets","facets","selectActiveFacets","allFacets","filter","facet","findIndex","item","selected","selectTiming","activeFactes","selectedItems","timing","onsiteSearch","createAction","_ref","searchTerm","searchResultCount","payload","search_term","search_results","createAddToCartAction","_ref2","cartItems","ecommerce","value","reduce","accumulator","currentVariant","unitsOfMeasure","find","uom","code","unitOfMeasureCode","prices","exTax","numeric","orderAmount","currency","_ref3","_item$currentVariant$","_ref4","_item$currentVariant$2","unitOfMeasure","item_id","varaintCode","item_brand","item_name","variantTitle","item_category","category","item_category2","item_category3","price","quantity","useMergeState","initialState","setState","useState","useCallback","newState","currentState","cache","useMutation","method","url","mergeState","data","error","isWorking","makeRequest","variables","Promise","resolve","reject","api","then","post","put","patch","delete","useApi","get","propsVariables","lazy","cachePolicy","wasCalled","propsVariablesMemoized","valueRef","isEqual","useDeepCompareMemoize","isSleeping","canUseCache","apiVariables","isLoading","newVariables","response","setLocalData","getUpdatedData","updatedData","useQuery","_len","args","Array","_key","_len2","_key2","_len3","_key3","_len4","_key4","setBreakpoint","getBreakpoint","useBrowserLayoutEffect","window","useLayoutEffect","intialHidden","isOverflowHidden","setisOverflowHidden","originalOverflow","body","style","overflow","originalPaddingRight","paddingRight","scrollbarWidth","innerWidth","clientWidth","removeProperty","getUrl","original","width","height","pad","result","this","isCloudflare","replace","context","constructor","authentication","userName","isLoggedIn","baseUri","getVarsFromDOM","_document","pageMetaContext","JSON","parse","querySelector","textContent","user","e","apiBaseUri","actionsArray","Object","values","gmtActions","gtmMiddleware","createListenerMiddleware","startListening","matcher","isAnyOf","effect","action","getState","gtmEvent","meta","createdAt","Date","toISOString","dataLayer","push","subscribers","subscribe","key","prototype","hasOwnProperty","call","subscriber","rootReducer","combineReducers","lastAction","cartSlice","userSlice","orderListsSlice","preferencesSlice","productDetailSlice","productsListingSlice","productSearchSlice","global","storeInstance","configureStore","reducer","middleware","getDefaultMiddleware","thunk","serializableCheck","ignoredPaths","preferencesMiddleware","devTools","store","prevState","keys","forEach","prevValue","newValue","cb","createStoreSubscriber","username","acl","AppSecurityScope","getCurrentUserThunk","createAsyncThunk","async","_data$user","accessControlList","createSlice","name","reducers","extraReducers","builder","addCase","pending","fulfilled","rejected","selectAcl","Cannot","scope","Can","config","requestConfig","baseURL","timeout","headers","withCredentials","instance","axios","interceptors","use","severity","toast","toastId","_error$response","status","HttpStatus","params","request","Error","_len5","_key5","matchMedia","matches","$xa","shouldInitialize","_window","_window$Sitecore","_window$Sitecore$WebE","Sitecore","WebEditSettings","editing","XA","onPreInitHandlers","onPostInitHandlers","modules","register","init","hasPageModes","PageModes","registerOnPreInitHandler","handler","registerOnPostInitHandler","initScheduled","ready","each","i","h","process","fn","$","component","connector","cookies","shouldSendSameSiteNone","useragent","isSameSiteNoneIncompatible","hasWebKitSameSiteBug","dropsUnrecognizedSameSiteCookies","isIosVersion","isMacosxVersion","isSafari","isMacEmbeddedBrowser","isUcBrowser","isUcBrowserVersionAtLeast","isChromiumBased","isChromiumVersionAtLeast","major","regex","match","toString","minor","parseInt","build","major_version","minor_version","build_version","createCookie","days","sameSite","sameSiteForce","sameSiteValue","date","setTime","getTime","expires","toUTCString","navigator","userAgent","cookie","readCookie","nameEQ","ca","split","c","charAt","substring","indexOf","removeCookieWarning","remove","queryString","getQueryParam","variable","toLocaleLowerCase","vars","location","search","pair","decodeURIComponent","MutationObserver","WebKitMutationObserver","eventListenerSupported","dom","observeDOM","obj","mutations","addedNodes","removedNodes","observe","childList","subtree","getCountThunk","_","rejectWithValue","appInsights","trackTrace","message","properties","stringify","getOwnPropertyNames","addItemsThunk","dispatch","requestBody","lines","variantCode","actions","addToCart","deleteItemThunk","totalPieces","noOfLines","newItem","id","uuidV4","removeFromCartById","_ref5","removeFromCartByVariantUom","_ref6","itemToRemove","_action$payload$data","itemNo","unit","rest","selectCart","cart","_ref7","getCart","orderLists","displayModal","product","media","variant","shouldDisplay","addItemToOrderListsThunk","getOrderListsThunk","addMatcher","isRejected","selectOrderLists","getOrderLists","addItemsToOrderList","selectedLists","displayOrderListsModal","orderListIds","list","orderListId","console","log","onAccount","fetchProductsThunk","apiUrl","content","browserTitle","elem","innerHTML","correctedAttributes","_response$data$pagina","_response$data$pagina2","_response$data$pagina3","_response$data$pagina4","newUrl","self","urlSet","web","history","replaceState","origin","toggleFacetsOpen","getProducts","webUrl","STORAGE_KEY","getInitialState","_localStorage","localStorage","getItem","displayTax","setPreference","actionCreator","listener","_action$type","preferences","setItem","selectDisplayTax","preference","setProduct","setUnitOfMeasure","selectProduct","productDetail","selectAlternativeProduct","alternativeProducts","selectVariant","selectUnitOfMeasure"],"sourceRoot":""}