import{a as e,f as t,n}from"./apiFetch-C4rLkcBG.js";var r=[`.jpg`,`.jpeg`,`.png`,`.webp`,`.gif`,`.bmp`,`.tiff`,`.svg`],i=[`image/jpeg`,`image/jpg`,`image/png`,`image/webp`,`image/gif`,`image/bmp`,`image/tiff`,`image/svg+xml`],a=new class{async convertToWebP(e,t=1920,n=1080,r=.85){return e.type===`image/webp`?e:new Promise((i,a)=>{let o=new Image,s=URL.createObjectURL(e);o.onload=()=>{URL.revokeObjectURL(s);let{width:c,height:l}=o;c>t&&(l=Math.round(l*t/c),c=t),l>n&&(c=Math.round(c*n/l),l=n);let u=document.createElement(`canvas`);u.width=c,u.height=l;let d=u.getContext(`2d`);if(!d){a(Error(`Impossible d'obtenir le contexte canvas`));return}d.drawImage(o,0,0,c,l),u.toBlob(t=>{if(!t){a(Error(`Échec de la conversion WebP`));return}let n=e.name.replace(/\.[^.]+$/,``);i(new File([t],`${n}.webp`,{type:`image/webp`,lastModified:Date.now()}))},`image/webp`,r)},o.onerror=()=>{URL.revokeObjectURL(s),a(Error(`Erreur lors du chargement de l'image`))},o.src=s})}assertIsImage(e){let t=e.name.toLowerCase(),n=r.some(e=>t.endsWith(e)),a=i.includes(e.type);if(!n&&!a)throw{message:`Format non supporté : ${e.name}.`,code:`INVALID_FILE_TYPE`};if(e.size===0)throw{message:`Le fichier est vide.`,code:`EMPTY_FILE`}}async prepare(e,t=1920,n=1080,r=.85){return this.assertIsImage(e),this.convertToWebP(e,t,n,r)}async uploadImage(r,i){let a=await this.prepare(r),o=new FormData;return o.append(`image`,a),i&&o.append(`event_id`,i),n(`${t()}/upload/image`,{method:`POST`,body:o,timeout:e.TIMEOUTS.UPLOAD})}async uploadAssociationImage(r,i){let a=await this.prepare(r),o=new FormData;return o.append(`image`,a),i&&o.append(`association_id`,i),n(`${t()}/associations/images/upload`,{method:`POST`,body:o,timeout:e.TIMEOUTS.UPLOAD})}async uploadBlogImage(r){let i=await this.prepare(r),a=new FormData;a.append(`image`,i);let o=await n(`${t()}/blog/images/upload`,{method:`POST`,body:a,timeout:e.TIMEOUTS.UPLOAD});return{url:o.url||o.image_url,filename:o.filename||i.name,size:o.size||i.size,mime_type:`image/webp`,uploaded_at:o.uploaded_at||new Date().toISOString()}}async uploadMultipleImages(e,t){return Promise.all(e.map(e=>this.uploadImage(e,t)))}async deleteImage(r){await n(`${t()}/upload/image`,{method:`DELETE`,body:{image_url:r},timeout:e.TIMEOUTS.DEFAULT})}generatePreviewUrl(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=e=>t(e.target?.result),r.onerror=()=>n(Error(`Erreur lors de la génération de la prévisualisation`)),r.readAsDataURL(e)})}validateFile(e,t=!0){return this.assertIsImage(e),e}canProcessFile(e){let t=e.name.toLowerCase();return r.some(e=>t.endsWith(e))||i.includes(e.type)}async optimizeImage(e,t=1920,n=1080,r=.85){return this.convertToWebP(e,t,n,r)}};export{a as t};