ultisuite-client/out/_next/static/chunks/7865-5a3514af68d09449.js
R3D347HR4Y d6d18f911b
Some checks failed
E2E / Playwright e2e (push) Has been cancelled
Lots of stuff and mobile app
2026-06-17 00:13:28 +02:00

1 line
30 KiB
JavaScript

"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7865],{3913:(e,a,t)=>{t.d(a,{$Y:()=>o,Be:()=>i,DU:()=>s,iW:()=>c});var l=t(7651);function o(e){return e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").trim()}function r(e,a){let t=o(e),l=o(a);if(!l||!t.includes(l))return 0;if(t===l)return 1;if(t.startsWith(l))return .95+.05*(l.length/t.length);for(let e of t.split(/[\s@._+-]+/))if(e&&e.startsWith(l))return .88+.07*(l.length/e.length);return .42+.28*(1-t.indexOf(l)/Math.max(t.length,1)*.35)+.22*(l.length/Math.max(t.length,1))}function n(e,a){let t=o(a).split(/\s+/).filter(Boolean);if(0===t.length)return 0;let l=0;for(let o of t){let t=0;for(let l of e)l&&(t=Math.max(t=Math.max(t,r(l,o)),r(l,a)));if(0===t)return 0;l+=t}return l/t.length}function i(e,a){return n([e.full_name,e.email,e.phone,e.org].filter(e=>!!e?.trim()),a)}function s(e,a){let t=a.trim();return t?e.map(e=>({contact:e,score:n([(0,l.t)(e),e.firstName,e.lastName,e.middleName,e.company,e.department,e.jobTitle,e.website,e.notes,...e.nicknames??[],...e.emails.map(e=>e.value),...e.phones.map(e=>e.value),...(e.addresses??[]).flatMap(e=>[e.street,e.city,e.region,e.postalCode,e.country])].filter(e=>!!e?.trim()),t)})).filter(e=>e.score>0).sort((e,a)=>{if(a.score!==e.score)return a.score-e.score;let t=(0,l.t)(e.contact)||e.contact.emails[0]?.value||"",o=(0,l.t)(a.contact)||a.contact.emails[0]?.value||"";return t.localeCompare(o,"fr")}).map(e=>e.contact):e}function c(e,a){let t=a.trim();return t?e.map(e=>({contact:e,score:i(e,t)})).filter(e=>e.score>0).sort((e,a)=>a.score!==e.score?a.score-e.score:e.contact.full_name.localeCompare(a.contact.full_name,"fr")).map(e=>e.contact):e}},7651:(e,a,t)=>{t.d(a,{t:()=>l});function l(e){return`${e.firstName} ${e.lastName}`.trim()}},13746:(e,a,t)=>{t.d(a,{p:()=>n});var l=t(4208),o=t(91356),r=t(58113);let n=o.forwardRef(function({className:e,type:a,...t},o){return(0,l.jsx)("input",{ref:o,type:a,"data-slot":"input",className:(0,r.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...t})});n.displayName="Input"},18166:(e,a,t)=>{t.d(a,{Cf:()=>m,Es:()=>p,HM:()=>c,L3:()=>b,c7:()=>d,lG:()=>i,rr:()=>f});var l=t(4208);t(91356);var o=t(79531),r=t(12551),n=t(58113);function i({...e}){return(0,l.jsx)(o.bL,{"data-slot":"dialog",...e})}function s({...e}){return(0,l.jsx)(o.ZL,{"data-slot":"dialog-portal",...e})}function c({...e}){return(0,l.jsx)(o.bm,{"data-slot":"dialog-close",...e})}function u({className:e,...a}){return(0,l.jsx)(o.hJ,{"data-slot":"dialog-overlay",className:(0,n.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...a})}function m({className:e,overlayClassName:a,children:t,showCloseButton:i=!0,...c}){return(0,l.jsxs)(s,{"data-slot":"dialog-portal",children:[(0,l.jsx)(u,{className:a}),(0,l.jsxs)(o.UC,{"data-slot":"dialog-content",className:(0,n.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",e),...c,children:[t,i&&(0,l.jsxs)(o.bm,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,l.jsx)(r.A,{}),(0,l.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function d({className:e,...a}){return(0,l.jsx)("div",{"data-slot":"dialog-header",className:(0,n.cn)("flex flex-col gap-2 text-center sm:text-left",e),...a})}function p({className:e,...a}){return(0,l.jsx)("div",{"data-slot":"dialog-footer",className:(0,n.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...a})}function b({className:e,...a}){return(0,l.jsx)(o.hE,{"data-slot":"dialog-title",className:(0,n.cn)("text-lg leading-none font-semibold",e),...a})}function f({className:e,...a}){return(0,l.jsx)(o.VY,{"data-slot":"dialog-description",className:(0,n.cn)("text-muted-foreground text-sm",e),...a})}},29491:(e,a,t)=>{t.d(a,{A7:()=>b,F4:()=>y,JH:()=>p,PN:()=>h,ZB:()=>f,yr:()=>v});var l=t(91356),o=t(98306),r=t(39927),n=t(3913),i=t(18747),s=t(62701),c=t(80578),u=t(36253),m=t(94927);function d(e){return Array.isArray(e)?e:e&&"object"==typeof e&&"address_books"in e?e.address_books??[]:[]}async function p(e){let a=e.replace(/^\/+/,"");if(u.n.getState().active){let t=u.n.getState().contacts.find(t=>t.path?.replace(/^\/+/,"")===a||t.uid===a||t.uid===e);if(t)return t}return m.uE.get(`/contacts/${a}`)}async function b(e){let a=1,t=[];for(;a<=100;){let l=await m.uE.get(`/contacts/books/${e}`,{page:String(a),page_size:String(500)}),o=Array.isArray(l)?l:l.contacts??[];if(t.push(...o),o.length<500)break;let r=Array.isArray(l)?void 0:l.pagination?.total;if(null!=r&&t.length>=r)break;a+=1}return t}function f(){let{data:e,isLoading:a,isError:t}=v();return(0,l.useMemo)(()=>{if(a||t)return;let l=d(e);return l[0]?.id??"contacts"},[e,a,t])}function h(e){let{ready:a,authenticated:t}=(0,i.v)(),l=(0,s.iL)(),r=(0,u.n)(e=>e.version),n=f(),m=e??n;return(0,o.I)({queryKey:l?[...c.E,"list",m,r]:["contacts",m],queryFn:()=>l&&m?u.n.getState().listContacts(m):b(m),enabled:l?a&&t&&!!m:!!m,staleTime:3e5,initialData:l&&m?()=>u.n.getState().listContacts(m):void 0})}function v(){let{ready:e,authenticated:a}=(0,i.v)(),t=(0,s.iL)(),l=(0,u.n)(e=>e.version);return(0,o.I)({queryKey:t?[...c.E,"books",l]:["contact-books"],queryFn:async()=>t?u.n.getState().listBooks():d(await m.uE.get("/contacts/books")),enabled:!t||e&&a,staleTime:6e5,initialData:t?()=>u.n.getState().listBooks():void 0})}function y(e){let a=(0,r.jE)(),t=(0,s.iL)(),l=(0,u.n)(e=>e.version);return(0,o.I)({queryKey:t?[...c.E,"search",e,l]:["contacts-search",e],queryFn:async()=>{if(t)return u.n.getState().searchContacts(e);try{let a=await m.uE.get("/contacts/search",{q:e}),t=Array.isArray(a)?a:a.contacts??[];return(0,n.iW)(t,e)}catch(t){if(t instanceof m.M_){let t=a.getQueriesData({queryKey:["contacts"]}),l=[];for(let[,e]of t)e&&l.push(...e);return(0,n.iW)(l,e)}throw t}},enabled:e.length>=2,staleTime:3e4,initialData:t?()=>u.n.getState().searchContacts(e):void 0})}},36253:(e,a,t)=>{let l;t.d(a,{n:()=>b});var o=t(46298),r=t(83233);let n=0;function i(e){return{id:`demo-contact-${String(++n).padStart(3,"0")}`,createdAt:1716e9,updatedAt:1716e9,...e}}let s=Array.from({length:14},(e,a)=>`/demo/contacts/avatars/avatar-${String(a+1).padStart(2,"0")}.jpg`),c=[i({firstName:"",lastName:"",phones:[{value:"+33 6 47 82 19 03",label:"mobile"}],emails:[],notes:"Num\xe9ro re\xe7u par SMS — identit\xe9 inconnue."}),i({firstName:"Atelier",lastName:"Nord",emails:[{value:"contact@atelier-nord.fr",label:"work"}],phones:[{value:"+33 1 76 54 32 10",label:"work"}],company:"Atelier Nord",website:"https://atelier-nord.fr",addresses:[{street:"18 rue de la Fonderie",city:"Lille",region:"Hauts-de-France",postalCode:"59000",country:"France",label:"Si\xe8ge"}]}),i({firstName:"Camille",lastName:"Visiteur",emails:[{value:"camille@demo.ulti",label:"work"},{value:"camille.visiteur@gmail.com",label:"personal"}],phones:[{value:"+33 6 12 00 45 78",label:"mobile"}],company:"Ultimail",department:"Produit",jobTitle:"Product Manager",nicknames:["Cam"],labels:["\xc9quipe","Favori"],birthday:{day:14,month:6,year:1991},notes:"Compte d\xe9mo — calendrier personnel et bo\xeete mail de d\xe9monstration.",addresses:[{street:"42 avenue Parmentier",city:"Paris",region:"\xcele-de-France",postalCode:"75011",country:"France",label:"home"}],socialProfiles:[{value:"https://linkedin.com/in/camille-visiteur",label:"LinkedIn"},{value:"https://x.com/camille_visiteur",label:"X"}],interactionCount:128}),i({firstName:"L\xe9a",lastName:"Fontaine",emails:[{value:"lea.fontaine@atelier-nord.fr",label:"work"},{value:"lea.fontaine.perso@gmail.com",label:"personal"}],phones:[{value:"+33 6 78 45 12 90",label:"mobile"},{value:"+33 1 76 54 32 11",label:"work"}],company:"Atelier Nord",department:"Produit",jobTitle:"Head of Product",nicknames:["L\xe9a F."],labels:["Client","Produit"],birthday:{day:3,month:11,year:1988},notes:"Organisatrice du stand-up et du comit\xe9 produit. Pr\xe9f\xe8re les CR dans UltiDrive.",addresses:[{street:"18 rue de la Fonderie",city:"Lille",region:"Hauts-de-France",postalCode:"59000",country:"France",label:"work"},{street:"7 quai de la Loire",city:"Paris",region:"\xcele-de-France",postalCode:"75019",country:"France",label:"home"}],socialProfiles:[{value:"https://linkedin.com/in/lea-fontaine",label:"LinkedIn"}],interactionCount:54}),i({firstName:"Marc",lastName:"Delcourt",emails:[{value:"marc@delcourt-conseil.com",label:"work"}],phones:[{value:"+33 6 55 88 22 41",label:"mobile"}],company:"Delcourt Conseil",jobTitle:"Consultant senior",department:"Transformation digitale",addresses:[{street:"3 place de la Bourse",city:"Bordeaux",region:"Nouvelle-Aquitaine",postalCode:"33000",country:"France",label:"work"}],interactionCount:19}),i({firstName:"Ana\xefs",lastName:"Rivet",emails:[{value:"anais.rivet@coop-numerique.org",label:"work"},{value:"anais.rivet@gmail.com",label:"personal"}],phones:[{value:"+33 6 33 77 44 12",label:"mobile"}],company:"Coop Num\xe9rique",department:"Communaut\xe9",jobTitle:"Community Lead",labels:["R\xe9seau"],addresses:[{street:"12 cours Julien",city:"Marseille",region:"Provence-Alpes-C\xf4te d'Azur",postalCode:"13006",country:"France",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/anais-rivet",label:"LinkedIn"},{value:"https://x.com/anais_rivet",label:"X"}],interactionCount:31}),i({firstName:"Sophie",lastName:"Morel",emails:[{value:"sophie@startup-io.fr",label:"work"}],phones:[{value:"+33 6 90 11 22 33",label:"mobile"},{value:"+33 1 84 88 12 00",label:"work"}],company:"Startup IO",jobTitle:"CEO",department:"Direction",nicknames:["Soph"],birthday:{day:22,month:4,year:1985},notes:"Rencontr\xe9e au salon VivaTech — int\xe9ress\xe9e par l'int\xe9gration webhooks.",addresses:[{street:"55 rue du Faubourg Saint-Honor\xe9",city:"Paris",region:"\xcele-de-France",postalCode:"75008",country:"France",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/sophie-morel",label:"LinkedIn"}],interactionCount:12}),i({firstName:"Amadou",lastName:"Diop",emails:[{value:"amadou.diop@outlook.com",label:"personal"}],phones:[{value:"+221 77 456 78 90",label:"mobile"}],company:"Dakar Startup Hub",jobTitle:"Program Manager",addresses:[{street:"15 Avenue Cheikh Anta Diop",city:"Dakar",region:"Dakar",postalCode:"18524",country:"S\xe9n\xe9gal",label:"work"}],isOtherContact:!0,interactionCount:7}),i({firstName:"H\xe9l\xe8ne",lastName:"Marchand",emails:[{value:"helene.marchand@lyon-tech.fr",label:"work"},{value:"helene.m@gmail.com",label:"personal"}],phones:[{value:"+33 6 44 55 66 77",label:"mobile"}],company:"Lyon Tech",department:"Ing\xe9nierie",jobTitle:"Lead Backend",nicknames:["H\xe9l\xe8ne M."],labels:["Tech","Partenaire"],birthday:{day:8,month:2,year:1990},addresses:[{street:"24 rue de la R\xe9publique",city:"Lyon",region:"Auvergne-Rh\xf4ne-Alpes",postalCode:"69002",country:"France",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/helene-marchand",label:"LinkedIn"}],interactionCount:38}),i({firstName:"Thomas",lastName:"Giraud",emails:[{value:"thomas.giraud@toulouse-data.fr",label:"work"}],phones:[{value:"+33 6 21 43 65 87",label:"mobile"}],company:"Toulouse Data",jobTitle:"Data Engineer",department:"Analytics",addresses:[{street:"8 all\xe9es Jean Jaur\xe8s",city:"Toulouse",region:"Occitanie",postalCode:"31000",country:"France",label:"work"}],notes:"Sp\xe9cialiste pipelines ETL — contact pour le projet BI."}),i({firstName:"\xc9milie",lastName:"Rousseau",emails:[{value:"emilie.rousseau@gmail.com",label:"personal"}],phones:[{value:"+33 6 88 77 66 55",label:"mobile"}],nicknames:["Mimi"],birthday:{day:17,month:9,year:1993},labels:["Amis"],addresses:[{street:"14 rue Sainte-Catherine",city:"Bordeaux",region:"Nouvelle-Aquitaine",postalCode:"33000",country:"France",label:"home"}],interactionCount:22}),i({firstName:"Florian",lastName:"Meyer",emails:[{value:"florian.meyer@gmx.de",label:"personal"},{value:"f.meyer@berlin-dev.io",label:"work"}],phones:[{value:"+49 170 1234567",label:"mobile"}],company:"Berlin Dev",jobTitle:"DevOps Engineer",department:"Infrastructure",addresses:[{street:"Torstra\xdfe 102",city:"Berlin",region:"Berlin",postalCode:"10119",country:"Germany",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/florian-meyer",label:"LinkedIn"},{value:"https://x.com/florian_meyer",label:"X"}],interactionCount:15}),i({firstName:"Javier",lastName:"Mu\xf1oz",emails:[{value:"javier.munoz@gmail.com",label:"personal"}],phones:[{value:"+34 612 345 678",label:"mobile"}],company:"Telef\xf3nica",jobTitle:"Data Scientist",addresses:[{street:"Calle de Alcal\xe1 48",city:"Madrid",region:"Comunidad de Madrid",postalCode:"28014",country:"Spain",label:"work"}],labels:["Conf\xe9rence"],isOtherContact:!0}),i({firstName:"Chlo\xe9",lastName:"Tremblay",emails:[{value:"chloe.tremblay@ultimail.ca",label:"work"},{value:"chloe.t@gmail.com",label:"personal"}],phones:[{value:"+1 514 555 0198",label:"mobile"},{value:"+1 514 555 0100",label:"work"}],company:"Ultimail Canada",department:"Support",jobTitle:"Customer Success",nicknames:["Chlo"],birthday:{day:5,month:12,year:1994},addresses:[{street:"1010 Rue Sainte-Catherine Ouest",city:"Montr\xe9al",region:"Qu\xe9bec",postalCode:"H3B 1G1",country:"Canada",label:"work"},{street:"4525 Avenue du Parc",city:"Montr\xe9al",region:"Qu\xe9bec",postalCode:"H2V 4E7",country:"Canada",label:"home"}],socialProfiles:[{value:"https://linkedin.com/in/chloe-tremblay",label:"LinkedIn"}],interactionCount:41}),i({firstName:"Hana",lastName:"Yamamoto",emails:[{value:"hana.yamamoto@gmail.com",label:"personal"}],phones:[{value:"+81 90 1234 5678",label:"mobile"}],company:"Nippon Design Co.",jobTitle:"UX Researcher",addresses:[{street:"2-8-1 Nishi-Shinjuku",city:"Tokyo",region:"Tokyo",postalCode:"163-8001",country:"Japan",label:"work"}],notes:"Collaboration design system — fuseau UTC+9.",labels:["Design"]}),i({firstName:"Priya",lastName:"Sharma",emails:[{value:"priya.sharma@outlook.com",label:"personal"},{value:"priya@infosys-partner.in",label:"work"}],phones:[{value:"+91 98765 43210",label:"mobile"}],company:"Infosys",department:"Delivery",jobTitle:"Team Lead",addresses:[{street:"44 MG Road",city:"Bengaluru",region:"Karnataka",postalCode:"560001",country:"India",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/priya-sharma",label:"LinkedIn"}],interactionCount:26}),i({firstName:"Augustin",lastName:"Ferrand",emails:[{value:"augustin.ferrand@proton.me",label:"personal"}],phones:[],isOtherContact:!0,notes:"Ajout\xe9 automatiquement depuis un mail re\xe7u."}),i({firstName:"Nadia",lastName:"Haddad",emails:[{value:"nadia.haddad@gmail.com",label:"personal"}],phones:[{value:"+33 6 43 21 09 87",label:"mobile"}],company:"Mistral AI",jobTitle:"Research Engineer",department:"R&D",labels:["IA"],addresses:[{street:"15 rue des Halles",city:"Paris",region:"\xcele-de-France",postalCode:"75001",country:"France",label:"work"}],socialProfiles:[{value:"https://x.com/nadia_haddad",label:"X"}],interactionCount:9}),i({firstName:"Vincent",lastName:"Morel",emails:[{value:"vincent.morel@gmail.com",label:"personal"},{value:"vincent.morel@blablacar.com",label:"work"}],phones:[{value:"+33 6 65 78 90 12",label:"mobile"}],company:"BlaBlaCar",jobTitle:"VP Engineering",department:"Platform",nicknames:["Vince"],birthday:{day:12,month:4,year:1987},addresses:[{street:"84 avenue de la R\xe9publique",city:"Paris",region:"\xcele-de-France",postalCode:"75011",country:"France",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/vincent-morel",label:"LinkedIn"}],interactionCount:42}),i({firstName:"Fatou",lastName:"Sow",emails:[{value:"fatou.sow@orange.sn",label:"work"}],phones:[{value:"+221 70 123 45 67",label:"mobile"}],company:"Orange S\xe9n\xe9gal",jobTitle:"Account Manager",addresses:[{street:"Km 8 Route de Ouakam",city:"Dakar",region:"Dakar",postalCode:"18524",country:"S\xe9n\xe9gal",label:"work"}],labels:["Partenaire"],interactionCount:14}),i({firstName:"Lucie",lastName:"Simon",emails:[{value:"lucie.simon@proton.me",label:"personal"}],phones:[{value:"+33 6 67 89 01 23",label:"mobile"}],nicknames:["Lu"],birthday:{day:28,month:2,year:1997},labels:["Famille"],addresses:[{street:"6 place du Capitole",city:"Toulouse",region:"Occitanie",postalCode:"31000",country:"France",label:"home"}]}),i({firstName:"Kevin",lastName:"Park",emails:[{value:"kevin.park@gmail.com",label:"personal"}],phones:[{value:"+82 10 1234 5678",label:"mobile"}],company:"Samsung",jobTitle:"Frontend Engineer",department:"Mobile",addresses:[{street:"129 Samsung-ro",city:"Suwon",region:"Gyeonggi",postalCode:"16677",country:"South Korea",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/kevin-park",label:"LinkedIn"}]}),i({firstName:"Manon",lastName:"Leroy",emails:[{value:"manon.leroy@outlook.fr",label:"personal"},{value:"manon.leroy@ovhcloud.com",label:"work"}],phones:[{value:"+33 6 32 10 98 76",label:"mobile"}],company:"OVHcloud",jobTitle:"SRE",department:"Cloud Ops",notes:"Contact infra — escalade incidents P1.",addresses:[{street:"2 rue Kellermann",city:"Roubaix",region:"Hauts-de-France",postalCode:"59100",country:"France",label:"work"}],interactionCount:33}),i({firstName:"Rachid",lastName:"Ouali",emails:[{value:"rachid.ouali@yahoo.fr",label:"personal"}],phones:[{value:"+33 6 87 65 43 21",label:"mobile"}],company:"Freelance",jobTitle:"Photographe",addresses:[{street:"23 cours Mirabeau",city:"Aix-en-Provence",region:"Provence-Alpes-C\xf4te d'Azur",postalCode:"13100",country:"France",label:"home"}],labels:["Cr\xe9atif"]}),i({firstName:"Elena",lastName:"Kuznetsova",emails:[{value:"elena.kuznetsova@mail.ru",label:"personal"}],phones:[{value:"+7 916 123 45 67",label:"mobile"}],company:"Yandex",jobTitle:"ML Engineer",addresses:[{street:"16 Leo Tolstoy Street",city:"Moscow",region:"Moscow",postalCode:"119021",country:"Russia",label:"work"}],interactionCount:6}),i({firstName:"Youssef",lastName:"Alaoui",emails:[{value:"youssef.alaoui@outlook.com",label:"personal"},{value:"y.alaoui@ram.ma",label:"work"}],phones:[{value:"+212 6 45 67 89 01",label:"mobile"}],company:"Royal Air Maroc",jobTitle:"IT Manager",department:"Syst\xe8mes",addresses:[{street:"A\xe9roport Mohammed V",city:"Casablanca",region:"Casablanca-Settat",postalCode:"20000",country:"Morocco",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/youssef-alaoui",label:"LinkedIn"}],interactionCount:11}),i({firstName:"Charlotte",lastName:"Martin",emails:[{value:"charlotte.martin@gmail.com",label:"personal"}],phones:[{value:"+33 6 22 11 00 99",label:"mobile"}],birthday:{day:5,month:11,year:1995},nicknames:["Cha"],addresses:[{street:"9 rue de la R\xe9publique",city:"Lyon",region:"Auvergne-Rh\xf4ne-Alpes",postalCode:"69001",country:"France",label:"home"}],labels:["Amis"],interactionCount:18}),i({firstName:"Gabriel",lastName:"Santos",emails:[{value:"gabriel.santos@outlook.com",label:"personal"}],phones:[{value:"+55 11 98765 4321",label:"mobile"}],company:"Nubank",jobTitle:"Product Designer",addresses:[{street:"Rua Capote Valente 39",city:"S\xe3o Paulo",region:"SP",postalCode:"05409-000",country:"Brazil",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/gabriel-santos",label:"LinkedIn"},{value:"https://x.com/gabriel_santos",label:"X"}]}),i({firstName:"In\xe8s",lastName:"Belhadj",emails:[{value:"ines.belhadj@gmail.com",label:"personal"}],phones:[],company:"Doctolib",jobTitle:"iOS Developer",department:"Mobile",notes:"Ancienne coll\xe8gue — recommandation stage.",addresses:[{street:"54 quai de la Rap\xe9e",city:"Paris",region:"\xcele-de-France",postalCode:"75012",country:"France",label:"work"}]}),i({firstName:"William",lastName:"Hartmann",emails:[{value:"william.hartmann@gmx.de",label:"personal"}],phones:[{value:"+49 160 9876543",label:"mobile"}],company:"Bosch",jobTitle:"Embedded Engineer",addresses:[{street:"Robert-Bosch-Platz 1",city:"Stuttgart",region:"Baden-W\xfcrttemberg",postalCode:"70839",country:"Germany",label:"work"}],interactionCount:4}),i({firstName:"Sandra",lastName:"Oliveira",emails:[{value:"sandra.oliveira@outlook.com",label:"personal"}],phones:[{value:"+351 912 345 678",label:"mobile"}],company:"Farfetch",jobTitle:"QA Lead",addresses:[{street:"Rua do Ouro 240",city:"Lisbon",region:"Lisboa",postalCode:"1100-063",country:"Portugal",label:"work"}],labels:["QA"],birthday:{day:30,month:6,year:1990}}),i({firstName:"Mehdi",lastName:"Bouaziz",emails:[{value:"mehdi.bouaziz@outlook.com",label:"personal"}],phones:[{value:"+216 55 123 456",label:"mobile"}],company:"Sofrecom",jobTitle:"Architecte solutions",department:"Consulting",addresses:[{street:"Les Berges du Lac",city:"Tunis",region:"Tunis",postalCode:"1053",country:"Tunisia",label:"work"}],socialProfiles:[{value:"https://linkedin.com/in/mehdi-bouaziz",label:"LinkedIn"}],interactionCount:8})].sort((e,a)=>{let t=`${e.firstName} ${e.lastName}`.toLowerCase(),l=`${a.firstName} ${a.lastName}`.toLowerCase();return t.localeCompare(l)}),u=(l=0,c.map((e,a)=>{if(a%5>=2)return e;let t=s[l%s.length];return l+=1,{...e,avatarUrl:t}}));var m=t(3913);let d="contacts";function p(e){let a=(0,r.h0)(e);return{uid:e.id,full_name:a.full_name??"Contact",email:a.email,phone:a.phone,org:a.org,path:`books/${d}/${e.id}.vcf`,etag:`"demo-${e.id}"`,raw_vcard:a.raw_vcard}}let b=(0,o.v)((e,a)=>({active:!1,contacts:[],version:0,reset:()=>e({active:!0,contacts:u.map(p),version:a().version+1}),bump:()=>e({version:a().version+1}),listBooks:()=>[{id:d,name:"Contacts"}],listContacts:e=>e!==d?[]:a().contacts,searchContacts:e=>(0,m.iW)(a().contacts,e),createContact:(a,t)=>{let l=t.uid??`demo-contact-${crypto.randomUUID().slice(0,8)}`,o={uid:l,full_name:t.full_name??"Contact",email:t.email,phone:t.phone,org:t.org,path:`books/${a}/${l}.vcf`,etag:`"demo-${l}"`,raw_vcard:t.raw_vcard};return e(e=>({contacts:[...e.contacts,o],version:e.version+1})),o},updateContact:(a,t)=>{e(e=>({contacts:e.contacts.map(e=>e.path===a||e.uid===a?{...e,...t,path:e.path,uid:e.uid,etag:`"demo-${e.uid}-v2"`}:e),version:e.version+1}))},deleteContact:a=>{e(e=>({contacts:e.contacts.filter(e=>e.path!==a&&e.uid!==a),version:e.version+1}))}}))},62701:(e,a,t)=>{t.d(a,{c6:()=>s,iL:()=>c,sm:()=>i});var l=t(4208),o=t(91356),r=t(89032);let n=(0,o.createContext)(null);function i({children:e,onReset:a}){let t=(0,o.useCallback)(e=>{r.oR.message(e,{description:"Mode d\xe9mo : rien n'est envoy\xe9 ni conserv\xe9."})},[]),s=(0,o.useCallback)(()=>{a(),t("D\xe9mo r\xe9initialis\xe9e")},[t,a]),c=(0,o.useMemo)(()=>({enabled:!0,routeRoot:"demo/contacts",reset:s,notify:t}),[s,t]);return(0,l.jsx)(n.Provider,{value:c,children:e})}function s(){return(0,o.useContext)(n)}function c(){return s()?.enabled??!1}},80578:(e,a,t)=>{t.d(a,{E:()=>i,V:()=>s});var l=t(91356),o=t(39927),r=t(36253),n=t(49677);let i=["demo","contacts"];function s(){let e=(0,o.jE)();return(0,l.useLayoutEffect)(()=>(n.w.getState().clear(),r.n.getState().reset(),e.removeQueries({queryKey:i}),()=>r.n.setState({active:!1,contacts:[]})),[e]),null}},83233:(e,a,t)=>{t.d(a,{SG:()=>s,_l:()=>b,h0:()=>u,hZ:()=>c});var l=t(97150);let o={travail:"WORK",work:"WORK",domicile:"HOME",home:"HOME",mobile:"CELL",cell:"CELL",autre:"OTHER",other:"OTHER",internet:"INTERNET",personal:"HOME"};function r(e){return e.replace(/\\/g,"\\\\").replace(/;/g,"\\;").replace(/,/g,"\\,").replace(/\r?\n/g,"\\n")}function n(e){return o[e.trim().toLowerCase()]??"OTHER"}function i(e){if(e.length<=75)return e;let a=[e.slice(0,75)],t=e.slice(75);for(;t.length>0;)a.push(` ${t.slice(0,74)}`),t=t.slice(74);return a.join("\r\n")}function s(e){let a=["BEGIN:VCARD","VERSION:3.0"],t=e.id?.trim();t&&a.push(`UID:${r(t)}`);let o=`${e.firstName} ${e.lastName}`.trim();for(let t of(a.push(`N:${r(e.lastName)};${r(e.firstName)};;;`),a.push(`FN:${r(o||e.emails[0]?.value||"Contact")}`),e.emails)){let e=t.value?.trim();if(!e)continue;let l=n(t.label);a.push(`EMAIL;TYPE=${l}:${r(e)}`)}for(let t of e.phones){let e=t.value?.trim();if(!e)continue;let l=n(t.label);a.push(`TEL;TYPE=${l}:${r(e)}`)}if(e.company?.trim()||e.department?.trim()){let t=[e.company?.trim()??"",e.department?.trim()??""];a.push(`ORG:${t.map(r).join(";")}`)}for(let t of(e.jobTitle?.trim()&&a.push(`TITLE:${r(e.jobTitle.trim())}`),e.website?.trim()&&a.push(`URL:${r(e.website.trim())}`),e.socialProfiles??[])){let e=t.value?.trim();if(!e)continue;let l=function(e){let a=e.trim().toLowerCase();return"x"===a?"twitter":a||"other"}(t.label);a.push(`X-SOCIALPROFILE;TYPE=${l}:${r(e)}`)}for(let t of e.addresses??[]){if(!(t.street?.trim()||t.city?.trim()||t.region?.trim()||t.postalCode?.trim()||t.country?.trim()))continue;let e=n(t.label),l=["","",t.street?.trim()??"",t.city?.trim()??"",t.region?.trim()??"",t.postalCode?.trim()??"",t.country?.trim()??""].map(r).join(";");a.push(`ADR;TYPE=${e}:${l}`)}e.notes?.trim()&&a.push(`NOTE:${r(e.notes.trim())}`),e.labels?.length&&a.push(`X-ULTI-LABELS:${e.labels.map(r).join(",")}`);let s=(0,l.uh)(e.avatarUrl,r);return s&&a.push(s),a.push("END:VCARD"),a.map(i).join("\r\n")}function c(e){let a,t=e.raw_vcard?function(e){let a={emails:[],phones:[],addresses:[],socialProfiles:[]},t=[];for(let a of e.split(/\r?\n/))/^\s/.test(a)&&t.length>0?t[t.length-1]+=a.trimStart():t.push(a);for(let e of t){let t=e.indexOf(":");if(-1===t)continue;let o=e.slice(0,t),r=e.slice(t+1).trim();if(!r)continue;let n=o.split(";"),i=n[0].toUpperCase(),s=n.slice(1).join(";").toUpperCase().match(/TYPE=([^;,]+)/i),c=s?.[1]?.toLowerCase()??"other";switch(i){case"FN":a.fn=r;break;case"EMAIL":a.emails.push({value:r,type:c});break;case"TEL":a.phones.push({value:r,type:c});break;case"ORG":a.org=r.split(";")[0];break;case"TITLE":a.title=r;break;case"BDAY":a.bday=r;break;case"NOTE":a.note=r;break;case"URL":a.url=r;break;case"X-SOCIALPROFILE":case"SOCIALPROFILE":a.socialProfiles.push({value:r,type:function(e){let a=e.trim().toLowerCase();return"x"===a?"twitter":a||"other"}(c)});break;case"NICKNAME":a.nickname=r;break;case"ADR":{let e=r.split(";");a.addresses.push({street:e[2]||void 0,city:e[3]||void 0,region:e[4]||void 0,postalCode:e[5]||void 0,country:e[6]||void 0,type:c});break}case"X-ULTI-LABELS":a.ultiLabels=r.split(",").map(e=>e.trim()).filter(Boolean);break;case"PHOTO":a.photo=(0,l._c)(o,r)??a.photo}}return a}(e.raw_vcard):null,{firstName:o,lastName:r}=(a=(t?.fn??e.full_name??"").trim().split(/\s+/)).length<=1?{firstName:a[0]??"",lastName:""}:{firstName:a[0],lastName:a.slice(1).join(" ")},n=t?.emails.length?t.emails.map(e=>({value:e.value,label:e.type})):e.email?[{value:e.email,label:"personal"}]:[],i=t?.phones.length?t.phones.map(e=>({value:e.value,label:e.type})):e.phone?[{value:e.phone,label:"mobile"}]:[],s=t?.addresses.length?t.addresses.map(e=>({street:e.street,city:e.city,region:e.region,postalCode:e.postalCode,country:e.country,label:e.type})):void 0,c=t?.bday?function(e){let a=e.match(/^(\d{4})-?(\d{2})-?(\d{2})$/);if(a)return{year:Number(a[1]),month:Number(a[2]),day:Number(a[3])};let t=e.match(/^--(\d{2})-?(\d{2})$/);if(t)return{month:Number(t[1]),day:Number(t[2])}}(t.bday):void 0;return{id:e.uid,path:e.path,etag:e.etag,firstName:o,lastName:r,emails:n,phones:i,addresses:s,company:t?.org??e.org,jobTitle:t?.title,website:t?.url,socialProfiles:t?.socialProfiles.length?t.socialProfiles.map(e=>({value:e.value,label:e.type})):void 0,birthday:c,notes:t?.note,nicknames:t?.nickname?[t.nickname]:void 0,labels:t?.ultiLabels?.length?t.ultiLabels:void 0,avatarUrl:t?.photo,createdAt:Date.now(),updatedAt:Date.now()}}function u(e){let a=s(e),t=`${e.firstName} ${e.lastName}`.trim();return{uid:e.id,full_name:t||e.emails[0]?.value||"Contact",email:e.emails[0]?.value,phone:e.phones[0]?.value,org:e.company,raw_vcard:a}}function m(e){let a=[];for(let t of e.split(/\r?\n/))/^\s/.test(t)&&a.length>0?a[a.length-1]+=t.trimStart():a.push(t);return a}function d(e,a,t){let l=a.toUpperCase(),o=e.filter(e=>(e.split(":")[0]?.split(";")[0]?.toUpperCase()??"")!==l);if(!t)return o;let r=o.findIndex(e=>"END:VCARD"===e.toUpperCase()),n=r>=0?r:o.length;return o.splice(n,0,t),o}function p(e){for(let a of m(e)){if(!a.toUpperCase().startsWith("ORG:"))continue;let e=a.slice(a.indexOf(":")+1).split(";");return{company:(e[0]??"").replace(/\\;/g,";").replace(/\\\\/g,"\\"),department:(e[1]??"").replace(/\\;/g,";").replace(/\\\\/g,"\\")}}return{company:"",department:""}}function b(e,a,t){var o,n;let s=u(a),c=e?.raw_vcard?.trim();if(c&&t?.bulkField!==void 0){let e=function(e,a,t,l){let o=l.trim(),n=m(e);switch(t){case"company":{let t=p(e),l=a.department?.trim()??t.department;n=d(n,"ORG",o||l?`ORG:${r(o)};${r(l)}`:null);break}case"department":{let t=p(e),l=a.company?.trim()??t.company;n=d(n,"ORG",l||o?`ORG:${r(l)};${r(o)}`:null);break}case"jobTitle":n=d(n,"TITLE",o?`TITLE:${r(o)}`:null);break;case"website":n=d(n,"URL",o?`URL:${r(o)}`:null);break;case"notes":n=d(n,"NOTE",o?`NOTE:${r(o)}`:null)}return n.map(i).join("\r\n")}(c,a,t.bulkField,t.bulkValue??"");return{...s,raw_vcard:e}}if(c&&t?.patchLabels)return{...s,raw_vcard:(o=a.labels,d(m(c),"X-ULTI-LABELS",o?.length?`X-ULTI-LABELS:${o.map(r).join(",")}`:null).map(i).join("\r\n"))};if(c){let e=(n=a.avatarUrl,d(m(c),"PHOTO",(0,l.uh)(n,r)).map(i).join("\r\n"));return{...s,raw_vcard:e}}return s}}}]);