1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1582],{69403:function(e,a,t){t.d(a,{R:function(){return l},b:function(){return i}});var n=t(22573);let s=e=>(Array.isArray(e)?e:e?[e]:[]).filter(e=>Number.isFinite(e)&&e>0),i={toggleInstantMode:async()=>await n.request.post("/salon/instant-mode/toggle"),heartbeat:async()=>await n.request.post("/salon/instant-mode/heartbeat"),getStatus:async()=>await n.request.get("/salon/instant-mode/status"),respondToRequest:async(e,a,t)=>await n.request.post("/salon/instant-booking/".concat(e,"/respond"),{accepted:a,hair_dresser_id:t}),cancelRequest:async e=>await n.request.post("/salon/instant-booking/".concat(e,"/cancel")),markEnRoute:async(e,a,t)=>await n.request.post("/salon/instant-booking/".concat(e,"/en-route"),{lat:a,long:t}),updatePosition:async(e,a,t,s)=>{let i={lat:a,long:t};return void 0!==s&&(i.route_distance_km=s),await n.request.post("/salon/instant-booking/".concat(e,"/update-position"),i)},markArrived:async e=>await n.request.post("/salon/instant-booking/".concat(e,"/mark-arrived"))},l={getInstantSalons:async(e,a,t,s)=>{let i=new URLSearchParams({lat:String(e),long:String(a)});return t&&i.append("radius_km",String(t)),s&&i.append("mode",s),await n.request.get("/client/instant-salons?".concat(i.toString()))},getInstantHaircuts:async(e,a,t,s)=>{let i=new URLSearchParams({lat:String(e),long:String(a)});return t&&i.append("radius_km",String(t)),s&&i.append("mode",s),await n.request.get("/client/instant-haircuts?".concat(i.toString()))},getInstantItems:async(e,a,t,s,i)=>{let l=new URLSearchParams({lat:String(e),long:String(a)});return t&&l.append("radius_km",String(t)),s&&l.append("mode",s),i&&l.append("type",i),await n.request.get("/client/instant-items?".concat(l.toString()))},createRequest:async(e,a,t,i,l,r,o,u)=>{var d;return await n.request.post("/client/instant-booking/request",{haircut_id:null!=e?e:null,service_id:null!==(d=s(u)[0])&&void 0!==d?d:null,service_ids:s(u),lat:a,long:t,radius_km:i,mode:l||"salon",client_address:r,target_salon_id:o})},getRequestStatus:async e=>await n.request.get("/client/instant-booking/".concat(e,"/status")),cancelRequest:async e=>await n.request.post("/client/instant-booking/".concat(e,"/cancel")),getActiveRequest:async()=>await n.request.get("/client/instant-booking/active"),completeRequest:async e=>await n.request.post("/client/instant-booking/".concat(e,"/complete")),markEnRoute:async e=>await n.request.post("/client/instant-booking/".concat(e,"/en-route")),markArrived:async e=>await n.request.post("/client/instant-booking/".concat(e,"/mark-arrived")),updatePosition:async(e,a,t,s)=>{let i={lat:a,long:t};return void 0!==s&&(i.route_distance_km=s),await n.request.post("/client/instant-booking/".concat(e,"/update-position"),i)},chooseSalon:async(e,a)=>await n.request.post("/client/instant-booking/".concat(e,"/choose-salon"),{salon_i
1d:a}),createAtHomePayment:async(e,a)=>await n.request.post("/client/instant-booking/".concat(e,"/create-payment"),{payment_method_id:a}),confirmAtHomePayment:async e=>await n.request.post("/client/instant-booking/".concat(e,"/confirm-payment")),getSalonPosition:async e=>await n.request.get("/client/instant-booking/".concat(e,"/salon-position")),getClientConfig:async()=>await n.request.get("/client/instant-booking/client-config"),getSalonsForHaircut:async(e,a,t,i,l,r)=>{let o=new URLSearchParams({lat:String(a),long:String(t)});return s(r).forEach(e=>o.append("service_ids[]",String(e))),e&&o.append("haircut_id",String(e)),i&&o.append("radius_km",String(i)),l&&o.append("mode",l),await n.request.get("/client/instant-salons-for-haircut?".concat(o.toString()))},directBookSalon:async(e,a,t,i,l)=>{var r;return await n.request.post("/client/instant-booking/direct-book",{salon_id:e,haircut_id:null!=a?a:null,service_id:null!==(r=s(l)[0])&&void 0!==r?r:null,service_ids:s(l),lat:t,long:i})}}},18159:function(e,a,t){t.d(a,{FilterContextProvider:function(){return o},f:function(){return r}});var n=t(57437),s=t(2265),i=t(31017),l=t(92694);let r=(0,s.createContext)(null),o=e=>{let{children:a}
1=e,[t,o]=(0,s.useState)({gender:null,ethnicity:[],length:[],hairstyle:[],types:[],origin:""}),[u,d]=(0,s.useState)("#faf0be"),[c,v]=(0,s.useState)("#8b4513"),[g,m]=(0,s.useState)(null),[_,p]=(0,s.useState)(null),y=(0,s.useCallback)(e=>{o(a=>({...a,[e.key]:e.value,origin:e.key}))},[]),h=(0,s.useCallback)(()=>{o({gender:null,ethnicity:[],length:[],hairstyle:[],types:[],origin:""})},[]),b=(0,s.useCallback)(async()=>{let e=(0,l.C)();try{if(e){var a;let t=await i.s.salonConfiguration(e);m(t.data.result),p(null!==(a=t.data.bookable)&&void 0!==a?a:null)}}catch(e){}},[]),q=(0,s.useMemo)(()=>({filteredData:t,updateFilteredData:y,resetFilteredData:h,configData:g,setConfigData:m,bookability:_,fetchConfiguration:b,globalSelectedPrimaryColor:u,globalSelectedSecondaryColor:c,setSelectedPrimaryColor:d,setSelectedSecondaryColor:v}),[t,y,h,g,_,b,u,c,d,v]);return(0,n.jsx)(r.Provider,{value:q,children:a})}},31427:function(e,a,t){t.d(a,{InstantBookingProvider:function(){return o},o:function(){return u}});var n=t(57437),s=t(2265),i=t(69403),l=t(19648);let r=(0,s.createContext)(void 0),o=e=>{let{children:a}
1=e,[t,o]=(0,s.useState)({isOnline:!1,pendingRequests:[],availableHairdressers:0,activeBookings:[],recentlyCancelledBookings:[],hasPendingCancellations:!1}),[u,d]=(0,s.useState)({nearbySalonCount:0,nearbySalons:[],nearbyHaircuts:[],activeRequest:null,isSearching:!1}),[c,v]=(0,s.useState)("salon"),[g,m]=(0,s.useState)("address"),[_,p]=(0,s.useState)(!1),[y,h]=(0,s.useState)(null),b=(0,s.useRef)(null),q=(0,s.useRef)(null),k=(0,s.useRef)(null),S=(0,s.useRef)(new Set),f=(0,s.useCallback)(()=>{let{isAuthenticated:e,user:a}=(0,l.P)();return!!(e&&(null==a?void 0:a.hair_salon_id))},[]);(0,s.useEffect)(()=>((async()=>{if(f())try{var e;let a=await i.b.getStatus(),t=(null===(e=a.data)||void 0===e?void 0:e.data)||a.data;o(e=>{var a,n;return{...e,isOnline:null!==(a=null==t?void 0:t.is_online)&&void 0!==a&&a,pendingRequests:Array.isArray(null==t?void 0:t.pending_requests)?t.pending_requests:[],availableHairdressers:null!==(n=null==t?void 0:t.available_hairdressers)&&void 0!==n?n:0,activeBookings:Array.isArray(null==t?void 0:t.active_bookings)?t.active_bookings:e.activeBookings}});let n=(Array.isArray(null==t?void 0:t.active_bookings)?t.active_bookings:[]).length>0;((null==t?void 0:t.is_online)||n)&&R()}catch(e){}})(),()=>{w(),j()}),[]),(0,s.useEffect)(()=>{(async()=>{var e,a;let{isAuthenticated:t,user:n}=(0,l.P)();if(t&&(null==n||!n.hair_salon_id))try{let a=await i.R.getActiveRequest(),t=(null===(e=a.data)||void 0===e?void 0:e.data)||a.data,n=null==t?void 0:t.active_request;n&&["searching","matched","accepted"].includes(n.status)&&(d(e=>({...e,activeRequest:n,isSearching:"searching"===n.status||"matched"===n.status})),U(n.id))}catch(e){if((null==e?void 0:null===(a=e.response)||void 0===a?void 0:a.status)===401)return}})()},[]);let R=(0,s.useCallback)(()=>{w();let e=async()=>{try{var e;let a=await i.b.heartbeat(),t=(null===(e=a.data)||void 0===e?void 0:e.data)||a.data,n=Array.isArray(null==t?void 0:t.active_bookings)?t.active_bookings:[],s=k.current,l=null!==s;if(o(e=>{var a,i;let r=new Set(n.map(e=>e.request_id)),o=e.activeBookings.filter(e=>!r.has(e.request_id)).filter(e=>!S.current.has(e.request_id)).map(e=>({request_id:e.request_id,client_name:e.client_name}));return e.activeBookings.forEach(e=>{r.has(e.request_id)||S.current.delete(e.request_id)}),{...e,isOnline:l?s:null!==(a=null==t?void 0:t.is_online)&&void 0!==a?a:e.isOnline,pendingRequests:Array.isArray(null==t?void 0:t.pending_requests)?t.pending_requests:[],availableHairdressers:null!==(i=null==t?void 0:t.available_hairdressers)&&void 0!==i?i:e.availableHairdressers,activeBookings:n,...o.length>0?{recentlyCancelledBookings:o,hasPendingCancellations:!0}:{}}}),l)return;let r=(Array.isArray(null==t?void 0:t.active_bookings)?t.active_bookings:[]).length>0;(null==t?void 0:t.is_online)!==!1||r||w()}catch(e){}};e(),b.current=setInterval(e,5e3)},[]),w=()=>{b.current&&(clearInterval(b.current),b.current=null)},C=(0,s.useCallback)(async()=>{var e,a,n,s;p(!0),h(null);let l=t.isOnline,r=!l;k.current=r,o(e=>({...e,isOnline:r})),r||w();try{let t=await i.b.toggleInstantMode(),n=(null===(e=t.data)||void 0===e?void 0:e.data)||t.data,s=null!==(a=null==n?void 0:n.is_online)&&void 0!==a?a:r;return k.current=null,o(e=>{var a;return{...e,isOnline:s,pendingRequests:Array.isArray(null==n?void 0:n.pending_requests)?n.pending_requests:[],availableHairdressers:null!==(a=null==n?void 0:n.available_hairdressers)&&void 0!==a?a:e.availableHairdressers}}),s?R():w(),{success:!0,message:(null==n?void 0:n.message)||(s?"Mode instantan\xe9 activ\xe9":"Mode instantan\xe9 d\xe9sactiv\xe9")}}catch(a){k.current=null,o(e=>({...e,isOnline:l})),l?R():w();let e=(null==a?void 0:null===(s=a.response)||void 0===s?void 0:null===(n=s.data)||void 0===n?void 0:n.message)||"Erreur lors du changement de mode";return h(e),{success:!1,message:e}}finally{p(!1)}},[t.isOnline,R]),A=(0,s.useCallback)(async(e,a,t)=>{var n,s,l;p(!0),h(null);try{let s=await i.b.respondToRequest(e,a,t),l=(null===(n=s.data)||void 0===n?void 0:n.data)||s.data;return o(a=>({...a,pendingRequests:(Array.isArray(a.pendingRequests)?a.pendingRequests:[]).filter(a=>a.request_id!==e)})),{success:!0,message:(null==l?void 0:l.message)||(a?"Demande accept\xe9e !":"Demande refus\xe9e")}}catch(a){let e=(null==a?void 0:null===(l=a.response)||void 0===l?void 0:null===(s=l.data)||void 0===s?void 0:s.message)||"Erreur lors de la r\xe9ponse";return h(e),{success:!1,message:e}}finally{p(!1)}},[]),I=(0,s.useCallback)(async e=>{var a,t,n;p(!0),h(null),S.current.add(e);try{let t=await i.b.cancelRequest(e),n=(null===(a=t.data)||void 0===a?void 0:a.data)||t.data;return{success:!0,message:(null==n?void 0:n.message)||"R\xe9servation annul\xe9e (p\xe9nalit\xe9 appliqu\xe9e)"}}catch(a){let e=(null==a?void 0:null===(n=a.response)||void 0===n?void 0:null===(t=n.data)||void 0===t?void 0:t.message)||"Erreur lors de l'annulation";return h(e),{success:!1,message:e}}finally{p(!1)}},[]),P=(0,s.useRef)(0),E=(0,s.useRef)(0),H=(0,s.useCallback)(async(e,a,t)=>{let n=++P.current;try{var s;let l=await i.R.getInstantSalons(e,a,t,c);if(P.current!==n)return;let r=(null===(s=l.data)||void 0===s?void 0:s.data)||l.data,o=(null==r?void 0:r.salons)||r||[];d(e=>({...e,nearbySalonCount:o.length}))}catch(e){if(P.current!==n)return}},[c]),O=(0,s.useCallback)(async(e,a,t)=>{var n,s,l;p(!0);try{let s=await i.R.getInstantHaircuts(e,a,t,c),l=(null===(n=s.data)||void 0===n?void 0:n.data)||s.data,r=(null==l?void 0:l.haircuts)||l||[];d(e=>({...e,nearbyHaircuts:r}))}catch(e){h((null==e?void 0:null===(l=e.response)||void 0===l?void 0:null===(s=l.data)||void 0===s?void 0:s.message)||"Impossible de charger les coiffures")}finally{p(!1)}},[c]),B=(0,s.useCallback)(async(e,a,t,n,s,l,r)=>{var o,u,v,g,m,_,y;p(!0),h(null);try{let u=await i.R.createRequest(e,a,t,n,c,s,l,r),v=(null===(o=u.data)||void 0===o?void 0:o.data)||u.data,g=(null==v?void 0:v.request_id)||(null==v?void 0:v.id);return d(e=>
1({...e,isSearching:!0,activeRequest:{id:g,status:"searching",expires_at:(null==v?void 0:v.expires_at)||null,created_at:new Date().toISOString()}})),g&&U(g),{success:!0,requestId:g,message:(null==v?void 0:v.message)||"Recherche en cours...",requiresCard:!1}}catch(n){let e=(null==n?void 0:null===(v=n.response)||void 0===v?void 0:null===(u=v.data)||void 0===u?void 0:u.message)||"Impossible de cr\xe9er la demande",a=null==n?void 0:null===(m=n.response)||void 0===m?void 0:null===(g=m.data)||void 0===g?void 0:g.request_id,t=!!(null==n?void 0:null===(y=n.response)||void 0===y?void 0:null===(_=y.data)||void 0===_?void 0:_.requires_card);if(a)return d(e=>({...e,isSearching:!0})),U(a),{success:!0,requestId:a,message:"Demande existante r\xe9cup\xe9r\xe9e",requiresCard:!1};return h(e),{success:!1,message:e,requiresCard:t}}finally{p(!1)}},[c]),x=(0,s.useCallback)(async e=>{var a,t,n;p(!0),h(null);try{let t=await i.R.cancelRequest(e),n=(null===(a=t.data)||void 0===a?void 0:a.data)||t.data;return j(),d(e=>({...e,isSearching:!1,activeRequest:null})),{success:!0,message:(null==n?void 0:n.message)||"Demande annul\xe9e"}}catch(a){let e=(null==a?void 0:null===(n=a.response)||void 0===n?void 0:null===(t=n.data)||void 0===t?void 0:t.message)||"Erreur lors de l'annulation";return h(e),{success:!1,message:e}}finally{p(!1)}},[]),D=(0,s.useCallback)(async e=>{var a,t,n;p(!0),h(null);try{let t=await i.R.completeRequest(e),n=(null===(a=t.data)||void 0===a?void 0:a.data)||t.data;return j(),d(e=>({...e,isSearching:!1,activeRequest:e.activeRequest?{...e.activeRequest,status:"completed"}:null})),{success:!0,message:(null==n?void 0:n.message)||"R\xe9servation termin\xe9e"}}catch(a){let e=(null==a?void 0:null===(n=a.response)||void 0===n?void 0:null===(t=n.data)||void 0===t?void 0:t.message)||"Erreur lors de la confirmation";return h(e),{success:!1,message:e}}finally{p(!1)}},[]),N=(0,s.useCallback)(async e=>{try{return await i.R.markEnRoute(e),d(e=>({...e,activeRequest:e.activeRequest?{...e.activeRequest,client_en_route_at:new Date().toISOString()}:null})),{success:!0,message:"En route notifi\xe9"}}catch(e){var a,t;return{success:!1,message:(null==e?void 0:null===(t=e.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.message)||"Erreur"}}},[]),M=(0,s.useCallback)(async(e,a)=>{var t,n,s,l;p(!0),h(null);try{let s=await i.R.chooseSalon(e,a),l=(null===(t=s.data)||void 0===t?void 0:t.data)||s.data;try{let a=await i.R.getRequestStatus(e),t=(null===(n=a.data)||void 0===n?void 0:n.data)||a.data;d(e=>({...e,activeRequest:t,isSearching:!1}))}catch(e){d(e=>({...e,activeRequest:e.activeRequest?{...e.activeRequest,status:"accepted",matched_salon:(null==l?void 0:l.matched_salon)||e.activeRequest.matched_salon,matched_hair_dresser:(null==l?void 0:l.matched_hair_dresser)||e.activeRequest.matched_hair_dresser}:null,isSearching:!1}))}return{success:!0,message:(null==l?void 0:l.message)||"Salon choisi !"}}catch(a){let e=(null==a?void 0:null===(l=a.response)||void 0===l?void 0:null===(s=l.data)||void 0===s?void 0:s.message)||"Erreur lors du choix du salon";return h(e),{success:!1,message:e}}finally{p(!1)}},[]),F=(0,s.useCallback)(async(e,a,t,n,s)=>{var l,r,o,u,c;p(!0),h(null);try{let r=await i.R.directBookSalon(e,a,t,n,s),o=(null===(l=r.data)||void 0===l?void 0:l.data)||r.data,u=null==o?void 0:o.request_id;return d(e=>({...e,isSearching:!1,activeRequest:{id:u,status:"accepted",expires_at:null,created_at:new Date().toISOString(),mode:"salon",matched_salon:null==o?void 0:o.matched_salon,matched_hair_dresser:null==o?void 0:o.matched_hair_dresser,haircut:null==o?void 0:o.haircut,booking_id:null==o?void 0:o.booking_id,client_en_route_at:new Date().toISOString()}})),u&&U(u),{success:!0,requestId:u,message:(null==o?void 0:o.message)||"R\xe9servation confirm\xe9e !"}}catch(t){let e=(null==t?void 0:null===(o=t.response)||void 0===o?void 0:null===(r=o.data)||void 0===r?void 0:r.message)||"Impossible de r\xe9server ce salon",a=null==t?void 0:null===(c=t.response)||void 0===c?void 0:null===(u=c.data)||void 0===u?void 0:u.request_id;if(a)return{success:!1,requestId:a,message:e};return h(e),{success:!1,message:e}}finally{p(!1)}},[]),L=(0,s.useCallback)(async(e,a,t,n,s)=>{let l=++E.current;if(e||s)try{var r;let o=await i.R.getSalonsForHaircut(e,a,t,n,c,s);if(E.current!==l)return;let u=(null===(r=o.data)||void 0===r?void 0:r.data)||o.data,v=(null==u?void 0:u.salons)||[];d(e=>({...e,nearbySalons:v}))}catch(e){}},[c]),U=(0,s.useCallback)(e=>{j();let a=async()=>{try{var a;let t=await i.R.getRequestStatus(e),n=(null===(a=t.data)||void 0===a?void 0:a.data)||t.data;d(e=>{var a,t,s;return{...e,activeRequest:{...n,matched_salon:n.matched_salon||(null===(a=e.activeRequest)||void 0===a?void 0:a.matched_salon),matched_hair_dresser:n.matched_hair_dresser||(null===(t=e.activeRequest)||void 0===t?void 0:t.matched_hair_dresser),haircut:n.haircut||(null===(s=e.activeRequest)||void 0===s?void 0:s.haircut)},isSearching:"searching"===n.status||"matched"===n.status}}),["cancelled","expired","completed"].includes(n.status)&&j()}catch(e){}};a(),q.current=setInterval(a,3e3)},[]),j=()=>{q.current&&(clearInterval(q.current),q.current=null)},z=(0,s.useCallback)(e=>{U(e)},[U]),T=(0,s.useCallback)(()=>{j(),d(e=>({...e,isSearching:!1}))},[]),J=(0,s.useCallback)(()=>{j(),d(e=>({...e,activeRequest:null,isSearching:!1}))},[]),G=(0,s.useCallback)(async(e,a,t)=>{var n,s,l;p(!0);try{let s=await i.b.markEnRoute(e,a,t),l=(null===(n=s.data)||void 0===n?void 0:n.data)||s.data;return{success:!0,message:(null==l?void 0:l.message)||"En route vers le client"}}catch(e){return{success:!1,message:(null==e?void 0:null===(l=e.response)||void 0===l?void 0:null===(s=l.data)||void 0===s?void 0:s.message)||"Erreur"}}finally{p(!1)}},[]),K=(0,s.useCallback)(async(e,a,t,n)=>{try{return await i.b.updatePosition(e,a,t,n),{success:!0,message:"Position mise \xe0 jour"}}catch(e){var s,l;return{success:!1,message:(null==e?void 0:null===(l=e.response)||void 0===l?void 0:null===(s=l.data)||void 0===s?void 0:s.message)||"Erreur"}}},[]),Q=(0,s.useCallback)(async e=>{var a,t,n;p(!0);try{let t=await i.b.markArrived(e),n=(null===(a=t.data)||void 0===a?void 0:a.data)||t.data;return{success:!0,message:(null==n?void 0:n.message)||"Arriv\xe9 chez le client"}}catch(e){return{success:!1,message:(null==e?void 0:null===(n=e.response)||void 0===n?void 0:null===(t=n.data)||void 0===t?void 0:t.message)||"Erreur"}}finally{p(!1)}},[]),V=(0,s.useCallback)(async(e,a)=>{var t,n;p(!0),h(null);try{let n=await i.R.createAtHomePayment(e,a),s=(null===(t=n.data)||void 0===t?void 0:t.data)||n.data;return{success:!0,clientSecret:(null==s?void 0:s.client_secret)||(null==s?void 0:s.payment_client_secret),message:(null==s?void 0:s.message)||"Paiement cr\xe9\xe9",auto_authorized:!!(null==s?void 0:s.auto_authorized),requires_action:!!(null==s?void 0:s.requires_action),has_saved_card:!!(null==s?void 0:s.has_saved_card),amount:"number"==typeof(null==s?void 0:s.amount)?s.amount:void 0,code:"string"==typeof(null==s?void 0:s.code)?s.code:void 0,paiement_sur_place:(null==s?void 0:s.paiement_sur_place)===!0}}catch(t){let e=(null==t?void 0:null===(n=t.response)||void 0===n?void 0:n.data)||{},a=(null==e?void 0:e.message)||"Erreur de paiement";return(null==e?void 0:e.code)==="stripe_account_required"||(null==e?void 0:e.paiement_sur_place)===!0||h(a),{success:!1,message:a,code:"string"==typeof(null==e?void 0:e.code)?e.code:void 0,paiement_sur_place:(null==e?void 0:e.paiement_sur_place)===!0}}finally{p(!1)}},[]),W=(0,s.useCallback)(async e=>{var a,t,n;p(!0),h(null);try{let t=await i.R.confirmAtHomePayment(e),n=(null===(a=t.data)||void 0===a?void 0:a.data)||t.data;return{success:!0,message:(null==n?void 0:n.message)||"Paiement confirm\xe9"}}catch(a){let e=(null==a?void 0:null===(n=a.response)||void 0===n?void 0:null===(t=n.data)||void 0===t?void 0:t.message)||"Erreur de confirmation";return h(e),{success:!1,message:e}}finally{p(!1)}},[]),X=(0,s.useCallback)(async e=>{try{var a,t,n,s,l;let r=await i.R.getSalonPosition(e),o=(null===(a=r.data)||void 0===a?void 0:a.data)||r.data;if((null==o?void 0:null===(t=o.position)||void 0===t?void 0:t.lat)&&(null==o?void 0:null===(n=o.position)||void 0===n?void 0:n.long))return{lat:o.position.lat,long:o.position.long,updated_at:o.position.updated_at||new Date().toISOString(),route_distance_km:null!==(s=o.route_distance_km)&&void 0!==s?s:void 0,estimated_eta_minutes:null!==(l=o.estimated_eta_minutes)&&void 0!==l?l:void 0};if((null==o?void 0:o.lat)&&(null==o?void 0:o.long))return{lat:o.lat,long:o.long,updated_at:o.updated_at||new Date().toISOString()};return null}catch(e){return null}},[]),Y=(0,s.useCallback)(()=>{o(e=>({...e,recentlyCancelledBookings:[],hasPendingCancellations:!1}))},[]);return(0,n.jsx)(r.Provider,{value:{salon:t,toggleSalonOnline:C,respondToRequest:A,cancelSalonBooking:I,salonMarkEnRoute:G,salonUpdatePosition:K,salonMarkArrived:Q,client:u,bookingMode:c,setBookingMode:v,atHomeLocationMode:g,setAtHomeLocationMode:m,checkNearbySalons:H,fetchNearbyHaircuts:O,createInstantRequest:B,cancelClientRequest:x,completeClientRequest:D,markClientEnRoute:N,chooseSalon:M,directBookSalon:F,fetchSalonsForHaircut:L,pollRequestStatus:z,stopPolling:T,clearClientActiveRequest:J,createAtHomePayment:V,confirmAtHomePayment:W,getSalonPosition:X,clearRecentlyCancelled:Y,loading:_,error:y},children:a})},u=()=>{let e=(0,s.useContext)(r);if(!e)throw Error("useInstantBooking must be used within an InstantBookingProvider");return e}},92694:function(e,a,t){t.d(a,{C:function(){return n}});
1function n(){let e=localStorage.getItem("salon_id");if(e&&Number(e))return Number(e);try{let e=JSON.parse(localStorage.getItem("hair_salon")||"null");return(null==e?void 0:e.id)?Number(e.id):null}catch(e){return null}}}}]);
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.