{"version":3,"file":"static/js/657.f4729f0f.chunk.js","mappings":"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","sources":["assets/images/crosshair.svg","components/interactive-map/timeline/index.js","components/interactive-map/overlapping-pins/index.js","components/interactive-map/index.js","components/interactive-map-wrapper/index.js"],"sourcesContent":["var _path, _path2, _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgCrosshair(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 25,\n height: 24,\n viewBox: \"0 0 25 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.5 12C1.5 5.9 6.4 1 12.5 1C18.6 1 23.5 5.9 23.5 12C23.5 18.1 18.6 23 12.5 23C6.4 23 1.5 18.1 1.5 12ZM13.5 18V20.9C17.7 20.5 21 17.2 21.4 13H18.5C17.9 13 17.5 12.6 17.5 12C17.5 11.4 17.9 11 18.5 11H21.4C21 6.9 17.7 3.6 13.5 3.1V6C13.5 6.6 13.1 7 12.5 7C11.9 7 11.5 6.6 11.5 6V3.1C7.3 3.5 4 6.8 3.6 11H6.5C7.1 11 7.5 11.4 7.5 12C7.5 12.6 7.1 13 6.5 13H3.6C4 17.1 7.3 20.4 11.5 20.9V18C11.5 17.4 11.9 17 12.5 17C13.1 17 13.5 17.4 13.5 18Z\",\n fill: \"#534D67\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_2445_74395\",\n style: {\n maskType: \"luminance\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 1,\n y: 1,\n width: 23,\n height: 22\n }, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.5 12C1.5 5.9 6.4 1 12.5 1C18.6 1 23.5 5.9 23.5 12C23.5 18.1 18.6 23 12.5 23C6.4 23 1.5 18.1 1.5 12ZM13.5 18V20.9C17.7 20.5 21 17.2 21.4 13H18.5C17.9 13 17.5 12.6 17.5 12C17.5 11.4 17.9 11 18.5 11H21.4C21 6.9 17.7 3.6 13.5 3.1V6C13.5 6.6 13.1 7 12.5 7C11.9 7 11.5 6.6 11.5 6V3.1C7.3 3.5 4 6.8 3.6 11H6.5C7.1 11 7.5 11.4 7.5 12C7.5 12.6 7.1 13 6.5 13H3.6C4 17.1 7.3 20.4 11.5 20.9V18C11.5 17.4 11.9 17 12.5 17C13.1 17 13.5 17.4 13.5 18Z\",\n fill: \"white\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_2445_74395)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.5 0H24.5V24H0.5V0Z\",\n fill: \"#534D67\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCrosshair);\nexport default __webpack_public_path__ + \"static/media/crosshair.0649a811ae10e3645503efa5ada641aa.svg\";\nexport { ForwardRef as ReactComponent };","import { Trans } from \"@lingui/macro\";\nimport { useEffect, useState } from \"react\";\n\nimport './style.scss'\nimport crosshair from '@assets/images/crosshair.svg'\n\nconst Timeline = ({ markerData, timelineRefs, config, handleMarkerClick, handleRecenterClick, onTimelineOpen }) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const toggle = () => {\n setIsOpen(!isOpen)\n onTimelineOpen(isOpen)\n }\n\n const recenter = () => {\n handleRecenterClick()\n }\n\n useEffect(() => {\n if (config) {\n setIsOpen(config?.timeLineOptions?.isOpen)\n }\n }, [config])\n return (\n
\n
\n
\n {markerData?.map((marker, i) => (\n
handleMarkerClick(i, marker.name)}>\n
\n {marker?.children?.timelineChildren}\n
\n
\n ))}\n
\n
\n\n {config?.timeLineOptions?.showToggle &&\n
\n {isOpen ?
Close
:
}\n
\n }\n\n {config?.timeLineOptions?.showRecenter &&\n
\n
Recentre \"\"
\n
\n }\n
\n )\n}\n\nexport default Timeline","\nimport { useState, createRef } from \"react\";\nimport { Marker } from 'react-map-gl';\n\nimport './style.scss'\n\nconst OverLappingPins = ({ pins, index, mapRefs, overlappingPinsRefs, config, handleMarkerClick }) => {\n const [isCollapsed, setIsCollapsed] = useState(false);\n\n return (\n \n
\n
\n
handleMarkerClick(pins[0]?.markerIndex)} ref={mapRefs?.current[pins[0]?.markerIndex] ?? createRef()}> {pins[0]?.children?.mapChildren}
\n
\n
\n {pins.map((marker, i) => (\n
handleMarkerClick(marker?.markerIndex)} ref={mapRefs?.current[marker?.markerIndex] ?? createRef()}>{marker?.children?.mapChildren}
\n ))}\n
\n\n {pins.length > 3 &&\n
setIsCollapsed(!isCollapsed)} className='collapse'>\n {isCollapsed ? : }\n
\n }\n
\n
\n
\n
\n )\n}\n\nexport default OverLappingPins","import React, { useCallback, useRef, createRef, useEffect, useState } from 'react';\nimport { useGlobalEnvConfig } from \"@environment/GlobalEnvConfigProvider\";\nimport { Map, Marker, Source, Layer, NavigationControl } from 'react-map-gl';\nimport mapboxgl from 'mapbox-gl';\nimport Timeline from './timeline';\nimport OverLappingPins from './overlapping-pins';\n\nimport 'mapbox-gl/dist/mapbox-gl.css';\nimport './style.scss';\n\n// eslint-disable-next-line import/no-webpack-loader-syntax, import/no-unresolved\nmapboxgl.workerClass = require('worker-loader!mapbox-gl/dist/mapbox-gl-csp-worker').default;\n\nconst InteractiveMap = ({ activeMarkers, onMapLoad, markerData, layerData, config, timelineConfig, onMarkerClick, onZoom, onRecenter, onTimelineOpen }) => {\n const { REACT_APP_MAPBOX_ACCESS_TOKEN, REACT_APP_MAPBOX_STYLE } = useGlobalEnvConfig();\n const defaultMapStyles = { position: 'relative', width: '100%', height: '85vh', zIndex: 0 }\n const map = useRef();\n const timelineRefs = useRef([]);\n const mapRefs = useRef([]);\n const overlappingPinsRefs = useRef([]);\n\n const [overlappingPins, setOverlappingPins] = useState([]);\n const [mapConfig, setMapConfig] = useState(null);\n const prevIndex = useRef();\n\n const handleMarkerClick = useCallback((i, name) => {\n if (Number.isInteger(i)) {\n const marker = mapRefs?.current[i].current;\n onMarkerClick(marker, i, prevIndex.current, timelineRefs, map, name);\n }\n }, [onMarkerClick]);\n\n const handleRecenterClick = useCallback((i) => {\n onRecenter();\n }, [onRecenter]);\n\n const zoomHandler = useCallback((e) => {\n if (e) {\n onZoom(e)\n }\n }, [onZoom]);\n\n const mapLoad = useCallback(() => {\n if (map && timelineRefs && mapRefs && overlappingPinsRefs && overlappingPins) {\n onMapLoad(map, timelineRefs, mapRefs, overlappingPinsRefs, overlappingPins)\n }\n }, [onMapLoad, overlappingPins]);\n\n\n useEffect(() => {\n if (markerData) {\n mapRefs.current = markerData?.map((element, i) => (\n mapRefs.current[i] ?? createRef()\n ))\n\n timelineRefs.current = markerData?.map((element, i) => (\n timelineRefs.current[i] ?? createRef()\n ))\n\n //Group markers with the same lat long values - It will always find itself so need to check for more than 1\n const grouped = Object.values(markerData.filter(r => r.type !== \"route\").reduce((acc, cur) => {\n acc[cur.latitude && cur.longitude] = [...(acc[cur.latitude && cur.longitude] || []), cur];\n return acc;\n }, {})).filter(x => x.length > 1);\n\n setOverlappingPins(grouped)\n }\n }, [markerData]);\n\n useEffect(() => {\n if (config) {\n setMapConfig(config);\n }\n\n map?.current?.resize()\n }, [config]);\n\n useEffect(() => {\n if (overlappingPins.length) {\n overlappingPinsRefs.current = overlappingPins?.map((element, i) => (\n overlappingPinsRefs.current[i] ?? createRef()\n ))\n }\n }, [overlappingPins]);\n\n return (\n <>\n\n
\n {mapConfig &&\n mapLoad()}\n reuseMaps\n optimizeForTerrain\n onZoom={(e) => zoomHandler(e)}\n maxZoom={config?.maxZoom ? config?.maxZoom : 14}\n cooperativeGestures\n interactive\n pitchWithRotate={false}\n style={config?.mapStyles ? config.mapStyles : defaultMapStyles}\n padding={config?.mapPadding ? config?.mapPadding : 0}\n mapStyle={`mapbox://styles/${REACT_APP_MAPBOX_STYLE}?optimize=true`}\n mapboxAccessToken={REACT_APP_MAPBOX_ACCESS_TOKEN}\n projection={'mercator'}\n initialViewState={config?.initialViewState ? config?.initialViewState : { zoom: 0 }}\n logoPosition={\"bottom-right\"}\n localFontFamily={config?.mapFont ? config?.mapFont : ''}\n >\n {layerData && layerData.filter(x => x.geoJson).map((routeJson, i) => (\n \n \n {routeJson.layerStyles.map((style, index) => (\n \n ))}\n \n \n ))}\n\n {markerData && markerData.map((marker, i) => (\n \n {!overlappingPins.filter((group) => group.some((p) => marker.markerIndex === p.markerIndex)).length && marker?.children?.mapChildren &&\n handleMarkerClick(i)} longitude={marker.longitude} latitude={marker.latitude} style={{ zIndex: activeMarkers?.includes(i) ? 2 : 0 }} >\n
\n {marker?.children?.mapChildren}\n
\n
\n }\n
\n ))}\n\n {overlappingPins?.length > 0 && overlappingPins?.map((pins, i) => (\n \n \n \n ))}\n\n {config?.showControls &&\n \n }\n \n }\n\n {markerData && timelineRefs &&\n \n }\n
\n\n \n )\n}\n\nexport default InteractiveMap;","import { useEffect, useState, useRef, useCallback, useContext } from \"react\"\nimport { useGlobalEnvConfig } from \"@environment/GlobalEnvConfigProvider\";\nimport { Trans } from '@lingui/macro';\nimport mapboxgl from 'mapbox-gl';\nimport InteractiveMap from '@components/interactive-map';\nimport SlideUp from '@components/slide-up'\nimport { safeImageUrl, getLetters, getTextColorClass, getColor, getRouteColor, getIcon, createCurvedRoute, getLightenedColor, getLayerStyles, getLayerData, getMarkerStyle, routeMarkerStyle } from '@utils/Utils';\nimport { useIsMobile } from '@utils/hooks/useIsMobile';\nimport { TinyColor } from \"@ctrl/tinycolor\";\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setMapMarkers } from '@utils/redux/slices/map';\nimport { BasicData } from '@App';\n\nimport './style.scss';\n\nconst InteractiveMapWrapper = ({ basicData, activeMarkers = [] }) => {\n const { REACT_APP_RESOURCE_DOMAIN } = useGlobalEnvConfig();\n const { theme } = useContext(BasicData);\n\n let markerIndex = 0;\n const dispatch = useDispatch();\n\n const colors = getColor(theme);\n const activeTextColor = getTextColorClass(colors?.secondary);\n const activePinTextColor = getTextColorClass(colors?.accent);\n const mobile = useIsMobile();\n\n const [interactiveMap, setInteractiveMap] = useState(null);\n const [activeMarkerCollection, setActiveMarkerCollection] = useState();\n const [markerState, setMarkerState] = useState(null);\n const [layerState, setLayerState] = useState(null);\n const [mapConfig, setMapConfig] = useState({});\n const [timeLineConfig, setTimelineConfig] = useState(null)\n const [activeOverlappingPins, setactiveOverlappingPins] = useState({});\n const markersStore = useSelector(state => state.map.mapMarkers);\n\n const prevZoom = useRef(0);\n const initialBounds = useRef();\n const reCenterBounds = useRef();\n const timelineRefs = useRef();\n const mapMarkerRefs = useRef();\n const layerData = useRef([]);\n const markerData = useRef([]);\n const overlappingPinsRefs = useRef([]);\n const overlappingPinsData = useRef();\n const prevGroup = useRef({});\n\n\n //INTERACTIVE MAP FUNCTIONS AND EVENTS\n const handleOverlappingPinActiveState = useCallback((marker) => {\n let overlappingPinsIndex = null;\n let overlappingPinMarkerIndex = null\n\n overlappingPinsData?.current?.forEach((group, gi) => {\n group.forEach((p, gmi) => {\n if (p.markerIndex === marker.markerIndex) {\n overlappingPinsIndex = gi;\n overlappingPinMarkerIndex = gmi;\n }\n })\n })\n\n setactiveOverlappingPins({\n markerData: marker,\n overlappingPinsIndex: overlappingPinsIndex,\n overlappingPinMarkerIndex: overlappingPinMarkerIndex,\n markerGroup: overlappingPinsRefs.current[overlappingPinsIndex]\n })\n }, [])\n\n\n //Creates a route layer including the marker in the middle\n const createRoute = useCallback((leg, route) => {\n let layerGeometry = [];\n let markerCoordinates = [];\n let bearing = 0;\n let children = {};\n let accommodation = {};\n let thumbnail = '';\n let name = '';\n let rotateIcon = route.mode === \"ScheduledFlight\" || (route.mode === \"CharterFlight\" && (route.variant === \"charterFlight_Plane\" || route.variant === \"\"));\n const accommodations = basicData?.accommodations;\n\n if (leg.type === \"Mobile\" && (route.mode === \"BoatNoRoute\" || route.mode === \"Boat\" || route.mode === \"TrainNoRoute\" || route.mode === \"Train\" || route.mode === \"Transfer\")) {\n accommodation = accommodations[leg.accommodation_id];\n thumbnail = accommodation?.images ? safeImageUrl(REACT_APP_RESOURCE_DOMAIN, accommodation?.images[0], 380, 250, \"c\") : '';\n name = accommodations[leg.accommodation_id]?.name;\n }\n\n if (route.points && route.points.length > 2) {\n layerGeometry = route?.points;\n markerCoordinates = route?.points[Math.floor(route?.points.length / 2)];\n } else {\n const curve = createCurvedRoute(route);\n layerGeometry = curve?.points;\n markerCoordinates = curve?.midPoint;\n bearing = curve?.bearing;\n }\n\n if (route.mode === \"ScheduledFlight\" || route.mode === \"CharterFlight\" || route.mode === \"BoatNoRoute\" || route.mode === \"TrainNoRoute\" || route.mode === \"Train\" || route.mode === \"Boat\") {\n children = {\n mapChildren:\n
\n \n
,\n timelineChildren: <>\n
\n \n
\n
\n\n {thumbnail &&\n \"\"\n }\n\n
\n {name &&

{name}

}\n {(route.from && route.mode !== 'Train') &&

{route.from}

}\n {(route.route_label) &&

{route.route_label ? {route.route_label} : ''}

}\n {route.duration &&

{route.duration}

}\n
\n\n {(route.start_time || route.end_time) &&\n
\n {route.start_time &&

Depart: {route.start_time}

}\n {route.end_time &&

Arrive: {route.end_time}

}\n
\n }\n
\n \n }\n } else if (route.mode === \"NoTransit\" || route.mode === \"Placeholder\") {\n children = {\n mapChildren:
,\n timelineChildren:
\n }\n } else {\n children = {\n mapChildren:\n
100000 ? 0 : 8} className={`icon route-marker ${route.mode.toLowerCase()}`} style={routeMarkerStyle(route)}>\n \n
,\n timelineChildren: <>\n
\n \n
\n
\n

{route.route_label}

\n\n {(route.distance || route.duration) &&\n
\n {route.distance && route.distance > 0 &&

{`${route.distance} km`}

}\n {route.duration &&

{route.duration}

}\n
\n }\n
\n \n }\n }\n\n\n if (markerCoordinates.length && layerGeometry.length) {\n markerData.current = [...markerData.current, {\n id: `route-marker-${markerIndex}`,\n latitude: markerCoordinates[1] || 0,\n longitude: markerCoordinates[0] || 0,\n name: route.route_label,\n elementClass: route?.mode ? route?.mode?.toLowerCase() : 'pin-marker',\n mode: route.mode,\n type: 'route',\n leg_id: leg.id,\n children: children\n }]\n\n layerData.current = [...layerData.current, {\n layerStyles: getLayerStyles(markerIndex, getRouteColor(route.mode)),\n geoJson: getLayerData(layerGeometry),\n mode: route.mode\n }]\n\n markerIndex++;\n }\n }, [basicData?.accommodations, markerIndex, REACT_APP_RESOURCE_DOMAIN])\n\n\n const setMutedMapLayers = useCallback((layerCopy) => {\n if (layerCopy) {\n layerCopy.forEach((route, i) => {\n if (route.layerStyles && route.layerStyles?.length) {\n const color = getLightenedColor(route.mode);\n route.layerStyles[0].paint = { 'line-color': color, 'line-width': 5 };\n route.layerStyles[1].paint = { 'circle-color': color, 'circle-radius': 6 };\n }\n })\n setLayerState(layerCopy)\n }\n }, [])\n\n\n const setMutedMapMarkers = useCallback(() => {\n const legIdToModeMap = {};\n\n markerState.forEach(marker => {\n const { mode, leg_id } = marker;\n if (leg_id && !legIdToModeMap[leg_id]) {\n legIdToModeMap[leg_id] = mode;\n }\n });\n\n mapMarkerRefs?.current?.forEach((marker, i) => {\n const currentMode = markerState[i].mode;\n const currentLegId = markerState[i].leg_id;\n let modeToUse = currentMode;\n\n if (!modeToUse && currentLegId) {\n modeToUse = legIdToModeMap[currentLegId];\n }\n \n const color = modeToUse ? getLightenedColor(modeToUse) : new TinyColor(`#${colors?.accent}`).tint(60).toHexString();\n\n if (!currentMode && marker?.current?.children[0]?.classList.contains('standard-accommodation')) {\n marker?.current?.children[0]?.style.setProperty(\"background-color\", new TinyColor(`#${colors?.accent}`).tint(60).toHexString()); \n } else if (marker?.current) {\n marker?.current?.children[0]?.style.setProperty(\"background-color\", color);\n }\n });\n\n timelineRefs?.current?.forEach((marker, i) => {\n const currentMode = markerState[i].mode;\n const currentLegId = markerState[i].leg_id;\n let modeToUse = currentMode;\n\n if (!modeToUse && currentLegId) {\n modeToUse = legIdToModeMap[currentLegId];\n }\n \n const color = modeToUse ? getLightenedColor(modeToUse) : new TinyColor(`#${colors?.accent}`).tint(60).toHexString();\n if (!currentMode && marker?.current.classList.contains('standard-accommodation')) {\n marker?.current?.children[0].children[0].style.setProperty(\"background-color\", new TinyColor(`#${colors?.accent}`).tint(60).toHexString()); \n } else if (marker?.current){\n marker?.current?.children[0].children[0].style.setProperty(\"background-color\", color);\n }\n })\n\n }, [colors?.accent, markerState])\n\n\n const onMarkerClick = useCallback((markerRef, index, prevIndex, timelineRefs, map, name) => {\n const element = timelineRefs.current[index].current;\n const root = markerRef.closest('.interactive-map');\n const layerCopy = JSON.parse(JSON.stringify(layerState));\n\n if (overlappingPinsRefs?.current) {\n handleOverlappingPinActiveState(markerState[index])\n }\n\n if (element) {\n timelineRefs.current.forEach((el) => { el.current.classList.remove('active', activeTextColor) })\n timelineRefs.current[index].current.classList.add('active', activeTextColor);\n if (name === 'Own Arrangement') {return}\n let time = 0;\n\n if (!root.querySelector('.map-timeline-overlay').classList.contains('open')) {\n setTimelineConfig(prev => ({\n ...prev,\n timeLineOptions: {\n ...prev?.timeLineOptions,\n isOpen: true,\n },\n }))\n\n //Let the open animation finish first before scrolling\n time = 400;\n }\n\n const t = setTimeout(() => {\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n clearTimeout(t)\n }, time);\n }\n\n if (markerRef) {\n const line = layerCopy[index]?.geoJson?.features?.filter(x => x.geometry.type === \"LineString\");\n const lngLat = markerRef._lngLat ?? { lng: markerState[index].longitude, lat: markerState[index].latitude };\n\n let padding = mobile ? 30 : root.querySelector('.map-timeline-overlay').classList.contains('open') ? { left: (window.innerWidth * 0.2), top: 100, right: 100, bottom: 100 } : 100;\n\n const observer = new IntersectionObserver((entries, observer) => {\n if (!entries[0].isIntersecting) {\n\n if (line) {\n const coordinates = line[0].geometry.coordinates ? line[0].geometry.coordinates : lngLat;\n const bounds = new mapboxgl.LngLatBounds(\n coordinates[0],\n coordinates[0]\n );\n\n for (const coord of coordinates) {\n bounds.extend(coord);\n }\n\n map.current.fitBounds(bounds, {\n padding: padding\n });\n } else {\n map.current.flyTo({\n center: [lngLat.lng, lngLat.lat],\n essential: true,\n zoom: 7\n });\n }\n } else {\n observer.disconnect()\n }\n }, {\n root: root,\n threshold: [1],\n rootMargin: mapConfig?.timeLineOptions?.isOpen || !mobile ? mapConfig?.timeLineOptions?.alignment === \"left\" ? `100px 100px 100px -320px` : \"100px -320px 100px 100px\" : \"100px\",\n });\n\n observer.observe(markerRef);\n\n const siblings = root.querySelectorAll('.icon');\n siblings.forEach((el) => { el.classList.remove('active') });\n\n //Ignore overlapping pins\n if (markerRef.classList.contains('marker-content')) {\n markerRef.children[0]?.classList.add('active');\n }\n }\n\n //Mute the rest of the map\n setMutedMapMarkers();\n setMutedMapLayers(layerCopy);\n\n //Set active color on clicked route and marker\n if (layerCopy[index] && layerCopy[index].layerStyles) {\n const color = getRouteColor(layerCopy[index].mode);\n layerCopy[index].layerStyles[0].paint = { 'line-color': color, 'line-width': 5 };\n layerCopy[index].layerStyles[1].paint = { 'circle-color': color, 'circle-radius': 6 };\n }\n\n if (markerState[index]?.type === \"route\") {\n map?.current?.moveLayer(`line-route-${index}`);\n map?.current?.moveLayer(`line-point-layer-${index}`);\n }\n\n setActiveMarkerCollection([index]);\n\n }, [markerState, activeTextColor, mobile, mapConfig?.timeLineOptions, handleOverlappingPinActiveState, setMutedMapMarkers, setMutedMapLayers, layerState]);\n\n\n //MAPBOX EVENTS\n const onZoom = useCallback((event) => {\n let mapZoom = event?.viewState?.zoom;\n let zoomLevel = Math.trunc(mapZoom);\n\n if (zoomLevel !== prevZoom.current) {\n const rm = document.querySelectorAll('.route-marker');\n for (let i = 0, len = rm.length; i < len; i++) {\n parseInt(rm[i].dataset?.zoomlevel) <= zoomLevel ? rm[i].classList.add('show') : rm[i].classList.remove('show');\n }\n\n prevZoom.current = zoomLevel;\n }\n }, [])\n\n const onMapLoad = useCallback((map, tRefs, mRefs, opRefs, opData) => {\n if (map && map?.current) {\n setInteractiveMap(map);\n }\n\n if (opRefs.current && opData) {\n overlappingPinsRefs.current = opRefs.current;\n overlappingPinsData.current = opData;\n }\n\n if (tRefs.current) {\n timelineRefs.current = tRefs.current;\n timelineRefs?.current[0].current?.classList?.add('active', activeTextColor);\n }\n\n if (mRefs.current) {\n mapMarkerRefs.current = mRefs.current;\n\n if (mapMarkerRefs.current[0].current?.classList.contains('marker-content')) {\n mapMarkerRefs.current[0].current?.children[0]?.classList.add('active');\n } else {\n const overlappingPinsParent = mapMarkerRefs.current[0].current?.closest('.overlapping-pins')\n \n if (overlappingPinsParent) {\n overlappingPinsParent.querySelector('.primary-marker').classList.add('active');\n }\n }\n }\n }, [activeTextColor])\n\n\n const onRecenter = useCallback(() => {\n const root = interactiveMap?.current.getMap()._container.closest('.interactive-map');\n\n if (!Array.isArray(reCenterBounds.current)) {\n interactiveMap?.current?.fitBounds(reCenterBounds.current, {\n padding: mobile ? 30 : root.querySelector('.map-timeline-overlay').classList.contains('open') ? { left: (window.innerWidth * 0.2), top: 100, right: 100, bottom: 100 } : 100\n });\n } else {\n interactiveMap?.current?.flyTo({\n center: reCenterBounds.current,\n essential: true,\n zoom: 7\n });\n }\n }, [interactiveMap, mobile])\n\n\n const onTimelineOpen = useCallback((isOpen) => {\n if (!isOpen && activeMarkers.length) {\n const element = timelineRefs.current[activeMarkers[0]].current;\n\n if (element) {\n const t = setTimeout(() => {\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n clearTimeout(t)\n }, 400);\n }\n }\n }, [activeMarkers])\n\n\n //USEEFFECTS\n \n // change colors on map based on DTC changes\n useEffect(() => {\n if (!timelineRefs?.current || !mapMarkerRefs?.current) return;\n\n const updatePinColor = (pins, color) => {\n const pinsList = Array.isArray(pins) ? pins : [pins];\n\n pinsList.forEach((pin) => {\n if (pin) {\n pin.classList.remove('dark-text', 'light-text');\n pin.classList.add(color);\n\n const pinMarker = pin.closest('.pin-marker');\n if (pinMarker) {\n pinMarker.style.setProperty(\"background-color\", new TinyColor(colors?.accent).toHexString());\n }\n }\n });\n };\n\n const getValidPinsTimelineAndMap = (refs) => {\n return refs\n .map(ref => ref?.current)\n .filter(ref => {\n const pin = ref?.querySelector('.pin-marker p');\n return pin && \n !ref.classList.contains('boat') && \n !ref.classList.contains('train') && \n !ref.classList.contains('transfer') && \n (pin.classList.contains('light-text') || pin.classList.contains('dark-text'));\n })\n .map(ref => ref.querySelector('.pin-marker p'));\n };\n \n const activeTimelineCard = timelineRefs.current.find((timelineRef) =>\n timelineRef.current.classList.contains('active')\n );\n \n if (activeTimelineCard?.current) {\n activeTimelineCard.current.classList.remove('dark-text', 'light-text');\n activeTimelineCard.current.classList.add(activeTextColor);\n }\n\n const timelinePins = getValidPinsTimelineAndMap(timelineRefs.current);\n updatePinColor(timelinePins, activePinTextColor);\n\n const mapPins = getValidPinsTimelineAndMap(mapMarkerRefs.current);\n updatePinColor(mapPins, activePinTextColor);\n\n overlappingPinsRefs.current.forEach(element => updatePinColor(element.current.querySelector('.primary-marker p'), activePinTextColor))\n }, [timelineRefs, mapMarkerRefs, activePinTextColor, activeTextColor, colors?.accent]); \n\n useEffect(() => {\n setMapConfig({\n overlappingPinsOptions: {\n pinStyles: {\n primaryPin: {\n color: activePinTextColor\n },\n secondaryPin: {},\n secondaryPinWrapper: {\n backgroundColor: new TinyColor(`#${colors?.accent}`).setAlpha(0.3)\n }\n }\n },\n mapStyles: { position: 'relative', width: '100%', height: '100%' },\n maxZoom: 14,\n showControls: true,\n mapFont: basicData?.theme?.headings_font,\n initialViewState: {\n fitBoundsOptions: {\n padding: mobile ? 30 : { left: (!mobile ? window.innerWidth * 0.2 : 100), top: 100, right: 100, bottom: 100 }\n }\n }\n })\n }, [activePinTextColor, basicData?.theme?.headings_font, colors?.accent, mobile])\n\n\n useEffect(() => {\n setTimelineConfig({\n showTimeline: true,\n timeLineOptions: {\n alignment: \"left\",\n buttonLabel: 'Show Route Info',\n showToggle: !mobile,\n showRecenter: true,\n isOpen: !activeMarkers.length,\n timelineStyles: {\n backgroundColor: new TinyColor(`#${colors?.secondary}`).setAlpha(0.3)\n }\n }\n })\n }, [colors?.secondary, mobile, activeMarkers?.length])\n\n\n useEffect(() => {\n if (activeOverlappingPins) {\n const groupRef = activeOverlappingPins.markerGroup?.current;\n const color = new TinyColor(`#${colors?.accent}`).tint(60).toHexString();\n\n if (groupRef) {\n groupRef.firstChild.querySelector('.pin-marker').querySelector('p').textContent = activeOverlappingPins.markerData?.letter;\n groupRef.firstChild.querySelector('.primary-marker').classList.add('active');\n const isSameGroup = activeOverlappingPins.overlappingPinsIndex === prevGroup.current?.overlappingPinsIndex;\n\n if (!isSameGroup && prevGroup.current) {\n const prevMarker = prevGroup?.current?.markerGroup?.current;\n\n if (prevMarker) {\n prevMarker.firstChild.querySelector('.primary-marker').classList.remove('active');\n }\n }\n\n if (activeOverlappingPins.overlappingPinsIndex > prevGroup.current.overlappingPinsIndex && isSameGroup) {\n groupRef.firstChild.lastChild.style.transform = `translateX(${activeOverlappingPins.overlappingPinMarkerIndex * 40}px)`\n\n } else {\n groupRef.firstChild.lastChild.style.transform = `translateX(-${activeOverlappingPins.overlappingPinMarkerIndex * 40}px)`\n }\n }\n\n if (activeOverlappingPins?.overlappingPinsIndex !== null) {\n const activeGroup = overlappingPinsRefs.current[activeOverlappingPins?.overlappingPinsIndex];\n\n if (activeGroup) {\n const secondaryMarkers = activeGroup.current.querySelector('.secondary-markers').querySelectorAll('.icon');\n secondaryMarkers.forEach((el) => {\n el.style.setProperty(\"background-color\", color);\n })\n\n overlappingPinsRefs.current.forEach((group, i) => {\n if (i !== activeOverlappingPins?.overlappingPinsIndex) {\n const inactiveMarkers = group.current.querySelectorAll('.icon');\n\n inactiveMarkers.forEach((el) => {\n el.style.setProperty(\"background-color\", color);\n })\n }\n })\n } else {\n overlappingPinsRefs.current.forEach((group, i) => {\n const inactiveMarkers = group.current.querySelectorAll('.icon');\n\n inactiveMarkers.forEach((el) => {\n el.style.setProperty(\"background-color\", color);\n })\n })\n }\n } else {\n overlappingPinsRefs.current.forEach((group, i) => {\n const inactiveMarkers = group.current.querySelectorAll('.icon');\n group.current.querySelector('.primary-marker').classList.remove('active');\n\n inactiveMarkers.forEach((el) => {\n el.style.setProperty(\"background-color\", color);\n })\n })\n }\n\n prevGroup.current = activeOverlappingPins\n }\n }, [activeOverlappingPins, colors?.accent])\n\n\n //On map tab click the activeMarkers are changed\n useEffect(() => {\n if (interactiveMap && activeMarkers.length) {\n if (timelineRefs?.current && mapMarkerRefs?.current) {\n const marker = markersStore?.filter(x => x.index === activeMarkers[0]);\n const activeTimelineElement = timelineRefs?.current[activeMarkers[0]];\n const activeRouteElement = mapMarkerRefs?.current[activeMarkers[0]];\n\n if (marker) {\n const leg = basicData?.trip_summary?.legs.filter(x => x.id === marker[0]?.leg_id);\n const accommodations = basicData?.accommodations;\n\n if (overlappingPinsRefs?.current) {\n handleOverlappingPinActiveState(markerState[activeMarkers[0]]);\n }\n\n if (leg) {\n const accommodation = accommodations[leg[0].accommodation_id];\n\n if (accommodation) {\n const coords = [[accommodation.longitude], [accommodation.latitude]]\n reCenterBounds.current = coords;\n interactiveMap?.current?.flyTo({\n center: coords,\n essential: true,\n zoom: 7\n });\n }\n\n setTimelineConfig(prev => ({\n ...prev,\n timeLineOptions: {\n ...prev?.timeLineOptions,\n isOpen: false,\n },\n }))\n }\n }\n\n setActiveMarkerCollection(activeMarkers)\n\n if (activeTimelineElement && activeRouteElement) {\n timelineRefs.current.map(x => x.current?.classList?.remove('active', activeTextColor));\n activeTimelineElement.current.classList.add('active', activeTextColor);\n mapMarkerRefs.current?.map(x => x.current?.children[0]?.classList?.remove('active'));\n\n if (activeRouteElement.current?.classList.contains('marker-content')) {\n activeRouteElement.current?.children[0].classList.add('active');\n }\n }\n }\n }\n }, [activeMarkers, interactiveMap, activeTextColor, basicData?.accommodations, basicData?.trip_summary?.legs, handleOverlappingPinActiveState, markersStore, markerState])\n\n\n useEffect(() => {\n if (basicData && layerData?.current?.length === 0 && markerData?.current?.length === 0) {\n const legs = basicData?.trip_summary?.legs;\n const routes = basicData?.trip_summary?.routes;\n const accommodations = basicData?.accommodations;\n const destinations = basicData?.destinations;\n\n let letterIndex = 0;\n\n legs?.forEach((leg, i) => {\n let legRoutes = [];\n let endLegRoutes = [];\n let initialRoutes = routes?.filter(x => x.start_leg_id === 0 && x.end_leg_id === leg.id); // routes before first accommodation;\n initialRoutes?.forEach((route) => { createRoute(leg, route) });\n\n //Accommodation markers are created\n if (leg?.accommodation_id) {\n const accommodation = accommodations[leg.accommodation_id];\n const tumbnail = accommodation?.images ? safeImageUrl(REACT_APP_RESOURCE_DOMAIN, accommodation?.images[0], 380, 250, \"c\") : '';\n const letter = getLetters(letterIndex)\n\n //Igonore mobile legs if they have accommodations - We only want the routes\n if (leg.type !== \"Mobile\") {\n const routeFallback = routes?.find(x => x.start_leg_id !== 0 && x.end_leg_id !== 0 && (x.start_leg_id === leg.id || x.end_leg_id === leg.id));\n \n markerData.current = [...markerData?.current, {\n id: `pin-marker-${markerIndex}`,\n latitude: accommodation?.latitude || routeFallback?.end_content_entity_location[0] || 0,\n longitude: accommodation?.longitude || routeFallback?.end_content_entity_location[1] || 0,\n name: accommodation?.name,\n elementClass: `pin-marker pin-marker-${markerIndex} standard-accommodation`,\n type: 'pin',\n accommodation_id: leg.accommodation_id,\n element_id: `destination-${leg.id}-${leg.destination_id}`,\n leg_id: leg.id,\n markerIndex: markerIndex,\n letterIndex: letterIndex,\n letter: letter,\n children: {\n mapChildren:\n
\n

{letter}

\n
,\n timelineChildren: <>\n
\n

{letter}

\n
\n
\n {tumbnail &&\n \"\"\n }\n\n
\n

{accommodations[leg.accommodation_id]?.name}

\n\n {(accommodation.category || leg.nights) &&\n

{accommodation.category ? {accommodation.category} • : ''} {leg.nights && {leg.nights} {leg.nights === 1 ? Night : Nights}}

\n }\n
\n\n
\n \n }\n }]\n\n //Add dummy null values to maintain indexing\n layerData.current = [...layerData.current, {\n geoJson: null,\n layerStyles: null,\n }]\n\n letterIndex++;\n markerIndex++;\n\n legRoutes = routes?.filter(x => x.start_leg_id !== 0 && x.end_leg_id !== 0 && x.start_leg_id === leg.id);\n legRoutes?.forEach((route) => {createRoute(leg, route); });\n\n } else if (leg.type === \"Mobile\") {\n\n if (leg.stops) {\n\n leg.stops?.forEach((legStop,index) => {\n const letter = getLetters(letterIndex)\n const route = routes?.find(route => route.start_leg_id === leg.id && route.start_day === legStop.end_day);\n const destination = destinations[legStop.destination_id];\n const mobileRouteFirstInstance = routes?.find(route => route.start_leg_id === leg.id);\n \n if (accommodation.category !== 'Train') {\n legRoutes = routes?.filter(route => route.start_leg_id !== 0 && route.end_leg_id !== 0 && route.start_leg_id === leg.id && route.start_leg_id === route.end_leg_id && route.to === legStop.name);\n legRoutes?.forEach((route) => {createRoute(leg, route); });\n }\n\n if(index === 0) {\n if (accommodation.category !== 'Mobile Safari') {\n legRoutes = routes?.filter(route => route.start_leg_id !== 0 && route.end_leg_id !== 0 && route.start_leg_id === leg.id && route.start_leg_id === route.end_leg_id);\n legRoutes?.forEach((route) => {createRoute(leg, route); });\n }\n \n if (accommodation.category !== 'Train' && accommodation.category !== 'Cruise Ship') {\n markerData.current = [...markerData?.current, {\n id: `pin-marker-${markerIndex}`,\n latitude: destination.latitude || 0,\n longitude: destination.longitude || 0,\n name: accommodation?.name,\n elementClass: `pin-marker pin-marker-${markerIndex} ${mobileRouteFirstInstance?.mode?.toLowerCase()} disabled`,\n type: 'pin',\n accommodation_id: leg.accommodation_id,\n element_id: `destination-${leg.id}-${legStop.destination_id}`,\n leg_id: leg.id,\n markerIndex: markerIndex,\n letterIndex: letterIndex,\n letter: letter,\n children: {\n mapChildren:\n
\n

{letter}

\n
,\n timelineChildren: <>\n
\n \n
\n
\n {tumbnail &&\n \"\"\n }\n\n
\n {accommodation.name &&

{accommodation.name}

}\n {(accommodation.category || leg.nights) &&

{accommodation.category ? {accommodation.category} • : ''} {leg.nights && {leg.nights} {leg.nights === 1 ? Night : Nights}}

}\n\n
\n
\n \n }\n }]\n\n layerData.current = [...layerData.current, {\n geoJson: null,\n layerStyles: null,\n }]\n\n markerIndex++;\n }\n }\n\n markerData.current = [...markerData?.current, {\n id: `pin-marker-${markerIndex}`,\n latitude: route?.start_content_entity_location[0] || destination.latitude || 0,\n longitude: route?.start_content_entity_location[1] || destination.longitude || 0,\n name: accommodation?.name,\n elementClass: `pin-marker pin-marker-${markerIndex} ${mobileRouteFirstInstance?.mode?.toLowerCase()}`,\n type: 'pin',\n accommodation_id: leg.accommodation_id,\n element_id: `destination-${leg.id}-${legStop.destination_id}`,\n leg_id: leg.id,\n markerIndex: markerIndex,\n letterIndex: letterIndex,\n letter: letter,\n children: {\n mapChildren:\n
\n

{letter}

\n
,\n timelineChildren: <>\n
\n

{letter}

\n
\n
\n
\n

{legStop.type}

\n {(legStop.name || destinations[legStop.destination_id]?.name) && (\n

{legStop.name || destinations[legStop.destination_id]?.name}

\n )}\n
\n
\n \n }\n }]\n \n //Add dummy null values to maintain indexing\n layerData.current = [...layerData.current, {\n geoJson: null,\n layerStyles: null,\n }]\n \n letterIndex++;\n markerIndex++; \n\n if (index === leg.stops.length-1) {\n legRoutes = routes?.filter(route => route.start_leg_id !== 0 && route.end_leg_id !== 0 && route.start_leg_id === leg.id && route.start_leg_id !== route.end_leg_id);\n legRoutes?.forEach((route) => {createRoute(leg, route); });\n }\n });\n } else {\n legRoutes = routes?.filter(route => route.start_leg_id !== 0 && route.end_leg_id !== 0 && route.start_leg_id === leg.id && (route.start_leg_id === route.end_leg_id || route.start_leg_id !== route.end_leg_id));\n legRoutes?.forEach((route) => {createRoute(leg, route); });\n }\n }\n \n } else if (!leg.accommodation_id && leg.id !== 0) { \n // OwnArrangement pins and overnightTravel\n const accommodation = '';\n const tumbnail = '';\n const letter = getLetters(letterIndex);\n\n if (leg.type === 'OvernightTravel') {\n markerData.current = [...markerData?.current, {\n id: `pin-marker-${markerIndex}`,\n latitude: i * 10 / 100, // fixes overlapping pins issue\n longitude: i * 10 / 100, // fixes overlapping pins issue\n name: leg.name,\n elementClass: `pin-marker pin-marker-${markerIndex} disabled`,\n type: 'pin',\n accommodation_id: null,\n element_id: `destination-${leg.id}`,\n leg_id: leg.id,\n markerIndex: markerIndex,\n letterIndex: letterIndex,\n letter: letter,\n children: {\n mapChildren:\n <>\n \n ,\n timelineChildren: <>\n
\n

