{"version":3,"file":"assets/js/chunks/6099.bc656ebc0b73923bfdfd.js","mappings":"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","sources":["webpack://web-pwa/./src/domain/search/SearchInputIcon.less?d80b","webpack://web-pwa/./src/domain/search/SearchInputIcon.jsx","webpack://web-pwa/./src/domain/header/QuickSearchInput.jsx","webpack://web-pwa/./src/domain/header/QuickSearchInput.less?9e32","webpack://web-pwa/./src/domain/header/SearchInput.less?f742","webpack://web-pwa/./src/domain/header/SearchInput.jsx","webpack://web-pwa/./src/domain/utils/usePrevious.js","webpack://web-pwa/./src/domain/header/ItineraryButton.jsx","webpack://web-pwa/./src/domain/address/AddressHeaderForm.jsx","webpack://web-pwa/./src/domain/address/AddressHeaderForm.less?9671","webpack://web-pwa/./src/domain/seo/FAQ/FaqContainer.jsx","webpack://web-pwa/./src/domain/seo/MetaTags.jsx","webpack://web-pwa/./src/domain/ui/HTMLTextFromMarkdown.jsx","webpack://web-pwa/./src/domain/ui/HTMLTextFromMarkdown.less?88ed","webpack://web-pwa/./src/domain/seo/footer/common/topSearchLayerPages.js","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/error/PageNotFoundError.js"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"common\":\"XwtJj\",\"icon\":\"ngGSR\"};","import classnames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectGeoentityIconFromRouteOptions } from '../../store/poiassets/poiassets.selectors'\nimport SVGIcon from '../svg/SVGIcon'\nimport s from './SearchInputIcon.less'\n\nfunction SearchInputIcon() {\n  const { iconId, mob_roundImage } = useSelector(selectGeoentityIconFromRouteOptions)\n  if (iconId) return <SVGIcon icon={iconId} className={classnames(s.common, s.icon)} />\n  if (mob_roundImage) return <img src={mob_roundImage} className={classnames(s.common)} />\n  return <></>\n}\n\nexport default SearchInputIcon\n","import React, { useCallback, useRef } from 'react'\nimport s from './QuickSearchInput.less'\n\nconst QuickSearchInput = ({ searchInputRef, onChange }) => {\n  const quickInputRef = useRef()\n\n  const handleChange = useCallback(\n    event => {\n      searchInputRef.current.focus()\n      onChange({ value: event.target.value })\n      quickInputRef.current.value = ''\n    },\n    [searchInputRef, onChange, quickInputRef]\n  )\n  return <input ref={quickInputRef} className={s.root} autoFocus={true} onChange={handleChange} />\n}\n\nexport default QuickSearchInput\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"ofhDU\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"ptu98\",\"transparent\":\"pzs6I\",\"homePageContainer\":\"i7nEr\",\"prefix\":\"PeGRg\",\"field\":\"SLh43\",\"greenPlaceholder\":\"o0B0M\",\"whitePlaceholder\":\"xoOtT\",\"throbber\":\"HB2G0\",\"withIcon\":\"SY57p\",\"btnOk\":\"CN2Sb\"};","import classNames from 'classnames'\nimport React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { ROUTE_SUGGEST } from '../../routes'\nimport { navigateTo } from '../../store/history/history.actions'\nimport { selectCurrentHistoryRoute, selectIsHomePage } from '../../store/history/history.selectors'\nimport { selectHasSearchIconFromRouteOptions } from '../../store/poiassets/poiassets.selectors'\nimport { setSearchTerms } from '../../store/search/searchSlice'\nimport { suggest } from '../../store/suggest/suggest.actions'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { isGE } from '../Device'\nimport Throbber from '../loading/Throbber'\nimport { isPagelessRoute } from '../router/routeUtils'\nimport SearchInputIcon from '../search/SearchInputIcon'\nimport useUIDisplay from '../ui/useUIDisplay'\nimport { useAction } from '../utils/react-redux'\nimport useDebounce from '../utils/useDebounce'\nimport { usePrevious } from '../utils/usePrevious'\nimport QuickSearchInput from './QuickSearchInput'\nimport s from './SearchInput.less'\n\nconst SearchInput = forwardRef((props, ref) => {\n  const {\n    value,\n    loading,\n    onChange,\n    onFocus,\n    suggestFilterType,\n    className,\n    placeholder,\n    idx = 0,\n    prefix,\n    hasGreenPlaceholder = false,\n    navigateToSuggestOnFocus = true,\n    isFirstStepToFill = true,\n    transparent\n  } = props\n\n  const dispatch = useDispatch()\n  const [hasFocus, setFocus] = useState(false)\n  const route = useSelector(selectCurrentHistoryRoute)\n  const hasIcon = useSelector(selectHasSearchIconFromRouteOptions)\n  const prevRoute = usePrevious(route)\n  const execSuggest = useAction(suggest)\n  const execNavigateTo = useAction(navigateTo)\n  const [isReady, setIsReady] = useState(false)\n  const inputRef = useRef()\n  const debouncedValue = useDebounce(value, 250)\n  const hasDebouncedValueChangeOnce = useRef(false) // to ignore suggest on first render\n  const isBtnOkDisplayed = isGE() && route === ROUTE_SUGGEST && !loading\n  const isQuickSearch = isGE() && !hasFocus && (!value || value === '') && isFirstStepToFill\n  const inputId = `SearchInput${idx}`\n  const { showUI } = useUIDisplay(UI_ELEMENTS.SUGGEST)\n  const isHomePage = useSelector(selectIsHomePage)\n\n  const onSubmit = useCallback(() => {\n    dispatch(setSearchTerms(value))\n    return Promise.resolve().then(() => blur())\n  }, [value])\n\n  useImperativeHandle(ref, () => {\n    return { onSubmit }\n  })\n\n  useEffect(() => {\n    if (__BROWSER__) setIsReady(true)\n  }, [__BROWSER__])\n\n  useEffect(() => {\n    if (route !== prevRoute && isPagelessRoute(prevRoute) && !isPagelessRoute(route)) {\n      blur()\n    }\n  }, [route])\n\n  const doSuggest = val => {\n    dispatch(setSearchTerms(val))\n    return execSuggest({ terms: val, suggestFilterType })\n  }\n\n  useEffect(() => {\n    if (hasDebouncedValueChangeOnce.current && hasFocus) {\n      doSuggest(debouncedValue)\n    }\n    hasDebouncedValueChangeOnce.current = true\n  }, [hasFocus, debouncedValue])\n\n  const handleChange = event => {\n    onChange?.({ value: event.target.value })\n  }\n\n  const handleFocus = useCallback(\n    e => {\n      setTimeout(() => {\n        if (value.length !== 0) e.target.select()\n      }, 0)\n      if (navigateToSuggestOnFocus) execNavigateTo({ route: ROUTE_SUGGEST })\n      showUI()\n      onFocus?.()\n      setFocus(true)\n    },\n    [execNavigateTo, showUI, doSuggest, onFocus, setFocus]\n  )\n\n  const blur = useCallback(() => {\n    inputRef?.current?.blur()\n    setFocus(false)\n  }, [inputRef, setFocus])\n\n  return (\n    <div\n      className={classNames(\n        isHomePage ? s.homePageContainer : s.container,\n        s.container,\n        hasIcon && s.withIcon,\n        className,\n        transparent && s.transparent\n      )}\n    >\n      {prefix && (\n        <label className={classNames(s.prefix)} htmlFor={inputId}>\n          {prefix}\n        </label>\n      )}\n      {hasIcon && <SearchInputIcon />}\n      <input\n        ref={inputRef}\n        type=\"text\"\n        id={inputId}\n        value={value}\n        className={classNames(s.field, isHomePage && hasGreenPlaceholder ? s.greenPlaceholder : s.whitePlaceholder)}\n        placeholder={placeholder}\n        onFocus={handleFocus}\n        onChange={handleChange}\n        disabled={!isReady}\n        autoComplete=\"off\"\n      />\n      {loading && (\n        <span className={s.throbber}>\n          <Throbber />\n        </span>\n      )}\n      {isBtnOkDisplayed && <button className={s.btnOk}>OK</button>}\n      {isQuickSearch && <QuickSearchInput onChange={onChange} searchInputRef={inputRef} />}\n    </div>\n  )\n})\n\nSearchInput.displayName = 'SearchInput'\nexport default SearchInput\n","import { useEffect, useRef } from 'react'\n\nexport const usePrevious = value => {\n  const ref = useRef()\n  useEffect(() => {\n    ref.current = value\n  })\n  return ref.current\n}\n","import classNames from 'classnames'\nimport React from 'react'\nimport { ROUTE_ITINERARY_HOME } from '../../routes'\nimport { navigateTo } from '../../store/history/history.actions'\nimport itineraryIcon from '../genericComponents/assets/itinerary.svg?raw'\nimport T from '../i18n/T'\nimport { useAction } from '../utils/react-redux'\nimport s from './Header.less'\n\nconst ItineraryButton = () => {\n  const connectedNavigateTo = useAction(navigateTo)\n  const goToItinerary = () => {\n    connectedNavigateTo({ route: ROUTE_ITINERARY_HOME })\n  }\n\n  return (\n    <div className={s.mainButton} onClick={goToItinerary}>\n      <div className={classNames('icon', s.mainButtonIcon)} dangerouslySetInnerHTML={{ __html: itineraryIcon }}></div>\n      <div className={s.mainButtonLabel}>\n        <T id={'universes.itineraries'} />\n      </div>\n    </div>\n  )\n}\n\nexport default ItineraryButton\n","import React, { useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { searchAddress } from '../../store/address/address.actions'\nimport { selectIsFrenchSite } from '../../store/navigation/navigation.selectors'\nimport { selectSearchTerms } from '../../store/search/search.selectors'\nimport { suggestServiceCtx } from '../../store/suggest/suggest.service.constants'\nimport BackButton from '../header/BackButton'\nimport SearchInput from '../header/SearchInput'\nimport { useT } from '../i18n/T'\nimport { useAction } from '../utils/react-redux'\nimport s from './AddressHeaderForm.less'\n\nexport const AddressHeaderForm = ({ hasBackTag, transparent }) => {\n  const isFrench = useSelector(selectIsFrenchSite)\n  const searchTerms = useSelector(selectSearchTerms)\n  const [value, setValue] = useState(searchTerms)\n  const [loading, setLoading] = useState(false)\n  const execSearchAddress = useAction(searchAddress)\n  const SearchInputRef = useRef()\n  const placeholder = useT('header.search.placeholder')\n\n  useEffect(() => {\n    // if searchTerms has been reset, we empty search field\n    setValue(searchTerms)\n  }, [searchTerms])\n\n  const onChange = ({ value: val }) => {\n    setValue(val)\n  }\n\n  const onSubmit = e => {\n    e.preventDefault()\n    if (!value) return\n\n    setLoading(true)\n\n    return SearchInputRef.current\n      .onSubmit()\n      .then(() => execSearchAddress({ terms: value }))\n      .finally(() => {\n        setLoading(false)\n      })\n  }\n\n  return (\n    <>\n      <nav>\n        <BackButton hasTag={hasBackTag} transparent={transparent} />\n      </nav>\n      <form onSubmit={onSubmit} className={s.AddressHeaderForm}>\n        <SearchInput\n          ref={SearchInputRef}\n          value={value}\n          loading={loading}\n          suggestFilterType={isFrench ? suggestServiceCtx.filter.all : suggestServiceCtx.filter.places}\n          hasGreenPlaceholder={true}\n          placeholder={placeholder}\n          onChange={onChange}\n          transparent={transparent}\n        />\n      </form>\n    </>\n  )\n}\n\nexport default AddressHeaderForm\n","// extracted by mini-css-extract-plugin\nexport default {\"AddressHeaderForm\":\"lx8xP\"};","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, { useCallback } from 'react'\nimport { Helmet } from 'react-helmet'\nimport { selectLocale } from '../../store/navigation/navigation.selectors'\nimport logo from '../branding/Mappy-310.png'\nimport translations from './MetaTags.json'\n\nimport { useSelector } from 'react-redux'\nimport { selectCurrentHistoryFullRoute } from '../../store/history/history.selectors'\nimport { getHrefLangBySubdomain, SUBDOMAIN_EN, SUBDOMAINS } from '../i18n'\nimport { isAbsoluteUrl } from '../utils/url'\nimport { generateAbsoluteBaseUrl } from './seo'\n\nconst getImageUrl = ({ image, locale, logo }) => {\n  const img = image || logo\n  if (!isAbsoluteUrl(img)) return `${generateAbsoluteBaseUrl(locale)}${img}`\n  if (img.startsWith('//')) return `https:${img}`\n  return img\n}\n\nconst getAlternateLinks = ({ alternateLinkPath, shouldIgnoreEn }) =>\n  SUBDOMAINS.map((subdomain, idx) => {\n    // not returning an empty React fragment here `<></>` so returning array\n    // is not filling alternate links with irrelevant and undefined components\n    if (subdomain === SUBDOMAIN_EN && shouldIgnoreEn) return undefined\n\n    return (\n      <link\n        key={idx}\n        rel=\"alternate\"\n        href={`https://${subdomain}.mappy.com${alternateLinkPath}`}\n        // eslint-disable-next-line react/no-unknown-property\n        hreflang={getHrefLangBySubdomain(subdomain)}\n      />\n    )\n  })\n\nconst MetaTags = ({\n  title: givenTitle,\n  description: givenDescription,\n  image,\n  url,\n  alternateLinkPath,\n  canonical,\n  type,\n  shouldIgnoreEn\n}) => {\n  const locale = useSelector(selectLocale)\n  const currentFullRoute = useSelector(selectCurrentHistoryFullRoute)\n\n  const { title: defaultTitle, description: defaultDescription } = translations?.[locale] ?? {}\n  const title = givenTitle || defaultTitle\n  const description = givenDescription || defaultDescription\n  const img = getImageUrl({ locale, image, logo })\n  const typ = type || 'website'\n\n  const buildCanonicalRoute = useCallback(() => {\n    const canonicalUrl = !canonical ? currentFullRoute : canonical\n\n    return canonicalUrl.split('#')[0]\n  }, [currentFullRoute])\n\n  return (\n    <Helmet>\n      <title>{title}</title>\n      <meta name=\"description\" content={description} />\n      <meta property=\"og:title\" content={title} />\n      <meta property=\"og:description\" content={description} />\n      <meta property=\"og:locale\" content={locale.toLowerCase()} />\n      {url && <meta property=\"og:url\" content={url} />}\n      <meta property=\"og:type\" content={typ} />\n      <meta property=\"og:image\" content={img} />\n      {alternateLinkPath && getAlternateLinks({ alternateLinkPath, shouldIgnoreEn })}\n      <link rel=\"canonical\" href={`${generateAbsoluteBaseUrl(locale)}${buildCanonicalRoute()}`} />\n    </Helmet>\n  )\n}\n\nexport default MetaTags\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 { compact } from '../../../../utils/array'\nimport {\n  selectSeoBicycleOptions,\n  selectSeoHpLayersBicycle,\n  selectSeoHpLayersRestriction,\n  selectSeoHpLayersTitle,\n  selectSeoHpLayersTraffic,\n  selectSeoHpLayersZfe,\n  selectSeoInfoTrafficOptions,\n  selectSeoRestrictionOptions,\n  selectSeoZfeOptions\n} from '../seo-footer.selectors'\nimport {\n  ROUTE_BICYCLE_HOME,\n  ROUTE_DEPARTMENT_HOME,\n  ROUTE_REGION_HOME,\n  ROUTE_RESTRICTION_HOME,\n  ROUTE_TRAFFIC_HOME,\n  ROUTE_ZFE_HOME\n} from '../../../../routes'\nimport { generateFullRoute } from '../../../router/routeUtils'\n\nimport seo_traffic from './seo_traffic.json'\nimport seo_bicycle from './seo_bicycle.json'\nimport seo_zfe from './seo_zfe.json'\nimport seo_restrictions from './seo_restrictions.json'\n\nconst collectLinks =\n  (source = []) =>\n  (options = {}) => {\n    const { min = 0, max, zip } = options\n\n    if (zip) {\n      const itemForLink = source.find(item => item.zip === zip)\n      return itemForLink ? [itemForLink] : []\n    }\n\n    return source.slice(min, max)\n  }\n\nconst prefixLink =\n  prefix =>\n  ({ name, url }) => ({\n    label: `${prefix} ${name}`,\n    url\n  })\n\nexport const getTrafficLinks = (options = {}) => collectLinks(seo_traffic)(options).map(prefixLink('Info trafic'))\n\nexport const getBicycleLinks = (options = {}) =>\n  collectLinks(seo_bicycle)(options).map(prefixLink(options?.linksLabel ?? 'Pistes cyclables'))\n\nexport const getZfeLinks = (options = {}) =>\n  collectLinks(seo_zfe)(options).map(prefixLink(options?.linksLabel ?? 'ZFE'))\n\nexport const getRestrictionLinks = (options = {}) =>\n  collectLinks(seo_restrictions)(options).map(prefixLink(options?.linksLabel ?? 'Restrictions de circulation'))\n\nexport const getTrafficHpLink = (options = {}) => ({\n  label: options?.hpLinkLabel ?? 'Info trafic',\n  url: generateFullRoute(ROUTE_TRAFFIC_HOME)\n})\n\nexport const getBicycleHpLink = (options = {}) => ({\n  label: options?.hpLinkLabel ?? 'Plan des pistes cyclables',\n  url: generateFullRoute(ROUTE_BICYCLE_HOME)\n})\n\nexport const getZfeHpLink = (options = {}) => ({\n  label: options?.hpLinkLabel ?? \"Zone des restrictions Crit'Air\",\n  url: generateFullRoute(ROUTE_ZFE_HOME)\n})\n\nexport const getRestrictionHpLink = (options = {}) => ({\n  label: options?.hpLinkLabel ?? 'Restrictions de circulation en temps réel',\n  url: generateFullRoute(ROUTE_RESTRICTION_HOME)\n})\n\nconst getZfeTitle = (options = {}) => options?.title ?? 'ZFE en France'\n\nconst getRestrictionTitle = (options = {}) => options?.title ?? 'Les restrictions de Circulation en France'\n\nexport const buildInfoTrafficLinks = store => {\n  const options = selectSeoInfoTrafficOptions(store)\n  return {\n    title: 'Info-trafic en France',\n    contents: compact([getTrafficHpLink(options), ...getTrafficLinks(options)])\n  }\n}\n\nexport const buildBicycleLinks = store => {\n  const options = selectSeoBicycleOptions(store)\n  return {\n    title: 'Pistes cyclables en France',\n    contents: compact([getBicycleHpLink(options), ...getBicycleLinks(options)])\n  }\n}\n\nexport const buildZfeLinks = store => {\n  const options = selectSeoZfeOptions(store)\n  return {\n    title: getZfeTitle(options),\n    contents: compact([\n      getZfeHpLink(options),\n      ...getZfeLinks({\n        ...options\n      })\n    ])\n  }\n}\n\nexport const buildRestrictionLinks = store => {\n  const options = selectSeoRestrictionOptions(store)\n  return {\n    title: getRestrictionTitle(options),\n    contents: compact([\n      getRestrictionHpLink(options),\n      ...getRestrictionLinks({\n        ...options\n      })\n    ])\n  }\n}\n\nexport const buildHpLayerLinks = (store, includeZoneLink = false) => {\n  const title = selectSeoHpLayersTitle(store)\n  const hpLayerTrafficOptions = selectSeoHpLayersTraffic(store)\n  const hpLayerBicyclecOptions = selectSeoHpLayersBicycle(store)\n  const hpLayerZfeOptions = selectSeoHpLayersZfe(store)\n  const hpLayerRestrictionOptions = selectSeoHpLayersRestriction(store)\n\n  const layerLinks = [\n    hpLayerTrafficOptions?.visible ? getTrafficHpLink(hpLayerTrafficOptions) : undefined,\n    hpLayerBicyclecOptions?.visible ? getBicycleHpLink(hpLayerBicyclecOptions) : undefined,\n    hpLayerZfeOptions?.visible ? getZfeHpLink(hpLayerZfeOptions) : undefined,\n    hpLayerRestrictionOptions?.visible ? getRestrictionHpLink(hpLayerRestrictionOptions) : undefined\n  ]\n\n  const zoneLinks = [\n    {\n      label: 'Carte des régions françaises',\n      url: generateFullRoute(ROUTE_REGION_HOME)\n    },\n    {\n      label: 'Carte des départements français',\n      url: generateFullRoute(ROUTE_DEPARTMENT_HOME)\n    }\n  ]\n\n  const content = includeZoneLink ? layerLinks.concat(zoneLinks) : layerLinks\n\n  return {\n    title,\n    contents: compact(content)\n  }\n}\n","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\"};","export const PageNotFoundErrorCode = 404\n\nexport default class PageNotFoundError extends Error {\n  constructor(e = 'Page non trouvée') {\n    super(e)\n    this.originalError = e\n    this.name = 'PageNotFoundError'\n    this.type = PageNotFoundErrorCode\n  }\n}\n"],"names":["iconId","mob_roundImage","useSelector","selectGeoentityIconFromRouteOptions","React","SVGIcon","icon","className","classnames","s","src","_ref","searchInputRef","onChange","quickInputRef","useRef","handleChange","useCallback","event","current","focus","value","target","ref","autoFocus","SearchInput","forwardRef","props","loading","onFocus","suggestFilterType","placeholder","idx","prefix","hasGreenPlaceholder","navigateToSuggestOnFocus","isFirstStepToFill","transparent","dispatch","useDispatch","hasFocus","setFocus","useState","route","selectCurrentHistoryRoute","hasIcon","selectHasSearchIconFromRouteOptions","prevRoute","useEffect","usePrevious","execSuggest","useAction","suggest","execNavigateTo","navigateTo","isReady","setIsReady","inputRef","debouncedValue","useDebounce","hasDebouncedValueChangeOnce","isBtnOkDisplayed","isGE","ROUTE_SUGGEST","isQuickSearch","inputId","showUI","useUIDisplay","UI_ELEMENTS","SUGGEST","isHomePage","selectIsHomePage","onSubmit","setSearchTerms","Promise","resolve","then","blur","useImperativeHandle","__BROWSER__","isPagelessRoute","doSuggest","val","terms","handleFocus","e","setTimeout","length","select","_inputRef$current","classNames","htmlFor","SearchInputIcon","type","id","disabled","autoComplete","Throbber","QuickSearchInput","displayName","ItineraryButton","connectedNavigateTo","mainButton","onClick","goToItinerary","ROUTE_ITINERARY_HOME","mainButtonIcon","dangerouslySetInnerHTML","__html","itineraryIcon","mainButtonLabel","T","hasBackTag","isFrench","selectIsFrenchSite","searchTerms","selectSearchTerms","setValue","setLoading","execSearchAddress","searchAddress","SearchInputRef","useT","BackButton","hasTag","preventDefault","finally","suggestServiceCtx","filter","all","places","_ref2","children","impressionDataTag","itemScope","itemType","root","getImageUrl","image","locale","logo","img","isAbsoluteUrl","startsWith","generateAbsoluteBaseUrl","_ref3","title","givenTitle","description","givenDescription","url","alternateLinkPath","canonical","shouldIgnoreEn","selectLocale","currentFullRoute","selectCurrentHistoryFullRoute","defaultTitle","defaultDescription","translations","typ","buildCanonicalRoute","split","Helmet","name","content","property","toLowerCase","SUBDOMAINS","map","subdomain","SUBDOMAIN_EN","key","rel","href","hreflang","getHrefLangBySubdomain","getAlternateLinks","htmlText","as","As","trim","collectLinks","source","arguments","undefined","options","min","max","zip","itemForLink","find","item","slice","prefixLink","label","getTrafficLinks","seo_traffic","getBicycleLinks","seo_bicycle","linksLabel","getZfeLinks","seo_zfe","getRestrictionLinks","seo_restrictions","question","answer","clickDataTag","markdownContent","open","useToggle","itemProp","arrowLeft","HTMLTextFromMarkdown","PageNotFoundError","Error","constructor","super","this","originalError"],"sourceRoot":""}