{"version":3,"file":"static/components/front/app-2e91f7508aa6f9a9c0c0.mjs?cv=7","mappings":"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","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/OpenGraphTags.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/useTracking.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Footer/index.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/ModalMissingNewsletter.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/ConnectivityWarning.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/ProtectedLayout.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Router.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/App.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/index.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/globalContext/hooks.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/lib/components/utils/forms.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/lib/components/utils/time.js"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport React, { useEffect } from \"react\";\nimport Helmet from \"react-helmet\";\n\nimport { useDispatch } from \"@agir/front/globalContext/GlobalContext\";\nimport { setPageTitle } from \"@agir/front/globalContext/actions\";\n\nconst DEFAULT_TYPE = \"website\";\nconst DEFAULT_TITLE = \"Action Populaire\";\nconst DEFAULT_DESCRIPTION =\n  \"Action Populaire est le réseau social d'action de la France insoumise.\";\nconst DEFAULT_URL = \"https://actionpopulaire.fr/\";\nconst DEFAULT_IMAGE = \"/static/front/assets/og_image_NSP.jpg\";\n\nexport const usePageTitle = (title) => {\n  const dispatch = useDispatch();\n\n  useEffect(() => {\n    title && dispatch(setPageTitle(title));\n  }, [dispatch, title]);\n};\n\nconst OpenGraphTags = (props) => {\n  const {\n    title,\n    description = DEFAULT_DESCRIPTION,\n    type = DEFAULT_TYPE,\n    url = DEFAULT_URL,\n    image = DEFAULT_IMAGE,\n  } = props;\n\n  const pageTitle = title ? `${title} — ${DEFAULT_TITLE}` : DEFAULT_TITLE;\n\n  return (\n    <Helmet title={pageTitle}>\n      <meta property=\"og:locale\" content=\"fr_FR\" />\n      <meta property=\"og:site_name\" content=\"Action Populaire\" />\n      <meta property=\"fb:app\" content=\"399717914004198\" />\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n\n      <meta name=\"title\" content={pageTitle} />\n      <meta property=\"og:title\" content={pageTitle} />\n      <meta name=\"twitter:title\" content={pageTitle} />\n\n      <meta name=\"description\" content={description} />\n      <meta property=\"og:description\" content={description} />\n      <meta name=\"twitter:description\" content={description} />\n\n      <meta property=\"og:url\" content={url} />\n\n      <meta property=\"og:type\" content={type} />\n\n      <meta property=\"og:image\" content={image} />\n      <meta property=\"og:image:secure_url\" content={image} />\n      <meta name=\"twitter:image\" content={image} />\n    </Helmet>\n  );\n};\n\nOpenGraphTags.propTypes = {\n  type: PropTypes.string,\n  title: PropTypes.string,\n  description: PropTypes.string,\n  url: PropTypes.string,\n  image: PropTypes.string,\n};\n\nexport default OpenGraphTags;\n","import { setUser as sentrySetUser } from \"@sentry/browser\";\nimport { useEffect, useRef } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\nimport { getUser } from \"@agir/front/globalContext/reducers\";\n\nconst useTracking = () => {\n  const location = useLocation();\n  const { pathname } = location;\n  const previous = useRef(null);\n  const user = useSelector(getUser);\n  const userId = user?.id || null;\n\n  useEffect(() => {\n    if (typeof window !== \"undefined\" && window._paq) {\n      sentrySetUser({ id: userId, ip_address: \"{{auto}}\" });\n      userId\n        ? window._paq.push([\"setUserId\", userId])\n        : window._paq.push([\"resetUserId\"]);\n    }\n  }, [userId]);\n\n  useEffect(() => {\n    if (typeof window !== \"undefined\" && window._paq) {\n      if (previous.current) {\n        window._paq.push([\"setReferrerUrl\", previous.current]);\n      }\n      previous.current = pathname;\n      window._paq.push([\"setCustomUrl\", pathname]);\n      window._paq.push([\"trackPageView\"]);\n      window._paq.push([\"HeatmapSessionRecording::enable\"]);\n    }\n\n    return () => {\n      if (typeof window !== \"undefined\" && window._paq) {\n        window._paq.push([\"HeatmapSessionRecording::disable\"]);\n      }\n    };\n  }, [pathname]);\n};\n\nexport default useTracking;\n","import PropTypes from \"prop-types\";\nimport React, { Suspense, useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { lazy } from \"@agir/front/app/utils\";\nimport {\n  getIsSessionLoaded,\n  getIsConnected,\n} from \"@agir/front/globalContext/reducers\";\nimport routes from \"@agir/front/app/routes.config\";\nimport { useMobileApp } from \"@agir/front/app/hooks/useMobileApp\";\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\n\nconst Footer = lazy(() => import(\"./Footer\"));\n\nconst ConnectedFooter = () => {\n  const { pathname } = useLocation();\n  const isSessionLoaded = useSelector(getIsSessionLoaded);\n  const isConnected = useSelector(getIsConnected);\n  const { isMobileApp } = useMobileApp();\n\n  const route = useMemo(\n    () => routes.find((route) => route.match(pathname)),\n    [pathname],\n  );\n\n  if (!isSessionLoaded) {\n    return null;\n  }\n  if (!route || route.hideFooter) {\n    return null;\n  }\n  if (isMobileApp && !route.displayFooterOnMobileApp) {\n    return null;\n  }\n\n  return (\n    <Suspense fallback={<div />}>\n      <Footer\n        isSignedIn={isConnected}\n        isMobileApp={isMobileApp}\n        hasBanner={!route.hideFooterBanner && !isConnected}\n      />\n    </Suspense>\n  );\n};\n\nexport default ConnectedFooter;\n","import ModalConfirmation from \"@agir/front/genericComponents/ModalConfirmation\";\nimport React, {useEffect, useMemo, useState} from \"react\";\nimport {useLocalStorage} from \"@agir/lib/utils/hooks\";\nimport styled from \"styled-components\";\nimport useSWR from \"swr\";\nimport {getNewsletterStatus} from \"@agir/notifications/common/notifications.config\";\nimport {updateProfile} from \"@agir/front/authentication/api\";\n\nconst StyledTitle = styled.div`\n    color: ${(props) => props.theme.primary500};\n    text-align: center;\n    \n    span {\n        margin-bottom: 25px;\n    }\n`\nconst StyledModalContent = styled.div`\n    text-align: center;\n    padding: 10px;\n`\n\n\nexport default function ModalMissingNewsletter() {\n    const [alreadyShowNewsletterModal, setAlreadyShowNewsletterModal] = useLocalStorage(\"AP_show_newsletter_modal\", false)\n    const {data: profile, mutate: mutateProfile, isLoading} = useSWR(\"/api/user/profile/\");\n    const [isLoadingUpdateProfile, setIsLoadingUpdateProfile] = useState(false);\n    const newsletterOptions = useMemo(() => getNewsletterStatus(profile?.newsletters), [profile]);\n\n    function userRegisteredToReguliere() {\n        return newsletterOptions?.[\"LFI_reguliere\"]?.email ?? false\n    }\n\n    async function inscription() {\n        setIsLoadingUpdateProfile(true)\n        const updatedProfile = await updateProfile({\"newsletters\": [\"LFI_reguliere\"]});\n        await mutateProfile(() => updatedProfile?.data)\n\n        setIsLoadingUpdateProfile(false);\n        setAlreadyShowNewsletterModal(true)\n    }\n\n    function userOldEnough() {\n        const dateLessOneMonth = new Date()\n        dateLessOneMonth.setMonth(dateLessOneMonth.getMonth() - 1)\n        return new Date(profile?.created) < dateLessOneMonth;\n    }\n\n    useEffect(() => {\n        if (userRegisteredToReguliere() && !alreadyShowNewsletterModal) {\n            setAlreadyShowNewsletterModal(true)\n        }\n    }, [newsletterOptions, alreadyShowNewsletterModal]);\n\n    const show = !alreadyShowNewsletterModal && !isLoading && !userRegisteredToReguliere() && userOldEnough()\n\n    return <ModalConfirmation\n        shouldShow={show}\n        title={<StyledTitle>\n            <span className=\"fa-regular fa-envelope fa-2xl\"/><br/>\n            NE MANQUEZ PAS NOS ACTUALITÉS !\n            </StyledTitle>}\n        dismissLabel=\"Non merci\"\n        confirmationLabel=\"Je m'inscris\"\n        onConfirm={inscription}\n        onClose={() => setAlreadyShowNewsletterModal(true)}\n        shouldDismissOnClick={false}\n        isConfirming={isLoadingUpdateProfile}\n    >\n        <StyledModalContent>\n\n            <p>Cela fait un moment que vous utilisez Action populaire, mais vous n'êtes toujours pas inscrit⸱e à la\n                lettre d'information de la France Insoumise.</p>\n            <p>Inscrivez-vous dès maintenant pour suivre de près par e-mail toutes les actualités du mouvement !</p>\n        </StyledModalContent>\n    </ModalConfirmation>\n}","import React, { useEffect, useMemo, useState } from \"react\";\nimport { animated, useTransition } from \"@react-spring/web\";\nimport styled from \"styled-components\";\n\nimport { useIsOffline } from \"@agir/front/offline/hooks\";\nimport { useDownloadBanner } from \"@agir/front/app/hooks/useDownloadBanner\";\nimport logger from \"@agir/lib/utils/logger\";\n\nconst log = logger(__filename);\n\nconst StyledWarning = styled(animated.div)`\n  position: fixed;\n  top: ${({ $hasTopBar }) => ($hasTopBar ? \"72px\" : \"0\")};\n  width: 100%;\n  z-index: ${(props) => props.theme.zindexTopBar};\n  color: ${(props) => props.theme[props.color]};\n  background: ${(props) => props.theme[props.backgroundCOlor]};\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    top: ${({ $hasTopBar, $hasDownloadBanner }) => {\n      if ($hasTopBar && $hasDownloadBanner) {\n        return \"136px\";\n      }\n      if ($hasTopBar) {\n        return \"56px\";\n      }\n      return \"0\";\n    }};\n  }\n\n  & > div {\n    overflow: hidden;\n    text-transform: uppercase;\n    font-weight: 600;\n    text-align: center;\n    font-size: 10px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 100%;\n  }\n`;\n\nconst ConnectivityWarning = ({ hasTopBar }) => {\n  const [hasDownloadBanner] = useDownloadBanner();\n  const offline = useIsOffline();\n  log.debug(`Offline ${offline}`);\n  const [display, setDisplay] = useState(offline);\n  log.debug(`Display ${display}`);\n\n  const [backgroundColor, color, warning] = useMemo(() => {\n    switch (offline) {\n      case false:\n        return [\"success500\", \"success100\", \"Connexion rétablie\"];\n      case true:\n        return [\"error500\", \"error100\", \"Aucune connexion internet\"];\n      default:\n        return [\"primary500\", \"primary100\", \"Connexion en cours...\"];\n    }\n  }, [offline]);\n\n  useEffect(() => {\n    let timeout = setTimeout(() => setDisplay(!!offline), offline ? 0 : 5000);\n    return () => clearTimeout(timeout);\n  }, [offline]);\n\n  const transitions = useTransition(display, {\n    initial: null,\n    enter: { height: 30 },\n    leave: { height: 0 },\n  });\n\n  return transitions(\n    (style, item) =>\n      item && (\n        <StyledWarning\n          color\n          backgroundColor\n          style={style}\n          $hasTopBar={hasTopBar}\n          $hasDownloadBanner={hasDownloadBanner}\n        >\n          <div>{warning}</div>\n        </StyledWarning>\n      ),\n  );\n};\n\nexport default ConnectivityWarning;\n","import React, { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { getRouteByPathname } from \"@agir/front/app/routes.config\";\nimport ConnectivityWarning from \"@agir/front/app/ConnectivityWarning\";\nimport ErrorBoundary from \"@agir/front/app/ErrorBoundary\";\nimport styled from \"styled-components\";\nimport BannerAnnouncement from \"@agir/activity/BannerAnnouncements/BannerAnnouncement\";\nimport Layout from \"@agir/front/app/Layout\";\nimport { useAuthentication } from \"@agir/front/authentication/hooks\";\nimport { useMobileApp } from \"@agir/front/app/hooks/useMobileApp\";\n\nconst StyledPage = styled.div`\n  isolation: isolate;\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    padding-top: calc(\n      var(--safe-area-inset-top, env(safe-area-inset-top, 0)) +\n        var(--top-bar-height, 0)\n    );\n  }\n`;\n\nconst useProtectedLayoutRoute = () => {\n  const location = useLocation();\n  const route = getRouteByPathname(location.pathname);\n  const isAuthorized = useAuthentication(route);\n\n  if (!isAuthorized && route?.AnonymousComponent) {\n    return route.anonymousConfig\n      ? {\n          ...route,\n          ...route.anonymousConfig,\n        }\n      : route;\n  }\n  return route;\n};\n\nexport default function ProtectedLayout({ children }) {\n  const { isMobileApp } = useMobileApp();\n  const route = useProtectedLayoutRoute();\n\n  if (!route) {\n    return (\n      <ErrorBoundary>\n        <StyledPage>{children}</StyledPage>\n      </ErrorBoundary>\n    );\n  }\n\n  const hasTopBar = !route.hideTopBar && (!route.appOnlyTopBar || isMobileApp);\n\n  if (route.isPartial) {\n    return <ErrorBoundary>{children}</ErrorBoundary>;\n  }\n\n  if (!route.hasLayout) {\n    return (\n      <ErrorBoundary>\n        <StyledPage $hasTopBar={hasTopBar}>\n          {!route.hideConnectivityWarning && (\n            <ConnectivityWarning hasTopBar={hasTopBar} />\n          )}\n          {children}\n        </StyledPage>\n      </ErrorBoundary>\n    );\n  }\n\n  return (\n    <ErrorBoundary>\n      <StyledPage $hasTopBar={hasTopBar}>\n        {<BannerAnnouncement />}\n        <Layout {...(route?.layoutProps ?? {})} active={route.id}>\n          {!route.hideConnectivityWarning && (\n            <ConnectivityWarning hasTopBar={hasTopBar} />\n          )}\n          {children}\n        </Layout>\n      </StyledPage>\n    </ErrorBoundary>\n  );\n}\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport {BrowserRouter, Route, Switch,} from \"react-router-dom\";\nimport ScrollMemory from \"react-router-scroll-memory\";\n\nimport { useAppLoader } from \"@agir/front/app/hooks/useAppLoader\";\nimport { useMobileApp } from \"@agir/front/app/hooks/useMobileApp\";\nimport { useAuthentication } from \"@agir/front/authentication/hooks\";\nimport routes, { BASE_PATH, routeConfig } from \"./routes.config\";\nimport useTracking from \"./useTracking\";\n\nimport Footer from \"@agir/front/app/Footer\";\nimport TopBar from \"@agir/front/app/Navigation/TopBar\";\nimport OpenGraphTags from \"@agir/front/app/OpenGraphTags\";\nimport NotFoundPage from \"@agir/front/notFoundPage/NotFoundPage\";\nimport ModalMissingNewsletter from \"@agir/front/app/ModalMissingNewsletter\";\nimport ProtectedComponent from \"@agir/front/app/ProtectedComponent\";\nimport ProtectedLayout from \"@agir/front/app/ProtectedLayout\";\n\nconst TrackingComponent = () => {\n  useTracking();\n  return null;\n};\nconst Router = ({ children }) => {\n  const { isMobileApp } = useMobileApp();\n  return (\n    <BrowserRouter basename={BASE_PATH}>\n      <ModalMissingNewsletter />\n      <TrackingComponent />\n      <ScrollMemory />\n      <TopBar />\n      <ProtectedLayout>\n        <Switch>\n          {routes.map((route) => {\n            const hasTopBar =\n              !route.hideTopBar && (!route.appOnlyTopBar || isMobileApp);\n            return (\n              <Route key={route.id} path={route.path} exact={!!route.exact}>\n                <OpenGraphTags\n                  title={route.label}\n                  description={route.description}\n                />\n                <ProtectedComponent route={route} hasTopBar={hasTopBar} />\n              </Route>\n            );\n          })}\n          <Route key=\"not-found\">\n            <NotFoundPage />\n          </Route>\n        </Switch>\n      </ProtectedLayout>\n      {children}\n      <Footer />\n    </BrowserRouter>\n  );\n};\n\nRouter.propTypes = {\n  children: PropTypes.node,\n};\nexport default Router;\n","import React from \"react\";\nimport { GlobalContextProvider } from \"@agir/front/globalContext/GlobalContext\";\nimport SWRContext from \"@agir/front/allPages/SWRContext\";\n\nimport PushModal from \"@agir/front/allPages/PushModal/PushModal\";\n\nimport Router from \"./Router\";\n\nexport default function App() {\n  return (\n    <SWRContext>\n      <GlobalContextProvider hasRouter hasToasts>\n        <Router>\n          <PushModal isActive />\n        </Router>\n      </GlobalContextProvider>\n    </SWRContext>\n  );\n}\n","import \"core-js/es/string/replace-all\";\n\nimport React from \"react\";\nimport onDOMReady from \"@agir/lib/utils/onDOMReady\";\nimport logger from \"@agir/lib/utils/logger\";\n\nimport \"@agir/front/allPages/sentry\";\nimport \"@agir/front/allPages/ios\";\nimport \"@agir/front/allPages/fonts/fonts.css\";\nimport \"@agir/front/genericComponents/style.scss\";\n\nimport { renderReactComponent } from \"@agir/lib/utils/react\";\n\nimport App from \"@agir/front/app/App\";\n\nconst log = logger(__filename);\n\nconst init = () => {\n  const renderElement = document.getElementById(\"mainApp\");\n  if (!renderElement) {\n    return;\n  }\n  renderReactComponent(<App />, renderElement);\n};\nonDOMReady(init);\n\nif (\"serviceWorker\" in navigator) {\n  window.addEventListener(\"load\", async () => {\n    try {\n      window.AgirSW = await navigator.serviceWorker.register(\"/sw.js\");\n      log.debug(\"Registered service worker\");\n    } catch (e) {\n      log.error(\"Failed to register service worker\");\n    }\n  });\n\n  window.addEventListener(\"beforeinstallprompt\", (e) => {\n    // Prevent the mini-infobar from appearing on mobile\n    e.preventDefault();\n  });\n}\n","import { useCallback } from \"react\";\nimport { useDispatch } from \"@agir/front/globalContext/GlobalContext\";\nimport { addToasts } from \"@agir/front/globalContext/actions\";\n\nexport const useToast = () => {\n  const dispatch = useDispatch();\n\n  const sendToast = useCallback(\n    (message, type, config) => {\n      const toast = {\n        message: message,\n        type: type || \"DEFAULT\",\n        ...config,\n      };\n      dispatch(addToasts(toast));\n    },\n    [dispatch],\n  );\n\n  return sendToast;\n};\n","export const objectToFormData = (obj, rootName, ignoreList) => {\n  var formData = new FormData();\n  const appendFormData = (data, rootProp) => {\n    if (Array.isArray(ignoreList) && ignoreList.includes(rootProp)) {\n      return;\n    }\n\n    rootProp = rootProp || \"\";\n\n    if (data instanceof File) {\n      formData.append(rootProp, data);\n      return;\n    }\n\n    if (Array.isArray(data)) {\n      for (var i = 0; i < data.length; i++) {\n        appendFormData(data[i], rootProp + \"[\" + i + \"]\");\n      }\n      return;\n    }\n\n    if (typeof data === \"object\" && data) {\n      for (var key in data) {\n        if (data.hasOwnProperty(key)) {\n          if (rootProp === \"\") {\n            appendFormData(data[key], key);\n          } else {\n            appendFormData(data[key], rootProp + \".\" + key);\n          }\n        }\n      }\n      return;\n    }\n\n    if (data !== null && typeof data !== \"undefined\") {\n      formData.append(rootProp, data);\n    }\n  };\n\n  appendFormData(obj, rootName);\n\n  return formData;\n};\n","import { DateTime, Interval } from \"luxon\";\nimport { instanceOf } from \"prop-types\";\n\nconst HOUR_ONLY_FORMAT = {\n  hour: \"numeric\",\n  minute: \"2-digit\",\n};\n\nconst SAME_YEAR_FORMAT = {\n  weekday: \"long\",\n  month: \"long\",\n  day: \"numeric\",\n};\n\nconst OTHER_YEAR_FORMAT = {\n  year: \"numeric\",\n  month: \"long\",\n  day: \"numeric\",\n};\n\nexport function dateFromISOString(isostring, zone) {\n  return zone\n    ? DateTime.fromISO(isostring, { zone }).setLocale(\"fr\")\n    : DateTime.fromISO(isostring).setLocale(\"fr\");\n}\n\nexport function displayHumanDay(datetime, relativeTo, interval) {\n  if (!instanceOf(datetime, DateTime)) {\n    return datetime;\n  }\n\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local();\n  }\n\n  if (interval === undefined) {\n    interval =\n      relativeTo < datetime\n        ? Interval.fromDateTimes(relativeTo, datetime)\n        : Interval.fromDateTimes(datetime, relativeTo);\n  }\n\n  const calendarDays = interval.count(\"days\");\n\n  if (calendarDays <= 3) {\n    return datetime.toRelativeCalendar({\n      base: relativeTo,\n      unit: \"days\",\n    });\n  } else if (calendarDays <= 8) {\n    const calendarWeeks = interval.count(\"weeks\");\n    const qualifier =\n      relativeTo < datetime ? (calendarWeeks > 1 ? \"prochain\" : \"\") : \"dernier\";\n    return `${datetime.weekdayLong} ${qualifier}`.trim();\n  }\n\n  const format = {\n    weekday: \"long\",\n    month: \"long\",\n    day: \"numeric\",\n    year: datetime.year !== relativeTo.year ? \"numeric\" : undefined,\n  };\n\n  return datetime.toLocaleString(format);\n}\n\nexport function displayHumanDate(datetime, relativeTo) {\n  if (!instanceOf(datetime, DateTime)) {\n    return datetime;\n  }\n\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local();\n  }\n  const interval =\n    relativeTo < datetime\n      ? Interval.fromDateTimes(relativeTo, datetime)\n      : Interval.fromDateTimes(datetime, relativeTo);\n\n  const calendarDays = interval.count(\"days\");\n\n  const time = datetime.toLocaleString(HOUR_ONLY_FORMAT);\n  let date = \"\";\n\n  if (calendarDays <= 8) {\n    date = displayHumanDay(datetime, relativeTo, interval);\n  } else if (interval.count(\"months\") <= 4) {\n    date = datetime.toLocaleString(SAME_YEAR_FORMAT);\n  } else {\n    date = datetime.toLocaleString(OTHER_YEAR_FORMAT);\n  }\n\n  return `${date} à ${time}`;\n}\n\nexport const displayHumanDateString = (datetime, relativeTo) => {\n  datetime = computeDateToLuxon(datetime)\n\n  if (relativeTo) {\n    relativeTo = computeDateToLuxon(relativeTo);\n  }\n\n  return displayHumanDate(datetime, relativeTo);\n};\n\nexport function displayInterval(interval, relativeTo) {\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local().setLocale(\"fr\");\n  }\n\n  const fromNowInterval =\n    relativeTo < interval.start\n      ? Interval.fromDateTimes(relativeTo, interval.start)\n      : Interval.fromDateTimes(interval.start, relativeTo);\n\n  const showYear = fromNowInterval.count(\"months\") > 4;\n  const scheduleCalendarDays = interval.count(\"days\");\n\n  const dayPartFormat = {\n    year: showYear ? \"numeric\" : undefined,\n    month: \"long\",\n    day: \"numeric\",\n    weekday: \"long\",\n  };\n\n  if (scheduleCalendarDays === 1) {\n    const dayPart = interval.start.toLocaleString(dayPartFormat);\n    const hourPart = `de ${interval.start.toLocaleString(\n      HOUR_ONLY_FORMAT,\n    )} à ${interval.end.toLocaleString(HOUR_ONLY_FORMAT)}`;\n    return `le ${dayPart}, ${hourPart}`;\n  }\n\n  const startDate = interval.start.toLocaleString(dayPartFormat);\n  const startTime = interval.start.toLocaleString(HOUR_ONLY_FORMAT);\n  const endDate = interval.end.toLocaleString({\n    ...dayPartFormat,\n    year: undefined,\n  });\n  const endTime = interval.end.toLocaleString(HOUR_ONLY_FORMAT);\n  return `du ${startDate} à ${startTime} au ${endDate} à ${endTime}`;\n}\n\nexport function displayIntervalStart(interval, relativeTo) {\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local().setLocale(\"fr\");\n  }\n  const startDate = interval.start.setLocale(\"fr-FR\");\n  const endDate = interval.end.setLocale(\"fr-FR\");\n  const scheduleCalendarDays = interval.count(\"days\");\n\n  const dayPartFormat = {\n    year: endDate < relativeTo ? \"numeric\" : undefined,\n    month: \"long\",\n    day: \"numeric\",\n  };\n\n  if (scheduleCalendarDays === 1) {\n    const dayPart = startDate.toLocaleString(dayPartFormat);\n    const hourPart = `${startDate.toLocaleString(HOUR_ONLY_FORMAT)}`;\n\n    return `${dayPart}, ${hourPart}`;\n  }\n\n  const start = startDate.toLocaleString({\n    ...dayPartFormat,\n    ...HOUR_ONLY_FORMAT,\n  });\n\n  return `${start}`;\n}\n\nexport function displayIntervalEnd(interval, relativeTo) {\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local().setLocale(\"fr\");\n  }\n\n  const startDate = DateTime.now();\n  const endDate = interval.end.setLocale(\"fr-FR\");\n  const beforeEnd = Interval.fromISO(`${startDate}/${endDate}`);\n  const diffBetween = beforeEnd.count(\"days\");\n\n  let title = \"En cours, \";\n\n  const dayPartFormat = {\n    year: endDate < relativeTo ? \"numeric\" : undefined,\n    month: \"long\",\n    day: \"numeric\",\n  };\n\n  if (diffBetween === 1) {\n    title += \"jusqu'à \";\n    const hourPart = `${endDate.toLocaleString(HOUR_ONLY_FORMAT)}`;\n    return `${title} ${hourPart}`;\n  }\n\n  if (diffBetween < 7) {\n    title += \"jusqu'à \";\n    return `${title}` + displayHumanDate(endDate);\n  }\n\n  title += \"jusqu'au \";\n\n  const end = endDate.toLocaleString({\n    ...dayPartFormat,\n    ...HOUR_ONLY_FORMAT,\n  });\n\n  return `${title} ${end}`;\n}\n\nconst units = [\"year\", \"month\", \"week\", \"day\", \"hour\", \"minute\", \"second\"];\n\nexport const simpleDate = (datetimeString, hideCurrentYear = true) => {\n  let dateTime = new Date(datetimeString);\n  dateTime = DateTime.fromJSDate(dateTime).setLocale(\"fr\");\n  return dateTime.toLocaleString({\n    year:\n      hideCurrentYear && new Date().getFullYear() === dateTime.get(\"year\")\n        ? undefined\n        : \"numeric\",\n    month: \"long\",\n    day: \"numeric\",\n  });\n};\n\nexport const simpleDateTime = (datetimeString, hideCurrentYear = true) => {\n  let dateTime = new Date(datetimeString);\n  dateTime = DateTime.fromJSDate(dateTime).setLocale(\"fr\");\n  return dateTime.toLocaleString({\n    year:\n      hideCurrentYear && new Date().getFullYear() === dateTime.get(\"year\")\n        ? undefined\n        : \"numeric\",\n    month: \"long\",\n    day: \"numeric\",\n    weekday: \"long\",\n    ...HOUR_ONLY_FORMAT,\n  });\n};\n\nexport const simpleInterval = (start, end) => {\n  const interval = Interval.fromISO(start + \"/\" + end);\n\n  if (interval.start.date === interval.end.date) {\n    return interval.toLocaleString(DateTime.TIME_24_SIMPLE, {\n      locale: \"fr-FR\",\n    });\n  }\n\n  return interval.toLocaleString(DateTime.DATETIME_SHORT, {\n    locale: \"fr-FR\",\n  });\n};\n\nexport const timeAgo = (date, maxUnit = units[0]) => {\n  try {\n    let dateTime = new Date(date);\n    dateTime = DateTime.fromJSDate(dateTime).setLocale(\"fr\");\n    const diff = dateTime.diffNow().shiftTo(...units);\n    const unit = units.find((unit) => diff.get(unit) !== 0) || \"second\";\n    if (maxUnit && units.indexOf(maxUnit) > units.indexOf(unit)) {\n      return \"le \" + simpleDate(date);\n    }\n    const relativeFormatter = new Intl.RelativeTimeFormat(\"fr\", {\n      numeric: \"auto\",\n    });\n    return relativeFormatter.format(Math.trunc(diff.as(unit)), unit);\n  } catch (e) {\n    return date;\n  }\n};\n\nexport const displayShortDate = (datetime) => {\n  try {\n    let date = new Date(datetime);\n    date = DateTime.fromJSDate(date).setLocale(\"fr\");\n    return date.toFormat(\"dd/LL\");\n  } catch (e) {\n    return datetime;\n  }\n};\n\nexport const computeDateToLuxon = (date) => {\n  return typeof date === \"string\"\n    ? DateTime.fromISO(date.replace(/([+-]\\d{2}:\\d{2}):\\d{2}$/, \"$1\"))\n    : typeof date === \"number\"\n      ? DateTime.fromMillis(date.replace(/([+-]\\d{2}:\\d{2}):\\d{2}$/, \"$1\"))\n      : null;\n}\n\nexport const computeScheduleTime = (startTime, endTime) => {\n  const start = computeDateToLuxon(startTime)\n  const end = computeDateToLuxon(endTime)\n\n  if (!start?.isValid || !end?.isValid) {\n    console.warn(\"Start or end time not valid\", start, end);\n    return null;\n  }\n\n  return Interval.fromDateTimes(start, end);\n}\n"],"names":["DEFAULT_TITLE","__WEBPACK_DEFAULT_EXPORT__","props","title","_props$description","description","_props$type","type","_props$url","url","_props$image","image","pageTitle","concat","React","Helmet","property","content","name","app_useTracking","pathname","useLocation","previous","useRef","user","useSelector","getUser","userId","id","useEffect","window","_paq","sentrySetUser","ip_address","push","current","Footer","lazy","__webpack_require__","e","then","bind","app_Footer","isSessionLoaded","getIsSessionLoaded","isConnected","getIsConnected","isMobileApp","useMobileApp","route","useMemo","routes","find","match","hideFooter","displayFooterOnMobileApp","Suspense","fallback","isSignedIn","hasBanner","hideFooterBanner","StyledTitle","styled","div","theme","primary500","StyledModalContent","ModalMissingNewsletter","_useLocalStorage","useLocalStorage","_useLocalStorage2","_slicedToArray","alreadyShowNewsletterModal","setAlreadyShowNewsletterModal","_useSWR","useSWR","profile","data","mutateProfile","mutate","isLoading","_useState","useState","_useState2","isLoadingUpdateProfile","setIsLoadingUpdateProfile","newsletterOptions","getNewsletterStatus","newsletters","userRegisteredToReguliere","_newsletterOptions$LF","_newsletterOptions$LF2","email","_inscription","_asyncToGenerator","_regeneratorRuntime","_callee","updatedProfile","_context","prev","next","updateProfile","sent","stop","apply","this","arguments","dateLessOneMonth","show","Date","setMonth","getMonth","created","ModalConfirmation","shouldShow","className","dismissLabel","confirmationLabel","onConfirm","onClose","shouldDismissOnClick","isConfirming","log","logger","StyledWarning","animated","_ref","$hasTopBar","zindexTopBar","color","backgroundCOlor","collapse","_ref2","$hasDownloadBanner","app_ConnectivityWarning","_ref3","hasTopBar","_useDownloadBanner","useDownloadBanner","hasDownloadBanner","offline","useIsOffline","debug","display","setDisplay","_useMemo","_useMemo2","warning","timeout","setTimeout","clearTimeout","useTransition","initial","enter","height","leave","transitions","style","item","backgroundColor","StyledPage","ProtectedLayout","_route$layoutProps","children","location","getRouteByPathname","useAuthentication","AnonymousComponent","anonymousConfig","_objectSpread","useProtectedLayoutRoute","ErrorBoundary","hideTopBar","appOnlyTopBar","isPartial","hasLayout","BannerAnnouncement","Layout","_extends","layoutProps","active","hideConnectivityWarning","ConnectivityWarning","TrackingComponent","useTracking","app_Router","BrowserRouter","basename","BASE_PATH","ScrollMemory","TopBar","Switch","map","Route","key","path","exact","OpenGraphTags","label","ProtectedComponent","NotFoundPage","App","SWRContext","GlobalContextProvider","hasRouter","hasToasts","Router","PushModal","isActive","onDOMReady","renderElement","document","getElementById","renderReactComponent","navigator","addEventListener","serviceWorker","register","AgirSW","error","preventDefault","useToast","dispatch","useDispatch","sendToast","useCallback","message","config","toast","addToasts","objectToFormData","obj","rootName","ignoreList","formData","FormData","appendFormData","rootProp","Array","isArray","includes","File","append","i","length","_typeof","hasOwnProperty","HOUR_ONLY_FORMAT","hour","minute","SAME_YEAR_FORMAT","weekday","month","day","OTHER_YEAR_FORMAT","year","dateFromISOString","isostring","zone","DateTime","fromISO","setLocale","displayHumanDay","datetime","relativeTo","interval","instanceOf","undefined","local","Interval","fromDateTimes","calendarDays","count","toRelativeCalendar","base","unit","calendarWeeks","qualifier","weekdayLong","trim","format","toLocaleString","displayHumanDate","time","date","displayHumanDateString","computeDateToLuxon","displayInterval","dayPartFormat","start","dayPart","hourPart","end","startDate","startTime","endDate","endTime","displayIntervalStart","displayIntervalEnd","now","diffBetween","units","simpleDate","datetimeString","hideCurrentYear","dateTime","fromJSDate","getFullYear","get","simpleDateTime","simpleInterval","TIME_24_SIMPLE","locale","DATETIME_SHORT","timeAgo","maxUnit","_dateTime$diffNow","diff","diffNow","shiftTo","indexOf","Intl","RelativeTimeFormat","numeric","Math","trunc","as","displayShortDate","toFormat","replace","fromMillis","computeScheduleTime","isValid","console","warn"],"sourceRoot":""}