1 line
26 KiB
JavaScript
1 line
26 KiB
JavaScript
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4382],{2259:(e,t,a)=>{a.d(t,{y:()=>p});var n=a(4208),r=a(91356),s=a(86466),l=a(93497),i=a(12551),o=a(89032),c=a(83984),d=a(97150),u=a(58113),m=a(55883);function p({avatarUrl:e,displayName:t,email:a,onChange:f,variant:h="panel",className:g}){let x=(0,r.useRef)(null),b="page"===h;async function v(e){let t=e.target.files?.[0];if(e.target.value="",t)try{let e=await (0,d.yj)(t);f(e)}catch(e){o.oR.error(e instanceof Error?e.message:"Impossible d'ajouter la photo.")}}let y=!!e||!!t;return(0,n.jsxs)("div",{className:(0,u.cn)("relative flex flex-col items-center",g),children:[(0,n.jsxs)("button",{type:"button",onClick:function(){x.current?.click()},className:"group relative rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40","aria-label":e?"Changer la photo":"Ajouter une photo",children:[y?(0,n.jsx)(c.q,{avatarUrl:e,name:t,email:a,size:b?"2xl":"lg"}):b?(0,n.jsx)("div",{className:m.js,children:(0,n.jsx)(s.A,{className:"h-12 w-12"})}):(0,n.jsx)("div",{className:m.Au,children:(0,n.jsx)(s.A,{className:"h-8 w-8"})}),(0,n.jsx)("div",{className:m.PP,children:(0,n.jsx)(l.A,{className:"h-4 w-4"})}),e?(0,n.jsx)("span",{role:"button",tabIndex:0,onClick:function(e){e.stopPropagation(),f(void 0)},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),f(void 0))},className:"absolute -right-1 -top-1 flex size-6 items-center justify-center rounded-full border border-border bg-background text-muted-foreground opacity-0 shadow-sm transition-opacity group-hover:opacity-100 hover:text-foreground","aria-label":"Supprimer la photo",children:(0,n.jsx)(i.A,{className:"h-3.5 w-3.5"})}):null]}),(0,n.jsx)("input",{ref:x,type:"file",accept:"image/jpeg,image/png,image/gif,image/webp",className:"hidden",onChange:v})]})}},2395:(e,t,a)=>{a.d(t,{LU:()=>g,QW:()=>v,d0:()=>x,oH:()=>h,q0:()=>b});var n=a(39927),r=a(17745),s=a(62701),l=a(80578),i=a(36253),o=a(94927),c=a(52002),d=a(83233),u=a(38584),m=a(10093),p=a(10165),f=a(45800);function h(){let e=(0,n.jE)(),t=(0,s.c6)(),a=t?.enabled??!1;return(0,r.n)({mutationFn:async e=>{if(a)return i.n.getState().createContact(e.bookId,e.contact);let t=await o.uE.post(`/contacts/books/${e.bookId}`,e.contact);return t?.uid?t:e.contact},onSuccess:(n,r)=>{if(a){i.n.getState().bump(),e.invalidateQueries({queryKey:l.E}),t?.notify("Contact cr\xe9\xe9");return}let s=n?.uid?n:r.contact;s?.uid&&(0,u.pl)(e,r.bookId,{...s,etag:s.etag??n?.etag,path:s.path??n?.path}),(0,m.yZ)(r.bookId),e.invalidateQueries({queryKey:["contacts",r.bookId]})},onError:(e,t)=>{e instanceof o.M_&&(0,c.Z2)({id:crypto.randomUUID(),timestamp:Date.now(),type:"create_contact",payload:{bookId:t.bookId,...t.contact},retries:0})}})}function g(){let e=(0,n.jE)(),t=(0,s.c6)(),a=t?.enabled??!1;return(0,r.n)({mutationFn:async e=>{if(a)return i.n.getState().updateContact(e.path,e.contact),{etag:'"demo-v2"'};let t=e.etag??e.contact.etag,n={};t&&(n["If-Match"]=t);let{etag:r,...s}=e.contact,l=e.path.replace(/^\/+/,"");return o.uE.put(`/contacts/${l}`,s,n)},onSuccess:(t,n)=>{if(a){i.n.getState().bump(),e.invalidateQueries({queryKey:l.E});return}let r=n.path.replace(/^\/+/,""),s=t?.etag??n.etag;(0,u.Ce)(e,r,{...n.contact,etag:s}),(0,m.yZ)(),n.skipInvalidation||e.invalidateQueries({queryKey:["contacts"]})},onError:(e,t)=>{e instanceof o.M_&&(0,c.Z2)({id:crypto.randomUUID(),timestamp:Date.now(),type:"update_contact",payload:{path:t.path,...t.contact},retries:0})}})}function x(){let e=(0,n.jE)(),t=(0,s.c6)(),a=t?.enabled??!1;return(0,r.n)({mutationFn:async e=>a?void i.n.getState().deleteContact(e.path):o.uE.delete(`/contacts/${e.path}`),onMutate:async t=>{await e.cancelQueries({queryKey:["contacts"]});let a=e.getQueriesData({queryKey:["contacts"]}),n=[];for(let[r,s]of a)s&&(n.push([r,s]),e.setQueryData(r,s.filter(e=>e.path!==t.path&&e.uid!==t.path)));return{snapshots:n}},onError:(t,a,n)=>{if(n?.snapshots)for(let[t,a]of n.snapshots)e.setQueryData(t,a);t instanceof o.M_&&(0,c.Z2)({id:crypto.randomUUID(),timestamp:Date.now(),type:"delete_contact",payload:{path:a.path,uid:a.path},retries:0})},onSettled:()=>{if(a){i.n.getState().bump(),e.invalidateQueries({queryKey:l.E}),t?.notify("Contact supprim\xe9");return}(0,m.yZ)(),e.invalidateQueries({queryKey:["contacts"]})}})}function b(){let e=(0,n.jE)();return(0,r.n)({mutationFn:async e=>{let{primary:t,secondary:a,merged:n}=(0,f.iZ)(e.contactA,e.contactB),r=(0,p.Y)(t),s=(0,p.Y)(a),l={};t.etag&&(l["If-Match"]=t.etag),await o.uE.put(`/contacts/${r}`,(0,d.h0)(n),l),s!==r&&await o.uE.delete(`/contacts/${s}`)},onSuccess:(t,a)=>{(0,m.yZ)(a.bookId),e.invalidateQueries({queryKey:["contacts",a.bookId]})}})}function v(){let e=(0,n.jE)();return(0,r.n)({mutationFn:async e=>{let t=(0,f.B6)(e.contacts,e.primaryId);if(!t)throw Error("At least 2 contacts are required to merge");let{primary:a,secondaries:n,merged:r}=t;if(!a.etag)throw Error("Cannot merge: unknown contact version. Reload the list.");let s={"If-Match":a.etag};for(let e of(await o.uE.put(`/contacts/${(0,p.Y)(a)}`,(0,d.h0)(r),s),n)){let t=(0,p.Y)(e);t!==(0,p.Y)(a)&&await o.uE.delete(`/contacts/${t}`)}},onSuccess:(t,a)=>{(0,m.yZ)(a.bookId),e.invalidateQueries({queryKey:["contacts",a.bookId]})}})}},3424:(e,t,a)=>{a.d(t,{Z:()=>w});var n=a(4208),r=a(91356),s=a(26362),l=a(91505),i=a(89032),o=a(18166),c=a(61554),d=a(17745),u=a(94927),m=a(2395),p=a(83233);let f={travail:"work",work:"work",domicile:"home",home:"home",mobile:"mobile",autre:"other",other:"other",personal:"home"},h={work:"Travail",home:"Domicile",mobile:"Mobile",other:"Autre",linkedin:"LinkedIn",twitter:"X / Twitter",facebook:"Facebook",instagram:"Instagram",github:"GitHub"};function g(e){if(!e)return"other";let t=e.trim().toLowerCase();return f[t]??t}function x(e){return e?h[e.toLowerCase()]??e:"Autre"}var b=a(10165),v=a(56747),y=a(55883),j=a(58113);function w({contact:e,open:t,onOpenChange:a}){let f=(0,d.n)({mutationFn:e=>u.uE.post("/contacts/improve",e)}),h=(0,m.LU)(),[N,C]=(0,r.useState)(null);(0,r.useEffect)(()=>{if(!t){C(null),f.reset();return}let a={first_name:e.firstName,last_name:e.lastName,middle_name:e.middleName,company:e.company,department:e.department,job_title:e.jobTitle,website:e.website,notes:e.notes,social_profiles:e.socialProfiles?.map(e=>({value:e.value,label:g(e.label)})),emails:e.emails.map(e=>({value:e.value,label:g(e.label)})),phones:e.phones.map(e=>({value:e.value,label:g(e.label)})),addresses:e.addresses?.map(e=>({street:e.street,city:e.city,region:e.region,postal_code:e.postalCode,country:e.country,label:g(e.label)})),birthday:function(e){if(!e?.month&&!e?.day&&!e?.year)return;let t=e.year?String(e.year).padStart(4,"0"):"",a=e.month?String(e.month).padStart(2,"0"):"",n=e.day?String(e.day).padStart(2,"0"):"";return t&&a&&n?`${t}-${a}-${n}`:a&&n?`--${a}-${n}`:void 0}(e.birthday),raw_vcard:(0,p.SG)(e)};f.mutate(a,{onSuccess:e=>C(e),onError:e=>{let t=e instanceof Error?e.message:"\xc9chec de l'am\xe9lioration IA";i.oR.error(t)}})},[t,e.id]);let k=f.isPending,S=N?function(e){let t=[],a=0,n=(e,n)=>{let r=n?.trim();r&&t.push({id:`${e}-${a++}`,fieldKey:e,value:r})};for(let t of(n("first_name",e.first_name),n("last_name",e.last_name),n("company",e.company),n("department",e.department),n("job_title",e.job_title),n("website",e.website),n("notes",e.notes),e.social_profiles??[]))n("social_profiles",t.value);for(let t of e.emails??[])n("emails",t.value);for(let t of e.phones??[])n("phones",t.value);for(let t of e.addresses??[])n("addresses",[t.street,[t.postal_code,t.city].filter(Boolean).join(" "),t.region,t.country].filter(Boolean).join(", "));return t}(N):[];return(0,n.jsx)(o.lG,{open:t,onOpenChange:a,children:(0,n.jsxs)(o.Cf,{className:"sm:max-w-lg",children:[(0,n.jsx)(o.c7,{children:(0,n.jsxs)(o.L3,{className:"flex items-center gap-2",children:[(0,n.jsx)(s.A,{className:"h-4 w-4 text-amber-500"}),"Am\xe9lioration IA"]})}),k&&(0,n.jsxs)("div",{className:(0,j.cn)("flex items-center justify-center gap-2 py-8 text-sm",y.YS),children:[(0,n.jsx)(l.A,{className:"h-4 w-4 animate-spin"}),"Analyse et nettoyage en cours…"]}),!k&&f.isError&&(0,n.jsx)("p",{className:(0,j.cn)("py-4 text-sm",y.YS),children:"L'am\xe9lioration a \xe9chou\xe9. V\xe9rifiez la configuration LLM dans les r\xe9glages."}),!k&&N&&(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsx)("p",{className:(0,j.cn)("text-sm",y.YS),children:"Aper\xe7u des informations nettoy\xe9es et r\xe9organis\xe9es. Aucune donn\xe9e n'est enregistr\xe9e tant que vous n'appliquez pas les changements."}),(0,n.jsx)(v.u,{items:S,editable:!1})]}),(0,n.jsxs)(o.Es,{className:"gap-3 sm:gap-3",children:[(0,n.jsx)(c.$,{type:"button",variant:"link",onClick:()=>a(!1),children:"Annuler"}),(0,n.jsxs)(c.$,{type:"button",disabled:!N||k||h.isPending,onClick:function(){let t,n,r,s;if(!N)return;let l=(t=N.emails?.length?N.emails.map(e=>({value:e.value,label:x(e.label)})):e.emails,n=N.phones?.length?N.phones.map(e=>({value:e.value,label:x(e.label)})):e.phones,r=N.addresses?.length?N.addresses.map(e=>({street:e.street,city:e.city,region:e.region,postalCode:e.postal_code,country:e.country,label:x(e.label)})):e.addresses,s=N.social_profiles?.length?N.social_profiles.map(e=>({value:e.value,label:x(e.label)})):e.socialProfiles,{...e,firstName:N.first_name?.trim()||e.firstName,lastName:N.last_name?.trim()||e.lastName,company:N.company?.trim()||e.company,department:N.department?.trim()||e.department,jobTitle:N.job_title?.trim()||e.jobTitle,website:N.website?.trim()||e.website,notes:N.notes?.trim()||e.notes,emails:t,phones:n,addresses:r,socialProfiles:s,updatedAt:Date.now()}),o=(0,b.Y)(e);e.etag?h.mutate({path:o,etag:e.etag,contact:(0,p.h0)(l)},{onSuccess:()=>{i.oR.success("Contact mis \xe0 jour"),a(!1)},onError:e=>{let t=e instanceof Error&&e.message?e.message:"Impossible d'enregistrer les modifications";i.oR.error(t)}}):i.oR.error("Impossible d'enregistrer : version du contact inconnue. Rechargez la liste.")},className:y.NC,children:[h.isPending?(0,n.jsx)(l.A,{className:"mr-1.5 h-4 w-4 animate-spin"}):null,"Appliquer"]})]})]})})}},20848:(e,t,a)=>{a.d(t,{U:()=>p,b:()=>u});var n=a(4208),r=a(91356),s=a(35019),l=a(68183),i=a(93497),o=a(84834),c=a(13746),d=a(58113);function u({visual:e}){return"iconify"===e.kind?(0,n.jsx)("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:(0,n.jsx)(o.In,{icon:e.icon,className:"size-[18px] shrink-0 text-[#5f6368]","aria-hidden":!0})}):(0,n.jsx)("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:(0,n.jsx)("span",{className:(0,d.cn)("block h-3 w-3 rounded-sm",e.colorClass),"aria-hidden":!0})})}function m({checked:e}){return(0,n.jsx)("span",{"aria-hidden":!0,className:(0,d.cn)("pointer-events-none inline-flex size-4 shrink-0 items-center justify-center rounded-[2.5px] border-[1.5px] border-[#c2c2c2] bg-transparent",!0===e&&"border-[#0b57d0] bg-[#0b57d0] text-white","indeterminate"===e&&"border-[#0b57d0] bg-[#0b57d0] text-white"),children:!0===e?(0,n.jsx)(s.A,{className:"size-3 stroke-[2.5] text-white"}):"indeterminate"===e?(0,n.jsx)(l.A,{className:"size-3 stroke-[2.5] text-white"}):null})}function p({query:e,onQueryChange:t,catalogLabels:a,resolveLabelVisual:s,Item:l,getLabelPresence:o,onToggleCatalogLabel:f,onCreateLabel:h,listClassName:g,searchAutoFocus:x=!0}){let b=(0,r.useRef)(null);(0,r.useLayoutEffect)(()=>{if(!x)return;let e=0,t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>{b.current?.focus({preventScroll:!0})})});return()=>{cancelAnimationFrame(t),e&&cancelAnimationFrame(e)}},[x]);let v=e.trim().toLowerCase(),y=a.filter(e=>0===v.length||e.toLowerCase().includes(v)),j=e.trim(),w=a.some(e=>e.toLowerCase()===j.toLowerCase()),N=j.length>0&&!w;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"shrink-0 border-b border-[#eceff1] p-2",onPointerDown:e=>e.stopPropagation(),children:(0,n.jsx)(c.p,{ref:b,value:e,onChange:e=>t(e.target.value),placeholder:"Rechercher ou cr\xe9er un libell\xe9…","aria-label":"Rechercher ou cr\xe9er un libell\xe9",className:"h-8 border-[#dadce0] text-sm shadow-none",autoComplete:"off",onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation()})}),(0,n.jsxs)("div",{className:(0,d.cn)("min-h-0 overflow-y-auto py-1",g??"max-h-52"),children:[N?(0,n.jsxs)(l,{onSelect:e=>{e.preventDefault(),h(j)},children:[(0,n.jsx)(i.A,{className:"size-[18px] shrink-0 text-[#0b57d0]",strokeWidth:1.5}),(0,n.jsxs)("span",{className:"min-w-0 flex-1 text-[#0b57d0]",children:["Cr\xe9er le libell\xe9 \xab ",j," \xbb"]})]}):null,y.map(e=>{let t=o(e);return(0,n.jsxs)(l,{onSelect:t=>{t.preventDefault(),f(e)},children:[(0,n.jsx)(m,{checked:"all"===t||"some"===t&&"indeterminate"}),(0,n.jsx)(u,{visual:s(e)}),(0,n.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e})]},e)}),0!==y.length||N?null:(0,n.jsx)("div",{className:"px-3 py-2 text-sm text-[#5f6368]",children:"Aucun libell\xe9 correspondant"})]})]})}},45800:(e,t,a)=>{a.d(t,{B6:()=>l,SP:()=>s,iZ:()=>d});var n=a(7651);function r(e){let t=0;return(0,n.t)(e)&&(t+=3),e.emails.some(e=>e.value.trim())&&(t+=4),e.phones.some(e=>e.value.trim())&&(t+=2),e.company?.trim()&&(t+=1),e.path?.trim()&&(t+=1),t}function s(e){if(0!==e.length)return[...e].sort((e,t)=>r(t)-r(e))[0]}function l(e,t){if(e.length<2)return null;let a=(t?e.find(e=>e.id===t):void 0)??s(e);if(!a)return null;let n=e.filter(e=>e.id!==a.id),r=a;for(let e of n)r=c(r,e);return{primary:a,secondaries:n,merged:{...r,id:a.id,path:a.path,etag:a.etag,createdAt:a.createdAt}}}function i(e){let t=new Set,a=[];for(let n of e){let e=n.value.trim().toLowerCase();!e||t.has(e)||(t.add(e),a.push(n))}return a}function o(e){let t=new Set,a=[];for(let n of e){let e=n.trim().toLowerCase();!e||t.has(e)||(t.add(e),a.push(n))}return a}function c(e,t){return{...e,namePrefix:e.namePrefix||t.namePrefix,firstName:e.firstName||t.firstName,middleName:e.middleName||t.middleName,lastName:e.lastName||t.lastName,nameSuffix:e.nameSuffix||t.nameSuffix,phoneticFirstName:e.phoneticFirstName||t.phoneticFirstName,phoneticLastName:e.phoneticLastName||t.phoneticLastName,company:e.company||t.company,department:e.department||t.department,jobTitle:e.jobTitle||t.jobTitle,website:e.website||t.website,notes:function(e,t){let a=[e,t].map(e=>e?.trim()).filter(Boolean);if(0!==a.length)return o(a).join("\n\n")}(e.notes,t.notes),emails:i([...e.emails,...t.emails]),phones:i([...e.phones,...t.phones]),addresses:function(e){let t=new Set,a=[];for(let n of e){let e=[n.street,n.city,n.region,n.postalCode,n.country,n.label].map(e=>e?.trim().toLowerCase()??"").join("|");!e.replace(/\|/g,"")||t.has(e)||(t.add(e),a.push(n))}return a}([...e.addresses??[],...t.addresses??[]]),nicknames:o([...e.nicknames??[],...t.nicknames??[]]),labels:o([...e.labels??[],...t.labels??[]]),avatarUrl:e.avatarUrl||t.avatarUrl,birthday:e.birthday??t.birthday,updatedAt:Date.now()}}function d(e,t){let[a,n]=r(e)>=r(t)?[e,t]:[t,e];return{primary:a,secondary:n,merged:c(a,n)}}},55133:(e,t,a)=>{a.d(t,{_:()=>n});function n(e){return!!e?.providers?.length&&e.providers.some(e=>!!e.base_url?.trim())}},56630:(e,t,a)=>{a.d(t,{d:()=>d});var n=a(4208),r=a(91505),s=a(90773),l=a(61554),i=a(94927),o=a(55883),c=a(58113);function d({isLoading:e,isError:t,error:a,onRetry:u,className:m}){var p;return e?(0,n.jsxs)("div",{className:(0,c.cn)("flex items-center justify-center gap-2 py-12 text-sm",o.YS,m),children:[(0,n.jsx)(r.A,{className:"h-4 w-4 animate-spin"}),"Chargement des contacts…"]}):t?(0,n.jsxs)("div",{className:(0,c.cn)("flex flex-col items-center gap-3 px-6 py-12 text-center",m),children:[(0,n.jsx)("p",{className:(0,c.cn)("text-sm",o.YS),children:(p=a)instanceof i.UQ?"contacts_unavailable"===p.code?"Connexion au carnet d'adresses indisponible. R\xe9essayez dans quelques secondes.":"auth.unavailable"===p.code?"Service d'authentification indisponible. V\xe9rifiez que le backend est d\xe9marr\xe9.":p.message:p instanceof Error?p.message:"Impossible de charger les contacts."}),(0,n.jsxs)(l.$,{type:"button",variant:"outline",size:"sm",className:"rounded-full",onClick:u,children:[(0,n.jsx)(s.A,{className:"mr-1.5 h-4 w-4"}),"R\xe9essayer"]})]}):null}},56747:(e,t,a)=>{a.d(t,{u:()=>p});var n=a(4208),r=a(91356),s=a(5312),l=a(12551),i=a(13746),o=a(35724),c=a(55883),d=a(58113);let u=["first_name","last_name","full_name","company","department","job_title","emails","phones","addresses","website","social_profiles","notes"];function m(e){let t=u.indexOf(e);return -1===t?999:t}function p({items:e,denseGrid:t=!1,editable:a=!1,dismissible:u=!1,onRemove:f,onValueChange:h,className:g}){let[x,b]=(0,r.useState)(null),[v,y]=(0,r.useState)(""),j=(0,r.useMemo)(()=>(function(e,t=!1){let a=new Map,n=new Map;for(let t of e){if(t.removed)continue;let e=n.get(t.fieldKey)??new Set,r=function(e,t){let a=t.trim();if("emails"===e)return`emails:${a.toLowerCase()}`;if("phones"===e){let e=a.replace(/\D/g,"");return e.length>=6?`phones:${e}`:`phones:${a.toLowerCase()}`}return"addresses"===e?`addresses:${a.toLowerCase()}`:`${e}:${a.toLowerCase()}`}(t.fieldKey,t.value);if(e.has(r))continue;e.add(r),n.set(t.fieldKey,e);let s=a.get(t.fieldKey)??[];s.push(t),a.set(t.fieldKey,s)}let r=e=>({fieldKey:e,label:o.XY[e]??e,items:a.get(e)??[]}),s=[...a.keys()].sort((e,t)=>m(e)-m(t)||e.localeCompare(t,"fr"));if(!t)return s.map(r);let l=[],i=[];for(let e of s){let t=r(e);t.items.length>2?i.push(t):l.push(t)}return[...l,...i]})(e,t),[e,t]);if(0===j.length)return null;function w(e){let t=v.trim();t?h?.(e,t):f?.(e),b(null)}return(0,n.jsx)("div",{className:(0,d.cn)("mt-3",t?"grid grid-cols-1 gap-x-3 gap-y-2 md:grid-cols-2 xl:grid-cols-3":"space-y-2.5",g),children:j.map(e=>(0,n.jsxs)("div",{className:(0,d.cn)(t&&c.au,t&&e.items.length>2&&"md:col-span-2 xl:col-span-3"),children:[(0,n.jsx)("p",{className:(0,d.cn)("mb-0.5 text-[11px] font-medium",c.YS),children:e.label}),(0,n.jsx)("div",{className:"flex flex-wrap gap-1",children:e.items.map(t=>{var r;let o,d=(r=e.label,(o=t.value.trim())?`${r} : ${o}`:r);return x===t.id?(0,n.jsx)(i.p,{value:v,onChange:e=>y(e.target.value),onKeyDown:e=>{"Enter"===e.key&&w(t.id),"Escape"===e.key&&b(null)},onBlur:()=>w(t.id),className:"h-7 min-w-40 max-w-full flex-1 rounded-full px-3 text-xs","aria-label":`Modifier ${d}`,autoFocus:!0},t.id):(0,n.jsxs)("span",{className:c.Pq,title:d,children:[(0,n.jsx)("span",{className:"min-w-0 truncate","aria-label":d,children:t.value}),a&&(0,n.jsx)("button",{type:"button",onClick:()=>{b(t.id),y(t.value)},className:"rounded-full p-0.5 text-muted-foreground hover:bg-accent hover:text-foreground","aria-label":`Modifier ${d}`,children:(0,n.jsx)(s.A,{className:"h-3 w-3"})}),(a||u)&&(0,n.jsx)("button",{type:"button",onClick:()=>f?.(t.id),className:"rounded-full p-0.5 text-muted-foreground hover:bg-accent hover:text-foreground","aria-label":`Retirer ${d}`,children:(0,n.jsx)(l.A,{className:"h-3 w-3"})})]},t.id)})})]},e.fieldKey))})}},57669:(e,t,a)=>{a.d(t,{w:()=>r});var n=a(3913);function r(e,t){return(0,n.DU)(e,t)}},62228:(e,t,a)=>{function n(e){return e.trim().toLowerCase()}function r(e,t){let a=n(t);if(a)return e.find(e=>e.emails.some(e=>n(e.value)===a))}function s(e){let t=e.trim();if(!t)return{firstName:"",lastName:""};let a=t.indexOf(" ");return -1===a?{firstName:t,lastName:""}:{firstName:t.slice(0,a),lastName:t.slice(a+1).trim()}}a.d(t,{VT:()=>s,VY:()=>r,e0:()=>n})},78699:(e,t,a)=>{a.d(t,{Y:()=>i});var n=a(46298),r=a(22029),s=a(91025),l=a(97053);let i=(0,n.v)()((0,r.Zr)(e=>({deletedContacts:[],ignoredMergePairs:[],panelOpen:!1,view:"list",activeContactId:null,searchQuery:"",searchMode:!1,createDraft:null,togglePanel:()=>e(e=>e.panelOpen?{panelOpen:!1,view:"list",activeContactId:null,searchQuery:"",searchMode:!1,createDraft:null}:{panelOpen:!0}),openPanel:()=>e({panelOpen:!0}),closePanel:()=>e({panelOpen:!1,view:"list",activeContactId:null,searchQuery:"",searchMode:!1,createDraft:null}),openContactDetail:t=>e({panelOpen:!0,view:"view",activeContactId:t,searchQuery:"",searchMode:!1,createDraft:null}),openCreateContact:(t=null)=>e({panelOpen:!0,view:"create",activeContactId:null,searchQuery:"",searchMode:!1,createDraft:t}),clearCreateDraft:()=>e({createDraft:null}),setView:(t,a=null)=>e({view:t,activeContactId:a,createDraft:null}),showContactsList:()=>e({view:"list",activeContactId:null,searchQuery:"",searchMode:!1,createDraft:null}),setSearchQuery:t=>e({searchQuery:t}),setSearchMode:t=>e(t?{searchMode:t}:{searchMode:t,searchQuery:""}),softDeleteContact:(t,a="Supprim\xe9 manuellement")=>e(e=>({deletedContacts:[...e.deletedContacts,{contact:t,deletedAt:Date.now(),reason:a}],activeContactId:e.activeContactId===t.id?null:e.activeContactId,view:e.activeContactId===t.id?"list":e.view})),restoreContact:t=>e(e=>e.deletedContacts.find(e=>e.contact.id===t)?{deletedContacts:e.deletedContacts.filter(e=>e.contact.id!==t)}:e),emptyTrash:()=>e({deletedContacts:[]}),ignoreMergePair:(t,a)=>e(e=>{let n=(0,l.kG)(t,a);return e.ignoredMergePairs.includes(n)?e:{ignoredMergePairs:[...e.ignoredMergePairs,n]}})}),{name:"contacts-store",storage:s.$,partialize:e=>({deletedContacts:e.deletedContacts,ignoredMergePairs:e.ignoredMergePairs})}))},80964:(e,t,a)=>{a.d(t,{L:()=>c});var n=a(4208),r=a(58113),s=a(36042),l=a(55883),i=a(30273);let o=(0,s.w)("/contacts-mark.svg");function c({onClick:e,className:t,titleClassName:a=l.zA,markClassName:s=i.wQ}){return(0,n.jsxs)("button",{type:"button",onClick:e,className:(0,r.cn)(i.pi,"min-w-0 rounded-full px-1 py-0.5 text-left transition-colors hover:bg-accent",t),"aria-label":"Liste des contacts",children:[(0,n.jsx)("img",{src:o,alt:"",className:(0,r.cn)("shrink-0 object-contain",s),draggable:!1,"aria-hidden":!0}),(0,n.jsx)("span",{className:a,children:"Contacts"})]})}},83984:(e,t,a)=>{a.d(t,{q:()=>c});var n=a(4208),r=a(98565),s=a(97150),l=a(22054),i=a(58113);let o={xs:{className:"size-8",gravatar:64,text:"text-xs"},sm:{className:"size-10",gravatar:80,text:"text-sm"},md:{className:"size-14",gravatar:112,text:"text-lg"},lg:{className:"size-20",gravatar:160,text:"text-2xl"},xl:{className:"size-24",gravatar:192,text:"text-3xl"},"2xl":{className:"size-28",gravatar:224,text:"text-4xl"}};function c({contact:e,name:t,email:a,avatarUrl:d,size:u="sm",className:m,alt:p}){let f=o[u],h=function(e,t,a){if(t?.trim())return t.trim();if(e){let t=`${e.firstName??""} ${e.lastName??""}`.trim();if(t)return t}return a?.trim()||(0,s.J_)(e??{})||"?"}(e,t,a),g=a?.trim()||(0,s.J_)(e??{}),x=d??e?.avatarUrl,b=g?(0,s.yR)(g,f.gravatar):void 0,v=(0,l.w7)(h),y=(0,l.V7)(h);return(0,n.jsxs)(r.eu,{className:(0,i.cn)("shrink-0",f.className,m),children:[x?(0,n.jsx)(r.BK,{src:x,alt:p??h}):null,b?(0,n.jsx)(r.BK,{src:b,alt:p??h}):null,(0,n.jsx)(r.q5,{className:(0,i.cn)("font-medium text-white",f.text),style:{backgroundColor:y},children:v})]})}},84398:(e,t,a)=>{a.d(t,{C:()=>i,j:()=>o});var n=a(46298),r=a(22029),s=a(62228),l=a(91025);function i(e,t){let a=(0,s.e0)(t);return!!a&&e.includes(a)}let o=(0,n.v)()((0,r.Zr)((e,t)=>({blockedSenderEmails:[],blockSenders:a=>{let n=new Set(t().blockedSenderEmails);for(let e of a){let t=(0,s.e0)(e);t&&n.add(t)}e({blockedSenderEmails:[...n]})},unblockSender:t=>{let a=(0,s.e0)(t);a&&e(e=>({blockedSenderEmails:e.blockedSenderEmails.filter(e=>e!==a)}))}}),{name:"ultimail-blocked-senders",storage:l.$}))},88477:(e,t,a)=>{a.d(t,{_:()=>b});var n=a(4208),r=a(91356),s=a(35855),l=a.n(s),i=a(89032),o=a(84834),c=a(91442),d=a(48843),u=a(10841),m=a(79741),p=a(61554),f=a(6146),h=a(30273),g=a(58113);let x=(0,g.cn)("rounded-full",h.ax,"hover:text-accent-foreground");function b({className:e,settingsHref:t,onSettingsClick:a}){let[s,h]=(0,r.useState)(!1),v=(0,r.useRef)(null),y=(0,f.o)();return(0,r.useEffect)(()=>{"same"===sessionStorage.getItem("ulti_account_notice")&&(sessionStorage.removeItem("ulti_account_notice"),i.oR.message("Vous utilisez d\xe9j\xe0 ce compte Ulti."))},[]),(0,n.jsxs)("div",{className:(0,g.cn)("flex shrink-0 items-center gap-1",e),children:[(0,n.jsx)(p.$,{variant:"ghost",size:"icon",className:(0,g.cn)("hidden sm:inline-flex",x),"aria-label":"Aide",children:(0,n.jsx)(c.A,{className:"size-6 shrink-0","aria-hidden":!0})}),(0,n.jsx)(p.$,{variant:"ghost",size:"icon",className:x,"aria-label":"R\xe9glages",...t?{asChild:!0}:{onClick:a},children:t?(0,n.jsx)(l(),{href:t,children:(0,n.jsx)(o.In,{icon:"mdi:cog-outline",className:"size-6 shrink-0","aria-hidden":!0})}):(0,n.jsx)(o.In,{icon:"mdi:cog-outline",className:"size-6 shrink-0","aria-hidden":!0})}),(0,n.jsx)(m.L,{iconButtonClass:x,onOpen:()=>h(!1)}),(0,n.jsxs)("div",{className:"relative ml-2",ref:v,children:[(0,n.jsx)(p.$,{variant:"ghost",size:"icon-lg",className:"size-11 overflow-hidden rounded-full p-0","aria-label":`Compte : ${y?.email??"Utilisateur"}`,"aria-expanded":s,"aria-haspopup":"dialog",onClick:()=>{h(!s)},children:y?(0,n.jsx)(d.h,{account:{name:y.name,email:y.email,avatarUrl:y.avatarUrl},size:"md"}):(0,n.jsx)("span",{className:"flex size-10 items-center justify-center rounded-full bg-muted text-sm font-medium text-muted-foreground",children:"?"})}),(0,n.jsx)(u.s,{open:s,onOpenChange:h,containerRef:v})]})]})}},97053:(e,t,a)=>{a.d(t,{kG:()=>i,m6:()=>d});var n=a(7651),r=a(62228);function s(e,t){if(e===t)return 0;if(!e.length)return t.length;if(!t.length)return e.length;let a=e.length+1,n=t.length+1,r=Array.from({length:n},(e,t)=>t),s=Array(n);for(let l=1;l<a;l++){s[0]=l;for(let a=1;a<n;a++){let n=+(e[l-1]!==t[a-1]);s[a]=Math.min(r[a]+1,s[a-1]+1,r[a-1]+n)}[r,s]=[s,r]}return r[t.length]}function l(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9\s]/g," ").replace(/\s+/g," ").trim()}function i(e,t){return e<t?`${e}|${t}`:`${t}|${e}`}function o(e){return e.emails.map(e=>(0,r.e0)(e.value)).filter(Boolean)}function c(e){return e.phones.map(e=>e.value.replace(/\D/g,"")).filter(e=>e.length>=6)}function d(e,t=new Set,a=50){let r=[],u=new Set;for(let d=0;d<e.length;d++)for(let m=d+1;m<e.length;m++){let p=e[d],f=e[m],h=i(p.id,f.id);if(u.has(h)||t.has(h))continue;let g=function(e,t){let a=o(e),r=o(t);for(let e of a)if(r.includes(e))return"email";let i=c(e),d=c(t);for(let e of i)for(let t of d){if(e===t)return"phone";if(e.length>=6&&t.length>=6){let a=s(e,t),n=Math.max(e.length,t.length);if(a<=1||1-a/n>=.95)return"phone"}}let u=(0,n.t)(e),m=(0,n.t)(t);return u&&m&&function(e,t){let a=l(e),n=l(t);if(!a||!n)return!1;if(a===n)return!0;let r=Math.max(a.length,n.length);if(r<4)return!1;let i=s(a,n);return i<=2||1-i/r>=.88}(u,m)?"name":null}(p,f);if(g&&(u.add(h),r.push({contactA:p,contactB:f,reason:g}),r.length>=a))return r}return r}}}]); |