{"version":3,"file":"static/components/4142-d01d12209dc47082.js?cv=7","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Navigation/BottomBar/BottomBar.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Navigation/BottomBar/index.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/Navigation/CounterBadge.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/hooks/useAppLoader.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/errorPage/ErrorPage.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/globalContext/hooks.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/lib/components/utils/time.js"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport CONFIG from \"@agir/front/app/Navigation/navigation.config\";\n\nimport CounterBadge from \"@agir/front/app/Navigation/CounterBadge\";\nimport Link from \"@agir/front/app/Link\";\nimport { RawFeatherIcon } from \"@agir/front/genericComponents/FeatherIcon\";\n\nconst Title = styled.span``;\nconst MenuLink = styled(Link)`\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  text-align: center;\n  height: 70px;\n  font-size: 11px;\n  font-weight: 500;\n  color: ${({ $active, theme }) => ($active ? theme.primary500 : \"inherit\")};\n  border-top: 2px solid\n    ${({ $active, theme }) => ($active ? theme.primary500 : \"transparent\")};\n\n  &:hover,\n  &:focus {\n    color: ${({ $active, theme }) => ($active ? theme.primary500 : \"inherit\")};\n    text-decoration: none;\n  }\n\n  ${RawFeatherIcon} {\n    display: block;\n  }\n\n  ${Title} {\n    font-size: 10px;\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n\n    @media (max-width: 340px) {\n      font-size: 8px;\n    }\n  }\n\n  ${CounterBadge} {\n    position: absolute;\n    top: 7px;\n    right: 14px;\n\n    @media (max-width: 340px) {\n      top: 9px;\n    }\n  }\n`;\n\nconst StyledBottomBar = styled.nav`\n  background-color: ${(props) => props.theme.background0};\n  position: fixed;\n  bottom: var(--safe-area-inset-bottom, env(safe-area-inset-bottom));\n  left: 0;\n  right: 0;\n  box-shadow: inset 0 1px 0 ${(props) => props.theme.text50};\n  height: var(--bottom-bar-height);\n  padding: 0 0.5rem;\n  z-index: ${(props) => props.theme.zindexBottomBar};\n  isolation: isolate;\n  overflow: hidden;\n\n  ul {\n    padding: 0;\n    max-width: 600px;\n    margin: auto;\n    display: flex;\n    justify-content: space-around;\n    list-style: none;\n\n    li {\n      flex: 1 1 auto;\n      max-width: 70px;\n      min-width: 1px;\n    }\n  }\n`;\n\nconst LINKS = CONFIG.menuLinks.filter(({ mobile }) => !!mobile);\n\nconst BottomBar = ({ active, unreadMessageCount, unreadActivityCount }) => (\n  <StyledBottomBar>\n    <ul>\n      {LINKS.map((link) => (\n        <li key={link.id}>\n          <MenuLink route={link.route} $active={active === link.id}>\n            {link.unreadMessageBadge && (\n              <CounterBadge value={unreadMessageCount} />\n            )}\n            {link.unreadActivityBadge && (\n              <CounterBadge value={unreadActivityCount} />\n            )}\n            {link.icon?.includes(\"fa-\") ? (\n              <i\n                className={`fa-regular ${link.icon}`}\n                style={{\n                  fontSize: \"2.2em\",\n                  fontWeight: 300,\n                  paddingBottom: \"2px\",\n                }}\n              />\n            ) : (\n              <RawFeatherIcon name={link.icon} inline />\n            )}\n            <Title>{link.title}</Title>\n          </MenuLink>\n        </li>\n      ))}\n    </ul>\n  </StyledBottomBar>\n);\n\nBottomBar.propTypes = {\n  active: PropTypes.string,\n  unreadActivityCount: PropTypes.number,\n  unreadMessageCount: PropTypes.number,\n};\nexport default BottomBar;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport { useUnreadMessageCount } from \"@agir/msgs/common/hooks\";\nimport { useUnreadActivityCount } from \"@agir/activity/common/hooks\";\n\nimport BottomBar from \"./BottomBar\";\n\nconst ConnectedBottomBar = (props) => {\n  const unreadActivityCount = useUnreadActivityCount();\n  const unreadMessageCount = useUnreadMessageCount();\n\n  return (\n    <BottomBar\n      {...props}\n      unreadActivityCount={unreadActivityCount}\n      unreadMessageCount={unreadMessageCount}\n    />\n  );\n};\n\nexport default ConnectedBottomBar;\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nconst Counter = ({ value, ...rest }) =>\n  !!value ? (\n    <svg\n      {...rest}\n      width=\"20\"\n      height=\"20\"\n      viewBox=\"0 0 20 20\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"inherit\" stroke=\"none\" />\n      <text\n        x=\"10\"\n        y={value > 9 ? \"10\": \"9\"}\n        dominantBaseline=\"central\"\n        textAnchor=\"middle\"\n        fontSize={String(value).length > 1 ? \"10px\" : \"12px\"}\n        fontWeight=\"700\"\n        fill=\"#FFFFFF\"\n      >\n        {!isNaN(value) && parseInt(value) > 20 ? \"+20\" : value}\n      </text>\n    </svg>\n  ) : null;\n\nCounter.propTypes = {\n  value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n};\n\nconst CounterBadge = styled(Counter)`\n  fill: ${(props) =>\n    props.$background\n      ? props.theme[props.$background] || props.$background\n      : props.theme.error500};\n  z-index: ${(props) => props.theme.zindexNavigationCounter};\n\n  circle {\n    stroke: ${(props) => props.$border || \"none\"};\n  }\n\n  text {\n    fill: ${(props) =>\n      props.$color\n        ? props.theme[props.$color] || props.$color\n        : props.theme.white};\n  }\n`;\n\nexport default CounterBadge;\n","import { useState, useEffect } from \"react\";\n\n/**\n * Custom React hook to hide the application loader\n * @param  {Boolean} [isReady=true]               whether the loader can be hidden or not\n */\n\nexport const useAppLoader = (isReady = true) => {\n  const [loader, setLoader] = useState(\n    isReady ? document.getElementById(\"app_loader\") : null\n  );\n\n  useEffect(() => {\n    isReady !== null && setLoader(document.getElementById(\"app_loader\"));\n  }, [isReady]);\n\n  useEffect(() => {\n    if (!loader) {\n      return;\n    }\n\n    loader.addEventListener(\"transitionend\", () => {\n      const loader = document.getElementById(\"app_loader\");\n      loader && loader.remove();\n    });\n    loader.style.opacity = \"0\";\n    loader.style.zIndex = -1;\n\n    setLoader(null);\n  }, [loader]);\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport { useAppLoader } from \"@agir/front/app/hooks/useAppLoader\";\n\nimport Button from \"@agir/front/genericComponents/Button\";\nimport Link from \"@agir/front/app/Link\";\nimport { RawFeatherIcon } from \"@agir/front/genericComponents/FeatherIcon\";\nimport Spacer from \"@agir/front/genericComponents/Spacer\";\nimport TopBar from \"@agir/front/app/Navigation/TopBar\";\n\nimport background from \"@agir/front/genericComponents/images/illustration-404.svg\";\n\nconst StyledIcon = styled.div`\n  width: 3.5rem;\n  height: 3.5rem;\n  border-radius: 3.5rem;\n  font-size: 2rem;\n  background-color: ${(props) => props.theme.secondary500};\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  font-weight: 500;\n`;\n\nconst StyledContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  min-height: 100vh;\n  position: relative;\n  overflow: auto;\n  background-image: url(\"${background}\");\n  background-position: center;\n  background-size: cover;\n  background-repeat: no-repeat;\n  padding: 1.5rem 1rem;\n\n  h2 {\n    text-align: center;\n    font-size: 1.5rem;\n  }\n\n  p {\n    width: 100%;\n    max-width: 46.875rem;\n    text-align: center;\n  }\n\n  pre {\n    width: 100%;\n    max-width: 46.875rem;\n    padding: 1.5rem;\n    margin: 0 0 1rem;\n    overflow: auto;\n    background-color: ${(props) => props.theme.text50};\n    border-radius: ${(props) => props.theme.borderRadius};\n    text-align: center;\n  }\n\n  ${Button} {\n    max-width: 28.125rem;\n  }\n`;\n\nconst StyledPage = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n`;\n\nexport const ErrorPage = (props) => {\n  const {\n    title = \"Une erreur est survenue\",\n    subtitle = \"Notre équipe a été prévenue du problème\",\n    errorMessage,\n    hasReload = true,\n    hasTopBar = true,\n    icon,\n    children,\n  } = props;\n\n  useAppLoader();\n\n  return (\n    <StyledPage>\n      {hasTopBar && (\n        <>\n          <TopBar hasTopBar />\n          <Spacer size=\"4.625rem\" />\n        </>\n      )}\n      {children ? (\n        <StyledContainer>{children}</StyledContainer>\n      ) : (\n        <StyledContainer>\n          <StyledIcon>{icon || <RawFeatherIcon name=\"x\" />}</StyledIcon>\n          <h2>{title}</h2>\n          <p>{subtitle}</p>\n          <Spacer size=\"1rem\" />\n          {errorMessage && <pre>{errorMessage}</pre>}\n          <Spacer size=\"1rem\" />\n          <Button link route=\"events\" color=\"primary\" block>\n            Revenir à l'accueil\n          </Button>\n          {hasReload ? (\n            <>\n              <Spacer size=\"1rem\" />\n              <Button onClick={() => window.location.reload()} block>\n                Recharger la page\n              </Button>\n            </>\n          ) : null}\n          <Spacer size=\"1rem\" />\n          <span>\n            ou consulter le <Link route=\"helpIndex\">centre d'aide</Link>\n          </span>\n        </StyledContainer>\n      )}\n    </StyledPage>\n  );\n};\nErrorPage.propTypes = {\n  errorMessage: PropTypes.string,\n  title: PropTypes.string,\n  subtitle: PropTypes.string,\n  hasReload: PropTypes.bool,\n  hasTopBar: PropTypes.bool,\n  icon: PropTypes.node,\n  children: PropTypes.node,\n};\nexport default ErrorPage;\n","import { useCallback } from \"react\";\nimport { useDispatch } from \"@agir/front/globalContext/GlobalContext\";\nimport { addToasts } from \"@agir/front/globalContext/actions\";\n\nexport const useToast = () => {\n  const dispatch = useDispatch();\n\n  const sendToast = useCallback(\n    (message, type, config) => {\n      const toast = {\n        message: message,\n        type: type || \"DEFAULT\",\n        ...config,\n      };\n      dispatch(addToasts(toast));\n    },\n    [dispatch],\n  );\n\n  return sendToast;\n};\n","import { DateTime, Interval } from \"luxon\";\nimport { instanceOf } from \"prop-types\";\n\nconst HOUR_ONLY_FORMAT = {\n  hour: \"numeric\",\n  minute: \"2-digit\",\n};\n\nconst SAME_YEAR_FORMAT = {\n  weekday: \"long\",\n  month: \"long\",\n  day: \"numeric\",\n};\n\nconst OTHER_YEAR_FORMAT = {\n  year: \"numeric\",\n  month: \"long\",\n  day: \"numeric\",\n};\n\nexport function dateFromISOString(isostring, zone) {\n  return zone\n    ? DateTime.fromISO(isostring, { zone }).setLocale(\"fr\")\n    : DateTime.fromISO(isostring).setLocale(\"fr\");\n}\n\nexport function displayHumanDay(datetime, relativeTo, interval) {\n  if (!instanceOf(datetime, DateTime)) {\n    return datetime;\n  }\n\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local();\n  }\n\n  if (interval === undefined) {\n    interval =\n      relativeTo < datetime\n        ? Interval.fromDateTimes(relativeTo, datetime)\n        : Interval.fromDateTimes(datetime, relativeTo);\n  }\n\n  const calendarDays = interval.count(\"days\");\n\n  if (calendarDays <= 3) {\n    return datetime.toRelativeCalendar({\n      base: relativeTo,\n      unit: \"days\",\n    });\n  } else if (calendarDays <= 8) {\n    const calendarWeeks = interval.count(\"weeks\");\n    const qualifier =\n      relativeTo < datetime ? (calendarWeeks > 1 ? \"prochain\" : \"\") : \"dernier\";\n    return `${datetime.weekdayLong} ${qualifier}`.trim();\n  }\n\n  const format = {\n    weekday: \"long\",\n    month: \"long\",\n    day: \"numeric\",\n    year: datetime.year !== relativeTo.year ? \"numeric\" : undefined,\n  };\n\n  return datetime.toLocaleString(format);\n}\n\nexport function displayHumanDate(datetime, relativeTo) {\n  if (!instanceOf(datetime, DateTime)) {\n    return datetime;\n  }\n\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local();\n  }\n  const interval =\n    relativeTo < datetime\n      ? Interval.fromDateTimes(relativeTo, datetime)\n      : Interval.fromDateTimes(datetime, relativeTo);\n\n  const calendarDays = interval.count(\"days\");\n\n  const time = datetime.toLocaleString(HOUR_ONLY_FORMAT);\n  let date = \"\";\n\n  if (calendarDays <= 8) {\n    date = displayHumanDay(datetime, relativeTo, interval);\n  } else if (interval.count(\"months\") <= 4) {\n    date = datetime.toLocaleString(SAME_YEAR_FORMAT);\n  } else {\n    date = datetime.toLocaleString(OTHER_YEAR_FORMAT);\n  }\n\n  return `${date} à ${time}`;\n}\n\nexport const displayHumanDateString = (datetime, relativeTo) => {\n  datetime = computeDateToLuxon(datetime)\n\n  if (relativeTo) {\n    relativeTo = computeDateToLuxon(relativeTo);\n  }\n\n  return displayHumanDate(datetime, relativeTo);\n};\n\nexport function displayInterval(interval, relativeTo) {\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local().setLocale(\"fr\");\n  }\n\n  const fromNowInterval =\n    relativeTo < interval.start\n      ? Interval.fromDateTimes(relativeTo, interval.start)\n      : Interval.fromDateTimes(interval.start, relativeTo);\n\n  const showYear = fromNowInterval.count(\"months\") > 4;\n  const scheduleCalendarDays = interval.count(\"days\");\n\n  const dayPartFormat = {\n    year: showYear ? \"numeric\" : undefined,\n    month: \"long\",\n    day: \"numeric\",\n    weekday: \"long\",\n  };\n\n  if (scheduleCalendarDays === 1) {\n    const dayPart = interval.start.toLocaleString(dayPartFormat);\n    const hourPart = `de ${interval.start.toLocaleString(\n      HOUR_ONLY_FORMAT,\n    )} à ${interval.end.toLocaleString(HOUR_ONLY_FORMAT)}`;\n    return `le ${dayPart}, ${hourPart}`;\n  }\n\n  const startDate = interval.start.toLocaleString(dayPartFormat);\n  const startTime = interval.start.toLocaleString(HOUR_ONLY_FORMAT);\n  const endDate = interval.end.toLocaleString({\n    ...dayPartFormat,\n    year: undefined,\n  });\n  const endTime = interval.end.toLocaleString(HOUR_ONLY_FORMAT);\n  return `du ${startDate} à ${startTime} au ${endDate} à ${endTime}`;\n}\n\nexport function displayIntervalStart(interval, relativeTo) {\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local().setLocale(\"fr\");\n  }\n  const startDate = interval.start.setLocale(\"fr-FR\");\n  const endDate = interval.end.setLocale(\"fr-FR\");\n  const scheduleCalendarDays = interval.count(\"days\");\n\n  const dayPartFormat = {\n    year: endDate < relativeTo ? \"numeric\" : undefined,\n    month: \"long\",\n    day: \"numeric\",\n  };\n\n  if (scheduleCalendarDays === 1) {\n    const dayPart = startDate.toLocaleString(dayPartFormat);\n    const hourPart = `${startDate.toLocaleString(HOUR_ONLY_FORMAT)}`;\n\n    return `${dayPart}, ${hourPart}`;\n  }\n\n  const start = startDate.toLocaleString({\n    ...dayPartFormat,\n    ...HOUR_ONLY_FORMAT,\n  });\n\n  return `${start}`;\n}\n\nexport function displayIntervalEnd(interval, relativeTo) {\n  if (relativeTo === undefined) {\n    relativeTo = DateTime.local().setLocale(\"fr\");\n  }\n\n  const startDate = DateTime.now();\n  const endDate = interval.end.setLocale(\"fr-FR\");\n  const beforeEnd = Interval.fromISO(`${startDate}/${endDate}`);\n  const diffBetween = beforeEnd.count(\"days\");\n\n  let title = \"En cours, \";\n\n  const dayPartFormat = {\n    year: endDate < relativeTo ? \"numeric\" : undefined,\n    month: \"long\",\n    day: \"numeric\",\n  };\n\n  if (diffBetween === 1) {\n    title += \"jusqu'à \";\n    const hourPart = `${endDate.toLocaleString(HOUR_ONLY_FORMAT)}`;\n    return `${title} ${hourPart}`;\n  }\n\n  if (diffBetween < 7) {\n    title += \"jusqu'à \";\n    return `${title}` + displayHumanDate(endDate);\n  }\n\n  title += \"jusqu'au \";\n\n  const end = endDate.toLocaleString({\n    ...dayPartFormat,\n    ...HOUR_ONLY_FORMAT,\n  });\n\n  return `${title} ${end}`;\n}\n\nconst units = [\"year\", \"month\", \"week\", \"day\", \"hour\", \"minute\", \"second\"];\n\nexport const simpleDate = (datetimeString, hideCurrentYear = true) => {\n  let dateTime = new Date(datetimeString);\n  dateTime = DateTime.fromJSDate(dateTime).setLocale(\"fr\");\n  return dateTime.toLocaleString({\n    year:\n      hideCurrentYear && new Date().getFullYear() === dateTime.get(\"year\")\n        ? undefined\n        : \"numeric\",\n    month: \"long\",\n    day: \"numeric\",\n  });\n};\n\nexport const simpleDateTime = (datetimeString, hideCurrentYear = true) => {\n  let dateTime = new Date(datetimeString);\n  dateTime = DateTime.fromJSDate(dateTime).setLocale(\"fr\");\n  return dateTime.toLocaleString({\n    year:\n      hideCurrentYear && new Date().getFullYear() === dateTime.get(\"year\")\n        ? undefined\n        : \"numeric\",\n    month: \"long\",\n    day: \"numeric\",\n    weekday: \"long\",\n    ...HOUR_ONLY_FORMAT,\n  });\n};\n\nexport const simpleInterval = (start, end) => {\n  const interval = Interval.fromISO(start + \"/\" + end);\n\n  if (interval.start.date === interval.end.date) {\n    return interval.toLocaleString(DateTime.TIME_24_SIMPLE, {\n      locale: \"fr-FR\",\n    });\n  }\n\n  return interval.toLocaleString(DateTime.DATETIME_SHORT, {\n    locale: \"fr-FR\",\n  });\n};\n\nexport const timeAgo = (date, maxUnit = units[0]) => {\n  try {\n    let dateTime = new Date(date);\n    dateTime = DateTime.fromJSDate(dateTime).setLocale(\"fr\");\n    const diff = dateTime.diffNow().shiftTo(...units);\n    const unit = units.find((unit) => diff.get(unit) !== 0) || \"second\";\n    if (maxUnit && units.indexOf(maxUnit) > units.indexOf(unit)) {\n      return \"le \" + simpleDate(date);\n    }\n    const relativeFormatter = new Intl.RelativeTimeFormat(\"fr\", {\n      numeric: \"auto\",\n    });\n    return relativeFormatter.format(Math.trunc(diff.as(unit)), unit);\n  } catch (e) {\n    return date;\n  }\n};\n\nexport const displayShortDate = (datetime) => {\n  try {\n    let date = new Date(datetime);\n    date = DateTime.fromJSDate(date).setLocale(\"fr\");\n    return date.toFormat(\"dd/LL\");\n  } catch (e) {\n    return datetime;\n  }\n};\n\nexport const computeDateToLuxon = (date) => {\n  return typeof date === \"string\"\n    ? DateTime.fromISO(date.replace(/([+-]\\d{2}:\\d{2}):\\d{2}$/, \"$1\"))\n    : typeof date === \"number\"\n      ? DateTime.fromMillis(date.replace(/([+-]\\d{2}:\\d{2}):\\d{2}$/, \"$1\"))\n      : null;\n}\n\nexport const computeScheduleTime = (startTime, endTime) => {\n  const start = computeDateToLuxon(startTime)\n  const end = computeDateToLuxon(endTime)\n\n  if (!start?.isValid || !end?.isValid) {\n    console.warn(\"Start or end time not valid\", start, end);\n    return null;\n  }\n\n  return Interval.fromDateTimes(start, end);\n}\n"],"names":["Title","styled","MenuLink","Link","$active","theme","RawFeatherIcon","CounterBadge","StyledBottomBar","props","LINKS","CONFIG","mobile","BottomBar","active","unreadMessageCount","unreadActivityCount","link","_link_icon","PropTypes","useUnreadActivityCount","useUnreadMessageCount","Counter","value","rest","String","isNaN","parseInt","isReady","loader","setLoader","useState","document","useEffect","StyledIcon","StyledContainer","background","Button","StyledPage","ErrorPage","title","subtitle","errorMessage","hasReload","hasTopBar","icon","children","useAppLoader","TopBar","Spacer","window","dispatch","useDispatch","useCallback","message","type","config","toast","addToasts","HOUR_ONLY_FORMAT","SAME_YEAR_FORMAT","OTHER_YEAR_FORMAT","dateFromISOString","isostring","zone","DateTime","displayHumanDay","datetime","relativeTo","interval","instanceOf","undefined","Interval","calendarDays","calendarWeeks","qualifier","format","displayHumanDate","time","date","displayInterval","showYear","fromNowInterval","scheduleCalendarDays","dayPartFormat","dayPart","hourPart","startDate","startTime","endDate","endTime","displayIntervalStart","start","displayIntervalEnd","diffBetween","beforeEnd","end","units","simpleDate","datetimeString","hideCurrentYear","dateTime","Date","computeDateToLuxon","console","maxUnit","diff","unit","relativeFormatter","Intl","Math","e"],"mappings":"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"}