{"version":3,"file":"assets/js/chunks/2657.ef5ee78fb49d858750a9.js","mappings":"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","sources":["webpack://web-pwa/./src/domain/UserAccount/Favorites/FavoritesPush.less?9a3a","webpack://web-pwa/./src/domain/seo/FAQ/Faq.jsx","webpack://web-pwa/./src/domain/UserAccount/Favorites/useFavoriteClickHandler.js","webpack://web-pwa/./src/domain/utils/withMemoByProps.js","webpack://web-pwa/./src/domain/map/markers/PoiMarkerHTML.jsx","webpack://web-pwa/./src/domain/map/markers/PoiMarkerHTML.less?fa9c","webpack://web-pwa/./src/domain/map/markers/PoiMarker.jsx","webpack://web-pwa/./src/domain/map/markers/PoisMarkers.jsx","webpack://web-pwa/./src/domain/map/markers/VdeMarkers.jsx","webpack://web-pwa/./src/store/seo/seo-faq.actions.js","webpack://web-pwa/./src/domain/itinerary/seo/TopItineraries.less?bfac","webpack://web-pwa/./src/domain/itinerary/seo/TopItineraries.jsx","webpack://web-pwa/./src/domain/itinerary/seo/ItineraryHPText.jsx","webpack://web-pwa/./src/domain/itinerary/seo/ItineraryHPText.less?b9cf","webpack://web-pwa/./src/domain/UserAccount/Favorites/FavoritesPushHpIti.jsx","webpack://web-pwa/./src/domain/itinerary/ItineraryHomeMainContent.jsx","webpack://web-pwa/./src/domain/itinerary/ItineraryHomeMainContent.less?7145","webpack://web-pwa/./src/domain/itinerary/seo/ItineraryHPMetaManager.jsx","webpack://web-pwa/./src/domain/itinerary/itineraryHP.page.jsx","webpack://web-pwa/./src/domain/advertising/InlineMobileAdBanner.jsx","webpack://web-pwa/./src/domain/advertising/InlineMobileAdBanner.less?d513","webpack://web-pwa/./src/domain/seo/FAQ/FaqContainer.jsx","webpack://web-pwa/./src/domain/seo/FAQ/faq.helpers.jsx","webpack://web-pwa/./src/domain/ui/HTMLTextFromMarkdown.jsx","webpack://web-pwa/./src/domain/ui/HTMLTextFromMarkdown.less?88ed","webpack://web-pwa/./src/domain/seo/FAQ/FaqItem.jsx","webpack://web-pwa/./src/domain/seo/FAQ/FaqItem.less?f19d","webpack://web-pwa/./src/domain/seo/FAQ/Faq.less?4d59","webpack://web-pwa/./src/domain/advertising/VdeBanner.jsx","webpack://web-pwa/./src/domain/advertising/VdeBanner.less?eca9"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"FavoritesPushHp\":\"bvryj\",\"FavoritesPushHpIti\":\"tMkA3\",\"FavoritesPushTitle\":\"js2m7\"};","import FaqContainer from './FaqContainer'\nimport s from './Faq.less'\nimport FaqItem from './FaqItem'\nimport React from 'react'\nimport { insertLinkInText } from './faq.helpers'\nimport { replaceKeysInString } from '../../../utils/string'\nimport { useSelector } from 'react-redux'\nimport { selectCurrentHistoryFullRoute } from '../../../store/history/history.selectors'\nimport { selectSeoFaqData } from '../../../store/seo/seo.selectors'\nimport useErrorBoundaryCallback from '../../utils/useErrorBoundaryCallback'\n\nconst Faq = ({ faqParams = {}, impressionDataTag, clickDataTag, noTitle = false }) => {\n  const currentRouteURL = useSelector(selectCurrentHistoryFullRoute)\n  const { title, text, qa } = useSelector(selectSeoFaqData)\n\n  const insertFaqParams = useErrorBoundaryCallback(text => replaceKeysInString(text, faqParams), [faqParams])\n\n  if (!qa) return <></>\n\n  return (\n    <FaqContainer impressionDataTag={impressionDataTag}>\n      {title && !noTitle && <h2 className={s.title}>{insertFaqParams(title)}</h2>}\n      {text && <div className={s.text}>{insertFaqParams(text)}</div>}\n      {qa.map(({ question, answer }, index) => {\n        const computedAnswer = insertLinkInText({\n          txt: insertFaqParams(answer),\n          currentRouteURL\n        })\n\n        return (\n          <FaqItem\n            key={index}\n            question={insertFaqParams(question)}\n            answer={computedAnswer}\n            clickDataTag={clickDataTag}\n          />\n        )\n      })}\n    </FaqContainer>\n  )\n}\n\nexport default Faq\n","import { useCallback } from 'react'\nimport { selectIsUserConnected } from '../../../store/userAccount/userAccount.selectors'\nimport { useSelector } from 'react-redux'\nimport { TAG_HOME_WORK } from '../../analytics/analytics.tagids.constants'\n\nconst useFavoritePushTagBuilder = () => {\n  const isUserConnected = useSelector(selectIsUserConnected)\n\n  const favoritePushTabBuilder = useCallback(\n    suggest => {\n      const { type, incentive } = suggest\n      return { type: TAG_HOME_WORK, tagInfo: { type, isFavoriteFilled: !incentive, isUserConnected } }\n    },\n    [isUserConnected]\n  )\n\n  return { favoritePushTabBuilder }\n}\n\nexport default useFavoritePushTagBuilder\n","import React from 'react'\nimport { getPropertyByString } from '../../utils/object'\n\nconst withMemoByProps = (Component, propsToWatch) =>\n  React.memo(Component, (props, nextProps) => {\n    return propsToWatch.every(name => getPropertyByString(props, name) === getPropertyByString(nextProps, name))\n  })\n\nexport default withMemoByProps\n","import classNames from 'classnames'\nimport React from 'react'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './PoiMarkerHTML.less'\n\nconst PoiMarkerHTML = ({ isCurrent, icon, color, src, price, priceColor, visited }) => (\n  <div className={classNames(s.root, isCurrent && s.active, visited && s.visited)}>\n    <div className={s.tip} />\n    <div className={s.content}>\n      {icon && (\n        <div className={s.icon} style={{ backgroundColor: color }}>\n          <SVGIcon icon={icon} />\n        </div>\n      )}\n      {src && (\n        <div className={s.image}>\n          <img src={src} />\n        </div>\n      )}\n      {price && (\n        <div className={s.price} style={{ backgroundColor: priceColor }}>\n          <span>{price}</span>\n        </div>\n      )}\n    </div>\n  </div>\n)\n\nexport default PoiMarkerHTML\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"FKpjJ\",\"active\":\"vWfNv\",\"visited\":\"XZKYY\",\"tip\":\"jfHf7\",\"content\":\"fpjQq\",\"icon\":\"xcFqp\",\"image\":\"BFCcg\",\"price\":\"YKvja\"};","import React from 'react'\nimport { getPoiRubricId } from '../../../store/geoentity/geoentity.accessors'\nimport useErrorBoundaryCallback from '../../utils/useErrorBoundaryCallback'\nimport useEventCallback from '../../utils/useEventCallback'\nimport withMemoByProps from '../../utils/withMemoByProps'\nimport Marker from './Marker'\nimport PoiMarkerHTML from './PoiMarkerHTML'\n\nconst PoiMarker = ({ id, additionalInfo, isCurrent, navigateToPoi, focusPoi, unfocusPoi, vde, ...marker }) => {\n  const rubricId = getPoiRubricId(marker)\n\n  const onSelect = useErrorBoundaryCallback(() => {\n    focusPoi(id)\n  }, [focusPoi])\n\n  const onUnselect = useErrorBoundaryCallback(() => {\n    unfocusPoi(id)\n  }, [unfocusPoi])\n\n  const onClick = useEventCallback(() => {\n    navigateToPoi({ id, additionalInfo, rubricId, vde })\n  }, [navigateToPoi])\n\n  return (\n    <Marker isCurrent={isCurrent} onSelect={onSelect} onUnselect={onUnselect} onClick={onClick} {...marker}>\n      <PoiMarkerHTML isCurrent={isCurrent} {...marker} />\n    </Marker>\n  )\n}\n\nexport default withMemoByProps(PoiMarker, [\n  'isCurrent',\n  'additionalInfo.fuels.length',\n  'price',\n  'priceColor',\n  'rubric.id',\n  'zIndex',\n])\n","import React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { selectCurrentFuelColor, selectCurrentFuelFilterId } from '../../../store/geoentity/fuels.selectors'\nimport { focusGeoentity } from '../../../store/geoentity/geoentity.actions'\nimport {\n  getMarkerMainInformation,\n  getPoiPriceDataForMarker,\n  poiZIndexWeightCompare\n} from '../../../store/geoentity/geoentity.helpers'\nimport {\n  selectCurrentGeoentityId,\n  selectFocusedPoiId,\n  selectGeoentities,\n  selectVdeGeoentities, selectVisitedPoiIds\n} from '../../../store/geoentity/geoentity.selectors'\nimport { navigateToGeoentity } from '../../../store/history/history.actions'\nimport useConfigureAndSendTag from '../../analytics/useConfigureAndSendTag'\nimport { useAction } from '../../utils/react-redux'\nimport { withMapInitialized } from '../map.utils'\nimport PoiMarker from './PoiMarker'\n\nimport { requestUnfocusGeoentity } from '../../../store/geoentity/geoentitySlice'\nimport { TAG_CLICK_POI } from '../../analytics/analytics.tagids.constants'\n\nconst usePoisDataForMarkers = vde => {\n  const pois = useSelector(vde ? selectVdeGeoentities : selectGeoentities)\n  const fuelId = useSelector(selectCurrentFuelFilterId)\n  const fuelColor = useSelector(selectCurrentFuelColor)\n  const currentPoiId = useSelector(selectCurrentGeoentityId)\n  const focusedPoiId = useSelector(selectFocusedPoiId)\n  const visitedPoiIds = useSelector(selectVisitedPoiIds)\n\n  const poisCount = pois.length\n  const getZIndex = ({ idx, poi }) => {\n    const { isCurrent, isFocus } = poi\n    if (isFocus) return poisCount + 2\n    if (isCurrent) return poisCount + 1\n    return poisCount - idx\n  }\n\n  return pois\n    .map(poi => {\n      const isCurrent = poi.id === currentPoiId\n      const isFocus = poi.id === focusedPoiId\n      const priceData = getPoiPriceDataForMarker(poi, fuelId, fuelColor)\n\n      return {\n        ...poi,\n        ...getMarkerMainInformation({ poi, price: priceData?.price }),\n        ...priceData,\n        isCurrent: isCurrent || isFocus,\n        visited: visitedPoiIds.includes(poi.id)\n      }\n    })\n    .sort(poiZIndexWeightCompare)\n    .map((poi, idx) => ({\n      ...poi,\n      zIndex: getZIndex({ poi, idx })\n    }))\n}\n\n// webpack:BrowserOnly\nconst PoisMarkers = ({ vde }) => {\n  const dispatch = useDispatch()\n  const markers = usePoisDataForMarkers(vde)\n  const configureAndSendTag = useConfigureAndSendTag()\n  const execNavigateToGeoentity = useAction(navigateToGeoentity)\n  const execFocusGeoentity = useAction(focusGeoentity)\n\n  const navigateToPoi = ({ id, additionalInfo, rubricId }) => {\n    configureAndSendTag({\n      type: TAG_CLICK_POI,\n      tagInfo: {\n        affichage: 'carte',\n        appId: additionalInfo?.appId,\n        catId: rubricId\n      }\n    })\n    execNavigateToGeoentity({ id, scrollTop: true })\n  }\n\n  return (\n    <>\n      {(markers || []).map(marker => {\n        return (\n          <PoiMarker\n            key={marker.id}\n            navigateToPoi={navigateToPoi}\n            focusPoi={execFocusGeoentity}\n            unfocusPoi={() => dispatch(requestUnfocusGeoentity())}\n            {...marker}\n          />\n        )\n      })}\n    </>\n  )\n}\n\nexport default withMapInitialized(PoisMarkers)\n","import React from 'react'\nimport PoisMarkers from './PoisMarkers'\n\nconst VdeMarkers = () => <PoisMarkers vde />\n\nexport default VdeMarkers\n","import {\n  fetchCityActivityFaq,\n  fetchItineraryHPFaq,\n  fetchItineraryLandingPageFaq,\n  fetchLayerFaq\n} from '../../dataSource/seo/seo.request'\nimport { setSeoFaqData } from './seoSlice'\n\nexport const loadSeoItineraryHPFaq = mode => dispatch =>\n  fetchItineraryHPFaq({ mode }).then(response => dispatch(setSeoFaqData(response)))\n\nexport const loadSeoCityActivityFaq = rubricId => dispatch =>\n  fetchCityActivityFaq({ rubricId }).then(response => dispatch(setSeoFaqData(response)))\n\nexport const loadSeoLayerFaq = pageKey => dispatch =>\n  fetchLayerFaq({ pageKey }).then(response => dispatch(setSeoFaqData(response)))\n\nexport const loadSeoItineraryLandingPageFaq = mode => dispatch =>\n  fetchItineraryLandingPageFaq({ mode }).then(response => dispatch(setSeoFaqData(response)))\n","// extracted by mini-css-extract-plugin\nexport default {\"textSeoMappingTitle\":\"Ajzwh\",\"itineraryItem\":\"MLAAe\",\"itineraryItemLink\":\"wqZuo\"};","import React from 'react'\nimport s from './TopItineraries.less'\nimport { localeCountryIsFrance } from '../../i18n'\nimport { useSelector } from 'react-redux'\nimport { selectLocale } from '../../../store/navigation/navigation.selectors'\nimport { selectSeoItineraryData } from '../../../store/seo/seo.selectors'\nimport { selectSeoCurrentMode } from '../../../store/itinerary/itinerary.selectors'\nimport { withEmptyFallbackErrorBoundary } from '../../error/EmptyFallbackErrorBoundary'\nimport { translate } from '../../i18n/T'\nimport { MULTIPATH_MODE_CAR } from '../../../store/itinerary/itinerary.constants'\n\nconst TopItineraries = () => {\n  const locale = useSelector(selectLocale)\n  const seoCurrentMode = useSelector(selectSeoCurrentMode)\n  const isNotCar = seoCurrentMode && seoCurrentMode !== MULTIPATH_MODE_CAR\n  const modeLabel = isNotCar ? translate(locale)(`itinerary.modes.${seoCurrentMode}`) : ''\n  const { links, mappingTitle } = useSelector(selectSeoItineraryData)\n\n  if (!localeCountryIsFrance(locale) || !mappingTitle) return <></>\n\n  if (!links || links.length === 0) return\n\n  return (\n    <>\n      <h2 className={s.textSeoMappingTitle}>{mappingTitle}</h2>\n      <ul>\n        {links.map((item, idx) => (\n          <li key={idx} className={s.itineraryItem}>\n            <a\n              className={s.itineraryItemLink}\n              href={item.url}\n            >{`Itinéraire ${modeLabel} ${item.fromName} - ${item.toName}`}</a>\n          </li>\n        ))}\n      </ul>\n    </>\n  )\n}\n\nexport default withEmptyFallbackErrorBoundary(TopItineraries)\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectSeoItineraryData } from '../../../store/seo/seo.selectors'\nimport TopItineraries from './TopItineraries'\nimport s from './ItineraryHPText.less'\n\nconst ItineraryMainContent = () => {\n  const { title, description } = useSelector(selectSeoItineraryData)\n\n  return (\n    <div className={s.textSeo}>\n      <h1 className={s.textSeoTitle}>{title}</h1>\n      <h2>{description}</h2>\n      <TopItineraries />\n    </div>\n  )\n}\n\nexport default ItineraryMainContent\n","// extracted by mini-css-extract-plugin\nexport default {\"textSeo\":\"xo2B8\",\"textSeoTitle\":\"zfqfM\"};","import React, { useCallback, useState } from 'react'\nimport useConfigureAndSendTag from '../../analytics/useConfigureAndSendTag'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { setStepFromSuggestion } from '../../../store/itinerary/itinerary.actions'\nimport { setStepIdx } from '../../../store/itinerary/itinerarySlice'\nimport { selectHomeWorkOrFakeFavorites } from '../../../store/suggest/suggest.selectors'\nimport { removeHtmlEmSpanAndITags, removeHtmlEmTags } from '../../../utils/string'\nimport T from '../../i18n/T'\nimport { withFrenchSite } from '../../i18n/i18nSite'\nimport { selectIsDepartureFilled, selectStepsLength } from '../../itinerary/steps/steps.selectors'\nimport SuggestContentList from '../../suggest/SuggestContentList'\nimport useIncentiveClick from '../../suggest/useIncentiveClick'\nimport { useAction } from '../../utils/react-redux'\nimport s from './FavoritesPush.less'\nimport useFavoritePushTagBuilder from './useFavoriteClickHandler'\n\nconst FavoritesPushHpIti = () => {\n  const homeWorkFavorites = useSelector(selectHomeWorkOrFakeFavorites)\n  const [selectedId, setSelectedId] = useState(null)\n\n  const updateSelectedId = idx => {\n    setSelectedId(idx)\n  }\n\n  const isDepartureFilled = useSelector(selectIsDepartureFilled)\n  const stepLength = useSelector(selectStepsLength)\n\n  const execSetStepFromSuggestion = useAction(setStepFromSuggestion)\n  const dispatch = useDispatch()\n  const configureAndSendTag = useConfigureAndSendTag()\n\n  const idx = isDepartureFilled ? stepLength - 1 : 0\n\n  const { favoritePushTabBuilder } = useFavoritePushTagBuilder()\n\n  const onClick = useCallback(\n    suggest => {\n      configureAndSendTag(favoritePushTabBuilder(suggest))\n\n      const { labels = [], address } = suggest\n      const label = removeHtmlEmTags(address || labels.join(' '))\n      const split_label = labels.map(removeHtmlEmSpanAndITags)\n\n      dispatch(setStepIdx(idx))\n      execSetStepFromSuggestion({\n        suggest: {\n          ...suggest,\n          label,\n          split_label\n        }\n      })\n    },\n    [favoritePushTabBuilder, idx]\n  )\n\n  const { onIncentiveClick } = useIncentiveClick({ onClick, incentiveTagClickBuilder: favoritePushTabBuilder })\n\n  return (\n    <div className={s.FavoritesPushHpIti}>\n      <div className={s.FavoritesPushTitle}>\n        <span>\n          <T id={isDepartureFilled ? 'suggest.favorites.itinerary.arrival' : 'suggest.favorites.itinerary.departure'} />\n        </span>\n      </div>\n      <SuggestContentList\n        suggestions={homeWorkFavorites}\n        onClick={onIncentiveClick}\n        selectedId={selectedId}\n        updateSelectedId={updateSelectedId}\n      />\n    </div>\n  )\n}\nexport default withFrenchSite(FavoritesPushHpIti)\n","import React from 'react'\nimport Footer from '../footer/Footer'\nimport s from './ItineraryHomeMainContent.less'\nimport ItineraryMainContent from './seo/ItineraryHPText'\nimport { AdMobileBannerItineraryHP } from '../advertising/InlineMobileAdBanner'\nimport { AdDesktopItineraryHP } from '../advertising/InlineDesktopAdBanner'\nimport Faq from '../seo/FAQ/Faq'\nimport AutoPromoGE from '../autopromo/AutoPromoGE'\nimport FavoritesPushHpIti from '../UserAccount/Favorites/FavoritesPushHpIti'\n\nconst ItineraryHomeMainContent = () => (\n  <>\n    <div className={s.ItineraryHomeMainContent}>\n      <FavoritesPushHpIti />\n      <div>\n        <AdDesktopItineraryHP />\n        <AdMobileBannerItineraryHP />\n      </div>\n      <AutoPromoGE />\n      <ItineraryMainContent />\n      <Faq />\n    </div>\n    <Footer />\n  </>\n)\n\nexport default ItineraryHomeMainContent\n","// extracted by mini-css-extract-plugin\nexport default {\"ItineraryHomeMainContent\":\"TGhbG\"};","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport mapping from './ItineraryHPMetaManager.json'\nimport { selectSeoCurrentMode } from '../../../store/itinerary/itinerary.selectors.js'\nimport { removeTrailingSlash } from '../../utils/url.js'\nimport MetaTags from '../../seo/MetaTags'\nimport { selectLocale } from '../../../store/navigation/navigation.selectors'\nimport {\n  MULTIPATH_MODES_TO_SEO_MODES,\n  SEO_MODE_BUS,\n  SEO_MODE_CARPOOL,\n  SEO_MODE_MOTORBIKE,\n  SEO_MODE_PLANE,\n  SEO_MODE_SCOOTER,\n  SEO_MODE_TC,\n  SEO_MODE_TRAIN\n} from '../../../store/itinerary/itinerary.constants'\n\nconst getItineraryPath = seoCurrentMode => {\n  const urlFragment = MULTIPATH_MODES_TO_SEO_MODES[seoCurrentMode]\n  const parts = ['itineraire']\n  if (urlFragment !== '') parts.push(urlFragment)\n  return '/' + parts.join('/')\n}\n\nexport const getMeta = (locale, seoCurrentMode) => {\n  const { title, description } = mapping?.[locale]?.[seoCurrentMode] ?? {}\n  const alternateLinkPath = removeTrailingSlash(getItineraryPath(seoCurrentMode))\n  return {\n    title,\n    description,\n    alternateLinkPath,\n    shouldIgnoreEn: Boolean(\n      [\n        SEO_MODE_TC,\n        SEO_MODE_PLANE,\n        SEO_MODE_BUS,\n        SEO_MODE_CARPOOL,\n        SEO_MODE_MOTORBIKE,\n        SEO_MODE_TRAIN,\n        SEO_MODE_SCOOTER\n      ].find(mode => alternateLinkPath.includes(mode))\n    )\n  }\n}\n\nexport const ItineraryHPMetaManager = () => {\n  const seoCurrentMode = useSelector(selectSeoCurrentMode)\n  const locale = useSelector(selectLocale)\n\n  return <MetaTags {...getMeta(locale, seoCurrentMode)} />\n}\n\nexport default ItineraryHPMetaManager\n","import React from 'react'\nimport AddressSearchDialogContent from '../../routes/address/AddressSearchDialogContent'\nimport { PAGE_CLASSES } from '../../routes/pageClasses.constants'\nimport PushNotificationPopup from '../PushNotification/PushNotificationPopup'\nimport { VdeBanner } from '../advertising/VdeBanner'\nimport Page from '../genericComponents/Page'\nimport Header from '../header/Header'\nimport ItineraryOptionsDialog from '../itineraryOptions/ItineraryOptionsDialog'\nimport ItineraryTimeOptionsDialog from '../itineraryOptions/ItineraryTimeOptionsDialog'\nimport Main from '../main/Main'\nimport Map from '../map/Map'\nimport VdeMarkers from '../map/markers/VdeMarkers'\nimport SearchDialog from '../search/SearchDialog'\nimport ItinerarySuggestContent from '../suggest/ItinerarySuggestContent'\nimport ItineraryHeaderForm from './ItineraryHeaderForm'\nimport ItineraryHomeMainContent from './ItineraryHomeMainContent'\nimport ItinerarySubHeader from './ItinerarySubHeader'\nimport ItineraryHPMetaManager from './seo/ItineraryHPMetaManager'\nimport StepsMarkers from './steps/StepsMarkers'\n\nexport const renderPage = () => {\n  const { ItineraryHomePage, withSubHeader, withToaster } = PAGE_CLASSES\n\n  return (\n    <Page cssClasses={[ItineraryHomePage, withSubHeader, withToaster]} key=\"Page\">\n      <ItineraryHPMetaManager />\n      <Map key=\"Map\">\n        <StepsMarkers />\n        <VdeMarkers />\n        <VdeBanner />\n      </Map>\n      <Header key=\"Header\" subHeader={<ItinerarySubHeader key=\"ItinerarySubHeader\" />}>\n        <ItineraryHeaderForm key=\"ItineraryHeaderForm\" />\n      </Header>\n      <SearchDialog key=\"SearchDialog\" suggestContent={<ItinerarySuggestContent />}>\n        <AddressSearchDialogContent key=\"AddressSearchDialogContent\" />\n      </SearchDialog>\n      <PushNotificationPopup />\n      <Main key=\"Main\">\n        <ItineraryHomeMainContent id=\"ItineraryHomeMainContent\" />\n      </Main>\n      <ItineraryOptionsDialog key=\"ItineraryOptionsDialog\" />\n      <ItineraryTimeOptionsDialog key=\"ItineraryTimeOptionsDialog\" />\n    </Page>\n  )\n}\n","import classNames from 'classnames'\nimport React from 'react'\nimport { selectAddressKeywords, selectGeoentityAdsKeywords, selectItineraryKeywords } from '../../store/ad/ad.selectors'\nimport { isPE } from '../Device'\nimport AdLoader from './AdLoader'\nimport s from './InlineMobileAdBanner.less'\n\nconst InlineMobileAdBanner = ({ adName, keywordsSelector, className, placeHolderHeight = 50 }) => {\n  if (__SERVER__ || (__BROWSER__ && isPE())) {\n    return (\n      <div className={classNames(s.container, className)}>\n        <AdLoader\n          adName={adName}\n          className={s.content}\n          keywordsSelector={keywordsSelector}\n          placeHolderHeight={placeHolderHeight}\n        />\n      </div>\n    )\n  }\n  return <></>\n}\n\nexport const AdMobileBannerAddress = () => (\n  <InlineMobileAdBanner adName=\"address_banner_mobile\" keywordsSelector={selectAddressKeywords} />\n)\n\nexport const AdMobileBannerGeoentity = () => (\n  <InlineMobileAdBanner adName=\"poi_banner_mobile\" keywordsSelector={selectGeoentityAdsKeywords} />\n)\n\nexport const AdMobileBannerItineraryHP = () => <InlineMobileAdBanner adName=\"hp_itinerary_banner_mobile\" />\n\nexport const AdMobileBannerRoadbook = () => (\n  <InlineMobileAdBanner adName=\"roadbook_banner_mobile\" keywordsSelector={selectItineraryKeywords} />\n)\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"cPDxH\",\"content\":\"iwsnL\"};","import React from 'react'\nimport classNames from 'classnames'\nimport s from './Faq.less'\n\nconst FaqContainer = ({ children, className, impressionDataTag }) => (\n  <div\n    itemScope\n    itemType=\"https://schema.org/FAQPage\"\n    className={classNames(s.root, className, impressionDataTag && 'pub-impression-event')}\n    data-tag={impressionDataTag}\n  >\n    {children}\n  </div>\n)\n\nexport default FaqContainer\n","import React from 'react'\n\nexport const replaceCityActivityPlaceHoldersInFaq = ({ txt, city, zip }) => {\n  return txt\n    .split('[ville]')\n    .join(city)\n    .split('[code-postal]')\n    .join(zip)\n}\nexport const replaceItineraryPlaceHoldersInFaq = ({ txt, cityA, cityB }) => {\n  return txt\n    .split('[villeA]')\n    .join(cityA)\n    .split('[villeB]')\n    .join(cityB)\n}\n\nexport const replaceCityActivityPlaceHoldersAndLinksInFaq = ({ txt, city, zip, currentRouteURL }) => {\n  return insertLinkInText({ txt: replaceCityActivityPlaceHoldersInFaq({ txt, city, zip }), currentRouteURL })\n}\n\nexport const replaceItineraryPlaceHoldersAndLinksInFaq = ({ txt, cityA, cityB, currentRouteURL }) => {\n  return insertLinkInText({ txt: replaceItineraryPlaceHoldersInFaq({ txt, cityA, cityB }), currentRouteURL })\n}\n\nexport const insertLinkInText = ({ txt, currentRouteURL }) => {\n  // we use the <a>##link</a> to build the links\n  return txt.split(/<a>(.*?)<\\/a>/).map((part, index) => {\n    return part.includes('##') ? (\n      <a href={currentRouteURL} key={index}>\n        {part.substring(2)}\n      </a>\n    ) : (\n      part\n    )\n  })\n}\n","import React from 'react'\nimport classNames from 'classnames'\n\nimport s from './HTMLTextFromMarkdown.less'\n\nconst HTMLTextFromMarkdown = ({ htmlText, className, as = 'div' }) => {\n  if (!htmlText) return <></>\n\n  const As = as\n\n  return <As className={classNames(s.root, className)} dangerouslySetInnerHTML={{ __html: htmlText.trim() }} />\n}\n\nexport default HTMLTextFromMarkdown\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"ynZ0M\"};","import classNames from 'classnames'\nimport React from 'react'\nimport arrowLeft from '../../genericComponents/assets/arrow-left.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport useToggle from '../../utils/useToggle'\nimport s from './FaqItem.less'\nimport HTMLTextFromMarkdown from '../../ui/HTMLTextFromMarkdown'\n\nconst FaqItem = ({ question, answer, clickDataTag, markdownContent }) => {\n  const [open, onClick] = useToggle()\n\n  return (\n    <details\n      className={classNames(s.details, clickDataTag && 'pub-click-event')}\n      open={open}\n      itemScope\n      itemProp=\"mainEntity\"\n      itemType=\"https://schema.org/Question\"\n      data-tag={clickDataTag}\n    >\n      <summary className={s.summary} onClick={onClick}>\n        <h3 itemProp=\"name\">{question}</h3>\n        <span className={s.chevron}>\n          <SVGIcon url={arrowLeft} />\n        </span>\n      </summary>\n      <div className={s.answer} itemScope itemProp=\"acceptedAnswer\" itemType=\"https://schema.org/Answer\">\n        <div itemProp=\"text\">{markdownContent ? <HTMLTextFromMarkdown htmlText={answer} /> : answer}</div>\n      </div>\n    </details>\n  )\n}\nexport default FaqItem\n","// extracted by mini-css-extract-plugin\nexport default {\"details\":\"p3rIZ\",\"chevron\":\"X7SHf\",\"summary\":\"t1Y9c\",\"answer\":\"OW3h6\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"keg4a\",\"title\":\"pFRW8\",\"text\":\"UDhRx\"};","import classNames from 'classnames'\nimport React, { useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { requestGeoentityVde } from '../../dataSource/geoentity/geoentity.requests'\nimport { closeVde } from '../../store/ad/ad.actions'\nimport { selectBboxForVde, selectPageIdForAdConfig, selectVdeName } from '../../store/ad/ad.selectors'\nimport { selectHasUserConsentedForNativeAdvertising } from '../../store/cmp/cmp.selectors'\nimport { selectIsMapInitialized } from '../../store/map/map.selectors'\nimport { selectIsFrenchSite, selectLocale } from '../../store/navigation/navigation.selectors'\nimport { isGE } from '../Device'\nimport { SPD_PUSH_DISPLAY } from '../analytics/BiTagger'\nimport { TAG_VDE_CLOSE, TAG_VDE_CTA } from '../analytics/analytics.tagids.constants'\nimport TagActionButton from '../genericComponents/TagActionButton'\nimport cross from '../genericComponents/assets/cross.svg'\nimport RectangleActionButton, {\n  COLOR_GREEN_EMPTY,\n  SIZE_SMALL\n} from '../genericComponents/buttons/RectangleActionButton'\nimport SVGIcon from '../svg/SVGIcon'\nimport { convertBboxToWestSouthEastNorthBbox } from '../utils/map'\nimport { useAction, withEverySelectorTruthy } from '../utils/react-redux'\nimport useEventCallback from '../utils/useEventCallback'\nimport { getAdIdByAdName } from './AdConfigService'\nimport AdLoader from './AdLoader'\nimport s from './VdeBanner.less'\nimport { useAdData } from './ad.utils'\nimport { useClickVde, useSendVdeBucTag, useShouldDisplayVde, useVdeLinkAndTags } from './ad.vde.utils'\n\nexport const VdeBannerContent = ({ adName }) => {\n  const pageId = useSelector(selectPageIdForAdConfig)\n  const adId = getAdIdByAdName(adName, pageId)\n  const data = useAdData(adId)\n  const { tagVdeType, app, subcategory, rubric } = useVdeLinkAndTags(adId)\n  const [isDisplayTagSent, setDisplayTagSent] = useState(false)\n  const onClick = useClickVde(adId)\n  const shouldDisplayVde = useShouldDisplayVde(adId)\n  const sendVdeBucTag = useSendVdeBucTag(adId)\n  const execCloseVde = useAction(closeVde)\n\n  useEffect(() => () => execCloseVde(), [])\n\n  const closeVDE = useEventCallback(execCloseVde, [execCloseVde])\n\n  if (!shouldDisplayVde) return <></>\n\n  const {\n    vde: { title, description, buttonLabel, imgUrl }\n  } = data\n\n  const isOnMap = isGE()\n  const tagInfo = {\n    tagVdeType,\n    appId: app,\n    catId: subcategory || rubric\n  }\n\n  if (!isDisplayTagSent) {\n    setDisplayTagSent(true)\n    sendVdeBucTag(SPD_PUSH_DISPLAY)\n  }\n\n  return (\n    <div className={classNames(s.root, isOnMap ? s.onMap : '')}>\n      <TagActionButton type={TAG_VDE_CTA} tagInfo={tagInfo} className={s.linkWrapper} deferClick onClick={onClick}>\n        <div className={s.content}>\n          <div className={s.title}>{title}</div>\n          <div className={s.description}> {description}</div>\n          <div className={s.center}>\n            <RectangleActionButton\n              className={s.button}\n              color={COLOR_GREEN_EMPTY}\n              size={SIZE_SMALL}\n              label={buttonLabel}\n            />\n          </div>\n        </div>\n        {imgUrl && (\n          <div className={s.imageContainer}>\n            <img className={s.img} src={imgUrl} />\n          </div>\n        )}\n      </TagActionButton>\n      {isOnMap && (\n        <TagActionButton\n          type={TAG_VDE_CLOSE}\n          tagInfo={tagInfo}\n          className={s.onMapCloseButton}\n          deferClick\n          onClick={closeVDE}\n        >\n          <SVGIcon url={cross} />\n        </TagActionButton>\n      )}\n    </div>\n  )\n}\n\nexport const VdeBanner = withEverySelectorTruthy(\n  selectIsFrenchSite,\n  selectIsMapInitialized,\n  selectBboxForVde\n)(() => {\n  const adName = useSelector(selectVdeName)\n  const hasUserConsent = useSelector(selectHasUserConsentedForNativeAdvertising)\n  const bbox = useSelector(selectBboxForVde)\n  const [keywords, setKeywords] = useState(null)\n  const locale = useSelector(selectLocale)\n\n  useEffect(() => {\n    const formattedBbox = convertBboxToWestSouthEastNorthBbox(bbox)\n    requestGeoentityVde(formattedBbox, locale).then(({ appIds }) => {\n      setKeywords({ vde: appIds.join(',') })\n    })\n  }, [])\n\n  if (!adName || !hasUserConsent || !keywords) return <></>\n\n  return (\n    <div id={adName}>\n      <AdLoader adName={adName} keywords={keywords} askData={true}>\n        <VdeBannerContent adName={adName} />\n      </AdLoader>\n    </div>\n  )\n})\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"BcXVL\",\"onMap\":\"uOc3_\",\"linkWrapper\":\"SzLKs\",\"content\":\"jNQOH\",\"title\":\"GX_o8\",\"description\":\"rxcnr\",\"center\":\"Akl4S\",\"button\":\"cOh4p\",\"imageContainer\":\"k1mUa\",\"img\":\"qRWnG\",\"onMapCloseButton\":\"kdDi4\"};"],"names":["_ref","faqParams","impressionDataTag","clickDataTag","noTitle","currentRouteURL","useSelector","selectCurrentHistoryFullRoute","title","text","qa","selectSeoFaqData","insertFaqParams","useErrorBoundaryCallback","replaceKeysInString","React","FaqContainer","className","s","map","_ref2","index","question","answer","computedAnswer","insertLinkInText","txt","FaqItem","key","useFavoritePushTagBuilder","isUserConnected","selectIsUserConnected","favoritePushTabBuilder","useCallback","suggest","type","incentive","TAG_HOME_WORK","tagInfo","isFavoriteFilled","Component","propsToWatch","isCurrent","icon","color","src","price","priceColor","visited","classNames","style","backgroundColor","SVGIcon","id","additionalInfo","navigateToPoi","focusPoi","unfocusPoi","vde","marker","rubricId","getPoiRubricId","onSelect","onUnselect","onClick","useEventCallback","Marker","_extends","PoiMarkerHTML","props","nextProps","every","name","getPropertyByString","withMapInitialized","dispatch","useDispatch","markers","pois","selectVdeGeoentities","selectGeoentities","fuelId","selectCurrentFuelFilterId","fuelColor","selectCurrentFuelColor","currentPoiId","selectCurrentGeoentityId","focusedPoiId","selectFocusedPoiId","visitedPoiIds","selectVisitedPoiIds","poisCount","length","getZIndex","idx","poi","isFocus","priceData","getPoiPriceDataForMarker","getMarkerMainInformation","includes","sort","poiZIndexWeightCompare","zIndex","usePoisDataForMarkers","configureAndSendTag","useConfigureAndSendTag","execNavigateToGeoentity","useAction","navigateToGeoentity","execFocusGeoentity","focusGeoentity","_ref3","TAG_CLICK_POI","affichage","appId","catId","scrollTop","PoiMarker","requestUnfocusGeoentity","VdeMarkers","PoisMarkers","loadSeoLayerFaq","pageKey","fetchLayerFaq","then","response","setSeoFaqData","withEmptyFallbackErrorBoundary","TopItineraries","locale","selectLocale","seoCurrentMode","selectSeoCurrentMode","modeLabel","MULTIPATH_MODE_CAR","translate","links","mappingTitle","selectSeoItineraryData","localeCountryIsFrance","item","href","url","fromName","toName","ItineraryMainContent","description","withFrenchSite","FavoritesPushHpIti","homeWorkFavorites","selectHomeWorkOrFakeFavorites","selectedId","setSelectedId","useState","isDepartureFilled","selectIsDepartureFilled","stepLength","selectStepsLength","execSetStepFromSuggestion","setStepFromSuggestion","labels","address","label","removeHtmlEmTags","join","split_label","removeHtmlEmSpanAndITags","setStepIdx","onIncentiveClick","useIncentiveClick","incentiveTagClickBuilder","FavoritesPushTitle","T","SuggestContentList","suggestions","updateSelectedId","ItineraryHomeMainContent","AdDesktopItineraryHP","AdMobileBannerItineraryHP","AutoPromoGE","Faq","Footer","ItineraryHPMetaManager","MetaTags","getMeta","_mapping$locale","mapping","alternateLinkPath","removeTrailingSlash","urlFragment","MULTIPATH_MODES_TO_SEO_MODES","parts","push","getItineraryPath","shouldIgnoreEn","Boolean","SEO_MODE_TC","SEO_MODE_PLANE","SEO_MODE_BUS","SEO_MODE_CARPOOL","SEO_MODE_MOTORBIKE","SEO_MODE_TRAIN","SEO_MODE_SCOOTER","find","mode","renderPage","ItineraryHomePage","withSubHeader","withToaster","PAGE_CLASSES","Page","cssClasses","Map","StepsMarkers","VdeBanner","Header","subHeader","ItinerarySubHeader","ItineraryHeaderForm","SearchDialog","suggestContent","ItinerarySuggestContent","AddressSearchDialogContent","PushNotificationPopup","Main","ItineraryOptionsDialog","ItineraryTimeOptionsDialog","InlineMobileAdBanner","adName","keywordsSelector","placeHolderHeight","isPE","AdLoader","AdMobileBannerAddress","selectAddressKeywords","AdMobileBannerGeoentity","selectGeoentityAdsKeywords","AdMobileBannerRoadbook","selectItineraryKeywords","children","itemScope","itemType","root","_ref5","split","part","substring","htmlText","as","As","dangerouslySetInnerHTML","__html","trim","markdownContent","open","useToggle","itemProp","arrowLeft","HTMLTextFromMarkdown","VdeBannerContent","pageId","selectPageIdForAdConfig","adId","getAdIdByAdName","data","useAdData","tagVdeType","app","subcategory","rubric","useVdeLinkAndTags","isDisplayTagSent","setDisplayTagSent","useClickVde","shouldDisplayVde","useShouldDisplayVde","sendVdeBucTag","useSendVdeBucTag","execCloseVde","closeVde","useEffect","closeVDE","buttonLabel","imgUrl","isOnMap","isGE","SPD_PUSH_DISPLAY","TagActionButton","TAG_VDE_CTA","deferClick","RectangleActionButton","COLOR_GREEN_EMPTY","size","SIZE_SMALL","TAG_VDE_CLOSE","cross","withEverySelectorTruthy","selectIsFrenchSite","selectIsMapInitialized","selectBboxForVde","selectVdeName","hasUserConsent","selectHasUserConsentedForNativeAdvertising","bbox","keywords","setKeywords","formattedBbox","convertBboxToWestSouthEastNorthBbox","requestGeoentityVde","appIds","askData"],"sourceRoot":""}