{"version":3,"file":"static/chunks/2890.7456f1b4977851d1.js","mappings":"qNAKA,IAAMA,EAAa,OAAC,CAAEC,SAAAA,CAAQ,CAAEC,MAAAA,CAAK,CAAEC,GAAAA,CAAE,CAAEC,UAAAA,EAAY,EAAE,CAAE,CAAAC,EACvD,GAAI,CAACF,EACD,MAAO,GAAAG,EAAAC,GAAA,EAACC,OAAAA,UAAMN,GAASD,IAG3B,IAAMQ,EAAUC,IAAWC,IAAAA,IAAS,CAAE,SAAU,CAC5C,CAAC,GAAaC,MAAA,CAAVR,GAAY,CAAEA,CACtB,GACA,MACI,GAAAE,EAAAC,GAAA,EAACM,IAAAA,CAAET,UAAWK,EAASK,KAAM,IAAOF,MAAA,CAAHT,GAAMA,GAAIA,WACvC,GAAAG,EAAAC,GAAA,EAACC,OAAAA,UAAMN,GAASD,KAG5B,CAEAD,CAAAA,EAAWe,SAAS,CAAG,CACnBb,MAAOc,IAAAA,MAAgB,CACvBb,GAAIa,IAAAA,MAAgB,CACpBZ,UAAWY,IAAAA,MAAgB,ECrB/B,IAAAC,EDwBejB,6WEPf,IAAMkB,EAAoB,IACtB,GAAM,CAACC,EAAgBC,EAAkB,CAAGC,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,GAE/CC,EAAWC,CAAAA,EAAAA,EAAAA,CAAAA,EAAS,KACtBH,EAAkBI,EAAKC,OAAO,CAACC,UAAU,CAC7C,EAAG,KAeH,MAbAC,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KACN,GAAI,CAACH,EAAKC,OAAO,CACb,OAGJ,IAAMG,EAAKJ,EAAKC,OAAO,CAGvB,OADAG,EAAGC,gBAAgB,CAAC,SAAUP,EAAU,CAAEQ,QAAS,EAAK,GACjD,KACHF,EAAGG,mBAAmB,CAAC,SAAUT,EACrC,CACJ,EAAG,CAACE,EAAMF,EAAS,EAEZ,CACHH,eAAAA,CACJ,CACJ,EAEMa,EAAc,OAAC,CACjB7B,GAAAA,CAAE,CACF8B,MAAAA,EAAQ,EAAE,CACVnB,KAAAA,EAAO,EAAE,CACTZ,MAAAA,EAAQ,EAAE,CACVgC,SAAAA,EAAW,EAAE,CACbC,IAAAA,EAAM,EAAE,CACRC,YAAAA,EAAc,EAAE,CAChBC,UAAAA,EAAY,EAAK,CACjBC,cAAAA,EAAgB,EAAE,CAClBC,gBAAAA,EAAkB,EAAK,CACvBC,OAAAA,EAAS,EAAK,CACdC,WAAAA,EAAa,EAAE,CAElB,CAAApC,EACS,CAAEqC,EAAAA,CAAC,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,EAAe,UACvBC,EAAgBC,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,MACvB,CAAE1B,eAAAA,CAAc,CAAE,CAAGD,EAAkB0B,GACvCE,EAAWC,CAAAA,EAAAA,EAAAA,CAAAA,EAAc,CAC3BC,MAAO,eAA6BpC,MAAA,CAAdqC,EAAAA,CAAWA,CAACC,CAAC,CAAC,MACxC,GAEMC,EAAO,CAAC,GAAI,GAAG,CAEfC,EAAQ,CAACC,EAAKC,KAGhB,GAFAA,EAAEC,cAAc,GAEZD,EAAEE,OAAO,EAAIL,KAAAA,EAAKM,OAAO,CAACH,EAAEE,OAAO,GAInC,CAACZ,EAAcnB,OAAO,CAHtB,OAOJ,IAAMiC,EAAed,EAAcnB,OAAO,CAACkC,WAAW,CAAG,EAErDC,EAAS,CACTC,SAAU,QACd,CAEIR,CAAQ,SAARA,EACAO,EAAOE,IAAI,CAAG3C,EAAiBuC,EAE/BE,EAAOE,IAAI,CAAG3C,EAAiBuC,EAGnCd,EAAcnB,OAAO,CAACmC,MAAM,CAACA,EACjC,EAEA,GAAIG,CAAAA,EAAAA,EAAAA,CAAAA,EAAQ9B,GACR,OAAO,KAKX,IAAM+B,EAAa,GAAOZ,EAAM,QAASE,GACnCW,EAAY,GAAOb,EAAM,OAAQE,GAEjCY,EAAqBtB,EAAcnB,OAAO,CAC1CN,EACKyB,CAAAA,EAAcnB,OAAO,CAAC0C,WAAW,CAC9BvB,EAAcnB,OAAO,CAACkC,WAAW,EACzC,IACA,EACAS,EAAgBF,MAAAA,EAWhBG,EAAepC,EAAMqC,MAAM,CAR7B,GACW,EAEA,CACX,EAME7D,EAAUC,IAAW6D,IAAAA,WAAqB,CAAE,CAC9C,CAACA,GAAAA,CAAAA,0BAAiC,CAAC,CAAE,CAAClC,EACtC,CAACkC,GAAAA,CAAAA,uBAA8B,CAAC,CAAElC,EAElC,CAACkC,GAAAA,CAAAA,wBAA+B,CAAC,CAC7BhC,GAAmBD,mBAAAA,EACvB,CAACiC,GAAAA,CAAAA,wBAA+B,CAAC,CAC7BhC,GAAmBD,mBAAAA,EACvB,CAACiC,GAAAA,CAAAA,uBAA8B,CAAC,CAC5BhC,GAAmBD,iBAAAA,EAEvB,CAACiC,GAAAA,CAAAA,4BAAmC,CAAC,CAAEtC,EAAMqC,MAAM,CAAG,CAC1D,GAEME,EAAcvC,EAAMqC,MAAM,CAAG,GAAK,CAAC9B,EAEnCiC,EAAe/D,IAAW6D,IAAAA,kBAA4B,CAAE,CAC1D,CAACA,GAAAA,CAAAA,6BAAoC,CAAC,CAAEzD,EACxC,CAACyD,GAAAA,CAAAA,4BAAmC,CAAC,CAAEC,CAC3C,GAEA,MACI,GAAAlE,EAAAC,GAAA,EAACmE,MAAAA,CAAItE,UAAWK,WACZ,GAAAH,EAAAqE,IAAA,EAACD,MAAAA,CAAItE,UAAWmE,IAAAA,sBAAgC,WAC5C,GAAAjE,EAAAqE,IAAA,EAACD,MAAAA,CAAItE,UAAWmE,IAAAA,0BAAoC,WAC/CzD,GACG,GAAAR,EAAAqE,IAAA,EAACC,KAAAA,CAAGxE,UAAWqE,YACX,GAAAnE,EAAAC,GAAA,EAACM,IAAAA,CAAEC,KAAMA,WACL,GAAAR,EAAAC,GAAA,EAACC,OAAAA,CAAKJ,UAAU,mBAAWF,MAE/B,GAAAI,EAAAC,GAAA,EAACC,OAAAA,UAAMN,IAENsE,GACG,GAAAlE,EAAAC,GAAA,EAACC,OAAAA,CACGJ,UAAWmE,IAAAA,qBAA+B,CAC1CM,cAAa,YACb,GAAAvE,EAAAC,GAAA,EAACC,OAAAA,CACGJ,UACImE,IAAAA,yBAAmC,UAEtC7B,EAAE,8BAMtB,CAAC5B,GACE,GAAAR,EAAAC,GAAA,EAACqE,KAAAA,CAAGxE,UAAWmE,IAAAA,kBAA4B,UACvC,GAAAjE,EAAAC,GAAA,EAACP,EAAAA,CAAUA,CAAAA,CAACE,MAAOA,EAAOC,GAAIsC,MAGpCP,CAAAA,GAAYC,CAAAA,GACV,GAAA7B,EAAAC,GAAA,EAACmE,MAAAA,CAAItE,UAAWmE,IAAAA,qBAA+B,UAC1CpC,GAAOD,IAIhB,GAAA5B,EAAAC,GAAA,EAACmE,MAAAA,CAAItE,UAAWmE,IAAAA,iBAA2B,MAG/C,GAAAjE,EAAAC,GAAA,EAACuE,EAAAA,CAAMA,CAAAA,CAACC,QAAS5D,EAAiB,GAAKkD,WACnC,GAAA/D,EAAAC,GAAA,EAACC,OAAAA,UACG,GAAAF,EAAAC,GAAA,EAACyE,SAAAA,CACG5E,UAAWmE,IAAAA,sBAAgC,CAC3CU,KAAK,SACLC,QAAS,GAAOjB,EAAUX,YAC1B,GAAAhD,EAAAC,GAAA,EAACC,OAAAA,CAAKJ,UAAU,mBACXsC,EAAE,kCAMnB,GAAApC,EAAAC,GAAA,EAACmE,MAAAA,CAAItE,UAAWmE,IAAAA,sBAAgC,UAC5C,GAAAjE,EAAAC,GAAA,EAACmE,MAAAA,CACGtE,UAAWmE,IAAAA,qBAA+B,CAC1CY,SAAU,GACVC,IAAKxC,WACJX,EAAMoD,GAAG,CAAC,CAACC,EAAMC,IACd,GAAAC,EAAAC,aAAA,EAACC,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACOJ,GAAAA,CACJlD,YAAaA,EACbuD,UAAWxF,EACXyF,MAAOL,EACPM,IAAKN,UAMrB,GAAAjF,EAAAC,GAAA,EAACuE,EAAAA,CAAMA,CAAAA,CAACC,QAAS,CAACX,GAAiBC,WAC/B,GAAA/D,EAAAC,GAAA,EAACC,OAAAA,UACG,GAAAF,EAAAC,GAAA,EAACyE,SAAAA,CACG5E,UAAWmE,IAAAA,uBAAiC,CAC5CU,KAAK,SACLC,QAAS,GAAOlB,EAAWV,YAC3B,GAAAhD,EAAAC,GAAA,EAACC,OAAAA,CAAKJ,UAAU,mBACXsC,EAAE,mCAMlBT,EAAMqC,MAAM,CAAG,GACZ,GAAAhE,EAAAC,GAAA,EAACuF,EAAAA,CACGC,WAAY9D,EAAMqC,MAAM,CACxBJ,mBAAoBA,EACpBG,aAAcA,QAMtC,CAEArC,CAAAA,EAAYjB,SAAS,CAAG,CACpBZ,GAAIa,IAAAA,SAAmB,CAAC,CAACA,IAAAA,MAAgB,CAAEA,IAAAA,MAAgB,CAAC,EAC5DiB,MAAOjB,IAAAA,KAAe,CACtBd,MAAOc,IAAAA,MAAgB,CACvBkB,SAAUlB,IAAAA,MAAgB,CAC1BmB,IAAKnB,IAAAA,MAAgB,CACrBF,KAAME,IAAAA,MAAgB,CACtByB,WAAYzB,IAAAA,MAAgB,CAC5BqB,UAAWrB,IAAAA,IAAc,CACzBgF,cAAehF,IAAAA,IAAc,CAC7BwB,OAAQxB,IAAAA,IAAc,CACtBuB,gBAAiBvB,IAAAA,IAAc,CAC/BsB,cAAetB,IAAAA,MAAgB,CAC/BoB,YAAapB,IAAAA,MAAgB,EAGjC,IAAM0E,EAAkB,OAAC,CACrBO,MAAAA,EAAQ,CAAC,CAAC,CACV/F,MAAAA,EAAQ,EAAE,CACVY,KAAAA,EAAO,EAAE,CACTmE,KAAAA,EAAO,EAAE,CACT7C,YAAAA,EAAc,EAAE,CAChBuD,UAAAA,CAAS,CACTC,MAAAA,CAAK,CACR,CAAAvF,EACS,CAAEqC,EAAAA,CAAC,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,EAAe,UACvB,CAACuD,EAAWC,EAAa,CAAG9E,CAAAA,EAAAA,EAAAA,QAAAA,EAASuE,IAAAA,GAE3CK,EAAQG,CAAAA,EAAAA,EAAAA,CAAAA,EAAeH,GAIvB,IAAMxF,EAAUC,IACZ6D,IAAAA,iBAA2B,CAC3BA,GAAM,CAAC,sBAA2B3D,MAAA,CAALqE,GAAO,EAGlCoB,EAAS,CACXC,SAAU5D,EAAE,2BACZ6D,KAAM7D,EAAE,uBACR8D,OAAQ9D,EAAE,wBACd,EAMA,MAJoB,eAAhBN,GAAgCuD,GAChC7E,CAAAA,EAAO,GAAsB6E,MAAAA,CAAnB7E,EAAK,gBAAwBF,MAAA,CAAV+E,EAAAA,EAI7B,GAAArF,EAAAC,GAAA,EAACkG,IAAgBA,CAACC,SAAU,GAAOP,EAAaP,IAAAA,GAAee,YAC3D,GAAArG,EAAAqE,IAAA,EAAC9D,IAAAA,CAAEC,KAAMA,EAAMV,UAAWK,EAAS0E,SAAUe,EAAY,EAAI,aACzD,GAAA5F,EAAAC,GAAA,EAACmE,MAAAA,CAAItE,UAAWmE,IAAAA,kBAA4B,UACxC,GAAAjE,EAAAC,GAAA,EAACqG,EAAAA,CAAeA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACRX,GAAAA,CACJY,QAAS,GACTC,MAxBN,4DAyBMC,QAAS,QAGjB,GAAAzG,EAAAC,GAAA,EAACmE,MAAAA,CAAItE,UAAWmE,IAAAA,wBAAkC,UAC9C,GAAAjE,EAAAqE,IAAA,EAACqC,KAAAA,CAAG5G,UAAWmE,IAAAA,sBAAgC,WAC1CU,GACG,GAAA3E,EAAAC,GAAA,EAACmE,MAAAA,CACGG,cAAa,GACbzE,UAAWmE,IAAAA,gBAA0B,UACpC8B,CAAM,CAACpB,EAAK,GAGpB/E,WAMzB,CAEAwF,CAAAA,EAAgB3E,SAAS,CAAG,CACxBkF,MAAOjF,IAAAA,MAAgB,CACvBd,MAAOc,IAAAA,MAAgB,CACvBF,KAAME,IAAAA,MAAgB,CACtBiE,KAAMjE,IAAAA,MAAgB,CACtBoB,YAAapB,IAAAA,MAAgB,CAC7B2E,UAAW3E,IAAAA,SAAmB,CAAC,CAACA,IAAAA,MAAgB,CAAEA,IAAAA,MAAgB,CAAC,EACnE4E,MAAO5E,IAAAA,MAAgB,EAG3B,IAAM8E,EAAmB,OAAC,CACtBC,WAAAA,EAAa,CAAC,CACd7B,mBAAAA,EAAqB,CAAC,CACtBG,aAAAA,CAAY,CACf,CAAAhE,QAKG,CAJqB0C,EAAAA,EAAAA,CAAAA,EAAc,CAC/BC,MAAO,eAA6BpC,MAAA,CAAdqC,EAAAA,CAAWA,CAACgE,CAAC,CAAC,MACxC,IAEsB5C,EAKlB,GAAA/D,EAAAC,GAAA,EAACmE,MAAAA,CAAItE,UAAWmE,IAAAA,kBAA4B,UACxC,GAAAjE,EAAAC,GAAA,EAACmE,MAAAA,CAAItE,UAAWmE,IAAAA,oBAA8B,UAC1C,GAAAjE,EAAAC,GAAA,EAACmE,MAAAA,CACGtE,UAAWmE,IAAAA,yBAAmC,CAC9C2C,MAAO,CAAEC,MAAO,GAAsBvG,MAAA,CAAnBsD,EAAmB,IAAG,QAR9C,IAYf,EAEMkD,EAAqB,OAAC,CAAEnF,MAAAA,CAAK,CAAEG,YAAAA,CAAW,CAAE,CAAA/B,EACxC,CAAEqC,EAAAA,CAAC,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,EAAe,UACvBzC,EAEIwC,EAAE,gBADRN,EACQ,oCACA,oCAEZ,MAAO,GAAA9B,EAAAC,GAAA,EAACyB,EAAAA,CAAYgE,cAAe,GAAM/D,MAAOA,EAAO/B,MAAOA,GAClE,EAEMmH,EAAoB,OAAC,CAAEpF,MAAAA,CAAK,CAAEqF,YAAAA,CAAW,CAAE,CAAAjH,EACvC,CAAEqC,EAAAA,CAAC,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,EAAe,UAC7B,MACI,GAAArC,EAAAC,GAAA,EAACyB,EAAAA,CACGgE,cAAe,GACf/D,MAAOA,EACP/B,MAAOwC,EAAE,qBAAsB,CAAE4E,YAAAA,CAAY,IAGzD,CAEAxB,CAAAA,EAAiB/E,SAAS,CAAG,CACzBgF,WAAY/E,IAAAA,MAAgB,CAC5BkD,mBAAoBlD,IAAAA,MAAgB,EAGxCoG,EAAmBrG,SAAS,CAAG,CAC3BkB,MAAOjB,IAAAA,KAAe,CACtBoB,YAAapB,IAAAA,MAAgB,EAEjCqG,EAAkBtG,SAAS,CAAG,CAC1BkB,MAAOjB,IAAAA,KAAe,CACtBoB,YAAapB,IAAAA,MAAgB,CAC7BsG,YAAatG,IAAAA,MAAgB,ECrXjC,IAAAuG,EDyXevF,kCEjXfwF,CAAAA,EAAAC,CAAA,CAdiB,CAACC,EAAMC,EAAMC,KAC1B,IAAIC,EACJ,OAAO,WACH,IAAMC,EAAU,IAAI,CACdC,EAAOC,UACbC,aAAaJ,GACbA,EAAUK,WAAW,KACjBL,EAAU,KACLD,GAAWF,EAAKS,KAAK,CAACL,EAASC,EACxC,EAAGJ,GACCC,GAAa,CAACC,GAASH,EAAKS,KAAK,CAACL,EAASC,EACnD,CACJ,oBCXAK,EAAAC,OAAA,EAAkB,iDCAlBD,EAAAC,OAAA,EAAkB","sources":["webpack://_N_E/./components/AnchorLink/AnchorLink.js","webpack://_N_E/./components/AnchorLink/index.js","webpack://_N_E/./components/ArticleList/ArticleList.js","webpack://_N_E/./components/ArticleList/index.js","webpack://_N_E/./utils/debounce.js","webpack://_N_E/./components/AnchorLink/AnchorLink.module.scss","webpack://_N_E/./components/ArticleList/ArticleList.module.scss"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport s from './AnchorLink.module.scss';\n\nconst AnchorLink = ({ children, title, id, className = '' }) => {\n    if (!id) {\n        return <span>{title || children}</span>;\n    }\n\n    const classes = classNames(s['Root'], 'Anchor', {\n        [`${className}`]: className,\n    });\n    return (\n        <a className={classes} href={`#${id}`} id={id}>\n            <span>{title || children}</span>\n        </a>\n    );\n};\n\nAnchorLink.propTypes = {\n    title: PropTypes.string,\n    id: PropTypes.string,\n    className: PropTypes.string,\n};\n\nexport default AnchorLink;\n","import AnchorLink from './AnchorLink';\n\nexport default AnchorLink;\n","import React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport BackgroundImage from '../BackgroundImage';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport { useTranslation } from 'next-i18next';\n\nimport FadeIn from '../../transitions/FadeIn';\n\nimport { serializeImage } from '../../utils/SerializeImage';\nimport debounce from '../../utils/debounce';\nimport { breakpoints } from '../../constants';\n\nimport classNames from 'classnames';\nimport isEmpty from '../../utils/isEmpty';\nimport useMediaQuery from '../../utils/useMediaQuery';\nimport AnchorLink from '../AnchorLink';\n\nimport styles from './ArticleList.module.scss';\n\nconst useScrollPosition = (elem) => {\n    const [scrollPosition, setScrollPosition] = useState(0);\n\n    const listener = debounce(() => {\n        setScrollPosition(elem.current.scrollLeft);\n    }, 200);\n\n    useEffect(() => {\n        if (!elem.current) {\n            return;\n        }\n\n        const el = elem.current;\n\n        el.addEventListener('scroll', listener, { passive: true });\n        return () => {\n            el.removeEventListener('scroll', listener);\n        };\n    }, [elem, listener]);\n\n    return {\n        scrollPosition,\n    };\n};\n\nconst ArticleList = ({\n    id,\n    items = [],\n    href = '',\n    title = '',\n    preamble = '',\n    usp = '',\n    landingType = '',\n    isPremium = false,\n    whereToGoType = '',\n    isRootWhereToGo = false,\n    isLeaf = false,\n    anchorLink = '',\n    // isLandingPage,\n}) => {\n    const { t } = useTranslation('common');\n    const sliderElement = useRef(null);\n    const { scrollPosition } = useScrollPosition(sliderElement);\n    const isTablet = useMediaQuery({\n        query: `(max-width: ${breakpoints.l}px)`,\n    });\n\n    const keys = [32, 13];\n\n    const slide = (dir, e) => {\n        e.preventDefault();\n\n        if (e.keyCode && keys.indexOf(e.keyCode) === -1) {\n            return;\n        }\n\n        if (!sliderElement.current) {\n            return;\n        }\n\n        const scrollLength = sliderElement.current.clientWidth / 2;\n\n        let scroll = {\n            behavior: 'smooth',\n        };\n\n        if (dir === 'left') {\n            scroll.left = scrollPosition - scrollLength;\n        } else {\n            scroll.left = scrollPosition + scrollLength;\n        }\n\n        sliderElement.current.scroll(scroll);\n    };\n\n    if (isEmpty(items)) {\n        return null;\n    }\n\n    // const isSingle = items.length === 1;\n\n    const slideRight = (e) => slide('right', e);\n    const slideLeft = (e) => slide('left', e);\n\n    const percentageScrolled = sliderElement.current\n        ? (scrollPosition /\n              (sliderElement.current.scrollWidth -\n                  sliderElement.current.clientWidth)) *\n          100\n        : 0;\n    const isAtRightEdge = percentageScrolled === 100;\n\n    const getVisibleItemsCount = () => {\n        if (isTablet) {\n            return 2;\n        } else {\n            return 4;\n        }\n    };\n\n    const visibleItemsCount = getVisibleItemsCount();\n    const isScrollable = items.length > visibleItemsCount;\n\n    const classes = classNames(styles['ArticleList'], {\n        [styles['ArticleList--NonPremium']]: !isPremium,\n        [styles['ArticleList--Premium']]: isPremium,\n        // [styles[\"ArticleList--Single\"]]: isSingle,\n        [styles['ArticleList--Northern']]:\n            isRootWhereToGo && whereToGoType == 'northern-sweden',\n        [styles['ArticleList--Southern']]:\n            isRootWhereToGo && whereToGoType == 'southern-sweden',\n        [styles['ArticleList--Central']]:\n            isRootWhereToGo && whereToGoType == 'middle-sweden',\n        // [styles[\"ArticleList--Narrow\"]]: items.length <= 3 && !isLandingPage,\n        [styles['ArticleList--HasIndicator']]: items.length > 4,\n    });\n\n    const showViewAll = items.length > 4 && !isLeaf;\n\n    const titleClasses = classNames(styles['ArticleList__Title'], {\n        [styles['ArticleList__Title--Linked']]: href,\n        [styles['ArticleList__Title--Arrow']]: showViewAll,\n    });\n\n    return (\n        <div className={classes}>\n            <div className={styles['ArticleList__Container']}>\n                <div className={styles['ArticleList__TextContainer']}>\n                    {href && (\n                        <h2 className={titleClasses}>\n                            <a href={href}>\n                                <span className=\"sr-only\">{title}</span>\n                            </a>\n                            <span>{title}</span>\n\n                            {showViewAll && (\n                                <span\n                                    className={styles['ArticleList__ShowMore']}\n                                    aria-hidden={true}>\n                                    <span\n                                        className={\n                                            styles['ArticleList__ShowMoreText']\n                                        }>\n                                        {t('articleList.viewAll')}\n                                    </span>\n                                </span>\n                            )}\n                        </h2>\n                    )}\n                    {!href && (\n                        <h2 className={styles['ArticleList__Title']}>\n                            <AnchorLink title={title} id={anchorLink} />\n                        </h2>\n                    )}\n                    {(preamble || usp) && (\n                        <div className={styles['ArticleList__Preamble']}>\n                            {usp || preamble}\n                        </div>\n                    )}\n\n                    <div className={styles['ArticleList__Line']} />\n                </div>\n\n                <FadeIn visible={scrollPosition > 0 && isScrollable}>\n                    <span>\n                        <button\n                            className={styles['ArticleList__ArrowLeft']}\n                            type=\"button\"\n                            onClick={(e) => slideLeft(e)}>\n                            <span className=\"sr-only\">\n                                {t('articleList.scrollLeft')}\n                            </span>\n                        </button>\n                    </span>\n                </FadeIn>\n\n                <div className={styles['ArticleList__SlideWrap']}>\n                    <div\n                        className={styles['ArticleList__Slidable']}\n                        tabIndex={-1}\n                        ref={sliderElement}>\n                        {items.map((item, i) => (\n                            <ArticleListCard\n                                {...item}\n                                landingType={landingType}\n                                landingId={id}\n                                index={i}\n                                key={i}\n                            />\n                        ))}\n                    </div>\n                </div>\n\n                <FadeIn visible={!isAtRightEdge && isScrollable}>\n                    <span>\n                        <button\n                            className={styles['ArticleList__ArrowRight']}\n                            type=\"button\"\n                            onClick={(e) => slideRight(e)}>\n                            <span className=\"sr-only\">\n                                {t('articleList.scrollRight')}\n                            </span>\n                        </button>\n                    </span>\n                </FadeIn>\n\n                {items.length > 3 && (\n                    <ArticleListPager\n                        itemsCount={items.length}\n                        percentageScrolled={percentageScrolled}\n                        isScrollable={isScrollable}\n                    />\n                )}\n            </div>\n        </div>\n    );\n};\n\nArticleList.propTypes = {\n    id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    items: PropTypes.array,\n    title: PropTypes.string,\n    preamble: PropTypes.string,\n    usp: PropTypes.string,\n    href: PropTypes.string,\n    anchorLink: PropTypes.string,\n    isPremium: PropTypes.bool,\n    isLandingPage: PropTypes.bool,\n    isLeaf: PropTypes.bool,\n    isRootWhereToGo: PropTypes.bool,\n    whereToGoType: PropTypes.string,\n    landingType: PropTypes.string,\n};\n\nconst ArticleListCard = ({\n    image = {},\n    title = '',\n    href = '',\n    type = '',\n    landingType = '',\n    landingId,\n    index,\n}) => {\n    const { t } = useTranslation('common');\n    const [isVisible, setIsVisible] = useState(index === 0);\n\n    image = serializeImage(image);\n\n    const sizes = '(max-width: 768px) 100vw, (max-width: 1280px) 50vw, 375px';\n\n    const classes = classNames(\n        styles['ArticleList__Card'],\n        styles[`ArticleList__Card--${type}`]\n    );\n\n    const tagMap = {\n        external: t('articleList.tagExternal'),\n        city: t('articleList.tagCity'),\n        region: t('articleList.tagRegion'),\n    };\n\n    if (landingType === 'what-to-do' && landingId) {\n        href = `${href}?what_to_do=${landingId}`;\n    }\n\n    return (\n        <VisibilitySensor onChange={(x) => setIsVisible(index === 0 || x)}>\n            <a href={href} className={classes} tabIndex={isVisible ? 0 : -1}>\n                <div className={styles['ArticleList__Image']}>\n                    <BackgroundImage\n                        {...image}\n                        quality={60}\n                        sizes={sizes}\n                        hideAlt={true}\n                    />\n                </div>\n                <div className={styles['ArticleList__CardContent']}>\n                    <h3 className={styles['ArticleList__CardTitle']}>\n                        {type && (\n                            <div\n                                aria-hidden={true}\n                                className={styles['ArticleList__Tag']}>\n                                {tagMap[type]}\n                            </div>\n                        )}\n                        {title}\n                    </h3>\n                </div>\n            </a>\n        </VisibilitySensor>\n    );\n};\n\nArticleListCard.propTypes = {\n    image: PropTypes.object,\n    title: PropTypes.string,\n    href: PropTypes.string,\n    type: PropTypes.string,\n    landingType: PropTypes.string,\n    landingId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    index: PropTypes.number,\n};\n\nconst ArticleListPager = ({\n    itemsCount = 0,\n    percentageScrolled = 0,\n    isScrollable,\n}) => {\n    const isResponsive = useMediaQuery({\n        query: `(max-width: ${breakpoints.m}px)`,\n    });\n\n    if (!isResponsive && !isScrollable) {\n        return null;\n    }\n\n    return (\n        <div className={styles['ArticleList__Pager']}>\n            <div className={styles['ArticleList__PagerBg']}>\n                <div\n                    className={styles['ArticleList__PagerContent']}\n                    style={{ width: `${percentageScrolled}%` }}></div>\n            </div>\n        </div>\n    );\n};\n\nconst GeneralArticleList = ({ items, landingType }) => {\n    const { t } = useTranslation('common');\n    const title =\n        landingType === 'where-to-go'\n            ? t('articleList.generalWhereToGoTitle')\n            : t('articleList.generalWhatToDoTitle');\n\n    return <ArticleList isLandingPage={true} items={items} title={title} />;\n};\n\nconst MoreInArticleList = ({ items, parentTitle }) => {\n    const { t } = useTranslation('common');\n    return (\n        <ArticleList\n            isLandingPage={true}\n            items={items}\n            title={t('articleList.moreIn', { parentTitle })}\n        />\n    );\n};\n\nArticleListPager.propTypes = {\n    itemsCount: PropTypes.number,\n    percentageScrolled: PropTypes.number,\n};\n\nGeneralArticleList.propTypes = {\n    items: PropTypes.array,\n    landingType: PropTypes.string,\n};\nMoreInArticleList.propTypes = {\n    items: PropTypes.array,\n    landingType: PropTypes.string,\n    parentTitle: PropTypes.string,\n};\n\nexport { GeneralArticleList, MoreInArticleList };\nexport default ArticleList;\n","import ArticleList, {\n    GeneralArticleList,\n    MoreInArticleList,\n} from './ArticleList';\n\nexport { GeneralArticleList, MoreInArticleList };\nexport default ArticleList;\n","const debounce = (func, wait, immediate) => {\n    let timeout;\n    return function () {\n        const context = this;\n        const args = arguments;\n        clearTimeout(timeout);\n        timeout = setTimeout(() => {\n            timeout = null;\n            if (!immediate) func.apply(context, args);\n        }, wait);\n        if (immediate && !timeout) func.apply(context, args);\n    };\n};\n\nexport default debounce;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Root\":\"AnchorLink_Root__gIFSV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ArticleList__Container\":\"ArticleList_ArticleList__Container__91s7N\",\"ArticleList--Premium\":\"ArticleList_ArticleList--Premium__i72Fs\",\"ArticleList__Title\":\"ArticleList_ArticleList__Title__xeyBI\",\"ArticleList__Link\":\"ArticleList_ArticleList__Link__PFaoD\",\"ArticleList__CardTitle\":\"ArticleList_ArticleList__CardTitle__zHO0c\",\"ArticleList--NonPremium\":\"ArticleList_ArticleList--NonPremium__VJYrp\",\"ArticleList__Preamble\":\"ArticleList_ArticleList__Preamble__XC3U6\",\"ArticleList__ShowMore\":\"ArticleList_ArticleList__ShowMore__BYeb9\",\"ArticleList\":\"ArticleList_ArticleList__D4ulu\",\"ArticleList--HasIndicator\":\"ArticleList_ArticleList--HasIndicator__5YByf\",\"ArticleList__TextContainer\":\"ArticleList_ArticleList__TextContainer__pP67j\",\"ArticleList--Northern\":\"ArticleList_ArticleList--Northern__V6_1I\",\"ArticleList--Southern\":\"ArticleList_ArticleList--Southern__rntrZ\",\"ArticleList--Central\":\"ArticleList_ArticleList--Central__zJ0YA\",\"ArticleList__ShowMoreText\":\"ArticleList_ArticleList__ShowMoreText__22TYA\",\"ArticleList__Title--Linked\":\"ArticleList_ArticleList__Title--Linked__XttiH\",\"ArticleList__Line\":\"ArticleList_ArticleList__Line__ps0C3\",\"ArticleList__SlideWrap\":\"ArticleList_ArticleList__SlideWrap__fNLX8\",\"ArticleList__Slidable\":\"ArticleList_ArticleList__Slidable__cQzxZ\",\"ArticleList__Image\":\"ArticleList_ArticleList__Image__2e4KB\",\"ArticleList--Narrow\":\"ArticleList_ArticleList--Narrow__jLB8N\",\"BackgroundImage__Image\":\"ArticleList_BackgroundImage__Image__wgHDg\",\"ArticleList__Card\":\"ArticleList_ArticleList__Card__Yqt_U\",\"ArticleList--Single\":\"ArticleList_ArticleList--Single__YL6A3\",\"ArticleList__CardContent\":\"ArticleList_ArticleList__CardContent__AChYx\",\"ArticleList__Card--city\":\"ArticleList_ArticleList__Card--city__ukdX9\",\"ArticleList__Card--region\":\"ArticleList_ArticleList__Card--region__gR_Pi\",\"ArticleList__Card--external\":\"ArticleList_ArticleList__Card--external__abZcP\",\"ArticleList__Tag\":\"ArticleList_ArticleList__Tag__WNuHr\",\"ArticleList__ArrowRight\":\"ArticleList_ArticleList__ArrowRight__j1wA6\",\"ArticleList__ArrowLeft\":\"ArticleList_ArticleList__ArrowLeft__33Pbf\",\"ArticleList__Pager\":\"ArticleList_ArticleList__Pager__Ooor4\",\"ArticleList__PagerBg\":\"ArticleList_ArticleList__PagerBg__6qxwF\",\"ArticleList__PagerContent\":\"ArticleList_ArticleList__PagerContent__I2UUD\"};"],"names":["AnchorLink","children","title","id","className","param","jsx_runtime","jsx","span","classes","classNames","s","concat","a","href","propTypes","PropTypes","components_AnchorLink","useScrollPosition","scrollPosition","setScrollPosition","useState","listener","debounce","elem","current","scrollLeft","useEffect","el","addEventListener","passive","removeEventListener","ArticleList","items","preamble","usp","landingType","isPremium","whereToGoType","isRootWhereToGo","isLeaf","anchorLink","t","useTranslation","sliderElement","useRef","isTablet","useMediaQuery","query","breakpoints","l","keys","slide","dir","e","preventDefault","keyCode","indexOf","scrollLength","clientWidth","scroll","behavior","left","isEmpty","slideRight","slideLeft","percentageScrolled","scrollWidth","isAtRightEdge","isScrollable","length","styles","showViewAll","titleClasses","div","jsxs","h2","aria-hidden","FadeIn","visible","button","type","onClick","tabIndex","ref","map","item","i","react","createElement","ArticleListCard","landingId","index","key","ArticleListPager","itemsCount","isLandingPage","image","isVisible","setIsVisible","serializeImage","tagMap","external","city","region","VisibilitySensor","onChange","x","BackgroundImage","quality","sizes","hideAlt","h3","m","style","width","GeneralArticleList","MoreInArticleList","parentTitle","components_ArticleList","__webpack_exports__","Z","func","wait","immediate","timeout","context","args","arguments","clearTimeout","setTimeout","apply","module","exports"],"sourceRoot":""}