{"version":3,"file":"static/components/3812-038afcd253e44bf2ddf9.js?cv=7","mappings":"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","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/lib/components/utils/url.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/globalContext/reducers.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/FeatherIcon.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/lib/components/utils/axios.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/activity/components/common/api.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/globalContext/actions/index.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/hooks/useMobileApp.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/lib/components/utils/dom.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/utils.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/hooks/useRoute.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Link.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/globalContext/QueryStringParamsActions.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/globalContext/GlobalContext.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/Button/utils.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/authentication/common.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/Button/BaseButton.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/Button/SoutienButton.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/Button/Button.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/Button/index.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/routes.components.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/routes.config.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/activity/components/common/helpers.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/offline/hooks.js"],"sourcesContent":["export const parseURL = (url) =>\n  new URL(url, window.location && window.location.origin);\n\nexport const relativeToAbsoluteURL = ((a) => (url) => {\n  a.href = url;\n  return a.href;\n})(document.createElement(\"a\"));\n\nexport const stringifyQueryStringParams = (params = {}) => {\n  if (\n    !params ||\n    typeof params !== \"object\" ||\n    Object.keys(params).length === 0\n  ) {\n    return \"\";\n  }\n\n  return new URLSearchParams(\n    Object.entries(params).filter(([_, value]) => typeof value !== \"undefined\"),\n  ).toString();\n};\n\nexport const addQueryStringParams = (url, params = {}, relative = false) => {\n  if (!url) {\n    return \"\";\n  }\n  if (\n    !params ||\n    typeof params !== \"object\" ||\n    Object.keys(params).length === 0\n  ) {\n    return url;\n  }\n  try {\n    let parsedURL = url;\n    parsedURL = parseURL(url);\n    Object.entries(params).forEach(([key, value]) => {\n      if (typeof value !== \"undefined\") {\n        parsedURL.searchParams.set(key, value);\n      }\n    });\n    parsedURL = parsedURL.toString();\n    if (window?.location && relative) {\n      parsedURL = parsedURL.replace(window.location.origin, \"\");\n    }\n    return parsedURL;\n  } catch (e) {\n    return url;\n  }\n};\n\nexport const parseQueryStringParams = (url) => {\n  const params = Object.create(null);\n  let queryString = url ? url.split(\"?\")[1] : window.location.search.slice(1);\n  if (!queryString) {\n    return params;\n  }\n\n  queryString = queryString.split(\"#\")[0];\n  queryString.split(\"&\").forEach((entry) => {\n    // separate the keys and the values\n    let [key, value] = entry.split(\"=\");\n    value = typeof value === \"undefined\" ? true : value;\n\n    if (key.match(/\\[(\\d+)?\\]$/)) {\n      const name = key.replace(/\\[(\\d+)?\\]/, \"\");\n      params[name] = params[name] || [];\n      if (name.match(/\\[\\d+\\]$/)) {\n        var index = /\\[(\\d+)\\]/.exec(key)[1];\n        params[name][index] = value;\n      } else {\n        params[name].push(value);\n      }\n    } else {\n      if (!params[key]) {\n        params[key] = value;\n      } else if (params[key] && typeof params[key] === \"string\") {\n        params[key] = [params[key]];\n        params[key].push(value);\n      } else {\n        params[key].push(value);\n      }\n    }\n  });\n\n  return params;\n};\n\nexport const slugify = (string, separator = \"-\") => {\n  separator = separator.trim();\n  return (\n    string\n      .toString()\n      .normalize(\"NFD\")\n      .toLowerCase()\n      // remove all chars not letters, numbers, current separator and spaces (to be replaced)\n      .replace(new RegExp(`[^a-z0-9${separator} ]`, \"g\"), \"\")\n      .trim()\n      .replace(/\\s+/g, separator)\n  );\n};\n","import shortUUID from \"short-uuid\";\nimport ACTION_TYPE from \"@agir/front/globalContext/actionTypes\";\n\nimport { AUTHENTICATION } from \"@agir/front/authentication/common\";\n\nexport const hasRouter = (state = false, action) => {\n  if (action.type === ACTION_TYPE.INIT_ACTION) {\n    return !!action.hasRouter;\n  }\n  return state;\n};\n\nexport const isSessionLoaded = (state = false, action) => {\n  if (action.type === ACTION_TYPE.SET_SESSION_CONTEXT_ACTION) {\n    return true;\n  }\n  return state;\n};\n\nexport const isPoliticalSupport = (state = false, action) => {\n  if (action.type === ACTION_TYPE.SET_SESSION_CONTEXT_ACTION) {\n    return !!action.user && action.user.isPoliticalSupport;\n  }\n  if (action.type === ACTION_TYPE.SET_IS_POLITICAL_SUPPORT_ACTION) {\n    return true;\n  }\n  return state;\n};\n\nexport const user = (state = null, action) => {\n  if (action.type === ACTION_TYPE.SET_SESSION_CONTEXT_ACTION) {\n    return action.user;\n  }\n  return state;\n};\n\nexport const authentication = (state = AUTHENTICATION.NONE, action) => {\n  if (action.type === ACTION_TYPE.SET_SESSION_CONTEXT_ACTION) {\n    return action.authentication || state;\n  }\n  return state;\n};\n\nexport const bookmarkedEmails = (state = [], action) => {\n  if (action.type === ACTION_TYPE.SET_SESSION_CONTEXT_ACTION) {\n    return action.bookmarkedEmails || state;\n  }\n  return state;\n};\n\nexport const routes = (state = {}, action) => {\n  if (\n    action.type === ACTION_TYPE.INIT_ACTION ||\n    action.type === ACTION_TYPE.SET_SESSION_CONTEXT_ACTION\n  ) {\n    // Merge state and action payload since different actions can define different route properties.\n    return {\n      ...state,\n      ...(action.routes || {}),\n    };\n  }\n  return state;\n};\n\nexport const toasts = (state = [], action) => {\n  if (\n    action.type === ACTION_TYPE.INIT_ACTION ||\n    action.type === ACTION_TYPE.SET_SESSION_CONTEXT_ACTION ||\n    action.type === ACTION_TYPE.ADD_TOASTS\n  ) {\n    if (!Array.isArray(action.toasts)) {\n      return state;\n    }\n    const newState = [...state];\n    action.toasts.forEach((toast) => {\n      if (toast.toastId && newState.some((t) => t.toastId === toast.toastId)) {\n        return;\n      }\n      newState.push({\n        toastId: toast.toastId || shortUUID.generate(),\n        ...toast,\n      });\n    });\n    return newState;\n  }\n  if (action.type === ACTION_TYPE.CLEAR_TOAST) {\n    return state.filter(({ toastId }) => toastId !== action.toastId);\n  }\n  if (action.type === ACTION_TYPE.CLEAR_ALL_TOASTS) {\n    return [];\n  }\n  return state;\n};\n\nexport const pageTitle = (state = \"\", action) => {\n  if (action.type === ACTION_TYPE.SET_PAGE_TITLE) {\n    return action.title || \"\";\n  }\n  return state;\n};\n\nexport const backLink = (state = null, action) => {\n  if (action.type === ACTION_TYPE.INIT_ACTION) {\n    return action.backLink || state;\n  }\n  if (action.type === ACTION_TYPE.SET_BACK_LINK_ACTION) {\n    return action.backLink || null;\n  }\n  return state;\n};\n\nexport const topBarRightLink = (state = null, action) => {\n  if (action.type === ACTION_TYPE.INIT_ACTION) {\n    return action.topBarRightLink || state;\n  }\n  if (action.type === ACTION_TYPE.SET_TOP_BAR_RIGHT_LINK_ACTION) {\n    return action.topBarRightLink || null;\n  }\n  return state;\n};\n\nexport const adminLink = (state = null, action) => {\n  if (action.type === ACTION_TYPE.INIT_ACTION) {\n    return action.adminLink || state;\n  }\n  if (action.type === ACTION_TYPE.SET_ADMIN_LINK_ACTION) {\n    return action.adminLink || null;\n  }\n  return state;\n};\n\nexport const messages = (state = {}, action) => {\n  switch (action.type) {\n    case ACTION_TYPE.SET_MESSAGES_ACTION: {\n      if (!Array.isArray(action.messages)) {\n        return state;\n      }\n      const newState = { ...state };\n      action.messages.forEach((message) => {\n        newState[message.id] =\n          typeof newState[message.id] === \"undefined\"\n            ? message\n            : newState[message.id];\n      });\n      return newState;\n    }\n    case ACTION_TYPE.CLEAR_MESSAGES_ACTION:\n      return {};\n    case ACTION_TYPE.SET_MESSAGE_ACTION: {\n      return action.message\n        ? {\n            [action.message.id]: action.message,\n          }\n        : {};\n    }\n    case ACTION_TYPE.CREATED_MESSAGE_ACTION: {\n      return !action.error && action.message && action.message.id\n        ? { [action.message.id]: action.message, ...state }\n        : state;\n    }\n    case ACTION_TYPE.UPDATED_MESSAGE_ACTION: {\n      if (!action.error && action.message && action.message.id) {\n        const newState = { ...state };\n        newState[action.message.id] = action.message;\n        return newState;\n      }\n      return state;\n    }\n    case ACTION_TYPE.DELETED_MESSAGE_ACTION: {\n      if (!action.error && action.message && action.message.id) {\n        const newState = { ...state };\n        newState[action.message.id] = null;\n        return newState;\n      }\n      return state;\n    }\n    case ACTION_TYPE.CREATED_COMMENT_ACTION: {\n      if (\n        !action.error &&\n        action.message &&\n        action.message.id &&\n        action.comment\n      ) {\n        const newState = { ...state };\n        const newMessage = newState[action.message.id];\n        if (newMessage) {\n          newState[newMessage.id] = {\n            ...newMessage,\n            lastUpdate: Date.now(),\n            comments: Array.isArray(newMessage.comments)\n              ? [...newMessage.comments, action.comment]\n              : [...newMessage.recentComments, action.comment],\n          };\n          if (typeof newState[newMessage.id].commentCount === \"number\") {\n            newState[newMessage.id].commentCount += 1;\n          }\n        }\n        return newState;\n      }\n      return state;\n    }\n    case ACTION_TYPE.DELETED_COMMENT_ACTION: {\n      if (\n        !action.error &&\n        action.message &&\n        action.message.id &&\n        action.comment\n      ) {\n        const newState = { ...state };\n        const newMessage = newState[action.message.id];\n        if (newMessage) {\n          newState[newMessage.id] = {\n            ...newMessage,\n            lastUpdate: Date.now(),\n            comments: Array.isArray(newMessage.comments)\n              ? newMessage.comments\n              : newMessage.recentComments,\n          };\n          newState[newMessage.id].comments = newState[\n            newMessage.id\n          ].comments.filter((c) => c.id !== action.comment.id);\n          if (typeof newState[newMessage.id].commentCount === \"number\") {\n            newState[newMessage.id].commentCount -= 1;\n          }\n        }\n        return newState;\n      }\n      return state;\n    }\n    default:\n      return state;\n  }\n};\n\nexport const isLoadingMessages = (state = false, action) => {\n  switch (action.type) {\n    case ACTION_TYPE.LOADING_MESSAGES_ACTION:\n    case ACTION_TYPE.REFRESHING_MESSAGES_ACTION:\n      return true;\n    case ACTION_TYPE.SET_MESSAGES_ACTION:\n    case ACTION_TYPE.SET_MESSAGE_ACTION:\n    case ACTION_TYPE.REFRESHED_MESSAGES_ACTION:\n      return false;\n    default:\n      return state;\n  }\n};\nexport const isUpdatingMessages = (state = false, action) => {\n  switch (action.type) {\n    case ACTION_TYPE.CREATING_MESSAGE_ACTION:\n    case ACTION_TYPE.UPDATING_MESSAGE_ACTION:\n    case ACTION_TYPE.DELETING_MESSAGE_ACTION:\n    case ACTION_TYPE.REPORTING_MESSAGE_ACTION:\n    case ACTION_TYPE.CREATING_COMMENT_ACTION:\n    case ACTION_TYPE.DELETING_COMMENT_ACTION:\n    case ACTION_TYPE.REPORTING_COMMENT_ACTION:\n      return true;\n    case ACTION_TYPE.CREATED_MESSAGE_ACTION:\n    case ACTION_TYPE.UPDATED_MESSAGE_ACTION:\n    case ACTION_TYPE.DELETED_MESSAGE_ACTION:\n    case ACTION_TYPE.REPORTED_MESSAGE_ACTION:\n    case ACTION_TYPE.CREATED_COMMENT_ACTION:\n    case ACTION_TYPE.DELETED_COMMENT_ACTION:\n    case ACTION_TYPE.REPORTED_COMMENT_ACTION:\n      return false;\n    default:\n      return state;\n  }\n};\n\nexport const getHasRouter = (state) => state.hasRouter;\n\nexport const getIsSessionLoaded = (state) => state.isSessionLoaded;\n\nexport const getisPoliticalSupport = (state) => state.isPoliticalSupport;\n\nexport const getUser = (state) => state.user;\nexport const getIsConnected = (state) => !!state.user;\nexport const getAuthentication = (state) => state.authentication;\nexport const getBookmarkedEmails = (state) => state.bookmarkedEmails;\n\nexport const getRoutes = (state) => state.routes;\nexport const getRouteById = (state, id) => state.routes[id] || null;\n\nexport const getToasts = (state) => state.toasts;\n\nexport const getPageTitle = (state) => state.pageTitle;\n\nexport const getBackLink = (state) => {\n  if (!state.backLink) return null;\n  if (state.backLink.isProtected && state.isSessionLoaded && !state.user)\n    return null;\n  return state.backLink;\n};\n\nexport const getTopBarRightLink = (state) => {\n  if (!state.topBarRightLink) return null;\n  if (state.topBarRightLink.isProtected && state.isSessionLoaded && !state.user)\n    return null;\n  return state.topBarRightLink;\n};\n\nexport const getAdminLink = (state) => {\n  if (!state.adminLink) return null;\n  return state.adminLink;\n};\n\nexport const getMessages = (state) =>\n  Object.values(state.messages).filter(Boolean);\nexport const getMessageById = (state, id) =>\n  (state.messages && state.messages[id]) || null;\nexport const getIsLoadingMessages = (state) => state.isLoadingMessages;\nexport const getIsUpdatingMessages = (state) => state.isUpdatingMessages;\n\n// Root reducer\nconst reducers = {\n  hasRouter,\n  isSessionLoaded,\n  isPoliticalSupport,\n  user,\n  authentication,\n  bookmarkedEmails,\n  routes,\n  toasts,\n  pageTitle,\n  backLink,\n  topBarRightLink,\n  adminLink,\n  messages,\n  isLoadingMessages,\n  isUpdatingMessages,\n};\nconst rootReducer = (state, action) => {\n  let newState = state;\n  Object.keys(reducers).forEach((key) => {\n    const currentValue = newState[key];\n    const reducer = reducers[key];\n    const nextValue =\n      typeof reducer === \"function\" ? reducer(currentValue, action) : reducer;\n    if (nextValue !== currentValue) {\n      newState = {\n        ...newState,\n        [key]: nextValue,\n      };\n    }\n  });\n  return newState;\n};\n\nexport default rootReducer;\n","import { icons } from \"feather-icons\";\nimport isPropValid from \"@emotion/is-prop-valid\";\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nconst getIconDataUrl = (icon) =>\n  icon && icons[icon]\n    ? `url('data:image/svg+xml;utf8,${icons[icon].toSvg({\n        height: 16,\n        color: \"grey\",\n      })}')`\n    : \"\";\n\nexport const allIcons = Object.keys(icons);\n\nexport const RawFeatherIcon = styled.span\n  .withConfig({\n    shouldForwardProp: isPropValid,\n  })\n  .attrs(\n    ({ name, strokeWidth, color, strokeLinecap, strokeLinejoin, svgStyle }) => {\n      const attrs = {\n        name,\n        \"stroke-width\": strokeWidth,\n        \"stroke-linecap\": strokeLinecap,\n        \"stroke-linejoin\": strokeLinejoin,\n      };\n      Object.keys(attrs).map((k) => attrs[k] === undefined && delete attrs[k]);\n\n      if (svgStyle !== undefined) {\n        attrs.style = Object.keys(svgStyle)\n          .map((key) => {\n            const cssKey = key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n            return `${cssKey}:${svgStyle[key]}`;\n          })\n          .join(\";\");\n      }\n\n      return {\n        dangerouslySetInnerHTML: { __html: icons[name]?.toSvg(attrs) ?? \"\" },\n      };\n    },\n  )`\n  display: inline-flex;\n  align-items: center;\n\n  svg {\n    position: relative;\n    width: ${(props) => props.width};\n    height: ${(props) => props.height};\n    top: ${(props) => props.top};\n    color: ${(props) => (props.color ? props.theme[props.color] || props.color : \"currentcolor\")};\n  }\n`;\n\nRawFeatherIcon.propTypes = {\n  name: PropTypes.oneOf(allIcons),\n  color: PropTypes.string,\n  width: PropTypes.string,\n  height: PropTypes.string,\n  strokeWidth: PropTypes.number,\n  strokeLinecap: PropTypes.number,\n  strokeLinejoin: PropTypes.number,\n  style: PropTypes.objectOf(PropTypes.string),\n};\n\n/*\nLa taille de police de base est de 16 pixels.\nLes grands icônes doivent faire 24 pixels (1.5rem)\nLes petits icônes doivent faire 16 pixels (1rem)\n */\n\nconst FeatherIcon = ({ name, small, color, inline }) => {\n  // stroke dimensions\n  const strokeWidth = !small ? 2 : 1.33;\n\n  // positionning dimensions\n  const dimension = !small ? \"1.5rem\" : \"1rem\";\n\n  const top = inline ? (!small ? \"0.3rem\" : \"0.15rem\") : \"0\";\n\n  return (\n    <RawFeatherIcon\n      color={color}\n      name={name}\n      width={dimension}\n      height={dimension}\n      top={top}\n      strokeWidth={strokeWidth}\n    />\n  );\n};\nFeatherIcon.propTypes = {\n  name: PropTypes.oneOf(allIcons),\n  small: PropTypes.bool,\n  color: PropTypes.string,\n  inline: PropTypes.bool,\n};\n\nFeatherIcon.defaultProps = {\n  small: false,\n  inline: false,\n};\n\nFeatherIcon.RawFeatherIcon = RawFeatherIcon;\nFeatherIcon.allIcons = allIcons;\n\nexport default FeatherIcon;\n\nexport const IconList = styled.ul`\n  padding-left: 1.5rem;\n  margin-bottom: 0;\n`;\n\nexport const IconListItem = styled.li`\n  list-style: none;\n  position: relative;\n  margin-bottom: 0.5rem;\n\n  &:last-child {\n    margin-bottom: 0;\n  }\n\n  & > i,\n  &:before {\n    text-align: center;\n    width: 1.5rem;\n    height: 1rem;\n    position: absolute;\n    top: 0.15rem;\n    left: -1.75rem;\n    color: grey;\n  }\n\n  &:before {\n    // prettier-ignore\n    content: ${(props) => getIconDataUrl(props.name)};\n  }\n`;\n","import axios from \"axios\";\nimport Cookies from \"js-cookie\";\n\nconst client = axios.create({\n  xsrfCookieName: \"csrftoken\",\n  xsrfHeaderName: \"X-CSRFToken\",\n});\n\nlet CSRFPromise = null;\n\nfunction updateCSRF() {\n  if (CSRFPromise) {\n    return CSRFPromise;\n  }\n\n  CSRFPromise = client.get(\"/api/csrf/\");\n  return CSRFPromise;\n}\n\nclient.interceptors.request.use(async function (config) {\n  if (\n    !Cookies.get(\"csrftoken\") &&\n    config.url !== \"/api/csrf/\" &&\n    config.method !== \"get\"\n  ) {\n    await updateCSRF();\n  }\n\n  return config;\n});\n\nexport default client;\n","import { mutate } from \"swr\";\n\nimport axios from \"@agir/lib/utils/axios\";\nimport logger from \"@agir/lib/utils/logger\";\n\nimport { ACTIVITY_STATUS } from \"@agir/activity/common/helpers\";\n\nconst log = logger(__filename);\n\nexport const ENDPOINT = {\n  activities: \"/api/user/activities/?page=:page&page_size=:pageSize\",\n  activity: \"/api/activity/:activityId/\",\n  bulkUpdateActivityStatus: \"/api/activity/bulk/update-status/\",\n  setAllActivitiesRead: \"/api/activity/bulk/mark-all-read/\",\n  announcements: \"/api/announcements/\",\n  customAnnouncement: \"/api/user/announcements/custom/:slug/\",\n  unreadActivityCount: \"/api/user/activities/unread-count/\",\n};\n\nexport const getActivityEndpoint = (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 updateActivityStatus = async (\n  activityId,\n  status = ACTIVITY_STATUS.STATUS_INTERACTED,\n  fromPush = false,\n) => {\n  let result = false;\n  if (!activityId) {\n    return result;\n  }\n  const url = getActivityEndpoint(\"activity\", { activityId });\n  const data = fromPush ? { pushStatus: status } : { status };\n  let res = null;\n  try {\n    res = await axios.put(url, data);\n    result = !!res && res.status === 200;\n  } catch (e) {\n    log.debug(e);\n    result = false;\n  }\n\n  return result;\n};\n\nexport const setActivityAsInteracted = (activityId, fromPush) =>\n  updateActivityStatus(activityId, ACTIVITY_STATUS.STATUS_INTERACTED, fromPush);\n\nexport const setActivityAsDisplayed = (activityId) =>\n  updateActivityStatus(activityId, ACTIVITY_STATUS.STATUS_DISPLAYED);\n\nexport const setActivitiesAsDisplayed = async (ids = []) => {\n  let result = false;\n  if (!Array.isArray(ids) || ids.length === 0) {\n    return result;\n  }\n  const url = getActivityEndpoint(\"bulkUpdateActivityStatus\");\n  const data = {\n    status: ACTIVITY_STATUS.STATUS_DISPLAYED,\n    ids,\n  };\n  let res = null;\n  try {\n    res = await axios.post(url, data);\n    result = !!res && res.status === 204;\n  } catch (e) {\n    log.debug(e);\n    result = false;\n  }\n\n  return result;\n};\n\n// Set all activities @ids as read\nexport const setCurrentActivitiesAsRead = async (ids = []) => {\n  const success = await setActivitiesAsDisplayed(ids);\n  if (!success) return;\n\n  await mutate(\"/api/session/\", (session) => ({\n    ...session,\n    hasUnreadActivities: false,\n  }));\n};\n\n// Set all activities of user as read\nexport const setAllActivitiesAsRead = async () => {\n  let result = false;\n\n  const url = getActivityEndpoint(\"setAllActivitiesRead\");\n\n  try {\n    let res = await axios.get(url);\n    result = !!res && res.status === 204;\n  } catch (e) {\n    log.debug(e);\n    result = false;\n  }\n\n  if (!result) return;\n\n  mutate(\"/api/session/\", (session) => ({\n    ...session,\n    hasUnreadActivities: false,\n  }));\n\n  return result;\n};\n","import ACTION_TYPE from \"@agir/front/globalContext/actionTypes\";\nimport nonReactRoutes from \"@agir/front/globalContext/nonReactRoutes.config\";\n\nexport const init = (hasRouter = false) => {\n  let globalContextData = {\n    hasRouter,\n    routes: nonReactRoutes,\n  };\n\n  return {\n    type: ACTION_TYPE.INIT_ACTION,\n    ...globalContextData,\n  };\n};\n\nexport const setSessionContext = (data) => ({\n  type: ACTION_TYPE.SET_SESSION_CONTEXT_ACTION,\n  ...data,\n});\n\nexport const setisPoliticalSupport = () => ({\n  type: ACTION_TYPE.SET_IS_POLITICAL_SUPPORT_ACTION,\n});\n\n// TOASTS\nexport const addToasts = (toasts = []) => ({\n  type: ACTION_TYPE.ADD_TOASTS,\n  toasts: Array.isArray(toasts) ? toasts : [toasts],\n});\nexport const clearToast = (toastId) => ({\n  type: ACTION_TYPE.CLEAR_TOAST,\n  toastId,\n});\nexport const clearAllToasts = () => ({\n  type: ACTION_TYPE.CLEAR_ALL_TOASTS,\n});\n\n// PAGE TITLE\nexport const setPageTitle = (title) => ({\n  type: ACTION_TYPE.SET_PAGE_TITLE,\n  title,\n});\n\n// BACK LINK\nexport const setBackLink = (backLink) => ({\n  type: ACTION_TYPE.SET_BACK_LINK_ACTION,\n  backLink,\n});\n\n// TOP BAR RIGHT LINK\nexport const setTopBarRightLink = (topBarRightLink) => ({\n  type: ACTION_TYPE.SET_TOP_BAR_RIGHT_LINK_ACTION,\n  topBarRightLink,\n});\n\n// ADMIN LINK\nexport const setAdminLink = (adminLink) => ({\n  type: ACTION_TYPE.SET_ADMIN_LINK_ACTION,\n  adminLink,\n});\n\nconst createDispatch = (dispatchFunction) => (action) => {\n  if (typeof action === \"function\") {\n    return action(dispatchFunction);\n  }\n  return dispatchFunction(action);\n};\n\nexport default createDispatch;\n","import { useLocalStorage } from \"@agir/lib/utils/hooks\";\nimport { parseQueryStringParams } from \"@agir/lib/utils/url\";\n\n/**\n * Custom hook to check if current page is inside a iOS or Android app webview\n * based on current or past URL querystring params [ios=[0|1], android=[0|1]]\n * @return {object} the result object\n * @property {boolean} isIOS - the page is inside an iOS app webview\n * @property {boolean} isAndroid - the page is inside an Android app webview\n * @property {boolean} isMobileApp - the page is inside an app webview\n */\nexport const useMobileApp = () => {\n  const [isAndroid, setIsAndroid] = useLocalStorage(\"AP_isAndroid\", \"0\");\n  const [isIOS, setIsIOS] = useLocalStorage(\"AP_isIOS\", \"0\");\n  const params = parseQueryStringParams();\n\n  const ios = isIOS === \"1\" || params.ios === \"1\";\n  const android = isAndroid === \"1\" || params.android === \"1\";\n\n  return {\n    isIOS: ios,\n    isAndroid: android,\n    isMobileApp: ios || android\n  };\n};","export const getScrollableParent = (element) => {\n  if (element === window) {\n    return element;\n  }\n\n  const regex = /(auto|scroll)/;\n  const parents = (_node, ps) => {\n    if (_node.parentNode === null) {\n      return ps;\n    }\n    return parents(_node.parentNode, ps.concat([_node]));\n  };\n\n  const style = (_node, prop) =>\n    getComputedStyle(_node, null).getPropertyValue(prop);\n  const overflow = (_node) =>\n    style(_node, \"overflow\") +\n    style(_node, \"overflow-y\") +\n    style(_node, \"overflow-x\");\n  const scroll = (_node) => regex.test(overflow(_node));\n\n  const scrollParent = (_node) => {\n    if (!(_node instanceof HTMLElement || _node instanceof SVGElement)) {\n      return;\n    }\n\n    const ps = parents(_node.parentNode, []);\n\n    for (let i = 0; i < ps.length; i += 1) {\n      if (scroll(ps[i])) {\n        return ps[i];\n      }\n    }\n\n    return document.scrollingElement || document.documentElement;\n  };\n\n  return scrollParent(element);\n};\n\nconst INTERACTIVE_ELEMENT = {\n  A: (element) => element.hasAttribute(\"href\"),\n  AUDIO: (element) => element.hasAttribute(\"controls\"),\n  BUTTON: true,\n  DETAILS: true,\n  EMBED: true,\n  IFRAME: true,\n  KEYGEN: true,\n  LABEL: true,\n  SELECT: true,\n  TEXTAREA: true,\n  VIDEO: (element) => element.hasAttribute(\"controls\"),\n};\n\nexport function isInteractiveElement(element) {\n  const { nodeName } = element;\n  if (element instanceof HTMLInputElement && element.type !== \"hidden\") {\n    return true;\n  }\n  if (element.hasAttribute(\"tabindex\") && element.tabIndex > -1) {\n    return true;\n  }\n  if (!INTERACTIVE_ELEMENT[nodeName]) {\n    return false;\n  }\n  if (typeof INTERACTIVE_ELEMENT[nodeName] === \"function\") {\n    return INTERACTIVE_ELEMENT[nodeName](element);\n  }\n  return INTERACTIVE_ELEMENT[nodeName] === true;\n}\n\nexport const handleEventExceptForInteractiveChild = (event, callback) => {\n  if (!callback) {\n    return;\n  }\n  for (\n    let target = event.target;\n    target !== event.currentTarget;\n    target = target.parentElement\n  ) {\n    if (isInteractiveElement(target)) {\n      return;\n    }\n  }\n  callback(event);\n};\n","import React, { lazy as reactLazy, useEffect, useMemo, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { useIsOffline } from \"@agir/front/offline/hooks\";\nimport { getScrollableParent } from \"@agir/lib/utils/dom\";\n\nexport const lazy = (lazyImport, fallback) => {\n  const LazyComponent = (props) => {\n    const isOffline = useIsOffline();\n    const [error, setError] = useState(null);\n\n    const Lazy = useMemo(\n      () =>\n        reactLazy(async () => {\n          try {\n            return await lazyImport();\n          } catch (err) {\n            if (err.name !== \"ChunkLoadError\") {\n              if (err instanceof Error) {\n                throw err;\n              }\n              const message = err?.message\n                ? err.message\n                : typeof err === \"string\"\n                  ? err\n                  : \"Lazy loading failed.\";\n              throw new Error(message);\n            }\n            setError(err.toString());\n            const Fallback = () =>\n              typeof fallback !== \"undefined\" ? (\n                fallback\n              ) : (\n                <div>\n                  <h2>Erreur</h2>\n                  <p>\n                    {process.env.NODE_ENV === \"production\"\n                      ? \"Nous n'avons pas pu charger cette page.\"\n                      : err.toString()}\n                  </p>\n                </div>\n              );\n            return {\n              default: Fallback,\n            };\n          }\n        }),\n      //eslint-disable-next-line\n      [lazyImport, error, fallback],\n    );\n\n    useEffect(() => {\n      error && !isOffline && setError(null);\n    }, [error, isOffline]);\n\n    return <Lazy {...props} />;\n  };\n\n  LazyComponent.displayName = `LazyComponent`;\n  LazyComponent.preload = async () => {\n    try {\n      return await lazyImport();\n    } catch (err) {\n      if (err.name !== \"ChunkLoadError\" && err instanceof Error) {\n        throw err;\n      }\n    }\n  };\n\n  return LazyComponent;\n};\n\nexport const scrollToElement = (\n  targetElement,\n  scrollerElement,\n  marginTop = 30,\n) => {\n  if (!targetElement || !scrollerElement) {\n    return;\n  }\n\n  const scrollableElement = getScrollableParent(scrollerElement);\n\n  targetElement &&\n    scrollableElement &&\n    scrollableElement.scrollTo({\n      top: targetElement.offsetTop - marginTop,\n      behavior: \"smooth\",\n    });\n};\n\nexport function getFirstElementFromError(errors) {\n  const keys = Object.entries(errors)\n      .filter(([_, v]) => !!v)\n      .map(([k]) => k);\n\n  let errorElement = null;\n  for (let i = 0; i < keys.length; i += 1) {\n    let elt = document.querySelector(\n        `[data-scroll=\"${keys[i]}\"], [name=\"${keys[i]}\"]`,\n    );\n    if (!elt) {\n      continue;\n    }\n    if (!errorElement) {\n      errorElement = elt;\n      continue;\n    }\n    if (elt.getBoundingClientRect().top < errorElement.getBoundingClientRect().top) {\n      errorElement = elt;\n    }\n  }\n  return errorElement\n}\n\nexport const scrollToError = (errors, scrollerElement, marginTop = 30) => {\n  if (!errors) {\n    return;\n  }\n\n  if (!scrollerElement || !Object.values(errors).some(Boolean)) {\n    return;\n  }\n\n  scrollToElement(getFirstElementFromError(errors), scrollerElement, marginTop);\n};\n\nexport const useCurrentLocation = () => {\n  const [pathname, setPathname] = useState(window.location.pathname);\n  const history = useHistory();\n\n  useEffect(() => {\n    history?.listen((location) => {\n      setPathname(location.pathname);\n    }) || setPathname(window.location.pathname);\n  }, [history]);\n\n  return pathname;\n};\n","import { getRouteByPathname, routeConfig } from \"@agir/front/app/routes.config\";\nimport { useSelector } from \"@agir/front/globalContext/GlobalContext\";\nimport { getHasRouter, getRoutes } from \"@agir/front/globalContext/reducers\";\n\n\nexport const useRoute = (route, routeParams) => {\n  const routes = useSelector(getRoutes);\n  const hasRouter = useSelector(getHasRouter);\n\n  if (!route) {\n    return {\n      route: null,\n      isInternal: false,\n    };\n  }\n\n  if (routes && routes[route]) {\n    return {\n      url: routes[route],\n      isInternal: !!hasRouter && !!getRouteByPathname(routes[route]),\n    };\n  }\n\n  if (routeConfig[route]) {\n    return {\n      url: routeParams\n        ? routeConfig[route].getLink(routeParams)\n        : routeConfig[route].getLink(),\n      isInternal: !!hasRouter,\n    };\n  }\n\n  return {\n    url: route,\n    isInternal: false,\n  };\n};\n","import PropTypes from \"prop-types\";\nimport React, { useMemo } from \"react\";\nimport { Link as RouterLink } from \"react-router-dom\";\n\nimport { routeConfig } from \"@agir/front/app/routes.config\";\nimport { addQueryStringParams } from \"@agir/lib/utils/url\";\nimport { useMobileApp } from \"./hooks/useMobileApp\";\nimport { useRoute } from \"./hooks/useRoute\";\n\nconst ExternalLink = (props) => {\n  const { params, forwardedRef, ...rest } = props;\n  const href = params ? addQueryStringParams(props.href, params) : props.href;\n  return <a ref={forwardedRef} {...rest} href={href} />;\n};\nExternalLink.propTypes = {\n  href: PropTypes.string.isRequired,\n  params: PropTypes.object,\n};\n\nconst InternalLink = (props) => {\n  const { to, params, state, backLink, forwardedRef, ...rest } = props;\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 <RouterLink ref={forwardedRef} {...rest} to={next} />;\n};\nInternalLink.propTypes = {\n  to: PropTypes.string.isRequired,\n  state: PropTypes.object,\n  params: PropTypes.object,\n  backLink: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nconst RouteLink = (props) => {\n  const { route, routeParams, ...rest } = props;\n  const { url, isInternal } = useRoute(route, routeParams);\n\n  return isInternal ? (\n    <InternalLink {...rest} to={url} />\n  ) : (\n    <ExternalLink {...rest} href={url} />\n  );\n};\nRouteLink.propTypes = {\n  route: PropTypes.string.isRequired,\n  routeParams: PropTypes.object,\n};\n\nconst Link = (() => {\n  const LinkComponent = (props, ref) => {\n    const { route, href, to } = props;\n    let newHref = href;\n\n    if (route) {\n      return <RouteLink forwardedRef={ref} {...props} href={newHref} />;\n    }\n    if (to) {\n      return <InternalLink forwardedRef={ref} to={to} {...props} href={newHref} />;\n    }\n    if (href) {\n      return <ExternalLink forwardedRef={ref} {...props} href={newHref} />;\n    }\n\n    return null;\n  };\n  LinkComponent.displayName = \"Link\";\n\n  return React.forwardRef(LinkComponent);\n})();\n\nexport default Link;\n","import { useCallback, useEffect, useRef } from \"react\";\n\nimport { setActivityAsInteracted } from \"@agir/activity/common/api\";\nimport { parseQueryStringParams } from \"@agir/lib/utils/url\";\nimport logger from \"@agir/lib/utils/logger\";\n\nconst log = logger(__filename);\n\nconst QueryStringParamsActions = ({ user }) => {\n  const params = parseQueryStringParams();\n\n  const fromActivityUpdated = useRef(false);\n\n  const handleFromActivity = useCallback(async (activityId) => {\n    fromActivityUpdated.current = true;\n    try {\n      await setActivityAsInteracted(activityId, true);\n    } catch (e) {\n      log.debug(e);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (user && !fromActivityUpdated.current && params?.from_activity) {\n      handleFromActivity(params.from_activity);\n    }\n  }, [user, params, handleFromActivity]);\n\n  return null;\n};\n\nexport default QueryStringParamsActions;\n","import PropTypes from \"prop-types\";\nimport React, { useContext, useEffect, useMemo, Suspense } from \"react\";\nimport { StateInspector, useReducer } from \"reinspect\";\nimport useSWR from \"swr\";\n\nimport QueryStringParamsActions from \"./QueryStringParamsActions\";\nimport ThemeProvider, { getTheme } from \"@agir/front/theme/ThemeProvider\";\n\nimport rootReducer from \"@agir/front/globalContext/reducers\";\nimport createDispatch, {\n  init,\n  setSessionContext,\n} from \"@agir/front/globalContext/actions\";\n\nimport logger from \"@agir/lib/utils/logger\";\nimport { lazy } from \"@agir/front/app/utils\";\n\nconst log = logger(__filename);\n\nconst Toasts = lazy(() => import(\"@agir/front/globalContext/Toast\"), null);\n\nconst GlobalContext = React.createContext({});\n\nconst ProdProvider = ({\n  hasRouter = false,\n  hasToasts = false,\n  colorScheme,\n  children,\n}) => {\n  const [state, dispatch] = useReducer(\n    rootReducer,\n    rootReducer({}, init(hasRouter)),\n    (state) => state,\n    \"GC\",\n  );\n\n  const doDispatch = useMemo(() => createDispatch(dispatch), [dispatch]);\n\n  const { data: sessionContext } = useSWR(\"/api/session/\");\n\n  useEffect(() => {\n    if (!sessionContext) return;\n\n    if (!sessionContext.user) {\n      self.caches?.delete(\"session\").catch((err) => {\n        if (err.name !== \"SecurityError\") {\n          if (err instanceof Error) {\n            throw err;\n          }\n          const message = err?.message\n            ? err.message\n            : typeof err === \"string\"\n              ? err\n              : \"Session cache deletion failed.\";\n          throw new Error(message);\n        }\n      });\n    }\n\n    doDispatch(setSessionContext(sessionContext));\n    log.debug(\"Update session context\", sessionContext);\n  }, [doDispatch, sessionContext]);\n\n  return (\n    <GlobalContext.Provider value={{ state, dispatch: doDispatch }}>\n      <ThemeProvider\n        theme={(colorScheme && getTheme(colorScheme)) || undefined}\n      >\n        <QueryStringParamsActions user={sessionContext?.user} />\n        {children}\n        {hasToasts && state.toasts?.length > 0 ? (\n          <Suspense fallback={null}>\n            <Toasts />\n          </Suspense>\n        ) : null}\n      </ThemeProvider>\n    </GlobalContext.Provider>\n  );\n};\nconst DevProvider = (props) => {\n  return (\n    <StateInspector name=\"actionpopulaire\">\n      <ProdProvider {...props} />\n    </StateInspector>\n  );\n};\nDevProvider.propTypes = ProdProvider.propTypes = {\n  children: PropTypes.node,\n  hasToasts: PropTypes.bool,\n  hasRouter: PropTypes.bool,\n};\n\nexport const GlobalContextProvider =\n  process.env.NODE_ENV === \"production\" ? ProdProvider : DevProvider;\n\nexport const TestGlobalContextProvider = ({\n  hasRouter = false,\n  children,\n  value,\n}) => {\n  const [state] = useReducer(rootReducer, rootReducer({}, init()));\n  const doDispatch = useMemo(() => () => {}, []);\n  const currentState = useMemo(\n    () => ({\n      state: {\n        hasRouter,\n        ...state,\n        ...value,\n      },\n      dispatch: doDispatch,\n    }),\n    [hasRouter, state, value, doDispatch],\n  );\n\n  return (\n    <GlobalContext.Provider value={currentState}>\n      {children}\n    </GlobalContext.Provider>\n  );\n};\nTestGlobalContextProvider.propTypes = {\n  hasRouter: PropTypes.bool,\n  children: PropTypes.node,\n  value: PropTypes.object,\n};\n\nexport const useGlobalContext = () => useContext(GlobalContext);\nexport const useSelector = (selector) => {\n  const { state } = useContext(GlobalContext);\n  return selector(state);\n};\nexport const useDispatch = () => {\n  const { dispatch } = useContext(GlobalContext);\n  return dispatch;\n};\n\nexport default GlobalContextProvider;\n","import { icons } from \"feather-icons\";\n\nexport const ICONS = icons;\nexport const getIconDataUrl =\n  ({\n    color = \"black\",\n    fill,\n    width,\n    height,\n    strokeWidth,\n    strokeLineCap,\n    strokeLineJoin,\n  }) =>\n  ({ icon }) => {\n    const svg = ICONS[icon]\n      ? ICONS[icon]\n          .toSvg({\n            width,\n            height,\n            strokeWidth,\n            strokeLineCap,\n            strokeLineJoin,\n            color: encodeURI(color),\n            fill: fill ? \"currentColor\" : \"none\",\n          })\n          .replace(/#/g, \"%23\")\n      : \"\";\n    return svg && `url('data:image/svg+xml;utf8,${svg}')`;\n  };\n","import Cookies from \"js-cookie\";\n\nexport const AUTHENTICATION = {\n  NONE: 0,\n  SOFT: 1,\n  HARD: 2,\n};\n\nconst BOOKMARKED_EMAILS_COOKIE_NAME = \"AP_bookmarkedEmails\";\nconst BOOKMARKED_EMAILS_COOKIE_OPTIONS = {\n  expires: 365,\n  secure: process.env.NODE_ENV !== \"development\",\n  sameSite: \"Strict\",\n};\n\nexport const NEWSLETTERS = {\n  LFI_reguliere: {\n    label:\n      \"Les informations régulières de la France insoumise, dont la lettre d'information hébdomadaire\",\n    value: \"LFI_reguliere\",\n    selected: true,\n    visible: true,\n  },\n  LFI_exceptionnelle: {\n    label: \"Les informations exceptionnelles de la France insoumise\",\n    value: \"LFI_exceptionnelle\",\n    selected: true,\n    visible: true,\n  },\n  ELUES: {\n    label: \"Les informations destinées aux élu·es\",\n    value: \"ELUES\",\n    visible: (person) =>\n      !!person &&\n      (person.newsletters.includes(\"ELUES\") || person.membreReseauElus),\n  },\n  LFI_jeunes_insoumise: {\n    label: \"Les informations destinées aux Jeunes insoumis·es\",\n    value: \"LFI_jeunes_insoumises\",\n    selected: false,\n    visible: true,\n  },\n  LFI_liaisons: {\n    label: \"Relais insoumis\",\n    value: \"LFI_liaisons\",\n    visible: false,\n  },\n  ILB: {\n    label: \"Les informations de l'Institut La Boétie\",\n    value: \"ILB\",\n    selected: false,\n    visible: true,\n  },\n};\n\nexport const LIAISON_NEWSLETTER = NEWSLETTERS.LFI_liaisons;\n\nexport const NEWSLETTER_OPTIONS = Object.values(NEWSLETTERS);\n\nexport const getNewsletterOptions = (person) =>\n  Object.values(NEWSLETTER_OPTIONS).filter((n) =>\n    typeof n.visible === \"function\" ? n.visible(person) : !!n.visible,\n  );\n\nexport const getBookmarkedEmails = () => {\n  let cookieData = Cookies.get(BOOKMARKED_EMAILS_COOKIE_NAME);\n  cookieData = cookieData && JSON.parse(cookieData);\n  return cookieData || [];\n};\n\nexport const bookmarkEmails = (emails) => {\n  Cookies.set(\n    BOOKMARKED_EMAILS_COOKIE_NAME,\n    JSON.stringify(emails),\n    BOOKMARKED_EMAILS_COOKIE_OPTIONS,\n  );\n\n  return emails;\n};\n\nexport const bookmarkEmail = (email) => {\n  const bookmarkedEmails = getBookmarkedEmails();\n  const cookieData = JSON.stringify([\n    email,\n    ...bookmarkedEmails.filter((e) => e !== email),\n  ]);\n\n  Cookies.set(\n    BOOKMARKED_EMAILS_COOKIE_NAME,\n    cookieData,\n    BOOKMARKED_EMAILS_COOKIE_OPTIONS,\n  );\n\n  return cookieData;\n};\n\nexport const getMobileOS = () => {\n  let userAgent = navigator.userAgent || navigator.vendor || window.opera;\n\n  // Windows Phone must come first because its UA also contains \"Android\"\n  if (/windows phone/i.test(userAgent)) {\n    return \"Windows Phone\";\n  }\n  if (/android/i.test(userAgent)) {\n    return \"android\";\n  }\n  if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\n    return \"iOS\";\n  }\n  return \"unknown\";\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled, { keyframes } from \"styled-components\";\n\nimport Link from \"@agir/front/app/Link\";\n\nimport { ICONS, getIconDataUrl } from \"./utils\";\n\nconst spinner = keyframes`\n  0% {\n    transform: rotate(0turn);\n    stroke-dashoffset: 0.662em;\n  }\n  50% {\n    transform: rotate(2turn);\n    stroke-dashoffset: 3.138em;\n  }\n  100% {\n    transform: rotate(3turn);\n    stroke-dashoffset: 0.662em;\n  }\n`;\n\nexport const ButtonLoader = styled.i\n  .withConfig({\n    shouldForwardProp: (prop) => [\"loading\", \"theme\"].includes(prop) === false,\n  })\n  .attrs((attrs) => ({\n    ...attrs,\n    children: (\n      <svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n        <circle cx=\"8\" cy=\"8\" r=\"7\" />\n      </svg>\n    ),\n  }))`\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  left: 0;\n  top: 0;\n  padding: 0;\n  margin: 0;\n  background-color: inherit;\n  z-index: ${({ loading }) => (loading ? 1 : -1)};\n\n  & > svg {\n    opacity: ${({ loading }) => (loading ? 1 : 0)};\n    transition: opacity, width, height 150ms ease-in-out;\n    width: ${({ loading }) => (loading ? 1 : 0)}em;\n    height: ${({ loading }) => (loading ? 1 : 0)}em;\n\n    circle {\n        fill: transparent;\n        stroke: currentColor;\n        strokeWidth: 2;\n        stroke-linecap: round;\n        stroke-dasharray: 3.138em;\n        transform-origin: center center;\n        animation-name: ${({ loading }) => (loading ? spinner : \"none\")};\n        animation-iteration-count: infinite;\n        animation-easing-function: linear;\n        animation-direction: forwards;\n        animation-duration: 3s;\n    }\n  }\n\n  & + span {\n    transition: opacity 250ms ease-in-out;\n    opacity: ${({ loading }) => (loading ? 0 : 1)};\n  }\n`;\n\nexport const BaseButton = styled.button\n  .withConfig({\n    shouldForwardProp: (prop) =>\n      [\n        \"loading\",\n        \"link\",\n        \"small\",\n        \"block\",\n        \"wrap\",\n        \"rightIcon\",\n        \"active\",\n      ].includes(prop) === false,\n  })\n  .attrs(({ link, as, loading, children, type, ...rest }) => ({\n    ...rest,\n    as: link ? Link : as,\n    type: type || \"button\",\n    children: (\n      <>\n        <ButtonLoader loading={loading} />\n        <span>{children}</span>\n      </>\n    ),\n  }))`\n  margin: 0;\n  justify-content: center;\n  align-items: center;\n  text-align: center;\n  font-weight: 500;\n  border: 1px solid;\n  cursor: pointer;\n  position: relative;\n\n  white-space: ${({ wrap }) => (wrap ? \"normal\" : \"nowrap\")};\n  text-overflow: ${({ wrap }) => (wrap ? \"inherit\" : \"ellipsis\")};\n  overflow: ${({ wrap }) => (wrap ? \"auto\" : \"hidden\")};\n\n  display: ${({ block }) => (block ? \"flex\" : \"inline-flex\")};\n  width: ${({ block }) => (block ? \"100%\" : \"auto\")};\n  gap: ${({ small }) => (small ? \"0.375rem\" : \"0.5rem\")};\n  flex-direction: ${({ rightIcon }) => (rightIcon ? \"row-reverse\" : \"row\")};\n\n  padding: ${({ small }) => (small ? \"0.5rem 0.75rem\" : \"0.75rem 1.5rem\")};\n  line-height: ${({ small }) => (small ? \"1.25\" : \"1.5\")};\n  font-size: ${({ small }) => (small ? \"0.875rem\" : \"1rem\")};\n\n  border-radius: ${(props) => props.theme.borderRadius};\n\n  background-color: ${(props) => props.theme.text50};\n  border-color: ${(props) => props.theme.text50};\n  color: ${(props) => props.theme.text1000};\n\n  &:hover,\n  &:focus,\n  &:active {\n    text-decoration: none;\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    cursor: not-allowed;\n  }\n\n\n  &:before {\n    content: \"\";\n    flex: 0 0 auto;\n    height: 1rem;\n    width: 1rem;\n    background-size: contain;\n    background-repeat: no-repeat;\n    background-position: center center;\n    background-image: ${(props) => getIconDataUrl({ color: props.theme.text1000 })};\n    display: ${({ icon }) => (icon && ICONS[icon] ? \"inline-block\" : \"none\")};\n  }\n\n\n  & > * {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n\n    & > * {\n      flex: 0 0 auto;\n    }\n  }\n\n  & > span {\n    display: inline-block;\n    min-height: 1px;\n    white-space: inherit;\n    text-overflow: inherit;\n    overflow: ${({ link }) => (link ? \"hidden\" : \"inherit\")};\n\n      i {\n          margin-right: 5px;\n          min-width: 1.1em;\n      }\n  }\n    \n\n`;\n\nBaseButton.propTypes = {\n  link: PropTypes.bool,\n  disabled: PropTypes.bool,\n  small: PropTypes.bool,\n  block: PropTypes.bool,\n  wrap: PropTypes.bool,\n  loading: PropTypes.bool,\n  icon: PropTypes.string,\n  rightIcon: PropTypes.bool,\n};\nBaseButton.defaultProps = {\n  link: false,\n  disabled: false,\n  small: false,\n  block: false,\n  wrap: false,\n  loading: false,\n  rightIcon: false,\n};\n\n\nexport default BaseButton;\n","import styled, { css } from \"styled-components\";\nimport BaseButton from \"@agir/front/genericComponents/Button/BaseButton\";\n\nexport const SoutienButton = styled(BaseButton)`\n  display: flex;\n  background-color: transparent;\n\n  ${({ loading }) => {\n    if (loading) {\n      return css`\n        background-color: ${(props) => props.theme.soutienPrimary};\n        svg {\n          font-size: 2rem;\n        }\n      `;\n    }\n  }};\n\n  font-size: inherit;\n  font-weight: bold;\n  position: relative;\n  color: ${(props) => props.theme.text25};\n  fill: ${(props) => props.theme.text25};\n  padding: 0;\n  border-width: 0;\n  border-radius: 10px;\n\n  ${({ icon }) => {\n    if (!icon) {\n      return css`\n        width: 100%;\n        span {\n          width: 100%;\n          justify-content: center !important;\n        }\n      `;\n    } else {\n      return css`\n        @media (max-width: ${(props) => props.theme.collapse}px) {\n          span span {\n            max-width: 85%;\n          }\n        }\n      `;\n    }\n  }}\n\n  span {\n    display: flex;\n    flex-direction: row-reverse;\n    justify-content: unset;\n  }\n\n  span span,\n  span i {\n    position: relative;\n    background-color: ${(props) => props.theme.soutienPrimary};\n    border-radius: 10px;\n    padding: 1rem;\n\n    word-break: break-word;\n    white-space: normal;\n    margin: 0 !important;\n\n    color: ${(props) => props.theme.text25};\n    fill: ${(props) => props.theme.text25};\n  }\n\n  span span {\n    display: inline-flex;\n    flex-direction: unset;\n    padding-left: 1.5rem;\n    padding-right: 1.5rem;\n    align-items: center;\n\n    @media (max-width: ${(props) => props.theme.collapse}px) {\n      text-align: left;\n      padding: 0.5rem 0.8rem 0.5rem 0.8rem;\n      line-height: 1.2;\n      min-height: 56px;\n    }\n  }\n\n  span i {\n    line-height: 1.5;\n    width: 3.2rem;\n  }\n\n  &:hover {\n    span,\n    i {\n      opacity: 0.85;\n    }\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    opacity: 0.55;\n    text-decoration: none;\n  }\n`;\n\nexport const SoutienButtonSecondary = styled(SoutienButton)`\n  span span,\n  span i {\n    background-color: ${(props) => props.theme.soutienSecondary};\n    color: ${(props) => props.theme.text25};\n    fill: ${(props) => props.theme.text25};\n  }\n`;\n\nexport const SoutienButtonTertiary = styled(SoutienButton)`\n  span span,\n  span i {\n    background-color: transparent;\n    color: ${(props) => props.theme.soutienPrimary};\n  }\n  span span {\n    border: 1px solid ${(props) => props.theme.soutienPrimary};\n  }\n`;\n","import PropTypes from \"prop-types\";\nimport React, { forwardRef } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { ICONS, getIconDataUrl } from \"./utils\";\n\nimport BaseButton from \"./BaseButton\";\nimport {\n  SoutienButton,\n  SoutienButtonSecondary,\n  SoutienButtonTertiary,\n} from \"@agir/front/genericComponents/Button/SoutienButton\";\n\nconst DefaultButton = styled(BaseButton)`\n  color: ${(props) => props.theme.text1000};\n  background-color: ${(props) => props.theme.text50};\n  border-color: ${(props) => props.theme.text50};\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.text1000};\n    background-color: ${(props) => props.theme.text100};\n    border-color: ${(props) => props.theme.text100};\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    color: ${(props) => props.theme.text1000 + \"4D\"};\n    background-color: ${(props) => props.theme.text50 + \"B7\"};\n    border-color: ${(props) => props.theme.text50 + \"B7\"};\n\n    &:before {\n      background-image: ${(props) =>\n        getIconDataUrl({\n          color: props.theme.text1000 + \"4D\",\n        })};\n    }\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.text1000 })};\n  }\n`;\n\nconst WhiteButton = styled(BaseButton)`\n  &,\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    color: ${(props) => props.theme.primary500};\n    background-color: ${(props) => props.theme.background0};\n    border-color: ${(props) => props.theme.background0};\n  }\n\n  &[disabled] {\n    opacity: 0.75;\n  }\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.primary500};\n    background-color: ${(props) => props.theme.text50};\n    border-color: ${(props) => props.theme.text50};\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.primary500 })};\n  }\n`;\n\nconst WhiteRedButton = styled(BaseButton)`\n  &,\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    color: ${(props) => props.theme.error500};\n    background-color: ${(props) => props.theme.background0};\n    border-color: ${(props) => props.theme.background0};\n  }\n\n  &[disabled] {\n    opacity: 0.75;\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.error500 })};\n  }\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: #d81836;\n\n    &:before {\n      background-image: ${getIconDataUrl({\n        color: \"#d81836\",\n        fill: true,\n      })};\n    }\n  }\n`;\n\nconst TransparentButton = styled(BaseButton)`\n  &,\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    color: ${(props) => props.theme.primary500};\n    background-color: transparent;\n    border-color: transparent;\n  }\n\n  &[disabled] {\n    opacity: 0.75;\n  }\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.primary600};\n    background-color: ${(props) => props.theme.text50};\n    border-color: ${(props) => props.theme.text50};\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.primary500 })};\n  }\n`;\n\nconst PrimaryButton = styled(BaseButton)`\n  background-color: ${(props) => props.theme.primary500};\n  border-color: ${(props) => props.theme.primary500};\n  color: ${(props) => props.theme.background0};\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.background0};\n    background-color: ${(props) => props.theme.primary600};\n    border-color: ${(props) => props.theme.primary600};\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    color: ${(props) => props.theme.background0 + \"B7\"};\n    background-color: ${(props) => props.theme.primary500 + \"B7\"};\n    border-color: ${(props) => props.theme.primary500 + \"B7\"};\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.background0 })};\n  }\n`;\n\nconst SecondaryButton = styled(BaseButton)`\n  color: ${(props) => props.theme.text1000};\n  background-color: ${(props) => props.theme.secondary500};\n  border-color: ${(props) => props.theme.secondary500};\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.text1000};\n    background-color: ${(props) => props.theme.secondary600};\n    border-color: ${(props) => props.theme.secondary600};\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    background-color: ${(props) => props.theme.secondary500 + \"B7\"};\n    border-color: ${(props) => props.theme.secondary500 + \"B7\"};\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.text1000 })};\n  }\n`;\n\nconst TertiaryButton = styled(BaseButton)`\n  &,\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    background-color: ${(props) => props.theme.background0};\n    border-color: ${(props) => props.theme.primary500};\n    color: ${(props) => props.theme.primary500};\n  }\n\n  &[disabled] {\n    opacity: 0.75;\n  }\n\n  &:hover,\n  &:focus,\n  &:active {\n    background-color: ${(props) => props.theme.text50};\n    border-color: ${(props) => props.theme.primary600};\n    color: ${(props) => props.theme.primary600};\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.primary500 })};\n  }\n`;\n\nconst ConfirmedButton = styled(BaseButton)`\n  color: ${(props) => props.theme.primary500};\n  background-color: ${(props) => props.theme.primary100};\n  border-color: ${(props) => props.theme.primary100};\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.primary500};\n    background-color: ${(props) => props.theme.primary150};\n    border-color: ${(props) => props.theme.primary150};\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    color: ${(props) => props.theme.primary500 + \"4D\"};\n    background-color: ${(props) => props.theme.primary100 + \"B7\"};\n    border-color: ${(props) => props.theme.primary100 + \"B7\"};\n\n    &:before {\n      background-image: ${(props) =>\n        getIconDataUrl({ color: props.theme.primary500 + \"4D\" })};\n    }\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.primary500 })};\n  }\n`;\n\nconst UnavailableButton = styled(BaseButton)`\n  color: ${(props) => props.theme.text500};\n  background-color: ${(props) => props.theme.background0};\n  border-color: ${(props) => props.theme.text100};\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.text500};\n  }\n\n  &[disabled] {\n    color: ${(props) => props.theme.text500 + \"4D\"};\n    border-color: ${(props) => props.theme.text100 + \"B7\"};\n\n    &:before {\n      background-image: ${(props) =>\n        getIconDataUrl({ color: props.theme.text500 + \"4D\" })};\n    }\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.text500 })};\n  }\n`;\nconst DismissButton = styled(BaseButton)`\n  color: ${(props) => props.theme.text1000};\n  background-color: transparent;\n  border-color: ${(props) => props.theme.text1000};\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.text1000};\n  }\n\n  &[disabled] {\n    color: ${(props) => props.theme.text1000 + \"4D\"};\n    border-color: ${(props) => props.theme.text1000 + \"4D\"};\n\n    &:before {\n      background-image: ${(props) =>\n        getIconDataUrl({ color: props.theme.text1000 + \"4D\" })};\n    }\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.text1000 })};\n  }\n`;\nconst ChooseButton = styled(BaseButton)`\n  color: ${(props) => props.theme.text1000};\n  background-color: transparent;\n  border-color: ${(props) => props.theme.text200};\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.text1000};\n    background-color: ${(props) => props.theme.text50};\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    color: ${(props) => props.theme.text1000 + \"4D\"};\n    background-color: ${(props) => props.theme.text50 + \"B7\"};\n    border-color: ${(props) => props.theme.text50 + \"B7\"};\n\n    &:before {\n      background-image: ${(props) =>\n        getIconDataUrl({ color: props.theme.text1000 + \"4D\" })};\n    }\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.text1000 })};\n  }\n`;\nconst SuccessButton = styled(BaseButton)`\n  color: ${(props) => props.theme.background0};\n  background-color: ${(props) => props.theme.success500};\n  border-color: ${(props) => props.theme.success500};\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.background0};\n  }\n\n  &[disabled] {\n    background-color: ${(props) => props.theme.success500 + \"4D\"};\n    border-color: ${(props) => props.theme.success500 + \"4D\"};\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.background0 })};\n  }\n`;\nconst DangerButton = styled(BaseButton)`\n  color: ${(props) => props.theme.text25} !important;\n  background-color: ${(props) => props.theme.error500};\n  border-color: ${(props) => props.theme.error500};\n    \n    svg {\n        color: ${(props) => props.theme.text25} !important;\n    }\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.background0};\n    background-color: #d81836;\n    border-color: #d81836;\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    background-color: ${(props) => props.theme.text50 + \"B7\"};\n    border-color: ${(props) => props.theme.text50 + \"B7\"};\n    color: ${(props) => props.theme.text1000 + \"4D\"};\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.background0 })};\n  }\n`;\nconst FacebookButton = styled(BaseButton)`\n  color: ${(props) => props.theme.white};\n  background-color: ${(props) => props.theme.facebook};\n  border-color: ${(props) => props.theme.facebook};\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.background0};\n  }\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    background-color: #1778f2b7;\n    border-color: #1778f2b7;\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.background0 })};\n  }\n`;\nconst LinkButton = styled(BaseButton)`\n  font-size: inherit;\n  font-weight: inherit;\n  padding-left: 0;\n  padding-right: 0;\n  color: ${(props) => props.theme.primary500};\n  background-color: transparent;\n  border-color: transparent;\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    opacity: 0.75;\n    text-decoration: none;\n  }\n\n  &:hover,\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.primary500};\n    text-decoration: underline;\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.primary500 })};\n  }\n`;\n\nconst LFIButtonActiveMixin = css`\n  color: ${(props) => props.theme.text25};\n  background-color: ${(props) => props.theme.LFIprimary500};\n  fill: white;\n`;\n\nconst LFIButton = styled(BaseButton)`\n  font-size: inherit;\n  font-weight: bold;\n  padding-left: ${({ small }) => (small ? \"0.5rem 0.75rem\" : \"0.75rem 1.5rem\")};\n  padding-right: ${({ small }) =>\n    small ? \"0.5rem 0.75rem\" : \"0.75rem 1.5rem\"};\n  color: ${(props) => props.theme.textColor};\n  fill: ${(props) => props.theme.textColor};\n  background-color: transparent;\n  border-color: ${(props) => props.theme.text200};\n  border-width: 1px;\n  border-radius: 0;\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    opacity: 0.75;\n    text-decoration: none;\n  }\n\n  &:hover {\n    &[disabled]:active {\n      color: ${(props) => props.theme.LFIprimary500};\n    }\n    border-color: ${(props) => props.theme.LFIprimary500};\n    fill: ${(props) => props.theme.LFIprimary500};\n  }\n\n  &:focus,\n  &:active {\n    ${LFIButtonActiveMixin}\n  }\n\n  ${({ active }) =>\n    active &&\n    css`\n      ${LFIButtonActiveMixin}\n    `}\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.primary500 })};\n  }\n`;\n\nconst LFIPrimaryButton = styled(LFIButton)`\n  font-size: inherit;\n  color: ${(props) => props.theme.text25};\n  background-color: ${(props) => props.theme.LFIprimary500};\n  border-color: ${(props) => props.theme.LFIprimary500};\n  border-width: 2px;\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    opacity: 0.75;\n    text-decoration: none;\n    border: none;\n  }\n\n  &:hover {\n    color: ${(props) => props.theme.LFIprimary500};\n    background-color: ${(props) => props.theme.white};\n  }\n\n  &:focus,\n  &:active {\n    color: ${(props) => props.theme.text25};\n    background-color: ${(props) => props.theme.LFIprimary500};\n  }\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.primary500 })};\n  }\n`;\n\n\nconst LFIDangerButton = styled(BaseButton)`\n  font-size: inherit;\n  font-weight: bold;\n  padding-left: ${({ small }) => (small ? \"0.5rem 0.75rem\" : \"0.75rem 1.5rem\")};\n  padding-right: ${({ small }) =>\n    small ? \"0.5rem 0.75rem\" : \"0.75rem 1.5rem\"};\n\n  color: ${(props) => props.theme.textColor};\n  fill: ${(props) => props.theme.textColor};\n  background-color: transparent;\n  border-color: ${(props) => props.theme.text200};\n  border-width: 1px;\n  border-radius: 0;\n\n  &[disabled],\n  &[disabled]:hover,\n  &[disabled]:focus,\n  &[disabled]:active {\n    opacity: 0.75;\n    text-decoration: none;\n  }\n\n  &:hover {\n    &[disabled]:active {\n      color: ${(props) => props.theme.error100};\n    }\n    border-color: ${(props) => props.theme.error500};\n    fill: ${(props) => props.theme.error500};\n    i {\n      color: ${(props) => props.theme.error500};\n    }\n  }\n\n  &:focus,\n  &:active {\n      color: ${(props) => props.theme.text25};\n      background-color: ${(props) => props.theme.error500};\n      fill: white;\n  }\n\n  ${({ active }) =>\n    active &&\n    css`\n        color: ${(props) => props.theme.text25};\n        background-color: ${(props) => props.theme.error500};\n        fill: white;\n    `}\n\n  &:before {\n    background-image: ${(props) =>\n      getIconDataUrl({ color: props.theme.primary500 })};\n  }\n`;\n\nconst variants = {\n  default: DefaultButton,\n  white: WhiteButton,\n  whiteRed: WhiteRedButton,\n  transparent: TransparentButton,\n  primary: PrimaryButton,\n  secondary: SecondaryButton,\n  tertiary: TertiaryButton,\n  confirmed: ConfirmedButton,\n  unavailable: UnavailableButton,\n  dismiss: DismissButton,\n  choose: ChooseButton,\n  success: SuccessButton,\n  danger: DangerButton,\n  facebook: FacebookButton,\n  link: LinkButton,\n  lfi: LFIButton,\n  lfiPrimary: LFIPrimaryButton,\n  lfiDanger: LFIDangerButton,\n  soutien: SoutienButton,\n  soutienSecondary: SoutienButtonSecondary,\n  soutienTertiary: SoutienButtonTertiary,\n};\n\nexport const ButtonLabel = styled.span``;\n\nconst Button = styled(\n  // eslint-disable-next-line react/display-name\n  forwardRef((props, ref) => {\n    // eslint-disable-next-line react/prop-types\n    const { color } = props;\n    const B = color && variants[color] ? variants[color] : variants.default;\n    return (\n      <B ref={ref} {...props}>\n        {props.icon?.includes(\"fa-\") && (\n          <i className={`fa-regular ${props.icon}`} />\n        )}\n        <ButtonLabel>{props.children}</ButtonLabel>\n      </B>\n    );\n  }),\n)``;\n\nButton.icons = Object.keys(ICONS);\nButton.colors = Object.keys(variants);\nButton.propTypes = {\n  ...BaseButton.propTypes,\n  color: PropTypes.string,\n};\nexport default Button;\n","import Button from \"./Button\";\n\nexport default Button;\n","import { lazy } from \"./utils\";\n\nconst Routes = {\n  HomePage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-homepage\" */ \"@agir/front/app/Homepage/Home\"\n      ),\n  ),\n  AgendaPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-agendapage\" */ \"@agir/events/agendaPage/Agenda\"\n      ),\n  ),\n  CalendarPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-calendar\" */ \"@agir/events/calendarPage/Calendar\"\n      ),\n  ),\n  EventMap: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-eventmap\" */ \"@agir/carte/page__eventMap/EventMap\"\n      ),\n  ),\n  GroupUpcomingEventPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-groupupcomingevent\" */ \"@agir/events/groupUpcomingEventPage/GroupUpcomingEventPage\"\n      ),\n  ),\n  GroupUpcomingEventRedirectPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-groupupcomingeventredirect\" */ \"@agir/events/groupUpcomingEventPage/GroupUpcomingEventRedirectPage\"\n      ),\n  ),\n  EventPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-eventpage\" */ \"@agir/events/eventPage/EventPage\"\n      ),\n  ),\n  MissingDocumentsPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-missingdocumentspage\" */ \"@agir/events/eventRequiredDocuments/MissingDocuments/MissingDocumentsPage\"\n      ),\n  ),\n  EventRequiredDocuments: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-eventrequireddocuments\" */ \"@agir/events/eventRequiredDocuments/EventRequiredDocumentsPage\"\n      ),\n  ),\n  GroupsPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-groupspage\" */ \"@agir/groups/groupsPage/GroupsPage\"\n      ),\n  ),\n  CreateEvent: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-createevent\" */ \"@agir/events/createEventPage/CreateEvent\"\n      ),\n  ),\n  FullGroupPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-fullgrouppage\" */ \"@agir/groups/fullGroupPage/FullGroupPage\"\n      ),\n  ),\n  GroupPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-grouppage\" */ \"@agir/groups/groupPage/GroupPage\"\n      ),\n  ),\n  GroupMap: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-groupmap\" */ \"@agir/carte/page__groupMap/GroupMap\"\n      ),\n  ),\n  ThematicGroups: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-thematicgroups\" */ \"@agir/groups/thematicGroupPage/ThematicGroupPage\"\n      ),\n  ),\n  ActivityPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-activitypage\" */ \"@agir/activity/ActivityPage/ActivityPage\"\n      ),\n  ),\n  NavigationPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-navigationpage\" */ \"@agir/front/navigationPage/NavigationPage\"\n      ),\n  ),\n  SignupPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-signuppage\" */ \"@agir/front/authentication/Connexion/SignupPage\"\n      ),\n  ),\n  LoginPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-loginpage\" */ \"@agir/front/authentication/Connexion/LoginPage\"\n      ),\n  ),\n  CodeLoginPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-codeloginpage\" */ \"@agir/front/authentication/Connexion/Code/CodeLogin\"\n      ),\n  ),\n  CodeSignupPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-codesignuppage\" */ \"@agir/front/authentication/Connexion/Code/CodeSignup\"\n      ),\n  ),\n  TellMorePage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-tellmorepage\" */ \"@agir/front/authentication/Connexion/TellMore/TellMorePage\"\n      ),\n  ),\n  LogoutPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-logoutpage\" */ \"@agir/front/authentication/Connexion/Logout\"\n      ),\n  ),\n  MessagePage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-messagepage\" */ \"@agir/msgs/MessagePage/MessagePage\"\n      ),\n  ),\n  CreateContactPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-createcontactpage\" */ \"@agir/people/contacts/CreateContactPage\"\n      ),\n  ),\n  DonationLandingPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-donationlandingpage\" */ \"@agir/donations/DonationLandingPage\"\n      ),\n  ),\n  ExternalDonationPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-externalDonationPage\" */ \"@agir/donations/externalDonationPage/ExternalDonationPage\"\n      ),\n  ),\n  DonationSuccessPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-donationSuccessPage\" */ \"@agir/donations/DonationSuccessPage\"\n      ),\n  ),\n  ChequeValidationPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-chequeValidationPage\" */\n        \"@agir/donations/validation/ChequeValidation\"\n      ),\n  ),\n  ContributionSuccessPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-contributionSuccessPage\" */ \"@agir/donations/ContributionSuccessPage\"\n      ),\n  ),\n  ContributionRenewalPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-contributionrenewalpage\" */ \"@agir/donations/contributionRenewalPage/ContributionRenewalPage\"\n      ),\n  ),\n  ActionToolsPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-actiontoolspage\" */ \"@agir/front/ActionToolsPage/ActionToolsPage\"\n      ),\n  ),\n  SearchPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-searchpage\" */ \"@agir/front/SearchPage/SearchPage\"\n      ),\n  ),\n  SearchGroupPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-searchgrouppage\" */ \"@agir/front/SearchPage/SearchGroupPage\"\n      ),\n  ),\n  SearchEventPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-searcheventpage\" */ \"@agir/front/SearchPage/SearchEventPage\"\n      ),\n  ),\n  VotingProxyLandingPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-votingproxylandingpage\" */ \"@agir/voting_proxies/VotingProxyLandingPage\"\n      ),\n  ),\n  NewVotingProxyRequest: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-newvotingproxyrequest\" */ \"@agir/voting_proxies/VotingProxyRequest/NewVotingProxyRequest\"\n      ),\n  ),\n  NewVotingProxy: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-newvotingproxy\" */ \"@agir/voting_proxies/VotingProxy/NewVotingProxy\"\n      ),\n  ),\n  ReplyToVotingProxyRequests: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-replytovotingproxyrequests\" */ \"@agir/voting_proxies/VotingProxy/ReplyToVotingProxyRequests\"\n      ),\n  ),\n  ReplyToSingleVotingProxyRequest: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-replytosinglevotingproxyrequest\" */ \"@agir/voting_proxies/VotingProxy/ReplyToVotingProxyRequests/ReplyToSingleVotingProxyRequest\"\n      ),\n  ),\n  VotingProxyRequestForProxy: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-votingproxyrequestsforproxy\" */ \"@agir/voting_proxies/VotingProxy/VotingProxyRequestForProxyPage\"\n      ),\n  ),\n  VotingProxyRequestDetails: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-votingproxyrequestdetails\" */ \"@agir/voting_proxies/VotingProxyRequest/VotingProxyRequestDetails\"\n      ),\n  ),\n  TestErrorPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-testerrorpage\" */ \"@agir/front/errorPage/TestErrorPage\"\n      ),\n  ),\n  TokTokPreview: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-toktokpreview\" */ \"@agir/events/TokTok/TokTokPreview\"\n      ),\n  ),\n  NewPollingStationOfficer: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-newpollingstationofficer\" */ \"@agir/elections/PollingStationOfficer/NewPollingStationOfficer\"\n      ),\n  ),\n  EventSpeakerPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-eventspeakerpage\" */ \"@agir/event_requests/EventSpeakerPage/EventSpeakerPage\"\n      ),\n  ),\n  FaIcons: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-faicons\" */ \"@agir/front/genericComponents/FaIcons\"\n      ),\n  ),\n  CreateSpendingRequest: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-createspendingrequest\" */ \"@agir/donations/spendingRequest/createSpendingRequestPage\"\n      ),\n  ),\n  EditSpendingRequest: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-editspendingrequest\" */ \"@agir/donations/spendingRequest/editSpendingRequestPage\"\n      ),\n  ),\n  SpendingRequestDetails: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-spendingrequestdetails\" */ \"@agir/donations/spendingRequest/spendingRequestPage\"\n      ),\n  ),\n  SpendingRequestHistory: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-spendingrequesthistory\" */ \"@agir/donations/spendingRequest/spendingRequestPage/SpendingRequestHistoryPage\"\n      ),\n  ),\n  GroupFinanceHistory: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-groupfinancehistory\" */ \"@agir/groups/groupPage/GroupSettings/GroupFinancePage/GroupFinanceHistoryPage\"\n      ),\n  ),\n  SoutienPage: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-soutienpage\" */ \"@agir/presidentielle2027/SoutienPage/SoutienPage\"\n      ),\n  ),\n  SoutienPageFinalize: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-soutienpagefinalize\" */ \"@agir/presidentielle2027/SoutienPage/FinalizeRedirectionPage\"\n      ),\n  ),\n  SoutienRejoindreActionPopulaire: lazy(\n    () =>\n      import(\n        /* webpackChunkName: \"r-soutienrejoindreactionpopulaire\" */ \"@agir/presidentielle2027/SoutienPage/SoutienRejoindreActionPopulaire\"\n      ),\n  ),\n};\n\nexport default Routes;\n","import pathToRegexp from \"path-to-regexp-es\";\n\nimport logger from \"@agir/lib/utils/logger\";\n\nimport { AUTHENTICATION } from \"@agir/front/authentication/common\";\nimport { relativeToAbsoluteURL } from \"@agir/lib/utils/url\";\n\nimport RouteComponents from \"./routes.components\";\nexport const BASE_PATH = \"/\";\n\nconst log = logger(__filename);\n\nexport class RouteConfig {\n  constructor(props) {\n    Object.keys(props).forEach((key) => (this[key] = props[key]));\n\n    this.__keys__ = [];\n    const path = Array.isArray(this.path) ? this.path[0] : this.path;\n    this.__re__ = pathToRegexp(this.path, this.__keys__, {\n      end: this.exact === false ? false : true,\n    });\n    this.__toPath__ = pathToRegexp.compile(path);\n\n    this.match = this.match.bind(this);\n    this.getLink = this.getLink.bind(this);\n  }\n\n  /**\n   * Method to match a pathname string against the RouteConfig path\n   * @param  {string} pathname The pathname to match against the RouteConfig path\n   * @return {boolean} True if the argument path matches, false otherwise\n   */\n  match(pathname) {\n    return !!pathname && !!this.__re__.exec(pathname);\n  }\n\n  /**\n   * Method to build a link to the RouteConfig pathname with optional URL parameters\n   * @param  {object} params An object mapping the path parameters value\n   * @param  {absolute} absolute Whether to return an absolute or relative link\n   * @return {string} The link path string\n   */\n  getLink(params, absolute = false) {\n    try {\n      params = {\n        ...(this.params || {}),\n        ...(params || {}),\n      };\n      const link = this.__toPath__(params);\n      return absolute ? relativeToAbsoluteURL(link) : link;\n    } catch (e) {\n      log.error(\"Failed to generate path\", e);\n      return Array.isArray(this.path) ? this.path[0] : this.path;\n    }\n  }\n}\n\nconst notificationSettingRoute = new RouteConfig({\n  id: \"notificationSettings\",\n  path: \"/:root*/parametres/\",\n  exact: true,\n  neededAuthentication: AUTHENTICATION.HARD,\n  label: \"Paramètres de notification\",\n  params: { root: \"activite\" },\n  isPartial: true,\n});\n\nexport const routeConfig = {\n  agenda: new RouteConfig({\n    id: \"agenda\",\n    path: \"/agenda/:agendaSlug\",\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Agenda\",\n    exact: true,\n    hasLayout: true,\n    Component: RouteComponents.CalendarPage,\n  }),\n  events: new RouteConfig({\n    id: \"events\",\n    path: [\"/\", \"/documents-justificatifs/\"],\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Liste des événements\",\n    Component: RouteComponents.AgendaPage,\n    hasLayout: true,\n    layoutProps: {\n      $smallBackgroundColor: \"text25\",\n    },\n    hideFeedbackButton: true,\n    keepScroll: true,\n    hideFooterBanner: true,\n    AnonymousComponent: RouteComponents.HomePage,\n    anonymousConfig: {\n      hasLayout: false,\n    },\n  }),\n  missingEventDocumentsModal: new RouteConfig({\n    id: \"missingEventDocuments\",\n    path: \"/documents-justificatifs/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Documents justificatifs\",\n    hideFeedbackButton: true,\n    isPartial: true,\n  }),\n  missingEventDocuments: new RouteConfig({\n    id: \"missingEventDocuments\",\n    path: \"/evenements/documents-justificatifs/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Documents justificatifs\",\n    Component: RouteComponents.MissingDocumentsPage,\n    hideFeedbackButton: true,\n    hasLayout: false,\n    backLink: {\n      route: \"events\",\n      label: \"Liste des événements\",\n      isProtected: true,\n    },\n  }),\n  eventMap: new RouteConfig({\n    id: \"eventMap\",\n    path: \"/evenements/carte/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Carte des événements\",\n    Component: RouteComponents.EventMap,\n    hideFooter: true,\n    hideFeedbackButton: true,\n  }),\n  mapEventDetails: new RouteConfig({\n    id: \"mapEventDetails\",\n    path: \"/evenements/carte/:eventPk/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Carte des événements\",\n    redirectTo: (_, routeParams) => ({\n      route: \"eventDetails\",\n      routeParams,\n      backLink: \"eventMap\",\n      push: false,\n    }),\n  }),\n  groupUpcomingEventRedirect: new RouteConfig({\n    id: \"groupUpcomingEventRedirect\",\n    path: \"/evenements/groupes/:groupPk/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Agenda des groupes d'action\",\n    Component: RouteComponents.GroupUpcomingEventRedirectPage,\n  }),\n  groupUpcomingEvents: new RouteConfig({\n    id: \"groupUpcomingEvents\",\n    path: \"/evenements/groupes/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Agenda des groupes d'action\",\n    Component: RouteComponents.GroupUpcomingEventPage,\n  }),\n  createEvent: new RouteConfig({\n    id: \"createEvent\",\n    path: \"/evenements/creer/\",\n    exact: false,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Nouvel événement\",\n    hideFeedbackButton: true,\n    Component: RouteComponents.CreateEvent,\n    hideFooter: true,\n  }),\n  eventSettings: new RouteConfig({\n    id: \"eventSettings\",\n    path: \"/evenements/:eventPk/gestion/:activePanel?/\",\n    params: { eventPk: null, activePanel: null },\n    exact: true,\n    isPartial: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    Component: RouteComponents.EventPage,\n    hideFeedbackButton: true,\n  }),\n  eventRequiredDocuments: new RouteConfig({\n    id: \"eventRequiredDocuments\",\n    path: \"/evenements/:eventPk/documents/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Documents de l'événement\",\n    Component: RouteComponents.EventRequiredDocuments,\n    backLink: {\n      route: \"events\",\n      label: \"Liste des événements\",\n      isProtected: true,\n    },\n  }),\n  eventSpeaker: new RouteConfig({\n    id: \"eventSpeaker\",\n    path: \"/evenements/demandes/intervenant-e/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Demandes d'événements\",\n    Component: RouteComponents.EventSpeakerPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n  }),\n  eventDetails: new RouteConfig({\n    id: \"eventDetails\",\n    path: \"/evenements/:eventPk/\",\n    exact: false,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Page de l'événement\",\n    Component: RouteComponents.EventPage,\n  }),\n  groups: new RouteConfig({\n    id: \"groups\",\n    path: \"/mes-groupes/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Liste des groupes\",\n    Component: RouteComponents.GroupsPage,\n    hasLayout: true,\n    layoutProps: {\n      $smallBackgroundColor: \"text25\",\n    },\n    keepScroll: true,\n  }),\n  groupMap: new RouteConfig({\n    id: \"groupMap\",\n    path: \"/groupes/carte/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Carte des groupes\",\n    Component: RouteComponents.GroupMap,\n    hideFooter: true,\n    hideFeedbackButton: true,\n  }),\n  mapGroupDetails: new RouteConfig({\n    id: \"mapGroupDetails\",\n    path: \"/groupes/carte/:groupPk/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    redirectTo: (_, routeParams) => ({\n      route: \"groupDetails\",\n      routeParams,\n      backLink: \"groupMap\",\n      push: false,\n    }),\n  }),\n  fullGroup: new RouteConfig({\n    id: \"fullGroup\",\n    path: \"/groupes/:groupPk/complet/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Groupe complet\",\n    Component: RouteComponents.FullGroupPage,\n    hasLayout: false,\n  }),\n  groupFinanceHistory: new RouteConfig({\n    id: \"groupFinanceHistory\",\n    path: \"/groupes/:groupPk/finance/history/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Historique du budget\",\n    Component: RouteComponents.GroupFinanceHistory,\n  }),\n  groupSettings: new RouteConfig({\n    id: \"groupSettings\",\n    path: \"/groupes/:groupPk/:activeTab?/gestion/:activePanel?/\",\n    params: { activeTab: null, activePanel: null },\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    Component: RouteComponents.GroupPage,\n    isPartial: true,\n  }),\n  createGroupSpendingRequest: new RouteConfig({\n    id: \"createGroupSpendingRequest\",\n    path: \"/groupes/:groupPk/depenses/creer/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Nouvelle dépense\",\n    Component: RouteComponents.CreateSpendingRequest,\n    hideFeedbackButton: true,\n    backLink: {\n      label: \"Gestion du groupe\",\n      route: \"groupSettings\",\n      routeParams: {\n        activePanel: \"finance\",\n      },\n    },\n  }),\n  groupDetailsGestion: new RouteConfig({\n    id: \"groupDetailsGestion\",\n    path: \"/groupes/:groupPk/gestion/:any?/:action?\",\n    exact: false,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Page gestion du groupe\",\n    Component: RouteComponents.GroupPage,\n    hideTopBar: true,\n    backLink: {\n      route: \"groups\",\n      isProtected: true,\n    },\n  }),\n  groupDetails: new RouteConfig({\n    id: \"groupDetails\",\n    path: \"/groupes/:groupPk/:activeTab?/\",\n    exact: false,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Page du groupe\",\n    Component: RouteComponents.GroupPage,\n    backLink: {\n      route: \"groups\",\n      isProtected: true,\n    },\n  }),\n  thematicGroups: new RouteConfig({\n    id: \"thematicGroups\",\n    path: \"/groupes-thematiques/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Les groupes thématiques\",\n    Component: RouteComponents.ThematicGroups,\n  }),\n  spendingRequestDetails: new RouteConfig({\n    id: \"spendingRequestDetails\",\n    path: \"/financement/demande/:spendingRequestPk/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Détails de la demande\",\n    Component: RouteComponents.SpendingRequestDetails,\n  }),\n  spendingRequestHistory: new RouteConfig({\n    id: \"spendingRequestDetails\",\n    path: \"/financement/demande/:spendingRequestPk/historique/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Historique de la demande\",\n    Component: RouteComponents.SpendingRequestHistory,\n    backLink: {\n      label: \"Détails de la demande\",\n      route: \"spendingRequestDetails\",\n    },\n  }),\n  editSpendingRequest: new RouteConfig({\n    id: \"editGroupSpendingRequest\",\n    path: \"/financement/demande/:spendingRequestPk/modifier/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Modification de la dépense\",\n    Component: RouteComponents.EditSpendingRequest,\n    hideFeedbackButton: true,\n    backLink: {\n      label: \"Détail de la demande\",\n      route: \"spendingRequestDetails\",\n    },\n  }),\n  activities: new RouteConfig({\n    id: \"activities\",\n    path: [\"/activite/\", \"/activite/parametres/\"],\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Notifications\",\n    Component: RouteComponents.ActivityPage,\n    hasLayout: true,\n    layoutProps: {\n      $smallBackgroundColor: \"text25\",\n    },\n    topBarRightLink: {\n      label: notificationSettingRoute.label,\n      to: notificationSettingRoute.getLink({ root: \"activite\" }),\n      protected: true,\n    },\n    keepScroll: true,\n  }),\n  actionTools: new RouteConfig({\n    id: \"actionTools\",\n    path: \"/agir/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Agir\",\n    Component: RouteComponents.ActionToolsPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n  }),\n  notificationSettings: notificationSettingRoute,\n  menu: new RouteConfig({\n    id: \"menu\",\n    path: \"/navigation/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Menu\",\n    Component: RouteComponents.NavigationPage,\n    hasLayout: true,\n    displayFooterOnMobileApp: true,\n    layoutProps: {\n      style: { paddingBottom: 0 },\n    },\n  }),\n  login: new RouteConfig({\n    id: \"login\",\n    path: \"/connexion/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Connexion\",\n    description: \"Connectez-vous à Action Populaire\",\n    Component: RouteComponents.LoginPage,\n    hideTopBar: true,\n    hideFeedbackButton: true,\n    hideFooter: true,\n  }),\n  signup: new RouteConfig({\n    id: \"signup\",\n    path: \"/inscription/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Inscription\",\n    description: \"Rejoignez Action Populaire\",\n    Component: () => {\n      window.location.href = \"https://melenchon2027.fr\";\n      return null;\n    },\n    hideTopBar: true,\n    hideFeedbackButton: true,\n    hideFooter: true,\n  }),\n  codeLogin: new RouteConfig({\n    id: \"codeLogin\",\n    path: \"/connexion/code/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Connexion\",\n    description: \"Connectez-vous à Action Populaire\",\n    Component: RouteComponents.CodeLoginPage,\n    hideTopBar: true,\n    hideFeedbackButton: true,\n    hideFooter: true,\n  }),\n  codeSignup: new RouteConfig({\n    id: \"codeSignup\",\n    path: \"/inscription/code/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Inscription\",\n    description: \"Rejoignez Action Populaire\",\n    Component: () => {\n      window.location.href = \"https://melenchon2027.fr\";\n      return null;\n    },\n    hideTopBar: true,\n    hideFeedbackButton: true,\n    hideFooter: true,\n  }),\n  tellMore: new RouteConfig({\n    id: \"tellMore\",\n    path: \"/bienvenue/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"J'en dis plus\",\n    Component: RouteComponents.TellMorePage,\n    hideTopBar: true,\n    hideFeedbackButton: true,\n    hidePushModal: true,\n    hideFooter: true,\n  }),\n  logout: new RouteConfig({\n    id: \"logout\",\n    path: \"/deconnexion/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Déconnexion\",\n    Component: RouteComponents.LogoutPage,\n  }),\n  messages: new RouteConfig({\n    id: \"messages\",\n    path: [\"/messages/:messagePk?/\", \"/messages/:messagePk/parametres/\"],\n    params: { messagePk: null },\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Messages\",\n    Component: RouteComponents.MessagePage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    topBarRightLink: {\n      messageSettings: true,\n    },\n  }),\n  createContact: new RouteConfig({\n    id: \"createContact\",\n    path: \"/contacts/creer/:step?/\",\n    params: { step: null },\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"Nouveau contact\",\n    Component: RouteComponents.CreateContactPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n  }),\n  soutienFinalize: new RouteConfig({\n    id: \"soutienFinalizePage\",\n    path: \"/soutien/f/:code\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Soutien\",\n    Component: RouteComponents.SoutienPageFinalize,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  soutienRejoindreActionPopulaire: new RouteConfig({\n    id: \"soutienRejoindreActionPopulaire\",\n    path: \"/soutien/rejoindre-action-populaire/\",\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Rejoindre Action populaire\",\n    Component: RouteComponents.SoutienRejoindreActionPopulaire,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: false,\n  }),\n  soutien: new RouteConfig({\n    id: \"soutienPage\",\n    path: \"/soutien/*\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Soutien\",\n    Component: RouteComponents.SoutienPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  donationLanding: new RouteConfig({\n    id: \"donationLanding\",\n    path: \"/financer/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Financer\",\n    Component: RouteComponents.DonationLandingPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  donationSuccess: new RouteConfig({\n    id: \"donationSuccess\",\n    params: { type: null },\n    path: \"/:type?/dons/remerciement/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Faire un don\",\n    Component: RouteComponents.DonationSuccessPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  chequeValidation: new RouteConfig({\n    id: \"chequeValidation\",\n    params: { paymentId: null },\n    path: \"/paiement/cheque/:paymentId\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Merci pour votre don\",\n    Component: RouteComponents.ChequeValidationPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  externalDonation: new RouteConfig({\n    id: \"externalDonation\",\n    params: { type: null },\n    path: [\"/:type?/dons/informations/\", \"/:type?/dons-mensuels/informations/\"],\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Faire un don\",\n    Component: RouteComponents.ExternalDonationPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  donations: new RouteConfig({\n    id: \"donations\",\n    path: \"/:type?/dons/:step?/\",\n    params: { type: null, step: null },\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Faire un don\",\n    Component: RouteComponents.DonationLandingPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  contributionSuccess: new RouteConfig({\n    id: \"contributionSuccess\",\n    path: \"/contributions/remerciement/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Devenir financeur·euse de la France insoumise\",\n    Component: RouteComponents.ContributionSuccessPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  contributionRenewal: new RouteConfig({\n    id: \"contributionRenewal\",\n    path: \"/contributions/renouvelement/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.HARD,\n    label: \"Renouveler le financement à la France insoumise\",\n    Component: RouteComponents.ContributionRenewalPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n  }),\n  contributions: new RouteConfig({\n    id: \"contributions\",\n    path: \"/contributions/:step?/\",\n    params: { step: null },\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Devenir financeur·euse de la France insoumise\",\n    Component: RouteComponents.DonationLandingPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  search: new RouteConfig({\n    id: \"search\",\n    path: \"/recherche/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    Component: RouteComponents.SearchPage,\n    label: \"Rechercher\",\n    hasLayout: false,\n    hideFeedbackButton: true,\n  }),\n  searchGroup: new RouteConfig({\n    id: \"searchGroup\",\n    path: \"/recherche/groupes/\",\n    neededAuthentication: AUTHENTICATION.NONE,\n    Component: RouteComponents.SearchGroupPage,\n    label: \"Rechercher un groupe\",\n    hasLayout: false,\n    hideFeedbackButton: true,\n  }),\n  searchEvent: new RouteConfig({\n    id: \"searchEvent\",\n    path: \"/recherche/evenements/\",\n    neededAuthentication: AUTHENTICATION.NONE,\n    Component: RouteComponents.SearchEventPage,\n    label: \"Rechercher un événement\",\n    hasLayout: false,\n    hideFeedbackButton: true,\n  }),\n  testErrorPage: new RouteConfig({\n    id: \"testErrorPage\",\n    path: \"/500/\",\n    neededAuthentication: AUTHENTICATION.NONE,\n    Component: RouteComponents.TestErrorPage,\n    label: \"Une erreur est survenue\",\n    hideFeedbackButton: true,\n    hideFooter: true,\n  }),\n  toktokPreview: new RouteConfig({\n    id: \"toktokPreview\",\n    path: \"/toktok/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.SOFT,\n    label: \"TokTok\",\n    Component: RouteComponents.TokTokPreview,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n  }),\n  faIcons: new RouteConfig({\n    id: \"faIcons\",\n    path: \"/test/fontawesome/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Icônes Font Awesome\",\n    Component: RouteComponents.FaIcons,\n    hideFeedbackButton: true,\n  }),\n  newVotingProxyRequest: new RouteConfig({\n    id: \"newVotingProxyRequest\",\n    path: \"/procuration/donner-ma-procuration/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Donner ma procuration de vote\",\n    Component: RouteComponents.NewVotingProxyRequest,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  votingProxyLandingPage: new RouteConfig({\n    id: \"votingProxyLandingPage\",\n    path: \"/procuration/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Espace procurations de vote\",\n    Component: RouteComponents.VotingProxyLandingPage,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  newVotingProxy: new RouteConfig({\n    id: \"newVotingProxy\",\n    path: \"/procuration/prendre-une-procuration/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Prendre une procuration de vote\",\n    Component: RouteComponents.NewVotingProxy,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  replyToSingleVotingProxyRequest: new RouteConfig({\n    id: \"replyToSingleVotingProxyRequest\",\n    path: \"/procuration/prendre-une-procuration/demande/:votingProxyRequestPk/\",\n    params: { votingProxyRequestPk: null },\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Prendre une procuration de vote\",\n    Component: RouteComponents.ReplyToSingleVotingProxyRequest,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  replyToVotingProxyRequests: new RouteConfig({\n    id: \"replyToVotingProxyRequests\",\n    path: \"/procuration/prendre-une-procuration/:votingProxyPk/\",\n    params: { votingProxyPk: null },\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Prendre une procuration de vote\",\n    Component: RouteComponents.ReplyToVotingProxyRequests,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  acceptedVotingProxyRequests: new RouteConfig({\n    id: \"acceptedVotingProxyRequests\",\n    path: \"/procuration/prendre-une-procuration/:votingProxyPk/acceptees/\",\n    params: { votingProxyPk: null },\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Prendre une procuration de vote\",\n    Component: RouteComponents.ReplyToVotingProxyRequests,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  votingProxyRequestsForProxy: new RouteConfig({\n    id: \"votingProxyRequestsForProxy\",\n    path: \"/procuration/prendre-une-procuration/:votingProxyPk/demandes/\",\n    params: { votingProxyPk: null },\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Prendre une procuration de vote\",\n    Component: RouteComponents.VotingProxyRequestForProxy,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  votingProxyRequestDetails: new RouteConfig({\n    id: \"votingProxyRequestDetails\",\n    path: \"/procuration/reponse/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Procuration de vote\",\n    Component: RouteComponents.VotingProxyRequestDetails,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n  newPollingStationOfficer: new RouteConfig({\n    id: \"newPollingStationOfficer\",\n    path: \"/elections/assesseures-deleguees/\",\n    exact: true,\n    neededAuthentication: AUTHENTICATION.NONE,\n    label: \"Devenir assesseur·e ou délégué·e\",\n    Component: RouteComponents.NewPollingStationOfficer,\n    hasLayout: false,\n    hideFeedbackButton: true,\n    hideFooter: true,\n    appOnlyTopBar: true,\n  }),\n};\n\nexport const getRouteByPathname = (pathname) => {\n  return Object.values(routeConfig).find(\n    (route) => route.path === pathname || route.match(pathname),\n  );\n};\n\nconst routes = Object.values(routeConfig).filter((route) => !route.isPartial);\n\nexport default routes;\n","export const ACTIVITY_STATUS = {\n  STATUS_UNDISPLAYED: \"U\",\n  STATUS_DISPLAYED: \"S\",\n  STATUS_INTERACTED: \"I\",\n};\n\nexport const CHANGED_DATA_LABEL = {\n  name: \"nom\",\n  start_time: \"date\",\n  end_time: \"date\",\n  contact_name: \"contact\",\n  contact_email: \"contact\",\n  contact_phone: \"contact\",\n  location_name: \"lieu\",\n  location_address1: \"lieu\",\n  location_address2: \"lieu\",\n  location_city: \"lieu\",\n  location_zip: \"lieu\",\n  location_country: \"lieu\",\n  description: \"présentation\",\n  facebook: \"lien facebook\",\n};\n\nexport const getUnread = (data) => {\n  return Array.isArray(data)\n    ? data.filter(\n        (activity) => activity.status === ACTIVITY_STATUS.STATUS_UNDISPLAYED,\n      )\n    : [];\n};\n\nexport const getUnreadCount = (data) => {\n  return getUnread(data).length;\n};\n\nexport const getUninteracted = (data) => {\n  return Array.isArray(data)\n    ? data.filter(\n        (activity) => activity.status !== ACTIVITY_STATUS.STATUS_INTERACTED,\n      )\n    : [];\n};\n\nexport const getUninteractedCount = (data) => {\n  return getUninteracted(data).length;\n};\n","import { useEffect, useState } from \"react\";\nimport useSWR from \"swr\";\n\nconst pinger = async (url) => {\n  try {\n    const res = await fetch(url, { method: \"HEAD\", credentials: \"omit\" });\n    return res.ok;\n  } catch (e) {\n    return false;\n  }\n};\n\nconst pingerConfig = {\n  refreshInterval: 10000,\n  dedupingInterval: 10000,\n  focusThrottleInterval: 10000,\n  refreshWhenOffline: true,\n  shouldRetryOnError: false,\n  revalidateIfStale: false,\n};\n\nexport const useIsOffline = () => {\n  const { data: isOnline } = useSWR(\"/api/ping/\", pinger, pingerConfig);\n\n  const [isUnloading, setIsUnloading] = useState(false);\n\n  useEffect(() => {\n    let handleBeforeUnload = () => setIsUnloading(true);\n    window.addEventListener(\"beforeunload\", handleBeforeUnload);\n    return () => {\n      window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n    };\n  }, []);\n\n  return !isUnloading && typeof isOnline === \"boolean\" ? !isOnline : null;\n};\n"],"names":["relativeToAbsoluteURL","a","document","createElement","url","href","addQueryStringParams","params","relative","Object","keys","length","_window","parsedURL","URL","window","location","origin","parseURL","entries","forEach","key","value","searchParams","set","toString","replace","e","parseQueryStringParams","create","queryString","split","search","slice","entry","match","name","index","exec","push","slugify","string","separator","trim","normalize","toLowerCase","RegExp","getHasRouter","state","hasRouter","getIsSessionLoaded","isSessionLoaded","getUser","user","getIsConnected","getAuthentication","authentication","getBookmarkedEmails","bookmarkedEmails","getRoutes","routes","getToasts","toasts","getPageTitle","pageTitle","getBackLink","backLink","isProtected","getTopBarRightLink","topBarRightLink","getAdminLink","adminLink","getMessages","values","messages","filter","Boolean","getIsLoadingMessages","isLoadingMessages","getIsUpdatingMessages","isUpdatingMessages","reducers","action","type","ACTION_TYPE","isPoliticalSupport","SET_IS_POLITICAL_SUPPORT_ACTION","AUTHENTICATION","NONE","_objectSpread","Array","isArray","newState","toast","toastId","some","t","shortUUID","title","message","id","error","comment","newMessage","lastUpdate","Date","now","comments","recentComments","commentCount","c","rootReducer","currentValue","reducer","nextValue","allIcons","icons","RawFeatherIcon","styled","span","withConfig","shouldForwardProp","isPropValid","attrs","strokeWidth","color","strokeLinecap","strokeLinejoin","svgStyle","_icons$name$toSvg","_icons$name","map","k","undefined","style","m","join","dangerouslySetInnerHTML","__html","toSvg","props","width","height","top","theme","propTypes","PropTypes","FeatherIcon","small","inline","dimension","React","defaultProps","IconList","ul","IconListItem","li","getIconDataUrl","icon","client","axios","xsrfCookieName","xsrfHeaderName","CSRFPromise","interceptors","request","use","async","config","Cookies","get","method","log","logger","ENDPOINT","activities","activity","bulkUpdateActivityStatus","setAllActivitiesRead","announcements","customAnnouncement","unreadActivityCount","getActivityEndpoint","endpoint","updateActivityStatus","activityId","status","ACTIVITY_STATUS","STATUS_INTERACTED","fromPush","result","data","pushStatus","res","put","debug","setActivityAsInteracted","setAllActivitiesAsRead","mutate","session","hasUnreadActivities","init","globalContextData","nonReactRoutes","setSessionContext","addToasts","clearToast","setPageTitle","setBackLink","setTopBarRightLink","setAdminLink","dispatchFunction","useMobileApp","isAndroid","setIsAndroid","useLocalStorage","isIOS","setIsIOS","ios","android","isMobileApp","getScrollableParent","element","regex","parents","_node","ps","parentNode","concat","prop","getComputedStyle","getPropertyValue","scroll","test","overflow","HTMLElement","SVGElement","i","scrollingElement","documentElement","scrollParent","INTERACTIVE_ELEMENT","A","hasAttribute","AUDIO","BUTTON","DETAILS","EMBED","IFRAME","KEYGEN","LABEL","SELECT","TEXTAREA","VIDEO","isInteractiveElement","nodeName","HTMLInputElement","tabIndex","handleEventExceptForInteractiveChild","event","callback","target","currentTarget","parentElement","lazy","lazyImport","fallback","LazyComponent","isOffline","useIsOffline","setError","useState","Lazy","useMemo","reactLazy","err","Error","default","Fallback","useEffect","displayName","preload","scrollToElement","targetElement","scrollerElement","marginTop","scrollableElement","scrollTo","offsetTop","behavior","getFirstElementFromError","errors","_","v","errorElement","elt","querySelector","getBoundingClientRect","scrollToError","useCurrentLocation","pathname","setPathname","history","useHistory","listen","useRoute","route","routeParams","useSelector","isInternal","getRouteByPathname","routeConfig","getLink","ExternalLink","forwardedRef","rest","_objectWithoutProperties","_excluded","_extends","ref","InternalLink","to","_excluded2","next","nextState","RouterLink","RouteLink","_excluded3","LinkComponent","newHref","QueryStringParamsActions","fromActivityUpdated","useRef","handleFromActivity","useCallback","current","from_activity","Toasts","GlobalContext","ProdProvider","hasToasts","colorScheme","children","_state$toasts","dispatch","useReducer","doDispatch","createDispatch","sessionContext","useSWR","_self$caches","self","caches","delete","catch","Provider","ThemeProvider","getTheme","Suspense","GlobalContextProvider","selector","useContext","useDispatch","ICONS","fill","strokeLineCap","strokeLineJoin","svg","encodeURI","SOFT","HARD","BOOKMARKED_EMAILS_COOKIE_NAME","BOOKMARKED_EMAILS_COOKIE_OPTIONS","expires","secure","process","sameSite","NEWSLETTERS","LFI_reguliere","label","selected","visible","LFI_exceptionnelle","ELUES","person","newsletters","includes","membreReseauElus","LFI_jeunes_insoumise","LFI_liaisons","ILB","NEWSLETTER_OPTIONS","getNewsletterOptions","n","cookieData","JSON","parse","bookmarkEmails","emails","stringify","bookmarkEmail","email","getMobileOS","userAgent","navigator","vendor","opera","MSStream","spinner","keyframes","ButtonLoader","viewBox","xmlns","cx","cy","r","loading","BaseButton","button","_ref","link","as","Link","wrap","block","rightIcon","borderRadius","text50","text1000","disabled","SoutienButton","css","soutienPrimary","text25","collapse","SoutienButtonSecondary","soutienSecondary","SoutienButtonTertiary","DefaultButton","text100","WhiteButton","primary500","background0","WhiteRedButton","error500","TransparentButton","primary600","PrimaryButton","SecondaryButton","secondary500","secondary600","TertiaryButton","ConfirmedButton","primary100","primary150","UnavailableButton","text500","DismissButton","ChooseButton","text200","SuccessButton","success500","DangerButton","FacebookButton","white","facebook","LinkButton","LFIButtonActiveMixin","LFIprimary500","LFIButton","textColor","active","variants","whiteRed","transparent","primary","secondary","tertiary","confirmed","unavailable","dismiss","choose","success","danger","lfi","lfiPrimary","lfiDanger","error100","soutien","soutienTertiary","ButtonLabel","Button","forwardRef","_props$icon","B","className","colors","HomePage","AgendaPage","CalendarPage","EventMap","GroupUpcomingEventPage","GroupUpcomingEventRedirectPage","EventPage","MissingDocumentsPage","EventRequiredDocuments","GroupsPage","CreateEvent","FullGroupPage","GroupPage","GroupMap","ThematicGroups","ActivityPage","NavigationPage","SignupPage","LoginPage","CodeLoginPage","CodeSignupPage","TellMorePage","LogoutPage","MessagePage","CreateContactPage","DonationLandingPage","ExternalDonationPage","DonationSuccessPage","ChequeValidationPage","ContributionSuccessPage","ContributionRenewalPage","ActionToolsPage","SearchPage","SearchGroupPage","SearchEventPage","VotingProxyLandingPage","NewVotingProxyRequest","NewVotingProxy","ReplyToVotingProxyRequests","ReplyToSingleVotingProxyRequest","VotingProxyRequestForProxy","VotingProxyRequestDetails","TestErrorPage","TokTokPreview","NewPollingStationOfficer","EventSpeakerPage","FaIcons","CreateSpendingRequest","EditSpendingRequest","SpendingRequestDetails","SpendingRequestHistory","GroupFinanceHistory","SoutienPage","SoutienPageFinalize","SoutienRejoindreActionPopulaire","BASE_PATH","RouteConfig","constructor","this","__keys__","path","__re__","pathToRegexp","end","exact","__toPath__","bind","absolute","notificationSettingRoute","neededAuthentication","root","isPartial","agenda","hasLayout","Component","RouteComponents","events","layoutProps","$smallBackgroundColor","hideFeedbackButton","keepScroll","hideFooterBanner","AnonymousComponent","anonymousConfig","missingEventDocumentsModal","missingEventDocuments","eventMap","hideFooter","mapEventDetails","redirectTo","groupUpcomingEventRedirect","groupUpcomingEvents","createEvent","eventSettings","eventPk","activePanel","eventRequiredDocuments","eventSpeaker","eventDetails","groups","groupMap","mapGroupDetails","fullGroup","groupFinanceHistory","groupSettings","activeTab","createGroupSpendingRequest","groupDetailsGestion","hideTopBar","groupDetails","thematicGroups","spendingRequestDetails","spendingRequestHistory","editSpendingRequest","protected","actionTools","notificationSettings","menu","displayFooterOnMobileApp","paddingBottom","login","description","signup","codeLogin","codeSignup","tellMore","hidePushModal","logout","messagePk","messageSettings","createContact","step","soutienFinalize","appOnlyTopBar","soutienRejoindreActionPopulaire","donationLanding","donationSuccess","chequeValidation","paymentId","externalDonation","donations","contributionSuccess","contributionRenewal","contributions","searchGroup","searchEvent","testErrorPage","toktokPreview","faIcons","newVotingProxyRequest","votingProxyLandingPage","newVotingProxy","replyToSingleVotingProxyRequest","votingProxyRequestPk","replyToVotingProxyRequests","votingProxyPk","acceptedVotingProxyRequests","votingProxyRequestsForProxy","votingProxyRequestDetails","newPollingStationOfficer","find","STATUS_UNDISPLAYED","STATUS_DISPLAYED","CHANGED_DATA_LABEL","start_time","end_time","contact_name","contact_email","contact_phone","location_name","location_address1","location_address2","location_city","location_zip","location_country","getUnread","pinger","fetch","credentials","ok","pingerConfig","refreshInterval","dedupingInterval","focusThrottleInterval","refreshWhenOffline","shouldRetryOnError","revalidateIfStale","isOnline","isUnloading","setIsUnloading","handleBeforeUnload","addEventListener","removeEventListener"],"sourceRoot":""}