{"version":3,"file":"static/components/3641-16f2fd7add6c299c89ea.js?cv=7","mappings":"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","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/activity/components/common/hooks.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/events/components/common/UpcomingEvents/MiniEventCard.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/events/components/common/UpcomingEvents/UpcomingEvents.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/events/components/common/UpcomingEvents/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/genericComponents/Tooltip.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/allPages/FloatButton.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/allPages/HelpButton.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/ActionButtons/actions.config.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/ActionButtons/ActionButton.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/ActionButtons/ActionButtons.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Layout/StyledComponents.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/Navigation/CounterBadge.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/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/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/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/front/components/app/apiHook.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/hooks/useAppLoader.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/errorPage/ErrorPage.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/notFoundPage/NotFoundPage.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 { 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","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport Link from \"@agir/front/app/Link\";\n\nimport { routeConfig } from \"@agir/front/app/routes.config\";\nimport { displayHumanDateString } from \"@agir/lib/utils/time\";\n\nconst StyledCard = styled(Link)`\n  display: block;\n  width: 254px;\n  min-height: 74px;\n  padding: 1rem;\n  border-radius: ${(props) => props.theme.borderRadius};\n  box-shadow: ${(props) => props.theme.cardShadow};\n  background-color: ${(props) => props.theme.background0};\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  & + & {\n    margin-top: 0.5rem;\n  }\n\n  & > * {\n    font-size: 0.875rem;\n    line-height: 1.5;\n    font-weight: 400;\n    display: block;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    overflow: hidden;\n\n    &::first-letter {\n      text-transform: capitalize;\n    }\n  }\n\n  & > strong {\n    color: ${(props) => props.theme.text1000};\n  }\n`;\n\nexport const MiniEventCard = (props) => {\n  const { id, name, startTime, location, backLink, style, className } = props;\n  return (\n    <StyledCard\n      style={style}\n      className={className}\n      backLink={backLink}\n      to={routeConfig.eventDetails.getLink({ eventPk: id })}\n    >\n      <span>\n        {[displayHumanDateString(startTime), location?.name?.trim()]\n          .filter(Boolean)\n          .join(\" • \")}\n      </span>\n      <strong>{name}</strong>\n    </StyledCard>\n  );\n};\n\nMiniEventCard.propTypes = {\n  id: PropTypes.string.isRequired,\n  startTime: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n  location: PropTypes.shape({\n    name: PropTypes.string,\n  }),\n  backLink: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  style: PropTypes.object,\n  className: PropTypes.string,\n};\n\nexport default MiniEventCard;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { animated, useSpring } from \"@react-spring/web\";\nimport styled from \"styled-components\";\nimport { Swiper, SwiperSlide } from \"swiper/react\";\n\nimport MiniEventCard from \"./MiniEventCard\";\n\nimport \"swiper/scss\";\n\nexport const SingleSlide = styled(animated.div)`\n  margin: 0;\n`;\n\nexport const Carousel = styled(animated.div)`\n  .swiper {\n    .swiper-slide {\n      box-sizing: border-box;\n      width: auto;\n      padding: 1px;\n    }\n  }\n`;\n\nexport const HorizontalLayout = (props) => {\n  const { events, ...rest } = props;\n  const style = useSpring({\n    from: {\n      opacity: 0,\n      paddingLeft: 24,\n    },\n    to: {\n      opacity: 1,\n      paddingLeft: 0,\n    },\n  });\n\n  if (events.length === 1) {\n    return (\n      <SingleSlide style={style}>\n        <MiniEventCard {...rest} {...events[0]} />\n      </SingleSlide>\n    );\n  }\n\n  return events.length > 0 ? (\n    <Carousel style={style}>\n      <Swiper spaceBetween={16} slidesPerView=\"auto\">\n        {events.map((event) => (\n          <SwiperSlide key={event.id}>\n            <MiniEventCard {...rest} {...event} />\n          </SwiperSlide>\n        ))}\n      </Swiper>\n    </Carousel>\n  ) : null;\n};\n\nconst VerticalLayout = (props) => {\n  const { events, ...rest } = props;\n\n  return events.length > 0\n    ? events.map((event) => (\n        <MiniEventCard key={event.id} {...rest} {...event} />\n      ))\n    : null;\n};\n\nHorizontalLayout.propTypes = VerticalLayout.propTypes = {\n  events: PropTypes.arrayOf(PropTypes.object),\n};\n\nconst UpcomingEvents = (props) => {\n  const { orientation = \"horizontal\", ...rest } = props;\n\n  if (props.events.length === 0) {\n    return null;\n  }\n\n  if (orientation === \"horizontal\") {\n    return <HorizontalLayout {...rest} />;\n  }\n\n  if (orientation === \"vertical\") {\n    return <VerticalLayout {...rest} />;\n  }\n\n  return null;\n};\nUpcomingEvents.propTypes = {\n  events: PropTypes.arrayOf(PropTypes.object),\n  orientation: PropTypes.oneOf([\"horizontal\", \"vertical\"]),\n};\n\nexport default UpcomingEvents;\n","import UpcomingEvents from \"./UpcomingEvents\";\n\nexport default UpcomingEvents;\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/useMobileApp\";\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 PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useTransition, animated } from \"@react-spring/web\";\nimport styled from \"styled-components\";\n\nimport closeButton from \"./images/close-btn.svg\";\n\nconst fadeInTransition = {\n  from: { opacity: 0 },\n  enter: { opacity: 1 },\n  leave: { opacity: 0 },\n  delay: 200,\n};\n\nconst CloseButton = styled.button`\n  position: absolute;\n  top: 0;\n  right: 0;\n  transform: translate(50%, -50%);\n  width: 24px;\n  height: 24px;\n  background-color: transparent;\n  border: none;\n  background-image: url(${closeButton});\n  background-repeat: no-repeat;\n  background-position: center center;\n  background-size: cover;\n  cursor: pointer;\n`;\n\nconst BaseTooltip = styled(animated.p)`\n  position: absolute;\n  width: 224px;\n  background-color: ${(props) => props.theme.text1000};\n  color: ${(props) => props.theme.background0};\n  padding: 1rem;\n  display: flex;\n  flex-flow: column nowrap;\n  font-size: 13px;\n  line-height: 1.3;\n  text-align: left;\n\n  strong {\n    font-size: 14px;\n  }\n\n  &:after {\n    content: \"\";\n    position: absolute;\n    border-style: solid;\n  }\n`;\n\nconst Tooltips = {\n  \"top-center\": styled(BaseTooltip)`\n    top: -10px;\n    left: 50%;\n    transform: translate(-50%, -100%);\n\n    &:after {\n      top: 100%;\n      right: 50%;\n      transform: translateX(3px);\n      border-width: 8px 6px 0 6px;\n      border-color: ${(props) => props.theme.text1000} transparent transparent\n        transparent;\n    }\n  `,\n  \"top-left\": styled(BaseTooltip)`\n    top: -10px;\n    right: 0;\n    transform: translate(-26px, -100%);\n\n    &:after {\n      top: 100%;\n      right: 0;\n      margin-left: -4px;\n      border-width: 4px;\n      border-color: ${(props) => props.theme.text1000}\n        ${(props) => props.theme.text1000} transparent transparent;\n    }\n  `,\n  \"top-right\": styled(BaseTooltip)`\n    top: -10px;\n    left: 0;\n    transform: translate(26px, -100%);\n\n    &:after {\n      top: 100%;\n      left: 0;\n      border-width: 4px;\n      border-color: ${(props) => props.theme.text1000} transparent transparent\n        ${(props) => props.theme.text1000};\n    }\n  `,\n};\n\nexport const TooltipContainer = (props) => {\n  const { shouldShow, onClose, position = \"top-center\", children } = props;\n  const tooltipTransition = useTransition(shouldShow, fadeInTransition);\n  const Tooltip = React.useMemo(() => Tooltips[position], [position]);\n  return tooltipTransition((style, item) =>\n    item ? (\n      <Tooltip style={style} position={position}>\n        {children}\n        {onClose ? <CloseButton aria-label=\"Cacher\" onClick={onClose} /> : null}\n      </Tooltip>\n    ) : null,\n  );\n};\nTooltipContainer.propTypes = {\n  position: PropTypes.oneOf(Object.keys(Tooltips)),\n  shouldShow: PropTypes.bool,\n  onClose: PropTypes.func,\n  children: PropTypes.node,\n};\n\nexport default TooltipContainer;\n","import PropTypes from \"prop-types\";\nimport React, { useCallback, useState } from \"react\";\nimport { useTransition, animated } from \"@react-spring/web\";\nimport { useEffectOnce } from \"react-use\";\nimport styled, { css } from \"styled-components\";\n\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\nimport { getUser, getRoutes } from \"@agir/front/globalContext/reducers\";\nimport { useMobileApp } from \"@agir/front/app/hooks/useMobileApp\";\nimport { useLocalStorage } from \"@agir/lib/utils/hooks\";\n\nimport Tooltip from \"@agir/front/genericComponents/Tooltip\";\n\nconst slideInTransition = {\n  from: { opacity: 0, marginBottom: \"-3rem\" },\n  enter: { opacity: 1, marginBottom: \"0rem\" },\n  leave: { opacity: 0, marginBottom: \"-3rem\" },\n};\n\nconst Button = styled.a`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  height: 100%;\n  border-radius: 100%;\n  background-color: transparent;\n  background-repeat: no-repeat;\n  background-size: cover;\n  background-position: center center;\n\n  ${({ $background }) =>\n    $background\n      ? css`\n          background-image: url(${$background});\n        `\n      : css`\n          background-color: ${(props) => props.theme.secondary500};\n          &:hover {\n            background-color: ${(props) => props.theme.secondary600};\n          }\n        `}\n\n  &:hover {\n    text-decoration: none;\n  }\n\n  i {\n    font-size: 2em;\n  }\n`;\n\nconst Wrapper = styled(animated.div)`\n  position: fixed;\n  bottom: 1.5rem;\n  right: 1.5rem;\n  width: 3.5rem;\n  height: 3.5rem;\n  border-radius: 50%;\n  z-index: ${(props) => props.theme.zindexFloatButton};\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    width: 3rem;\n    height: 3rem;\n    bottom: 6.5rem;\n  }\n`;\n\nexport const FloatButton = (props) => {\n  const { isActive, shouldPushTooltip, href, content, icon, label } = props;\n\n  const [hasTooltip, setHasTooltip] = useState(false);\n\n  const hideTooltip = useCallback(() => {\n    setHasTooltip(false);\n  }, []);\n\n  const showTooltip = useCallback(() => {\n    setHasTooltip(true);\n  }, []);\n\n  const pushTooltip = useCallback(() => {\n    shouldPushTooltip && showTooltip();\n  }, [shouldPushTooltip, showTooltip]);\n\n  const wrapperTransition = useTransition(isActive, {\n    ...slideInTransition,\n    onRest: pushTooltip,\n  });\n\n  return wrapperTransition((style, item) =>\n    item ? (\n      <Wrapper style={{ ...(props.style || {}), ...style }}>\n        <Tooltip\n          position=\"top-left\"\n          shouldShow={hasTooltip}\n          onClose={shouldPushTooltip ? hideTooltip : undefined}\n        >\n          {content}\n        </Tooltip>\n        <Button\n          $background={props.background}\n          href={href}\n          aria-label={label}\n          onMouseOver={shouldPushTooltip ? undefined : showTooltip}\n          onMouseLeave={shouldPushTooltip ? undefined : hideTooltip}\n        >\n          <i className={icon} />\n        </Button>\n      </Wrapper>\n    ) : null,\n  );\n};\nFloatButton.propTypes = {\n  isActive: PropTypes.bool,\n  shouldPushTooltip: PropTypes.bool,\n  href: PropTypes.string,\n};\n\nconst ConnectedFloatButton = (props) => {\n  const user = useSelector(getUser);\n  const [visitCount, setVisitCount] = useLocalStorage(\"AP_vcount\", 0);\n  const [shouldPushTooltip, setShouldPushTooltip] = useState(false);\n\n  useEffectOnce(() => {\n    const count = visitCount + 1;\n    count % 20 === 3 && setShouldPushTooltip(true);\n    setVisitCount(count);\n  });\n\n  return (\n    <FloatButton\n      {...props}\n      shouldPushTooltip={shouldPushTooltip}\n      isActive={!!user}\n    />\n  );\n};\nexport default ConnectedFloatButton;\n","import React from \"react\";\n\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\nimport { getRoutes } from \"@agir/front/globalContext/reducers\";\n\nimport ConnectedFloatButton from \"@agir/front/allPages/FloatButton\";\n\nfunction HelpButton() {\n  const routes = useSelector(getRoutes);\n  const href = routes && routes.help;\n\n  return (\n    <ConnectedFloatButton\n      icon=\"fa-regular fa-circle-question\"\n      label=\"Aide\"\n      href={href}\n      content={<strong>Besoin d'aide ?</strong>}\n    />\n  );\n}\n\nexport default HelpButton;\n","import React from \"react\";\n\nimport * as style from \"@agir/front/genericComponents/_variables-light.scss\";\n\nimport { RawFeatherIcon } from \"@agir/front/genericComponents/FeatherIcon\";\n\nconst ACTIONS = {\n  donations: (user) =>\n    !!user?.activeContribution && user.activeContribution.renewable\n      ? {\n          key: \"contributionRenewal\",\n          route: \"contributionRenewal\",\n          label: [\"Financer\", \"Renouveler mon financement\"],\n          icon: \"refresh-cw\",\n          color: \"#FD3D66\",\n        }\n      : {\n          key: \"donations\",\n          route: \"donationLanding\",\n          label: [\"Don\", \"Faire un don\"],\n          icon: \"fa-circle-euro\",\n          color: \"#FD3D66\",\n        },\n  contributions: (user) =>\n    !!user?.activeContribution && !user.activeContribution.renewable\n      ? {\n          key: \"contributions\",\n          route: \"donations\",\n          label: [\"Don\", \"Faire un don\"],\n          icon: \"heart\",\n          color: \"#FD3D66\",\n        }\n      : !!user?.activeContribution?.renewable\n        ? {\n            key: \"contributionRenewal\",\n            route: \"contributionRenewal\",\n            label: [\"Financer\", \"Renouveler mon financement\"],\n            icon: \"refresh-cw\",\n            color: \"#FD3D66\",\n          }\n        : {\n            key: \"contributions\",\n            route: \"contributions\",\n            label: [\"Financer\", \"Devenir financeur·euse\"],\n            icon: \"trending-up\",\n            color: \"#FD3D66\",\n          },\n  createEvent: {\n    key: \"createEvent\",\n    route: \"createEvent\",\n    label: [\"Créer événement\", \"Créer un événement\"],\n    color: \"primary500\",\n    icon: (\n      <span>\n        <svg\n          width=\"24\"\n          height=\"24\"\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n          stroke=\"currentcolor\"\n          strokeWidth={1.33}\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path d=\"M14 8.99999V3.99999C14 3.26361 13.403 2.66666 12.6667 2.66666H3.33333C2.59695 2.66666 2 3.26361 2 3.99999V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H8.66667\" />\n          <path d=\"M10.6667 1.33334V4.00001\" />\n          <path d=\"M5.33331 1.33334V4.00001\" />\n          <path d=\"M2 6.66666H14\" />\n          <path d=\"M12.6667 11.3333V15.3333\" />\n          <path d=\"M14.6667 13.3333H10.6667\" />\n        </svg>\n      </span>\n    ),\n  },\n  coupDeFil: {\n    key: \"coupDeFil\",\n    route: \"coupDeFil\",\n    label: [\"Coup de fil\", \"Coup de fil pour convaincre\"],\n    icon: \"phone\",\n    color: \"success500\",\n  },\n  materiel: {\n    key: \"materiel\",\n    route: \"materiel\",\n    label: \"Matériel\",\n    icon: \"fa-box-taped\",\n    color: \"secondary500\",\n    textColor: \"text1000\",\n  },\n  createContact: {\n    key: \"createContact\",\n    route: \"createContact\",\n    label: [\"Ajouter contact\", \"Ajouter un contact\"],\n    icon: \"user-plus\",\n    color: \"primary600\",\n    textColor: \"background0\",\n  },\n  toktokPreview: {\n    key: \"toktokPreview\",\n    route: \"toktokPreview\",\n    label: [\"Porte-à-porte\", \"TokTok - Porte-à-porte\"],\n    icon: (\n      <span style={{ backgroundColor: \"PULBleu\" }}>\n        <svg\n          width=\"24\"\n          height=\"24\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M19.5 21V1.5H4.5V21\"\n            stroke=\"white\"\n            strokeWidth=\"2.25\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n          />\n          <line\n            x1=\"2.625\"\n            y1=\"21.375\"\n            x2=\"21.375\"\n            y2=\"21.375\"\n            stroke=\"white\"\n            strokeWidth=\"2.25\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n          />\n          <circle cx=\"15\" cy=\"10.5\" r=\"1.5\" fill=\"white\" />\n        </svg>\n      </span>\n    ),\n    color: \"primary500\",\n  },\n  votingProxy: (user) =>\n    user?.votingProxyId && user?.hasVotingProxyRequests\n      ? {\n          key: \"votingProxy\",\n          route: \"acceptedVotingProxyRequests\",\n          routeParams: { votingProxyPk: user.votingProxyId },\n          label: [\"Mes procurations\", \"Mes procurations de vote\"],\n          icon: \"edit-3\",\n          color: \"votingProxyOrange\",\n        }\n      : {\n          key: \"votingProxy\",\n          route: \"votingProxyLandingPage\",\n          label: [\"Procuration\", \"Espace procurations\"],\n          icon: \"edit-3\",\n          color: \"votingProxyOrange\",\n        },\n  actionTools: {\n    key: \"actionTools\",\n    route: \"actionTools\",\n    label: \"Voir tout\",\n    icon: \"arrow-right\",\n    textColor: \"text1000\",\n    borderColor: \"text200\",\n  },\n  newPollingStationOfficer: {\n    key: \"newPollingStationOfficer\",\n    route: \"newPollingStationOfficer\",\n    label: [\"Assesseurs/délégués\", \"Devenir assesseur·e ou délégué·e\"],\n    icon: (\n      <span style={{ backgroundColor: \"referralPink\" }}>\n        <svg\n          width=\"25\"\n          height=\"24\"\n          viewBox=\"0 0 25 24\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g clipPath=\"url(#clip0_5242_40128)\">\n            <path\n              d=\"M3.5 15H2C1.44772 15 1 15.4477 1 16V21C1 21.5523 1.44772 22 2 22H22C22.5523 22 23 21.5523 23 21V16.5C23 15.9477 22.5523 15.5 22 15.5H20.5M5.5 15.5V3C5.5 2.44772 5.94772 2 6.5 2H17.5C18.0523 2 18.5 2.44771 18.5 3V15.5C18.5 16.0523 18.0523 16.5 17.5 16.5H6.5C5.94772 16.5 5.5 16.0523 5.5 15.5Z\"\n              stroke=\"white\"\n              strokeWidth=\"2\"\n            />\n            <path\n              d=\"M9 8.6L10.299 10.1588C10.6754 10.6105 11.3585 10.6415 11.7743 10.2257L15 7\"\n              stroke=\"white\"\n              strokeWidth=\"2\"\n            />\n          </g>\n          <defs>\n            <clipPath id=\"clip0_5242_40128\">\n              <rect\n                width=\"24\"\n                height=\"24\"\n                fill=\"white\"\n                transform=\"translate(0.5)\"\n              />\n            </clipPath>\n          </defs>\n        </svg>\n      </span>\n    ),\n  },\n  help: {\n    key: \"help\",\n    route: \"help\",\n    label: [\"Aide\", \"Centre d'aide\"],\n    icon: \"help-circle\",\n    color: \"text100\",\n    textColor: \"text1000\",\n  },\n  publicMeetingRequest: {\n    key: \"publicMeetingRequest\",\n    route: \"publicMeetingRequest\",\n    label: [\"Réunion publique\", \"Organiser une réunion publique\"],\n    icon: \"radio\",\n    color: \"#00ace0\",\n  },\n  cafePopulaireRequest: {\n    key: \"cafePopulaireRequest\",\n    route: \"cafePopulaireRequest\",\n    label: [\"Café populaire\", \"Organiser un café populaire\"],\n    icon: \"coffee\",\n    color: \"#00B171\",\n  },\n  joinGroup: {\n    key: \"joinGroup\",\n    route: \"groupMap\",\n    label: [\"Groupes d'action\", \"Rejoindre un groupe d'action\"],\n    icon: \"fa-people-group\",\n    color: \"vermillon\",\n  },\n};\n\nconst DEFAULT_ACTION_ORDER = [\n  \"donations\",\n  \"createEvent\",\n  \"joinGroup\",\n  \"materiel\",\n  \"help\",\n  \"actionTools\",\n];\n\nconst GROUP_MANAGER_ACTION_ORDER = [\n  \"donations\",\n  \"createEvent\",\n  \"materiel\",\n  \"help\",\n  \"actionTools\",\n];\n\nexport const getActionsForUser = (user) => {\n  let actions = DEFAULT_ACTION_ORDER;\n\n  if (!!user?.groups?.some((group) => group.isManager)) {\n    actions = GROUP_MANAGER_ACTION_ORDER;\n  }\n\n  return actions\n    .map((key) =>\n      typeof ACTIONS[key] === \"function\" ? ACTIONS[key](user) : ACTIONS[key],\n    )\n    .filter(Boolean);\n};\n\nexport default ACTIONS;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport Link from \"@agir/front/app/Link\";\nimport { useResponsiveMemo } from \"@agir/front/genericComponents/grid\";\nimport { RawFeatherIcon } from \"@agir/front/genericComponents/FeatherIcon\";\nimport Icon from \"@agir/front/genericComponents/Icon\";\n\nconst StyledButton = styled(Link)`\n  display: inline-flex;\n  flex-flow: column nowrap;\n  align-items: center;\n  gap: 8px;\n  width: 75px;\n  font-size: 12px;\n  line-height: 1.5;\n  font-weight: 400;\n  text-align: center;\n  color: ${(props) => props.theme.text700};\n\n  @media (min-width: ${(props) => props.theme.collapse}px) {\n    width: 100%;\n    flex-flow: row nowrap;\n    gap: 0;\n    font-size: 0.875rem;\n    height: 2rem;\n  }\n\n  &,\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus {\n    opacity: 0.5;\n    cursor: default;\n    color: ${(props) => props.theme.success500};\n    text-decoration: line-through;\n  }\n\n  i {\n    font-size: 2em;\n  }\n\n  & > ${RawFeatherIcon}, & > span:has(> svg),\n  i {\n    border: 1px solid;\n    border-color: ${(props) =>\n      props.$borderColor\n        ? props.theme[props.$borderColor] || props.$borderColor\n        : \"transparent\"};\n    background-color: ${(props) =>\n      props.$color ? props.theme[props.$color] || props.$color : \"transparent\"};\n  }\n\n  ${RawFeatherIcon} {\n    svg {\n      width: 1.7em;\n      height: 1.7rem;\n    }\n  }\n\n  & > span,\n  i {\n    flex: 0 0 50px;\n    width: 50px;\n    height: 50px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 100%;\n    color: ${(props) =>\n      props.$textColor\n        ? props.theme[props.$textColor] || props.$textColor\n        : props.theme.background0};\n\n    @media (min-width: ${(props) => props.theme.collapse}px) {\n      transform-origin: left center;\n      transform: scale(0.64);\n      margin-right: -10px;\n    }\n  }\n\n  & > strong {\n    font-weight: inherit;\n    white-space: nowrap;\n    max-width: 100%;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n`;\n\nconst ActionButton = (props) => {\n  const {\n    route,\n    routeParams,\n    label,\n    icon,\n    color,\n    textColor,\n    borderColor,\n    className,\n    disabled = false,\n  } = props;\n\n  const visibileLabel = useResponsiveMemo(\n    Array.isArray(label) ? label[0] : label,\n    Array.isArray(label) ? label[1] : label,\n  );\n\n  return (\n    <StyledButton\n      $color={color}\n      $textColor={textColor}\n      $borderColor={borderColor}\n      disabled={disabled}\n      onClick={disabled ? (e) => e.preventDefault() : undefined}\n      onMouseDown={(e) => e.preventDefault()}\n      className={className}\n      route={route}\n      routeParams={routeParams}\n    >\n      {typeof icon === \"string\" ? <Icon name={icon} /> : icon}\n      <strong title={Array.isArray(label) ? label[1] : label}>\n        {visibileLabel}\n      </strong>\n    </StyledButton>\n  );\n};\nActionButton.propTypes = {\n  route: PropTypes.string,\n  routeParams: PropTypes.object,\n  label: PropTypes.oneOfType([\n    PropTypes.arrayOf(PropTypes.node),\n    PropTypes.node,\n  ]),\n  icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n  color: PropTypes.string,\n  textColor: PropTypes.string,\n  borderColor: PropTypes.string,\n  className: PropTypes.string,\n  disabled: PropTypes.bool,\n};\nexport default ActionButton;\n","import PropTypes from \"prop-types\";\nimport React, { useMemo } from \"react\";\nimport { animated, useSpring } from \"@react-spring/web\";\nimport styled from \"styled-components\";\nimport { Swiper, SwiperSlide } from \"swiper/react\";\nimport useSWR from \"swr\";\n\nimport \"swiper/scss\";\n\nimport * as style from \"@agir/front/genericComponents/_variables-light.scss\";\n\nimport { getActionsForUser } from \"./actions.config\";\n\nimport { ResponsiveLayout } from \"@agir/front/genericComponents/grid\";\nimport ActionButton from \"./ActionButton\";\n\nconst Carousel = styled(animated.div)`\n  position: relative;\n  isolation: isolate;\n  margin: 0 -1rem;\n  width: calc(100% + 2rem);\n\n  & > * {\n    z-index: 0;\n  }\n\n  .swiper-slide {\n    padding: 0 4px;\n\n    &:first-child {\n      padding-left: 16px;\n    }\n\n    &:last-child {\n      padding-right: 16px;\n    }\n  }\n\n  &::before,\n  &::after {\n    content: \"\";\n    display: block;\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    height: 100%;\n    width: 16px;\n    z-index: 1;\n    pointer-events: none;\n  }\n\n  &::before {\n    left: 0;\n    background: linear-gradient(\n      90deg,\n      ${(props) => props.theme.text25},\n      ${(props) => props.theme.text25}00\n    );\n  }\n\n  &::after {\n    right: 0;\n    background: linear-gradient(\n      -90deg,\n      ${(props) => props.theme.text25},\n      ${(props) => props.theme.text25}00\n    );\n  }\n`;\n\nconst StyledActionList = styled.nav`\n  width: 100%;\n  display: flex;\n  flex-flow: column nowrap;\n  gap: 0.5rem;\n  min-height: 1px;\n  padding: 0;\n  margin: 0;\n`;\n\nconst getSwiperBreakpoints = (slides = [], slideWidth) => {\n  const breakpoints = {};\n  for (\n    let breakpoint = style.collapse, slidesPerView = slides.length;\n    breakpoint > 0 && slidesPerView >= 3;\n    breakpoint -= slideWidth\n  ) {\n    slidesPerView = Math.ceil(breakpoint / slideWidth) - 0.5;\n    breakpoints[breakpoint] = {\n      slidesPerView,\n    };\n  }\n  return breakpoints;\n};\n\nexport const ActionButtonCarousel = (props) => {\n  const { actions } = props;\n  const breakpoints = useMemo(\n    () => getSwiperBreakpoints(actions, 75 + 8),\n    [actions],\n  );\n\n  const style = useSpring({\n    from: {\n      opacity: 0,\n      paddingLeft: 24,\n    },\n    to: {\n      opacity: 1,\n      paddingLeft: 0,\n    },\n  });\n\n  return (\n    <Carousel style={style}>\n      <Swiper\n        slidesPerView={3}\n        breakpoints={breakpoints}\n        centerInsufficientSlides\n      >\n        {actions\n          .filter((action) => !action.disabled)\n          .map((action) => (\n            <SwiperSlide key={action.key}>\n              <ActionButton {...action} />\n            </SwiperSlide>\n          ))}\n      </Swiper>\n    </Carousel>\n  );\n};\nActionButtonCarousel.propTypes = {\n  actions: PropTypes.arrayOf(PropTypes.object),\n};\n\nconst ActionButtonList = ({ actions }) => (\n  <StyledActionList>\n    {actions.map((action) => (\n      <ActionButton key={action.key} {...action} />\n    ))}\n  </StyledActionList>\n);\nActionButtonList.propTypes = {\n  actions: PropTypes.arrayOf(PropTypes.object),\n};\n\nexport const ActionButtons = ({ user }) => {\n  const actions = getActionsForUser(user);\n\n  return (\n    <ResponsiveLayout\n      MobileLayout={ActionButtonCarousel}\n      DesktopLayout={ActionButtonList}\n      actions={actions}\n    />\n  );\n};\nActionButtons.propTypes = {\n  user: PropTypes.object,\n};\n\nconst ConnectedActionButtons = () => {\n  const { data: session } = useSWR(\"/api/session/\");\n  return <ActionButtons user={session?.user} />;\n};\n\nexport default ConnectedActionButtons;\n","import styled from \"styled-components\";\n\nexport const LayoutSubtitle = styled.h2`\n  color: ${(props) => props.theme.text700};\n  font-weight: 400;\n  font-size: 0.875rem;\n  margin: 0.75rem 0;\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    display: none;\n  }\n`;\n\nexport const LayoutTitle = styled.h1`\n  display: flex;\n  align-items: center;\n  font-size: 1.625rem;\n  margin: 0;\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    display: none;\n  }\n`;\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-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 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 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/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 { 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/useDownloadBanner\";\nimport logger from \"@agir/lib/utils/logger\";\n\nconst log = logger(__filename);\n\nconst StyledWarning = styled(animated.div)`\n  position: fixed;\n  top: ${({ $hasTopBar }) => ($hasTopBar ? \"72px\" : \"0\")};\n  width: 100%;\n  z-index: ${(props) => props.theme.zindexTopBar};\n  color: ${(props) => props.theme[props.color]};\n  background: ${(props) => props.theme[props.backgroundCOlor]};\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    top: ${({ $hasTopBar, $hasDownloadBanner }) => {\n      if ($hasTopBar && $hasDownloadBanner) {\n        return \"136px\";\n      }\n      if ($hasTopBar) {\n        return \"56px\";\n      }\n      return \"0\";\n    }};\n  }\n\n  & > div {\n    overflow: hidden;\n    text-transform: uppercase;\n    font-weight: 600;\n    text-align: center;\n    font-size: 10px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 100%;\n  }\n`;\n\nconst ConnectivityWarning = ({ hasTopBar }) => {\n  const [hasDownloadBanner] = useDownloadBanner();\n  const offline = useIsOffline();\n  log.debug(`Offline ${offline}`);\n  const [display, setDisplay] = useState(offline);\n  log.debug(`Display ${display}`);\n\n  const [backgroundColor, color, warning] = useMemo(() => {\n    switch (offline) {\n      case false:\n        return [\"success500\", \"success100\", \"Connexion rétablie\"];\n      case true:\n        return [\"error500\", \"error100\", \"Aucune connexion internet\"];\n      default:\n        return [\"primary500\", \"primary100\", \"Connexion en cours...\"];\n    }\n  }, [offline]);\n\n  useEffect(() => {\n    let timeout = setTimeout(() => setDisplay(!!offline), offline ? 0 : 5000);\n    return () => clearTimeout(timeout);\n  }, [offline]);\n\n  const transitions = useTransition(display, {\n    initial: null,\n    enter: { height: 30 },\n    leave: { height: 0 },\n  });\n\n  return transitions(\n    (style, item) =>\n      item && (\n        <StyledWarning\n          color\n          backgroundColor\n          style={style}\n          $hasTopBar={hasTopBar}\n          $hasDownloadBanner={hasDownloadBanner}\n        >\n          <div>{warning}</div>\n        </StyledWarning>\n      ),\n  );\n};\n\nexport default ConnectivityWarning;\n","import PropTypes from \"prop-types\";\nimport React, { Suspense, useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { lazy } from \"@agir/front/app/utils\";\nimport {\n  getIsSessionLoaded,\n  getIsConnected,\n} from \"@agir/front/globalContext/reducers\";\nimport routes from \"@agir/front/app/routes.config\";\nimport { useMobileApp } from \"@agir/front/app/hooks/useMobileApp\";\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\n\nconst Footer = lazy(() => import(\"./Footer\"));\n\nconst ConnectedFooter = () => {\n  const { pathname } = useLocation();\n  const isSessionLoaded = useSelector(getIsSessionLoaded);\n  const isConnected = useSelector(getIsConnected);\n  const { isMobileApp } = useMobileApp();\n\n  const route = useMemo(\n    () => routes.find((route) => route.match(pathname)),\n    [pathname],\n  );\n\n  if (!isSessionLoaded) {\n    return null;\n  }\n  if (!route || route.hideFooter) {\n    return null;\n  }\n  if (isMobileApp && !route.displayFooterOnMobileApp) {\n    return null;\n  }\n\n  return (\n    <Suspense fallback={<div />}>\n      <Footer\n        isSignedIn={isConnected}\n        isMobileApp={isMobileApp}\n        hasBanner={!route.hideFooterBanner && !isConnected}\n      />\n    </Suspense>\n  );\n};\n\nexport default ConnectedFooter;\n","import 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\";\n\nconst SoutienBannerButton = styled.div``;\n\nconst SoutienBannerContainer = styled.div`\n  display: flex;\n  justify-content: space-around;\n\n  border: 1px solid #232323;\n  border-radius: 8px;\n  align-items: center;\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  ) : null;\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: 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      <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\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\";\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  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: 1rem 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          <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=\"1.5rem\" />\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 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 { 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            {!routeConfig.hideFeedbackButton && <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            {!routeConfig.hideFeedbackButton && <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 } from \"@agir/front/app/hooks/useAppLoader\";\nimport { useMobileApp } from \"@agir/front/app/hooks/useMobileApp\";\nimport { useAuthentication } from \"@agir/front/authentication/hooks\";\nimport routes, { BASE_PATH, routeConfig } from \"./routes.config\";\nimport useTracking from \"./useTracking\";\n\nimport 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 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?.();\n      return [true, response.status];\n    } catch (e) {\n      if (e.response?.status === 500) {\n        setError({\n          error: \"Une erreur est survenue, merci de réessayer plus tard\",\n        });\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 { useState, useEffect } from \"react\";\n\n/**\n * Custom React hook to hide the application loader\n * @param  {Boolean} [isReady=true]               whether the loader can be hidden or not\n */\n\nexport const useAppLoader = (isReady = true) => {\n  const [loader, setLoader] = useState(\n    isReady ? document.getElementById(\"app_loader\") : null\n  );\n\n  useEffect(() => {\n    isReady !== null && setLoader(document.getElementById(\"app_loader\"));\n  }, [isReady]);\n\n  useEffect(() => {\n    if (!loader) {\n      return;\n    }\n\n    loader.addEventListener(\"transitionend\", () => {\n      const loader = document.getElementById(\"app_loader\");\n      loader && loader.remove();\n    });\n    loader.style.opacity = \"0\";\n    loader.style.zIndex = -1;\n\n    setLoader(null);\n  }, [loader]);\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 === 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 from \"react\";\nimport styled from \"styled-components\";\n\nimport { useAppLoader } from \"@agir/front/app/hooks/useAppLoader\";\n\nimport Button from \"@agir/front/genericComponents/Button\";\nimport Link from \"@agir/front/app/Link\";\nimport { RawFeatherIcon } from \"@agir/front/genericComponents/FeatherIcon\";\nimport Spacer from \"@agir/front/genericComponents/Spacer\";\nimport TopBar from \"@agir/front/app/Navigation/TopBar\";\n\nimport background from \"@agir/front/genericComponents/images/illustration-404.svg\";\n\nconst StyledIcon = styled.div`\n  width: 3.5rem;\n  height: 3.5rem;\n  border-radius: 3.5rem;\n  font-size: 2rem;\n  background-color: ${(props) => props.theme.secondary500};\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  font-weight: 500;\n`;\n\nconst StyledContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  min-height: 100vh;\n  position: relative;\n  overflow: auto;\n  background-image: url(\"${background}\");\n  background-position: center;\n  background-size: cover;\n  background-repeat: no-repeat;\n  padding: 1.5rem 1rem;\n\n  h2 {\n    text-align: center;\n    font-size: 1.5rem;\n  }\n\n  p {\n    width: 100%;\n    max-width: 46.875rem;\n    text-align: center;\n  }\n\n  pre {\n    width: 100%;\n    max-width: 46.875rem;\n    padding: 1.5rem;\n    margin: 0 0 1rem;\n    overflow: auto;\n    background-color: ${(props) => props.theme.text50};\n    border-radius: ${(props) => props.theme.borderRadius};\n    text-align: center;\n  }\n\n  ${Button} {\n    max-width: 28.125rem;\n  }\n`;\n\nconst StyledPage = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n`;\n\nexport const ErrorPage = (props) => {\n  const {\n    title = \"Une erreur est survenue\",\n    subtitle = \"Notre équipe a été prévenue du problème\",\n    errorMessage,\n    hasReload = true,\n    hasTopBar = true,\n    icon,\n    children,\n  } = props;\n\n  useAppLoader();\n\n  return (\n    <StyledPage>\n      {hasTopBar && (\n        <>\n          <TopBar hasTopBar />\n          <Spacer size=\"4.625rem\" />\n        </>\n      )}\n      {children ? (\n        <StyledContainer>{children}</StyledContainer>\n      ) : (\n        <StyledContainer>\n          <StyledIcon>{icon || <RawFeatherIcon name=\"x\" />}</StyledIcon>\n          <h2>{title}</h2>\n          <p>{subtitle}</p>\n          <Spacer size=\"1rem\" />\n          {errorMessage && <pre>{errorMessage}</pre>}\n          <Spacer size=\"1rem\" />\n          <Button link route=\"events\" color=\"primary\" block>\n            Revenir à l'accueil\n          </Button>\n          {hasReload ? (\n            <>\n              <Spacer size=\"1rem\" />\n              <Button onClick={() => window.location.reload()} block>\n                Recharger la page\n              </Button>\n            </>\n          ) : null}\n          <Spacer size=\"1rem\" />\n          <span>\n            ou consulter le <Link route=\"helpIndex\">centre d'aide</Link>\n          </span>\n        </StyledContainer>\n      )}\n    </StyledPage>\n  );\n};\nErrorPage.propTypes = {\n  errorMessage: PropTypes.string,\n  title: PropTypes.string,\n  subtitle: PropTypes.string,\n  hasReload: PropTypes.bool,\n  hasTopBar: PropTypes.bool,\n  icon: PropTypes.node,\n  children: PropTypes.node,\n};\nexport default ErrorPage;\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 PropTypes from \"prop-types\";\nimport React, { useEffect } from \"react\";\nimport { usePrevious } from \"react-use\";\nimport styled from \"styled-components\";\n\nimport { useIsOffline } from \"@agir/front/offline/hooks\";\nimport { useAppLoader } from \"@agir/front/app/hooks/useAppLoader\";\n\nimport illustration from \"./illustration.svg\";\nimport ErrorPage from \"@agir/front/errorPage/ErrorPage\";\n\nconst OfflineBlock = styled.div`\n  text-align: center;\n\n  & > * {\n    margin: 0 auto;\n    padding: 0 1rem;\n  }\n\n  & > h1 {\n    font-size: 1.25rem;\n  }\n`;\n\nexport const NotFoundPage = ({\n  hasTopBar = true,\n  title = \"Page\",\n  subtitle = \"Cette page\",\n  reloadOnReconnection = true,\n}) => {\n  const isOffline = useIsOffline();\n  const wasOffline = usePrevious(isOffline);\n\n  useAppLoader();\n\n  useEffect(() => {\n    reloadOnReconnection &&\n      wasOffline &&\n      !isOffline &&\n      window.location.reload();\n  }, [reloadOnReconnection, isOffline, wasOffline]);\n\n  if (isOffline === null) return null;\n\n  if (isOffline) {\n    return (\n      <ErrorPage hasTopBar={hasTopBar}>\n        <OfflineBlock>\n          <img\n            src={illustration}\n            width=\"163\"\n            height=\"175\"\n            style={{ marginBottom: \"2rem\" }}\n          />\n          <h2 style={{ marginBottom: \".5rem\" }}>Pas de connexion</h2>\n          <p>\n            Connectez-vous à un\n            <br />\n            réseau Wi-Fi ou mobile\n          </p>\n        </OfflineBlock>\n      </ErrorPage>\n    );\n  }\n\n  return (\n    <ErrorPage\n      icon=\"?\"\n      title={`${title} introuvable`.trim()}\n      subtitle={`${subtitle} n’existe pas ou plus`.trim()}\n      hasReload={false}\n      hasTopBar={hasTopBar}\n    />\n  );\n};\n\nNotFoundPage.propTypes = {\n  hasTopBar: PropTypes.bool,\n  title: PropTypes.string,\n  subtitle: PropTypes.string,\n  reloadOnReconnection: PropTypes.bool,\n};\n\nexport default NotFoundPage;\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 = 350000;\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>Valider 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 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"],"names":["useActivities","_data","_data2","data","error","mutate","size","setSize","isValidating","useSWRInfinite","index","getActivityEndpoint","page","pageSize","activities","useMemo","activityIds","Array","isArray","forEach","results","activity","id","push","map","isLoadingInitialData","isLoadingMore","activityCount","length","count","isEmpty","isReachingEnd","isRefreshing","loadMore","useCallback","undefined","useUnreadActivityCount","isReady","setIsReady","useState","session","useSWR","dedupingInterval","focusThrottleInterval","useEffect","user","unreadActivityCount","useCustomAnnouncement","slug","shouldPause","_error$response","wasPaused","setIsPaused","useSessionStorage","isPaused","useSWRImmutable","errorStatus","response","status","announcement","ACTIVITY_STATUS","STATUS_INTERACTED","activityId","dismissCallback","async","setActivityAsInteracted","_objectSpread","StyledCard","styled","Link","props","theme","borderRadius","cardShadow","background0","text1000","__WEBPACK_DEFAULT_EXPORT__","_location$name","name","startTime","location","backLink","style","className","React","to","routeConfig","eventDetails","getLink","eventPk","displayHumanDateString","trim","filter","Boolean","join","SingleSlide","animated","div","Carousel","HorizontalLayout","events","rest","_objectWithoutProperties","_excluded","useSpring","from","opacity","paddingLeft","MiniEventCard","_extends","Swiper","spaceBetween","slidesPerView","event","SwiperSlide","key","VerticalLayout","_excluded2","common_UpcomingEvents","orientation","_excluded3","allPages_FeedbackButton","routes","useSelector","getRoutes","href","feedbackForm","isMobileApp","useMobileApp","ConnectedFloatButton","background","content","fadeInTransition","enter","leave","delay","CloseButton","button","closeButton","BaseTooltip","p","Tooltips","Tooltip","shouldShow","onClose","position","children","tooltipTransition","useTransition","item","onClick","slideInTransition","marginBottom","Button","a","$background","css","secondary500","secondary600","Wrapper","zindexFloatButton","collapse","FloatButton","isActive","shouldPushTooltip","icon","label","hasTooltip","setHasTooltip","hideTooltip","showTooltip","pushTooltip","onRest","wrapperTransition","onMouseOver","onMouseLeave","allPages_FloatButton","getUser","visitCount","setVisitCount","useLocalStorage","setShouldPushTooltip","useEffectOnce","help","ACTIONS","donations","activeContribution","renewable","route","color","contributions","_user$activeContribut","createEvent","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","xmlns","d","coupDeFil","materiel","textColor","createContact","toktokPreview","backgroundColor","x1","y1","x2","y2","cx","cy","r","votingProxy","votingProxyId","hasVotingProxyRequests","routeParams","votingProxyPk","actionTools","borderColor","newPollingStationOfficer","clipPath","transform","publicMeetingRequest","cafePopulaireRequest","joinGroup","DEFAULT_ACTION_ORDER","GROUP_MANAGER_ACTION_ORDER","StyledButton","text700","success500","RawFeatherIcon","$borderColor","$color","$textColor","ActionButtons_ActionButton","disabled","visibileLabel","useResponsiveMemo","e","preventDefault","onMouseDown","Icon","title","text25","StyledActionList","nav","ActionButtonCarousel","actions","breakpoints","getSwiperBreakpoints","slides","slideWidth","breakpoint","Math","ceil","centerInsufficientSlides","action","ActionButton","ActionButtonList","ActionButtons","_user$groups","groups","some","group","isManager","getActionsForUser","ResponsiveLayout","MobileLayout","DesktopLayout","ActionButtons_ActionButtons","ConnectedActionButtons","LayoutSubtitle","h2","LayoutTitle","h1","Title","span","MenuLink","$active","primary500","CounterBadge","StyledBottomBar","text50","zindexBottomBar","LINKS","CONFIG","mobile","BottomBar_BottomBar","BottomBar","active","unreadMessageCount","link","_link$icon","unreadMessageBadge","value","unreadActivityBadge","includes","fontSize","fontWeight","paddingBottom","inline","Navigation_BottomBar","useUnreadMessageCount","Counter","_ref","x","y","dominantBaseline","textAnchor","String","isNaN","parseInt","error500","zindexNavigationCounter","$border","white","DEFAULT_TYPE","DEFAULT_TITLE","DEFAULT_DESCRIPTION","DEFAULT_URL","DEFAULT_IMAGE","description","type","url","image","pageTitle","Helmet","property","ExternalRedirect","params","addQueryStringParams","window","replace","propTypes","PropTypes","isRequired","InternalRedirect","state","toast","sendToast","useToast","next","pathname","nextState","split","search","Redirect","RouteRedirect","isInternal","useRoute","app_useTracking","useTracking","useLocation","previous","useRef","userId","_paq","sentrySetUser","ip_address","current","log","logger","StyledWarning","$hasTopBar","zindexTopBar","backgroundCOlor","$hasDownloadBanner","app_ConnectivityWarning","ConnectivityWarning","hasTopBar","hasDownloadBanner","useDownloadBanner","offline","useIsOffline","debug","display","setDisplay","warning","timeout","setTimeout","clearTimeout","initial","transitions","Footer","lazy","__webpack_require__","then","bind","app_Footer","ConnectedFooter","isSessionLoaded","getIsSessionLoaded","isConnected","getIsConnected","find","match","hideFooter","displayFooterOnMobileApp","Suspense","fallback","isSignedIn","hasBanner","hideFooterBanner","SoutienBannerButton","SoutienBannerContainer","SoutienProgressBarContainer","LFIsecondary500","SoutienBanner","_window","apConfig","soutien","enabledFront","soutien2027","SoutienProgressBar","StyledContainer","$smallBackgroundColor","Layout_MobileLayout","Image","Container","article","$isClickable","genericComponents_Announcement","linkRef","handleClick","click","desktop","backgroundImage","ref","dangerouslySetInnerHTML","__html","app_Announcements","Announcements","markAsDisplayed","announcements","Announcement","FacebookLoginContainer","facebookLight","black","DismissMessage","app_FacebookLoginAd","FacebookLoginAd","isIOS","facebookLogin","src","facebookLogo","alt","margin","small","marginRight","facebookWhiteLogo","StyledLink","StyledMenu","ul","text500","SideBar_SecondaryMenu","links","NavigationLink","secondaryLinks","external","SecondaryMenu","marginTop","SideBar","listStyle","padding","SecondarySideBar","Navigation_SideBar","userRoutes","userGroups","LeftColumn","aside","zindexMainContent","MainColumn","RightColumn","MainContainer","collapseTablet","subtitle","Spacer","UpcomingEvents","app_Layout","Component","generateLogger","app_ErrorBoundary","Fallback","CustomFallback","SentryErrorBoundary","errorMessage","toString","ErrorPage","answerToBannerAnnouncement","announcementId","answerId","axios","put","SpinnerAnimation","keyframes","Loader","i","Spinner","BackgroundAnimation","Banner","Answers","BannerAnnouncementDone","Close","BannerAnnouncement","_currentAnnouncement$","currentAnnouncement","setCurrentAnnouncement","done","setDone","selectedAnswer","setSelectedAnswer","announcementsHandled","setAnnouncementsHandled","refresh","mutateAnswer","isLoading","useMutate","config","duration","AnnouncementDone","question","afterMessage","nextAnnouncement","prev","closeAnnouncement","get","hasAnswers","answers","_currentAnnouncement$2","answer","userAnswer","StyledPage","app_Page","dispatch","useDispatch","history","useHistory","useParams","isPartial","setBackLink","setTopBarRightLink","setAdminLink","setPageTitle","topBarRightLink","unlisten","listen","hash","JSON","stringify","keepScroll","scrollTo","redirectTo","redirectProps","ErrorBoundary","hasLayout","Layout","layoutProps","minHeight","hideFeedbackButton","HelpButton","StyledTitle","StyledModalContent","ModalMissingNewsletter","alreadyShowNewsletterModal","setAlreadyShowNewsletterModal","profile","mutateProfile","isLoadingUpdateProfile","setIsLoadingUpdateProfile","newsletterOptions","getNewsletterStatus","newsletters","userRegisteredToReguliere","_newsletterOptions$LF","_newsletterOptions$LF2","email","show","dateLessOneMonth","Date","setMonth","getMonth","created","userOldEnough","ModalConfirmation","dismissLabel","confirmationLabel","onConfirm","updatedProfile","updateProfile","shouldDismissOnClick","isConfirming","ProtectedComponent","AnonymousComponent","isAuthorized","useAuthentication","useAppLoader","PreloadedComponent","preload","Page","anonymousConfig","login","TrackingComponent","app_Router","Router","BrowserRouter","basename","BASE_PATH","ScrollMemory","TopBar","Switch","hideTopBar","appOnlyTopBar","Route","path","exact","OpenGraphTags","hideConnectivityWarning","NotFoundPage","funcApi","onSuccess","setError","setData","setIsLoading","args","statusCode","_e$response","message","loader","setLoader","document","getElementById","addEventListener","remove","zIndex","ENDPOINT","checkCode","logout","signUp","getProfile","getProfileOptions","getAuthenticationEndpoint","endpoint","Object","entries","result","success","body","post","code","formData","location_zip","postalCode","location_country","country","non_field_errors","global","patch","selector","authentication","neededAuthentication","AUTHENTICATION","NONE","useBookmarkedEmails","legacyBookmarkedEmails","bookmarkedEmails","setBookmarkedEmails","getBookmarkedEmails","bookmarkEmails","addBookmarkedEmail","bookmarkEmail","StyledIcon","hasReload","block","reload","OfflineBlock","notFoundPage_NotFoundPage","reloadOnReconnection","isOffline","wasOffline","usePrevious","illustration","CounterContainer","ProgressBar","barHeight","soutienPrimary","soutienLight","ProgressBarStep","goal","_soutienCounter$count2","soutienCounter","useSoutienCounter","barStepRef","_soutienCounter$count","currentPercent","barStep","borderBottomRightRadius","borderTopRightRadius","console","computeProgressBarStep","postFinalizeCode","opts","refreshInterval","initializeValidation","postSoutienData","turnstileToken","headers","finalizeSoutien","verificationCode","operationToken"],"sourceRoot":""}