{letter}

\n
\n
\n {tumbnail &&\n \"\"\n }\n
\n

{leg.name}

\n \n {(accommodation.category || leg.nights) &&\n

{accommodation.category ? {accommodation.category} • : ''} {leg.nights && {leg.nights} {leg.nights === 1 ? Night : Nights}}

\n }\n
\n
\n \n }\n }];\n \n //Add dummy null values to maintain indexing\n layerData.current = [...layerData.current, {\n geoJson: null,\n layerStyles: null,\n }]\n \n // letterIndex++;\n markerIndex++;\n } else {\n markerData.current = [...markerData?.current, {\n id: `pin-marker-${markerIndex}`,\n latitude: i * 10 / 100, // fixes overlapping pins issue\n longitude: i * 10 / 100, // fixes overlapping pins issue\n name: leg.name,\n elementClass: `pin-marker pin-marker-${markerIndex}`,\n type: 'pin',\n accommodation_id: null,\n element_id: `destination-${leg.id}`,\n leg_id: leg.id,\n markerIndex: markerIndex,\n letterIndex: letterIndex,\n letter: letter,\n children: {\n mapChildren:\n <>\n \n ,\n timelineChildren: <>\n
\n

{letter}

\n
\n
\n {tumbnail &&\n \"\"\n }\n
\n

{leg.name}

\n \n {(accommodation.category || leg.nights) &&\n

{accommodation.category ? {accommodation.category} • : ''} {leg.nights && {leg.nights} {leg.nights === 1 ? Night : Nights}}

\n }\n
\n
\n \n }\n }];\n \n //Add dummy null values to maintain indexing\n layerData.current = [...layerData.current, {\n geoJson: null,\n layerStyles: null,\n }]\n \n letterIndex++;\n markerIndex++;\n }\n\n legRoutes = routes?.filter(route => route.start_leg_id !== 0 && route.end_leg_id !== 0 && route.start_leg_id === leg.id);\n legRoutes?.forEach((route) => {createRoute(leg, route); });\n }\n \n endLegRoutes = routes?.filter(route => route.end_leg_id === 0 && route.start_leg_id === leg.id);\n endLegRoutes?.forEach((route) => { createRoute(leg, route) });\n })\n\n setMarkerState(markerData.current);\n setLayerState(layerData.current)\n }\n }, [basicData, activePinTextColor, createRoute, markerIndex, dispatch, colors.accent, REACT_APP_RESOURCE_DOMAIN])\n\n\n //Update redux for access to marker indexes etc outside of the map\n useEffect(() => {\n if (!markersStore?.length) {\n dispatch(setMapMarkers(markerState?.map((m, i) => {\n return { id: m.element_id, index: i, leg_id: m.leg_id }\n })))\n }\n }, [markerState, dispatch, markersStore])\n\n\n useEffect(() => {\n if (basicData && layerState?.length) {\n let boundCoords = layerState.filter(r => r.geoJson).map((route) => {\n return route?.geoJson?.features.map((feature) => {\n return feature?.geometry?.coordinates;\n })\n }).flat(2);\n\n if (!boundCoords?.length) {\n boundCoords = markerState.map((marker) => {\n return [marker.longitude, marker.latitude]\n });\n }\n\n const initalBounds = new mapboxgl.LngLatBounds(\n boundCoords[0],\n boundCoords[0]\n );\n\n for (const coord of boundCoords) {\n initalBounds.extend(coord);\n };\n\n if (initalBounds) {\n initialBounds.current = initalBounds;\n reCenterBounds.current = initalBounds;\n\n setMapConfig(prev => ({\n ...prev,\n initialViewState: {\n bounds: initalBounds,\n fitBoundsOptions: {\n padding: mobile ? 30 : { left: (!mobile ? window.innerWidth * 0.2 : 100), top: 100, right: 100, bottom: 100 }\n }\n }\n }))\n }\n }\n }, [layerState, basicData, mobile, markerState])\n\n interactiveMap?.current?.on('resize', () => {\n interactiveMap?.current?.fitBounds(initialBounds.current, {\n padding: 30\n });\n })\n\n const onSlideUpOpen = useCallback((isOpen) => {\n if (isOpen) {\n //Fixes bug where map is rendered in hidden container so gets default sizes\n setTimeout(() => {\n interactiveMap?.current?.resize();\n }, 0);\n }\n }, [interactiveMap])\n\n if (!Object.keys(basicData?.accommodations ?? {}).length && !Object.keys(basicData?.trip_summary?.routes ?? {}).length) return;\n\n return (\n
\n {markerState && layerState && mapConfig &&\n <>\n {mobile\n ? \n
View on the Map
\n \n
\n : \n }\n\n \n }\n
\n )\n}\n\nexport default InteractiveMapWrapper"],"names":["markerData","timelineRefs","config","handleMarkerClick","handleRecenterClick","onTimelineOpen","useState","isOpen","setIsOpen","useEffect","timeLineOptions","className","alignment","style","timelineStyles","map","marker","i","ref","current","elementClass","onClick","name","children","timelineChildren","showToggle","id","buttonLabel","showRecenter","alt","src","crosshair","pins","index","mapRefs","overlappingPinsRefs","isCollapsed","setIsCollapsed","longitude","latitude","overlappingPinsOptions","pinStyles","primaryPin","markerIndex","createRef","mapChildren","secondaryPinWrapper","secondaryPin","length","mapboxgl","require","activeMarkers","onMapLoad","layerData","timelineConfig","onMarkerClick","onZoom","onRecenter","useGlobalEnvConfig","REACT_APP_MAPBOX_ACCESS_TOKEN","REACT_APP_MAPBOX_STYLE","useRef","overlappingPins","setOverlappingPins","mapConfig","setMapConfig","prevIndex","useCallback","Number","isInteger","zoomHandler","e","mapLoad","element","grouped","Object","values","filter","r","type","reduce","acc","cur","x","resize","mapWrapperStyles","onLoad","reuseMaps","optimizeForTerrain","maxZoom","cooperativeGestures","interactive","pitchWithRotate","mapStyles","position","width","height","zIndex","padding","mapPadding","mapStyle","mapboxAccessToken","projection","initialViewState","zoom","logoPosition","localFontFamily","mapFont","geoJson","routeJson","data","layerStyles","group","some","p","includes","showControls","basicData","REACT_APP_RESOURCE_DOMAIN","theme","useContext","BasicData","dispatch","useDispatch","colors","getColor","activeTextColor","getTextColorClass","secondary","activePinTextColor","accent","mobile","useIsMobile","interactiveMap","setInteractiveMap","activeMarkerCollection","setActiveMarkerCollection","markerState","setMarkerState","layerState","setLayerState","timeLineConfig","setTimelineConfig","activeOverlappingPins","setactiveOverlappingPins","markersStore","useSelector","state","mapMarkers","prevZoom","initialBounds","reCenterBounds","mapMarkerRefs","overlappingPinsData","prevGroup","handleOverlappingPinActiveState","overlappingPinsIndex","overlappingPinMarkerIndex","forEach","gi","gmi","markerGroup","createRoute","leg","route","layerGeometry","markerCoordinates","bearing","accommodation","thumbnail","rotateIcon","mode","variant","accommodations","accommodation_id","images","safeImageUrl","points","Math","floor","curve","createCurvedRoute","midPoint","toLowerCase","routeMarkerStyle","transform","toFixed","getIcon","from","route_label","duration","start_time","end_time","distance","leg_id","getLayerStyles","getRouteColor","getLayerData","setMutedMapLayers","layerCopy","color","getLightenedColor","paint","setMutedMapMarkers","legIdToModeMap","currentMode","currentLegId","modeToUse","TinyColor","tint","toHexString","classList","contains","setProperty","markerRef","root","closest","JSON","parse","stringify","el","remove","add","time","querySelector","prev","t","setTimeout","scrollIntoView","behavior","block","clearTimeout","line","features","geometry","lngLat","_lngLat","lng","lat","left","window","innerWidth","top","right","bottom","IntersectionObserver","entries","observer","isIntersecting","disconnect","coordinates","bounds","coord","extend","fitBounds","flyTo","center","essential","threshold","rootMargin","observe","querySelectorAll","moveLayer","event","mapZoom","viewState","zoomLevel","trunc","rm","document","len","parseInt","dataset","zoomlevel","tRefs","mRefs","opRefs","opData","overlappingPinsParent","getMap","_container","Array","isArray","updatePinColor","pin","pinMarker","getValidPinsTimelineAndMap","refs","activeTimelineCard","find","timelineRef","timelinePins","mapPins","backgroundColor","setAlpha","headings_font","fitBoundsOptions","showTimeline","groupRef","firstChild","textContent","letter","isSameGroup","prevMarker","lastChild","activeGroup","inactiveMarkers","activeTimelineElement","activeRouteElement","trip_summary","legs","coords","routes","destinations","letterIndex","legRoutes","initialRoutes","start_leg_id","end_leg_id","tumbnail","getLetters","routeFallback","end_content_entity_location","element_id","destination_id","getMarkerStyle","category","nights","stops","legStop","start_day","end_day","destination","mobileRouteFirstInstance","to","display","start_content_entity_location","setMapMarkers","m","boundCoords","feature","flat","initalBounds","on","onSlideUpOpen","keys","header","onOpen"],"sourceRoot":""}