{"version":3,"file":"coopse.script.1624.a903f426.chunk.js","mappings":"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","sources":["webpack:///./src/microApps/common/components/atoms/ResponsiveBreakpoints.tsx","webpack:///./src/microApps/ecommerce/hooks/useBreakpoints.ts","webpack:///./src/utility/coopSwiperBreakpoints.ts","webpack:///../../packages/hooks/src/useElementEvent.ts"],"sourcesContent":["/* eslint-disable react/jsx-no-useless-fragment */\nimport type { ReactNode } from 'react';\nimport { useMediaQuery } from 'react-responsive';\n\nimport { Browser, BrowserSize } from '../../../../utility/browser';\n\nexport const useBrowserMediaQuery = (size: BrowserSize) =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(size).from,\n maxWidth: Browser.getBreakpoint(size).to,\n });\n\nexport const useFromBrowserMediaQuery = (size: BrowserSize) =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(size).from,\n });\n\nexport const useBrowserCustomMediaQuery = (minWidth: number, maxWidth: number) =>\n useMediaQuery({\n minWidth,\n maxWidth,\n });\n\nexport const useBrowserMinMediaQuery = (minWidth: number) =>\n useMediaQuery({\n minWidth,\n });\n\nexport const useIsMobile = () =>\n useMediaQuery({ maxWidth: Browser.getBreakpoint(BrowserSize.sm).from });\n\nexport const useIsDesktop = () =>\n useMediaQuery({ minWidth: Browser.getBreakpoint(BrowserSize.lg).from });\n\nexport const useIsFromXXSmall = () =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(BrowserSize.xxsm).from,\n });\n\nexport const useIsFromXSmall = () =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(BrowserSize.xsm).from,\n });\n\nexport const useIsFromMedium = () =>\n useMediaQuery({ minWidth: Browser.getBreakpoint(BrowserSize.md).from });\n\nexport const useIsFromLarge = () =>\n useMediaQuery({ minWidth: Browser.getBreakpoint(BrowserSize.lg).from });\n\nexport const useIsFromXLarge = () =>\n useMediaQuery({\n minWidth: Browser.getBreakpoint(BrowserSize.xlg).from,\n });\n\nexport const Mobile = ({ children }: { children: ReactNode }) => {\n const isMobile = useIsMobile();\n return isMobile ? <>{children}</> : null;\n};\n\nexport const Desktop = ({ children }: { children: ReactNode }) => {\n const isDesktop = useIsDesktop();\n return isDesktop ? <>{children}</> : null;\n};\n\nexport const NotDesktop = ({ children }: { children: ReactNode }) => {\n const isDesktop = useIsDesktop();\n return isDesktop ? null : <>{children}</>;\n};\n","import { useElementEvent } from '@coop/hooks';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport _ from 'underscore';\n\nimport type {\n CoopContentPageSize,\n CoopLayoutSize,\n SwiperBreakpointsCollection,\n} from '../../../utility/coopSwiperBreakpoints';\nimport {\n CoopSwiperBreakpoints,\n getGridBreakpointRanges,\n} from '../../../utility/coopSwiperBreakpoints';\nimport { useAppSelector } from '../../common/hooks/useThunkDispatch';\n\nexport const useBreakpoints = (\n breakpointAreaName: keyof SwiperBreakpointsCollection,\n hasSideBar: boolean,\n contentPageSize: CoopContentPageSize,\n layoutSize: CoopLayoutSize,\n) => {\n const [windowSize, setWindowSize] = useState({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const handleResize = useCallback(\n _.throttle(() => {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }, 100),\n [],\n );\n\n useElementEvent(window, 'resize', handleResize, true);\n\n const breakpointArray = useMemo(() => {\n const breakpoints = CoopSwiperBreakpoints.getBreakpointsFor(\n breakpointAreaName,\n hasSideBar,\n contentPageSize,\n layoutSize,\n );\n return breakpoints;\n }, [breakpointAreaName, hasSideBar, contentPageSize, layoutSize]);\n\n const breakpointRanges = useMemo(() => {\n const ranges = getGridBreakpointRanges(breakpointArray);\n return ranges;\n }, [breakpointArray]);\n\n const getCellsInRow = useCallback(\n (width: number) => {\n const range = breakpointRanges.find((x) => width >= x.from && width <= x.to);\n if (!range) {\n return 1;\n }\n return Math.round(range?.cellsInRow);\n },\n [breakpointRanges],\n );\n\n const [cellsInRow, setCellsInRow] = useState(getCellsInRow(windowSize.width));\n\n useEffect(() => {\n const inRow = getCellsInRow(windowSize.width);\n setCellsInRow(inRow);\n }, [windowSize.width, getCellsInRow]);\n\n return {\n breakpoints: breakpointArray,\n cellsInRow,\n };\n};\n\nexport const useBreakpointsSidebar = (breakpointAreaName: keyof SwiperBreakpointsCollection) => {\n const hasSideBar = useAppSelector((state) => state.ui.shared.hasSideBar);\n const layoutSize = useAppSelector((state) => state.ui.shared.layoutSize);\n const contentPageSize = useAppSelector((state) => state.ui.shared.contentPageSize);\n\n const result = useBreakpoints(breakpointAreaName, hasSideBar, contentPageSize, layoutSize);\n return result;\n};\n","import type { SwiperOptions } from 'swiper/types';\n\nimport { isNumeric } from '../microApps/common/utils/numberUtils';\nimport { BREAKPOINT_MAX_TO, BREAKPOINT_MIN_FROM, Browser, BrowserSize } from './browser';\n\nexport type CoopLayoutSize = 'full' | 'default';\n\nexport type CoopContentPageSize = CoopLayoutSize | 'narrow';\n\nexport type SwiperBreakpoints =\n | {\n [BREAKPOINT_MIN_FROM]: SwiperOptions; // mandatory \"from 0px\" breakpoint\n [index: number]: SwiperOptions;\n }\n | undefined;\n\nexport class CoopSwiperBreakpoints {\n public static readonly AREA_BRAND_CATEGORY = 'BrandCategory';\n\n public static readonly AREA_LARGE_TEASER_LIST = 'LargeTeasersList';\n\n public static readonly AREA_LARGE_TEASER_GRID = 'LargeTeasersGrid';\n\n public static readonly AREA_BRAND_CATEGORY_LISTING = 'BrandCategoryListing';\n\n public static readonly AREA_HERO_PRODUCT = 'HeroProduct';\n\n public static readonly AREA_RECIPE = 'Recipe';\n\n public static readonly AREA_NEW_RECIPE_LIST = 'NewRecipeList';\n\n public static readonly AREA_MY_COOP = 'MyCoop';\n\n /** This is used in React Swiper LISTS of OLD design product teasers */\n public static readonly AREA_PRODUCT_LIST = 'ProductList';\n\n /** This is used in React Swiper LISTS of NEW design product teasers */\n public static readonly AREA_NEW_PRODUCT_LIST = 'NewProductList';\n\n /** This is used in React Swiper LISTS of NEW design product teasers WITH BANNER */\n public static readonly AREA_NEW_PRODUCT_LIST_WITH_BANNER = 'NewProductListWithBanner';\n\n /** This is used in GRIDS of OLD design product teasers, that are using ItemGrid component */\n public static readonly AREA_PRODUCT_GRID = 'ProductGrid';\n\n /** This is used in GRIDS of NEW design product teasers, that are using ItemGrid component */\n public static readonly AREA_NEW_PRODUCT_GRID = 'NewProductGrid';\n\n public static readonly AREA_GROUPED_OFFERS_GRID = 'GroupedOffersGrid';\n\n /** This is used in GRIDS of NEW React recipe lisiting block, when not using swiper, less than 6, centered and useNarrow */\n public static readonly AREA_RECIPE_LISTING_GRID = 'RecipeListingGrid';\n\n /** This is used in React Swiper Recipe Lisiting Block when using swiper and useNarrow */\n public static readonly AREA_RECIPE_LISTING_NARROW = 'RecipeListingSwiperNarrow';\n\n public static readonly AREA_DR_OFFERS_LIST = 'DrOffersList';\n\n /** This is used in weekly menu recipes blockin swiper list */\n public static readonly AREA_WEEKLY_MENU_LIST = 'WeeklyMenuList';\n\n public static readonly AREA_PERSONAL_OFFERS_LIST = 'PersonalOffersList';\n\n public static readonly AREA_TV_OFFERS_LIST = 'TVOffersList';\n\n public static readonly AREA_FOOTER_GRID = 'FooterGrid';\n\n static getBreakpointsFor(\n area: keyof SwiperBreakpointsCollection,\n hasSideMenu: boolean,\n pageContentSize: CoopContentPageSize,\n layoutSize: CoopLayoutSize,\n ): SwiperBreakpoints {\n const isViewportInconsistent = hasSideMenu || pageContentSize !== layoutSize; // this mean that page changes at SIDEBAR_HIDE_BREAKPOINT and .e. sidebar is hidden, so the breakpoints must also change\n\n const pageContentSizeOrFallback = pageContentSize || layoutSize;\n\n switch (pageContentSizeOrFallback) {\n case 'full':\n return FULL_WITH_SIDEMENU_BREAKPOINTS[area];\n case 'narrow':\n return isViewportInconsistent\n ? NARROW_WITH_SIDEMENU_BREAKPOINTS[area]\n : NARROW_WITHOUT_SIDEMENU_BREAKPOINTS[area];\n case 'default':\n default:\n return isViewportInconsistent\n ? DEFAULT_WITH_SIDEMENU_BREAKPOINTS[area]\n : DEFAULT_WITHOUT_SIDEMENU_BREAKPOINTS[area];\n }\n }\n}\n\nexport const getSwiperBreakpoint = (browserSize: BrowserSize) => {\n return Browser.getBreakpoint(browserSize).from; // we always operate on the \"from\" values what describing Swiper breakponts, never use \"to\"\n};\n\n// The breakpoint where sidebar navigation gets hidden\nconst SIDEBAR_HIDE_BREAKPOINT = getSwiperBreakpoint(BrowserSize.lg);\n\nexport interface SwiperBreakpointsCollection {\n BrandCategory: SwiperBreakpoints;\n BrandCategoryListing: SwiperBreakpoints;\n LargeTeasersList: SwiperBreakpoints;\n LargeTeasersGrid: SwiperBreakpoints;\n HeroProduct: SwiperBreakpoints;\n Recipe: SwiperBreakpoints;\n MyCoop: SwiperBreakpoints;\n ProductList: SwiperBreakpoints;\n NewProductList: SwiperBreakpoints;\n NewProductListWithBanner: SwiperBreakpoints;\n ProductGrid: SwiperBreakpoints;\n NewProductGrid: SwiperBreakpoints;\n GroupedOffersGrid: SwiperBreakpoints;\n NewRecipeList: SwiperBreakpoints;\n RecipeListingGrid: SwiperBreakpoints;\n RecipeListingSwiperNarrow: SwiperBreakpoints;\n DrOffersList: SwiperBreakpoints;\n WeeklyMenuList: SwiperBreakpoints;\n PersonalOffersList: SwiperBreakpoints;\n TVOffersList: SwiperBreakpoints;\n FooterGrid: SwiperBreakpoints;\n}\n\n// I.e. Handla, Hallbarhet, Medlem, Bank\nconst FULL_WITH_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n BrandCategory: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n LargeTeasersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n LargeTeasersGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n BrandCategoryListing: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n },\n HeroProduct: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n Recipe: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4.25, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6.25, slidesPerGroup: 6 },\n },\n MyCoop: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 8, slidesPerGroup: 8 },\n },\n // mostly same as ProductList\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 8, slidesPerGroup: 8 },\n },\n GroupedOffersGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xxsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductListWithBanner: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 2, slidesPerGroup: 2 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 1, slidesPerGroup: 1 },\n 1200: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n // same as NewProductList\n NewRecipeList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n RecipeListingGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n RecipeListingSwiperNarrow: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 2.25 },\n },\n DrOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n WeeklyMenuList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 5, slidesPerGroup: 5 },\n },\n PersonalOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 5, slidesPerGroup: 5 },\n },\n TVOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3 },\n 900: { slidesPerView: 2 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4 },\n },\n FooterGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n};\n\n// I.e. My Coop pages\nconst DEFAULT_WITH_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n ...FULL_WITH_SIDEMENU_BREAKPOINTS,\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 4, slidesPerGroup: 4 },\n 900: { slidesPerView: 6, slidesPerGroup: 6 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 4, slidesPerGroup: 4 },\n 1200: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n // same as NewProductList\n NewRecipeList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n PersonalOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4 },\n },\n};\n\n// I.e. Checkout, Coop start page, Butiker, Global Search results\nconst DEFAULT_WITHOUT_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n ...FULL_WITH_SIDEMENU_BREAKPOINTS,\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n // mostly same as ProductList\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n NewProductListWithBanner: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 2, slidesPerGroup: 2 },\n 1200: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n // mostly same as NewProductList\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n // same as NewProductList\n NewRecipeList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n Recipe: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4.25, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 5.25, slidesPerGroup: 5 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6.25, slidesPerGroup: 6 },\n },\n RecipeListingGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 5, slidesPerGroup: 5 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 6, slidesPerGroup: 6 },\n },\n WeeklyMenuList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3 },\n 900: { slidesPerView: 3 },\n [getSwiperBreakpoint(BrowserSize.lg)]: { slidesPerView: 4 },\n 1200: { slidesPerView: 4 },\n [getSwiperBreakpoint(BrowserSize.xxlg)]: { slidesPerView: 5 },\n },\n PersonalOffersList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2.25, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.md)]: { slidesPerView: 4, slidesPerGroup: 4 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 5, slidesPerGroup: 5 },\n },\n};\n\n// I.e Recipe details page\nconst NARROW_WITH_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n ...FULL_WITH_SIDEMENU_BREAKPOINTS,\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 3, slidesPerGroup: 3 },\n 1200: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 2, slidesPerGroup: 2 },\n 1200: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n [SIDEBAR_HIDE_BREAKPOINT]: { slidesPerView: 2, slidesPerGroup: 2 },\n 1200: { slidesPerView: 3, slidesPerGroup: 3 },\n [getSwiperBreakpoint(BrowserSize.xlg)]: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n};\n\n// I.e. Article page\nconst NARROW_WITHOUT_SIDEMENU_BREAKPOINTS: SwiperBreakpointsCollection = {\n ...NARROW_WITH_SIDEMENU_BREAKPOINTS,\n ProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n ProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n 900: { slidesPerView: 4, slidesPerGroup: 4 },\n },\n NewProductList: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 1.5, slidesPerGroup: 1 },\n [getSwiperBreakpoint(BrowserSize.xsm)]: { slidesPerView: 2.25, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n },\n NewProductGrid: {\n [BREAKPOINT_MIN_FROM]: { slidesPerView: 2, slidesPerGroup: 2 },\n [getSwiperBreakpoint(BrowserSize.sm)]: { slidesPerView: 3, slidesPerGroup: 3 },\n },\n};\n\ninterface BreakpointRange {\n from: number;\n to: number;\n cellsInRow: number;\n}\n\nexport const getGridBreakpointRanges = (breakpointArray: SwiperBreakpoints): BreakpointRange[] => {\n const breakpoints =\n breakpointArray &&\n Object.entries(breakpointArray).map((x) => {\n const [key, value] = x;\n return {\n from: parseInt(key, 10),\n perView: isNumeric(value.slidesPerView) ? value.slidesPerView : 0,\n };\n });\n\n if (!breakpoints?.length)\n throw new Error('Breakpoint array must contain at least one breakpoint');\n\n const ranges: BreakpointRange[] = [];\n\n for (let i = 0; i < breakpoints.length - 1; i += 1) {\n ranges.push({\n from: breakpoints[i].from,\n to: breakpoints[i + 1].from - 1,\n cellsInRow: breakpoints[i].perView,\n });\n }\n\n // create last breakpoint from X to 99999\n ranges.push({\n from: breakpoints[breakpoints.length - 1].from,\n to: BREAKPOINT_MAX_TO,\n cellsInRow: breakpoints[breakpoints.length - 1].perView,\n });\n\n return ranges;\n};\n","import { useEffect, useRef } from 'react';\n\nexport const useElementEvent = (\n target: EventTarget | null,\n event: string,\n callback: (e: Event | undefined) => void,\n runImmediately: boolean,\n addOptions: boolean | AddEventListenerOptions | undefined = undefined,\n when: boolean = true,\n) => {\n const addOptionsRef = useRef(addOptions);\n\n useEffect(() => {\n if (when && target) {\n // Add event listener\n target.addEventListener(event, callback, addOptionsRef.current);\n\n // Call handler right away so state gets updated with initial window size\n if (runImmediately) {\n callback(undefined);\n }\n }\n // Remove event listener on cleanup\n return () => target?.removeEventListener(event, callback);\n }, [when, target, event, runImmediately, callback]);\n};\n"],"names":["useBrowserMediaQuery","size","useMediaQuery","minWidth","getBreakpoint","from","maxWidth","to","useFromBrowserMediaQuery","useBrowserCustomMediaQuery","useBrowserMinMediaQuery","useIsMobile","sm","useIsDesktop","lg","useIsFromXSmall","xsm","useIsFromMedium","md","Mobile","children","Desktop","NotDesktop","useBreakpoints","breakpointAreaName","hasSideBar","contentPageSize","layoutSize","windowSize","setWindowSize","useState","width","window","innerWidth","height","innerHeight","handleResize","useCallback","breakpointArray","useMemo","getBreakpointsFor","breakpointRanges","getCellsInRow","range","find","x","Math","round","cellsInRow","setCellsInRow","useEffect","inRow","breakpoints","useBreakpointsSidebar","state","ui","shared","CoopSwiperBreakpoints","area","hasSideMenu","pageContentSize","isViewportInconsistent","FULL_WITH_SIDEMENU_BREAKPOINTS","NARROW_WITH_SIDEMENU_BREAKPOINTS","NARROW_WITHOUT_SIDEMENU_BREAKPOINTS","DEFAULT_WITH_SIDEMENU_BREAKPOINTS","DEFAULT_WITHOUT_SIDEMENU_BREAKPOINTS","AREA_BRAND_CATEGORY","AREA_LARGE_TEASER_LIST","AREA_LARGE_TEASER_GRID","AREA_BRAND_CATEGORY_LISTING","AREA_HERO_PRODUCT","AREA_RECIPE","AREA_NEW_RECIPE_LIST","AREA_MY_COOP","AREA_PRODUCT_LIST","AREA_NEW_PRODUCT_LIST","AREA_NEW_PRODUCT_LIST_WITH_BANNER","AREA_PRODUCT_GRID","AREA_NEW_PRODUCT_GRID","AREA_GROUPED_OFFERS_GRID","AREA_RECIPE_LISTING_GRID","AREA_RECIPE_LISTING_NARROW","AREA_DR_OFFERS_LIST","AREA_WEEKLY_MENU_LIST","AREA_PERSONAL_OFFERS_LIST","AREA_TV_OFFERS_LIST","AREA_FOOTER_GRID","getSwiperBreakpoint","browserSize","SIDEBAR_HIDE_BREAKPOINT","BrandCategory","slidesPerView","slidesPerGroup","LargeTeasersList","xlg","LargeTeasersGrid","BrandCategoryListing","HeroProduct","Recipe","MyCoop","ProductList","xxlg","ProductGrid","GroupedOffersGrid","xxsm","NewProductList","NewProductListWithBanner","NewProductGrid","NewRecipeList","RecipeListingGrid","RecipeListingSwiperNarrow","DrOffersList","WeeklyMenuList","PersonalOffersList","TVOffersList","FooterGrid","getGridBreakpointRanges","Object","entries","map","key","value","parseInt","perView","length","Error","ranges","i","push","useElementEvent","target","event","callback","runImmediately","addOptions","undefined","when","addOptionsRef","useRef","addEventListener","current","removeEventListener"],"sourceRoot":""}