{"version":3,"sources":["../src/Image/index.tsx","../src/Image/assets/image.svg","../src/Image/assets/download.svg","../src/Image/assets/mediatheque.svg","../src/utils/intl.ts","../src/utils/queries.tsx","../src/Library/assets/xmark.svg","../src/Library/assets/trash.svg","../src/Library/assets/tag-xmark.svg","../src/Library/index.tsx","../src/Input/Input.tsx","../src/Input/InputWrapper.tsx","../src/ErrorBoundary.tsx","../src/index.tsx"],"sourcesContent":["import {\n  BlockModuleComponentProps,\n  BlockPluginDefinition,\n  LocaleContext,\n} from \"@thelia/blocks-editor\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { IntlProvider, useIntl } from \"react-intl\";\nimport { ReactComponent as Icon } from \"./assets/image.svg\";\nimport { ReactComponent as DownloadIcon } from \"./assets/download.svg\";\nimport { ReactComponent as MediathequeIcon } from \"./assets/mediatheque.svg\";\nimport { locale, messages } from \"../utils/intl\";\nimport { useDropzone } from \"react-dropzone\";\nimport Library from \"../Library\";\nimport { LibraryImage } from \"../types/types\";\nimport { QueryClientProvider } from \"react-query\";\nimport { useCreateImage } from \"../utils/queries\";\nimport { Toaster, toast } from \"react-hot-toast\";\nimport { queryClient } from \"@thelia/fetcher\";\n\nimport \"./Image.css\";\n\nconst FromLocal = ({\n  onSelect,\n  isWide = false,\n}: {\n  onSelect: (value: LibraryImage) => void;\n  isWide?: boolean;\n}) => {\n  const intl = useIntl();\n  const createImage = useCreateImage();\n\n  const { getRootProps, isDragActive } = useDropzone({\n    multiple: false,\n    accept: {\n      \"image/*\": [\".png\", \".gif\", \".jpeg\", \".jpg\", \".webp\", \".svg\"],\n    },\n    noClick: true,\n    maxFiles: 1,\n    onDrop: async (acceptedFiles) => {\n      if (acceptedFiles) {\n        const formData = new FormData();\n        formData.append(\"image\", acceptedFiles[0]);\n        const res = await createImage.mutateAsync(formData);\n\n        onSelect(res);\n      }\n    },\n    onDropRejected: (rejectedFiles) => {\n      rejectedFiles.length > 1\n        ? toast.error(intl.formatMessage({ id: \"BlockImage__TOAST_MAX_FILE\" }))\n        : toast.error(intl.formatMessage({ id: \"BlockImage__TOAST_WRONG_FILE_TYPE\" }));\n    },\n  });\n\n  return (\n    <div\n      className={`BlockImage__FromLocal ${\n        isDragActive ? \"BlockImage__FromLocal--active\" : \"\"\n      }`}\n      style={{ width: isWide ? \"100%\" : \"50%\" }}\n      {...getRootProps()}\n    >\n      <div className=\"BlockImage__FromLocal__Icon\">\n        <DownloadIcon />\n      </div>\n      {isDragActive ? (\n        intl.formatMessage({ id: \"BlockImage__DROP_TO_UPLOAD\" })\n      ) : !createImage.isLoading ? (\n        <>\n          <form\n            onSubmit={(e) => {\n              e.preventDefault();\n            }}\n          >\n            <label className=\"BlockImage__Button\" htmlFor=\"image\">\n              {intl.formatMessage({ id: \"BlockImage__DOWNLOAD\" })}\n            </label>\n            <input\n              className=\"BlockImage__FromLocal__FileInput\"\n              type=\"file\"\n              accept=\"image/*\"\n              name=\"image\"\n              id=\"image\"\n              onChange={async (e) => {\n                if (e.target.files) {\n                  const formData = new FormData();\n                  formData.append(\"image\", e.target.files[0]);\n                  const res = await createImage.mutateAsync(formData);\n\n                  onSelect(res);\n                }\n              }}\n            />\n            <span>{intl.formatMessage({ id: \"BlockImage__OR_DROP\" })}</span>\n          </form>\n        </>\n      ) : (\n        <>\n          <span>{intl.formatMessage({ id: \"DOWNLOADING\" })}</span>\n          <i className=\"Loader fa fa-circle-notch fa-spin\"></i>\n        </>\n      )}\n    </div>\n  );\n};\n\nconst FromLibrary = ({\n  onSelect,\n  isWide = false,\n}: {\n  onSelect: (value: LibraryImage) => void;\n  isWide?: boolean;\n}) => {\n  const [isOpen, setIsOpen] = useState(false);\n  const intl = useIntl();\n\n  return (\n    <div className=\"BlockImage__FromLibrary\" style={{ width: isWide ? \"100%\" : \"50%\" }}>\n      <div className=\"BlockImage__FromLibrary__Icon\">\n        <MediathequeIcon />\n      </div>\n      <button\n        className=\"BlockImage__Button\"\n        style={{ marginBottom: \"0.25rem\" }}\n        onClick={() => {\n          setIsOpen(true);\n        }}\n      >\n        <span>{intl.formatMessage({ id: \"BlockImage__SELECT_BUTTON\" })}</span>\n      </button>\n\n      <span>{intl.formatMessage({ id: \"BlockImage__SELECT\" })}</span>\n\n      {isOpen ? (\n        <Library\n          isOpen={isOpen}\n          setIsOpen={setIsOpen}\n          onSelect={(image: LibraryImage) => {\n            setIsOpen(false);\n            onSelect(image);\n          }}\n        />\n      ) : null}\n    </div>\n  );\n};\n\nconst Preview = ({\n  id,\n  fileName,\n  setEditMode,\n}: {\n  id: LibraryImage[\"id\"] | null;\n  fileName: LibraryImage[\"fileName\"];\n  setEditMode: Function;\n}) => {\n  const intl = useIntl();\n  const { getUrlWithPrefix } = useContext(LocaleContext);\n\n  if (!id) return null;\n  return (\n    <div className=\"BlockImage__Preview\">\n      <img\n        src={getUrlWithPrefix(`/image-library/${id}/full/^!220,220/0/default.webp`)}\n        alt=\"\"\n        loading=\"lazy\"\n        onError={(e) =>\n          ((e.target as HTMLImageElement).src = `https://via.placeholder.com/220`)\n        }\n      />\n      <div className=\"BlockImage__Preview__Infos\">\n        <span className=\"BlockImage__Preview__FileName\">{fileName}</span>\n        <button\n          className=\"BlockImage__Button\"\n          onClick={() => {\n            setEditMode(true);\n          }}\n        >\n          {intl.formatMessage({ id: \"REPLACE\" })}\n        </button>\n      </div>\n    </div>\n  );\n};\n\nconst ImageInfos = ({\n  image,\n  onChange,\n}: {\n  image: LibraryImage;\n  onChange: (data: Partial<LibraryImage>) => void;\n}) => {\n  const [title, setTitle] = useState(image.title);\n  const [url, setUrl] = useState(image.link?.url || \"\");\n  const [width, setWidth] = useState(image.width || \"\");\n  const [height, setHeight] = useState(image.height || \"\");\n\n  const intl = useIntl();\n\n  return (\n    <form\n      className=\"BlockImage__Infos__Form\"\n      onSubmit={(e) => {\n        e.preventDefault();\n      }}\n    >\n      <div>\n        <label>{intl.formatMessage({ id: \"BlockImage__TITLE\" })}</label>\n        <input\n          className=\"Input__Text\"\n          type=\"text\"\n          name=\"title\"\n          value={title}\n          placeholder={intl.formatMessage({ id: \"BlockImage__TITLE\" })}\n          onChange={(e) => setTitle(e.target.value)}\n          onBlur={() => onChange({ title: title })}\n        />\n      </div>\n      <div>\n        <label>\n          {intl.formatMessage({ id: \"BlockImage__LINK\" })} (\n          {intl.formatMessage({ id: \"OPTIONAL\" })})\n        </label>\n        <input\n          className=\"Input__Text\"\n          type=\"text\"\n          name=\"linkUrl\"\n          value={url}\n          placeholder={intl.formatMessage({\n            id: \"BlockImage__LINK_PLACEHOLDER\",\n          })}\n          onChange={(e) => setUrl(e.target.value)}\n          onBlur={() => onChange({ link: { url: url } })}\n        />\n      </div>\n      <div>\n        <label>\n          {intl.formatMessage({ id: \"BlockImage__WIDTH\" })} (\n          {intl.formatMessage({ id: \"OPTIONAL\" })})\n        </label>\n        <input\n          className=\"Input__Text\"\n          type=\"text\"\n          name=\"width\"\n          value={width}\n          placeholder={intl.formatMessage({\n            id: \"BlockImage__WIDTH__PLACEHOLDER\",\n          })}\n          onChange={(e) => setWidth(e.target.value)}\n          onBlur={() => onChange({ width })}\n        />\n      </div>\n      <div>\n        <label>\n          {intl.formatMessage({ id: \"BlockImage__HEIGHT\" })} (\n          {intl.formatMessage({ id: \"OPTIONAL\" })})\n        </label>\n        <input\n          className=\"Input__Text\"\n          type=\"text\"\n          name=\"height\"\n          value={height}\n          placeholder={intl.formatMessage({\n            id: \"BlockImage__HEIGHT__PLACEHOLDER\",\n          })}\n          onChange={(e) => setHeight(e.target.value)}\n          onBlur={() => onChange({ height })}\n        />\n      </div>\n    </form>\n  );\n};\n\nexport const UploadImage = ({\n  onSelect,\n  compact,\n  uploadModes = [\"local\", \"library\"],\n}: {\n  onSelect: (image: LibraryImage) => void;\n  compact?: boolean;\n  uploadModes?: (\"local\" | \"library\")[];\n}) => {\n  const uploadModesComponents = {\n    local: FromLocal,\n    library: FromLibrary,\n  };\n\n  return (\n    <IntlProvider messages={messages[locale]} locale={locale}>\n      <QueryClientProvider client={queryClient}>\n        <div\n          className={`BlockImage__Upload__Wrapper ${\n            compact ? \"BlockImage__Upload--light\" : \"\"\n          }`}\n        >\n          {uploadModes.map((mode) => {\n            const Component = uploadModesComponents[mode];\n\n            return (\n              <Component key={mode} onSelect={onSelect} isWide={uploadModes.length < 2} />\n            );\n          })}\n        </div>\n      </QueryClientProvider>\n    </IntlProvider>\n  );\n};\n\nconst BlockImageComponent = (props: BlockModuleComponentProps<LibraryImage>) => {\n  const { data, onUpdate } = props;\n\n  const [image, setImage] = useState<LibraryImage | null>(null);\n  const [isEditMode, setEditMode] = useState<boolean>(false);\n\n  const intl = useIntl();\n\n  useEffect(() => {\n    if (data.id) {\n      setImage(data);\n      return;\n    }\n\n    setEditMode(true);\n  }, [data]);\n\n  const onSelect = (image: LibraryImage) => {\n    onUpdate(image);\n    setEditMode(false);\n  };\n\n  return (\n    <div className=\"BlockImage\">\n      {image && !isEditMode ? (\n        <div className=\"BlockImage__Infos\">\n          <Preview id={image.id} fileName={image.fileName} setEditMode={setEditMode} />\n          <ImageInfos\n            image={image}\n            onChange={(values) => {\n              onUpdate({ ...data, ...values });\n            }}\n          />\n        </div>\n      ) : null}\n      {isEditMode ? (\n        <>\n          {image?.id ? (\n            <span\n              style={{\n                marginBottom: \"15px\",\n                display: \"block\",\n                fontWeight: 800,\n                fontSize: \"18px\",\n              }}\n            >\n              {intl.formatMessage({ id: \"REPLACE_IMAGE\" })} \"{image.title}\"\n            </span>\n          ) : null}\n          <UploadImage onSelect={onSelect} />\n          {image?.id ? (\n            <button\n              onClick={() => {\n                setEditMode(false);\n              }}\n              style={{ marginTop: \"15px\" }}\n              className=\"BlockImage__Button\"\n            >\n              {intl.formatMessage({ id: \"CANCEL\" })}\n            </button>\n          ) : null}\n        </>\n      ) : null}\n    </div>\n  );\n};\n\nconst WrappedComponent = (props: BlockModuleComponentProps<LibraryImage>) => {\n  return (\n    <IntlProvider messages={messages[locale]} locale={locale}>\n      <QueryClientProvider client={queryClient}>\n        <Toaster\n          toastOptions={{\n            success: {\n              style: {\n                background: \"#EAFBF5\",\n                border: \"1px solid #005A3A\",\n              },\n            },\n            error: {\n              style: {\n                background: \"#FFEDED\",\n                border: \"1px solid #D21919\",\n              },\n            },\n          }}\n        />\n        <BlockImageComponent {...props} />\n      </QueryClientProvider>\n    </IntlProvider>\n  );\n};\n\nconst initialData: LibraryImage = {\n  id: null,\n  title: \"\",\n  fileName: \"\",\n  width: \"\",\n  height: \"\",\n  tags: [],\n};\n\nconst moduleType = {\n  id: \"blockImage\",\n};\n\nconst blockImage: BlockPluginDefinition<LibraryImage> = {\n  type: moduleType,\n  component: WrappedComponent,\n  initialData,\n  title: {\n    default: \"Image\",\n    fr: \"Image\",\n    en: \"Image\",\n    es: \"Imagen\",\n    it: \"Immagine\",\n  },\n  description: {\n    default: \"Display an image\",\n    fr: \"Affiche une image\",\n    en: \"Display an image\",\n    es: \"Mostrar una imagen\",\n    it: \"Mostra un immagine\",\n  },\n  icon: Icon,\n  image: {\n    default: \"\",\n  },\n};\n\nexport default blockImage;\n","import * as React from \"react\";\n\nconst SvgImage = props => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M19.86 15.26V2.47C19.8574 1.814 19.5949 1.18577 19.1301 0.722836C18.6653 0.259906 18.036 -5.33299e-06 17.38 0H2.5C2.16847 0.00126416 1.84048 0.068193 1.53497 0.196922C1.22945 0.32565 0.952464 0.513628 0.72 0.75C0.268046 1.20961 0.0102384 1.82548 1.31138e-09 2.47V17.38C-1.06443e-05 17.7074 0.0647931 18.0315 0.190674 18.3337C0.316554 18.6359 0.50102 18.9102 0.733432 19.1407C0.965844 19.3713 1.2416 19.5535 1.5448 19.677C1.848 19.8004 2.17264 19.8626 2.5 19.86H17.38C18.0369 19.8574 18.6662 19.5952 19.1307 19.1307C19.5952 18.6662 19.8574 18.0369 19.86 17.38V15.38V15.25V15.26ZM15.61 13.04L18.7 15.52L18.79 15.6V17.38C18.7821 17.7478 18.6298 18.0978 18.3659 18.3541C18.1021 18.6105 17.7479 18.7527 17.38 18.75H2.5C2.31454 18.7508 2.13075 18.715 1.95916 18.6446C1.78756 18.5743 1.63153 18.4707 1.5 18.34C1.36742 18.2098 1.26271 18.0541 1.19222 17.8821C1.12174 17.7102 1.08696 17.5258 1.09 17.34V16.47L1.18 16.39L6.25 12.14C6.39167 12.0175 6.5727 11.95 6.76 11.95C6.95222 11.9494 7.13771 12.0208 7.28 12.15L9.8 14.75C10.1157 15.0571 10.5305 15.2414 10.97 15.27C11.4102 15.304 11.8476 15.176 12.2 14.91L14.66 13C14.7961 12.8988 14.9604 12.8428 15.13 12.84C15.2999 12.8407 15.4649 12.8969 15.6 13L15.61 13.04ZM18.78 13.67V14.19L18.38 13.86L16.26 12.18C15.9416 11.9269 15.5468 11.7891 15.14 11.7891C14.7332 11.7891 14.3384 11.9269 14.02 12.18L11.56 13.97C11.4214 14.0831 11.2489 14.1465 11.07 14.15C10.8861 14.1476 10.7091 14.0803 10.57 13.96L8.02 11.44C7.6917 11.1055 7.24813 10.9089 6.77983 10.8904C6.31152 10.8718 5.85377 11.0326 5.5 11.34L1.5 14.75L1.09 15.1V2.47C1.09 2.28531 1.12654 2.10243 1.19752 1.93192C1.2685 1.76141 1.37252 1.60663 1.50358 1.4765C1.63464 1.34636 1.79016 1.24345 1.96117 1.17368C2.13218 1.10392 2.31531 1.06868 2.5 1.07H17.38C17.5658 1.06696 17.7502 1.10174 17.9221 1.17222C18.0941 1.24271 18.2498 1.34742 18.38 1.48C18.5107 1.61153 18.6143 1.76756 18.6846 1.93916C18.755 2.11075 18.7908 2.29454 18.79 2.48L18.78 13.67Z\" fill=\"#333333\" /><path d=\"M14.0707 4.37993C13.5919 4.18009 13.0647 4.12687 12.5557 4.22701C12.0467 4.32715 11.5788 4.57613 11.2115 4.94241C10.8441 5.30869 10.5938 5.77578 10.4922 6.28449C10.3905 6.7932 10.4422 7.32062 10.6407 7.79993C10.8466 8.2856 11.1953 8.69714 11.6407 8.97992C12.1453 9.31662 12.7511 9.46778 13.3547 9.4076C13.9584 9.34742 14.5224 9.07963 14.9507 8.64992C15.2546 8.34523 15.4788 7.97034 15.6035 7.5584C15.7281 7.14646 15.7494 6.71016 15.6654 6.28805C15.5813 5.86595 15.3946 5.47104 15.1217 5.13824C14.8488 4.80544 14.4981 4.545 14.1007 4.37993H14.0707ZM14.3507 7.65992C14.1855 7.91702 13.9443 8.11626 13.6607 8.22992C13.3763 8.34874 13.0629 8.38007 12.7607 8.31992C12.4597 8.25811 12.1824 8.11251 11.9607 7.89992C11.7994 7.73572 11.6763 7.53809 11.5999 7.32101C11.5235 7.10393 11.4958 6.87271 11.5187 6.64373C11.5416 6.41475 11.6146 6.1936 11.7324 5.99594C11.8502 5.79828 12.0101 5.62895 12.2007 5.49993C12.4548 5.32915 12.7544 5.23857 13.0607 5.23992C13.4736 5.24265 13.8687 5.40791 14.1607 5.69992C14.3062 5.84383 14.4217 6.01513 14.5007 6.20392C14.5796 6.39272 14.6204 6.59528 14.6207 6.79993C14.6216 7.10759 14.5273 7.40801 14.3507 7.65992Z\" fill=\"#333333\" /></svg>;\n\nexport { SvgImage as ReactComponent };","import * as React from \"react\";\n\nconst SvgDownload = props => <svg width={28} height={26} viewBox=\"0 0 26 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M13 25C19.9036 25 25.5 19.4036 25.5 12.5C25.5 5.59644 19.9036 0 13 0C6.09644 0 0.5 5.59644 0.5 12.5C0.5 19.4036 6.09644 25 13 25ZM17.6328 15.9581L13.5555 19.9162C13.4826 19.9868 13.396 20.0428 13.3006 20.081C13.2053 20.1193 13.1031 20.1389 12.9998 20.1389C12.8966 20.1389 12.7944 20.1191 12.6991 20.0808C12.6038 20.0426 12.5172 19.9865 12.4444 19.9158L8.36709 15.9578C8.22042 15.8153 8.13834 15.6225 8.13889 15.4216C8.13944 15.2207 8.22258 15.0282 8.37002 14.8865C8.51747 14.7449 8.71713 14.6656 8.92509 14.6661C9.13305 14.6666 9.33228 14.7469 9.47894 14.8894L12.2162 17.5465V5.61856C12.2162 5.41767 12.2988 5.22501 12.4459 5.08296C12.5929 4.94091 12.7924 4.86111 13.0003 4.86111C13.2083 4.86111 13.4077 4.94091 13.5548 5.08296C13.7018 5.22501 13.7844 5.41767 13.7844 5.61856L13.7844 17.5465L16.5209 14.8894C16.5936 14.8189 16.6799 14.7628 16.7749 14.7245C16.87 14.6862 16.9719 14.6664 17.0749 14.6662C17.1779 14.6659 17.2799 14.6853 17.3752 14.7231C17.4704 14.761 17.557 14.8166 17.63 14.8867C17.703 14.9569 17.761 15.0403 17.8007 15.1321C17.8403 15.2239 17.8609 15.3224 17.8611 15.4219C17.8614 15.5214 17.8413 15.6199 17.8022 15.7119C17.763 15.804 17.7054 15.8876 17.6328 15.9581Z\" fill=\"#222222\" /></svg>;\n\nexport { SvgDownload as ReactComponent };","import * as React from \"react\";\n\nconst SvgMediatheque = props => <svg width={28} height={26} viewBox=\"0 0 28 26\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M7.25281 20.4814C5.42678 20.4814 3.80262 19.3023 3.21296 17.5469L3.17304 17.4146C3.03389 16.9499 2.97572 16.5588 2.97572 16.1677V8.32471L0.20873 17.6401C-0.147124 19.0102 0.663812 20.4308 2.0245 20.8093L19.6609 25.5728C19.8811 25.6303 20.1012 25.6579 20.3179 25.6579C21.4539 25.6579 22.4918 24.8976 22.7826 23.7771L23.8103 20.4814H7.25281Z\" fill=\"#222222\" /><path d=\"M10.3885 8.40309C11.6466 8.40309 12.6696 7.37124 12.6696 6.10242C12.6696 4.83361 11.6466 3.80176 10.3885 3.80176C9.1305 3.80176 8.10742 4.83361 8.10742 6.10242C8.10742 7.37124 9.1305 8.40309 10.3885 8.40309Z\" fill=\"#222222\" /><path d=\"M24.6453 0.350098H7.53694C5.96525 0.350098 4.68555 1.64077 4.68555 3.22593V15.8796C4.68555 17.4648 5.96525 18.7554 7.53694 18.7554H24.6453C26.217 18.7554 27.4967 17.4648 27.4967 15.8796V3.22593C27.4967 1.64077 26.217 0.350098 24.6453 0.350098ZM7.53694 2.65076H24.6453C24.9601 2.65076 25.2156 2.90844 25.2156 3.22593V11.3921L21.6126 7.15202C21.2305 6.69994 20.6773 6.45837 20.0831 6.44456C19.4923 6.44801 18.938 6.71259 18.5593 7.17042L14.3233 12.2986L12.9432 10.9102C12.163 10.1233 10.8936 10.1233 10.1146 10.9102L6.96666 14.0839V3.22593C6.96666 2.90844 7.22215 2.65076 7.53694 2.65076Z\" fill=\"#222222\" /></svg>;\n\nexport { SvgMediatheque as ReactComponent };","const getLocale = () => document.documentElement.lang || (navigator.languages && navigator.languages[0]) || navigator.language || 'en'\n\nexport const locale = getLocale()\n\nexport const messages: Record<string, { [key: string]: string}> = {\n  fr: {\n    BlockImage__DOWNLOAD: \"Télécharger une image\",\n    BlockImage__OR_DROP: \"ou glisser-déposer une image\",\n    BlockImage__SELECT_BUTTON: \"Sélectionner une image\",\n    BlockImage__SELECT: \"depuis votre médiathèque\",\n    BlockImage__TITLE: \"Titre de l'image\",\n    BlockImage__LINK: \"Lien de l'image\",\n    BlockImage__HEIGHT: \"Hauteur de l'image\",\n    BlockImage__WIDTH: \"Largeur de l'image\",\n    BlockImage__HEIGHT__PLACEHOLDER: \"Indiquez la hauteur de l'image (ex: 100px, 50%, auto)\",\n    BlockImage__WIDTH__PLACEHOLDER: \"Indiquez la largeur de l'image (ex: 100px, 50%, auto)\",\n    BlockImage__LINK_PLACEHOLDER: \"Lien au clic sur l'image\",\n    BlockImage__LIBRARY_MODAL_TITLE: \"Rechercher une image\",\n    BlockImage__LIBRARY_MODAL_TITLE_UPLOAD: \"Uploader une image\",\n    BlockImage__LIBRARY_MODAL_SEARCH: \"Rechercher dans la médiathèque\",\n    BlockImage__LIBRARY_MODAL_TAG_FILTER: \"Filtrer par tag\",\n    BlockImage__LIBRARY_LOADING: \"Chargement de la librairie...\",\n    BlockImage__TOAST_WRONG_FILE_TYPE: \"Votre image n'a pas pu être téléchargée. Veuillez vérifier que votre fichier est bien une image.\",\n    BlockImage__TOAST_MAX_FILE: \"Veuillez uploader une seule image.\",\n    BlockImage__DROP_TO_UPLOAD: \"Relacher pour uploader votre image\",\n    BlockImage__LIBRARY_NO_CONTENT: \"Aucune image trouvée\",\n    BlockImage__LIBRARY_SEARCHING: \"Recherche en cours...\",\n    BlockImage__LIBRARY_IMAGE_TAG_CONFIG: \"Configuration des tags de\",\n    BlockImage__LIBRARY_IMAGE_ADD_TAG: \"Ajouter un ou plusieurs tag\",\n    BlockImage__LIBRARY_IMAGE_SELECT_TAG: \"Sélectionnez un ou plusieurs tag\",\n\n    REPLACE: \"Remplacer\",\n    REPLACE_IMAGE: \"Remplacer l'image\",\n    OPTIONAL: \"Optionnel\",\n    CANCEL: \"Annuler\",\n    DELETE: \"Supprimer\",\n    SEARCH_BY: \"Référence, nom, ...\",\n    LOADING: \"Chargement...\",\n    DOWNLOADING: \"Téléchargement...\",\n    ALL_TAGS: \"Tous les tags\",\n    CHOOSE: \"Choisir\",\n  },\n  en: {\n    BlockImage__DOWNLOAD: \"Download an image\",\n    BlockImage__OR_DROP: \"or drop an image\",\n    BlockImage__SELECT_BUTTON: \"Select an image\",\n    BlockImage__SELECT: \"from your library\",\n    BlockImage__TITLE: \"Image title\",\n    BlockImage__LINK: \"Image link\",\n    BlockImage__HEIGHT: \"Image height\",\n    BlockImage__WIDTH: \"Image width\",\n    BlockImage__HEIGHT__PLACEHOLDER: \"Indicate the height of the image (ex: 100px, 50%, auto)\",\n    BlockImage__WIDTH__PLACEHOLDER: \"Indicate the width of the image (ex: 100px, 50%, auto)\",\n    BlockImage__LINK_PLACEHOLDER: \"Link on click on image\",\n    BlockImage__LIBRARY_MODAL_TITLE: \"Search an image\",\n    BlockImage__LIBRARY_MODAL_TITLE_UPLOAD: \"Upload an image\",\n    BlockImage__LIBRARY_MODAL_SEARCH: \"Search in the library\",\n    BlockImage__LIBRARY_MODAL_TAG_FILTER: \"Filter by tag\",\n    BlockImage__LIBRARY_LOADING: \"Loading library...\",\n    BlockImage__TOAST_WRONG_FILE_TYPE: \"Your image could not be uploaded. Please check that your file is an image.\",\n    BlockImage__TOAST_MAX_FILE: \"Please upload only one image.\",\n    BlockImage__DROP_TO_UPLOAD: \"Release to upload your image\",\n    BlockImage__LIBRARY_NO_CONTENT: \"No image found\",\n    BlockImage__LIBRARY_SEARCHING: \"Searching...\",\n    BlockImage__LIBRARY_IMAGE_TAG_CONFIG: \"Configure tags of\",\n    BlockImage__LIBRARY_IMAGE_ADD_TAG: \"Add one or more tag\",\n    BlockImage__LIBRARY_IMAGE_SELECT_TAG: \"Select one or more tag\",\n\n    REPLACE: \"Replace\",\n    REPLACE_IMAGE: \"Replace image\",\n    OPTIONAL: \"Optional\",\n    CANCEL: \"Cancel\",\n    DELETE: \"Delete\",\n    SEARCH_BY: \"Reference, name, ...\",\n    LOADING: \"Loading...\",\n    DOWNLOADING: \"Downloading...\",\n    ALL_TAGS: \"All tags\",\n    CHOOSE: \"Choose\",\n  },\n  es: {\n    BlockImage__DOWNLOAD: \"Descargar una imagen\",\n    BlockImage__OR_DROP: \"o arrastrar una imagen\",\n    BlockImage__SELECT_BUTTON: \"Seleccionar una imagen\",\n    BlockImage__SELECT: \"de tu biblioteca\",\n    BlockImage__TITLE: \"Título de la imagen\",\n    BlockImage__LINK: \"Enlace de la imagen\",\n    BlockImage__HEIGHT: \"Altura de la imagen\",\n    BlockImage__WIDTH: \"Ancho de la imagen\",\n    BlockImage__HEIGHT__PLACEHOLDER: \"Indica la altura de la imagen (ex: 100px, 50%, auto)\",\n    BlockImage__WIDTH__PLACEHOLDER: \"Indica el ancho de la imagen (ex: 100px, 50%, auto)\",\n    BlockImage__LINK_PLACEHOLDER: \"Enlace al hacer clic en la imagen\",\n    BlockImage__LIBRARY_MODAL_TITLE: \"Buscar una imagen\",\n    BlockImage__LIBRARY_MODAL_TITLE_UPLOAD: \"Subir una imagen\",\n    BlockImage__LIBRARY_MODAL_SEARCH: \"Buscar en la biblioteca\",\n    BlockImage__LIBRARY_MODAL_TAG_FILTER: \"Filtrar por tag\",\n    BlockImage__LIBRARY_LOADING: \"Cargando la biblioteca...\",\n    BlockImage__TOAST_WRONG_FILE_TYPE: \"Tu imagen no pudo ser subida. Por favor verifica que tu archivo es una imagen.\",\n    BlockImage__TOAST_MAX_FILE: \"Por favor sube solo una imagen.\",\n    BlockImage__DROP_TO_UPLOAD: \"Suelte para subir tu imagen\",\n    BlockImage__LIBRARY_NO_CONTENT: \"No se encontraron imagenes\",\n    BlockImage__LIBRARY_SEARCHING: \"Buscando...\",\n    BlockImage__LIBRARY_IMAGE_TAG_CONFIG: \"Configurar tags de\",\n    BlockImage__LIBRARY_IMAGE_ADD_TAG: \"Agregar uno o más tags\",\n    BlockImage__LIBRARY_IMAGE_SELECT_TAG: \"Seleccionar uno o más tags\",\n\n    REPLACE: \"Reemplazar\",\n    REPLACE_IMAGE: \"Reemplazar imagen\",\n    OPTIONAL: \"Opcional\",\n    CANCEL: \"Cancelar\",\n    DELETE: \"Eliminar\",\n    SEARCH_BY: \"Referencia, nombre, ...\",\n    LOADING: \"Cargando...\",\n    DOWNLOADING: \"Descargando...\",\n    ALL_TAGS: \"Todos los tags\",\n    CHOOSE: \"Elegir\",\n  },\n  it: {\n    BlockImage__DOWNLOAD: \"Scarica un immagine\",\n    BlockImage__OR_DROP: \"o trascina un immagine\",\n    BlockImage__SELECT_BUTTON: \"Seleziona un immagine\",\n    BlockImage__SELECT: \"dalla tua libreria\",\n    BlockImage__TITLE: \"Titolo dell immagine\",\n    BlockImage__LINK: \"Link dell immagine\",\n    BlockImage__HEIGHT: \"Altezza dell immagine\",\n    BlockImage__WIDTH: \"Larghezza dell immagine\",\n    BlockImage__HEIGHT__PLACEHOLDER: \"Indica l altezza dell immagine (ex: 100px, 50%, auto)\",\n    BlockImage__WIDTH__PLACEHOLDER: \"Indica la larghezza dell immagine (ex: 100px, 50%, auto)\",\n    BlockImage__LINK_PLACEHOLDER: \"Link al click sull immagine\",\n    BlockImage__LIBRARY_MODAL_TITLE: \"Cerca un immagine\",\n    BlockImage__LIBRARY_MODAL_TITLE_UPLOAD: \"Carica un immagine\",\n    BlockImage__LIBRARY_MODAL_SEARCH: \"Cerca nella libreria\",\n    BlockImage__LIBRARY_MODAL_TAG_FILTER: \"Filtra per tag\",\n    BlockImage__LIBRARY_LOADING: \"Caricamento della libreria...\",\n    BlockImage__TOAST_WRONG_FILE_TYPE: \"La tua immagine non può essere caricata. Per favore verifica che il tuo file sia un immagine.\",\n    BlockImage__TOAST_MAX_FILE: \"Per favore carica solo una immagine.\",\n    BlockImage__DROP_TO_UPLOAD: \"Rilascia per caricare la tua immagine\",\n    BlockImage__LIBRARY_NO_CONTENT: \"Nessuna immagine trovata\",\n    BlockImage__LIBRARY_SEARCHING: \"Ricerca in corso...\",\n    BlockImage__LIBRARY_IMAGE_TAG_CONFIG: \"Configura i tag di\",\n    BlockImage__LIBRARY_IMAGE_ADD_TAG: \"Aggiungi uno o più tag\",\n    BlockImage__LIBRARY_IMAGE_SELECT_TAG: \"Seleziona uno o più tag\",\n\n    REPLACE: \"Sostituisci\",\n    REPLACE_IMAGE: \"Sostituisci immagine\",\n    OPTIONAL: \"Opzionale\",\n    CANCEL: \"Annulla\", \n    DELETE: \"Elimina\",\n    SEARCH_BY: \"Riferimento, nome, ...\",\n    LOADING: \"Caricamento...\",\n    DOWNLOADING: \"Scaricare...\",\n    ALL_TAGS: \"Tutti i tag\",\n    CHOOSE: \"Scegli\",\n  }\n}","import { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { ImageTag, LibraryImage } from \"../types/types\";\nimport { fetcher } from \"@thelia/fetcher\";\n\nexport function useLibraryImage(options: {\n  id?: number | null;\n  limit?: number | null;\n  offset?: number;\n  title?: string | null;\n  tagId?: number | null;\n}) {\n  return useQuery(\n    [\"LibraryImage\", options],\n    () =>\n      fetcher(`/open_api/library/image`, {\n        method: \"GET\",\n        params: {\n          id: options.id || null,\n          limit: options.limit || 5,\n          offset: options.offset || 0,\n          title: options.title || null,\n          tagId: options.tagId || null,\n        },\n      }),\n    {\n      keepPreviousData: true,\n      onSuccess: (data: LibraryImage[]) => {},\n    }\n  );\n}\n\nexport function useLibraryImageById(id: number | null) {\n  return useQuery(\n    [\"LibraryImage\", id],\n    () =>\n      fetcher(`/open_api/library/image`, {\n        method: \"GET\",\n        params: {\n          id: id || null,\n        },\n      }),\n    {\n      enabled: !!id,\n    }\n  );\n}\n\nexport function useCreateImage() {\n  const queryClient = useQueryClient();\n  return useMutation<\n    LibraryImage,\n    {\n      message: string;\n      statusCode: number;\n      statusText: string;\n    },\n    FormData\n  >(\n    (data) => {\n      return fetcher(`/open_api/library/image`, {\n        method: \"POST\",\n        headers: {\n          \"content-type\": \"multipart/form-data\",\n        },\n        data,\n      });\n    },\n    {\n      onSuccess: (data) => {\n        queryClient.setQueryData([\"LibraryImage\"], (oldData: any) => {\n          if (oldData && Array.isArray(oldData)) {\n            return [...oldData, data];\n          }\n\n          return oldData;\n        });\n      },\n    }\n  );\n}\n\nexport function useDeleteImage() {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (id: LibraryImage[\"id\"]) => {\n      return fetcher(`/open_api/library/image/${id}`, {\n        method: \"DELETE\",\n      });\n    },\n    {\n      onSuccess: (_, id) => {\n        queryClient.setQueriesData([\"LibraryImage\"], (oldData: any) => {\n          if (oldData && Array.isArray(oldData)) {\n            return oldData.filter((i) => i.id !== id);\n          }\n\n          return oldData;\n        });\n      },\n    }\n  );\n}\nexport function useUpdateImage() {\n  const queryClient = useQueryClient();\n  return useMutation(\n    (id: LibraryImage[\"id\"]) => {\n      return fetcher(`/open_api/library/image/${id}`, {\n        method: \"POST\",\n      });\n    },\n    {\n      onSuccess: (data, id) => {\n        queryClient.setQueryData([\"LibraryImage\"], (oldData: any) => {\n          if (oldData && Array.isArray(oldData)) {\n            return oldData.map((i) => (i.id === id ? data : i));\n          }\n\n          return oldData;\n        });\n      },\n    }\n  );\n}\n\nexport function useGetTags() {\n  return useQuery(\n    [\"LibraryTag\"],\n    () =>\n      fetcher(`/open_api/library/tag`, {\n        method: \"GET\",\n      }),\n    {\n      keepPreviousData: true,\n      onSuccess: (data: ImageTag[\"tag\"][]) => {},\n    }\n  );\n}\n\nexport function useDeleteTagAssociation() {\n  const queryClient = useQueryClient();\n\n  return useMutation(\n    (id: ImageTag[\"tag\"][\"id\"]) => {\n      return fetcher(`/open_api/library/image_tag/${id}`, {\n        method: \"DELETE\",\n      });\n    },\n    {\n      onSuccess: (data, id) => {\n        queryClient.setQueriesData([\"LibraryImage\"], (oldData: any) => {\n          if (oldData && Array.isArray(oldData)) {\n            return oldData.map((image) => {\n              if (image.tags && image.tags.length) {\n                return {\n                  ...image,\n                  tags: image.tags.filter(\n                    ({ imageTag }: { imageTag: ImageTag[\"imageTag\"] }) =>\n                      imageTag.id !== id\n                  ),\n                };\n              }\n              return image;\n            });\n          }\n\n          return oldData;\n        });\n      },\n    }\n  );\n}\n\nexport function useAssociateTag() {\n  const queryClient = useQueryClient();\n\n  return useMutation(\n    (data: { imageId: number | null; tagId: number }) => {\n      return fetcher(`/open_api/library/image_tag`, {\n        method: \"POST\",\n        data,\n      });\n    },\n    {\n      onSuccess: (data: any) => {\n        queryClient.setQueriesData([\"LibraryImage\"], (oldData: any) => {\n          if (oldData && Array.isArray(oldData)) {\n            return oldData.map((image) => {\n              if (image.id === data.imageTag.imageId) {\n                return {\n                  ...image,\n                  tags: [...image.tags, data],\n                };\n              }\n\n              return image;\n            });\n          }\n\n          return oldData;\n        });\n      },\n    }\n  );\n}\n","import * as React from \"react\";\n\nconst SvgXmark = props => <svg width={19} height={18} viewBox=\"0 0 19 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M17.5913 15.0762L10.9713 8.67623L17.6013 2.27623C17.728 2.15573 17.829 2.0107 17.898 1.84996C17.9669 1.68923 18.0025 1.51614 18.0025 1.34123C18.0025 1.16632 17.9669 0.993238 17.898 0.832502C17.829 0.671767 17.728 0.526739 17.6013 0.406233C17.3305 0.151704 16.9729 0.00999999 16.6013 0.00999999C16.2296 0.00999999 15.872 0.151704 15.6013 0.406233L9.00125 6.77623L2.40125 0.396233C2.13049 0.141704 1.77286 0 1.40125 0C1.02964 0 0.672011 0.141704 0.401251 0.396233C0.275468 0.518481 0.17531 0.664572 0.10663 0.825969C0.0379507 0.987366 0.00212641 1.16083 0.00125089 1.33623C0.000992191 1.51181 0.0363014 1.68561 0.105048 1.84717C0.173796 2.00873 0.274556 2.15468 0.401251 2.27623L7.03125 8.67623L0.401251 15.0762C0.274474 15.1967 0.173528 15.3418 0.104549 15.5025C0.0355706 15.6632 0 15.8363 0 16.0112C0 16.1861 0.0355706 16.3592 0.104549 16.52C0.173528 16.6807 0.274474 16.8257 0.401251 16.9462C0.675245 17.1943 1.03165 17.3317 1.40125 17.3317C1.77085 17.3317 2.12726 17.1943 2.40125 16.9462L9.00125 10.5762L15.6013 16.9462C15.8731 17.1986 16.2303 17.3388 16.6013 17.3388C16.9722 17.3388 17.3294 17.1986 17.6013 16.9462C17.7307 16.8273 17.834 16.6828 17.9046 16.5218C17.9753 16.3609 18.0118 16.187 18.0118 16.0112C18.0118 15.8355 17.9753 15.6616 17.9046 15.5007C17.834 15.3397 17.7307 15.1952 17.6013 15.0762H17.5913Z\" fill=\"currentcolor\" /></svg>;\n\nexport { SvgXmark as ReactComponent };","import * as React from \"react\";\n\nconst SvgTrash = props => <svg width={12} height={12} viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M3.91875 0.498484C4.04531 0.257609 4.30547 0.105469 4.58906 0.105469H7.41094C7.69453 0.105469 7.95469 0.257609 8.08125 0.498484L8.25 0.816406H10.5C10.9148 0.816406 11.25 1.13477 11.25 1.52734C11.25 1.91991 10.9148 2.23828 10.5 2.23828H1.5C1.08586 2.23828 0.75 1.91991 0.75 1.52734C0.75 1.13477 1.08586 0.816406 1.5 0.816406H3.75L3.91875 0.498484ZM1.47891 2.94922H10.5V10.0586C10.5 10.8428 9.82734 11.4805 9 11.4805H2.97891C2.17148 11.4805 1.47891 10.8428 1.47891 10.0586V2.94922ZM3.35391 4.72656V9.70312C3.35391 9.89863 3.54375 10.0586 3.72891 10.0586C3.95625 10.0586 4.10391 9.89863 4.10391 9.70312V4.72656C4.10391 4.53105 3.95625 4.37109 3.72891 4.37109C3.54375 4.37109 3.35391 4.53105 3.35391 4.72656ZM5.60391 4.72656V9.70312C5.60391 9.89863 5.79375 10.0586 5.97891 10.0586C6.20625 10.0586 6.375 9.89863 6.375 9.70312V4.72656C6.375 4.53105 6.20625 4.37109 5.97891 4.37109C5.79375 4.37109 5.60391 4.53105 5.60391 4.72656ZM7.875 4.72656V9.70312C7.875 9.89863 8.04375 10.0586 8.25 10.0586C8.45625 10.0586 8.625 9.89863 8.625 9.70312V4.72656C8.625 4.53105 8.45625 4.37109 8.25 4.37109C8.04375 4.37109 7.875 4.53105 7.875 4.72656Z\" fill=\"white\" /></svg>;\n\nexport { SvgTrash as ReactComponent };","import * as React from \"react\";\n\nconst SvgTagXmark = props => <svg width={8} height={8} viewBox=\"0 0 19 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M17.5913 15.0762L10.9713 8.67623L17.6013 2.27623C17.728 2.15573 17.829 2.0107 17.898 1.84996C17.9669 1.68923 18.0025 1.51614 18.0025 1.34123C18.0025 1.16632 17.9669 0.993238 17.898 0.832502C17.829 0.671767 17.728 0.526739 17.6013 0.406233C17.3305 0.151704 16.9729 0.00999999 16.6013 0.00999999C16.2296 0.00999999 15.872 0.151704 15.6013 0.406233L9.00125 6.77623L2.40125 0.396233C2.13049 0.141704 1.77286 0 1.40125 0C1.02964 0 0.672011 0.141704 0.401251 0.396233C0.275468 0.518481 0.17531 0.664572 0.10663 0.825969C0.0379507 0.987366 0.00212641 1.16083 0.00125089 1.33623C0.000992191 1.51181 0.0363014 1.68561 0.105048 1.84717C0.173796 2.00873 0.274556 2.15468 0.401251 2.27623L7.03125 8.67623L0.401251 15.0762C0.274474 15.1967 0.173528 15.3418 0.104549 15.5025C0.0355706 15.6632 0 15.8363 0 16.0112C0 16.1861 0.0355706 16.3592 0.104549 16.52C0.173528 16.6807 0.274474 16.8257 0.401251 16.9462C0.675245 17.1943 1.03165 17.3317 1.40125 17.3317C1.77085 17.3317 2.12726 17.1943 2.40125 16.9462L9.00125 10.5762L15.6013 16.9462C15.8731 17.1986 16.2303 17.3388 16.6013 17.3388C16.9722 17.3388 17.3294 17.1986 17.6013 16.9462C17.7307 16.8273 17.834 16.6828 17.9046 16.5218C17.9753 16.3609 18.0118 16.187 18.0118 16.0112C18.0118 15.8355 17.9753 15.6616 17.9046 15.5007C17.834 15.3397 17.7307 15.1952 17.6013 15.0762H17.5913Z\" fill=\"currentcolor\" /></svg>;\n\nexport { SvgTagXmark as ReactComponent };","import {\n  useAssociateTag,\n  useDeleteImage,\n  useDeleteTagAssociation,\n  useGetTags,\n  useLibraryImage,\n} from \"../utils/queries\";\nimport { ReactComponent as XMarkIcon } from \"./assets/xmark.svg\";\nimport { ReactComponent as TrashIcon } from \"./assets/trash.svg\";\nimport { ReactComponent as TagXMarkIcon } from \"./assets/tag-xmark.svg\";\nimport ReactModal from \"react-modal\";\nimport { ImageTag, LibraryImage as LibraryImageType } from \"../types/types\";\nimport { Suspense, useContext, useState } from \"react\";\nimport { IntlProvider, useIntl } from \"react-intl\";\nimport Input from \"../Input\";\nimport ErrorBoundary from \"../ErrorBoundary\";\nimport { locale, messages } from \"../utils/intl\";\nimport { QueryClientProvider } from \"react-query\";\nimport { queryClient } from \"@thelia/fetcher\";\nimport \"./Library.css\";\nimport { LocaleContext } from \"@thelia/blocks-editor\";\nimport { UploadImage } from \"../Image\";\n\nconst TagsList = ({\n  currentTags,\n  onUpdate,\n}: {\n  currentTags: ImageTag[];\n  onUpdate: Function;\n}) => {\n  const { data } = useGetTags();\n\n  const tags =\n    data?.filter(\n      (tagFromServer) =>\n        !currentTags.find(\n          ({ tag }: { tag: ImageTag[\"tag\"] }) => tag.id === tagFromServer.id\n        )\n    ) || [];\n\n  return (\n    <ul className=\"TagList\">\n      {tags?.length > 0 ? (\n        tags.map((tag) => (\n          <li\n            key={tag.id}\n            onClick={() => {\n              onUpdate(tag);\n            }}\n            className=\"TagList__Item\"\n          >\n            <span>{tag.title}</span>\n          </li>\n        ))\n      ) : (\n        <li className=\"TagList__Item\">\n          <span>No tags available.</span>\n        </li>\n      )}\n    </ul>\n  );\n};\n\nconst TagConfigurationModal = ({\n  isOpen,\n  setIsOpen,\n  image,\n}: {\n  isOpen: boolean;\n  setIsOpen: Function;\n  image: LibraryImageType;\n}) => {\n  const [showTags, setShowTags] = useState(false);\n\n  const intl = useIntl();\n\n  const deleteTagAssociation = useDeleteTagAssociation();\n  const associateTag = useAssociateTag();\n\n  return (\n    <ReactModal\n      isOpen={isOpen}\n      onRequestClose={() => {\n        setIsOpen(false);\n      }}\n      className=\"Modal-Tags\"\n      overlayClassName=\"Overlay\"\n    >\n      <div className=\"Modal__Wrapper\">\n        <div className=\"Modal__Header\">\n          <button\n            onClick={() => {\n              setIsOpen(false);\n            }}\n            className=\"Modal__Header__Close\"\n          >\n            <XMarkIcon />\n          </button>\n\n          <div className=\"Modal__Header__Title\">\n            {intl.formatMessage({ id: \"BlockImage__LIBRARY_IMAGE_TAG_CONFIG\" })}{\" \"}\n            {image.title}\n          </div>\n        </div>\n\n        <div className=\"Modal__Content\" style={{ overflow: \"inherit\" }}>\n          <div>\n            <label>\n              {intl.formatMessage({ id: \"BlockImage__LIBRARY_IMAGE_ADD_TAG\" })}\n            </label>\n            <div className=\"BlockImage__TagSelector\">\n              <div\n                className=\"BlockImage__TagSelector__Tags\"\n                style={{ paddingLeft: image.tags.length < 1 ? \"14px\" : \"0\" }}\n              >\n                {image.tags.length\n                  ? image.tags.map(({ tag, imageTag }: ImageTag) => (\n                      <div\n                        key={tag.id}\n                        className=\"BlockImage__TagSelector__Tag\"\n                      >\n                        <span>{tag.title}</span>\n                        <button\n                          className=\"BlockImage__TagSelector__Tag__Remove\"\n                          onClick={() =>\n                            deleteTagAssociation.mutate(imageTag.id || 57)\n                          }\n                        >\n                          <TagXMarkIcon />\n                        </button>\n                      </div>\n                    ))\n                  : !associateTag.isLoading\n                  ? intl.formatMessage({\n                      id: \"BlockImage__LIBRARY_IMAGE_SELECT_TAG\",\n                    })\n                  : null}\n\n                {associateTag.isLoading && (\n                  <div className=\"BlockImage__TagSelector__Tag\">\n                    <span>\n                      <i className=\"fa fa-circle-notch fa-spin\"></i>\n                    </span>\n                  </div>\n                )}\n              </div>\n              <button\n                className=\"BlockImage__TagSelector__Add\"\n                onClick={() => setShowTags(!showTags)}\n                disabled={\n                  associateTag.isLoading || deleteTagAssociation.isLoading\n                }\n              >\n                <i className=\"block fas fa-plus\"></i>\n              </button>\n              {showTags ? (\n                <Suspense\n                  fallback={\n                    <div className=\"BlockProduct__Loader\">\n                      <i className=\"fa fa-circle-notch fa-spin\"></i>\n                    </div>\n                  }\n                >\n                  <TagsList\n                    currentTags={image.tags}\n                    onUpdate={(selectedTag: ImageTag[\"tag\"]) => {\n                      associateTag.mutate({\n                        imageId: image.id,\n                        tagId: selectedTag.id,\n                      });\n                      setShowTags(false);\n                    }}\n                  />\n                </Suspense>\n              ) : null}\n            </div>\n          </div>\n        </div>\n      </div>\n    </ReactModal>\n  );\n};\n\nconst TagFilterOptions = () => {\n  const intl = useIntl();\n\n  const { data: tags } = useGetTags();\n\n  return (\n    <>\n      <option value=\"\">{intl.formatMessage({ id: \"ALL_TAGS\" })}</option>\n      {tags?.map((tag) => (\n        <option key={tag.id} value={tag.id}>\n          {tag.title}\n        </option>\n      ))}\n    </>\n  );\n};\n\nconst TagFilter = ({ setTagId }: { setTagId: Function }) => {\n  const intl = useIntl();\n\n  return (\n    <div className=\"Select__Wrapper\">\n      <div className=\"Input__Select__Separator\"></div>\n      <label htmlFor=\"tag-filter\" style={{ display: \"flex\" }}>\n        {intl.formatMessage({ id: \"BlockImage__LIBRARY_MODAL_TAG_FILTER\" })}\n      </label>\n      <select\n        className=\"Input__Select\"\n        name=\"tag-filter\"\n        id=\"tag-filter\"\n        onChange={(e) => setTagId(e.target.value)}\n      >\n        <Suspense\n          fallback={<option>{intl.formatMessage({ id: \"LOADING\" })}</option>}\n        >\n          <TagFilterOptions />\n        </Suspense>\n      </select>\n    </div>\n  );\n};\n\nconst LibraryImage = ({\n  image,\n  onSelect,\n}: {\n  image: LibraryImageType;\n  onSelect: (value: LibraryImageType) => void;\n}) => {\n  const [isTagModalOpen, setIsTagModalOpen] = useState(false);\n\n  const intl = useIntl();\n\n  const deleteMutation = useDeleteImage();\n  const { getUrlWithPrefix } = useContext(LocaleContext);\n\n  return (\n    <>\n      <div className=\"Library__Image\">\n        <div className=\"Library__Image__Tags\">\n          {image.tags?.map(({ tag }: { tag: ImageTag[\"tag\"] }) => (\n            <span\n              key={tag.id}\n              style={{\n                border: `1px solid ${tag.colorCode}`,\n                color: tag.colorCode,\n                /* backgroundColor: hexToRGBA(tag.colorCode, 0.5), */\n              }}\n              className=\"Library__Image__Tag\"\n            >\n              {tag.title}\n            </span>\n          ))}\n        </div>\n\n        <img\n          width=\"150\"\n          height=\"150\"\n          loading=\"lazy\"\n          src={getUrlWithPrefix(\n            `/image-library/${image.id}/full/^!150,150/0/default.webp`\n          )}\n        />\n        <span className=\"Library__Image__Title\">{image.title}</span>\n\n        <div className=\"Library__Image__Actions\">\n          <span className=\"Library__Image__Action__Title\">{image.title}</span>\n          <button\n            className=\"Library__Image__Select__Action\"\n            style={{ marginTop: \"12px\", marginBottom: \"6px\" }}\n            onClick={() => onSelect(image)}\n          >\n            {intl.formatMessage({ id: \"CHOOSE\" })}\n          </button>\n          <div className=\"Library__Image__Actions__Wrapper\">\n            <button\n              className=\"Library__Image__Tag__Action\"\n              onClick={() => setIsTagModalOpen(true)}\n            >\n              <i className=\"fas fa-tag\"></i>\n            </button>\n            <button\n              className=\"Library__Image__Delete__Action\"\n              onClick={() => deleteMutation.mutate(image.id)}\n            >\n              <TrashIcon />\n            </button>\n          </div>\n        </div>\n      </div>\n      <TagConfigurationModal\n        image={image}\n        isOpen={isTagModalOpen}\n        setIsOpen={setIsTagModalOpen}\n      />\n    </>\n  );\n};\n\nconst LibraryContent = ({\n  limit = 20,\n  onSelect,\n  setMode,\n}: {\n  limit?: number;\n  onSelect: (image: LibraryImageType) => void;\n  setMode: Function;\n}) => {\n  const [offset, setOffset] = useState<number>(0);\n  const [title, setTitle] = useState<string>(\"\");\n  const [tagId, setTagId] = useState<number>();\n\n  const {\n    data: images = [],\n    isFetching,\n    isPreviousData,\n  } = useLibraryImage({\n    offset,\n    limit,\n    title,\n    tagId,\n  });\n\n  const intl = useIntl();\n\n  return (\n    <div className=\"Library\">\n      <div className=\"Library__Filters\">\n        <Input\n          placeholder={intl.formatMessage({ id: \"SEARCH_BY\" })}\n          type=\"text\"\n          name=\"library-search\"\n          id=\"library-search\"\n          value={title}\n          onChange={(e) => setTitle(e.target.value)}\n          label={intl.formatMessage({ id: \"BlockImage__LIBRARY_MODAL_SEARCH\" })}\n          icon={<i className=\"fa fa-search emphasize\"></i>}\n          iconAlignment=\"right\"\n        />\n\n        <TagFilter setTagId={setTagId} />\n\n        <button\n          className=\"BlockImage__Button\"\n          style={{\n            marginTop: \"auto\",\n            height: \"40px\",\n          }}\n          onClick={() => setMode(\"upload\")}\n        >\n          {intl.formatMessage({ id: \"BlockImage__LIBRARY_MODAL_TITLE_UPLOAD\" })}\n        </button>\n      </div>\n\n      <div className=\"Library__Content\">\n        {isFetching ? (\n          <div className=\"Modal__Content__Loader\">\n            <span>\n              {intl.formatMessage({ id: \"BlockImage__LIBRARY_SEARCHING\" })}\n            </span>\n            <i className=\"Loader fa fa-circle-notch fa-spin\"></i>\n          </div>\n        ) : images.length > 0 ? (\n          images?.map((image) => {\n            return (\n              <LibraryImage key={image.id} image={image} onSelect={onSelect} />\n            );\n          })\n        ) : (\n          <div className=\"Library__NoContent\">\n            <span>\n              {intl.formatMessage({ id: \"BlockImage__LIBRARY_NO_CONTENT\" })}\n            </span>\n          </div>\n        )}\n      </div>\n\n      <div className=\"Pagination\">\n        <button\n          className=\"Pagination__Button Pagination__Button--previous\"\n          onClick={() => setOffset((old) => Math.max(old - limit, 0))}\n          disabled={offset === 0}\n        >\n          <i className=\"fa fa-chevron-left\"></i>\n        </button>\n        <div className=\"Pagination__Button Pagination__Button--page\">\n          {offset / limit + 1}\n        </div>\n        <button\n          className=\"Pagination__Button Pagination__Button--next\"\n          onClick={() => {\n            if (!isPreviousData && (images?.length || 0) >= limit) {\n              setOffset((old) => old + limit);\n            }\n          }}\n          disabled={isPreviousData || (images?.length || 0) < limit}\n        >\n          <i className=\"fa fa-chevron-right\"></i>\n        </button>\n      </div>\n    </div>\n  );\n};\n\nfunction Library({\n  isOpen,\n  setIsOpen,\n  limit = 20,\n  onSelect,\n}: {\n  isOpen: boolean;\n  setIsOpen: Function;\n  limit?: number;\n  onSelect: (image: LibraryImageType) => void;\n}) {\n  const intl = useIntl();\n\n  const [mode, setMode] = useState<\"upload\" | \"library\">(\"library\");\n\n  return (\n    <ReactModal\n      isOpen={isOpen}\n      onRequestClose={() => setIsOpen(false)}\n      className={mode === \"upload\" ? \"Modal-Upload\" : \"Modal-Library\"}\n      ariaHideApp={false}\n      overlayClassName=\"Overlay\"\n    >\n      <div className=\"Modal__Wrapper\">\n        <div className=\"Modal__Header\">\n          <button\n            onClick={() => setIsOpen(false)}\n            className=\"Modal__Header__Close\"\n          >\n            <XMarkIcon />\n          </button>\n\n          <div className=\"Modal__Header__Title\">\n            {mode === \"upload\" ? (\n              <button className=\"mr-2\" onClick={() => setMode(\"library\")}>\n                <i className=\"fas fa-chevron-left\"></i>\n              </button>\n            ) : null}\n            {mode === \"library\"\n              ? intl.formatMessage({ id: \"BlockImage__LIBRARY_MODAL_TITLE\" })\n              : intl.formatMessage({\n                  id: \"BlockImage__LIBRARY_MODAL_TITLE_UPLOAD\",\n                })}\n          </div>\n        </div>\n\n        <div className=\"Modal__Content\">\n          {mode === \"library\" ? (\n            <Suspense\n              fallback={\n                <div className=\"Modal__Content__Loader\">\n                  <span>\n                    {intl.formatMessage({ id: \"BlockImage__LIBRARY_LOADING\" })}\n                  </span>\n                  <i className=\"Loader fa fa-circle-notch fa-spin\"></i>\n                </div>\n              }\n            >\n              <ErrorBoundary>\n                <LibraryContent\n                  onSelect={onSelect}\n                  limit={limit}\n                  setMode={setMode}\n                />\n              </ErrorBoundary>\n            </Suspense>\n          ) : (\n            <UploadImage onSelect={onSelect} uploadModes={[\"local\"]} />\n          )}\n        </div>\n      </div>\n    </ReactModal>\n  );\n}\n\nexport default function WrappedComponent(props: {\n  isOpen: boolean;\n  setIsOpen: Function;\n  limit?: number;\n  onSelect: (image: LibraryImageType) => void;\n}) {\n  return (\n    <IntlProvider messages={messages[locale]} locale={locale}>\n      <QueryClientProvider client={queryClient}>\n        <Library {...props} />\n      </QueryClientProvider>\n    </IntlProvider>\n  );\n}\n","import {\n  ChangeEvent,\n  FocusEvent,\n  forwardRef,\n  InputHTMLAttributes,\n  ReactNode,\n  Ref,\n} from \"react\";\nimport InputWrapper from \"./InputWrapper\";\n\nconst InputIcon = ({\n  icon,\n  alignment = \"left\",\n}: {\n  icon: ReactNode;\n  alignment?: \"left\" | \"right\";\n}) => {\n  return (\n    <span\n      className={`Input__Icon Input__Icon${alignment === \"left\" ? \"--left\" : \"--right\"}`}\n    >\n      {icon}\n    </span>\n  );\n};\n\nconst Input = forwardRef(\n  (\n    {\n      value,\n      onChange,\n      className = \"\",\n      emphasize,\n      placeholder,\n      icon,\n      iconAlignment = \"left\",\n      type = \"text\",\n      isValid,\n      label,\n      id,\n      info,\n      error,\n      ...props\n    }: {\n      value: string;\n      onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n      className?: string;\n      emphasize?: boolean;\n      placeholder?: string;\n      icon?: ReactNode;\n      iconAlignment?: \"left\" | \"right\";\n      type?: \"text\" | \"password\" | \"email\";\n      isValid?: boolean;\n      label?: string;\n      id: string;\n      info?: ReactNode;\n      error?: string;\n    } & InputHTMLAttributes<HTMLInputElement>,\n    ref: Ref<HTMLInputElement>\n  ) => {\n    return (\n      <InputWrapper id={id} label={label} error={error} info={info}>\n        <div className=\"Input__Text__Wrapper\">\n          <input\n            ref={ref}\n            type={type}\n            value={value}\n            id={id}\n            onChange={onChange}\n            className={`Input__Text ${emphasize ? \"Input__Text--emphasize\" : \"\"} ${\n              iconAlignment === \"left\" && icon\n                ? \"Input__Text--withIcon\"\n                : icon && isValid\n                ? \"Input__Text--withIcons\"\n                : \"\"\n            }`}\n            placeholder={placeholder}\n            {...props}\n          />\n\n          {icon && <InputIcon alignment={iconAlignment} icon={icon} />}\n\n          {icon && isValid && iconAlignment === \"left\" && (\n            <InputIcon\n              alignment={iconAlignment}\n              icon={<i className=\"fas fa-check\"></i>}\n            />\n          )}\n        </div>\n      </InputWrapper>\n    );\n  }\n);\n\nexport default Input;\n","import Tippy from \"@tippyjs/react\";\nimport { ReactNode } from \"react\";\n\nimport \"./Inputs.css\";\n\nconst InputWrapper = ({\n  children,\n  label,\n  error,\n  info,\n  id,\n}: {\n  children: ReactNode;\n  label?: string;\n  error?: string;\n  info?: ReactNode;\n  id: string;\n}) => {\n  return (\n    <div className=\"Input__Wrapper\">\n      <div className=\"Input__Wrapper__Header\">\n        {label && <label htmlFor={id}>{label}</label>}\n        {info && (\n          <Tippy delay={[700, 0]} content={info}>\n            <i className=\"fa fa-info-circle\"></i>\n          </Tippy>\n        )}\n      </div>\n      {children}\n      {error && <div className=\"Input__Wrapper__Error\">{error}</div>}\n    </div>\n  );\n};\n\nexport default InputWrapper;\n","import { Component, ErrorInfo, ReactNode } from \"react\";\n\ninterface Props {\n  children: ReactNode;\n}\n\ninterface State {\n  hasError: boolean;\n}\n\nclass ErrorBoundary extends Component<Props, State> {\n  public state: State = {\n    hasError: false,\n  };\n\n  public static getDerivedStateFromError(_: Error): State {\n    // Update state so the next render will show the fallback UI.\n    return { hasError: true };\n  }\n\n  public componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n    //console.error(\"Uncaught error:\", error, errorInfo);\n  }\n\n  public render() {\n    if (this.state.hasError) {\n      console.log(this.state);\n      return (\n        <span className=\"block p-8 text-2xl text-center text-red\">\n          Une erreur est survenue\n        </span>\n      );\n    }\n\n    return this.props.children;\n  }\n}\n\nexport default ErrorBoundary;\n","import Image, { UploadImage } from \"./Image\";\nimport { registerPlugin } from \"@thelia/blocks-editor\";\nimport Library from \"./Library\";\nimport { LibraryImage } from \"./types/types\";\n\nregisterPlugin(Image);\n\nexport default Library;\n\nexport { UploadImage };\nexport type { LibraryImage };\n"],"mappings":"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","names":["LocaleContext","useContext","useState","IntlProvider","useIntl","React","React","React","queryClient","queryClient","React","React","React","QueryClientProvider","queryClient","useIntl","useState","useContext","LocaleContext","IntlProvider","QueryClientProvider","queryClient","Component","image","WrappedComponent"]}