1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9912],{29458:e=>{e.exports={overlay:"__7tDamYi",modal:"rOSLjLF",hero:"RgCOSzT",heroImage:"PmBuVP7",heroFallback:"__1vS7Nam",close:"ioeQFVf",body:"aNbm8TS",category:"_Icqcn1",name:"__4_pwnzA",description:"ojNb7pq",infoCard:"wCbwcWz",infoRow:"__32pNeFk",infoIcon:"yzUrImJ",infoLabel:"__89COLad",infoValue:"IFfKuuV",seatCard:"yo_FDL5",seatHeading:"FyljeO0",instructorCell:"__0V7GfXX",instructorCellFlow:"APJpcyP",seatGrid:"EnXgL16",seat:"vUEq9SB",seatAvailable:"_0rqbo0",seatTaken:"KVjLQoP",seatSelected:"Ffxca0n",legend:"Oh2nD3k",legendItem:"b_64Obq",legendSwatch:"Ycsrvs4",legendInstructor:"qxTe38n",seatNote:"qmBh10n",location:"fkGmdr0",remaining:"v5IPE_d",bookButton:"pzAWE0D",confirmation:"tGkkpVs",confirmationSeat:"FBLa9wz",cancelPrompt:"ah9hKH5",cancelButton:"K4XaIum",error:"gDWlnan",muted:"BQviNn0"}},37250:(e,t,a)=>{"use strict";a.d(t,{AK:()=>u,EL:()=>c,Gg:()=>g,QY:()=>f,Qd:()=>n,R6:()=>o,VU:()=>m,ay:()=>i,fU:()=>d,hQ:()=>k,lM:()=>b,nS:()=>r,xD:()=>l});let o=[{key:"ALL",labelKey:"filters.all",keywords:[]},{key:"STRENGTH",labelKey:"filters.strength",keywords:["pump","strength","weight","barbell","lift","tone"]},{key:"CYCLE",labelKey:"filters.cycle",keywords:["cycle","spin","rpm","ignite","ride"]},{key:"MIND_BODY",labelKey:"filters.mindBody",keywords:["yoga","pilates","balance","flow","stretch","mind","meditat","tai chi","barre"]},{key:"CARDIO",labelKey:"filters.cardio",keywords:["hiit","attack","combat","cardio","run","step","dance","sh bam","sprint","grit"]}],s=e=>[e.name,e.activityName,e.groupName].filter(Boolean).join(" ").toLowerCase(),n=e=>{let t=s(e);for(let e of o)if("ALL"!==e.key&&e.keywords.some(e=>t.includes(e)))return e.key;return"ALL"},l=e=>{var t,a;return Math.max(0,(null!=(t=e.classCapacity)?t:0)-(null!=(a=e.bookedCount)?a:0))},r=e=>{var t;return"full"===(null!=(t=e.status)?t:"").toLowerCase()||0>=l(e)?"full":8>=l(e)?"low":"open"},i=e=>{if(!e)return null;let t=new Date(e);return isNaN(t.getTime())?null:t},c=e=>{let t=e.getFullYear(),a="".concat(e.getMonth()+1).padStart(2,"0"),o="".concat(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(a,"-").concat(o)},d=e=>{let t=i(e);if(!t)return"";let a="".concat(t.getHours()).padStart(2,"0"),o="".concat(t.getMinutes()).padStart(2,"0");return"".concat(a,":").concat(o)},u=e=>{let t=i(e.startTime),a=i(e.endTime);if(!t||!a)return null;let o=Math.round((a.getTime()-t.getTime())/6e4);return o>0?o:null},m=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Date,a=new Map;for(let o of e){let e=i(o.startTime);if(!e||e<=t)continue;let s=c(e);if(!a.has(s)){let t=new Date(e);t.setHours(0,0,0,0),a.set(s,{key:s,date:t,classes:[]})}a.get(s).classes.push(o)}let o=Array.from(a.values()).sort((e,t)=>e.key.localeCompare(t.key));return o.forEach(e=>e.classes.sort((e,t)=>{var a,o,s,n;return(null!=(s=null==(a=i(e.startTime))?void 0:a.getTime())?s:0)-(null!=(n=null==(o=i(t.startTime))?void 0:o.getTime())?n:0)})),o},b=(e,t)=>e.filter(e=>"ALL"===t||n(e)===t),k=e=>e?e.replace(/\bvirgin active\b\s*/gi,"").trim()||e.trim():"",g=e=>!!e.hasSpots,p=e=>{let t=/^([A-Za-z]*)(\d*)$/.exec(e.trim());return{rowLabel:(null==t?void 0:t[1])||e,cellLabel:(null==t?void 0:t[2])||e}},h=e=>{var t,a;return"number"==typeof(null==(t=e.seatDetails)?void 0:t.row)&&"number"==typeof(null==(a=e.seatDetails)?void 0:a.position)},y=e=>{let t=e.map(e=>e.seatDetails.position),a=Math.min(...t),o=Math.max(...t),s=new Map;for(let t of e){var n,l;let e=t.seatDetails,o=e.row,r=s.get(o);r||(r=[],s.set(o,r)),r.push({name:e.name,available:null!=(n=t.isAvailable)&&n,column:e.position-a+1,isInstructor:null!=(l=t.isInstructorSeat)&&l})}return{rows:[...s.entries()].sort((e,t)=>{let[a]=e,[o]=t;return a-o}).map(e=>{let[,t]=e;return{cells:t.sort((e,t)=>e.column-t.column)}}),columns:o-a+1,hasInstructor:e.some(e=>e.isInstructorSeat)}},v=(e,t)=>{let a=[...e].sort((e,t)=>{var a,o,s,n;return(null!=(a=e.seatDetails.row)?a:0)-(null!=(o=t.seatDetails.row)?o:0)||(null!=(s=e.seatDetails.position)?s:0)-(null!=(n=t.seatDetails.position)?n:0)||e.seatDetails.name.localeCompare(t.seatDetails.name,void 0,{numeric:!0})}),o=[],s=new Map;for(let e of a){var n;let t=e.seatDetails.name,{rowLabel:a}=p(t),l=s.get(a);l||(l={cells:[]},s.set(a,l),o.push(l)),l.cells.push({name:t,available:null!=(n=e.isAvailable)&&n,column:l.cells.length+1,isInstructor:!1})}
1return t&&o.unshift({cells:[{name:"instructor",available:!1,column:1,isInstructor:!0}]}),{rows:o,columns:null,hasInstructor:t}},f=e=>{let t=e.filter(e=>{var t;return null==(t=e.seatDetails)?void 0:t.name}),a=t.filter(e=>!e.isInstructorSeat),o=t.some(e=>e.isInstructorSeat);return t.length>0&&t.every(h)?y(t):v(a,o)}},59985:(e,t,a)=>{"use strict";a.d(t,{W:()=>l});let o={NO_PRIVILIGE_FOR_PARTICIPATION:"bookingErrors.noPrivilege",FULL_BOOKING_RESTRICTION:"bookingErrors.noPrivilege",ONE_BOOKING_RESTRICTION:"bookingErrors.noPrivilege",TOO_EARLY_TO_BOOK:"bookingErrors.tooEarly",TOO_LATE_TO_BOOK:"bookingErrors.tooLate",MEMBERSHIP_FROZEN:"bookingErrors.membershipInactive",BOOKING_CLASH:"bookingErrors.clash",CLASS_FULL:"bookingErrors.full",ALREADY_BOOKED:"bookingErrors.alreadyBooked",TOO_MANY_OPEN_BOOKINGS:"bookingErrors.limitReached",SEAT_NOT_AVAILABLE:"bookingErrors.seatTaken",UNABLE_TO_CREATE_BOOKING:"bookingErrors.generic"},s=[{test:/Seat.*(Occupied|Taken|Unavailable|NotAvailable)|(Occupied|Taken|Unavailable).*Seat/i,key:"bookingErrors.seatTaken"},{test:/ParticipantOccupied|Overlap|Clash|Conflict|DoubleBook|SimultaneousBooking/i,key:"bookingErrors.clash"},{test:/already.?book|already.?particip|AlreadyRegistered|Duplicate/i,key:"bookingErrors.alreadyBooked"},{test:/Privilege|NotEntitled|NotAllowed|Unauthori[sz]ed|Forbidden|AccessDenied|NotPermitted/i,key:"bookingErrors.noPrivilege"},{test:/Full|NoFreeSpot|NoAvailableSpot|NoSpot|SoldOut|Capacity|Overbook|WaitList|Waitlist/i,key:"bookingErrors.full"},{test:/TooEarly|NotYetOpen|BookingNotOpen|WindowNotOpen|NotOpenYet|OpensAt/i,key:"bookingErrors.tooEarly"},{test:/TooLate|BookingClosed|RegistrationClosed|PastBooking|BookingExpired|WindowClosed/i,key:"bookingErrors.tooLate"},{test:/MaxBooking|BookingLimit|LimitReached|LimitExceeded|QuotaExceeded|TooManyBookings/i,key:"bookingErrors.limitReached"},{test:/Debt|Arrears|PaymentRequired|OutstandingBalance|Unpaid|PaymentFailed/i,key:"bookingErrors.accountDebt"},{test:/MembershipExpired|InactiveMembership|MembershipInactive|Suspended|Frozen|NotActive|Cancelled.?Membership/i,key:"bookingErrors.membershipInactive"},{test:/ClassCancelled|Cancelled|Canceled|NotFound|DoesNotExist|Removed|Unavailable/i,key:"bookingErrors.unavailable"}],n=/exception|com\.\w+\.|\bat\s+[\w.$]+\(|stack\s*trace|nullpointer|\b5\d{2}\b/i,l=(e,t)=>{let a=[null==e?void 0:e.errorCode,null==e?void 0:e.errorMessage,null==e?void 0:e.error].filter(
1Boolean).join(" ").trim();if(!a)return t("bookingErrors.generic");let l=(null==e?void 0:e.errorCode)?o[e.errorCode.toUpperCase()]:void 0;if(l)return t(l);for(let e of s)if(e.test.test(a))return t(e.key);return n.test(a)?t("bookingErrors.generic"):(null==e?void 0:e.errorMessage)||(null==e?void 0:e.error)||t("bookingErrors.generic")}},69912:(e,t,a)=>{"use strict";a.d(t,{A:()=>y});var o=a(37876),s=a(14232),n=a(54587),l=a.n(n),r=a(34846),i=a(91040),c=a(29458),d=a.n(c),u=a(32179),m=a(37250);let b=e=>{let{seats:t,selected:a,onSelect:s}=e,{t:n}=(0,r.Bd)("mylocker"),l=(0,m.QY)(t),i=null!=l.columns;return(0,o.jsxs)("div",{className:d().seatCard,"data-testid":"mylocker-seat-picker",children:[(0,o.jsxs)("span",{className:d().seatHeading,children:[(0,o.jsx)(u.x_,{size:16}),n("booking.selectYourSeat")]}),(0,o.jsx)("div",{className:d().seatGrid,style:i?{gridTemplateColumns:"repeat(".concat(l.columns,", minmax(0, 1fr))")}:void 0,children:l.rows.flatMap((e,t)=>e.cells.map(e=>{let l=i?{gridColumn:e.column,gridRow:t+1}:void 0;if(e.isInstructor)return(0,o.jsx)("span",{className:"".concat(d().instructorCell," ").concat(i?"":d().instructorCellFlow),style:null!=l?l:{gridColumn:"1 / -1"},role:"img","aria-label":n("booking.instructor"),children:(0,o.jsx)(u.nX,{size:18})},e.name);let r=a===e.name;return(0,o.jsx)("button",{type:"button",className:"".concat(d().seat," ").concat(e.available?d().seatAvailable:d().seatTaken," ").concat(r?d().seatSelected:""),disabled:!e.available,"aria-pressed":r,onClick:()=>s(e.name),style:l,"data-testid":"mylocker-seat",children:e.name},e.name)}))}),(0,o.jsxs)("div",{className:d().legend,children:[l.hasInstructor&&(0,o.jsxs)("span",{className:d().legendItem,children:[(0,o.jsx)("span",{className:"".concat(d().legendSwatch," ").concat(d().legendInstructor),children:(0,o.jsx)(u.nX,{size:10})}),n("booking.instructor")]}),(0,o.jsxs)("span",{className:d().legendItem,children:[(0,o.jsx)("span",{className:"".concat(d().legendSwatch," ").concat(d().seatAvailable)}),n("booking.available")]}),(0,o.jsxs)("span",{className:d().legendItem,children:[(0,o.jsx)("span",{className:"".concat(d().legendSwatch," ").concat(d().seatTaken)}),n("booking.taken")]}),(0,o.jsxs)("span",{className:d().legendItem,children:[(0,o.jsx)("span",{className:"".concat(d().legendSwatch," ").concat(d().seatSelected)}),n("booking.selected")]})]}),(0,o.jsx)("p",{className:d().seatNote,children:n("booking.seatPositionNote")})]})};var k=a(17958),g=a(59985);let p=e=>{if(!e)return"â";let t=new Date(e);return isNaN(t.getTime())?e:t.toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"})},h=e=>{let{icon:t,label:a,value:s,valueTestId:n}=e;return(0,o.jsxs)("div",{className:d().infoRow,children:[(0,o.jsx)("span",{className:d().infoIcon,children:t}),(0,o.jsxs)("div",{children:[(0,o.jsx)("span",{className:d().infoLabel,children:a}),(0,o.jsx)("span",{className:d().infoValue,"data-testid":n,children:s})]})]})},y=e=>{var t;let{cls:a,clubName:n,bookingsRemaining:c,isBooked:y,bookedSeatName:v,onClose:f,onBooked:N,onCancel:x,cancelling:j=!1,startInCancelConfirm:E=!1,canBook:I=!0}=e,{t:S}=(0,r.Bd)("mylocker"),C=(0,m.Gg)(a),[O,T]=(0,s.useState)(y?"success":"idle"),[w,_]=(0,s.useState)(E?"confirm":"none"),[L,A]=(0,s.useState)(null),[B,D]=(0,s.useState)(!1),[R,F]=(0,s.use
1State)(v),[M,P]=(0,s.useState)(""),[z,K]=(0,s.useState)(!1),[U,G]=(0,s.useState)(!1),Y=a.room||a.rooms||"";(0,s.useEffect)(()=>{let e=e=>"Escape"===e.key&&f();return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[f]),(0,s.useEffect)(()=>{y&&T("success")},[y]),(0,s.useEffect)(()=>{if(!C||y||"none"!==w||!Y||!a.clubId||!a.classId)return;let e=!0;return(async()=>{try{let o=await (0,k.iq)("/mylocker/seats",{clubId:a.clubId,classId:a.classId,room:Y});if(e){var t;A(null!=(t=o.seats)?t:[])}}catch(t){e&&D(!0)}})(),()=>{e=!1}},[C,y,w,Y,a.clubId,a.classId]);let V=(0,s.useMemo)(()=>{let e=(0,m.Qd)(a),t=m.R6.find(t=>t.key===e&&"ALL"!==t.key);return t?S(t.labelKey):a.groupName||""},[a,S]),q=async()=>{var e,t,o;if(I&&(!C||R)){T("booking"),P("");try{let o=await (0,k.MB)("/mylocker/book",{clubId:a.clubId,classId:a.classId,seatName:C?R:void 0}),s=null!=(e=o.booking)?e:o,n=s.participationId,l=null!=(t=s.clubId)?t:a.clubId;T("success"),N(a.classId,R,null!=n&&null!=l?{participationId:n,clubId:l}:void 0)}catch(t){let e=i.A.isAxiosError(t)?null==(o=t.response)?void 0:o.data:void 0;P((0,g.W)(e,S)),T("error")}}},Q=async()=>{if(x){if("none"===w){K(!1),_("confirm");return}if("confirm"===w){K(!1),G(!0);try{await x(),_("done")}catch(e){K(!0)}finally{G(!1)}}}},W=a.instructor||a.instructors||S("booking.instructorTbc"),H=n||Y||"",X="booking"===O||C&&!R||B,J="booking"===O?S("booking.booking"):C&&!R?S("booking.selectSeatToBook"):C&&R?S("booking.readyToBookSeat",{seat:R}):S("booking.bookThisClass"),Z="success"===O||y,$=j||U;return(0,o.jsx)("div",{className:d().overlay,onClick:f,"data-testid":"mylocker-class-modal",children:(0,o.jsxs)("div",{className:d().modal,role:"dialog","aria-modal":"true",onClick:e=>e.stopPropagation(),children:[(0,o.jsxs)("div",{className:d().hero,children:[a.image?(0,o.jsx)(l(),{src:a.image,alt:a.name||"",fill:!0,unoptimized:!0,className:d().heroImage}):(0,o.jsx)("div",{className:d().heroFallback}),(0,o.jsx)("button",{type:"button",className:d().close,onClick:f,"aria-label":S("booking.close"),"data-testid":"mylocker-modal-close",children:(0,o.jsx)(u.US,{size:18})})]}),(0,o.jsx)("div",{className:d().body,children:"done"===w?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("h2",{className:d().name,children:S("bookings.cancelSuccessTitle")}),(0,o.jsxs)("div",{className:d().confirmation,"data-testid":"mylocker-cancel-success",children:[(0,o.jsx)(u.Sr,{size:22}),(0,o.jsx)("div",{children:(0,o.jsx)("strong",{children:S("bookings.cancelSuccess",{name:a.name,date:p(a.startTime),time:(0,m.fU)(a.startTime),instructor:W,location:H})})})]}),(0,o.jsx)("button",{type:"button",className:d().bookButton,onClick:f,"data-testid":"mylocker-cancel-done",children:S("bookings.done")})]}):(0,o.jsxs)(o.Fragment,{children:[V&&(0,o.jsx)("span",{className:d().category,children:V}),(0,o.jsx)("h2",{className:d().name,children:a.name}),a.description&&(0,o.jsx)("p",{className:d().description,children:a.description}),(0,o.jsxs)("div",{className:d().infoCard,children:[(0,o.jsx)(h,{icon:(0,o.jsx)(u.O4,{size:16}),label:S("booking.time"),value:S("booking.timeRange",{start:(0,m.fU)(a.startTime),end:(0,m.fU)(a.endTime),minutes:null!=(t=(0,m.AK)(a))?t:0})}),(0,o.jsx)(h,{icon:(0,o.jsx)(u.nX,{size:16}),label:S("booking.instructor"),value:W,valueTestId:"mylocker-instructor-value"}),(0,o.jsx)(h,{icon:(0,o.jsx)(u.Rh,{size:16}),label:S("booking.studio"),value:Y||"â"}),null!=a.classCapacity&&(0,o.jsx)(h,{icon:(0,o.jsx)(u.c2,{size:16}),label:S("booking.availability"),value:S("booking.spotsAvailable",{left:(0,m.xD)(a),total:a.classCapacity})})]}),C&&!Z&&(0,o.jsxs)(o.Fragment,{children:[L&&(0,o.jsx)(b,{seats:L,selected:R,onSelect:F}),!L&&!B&&(0,o.jsx)("p",{className:d().muted,children:S("booking.loadingSeats")}),B&&(0,o.jsx)("p",{className:d().error,children:S("booking.seatsError")})]}),n&&(0,o.jsxs)("div",{className:d().location,children:[(0,o.jsx)(u.ts,{size:16}),n]}),Z?"confirm"===w?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("p",{className:d().cancelPrompt,"data-testid":"mylocker-cancel-confirm",children:S("bookings.cancelReady")}),z&&(0,o.jsx)("p",{className:d().error,children:S("bookings.cancelError")}),(0,o.jsx)("button",{type:"button",className:d().bookButton,onClick:Q,disabled:$,"data-testid":"mylocker-modal-cancel",children:$?S("bookings.cancelling"):S("bookings.cancel")})]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:d().confirmation,"data-testid":"mylocker-booking-confirmation",children:[(0,o.jsx)(u.Sr,{size:22}),(0,o.jsxs)("div",{children:[(0,o.jsx)("strong",{children:S("booking.bookedIn")}),R&&(0,o.jsx)("div",{className:d().confirmationSeat,children:S("booking.bookedSeat",{seat:R,name:a.name})})]})]}),x&&(0,o.jsx)("button",{type:"button",className:d().cancelButton,onClick:Q,disabled:$,"data-testid":"mylocker-modal-cancel",children:S("bookings.cancel")})]}):(0,o.jsxs)(o.Fragment,{children:[null!=c&&(0,o.jsxs)("div",{className:d().remaining,children:[(0,o.jsx)(u.cF,{size:16}),S("booking.bookingsRemaining",{count:c}
1)]}),"error"===O&&(0,o.jsx)("p",{className:d().error,children:M}),I&&(0,o.jsx)("button",{type:"button",className:d().bookButton,disabled:X,onClick:q,"data-testid":"mylocker-book-button",children:J})]})]})})]})})}}}]);
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.