{"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":""}