{"version":3,"file":"static/components/6739-36469b7d61f5c2b77909.mjs?cv=7","mappings":"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","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Navigation/BottomBar/BottomBar.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Navigation/BottomBar/index.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/allPages/FeedbackButton.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/apiHook.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/authentication/hooks.js","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/Redirect.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Navigation/CounterBadge.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/ConnectivityWarning.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/Layout/MobileLayout.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/Announcement.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Announcements.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/FacebookLoginAd.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Navigation/SideBar/SecondaryMenu.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Navigation/SideBar/SideBar.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Navigation/SideBar/index.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Layout/DesktopLayout.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Layout/Layout.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Layout/index.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/ErrorBoundary.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/activity/components/BannerAnnouncements/useBannerAnnouncements.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/Spinner.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/activity/components/BannerAnnouncements/BannerAnnouncement.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Page.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/Router.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/activity/components/common/hooks.js"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport CONFIG from \"@agir/front/app/Navigation/navigation.config\";\n\nimport CounterBadge from \"@agir/front/app/Navigation/CounterBadge\";\nimport Link from \"@agir/front/app/Link\";\nimport { RawFeatherIcon } from \"@agir/front/genericComponents/FeatherIcon\";\n\nconst Title = styled.span``;\nconst MenuLink = styled(Link)`\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  text-align: center;\n  height: 70px;\n  font-size: 11px;\n  font-weight: 500;\n  color: ${({ $active, theme }) => ($active ? theme.primary500 : \"inherit\")};\n  border-top: 2px solid\n    ${({ $active, theme }) => ($active ? theme.primary500 : \"transparent\")};\n\n  &:hover,\n  &:focus {\n    color: ${({ $active, theme }) => ($active ? theme.primary500 : \"inherit\")};\n    text-decoration: none;\n  }\n\n  ${RawFeatherIcon} {\n    display: block;\n  }\n\n  ${Title} {\n    font-size: 10px;\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n\n    @media (max-width: 340px) {\n      font-size: 8px;\n    }\n  }\n\n  ${CounterBadge} {\n    position: absolute;\n    top: 7px;\n    right: 14px;\n\n    @media (max-width: 340px) {\n      top: 9px;\n    }\n  }\n`;\n\nconst StyledBottomBar = styled.nav`\n  background-color: ${(props) => props.theme.background0};\n  position: fixed;\n  bottom: var(--safe-area-inset-bottom, env(safe-area-inset-bottom));\n  left: 0;\n  right: 0;\n  box-shadow: inset 0 1px 0 ${(props) => props.theme.text50};\n  height: var(--bottom-bar-height);\n  padding: 0 0.5rem;\n  z-index: ${(props) => props.theme.zindexBottomBar};\n  isolation: isolate;\n  overflow: hidden;\n\n  ul {\n    padding: 0;\n    max-width: 600px;\n    margin: auto;\n    display: flex;\n    justify-content: space-around;\n    list-style: none;\n\n    li {\n      flex: 1 1 auto;\n      max-width: 70px;\n      min-width: 1px;\n    }\n  }\n`;\n\nconst LINKS = CONFIG.menuLinks.filter(({ mobile }) => !!mobile);\n\nconst BottomBar = ({ active, unreadMessageCount, unreadActivityCount }) => (\n  <StyledBottomBar>\n    <ul>\n      {LINKS.map((link) => (\n        <li key={link.id}>\n          <MenuLink route={link.route} $active={active === link.id}>\n            {link.unreadMessageBadge && (\n              <CounterBadge value={unreadMessageCount} />\n            )}\n            {link.unreadActivityBadge && (\n              <CounterBadge value={unreadActivityCount} />\n            )}\n            {link.icon?.includes(\"fa-\") ? (\n              <i\n                className={`fa-regular ${link.icon}`}\n                style={{\n                  fontSize: \"2.2em\",\n                  fontWeight: 300,\n                  paddingBottom: \"2px\",\n                }}\n              />\n            ) : (\n              <RawFeatherIcon name={link.icon} inline />\n            )}\n            <Title>{link.title}</Title>\n          </MenuLink>\n        </li>\n      ))}\n    </ul>\n  </StyledBottomBar>\n);\n\nBottomBar.propTypes = {\n  active: PropTypes.string,\n  unreadActivityCount: PropTypes.number,\n  unreadMessageCount: PropTypes.number,\n};\nexport default BottomBar;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport { useUnreadMessageCount } from \"@agir/msgs/common/hooks\";\nimport { useUnreadActivityCount } from \"@agir/activity/common/hooks\";\n\nimport BottomBar from \"./BottomBar\";\n\nconst ConnectedBottomBar = (props) => {\n  const unreadActivityCount = useUnreadActivityCount();\n  const unreadMessageCount = useUnreadMessageCount();\n\n  return (\n    <BottomBar\n      {...props}\n      unreadActivityCount={unreadActivityCount}\n      unreadMessageCount={unreadMessageCount}\n    />\n  );\n};\n\nexport default ConnectedBottomBar;\n","import React from \"react\";\n\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\nimport { getRoutes } from \"@agir/front/globalContext/reducers\";\nimport { useMobileApp } from \"@agir/front/app/hooks\";\n\nimport background from \"./life-ring.svg\";\nimport ConnectedFloatButton from \"@agir/front/allPages/FloatButton\";\n\nfunction FeedbackButton() {\n  const routes = useSelector(getRoutes);\n  const href = routes && routes.feedbackForm;\n  const { isMobileApp } = useMobileApp();\n\n  return (\n    <ConnectedFloatButton\n      background={background}\n      href={href}\n      content={\n        <>\n          <strong>Aidez-nous !</strong>\n          {isMobileApp ? (\n            <span>\n              Donnez votre avis sur l'application Action Populaire&nbsp;→\n            </span>\n          ) : (\n            <span>Donnez votre avis sur le site Action Populaire&nbsp;→</span>\n          )}\n        </>\n      }\n    />\n  );\n}\n\nexport default FeedbackButton;\n","import React, { useState } from 'react'\n\nexport const useMutate = (funcApi, onSuccess) => {\n    const [error, setError] = useState();\n    const [data, setData] = useState()\n    const [isLoading, setIsLoading] = useState(false);\n\n\n    async function mutate(...args) {\n        setIsLoading(true);\n\n        try {\n            const response = await funcApi(...args);\n            setData(response.data);\n            onSuccess?.()\n        } catch (e) {\n            setError(e.response && e.response.data) || e.message\n        } finally {\n            setIsLoading(false);\n        }\n\n    }\n\n    return { mutate, error, data, isLoading }\n\n}","import { useEffect, useCallback, useState } from \"react\";\n\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\nimport * as selector from \"@agir/front/globalContext/reducers\";\n\nimport {\n  getBookmarkedEmails,\n  bookmarkEmails,\n  bookmarkEmail,\n  AUTHENTICATION,\n} from \"./common\";\n\nexport const useAuthentication = (route) => {\n  const isSessionLoaded = useSelector(selector.getIsSessionLoaded);\n  const authentication = useSelector(selector.getAuthentication);\n\n  if (route.neededAuthentication === AUTHENTICATION.NONE) {\n    return true;\n  }\n\n  if (!isSessionLoaded) {\n    return null;\n  }\n\n  return authentication >= route.neededAuthentication;\n};\n\nexport const useBookmarkedEmails = () => {\n  const isSessionLoaded = useSelector(selector.getIsSessionLoaded);\n  const legacyBookmarkedEmails = useSelector(selector.getBookmarkedEmails);\n  const [bookmarkedEmails, setBookmarkedEmails] = useState(\n    getBookmarkedEmails(),\n  );\n\n  useEffect(() => {\n    if (\n      isSessionLoaded &&\n      legacyBookmarkedEmails.length > 0 &&\n      bookmarkedEmails.length === 0\n    ) {\n      setBookmarkedEmails(bookmarkEmails(legacyBookmarkedEmails));\n    }\n  }, [bookmarkedEmails.length, isSessionLoaded, legacyBookmarkedEmails]);\n\n  const addBookmarkedEmail = useCallback((email) => {\n    setBookmarkedEmails(bookmarkEmail(email));\n  }, []);\n\n  return [bookmarkedEmails, addBookmarkedEmail];\n};\n","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 PropTypes from \"prop-types\";\nimport React, { useMemo } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport { useEffectOnce } from \"react-use\";\n\nimport { routeConfig } from \"@agir/front/app/routes.config\";\nimport { addQueryStringParams } from \"@agir/lib/utils/url\";\nimport { useRoute } from \"./hooks\";\nimport { useToast } from \"@agir/front/globalContext/hooks\";\n\nconst ExternalRedirect = (props) => {\n  const { params } = props;\n  const href = params ? addQueryStringParams(props.href, params) : props.href;\n\n  window.location.replace(href);\n\n  return null;\n};\nExternalRedirect.propTypes = {\n  href: PropTypes.string.isRequired,\n  params: PropTypes.object,\n};\n\nconst InternalRedirect = (props) => {\n  const { to, params, state, backLink, toast, ...rest } = props;\n\n  const sendToast = useToast();\n\n  useEffectOnce(() => {\n    if (!toast) {\n      return;\n    }\n    if (typeof toast === \"string\") {\n      return sendToast(toast, \"SUCCESS\");\n    }\n    if (Array.isArray(toast)) {\n      return sendToast(...toast);\n    }\n    if (typeof toast === \"object\") {\n      return sendToast(undefined, undefined, toast);\n    }\n  }, [sendToast, toast]);\n\n  const next = useMemo(() => {\n    const url = params\n      ? addQueryStringParams(to?.pathname || to, params, true)\n      : to?.pathname || to;\n\n    let nextState = { ...state };\n\n    if (backLink) {\n      nextState = nextState || {};\n      if (typeof backLink !== \"string\") {\n        nextState.backLink = backLink;\n      } else if (routeConfig[backLink]) {\n        nextState.backLink = { route: backLink };\n      } else {\n        nextState.backLink = { href: backLink };\n      }\n    }\n\n    return nextState\n      ? {\n          pathname: url.split(\"?\")[0],\n          search: url.split(\"?\")[1] && \"?\" + url.split(\"?\")[1],\n          state: nextState,\n        }\n      : url;\n  }, [to, params, state, backLink]);\n\n  return <Redirect {...rest} to={next} />;\n};\nInternalRedirect.propTypes = {\n  to: PropTypes.string.isRequired,\n  state: PropTypes.object,\n  params: PropTypes.object,\n  backLink: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  toast: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.array,\n    PropTypes.object,\n  ]),\n};\n\nconst RouteRedirect = (props) => {\n  const { route, routeParams, ...rest } = props;\n  const { url, isInternal } = useRoute(route, routeParams);\n\n  return isInternal ? (\n    <InternalRedirect {...rest} to={url} />\n  ) : (\n    <ExternalRedirect {...rest} href={url} />\n  );\n};\nRouteRedirect.propTypes = {\n  route: PropTypes.string.isRequired,\n  routeParams: PropTypes.object,\n};\n\nconst AppRedirect = (props) => {\n  const { route, href, to } = props;\n\n  if (route) {\n    return <RouteRedirect {...props} />;\n  }\n  if (to) {\n    return <InternalRedirect to={to} {...props} />;\n  }\n  if (href) {\n    return <ExternalRedirect {...props} />;\n  }\n\n  return null;\n};\nAppRedirect.propTypes = {\n  route: PropTypes.string,\n  href: PropTypes.string,\n  to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\nexport default AppRedirect;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nconst Counter = ({ value, ...rest }) =>\n  !!value ? (\n    <svg\n      {...rest}\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 16 16\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"inherit\" stroke=\"none\" />\n      <text\n        x=\"8\"\n        y=\"8\"\n        dominantBaseline=\"central\"\n        textAnchor=\"middle\"\n        fontSize={String(value).length > 1 ? \"8px\" : \"10px\"}\n        fontWeight=\"700\"\n        fill=\"#FFFFFF\"\n      >\n        {!isNaN(value) && parseInt(value) > 20 ? \"+20\" : value}\n      </text>\n    </svg>\n  ) : null;\n\nCounter.propTypes = {\n  value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n};\n\nconst CounterBadge = styled(Counter)`\n  fill: ${(props) =>\n    props.$background\n      ? props.theme[props.$background] || props.$background\n      : props.theme.error500};\n  z-index: ${(props) => props.theme.zindexNavigationCounter};\n\n  circle {\n    stroke: ${(props) => props.$border || \"none\"};\n  }\n\n  text {\n    fill: ${(props) =>\n      props.$color\n        ? props.theme[props.$color] || props.$color\n        : props.theme.white};\n  }\n`;\n\nexport default CounterBadge;\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 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.js\";\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 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\";\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 PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport BottomBar from \"@agir/front/app/Navigation/BottomBar\";\n\nconst StyledContainer = styled.div`\n  padding-top: 24px;\n  padding-bottom: 24px;\n  background-color: ${(props) =>\n    props.$smallBackgroundColor\n      ? props.theme[props.$smallBackgroundColor] || props.$smallBackgroundColor\n      : \"transparent\"};\n`;\n\nconst MobileLayout = (props) => {\n  const { children } = props;\n\n  return (\n    <StyledContainer {...props}>\n      <section>{children}</section>\n      <BottomBar {...props} />\n    </StyledContainer>\n  );\n};\n\nexport default MobileLayout;\n\nMobileLayout.propTypes = {\n  children: PropTypes.node,\n};\n","import PropTypes from \"prop-types\";\nimport React, { useCallback, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nconst Image = styled.div`\n  flex: 0 0 130px;\n  width: 100%;\n  background-repeat: no-repeat;\n  background-size:\n    0 0,\n    cover;\n  background-position: center center;\n  border-radius: ${(props) => props.theme.borderRadius};\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    flex: 0 0 80px;\n    height: 80px;\n    border-radius: 0;\n    background-size:\n      cover,\n      0 0;\n  }\n`;\n\nconst Container = styled.article`\n  display: flex;\n  flex-flow: column nowrap;\n  align-items: stretch;\n  justify-content: flex-start;\n  max-width: 255px;\n  cursor: ${({ $isClickable }) => ($isClickable ? \"pointer\" : \"default\")};\n\n  & + & {\n    margin-top: 1.5rem;\n  }\n\n  div + div {\n    margin-top: 1rem;\n  }\n\n  h3,\n  p {\n    line-height: 1.45;\n    overflow: hidden;\n    font-size: 0.875rem;\n  }\n\n  h3 {\n    display: block;\n    margin: 0;\n    margin-bottom: 0.125rem;\n    font-weight: 700;\n    color: ${(props) => props.theme.primary500};\n\n    a,\n    span {\n      color: inherit;\n    }\n  }\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    flex-flow: row nowrap;\n    border: 1px solid ${(props) => props.theme.primary500};\n    padding: 1rem;\n    border-radius: 4px;\n    max-width: 100%;\n    height: 112px;\n    box-shadow: 0px 3px 2px rgba(0, 35, 44, 0.05);\n\n    & + & {\n      margin-top: 0;\n    }\n\n    div {\n      max-height: 72px;\n      overflow: hidden;\n    }\n\n    div + div {\n      margin-top: 0;\n      margin-left: 1rem;\n    }\n\n    h3,\n    a {\n      color: ${(props) => props.theme.primary500};\n    }\n\n    p {\n      font-size: 0.75rem;\n    }\n  }\n`;\n\nconst Announcement = (props) => {\n  const { title, content, image, link } = props;\n  const linkRef = useRef(null);\n  const handleClick = useCallback(() => {\n    linkRef.current && linkRef.current.click();\n  }, []);\n  return (\n    <Container $isClickable={!!link} onClick={handleClick}>\n      {image && image.mobile && image.desktop ? (\n        <Image\n          aria-label={title}\n          style={{\n            backgroundImage: `url(${image.mobile}), url(${image.desktop})`,\n          }}\n        />\n      ) : null}\n      <div>\n        <h3>\n          {link ? (\n            <a ref={linkRef} href={link}>\n              {title}\n            </a>\n          ) : (\n            <span>{title}</span>\n          )}\n        </h3>\n        <p dangerouslySetInnerHTML={{ __html: content }} />\n      </div>\n    </Container>\n  );\n};\n\nAnnouncement.propTypes = {\n  title: PropTypes.string.isRequired,\n  content: PropTypes.string.isRequired,\n  image: PropTypes.shape({\n    desktop: PropTypes.string,\n    mobile: PropTypes.string,\n  }),\n  link: PropTypes.string,\n};\n\nexport default Announcement;\n","import React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport useSWR from \"swr\";\n\nimport { routeConfig } from \"@agir/front/app/routes.config\";\n\nimport Announcement from \"@agir/front/genericComponents/Announcement\";\n\nconst Announcements = () => {\n  const { pathname } = useLocation();\n\n  const markAsDisplayed = routeConfig.activities.match(pathname) ? \"0\" : \"1\";\n\n  const { data: announcements } = useSWR(\n    \"/api/announcements/?mark_as_displayed=\" + markAsDisplayed,\n  );\n\n  if (!Array.isArray(announcements) || announcements.length === 0) return null;\n\n  return announcements.map((announcement) => (\n    <Announcement key={announcement.id} {...announcement} />\n  ));\n};\n\nexport default Announcements;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport useSWR from \"swr\";\n\nimport Button from \"@agir/front/genericComponents/Button\";\n\nimport { useCustomAnnouncement } from \"@agir/activity/common/hooks\";\nimport { useMobileApp } from \"@agir/front/app/hooks\";\n\nimport facebookLogo from \"@agir/front/genericComponents/logos/facebook.svg\";\nimport facebookWhiteLogo from \"@agir/front/genericComponents/logos/facebook_white.svg\";\n\nconst FacebookLoginContainer = styled.div`\n  background-color: ${(props) => props.theme.facebookLight};\n  color: ${(props) => props.theme.black};\n  max-width: 15.9375rem;\n  border-radius: ${(props) => props.theme.borderRadius};\n  padding: 1.5rem;\n  font-size: 0.875rem;\n  margin-bottom: 1rem;\n\n  h6 {\n    color: inherit;\n  }\n`;\n\nconst DismissMessage = styled.a`\n  color: ${(props) => props.theme.black};\n  text-decoration: underline;\n  margin-top: 1rem;\n\n  &:hover {\n    color: ${(props) => props.theme.black};\n  }\n`;\n\nconst FacebookLoginAd = () => {\n  const [announcement, dismissCallback] =\n    useCustomAnnouncement(\"facebook-login-ad\");\n\n  const { data: session } = useSWR(\"/api/session/\");\n  const { isIOS } = useMobileApp();\n\n  return session && !session.facebookLogin && !isIOS && announcement ? (\n    <FacebookLoginContainer>\n      <img\n        src={facebookLogo}\n        width=\"32\"\n        height=\"32\"\n        style={{ height: \"32px\", marginBottom: \"6px\" }}\n        alt=\"Facebook\"\n      />\n      <h6>Facilitez vos prochaines connexions</h6>\n      <p>\n        Connectez votre compte à Facebook maintenant pour ne pas avoir à taper\n        de code la prochaine fois.\n      </p>\n      <Button\n        style={{ margin: \"16px 0\" }}\n        small\n        color=\"facebook\"\n        link\n        route=\"facebookLogin\"\n      >\n        <img\n          style={{ height: \"16px\", marginRight: \"5px\" }}\n          src={facebookWhiteLogo}\n          width=\"16\"\n          height=\"16\"\n        />\n        Connecter le compte\n      </Button>\n      <DismissMessage href=\"#\" onClick={dismissCallback}>\n        Ne plus afficher ce message\n      </DismissMessage>\n    </FacebookLoginContainer>\n  ) : null;\n};\n\nexport default FacebookLoginAd;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport Link from \"@agir/front/app/Link\";\n\nconst StyledLink = styled(Link)``;\n\nconst StyledMenu = styled.ul`\n  width: 100%;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  list-style-type: none;\n  font-weight: 400;\n  color: ${(props) => props.theme.text500};\n\n  h6 {\n    font-size: 12px;\n    line-height: 15px;\n    color: ${(props) => props.theme.text500};\n    margin-bottom: 0.5rem;\n    font-weight: bold;\n    overflow-wrap: break-word;\n  }\n\n  li {\n    display: block;\n    line-height: 1.2;\n    margin: 0 0 0.5rem;\n    white-space: nowrap;\n    overflow: hidden;\n    max-width: 100%;\n    text-overflow: ellipsis;\n\n    ${StyledLink} {\n      &,\n      &:hover,\n      &:focus,\n      &:active {\n        color: ${(props) => props.theme.text700};\n        font-weight: 400;\n        font-size: 13px;\n        line-height: inherit;\n      }\n    }\n  }\n`;\n\nconst SecondaryMenu = ({ title, links, ...rest }) =>\n  Array.isArray(links) && links.length > 0 ? (\n    <StyledMenu {...rest}>\n      {title ? <h6>{title}</h6> : null}\n      {links.map((link) => (\n        <li key={link.id}>\n          <StyledLink\n            href={link.href || undefined}\n            route={link.route || undefined}\n            to={link.to || undefined}\n            title={link.title || link.label}\n          >\n            {link.title || link.label}\n          </StyledLink>\n        </li>\n      ))}\n    </StyledMenu>\n  ) : null;\n\nSecondaryMenu.propTypes = {\n  title: PropTypes.string,\n  links: PropTypes.arrayOf(\n    PropTypes.shape({\n      href: PropTypes.string,\n      route: PropTypes.string,\n      to: PropTypes.string,\n      title: PropTypes.string,\n      label: PropTypes.string,\n    }),\n  ),\n};\n\nexport default SecondaryMenu;\n","import PropTypes from \"prop-types\";\nimport React, { useMemo } from \"react\";\nimport styled from \"styled-components\";\n\nimport CONFIG from \"@agir/front/app/Navigation/navigation.config\";\n\nimport CounterBadge from \"@agir/front/app/Navigation/CounterBadge\";\nimport Link from \"@agir/front/app/Link\";\nimport { RawFeatherIcon } from \"@agir/front/genericComponents/FeatherIcon\";\nimport SecondaryMenu from \"./SecondaryMenu\";\n\nconst MenuLink = styled(Link)`\n  position: relative;\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  height: 1.5rem;\n\n  font-size: 1rem;\n  line-height: 1.5;\n  font-weight: 600;\n  color: ${({ $active, theme }) => ($active ? theme.primary500 : \"inherit\")};\n\n  &:hover,\n  &:focus {\n    color: ${({ $active, theme }) => ($active ? theme.primary500 : \"inherit\")};\n    text-decoration: none;\n  }\n\n  ${CounterBadge} {\n    position: absolute;\n    left: 14px;\n    top: -5px;\n  }\n\n  ${RawFeatherIcon} {\n    display: inline-block;\n    line-height: 0;\n    color: ${({ $active, theme }) =>\n      $active ? theme.primary500 : theme.text500};\n    margin-right: 1rem;\n  }\n\n  ${RawFeatherIcon}:last-child {\n    align-self: baseline;\n    margin-right: 0;\n    margin-left: 0.5rem;\n  }\n\n  i {\n    margin-right: 1rem;\n    font-size: 1.3em;\n\n    color: ${({ $active, theme }) =>\n      $active ? theme.primary500 : theme.text500};\n  }\n`;\n\nconst LINKS = CONFIG.menuLinks.filter(({ desktop }) => !!desktop);\n\nconst NavigationLink = ({\n  link,\n  active,\n  routes,\n  unreadMessageCount = 0,\n  unreadActivityCount = 0,\n}) => {\n  const secondaryLinks = useMemo(() => {\n    if (!routes) {\n      return null;\n    }\n    if (Array.isArray(link.secondaryLinks)) {\n      return link.secondaryLinks;\n    }\n\n    return routes[link.secondaryLinks];\n  }, [routes, link.secondaryLinks]);\n\n  return (\n    <li style={{ marginBottom: \"1.5rem\" }}>\n      <MenuLink route={link.route} $active={active === link.id}>\n        {link.unreadMessageBadge && <CounterBadge value={unreadMessageCount} />}\n        {link.unreadActivityBadge && (\n          <CounterBadge value={unreadActivityCount} />\n        )}\n        {link.icon?.includes(\"fa-\") ? (\n          <i className={`fa-regular ${link.icon}`} />\n        ) : (\n          <RawFeatherIcon name={link.icon} />\n        )}\n        <span>{link.title}</span>\n        {link.external && (\n          <RawFeatherIcon\n            name=\"external-link\"\n            inline\n            strokeWidth={1.33}\n            width=\"1rem\"\n            height=\"1rem\"\n          />\n        )}\n      </MenuLink>\n      <SecondaryMenu style={{ marginTop: \".5rem\" }} links={secondaryLinks} />\n    </li>\n  );\n};\n\nconst Navigation = (props) => {\n  return (\n    <ul style={{ listStyle: \"none\", padding: 0 }}>\n      {LINKS.map((link) => (\n        <NavigationLink key={link.id} {...props} link={link} />\n      ))}\n    </ul>\n  );\n};\n\nNavigation.propTypes = {\n  active: PropTypes.string,\n  unreadActivityCount: PropTypes.number,\n  unreadMessageCount: PropTypes.number,\n  routes: PropTypes.object,\n};\nexport default Navigation;\n","import PropTypes from \"prop-types\";\nimport React, { useMemo } from \"react\";\n\nimport CONFIG from \"@agir/front/app/Navigation/navigation.config\";\n\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\nimport { getRoutes, getUser } from \"@agir/front/globalContext/reducers\";\nimport { useUnreadMessageCount } from \"@agir/msgs/common/hooks\";\nimport { useUnreadActivityCount } from \"@agir/activity/common/hooks\";\n\nimport SideBar from \"./SideBar\";\nimport SecondaryMenu from \"./SecondaryMenu\";\n\nexport const SecondarySideBar = () => (\n  <SecondaryMenu\n    title=\"LIENS\"\n    links={CONFIG.secondaryLinks}\n    style={{ padding: 0 }}\n  />\n);\n\nconst ConnectedSideBar = (props) => {\n  const unreadActivityCount = useUnreadActivityCount();\n  const unreadMessageCount = useUnreadMessageCount();\n  const routes = useSelector(getRoutes);\n  const user = useSelector(getUser);\n\n  const userRoutes = useMemo(\n    () =>\n      user && user?.groups.length > 0\n        ? {\n            ...routes,\n            userGroups: user.groups.map((group) => ({\n              id: group.id,\n              label: group.name,\n              to: group.link,\n            })),\n          }\n        : routes,\n    [user, routes],\n  );\n\n  return (\n    <SideBar\n      {...props}\n      unreadActivityCount={unreadActivityCount}\n      unreadMessageCount={unreadMessageCount}\n      routes={userRoutes}\n    />\n  );\n};\n\nexport default ConnectedSideBar;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport useSWR from \"swr\";\n\nimport ActionButtons from \"@agir/front/app/ActionButtons/ActionButtons\";\nimport Announcements from \"@agir/front/app/Announcements\";\nimport FacebookLoginAd from \"@agir/front/app/FacebookLoginAd\";\nimport { LayoutTitle, LayoutSubtitle } from \"./StyledComponents\";\nimport SideBar, { SecondarySideBar } from \"@agir/front/app/Navigation/SideBar\";\nimport Spacer from \"@agir/front/genericComponents/Spacer\";\nimport UpcomingEvents from \"@agir/events/common/UpcomingEvents\";\n\nconst LeftColumn = styled.aside`\n  position: sticky;\n  top: 3rem;\n  z-index: ${(props) => props.theme.zindexMainContent};\n`;\nconst MainColumn = styled.div``;\nconst RightColumn = styled.aside``;\n\nconst MainContainer = styled.div`\n  width: 100%;\n  max-width: 1442px;\n  margin: 0 auto;\n  padding: 0 50px 3rem;\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n\n  ${LeftColumn} {\n    padding: 3rem 2rem 0 0;\n    flex: 0 0 255px;\n    min-width: 1px;\n\n    @media (max-width: ${(props) => props.theme.collapseTablet}px) {\n      display: none;\n    }\n  }\n\n  ${RightColumn} {\n    padding: 3rem 0 0 2rem;\n    flex: 0 0 255px;\n\n    h4 {\n      margin: 0 0 0.5rem;\n      line-height: 1.5;\n    }\n  }\n\n  ${MainColumn} {\n    padding: 3rem 0 0;\n    flex: 0 1 725px;\n    margin: 0 auto;\n\n    @media (max-width: ${(props) => props.theme.collapseTablet}px) {\n      flex-grow: 1;\n    }\n  }\n`;\n\nconst Layout = (props) => {\n  const { title, subtitle, children } = props;\n\n  const { data: events } = useSWR(\"/api/evenements/rsvped/\");\n\n  return (\n    <MainContainer {...props}>\n      <LeftColumn>\n        <SideBar {...props} />\n      </LeftColumn>\n      <MainColumn>\n        <section>\n          {props.title ? (\n            <header>\n              <LayoutTitle>{title}</LayoutTitle>\n              <LayoutSubtitle>{subtitle}</LayoutSubtitle>\n            </header>\n          ) : null}\n          {children}\n        </section>\n      </MainColumn>\n      <RightColumn>\n        <div>\n          <h4>Moyens d'action</h4>\n          <ActionButtons />\n        </div>\n        <Spacer size=\"2rem\" />\n        {Array.isArray(events) && events.length > 0 ? (\n          <>\n            <div>\n              <h4>Mes événements prévus</h4>\n              <UpcomingEvents orientation=\"vertical\" events={events} />\n            </div>\n            <Spacer size=\"2rem\" />\n          </>\n        ) : null}\n        <FacebookLoginAd />\n        <Announcements />\n        <SecondarySideBar />\n      </RightColumn>\n    </MainContainer>\n  );\n};\n\nexport default Layout;\n\nLayout.propTypes = {\n  title: PropTypes.string,\n  subtitle: PropTypes.string,\n  children: PropTypes.node,\n};\n","import React from \"react\";\n\nimport { useResponsiveMemo } from \"@agir/front/genericComponents/grid\";\n\nimport MobileLayout from \"./MobileLayout\";\nimport DesktopLayout from \"./DesktopLayout\";\n\nconst Layout = (props) => {\n  const Component = useResponsiveMemo(MobileLayout, DesktopLayout);\n  return <Component {...props} />;\n};\n\nexport default Layout;\n","import Layout from \"./Layout\";\n\nexport default Layout;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { ErrorBoundary as SentryErrorBoundary } from \"@sentry/react\";\n\nimport ErrorPage from \"@agir/front/errorPage/ErrorPage\";\n\nimport generateLogger from \"@agir/lib/utils/logger\";\n\nconst logger = generateLogger(__filename);\n\nclass DevErrorBoundary extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      errorMessage: \"\",\n    };\n  }\n\n  static getDerivedStateFromError(error) {\n    return {\n      errorMessage: error !== undefined ? error.toString() : `Une erreur s'est produite`,\n    };\n  }\n\n  componentDidCatch(error, info) {\n    logger.debug(error, info);\n  }\n\n  render() {\n    const { children, Fallback: CustomFallback } = this.props;\n    const { errorMessage } = this.state;\n\n    if (!errorMessage) {\n      return children;\n    }\n\n    if (CustomFallback) {\n      return <CustomFallback {...this.props} errorMessage={errorMessage} />;\n    }\n\n    return <ErrorPage errorMessage={errorMessage} />;\n  }\n}\n\nconst ProdErrorBoundary = (props) => {\n  const { children, Fallback: CustomFallback } = props;\n\n  const fallback = ({ error }) =>\n    CustomFallback ? (\n      <CustomFallback {...props} errorMessage={error.toString()} />\n    ) : (\n      <ErrorPage />\n    );\n\n  return (\n    <SentryErrorBoundary fallback={fallback}>{children}</SentryErrorBoundary>\n  );\n};\n\nDevErrorBoundary.propTypes = ProdErrorBoundary.propTypes = {\n  children: PropTypes.node,\n  Fallback: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n};\n\nconst ErrorBoundary =\n  process.env.NODE_ENV === \"production\" ? ProdErrorBoundary : DevErrorBoundary;\n\nexport default ErrorBoundary;\n","import useSWR from \"swr\";\nimport axios from \"@agir/lib/utils/axios\";\n\n\nexport const useActiveBannerAnnouncement = () =>\n    useSWR(\"/api/activite/bannerannouncements/\")\n\nexport const answerToBannerAnnouncement = (announcementId, answerId) =>\n    axios.put(`/api/activite/bannerannouncements/${announcementId}/answer/${answerId}`)\n\nexport const closeBannerAnnouncement = (announcementId) => axios.get(`/api/activite/bannerannouncements/${announcementId}/close`)","import React from \"react\"\nimport styled, {keyframes} from \"styled-components\";\n\nconst SpinnerAnimation = keyframes`\n    from {\n        transform: rotate(0deg);\n    }\n    to {\n        transform: rotate(360deg);\n    }\n`\nconst Loader = styled.i`\n    font-size: 1.6em;\n    animation-name: ${SpinnerAnimation};\n    animation-duration: 2s;\n    animation-timing-function: ease;\n    animation-iteration-count: infinite;\n`\n\nexport default function Spinner() {\n    return <Loader className=\"fa fa-solid fa-loader\"/>\n}","import styled, {keyframes} from \"styled-components\";\nimport {\n    answerToBannerAnnouncement, closeBannerAnnouncement,\n    useActiveBannerAnnouncement\n} from \"@agir/activity/BannerAnnouncements/useBannerAnnouncements\";\nimport React, {useEffect, useState} from \"react\"\nimport Button from \"@agir/front/genericComponents/Button\";\nimport {useMutate} from \"@agir/front/app/apiHook\";\nimport Spinner from \"@agir/front/genericComponents/Spinner\";\nimport {useTransition, animated} from \"@react-spring/web\";\n\nconst BackgroundAnimation = keyframes`\n    from {\n        opacity: 0;\n    }\n    to {\n        opacity: 1;\n    }\n`\n\nconst Banner = styled.div`\n    position: relative;\n    width: 100vw;\n    min-height: 150px;\n    background-color: ${(props) => props.theme.primary500};\n    color: ${(props) => props.theme.text25};\n    flex-direction: column;\n    align-items: center;\n    align-content: center;\n    text-align: center;\n    \n    animation-name: ${BackgroundAnimation};\n    animation-duration: 1.4s;\n    animation-timing-function: ease;\n    animation-fill-mode: forwards;\n    \n    h3 {\n        font-weight: bold;\n    }\n    h2, h3, h4 {\n        text-align: center;\n        color: ${(props) => props.theme.text25};\n        margin-bottom: 0.7em;\n        font-size: 1.2em;\n        margin-top: 0;\n        padding-top: 0.7em; \n    }\n    span {\n        max-width: 800px;\n        a {\n            color: ${(props) => props.theme.text25};\n            text-decoration: underline;\n        }\n    }\n\n    @media (max-width: 700px) {\n        p {\n            text-align: center;\n            padding-top: 2px;\n            padding-right: 12px;\n            padding-left: 12px;\n        }\n        h2, h3, h4 {\n            margin-bottom: 0.2em;\n\n        }\n    }\n`\nconst Answers = styled.div`\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 0.5em;\n    height: 2.8em;\n    padding-top: 0.1em;\n    padding-bottom: 0.5em;\n    justify-content: center;\n\n    @media (max-width: 600px) {\n        flex-direction: column;\n        margin-bottom: 0.7em;\n        height: auto;\n    }\n`\nconst BannerAnnouncementDone = styled.div`\n    width: 100vw;\n    min-height: 150px;\n    background-color: #17a460;\n    \n    animation-name: ${BackgroundAnimation};\n    animation-duration: 1.4s;\n    animation-timing-function: ease;\n    animation-fill-mode: forwards;\n`\n\nconst Close = styled.div`\n    position: absolute;\n    top: 8px;\n    right: 15px;\n    \n    cursor: pointer;\n    \n    font-size: 1.5em;\n`\n\nexport default function BannerAnnouncement() {\n    const [currentAnnouncement, setCurrentAnnouncement] = useState()\n    const [done, setDone] = useState(false);\n    const [selectedAnswer, setSelectedAnswer] = useState()\n\n    const [announcementsHandled, setAnnouncementsHandled] = useState([])\n\n    const {data: announcements, mutate: refresh} = useActiveBannerAnnouncement()\n    const {mutate: mutateAnswer, isLoading, error} = useMutate(answerToBannerAnnouncement, () => {\n        setDone(true)\n    })\n\n    const transitions = useTransition(announcements?.length > 0 || !!currentAnnouncement, {\n        from: { opacity: 0 },\n        enter: { opacity: 1 },\n        leave: { opacity: 0 },\n        config: {duration: 1300}\n    });\n\n    useEffect(() => {\n        const announcement = announcements?.[0]\n        if (announcement && !announcementsHandled.includes(announcement?.id) && !done) {\n            setCurrentAnnouncement(announcement)\n        }\n    }, [announcementsHandled, announcements, done]);\n\n    async function userAnswer(answer) {\n        setSelectedAnswer(answer)\n        await mutateAnswer(currentAnnouncement.id, answer.id)\n        await refresh()\n    }\n\n    function AnnouncementDone() {\n        return <BannerAnnouncementDone>\n                <h4>{currentAnnouncement.question} {selectedAnswer.name} <i className=\"fa fa-circle-check\"/></h4>\n                <p dangerouslySetInnerHTML={{__html: currentAnnouncement.afterMessage}}/>\n\n                <Button small onClick={nextAnnouncement}>Fermer</Button>\n            </BannerAnnouncementDone>\n    }\n\n    async function nextAnnouncement() {\n        await refresh()\n        setAnnouncementsHandled((prev) => {\n            return [...prev, currentAnnouncement.id];\n        })\n        setCurrentAnnouncement(undefined)\n        setDone(false)\n    }\n\n    async function closeAnnouncement() {\n        if (currentAnnouncement) {\n            const result = await closeBannerAnnouncement(currentAnnouncement.id);\n            if (result.status === 204) {\n                await nextAnnouncement()\n            }\n        }\n    }\n\n    const hasAnswers = !!currentAnnouncement?.answers?.length\n    return <>\n        {transitions((style, item) => {\n                return item && (\n                    <animated.div style={style}>\n                        <Banner>\n                            {!currentAnnouncement ? <Spinner/> : done ? <AnnouncementDone/> : <>\n                                <h3>{currentAnnouncement.title}</h3>\n                                {isLoading ? <Spinner/> : hasAnswers && <Answers>\n                                    {currentAnnouncement.question && <h4>{currentAnnouncement.question}</h4>}\n                                    {\n                                        currentAnnouncement.answers?.map((answer) => {\n                                            return <Button small onClick={() => userAnswer(answer)}\n                                                           key={answer.name}>{answer.name}</Button>\n                                        })\n                                    }\n                                </Answers>}\n                                {!isLoading &&\n                                    <span dangerouslySetInnerHTML={{__html: currentAnnouncement.description}}/>}\n                            </>}\n                            {!hasAnswers && <Close onClick={closeAnnouncement}><i className=\"fa fa-xmark\"/></Close>}\n                        </Banner>\n                    </animated.div>\n                );\n            }\n        )}\n    </>\n}\n","import PropTypes from \"prop-types\";\nimport React, { Suspense, useEffect, useMemo } from \"react\";\nimport { useHistory, useLocation, useParams } from \"react-router-dom\";\nimport styled from \"styled-components\";\n\nimport {\n  setAdminLink,\n  setBackLink,\n  setPageTitle,\n  setTopBarRightLink,\n} from \"@agir/front/globalContext/actions\";\nimport {\n  useDispatch,\n  useSelector,\n} from \"@agir/front/globalContext/GlobalContext\";\nimport { getIsSessionLoaded } from \"@agir/front/globalContext/reducers\";\n\nimport Layout from \"@agir/front/app/Layout\";\n\nimport logger from \"@agir/lib/utils/logger\";\nimport ErrorBoundary from \"./ErrorBoundary\";\n\nimport Redirect from \"./Redirect\";\nimport BannerAnnouncement from \"@agir/activity/BannerAnnouncements/BannerAnnouncement\";\nimport FloatButton from \"@agir/front/allPages/FloatButton\";\nimport HelpButton from \"@agir/front/allPages/HelpButton\";\nimport FeedbackButton from \"@agir/front/allPages/FeedbackButton\";\n\nconst log = logger(__filename);\n\nconst StyledPage = styled.div`\n  isolation: isolate;\n  padding-top: ${({ $hasTopBar }) => ($hasTopBar ? \"calc(var(--safe-area-inset-top, env(safe-area-inset-top)) + var(--top-bar-height))\" : \"0\")};\n`;\n\nconst Page = (props) => {\n  const { Component, routeConfig, hasTopBar, ...rest } = props;\n\n  const dispatch = useDispatch();\n  const isSessionLoaded = useSelector(getIsSessionLoaded);\n\n  const history = useHistory();\n  const routeParams = useParams();\n  const { pathname } = useLocation();\n\n  useMemo(() => {\n    if (!routeConfig.isPartial) {\n      dispatch(setBackLink(null));\n      dispatch(setTopBarRightLink(null));\n      dispatch(setAdminLink(null));\n      dispatch(setPageTitle(routeConfig?.label || null));\n    }\n    //eslint-disable-next-line\n  }, [pathname, routeConfig]);\n\n  useMemo(() => {\n    if (!isSessionLoaded || !routeConfig.backLink) {\n      return;\n    }\n    let link = routeConfig.backLink;\n    if (typeof link === \"object\" && !Array.isArray(link)) {\n      link.routeParams = {\n        ...routeParams,\n        ...(link.routeParams || {}),\n      };\n    }\n    dispatch(setBackLink(link));\n\n    //eslint-disable-next-line\n  }, [pathname, isSessionLoaded, dispatch, routeConfig]);\n\n  useMemo(() => {\n    if (!isSessionLoaded || !routeConfig.topBarRightLink) {\n      return;\n    }\n    let link = routeConfig.backLink;\n    if (typeof link === \"object\" && !Array.isArray(link)) {\n      link.routeParams = {\n        ...routeParams,\n        ...(link.routeParams || {}),\n      };\n    }\n    dispatch(setTopBarRightLink(routeConfig.topBarRightLink));\n    //eslint-disable-next-line\n  }, [pathname, isSessionLoaded, dispatch, routeConfig]);\n\n  useEffect(() => {\n    let unlisten = history.listen((location, action) => {\n      log.debug(\n        `Navigate ${action} ${location.pathname}${location.search}${location.hash}`,\n        JSON.stringify(history, null, 2),\n      );\n    });\n\n    return () => unlisten();\n  }, [history]);\n\n  useMemo(() => {\n    if (!routeConfig.keepScroll) {\n      typeof window !== \"undefined\" &&\n        !!window.scrollTo &&\n        window.scrollTo(0, 0);\n    }\n  }, [routeConfig]);\n\n  if (typeof routeConfig.redirectTo === \"function\") {\n    const redirectProps = routeConfig.redirectTo(pathname, routeParams);\n    return typeof redirectProps === \"string\" ? (\n      <Redirect route={redirectProps} />\n    ) : (\n      <Redirect {...redirectProps} />\n    );\n  }\n\n  if (routeConfig.isPartial) {\n    return (\n      <ErrorBoundary>\n        <Suspense fallback={<div />}>\n          <Component route={routeConfig} {...routeParams} {...rest} />\n        </Suspense>\n      </ErrorBoundary>\n    );\n  }\n\n  if (!routeConfig.hasLayout) {\n    return (\n      <ErrorBoundary>\n        <StyledPage $hasTopBar={hasTopBar}>\n          <Suspense fallback={<div style={{ minHeight: \"100vh\" }} />}>\n            <Component route={routeConfig} {...routeParams} {...rest} />\n            <HelpButton />\n          </Suspense>\n        </StyledPage>\n      </ErrorBoundary>\n    );\n  }\n\n  return (\n    <ErrorBoundary>\n      <StyledPage $hasTopBar={hasTopBar}>\n        <BannerAnnouncement />\n        <Layout {...(routeConfig?.layoutProps || {})} active={routeConfig.id}>\n          <Suspense fallback={<div style={{ minHeight: \"100vh\" }} />}>\n            <Component route={routeConfig} {...routeParams} {...rest} />\n            <HelpButton />\n          </Suspense>\n        </Layout>\n      </StyledPage>\n    </ErrorBoundary>\n  );\n};\nPage.propTypes = {\n  Component: PropTypes.elementType,\n  routeConfig: PropTypes.object.isRequired,\n  hasTopBar: PropTypes.bool,\n};\n\nexport default Page;\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 PropTypes from \"prop-types\";\nimport React, { useEffect } from \"react\";\nimport {\n  BrowserRouter,\n  Redirect,\n  Route,\n  Switch,\n  useLocation,\n} from \"react-router-dom\";\nimport ScrollMemory from \"react-router-scroll-memory\";\n\nimport { useAppLoader, useMobileApp } from \"@agir/front/app/hooks\";\nimport { useAuthentication } from \"@agir/front/authentication/hooks\";\nimport routes, { BASE_PATH, routeConfig } from \"./routes.config\";\nimport useTracking from \"./useTracking\";\n\nimport ConnectivityWarning from \"@agir/front/app/ConnectivityWarning\";\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 Page from \"./Page\";\n\nimport logger from \"@agir/lib/utils/logger\";\nimport ModalMissingNewsletter from \"@agir/front/app/ModalMissingNewsletter\";\n\nconst log = logger(__filename);\n\nexport const ProtectedComponent = (props) => {\n  const { route, ...rest } = props;\n  const { Component, AnonymousComponent = null } = route;\n\n  const location = useLocation();\n  const isAuthorized = useAuthentication(route);\n\n  useAppLoader(isAuthorized !== null);\n  useEffect(() => {\n    if (isAuthorized === null) {\n      return;\n    }\n    const PreloadedComponent = isAuthorized ? Component : AnonymousComponent;\n    if (\n      PreloadedComponent &&\n      typeof PreloadedComponent.preload === \"function\"\n    ) {\n      log.debug(\"Preloading\", PreloadedComponent);\n      PreloadedComponent.preload();\n    }\n  }, [isAuthorized, AnonymousComponent, Component]);\n\n  if (isAuthorized === null) {\n    return null;\n  }\n\n  if (isAuthorized === true) {\n    return <Page Component={Component} routeConfig={route} {...rest} />;\n  }\n\n  if (AnonymousComponent) {\n    const routeConfig = route.anonymousConfig\n      ? {\n          ...route,\n          ...route.anonymousConfig,\n        }\n      : route;\n    return (\n      <Page\n        Component={AnonymousComponent}\n        routeConfig={routeConfig}\n        {...rest}\n      />\n    );\n  }\n\n  return (\n    <Redirect\n      to={{\n        pathname: routeConfig.login.getLink(),\n        state: { next: location.pathname },\n      }}\n    />\n  );\n};\nProtectedComponent.propTypes = {\n  route: PropTypes.object.isRequired,\n};\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      <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              {!route.hideConnectivityWarning && (\n                <ConnectivityWarning hasTopBar={hasTopBar} />\n              )}\n              <ProtectedComponent route={route} hasTopBar={hasTopBar} />\n            </Route>\n          );\n        })}\n        <Route key=\"not-found\">\n          <NotFoundPage />\n        </Route>\n      </Switch>\n      {children}\n      <Footer />\n    </BrowserRouter>\n  );\n};\n\nRouter.propTypes = {\n  children: PropTypes.node,\n};\nexport default Router;\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useSessionStorage } from \"react-use\";\nimport useSWR from \"swr\";\nimport useSWRImmutable from \"swr/immutable\";\nimport useSWRInfinite from \"swr/infinite\";\n\nimport {\n  setActivityAsInteracted,\n  getActivityEndpoint,\n} from \"@agir/activity/common/api\";\nimport { ACTIVITY_STATUS } from \"@agir/activity/common/helpers\";\n\nconst ACTIVITY_PAGE_SIZE = 10;\n\nexport const useActivities = () => {\n  const { data, error, mutate, size, setSize, isValidating } = useSWRInfinite(\n    (index) =>\n      getActivityEndpoint(\"activities\", {\n        page: index + 1,\n        pageSize: ACTIVITY_PAGE_SIZE,\n      }),\n  );\n\n  const activities = useMemo(() => {\n    const activities = {};\n    const activityIds = [];\n    if (Array.isArray(data)) {\n      data.forEach(({ results }) => {\n        if (Array.isArray(results)) {\n          results.forEach((activity) => {\n            if (!activities[activity.id]) {\n              activities[activity.id] = activity;\n              activityIds.push(activity.id);\n            }\n          });\n        }\n      });\n    }\n    return activityIds.map((id) => activities[id]);\n  }, [data]);\n\n  const isLoadingInitialData = !data && !error;\n\n  const isLoadingMore =\n    isLoadingInitialData ||\n    (size > 0 && data && typeof data[size - 1] === \"undefined\");\n\n  const activityCount = (data && data[data.length - 1]?.count) || 0;\n  const isEmpty = activityCount === 0;\n  const isReachingEnd =\n    isEmpty ||\n    activities.length === activityCount ||\n    (data && data[data.length - 1]?.results?.length < ACTIVITY_PAGE_SIZE);\n  const isRefreshing = isValidating && data && data.length === size;\n\n  const loadMore = useCallback(() => setSize(size + 1), [setSize, size]);\n\n  return {\n    activities,\n    error,\n    isLoadingInitialData,\n    isLoadingMore,\n    isRefreshing,\n    loadMore: isEmpty || isReachingEnd ? undefined : loadMore,\n    mutate,\n  };\n};\n\nexport const useUnreadActivityCount = () => {\n  const [isReady, setIsReady] = useState(false);\n  const { data: session } = useSWR(\"/api/session/\");\n  const { data } = useSWR(\n    isReady && getActivityEndpoint(\"unreadActivityCount\"),\n    {\n      dedupingInterval: 10000,\n      focusThrottleInterval: 10000,\n    },\n  );\n\n  useEffect(() => {\n    if (session?.user) {\n      setIsReady(true);\n    }\n  }, [session]);\n\n  return data?.unreadActivityCount || 0;\n};\n\nexport const useCustomAnnouncement = (slug, shouldPause = true) => {\n  const [wasPaused, setIsPaused] = useSessionStorage(`AP__${slug}__p`);\n  const { data: session } = useSWR(\"/api/session/\");\n\n  const isPaused = shouldPause && wasPaused;\n  const { data, mutate, error } = useSWRImmutable(\n    !isPaused && session?.user && slug\n      ? getActivityEndpoint(\"customAnnouncement\", { slug })\n      : null,\n  );\n  const errorStatus = error?.response?.status;\n  const announcement =\n    !data?.id || data?.status === ACTIVITY_STATUS.STATUS_INTERACTED\n      ? null\n      : data;\n\n  const activityId = announcement?.activityId;\n  const dismissCallback = useCallback(async () => {\n    if (!activityId) {\n      return;\n    }\n    await setActivityAsInteracted(activityId);\n\n    mutate(\n      (announcement) => ({\n        ...announcement,\n        status: ACTIVITY_STATUS.STATUS_INTERACTED,\n      }),\n      false,\n    );\n  }, [activityId, mutate]);\n\n  useEffect(() => {\n    shouldPause && errorStatus === 404 && setIsPaused(true);\n  }, [shouldPause, setIsPaused, errorStatus]);\n\n  const isLoading =\n    !isPaused && errorStatus !== 404 && typeof data === \"undefined\";\n\n  return [announcement, dismissCallback, isLoading];\n};\n"],"names":["Title","styled","span","MenuLink","Link","_ref","$active","theme","primary500","_ref2","_ref3","RawFeatherIcon","CounterBadge","StyledBottomBar","nav","props","background0","text50","zindexBottomBar","LINKS","CONFIG","filter","_ref4","mobile","_ref5","active","unreadMessageCount","unreadActivityCount","React","map","link","_link$icon","key","id","route","unreadMessageBadge","value","unreadActivityBadge","icon","includes","className","concat","style","fontSize","fontWeight","paddingBottom","name","inline","title","useUnreadActivityCount","useUnreadMessageCount","BottomBar","_extends","routes","useSelector","getRoutes","href","feedbackForm","isMobileApp","useMobileApp","ConnectedFloatButton","background","content","useMutate","funcApi","onSuccess","_useState","useState","_useState2","_slicedToArray","error","setError","_useState3","_useState4","data","setData","_useState5","_useState6","isLoading","setIsLoading","_mutate","_asyncToGenerator","_regeneratorRuntime","_callee","response","_args","arguments","_context","prev","next","apply","sent","t0","message","finish","stop","mutate","useAuthentication","isSessionLoaded","selector","authentication","neededAuthentication","AUTHENTICATION","NONE","useBookmarkedEmails","legacyBookmarkedEmails","getBookmarkedEmails","bookmarkedEmails","setBookmarkedEmails","useEffect","length","bookmarkEmails","addBookmarkedEmail","useCallback","email","bookmarkEmail","DEFAULT_TITLE","_props$description","description","_props$type","type","_props$url","url","_props$image","image","pageTitle","Helmet","property","ExternalRedirect","params","addQueryStringParams","window","location","replace","propTypes","PropTypes","isRequired","InternalRedirect","to","state","backLink","toast","rest","_objectWithoutProperties","_excluded","sendToast","useToast","useEffectOnce","Array","isArray","_toConsumableArray","_typeof","undefined","useMemo","pathname","nextState","_objectSpread","routeConfig","split","search","Redirect","RouteRedirect","routeParams","_excluded2","_useRoute","useRoute","isInternal","Counter","width","height","viewBox","fill","xmlns","cx","cy","r","stroke","x","y","dominantBaseline","textAnchor","String","isNaN","parseInt","$background","error500","zindexNavigationCounter","$border","$color","white","useLocation","previous","useRef","user","getUser","userId","_paq","sentrySetUser","ip_address","push","current","log","logger","StyledWarning","animated","div","$hasTopBar","zindexTopBar","color","backgroundCOlor","collapse","$hasDownloadBanner","hasTopBar","_useDownloadBanner","useDownloadBanner","hasDownloadBanner","offline","useIsOffline","debug","display","setDisplay","_useMemo","_useMemo2","warning","timeout","setTimeout","clearTimeout","useTransition","initial","enter","leave","transitions","item","backgroundColor","Footer","lazy","getIsSessionLoaded","isConnected","getIsConnected","find","match","hideFooter","displayFooterOnMobileApp","Suspense","fallback","isSignedIn","hasBanner","hideFooterBanner","StyledContainer","$smallBackgroundColor","children","Image","borderRadius","Container","article","$isClickable","linkRef","handleClick","click","onClick","desktop","backgroundImage","ref","dangerouslySetInnerHTML","__html","markAsDisplayed","activities","announcements","useSWR","announcement","Announcement","FacebookLoginContainer","facebookLight","black","DismissMessage","a","_useCustomAnnouncemen","useCustomAnnouncement","_useCustomAnnouncemen2","dismissCallback","session","isIOS","facebookLogin","src","facebookLogo","marginBottom","alt","Button","margin","small","marginRight","facebookWhiteLogo","StyledLink","StyledMenu","ul","text500","text700","links","label","NavigationLink","_ref6","_ref6$unreadMessageCo","_ref6$unreadActivityC","secondaryLinks","external","strokeWidth","SecondaryMenu","marginTop","listStyle","padding","SecondarySideBar","userRoutes","groups","userGroups","group","SideBar","LeftColumn","aside","zindexMainContent","MainColumn","RightColumn","MainContainer","collapseTablet","subtitle","events","LayoutTitle","LayoutSubtitle","ActionButtons","Spacer","size","UpcomingEvents","orientation","FacebookLoginAd","Announcements","Component","useResponsiveMemo","MobileLayout","DesktopLayout","generateLogger","CustomFallback","Fallback","SentryErrorBoundary","errorMessage","toString","ErrorPage","answerToBannerAnnouncement","announcementId","answerId","axios","put","SpinnerAnimation","keyframes","Loader","i","Spinner","BackgroundAnimation","Banner","text25","Answers","BannerAnnouncementDone","Close","BannerAnnouncement","_currentAnnouncement$","currentAnnouncement","setCurrentAnnouncement","done","setDone","selectedAnswer","setSelectedAnswer","_useState7","_useState8","announcementsHandled","setAnnouncementsHandled","_useActiveBannerAnnou","refresh","_useMutate","mutateAnswer","from","opacity","config","duration","_userAnswer","answer","AnnouncementDone","question","afterMessage","nextAnnouncement","_nextAnnouncement","_callee2","_context2","closeAnnouncement","_closeAnnouncement","_callee3","_context3","get","status","hasAnswers","answers","_currentAnnouncement$2","_x","userAnswer","StyledPage","dispatch","useDispatch","history","useHistory","useParams","isPartial","setBackLink","setTopBarRightLink","setAdminLink","setPageTitle","topBarRightLink","unlisten","listen","action","hash","JSON","stringify","keepScroll","scrollTo","redirectTo","redirectProps","ErrorBoundary","hasLayout","Layout","layoutProps","minHeight","HelpButton","StyledTitle","StyledModalContent","ModalMissingNewsletter","_useLocalStorage","useLocalStorage","_useLocalStorage2","alreadyShowNewsletterModal","setAlreadyShowNewsletterModal","_useSWR","profile","mutateProfile","isLoadingUpdateProfile","setIsLoadingUpdateProfile","newsletterOptions","getNewsletterStatus","newsletters","userRegisteredToReguliere","_newsletterOptions$LF","_newsletterOptions$LF2","_inscription","updatedProfile","updateProfile","dateLessOneMonth","show","Date","setMonth","getMonth","created","ModalConfirmation","shouldShow","dismissLabel","confirmationLabel","onConfirm","onClose","shouldDismissOnClick","isConfirming","ProtectedComponent","_route$AnonymousCompo","AnonymousComponent","isAuthorized","useAppLoader","PreloadedComponent","preload","Page","anonymousConfig","login","getLink","TrackingComponent","useTracking","BrowserRouter","basename","BASE_PATH","ScrollMemory","TopBar","Switch","hideTopBar","appOnlyTopBar","Route","path","exact","OpenGraphTags","hideConnectivityWarning","ConnectivityWarning","NotFoundPage","useActivities","_data","_data2","_useSWRInfinite","useSWRInfinite","index","getActivityEndpoint","page","pageSize","setSize","isValidating","activityIds","forEach","results","activity","isLoadingInitialData","isLoadingMore","activityCount","count","isEmpty","isReachingEnd","isRefreshing","loadMore","isReady","setIsReady","dedupingInterval","focusThrottleInterval","slug","_error$response","shouldPause","_useSessionStorage","useSessionStorage","_useSessionStorage2","wasPaused","setIsPaused","isPaused","_useSWRImmutable","useSWRImmutable","errorStatus","ACTIVITY_STATUS","STATUS_INTERACTED","activityId","abrupt","setActivityAsInteracted"],"sourceRoot":""}