PageSourceSearch

https://geo-lasertag.de/_next/static/chunks/6726.f753e9c6ef8670b4.js

js geo-lasertag.de collected 2026-10-08 12:02:12 UTC 13,111 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6726],{4345:(e,t,n)=>{n.r(t),n.d(t,{BookingPage:()=>_});var i=n(4568),r=n(9664),s=n.n(r),a=n(7620),o=n(7541),l=n(1378),c=n(1597),d=n(6701),u=n(9752),m=n(1898),x=n(5694),h=n(7804),p=n(9242),g=n(240),f=n(7378),b=n(1001);function y(e){let{playerCount:t,durationHours:n,compact:r=!1}=e,{pricePerPlayerLabel:s,totalLabel:a}=(0,b._)({playerCount:t,durationHours:n});return r?(0,i.jsxs)("div",{className:"rounded-2xl border border-white/10 bg-surface-card p-4",children:[(0,i.jsxs)("div",{className:"flex items-end justify-between gap-4",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:"Gesamtpreis"}),(0,i.jsx)("p",{className:"mt-1 font-display text-2xl font-bold text-white animate-fade-in-up",children:a},a)]}),(0,i.jsxs)("div",{className:"text-right",children:[(0,i.jsx)("p",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:"Pro Person"}),(0,i.jsx)("p",{className:"mt-1 text-sm font-semibold text-price animate-fade-in-up",children:s},s)]})]}),(0,i.jsxs)("p",{className:"mt-2 text-xs text-muted",children:[t," Spieler \xb7 ",n," Stunde(n)"]})]}):(0,i.jsxs)("div",{className:"rounded-2xl border border-white/10 bg-surface-card p-5",children:[(0,i.jsx)("p",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:"Dein Preis"}),(0,i.jsxs)("div",{className:"mt-3 flex flex-wrap items-end justify-between gap-4",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{className:"text-sm text-muted",children:"Gesamt"}),(0,i.jsx)("p",{className:"font-display text-3xl font-bold text-white animate-fade-in-up",children:a},a)]}),(0,i.jsxs)("div",{className:"text-right",children:[(0,i.jsx)("p",{className:"text-sm text-muted",children:"Pro Person"}),(0,i.jsx)("p",{className:"font-display text-2xl font-bold text-price animate-fade-in-up",children:s},s)]})]}),(0,i.jsxs)("p",{className:"mt-3 text-xs text-muted",children:[t," Spieler \xb7 ",n," Stunde(n)"]})]})}let j={1:"1 Stunde",2:"2 Stunden",3:"3 Stunden"};function v(e){let{value:t,playerCount:n,onChange:r}=e;return(0,i.jsxs)("div",{children:[(0,i.jsx)("h2",{className:"font-display text-2xl font-bold text-white",children:"Spieldauer"}),(0,i.jsx)("p",{className:"mt-2 text-sm text-muted",children:"W\xe4hle, wie lange euer Outdoor-Match dauern soll."}),(0,i.jsx)("div",{className:"mt-4 grid gap-3 sm:grid-cols-3 sm:mt-6",children:l.OZH.durationOptions.map(e=>(0,i.jsxs)("button",{type:"button",onClick:()=>r(e),className:"rounded-2xl border p-6 text-left transition-all ".concat(t===e?"border-brand-neon bg-brand-neon/15 shadow-neon":"border-white/10 bg-surface-card hover:border-brand-neon/45"),children:[(0,i.jsxs)("span",{className:"font-display text-2xl font-bold text-white",children:[e,"h"]}),(0,i.jsx)("p",{className:"mt-2 text-sm text-muted",children:j[e]})]},e))}),(0,i.jsx)("div",{className:"mt-4 sm:mt-6",children:(0,i.jsx)(y,{playerCount:n,durationHours:t,compact:!0})})]})}var C=n(9212),k=n(1091),N=n(4183),S=n(1343),w=n(7892),B=n(2135);let E=["Spieler","Dauer","Termin","Ort","Kontakt","Pr\xfcfen"];function A(){let e=(0,o.useRouter)(),t=(0,a.useRef)(null),n=(0,a.useRef)(null),{authErrorCode:r,clearAuthError:u,sendVerificationEmail:b,reloadUser:y}=(0,c.X9)(),{form:j,setForm:A,step:_,setStep:D,canProceed:H,submitValidationMessage:L,toCreateBookingPayload:P,accountUser:R,isAuthLoading:M,contactSource:K,setContactSource:U,skipEmailVerification:I}=function(){let{user:e,isLoading:t}=(0,c.X9)(),n=(0,l.Go)(e)?e:null,[i,r]=(0,a.useState)(x.s),[s,o]=(0,a.useState)(0),d=(0,a.useRef)(!1),u=(0,a.useCallback)(()=>{if(!n)return;let e=(0,l.bM9)(n);e&&r(t=>({...t,contactSource:"account",contact:e}))},[n]);(0,a.useEffect)(()=>{if(!t){if(!n){d.current=!1,r(e=>"custom"===e.contactSource?e:{...e,contactSource:"custom"});return}d.current||u()}},[n,u,t]);let m=(0,a.useCallback)(e=>{if("account"===e){d.current=!1,u();return}d.current=!0,r(e=>({...e,contactSource:"custom"}))},[u]),h=(0,a.useMemo)(()=>(0,l.k$U)(n,i.contact,i.contactSource),[n,i.contact,i.contactSource]),p=(0,a.useMemo)(()=>
1i.location?(0,l.SCC)(i.location):null,[i.location]),g=function(e){var t;if(!e.location||!e.dateKey||!e.timeSlot)return{payload:null,validationMessage:"Bitte vervollst\xe4ndige alle Pflichtfelder."};let[n,i]=e.timeSlot.split(":").map(e=>Number.parseInt(e,10)),r=(0,l.bRw)(e.dateKey,n,i),s={playerCount:e.playerCount,durationHours:e.durationHours,gameStartAt:r,location:e.location,contact:{name:e.contact.name.trim(),email:e.contact.email.trim(),phone:(null==(t=e.contact.phone)?void 0:t.trim())||void 0}},a=(0,l.a$D)(s);return a.ok?{payload:{...s,[l.qoY]:e.companyWebsite},validationMessage:null}:{payload:null,validationMessage:a.message}}(i),f=(0,a.useMemo)(()=>{switch(s){case 0:return(0,l.LL8)(i.playerCount).ok;case 1:return l.OZH.durationOptions.includes(i.durationHours);case 2:return!!(i.dateKey&&i.timeSlot);case 3:return!!(i.location&&(null==p?void 0:p.ok));case 4:if(t||(0,l.HNo)(n,i.contactSource))return!1;return(0,l.DpZ)(i.contact).ok;default:return!0}},[n,i,t,p,s]);return{form:i,setForm:r,step:s,setStep:o,canProceed:f,locationValidation:p,submitValidationMessage:g.validationMessage,toCreateBookingPayload:()=>g.payload,accountUser:n,isAuthLoading:t,contactSource:i.contactSource,setContactSource:m,skipEmailVerification:h}}(),{isSubmitting:T,error:V,requestBookingVerification:Z,setSubmitError:O}=(0,h.R)(),{acceptingBookings:z,closedMessage:F}=(0,g.M)(),{timeSlots:W,isLoading:G}=(0,p.d)({dateKey:j.dateKey,durationHours:j.durationHours,playerCount:j.playerCount}),X=(0,l.ios)({isSubmitting:T,skipEmailVerification:I});(0,a.useEffect)(()=>{(0,m.BU)()},[]),(0,a.useEffect)(()=>{2!==_||j.dateKey||A(e=>({...e,dateKey:(0,l.LyV)()}))},[j.dateKey,A,_]);let q=async()=>{if(O(null),!z)return void O(F);if((0,l.HNo)(R,K)){O("Bitte best\xe4tige zuerst deine Account-E-Mail unter Kontakt."),D(4);return}let t=P();if(!t)return void O("Die Buchung konnte nicht vorbereitet werden. Bitte pr\xfcfe alle Angaben.");(0,m.dd)();let n=await Z((0,l.G65)(t));if(n&&(0,l.RxZ)(n))return void e.push("/buchen/bestaetigung?nr=".concat(encodeURIComponent(String(n.bookingNumber))),{scroll:!1});(null==n?void 0:n.intentId)&&e.push("/buchen/email-gesendet?email=".concat(encodeURIComponent(t.contact.email)),{scroll:!1})};return(0,i.jsxs)(S.P,{enabled:_>=3,children:[(0,i.jsx)(d.Fp,{}),(0,i.jsx)("main",{className:"flex h-[100svh] flex-col overflow-hidden pt-20 lg:pt-24",children:(0,i.jsxs)("article",{className:"section-container flex min-h-0 flex-1 flex-col pb-3 sm:pb-4 lg:max-w-7xl",children:[(0,i.jsxs)("header",{className:"mb-3 grid shrink-0 gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end lg:gap-6",children:[(0,i.jsxs)("div",{className:"min-w-0",children:[(0,i.jsx)(s(),{href:"/",className:"inline-flex items-center gap-2 text-xs text-muted-foreground transition-colors hover:text-brand-sage sm:text-sm",children:"← Zur\xfcck zur Startseite"}),(0,i.jsx)("h1",{className:"mt-1 font-display text-2xl font-bold text-white sm:text-3xl",children:"Outdoor Lasertag Frankfurt buchen"})]}),(0,i.jsx)("div",{className:"flex flex-wrap gap-1.5 lg:justify-end",children:E.map((e,t)=>(0,i.jsxs)("span",{className:"rounded-full px-2.5 py-1 text-[11px] font-medium sm:px-3 sm:text-xs ".concat(t===_?"bg-brand-neon/20 text-brand-neon":t<_?"bg-white/10 text-muted-foreground":"bg-surface-card text-muted"),children:[t+1,". ",e]},e))})]}),z?null:(0,i.jsx)("div",{className:"mb-3 rounded-2xl border border-amber-400/30 bg-amber-950/30 px-4 py-3 text-sm text-amber-100",children:F}),(0,i.jsx)("div",{className:"flex min-h-0 flex-1 flex-col",children:(0,i.jsxs)("div",{className:"flex min-h-0 flex-col rounded-2xl border border-white/10 bg-surface-raised/60",children:[(0,i.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto p-4 sm:p-5 lg:p-6 ".concat(3===_?"lg:overflow-hidden":""),children:[0===_&&(0,i.jsx)(f.T,{value:j.playerCount,durationHours:j.durationHours,onChange:e=>A(t=>({...t,playerCount:e})),enableCommunityNavNudge:!0}),1===_&&(0,i.jsx)(v,{value:j.durationHours,playerCount:j.playerCount,onChange:e=>A(t=>({...t,durationHours:e,timeSlot:""}))}),2===_&&(0,i.jsx)(C.K,{dateKey:j.dateKey,timeSlot:j.timeSlot,durationHours:j.durationHours,playerCount:j.playerCount,onDateChange:e=>A(t=>({...t,dateKey:e,timeSlot:""})),onTimeChange:e=>A(t=>({...t,timeSlot:e})),timeSlots:W,isLoading:G}),3===_&&(0,i.jsx)(k._,{ref:n,value:j.location,onChange:e=>A(t=>({...t,location:e})),recentAddresses:j.recentAddresses,onRecentAddressesChange:e=>A(t=>({...t,recentAddresses:e})),locationResponsibilityAccepted:j.locationResponsibilityAccepted,onLocationResponsibilityAcceptedChange:e=>A(t=>({...t,locationResponsibilityAccepted:e}))}),4===_&&(0,i.jsx)(N.X,{value:j.contact,onChange:e=>A(t=>({...t,contact:e})),honeypot:j.companyWebsite,onHoneypotChange:e=>A(t=>({...t,companyWebsite:e})),accountUser:R,isAuthLoading:M,contactSource:K,onContactSourceChange:U,onSendVerificationEmail
1:b,onReloadUser:y,authErrorCode:r,onClearAuthError:u}),5===_&&(0,i.jsx)(w._,{ref:t,form:j,isSubmitting:T,error:V,validationWarning:L,skipEmailVerification:I,onTermsAcceptedChange:e=>A(t=>({...t,termsAccepted:e})),onHardwareLiabilityAcceptedChange:e=>A(t=>({...t,hardwareLiabilityAccepted:e})),onSubmit:q})]}),_===E.length-1&&(0,i.jsx)("div",{className:"shrink-0 border-t border-white/10 px-4 py-3 sm:px-5 lg:px-6",children:(0,i.jsx)(B.m,{})}),(0,i.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-4 border-t border-white/10 px-4 py-3 sm:px-5 lg:px-6",children:[(0,i.jsx)("button",{type:"button",disabled:0===_,onClick:()=>D(e=>Math.max(0,e-1)),className:"rounded-full border border-white/15 px-5 py-2.5 text-sm text-white disabled:opacity-40",children:"Zur\xfcck"}),_<E.length-1?(0,i.jsx)("button",{type:"button",disabled:!H,onClick:()=>{var e;(3!==_||(null==(e=n.current)?void 0:e.assertLocationResponsibilityAccepted()))&&D(e=>Math.min(E.length-1,e+1))},className:"btn-primary px-6 py-2.5 text-sm",children:"Weiter"}):(0,i.jsx)("button",{type:"button",disabled:T||!z,onClick:()=>{var e;null==(e=t.current)||e.requestSubmit()},className:"btn-primary px-6 py-2.5 text-sm sm:px-8 sm:py-3 sm:text-base ".concat(T?"opacity-60":""),children:X})]})]})})]})})]})}function _(){return(0,i.jsx)(u.Iw,{children:(0,i.jsx)(A,{})})}},7804:(e,t,n)=>{n.d(t,{R:()=>o});var i=n(7620),r=n(1378),s=n(9752);async function a(e,t,n){e(!0),t(null);try{return await n()}catch(n){return t(function(e){if(!e||"object"!=typeof e)return"Die Buchung konnte nicht gespeichert werden.";let t="code"in e&&"string"==typeof e.code?e.code:"",n="message"in e&&"string"==typeof e.message?e.message:"";return"functions/unauthenticated"===t||"unauthenticated"===t?"Sicherheitspr\xfcfung fehlgeschlagen (App Check). Lokal: NEXT_PUBLIC_FIREBASE_APP_CHECK_RECAPTCHA_SITE_KEY setzen, Seite neu laden, Debug-Token aus der Browser-Konsole in Firebase Console → App Check registrieren (oder NEXT_PUBLIC_FIREBASE_APP_CHECK_DEBUG_TOKEN setzen).":("functions/failed-precondition"===t||"failed-precondition"===t)&&n.toLowerCase().includes("app check")?"Sicherheitspr\xfcfung fehlgeschlagen (App Check). Bitte lade die Seite neu. Lokal: Debug-Token in der Firebase Console registrieren.":"functions/failed-precondition"===t||"failed-precondition"===t?n.includes(r.UBM.intentUsed)?"Diese Best\xe4tigung wurde bereits verwendet.":n.includes(r.UBM.required)?"Bitte best\xe4tige zuerst deine E-Mail-Adresse.":n.includes("SUPPLIER_UNAVAILABLE")?"Der Lieferant ist zu diesem Zeitpunkt nicht verf\xfcgbar. Bitte w\xe4hle eine andere Startzeit.":n.includes("DEVICE_CAPACITY_EXCEEDED")?"Zu diesem Zeitpunkt sind nicht genug Ger\xe4te verf\xfcgbar. Bitte w\xe4hle eine andere Startzeit oder weniger Spieler.":n.includes(r.WOr)?"Online-Buchungen sind derzeit noch nicht freigeschaltet.":"Der gew\xe4hlte Termin ist nicht mehr verf\xfcgbar. Bitte aktualisiere die Verf\xfcgbarkeit und versuche es erneut.":("functions/deadline-exceeded"===t||"deadline-exceeded"===t)&&n.includes(r.UBM.intentExpired)?"Der Best\xe4tigungslink ist abgelaufen. Bitte starte die Buchung erneut.":("functions/not-found"===t||"not-found"===t)&&n.includes(r.UBM.intentNotFound)?"Der Best\xe4tigungslink ist ung\xfcltig. Bitte starte die Buchung erneut.":"functions/invalid-argument"===t||"invalid-argument"===t?"Einige Buchungsdaten sind ung\xfcltig. Bitte pr\xfcfe alle Eingaben.":("functions/resource-exhausted"===t||"resource-exhausted"===t)&&n.includes(r.WjF.rateLimited)?"Zu viele Buchungsversuche. Bitte warte eine Stunde oder kontaktiere uns direkt.":"functions/internal"===t||"internal"===t?"Die Buchung konnte technisch nicht abgeschlossen werden. Bitte versuche es erneut oder kontaktiere uns.":n||"Die Buchung konnte nicht gespeichert werden."}(n)),e(!1),null}}function o(){let[e,t]=(0,i.useState)(!1),[n,o]=(0,i.useState)(null),l=(0,r.WIZ)((0,s.ob)());return{isSubmitting:e,error:n,requestBookingVerification:async e=>a(t,o,()=>l.requestBookingVerification(e)),completeVerifiedBooking:async e=>a(t,o,()=>l.completeVerifiedBooking(e)),setSubmitError:o}}}}]);

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.