PageSourceSearch

https://phoneo.fr/_next/static/chunks/79608-724f750dd4fe0162.js

js phoneo.fr collected 2026-10-08 19:59:57 UTC 17,466 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[62890,79608],{5883:(e,t,r)=>{r.d(t,{A:()=>s});var n=r(95155),i=r(12115);let l={"01":"Ain","02":"Aisne","03":"Allier","04":"Alpes-de-Haute-Provence","05":"Hautes-Alpes","06":"Alpes-Maritimes","07":"Ard\xe8che","08":"Ardennes","09":"Ari\xe8ge",10:"Aube",11:"Aude",12:"Aveyron",13:"Bouches-du-Rh\xf4ne",14:"Calvados",15:"Cantal",16:"Charente",17:"Charente-Maritime",18:"Cher",19:"Corr\xe8ze","2A":"Corse-du-Sud","2B":"Haute-Corse",21:"C\xf4te-d'Or",22:"C\xf4tes-d'Armor",23:"Creuse",24:"Dordogne",25:"Doubs",26:"Dr\xf4me",27:"Eure",28:"Eure-et-Loir",29:"Finist\xe8re",30:"Gard",31:"Haute-Garonne",32:"Gers",33:"Gironde",34:"H\xe9rault",35:"Ille-et-Vilaine",36:"Indre",37:"Indre-et-Loire",38:"Is\xe8re",39:"Jura",40:"Landes",41:"Loir-et-Cher",42:"Loire",43:"Haute-Loire",44:"Loire-Atlantique",45:"Loiret",46:"Lot",47:"Lot-et-Garonne",48:"Loz\xe8re",49:"Maine-et-Loire",50:"Manche",51:"Marne",52:"Haute-Marne",53:"Mayenne",54:"Meurthe-et-Moselle",55:"Meuse",56:"Morbihan",57:"Moselle",58:"Ni\xe8vre",59:"Nord",60:"Oise",61:"Orne",62:"Pas-de-Calais",63:"Puy-de-D\xf4me",64:"Pyr\xe9n\xe9es-Atlantiques",65:"Hautes-Pyr\xe9n\xe9es",66:"Pyr\xe9n\xe9es-Orientales",67:"Bas-Rhin",68:"Haut-Rhin",69:"Rh\xf4ne",70:"Haute-Sa\xf4ne",71:"Sa\xf4ne-et-Loire",72:"Sarthe",73:"Savoie",74:"Haute-Savoie",75:"Paris",76:"Seine-Maritime",77:"Seine-et-Marne",78:"Yvelines",79:"Deux-S\xe8vres",80:"Somme",81:"Tarn",82:"Tarn-et-Garonne",83:"Var",84:"Vaucluse",85:"Vend\xe9e",86:"Vienne",87:"Haute-Vienne",88:"Vosges",89:"Yonne",90:"Territoire de Belfort",91:"Essonne",92:"Hauts-de-Seine",93:"Seine-Saint-Denis",94:"Val-de-Marne",95:"Val-d'Oise",971:"Guadeloupe",972:"Martinique",973:"Guyane",974:"La R\xe9union",975:"Saint-Pierre-et-Miquelon",976:"Mayotte",977:"Saint-Barth\xe9lemy",978:"Saint-Martin",986:"Wallis-et-Futuna",987:"Polyn\xe9sie fran\xe7aise",988:"Nouvelle-Cal\xe9donie"};function a(e){return"2A"===e?20:"2B"===e?20.5:Number(e)}var o=r(6681);function s(e){let{cities:t,lines:r,withPartners:s=!0,grouped:u=!0,foldLabel:c,renderCity:p,renderPoint:d}=e,f=(0,o.X)(r,s),m=[...t.map(e=>({kind:"city",city:e})),...f.map(e=>({kind:"point",point:e}))],h=e=>"city"===e.kind?(0,n.jsx)(i.Fragment,{children:p(e.city)},`city-${e.city.name}`):(0,n.jsx)(i.Fragment,{children:d(e.point)},`point-${e.point.pointId}`),b=e=>(0,n.jsx)("div",{className:`grid grid-cols-1 ${e.length>1?"sm:grid-cols-2":""} gap-3`,children:e.map(h)});if(void 0!==c&&0===m.length)return null;let v=e=>void 0===c?e:(0,n.jsxs)("details",{className:"mt-4",children:[(0,n.jsx)("summary",{className:"font-poppins text-[14px] text-[#596780] cursor-pointer py-3",children:c}),e]});if(!u)return v(b(m));let g=function(e,t){let r=new Map;for(let n of e){let{codePostal:e,name:i}=t(n),a=function(e){let t=(e??"").trim();if(!/^\d{5}$/.test(t))return null;let r=t.slice(0,2),n="20"===r?20200>Number(t)?"2A":"2B":"97"===r||"98"===r?t.slice(0,3):r;return Object.hasOwn(l,n)?n:null}(e),o=r.get(a);o?o.push({item:n,name:i}):r.set(a,[{item:n,name:i}])}return[...r.entries()].sort((e,t)=>{let[r]=e,[n]=t;return null===r?+(null!==n):null===n?-1:a(r)-a(n)}).map(e=>{let[t,r]=e;return{code:t,label:null!==t&&Object.hasOwn(l,t)?`${l[t]} (${t})`:"Autres boutiques",items:r.sort((e,t)=>e.name.localeCompare(t.name,"fr")).map(e=>e.item)}})}(m,e=>"city"===e.kind?{codePostal:e.city.postalCode,name:e.city.name}:{codePostal:e.point.codePostal,name:e.point.libelle});return v((0,n.jsx)("div",{className:"flex flex-col gap-6",children:g.map(e=>(0,n.jsxs)("div",{role:"group","aria-label":e.label,"data-departement":e.code??"autres",children:[(0,n.jsx)("h3",{className:"font-poppins font-semibold text-[#596780] text-[12px] uppercase tracking-[0.08em] mb-2.5",children:e.label}),b(e.items)]},e.code??"autres"))}))}},6681:(e,t,r)=>{r.d(t,{H:()=>c,X:()=>u});var n=r(95155),i=r(12115),l=r(90163),a=r(80156),o=r(61241);let s=[];function u(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],[r,n]=(0,i.useState)([]),l=(0,i.useMemo)(()=>(0,a.i4)(e),[e]),o=l.join(",");return(0,i.useEffect)(()=>{if(!t)return;let e=new AbortController;return(0,a.wJ)(l,e.signal).then(t=>{e.signal.aborted||n("ok"===t.kind?t.points:[])}),()=>e.abort()},[o,t]),t?r:s}function c(e){let{point:t,lines:r,deviceType:i,onPick:s}=e,u=(0,a.A4)(r).ok?(0,o.h)(r,i,t):null,c=u?(0,l.Ff)(u):null;return(0,n.jsxs)("button",{type:"button","data-club-point":t.pointId,onClick:()=>s(t),className:"group bg-white border border-[#c3d4e9] hover:border-coral rounded-[16px] p-4 sm:p-5 flex items-center gap-3.5 text-left transition-all cursor-pointer hover:shadow-[0_12px_28px_-12px_rgba(255,71,95,0.25)] min-h-[44px]",children:[(0,n.jsx)("div",{className:"w-11 h-11 flex-shrink-0 rounded-[12px] bg-gradient-to-br from-[#fff5f7] to-[#ffe3e8] flex items-center justify-center",children:(0,n.jsxs)("svg",{width:"19",height:"19",viewBox:"0 0 24 24",fill:"none",className:"text-coral","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1115 0z",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"}),(0,n.jsx)("circle",{cx:"12",cy:"10.5",r:"2.5",stroke:"currentColor",strokeWidth:"1.8"})]})}),(0,n.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,n.jsx)("p",{className:"font-poppins font-semibold text-dark text-[15px] leading-tight",children:t.libelle}),(0,n.jsx)("p",{className:"font-poppins text-[#90a3bf] text-[12px] mt-1 leading-[1.4]",children:(0,a.PD)(t)}),(0,n.jsx)("p",{className:"font-poppins text-[11.5px] mt-1 font-semibold text-mint leading-[1.3]",children:"Point partenaire du r\xe9seau Feexo"})]}),null!=c&&(0,n.jsx)("span",{className:"font-poppins font-bold text-dark text-[14px] whitespace-nowrap flex-shrink-0",children:(0,l.xr)(c)}),(0,n.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",className:"flex-shrink-0 text-[#c3d4e9] group-hover:text-coral group-hover:translate-x-[2px] transition-all","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M5 2l5 5-5 5",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})})]})}},32101:(e,t,r)=>{r.d(t,{Qe:()=>a,UD:()=>l,XW:()=>i,tc:()=>o});var n=r(60056);let i="Multi-r\xe9paration (2e prestation)",l=15,a="Remise commerciale";function o(e){let t=[];return e.offeredCasseTtc>.001&&t.push({label:"Casse - r\xe9paration offerte au client",amount_ttc:(0,n.X4)(e.offeredCasseTtc)}),e.savPhonilabTtc>.001&&t.push({label:"SAV historique ancien logiciel",amount_ttc:(0,n.X4)(e.savPhonilabTtc)}),(e.savGarantieTtc??0)>.001&&t.push({label:"SAV - r\xe9paration sous garantie",amount_ttc:(0,n.X4)(e.savGarantieTtc??0)}),!e.allOffered&&(e.paidRepairCount>=2&&e.multiRepairDiscount>0&&t.push({label:i,amount_ttc:(0,n.X4)(e.multiRepairDiscount)}),e.manualDiscount>0&&t.push({label:a,amount_ttc:(0,n.X4)(e.manualDiscount)})),t}},40513:(e,t,r)=>{r.d(t,{m:()=>n});let n=[{name:"Toulouse",address:"1 Rue Antoine Idrac, 31000",postalCode:"31000",href:"/rendez-vous",external:!1,native:!0}]},59250:(e,t,r)=>{r.d(t,{Bh:()=>l,Cz:()=>i});
1class n extends Error{constructor(){super("Supabase Auth configuration unavailable"),this.name="SupabaseAuthConfigurationError"}}function i(){let e="sb_publishable_-LkOsln8faS62wYZOW_rtQ_pWJ2rLlC".trim()??"";if(!e||e.length>4096)throw new n;return{url:function(){let e=function(){let e="https://pdukjmjrelfkulspvcft.supabase.co".trim()??"";if(!e)return null;try{let t=new URL(e);if(["localhost","127.0.0.1","::1"].includes(t.hostname),"https:"!==t.protocol||t.username||t.password||t.search||t.hash||"/"!==t.pathname&&""!==t.pathname)return null;return t}catch{return null}}();if(!e)throw new n;return e.origin}(),publishableKey:e}}let l={secure:!0}},61241:(e,t,r)=>{r.d(t,{h:()=>c});var n=r(15028),i=r(4955),l=r(40137),a=r(54810);function o(e){return(0,l.M)(e)?"film":(0,a.kd)(e)?"service":"repair"}var s=r(90163);function u(e){return Math.round(100*(0,n.X4)(e))}function c(e,t,r){let n=[],l=!1;for(let t of e){let e=t.fullPrice??t.clientPrice,i=r.qualireparParPrestation[t.id.toLowerCase()];if(t.surDevis||null==e||!(e>0)||"boolean"!=typeof i||o(t.label)!==t.kind)return null;i&&(l=!0),n.push({priceId:t.id,repairTypeId:t.repairTypeId,repairTypeName:t.label,basePrice:e})}let a=function(e,t){if(0===e.length)return{ok:!1,code:"prestation_non_reservable",reason:"prix_absent",priceId:null};let r=[],n=0;for(let l of e){let e,a,c="number"==typeof l.basePrice?l.basePrice:Number(l.basePrice);if(null==l.basePrice||!Number.isFinite(c))return{ok:!1,code:"prestation_non_reservable",reason:"prix_absent",priceId:l.priceId};if(c<=0)return{ok:!1,code:"prestation_non_reservable",reason:"prix_nul",priceId:l.priceId};let p=o(l.repairTypeName),d={price:c,old_price:null,is_promo:!1,repair_type_name:l.repairTypeName};if("repair"===p){let r=(0,s.nR)(d,n,t.deviceType,t.pointQualireparEnabled,t.multiRepairEnabled);n+=1,e=r.clientPrice,a=r.fullPrice}else e=(0,i.q)(d,t.deviceType,t.pointQualireparEnabled).clientPrice,a=null;r.push({priceId:l.priceId,repairTypeId:l.repairTypeId,label:l.repairTypeName,kind:p,priceCents:u(e),fullPriceCents:null==a?null:u(a)})}let l=r.reduce((e,t)=>e+t.priceCents,0);return l<=0?{ok:!1,code:"prestation_non_reservable",reason:"total_nul",priceId:null}:{ok:!0,lines:r,totalCents:l}}(n,{deviceType:t??null,pointQualireparEnabled:l,multiRepairEnabled:r.remiseMultiReparation});return a.ok?e.map((e,t)=>{let r=a.lines[t];return{...e,clientPrice:r.priceCents/100,fullPrice:null==r.fullPriceCents?null:r.fullPriceCents/100}}):null}},62890:(e,t,r)=>{r.d(t,{supabase:()=>l});var n=r(16010),i=r(59250);let l=(0,n.createBrowserClient)("https://pdukjmjrelfkulspvcft.supabase.co","sb_publishable_-LkOsln8faS62wYZOW_rtQ_pWJ2rLlC",{cookieOptions:i.Bh})},80156:(e,t,r)=>{r.d(t,{O9:()=>i,Pf:()=>n,A4:()=>a,Vm:()=>g,wJ:()=>u,VP:()=>y,Ln:()=>v,i4:()=>l,PD:()=>c,EY:()=>f});let n={sur_devis:"Une prestation sur devis ne se r\xe9serve pas en ligne dans cette boutique. Retirez-la de votre s\xe9lection pour r\xe9server ici.",trop_de_prestations:"Une r\xe9servation dans cette boutique porte sur trois prestations au plus. Retirez-en une pour r\xe9server ici."},i={point_indisponible:"Cette boutique n'est plus disponible pour le moment. Choisissez-en une autre.",prestation_non_reservable:"Une prestation de votre s\xe9lection ne peut pas \xeatre r\xe9serv\xe9e en ligne dans cette boutique. Choisissez une autre boutique.",creneau_indisponible:"Ce cr\xe9neau n'est plus disponible. Choisissez-en un autre.",trop_de_demandes:"Trop de demandes de rendez-vous. R\xe9essayez dans quelques minutes.",erreur:"La r\xe9servation n'a pas pu \xeatre enregistr\xe9e. R\xe9essayez dans un instant.",panne:"La r\xe9servation n'a pas pu \xeatre confirm\xe9e (connexion ou service momentan\xe9ment indisponible). R\xe9essayez : votre demande ne sera enregistr\xe9e qu'une seule fois."};function l(e){let t=0,r=0,n=[];for(let i of e)if(!i.surDevis&&null!=i.clientPrice){if("film"===i.kind){if(r>=1)continue;r+=1}else{if(t>=3)continue;t+=1}n.push(i.id)}return n}function a(e){if(e.some(e=>e.surDevis||null==e.clientPrice))return{ok:!1,reason:"sur_devis"};let t=e.map(e=>e.kind);return!function(e){let t=e.filter(e=>"film"===e).length;return t<=1&&e.length-t<=3}(t)?{ok:!1,reason:"trop_de_prestations"}:{ok:!0,priceIds:e.map(e=>e.id),diagnostic:t.every(e=>"film"===e)}}function o(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}let s=e=>"string"==typeof e&&e.trim()?e:null;async function u(e,t){try{var r;let n=0===e.length?"":`?prestations=${e.map(encodeURIComponent).join(",")}`,i=await fetch("/api/feexo-club/points/"+n,{signal:t});if(!i.ok)return{kind:"unavailable"};return{kind:"ok",points:(r=await i.json(),o(r)&&Array.isArray(r.points)?r.points.flatMap(t=>{let r=function(e,t){if(!o(e))return null;let{pointId:r,libelle:n,qualireparParPrestation:i,remiseMultiReparation:l}=e;if("number"!=typeof r||!Number.isInteger(r)||r<=0||"string"!=typeof n||!n.trim()||!o(i)||"boolean"!=typeof l)return null;let a={};for(let e of t){let t=i[e.toLowerCase()]??i[e];if("boolean"!=typeof t)return null;a[e.toLowerCase()]=t}return{pointId:r,libelle:n,adresse:s(e.adresse),codePostal:s(e.codePostal),ville:s(e.ville),qualireparParPrestation:a,remiseMultiReparation:l}}(t,e);return r?[r]:[]}):[])}}catch{return{kind:"unavailable"}}}
1function c(e){let t=[e.codePostal,e.ville].filter(Boolean).join(" ");return[e.adresse,t].filter(Boolean).join(", ")}let p=["point_indisponible","creneau_indisponible","deja_un_rdv","prestation_non_reservable","trop_de_demandes","donnees_invalides","delai_piece","erreur"],d=/^FX-[A-Za-z0-9]{4,12}$/;async function f(e){try{let t=await fetch("/api/feexo-club/book/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({intentId:e.intentId,pointId:e.pointId,prestations:e.priceIds,...e.diagnostic?{diagnostic:!0,marque:e.diagnostic.brandSlug,modele:e.diagnostic.modelSlug}:{},...e.form,confirmSecond:e.confirmSecond||void 0})}),r=null;try{r=await t.json()}catch{return{kind:"unreachable"}}return function(e,t){var r;if(!o(t))return{kind:"unreachable"};if(e>=200&&e<300){if(!0!==t.success)return{kind:"unreachable"};let e=function(e){var t;if("string"!=typeof e.reference||!d.test(e.reference)||"string"!=typeof e.date||"string"!=typeof e.time||!Array.isArray(e.prestations)||0===e.prestations.length||"number"!=typeof e.prixPromisTtcCents||!Number.isFinite(e.prixPromisTtcCents))return null;let r=[];for(let t of e.prestations){if(!o(t)||"string"!=typeof t.libelle)return null;r.push({libelle:t.libelle,prixTtcCents:"number"==typeof t.prixTtcCents?t.prixTtcCents:null})}return{reference:e.reference,date:e.date,time:e.time,prestations:r,prixPromisTtcCents:e.prixPromisTtcCents,diagnostic:!0===e.diagnostic,boutique:o(t=e.point)&&"string"==typeof t.nom&&t.nom.trim()?{nom:t.nom,adresse:s(t.adresse),codePostal:s(t.codePostal),ville:s(t.ville),telephone:s(t.telephone),ficheGoogle:s(t.ficheGoogle)}:null}}(t);return e?{kind:"success",confirmation:e}:{kind:"unreachable"}}if(e>=500)return{kind:"unreachable"};let n="string"==typeof t.code&&p.includes(t.code)?t.code:"erreur";return{kind:"refused",code:n,message:"string"==typeof t.error?t.error:"",existing:"deja_un_rdv"===n&&o(r=t.existing)&&"string"==typeof r.date&&"string"==typeof r.time?{date:r.date,time:r.time,model_name:"string"==typeof r.model_name?r.model_name:null}:null}}(t.status,r)}catch{return{kind:"unreachable"}}}let m="club-reservation-intention",h="club-reservation-intention-portee",b=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function v(e,t,r){let n=`${e}|${t.map(e=>e.toLowerCase()).join(",")}`;return r?`${n}|diagnostic:${r.brandSlug.toLowerCase()}/${r.modelSlug.toLowerCase()}`:n}function g(e){let t=null,r=null;try{t=window.sessionStorage.getItem(m),r=window.sessionStorage.getItem(h)}catch{t=null}if(t&&b.test(t)&&(void 0===e||r===e))return t;let n=function(){if("undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID)return crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=15&e[6]|64,e[8]=63&e[8]|128;let t=Array.from(e,e=>e.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}();try{window.sessionStorage.setItem(m,n),void 0===e?window.sessionStorage.removeItem(h):window.sessionStorage.setItem(h,e)}catch{}return n}function y(){try{window.sessionStorage.removeItem(m),window.sessionStorage.removeItem(h)}catch{return}}},90163:(e,t,r)=>{r.d(t,{FE:()=>d,Ff:()=>p,KE:()=>u,UD:()=>l.UD,_4:()=>s,bx:()=>o,nR:()=>a,xr:()=>c});var n=r(20467),i=r(79645),l=r(32101);function a(e,t,r){let n=!(arguments.length>3)||void 0===arguments[3]||arguments[3],a=!(arguments.length>4)||void 0===arguments[4]||arguments[4],o=(0,i.qN)(e,r,n);if(t>=1){let e=o.fullPrice??o.clientPrice;return a?{fullPrice:e,clientPrice:Math.max(0,e-l.UD),discount:l.UD,isMulti:!0,rank:t+1}:{fullPrice:null,clientPrice:e,discount:0,isMulti:!1,rank:t+1}}return{...o,isMulti:!1,rank:1}}function o(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],r=0;return e.map(e=>{if(!e.isRepair||0==r++||null==e.clientPrice)return e;let n=e.fullPrice??e.clientPrice;return{...e,clientPrice:t?Math.max(0,n-l.UD):n}})}function s(e){let{repairs:t,services:r,selectedRepairs:n,selectedServices:l,deviceType:o,showPrices:s}=e,u=[];for(let e of(n.forEach((e,r)=>{let n=t.find(t=>t.id===e);if(!n)return;let i=s&&n.price>0,l=i?a(n,r,o):null;u.push({id:n.id,repairTypeId:n.repair_type_id,label:n.repair_type_name,clientPrice:l?l.clientPrice:null,fullPrice:l?l.fullPrice:null,surDevis:!i,kind:"repair"})}),l)){let t=r.find(t=>
1t.id===e);if(!t)continue;let n=s&&t.price>0;u.push({id:t.id,repairTypeId:t.repair_type_id,label:t.repair_type_name,clientPrice:n?(0,i.qN)(t,o).clientPrice:null,fullPrice:null,surDevis:!n,kind:(0,i.Z0)(t.repair_type_name)?"film":"service"})}return u}function u(e,t){return t?e.filter(e=>(0,i.Z0)(e.repair_type_name)&&e.price>0).map(e=>({id:e.id,repairTypeId:e.repair_type_id,name:e.repair_type_name,price:e.price})):[]}function c(e){return(0,n.Q5)(e)}function p(e){return e.some(e=>e.surDevis)?null:Math.round(100*e.reduce((e,t)=>e+(t.clientPrice??0),0))/100}function d(e){if(0===e.length)return"Diagnostic gratuit";let t=e.map(e=>e.surDevis||null==e.clientPrice?`${e.label} (sur devis)`:`${e.label} (${(0,n.Q5)(e.clientPrice)})`),r=p(e),i=null!=r&&e.length>1?` \xb7 Total ${(0,n.Q5)(r)}`:"";return`${t.join(" + ")}${i}`.slice(0,480)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.