{"version":3,"file":"assets/js/chunks/7876.0c36dea28cacd40447b1.js","mappings":"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","sources":["webpack://web-pwa/./src/domain/UserAccount/UserLoginButton.jsx","webpack://web-pwa/./src/domain/UserAccount/UserPicture.jsx","webpack://web-pwa/./src/domain/UserAccount/UserPicture.less?5213","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserFavoriteError.jsx","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/incentive.constants.js","webpack://web-pwa/./src/domain/UserAccount/shared/withKeycloak.jsx","webpack://web-pwa/./src/domain/UserAccount/useKeycloak.js","webpack://web-pwa/./src/domain/advertising/AdLoader.jsx","webpack://web-pwa/./src/domain/advertising/AdLoader.less?2534","webpack://web-pwa/./src/domain/autopromo/AutoPromoPopinGE.less?cba7","webpack://web-pwa/./src/domain/autopromo/AutoPromoPopinGE.jsx","webpack://web-pwa/./src/domain/autopromo/AutoPromoOpenButton.jsx","webpack://web-pwa/./src/domain/seo/Breadcrumbs.less?9b17","webpack://web-pwa/./src/domain/seo/BreadcrumbItem.jsx","webpack://web-pwa/./src/domain/seo/BreadcrumbItem.less?85e6","webpack://web-pwa/./src/domain/seo/Breadcrumbs.jsx","webpack://web-pwa/./src/domain/autopromo/FooterAppAutoPromo.less?8832","webpack://web-pwa/./src/domain/autopromo/FooterAppAutoPromo.jsx","webpack://web-pwa/./src/domain/footer/FooterCocorico.jsx","webpack://web-pwa/./src/domain/footer/FooterCocorico.less?90a0","webpack://web-pwa/./src/domain/footer/footerInfos/FooterContact.jsx","webpack://web-pwa/./src/domain/footer/footerInfos/FooterContact.less?de87","webpack://web-pwa/./src/domain/footer/footerInfos/FooterInfos.less?5cd6","webpack://web-pwa/./src/domain/footer/footerInfos/SocialNetworkButtons.less?4486","webpack://web-pwa/./src/domain/footer/footerInfos/SocialNetworkButtons.jsx","webpack://web-pwa/./src/domain/footer/footerInfos/FooterInfos.jsx","webpack://web-pwa/./src/domain/footer/footerInfos/FooterPrivacy.less?4c0f","webpack://web-pwa/./src/domain/footer/footerInfos/FooterPrivacy.jsx","webpack://web-pwa/./src/domain/seo/footer/TopSearchLinks.less?fedd","webpack://web-pwa/./src/domain/seo/footer/TopSearchLinks.jsx","webpack://web-pwa/./src/domain/footer/FooterTopSearch.jsx","webpack://web-pwa/./src/domain/footer/FooterTopSearch.less?137b","webpack://web-pwa/./src/domain/footer/Footer.jsx","webpack://web-pwa/./src/domain/footer/Footer.less?debd","webpack://web-pwa/./src/domain/genericComponents/Anchor.jsx","webpack://web-pwa/./src/domain/genericComponents/Anchor.less?5ad8","webpack://web-pwa/./src/domain/genericComponents/ClosePopinButton.jsx","webpack://web-pwa/./src/domain/genericComponents/ClosePopinButton.less?e368","webpack://web-pwa/./src/domain/genericComponents/Details.less?3bbd","webpack://web-pwa/./src/domain/genericComponents/Details.jsx","webpack://web-pwa/./src/domain/genericComponents/ImageGallery.jsx","webpack://web-pwa/./src/domain/genericComponents/Modal.jsx","webpack://web-pwa/./src/domain/genericComponents/Modal.less?a1f9","webpack://web-pwa/./src/domain/genericComponents/NumericInput.jsx","webpack://web-pwa/./src/domain/UserAccount/shared/CloseUserAreaButton.jsx","webpack://web-pwa/./src/domain/UserAccount/shared/CloseUserAreaButton.less?8716","webpack://web-pwa/./src/domain/genericComponents/LogoMappyImg.jsx","webpack://web-pwa/./src/domain/genericComponents/LogoMappyImg.less?56bd","webpack://web-pwa/./src/domain/UserAccount/anonymous/UserAreaAnonymous.jsx","webpack://web-pwa/./src/domain/UserAccount/anonymous/UserAreaAnonymous.less?42c3","webpack://web-pwa/./src/domain/UserAccount/shared/UserScreenContent.jsx","webpack://web-pwa/./src/domain/UserAccount/shared/UserScreenContent.less?8e7b","webpack://web-pwa/./src/domain/UserAccount/shared/UserScreenHeader.jsx","webpack://web-pwa/./src/domain/UserAccount/shared/UserScreenHeader.less?4524","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserFavoriteItem.less?0c42","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserFavoriteItem.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserFavorites.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/FavoriteInput.less?ef31","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/FavoriteInput.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserManageFavorite.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userItineraryOptions/UserItineraryOptions.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userItineraryOptions/UserItineraryOptions.less?1ae9","webpack://web-pwa/./src/domain/UserAccount/connected/userMenu/UserLogout.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userMenu/UserMenu.less?c846","webpack://web-pwa/./src/domain/UserAccount/connected/userMenu/UserMenu.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/UserAreaConnected.jsx","webpack://web-pwa/./src/domain/UserAccount/UserAreaPlaceHolder.jsx","webpack://web-pwa/./src/domain/UserAccount/UserArea.jsx","webpack://web-pwa/./src/domain/UserAccount/UserArea.less?9351","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/UserAccountIncentiveCarrousel.less?dca6","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/UserAccountIncentiveCarrousel.jsx","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/UserAccountIncentivePopin.less?94aa","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/UserAccountIncentivePopin.jsx","webpack://web-pwa/./src/domain/advertising/UtiqLoader.jsx","webpack://web-pwa/./src/domain/cmp/CMPPlaceholder.jsx","webpack://web-pwa/./src/domain/menu/MenuCategoriesGE.less?8d71","webpack://web-pwa/./src/domain/advertising/AdMenu.jsx","webpack://web-pwa/./src/domain/advertising/AdMenu.less?280f","webpack://web-pwa/./src/domain/menu/MenuSubCategoriesGE.jsx","webpack://web-pwa/./src/domain/menu/MenuSubCategoriesGE.less?e55b","webpack://web-pwa/./src/domain/menu/MenuCategoriesGE.jsx","webpack://web-pwa/./src/domain/outdoor/Outdoor.jsx","webpack://web-pwa/./src/domain/outdoor/Outdoor.less?c1d0","webpack://web-pwa/./src/domain/genericComponents/Page.jsx","webpack://web-pwa/./src/domain/genericComponents/ResponsiveScrollableWrapper/ResponsiveScrollableWrapper.jsx","webpack://web-pwa/./src/domain/genericComponents/ResponsiveScrollableWrapper/ResponsiveScrollableWrapper.less?c3b9","webpack://web-pwa/./src/domain/genericComponents/StatusMessage.jsx","webpack://web-pwa/./src/domain/genericComponents/StatusMessage.less?81a6","webpack://web-pwa/./src/domain/genericComponents/useTemporaryVisible.js","webpack://web-pwa/./src/domain/header/BackButton.jsx","webpack://web-pwa/./src/domain/UserAccount/UserButton.jsx","webpack://web-pwa/./src/domain/UserAccount/UserButton.less?32ba","webpack://web-pwa/./src/domain/header/ItineraryUniverseButton.jsx","webpack://web-pwa/./src/domain/header/ItineraryUniverseButton.less?0bcb","webpack://web-pwa/./src/domain/header/DesktopPreHeader.jsx","webpack://web-pwa/./src/domain/header/DesktopPreHeader.less?d786","webpack://web-pwa/./src/domain/header/SubHeader.jsx","webpack://web-pwa/./src/domain/header/SubHeader.less?40b2","webpack://web-pwa/./src/domain/header/Header.jsx","webpack://web-pwa/./src/domain/i18n/i18nSite.jsx","webpack://web-pwa/./src/domain/itinerary/ModeItem.jsx","webpack://web-pwa/./src/domain/itinerary/ModeItem.less?47d7","webpack://web-pwa/./src/domain/itineraryOptions/FavouriteModeBox.jsx","webpack://web-pwa/./src/domain/itineraryOptions/ItineraryOptions.less?309c","webpack://web-pwa/./src/domain/itineraryOptions/ModeSpeedSettingsBox.jsx","webpack://web-pwa/./src/domain/itineraryOptions/ModeSpeedSettingsBox.less?7c54","webpack://web-pwa/./src/domain/itineraryOptions/ItineraryOptions.jsx","webpack://web-pwa/./src/domain/itineraryOptions/VehicleOwnedSwitcher.jsx","webpack://web-pwa/./src/domain/itineraryOptions/VehicleOwnedSwitcher.less?e109","webpack://web-pwa/./src/domain/itineraryOptions/VehicleSettingsBox.less?f893","webpack://web-pwa/./src/domain/itineraryOptions/CritairChoice.jsx","webpack://web-pwa/./src/domain/itineraryOptions/CritairChoice.less?cfb3","webpack://web-pwa/./src/domain/itineraryOptions/CritairSelect.jsx","webpack://web-pwa/./src/domain/itineraryOptions/VehicleSettingsBox.jsx","webpack://web-pwa/./src/domain/loading/Throbber.less?bc51","webpack://web-pwa/./src/domain/loading/Throbber.jsx","webpack://web-pwa/./src/domain/main/Main.jsx","webpack://web-pwa/./src/domain/main/Main.less?6328","webpack://web-pwa/./src/domain/analytics/useImpressionTag.jsx","webpack://web-pwa/./src/domain/genericComponents/MapEventPopin.jsx","webpack://web-pwa/./src/domain/genericComponents/MapEventPopin.less?d4f0","webpack://web-pwa/./src/domain/outdoor/UPI.jsx","webpack://web-pwa/./src/domain/outdoor/UPI.less?8f7e","webpack://web-pwa/./src/domain/map/Geolocation.js","webpack://web-pwa/./src/domain/error/MapLoadingError.js","webpack://web-pwa/./src/domain/map/maplibre.fixes.js","webpack://web-pwa/./src/domain/map/tools/useMapBoundsInteraction.js","webpack://web-pwa/./src/domain/map/MapProvider.jsx","webpack://web-pwa/./src/domain/map/DynamicMap.less?a5fe","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItem.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenu.less?a138","webpack://web-pwa/./src/domain/map/contextmenu/contextmenu.utils.js","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemItineraryAddStep.jsx","webpack://web-pwa/./src/domain/map/contextmenu/contextmenu.constants.js","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemItineraryFrom.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemItineraryTo.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemShowAddress.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemShowCity.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemShowDepartment.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemShowRegion.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenu.jsx","webpack://web-pwa/./src/domain/map/debug/FPS.jsx","webpack://web-pwa/./src/domain/map/debug/FPS.less?bf25","webpack://web-pwa/./src/domain/map/debug/BboxDebugger.jsx","webpack://web-pwa/./src/domain/map/debug/ZoomDebugger.jsx","webpack://web-pwa/./src/domain/map/tools/ZoomButtons.less?5296","webpack://web-pwa/./src/domain/map/debug/MapDebugger.jsx","webpack://web-pwa/./src/domain/map/markers/AddressMarker.jsx","webpack://web-pwa/./src/domain/map/markers/AddressMarker.less?6e27","webpack://web-pwa/./src/domain/map/markers/AddressMarkersContainer.jsx","webpack://web-pwa/./src/domain/map/markers/GeolocMarker.jsx","webpack://web-pwa/./src/domain/utils/useCompass.js","webpack://web-pwa/./src/domain/map/markers/GeolocMarker.less?c358","webpack://web-pwa/./src/domain/map/popup/Popup.jsx","webpack://web-pwa/./src/domain/map/popup/Popup.less?62d0","webpack://web-pwa/./src/domain/map/raster/useLayersManager.js","webpack://web-pwa/./src/domain/map/raster/useIntegerZoom.js","webpack://web-pwa/./src/domain/map/useMapZoomHandler.js","webpack://web-pwa/./src/domain/map/useMapPerfMetrics.js","webpack://web-pwa/./src/domain/map/useMapMoveHandler.js","webpack://web-pwa/./src/domain/map/useMapPaddingHandler.js","webpack://web-pwa/./src/domain/map/tools/useTooltip.js","webpack://web-pwa/./src/domain/map/vector/HdTooltip.jsx","webpack://web-pwa/./src/domain/map/vector/HdTooltip.less?571b","webpack://web-pwa/./src/domain/map/common/LayerButtons.less?fa65","webpack://web-pwa/./src/domain/map/common/LayerButton.jsx","webpack://web-pwa/./src/domain/map/common/LayersButtons.less?447d","webpack://web-pwa/./src/domain/map/common/LayersButtonsConfig.js","webpack://web-pwa/./src/domain/map/common/LayersButtons.jsx","webpack://web-pwa/./src/domain/map/raster/RasterMap.jsx","webpack://web-pwa/./src/domain/map/shape/MapAddressContour.jsx","webpack://web-pwa/./src/domain/map/tools/Copyrights.less?482c","webpack://web-pwa/./src/domain/map/tools/Copyrights.jsx","webpack://web-pwa/./src/domain/map/tools/GeolocButton.less?c64a","webpack://web-pwa/./src/domain/map/tools/GeolocButton.jsx","webpack://web-pwa/./src/domain/map/tools/Logo.jsx","webpack://web-pwa/./src/domain/map/tools/Logo.less?2072","webpack://web-pwa/./src/domain/map/tools/OutdoorButton.jsx","webpack://web-pwa/./src/domain/map/tools/OutdoorButton.less?90b1","webpack://web-pwa/./src/domain/map/tools/Scale.js","webpack://web-pwa/./src/domain/map/tools/ToggleFullScreenGeButton.jsx","webpack://web-pwa/./src/domain/map/tools/ToggleFullScreenGeButton.less?d973","webpack://web-pwa/./src/domain/map/tools/ToggleFullscreenPeButton.jsx","webpack://web-pwa/./src/domain/map/tools/ToggleFullscreenPeButton.less?e669","webpack://web-pwa/./src/domain/map/tools/TrafficLegend.jsx","webpack://web-pwa/./src/domain/map/tools/TrafficLegend.less?dcda","webpack://web-pwa/./src/domain/map/tools/ZoomButtons.jsx","webpack://web-pwa/./src/domain/map/vector/MapTooSlowTooltip.jsx","webpack://web-pwa/./src/domain/map/vector/MapTooSlowTooltip.less?a8d9","webpack://web-pwa/./src/domain/map/vector/VectorMap.jsx","webpack://web-pwa/./src/domain/map/vector/useClickMyMapLayers.js","webpack://web-pwa/./src/domain/map/useMapPointerHandler.js","webpack://web-pwa/./src/domain/map/vector/useClickMapEventsHandler.js","webpack://web-pwa/./src/domain/map/DynamicMap.jsx","webpack://web-pwa/./src/domain/map/StaticMap.jsx","webpack://web-pwa/./src/domain/genericComponents/AskForUpdate.jsx","webpack://web-pwa/./src/domain/genericComponents/AskForUpdate.less?ef67","webpack://web-pwa/./src/domain/map/Map.jsx","webpack://web-pwa/./src/domain/map/MapContext.jsx","webpack://web-pwa/./src/domain/map/markers/ImageMarker.jsx","webpack://web-pwa/./src/domain/map/markers/IconMarker.jsx","webpack://web-pwa/./src/domain/map/markers/IconMarker.less?3313","webpack://web-pwa/./src/domain/map/markers/RubricMarker.jsx","webpack://web-pwa/./src/domain/map/markers/Marker.jsx","webpack://web-pwa/./src/domain/map/markers/Marker.less?619e","webpack://web-pwa/./src/domain/menu/CategorySubMenuStyle.jsx","webpack://web-pwa/./src/domain/menu/MenuApplicationItem.jsx","webpack://web-pwa/./src/domain/menu/MenuSubCategoriesPE.less?f85a","webpack://web-pwa/./src/domain/menu/MenuSubCategoriesPE.jsx","webpack://web-pwa/./src/domain/menu/MenuCategoriesPE.jsx","webpack://web-pwa/./src/domain/menu/MenuCategoriesPE.less?691d","webpack://web-pwa/./src/domain/menu/MenuCategoryItem.jsx","webpack://web-pwa/./src/domain/menu/MenuCategoryItem.less?6f21","webpack://web-pwa/./src/domain/menu/MenuSubCategoryItem.jsx","webpack://web-pwa/./src/domain/menu/usePublisherBarreCategorieTag.js","webpack://web-pwa/./src/domain/seo/footer/seo-footer.selectors.js","webpack://web-pwa/./src/utils/keyboard.constants.js","webpack://web-pwa/./src/domain/suggest/SuggestContent.less?14aa","webpack://web-pwa/./src/domain/suggest/SuggestFavoritesContent.jsx","webpack://web-pwa/./src/domain/suggest/SuggestSearchHistoryContent.jsx","webpack://web-pwa/./src/domain/suggest/SuggestServiceContent.jsx","webpack://web-pwa/./src/domain/suggest/SuggestClearHistory.jsx","webpack://web-pwa/./src/domain/suggest/SuggestClearHistory.less?7aaa","webpack://web-pwa/./src/domain/suggest/SuggestContentError.jsx","webpack://web-pwa/./src/domain/suggest/SuggestContentError.less?3f67","webpack://web-pwa/./src/domain/suggest/SuggestContent.jsx","webpack://web-pwa/./src/domain/suggest/SuggestItem.less?6cfe","webpack://web-pwa/./src/domain/suggest/SuggestItem.jsx","webpack://web-pwa/./src/domain/suggest/SuggestContentList.jsx","webpack://web-pwa/./src/domain/suggest/SuggestContentList.less?e46d","webpack://web-pwa/./src/domain/suggest/useIncentiveClick.js","webpack://web-pwa/./src/domain/ui/ImageWithFallback.jsx","webpack://web-pwa/./src/domain/ui/ImageWithFallback.less?df04","webpack://web-pwa/./src/domain/ui/useHeaderHeight.js","webpack://web-pwa/./src/domain/ui/useModal.js","webpack://web-pwa/./src/domain/utils/DelayComponent.jsx","webpack://web-pwa/./src/domain/utils/SwitchInput.jsx","webpack://web-pwa/./src/domain/utils/useEffectExceptMount.js","webpack://web-pwa/./src/domain/utils/SwitchInput.less?d8a4","webpack://web-pwa/./src/domain/utils/color.js","webpack://web-pwa/./src/domain/utils/css.js","webpack://web-pwa/./src/domain/utils/useDebounce.js","webpack://web-pwa/./src/domain/utils/useTimeout.js","webpack://web-pwa/./src/domain/utils/useToggle.js","webpack://web-pwa/./src/routes/routeService.js","webpack://web-pwa/./src/store/itineraryOptions/itineraryOptions.actions.js","webpack://web-pwa/./src/store/itineraryOptions/itineraryOptions.dataParsers.js","webpack://web-pwa/./src/store/location/location.actions.js","webpack://web-pwa/./src/domain/suggest/SuggestError.js","webpack://web-pwa/./src/store/suggest/suggest.dataParser.js","webpack://web-pwa/./src/store/suggest/suggest.actions.js","webpack://web-pwa/./src/dataSource/suggest/suggest.requests.js","webpack://web-pwa/./src/store/search/searchHistory/searchHistory.selectors.js","webpack://web-pwa/./src/store/suggest/suggest.selectors.js","webpack://web-pwa/./src/store/suggest/suggest.service.constants.js","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserManageFavorite.less?ffd6","webpack://web-pwa/./src/domain/header/Header.less?4029","webpack://web-pwa/./src/domain/itinerary/ModeSelector.less?4832","webpack://web-pwa/./src/domain/menu/MenuSubCategoryItem.less?8f0c"],"sourcesContent":["import React from 'react'\nimport RectangleActionButton, { SIZE_BIG } from '../genericComponents/buttons/RectangleActionButton'\nimport { TAG_CLICK_USER_LOGIN_BUTTON } from '../analytics/analytics.tagids.constants'\nimport { withUserKnown } from './shared/withKeycloak'\nimport { useSelector } from 'react-redux'\nimport { selectPrevFullRouteNonPageLess } from '../../store/history/history.selectors'\nimport useKeycloak from './useKeycloak'\n\nconst UserLoginButton = ({ size = SIZE_BIG }) => {\n const { loaded, keycloak } = useKeycloak()\n const lastFullRoute = useSelector(selectPrevFullRouteNonPageLess)\n\n if (!loaded) return <>\n\n const loginUrl = keycloak.createLoginUrl({ redirectUri: `${location.origin}${lastFullRoute}` })\n\n return (\n \n )\n}\n\nexport default withUserKnown(UserLoginButton)\n","import classnames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsUserConnected, selectUserPicture } from '../../store/userAccount/userAccount.selectors'\nimport s from './UserPicture.less'\nimport compteUser from './assets/compte-user.svg?raw'\n\nconst UserPicture = ({ wrapperClassName, defaultIconClassName, userPicClassName }) => {\n const connected = useSelector(selectIsUserConnected)\n const picture = useSelector(selectUserPicture)\n const shouldDisplayPicture = connected && picture\n\n return (\n
\n
\n \n {shouldDisplayPicture && (\n
\n )}\n
\n
\n )\n}\n\nexport default UserPicture\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"Qd68O\",\"circle\":\"SmO1O\",\"defaultIcon\":\"wKABM\",\"connected\":\"yoNmq\",\"userPic\":\"gmxBL\"};","import React, { useEffect, useState } from 'react'\nimport { useTemporaryVisible } from '../../../genericComponents/useTemporaryVisible'\nimport { useT } from '../../../i18n/T'\nimport StatusMessage from '../../../genericComponents/StatusMessage'\n\n// webpack:BrowserOnly\nconst UserFavoriteError = ({ marginTop = 10, error }) => {\n const [text, setText] = useState()\n const [visible, setVisible] = useTemporaryVisible()\n\n useEffect(() => {\n if (error) {\n setText(error?.name ?? 'Error')\n setVisible(true)\n }\n }, [error])\n\n return \n}\n\nexport default UserFavoriteError\n","export const INCENTIVE_NAME = {\n incitationPrincipale: 'incitationPrincipale',\n incitationOptionDeplacement: 'incitationOptionDeplacement',\n incitationOptionReponse: 'incitationOptionReponse',\n incitationPOI: 'incitationPOI'\n}\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport {\n selectIsUserConnected,\n selectIsUserKnown,\n selectIsUserNotConnected\n} from '../../../store/userAccount/userAccount.selectors'\n\n/* eslint-disable react/display-name */\nexport const withUserConnected = Component => props => {\n if (__SERVER__) return <>\n\n const isConnected = useSelector(selectIsUserConnected)\n\n return isConnected ? : null\n}\n\n/* eslint-disable react/display-name */\nexport const withUserNotConnected = Component => props => {\n if (__SERVER__) return <>\n\n const isNotConnected = useSelector(selectIsUserNotConnected)\n\n return isNotConnected ? : null\n}\n\nexport const withUserKnown = Component => props => {\n if (__SERVER__) return <>\n\n const isKnown = useSelector(selectIsUserKnown)\n\n return isKnown ? : null\n}\n\nexport const withUserUnknown = Component => props => {\n if (__SERVER__) return <>\n\n const isKnown = useSelector(selectIsUserKnown)\n\n return !isKnown ? : null\n}\n","import debug from 'debug'\nimport KeycloakJs from 'keycloak-js'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { getService } from '../../parameters'\nimport SERVICES from '../../services.constants'\nimport { USER_SCREENS } from '../../store/ui/ui.constants'\nimport { setUiUserScreen } from '../../store/ui/uiSlice'\nimport {\n setUserAccountConnected,\n setUserAccountNotConnected,\n setUserAccountToken\n} from '../../store/userAccount/userAccountSlice'\nimport { pick } from '../../utils/object'\nimport { USER_ID_LEGACY, USER_ID_SUB } from './UserAccount.constants'\n\nconst d = debug('keycloak')\n\n// webpack:BrowserOnly\n\nexport const EXPIRATION_SECONDS = 60\n\nlet keycloak\n\nexport const setKeycloakForTestOnly = kc => {\n keycloak = kc\n}\n\nconst useKeycloak = () => {\n const [loaded, setLoaded] = useState(Boolean(keycloak))\n\n useEffect(() => {\n if (keycloak) {\n setLoaded(true)\n } else {\n keycloak = new KeycloakJs({\n url: getService(SERVICES.KEYCLOAK).url,\n realm: 'mappy',\n clientId: 'web-login'\n })\n keycloak\n .init({\n onLoad: 'check-sso',\n responseMode: 'query',\n silentCheckSsoFallback: false,\n silentCheckSsoRedirectUri: window.location.origin + '/silent-check-sso.html'\n })\n .then(authenticated => {\n setLoaded(true)\n d(`User is ${authenticated ? 'authenticated' : 'not authenticated'}`)\n })\n .catch(error => {\n console.error('Failed to initialize adapter:', error)\n })\n }\n }, [])\n\n return { loaded, keycloak }\n}\n\nexport const useKeycloakEngine = () => {\n const { loaded, keycloak } = useKeycloak()\n const dispatch = useDispatch()\n const timeoutRef = useRef()\n\n useEffect(() => {\n if (loaded) {\n if (keycloak?.authenticated === true) {\n const token = keycloak.token\n d('keycloak.idTokenParsed', keycloak.idTokenParsed)\n const identity = pick(keycloak.idTokenParsed, ['name', 'picture', 'email', USER_ID_LEGACY, USER_ID_SUB])\n d('connected, token', token, 'idTokenParsed', keycloak.idTokenParsed)\n dispatch(setUserAccountConnected({ token, identity }))\n } else if (keycloak.authenticated === false) {\n d('not connected')\n dispatch(setUserAccountNotConnected())\n }\n setUiUserScreen({ name: USER_SCREENS.default })\n }\n }, [loaded, keycloak?.authenticated])\n\n const updateAndSaveToken = useCallback(\n () =>\n loaded &&\n keycloak\n .updateToken(EXPIRATION_SECONDS)\n .then(hasTokenBeenRefreshed => {\n d('updateToken - hasTokenBeenRefreshed', hasTokenBeenRefreshed, 'new token', keycloak.token)\n if (keycloak.token) {\n dispatch(setUserAccountToken(keycloak.token))\n }\n })\n .catch(e => {\n d('updateToken failed - disconnect user', e)\n dispatch(setUserAccountNotConnected())\n }),\n [loaded, keycloak]\n )\n\n useEffect(() => {\n const checkIfTokenWillExpire = () => {\n if (loaded && keycloak?.authenticated) {\n d('checkIfTokenWillExpire')\n if (keycloak.isTokenExpired(EXPIRATION_SECONDS)) {\n d('isTokenExpired:true')\n updateAndSaveToken()\n }\n timeoutRef.current = setTimeout(checkIfTokenWillExpire, EXPIRATION_SECONDS * 1000)\n }\n }\n if (loaded && keycloak?.authenticated) {\n timeoutRef.current = setTimeout(checkIfTokenWillExpire, EXPIRATION_SECONDS * 1000)\n }\n return () => {\n clearTimeout(timeoutRef)\n }\n }, [loaded, keycloak?.authenticated, timeoutRef])\n\n useEffect(() => {\n if (loaded && keycloak) {\n keycloak.onTokenExpired = () => {\n d('token expired')\n updateAndSaveToken()\n }\n }\n }, [loaded, keycloak])\n}\n\nexport default useKeycloak\n","import classnames from 'classnames'\nimport React, { useEffect, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { selectIsCorrespondingPageAdConfigLoaded, selectPageIdForAdConfig } from '../../store/ad/ad.selectors'\nimport { removeAdData, setAdData } from '../../store/ad/adSlice'\nimport { noop } from '../../utils/function'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport { ONE_SECOND_MS } from '../utils/date'\nimport useTimeout from '../utils/useTimeout'\nimport { getAdIdByAdName } from './AdConfigService'\nimport s from './AdLoader.less'\nimport { AdService } from './AdService'\n\nexport const AD_STATUS_NONE = 'AD_STATUS_NONE'\nexport const AD_STATUS_LOADING = 'AD_STATUS_LOADING'\nexport const AD_STATUS_LOADED = 'AD_STATUS_LOADED'\n\nconst useAdLoader = ({ adId, keywordsSelector = noop, askData = false }) => {\n const [adStatus, setAdStatus] = useState(AD_STATUS_NONE)\n const dispatch = useDispatch()\n const keywords = useSelector(keywordsSelector)\n\n useEffect(() => {\n // keywords selectors must return <> if there is no keywords available\n if (keywords === null || !adId) return\n\n switch (adStatus) {\n case AD_STATUS_NONE: {\n setAdStatus(AD_STATUS_LOADING)\n\n AdService.createAd(adId)\n .then(() => AdService.setAdKeywords(adId, keywords))\n .then(() => AdService.loadAd(adId))\n .then(() => askData && AdService.getAdData(adId).then(data => dispatch(setAdData({ adId, data }))))\n .then(() => setAdStatus(AD_STATUS_LOADED))\n .catch(error => console.error('AdLoader loading error', error))\n break\n }\n\n case AD_STATUS_LOADED: {\n setAdStatus(AD_STATUS_LOADING)\n dispatch(removeAdData(adId))\n\n AdService.setAdKeywords(adId, keywords)\n .then(() => AdService.reloadAd(adId))\n .then(() => askData && AdService.getAdData(adId).then(data => dispatch(setAdData({ adId, data }))))\n .then(() => setAdStatus(AD_STATUS_LOADED))\n .catch(error => console.error('AdLoader reload', error))\n\n break\n }\n }\n }, [JSON.stringify(keywords)])\n\n useEffect(() => {\n // sometimes, the ad api does resolve or reject the promise, so we do not keep loading status more than 5s, because it blocks refresh\n let timeoutId\n if (adStatus === AD_STATUS_LOADING) {\n timeoutId = setTimeout(() => setAdStatus(AD_STATUS_LOADED), 5 * ONE_SECOND_MS)\n }\n return () => clearTimeout(timeoutId)\n }, [adStatus])\n\n useEffect(\n () => () => {\n if (adId) {\n AdService.deleteAd(adId).catch(error => console.error('AdLoader remove error', error))\n dispatch(removeAdData(adId))\n }\n },\n []\n )\n\n return adStatus === AD_STATUS_LOADED\n}\n\nexport const BaseAdLoader = ({ adName, className, keywordsSelector, children, askData, placeHolderHeight }) => {\n const pageId = useSelector(selectPageIdForAdConfig)\n const adId = getAdIdByAdName(adName, pageId)\n const [visible, setVisible] = useState(AdService.isAdLibraryAvailable())\n\n useAdLoader({ adId, keywordsSelector, askData })\n\n const [pendingLoadTimeout, setPendingLoadTimeout] = useState(true)\n const [setTimeout] = useTimeout(2500) // delay to let the ad load\n useEffect(() => {\n setTimeout(() => {\n setPendingLoadTimeout(false)\n setVisible(AdService.isAdLibraryAvailable())\n })\n }, [setPendingLoadTimeout])\n\n if (!visible) return <> // if adblocker\n\n return (\n // placeholder until ad is loaded\n
\n {children}\n
\n
\n )\n}\n\nexport default withEmptyFallbackErrorBoundary(function AdLoader({ adName, placeHolderHeight = 0, ...restProps }) {\n const isConfigLoaded = useSelector(state => selectIsCorrespondingPageAdConfigLoaded(state, adName))\n\n if (!isConfigLoaded) return
// placeholder until page configuration is loaded\n\n return \n})\n","// extracted by mini-css-extract-plugin\nexport default {\"hidden\":\"nL4Ol\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"NyDlD\",\"leftPart\":\"CNNGD\",\"qrcodeWrapper\":\"dJn7D\",\"instructions\":\"Woidx\",\"storeButton\":\"qnlJa\",\"androidButton\":\"jvkGE\",\"iosButton\":\"xF2zA\",\"rightPart\":\"rNDPS\",\"title\":\"sEkur\",\"advantagesList\":\"HsgP2\",\"advantagesItem\":\"vTObo\",\"advantagesIcon\":\"kE_cS\",\"closeButton\":\"itsJI\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { APPLE_STORE_URL, PLAY_STORE_URL } from '../../parameters'\nimport { TAG_BLOCK_AUTOPROMO } from '../analytics/analytics.tagids.constants'\nimport { MODAL_IDS } from '../../store/ui/ui.constants'\nimport analyticsConstants from '../analytics/analytics.constants'\nimport Modal from '../genericComponents/Modal'\nimport TagActionLink from '../genericComponents/TagActionLink'\nimport cross from '../genericComponents/assets/cross.svg'\nimport france from '../genericComponents/assets/france.svg'\nimport mappyLogoOutline from '../genericComponents/assets/mappy-logo-outline.svg'\nimport roadRadar from '../genericComponents/assets/road-radar.svg'\nimport SVGIcon from '../svg/SVGIcon'\nimport useModal from '../ui/useModal'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './AutoPromoPopinGE.less'\nimport qrcode from './assets/qrcode-stores.png'\n\nconst StoreButton = ({ url, className, appstore }) => {\n return (\n \n )\n}\n\nconst AutoPromoPopinGE = () => {\n const { hideModal } = useModal(MODAL_IDS.AUTO_PROMO_POPIN)\n const onPopinClose = useEventCallback(hideModal)\n\n return (\n \n
\n \n
\n
\n
\n
\n \n
\n
    \n
  1. \n Scannez le QR Code avec l'appareil photo de votre téléphone\n
  2. \n
  3. \n Cliquez sur le lien\n
  4. \n
  5. \n Téléchargez l'app\n
  6. \n
\n
\n \n \n
\n
\n
\n
Pour une expérience complète, téléchargez l'application Mappy
\n
    \n
  • \n
    \n \n
    \n
    Un GPS efficace et gratuit
    \n
  • \n
  • \n
    \n \n
    \n
    Trafic en temps réel, zones de contrôle et alertes dépassement de vitesse
    \n
  • \n
  • \n
    \n \n
    \n
    100% made in France qui respecte la vie privée
    \n
  • \n
\n
\n
\n
\n )\n}\n\nexport default AutoPromoPopinGE\n","import React from 'react'\nimport { TAG_BLOCK_AUTOPROMO } from '../analytics/analytics.tagids.constants'\nimport { MODAL_IDS } from '../../store/ui/ui.constants'\nimport analyticsConstants from '../analytics/analytics.constants'\nimport qrcode from '../genericComponents/assets/qrcode.svg'\nimport RectangleActionButton, {\n COLOR_GREY_EMPTY,\n SIZE_NORMAL\n} from '../genericComponents/buttons/RectangleActionButton'\nimport { withFrenchSite } from '../i18n/i18nSite'\nimport useModal from '../ui/useModal'\nimport useErrorBoundaryCallback from '../utils/useErrorBoundaryCallback'\nimport AutoPromoPopinGE from './AutoPromoPopinGE'\n\nconst AutoPromoOpenButton = ({ size = SIZE_NORMAL, area }) => {\n const { displayModal } = useModal(MODAL_IDS.AUTO_PROMO_POPIN)\n\n const onButtonClick = useErrorBoundaryCallback(displayModal)\n\n return (\n <>\n \n \n \n )\n}\n\nexport default withFrenchSite(AutoPromoOpenButton)\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"QECe9\",\"breadcrumbs\":\"ElTrW\"};","import React from 'react'\nimport T from '../i18n/T'\nimport s from './BreadcrumbItem.less'\n\nconst BreadcrumbItem = props => {\n const { labelKey, labelArgs, url, idx } = props\n\n return (\n
  • \n {url ? (\n \n {labelKey && }\n \n ) : (\n {labelKey && }\n )}\n \n
  • \n )\n}\n\nexport default BreadcrumbItem\n","// extracted by mini-css-extract-plugin\nexport default {\"breadcrumbItem\":\"r3WBM\",\"breadcrumbLink\":\"pfDNZ\"};","import React from 'react'\nimport s from './Breadcrumbs.less'\nimport { useSelector } from 'react-redux'\nimport { selectBreadcrumbs } from '../../store/seo/seo.selectors'\nimport BreadcrumbItem from './BreadcrumbItem'\n\nconst Breadcrumbs = () => {\n const breadcrumbs = useSelector(selectBreadcrumbs)\n\n return (\n
    \n
      \n {(breadcrumbs || []).map(({ labelKey, labelArgs, url }, idx) => (\n \n ))}\n
    \n
    \n )\n}\n\nexport default Breadcrumbs\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"hcfIs\",\"infos\":\"zELRQ\",\"content\":\"QxhiP\",\"textContainer\":\"NeOPQ\",\"title\":\"WYepC\",\"text\":\"OyWEE\"};","import classnames from 'classnames'\nimport React from 'react'\nimport { APPS_ADJUST_URL } from '../../parameters'\nimport { TAG_BLOCK_AUTOPROMO } from '../analytics/analytics.tagids.constants'\nimport analyticsConstants from '../analytics/analytics.constants'\nimport RectangleActionButton, { COLOR_GREEN, SIZE_NORMAL } from '../genericComponents/buttons/RectangleActionButton'\nimport TagActionLink from '../genericComponents/TagActionLink'\nimport { withFrenchSite } from '../i18n/i18nSite'\nimport prefooterDevicePng from './assets/prefooter_image.png'\nimport prefooterDeviceWebp from './assets/prefooter_image.webp'\nimport s from './FooterAppAutoPromo.less'\nimport ImageWithFallback from '../ui/ImageWithFallback'\n\nconst FooterAppAutoPromo = ({ className }) => {\n return (\n
    \n
    \n \n
    \n
    \n {\"Laissez vous guider par le GPS de l'application Mappy\"}\n {'Info trafic, alertes de vitesse et radars'}\n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n )\n}\n\nexport default withFrenchSite(FooterAppAutoPromo)\n","import React from 'react'\nimport T from '../i18n/T'\nimport s from './FooterCocorico.less'\nimport frenchFlag from './french-flag.svg'\n\nconst FooterCocorico = () => {\n return (\n
    \n
    \n \"drapeau\n
    \n \n
    \n )\n}\n\nexport default FooterCocorico\n","// extracted by mini-css-extract-plugin\nexport default {\"cocorico\":\"vEsdL\",\"frenchFlag\":\"qo_Zj\"};","import React from 'react'\nimport { TAG_CLICK_HELP_BUTTON } from '../../analytics/analytics.tagids.constants'\nimport TagActionLink from '../../genericComponents/TagActionLink'\nimport question from '../../genericComponents/assets/question.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './FooterContact.less'\n\nexport default function FooterContact(props) {\n return (\n
    \n \n \n \n \n
    \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"link\":\"gXpPZ\"};","// extracted by mini-css-extract-plugin\nexport default {\"footerInfosHover\":\"g8qaV\",\"title\":\"Sd1SL\",\"chevron\":\"ELG48\",\"content\":\"HyCVJ\",\"LogoGroupe\":\"eA3Rq\",\"LogoMappy\":\"hJG03\",\"flag\":\"TZiRn\",\"France\":\"MZkqe\",\"Belgium\":\"m6tGi\",\"UnitedKingdom\":\"xCe7w\",\"block\":\"bptyn\"};","// extracted by mini-css-extract-plugin\nexport default {\"socialNetworkList\":\"HOmwj\",\"button\":\"LE5bN\",\"facebook\":\"b16m9\",\"twitter\":\"nnSji\",\"blog\":\"dNnmX\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { TAG_FOOTER_SOCIAL_NETWORKS_LINKS } from '../../analytics/analytics.tagids.constants'\nimport TagActionLink from '../../genericComponents/TagActionLink'\nimport facebook from '../../genericComponents/assets/facebook.svg'\nimport rss from '../../genericComponents/assets/rss.svg'\nimport twitter from '../../genericComponents/assets/twitter.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './SocialNetworkButtons.less'\n\nexport default function SocialNetworkButtons(props) {\n return (\n
      \n
    • \n \n
    • \n
    • \n \n
    • \n
    • \n \n
    • \n
    \n )\n}\n\nexport function FacebookButton(props) {\n return (\n \n \n \n )\n}\n\nexport function TwitterButton(props) {\n return (\n \n \n \n )\n}\n\nexport function BlogButton(props) {\n return (\n \n \n \n )\n}\n","import classNames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsFrenchSite } from '../../../store/navigation/navigation.selectors'\nimport Details from '../../genericComponents/Details'\nimport tooltipRight from '../../genericComponents/assets/tooltip-right.svg'\nimport logoMappy from '../../genericComponents/logo-mappy.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport FooterContact from './FooterContact'\nimport s from './FooterInfos.less'\nimport SocialNetworkButtons from './SocialNetworkButtons'\nimport logoRatpEn from './logo-ratp-group-en.png'\nimport logoRatpFr from './logo-ratp-group-fr.png'\nimport logoRSS from './logo-ratp-ss.png'\nimport logoBonjour from './logo_bonjour.svg'\n\nconst FooterInfos = () => {\n const isFR = useSelector(selectIsFrenchSite)\n return (\n \n \n \n \n }\n classes={[s.footerInfosHover]}\n toggleClasses={[s.chevron]}\n >\n
    \n
    \n \n
    \n {isFR && renderSocialNetworks()}\n {isFR && renderB2B()}\n {renderLanguagesWebsites()}\n {isFR ? renderFrenchContent() : renderInternationalContent()}\n {renderGroupLogos(isFR)}\n
    \n \n )\n}\n\nconst renderFrenchContent = () => {\n return (\n <>\n
    \n
    \n \n
    \n
      \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n \n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Recrutement\n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Blog Mappy\n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Presse\n \n {' | '}\n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Partenaires\n \n
    • \n
    \n
    \n
    \n
    Vos questions
    \n
      \n
    • \n {/* eslint-disable react/jsx-no-target-blank */}\n \n \n \n {' | '}\n \n Vie privée\n \n {' | '}\n \n \n \n {/* eslint-enable react/jsx-no-target-blank */}\n
    • \n
    • \n \n FAQ - Nous contacter\n \n
    • \n
    • \n {/* eslint-disable react/jsx-no-target-blank */}\n \n Couverture transports en commun\n \n {/* eslint-enable react/jsx-no-target-blank */}\n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Mappy photographie votre ville\n \n
    • \n
    \n
    \n \n )\n}\n/* eslint-disable react/jsx-no-target-blank */\n\nconst renderInternationalContent = () => {\n return (\n <>\n
    \n
    \n \n
    \n
      \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n \n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n \n {' '}\n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    \n
    \n \n )\n}\n\nconst renderB2B = () => {\n return (\n
    \n
    Solutions
    \n
      \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n API\n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Mappy sur mobile\n \n
    • \n
    \n
    \n )\n}\n\nconst renderGroupLogos = isFR => {\n return (\n \n )\n}\n\nconst renderLanguagesWebsites = () => {\n return (\n \n )\n}\n\nconst renderSocialNetworks = () => {\n return (\n
    \n
    Actualité
    \n Retrouvez Mappy sur...\n \n
    \n )\n}\n\nexport default FooterInfos\n","// extracted by mini-css-extract-plugin\nexport default {\"FooterPrivacy\":\"JxW6E\",\"FooterPrivacyLink\":\"JahP_\"};","import React from 'react'\nimport CMPService from '../../cmp/CMPService'\nimport lock from '../../genericComponents/assets/lock.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './FooterPrivacy.less'\n\nconst FooterPrivacy = () => {\n const onPrivacyOpen = useEventCallback(() => CMPService.open())\n\n return (\n
    \n \n \n \n \n {' | '}\n \n \n \n
    \n )\n}\n\nexport default FooterPrivacy\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"hT3a1\"};","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport TopSearchItem from '../../genericComponents/topSearch/TopSearchItem'\nimport { selectTopSearchLinks } from '../../../store/seo/seo.selectors'\nimport s from './TopSearchLinks.less'\nimport { selectShouldDisplayTopSearchTitle } from './seo-footer.selectors'\nimport T from '../../i18n/T'\n\nconst ID = 'TopSearchLinks'\n\nexport const TopSearchLinks = () => {\n const topSearchLinks = useSelector(selectTopSearchLinks)\n const shouldDisplayTitle = useSelector(selectShouldDisplayTopSearchTitle)\n\n if (__BROWSER__) {\n const element = document.getElementById(ID)\n return element ? (\n
    \n ) : null\n }\n\n if (!topSearchLinks || topSearchLinks.length === 0) return <>\n\n return (\n
    \n {shouldDisplayTitle === true && (\n

    \n \n

    \n )}\n {topSearchLinks.map((links, idx) => (\n \n ))}\n
    \n )\n}\n\nexport default TopSearchLinks\n","import React from 'react'\nimport { selectShouldDisplayTopSearch } from '../../store/seo/seo.selectors'\nimport Details from '../genericComponents/Details'\nimport magnifyingGlass from '../genericComponents/assets/magnifying-glass.svg'\nimport T from '../i18n/T'\nimport TopSearchLinks from '../seo/footer/TopSearchLinks'\nimport SVGIcon from '../svg/SVGIcon'\nimport { withEverySelectorTruthy } from '../utils/react-redux'\nimport s from './FooterTopSearch.less'\n\nexport const FooterTopSearch = () => (\n \n \n \n \n }\n classes={[s.topSearchHover]}\n toggleClasses={[s.chevron]}\n >\n \n \n)\n\nexport default withEverySelectorTruthy(selectShouldDisplayTopSearch)(FooterTopSearch)\n","// extracted by mini-css-extract-plugin\nexport default {\"topSearchHover\":\"F1JNF\",\"chevron\":\"K9qC8\"};","import classNames from 'classnames'\nimport React from 'react'\nimport Breadcrumbs from '../seo/Breadcrumbs'\n\nimport FooterAppAutoPromo from '../autopromo/FooterAppAutoPromo'\nimport { selectAreGeoentitiesDisplayedAsList } from '../../store/ui/ui.selectors'\nimport { useSelector } from 'react-redux'\nimport { selectIsSearchPage } from '../../store/history/history.selectors'\nimport s from './Footer.less'\nimport FooterCocorico from './FooterCocorico'\nimport FooterInfos from './footerInfos/FooterInfos'\nimport FooterPrivacy from './footerInfos/FooterPrivacy'\nimport FooterTopSearch from './FooterTopSearch'\n\nconst Footer = ({ privacy = true, displayAppAutoPromo = true }) => {\n const isSearchPage = useSelector(selectIsSearchPage)\n const geoentitiesDisplayedAsList = useSelector(selectAreGeoentitiesDisplayedAsList)\n\n return (\n
    \n {displayAppAutoPromo && }\n
    \n \n {privacy && }\n \n \n
    \n \n
    \n )\n}\n\nexport default Footer\n","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"hl0XH\",\"withBottomPadding\":\"wwjO7\",\"centered\":\"vWL09\",\"block\":\"efSnt\",\"titleForApps\":\"J_GL0\",\"detailsSpacing\":\"zM9Vd\",\"borderBottom\":\"ugOBB\"};","import React from 'react'\nimport { withOnlyPE } from '../Device'\nimport s from './Anchor.less'\n\nconst Anchor = () =>
    \n\nexport default withOnlyPE(Anchor)\n","// extracted by mini-css-extract-plugin\nexport default {\"anchor\":\"t9_nH\"};","import classnames from 'classnames'\nimport React, { useCallback } from 'react'\nimport { TAG_BACK } from '../analytics/analytics.tagids.constants'\nimport { navigateBack } from '../../store/history/history.actions'\nimport { withOnlyGE } from '../Device'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport s from './ClosePopinButton.less'\nimport TagActionButton from './TagActionButton'\nimport cross from './assets/cross.svg'\n\nconst ClosePopinButton = ({ className, hasTag }) => {\n const execNavigateBack = useAction(navigateBack)\n const useNavigateBack = useCallback(() => execNavigateBack(), [])\n\n if (!hasTag)\n return (\n
    \n \n
    \n )\n\n return (\n \n \n \n )\n}\n\nconst ClosePopinIcon = ({ className }) => (\n
    \n \n
    \n)\n\nexport const ClosePopinButtonGE = withOnlyGE(withEmptyFallbackErrorBoundary(ClosePopinButton))\n\nexport default withEmptyFallbackErrorBoundary(ClosePopinButton)\n","// extracted by mini-css-extract-plugin\nexport default {\"closeButton\":\"cEk0y\"};","// extracted by mini-css-extract-plugin\nexport default {\"Chevron\":\"foapW\",\"Content\":\"Kbb01\",\"Details\":\"PTcWj\",\"Summary\":\"H0Zjx\"};","import classNames from 'classnames'\nimport React from 'react'\nimport SVGIcon from '../svg/SVGIcon'\nimport useToggle from '../utils/useToggle'\nimport s from './Details.less'\nimport down from './assets/down.svg'\n\nexport default function Details({ summary, classes = [], toggleClasses = [], children }) {\n const [open, onClick] = useToggle()\n\n return (\n
    \n \n {summary}\n \n \n \n \n
    {children}
    \n
    \n )\n}\n","import React from 'react'\nimport RImageGallery from 'react-image-gallery'\nimport './ImageGalleryOriginal.less'\nimport './ImageGallery.less'\n\nconst ImageGallery = React.forwardRef((props, ref) => {\n return (\n \n )\n})\n\nImageGallery.displayName = 'ImageGallery'\n\nexport default ImageGallery\n","import React from 'react'\nimport RModal from 'react-modal'\nimport s from './Modal.less'\nimport ClosePopinButton from './ClosePopinButton'\nimport { useAction } from '../utils/react-redux'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport { isGE } from '../Device'\nimport { navigateBack } from '../../store/history/history.actions'\nimport { appId } from '../../App'\nimport useModal from '../ui/useModal'\nimport useEventCallback from '../utils/useEventCallback'\n\nconst customStyle = {\n overlay: {\n zIndex: 180,\n backgroundColor: 'rgba(128, 128, 128, 0.55)'\n },\n content: {\n top: '50%',\n left: '50%',\n marginRight: '-50%',\n transform: 'translate(-50%, -50%)',\n right: 'auto',\n bottom: 'auto',\n padding: 0,\n overflow: 'none',\n backgroundColor: 'white',\n borderRadius: '12px',\n border: '1px solid rgb(204, 204, 204)'\n }\n}\n\nconst Modal = ({\n modalId,\n children,\n overlayStyle = {},\n style = {},\n withCloseButton,\n hasTag = true,\n shouldNavigateBackOnClose = false,\n onClose,\n ...rModalProps\n}) => {\n const { hideModal, isModalDisplayed } = useModal(modalId)\n const execNavBack = useAction(navigateBack)\n RModal.setAppElement(`#${appId}`)\n\n const stopPropagationHandler = useEventCallback(() => {})\n\n const onRequestClose = useEventCallback(() => {\n if (onClose) {\n onClose()\n } else if (shouldNavigateBackOnClose) {\n execNavBack()\n } else {\n hideModal()\n }\n }, [shouldNavigateBackOnClose, hideModal])\n\n return (\n \n \n {withCloseButton && }\n {children}\n \n \n )\n}\n\n// webpack:BrowserOnly\nexport default withEmptyFallbackErrorBoundary(Modal)\n","// extracted by mini-css-extract-plugin\nexport default {\"modalContainer\":\"BrYsJ\",\"closeButton\":\"pkyux\"};","import React, { useEffect, useState } from 'react'\nimport { parsePositiveNumber } from '../../utils/number'\n\nconst POSITIVE_FLOAT_MAX_3_RADIX = /^[0-9]*(\\.|,)?[0-9]{0,3}$/\n\nexport const NumericInput = props => {\n const { value, onChange, onBlur } = props\n\n const [inputValue, setInputValue] = useState(value)\n\n useEffect(() => {\n setInputValue(value)\n }, [value])\n\n const handleChange = event => {\n const {\n target: { value: targetValue }\n } = event\n\n if (!targetValue || POSITIVE_FLOAT_MAX_3_RADIX.test(targetValue)) {\n setInputValue(targetValue)\n }\n onChange && onChange(event)\n }\n\n const handleClick = event => event.target.focus()\n\n const handleBlur = () => {\n const event = {\n target: {\n value: parsePositiveNumber(inputValue, 3)\n }\n }\n onBlur && onBlur(event)\n }\n\n return (\n \n )\n}\n\nexport default NumericInput\n","import React from 'react'\nimport { navigateBack } from '../../../store/history/history.actions'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './CloseUserAreaButton.less'\n\nconst CloseUserAreaButton = () => {\n const execNavigateBack = useAction(navigateBack)\n const onClose = useEventCallback(execNavigateBack)\n\n return (\n
    \n \n
    \n )\n}\n\nexport default CloseUserAreaButton\n","// extracted by mini-css-extract-plugin\nexport default {\"closeBtn\":\"gYb_D\"};","import React from 'react'\nimport LogoMappy from './logo-mappy.svg'\nimport s from './LogoMappyImg.less'\n\nconst LogoMappyImg = () => \"Mappy\"\n\nexport default LogoMappyImg\n","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"opzFO\"};","import React from 'react'\nimport CloseUserAreaButton from '../shared/CloseUserAreaButton'\nimport s from './UserAreaAnonymous.less'\nimport welcomeUserAccount from './welcome-user-account.svg'\nimport UserLoginButton from '../UserLoginButton'\nimport { withUserNotConnected } from '../shared/withKeycloak'\nimport LogoMappyImg from '../../genericComponents/LogoMappyImg'\n\nconst UserAreaAnonymous = () => (\n
    \n \n
    \n
    \n \n

    \n Le compte \n

    \n

    c’est gratuit !

    \n
      \n
    • Des itinéraires personnalisés
    • \n
    • Des infos durée et coût plus précises
    • \n
    • Mes adresses favorites sur le site et l’appli
    • \n
    \n \n
    \n
    \n
    \n)\n\nexport default withUserNotConnected(UserAreaAnonymous)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"FPmb1\",\"content\":\"vJti8\",\"defaultScreen\":\"XyQLh\",\"title1\":\"qq91z\",\"title2\":\"nBhmk\",\"list\":\"WHWRs\",\"loginButton\":\"ZBlxr\"};","import classNames from 'classnames'\nimport React from 'react'\nimport s from './UserScreenContent.less'\n\nconst UserScreenContent = ({ children }) =>
    {children}
    \n\nexport default UserScreenContent\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"isc2_\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { USER_SCREENS } from '../../../store/ui/ui.constants'\nimport { selectIsUserScreenDefault } from '../../../store/ui/ui.selectors'\nimport { setUiUserScreen } from '../../../store/ui/uiSlice'\nimport arrowLeft from '../../genericComponents/assets/arrow-left.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './UserScreenHeader.less'\n\nconst UserScreenHeader = ({ children, rightChildren, noBar = false }) => {\n const dispatch = useDispatch()\n const isDefaultScreen = useSelector(selectIsUserScreenDefault)\n\n const onBack = useEventCallback(() => dispatch(setUiUserScreen({ name: USER_SCREENS.default })))\n\n return (\n
    \n
    \n {!isDefaultScreen && (\n
    \n \n
    \n )}\n
    \n
    {children}
    \n
    {rightChildren}
    \n
    \n )\n}\n\nexport default UserScreenHeader\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"r_ECQ\",\"noBar\":\"K91Zn\",\"left\":\"QIrjP\",\"right\":\"u8YOO\",\"title\":\"RQjDM\",\"back\":\"c8v2N\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"X_Yxe\",\"favIcon\":\"J2fa4\",\"favori\":\"lxcKr\",\"actions\":\"wOAgJ\",\"actionButton\":\"NWSRB\",\"content\":\"YRmUN\",\"clickableContent\":\"PwNsM\",\"label\":\"dQmMn\",\"address\":\"q2wwJ\",\"updating\":\"LRqKn\"};","import classnames from 'classnames'\nimport React from 'react'\nimport { useDispatch } from 'react-redux'\nimport { ROUTE_ADDRESS, ROUTE_SEO_GEOENTITY } from '../../../../routes'\nimport { resetGeoentityList } from '../../../../store/geoentity/geoentitySlice'\nimport { navigateTo } from '../../../../store/history/history.actions'\nimport { setSearchTerms } from '../../../../store/search/searchSlice'\nimport ActionButton from '../../../genericComponents/buttons/ActionButton'\nimport TagActionButton from '../../../genericComponents/TagActionButton'\nimport Throbber from '../../../loading/Throbber'\nimport SVGIcon from '../../../svg/SVGIcon'\nimport { useAction } from '../../../utils/react-redux'\nimport useEventCallback from '../../../utils/useEventCallback'\nimport s from './UserFavoriteItem.less'\n\nconst FavoriteContent = ({ label, address, tagData }) => {\n return (\n \n {label ? (\n <>\n
    {label}
    \n
    {address}
    \n \n ) : (\n
    {address}
    \n )}\n
    \n )\n}\n\nexport const UserFavoriteItem = ({\n poiId,\n uuid,\n label,\n address,\n favIcon,\n action,\n actionIcon,\n allowEmpty = false,\n editTagData,\n gotoTagData\n}) => {\n const dispatch = useDispatch()\n const updating = !allowEmpty && !uuid\n const execNavigateTo = useAction(navigateTo)\n\n const onItemClick = useEventCallback(() => {\n if (!uuid) {\n action()\n } else {\n dispatch(resetGeoentityList())\n if (poiId) {\n execNavigateTo({ route: ROUTE_SEO_GEOENTITY, routeOptions: { geoentityId: poiId } })\n } else {\n dispatch(setSearchTerms(address))\n execNavigateTo({ route: ROUTE_ADDRESS, routeOptions: { location: address } })\n }\n }\n }, [uuid, label, address, poiId])\n\n const onButtonClick = useEventCallback(() => {\n action(uuid)\n })\n\n return (\n
    \n
    \n \n
    \n \n
    \n {updating ? (\n \n ) : (\n uuid && (\n \n \n \n )\n )}\n
    \n
    \n )\n}\n\nexport default UserFavoriteItem\n","import React, { useCallback, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { USER_SCREENS } from '../../../../store/ui/ui.constants'\nimport { deleteUserFavorite } from '../../../../store/userAccount/userAccount.actions'\nimport {\n selectUserFavorites,\n selectUserFavoritesLimitNotReached\n} from '../../../../store/userAccount/userAccount.selectors'\nimport RectangleActionButton, {\n COLOR_GREEN_EMPTY,\n SIZE_NORMAL\n} from '../../../genericComponents/buttons/RectangleActionButton'\nimport { useT } from '../../../i18n/T'\nimport { useAction } from '../../../utils/react-redux'\nimport UserScreenContent from '../../shared/UserScreenContent'\nimport UserScreenHeader from '../../shared/UserScreenHeader'\nimport { FAVORITE_TYPES, HOME_ICON, WORK_ICON } from '../../UserAccount.constants'\nimport UserFavoriteItem from './UserFavoriteItem'\n\nimport { TAG_CLICK_USER_FAVORITES_LIST } from '../../../analytics/analytics.tagids.constants'\nimport { setUiUserScreen } from '../../../../store/ui/uiSlice'\nimport analyticsConstants from '../../../analytics/analytics.constants'\nimport { ACTION, TYPE } from '../../../analytics/ClickTagsService'\nimport { useTemporaryVisible } from '../../../genericComponents/useTemporaryVisible'\nimport UserFavoriteError from './UserFavoriteError'\nimport s from './UserManageFavorite.less'\n\nconst buildTagData = (type, action) => ({\n type: TAG_CLICK_USER_FAVORITES_LIST,\n tagInfo: { [ACTION]: action, [TYPE]: type }\n})\n\nconst UserFavorites = () => {\n const dispatch = useDispatch()\n const { home, work, others } = useSelector(selectUserFavorites) || {}\n const execDeleteUserFavorite = useAction(deleteUserFavorite)\n const [visible, setVisible] = useTemporaryVisible()\n const [favoriteError, setFavoriteError] = useState()\n\n const manageFavorite = type => dispatch(setUiUserScreen({ name: USER_SCREENS.manageFavorite, params: { type } }))\n const deleteFavorite = useCallback(async uuid => {\n const deleteFavoriteResult = await execDeleteUserFavorite({ uuid })\n\n if (deleteFavoriteResult?.error) {\n setVisible(true)\n setFavoriteError(deleteFavoriteResult.error)\n }\n }, [])\n\n const canStillAddFavorite = useSelector(selectUserFavoritesLimitNotReached)\n\n const renderAddBtn = useCallback(() => {\n if (canStillAddFavorite) {\n return (\n manageFavorite(FAVORITE_TYPES.OTHER)}\n tagData={buildTagData(\n analyticsConstants.user.favorites.type.other,\n analyticsConstants.user.favorites.action.listAdd\n )}\n />\n )\n }\n }, [manageFavorite])\n\n return (\n <>\n {visible &&
    {favoriteError}
    }\n {'Mes lieux favoris'}\n \n \n manageFavorite(FAVORITE_TYPES.HOME)}\n label={useT('useraccount.favorite.home')}\n actionIcon={'crayon-v6'}\n allowEmpty\n editTagData={buildTagData(\n analyticsConstants.user.favorites.type.home,\n analyticsConstants.user.favorites.action.listEdit\n )}\n gotoTagData={buildTagData(\n analyticsConstants.user.favorites.type.home,\n analyticsConstants.user.favorites.action.listView\n )}\n />\n manageFavorite(FAVORITE_TYPES.WORK)}\n label={useT('useraccount.favorite.work')}\n actionIcon={'crayon-v6'}\n allowEmpty\n editTagData={buildTagData(\n analyticsConstants.user.favorites.type.work,\n analyticsConstants.user.favorites.action.listEdit\n )}\n gotoTagData={buildTagData(\n analyticsConstants.user.favorites.type.work,\n analyticsConstants.user.favorites.action.listView\n )}\n />\n {(others || []).map((other, idx) => (\n \n ))}\n \n \n )\n}\n\nexport default UserFavorites\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"mCyYc\",\"field\":\"AP75X\"};","import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react'\nimport s from './FavoriteInput.less'\nimport classNames from 'classnames'\nimport { suggestServiceCtx } from '../../../../store/suggest/suggest.service.constants'\nimport { suggest } from '../../../../store/suggest/suggest.actions'\nimport { setSuggestInputValue } from '../../../../store/suggest/suggestSlice'\n\nimport { useAction } from '../../../utils/react-redux'\nimport useDebounce from '../../../utils/useDebounce'\nimport { useDispatch } from 'react-redux'\n\nconst FavoriteInput = forwardRef((props, ref) => {\n const { value, onChange, className, placeholder } = props\n\n const dispatch = useDispatch()\n const suggestFilterType = suggestServiceCtx.filter.places\n const execSuggest = useAction(suggest)\n const [cancelSuggest, setCancelSuggest] = useState(false)\n const inputRef = useRef()\n const debouncedValue = useDebounce(value, 250)\n const hasDebouncedValueChangeOnce = useRef(false) // to ignore suggest on first render\n\n const onSubmit = useCallback(() => {\n dispatch(setSuggestInputValue(value))\n setCancelSuggest(true)\n return Promise.resolve().then(() => blur())\n }, [value])\n\n useImperativeHandle(ref, () => {\n return { onSubmit }\n })\n\n const doSuggest = val => {\n if (cancelSuggest) {\n setCancelSuggest(false)\n return Promise.resolve()\n }\n dispatch(setSuggestInputValue(val))\n return execSuggest({ terms: val, suggestFilterType })\n }\n\n useEffect(() => {\n if (hasDebouncedValueChangeOnce.current) {\n doSuggest(debouncedValue)\n }\n hasDebouncedValueChangeOnce.current = true\n }, [debouncedValue])\n\n const handleChange = event => {\n onChange && onChange({ value: event.target.value })\n }\n\n const handleFocus = e => {\n e.target.select()\n doSuggest(value)\n }\n\n const blur = () => inputRef && inputRef.current.blur()\n\n return (\n
    \n \n
    \n )\n})\n\nFavoriteInput.displayName = 'FavoriteInput'\nexport default FavoriteInput\n","import React, { useCallback, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { USER_SCREENS } from '../../../../store/ui/ui.constants'\nimport { selectFavoritePlaceholder, selectUserUIScreenParams } from '../../../../store/ui/ui.selectors'\nimport { setUiUserScreen } from '../../../../store/ui/uiSlice'\nimport {\n addOrEditHomeOrWorkUserFavorite,\n addUserOtherFavorite\n} from '../../../../store/userAccount/userAccount.actions'\nimport { selectUserFavorites } from '../../../../store/userAccount/userAccount.selectors'\nimport { pick } from '../../../../utils/object'\nimport { equalsIgnoreCase, removeHtmlEmSpanAndITags } from '../../../../utils/string'\nimport arrowLeft from '../../../genericComponents/assets/arrow-left.svg'\nimport { useTemporaryVisible } from '../../../genericComponents/useTemporaryVisible'\nimport SuggestContent from '../../../suggest/SuggestContent'\nimport SVGIcon from '../../../svg/SVGIcon'\nimport { useAction } from '../../../utils/react-redux'\nimport { FAVORITE_TYPES } from '../../UserAccount.constants'\nimport FavoriteInput from './FavoriteInput'\nimport s from './UserManageFavorite.less'\n\nconst UserManageFavorite = () => {\n const dispatch = useDispatch()\n const navigateBack = () => dispatch(setUiUserScreen({ name: USER_SCREENS.favorites }))\n const { type } = useSelector(selectUserUIScreenParams)\n const favorites = useSelector(selectUserFavorites)\n const execSaveUserOtherFavorite = useAction(addUserOtherFavorite)\n const execAddOrEditHorOrWorkUserFavorite = useAction(addOrEditHomeOrWorkUserFavorite)\n const initialValue = favorites?.[type]?.address ?? ''\n const [value, setValue] = useState(initialValue)\n const [visible, setVisible] = useTemporaryVisible()\n const [favoriteError, setFavoriteError] = useState()\n\n const placeholder = useSelector(selectFavoritePlaceholder)\n\n const onSuggestClicked = useCallback(\n async suggestion => {\n const isPoi = suggestion.type === 'poi'\n const address = removeHtmlEmSpanAndITags(isPoi ? suggestion.labels[1] : suggestion.labels.join(' '))\n\n if (equalsIgnoreCase(type, FAVORITE_TYPES.OTHER)) {\n const favorite = {\n ...(isPoi ? { label: removeHtmlEmSpanAndITags(suggestion.labels[0]) } : {}),\n address,\n type\n }\n\n const saveOtherResult = await execSaveUserOtherFavorite(favorite)\n\n if (saveOtherResult?.error) {\n setVisible(true)\n setFavoriteError(saveOtherResult.error)\n\n return\n }\n } else {\n const favorite = {\n ...pick(favorites?.[type] ?? {}, ['uuid', 'showHome']),\n address,\n type\n }\n\n const saveHomeOrWorkResult = await execAddOrEditHorOrWorkUserFavorite(favorite)\n\n if (saveHomeOrWorkResult?.error) {\n setVisible(true)\n setFavoriteError(saveHomeOrWorkResult.error)\n\n return\n }\n }\n navigateBack()\n },\n [setVisible, setFavoriteError, execAddOrEditHorOrWorkUserFavorite]\n )\n\n const onChange = ({ value: val }) => {\n setValue(val)\n }\n\n return (\n
    \n {visible &&
    {favoriteError}
    }\n
    \n
    \n \n
    \n
    e.preventDefault()}>\n \n \n
    \n
    \n \n
    \n
    \n )\n}\n\nexport default UserManageFavorite\n","import React, { useEffect } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { fetchItineraryOptionsConfig } from '../../../../store/itineraryOptions/itineraryOptions.actions'\nimport { USER_SCREENS } from '../../../../store/ui/ui.constants'\nimport { setUiUserScreen } from '../../../../store/ui/uiSlice'\nimport { withEmptyFallbackErrorBoundary } from '../../../error/EmptyFallbackErrorBoundary'\nimport RectangleActionButton, { COLOR_GREEN, SIZE_BIG } from '../../../genericComponents/buttons/RectangleActionButton'\nimport ItineraryOptions from '../../../itineraryOptions/ItineraryOptions'\nimport { useAction } from '../../../utils/react-redux'\nimport useEventCallback from '../../../utils/useEventCallback'\nimport UserScreenContent from '../../shared/UserScreenContent'\nimport UserScreenHeader from '../../shared/UserScreenHeader'\nimport s from './UserItineraryOptions.less'\n\nconst UserItineraryOptions = () => {\n const dispatch = useDispatch()\n const execFetchItineraryOptionsConfig = useAction(fetchItineraryOptionsConfig)\n\n useEffect(() => {\n execFetchItineraryOptionsConfig()\n }, [])\n\n const onValidate = useEventCallback(() => dispatch(setUiUserScreen({ name: USER_SCREENS.default })))\n\n return (\n <>\n {'Mes options de déplacement'}\n \n
    \n \n
    \n \n
    \n
    \n
    \n \n )\n}\n\nexport default withEmptyFallbackErrorBoundary(UserItineraryOptions)\n","// extracted by mini-css-extract-plugin\nexport default {\"optionsWrapper\":\"z4kb2\",\"ValidateArea\":\"SF1t2\",\"ValidateButton\":\"ZICQY\"};","import React from 'react'\nimport useEventCallback from '../../../utils/useEventCallback'\nimport TagActionButton from '../../../genericComponents/TagActionButton'\nimport { TAG_CLICK_USER_LOGOUT_BUTTON } from '../../../analytics/analytics.tagids.constants'\nimport { useSelector } from 'react-redux'\nimport { selectPrevFullRouteNonPageLess } from '../../../../store/history/history.selectors'\nimport useKeycloak from '../../useKeycloak'\n\nconst UserLogout = ({ children }) => {\n const { loaded, keycloak } = useKeycloak()\n const lastFullRoute = useSelector(selectPrevFullRouteNonPageLess)\n\n const onLogout = useEventCallback(() => {\n keycloak?.logout({ redirectUri: `${location.origin}${lastFullRoute}` })\n }, [loaded, keycloak, lastFullRoute])\n\n if (!loaded) return <>\n\n return (\n \n {children}\n \n )\n}\n\nexport default UserLogout\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"jz8gY\",\"content\":\"zqsGk\",\"avatar\":\"SSjWo\",\"username\":\"PPXlE\",\"logout\":\"Lp1YC\",\"userMenu\":\"uVTXf\",\"userMenuFooter\":\"JU6ZV\",\"userMenuItem\":\"M2Vc3\",\"userMenuItemAccount\":\"jntOS\",\"userMenuItemIcon\":\"DShSd\",\"userMenuItemLabel\":\"CZ9sE\",\"userMenuItemArrow\":\"UcCdo\",\"userMenuLogoutIcon\":\"sjI3b\"};","import React, { useCallback, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { getService } from '../../../../parameters'\nimport SERVICES from '../../../../services.constants'\nimport { TAG_CLICK_USER_ACCOUNT_BUTTON } from '../../../analytics/analytics.tagids.constants'\nimport { USER_SCREENS } from '../../../../store/ui/ui.constants'\nimport { setUiUserScreen } from '../../../../store/ui/uiSlice'\nimport { loadUserFavorites, loadUserItineraryOptions } from '../../../../store/userAccount/userAccount.actions'\nimport { selectUserName } from '../../../../store/userAccount/userAccount.selectors'\nimport { noop } from '../../../../utils/function'\nimport TagActionLink from '../../../genericComponents/TagActionLink'\nimport arrowRight from '../../../genericComponents/assets/arrow-right.svg'\nimport powerOff from '../../../genericComponents/assets/power-off.svg'\nimport { useTemporaryVisible } from '../../../genericComponents/useTemporaryVisible'\nimport SVGIcon from '../../../svg/SVGIcon'\nimport { useAction } from '../../../utils/react-redux'\nimport UserPicture from '../../UserPicture'\nimport CloseUserAreaButton from '../../shared/CloseUserAreaButton'\nimport UserScreenContent from '../../shared/UserScreenContent'\nimport useKeycloak from '../../useKeycloak'\nimport sUserManageFavorite from '../userFavorites/UserManageFavorite.less'\nimport UserLogout from './UserLogout'\nimport s from './UserMenu.less'\n\nconst UserMenuItem = ({ action = noop, icon, label }) => (\n
  • \n \n
    {label}
    \n \n
  • \n)\n\nconst UserMenuAccount = ({ url, label, tagType }) => (\n \n {label}\n \n)\n\nconst UserMenu = () => {\n const dispatch = useDispatch()\n const userName = useSelector(selectUserName)\n const execLoadUserFavorites = useAction(loadUserFavorites)\n const execLoadUserItineraryOptions = useAction(loadUserItineraryOptions)\n const { loaded, keycloak } = useKeycloak()\n const [visible, setVisible] = useTemporaryVisible()\n const [userMenuError, setUserMenuError] = useState()\n\n const accountUrl = getService(\n SERVICES.KEYCLOAK,\n `realms/mappy/mappy_account-redirection-service?token=${\n keycloak?.token\n }&referrer=web-login&logout_redirect_uri=${encodeURIComponent(\n window.location.href\n )}&delete_redirect_uri=${encodeURIComponent(window.location.origin)}`\n ).url\n\n const gotoItineraryOptionsScreen = useCallback(async () => {\n const loadItineraryOptionsResult = await execLoadUserItineraryOptions()\n\n if (loadItineraryOptionsResult?.error) {\n setVisible(true)\n setUserMenuError(loadItineraryOptionsResult.error)\n }\n\n dispatch(setUiUserScreen({ name: USER_SCREENS.itineraryOptions }))\n }, [])\n\n const gotoFavoritesScreen = useCallback(async () => {\n const loadFavoritesResult = await execLoadUserFavorites()\n\n if (loadFavoritesResult?.error) {\n setVisible(true)\n setUserMenuError(loadFavoritesResult.error)\n }\n\n dispatch(setUiUserScreen({ name: USER_SCREENS.favorites }))\n }, [])\n\n if (!loaded) return <>\n\n return (\n
    \n {visible &&
    {userMenuError}
    }\n \n \n
    \n
    \n \n
    \n
    {userName}
    \n
      \n \n \n
    \n
    \n \n \n
    \n \n \n \n Se déconnecter\n
    \n
    \n
    \n
    \n
    \n
    \n )\n}\n\nexport default UserMenu\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { USER_SCREENS } from '../../../store/ui/ui.constants'\nimport { selectUserUIScreen } from '../../../store/ui/ui.selectors'\nimport { withUserConnected } from '../shared/withKeycloak'\nimport UserFavorites from './userFavorites/UserFavorites'\nimport UserManageFavorite from './userFavorites/UserManageFavorite'\nimport UserItineraryOptions from './userItineraryOptions/UserItineraryOptions'\nimport UserMenu from './userMenu/UserMenu'\n\nconst UserAreaConnected = () => {\n const screen = useSelector(selectUserUIScreen)\n\n switch (screen) {\n case USER_SCREENS.favorites:\n return \n case USER_SCREENS.manageFavorite:\n return \n case USER_SCREENS.itineraryOptions:\n return \n case USER_SCREENS.default:\n default:\n return \n }\n}\n\nexport default withUserConnected(UserAreaConnected)\n","import React from 'react'\nimport ContentLoader from 'react-content-loader'\nimport { withUserUnknown } from './shared/withKeycloak'\nimport CloseUserAreaButton from './shared/CloseUserAreaButton'\n\nconst UserAreaPlaceHolder = () => {\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n )\n}\n\nexport default withUserUnknown(UserAreaPlaceHolder)\n","import classNames from 'classnames'\nimport React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { selectIsUserAccountEnabled } from '../../store/userAccount/userAccount.selectors'\nimport useUIDisplay from '../ui/useUIDisplay'\nimport { withEverySelectorTruthy } from '../utils/react-redux'\nimport UserAreaAnonymous from './anonymous/UserAreaAnonymous'\nimport UserAreaConnected from './connected/UserAreaConnected'\nimport { useKeycloakEngine } from './useKeycloak'\nimport s from './UserArea.less'\nimport UserAreaPlaceHolder from './UserAreaPlaceHolder'\n\n// webpack:BrowserOnly\nconst UserArea = () => {\n const { isUIDisplayed } = useUIDisplay(UI_ELEMENTS.USER)\n useKeycloakEngine()\n\n return (\n <>\n \n \n \n
    \n \n \n \n
    \n \n )\n}\n\nexport default withEverySelectorTruthy(selectIsUserAccountEnabled)(UserArea)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"rbPGM\",\"displayed\":\"nRb7m\",\"frame\":\"Lo3bS\"};","// extracted by mini-css-extract-plugin\nexport default {\"carrouselSection\":\"vQKHy\",\"carrouselTextSection\":\"ny_lL\",\"sectionTitle\":\"eejTS\",\"popinList\":\"Sat9v\",\"popinItem\":\"JuNzp\",\"icon\":\"dzcIB\",\"bullet\":\"ynt7H\",\"highlightedBullet\":\"XxGga\",\"carrouselBullets\":\"OFaFy\",\"arrowContainer\":\"ycsWM\",\"navArrow\":\"nCvma\",\"imageCarrousel\":\"Beuf0\",\"galleryWrapper\":\"zvi1K\"};","import React, { useRef, useState } from 'react'\nimport { withOnlyGE } from '../../Device'\nimport ImageGallery from '../../genericComponents/ImageGallery'\nimport arrowLeft from '../../genericComponents/assets/arrow-left.svg'\nimport arrowRight from '../../genericComponents/assets/arrow-right.svg'\nimport point from '../../genericComponents/assets/point.svg'\nimport star from '../../genericComponents/assets/star.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './UserAccountIncentiveCarrousel.less'\nimport favoriteAddressesImg from './favorite_addresses.png'\nimport favoriteAddressesImgWebp from './favorite_addresses.webp'\nimport myAlertsImg from './my_alerts.png'\nimport myAlertsWebp from './my_alerts.webp'\nimport myOptionsImg from './my_options.png'\nimport myOptionsWebp from './my_options.webp'\nimport tripPriceImg from './trip_price.png'\nimport tripPriceWebp from './trip_price.webp'\n\nconst imageList = [\n {\n alt: 'Coût des mes trajets',\n original: tripPriceImg,\n srcSet: [tripPriceWebp]\n },\n {\n alt: 'Mes adresses favorites',\n original: favoriteAddressesImg,\n srcSet: [favoriteAddressesImgWebp]\n },\n {\n alt: 'Mes options de déplacement',\n original: myOptionsImg,\n srcSet: [myOptionsWebp]\n },\n {\n alt: 'Mes alertes',\n original: myAlertsImg,\n srcSet: [myAlertsWebp]\n }\n]\n\nexport const UserAccountIncentiveCarrousel = withOnlyGE(() => {\n const [textIndex, setTextIndex] = useState(0)\n const galleryRef = useRef()\n\n const onBeforeSlide = nextIndex => {\n setTextIndex(nextIndex)\n }\n\n /*\n Calling `pause` before `slideToIndex` allows to reset the `slideInterval`\n So the `autoplay` won't use the remaining time but will reset it before sliding\n */\n const goToPreviousSlide = () => {\n galleryRef.current.pause()\n galleryRef.current.slideToIndex(galleryRef.current.getCurrentIndex() - 1)\n galleryRef.current.play()\n }\n\n const goToNextSlide = () => {\n galleryRef.current.pause()\n galleryRef.current.slideToIndex(galleryRef.current.getCurrentIndex() + 1)\n galleryRef.current.play()\n }\n\n const isBulletHighlighted = bulletIndex => (textIndex === bulletIndex ? s.highlightedBullet : s.bullet)\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n {textIndex === 0 && (\n
    \n

    Je calcule le coût exact de mes trajets

    \n
      \n
    • \n \n Prix du péage selon le véhicule\n
    • \n
    • \n \n Consommation en carburant\n
    • \n
    \n
    \n )}\n {textIndex === 1 && (\n
    \n

    Je trouve en un clic mes adresses favorites

    \n
      \n
    • \n \n Maison\n
    • \n
    • \n \n Travail\n
    • \n
    • \n \n Resto préféré...\n
    • \n
    \n
    \n )}\n {textIndex === 2 && (\n
    \n

    Je retrouve mes options sur le site et l’appli mobile

    \n
      \n
    • \n \n Type de véhicule\n
    • \n
    • \n \n Prix du carburant\n
    • \n
    • \n \n Vitesse de marche ou à vélo\n
    • \n
    \n
    \n )}\n {textIndex === 3 && (\n
    \n

    Je suis alerté des perturbations trafic

    \n
      \n
    • Aujourd’hui sur l’appli et demain sur le site web
    • \n
    \n
    \n )}\n
    \n \n \n \n \n
    \n
    \n )\n})\n","// extracted by mini-css-extract-plugin\nexport default {\"popin\":\"En97Z\",\"connectionSection\":\"MrY0e\",\"title1\":\"QGGz5\",\"title2\":\"KTMCC\",\"onCloseButton\":\"quH5P\",\"list\":\"PMlkc\",\"incentiveIllustration\":\"h5JvH\"};","import React, { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { TAG_MULTIPATH_CTA } from '../../analytics/analytics.tagids.constants'\nimport { MODAL_IDS } from '../../../store/ui/ui.constants'\nimport { selectShouldDisplayUserAccountIncentivePopin } from '../../../store/userAccount/userAccount.selectors'\nimport useConfigureAndSendTag from '../../analytics/useConfigureAndSendTag'\nimport { isPE, withOnlyPE } from '../../Device'\nimport { PUB_TAG } from '../../analytics/PublisherTagsService'\nimport LogoMappyImg from '../../genericComponents/LogoMappyImg'\nimport Modal from '../../genericComponents/Modal'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport useModal from '../../ui/useModal'\nimport useEventCallback from '../../utils/useEventCallback'\nimport UserLoginButton from '../UserLoginButton'\nimport incentiveIllustration from '../anonymous/welcome-user-account.svg'\nimport { withUserNotConnected } from '../shared/withKeycloak'\nimport { UserAccountIncentiveCarrousel } from './UserAccountIncentiveCarrousel'\nimport s from './UserAccountIncentivePopin.less'\nimport { INCENTIVE_NAME } from './incentive.constants'\n\n// webpack:BrowserOnly\nconst UserAccountIncentivePopin = () => {\n const shouldDisplayPopin = useSelector(selectShouldDisplayUserAccountIncentivePopin)\n const { displayModal, hideModal, isModalDisplayed } = useModal(MODAL_IDS.USER_ACCOUNT_INCENTIVE_POPIN)\n const configureAndSendTag = useConfigureAndSendTag()\n\n const onPopinClose = useEventCallback(hideModal)\n\n useEffect(() => {\n if (shouldDisplayPopin) {\n displayModal()\n }\n }, [shouldDisplayPopin])\n\n useEffect(() => {\n if (!isModalDisplayed) return\n\n configureAndSendTag({\n type: TAG_MULTIPATH_CTA,\n tagInfo: { tag: PUB_TAG.PUB_COMPTE_PERSO_INCITATION, Incitation: INCENTIVE_NAME.incitationPrincipale },\n isImpression: true\n })\n }, [isModalDisplayed])\n\n return (\n \n
    \n
    \n {isPE() && }\n

    \n Le compte \n

    \n

    c’est gratuit !

    \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n )\n}\n\nconst SmallScreenText = withOnlyPE(() => {\n return (\n
      \n
    • Des itinéraires personnalisés
    • \n
    • Des infos durée et coût plus précises
    • \n
    • Mes adresses favorites sur le site et l’appli
    • \n
    \n )\n})\n\nexport default withUserNotConnected(UserAccountIncentivePopin)\n","import React from 'react'\nimport { isProduction } from '../../parameters'\nimport { CMPService } from '../cmp/CMPService'\n\nconst getDomainforUtiq = () => (isProduction() ? 'mappy' : 'mappyrecette')\n\nconst UtiqLoader = () => {\n const domainForUtiq = getDomainforUtiq()\n return (\n <>\n \n \n \n )\n}\n\nexport default UtiqLoader\n","import { DidomiSDK } from '@didomi/react'\nimport React from 'react'\nimport { registerConsent } from '../../store/cmp/cmpSlice.js'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport CMPService from './CMPService'\nimport { useDispatch } from 'react-redux'\n\n// webpack:BrowserOnly\nexport default withEmptyFallbackErrorBoundary(function CMPPlaceholder() {\n const dispatch = useDispatch()\n\n return (\n {\n CMPService.setSDK(didomiSDK)\n }}\n onConsentChanged={() => dispatch(registerConsent(CMPService.getConsents()))}\n />\n )\n})\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"tUwQh\",\"borderless\":\"dMfiA\",\"categories\":\"e8FTY\",\"autoPromoButton\":\"FwtHk\"};","import classnames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectAdDataByAdId, selectPageIdForAdConfig } from '../../store/ad/ad.selectors'\nimport { selectCategorySegmentByCategoryId } from '../../store/poiassets/poiassets.selectors'\nimport { isEmptyObj } from '../../utils/object'\nimport DelayComponent from '../utils/DelayComponent'\nimport { useSelectorWithProps } from '../utils/react-redux'\nimport { getAdIdByAdName } from './AdConfigService'\nimport AdLoader from './AdLoader'\nimport s from './AdMenu.less'\n\nconst adName = 'menuthema'\n\nconst AdMenu = ({ categoryId }) => {\n const segment = useSelectorWithProps(selectCategorySegmentByCategoryId, { id: categoryId })\n const pageId = useSelector(selectPageIdForAdConfig)\n const adId = getAdIdByAdName(adName, pageId)\n const adData = useSelectorWithProps(selectAdDataByAdId, { adId })\n const { Menuthema } = adData || {}\n const { title, text, linkLabel, imgUrl, linkUrl } = Menuthema || {}\n const categorySelector = () => ({ segment })\n\n return (\n \n \n
    \n {!isEmptyObj(adData) && (\n \n \n\n
    \n
    {title}
    \n {text} {linkLabel}\n
    \n
    \n )}\n
    \n
    \n
    \n )\n}\n\nexport default AdMenu\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"UAPRB\",\"linkWrapper\":\"jPfz6\",\"logo\":\"R8onm\",\"title\":\"uToUc\",\"message\":\"u1HvF\",\"label\":\"caeoa\",\"hidden\":\"cfUNZ\"};","import React from 'react'\nimport s from './MenuSubCategoriesGE.less'\nimport { selectSubCategoriesMenu } from '../../store/poiassets/poiassets.selectors'\nimport MenuSubCategoryItem from './MenuSubCategoryItem'\nimport MenuApplicationItem from './MenuApplicationItem'\nimport useTimeout from '../utils/useTimeout'\nimport usePublisherBarreCategorieTag from './usePublisherBarreCategorieTag'\nimport { useSelectorWithProps } from '../utils/react-redux'\nimport CategorySubMenuStyle from './CategorySubMenuStyle'\nimport classNames from 'classnames'\nimport AdMenu from '../advertising/AdMenu'\n\nconst MenuSubCategoriesGE = ({ categoryId, onMouseLeaveMenu }) => {\n const { subcategories, apps, color } = useSelectorWithProps(selectSubCategoriesMenu, { id: categoryId })\n const [setMouseOverTimeout, clearMouveOverTimeout] = useTimeout(150)\n\n usePublisherBarreCategorieTag(categoryId)\n\n if (!categoryId) return <>\n\n const onMouseOver = () => clearMouveOverTimeout()\n\n const onMouseOut = () => setMouseOverTimeout(() => onMouseLeaveMenu())\n\n const columnCount = 2 + Number(subcategories.length > 5) + Number(apps.length > 5)\n\n return (\n
    \n
    \n
      \n {subcategories.map(({ id, iconId, label, rubricIds }) => (\n \n ))}\n
    • \n {apps.map(({ id, name, mob_roundImage }) => (\n \n ))}\n
    \n \n
    \n \n
    \n )\n}\n\nexport default MenuSubCategoriesGE\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"d8pmR\",\"itemsWrapper\":\"M8_Gd\",\"items\":\"dUxyB\",\"columnBreak\":\"JqkZ_\"};","import React, { useEffect, useState } from 'react'\nimport useConfigureAndSendTag from '../analytics/useConfigureAndSendTag'\nimport s from './MenuCategoriesGE.less'\nimport { useSelector } from 'react-redux'\nimport { loadPoiAssetsConfiguration } from '../../store/poiassets/poiassets.actions'\nimport { selectCategoriesMenu } from '../../store/poiassets/poiassets.selectors'\nimport MenuSubCategoriesGE from './MenuSubCategoriesGE'\nimport MenuCategoryItem from './MenuCategoryItem'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport { withFrenchSite } from '../i18n/i18nSite'\nimport { withOnlyGE } from '../Device'\nimport { useAction } from '../utils/react-redux'\nimport { TAG_CLICK_CATEGORY_BAR } from '../analytics/analytics.tagids.constants'\nimport { APP_OR_SUBCAT_ID, CAT_ID } from '../analytics/ClickTagsService'\nimport { navigateToSearchByCategory, navigateToPoisOnRouteByCategory } from '../../store/history/history.actions'\nimport useTimeout from '../utils/useTimeout'\n\nimport classNames from 'classnames'\nimport AutoPromoOpenButton from '../autopromo/AutoPromoOpenButton'\nimport analyticsConstants from '../analytics/analytics.constants'\nimport { selectIsPageElligibleForPoisOnRoute } from '../../store/history/history.selectors'\n\nexport const MenuCategoriesGE = () => {\n const [categoryId, setCategoryId] = useState()\n const execLoadPoiAssetsConfiguration = useAction(loadPoiAssetsConfiguration)\n const execNavigateToSmrByCategory = useAction(navigateToPoisOnRouteByCategory)\n\n useEffect(() => {\n execLoadPoiAssetsConfiguration()\n }, [execLoadPoiAssetsConfiguration])\n\n const categories = useSelector(selectCategoriesMenu)\n const isPageElligibleForPoisOnRoute = useSelector(selectIsPageElligibleForPoisOnRoute)\n const [setMouseOverTimeout, clearMouseOverTimeout] = useTimeout(100)\n\n const onMouseOver = categoryId => () => setCategoryId(categoryId)\n\n const onMouseOut = () => setMouseOverTimeout(unselectCategory)\n\n const unselectCategory = () => setCategoryId(null)\n\n const onMenuMouseOver = () => clearMouseOverTimeout()\n\n const onMenuMouseOut = () => setMouseOverTimeout(unselectCategory)\n\n const configureAndSendTag = useConfigureAndSendTag()\n const execNavigateToSearchByCategory = useAction(navigateToSearchByCategory)\n\n const onCategoryClick = catId => e => {\n configureAndSendTag({\n type: TAG_CLICK_CATEGORY_BAR,\n tagInfo: {\n [CAT_ID]: catId,\n [APP_OR_SUBCAT_ID]: 'all'\n }\n })\n\n if (isPageElligibleForPoisOnRoute) {\n execNavigateToSmrByCategory(catId)\n } else {\n execNavigateToSearchByCategory(catId)\n }\n unselectCategory()\n }\n return categories?.length ? (\n \n
      \n {categories.map(({ id, shortLabel, iconId, color }) => (\n \n ))}\n
    \n {categoryId && }\n
    \n \n
    \n
    \n ) : null\n}\n\nexport default withEmptyFallbackErrorBoundary(withFrenchSite(withOnlyGE(MenuCategoriesGE)))\n","import classNames from 'classnames'\nimport React, { useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport '../../../node_modules/web-api-360/dist/MappyOutdoorView.css'\nimport { getApiKey, getDomain } from '../../parameters'\nimport { navigateBack } from '../../store/history/history.actions'\nimport { selectLocale } from '../../store/navigation/navigation.selectors'\nimport {\n selectIsOutdoorDisplayed,\n selectOutdoorPanoramicId,\n selectOutdoorTargetCoordinates\n} from '../../store/ui/ui.outdoor.selectors'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport cross from '../genericComponents/assets/cross.svg'\nimport { getLocaleUnderscored } from '../i18n'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './Outdoor.less'\n\nconst Outdoor = () => {\n const wrapper = useRef()\n const view = useRef()\n const [loaded, setLoaded] = useState(false)\n\n const isOutdoorDisplayed = useSelector(selectIsOutdoorDisplayed)\n const outdoorPanoramicId = useSelector(selectOutdoorPanoramicId)\n const outdoorTargetCoordinates = useSelector(selectOutdoorTargetCoordinates)\n const locale = useSelector(selectLocale)\n const execNavigateBack = useAction(navigateBack)\n\n const loadScript = () => import('web-api-360/dist/MappyOutdoorView')\n\n /* Don’t use useEventCallback, nor useErrorBoundaryCallback, see NES-3215 */\n const debugKeyHandler = useEventCallback(event => {\n if (event.key === 'd') {\n view.current?.toggleDebug()\n }\n }, [])\n\n const listenKeyForDebug = () => document.body.addEventListener('keydown', debugKeyHandler)\n\n const stopListeningKeyForDebug = () => document.body.removeEventListener('keydown', debugKeyHandler)\n\n const hide = () => {\n execNavigateBack()\n setLoaded(false)\n }\n\n useEffect(() => {\n if (!loaded) return\n listenKeyForDebug()\n return stopListeningKeyForDebug\n }, [loaded])\n\n const createOutdoorView = () => {\n const { lat, lng } = outdoorTargetCoordinates\n view.current = new window.MappyOutdoor.View(wrapper.current, outdoorPanoramicId, {\n apikey: getApiKey(),\n domain: `${getDomain()}.net`,\n imgPath: `/assets/${window.__APP_VERSION__}/outdoor`,\n locale: getLocaleUnderscored(locale)\n })\n view.current.lookAt({ lat, lon: lng })\n }\n\n useEffect(() => {\n if (isOutdoorDisplayed) {\n loadScript()\n .then(createOutdoorView)\n .then(() => setLoaded(true))\n }\n }, [isOutdoorDisplayed])\n\n useEffect(() => {\n return () => hide\n }, [])\n\n if (!isOutdoorDisplayed) return <>\n\n return (\n <>\n
    \n
    \n \n
    \n \n )\n}\n\n// webpack:BrowserOnly\nexport default withEmptyFallbackErrorBoundary(Outdoor)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"AVnKY\",\"active\":\"O3NAK\",\"closeBtn\":\"AtUdC\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { PAGE_CLASSES } from '../../routes/pageClasses.constants'\nimport { selectFocusedPoiId } from '../../store/geoentity/geoentity.selectors'\nimport { selectIsMapFullScreen } from '../../store/map/map.selectors'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { isUIElementDisplayed } from '../../store/ui/ui.selectors'\nimport UserArea from '../UserAccount/UserArea'\nimport UserAccountIncentivePopin from '../UserAccount/connectionIncentive/UserAccountIncentivePopin'\nimport UtiqLoader from '../advertising/UtiqLoader'\nimport CMPPlaceholder from '../cmp/CMPPlaceholder'\nimport MenuCategoriesGE from '../menu/MenuCategoriesGE'\nimport Outdoor from '../outdoor/Outdoor'\nimport { useSelectorWithProps } from '../utils/react-redux'\nimport { createCustomSelector } from '../utils/react-reselect'\n\nconst selectPageSpecificClasses = (store, props) => props?.pageClassManager?.(store, props) || []\n\nconst selectCommonClasses = createCustomSelector(\n selectIsMapFullScreen,\n isUIElementDisplayed(UI_ELEMENTS.POPIN),\n isUIElementDisplayed(UI_ELEMENTS.SUGGEST),\n isUIElementDisplayed(UI_ELEMENTS.MENU_PE),\n isUIElementDisplayed(UI_ELEMENTS.MAP_TOOLS_PE),\n selectFocusedPoiId,\n (isMapFullScreen, isPopinDisplayed, isSuggestDisplayed, isMenuPEDisplayed, isMapToolsPEDisplayed, hasFocusedPoi) => [\n isMapFullScreen && PAGE_CLASSES.withFullscreenMap,\n isPopinDisplayed && PAGE_CLASSES.withDetail,\n isSuggestDisplayed && PAGE_CLASSES.withSuggest,\n isMenuPEDisplayed && PAGE_CLASSES.withMenuPEDisplayed,\n isMapToolsPEDisplayed && PAGE_CLASSES.withMapToolsPEDisplayed,\n hasFocusedPoi && PAGE_CLASSES.withPoiPopinDisplayed\n ]\n)\n\nconst Page = ({ cssClasses = [], children, ...props }) => {\n const commonClasses = useSelectorWithProps(selectCommonClasses, props)\n const pageSpecificClasses = useSelectorWithProps(selectPageSpecificClasses, props)\n const className = classNames(...cssClasses, ...commonClasses, ...pageSpecificClasses)\n\n return (\n
    \n \n \n \n \n \n \n {children}\n
    \n )\n}\n\nexport default Page\n","import React, { useRef, useCallback, useEffect, useContext } from 'react'\nimport s from './ResponsiveScrollableWrapper.less'\nimport { isGE } from '../../Device'\n\nexport const ScrollContext = React.createContext()\n\nexport const useScrollContext = () => useContext(ScrollContext)\n\nconst TOP = 0\n\nconst ResponsiveScrollableWrapper = ({ children }) => {\n const scrollableElementRef = useRef()\n\n const getScrollValue = useCallback(() => {\n return isGE() ? scrollableElementRef?.current?.scrollTop ?? TOP : document.querySelector('html').scrollTop\n }, [])\n\n const setScrollValue = useCallback(value => {\n if (isGE()) {\n if (scrollableElementRef?.current) {\n scrollableElementRef.current.scrollTop = value\n }\n } else {\n document.querySelector('html').scrollTop = value\n document.querySelector('body').scrollTop = value\n }\n }, [])\n\n const scrollTo = useCallback((scrollGoal, animate = false) => {\n if (!animate) return setScrollValue(scrollGoal)\n\n let now0 = null\n const scroll0 = getScrollValue()\n const scrollDelta = scrollGoal - scroll0\n const duration = 500\n const step = now => {\n if (now0 === null) now0 = now\n const t = now - now0\n const scrollPos = scroll0 + scrollDelta * Math.sin(((Math.PI / 2) * t) / duration)\n if (t < duration) {\n setScrollValue(scrollPos)\n requestAnimationFrame(step)\n } else {\n setScrollValue(scrollGoal)\n }\n }\n requestAnimationFrame(step)\n }, [])\n\n const scrollTop = useCallback(\n animate => {\n scrollTo(TOP, animate)\n },\n [scrollTo]\n )\n\n useEffect(() => {\n scrollTop()\n return () => scrollTop()\n }, [])\n\n const addScrollListener = useCallback(fn => {\n const el = isGE() ? scrollableElementRef?.current : document\n if (el) el.addEventListener('scroll', fn)\n }, [])\n\n const removeScrollListener = useCallback(fn => {\n const el = isGE() ? scrollableElementRef?.current : document\n if (el) el.removeEventListener('scroll', fn)\n }, [])\n\n const checkIfTargetIsVisible = useCallback((parent, child) => {\n if (!parent || !child) return false\n\n const targetTop = child.offsetTop\n const totalScrollHeight = isGE() ? parent.offsetParent.clientHeight : window.innerHeight\n const scrollValue = getScrollValue()\n\n const alreadyVisible = targetTop < totalScrollHeight\n const scrolledUntilTarget = scrollValue > targetTop - totalScrollHeight\n return alreadyVisible || scrolledUntilTarget\n }, [])\n\n const providerValue = {\n scrollTop,\n scrollTo,\n getScrollValue,\n addScrollListener,\n removeScrollListener,\n checkIfTargetIsVisible\n }\n\n return (\n
    \n {children}\n
    \n )\n}\n\nexport default ResponsiveScrollableWrapper\n","// extracted by mini-css-extract-plugin\nexport default {\"responsiveScrollableWrapper\":\"_6M6JB\"};","import React from 'react'\nimport s from './StatusMessage.less'\nimport classnames from 'classnames'\n\nconst StatusMessage = ({ message, visible = false, className }) => {\n return (\n
    \n {message}\n
    \n )\n}\n\nexport default StatusMessage\n","// extracted by mini-css-extract-plugin\nexport default {\"status\":\"IHXKv\",\"statusVisible\":\"t9Dhq\",\"statusText\":\"l6dSx\"};","import { useEffect, useState } from 'react'\nimport useTimeout from '../utils/useTimeout'\n\nexport function useTemporaryVisible(timeout = 3000) {\n const [visible, setVisible] = useState()\n\n const [setAction, clear] = useTimeout(timeout)\n\n useEffect(() => {\n if (visible) {\n clear()\n setAction(() => {\n setVisible(false)\n })\n }\n }, [visible])\n\n return [visible, setVisible]\n}\n","import classNames from 'classnames'\nimport React from 'react'\nimport { TAG_BACK } from '../analytics/analytics.tagids.constants'\nimport { navigateBack } from '../../store/history/history.actions'\nimport TagActionButton from '../genericComponents/TagActionButton'\nimport arrowLeft from '../genericComponents/assets/arrow-left.svg'\nimport { useAction } from '../utils/react-redux'\nimport s from './Header.less'\n\nconst BackButton = ({ hasTag }) => {\n const execNavigateBack = useAction(navigateBack)\n\n return hasTag ? (\n execNavigateBack()}>\n \"\"\n \n ) : (\n
    execNavigateBack()}>\n \"\"\n
    \n )\n}\n\nexport default BackButton\n","import React from 'react'\nimport { ROUTE_USER_ACCOUNT } from '../../routes'\nimport { TAG_CLICK_USER_BURGER } from '../analytics/analytics.tagids.constants'\nimport { navigateTo } from '../../store/history/history.actions'\nimport TagActionButton from '../genericComponents/TagActionButton'\nimport hamburger from '../genericComponents/assets/hamburger.svg?raw'\nimport { useAction } from '../utils/react-redux'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './UserButton.less'\nimport UserPicture from './UserPicture'\n\nconst UserButton = () => {\n const execNavigateTo = useAction(navigateTo)\n const onClick = useEventCallback(() => {\n execNavigateTo({\n route: ROUTE_USER_ACCOUNT\n })\n })\n\n return (\n \n
    \n \n
    \n
    \n
    \n )\n}\n\nexport default UserButton\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"Routz\",\"menu\":\"TAKMb\",\"avatar\":\"JuWxx\"};","import classNames from 'classnames'\nimport React, { useCallback } from 'react'\nimport { useSelector } from 'react-redux'\nimport { ROUTE_ITINERARY_HOME } from '../../routes'\nimport { navigateTo } from '../../store/history/history.actions'\nimport { selectItineraryOptions } from '../../store/history/history.navigate.selectors'\nimport { selectIsHomePage } from '../../store/history/history.selectors'\nimport itineraryIcon from '../genericComponents/assets/itinerary.svg?raw'\nimport T from '../i18n/T'\nimport { generateFullRoute } from '../router/routeUtils'\nimport { useAction } from '../utils/react-redux'\nimport s from './ItineraryUniverseButton.less'\n\nconst ItineraryUniverseButton = () => {\n const active = useSelector(selectIsHomePage)\n const { route, routeOptions } = useSelector(selectItineraryOptions)\n\n const execNavigateTo = useAction(navigateTo)\n\n const onButtonClick = useCallback(\n e => {\n e.preventDefault()\n execNavigateTo({ route, routeOptions })\n },\n [execNavigateTo, route, routeOptions]\n )\n\n return (\n \n
    \n
    \n \n
    \n \n )\n}\n\nexport default ItineraryUniverseButton\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"GNXC0\",\"button\":\"cMzyx\",\"active\":\"pLAI_\",\"text\":\"Lp0vv\"};","import React, { useCallback } from 'react'\nimport { useSelector } from 'react-redux'\nimport { navigateToHomepage } from '../../store/history/history.actions'\nimport { selectIsMapFullScreen } from '../../store/map/map.selectors'\nimport { selectIsUserAccountEnabled } from '../../store/userAccount/userAccount.selectors'\nimport UserButton from '../UserAccount/UserButton'\nimport { useAction } from '../utils/react-redux'\nimport s from './DesktopPreHeader.less'\nimport ItineraryUniverseButton from './ItineraryUniverseButton'\n\nconst DesktopPreHeader = () => {\n const isMapFullScreen = useSelector(selectIsMapFullScreen)\n\n const execNavigateToHomepage = useAction(navigateToHomepage)\n const onClickToHomepage = useCallback(\n e => {\n e.preventDefault()\n execNavigateToHomepage()\n },\n [execNavigateToHomepage]\n )\n\n const shouldDisplayUserAccount = useSelector(selectIsUserAccountEnabled)\n\n return (\n
    \n {shouldDisplayUserAccount && !isMapFullScreen && }\n \n Mappy\n \n {!isMapFullScreen && (\n
    \n \n
    \n )}\n
    \n )\n}\n\nexport default DesktopPreHeader\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"ujdtY\",\"logo\":\"PBvRE\",\"universeButtons\":\"yq0fl\"};","import classnames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport s from './SubHeader.less'\nimport { selectGeoentityActiveFilter } from '../../store/geoentity/filter.selectors'\n\nconst SubHeader = ({ children }) => {\n const selectedActiveFilter = useSelector(selectGeoentityActiveFilter)\n\n return
    {children}
    \n}\n\nexport default SubHeader\n","// extracted by mini-css-extract-plugin\nexport default {\"subHeader\":\"_ZRNs\",\"borderless\":\"alqn9\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { PAGE_CLASSES } from '../../routes/pageClasses.constants'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { selectHeaderHeight, selectIsBackButtonDisplayed } from '../../store/ui/ui.selectors'\nimport { selectIsUserAccountEnabled } from '../../store/userAccount/userAccount.selectors'\nimport { isPE } from '../Device'\nimport UserButton from '../UserAccount/UserButton'\nimport MenuCategoriesPE from '../menu/MenuCategoriesPE'\nimport useComputedHeaderHeight from '../ui/useHeaderHeight'\nimport useUIDisplay from '../ui/useUIDisplay'\nimport DesktopPreHeader from './DesktopPreHeader'\nimport s from './Header.less'\nimport SubHeader from './SubHeader'\n\nexport const Header = ({\n subHeader,\n subHeaderSelectorConditionFn = () => true,\n headerButton,\n children,\n menuCategoriesPE\n}) => {\n const { isUIDisplayed: suggestDisplayed } = useUIDisplay(UI_ELEMENTS.SUGGEST)\n const { isUIDisplayed: searchDialogDisplayed } = useUIDisplay(UI_ELEMENTS.SEARCH_DIALOG)\n const backButtonDisplayed = useSelector(selectIsBackButtonDisplayed)\n const headerHeight = useSelector(selectHeaderHeight)\n\n const shouldDisplaySubHeaderComponent = useSelector(subHeaderSelectorConditionFn)\n const subHeaderComponent = shouldDisplaySubHeaderComponent && subHeader\n\n const userAccountEnabled = useSelector(selectIsUserAccountEnabled)\n const shouldDisplayUserAccount = isPE() && userAccountEnabled && !backButtonDisplayed\n\n const shouldDisplayMenuCategoriesPE = menuCategoriesPE && !suggestDisplayed && !searchDialogDisplayed\n\n const computedHeaderHeight = useComputedHeaderHeight(menuCategoriesPE, subHeaderComponent)\n\n return (\n
    \n \n {shouldDisplayUserAccount && (\n
    \n \n
    \n )}\n {children}\n {!suggestDisplayed && headerButton}\n
    \n {subHeaderComponent}\n \n {shouldDisplayMenuCategoriesPE && (\n
    \n \n
    \n )}\n \n )\n}\n\nexport default Header\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { localeCountryIsUK, localeCountryIsFrance, localeLanguageIsFrench } from '.'\nimport { selectLocale } from '../../store/navigation/navigation.selectors'\n\n/* eslint-disable react/display-name */\nexport const withFrenchSite = Component => props => {\n const locale = useSelector(selectLocale)\n\n return localeCountryIsFrance(locale) ? : <>\n}\n\nexport const withFrenchLanguage = Component => props => {\n const locale = useSelector(selectLocale)\n\n return localeLanguageIsFrench(locale) ? : <>\n}\n\nexport const withoutEnglishSite = Component => props => {\n const locale = useSelector(selectLocale)\n\n return !localeCountryIsUK(locale) ? : <>\n}\n","import React from 'react'\nimport classNames from 'classnames'\nimport s from './ModeItem.less'\nimport SVGIcon from '../svg/SVGIcon'\n\nconst ModeItem = ({ label = '', selected = false, icon, description, onClick, displayHighlightBar = true }) => {\n return (\n \n \n \n \n {description}\n {displayHighlightBar &&
    }\n
    \n )\n}\n\nexport default ModeItem\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"FA3H8\",\"selected\":\"HWpJA\",\"icon\":\"_6dHC\",\"label\":\"mgjEa\",\"content\":\"E3G_Q\",\"contentFavourite\":\"gLgE1\",\"bar\":\"Mx64R\",\"highlightedBar\":\"fzEmI\"};","import React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { TAG_CLICK_TRAVEL_OPTIONS_MODEFAVORI } from '../analytics/analytics.tagids.constants'\nimport { selectFavouriteModes, selectPreferredMode } from '../../store/itineraryOptions/itineraryOptions.selectors'\nimport { setPreferredMode } from '../../store/itineraryOptions/itineraryOptionsSlice'\nimport { SELECTION } from '../analytics/ClickTagsService'\nimport useConfigureAndSendTag from '../analytics/useConfigureAndSendTag'\nimport ModeItem from '../itinerary/ModeItem'\nimport sModeSelector from '../itinerary/ModeSelector.less'\n\nconst FavouriteModeBox = () => {\n const favouriteModes = useSelector(selectFavouriteModes)\n const preferredMode = useSelector(selectPreferredMode)\n const dispatch = useDispatch()\n const configureAndSendTag = useConfigureAndSendTag()\n\n const onClickForId = id => () => {\n configureAndSendTag({\n type: TAG_CLICK_TRAVEL_OPTIONS_MODEFAVORI,\n tagInfo: {\n [SELECTION]: id\n }\n })\n dispatch(setPreferredMode({ modeId: id }))\n }\n\n return (\n
      \n {favouriteModes.map(({ id, label, icon }) => {\n return (\n
    • \n \n
    • \n )\n })}\n
    \n )\n}\n\nexport default FavouriteModeBox\n","// extracted by mini-css-extract-plugin\nexport default {\"boxWrapper\":\"pV1Dn\",\"boxContent\":\"pUTpF\"};","import React, { useCallback } from 'react'\nimport { useSelector } from 'react-redux'\nimport { changePreferredOptions } from '../../store/itineraryOptions/itineraryOptions.actions'\nimport { selectPreferredSpeed, selectVehicleOwn } from '../../store/itineraryOptions/itineraryOptions.selectors'\nimport T, { useTranslateAsObject } from '../i18n/T'\nimport { useAction } from '../utils/react-redux'\nimport { PREFERRED_SPEED, TRAVEL_SPEED_VALUES_BY_MODE, TRAVEL_SPEEDS, VEHICLE_OWN } from './ItineraryOptions.constants'\nimport s from './ModeSpeedSettingsBox.less'\nimport VehicleOwnedSwitcher from './VehicleOwnedSwitcher'\n\nconst speedTKey = item => `itinerary.options.speed.${item}`\n\nexport default function ModeSpeedSettingsBox({ modeId, hasOwnSwitcher }) {\n const preferredSpeed = useSelector(selectPreferredSpeed(modeId))\n const vehicleOwn = useSelector(selectVehicleOwn(modeId))\n const execChangePreferredOptions = useAction(changePreferredOptions)\n const translations = useTranslateAsObject(TRAVEL_SPEEDS.map(speedTKey))\n\n const onPreferredOptionsChange = useCallback(event => {\n const value = event.target.value\n execChangePreferredOptions({\n modeId,\n [PREFERRED_SPEED]: value\n })\n }, [])\n\n return (\n
    \n {hasOwnSwitcher && (\n
    \n \n execChangePreferredOptions({\n modeId,\n [VEHICLE_OWN]: value\n })\n }\n defaultValue={vehicleOwn}\n />\n
    \n )}\n
    \n \n \n
    \n
    \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"speedWrapper\":\"ceLK1\"};","import React, { useEffect, useState } from 'react'\nimport { saveUserItineraryOptions } from '../../store/userAccount/userAccount.actions'\nimport { useTemporaryVisible } from '../genericComponents/useTemporaryVisible'\nimport T from '../i18n/T'\nimport sUserManageFavorites from '../UserAccount/connected/userFavorites/UserManageFavorite.less'\nimport { useAction } from '../utils/react-redux'\nimport FavouriteModeBox from './FavouriteModeBox'\nimport s from './ItineraryOptions.less'\nimport ModeSpeedSettingsBox from './ModeSpeedSettingsBox'\nimport VehicleSettingsBox from './VehicleSettingsBox'\n\nconst ItineraryOptions = () => {\n const execSaveUserItineraryOptions = useAction(saveUserItineraryOptions)\n const [visible, setVisible] = useTemporaryVisible()\n const [itineraryOptionsError, setItineraryOptionsError] = useState()\n\n useEffect(() => {\n return async () => {\n const saveItineraryOptionsResult = await execSaveUserItineraryOptions()\n\n if (saveItineraryOptionsResult?.error) {\n setVisible(true)\n setItineraryOptionsError(saveItineraryOptionsResult.error)\n }\n }\n }, [])\n\n return (\n <>\n {visible &&
    {itineraryOptionsError}
    }\n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n \n )\n}\n\nexport default ItineraryOptions\n","import React from 'react'\nimport s from './VehicleOwnedSwitcher.less'\nimport SwitchInput from '../utils/SwitchInput'\nimport T from '../i18n/T'\n\nconst VehicleOwnedSwitcher = ({ labelKey, onChange, defaultValue }) => {\n return (\n
    \n
    \n \n
    \n \n
    \n )\n}\n\nexport default VehicleOwnedSwitcher\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"mKaO4\"};","// extracted by mini-css-extract-plugin\nexport default {\"VehicleSettingsBox\":\"S6FYe\",\"VehicleSettingsBoxContent\":\"H1Nyr\",\"critAirLine\":\"xKdAP\"};","import React, { useCallback } from 'react'\nimport s from './CritairChoice.less'\nimport T from '../i18n/T'\nimport classnames from 'classnames'\n\nconst CritairChoice = ({ critAirStickers, onSelect, value }) => {\n const onChooseForId = useCallback(\n id => evt => {\n evt.preventDefault()\n onSelect(id)\n },\n []\n )\n return (\n
    \n
    \n \n
    \n
      \n {critAirStickers.map(sticker => {\n const { icon, label, id, description } = sticker\n return (\n \n
      \n \n
      \n\n
      \n
      {label}
      \n
      {description}
      \n
      \n \n )\n })}\n
    \n
    \n )\n}\n\nexport default CritairChoice\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"bCkpO\",\"title\":\"R4dOl\",\"sticker\":\"uCPxZ\",\"selected\":\"ZISbs\",\"iconWrapper\":\"K5PJf\",\"icon\":\"XxIiz\",\"content\":\"lrbgf\",\"label\":\"ofz21\",\"value\":\"D9ASX\"};","import React, { useEffect } from 'react'\nimport { MODAL_IDS } from '../../store/ui/ui.constants'\nimport Modal from '../genericComponents/Modal'\nimport useModal from '../ui/useModal'\nimport CritairChoice from './CritairChoice'\nimport s from './CritairChoice.less'\nimport { CRITAIR_DEFAULT_ID } from './ItineraryOptions.constants'\n\nconst CritairSelect = ({ critAirStickers = [], value = CRITAIR_DEFAULT_ID, modeId, onChange }) => {\n const critAirSticker = critAirStickers.find(({ id }) => id === value)\n const modalId = `${MODAL_IDS.CRITAIR}-${modeId}`\n const { displayModal, hideModal } = useModal(modalId)\n\n useEffect(() => hideModal, [])\n\n const onSelect = value => {\n onChange({ target: { value } })\n hideModal()\n }\n\n return (\n <>\n
    displayModal()}>\n {critAirSticker && }\n
    \n \n \n \n \n )\n}\n\nexport default CritairSelect\n","import React from 'react'\nimport useConfigureAndSendTag from '../analytics/useConfigureAndSendTag'\nimport s from './VehicleSettingsBox.less'\n\nimport classNames from 'classnames'\nimport { useSelector } from 'react-redux'\nimport {\n TAG_CLICK_TRAVEL_OPTIONS_CAR_VEHICLE,\n TAG_CLICK_TRAVEL_OPTIONS_MOTORBIKE_VEHICLE\n} from '../analytics/analytics.tagids.constants'\nimport { changePreferredOptions } from '../../store/itineraryOptions/itineraryOptions.actions'\nimport {\n selectCritAirId,\n selectFuelList,\n selectModeMetadata,\n selectPreferredFuel,\n selectPreferredVehicle,\n selectVehicleList,\n selectVehicleOwn\n} from '../../store/itineraryOptions/itineraryOptions.selectors'\nimport { SELECTION } from '../analytics/ClickTagsService'\nimport NumericInput from '../genericComponents/NumericInput'\nimport T from '../i18n/T'\nimport { useAction } from '../utils/react-redux'\nimport CritairSelect from './CritairSelect'\nimport {\n CRITAIR_ID,\n PREFERRED_FUEL_CONSUMPTION,\n PREFERRED_FUEL_ID,\n PREFERRED_FUEL_PRICE,\n PREFERRED_VEHICLE_ID,\n VEHICLE_OWN\n} from './ItineraryOptions.constants'\nimport VehicleOwnedSwitcher from './VehicleOwnedSwitcher'\n\nconst tagConfig = {\n car: {\n [PREFERRED_VEHICLE_ID]: TAG_CLICK_TRAVEL_OPTIONS_CAR_VEHICLE\n },\n motorbike: {\n [PREFERRED_VEHICLE_ID]: TAG_CLICK_TRAVEL_OPTIONS_MOTORBIKE_VEHICLE\n }\n}\n\nexport default function VehicleSettingsBox({ modeId, hasOwnSwitcher }) {\n const modeMetadata = useSelector(selectModeMetadata(modeId))\n const preferredVehicle = useSelector(selectPreferredVehicle(modeId))\n const preferredFuel = useSelector(selectPreferredFuel(modeId))\n const fuelList = useSelector(selectFuelList(modeId))\n const vehicleList = useSelector(selectVehicleList(modeId))\n const vehicleOwn = useSelector(selectVehicleOwn(modeId))\n const critAirStickers = modeMetadata?.transportMode?.critair\n const critAirId = useSelector(selectCritAirId(modeId))\n const execChangePreferredOptions = useAction(changePreferredOptions)\n const configureAndSendTag = useConfigureAndSendTag()\n\n const onPreferredOptionsChange = optionsToUpdate => event => {\n const value = event.target.value\n const tag = tagConfig?.[modeMetadata.id]?.[optionsToUpdate]\n if (tag) {\n configureAndSendTag({\n type: tag,\n tagInfo: {\n [SELECTION]: value\n }\n })\n }\n execChangePreferredOptions({\n modeId: modeMetadata.id,\n [optionsToUpdate]: value\n })\n }\n\n return (\n
    \n
    \n {hasOwnSwitcher && (\n
    \n {\n onPreferredOptionsChange(VEHICLE_OWN)({ target: { value } })\n }}\n defaultValue={vehicleOwn}\n />\n
    \n )}\n
    \n \n \n \n \n
    \n
    \n \n \n \n \n {preferredFuel.price_unit}\n \n
    \n
    \n \n \n \n {preferredFuel.consumption_unit}\n \n
    \n {critAirStickers && (\n
    \n
    \n \n
    \n \n
    \n )}\n
    \n
    \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"Throbber\":\"s8ceO\",\"spin\":\"juN8d\"};","import React from 'react'\nimport s from './Throbber.less'\nimport img from './throbber.png'\n\nexport default function Throbber() {\n return (\n
    \n \n
    \n )\n}\n","import React, { useCallback } from 'react'\nimport classNames from 'classnames'\nimport ResponsiveScrollableWrapper from '../genericComponents/ResponsiveScrollableWrapper/ResponsiveScrollableWrapper'\nimport s from './Main.less'\nimport { isGE } from '../Device'\nimport { HEADER_SUBHEADER_HEIGHT, PREHEADER_HEIGHT } from '../header/header-constants'\nimport { selectHeaderHeight, selectMainPEPositionAtStart } from '../../store/ui/ui.selectors'\nimport { useSelector } from 'react-redux'\nimport { MINI_MAP_HEIGHT, PE_MAIN_START_POS, PE_MAIN_VALUES } from './main.constants'\n\nimport Anchor from '../genericComponents/Anchor'\n\nconst Main = ({ children, className, withoutSubHeader, hidden }) => {\n const headerHeight = useSelector(selectHeaderHeight)\n const { high, highNoMap } = PE_MAIN_START_POS\n const positionAtStart = useSelector(selectMainPEPositionAtStart)\n const windowHeight = global?.window?.innerHeight ?? 0\n\n const getStyle = useCallback(() => {\n if (__SERVER__) return {}\n\n const headerWithSubHeaderHeight = headerHeight + (withoutSubHeader ? 0 : HEADER_SUBHEADER_HEIGHT)\n if (isGE()) {\n const top = PREHEADER_HEIGHT + headerWithSubHeaderHeight\n const height = `calc(100vh - ${top}px)`\n return { top, height }\n }\n\n const minTop = headerWithSubHeaderHeight + MINI_MAP_HEIGHT\n const top =\n positionAtStart === highNoMap\n ? headerWithSubHeaderHeight - 4\n : positionAtStart === high\n ? minTop\n : Math.max(minTop, windowHeight - PE_MAIN_VALUES[positionAtStart])\n\n return {\n top,\n height: null\n }\n }, [headerHeight, positionAtStart, withoutSubHeader, windowHeight])\n\n return (\n
    \n \n {children}\n
    \n )\n}\n\nexport default Main\n","// extracted by mini-css-extract-plugin\nexport default {\"Main\":\"YAz35\",\"Main_hidden\":\"FO4Cd\",\"Main_displayed\":\"RTSI4\"};","import { useEffect } from 'react'\nimport useConfigureAndSendTag from './useConfigureAndSendTag'\n\nconst useImpressionTag = (condition, { type, tagInfo }) => {\n const configureAndSendTag = useConfigureAndSendTag()\n\n useEffect(() => {\n if (condition) {\n configureAndSendTag({\n type,\n tagInfo,\n isImpression: true\n })\n }\n }, [condition])\n}\n\nexport default useImpressionTag\n","import React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { TAG_PUBLISHER } from '../analytics/analytics.tagids.constants'\nimport { selectMapEventPopin, selectShouldDisplayMapEventPopin } from '../../store/map/map.selectors'\nimport { resetMapEventsPopin } from '../../store/map/mapSlice'\nimport { PUB_TAG } from '../analytics/PublisherTagsService'\nimport useImpressionTag from '../analytics/useImpressionTag'\nimport cross from '../genericComponents/assets/cross.svg'\nimport { withMapInitialized } from '../map/map.utils'\nimport SVGIcon from '../svg/SVGIcon'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './MapEventPopin.less'\n\nconst MapEventPopin = () => {\n const dispatch = useDispatch()\n const mapEventPopinInfo = useSelector(selectMapEventPopin)\n const shouldDisplayMapEvenPopin = useSelector(selectShouldDisplayMapEventPopin)\n\n useImpressionTag(mapEventPopinInfo?.title, {\n type: TAG_PUBLISHER,\n tagInfo: { tag: PUB_TAG.PUB_MAP_LEGENDE_LAYER_CARTE, title_popin: mapEventPopinInfo?.title },\n isImpression: true\n })\n\n const onClick = useEventCallback(() => dispatch(resetMapEventsPopin()))\n\n if (!mapEventPopinInfo || !shouldDisplayMapEvenPopin) return <>\n\n const { title, description, asset_zone, asset_event } = mapEventPopinInfo\n\n return (\n
    \n \n
    \n \n {title}\n {description}\n
    \n
    \n \n
    \n
    \n )\n}\n\nexport default withMapInitialized(MapEventPopin)\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"fYOJm\",\"textContainer\":\"GYDxc\",\"title\":\"Cjljx\",\"description\":\"drC_n\",\"closeButton\":\"ONgij\",\"asset\":\"sbnMM\",\"logo\":\"cyzMD\"};","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { ROUTE_360_VIEW_FULLSCREEN } from '../../routes'\nimport { navigateTo } from '../../store/history/history.actions'\nimport { selectIsMapFullScreen } from '../../store/map/map.selectors'\nimport { displayMapPopup, hideMapPopup } from '../../store/map/mapSlice'\nimport { selectLocale } from '../../store/navigation/navigation.selectors'\nimport { displayOutdoor } from '../../store/ui/ui.actions'\nimport { selectIsOutdoorPrompted } from '../../store/ui/ui.outdoor.selectors'\nimport person from '../genericComponents/assets/person.svg'\nimport { useMapContext } from '../map/MapContext'\nimport { withMapInitialized } from '../map/map.utils'\nimport { POPUP_TYPE_PANO } from '../map/popup/popup.selectors'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport useTimeout from '../utils/useTimeout'\nimport s from './UPI.less'\nimport { OUTDOOR_STATUS_PROMPT, fetchPano } from './Utils'\n\nconst UPI_SIZE = 30\nconst PREVIEW_DELAY = 500\nconst MAP_OFFSET_X = 415\nconst MAP_OFFSET_Y = 70\n\nconst useOutdoorPreviewPopup = () => {\n const dispatch = useDispatch()\n const execDisplayOutdoor = useAction(displayOutdoor)\n const locale = useSelector(selectLocale)\n\n const displayPreview = useCallback(\n coords => {\n fetchPano(coords, locale)\n .catch(() => console.debug('Pas de pano', coords))\n .then(panoData => {\n execDisplayOutdoor({ ...panoData, ...coords, status: OUTDOOR_STATUS_PROMPT })\n dispatch(displayMapPopup(POPUP_TYPE_PANO))\n })\n },\n [locale]\n )\n\n const closePreview = useCallback(() => {\n dispatch(hideMapPopup())\n execDisplayOutdoor({ status: OUTDOOR_STATUS_PROMPT })\n }, [])\n\n return {\n displayPreview,\n closePreview\n }\n}\n\nconst UPI = () => {\n const { map } = useMapContext()\n const isDisplayed = useSelector(selectIsOutdoorPrompted)\n const isMapFullScreen = useSelector(selectIsMapFullScreen)\n const execNavigateTo = useAction(navigateTo)\n const offsetX = isMapFullScreen ? 0 : MAP_OFFSET_X\n const locale = useSelector(selectLocale)\n\n const elementRef = useRef()\n const [coords, setCoords] = useState()\n const [setPreviewTimeout, clearPreviewTimeout] = useTimeout(PREVIEW_DELAY)\n const { displayPreview, closePreview } = useOutdoorPreviewPopup()\n\n useEffect(() => {\n if (isDisplayed) {\n follow()\n } else {\n unfollow()\n }\n }, [isDisplayed])\n\n useEffect(() => {\n if (coords) {\n closePreview()\n clearPreviewTimeout()\n setPreviewTimeout(() => displayPreview(coords))\n }\n }, [coords])\n\n const follow = () => {\n map.on('click', mapClicked)\n map.on('mousemove', mapMouseMove)\n map.getCanvas().style.cursor = 'pointer'\n document.querySelector('body').addEventListener('mousemove', bodyMouseMove)\n }\n\n const unfollow = () => {\n map.off('click', mapClicked)\n map.off('mousemove', mapMouseMove)\n map.getCanvas().style.cursor = ''\n document.querySelector('body').removeEventListener('mousemove', bodyMouseMove)\n clearPreviewTimeout()\n }\n\n const launchOutdoor = coords => {\n closePreview()\n unfollow()\n fetchPano(coords, locale)\n .then(panoData => {\n if (panoData?.panoramicId) {\n execNavigateTo({\n route: ROUTE_360_VIEW_FULLSCREEN,\n routeOptions: { panoramicId: panoData.panoramicId }\n })\n }\n })\n .catch(() => {\n follow()\n displayPreview(coords)\n })\n }\n\n const onClicked = () => {\n launchOutdoor(coords)\n }\n\n const mapClicked = event => {\n launchOutdoor(event.lngLat)\n }\n\n const mapMouseMove = useCallback(\n event => {\n setCoords(event.lngLat)\n },\n [setCoords]\n )\n\n const onMouseMove = useCallback(\n ({ x, y }) => {\n if (!elementRef.current) return\n elementRef.current.style.top = `${y - UPI_SIZE - 7}px`\n elementRef.current.style.left = `${x - UPI_SIZE / 2}px`\n },\n [elementRef.current]\n )\n\n const bodyMouseMove = useCallback(\n event => {\n const { clientX, clientY } = event\n onMouseMove({ x: clientX - offsetX, y: clientY - MAP_OFFSET_Y })\n },\n [onMouseMove, offsetX]\n )\n\n if (!isDisplayed) return <>\n\n return (\n
    \n \n
    \n )\n}\n\nexport default withMapInitialized(UPI)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"J1XZZ\"};","import { useCallback } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { selectGeolocationStatus } from '../../store/geolocation/geolocation.selectors'\nimport { setGeolocationStatus } from '../../store/geolocation/geolocationSlice'\nimport {\n GEOLOC_STATUS_ACTIVE,\n GEOLOC_STATUS_FOLLOW,\n MAPLIBRE_EVENT_MOVE,\n MAPLIBRE_EVENT_ZOOM\n} from '../../store/map/map.constants'\nimport { debounce } from '../../utils/function'\nimport { MAP_STORE_UPDATE_DELAY } from './map.constants'\nimport { withMapInitialized } from './map.utils'\nimport { useEffectWithMapContext } from './MapContext'\n\nfunction Geolocation() {\n const status = useSelector(selectGeolocationStatus)\n const dispatch = useDispatch()\n\n const onMapMove = useCallback(\n event => {\n const statusIsFollow = status === GEOLOC_STATUS_FOLLOW\n const moveFromUser = !event.fromAppAction && event.type === MAPLIBRE_EVENT_MOVE\n if (statusIsFollow && moveFromUser) {\n dispatch(setGeolocationStatus(GEOLOC_STATUS_ACTIVE))\n }\n },\n [status, setGeolocationStatus]\n )\n\n const onMapMoveDelayed = debounce(onMapMove, MAP_STORE_UPDATE_DELAY)\n\n useEffectWithMapContext(map => {\n map.on(MAPLIBRE_EVENT_MOVE, onMapMoveDelayed)\n map.on(MAPLIBRE_EVENT_ZOOM, onMapMoveDelayed)\n return () => {\n map.off(MAPLIBRE_EVENT_MOVE, onMapMoveDelayed)\n map.off(MAPLIBRE_EVENT_ZOOM, onMapMoveDelayed)\n }\n }, [])\n\n return null\n}\n\nexport default withMapInitialized(Geolocation)\n","export default class MapLoadingError extends Error {\n constructor(e) {\n super(e)\n this.originalError = e\n this.name = 'MapLoadingError'\n }\n}\n","import { isGE } from '../Device'\nimport { DELAY_TO_TRIGGER_CONTEXTMENU_ON_MOBILE, MIN_INTERVAL_TO_DISTINGUISH_SGLE_FROM_DBL_TAP } from './map.constants'\n\nlet lastTimeout\nlet nbClick = 0\n/*\n * On double click, maplibre triggers 2 single `click` events then a `dlbclick` event...\n * Since we’re enabling fullscreen on mobile on a single click, that causes a problem.\n * The fix below handles that situation by calling default handler on single click and zooming on 2 clicks\n */\nexport const handleMobileTap = (e, mapInstance, handler, { maxZoom }, interact) => {\n nbClick++\n if (!lastTimeout) {\n const currentZoom = mapInstance.getZoom()\n lastTimeout = setTimeout(() => {\n if (nbClick === 1) {\n handler(e)\n } else if (nbClick === 2 && currentZoom < maxZoom) {\n const where = {\n center: e.lngLat,\n zoom: currentZoom + 1,\n curve: 1\n }\n interact(where)\n }\n clearInterval(lastTimeout)\n lastTimeout = undefined\n nbClick = 0\n }, MIN_INTERVAL_TO_DISTINGUISH_SGLE_FROM_DBL_TAP)\n }\n}\n\n/*\n * https://github.com/maplibre/maplibre-gl-js/issues/373\n */\nexport const handleMobileLongTouchAsContextMenu = mapInstance => {\n if (isGE()) return\n\n let lastTimeout\n\n mapInstance.on('touchstart', e => {\n if (e.originalEvent?.touches?.length > 1) {\n clearTimeout(lastTimeout)\n return\n }\n lastTimeout = setTimeout(\n () => mapInstance.fire({ ...e, type: 'contextmenu' }),\n DELAY_TO_TRIGGER_CONTEXTMENU_ON_MOBILE\n )\n })\n mapInstance.on('touchmove', () => clearTimeout(lastTimeout))\n mapInstance.on('touchend', () => clearTimeout(lastTimeout))\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { omit } from '../../../utils/object'\nimport SentryService from '../../error/SentryService'\n\nexport const mergeOptions = (prevOptions, newOptions) => {\n const toOmit = []\n if (newOptions.bounds) toOmit.push('center', 'zoom')\n if (newOptions.center) toOmit.push('bounds')\n return omit(\n {\n ...(prevOptions || {}),\n ...newOptions,\n ...(prevOptions?.animate !== undefined || newOptions?.animate !== undefined\n ? { animate: Boolean(prevOptions?.animate || newOptions?.animate) }\n : {})\n },\n toOmit\n )\n}\n\nconst mergeEventData = (prevEventData, newEventData) => ({ ...prevEventData, ...newEventData })\n\nconst setPaddingWithoutVisibleMove = (map, padding) => {\n if (!map) return\n map.stop()\n const currentPadding = map.getPadding()\n const xyCenter = map.project(map.getCenter())\n const deltaX = (currentPadding.left - padding.left - (currentPadding.right - padding.right)) / 2\n const deltaY = (currentPadding.top - padding.top - (currentPadding.bottom - padding.bottom)) / 2\n const center = map.unproject({\n x: xyCenter.x - deltaX,\n y: xyCenter.y - deltaY\n })\n map.flyTo({ center, padding, animate: false })\n}\n\nconst executeInteraction = (map, options, eventData) => {\n if (!options) {\n SentryService.captureException(new Error('options undefined in useMapBoundsInteraction.executeInteraction'))\n return\n }\n if (options.bounds) {\n if (options.padding) setPaddingWithoutVisibleMove(map, options.padding)\n map.fitBounds(options.bounds, omit(options, ['bounds', 'padding']), eventData)\n } else {\n map.flyTo(options, eventData)\n }\n}\n\nconst useMapBoundsInteraction = map => {\n const waitingOptionsRef = useRef({})\n const wantedPadding = useRef(null)\n const moveEndRef = useRef()\n\n useEffect(() => {\n if (!map) return\n moveEndRef.current = () => {\n waitingOptionsRef.current = {}\n }\n }, [map])\n\n return useCallback(\n (options, eventData = {}) => {\n if (!map || !options) return\n\n if (moveEndRef.current) map.off('moveend', moveEndRef.current)\n\n waitingOptionsRef.current = {\n options: mergeOptions(waitingOptionsRef.current?.options, options),\n eventData: mergeEventData(waitingOptionsRef.current?.eventData, eventData)\n }\n if (waitingOptionsRef.current?.options.padding) {\n wantedPadding.padding = waitingOptionsRef.current?.options.padding\n } else if (wantedPadding.padding) {\n waitingOptionsRef.current.options.padding = wantedPadding.padding\n }\n\n executeInteraction(map, waitingOptionsRef.current.options, waitingOptionsRef.current.eventData)\n map.once('moveend', moveEndRef.current)\n },\n [map]\n )\n}\n\nexport default useMapBoundsInteraction\n","import debug from 'debug'\nimport { Map as MapLibreMap } from 'maplibre-gl'\nimport 'maplibre-gl/src/css/maplibre-gl.css'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { changeDocumentLocation } from '../../store/history/history.utils'\nimport {\n MAPLIBRE_EVENT_MOVE,\n MAPLIBRE_EVENT_ZOOM,\n MAP_STATUS_INIT,\n MAP_STATUS_STYLED,\n MAP_STATUS_RELOADING\n} from '../../store/map/map.constants'\nimport {\n selectCouldMapFullScreen,\n selectIsMapFullScreen,\n selectMapBbox,\n selectMapCenter,\n selectMapMaxZoom,\n selectMapService,\n selectMapStatus,\n selectMapZoom\n} from '../../store/map/map.selectors'\nimport { mapDestroyed, mapUpdated, setMapStatus, toggleFullscreen } from '../../store/map/mapSlice'\nimport { selectLocale } from '../../store/navigation/navigation.selectors'\nimport { debounce, throttle } from '../../utils/function'\nimport { isBotNotWebGlCompliant, isGE } from '../Device'\nimport { getMapSessionId } from '../analytics/BiTagger'\nimport MapLoadingError from '../error/MapLoadingError'\nimport SentryService from '../error/SentryService'\nimport { isPolylineAroundPointer } from '../utils/map'\nimport { useRefFromSelector } from '../utils/selector'\nimport { addParamsToUrl } from '../utils/url'\nimport useErrorBoundaryCallback from '../utils/useErrorBoundaryCallback'\nimport s from './DynamicMap.less'\nimport { MapContext } from './MapContext'\nimport { MAP_STORE_UPDATE_DELAY, MAP_ZOOM_MIN } from './map.constants'\nimport {\n MAP_FROM_APP_ACTION_MOVE,\n MAP_FROM_APP_ACTION_PADDING,\n computeMapActiveBbox,\n computePixelsDeltaBetweenBboxes,\n computeSearchBbox,\n isWebglSupported\n} from './map.utils'\nimport { handleMobileLongTouchAsContextMenu, handleMobileTap } from './maplibre.fixes'\nimport useMapBoundsInteraction from './tools/useMapBoundsInteraction'\n\nconst d = debug('map')\n\nconst redirectToWebGLErrorPage = error => {\n if (isBotNotWebGlCompliant()) {\n console.warn('Don’t redirect to webgl error page (special case for some bot)')\n return\n }\n const mapLoadingError = new MapLoadingError(error)\n SentryService.captureException(mapLoadingError)\n changeDocumentLocation('/erreur-support-webgl')\n}\n\n// webpack:BrowserOnly\nconst MapProvider = ({ children }) => {\n const dispatch = useDispatch()\n // state\n const mapInstanceRef = useRef(null)\n const mapContainerRef = useRef()\n const [mapStyleName, setMapStyleName] = useState('')\n\n // selectors\n const storeBboxRef = useRefFromSelector(selectMapBbox)\n const storeCenterRef = useRefFromSelector(selectMapCenter)\n const storeZoomRef = useRefFromSelector(selectMapZoom)\n const couldFullScreen = useSelector(selectCouldMapFullScreen)\n const isMapFullScreen = useSelector(selectIsMapFullScreen)\n const mapService = useSelector(selectMapService)\n const maxZoom = useSelector(selectMapMaxZoom)\n const mapStatus = useSelector(selectMapStatus)\n const locale = useSelector(selectLocale)\n\n const getMapStartLocation = useCallback(() => {\n if (global.GEOIP) {\n const { lat, lng } = global.GEOIP\n delete global.GEOIP // Only at first page load\n const startLocation = {\n center: [lng, lat],\n zoom: 11\n }\n if (d.enabled) d('getMapStartLocation - GEOIP:', JSON.stringify(startLocation))\n return startLocation\n }\n if (storeCenterRef.current && storeZoomRef.current) {\n const startLocation = { center: storeCenterRef.current, zoom: storeZoomRef.current }\n if (d.enabled) d('getMapStartLocation - center+zoom:', JSON.stringify(startLocation))\n return startLocation\n }\n const startLocation = {\n bounds: storeBboxRef.current\n }\n if (d.enabled) d('getMapStartLocation:', JSON.stringify(startLocation))\n return startLocation\n }, [])\n\n const getMapLibreglState = useCallback(\n () => ({\n bbox: mapInstanceRef.current.getBounds().toArray(),\n zoom: mapInstanceRef.current.getZoom()\n }),\n []\n )\n\n const onUpdate = useCallback((event = {}) => {\n const { fromAppAction } = event\n const { bbox, zoom } = getMapLibreglState()\n const activeBbox = computeMapActiveBbox(mapInstanceRef.current)\n const searchBbox = computeSearchBbox(mapInstanceRef.current)\n const distanceFromPreviousChange = computePixelsDeltaBetweenBboxes(\n mapInstanceRef.current,\n bbox,\n storeBboxRef.current\n )\n\n if (d.enabled) {\n d('onUpdate, distanceFromPreviousChange:', distanceFromPreviousChange, 'bbox:', bbox)\n }\n\n dispatch(\n mapUpdated({\n bbox,\n zoom,\n activeBbox,\n searchBbox,\n fromAppAction,\n distanceFromPreviousChange\n })\n )\n }, [])\n\n const getUpdateHandler = () => {\n const delayedUpdate = debounce(onUpdate, MAP_STORE_UPDATE_DELAY)\n return (event = {}) => {\n const { fromAppAction } = event\n if (fromAppAction === MAP_FROM_APP_ACTION_PADDING) {\n onUpdate(event)\n } else {\n delayedUpdate(event)\n }\n }\n }\n\n /*\n This useEffect must be executed before the following one,\n and has no dependency with mapInstanceRef to not be re-executed when map is initialized\n */\n useEffect(() => {\n if (!mapInstanceRef.current) return\n\n dispatch(setMapStatus(MAP_STATUS_RELOADING))\n mapInstanceRef.current.setStyle(mapService.url)\n }, [mapService.url])\n\n const updateMapStatusOnRender = useCallback(() => {\n if (mapStatus === MAP_STATUS_STYLED) return\n if (mapInstanceRef.current.isStyleLoaded()) {\n const { name } = mapInstanceRef.current.getStyle()\n if (mapStyleName !== name) {\n setMapStyleName(name)\n dispatch(setMapStatus(MAP_STATUS_STYLED))\n }\n }\n }, [mapStatus, mapStyleName])\n\n useEffect(() => {\n if (mapStatus === MAP_STATUS_INIT) {\n setMapStyleName('')\n }\n }, [mapStatus])\n\n useEffect(() => {\n if (!mapInstanceRef.current) return\n mapInstanceRef.current.resize()\n }, [isMapFullScreen])\n\n useEffect(() => {\n if (!isWebglSupported()) {\n redirectToWebGLErrorPage('no-webgl-support')\n return\n }\n const { url: style, apikey } = mapService\n const sessionId = getMapSessionId()\n\n try {\n mapInstanceRef.current = new MapLibreMap({\n container: mapContainerRef.current,\n style,\n pitchWithRotate: false,\n dragRotate: false,\n maxZoom,\n minZoom: MAP_ZOOM_MIN,\n doubleClickZoom: isGE(), // NES-1427: Differentiate single and double click « manually » on PE, see handleMobileTap method\n keyboard: true,\n attributionControl: false,\n ...getMapStartLocation(),\n transformRequest: url => {\n const params = { sessionId }\n if (apikey) params.apikey = apikey\n return { url: addParamsToUrl(url, params), headers: { 'accept-language': locale } }\n }\n })\n handleMobileLongTouchAsContextMenu(mapInstanceRef.current)\n mapInstanceRef.current.touchZoomRotate.disableRotation()\n dispatch(setMapStatus(MAP_STATUS_INIT))\n const updateHandler = getUpdateHandler()\n mapInstanceRef.current.on(MAPLIBRE_EVENT_MOVE, updateHandler)\n mapInstanceRef.current.on(MAPLIBRE_EVENT_ZOOM, updateHandler)\n\n mapInstanceRef.current.once('render', () => {\n const { bbox, zoom } = getMapLibreglState()\n const activeBbox = computeMapActiveBbox(mapInstanceRef.current)\n const searchBbox = computeSearchBbox(mapInstanceRef.current)\n\n if (d.enabled) {\n d('update on first render', bbox)\n }\n\n dispatch(\n mapUpdated({\n bbox,\n zoom,\n activeBbox,\n searchBbox,\n fromAppAction: MAP_FROM_APP_ACTION_MOVE\n })\n ) // on first render, we want to update bbox in store (which may be France if geoip was used)\n })\n\n return () => {\n mapInstanceRef.current.off('render', updateMapStatusOnRender)\n mapInstanceRef.current.remove()\n dispatch(mapDestroyed())\n }\n } catch (e) {\n redirectToWebGLErrorPage(e)\n }\n }, [])\n\n useEffect(() => {\n const throttledUpdateMapStyle = throttle(updateMapStatusOnRender, 100)\n if (mapInstanceRef.current) {\n mapInstanceRef.current.on('render', throttledUpdateMapStyle)\n return () => {\n mapInstanceRef.current.off('render', throttledUpdateMapStyle)\n }\n }\n }, [updateMapStatusOnRender])\n\n const onMapTouchEvent = useErrorBoundaryCallback(\n e => {\n if (!e.handled && couldFullScreen && !isPolylineAroundPointer(mapInstanceRef.current, e)) {\n e.handled = true\n dispatch(toggleFullscreen())\n }\n },\n [couldFullScreen, isPolylineAroundPointer]\n )\n\n const interact = useMapBoundsInteraction(mapInstanceRef.current)\n\n const mobileTapHandler = useErrorBoundaryCallback(\n e => {\n handleMobileTap(e, mapInstanceRef.current, onMapTouchEvent, { maxZoom }, interact)\n },\n [interact, onMapTouchEvent]\n )\n\n useEffect(() => {\n if (!mapInstanceRef.current || isGE()) return\n\n mapInstanceRef.current.on('click', mobileTapHandler)\n return () => {\n mapInstanceRef.current.off('click', mobileTapHandler)\n }\n }, [mobileTapHandler, mapInstanceRef.current])\n\n return (\n \n
    \n {children}\n
    \n
    \n )\n}\n\nexport default MapProvider\n","// extracted by mini-css-extract-plugin\nexport default {\"DynamicMap\":\"iCSnM\",\"patchDesktopMapBorders\":\"VIvf7\"};","import React, { useCallback } from 'react'\nimport { TAG_CLICK_CONTEXT_MENU } from '../../analytics/analytics.tagids.constants'\nimport { ACTION } from '../../analytics/ClickTagsService'\nimport s from './ContextMenu.less'\nimport TagActionButton from '../../genericComponents/TagActionButton'\nimport { useContextMenu } from './ContextMenu'\n\nconst ContextMenuItem = ({ tagAction, label, clickAction }) => {\n const { point } = useContextMenu()\n\n const clickHandler = useCallback(() => {\n // do not stop propagation, so the menu can close\n clickAction(point)\n }, [point])\n\n return (\n \n {label}\n \n )\n}\n\nexport default ContextMenuItem\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"zIyn6\",\"item\":\"cZRvE\"};","import { findAddressforGeolocation } from '../../../dataSource/address/address.request'\n\nexport const findAddressFromPoint = payload =>\n findAddressforGeolocation(payload).then(({ addresses }) => {\n if (addresses.length < 1) return Promise.reject(new Error('No address found at this point !'))\n return addresses[0]\n })\n","import React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { selectIsAnItineraryResultPage } from '../../../store/history/history.selectors'\nimport { setStepFromAddress } from '../../../store/itinerary/itinerary.actions'\nimport { addStep, setStepIdx } from '../../../store/itinerary/itinerarySlice'\nimport { selectLocale } from '../../../store/navigation/navigation.selectors'\nimport { useT } from '../../i18n/T'\nimport { selectStepsLength } from '../../itinerary/steps/steps.selectors'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AJOUTER_ETAPE } from './contextmenu.constants'\nimport { findAddressFromPoint } from './contextmenu.utils'\n\nconst ContextMenuItemItineraryAddStep = () => {\n const label = useT('map.context-menu.add-step-itinerary')\n const dispatch = useDispatch()\n const execSetStepFromAddress = useAction(setStepFromAddress)\n const stepsLength = useSelector(selectStepsLength)\n const locale = useSelector(selectLocale)\n\n const onAddStep = point => {\n findAddressFromPoint({ ...point, locale })\n .then(address => {\n dispatch(addStep())\n dispatch(setStepIdx(stepsLength - 1))\n execSetStepFromAddress(address)\n })\n .catch(e => console.error(e))\n }\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsAnItineraryResultPage)(ContextMenuItemItineraryAddStep)\n","export const CLIC_DROIT = 'Clic_droit'\nexport const AFFICHER_ADRESSE = 'Afficher_l_adresse'\nexport const AFFICHER_VILLE = 'Afficher_la_ville'\nexport const AFFICHER_DEPARTEMENT = 'Afficher_le_departement'\nexport const AFFICHER_REGION = 'Afficher_la_region'\nexport const ITINERAIRE_DEPUIS = 'Itinéraire_depuis_ce_lieu'\nexport const ITINERAIRE_VERS = 'Itinéraire_vers_ce_lieu'\nexport const AJOUTER_ETAPE = 'Ajouter_une_etape_ici'\n","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { ITINERAIRE_DEPUIS } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport { setDepartureFromPoint } from '../../../store/itinerary/itinerary.actions'\nimport { selectIsItineraryUniverse } from '../../../store/history/history.selectors'\n\nconst ContextMenuItemItineraryFrom = () => {\n const label = useT('map.context-menu.go-from-itinerary')\n const execSetDepartureFromPoint = useAction(setDepartureFromPoint)\n\n const onItineraryFrom = point => {\n execSetDepartureFromPoint(point).catch(e => console.error(e))\n }\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsItineraryUniverse)(ContextMenuItemItineraryFrom)\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { ROUTE_ITINERARY_TO } from '../../../routes'\nimport { navigateTo } from '../../../store/history/history.actions'\nimport { selectIsItineraryUniverse } from '../../../store/history/history.selectors'\nimport { setArrivalFromPoint } from '../../../store/itinerary/itinerary.actions'\nimport { selectLocale } from '../../../store/navigation/navigation.selectors'\nimport { useT } from '../../i18n/T'\nimport { useAction } from '../../utils/react-redux'\nimport ContextMenuItem from './ContextMenuItem'\nimport { ITINERAIRE_VERS } from './contextmenu.constants'\nimport { findAddressFromPoint } from './contextmenu.utils'\n\nconst ContextMenuItemItineraryTo = () => {\n const label = useT('map.context-menu.go-to-itinerary')\n const execSetArrivalFromPoint = useAction(setArrivalFromPoint)\n const itineraryUniverse = useSelector(selectIsItineraryUniverse)\n const navigateToAction = useAction(navigateTo)\n const locale = useSelector(selectLocale)\n\n const navigateToItineraryTo = address => {\n navigateToAction({\n route: ROUTE_ITINERARY_TO,\n routeOptions: {\n to: address.label,\n toAddress: address,\n avoidReset: true\n }\n })\n }\n\n const onItineraryTo = point => {\n if (itineraryUniverse) {\n execSetArrivalFromPoint(point).catch(e => console.error(e))\n } else {\n findAddressFromPoint({ ...point, locale })\n .then(address => navigateToItineraryTo(address))\n .catch(e => console.error(e))\n }\n }\n\n return \n}\n\nexport default ContextMenuItemItineraryTo\n","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AFFICHER_ADRESSE } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction } from '../../utils/react-redux'\nimport { searchAddressFromPoint } from '../../../store/address/address.actions'\n\nconst ContextMenuItemShowAddress = () => {\n const label = useT('map.context-menu.show-address')\n const searchAddressFromPointAction = useAction(searchAddressFromPoint)\n\n return \n}\n\nexport default ContextMenuItemShowAddress\n","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AFFICHER_VILLE } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport { searchCityFromPoint } from '../../../store/address/address.actions'\nimport { selectIsPlacesUniverse } from '../../../store/history/history.selectors'\n\nconst ContextMenuItemShowCity = () => {\n const label = useT('map.context-menu.show-city')\n const execSearchLocation = useAction(searchCityFromPoint)\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsPlacesUniverse)(ContextMenuItemShowCity)\n","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AFFICHER_DEPARTEMENT } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport { searchDepartmentFromPoint } from '../../../store/address/address.actions'\nimport { selectIsPlacesUniverse } from '../../../store/history/history.selectors'\n\nconst ContextMenuItemShowCity = () => {\n const label = useT('map.context-menu.show-department')\n const execSearchLocation = useAction(searchDepartmentFromPoint)\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsPlacesUniverse)(ContextMenuItemShowCity)\n","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AFFICHER_REGION } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport { searchRegionFromPoint } from '../../../store/address/address.actions'\nimport { selectIsPlacesUniverse } from '../../../store/history/history.selectors'\n\nconst ContextMenuItemShowCity = () => {\n const label = useT('map.context-menu.show-region')\n const execSearchLocation = useAction(searchRegionFromPoint)\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsPlacesUniverse)(ContextMenuItemShowCity)\n","import React, { useCallback, useContext, useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { TAG_CLICK_CONTEXT_MENU } from '../../analytics/analytics.tagids.constants'\nimport { selectCurrentHistoryRoute } from '../../../store/history/history.selectors'\nimport { selectMapBbox } from '../../../store/map/map.selectors'\nimport { selectShouldDisplayContextMenu } from '../../../store/ui/ui.selectors'\nimport { ACTION } from '../../analytics/ClickTagsService'\nimport useImpressionTag from '../../analytics/useImpressionTag'\nimport useEventCallback from '../../utils/useEventCallback'\nimport { withMapInitialized } from '../map.utils'\nimport { useEffectWithMapContext, useMapContext } from '../MapContext'\nimport { CLIC_DROIT } from './contextmenu.constants'\nimport s from './ContextMenu.less'\nimport ContextMenuItemItineraryAddStep from './ContextMenuItemItineraryAddStep'\nimport ContextMenuItemItineraryFrom from './ContextMenuItemItineraryFrom'\nimport ContextMenuItemItineraryTo from './ContextMenuItemItineraryTo'\nimport ContextMenuItemShowAddress from './ContextMenuItemShowAddress'\nimport ContextMenuItemShowCity from './ContextMenuItemShowCity'\nimport ContextMenuItemShowDepartment from './ContextMenuItemShowDepartment'\nimport ContextMenuItemShowRegion from './ContextMenuItemShowRegion'\n\nconst LocalContext = React.createContext({ point: null })\n\nexport const useContextMenu = () => useContext(LocalContext)\n\nexport function getStyle(event, canvas) {\n const { clientWidth: canvasWidth, clientHeight: canvasHeight } = canvas\n\n const width = 160\n const height = 60\n const top = event.point.y\n const left = event.point.x\n return {\n top: top + height > canvasHeight ? top - height : top,\n left: left + width > canvasWidth ? left - width : left,\n width\n }\n}\n\nexport function ContextMenu() {\n const { map } = useMapContext()\n const currentRoute = useSelector(selectCurrentHistoryRoute)\n const bbox = useSelector(selectMapBbox)\n const [event, setEvent] = useState()\n const shouldDisplay = useSelector(selectShouldDisplayContextMenu)\n\n const closeContextMenu = useCallback(() => {\n setEvent(null)\n }, [])\n\n const onContextMenu = useCallback(\n event => {\n setEvent(event)\n map.once('click', closeContextMenu)\n },\n [setEvent, closeContextMenu]\n )\n\n useEffectWithMapContext(\n map => {\n map.on('contextmenu', onContextMenu)\n\n return () => {\n map.off('contextmenu', onContextMenu)\n }\n },\n [onContextMenu]\n )\n\n useEffect(() => closeContextMenu, [currentRoute, bbox, closeContextMenu])\n useImpressionTag(event, { type: TAG_CLICK_CONTEXT_MENU, tagInfo: { [ACTION]: CLIC_DROIT } })\n\n const menuClickHandler = useEventCallback(closeContextMenu, [closeContextMenu])\n\n if (!event || !shouldDisplay) return <>\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n
    \n )\n}\n\nexport default withMapInitialized(ContextMenu)\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport s from './FPS.less'\n\nconst now = () => (performance || Date)['now']()\n\nconst FPS = () => {\n const [fps, setFps] = useState('')\n\n const stop = useRef(false)\n const t0 = useRef(now())\n const counter = useRef(0)\n const interval = useRef(null)\n\n const updateFpsCount = useCallback(() => {\n const deltaTime = now() - t0.current\n const fps = counter.current / (deltaTime * 0.001)\n\n setFps(fps.toFixed(1))\n\n t0.current = now()\n counter.current = 0\n }, [])\n\n const compute = useCallback(() => {\n counter.current = 0\n t0.current = now()\n\n const count = () => {\n if (stop.current) return\n counter.current++\n requestAnimationFrame(count)\n }\n requestAnimationFrame(count)\n }, [])\n\n useEffect(() => {\n interval.current = setInterval(updateFpsCount, 600)\n return () => {\n clearInterval(interval.current)\n }\n }, [updateFpsCount])\n\n useEffect(() => {\n compute()\n return () => {\n stop.current = true\n }\n }, [compute])\n\n return
    {fps} fps
    \n}\n\nexport default FPS\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"DSU7Z\"};","import React, { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectViewport } from '../../../store/address/address.selectors'\nimport { selectCurrentPolylineBbox } from '../../../store/itinerary/polylines.selectors'\nimport {\n selectIsMapInitialized,\n selectMapActiveBbox,\n selectMapBbox,\n selectMapSearchBbox\n} from '../../../store/map/map.selectors'\nimport { isEmpty } from '../../../utils/lang'\nimport { selectStepsCoordinates } from '../../itinerary/steps/steps.selectors'\nimport { getBboxFromLngLatPoints } from '../../utils/map'\nimport { useMapContext } from '../MapContext'\nimport { bboxArrayToBboxArrays } from '../conversion'\n\nconst BboxDebugger = ({ bbox, id, fillColor = '#088' }) => {\n const { map } = useMapContext()\n const isMapInitialized = useSelector(selectIsMapInitialized)\n\n useEffect(() => {\n if (!map || !isMapInitialized || !bbox || !id) return\n\n const debugId = `${id}_debug_id`\n\n const [[x1, y1], [x2, y2]] = bbox\n const p1 = [Math.min(x1, x2), Math.min(y1, y2)]\n const p2 = [Math.max(x1, x2), Math.min(y1, y2)]\n const p3 = [Math.max(x1, x2), Math.max(y1, y2)]\n const p4 = [Math.min(x1, x2), Math.max(y1, y2)]\n\n const data = {\n type: 'Feature',\n geometry: {\n type: 'Polygon',\n coordinates: [[p1, p2, p3, p4, p1]]\n }\n }\n try {\n if (!isEmpty(map.getLayer(debugId))) {\n map.getSource(debugId).setData(data)\n } else {\n map.addLayer({\n id: debugId,\n type: 'fill',\n source: {\n type: 'geojson',\n data\n },\n paint: {\n 'fill-color': fillColor,\n 'fill-opacity': 0.3\n }\n })\n }\n } catch (error) {\n console.error('failed to getLayer', error)\n }\n\n return () => {\n try {\n if (map.getLayer(debugId)) {\n map.removeLayer(debugId)\n map.removeSource(debugId)\n }\n } catch (error) {\n console.error('failed to getLayer', error)\n }\n }\n }, [map, bbox?.toString(), id, isMapInitialized])\n\n return <>\n}\n\nexport const ViewportDebugger = () => {\n const bbox = bboxArrayToBboxArrays(useSelector(selectViewport))\n return \n}\n\nexport const MapBboxDebugger = () => {\n const bbox = useSelector(selectMapBbox)\n return \n}\n\nexport const ActiveBboxDebugger = () => {\n const bbox = useSelector(selectMapActiveBbox)\n return \n}\n\nexport const SearchBboxDebugger = () => {\n const bbox = useSelector(selectMapSearchBbox)\n return \n}\n\nexport const StepsDebugger = () => {\n const { departure, arrival } = useSelector(selectStepsCoordinates)\n const bbox = departure && arrival ? getBboxFromLngLatPoints([departure, arrival]) : null\n return \n}\n\nexport const PolylineDebugger = () => {\n const bbox = useSelector(selectCurrentPolylineBbox)\n return \n}\n","import React from 'react'\nimport { useMapContext } from '../MapContext'\nimport s from '../tools/ZoomButtons.less'\n\nexport default function ZoomDebugger() {\n const mapContext = useMapContext()\n const rawZoom = mapContext.map?.getZoom?.() || 0\n const zoom = Math.floor(rawZoom * 1000) / 1000\n\n return
    Zoom: {zoom}
    \n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"jiQFc\",\"ZoomButtons\":\"crKZR\",\"ZoomButton\":\"u75NN\",\"ZoomInButton\":\"kWCY5\",\"ZoomOutButton\":\"r24Pa\",\"tooltip\":\"ZSPrw\",\"ZoomDebugger\":\"O4_7L\"};","import React, { useEffect } from 'react'\nimport {\n getFromLocalStorage,\n loadJSONFromLocalStorage,\n saveJSONInLocalStorage\n} from '../../../utils/browserStorageService'\nimport FPS from './FPS'\nimport {\n ActiveBboxDebugger,\n MapBboxDebugger,\n PolylineDebugger,\n SearchBboxDebugger,\n StepsDebugger,\n ViewportDebugger\n} from './BboxDebugger'\nimport ZoomDebugger from './ZoomDebugger'\nimport { useEffectWithMapContext, useMapContext } from '../MapContext'\n\nconst mapDebuggerAPI = {\n map: null,\n ui: {\n zoom: true,\n viewport: false,\n bbox: false,\n steps: false,\n polyline: false,\n activebbox: false,\n searchbbox: false,\n fps: true\n }\n}\n\nconst PREFERENCES_KEY = 'map_debug_parameters'\n\nconst MapDebuggerComponent = () => {\n const { interact } = useMapContext()\n\n useEffect(() => {\n window.mapDebugger = mapDebuggerAPI\n mapDebuggerAPI.setUIItem = (prop, show) => {\n mapDebuggerAPI.ui[prop] = show\n saveJSONInLocalStorage(PREFERENCES_KEY, { ui: mapDebuggerAPI.ui })\n }\n mapDebuggerAPI.show = prop => mapDebuggerAPI.setUIItem(prop, true)\n mapDebuggerAPI.hide = prop => mapDebuggerAPI.setUIItem(prop, false)\n const preferences = loadJSONFromLocalStorage(PREFERENCES_KEY)\n if (preferences && preferences.ui) mapDebuggerAPI.ui = preferences.ui\n return () => {\n delete window.mapDebugger\n }\n }, [])\n\n useEffectWithMapContext(map => {\n mapDebuggerAPI.map = map\n }, [])\n\n useEffect(() => {\n mapDebuggerAPI.interact = interact\n }, [interact])\n\n const { ui } = mapDebuggerAPI\n\n return (\n <>\n {ui.zoom && }\n {ui.viewport && }\n {ui.bbox && }\n {ui.activebbox && }\n {ui.searchbbox && }\n {ui.steps && }\n {ui.polyline && }\n {ui.fps && }\n \n )\n}\n\nexport default function MapDebugger() {\n return getFromLocalStorage('debugMap') ? : null\n}\n","import React from 'react'\nimport { withMapInitialized } from '../map.utils'\nimport s from './AddressMarker.less'\nimport Marker from './Marker'\nimport greyMarker from './marker-grey.png'\nimport { ADDRESS_BIG_MARKER_HEIGHT, ADDRESS_BIG_MARKER_WIDTH, IMAGE_MARKER } from './MarkerConstants'\n\nconst AddressMarker = ({ coordinates, onClick }) => (\n \n)\n\nexport default withMapInitialized(AddressMarker)\n","// extracted by mini-css-extract-plugin\nexport default {\"addressMarker\":\"nVXti\"};","import React from 'react'\nimport { ROUTE_TOOLS_COMPUTE_RADIUS } from '../../../routes'\nimport { selectCurrentHistoryRoute } from '../../../store/history/history.selectors'\nimport { hideMapPopup, displayMapPopup } from '../../../store/map/mapSlice'\nimport { selectAddresses, selectAddressContour } from '../../../store/address/address.selectors'\nimport { selectComputePosition } from '../../../store/tools/tools.selectors'\nimport { createCustomSelector } from '../../utils/react-reselect'\nimport { POPUP_TYPE_ADDRESS } from '../popup/popup.selectors'\nimport AddressMarker from './AddressMarker'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { selectPopupType } from '../../../store/map/map.selectors'\nimport { useAction } from '../../utils/react-redux'\nimport { setAmbiguityAddress } from '../../../store/location/location.actions'\n\nexport const selectShouldDisplayMarkers = createCustomSelector(\n selectAddresses,\n selectAddressContour,\n selectCurrentHistoryRoute,\n (addresses, contour, historyRoute) =>\n Boolean(addresses?.length && !contour && historyRoute !== ROUTE_TOOLS_COMPUTE_RADIUS)\n)\n\nconst AddressMarkersContainer = () => {\n const dispatch = useDispatch()\n const addresses = useSelector(selectAddresses)\n const popupType = useSelector(selectPopupType)\n const execSetAmbiguityAddress = useAction(setAmbiguityAddress)\n\n const handleClickMarker = address => () => {\n if (addresses.length > 1) {\n execSetAmbiguityAddress(address)\n } else {\n popupType === POPUP_TYPE_ADDRESS ? dispatch(hideMapPopup()) : dispatch(displayMapPopup(POPUP_TYPE_ADDRESS))\n }\n }\n\n const shouldDisplayMarkers = useSelector(selectShouldDisplayMarkers)\n if (!shouldDisplayMarkers) return <>\n\n return (\n
    \n {addresses.map(address => {\n const {\n coordinates: { lat, lng }\n } = address\n return \n })}\n
    \n )\n}\n\nexport default AddressMarkersContainer\n","import { Marker as MapLibreMarker } from 'maplibre-gl'\nimport React, { useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectGeolocationPosition, selectIsGeoLocationOn } from '../../../store/geolocation/geolocation.selectors'\nimport { isEqual } from '../../../utils/lang'\nimport { withEmptyFallbackErrorBoundary } from '../../error/EmptyFallbackErrorBoundary'\nimport { useCompass } from '../../utils/useCompass'\nimport { withMapInitialized } from '../map.utils'\nimport { useMapContext } from '../MapContext'\nimport img from './geolocation_marker_x2.png'\nimport s from './GeolocMarker.less'\n\nfunction GeolocMarker() {\n const { map } = useMapContext()\n\n const position = useSelector(selectGeolocationPosition)\n const geolocationOn = useSelector(selectIsGeoLocationOn)\n\n const [coords, setCoords] = useState(null)\n const [marker, setMarker] = useState(null)\n\n const rotation = useCompass(geolocationOn)\n\n const refDiv = useRef()\n\n useEffect(() => {\n if (geolocationOn && position && marker && !isEqual(coords, position)) {\n marker.setLngLat(position)\n setCoords(position)\n }\n }, [geolocationOn, position])\n\n useEffect(() => {\n if (geolocationOn && !marker && position) {\n const m = new MapLibreMarker({\n element: refDiv.current,\n anchor: 'center'\n })\n .setLngLat(position)\n .addTo(map)\n\n setMarker(m)\n }\n }, [geolocationOn, position])\n\n useEffect(\n () => () => {\n if (marker) marker.remove()\n },\n [marker]\n )\n\n if (!geolocationOn || !position) return <>\n\n return (\n
    \n {/* That previous div before refDiv is very important to avoid a crash on umount, see NES-2421 */}\n
    \n \n
    \n
    \n )\n}\n\nexport default withEmptyFallbackErrorBoundary(withMapInitialized(GeolocMarker))\n","import { useCallback, useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsMapInitialized } from '../../store/map/map.selectors'\n\n/*\n * useCompass gets phone orientation angle relative to north.\n * This allows to turn the the geolocation marker according the current user direction.\n *\n * Current code work on Android with Chrome & Firefox.\n *\n * It could work on iOS but we should ask permission via DeviceOrientationEvent.requestPermission on iOS 13+\n *\n * Useful links :\n * - https://dev.to/orkhanjafarovr/real-compass-on-mobile-browsers-with-javascript-3emi\n * - https://caniuse.com/?search=deviceorientationabsolute\n * - https://dev.to/li/how-to-requestpermission-for-devicemotion-and-deviceorientation-events-in-ios-13-46g2\n */\nexport function useCompass(activated) {\n const mapInitialized = useSelector(selectIsMapInitialized)\n const [rotation, setRotation] = useState(0)\n\n const compassHandler = useCallback(e => {\n if (!e.absolute) return\n setRotation(-(e.alpha || 0).toFixed(0))\n }, [])\n\n useEffect(() => {\n if (mapInitialized && activated) {\n const eventName = 'deviceorientationabsolute'\n window.addEventListener(eventName, compassHandler, true)\n return () => {\n window.removeEventListener(eventName, compassHandler)\n }\n }\n }, [mapInitialized, activated, compassHandler])\n return rotation\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"imgMarker\":\"djFro\"};","import { Popup as MapLibrePopup } from 'maplibre-gl'\nimport React, { useEffect, useState } from 'react'\nimport ReactDOM from 'react-dom'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { hideMapPopup } from '../../../store/map/mapSlice'\nimport { isPE } from '../../Device'\nimport { withEmptyFallbackErrorBoundary } from '../../error/EmptyFallbackErrorBoundary'\nimport { withMapInitialized } from '../map.utils'\nimport { useMapContext } from '../MapContext'\nimport s from './Popup.less'\nimport {\n POPUP_TYPE_ADDRESS,\n POPUP_TYPE_PANO,\n POPUP_TYPE_POI,\n selectPopupData,\n selectShouldDisplayPopup\n} from './popup.selectors'\nimport PopupAddress from './PopupAddress'\nimport PopupPano from './PopupPano'\nimport PopupPoi from './PopupPoi'\n\n// webpack:BrowserOnly\n\nconst popupDataAreComplete = ({ offset, coords, type }) => type && offset && coords && coords.lat && coords.lng\n\nconst getChild = type => {\n switch (type) {\n case POPUP_TYPE_PANO:\n return \n case POPUP_TYPE_POI:\n return \n case POPUP_TYPE_ADDRESS:\n return \n default:\n return null // 'null' is important to have a falsy return\n }\n}\n\nconst POPUP_ID = 'mapPopupWrapper'\n\nconst useMapLibrePopup = () => {\n const dispatch = useDispatch()\n const popupData = useSelector(selectPopupData)\n const shouldHavePopup = popupDataAreComplete(popupData)\n const [hasPopup, setHasPopup] = useState(0)\n const { type, coords, offset, anchor, maxWidth, withIllustration } = popupData\n const { map } = useMapContext()\n\n useEffect(() => {\n if (!shouldHavePopup) return\n\n const popupTypeClass = ` popup-${type}`\n const withIllustrationClass = withIllustration ? ' with-illustration' : ''\n\n const mapLibrePopup = new MapLibrePopup({\n offset,\n closeButton: false,\n className: `${s.popup}${popupTypeClass}${withIllustrationClass}`,\n anchor,\n maxWidth\n })\n\n mapLibrePopup.setLngLat(coords).setHTML(`
    `).addTo(map)\n\n setHasPopup(Date.now())\n\n return () => {\n mapLibrePopup.remove()\n setHasPopup(0)\n }\n }, [shouldHavePopup])\n\n useEffect(() => {\n const clickHandler = () => {\n dispatch(hideMapPopup())\n }\n map.on('click', clickHandler)\n\n return () => {\n map.off('click', clickHandler)\n }\n }, [hideMapPopup])\n\n return hasPopup && POPUP_ID\n}\n\nconst PortalPopup = ({ children }) => {\n const popupId = useMapLibrePopup()\n\n if (!popupId) return <>\n\n const domNode = document.querySelector(`#${popupId}`)\n if (!domNode) return <>\n return ReactDOM.createPortal(children, domNode)\n}\n\nconst Popup = () => {\n const { type } = useSelector(selectPopupData)\n const child = getChild(type)\n const shouldDisplayPopup = useSelector(selectShouldDisplayPopup)\n\n if (!shouldDisplayPopup || !child) return <>\n if (isPE() && type === POPUP_TYPE_ADDRESS) return <>\n\n return isPE() ?
    {child}
    : {child}\n}\n\nexport default withEmptyFallbackErrorBoundary(withMapInitialized(Popup))\n","// extracted by mini-css-extract-plugin\nexport default {\"popup\":\"Ws2e0\",\"popupPE\":\"o0wVq\"};","import { useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { MAP_MODES, MAP_STATUS_STYLED, MAP_THEMES } from '../../../store/map/map.constants'\nimport { selectMapMode, selectMapStatus, selectMapTheme } from '../../../store/map/map.selectors'\nimport { isGE, isRetina } from '../../Device'\nimport { useMapContext } from '../MapContext'\n\nconst getRasterLayerAccordingDevice = id => new RegExp(`^${id}${isGE() ? '' : '_hd'}$`)\n\nconst useLayersManager = () => {\n const { map } = useMapContext()\n const [layersDefaultVisibility, setLayersDefaultVisibility] = useState([])\n const status = useSelector(selectMapStatus)\n const mapMode = useSelector(selectMapMode).mode\n const mapTheme = useSelector(selectMapTheme)\n\n useEffect(() => {\n if (!map || status !== MAP_STATUS_STYLED) return\n\n map.setLayoutProperty('simple-tiles-desktop', 'visibility', !isRetina() ? 'visible' : 'none')\n map.setLayoutProperty('simple-tiles-mobile', 'visibility', isRetina() ? 'visible' : 'none')\n\n const visibilities = map\n .getStyle()\n .layers.filter(layer => layer.layout && layer.layout.visibility)\n .map(({ id, layout }) => ({ id, visibility: layout.visibility }))\n\n setLayersDefaultVisibility(visibilities)\n }, [map, status])\n\n useEffect(() => {\n if (!map || layersDefaultVisibility.length === 0) return\n layersDefaultVisibility.forEach(layer => {\n let visibility = layer.visibility\n if (mapTheme === MAP_THEMES.satellite && layer.id.match(/_photo$/)) {\n visibility = 'visible'\n } else if (mapMode === MAP_MODES.tc && layer.id.match(/public_transport/)) {\n visibility = 'visible'\n } else if (mapMode === MAP_MODES.traffic && layer.id.match(/_traffic_vecto$/)) {\n visibility = 'visible'\n } else if (mapMode === MAP_MODES.bicycle && layer.id.match(getRasterLayerAccordingDevice('bicycle'))) {\n visibility = 'visible'\n } else if (mapTheme === MAP_THEMES.satellite) {\n visibility = 'none'\n }\n map.setLayoutProperty(layer.id, 'visibility', visibility)\n })\n }, [map, layersDefaultVisibility, mapMode, mapTheme])\n}\n\nexport default useLayersManager\n","import { requestZoom } from '../../../store/map/map.actions'\nimport { noop } from '../../../utils/function'\nimport { isGE } from '../../Device'\nimport { useAction } from '../../utils/react-redux'\nimport useTimeout from '../../utils/useTimeout'\nimport { useCallbackWithMapContext, useEffectWithMapContext } from '../MapContext'\nimport { MAP_RASTER_ZOOM_MAX, MAP_ZOOM_MIN, MAP_ZOOM_STEP } from '../map.constants'\nimport { getMapActiveDimensions } from '../map.utils'\n\nconst zoomThreshold = isGE() ? 0.9 : 0.8\nconst stripDecimal = val => (val - Math.floor(val) > zoomThreshold ? Math.round(val) : Math.floor(val))\n\nexport const fixZoomMethods = map => {\n const methodsToOverride = ['flyTo', 'zoomTo', 'easeTo', 'jumpTo', 'setZoom']\n methodsToOverride.forEach(methodName => {\n const originalMethod = map[methodName]\n map[`original${methodName}`] = originalMethod\n map[methodName] = (...args) => {\n const zoomAsFirstArg = typeof args[0] === 'number'\n if (zoomAsFirstArg) {\n args[0] = stripDecimal(args[0])\n } else if (args[0].zoom && typeof args[0].zoom === 'number') {\n args[0].zoom = stripDecimal(args[0].zoom)\n }\n return originalMethod.apply(map, args)\n }\n })\n}\n\nexport default function useIntegerZoom() {\n const execRequestZoom = useAction(requestZoom)\n const [setTouchTimeout, clearTouchTimeout, isTouchTimeoutPending] = useTimeout(300)\n\n const zoomTo = useCallbackWithMapContext((map, z, options = {}) => {\n if (!options.duration) options.duration = 400\n const increase = z > map.getZoom()\n if (increase) {\n z = Math.ceil(z)\n if (z > MAP_RASTER_ZOOM_MAX) z = MAP_RASTER_ZOOM_MAX\n } else {\n z = Math.floor(z)\n if (z < MAP_ZOOM_MIN) z = MAP_ZOOM_MIN\n }\n map.zoomTo(z, options)\n })\n\n const getZoomOffset = useCallbackWithMapContext((map, event) => {\n const padding = map.getPadding()\n const { width, height } = getMapActiveDimensions(map)\n const centerX = width / 2 + padding.left\n const centerY = height / 2 + padding.top\n const x = event?.originalEvent?.layerX ?? centerX\n const y = event?.originalEvent?.layerY ?? centerY\n return [x - centerX, y - centerY]\n }, [])\n\n const handleInitialZoom = useCallbackWithMapContext(map => {\n const zoom = stripDecimal(map.getZoom())\n execRequestZoom({ zoom })\n })\n\n const handleWheel = useCallbackWithMapContext(\n (map, event) => {\n let delta = MAP_ZOOM_STEP\n if (event.originalEvent.deltaY > 0) delta *= -1\n const z = map.getZoom() + delta\n zoomTo(z, { offset: getZoomOffset(event) })\n },\n [getZoomOffset]\n )\n\n const handleDblClick = useCallbackWithMapContext((map, event) => {\n let delta = MAP_ZOOM_STEP\n if (event.originalEvent.shiftKey) delta *= -1\n zoomTo(map.getZoom() + delta, { around: event.lngLat })\n })\n\n const handleTouch = useCallbackWithMapContext(\n (map, event) => {\n if (!isTouchTimeoutPending()) {\n setTouchTimeout(noop)\n return\n }\n clearTouchTimeout()\n handleDblClick(event)\n },\n [isTouchTimeoutPending]\n )\n\n useEffectWithMapContext(map => {\n fixZoomMethods(map)\n map.once('styledata', handleInitialZoom)\n map.on('wheel', event => handleWheel(event))\n map.on('touch', event => handleTouch(event))\n map.scrollZoom.disable()\n map.doubleClickZoom.disable()\n if (isGE()) map.on('dblclick', event => handleDblClick(event))\n }, [])\n\n return null\n}\n","import { useEffect } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { selectMapTargetData } from '../../store/map/map.selectors'\nimport { useMapContext } from './MapContext'\nimport { acknowledgeMapZoom } from '../../store/map/mapSlice'\n\nexport default function useMapZoomHandler() {\n const { targetZoom } = useSelector(selectMapTargetData)\n const { map, interact } = useMapContext()\n const dispatch = useDispatch()\n\n useEffect(() => {\n if (!map || !targetZoom) return\n\n dispatch(acknowledgeMapZoom())\n\n interact({ zoom: targetZoom })\n }, [map, targetZoom])\n}\n","import { setMeasurement, setTag, startInactiveSpan } from '@sentry/react'\nimport debug from 'debug'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { selectIsVectorMap } from '../../store/map/map.selectors'\nimport { sendMapLoadingTime } from '../../store/map/mapSlice'\nimport { useEffectWithMapContext } from './MapContext'\nimport { isWebglSupported } from './map.utils'\n\nconst d = debug('map')\n\nconst useMapPerfMetrics = () => {\n const dispatch = useDispatch()\n const vectorMap = useSelector(selectIsVectorMap)\n\n useEffectWithMapContext(map => {\n const mapHasGoodSupport = isWebglSupported()\n if (d.enabled) d('goodSupport', mapHasGoodSupport)\n\n setTag('mapType', vectorMap ? 'vector' : 'raster')\n setTag('mapGoodSupport', String(mapHasGoodSupport))\n\n const startTimestamp = Date.now()\n map.once('load', () => {\n const endTimestamp = Date.now()\n const loadTime = endTimestamp - startTimestamp\n if (d.enabled) d('loadTime:', loadTime)\n setMeasurement('map.load', loadTime, 'second')\n dispatch(sendMapLoadingTime({ loadTime, mapHasGoodSupport }))\n })\n\n const spanMap = startInactiveSpan({\n name: 'map',\n forceTransaction: true\n })\n const spanMapStyle = startInactiveSpan({ name: 'style', parentSpan: spanMap })\n const spanMapLoad = startInactiveSpan({ name: 'load', parentSpan: spanMap })\n\n map.once('styledata', () => {\n spanMapStyle.end()\n })\n map.once('load', () => {\n spanMapLoad.end()\n spanMap.end()\n })\n }, [])\n}\n\nexport default useMapPerfMetrics\n","import debug from 'debug'\nimport { useEffect } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { GEOLOC_MOVE_FROM_INITIAL } from '../../store/map/map.constants'\nimport { selectIsMapInitialized, selectMapTargetData } from '../../store/map/map.selectors'\nimport { acknowledgeMapMove } from '../../store/map/mapSlice'\nimport SentryService from '../error/SentryService'\nimport { useMapContext } from './MapContext'\nimport { bboxIsValid, MAP_FROM_APP_ACTION_MOVE } from './map.utils'\n\nconst d = debug('map')\n\nconst useMapMoveHandler = () => {\n const { targetBbox, targetCenter, targetOptions = {} } = useSelector(selectMapTargetData)\n const { map, interact } = useMapContext()\n const dispatch = useDispatch()\n const mapInitialized = useSelector(selectIsMapInitialized)\n\n useEffect(() => {\n if (!map || (!targetBbox && !targetCenter)) return\n\n dispatch(acknowledgeMapMove())\n\n let move\n const options = {\n ...targetOptions,\n animate: !targetOptions.avoidAnimation,\n ...(targetOptions.withFastAnimation\n ? {\n easing: t => 1 - Math.pow(1 - t, 13)\n }\n : {})\n }\n\n const eventData = targetOptions.from === GEOLOC_MOVE_FROM_INITIAL ? {} : { fromAppAction: MAP_FROM_APP_ACTION_MOVE }\n\n if (d.enabled) {\n if (targetBbox) d('targetBbox', targetBbox, 'bboxIsValid', bboxIsValid(targetBbox))\n if (targetCenter) d('targetCenter', targetCenter)\n }\n\n if (targetBbox && bboxIsValid(targetBbox)) {\n move = () => {\n try {\n interact({ ...options, bounds: targetBbox }, eventData)\n } catch (e) {\n SentryService.addBreadcrumb('map', `targetBbox is ${JSON.stringify(targetBbox)}`)\n SentryService.captureException(e)\n }\n }\n } else if (targetCenter) {\n move = () => {\n try {\n interact({ ...options, center: targetCenter }, eventData)\n } catch (e) {\n SentryService.addBreadcrumb('map', `targetCenter is ${JSON.stringify(targetCenter)}`)\n SentryService.captureException(e)\n }\n }\n }\n mapInitialized ? setTimeout(move, 0) : map.once('load', move)\n }, [map, targetBbox, targetCenter, mapInitialized])\n}\n\nexport default useMapMoveHandler\n","import { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsOnboardingContext } from '../../store/navigation/navigation.selectors'\nimport { isEqual } from '../../utils/lang'\nimport useComputePaddingGetter from './map.padding.utils'\nimport { MAP_FROM_APP_ACTION_PADDING } from './map.utils'\nimport { useCallbackWithMapContext, useMapContext } from './MapContext'\n\nconst useMapPaddingHandler = () => {\n const { interact } = useMapContext()\n const getPadding = useComputePaddingGetter()\n\n const isOnboardingContext = useSelector(selectIsOnboardingContext)\n\n const setPadding = useCallbackWithMapContext(\n map => {\n const padding = getPadding()\n if (!isEqual(map.getPadding(), padding)) {\n const animate = !isOnboardingContext\n interact({ padding, animate }, { fromAppAction: MAP_FROM_APP_ACTION_PADDING })\n }\n },\n [getPadding, interact, isOnboardingContext]\n )\n\n useEffect(() => {\n setPadding()\n }, [setPadding])\n}\n\nexport default useMapPaddingHandler\n","import { useState } from 'react'\nimport { isGE } from '../../Device'\nimport useEventCallback from '../../utils/useEventCallback'\n\nconst useTooltip = (options = {}) => {\n const [tooltip, setTooltip] = useState(false)\n\n const showTooltip = useEventCallback(() => setTooltip(true), [setTooltip])\n const hideTooltip = useEventCallback(() => setTooltip(false), [setTooltip])\n\n const shouldRegisterMouseListener = isGE() ? options?.ge : options?.pe\n\n const mouseListeners = shouldRegisterMouseListener\n ? {\n onMouseOver: showTooltip,\n onMouseOut: hideTooltip\n }\n : {}\n\n return { tooltip, setTooltip, mouseListeners }\n}\n\nexport default useTooltip\n","import React from 'react'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport T, { useT } from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './HdTooltip.less'\n\nconst HdTooltip = ({ onClick }) => (\n
    \n
    \n \n
    \n

    \n \n

    \n \n
    \n)\n\nexport default HdTooltip\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"n4KB4\",\"title\":\"lsqv2\",\"content\":\"Gafo6\",\"closeButton\":\"aZV0Y\"};","// extracted by mini-css-extract-plugin\nexport default {\"layerButton\":\"KQUNE\",\"greyedIcon\":\"GB7Zr\",\"label\":\"X2Dhq\",\"modeButton\":\"LSmSY\",\"disabledLayerButton\":\"bad5b\",\"disabledLabel\":\"kcmFW\",\"activeButton\":\"pQh_d\"};","import classNames from 'classnames'\nimport React, { useCallback } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { setMapMode, setMapTheme } from '../../../store/map/mapSlice'\nimport { MAP_MODES, MAP_THEMES } from '../../../store/map/map.constants'\nimport { selectMapMode, selectMapTheme } from '../../../store/map/map.selectors'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './LayerButtons.less'\nimport { TAG_CLICK_EVENT_MODE } from '../../analytics/analytics.tagids.constants'\nimport TagActionButton from '../../genericComponents/TagActionButton'\n\nexport const ModeMapEventLayerButton = ({\n id,\n disabled,\n active,\n icon,\n label,\n ariaLabel,\n tooltipLabel,\n clickAction\n}) => {\n const onClick = useEventCallback(() => {\n clickAction()\n }, [clickAction])\n\n return (\n \n
    \n \n
    \n \n {label}\n \n \n )\n}\n\nexport const ModeLayerButton = ({\n icon,\n activeIcon,\n hoverIcon,\n id,\n disabled,\n isEventMode,\n label,\n ariaLabel,\n tooltipLabel\n}) => {\n const dispatch = useDispatch()\n const active = id === useSelector(selectMapMode).mode\n\n if (active && disabled) dispatch(setMapMode(MAP_MODES.neutral))\n\n const clickAction = useCallback(() => dispatch(setMapMode(active ? MAP_MODES.neutral : id)), [active, id])\n\n const onClick = useEventCallback(() => clickAction(), [clickAction])\n\n if (isEventMode)\n return (\n \n )\n\n return (\n \n
    \n \n
    \n \n \n \n
    \n )\n}\n\nexport const ThemeLayerButton = ({ icon, id, disabled }) => {\n const dispatch = useDispatch()\n const active = id === useSelector(selectMapTheme)\n\n if (active && disabled) dispatch(setMapTheme(MAP_THEMES.normal))\n\n const onClick = useEventCallback(() => dispatch(setMapTheme(active ? MAP_THEMES.normal : id)), [active, id])\n\n return (\n \n
    \n \n
    \n \n \n \n \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"fzgqB\",\"mainTitle\":\"rH40k\",\"button\":\"ljDKu\",\"openButton\":\"c4T7V\",\"opened\":\"fVYwR\",\"closing\":\"URVxD\",\"closeButton\":\"Lz6io\",\"buttonsSection\":\"eR8Ss\",\"buttonsList\":\"aovGG\",\"buttons\":\"lDjTQ\",\"title\":\"zr0K_\",\"tooltip\":\"CwsAJ\",\"highdef\":\"K7s6r\",\"highDefButton\":\"lCJDE\",\"highdefLabel\":\"Pn360\",\"informationIcon\":\"piuLg\"};","import { useSelector } from 'react-redux'\nimport { MAP_BUTTON_MODE, MAP_BUTTON_THEME, MAP_MODES, MAP_THEMES } from '../../../store/map/map.constants'\nimport { selectActiveMapEvents } from '../../../store/map/map.selectors'\nimport ThemeDark from './theme-dark.svg'\nimport ThemeNature from './theme-nature.svg'\nimport ThemeSatellite from './theme-satellite.png'\nimport ThemeSimple from './theme-simple.svg'\nimport ThemeStandard from './theme-standard.svg'\nimport { useEffect, useState } from 'react'\n\nconst themeButtons = [\n {\n key: MAP_THEMES.normal,\n icon: ThemeStandard,\n type: MAP_BUTTON_THEME,\n availableInRaster: true\n },\n {\n key: MAP_THEMES.simple,\n icon: ThemeSimple,\n type: MAP_BUTTON_THEME,\n availableInRaster: false\n },\n {\n key: MAP_THEMES.nature,\n icon: ThemeNature,\n type: MAP_BUTTON_THEME,\n availableInRaster: false\n },\n {\n key: MAP_THEMES.satellite,\n icon: ThemeSatellite,\n type: MAP_BUTTON_THEME,\n availableInRaster: true\n },\n {\n key: MAP_THEMES.dark,\n icon: ThemeDark,\n type: MAP_BUTTON_THEME,\n availableInRaster: false\n }\n]\nconst modeButtons = [\n {\n key: MAP_MODES.neutral,\n icon: 'neutral',\n type: MAP_BUTTON_MODE,\n availableInRaster: true\n },\n {\n key: MAP_MODES.traffic,\n icon: 'traffic-outline',\n type: MAP_BUTTON_MODE,\n availableInRaster: true\n },\n {\n key: MAP_MODES.zfe,\n icon: 'critair-outline',\n type: MAP_BUTTON_MODE,\n availableInRaster: false\n },\n {\n key: MAP_MODES.bicycle,\n icon: 'bike-outline',\n type: MAP_BUTTON_MODE,\n availableInRaster: true\n },\n {\n key: MAP_MODES.tc,\n icon: 'subway-outline',\n type: MAP_BUTTON_MODE,\n availableInRaster: true\n }\n]\n\nexport const useMapThemeButtons = () => themeButtons\n\nexport const useMapModeButtons = () => {\n const activeMapEvents = useSelector(selectActiveMapEvents)\n\n const [buttons, setButtons] = useState(modeButtons)\n useEffect(() => {\n const buttons = [...modeButtons]\n buttons.splice(1, 0, ...activeMapEvents)\n setButtons(buttons)\n }, [activeMapEvents])\n\n return buttons\n}\n","import classNames from 'classnames'\nimport React, { useCallback, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { TAG_CLICK_TOGGLE_HD_MAP } from '../../analytics/analytics.tagids.constants'\nimport { selectIsVectorMap } from '../../../store/map/map.selectors'\nimport { switchMapType } from '../../../store/map/mapSlice'\nimport { UI_ELEMENTS } from '../../../store/ui/ui.constants'\nimport { selectShouldDisplayMapTools } from '../../../store/ui/ui.selectors'\nimport useConfigureAndSendTag from '../../analytics/useConfigureAndSendTag'\nimport { isGE } from '../../Device'\nimport { ACTION, CLICK_TAG } from '../../analytics/ClickTagsService'\nimport Modal from '../../genericComponents/Modal'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport layers from '../../genericComponents/assets/layers.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport useUIDisplay from '../../ui/useUIDisplay'\nimport SwitchInput from '../../utils/SwitchInput'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport useTooltip from '../tools/useTooltip'\nimport HdTooltip from '../vector/HdTooltip'\nimport { ModeLayerButton, ThemeLayerButton } from './LayerButton'\nimport s from './LayersButtons.less'\nimport informationImg from './information.png'\n\nimport { hideUiMapTooSlowTooltip } from '../../../store/ui/uiSlice'\nimport { useMapModeButtons, useMapThemeButtons } from './LayersButtonsConfig'\n\nconst Buttons = ({ isOpened, isClosing, closeModes }) => {\n const isVecto = useSelector(selectIsVectorMap)\n\n const { tooltip: hdTooltipDisplayed, setTooltip: setHdTooltip } = useTooltip({ ge: true })\n const dispatch = useDispatch()\n const configureAndSendTag = useConfigureAndSendTag()\n\n const switchHdTooltip = useEventCallback(() => setHdTooltip(!hdTooltipDisplayed), [setHdTooltip, hdTooltipDisplayed])\n\n const switchHighDefMap = useCallback(() => {\n dispatch(switchMapType())\n configureAndSendTag({\n type: TAG_CLICK_TOGGLE_HD_MAP,\n tagInfo: { tag: CLICK_TAG.XTC_CARTE_HD_OFF, [ACTION]: isVecto ? 'HD_off' : 'HD_on' }\n })\n }, [switchMapType])\n\n const themeButtons = useMapThemeButtons()\n const modeButtons = useMapModeButtons()\n\n return (\n
    \n
    \n \n
    \n
    closeModes()}>\n
    \n \n
    \n
    \n {isGE() && (\n
    \n
    \n
    \n \n

    \n \n

    \n
    \n \n {hdTooltipDisplayed && }\n
    \n
    \n )}\n
    \n
    \n \n
    \n
    \n {themeButtons.map(({ type, key, icon, availableInRaster }) => (\n \n ))}\n
    \n
    \n
    \n
    \n \n
    \n
    \n {modeButtons.map(({ key, icon, isEventMode, availableInRaster, label, ariaLabel, tooltipLabel }) => (\n \n ))}\n
    \n
    \n
    \n )\n}\n\nconst LayersButtons = () => {\n const dispatch = useDispatch()\n\n const [display, setDisplay] = useState('close')\n\n const { tooltip, setTooltip, mouseListeners } = useTooltip({ ge: true })\n const isOpened = display === 'opened'\n const isClosing = display === 'closing'\n const { showUI, hideUI } = useUIDisplay(UI_ELEMENTS.MAP_TOOLS_PE)\n\n const closeModes = useCallback(() => {\n setDisplay('closing')\n setDisplay('closed')\n hideUI()\n }, [setDisplay, hideUI])\n\n const onOpenClick = useCallback(() => {\n setDisplay('opened')\n setTooltip(false)\n showUI()\n dispatch(hideUiMapTooSlowTooltip())\n }, [setDisplay, setTooltip, showUI, dispatch])\n\n return (\n
    \n {isGE() ? (\n \n ) : (\n \n \n \n )}\n
    \n \n
    \n \n
    \n
    \n \n \n \n
    \n )\n}\n\nexport default withEverySelectorTruthy(selectShouldDisplayMapTools)(LayersButtons)\n","import React from 'react'\nimport useLayersManager from './useLayersManager'\nimport useIntegerZoom from './useIntegerZoom'\nimport useMapZoomHandler from '../useMapZoomHandler'\nimport useMapPerfMetrics from '../useMapPerfMetrics'\nimport useMapMoveHandler from '../useMapMoveHandler'\nimport useMapPaddingHandler from '../useMapPaddingHandler'\nimport LayersButtons from '../common/LayersButtons'\n\nconst RasterMap = () => {\n useLayersManager()\n useIntegerZoom()\n useMapMoveHandler()\n useMapZoomHandler()\n useMapPaddingHandler()\n useMapPerfMetrics()\n\n return (\n <>\n \n \n )\n}\n\nexport default RasterMap\n","import React, { useEffect, useMemo } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectAddressContour } from '../../../store/address/address.selectors'\nimport { selectIsMapReady } from '../../../store/map/map.selectors'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport { useMapContext } from '../MapContext'\nimport { reverseShape } from './map.polygon.utils'\n\nconst SOURCE_ID_AREA = 'city-shape-area-src'\nconst SOURCE_ID_LIMIT = 'city-shape-limit-src'\nconst LAYER_AREA_ID = 'city-shape-area'\nconst LAYER_LIMIT_ID = 'city-shape-limit'\nconst CONTOUR_COLOR = '#1A1A1A'\n\nconst getPolygonLayer = () => ({\n id: LAYER_AREA_ID,\n type: 'fill',\n source: SOURCE_ID_AREA,\n paint: {\n 'fill-opacity': 0.18,\n 'fill-color': CONTOUR_COLOR\n }\n})\n\nconst getLineLayer = () => ({\n id: LAYER_LIMIT_ID,\n type: 'line',\n source: SOURCE_ID_LIMIT,\n paint: {\n 'line-opacity': 0.7,\n 'line-width': 2,\n 'line-color': CONTOUR_COLOR,\n 'line-dasharray': [1, 2]\n }\n})\n\nconst createGeoJSON = geometry => ({\n type: 'geojson',\n data: {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n properties: {},\n geometry\n }\n ]\n }\n})\n\nconst MapAddressContour = ({ reverse = true }) => {\n const { map } = useMapContext()\n const contour = useSelector(selectAddressContour)\n const shape = useMemo(() => (contour && reverse ? reverseShape(contour) : contour), [reverse, contour])\n const isMapReady = useSelector(selectIsMapReady)\n\n const cleanShape = () => {\n try {\n if (!map.getLayer(LAYER_AREA_ID)) return\n map.removeLayer(LAYER_AREA_ID)\n map.removeLayer(LAYER_LIMIT_ID)\n map.removeSource(SOURCE_ID_AREA)\n map.removeSource(SOURCE_ID_LIMIT)\n } catch (error) {\n console.error('failed to cleanShape', error)\n }\n }\n\n const drawShape = () => {\n if (!shape) return\n\n try {\n map.addSource(SOURCE_ID_AREA, createGeoJSON(shape))\n map.addSource(SOURCE_ID_LIMIT, createGeoJSON(contour))\n map.addLayer(getPolygonLayer())\n map.addLayer(getLineLayer())\n } catch (e) {\n console.error(e)\n }\n }\n\n useEffect(() => {\n if (!isMapReady || !shape) return\n drawShape()\n }, [shape, isMapReady])\n\n useEffect(\n () => () => {\n cleanShape()\n },\n []\n )\n\n return <>\n}\n\nexport default withEverySelectorTruthy(selectAddressContour)(MapAddressContour)\n","// extracted by mini-css-extract-plugin\nexport default {\"Copyrights\":\"jNtA0\",\"left\":\"xsdTm\"};","import React, { useEffect, useState, useRef } from 'react'\nimport classnames from 'classnames'\nimport { useMapContext } from '../MapContext'\nimport s from './Copyrights.less'\nimport { isGE } from '../../Device'\nimport { uniq } from '../../../utils/array'\nimport { throttle } from '../../../utils/function'\n\nconst DEFAULT_COPYRIGHT = '© Mappy'\n\nconst Copyrights = () => {\n const { map } = useMapContext()\n const [copyrights, setCopyrights] = useState(DEFAULT_COPYRIGHT)\n\n const mapEventAttached = useRef(false)\n\n useEffect(() => {\n if (!mapEventAttached.current && map) {\n map.on(\n 'render',\n throttle(() => setCopyrights(getCopyright()), 300)\n )\n\n mapEventAttached.current = true\n }\n }, [mapEventAttached, map])\n\n const getCopyrightsFeatures = () =>\n map\n .queryRenderedFeatures()\n .filter(feature => (feature.layer.id || '').includes('copyrights_') && feature.properties.copyrights)\n\n const getCopyrights = () =>\n uniq(getCopyrightsFeatures().flatMap(feature => JSON.parse(feature.properties.copyrights)))\n\n const getCopyright = () => {\n let copyrights = []\n\n try {\n copyrights = getCopyrights()\n } catch (err) {\n console.error(err)\n }\n\n return [DEFAULT_COPYRIGHT, ...copyrights].join(' - ')\n }\n\n return
    {copyrights}
    \n}\n\nexport default Copyrights\n","// extracted by mini-css-extract-plugin\nexport default {\"geoloc\":\"JUSVw\",\"button\":\"r6XR1\",\"icon\":\"jIVJ2\",\"follow\":\"ITaCJ\",\"active\":\"aNCdW\",\"fetch\":\"fVizQ\",\"geolocationSearching\":\"s83Ge\",\"errorMessage\":\"IIFXF\",\"tooltip\":\"G5NBH\",\"error\":\"otMZE\"};","import classNames from 'classnames'\nimport React, { useEffect, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { TAG_SEARCH_GEOLOCATION } from '../../analytics/analytics.tagids.constants'\nimport { selectGeolocationStatus } from '../../../store/geolocation/geolocation.selectors'\nimport { setGeolocationStatus } from '../../../store/geolocation/geolocationSlice'\nimport {\n GEOLOC_STATUS_BLOCKED,\n GEOLOC_STATUS_BUTTON_WORKFLOW,\n GEOLOC_STATUS_DISABLED,\n GEOLOC_STATUS_FETCH_ACTIVE,\n GEOLOC_STATUS_FETCH_FOLLOW,\n GEOLOC_STATUS_FOLLOW\n} from '../../../store/map/map.constants'\nimport { selectShouldDisplayMapTools } from '../../../store/ui/ui.selectors'\nimport TagActionButton from '../../genericComponents/TagActionButton'\nimport mappyLogoFilled from '../../genericComponents/assets/mappy-logo-filled.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport s from './GeolocButton.less'\nimport useTooltip from './useTooltip'\n\nconst GeolocButton = () => {\n const dispatch = useDispatch()\n const status = useSelector(selectGeolocationStatus)\n const [statusFromButton, setStatusFromButton] = useState(null)\n const isFollowStatus = status === GEOLOC_STATUS_FOLLOW\n const isBlockStatus = status === GEOLOC_STATUS_BLOCKED\n const isFetchStatus = status === GEOLOC_STATUS_FETCH_ACTIVE || status === GEOLOC_STATUS_FETCH_FOLLOW\n\n const { tooltip, mouseListeners } = useTooltip({ ge: true, pe: true })\n\n useEffect(() => {\n if (statusFromButton && status !== statusFromButton) {\n setStatusFromButton(null)\n }\n }, [status, statusFromButton])\n\n const onClick = () => {\n const newStatus = GEOLOC_STATUS_BUTTON_WORKFLOW[status]\n if (newStatus !== GEOLOC_STATUS_DISABLED) {\n setStatusFromButton(newStatus)\n dispatch(setGeolocationStatus(newStatus, { mapMove: true }))\n } else {\n dispatch(setGeolocationStatus(newStatus))\n }\n }\n\n return (\n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n {isBlockStatus ? : }\n \n \n )\n}\n\nexport default withEverySelectorTruthy(selectShouldDisplayMapTools)(GeolocButton)\n","import classnames from 'classnames'\nimport React from 'react'\nimport { selectShouldDisplayMapTools } from '../../../store/ui/ui.selectors'\nimport { isGE } from '../../Device'\nimport logoMappy from '../../genericComponents/logo-mappy-bordered.svg'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport s from './Logo.less'\n\nconst Logo = () => (\n
    \n \n
    \n)\n\nexport default withEverySelectorTruthy(selectShouldDisplayMapTools)(Logo)\n","// extracted by mini-css-extract-plugin\nexport default {\"Logo\":\"QoSBm\",\"centeredBottomLogo\":\"dL6k1\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { TAG_UPI_IMMERSIVE } from '../../analytics/analytics.tagids.constants'\nimport { displayOutdoor, hideOutdoor } from '../../../store/ui/ui.actions'\nimport { selectIsOutdoorPrompted } from '../../../store/ui/ui.outdoor.selectors'\nimport TagActionButton from '../../genericComponents/TagActionButton'\nimport personArrowSurrounded from '../../genericComponents/assets/person-arrow-surrounded.svg'\nimport personFallingArrowSurrounded from '../../genericComponents/assets/person-falling-arrow-surrounded.svg'\nimport T from '../../i18n/T'\nimport { OUTDOOR_STATUS_PROMPT } from '../../outdoor/Utils'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './OutdoorButton.less'\nimport useTooltip from './useTooltip'\n\nconst OutdoorButton = () => {\n const statusIsPrompt = useSelector(selectIsOutdoorPrompted)\n const execDisplayOutdoor = useAction(displayOutdoor)\n const execHideOutdoor = useAction(hideOutdoor)\n const { tooltip, setTooltip, mouseListeners } = useTooltip({ ge: true })\n\n const onButtonClick = useEventCallback(() => {\n setTooltip(false)\n if (statusIsPrompt) {\n execHideOutdoor()\n } else {\n execDisplayOutdoor({ status: OUTDOOR_STATUS_PROMPT })\n }\n }, [statusIsPrompt, execHideOutdoor, execDisplayOutdoor])\n\n return (\n
    \n \n \n \n \n \n \n \n
    \n )\n}\n\nexport default OutdoorButton\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"kwYj7\",\"button\":\"jplnA\",\"buttonTooltip\":\"_Y_i0\"};","import { useEffect, useRef } from 'react'\nimport { selectShouldDisplayMapTools } from '../../../store/ui/ui.selectors'\nimport { isGE } from '../../Device'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport { ScaleControl as MapLibreScaleControl } from 'maplibre-gl'\nimport './Scale.less'\nimport { useCallbackWithMapContext } from '../MapContext'\n\nconst Scale = () => {\n const scaleRef = useRef()\n\n const addControl = useCallbackWithMapContext(map => {\n if (scaleRef.current) return\n\n scaleRef.current = new MapLibreScaleControl({\n maxWidth: 120,\n unit: 'metric'\n })\n const position = isGE() ? 'bottom-right' : 'bottom-left'\n map.addControl(scaleRef.current, position)\n })\n\n const removeControl = useCallbackWithMapContext(map => {\n try {\n if (scaleRef.current) map.removeControl(scaleRef.current)\n } catch (e) {}\n scaleRef.current = undefined\n })\n\n useEffect(() => {\n addControl()\n return () => {\n if (scaleRef.current) removeControl()\n }\n }, [addControl, removeControl])\n\n return null\n}\n\nexport default withEverySelectorTruthy(selectShouldDisplayMapTools)(Scale)\n","import React from 'react'\nimport classnames from 'classnames'\nimport s from './ToggleFullScreenGeButton.less'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport { toggleFullscreen } from '../../../store/map/mapSlice'\nimport useEventCallback from '../../utils/useEventCallback'\nimport { withOnlyGE } from '../../Device'\nimport ReduireDesktop from './reduire-desktop.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { selectIsMapFullScreen, selectShouldDisplayToggleFullScreenGeButton } from '../../../store/map/map.selectors'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { ACTION } from '../../analytics/ClickTagsService'\nimport TagActionButton from '../../genericComponents/TagActionButton'\nimport { TAG_CLICK_TOGGLE_FULLSCREEN } from '../../analytics/analytics.tagids.constants'\n\nconst ToggleFullScreenGeButton = () => {\n const dispatch = useDispatch()\n const isMapFullScreen = useSelector(selectIsMapFullScreen)\n\n const onClick = useEventCallback(() => {\n dispatch(toggleFullscreen())\n }, [toggleFullscreen])\n\n return (\n \n \n \n )\n}\n\nexport default withOnlyGE(\n withEverySelectorTruthy(selectShouldDisplayToggleFullScreenGeButton)(ToggleFullScreenGeButton)\n)\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"oUaQF\",\"icon\":\"wWRWG\",\"invert\":\"PjaGG\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { toggleFullscreen } from '../../../store/map/mapSlice'\nimport { selectIsMapFullScreen } from '../../../store/map/map.selectors'\nimport { withOnlyPE } from '../../Device'\nimport innerArrows from '../../genericComponents/assets/inner-arrows.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './ToggleFullscreenPeButton.less'\nimport { useDispatch } from 'react-redux'\n\nconst ToggleFullscreenPeButton = () => {\n const dispatch = useDispatch()\n const onClick = useEventCallback(() => dispatch(toggleFullscreen()), [toggleFullscreen])\n\n return (\n
    \n \n
    \n )\n}\n\nexport default withOnlyPE(withEverySelectorTruthy(selectIsMapFullScreen)(ToggleFullscreenPeButton))\n","// extracted by mini-css-extract-plugin\nexport default {\"ToggleFullscreenButton\":\"yKKSL\",\"buttonPositioning\":\"r7hNP\",\"buttonAspect\":\"ulBMU\"};","import React, { useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { MAP_MODES } from '../../../store/map/map.constants'\nimport { selectMapMode } from '../../../store/map/map.selectors'\nimport { withOnlyGE } from '../../Device'\nimport T from '../../i18n/T'\nimport { ONE_MINUTE_MS, pad } from '../../utils/date'\nimport s from './TrafficLegend.less'\n\nexport const formatHourFromDate = date => {\n const mins = date.getMinutes()\n const hours = date.getHours()\n return pad(hours) + ':' + pad(mins)\n}\n\nconst TrafficLegend = withOnlyGE(() => {\n const mapMode = useSelector(selectMapMode).mode\n const intervalRef = useRef()\n const [lastUpdate, setLastUpdate] = useState(new Date())\n\n useEffect(() => {\n if (mapMode === MAP_MODES.traffic) {\n intervalRef.current = setInterval(() => {\n setLastUpdate(new Date())\n }, 2 * ONE_MINUTE_MS)\n } else {\n clearInterval(intervalRef.current)\n }\n return () => {\n clearInterval(intervalRef.current)\n }\n }, [mapMode])\n\n if (mapMode !== MAP_MODES.traffic) return <>\n\n return (\n
    \n

    \n \n  \n {formatHourFromDate(lastUpdate)}\n

    \n
      \n
    • \n
    • \n
    • \n
    • \n
    • \n
    \n

    \n \n \n \n \n \n \n

    \n
    \n )\n})\n\nexport default TrafficLegend\n","// extracted by mini-css-extract-plugin\nexport default {\"trafficLegend\":\"qJJUg\",\"title\":\"tnGAn\",\"yellow\":\"fTULR\",\"orange\":\"ChtuL\",\"red\":\"Kvb4V\",\"darkred\":\"QYMeT\",\"black\":\"QxDi8\",\"left\":\"D4aSG\",\"right\":\"bm9rv\"};","import classNames from 'classnames'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { requestZoom } from '../../../store/map/map.actions'\nimport { selectMapMaxZoom, selectMapZoom } from '../../../store/map/map.selectors'\nimport { withOnlyGE } from '../../Device'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction } from '../../utils/react-redux'\nimport { MAP_ZOOM_MIN, MAP_ZOOM_STEP } from '../map.constants'\nimport useTooltip from './useTooltip'\nimport s from './ZoomButtons.less'\n\nconst ZoomButton = ({ onClick, icon, className, label, ...otherProps }) => {\n const { tooltip, mouseListeners } = useTooltip({ ge: true })\n\n return (\n
    \n \n \n \n \n \n \n
    \n )\n}\n\nconst ZoomInButton = props => (\n \n)\n\nconst ZoomOutButton = props => (\n \n)\n\nexport const ZoomButtons = () => {\n const execRequestZoom = useAction(requestZoom)\n const zoomFromStore = useSelector(selectMapZoom)\n const maxZoom = useSelector(selectMapMaxZoom)\n // The state zoom exists because the store value is updated when animation finished\n // With the state zoom user can click several times during the animation\n const [zoom, setZoom] = useState()\n\n useEffect(() => {\n setZoom(zoomFromStore)\n }, [zoomFromStore])\n\n const updateZoom = useCallback(\n delta => {\n let targetZoom = zoom + delta\n if (targetZoom > maxZoom) targetZoom = maxZoom\n if (targetZoom < MAP_ZOOM_MIN) targetZoom = MAP_ZOOM_MIN\n\n execRequestZoom({ zoom: targetZoom })\n setZoom(targetZoom)\n },\n [zoom, maxZoom]\n )\n\n return (\n
    \n updateZoom(MAP_ZOOM_STEP)} />\n updateZoom(-MAP_ZOOM_STEP)} />\n
    \n )\n}\n\nexport default withOnlyGE(ZoomButtons)\n","import classNames from 'classnames'\nimport React, { useEffect, useState } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { TAG_MULTIPATH_CTA } from '../../analytics/analytics.tagids.constants'\nimport { selectMapTooSlowTooltip } from '../../../store/ui/ui.selectors'\nimport { hideUiMapTooSlowTooltip } from '../../../store/ui/uiSlice'\nimport useConfigureAndSendTag from '../../analytics/useConfigureAndSendTag'\nimport { withOnlyGE } from '../../Device'\nimport { PUB_TAG } from '../../analytics/PublisherTagsService'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './MapTooSlowTooltip.less'\n\nconst MapTooSlowTooltip = () => {\n const dispatch = useDispatch()\n const [visible, setVisible] = useState(true)\n\n const closeTooltip = useEventCallback(() => {\n dispatch(hideUiMapTooSlowTooltip())\n }, [])\n\n const configureAndSendTag = useConfigureAndSendTag()\n\n useEffect(() => {\n configureAndSendTag({\n type: TAG_MULTIPATH_CTA,\n tagInfo: { tag: PUB_TAG.PUB_MAP_POP_IN_MAP_TOO_SLOW },\n isImpression: true\n })\n setTimeout(() => setVisible(false), 5000)\n }, [])\n\n return (\n
    \n
    \n

    \n \n

    \n

    \n \n

    \n
    \n
    \n \n
    \n
    \n )\n}\nexport default withOnlyGE(withEverySelectorTruthy(selectMapTooSlowTooltip)(MapTooSlowTooltip))\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"EQaTH\",\"hide\":\"WwNZv\",\"content\":\"OTy9E\",\"closeButton\":\"AdKRe\"};","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectShouldDisplayMapLayersButton } from '../../../store/map/map.selectors'\nimport LayersButtons from '../common/LayersButtons'\nimport useMapMoveHandler from '../useMapMoveHandler'\nimport useMapPaddingHandler from '../useMapPaddingHandler'\nimport useMapPerfMetrics from '../useMapPerfMetrics'\nimport useMapPointerHandler from '../useMapPointerHandler'\nimport useMapZoomHandler from '../useMapZoomHandler'\nimport MapTooSlowTooltip from './MapTooSlowTooltip'\nimport useClickMapEventsHandler from './useClickMapEventsHandler'\nimport useClickMyMapLayers from './useClickMyMapLayers'\n\nconst VectorMap = () => {\n useClickMyMapLayers()\n useMapPointerHandler()\n useClickMapEventsHandler()\n useMapMoveHandler()\n useMapZoomHandler()\n useMapPaddingHandler()\n useMapPerfMetrics()\n\n const shouldDisplayMapLayersButton = useSelector(selectShouldDisplayMapLayersButton)\n\n return shouldDisplayMapLayersButton ? null : (\n <>\n \n \n \n )\n}\n\nexport default VectorMap\n","import { useDispatch, useSelector } from 'react-redux'\nimport { ROUTE_SEO_GEOENTITY } from '../../../routes'\nimport { TAG_CLICK_MY_MAP } from '../../analytics/analytics.tagids.constants'\nimport { resetGeoentityList } from '../../../store/geoentity/geoentitySlice'\nimport { navigateTo } from '../../../store/history/history.actions'\nimport { LAYER_ID_CMM, MAP_STATUS_STYLED } from '../../../store/map/map.constants'\nimport { selectMapStatus } from '../../../store/map/map.selectors'\nimport { selectIsFrenchSite } from '../../../store/navigation/navigation.selectors'\nimport useConfigureAndSendTag from '../../analytics/useConfigureAndSendTag'\nimport { useAction } from '../../utils/react-redux'\nimport { useEffectWithMapContext } from '../MapContext'\n\nconst useClickMyMapLayers = () => {\n const status = useSelector(selectMapStatus)\n const execNavigateTo = useAction(navigateTo)\n const configureAndSendTag = useConfigureAndSendTag()\n const dispatch = useDispatch()\n const isFrenchSite = useSelector(selectIsFrenchSite)\n\n const navigateToPoi = ({ id, rubricId }) => {\n configureAndSendTag({\n type: TAG_CLICK_MY_MAP,\n tagInfo: {\n catId: rubricId\n }\n })\n\n dispatch(resetGeoentityList())\n execNavigateTo({\n route: ROUTE_SEO_GEOENTITY,\n routeOptions: { geoentityId: id }\n })\n }\n\n const handleClick = e => {\n if (e.handled) return\n e.handled = true\n const id = e.features[0].properties.mappy_poi_id\n const rubricId = e.features[0].properties.mappy_context_rubric\n\n navigateToPoi({ id, rubricId })\n }\n\n useEffectWithMapContext(\n map => {\n if (!map.getStyle() || status !== MAP_STATUS_STYLED) return\n\n map\n .getStyle()\n .layers.filter(layer => layer.layout?.visibility)\n .forEach(({ id }) => {\n if (id.match(LAYER_ID_CMM)) {\n map.setLayoutProperty(id, 'visibility', 'visible')\n if (isFrenchSite) {\n map.on('click', id, handleClick)\n }\n }\n })\n\n return () => {\n if (map?.getStyle()) {\n map\n .getStyle()\n .layers.filter(layer => layer.layout?.visibility)\n .forEach(({ id }) => {\n if (isFrenchSite) {\n map.off('click', id, handleClick)\n }\n })\n }\n }\n },\n [status, isFrenchSite]\n )\n}\n\nexport default useClickMyMapLayers\n","import { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { LAYER_ID_CMM, LAYER_ID_POLYLINE } from '../../store/map/map.constants'\nimport { selectActiveMapEvents, selectIsMapInitialized } from '../../store/map/map.selectors'\nimport { selectIsFrenchSite } from '../../store/navigation/navigation.selectors'\nimport { selectQuizGuessInProgress } from '../../store/quiz/quiz.selectors'\nimport { isGE } from '../Device'\nimport { getBBoxAroundPointer } from '../utils/map'\nimport useErrorBoundaryCallback from '../utils/useErrorBoundaryCallback'\nimport { useMapContext } from './MapContext'\n\nconst useMapPointerHandler = () => {\n const { map } = useMapContext()\n const mapInitialized = useSelector(selectIsMapInitialized)\n const isFrenchSite = useSelector(selectIsFrenchSite)\n const quizGuessInProgress = useSelector(selectQuizGuessInProgress)\n const activeMapEvents = useSelector(selectActiveMapEvents)\n const mapEventsKeys = activeMapEvents.map(({ key }) => key)\n\n const getPolylinesOrClickableLayersAroundPointer = useErrorBoundaryCallback(\n event =>\n map.queryRenderedFeatures(getBBoxAroundPointer(event)).find(feature => {\n const layerId = feature.layer?.id ?? ''\n const polyline = LAYER_ID_POLYLINE.test(layerId)\n const cmm = isFrenchSite ? LAYER_ID_CMM.test(layerId) : false\n const isMapEvent = mapEventsKeys.find(key => layerId.includes(key))\n return polyline || cmm || isMapEvent\n }),\n [map, isFrenchSite, mapEventsKeys]\n )\n\n const handleMouseOver = useErrorBoundaryCallback(\n e => {\n const shouldDisplayPointer = getPolylinesOrClickableLayersAroundPointer(e)\n if (shouldDisplayPointer) {\n map.getCanvas().style.cursor = 'pointer'\n } else if (quizGuessInProgress) {\n map.getCanvas().style.cursor = 'crosshair'\n } else {\n map.getCanvas().style.cursor = ''\n }\n },\n [map, getPolylinesOrClickableLayersAroundPointer, quizGuessInProgress]\n )\n\n useEffect(() => {\n if (isGE()) {\n if (map && mapInitialized) map.on('mousemove', handleMouseOver)\n return () => {\n if (map) map.off('mousemove', handleMouseOver)\n }\n }\n }, [map, mapInitialized, handleMouseOver])\n}\n\nexport default useMapPointerHandler\n","import { useSelector } from 'react-redux'\nimport { setMapEventPopin } from '../../../store/map/map.actions'\nimport { MAP_STATUS_STYLED } from '../../../store/map/map.constants'\nimport {\n selectActiveMapEvents,\n selectMapStatus,\n selectShouldDisplayMapEventPopin\n} from '../../../store/map/map.selectors'\nimport { useAction } from '../../utils/react-redux'\nimport useErrorBoundaryCallback from '../../utils/useErrorBoundaryCallback'\nimport { useEffectWithMapContext } from '../MapContext'\n\nconst useClickMapEventsHandler = () => {\n const status = useSelector(selectMapStatus)\n const exectSetPopin = useAction(setMapEventPopin)\n const activeMapEvents = useSelector(selectActiveMapEvents)\n const shouldDisplayMapEventPopin = useSelector(selectShouldDisplayMapEventPopin)\n\n const handleClick = useErrorBoundaryCallback(e => {\n if (e.handled) return\n e.handled = true\n const feature = e?.features?.[0]\n if (feature) {\n exectSetPopin(feature.properties)\n }\n })\n\n useEffectWithMapContext(\n map => {\n if (!map.getStyle() || status !== MAP_STATUS_STYLED || !shouldDisplayMapEventPopin) return\n\n map\n .getStyle()\n .layers.filter(layer => layer.layout)\n .forEach(({ id }) => {\n activeMapEvents.forEach(mapEvent => {\n if (id.includes(mapEvent.key)) {\n map.on('click', id, handleClick)\n }\n })\n })\n\n return () => {\n if (map.getStyle()) {\n map\n .getStyle()\n .layers.filter(layer => layer.layout)\n .forEach(({ id }) => {\n map.off('click', id, handleClick)\n })\n }\n }\n },\n [status, shouldDisplayMapEventPopin]\n )\n}\n\nexport default useClickMapEventsHandler\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsQuizPage } from '../../store/history/history.selectors'\nimport { selectIsVectorMap } from '../../store/map/map.selectors'\nimport MapEventPopin from '../genericComponents/MapEventPopin'\nimport UPI from '../outdoor/UPI'\nimport Geolocation from './Geolocation'\nimport MapProvider from './MapProvider'\nimport ContextMenu from './contextmenu/ContextMenu'\nimport MapDebugger from './debug/MapDebugger'\nimport AddressMarkersContainer from './markers/AddressMarkersContainer'\nimport GeolocMarker from './markers/GeolocMarker'\nimport Popup from './popup/Popup'\nimport RasterMap from './raster/RasterMap'\nimport MapAddressContour from './shape/MapAddressContour'\nimport Copyrights from './tools/Copyrights'\nimport GeolocButton from './tools/GeolocButton'\nimport Logo from './tools/Logo'\nimport OutdoorButton from './tools/OutdoorButton'\nimport Scale from './tools/Scale'\nimport ToggleFullScreenGeButton from './tools/ToggleFullScreenGeButton'\nimport ToggleFullscreenPeButton from './tools/ToggleFullscreenPeButton'\nimport TrafficLegend from './tools/TrafficLegend'\nimport ZoomButtons from './tools/ZoomButtons'\nimport VectorMap from './vector/VectorMap'\n\n// webpack:BrowserOnly\nconst DynamicMap = ({ children }) => {\n const pageIsQuiz = useSelector(selectIsQuizPage)\n const vectorMap = useSelector(selectIsVectorMap)\n\n return (\n \n {/* Order matters : at least for GeolocMarker and GeolocButton */}\n \n \n \n \n \n \n \n {!pageIsQuiz && }\n \n \n \n \n \n \n \n \n \n \n {vectorMap ? : }\n {children}\n \n )\n}\n\nexport default DynamicMap\n","\n export default function () {\n return null\n }\n ","import React, { useCallback, useEffect, useState } from 'react'\nimport { getService } from '../../parameters'\nimport SERVICES from '../../services.constants'\nimport request from '../utils/request'\nimport { ONE_SECOND_MS, ONE_WEEK_MS } from '../utils/date'\nimport { isPE, withOnlyBrowser } from '../Device'\nimport s from './AskForUpdate.less'\nimport useEventCallback from '../utils/useEventCallback'\nimport { useSelector } from 'react-redux'\nimport { selectHeaderHeight } from '../../store/ui/ui.selectors'\nimport { HEADER_SUBHEADER_HEIGHT } from '../header/header-constants'\nimport { selectLocale } from '../../store/navigation/navigation.selectors'\nimport { translate } from '../i18n/T'\nimport debug from 'debug'\n\nconst d = debug('update')\n\nconst TEST_MODE = location.hash === '#test-update'\n\nconst DELAY_BETWEEN_CHECKS = TEST_MODE ? 10 * ONE_SECOND_MS : 2 * ONE_WEEK_MS // ONE_MONTH_MS cause setInterval to be called in loop\n\nif (d.enabled) {\n d('delay between checks', DELAY_BETWEEN_CHECKS)\n}\n\nexport const fetchVersion = () => {\n const serviceUrl = getService(SERVICES.WEB_VERSION)\n return request\n .get(serviceUrl, { silent: true })\n .then(({ data }) => data)\n .catch(e => console.warn('error while fetching version', e))\n}\n\n// webpack:BrowserOnly\nconst AskForUpdate = () => {\n const [version, setVersion] = useState(global.__APP_VERSION__)\n const isSameVersion = global.__APP_VERSION__ === version\n const locale = useSelector(selectLocale)\n const t = translate(locale)\n\n if (d.enabled) {\n d('version:', version, 'isSameVersion:', isSameVersion)\n }\n\n const headerHeight = useSelector(selectHeaderHeight)\n const height = isPE() ? headerHeight + HEADER_SUBHEADER_HEIGHT + 30 : 80\n\n const loadVersion = useCallback(async () => {\n const newVersion = await fetchVersion()\n if (d.enabled) {\n d('loadVersion, got:', newVersion, 'vs:', version)\n }\n if (newVersion) {\n setVersion(TEST_MODE ? 'v+' : newVersion)\n }\n }, [setVersion])\n\n useEffect(() => {\n if (!isSameVersion) return\n const intervalId = setInterval(() => {\n loadVersion()\n }, DELAY_BETWEEN_CHECKS)\n return () => clearInterval(intervalId)\n }, [isSameVersion, loadVersion])\n\n const reload = useEventCallback(() => location.reload(), [])\n\n if (isSameVersion) return <>\n\n return (\n
    \n {t('update.msg')}\n \n {t('update.refresh')}\n \n
    \n )\n}\n\nexport default withOnlyBrowser(AskForUpdate)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"pjDqI\",\"refresh\":\"idODq\"};","import React from 'react'\nimport DynamicMap from './DynamicMap'\nimport StaticMap from './StaticMap'\nimport AskForUpdate from '../genericComponents/AskForUpdate'\nimport './StaticMap.less'\n\nexport default function Map(props) {\n return (\n <>\n {props.staticMap}\n \n \n \n )\n}\n","import React, { useCallback, useContext, useEffect } from 'react'\n\nexport const MapContext = React.createContext(undefined)\n\nexport const useMapContext = () => useContext(MapContext)\n\nexport const useEffectWithMapContext = (fn, deps = []) => {\n const { map } = useMapContext()\n\n useEffect(() => (map ? fn(map) : undefined), [map, ...deps])\n}\n\nexport const useCallbackWithMapContext = (fn, deps = []) => {\n const { map } = useMapContext()\n return useCallback(\n (...args) => {\n if (!map) return\n return fn(map, ...args)\n },\n [map, ...deps]\n )\n}\n","import React from 'react'\n\nconst ImageMarker = ({ src, height, width }) => {\n if (!src || !height || !width) return <>\n\n const imgStyle = {\n backgroundSize: 'cover',\n width: width + 'px',\n height: height + 'px'\n }\n\n return \n}\n\nexport default ImageMarker\n","import React from 'react'\nimport s from './IconMarker.less'\nimport SVGIcon from '../../svg/SVGIcon'\n\nexport default function IconMarker({ icon, color, size, insideSvgSize }) {\n return (\n \n
    \n \n
    \n \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"iconMarker\":\"DlHr8\"};","import React from 'react'\n\nexport default function RubricMarker({ className, color }) {\n return (\n \n \n`\n }}\n />\n )\n}\n","import React, { useEffect, useRef } from 'react'\nimport { useMapContext } from '../MapContext'\nimport ImageMarker from './ImageMarker'\nimport IconMarker from './IconMarker'\nimport { hasTouchSupport } from '../../Device'\nimport s from './Marker.less'\nimport RubricMarker from './RubricMarker'\nimport classNames from 'classnames'\n\nimport { Marker as MapLibreMarker } from 'maplibre-gl'\nimport { HTML_MARKER, IMAGE_MARKER } from './MarkerConstants'\nimport useErrorBoundaryCallback from '../../utils/useErrorBoundaryCallback'\n\nconst HTMLMarker = ({ html }) => html\n\n// webpack:BrowserOnly\nconst Marker = props => {\n const {\n isCurrent,\n type,\n color,\n coordinates: { lng, lat },\n anchorPosition = 'bottom',\n insideSvgSize,\n icon,\n src,\n size,\n height,\n width,\n dragOptions,\n html,\n children\n } = props\n const { map } = useMapContext()\n const markerElementRef = useRef()\n const mapLibreMarkerRef = useRef()\n const isDraggable = dragOptions && dragOptions.onDragEnd\n\n const onClick = e => {\n e.preventDefault()\n e.stopPropagation()\n props.onClick?.(e)\n }\n\n const onSelect = e => {\n e.preventDefault()\n e.stopPropagation()\n props.onSelect?.(e)\n }\n\n const onUnselect = e => {\n e.preventDefault()\n e.stopPropagation()\n props.onUnselect?.(e)\n }\n\n const handleEvents = useErrorBoundaryCallback(\n method => {\n if (mapLibreMarkerRef?.current?.getElement) {\n const mapMarker = mapLibreMarkerRef.current.getElement()\n if (hasTouchSupport()) {\n mapMarker[method]('click', onClick)\n } else {\n mapMarker[method]('mouseenter', onSelect)\n mapMarker[method]('mouseleave', onUnselect)\n if (props.onClick) mapMarker[method]('click', onClick)\n }\n }\n },\n [onClick, onSelect, onUnselect]\n )\n\n const attachEvents = useErrorBoundaryCallback(() => {\n handleEvents('addEventListener')\n if (isDraggable && mapLibreMarkerRef.current) {\n mapLibreMarkerRef.current.on('dragend', dragOptions.onDragEnd)\n }\n }, [handleEvents])\n\n const unattachEvents = useErrorBoundaryCallback(() => {\n handleEvents('removeEventListener')\n if (isDraggable && mapLibreMarkerRef.current) {\n mapLibreMarkerRef.current.off('dragend', dragOptions.onDragEnd)\n }\n }, [handleEvents])\n\n const buildMarker = () => {\n const {\n current: { firstChild }\n } = markerElementRef\n if (!map || !lng || !lat) return\n\n mapLibreMarkerRef.current = new MapLibreMarker({\n element: firstChild,\n anchor: anchorPosition,\n draggable: Boolean(dragOptions)\n })\n .setLngLat([lng, lat])\n .addTo(map)\n }\n\n useEffect(() => {\n if (!mapLibreMarkerRef.current) {\n buildMarker()\n }\n\n return () => {\n if (mapLibreMarkerRef.current) {\n mapLibreMarkerRef.current.remove()\n mapLibreMarkerRef.current = null\n }\n }\n }, [])\n\n useEffect(() => {\n attachEvents()\n return () => {\n unattachEvents()\n }\n }, [attachEvents, unattachEvents])\n\n const renderMarkerType = () => {\n switch (type) {\n case IMAGE_MARKER:\n return \n case HTML_MARKER:\n return \n default:\n return \n }\n }\n\n return (\n
    \n
    \n {isCurrent && type !== IMAGE_MARKER && (\n
    \n \n
    \n )}\n \n {children}\n {renderMarkerType()}\n
    \n
    \n \n )\n}\n\nexport default Marker\n","// extracted by mini-css-extract-plugin\nexport default {\"marker\":\"jtp3D\",\"activeMarker\":\"ciwvM\",\"pinWrapper\":\"ebbmK\",\"activeMarkerWrapper\":\"ulr57\",\"activeMarkerWrapperImage\":\"PkaFp\"};","import React from 'react'\nimport { buildForceColorFullString } from '../utils/css'\n\nexport const itemClassName = 'categorySubItem'\nexport const iconClassName = 'categorySubItemIcon'\n\nconst CategorySubMenuStyle = ({ color }) => {\n const catColorString = buildForceColorFullString(color)\n const whiteColorString = buildForceColorFullString('white')\n\n return (\n \n )\n}\n\nexport default CategorySubMenuStyle\n","import React from 'react'\nimport { navigateToSearchByApp, navigateToPoisOnRouteByApp } from '../../store/history/history.actions'\nimport { TAG_CLICK_CATEGORY_BAR } from '../analytics/analytics.tagids.constants'\nimport { APP_OR_SUBCAT_ID, CAT_ID } from '../analytics/ClickTagsService'\nimport useConfigureAndSendTag from '../analytics/useConfigureAndSendTag'\nimport { useAction } from '../utils/react-redux'\nimport s from './MenuSubCategoryItem.less'\nimport { itemClassName } from './CategorySubMenuStyle'\nimport classnames from 'classnames'\nimport { selectIsPageElligibleForPoisOnRoute } from '../../store/history/history.selectors'\nimport { useSelector } from 'react-redux'\n\nconst MenuApplicationItem = ({ id, logo, name, categoryId, onClick }) => {\n const execNavigateToSmrByApp = useAction(navigateToPoisOnRouteByApp)\n const configureAndSendTag = useConfigureAndSendTag()\n const execNavigateToSearchByApp = useAction(navigateToSearchByApp)\n\n const isPageElligibleForPoisOnRoute = useSelector(selectIsPageElligibleForPoisOnRoute)\n\n const onApplicationClick = (categoryId, appId) => e => {\n configureAndSendTag({\n type: TAG_CLICK_CATEGORY_BAR,\n tagInfo: {\n [CAT_ID]: categoryId,\n [APP_OR_SUBCAT_ID]: appId\n }\n })\n\n if (isPageElligibleForPoisOnRoute) {\n execNavigateToSmrByApp(id)\n } else {\n execNavigateToSearchByApp(appId)\n }\n onClick()\n }\n\n return (\n
  • \n \n \n \n {name}\n
  • \n )\n}\n\nexport default MenuApplicationItem\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"foxyP\",\"header\":\"IEtW9\",\"title\":\"DKLdx\",\"close\":\"jzokH\",\"itemsWrapper\":\"OFFcm\",\"items\":\"PkQ7E\"};","import React from 'react'\nimport { selectCategoriesItemById, selectSubCategoriesMenu } from '../../store/poiassets/poiassets.selectors'\nimport cross from '../genericComponents/assets/cross.svg'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useSelectorWithProps } from '../utils/react-redux'\nimport CategorySubMenuStyle from './CategorySubMenuStyle'\nimport MenuApplicationItem from './MenuApplicationItem'\nimport s from './MenuSubCategoriesPE.less'\nimport MenuSubCategoryItem from './MenuSubCategoryItem'\nimport usePublisherBarreCategorieTag from './usePublisherBarreCategorieTag'\n\nconst MenuSubCategoriesPE = ({ categoryId, onMouseLeaveMenu }) => {\n const { subcategories, apps, color } = useSelectorWithProps(selectSubCategoriesMenu, { id: categoryId })\n const { label } = useSelectorWithProps(selectCategoriesItemById, { id: categoryId })\n\n usePublisherBarreCategorieTag(categoryId)\n\n if (!categoryId) return <>\n\n return (\n
    \n
    \n
    \n \n
    \n

    {label}

    \n
    \n
    \n
      \n {subcategories.map(({ id, iconId, label, rubricIds }) => (\n \n ))}\n
    \n
      \n {apps.map(({ id, mob_roundImage, name }) => (\n \n ))}\n
    \n \n
    \n
    \n )\n}\n\nexport default MenuSubCategoriesPE\n","import React, { useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsFrenchSite } from '../../store/navigation/navigation.selectors'\nimport { loadPoiAssetsConfiguration } from '../../store/poiassets/poiassets.actions'\nimport { selectCategoriesMenu } from '../../store/poiassets/poiassets.selectors'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { isPE } from '../Device'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport useUIDisplay from '../ui/useUIDisplay'\nimport { useAction } from '../utils/react-redux'\nimport s from './MenuCategoriesPE.less'\nimport MenuCategoryItem from './MenuCategoryItem'\nimport MenuSubCategoriesPE from './MenuSubCategoriesPE'\n\nconst MenuCategoriesPE = () => {\n const [categoryId, setCategoryId] = useState()\n const execLoadPoiAssetsConfiguration = useAction(loadPoiAssetsConfiguration)\n useEffect(() => {\n execLoadPoiAssetsConfiguration()\n }, [execLoadPoiAssetsConfiguration])\n const categories = useSelector(selectCategoriesMenu)\n const { showUI, hideUI } = useUIDisplay(UI_ELEMENTS.MENU_PE)\n\n const onTap = id => e => {\n const shouldHide = categoryId === id\n setCategoryId(shouldHide ? null : id)\n shouldHide ? hideUI() : showUI()\n }\n\n if (!categories || !categories.length) return <>\n\n return (\n
    \n
      \n {categories.map(({ id, shortLabel, iconId, color }) => (\n \n ))}\n
    \n {categoryId && }\n
    \n )\n}\n\nexport const isMenuCategoriesPEAvailable = getState => isPE() && selectIsFrenchSite(getState())\n\nexport default withEmptyFallbackErrorBoundary(MenuCategoriesPE)\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"V0HtR\",\"categories\":\"igsQL\"};","import React from 'react'\nimport { getSvgIconUrl } from '../../parameters'\nimport { buildStyleAttributes, hexToCssFilter, hexToRgb } from '../utils/css'\nimport s from './MenuCategoryItem.less'\n\nconst MenuCategoryItem = ({ id, shortLabel, iconId, color, selected, active, onMouseOver, onCategoryClick }) => {\n const labelStyle = {}\n const iconStyle = {}\n\n if (selected) {\n iconStyle.borderColor = color\n iconStyle.backgroundColor = color\n labelStyle.color = color\n } else if (active) {\n iconStyle.borderColor = hexToRgb(color, 0.5)\n iconStyle.fill = color\n }\n const filter = selected ? 'invert(1)' : hexToCssFilter(color)\n\n return (\n
  • \n
    \n \n \n \n \n {shortLabel}\n \n
    \n
  • \n )\n}\n\nexport default MenuCategoryItem\n","// extracted by mini-css-extract-plugin\nexport default {\"category\":\"yS3Nd\",\"categoryItem\":\"pR5H5\",\"categoryLabel\":\"XeZhr\",\"categoryIcon\":\"Dc0cl\"};","import React from 'react'\nimport useConfigureAndSendTag from '../analytics/useConfigureAndSendTag'\nimport s from './MenuSubCategoryItem.less'\nimport SVGIcon from '../svg/SVGIcon'\nimport { navigateToSearchBySubcategory, navigateToPoisOnRouteBySubcategory } from '../../store/history/history.actions'\nimport { TAG_CLICK_CATEGORY_BAR } from '../analytics/analytics.tagids.constants'\nimport { APP_OR_SUBCAT_ID, CAT_ID } from '../analytics/ClickTagsService'\nimport { useAction } from '../utils/react-redux'\nimport classnames from 'classnames'\nimport { iconClassName, itemClassName } from './CategorySubMenuStyle'\nimport { useSelector } from 'react-redux'\nimport { selectIsPageElligibleForPoisOnRoute } from '../../store/history/history.selectors'\n\nconst MenuSubCategoryItem = ({ id, categoryId, iconId, label, onClick }) => {\n const execNavigateToSmrBySubCategory = useAction(navigateToPoisOnRouteBySubcategory)\n const configureAndSendTag = useConfigureAndSendTag()\n const execNavigateToSearchBySubcategory = useAction(navigateToSearchBySubcategory)\n\n const isPageElligibleForPoisOnRoute = useSelector(selectIsPageElligibleForPoisOnRoute)\n\n const onSubCategoryClick = () => e => {\n configureAndSendTag({\n type: TAG_CLICK_CATEGORY_BAR,\n tagInfo: {\n [CAT_ID]: categoryId,\n [APP_OR_SUBCAT_ID]: id\n }\n })\n\n if (isPageElligibleForPoisOnRoute) {\n execNavigateToSmrBySubCategory(id)\n } else {\n execNavigateToSearchBySubcategory(id)\n }\n onClick()\n }\n\n return (\n
  • \n \n \n \n {label}\n
  • \n )\n}\n\nexport default MenuSubCategoryItem\n","import { useEffect } from 'react'\nimport { TAG_MULTIPATH_CTA } from '../analytics/analytics.tagids.constants'\nimport { PUB_TAG } from '../analytics/PublisherTagsService'\nimport useConfigureAndSendTag from '../analytics/useConfigureAndSendTag'\nimport useTimeout from '../utils/useTimeout'\n\nexport default function usePublisherBarreCategorieTag(categoryId) {\n const configureAndSendTag = useConfigureAndSendTag()\n const [setPublisherTagTimeout, clearPublisherTagTimeout] = useTimeout(1000)\n\n useEffect(() => {\n setPublisherTagTimeout(() =>\n configureAndSendTag({\n type: TAG_MULTIPATH_CTA,\n tagInfo: { tag: PUB_TAG.PUB_AFFICHAGE_BARRECATEGORIE, catId: categoryId },\n isImpression: true\n })\n )\n return clearPublisherTagTimeout\n }, [categoryId])\n}\n","import {\n ROUTE_ADDRESS_HOME,\n ROUTE_BICYCLE_CITY,\n ROUTE_BICYCLE_DEPARTMENT,\n ROUTE_BICYCLE_HOME,\n ROUTE_BICYCLE_REGION,\n ROUTE_DEPARTMENT_HOME,\n ROUTE_HOME,\n ROUTE_ITINERARY_COMPUTING,\n ROUTE_ITINERARY_COMPUTING_BY_MODE,\n ROUTE_ITINERARY_EXPENSE_REPORT,\n ROUTE_ITINERARY_HOME,\n ROUTE_ITINERARY_HP_BY_MODE,\n ROUTE_ITINERARY_RESULTS_BY_PROVIDER,\n ROUTE_ITINERARY_RESULTS_BY_ROUTE,\n ROUTE_ITINERARY_ROADBOOK,\n ROUTE_ITINERARY_TO,\n ROUTE_REGION_HOME,\n ROUTE_RESTRICTION_CITY,\n ROUTE_RESTRICTION_DEPARTMENT,\n ROUTE_RESTRICTION_HOME,\n ROUTE_RESTRICTION_REGION,\n ROUTE_SEO_ADDRESS,\n ROUTE_SEO_CITY_ACTIVITY,\n ROUTE_SEO_CITY_APP,\n ROUTE_SEO_COUNTRY,\n ROUTE_SEO_DEPARTMENT,\n ROUTE_SEO_DIRECTORY_CITY,\n ROUTE_SEO_DIRECTORY_CITY_ACTIVITY,\n ROUTE_SEO_DIRECTORY_CITY_OVM_POIS,\n ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY,\n ROUTE_SEO_DIRECTORY_CITY_POIS,\n ROUTE_SEO_DIRECTORY_ITINERARY,\n ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE,\n ROUTE_SEO_GEOENTITY,\n ROUTE_SEO_ITINERARY,\n ROUTE_SEO_ITINERARY_MODE,\n ROUTE_SEO_SEARCH_BY_APP,\n ROUTE_SEO_SEARCH_BY_RUBRIC,\n ROUTE_TOOLS_COMPUTE_RADIUS,\n ROUTE_TRAFFIC_CITY,\n ROUTE_TRAFFIC_DEPARTMENT,\n ROUTE_TRAFFIC_HOME,\n ROUTE_TRAFFIC_REGION,\n ROUTE_ZFE_CITY,\n ROUTE_ZFE_DEPARTMENT,\n ROUTE_ZFE_HOME,\n ROUTE_ZFE_REGION\n} from '../../../routes'\nimport { selectFirstAddress } from '../../../store/address/address.selectors'\nimport { selectSelectedGeoentity } from '../../../store/geoentity/geoentity.selectors'\nimport { selectCurrentHistoryRoute } from '../../../store/history/history.selectors'\nimport { projectDistrictZipcodeToWholeCityZipcode } from '../../utils/location'\nimport { createCustomSelector } from '../../utils/react-reselect'\n\nexport const selectShouldDisplayTopSearchTitle = createCustomSelector(\n selectCurrentHistoryRoute,\n route => route !== ROUTE_SEO_ITINERARY && route !== ROUTE_SEO_ITINERARY_MODE\n)\n\nexport const selectSeoItineraryLinkLabelPrefix = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_HOME:\n case ROUTE_SEO_GEOENTITY:\n return ''\n case ROUTE_SEO_CITY_ACTIVITY:\n return 'Trajet'\n case ROUTE_ADDRESS_HOME:\n case ROUTE_SEO_ADDRESS:\n case ROUTE_TRAFFIC_CITY:\n case ROUTE_BICYCLE_CITY:\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS:\n case ROUTE_ZFE_CITY:\n case ROUTE_RESTRICTION_CITY:\n return 'Distance'\n case ROUTE_ITINERARY_HP_BY_MODE:\n case ROUTE_SEO_ITINERARY_MODE:\n return 'Itinéraire {mode}'\n case ROUTE_TRAFFIC_HOME:\n return 'Itinéraire voiture'\n case ROUTE_BICYCLE_HOME:\n return 'Itinéraire à vélo'\n case ROUTE_ITINERARY_HOME:\n case ROUTE_SEO_ITINERARY:\n default:\n return 'Itinéraire'\n }\n})\n\nexport const selectSeoCityLinkLabelPrefixKey = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_BICYCLE_HOME:\n case ROUTE_ZFE_HOME:\n case ROUTE_RESTRICTION_HOME:\n case ROUTE_SEO_COUNTRY:\n case ROUTE_SEO_DEPARTMENT:\n return 'footer.cityLink.label.map'\n default:\n return 'footer.cityLink.label.default'\n }\n})\n\nexport const selectSeoInfoTrafficOptions = createCustomSelector(\n selectCurrentHistoryRoute,\n selectFirstAddress,\n selectSelectedGeoentity,\n (route, firstAddress, selectedGeoentity) => {\n switch (route) {\n case ROUTE_ADDRESS_HOME:\n return { max: 10, hpLinkLabel: 'Info trafic en temps réel' }\n\n case ROUTE_SEO_ADDRESS:\n case ROUTE_SEO_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY:\n return { zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode) }\n\n case ROUTE_SEO_GEOENTITY:\n return { zip: projectDistrictZipcodeToWholeCityZipcode(selectedGeoentity?.postcode) }\n\n case ROUTE_TRAFFIC_HOME:\n return { min: 20, max: 200 }\n\n case ROUTE_TRAFFIC_CITY:\n return { max: 20 }\n\n case ROUTE_HOME:\n case ROUTE_BICYCLE_CITY:\n case ROUTE_ZFE_CITY:\n default:\n return { max: 10 }\n }\n }\n)\n\nexport const selectSeoBicycleOptions = createCustomSelector(\n selectCurrentHistoryRoute,\n selectFirstAddress,\n selectSelectedGeoentity,\n (route, firstAddress, selectedGeoentity) => {\n switch (route) {\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY:\n case ROUTE_SEO_ADDRESS:\n return {\n linksLabel: 'Carte Pistes cyclables',\n zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode)\n }\n\n case ROUTE_SEO_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_POIS:\n return {\n hpLinkLabel: 'Pistes Cyclables',\n zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode)\n }\n\n case ROUTE_SEO_GEOENTITY:\n return {\n hpLinkLabel: 'Pistes Cyclables',\n zip: projectDistrictZipcodeToWholeCityZipcode(selectedGeoentity?.postcode)\n }\n\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n return {\n hpLinkLabel: 'Pistes Cyclables'\n }\n\n case ROUTE_BICYCLE_HOME:\n return { min: 20, max: 200 }\n\n case ROUTE_BICYCLE_CITY:\n return { max: 20 }\n\n case ROUTE_HOME:\n case ROUTE_ADDRESS_HOME:\n case ROUTE_TRAFFIC_CITY:\n case ROUTE_ZFE_CITY:\n default:\n return { max: 10 }\n }\n }\n)\n\nexport const selectSeoZfeOptions = createCustomSelector(\n selectCurrentHistoryRoute,\n selectFirstAddress,\n selectSelectedGeoentity,\n (route, firstAddress, selectedGeoentity) => {\n switch (route) {\n case ROUTE_HOME:\n return {\n hpLinkLabel: \"Zone des restrictions Crit'Air\",\n max: 10,\n title: 'Zones à Faibles émissions (ZFE) en France'\n }\n case ROUTE_ADDRESS_HOME:\n return {\n hpLinkLabel: \"Restrictions Crit'Air\",\n linksLabel: \"Crit'Air\",\n max: 10\n }\n case ROUTE_SEO_GEOENTITY:\n return {\n hpLinkLabel: \"Zones Crit'Air\",\n zip: projectDistrictZipcodeToWholeCityZipcode(selectedGeoentity?.postcode)\n }\n case ROUTE_SEO_ADDRESS:\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY:\n return {\n hpLinkLabel: \"Zones Crit'Air\",\n zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode),\n linksLabel: \"Crit'Air\"\n }\n case ROUTE_SEO_CITY_ACTIVITY:\n return {\n hpLinkLabel: 'Carte des ZFE',\n zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode),\n linksLabel: \"Restrictions Crit'Air\"\n }\n case ROUTE_ZFE_HOME:\n return { hpLinkLabel: 'Carte des ZFE en France', min: 20, max: 200 }\n case ROUTE_TRAFFIC_CITY:\n case ROUTE_RESTRICTION_CITY:\n return { hpLinkLabel: 'Plan des ZFE', max: 10 }\n case ROUTE_BICYCLE_CITY:\n return { hpLinkLabel: 'Zone des restrictions Crit’Air', max: 10 }\n case ROUTE_ZFE_CITY:\n return {\n hpLinkLabel: 'Zone des restrictions Crit’Air',\n max: 20,\n title: 'Zones à Faibles émissions (ZFE) en France'\n }\n default:\n return { max: 10 }\n }\n }\n)\n\nexport const selectSeoRestrictionOptions = createCustomSelector(\n selectCurrentHistoryRoute,\n selectFirstAddress,\n selectSelectedGeoentity,\n (route, firstAddress, selectedGeoentity) => {\n switch (route) {\n case ROUTE_RESTRICTION_HOME:\n return {\n hpLinkLabel: 'Carte des restrictions de circulation en France',\n min: 20,\n max: 200,\n linksLabel: 'Restrictions de circulation'\n }\n default:\n return {\n hpLinkLabel: 'Restrictions de circulation'\n }\n }\n }\n)\n\nexport const selectSeoHpLayersTitle = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_DEPARTMENT_HOME:\n case ROUTE_REGION_HOME:\n case ROUTE_SEO_DIRECTORY_CITY:\n case ROUTE_SEO_DIRECTORY_ITINERARY:\n case ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE:\n case ROUTE_SEO_SEARCH_BY_APP:\n case ROUTE_TOOLS_COMPUTE_RADIUS:\n case ROUTE_SEO_CITY_APP:\n return 'Options de Carte'\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n case ROUTE_RESTRICTION_DEPARTMENT:\n case ROUTE_RESTRICTION_REGION:\n return 'Autres affichages de cartes'\n default:\n return 'Affichage des cartes'\n }\n})\n\nexport const selectSeoHpLayersTraffic = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n return { visible: false }\n case ROUTE_BICYCLE_HOME:\n case ROUTE_ZFE_HOME:\n case ROUTE_RESTRICTION_HOME:\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n return { visible: true, min: 0, max: 0, hpLinkLabel: 'Info trafic en temps réel' }\n case ROUTE_DEPARTMENT_HOME:\n case ROUTE_REGION_HOME:\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n case ROUTE_ZFE_DEPARTMENT:\n case ROUTE_ZFE_REGION:\n return { visible: true, hpLinkLabel: \"Carte de l'Info-trafic\" }\n default:\n return { visible: true, min: 0, max: 0 }\n }\n})\n\nexport const selectSeoHpLayersBicycle = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_BICYCLE_HOME:\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n return { visible: false }\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_RESTRICTION_HOME:\n case ROUTE_ZFE_HOME:\n return { visible: true }\n case ROUTE_DEPARTMENT_HOME:\n case ROUTE_REGION_HOME:\n return { visible: true, hpLinkLabel: 'Plan des Pistes Cyclables' }\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n case ROUTE_ZFE_DEPARTMENT:\n case ROUTE_ZFE_REGION:\n case ROUTE_RESTRICTION_DEPARTMENT:\n case ROUTE_RESTRICTION_REGION:\n return { visible: true, hpLinkLabel: 'Carte des pistes cyclables' }\n default:\n return { visible: true, hpLinkLabel: 'Pistes Cyclables' }\n }\n})\n\nexport const selectSeoHpLayersZfe = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_ITINERARY_HOME:\n case ROUTE_ITINERARY_HP_BY_MODE:\n case ROUTE_ITINERARY_TO:\n case ROUTE_ITINERARY_COMPUTING:\n case ROUTE_ITINERARY_COMPUTING_BY_MODE:\n case ROUTE_ITINERARY_RESULTS_BY_PROVIDER:\n case ROUTE_ITINERARY_RESULTS_BY_ROUTE:\n case ROUTE_ITINERARY_EXPENSE_REPORT:\n case ROUTE_ITINERARY_ROADBOOK:\n case ROUTE_SEO_ITINERARY:\n case ROUTE_SEO_ITINERARY_MODE:\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n return { visible: true, hpLinkLabel: \"Restrictions Crit'Air\" }\n case ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE:\n case ROUTE_SEO_DIRECTORY_ITINERARY:\n return { visible: true, hpLinkLabel: 'Carte ZFE' }\n case ROUTE_BICYCLE_HOME:\n case ROUTE_RESTRICTION_HOME:\n return { visible: true, hpLinkLabel: 'Carte des ZFE en France' }\n case ROUTE_SEO_DIRECTORY_CITY:\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_SEO_SEARCH_BY_APP:\n case ROUTE_TOOLS_COMPUTE_RADIUS:\n case ROUTE_SEO_CITY_APP:\n return { visible: true, hpLinkLabel: 'Carte des ZFE' }\n case ROUTE_REGION_HOME:\n case ROUTE_DEPARTMENT_HOME:\n return { visible: true, hpLinkLabel: 'Plan des ZFE en France' }\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n case ROUTE_RESTRICTION_DEPARTMENT:\n case ROUTE_RESTRICTION_REGION:\n return { visible: true, hpLinkLabel: 'Plan des ZFE' }\n default:\n return { visible: false }\n }\n})\n\nexport const selectSeoHpLayersRestriction = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n case ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE:\n case ROUTE_SEO_DIRECTORY_ITINERARY:\n case ROUTE_SEO_DIRECTORY_CITY:\n case ROUTE_TOOLS_COMPUTE_RADIUS:\n return { visible: true, hpLinkLabel: 'Restrictions de circulation en temps réel' }\n case ROUTE_BICYCLE_HOME:\n case ROUTE_ITINERARY_HP_BY_MODE:\n case ROUTE_ITINERARY_HOME:\n case ROUTE_SEO_ITINERARY_MODE:\n case ROUTE_SEO_ITINERARY:\n case ROUTE_SEO_CITY_APP:\n return { visible: true, hpLinkLabel: 'Restrictions de circulation' }\n case ROUTE_ZFE_HOME:\n case ROUTE_ZFE_REGION:\n case ROUTE_ZFE_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_DEPARTMENT_HOME:\n case ROUTE_REGION_HOME:\n case ROUTE_SEO_SEARCH_BY_APP:\n return { visible: true, hpLinkLabel: 'Carte des restrictions de circulation' }\n default:\n return { visible: false }\n }\n})\n\nexport const selectSeoPoiDirectoryLabelPrefix = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n return 'Tous les commerces et services de'\n default:\n return 'Commercants de'\n }\n})\n\nexport const selectSeoPoiOvmDirectoryLabelPrefix = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_SEO_DIRECTORY_CITY_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n return 'Tous les Lieux et commerçants populaires à'\n default:\n return 'Plus de lieux populaires à'\n }\n})\n\nexport const selectSeoActivitiesTitle = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_SEO_SEARCH_BY_APP:\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n return 'Les villes les plus recherchées pour la catégorie Hôtel'\n default:\n return 'Activités à découvrir en France'\n }\n})\n","export const KEYS = {\n DOWN: 'ArrowDown',\n UP: 'ArrowUp',\n ENTER: 'Enter',\n TAB: 'Tab',\n SHIFT: 'Shift'\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestContent\":\"EZNio\",\"SuggestTitle\":\"QoZV9\"};","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsUserAccountEnabled, selectIsUserConnected } from '../../store/userAccount/userAccount.selectors'\nimport SuggestContentList from './SuggestContentList'\nimport T from '../i18n/T'\nimport { selectIsSuggestInputValueEmpty } from '../../store/suggest/suggest.selectors'\nimport s from './SuggestContent.less'\nimport { isEmpty } from '../../utils/lang'\n\nconst SuggestFavoritesContent = ({ suggestionsFavorites, idxStartAt, selectedId, updateSelectedId, onClick }) => {\n const isInputValueEmpty = useSelector(selectIsSuggestInputValueEmpty)\n const isConnected = useSelector(selectIsUserConnected)\n const isUserAccountAvailable = useSelector(selectIsUserAccountEnabled)\n const hasFavoriteSuggests = !isConnected ? isUserAccountAvailable : !isEmpty(suggestionsFavorites)\n\n if (!isUserAccountAvailable) return <>\n\n return (\n <>\n {hasFavoriteSuggests && isInputValueEmpty && (\n
    \n \n \n \n
    \n )}\n\n \n \n )\n}\n\nexport default SuggestFavoritesContent\n","import React from 'react'\nimport T from '../i18n/T'\nimport { selectIsSuggestInputValueEmpty } from '../../store/suggest/suggest.selectors'\nimport { useSelector } from 'react-redux'\nimport SuggestContentList from './SuggestContentList'\nimport s from './SuggestContent.less'\nimport { isEmpty } from '../../utils/lang'\n\nconst SuggestSearchHistoryContent = ({\n suggestionsSearchHistory,\n idxStartAt,\n selectedId,\n updateSelectedId,\n onClick\n}) => {\n const isInputValueEmpty = useSelector(selectIsSuggestInputValueEmpty)\n const hasSearchHistorySuggests = !isEmpty(suggestionsSearchHistory)\n\n return (\n <>\n {hasSearchHistorySuggests && isInputValueEmpty && (\n
    \n \n \n \n
    \n )}\n\n \n \n )\n}\nexport default SuggestSearchHistoryContent\n","import React from 'react'\nimport SuggestContentList from './SuggestContentList'\nimport { isEmpty } from '../../utils/lang'\n\nconst SuggestServiceContent = ({ suggestionsService, idxStartAt, selectedId, updateSelectedId, onClick }) => {\n if (isEmpty(suggestionsService)) return <>\n return (\n \n )\n}\nexport default SuggestServiceContent\n","import React from 'react'\nimport T from '../i18n/T'\nimport { resetSearchHistory } from '../../store/search/searchSlice'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './SuggestClearHistory.less'\nimport { isEmpty } from '../../utils/lang'\nimport { useDispatch } from 'react-redux'\n\nconst SuggestClearHistory = ({ suggestionsSearchHistory }) => {\n const dispatch = useDispatch()\n const hasSearchHistorySuggests = !isEmpty(suggestionsSearchHistory)\n\n const onSuggestCleanHistory = useEventCallback(() => {\n dispatch(resetSearchHistory())\n }, [])\n\n if (!hasSearchHistorySuggests) return <>\n return (\n
    \n \n \n \n
    \n )\n}\n\nexport default SuggestClearHistory\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestCleanHistory\":\"cuyUO\"};","import React from 'react'\n\nimport { useSelector } from 'react-redux'\nimport { selectIsSuggestInputValueEmpty } from '../../store/suggest/suggest.selectors'\nimport T from '../i18n/T'\nimport s from './SuggestContentError.less'\n\nconst SuggestContentError = ({ hasSuggests, error }) => {\n const isInputValueEmpty = useSelector(selectIsSuggestInputValueEmpty)\n if (hasSuggests || isInputValueEmpty) return <>\n\n return (\n
    \n \n
    \n )\n}\n\nexport default SuggestContentError\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestError\":\"qmbIb\"};","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectAllSuggestions } from '../../store/suggest/suggest.selectors'\nimport { KEYS } from '../../utils/keyboard.constants'\nimport { selectIsUserConnected, selectIsUserAccountEnabled } from '../../store/userAccount/userAccount.selectors'\nimport SuggestFavoritesContent from './SuggestFavoritesContent'\nimport SuggestSearchHistoryContent from './SuggestSearchHistoryContent'\nimport SuggestServiceContent from './SuggestServiceContent'\nimport SuggestClearHistory from './SuggestClearHistory'\nimport useIncentiveClick from './useIncentiveClick'\nimport SuggestContentError from './SuggestContentError'\nimport s from './SuggestContent.less'\nimport { TAG_SUGGEST } from '../analytics/analytics.tagids.constants'\nimport { isEmpty } from '../../utils/lang'\n\nconst DEBOUNCE_DURATION = 150\n\nconst SuggestContent = ({ onClick, positionComponent, withoutFavorites = false }) => {\n const { suggestions, error } = useSelector(selectAllSuggestions(withoutFavorites))\n const isUserAccountAvailable = useSelector(selectIsUserAccountEnabled)\n const isConnected = useSelector(selectIsUserConnected)\n const [selectedId, setSelectedId] = useState(null)\n const [timestamp, setTimestamp] = useState(null)\n const hasFavoriteSuggests = !isConnected ? isUserAccountAvailable : !isEmpty(suggestions.favorites)\n const hasSearchHistorySuggests = !isEmpty(suggestions.searchHistory)\n const hasServiceSuggests = !isEmpty(suggestions.service)\n const hasSuggests = hasFavoriteSuggests || hasSearchHistorySuggests || hasServiceSuggests\n const stateRef = useRef({\n suggestsRef: suggestions,\n errorRef: error,\n selectedIdRef: selectedId,\n timestampRef: timestamp\n })\n\n const incentiveTagClickBuilder = useCallback(() => {\n if (isConnected) return <>\n return { type: TAG_SUGGEST }\n }, [isConnected])\n\n const { onIncentiveClick } = useIncentiveClick({ onClick, incentiveTagClickBuilder })\n\n useEffect(() => {\n if (__SERVER__) return\n document.addEventListener('keydown', handleKeyboardEvent, false)\n\n return () => {\n document.removeEventListener('keydown', handleKeyboardEvent, false)\n }\n }, [])\n\n useEffect(() => {\n stateRef.current = {\n ...stateRef.current,\n suggestsRef: suggestions,\n errorRef: error\n }\n }, [suggestions, error])\n\n const updateSelectedId = idx => {\n const now = Date.now()\n setSelectedId(idx)\n setTimestamp(now)\n stateRef.current = {\n ...stateRef.current,\n selectedIdRef: idx,\n timestampRef: now\n }\n }\n\n const hasSpeedScrollLimitReached = (currentTimestamp, newTimestamp, key) => {\n return (\n currentTimestamp &&\n newTimestamp - currentTimestamp < DEBOUNCE_DURATION &&\n (key === KEYS.DOWN || key === KEYS.UP || key === KEYS.ENTER || key === KEYS.TAB)\n )\n }\n\n const handleKeyboardEvent = e => {\n const { suggestsRef, errorRef, selectedIdRef, timestampRef } = stateRef.current\n\n if (errorRef) {\n return\n }\n\n const currentSelectedId = selectedIdRef\n const currentTimestamp = timestampRef\n let newSelectedId\n let newTimestamp = Date.now()\n const suggestsSize = suggestsRef.favorites.length + suggestsRef.service.length + suggestsRef.searchHistory.length\n const isKeyDown = e.key === KEYS.DOWN || (!e.shiftKey && e.key === KEYS.TAB)\n const isKeyUp = e.key === KEYS.UP || (e.shiftKey && e.key === KEYS.TAB)\n const isKeyEnter = e.key === KEYS.ENTER\n\n // handle speed scrolling with arrow\n if (hasSpeedScrollLimitReached(currentTimestamp, newTimestamp, e.key)) {\n return e.preventDefault()\n }\n\n if (isKeyDown) {\n e.preventDefault()\n newSelectedId = currentSelectedId !== null ? (currentSelectedId + 1) % suggestsSize : 0\n } else if (isKeyUp) {\n e.preventDefault()\n newSelectedId =\n currentSelectedId !== null\n ? currentSelectedId - 1 >= 0\n ? currentSelectedId - 1\n : suggestsSize - 1\n : suggestsSize - 1\n } else if (isKeyEnter && currentSelectedId !== null) {\n e.preventDefault()\n e.stopPropagation()\n newSelectedId = null\n const allSuggests = [...suggestsRef.favorites, ...suggestsRef.searchHistory, ...suggestsRef.service]\n const suggest = allSuggests[currentSelectedId]\n return onIncentiveClick(suggest)\n } else if (e.shiftKey && e.key === KEYS.SHIFT) {\n // Condition pour éviter de perdre la position de l'item sélectionné, quand on appuie que sur shift\n e.preventDefault()\n newSelectedId = currentSelectedId\n newTimestamp = currentTimestamp\n } else {\n newTimestamp = null\n newSelectedId = null\n }\n\n setSelectedId(newSelectedId)\n setTimestamp(newTimestamp)\n stateRef.current = {\n ...stateRef.current,\n selectedIdRef: newSelectedId,\n timestampRef: newTimestamp\n }\n }\n\n return (\n
    \n {positionComponent}\n\n \n\n \n\n \n\n \n\n \n
    \n )\n}\n\nexport default SuggestContent\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestItem_link\":\"d9mYb\",\"SuggestItem_text\":\"ogaru\",\"oneLabel\":\"WUr7r\",\"SuggestItem_mainLabel\":\"AYOe7\",\"SuggestItem_eventLabel\":\"rtpGq\",\"SuggestItem_icon\":\"BHZZ9\",\"SuggestItem_secondaryLabel\":\"tnwHk\",\"brandLogo\":\"MtOrN\",\"icon\":\"htRus\",\"favori\":\"gxHMN\",\"maison\":\"XJita\",\"sacoche\":\"CpBCI\"};","import classNames from 'classnames'\nimport React from 'react'\n\nimport s from './SuggestItem.less'\n\nimport { suggestServiceCtx } from '../../store/suggest/suggest.service.constants'\nimport SVGIcon from '../svg/SVGIcon'\n\nimport { SUGGEST_CLICK } from '../analytics/analytics.tagids.constants'\nimport { POI_POSITION, POI_TYPE } from '../analytics/ClickTagsService'\nimport TagActionButton from '../genericComponents/TagActionButton'\n\nconst BrandItemContent = props => {\n const { suggest = {} } = props\n const { labels, brandIconUrl } = suggest\n const [firstLabel] = labels\n return (\n <>\n {brandIconUrl && (\n
    \n \n
    \n )}\n
    \n \n
    \n \n )\n}\n\nconst GenericContent = props => {\n const { suggest } = props\n const [firstLabel, ...otherLabels] = suggest.labels\n const icon = suggest?.subtype?.id\n const iconUrls = suggest?.iconUrls ?? false\n\n return (\n <>\n
    \n \n
    \n
    \n \n {iconUrls && (\n \n {iconUrls.map((iconUrl, idx) => {\n return \n })}\n \n )}\n {!iconUrls && (\n \n {otherLabels.map((label, id) => (\n \n ))}\n \n )}\n
    \n \n )\n}\n\nconst EventContent = props => {\n const { suggest } = props\n const icon = suggest?.subtype?.id\n const { address_components } = suggest\n const postcode = address_components?.postcodes?.[0]\n const town = address_components?.town?.label\n const address = postcode && town ? `${postcode}, ${town}` : undefined\n const otherName = address_components?.other_name\n\n return (\n <>\n
    \n \n
    \n
    \n \n {otherName && (\n {otherName}\n )}\n {address && (\n \n {address}\n \n )}\n
    \n \n )\n}\n\nconst SuggestItemContent = ({ type, suggest, isEventSuggest }) => {\n if (type === suggestServiceCtx.type.store_chain) {\n return \n } else if (isEventSuggest) {\n return \n } else {\n return \n }\n}\n\nconst SuggestItem = props => {\n const { suggest, idx } = props\n\n const type = suggest?.type\n\n const onClick = e => {\n e.preventDefault()\n e.stopPropagation()\n const { onClick, suggest } = props\n onClick && onClick(suggest)\n }\n\n const onMouseEnter = () => {\n const { idx, updateSelectedId } = props\n updateSelectedId(idx)\n }\n\n const onFocus = () => {\n const { idx, updateSelectedId } = props\n updateSelectedId(idx)\n }\n\n return (\n \n \n \n )\n}\n\nexport default SuggestItem\n","import React from 'react'\nimport SuggestItem from './SuggestItem'\nimport s from './SuggestContentList.less'\n\nconst SuggestContentList = ({\n suggestions = [],\n idxStartAt = 0,\n onClick,\n selectedId = -1,\n updateSelectedId = () => {}\n}) => (\n
    \n
      \n {suggestions.map((suggest, index) => {\n const idx = idxStartAt + index\n return (\n
    • \n \n
    • \n )\n })}\n
    \n
    \n)\n\nexport default SuggestContentList\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestList\":\"DJuod\",\"selected\":\"CKN0m\"};","import { useDispatch, useSelector } from 'react-redux'\nimport { ROUTE_USER_ACCOUNT } from '../../routes'\nimport { navigateTo } from '../../store/history/history.actions'\nimport { MODAL_IDS, USER_SCREENS } from '../../store/ui/ui.constants'\nimport { setUiUserScreen } from '../../store/ui/uiSlice'\nimport { selectIsUserConnected } from '../../store/userAccount/userAccount.selectors'\nimport useConfigureAndSendTag from '../analytics/useConfigureAndSendTag'\nimport useModal from '../ui/useModal'\nimport { useAction } from '../utils/react-redux'\n\nconst useIncentiveClick = ({ onClick, incentiveTagClickBuilder }) => {\n const dispatch = useDispatch()\n const isConnected = useSelector(selectIsUserConnected)\n const { displayModal } = useModal(MODAL_IDS.USER_ACCOUNT_INCENTIVE_POPIN)\n const configureAndSendTag = useConfigureAndSendTag()\n const execNavigateTo = useAction(navigateTo)\n const manageFavorite = type => dispatch(setUiUserScreen({ name: USER_SCREENS.manageFavorite, params: { type } }))\n\n const onIncentiveClick = suggest => {\n const { incentive, type } = suggest\n if (!incentive) {\n onClick(suggest)\n } else if (isConnected) {\n configureAndSendTag(incentiveTagClickBuilder(suggest))\n manageFavorite(type)\n execNavigateTo({ route: ROUTE_USER_ACCOUNT })\n } else {\n displayModal()\n configureAndSendTag(incentiveTagClickBuilder(suggest))\n }\n }\n\n return { onIncentiveClick }\n}\n\nexport default useIncentiveClick\n","import React from 'react'\nimport s from './ImageWithFallback.less'\nimport classnames from 'classnames'\n\nconst ImageWithFallback = ({ image, fallbackImage, height, width, alt, lazyLoading = true, className }) => (\n \n {image && (\n \n )}\n \n \n)\n\nexport default ImageWithFallback\n","// extracted by mini-css-extract-plugin\nexport default {\"linkc\":\"Eg5YX\",\"linkcu\":\"aqNhC\",\"roundInput\":\"mCSeu\",\"invertColor\":\"xrMkt\",\"button-style\":\"cHVhb\",\"round-button-style\":\"xzibo\",\"green-full-button-hover-style\":\"B7EuD\",\"green-empty-button-style\":\"fNn5N\",\"grey-empty-button-style\":\"PUbSY\",\"blue-full-button-style\":\"YfhTP\",\"blue-full-button-hover-style\":\"bOadP\",\"big-button-style\":\"qn3WV\",\"root\":\"PUg8n\",\"image\":\"IGwYG\"};","import { useSelector } from 'react-redux'\nimport { HEADER_DEFAULT_HEIGHT_PE, HEADER_SUBHEADER_HEIGHT } from '../header/header-constants'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { isUIElementDisplayed, selectHeaderHeight } from '../../store/ui/ui.selectors'\n\nconst useComputedHeaderHeight = (menuCategoriesPE, subHeaderComponent) => {\n const headerHeight = useSelector(selectHeaderHeight)\n const suggestDisplayed = useSelector(isUIElementDisplayed(UI_ELEMENTS.SUGGEST))\n const searchDialogDisplayed = useSelector(isUIElementDisplayed(UI_ELEMENTS.SEARCH_DIALOG))\n\n const subHeaderHeigth =\n !suggestDisplayed && !searchDialogDisplayed && subHeaderComponent ? HEADER_SUBHEADER_HEIGHT : 0\n\n const shouldDisplayMenuCategoriesPE = menuCategoriesPE && !suggestDisplayed && !searchDialogDisplayed\n\n const menuHeigth = shouldDisplayMenuCategoriesPE ? HEADER_DEFAULT_HEIGHT_PE : 0\n\n return headerHeight + subHeaderHeigth + menuHeigth\n}\n\nexport default useComputedHeaderHeight\n","import { useDispatch, useSelector } from 'react-redux'\nimport { getIsModalDisplayedSelector } from '../../store/ui/ui.selectors'\nimport { displayUiModal, hideUiModal } from '../../store/ui/uiSlice'\nimport useErrorBoundaryCallback from '../utils/useErrorBoundaryCallback'\n\nexport const useModal = modalId => {\n const dispatch = useDispatch()\n const isModalDisplayed = useSelector(getIsModalDisplayedSelector(modalId))\n const displayModal = useErrorBoundaryCallback(() => dispatch(displayUiModal({ modalId })), [modalId])\n const hideModal = useErrorBoundaryCallback(() => dispatch(hideUiModal({ modalId })), [modalId])\n return {\n isModalDisplayed,\n displayModal,\n hideModal\n }\n}\n\nexport default useModal\n","import React, { useEffect, useState } from 'react'\n\nconst DEFAULT_DELAY_BEFORE_LAUNCH = 0\nconst STATUS_WAITING = 'waiting'\nconst STATUS_READY = 'ready'\n\nconst DelayComponent = ({ children, delay = DEFAULT_DELAY_BEFORE_LAUNCH }) => {\n const [status, setStatus] = useState(STATUS_WAITING)\n\n useEffect(() => {\n const timeout = setTimeout(() => setStatus(STATUS_READY), delay)\n return () => {\n clearTimeout(timeout)\n }\n }, [])\n\n if (status !== STATUS_READY) return <>\n return children\n}\n\nexport default DelayComponent\n","import React, { useState } from 'react'\nimport useEventCallback from './useEventCallback'\nimport s from './SwitchInput.less'\nimport classNames from 'classnames'\nimport useEffectExceptMount from './useEffectExceptMount'\n\nconst SwitchInput = ({ onChange, defaultValue = false }) => {\n const [value, setValue] = useState(defaultValue)\n\n useEffectExceptMount(() => {\n onChange(value)\n }, [value])\n\n const onClick = useEventCallback(() => {\n setValue(!value)\n }, [value])\n\n return (\n
    \n
    \n
    \n )\n}\n\nexport default SwitchInput\n","import { useEffect, useRef } from 'react'\n\nconst useEffectExceptMount = (fn, deps) => {\n const initialMount = useRef(true)\n useEffect(() => {\n if (initialMount.current) {\n initialMount.current = false\n } else {\n return fn()\n }\n }, deps)\n}\n\nexport default useEffectExceptMount\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"I9KMH\",\"active\":\"CINep\",\"button\":\"RKMkG\"};","// from https://github.com/angel-rs/css-color-filter-generator?tab=MIT-1-ov-file - MIT License\n\nexport const extractRGB = hex => hex.match(/\\w\\w/g).map(x => parseInt(x, 16))\n\nconst componentToHex = c => {\n const hex = c.toString(16)\n return hex.length === 1 ? '0' + hex : hex\n}\n\nconst rgbToHex = (r, g, b) => '#' + componentToHex(r) + componentToHex(g) + componentToHex(b)\n\nexport class Color {\n constructor(r, g, b) {\n this.set(r, g, b)\n }\n\n toRgb() {\n return `rgb(${Math.round(this.r)}, ${Math.round(this.g)}, ${Math.round(this.b)})`\n }\n\n toHex() {\n return rgbToHex(Math.round(this.r), Math.round(this.g), Math.round(this.b))\n }\n\n set(r, g, b) {\n this.r = this.clamp(r)\n this.g = this.clamp(g)\n this.b = this.clamp(b)\n }\n\n hueRotate(angle = 0) {\n angle = (angle / 180) * Math.PI\n const sin = Math.sin(angle)\n const cos = Math.cos(angle)\n\n this.multiply([\n 0.213 + cos * 0.787 - sin * 0.213,\n 0.715 - cos * 0.715 - sin * 0.715,\n 0.072 - cos * 0.072 + sin * 0.928,\n 0.213 - cos * 0.213 + sin * 0.143,\n 0.715 + cos * 0.285 + sin * 0.14,\n 0.072 - cos * 0.072 - sin * 0.283,\n 0.213 - cos * 0.213 - sin * 0.787,\n 0.715 - cos * 0.715 + sin * 0.715,\n 0.072 + cos * 0.928 + sin * 0.072\n ])\n }\n\n grayscale(value = 1) {\n this.multiply([\n 0.2126 + 0.7874 * (1 - value),\n 0.7152 - 0.7152 * (1 - value),\n 0.0722 - 0.0722 * (1 - value),\n 0.2126 - 0.2126 * (1 - value),\n 0.7152 + 0.2848 * (1 - value),\n 0.0722 - 0.0722 * (1 - value),\n 0.2126 - 0.2126 * (1 - value),\n 0.7152 - 0.7152 * (1 - value),\n 0.0722 + 0.9278 * (1 - value)\n ])\n }\n\n sepia(value = 1) {\n this.multiply([\n 0.393 + 0.607 * (1 - value),\n 0.769 - 0.769 * (1 - value),\n 0.189 - 0.189 * (1 - value),\n 0.349 - 0.349 * (1 - value),\n 0.686 + 0.314 * (1 - value),\n 0.168 - 0.168 * (1 - value),\n 0.272 - 0.272 * (1 - value),\n 0.534 - 0.534 * (1 - value),\n 0.131 + 0.869 * (1 - value)\n ])\n }\n\n saturate(value = 1) {\n this.multiply([\n 0.213 + 0.787 * value,\n 0.715 - 0.715 * value,\n 0.072 - 0.072 * value,\n 0.213 - 0.213 * value,\n 0.715 + 0.285 * value,\n 0.072 - 0.072 * value,\n 0.213 - 0.213 * value,\n 0.715 - 0.715 * value,\n 0.072 + 0.928 * value\n ])\n }\n\n multiply(matrix) {\n const newR = this.clamp(this.r * matrix[0] + this.g * matrix[1] + this.b * matrix[2])\n const newG = this.clamp(this.r * matrix[3] + this.g * matrix[4] + this.b * matrix[5])\n const newB = this.clamp(this.r * matrix[6] + this.g * matrix[7] + this.b * matrix[8])\n this.r = newR\n this.g = newG\n this.b = newB\n }\n\n brightness(value = 1) {\n this.linear(value)\n }\n contrast(value = 1) {\n this.linear(value, -(0.5 * value) + 0.5)\n }\n\n linear(slope = 1, intercept = 0) {\n this.r = this.clamp(this.r * slope + intercept * 255)\n this.g = this.clamp(this.g * slope + intercept * 255)\n this.b = this.clamp(this.b * slope + intercept * 255)\n }\n\n invert(value = 1) {\n this.r = this.clamp((value + (this.r / 255) * (1 - 2 * value)) * 255)\n this.g = this.clamp((value + (this.g / 255) * (1 - 2 * value)) * 255)\n this.b = this.clamp((value + (this.b / 255) * (1 - 2 * value)) * 255)\n }\n\n hsl() {\n // Code taken from https://stackoverflow.com/a/9493060/2688027, licensed under CC BY-SA.\n const r = this.r / 255\n const g = this.g / 255\n const b = this.b / 255\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n const l = (max + min) / 2\n let h\n let s\n\n if (max === min) {\n h = s = 0\n } else {\n const d = max - min\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0)\n break\n\n case g:\n h = (b - r) / d + 2\n break\n\n case b:\n h = (r - g) / d + 4\n break\n }\n h /= 6\n }\n\n return {\n h: h * 100,\n s: s * 100,\n l: l * 100\n }\n }\n\n clamp(value) {\n if (value > 255) {\n value = 255\n } else if (value < 0) {\n value = 0\n }\n return value\n }\n}\n\nexport class Solver {\n constructor(target) {\n this.target = target\n this.targetHSL = target.hsl()\n this.reusedColor = new Color(0, 0, 0)\n }\n\n solve() {\n const result = this.solveNarrow(this.solveWide())\n return {\n values: result.values,\n loss: result.loss,\n filter: this.raw(result.values)\n }\n }\n\n solveWide() {\n const A = 5\n const c = 15\n const a = [60, 180, 18000, 600, 1.2, 1.2]\n\n let best = { loss: Infinity }\n for (let i = 0; best.loss > 25 && i < 3; i++) {\n const initial = [50, 20, 3750, 50, 100, 100]\n const result = this.spsa(A, a, c, initial, 1000)\n if (result.loss < best.loss) {\n best = result\n }\n }\n return best\n }\n\n solveNarrow(wide) {\n const A = wide.loss\n const c = 2\n const A1 = A + 1\n const a = [0.25 * A1, 0.25 * A1, A1, 0.25 * A1, 0.2 * A1, 0.2 * A1]\n return this.spsa(A, a, c, wide.values, 500)\n }\n\n spsa(A, a, c, values, iters) {\n const alpha = 1\n const gamma = 0.16666666666666666\n\n let best = null\n let bestLoss = Infinity\n const deltas = new Array(6)\n const highArgs = new Array(6)\n const lowArgs = new Array(6)\n\n for (let k = 0; k < iters; k++) {\n const ck = c / Math.pow(k + 1, gamma)\n for (let i = 0; i < 6; i++) {\n deltas[i] = Math.random() > 0.5 ? 1 : -1\n highArgs[i] = values[i] + ck * deltas[i]\n lowArgs[i] = values[i] - ck * deltas[i]\n }\n\n const lossDiff = this.loss(highArgs) - this.loss(lowArgs)\n for (let i = 0; i < 6; i++) {\n const g = (lossDiff / (2 * ck)) * deltas[i]\n const ak = a[i] / Math.pow(A + k + 1, alpha)\n values[i] = fix(values[i] - ak * g, i)\n }\n\n const loss = this.loss(values)\n if (loss < bestLoss) {\n best = values.slice(0)\n bestLoss = loss\n }\n }\n return { values: best, loss: bestLoss }\n\n function fix(value, idx) {\n let max = 100\n if (idx === 2 /* saturate */) {\n max = 7500\n } else if (idx === 4 /* brightness */ || idx === 5 /* contrast */) {\n max = 200\n }\n\n if (idx === 3 /* hue-rotate */) {\n if (value > max) {\n value %= max\n } else if (value < 0) {\n value = max + (value % max)\n }\n } else if (value < 0) {\n value = 0\n } else if (value > max) {\n value = max\n }\n return value\n }\n }\n\n loss(filters) {\n // Argument is array of percentages.\n const color = this.reusedColor\n color.set(0, 0, 0)\n\n color.invert(filters[0] / 100)\n color.sepia(filters[1] / 100)\n color.saturate(filters[2] / 100)\n color.hueRotate(filters[3] * 3.6)\n color.brightness(filters[4] / 100)\n color.contrast(filters[5] / 100)\n\n const colorHSL = color.hsl()\n return (\n Math.abs(color.r - this.target.r) +\n Math.abs(color.g - this.target.g) +\n Math.abs(color.b - this.target.b) +\n Math.abs(colorHSL.h - this.targetHSL.h) +\n Math.abs(colorHSL.s - this.targetHSL.s) +\n Math.abs(colorHSL.l - this.targetHSL.l)\n )\n }\n\n raw(filters) {\n const fmt = (idx, multiplier = 1) => Math.round(filters[idx] * multiplier)\n\n return `brightness(0) saturate(100%) invert(${fmt(0)}%) sepia(${fmt(1)}%) saturate(${fmt(2)}%) hue-rotate(${fmt(3, 3.6)}deg) brightness(${fmt(4)}%) contrast(${fmt(5)}%)`\n }\n}\n","import debug from 'debug'\nimport { Color, extractRGB, Solver } from './color'\n\nconst d = debug('css')\n\nexport const buildStyleAttributes = (attr = {}) => {\n const extra = attr.color ? { WebkitTextFillColor: attr.color } : {}\n\n return { ...attr, ...extra }\n}\n\n/* Returns an invisible RGB if no hex is provided */\nexport const hexToRgb = (hex, alpha = 1) => {\n if (!hex) return `rgba(0,0,0,0)`\n\n const [r, g, b] = extractRGB(hex)\n\n return `rgba(${r},${g},${b},${alpha})`\n}\n\nexport const buildForceColorFullString = color => `color:${color};fill:${color};-webkit-text-fill-color:${color};`\n\nconst hexToCssFilterCache = {}\n\nexport const hexToCssFilter = hex => {\n if (!hex) return ''\n\n const cleanHex = hex.toLowerCase()\n\n if (hexToCssFilterCache[cleanHex]) {\n if (d.enabled) {\n d('hexToCssFilter: found value in cache for', cleanHex)\n }\n return hexToCssFilterCache[cleanHex]\n }\n\n const t = d.enabled ? Date.now() : undefined\n\n const [r, g, b] = extractRGB(cleanHex)\n\n const color = new Color(r, g, b)\n const solver = new Solver(color)\n const result = solver.solve()\n const res = {\n color,\n solver,\n result\n }\n if (d.enabled) {\n d(\n 'hexToCssFilter: found filter for %s - color to filter loss: %d (~1 is perfect, 5 is ok, 15 is bad) - generation time: %d ms',\n cleanHex,\n res.result.loss,\n Date.now() - t\n )\n }\n\n hexToCssFilterCache[cleanHex] = res.result.filter\n return res.result.filter\n}\n","import { useState, useEffect } from 'react'\n\nexport default (value, timeout) => {\n const [state, setState] = useState(value)\n\n useEffect(() => {\n const handler = setTimeout(() => setState(value), timeout)\n\n return () => clearTimeout(handler)\n }, [value, timeout])\n\n return state\n}\n","import { useCallback, useEffect, useRef } from 'react'\n\nconst useTimeout = (defaultDelay = 0) => {\n const toRef = useRef()\n const launch = useCallback(\n (fn, delay = defaultDelay) => {\n clearTimeout(toRef.current)\n toRef.current = setTimeout(() => {\n fn()\n toRef.current = undefined\n }, delay)\n },\n [defaultDelay]\n )\n\n const stop = useCallback(() => {\n clearTimeout(toRef.current)\n toRef.current = undefined\n }, [])\n\n const isPending = () => Boolean(toRef.current)\n\n useEffect(() => {\n return () => {\n stop()\n }\n }, [])\n\n return [launch, stop, isPending]\n}\n\nexport default useTimeout\n","import { useState, useCallback, useEffect } from 'react'\n\nconst useToggle = (defaultOpen = true) => {\n const [isOpen, setState] = useState(defaultOpen)\n\n useEffect(() => {\n setState(false)\n }, [])\n\n const toggle = useCallback(() => setState(!isOpen), [isOpen])\n\n const onClick = useCallback(\n evt => {\n if (evt) evt.preventDefault()\n\n toggle()\n },\n [toggle]\n )\n\n return [isOpen, onClick]\n}\n\nexport default useToggle\n","import { selectCurrentHistoryRoute, selectIsCurrentHistoryRoutePageless } from '../store/history/history.selectors'\nimport { requestPageAdConfig } from '../store/ad/ad.actions'\nimport { avoidReloadOnBackNav, processOnRouteLeave } from '../domain/router/routeUtils'\nimport RouteHandlingState from './RouteHandlingState'\nimport { noop } from '../utils/function'\nimport { noticeNavigationDone } from '../store/history/history.actions'\n\n/**\n * Each route has to implement 2 functions:\n * - onRouteEnter -> return a promise after executions of redux actions\n * - renderPage -> return JSX representation of the page\n * And can implement a third one:\n * - onRouteLeave -> execute actions when the page is left\n * */\n\nexport const handleRouteLoading =\n ({ onRouteEnter, renderPage, onRouteLeave }) =>\n ({ routeContext, params } = {}) => {\n if (__SERVER__ && !renderPage) throw Error('renderPage should always be defined on server')\n if (!onRouteEnter) console.warn('Be careful the function onRouteEnter has not been passed')\n\n const routeHandlingState = RouteHandlingState.getInstance()\n\n const { action, state, store, prevRoute } = routeContext // FIXME NES-1803\n const avoidFetchData =\n (state && state.avoidDispatchingAnyPageAction && action !== 'POP') ||\n (action === 'POP' && avoidReloadOnBackNav(prevRoute?.route))\n const avoidPageTag = state && state.avoidPageTag\n\n processOnRouteLeave({ routeContext, params, currentOnRouteLeave: onRouteLeave })\n\n const avoidRefetchingPageData = state && state.avoidRefetchingPageData\n const currentRouteIsNotPageless = !selectIsCurrentHistoryRoutePageless(store.getState())\n\n routeHandlingState.renderPage = renderPage\n\n let actionsToDispatch = Promise.resolve()\n\n if (__BROWSER__) {\n if (currentRouteIsNotPageless)\n requestPageAdConfig(selectCurrentHistoryRoute(store.getState()))(store.dispatch, store.getState)\n\n if (avoidFetchData) {\n if (!avoidPageTag) deferSendingPageTag(routeContext)()\n } else {\n onRouteEnter({ routeContext, store, params, state, avoidRefetchingPageData }).then(\n !avoidPageTag ? deferSendingPageTag(routeContext) : noop\n )\n }\n } else {\n actionsToDispatch = onRouteEnter({ routeContext, store, params, state, avoidRefetchingPageData })\n }\n\n return actionsToDispatch.then(() => ({\n component: routeHandlingState.renderPage({ routeContext, params, state })\n }))\n }\n\nexport const deferSendingPageTag = routeContext => {\n const { store } = routeContext\n const previousRoute = selectCurrentHistoryRoute(store.getState())\n return () => {\n const currentRoute = selectCurrentHistoryRoute(store.getState())\n\n if (previousRoute === currentRoute && __BROWSER__) {\n noticeNavigationDone(routeContext)(store.dispatch, store.getState)\n }\n }\n}\n","import { requestInventory } from '../../dataSource/itinerary/itinerary.requests'\nimport { PARAM_ARRIVAL_DATE_TIME, PARAM_DEPARTURE_DATE_TIME } from '../../domain/router/queryParameters.constants'\nimport { getCurrentDateISO } from '../../domain/utils/date'\nimport { selectLocale } from '../navigation/navigation.selectors'\nimport {\n extractDefaultFuelPrices,\n extractDefaultVehiculeOptions,\n extractTransportModes\n} from './itineraryOptions.dataParsers'\nimport {\n setDefaultFuelPrices,\n setDefaultVehicleOptions,\n setItineraryArrivalLater,\n setItineraryDate,\n setItineraryDepartureLater,\n setItineraryTime,\n setPreferredOptionsForMode\n} from './itineraryOptionsSlice'\n\nconst fetchVehiclesOptions = () => (dispatch, getState) => {\n const locale = selectLocale(getState())\n\n return requestInventory(locale).then(data => {\n const vehiclesOptions = extractDefaultVehiculeOptions(data)\n const transportModes = extractTransportModes(data)\n\n dispatch(\n setDefaultVehicleOptions({\n vehiclesOptions,\n transportModes\n })\n )\n\n const fuelPrices = extractDefaultFuelPrices(data)\n\n dispatch(\n setDefaultFuelPrices({\n fuelPrices\n })\n )\n })\n}\n\nlet mustFetchItineraryOptions = true\n\nexport const fetchItineraryOptionsConfig = () => (dispatch, getState) => {\n if (mustFetchItineraryOptions) {\n mustFetchItineraryOptions = false\n return fetchVehiclesOptions()(dispatch, getState)\n }\n\n return Promise.resolve()\n}\n\nexport const reinitializeFetchItineraryOptionConfig = () => (mustFetchItineraryOptions = true)\n\nexport const changePreferredOptions =\n ({ modeId, ...newPreferredOptionsForMode }) =>\n (dispatch, getState) => {\n dispatch(\n setPreferredOptionsForMode({\n modeId,\n ...newPreferredOptionsForMode\n })\n )\n }\n\nconst REGEX_DATETIME = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$/\n\nconst checkDateTimeQueryParams = dateTimeQueryParam => {\n if (REGEX_DATETIME.test(dateTimeQueryParam)) {\n const { date } = splitDateTimeFromQueryParams(dateTimeQueryParam)\n const inputDate = new Date(date)\n const now = new Date(getCurrentDateISO())\n return inputDate >= now\n }\n return false\n}\n\nconst splitDateTimeFromQueryParams = dateTimeQueryParam => {\n const [date, time] = dateTimeQueryParam.split('T')\n return { date, time }\n}\n\nconst setDateTimeFromQueryParams = dateTimeQueryParam => dispatch => {\n const { date, time } = splitDateTimeFromQueryParams(dateTimeQueryParam)\n dispatch(setItineraryDate({ date }))\n dispatch(setItineraryTime({ time }))\n}\n\nexport const setItineraryTimeOptionsFromQueryParams = query => (dispatch, getState) => {\n if (query.has(PARAM_ARRIVAL_DATE_TIME)) {\n const datetimeParam = query.get(PARAM_ARRIVAL_DATE_TIME)\n if (checkDateTimeQueryParams(datetimeParam)) {\n dispatch(setItineraryArrivalLater())\n setDateTimeFromQueryParams(datetimeParam)(dispatch)\n }\n } else if (query.has(PARAM_DEPARTURE_DATE_TIME)) {\n const datetimeParam = query.get(PARAM_DEPARTURE_DATE_TIME)\n if (checkDateTimeQueryParams(datetimeParam)) {\n dispatch(setItineraryDepartureLater())\n setDateTimeFromQueryParams(datetimeParam)(dispatch)\n }\n }\n}\n","import { parsePositiveNumber } from '../../utils/number'\n\nexport const extractDefaultVehiculeOptions = data => {\n return data?.vehicles.providers\n}\n\nexport const extractTransportModes = data => {\n return data?.transport_modes\n}\n\nexport const extractDefaultFuelPrices = data => {\n const fuelPrices = data?.fuel_prices ?? {}\n return Object.entries(fuelPrices).reduce((acc, entry) => {\n const [key, price] = entry\n acc[key] = parsePositiveNumber(price, 3)\n return acc\n }, {})\n}\n","import { setAddressFromAmbiguity } from '../address/address.actions'\nimport { selectIsItineraryUniverse } from '../history/history.selectors'\nimport { setStepFromAddress } from '../itinerary/itinerary.actions'\n\nexport const setAmbiguityAddress = address => (dispatch, getState) => {\n const isItineraryRoute = selectIsItineraryUniverse(getState())\n\n return isItineraryRoute\n ? setStepFromAddress(address)(dispatch, getState)\n : setAddressFromAmbiguity(address)(dispatch, getState)\n}\n","export default class SuggestError extends Error {\n constructor() {\n super('Pas de suggestion correspondant à cette recherche.')\n this.name = 'SuggestError'\n }\n}\n","import { getImageUrl } from '../../domain/utils/image'\n\nexport default function (response) {\n return {\n suggests: response.suggests.map((suggest = {}) => {\n const { type, lat, lng, subtype, labels, brand_icon_url, icon_urls } = suggest\n\n const iconUrls = icon_urls\n ? {\n iconUrls: icon_urls.map(iconUrl => getImageUrl(iconUrl))\n }\n : {}\n\n const brandIconUrl = brand_icon_url ? { brandIconUrl: getImageUrl(brand_icon_url) } : {}\n\n return Object.assign({}, { type, lat, lng, labels }, subtype ? { subtype } : {}, iconUrls, brandIconUrl)\n })\n }\n}\n","import { requestSuggest } from '../../dataSource/suggest/suggest.requests'\nimport SuggestError from '../../domain/suggest/SuggestError'\nimport { selectMapBbox } from '../map/map.selectors'\nimport { selectLocale } from '../navigation/navigation.selectors'\nimport parse from './suggest.dataParser'\nimport { loadSuggestError, loadSuggestResponse, resetSuggestData, setSuggestInputValue } from './suggestSlice'\n\nconst isResponseFromLastRequest = (suggest, requestTime) => {\n return suggest.lastRequestTime < requestTime\n}\n\nexport const suggest =\n ({ terms, suggestFilterType = 'all' }) =>\n (dispatch, getState) => {\n if (!terms) {\n dispatch(resetSuggestData())\n return Promise.resolve()\n }\n\n dispatch(setSuggestInputValue(terms))\n\n const requestTime = Date.now()\n const locale = selectLocale(getState())\n const bbox = selectMapBbox(getState())\n return requestSuggest(bbox, locale, { terms, suggestFilterType })\n .then(response => {\n const { data } = response\n\n if (!data?.suggests) {\n throw new SuggestError()\n }\n\n const { suggest } = getState()\n\n if (isResponseFromLastRequest(suggest, requestTime)) {\n dispatch(loadSuggestResponse({ data: parse(data), requestTime }))\n }\n })\n .catch(error => {\n const { suggest } = getState()\n if (isResponseFromLastRequest(suggest, requestTime)) {\n dispatch(loadSuggestError({ error, requestTime }))\n }\n })\n }\n","import { convertBboxToWestSouthEastNorthBbox } from '../../domain/utils/map'\nimport { getBIParams } from '../../domain/analytics/BiTagger'\nimport { bboxToSearchParameter } from '../../domain/map/conversion'\nimport request from '../../domain/utils/request'\nimport { getService, getServiceParameters } from '../../parameters'\nimport SERVICES from '../../services.constants'\n\nexport const requestSuggest = (bbox, locale, { terms, suggestFilterType = 'all' }) => {\n const service = getService(SERVICES.SUGGEST)\n const params = {\n q: terms,\n filter: suggestFilterType,\n limit: 5,\n focus_bbox: bboxToSearchParameter(convertBboxToWestSouthEastNorthBbox(bbox)),\n ...getServiceParameters(SERVICES.SUGGEST, locale),\n ...getBIParams()\n }\n\n return request.get(service, { locale, params }).then(response => response)\n}\n","import { createCustomSelector } from '../../../domain/utils/react-reselect'\nimport { selectSearchState } from '../search.selectors'\nimport { lastTenHistoryEntries } from './searchHistory.utils'\n\nexport const selectSearchHistory = createCustomSelector(selectSearchState, search => search?.searchHistory ?? [])\n\nexport const selectLastTenHistoryEntries = createCustomSelector(selectSearchHistory, searchHistory =>\n lastTenHistoryEntries(searchHistory)\n)\n","import { SUGGEST_FROM_VALUES } from '../../domain/suggest/suggest.constants'\nimport { createCustomSelector } from '../../domain/utils/react-reselect'\nimport { selectLastTenHistoryEntries, selectSearchHistory } from '../search/searchHistory/searchHistory.selectors'\nimport { lastSearchHistoryEntries } from '../search/searchHistory/searchHistory.utils'\nimport {\n selectFakeFavorites,\n selectIsUserAccountEnabled,\n selectUserFavorites\n} from '../userAccount/userAccount.selectors'\nimport { isLabelMatchingInputValueKeyword, normalizeInputValueKeyword, normalizeLabel } from './suggest.selectors.utils'\n\nconst addFromProperty = from => item => ({ ...item, from })\n\nconst selectSuggestState = store => store?.suggest ?? {}\n\nexport const selectSuggestInputValue = createCustomSelector(selectSuggestState, suggest => suggest?.inputValue ?? '')\n\nexport const selectIsSuggestInputValueEmpty = createCustomSelector(\n selectSuggestInputValue,\n inputValue => inputValue === ''\n)\n\nexport const selectSuggestError = createCustomSelector(selectSuggestState, suggest => suggest?.error ?? null)\n\nexport const selectServiceSuggestions = createCustomSelector(selectSuggestState, suggest =>\n (suggest?.serviceSuggestions ?? []).map(addFromProperty(SUGGEST_FROM_VALUES.service))\n)\n\nexport const selectSearchHistorySuggestions = createCustomSelector(\n selectSuggestInputValue,\n selectSearchHistory,\n selectLastTenHistoryEntries,\n (inputValue, searchHistory, lastTenHistoryEntries) => {\n if (inputValue === '') return lastTenHistoryEntries.map(addFromProperty(SUGGEST_FROM_VALUES.history))\n\n const normalizedInputValue = normalizeInputValueKeyword(inputValue)\n\n return lastSearchHistoryEntries(normalizedInputValue, inputValue, searchHistory).map(\n addFromProperty(SUGGEST_FROM_VALUES.history)\n )\n }\n)\n\nconst formatFavoriteForSuggest = ({ uuid, label, address, favIcon, type, incentive, labels }) => {\n return {\n uuid,\n labels: address ? [label, address] : labels,\n subtype: { id: favIcon },\n type,\n from: SUGGEST_FROM_VALUES.favorites,\n incentive: Boolean(incentive)\n }\n}\n\nconst formatHomeOrWorkFavoriteForSuggest = suggestion => {\n return {\n ...formatFavoriteForSuggest(suggestion),\n address: suggestion.address\n }\n}\n\nexport const selectSuggestFakeFavorites = createCustomSelector(selectFakeFavorites, fakeFavorites => {\n const { home, work } = fakeFavorites\n return {\n home: {\n from: SUGGEST_FROM_VALUES.favorites,\n ...home\n },\n work: {\n from: SUGGEST_FROM_VALUES.favorites,\n ...work\n }\n }\n})\n\nexport const selectFavoritesFormattedForSuggest = createCustomSelector(\n selectIsUserAccountEnabled,\n selectUserFavorites,\n selectSuggestFakeFavorites,\n (isUserAccountAvailable, favorites, fakeFavorites) => {\n if (!isUserAccountAvailable) return []\n\n const { others, home, work } = favorites\n const suggestsHomeWork = [\n home.label ? favorites.home : fakeFavorites.home,\n work.label ? favorites.work : fakeFavorites.work\n ]\n\n return [\n ...suggestsHomeWork.map(formatHomeOrWorkFavoriteForSuggest),\n ...others.map(other => formatFavoriteForSuggest(other))\n ]\n }\n)\n\nexport const selectFavoritesSuggestions = createCustomSelector(\n selectFavoritesFormattedForSuggest,\n selectSuggestInputValue,\n (favorites, inputValue) => {\n if (inputValue === '') return favorites.slice(0, 5)\n // TODO: vérifier avec le service que les favoris sont bien triés du plus récent au plus ancien\n\n return favorites.filter(favorite => {\n const inputValueKeyword = normalizeInputValueKeyword(inputValue)\n return isLabelMatchingInputValueKeyword(inputValueKeyword, favorite.labels.join(' '))\n })\n }\n)\n\nexport const removeDuplicateSuggestions = (suggestionsToProcess, suggestionsToCompare) => {\n const labelsToCompare = suggestionsToCompare.map(suggestion => normalizeLabel((suggestion?.labels ?? []).join(' ')))\n return suggestionsToProcess.filter(suggestion => {\n const label = normalizeLabel(suggestion.labels.join(' '))\n return !labelsToCompare.find(item => item === label)\n })\n}\n\nexport const selectAllSuggestions = (withoutFavorites = false) =>\n createCustomSelector(\n selectSuggestError,\n withoutFavorites ? () => [] : selectFavoritesSuggestions,\n selectSearchHistorySuggestions,\n selectServiceSuggestions,\n (error, favoritesSuggestions, searchHistorySuggestions, serviceSuggestions) => {\n const favoritesSuggestionsWithUuid = favoritesSuggestions.filter(({ uuid }) => Boolean(uuid))\n const searchHistory = removeDuplicateSuggestions(searchHistorySuggestions, favoritesSuggestionsWithUuid)\n const service = removeDuplicateSuggestions(serviceSuggestions, [\n ...favoritesSuggestionsWithUuid,\n ...searchHistory\n ])\n\n return {\n error,\n suggestions: {\n favorites: favoritesSuggestionsWithUuid,\n searchHistory,\n service\n }\n }\n }\n )\n\nexport const selectHomeWorkOrFakeFavorites = createCustomSelector(\n selectIsUserAccountEnabled,\n selectUserFavorites,\n selectSuggestFakeFavorites,\n (isUserAccountAvailable, favorites, fakeFavorites) => {\n if (!isUserAccountAvailable) return []\n const { home, work } = favorites\n return [\n home?.label ? formatHomeOrWorkFavoriteForSuggest(favorites.home) : fakeFavorites.home,\n work?.label ? formatHomeOrWorkFavoriteForSuggest(favorites.work) : fakeFavorites.work\n ]\n }\n)\n","export const suggestServiceCtx = {\n filter: {\n addresses: 'addresses',\n places: 'places',\n all: 'all'\n },\n type: {\n address: 'address',\n poi: 'poi',\n store_chain: 'store_chain',\n rubric: 'rubric'\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"TYSMm\",\"search\":\"gEZJf\",\"suggest\":\"UKfJ2\",\"back\":\"WMONS\",\"form\":\"bY23q\",\"errorMessage\":\"raxn_\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"VYaek\",\"menuCategoriesPE\":\"Ke0YP\",\"container\":\"Oj56O\",\"backButton\":\"jlxqp\",\"mainButton\":\"uzKXE\",\"mainButtonIcon\":\"mfQZu\",\"itineraryButtonIcon\":\"X2vM7\",\"mainButtonLabel\":\"IDx1g\",\"listButtonLabel\":\"gyGKv\",\"header_list_button_label\":\"VszTN\",\"userAccountPE\":\"aWLQI\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"XdwHk\",\"list\":\"Gw2WM\",\"listItem\":\"g7POR\",\"listItemFavorites\":\"jTuRJ\",\"arrow\":\"jqhSM\",\"arrowRight\":\"ZBeNf\",\"arrowLeft\":\"HxR2B\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"t0jbF\",\"subcategoryIcon\":\"ni2Gv\",\"label\":\"O2AiI\",\"logoWrapper\":\"m9Zbf\",\"logo\":\"r4vte\"};"],"names":["withUserKnown","_ref","size","SIZE_BIG","loaded","keycloak","useKeycloak","lastFullRoute","useSelector","selectPrevFullRouteNonPageLess","React","loginUrl","createLoginUrl","redirectUri","location","origin","RectangleActionButton","tagData","type","TAG_CLICK_USER_LOGIN_BUTTON","nofollow","label","href","wrapperClassName","defaultIconClassName","userPicClassName","connected","selectIsUserConnected","picture","selectUserPicture","shouldDisplayPicture","className","classnames","dangerouslySetInnerHTML","__html","style","backgroundImage","marginTop","error","text","setText","useState","visible","setVisible","useTemporaryVisible","useEffect","name","StatusMessage","message","useT","INCENTIVE_NAME","incitationPrincipale","incitationOptionDeplacement","incitationOptionReponse","incitationPOI","withUserConnected","Component","props","withUserNotConnected","selectIsUserNotConnected","selectIsUserKnown","withUserUnknown","d","debug","setLoaded","Boolean","KeycloakJs","url","getService","SERVICES","KEYCLOAK","realm","clientId","init","onLoad","responseMode","silentCheckSsoFallback","silentCheckSsoRedirectUri","window","then","authenticated","catch","console","useKeycloakEngine","dispatch","useDispatch","timeoutRef","useRef","token","idTokenParsed","identity","pick","USER_ID_LEGACY","USER_ID_SUB","setUserAccountConnected","setUserAccountNotConnected","setUiUserScreen","USER_SCREENS","default","updateAndSaveToken","useCallback","updateToken","hasTokenBeenRefreshed","setUserAccountToken","e","checkIfTokenWillExpire","isTokenExpired","current","setTimeout","EXPIRATION_SECONDS","clearTimeout","onTokenExpired","AD_STATUS_NONE","AD_STATUS_LOADING","AD_STATUS_LOADED","useAdLoader","adId","keywordsSelector","noop","askData","adStatus","setAdStatus","keywords","AdService","createAd","setAdKeywords","loadAd","getAdData","data","setAdData","removeAdData","reloadAd","JSON","stringify","timeoutId","ONE_SECOND_MS","deleteAd","BaseAdLoader","_ref2","adName","children","placeHolderHeight","pageId","selectPageIdForAdConfig","getAdIdByAdName","isAdLibraryAvailable","pendingLoadTimeout","setPendingLoadTimeout","useTimeout","minHeight","id","withEmptyFallbackErrorBoundary","_ref3","restProps","state","selectIsCorrespondingPageAdConfigLoaded","_extends","key","StoreButton","appstore","TagActionLink","classNames","targetBlank","TAG_BLOCK_AUTOPROMO","tagInfo","area","analyticsConstants","autopromo","popin","AutoPromoPopinGE","hideModal","useModal","MODAL_IDS","AUTO_PROMO_POPIN","onPopinClose","useEventCallback","Modal","modalId","onClick","SVGIcon","cross","src","qrcode","PLAY_STORE_URL","stores","android","APPLE_STORE_URL","ios","s","mappyLogoOutline","roadRadar","france","withFrenchSite","SIZE_NORMAL","displayModal","onButtonClick","useErrorBoundaryCallback","iconUrl","color","COLOR_GREY_EMPTY","labelKey","labelArgs","idx","itemProp","itemScope","itemType","T","args","content","Breadcrumbs","breadcrumbs","selectBreadcrumbs","map","BreadcrumbItem","wrapper","infos","ImageWithFallback","device","image","prefooterDeviceWebp","fallbackImage","prefooterDevicePng","width","height","textContainer","title","APPS_ADJUST_URL","main","COLOR_GREEN","FooterCocorico","frenchFlag","alt","FooterContact","TAG_CLICK_HELP_BUTTON","target","rel","question","SocialNetworkButtons","socialNetworkList","FacebookButton","TwitterButton","BlogButton","button","facebook","TAG_FOOTER_SOCIAL_NETWORKS_LINKS","ssrWhite","twitter","blog","disableNoreferrer","rss","FooterInfos","isFR","selectIsFrenchSite","Details","summary","tooltipRight","classes","toggleClasses","logoBonjour","loading","logoMappy","logoRatpFr","logoRatpEn","logoRSS","renderGroupLogos","FooterPrivacy","onPrivacyOpen","CMPService","open","lock","ID","TopSearchLinks","selectTopSearchLinks","selectShouldDisplayTopSearchTitle","element","document","getElementById","innerHTML","root","withEverySelectorTruthy","selectShouldDisplayTopSearch","FooterTopSearch","magnifyingGlass","privacy","displayAppAutoPromo","isSearchPage","selectIsSearchPage","geoentitiesDisplayedAsList","selectAreGeoentitiesDisplayedAsList","FooterAppAutoPromo","withOnlyPE","Anchor","ClosePopinButton","hasTag","execNavigateBack","useAction","navigateBack","useNavigateBack","TagActionButton","TAG_BACK","deferClick","ClosePopinIcon","ClosePopinButtonGE","withOnlyGE","useToggle","Summary","Chevron","down","Content","ImageGallery","ref","RImageGallery","lazyLoad","showNav","showThumbnails","showFullscreenButton","showPlayButton","displayName","customStyle","zIndex","backgroundColor","top","left","marginRight","transform","right","bottom","padding","overflow","borderRadius","border","overlayStyle","withCloseButton","shouldNavigateBackOnClose","onClose","rModalProps","isModalDisplayed","execNavBack","RModal","appId","stopPropagationHandler","onRequestClose","overlay","shouldCloseOnOverlayClick","isGE","isOpen","POSITIVE_FLOAT_MAX_3_RADIX","value","onChange","onBlur","inputValue","setInputValue","event","focus","targetValue","test","handleBlur","parsePositiveNumber","CloseUserAreaButton","LogoMappyImg","LogoMappy","UserAreaAnonymous","welcomeUserAccount","UserLoginButton","rightChildren","noBar","isDefaultScreen","selectIsUserScreenDefault","onBack","arrowLeft","FavoriteContent","address","poiId","uuid","favIcon","action","actionIcon","allowEmpty","editTagData","gotoTagData","updating","execNavigateTo","navigateTo","onItemClick","resetGeoentityList","route","ROUTE_SEO_GEOENTITY","routeOptions","geoentityId","setSearchTerms","ROUTE_ADDRESS","clickableContent","icon","actions","Throbber","ActionButton","actionButton","buildTagData","TAG_CLICK_USER_FAVORITES_LIST","ACTION","TYPE","UserFavorites","home","work","others","selectUserFavorites","execDeleteUserFavorite","deleteUserFavorite","favoriteError","setFavoriteError","manageFavorite","params","deleteFavorite","async","deleteFavoriteResult","canStillAddFavorite","selectUserFavoritesLimitNotReached","renderAddBtn","COLOR_GREEN_EMPTY","FAVORITE_TYPES","OTHER","user","favorites","other","listAdd","errorMessage","UserScreenHeader","UserFavoriteError","UserScreenContent","UserFavoriteItem","HOME_ICON","HOME","listEdit","listView","WORK_ICON","WORK","listDelete","FavoriteInput","forwardRef","placeholder","suggestFilterType","suggestServiceCtx","filter","places","execSuggest","suggest","cancelSuggest","setCancelSuggest","inputRef","debouncedValue","useDebounce","hasDebouncedValueChangeOnce","onSubmit","setSuggestInputValue","Promise","resolve","blur","useImperativeHandle","doSuggest","val","terms","onFocus","select","autoComplete","autoFocus","UserManageFavorite","_favorites$type","selectUserUIScreenParams","execSaveUserOtherFavorite","addUserOtherFavorite","execAddOrEditHorOrWorkUserFavorite","addOrEditHomeOrWorkUserFavorite","initialValue","setValue","selectFavoritePlaceholder","onSuggestClicked","isPoi","suggestion","removeHtmlEmSpanAndITags","labels","join","equalsIgnoreCase","favorite","saveOtherResult","saveHomeOrWorkResult","search","back","form","preventDefault","SuggestContent","withoutFavorites","UserItineraryOptions","execFetchItineraryOptionsConfig","fetchItineraryOptionsConfig","onValidate","ItineraryOptions","onLogout","logout","TAG_CLICK_USER_LOGOUT_BUTTON","UserMenuItem","arrowRight","UserMenuAccount","tagType","UserMenu","userName","selectUserName","execLoadUserFavorites","loadUserFavorites","execLoadUserItineraryOptions","loadUserItineraryOptions","userMenuError","setUserMenuError","accountUrl","encodeURIComponent","gotoItineraryOptionsScreen","loadItineraryOptionsResult","itineraryOptions","gotoFavoritesScreen","loadFavoritesResult","sUserManageFavorite","UserPicture","TAG_CLICK_USER_ACCOUNT_BUTTON","UserLogout","powerOff","UserAreaConnected","selectUserUIScreen","UserAreaPlaceHolder","ContentLoader","speed","viewBox","foregroundColor","x","y","rx","ry","cx","cy","r","selectIsUserAccountEnabled","UserArea","isUIDisplayed","useUIDisplay","UI_ELEMENTS","USER","Helmet","imageList","original","srcSet","favoriteAddressesImg","favoriteAddressesImgWebp","myOptionsImg","myOptionsWebp","myAlertsImg","myAlertsWebp","UserAccountIncentiveCarrousel","textIndex","setTextIndex","galleryRef","isBulletHighlighted","bulletIndex","goToPreviousSlide","pause","slideToIndex","getCurrentIndex","play","items","onBeforeSlide","nextIndex","autoPlay","slideInterval","goToNextSlide","star","point","SmallScreenText","UserAccountIncentivePopin","shouldDisplayPopin","selectShouldDisplayUserAccountIncentivePopin","USER_ACCOUNT_INCENTIVE_POPIN","configureAndSendTag","useConfigureAndSendTag","TAG_MULTIPATH_CTA","tag","PUB_TAG","PUB_COMPTE_PERSO_INCITATION","Incitation","isImpression","isPE","incentiveIllustration","UtiqLoader","domainForUtiq","isProduction","CustomPurposes","Utiq","CustomVendors","defer","DidomiSDK","iabVersion","apiKey","constructor","noticeId","onReady","didomiSDK","setSDK","onConsentChanged","registerConsent","getConsents","categoryId","segment","useSelectorWithProps","selectCategorySegmentByCategoryId","adData","selectAdDataByAdId","Menuthema","linkLabel","imgUrl","linkUrl","DelayComponent","delay","AdLoader","categorySelector","isEmptyObj","onMouseLeaveMenu","subcategories","apps","selectSubCategoriesMenu","setMouseOverTimeout","clearMouveOverTimeout","usePublisherBarreCategorieTag","onMouseOut","columnCount","Number","length","onMouseOver","iconId","rubricIds","MenuSubCategoryItem","mob_roundImage","MenuApplicationItem","logo","CategorySubMenuStyle","AdMenu","MenuCategoriesGE","setCategoryId","execLoadPoiAssetsConfiguration","loadPoiAssetsConfiguration","execNavigateToSmrByCategory","navigateToPoisOnRouteByCategory","categories","selectCategoriesMenu","isPageElligibleForPoisOnRoute","selectIsPageElligibleForPoisOnRoute","clearMouseOverTimeout","unselectCategory","execNavigateToSearchByCategory","navigateToSearchByCategory","onMenuMouseOver","onMenuMouseOut","shortLabel","MenuCategoryItem","selected","active","onCategoryClick","catId","TAG_CLICK_CATEGORY_BAR","CAT_ID","APP_OR_SUBCAT_ID","MenuSubCategoriesGE","AutoPromoOpenButton","header","Outdoor","view","isOutdoorDisplayed","selectIsOutdoorDisplayed","outdoorPanoramicId","selectOutdoorPanoramicId","outdoorTargetCoordinates","selectOutdoorTargetCoordinates","locale","selectLocale","debugKeyHandler","_view$current","toggleDebug","stopListeningKeyForDebug","body","removeEventListener","hide","addEventListener","createOutdoorView","lat","lng","MappyOutdoor","View","apikey","getApiKey","domain","getDomain","imgPath","__APP_VERSION__","getLocaleUnderscored","lookAt","lon","selectPageSpecificClasses","store","_props$pageClassManag","pageClassManager","call","selectCommonClasses","createCustomSelector","selectIsMapFullScreen","isUIElementDisplayed","POPIN","SUGGEST","MENU_PE","MAP_TOOLS_PE","selectFocusedPoiId","isMapFullScreen","isPopinDisplayed","isSuggestDisplayed","isMenuPEDisplayed","isMapToolsPEDisplayed","hasFocusedPoi","PAGE_CLASSES","withFullscreenMap","withDetail","withSuggest","withMenuPEDisplayed","withMapToolsPEDisplayed","withPoiPopinDisplayed","cssClasses","commonClasses","pageSpecificClasses","CMPPlaceholder","ScrollContext","useScrollContext","useContext","scrollableElementRef","getScrollValue","_scrollableElementRef","scrollTop","querySelector","setScrollValue","scrollTo","scrollGoal","arguments","undefined","now0","scroll0","scrollDelta","step","now","t","scrollPos","Math","sin","PI","requestAnimationFrame","animate","addScrollListener","fn","el","removeScrollListener","checkIfTargetIsVisible","parent","child","targetTop","offsetTop","totalScrollHeight","offsetParent","clientHeight","innerHeight","scrollValue","providerValue","Provider","timeout","setAction","clear","backButton","UserButton","ROUTE_USER_ACCOUNT","TAG_CLICK_USER_BURGER","ItineraryUniverseButton","selectIsHomePage","selectItineraryOptions","generateFullRoute","ROUTE_ITINERARY_HOME","itineraryIcon","DesktopPreHeader","execNavigateToHomepage","navigateToHomepage","onClickToHomepage","shouldDisplayUserAccount","selectedActiveFilter","selectGeoentityActiveFilter","subHeader","subHeaderSelectorConditionFn","headerButton","menuCategoriesPE","suggestDisplayed","searchDialogDisplayed","SEARCH_DIALOG","backButtonDisplayed","selectIsBackButtonDisplayed","headerHeight","selectHeaderHeight","subHeaderComponent","userAccountEnabled","shouldDisplayMenuCategoriesPE","computedHeaderHeight","useComputedHeaderHeight","container","withBackButton","withHeaderButton","withUserAccountButton","userAccountPE","SubHeader","MenuCategoriesPE","localeCountryIsFrance","withFrenchLanguage","localeLanguageIsFrench","withoutEnglishSite","localeCountryIsUK","description","displayHighlightBar","FavouriteModeBox","favouriteModes","selectFavouriteModes","preferredMode","selectPreferredMode","onClickForId","TAG_CLICK_TRAVEL_OPTIONS_MODEFAVORI","SELECTION","setPreferredMode","modeId","sModeSelector","listItemFavorites","ModeItem","speedTKey","item","ModeSpeedSettingsBox","hasOwnSwitcher","preferredSpeed","selectPreferredSpeed","vehicleOwn","selectVehicleOwn","execChangePreferredOptions","changePreferredOptions","translations","useTranslateAsObject","TRAVEL_SPEEDS","onPreferredOptionsChange","PREFERRED_SPEED","VehicleOwnedSwitcher","VEHICLE_OWN","defaultValue","TRAVEL_SPEED_VALUES_BY_MODE","execSaveUserItineraryOptions","saveUserItineraryOptions","itineraryOptionsError","setItineraryOptionsError","saveItineraryOptionsResult","sUserManageFavorites","VehicleSettingsBox","SwitchInput","critAirStickers","onSelect","onChooseForId","evt","sticker","CRITAIR_DEFAULT_ID","critAirSticker","find","CRITAIR","maxWidth","CritairChoice","tagConfig","car","PREFERRED_VEHICLE_ID","TAG_CLICK_TRAVEL_OPTIONS_CAR_VEHICLE","motorbike","TAG_CLICK_TRAVEL_OPTIONS_MOTORBIKE_VEHICLE","_modeMetadata$transpo","modeMetadata","selectModeMetadata","preferredVehicle","selectPreferredVehicle","preferredFuel","selectPreferredFuel","fuelList","selectFuelList","vehicleList","selectVehicleList","transportMode","critair","critAirId","selectCritAirId","optionsToUpdate","_tagConfig$modeMetada","VehicleSettingsBoxContent","vehicle","PREFERRED_FUEL_ID","fuel","NumericInput","price","PREFERRED_FUEL_PRICE","price_unit","consumption","PREFERRED_FUEL_CONSUMPTION","consumption_unit","critAirLine","CritairSelect","CRITAIR_ID","img","_global","withoutSubHeader","hidden","high","highNoMap","PE_MAIN_START_POS","positionAtStart","selectMainPEPositionAtStart","windowHeight","global","getStyle","headerWithSubHeaderHeight","HEADER_SUBHEADER_HEIGHT","PREHEADER_HEIGHT","minTop","MINI_MAP_HEIGHT","max","PE_MAIN_VALUES","ResponsiveScrollableWrapper","useImpressionTag","condition","withMapInitialized","MapEventPopin","mapEventPopinInfo","selectMapEventPopin","shouldDisplayMapEvenPopin","selectShouldDisplayMapEventPopin","TAG_PUBLISHER","PUB_MAP_LEGENDE_LAYER_CARTE","title_popin","resetMapEventsPopin","asset_zone","asset_event","UPI","useMapContext","isDisplayed","selectIsOutdoorPrompted","offsetX","elementRef","coords","setCoords","setPreviewTimeout","clearPreviewTimeout","displayPreview","closePreview","useOutdoorPreviewPopup","execDisplayOutdoor","displayOutdoor","fetchPano","panoData","status","OUTDOOR_STATUS_PROMPT","displayMapPopup","POPUP_TYPE_PANO","hideMapPopup","follow","unfollow","on","mapClicked","mapMouseMove","getCanvas","cursor","bodyMouseMove","off","launchOutdoor","panoramicId","ROUTE_360_VIEW_FULLSCREEN","lngLat","onMouseMove","UPI_SIZE","clientX","clientY","onClicked","person","selectGeolocationStatus","onMapMove","statusIsFollow","GEOLOC_STATUS_FOLLOW","moveFromUser","fromAppAction","MAPLIBRE_EVENT_MOVE","setGeolocationStatus","GEOLOC_STATUS_ACTIVE","onMapMoveDelayed","debounce","MAP_STORE_UPDATE_DELAY","useEffectWithMapContext","MAPLIBRE_EVENT_ZOOM","MapLoadingError","Error","super","this","originalError","lastTimeout","nbClick","mergeOptions","prevOptions","newOptions","toOmit","bounds","push","center","omit","redirectToWebGLErrorPage","isBotNotWebGlCompliant","warn","mapLoadingError","SentryService","captureException","changeDocumentLocation","mapInstanceRef","mapContainerRef","mapStyleName","setMapStyleName","storeBboxRef","useRefFromSelector","selectMapBbox","storeCenterRef","selectMapCenter","storeZoomRef","selectMapZoom","couldFullScreen","selectCouldMapFullScreen","mapService","selectMapService","maxZoom","selectMapMaxZoom","mapStatus","selectMapStatus","getMapStartLocation","GEOIP","startLocation","zoom","enabled","getMapLibreglState","bbox","getBounds","toArray","getZoom","onUpdate","activeBbox","computeMapActiveBbox","searchBbox","computeSearchBbox","distanceFromPreviousChange","computePixelsDeltaBetweenBboxes","mapUpdated","setMapStatus","MAP_STATUS_RELOADING","setStyle","updateMapStatusOnRender","MAP_STATUS_STYLED","isStyleLoaded","MAP_STATUS_INIT","resize","isWebglSupported","sessionId","getMapSessionId","MapLibreMap","pitchWithRotate","dragRotate","minZoom","MAP_ZOOM_MIN","doubleClickZoom","keyboard","attributionControl","transformRequest","addParamsToUrl","headers","mapInstance","_e$originalEvent","originalEvent","touches","fire","DELAY_TO_TRIGGER_CONTEXTMENU_ON_MOBILE","handleMobileLongTouchAsContextMenu","touchZoomRotate","disableRotation","updateHandler","getUpdateHandler","delayedUpdate","MAP_FROM_APP_ACTION_PADDING","once","MAP_FROM_APP_ACTION_MOVE","remove","mapDestroyed","throttledUpdateMapStyle","throttle","onMapTouchEvent","handled","isPolylineAroundPointer","toggleFullscreen","interact","waitingOptionsRef","wantedPadding","moveEndRef","options","_waitingOptionsRef$cu","_waitingOptionsRef$cu2","_waitingOptionsRef$cu3","eventData","mergeEventData","prevEventData","newEventData","_waitingOptionsRef$cu4","executeInteraction","setPaddingWithoutVisibleMove","stop","currentPadding","getPadding","xyCenter","project","getCenter","deltaX","deltaY","unproject","flyTo","fitBounds","useMapBoundsInteraction","mobileTapHandler","handleMobileTap","handler","currentZoom","where","curve","clearInterval","MIN_INTERVAL_TO_DISTINGUISH_SGLE_FROM_DBL_TAP","MapContext","tagAction","clickAction","useContextMenu","clickHandler","TAG_CLICK_CONTEXT_MENU","findAddressFromPoint","payload","findAddressforGeolocation","addresses","reject","selectIsAnItineraryResultPage","ContextMenuItemItineraryAddStep","execSetStepFromAddress","setStepFromAddress","stepsLength","selectStepsLength","ContextMenuItem","addStep","setStepIdx","selectIsItineraryUniverse","ContextMenuItemItineraryFrom","execSetDepartureFromPoint","setDepartureFromPoint","ContextMenuItemItineraryTo","execSetArrivalFromPoint","setArrivalFromPoint","itineraryUniverse","navigateToAction","ROUTE_ITINERARY_TO","to","toAddress","avoidReset","navigateToItineraryTo","ContextMenuItemShowAddress","searchAddressFromPointAction","searchAddressFromPoint","selectIsPlacesUniverse","ContextMenuItemShowCity","execSearchLocation","searchCityFromPoint","searchDepartmentFromPoint","searchRegionFromPoint","LocalContext","canvas","clientWidth","canvasWidth","canvasHeight","currentRoute","selectCurrentHistoryRoute","setEvent","shouldDisplay","selectShouldDisplayContextMenu","closeContextMenu","onContextMenu","menuClickHandler","ContextMenuItemShowDepartment","ContextMenuItemShowRegion","performance","Date","FPS","fps","setFps","t0","counter","interval","updateFpsCount","deltaTime","toFixed","compute","count","setInterval","BboxDebugger","fillColor","isMapInitialized","selectIsMapInitialized","debugId","x1","y1","x2","y2","p1","min","geometry","coordinates","isEmpty","getLayer","addLayer","source","paint","getSource","setData","removeLayer","removeSource","toString","ViewportDebugger","bboxArrayToBboxArrays","selectViewport","MapBboxDebugger","ActiveBboxDebugger","selectMapActiveBbox","SearchBboxDebugger","selectMapSearchBbox","StepsDebugger","departure","arrival","selectStepsCoordinates","getBboxFromLngLatPoints","PolylineDebugger","selectCurrentPolylineBbox","ZoomDebugger","_mapContext$map","_mapContext$map$getZo","rawZoom","floor","mapDebuggerAPI","ui","viewport","steps","polyline","activebbox","searchbbox","PREFERENCES_KEY","MapDebuggerComponent","mapDebugger","setUIItem","prop","show","saveJSONInLocalStorage","preferences","loadJSONFromLocalStorage","MapDebugger","getFromLocalStorage","Marker","greyMarker","IMAGE_MARKER","ADDRESS_BIG_MARKER_WIDTH","ADDRESS_BIG_MARKER_HEIGHT","selectShouldDisplayMarkers","selectAddresses","selectAddressContour","contour","historyRoute","ROUTE_TOOLS_COMPUTE_RADIUS","AddressMarkersContainer","popupType","selectPopupType","execSetAmbiguityAddress","setAmbiguityAddress","handleClickMarker","POPUP_TYPE_ADDRESS","AddressMarker","position","selectGeolocationPosition","geolocationOn","selectIsGeoLocationOn","marker","setMarker","rotation","activated","mapInitialized","setRotation","compassHandler","absolute","alpha","eventName","useCompass","refDiv","isEqual","setLngLat","m","MapLibreMarker","anchor","addTo","POPUP_ID","PortalPopup","popupId","useMapLibrePopup","popupData","selectPopupData","shouldHavePopup","offset","popupDataAreComplete","hasPopup","setHasPopup","withIllustration","popupTypeClass","withIllustrationClass","mapLibrePopup","MapLibrePopup","closeButton","setHTML","domNode","ReactDOM","Popup","PopupPano","POPUP_TYPE_POI","PopupPoi","PopupAddress","getChild","selectShouldDisplayPopup","zoomThreshold","stripDecimal","round","useMapZoomHandler","targetZoom","selectMapTargetData","acknowledgeMapZoom","useMapPerfMetrics","vectorMap","selectIsVectorMap","mapHasGoodSupport","setTag","String","startTimestamp","loadTime","setMeasurement","sendMapLoadingTime","spanMap","startInactiveSpan","forceTransaction","spanMapStyle","parentSpan","spanMapLoad","end","useMapMoveHandler","targetBbox","targetCenter","targetOptions","move","acknowledgeMapMove","avoidAnimation","withFastAnimation","easing","pow","from","GEOLOC_MOVE_FROM_INITIAL","bboxIsValid","addBreadcrumb","useMapPaddingHandler","useComputePaddingGetter","isOnboardingContext","selectIsOnboardingContext","setPadding","useCallbackWithMapContext","tooltip","setTooltip","showTooltip","hideTooltip","shouldRegisterMouseListener","ge","pe","mouseListeners","ModeMapEventLayerButton","disabled","ariaLabel","tooltipLabel","TAG_CLICK_EVENT_MODE","ModeLayerButton","activeIcon","hoverIcon","isEventMode","selectMapMode","mode","setMapMode","MAP_MODES","neutral","ThemeLayerButton","selectMapTheme","setMapTheme","MAP_THEMES","normal","themeButtons","ThemeStandard","MAP_BUTTON_THEME","availableInRaster","simple","ThemeSimple","nature","ThemeNature","satellite","ThemeSatellite","dark","ThemeDark","modeButtons","MAP_BUTTON_MODE","traffic","zfe","bicycle","tc","useMapThemeButtons","useMapModeButtons","activeMapEvents","selectActiveMapEvents","buttons","setButtons","splice","Buttons","isOpened","isClosing","closeModes","isVecto","hdTooltipDisplayed","setHdTooltip","useTooltip","switchHdTooltip","switchHighDefMap","switchMapType","TAG_CLICK_TOGGLE_HD_MAP","CLICK_TAG","XTC_CARTE_HD_OFF","informationImg","HdTooltip","selectShouldDisplayMapTools","LayersButtons","display","setDisplay","showUI","hideUI","onOpenClick","hideUiMapTooSlowTooltip","borderBottomRightRadius","borderBottomLeftRadius","layers","RasterMap","useLayersManager","layersDefaultVisibility","setLayersDefaultVisibility","mapMode","mapTheme","setLayoutProperty","isRetina","visibilities","layer","layout","visibility","forEach","match","RegExp","execRequestZoom","requestZoom","setTouchTimeout","clearTouchTimeout","isTouchTimeoutPending","zoomTo","z","duration","ceil","MAP_RASTER_ZOOM_MAX","getZoomOffset","_event$originalEvent","_event$originalEvent2","getMapActiveDimensions","centerX","centerY","layerX","layerY","handleInitialZoom","handleWheel","delta","MAP_ZOOM_STEP","handleDblClick","shiftKey","around","handleTouch","methodName","originalMethod","_len","Array","_key","apply","fixZoomMethods","scrollZoom","disable","useIntegerZoom","SOURCE_ID_AREA","SOURCE_ID_LIMIT","LAYER_AREA_ID","LAYER_LIMIT_ID","CONTOUR_COLOR","createGeoJSON","features","properties","reverse","shape","useMemo","reverseShape","isMapReady","selectIsMapReady","drawShape","addSource","cleanShape","DEFAULT_COPYRIGHT","Copyrights","copyrights","setCopyrights","mapEventAttached","getCopyright","uniq","queryRenderedFeatures","feature","includes","flatMap","parse","err","GeolocButton","statusFromButton","setStatusFromButton","isFollowStatus","isBlockStatus","GEOLOC_STATUS_BLOCKED","isFetchStatus","GEOLOC_STATUS_FETCH_ACTIVE","GEOLOC_STATUS_FETCH_FOLLOW","TAG_SEARCH_GEOLOCATION","newStatus","GEOLOC_STATUS_BUTTON_WORKFLOW","GEOLOC_STATUS_DISABLED","mapMove","mappyLogoFilled","Logo","OutdoorButton","statusIsPrompt","execHideOutdoor","hideOutdoor","TAG_UPI_IMMERSIVE","personArrowSurrounded","personFallingArrowSurrounded","Scale","scaleRef","addControl","MapLibreScaleControl","unit","removeControl","selectShouldDisplayToggleFullScreenGeButton","ToggleFullScreenGeButton","TAG_CLICK_TOGGLE_FULLSCREEN","ReduireDesktop","ToggleFullscreenPeButton","innerArrows","intervalRef","lastUpdate","setLastUpdate","ONE_MINUTE_MS","date","mins","getMinutes","hours","getHours","pad","formatHourFromDate","ZoomButton","otherProps","ZoomInButton","ZoomOutButton","ZoomButtons","zoomFromStore","setZoom","updateZoom","selectMapTooSlowTooltip","MapTooSlowTooltip","closeTooltip","PUB_MAP_POP_IN_MAP_TOO_SLOW","VectorMap","useClickMyMapLayers","isFrenchSite","handleClick","rubricId","TAG_CLICK_MY_MAP","navigateToPoi","mappy_poi_id","mappy_context_rubric","_layer$layout","LAYER_ID_CMM","_layer$layout2","useMapPointerHandler","quizGuessInProgress","selectQuizGuessInProgress","mapEventsKeys","getPolylinesOrClickableLayersAroundPointer","getBBoxAroundPointer","_feature$layer","layerId","LAYER_ID_POLYLINE","cmm","isMapEvent","handleMouseOver","shouldDisplayPointer","useClickMapEventsHandler","exectSetPopin","setMapEventPopin","shouldDisplayMapEventPopin","_e$features","mapEvent","selectShouldDisplayMapLayersButton","pageIsQuiz","selectIsQuizPage","MapProvider","GeolocMarker","Geolocation","TrafficLegend","ContextMenu","MapAddressContour","TEST_MODE","hash","DELAY_BETWEEN_CHECKS","ONE_WEEK_MS","withOnlyBrowser","AskForUpdate","version","setVersion","isSameVersion","translate","loadVersion","newVersion","fetchVersion","serviceUrl","WEB_VERSION","request","get","silent","intervalId","reload","Map","StaticMap","staticMap","DynamicMap","deps","imgStyle","backgroundSize","IconMarker","insideSvgSize","background","RubricMarker","fill","HTMLMarker","html","isCurrent","anchorPosition","dragOptions","markerElementRef","mapLibreMarkerRef","isDraggable","onDragEnd","_props$onClick","stopPropagation","_props$onSelect","onUnselect","_props$onUnselect","handleEvents","method","_mapLibreMarkerRef$cu","getElement","mapMarker","hasTouchSupport","attachEvents","unattachEvents","buildMarker","firstChild","draggable","renderMarkerType","ImageMarker","HTML_MARKER","itemClassName","iconClassName","catColorString","buildForceColorFullString","whiteColorString","execNavigateToSmrByApp","navigateToPoisOnRouteByApp","execNavigateToSearchByApp","navigateToSearchByApp","onApplicationClick","logoWrapper","selectCategoriesItemById","isMenuCategoriesPEAvailable","getState","onTap","shouldHide","MenuSubCategoriesPE","labelStyle","iconStyle","borderColor","hexToRgb","hexToCssFilter","buildStyleAttributes","getSvgIconUrl","__SVG_TIMESTAMP__","execNavigateToSmrBySubCategory","navigateToPoisOnRouteBySubcategory","execNavigateToSearchBySubcategory","navigateToSearchBySubcategory","subcategoryIcon","setPublisherTagTimeout","clearPublisherTagTimeout","PUB_AFFICHAGE_BARRECATEGORIE","ROUTE_SEO_ITINERARY","ROUTE_SEO_ITINERARY_MODE","ROUTE_HOME","ROUTE_SEO_CITY_ACTIVITY","ROUTE_ADDRESS_HOME","ROUTE_SEO_ADDRESS","ROUTE_TRAFFIC_CITY","ROUTE_BICYCLE_CITY","ROUTE_SEO_DIRECTORY_CITY_ACTIVITY","ROUTE_SEO_DIRECTORY_CITY_OVM_POIS","ROUTE_ZFE_CITY","ROUTE_RESTRICTION_CITY","ROUTE_ITINERARY_HP_BY_MODE","ROUTE_TRAFFIC_HOME","ROUTE_BICYCLE_HOME","ROUTE_ZFE_HOME","ROUTE_RESTRICTION_HOME","ROUTE_SEO_COUNTRY","ROUTE_SEO_DEPARTMENT","selectFirstAddress","selectSelectedGeoentity","firstAddress","selectedGeoentity","hpLinkLabel","ROUTE_SEO_DIRECTORY_CITY_POIS","ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY","zip","projectDistrictZipcodeToWholeCityZipcode","postcode","linksLabel","ROUTE_BICYCLE_DEPARTMENT","ROUTE_BICYCLE_REGION","ROUTE_DEPARTMENT_HOME","ROUTE_REGION_HOME","ROUTE_SEO_DIRECTORY_CITY","ROUTE_SEO_DIRECTORY_ITINERARY","ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE","ROUTE_SEO_SEARCH_BY_APP","ROUTE_SEO_CITY_APP","ROUTE_TRAFFIC_DEPARTMENT","ROUTE_TRAFFIC_REGION","ROUTE_RESTRICTION_DEPARTMENT","ROUTE_RESTRICTION_REGION","ROUTE_SEO_SEARCH_BY_RUBRIC","ROUTE_ZFE_DEPARTMENT","ROUTE_ZFE_REGION","ROUTE_ITINERARY_COMPUTING","ROUTE_ITINERARY_COMPUTING_BY_MODE","ROUTE_ITINERARY_RESULTS_BY_PROVIDER","ROUTE_ITINERARY_RESULTS_BY_ROUTE","ROUTE_ITINERARY_EXPENSE_REPORT","ROUTE_ITINERARY_ROADBOOK","KEYS","suggestionsFavorites","idxStartAt","selectedId","updateSelectedId","isInputValueEmpty","selectIsSuggestInputValueEmpty","isConnected","isUserAccountAvailable","hasFavoriteSuggests","SuggestContentList","suggestions","suggestionsSearchHistory","hasSearchHistorySuggests","suggestionsService","onSuggestCleanHistory","resetSearchHistory","hasSuggests","positionComponent","selectAllSuggestions","setSelectedId","timestamp","setTimestamp","searchHistory","hasServiceSuggests","service","stateRef","suggestsRef","errorRef","selectedIdRef","timestampRef","incentiveTagClickBuilder","TAG_SUGGEST","onIncentiveClick","useIncentiveClick","handleKeyboardEvent","currentSelectedId","currentTimestamp","newSelectedId","newTimestamp","suggestsSize","isKeyDown","isKeyUp","isKeyEnter","hasSpeedScrollLimitReached","SuggestFavoritesContent","SuggestSearchHistoryContent","SuggestServiceContent","SuggestClearHistory","SuggestContentError","BrandItemContent","brandIconUrl","firstLabel","brandLogo","SuggestItem_text","oneLabel","SuggestItem_mainLabel","GenericContent","_suggest$subtype","otherLabels","subtype","iconUrls","SuggestItem_icon","SuggestItem_secondaryLabel","EventContent","_suggest$subtype2","_address_components$p","_address_components$t","address_components","postcodes","town","otherName","other_name","SuggestItem_eventLabel","SuggestItemContent","isEventSuggest","store_chain","_suggest$subtype3","SUGGEST_CLICK","POI_TYPE","POI_POSITION","SuggestItem_link","onMouseEnter","index","SuggestItem","incentive","lazyLoading","HEADER_DEFAULT_HEIGHT_PE","getIsModalDisplayedSelector","displayUiModal","hideUiModal","DEFAULT_DELAY_BEFORE_LAUNCH","STATUS_READY","setStatus","useEffectExceptMount","initialMount","extractRGB","hex","parseInt","componentToHex","c","Color","g","b","set","toRgb","toHex","rgbToHex","clamp","hueRotate","angle","cos","multiply","grayscale","sepia","saturate","matrix","newR","newG","newB","brightness","linear","contrast","slope","intercept","invert","hsl","l","h","Solver","targetHSL","reusedColor","solve","result","solveNarrow","solveWide","values","loss","raw","a","best","Infinity","i","initial","spsa","wide","A","A1","iters","bestLoss","deltas","highArgs","lowArgs","k","ck","random","lossDiff","ak","fix","slice","filters","colorHSL","abs","fmt","multiplier","attr","extra","WebkitTextFillColor","hexToCssFilterCache","cleanHex","toLowerCase","solver","res","setState","defaultDelay","toRef","launch","isPending","defaultOpen","toggle","handleRouteLoading","onRouteEnter","renderPage","onRouteLeave","routeContext","routeHandlingState","RouteHandlingState","getInstance","prevRoute","avoidFetchData","avoidDispatchingAnyPageAction","avoidReloadOnBackNav","avoidPageTag","processOnRouteLeave","currentOnRouteLeave","avoidRefetchingPageData","currentRouteIsNotPageless","selectIsCurrentHistoryRoutePageless","actionsToDispatch","requestPageAdConfig","deferSendingPageTag","component","previousRoute","noticeNavigationDone","mustFetchItineraryOptions","requestInventory","vehiclesOptions","vehicles","providers","extractDefaultVehiculeOptions","transportModes","transport_modes","extractTransportModes","setDefaultVehicleOptions","fuelPrices","fuel_prices","Object","entries","reduce","acc","entry","extractDefaultFuelPrices","setDefaultFuelPrices","fetchVehiclesOptions","newPreferredOptionsForMode","setPreferredOptionsForMode","REGEX_DATETIME","checkDateTimeQueryParams","dateTimeQueryParam","splitDateTimeFromQueryParams","getCurrentDateISO","time","split","setDateTimeFromQueryParams","setItineraryDate","setItineraryTime","setItineraryTimeOptionsFromQueryParams","query","has","PARAM_ARRIVAL_DATE_TIME","datetimeParam","setItineraryArrivalLater","PARAM_DEPARTURE_DATE_TIME","setItineraryDepartureLater","setAddressFromAmbiguity","SuggestError","response","suggests","brand_icon_url","icon_urls","getImageUrl","assign","isResponseFromLastRequest","requestTime","lastRequestTime","resetSuggestData","requestSuggest","q","limit","focus_bbox","bboxToSearchParameter","convertBboxToWestSouthEastNorthBbox","getServiceParameters","getBIParams","loadSuggestResponse","loadSuggestError","selectSearchHistory","selectSearchState","selectLastTenHistoryEntries","lastTenHistoryEntries","addFromProperty","selectSuggestState","selectSuggestInputValue","selectSuggestError","selectServiceSuggestions","serviceSuggestions","SUGGEST_FROM_VALUES","selectSearchHistorySuggestions","history","normalizedInputValue","normalizeInputValueKeyword","lastSearchHistoryEntries","formatFavoriteForSuggest","formatHomeOrWorkFavoriteForSuggest","selectSuggestFakeFavorites","selectFakeFavorites","fakeFavorites","selectFavoritesFormattedForSuggest","selectFavoritesSuggestions","inputValueKeyword","isLabelMatchingInputValueKeyword","removeDuplicateSuggestions","suggestionsToProcess","suggestionsToCompare","labelsToCompare","normalizeLabel","favoritesSuggestions","searchHistorySuggestions","favoritesSuggestionsWithUuid","selectHomeWorkOrFakeFavorites","all","poi","rubric"],"sourceRoot":""}