{"version":3,"file":"static/components/6588-3f4eeb62d9bd073b.mjs?cv=7","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/ErrorBoundary.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/presidentielle2027/components/SoutienPage/SoutienBannerConfirmPhone.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/presidentielle2027/components/SoutienPage/SoutienBanner.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/index.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/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/app/Page.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/ProtectedComponent.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/apiHook.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/authentication/api.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/genericComponents/Icon.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/globalContext/hooks.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/presidentielle2027/components/SoutienPage/SoutienProgressBar.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/presidentielle2027/components/SoutienPage/soutien.api.js"],"sourcesContent":["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 React, {useState} from \"react\";\n\nimport {useSelector} from \"@agir/front/globalContext/GlobalContext\";\nimport {getUser} from \"@agir/front/globalContext/reducers\";\nimport {SoutienBannerContainer} from \"@agir/presidentielle2027/SoutienPage/SoutienBanner\";\nimport Button from \"@agir/front/genericComponents/Button\";\nimport {mergeSoutienClone, useCloneSoutien} from \"@agir/presidentielle2027/SoutienPage/soutien.api\";\nimport styled from \"styled-components\";\nimport {useMutate} from \"@agir/front/app/apiHook\";\nimport {useToast} from \"@agir/front/globalContext/hooks\";\n\nconst SoutienCloneButton = styled.div`\n  display: flex;\n  justify-content: space-around;\n  gap: 10px;\n`\n\nexport default function SoutienBannerConfirmPhone() {\n  const sendToast = useToast();\n\n  const {data: clone, isLoading, mutate: refresh }= useCloneSoutien();\n\n  const {mutate: merge, isLoading: cloneIsLoading} = useMutate(\n    mergeSoutienClone,\n    (status) => {\n\n      // force to update useswr cache, even on 404\n      refresh(undefined, { revalidate: false });\n\n      if (status === 202) {\n        sendToast(`Le numéro de téléphone ${clone?.contact_phone} a bien été enregistré sur votre profil !`, \"SUCCESS\");\n      } else {\n        sendToast(`Le numéro sur votre profil n'a pas été changé.`, \"INFO\");\n      }\n    }\n  );\n  \n  if (!isLoading && clone) {\n    return <SoutienBannerContainer>\n      <div>\n        <p>Vous avez soutenu la candidature de Jean-Luc Mélenchon avec un autre numéro de téléphone que celui indiqué dans votre profil. Le numéro : <strong>{clone?.contact_phone}</strong> est-il bien le vôtre ?</p>\n\n    <SoutienCloneButton>\n      <Button\n        onClick={() => merge(false)}\n        disabled={cloneIsLoading}\n        style={{ minWidth: '320px' }}>\n        Non, ce n'est pas mon numéro\n      </Button>\n      <Button\n        onClick={() => merge(true)}\n        loading={cloneIsLoading}\n        color=\"soutien\">\n        Oui, c'est mon numéro\n      </Button>\n    </SoutienCloneButton>\n    </div>\n  </SoutienBannerContainer>\n  }\n  return null;\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport SoutienProgressBar, {\n  SoutienProgressBarContainer,\n} from \"./SoutienProgressBar\";\nimport Button from \"@agir/front/genericComponents/Button\";\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\nimport { getUser } from \"@agir/front/globalContext/reducers\";\nimport SoutienBannerConfirmPhone from \"@agir/presidentielle2027/SoutienPage/SoutienBannerConfirmPhone\";\n\nconst SoutienBannerButton = styled.div``;\n\nexport const SoutienBannerContainer = styled.div`\n  @keyframes fadeIn {\n      from {\n          opacity: 0;\n      }\n      to {\n          opacity: 1;\n      }\n  }\n\n  animation: fadeIn 1s ease-in-out;\n\n  animation-fill-mode: forwards;\n  display: flex;\n  justify-content: space-around;\n\n  border: 1px solid #232323;\n  border-radius: 8px;\n  align-items: center;\n    \n  margin-bottom: 10px;\n    \n  ${SoutienProgressBarContainer} {\n      margin-top: 0;\n  }\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    flex-direction: column;\n    gap: 10px;\n    border: none;\n    border-bottom: 1px solid #232323;\n    border-radius: 0;\n    padding: 0 1rem 10px 1rem;\n    margin-bottom: 10px;\n\n    ${SoutienProgressBarContainer} {\n        margin-top: 0;\n    }\n  }\n\n  padding: 20px;\n\n  ${SoutienBannerButton} {\n    min-width: 250px;\n    display: flex;\n    justify-content: center;\n  }\n\n  a {\n    background-color: ${({ theme }) => theme.LFIsecondary500};\n    color: white;\n    border-radius: 0;\n    font-weight: bold;\n    border: none;\n\n    &:hover {\n      background-color: ${({ theme }) => theme.LFIsecondary500}99;\n      color: white;\n    }\n  }\n`;\n\nexport default function SoutienBanner() {\n  const user = useSelector(getUser);\n\n  if (!window?.apConfig?.soutien?.enabledFront) {\n    return null;\n  }\n\n  return !user?.soutien2027 ? (\n    <SoutienBannerContainer>\n      <SoutienProgressBar\n        title={\n          <p style={{ marginBottom: \"1rem\" }}>\n            Soutenez la candidature de <b>Jean-Luc Mélenchon</b> pour l'élection{\" \"}\n            présidentielle de <b>2027</b> !\n          </p>\n        }\n      />\n      <SoutienBannerButton>\n        <Button link route=\"/soutien\">\n          Je soutiens <i className=\"fa fa-paper-plane\" />\n        </Button>\n      </SoutienBannerButton>\n    </SoutienBannerContainer>\n  ) : <SoutienBannerConfirmPhone />;\n}\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport BottomBar from \"@agir/front/app/Navigation/BottomBar\";\nimport SoutienBanner from \"@agir/presidentielle2027/SoutienPage/SoutienBanner\";\n\nconst StyledContainer = styled.div`\n  padding-top: 14px;\n  padding-bottom: 14px;\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      <SoutienBanner />\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/useMobileApp\";\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  padding-bottom: 15px;\n  border-bottom: ${({$active, theme}) => $active ? `${theme.primary500} 3px solid` : \"inherit\"};\n\n  &:hover,\n  &:focus {\n    color: ${({ $active, theme }) => ($active ? theme.primary500 : \"inherit\")};\n    text-decoration: none;\n  }\n\n  ${CounterBadge} {\n    margin-left: auto;\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: 0.7rem;\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\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\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\n        {link.unreadMessageBadge && <CounterBadge value={unreadMessageCount} />}\n        {link.unreadActivityBadge && (\n            <CounterBadge value={unreadActivityCount} />\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, {useEffect, 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\";\nimport SoutienBanner from \"../../../../presidentielle2027/components/SoutienPage/SoutienBanner\";\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  display: flex;\n  align-items: flex-start;\n  justify-content: end;\n  padding-top: calc(var(--safe-area-top) + var(--top-bar-height, 0));\n  gap: 2.2rem;\n\n  @media screen and (min-width: 2400px) {\n    justify-content: center;\n  }\n\n  ${LeftColumn} {\n    padding: 3rem 2rem 0 1rem;\n    flex: 0 0 240px;\n    min-width: 1px;\n\n    @media (max-width: ${(props) => props.theme.collapseTablet}px) {\n      display: none;\n    }\n  }\n\n  ${RightColumn} {\n    padding: 1rem 6.5vw 0 2rem;\n    background-color: ${({ theme }) => theme.background25};\n    position: sticky;\n    top: 2rem;\n    height: 100%;\n\n    h4 {\n      margin: 0 0 0.5rem;\n      line-height: 1.5;\n    }\n\n    @media (min-width: 1440px) {\n      width: 500px;\n    }\n    @media screen and (min-width: 2000px) {\n      width: 520px;\n    }\n  }\n\n  ${MainColumn} {\n    padding: 1.5rem 0 0 0.7rem;\n    width: 940px;\n\n    @media screen and (min-width: 2000px) {\n      width: 1050px;\n      margin-right: 50px;\n    }\n\n    @media screen and (min-width: 2400px) {\n      width: 1100px;\n      margin-right: 0;\n    }\n\n    @media screen and (min-width: 3000px) {\n      margin-right: 0;\n    }\n\n    @media (max-width: ${(props) => props.theme.collapseTablet}px) {\n      flex-grow: 1;\n    }\n  }\n`;\n\nconst DesktopLayout = (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          <SoutienBanner />\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=\"1rem\" />\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=\"1rem\" />\n          </>\n        ) : null}\n        <FacebookLoginAd />\n        <Announcements />\n        <SecondarySideBar />\n      </RightColumn>\n    </MainContainer>\n  );\n};\n\nexport default DesktopLayout;\n\nDesktopLayout.propTypes = {\n  title: PropTypes.string,\n  subtitle: PropTypes.string,\n  children: PropTypes.node,\n  active: PropTypes.string,\n};\n","import Layout from \"./Layout\";\n\nexport default Layout;\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 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-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\n// La barre étant fixe, ce bloc réserve sa hauteur dans le flux de la page,\n// uniquement là où elle est affichée.\nconst StyledBottomBarSpacer = styled.div`\n  flex: 0 0 auto;\n  height: calc(var(--bottom-bar-height) + var(--safe-area-bottom));\n`;\n\nconst LINKS = CONFIG.menuLinks.filter(({ mobile }) => !!mobile);\n\nconst BottomBar = ({ active, unreadMessageCount, unreadActivityCount }) => (\n  <>\n    <StyledBottomBarSpacer aria-hidden=\"true\" />\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);\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 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 HelpButton from \"@agir/front/allPages/HelpButton\";\n\nconst log = logger(__filename);\n\nconst StyledPage = styled.div`\n  isolation: isolate;\n  @media (min-width: ${(props) => props.theme.collapse}px) {\n    padding-top: ${({ $hasTopBar }) =>\n      $hasTopBar\n        ? \"calc(var(--safe-area-top) + var(--top-bar-height, 0px))\"\n        : \"var(--safe-area-top)\"};\n  }\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            {!routeConfig.hideFeedbackButton && <HelpButton />}\n          </Suspense>\n        </StyledPage>\n      </ErrorBoundary>\n    );\n  }\n\n  return (\n    <Suspense fallback={<div />}>\n      <Component route={routeConfig} {...routeParams} {...rest} />\n    </Suspense>\n  );\n};\nPage.propTypes = {\n  Component: PropTypes.elementType,\n  routeConfig: PropTypes.object.isRequired,\n  hasTopBar: PropTypes.bool,\n};\n\nexport default Page;\n","import { Redirect, useLocation } from \"react-router-dom\";\nimport { useAuthentication } from \"@agir/front/authentication/hooks\";\nimport React, { useEffect } from \"react\";\nimport Page from \"@agir/front/app/Page\";\nimport { routeConfig } from \"@agir/front/app/routes.config\";\nimport PropTypes from \"prop-types\";\nimport logger from \"@agir/lib/utils/logger\";\nimport {useAppLoader} from \"@agir/front/app/hooks/useAppLoader\";\n\nconst log = logger(__filename);\n\nconst 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};\nexport default ProtectedComponent;\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/useRoute\";\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 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  async function mutate(...args) {\n    setIsLoading(true);\n\n    let statusCode = 0;\n    try {\n      const response = await funcApi(...args);\n      setError(undefined);\n      setData(response.data);\n      onSuccess?.(response.status);\n      return [true, response.status];\n    } catch (e) {\n      if (e.response?.status === 500) {\n        setError(\"Une erreur est survenue, merci de réessayer plus tard\");\n      } else {\n        setError(e.response && e.response.data) || e.message;\n      }\n      statusCode = e.response.status;\n    } finally {\n      setIsLoading(false);\n    }\n\n    return [false, statusCode];\n  }\n\n  return { mutate, error, data, isLoading };\n};\n","import axios from \"@agir/lib/utils/axios\";\n\nexport const ENDPOINT = {\n  login: \"/api/connexion/\",\n  checkCode: \"/api/connexion/code/\",\n  logout: \"/api/deconnexion/\",\n  signUp: \"/api/inscription/\",\n  getProfile: \"/api/user/profile/\",\n  getProfileOptions: \"/api/user/profile/\",\n  updateProfile: \"/api/user/profile/\",\n};\n\nexport const getAuthenticationEndpoint = (key, params) => {\n  let endpoint = ENDPOINT[key] || \"\";\n  if (params) {\n    Object.entries(params).forEach(([key, value]) => {\n      endpoint = endpoint.replace(`:${key}`, value);\n    });\n  }\n  return endpoint;\n};\n\nexport const login = async (email) => {\n  const result = {\n    success: false,\n    error: null,\n  };\n  const url = ENDPOINT.login;\n  const body = { email: email.trim() };\n  try {\n    const response = await axios.post(url, body);\n    result.success = response.status === 200;\n    result.data = response.data || null;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const checkCode = async (code) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = ENDPOINT.checkCode;\n  const body = { code };\n  try {\n    const response = await axios.post(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const logout = async () => {\n  const result = {\n    success: false,\n    error: null,\n  };\n  const url = ENDPOINT.logout;\n  try {\n    const response = await axios.get(url);\n    result.success = response.status === 200;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const signUp = async (data, next) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const formData = {\n    email: data.email.trim(),\n    location_zip: data.postalCode,\n    location_country: data.country,\n    next: next || undefined,\n  };\n  const url = ENDPOINT.signUp;\n  try {\n    const response = await axios.post(url, formData);\n    result.data = response.data;\n  } catch (e) {\n    result.error = {};\n    if (!e.response || !e.response.data) {\n      result.error = e.message;\n      return result;\n    }\n    const { email, location_zip, location_country, non_field_errors } =\n      e.response.data;\n    if (email) {\n      result.error.email = email;\n    }\n    if (location_zip) {\n      result.error.postalCode = location_zip;\n    }\n    if (location_country) {\n      result.error.country = location_country;\n    }\n    if (non_field_errors) {\n      result.error.global = non_field_errors;\n    }\n  }\n\n  return result;\n};\n\nexport const getProfile = async () => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = ENDPOINT.getProfile;\n  try {\n    const response = await axios.get(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const getProfileOptions = async () => {\n  const result = {\n    data: null,\n    error: null,\n  };\n  const url = ENDPOINT.getProfileOptions;\n  try {\n    const response = await axios.options(url);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\n};\n\nexport const updateProfile = async (body) => {\n  const result = {\n    data: null,\n    error: null,\n  };\n\n  const url = ENDPOINT.updateProfile;\n  try {\n    const response = await axios.patch(url, body);\n    result.data = response.data;\n  } catch (e) {\n    result.error = (e.response && e.response.data) || e.message;\n  }\n\n  return result;\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 === undefined) {\n    return null;\n  }\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 React from \"react\";\nimport { RawFeatherIcon } from \"@agir/front/genericComponents/FeatherIcon\";\nimport PropTypes from \"prop-types\";\n\nfunction Icon({ name }) {\n  if (!name) {\n    return null;\n  }\n\n  return name?.includes(\"fa-\") ? (\n    <i className={`fa-regular ${name}`} />\n  ) : (\n    <RawFeatherIcon width=\"1rem\" height=\"1rem\" name={name} />\n  );\n}\n\nIcon.propTypes = {\n  name: PropTypes.string,\n};\n\nexport default Icon;\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","import React, { useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\nimport { useSoutienCounter } from \"@agir/presidentielle2027/SoutienPage/soutien.api\";\n\nconst barHeight = 30;\n\nexport const SoutienProgressBarContainer = styled.div`\n  margin-top: 1.2rem;\n\n  width: 100%;\n  p {\n    text-align: center;\n  }\n`;\n\nconst CounterContainer = styled.div`\n  text-align: center;\n  color: ${({ theme }) => theme.white};\n`;\n\nconst ProgressBar = styled.div`\n  width: 100%;\n  height: ${barHeight + 1}px;\n  border: 1px solid ${({ theme }) => theme.soutienPrimary};\n  background-color: ${({ theme }) => theme.background0};\n  border-radius: 10px;\n\n  position: relative;\n  box-shadow: -3px -4px 0 1px ${({ theme }) => theme.soutienLight};\n`;\n\nconst ProgressBarStep = styled.div`\n  height: ${barHeight}px;\n  width: 10px;\n  border-top-left-radius: 9px;\n  border-bottom-left-radius: 9px;\n\n  background-color: ${({ theme }) => theme.soutienPrimary};\n  transition: width 0.4s ease-in-out;\n`;\n\nconst goal = 400000;\n\nexport default function SoutienProgressBar({ title }) {\n  const { data: soutienCounter } = useSoutienCounter();\n  const barStepRef = useRef();\n\n  useEffect(() => {\n    computeProgressBarStep(soutienCounter?.count ?? 0);\n  }, [soutienCounter]);\n\n  function computeProgressBarStep(count) {\n    let currentPercent = Math.ceil((count / goal) * 100);\n\n    const barStep = barStepRef.current;\n    if (barStep) {\n      if (currentPercent > 100) {\n        currentPercent = 100;\n      }\n      barStep.style.width = `${currentPercent}%`;\n      if (currentPercent > 95) {\n        barStep.style.borderBottomRightRadius = \"9px\";\n        barStep.style.borderTopRightRadius = \"9px\";\n      }\n    } else {\n      console.error(\"Cannot find bar step div\");\n    }\n  }\n\n  return (\n    <SoutienProgressBarContainer>\n      {title && title}\n      {!title && (\n        <p>\n          <b>Validez votre signature</b> pour rejoindre les{\" \"}\n          <b>{soutienCounter?.count ?? 0} soutiens</b> à la candidature de\n          Jean-Luc Mélenchon\n        </p>\n      )}\n      <CounterContainer>\n        <ProgressBar>\n          <ProgressBarStep ref={barStepRef} />\n        </ProgressBar>\n      </CounterContainer>\n    </SoutienProgressBarContainer>\n  );\n}\n","import axios from \"@agir/lib/utils/axios\";\nimport useSWR from \"swr\";\n\nexport const postFinalizeCode = (code) =>\n  axios.post(\"/api/soutien/f/\", { code });\n\nexport const useSoutienCounter = (opts) =>\n  useSWR(\"/api/soutien/count/\", { refreshInterval: 2500 });\n\nexport const useSkipTokenPerson = (skipToken) =>\n  useSWR(skipToken ? `/api/soutien/skiptoken/${skipToken}/` : null, {\n    shouldRetryOnError: false,\n  });\n\nexport const confirmSkipTokenSoutien = async (skipToken) =>\n  axios.post(`/api/soutien/skiptoken/${skipToken}/`, { consentAP: true });\n\nexport const initializeValidation = async (formData) =>\n  axios.post(`/api/soutien/validation/`, formData);\n\nexport const postSoutienData = async (formData, turnstileToken) =>\n  axios.post(`/api/soutien/initialiser/`, formData, {\n    headers: {\n      \"cf-turnstile-response\": turnstileToken,\n    },\n  });\n\nexport const finalizeSoutien = async (\n  verificationCode,\n  operationToken,\n  turnstileToken,\n) =>\n  axios.post(\n    \"/api/soutien/finaliser/\",\n    { verificationCode, operationToken },\n    {\n      headers: {\n        \"cf-turnstile-response\": turnstileToken,\n      },\n    },\n  );\n\nexport const useCloneSoutien = () => useSWR(`/api/soutien/`);\n\nexport const mergeSoutienClone = async (accept) =>\n  axios.patch(\"/api/soutien/merge/\", { accept });\n"],"names":["logger","generateLogger","__filename","DevErrorBoundary","React","error","undefined","info","children","CustomFallback","errorMessage","ErrorPage","props","ProdErrorBoundary","SentryErrorBoundary","PropTypes","SoutienCloneButton","styled","SoutienBannerConfirmPhone","sendToast","useToast","clone","isLoading","refresh","useCloneSoutien","merge","cloneIsLoading","useMutate","mergeSoutienClone","status","SoutienBannerContainer","Button","SoutienBannerButton","SoutienProgressBarContainer","theme","SoutienBanner","user","useSelector","getUser","window","SoutienProgressBar","StyledContainer","MobileLayout","BottomBar","Image","Container","$isClickable","Announcement","title","content","image","link","linkRef","useRef","handleClick","useCallback","pathname","useLocation","markAsDisplayed","routeConfig","announcements","useSWR","Array","announcement","FacebookLoginContainer","DismissMessage","dismissCallback","useCustomAnnouncement","session","isIOS","useMobileApp","facebookLogo","facebookWhiteLogo","StyledLink","Link","StyledMenu","SecondaryMenu","links","rest","MenuLink","$active","CounterBadge","RawFeatherIcon","LINKS","CONFIG","desktop","NavigationLink","active","routes","unreadMessageCount","unreadActivityCount","secondaryLinks","useMemo","Navigation","SecondarySideBar","useUnreadActivityCount","useUnreadMessageCount","getRoutes","userRoutes","group","SideBar","LeftColumn","MainColumn","RightColumn","MainContainer","DesktopLayout","subtitle","events","LayoutTitle","LayoutSubtitle","ActionButtons","Spacer","UpcomingEvents","FacebookLoginAd","Announcements","Component","useResponsiveMemo","Title","StyledBottomBar","StyledBottomBarSpacer","mobile","log","StyledPage","$hasTopBar","Page","hasTopBar","dispatch","useDispatch","isSessionLoaded","getIsSessionLoaded","history","useHistory","routeParams","useParams","setBackLink","setTopBarRightLink","setAdminLink","setPageTitle","useEffect","unlisten","location","action","JSON","redirectProps","Redirect","ErrorBoundary","Suspense","HelpButton","ProtectedComponent","route","AnonymousComponent","isAuthorized","useAuthentication","useAppLoader","PreloadedComponent","ExternalRedirect","params","href","addQueryStringParams","InternalRedirect","to","state","backLink","toast","useEffectOnce","next","url","nextState","RouteRedirect","isInternal","useRoute","AppRedirect","funcApi","onSuccess","setError","useState","data","setData","setIsLoading","mutate","args","statusCode","response","e","login","email","result","body","axios","checkCode","code","logout","signUp","formData","location_zip","location_country","non_field_errors","getProfile","updateProfile","selector","legacyBookmarkedEmails","bookmarkedEmails","setBookmarkedEmails","getBookmarkedEmails","bookmarkEmails","bookmarkEmail","authentication","AUTHENTICATION","Icon","name","message","type","config","addToasts","CounterContainer","ProgressBar","barHeight","ProgressBarStep","soutienCounter","useSoutienCounter","barStepRef","currentPercent","barStep","Math","count","console","confirmSkipTokenSoutien","skipToken","initializeValidation","postSoutienData","turnstileToken","finalizeSoutien","verificationCode","operationToken","accept","opts"],"mappings":"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"}