{"version":3,"file":"static/components/64-5031673f234e9123.mjs?cv=7","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/app/hooks/useDownloadBanner.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/formComponents/TextField.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/Card.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/FaIcon.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/FeatherIcon.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/front/components/genericComponents/grid.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/lib/components/utils/fontawesome.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/lib/components/utils/react.js"],"sourcesContent":["import { useIsDesktop } from \"@agir/front/genericComponents/grid\";\nimport { useLocalStorage } from \"@agir/lib/utils/hooks\";\nimport { useEffect, useCallback } from \"react\";\nimport { useMobileApp } from \"./useMobileApp\";\nimport { createGlobalState } from \"react-use\";\n\nexport const useHasDownloadBanner = createGlobalState(undefined);\n\nexport const useDownloadBanner = () => {\n  const [bannerCount, setBannerCount] = useLocalStorage(\"BANNER_count\", 0);\n  const [visitCount] = useLocalStorage(\"AP_vcount\", 0);\n\n  const isDesktop = useIsDesktop();\n  const { isMobileApp } = useMobileApp();\n\n  const [hasBanner, setHasBanner] = useHasDownloadBanner();\n\n  useEffect(() => {\n    if (hasBanner !== false &&\n      !isMobileApp &&\n      !isDesktop &&\n      bannerCount <= visitCount) {\n      setHasBanner(true);\n    }\n  }, [\n    hasBanner,\n    isMobileApp,\n    isDesktop,\n    bannerCount,\n    visitCount,\n    setHasBanner,\n  ]);\n\n  const hide = useCallback(() => {\n    setHasBanner(false);\n    setBannerCount(visitCount + 25);\n  }, [setBannerCount, visitCount, setHasBanner]);\n\n  return [!!hasBanner, hide];\n};\n","import PropTypes from \"prop-types\";\nimport React, { forwardRef, useCallback, useLayoutEffect, useRef } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nimport { mergeRefs } from \"@agir/lib/utils/react\";\n\nimport FeatherIcon from \"@agir/front/genericComponents/FeatherIcon\";\nimport FaIcon from \"../genericComponents/FaIcon\";\n\nconst StyledLabel = styled.span``;\nconst StyledHelpText = styled.span``;\nconst StyledIcon = styled(FaIcon)``;\nconst StyledInput = styled.input``;\nconst StyledTextArea = styled.textarea``;\nexport const StyledErrorIcon = styled.span``;\nconst StyledCounter = styled.span`\n  color: ${({ $invalid, theme }) => ($invalid ? theme.error500 : \"inherit\")};\n`;\nexport const StyledError = styled.span`\n  color: ${(props) => props.theme.error500};\n  line-height: 1.3;\n`;\n\nexport const FieldRequiredLabelMixin = css`\n  ${({ $required, theme }) => {\n    if ($required) {\n      return css`\n        &::after {\n          color: ${theme.LFIsecondary500};\n          content: \"*\";\n        }\n      `;\n    }\n  }}\n`;\n\nexport const StyledField = styled.label`\n  display: grid;\n  grid-template-columns: 1fr auto;\n  grid-template-rows: auto auto auto auto;\n  grid-gap: 4px 0.75rem;\n  align-items: stretch;\n  font-size: ${({ $small }) => ($small ? \"0.875rem\" : \"1rem\")};\n  font-weight: 400;\n  line-height: 1;\n  margin-bottom: 0;\n\n  ${StyledLabel} {\n    grid-row: 1;\n    grid-column: 1/3;\n    font-weight: 600;\n\n    ${FieldRequiredLabelMixin}\n  }\n  ${StyledHelpText} {\n    grid-row: 2;\n    grid-column: 1/3;\n    line-height: 1.5;\n  }\n\n  ${StyledIcon} {\n    grid-row: 3;\n    grid-column: ${({ $iconRight }) => ($iconRight ? \"2\" : \"1/1\")};\n    width: 3rem;\n    font-size: ${({ $large }) => ($large ? \"2rem\" : \"1rem\")};\n    justify-content: center;\n    color: ${({ $invalid, theme }) =>\n      $invalid ? theme.error500 : theme.text500};\n    z-index: 2;\n  }\n\n  ${StyledInput}, ${StyledTextArea} {\n    grid-row: 3;\n    grid-column: 1/3;\n    border-radius: ${({ theme, $variant }) =>\n      $variant === \"lfi\" ? 0 : theme.softBorderRadius};\n    border: 1px solid;\n    border-color: ${({ $invalid, theme }) =>\n      $invalid ? theme.error500 : theme.text100};\n    max-width: 100%;\n    padding: 0.5rem;\n    padding-left: ${({ $icon, $iconRight, $large }) =>\n      $icon ? ($iconRight ? \"1rem\" : \"3rem\") : $large ? \"0.75rem\" : \"0.5rem\"};\n    padding-right: ${({ $invalid, $iconRight }) =>\n      $invalid && !$iconRight ? \"3rem\" : $iconRight ? \"2.1rem\" : \"0.5rem\"};\n    background-color: ${({ $dark, theme }) =>\n      $dark ? theme.text50 : \"transparent\"};\n    -moz-appearance: textfield;\n\n    &::placeholder {\n      color: ${({ $dark, theme }) => ($dark ? theme.text700 : theme.text500)};\n    }\n\n    &::-webkit-outer-spin-button,\n    &::-webkit-inner-spin-button {\n      -webkit-appearance: none;\n      margin: 0;\n    }\n\n    &:focus {\n      outline: none;\n      border-color: ${({ $invalid, $dark, theme }) =>\n        $invalid ? theme.error500 : $dark ? theme.text200 : theme.text500};\n    }\n  }\n  ${StyledInput} {\n    height: ${({ $large }) => ($large ? \"auto\" : \"2.5rem\")};\n    font-size: ${({ $small, $large }) =>\n      $small ? \"0.875rem\" : $large ? \"2.5rem\" : \"1rem\"};\n    font-weight: ${({ $large }) => ($large ? \"400\" : \"inherit\")};\n  }\n  ${StyledTextArea} {\n    resize: none;\n    line-height: 1.5;\n  }\n  ${StyledErrorIcon} {\n    display: ${({ $invalid, $iconRight }) =>\n      $invalid && !$iconRight ? \"flex\" : \"none\"};\n    grid-row: 3;\n    grid-column: 2/3;\n    align-items: ${({ $large }) => ($large ? \"center\" : \"start\")};\n    justify-content: flex-end;\n    padding: 0.5rem;\n    color: ${(props) => props.theme.error500};\n  }\n  ${StyledError} {\n    display: ${({ $invalid }) => ($invalid ? \"flex\" : \"none\")};\n    grid-row: 4;\n    grid-column: ${({ $hasCounter }) => ($hasCounter ? \"1/2\" : \"1/3\")};\n  }\n  ${StyledCounter} {\n    grid-row: 4;\n    grid-column: 2/3;\n    text-align: right;\n    line-height: 1.5;\n    font-size: 0.875em;\n  }\n`;\n\nconst TextField = forwardRef((props, ref) => {\n  const {\n    id,\n    type,\n    onChange,\n    value = \"\",\n    error,\n    label,\n    helpText,\n    maxLength,\n    textArea,\n    rows,\n    hasCounter,\n    autoComplete,\n    small,\n    large,\n    dark,\n    icon,\n    iconRight,\n    required,\n    className,\n    variant,\n    ...rest\n  } = props;\n\n  const textAreaRef = useRef(null);\n  useLayoutEffect(() => {\n    const textArea = textAreaRef.current;\n    if (value && textArea) {\n      textArea.style.height = textArea.scrollHeight + 4 + \"px\";\n    }\n    return () => {\n      if (textArea) {\n        textArea.style.height = \"inherit\";\n      }\n    };\n  }, [value]);\n\n  const _onChange = useCallback(\n    (e) => {\n      try {\n        onChange(e);\n      } catch (e) {\n        console.error(e);\n        throw e;\n      }\n    },\n    [onChange],\n  );\n\n  return (\n    <StyledField\n      className={className}\n      htmlFor={id}\n      $valid={!error}\n      $invalid={!!error}\n      $empty={!!value}\n      $hasCounter={!!maxLength && !!hasCounter}\n      $small={!!small}\n      $large={!textArea && !!large}\n      $dark={!!dark}\n      $icon={!!icon}\n      $iconRight={!!iconRight}\n      $required={!!required}\n      $variant={variant}\n    >\n      {label && <StyledLabel>{label}</StyledLabel>}\n      {helpText && <StyledHelpText>{helpText}</StyledHelpText>}\n      {icon && <StyledIcon icon={icon} />}\n      {textArea ? (\n        <StyledTextArea\n          {...rest}\n          ref={mergeRefs(ref, textAreaRef)}\n          id={id}\n          type={type}\n          onChange={_onChange}\n          value={value}\n          rows={rows || 1}\n        />\n      ) : (\n        <StyledInput\n          {...rest}\n          ref={ref}\n          id={id}\n          type={type}\n          onChange={_onChange}\n          value={value}\n          autoComplete={autoComplete}\n        />\n      )}\n      <StyledErrorIcon>\n        <FeatherIcon name=\"alert-circle\" />\n      </StyledErrorIcon>\n      <StyledError>{error}</StyledError>\n      {hasCounter && typeof maxLength === \"number\" ? (\n        <StyledCounter $invalid={!!error || value.length > maxLength}>\n          {value.length}/{maxLength}\n        </StyledCounter>\n      ) : null}\n    </StyledField>\n  );\n});\n\nTextField.propTypes = {\n  value: PropTypes.any,\n  onChange: PropTypes.func,\n  type: PropTypes.oneOf([\"text\", \"email\", \"password\", \"number\"]),\n  id: PropTypes.string,\n  label: PropTypes.node,\n  helpText: PropTypes.node,\n  error: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.array,\n    PropTypes.bool,\n  ]),\n  maxLength: PropTypes.number,\n  textArea: PropTypes.bool,\n  rows: PropTypes.number,\n  hasCounter: PropTypes.bool,\n  autoComplete: PropTypes.string,\n  small: PropTypes.bool,\n  large: PropTypes.bool,\n  dark: PropTypes.bool,\n  icon: PropTypes.string,\n  className: PropTypes.string,\n};\n\nTextField.defaultProps = {\n  type: \"text\",\n  textArea: false,\n  hasCounter: true,\n  autoComplete: \"on\",\n  small: false,\n  large: false,\n};\n\nTextField.displayName = \"TextField\";\n\nexport default TextField;\n","import isPropValid from \"@emotion/is-prop-valid\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\n\nconst cardTypes = {\n  default: {\n    backgroundColor: \"background0\",\n    borderRadius: 0,\n  },\n  primary: {\n    backgroundColor: \"primary100\",\n  },\n  alert: {\n    backgroundImage: `linear-gradient(90deg, transparent 0, transparent 3px, ${(props) => props.theme.background0} 3px)`,\n    backgroundColor: \"background0\",\n  },\n  alert_dismissed: {\n    backgroundImage: `linear-gradient(90deg, transparent 0, transparent 3px, ${(props) => props.theme.background0} 3px)`,\n    backgroundColor: \"background0\",\n  },\n  error: {\n    backgroundImage: `linear-gradient(90deg, transparent 0, transparent 8px, ${(props) => props.theme.background0} 8px)`,\n    backgroundColor: \"error500\",\n  },\n};\n\nconst Card = styled.div\n  .withConfig({\n    shouldForwardProp: isPropValid,\n  })\n  .attrs(({ type, ...props }) => ({\n    ...props,\n    config: type && cardTypes[type] ? cardTypes[type] : cardTypes.default,\n  }))`\n  background-image: ${({ config }) => config.backgroundImage || \"none\"};\n  background-color: ${({ config, theme }) =>\n    theme[config.backgroundColor] || config.backgroundColor};\n  padding: 1.5rem;\n  font-weight: 500;\n  cursor: ${({ onClick }) => (onClick ? \"pointer\" : \"default\")};\n  border: 1px solid;\n  border-color: ${(props) => props.theme.text100};\n  transition:\n    border-color,\n    background-color 300ms;\n  border-radius: ${(props) => props.theme.borderRadius};\n\n  &:hover {\n    ${({ onClick }) =>\n      onClick\n        ? `\n      border-color: ${(props) => props.theme.text100};\n    `\n        : \"\"}\n  }\n\n  @media (max-width: ${(props) => props.theme.collapse}px) {\n    padding: 1rem;\n    ${(props) =>\n      !props.bordered\n        ? `\n      border: none;\n      box-shadow: ${(props) => props.theme.elaborateShadow};\n      border-radius: 0;\n    `\n        : \"\"}\n  }\n\n  & p {\n    font-weight: 400;\n\n    & > strong,\n    & > a {\n      font-weight: bolder;\n    }\n    & > a {\n      color: inherit;\n      text-decoration: underline;\n    }\n  }\n`;\nCard.propTypes = {\n  type: PropTypes.oneOf(Object.keys(cardTypes)),\n};\nCard.defaultProps = {\n  type: \"default\",\n};\nexport default Card;\n","/* eslint-disable react/prop-types */\n/* eslint-disable react/display-name */\nimport React from \"react\";\nimport styled, { useTheme } from \"styled-components\";\n\nimport fontawesome from \"@agir/lib/utils/fontawesome\";\n\nconst iconProps = [\"icon\", \"color\", \"size\"];\n\nconst StyledIcon = styled.i.withConfig({\n  shouldForwardProp: (prop) => !iconProps.includes(prop),\n})`\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  margin: 0;\n  padding: 0;\n  line-height: inherit;\n  text-decoration: none;\n  color: ${(props) => props.color || \"currentColor\"};\n  font-size: ${(props) => {\n    if (!props.size) {\n      return \"1em\";\n    }\n    if (typeof props.size !== \"number\") {\n      return props.size;\n    }\n    return props.size + \"px\";\n  }};\n`;\n\nconst FaIcon =\n  (defaultIcon) =>\n  ({ icon, className, color, ...props }) => {\n    const iconConfig = fontawesome(icon || defaultIcon, true);\n    const theme = useTheme();\n\n    return (\n      <StyledIcon\n        {...props}\n        color={theme[color] || color}\n        className={`${className ?? \"\"} ${iconConfig?.className}`.trim()}\n      />\n    );\n  };\n\nexport const FaBullhorn = FaIcon(\"bullhorn\");\nexport const FaCalendar = FaIcon(\"calendar\");\nexport const FaComment = FaIcon(\"comment\");\nexport const FaComments = FaIcon(\"comments\");\nexport const FaExclamation = FaIcon(\"exclamation\");\nexport const FaFacebook = FaIcon(\"facebook-official\");\nexport const FaInstagram = FaIcon(\"instagram\");\nexport const FaLock = FaIcon(\"lock\");\nexport const FaTelegram = FaIcon(\"telegram\");\nexport const FaTwitter = FaIcon(\"twitter\");\nexport const FaUsers = FaIcon(\"users\");\nexport const FaWhatsapp = FaIcon(\"whatsapp\");\nexport const FaYoutube = FaIcon(\"youtube-play\");\nexport const FaMicrophone = FaIcon(\"microphone\");\n\nexport default FaIcon();\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 PropTypes from \"prop-types\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\n\nimport { useDownloadBanner } from \"../app/hooks/useDownloadBanner\";\nimport Card from \"./Card\";\n\n/**\n * Accessibility\n */\n\nexport const SROnly = styled.span`\n  border: 0 !important;\n  clip: rect(1px, 1px, 1px, 1px) !important;\n  -webkit-clip-path: inset(50%) !important;\n  clip-path: inset(50%) !important;\n  height: 1px !important;\n  overflow: hidden !important;\n  padding: 0 !important;\n  position: absolute !important;\n  width: 1px !important;\n  white-space: nowrap !important;\n`;\n\n/**\n * Text\n */\nexport const Center = styled.div`\n  text-align: center;\n`;\n\nexport const Right = styled.div`\n  text-align: right;\n`;\n\nexport const PullRight = styled.div`\n  float: right;\n`;\n\n/**\n * Media queries\n */\nexport const Hide = styled.div.attrs(({ $under, $over, theme }) => ({\n  $under: $under\n    ? `max-width: ${typeof $under === \"number\" ? $under : theme.collapse}px`\n    : \"width <= 0\",\n  $over: $over\n    ? `min-width: ${typeof $over === \"number\" ? $over : theme.collapse}px`\n    : \"width <= 0\",\n}))`\n  min-width: 0;\n\n  @media (${(props) => props.$under}) {\n    display: none !important;\n  }\n\n  @media (${(props) => props.$over}) {\n    display: none !important;\n  }\n`;\n\n/**\n * Grid\n */\n\nconst gutter = 16;\n\nexport const GrayBackground = styled.div`\n  background-color: ${(props) => props.theme.text25};\n`;\n\nexport const Column = styled.div.withConfig({\n  shouldForwardProp: (prop) =>\n    [\"collapse\", \"grow\", \"stack\"].includes(prop) === false,\n})`\n  flex-basis: ${({ width, grow }) =>\n    width || grow\n      ? (Array.isArray(width) && width[1] ? width[1] : width) || \"1px\"\n      : \"auto\"};\n  flex-grow: ${({ grow }) => (grow ? 1 : 0)};\n  & > ${Card} {\n    margin-bottom: 16px;\n  }\n\n  @media (max-width: ${(props) => props.collapse || props.theme.collapse}px) {\n    flex-basis: ${(props) =>\n      Array.isArray(props.width) && props.width[0] ? props.width[0] : \"100%\"};\n    padding-left: 0;\n    padding-right: 0;\n\n    & > & > ${Card} {\n      ${(props) => (props.stack ? \"margin-bottom: 0px;\" : \"\")}\n    }\n  }\n`;\n\nColumn.propTypes = {\n  width: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.arrayOf(PropTypes.string),\n  ]), // can be anything like \"50%\" \"400px\"\n  // if array first is mobile size, second is desktop\n  grow: PropTypes.bool, // does the column fill the remaining space\n  collapse: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n};\n\nexport const Row = styled.div.withConfig({\n  shouldForwardProp: (prop) =>\n    [\"gutter\", \"align\", \"justify\", \"unwrap\"].includes(prop) === false,\n})`\n  margin-left: -${(props) => (typeof props.gutter === \"undefined\" ? gutter : props.gutter)}px;\n  margin-right: -${(props) => (typeof props.gutter === \"undefined\" ? gutter : props.gutter)}px;\n  display: flex;\n  flex-wrap: ${({ unwrap }) => (unwrap ? \"unset\" : \"wrap\")};\n  align-items: ${({ align }) => align || \"stretch\"};\n  justify-content: ${({ justify }) => justify || \"start\"};\n  gap: ${(props) => props.gap}px;\n\n  & > ${Column} {\n    padding-left: ${(props) =>\n      typeof props.gutter === \"undefined\" ? gutter : props.gutter}px;\n    padding-right: ${(props) =>\n      typeof props.gutter === \"undefined\" ? gutter : props.gutter}px;\n  }\n\n  & > ${Column} > section {\n    margin-left: -${(props) => (typeof props.gutter === \"undefined\" ? gutter : props.gutter)}px;\n    margin-right: -${(props) => (typeof props.gutter === \"undefined\" ? gutter : props.gutter)}px;\n    border-radius: 0px;\n  }\n\n  @media (max-width: ${(props) => props.collapse || props.theme.collapse}px) {\n    & > ${Column} > ${Card} {\n      margin-left: -${(props) => (typeof props.gutter === \"undefined\" ? gutter : props.gutter)}px;\n      margin-right: -${(props) => (typeof props.gutter === \"undefined\" ? gutter : props.gutter)}px;\n      border-radius: 0px;\n    }\n  }\n`;\n\nRow.propTypes = {\n  children: PropTypes.node,\n  align: PropTypes.oneOf([\n    \"stretch\",\n    \"baseline\",\n    \"center\",\n    \"flex-start\",\n    \"flex-end\",\n  ]), // align-items CSS property\n  justify: PropTypes.oneOf([\n    \"flex-start\",\n    \"flex-end\",\n    \"center\",\n    \"space-between\",\n    \"space-around\",\n    \"space-evenly\",\n  ]), // justify-content CSS property\n};\n\nexport const Container = styled.section`\n  width: ${1400 + gutter * 2}px;\n  max-width: 100%;\n  margin: 0 auto;\n  padding-left: ${gutter}px;\n  padding-right: ${gutter}px;\n\n  & > ${Row} {\n    margin-left: -${gutter}px;\n    margin-right: -${gutter}px;\n  }\n`;\n\nexport const useIsDesktop = (breakpoint) => {\n  const theme = useTheme();\n  breakpoint = breakpoint || theme.collapse;\n  const [isDesktop, setDesktop] = useState(window.innerWidth > breakpoint);\n\n  let refresh = useCallback(\n    () => setDesktop(window.innerWidth > breakpoint),\n    [breakpoint],\n  );\n\n  useEffect(() => {\n    window.addEventListener(\"resize\", refresh);\n\n    return function cleanup() {\n      window.removeEventListener(\"resize\", refresh);\n    };\n  }, [refresh]);\n\n  return isDesktop;\n};\n\nexport const ResponsiveLayout = ({\n  MobileLayout,\n  DesktopLayout,\n  breakpoint,\n  ...props\n}) => {\n  const isDesktop = useIsDesktop(breakpoint);\n\n  return isDesktop ? <DesktopLayout {...props} /> : <MobileLayout {...props} />;\n};\nResponsiveLayout.propTypes = {\n  MobileLayout: PropTypes.oneOfType([PropTypes.element, PropTypes.func])\n    .isRequired,\n  DesktopLayout: PropTypes.oneOfType([PropTypes.element, PropTypes.func])\n    .isRequired,\n  breakpoint: PropTypes.number,\n};\n\nexport const useResponsiveMemo = (mobileValue, desktopValue, breakpoint) => {\n  const isDesktop = useIsDesktop(breakpoint);\n\n  const value = useMemo(\n    () => {\n      return (isDesktop ? desktopValue : mobileValue);\n    },\n    [isDesktop, mobileValue],\n  );\n\n  return value;\n};\n\nexport const ResponsiveSpan = styled(\n  ({ small, large, breakpoint, ...props }) => {\n    const value = useResponsiveMemo(small, large, breakpoint);\n    return <span {...props}>{value}</span>;\n  },\n)``;\n\nResponsiveSpan.propTypes = {\n  small: PropTypes.string,\n  large: PropTypes.string,\n  breakpoint: PropTypes.number,\n};\n\nexport const useStickyOffset = (extraOffset = 0) => {\n  const hasDownloadBanner = useDownloadBanner();\n  const stickyOffset = useResponsiveMemo(hasDownloadBanner ? 134 : 54, 72);\n\n  return stickyOffset + extraOffset;\n};\n\nconst StickyDiv = styled.div.attrs((props) => ({\n  $offset:\n    typeof props.offset === \"number\" ? `${props.offset}px` : props.offset || 0,\n  $extra:\n    typeof props.extra === \"number\" ? `${props.extra}px` : props.extra || 0,\n}))`\n  position: sticky;\n  top: calc(${(props) => props.$offset} + ${(props) => props.$extra});\n`;\n\nexport const Sticky = ({ extraOffset, ...rest }) => {\n  const stickyOffset = useStickyOffset();\n  return <StickyDiv offset={stickyOffset} extra={extraOffset} {...rest} />;\n};\n\nSticky.propTypes = {\n  extraOffset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n","const BINDINGS = {};\n\nconst prefixClassName = (className) => {\n  if (!className || typeof className !== \"string\") {\n    return \"fa\";\n  }\n  className = className.toLowerCase().trim();\n  if (/^fa-/.test(className)) {\n    return className;\n  }\n  return `fa-${className}`;\n};\n\nconst fontawesome = (icon, asObject = false) => {\n  if (!icon || typeof icon !== \"string\") {\n    return null;\n  }\n\n  if (!BINDINGS[icon]) {\n    const [iconName, iconStyle = \"\"] = icon.toLowerCase().split(\":\");\n    const span = document.createElement(\"span\");\n\n    span.className = [\n      iconName.includes(\"fak\") && \"fak\",\n      prefixClassName(iconStyle),\n      prefixClassName(iconName),\n    ].join(\" \");\n    document.body.appendChild(span);\n    const spanStyle = window.getComputedStyle(span);\n    const beforeStyle = window.getComputedStyle(span, \":before\");\n    // La v7 ajoute un texte alternatif vide après le caractère de l'icône\n    // (`\"\\f060\" / \"\"`) : seule la première chaîne est l'icône\n    const content =\n      beforeStyle?.content &&\n      !beforeStyle.content.includes(\"none\") &&\n      (beforeStyle.content.match(/^\"([^\"]*)\"/)?.[1] ??\n        beforeStyle.content.replace(new RegExp('\"', \"g\"), \"\"));\n    BINDINGS[icon] = {\n      fontFamily: spanStyle.fontFamily,\n      fontWeight: spanStyle.fontWeight.replace(new RegExp('\"', \"g\"), \"\"),\n      text: content || \"\",\n      className: span.className,\n    };\n    document.body.removeChild(span);\n  }\n\n  return asObject ? BINDINGS[icon] : BINDINGS[icon].text;\n};\n\nexport default fontawesome;\n","import isPropValid from \"@emotion/is-prop-valid\";\nimport ReactDOM from \"react-dom\";\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst defaultGetInitial = (field) => field.value || null;\nconst defaultGetProps = () => ({});\nconst defaultGetValue = (value) =>\n  value ? (typeof value === \"string\" ? value : value.value) : \"\";\n\n// Permet d'afficher un champ controlé Field à l'emplacement défini par selector\n// avec gestion automatique de l'état. Une valeur initiale peut etre défini en\n// passant une fonction `getInitial'. D'autres propriétés peuvent etre ajoutées\n// avec une fonction`getProps'.\nexport function getStatefulRenderer(\n  Field,\n  selector,\n  {\n    getInitial = defaultGetInitial,\n    getProps = defaultGetProps,\n    valueToString = defaultGetValue,\n  },\n) {\n  return () => {\n    const fieldsToReplace = document.querySelectorAll(selector);\n\n    for (let field of fieldsToReplace) {\n      const insertingNode = field.parentNode;\n      const props = {\n        initial: getInitial(field),\n        name: field.name,\n        fieldProps: getProps(field),\n      };\n      insertingNode.removeChild(field);\n      renderReactComponent(\n        <RootComponent\n          Field={Field}\n          valueToString={valueToString}\n          {...props}\n        />,\n        insertingNode,\n      );\n    }\n  };\n}\n\n// Transforme n'importe quel champ controlé en un composant\n// qui gère son état lui-meme\nexport const RootComponent = ({\n  name,\n  initial,\n  Field,\n  valueToString,\n  fieldProps,\n}) => {\n  const [value, setValue] = useState(initial);\n\n  return (\n    <>\n      <input type=\"hidden\" name={name} value={valueToString(value)} />\n      <Field value={value} onChange={setValue} {...fieldProps} />\n    </>\n  );\n};\nRootComponent.propTypes = {\n  name: PropTypes.string,\n  initial: PropTypes.shape({\n    label: PropTypes.string,\n    value: PropTypes.string,\n  }),\n  Field: PropTypes.elementType,\n  valueToString: PropTypes.func,\n  fieldProps: PropTypes.object,\n};\n\nexport const renderReactComponent = (component, node) => {\n  node &&\n    ReactDOM.render(<React.StrictMode>{component}</React.StrictMode>, node);\n};\n\nexport const mergeRefs = (...refs) => {\n  const filteredRefs = refs.filter(Boolean);\n  if (!filteredRefs.length) return null;\n  if (filteredRefs.length === 0) return filteredRefs[0];\n  return (inst) => {\n    for (const ref of filteredRefs) {\n      if (typeof ref === \"function\") {\n        ref(inst);\n      } else if (ref) {\n        ref.current = inst;\n      }\n    }\n  };\n};\n\nexport const validProps = (props) =>\n  Object.entries(props)\n    .filter(([k]) => isPropValid(k))\n    .reduce((o, [k, v]) => ({ ...o, k: v }), {});\n"],"names":["useHasDownloadBanner","createGlobalState","undefined","useDownloadBanner","bannerCount","setBannerCount","useLocalStorage","visitCount","isDesktop","useIsDesktop","isMobileApp","useMobileApp","hasBanner","setHasBanner","useEffect","useCallback","StyledLabel","styled","StyledHelpText","StyledIcon","FaIcon","StyledInput","StyledTextArea","StyledErrorIcon","StyledCounter","$invalid","theme","StyledError","props","FieldRequiredLabelMixin","css","$required","StyledField","$small","$iconRight","$large","$variant","$icon","$dark","$hasCounter","TextField","forwardRef","ref","id","type","onChange","value","error","label","helpText","maxLength","textArea","rows","hasCounter","autoComplete","small","large","dark","icon","iconRight","required","className","variant","rest","textAreaRef","useRef","useLayoutEffect","_onChange","e","console","mergeRefs","FeatherIcon","PropTypes","cardTypes","Card","isPropValid","config","onClick","Object","iconProps","prop","defaultIcon","color","iconConfig","fontawesome","useTheme","FaBullhorn","FaCalendar","FaComment","FaComments","FaExclamation","FaFacebook","FaInstagram","FaLock","FaTelegram","FaTwitter","FaUsers","FaWhatsapp","FaYoutube","FaMicrophone","allIcons","icons","RawFeatherIcon","name","strokeWidth","strokeLinecap","strokeLinejoin","svgStyle","attrs","k","key","cssKey","m","inline","dimension","IconList","IconListItem","Hide","$under","$over","Column","width","grow","Array","Row","unwrap","align","justify","Container","breakpoint","setDesktop","useState","window","refresh","ResponsiveLayout","MobileLayout","DesktopLayout","useResponsiveMemo","mobileValue","desktopValue","useMemo","ResponsiveSpan","BINDINGS","prefixClassName","asObject","iconName","iconStyle","span","document","spanStyle","beforeStyle","content","RegExp","defaultGetInitial","field","defaultGetProps","defaultGetValue","getStatefulRenderer","Field","selector","getInitial","getProps","valueToString","insertingNode","renderReactComponent","RootComponent","initial","fieldProps","setValue","component","node","ReactDOM","React","refs","filteredRefs","Boolean","inst","o","v"],"mappings":"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"}