{"version":3,"file":"static/chunks/8217.29eabe0fa4e37d05.js","mappings":"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","sources":["webpack://_N_E/./components/AnchorLink/AnchorLink.js","webpack://_N_E/./components/AnchorLink/index.js","webpack://_N_E/./components/CookieOverlay/CookieOverlay.js","webpack://_N_E/./components/CookieOverlay/index.js","webpack://_N_E/./components/LinkList/LinkList.js","webpack://_N_E/./components/LinkList/index.js","webpack://_N_E/./components/Map/Map.js","webpack://_N_E/./components/Map/index.js","webpack://_N_E/./components/MapExpander/MapExpander.js","webpack://_N_E/./components/MapExpander/index.js","webpack://_N_E/./components/MapInfoWindow/MapInfoWindow.js","webpack://_N_E/./components/MapInfoWindow/index.js","webpack://_N_E/./components/AnchorLink/AnchorLink.module.scss","webpack://_N_E/./components/CookieOverlay/CookieOverlay.module.scss","webpack://_N_E/./components/LinkList/LinkList.module.scss","webpack://_N_E/./components/Map/Map.module.scss","webpack://_N_E/./components/MapExpander/MapExpander.module.scss","webpack://_N_E/./components/MapInfoWindow/MapInfoWindow.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 PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport styles from './CookieOverlay.module.scss';\nimport Button from '../Button';\n\nconst CookieOverlay = ({\n    text,\n    buttonText,\n    modifiers = [],\n    handleClick,\n    icon,\n}) => {\n    const classes = classNames(\n        styles['CookieOverlay'],\n        modifiers.map((modifier) => styles[`CookieOverlay--${modifier}`])\n    );\n\n    return (\n        <div className={classes}>\n            <p\n                className={styles['CookieOverlay__Text']}\n                dangerouslySetInnerHTML={{ __html: text }}\n            />\n            <Button\n                type=\"Primary\"\n                onClick={handleClick}\n                text={buttonText}\n                icon={icon}\n            />\n        </div>\n    );\n};\n\nCookieOverlay.propTypes = {\n    text: PropTypes.string,\n    buttonText: PropTypes.string,\n    modifiers: PropTypes.arrayOf(PropTypes.string),\n    handleClick: PropTypes.func,\n    icon: PropTypes.string,\n};\n\nCookieOverlay.defaultProps = {};\n\nexport default CookieOverlay;\n","import CookieOverlay from './CookieOverlay';\n\nexport default CookieOverlay;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport AnchorLink from '../AnchorLink';\nimport isEmpty from '../../utils/isEmpty';\nimport styles from './LinkList.module.scss';\n\nconst LinkList = ({ heading, anchorLink, items }) => {\n    return (\n        <div className={styles['LinkList']}>\n            <h2 className={styles['LinkList__Heading']}>\n                <AnchorLink\n                    classNames={styles['LinkList__Heading']}\n                    title={heading}\n                    id={anchorLink}\n                />\n            </h2>\n            <div className={styles['LinkList__Links']}>\n                {items.map((link, index) => (\n                    <Link {...link} key={index} />\n                ))}\n            </div>\n        </div>\n    );\n};\n\nLinkList.propTypes = {\n    heading: PropTypes.string,\n    anchorLink: PropTypes.string,\n    items: PropTypes.arrayOf(\n        PropTypes.shape({\n            href: PropTypes.string,\n            title: PropTypes.string,\n            description: PropTypes.string,\n            type: PropTypes.string,\n        })\n    ),\n};\n\nLinkList.defaultProps = {\n    heading: '',\n    anchorLink: '',\n    items: [],\n};\n\nconst Link = ({ href, title, description, type }) => {\n    const classes = classNames(\n        styles['LinkList__Link'],\n        styles[`LinkList__Link--${type}`],\n        {\n            [styles['LinkList__Link--HasDescription']]: !isEmpty(description),\n        }\n    );\n\n    return (\n        <a className={classes} href={href}>\n            <span className={styles['LinkList__Title']}>{title}</span>\n            {description && (\n                <span className={styles['LinkList__Description']}>\n                    {description}\n                </span>\n            )}\n        </a>\n    );\n};\n\nLink.propTypes = {\n    href: PropTypes.string,\n    title: PropTypes.string,\n    description: PropTypes.string,\n    type: PropTypes.string,\n};\n\nLink.defaultProps = {\n    href: '',\n    title: '',\n    description: '',\n    type: '',\n};\n\nexport default LinkList;\n","import LinkList from './LinkList';\n\nexport default LinkList;\n","import React, { useEffect, useState, useContext } from 'react';\nimport classNames from 'classnames';\nimport { renderToString } from 'react-dom/server';\nimport PropTypes from 'prop-types';\nimport styles from './Map.module.scss';\nimport GoogleMapReact from 'google-map-react';\nimport BaseContext from '../../containers/BasePage/BaseContext';\nimport CookieOverlay from '../CookieOverlay';\nimport MapInfoWindow from '../MapInfoWindow';\nimport { CookieStateContext } from '../../containers/BasePage/state';\nimport { useTranslation } from 'next-i18next';\n\nconst createMapOptions = () => {\n    return {\n        clickableIcons: false,\n        clickableLabels: false,\n        fullscreenControl: false,\n        maxZoom: 17,\n    };\n};\n\nconst Map = ({\n    apiKey,\n    items = [],\n    newTab = false,\n    zoomLevel = 17,\n    untranslatedModifiers = [],\n}) => {\n    const { googleMapsApiKey } = useContext(BaseContext);\n    const mapApiKey = apiKey || googleMapsApiKey;\n\n    const { t } = useTranslation('common');\n\n    const [map, setMap] = useState(null);\n    const [maps, setMaps] = useState(null);\n    const [isMapReady, setIsMapReady] = useState(false);\n    const [mapBounds, setMapBounds] = useState(null);\n    const [infoWindow, setInfoWindow] = useState(null);\n    const [showMapWithoutCookieConsent, setShowMapWithoutCookieConsent] =\n        useState(false);\n\n    const { state } = useContext(CookieStateContext) || {};\n    const cookieConsent = state?.categories?.includes('targeting');\n\n    const itemGroups =\n        items && items.length > 0\n            ? items.reduce((acc, item) => {\n                  const key = item?.type === 'route' ? 'routes' : 'pois';\n                  if (!acc[key]) {\n                      acc[key] = [];\n                  }\n                  acc[key].push(item);\n                  return acc;\n              }, {})\n            : {};\n\n    const pois = itemGroups?.pois || [];\n    const routes = itemGroups?.routes || [];\n    const readMoreText = t('map.readMore');\n\n    const triggerInfoWindow = ({ lat, lng, text, address, href, readMore }) => {\n        infoWindow.setPosition({ lat: parseFloat(lat), lng: parseFloat(lng) });\n        infoWindow.setContent(\n            renderToString(\n                <MapInfoWindow\n                    title={text || address}\n                    href={href}\n                    newTab={newTab}\n                    readMore={readMore || readMoreText}\n                />\n            )\n        );\n        infoWindow.open(map);\n    };\n\n    useEffect(() => {\n        if (infoWindow && items.length === 1) {\n            const item = items[0];\n            triggerInfoWindow(item);\n        }\n    }, [infoWindow]);\n\n    useEffect(() => {\n        if (!maps || !map) return;\n\n        if (pois.length === 1 && routes.length <= 0) {\n            /* Center map on single point */\n            const center = new maps.LatLng(items[0].lat, items[0].lng);\n            map.setCenter(center);\n            setIsMapReady(true);\n        } else if (items.length >= 1) {\n            let bounds = new maps.LatLngBounds();\n            let processedRoutesCount = 0;\n            let kmlLayers = [];\n\n            items.forEach(({ lat, lng }) => {\n                bounds.extend(\n                    new maps.LatLng(parseFloat(lat), parseFloat(lng))\n                );\n            });\n\n            if (routes.length > 0) {\n                // Load each KML layer and check if it's loaded\n                routes.forEach((item) => {\n                    const routeTitle = item.text || item.address;\n                    const kmlLayer = new maps.KmlLayer({\n                        url: `https://www.google.com/maps/d/kml?mid=${item.route}`,\n                        map: map,\n                        title: routeTitle,\n                        suppressInfoWindows: true, // Disable default info window\n                    });\n                    kmlLayers.push(kmlLayer);\n\n                    maps.event.addListener(kmlLayer, 'click', () => {\n                        triggerInfoWindow(item);\n                    });\n\n                    // Listen for when metadata (including viewport) is ready\n                    maps.event.addListenerOnce(\n                        kmlLayer,\n                        'metadata_changed',\n                        () => {\n                            if (kmlLayer.getDefaultViewport()) {\n                                bounds.union(kmlLayer.getDefaultViewport());\n                            }\n                            processedRoutesCount++;\n\n                            // If all routes are processed (successfully or failed), finalize bounds\n                            if (processedRoutesCount === routes.length) {\n                                setMapBounds(bounds);\n                                setIsMapReady(true);\n                            }\n                        }\n                    );\n\n                    // Handle KML layer errors explicitly\n                    maps.event.addListener(kmlLayer, 'status_changed', () => {\n                        if (kmlLayer.getStatus() !== maps.KmlLayerStatus.OK) {\n                            console.error(\n                                `Failed to load route: ${routeTitle}`\n                            );\n                            processedRoutesCount++; // Count failed loads too\n\n                            if (processedRoutesCount === routes.length) {\n                                setMapBounds(bounds);\n                                setIsMapReady(true);\n                            }\n                        }\n                    });\n                });\n            } else {\n                // If no routes, fit bounds with only item positions\n                setMapBounds(bounds);\n                setIsMapReady(true);\n            }\n        }\n    }, [maps, map]);\n\n    // Fit map bounds when ready\n    useEffect(() => {\n        if (isMapReady && mapBounds) {\n            map.fitBounds(mapBounds);\n        }\n    }, [isMapReady, mapBounds]);\n\n    const center = {\n        lat: parseFloat(60.95),\n        lng: parseFloat(20.33),\n    };\n\n    const classes = classNames(\n        styles['Map'],\n        'Map',\n        untranslatedModifiers.map((x) => styles[x])\n    );\n\n    return (\n        <div className={classes}>\n            <div className={styles['Map__Container']}>\n                {!(cookieConsent || showMapWithoutCookieConsent) && (\n                    <CookieOverlay\n                        text={t('map.cookieText')}\n                        buttonText={t('map.cookieButton')}\n                        modifiers={['Map']}\n                        handleClick={() => {\n                            setShowMapWithoutCookieConsent(true);\n                        }}\n                    />\n                )}\n                {(cookieConsent || showMapWithoutCookieConsent) && (\n                    <GoogleMapReact\n                        onClick={() => {\n                            if (infoWindow) {\n                                infoWindow.close();\n                            }\n                        }}\n                        defaultCenter={center}\n                        options={createMapOptions}\n                        bootstrapURLKeys={{ key: mapApiKey }}\n                        yesIWantToUseGoogleMapApiInternals\n                        tabIndex={-1}\n                        onGoogleApiLoaded={({ map, maps }) => {\n                            setMap(map);\n                            setMaps(maps);\n                            setInfoWindow(new maps.InfoWindow());\n                        }}\n                        defaultZoom={zoomLevel}>\n                        {pois.map((item, i) => (\n                            <Pin\n                                key={i}\n                                onClick={() => triggerInfoWindow(item)}\n                                {...item}\n                            />\n                        ))}\n                    </GoogleMapReact>\n                )}\n            </div>\n        </div>\n    );\n};\n\nMap.propTypes = {\n    items: PropTypes.array.isRequired,\n    apiKey: PropTypes.string.isRequired,\n    newTab: PropTypes.bool,\n    zoomLevel: PropTypes.number,\n    untranslatedModifiers: PropTypes.arrayOf(PropTypes.string),\n};\n\nconst Pin = ({ lng, lat, onClick }) => {\n    return (\n        <button\n            onClick={onClick}\n            lat={parseFloat(lat)}\n            lng={parseFloat(lng)}\n            className={styles['Map__Poi']}\n        />\n    );\n};\n\nPin.propTypes = {\n    map: PropTypes.object,\n    lng: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    lat: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    title: PropTypes.string,\n    href: PropTypes.string,\n    newTab: PropTypes.bool,\n};\n\nexport default Map;\n","import Map from './Map';\n\nexport default Map;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './MapExpander.module.scss';\nimport isEmpty from '../../utils/isEmpty';\nimport Map from '../Map';\nimport { useTranslation } from 'next-i18next';\n\nconst MapExpander = ({ googleMapsApiKey, items = [], zoomLevel = 14 }) => {\n    const { t } = useTranslation('common');\n    const [isOpen, setIsOpen] = useState(false);\n\n    if (isEmpty(items)) {\n        return null;\n    }\n\n    items = items.map((item) => ({\n        ...item,\n        readMore: item?.url ? null : t('mapExpander.goToMap'),\n        href:\n            item?.url ||\n            `https://maps.google.com/maps/dir/${item.lat},${item.lng}/@${item.lat},${item.lng},16z`,\n    }));\n\n    return (\n        <div className={styles['MapExpander']}>\n            <button\n                onClick={() => setIsOpen((p) => !p)}\n                aria-controls=\"article_map\"\n                aria-expanded={isOpen}\n                className={styles['MapExpander__Button']}>\n                {t('mapExpander.defaultIfNoAddress')}\n            </button>\n            {isOpen && (\n                <div className={styles['MapExpander__Expand']}>\n                    <Map\n                        apiKey={googleMapsApiKey}\n                        items={items}\n                        newTab\n                        zoomLevel={zoomLevel}\n                        untranslatedModifiers={['Map--InExpander']}\n                    />\n                </div>\n            )}\n        </div>\n    );\n};\n\nMapExpander.propTypes = {\n    googleMapsApiKey: PropTypes.string,\n    items: PropTypes.array,\n    zoomLevel: PropTypes.number,\n};\n\nexport default MapExpander;\n","import MapExpander from './MapExpander';\n\nexport default MapExpander;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'next-i18next';\nimport classNames from 'classnames';\nimport { serializeImage } from '../../utils/SerializeImage';\nimport BackgroundImage from '../BackgroundImage';\nimport styles from './MapInfoWindow.module.scss';\n\nconst MapInfoWindow = ({\n    href = '',\n    readMore,\n    title = '',\n    image = {},\n    newTab = false,\n}) => {\n    const { t } = useTranslation('common');\n\n    const isExternalLink = href && !href.includes('.visitsweden.');\n    const isGoogleMapsLink = href && href.includes('maps.google.com');\n    const url = href && !isExternalLink ? `${href}?from_map=1` : href;\n\n    // These translations doesn't seem to work, maybe loaded too late, so make sure text is passed to this component\n    const defaultReadMore = isGoogleMapsLink\n        ? t('mapInfoWindow.goToMap')\n        : t('mapInfoWindow.readMore');\n    const readMoreText = readMore || defaultReadMore;\n\n    const serializedImage = serializeImage(image);\n    const sizes = '95px';\n    const hasImage = image && image?.src;\n\n    const classes = classNames(\n        styles['MapInfoWindow'],\n        { [styles['MapInfoWindow--HasImage']]: hasImage },\n        { [styles['MapInfoWindow--External']]: isExternalLink }\n    );\n\n    return (\n        <div className={classes}>\n            <a\n                className={styles['MapInfoWindow__Link']}\n                href={url}\n                target={newTab || isExternalLink ? '_blank' : '_self'}\n                rel=\"noreferrer\"\n                aria-label={`${title}: ${readMoreText}`}\n            />\n            <div className={styles['MapInfoWindow__Container']}>\n                {hasImage && (\n                    <div className={styles['MapInfoWindow__Image']}>\n                        <BackgroundImage\n                            {...serializedImage}\n                            sizes={sizes}\n                            quality={60}\n                            shouldLazyLoad={false}\n                            hideAlt={true}\n                        />\n                    </div>\n                )}\n                <div className={styles['MapInfoWindow__Content']}>\n                    <div className={styles['MapInfoWindow__Text']}>{title}</div>\n                    <div className={styles['MapInfoWindow__ReadMore']}>\n                        {readMoreText}\n                    </div>\n                </div>\n            </div>\n        </div>\n    );\n};\n\nMapInfoWindow.propTypes = {\n    href: PropTypes.string,\n    title: PropTypes.string,\n    image: PropTypes.object,\n    newTab: PropTypes.bool,\n};\n\nMapInfoWindow.defaultProps = {\n    href: '',\n    title: '',\n    image: {},\n    newTab: false,\n};\n\nexport default MapInfoWindow;\n","import MapInfoWindow from './MapInfoWindow';\n\nexport default MapInfoWindow;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Root\":\"AnchorLink_Root__gIFSV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"CookieOverlay\":\"CookieOverlay_CookieOverlay__IOd5K\",\"CookieOverlay--Map\":\"CookieOverlay_CookieOverlay--Map__eDiam\",\"CookieOverlay--VideoSegment\":\"CookieOverlay_CookieOverlay--VideoSegment__j_A7v\",\"CookieOverlay__Text\":\"CookieOverlay_CookieOverlay__Text__b0dqw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"LinkList__Heading\":\"LinkList_LinkList__Heading__tXU5A\",\"LinkList__Description\":\"LinkList_LinkList__Description__ONowf\",\"LinkList__Title\":\"LinkList_LinkList__Title__mzK56\",\"LinkList__Links\":\"LinkList_LinkList__Links__lIjmK\",\"LinkList__Link\":\"LinkList_LinkList__Link__7_sNd\",\"LinkList__Link--HasDescription\":\"LinkList_LinkList__Link--HasDescription__jLWtu\",\"LinkList__Link--Link\":\"LinkList_LinkList__Link--Link__mzsNb\",\"LinkList__Link--Document\":\"LinkList_LinkList__Link--Document__KyOr9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Map\":\"Map_Map__mQv1G\",\"Map__Container\":\"Map_Map__Container__DhtCh\",\"Map__Poi\":\"Map_Map__Poi__CCJNu\",\"Map--InExpander\":\"Map_Map--InExpander__UjBSQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MapExpander\":\"MapExpander_MapExpander__vT1vS\",\"MapExpander__Button\":\"MapExpander_MapExpander__Button__ai6nl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MapInfoWindow__Text\":\"MapInfoWindow_MapInfoWindow__Text__WFD72\",\"MapInfoWindow\":\"MapInfoWindow_MapInfoWindow__1wlBM\",\"MapInfoWindow__Link\":\"MapInfoWindow_MapInfoWindow__Link__aA8Et\",\"MapInfoWindow__Container\":\"MapInfoWindow_MapInfoWindow__Container__gR1VW\",\"MapInfoWindow__Content\":\"MapInfoWindow_MapInfoWindow__Content__7OWmt\",\"MapInfoWindow__Image\":\"MapInfoWindow_MapInfoWindow__Image__K60Ai\",\"MapInfoWindow__ReadMore\":\"MapInfoWindow_MapInfoWindow__ReadMore__swvYi\",\"MapInfoWindow--External\":\"MapInfoWindow_MapInfoWindow--External__B8XLs\"};"],"names":["AnchorLink","children","title","id","className","param","jsx_runtime","jsx","span","classes","classNames","s","concat","a","href","propTypes","PropTypes","components_AnchorLink","CookieOverlay","text","buttonText","modifiers","handleClick","icon","styles","map","modifier","jsxs","div","p","dangerouslySetInnerHTML","__html","Button","type","onClick","defaultProps","components_CookieOverlay","LinkList","heading","anchorLink","items","h2","link","index","react","createElement","Link","key","description","isEmpty","components_LinkList","createMapOptions","clickableIcons","clickableLabels","fullscreenControl","maxZoom","Map","state","apiKey","newTab","zoomLevel","untranslatedModifiers","googleMapsApiKey","useContext","BaseContext","t","useTranslation","setMap","useState","maps","setMaps","isMapReady","setIsMapReady","mapBounds","setMapBounds","infoWindow","setInfoWindow","showMapWithoutCookieConsent","setShowMapWithoutCookieConsent","CookieStateContext","cookieConsent","categories","includes","itemGroups","length","reduce","acc","item","push","pois","routes","readMoreText","triggerInfoWindow","lat","lng","address","readMore","setPosition","parseFloat","setContent","renderToString","MapInfoWindow","open","useEffect","center","LatLng","setCenter","bounds","LatLngBounds","processedRoutesCount","kmlLayers","forEach","extend","routeTitle","kmlLayer","KmlLayer","url","route","suppressInfoWindows","event","addListener","addListenerOnce","getDefaultViewport","union","getStatus","KmlLayerStatus","OK","console","error","fitBounds","x","GoogleMapReact","close","defaultCenter","options","bootstrapURLKeys","yesIWantToUseGoogleMapApiInternals","tabIndex","onGoogleApiLoaded","InfoWindow","defaultZoom","i","Pin","isRequired","button","components_Map","MapExpander","isOpen","setIsOpen","_object_spread_props","_","_object_spread","aria-controls","aria-expanded","components_MapExpander","image","isExternalLink","isGoogleMapsLink","defaultReadMore","serializedImage","serializeImage","hasImage","src","target","rel","aria-label","BackgroundImage","sizes","quality","shouldLazyLoad","hideAlt","components_MapInfoWindow","module","exports"],"sourceRoot":""}